@vunk/plus 1.14.0 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/components/bubble-list/index.cjs +1 -1
  2. package/components/bubble-list/index.mjs +265 -133
  3. package/components/bubble-list/src/core/index.vue.d.ts +45 -14
  4. package/components/bubble-list/src/ctx.d.ts +4 -0
  5. package/components/bubble-list/src/index.vue.d.ts +23 -10
  6. package/components/components.css +1 -1
  7. package/components/drawer/src/ctx.d.ts +1 -1
  8. package/components/drawer/src/index.vue.d.ts +7 -7
  9. package/components/file-viewer/index.cjs +1 -0
  10. package/components/file-viewer/index.d.ts +4 -0
  11. package/components/file-viewer/index.mjs +130 -0
  12. package/components/file-viewer/src/ctx.d.ts +69 -0
  13. package/components/file-viewer/src/index.vue.d.ts +108 -0
  14. package/components/file-viewer/src/types.d.ts +3 -0
  15. package/components/pixi-frame/src/apng.vue.d.ts +2 -2
  16. package/components/pixi-frame/src/bitmap-generator.vue.d.ts +18 -18
  17. package/components/pixi-frame/src/bitmap.vue.d.ts +18 -18
  18. package/components/pixi-frame/src/buffer-image.vue.d.ts +18 -18
  19. package/components/pixi-frame/src/core.vue.d.ts +2 -2
  20. package/components/pixi-frame/src/index.vue.d.ts +44 -44
  21. package/components/pixi-frame/src/video.vue.d.ts +2 -2
  22. package/components/recorder-button/src/index.vue.d.ts +2 -2
  23. package/components/scrollbar/src/index.vue.d.ts +2 -2
  24. package/components/speech-button/src/index.vue.d.ts +1 -1
  25. package/components/table-columns/src/ctx.d.ts +2 -2
  26. package/components/table-columns/src/el-ctx.d.ts +3 -3
  27. package/components/table-columns/src/index.vue.d.ts +4 -4
  28. package/components/tables-v1/src/ctx.d.ts +11 -11
  29. package/components/tables-v1/src/el-ctx.d.ts +7 -7
  30. package/components/tables-v1/src/index.vue.d.ts +12 -12
  31. package/components/tables-v1-checkbox/src/ctx.d.ts +9 -9
  32. package/components/tables-v1-checkbox/src/index.vue.d.ts +44 -44
  33. package/components/text/src/ctx.d.ts +1 -1
  34. package/components/text/src/index.vue.d.ts +6 -6
  35. package/components/thinking/src/index.vue.d.ts +2 -2
  36. package/components/vditor/src/ctx.d.ts +1 -1
  37. package/components/vditor/src/index.vue.d.ts +1 -1
  38. package/index.css +3 -1
  39. package/package.json +11 -1
  40. package/vue-virtual-scroller/index.cjs +1 -0
  41. package/vue-virtual-scroller/index.d.ts +4 -0
  42. package/vue-virtual-scroller/index.mjs +2708 -0
  43. package/vue-virtual-scroller/src/components/DynamicScroller.vue.d.ts +52 -0
  44. package/vue-virtual-scroller/src/components/DynamicScrollerItem.vue.d.ts +36 -0
  45. package/vue-virtual-scroller/src/components/ItemView.vue.d.ts +24 -0
  46. package/vue-virtual-scroller/src/components/RecycleScroller.vue.d.ts +65 -0
  47. package/vue-virtual-scroller/src/components/ResizeObserver.vue.d.ts +7 -0
  48. package/vue-virtual-scroller/src/components/WindowScroller.vue.d.ts +54 -0
  49. package/vue-virtual-scroller/src/composables/dynamicScrollerMeasureQueue.d.ts +19 -0
  50. package/vue-virtual-scroller/src/composables/dynamicScrollerMeasurement.d.ts +41 -0
  51. package/vue-virtual-scroller/src/composables/scrollerOptions.d.ts +66 -0
  52. package/vue-virtual-scroller/src/composables/useDynamicScroller.d.ts +109 -0
  53. package/vue-virtual-scroller/src/composables/useDynamicScrollerItem.d.ts +21 -0
  54. package/vue-virtual-scroller/src/composables/useIdState.d.ts +7 -0
  55. package/vue-virtual-scroller/src/composables/useRecycleScroller.d.ts +65 -0
  56. package/vue-virtual-scroller/src/composables/useTableColumnWidths.d.ts +28 -0
  57. package/vue-virtual-scroller/src/composables/useWindowScroller.d.ts +17 -0
  58. package/vue-virtual-scroller/src/config.d.ts +7 -0
  59. package/vue-virtual-scroller/src/directives/observeVisibility.d.ts +8 -0
  60. package/vue-virtual-scroller/src/engine/cache.d.ts +8 -0
  61. package/vue-virtual-scroller/src/engine/keyField.d.ts +13 -0
  62. package/vue-virtual-scroller/src/engine/scroll.d.ts +14 -0
  63. package/vue-virtual-scroller/src/index.d.ts +25 -0
  64. package/vue-virtual-scroller/src/scrollparent.d.ts +27 -0
  65. package/vue-virtual-scroller/src/typecheck/generic-components.typecheck.vue.d.ts +3 -0
  66. package/vue-virtual-scroller/src/typecheck/generic-composables.typecheck.d.ts +1 -0
  67. package/vue-virtual-scroller/src/types.d.ts +139 -0
  68. package/vue-virtual-scroller/src/utils/eventEmitter.d.ts +21 -0
  69. package/vue-virtual-scroller/src/utils/itemSize.d.ts +13 -0
  70. package/vue-virtual-scroller/src/utils/viewStyle.d.ts +29 -0
  71. package/vue-virtual-scroller/src/utils.d.ts +1 -0
  72. package/vue-virtual-scroller/vue-virtual-scroller.css +1 -0
