@fluentui/react-virtualizer 9.0.0-alpha.3 → 9.0.0-alpha.31

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 (163) hide show
  1. package/CHANGELOG.json +632 -2
  2. package/CHANGELOG.md +281 -3
  3. package/dist/index.d.ts +230 -29
  4. package/lib/Hooks.js +0 -1
  5. package/lib/Hooks.js.map +1 -1
  6. package/lib/Utilities.js +1 -0
  7. package/lib/Utilities.js.map +1 -0
  8. package/lib/Virtualizer.js +0 -1
  9. package/lib/Virtualizer.js.map +1 -1
  10. package/lib/VirtualizerScrollView.js +1 -0
  11. package/lib/VirtualizerScrollView.js.map +1 -0
  12. package/lib/VirtualizerScrollViewDynamic.js +1 -0
  13. package/lib/VirtualizerScrollViewDynamic.js.map +1 -0
  14. package/lib/components/Virtualizer/Virtualizer.js +5 -7
  15. package/lib/components/Virtualizer/Virtualizer.js.map +1 -1
  16. package/lib/components/Virtualizer/Virtualizer.types.js +1 -2
  17. package/lib/components/Virtualizer/Virtualizer.types.js.map +1 -1
  18. package/lib/components/Virtualizer/index.js +1 -2
  19. package/lib/components/Virtualizer/index.js.map +1 -1
  20. package/lib/components/Virtualizer/renderVirtualizer.js +12 -17
  21. package/lib/components/Virtualizer/renderVirtualizer.js.map +1 -1
  22. package/lib/components/Virtualizer/useVirtualizer.js +432 -354
  23. package/lib/components/Virtualizer/useVirtualizer.js.map +1 -1
  24. package/lib/components/Virtualizer/{useVirtualizerStyles.js → useVirtualizerStyles.styles.js} +3 -3
  25. package/lib/components/Virtualizer/useVirtualizerStyles.styles.js.map +1 -0
  26. package/lib/components/VirtualizerScrollView/VirtualizerScrollView.js +12 -0
  27. package/lib/components/VirtualizerScrollView/VirtualizerScrollView.js.map +1 -0
  28. package/lib/components/VirtualizerScrollView/VirtualizerScrollView.types.js +1 -0
  29. package/lib/components/VirtualizerScrollView/VirtualizerScrollView.types.js.map +1 -0
  30. package/lib/components/VirtualizerScrollView/index.js +5 -0
  31. package/lib/components/VirtualizerScrollView/index.js.map +1 -0
  32. package/lib/components/VirtualizerScrollView/renderVirtualizerScrollView.js +7 -0
  33. package/lib/components/VirtualizerScrollView/renderVirtualizerScrollView.js.map +1 -0
  34. package/lib/components/VirtualizerScrollView/useVirtualizerScrollView.js +76 -0
  35. package/lib/components/VirtualizerScrollView/useVirtualizerScrollView.js.map +1 -0
  36. package/lib/components/VirtualizerScrollView/useVirtualizerScrollViewStyles.styles.js +45 -0
  37. package/lib/components/VirtualizerScrollView/useVirtualizerScrollViewStyles.styles.js.map +1 -0
  38. package/lib/components/VirtualizerScrollViewDynamic/VirtualizerScrollViewDynamic.js +12 -0
  39. package/lib/components/VirtualizerScrollViewDynamic/VirtualizerScrollViewDynamic.js.map +1 -0
  40. package/lib/components/VirtualizerScrollViewDynamic/VirtualizerScrollViewDynamic.types.js +1 -0
  41. package/lib/components/VirtualizerScrollViewDynamic/VirtualizerScrollViewDynamic.types.js.map +1 -0
  42. package/lib/components/VirtualizerScrollViewDynamic/index.js +5 -0
  43. package/lib/components/VirtualizerScrollViewDynamic/index.js.map +1 -0
  44. package/lib/components/VirtualizerScrollViewDynamic/renderVirtualizerScrollViewDynamic.js +7 -0
  45. package/lib/components/VirtualizerScrollViewDynamic/renderVirtualizerScrollViewDynamic.js.map +1 -0
  46. package/lib/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamic.js +84 -0
  47. package/lib/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamic.js.map +1 -0
  48. package/lib/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamicStyles.styles.js +45 -0
  49. package/lib/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamicStyles.styles.js.map +1 -0
  50. package/lib/hooks/hooks.types.js +1 -0
  51. package/lib/hooks/hooks.types.js.map +1 -0
  52. package/lib/hooks/index.js +4 -1
  53. package/lib/hooks/index.js.map +1 -1
  54. package/lib/hooks/useDynamicVirtualizerMeasure.js +99 -0
  55. package/lib/hooks/useDynamicVirtualizerMeasure.js.map +1 -0
  56. package/lib/hooks/useIntersectionObserver.js +31 -40
  57. package/lib/hooks/useIntersectionObserver.js.map +1 -1
  58. package/lib/hooks/useResizeObserverRef.js +44 -0
  59. package/lib/hooks/useResizeObserverRef.js.map +1 -0
  60. package/lib/hooks/useVirtualizerMeasure.js +44 -0
  61. package/lib/hooks/useVirtualizerMeasure.js.map +1 -0
  62. package/lib/index.js +4 -2
  63. package/lib/index.js.map +1 -1
  64. package/lib/utilities/ImperativeScrolling/imperativeScrolling.js +32 -0
  65. package/lib/utilities/ImperativeScrolling/imperativeScrolling.js.map +1 -0
  66. package/lib/utilities/ImperativeScrolling/imperativeScrolling.types.js +1 -0
  67. package/lib/utilities/ImperativeScrolling/imperativeScrolling.types.js.map +1 -0
  68. package/lib/utilities/ImperativeScrolling/imperativeScrollingDynamic.js +45 -0
  69. package/lib/utilities/ImperativeScrolling/imperativeScrollingDynamic.js.map +1 -0
  70. package/lib/utilities/ImperativeScrolling/index.js +3 -0
  71. package/lib/utilities/ImperativeScrolling/index.js.map +1 -0
  72. package/lib/utilities/VirtualizerContext/VirtualizerContext.js +31 -0
  73. package/lib/utilities/VirtualizerContext/VirtualizerContext.js.map +1 -0
  74. package/lib/utilities/VirtualizerContext/index.js +2 -0
  75. package/lib/utilities/VirtualizerContext/index.js.map +1 -0
  76. package/lib/utilities/VirtualizerContext/types.js +3 -0
  77. package/lib/utilities/VirtualizerContext/types.js.map +1 -0
  78. package/lib/utilities/debounce.js +19 -0
  79. package/lib/utilities/debounce.js.map +1 -0
  80. package/lib/utilities/index.js +2 -0
  81. package/lib/utilities/index.js.map +1 -0
  82. package/lib-commonjs/Hooks.js +3 -5
  83. package/lib-commonjs/Hooks.js.map +1 -1
  84. package/lib-commonjs/Utilities.js +6 -0
  85. package/lib-commonjs/Utilities.js.map +1 -0
  86. package/lib-commonjs/Virtualizer.js +3 -5
  87. package/lib-commonjs/Virtualizer.js.map +1 -1
  88. package/lib-commonjs/VirtualizerScrollView.js +6 -0
  89. package/lib-commonjs/VirtualizerScrollView.js.map +1 -0
  90. package/lib-commonjs/VirtualizerScrollViewDynamic.js +6 -0
  91. package/lib-commonjs/VirtualizerScrollViewDynamic.js.map +1 -0
  92. package/lib-commonjs/components/Virtualizer/Virtualizer.js +13 -18
  93. package/lib-commonjs/components/Virtualizer/Virtualizer.js.map +1 -1
  94. package/lib-commonjs/components/Virtualizer/Virtualizer.types.js +3 -3
  95. package/lib-commonjs/components/Virtualizer/Virtualizer.types.js.map +1 -1
  96. package/lib-commonjs/components/Virtualizer/index.js +7 -9
  97. package/lib-commonjs/components/Virtualizer/index.js.map +1 -1
  98. package/lib-commonjs/components/Virtualizer/renderVirtualizer.js +25 -22
  99. package/lib-commonjs/components/Virtualizer/renderVirtualizer.js.map +1 -1
  100. package/lib-commonjs/components/Virtualizer/useVirtualizer.js +440 -361
  101. package/lib-commonjs/components/Virtualizer/useVirtualizer.js.map +1 -1
  102. package/lib-commonjs/components/Virtualizer/useVirtualizerStyles.styles.js +118 -0
  103. package/lib-commonjs/components/Virtualizer/useVirtualizerStyles.styles.js.map +1 -0
  104. package/lib-commonjs/components/VirtualizerScrollView/VirtualizerScrollView.js +19 -0
  105. package/lib-commonjs/components/VirtualizerScrollView/VirtualizerScrollView.js.map +1 -0
  106. package/lib-commonjs/components/VirtualizerScrollView/VirtualizerScrollView.types.js +4 -0
  107. package/lib-commonjs/components/VirtualizerScrollView/VirtualizerScrollView.types.js.map +1 -0
  108. package/lib-commonjs/components/VirtualizerScrollView/index.js +10 -0
  109. package/lib-commonjs/components/VirtualizerScrollView/index.js.map +1 -0
  110. package/lib-commonjs/components/VirtualizerScrollView/renderVirtualizerScrollView.js +15 -0
  111. package/lib-commonjs/components/VirtualizerScrollView/renderVirtualizerScrollView.js.map +1 -0
  112. package/lib-commonjs/components/VirtualizerScrollView/useVirtualizerScrollView.js +84 -0
  113. package/lib-commonjs/components/VirtualizerScrollView/useVirtualizerScrollView.js.map +1 -0
  114. package/lib-commonjs/components/VirtualizerScrollView/useVirtualizerScrollViewStyles.styles.js +65 -0
  115. package/lib-commonjs/components/VirtualizerScrollView/useVirtualizerScrollViewStyles.styles.js.map +1 -0
  116. package/lib-commonjs/components/VirtualizerScrollViewDynamic/VirtualizerScrollViewDynamic.js +19 -0
  117. package/lib-commonjs/components/VirtualizerScrollViewDynamic/VirtualizerScrollViewDynamic.js.map +1 -0
  118. package/lib-commonjs/components/VirtualizerScrollViewDynamic/VirtualizerScrollViewDynamic.types.js +4 -0
  119. package/lib-commonjs/components/VirtualizerScrollViewDynamic/VirtualizerScrollViewDynamic.types.js.map +1 -0
  120. package/lib-commonjs/components/VirtualizerScrollViewDynamic/index.js +10 -0
  121. package/lib-commonjs/components/VirtualizerScrollViewDynamic/index.js.map +1 -0
  122. package/lib-commonjs/components/VirtualizerScrollViewDynamic/renderVirtualizerScrollViewDynamic.js +15 -0
  123. package/lib-commonjs/components/VirtualizerScrollViewDynamic/renderVirtualizerScrollViewDynamic.js.map +1 -0
  124. package/lib-commonjs/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamic.js +92 -0
  125. package/lib-commonjs/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamic.js.map +1 -0
  126. package/lib-commonjs/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamicStyles.styles.js +65 -0
  127. package/lib-commonjs/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamicStyles.styles.js.map +1 -0
  128. package/lib-commonjs/hooks/hooks.types.js +4 -0
  129. package/lib-commonjs/hooks/hooks.types.js.map +1 -0
  130. package/lib-commonjs/hooks/index.js +7 -5
  131. package/lib-commonjs/hooks/index.js.map +1 -1
  132. package/lib-commonjs/hooks/useDynamicVirtualizerMeasure.js +105 -0
  133. package/lib-commonjs/hooks/useDynamicVirtualizerMeasure.js.map +1 -0
  134. package/lib-commonjs/hooks/useIntersectionObserver.js +39 -54
  135. package/lib-commonjs/hooks/useIntersectionObserver.js.map +1 -1
  136. package/lib-commonjs/hooks/useResizeObserverRef.js +51 -0
  137. package/lib-commonjs/hooks/useResizeObserverRef.js.map +1 -0
  138. package/lib-commonjs/hooks/useVirtualizerMeasure.js +51 -0
  139. package/lib-commonjs/hooks/useVirtualizerMeasure.js.map +1 -0
  140. package/lib-commonjs/index.js +36 -41
  141. package/lib-commonjs/index.js.map +1 -1
  142. package/lib-commonjs/utilities/ImperativeScrolling/imperativeScrolling.js +40 -0
  143. package/lib-commonjs/utilities/ImperativeScrolling/imperativeScrolling.js.map +1 -0
  144. package/lib-commonjs/utilities/ImperativeScrolling/imperativeScrolling.types.js +4 -0
  145. package/lib-commonjs/utilities/ImperativeScrolling/imperativeScrolling.types.js.map +1 -0
  146. package/lib-commonjs/utilities/ImperativeScrolling/imperativeScrollingDynamic.js +53 -0
  147. package/lib-commonjs/utilities/ImperativeScrolling/imperativeScrollingDynamic.js.map +1 -0
  148. package/lib-commonjs/utilities/ImperativeScrolling/index.js +8 -0
  149. package/lib-commonjs/utilities/ImperativeScrolling/index.js.map +1 -0
  150. package/lib-commonjs/utilities/VirtualizerContext/VirtualizerContext.js +46 -0
  151. package/lib-commonjs/utilities/VirtualizerContext/VirtualizerContext.js.map +1 -0
  152. package/lib-commonjs/utilities/VirtualizerContext/index.js +7 -0
  153. package/lib-commonjs/utilities/VirtualizerContext/index.js.map +1 -0
  154. package/lib-commonjs/utilities/VirtualizerContext/types.js +6 -0
  155. package/lib-commonjs/utilities/VirtualizerContext/types.js.map +1 -0
  156. package/lib-commonjs/utilities/debounce.js +27 -0
  157. package/lib-commonjs/utilities/debounce.js.map +1 -0
  158. package/lib-commonjs/utilities/index.js +7 -0
  159. package/lib-commonjs/utilities/index.js.map +1 -0
  160. package/package.json +14 -11
  161. package/lib/components/Virtualizer/useVirtualizerStyles.js.map +0 -1
  162. package/lib-commonjs/components/Virtualizer/useVirtualizerStyles.js +0 -115
  163. package/lib-commonjs/components/Virtualizer/useVirtualizerStyles.js.map +0 -1
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useVirtualizerScrollViewDynamic_unstable", {
6
+ enumerable: true,
7
+ get: ()=>useVirtualizerScrollViewDynamic_unstable
8
+ });
9
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
11
+ const _reactUtilities = require("@fluentui/react-utilities");
12
+ const _useVirtualizer = require("../Virtualizer/useVirtualizer");
13
+ const _hooks = require("../../Hooks");
14
+ const _utilities = require("../../Utilities");
15
+ function useVirtualizerScrollViewDynamic_unstable(props) {
16
+ const contextState = (0, _utilities.useVirtualizerContextState_unstable)(props.virtualizerContext);
17
+ const { imperativeRef , axis ='vertical' , reversed , imperativeVirtualizerRef } = props;
18
+ var _props_axis, _contextState_contextIndex;
19
+ const { virtualizerLength , bufferItems , bufferSize , scrollRef } = (0, _hooks.useDynamicVirtualizerMeasure)({
20
+ defaultItemSize: props.itemSize,
21
+ direction: (_props_axis = props.axis) !== null && _props_axis !== void 0 ? _props_axis : 'vertical',
22
+ getItemSize: props.getItemSize,
23
+ currentIndex: (_contextState_contextIndex = contextState === null || contextState === void 0 ? void 0 : contextState.contextIndex) !== null && _contextState_contextIndex !== void 0 ? _contextState_contextIndex : 0,
24
+ numItems: props.numItems
25
+ });
26
+ // Store the virtualizer length as a ref for imperative ref access
27
+ const virtualizerLengthRef = _react.useRef(virtualizerLength);
28
+ if (virtualizerLengthRef.current !== virtualizerLength) {
29
+ virtualizerLengthRef.current = virtualizerLength;
30
+ }
31
+ const scrollViewRef = (0, _reactUtilities.useMergedRefs)(_react.useRef(null), scrollRef);
32
+ const scrollCallbackRef = _react.useRef(null);
33
+ const _imperativeVirtualizerRef = (0, _reactUtilities.useMergedRefs)(_react.useRef(null), imperativeVirtualizerRef);
34
+ (0, _react.useImperativeHandle)(imperativeRef, ()=>{
35
+ var _imperativeVirtualizerRef_current;
36
+ return {
37
+ scrollTo (index, behavior = 'auto', callback) {
38
+ scrollCallbackRef.current = callback !== null && callback !== void 0 ? callback : null;
39
+ if (_imperativeVirtualizerRef.current) {
40
+ var _imperativeVirtualizerRef_current;
41
+ const progressiveSizes = _imperativeVirtualizerRef.current.progressiveSizes.current;
42
+ const totalSize = progressiveSizes && (progressiveSizes === null || progressiveSizes === void 0 ? void 0 : progressiveSizes.length) > 0 ? progressiveSizes[Math.max(progressiveSizes.length - 1, 0)] : 0;
43
+ _imperativeVirtualizerRef.current.setFlaggedIndex(index);
44
+ (0, _utilities.scrollToItemDynamic)({
45
+ index,
46
+ itemSizes: (_imperativeVirtualizerRef_current = _imperativeVirtualizerRef.current) === null || _imperativeVirtualizerRef_current === void 0 ? void 0 : _imperativeVirtualizerRef_current.nodeSizes,
47
+ totalSize,
48
+ scrollViewRef,
49
+ axis,
50
+ reversed,
51
+ behavior
52
+ });
53
+ }
54
+ },
55
+ currentIndex: (_imperativeVirtualizerRef_current = _imperativeVirtualizerRef.current) === null || _imperativeVirtualizerRef_current === void 0 ? void 0 : _imperativeVirtualizerRef_current.currentIndex,
56
+ virtualizerLength: virtualizerLengthRef
57
+ };
58
+ }, [
59
+ axis,
60
+ scrollViewRef,
61
+ reversed,
62
+ _imperativeVirtualizerRef
63
+ ]);
64
+ const handleRenderedIndex = (index)=>{
65
+ if (scrollCallbackRef.current) {
66
+ scrollCallbackRef.current(index);
67
+ }
68
+ };
69
+ const virtualizerState = (0, _useVirtualizer.useVirtualizer_unstable)({
70
+ ...props,
71
+ virtualizerLength,
72
+ bufferItems,
73
+ bufferSize,
74
+ scrollViewRef,
75
+ virtualizerContext: contextState,
76
+ imperativeVirtualizerRef: _imperativeVirtualizerRef,
77
+ onRenderedFlaggedIndex: handleRenderedIndex
78
+ });
79
+ return {
80
+ ...virtualizerState,
81
+ components: {
82
+ ...virtualizerState.components,
83
+ container: 'div'
84
+ },
85
+ container: (0, _reactUtilities.resolveShorthand)(props.container, {
86
+ required: true,
87
+ defaultProps: {
88
+ ref: scrollViewRef
89
+ }
90
+ })
91
+ };
92
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useVirtualizerScrollViewDynamic.js"],"sourcesContent":["import * as React from 'react';\nimport { resolveShorthand, useMergedRefs } from '@fluentui/react-utilities';\nimport { useVirtualizer_unstable } from '../Virtualizer/useVirtualizer';\nimport { useDynamicVirtualizerMeasure } from '../../Hooks';\nimport { useVirtualizerContextState_unstable, scrollToItemDynamic } from '../../Utilities';\nimport { useImperativeHandle } from 'react';\nexport function useVirtualizerScrollViewDynamic_unstable(props) {\n const contextState = useVirtualizerContextState_unstable(props.virtualizerContext);\n const { imperativeRef , axis ='vertical' , reversed , imperativeVirtualizerRef } = props;\n var _props_axis, _contextState_contextIndex;\n const { virtualizerLength , bufferItems , bufferSize , scrollRef } = useDynamicVirtualizerMeasure({\n defaultItemSize: props.itemSize,\n direction: (_props_axis = props.axis) !== null && _props_axis !== void 0 ? _props_axis : 'vertical',\n getItemSize: props.getItemSize,\n currentIndex: (_contextState_contextIndex = contextState === null || contextState === void 0 ? void 0 : contextState.contextIndex) !== null && _contextState_contextIndex !== void 0 ? _contextState_contextIndex : 0,\n numItems: props.numItems\n });\n // Store the virtualizer length as a ref for imperative ref access\n const virtualizerLengthRef = React.useRef(virtualizerLength);\n if (virtualizerLengthRef.current !== virtualizerLength) {\n virtualizerLengthRef.current = virtualizerLength;\n }\n const scrollViewRef = useMergedRefs(React.useRef(null), scrollRef);\n const scrollCallbackRef = React.useRef(null);\n const _imperativeVirtualizerRef = useMergedRefs(React.useRef(null), imperativeVirtualizerRef);\n useImperativeHandle(imperativeRef, ()=>{\n var _imperativeVirtualizerRef_current;\n return {\n scrollTo (index, behavior = 'auto', callback) {\n scrollCallbackRef.current = callback !== null && callback !== void 0 ? callback : null;\n if (_imperativeVirtualizerRef.current) {\n var _imperativeVirtualizerRef_current;\n const progressiveSizes = _imperativeVirtualizerRef.current.progressiveSizes.current;\n const totalSize = progressiveSizes && (progressiveSizes === null || progressiveSizes === void 0 ? void 0 : progressiveSizes.length) > 0 ? progressiveSizes[Math.max(progressiveSizes.length - 1, 0)] : 0;\n _imperativeVirtualizerRef.current.setFlaggedIndex(index);\n scrollToItemDynamic({\n index,\n itemSizes: (_imperativeVirtualizerRef_current = _imperativeVirtualizerRef.current) === null || _imperativeVirtualizerRef_current === void 0 ? void 0 : _imperativeVirtualizerRef_current.nodeSizes,\n totalSize,\n scrollViewRef,\n axis,\n reversed,\n behavior\n });\n }\n },\n currentIndex: (_imperativeVirtualizerRef_current = _imperativeVirtualizerRef.current) === null || _imperativeVirtualizerRef_current === void 0 ? void 0 : _imperativeVirtualizerRef_current.currentIndex,\n virtualizerLength: virtualizerLengthRef\n };\n }, [\n axis,\n scrollViewRef,\n reversed,\n _imperativeVirtualizerRef\n ]);\n const handleRenderedIndex = (index)=>{\n if (scrollCallbackRef.current) {\n scrollCallbackRef.current(index);\n }\n };\n const virtualizerState = useVirtualizer_unstable({\n ...props,\n virtualizerLength,\n bufferItems,\n bufferSize,\n scrollViewRef,\n virtualizerContext: contextState,\n imperativeVirtualizerRef: _imperativeVirtualizerRef,\n onRenderedFlaggedIndex: handleRenderedIndex\n });\n return {\n ...virtualizerState,\n components: {\n ...virtualizerState.components,\n container: 'div'\n },\n container: resolveShorthand(props.container, {\n required: true,\n defaultProps: {\n ref: scrollViewRef\n }\n })\n };\n}\n"],"names":["useVirtualizerScrollViewDynamic_unstable","props","contextState","useVirtualizerContextState_unstable","virtualizerContext","imperativeRef","axis","reversed","imperativeVirtualizerRef","_props_axis","_contextState_contextIndex","virtualizerLength","bufferItems","bufferSize","scrollRef","useDynamicVirtualizerMeasure","defaultItemSize","itemSize","direction","getItemSize","currentIndex","contextIndex","numItems","virtualizerLengthRef","React","useRef","current","scrollViewRef","useMergedRefs","scrollCallbackRef","_imperativeVirtualizerRef","useImperativeHandle","_imperativeVirtualizerRef_current","scrollTo","index","behavior","callback","progressiveSizes","totalSize","length","Math","max","setFlaggedIndex","scrollToItemDynamic","itemSizes","nodeSizes","handleRenderedIndex","virtualizerState","useVirtualizer_unstable","onRenderedFlaggedIndex","components","container","resolveShorthand","required","defaultProps","ref"],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ virtualizerScrollViewDynamicClassNames: ()=>virtualizerScrollViewDynamicClassNames,
13
+ useVirtualizerScrollViewDynamicStyles_unstable: ()=>useVirtualizerScrollViewDynamicStyles_unstable
14
+ });
15
+ const _useVirtualizerStylesStyles = require("../Virtualizer/useVirtualizerStyles.styles");
16
+ const _react = require("@griffel/react");
17
+ const virtualizerScrollViewDynamicClassName = 'fui-Virtualizer-Scroll-View-Dynamic';
18
+ const virtualizerScrollViewDynamicClassNames = {
19
+ ..._useVirtualizerStylesStyles.virtualizerClassNames,
20
+ container: `${virtualizerScrollViewDynamicClassName}__container`
21
+ };
22
+ const useStyles = /*#__PURE__*/ (0, _react["__styles"])({
23
+ base: {
24
+ mc9l5x: "f22iagw",
25
+ a9b677: "fly5x3f",
26
+ Bqenvij: "f1l02sjl"
27
+ },
28
+ vertical: {
29
+ Beiy3e4: "f1vx9l62",
30
+ Bmxbyg5: "f5zp4f"
31
+ },
32
+ horizontal: {
33
+ Beiy3e4: "f1063pyq",
34
+ B68tc82: "f1oy3dpc"
35
+ },
36
+ verticalReversed: {
37
+ Beiy3e4: "f1gkdon0",
38
+ Bmxbyg5: "f5zp4f"
39
+ },
40
+ horizontalReversed: {
41
+ Beiy3e4: "f1oztnx0",
42
+ B68tc82: "f1oy3dpc"
43
+ }
44
+ }, {
45
+ d: [
46
+ ".f22iagw{display:flex;}",
47
+ ".fly5x3f{width:100%;}",
48
+ ".f1l02sjl{height:100%;}",
49
+ ".f1vx9l62{flex-direction:column;}",
50
+ ".f5zp4f{overflow-y:auto;}",
51
+ ".f1063pyq{flex-direction:row;}",
52
+ ".f1oy3dpc{overflow-x:auto;}",
53
+ ".f1gkdon0{flex-direction:column-reverse;}",
54
+ ".f1oztnx0{flex-direction:row-reverse;}"
55
+ ]
56
+ });
57
+ const useVirtualizerScrollViewDynamicStyles_unstable = (state)=>{
58
+ const styles = useStyles();
59
+ // Default virtualizer styles base
60
+ (0, _useVirtualizerStylesStyles.useVirtualizerStyles_unstable)(state);
61
+ const containerStyle = state.axis === 'horizontal' ? state.reversed ? styles.horizontalReversed : styles.horizontal : state.reversed ? styles.verticalReversed : styles.vertical;
62
+ // Add container styles
63
+ state.container.className = (0, _react.mergeClasses)(virtualizerScrollViewDynamicClassNames.container, styles.base, containerStyle, state.container.className);
64
+ return state;
65
+ }; //# sourceMappingURL=useVirtualizerScrollViewDynamicStyles.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useVirtualizerScrollViewDynamicStyles.styles.js"],"sourcesContent":["import { useVirtualizerStyles_unstable, virtualizerClassNames } from '../Virtualizer/useVirtualizerStyles.styles';\nimport { __styles, mergeClasses } from '@griffel/react';\nconst virtualizerScrollViewDynamicClassName = 'fui-Virtualizer-Scroll-View-Dynamic';\nexport const virtualizerScrollViewDynamicClassNames = {\n ...virtualizerClassNames,\n container: `${virtualizerScrollViewDynamicClassName}__container`\n};\nconst useStyles = /*#__PURE__*/__styles({\n base: {\n mc9l5x: \"f22iagw\",\n a9b677: \"fly5x3f\",\n Bqenvij: \"f1l02sjl\"\n },\n vertical: {\n Beiy3e4: \"f1vx9l62\",\n Bmxbyg5: \"f5zp4f\"\n },\n horizontal: {\n Beiy3e4: \"f1063pyq\",\n B68tc82: \"f1oy3dpc\"\n },\n verticalReversed: {\n Beiy3e4: \"f1gkdon0\",\n Bmxbyg5: \"f5zp4f\"\n },\n horizontalReversed: {\n Beiy3e4: \"f1oztnx0\",\n B68tc82: \"f1oy3dpc\"\n }\n}, {\n d: [\".f22iagw{display:flex;}\", \".fly5x3f{width:100%;}\", \".f1l02sjl{height:100%;}\", \".f1vx9l62{flex-direction:column;}\", \".f5zp4f{overflow-y:auto;}\", \".f1063pyq{flex-direction:row;}\", \".f1oy3dpc{overflow-x:auto;}\", \".f1gkdon0{flex-direction:column-reverse;}\", \".f1oztnx0{flex-direction:row-reverse;}\"]\n});\n/**\n * Apply styling to the Virtualizer states\n */\nexport const useVirtualizerScrollViewDynamicStyles_unstable = state => {\n const styles = useStyles();\n // Default virtualizer styles base\n useVirtualizerStyles_unstable(state);\n const containerStyle = state.axis === 'horizontal' ? state.reversed ? styles.horizontalReversed : styles.horizontal : state.reversed ? styles.verticalReversed : styles.vertical;\n // Add container styles\n state.container.className = mergeClasses(virtualizerScrollViewDynamicClassNames.container, styles.base, containerStyle, state.container.className);\n return state;\n};\n//# sourceMappingURL=useVirtualizerScrollViewDynamicStyles.styles.js.map"],"names":["virtualizerScrollViewDynamicClassNames","useVirtualizerScrollViewDynamicStyles_unstable","virtualizerScrollViewDynamicClassName","virtualizerClassNames","container","useStyles","__styles","base","mc9l5x","a9b677","Bqenvij","vertical","Beiy3e4","Bmxbyg5","horizontal","B68tc82","verticalReversed","horizontalReversed","d","state","styles","useVirtualizerStyles_unstable","containerStyle","axis","reversed","className","mergeClasses"],"mappings":";;;;;;;;;;;IAGaA,sCAAsC,MAAtCA;IAgCAC,8CAA8C,MAA9CA;;4CAnCwD;uBAC9B;AACvC,MAAMC,wCAAwC;AACvC,MAAMF,yCAAyC;IACpD,GAAGG,iDAAqB;IACxBC,WAAW,CAAC,EAAEF,sCAAsC,WAAW,CAAC;AAClE;AACA,MAAMG,YAAY,WAAW,GAAEC,IAAAA,kBAAQ,EAAC;IACtCC,MAAM;QACJC,QAAQ;QACRC,QAAQ;QACRC,SAAS;IACX;IACAC,UAAU;QACRC,SAAS;QACTC,SAAS;IACX;IACAC,YAAY;QACVF,SAAS;QACTG,SAAS;IACX;IACAC,kBAAkB;QAChBJ,SAAS;QACTC,SAAS;IACX;IACAI,oBAAoB;QAClBL,SAAS;QACTG,SAAS;IACX;AACF,GAAG;IACDG,GAAG;QAAC;QAA2B;QAAyB;QAA2B;QAAqC;QAA6B;QAAkC;QAA+B;QAA6C;KAAyC;AAC9S;AAIO,MAAMjB,iDAAiDkB,CAAAA,QAAS;IACrE,MAAMC,SAASf;IACf,kCAAkC;IAClCgB,IAAAA,yDAA6B,EAACF;IAC9B,MAAMG,iBAAiBH,MAAMI,IAAI,KAAK,eAAeJ,MAAMK,QAAQ,GAAGJ,OAAOH,kBAAkB,GAAGG,OAAON,UAAU,GAAGK,MAAMK,QAAQ,GAAGJ,OAAOJ,gBAAgB,GAAGI,OAAOT,QAAQ;IAChL,uBAAuB;IACvBQ,MAAMf,SAAS,CAACqB,SAAS,GAAGC,IAAAA,mBAAY,EAAC1B,uCAAuCI,SAAS,EAAEgB,OAAOb,IAAI,EAAEe,gBAAgBH,MAAMf,SAAS,CAACqB,SAAS;IACjJ,OAAON;AACT,GACA,wEAAwE"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- const tslib_1 = /*#__PURE__*/require("tslib");
7
- tslib_1.__exportStar(require("./useIntersectionObserver"), exports);
8
- //# sourceMappingURL=index.js.map
5
+ const _exportStar = require("@swc/helpers/lib/_export_star.js").default;
6
+ _exportStar(require("./useIntersectionObserver"), exports);
7
+ _exportStar(require("./useVirtualizerMeasure"), exports);
8
+ _exportStar(require("./useDynamicVirtualizerMeasure"), exports);
9
+ _exportStar(require("./useResizeObserverRef"), exports);
10
+ _exportStar(require("./hooks.types"), exports);
@@ -1 +1 @@
1
- {"version":3,"mappings":";;;;;;AAAAA","names":["tslib_1"],"sourceRoot":"../src/","sources":["packages/react-components/react-virtualizer/src/hooks/index.ts"],"sourcesContent":["export * from './useIntersectionObserver';\n"]}
1
+ {"version":3,"sources":["index.js"],"sourcesContent":["export * from './useIntersectionObserver';\nexport * from './useVirtualizerMeasure';\nexport * from './useDynamicVirtualizerMeasure';\nexport * from './useResizeObserverRef';\nexport * from './hooks.types';\n"],"names":[],"mappings":";;;;;oBAAc;oBACA;oBACA;oBACA;oBACA"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useDynamicVirtualizerMeasure", {
6
+ enumerable: true,
7
+ get: ()=>useDynamicVirtualizerMeasure
8
+ });
9
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
+ const _reactUtilities = require("@fluentui/react-utilities");
11
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
12
+ const _useResizeObserverRef = require("./useResizeObserverRef");
13
+ const useDynamicVirtualizerMeasure = (virtualizerProps)=>{
14
+ const { defaultItemSize , direction ='vertical' , numItems , getItemSize , currentIndex } = virtualizerProps;
15
+ const indexRef = (0, _react.useRef)(currentIndex);
16
+ indexRef.current = currentIndex;
17
+ const [state, setState] = _react.useState({
18
+ virtualizerLength: 0,
19
+ virtualizerBufferItems: 0,
20
+ virtualizerBufferSize: 0
21
+ });
22
+ const { virtualizerLength , virtualizerBufferItems , virtualizerBufferSize } = state;
23
+ const container = _react.useRef(null);
24
+ const handleScrollResize = _react.useCallback((scrollRef)=>{
25
+ if (!(scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current)) {
26
+ // Error? ignore?
27
+ return;
28
+ }
29
+ if (scrollRef.current !== container.current) {
30
+ container.current = scrollRef.current;
31
+ }
32
+ const containerSize = direction === 'vertical' ? scrollRef.current.getBoundingClientRect().height : scrollRef.current.getBoundingClientRect().width;
33
+ let indexSizer = 0;
34
+ let length = 0;
35
+ while(indexSizer <= containerSize && length < numItems){
36
+ const iItemSize = getItemSize(indexRef.current + length);
37
+ // Increment
38
+ indexSizer += iItemSize;
39
+ length++;
40
+ }
41
+ /*
42
+ * Number of items to append at each end, i.e. 'preload' each side before entering view.
43
+ */ const bufferItems = Math.max(Math.floor(length / 4), 4);
44
+ /*
45
+ * This is how far we deviate into the bufferItems to detect a redraw.
46
+ */ const bufferSize = Math.max(Math.floor(length / 8 * defaultItemSize), 1);
47
+ const totalLength = length + bufferItems * 2 + 1;
48
+ setState({
49
+ virtualizerLength: totalLength,
50
+ virtualizerBufferSize: bufferSize,
51
+ virtualizerBufferItems: bufferItems
52
+ });
53
+ }, [
54
+ defaultItemSize,
55
+ direction,
56
+ getItemSize,
57
+ numItems
58
+ ]);
59
+ const resizeCallback = _react.useCallback((_entries, _observer, scrollRef)=>{
60
+ if (scrollRef) {
61
+ handleScrollResize(scrollRef);
62
+ }
63
+ }, [
64
+ handleScrollResize
65
+ ]);
66
+ const scrollRef = (0, _useResizeObserverRef.useResizeObserverRef_unstable)(resizeCallback);
67
+ (0, _reactUtilities.useIsomorphicLayoutEffect)(()=>{
68
+ var _container_current, _container_current1;
69
+ if (!container.current) {
70
+ return;
71
+ }
72
+ const containerSize = direction === 'vertical' ? ((_container_current = container.current) === null || _container_current === void 0 ? void 0 : _container_current.getBoundingClientRect().height) * 1.5 : ((_container_current1 = container.current) === null || _container_current1 === void 0 ? void 0 : _container_current1.getBoundingClientRect().width) * 1.5;
73
+ let couldBeSmaller = false;
74
+ let recheckTotal = 0;
75
+ for(let i = currentIndex; i < currentIndex + virtualizerLength; i++){
76
+ const newItemSize = getItemSize(i);
77
+ recheckTotal += newItemSize;
78
+ const newLength = i - currentIndex;
79
+ const bufferItems = Math.max(Math.floor(newLength / 4), 2);
80
+ const totalNewLength = newLength + bufferItems * 2 + 4;
81
+ const compareLengths = totalNewLength < virtualizerLength;
82
+ if (recheckTotal > containerSize && compareLengths) {
83
+ couldBeSmaller = true;
84
+ break;
85
+ }
86
+ }
87
+ // Check if the render has caused us to need a re-calc of virtualizer length
88
+ if (recheckTotal < containerSize || couldBeSmaller) {
89
+ handleScrollResize(container);
90
+ }
91
+ }, [
92
+ getItemSize,
93
+ currentIndex,
94
+ direction,
95
+ virtualizerLength,
96
+ resizeCallback,
97
+ handleScrollResize
98
+ ]);
99
+ return {
100
+ virtualizerLength,
101
+ bufferItems: virtualizerBufferItems,
102
+ bufferSize: virtualizerBufferSize,
103
+ scrollRef
104
+ };
105
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useDynamicVirtualizerMeasure.js"],"sourcesContent":["import { useIsomorphicLayoutEffect } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { useResizeObserverRef_unstable } from './useResizeObserverRef';\nimport { useRef } from 'react';\n/**\n * React hook that measures virtualized space dynamically to ensure optimized virtualization length.\n */ export const useDynamicVirtualizerMeasure = (virtualizerProps)=>{\n const { defaultItemSize , direction ='vertical' , numItems , getItemSize , currentIndex } = virtualizerProps;\n const indexRef = useRef(currentIndex);\n indexRef.current = currentIndex;\n const [state, setState] = React.useState({\n virtualizerLength: 0,\n virtualizerBufferItems: 0,\n virtualizerBufferSize: 0\n });\n const { virtualizerLength , virtualizerBufferItems , virtualizerBufferSize } = state;\n const container = React.useRef(null);\n const handleScrollResize = React.useCallback((scrollRef)=>{\n if (!(scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current)) {\n // Error? ignore?\n return;\n }\n if (scrollRef.current !== container.current) {\n container.current = scrollRef.current;\n }\n const containerSize = direction === 'vertical' ? scrollRef.current.getBoundingClientRect().height : scrollRef.current.getBoundingClientRect().width;\n let indexSizer = 0;\n let length = 0;\n while(indexSizer <= containerSize && length < numItems){\n const iItemSize = getItemSize(indexRef.current + length);\n // Increment\n indexSizer += iItemSize;\n length++;\n }\n /*\n * Number of items to append at each end, i.e. 'preload' each side before entering view.\n */ const bufferItems = Math.max(Math.floor(length / 4), 4);\n /*\n * This is how far we deviate into the bufferItems to detect a redraw.\n */ const bufferSize = Math.max(Math.floor(length / 8 * defaultItemSize), 1);\n const totalLength = length + bufferItems * 2 + 1;\n setState({\n virtualizerLength: totalLength,\n virtualizerBufferSize: bufferSize,\n virtualizerBufferItems: bufferItems\n });\n }, [\n defaultItemSize,\n direction,\n getItemSize,\n numItems\n ]);\n const resizeCallback = React.useCallback((_entries, _observer, scrollRef)=>{\n if (scrollRef) {\n handleScrollResize(scrollRef);\n }\n }, [\n handleScrollResize\n ]);\n const scrollRef = useResizeObserverRef_unstable(resizeCallback);\n useIsomorphicLayoutEffect(()=>{\n var _container_current, _container_current1;\n if (!container.current) {\n return;\n }\n const containerSize = direction === 'vertical' ? ((_container_current = container.current) === null || _container_current === void 0 ? void 0 : _container_current.getBoundingClientRect().height) * 1.5 : ((_container_current1 = container.current) === null || _container_current1 === void 0 ? void 0 : _container_current1.getBoundingClientRect().width) * 1.5;\n let couldBeSmaller = false;\n let recheckTotal = 0;\n for(let i = currentIndex; i < currentIndex + virtualizerLength; i++){\n const newItemSize = getItemSize(i);\n recheckTotal += newItemSize;\n const newLength = i - currentIndex;\n const bufferItems = Math.max(Math.floor(newLength / 4), 2);\n const totalNewLength = newLength + bufferItems * 2 + 4;\n const compareLengths = totalNewLength < virtualizerLength;\n if (recheckTotal > containerSize && compareLengths) {\n couldBeSmaller = true;\n break;\n }\n }\n // Check if the render has caused us to need a re-calc of virtualizer length\n if (recheckTotal < containerSize || couldBeSmaller) {\n handleScrollResize(container);\n }\n }, [\n getItemSize,\n currentIndex,\n direction,\n virtualizerLength,\n resizeCallback,\n handleScrollResize\n ]);\n return {\n virtualizerLength,\n bufferItems: virtualizerBufferItems,\n bufferSize: virtualizerBufferSize,\n scrollRef\n };\n};\n"],"names":["useDynamicVirtualizerMeasure","virtualizerProps","defaultItemSize","direction","numItems","getItemSize","currentIndex","indexRef","useRef","current","state","setState","React","useState","virtualizerLength","virtualizerBufferItems","virtualizerBufferSize","container","handleScrollResize","useCallback","scrollRef","containerSize","getBoundingClientRect","height","width","indexSizer","length","iItemSize","bufferItems","Math","max","floor","bufferSize","totalLength","resizeCallback","_entries","_observer","useResizeObserverRef_unstable","useIsomorphicLayoutEffect","_container_current","_container_current1","couldBeSmaller","recheckTotal","i","newItemSize","newLength","totalNewLength","compareLengths"],"mappings":";;;;+BAMiBA;;aAAAA;;;gCANyB;6DACnB;sCACuB;AAInC,MAAMA,+BAA+B,CAACC,mBAAmB;IAChE,MAAM,EAAEC,gBAAe,EAAGC,WAAW,WAAU,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAG,GAAGL;IAC7F,MAAMM,WAAWC,IAAAA,aAAM,EAACF;IACxBC,SAASE,OAAO,GAAGH;IACnB,MAAM,CAACI,OAAOC,SAAS,GAAGC,OAAMC,QAAQ,CAAC;QACrCC,mBAAmB;QACnBC,wBAAwB;QACxBC,uBAAuB;IAC3B;IACA,MAAM,EAAEF,kBAAiB,EAAGC,uBAAsB,EAAGC,sBAAqB,EAAG,GAAGN;IAChF,MAAMO,YAAYL,OAAMJ,MAAM,CAAC,IAAI;IACnC,MAAMU,qBAAqBN,OAAMO,WAAW,CAAC,CAACC,YAAY;QACtD,IAAI,CAAEA,CAAAA,cAAc,IAAI,IAAIA,cAAc,KAAK,IAAI,KAAK,IAAIA,UAAUX,OAAO,AAAD,GAAI;YAC5E,iBAAiB;YACjB;QACJ,CAAC;QACD,IAAIW,UAAUX,OAAO,KAAKQ,UAAUR,OAAO,EAAE;YACzCQ,UAAUR,OAAO,GAAGW,UAAUX,OAAO;QACzC,CAAC;QACD,MAAMY,gBAAgBlB,cAAc,aAAaiB,UAAUX,OAAO,CAACa,qBAAqB,GAAGC,MAAM,GAAGH,UAAUX,OAAO,CAACa,qBAAqB,GAAGE,KAAK;QACnJ,IAAIC,aAAa;QACjB,IAAIC,SAAS;QACb,MAAMD,cAAcJ,iBAAiBK,SAAStB,SAAS;YACnD,MAAMuB,YAAYtB,YAAYE,SAASE,OAAO,GAAGiB;YACjD,YAAY;YACZD,cAAcE;YACdD;QACJ;QACA;;OAED,GAAG,MAAME,cAAcC,KAAKC,GAAG,CAACD,KAAKE,KAAK,CAACL,SAAS,IAAI;QACvD;;OAED,GAAG,MAAMM,aAAaH,KAAKC,GAAG,CAACD,KAAKE,KAAK,CAACL,SAAS,IAAIxB,kBAAkB;QACxE,MAAM+B,cAAcP,SAASE,cAAc,IAAI;QAC/CjB,SAAS;YACLG,mBAAmBmB;YACnBjB,uBAAuBgB;YACvBjB,wBAAwBa;QAC5B;IACJ,GAAG;QACC1B;QACAC;QACAE;QACAD;KACH;IACD,MAAM8B,iBAAiBtB,OAAMO,WAAW,CAAC,CAACgB,UAAUC,WAAWhB,YAAY;QACvE,IAAIA,WAAW;YACXF,mBAAmBE;QACvB,CAAC;IACL,GAAG;QACCF;KACH;IACD,MAAME,YAAYiB,IAAAA,mDAA6B,EAACH;IAChDI,IAAAA,yCAAyB,EAAC,IAAI;QAC1B,IAAIC,oBAAoBC;QACxB,IAAI,CAACvB,UAAUR,OAAO,EAAE;YACpB;QACJ,CAAC;QACD,MAAMY,gBAAgBlB,cAAc,aAAa,AAAC,CAAA,AAACoC,CAAAA,qBAAqBtB,UAAUR,OAAO,AAAD,MAAO,IAAI,IAAI8B,uBAAuB,KAAK,IAAI,KAAK,IAAIA,mBAAmBjB,qBAAqB,GAAGC,MAAM,AAAD,IAAK,MAAM,AAAC,CAAA,AAACiB,CAAAA,sBAAsBvB,UAAUR,OAAO,AAAD,MAAO,IAAI,IAAI+B,wBAAwB,KAAK,IAAI,KAAK,IAAIA,oBAAoBlB,qBAAqB,GAAGE,KAAK,AAAD,IAAK,GAAG;QACpW,IAAIiB,iBAAiB,KAAK;QAC1B,IAAIC,eAAe;QACnB,IAAI,IAAIC,IAAIrC,cAAcqC,IAAIrC,eAAeQ,mBAAmB6B,IAAI;YAChE,MAAMC,cAAcvC,YAAYsC;YAChCD,gBAAgBE;YAChB,MAAMC,YAAYF,IAAIrC;YACtB,MAAMsB,cAAcC,KAAKC,GAAG,CAACD,KAAKE,KAAK,CAACc,YAAY,IAAI;YACxD,MAAMC,iBAAiBD,YAAYjB,cAAc,IAAI;YACrD,MAAMmB,iBAAiBD,iBAAiBhC;YACxC,IAAI4B,eAAerB,iBAAiB0B,gBAAgB;gBAChDN,iBAAiB,IAAI;gBACrB,KAAM;YACV,CAAC;QACL;QACA,4EAA4E;QAC5E,IAAIC,eAAerB,iBAAiBoB,gBAAgB;YAChDvB,mBAAmBD;QACvB,CAAC;IACL,GAAG;QACCZ;QACAC;QACAH;QACAW;QACAoB;QACAhB;KACH;IACD,OAAO;QACHJ;QACAc,aAAab;QACbiB,YAAYhB;QACZI;IACJ;AACJ"}
@@ -1,59 +1,44 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.useIntersectionObserver = void 0;
7
- const React = /*#__PURE__*/require("react");
8
- const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
9
- const {
10
- useState,
11
- useRef
12
- } = React;
13
- /**
14
- * React hook that allows easy usage of the browser API IntersectionObserver within React
15
- * @param callback - A function called when the percentage of the target element is visible crosses a threshold.
16
- * @param options - An optional object which customizes the observer. If options isn't specified, the observer uses the
17
- * document's viewport as the root, with no margin, and a 0% threshold (meaning that even a one-pixel change is
18
- * enough to trigger a callback).
19
- * @returns An array containing a callback to update the list of Elements the observer should listen to, a callback to
20
- * update the init options of the IntersectionObserver and a ref to the IntersectionObserver instance itself.
21
- */
22
- const useIntersectionObserver = (callback, options) => {
23
- // export const useIntersectionObserver = (
24
- // callback: IntersectionObserverCallback,
25
- // options?: IntersectionObserverInit,
26
- // ): [
27
- // Dispatch<SetStateAction<Element[] | undefined>>,
28
- // Dispatch<SetStateAction<IntersectionObserverInit | undefined>>,
29
- // MutableRefObject<IntersectionObserver | undefined>,
30
- // ] => {
31
- const observer = useRef();
32
- const [observerList, setObserverList] = useState();
33
- const [observerInit, setObserverInit] = useState(options);
34
- // Observer elements in passed in list and clean up previous list
35
- // This effect is only triggered when observerList is updated
36
- react_utilities_1.useIsomorphicLayoutEffect(() => {
37
- observer.current = new IntersectionObserver(callback, observerInit);
38
- // If we have an instance of IO and a list with elements, observer the elements
39
- if (observer.current && observerList && observerList.length > 0) {
40
- observerList.forEach(element => {
41
- var _a;
42
- (_a = observer.current) === null || _a === void 0 ? void 0 : _a.observe(element);
43
- });
44
- }
45
- // clean up previous elements being listened to
46
- return () => {
47
- if (observer.current) {
48
- observer.current.disconnect();
49
- }
5
+ Object.defineProperty(exports, "useIntersectionObserver", {
6
+ enumerable: true,
7
+ get: ()=>useIntersectionObserver
8
+ });
9
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
11
+ const _reactUtilities = require("@fluentui/react-utilities");
12
+ const { useState , useRef } = _react;
13
+ const useIntersectionObserver = (callback, options)=>{
14
+ const observer = useRef();
15
+ const [observerList, setObserverList] = useState();
16
+ const [observerInit, setObserverInit] = useState(options);
17
+ // Observer elements in passed in list and clean up previous list
18
+ // This effect is only triggered when observerList is updated
19
+ (0, _reactUtilities.useIsomorphicLayoutEffect)(()=>{
20
+ observer.current = new IntersectionObserver(callback, observerInit);
21
+ // If we have an instance of IO and a list with elements, observer the elements
22
+ if (observer.current && observerList && observerList.length > 0) {
23
+ observerList.forEach((element)=>{
24
+ var _observer_current;
25
+ (_observer_current = observer.current) === null || _observer_current === void 0 ? void 0 : _observer_current.observe(element);
26
+ });
27
+ }
28
+ // clean up previous elements being listened to
29
+ return ()=>{
30
+ if (observer.current) {
31
+ observer.current.disconnect();
32
+ }
33
+ };
34
+ }, [
35
+ observerList,
36
+ observerInit,
37
+ callback
38
+ ]);
39
+ return {
40
+ setObserverList,
41
+ setObserverInit,
42
+ observer
50
43
  };
51
- }, [observerList, observerInit, callback]);
52
- return {
53
- setObserverList,
54
- setObserverInit,
55
- observer
56
- };
57
44
  };
58
- exports.useIntersectionObserver = useIntersectionObserver;
59
- //# sourceMappingURL=useIntersectionObserver.js.map
@@ -1 +1 @@
1
- {"version":3,"mappings":";;;;;;AACA;AACA;AAEA,MAAM;EAAEA,QAAQ;EAAEC;AAAM,CAAE,GAAGC,KAAK;AAElC;;;;;;;;;AAUO,MAAMC,uBAAuB,GAAG,CACrCC,QAAsC,EACtCC,OAAkC,KAKhC;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMC,QAAQ,GAAGL,MAAM,EAAwB;EAC/C,MAAM,CAACM,YAAY,EAAEC,eAAe,CAAC,GAAGR,QAAQ,EAAa;EAC7D,MAAM,CAACS,YAAY,EAAEC,eAAe,CAAC,GAAGV,QAAQ,CAAuCK,OAAO,CAAC;EAE/F;EACA;EACAM,2CAAyB,CAAC,MAAK;IAC7BL,QAAQ,CAACM,OAAO,GAAG,IAAIC,oBAAoB,CAACT,QAAQ,EAAEK,YAAY,CAAC;IAEnE;IACA,IAAIH,QAAQ,CAACM,OAAO,IAAIL,YAAY,IAAIA,YAAY,CAACO,MAAM,GAAG,CAAC,EAAE;MAC/DP,YAAY,CAACQ,OAAO,CAACC,OAAO,IAAG;;QAC7B,cAAQ,CAACJ,OAAO,0CAAEK,OAAO,CAACD,OAAO,CAAC;MACpC,CAAC,CAAC;;IAGJ;IACA,OAAO,MAAK;MACV,IAAIV,QAAQ,CAACM,OAAO,EAAE;QACpBN,QAAQ,CAACM,OAAO,CAACM,UAAU,EAAE;;IAEjC,CAAC;EACH,CAAC,EAAE,CAACX,YAAY,EAAEE,YAAY,EAAEL,QAAQ,CAAC,CAAC;EAE1C,OAAO;IAAEI,eAAe;IAAEE,eAAe;IAAEJ;EAAQ,CAAE;AACvD,CAAC;AAzCYa,+BAAuB","names":["useState","useRef","React","useIntersectionObserver","callback","options","observer","observerList","setObserverList","observerInit","setObserverInit","react_utilities_1","current","IntersectionObserver","length","forEach","element","observe","disconnect","exports"],"sourceRoot":"../src/","sources":["packages/react-components/react-virtualizer/src/hooks/useIntersectionObserver.ts"],"sourcesContent":["import type { Dispatch, MutableRefObject, SetStateAction } from 'react';\nimport * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '@fluentui/react-utilities';\n\nconst { useState, useRef } = React;\n\n/**\n * React hook that allows easy usage of the browser API IntersectionObserver within React\n * @param callback - A function called when the percentage of the target element is visible crosses a threshold.\n * @param options - An optional object which customizes the observer. If options isn't specified, the observer uses the\n * document's viewport as the root, with no margin, and a 0% threshold (meaning that even a one-pixel change is\n * enough to trigger a callback).\n * @returns An array containing a callback to update the list of Elements the observer should listen to, a callback to\n * update the init options of the IntersectionObserver and a ref to the IntersectionObserver instance itself.\n */\n\nexport const useIntersectionObserver = (\n callback: IntersectionObserverCallback,\n options?: IntersectionObserverInit,\n): {\n setObserverList: Dispatch<SetStateAction<Element[] | undefined>>;\n setObserverInit: Dispatch<SetStateAction<IntersectionObserverInit | undefined>>;\n observer: MutableRefObject<IntersectionObserver | undefined>;\n} => {\n // export const useIntersectionObserver = (\n // callback: IntersectionObserverCallback,\n // options?: IntersectionObserverInit,\n // ): [\n // Dispatch<SetStateAction<Element[] | undefined>>,\n // Dispatch<SetStateAction<IntersectionObserverInit | undefined>>,\n // MutableRefObject<IntersectionObserver | undefined>,\n // ] => {\n const observer = useRef<IntersectionObserver>();\n const [observerList, setObserverList] = useState<Element[]>();\n const [observerInit, setObserverInit] = useState<IntersectionObserverInit | undefined>(options);\n\n // Observer elements in passed in list and clean up previous list\n // This effect is only triggered when observerList is updated\n useIsomorphicLayoutEffect(() => {\n observer.current = new IntersectionObserver(callback, observerInit);\n\n // If we have an instance of IO and a list with elements, observer the elements\n if (observer.current && observerList && observerList.length > 0) {\n observerList.forEach(element => {\n observer.current?.observe(element);\n });\n }\n\n // clean up previous elements being listened to\n return () => {\n if (observer.current) {\n observer.current.disconnect();\n }\n };\n }, [observerList, observerInit, callback]);\n\n return { setObserverList, setObserverInit, observer };\n};\n"]}
1
+ {"version":3,"sources":["useIntersectionObserver.js"],"sourcesContent":["import * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '@fluentui/react-utilities';\nconst { useState , useRef } = React;\n/**\n * React hook that allows easy usage of the browser API IntersectionObserver within React\n * @param callback - A function called when the percentage of the target element is visible crosses a threshold.\n * @param options - An optional object which customizes the observer. If options isn't specified, the observer uses the\n * document's viewport as the root, with no margin, and a 0% threshold (meaning that even a one-pixel change is\n * enough to trigger a callback).\n * @returns An array containing a callback to update the list of Elements the observer should listen to, a callback to\n * update the init options of the IntersectionObserver and a ref to the IntersectionObserver instance itself.\n */ export const useIntersectionObserver = (callback, options)=>{\n const observer = useRef();\n const [observerList, setObserverList] = useState();\n const [observerInit, setObserverInit] = useState(options);\n // Observer elements in passed in list and clean up previous list\n // This effect is only triggered when observerList is updated\n useIsomorphicLayoutEffect(()=>{\n observer.current = new IntersectionObserver(callback, observerInit);\n // If we have an instance of IO and a list with elements, observer the elements\n if (observer.current && observerList && observerList.length > 0) {\n observerList.forEach((element)=>{\n var _observer_current;\n (_observer_current = observer.current) === null || _observer_current === void 0 ? void 0 : _observer_current.observe(element);\n });\n }\n // clean up previous elements being listened to\n return ()=>{\n if (observer.current) {\n observer.current.disconnect();\n }\n };\n }, [\n observerList,\n observerInit,\n callback\n ]);\n return {\n setObserverList,\n setObserverInit,\n observer\n };\n};\n"],"names":["useIntersectionObserver","useState","useRef","React","callback","options","observer","observerList","setObserverList","observerInit","setObserverInit","useIsomorphicLayoutEffect","current","IntersectionObserver","length","forEach","element","_observer_current","observe","disconnect"],"mappings":";;;;+BAWiBA;;aAAAA;;;6DAXM;gCACmB;AAC1C,MAAM,EAAEC,SAAQ,EAAGC,OAAM,EAAG,GAAGC;AASpB,MAAMH,0BAA0B,CAACI,UAAUC,UAAU;IAC5D,MAAMC,WAAWJ;IACjB,MAAM,CAACK,cAAcC,gBAAgB,GAAGP;IACxC,MAAM,CAACQ,cAAcC,gBAAgB,GAAGT,SAASI;IACjD,iEAAiE;IACjE,6DAA6D;IAC7DM,IAAAA,yCAAyB,EAAC,IAAI;QAC1BL,SAASM,OAAO,GAAG,IAAIC,qBAAqBT,UAAUK;QACtD,+EAA+E;QAC/E,IAAIH,SAASM,OAAO,IAAIL,gBAAgBA,aAAaO,MAAM,GAAG,GAAG;YAC7DP,aAAaQ,OAAO,CAAC,CAACC,UAAU;gBAC5B,IAAIC;gBACHA,CAAAA,oBAAoBX,SAASM,OAAO,AAAD,MAAO,IAAI,IAAIK,sBAAsB,KAAK,IAAI,KAAK,IAAIA,kBAAkBC,OAAO,CAACF,QAAQ;YACjI;QACJ,CAAC;QACD,+CAA+C;QAC/C,OAAO,IAAI;YACP,IAAIV,SAASM,OAAO,EAAE;gBAClBN,SAASM,OAAO,CAACO,UAAU;YAC/B,CAAC;QACL;IACJ,GAAG;QACCZ;QACAE;QACAL;KACH;IACD,OAAO;QACHI;QACAE;QACAJ;IACJ;AACJ"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useResizeObserverRef_unstable", {
6
+ enumerable: true,
7
+ get: ()=>useResizeObserverRef_unstable
8
+ });
9
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
11
+ const _debounce = require("../utilities/debounce");
12
+ const _reactUtilities = require("@fluentui/react-utilities");
13
+ const useResizeObserverRef_unstable = (resizeCallback)=>{
14
+ const container = _react.useRef(null);
15
+ // the handler for resize observer
16
+ const handleResize = (0, _debounce.debounce)((entries, observer)=>{
17
+ resizeCallback(entries, observer, container);
18
+ });
19
+ // Keep the reference of ResizeObserver in the state, as it should live through renders
20
+ const [resizeObserver, setResizeObserver] = _react.useState(()=>(0, _reactUtilities.canUseDOM)() ? new ResizeObserver(handleResize) : undefined);
21
+ _react.useEffect(()=>{
22
+ // Update our state when resizeCallback changes
23
+ container.current = null;
24
+ resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
25
+ setResizeObserver((0, _reactUtilities.canUseDOM)() ? new ResizeObserver(handleResize) : undefined);
26
+ // eslint-disable-next-line react-hooks/exhaustive-deps
27
+ }, [
28
+ resizeCallback
29
+ ]);
30
+ _react.useEffect(()=>{
31
+ return ()=>{
32
+ container.current = null;
33
+ resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
34
+ };
35
+ // eslint-disable-next-line react-hooks/exhaustive-deps
36
+ }, []);
37
+ const scrollRef = _react.useCallback((instance)=>{
38
+ if (container.current !== instance) {
39
+ if (container.current) {
40
+ resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.unobserve(container.current);
41
+ }
42
+ container.current = instance;
43
+ if (container.current) {
44
+ resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.observe(container.current);
45
+ }
46
+ }
47
+ }, [
48
+ resizeObserver
49
+ ]);
50
+ return scrollRef;
51
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useResizeObserverRef.js"],"sourcesContent":["import * as React from 'react';\nimport { debounce } from '../utilities/debounce';\nimport { canUseDOM } from '@fluentui/react-utilities';\n/**\n * useResizeObserverRef_unstable simplifies resize observer connection and ensures debounce/cleanup\n */ export const useResizeObserverRef_unstable = (resizeCallback)=>{\n const container = React.useRef(null);\n // the handler for resize observer\n const handleResize = debounce((entries, observer)=>{\n resizeCallback(entries, observer, container);\n });\n // Keep the reference of ResizeObserver in the state, as it should live through renders\n const [resizeObserver, setResizeObserver] = React.useState(()=>canUseDOM() ? new ResizeObserver(handleResize) : undefined);\n React.useEffect(()=>{\n // Update our state when resizeCallback changes\n container.current = null;\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();\n setResizeObserver(canUseDOM() ? new ResizeObserver(handleResize) : undefined);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n resizeCallback\n ]);\n React.useEffect(()=>{\n return ()=>{\n container.current = null;\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const scrollRef = React.useCallback((instance)=>{\n if (container.current !== instance) {\n if (container.current) {\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.unobserve(container.current);\n }\n container.current = instance;\n if (container.current) {\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.observe(container.current);\n }\n }\n }, [\n resizeObserver\n ]);\n return scrollRef;\n};\n"],"names":["useResizeObserverRef_unstable","resizeCallback","container","React","useRef","handleResize","debounce","entries","observer","resizeObserver","setResizeObserver","useState","canUseDOM","ResizeObserver","undefined","useEffect","current","disconnect","scrollRef","useCallback","instance","unobserve","observe"],"mappings":";;;;+BAKiBA;;aAAAA;;;6DALM;0BACE;gCACC;AAGf,MAAMA,gCAAgC,CAACC,iBAAiB;IAC/D,MAAMC,YAAYC,OAAMC,MAAM,CAAC,IAAI;IACnC,kCAAkC;IAClC,MAAMC,eAAeC,IAAAA,kBAAQ,EAAC,CAACC,SAASC,WAAW;QAC/CP,eAAeM,SAASC,UAAUN;IACtC;IACA,uFAAuF;IACvF,MAAM,CAACO,gBAAgBC,kBAAkB,GAAGP,OAAMQ,QAAQ,CAAC,IAAIC,IAAAA,yBAAS,MAAK,IAAIC,eAAeR,gBAAgBS,SAAS;IACzHX,OAAMY,SAAS,CAAC,IAAI;QAChB,+CAA+C;QAC/Cb,UAAUc,OAAO,GAAG,IAAI;QACxBP,mBAAmB,IAAI,IAAIA,mBAAmB,KAAK,IAAI,KAAK,IAAIA,eAAeQ,UAAU,EAAE;QAC3FP,kBAAkBE,IAAAA,yBAAS,MAAK,IAAIC,eAAeR,gBAAgBS,SAAS;IAChF,uDAAuD;IACvD,GAAG;QACCb;KACH;IACDE,OAAMY,SAAS,CAAC,IAAI;QAChB,OAAO,IAAI;YACPb,UAAUc,OAAO,GAAG,IAAI;YACxBP,mBAAmB,IAAI,IAAIA,mBAAmB,KAAK,IAAI,KAAK,IAAIA,eAAeQ,UAAU,EAAE;QAC/F;IACJ,uDAAuD;IACvD,GAAG,EAAE;IACL,MAAMC,YAAYf,OAAMgB,WAAW,CAAC,CAACC,WAAW;QAC5C,IAAIlB,UAAUc,OAAO,KAAKI,UAAU;YAChC,IAAIlB,UAAUc,OAAO,EAAE;gBACnBP,mBAAmB,IAAI,IAAIA,mBAAmB,KAAK,IAAI,KAAK,IAAIA,eAAeY,SAAS,CAACnB,UAAUc,OAAO,CAAC;YAC/G,CAAC;YACDd,UAAUc,OAAO,GAAGI;YACpB,IAAIlB,UAAUc,OAAO,EAAE;gBACnBP,mBAAmB,IAAI,IAAIA,mBAAmB,KAAK,IAAI,KAAK,IAAIA,eAAea,OAAO,CAACpB,UAAUc,OAAO,CAAC;YAC7G,CAAC;QACL,CAAC;IACL,GAAG;QACCP;KACH;IACD,OAAOS;AACX"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useStaticVirtualizerMeasure", {
6
+ enumerable: true,
7
+ get: ()=>useStaticVirtualizerMeasure
8
+ });
9
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
11
+ const _useResizeObserverRef = require("./useResizeObserverRef");
12
+ const useStaticVirtualizerMeasure = (virtualizerProps)=>{
13
+ const { defaultItemSize , direction ='vertical' } = virtualizerProps;
14
+ const [state, setState] = _react.useState({
15
+ virtualizerLength: 0,
16
+ bufferSize: 0,
17
+ bufferItems: 0
18
+ });
19
+ const { virtualizerLength , bufferItems , bufferSize } = state;
20
+ const resizeCallback = _react.useCallback((_entries, _observer, scrollRef)=>{
21
+ if (!(scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current)) {
22
+ return;
23
+ }
24
+ const containerSize = direction === 'vertical' ? scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current.getBoundingClientRect().height : scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current.getBoundingClientRect().width;
25
+ /*
26
+ * Number of items required to cover viewport.
27
+ */ const length = Math.ceil(containerSize / defaultItemSize + 1);
28
+ /*
29
+ * Number of items to append at each end, i.e. 'preload' each side before entering view.
30
+ */ const newBufferItems = Math.max(Math.floor(length / 4), 2);
31
+ /*
32
+ * This is how far we deviate into the bufferItems to detect a redraw.
33
+ */ const newBufferSize = Math.max(Math.floor(length / 8 * defaultItemSize), 1);
34
+ const totalLength = length + newBufferItems * 2 + 1;
35
+ setState({
36
+ virtualizerLength: totalLength,
37
+ bufferItems: newBufferItems,
38
+ bufferSize: newBufferSize
39
+ });
40
+ }, [
41
+ defaultItemSize,
42
+ direction
43
+ ]);
44
+ const scrollRef = (0, _useResizeObserverRef.useResizeObserverRef_unstable)(resizeCallback);
45
+ return {
46
+ virtualizerLength,
47
+ bufferItems,
48
+ bufferSize,
49
+ scrollRef
50
+ };
51
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useVirtualizerMeasure.js"],"sourcesContent":["import * as React from 'react';\nimport { useResizeObserverRef_unstable } from './useResizeObserverRef';\n/**\n * React hook that measures virtualized space based on a static size to ensure optimized virtualization length.\n */ export const useStaticVirtualizerMeasure = (virtualizerProps)=>{\n const { defaultItemSize , direction ='vertical' } = virtualizerProps;\n const [state, setState] = React.useState({\n virtualizerLength: 0,\n bufferSize: 0,\n bufferItems: 0\n });\n const { virtualizerLength , bufferItems , bufferSize } = state;\n const resizeCallback = React.useCallback((_entries, _observer, scrollRef)=>{\n if (!(scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current)) {\n return;\n }\n const containerSize = direction === 'vertical' ? scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current.getBoundingClientRect().height : scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current.getBoundingClientRect().width;\n /*\n * Number of items required to cover viewport.\n */ const length = Math.ceil(containerSize / defaultItemSize + 1);\n /*\n * Number of items to append at each end, i.e. 'preload' each side before entering view.\n */ const newBufferItems = Math.max(Math.floor(length / 4), 2);\n /*\n * This is how far we deviate into the bufferItems to detect a redraw.\n */ const newBufferSize = Math.max(Math.floor(length / 8 * defaultItemSize), 1);\n const totalLength = length + newBufferItems * 2 + 1;\n setState({\n virtualizerLength: totalLength,\n bufferItems: newBufferItems,\n bufferSize: newBufferSize\n });\n }, [\n defaultItemSize,\n direction\n ]);\n const scrollRef = useResizeObserverRef_unstable(resizeCallback);\n return {\n virtualizerLength,\n bufferItems,\n bufferSize,\n scrollRef\n };\n};\n"],"names":["useStaticVirtualizerMeasure","virtualizerProps","defaultItemSize","direction","state","setState","React","useState","virtualizerLength","bufferSize","bufferItems","resizeCallback","useCallback","_entries","_observer","scrollRef","current","containerSize","getBoundingClientRect","height","width","length","Math","ceil","newBufferItems","max","floor","newBufferSize","totalLength","useResizeObserverRef_unstable"],"mappings":";;;;+BAIiBA;;aAAAA;;;6DAJM;sCACuB;AAGnC,MAAMA,8BAA8B,CAACC,mBAAmB;IAC/D,MAAM,EAAEC,gBAAe,EAAGC,WAAW,WAAU,EAAG,GAAGF;IACrD,MAAM,CAACG,OAAOC,SAAS,GAAGC,OAAMC,QAAQ,CAAC;QACrCC,mBAAmB;QACnBC,YAAY;QACZC,aAAa;IACjB;IACA,MAAM,EAAEF,kBAAiB,EAAGE,YAAW,EAAGD,WAAU,EAAG,GAAGL;IAC1D,MAAMO,iBAAiBL,OAAMM,WAAW,CAAC,CAACC,UAAUC,WAAWC,YAAY;QACvE,IAAI,CAAEA,CAAAA,cAAc,IAAI,IAAIA,cAAc,KAAK,IAAI,KAAK,IAAIA,UAAUC,OAAO,AAAD,GAAI;YAC5E;QACJ,CAAC;QACD,MAAMC,gBAAgBd,cAAc,aAAaY,cAAc,IAAI,IAAIA,cAAc,KAAK,IAAI,KAAK,IAAIA,UAAUC,OAAO,CAACE,qBAAqB,GAAGC,MAAM,GAAGJ,cAAc,IAAI,IAAIA,cAAc,KAAK,IAAI,KAAK,IAAIA,UAAUC,OAAO,CAACE,qBAAqB,GAAGE,KAAK;QAC/P;;OAED,GAAG,MAAMC,SAASC,KAAKC,IAAI,CAACN,gBAAgBf,kBAAkB;QAC7D;;OAED,GAAG,MAAMsB,iBAAiBF,KAAKG,GAAG,CAACH,KAAKI,KAAK,CAACL,SAAS,IAAI;QAC1D;;OAED,GAAG,MAAMM,gBAAgBL,KAAKG,GAAG,CAACH,KAAKI,KAAK,CAACL,SAAS,IAAInB,kBAAkB;QAC3E,MAAM0B,cAAcP,SAASG,iBAAiB,IAAI;QAClDnB,SAAS;YACLG,mBAAmBoB;YACnBlB,aAAac;YACbf,YAAYkB;QAChB;IACJ,GAAG;QACCzB;QACAC;KACH;IACD,MAAMY,YAAYc,IAAAA,mDAA6B,EAAClB;IAChD,OAAO;QACHH;QACAE;QACAD;QACAM;IACJ;AACJ"}