@sanity/ui 4.0.0-next.3 → 4.0.0-next.5

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 (97) hide show
  1. package/README.md +4 -0
  2. package/dist/_system-CTe2lb5l.d.ts +40 -0
  3. package/dist/_system-CTe2lb5l.d.ts.map +1 -0
  4. package/dist/arrow-BG0EMNiC.js +159 -0
  5. package/dist/arrow-BG0EMNiC.js.map +1 -0
  6. package/dist/autocomplete.d.ts +140 -0
  7. package/dist/autocomplete.d.ts.map +1 -0
  8. package/dist/autocomplete.js +468 -0
  9. package/dist/autocomplete.js.map +1 -0
  10. package/dist/breadcrumbs.d.ts +18 -0
  11. package/dist/breadcrumbs.d.ts.map +1 -0
  12. package/dist/breadcrumbs.js +112 -0
  13. package/dist/breadcrumbs.js.map +1 -0
  14. package/dist/button-BzoZs3Sl.d.ts +76 -0
  15. package/dist/button-BzoZs3Sl.d.ts.map +1 -0
  16. package/dist/button-DZkAQOL2.js +174 -0
  17. package/dist/button-DZkAQOL2.js.map +1 -0
  18. package/dist/card-C0a0wQTc.d.ts +7 -0
  19. package/dist/card-C0a0wQTc.d.ts.map +1 -0
  20. package/dist/code.d.ts +20 -0
  21. package/dist/code.d.ts.map +1 -0
  22. package/dist/code.js +85 -0
  23. package/dist/code.js.map +1 -0
  24. package/dist/codeFontStyle-DYUujk7K.js +11 -0
  25. package/dist/codeFontStyle-DYUujk7K.js.map +1 -0
  26. package/dist/component-DVlwaWB-.d.ts +25 -0
  27. package/dist/component-DVlwaWB-.d.ts.map +1 -0
  28. package/dist/element-BYgCE_iK.js +51 -0
  29. package/dist/element-BYgCE_iK.js.map +1 -0
  30. package/dist/{getScopedTheme-CqaSCfTH.js → factory-CvRcEQ36.js} +6 -753
  31. package/dist/factory-CvRcEQ36.js.map +1 -0
  32. package/dist/flex-BYRpBTOc.js +69 -0
  33. package/dist/flex-BYRpBTOc.js.map +1 -0
  34. package/dist/font-EtfxKPUz.d.ts +49 -0
  35. package/dist/font-EtfxKPUz.d.ts.map +1 -0
  36. package/dist/getElementRef-5HZQ-Owu.js +91 -0
  37. package/dist/getElementRef-5HZQ-Owu.js.map +1 -0
  38. package/dist/getScopedTheme-C-sZsyAz.js +267 -0
  39. package/dist/getScopedTheme-C-sZsyAz.js.map +1 -0
  40. package/dist/getTheme_v2-y09KqtEb.js +487 -0
  41. package/dist/getTheme_v2-y09KqtEb.js.map +1 -0
  42. package/dist/grid-D88j-N7f.js +108 -0
  43. package/dist/grid-D88j-N7f.js.map +1 -0
  44. package/dist/helpers-bwfx1e-Y.js +67 -0
  45. package/dist/helpers-bwfx1e-Y.js.map +1 -0
  46. package/dist/hotkeys-B08HIKNu.js +145 -0
  47. package/dist/hotkeys-B08HIKNu.js.map +1 -0
  48. package/dist/index.d.ts +139 -926
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +421 -4686
  51. package/dist/index.js.map +1 -1
  52. package/dist/layer-BQfdK7rt.d.ts +242 -0
  53. package/dist/layer-BQfdK7rt.d.ts.map +1 -0
  54. package/dist/layer-BdkSGATt.js +56 -0
  55. package/dist/layer-BdkSGATt.js.map +1 -0
  56. package/dist/menu.d.ts +146 -0
  57. package/dist/menu.d.ts.map +1 -0
  58. package/dist/menu.js +602 -0
  59. package/dist/menu.js.map +1 -0
  60. package/dist/popover-DmmmSNzL.d.ts +96 -0
  61. package/dist/popover-DmmmSNzL.d.ts.map +1 -0
  62. package/dist/popover-Iy6EZEmv.js +406 -0
  63. package/dist/popover-Iy6EZEmv.js.map +1 -0
  64. package/dist/popover.d.ts +2 -0
  65. package/dist/popover.js +3 -0
  66. package/dist/responsiveFont-hN1mZFjm.js +55 -0
  67. package/dist/responsiveFont-hN1mZFjm.js.map +1 -0
  68. package/dist/{rgba-LmTDhX0u.d.ts → rgba-BSYaEUW6.d.ts} +4 -87
  69. package/dist/rgba-BSYaEUW6.d.ts.map +1 -0
  70. package/dist/selectable-B0GUIL74.d.ts +7 -0
  71. package/dist/selectable-B0GUIL74.d.ts.map +1 -0
  72. package/dist/stack-C5WV-BRh.js +98 -0
  73. package/dist/stack-C5WV-BRh.js.map +1 -0
  74. package/dist/styles.css +1 -0
  75. package/dist/textInput-IbiDH7Jc.js +315 -0
  76. package/dist/textInput-IbiDH7Jc.js.map +1 -0
  77. package/dist/theme.d.ts +3 -1
  78. package/dist/theme.d.ts.map +1 -1
  79. package/dist/theme.js +3 -1
  80. package/dist/theme.js.map +1 -1
  81. package/dist/toast.d.ts +73 -0
  82. package/dist/toast.d.ts.map +1 -0
  83. package/dist/toast.js +297 -0
  84. package/dist/toast.js.map +1 -0
  85. package/dist/tooltip.d.ts +88 -0
  86. package/dist/tooltip.d.ts.map +1 -0
  87. package/dist/tooltip.js +432 -0
  88. package/dist/tooltip.js.map +1 -0
  89. package/dist/useClickOutsideEvent-lEVhDFCQ.js +36 -0
  90. package/dist/useClickOutsideEvent-lEVhDFCQ.js.map +1 -0
  91. package/dist/useElementSize-BJvbGHq8.js +51 -0
  92. package/dist/useElementSize-BJvbGHq8.js.map +1 -0
  93. package/dist/useLayer-9Pz-GG0r.js +704 -0
  94. package/dist/useLayer-9Pz-GG0r.js.map +1 -0
  95. package/package.json +15 -4
  96. package/dist/getScopedTheme-CqaSCfTH.js.map +0 -1
  97. package/dist/rgba-LmTDhX0u.d.ts.map +0 -1