@@ -0,0 +1,52 @@
1
+ import type { CacheSnapshot, DynamicScrollerExposed, DynamicScrollerSlotProps, KeyFieldValue, KeyValue, ScrollDirection } from '../types';
2
+ declare const __VLS_export: <TItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<{
4
+ items: TItem[];
5
+ keyField?: KeyFieldValue<any>;
6
+ direction?: ScrollDirection;
7
+ listTag?: string;
8
+ itemTag?: string;
9
+ minItemSize: number | string;
10
+ shift?: boolean;
11
+ cache?: CacheSnapshot;
12
+ disableTransform?: boolean;
13
+ flowMode?: boolean;
14
+ hiddenPosition?: number;
15
+ enabled?: boolean;
16
+ /**
17
+ * Mirror of `RecycleScroller`'s `pageMode`: render against an outer scroll
18
+ * parent (page or ancestor) instead of giving the scroller its own
19
+ * scrollable box.
20
+ */
21
+ pageMode?: boolean;
22
+ /**
23
+ * Override the auto-detected scroll-parent used when `pageMode` is on.
24
+ * Accepts an HTMLElement or `Window`. When omitted, the closest scrollable
25
+ * ancestor is used. See issue #928.
26
+ */
27
+ scrollParent?: HTMLElement | Window;
28
+ } & {
29
+ onVisible?: (() => any) | undefined;
30
+ onResize?: (() => any) | undefined;
31
+ }> & (typeof globalThis extends {
32
+ __VLS_PROPS_FALLBACK: infer P;
33
+ } ? P : {});
34
+ expose: (exposed: import("vue").ShallowUnwrapRef<DynamicScrollerExposed<TItem>>) => void;
35
+ attrs: any;
36
+ slots: {
37
+ default?: (props: DynamicScrollerSlotProps<TItem, KeyValue>) => unknown;
38
+ before?: () => unknown;
39
+ after?: () => unknown;
40
+ empty?: () => unknown;
41
+ };
42
+ emit: ((evt: "visible") => void) & ((evt: "resize") => void);
43
+ }>) => import("vue").VNode & {
44
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
45
+ };
46
+ declare const _default: typeof __VLS_export;
47
+ export default _default;
48
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
49
+ [K in keyof T]: T[K];
50
+ } : {
51
+ [K in keyof T as K]: T[K];
52
+ }) & {};
@@ -0,0 +1,36 @@
1
+ import type { KeyValue } from '../types';
2
+ declare const __VLS_export: <TItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<{
4
+ item: TItem;
5
+ watchData?: boolean;
6
+ active: boolean;
7
+ index?: number;
8
+ /**
9
+ * @deprecated `sizeDependencies` is a legacy fallback for environments without
10
+ * `ResizeObserver` and will be removed in the next major release.
11
+ */
12
+ sizeDependencies?: Record<string, unknown> | unknown[] | null;
13
+ emitResize?: boolean;
14
+ enabled?: boolean;
15
+ tag?: string;
16
+ } & {
17
+ onResize?: ((id: KeyValue) => any) | undefined;
18
+ }> & (typeof globalThis extends {
19
+ __VLS_PROPS_FALLBACK: infer P;
20
+ } ? P : {});
21
+ expose: (exposed: {}) => void;
22
+ attrs: any;
23
+ slots: {
24
+ default?: () => unknown;
25
+ };
26
+ emit: (evt: "resize", id: KeyValue) => void;
27
+ }>) => import("vue").VNode & {
28
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
29
+ };
30
+ declare const _default: typeof __VLS_export;
31
+ export default _default;
32
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
33
+ [K in keyof T]: T[K];
34
+ } : {
35
+ [K in keyof T as K]: T[K];
36
+ }) & {};
@@ -0,0 +1,24 @@
1
+ import type { RecycleScrollerSlotProps, View } from '../types';
2
+ declare const __VLS_export: <TItem, TKey>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<{
4
+ view: View<TItem, TKey>;
5
+ itemTag: string;
6
+ }> & (typeof globalThis extends {
7
+ __VLS_PROPS_FALLBACK: infer P;
8
+ } ? P : {});
9
+ expose: (exposed: {}) => void;
10
+ attrs: any;
11
+ slots: {
12
+ default?: (props: RecycleScrollerSlotProps<TItem>) => unknown;
13
+ };
14
+ emit: {};
15
+ }>) => import("vue").VNode & {
16
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
17
+ };
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
20
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
21
+ [K in keyof T]: T[K];
22
+ } : {
23
+ [K in keyof T as K]: T[K];
24
+ }) & {};
@@ -0,0 +1,65 @@
1
+ import type { CacheSnapshot, ClassValue, ItemSizeValue, KeyFieldValue, KeyValue, RecycleScrollerExposed, RecycleScrollerSlotProps, ScrollDirection } from '../types';
2
+ declare const __VLS_export: <TItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<{
4
+ items: TItem[];
5
+ keyField?: KeyFieldValue<any>;
6
+ direction?: ScrollDirection;
7
+ listTag?: string;
8
+ itemTag?: string;
9
+ itemSize?: ItemSizeValue<TItem>;
10
+ gridItems?: number;
11
+ itemSecondarySize?: number;
12
+ minItemSize?: number | string | null;
13
+ sizeField?: string;
14
+ typeField?: string;
15
+ buffer?: number;
16
+ pageMode?: boolean;
17
+ /**
18
+ * Override the auto-detected scroll-parent used when `pageMode` is on.
19
+ * Accepts an HTMLElement (typically an `overflow:auto` ancestor) or
20
+ * `Window`. When omitted, the scroller walks the DOM for the nearest
21
+ * scrollable ancestor. See issue #928.
22
+ */
23
+ scrollParent?: HTMLElement | Window;
24
+ shift?: boolean;
25
+ cache?: CacheSnapshot;
26
+ prerender?: number;
27
+ emitUpdate?: boolean;
28
+ disableTransform?: boolean;
29
+ flowMode?: boolean;
30
+ hiddenPosition?: number;
31
+ updateInterval?: number;
32
+ itemsLimit?: number;
33
+ skipHover?: boolean;
34
+ enabled?: boolean;
35
+ listClass?: ClassValue;
36
+ itemClass?: ClassValue;
37
+ } & {
38
+ onVisible?: (() => any) | undefined;
39
+ onHidden?: (() => any) | undefined;
40
+ onResize?: (() => any) | undefined;
41
+ onUpdate?: ((startIndex: number, endIndex: number, visibleStartIndex: number, visibleEndIndex: number) => any) | undefined;
42
+ onScrollStart?: (() => any) | undefined;
43
+ onScrollEnd?: (() => any) | undefined;
44
+ }> & (typeof globalThis extends {
45
+ __VLS_PROPS_FALLBACK: infer P;
46
+ } ? P : {});
47
+ expose: (exposed: import("vue").ShallowUnwrapRef<RecycleScrollerExposed<TItem, KeyValue>>) => void;
48
+ attrs: any;
49
+ slots: {
50
+ default?: (props: RecycleScrollerSlotProps<TItem>) => unknown;
51
+ before?: () => unknown;
52
+ after?: () => unknown;
53
+ empty?: () => unknown;
54
+ };
55
+ emit: ((evt: "visible") => void) & ((evt: "hidden") => void) & ((evt: "resize") => void) & ((evt: "update", startIndex: number, endIndex: number, visibleStartIndex: number, visibleEndIndex: number) => void) & ((evt: "scrollStart") => void) & ((evt: "scrollEnd") => void);
56
+ }>) => import("vue").VNode & {
57
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
58
+ };
59
+ declare const _default: typeof __VLS_export;
60
+ export default _default;
61
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
62
+ [K in keyof T]: T[K];
63
+ } : {
64
+ [K in keyof T as K]: T[K];
65
+ }) & {};
@@ -0,0 +1,7 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
2
+ notify: () => any;
3
+ }, string, import("vue").PublicProps, Readonly<{}> & Readonly<{
4
+ onNotify?: (() => any) | undefined;
5
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
6
+ declare const _default: typeof __VLS_export;
7
+ export default _default;
@@ -0,0 +1,54 @@
1
+ import type { CacheSnapshot, ClassValue, ItemSizeValue, KeyFieldValue, KeyValue, RecycleScrollerSlotProps, ScrollDirection, WindowScrollerExposed } from '../types';
2
+ declare const __VLS_export: <TItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<{
4
+ items: TItem[];
5
+ keyField?: KeyFieldValue<any>;
6
+ direction?: ScrollDirection;
7
+ listTag?: string;
8
+ itemTag?: string;
9
+ itemSize?: ItemSizeValue<TItem>;
10
+ gridItems?: number;
11
+ itemSecondarySize?: number;
12
+ minItemSize?: number | string | null;
13
+ sizeField?: string;
14
+ typeField?: string;
15
+ buffer?: number;
16
+ shift?: boolean;
17
+ cache?: CacheSnapshot;
18
+ prerender?: number;
19
+ emitUpdate?: boolean;
20
+ disableTransform?: boolean;
21
+ flowMode?: boolean;
22
+ hiddenPosition?: number;
23
+ updateInterval?: number;
24
+ itemsLimit?: number;
25
+ enabled?: boolean;
26
+ listClass?: ClassValue;
27
+ itemClass?: ClassValue;
28
+ } & {
29
+ onVisible?: (() => any) | undefined;
30
+ onHidden?: (() => any) | undefined;
31
+ onResize?: (() => any) | undefined;
32
+ onUpdate?: ((startIndex: number, endIndex: number, visibleStartIndex: number, visibleEndIndex: number) => any) | undefined;
33
+ }> & (typeof globalThis extends {
34
+ __VLS_PROPS_FALLBACK: infer P;
35
+ } ? P : {});
36
+ expose: (exposed: import("vue").ShallowUnwrapRef<WindowScrollerExposed<TItem, KeyValue>>) => void;
37
+ attrs: any;
38
+ slots: {
39
+ default?: (props: RecycleScrollerSlotProps<TItem>) => unknown;
40
+ before?: () => unknown;
41
+ after?: () => unknown;
42
+ empty?: () => unknown;
43
+ };
44
+ emit: ((evt: "visible") => void) & ((evt: "hidden") => void) & ((evt: "resize") => void) & ((evt: "update", startIndex: number, endIndex: number, visibleStartIndex: number, visibleEndIndex: number) => void);
45
+ }>) => import("vue").VNode & {
46
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
47
+ };
48
+ declare const _default: typeof __VLS_export;
49
+ export default _default;
50
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
51
+ [K in keyof T]: T[K];
52
+ } : {
53
+ [K in keyof T as K]: T[K];
54
+ }) & {};
@@ -0,0 +1,19 @@
1
+ import type { KeyValue } from '../types';
2
+ export interface DynamicScrollerMeasureTask {
3
+ read: () => unknown;
4
+ write: (value: unknown) => void;
5
+ done: () => void;
6
+ }
7
+ export interface DynamicScrollerMeasureQueue {
8
+ schedule: (id: KeyValue, task: DynamicScrollerMeasureTask) => void;
9
+ cancel: (id: KeyValue) => void;
10
+ }
11
+ export interface DynamicScrollerMeasureQueueOptions {
12
+ queueFlush?: (flush: () => void) => void;
13
+ overflowQueueFlush?: (flush: () => void) => void;
14
+ maxTasksPerFlush?: number;
15
+ }
16
+ /**
17
+ * Batch DOM reads so dynamic measurements do not interleave read/write work per row.
18
+ */
19
+ export declare function createDynamicScrollerMeasureQueue(options?: DynamicScrollerMeasureQueueOptions): DynamicScrollerMeasureQueue;
@@ -0,0 +1,41 @@
1
+ import type { ComputedRef, MaybeRefOrGetter } from 'vue';
2
+ import type { KeyValue, ScrollDirection, VScrollData } from '../types';
3
+ import type { DynamicScrollerMeasureQueue } from './dynamicScrollerMeasureQueue';
4
+ export interface DynamicScrollerUpdatePayload {
5
+ force: boolean;
6
+ }
7
+ export interface DynamicScrollerMeasurementContext {
8
+ vscrollData: VScrollData;
9
+ resizeObserver: ResizeObserver | undefined;
10
+ measureQueue: DynamicScrollerMeasureQueue;
11
+ direction: ComputedRef<ScrollDirection>;
12
+ undefinedMap: Record<string | number, boolean | undefined>;
13
+ undefinedSizeCount: {
14
+ value: number;
15
+ };
16
+ onVscrollUpdate: (callback: (payload: DynamicScrollerUpdatePayload) => void) => () => void;
17
+ }
18
+ export interface DynamicScrollerItemControllerOptions<TItem = unknown> {
19
+ item: TItem;
20
+ watchData: boolean;
21
+ active: boolean;
22
+ index?: number;
23
+ /**
24
+ * @deprecated `sizeDependencies` is a legacy fallback for environments without
25
+ * `ResizeObserver` and will be removed in the next major release.
26
+ */
27
+ sizeDependencies?: Record<string, unknown> | unknown[] | null;
28
+ emitResize: boolean;
29
+ }
30
+ export interface DynamicScrollerItemControllerCallbacks {
31
+ onResize?: (id: KeyValue) => void;
32
+ }
33
+ export interface DynamicScrollerItemController {
34
+ id: ComputedRef<KeyValue>;
35
+ size: ComputedRef<number>;
36
+ finalActive: ComputedRef<boolean>;
37
+ updateSize: () => void;
38
+ mount: () => void;
39
+ unmount: () => void;
40
+ }
41
+ export declare function createDynamicScrollerItemController(options: MaybeRefOrGetter<DynamicScrollerItemControllerOptions<any>>, el: MaybeRefOrGetter<HTMLElement | undefined>, context: DynamicScrollerMeasurementContext, callbacks?: MaybeRefOrGetter<DynamicScrollerItemControllerCallbacks | undefined>): DynamicScrollerItemController;
@@ -0,0 +1,66 @@
1
+ import type { ComputedRef, MaybeRefOrGetter } from 'vue';
2
+ /**
3
+ * Shared lifecycle callbacks exposed by headless scroller composables.
4
+ */
5
+ export interface ScrollerCallbacks {
6
+ onResize?: () => void;
7
+ onVisible?: () => void;
8
+ onHidden?: () => void;
9
+ onUpdate?: (startIndex: number, endIndex: number, visibleStartIndex: number, visibleEndIndex: number) => void;
10
+ }
11
+ /**
12
+ * Shared activation flag for headless scroller composables.
13
+ */
14
+ export interface ScrollerOptionEnabled {
15
+ /**
16
+ * When `false`, the composable mounts in a passive state: no watchers,
17
+ * observers, scroll/resize listeners, RAFs, or timers are attached, and
18
+ * exported reactive sources stay at their inert defaults. Toggling back
19
+ * to `true` re-arms the scroller without remounting the consumer.
20
+ *
21
+ * Useful for call sites that want a stable composable invocation but
22
+ * conditionally render virtualized output (e.g. an opt-in `virtualize`
23
+ * prop on a wrapping component).
24
+ *
25
+ * @default true
26
+ */
27
+ enabled?: MaybeRefOrGetter<boolean>;
28
+ }
29
+ /**
30
+ * Common single-object inputs for headless scroller composables.
31
+ *
32
+ * `scrollParent` overrides the auto-detected scroll parent used by page mode
33
+ * (issue #928). Accepts an `HTMLElement` to listen and measure against, or
34
+ * `Window` to force the page itself as the viewport. When omitted, the
35
+ * scroller walks the DOM via `getScrollParent` for the nearest overflow:auto
36
+ * ancestor and falls back to `window`.
37
+ */
38
+ export interface ScrollerOptionElements {
39
+ el?: MaybeRefOrGetter<HTMLElement | undefined>;
40
+ before?: MaybeRefOrGetter<HTMLElement | undefined>;
41
+ after?: MaybeRefOrGetter<HTMLElement | undefined>;
42
+ scrollParent?: MaybeRefOrGetter<HTMLElement | Window | undefined>;
43
+ }
44
+ /**
45
+ * Common single-object callback hooks for headless scroller composables.
46
+ */
47
+ export interface ScrollerOptionCallbacks extends ScrollerCallbacks {
48
+ }
49
+ /**
50
+ * Normalized element refs and callback hooks resolved from either object or legacy positional inputs.
51
+ */
52
+ export interface NormalizedScrollerInputs {
53
+ el: ComputedRef<HTMLElement | undefined>;
54
+ before: ComputedRef<HTMLElement | undefined>;
55
+ after: ComputedRef<HTMLElement | undefined>;
56
+ scrollParent: ComputedRef<HTMLElement | Window | undefined>;
57
+ callbacks: ScrollerCallbacks;
58
+ }
59
+ /**
60
+ * Cache single-object scroller options so getter-based callers do not rebuild the object on every access.
61
+ */
62
+ export declare function resolveScrollerOptions<TOptions>(options: MaybeRefOrGetter<TOptions>): ComputedRef<TOptions>;
63
+ /**
64
+ * Resolve shared scroller inputs while keeping `items` and DOM refs as separate reactive sources.
65
+ */
66
+ export declare function normalizeScrollerInputs<TOptions extends ScrollerOptionElements & ScrollerOptionCallbacks>(options: MaybeRefOrGetter<TOptions>, el?: MaybeRefOrGetter<HTMLElement | undefined>, before?: MaybeRefOrGetter<HTMLElement | undefined>, after?: MaybeRefOrGetter<HTMLElement | undefined>, callbacks?: ScrollerCallbacks): NormalizedScrollerInputs;
@@ -0,0 +1,109 @@
1
+ import type { ComputedRef, CSSProperties, Directive, MaybeRefOrGetter, Ref } from 'vue';
2
+ import type { CacheSnapshot, DefaultKeyField, DynamicScrollerView, ItemKey, ItemWithSize, KeyFieldValue, KeyValue, ScrollDirection, ValidKeyField, VScrollData } from '../types';
3
+ import type { DynamicScrollerItemControllerCallbacks, DynamicScrollerItemControllerOptions, DynamicScrollerMeasurementContext } from './dynamicScrollerMeasurement';
4
+ import type { ScrollerOptionEnabled } from './scrollerOptions';
5
+ import type { UseRecycleScrollerReturn } from './useRecycleScroller';
6
+ export interface UseDynamicScrollerItemViewBindingOptions<TItem = unknown, TKey = KeyValue> {
7
+ view: DynamicScrollerView<TItem, TKey>;
8
+ watchData?: boolean;
9
+ /**
10
+ * @deprecated `sizeDependencies` is a legacy fallback for environments without
11
+ * `ResizeObserver` and will be removed in the next major release.
12
+ */
13
+ sizeDependencies?: Record<string, unknown> | unknown[] | null;
14
+ emitResize?: boolean;
15
+ onResize?: DynamicScrollerItemControllerCallbacks['onResize'];
16
+ }
17
+ interface UseDynamicScrollerItemLegacyBindingOptions<TItem = unknown> extends Omit<DynamicScrollerItemControllerOptions<TItem>, 'watchData' | 'emitResize'> {
18
+ watchData?: boolean;
19
+ emitResize?: boolean;
20
+ onResize?: DynamicScrollerItemControllerCallbacks['onResize'];
21
+ }
22
+ export type UseDynamicScrollerItemBindingOptions<TItem = unknown, TKey = KeyValue> = UseDynamicScrollerItemViewBindingOptions<TItem, TKey> | UseDynamicScrollerItemLegacyBindingOptions<TItem>;
23
+ export interface UseDynamicScrollerOptions<TItem = unknown> extends ScrollerOptionEnabled {
24
+ items: MaybeRefOrGetter<TItem[]>;
25
+ keyField: KeyFieldValue<TItem>;
26
+ direction?: ScrollDirection;
27
+ minItemSize: number | string;
28
+ el: MaybeRefOrGetter<HTMLElement | undefined>;
29
+ before?: MaybeRefOrGetter<HTMLElement | undefined>;
30
+ after?: MaybeRefOrGetter<HTMLElement | undefined>;
31
+ /**
32
+ * Override the auto-detected scroll-parent used by page mode. Accepts an
33
+ * `HTMLElement` (typically an `overflow:auto` ancestor) or `Window`. When
34
+ * omitted, the scroller walks the DOM for the nearest scrollable ancestor.
35
+ * See issue #928.
36
+ */
37
+ scrollParent?: MaybeRefOrGetter<HTMLElement | Window | undefined>;
38
+ buffer?: number;
39
+ pageMode?: boolean;
40
+ shift?: boolean;
41
+ cache?: CacheSnapshot;
42
+ disableTransform?: boolean;
43
+ flowMode?: boolean;
44
+ hiddenPosition?: number;
45
+ prerender?: number;
46
+ emitUpdate?: boolean;
47
+ updateInterval?: number;
48
+ onResize?: () => void;
49
+ onVisible?: () => void;
50
+ onHidden?: () => void;
51
+ onUpdate?: (startIndex: number, endIndex: number, visibleStartIndex: number, visibleEndIndex: number) => void;
52
+ }
53
+ type UseDynamicScrollerRecycleReturn<TItem, TKey> = UseRecycleScrollerReturn<ItemWithSize<TItem, TKey>, TKey>;
54
+ type UseDynamicScrollerSizes<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['sizes'];
55
+ type UseDynamicScrollerReady<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['ready'];
56
+ type UseDynamicScrollerPool<TItem, TKey> = Ref<Array<DynamicScrollerView<TItem, TKey>>>;
57
+ type UseDynamicScrollerVisiblePool<TItem, TKey> = ComputedRef<Array<DynamicScrollerView<TItem, TKey>>>;
58
+ type UseDynamicScrollerHandleResize<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['handleResize'];
59
+ type UseDynamicScrollerHandleVisibilityChange<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['handleVisibilityChange'];
60
+ type UseDynamicScrollerGetScroll<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['getScroll'];
61
+ type UseDynamicScrollerFindItemIndex<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['findItemIndex'];
62
+ type UseDynamicScrollerGetItemOffset<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['getItemOffset'];
63
+ type UseDynamicScrollerScrollToItem<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['scrollToItem'];
64
+ type UseDynamicScrollerScrollToPosition<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['scrollToPosition'];
65
+ type UseDynamicScrollerSortViews<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['sortViews'];
66
+ type UseDynamicScrollerTotalSize<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['totalSize'];
67
+ type UseDynamicScrollerUpdateVisibleItems<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['updateVisibleItems'];
68
+ type UseDynamicScrollerCacheSnapshot<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['cacheSnapshot'];
69
+ type UseDynamicScrollerRestoreCache<TItem, TKey> = UseDynamicScrollerRecycleReturn<TItem, TKey>['restoreCache'];
70
+ type ResolvedDynamicScrollerItems<TOptions extends UseDynamicScrollerOptions<any>> = TOptions['items'] extends MaybeRefOrGetter<infer TItems extends any[]> ? TItems : never;
71
+ type InferredDynamicScrollerItem<TOptions extends UseDynamicScrollerOptions<any>> = ResolvedDynamicScrollerItems<TOptions>[number];
72
+ type InferredDynamicScrollerKeyField<TOptions extends UseDynamicScrollerOptions<any>> = Extract<TOptions['keyField'], KeyFieldValue<InferredDynamicScrollerItem<TOptions>>>;
73
+ export interface UseDynamicScrollerReturn<TItem = unknown, TKey = ItemKey<TItem>> {
74
+ vscrollData: VScrollData;
75
+ itemsWithSize: ComputedRef<Array<ItemWithSize<TItem, TKey>>>;
76
+ simpleArray: ComputedRef<boolean>;
77
+ resizeObserver: ResizeObserver | undefined;
78
+ measurementContext: DynamicScrollerMeasurementContext;
79
+ vDynamicScrollerItem: Directive<HTMLElement, UseDynamicScrollerItemBindingOptions<TItem, TKey>>;
80
+ pool: UseDynamicScrollerPool<TItem, TKey>;
81
+ visiblePool: UseDynamicScrollerVisiblePool<TItem, TKey>;
82
+ totalSize: UseDynamicScrollerTotalSize<TItem, TKey>;
83
+ startSpacerSize: UseDynamicScrollerRecycleReturn<TItem, TKey>['startSpacerSize'];
84
+ endSpacerSize: UseDynamicScrollerRecycleReturn<TItem, TKey>['endSpacerSize'];
85
+ ready: UseDynamicScrollerReady<TItem, TKey>;
86
+ sizes: UseDynamicScrollerSizes<TItem, TKey>;
87
+ forceUpdate: (clear?: boolean) => void;
88
+ scrollToItem: UseDynamicScrollerScrollToItem<TItem, TKey>;
89
+ scrollToPosition: UseDynamicScrollerScrollToPosition<TItem, TKey>;
90
+ getScroll: UseDynamicScrollerGetScroll<TItem, TKey>;
91
+ findItemIndex: UseDynamicScrollerFindItemIndex<TItem, TKey>;
92
+ getItemOffset: UseDynamicScrollerGetItemOffset<TItem, TKey>;
93
+ updateVisibleItems: UseDynamicScrollerUpdateVisibleItems<TItem, TKey>;
94
+ handleResize: UseDynamicScrollerHandleResize<TItem, TKey>;
95
+ handleVisibilityChange: UseDynamicScrollerHandleVisibilityChange<TItem, TKey>;
96
+ sortViews: UseDynamicScrollerSortViews<TItem, TKey>;
97
+ cacheSnapshot: UseDynamicScrollerCacheSnapshot<TItem, TKey>;
98
+ restoreCache: UseDynamicScrollerRestoreCache<TItem, TKey>;
99
+ getItemSize: (item: TItem, index?: number) => number;
100
+ getViewStyle: (view: DynamicScrollerView<TItem, TKey>) => CSSProperties;
101
+ scrollToBottom: () => void;
102
+ onScrollerResize: () => void;
103
+ onScrollerVisible: () => void;
104
+ }
105
+ export declare function useDynamicScroller<TItem, TKeyField extends KeyFieldValue<TItem> = DefaultKeyField<TItem>>(options: MaybeRefOrGetter<UseDynamicScrollerOptions<TItem> & {
106
+ keyField: ValidKeyField<TItem, TKeyField>;
107
+ }>): UseDynamicScrollerReturn<TItem, ItemKey<TItem, TKeyField>>;
108
+ export declare function useDynamicScroller<TOptions extends UseDynamicScrollerOptions<any>>(options: MaybeRefOrGetter<TOptions>): UseDynamicScrollerReturn<InferredDynamicScrollerItem<TOptions>, ItemKey<InferredDynamicScrollerItem<TOptions>, InferredDynamicScrollerKeyField<TOptions>>>;
109
+ export {};
@@ -0,0 +1,21 @@
1
+ import type { MaybeRefOrGetter } from 'vue';
2
+ import type { KeyValue } from '../types';
3
+ import type { DynamicScrollerItemControllerOptions } from './dynamicScrollerMeasurement';
4
+ import type { ScrollerOptionEnabled } from './scrollerOptions';
5
+ import { createDynamicScrollerItemController } from './dynamicScrollerMeasurement';
6
+ export interface UseDynamicScrollerItemOptions<TItem = unknown> extends DynamicScrollerItemControllerOptions<TItem>, ScrollerOptionEnabled {
7
+ el: MaybeRefOrGetter<HTMLElement | undefined>;
8
+ onResize?: (id: KeyValue) => void;
9
+ }
10
+ export interface UseDynamicScrollerItemLegacyOptions<TItem = unknown> extends DynamicScrollerItemControllerOptions<TItem>, ScrollerOptionEnabled {
11
+ }
12
+ export interface UseDynamicScrollerItemReturn {
13
+ id: ReturnType<typeof createDynamicScrollerItemController>['id'];
14
+ size: ReturnType<typeof createDynamicScrollerItemController>['size'];
15
+ finalActive: ReturnType<typeof createDynamicScrollerItemController>['finalActive'];
16
+ updateSize: ReturnType<typeof createDynamicScrollerItemController>['updateSize'];
17
+ }
18
+ export declare function useDynamicScrollerItem<TItem>(options: MaybeRefOrGetter<UseDynamicScrollerItemOptions<TItem>>): UseDynamicScrollerItemReturn;
19
+ export declare function useDynamicScrollerItem<TItem>(options: MaybeRefOrGetter<UseDynamicScrollerItemLegacyOptions<TItem>>, el: MaybeRefOrGetter<HTMLElement | undefined>, callbacks?: {
20
+ onResize?: (id: KeyValue) => void;
21
+ }): UseDynamicScrollerItemReturn;
@@ -0,0 +1,7 @@
1
+ type IdPropFn = (vm: any) => string | number;
2
+ export declare function useIdState({ idProp, }?: {
3
+ idProp?: IdPropFn | string;
4
+ }): {
5
+ idState: import("vue").Ref<unknown, unknown>;
6
+ };
7
+ export {};
@@ -0,0 +1,65 @@
1
+ import type { ComputedRef, CSSProperties, MaybeRefOrGetter, Ref } from 'vue';
2
+ import type { CacheSnapshot, DefaultKeyField, ItemKey, ItemSizeValue, KeyFieldValue, ScrollDirection, ScrollState, ScrollToOptions, Sizes, ValidKeyField, ValidSizeField, View } from '../types';
3
+ import type { ScrollerCallbacks, ScrollerOptionCallbacks, ScrollerOptionElements, ScrollerOptionEnabled } from './scrollerOptions';
4
+ export interface UseRecycleScrollerOptions<TItem = unknown, TSizeField extends string = 'size'> extends ScrollerOptionElements, ScrollerOptionCallbacks, ScrollerOptionEnabled {
5
+ items: MaybeRefOrGetter<TItem[]>;
6
+ keyField: KeyFieldValue<TItem>;
7
+ direction?: ScrollDirection;
8
+ itemSize: ItemSizeValue<TItem>;
9
+ gridItems?: number;
10
+ itemSecondarySize?: number;
11
+ minItemSize: number | string | null;
12
+ sizeField?: ValidSizeField<TItem, TSizeField>;
13
+ typeField: string;
14
+ buffer: number;
15
+ pageMode: boolean;
16
+ shift?: boolean;
17
+ cache?: CacheSnapshot;
18
+ prerender: number;
19
+ emitUpdate: boolean;
20
+ disableTransform?: boolean;
21
+ flowMode?: boolean;
22
+ /**
23
+ * Park recycled hidden views at custom main-axis position.
24
+ */
25
+ hiddenPosition?: number;
26
+ updateInterval: number;
27
+ /**
28
+ * Maximum views this scroller may render before reporting a missing scroll boundary.
29
+ * Positive values override the global limit for this instance.
30
+ */
31
+ itemsLimit?: number;
32
+ }
33
+ export interface UseRecycleScrollerReturn<TItem = unknown, TKey = ItemKey<TItem>> {
34
+ pool: Ref<Array<View<TItem, TKey>>>;
35
+ visiblePool: ComputedRef<Array<View<TItem, TKey>>>;
36
+ totalSize: Ref<number>;
37
+ startSpacerSize: Ref<number>;
38
+ endSpacerSize: Ref<number>;
39
+ ready: Ref<boolean>;
40
+ sizes: ComputedRef<Sizes | never[]>;
41
+ simpleArray: ComputedRef<boolean>;
42
+ scrollToItem: (index: number, options?: ScrollToOptions) => void;
43
+ scrollToPosition: (position: number, options?: ScrollToOptions) => void;
44
+ getScroll: () => ScrollState;
45
+ findItemIndex: (offset: number) => number;
46
+ getItemOffset: (index: number) => number;
47
+ getItemSize: (index: number) => number;
48
+ getViewStyle: (view: View<TItem, TKey>) => CSSProperties;
49
+ cacheSnapshot: ComputedRef<CacheSnapshot>;
50
+ restoreCache: (snapshot: CacheSnapshot | null | undefined) => boolean;
51
+ updateVisibleItems: (itemsChanged: boolean, checkPositionDiff?: boolean) => {
52
+ continuous: boolean;
53
+ };
54
+ handleResize: () => void;
55
+ handleVisibilityChange: (isVisible: boolean, entry: IntersectionObserverEntry) => void;
56
+ sortViews: () => void;
57
+ }
58
+ type ResolvedRecycleScrollerItems<TOptions extends UseRecycleScrollerOptions<any, any>> = TOptions['items'] extends MaybeRefOrGetter<infer TItems extends any[]> ? TItems : never;
59
+ type InferredRecycleScrollerItem<TOptions extends UseRecycleScrollerOptions<any, any>> = ResolvedRecycleScrollerItems<TOptions>[number];
60
+ type InferredRecycleScrollerKeyField<TOptions extends UseRecycleScrollerOptions<any, any>> = Extract<TOptions['keyField'], KeyFieldValue<InferredRecycleScrollerItem<TOptions>>>;
61
+ export declare function useRecycleScroller<TItem, TKeyField extends KeyFieldValue<TItem> = DefaultKeyField<TItem>, TSizeField extends string = 'size'>(options: MaybeRefOrGetter<UseRecycleScrollerOptions<TItem, TSizeField> & {
62
+ keyField: ValidKeyField<TItem, TKeyField>;
63
+ }>, el?: MaybeRefOrGetter<HTMLElement | undefined>, before?: MaybeRefOrGetter<HTMLElement | undefined>, after?: MaybeRefOrGetter<HTMLElement | undefined>, callbacks?: ScrollerCallbacks): UseRecycleScrollerReturn<TItem, ItemKey<TItem, TKeyField>>;
64
+ export declare function useRecycleScroller<TOptions extends UseRecycleScrollerOptions<any, any>>(options: MaybeRefOrGetter<TOptions>, el?: MaybeRefOrGetter<HTMLElement | undefined>, before?: MaybeRefOrGetter<HTMLElement | undefined>, after?: MaybeRefOrGetter<HTMLElement | undefined>, callbacks?: ScrollerCallbacks): UseRecycleScrollerReturn<InferredRecycleScrollerItem<TOptions>, ItemKey<InferredRecycleScrollerItem<TOptions>, InferredRecycleScrollerKeyField<TOptions>>>;
65
+ export {};
@@ -0,0 +1,28 @@
1
+ import type { ComputedRef, CSSProperties, MaybeRefOrGetter } from 'vue';
2
+ import type { ScrollerOptionEnabled } from './scrollerOptions';
3
+ /**
4
+ * Options for table column width locking.
5
+ */
6
+ export interface UseTableColumnWidthsOptions extends ScrollerOptionEnabled {
7
+ table: MaybeRefOrGetter<HTMLTableElement | undefined>;
8
+ dependencies?: MaybeRefOrGetter<unknown[] | Record<string, unknown> | null>;
9
+ /**
10
+ * @deprecated Use `enabled: false` (the inverse) for parity with sibling
11
+ * scroller composables. `disabled` continues to work for backward compat.
12
+ */
13
+ disabled?: MaybeRefOrGetter<boolean>;
14
+ }
15
+ /**
16
+ * Public state returned by `useTableColumnWidths`.
17
+ */
18
+ export interface UseTableColumnWidthsReturn {
19
+ columnWidths: ComputedRef<number[]>;
20
+ hasLockedWidths: ComputedRef<boolean>;
21
+ tableStyle: ComputedRef<CSSProperties | undefined>;
22
+ scheduleMeasure: () => void;
23
+ clear: () => void;
24
+ }
25
+ /**
26
+ * Measure native table columns and expose locked widths for a `<colgroup>`.
27
+ */
28
+ export declare function useTableColumnWidths(options: UseTableColumnWidthsOptions): UseTableColumnWidthsReturn;
@@ -0,0 +1,17 @@
1
+ import type { MaybeRefOrGetter } from 'vue';
2
+ import type { DefaultKeyField, ItemKey, KeyFieldValue, ValidKeyField } from '../types';
3
+ import type { ScrollerCallbacks } from './scrollerOptions';
4
+ import type { UseRecycleScrollerOptions, UseRecycleScrollerReturn } from './useRecycleScroller';
5
+ export interface UseWindowScrollerOptions<TItem = unknown, TSizeField extends string = 'size'> extends Omit<UseRecycleScrollerOptions<TItem, TSizeField>, 'pageMode'> {
6
+ pageMode?: boolean;
7
+ }
8
+ export interface UseWindowScrollerReturn<TItem = unknown, TKey = ItemKey<TItem>> extends UseRecycleScrollerReturn<TItem, TKey> {
9
+ }
10
+ type ResolvedWindowScrollerItems<TOptions extends UseWindowScrollerOptions<any, any>> = TOptions['items'] extends MaybeRefOrGetter<infer TItems extends any[]> ? TItems : never;
11
+ type InferredWindowScrollerItem<TOptions extends UseWindowScrollerOptions<any, any>> = ResolvedWindowScrollerItems<TOptions>[number];
12
+ type InferredWindowScrollerKeyField<TOptions extends UseWindowScrollerOptions<any, any>> = Extract<TOptions['keyField'], KeyFieldValue<InferredWindowScrollerItem<TOptions>>>;
13
+ export declare function useWindowScroller<TItem, TKeyField extends KeyFieldValue<TItem> = DefaultKeyField<TItem>, TSizeField extends string = 'size'>(options: MaybeRefOrGetter<UseWindowScrollerOptions<TItem, TSizeField> & {
14
+ keyField: ValidKeyField<TItem, TKeyField>;
15
+ }>, el?: MaybeRefOrGetter<HTMLElement | undefined>, before?: MaybeRefOrGetter<HTMLElement | undefined>, after?: MaybeRefOrGetter<HTMLElement | undefined>, callbacks?: ScrollerCallbacks): UseWindowScrollerReturn<TItem, ItemKey<TItem, TKeyField>>;
16
+ export declare function useWindowScroller<TOptions extends UseWindowScrollerOptions<any, any>>(options: MaybeRefOrGetter<TOptions>, el?: MaybeRefOrGetter<HTMLElement | undefined>, before?: MaybeRefOrGetter<HTMLElement | undefined>, after?: MaybeRefOrGetter<HTMLElement | undefined>, callbacks?: ScrollerCallbacks): UseWindowScrollerReturn<InferredWindowScrollerItem<TOptions>, ItemKey<InferredWindowScrollerItem<TOptions>, InferredWindowScrollerKeyField<TOptions>>>;
17
+ export {};
@@ -0,0 +1,7 @@
1
+ export interface VirtualScrollerConfig {
2
+ itemsLimit: number;
3
+ installComponents?: boolean;
4
+ componentsPrefix?: string;
5
+ }
6
+ declare const config: VirtualScrollerConfig;
7
+ export default config;
@@ -0,0 +1,8 @@
1
+ import type { Directive } from 'vue';
2
+ type ObserveVisibilityCallback = (isVisible: boolean, entry: IntersectionObserverEntry) => void;
3
+ interface ObserveVisibilityValue {
4
+ callback: ObserveVisibilityCallback;
5
+ intersection?: IntersectionObserverInit;
6
+ }
7
+ export declare const ObserveVisibility: Directive<Element, ObserveVisibilityCallback | ObserveVisibilityValue>;
8
+ export {};