@pinnacle0/web-ui 0.7.12 → 0.7.13

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.
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import { Footer } from "./Footer";
3
3
  import { ReactUtil } from "../../../util/ReactUtil";
4
+ import { useGap } from "../useGap";
4
5
  export const Content = ReactUtil.memo("Content", (props) => {
5
6
  const { data, emptyPlaceholder, renderItem, gap, rowKey, loading = false, endOfListMessage, onPullUpLoading, hasNextPageMessage, endReachThreshold = 4 } = props;
6
7
  const [dataKey, setDataKey] = React.useState(createKey());
@@ -40,20 +41,6 @@ export const Content = ReactUtil.memo("Content", (props) => {
40
41
  createItem(second),
41
42
  data.length > 0 && React.createElement(Footer, { loading: loading, hasNextPage: onPullUpLoading !== undefined, endOfListMessage: endOfListMessage, hasNextPageMessage: hasNextPageMessage })))));
42
43
  });
43
- function useGap(gap) {
44
- if (!gap)
45
- return {};
46
- if (Array.isArray(gap)) {
47
- return { marginTop: gap[0], marginBottom: gap[0], marginLeft: gap[1], marginRight: gap[1] };
48
- }
49
- else if (typeof gap === "number") {
50
- return { marginTop: gap, marginBottom: gap, marginLeft: gap, marginRight: gap };
51
- }
52
- else {
53
- const { top, bottom, left, right } = gap;
54
- return { marginTop: top, marginBottom: bottom, marginLeft: left, marginRight: right };
55
- }
56
- }
57
44
  function splitByLast(data, last) {
58
45
  const pair = data.map((data, index) => ({ data, index }));
59
46
  const from = Math.max(0, data.length - last);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/FlatList/Content/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/FlatList/Content/index.tsx"],"names":[],"mappings":"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"}
@@ -2,4 +2,4 @@ import React from "react";
2
2
  import type { FlatListProps } from "./type";
3
3
  import "./index.less";
4
4
  export * from "./type";
5
- export declare const FlatList: <T extends object>({ renderItem, data, rowKey, id, className, gap, refreshing: exactRefreshing, loading, onPullDownRefresh, onPullUpLoading, endReachThreshold, emptyPlaceholder, pullDownMessage, pullUpMessage, endOfListMessage, style, wrapperStyle, }: FlatListProps<T>) => React.JSX.Element;
5
+ export declare const FlatList: <T extends object>({ renderItem, data, rowKey, id, className, gap, refreshing: exactRefreshing, loading, onPullDownRefresh, onPullUpLoading, endReachThreshold, emptyPlaceholder, pullDownMessage, pullUpMessage, endOfListMessage, style, wrapperStyle, virtual, virtualItemSize, virtualOverscan, virtualInitialRect, virtualListRef, }: FlatListProps<T>) => React.JSX.Element;
@@ -3,14 +3,17 @@ import { classNames } from "../../util/ClassNames";
3
3
  import { useTransform } from "../../hooks/useTransform";
4
4
  import { useScrollListSwipe } from "./hook/useScrollListSwipe";
5
5
  import { Content } from "./Content";
6
+ import { Footer } from "./Content/Footer";
6
7
  import { FloatingLoader } from "./FloatingLoader";
7
8
  import { Refresh } from "./Refresh";
8
9
  import { useRefreshing } from "./hook/useRefreshing";
9
10
  import "./index.less";
10
11
  import { ReactUtil } from "../../util/ReactUtil";
12
+ import { VirtualList } from "../VirtualList";
13
+ import { usePaddingGap } from "./useGap";
11
14
  export * from "./type";
12
15
  const PULL_DOWN_REFRESH_THRESHOLD = 50;
13
- export const FlatList = ReactUtil.memo("FlatList", ({ renderItem, data, rowKey, id, className, gap, refreshing: exactRefreshing, loading, onPullDownRefresh, onPullUpLoading, endReachThreshold, emptyPlaceholder, pullDownMessage, pullUpMessage, endOfListMessage, style, wrapperStyle, }) => {
16
+ export const FlatList = ReactUtil.memo("FlatList", ({ renderItem, data, rowKey, id, className, gap, refreshing: exactRefreshing, loading, onPullDownRefresh, onPullUpLoading, endReachThreshold, emptyPlaceholder, pullDownMessage, pullUpMessage, endOfListMessage, style, wrapperStyle, virtual, virtualItemSize, virtualOverscan, virtualInitialRect, virtualListRef, }) => {
14
17
  const refreshing = useRefreshing(exactRefreshing ?? false, 1000);
15
18
  const [showFloatingLoader, setShowFloatingLoader] = React.useState(refreshing);
16
19
  const scrollRef = React.useRef(null);
@@ -50,6 +53,21 @@ export const FlatList = ReactUtil.memo("FlatList", ({ renderItem, data, rowKey,
50
53
  transit.clear();
51
54
  refreshing && setShowFloatingLoader(true);
52
55
  };
56
+ const virtualItemStyle = usePaddingGap(gap);
57
+ const loadedData = React.useRef(null);
58
+ const onPullUpLoadingRef = React.useRef(onPullUpLoading);
59
+ onPullUpLoadingRef.current = !exactRefreshing ? onPullUpLoading : undefined;
60
+ const handleVirtualItemsChange = React.useCallback((virtualItems) => {
61
+ if (!onPullUpLoadingRef.current || data.length === 0)
62
+ return;
63
+ const lastVirtualItem = virtualItems[virtualItems.length - 1];
64
+ if (!lastVirtualItem || lastVirtualItem.index < data.length - (endReachThreshold ?? 4))
65
+ return;
66
+ if (loadedData.current === data)
67
+ return;
68
+ loadedData.current = data;
69
+ onPullUpLoadingRef.current();
70
+ }, [data, endReachThreshold]);
53
71
  React.useEffect(() => {
54
72
  if (refreshing) {
55
73
  if (previousBoundary.current === "top") {
@@ -70,7 +88,8 @@ export const FlatList = ReactUtil.memo("FlatList", ({ renderItem, data, rowKey,
70
88
  exactRefreshing !== undefined && (React.createElement(React.Fragment, null,
71
89
  React.createElement(FloatingLoader, { show: showFloatingLoader }),
72
90
  React.createElement(Refresh, { ref: updateRefreshHeight, refreshing: refreshing, message: pullDownMessage }))),
73
- React.createElement("div", { className: "g-flat-list-scrollable", ref: scrollRef, style: style, onScroll: handleScroll },
74
- React.createElement(Content, { data: data, rowKey: rowKey, renderItem: renderItem, gap: gap, emptyPlaceholder: emptyPlaceholder, loading: loading, endOfListMessage: endOfListMessage, hasNextPageMessage: pullUpMessage, onPullUpLoading: !exactRefreshing ? onPullUpLoading : undefined, endReachThreshold: endReachThreshold })))));
91
+ virtual ? (data.length === 0 && emptyPlaceholder ? (React.createElement("div", { className: "g-flat-list-scrollable", ref: scrollRef, style: style, onScroll: handleScroll },
92
+ React.createElement("div", { className: "g-flat-list-content" }, emptyPlaceholder))) : (React.createElement(VirtualList, { data: data, rowKey: rowKey, renderItem: renderItem, fixedSize: virtualItemSize, overscan: virtualOverscan, initialRect: virtualInitialRect, listRef: virtualListRef, className: "g-flat-list-scrollable g-flat-list-virtual-scrollable", innerClassName: "g-flat-list-virtual-content", itemWrapperClassName: "g-flat-list-item", itemWrapperStyle: virtualItemStyle, style: style, scrollRef: scrollRef, onScroll: handleScroll, onVirtualItemsChange: handleVirtualItemsChange, footerSize: 50, footer: data.length > 0 ? (React.createElement(Footer, { loading: loading, hasNextPage: !exactRefreshing && onPullUpLoading !== undefined, endOfListMessage: endOfListMessage, hasNextPageMessage: pullUpMessage })) : undefined }))) : (React.createElement("div", { className: "g-flat-list-scrollable", ref: scrollRef, style: style, onScroll: handleScroll },
93
+ React.createElement(Content, { data: data, rowKey: rowKey, renderItem: renderItem, gap: gap, emptyPlaceholder: emptyPlaceholder, loading: loading, endOfListMessage: endOfListMessage, hasNextPageMessage: pullUpMessage, onPullUpLoading: !exactRefreshing ? onPullUpLoading : undefined, endReachThreshold: endReachThreshold }))))));
75
94
  });
76
95
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/FlatList/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/FlatList/index.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  display: flex;
4
4
  flex-flow: column nowrap;
5
5
  flex: 1;
6
+ min-height: 0;
6
7
  overflow: hidden;
7
8
  width: 100%;
8
9
  height: 100%;
@@ -11,6 +12,7 @@
11
12
  display: flex;
12
13
  flex-flow: column nowrap;
13
14
  flex: 1;
15
+ min-height: 0;
14
16
  max-height: 100%;
15
17
  will-change: transform;
16
18
  transition-timing-function: cubic-bezier(0, 0.89, 0.26, 1.02);
@@ -19,6 +21,7 @@
19
21
  .g-flat-list-scrollable {
20
22
  display: flex;
21
23
  height: 100%;
24
+ min-height: 0;
22
25
  overflow: auto;
23
26
  overscroll-behavior: none;
24
27
  flex-flow: column nowrap;
@@ -26,6 +29,14 @@
26
29
  .g-flat-list-content {
27
30
  height: 100%;
28
31
  }
32
+
33
+ &.g-flat-list-virtual-scrollable {
34
+ display: block;
35
+
36
+ .g-flat-list-virtual-content {
37
+ min-height: 100%;
38
+ }
39
+ }
29
40
  }
30
41
  }
31
42
  }
@@ -1,4 +1,5 @@
1
1
  import type React from "react";
2
+ import type { VirtualListHandler } from "../VirtualList";
2
3
  export type Boundary = "top" | "bottom";
3
4
  export type Gap = number | [number, number] | {
4
5
  top?: number;
@@ -68,6 +69,31 @@ export interface FlatListProps<T> {
68
69
  * Default: 4
69
70
  */
70
71
  endReachThreshold?: number;
72
+ /**
73
+ * Enable virtual rendering for large data sets.
74
+ */
75
+ virtual?: boolean;
76
+ /**
77
+ * Estimated height of each virtual item.
78
+ * Default: 100
79
+ */
80
+ virtualItemSize?: (index: number) => number;
81
+ /**
82
+ * Number of virtual items rendered outside of the viewport.
83
+ * Default: 5
84
+ */
85
+ virtualOverscan?: number;
86
+ /**
87
+ * Optional initial viewport size for virtual rendering.
88
+ */
89
+ virtualInitialRect?: {
90
+ width: number;
91
+ height: number;
92
+ };
93
+ /**
94
+ * Ref for the underlying virtualizer.
95
+ */
96
+ virtualListRef?: React.Ref<VirtualListHandler>;
71
97
  className?: string;
72
98
  id?: string;
73
99
  style?: React.CSSProperties;
@@ -0,0 +1,4 @@
1
+ import type React from "react";
2
+ import type { Gap } from "./type";
3
+ export declare function useGap(gap?: Gap): React.CSSProperties;
4
+ export declare function usePaddingGap(gap?: Gap): React.CSSProperties;
@@ -0,0 +1,29 @@
1
+ export function useGap(gap) {
2
+ if (!gap)
3
+ return {};
4
+ if (Array.isArray(gap)) {
5
+ return { marginTop: gap[0], marginBottom: gap[0], marginLeft: gap[1], marginRight: gap[1] };
6
+ }
7
+ else if (typeof gap === "number") {
8
+ return { marginTop: gap, marginBottom: gap, marginLeft: gap, marginRight: gap };
9
+ }
10
+ else {
11
+ const { top, bottom, left, right } = gap;
12
+ return { marginTop: top, marginBottom: bottom, marginLeft: left, marginRight: right };
13
+ }
14
+ }
15
+ export function usePaddingGap(gap) {
16
+ if (!gap)
17
+ return {};
18
+ if (Array.isArray(gap)) {
19
+ return { paddingTop: gap[0], paddingBottom: gap[0], paddingLeft: gap[1], paddingRight: gap[1], boxSizing: "border-box" };
20
+ }
21
+ else if (typeof gap === "number") {
22
+ return { paddingTop: gap, paddingBottom: gap, paddingLeft: gap, paddingRight: gap, boxSizing: "border-box" };
23
+ }
24
+ else {
25
+ const { top, bottom, left, right } = gap;
26
+ return { paddingTop: top, paddingBottom: bottom, paddingLeft: left, paddingRight: right, boxSizing: "border-box" };
27
+ }
28
+ }
29
+ //# sourceMappingURL=useGap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGap.js","sourceRoot":"","sources":["../../../src/core/FlatList/useGap.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,MAAM,CAAC,GAAS;IAC5B,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC;IAC9F,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,EAAC,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAC,CAAC;IAClF,CAAC;SAAM,CAAC;QACJ,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,GAAG,CAAC;QACvC,OAAO,EAAC,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAC,CAAC;IACxF,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAS;IACnC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAC,CAAC;IAC3H,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,EAAC,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAC,CAAC;IAC/G,CAAC;SAAM,CAAC;QACJ,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,GAAG,CAAC;QACvC,OAAO,EAAC,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAC,CAAC;IACrH,CAAC;AACL,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import React from "react";
2
2
  import type { ComponentType } from "react";
3
- import type { Virtualizer } from "@tanstack/react-virtual";
4
- import type { StringKey } from "../../internal/type";
3
+ import type { VirtualItem, Virtualizer } from "@tanstack/react-virtual";
5
4
  import "./index.less";
6
5
  export type Direction = "horizontal" | "vertical";
7
6
  export type VirtualListHandler = Virtualizer<HTMLElement, HTMLElement>;
@@ -16,15 +15,26 @@ export interface Props<T extends object> {
16
15
  };
17
16
  data: T[];
18
17
  renderItem: ComponentType<ItemProps<T>>;
19
- rowKey?: StringKey<T> | "index";
18
+ rowKey?: keyof T | "index";
20
19
  direction?: Direction;
21
20
  fixedSize?: (index: number) => number;
22
21
  overscan?: number;
23
22
  id?: string;
24
23
  className?: string;
24
+ style?: React.CSSProperties;
25
+ innerClassName?: string;
26
+ itemClassName?: string;
27
+ itemStyle?: React.CSSProperties;
28
+ itemWrapperClassName?: string;
29
+ itemWrapperStyle?: React.CSSProperties;
30
+ footer?: React.ReactNode;
31
+ footerSize?: number;
32
+ onScroll?: React.UIEventHandler<HTMLDivElement>;
33
+ onVirtualItemsChange?: (items: VirtualItem[]) => void;
34
+ scrollRef?: React.Ref<HTMLDivElement>;
25
35
  listRef?: React.Ref<VirtualListHandler>;
26
36
  }
27
37
  /**
28
38
  * Efficiently rendering large lists and tabular data
29
39
  */
30
- export declare const VirtualList: <T extends object>({ data, rowKey, direction, renderItem: renderData, overscan, initialRect, fixedSize, id, className, listRef }: Props<T>) => React.JSX.Element;
40
+ export declare const VirtualList: <T extends object>({ data, rowKey, direction, renderItem: renderData, overscan, initialRect, fixedSize, id, className, style, innerClassName, itemClassName, itemStyle, itemWrapperClassName, itemWrapperStyle, footer, footerSize, onScroll, onVirtualItemsChange, scrollRef, listRef, }: Props<T>) => React.JSX.Element;
@@ -7,7 +7,7 @@ const DEFAULT_ITEM_SIZE = 100;
7
7
  /**
8
8
  * Efficiently rendering large lists and tabular data
9
9
  */
10
- export const VirtualList = ReactUtil.memo("VirtualList", ({ data, rowKey = "index", direction = "vertical", renderItem: renderData, overscan = 5, initialRect = { width: 0, height: 0 }, fixedSize, id, className, listRef }) => {
10
+ export const VirtualList = ReactUtil.memo("VirtualList", ({ data, rowKey = "index", direction = "vertical", renderItem: renderData, overscan = 5, initialRect = { width: 0, height: 0 }, fixedSize, id, className, style, innerClassName, itemClassName, itemStyle, itemWrapperClassName, itemWrapperStyle, footer, footerSize = 0, onScroll, onVirtualItemsChange, scrollRef, listRef, }) => {
11
11
  const Item = renderData;
12
12
  const parentRef = React.useRef(null);
13
13
  const horizontal = direction === "horizontal";
@@ -20,10 +20,23 @@ export const VirtualList = ReactUtil.memo("VirtualList", ({ data, rowKey = "inde
20
20
  overscan,
21
21
  });
22
22
  React.useImperativeHandle(listRef, () => virtualizer);
23
+ React.useImperativeHandle(scrollRef, () => parentRef.current);
23
24
  const getItemKey = (index) => (rowKey === "index" ? index : data[index][rowKey]);
24
- return (React.createElement("div", { id: id, className: classNames("g-virtual-list", className, { horizontal }), ref: parentRef },
25
- React.createElement("div", { className: "g-virtual-list-inner", style: horizontal ? { width: virtualizer.getTotalSize() } : { height: virtualizer.getTotalSize() } }, virtualizer.getVirtualItems().map(virtualRow => (React.createElement("div", { className: "g-virtual-list-item", key: getItemKey(virtualRow.index), ref: virtualizer.measureElement, "data-index": virtualRow.index, style: { transform: horizontal ? `translateX(${virtualRow.start}px)` : `translateY(${virtualRow.start}px)` } },
26
- React.createElement("div", { className: "g-virtual-list-item-wrapper" },
27
- React.createElement(Item, { data: data[virtualRow.index], index: virtualRow.index }))))))));
25
+ const virtualItems = virtualizer.getVirtualItems();
26
+ const totalSize = virtualizer.getTotalSize() + footerSize;
27
+ const innerSizeStyle = horizontal ? { width: totalSize } : { height: totalSize };
28
+ const footerStyle = horizontal ? { transform: `translateX(${virtualizer.getTotalSize()}px)` } : { transform: `translateY(${virtualizer.getTotalSize()}px)` };
29
+ React.useEffect(() => {
30
+ onVirtualItemsChange?.(virtualItems);
31
+ }, [onVirtualItemsChange, virtualItems]);
32
+ return (React.createElement("div", { id: id, className: classNames("g-virtual-list", className, { horizontal }), ref: parentRef, style: style, onScroll: onScroll },
33
+ React.createElement("div", { className: classNames("g-virtual-list-inner", innerClassName), style: innerSizeStyle },
34
+ virtualItems.map(virtualRow => (React.createElement("div", { className: classNames("g-virtual-list-item", itemClassName), key: getItemKey(virtualRow.index), ref: virtualizer.measureElement, "data-index": virtualRow.index, style: {
35
+ ...itemStyle,
36
+ transform: horizontal ? `translateX(${virtualRow.start}px)` : `translateY(${virtualRow.start}px)`,
37
+ } },
38
+ React.createElement("div", { className: classNames("g-virtual-list-item-wrapper", itemWrapperClassName), style: itemWrapperStyle },
39
+ React.createElement(Item, { data: data[virtualRow.index], index: virtualRow.index }))))),
40
+ footer && (React.createElement("div", { className: "g-virtual-list-item", style: footerStyle }, footer)))));
28
41
  });
29
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/VirtualList/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAIvD,OAAO,cAAc,CAAC;AACtB,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAE/C,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAwB9B;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CACrC,aAAa,EACb,CAAmB,EAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,SAAS,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,GAAG,CAAC,EAAE,WAAW,GAAG,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAW,EAAE,EAAE;IAC3L,MAAM,IAAI,GAAG,UAAU,CAAC;IACxB,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,SAAS,KAAK,YAAY,CAAC;IAC9C,MAAM,WAAW,GAAG,cAAc,CAA2B;QACzD,WAAW;QACX,UAAU;QACV,KAAK,EAAE,IAAI,CAAC,MAAM;QAClB,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO;QACzC,YAAY,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;QACpD,QAAQ;KACX,CAAC,CAAC;IAEH,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzF,OAAO,CACH,6BAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,gBAAgB,EAAE,SAAS,EAAE,EAAC,UAAU,EAAC,CAAC,EAAE,GAAG,EAAE,SAAS;QACzF,6BAAK,SAAS,EAAC,sBAAsB,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,WAAW,CAAC,YAAY,EAAE,EAAC,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,WAAW,CAAC,YAAY,EAAE,EAAC,IAC/H,WAAW,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAC7C,6BACI,SAAS,EAAC,qBAAqB,EAC/B,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,CAAoB,EACpD,GAAG,EAAE,WAAW,CAAC,cAAc,gBACnB,UAAU,CAAC,KAAK,EAC5B,KAAK,EAAE,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,cAAc,UAAU,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,cAAc,UAAU,CAAC,KAAK,KAAK,EAAC;YAE1G,6BAAK,SAAS,EAAC,6BAA6B;gBACxC,oBAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,GAAI,CAC7D,CACJ,CACT,CAAC,CACA,CACJ,CACT,CAAC;AACN,CAAC,CACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/VirtualList/index.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pinnacle0/web-ui",
3
- "version": "0.7.12",
3
+ "version": "0.7.13",
4
4
  "author": "Pinnacle",
5
5
  "license": "MIT",
6
6
  "sideEffects": [
@@ -41,11 +41,11 @@
41
41
  "history": "5.3.0",
42
42
  "jsdom": "27.0.0",
43
43
  "less": "4.4.1",
44
- "react": "19.2.1",
45
- "react-dom": "19.2.1",
44
+ "react": "19.2.5",
45
+ "react-dom": "19.2.5",
46
46
  "react-router-dom": "5.3.0",
47
- "@pinnacle0/devtool-util": "1.3.14",
48
- "@pinnacle0/webpack-util": "0.8.28"
47
+ "@pinnacle0/webpack-util": "0.8.29",
48
+ "@pinnacle0/devtool-util": "1.3.16"
49
49
  },
50
50
  "exports": {
51
51
  "./core/*": {