@monimesl/dot-renderer-react 0.1.0-alpha.7 → 0.1.0-alpha.9

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 (240) hide show
  1. package/README.md +39 -1
  2. package/dist/LICENSE-PHOSPHOR +21 -21
  3. package/dist/_virtual/_rolldown/runtime.js +14 -0
  4. package/dist/_virtual/builtin_esm-external-require-react.js +9 -0
  5. package/dist/color.js +105 -0
  6. package/dist/components/amount-input.d.ts +6 -0
  7. package/dist/components/amount-input.js +106 -0
  8. package/dist/components/button.d.ts +6 -0
  9. package/dist/components/button.js +42 -0
  10. package/dist/components/carousel.d.ts +6 -0
  11. package/dist/components/carousel.js +254 -0
  12. package/dist/components/chip.d.ts +6 -0
  13. package/dist/components/chip.js +41 -0
  14. package/dist/components/code-input.d.ts +6 -0
  15. package/dist/components/code-input.js +97 -0
  16. package/dist/components/detail-row.d.ts +6 -0
  17. package/dist/components/detail-row.js +40 -0
  18. package/dist/components/divider.d.ts +6 -0
  19. package/dist/components/divider.js +18 -0
  20. package/dist/components/empty-state.d.ts +6 -0
  21. package/dist/components/empty-state.js +66 -0
  22. package/dist/components/feedback.d.ts +8 -0
  23. package/dist/components/feedback.js +85 -0
  24. package/dist/components/field-box.js +44 -0
  25. package/dist/components/field.js +43 -0
  26. package/dist/components/footer.d.ts +6 -0
  27. package/dist/components/footer.js +24 -0
  28. package/dist/components/grid.d.ts +7 -0
  29. package/dist/components/grid.js +98 -0
  30. package/dist/components/icon-artwork.js +74 -0
  31. package/dist/components/icon.d.ts +6 -0
  32. package/dist/components/icon.js +40 -0
  33. package/dist/components/image.d.ts +6 -0
  34. package/dist/components/image.js +40 -0
  35. package/dist/components/index.d.ts +30 -0
  36. package/dist/components/index.js +72 -0
  37. package/dist/components/input.d.ts +6 -0
  38. package/dist/components/input.js +86 -0
  39. package/dist/components/link.d.ts +6 -0
  40. package/dist/components/link.js +39 -0
  41. package/dist/components/list.d.ts +7 -0
  42. package/dist/components/list.js +143 -0
  43. package/dist/components/option-place.js +9 -0
  44. package/dist/components/option.d.ts +6 -0
  45. package/dist/components/option.js +43 -0
  46. package/dist/components/padding.d.ts +2 -0
  47. package/dist/components/padding.js +27 -0
  48. package/dist/components/pressable.js +17 -0
  49. package/dist/components/qr-code.d.ts +6 -0
  50. package/dist/components/qr-code.js +58 -0
  51. package/dist/components/scroll.d.ts +6 -0
  52. package/dist/components/scroll.js +55 -0
  53. package/dist/components/select.d.ts +6 -0
  54. package/dist/components/select.js +92 -0
  55. package/dist/components/sheet.d.ts +8 -0
  56. package/dist/components/sheet.js +105 -0
  57. package/dist/components/skeleton.d.ts +6 -0
  58. package/dist/components/skeleton.js +55 -0
  59. package/dist/components/spinner.d.ts +6 -0
  60. package/dist/components/spinner.js +48 -0
  61. package/dist/components/tabs.d.ts +7 -0
  62. package/dist/components/tabs.js +91 -0
  63. package/dist/components/text-area.d.ts +6 -0
  64. package/dist/components/text-area.js +42 -0
  65. package/dist/components/text.d.ts +6 -0
  66. package/dist/components/text.js +46 -0
  67. package/dist/components/toast.d.ts +6 -0
  68. package/dist/components/toast.js +56 -0
  69. package/dist/components/toggles.d.ts +9 -0
  70. package/dist/components/toggles.js +149 -0
  71. package/dist/components/tokens.js +37 -0
  72. package/dist/components/tones.js +24 -0
  73. package/dist/components/typed-text.js +28 -0
  74. package/dist/components/view.d.ts +6 -0
  75. package/dist/components/view.js +51 -0
  76. package/dist/index.d.ts +35 -64
  77. package/dist/index.js +32 -22636
  78. package/dist/page-root.d.ts +2 -0
  79. package/dist/page-root.js +20 -0
  80. package/dist/portal.js +8 -0
  81. package/dist/renderer.d.ts +17 -0
  82. package/dist/renderer.js +33 -0
  83. package/dist/root.d.ts +10 -0
  84. package/dist/root.js +51 -0
  85. package/dist/styles.css +95 -1
  86. package/dist/theme.d.ts +25 -0
  87. package/dist/theme.js +84 -0
  88. package/dist/types.d.ts +7 -0
  89. package/dist/vendor/@base-ui/react/checkbox/indicator/CheckboxIndicator.js +51 -0
  90. package/dist/vendor/@base-ui/react/checkbox/root/CheckboxRoot.js +265 -0
  91. package/dist/vendor/@base-ui/react/checkbox/root/CheckboxRootContext.js +13 -0
  92. package/dist/vendor/@base-ui/react/checkbox/root/CheckboxRootDataAttributes.js +11 -0
  93. package/dist/vendor/@base-ui/react/checkbox/utils/getCheckboxStateAttributesMapping.js +15 -0
  94. package/dist/vendor/@base-ui/react/checkbox-group/CheckboxGroupContext.js +10 -0
  95. package/dist/vendor/@base-ui/react/dialog/backdrop/DialogBackdrop.js +40 -0
  96. package/dist/vendor/@base-ui/react/dialog/close/DialogClose.js +39 -0
  97. package/dist/vendor/@base-ui/react/dialog/popup/DialogPopup.js +92 -0
  98. package/dist/vendor/@base-ui/react/dialog/popup/DialogPopupCssVars.js +8 -0
  99. package/dist/vendor/@base-ui/react/dialog/popup/DialogPopupDataAttributes.js +7 -0
  100. package/dist/vendor/@base-ui/react/dialog/portal/DialogPortal.js +38 -0
  101. package/dist/vendor/@base-ui/react/dialog/portal/DialogPortalContext.js +13 -0
  102. package/dist/vendor/@base-ui/react/dialog/root/DialogRoot.js +16 -0
  103. package/dist/vendor/@base-ui/react/dialog/root/DialogRootContext.js +13 -0
  104. package/dist/vendor/@base-ui/react/dialog/root/useDialogRoot.js +77 -0
  105. package/dist/vendor/@base-ui/react/dialog/root/useRenderDialogRoot.js +65 -0
  106. package/dist/vendor/@base-ui/react/dialog/store/DialogStore.js +70 -0
  107. package/dist/vendor/@base-ui/react/dialog/title/DialogTitle.js +25 -0
  108. package/dist/vendor/@base-ui/react/dialog/utils/stateAttributesMapping.js +17 -0
  109. package/dist/vendor/@base-ui/react/field/control/FieldControlDataAttributes.js +11 -0
  110. package/dist/vendor/@base-ui/react/field/item/FieldItemContext.js +10 -0
  111. package/dist/vendor/@base-ui/react/field/root/useFieldValidation.js +18 -0
  112. package/dist/vendor/@base-ui/react/fieldset/root/FieldsetRootContext.js +13 -0
  113. package/dist/vendor/@base-ui/react/floating-ui-react/components/FloatingFocusManager.js +477 -0
  114. package/dist/vendor/@base-ui/react/floating-ui-react/components/FloatingPortal.js +165 -0
  115. package/dist/vendor/@base-ui/react/floating-ui-react/components/FloatingRootStore.js +65 -0
  116. package/dist/vendor/@base-ui/react/floating-ui-react/components/FloatingTree.js +22 -0
  117. package/dist/vendor/@base-ui/react/floating-ui-react/hooks/useDismiss.js +373 -0
  118. package/dist/vendor/@base-ui/react/floating-ui-react/hooks/useSyncedFloatingRootContext.js +58 -0
  119. package/dist/vendor/@base-ui/react/floating-ui-react/utils/composite.js +40 -0
  120. package/dist/vendor/@base-ui/react/floating-ui-react/utils/constants.js +5 -0
  121. package/dist/vendor/@base-ui/react/floating-ui-react/utils/createAttribute.js +6 -0
  122. package/dist/vendor/@base-ui/react/floating-ui-react/utils/createEventEmitter.js +18 -0
  123. package/dist/vendor/@base-ui/react/floating-ui-react/utils/element.js +26 -0
  124. package/dist/vendor/@base-ui/react/floating-ui-react/utils/enqueueFocus.js +25 -0
  125. package/dist/vendor/@base-ui/react/floating-ui-react/utils/event.js +25 -0
  126. package/dist/vendor/@base-ui/react/floating-ui-react/utils/markOthers.js +116 -0
  127. package/dist/vendor/@base-ui/react/floating-ui-react/utils/nodes.js +16 -0
  128. package/dist/vendor/@base-ui/react/floating-ui-react/utils/tabbable.js +135 -0
  129. package/dist/vendor/@base-ui/react/internals/TransitionStatusDataAttributes.js +11 -0
  130. package/dist/vendor/@base-ui/react/internals/composite/composite.js +89 -0
  131. package/dist/vendor/@base-ui/react/internals/composite/constants.js +4 -0
  132. package/dist/vendor/@base-ui/react/internals/composite/item/CompositeItem.js +21 -0
  133. package/dist/vendor/@base-ui/react/internals/composite/item/useCompositeItem.js +31 -0
  134. package/dist/vendor/@base-ui/react/internals/composite/list/CompositeList.js +180 -0
  135. package/dist/vendor/@base-ui/react/internals/composite/list/CompositeListContext.js +15 -0
  136. package/dist/vendor/@base-ui/react/internals/composite/list/useCompositeListItem.js +54 -0
  137. package/dist/vendor/@base-ui/react/internals/composite/root/CompositeRoot.js +62 -0
  138. package/dist/vendor/@base-ui/react/internals/composite/root/CompositeRootContext.js +13 -0
  139. package/dist/vendor/@base-ui/react/internals/composite/root/useCompositeRoot.js +170 -0
  140. package/dist/vendor/@base-ui/react/internals/constants.js +18 -0
  141. package/dist/vendor/@base-ui/react/internals/createBaseUIEventDetails.js +40 -0
  142. package/dist/vendor/@base-ui/react/internals/direction-context/DirectionContext.js +10 -0
  143. package/dist/vendor/@base-ui/react/internals/field-constants/constants.js +33 -0
  144. package/dist/vendor/@base-ui/react/internals/field-register-control/useRegisterFieldControl.js +40 -0
  145. package/dist/vendor/@base-ui/react/internals/field-root-context/FieldRootContext.js +45 -0
  146. package/dist/vendor/@base-ui/react/internals/form-context/FormContext.js +18 -0
  147. package/dist/vendor/@base-ui/react/internals/getStateAttributesProps.js +17 -0
  148. package/dist/vendor/@base-ui/react/internals/labelable-provider/LabelableContext.js +24 -0
  149. package/dist/vendor/@base-ui/react/internals/labelable-provider/useAriaLabelledBy.js +35 -0
  150. package/dist/vendor/@base-ui/react/internals/labelable-provider/useLabelableId.js +57 -0
  151. package/dist/vendor/@base-ui/react/internals/reason-parts.js +14 -0
  152. package/dist/vendor/@base-ui/react/internals/serializeValue.js +12 -0
  153. package/dist/vendor/@base-ui/react/internals/stateAttributesMapping.js +11 -0
  154. package/dist/vendor/@base-ui/react/internals/use-button/useButton.js +137 -0
  155. package/dist/vendor/@base-ui/react/internals/useAnimationsFinished.js +94 -0
  156. package/dist/vendor/@base-ui/react/internals/useBaseUiId.js +13 -0
  157. package/dist/vendor/@base-ui/react/internals/useOpenChangeComplete.js +28 -0
  158. package/dist/vendor/@base-ui/react/internals/useRenderElement.js +109 -0
  159. package/dist/vendor/@base-ui/react/internals/useTransitionStatus.js +70 -0
  160. package/dist/vendor/@base-ui/react/internals/useValueChanged.js +15 -0
  161. package/dist/vendor/@base-ui/react/merge-props/mergeProps.js +153 -0
  162. package/dist/vendor/@base-ui/react/radio/indicator/RadioIndicator.js +46 -0
  163. package/dist/vendor/@base-ui/react/radio/root/RadioRoot.js +179 -0
  164. package/dist/vendor/@base-ui/react/radio/root/RadioRootContext.js +13 -0
  165. package/dist/vendor/@base-ui/react/radio/root/RadioRootDataAttributes.js +11 -0
  166. package/dist/vendor/@base-ui/react/radio/utils/stateAttributesMapping.js +14 -0
  167. package/dist/vendor/@base-ui/react/radio-group/RadioGroup.js +170 -0
  168. package/dist/vendor/@base-ui/react/radio-group/RadioGroupContext.js +10 -0
  169. package/dist/vendor/@base-ui/react/switch/root/SwitchRoot.js +170 -0
  170. package/dist/vendor/@base-ui/react/switch/root/SwitchRootContext.js +13 -0
  171. package/dist/vendor/@base-ui/react/switch/root/SwitchRootDataAttributes.js +11 -0
  172. package/dist/vendor/@base-ui/react/switch/stateAttributesMapping.js +12 -0
  173. package/dist/vendor/@base-ui/react/switch/thumb/SwitchThumb.js +25 -0
  174. package/dist/vendor/@base-ui/react/tabs/list/TabsList.js +98 -0
  175. package/dist/vendor/@base-ui/react/tabs/list/TabsListContext.js +13 -0
  176. package/dist/vendor/@base-ui/react/tabs/root/TabsRoot.js +213 -0
  177. package/dist/vendor/@base-ui/react/tabs/root/TabsRootContext.js +16 -0
  178. package/dist/vendor/@base-ui/react/tabs/root/TabsRootDataAttributes.js +8 -0
  179. package/dist/vendor/@base-ui/react/tabs/root/stateAttributesMapping.js +5 -0
  180. package/dist/vendor/@base-ui/react/tabs/tab/TabsTab.js +137 -0
  181. package/dist/vendor/@base-ui/react/utils/CommonPopupDataAttributes.js +24 -0
  182. package/dist/vendor/@base-ui/react/utils/CommonTriggerDataAttributes.js +11 -0
  183. package/dist/vendor/@base-ui/react/utils/FocusGuard.js +32 -0
  184. package/dist/vendor/@base-ui/react/utils/InternalBackdrop.js +30 -0
  185. package/dist/vendor/@base-ui/react/utils/dispatchClickWithModifiers.js +25 -0
  186. package/dist/vendor/@base-ui/react/utils/popupStateMapping.js +22 -0
  187. package/dist/vendor/@base-ui/react/utils/popups/popupStoreUtils.js +247 -0
  188. package/dist/vendor/@base-ui/react/utils/popups/popupTriggerMap.js +96 -0
  189. package/dist/vendor/@base-ui/react/utils/popups/store.js +94 -0
  190. package/dist/vendor/@base-ui/react/utils/resolveClassName.js +13 -0
  191. package/dist/vendor/@base-ui/react/utils/resolveRef.js +11 -0
  192. package/dist/vendor/@base-ui/react/utils/resolveStyle.js +13 -0
  193. package/dist/vendor/@base-ui/react/utils/useFocusableWhenDisabled.js +30 -0
  194. package/dist/vendor/@base-ui/utils/addEventListener.js +12 -0
  195. package/dist/vendor/@base-ui/utils/createLogOnce.js +20 -0
  196. package/dist/vendor/@base-ui/utils/empty.js +6 -0
  197. package/dist/vendor/@base-ui/utils/error.js +5 -0
  198. package/dist/vendor/@base-ui/utils/fastHooks.js +68 -0
  199. package/dist/vendor/@base-ui/utils/formatErrorMessage.js +27 -0
  200. package/dist/vendor/@base-ui/utils/getDefaultFormSubmitter.js +25 -0
  201. package/dist/vendor/@base-ui/utils/getReactElementRef.js +14 -0
  202. package/dist/vendor/@base-ui/utils/inertValue.js +8 -0
  203. package/dist/vendor/@base-ui/utils/isElementDisabled.js +6 -0
  204. package/dist/vendor/@base-ui/utils/mergeCleanups.js +14 -0
  205. package/dist/vendor/@base-ui/utils/mergeObjects.js +11 -0
  206. package/dist/vendor/@base-ui/utils/owner.js +7 -0
  207. package/dist/vendor/@base-ui/utils/platform/engine.js +8 -0
  208. package/dist/vendor/@base-ui/utils/platform/env.js +6 -0
  209. package/dist/vendor/@base-ui/utils/platform/os.js +15 -0
  210. package/dist/vendor/@base-ui/utils/platform/screen-reader.js +9 -0
  211. package/dist/vendor/@base-ui/utils/platform/shared.js +36 -0
  212. package/dist/vendor/@base-ui/utils/reactVersion.js +8 -0
  213. package/dist/vendor/@base-ui/utils/safeReact.js +13 -0
  214. package/dist/vendor/@base-ui/utils/shadowDom.js +26 -0
  215. package/dist/vendor/@base-ui/utils/store/ReactStore.js +181 -0
  216. package/dist/vendor/@base-ui/utils/store/Store.js +102 -0
  217. package/dist/vendor/@base-ui/utils/store/useStore.js +97 -0
  218. package/dist/vendor/@base-ui/utils/useAnimationFrame.js +87 -0
  219. package/dist/vendor/@base-ui/utils/useControlled.js +52 -0
  220. package/dist/vendor/@base-ui/utils/useId.js +32 -0
  221. package/dist/vendor/@base-ui/utils/useIsoLayoutEffect.js +7 -0
  222. package/dist/vendor/@base-ui/utils/useMergedRefs.js +87 -0
  223. package/dist/vendor/@base-ui/utils/useOnMount.js +12 -0
  224. package/dist/vendor/@base-ui/utils/useRefWithInit.js +18 -0
  225. package/dist/vendor/@base-ui/utils/useScrollLock.js +206 -0
  226. package/dist/vendor/@base-ui/utils/useStableCallback.js +38 -0
  227. package/dist/vendor/@base-ui/utils/useTimeout.js +43 -0
  228. package/dist/vendor/@base-ui/utils/useValueAsRef.js +27 -0
  229. package/dist/vendor/@base-ui/utils/visuallyHidden.js +23 -0
  230. package/dist/vendor/@base-ui/utils/warn.js +5 -0
  231. package/dist/vendor/@floating-ui/utils/dist/floating-ui.utils.dom.js +49 -0
  232. package/dist/vendor/uqr/dist/index.js +858 -0
  233. package/dist/vendor/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +74 -0
  234. package/dist/vendor/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js +77 -0
  235. package/dist/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +69 -0
  236. package/dist/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +64 -0
  237. package/dist/vendor/use-sync-external-store/shim/index.js +11 -0
  238. package/dist/vendor/use-sync-external-store/shim/with-selector.js +11 -0
  239. package/package.json +8 -14
  240. package/dist/garra-versions.json +0 -7
