routie dev init since i didn't adhere to any proper guidance up until now

This commit is contained in:
2026-04-29 22:27:29 -06:00
commit e1dabb71e2
15301 changed files with 3562618 additions and 0 deletions
+315
View File
@@ -0,0 +1,315 @@
import type { PropType } from 'vue';
export declare const makeVLazyProps: <Defaults extends {
class?: unknown;
style?: unknown;
tag?: unknown;
height?: unknown;
maxHeight?: unknown;
maxWidth?: unknown;
minHeight?: unknown;
minWidth?: unknown;
width?: unknown;
transition?: unknown;
modelValue?: unknown;
options?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
class: unknown extends Defaults["class"] ? PropType<any> : {
type: PropType<unknown extends Defaults["class"] ? any : any>;
default: unknown extends Defaults["class"] ? any : any;
};
style: unknown extends Defaults["style"] ? {
type: PropType<import("vue").StyleValue>;
default: null;
} : Omit<{
type: PropType<import("vue").StyleValue>;
default: null;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
};
tag: unknown extends Defaults["tag"] ? {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
} : Omit<{
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
};
height: unknown extends Defaults["height"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
};
maxHeight: unknown extends Defaults["maxHeight"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["maxHeight"] ? string | number : string | number | Defaults["maxHeight"]>;
default: unknown extends Defaults["maxHeight"] ? string | number : Defaults["maxHeight"] | NonNullable<string | number>;
};
maxWidth: unknown extends Defaults["maxWidth"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["maxWidth"] ? string | number : string | number | Defaults["maxWidth"]>;
default: unknown extends Defaults["maxWidth"] ? string | number : Defaults["maxWidth"] | NonNullable<string | number>;
};
minHeight: unknown extends Defaults["minHeight"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["minHeight"] ? string | number : string | number | Defaults["minHeight"]>;
default: unknown extends Defaults["minHeight"] ? string | number : Defaults["minHeight"] | NonNullable<string | number>;
};
minWidth: unknown extends Defaults["minWidth"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["minWidth"] ? string | number : string | number | Defaults["minWidth"]>;
default: unknown extends Defaults["minWidth"] ? string | number : Defaults["minWidth"] | NonNullable<string | number>;
};
width: unknown extends Defaults["width"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["width"] ? string | number : string | number | Defaults["width"]>;
default: unknown extends Defaults["width"] ? string | number : Defaults["width"] | NonNullable<string | number>;
};
transition: unknown extends Defaults["transition"] ? {
type: PropType<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
default: NonNullable<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
} : Omit<{
type: PropType<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
default: NonNullable<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["transition"] ? string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null : string | boolean | Defaults["transition"] | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
default: unknown extends Defaults["transition"] ? string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null : Defaults["transition"] | NonNullable<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
};
modelValue: unknown extends Defaults["modelValue"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["modelValue"] ? boolean : boolean | Defaults["modelValue"]>;
default: unknown extends Defaults["modelValue"] ? boolean : boolean | Defaults["modelValue"];
};
options: unknown extends Defaults["options"] ? {
type: PropType<IntersectionObserverInit>;
default: () => {
root: undefined;
rootMargin: undefined;
threshold: undefined;
};
} : Omit<{
type: PropType<IntersectionObserverInit>;
default: () => {
root: undefined;
rootMargin: undefined;
threshold: undefined;
};
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["options"] ? IntersectionObserverInit : IntersectionObserverInit | Defaults["options"]>;
default: unknown extends Defaults["options"] ? IntersectionObserverInit : IntersectionObserverInit | Defaults["options"];
};
};
export declare const VLazy: {
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tag: string | import("../../util/index.js").JSXComponent;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
modelValue: boolean;
options: IntersectionObserverInit;
} & {
class?: any;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
} & {
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
'update:modelValue': (value: boolean) => true;
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
style: import("vue").StyleValue;
tag: string | import("../../util/index.js").JSXComponent;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
modelValue: boolean;
options: IntersectionObserverInit;
}, true, {}, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tag: string | import("../../util/index.js").JSXComponent;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
modelValue: boolean;
options: IntersectionObserverInit;
} & {
class?: any;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
} & {
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
}, {}, {}, {}, {}, {
style: import("vue").StyleValue;
tag: string | import("../../util/index.js").JSXComponent;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
modelValue: boolean;
options: IntersectionObserverInit;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tag: string | import("../../util/index.js").JSXComponent;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
modelValue: boolean;
options: IntersectionObserverInit;
} & {
class?: any;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
} & {
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
'update:modelValue': (value: boolean) => true;
}, string, {
style: import("vue").StyleValue;
tag: string | import("../../util/index.js").JSXComponent;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
modelValue: boolean;
options: IntersectionObserverInit;
}, {}, string, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
class: PropType<import("../../composables/component.js").ClassValue>;
style: {
type: PropType<import("vue").StyleValue>;
default: null;
};
tag: {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
};
height: (NumberConstructor | StringConstructor)[];
maxHeight: (NumberConstructor | StringConstructor)[];
maxWidth: (NumberConstructor | StringConstructor)[];
minHeight: (NumberConstructor | StringConstructor)[];
minWidth: (NumberConstructor | StringConstructor)[];
width: (NumberConstructor | StringConstructor)[];
transition: {
type: PropType<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
default: NonNullable<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
};
modelValue: BooleanConstructor;
options: {
type: PropType<IntersectionObserverInit>;
default: () => {
root: undefined;
rootMargin: undefined;
threshold: undefined;
};
};
}, import("vue").ExtractPropTypes<{
class: PropType<import("../../composables/component.js").ClassValue>;
style: {
type: PropType<import("vue").StyleValue>;
default: null;
};
tag: {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
};
height: (NumberConstructor | StringConstructor)[];
maxHeight: (NumberConstructor | StringConstructor)[];
maxWidth: (NumberConstructor | StringConstructor)[];
minHeight: (NumberConstructor | StringConstructor)[];
minWidth: (NumberConstructor | StringConstructor)[];
width: (NumberConstructor | StringConstructor)[];
transition: {
type: PropType<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
default: NonNullable<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
};
modelValue: BooleanConstructor;
options: {
type: PropType<IntersectionObserverInit>;
default: () => {
root: undefined;
rootMargin: undefined;
threshold: undefined;
};
};
}>>;
export type VLazy = InstanceType<typeof VLazy>;
+66
View File
@@ -0,0 +1,66 @@
import { createVNode as _createVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withDirectives as _withDirectives } from "vue";
// Composables
import { makeComponentProps } from "../../composables/component.js";
import { makeDimensionProps, useDimension } from "../../composables/dimensions.js";
import { useProxiedModel } from "../../composables/proxiedModel.js";
import { makeTagProps } from "../../composables/tag.js";
import { makeTransitionProps, MaybeTransition } from "../../composables/transition.js"; // Directives
import vIntersect from "../../directives/intersect/index.js"; // Utilities
import { genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
export const makeVLazyProps = propsFactory({
modelValue: Boolean,
options: {
type: Object,
// For more information on types, navigate to:
// https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API
default: () => ({
root: undefined,
rootMargin: undefined,
threshold: undefined
})
},
...makeComponentProps(),
...makeDimensionProps(),
...makeTagProps(),
...makeTransitionProps({
transition: 'fade-transition'
})
}, 'VLazy');
export const VLazy = genericComponent()({
name: 'VLazy',
directives: {
vIntersect
},
props: makeVLazyProps(),
emits: {
'update:modelValue': value => true
},
setup(props, {
slots
}) {
const {
dimensionStyles
} = useDimension(props);
const isActive = useProxiedModel(props, 'modelValue');
function onIntersect(isIntersecting) {
if (isActive.value) return;
isActive.value = isIntersecting;
}
useRender(() => _withDirectives(_createVNode(props.tag, {
"class": _normalizeClass(['v-lazy', props.class]),
"style": _normalizeStyle([dimensionStyles.value, props.style])
}, {
default: () => [isActive.value && _createVNode(MaybeTransition, {
"transition": props.transition,
"appear": true
}, {
default: () => [slots.default?.()]
})]
}), [[vIntersect, {
handler: onIntersect,
options: props.options
}, null]]));
return {};
}
});
//# sourceMappingURL=VLazy.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"VLazy.js","names":["makeComponentProps","makeDimensionProps","useDimension","useProxiedModel","makeTagProps","makeTransitionProps","MaybeTransition","vIntersect","genericComponent","propsFactory","useRender","makeVLazyProps","modelValue","Boolean","options","type","Object","default","root","undefined","rootMargin","threshold","transition","VLazy","name","directives","props","emits","value","setup","slots","dimensionStyles","isActive","onIntersect","isIntersecting","_withDirectives","_createVNode","tag","_normalizeClass","class","_normalizeStyle","style","handler"],"sources":["../../../src/components/VLazy/VLazy.tsx"],"sourcesContent":["// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport vIntersect from '@/directives/intersect'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVLazyProps = propsFactory({\n modelValue: Boolean,\n options: {\n type: Object as PropType<IntersectionObserverInit>,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps(),\n ...makeTransitionProps({ transition: 'fade-transition' }),\n}, 'VLazy')\n\nexport const VLazy = genericComponent()({\n name: 'VLazy',\n\n directives: { vIntersect },\n\n props: makeVLazyProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n\n const isActive = useProxiedModel(props, 'modelValue')\n\n function onIntersect (isIntersecting: boolean) {\n if (isActive.value) return\n\n isActive.value = isIntersecting\n }\n\n useRender(() => (\n <props.tag\n class={[\n 'v-lazy',\n props.class,\n ]}\n v-intersect={[\n {\n handler: onIntersect,\n options: props.options,\n },\n null,\n isActive.value ? [] : ['once'],\n ]}\n style={[\n dimensionStyles.value,\n props.style,\n ]}\n >\n { isActive.value && (\n <MaybeTransition transition={ props.transition } appear>\n { slots.default?.() }\n </MaybeTransition>\n )}\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VLazy = InstanceType<typeof VLazy>\n"],"mappings":";AAAA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,eAAe;AAAA,SACfC,YAAY;AAAA,SACZC,mBAAmB,EAAEC,eAAe,2CAE7C;AAAA,OACOC,UAAU,6CAEjB;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,+BAElD;AAGA,OAAO,MAAMC,cAAc,GAAGF,YAAY,CAAC;EACzCG,UAAU,EAAEC,OAAO;EACnBC,OAAO,EAAE;IACPC,IAAI,EAAEC,MAA4C;IAClD;IACA;IACAC,OAAO,EAAEA,CAAA,MAAO;MACdC,IAAI,EAAEC,SAAS;MACfC,UAAU,EAAED,SAAS;MACrBE,SAAS,EAAEF;IACb,CAAC;EACH,CAAC;EAED,GAAGnB,kBAAkB,CAAC,CAAC;EACvB,GAAGC,kBAAkB,CAAC,CAAC;EACvB,GAAGG,YAAY,CAAC,CAAC;EACjB,GAAGC,mBAAmB,CAAC;IAAEiB,UAAU,EAAE;EAAkB,CAAC;AAC1D,CAAC,EAAE,OAAO,CAAC;AAEX,OAAO,MAAMC,KAAK,GAAGf,gBAAgB,CAAC,CAAC,CAAC;EACtCgB,IAAI,EAAE,OAAO;EAEbC,UAAU,EAAE;IAAElB;EAAW,CAAC;EAE1BmB,KAAK,EAAEf,cAAc,CAAC,CAAC;EAEvBgB,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAc,IAAK;EAC3C,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAE;IAAEI;EAAM,CAAC,EAAE;IACvB,MAAM;MAAEC;IAAgB,CAAC,GAAG7B,YAAY,CAACwB,KAAK,CAAC;IAE/C,MAAMM,QAAQ,GAAG7B,eAAe,CAACuB,KAAK,EAAE,YAAY,CAAC;IAErD,SAASO,WAAWA,CAAEC,cAAuB,EAAE;MAC7C,IAAIF,QAAQ,CAACJ,KAAK,EAAE;MAEpBI,QAAQ,CAACJ,KAAK,GAAGM,cAAc;IACjC;IAEAxB,SAAS,CAAC,MAAAyB,eAAA,CAAAC,YAAA,CAAAV,KAAA,CAAAW,GAAA;MAAA,SAAAC,eAAA,CAEC,CACL,QAAQ,EACRZ,KAAK,CAACa,KAAK,CACZ;MAAA,SAAAC,eAAA,CASM,CACLT,eAAe,CAACH,KAAK,EACrBF,KAAK,CAACe,KAAK,CACZ;IAAA;MAAAxB,OAAA,EAAAA,CAAA,MAECe,QAAQ,CAACJ,KAAK,IAAAQ,YAAA,CAAA9B,eAAA;QAAA,cACgBoB,KAAK,CAACJ,UAAU;QAAA;MAAA;QAAAL,OAAA,EAAAA,CAAA,MAC1Ca,KAAK,CAACb,OAAO,GAAG,CAAC;MAAA,EAEtB;IAAA,MAAAV,UAAA,EAhBC;MACEmC,OAAO,EAAET,WAAW;MACpBnB,OAAO,EAAEY,KAAK,CAACZ;IACjB,CAAC,EACD,IAAI,GAcT,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
+1
View File
@@ -0,0 +1 @@
export { VLazy } from './VLazy.js';
+2
View File
@@ -0,0 +1,2 @@
export { VLazy } from "./VLazy.js";
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["VLazy"],"sources":["../../../src/components/VLazy/index.ts"],"sourcesContent":["export { VLazy } from './VLazy'\n"],"mappings":"SAASA,KAAK","ignoreList":[]}