@@ -0,0 +1,468 @@
1
+ "use client";
2
+ import { n as _getArrayProp, o as EMPTY_ARRAY, s as EMPTY_RECORD } from "./helpers-bwfx1e-Y.js";
3
+ import { d as focusFirstDescendant, l as _hasFocus, m as _raf, t as TextInput } from "./textInput-IbiDH7Jc.js";
4
+ import { t as _isEnterToClickElement } from "./element-BYgCE_iK.js";
5
+ import { s as Card, y as Box } from "./useLayer-9Pz-GG0r.js";
6
+ import { n as Text, t as Stack } from "./stack-C5WV-BRh.js";
7
+ import { t as Button } from "./button-DZkAQOL2.js";
8
+ import { t as Popover } from "./popover-Iy6EZEmv.js";
9
+ import { c } from "react/compiler-runtime";
10
+ import { ChevronDownIcon } from "@sanity/icons/ChevronDown";
11
+ import { cloneElement, startTransition, useEffect, useImperativeHandle, useReducer, useRef, useState } from "react";
12
+ import { keyframes, styled } from "styled-components";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ import { SpinnerIcon } from "@sanity/icons/Spinner";
15
+ /**
16
+ * @internal
17
+ */
18
+ const StyledAutocomplete = styled.div.withConfig({
19
+ displayName: "StyledAutocomplete",
20
+ componentId: "sc-ilitn5-0"
21
+ })`line-height:0;`, ListBox = styled(Box).withConfig({
22
+ displayName: "ListBox",
23
+ componentId: "sc-ilitn5-1"
24
+ })`& > ul{list-style:none;padding:0;margin:0;}`, rotate = keyframes`from{transform:rotate(0deg);}to{transform:rotate(360deg);}`, AnimatedSpinnerIcon = styled(SpinnerIcon).withConfig({
25
+ displayName: "AnimatedSpinnerIcon",
26
+ componentId: "sc-ilitn5-2"
27
+ })`animation:${rotate} 500ms linear infinite;`;
28
+ function AutocompleteOption(props) {
29
+ let $ = c(11), { children, id, onSelect, selected, value } = props, t0;
30
+ $[0] !== onSelect || $[1] !== value ? (t0 = () => {
31
+ setTimeout(() => {
32
+ onSelect(value);
33
+ }, 0);
34
+ }, $[0] = onSelect, $[1] = value, $[2] = t0) : t0 = $[2];
35
+ let handleClick = t0, t1;
36
+ $[3] === handleClick ? t1 = $[4] : (t1 = (event) => {
37
+ event.key === "Enter" && !_isEnterToClickElement(event.currentTarget) && handleClick();
38
+ }, $[3] = handleClick, $[4] = t1);
39
+ let handleKeyDown = t1, t2;
40
+ return $[5] !== children || $[6] !== handleClick || $[7] !== handleKeyDown || $[8] !== id || $[9] !== selected ? (t2 = /* @__PURE__ */ jsx("li", {
41
+ "aria-selected": selected,
42
+ "data-ui": "AutocompleteOption",
43
+ id,
44
+ role: "option",
45
+ onClick: handleClick,
46
+ onKeyDown: handleKeyDown,
47
+ children
48
+ }), $[5] = children, $[6] = handleClick, $[7] = handleKeyDown, $[8] = id, $[9] = selected, $[10] = t2) : t2 = $[10], t2;
49
+ }
50
+ /**
51
+ * @internal
52
+ */
53
+ function autocompleteReducer(state, msg) {
54
+ return msg.type === "input/change" ? {
55
+ ...state,
56
+ activeValue: null,
57
+ focused: !0,
58
+ query: msg.query
59
+ } : msg.type === "input/focus" ? {
60
+ ...state,
61
+ focused: !0
62
+ } : msg.type === "root/blur" ? {
63
+ ...state,
64
+ focused: !1,
65
+ query: null
66
+ } : msg.type === "root/clear" ? {
67
+ ...state,
68
+ activeValue: null,
69
+ query: null,
70
+ value: null
71
+ } : msg.type === "root/escape" ? {
72
+ ...state,
73
+ focused: !1,
74
+ query: null
75
+ } : msg.type === "root/open" ? {
76
+ ...state,
77
+ query: state.query || msg.query
78
+ } : msg.type === "root/setActiveValue" ? {
79
+ ...state,
80
+ activeValue: msg.value,
81
+ listFocused: msg.listFocused || state.listFocused
82
+ } : msg.type === "root/setListFocused" ? {
83
+ ...state,
84
+ listFocused: msg.listFocused
85
+ } : msg.type === "value/change" ? {
86
+ ...state,
87
+ activeValue: msg.value,
88
+ query: null,
89
+ value: msg.value
90
+ } : state;
91
+ }
92
+ /**
93
+ * @internal
94
+ */
95
+ const AUTOCOMPLETE_LISTBOX_IGNORE_KEYS = [
96
+ "Control",
97
+ "Shift",
98
+ "Alt",
99
+ "Enter",
100
+ "Home",
101
+ "End",
102
+ "PageUp",
103
+ "PageDown",
104
+ "Meta",
105
+ "Tab",
106
+ "CapsLock"
107
+ ], AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS = ["bottom-start", "top-start"], DEFAULT_RENDER_VALUE = (value, option) => option ? option.value : value, DEFAULT_FILTER_OPTION = (query, option) => option.value.toLowerCase().indexOf(query.toLowerCase()) > -1, Autocomplete = function Autocomplete(props) {
108
+ let $ = c(182), customValidity, disabled, filterOptionProp, forwardedRef, icon, id, loading, onBlur, onChange, onFocus, onQueryChange, onSelect, openButton, openOnFocus, optionsProp, prefix, readOnly, relatedElements, renderOptionProp, renderPopover, restProps, suffix, t0, t1, t2, t3, t4, t5, t6, valueProp;
109
+ $[0] === props ? (customValidity = $[1], disabled = $[2], filterOptionProp = $[3], forwardedRef = $[4], icon = $[5], id = $[6], loading = $[7], onBlur = $[8], onChange = $[9], onFocus = $[10], onQueryChange = $[11], onSelect = $[12], openButton = $[13], openOnFocus = $[14], optionsProp = $[15], prefix = $[16], readOnly = $[17], relatedElements = $[18], renderOptionProp = $[19], renderPopover = $[20], restProps = $[21], suffix = $[22], t0 = $[23], t1 = $[24], t2 = $[25], t3 = $[26], t4 = $[27], t5 = $[28], t6 = $[29], valueProp = $[30]) : ({border: t0, customValidity, disabled, filterOption: filterOptionProp, fontSize: t1, icon, id, listBox: t2, loading, onBlur, onChange, onFocus, onQueryChange, onSelect, openButton, openOnFocus, options: optionsProp, padding: t3, popover: t4, prefix, radius: t5, readOnly, ref: forwardedRef, relatedElements, renderOption: renderOptionProp, renderPopover, renderValue: t6, suffix, value: valueProp, ...restProps} = props, $[0] = props, $[1] = customValidity, $[2] = disabled, $[3] = filterOptionProp, $[4] = forwardedRef, $[5] = icon, $[6] = id, $[7] = loading, $[8] = onBlur, $[9] = onChange, $[10] = onFocus, $[11] = onQueryChange, $[12] = onSelect, $[13] = openButton, $[14] = openOnFocus, $[15] = optionsProp, $[16] = prefix, $[17] = readOnly, $[18] = relatedElements, $[19] = renderOptionProp, $[20] = renderPopover, $[21] = restProps, $[22] = suffix, $[23] = t0, $[24] = t1, $[25] = t2, $[26] = t3, $[27] = t4, $[28] = t5, $[29] = t6, $[30] = valueProp);
110
+ let border = t0 === void 0 || t0, fontSize = t1 === void 0 ? 2 : t1, listBox = t2 === void 0 ? EMPTY_RECORD : t2, paddingProp = t3 === void 0 ? 3 : t3, popover = t4 === void 0 ? EMPTY_RECORD : t4, radius = t5 === void 0 ? 2 : t5, renderValue = t6 === void 0 ? DEFAULT_RENDER_VALUE : t6, t7 = valueProp || null, t8 = valueProp || null, t9;
111
+ $[31] !== t7 || $[32] !== t8 ? (t9 = {
112
+ activeValue: t7,
113
+ focused: !1,
114
+ listFocused: !1,
115
+ query: null,
116
+ value: t8
117
+ }, $[31] = t7, $[32] = t8, $[33] = t9) : t9 = $[33];
118
+ let [state, dispatch] = useReducer(autocompleteReducer, t9), { activeValue, focused, listFocused, query, value } = state, t10;
119
+ $[34] !== fontSize || $[35] !== paddingProp ? (t10 = (t11) => {
120
+ let { value: value_0 } = t11;
121
+ return /* @__PURE__ */ jsx(Card, {
122
+ "data-as": "button",
123
+ padding: paddingProp,
124
+ radius: 2,
125
+ tone: "inherit",
126
+ children: /* @__PURE__ */ jsx(Text, {
127
+ size: fontSize,
128
+ textOverflow: "ellipsis",
129
+ children: value_0
130
+ })
131
+ });
132
+ }, $[34] = fontSize, $[35] = paddingProp, $[36] = t10) : t10 = $[36];
133
+ let renderOption = typeof renderOptionProp == "function" ? renderOptionProp : t10, filterOption = typeof filterOptionProp == "function" ? filterOptionProp : DEFAULT_FILTER_OPTION, rootElementRef = useRef(null), resultsPopoverElementRef = useRef(null), inputElementRef = useRef(null), listBoxElementRef = useRef(null), [inputElement, _setInputElement] = useState(null), t11;
134
+ $[37] === Symbol.for("react.memo_cache_sentinel") ? (t11 = (node) => {
135
+ startTransition(() => _setInputElement(node));
136
+ }, $[37] = t11) : t11 = $[37];
137
+ let setInputElement = t11, listFocusedRef = useRef(!1), valueRef = useRef(value), valuePropRef = useRef(valueProp), popoverMouseWithinRef = useRef(!1), t12, t13;
138
+ $[38] === inputElement ? (t12 = $[39], t13 = $[40]) : (t12 = () => inputElement, t13 = [inputElement], $[38] = inputElement, $[39] = t12, $[40] = t13), useImperativeHandle(inputElementRef, t12, t13);
139
+ let t14, t15;
140
+ $[41] === inputElement ? (t14 = $[42], t15 = $[43]) : (t14 = () => inputElement, t15 = [inputElement], $[41] = inputElement, $[42] = t14, $[43] = t15), useImperativeHandle(forwardedRef, t14, t15);
141
+ let listBoxId = `${id}-listbox`, options = Array.isArray(optionsProp) ? optionsProp : EMPTY_ARRAY, padding = _getArrayProp(paddingProp), t16;
142
+ $[44] !== options || $[45] !== value ? (t16 = value === null ? void 0 : options.find((o) => o.value === value), $[44] = options, $[45] = value, $[46] = t16) : t16 = $[46];
143
+ let currentOption = t16, t17;
144
+ if ($[47] !== filterOption || $[48] !== options || $[49] !== query) {
145
+ let t18;
146
+ $[51] !== filterOption || $[52] !== query ? (t18 = (option) => !query || filterOption(query, option), $[51] = filterOption, $[52] = query, $[53] = t18) : t18 = $[53], t17 = options.filter(t18), $[47] = filterOption, $[48] = options, $[49] = query, $[50] = t17;
147
+ } else t17 = $[50];
148
+ let filteredOptions = t17, filteredOptionsLen = filteredOptions.length, activeItemId = activeValue ? `${id}-option-${activeValue}` : void 0, expanded = query !== null && loading || focused && query !== null, t18;
149
+ $[54] !== onBlur || $[55] !== onQueryChange || $[56] !== relatedElements ? (t18 = (event) => {
150
+ setTimeout(() => {
151
+ if (popoverMouseWithinRef.current) return;
152
+ let elements = (relatedElements || []).concat(rootElementRef.current ? [rootElementRef.current] : [], resultsPopoverElementRef.current ? [resultsPopoverElementRef.current] : []), focusInside = !1;
153
+ if (document.activeElement) {
154
+ for (let e of elements) if (e === document.activeElement || e.contains(document.activeElement)) {
155
+ focusInside = !0;
156
+ break;
157
+ }
158
+ }
159
+ focusInside === !1 && (dispatch({ type: "root/blur" }), popoverMouseWithinRef.current = !1, onQueryChange && onQueryChange(null), onBlur && onBlur(event));
160
+ }, 0);
161
+ }, $[54] = onBlur, $[55] = onQueryChange, $[56] = relatedElements, $[57] = t18) : t18 = $[57];
162
+ let handleRootBlur = t18, t19;
163
+ $[58] === Symbol.for("react.memo_cache_sentinel") ? (t19 = (event_0) => {
164
+ let listBoxElement = listBoxElementRef.current, focusedElement = event_0.target instanceof HTMLElement ? event_0.target : null, listFocused_0 = listBoxElement?.contains(focusedElement) || !1;
165
+ listFocused_0 !== listFocusedRef.current && (listFocusedRef.current = listFocused_0, dispatch({
166
+ type: "root/setListFocused",
167
+ listFocused: listFocused_0
168
+ }));
169
+ }, $[58] = t19) : t19 = $[58];
170
+ let handleRootFocus = t19, t20;
171
+ $[59] !== onChange || $[60] !== onQueryChange || $[61] !== onSelect ? (t20 = (v) => {
172
+ dispatch({
173
+ type: "value/change",
174
+ value: v
175
+ }), popoverMouseWithinRef.current = !1, onSelect && onSelect(v), valueRef.current = v, onChange && onChange(v), onQueryChange && onQueryChange(null), inputElementRef.current?.focus();
176
+ }, $[59] = onChange, $[60] = onQueryChange, $[61] = onSelect, $[62] = t20) : t20 = $[62];
177
+ let handleOptionSelect = t20, t21;
178
+ $[63] !== activeValue || $[64] !== filteredOptions || $[65] !== filteredOptionsLen || $[66] !== onQueryChange ? (t21 = (event_1) => {
179
+ if (event_1.key === "ArrowDown") {
180
+ if (event_1.preventDefault(), !filteredOptionsLen) return;
181
+ let activeOption = filteredOptions.find((o_0) => o_0.value === activeValue), activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1, nextActiveOption = filteredOptions[(activeIndex + 1) % filteredOptionsLen];
182
+ nextActiveOption && dispatch({
183
+ type: "root/setActiveValue",
184
+ value: nextActiveOption.value,
185
+ listFocused: !0
186
+ });
187
+ return;
188
+ }
189
+ if (event_1.key === "ArrowUp") {
190
+ if (event_1.preventDefault(), !filteredOptionsLen) return;
191
+ let activeOption_0 = filteredOptions.find((o_1) => o_1.value === activeValue), activeIndex_0 = activeOption_0 ? filteredOptions.indexOf(activeOption_0) : -1, nextActiveOption_0 = filteredOptions[activeIndex_0 === -1 ? filteredOptionsLen - 1 : (filteredOptionsLen + activeIndex_0 - 1) % filteredOptionsLen];
192
+ nextActiveOption_0 && dispatch({
193
+ type: "root/setActiveValue",
194
+ value: nextActiveOption_0.value,
195
+ listFocused: !0
196
+ });
197
+ return;
198
+ }
199
+ if (event_1.key === "Escape") {
200
+ dispatch({ type: "root/escape" }), popoverMouseWithinRef.current = !1, onQueryChange && onQueryChange(null), inputElementRef.current?.focus();
201
+ return;
202
+ }
203
+ let target = event_1.target, listEl = listBoxElementRef.current;
204
+ if ((listEl === target || listEl?.contains(target)) && !AUTOCOMPLETE_LISTBOX_IGNORE_KEYS.includes(event_1.key)) {
205
+ inputElementRef.current?.focus();
206
+ return;
207
+ }
208
+ }, $[63] = activeValue, $[64] = filteredOptions, $[65] = filteredOptionsLen, $[66] = onQueryChange, $[67] = t21) : t21 = $[67];
209
+ let handleRootKeyDown = t21, t22;
210
+ $[68] === onQueryChange ? t22 = $[69] : (t22 = (event_2) => {
211
+ let nextQuery = event_2.currentTarget.value;
212
+ dispatch({
213
+ type: "input/change",
214
+ query: nextQuery
215
+ }), onQueryChange && onQueryChange(nextQuery);
216
+ }, $[68] = onQueryChange, $[69] = t22);
217
+ let handleInputChange = t22, t23;
218
+ $[70] !== currentOption || $[71] !== renderValue || $[72] !== value ? (t23 = () => {
219
+ dispatch({
220
+ type: "root/open",
221
+ query: value ? renderValue(value, currentOption) : ""
222
+ });
223
+ }, $[70] = currentOption, $[71] = renderValue, $[72] = value, $[73] = t23) : t23 = $[73];
224
+ let dispatchOpen = t23, t24;
225
+ $[74] !== dispatchOpen || $[75] !== focused || $[76] !== onFocus || $[77] !== openOnFocus ? (t24 = (event_3) => {
226
+ focused || (dispatch({ type: "input/focus" }), onFocus && onFocus(event_3), openOnFocus && dispatchOpen());
227
+ }, $[74] = dispatchOpen, $[75] = focused, $[76] = onFocus, $[77] = openOnFocus, $[78] = t24) : t24 = $[78];
228
+ let handleInputFocus = t24, t25;
229
+ $[79] === Symbol.for("react.memo_cache_sentinel") ? (t25 = () => {
230
+ popoverMouseWithinRef.current = !0;
231
+ }, $[79] = t25) : t25 = $[79];
232
+ let handlePopoverMouseEnter = t25, t26;
233
+ $[80] === Symbol.for("react.memo_cache_sentinel") ? (t26 = () => {
234
+ popoverMouseWithinRef.current = !1;
235
+ }, $[80] = t26) : t26 = $[80];
236
+ let handlePopoverMouseLeave = t26, t27;
237
+ $[81] !== onChange || $[82] !== onQueryChange ? (t27 = () => {
238
+ dispatch({ type: "root/clear" }), valueRef.current = "", onChange && onChange(""), onQueryChange && onQueryChange(null), inputElementRef.current?.focus();
239
+ }, $[81] = onChange, $[82] = onQueryChange, $[83] = t27) : t27 = $[83];
240
+ let handleClearButtonClick = t27, t28;
241
+ $[84] === Symbol.for("react.memo_cache_sentinel") ? (t28 = () => {
242
+ dispatch({ type: "input/focus" });
243
+ }, $[84] = t28) : t28 = $[84];
244
+ let handleClearButtonFocus = t28, t29, t30;
245
+ $[85] === valueProp ? (t29 = $[86], t30 = $[87]) : (t29 = () => {
246
+ if (valueProp !== valuePropRef.current) {
247
+ valuePropRef.current = valueProp, valueProp !== void 0 && (dispatch({
248
+ type: "value/change",
249
+ value: valueProp
250
+ }), valueRef.current = valueProp);
251
+ return;
252
+ }
253
+ valueProp !== valueRef.current && (valueRef.current = valueProp || null, dispatch({
254
+ type: "value/change",
255
+ value: valueProp || null
256
+ }));
257
+ }, t30 = [valueProp], $[85] = valueProp, $[86] = t29, $[87] = t30), useEffect(t29, t30);
258
+ let t31, t32;
259
+ $[88] === focused ? (t31 = $[89], t32 = $[90]) : (t31 = () => {
260
+ !focused && valueRef.current && dispatch({
261
+ type: "root/setActiveValue",
262
+ value: valueRef.current
263
+ });
264
+ }, t32 = [focused], $[88] = focused, $[89] = t31, $[90] = t32), useEffect(t31, t32);
265
+ let t33, t34;
266
+ $[91] !== activeValue || $[92] !== filteredOptions ? (t33 = () => {
267
+ let listElement = listBoxElementRef.current;
268
+ if (!listElement) return;
269
+ let activeOption_1 = filteredOptions.find((o_2) => o_2.value === activeValue);
270
+ if (activeOption_1) {
271
+ let activeIndex_1 = filteredOptions.indexOf(activeOption_1), activeItemElement = listElement.childNodes[activeIndex_1];
272
+ if (activeItemElement) {
273
+ if (_hasFocus(activeItemElement)) return;
274
+ focusFirstDescendant(activeItemElement);
275
+ }
276
+ }
277
+ }, t34 = [activeValue, filteredOptions], $[91] = activeValue, $[92] = filteredOptions, $[93] = t33, $[94] = t34) : (t33 = $[93], t34 = $[94]), useEffect(t33, t34);
278
+ let t35;
279
+ bb0: {
280
+ if (!loading && !disabled && value) {
281
+ let t36;
282
+ $[95] === Symbol.for("react.memo_cache_sentinel") ? (t36 = {
283
+ "aria-label": "Clear",
284
+ onFocus: handleClearButtonFocus
285
+ }, $[95] = t36) : t36 = $[95], t35 = t36;
286
+ break bb0;
287
+ }
288
+ t35 = void 0;
289
+ }
290
+ let clearButton = t35, openButtonBoxPadding = padding.map(_temp), openButtonPadding = padding.map(_temp2), openButtonProps = typeof openButton == "object" ? openButton : EMPTY_RECORD, t36;
291
+ $[96] !== dispatchOpen || $[97] !== openButtonProps ? (t36 = (event_4) => {
292
+ dispatchOpen(), openButtonProps.onClick && openButtonProps.onClick(event_4), _raf(() => inputElementRef.current?.focus());
293
+ }, $[96] = dispatchOpen, $[97] = openButtonProps, $[98] = t36) : t36 = $[98];
294
+ let handleOpenClick = t36, t37;
295
+ $[99] !== disabled || $[100] !== expanded || $[101] !== fontSize || $[102] !== handleOpenClick || $[103] !== openButton || $[104] !== openButtonBoxPadding || $[105] !== openButtonPadding || $[106] !== openButtonProps || $[107] !== readOnly ? (t37 = !disabled && !readOnly && openButton ? /* @__PURE__ */ jsx(Box, {
296
+ "aria-hidden": expanded,
297
+ padding: openButtonBoxPadding,
298
+ children: /* @__PURE__ */ jsx(Button, {
299
+ "aria-label": "Open",
300
+ disabled: expanded,
301
+ fontSize,
302
+ icon: ChevronDownIcon,
303
+ mode: "bleed",
304
+ padding: openButtonPadding,
305
+ ...openButtonProps,
306
+ onClick: handleOpenClick
307
+ })
308
+ }) : void 0, $[99] = disabled, $[100] = expanded, $[101] = fontSize, $[102] = handleOpenClick, $[103] = openButton, $[104] = openButtonBoxPadding, $[105] = openButtonPadding, $[106] = openButtonProps, $[107] = readOnly, $[108] = t37) : t37 = $[108];
309
+ let openButtonNode = t37, t38;
310
+ bb1: {
311
+ if (query === null) {
312
+ if (value !== null) {
313
+ let t39;
314
+ $[109] !== currentOption || $[110] !== renderValue || $[111] !== value ? (t39 = renderValue(value, currentOption), $[109] = currentOption, $[110] = renderValue, $[111] = value, $[112] = t39) : t39 = $[112], t38 = t39;
315
+ break bb1;
316
+ }
317
+ t38 = "";
318
+ break bb1;
319
+ }
320
+ t38 = query;
321
+ }
322
+ let inputValue = t38, t39;
323
+ $[113] === listFocused ? t39 = $[114] : (t39 = (event_5) => {
324
+ event_5.key === "Tab" && listFocused && inputElementRef.current?.focus();
325
+ }, $[113] = listFocused, $[114] = t39);
326
+ let handleListBoxKeyDown = t39, t40;
327
+ bb2: {
328
+ if (filteredOptions.length === 0) {
329
+ t40 = null;
330
+ break bb2;
331
+ }
332
+ let t41;
333
+ if ($[115] !== activeValue || $[116] !== currentOption || $[117] !== filteredOptions || $[118] !== handleOptionSelect || $[119] !== id || $[120] !== listFocused || $[121] !== loading || $[122] !== renderOption) {
334
+ let t42;
335
+ $[124] !== activeValue || $[125] !== currentOption || $[126] !== handleOptionSelect || $[127] !== id || $[128] !== listFocused || $[129] !== loading || $[130] !== renderOption ? (t42 = (option_0) => {
336
+ let active = activeValue === null ? currentOption === option_0 : option_0.value === activeValue;
337
+ return /* @__PURE__ */ jsx(AutocompleteOption, {
338
+ id: `${id}-option-${option_0.value}`,
339
+ onSelect: handleOptionSelect,
340
+ selected: active,
341
+ value: option_0.value,
342
+ children: cloneElement(renderOption(option_0), {
343
+ disabled: loading,
344
+ selected: active,
345
+ tabIndex: listFocused && active ? 0 : -1
346
+ })
347
+ }, option_0.value);
348
+ }, $[124] = activeValue, $[125] = currentOption, $[126] = handleOptionSelect, $[127] = id, $[128] = listFocused, $[129] = loading, $[130] = renderOption, $[131] = t42) : t42 = $[131], t41 = filteredOptions.map(t42), $[115] = activeValue, $[116] = currentOption, $[117] = filteredOptions, $[118] = handleOptionSelect, $[119] = id, $[120] = listFocused, $[121] = loading, $[122] = renderOption, $[123] = t41;
349
+ } else t41 = $[123];
350
+ let t42;
351
+ $[132] !== listBoxId || $[133] !== t41 ? (t42 = /* @__PURE__ */ jsx(Stack, {
352
+ as: "ul",
353
+ "aria-multiselectable": !1,
354
+ "data-ui": "AutoComplete__resultsList",
355
+ id: listBoxId,
356
+ ref: listBoxElementRef,
357
+ role: "listbox",
358
+ gap: 1,
359
+ children: t41
360
+ }), $[132] = listBoxId, $[133] = t41, $[134] = t42) : t42 = $[134];
361
+ let t43;
362
+ $[135] !== handleListBoxKeyDown || $[136] !== listBox || $[137] !== t42 ? (t43 = /* @__PURE__ */ jsx(ListBox, {
363
+ "data-ui": "AutoComplete__results",
364
+ onKeyDown: handleListBoxKeyDown,
365
+ padding: 1,
366
+ ...listBox,
367
+ tabIndex: -1,
368
+ children: t42
369
+ }), $[135] = handleListBoxKeyDown, $[136] = listBox, $[137] = t42, $[138] = t43) : t43 = $[138], t40 = t43;
370
+ }
371
+ let content = t40, t41;
372
+ bb3: {
373
+ if (renderPopover) {
374
+ let t42 = !expanded, t43;
375
+ $[139] !== content || $[140] !== handlePopoverMouseEnter || $[141] !== handlePopoverMouseLeave || $[142] !== inputElement || $[143] !== renderPopover || $[144] !== t42 ? (t43 = /* @__PURE__ */ jsx(RenderPopover, {
376
+ content,
377
+ hidden: t42,
378
+ inputElement,
379
+ onMouseEnter: handlePopoverMouseEnter,
380
+ onMouseLeave: handlePopoverMouseLeave,
381
+ resultsPopoverElementRef,
382
+ renderPopover
383
+ }), $[139] = content, $[140] = handlePopoverMouseEnter, $[141] = handlePopoverMouseLeave, $[142] = inputElement, $[143] = renderPopover, $[144] = t42, $[145] = t43) : t43 = $[145], t41 = t43;
384
+ break bb3;
385
+ }
386
+ if (filteredOptionsLen === 0) {
387
+ t41 = null;
388
+ break bb3;
389
+ }
390
+ let t42;
391
+ $[146] !== content || $[147] !== expanded || $[148] !== handlePopoverMouseEnter || $[149] !== handlePopoverMouseLeave || $[150] !== inputElement || $[151] !== popover || $[152] !== radius ? (t42 = /* @__PURE__ */ jsx(Popover, {
392
+ arrow: !1,
393
+ constrainSize: !0,
394
+ content,
395
+ fallbackPlacements: AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS,
396
+ matchReferenceWidth: !0,
397
+ onMouseEnter: handlePopoverMouseEnter,
398
+ onMouseLeave: handlePopoverMouseLeave,
399
+ open: expanded,
400
+ overflow: "auto",
401
+ placement: "bottom-start",
402
+ portal: !0,
403
+ radius,
404
+ ref: resultsPopoverElementRef,
405
+ referenceElement: inputElement,
406
+ ...popover
407
+ }), $[146] = content, $[147] = expanded, $[148] = handlePopoverMouseEnter, $[149] = handlePopoverMouseLeave, $[150] = inputElement, $[151] = popover, $[152] = radius, $[153] = t42) : t42 = $[153], t41 = t42;
408
+ }
409
+ let results = t41, t42 = loading && AnimatedSpinnerIcon, t43 = suffix || openButtonNode, t44;
410
+ $[154] !== activeItemId || $[155] !== border || $[156] !== clearButton || $[157] !== customValidity || $[158] !== disabled || $[159] !== expanded || $[160] !== fontSize || $[161] !== handleClearButtonClick || $[162] !== handleInputChange || $[163] !== handleInputFocus || $[164] !== icon || $[165] !== id || $[166] !== inputValue || $[167] !== listBoxId || $[168] !== padding || $[169] !== prefix || $[170] !== radius || $[171] !== readOnly || $[172] !== restProps || $[173] !== t42 || $[174] !== t43 ? (t44 = /* @__PURE__ */ jsx(TextInput, {
411
+ ...restProps,
412
+ "aria-activedescendant": activeItemId,
413
+ "aria-autocomplete": "list",
414
+ "aria-expanded": expanded,
415
+ "aria-owns": listBoxId,
416
+ autoCapitalize: "off",
417
+ autoComplete: "off",
418
+ autoCorrect: "off",
419
+ border,
420
+ clearButton,
421
+ customValidity,
422
+ disabled,
423
+ fontSize,
424
+ icon,
425
+ iconRight: t42,
426
+ id,
427
+ inputMode: "search",
428
+ onChange: handleInputChange,
429
+ onClear: handleClearButtonClick,
430
+ onFocus: handleInputFocus,
431
+ padding,
432
+ prefix,
433
+ radius,
434
+ readOnly,
435
+ ref: setInputElement,
436
+ role: "combobox",
437
+ spellCheck: !1,
438
+ suffix: t43,
439
+ value: inputValue
440
+ }), $[154] = activeItemId, $[155] = border, $[156] = clearButton, $[157] = customValidity, $[158] = disabled, $[159] = expanded, $[160] = fontSize, $[161] = handleClearButtonClick, $[162] = handleInputChange, $[163] = handleInputFocus, $[164] = icon, $[165] = id, $[166] = inputValue, $[167] = listBoxId, $[168] = padding, $[169] = prefix, $[170] = radius, $[171] = readOnly, $[172] = restProps, $[173] = t42, $[174] = t43, $[175] = t44) : t44 = $[175];
441
+ let t45;
442
+ return $[176] !== handleRootBlur || $[177] !== handleRootFocus || $[178] !== handleRootKeyDown || $[179] !== results || $[180] !== t44 ? (t45 = /* @__PURE__ */ jsxs(StyledAutocomplete, {
443
+ "data-ui": "Autocomplete",
444
+ onBlur: handleRootBlur,
445
+ onFocus: handleRootFocus,
446
+ onKeyDown: handleRootKeyDown,
447
+ ref: rootElementRef,
448
+ children: [t44, results]
449
+ }), $[176] = handleRootBlur, $[177] = handleRootFocus, $[178] = handleRootKeyDown, $[179] = results, $[180] = t44, $[181] = t45) : t45 = $[181], t45;
450
+ };
451
+ function RenderPopover({ renderPopover, content, hidden, inputElement, onMouseEnter, onMouseLeave, resultsPopoverElementRef }) {
452
+ return renderPopover({
453
+ content,
454
+ hidden,
455
+ inputElement,
456
+ onMouseEnter,
457
+ onMouseLeave
458
+ }, resultsPopoverElementRef);
459
+ }
460
+ function _temp(v_0) {
461
+ return v_0 === 0 ? 0 : v_0 === 1 || v_0 === 2 ? 1 : v_0 - 2;
462
+ }
463
+ function _temp2(v_1) {
464
+ return Math.max(v_1 - 1, 0);
465
+ }
466
+ export { Autocomplete };
467
+
468
+ //# sourceMappingURL=autocomplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete.js","names":["SpinnerIcon","keyframes","styled","Box","StyledAutocomplete","div","ListBox","rotate","AnimatedSpinnerIcon","useCallback","_isEnterToClickElement","AutocompleteOptionProps","children","React","ReactNode","id","onSelect","v","selected","value","AutocompleteOption","props","$","_c","t0","setTimeout","handleClick","t1","event","key","currentTarget","handleKeyDown","t2","AutocompleteMsg","AutocompleteState","autocompleteReducer","state","msg","type","activeValue","focused","query","value","listFocused","Placement","AUTOCOMPLETE_LISTBOX_IGNORE_KEYS","AUTOCOMPLETE_POPOVER_PLACEMENT","AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS","ChevronDownIcon","ChangeEvent","cloneElement","ElementType","FocusEvent","HTMLProps","KeyboardEvent","MouseEvent","ReactNode","Ref","startTransition","useCallback","useEffect","useImperativeHandle","useMemo","useReducer","useRef","useState","EMPTY_ARRAY","EMPTY_RECORD","_raf","_hasFocus","focusFirstDescendant","Box","BoxProps","Button","Card","Popover","PopoverProps","Stack","Text","TextInput","_getArrayProp","Radius","AnimatedSpinnerIcon","ListBox","StyledAutocomplete","AutocompleteOption","autocompleteReducer","AUTOCOMPLETE_LISTBOX_IGNORE_KEYS","AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS","AUTOCOMPLETE_POPOVER_PLACEMENT","AutocompleteOpenButtonProps","BaseAutocompleteOption","AutocompleteProps","border","customValidity","filterOption","query","option","Option","fontSize","icon","id","listBox","loading","onChange","value","onQueryChange","onSelect","openButton","openOnFocus","options","padding","popover","Omit","HTMLDivElement","prefix","radius","relatedElements","HTMLElement","renderOption","React","JSX","Element","renderPopover","props","content","hidden","inputElement","HTMLInputElement","onMouseEnter","onMouseLeave","ref","renderValue","suffix","DEFAULT_RENDER_VALUE","DEFAULT_FILTER_OPTION","toLowerCase","indexOf","Autocomplete","$","_c","disabled","filterOptionProp","forwardedRef","onBlur","onFocus","optionsProp","readOnly","renderOptionProp","restProps","t0","t1","t2","t3","t4","t5","t6","valueProp","undefined","paddingProp","t7","t8","t9","activeValue","focused","listFocused","state","dispatch","t10","t11","value_0","defaultRenderOption","rootElementRef","resultsPopoverElementRef","inputElementRef","listBoxElementRef","_setInputElement","Symbol","for","node","setInputElement","listFocusedRef","valueRef","valuePropRef","popoverMouseWithinRef","t12","t13","t14","t15","listBoxId","Array","isArray","t16","find","o","currentOption","t17","t18","filter","filteredOptions","filteredOptionsLen","length","activeItemId","expanded","event","setTimeout","current","elements","concat","focusInside","document","activeElement","e","contains","type","handleRootBlur","t19","event_0","listBoxElement","focusedElement","target","listFocused_0","handleRootFocus","t20","v","focus","handleOptionSelect","t21","event_1","key","preventDefault","activeOption","o_0","activeIndex","nextActiveOption","activeOption_0","o_1","activeIndex_0","nextActiveOption_0","Node","listEl","includes","handleRootKeyDown","t22","event_2","nextQuery","currentTarget","handleInputChange","t23","dispatchOpen","t24","event_3","handleInputFocus","t25","handlePopoverMouseEnter","t26","handlePopoverMouseLeave","t27","handleClearButtonClick","t28","handleClearButtonFocus","t29","t30","t31","t32","t33","t34","listElement","activeOption_1","o_2","activeIndex_1","activeItemElement","childNodes","HTMLLIElement","t35","bb0","t36","clearButton","openButtonBoxPadding","map","_temp","openButtonPadding","_temp2","openButtonProps","event_4","onClick","handleOpenClick","t37","openButtonNode","t38","bb1","t39","inputValue","event_5","handleListBoxKeyDown","t40","bb2","t41","t42","option_0","active","selected","tabIndex","t43","bb3","results","t44","t45","RenderPopover","Exclude","Parameters","v_0","v_1","Math","max"],"sources":["../src/core/components/autocomplete/autocomplete.styles.tsx","../src/core/components/autocomplete/autocompleteOption.tsx","../src/core/components/autocomplete/autocompleteReducer.ts","../src/core/components/autocomplete/constants.ts","../src/core/components/autocomplete/autocomplete.tsx"],"sourcesContent":["import {SpinnerIcon} from '@sanity/icons/Spinner'\nimport {keyframes, styled} from 'styled-components'\n\nimport {Box} from '../../primitives/box/box'\n\n/**\n * @internal\n */\nexport const StyledAutocomplete = styled.div`\n line-height: 0;\n`\n\n/**\n * @internal\n */\nexport const ListBox = styled(Box)`\n & > ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n`\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`\n\n/**\n * @internal\n */\nexport const AnimatedSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 500ms linear infinite;\n`\n","import {useCallback} from 'react'\n\nimport {_isEnterToClickElement} from '../../helpers/element'\n\nexport interface AutocompleteOptionProps {\n children: React.ReactNode\n id: string\n onSelect: (v: string) => void\n selected: boolean\n value: string\n}\n\nexport function AutocompleteOption(props: AutocompleteOptionProps): React.JSX.Element {\n const {children, id, onSelect, selected, value} = props\n\n const handleClick = useCallback(() => {\n // Calling the `onSelect` in a timeout is a fix to\n // allow the `click` event to propagate in some cases\n setTimeout(() => {\n onSelect(value)\n }, 0)\n }, [onSelect, value])\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLLIElement>) => {\n if (event.key === 'Enter' && !_isEnterToClickElement(event.currentTarget)) {\n handleClick()\n }\n },\n [handleClick],\n )\n\n return (\n <li\n aria-selected={selected}\n data-ui=\"AutocompleteOption\"\n id={id}\n // oxlint-disable-next-line no-noninteractive-element-to-interactive-role, prefer-tag-over-role\n role=\"option\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </li>\n )\n}\n","import {AutocompleteMsg, AutocompleteState} from './types'\n\n/**\n * @internal\n */\nexport function autocompleteReducer(\n state: AutocompleteState,\n msg: AutocompleteMsg,\n): AutocompleteState {\n if (msg.type === 'input/change') {\n return {...state, activeValue: null, focused: true, query: msg.query}\n }\n\n if (msg.type === 'input/focus') {\n return {...state, focused: true}\n }\n\n if (msg.type === 'root/blur') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/clear') {\n return {...state, activeValue: null, query: null, value: null}\n }\n\n if (msg.type === 'root/escape') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/open') {\n return {...state, query: state.query || msg.query}\n }\n\n if (msg.type === 'root/setActiveValue') {\n return {...state, activeValue: msg.value, listFocused: msg.listFocused || state.listFocused}\n }\n\n if (msg.type === 'root/setListFocused') {\n return {...state, listFocused: msg.listFocused}\n }\n\n if (msg.type === 'value/change') {\n return {...state, activeValue: msg.value, query: null, value: msg.value}\n }\n\n return state\n}\n","import {Placement} from '../../types/placement'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_LISTBOX_IGNORE_KEYS = [\n 'Control',\n 'Shift',\n 'Alt',\n 'Enter',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n 'Meta',\n 'Tab',\n 'CapsLock',\n]\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_PLACEMENT: Placement = 'bottom-start'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS: Placement[] = ['bottom-start', 'top-start']\n","import {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {\n ChangeEvent,\n cloneElement,\n ElementType,\n FocusEvent,\n HTMLProps,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n Ref,\n startTransition,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react'\n\nimport {EMPTY_ARRAY, EMPTY_RECORD} from '../../constants'\nimport {_raf} from '../../helpers/animation'\nimport {_hasFocus, focusFirstDescendant} from '../../helpers/focus'\nimport {Box, BoxProps} from '../../primitives/box/box'\nimport {Button} from '../../primitives/button/button'\nimport {Card} from '../../primitives/card/card'\nimport {Popover, PopoverProps} from '../../primitives/popover/popover'\nimport {Stack} from '../../primitives/stack/stack'\nimport {Text} from '../../primitives/text/text'\nimport {TextInput} from '../../primitives/textInput/textInput'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {Radius} from '../../types/radius'\nimport {AnimatedSpinnerIcon, ListBox, StyledAutocomplete} from './autocomplete.styles'\nimport {AutocompleteOption} from './autocompleteOption'\nimport {autocompleteReducer} from './autocompleteReducer'\nimport {\n AUTOCOMPLETE_LISTBOX_IGNORE_KEYS,\n AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS,\n AUTOCOMPLETE_POPOVER_PLACEMENT,\n} from './constants'\nimport {AutocompleteOpenButtonProps, BaseAutocompleteOption} from './types'\n\n/**\n * @public\n */\nexport interface AutocompleteProps<Option extends BaseAutocompleteOption = BaseAutocompleteOption> {\n border?: boolean\n customValidity?: string\n filterOption?: (query: string, option: Option) => boolean\n fontSize?: number | number[]\n // oxlint-disable-next-line no-redundant-type-constituents\n icon?: ElementType | ReactNode\n id: string\n /** @beta */\n listBox?: BoxProps\n loading?: boolean\n onChange?: (value: string) => void\n onQueryChange?: (query: string | null) => void\n onSelect?: (value: string) => void\n /** @beta */\n openButton?: boolean | AutocompleteOpenButtonProps\n /** @beta */\n openOnFocus?: boolean\n /** The options to render. */\n options?: Option[]\n padding?: number | number[]\n popover?: Omit<PopoverProps, 'content' | 'onMouseEnter' | 'onMouseLeave' | 'open'> &\n Omit<HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'ref' | 'width'>\n prefix?: ReactNode\n radius?: Radius | Radius[]\n /** @beta */\n relatedElements?: HTMLElement[]\n /** The callback function for rendering each option. */\n renderOption?: (option: Option) => React.JSX.Element\n /** @beta */\n renderPopover?: (\n props: {\n content: React.JSX.Element | null\n hidden: boolean\n inputElement: HTMLInputElement | null\n onMouseEnter: () => void\n onMouseLeave: () => void\n },\n ref: Ref<HTMLDivElement>,\n ) => ReactNode\n renderValue?: (value: string, option?: Option) => string\n suffix?: ReactNode\n /** The current value. */\n value?: string\n}\n\nconst DEFAULT_RENDER_VALUE = (value: string, option?: BaseAutocompleteOption) =>\n option ? option.value : value\n\nconst DEFAULT_FILTER_OPTION = (query: string, option: BaseAutocompleteOption) =>\n option.value.toLowerCase().indexOf(query.toLowerCase()) > -1\n\n/**\n * The Autocomplete component is typically used for search components.\n * It consists of a text input for writing a query, and properties for rendering suggestions.\n *\n * @public\n */\nexport const Autocomplete = function Autocomplete<Option extends BaseAutocompleteOption>(\n props: AutocompleteProps<Option> &\n Omit<\n HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'popover'\n | 'prefix'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n >,\n) {\n const {\n border = true,\n customValidity,\n disabled,\n filterOption: filterOptionProp,\n fontSize = 2,\n icon,\n id,\n listBox = EMPTY_RECORD,\n loading,\n onBlur,\n onChange,\n onFocus,\n onQueryChange,\n onSelect,\n openButton,\n openOnFocus,\n options: optionsProp,\n padding: paddingProp = 3,\n popover = EMPTY_RECORD,\n prefix,\n radius = 2,\n readOnly,\n ref: forwardedRef,\n relatedElements,\n renderOption: renderOptionProp,\n renderPopover,\n renderValue = DEFAULT_RENDER_VALUE,\n suffix,\n value: valueProp,\n ...restProps\n } = props\n\n const [state, dispatch] = useReducer(autocompleteReducer, {\n activeValue: valueProp || null,\n focused: false,\n listFocused: false,\n query: null,\n value: valueProp || null,\n })\n\n const {activeValue, focused, listFocused, query, value} = state\n\n const defaultRenderOption = useCallback(\n ({value}: BaseAutocompleteOption) => (\n <Card data-as=\"button\" padding={paddingProp} radius={2} tone=\"inherit\">\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {value}\n </Text>\n </Card>\n ),\n [fontSize, paddingProp],\n )\n\n const renderOption =\n typeof renderOptionProp === 'function' ? renderOptionProp : defaultRenderOption\n\n const filterOption =\n typeof filterOptionProp === 'function' ? filterOptionProp : DEFAULT_FILTER_OPTION\n\n // Element refs\n const rootElementRef = useRef<HTMLDivElement | null>(null)\n const resultsPopoverElementRef = useRef<HTMLDivElement | null>(null)\n const inputElementRef = useRef<HTMLInputElement | null>(null)\n const listBoxElementRef = useRef<HTMLUListElement | null>(null)\n // Element refs that need to be accessed during render\n const [inputElement, _setInputElement] = useState<HTMLInputElement | null>(null)\n /**\n * The startTransition wrapper here is to avoid an issue when on React 18 where this error can happen:\n * >Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\n * This doesn't happen on React 19 due to automatic batching of all state updates, the startTransition wrapper here gives a type of batching for 18 users in a way that still works with 19.\n * NOTE: The startTransition wrapper is not needed in UI v4, since the baseline there is React 19.\n */\n const setInputElement = useCallback((node: HTMLInputElement | null) => {\n startTransition(() => _setInputElement(node))\n }, [])\n\n // Value refs\n const listFocusedRef = useRef(false)\n const valueRef = useRef(value)\n const valuePropRef = useRef(valueProp)\n const popoverMouseWithinRef = useRef(false)\n\n // Forward inputElement state to inputElementRef\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n inputElementRef,\n () => inputElement,\n [inputElement],\n )\n // Forward inputElement to parent\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => inputElement,\n [inputElement],\n )\n\n const listBoxId = `${id}-listbox`\n const options = Array.isArray(optionsProp) ? optionsProp : EMPTY_ARRAY\n const padding = _getArrayProp(paddingProp)\n const currentOption = useMemo(\n () => (value !== null ? options.find((o) => o.value === value) : undefined),\n [options, value],\n )\n const filteredOptions = useMemo(\n () => options.filter((option) => (query ? filterOption(query, option) : true)),\n [filterOption, options, query],\n )\n const filteredOptionsLen = filteredOptions.length\n const activeItemId = activeValue ? `${id}-option-${activeValue}` : undefined\n const expanded = (query !== null && loading) || (focused && query !== null)\n\n const handleRootBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n setTimeout(() => {\n // NOTE: This is a workaround for a bug that may happen in Chrome (clicking the scrollbar\n // closes the results in certain situations):\n // - Do not handle blur if the mouse is within the popover\n if (popoverMouseWithinRef.current) {\n return\n }\n\n const elements: HTMLElement[] = (relatedElements || []).concat(\n rootElementRef.current ? [rootElementRef.current] : [],\n resultsPopoverElementRef.current ? [resultsPopoverElementRef.current] : [],\n )\n\n let focusInside = false\n\n if (document.activeElement) {\n for (const e of elements) {\n if (e === document.activeElement || e.contains(document.activeElement)) {\n focusInside = true\n break\n }\n }\n }\n\n // oxlint-disable-next-line no-unnecessary-boolean-literal-compare\n if (focusInside === false) {\n dispatch({type: 'root/blur'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n if (onBlur) onBlur(event)\n }\n }, 0)\n },\n [onBlur, onQueryChange, relatedElements],\n )\n\n const handleRootFocus = useCallback((event: FocusEvent<HTMLDivElement>) => {\n const listBoxElement = listBoxElementRef.current\n const focusedElement = event.target instanceof HTMLElement ? event.target : null\n const listFocused = listBoxElement?.contains(focusedElement) || false\n\n if (listFocused !== listFocusedRef.current) {\n listFocusedRef.current = listFocused\n\n dispatch({type: 'root/setListFocused', listFocused})\n }\n }, [])\n\n const handleOptionSelect = useCallback(\n (v: string) => {\n dispatch({type: 'value/change', value: v})\n\n popoverMouseWithinRef.current = false\n\n if (onSelect) onSelect(v)\n\n valueRef.current = v\n\n if (onChange) onChange(v)\n if (onQueryChange) onQueryChange(null)\n\n inputElementRef.current?.focus()\n },\n [onChange, onSelect, onQueryChange],\n )\n\n const handleRootKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption = filteredOptions[(activeIndex + 1) % filteredOptionsLen]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption =\n filteredOptions[\n activeIndex === -1\n ? filteredOptionsLen - 1\n : (filteredOptionsLen + activeIndex - 1) % filteredOptionsLen\n ]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'Escape') {\n dispatch({type: 'root/escape'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n\n return\n }\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n const target = event.target as Node\n const listEl = listBoxElementRef.current\n\n if (\n (listEl === target || listEl?.contains(target)) &&\n !AUTOCOMPLETE_LISTBOX_IGNORE_KEYS.includes(event.key)\n ) {\n inputElementRef.current?.focus()\n\n return\n }\n },\n [activeValue, filteredOptions, filteredOptionsLen, onQueryChange],\n )\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const nextQuery = event.currentTarget.value\n\n dispatch({type: 'input/change', query: nextQuery})\n\n if (onQueryChange) onQueryChange(nextQuery)\n },\n [onQueryChange],\n )\n\n const dispatchOpen = useCallback(() => {\n dispatch({\n type: 'root/open',\n query: value ? renderValue(value, currentOption) : '',\n })\n }, [currentOption, renderValue, value])\n\n const handleInputFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (!focused) {\n dispatch({type: 'input/focus'})\n\n if (onFocus) onFocus(event)\n if (openOnFocus) dispatchOpen()\n }\n },\n [focused, onFocus, openOnFocus, dispatchOpen],\n )\n\n const handlePopoverMouseEnter = useCallback(() => {\n popoverMouseWithinRef.current = true\n }, [])\n\n const handlePopoverMouseLeave = useCallback(() => {\n popoverMouseWithinRef.current = false\n }, [])\n\n const handleClearButtonClick = useCallback(() => {\n dispatch({type: 'root/clear'})\n valueRef.current = ''\n if (onChange) onChange('')\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n }, [onChange, onQueryChange])\n\n const handleClearButtonFocus = useCallback(() => {\n dispatch({type: 'input/focus'})\n }, [])\n\n // Change the value when `value` prop changes\n useEffect(() => {\n // If `valueProp` changed\n if (valueProp !== valuePropRef.current) {\n valuePropRef.current = valueProp\n\n if (valueProp !== undefined) {\n dispatch({type: 'value/change', value: valueProp})\n valueRef.current = valueProp\n }\n\n return\n }\n\n // If `valueProp` is not equal to `value`\n if (valueProp !== valueRef.current) {\n valueRef.current = valueProp || null\n\n dispatch({type: 'value/change', value: valueProp || null})\n }\n }, [valueProp])\n\n // Reset active item when closing\n useEffect(() => {\n if (!focused && valueRef.current) {\n dispatch({type: 'root/setActiveValue', value: valueRef.current})\n }\n }, [focused])\n\n // Focus the selected item\n useEffect(() => {\n const listElement = listBoxElementRef.current\n\n if (!listElement) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n\n if (activeOption) {\n const activeIndex = filteredOptions.indexOf(activeOption)\n // oxlint-disable-next-line no-unsafe-type-assertion\n const activeItemElement = listElement.childNodes[activeIndex] as HTMLLIElement | undefined\n\n if (activeItemElement) {\n if (_hasFocus(activeItemElement)) {\n // already focused\n return\n }\n\n focusFirstDescendant(activeItemElement)\n }\n }\n }, [activeValue, filteredOptions])\n\n const clearButton = useMemo(() => {\n if (!loading && !disabled && value) {\n return {\n 'aria-label': 'Clear',\n 'onFocus': handleClearButtonFocus,\n }\n }\n\n return undefined\n }, [disabled, handleClearButtonFocus, loading, value])\n\n const openButtonBoxPadding = padding.map((v) => {\n if (v === 0) return 0\n if (v === 1) return 1\n if (v === 2) return 1\n\n return v - 2\n })\n const openButtonPadding = padding.map((v) => Math.max(v - 1, 0))\n const openButtonProps: AutocompleteOpenButtonProps = useMemo(\n () => (typeof openButton === 'object' ? openButton : EMPTY_RECORD),\n [openButton],\n )\n\n const handleOpenClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n dispatchOpen()\n\n if (openButtonProps.onClick) openButtonProps.onClick(event)\n\n _raf(() => inputElementRef.current?.focus())\n },\n [openButtonProps, dispatchOpen],\n )\n\n const openButtonNode = useMemo(\n () =>\n !disabled && !readOnly && openButton ? (\n <Box aria-hidden={expanded} padding={openButtonBoxPadding}>\n <Button\n aria-label=\"Open\"\n disabled={expanded}\n fontSize={fontSize}\n icon={ChevronDownIcon}\n mode=\"bleed\"\n padding={openButtonPadding}\n {...openButtonProps}\n onClick={handleOpenClick}\n />\n </Box>\n ) : undefined,\n [\n disabled,\n expanded,\n fontSize,\n handleOpenClick,\n openButton,\n openButtonBoxPadding,\n openButtonPadding,\n openButtonProps,\n readOnly,\n ],\n )\n\n const inputValue = useMemo(() => {\n if (query === null) {\n if (value !== null) {\n return renderValue(value, currentOption)\n }\n\n return ''\n }\n\n return query\n }, [currentOption, query, renderValue, value])\n\n const handleListBoxKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n // If the focus is currently in the list, move focus to the input element\n if (event.key === 'Tab') {\n if (listFocused) inputElementRef.current?.focus()\n }\n },\n [listFocused],\n )\n\n const content = useMemo(() => {\n if (filteredOptions.length === 0) return null\n\n return (\n <ListBox\n data-ui=\"AutoComplete__results\"\n onKeyDown={handleListBoxKeyDown}\n padding={1}\n {...listBox}\n tabIndex={-1}\n >\n <Stack\n as=\"ul\"\n aria-multiselectable={false}\n data-ui=\"AutoComplete__resultsList\"\n id={listBoxId}\n ref={listBoxElementRef}\n // oxlint-disable-next-line prefer-tag-over-role\n role=\"listbox\"\n gap={1}\n >\n {filteredOptions.map((option) => {\n const active =\n activeValue !== null ? option.value === activeValue : currentOption === option\n\n return (\n <AutocompleteOption\n id={`${id}-option-${option.value}`}\n key={option.value}\n onSelect={handleOptionSelect}\n selected={active}\n value={option.value}\n >\n {cloneElement(renderOption(option), {\n disabled: loading,\n selected: active,\n tabIndex: listFocused && active ? 0 : -1,\n })}\n </AutocompleteOption>\n )\n })}\n </Stack>\n </ListBox>\n )\n }, [\n activeValue,\n currentOption,\n filteredOptions,\n handleOptionSelect,\n handleListBoxKeyDown,\n id,\n listBox,\n listBoxId,\n listFocused,\n loading,\n renderOption,\n ])\n\n const results = useMemo(() => {\n if (renderPopover) {\n return (\n <RenderPopover\n content={content}\n hidden={!expanded}\n inputElement={inputElement}\n onMouseEnter={handlePopoverMouseEnter}\n onMouseLeave={handlePopoverMouseLeave}\n resultsPopoverElementRef={resultsPopoverElementRef}\n renderPopover={renderPopover}\n />\n )\n }\n\n if (filteredOptionsLen === 0) {\n return null\n }\n\n return (\n <Popover\n arrow={false}\n constrainSize\n content={content}\n fallbackPlacements={AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS}\n matchReferenceWidth\n onMouseEnter={handlePopoverMouseEnter}\n onMouseLeave={handlePopoverMouseLeave}\n open={expanded}\n overflow=\"auto\"\n placement={AUTOCOMPLETE_POPOVER_PLACEMENT}\n portal\n radius={radius}\n ref={resultsPopoverElementRef}\n referenceElement={inputElement}\n {...popover}\n />\n )\n }, [\n content,\n expanded,\n filteredOptionsLen,\n handlePopoverMouseEnter,\n handlePopoverMouseLeave,\n inputElement,\n popover,\n radius,\n renderPopover,\n ])\n\n return (\n <StyledAutocomplete\n data-ui=\"Autocomplete\"\n onBlur={handleRootBlur}\n onFocus={handleRootFocus}\n onKeyDown={handleRootKeyDown}\n ref={rootElementRef}\n >\n <TextInput\n {...restProps}\n aria-activedescendant={activeItemId}\n aria-autocomplete=\"list\"\n aria-expanded={expanded}\n aria-owns={listBoxId}\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n border={border}\n clearButton={clearButton}\n customValidity={customValidity}\n disabled={disabled}\n fontSize={fontSize}\n icon={icon}\n iconRight={loading && AnimatedSpinnerIcon}\n id={id}\n inputMode=\"search\"\n onChange={handleInputChange}\n onClear={handleClearButtonClick}\n onFocus={handleInputFocus}\n padding={padding}\n prefix={prefix}\n radius={radius}\n readOnly={readOnly}\n ref={setInputElement}\n // oxlint-disable-next-line prefer-tag-over-role, role-has-required-aria-props\n role=\"combobox\"\n spellCheck={false}\n suffix={suffix || openButtonNode}\n value={inputValue}\n />\n {results}\n </StyledAutocomplete>\n )\n}\n\nfunction RenderPopover({\n renderPopover,\n content,\n hidden,\n inputElement,\n onMouseEnter,\n onMouseLeave,\n resultsPopoverElementRef,\n}: {\n renderPopover: Exclude<AutocompleteProps['renderPopover'], undefined>\n resultsPopoverElementRef: Parameters<Exclude<AutocompleteProps['renderPopover'], undefined>>[1]\n} & Parameters<Exclude<AutocompleteProps['renderPopover'], undefined>>[0]) {\n return renderPopover(\n {\n content,\n hidden,\n inputElement,\n onMouseEnter,\n onMouseLeave,\n },\n resultsPopoverElementRef,\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAQA,MAAaI,qBAAqBF,OAAOG,IAAAA,WAAAA;;;AAAG,CAAA,CAAA,kBAO/BC,UAAUJ,OAAOC,GAAG,CAAC,CAAA,WAAA;;;iDAQ5BI,SAASN,SAAS,8DAaXO,sBAAsBN,OAAOF,WAAW,CAAC,CAAA,WAAA;;;AACvCO,CAAAA,CAAAA,aAAAA,OAAM;ACzBrB,SAAOa,mBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAX,UAAAG,IAAAC,UAAAE,UAAAC,UAAkDE,OAAKG;CAAA,AAAAF,EAAA,OAAAN,YAAAM,EAAA,OAAAH,SAEvBK,WAAA;EAG9BC,iBAAW;GACTT,SAASG,KAAK;EAAC,GACd,CAAC;CAAC,GACNG,EAAA,KAAAN,UAAAM,EAAA,KAAAH,OAAAG,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAND,IAAAI,cAAoBF,IAMCG;CAAA,AAAAL,EAAA,OAAAI,cAOlBC,KAAAL,EAAA,MAJDK,MAAAC,UAAA;EACE,AAAIA,MAAKC,QAAS,WAAd,CAA0BnB,uBAAuBkB,MAAKE,aAAc,KACtEJ,YAAY;CACb,GACFJ,EAAA,KAAAI,aAAAJ,EAAA,KAAAK;CALH,IAAAI,gBAAsBJ,IAOrBK;CAaM,OAbNV,EAAA,OAAAV,YAAAU,EAAA,OAAAI,eAAAJ,EAAA,OAAAS,iBAAAT,EAAA,OAAAP,MAAAO,EAAA,OAAAJ,YAGCc,KAAA,oBAAA,MAAA;EACiBd,iBAAAA;EACP,WAAA;EACJH;EAEC,MAAA;EACIW,SAAAA;EACEK,WAAAA;EAEVnB;CACE,CAAA,GAAAU,EAAA,KAAAV,UAAAU,EAAA,KAAAI,aAAAJ,EAAA,KAAAS,eAAAT,EAAA,KAAAP,IAAAO,EAAA,KAAAJ,UAAAI,EAAA,MAAAU,MAAAA,KAAAV,EAAA,KAVLU;AAUK;;;;ACtCT,SAAgBG,oBACdC,OACAC,KACmB;CAqCnB,OApCIA,IAAIC,SAAS,iBACR;EAAC,GAAGF;EAAOG,aAAa;EAAMC,SAAS;EAAMC,OAAOJ,IAAII;CAAK,IAGlEJ,IAAIC,SAAS,gBACR;EAAC,GAAGF;EAAOI,SAAS;CAAI,IAG7BH,IAAIC,SAAS,cACR;EAAC,GAAGF;EAAOI,SAAS;EAAOC,OAAO;CAAI,IAG3CJ,IAAIC,SAAS,eACR;EAAC,GAAGF;EAAOG,aAAa;EAAME,OAAO;EAAMC,OAAO;CAAI,IAG3DL,IAAIC,SAAS,gBACR;EAAC,GAAGF;EAAOI,SAAS;EAAOC,OAAO;CAAI,IAG3CJ,IAAIC,SAAS,cACR;EAAC,GAAGF;EAAOK,OAAOL,MAAMK,SAASJ,IAAII;CAAK,IAG/CJ,IAAIC,SAAS,wBACR;EAAC,GAAGF;EAAOG,aAAaF,IAAIK;EAAOC,aAAaN,IAAIM,eAAeP,MAAMO;CAAW,IAGzFN,IAAIC,SAAS,wBACR;EAAC,GAAGF;EAAOO,aAAaN,IAAIM;CAAW,IAG5CN,IAAIC,SAAS,iBACR;EAAC,GAAGF;EAAOG,aAAaF,IAAIK;EAAOD,OAAO;EAAMC,OAAOL,IAAIK;CAAK,IAGlEN;AACT;;;;ACzCA,MAAaS,mCAAmC;CAC9C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAAU,GAWCE,2CAAwD,CAAC,gBAAgB,WAAW,GCiE3FuF,wBAAwB7B,OAAeR,WAC3CA,SAASA,OAAOQ,QAAQA,OAEpB8B,yBAAyBvC,OAAeC,WAC5CA,OAAOQ,MAAM+B,YAAY,CAAC,CAACC,QAAQzC,MAAMwC,YAAY,CAAC,IAAI,IAQ/CE,eAAe,SAAAA,aAAAd,OAAA;CAAA,IAAAe,IAAAC,EAAA,GAAA,GAAA9C,gBAAA+C,UAAAC,kBAAAC,cAAA3C,MAAAC,IAAAE,SAAAyC,QAAAxC,UAAAyC,SAAAvC,eAAAC,UAAAC,YAAAC,aAAAqC,aAAA/B,QAAAgC,UAAA9B,iBAAA+B,kBAAAzB,eAAA0B,WAAAhB,QAAAiB,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;CAAA,AAAAlB,EAAA,OAAAf,SAuDjB9B,iBAAA6C,EAAA,IAAAE,WAAAF,EAAA,IAAAG,mBAAAH,EAAA,IAAAI,eAAAJ,EAAA,IAAAvC,OAAAuC,EAAA,IAAAtC,KAAAsC,EAAA,IAAApC,UAAAoC,EAAA,IAAAK,SAAAL,EAAA,IAAAnC,WAAAmC,EAAA,IAAAM,UAAAN,EAAA,KAAAjC,gBAAAiC,EAAA,KAAAhC,WAAAgC,EAAA,KAAA/B,aAAA+B,EAAA,KAAA9B,cAAA8B,EAAA,KAAAO,cAAAP,EAAA,KAAAxB,SAAAwB,EAAA,KAAAQ,WAAAR,EAAA,KAAAtB,kBAAAsB,EAAA,KAAAS,mBAAAT,EAAA,KAAAhB,gBAAAgB,EAAA,KAAAU,YAAAV,EAAA,KAAAN,SAAAM,EAAA,KAAAW,KAAAX,EAAA,KAAAY,KAAAZ,EAAA,KAAAa,KAAAb,EAAA,KAAAc,KAAAd,EAAA,KAAAe,KAAAf,EAAA,KAAAgB,KAAAhB,EAAA,KAAAiB,KAAAjB,EAAA,KAAAkB,YAAAlB,EAAA,QA/BT,CAAA9C,QAAAyD,IAAAxD,gBAAA+C,UAAA9C,cAAA+C,kBAAA3C,UAAAoD,IAAAnD,MAAAC,IAAAC,SAAAkD,IAAAjD,SAAAyC,QAAAxC,UAAAyC,SAAAvC,eAAAC,UAAAC,YAAAC,aAAAC,SAAAoC,aAAAnC,SAAA0C,IAAAzC,SAAA0C,IAAAvC,QAAAC,QAAAuC,IAAAR,UAAAhB,KAAAY,cAAA1B,iBAAAE,cAAA6B,kBAAAzB,eAAAS,aAAAwB,IAAAvB,QAAA5B,OAAAoD,cAAAR,aA+BIzB,OAAKe,EAAA,KAAAf,OAAAe,EAAA,KAAA7C,gBAAA6C,EAAA,KAAAE,UAAAF,EAAA,KAAAG,kBAAAH,EAAA,KAAAI,cAAAJ,EAAA,KAAAvC,MAAAuC,EAAA,KAAAtC,IAAAsC,EAAA,KAAApC,SAAAoC,EAAA,KAAAK,QAAAL,EAAA,KAAAnC,UAAAmC,EAAA,MAAAM,SAAAN,EAAA,MAAAjC,eAAAiC,EAAA,MAAAhC,UAAAgC,EAAA,MAAA/B,YAAA+B,EAAA,MAAA9B,aAAA8B,EAAA,MAAAO,aAAAP,EAAA,MAAAxB,QAAAwB,EAAA,MAAAQ,UAAAR,EAAA,MAAAtB,iBAAAsB,EAAA,MAAAS,kBAAAT,EAAA,MAAAhB,eAAAgB,EAAA,MAAAU,WAAAV,EAAA,MAAAN,QAAAM,EAAA,MAAAW,IAAAX,EAAA,MAAAY,IAAAZ,EAAA,MAAAa,IAAAb,EAAA,MAAAc,IAAAd,EAAA,MAAAe,IAAAf,EAAA,MAAAgB,IAAAhB,EAAA,MAAAiB,IAAAjB,EAAA,MAAAkB;CA9BP,IAAAhE,SAAAyD,OAAAQ,KAAAA,KAAAR,IAIAnD,WAAAoD,OAAAO,KAAAA,IAAA,IAAAP,IAGAjD,UAAAkD,OAAAM,KAAAA,IAAA3F,eAAAqF,IAUSO,cAAAN,OAAAK,KAAAA,IAAA,IAAAL,IACTzC,UAAA0C,OAAAI,KAAAA,IAAA3F,eAAAuF,IAEAtC,SAAAuC,OAAAG,KAAAA,IAAA,IAAAH,IAMAvB,cAAAwB,OAAAE,KAAAA,IAAAxB,uBAAAsB,IAOaI,KAAAH,aAAA,MAINI,KAAAJ,aAAA,MAAiBK;CAAA,AAAAvB,EAAA,QAAAqB,MAAArB,EAAA,QAAAsB,MALgCC,KAAA;EAAAC,aAC3CH;EAAiBI,SACrB;EAAKC,aACD;EAAKrE,OACX;EAAIS,OACJwD;CACT,GAACtB,EAAA,MAAAqB,IAAArB,EAAA,MAAAsB,IAAAtB,EAAA,MAAAuB,MAAAA,KAAAvB,EAAA;CAND,IAAA,CAAA2B,OAAAC,YAA0BxG,WAAWuB,qBAAqB4E,EAMzD,GAED,EAAAC,aAAAC,SAAAC,aAAArE,OAAAS,UAA0D6D,OAAKE;CAAA,AAAA7B,EAAA,QAAAxC,YAAAwC,EAAA,QAAAoB,eAG7DS,OAAAC,QAAA;EAAC,IAAA,EAAAhE,OAAAiE,YAAAD;EAA+B,OAC9B,oBAAC,MAAD;GAAc,WAAA;GAAkBV,SAAAA;GAAqB,QAAA;GAAQ,MAAA;GAC3D,UAAA,oBAAC,MAAD;IAAY5D,MAAAA;IAAuB,cAAA;IAChCM,UAAAA;GADE,CAAA;EADF,CAAA;CAIE,GACRkC,EAAA,MAAAxC,UAAAwC,EAAA,MAAAoB,aAAApB,EAAA,MAAA6B,OAAAA,MAAA7B,EAAA;CAIH,IAAApB,eACE,OAAO6B,oBAAqB,aAA5BA,mBAAAuB,KAEF5E,eACE,OAAO+C,oBAAqB,aAA5BA,mBAAAP,uBAGFqC,iBAAuB5G,OAA8B,IAAI,GACzD6G,2BAAiC7G,OAA8B,IAAI,GACnE8G,kBAAwB9G,OAAgC,IAAI,GAC5D+G,oBAA0B/G,OAAgC,IAAI,GAE9D,CAAA+D,cAAAiD,oBAAyC/G,SAAkC,IAAI,GAACwG;CAAA,AAAA9B,EAAA,QAAAsC,OAAAC,IAAA,2BAAA,KAO5CT,OAAAU,SAAA;EAClCzH,sBAAsBsH,iBAAiBG,IAAI,CAAC;CAAC,GAC9CxC,EAAA,MAAA8B,OAAAA,MAAA9B,EAAA;CAFD,IAAAyC,kBAAwBX,KAKxBY,iBAAuBrH,OAAO,EAAK,GACnCsH,WAAiBtH,OAAOyC,KAAK,GAC7B8E,eAAqBvH,OAAO6F,SAAS,GACrC2B,wBAA8BxH,OAAO,EAAK,GAACyH,KAAAC;CAG3C7H,AAH2C8E,EAAA,QAAAZ,gBAM3B0D,MAAA9C,EAAA,KAAA+C,MAAA/C,EAAA,QADd8C,YAAM1D,cACN2D,MAAA,CAAC3D,YAAY,GAACY,EAAA,MAAAZ,cAAAY,EAAA,MAAA8C,KAAA9C,EAAA,MAAA+C,MAHhB7H,oBACEiH,iBACAW,KACAC,GACF;CAAC,IAAAC,KAAAC;CAED/H,AAFC8E,EAAA,QAAAZ,gBAKe4D,MAAAhD,EAAA,KAAAiD,MAAAjD,EAAA,QADdgD,YAAM5D,cACN6D,MAAA,CAAC7D,YAAY,GAACY,EAAA,MAAAZ,cAAAY,EAAA,MAAAgD,KAAAhD,EAAA,MAAAiD,MAHhB/H,oBACEkF,cACA4C,KACAC,GACF;CAEA,IAAAC,YAAkB,GAAGxF,GAAE,WACvBS,UAAgBgF,MAAKC,QAAS7C,WAAuC,IAArDA,cAAAhF,aAChB6C,UAAgB/B,cAAc+E,WAAW,GAACiC;CAAA,AAAArD,EAAA,QAAA7B,WAAA6B,EAAA,QAAAlC,SAEjCuF,MAAAvF,UAAU,OAAVqD,KAAAA,IAAiBhD,QAAOmF,MAAMC,MAAOA,EAACzF,UAAWA,KAAiB,GAACkC,EAAA,MAAA7B,SAAA6B,EAAA,MAAAlC,OAAAkC,EAAA,MAAAqD,OAAAA,MAAArD,EAAA;CAD5E,IAAAwD,gBACSH,KAERI;CAAA,IAAAzD,EAAA,QAAA5C,gBAAA4C,EAAA,QAAA7B,WAAA6B,EAAA,QAAA3C,OAAA;EAAA,IAAAqG;EAE+E1D,AAF/EA,EAAA,QAAA5C,gBAAA4C,EAAA,QAAA3C,SAEsBqG,OAAApG,WAAaD,UAAQD,aAAaC,OAAOC,MAAa,GAAE0C,EAAA,MAAA5C,cAAA4C,EAAA,MAAA3C,OAAA2C,EAAA,MAAA0D,OAAAA,MAAA1D,EAAA,KAAvEyD,MAAAtF,QAAOwF,OAAQD,GAAwD,GAAC1D,EAAA,MAAA5C,cAAA4C,EAAA,MAAA7B,SAAA6B,EAAA,MAAA3C,OAAA2C,EAAA,MAAAyD;CAAA,OAAAA,MAAAzD,EAAA;CADhF,IAAA4D,kBACQH,KAGRI,qBAA2BD,gBAAeE,QAC1CC,eAAqBvC,cAAA,GAAiB9D,GAAE,UAAW8D,gBAA9BL,KAAAA,GACrB6C,WAAkB3G,UAAU,QAAVO,WAA+B6D,WAAWpE,UAAU,MAAKqG;CAAA,AAAA1D,EAAA,QAAAK,UAAAL,EAAA,QAAAjC,iBAAAiC,EAAA,QAAAtB,mBAGzEgF,OAAAO,UAAA;EACEC,iBAAW;GAIT,IAAIrB,sBAAqBsB,SAAQ;GAIjC,IAAAC,YAAiC1F,mBAAA,CAAA,EAAA,CAAqB2F,OACpDpC,eAAckC,UAAd,CAA0BlC,eAAckC,OAAQ,IAAhD,CAAA,GACAjC,yBAAwBiC,UAAxB,CAAoCjC,yBAAwBiC,OAAQ,IAApE,CAAA,CACF,GAEAG,cAAkB;GAElB,IAAIC,SAAQC,eACL;SAAA,IAAAC,KAAWL,UACd,IAAIK,MAAMF,SAAQC,iBAAkBC,EAACC,SAAUH,SAAQC,aAAc,GAAC;KACpEF,cAAcA;KACd;IAAK;;GAMX,AAAIA,gBAAgB,OAClB1C,SAAS,EAAA+C,MAAO,YAAW,CAAC,GAC5B9B,sBAAqBsB,UAAW,IAC5BpG,iBAAeA,cAAc,IAAI,GACjCsC,UAAQA,OAAO4D,KAAK;EACzB,GACA,CAAC;CAAC,GACNjE,EAAA,MAAAK,QAAAL,EAAA,MAAAjC,eAAAiC,EAAA,MAAAtB,iBAAAsB,EAAA,MAAA0D,OAAAA,MAAA1D,EAAA;CAlCH,IAAA4E,iBAAuBlB,KAoCtBmB;CAAA,AAAA7E,EAAA,QAAAsC,OAAAC,IAAA,2BAAA,KAEmCsC,OAAAC,YAAA;EAClC,IAAAC,iBAAuB3C,kBAAiB+B,SACxCa,iBAAuBf,QAAKgB,kBAAmBtG,cAAcsF,QAAKgB,SAA3C,MACvBC,gBAAoBH,gBAAcL,SAAWM,cAAuB,KAAhD;EAEpB,AAAItD,kBAAgBgB,eAAcyB,YAChCzB,eAAcyB,UAAWzC,eAEzBE,SAAS;GAAA+C,MAAO;GAAqBjD,aAAEA;EAAW,CAAC;CACpD,GACF1B,EAAA,MAAA6E,OAAAA,MAAA7E,EAAA;CAVD,IAAAmF,kBAAwBN,KAUlBO;CAAA,AAAApF,EAAA,QAAAnC,YAAAmC,EAAA,QAAAjC,iBAAAiC,EAAA,QAAAhC,YAGJoH,OAAAC,MAAA;EAYElD,AAXAP,SAAS;GAAA+C,MAAO;GAAc7G,OAASuH;EAAC,CAAC,GAEzCxC,sBAAqBsB,UAAW,IAE5BnG,YAAUA,SAASqH,CAAC,GAExB1C,SAAQwB,UAAWkB,GAEfxH,YAAUA,SAASwH,CAAC,GACpBtH,iBAAeA,cAAc,IAAI,GAErCoE,gBAAegC,SAAemB,MAAC;CAAC,GACjCtF,EAAA,MAAAnC,UAAAmC,EAAA,MAAAjC,eAAAiC,EAAA,MAAAhC,UAAAgC,EAAA,MAAAoF,OAAAA,MAAApF,EAAA;CAdH,IAAAuF,qBAA2BH,KAgB1BI;CAAA,AAAAxF,EAAA,QAAAwB,eAAAxB,EAAA,QAAA4D,mBAAA5D,EAAA,QAAA6D,sBAAA7D,EAAA,QAAAjC,iBAGCyH,OAAAC,YAAA;EACE,IAAIxB,QAAKyB,QAAS,aAAW;GAG3B,IAFAzB,QAAK0B,eAAgB,GAEjB,CAAC9B,oBAAkB;GAEvB,IAAA+B,eAAqBhC,gBAAeN,MAAMuC,QAAOtC,IAACzF,UAAW0D,WAAW,GACxEsE,cAAoBF,eAAehC,gBAAe9D,QAAS8F,YAAiB,IAAxD,IACpBG,mBAAyBnC,iBAAiBkC,cAAc,KAAKjC;GAE7D,AAAIkC,oBACFnE,SAAS;IAAA+C,MAAO;IAAqB7G,OAASiI,iBAAgBjI;IAAM4D,aAAe;GAAI,CAAC;GACzF;EAAA;EAKH,IAAIuC,QAAKyB,QAAS,WAAS;GAGzB,IAFAzB,QAAK0B,eAAgB,GAEjB,CAAC9B,oBAAkB;GAEvB,IAAAmC,iBAAqBpC,gBAAeN,MAAM2C,QAAO1C,IAACzF,UAAW0D,WAAW,GACxE0E,gBAAoBN,iBAAehC,gBAAe9D,QAAS8F,cAAiB,IAAxD,IACpBO,qBACEvC,gBACEkC,kBAAgB,KACZjC,qBAAqB,KACpBA,qBAAqBiC,gBAAc,KAAKjC;GAGjD,AAAIkC,sBACFnE,SAAS;IAAA+C,MAAO;IAAqB7G,OAASiI,mBAAgBjI;IAAM4D,aAAe;GAAI,CAAC;GACzF;EAAA;EAKH,IAAIuC,QAAKyB,QAAS,UAAQ;GAIxBvD,AAHAP,SAAS,EAAA+C,MAAO,cAAa,CAAC,GAC9B9B,sBAAqBsB,UAAW,IAC5BpG,iBAAeA,cAAc,IAAI,GACrCoE,gBAAegC,SAAemB,MAAC;GAAC;EAAA;EAMlC,IAAAL,SAAehB,QAAKgB,QACpBoB,SAAejE,kBAAiB+B;EAEhC,KACGkC,WAAWpB,UAAUoB,QAAM3B,SAAWO,MAAM,MAA7C,CACCrI,iCAAgC0J,SAAUrC,QAAKyB,GAAI,GAAC;GAErDvD,gBAAegC,SAAemB,MAAC;GAAC;EAAA;CAGjC,GACFtF,EAAA,MAAAwB,aAAAxB,EAAA,MAAA4D,iBAAA5D,EAAA,MAAA6D,oBAAA7D,EAAA,MAAAjC,eAAAiC,EAAA,MAAAwF,OAAAA,MAAAxF,EAAA;CA5DH,IAAAuG,oBAA0Bf,KA8DzBgB;CAAA,AAAAxG,EAAA,QAAAjC,gBASEyI,MAAAxG,EAAA,OANDwG,OAAAC,YAAA;EACE,IAAAC,YAAkBzC,QAAK0C,cAAc7I;EAIrC,AAFA8D,SAAS;GAAA+C,MAAO;GAActH,OAASqJ;EAAS,CAAC,GAE7C3I,iBAAeA,cAAc2I,SAAS;CAAC,GAC5C1G,EAAA,MAAAjC,eAAAiC,EAAA,MAAAwG;CAPH,IAAAI,oBAA0BJ,KASzBK;CAAA,AAAA7G,EAAA,QAAAwD,iBAAAxD,EAAA,QAAAP,eAAAO,EAAA,QAAAlC,SAEgC+I,YAAA;EAC/BjF,SAAS;GAAA+C,MACD;GAAWtH,OACVS,QAAQ2B,YAAY3B,OAAO0F,aAAkB,IAA7C;EACT,CAAC;CAAC,GACHxD,EAAA,MAAAwD,eAAAxD,EAAA,MAAAP,aAAAO,EAAA,MAAAlC,OAAAkC,EAAA,MAAA6G,OAAAA,MAAA7G,EAAA;CALD,IAAA8G,eAAqBD,KAKkBE;CAAA,AAAA/G,EAAA,QAAA8G,gBAAA9G,EAAA,QAAAyB,WAAAzB,EAAA,QAAAM,WAAAN,EAAA,QAAA9B,eAGrC6I,OAAAC,YAAA;EACE,AAAKvF,YACHG,SAAS,EAAA+C,MAAO,cAAa,CAAC,GAE1BrE,WAASA,QAAQ2D,OAAK,GACtB/F,eAAa4I,aAAa;CAC/B,GACF9G,EAAA,MAAA8G,cAAA9G,EAAA,MAAAyB,SAAAzB,EAAA,MAAAM,SAAAN,EAAA,MAAA9B,aAAA8B,EAAA,MAAA+G,OAAAA,MAAA/G,EAAA;CARH,IAAAiH,mBAAyBF,KAUxBG;CAAA,AAAAlH,EAAA,QAAAsC,OAAAC,IAAA,2BAAA,KAE2C2E,YAAA;EAC1CrE,sBAAqBsB,UAAW;CAAH,GAC9BnE,EAAA,MAAAkH,OAAAA,MAAAlH,EAAA;CAFD,IAAAmH,0BAAgCD,KAE1BE;CAAA,AAAApH,EAAA,QAAAsC,OAAAC,IAAA,2BAAA,KAEsC6E,YAAA;EAC1CvE,sBAAqBsB,UAAW;CAAH,GAC9BnE,EAAA,MAAAoH,OAAAA,MAAApH,EAAA;CAFD,IAAAqH,0BAAgCD,KAE1BE;CAAA,AAAAtH,EAAA,QAAAnC,YAAAmC,EAAA,QAAAjC,iBAEqCuJ,YAAA;EAKzCnF,AAJAP,SAAS,EAAA+C,MAAO,aAAY,CAAC,GAC7BhC,SAAQwB,UAAW,IACftG,YAAUA,SAAS,EAAE,GACrBE,iBAAeA,cAAc,IAAI,GACrCoE,gBAAegC,SAAemB,MAAC;CAAC,GACjCtF,EAAA,MAAAnC,UAAAmC,EAAA,MAAAjC,eAAAiC,EAAA,MAAAsH,OAAAA,MAAAtH,EAAA;CAND,IAAAuH,yBAA+BD,KAMFE;CAAA,AAAAxH,EAAA,QAAAsC,OAAAC,IAAA,2BAAA,KAEciF,YAAA;EACzC5F,SAAS,EAAA+C,MAAO,cAAa,CAAC;CAAC,GAChC3E,EAAA,MAAAwH,OAAAA,MAAAxH,EAAA;CAFD,IAAAyH,yBAA+BD,KAEzBE,KAAAC;CAGN1M,AAHM+E,EAAA,QAAAkB,aAsBQwG,MAAA1H,EAAA,KAAA2H,MAAA3H,EAAA,QAnBJ0H,YAAA;EAER,IAAIxG,cAAc0B,aAAYuB,SAAQ;GAGpC,AAFAvB,aAAYuB,UAAWjD,WAEnBA,cAAcC,KAAAA,MAChBS,SAAS;IAAA+C,MAAO;IAAc7G,OAASoD;GAAS,CAAC,GACjDyB,SAAQwB,UAAWjD;GACpB;EAAA;EAMH,AAAIA,cAAcyB,SAAQwB,YACxBxB,SAAQwB,UAAWjD,aAAA,MAEnBU,SAAS;GAAA+C,MAAO;GAAc7G,OAASoD,aAAA;EAAiB,CAAC;CAC1D,GACAyG,MAAA,CAACzG,SAAS,GAAClB,EAAA,MAAAkB,WAAAlB,EAAA,MAAA0H,KAAA1H,EAAA,MAAA2H,MAnBd1M,UAAUyM,KAmBPC,GAAW;CAAC,IAAAC,KAAAC;CAGf5M,AAHe+E,EAAA,QAAAyB,WAOHmG,MAAA5H,EAAA,KAAA6H,MAAA7H,EAAA,QAJF4H,YAAA;EACR,AAAI,CAACnG,WAAWkB,SAAQwB,WACtBvC,SAAS;GAAA+C,MAAO;GAAqB7G,OAAS6E,SAAQwB;EAAQ,CAAC;CAChE,GACA0D,MAAA,CAACpG,OAAO,GAACzB,EAAA,MAAAyB,SAAAzB,EAAA,MAAA4H,KAAA5H,EAAA,MAAA6H,MAJZ5M,UAAU2M,KAIPC,GAAS;CAAC,IAAAC,KAAAC;CAGb9M,AAHa+E,EAAA,QAAAwB,eAAAxB,EAAA,QAAA4D,mBAGHkE,YAAA;EACR,IAAAE,cAAoB5F,kBAAiB+B;EAErC,IAAI,CAAC6D,aAAW;EAEhB,IAAAC,iBAAqBrE,gBAAeN,MAAM4E,QAAO3E,IAACzF,UAAW0D,WAAW;EAExE,IAAIoE,gBAAY;GACd,IAAAuC,gBAAoBvE,gBAAe9D,QAAS8F,cAAY,GAExDwC,oBAA0BJ,YAAWK,WAAYvC;GAEjD,IAAIsC,mBAAiB;IACnB,IAAI1M,UAAU0M,iBAAiB,GAAC;IAKhCzM,qBAAqByM,iBAAiB;GAAC;EACxC;CACF,GACAL,MAAA,CAACvG,aAAaoC,eAAe,GAAC5D,EAAA,MAAAwB,aAAAxB,EAAA,MAAA4D,iBAAA5D,EAAA,MAAA8H,KAAA9H,EAAA,MAAA+H,QAAAD,MAAA9H,EAAA,KAAA+H,MAAA/H,EAAA,MArBjC/E,UAAU6M,KAqBPC,GAA8B;CAAC,IAAAQ;CAAAC,KAAA;EAGhC,IAAI,CAAC5K,WAAD,CAAasC,YAAbpC,OAA8B;GAAA,IAAA2K;GAChCF,AADgCvI,EAAA,QAAAsC,OAAAC,IAAA,2BAAA,KACzBkG,MAAA;IAAA,cACS;IAAO,SACVhB;GACb,GAACzH,EAAA,MAAAyI,OAAAA,MAAAzI,EAAA,KAHDuI,MAAOE;GAAP,MAAAD;EAGC;EAGHD,MAAOpH,KAAAA;CAAS;CARlB,IAAAuH,cAAoBH,KAWpBI,uBAA6BvK,QAAOwK,IAAKC,KAMxC,GACDC,oBAA0B1K,QAAOwK,IAAKG,MAAyB,GAC/DC,kBACS,OAAO/K,cAAe,WAAtBA,aAAAzC,cAERiN;CAAA,AAAAzI,EAAA,QAAA8G,gBAAA9G,EAAA,QAAAgJ,mBAGCP,OAAAQ,YAAA;EAKExN,AAJAqL,aAAa,GAETkC,gBAAeE,WAAUF,gBAAeE,QAASjF,OAAK,GAE1DxI,WAAW0G,gBAAegC,SAAemB,MAAC,CAAC;CAAC,GAC7CtF,EAAA,MAAA8G,cAAA9G,EAAA,MAAAgJ,iBAAAhJ,EAAA,MAAAyI,OAAAA,MAAAzI,EAAA;CAPH,IAAAmJ,kBAAwBV,KASvBW;CAAA,AAAApJ,EAAA,QAAAE,YAAAF,EAAA,SAAAgE,YAAAhE,EAAA,SAAAxC,YAAAwC,EAAA,SAAAmJ,mBAAAnJ,EAAA,SAAA/B,cAAA+B,EAAA,SAAA2I,wBAAA3I,EAAA,SAAA8I,qBAAA9I,EAAA,SAAAgJ,mBAAAhJ,EAAA,SAAAQ,YAIG4I,MAAA,CAAClJ,YAAD,CAAcM,YAAdvC,aACE,oBAAC,KAAD;EAAkB+F,eAAAA;EAAmB2E,SAAAA;EACnC,UAAA,oBAAC,QAAD;GACa,cAAA;GACD3E,UAAAA;GACAxG;GACJnD,MAAAA;GACD,MAAA;GACIyO,SAAAA;GAAiB,GACtBE;GACKG,SAAAA;EAAe,CAAA;CATxB,CAAA,IADNhI,KAAAA,GAaanB,EAAA,MAAAE,UAAAF,EAAA,OAAAgE,UAAAhE,EAAA,OAAAxC,UAAAwC,EAAA,OAAAmJ,iBAAAnJ,EAAA,OAAA/B,YAAA+B,EAAA,OAAA2I,sBAAA3I,EAAA,OAAA8I,mBAAA9I,EAAA,OAAAgJ,iBAAAhJ,EAAA,OAAAQ,UAAAR,EAAA,OAAAoJ,OAAAA,MAAApJ,EAAA;CAfjB,IAAAqJ,iBAEID,KAyBHE;CAAAC,KAAA;EAGC,IAAIlM,UAAU,MAAI;GAChB,IAAIS,UAAU,MAAI;IAAA,IAAA0L;IAChBF,AADgBtJ,EAAA,SAAAwD,iBAAAxD,EAAA,SAAAP,eAAAO,EAAA,SAAAlC,SACT0L,MAAA/J,YAAY3B,OAAO0F,aAAa,GAACxD,EAAA,OAAAwD,eAAAxD,EAAA,OAAAP,aAAAO,EAAA,OAAAlC,OAAAkC,EAAA,OAAAwJ,OAAAA,MAAAxJ,EAAA,MAAxCsJ,MAAOE;IAAP,MAAAD;GAAwC;GAG1CD,MAAO;GAAP,MAAAC;EAAS;EAGXD,MAAOjM;CAAK;CATd,IAAAoM,aAAmBH,KAU2BE;CAAA,AAAAxJ,EAAA,SAAA0B,cAQ3C8H,MAAAxJ,EAAA,QALDwJ,OAAAE,YAAA;EAEE,AAAIzF,QAAKyB,QAAS,SACZhE,eAAaS,gBAAegC,SAAemB,MAAC;CACjD,GACFtF,EAAA,OAAA0B,aAAA1B,EAAA,OAAAwJ;CANH,IAAAG,uBAA6BH,KAQ5BI;CAAAC,KAAA;EAGC,IAAIjG,gBAAeE,WAAY,GAAC;GAAE8F,MAAO;GAAP,MAAAC;EAAW;EAAA,IAAAC;EAAA,IAAA9J,EAAA,SAAAwB,eAAAxB,EAAA,SAAAwD,iBAAAxD,EAAA,SAAA4D,mBAAA5D,EAAA,SAAAuF,sBAAAvF,EAAA,SAAAtC,MAAAsC,EAAA,SAAA0B,eAAA1B,EAAA,SAAApC,WAAAoC,EAAA,SAAApB,cAAA;GAAA,IAAAmL;GAuCrC/J,AAvCqCA,EAAA,SAAAwB,eAAAxB,EAAA,SAAAwD,iBAAAxD,EAAA,SAAAuF,sBAAAvF,EAAA,SAAAtC,MAAAsC,EAAA,SAAA0B,eAAA1B,EAAA,SAAApC,WAAAoC,EAAA,SAAApB,gBAoBlBmL,OAAAC,aAAA;IACnB,IAAAC,SACEzI,gBAAgB,OAAsCgC,kBAAkBlG,WAAjDA,SAAMQ,UAAW0D;IAAsC,OAG9E,oBAAC,oBAAD;KACM,IAAA,GAAG9D,GAAE,UAAWJ,SAAMQ;KAEhByH,UAAAA;KACA0E,UAAAA;KACH,OAAA3M,SAAMQ;KAEZvD,UAAAA,aAAaqE,aAAatB,QAAM,GAAG;MAAA4C,UACxBtC;MAAOsM,UACPD;MAAME,UACNzI,eAAAuI,SAAA,IAAA;KACZ,CAAC;IAXgB,GAEZ3M,SAAMQ,KAFM;GAYE,GAExBkC,EAAA,OAAAwB,aAAAxB,EAAA,OAAAwD,eAAAxD,EAAA,OAAAuF,oBAAAvF,EAAA,OAAAtC,IAAAsC,EAAA,OAAA0B,aAAA1B,EAAA,OAAApC,SAAAoC,EAAA,OAAApB,cAAAoB,EAAA,OAAA+J,OAAAA,MAAA/J,EAAA,MAnBA8J,MAAAlG,gBAAegF,IAAKmB,GAmBpB,GAAC/J,EAAA,OAAAwB,aAAAxB,EAAA,OAAAwD,eAAAxD,EAAA,OAAA4D,iBAAA5D,EAAA,OAAAuF,oBAAAvF,EAAA,OAAAtC,IAAAsC,EAAA,OAAA0B,aAAA1B,EAAA,OAAApC,SAAAoC,EAAA,OAAApB,cAAAoB,EAAA,OAAA8J;EAAA,OAAAA,MAAA9J,EAAA;EAAA,IAAA+J;EAAA,AAAA/J,EAAA,SAAAkD,aAAAlD,EAAA,SAAA8J,OA7BJC,MAAA,oBAAC,OAAD;GACK,IAAA;GACmB,wBAAA;GACd,WAAA;GACJ7G,IAAAA;GACCd,KAAAA;GAEA,MAAA;GACA,KAAA;GAEJ0H,UAAAA;EAVG,CAAA,GA8BE9J,EAAA,OAAAkD,WAAAlD,EAAA,OAAA8J,KAAA9J,EAAA,OAAA+J,OAAAA,MAAA/J,EAAA;EAAA,IAAAoK;EAtCZR,AAsCY5J,EAAA,SAAA2J,wBAAA3J,EAAA,SAAArC,WAAAqC,EAAA,SAAA+J,OArCVK,MAAA,oBAAC,SAAD;GACU,WAAA;GACGT,WAAAA;GACF,SAAA;GAAC,GACNhM;GACM,UAAA;GAEVoM,UAAAA;EAPM,CAAA,GAsCE/J,EAAA,OAAA2J,sBAAA3J,EAAA,OAAArC,SAAAqC,EAAA,OAAA+J,KAAA/J,EAAA,OAAAoK,OAAAA,MAAApK,EAAA,MAvCZ4J,MACEQ;CAuCD;CA3CH,IAAAlL,UAAgB0K,KAwDdE;CAAAO,KAAA;EAGA,IAAIrL,eAAa;GAIH,IAAA+K,MAAA,CAAC/F,UAAQoG;GAHrBN,AAGqB9J,EAAA,SAAAd,WAAAc,EAAA,SAAAmH,2BAAAnH,EAAA,SAAAqH,2BAAArH,EAAA,SAAAZ,gBAAAY,EAAA,SAAAhB,iBAAAgB,EAAA,SAAA+J,OAFnBK,MAAA,oBAAC,eAAD;IACWlL;IACD,QAAA6K;IACM3K;IACA+H,cAAAA;IACAE,cAAAA;IACYnF;IACXlD;GAAa,CAAA,GAC5BgB,EAAA,OAAAd,SAAAc,EAAA,OAAAmH,yBAAAnH,EAAA,OAAAqH,yBAAArH,EAAA,OAAAZ,cAAAY,EAAA,OAAAhB,eAAAgB,EAAA,OAAA+J,KAAA/J,EAAA,OAAAoK,OAAAA,MAAApK,EAAA,MATJ8J,MACEM;GADF,MAAAC;EAUC;EAGH,IAAIxG,uBAAuB,GAAC;GAC1BiG,MAAO;GAAP,MAAAO;EAAW;EACZ,IAAAN;EAEDD,AAFC9J,EAAA,SAAAd,WAAAc,EAAA,SAAAgE,YAAAhE,EAAA,SAAAmH,2BAAAnH,EAAA,SAAAqH,2BAAArH,EAAA,SAAAZ,gBAAAY,EAAA,SAAA3B,WAAA2B,EAAA,SAAAvB,UAGCsL,MAAA,oBAAC,SAAD;GACS,OAAA;GACP,eAAA;GACS7K;GACWrC,oBAAAA;GACpB,qBAAA;GACcsK,cAAAA;GACAE,cAAAA;GACRrD,MAAAA;GACG,UAAA;GACElH,WAAAA;GACX,QAAA;GACQ2B;GACHyD,KAAAA;GACa9C,kBAAAA;GAAY,GAC1Bf;EAAO,CAAA,GACX2B,EAAA,OAAAd,SAAAc,EAAA,OAAAgE,UAAAhE,EAAA,OAAAmH,yBAAAnH,EAAA,OAAAqH,yBAAArH,EAAA,OAAAZ,cAAAY,EAAA,OAAA3B,SAAA2B,EAAA,OAAAvB,QAAAuB,EAAA,OAAA+J,OAAAA,MAAA/J,EAAA,MAjBJ8J,MACEC;CAiBD;CArCH,IAAAO,UAAgBR,KAyECC,MAAAnM,WAAArB,qBAcH6N,MAAA1K,UAAA2J,gBAAwBkB;CAAA,AAAAvK,EAAA,SAAA+D,gBAAA/D,EAAA,SAAA9C,UAAA8C,EAAA,SAAA0I,eAAA1I,EAAA,SAAA7C,kBAAA6C,EAAA,SAAAE,YAAAF,EAAA,SAAAgE,YAAAhE,EAAA,SAAAxC,YAAAwC,EAAA,SAAAuH,0BAAAvH,EAAA,SAAA4G,qBAAA5G,EAAA,SAAAiH,oBAAAjH,EAAA,SAAAvC,QAAAuC,EAAA,SAAAtC,MAAAsC,EAAA,SAAAyJ,cAAAzJ,EAAA,SAAAkD,aAAAlD,EAAA,SAAA5B,WAAA4B,EAAA,SAAAxB,UAAAwB,EAAA,SAAAvB,UAAAuB,EAAA,SAAAQ,YAAAR,EAAA,SAAAU,aAAAV,EAAA,SAAA+J,OAAA/J,EAAA,SAAAoK,OA7BlCG,MAAA,oBAAC,WAAD;EAAU,GACJ7J;EACmBqD,yBAAAA;EACL,qBAAA;EACHC,iBAAAA;EACJd,aAAAA;EACI,gBAAA;EACF,cAAA;EACD,aAAA;EACJhG;EACKwL;EACGvL;EACN+C;EACA1C;EACJC;EACK,WAAAsM;EACPrM;EACM,WAAA;EACAkJ,UAAAA;EACDW,SAAAA;EACAN,SAAAA;EACA7I;EACDI;EACAC;EACE+B;EACLiC,KAAAA;EAEA,MAAA;EACO,YAAA;EACJ,QAAA2H;EACDX,OAAAA;CAAU,CAAA,GACjBzJ,EAAA,OAAA+D,cAAA/D,EAAA,OAAA9C,QAAA8C,EAAA,OAAA0I,aAAA1I,EAAA,OAAA7C,gBAAA6C,EAAA,OAAAE,UAAAF,EAAA,OAAAgE,UAAAhE,EAAA,OAAAxC,UAAAwC,EAAA,OAAAuH,wBAAAvH,EAAA,OAAA4G,mBAAA5G,EAAA,OAAAiH,kBAAAjH,EAAA,OAAAvC,MAAAuC,EAAA,OAAAtC,IAAAsC,EAAA,OAAAyJ,YAAAzJ,EAAA,OAAAkD,WAAAlD,EAAA,OAAA5B,SAAA4B,EAAA,OAAAxB,QAAAwB,EAAA,OAAAvB,QAAAuB,EAAA,OAAAQ,UAAAR,EAAA,OAAAU,WAAAV,EAAA,OAAA+J,KAAA/J,EAAA,OAAAoK,KAAApK,EAAA,OAAAuK,OAAAA,MAAAvK,EAAA;CAAA,IAAAwK;CAEiB,OAFjBxK,EAAA,SAAA4E,kBAAA5E,EAAA,SAAAmF,mBAAAnF,EAAA,SAAAuG,qBAAAvG,EAAA,SAAAsK,WAAAtK,EAAA,SAAAuK,OAtCJC,MAAA,qBAAC,oBAAD;EACU,WAAA;EACA5F,QAAAA;EACCO,SAAAA;EACEoB,WAAAA;EACNtE,KAAAA;EALP,UAAA,CAOEsI,KAgCCD,OAvCgB;KAwCEtK,EAAA,OAAA4E,gBAAA5E,EAAA,OAAAmF,iBAAAnF,EAAA,OAAAuG,mBAAAvG,EAAA,OAAAsK,SAAAtK,EAAA,OAAAuK,KAAAvK,EAAA,OAAAwK,OAAAA,MAAAxK,EAAA,MAxCrBwK;AAwCqB;AAIzB,SAASC,cAAc,EACrBzL,eACAE,SACAC,QACAC,cACAE,cACAC,cACA2C,4BAIyE;CACzE,OAAOlD,cACL;EACEE;EACAC;EACAC;EACAE;EACAC;CACF,GACA2C,wBACF;AACF;AAvnB4B,SAAA2G,MAAA+B,KAAA;CAgYH,OAFjBvF,QAAM,IAAU,IAChBA,QAAM,KACNA,QAAM,IAAU,IAEbA,MAAI;AAAC;AAlYY,SAAA0D,OAAA8B,KAAA;CAAA,OAoYmBC,KAAIC,IAAK1F,MAAI,GAAG,CAAC;AAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @beta
3
+ */
4
+ interface BreadcrumbsProps {
5
+ maxLength?: number;
6
+ separator?: React.ReactNode;
7
+ gap?: number | number[];
8
+ /**
9
+ * @deprecated Use `gap` instead.
10
+ */
11
+ space?: never;
12
+ }
13
+ /**
14
+ * @beta
15
+ */
16
+ declare const Breadcrumbs: (props: BreadcrumbsProps & Omit<React.HTMLProps<HTMLOListElement>, 'as' | 'type'>) => import("react").JSX.Element;
17
+ export { Breadcrumbs, type BreadcrumbsProps };
18
+ //# sourceMappingURL=breadcrumbs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumbs.d.ts","names":[],"sources":["../src/core/components/breadcrumbs/breadcrumbs.tsx"],"mappings":"AAaA;;;UAAiB;EACf;EACA,YAAY,MAAM;EAClB;;;;EAIA;;;;;cAMW,cAAW,OACf,mBAAmB,KAAK,MAAM,UAAU,sDAAiC,IAAA"}