@wyxos/vibe 3.1.20 → 3.1.23

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.
@@ -7,6 +7,7 @@ type __VLS_Props = {
7
7
  active?: boolean;
8
8
  activeIndex?: number;
9
9
  allowExhaustedNextPageRefresh?: boolean;
10
+ bottomLoadBufferPx?: number;
10
11
  commitPendingAppend?: (() => void | Promise<void>) | null;
11
12
  emptyStateMode?: VibeEmptyStateMode;
12
13
  errorMessage?: string | null;
@@ -40,7 +41,9 @@ type __VLS_Slots = {
40
41
  item: VibeViewerItem;
41
42
  }) => unknown;
42
43
  };
43
- declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
44
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
45
+ autoScroll: (speed: number) => void;
46
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
44
47
  "update:activeIndex": (value: number) => any;
45
48
  "boundary-load-progress": (value: {
46
49
  nextBoundaryLoadProgress: number;
@@ -56,6 +59,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
56
59
  "onOpen-fullscreen"?: ((index: number) => any) | undefined;
57
60
  }>, {
58
61
  loading: boolean;
62
+ bottomLoadBufferPx: number;
59
63
  emptyStateMode: VibeEmptyStateMode;
60
64
  paginationDetail: string | null;
61
65
  showStatusBadges: boolean;
@@ -0,0 +1,15 @@
1
+ import type { VibeViewerItem } from '../viewer';
2
+ import { type VibeAutoBucket } from './autoBuckets';
3
+ export interface AutoResolveBucketInput {
4
+ cursor: string | null;
5
+ nextCursor: string | null;
6
+ nextCursorExhausted?: boolean;
7
+ nextItems: VibeViewerItem[];
8
+ previousCursor: string | null;
9
+ previousItems: VibeViewerItem[];
10
+ }
11
+ export type CreateAutoResolveBucket = (options: AutoResolveBucketInput) => VibeAutoBucket;
12
+ export declare function createAutoResolveBucketFactory(options: {
13
+ getSequence: () => number;
14
+ setSequence: (sequence: number) => void;
15
+ }): CreateAutoResolveBucket;
@@ -0,0 +1,46 @@
1
+ import type { Ref } from 'vue';
2
+ import type { VibeAutoBucket } from './autoBuckets';
3
+ import { type ResolveFn } from './autoResolveHelpers';
4
+ import type { CreateAutoResolveBucket } from './autoResolveBucketFactory';
5
+ import type { VibeFillMode, VibeLoadPhase } from './removalState';
6
+ export declare function createAutoResolveFillUntilController(options: {
7
+ autoBuckets: Ref<VibeAutoBucket[]>;
8
+ clearActiveResolveController: (controller: AbortController | null) => void;
9
+ clearFillDelay: (cancel?: boolean) => void;
10
+ createBucket: CreateAutoResolveBucket;
11
+ errorMessage: Ref<string | null>;
12
+ fillCollectedCount: Ref<number | null>;
13
+ fillCompletedCalls: Ref<number>;
14
+ fillCursor: Ref<string | null>;
15
+ fillLoadedCount: Ref<number>;
16
+ fillMode: Ref<VibeFillMode>;
17
+ fillProgress: Ref<number | null>;
18
+ fillTargetCalls: Ref<number | null>;
19
+ fillTargetCount: Ref<number | null>;
20
+ fillTotalCount: Ref<number | null>;
21
+ finishLoadPhase: () => void;
22
+ getHasNextPage: () => boolean;
23
+ getFillDelayMs: (fillRequestIndex: number) => number;
24
+ getIsLoading: () => boolean;
25
+ getIsManualPageLoadingLocked: () => boolean;
26
+ getLoadedItemCount: () => number;
27
+ getNextCursor: () => string | null;
28
+ getOperationIsCurrent: (operationId: number) => boolean;
29
+ getPageSize: () => number;
30
+ getResolve: () => ResolveFn | undefined;
31
+ getTrailingBoundaryBucket: () => VibeAutoBucket | null;
32
+ getVisibleItemCount: () => number;
33
+ inFlightCursors: Set<string>;
34
+ isAwaitingAppendCommit: Ref<boolean>;
35
+ isFillUntilActive: Ref<boolean>;
36
+ nextOperationId: () => number;
37
+ operationPhase: Ref<VibeLoadPhase>;
38
+ pendingAppendBuckets: Ref<VibeAutoBucket[]>;
39
+ setActiveResolveController: (controller: AbortController | null) => void;
40
+ setLastLoadAttempt: (attempt: () => Promise<void>) => void;
41
+ waitFillDelay: (delayMs: number) => Promise<void>;
42
+ }): {
43
+ cancel: () => void;
44
+ fillUntil: (cursorOrCount: number | string) => Promise<void>;
45
+ fillUntilEnd: () => Promise<void>;
46
+ };
@@ -11,6 +11,7 @@ export type ResolveFn = (params: {
11
11
  items: VibeViewerItem[];
12
12
  nextPage: string | null;
13
13
  previousPage?: string | null;
14
+ total?: number | null;
14
15
  }>;
15
16
  export type VibeAutoDirection = 'backward' | 'forward';
16
17
  export declare function isActiveLoadPhase(phase: VibeLoadPhase): phase is "filling" | "initializing" | "refreshing" | "loading";
@@ -0,0 +1,44 @@
1
+ import type { Ref } from 'vue';
2
+ import { type VibeAutoBucket } from './autoBuckets';
3
+ import type { CreateAutoResolveBucket } from './autoResolveBucketFactory';
4
+ import { type ResolveFn, type VibeAutoDirection } from './autoResolveHelpers';
5
+ import { type VibeCollectedBuckets } from './autoResolveState';
6
+ import type { VibeLoadPhase } from './removalState';
7
+ export declare function createAutoResolveLoadingController(options: {
8
+ autoBuckets: Ref<VibeAutoBucket[]>;
9
+ clearActiveResolveController: (controller: AbortController | null) => void;
10
+ clearFillState: () => void;
11
+ createBucket: CreateAutoResolveBucket;
12
+ errorMessage: Ref<string | null>;
13
+ fillCollectedCount: Ref<number | null>;
14
+ fillCursor: Ref<string | null>;
15
+ fillTargetCount: Ref<number | null>;
16
+ finishLoadPhase: () => void;
17
+ getActiveOccurrenceKey: () => string | null;
18
+ getBoundaryBucket: (edge: 'leading' | 'trailing') => VibeAutoBucket | null | undefined;
19
+ getFillDelayMs: (index: number) => number;
20
+ getOperationIsCurrent: (operationId: number) => boolean;
21
+ getPageSize: () => number;
22
+ getResolve: () => ResolveFn | undefined;
23
+ getSequence: () => number;
24
+ inFlightCursors: Set<string>;
25
+ isManualPageLoadingLocked: Ref<boolean>;
26
+ nextOperationId: () => number;
27
+ operationPhase: Ref<VibeLoadPhase>;
28
+ removedIds: Ref<Set<string>>;
29
+ setActiveResolveController: (controller: AbortController | null) => void;
30
+ setSequence: (sequence: number) => void;
31
+ syncActiveIndexAfterVisibilityChange: (anchorOccurrenceKey: string | null) => void;
32
+ waitFillDelay: (delayMs: number) => Promise<void>;
33
+ }): {
34
+ collectBuckets: (request: {
35
+ continueUntilFilled: boolean;
36
+ cursor: string | null;
37
+ direction: VibeAutoDirection;
38
+ phase: Extract<VibeLoadPhase, "filling" | "initializing" | "loading">;
39
+ }) => Promise<VibeCollectedBuckets | null>;
40
+ reloadBoundaryBucket: (edge: "leading" | "trailing") => Promise<{
41
+ followCursor: string | null;
42
+ itemsInserted: number;
43
+ } | null>;
44
+ };
@@ -0,0 +1,18 @@
1
+ import { type Ref } from 'vue';
2
+ import type { VibeViewerItem } from '../viewer';
3
+ import type { VibeAutoBucket } from './autoBuckets';
4
+ export interface EmptyVisiblePrefetchOptions {
5
+ canRefreshTrailingBoundary: Readonly<Ref<boolean>>;
6
+ hasNextPage: Readonly<Ref<boolean>>;
7
+ isInitialLoading: () => boolean;
8
+ isPageLoadingLocked: Readonly<Ref<boolean>>;
9
+ items: Readonly<Ref<VibeViewerItem[]>>;
10
+ loading: Readonly<Ref<boolean>>;
11
+ prefetchNextPage: () => Promise<void>;
12
+ removedIds: Readonly<Ref<Set<string>>>;
13
+ trailingBoundaryBucket: Readonly<Ref<VibeAutoBucket | null>>;
14
+ }
15
+ export declare function createEmptyVisiblePrefetchScheduler(options: EmptyVisiblePrefetchOptions): {
16
+ resetRefreshAttempt: () => void;
17
+ schedule: () => void;
18
+ };
@@ -0,0 +1,12 @@
1
+ import type { VibeFillMode } from './removalState';
2
+ export declare function useFillProgressState(getLoadedItemCount: () => number): {
3
+ refs: {
4
+ fillCompletedCalls: import("vue").Ref<number, number>;
5
+ fillLoadedCount: import("vue").Ref<number, number>;
6
+ fillMode: import("vue").Ref<VibeFillMode, VibeFillMode>;
7
+ fillProgress: import("vue").Ref<number | null, number | null>;
8
+ fillTargetCalls: import("vue").Ref<number | null, number | null>;
9
+ fillTotalCount: import("vue").Ref<number | null, number | null>;
10
+ };
11
+ reset: () => void;
12
+ };
@@ -0,0 +1,5 @@
1
+ export declare function useMasonryBoundaryLock(): {
2
+ clearBoundaryInteractionReleaseTimer: () => void;
3
+ isBoundaryInteractionLocked: import("vue").Ref<boolean, boolean>;
4
+ lockBoundaryInteraction: (durationMs: number) => void;
5
+ };
@@ -0,0 +1,35 @@
1
+ import type { VibeViewerItem } from '../viewer';
2
+ export interface MasonryRemovedItem {
3
+ height: number;
4
+ item: VibeViewerItem;
5
+ position: {
6
+ x: number;
7
+ y: number;
8
+ };
9
+ }
10
+ export declare function getMasonryItemMutation(options: {
11
+ activeIndex: number;
12
+ currentItems: VibeViewerItem[];
13
+ gapPx: number;
14
+ contentInsetPx: number;
15
+ layoutHeights: number[];
16
+ layoutIndexById: Map<string, number>;
17
+ layoutPositions: {
18
+ x: number;
19
+ y: number;
20
+ }[];
21
+ previousItems: VibeViewerItem[];
22
+ scrollTop: number;
23
+ }): {
24
+ addedItems: VibeViewerItem[];
25
+ anchorId: string | null;
26
+ isPrepend: boolean;
27
+ oldPositionsById: Map<string, {
28
+ x: number;
29
+ y: number;
30
+ }>;
31
+ previousIds: string[];
32
+ removedItems: MasonryRemovedItem[];
33
+ shouldLockBoundaryInteractionForRemoval: boolean;
34
+ shouldResetScrollForEmptyRemoval: boolean;
35
+ };
@@ -0,0 +1,17 @@
1
+ import { type Ref } from 'vue';
2
+ import type { VibeViewerItem } from '../viewer';
3
+ export declare function useMasonryPendingAppend(options: {
4
+ bucketPx: number;
5
+ columnCount: Ref<number>;
6
+ columnWidth: Ref<number>;
7
+ commitPendingAppend: Ref<(() => void | Promise<void>) | null | undefined>;
8
+ contentInsetPx: number;
9
+ gapPx: number;
10
+ items: Ref<VibeViewerItem[]>;
11
+ pendingAppendItems: Ref<VibeViewerItem[]>;
12
+ }): {
13
+ clearAppendCommitTimer: () => void;
14
+ clearReservedHeightWhenIdle: (isLoading: boolean) => void;
15
+ refreshReservedContentHeight: () => void;
16
+ reservedContentHeight: Ref<number | null, number | null>;
17
+ };
@@ -0,0 +1,37 @@
1
+ import { type Ref } from 'vue';
2
+ export declare function useMasonryAutoScroll(options: {
3
+ active: Ref<boolean>;
4
+ getMaxScrollTop: () => number;
5
+ getViewport: () => HTMLElement | null;
6
+ onScroll: () => void;
7
+ }): {
8
+ autoScroll: (speed: number) => void;
9
+ start: () => void;
10
+ stop: () => void;
11
+ };
12
+ export declare function getLeadingBoundaryLoadProgress(options: {
13
+ active: boolean;
14
+ maxScrollTop: number;
15
+ progressDistancePx: number;
16
+ thresholdPx: number;
17
+ triggerEnabled: boolean;
18
+ }): number;
19
+ export declare function getTrailingBoundaryLoadProgress(options: {
20
+ active: boolean;
21
+ maxScrollTop: number;
22
+ progressDistancePx: number;
23
+ thresholdPx: number;
24
+ triggerEnabled: boolean;
25
+ }): number;
26
+ export declare function useMasonryScrollbar(options: {
27
+ containerHeight: Ref<number>;
28
+ scrollTop: Ref<number>;
29
+ viewportHeight: Ref<number>;
30
+ }): {
31
+ getScrollbarThumbStyle: () => {
32
+ height: string;
33
+ transform: string;
34
+ };
35
+ showScrollbar: import("vue").ComputedRef<boolean>;
36
+ };
37
+ export declare function normalizeMasonryBottomLoadBufferPx(value: number | undefined): number;
@@ -3,15 +3,22 @@ export interface VibeRemoveResult {
3
3
  ids: string[];
4
4
  }
5
5
  export type VibeLoadPhase = 'failed' | 'filling' | 'idle' | 'initializing' | 'loading' | 'refreshing';
6
+ export type VibeFillMode = 'count' | 'cursor' | 'end' | 'idle';
6
7
  export type VibeSurfaceMode = 'fullscreen' | 'list';
7
8
  export interface VibeStatus {
8
9
  activeIndex: number;
9
10
  currentCursor: string | null;
10
11
  errorMessage: string | null;
11
12
  fillCollectedCount: number | null;
13
+ fillCompletedCalls: number;
12
14
  fillCursor: string | null;
13
15
  fillDelayRemainingMs: number | null;
16
+ fillLoadedCount: number;
17
+ fillMode: VibeFillMode;
18
+ fillProgress: number | null;
19
+ fillTargetCalls: number | null;
14
20
  fillTargetCount: number | null;
21
+ fillTotalCount: number | null;
15
22
  hasNextPage: boolean;
16
23
  hasPreviousPage: boolean;
17
24
  itemCount: number;
@@ -27,8 +34,12 @@ export interface VibeStatus {
27
34
  surfaceMode: VibeSurfaceMode;
28
35
  }
29
36
  export interface VibeHandle {
37
+ autoScroll: (speedPxPerSecond: number) => void;
30
38
  cancel: () => void;
39
+ cancelFill: () => void;
31
40
  clearRemoved: () => void;
41
+ fillUntil: (cursorOrCount: number | string) => Promise<void>;
42
+ fillUntilEnd: () => Promise<void>;
32
43
  getItemByOccurrenceKey: (occurrenceKey: string) => VibeViewerItem | null;
33
44
  getItems: () => VibeViewerItem[];
34
45
  getRemovedIds: () => string[];
@@ -19,21 +19,12 @@ export declare function useAutoResolveSource(options: {
19
19
  removedIds: Ref<Set<string>>;
20
20
  resolve?: ResolveFn;
21
21
  }): {
22
- activeIndex: import("vue").ComputedRef<number>;
23
- canRetryInitialLoad: import("vue").ComputedRef<boolean>;
24
- cancel: () => void;
25
- canRefreshTrailingBoundary: import("vue").ComputedRef<boolean>;
26
- commitPendingAppend: () => Promise<void>;
27
- currentCursor: import("vue").ComputedRef<string | null>;
28
- errorMessage: Ref<string | null, string | null>;
29
- fillCollectedCount: Ref<number | null, number | null>;
30
- fillCursor: Ref<string | null, string | null>;
31
- fillDelayRemainingMs: Ref<number | null, number | null>;
32
- fillTargetCount: Ref<number | null, number | null>;
22
+ fillUntil: (cursorOrCount: number | string) => Promise<void>;
23
+ fillUntilEnd: () => Promise<void>;
33
24
  hasNextPage: import("vue").ComputedRef<boolean>;
34
25
  hasPreviousPage: import("vue").ComputedRef<boolean>;
35
26
  isAutoPrefetchEnabled: Ref<boolean, boolean>;
36
- isPageLoadingLocked: Ref<boolean, boolean>;
27
+ isPageLoadingLocked: import("vue").ComputedRef<boolean>;
37
28
  items: import("vue").ComputedRef<VibeViewerItem[]>;
38
29
  lockPageLoading: () => void;
39
30
  loading: import("vue").ComputedRef<boolean>;
@@ -54,5 +45,23 @@ export declare function useAutoResolveSource(options: {
54
45
  unlockPageLoading: () => void;
55
46
  getActiveOccurrenceKey: () => string | null;
56
47
  maybeCommitPendingAppendWhenFilteredOut: () => void;
48
+ fillCompletedCalls: Ref<number, number>;
49
+ fillLoadedCount: Ref<number, number>;
50
+ fillMode: Ref<import("./removalState").VibeFillMode, import("./removalState").VibeFillMode>;
51
+ fillProgress: Ref<number | null, number | null>;
52
+ fillTargetCalls: Ref<number | null, number | null>;
53
+ fillTotalCount: Ref<number | null, number | null>;
54
+ activeIndex: import("vue").ComputedRef<number>;
55
+ canRetryInitialLoad: import("vue").ComputedRef<boolean>;
56
+ cancel: () => void;
57
+ cancelFill: () => void;
58
+ canRefreshTrailingBoundary: import("vue").ComputedRef<boolean>;
59
+ commitPendingAppend: () => Promise<void>;
60
+ currentCursor: import("vue").ComputedRef<string | null>;
61
+ errorMessage: Ref<string | null, string | null>;
62
+ fillCollectedCount: Ref<number | null, number | null>;
63
+ fillCursor: Ref<string | null, string | null>;
64
+ fillDelayRemainingMs: Ref<number | null, number | null>;
65
+ fillTargetCount: Ref<number | null, number | null>;
57
66
  };
58
67
  export {};
@@ -20,9 +20,15 @@ export declare function useController(props: Readonly<VibeProps>, emit: VibeEmit
20
20
  readonly currentCursor: string | null;
21
21
  readonly errorMessage: string | null;
22
22
  readonly fillCollectedCount: number | null;
23
+ readonly fillCompletedCalls: number;
23
24
  readonly fillCursor: string | null;
24
25
  readonly fillDelayRemainingMs: number | null;
26
+ readonly fillLoadedCount: number;
27
+ readonly fillMode: import("./removalState").VibeFillMode;
28
+ readonly fillProgress: number | null;
29
+ readonly fillTargetCalls: number | null;
25
30
  readonly fillTargetCount: number | null;
31
+ readonly fillTotalCount: number | null;
26
32
  readonly hasNextPage: boolean;
27
33
  readonly hasPreviousPage: boolean;
28
34
  readonly itemCount: number;
@@ -42,20 +48,29 @@ export declare function useController(props: Readonly<VibeProps>, emit: VibeEmit
42
48
  activeIndex: import("vue").ComputedRef<number>;
43
49
  canRefreshExhaustedNextPage: import("vue").ComputedRef<boolean>;
44
50
  canRetryInitialLoad: import("vue").ComputedRef<boolean>;
51
+ cancelFill: () => void;
45
52
  clearRemoved: () => void;
46
53
  commitPendingAppend: () => Promise<void>;
47
54
  currentCursor: import("vue").ComputedRef<string | null>;
48
55
  errorMessage: import("vue").Ref<string | null, string | null>;
49
56
  fillCollectedCount: import("vue").Ref<number | null, number | null>;
57
+ fillCompletedCalls: import("vue").Ref<number, number>;
50
58
  fillCursor: import("vue").Ref<string | null, string | null>;
51
59
  fillDelayRemainingMs: import("vue").Ref<number | null, number | null>;
60
+ fillLoadedCount: import("vue").Ref<number, number>;
61
+ fillMode: import("vue").Ref<import("./removalState").VibeFillMode, import("./removalState").VibeFillMode>;
62
+ fillProgress: import("vue").Ref<number | null, number | null>;
63
+ fillTargetCalls: import("vue").Ref<number | null, number | null>;
52
64
  fillTargetCount: import("vue").Ref<number | null, number | null>;
65
+ fillTotalCount: import("vue").Ref<number | null, number | null>;
66
+ fillUntil: (cursorOrCount: number | string) => Promise<void>;
67
+ fillUntilEnd: () => Promise<void>;
53
68
  getItemByOccurrenceKey: (occurrenceKey: string) => import("../viewer").VibeViewerItem | null;
54
69
  getItems: () => import("../viewer").VibeViewerItem[];
55
70
  getRemovedIds: () => string[];
56
71
  hasNextPage: import("vue").ComputedRef<boolean>;
57
72
  hasPreviousPage: import("vue").ComputedRef<boolean>;
58
- isPageLoadingLocked: import("vue").Ref<boolean, boolean>;
73
+ isPageLoadingLocked: import("vue").ComputedRef<boolean>;
59
74
  items: import("vue").ComputedRef<import("../viewer").VibeViewerItem[]>;
60
75
  loading: import("vue").ComputedRef<boolean>;
61
76
  nextCursor: import("vue").ComputedRef<string | null>;
@@ -1,7 +1,7 @@
1
1
  import type { VibeViewerItem } from '../viewer';
2
2
  import type { VibeEmptyStateMode } from './surfaceSlots';
3
3
  export type { VibeHandle, VibeRemoveResult } from './removalState';
4
- export type { VibeLoadPhase, VibeSurfaceMode } from './removalState';
4
+ export type { VibeFillMode, VibeLoadPhase, VibeSurfaceMode } from './removalState';
5
5
  export interface VibeResolveParams {
6
6
  cursor: string | null;
7
7
  pageSize: number;
@@ -11,6 +11,7 @@ export interface VibeResolveResult {
11
11
  items: VibeViewerItem[];
12
12
  nextPage: string | null;
13
13
  previousPage?: string | null;
14
+ total?: number | null;
14
15
  }
15
16
  export interface VibeInitialState {
16
17
  items: VibeViewerItem[];
@@ -20,6 +21,7 @@ export interface VibeInitialState {
20
21
  activeIndex?: number;
21
22
  }
22
23
  export interface VibeProps {
24
+ bottomLoadBufferPx?: number;
23
25
  emptyStateMode?: VibeEmptyStateMode;
24
26
  fillDelayMs?: number;
25
27
  fillDelayStepMs?: number;
@@ -43,20 +45,29 @@ export declare function useDataSource(props: Readonly<VibeProps>, emit: VibeEmit
43
45
  canRefreshExhaustedNextPage: import("vue").ComputedRef<boolean>;
44
46
  canRetryInitialLoad: import("vue").ComputedRef<boolean>;
45
47
  cancel: () => void;
48
+ cancelFill: () => void;
46
49
  clearRemoved: () => void;
47
50
  commitPendingAppend: () => Promise<void>;
48
51
  currentCursor: import("vue").ComputedRef<string | null>;
49
52
  errorMessage: import("vue").Ref<string | null, string | null>;
50
53
  fillCollectedCount: import("vue").Ref<number | null, number | null>;
54
+ fillCompletedCalls: import("vue").Ref<number, number>;
51
55
  fillCursor: import("vue").Ref<string | null, string | null>;
52
56
  fillDelayRemainingMs: import("vue").Ref<number | null, number | null>;
57
+ fillLoadedCount: import("vue").Ref<number, number>;
58
+ fillMode: import("vue").Ref<import("./removalState").VibeFillMode, import("./removalState").VibeFillMode>;
59
+ fillProgress: import("vue").Ref<number | null, number | null>;
60
+ fillTargetCalls: import("vue").Ref<number | null, number | null>;
53
61
  fillTargetCount: import("vue").Ref<number | null, number | null>;
62
+ fillTotalCount: import("vue").Ref<number | null, number | null>;
63
+ fillUntil: (cursorOrCount: number | string) => Promise<void>;
64
+ fillUntilEnd: () => Promise<void>;
54
65
  getItemByOccurrenceKey: (occurrenceKey: string) => VibeViewerItem | null;
55
66
  getItems: () => VibeViewerItem[];
56
67
  getRemovedIds: () => string[];
57
68
  hasNextPage: import("vue").ComputedRef<boolean>;
58
69
  hasPreviousPage: import("vue").ComputedRef<boolean>;
59
- isPageLoadingLocked: import("vue").Ref<boolean, boolean>;
70
+ isPageLoadingLocked: import("vue").ComputedRef<boolean>;
60
71
  items: import("vue").ComputedRef<VibeViewerItem[]>;
61
72
  lockPageLoading: () => void;
62
73
  loading: import("vue").ComputedRef<boolean>;
@@ -3,6 +3,7 @@ import type { VibeViewerItem } from '../viewer';
3
3
  export declare function useVibeMasonryList(options: {
4
4
  active: Ref<boolean>;
5
5
  allowExhaustedNextPageRefresh: Ref<boolean>;
6
+ bottomLoadBufferPx: Ref<number | undefined>;
6
7
  items: Ref<VibeViewerItem[]>;
7
8
  activeIndex: Ref<number>;
8
9
  loading: Ref<boolean>;
@@ -15,6 +16,7 @@ export declare function useVibeMasonryList(options: {
15
16
  requestPreviousPage: Ref<(() => void | Promise<void>) | null | undefined>;
16
17
  setActiveIndex: (index: number) => void;
17
18
  }): {
19
+ autoScroll: (speed: number) => void;
18
20
  columnWidth: import("vue").ComputedRef<number>;
19
21
  containerHeight: import("vue").ComputedRef<number>;
20
22
  getCardStyle: (index: number) => {
@@ -3,7 +3,7 @@ import type { VibeViewerItem } from '../viewer';
3
3
  import type { VibeAssetErrorReporter, VibeAssetLoadReporter } from './assetErrors';
4
4
  import { formatPlaybackTime } from './format';
5
5
  import type { VibeLoadPhase } from './removalState';
6
- export type { VibeResolveParams, VibeResolveResult, VibeEmit, VibeHandle, VibeInitialState, VibeLoadPhase, VibeProps, VibeSurfaceMode, } from './useDataSource';
6
+ export type { VibeResolveParams, VibeResolveResult, VibeEmit, VibeHandle, VibeInitialState, VibeFillMode, VibeLoadPhase, VibeProps, VibeSurfaceMode, } from './useDataSource';
7
7
  export type { VibeAssetErrorKind } from './loadError';
8
8
  export type { VibeStatus } from './removalState';
9
9
  export type { VibeAssetErrorEvent, VibeAssetErrorReporter, VibeAssetErrorSurface, VibeAssetLoadEvent, VibeAssetLoadReporter, VibeAssetLoadSurface } from './assetErrors';