base-ui-vue 0.4.0 → 0.5.0

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 (187) hide show
  1. package/dist/arrow/TooltipArrow.cjs +609 -0
  2. package/dist/arrow/TooltipArrow.cjs.map +1 -0
  3. package/dist/arrow/TooltipArrow.js +478 -0
  4. package/dist/arrow/TooltipArrow.js.map +1 -0
  5. package/dist/button/Button.cjs +5 -317
  6. package/dist/button/Button.cjs.map +1 -1
  7. package/dist/button/Button.js +3 -249
  8. package/dist/button/Button.js.map +1 -1
  9. package/dist/button/ToolbarButton.cjs +13 -6
  10. package/dist/button/ToolbarButton.cjs.map +1 -1
  11. package/dist/button/ToolbarButton.js +3 -2
  12. package/dist/button/ToolbarButton.js.map +1 -1
  13. package/dist/checkbox/index.cjs +20 -9
  14. package/dist/checkbox/index.cjs.map +1 -1
  15. package/dist/checkbox/index.js +7 -2
  16. package/dist/checkbox/index.js.map +1 -1
  17. package/dist/checkbox-group/CheckboxGroup.cjs +14 -13
  18. package/dist/checkbox-group/CheckboxGroup.cjs.map +1 -1
  19. package/dist/checkbox-group/CheckboxGroup.js +2 -1
  20. package/dist/checkbox-group/CheckboxGroup.js.map +1 -1
  21. package/dist/components/FloatingPortal.cjs +66 -0
  22. package/dist/components/FloatingPortal.cjs.map +1 -0
  23. package/dist/components/FloatingPortal.js +55 -0
  24. package/dist/components/FloatingPortal.js.map +1 -0
  25. package/dist/components/FloatingRootStore.cjs +101 -0
  26. package/dist/components/FloatingRootStore.cjs.map +1 -0
  27. package/dist/components/FloatingRootStore.js +84 -0
  28. package/dist/components/FloatingRootStore.js.map +1 -0
  29. package/dist/components/FloatingTree.cjs +33 -0
  30. package/dist/components/FloatingTree.cjs.map +1 -0
  31. package/dist/components/FloatingTree.js +22 -0
  32. package/dist/components/FloatingTree.js.map +1 -0
  33. package/dist/composite/composite.cjs +6 -0
  34. package/dist/composite/composite.js +1 -1
  35. package/dist/content/ScrollAreaContent.cjs +3 -3
  36. package/dist/content/ScrollAreaContent.cjs.map +1 -1
  37. package/dist/content/ScrollAreaContent.js +1 -1
  38. package/dist/control/FieldControl.cjs +3 -3
  39. package/dist/control/FieldControl.cjs.map +1 -1
  40. package/dist/control/FieldControl.js +1 -1
  41. package/dist/control/SliderControl.cjs +3 -3
  42. package/dist/control/SliderControl.cjs.map +1 -1
  43. package/dist/control/SliderControl.js +1 -1
  44. package/dist/corner/ScrollAreaCorner.cjs +3 -3
  45. package/dist/corner/ScrollAreaCorner.cjs.map +1 -1
  46. package/dist/corner/ScrollAreaCorner.js +1 -1
  47. package/dist/decrement/NumberFieldDecrement.cjs +10 -3
  48. package/dist/decrement/NumberFieldDecrement.cjs.map +1 -1
  49. package/dist/decrement/NumberFieldDecrement.js +3 -2
  50. package/dist/decrement/NumberFieldDecrement.js.map +1 -1
  51. package/dist/description/FieldDescription.cjs +2 -2
  52. package/dist/description/FieldDescription.cjs.map +1 -1
  53. package/dist/description/FieldDescription.js +1 -1
  54. package/dist/error/FieldError.cjs +2 -2
  55. package/dist/error/FieldError.cjs.map +1 -1
  56. package/dist/error/FieldError.js +1 -1
  57. package/dist/fallback/AvatarFallback.cjs +2 -2
  58. package/dist/fallback/AvatarFallback.cjs.map +1 -1
  59. package/dist/fallback/AvatarFallback.js +1 -1
  60. package/dist/floating-ui-vue/index.js +638 -0
  61. package/dist/floating-ui-vue/index.js.map +1 -0
  62. package/dist/form/Form.cjs +3 -3
  63. package/dist/form/Form.cjs.map +1 -1
  64. package/dist/form/Form.js +1 -1
  65. package/dist/group/NumberFieldGroup.cjs +3 -3
  66. package/dist/group/NumberFieldGroup.cjs.map +1 -1
  67. package/dist/group/NumberFieldGroup.js +1 -1
  68. package/dist/group/ToolbarGroup.cjs +2 -2
  69. package/dist/group/ToolbarGroup.cjs.map +1 -1
  70. package/dist/group/ToolbarGroup.js +1 -1
  71. package/dist/header/AccordionHeader.cjs +2 -2
  72. package/dist/header/AccordionHeader.cjs.map +1 -1
  73. package/dist/header/AccordionHeader.js +1 -1
  74. package/dist/hooks/useDismiss.cjs +502 -0
  75. package/dist/hooks/useDismiss.cjs.map +1 -0
  76. package/dist/hooks/useHoverFloatingInteraction.cjs +233 -0
  77. package/dist/hooks/useHoverFloatingInteraction.cjs.map +1 -0
  78. package/dist/image/AvatarImage.cjs +4 -4
  79. package/dist/image/AvatarImage.cjs.map +1 -1
  80. package/dist/image/AvatarImage.js +1 -1
  81. package/dist/increment/NumberFieldIncrement.cjs +3 -2
  82. package/dist/increment/NumberFieldIncrement.cjs.map +1 -1
  83. package/dist/increment/NumberFieldIncrement.js +2 -1
  84. package/dist/increment/NumberFieldIncrement.js.map +1 -1
  85. package/dist/index.cjs +60 -7
  86. package/dist/index.d.cts +3838 -1726
  87. package/dist/index.d.cts.map +1 -1
  88. package/dist/index.d.ts +3838 -1726
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +4 -3
  91. package/dist/index2.cjs +7475 -3089
  92. package/dist/index2.cjs.map +1 -1
  93. package/dist/index2.js +7215 -3106
  94. package/dist/index2.js.map +1 -1
  95. package/dist/rolldown-runtime.js +36 -0
  96. package/package.json +1 -1
  97. package/src/floating-ui-vue/components/FloatingPortal.ts +171 -0
  98. package/src/floating-ui-vue/components/FloatingPortal.vue +259 -0
  99. package/src/floating-ui-vue/components/FloatingRootStore.ts +83 -0
  100. package/src/floating-ui-vue/components/FloatingTree.ts +64 -0
  101. package/src/floating-ui-vue/components/FloatingTreeStore.ts +21 -0
  102. package/src/floating-ui-vue/hooks/useDismiss.ts +689 -0
  103. package/src/floating-ui-vue/hooks/useHoverFloatingInteraction.ts +244 -0
  104. package/src/floating-ui-vue/hooks/useHoverInteractionSharedState.ts +125 -0
  105. package/src/floating-ui-vue/hooks/useHoverShared.ts +53 -0
  106. package/src/floating-ui-vue/index.ts +48 -0
  107. package/src/floating-ui-vue/middleware/arrow.ts +114 -0
  108. package/src/floating-ui-vue/types.ts +117 -0
  109. package/src/floating-ui-vue/utils/composite.ts +20 -0
  110. package/src/floating-ui-vue/utils/constants.ts +2 -0
  111. package/src/floating-ui-vue/utils/createAttribute.ts +3 -0
  112. package/src/floating-ui-vue/utils/createEventEmitter.ts +20 -0
  113. package/src/floating-ui-vue/utils/element.ts +59 -0
  114. package/src/floating-ui-vue/utils/event.ts +15 -0
  115. package/src/floating-ui-vue/utils/nodes.ts +14 -0
  116. package/src/floating-ui-vue/utils/tabbable.ts +309 -0
  117. package/src/index.ts +4 -0
  118. package/src/radio/index.ts +28 -0
  119. package/src/radio/indicator/RadioIndicator.vue +90 -0
  120. package/src/radio/indicator/RadioIndicatorDataAttributes.ts +54 -0
  121. package/src/radio/root/RadioRoot.vue +544 -0
  122. package/src/radio/root/RadioRootContext.ts +18 -0
  123. package/src/radio/root/RadioRootDataAttributes.ts +46 -0
  124. package/src/radio/utils/stateAttributesMapping.ts +29 -0
  125. package/src/radio-group/RadioGroup.vue +381 -0
  126. package/src/radio-group/RadioGroupContext.ts +42 -0
  127. package/src/radio-group/RadioGroupDataAttributes.ts +6 -0
  128. package/src/radio-group/index.ts +10 -0
  129. package/src/tabs/index.ts +38 -0
  130. package/src/tabs/indicator/TabsIndicator.vue +201 -0
  131. package/src/tabs/indicator/TabsIndicatorCssVars.ts +26 -0
  132. package/src/tabs/indicator/TabsIndicatorDataAttributes.ts +12 -0
  133. package/src/tabs/indicator/prehydrationScript.min.ts +5 -0
  134. package/src/tabs/indicator/prehydrationScript.template.js +87 -0
  135. package/src/tabs/list/TabsList.vue +201 -0
  136. package/src/tabs/list/TabsListContext.ts +29 -0
  137. package/src/tabs/list/TabsListDataAttributes.ts +12 -0
  138. package/src/tabs/panel/TabsPanel.vue +167 -0
  139. package/src/tabs/panel/TabsPanelDataAttributes.ts +28 -0
  140. package/src/tabs/root/TabsRoot.vue +468 -0
  141. package/src/tabs/root/TabsRootContext.ts +56 -0
  142. package/src/tabs/root/TabsRootDataAttributes.ts +12 -0
  143. package/src/tabs/root/stateAttributesMapping.ts +9 -0
  144. package/src/tabs/tab/TabsTab.vue +274 -0
  145. package/src/tabs/tab/TabsTabDataAttributes.ts +20 -0
  146. package/src/tabs/utils/areTabValuesEqual.ts +6 -0
  147. package/src/tooltip/arrow/TooltipArrow.vue +116 -0
  148. package/src/tooltip/arrow/TooltipArrowDataAttributes.ts +31 -0
  149. package/src/tooltip/index.ts +54 -0
  150. package/src/tooltip/popup/TooltipPopup.vue +142 -0
  151. package/src/tooltip/popup/TooltipPopupDataAttributes.ts +35 -0
  152. package/src/tooltip/portal/TooltipPortal.vue +83 -0
  153. package/src/tooltip/portal/TooltipPortalContext.ts +19 -0
  154. package/src/tooltip/positioner/TooltipPositioner.vue +221 -0
  155. package/src/tooltip/positioner/TooltipPositionerContext.ts +23 -0
  156. package/src/tooltip/positioner/TooltipPositionerCssVars.ts +27 -0
  157. package/src/tooltip/positioner/TooltipPositionerDataAttributes.ts +26 -0
  158. package/src/tooltip/provider/TooltipProvider.vue +78 -0
  159. package/src/tooltip/provider/TooltipProviderContext.ts +19 -0
  160. package/src/tooltip/root/TooltipRoot.vue +401 -0
  161. package/src/tooltip/root/TooltipRootContext.ts +71 -0
  162. package/src/tooltip/store/TooltipHandle.ts +215 -0
  163. package/src/tooltip/trigger/TooltipTrigger.vue +343 -0
  164. package/src/tooltip/trigger/TooltipTriggerDataAttributes.ts +12 -0
  165. package/src/tooltip/utils/constants.ts +2 -0
  166. package/src/tooltip/viewport/TooltipViewport.vue +149 -0
  167. package/src/tooltip/viewport/TooltipViewportCssVars.ts +14 -0
  168. package/src/tooltip/viewport/TooltipViewportDataAttributes.ts +26 -0
  169. package/src/utils/FloatingPortalLite.vue +66 -0
  170. package/src/utils/FocusGuard.vue +36 -0
  171. package/src/utils/adaptiveOriginMiddleware.ts +79 -0
  172. package/src/utils/addEventListener.ts +16 -0
  173. package/src/utils/constants.ts +11 -0
  174. package/src/utils/createBaseUIEventDetails.ts +2 -0
  175. package/src/utils/getCssDimensions.ts +19 -0
  176. package/src/utils/getDisabledMountTransitionStyles.ts +9 -0
  177. package/src/utils/hideMiddleware.ts +19 -0
  178. package/src/utils/mergeCleanups.ts +7 -0
  179. package/src/utils/platform.ts +18 -0
  180. package/src/utils/popupStateMapping.ts +103 -0
  181. package/src/utils/reasons.ts +4 -0
  182. package/src/utils/serializeValue.ts +17 -0
  183. package/src/utils/useAnchorPositioning.ts +644 -0
  184. package/src/utils/usePopupAutoResize.ts +254 -0
  185. package/src/utils/usePopupViewport.ts +398 -0
  186. package/src/utils/usePositioner.ts +61 -0
  187. package/src/utils/useRenderElement.ts +3 -0
