@fluentui/react-virtualizer 9.0.0-alpha.4 → 9.0.0-alpha.41

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 +832 -1
  2. package/CHANGELOG.md +372 -2
  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 +21 -16
  21. package/lib/components/Virtualizer/renderVirtualizer.js.map +1 -1
  22. package/lib/components/Virtualizer/useVirtualizer.js +434 -355
  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 +9 -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 +9 -0
  45. package/lib/components/VirtualizerScrollViewDynamic/renderVirtualizerScrollViewDynamic.js.map +1 -0
  46. package/lib/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamic.js +85 -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 +100 -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 +48 -0
  59. package/lib/hooks/useResizeObserverRef.js.map +1 -0
  60. package/lib/hooks/useVirtualizerMeasure.js +45 -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 +15 -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 +39 -22
  99. package/lib-commonjs/components/Virtualizer/renderVirtualizer.js.map +1 -1
  100. package/lib-commonjs/components/Virtualizer/useVirtualizer.js +443 -361
  101. package/lib-commonjs/components/Virtualizer/useVirtualizer.js.map +1 -1
  102. package/lib-commonjs/components/Virtualizer/useVirtualizerStyles.styles.js +122 -0
  103. package/lib-commonjs/components/Virtualizer/useVirtualizerStyles.styles.js.map +1 -0
  104. package/lib-commonjs/components/VirtualizerScrollView/VirtualizerScrollView.js +21 -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 +19 -0
  111. package/lib-commonjs/components/VirtualizerScrollView/renderVirtualizerScrollView.js.map +1 -0
  112. package/lib-commonjs/components/VirtualizerScrollView/useVirtualizerScrollView.js +86 -0
  113. package/lib-commonjs/components/VirtualizerScrollView/useVirtualizerScrollView.js.map +1 -0
  114. package/lib-commonjs/components/VirtualizerScrollView/useVirtualizerScrollViewStyles.styles.js +69 -0
  115. package/lib-commonjs/components/VirtualizerScrollView/useVirtualizerScrollViewStyles.styles.js.map +1 -0
  116. package/lib-commonjs/components/VirtualizerScrollViewDynamic/VirtualizerScrollViewDynamic.js +21 -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 +19 -0
  123. package/lib-commonjs/components/VirtualizerScrollViewDynamic/renderVirtualizerScrollViewDynamic.js.map +1 -0
  124. package/lib-commonjs/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamic.js +95 -0
  125. package/lib-commonjs/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamic.js.map +1 -0
  126. package/lib-commonjs/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamicStyles.styles.js +69 -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 +108 -0
  133. package/lib-commonjs/hooks/useDynamicVirtualizerMeasure.js.map +1 -0
  134. package/lib-commonjs/hooks/useIntersectionObserver.js +40 -53
  135. package/lib-commonjs/hooks/useIntersectionObserver.js.map +1 -1
  136. package/lib-commonjs/hooks/useResizeObserverRef.js +57 -0
  137. package/lib-commonjs/hooks/useResizeObserverRef.js.map +1 -0
  138. package/lib-commonjs/hooks/useVirtualizerMeasure.js +54 -0
  139. package/lib-commonjs/hooks/useVirtualizerMeasure.js.map +1 -0
  140. package/lib-commonjs/index.js +82 -41
  141. package/lib-commonjs/index.js.map +1 -1
  142. package/lib-commonjs/utilities/ImperativeScrolling/imperativeScrolling.js +42 -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 +55 -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 +52 -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 +29 -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 @@