@@ -0,0 +1,25 @@
1
+ import { android } from "../../../utils/platform/os.js";
2
+ import { jsdom } from "../../../utils/platform/env.js";
3
+ //#region ../../../node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/floating-ui-react/utils/event.mjs
4
+ function stopEvent(event) {
5
+ event.preventDefault();
6
+ event.stopPropagation();
7
+ }
8
+ function isReactEvent(event) {
9
+ return "nativeEvent" in event;
10
+ }
11
+ function isVirtualClick(event) {
12
+ if (event.pointerType === "" && event.isTrusted) return true;
13
+ if (android && event.pointerType) return event.type === "click" && event.buttons === 1;
14
+ return event.detail === 0 && !event.pointerType;
15
+ }
16
+ function isVirtualPointerEvent(event) {
17
+ if (jsdom) return false;
18
+ return !android && event.width === 0 && event.height === 0 || android && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "mouse" || event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "touch";
19
+ }
20
+ function isClickLikeEvent(event) {
21
+ const type = event.type;
22
+ return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup";
23
+ }
24
+ //#endregion
25
+ export { isClickLikeEvent, isReactEvent, isVirtualClick, isVirtualPointerEvent, stopEvent };
@@ -0,0 +1,116 @@
1
+ import { getNodeName, isShadowRoot } from "../../../../@floating-ui/utils/dist/floating-ui.utils.dom.js";
2
+ import { ownerDocument } from "../../../utils/owner.js";
3
+ //#region ../../../node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/floating-ui-react/utils/markOthers.mjs
4
+ const counters = {
5
+ inert: /* @__PURE__ */ new WeakMap(),
6
+ "aria-hidden": /* @__PURE__ */ new WeakMap()
7
+ };
8
+ const markerName = "data-base-ui-inert";
9
+ const uncontrolledElementsSets = {
10
+ inert: /* @__PURE__ */ new WeakSet(),
11
+ "aria-hidden": /* @__PURE__ */ new WeakSet()
12
+ };
13
+ let markerCounterMap = /* @__PURE__ */ new WeakMap();
14
+ let lockCount = 0;
15
+ function getUncontrolledElementsSet(controlAttribute) {
16
+ return uncontrolledElementsSets[controlAttribute];
17
+ }
18
+ function unwrapHost(node) {
19
+ if (!node) return null;
20
+ return isShadowRoot(node) ? node.host : unwrapHost(node.parentNode);
21
+ }
22
+ const correctElements = (parent, targets) => targets.map((target) => {
23
+ if (parent.contains(target)) return target;
24
+ const correctedTarget = unwrapHost(target);
25
+ if (parent.contains(correctedTarget)) return correctedTarget;
26
+ return null;
27
+ }).filter((x) => x != null);
28
+ const buildKeepSet = (targets) => {
29
+ const keep = /* @__PURE__ */ new Set();
30
+ targets.forEach((target) => {
31
+ let node = target;
32
+ while (node && !keep.has(node)) {
33
+ keep.add(node);
34
+ node = node.parentNode;
35
+ }
36
+ });
37
+ return keep;
38
+ };
39
+ const collectOutsideElements = (root, keepElements, stopElements) => {
40
+ const outside = [];
41
+ const walk = (parent) => {
42
+ if (!parent || stopElements.has(parent)) return;
43
+ Array.from(parent.children).forEach((node) => {
44
+ if (getNodeName(node) === "script") return;
45
+ if (keepElements.has(node)) walk(node);
46
+ else outside.push(node);
47
+ });
48
+ };
49
+ walk(root);
50
+ return outside;
51
+ };
52
+ function applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert, { mark = true }) {
53
+ let controlAttribute = null;
54
+ if (inert) controlAttribute = "inert";
55
+ else if (ariaHidden) controlAttribute = "aria-hidden";
56
+ let counterMap = null;
57
+ let uncontrolledElementsSet = null;
58
+ const avoidElements = correctElements(body, uncorrectedAvoidElements);
59
+ const markerTargets = mark ? collectOutsideElements(body, buildKeepSet(avoidElements), new Set(avoidElements)) : [];
60
+ const hiddenElements = [];
61
+ const markedElements = [];
62
+ if (controlAttribute) {
63
+ const map = counters[controlAttribute];
64
+ const currentUncontrolledElementsSet = getUncontrolledElementsSet(controlAttribute);
65
+ uncontrolledElementsSet = currentUncontrolledElementsSet;
66
+ counterMap = map;
67
+ const ariaLiveElements = correctElements(body, Array.from(body.querySelectorAll("[aria-live]")));
68
+ const controlElements = avoidElements.concat(ariaLiveElements);
69
+ collectOutsideElements(body, buildKeepSet(controlElements), new Set(controlElements)).forEach((node) => {
70
+ const attr = node.getAttribute(controlAttribute);
71
+ const alreadyHidden = attr !== null && attr !== "false";
72
+ const counterValue = (map.get(node) || 0) + 1;
73
+ map.set(node, counterValue);
74
+ hiddenElements.push(node);
75
+ if (counterValue === 1 && alreadyHidden) currentUncontrolledElementsSet.add(node);
76
+ if (!alreadyHidden) node.setAttribute(controlAttribute, controlAttribute === "inert" ? "" : "true");
77
+ });
78
+ }
79
+ if (mark) markerTargets.forEach((node) => {
80
+ const markerValue = (markerCounterMap.get(node) || 0) + 1;
81
+ markerCounterMap.set(node, markerValue);
82
+ markedElements.push(node);
83
+ if (markerValue === 1) node.setAttribute(markerName, "");
84
+ });
85
+ lockCount += 1;
86
+ return () => {
87
+ if (counterMap) hiddenElements.forEach((element) => {
88
+ const counterValue = (counterMap.get(element) || 0) - 1;
89
+ counterMap.set(element, counterValue);
90
+ if (!counterValue) {
91
+ if (!uncontrolledElementsSet?.has(element) && controlAttribute) element.removeAttribute(controlAttribute);
92
+ uncontrolledElementsSet?.delete(element);
93
+ }
94
+ });
95
+ if (mark) markedElements.forEach((element) => {
96
+ const markerValue = (markerCounterMap.get(element) || 0) - 1;
97
+ markerCounterMap.set(element, markerValue);
98
+ if (!markerValue) element.removeAttribute(markerName);
99
+ });
100
+ lockCount -= 1;
101
+ if (!lockCount) {
102
+ counters.inert = /* @__PURE__ */ new WeakMap();
103
+ counters["aria-hidden"] = /* @__PURE__ */ new WeakMap();
104
+ uncontrolledElementsSets.inert = /* @__PURE__ */ new WeakSet();
105
+ uncontrolledElementsSets["aria-hidden"] = /* @__PURE__ */ new WeakSet();
106
+ markerCounterMap = /* @__PURE__ */ new WeakMap();
107
+ }
108
+ };
109
+ }
110
+ function markOthers(avoidElements, options = {}) {
111
+ const { ariaHidden = false, inert = false, mark = true } = options;
112
+ const body = ownerDocument(avoidElements[0]).body;
113
+ return applyAttributeToOthers(avoidElements, body, ariaHidden, inert, { mark });
114
+ }
115
+ //#endregion
116
+ export { markOthers };
@@ -0,0 +1,16 @@
1
+ //#region ../../../node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/floating-ui-react/utils/nodes.mjs
2
+ function getNodeChildren(nodes, id, onlyOpenChildren = true) {
3
+ return nodes.filter((node) => node.parentId === id).flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);
4
+ }
5
+ function getNodeAncestors(nodes, id) {
6
+ let allAncestors = [];
7
+ let currentParentId = nodes.find((node) => node.id === id)?.parentId;
8
+ while (currentParentId) {
9
+ const currentNode = nodes.find((node) => node.id === currentParentId);
10
+ currentParentId = currentNode?.parentId;
11
+ if (currentNode) allAncestors = allAncestors.concat(currentNode);
12
+ }
13
+ return allAncestors;
14
+ }
15
+ //#endregion
16
+ export { getNodeAncestors, getNodeChildren };
@@ -0,0 +1,135 @@
1
+ import { getComputedStyle, getNodeName, isHTMLElement, isShadowRoot } from "../../../../@floating-ui/utils/dist/floating-ui.utils.dom.js";
2
+ import { ownerDocument } from "../../../utils/owner.js";
3
+ import { activeElement, contains } from "../../../utils/shadowDom.js";
4
+ import { isElementVisible } from "./composite.js";
5
+ //#region ../../../node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/floating-ui-react/utils/tabbable.mjs
6
+ const CANDIDATE_SELECTOR = "a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable=\"false\"]),audio[controls],video[controls]";
7
+ function getParentElement(element) {
8
+ const assignedSlot = element.assignedSlot;
9
+ if (assignedSlot) return assignedSlot;
10
+ if (element.parentElement) return element.parentElement;
11
+ const rootNode = element.getRootNode();
12
+ return isShadowRoot(rootNode) ? rootNode.host : null;
13
+ }
14
+ function getDetailsSummary(details) {
15
+ for (const child of Array.from(details.children)) if (getNodeName(child) === "summary") return child;
16
+ return null;
17
+ }
18
+ function isWithinOpenDetailsSummary(element, details) {
19
+ const summary = getDetailsSummary(details);
20
+ return !!summary && (element === summary || contains(summary, element));
21
+ }
22
+ function isFocusableCandidate(element) {
23
+ const nodeName = element ? getNodeName(element) : "";
24
+ return element != null && element.matches(CANDIDATE_SELECTOR) && (nodeName !== "summary" || element.parentElement != null && getNodeName(element.parentElement) === "details" && getDetailsSummary(element.parentElement) === element) && (nodeName !== "details" || getDetailsSummary(element) == null) && (nodeName !== "input" || element.type !== "hidden");
25
+ }
26
+ function isFocusableElement(element) {
27
+ if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled")) return false;
28
+ for (let current = element; current; current = getParentElement(current)) {
29
+ const isAncestor = current !== element;
30
+ const isSlot = getNodeName(current) === "slot";
31
+ if (current.hasAttribute("inert")) return false;
32
+ if (isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor)) return false;
33
+ }
34
+ return true;
35
+ }
36
+ function isVisibleInTabbableTree(element, isAncestor) {
37
+ const styles = getComputedStyle(element);
38
+ if (!isAncestor) return isElementVisible(element, styles);
39
+ return styles.display !== "none";
40
+ }
41
+ function getTabIndex(element) {
42
+ const tabIndex = element.tabIndex;
43
+ if (tabIndex < 0) {
44
+ const nodeName = getNodeName(element);
45
+ if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable) return 0;
46
+ }
47
+ return tabIndex;
48
+ }
49
+ function getNamedRadioInput(element) {
50
+ if (getNodeName(element) !== "input") return null;
51
+ const input = element;
52
+ return input.type === "radio" && input.name !== "" ? input : null;
53
+ }
54
+ function isTabbableRadio(element, candidates) {
55
+ const input = getNamedRadioInput(element);
56
+ if (!input) return true;
57
+ const checkedRadio = candidates.find((candidate) => {
58
+ const radio = getNamedRadioInput(candidate);
59
+ return radio?.name === input.name && radio.form === input.form && radio.checked;
60
+ });
61
+ if (checkedRadio) return checkedRadio === input;
62
+ return candidates.find((candidate) => {
63
+ const radio = getNamedRadioInput(candidate);
64
+ return radio?.name === input.name && radio.form === input.form;
65
+ }) === input;
66
+ }
67
+ function getComposedChildren(container) {
68
+ if (isHTMLElement(container) && getNodeName(container) === "slot") {
69
+ const assignedElements = container.assignedElements({ flatten: true });
70
+ if (assignedElements.length > 0) return assignedElements;
71
+ }
72
+ if (isHTMLElement(container) && container.shadowRoot) return Array.from(container.shadowRoot.children);
73
+ return Array.from(container.children);
74
+ }
75
+ function appendCandidates(container, list) {
76
+ getComposedChildren(container).forEach((child) => {
77
+ if (isFocusableCandidate(child)) list.push(child);
78
+ appendCandidates(child, list);
79
+ });
80
+ }
81
+ function appendMatchingElements(container, selector, list) {
82
+ getComposedChildren(container).forEach((child) => {
83
+ if (isHTMLElement(child) && child.matches(selector)) list.push(child);
84
+ appendMatchingElements(child, selector, list);
85
+ });
86
+ }
87
+ function isTabbable(element) {
88
+ return isFocusableElement(element) && getTabIndex(element) >= 0;
89
+ }
90
+ function focusable(container) {
91
+ const candidates = [];
92
+ appendCandidates(container, candidates);
93
+ return candidates.filter(isFocusableElement);
94
+ }
95
+ function tabbable(container) {
96
+ const candidates = focusable(container);
97
+ return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates));
98
+ }
99
+ function getTabbableIn(container, dir) {
100
+ const list = tabbable(container);
101
+ const len = list.length;
102
+ if (len === 0) return;
103
+ const active = activeElement(ownerDocument(container));
104
+ const index = list.indexOf(active);
105
+ return list[index === -1 ? dir === 1 ? 0 : len - 1 : index + dir];
106
+ }
107
+ function getNextTabbable(referenceElement) {
108
+ return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement;
109
+ }
110
+ function getPreviousTabbable(referenceElement) {
111
+ return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement;
112
+ }
113
+ function isOutsideEvent(event, container) {
114
+ const containerElement = container || event.currentTarget;
115
+ const relatedTarget = event.relatedTarget;
116
+ return !relatedTarget || !contains(containerElement, relatedTarget);
117
+ }
118
+ function disableFocusInside(container) {
119
+ tabbable(container).forEach((element) => {
120
+ element.dataset.tabindex = element.getAttribute("tabindex") || "";
121
+ element.setAttribute("tabindex", "-1");
122
+ });
123
+ }
124
+ function enableFocusInside(container) {
125
+ const elements = [];
126
+ appendMatchingElements(container, "[data-tabindex]", elements);
127
+ elements.forEach((element) => {
128
+ const tabindex = element.dataset.tabindex;
129
+ delete element.dataset.tabindex;
130
+ if (tabindex) element.setAttribute("tabindex", tabindex);
131
+ else element.removeAttribute("tabindex");
132
+ });
133
+ }
134
+ //#endregion
135
+ export { disableFocusInside, enableFocusInside, focusable, getNextTabbable, getPreviousTabbable, isOutsideEvent, isTabbable, tabbable };
@@ -0,0 +1,11 @@
1
+ //#region ../../../node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/internals/TransitionStatusDataAttributes.mjs
2
+ /**
3
+ * Present when the component begins animating in.
4
+ */
5
+ const startingStyle = "data-starting-style";
6
+ /**
7
+ * Present when the component is animating out.
8
+ */
9
+ const endingStyle = "data-ending-style";
10
+ //#endregion
11
+ export { endingStyle, startingStyle };
@@ -0,0 +1,89 @@
1
+ import { isHTMLElement } from "../../../../@floating-ui/utils/dist/floating-ui.utils.dom.js";
2
+ import "../../floating-ui-react/utils/event.js";
3
+ import { findNonDisabledListIndex, getMaxListIndex, getMinListIndex, isIndexOutOfListBounds, isListIndexDisabled } from "../../floating-ui-react/utils/composite.js";
4
+ //#region ../../../node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/internals/composite/composite.mjs
5
+ const ARROW_UP = "ArrowUp";
6
+ const ARROW_DOWN = "ArrowDown";
7
+ const ARROW_LEFT = "ArrowLeft";
8
+ const ARROW_RIGHT = "ArrowRight";
9
+ const HOME = "Home";
10
+ const COMPOSITE_KEYS = /* @__PURE__ */ new Set([
11
+ ARROW_UP,
12
+ ARROW_DOWN,
13
+ ARROW_LEFT,
14
+ ARROW_RIGHT,
15
+ HOME,
16
+ "End"
17
+ ]);
18
+ const SHIFT = "Shift";
19
+ const MODIFIER_KEYS = [
20
+ SHIFT,
21
+ "Control",
22
+ "Alt",
23
+ "Meta"
24
+ ];
25
+ function isInputElement(element) {
26
+ return isHTMLElement(element) && element.tagName === "INPUT";
27
+ }
28
+ function isNativeInput(element) {
29
+ if (isInputElement(element) && element.selectionStart != null) return true;
30
+ if (isHTMLElement(element) && element.tagName === "TEXTAREA") return true;
31
+ return false;
32
+ }
33
+ function scrollIntoViewIfNeeded(scrollContainer, element, direction, orientation) {
34
+ if (!scrollContainer || !element || !element.scrollTo) return;
35
+ let targetX = scrollContainer.scrollLeft;
36
+ let targetY = scrollContainer.scrollTop;
37
+ const isOverflowingX = scrollContainer.clientWidth < scrollContainer.scrollWidth;
38
+ const isOverflowingY = scrollContainer.clientHeight < scrollContainer.scrollHeight;
39
+ if (isOverflowingX && orientation !== "vertical") {
40
+ const elementOffsetLeft = getOffset(scrollContainer, element, "left");
41
+ const containerStyles = getStyles(scrollContainer);
42
+ const elementStyles = getStyles(element);
43
+ if (direction === "ltr") {
44
+ if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;
45
+ else if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;
46
+ }
47
+ if (direction === "rtl") {
48
+ if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;
49
+ else if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;
50
+ }
51
+ }
52
+ if (isOverflowingY && orientation !== "horizontal") {
53
+ const elementOffsetTop = getOffset(scrollContainer, element, "top");
54
+ const containerStyles = getStyles(scrollContainer);
55
+ const elementStyles = getStyles(element);
56
+ if (elementOffsetTop - elementStyles.scrollMarginTop < scrollContainer.scrollTop + containerStyles.scrollPaddingTop) targetY = elementOffsetTop - elementStyles.scrollMarginTop - containerStyles.scrollPaddingTop;
57
+ else if (elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom > scrollContainer.scrollTop + scrollContainer.clientHeight - containerStyles.scrollPaddingBottom) targetY = elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom - scrollContainer.clientHeight + containerStyles.scrollPaddingBottom;
58
+ }
59
+ scrollContainer.scrollTo({
60
+ left: targetX,
61
+ top: targetY,
62
+ behavior: "auto"
63
+ });
64
+ }
65
+ function getOffset(ancestor, element, side) {
66
+ const propName = side === "left" ? "offsetLeft" : "offsetTop";
67
+ let result = 0;
68
+ while (element.offsetParent) {
69
+ result += element[propName];
70
+ if (element.offsetParent === ancestor) break;
71
+ element = element.offsetParent;
72
+ }
73
+ return result;
74
+ }
75
+ function getStyles(element) {
76
+ const styles = getComputedStyle(element);
77
+ return {
78
+ scrollMarginTop: parseFloat(styles.scrollMarginTop) || 0,
79
+ scrollMarginRight: parseFloat(styles.scrollMarginRight) || 0,
80
+ scrollMarginBottom: parseFloat(styles.scrollMarginBottom) || 0,
81
+ scrollMarginLeft: parseFloat(styles.scrollMarginLeft) || 0,
82
+ scrollPaddingTop: parseFloat(styles.scrollPaddingTop) || 0,
83
+ scrollPaddingRight: parseFloat(styles.scrollPaddingRight) || 0,
84
+ scrollPaddingBottom: parseFloat(styles.scrollPaddingBottom) || 0,
85
+ scrollPaddingLeft: parseFloat(styles.scrollPaddingLeft) || 0
86
+ };
87
+ }
88
+ //#endregion
89
+ export { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, COMPOSITE_KEYS, HOME, MODIFIER_KEYS, SHIFT, findNonDisabledListIndex, getMaxListIndex, getMinListIndex, isIndexOutOfListBounds, isListIndexDisabled, isNativeInput, scrollIntoViewIfNeeded };
@@ -0,0 +1,4 @@
1
+ //#region ../../../node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/internals/composite/constants.mjs
2
+ const ACTIVE_COMPOSITE_ITEM = "data-composite-item-active";
3
+ //#endregion
4
+ export { ACTIVE_COMPOSITE_ITEM };
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { EMPTY_ARRAY, EMPTY_OBJECT } from "../../../../utils/empty.js";
3
+ import { useRenderElement } from "../../useRenderElement.js";
4
+ import { useCompositeItem } from "./useCompositeItem.js";
5
+ //#region ../../../node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/internals/composite/item/CompositeItem.mjs
6
+ function CompositeItem(componentProps) {
7
+ const { render, className, style, state = EMPTY_OBJECT, props = EMPTY_ARRAY, refs = EMPTY_ARRAY, metadata, stateAttributesMapping, tag = "div", ...elementProps } = componentProps;
8
+ const { compositeProps, compositeRef } = useCompositeItem({ metadata });
9
+ return useRenderElement(tag, componentProps, {
10
+ state,
11
+ ref: [compositeRef, ...refs],
12
+ props: [
13
+ compositeProps,
14
+ ...props,
15
+ elementProps
16
+ ],
17
+ stateAttributesMapping
18
+ });
19
+ }
20
+ //#endregion
21
+ export { CompositeItem };
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ import { useMergedRefs } from "../../../../utils/useMergedRefs.js";
3
+ import { useCompositeRootContext } from "../root/CompositeRootContext.js";
4
+ import { useCompositeListItem } from "../list/useCompositeListItem.js";
5
+ import * as React from "react";
6
+ //#region ../../../node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/internals/composite/item/useCompositeItem.mjs
7
+ function useCompositeItem(params = {}) {
8
+ const { highlightItemOnHover, highlightedIndex, onHighlightedIndexChange } = useCompositeRootContext();
9
+ const { ref, index } = useCompositeListItem(params);
10
+ const isHighlighted = highlightedIndex === index;
11
+ const itemRef = React.useRef(null);
12
+ const mergedRef = useMergedRefs(ref, itemRef);
13
+ return {
14
+ compositeProps: {
15
+ tabIndex: isHighlighted ? 0 : -1,
16
+ onFocus() {
17
+ onHighlightedIndexChange(index);
18
+ },
19
+ onMouseMove() {
20
+ const item = itemRef.current;
21
+ if (!highlightItemOnHover || !item) return;
22
+ const disabled = item.hasAttribute("disabled") || item.ariaDisabled === "true";
23
+ if (!isHighlighted && !disabled) item.focus();
24
+ }
25
+ },
26
+ compositeRef: mergedRef,
27
+ index
28
+ };
29
+ }
30
+ //#endregion
31
+ export { useCompositeItem };
@@ -0,0 +1,180 @@
1
+ "use client";
2
+ import { useRefWithInit } from "../../../../utils/useRefWithInit.js";
3
+ import { useStableCallback } from "../../../../utils/useStableCallback.js";
4
+ import { useIsoLayoutEffect } from "../../../../utils/useIsoLayoutEffect.js";
5
+ import { CompositeListContext } from "./CompositeListContext.js";
6
+ import * as React from "react";
7
+ import { jsx } from "react/jsx-runtime";
8
+ //#region ../../../node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs
9
+ /**
10
+ * Provides context for a list of items in a composite component.
11
+ */
12
+ function CompositeList(props) {
13
+ const { children, elementsRef, labelsRef, onMapChange: onMapChangeProp } = props;
14
+ const onMapChange = useStableCallback(onMapChangeProp);
15
+ const [, setMapTick] = React.useState(false);
16
+ const listeners = useRefWithInit(createListeners).current;
17
+ const map = useRefWithInit(createMap).current;
18
+ const nextIndexRef = React.useRef(0);
19
+ const isDirtyRef = React.useRef(true);
20
+ const itemsRef = React.useRef(null);
21
+ const mutationObserverRef = React.useRef(null);
22
+ const scheduleMapUpdate = useStableCallback(() => {
23
+ if (isDirtyRef.current) return;
24
+ isDirtyRef.current = true;
25
+ setMapTick((tick) => !tick);
26
+ });
27
+ const register = useStableCallback((node, registration) => {
28
+ map.set(node, registration);
29
+ scheduleMapUpdate();
30
+ });
31
+ const unregister = useStableCallback((node) => {
32
+ map.delete(node);
33
+ scheduleMapUpdate();
34
+ });
35
+ const syncRefs = useStableCallback((items) => {
36
+ const nextMap = /* @__PURE__ */ new Map();
37
+ elementsRef.current.length = 0;
38
+ if (labelsRef) labelsRef.current.length = 0;
39
+ items.forEach((item) => {
40
+ nextMap.set(item.element, {
41
+ ...item.registration.metadata ?? {},
42
+ index: item.index
43
+ });
44
+ elementsRef.current[item.index] = item.element;
45
+ if (labelsRef) labelsRef.current[item.index] = item.registration.label !== void 0 ? item.registration.label : item.registration.textRef?.current?.textContent ?? item.element.textContent;
46
+ });
47
+ nextIndexRef.current = elementsRef.current.length;
48
+ return nextMap;
49
+ });
50
+ function observe(sortedNodes) {
51
+ mutationObserverRef.current?.disconnect();
52
+ mutationObserverRef.current = null;
53
+ if (typeof MutationObserver !== "function" || sortedNodes.length < 2) return;
54
+ const mutationObserver = new MutationObserver((entries) => {
55
+ if (!hasMovedNode(entries)) return;
56
+ let previousConnectedNode = null;
57
+ for (const node of sortedNodes) {
58
+ if (!node.isConnected) continue;
59
+ if (previousConnectedNode && sortByDocumentPosition(previousConnectedNode, node) > 0) {
60
+ mutationObserver.disconnect();
61
+ scheduleMapUpdate();
62
+ return;
63
+ }
64
+ previousConnectedNode = node;
65
+ }
66
+ });
67
+ mutationObserverRef.current = mutationObserver;
68
+ const roots = /* @__PURE__ */ new Set();
69
+ for (let i = 1; i < sortedNodes.length; i += 1) {
70
+ const root = getCommonAncestor(sortedNodes[i - 1], sortedNodes[i]);
71
+ if (root) roots.add(root);
72
+ }
73
+ roots.forEach((root) => mutationObserver.observe(root, { childList: true }));
74
+ }
75
+ const flush = useStableCallback(() => {
76
+ const [items, automaticNodes] = getCompositeListSnapshot(map);
77
+ const nextMap = syncRefs(items);
78
+ const previousItems = itemsRef.current;
79
+ const changed = !previousItems || previousItems.length !== items.length || items.some((item, index) => {
80
+ const previousItem = previousItems[index];
81
+ return item.index !== previousItem.index || item.element !== previousItem.element || item.registration.index !== previousItem.registration.index || item.registration.metadata !== previousItem.registration.metadata;
82
+ });
83
+ observe(automaticNodes);
84
+ itemsRef.current = items;
85
+ isDirtyRef.current = false;
86
+ if (!changed) return;
87
+ listeners.forEach((listener) => listener(nextMap));
88
+ onMapChange(nextMap);
89
+ });
90
+ useIsoLayoutEffect(() => {
91
+ if (!isDirtyRef.current && itemsRef.current) syncRefs(itemsRef.current);
92
+ return () => {
93
+ elementsRef.current = [];
94
+ if (labelsRef) labelsRef.current = [];
95
+ };
96
+ }, [
97
+ elementsRef,
98
+ labelsRef,
99
+ syncRefs
100
+ ]);
101
+ useIsoLayoutEffect(() => {
102
+ if (isDirtyRef.current) flush();
103
+ });
104
+ useIsoLayoutEffect(() => {
105
+ return () => {
106
+ mutationObserverRef.current?.disconnect();
107
+ isDirtyRef.current = true;
108
+ };
109
+ }, []);
110
+ const subscribeMapChange = useStableCallback((fn) => {
111
+ listeners.add(fn);
112
+ return () => {
113
+ listeners.delete(fn);
114
+ };
115
+ });
116
+ const contextValue = React.useMemo(() => ({
117
+ register,
118
+ unregister,
119
+ subscribeMapChange,
120
+ nextIndexRef
121
+ }), [
122
+ register,
123
+ unregister,
124
+ subscribeMapChange,
125
+ nextIndexRef
126
+ ]);
127
+ return /*#__PURE__*/ jsx(CompositeListContext.Provider, {
128
+ value: contextValue,
129
+ children
130
+ });
131
+ }
132
+ function createMap() {
133
+ return /* @__PURE__ */ new Map();
134
+ }
135
+ function createListeners() {
136
+ return /* @__PURE__ */ new Set();
137
+ }
138
+ function getCompositeListSnapshot(map) {
139
+ const reservedIndices = /* @__PURE__ */ new Set();
140
+ const items = [];
141
+ const automaticItems = [];
142
+ map.forEach((registration, node) => {
143
+ if (!node.isConnected) return;
144
+ const index = registration.index;
145
+ const item = {
146
+ index: index ?? -1,
147
+ element: node,
148
+ registration
149
+ };
150
+ if (index === null) automaticItems.push(item);
151
+ else if (index >= 0) {
152
+ reservedIndices.add(index);
153
+ items.push(item);
154
+ }
155
+ });
156
+ let nextAutomaticIndex = 0;
157
+ automaticItems.sort((a, b) => sortByDocumentPosition(a.element, b.element));
158
+ automaticItems.forEach((item) => {
159
+ while (reservedIndices.has(nextAutomaticIndex)) nextAutomaticIndex += 1;
160
+ item.index = nextAutomaticIndex;
161
+ items.push(item);
162
+ nextAutomaticIndex += 1;
163
+ });
164
+ if (reservedIndices.size > 0) items.sort((a, b) => a.index - b.index);
165
+ return [items, automaticItems.map((item) => item.element)];
166
+ }
167
+ function getCommonAncestor(firstNode, lastNode) {
168
+ let ancestor = firstNode.parentElement;
169
+ while (ancestor && !ancestor.contains(lastNode)) ancestor = ancestor.parentElement;
170
+ return ancestor;
171
+ }
172
+ function hasMovedNode(entries) {
173
+ for (const entry of entries) for (let i = 0; i < entry.removedNodes.length; i += 1) if (entry.removedNodes[i].isConnected) return true;
174
+ return false;
175
+ }
176
+ function sortByDocumentPosition(a, b) {
177
+ return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
178
+ }
179
+ //#endregion
180
+ export { CompositeList };
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ //#region ../../../node_modules/.pnpm/@base-ui+react@1.8.0_@date-fns+tz@1.5.0_@types+react@19.3.0_date-fns@4.4.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@base-ui/react/internals/composite/list/CompositeListContext.mjs
4
+ const CompositeListContext = /*#__PURE__*/ React.createContext({
5
+ register: () => {},
6
+ unregister: () => {},
7
+ subscribeMapChange: () => () => {},
8
+ nextIndexRef: { current: 0 }
9
+ });
10
+ if (process.env.NODE_ENV !== "production") CompositeListContext.displayName = "CompositeListContext";
11
+ function useCompositeListContext() {
12
+ return React.useContext(CompositeListContext);
13
+ }
14
+ //#endregion
15
+ export { CompositeListContext, useCompositeListContext };