@@ -0,0 +1,638 @@
1
+ import { REASONS, createChangeEventDetails } from "../checkbox/index.js";
2
+ import { contains, getTarget, ownerDocument } from "../control/SliderControl.js";
3
+ import { isMouseLikePointerType } from "../components/FloatingRootStore.js";
4
+ import { Timeout, useTimeout } from "../decrement/NumberFieldDecrement.js";
5
+ import { createAttribute } from "../components/FloatingPortal.js";
6
+ import { useFloatingParentNodeId, useFloatingTree } from "../components/FloatingTree.js";
7
+ import { onScopeDispose, shallowRef, toValue, watchEffect } from "vue";
8
+ import { getComputedStyle, getParentNode, isElement, isHTMLElement, isLastTraversableNode, isShadowRoot } from "@floating-ui/utils/dom";
9
+ import { autoUpdate, flip, limitShift, offset, shift, size, useFloating } from "@floating-ui/vue";
10
+
11
+ //#region src/floating-ui-vue/utils/constants.ts
12
+ const ARROW_LEFT = "ArrowLeft";
13
+ const ARROW_RIGHT = "ArrowRight";
14
+ const ARROW_UP = "ArrowUp";
15
+ const ARROW_DOWN = "ArrowDown";
16
+ const TYPEABLE_SELECTOR = "input:not([type=\"hidden\"]):not([disabled]),[contenteditable]:not([contenteditable=\"false\"]),textarea:not([disabled])";
17
+
18
+ //#endregion
19
+ //#region src/floating-ui-vue/utils/element.ts
20
+ function isTargetInsideEnabledTrigger(target, triggerElements) {
21
+ if (!isElement(target)) return false;
22
+ const targetElement = target;
23
+ if (triggerElements.hasElement(targetElement)) return !targetElement.hasAttribute("data-trigger-disabled");
24
+ for (const [, trigger] of triggerElements.entries()) if (contains(trigger, targetElement)) return !trigger.hasAttribute("data-trigger-disabled");
25
+ return false;
26
+ }
27
+ function isEventTargetWithin(event, node) {
28
+ if (node == null) return false;
29
+ if ("composedPath" in event) return event.composedPath().includes(node);
30
+ const eventAgain = event;
31
+ return eventAgain.target != null && node.contains(eventAgain.target);
32
+ }
33
+ function isRootElement(element) {
34
+ return element.matches("html,body");
35
+ }
36
+ function isInteractiveElement(element) {
37
+ return element?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${TYPEABLE_SELECTOR}`) != null;
38
+ }
39
+ function matchesFocusVisible(element) {
40
+ if (!element) return true;
41
+ try {
42
+ return element.matches(":focus-visible");
43
+ } catch {
44
+ return true;
45
+ }
46
+ }
47
+
48
+ //#endregion
49
+ //#region src/utils/detectBrowser.ts
50
+ const ua = typeof navigator !== "undefined" ? navigator.userAgent : "";
51
+ const platform$2 = typeof navigator !== "undefined" ? navigator.platform : "";
52
+ const maxTouchPoints = typeof navigator !== "undefined" ? navigator.maxTouchPoints : 0;
53
+ const isWebKit = typeof CSS !== "undefined" && typeof CSS.supports === "function" ? CSS.supports("-webkit-backdrop-filter:none") && !/chrome|android/i.test(ua) : /\b(?:iphone|ipad|ipod)\b/i.test(ua);
54
+ const isFirefox = /firefox/i.test(ua);
55
+ const isIOS = /\b(?:iphone|ipad|ipod)\b/i.test(ua) || platform$2 === "MacIntel" && maxTouchPoints > 1;
56
+
57
+ //#endregion
58
+ //#region src/utils/addEventListener.ts
59
+ function addEventListener(target, type, listener, options) {
60
+ if (!target) return;
61
+ target.addEventListener(type, listener, options);
62
+ return () => {
63
+ target.removeEventListener(type, listener, options);
64
+ };
65
+ }
66
+
67
+ //#endregion
68
+ //#region src/utils/mergeCleanups.ts
69
+ function mergeCleanups(...cleanups) {
70
+ return () => {
71
+ for (const cleanup of cleanups) cleanup?.();
72
+ };
73
+ }
74
+
75
+ //#endregion
76
+ //#region src/utils/platform.ts
77
+ const platformName = typeof navigator !== "undefined" ? navigator.platform : "";
78
+ const userAgent = typeof navigator !== "undefined" ? navigator.userAgent : "";
79
+ const isApplePlatform = isIOS || /mac/i.test(platformName) || /\b(?:macintosh|iphone|ipad|ipod)\b/i.test(userAgent);
80
+ const platform$1 = {
81
+ engine: { webkit: isWebKit },
82
+ screenReader: { voiceOver: isApplePlatform }
83
+ };
84
+
85
+ //#endregion
86
+ //#region src/floating-ui-vue/utils/nodes.ts
87
+ function getNodeChildren(nodes, id, onlyOpenChildren = true) {
88
+ return nodes.filter((node) => node.parentId === id).flatMap((child) => [...!onlyOpenChildren || child.context?.open.value ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);
89
+ }
90
+
91
+ //#endregion
92
+ //#region src/floating-ui-vue/hooks/useDismiss.ts
93
+ function alwaysFalse() {
94
+ return false;
95
+ }
96
+ function normalizeProp(normalizable) {
97
+ return {
98
+ escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false,
99
+ outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true
100
+ };
101
+ }
102
+ /**
103
+ * Closes the floating element when a dismissal is requested — by default, when
104
+ * the user presses the `escape` key or outside of the floating element.
105
+ * @see https://floating-ui.com/docs/useDismiss
106
+ */
107
+ function useDismiss(context, props = {}) {
108
+ const store = "rootStore" in context ? context.rootStore : context;
109
+ const open = store.useState("open");
110
+ const floatingElement = store.useState("floatingElement");
111
+ const domReferenceElement = store.useState("domReferenceElement");
112
+ const { dataRef } = store.context;
113
+ const tree = useFloatingTree(props.externalTree);
114
+ const pressStartedInsideRef = shallowRef(false);
115
+ const pressStartPreventedRef = shallowRef(false);
116
+ const suppressNextOutsideClickRef = shallowRef(false);
117
+ const isComposingRef = shallowRef(false);
118
+ const currentPointerTypeRef = shallowRef("");
119
+ const touchStateRef = shallowRef(null);
120
+ const cancelDismissOnEndTimeout = useTimeout();
121
+ const clearInsideVueTreeTimeout = useTimeout();
122
+ function enabled() {
123
+ return toValue(props.enabled ?? true) !== false;
124
+ }
125
+ function escapeKey() {
126
+ return toValue(props.escapeKey ?? true) !== false;
127
+ }
128
+ function referencePress() {
129
+ return (props.referencePress ?? alwaysFalse)();
130
+ }
131
+ function outsidePress() {
132
+ return props.outsidePress ?? true;
133
+ }
134
+ function outsidePressEnabled() {
135
+ return outsidePress() !== false;
136
+ }
137
+ function getBubbles() {
138
+ return normalizeProp(toValue(props.bubbles));
139
+ }
140
+ function clearInsideVueTree() {
141
+ clearInsideVueTreeTimeout.clear();
142
+ dataRef.value.insideVueTree = false;
143
+ }
144
+ function hasBlockingChild(bubbleKey) {
145
+ const nodeId = dataRef.value.floatingContext?.nodeId;
146
+ return (tree ? getNodeChildren(tree.nodesRef.value, nodeId) : []).some((child) => {
147
+ return child.context?.open.value && !child.context.rootStore.context.dataRef.value[bubbleKey];
148
+ });
149
+ }
150
+ function isEventWithinOwnElements(event) {
151
+ return isEventTargetWithin(event, store.select("floatingElement")) || isEventTargetWithin(event, store.select("domReferenceElement"));
152
+ }
153
+ function closeOnReferencePress(event) {
154
+ if (!enabled() || !referencePress()) return;
155
+ store.setOpen(false, createChangeEventDetails(REASONS.triggerPress, event));
156
+ }
157
+ function closeOnEscapeKeyDown(event) {
158
+ if (!open.value || !enabled() || !escapeKey() || event.key !== "Escape") return;
159
+ if (isComposingRef.value) return;
160
+ const { escapeKey: escapeKeyBubbles } = getBubbles();
161
+ if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) return;
162
+ const eventDetails = createChangeEventDetails(REASONS.escapeKey, event);
163
+ store.setOpen(false, eventDetails);
164
+ if (!eventDetails.isCanceled) event.preventDefault();
165
+ if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) event.stopPropagation();
166
+ }
167
+ function markInsideVueTree() {
168
+ dataRef.value.insideVueTree = true;
169
+ clearInsideVueTreeTimeout.start(0, clearInsideVueTree);
170
+ }
171
+ function markPressStartedInsideVueTree(event) {
172
+ if (!open.value || !enabled() || event.button !== 0) return;
173
+ const target = getTarget(event);
174
+ if (!contains(store.select("floatingElement"), target)) return;
175
+ if (!pressStartedInsideRef.value) {
176
+ pressStartedInsideRef.value = true;
177
+ pressStartPreventedRef.value = false;
178
+ }
179
+ }
180
+ function markInsidePressStartPrevented(event) {
181
+ if (!open.value || !enabled()) return;
182
+ if (!event.defaultPrevented) return;
183
+ if (pressStartedInsideRef.value) pressStartPreventedRef.value = true;
184
+ }
185
+ function resetPressStartState() {
186
+ pressStartedInsideRef.value = false;
187
+ pressStartPreventedRef.value = false;
188
+ }
189
+ function getOutsidePressEvent() {
190
+ const type = currentPointerTypeRef.value;
191
+ const computedType = type === "pen" || !type ? "mouse" : type;
192
+ const outsidePressEvent = props.outsidePressEvent ?? "sloppy";
193
+ const resolved = typeof outsidePressEvent === "function" ? outsidePressEvent() : outsidePressEvent;
194
+ if (resolved == null) return "sloppy";
195
+ if (typeof resolved === "string") return resolved;
196
+ return resolved[computedType] ?? "sloppy";
197
+ }
198
+ function shouldIgnoreEvent(event) {
199
+ const computedOutsidePressEvent = getOutsidePressEvent();
200
+ return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click";
201
+ }
202
+ function isEventWithinFloatingTree(event) {
203
+ const nodeId = dataRef.value.floatingContext?.nodeId;
204
+ const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.value, nodeId).some((node) => isEventTargetWithin(event, node.context?.rootStore.select("floatingElement")));
205
+ return isEventWithinOwnElements(event) || Boolean(targetIsInsideChildren);
206
+ }
207
+ function addTargetEventListenerOnce(event, listener) {
208
+ const target = getTarget(event);
209
+ if (!target) return;
210
+ const eventTarget = target;
211
+ const handler = () => {
212
+ listener(event);
213
+ eventTarget.removeEventListener(event.type, handler);
214
+ };
215
+ eventTarget.addEventListener(event.type, handler);
216
+ }
217
+ watchEffect((onCleanup) => {
218
+ if (!open.value || !enabled()) return;
219
+ const { escapeKey: escapeKeyBubbles, outsidePress: outsidePressBubbles } = getBubbles();
220
+ dataRef.value.__escapeKeyBubbles = escapeKeyBubbles;
221
+ dataRef.value.__outsidePressBubbles = outsidePressBubbles;
222
+ const compositionTimeout = new Timeout();
223
+ const preventedPressSuppressionTimeout = new Timeout();
224
+ function handleCompositionStart() {
225
+ compositionTimeout.clear();
226
+ isComposingRef.value = true;
227
+ }
228
+ function handleCompositionEnd() {
229
+ compositionTimeout.start(platform$1.engine.webkit ? 5 : 0, () => {
230
+ isComposingRef.value = false;
231
+ });
232
+ }
233
+ function suppressImmediateOutsideClickAfterPreventedStart() {
234
+ suppressNextOutsideClickRef.value = true;
235
+ preventedPressSuppressionTimeout.start(0, () => {
236
+ suppressNextOutsideClickRef.value = false;
237
+ });
238
+ }
239
+ function closeOnPressOutside(event) {
240
+ if (shouldIgnoreEvent(event)) {
241
+ if (event.type !== "click" && !isEventWithinOwnElements(event)) {
242
+ preventedPressSuppressionTimeout.clear();
243
+ suppressNextOutsideClickRef.value = false;
244
+ }
245
+ clearInsideVueTree();
246
+ return;
247
+ }
248
+ if (dataRef.value.insideVueTree) {
249
+ clearInsideVueTree();
250
+ return;
251
+ }
252
+ const target = getTarget(event);
253
+ const inertSelector = `[${createAttribute("inert")}]`;
254
+ const targetRoot = isElement(target) ? target.getRootNode() : null;
255
+ const doc = ownerDocument(store.select("floatingElement"));
256
+ const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : doc)?.querySelectorAll(inertSelector) ?? []);
257
+ const triggers = store.context.triggerElements;
258
+ if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => contains(trigger, target)))) return;
259
+ let targetRootAncestor = isElement(target) ? target : null;
260
+ while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {
261
+ const nextParent = getParentNode(targetRootAncestor);
262
+ if (isLastTraversableNode(nextParent) || !isElement(nextParent)) break;
263
+ targetRootAncestor = nextParent;
264
+ }
265
+ if (markers.length && isElement(target) && !isRootElement(target) && !contains(target, store.select("floatingElement")) && markers.every((marker) => !contains(targetRootAncestor, marker))) return;
266
+ if (isHTMLElement(target) && !("touches" in event)) {
267
+ const lastTraversableNode = isLastTraversableNode(target);
268
+ const style = getComputedStyle(target);
269
+ const scrollRe = /auto|scroll/;
270
+ const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX);
271
+ const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY);
272
+ const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;
273
+ const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;
274
+ const isRTL = style.direction === "rtl";
275
+ const pressedVerticalScrollbar = canScrollY && (isRTL ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth);
276
+ const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight;
277
+ if (pressedVerticalScrollbar || pressedHorizontalScrollbar) return;
278
+ }
279
+ if (isEventWithinFloatingTree(event)) return;
280
+ if (getOutsidePressEvent() === "intentional" && suppressNextOutsideClickRef.value) {
281
+ preventedPressSuppressionTimeout.clear();
282
+ suppressNextOutsideClickRef.value = false;
283
+ return;
284
+ }
285
+ const shouldDismiss = outsidePress();
286
+ if (typeof shouldDismiss === "function" && !shouldDismiss(event)) return;
287
+ if (hasBlockingChild("__outsidePressBubbles")) return;
288
+ store.setOpen(false, createChangeEventDetails(REASONS.outsidePress, event));
289
+ clearInsideVueTree();
290
+ }
291
+ function handlePointerDown(event) {
292
+ if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store.select("open") || !enabled() || isEventWithinOwnElements(event)) return;
293
+ closeOnPressOutside(event);
294
+ }
295
+ function handleTouchStart(event) {
296
+ if (getOutsidePressEvent() !== "sloppy" || !store.select("open") || !enabled() || isEventWithinOwnElements(event)) return;
297
+ const touch = event.touches[0];
298
+ if (touch) {
299
+ touchStateRef.value = {
300
+ startTime: Date.now(),
301
+ startX: touch.clientX,
302
+ startY: touch.clientY,
303
+ dismissOnTouchEnd: false,
304
+ dismissOnMouseDown: true
305
+ };
306
+ cancelDismissOnEndTimeout.start(1e3, () => {
307
+ if (touchStateRef.value) {
308
+ touchStateRef.value.dismissOnTouchEnd = false;
309
+ touchStateRef.value.dismissOnMouseDown = false;
310
+ }
311
+ });
312
+ }
313
+ }
314
+ function handleTouchStartCapture(event) {
315
+ currentPointerTypeRef.value = "touch";
316
+ addTargetEventListenerOnce(event, handleTouchStart);
317
+ }
318
+ function closeOnPressOutsideCapture(event) {
319
+ cancelDismissOnEndTimeout.clear();
320
+ if (event.type === "pointerdown") currentPointerTypeRef.value = event.pointerType;
321
+ if (event.type === "mousedown" && touchStateRef.value && !touchStateRef.value.dismissOnMouseDown) return;
322
+ addTargetEventListenerOnce(event, (targetEvent) => {
323
+ if (targetEvent.type === "pointerdown") handlePointerDown(targetEvent);
324
+ else closeOnPressOutside(targetEvent);
325
+ });
326
+ }
327
+ function handlePressEndCapture(event) {
328
+ if (!pressStartedInsideRef.value) return;
329
+ const pressStartedInsideDefaultPrevented = pressStartPreventedRef.value;
330
+ resetPressStartState();
331
+ if (getOutsidePressEvent() !== "intentional") return;
332
+ if (event.type === "pointercancel") {
333
+ if (pressStartedInsideDefaultPrevented) suppressImmediateOutsideClickAfterPreventedStart();
334
+ return;
335
+ }
336
+ if (isEventWithinFloatingTree(event)) return;
337
+ if (pressStartedInsideDefaultPrevented) {
338
+ suppressImmediateOutsideClickAfterPreventedStart();
339
+ return;
340
+ }
341
+ const shouldDismiss = outsidePress();
342
+ if (typeof shouldDismiss === "function" && !shouldDismiss(event)) return;
343
+ preventedPressSuppressionTimeout.clear();
344
+ suppressNextOutsideClickRef.value = true;
345
+ clearInsideVueTree();
346
+ }
347
+ function handleTouchMove(event) {
348
+ if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.value || isEventWithinOwnElements(event)) return;
349
+ const touch = event.touches[0];
350
+ if (!touch) return;
351
+ const deltaX = Math.abs(touch.clientX - touchStateRef.value.startX);
352
+ const deltaY = Math.abs(touch.clientY - touchStateRef.value.startY);
353
+ const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
354
+ if (distance > 5) touchStateRef.value.dismissOnTouchEnd = true;
355
+ if (distance > 10) {
356
+ closeOnPressOutside(event);
357
+ cancelDismissOnEndTimeout.clear();
358
+ touchStateRef.value = null;
359
+ }
360
+ }
361
+ function handleTouchMoveCapture(event) {
362
+ addTargetEventListenerOnce(event, handleTouchMove);
363
+ }
364
+ function handleTouchEnd(event) {
365
+ if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.value || isEventWithinOwnElements(event)) return;
366
+ if (touchStateRef.value.dismissOnTouchEnd) closeOnPressOutside(event);
367
+ cancelDismissOnEndTimeout.clear();
368
+ touchStateRef.value = null;
369
+ }
370
+ function handleTouchEndCapture(event) {
371
+ addTargetEventListenerOnce(event, handleTouchEnd);
372
+ }
373
+ const doc = ownerDocument(floatingElement.value ?? domReferenceElement.value);
374
+ const unsubscribe = mergeCleanups(escapeKey() ? mergeCleanups(addEventListener(doc, "keydown", closeOnEscapeKeyDown), addEventListener(doc, "compositionstart", handleCompositionStart), addEventListener(doc, "compositionend", handleCompositionEnd)) : void 0, outsidePressEnabled() ? mergeCleanups(addEventListener(doc, "click", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerdown", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerup", handlePressEndCapture, true), addEventListener(doc, "pointercancel", handlePressEndCapture, true), addEventListener(doc, "mousedown", closeOnPressOutsideCapture, true), addEventListener(doc, "mouseup", handlePressEndCapture, true), addEventListener(doc, "touchstart", handleTouchStartCapture, true), addEventListener(doc, "touchmove", handleTouchMoveCapture, true), addEventListener(doc, "touchend", handleTouchEndCapture, true)) : void 0);
375
+ onCleanup(() => {
376
+ unsubscribe();
377
+ compositionTimeout.clear();
378
+ preventedPressSuppressionTimeout.clear();
379
+ resetPressStartState();
380
+ suppressNextOutsideClickRef.value = false;
381
+ });
382
+ });
383
+ watchEffect(() => {
384
+ outsidePress();
385
+ clearInsideVueTree();
386
+ });
387
+ onScopeDispose(() => {
388
+ cancelDismissOnEndTimeout.clear();
389
+ clearInsideVueTreeTimeout.clear();
390
+ });
391
+ const reference = {
392
+ onKeydown: closeOnEscapeKeyDown,
393
+ onPointerdown: closeOnReferencePress,
394
+ onClick: closeOnReferencePress
395
+ };
396
+ return {
397
+ reference,
398
+ floating: {
399
+ onKeydown: closeOnEscapeKeyDown,
400
+ onPointerdown: markInsidePressStartPrevented,
401
+ onMousedown: markInsidePressStartPrevented,
402
+ onClickCapture: markInsideVueTree,
403
+ onMousedownCapture(event) {
404
+ markInsideVueTree();
405
+ markPressStartedInsideVueTree(event);
406
+ },
407
+ onPointerdownCapture(event) {
408
+ markInsideVueTree();
409
+ markPressStartedInsideVueTree(event);
410
+ },
411
+ onMouseupCapture: markInsideVueTree,
412
+ onTouchendCapture: markInsideVueTree,
413
+ onTouchmoveCapture: markInsideVueTree
414
+ },
415
+ trigger: reference
416
+ };
417
+ }
418
+
419
+ //#endregion
420
+ //#region src/floating-ui-vue/hooks/useHoverInteractionSharedState.ts
421
+ var HoverInteraction = class HoverInteraction {
422
+ pointerType;
423
+ interactedInside;
424
+ handler;
425
+ blockMouseMove;
426
+ performedPointerEventsMutation;
427
+ pointerEventsScopeElement;
428
+ pointerEventsReferenceElement;
429
+ pointerEventsFloatingElement;
430
+ restTimeoutPending;
431
+ openChangeTimeout;
432
+ restTimeout;
433
+ handleCloseOptions;
434
+ constructor() {
435
+ this.pointerType = void 0;
436
+ this.interactedInside = false;
437
+ this.handler = void 0;
438
+ this.blockMouseMove = true;
439
+ this.performedPointerEventsMutation = false;
440
+ this.pointerEventsScopeElement = null;
441
+ this.pointerEventsReferenceElement = null;
442
+ this.pointerEventsFloatingElement = null;
443
+ this.restTimeoutPending = false;
444
+ this.openChangeTimeout = new Timeout();
445
+ this.restTimeout = new Timeout();
446
+ this.handleCloseOptions = void 0;
447
+ }
448
+ static create() {
449
+ return new HoverInteraction();
450
+ }
451
+ dispose = () => {
452
+ this.openChangeTimeout.clear();
453
+ this.restTimeout.clear();
454
+ };
455
+ };
456
+ const pointerEventsMutationOwnerByScopeElement = /* @__PURE__ */ new WeakMap();
457
+ function clearSafePolygonPointerEventsMutation(instance) {
458
+ if (!instance.performedPointerEventsMutation) return;
459
+ const scopeElement = instance.pointerEventsScopeElement;
460
+ if (scopeElement && pointerEventsMutationOwnerByScopeElement.get(scopeElement) === instance) {
461
+ instance.pointerEventsScopeElement?.style.removeProperty("pointer-events");
462
+ instance.pointerEventsReferenceElement?.style.removeProperty("pointer-events");
463
+ instance.pointerEventsFloatingElement?.style.removeProperty("pointer-events");
464
+ pointerEventsMutationOwnerByScopeElement.delete(scopeElement);
465
+ }
466
+ instance.performedPointerEventsMutation = false;
467
+ instance.pointerEventsScopeElement = null;
468
+ instance.pointerEventsReferenceElement = null;
469
+ instance.pointerEventsFloatingElement = null;
470
+ }
471
+ function applySafePolygonPointerEventsMutation(instance, options) {
472
+ const { scopeElement, referenceElement, floatingElement } = options;
473
+ const existingOwner = pointerEventsMutationOwnerByScopeElement.get(scopeElement);
474
+ if (existingOwner && existingOwner !== instance) clearSafePolygonPointerEventsMutation(existingOwner);
475
+ clearSafePolygonPointerEventsMutation(instance);
476
+ instance.performedPointerEventsMutation = true;
477
+ instance.pointerEventsScopeElement = scopeElement;
478
+ instance.pointerEventsReferenceElement = referenceElement;
479
+ instance.pointerEventsFloatingElement = floatingElement;
480
+ pointerEventsMutationOwnerByScopeElement.set(scopeElement, instance);
481
+ scopeElement.style.pointerEvents = "none";
482
+ referenceElement.style.pointerEvents = "auto";
483
+ floatingElement.style.pointerEvents = "auto";
484
+ }
485
+ function getHoverInteractionSharedState(store) {
486
+ const data = store.context.dataRef.value;
487
+ if (!data.hoverInteractionState) data.hoverInteractionState = HoverInteraction.create();
488
+ return data.hoverInteractionState;
489
+ }
490
+ function useHoverInteractionSharedState(store) {
491
+ const instance = getHoverInteractionSharedState(store);
492
+ onScopeDispose(instance.dispose);
493
+ return instance;
494
+ }
495
+
496
+ //#endregion
497
+ //#region src/floating-ui-vue/hooks/useHoverShared.ts
498
+ function resolveValue(value, pointerType) {
499
+ if (pointerType != null && !isMouseLikePointerType(pointerType)) return 0;
500
+ if (typeof value === "function") return value();
501
+ return value;
502
+ }
503
+ function getDelay(value, prop, pointerType) {
504
+ const result = resolveValue(value, pointerType);
505
+ if (typeof result === "number") return result;
506
+ return result?.[prop];
507
+ }
508
+ function isClickLikeOpenEvent(openEventType, interactedInside) {
509
+ return interactedInside || openEventType === "click" || openEventType === "mousedown";
510
+ }
511
+ function isHoverOpenEvent(openEventType) {
512
+ return openEventType?.includes("mouse") && openEventType !== "mousedown";
513
+ }
514
+
515
+ //#endregion
516
+ //#region src/floating-ui-vue/hooks/useHoverFloatingInteraction.ts
517
+ /**
518
+ * Provides hover interactions that should be attached to the floating element.
519
+ */
520
+ function useHoverFloatingInteraction(context, parameters = {}) {
521
+ const store = "rootStore" in context ? context.rootStore : context;
522
+ const open = store.useState("open");
523
+ const floatingElement = store.useState("floatingElement");
524
+ const domReferenceElement = store.useState("domReferenceElement");
525
+ const { dataRef } = store.context;
526
+ const tree = useFloatingTree();
527
+ const parentId = useFloatingParentNodeId();
528
+ const instance = useHoverInteractionSharedState(store);
529
+ const childClosedTimeout = useTimeout();
530
+ function enabled() {
531
+ return toValue(parameters.enabled ?? true) !== false;
532
+ }
533
+ function isClickLikeOpenEvent$1() {
534
+ return isClickLikeOpenEvent(dataRef.value.openEvent?.type, instance.interactedInside);
535
+ }
536
+ function isHoverOpen() {
537
+ return isHoverOpenEvent(dataRef.value.openEvent?.type);
538
+ }
539
+ function clearPointerEvents() {
540
+ clearSafePolygonPointerEventsMutation(instance);
541
+ }
542
+ watchEffect(() => {
543
+ if (!open.value) {
544
+ instance.pointerType = void 0;
545
+ instance.restTimeoutPending = false;
546
+ instance.interactedInside = false;
547
+ clearPointerEvents();
548
+ }
549
+ });
550
+ onScopeDispose(clearPointerEvents);
551
+ watchEffect((onCleanup) => {
552
+ if (!enabled()) return;
553
+ if (open.value && instance.handleCloseOptions?.blockPointerEvents && isHoverOpen() && isElement(domReferenceElement.value) && floatingElement.value) {
554
+ const ref = domReferenceElement.value;
555
+ const floatingEl = floatingElement.value;
556
+ const doc = ownerDocument(floatingEl);
557
+ const parentFloating = (tree?.nodesRef.value.find((node) => node.id === parentId))?.context?.rootStore.select("floatingElement") ?? null;
558
+ if (parentFloating) parentFloating.style.pointerEvents = "";
559
+ const cachedScopeElement = instance.pointerEventsScopeElement !== floatingEl ? instance.pointerEventsScopeElement : null;
560
+ const parentScopeElement = parentFloating !== floatingEl ? parentFloating : null;
561
+ const scopeElement = instance.handleCloseOptions?.getScope?.() ?? cachedScopeElement ?? parentScopeElement ?? ref.closest("[data-rootownerid]") ?? doc?.body;
562
+ if (scopeElement) {
563
+ applySafePolygonPointerEventsMutation(instance, {
564
+ scopeElement,
565
+ referenceElement: ref,
566
+ floatingElement: floatingEl
567
+ });
568
+ onCleanup(clearPointerEvents);
569
+ }
570
+ }
571
+ });
572
+ watchEffect((onCleanup) => {
573
+ if (!enabled()) return;
574
+ function hasParentChildren() {
575
+ return Boolean(tree && parentId && getNodeChildren(tree.nodesRef.value, parentId).length > 0);
576
+ }
577
+ function closeWithDelay(event) {
578
+ const closeDelay = getDelay(toValue(parameters.closeDelay ?? 0), "close", instance.pointerType);
579
+ const close = () => {
580
+ store.setOpen(false, createChangeEventDetails(REASONS.triggerHover, event));
581
+ tree?.events.emit("floating.closed", event);
582
+ };
583
+ if (closeDelay) instance.openChangeTimeout.start(closeDelay, close);
584
+ else {
585
+ instance.openChangeTimeout.clear();
586
+ close();
587
+ }
588
+ }
589
+ function handleInteractInside(event) {
590
+ const target = getTarget(event);
591
+ if (!isInteractiveElement(target)) {
592
+ instance.interactedInside = false;
593
+ return;
594
+ }
595
+ instance.interactedInside = target?.closest("[aria-haspopup]") != null;
596
+ }
597
+ function onFloatingMouseEnter() {
598
+ instance.openChangeTimeout.clear();
599
+ store.context.clearCloseTimer?.();
600
+ childClosedTimeout.clear();
601
+ tree?.events.off("floating.closed", onNodeClosed);
602
+ clearPointerEvents();
603
+ }
604
+ function onFloatingMouseLeave(event) {
605
+ if (hasParentChildren() && tree) {
606
+ tree.events.off("floating.closed", onNodeClosed);
607
+ tree.events.on("floating.closed", onNodeClosed);
608
+ return;
609
+ }
610
+ if (isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements)) return;
611
+ const currentNodeId = dataRef.value.floatingContext?.nodeId ?? toValue(parameters.nodeId);
612
+ const relatedTarget = event.relatedTarget;
613
+ if (tree && currentNodeId && isElement(relatedTarget) && getNodeChildren(tree.nodesRef.value, currentNodeId, false).some((node) => contains(node.context?.rootStore.select("floatingElement"), relatedTarget))) return;
614
+ if (instance.handler) {
615
+ instance.handler(event);
616
+ return;
617
+ }
618
+ clearPointerEvents();
619
+ if (isHoverOpen() && !isClickLikeOpenEvent$1()) closeWithDelay(event);
620
+ }
621
+ function onNodeClosed(event) {
622
+ if (!tree || !parentId || hasParentChildren()) return;
623
+ childClosedTimeout.start(0, () => {
624
+ tree.events.off("floating.closed", onNodeClosed);
625
+ store.setOpen(false, createChangeEventDetails(REASONS.triggerHover, event));
626
+ tree.events.emit("floating.closed", event);
627
+ });
628
+ }
629
+ const floating = floatingElement.value;
630
+ onCleanup(mergeCleanups(addEventListener(floating, "mouseenter", onFloatingMouseEnter), addEventListener(floating, "mouseleave", onFloatingMouseLeave), addEventListener(floating, "pointerdown", handleInteractInside, true), () => {
631
+ tree?.events.off("floating.closed", onNodeClosed);
632
+ }));
633
+ });
634
+ }
635
+
636
+ //#endregion
637
+ export { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, autoUpdate, flip, isFirefox, isIOS, isWebKit, limitShift, matchesFocusVisible, offset, shift, size, useDismiss, useFloating, useHoverFloatingInteraction };
638
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["platform","platform","platform","isClickLikeOpenEvent","isClickLikeOpenEventShared","isInsideEnabledTrigger"],"sources":["../../src/floating-ui-vue/utils/constants.ts","../../src/floating-ui-vue/utils/element.ts","../../src/utils/detectBrowser.ts","../../src/utils/addEventListener.ts","../../src/utils/mergeCleanups.ts","../../src/utils/platform.ts","../../src/floating-ui-vue/utils/nodes.ts","../../src/floating-ui-vue/hooks/useDismiss.ts","../../src/floating-ui-vue/hooks/useHoverInteractionSharedState.ts","../../src/floating-ui-vue/hooks/useHoverShared.ts","../../src/floating-ui-vue/hooks/useHoverFloatingInteraction.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;AAAA,MAAa,aAAa;AAC1B,MAAa,cAAc;AAC3B,MAAa,WAAW;AACxB,MAAa,aAAa;AAE1B,MAAa,oBAAoB;;;;ACEjC,SAAgB,6BACd,QACA,iBACA;AACA,KAAI,CAAC,UAAU,OAAO,CACpB,QAAO;CAGT,MAAM,gBAAgB;AAEtB,KAAI,gBAAgB,WAAW,cAAc,CAC3C,QAAO,CAAC,cAAc,aAAa,wBAAwB;AAG7D,MAAK,MAAM,GAAG,YAAY,gBAAgB,SAAS,CACjD,KAAI,SAAS,SAAS,cAAc,CAClC,QAAO,CAAC,QAAQ,aAAa,wBAAwB;AAIzD,QAAO;;AAGT,SAAgB,oBAAoB,OAAc,MAA+B;AAC/E,KAAI,QAAQ,KACV,QAAO;AAGT,KAAI,kBAAkB,MACpB,QAAO,MAAM,cAAc,CAAC,SAAS,KAAK;CAG5C,MAAM,aAAa;AACnB,QAAO,WAAW,UAAU,QAAQ,KAAK,SAAS,WAAW,OAAe;;AAG9E,SAAgB,cAAc,SAA2B;AACvD,QAAO,QAAQ,QAAQ,YAAY;;AAOrC,SAAgB,qBAAqB,SAAyB;AAC5D,QACE,SAAS,QACP,yEAAyE,oBAC1E,IAAI;;AAIT,SAAgB,oBAAoB,SAAyB;AAC3D,KAAI,CAAC,QACH,QAAO;AAGT,KAAI;AACF,SAAO,QAAQ,QAAQ,iBAAiB;SAEpC;AACJ,SAAO;;;;;;ACpEX,MAAM,KAAK,OAAO,cAAc,cAAc,UAAU,YAAY;AACpE,MAAMA,aAAW,OAAO,cAAc,cAAc,UAAU,WAAW;AACzE,MAAM,iBAAiB,OAAO,cAAc,cAAc,UAAU,iBAAiB;AAErF,MAAa,WACT,OAAO,QAAQ,eAAe,OAAO,IAAI,aAAa,aACpD,IAAI,SAAS,+BAA+B,IAAI,CAAC,kBAAkB,KAAK,GAAG,GAC3E,4BAA4B,KAAK,GAAG;AAE1C,MAAa,YAAY,WAAW,KAAK,GAAG;AAE5C,MAAa,QACT,4BAA4B,KAAK,GAAG,IAEhCA,eAAa,cAAc,iBAAiB;;;;ACdpD,SAAgB,iBACd,QACA,MACA,UACA,SACA;AACA,KAAI,CAAC,OACH;AAGF,QAAO,iBAAiB,MAAM,UAA2B,QAAQ;AAEjE,cAAa;AACX,SAAO,oBAAoB,MAAM,UAA2B,QAAQ;;;;;;ACbxE,SAAgB,cAAc,GAAG,UAA2C;AAC1E,cAAa;AACX,OAAK,MAAM,WAAW,SACpB,YAAW;;;;;;ACDjB,MAAM,eAAe,OAAO,cAAc,cAAc,UAAU,WAAW;AAC7E,MAAM,YAAY,OAAO,cAAc,cAAc,UAAU,YAAY;AAE3E,MAAM,kBACF,SACG,OAAO,KAAK,aAAa,IACzB,sCAAsC,KAAK,UAAU;AAE5D,MAAaC,aAAW;CACtB,QAAQ,EACN,QAAQ,UACT;CACD,cAAc,EACZ,WAAW,iBACZ;CACF;;;;ACfD,SAAgB,gBACd,OACA,IACA,mBAAmB,MACC;AAGpB,QAFuB,MAAM,QAAO,SAAQ,KAAK,aAAa,GAAG,CAE3C,SAAQ,UAAS,CACrC,GAAI,CAAC,oBAAoB,MAAM,SAAS,KAAK,QAAQ,CAAC,MAAM,GAAG,EAAE,EACjE,GAAG,gBAAgB,OAAO,MAAM,IAAI,iBAAiB,CACtD,CAAC;;;;;ACcJ,SAAS,cAAc;AACrB,QAAO;;AAGT,SAAgB,cACd,cACA;AACA,QAAO;EACL,WACE,OAAO,iBAAiB,YAAY,eAAgB,cAAc,aAAa;EACjF,cACE,OAAO,iBAAiB,YAAY,eAAgB,cAAc,gBAAgB;EACrF;;;;;;;AAgEH,SAAgB,WACd,SACA,QAAyB,EAAE,EACb;CACd,MAAM,QAAQ,eAAe,UAAU,QAAQ,YAAY;CAE3D,MAAM,OAAO,MAAM,SAAS,OAAO;CACnC,MAAM,kBAAkB,MAAM,SAAS,kBAAkB;CACzD,MAAM,sBAAsB,MAAM,SAAS,sBAAsB;CACjE,MAAM,EAAE,YAAY,MAAM;CAE1B,MAAM,OAAO,gBAAgB,MAAM,aAAa;CAEhD,MAAM,wBAAwB,WAAW,MAAM;CAC/C,MAAM,yBAAyB,WAAW,MAAM;CAChD,MAAM,8BAA8B,WAAW,MAAM;CACrD,MAAM,iBAAiB,WAAW,MAAM;CACxC,MAAM,wBAAwB,WAAwC,GAAG;CAEzE,MAAM,gBAAgB,WAMZ,KAAK;CAEf,MAAM,4BAA4B,YAAY;CAC9C,MAAM,4BAA4B,YAAY;CAE9C,SAAS,UAAU;AACjB,SAAO,QAAQ,MAAM,WAAW,KAAK,KAAK;;CAG5C,SAAS,YAAY;AACnB,SAAO,QAAQ,MAAM,aAAa,KAAK,KAAK;;CAG9C,SAAS,iBAAiB;AACxB,UAAQ,MAAM,kBAAkB,cAAc;;CAGhD,SAAS,eAAe;AACtB,SAAO,MAAM,gBAAgB;;CAG/B,SAAS,sBAAsB;AAC7B,SAAO,cAAc,KAAK;;CAG5B,SAAS,aAAa;AACpB,SAAO,cAAc,QAAQ,MAAM,QAAQ,CAAC;;CAG9C,SAAS,qBAAqB;AAC5B,4BAA0B,OAAO;AACjC,UAAQ,MAAM,gBAAgB;;CAGhC,SAAS,iBAAiB,WAA2D;EACnF,MAAM,SAAS,QAAQ,MAAM,iBAAiB;AAG9C,UAFiB,OAAO,gBAAgB,KAAK,SAAS,OAAO,OAAO,GAAG,EAAE,EAEzD,MAAM,UAAU;AAC9B,UAAO,MAAM,SAAS,KAAK,SAAS,CAAC,MAAM,QAAQ,UAAU,QAAQ,QAAQ,MAAM;IACnF;;CAGJ,SAAS,yBAAyB,OAAc;AAC9C,SACE,oBAAoB,OAAO,MAAM,OAAO,kBAAkB,CAAC,IACxD,oBAAoB,OAAO,MAAM,OAAO,sBAAsB,CAAC;;CAItE,SAAS,sBAAsB,OAAc;AAC3C,MAAI,CAAC,SAAS,IAAI,CAAC,gBAAgB,CACjC;AAGF,QAAM,QACJ,OACA,yBACE,QAAQ,cACR,MACD,CACF;;CAGH,SAAS,qBAAqB,OAAsB;AAClD,MAAI,CAAC,KAAK,SAAS,CAAC,SAAS,IAAI,CAAC,WAAW,IAAI,MAAM,QAAQ,SAC7D;AAGF,MAAI,eAAe,MACjB;EAGF,MAAM,EAAE,WAAW,qBAAqB,YAAY;AAEpD,MAAI,CAAC,oBAAoB,iBAAiB,qBAAqB,CAC7D;EAGF,MAAM,eAAe,yBAAyB,QAAQ,WAAW,MAAM;AAEvE,QAAM,QAAQ,OAAO,aAAa;AAElC,MAAI,CAAC,aAAa,WAChB,OAAM,gBAAgB;AAGxB,MAAI,CAAC,oBAAoB,CAAC,aAAa,qBACrC,OAAM,iBAAiB;;CAI3B,SAAS,oBAAoB;AAC3B,UAAQ,MAAM,gBAAgB;AAC9B,4BAA0B,MAAM,GAAG,mBAAmB;;CAGxD,SAAS,8BAA8B,OAAkC;AACvE,MAAI,CAAC,KAAK,SAAS,CAAC,SAAS,IAAI,MAAM,WAAW,EAChD;EAGF,MAAM,SAAS,UAAU,MAAM;AAE/B,MAAI,CAAC,SAAS,MAAM,OAAO,kBAAkB,EAAE,OAAO,CACpD;AAGF,MAAI,CAAC,sBAAsB,OAAO;AAChC,yBAAsB,QAAQ;AAC9B,0BAAuB,QAAQ;;;CAInC,SAAS,8BAA8B,OAAkC;AACvE,MAAI,CAAC,KAAK,SAAS,CAAC,SAAS,CAC3B;AAGF,MAAI,CAAC,MAAM,iBACT;AAGF,MAAI,sBAAsB,MACxB,wBAAuB,QAAQ;;CAInC,SAAS,uBAAuB;AAC9B,wBAAsB,QAAQ;AAC9B,yBAAuB,QAAQ;;CAGjC,SAAS,uBAAkC;EACzC,MAAM,OAAO,sBAAsB;EACnC,MAAM,eAAe,SAAS,SAAS,CAAC,OAAO,UAAU;EACzD,MAAM,oBAAoB,MAAM,qBAAqB;EACrD,MAAM,WAAW,OAAO,sBAAsB,aAC1C,mBAAmB,GACnB;AAEJ,MAAI,YAAY,KACd,QAAO;AAGT,MAAI,OAAO,aAAa,SACtB,QAAO;AAGT,SAAO,SAAS,iBAAiB;;CAGnC,SAAS,kBAAkB,OAAc;EACvC,MAAM,4BAA4B,sBAAsB;AACxD,SACG,8BAA8B,iBAAiB,MAAM,SAAS,WAC3D,8BAA8B,YAAY,MAAM,SAAS;;CAIjE,SAAS,0BAA0B,OAAc;EAC/C,MAAM,SAAS,QAAQ,MAAM,iBAAiB;EAC9C,MAAM,yBACF,QACG,gBAAgB,KAAK,SAAS,OAAO,OAAO,CAAC,MAAK,SACnD,oBAAoB,OAAO,KAAK,SAAS,UAAU,OAAO,kBAAkB,CAAC,CAC9E;AAEL,SAAO,yBAAyB,MAAM,IAAI,QAAQ,uBAAuB;;CAG3E,SAAS,2BACP,OACA,UACA;EACA,MAAM,SAAS,UAAU,MAAM;AAE/B,MAAI,CAAC,OACH;EAGF,MAAM,cAAc;EACpB,MAAM,gBAAgB;AACpB,YAAS,MAAM;AACf,eAAY,oBAAoB,MAAM,MAAM,QAAQ;;AAGtD,cAAY,iBAAiB,MAAM,MAAM,QAAQ;;AAGnD,cAAa,cAAc;AACzB,MAAI,CAAC,KAAK,SAAS,CAAC,SAAS,CAC3B;EAGF,MAAM,EAAE,WAAW,kBAAkB,cAAc,wBAAwB,YAAY;AACvF,UAAQ,MAAM,qBAAqB;AACnC,UAAQ,MAAM,wBAAwB;EAEtC,MAAM,qBAAqB,IAAI,SAAS;EACxC,MAAM,mCAAmC,IAAI,SAAS;EAEtD,SAAS,yBAAyB;AAChC,sBAAmB,OAAO;AAC1B,kBAAe,QAAQ;;EAGzB,SAAS,uBAAuB;AAC9B,sBAAmB,MACjBC,WAAS,OAAO,SAAS,IAAI,SACvB;AACJ,mBAAe,QAAQ;KAE1B;;EAGH,SAAS,mDAAmD;AAC1D,+BAA4B,QAAQ;AACpC,oCAAiC,MAAM,SAAS;AAC9C,gCAA4B,QAAQ;KACpC;;EAGJ,SAAS,oBAAoB,OAA+C;AAC1E,OAAI,kBAAkB,MAAM,EAAE;AAC5B,QAAI,MAAM,SAAS,WAAW,CAAC,yBAAyB,MAAM,EAAE;AAC9D,sCAAiC,OAAO;AACxC,iCAA4B,QAAQ;;AAEtC,wBAAoB;AACpB;;AAGF,OAAI,QAAQ,MAAM,eAAe;AAC/B,wBAAoB;AACpB;;GAGF,MAAM,SAAS,UAAU,MAAM;GAC/B,MAAM,gBAAgB,IAAI,gBAAgB,QAAQ,CAAC;GACnD,MAAM,aAAa,UAAU,OAAO,GAAG,OAAO,aAAa,GAAG;GAC9D,MAAM,MAAM,cAAc,MAAM,OAAO,kBAAkB,CAAC;GAC1D,MAAM,UAAU,MAAM,MACnB,aAAa,WAAW,GAAG,aAAa,MAAM,iBAAiB,cAAc,IAAI,EAAE,CACrF;GAED,MAAM,WAAW,MAAM,QAAQ;AAE/B,OACE,WACI,SAAS,WAAW,OAAkB,IACrC,SAAS,oBAAmB,YAAW,SAAS,SAAS,OAAkB,CAAC,EAEjF;GAGF,IAAI,qBAAqB,UAAU,OAAO,GAAG,SAAS;AACtD,UAAO,sBAAsB,CAAC,sBAAsB,mBAAmB,EAAE;IACvE,MAAM,aAAa,cAAc,mBAAmB;AACpD,QAAI,sBAAsB,WAAW,IAAI,CAAC,UAAU,WAAW,CAC7D;AAGF,yBAAqB;;AAGvB,OACE,QAAQ,UACL,UAAU,OAAO,IACjB,CAAC,cAAc,OAAO,IACtB,CAAC,SAAS,QAAQ,MAAM,OAAO,kBAAkB,CAAC,IAClD,QAAQ,OAAM,WAAU,CAAC,SAAS,oBAAoB,OAAO,CAAC,CAEjE;AAGF,OAAI,cAAc,OAAO,IAAI,EAAE,aAAa,QAAQ;IAClD,MAAM,sBAAsB,sBAAsB,OAAO;IACzD,MAAM,QAAQ,iBAAiB,OAAO;IACtC,MAAM,WAAW;IACjB,MAAM,gBAAgB,uBAAuB,SAAS,KAAK,MAAM,UAAU;IAC3E,MAAM,gBAAgB,uBAAuB,SAAS,KAAK,MAAM,UAAU;IAE3E,MAAM,aACF,iBAAiB,OAAO,cAAc,KAAK,OAAO,cAAc,OAAO;IAC3E,MAAM,aACF,iBAAiB,OAAO,eAAe,KAAK,OAAO,eAAe,OAAO;IAE7E,MAAM,QAAQ,MAAM,cAAc;IAClC,MAAM,2BACF,eACI,QACA,MAAM,WAAW,OAAO,cAAc,OAAO,cAC7C,MAAM,UAAU,OAAO;IAC/B,MAAM,6BAA6B,cAAc,MAAM,UAAU,OAAO;AAExE,QAAI,4BAA4B,2BAC9B;;AAIJ,OAAI,0BAA0B,MAAM,CAClC;AAGF,OAAI,sBAAsB,KAAK,iBAAiB,4BAA4B,OAAO;AACjF,qCAAiC,OAAO;AACxC,gCAA4B,QAAQ;AACpC;;GAGF,MAAM,gBAAgB,cAAc;AACpC,OAAI,OAAO,kBAAkB,cAAc,CAAC,cAAc,MAAM,CAC9D;AAGF,OAAI,iBAAiB,wBAAwB,CAC3C;AAGF,SAAM,QAAQ,OAAO,yBAAyB,QAAQ,cAAc,MAAM,CAAC;AAC3E,uBAAoB;;EAGtB,SAAS,kBAAkB,OAAqB;AAC9C,OACE,sBAAsB,KAAK,YACxB,MAAM,gBAAgB,WACtB,CAAC,MAAM,OAAO,OAAO,IACrB,CAAC,SAAS,IACV,yBAAyB,MAAM,CAElC;AAGF,uBAAoB,MAAM;;EAG5B,SAAS,iBAAiB,OAAmB;AAC3C,OACE,sBAAsB,KAAK,YACxB,CAAC,MAAM,OAAO,OAAO,IACrB,CAAC,SAAS,IACV,yBAAyB,MAAM,CAElC;GAGF,MAAM,QAAQ,MAAM,QAAQ;AAC5B,OAAI,OAAO;AACT,kBAAc,QAAQ;KACpB,WAAW,KAAK,KAAK;KACrB,QAAQ,MAAM;KACd,QAAQ,MAAM;KACd,mBAAmB;KACnB,oBAAoB;KACrB;AAED,8BAA0B,MAAM,WAAY;AAC1C,SAAI,cAAc,OAAO;AACvB,oBAAc,MAAM,oBAAoB;AACxC,oBAAc,MAAM,qBAAqB;;MAE3C;;;EAIN,SAAS,wBAAwB,OAAmB;AAClD,yBAAsB,QAAQ;AAC9B,8BAA2B,OAAO,iBAAiB;;EAGrD,SAAS,2BAA2B,OAAkC;AACpE,6BAA0B,OAAO;AAEjC,OAAI,MAAM,SAAS,cACjB,uBAAsB,QAAS,MAAuB;AAGxD,OACE,MAAM,SAAS,eACZ,cAAc,SACd,CAAC,cAAc,MAAM,mBAExB;AAGF,8BAA2B,QAAQ,gBAAgB;AACjD,QAAI,YAAY,SAAS,cACvB,mBAAkB,YAA4B;QAG9C,qBAAoB,YAA0B;KAEhD;;EAGJ,SAAS,sBAAsB,OAAkC;AAC/D,OAAI,CAAC,sBAAsB,MACzB;GAGF,MAAM,qCAAqC,uBAAuB;AAClE,yBAAsB;AAEtB,OAAI,sBAAsB,KAAK,cAC7B;AAGF,OAAI,MAAM,SAAS,iBAAiB;AAClC,QAAI,mCACF,mDAAkD;AAEpD;;AAGF,OAAI,0BAA0B,MAAM,CAClC;AAGF,OAAI,oCAAoC;AACtC,sDAAkD;AAClD;;GAGF,MAAM,gBAAgB,cAAc;AACpC,OAAI,OAAO,kBAAkB,cAAc,CAAC,cAAc,MAAoB,CAC5E;AAGF,oCAAiC,OAAO;AACxC,+BAA4B,QAAQ;AACpC,uBAAoB;;EAGtB,SAAS,gBAAgB,OAAmB;AAC1C,OACE,sBAAsB,KAAK,YACxB,CAAC,cAAc,SACf,yBAAyB,MAAM,CAElC;GAGF,MAAM,QAAQ,MAAM,QAAQ;AAC5B,OAAI,CAAC,MACH;GAGF,MAAM,SAAS,KAAK,IAAI,MAAM,UAAU,cAAc,MAAM,OAAO;GACnE,MAAM,SAAS,KAAK,IAAI,MAAM,UAAU,cAAc,MAAM,OAAO;GACnE,MAAM,WAAW,KAAK,KAAK,SAAS,SAAS,SAAS,OAAO;AAE7D,OAAI,WAAW,EACb,eAAc,MAAM,oBAAoB;AAG1C,OAAI,WAAW,IAAI;AACjB,wBAAoB,MAAM;AAC1B,8BAA0B,OAAO;AACjC,kBAAc,QAAQ;;;EAI1B,SAAS,uBAAuB,OAAmB;AACjD,8BAA2B,OAAO,gBAAgB;;EAGpD,SAAS,eAAe,OAAmB;AACzC,OACE,sBAAsB,KAAK,YACxB,CAAC,cAAc,SACf,yBAAyB,MAAM,CAElC;AAGF,OAAI,cAAc,MAAM,kBACtB,qBAAoB,MAAM;AAG5B,6BAA0B,OAAO;AACjC,iBAAc,QAAQ;;EAGxB,SAAS,sBAAsB,OAAmB;AAChD,8BAA2B,OAAO,eAAe;;EAGnD,MAAM,MAAM,cAAc,gBAAgB,SAAS,oBAAoB,MAAM;EAC7E,MAAM,cAAc,cAClB,WAAW,GACP,cACE,iBAAiB,KAAK,WAAW,qBAAqB,EACtD,iBAAiB,KAAK,oBAAoB,uBAAuB,EACjE,iBAAiB,KAAK,kBAAkB,qBAAqB,CAC9D,GACD,QACJ,qBAAqB,GACjB,cACE,iBAAiB,KAAK,SAAS,4BAA4B,KAAK,EAChE,iBAAiB,KAAK,eAAe,4BAA4B,KAAK,EACtE,iBAAiB,KAAK,aAAa,uBAAuB,KAAK,EAC/D,iBAAiB,KAAK,iBAAiB,uBAAuB,KAAK,EACnE,iBAAiB,KAAK,aAAa,4BAA4B,KAAK,EACpE,iBAAiB,KAAK,WAAW,uBAAuB,KAAK,EAC7D,iBAAiB,KAAK,cAAc,yBAAyB,KAAK,EAClE,iBAAiB,KAAK,aAAa,wBAAwB,KAAK,EAChE,iBAAiB,KAAK,YAAY,uBAAuB,KAAK,CAC/D,GACD,OACL;AAED,kBAAgB;AACd,gBAAa;AACb,sBAAmB,OAAO;AAC1B,oCAAiC,OAAO;AACxC,yBAAsB;AACtB,+BAA4B,QAAQ;IACpC;GACF;AAEF,mBAAkB;AAChB,gBAAc;AACd,sBAAoB;GACpB;AAEF,sBAAqB;AACnB,4BAA0B,OAAO;AACjC,4BAA0B,OAAO;GACjC;CAEF,MAAM,YAAY;EAChB,WAAW;EACX,eAAe;EACf,SAAS;EACV;AAoBD,QAAO;EACL;EACA,UApBe;GACf,WAAW;GACX,eAAe;GACf,aAAa;GACb,gBAAgB;GAChB,mBAAmB,OAAmB;AACpC,uBAAmB;AACnB,kCAA8B,MAAM;;GAEtC,qBAAqB,OAAqB;AACxC,uBAAmB;AACnB,kCAA8B,MAAM;;GAEtC,kBAAkB;GAClB,mBAAmB;GACnB,oBAAoB;GACrB;EAKC,SAAS;EACV;;;;;ACxqBH,IAAa,mBAAb,MAAa,iBAAiB;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA,cAAc;AACZ,OAAK,cAAc;AACnB,OAAK,mBAAmB;AACxB,OAAK,UAAU;AACf,OAAK,iBAAiB;AACtB,OAAK,iCAAiC;AACtC,OAAK,4BAA4B;AACjC,OAAK,gCAAgC;AACrC,OAAK,+BAA+B;AACpC,OAAK,qBAAqB;AAC1B,OAAK,oBAAoB,IAAI,SAAS;AACtC,OAAK,cAAc,IAAI,SAAS;AAChC,OAAK,qBAAqB;;CAG5B,OAAO,SAA2B;AAChC,SAAO,IAAI,kBAAkB;;CAG/B,gBAAgB;AACd,OAAK,kBAAkB,OAAO;AAC9B,OAAK,YAAY,OAAO;;;AAY5B,MAAM,2DAA2C,IAAI,SAGlD;AAEH,SAAgB,sCAAsC,UAAsC;AAC1F,KAAI,CAAC,SAAS,+BACZ;CAGF,MAAM,eAAe,SAAS;AAE9B,KAAI,gBAAgB,yCAAyC,IAAI,aAAa,KAAK,UAAU;AAC3F,WAAS,2BAA2B,MAAM,eAAe,iBAAiB;AAC1E,WAAS,+BAA+B,MAAM,eAAe,iBAAiB;AAC9E,WAAS,8BAA8B,MAAM,eAAe,iBAAiB;AAC7E,2CAAyC,OAAO,aAAa;;AAG/D,UAAS,iCAAiC;AAC1C,UAAS,4BAA4B;AACrC,UAAS,gCAAgC;AACzC,UAAS,+BAA+B;;AAG1C,SAAgB,sCACd,UACA,SAKA;CACA,MAAM,EAAE,cAAc,kBAAkB,oBAAoB;CAE5D,MAAM,gBAAgB,yCAAyC,IAAI,aAAa;AAChF,KAAI,iBAAiB,kBAAkB,SACrC,uCAAsC,cAAc;AAGtD,uCAAsC,SAAS;AAC/C,UAAS,iCAAiC;AAC1C,UAAS,4BAA4B;AACrC,UAAS,gCAAgC;AACzC,UAAS,+BAA+B;AACxC,0CAAyC,IAAI,cAAc,SAAS;AAEpE,cAAa,MAAM,gBAAgB;AACnC,kBAAiB,MAAM,gBAAgB;AACvC,iBAAgB,MAAM,gBAAgB;;AAOxC,SAAgB,+BAA+B,OAA8C;CAC3F,MAAM,OAAO,MAAM,QAAQ,QAAQ;AAEnC,KAAI,CAAC,KAAK,sBACR,MAAK,wBAAwB,iBAAiB,QAAQ;AAGxD,QAAO,KAAK;;AAGd,SAAgB,+BAA+B,OAA8C;CAC3F,MAAM,WAAW,+BAA+B,MAAM;AACtD,gBAAe,SAAS,QAAQ;AAChC,QAAO;;;;;AChHT,SAAS,aACP,OACA,aACmB;AACnB,KAAI,eAAe,QAAQ,CAAC,uBAAuB,YAAY,CAC7D,QAAO;AAGT,KAAI,OAAO,UAAU,WACnB,QAAQ,OAAmB;AAG7B,QAAO;;AAGT,SAAgB,SACd,OACA,MACA,aACA;CACA,MAAM,SAAS,aAAa,OAAO,YAAY;AAC/C,KAAI,OAAO,WAAW,SACpB,QAAO;AAGT,QAAO,SAAS;;AAUlB,SAAgB,qBAAqB,eAAmC,kBAA2B;AACjG,QAAO,oBAAoB,kBAAkB,WAAW,kBAAkB;;AAG5E,SAAgB,iBAAiB,eAAmC;AAClE,QAAO,eAAe,SAAS,QAAQ,IAAI,kBAAkB;;;;;;;;ACF/D,SAAgB,4BACd,SACA,aAA+C,EAAE,EAC3C;CACN,MAAM,QAAQ,eAAe,UAAU,QAAQ,YAAY;CAE3D,MAAM,OAAO,MAAM,SAAS,OAAO;CACnC,MAAM,kBAAkB,MAAM,SAAS,kBAAkB;CACzD,MAAM,sBAAsB,MAAM,SAAS,sBAAsB;CACjE,MAAM,EAAE,YAAY,MAAM;CAE1B,MAAM,OAAO,iBAAiB;CAC9B,MAAM,WAAW,yBAAyB;CAC1C,MAAM,WAAW,+BAA+B,MAAM;CAEtD,MAAM,qBAAqB,YAAY;CAEvC,SAAS,UAAU;AACjB,SAAO,QAAQ,WAAW,WAAW,KAAK,KAAK;;CAGjD,SAASC,yBAAuB;AAC9B,SAAOC,qBAA2B,QAAQ,MAAM,WAAW,MAAM,SAAS,iBAAiB;;CAG7F,SAAS,cAAc;AACrB,SAAO,iBAAiB,QAAQ,MAAM,WAAW,KAAK;;CAGxD,SAAS,qBAAqB;AAC5B,wCAAsC,SAAS;;AAGjD,mBAAkB;AAChB,MAAI,CAAC,KAAK,OAAO;AACf,YAAS,cAAc;AACvB,YAAS,qBAAqB;AAC9B,YAAS,mBAAmB;AAC5B,uBAAoB;;GAEtB;AAEF,gBAAe,mBAAmB;AAElC,cAAa,cAAc;AACzB,MAAI,CAAC,SAAS,CACZ;AAGF,MACE,KAAK,SACF,SAAS,oBAAoB,sBAC7B,aAAa,IACb,UAAU,oBAAoB,MAAM,IACpC,gBAAgB,OACnB;GACA,MAAM,MAAM,oBAAoB;GAChC,MAAM,aAAa,gBAAgB;GACnC,MAAM,MAAM,cAAc,WAAW;GAGrC,MAAM,kBADa,MAAM,SAAS,MAAM,MAAK,SAAQ,KAAK,OAAO,SAAS,GACvC,SAAS,UAAU,OAAO,kBAAkB,IAAI;AAEnF,OAAI,eACF,gBAAe,MAAM,gBAAgB;GAGvC,MAAM,qBACF,SAAS,8BAA8B,aACrC,SAAS,4BACT;GACN,MAAM,qBAAqB,mBAAmB,aAAa,iBAAiB;GAC5E,MAAM,eACF,SAAS,oBAAoB,YAAY,IACtC,sBACA,sBACC,IAAI,QAAQ,qBAAqB,IAClC,KAAK;AAEZ,OAAI,cAAc;AAChB,0CAAsC,UAAU;KAC9C;KACA,kBAAkB;KAClB,iBAAiB;KAClB,CAAC;AAEF,cAAU,mBAAmB;;;GAGjC;AAEF,cAAa,cAAc;AACzB,MAAI,CAAC,SAAS,CACZ;EAGF,SAAS,oBAAoB;AAC3B,UAAO,QAAQ,QAAQ,YAAY,gBAAgB,KAAK,SAAS,OAAO,SAAS,CAAC,SAAS,EAAE;;EAG/F,SAAS,eAAe,OAAmB;GACzC,MAAM,aAAa,SAAS,QAAQ,WAAW,cAAc,EAAE,EAAE,SAAS,SAAS,YAAY;GAC/F,MAAM,cAAc;AAClB,UAAM,QAAQ,OAAO,yBAAyB,QAAQ,cAAc,MAAM,CAAC;AAC3E,UAAM,OAAO,KAAK,mBAAmB,MAAM;;AAG7C,OAAI,WACF,UAAS,kBAAkB,MAAM,YAAY,MAAM;QAEhD;AACH,aAAS,kBAAkB,OAAO;AAClC,WAAO;;;EAIX,SAAS,qBAAqB,OAAqB;GACjD,MAAM,SAAS,UAAU,MAAM;AAC/B,OAAI,CAAC,qBAAqB,OAAO,EAAE;AACjC,aAAS,mBAAmB;AAC5B;;AAGF,YAAS,mBAAmB,QAAQ,QAAQ,kBAAkB,IAAI;;EAGpE,SAAS,uBAAuB;AAC9B,YAAS,kBAAkB,OAAO;AAClC,SAAM,QAAQ,mBAAmB;AACjC,sBAAmB,OAAO;AAC1B,SAAM,OAAO,IAAI,mBAAmB,aAAa;AACjD,uBAAoB;;EAGtB,SAAS,qBAAqB,OAAmB;AAC/C,OAAI,mBAAmB,IAAI,MAAM;AAC/B,SAAK,OAAO,IAAI,mBAAmB,aAAa;AAChD,SAAK,OAAO,GAAG,mBAAmB,aAAa;AAC/C;;AAGF,OAAIC,6BAAuB,MAAM,eAAe,MAAM,QAAQ,gBAAgB,CAC5E;GAGF,MAAM,gBAAgB,QAAQ,MAAM,iBAAiB,UAAU,QAAQ,WAAW,OAAO;GACzF,MAAM,gBAAgB,MAAM;AAS5B,OAPI,QACG,iBACA,UAAU,cAAc,IACxB,gBAAgB,KAAK,SAAS,OAAO,eAAe,MAAM,CAAC,MAAK,SACjE,SAAS,KAAK,SAAS,UAAU,OAAO,kBAAkB,EAAE,cAAc,CAC3E,CAGH;AAGF,OAAI,SAAS,SAAS;AACpB,aAAS,QAAQ,MAAM;AACvB;;AAGF,uBAAoB;AACpB,OAAI,aAAa,IAAI,CAACF,wBAAsB,CAC1C,gBAAe,MAAM;;EAIzB,SAAS,aAAa,OAAmB;AACvC,OAAI,CAAC,QAAQ,CAAC,YAAY,mBAAmB,CAC3C;AAGF,sBAAmB,MAAM,SAAS;AAChC,SAAK,OAAO,IAAI,mBAAmB,aAAa;AAChD,UAAM,QAAQ,OAAO,yBAAyB,QAAQ,cAAc,MAAM,CAAC;AAC3E,SAAK,OAAO,KAAK,mBAAmB,MAAM;KAC1C;;EAGJ,MAAM,WAAW,gBAAgB;AAUjC,YATgB,cACd,iBAAiB,UAAU,cAAc,qBAAqB,EAC9D,iBAAiB,UAAU,cAAc,qBAAqB,EAC9D,iBAAiB,UAAU,eAAe,sBAAsB,KAAK,QAC/D;AACJ,SAAM,OAAO,IAAI,mBAAmB,aAAa;IAEpD,CAEiB;GAClB"}