1
+ {"version":3,"sources":["renderVirtualizerScrollViewDynamic.js"],"sourcesContent":["/** @jsxRuntime automatic */ /** @jsxImportSource @fluentui/react-jsx-runtime */ import { jsx as _jsx } from \"@fluentui/react-jsx-runtime/jsx-runtime\";\nimport { assertSlots } from '@fluentui/react-utilities';\nimport { renderVirtualizer_unstable } from '../Virtualizer/renderVirtualizer';\nexport const renderVirtualizerScrollViewDynamic_unstable = (state)=>{\n assertSlots(state);\n return /*#__PURE__*/ _jsx(state.container, {\n children: renderVirtualizer_unstable(state)\n });\n};\n"],"names":["renderVirtualizerScrollViewDynamic_unstable","state","assertSlots","_jsx","container","children","renderVirtualizer_unstable"],"mappings":"AAAA,0BAA0B,GAAG,iDAAiD;;;;+BAGjEA;;;eAAAA;;;4BAHgG;gCACjF;mCACe;AACpC,MAAMA,8CAA8C,CAACC;IACxDC,IAAAA,2BAAW,EAACD;IACZ,OAAO,WAAW,GAAGE,IAAAA,eAAI,EAACF,MAAMG,SAAS,EAAE;QACvCC,UAAUC,IAAAA,6CAA0B,EAACL;IACzC;AACJ"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useVirtualizerScrollViewDynamic_unstable", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return useVirtualizerScrollViewDynamic_unstable;
9
+ }
10
+ });
11
+ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
12
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
13
+ const _reactutilities = require("@fluentui/react-utilities");
14
+ const _useVirtualizer = require("../Virtualizer/useVirtualizer");
15
+ const _Hooks = require("../../Hooks");
16
+ const _Utilities = require("../../Utilities");
17
+ function useVirtualizerScrollViewDynamic_unstable(props) {
18
+ var _contextState;
19
+ const contextState = (0, _Utilities.useVirtualizerContextState_unstable)(props.virtualizerContext);
20
+ const { imperativeRef, axis = 'vertical', reversed, imperativeVirtualizerRef } = props;
21
+ var _props_axis, _contextState_contextIndex;
22
+ const { virtualizerLength, bufferItems, bufferSize, scrollRef } = (0, _Hooks.useDynamicVirtualizerMeasure)({
23
+ defaultItemSize: props.itemSize,
24
+ direction: (_props_axis = props.axis) !== null && _props_axis !== void 0 ? _props_axis : 'vertical',
25
+ getItemSize: props.getItemSize,
26
+ currentIndex: (_contextState_contextIndex = (_contextState = contextState) === null || _contextState === void 0 ? void 0 : _contextState.contextIndex) !== null && _contextState_contextIndex !== void 0 ? _contextState_contextIndex : 0,
27
+ numItems: props.numItems
28
+ });
29
+ // Store the virtualizer length as a ref for imperative ref access
30
+ const virtualizerLengthRef = _react.useRef(virtualizerLength);
31
+ if (virtualizerLengthRef.current !== virtualizerLength) {
32
+ virtualizerLengthRef.current = virtualizerLength;
33
+ }
34
+ const scrollViewRef = (0, _reactutilities.useMergedRefs)(props.scrollViewRef, scrollRef);
35
+ const scrollCallbackRef = _react.useRef(null);
36
+ const _imperativeVirtualizerRef = (0, _reactutilities.useMergedRefs)(_react.useRef(null), imperativeVirtualizerRef);
37
+ (0, _react.useImperativeHandle)(imperativeRef, ()=>{
38
+ var _imperativeVirtualizerRef_current;
39
+ return {
40
+ scrollTo (index, behavior = 'auto', callback) {
41
+ scrollCallbackRef.current = callback !== null && callback !== void 0 ? callback : null;
42
+ if (_imperativeVirtualizerRef.current) {
43
+ var _progressiveSizes, _imperativeVirtualizerRef_current;
44
+ const progressiveSizes = _imperativeVirtualizerRef.current.progressiveSizes.current;
45
+ const totalSize = progressiveSizes && ((_progressiveSizes = progressiveSizes) === null || _progressiveSizes === void 0 ? void 0 : _progressiveSizes.length) > 0 ? progressiveSizes[Math.max(progressiveSizes.length - 1, 0)] : 0;
46
+ _imperativeVirtualizerRef.current.setFlaggedIndex(index);
47
+ (0, _Utilities.scrollToItemDynamic)({
48
+ index,
49
+ itemSizes: (_imperativeVirtualizerRef_current = _imperativeVirtualizerRef.current) === null || _imperativeVirtualizerRef_current === void 0 ? void 0 : _imperativeVirtualizerRef_current.nodeSizes,
50
+ totalSize,
51
+ scrollViewRef,
52
+ axis,
53
+ reversed,
54
+ behavior
55
+ });
56
+ }
57
+ },
58
+ currentIndex: (_imperativeVirtualizerRef_current = _imperativeVirtualizerRef.current) === null || _imperativeVirtualizerRef_current === void 0 ? void 0 : _imperativeVirtualizerRef_current.currentIndex,
59
+ virtualizerLength: virtualizerLengthRef
60
+ };
61
+ }, [
62
+ axis,
63
+ scrollViewRef,
64
+ reversed,
65
+ _imperativeVirtualizerRef
66
+ ]);
67
+ const handleRenderedIndex = (index)=>{
68
+ if (scrollCallbackRef.current) {
69
+ scrollCallbackRef.current(index);
70
+ }
71
+ };
72
+ const virtualizerState = (0, _useVirtualizer.useVirtualizer_unstable)({
73
+ ...props,
74
+ virtualizerLength,
75
+ bufferItems,
76
+ bufferSize,
77
+ scrollViewRef,
78
+ virtualizerContext: contextState,
79
+ imperativeVirtualizerRef: _imperativeVirtualizerRef,
80
+ onRenderedFlaggedIndex: handleRenderedIndex
81
+ });
82
+ return {
83
+ ...virtualizerState,
84
+ components: {
85
+ ...virtualizerState.components,
86
+ container: 'div'
87
+ },
88
+ container: _reactutilities.slot.always(props.container, {
89
+ defaultProps: {
90
+ ref: scrollViewRef
91
+ },
92
+ elementType: 'div'
93
+ })
94
+ };
95
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useVirtualizerScrollViewDynamic.js"],"sourcesContent":["import * as React from 'react';\nimport { slot, 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 var _contextState;\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 = 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(props.scrollViewRef, 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 _progressiveSizes, _imperativeVirtualizerRef_current;\n const progressiveSizes = _imperativeVirtualizerRef.current.progressiveSizes.current;\n const totalSize = progressiveSizes && ((_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: slot.always(props.container, {\n defaultProps: {\n ref: scrollViewRef\n },\n elementType: 'div'\n })\n };\n}\n"],"names":["useVirtualizerScrollViewDynamic_unstable","props","_contextState","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","progressiveSizes","totalSize","length","Math","max","setFlaggedIndex","scrollToItemDynamic","itemSizes","nodeSizes","handleRenderedIndex","virtualizerState","useVirtualizer_unstable","onRenderedFlaggedIndex","components","container","slot","always","defaultProps","ref","elementType"],"mappings":"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"}
@@ -0,0 +1,69 @@
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: function() {
13
+ return virtualizerScrollViewDynamicClassNames;
14
+ },
15
+ useVirtualizerScrollViewDynamicStyles_unstable: function() {
16
+ return useVirtualizerScrollViewDynamicStyles_unstable;
17
+ }
18
+ });
19
+ const _useVirtualizerStylesstyles = require("../Virtualizer/useVirtualizerStyles.styles");
20
+ const _react = require("@griffel/react");
21
+ const virtualizerScrollViewDynamicClassName = 'fui-Virtualizer-Scroll-View-Dynamic';
22
+ const virtualizerScrollViewDynamicClassNames = {
23
+ ..._useVirtualizerStylesstyles.virtualizerClassNames,
24
+ container: `${virtualizerScrollViewDynamicClassName}__container`
25
+ };
26
+ const useStyles = /*#__PURE__*/ (0, _react.__styles)({
27
+ base: {
28
+ mc9l5x: "f22iagw",
29
+ a9b677: "fly5x3f",
30
+ Bqenvij: "f1l02sjl"
31
+ },
32
+ vertical: {
33
+ Beiy3e4: "f1vx9l62",
34
+ Bmxbyg5: "f5zp4f"
35
+ },
36
+ horizontal: {
37
+ Beiy3e4: "f1063pyq",
38
+ B68tc82: "f1oy3dpc"
39
+ },
40
+ verticalReversed: {
41
+ Beiy3e4: "f1gkdon0",
42
+ Bmxbyg5: "f5zp4f"
43
+ },
44
+ horizontalReversed: {
45
+ Beiy3e4: "f1oztnx0",
46
+ B68tc82: "f1oy3dpc"
47
+ }
48
+ }, {
49
+ d: [
50
+ ".f22iagw{display:flex;}",
51
+ ".fly5x3f{width:100%;}",
52
+ ".f1l02sjl{height:100%;}",
53
+ ".f1vx9l62{flex-direction:column;}",
54
+ ".f5zp4f{overflow-y:auto;}",
55
+ ".f1063pyq{flex-direction:row;}",
56
+ ".f1oy3dpc{overflow-x:auto;}",
57
+ ".f1gkdon0{flex-direction:column-reverse;}",
58
+ ".f1oztnx0{flex-direction:row-reverse;}"
59
+ ]
60
+ });
61
+ const useVirtualizerScrollViewDynamicStyles_unstable = (state)=>{
62
+ const styles = useStyles();
63
+ // Default virtualizer styles base
64
+ (0, _useVirtualizerStylesstyles.useVirtualizerStyles_unstable)(state);
65
+ const containerStyle = state.axis === 'horizontal' ? state.reversed ? styles.horizontalReversed : styles.horizontal : state.reversed ? styles.verticalReversed : styles.vertical;
66
+ // Add container styles
67
+ state.container.className = (0, _react.mergeClasses)(virtualizerScrollViewDynamicClassNames.container, styles.base, containerStyle, state.container.className);
68
+ return state;
69
+ }; //# 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;eAAtCA;;IAgCAC,8CAA8C;eAA9CA;;;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,eAAQ,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;IAC5D,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 _export_star = require("@swc/helpers/_/_export_star");
6
+ _export_star._(require("./useIntersectionObserver"), exports);
7
+ _export_star._(require("./useVirtualizerMeasure"), exports);
8
+ _export_star._(require("./useDynamicVirtualizerMeasure"), exports);
9
+ _export_star._(require("./useResizeObserverRef"), exports);
10
+ _export_star._(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":";;;;;uBAAc;uBACA;uBACA;uBACA;uBACA"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useDynamicVirtualizerMeasure", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return useDynamicVirtualizerMeasure;
9
+ }
10
+ });
11
+ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
12
+ const _reactutilities = require("@fluentui/react-utilities");
13
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
14
+ const _useResizeObserverRef = require("./useResizeObserverRef");
15
+ const useDynamicVirtualizerMeasure = (virtualizerProps)=>{
16
+ const { defaultItemSize, direction = 'vertical', numItems, getItemSize, currentIndex } = virtualizerProps;
17
+ const indexRef = (0, _react.useRef)(currentIndex);
18
+ indexRef.current = currentIndex;
19
+ const [state, setState] = _react.useState({
20
+ virtualizerLength: 0,
21
+ virtualizerBufferItems: 0,
22
+ virtualizerBufferSize: 0
23
+ });
24
+ const { virtualizerLength, virtualizerBufferItems, virtualizerBufferSize } = state;
25
+ const container = _react.useRef(null);
26
+ const handleScrollResize = _react.useCallback((scrollRef)=>{
27
+ var _scrollRef;
28
+ if (!((_scrollRef = scrollRef) === null || _scrollRef === void 0 ? void 0 : _scrollRef.current)) {
29
+ // Error? ignore?
30
+ return;
31
+ }
32
+ if (scrollRef.current !== container.current) {
33
+ container.current = scrollRef.current;
34
+ }
35
+ const containerSize = direction === 'vertical' ? scrollRef.current.getBoundingClientRect().height : scrollRef.current.getBoundingClientRect().width;
36
+ let indexSizer = 0;
37
+ let length = 0;
38
+ while(indexSizer <= containerSize && length < numItems){
39
+ const iItemSize = getItemSize(indexRef.current + length);
40
+ // Increment
41
+ indexSizer += iItemSize;
42
+ length++;
43
+ }
44
+ /*
45
+ * Number of items to append at each end, i.e. 'preload' each side before entering view.
46
+ */ const bufferItems = Math.max(Math.floor(length / 4), 4);
47
+ /*
48
+ * This is how far we deviate into the bufferItems to detect a redraw.
49
+ */ const bufferSize = Math.max(Math.floor(length / 8 * defaultItemSize), 1);
50
+ const totalLength = length + bufferItems * 2 + 1;
51
+ setState({
52
+ virtualizerLength: totalLength,
53
+ virtualizerBufferSize: bufferSize,
54
+ virtualizerBufferItems: bufferItems
55
+ });
56
+ }, [
57
+ defaultItemSize,
58
+ direction,
59
+ getItemSize,
60
+ numItems
61
+ ]);
62
+ const resizeCallback = _react.useCallback((_entries, _observer, scrollRef)=>{
63
+ if (scrollRef) {
64
+ handleScrollResize(scrollRef);
65
+ }
66
+ }, [
67
+ handleScrollResize
68
+ ]);
69
+ const scrollRef = (0, _useResizeObserverRef.useResizeObserverRef_unstable)(resizeCallback);
70
+ (0, _reactutilities.useIsomorphicLayoutEffect)(()=>{
71
+ var _container_current, _container_current1;
72
+ if (!container.current) {
73
+ return;
74
+ }
75
+ 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;
76
+ let couldBeSmaller = false;
77
+ let recheckTotal = 0;
78
+ for(let i = currentIndex; i < currentIndex + virtualizerLength; i++){
79
+ const newItemSize = getItemSize(i);
80
+ recheckTotal += newItemSize;
81
+ const newLength = i - currentIndex;
82
+ const bufferItems = Math.max(Math.floor(newLength / 4), 2);
83
+ const totalNewLength = newLength + bufferItems * 2 + 4;
84
+ const compareLengths = totalNewLength < virtualizerLength;
85
+ if (recheckTotal > containerSize && compareLengths) {
86
+ couldBeSmaller = true;
87
+ break;
88
+ }
89
+ }
90
+ // Check if the render has caused us to need a re-calc of virtualizer length
91
+ if (recheckTotal < containerSize || couldBeSmaller) {
92
+ handleScrollResize(container);
93
+ }
94
+ }, [
95
+ getItemSize,
96
+ currentIndex,
97
+ direction,
98
+ virtualizerLength,
99
+ resizeCallback,
100
+ handleScrollResize
101
+ ]);
102
+ return {
103
+ virtualizerLength,
104
+ bufferItems: virtualizerBufferItems,
105
+ bufferSize: virtualizerBufferSize,
106
+ scrollRef
107
+ };
108
+ };
@@ -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 var _scrollRef;\n if (!((_scrollRef = 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","_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":"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"}
@@ -1,59 +1,46 @@
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
- });
5
+ Object.defineProperty(exports, "useIntersectionObserver", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return useIntersectionObserver;
44
9
  }
45
- // clean up previous elements being listened to
46
- return () => {
47
- if (observer.current) {
48
- observer.current.disconnect();
49
- }
10
+ });
11
+ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
12
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
13
+ const _reactutilities = require("@fluentui/react-utilities");
14
+ const { useState, useRef } = _react;
15
+ const useIntersectionObserver = (callback, options)=>{
16
+ const observer = useRef();
17
+ const [observerList, setObserverList] = useState();
18
+ const [observerInit, setObserverInit] = useState(options);
19
+ // Observer elements in passed in list and clean up previous list
20
+ // This effect is only triggered when observerList is updated
21
+ (0, _reactutilities.useIsomorphicLayoutEffect)(()=>{
22
+ observer.current = new IntersectionObserver(callback, observerInit);
23
+ // If we have an instance of IO and a list with elements, observer the elements
24
+ if (observer.current && observerList && observerList.length > 0) {
25
+ observerList.forEach((element)=>{
26
+ var _observer_current;
27
+ (_observer_current = observer.current) === null || _observer_current === void 0 ? void 0 : _observer_current.observe(element);
28
+ });
29
+ }
30
+ // clean up previous elements being listened to
31
+ return ()=>{
32
+ if (observer.current) {
33
+ observer.current.disconnect();
34
+ }
35
+ };
36
+ }, [
37
+ observerList,
38
+ observerInit,
39
+ callback
40
+ ]);
41
+ return {
42
+ setObserverList,
43
+ setObserverInit,
44
+ observer
50
45
  };
51
- }, [observerList, observerInit, callback]);
52
- return {
53
- setObserverList,
54
- setObserverInit,
55
- observer
56
- };
57
46
  };
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;;;eAAAA;;;;iEAXM;gCACmB;AAC1C,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGC;AASlB,MAAMH,0BAA0B,CAACI,UAAUC;IAClD,MAAMC,WAAWJ;IACjB,MAAM,CAACK,cAAcC,gBAAgB,GAAGP;IACxC,MAAM,CAACQ,cAAcC,gBAAgB,GAAGT,SAASI;IACjD,iEAAiE;IACjE,6DAA6D;IAC7DM,IAAAA,yCAAyB,EAAC;QACtBL,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;gBAClB,IAAIC;gBACHA,CAAAA,oBAAoBX,SAASM,OAAO,AAAD,MAAO,QAAQK,sBAAsB,KAAK,IAAI,KAAK,IAAIA,kBAAkBC,OAAO,CAACF;YACzH;QACJ;QACA,+CAA+C;QAC/C,OAAO;YACH,IAAIV,SAASM,OAAO,EAAE;gBAClBN,SAASM,OAAO,CAACO,UAAU;YAC/B;QACJ;IACJ,GAAG;QACCZ;QACAE;QACAL;KACH;IACD,OAAO;QACHI;QACAE;QACAJ;IACJ;AACJ"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useResizeObserverRef_unstable", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return useResizeObserverRef_unstable;
9
+ }
10
+ });
11
+ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
12
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
13
+ const _debounce = require("../utilities/debounce");
14
+ const _reactutilities = require("@fluentui/react-utilities");
15
+ const useResizeObserverRef_unstable = (resizeCallback)=>{
16
+ const container = _react.useRef(null);
17
+ // the handler for resize observer
18
+ const handleResize = (0, _debounce.debounce)((entries, observer)=>{
19
+ resizeCallback(entries, observer, container);
20
+ });
21
+ // Keep the reference of ResizeObserver in the state, as it should live through renders
22
+ const [resizeObserver, setResizeObserver] = _react.useState(()=>(0, _reactutilities.canUseDOM)() ? new ResizeObserver(handleResize) : undefined);
23
+ _react.useEffect(()=>{
24
+ var _resizeObserver;
25
+ // Update our state when resizeCallback changes
26
+ container.current = null;
27
+ (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 ? void 0 : _resizeObserver.disconnect();
28
+ setResizeObserver((0, _reactutilities.canUseDOM)() ? new ResizeObserver(handleResize) : undefined);
29
+ // eslint-disable-next-line react-hooks/exhaustive-deps
30
+ }, [
31
+ resizeCallback
32
+ ]);
33
+ _react.useEffect(()=>{
34
+ return ()=>{
35
+ var _resizeObserver;
36
+ container.current = null;
37
+ (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 ? void 0 : _resizeObserver.disconnect();
38
+ };
39
+ // eslint-disable-next-line react-hooks/exhaustive-deps
40
+ }, []);
41
+ const scrollRef = _react.useCallback((instance)=>{
42
+ if (container.current !== instance) {
43
+ if (container.current) {
44
+ var _resizeObserver;
45
+ (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 ? void 0 : _resizeObserver.unobserve(container.current);
46
+ }
47
+ container.current = instance;
48
+ if (container.current) {
49
+ var _resizeObserver1;
50
+ (_resizeObserver1 = resizeObserver) === null || _resizeObserver1 === void 0 ? void 0 : _resizeObserver1.observe(container.current);
51
+ }
52
+ }
53
+ }, [
54
+ resizeObserver
55
+ ]);
56
+ return scrollRef;
57
+ };
@@ -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 var _resizeObserver;\n // Update our state when resizeCallback changes\n container.current = null;\n (_resizeObserver = 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 var _resizeObserver;\n container.current = null;\n (_resizeObserver = 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 var _resizeObserver;\n (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 ? void 0 : _resizeObserver.unobserve(container.current);\n }\n container.current = instance;\n if (container.current) {\n var _resizeObserver1;\n (_resizeObserver1 = resizeObserver) === null || _resizeObserver1 === void 0 ? void 0 : _resizeObserver1.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","_resizeObserver","current","disconnect","scrollRef","useCallback","instance","unobserve","_resizeObserver1","observe"],"mappings":";;;;+BAKiBA;;;eAAAA;;;;iEALM;0BACE;gCACC;AAGf,MAAMA,gCAAgC,CAACC;IAC9C,MAAMC,YAAYC,OAAMC,MAAM,CAAC;IAC/B,kCAAkC;IAClC,MAAMC,eAAeC,IAAAA,kBAAQ,EAAC,CAACC,SAASC;QACpCP,eAAeM,SAASC,UAAUN;IACtC;IACA,uFAAuF;IACvF,MAAM,CAACO,gBAAgBC,kBAAkB,GAAGP,OAAMQ,QAAQ,CAAC,IAAIC,IAAAA,yBAAS,MAAK,IAAIC,eAAeR,gBAAgBS;IAChHX,OAAMY,SAAS,CAAC;QACZ,IAAIC;QACJ,+CAA+C;QAC/Cd,UAAUe,OAAO,GAAG;QACnBD,CAAAA,kBAAkBP,cAAa,MAAO,QAAQO,oBAAoB,KAAK,IAAI,KAAK,IAAIA,gBAAgBE,UAAU;QAC/GR,kBAAkBE,IAAAA,yBAAS,MAAK,IAAIC,eAAeR,gBAAgBS;IACvE,uDAAuD;IACvD,GAAG;QACCb;KACH;IACDE,OAAMY,SAAS,CAAC;QACZ,OAAO;YACH,IAAIC;YACJd,UAAUe,OAAO,GAAG;YACnBD,CAAAA,kBAAkBP,cAAa,MAAO,QAAQO,oBAAoB,KAAK,IAAI,KAAK,IAAIA,gBAAgBE,UAAU;QACnH;IACJ,uDAAuD;IACvD,GAAG,EAAE;IACL,MAAMC,YAAYhB,OAAMiB,WAAW,CAAC,CAACC;QACjC,IAAInB,UAAUe,OAAO,KAAKI,UAAU;YAChC,IAAInB,UAAUe,OAAO,EAAE;gBACnB,IAAID;gBACHA,CAAAA,kBAAkBP,cAAa,MAAO,QAAQO,oBAAoB,KAAK,IAAI,KAAK,IAAIA,gBAAgBM,SAAS,CAACpB,UAAUe,OAAO;YACpI;YACAf,UAAUe,OAAO,GAAGI;YACpB,IAAInB,UAAUe,OAAO,EAAE;gBACnB,IAAIM;gBACHA,CAAAA,mBAAmBd,cAAa,MAAO,QAAQc,qBAAqB,KAAK,IAAI,KAAK,IAAIA,iBAAiBC,OAAO,CAACtB,UAAUe,OAAO;YACrI;QACJ;IACJ,GAAG;QACCR;KACH;IACD,OAAOU;AACX"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useStaticVirtualizerMeasure", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return useStaticVirtualizerMeasure;
9
+ }
10
+ });
11
+ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
12
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
13
+ const _useResizeObserverRef = require("./useResizeObserverRef");
14
+ const useStaticVirtualizerMeasure = (virtualizerProps)=>{
15
+ const { defaultItemSize, direction = 'vertical' } = virtualizerProps;
16
+ const [state, setState] = _react.useState({
17
+ virtualizerLength: 0,
18
+ bufferSize: 0,
19
+ bufferItems: 0
20
+ });
21
+ const { virtualizerLength, bufferItems, bufferSize } = state;
22
+ const resizeCallback = _react.useCallback((_entries, _observer, scrollRef)=>{
23
+ var _scrollRef, _scrollRef1, _scrollRef2;
24
+ if (!((_scrollRef = scrollRef) === null || _scrollRef === void 0 ? void 0 : _scrollRef.current)) {
25
+ return;
26
+ }
27
+ const containerSize = direction === 'vertical' ? (_scrollRef1 = scrollRef) === null || _scrollRef1 === void 0 ? void 0 : _scrollRef1.current.getBoundingClientRect().height : (_scrollRef2 = scrollRef) === null || _scrollRef2 === void 0 ? void 0 : _scrollRef2.current.getBoundingClientRect().width;
28
+ /*
29
+ * Number of items required to cover viewport.
30
+ */ const length = Math.ceil(containerSize / defaultItemSize + 1);
31
+ /*
32
+ * Number of items to append at each end, i.e. 'preload' each side before entering view.
33
+ */ const newBufferItems = Math.max(Math.floor(length / 4), 2);
34
+ /*
35
+ * This is how far we deviate into the bufferItems to detect a redraw.
36
+ */ const newBufferSize = Math.max(Math.floor(length / 8 * defaultItemSize), 1);
37
+ const totalLength = length + newBufferItems * 2 + 1;
38
+ setState({
39
+ virtualizerLength: totalLength,
40
+ bufferItems: newBufferItems,
41
+ bufferSize: newBufferSize
42
+ });
43
+ }, [
44
+ defaultItemSize,
45
+ direction
46
+ ]);
47
+ const scrollRef = (0, _useResizeObserverRef.useResizeObserverRef_unstable)(resizeCallback);
48
+ return {
49
+ virtualizerLength,
50
+ bufferItems,
51
+ bufferSize,
52
+ scrollRef
53
+ };
54
+ };
@@ -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 var _scrollRef, _scrollRef1, _scrollRef2;\n if (!((_scrollRef = scrollRef) === null || _scrollRef === void 0 ? void 0 : _scrollRef.current)) {\n return;\n }\n const containerSize = direction === 'vertical' ? (_scrollRef1 = scrollRef) === null || _scrollRef1 === void 0 ? void 0 : _scrollRef1.current.getBoundingClientRect().height : (_scrollRef2 = scrollRef) === null || _scrollRef2 === void 0 ? void 0 : _scrollRef2.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","_scrollRef","_scrollRef1","_scrollRef2","current","containerSize","getBoundingClientRect","height","width","length","Math","ceil","newBufferItems","max","floor","newBufferSize","totalLength","useResizeObserverRef_unstable"],"mappings":";;;;+BAIiBA;;;eAAAA;;;;iEAJM;sCACuB;AAGnC,MAAMA,8BAA8B,CAACC;IAC5C,MAAM,EAAEC,eAAe,EAAEC,YAAY,UAAU,EAAE,GAAGF;IACpD,MAAM,CAACG,OAAOC,SAAS,GAAGC,OAAMC,QAAQ,CAAC;QACrCC,mBAAmB;QACnBC,YAAY;QACZC,aAAa;IACjB;IACA,MAAM,EAAEF,iBAAiB,EAAEE,WAAW,EAAED,UAAU,EAAE,GAAGL;IACvD,MAAMO,iBAAiBL,OAAMM,WAAW,CAAC,CAACC,UAAUC,WAAWC;QAC3D,IAAIC,YAAYC,aAAaC;QAC7B,IAAI,CAAE,CAAA,AAACF,CAAAA,aAAaD,SAAQ,MAAO,QAAQC,eAAe,KAAK,IAAI,KAAK,IAAIA,WAAWG,OAAO,AAAD,GAAI;YAC7F;QACJ;QACA,MAAMC,gBAAgBjB,cAAc,aAAa,AAACc,CAAAA,cAAcF,SAAQ,MAAO,QAAQE,gBAAgB,KAAK,IAAI,KAAK,IAAIA,YAAYE,OAAO,CAACE,qBAAqB,GAAGC,MAAM,GAAG,AAACJ,CAAAA,cAAcH,SAAQ,MAAO,QAAQG,gBAAgB,KAAK,IAAI,KAAK,IAAIA,YAAYC,OAAO,CAACE,qBAAqB,GAAGE,KAAK;QACvS;;OAED,GAAG,MAAMC,SAASC,KAAKC,IAAI,CAACN,gBAAgBlB,kBAAkB;QAC7D;;OAED,GAAG,MAAMyB,iBAAiBF,KAAKG,GAAG,CAACH,KAAKI,KAAK,CAACL,SAAS,IAAI;QAC1D;;OAED,GAAG,MAAMM,gBAAgBL,KAAKG,GAAG,CAACH,KAAKI,KAAK,CAACL,SAAS,IAAItB,kBAAkB;QAC3E,MAAM6B,cAAcP,SAASG,iBAAiB,IAAI;QAClDtB,SAAS;YACLG,mBAAmBuB;YACnBrB,aAAaiB;YACblB,YAAYqB;QAChB;IACJ,GAAG;QACC5B;QACAC;KACH;IACD,MAAMY,YAAYiB,IAAAA,mDAA6B,EAACrB;IAChD,OAAO;QACHH;QACAE;QACAD;QACAM;IACJ;AACJ"}