@jiaozhiye/qm-design-react 1.11.1 → 1.11.2

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.
@@ -0,0 +1,3 @@
1
+ import VirtualList from './src/virtual-list';
2
+ export type { VirtualListProps } from './src/virtual-list';
3
+ export default VirtualList;
@@ -0,0 +1,133 @@
1
+ export * from './utils';
2
+ type ScrollDirection = 'forward' | 'backward';
3
+ type ScrollAlignment = 'start' | 'center' | 'end' | 'auto';
4
+ type ScrollBehavior = 'auto' | 'smooth';
5
+ export interface ScrollToOptions {
6
+ align?: ScrollAlignment;
7
+ behavior?: ScrollBehavior;
8
+ }
9
+ type ScrollToOffsetOptions = ScrollToOptions;
10
+ type ScrollToIndexOptions = ScrollToOptions;
11
+ export interface Range {
12
+ startIndex: number;
13
+ endIndex: number;
14
+ overscan: number;
15
+ count: number;
16
+ }
17
+ type Key = number | string | bigint;
18
+ export interface VirtualItem {
19
+ key: Key;
20
+ index: number;
21
+ start: number;
22
+ end: number;
23
+ size: number;
24
+ lane: number;
25
+ }
26
+ export interface Rect {
27
+ width: number;
28
+ height: number;
29
+ }
30
+ export declare const defaultKeyExtractor: (index: number) => number;
31
+ export declare const defaultRangeExtractor: (range: Range) => number[];
32
+ export declare const observeElementRect: <T extends Element>(instance: Virtualizer<T, any>, cb: (rect: Rect) => void) => (() => void) | undefined;
33
+ export declare const observeWindowRect: (instance: Virtualizer<Window, any>, cb: (rect: Rect) => void) => (() => void) | undefined;
34
+ type ObserveOffsetCallBack = (offset: number, isScrolling: boolean) => void;
35
+ export declare const observeElementOffset: <T extends Element>(instance: Virtualizer<T, any>, cb: ObserveOffsetCallBack) => (() => void) | undefined;
36
+ export declare const observeWindowOffset: (instance: Virtualizer<Window, any>, cb: ObserveOffsetCallBack) => (() => void) | undefined;
37
+ export declare const measureElement: <TItemElement extends Element>(element: TItemElement, entry: ResizeObserverEntry | undefined, instance: Virtualizer<any, TItemElement>) => number;
38
+ export declare const windowScroll: <T extends Window>(offset: number, { adjustments, behavior }: {
39
+ adjustments?: number | undefined;
40
+ behavior?: ScrollBehavior | undefined;
41
+ }, instance: Virtualizer<T, any>) => void;
42
+ export declare const elementScroll: <T extends Element>(offset: number, { adjustments, behavior }: {
43
+ adjustments?: number | undefined;
44
+ behavior?: ScrollBehavior | undefined;
45
+ }, instance: Virtualizer<T, any>) => void;
46
+ export interface VirtualizerOptions<TScrollElement extends Element | Window, TItemElement extends Element> {
47
+ count: number;
48
+ getScrollElement: () => TScrollElement | null;
49
+ estimateSize: (index: number) => number;
50
+ scrollToFn: (offset: number, options: {
51
+ adjustments?: number;
52
+ behavior?: ScrollBehavior;
53
+ }, instance: Virtualizer<TScrollElement, TItemElement>) => void;
54
+ observeElementRect: (instance: Virtualizer<TScrollElement, TItemElement>, cb: (rect: Rect) => void) => void | (() => void);
55
+ observeElementOffset: (instance: Virtualizer<TScrollElement, TItemElement>, cb: ObserveOffsetCallBack) => void | (() => void);
56
+ debug?: boolean;
57
+ initialRect?: Rect;
58
+ onChange?: (instance: Virtualizer<TScrollElement, TItemElement>, sync: boolean) => void;
59
+ measureElement?: (element: TItemElement, entry: ResizeObserverEntry | undefined, instance: Virtualizer<TScrollElement, TItemElement>) => number;
60
+ overscan?: number;
61
+ horizontal?: boolean;
62
+ paddingStart?: number;
63
+ paddingEnd?: number;
64
+ scrollPaddingStart?: number;
65
+ scrollPaddingEnd?: number;
66
+ initialOffset?: number | (() => number);
67
+ getItemKey?: (index: number) => Key;
68
+ rangeExtractor?: (range: Range) => Array<number>;
69
+ scrollMargin?: number;
70
+ gap?: number;
71
+ indexAttribute?: string;
72
+ initialMeasurementsCache?: Array<VirtualItem>;
73
+ lanes?: number;
74
+ isScrollingResetDelay?: number;
75
+ useScrollendEvent?: boolean;
76
+ enabled?: boolean;
77
+ isRtl?: boolean;
78
+ }
79
+ export declare class Virtualizer<TScrollElement extends Element | Window, TItemElement extends Element> {
80
+ private unsubs;
81
+ options: Required<VirtualizerOptions<TScrollElement, TItemElement>>;
82
+ scrollElement: TScrollElement | null;
83
+ targetWindow: (Window & typeof globalThis) | null;
84
+ isScrolling: boolean;
85
+ private scrollToIndexTimeoutId;
86
+ measurementsCache: Array<VirtualItem>;
87
+ private itemSizeCache;
88
+ private pendingMeasuredCacheIndexes;
89
+ scrollRect: Rect | null;
90
+ scrollOffset: number | null;
91
+ scrollDirection: ScrollDirection | null;
92
+ private scrollAdjustments;
93
+ shouldAdjustScrollPositionOnItemSizeChange: undefined | ((item: VirtualItem, delta: number, instance: Virtualizer<TScrollElement, TItemElement>) => boolean);
94
+ elementsCache: Map<Key, TItemElement>;
95
+ private observer;
96
+ range: {
97
+ startIndex: number;
98
+ endIndex: number;
99
+ } | null;
100
+ constructor(opts: VirtualizerOptions<TScrollElement, TItemElement>);
101
+ setOptions: (opts: VirtualizerOptions<TScrollElement, TItemElement>) => void;
102
+ private notify;
103
+ private maybeNotify;
104
+ private cleanup;
105
+ _didMount: () => () => void;
106
+ _willUpdate: () => void;
107
+ private getSize;
108
+ private getScrollOffset;
109
+ private getFurthestMeasurement;
110
+ private getMeasurementOptions;
111
+ private getMeasurements;
112
+ calculateRange: () => {
113
+ startIndex: number;
114
+ endIndex: number;
115
+ } | null;
116
+ private getIndexes;
117
+ indexFromElement: (node: TItemElement) => number;
118
+ private _measureElement;
119
+ resizeItem: (index: number, size: number) => void;
120
+ measureElement: (node: TItemElement | null | undefined) => void;
121
+ getVirtualItems: () => VirtualItem[];
122
+ getVirtualItemForOffset: (offset: number) => VirtualItem | undefined;
123
+ getOffsetForAlignment: (toOffset: number, align: ScrollAlignment) => number;
124
+ getOffsetForIndex: (index: number, align?: ScrollAlignment) => readonly [number, "auto"] | readonly [number, "center" | "start" | "end"] | undefined;
125
+ private isDynamicMode;
126
+ private cancelScrollToIndex;
127
+ scrollToOffset: (toOffset: number, { align, behavior }?: ScrollToOffsetOptions) => void;
128
+ scrollToIndex: (index: number, { align: initialAlign, behavior }?: ScrollToIndexOptions) => void;
129
+ scrollBy: (delta: number, { behavior }?: ScrollToOffsetOptions) => void;
130
+ getTotalSize: () => number;
131
+ private _scrollToOffset;
132
+ measure: () => void;
133
+ }
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ type IProps = {
3
+ className?: string;
4
+ style?: React.CSSProperties;
5
+ children?: React.ReactNode;
6
+ };
7
+ declare const ListItem: React.FC<IProps>;
8
+ export default ListItem;
@@ -0,0 +1,5 @@
1
+ import { Virtualizer } from './core';
2
+ import type { PartialKeys, VirtualizerOptions } from './core';
3
+ export * from './core';
4
+ export declare const useVirtualizer: <TScrollElement extends Element, TItemElement extends Element>(options: PartialKeys<VirtualizerOptions<TScrollElement, TItemElement>, "scrollToFn" | "observeElementRect" | "observeElementOffset">) => Virtualizer<TScrollElement, TItemElement>;
5
+ export declare const useWindowVirtualizer: <TItemElement extends Element>(options: PartialKeys<VirtualizerOptions<Window, TItemElement>, "getScrollElement" | "scrollToFn" | "observeElementRect" | "observeElementOffset">) => Virtualizer<Window, TItemElement>;
@@ -0,0 +1,12 @@
1
+ import { AnyFunction } from '../../_utils/types';
2
+ export type NoInfer<A> = [A][A extends any ? 0 : never];
3
+ export type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
4
+ export declare function memo<TDeps extends ReadonlyArray<any>, TResult>(getDeps: () => [...TDeps], fn: (...args: NoInfer<[...TDeps]>) => TResult, opts: {
5
+ key: false | string;
6
+ debug?: () => boolean;
7
+ onChange?: (result: TResult) => void;
8
+ initialDeps?: TDeps;
9
+ }): () => TResult;
10
+ export declare function notUndefined<T>(value: T | undefined, msg?: string): T;
11
+ export declare const approxEqual: (a: number, b: number) => boolean;
12
+ export declare const debounce: (targetWindow: Window & typeof globalThis, fn: AnyFunction<any>, ms: number) => (this: any, ...args: Array<any>) => void;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { type Virtualizer } from './useVirtual';
3
+ import type { IRecord } from '../../table/src/table/types';
4
+ import ListItem from './list-item';
5
+ type IProps = {
6
+ height?: number;
7
+ itemHeight?: number;
8
+ dataSource?: IRecord[];
9
+ className?: string;
10
+ style?: React.CSSProperties;
11
+ children?: React.ReactNode;
12
+ renderItem?: (item: IRecord, index: number) => React.ReactNode;
13
+ onScroll?: (instance: Virtualizer<Element, Element>, sync: boolean) => void;
14
+ };
15
+ export type VirtualListProps = IProps;
16
+ declare const VirtualList: React.FC<IProps> & {
17
+ Item: typeof ListItem;
18
+ };
19
+ export default VirtualList;
@@ -0,0 +1,16 @@
1
+ /*
2
+ * @Author: 焦质晔
3
+ * @Date: 2024-12-02 09:06:20
4
+ * @Last Modified by: 焦质晔
5
+ * @Last Modified time: 2024-12-02 13:16:55
6
+ */
7
+ @import '../../style/common';
8
+
9
+ @prefix-virtual-list: ~'@{qm-prefix}-virtual-list';
10
+
11
+ .@{prefix-virtual-list} {
12
+ .reset-container();
13
+ .list-item {
14
+ list-style: none;
15
+ }
16
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jiaozhiye/qm-design-react",
3
- "version": "1.11.1",
3
+ "version": "1.11.2",
4
4
  "description": "A Component Library for React",
5
5
  "keywords": [
6
6
  "React",