@magicx-eng/ai-autocomplete-react 0.1.19 → 0.1.21
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.
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +8 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.js +31 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +32 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
:where(.magicx-aia),:where(.magicx-aia[data-mode=light]){--aia-pill-bg: #bdbdbd;--aia-pill-color: #000000;--aia-pill-font-size: 19px;--aia-option-bg: transparent;--aia-option-color: #000000;--aia-option-color-selected: #000000;--aia-option-font-size: 19px;--aia-written-text-color: #000000;--aia-written-text-font-size: 19px}:where(.magicx-aia[data-mode=dark]){--aia-pill-bg: #bdbdbd;--aia-pill-color: #ffffff;--aia-pill-font-size: 19px;--aia-option-bg: transparent;--aia-option-color: #ffffff;--aia-option-color-selected: #ffffff;--aia-option-font-size: 19px;--aia-written-text-color: #ffffff;--aia-written-text-font-size: 19px}:where(.magicx-aia[data-options-position=above]) [data-aia-dropdown]{top:auto;bottom:100%;margin-top:0;margin-bottom:6px}:where(.magicx-aia[data-animations=off]) *,:where(.magicx-aia[data-animations=off]) *:before,:where(.magicx-aia[data-animations=off]) *:after{animation-duration:0s!important;transition-duration:0s!important}
|
|
1
|
+
:where(.magicx-aia),:where(.magicx-aia[data-mode=light]){--aia-pill-bg: #bdbdbd;--aia-pill-color: #000000;--aia-pill-font-size: 19px;--aia-option-bg: transparent;--aia-option-color: #000000;--aia-option-color-selected: #000000;--aia-option-font-size: 19px;--aia-written-text-color: #000000;--aia-written-text-font-size: 19px}:where(.magicx-aia[data-mode=dark]){--aia-pill-bg: #bdbdbd;--aia-pill-color: #ffffff;--aia-pill-font-size: 19px;--aia-option-bg: transparent;--aia-option-color: #ffffff;--aia-option-color-selected: #ffffff;--aia-option-font-size: 19px;--aia-written-text-color: #ffffff;--aia-written-text-font-size: 19px}:where(.magicx-aia[data-options-position=above]) [data-aia-dropdown]{top:auto;bottom:100%;margin-top:0;margin-bottom:6px;flex-direction:column-reverse}:where(.magicx-aia[data-options-position=above]) [data-aia-pillbar]{padding:0 27px 27px}:where(.magicx-aia[data-animations=off]) *,:where(.magicx-aia[data-animations=off]) *:before,:where(.magicx-aia[data-animations=off]) *:after{animation-duration:0s!important;transition-duration:0s!important}
|
|
2
2
|
/*# sourceMappingURL=index.css.map */
|
package/dist/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/appearance.css"],"sourcesContent":["/*\n * Built-in appearance defaults — zero specificity via :where().\n * Consumer CSS always wins without !important.\n *\n * Resolution priority (highest wins):\n * 1. Consumer CSS targeting new vars (--aia-pill-bg, etc.)\n * 2. Consumer CSS targeting legacy vars (--aia-color-*, via fallback chain)\n * 3. These built-in defaults\n */\n\n/* Light mode defaults (base) */\n:where(.magicx-aia),\n:where(.magicx-aia[data-mode=\"light\"]) {\n --aia-pill-bg: #bdbdbd;\n --aia-pill-color: #000000;\n --aia-pill-font-size: 19px;\n\n --aia-option-bg: transparent;\n --aia-option-color: #000000;\n --aia-option-color-selected: #000000;\n --aia-option-font-size: 19px;\n\n --aia-written-text-color: #000000;\n --aia-written-text-font-size: 19px;\n}\n\n/* Dark mode defaults */\n:where(.magicx-aia[data-mode=\"dark\"]) {\n --aia-pill-bg: #bdbdbd;\n --aia-pill-color: #ffffff;\n --aia-pill-font-size: 19px;\n\n --aia-option-bg: transparent;\n --aia-option-color: #ffffff;\n --aia-option-color-selected: #ffffff;\n --aia-option-font-size: 19px;\n\n --aia-written-text-color: #ffffff;\n --aia-written-text-font-size: 19px;\n}\n\n/* optionsPosition: dropdown above the input */\n:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: 6px;\n}\n\n/* Disable all animations when data-animations=\"off\" */\n:where(.magicx-aia[data-animations=\"off\"]) *,\n:where(.magicx-aia[data-animations=\"off\"]) *::before,\n:where(.magicx-aia[data-animations=\"off\"]) *::after {\n animation-duration: 0s !important;\n transition-duration: 0s !important;\n}\n"],"mappings":"AAWA,OAAO,CAAC,YACR,OAAO,CADC,UACU,CAAC,kBACjB,eAAe,QACf,kBAAkB,QAClB,sBAAsB,KAEtB,iBAAiB,YACjB,oBAAoB,QACpB,6BAA6B,QAC7B,wBAAwB,KAExB,0BAA0B,QAC1B,8BAA8B,IAChC,CAGA,OAAO,CAhBC,UAgBU,CAAC,iBACjB,eAAe,QACf,kBAAkB,QAClB,sBAAsB,KAEtB,iBAAiB,YACjB,oBAAoB,QACpB,6BAA6B,QAC7B,wBAAwB,KAExB,0BAA0B,QAC1B,8BAA8B,IAChC,CAGA,OAAO,CA/BC,UA+BU,CAAC,8BAAgC,CAAC,mBAClD,IAAK,KACL,OAAQ,KACR,WAAY,EACZ,cAAe,
|
|
1
|
+
{"version":3,"sources":["../src/appearance.css"],"sourcesContent":["/*\n * Built-in appearance defaults — zero specificity via :where().\n * Consumer CSS always wins without !important.\n *\n * Resolution priority (highest wins):\n * 1. Consumer CSS targeting new vars (--aia-pill-bg, etc.)\n * 2. Consumer CSS targeting legacy vars (--aia-color-*, via fallback chain)\n * 3. These built-in defaults\n */\n\n/* Light mode defaults (base) */\n:where(.magicx-aia),\n:where(.magicx-aia[data-mode=\"light\"]) {\n --aia-pill-bg: #bdbdbd;\n --aia-pill-color: #000000;\n --aia-pill-font-size: 19px;\n\n --aia-option-bg: transparent;\n --aia-option-color: #000000;\n --aia-option-color-selected: #000000;\n --aia-option-font-size: 19px;\n\n --aia-written-text-color: #000000;\n --aia-written-text-font-size: 19px;\n}\n\n/* Dark mode defaults */\n:where(.magicx-aia[data-mode=\"dark\"]) {\n --aia-pill-bg: #bdbdbd;\n --aia-pill-color: #ffffff;\n --aia-pill-font-size: 19px;\n\n --aia-option-bg: transparent;\n --aia-option-color: #ffffff;\n --aia-option-color-selected: #ffffff;\n --aia-option-font-size: 19px;\n\n --aia-written-text-color: #ffffff;\n --aia-written-text-font-size: 19px;\n}\n\n/* optionsPosition: dropdown above the input */\n:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: 6px;\n flex-direction: column-reverse;\n}\n\n:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-pillbar] {\n padding: 0 27px 27px 27px;\n}\n\n/* Disable all animations when data-animations=\"off\" */\n:where(.magicx-aia[data-animations=\"off\"]) *,\n:where(.magicx-aia[data-animations=\"off\"]) *::before,\n:where(.magicx-aia[data-animations=\"off\"]) *::after {\n animation-duration: 0s !important;\n transition-duration: 0s !important;\n}\n"],"mappings":"AAWA,OAAO,CAAC,YACR,OAAO,CADC,UACU,CAAC,kBACjB,eAAe,QACf,kBAAkB,QAClB,sBAAsB,KAEtB,iBAAiB,YACjB,oBAAoB,QACpB,6BAA6B,QAC7B,wBAAwB,KAExB,0BAA0B,QAC1B,8BAA8B,IAChC,CAGA,OAAO,CAhBC,UAgBU,CAAC,iBACjB,eAAe,QACf,kBAAkB,QAClB,sBAAsB,KAEtB,iBAAiB,YACjB,oBAAoB,QACpB,6BAA6B,QAC7B,wBAAwB,KAExB,0BAA0B,QAC1B,8BAA8B,IAChC,CAGA,OAAO,CA/BC,UA+BU,CAAC,8BAAgC,CAAC,mBAClD,IAAK,KACL,OAAQ,KACR,WAAY,EACZ,cAAe,IACf,eAAgB,cAClB,CAEA,OAAO,CAvCC,UAuCU,CAAC,8BAAgC,CAAC,kBAlDpD,QAmDW,EAAE,KAAK,IAClB,CAGA,OAAO,CA5CC,UA4CU,CAAC,sBAAwB,EAC3C,OAAO,CA7CC,UA6CU,CAAC,sBAAwB,CAAC,QAC5C,OAAO,CA9CC,UA8CU,CAAC,sBAAwB,CAAC,OAC1C,mBAAoB,aACpB,oBAAqB,YACvB","names":[]}
|
package/dist/index.d.mts
CHANGED
|
@@ -160,4 +160,11 @@ declare function AIAutocompleteDropdown({ suggestions, activeIndex, onSelect, on
|
|
|
160
160
|
|
|
161
161
|
declare function useAIAutocomplete({ onSubmit, onError, optionOverrides, maskCompletedText, placeholder: customPlaceholder, apiConfig, columns, dropdownTrigger, value: controlledValue, completedParams: controlledParams, onChange: onChangeProp, onParamsChange, }: UseAIAutocompleteOptions): UseAIAutocompleteReturn;
|
|
162
162
|
|
|
163
|
-
|
|
163
|
+
/**
|
|
164
|
+
* Generate the glass-dropdown background string (fill + gradient border) from a
|
|
165
|
+
* single base color. The border gradient shifts lightness away from the base so
|
|
166
|
+
* it stays visible across dark and light backgrounds.
|
|
167
|
+
*/
|
|
168
|
+
declare function buildGlassBackground(color: string): string;
|
|
169
|
+
|
|
170
|
+
export { AIAutocomplete, AIAutocompleteDropdown, type AIAutocompleteDropdownProps, type AIAutocompleteHandle, type AIAutocompleteProps, type APIConfig, type APIKeyConfig, type AccessTokenConfig, type AccessTokenResult, type AppearanceMode, type AutocompleteResult, type CompletedParam, type CompletedParamState, type OptionOverrides, type Segment, type Suggestion, type SuggestionOption, type TaskKind, type UseAIAutocompleteOptions, type UseAIAutocompleteReturn, buildGlassBackground, useAIAutocomplete };
|
package/dist/index.d.ts
CHANGED
|
@@ -160,4 +160,11 @@ declare function AIAutocompleteDropdown({ suggestions, activeIndex, onSelect, on
|
|
|
160
160
|
|
|
161
161
|
declare function useAIAutocomplete({ onSubmit, onError, optionOverrides, maskCompletedText, placeholder: customPlaceholder, apiConfig, columns, dropdownTrigger, value: controlledValue, completedParams: controlledParams, onChange: onChangeProp, onParamsChange, }: UseAIAutocompleteOptions): UseAIAutocompleteReturn;
|
|
162
162
|
|
|
163
|
-
|
|
163
|
+
/**
|
|
164
|
+
* Generate the glass-dropdown background string (fill + gradient border) from a
|
|
165
|
+
* single base color. The border gradient shifts lightness away from the base so
|
|
166
|
+
* it stays visible across dark and light backgrounds.
|
|
167
|
+
*/
|
|
168
|
+
declare function buildGlassBackground(color: string): string;
|
|
169
|
+
|
|
170
|
+
export { AIAutocomplete, AIAutocompleteDropdown, type AIAutocompleteDropdownProps, type AIAutocompleteHandle, type AIAutocompleteProps, type APIConfig, type APIKeyConfig, type AccessTokenConfig, type AccessTokenResult, type AppearanceMode, type AutocompleteResult, type CompletedParam, type CompletedParamState, type OptionOverrides, type Segment, type Suggestion, type SuggestionOption, type TaskKind, type UseAIAutocompleteOptions, type UseAIAutocompleteReturn, buildGlassBackground, useAIAutocomplete };
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var he=Object.defineProperty;var Ve=Object.getOwnPropertyDescriptor;var Ue=Object.getOwnPropertyNames;var Qe=Object.prototype.hasOwnProperty;var je=(o,e)=>{for(var t in e)he(o,t,{get:e[t],enumerable:!0})},Ge=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ue(e))!Qe.call(o,r)&&r!==t&&he(o,r,{get:()=>e[r],enumerable:!(i=Ve(e,r))||i.enumerable});return o};var We=o=>Ge(he({},"__esModule",{value:!0}),o);var ft={};je(ft,{AIAutocomplete:()=>$e,AIAutocompleteDropdown:()=>Z,buildGlassBackground:()=>Fe,useAIAutocomplete:()=>de});module.exports=We(ft);var P=require("react");if(typeof document<"u"&&!document.getElementById("ac-style-cc65f4cc")){let o=document.createElement("style");o.id="ac-style-cc65f4cc",o.textContent=`.AIAutocomplete-module_container_KKjFU {
|
|
2
2
|
position: relative;
|
|
3
3
|
font-family: "IBM Plex Sans", sans-serif;
|
|
4
|
+
container-type: inline-size;
|
|
4
5
|
}
|
|
5
6
|
|
|
6
7
|
.AIAutocomplete-module_inputWrapper_FLq1b {
|
|
7
|
-
|
|
8
|
-
padding: 24px;
|
|
8
|
+
padding: 20px;
|
|
9
9
|
border: 1px solid var(--aia-color-border-default, #9ea5b2);
|
|
10
10
|
border-radius: 23px;
|
|
11
11
|
background: transparent;
|
|
12
12
|
overflow: hidden;
|
|
13
13
|
display: flex;
|
|
14
14
|
align-items: center;
|
|
15
|
-
gap:
|
|
15
|
+
gap: 0px;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.AIAutocomplete-module_editorArea_7rBWq {
|
|
@@ -25,7 +25,6 @@
|
|
|
25
25
|
position: relative;
|
|
26
26
|
z-index: 1;
|
|
27
27
|
pointer-events: none;
|
|
28
|
-
min-height: 60px;
|
|
29
28
|
white-space: pre-wrap;
|
|
30
29
|
word-break: break-word;
|
|
31
30
|
font-family: inherit;
|
|
@@ -143,17 +142,29 @@
|
|
|
143
142
|
`,document.head.appendChild(o)}var k={container:"AIAutocomplete-module_container_KKjFU",inputWrapper:"AIAutocomplete-module_inputWrapper_FLq1b",editorArea:"AIAutocomplete-module_editorArea_7rBWq",sizerContent:"AIAutocomplete-module_sizerContent_DQgmV",sizerText:"AIAutocomplete-module_sizerText_iZIMK",sizerTextVisible:"AIAutocomplete-module_sizerTextVisible_HR-5h",textareaHidden:"AIAutocomplete-module_textareaHidden_UayJt",placeholderText:"AIAutocomplete-module_placeholderText_K3ayy",textarea:"AIAutocomplete-module_textarea_eyn6A",submitButton:"AIAutocomplete-module_submitButton_sl1Mi",shimmer:"AIAutocomplete-module_shimmer_13AnY",shimmerRevealed:"AIAutocomplete-module_shimmerRevealed_RR8dp",shimmerSweep:"AIAutocomplete-module_shimmerSweep_ARCon",textShimmer:"AIAutocomplete-module_textShimmer_eCLdq",shimmerHidden:"AIAutocomplete-module_shimmerHidden_45-Pf"};if(typeof document<"u"&&!document.getElementById("ac-style-2eef895d")){let o=document.createElement("style");o.id="ac-style-2eef895d",o.textContent=`.AIAutocompleteDropdown-module_dropdown_yz2KC {
|
|
144
143
|
position: absolute;
|
|
145
144
|
left: 0;
|
|
146
|
-
right: 0;
|
|
147
145
|
top: 100%;
|
|
146
|
+
max-width: 100cqi;
|
|
148
147
|
margin-top: 6px;
|
|
149
|
-
|
|
148
|
+
display: flex;
|
|
149
|
+
flex-direction: column;
|
|
150
150
|
overflow: hidden;
|
|
151
151
|
z-index: 10;
|
|
152
152
|
opacity: 0;
|
|
153
153
|
pointer-events: none;
|
|
154
154
|
transition: opacity 400ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
155
|
-
background:
|
|
156
|
-
|
|
155
|
+
background:
|
|
156
|
+
linear-gradient(hsla(0, 0%, 100%, 1), hsla(0, 0%, 100%, 1)) padding-box,
|
|
157
|
+
linear-gradient(
|
|
158
|
+
105deg,
|
|
159
|
+
hsla(0, 0%, 80%, 1),
|
|
160
|
+
hsla(0, 0%, 90%, 0.8) 5%,
|
|
161
|
+
hsla(0, 0%, 100%, 0) 50%,
|
|
162
|
+
hsla(0, 0%, 90%, 0.8) 95%,
|
|
163
|
+
hsla(0, 0%, 80%, 1) 100%
|
|
164
|
+
)
|
|
165
|
+
border-box;
|
|
166
|
+
border-radius: 30px;
|
|
167
|
+
border: 1.5px solid transparent;
|
|
157
168
|
}
|
|
158
169
|
|
|
159
170
|
.AIAutocompleteDropdown-module_visible_QCoXj {
|
|
@@ -215,9 +226,10 @@
|
|
|
215
226
|
opacity: 0;
|
|
216
227
|
}
|
|
217
228
|
}
|
|
218
|
-
`,document.head.appendChild(o)}var U={list:"PillList-module_list_qvLqO",pill:"PillList-module_pill_osSyz",fadeIn:"PillList-module_fadeIn_Aezob",rounded:"PillList-module_rounded_WvXy4",active:"PillList-module_active_Oll--"};var
|
|
229
|
+
`,document.head.appendChild(o)}var U={list:"PillList-module_list_qvLqO",pill:"PillList-module_pill_osSyz",fadeIn:"PillList-module_fadeIn_Aezob",rounded:"PillList-module_rounded_WvXy4",active:"PillList-module_active_Oll--"};var fe=require("react/jsx-runtime");function Xe(o){return o===0?.4:o===1?.3:.15}function Y({pills:o,activePillIndex:e,onSelectPill:t,rounded:i}){return(0,fe.jsx)("span",{className:U.list,children:o.map((r,n)=>(0,fe.jsx)("button",{type:"button",className:`${U.pill} ${i?U.rounded:""} ${n===e?U.active:""}`,style:{opacity:Xe(n)},onClick:()=>t(n),children:r.text},`${r.type}-${r.text}`))})}if(typeof document<"u"&&!document.getElementById("ac-style-d91f2b06")){let o=document.createElement("style");o.id="ac-style-d91f2b06",o.textContent=`.SuggestionGrid-module_grid_jvaPb {
|
|
219
230
|
display: grid;
|
|
220
|
-
grid-template-columns:
|
|
231
|
+
grid-template-columns: minmax(0, 1fr);
|
|
232
|
+
max-width: 100cqi;
|
|
221
233
|
padding: 13px 13px;
|
|
222
234
|
max-height: 192px;
|
|
223
235
|
overflow-y: auto;
|
|
@@ -225,6 +237,13 @@
|
|
|
225
237
|
scrollbar-color: rgba(255, 255, 255, 0.3) transparent;
|
|
226
238
|
}
|
|
227
239
|
|
|
240
|
+
@container (min-width: 650px) {
|
|
241
|
+
.SuggestionGrid-module_grid_jvaPb {
|
|
242
|
+
grid-template-columns: repeat(2, minmax(0, 300px));
|
|
243
|
+
justify-content: start;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
228
247
|
.SuggestionGrid-module_grid_jvaPb::-webkit-scrollbar {
|
|
229
248
|
width: 6px;
|
|
230
249
|
}
|
|
@@ -544,5 +563,5 @@
|
|
|
544
563
|
box-shadow: 0 0 24px 10px rgba(255, 255, 255, 0.02);
|
|
545
564
|
}
|
|
546
565
|
}
|
|
547
|
-
`,document.head.appendChild(o)}var O={item:"SuggestionItem-module_item_d4vpD",fadeIn:"SuggestionItem-module_fadeIn_I8u35",content:"SuggestionItem-module_content_T-Qba",tappable:"SuggestionItem-module_tappable_70KcX",nonTappable:"SuggestionItem-module_nonTappable_xSZM-",highlighted:"SuggestionItem-module_highlighted_Hb0SU",tag:"SuggestionItem-module_tag_e3Fwe",pressed:"SuggestionItem-module_pressed_98o-r",glassFade:"SuggestionItem-module_glassFade_oyiSj",tapDown:"SuggestionItem-module_tapDown_G3WGz",streaks:"SuggestionItem-module_streaks_d9PEB",streaksVert:"SuggestionItem-module_streaksVert_ERlV1",streakHorizRight:"SuggestionItem-module_streakHorizRight_aboGz",streakHorizLeft:"SuggestionItem-module_streakHorizLeft_BreWJ",streakVertUp:"SuggestionItem-module_streakVertUp_to1GD",streakVertDown:"SuggestionItem-module_streakVertDown_OrcLh"};var M=require("react/jsx-runtime");function Ie({option:o,isHighlighted:e,onSelect:t,onHighlight:i,id:r}){let[n,a]=(0,B.useState)(!1),d=(0,B.useRef)(void 0);(0,B.useEffect)(()=>()=>clearTimeout(d.current),[]);let s=()=>{!o.is_tappable||n||(a(!0),t(o),clearTimeout(d.current),d.current=setTimeout(()=>a(!1),400))},l=[O.item,e?O.highlighted:"",o.is_tappable?O.tappable:O.nonTappable,n?O.pressed:""].filter(Boolean).join(" ");return(0,M.jsxs)("div",{id:r,role:"option","aria-selected":e,className:l,tabIndex:o.is_tappable?0:-1,onClick:s,onKeyDown:p=>{o.is_tappable&&(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),s())},onMouseEnter:i,children:[(0,M.jsx)("div",{className:O.streaks}),(0,M.jsx)("div",{className:O.streaksVert}),(0,M.jsxs)("span",{className:O.content,children:[o.icon?`${o.icon} ${o.text}`:o.text,o.tag&&(0,M.jsx)("span",{className:O.tag,children:o.tag})]})]})}var xe=require("react/jsx-runtime");function _e({options:o,activeIndex:e,onSelect:t,onHighlight:i,listboxId:r}){return(0,xe.jsx)("div",{className:Se.grid,children:o.map((n,a)=>(0,xe.jsx)(Ie,{option:n,isHighlighted:a===e,onSelect:t,onHighlight:()=>i(a),id:`${r}-option-${a}`},n.text))})}var N=require("react/jsx-runtime");function Z({suggestions:o,activeIndex:e,onSelect:t,onHighlight:i,isOpen:r,id:n,className:a,pills:d,onPillClick:s,showPills:l=!0}){let c=o[0]?.options??[],m=l&&d&&d.length>0&&s,g=r&&c.length>0||r&&m;return(0,N.jsxs)("div",{id:n,role:"listbox","data-aia-dropdown":"",className:`${J.dropdown} ${g?J.visible:""} ${a??""}`,onMouseDown:y=>y.preventDefault(),children:[m&&(0,N.jsx)("div",{className:J.pillBar,children:(0,N.jsx)(Y,{pills:d,activePillIndex:0,onSelectPill:s,rounded:!0})}),c.length>0&&(0,N.jsx)(_e,{options:c,activeIndex:e,onSelect:t,onHighlight:i,listboxId:n})]})}var x=require("react");function Q(o,e,t){let i=o.slice(e);if(t||e===0||o[e-1]===" ")return i;let r=i.indexOf(" ");return r===-1?"":i.slice(r+1)}function Pe(o,e){let t=o.trimEnd().replace(/\s+/g," ");if(t.length===0||e.length===0)return 0;let i=t.split(" "),r=e.toLowerCase();for(let n=0;n<i.length;n++){let a=i.slice(n).join(" ");if(r.startsWith(a.toLowerCase())){let d=t.length-a.length;return o.length-d}}return 0}function ee(o,e){if(!o)return[];let t=e.trimStart();if(!t)return o;let i=t.toLowerCase();return o.filter(r=>!r.is_tappable||r.text.toLowerCase().includes(i))}function be(o,e){if(!o)return null;let t=e.trim();if(!t)return null;let i=t.toLowerCase();return o.find(r=>r.is_tappable&&r.text.toLowerCase()===i)??null}var K=class{constructor(e,t="auto"){this.container=e;this.mode=t;this.mediaQuery=null;this.onSystemChange=e=>{this.container.dataset.mode=e.matches?"dark":"light"};this.apply()}setMode(e){this.detachListener(),this.mode=e,this.apply()}destroy(){this.detachListener()}apply(){this.mode==="auto"?(this.mediaQuery??(this.mediaQuery=window.matchMedia("(prefers-color-scheme: dark)")),this.mediaQuery.addEventListener("change",this.onSystemChange),this.container.dataset.mode=this.mediaQuery.matches?"dark":"light"):this.container.dataset.mode=this.mode}detachListener(){this.mediaQuery?.removeEventListener("change",this.onSystemChange)}};function Ce(o,e){let t=[],i=0;for(let n of e){let a=o.indexOf(n.text,i);a!==-1&&(a>i&&t.push({type:"text",value:o.slice(i,a)}),t.push({type:"completed",value:n.text,param:n}),i=a+n.text.length)}let r=o.slice(i);return r&&t.push({type:"text",value:r}),t}function Ae(o,e){let t=[],i=[],r=0;for(let n of e){let a=o.indexOf(n.text,r);a===-1?i.push(n):(t.push(n),r=a+n.text.length)}return{valid:t,invalid:i}}var te=class{constructor(e){this.config=e;this.current=null;this.expiresAt=null;this.inFlightRefresh=null;e.accessToken&&(this.current=e.accessToken)}async getToken(e=!1){if(!e&&this.current&&!this.isExpired())return this.current;if(!e&&this.inFlightRefresh)return this.inFlightRefresh;this.inFlightRefresh=this.refresh();try{return await this.inFlightRefresh}finally{this.inFlightRefresh=null}}async refresh(){let e=await this.config.getAccessToken();return this.current=e.accessToken,this.expiresAt=e.expiresAt??null,this.current}isExpired(){return this.expiresAt==null?!1:Date.now()>=this.expiresAt-3e4}};var We="0.1.19",ke=!1;function Xe(){return crypto.randomUUID()}function Je(o,e){return{placeholder:o.placeholder,type:o.type,...e&&{text:o.text},kind:o.kind}}function De(o){return o?.type==="accessToken"}function Ye(o){if(!(!o||De(o)))return o}var Te=new WeakMap;function Ze(o){let e=Te.get(o.getAccessToken);return e||(e=new te(o),Te.set(o.getAccessToken,e)),e}function et(o,e,t){let i=e.find(n=>n.type==="contact"&&n.metadata?.contact_account_count)?.metadata?.contact_account_count,r=typeof i=="number"?i:void 0;return{data:{raw_query:o,completed_params:e.map(n=>Je(n,t)),...r!=null&&{contact_account_count:r}},meta:{request_id:Xe(),request_at:new Date().toISOString(),language:typeof navigator<"u"?navigator.language:"en-US",client_version:We}}}function tt(o){return{"Content-Type":"application/json",...o?.appIdentifier&&{"X-App-Identifier":o.appIdentifier},...o?.headers}}async function Oe(o,e,t,i,r){return fetch(o,{method:"POST",headers:{...e,Authorization:`Bearer ${t}`},body:i,signal:r})}async function Ee(o,e,t){let i=t?.apiConfig,r=!t?.maskCompletedText,n=et(o,e,r),a=tt(i),d=i?.endpoint??"/ac/suggest",s=JSON.stringify(n);if(De(i)){let m=Ze(i),f=await m.getToken(),g=await Oe(d,a,f,s,t?.signal);if(g.status===401){let y=await m.getToken(!0);g=await Oe(d,a,y,s,t?.signal)}if(!g.ok)throw new Error(`API error: ${g.status} ${g.statusText}`);return g.json()}let l=Ye(i),p=l?.apiKey??"";if(!p&&!ke&&(ke=!0,console.warn("[AIAutocomplete] No apiKey in apiConfig. Requests will be sent without an Authorization header.")),p){let m=l?.authScheme??"Bearer";a.Authorization=m==="Basic"?`Basic ${btoa(p)}`:`Bearer ${p}`}let c=await fetch(d,{method:"POST",headers:a,body:s,signal:t?.signal});if(!c.ok)throw new Error(`API error: ${c.status} ${c.statusText}`);return c.json()}function L(o,e){let t=o,i={},r=[];for(let n of e){let a=(i[n.type]??0)+1;i[n.type]=a;let s=`{{${n.type.toUpperCase().replace(/\s+/g,"_")}_${a}}}`,l=t.indexOf(n.text);l!==-1&&(t=t.slice(0,l)+s+t.slice(l+n.text.length)),r.push({...n,placeholder:s})}return{rawQuery:t,completedParams:r}}function Le(o,e){return e?o.map(t=>{let i=e[t.type];if(!i)return t;let r=i("");if(r.length===0)return t;let n=new Set(r.map(d=>d.text)),a=(t.options??[]).filter(d=>!n.has(d.text));return{...t,options:[...r,...a]}}):o}var ot=100,it=300,nt=2,oe=class{constructor(e,t,i,r,n){this.store=e;this.getApiConfig=t;this.getOptionOverrides=i;this.getMaskCompletedText=r;this.getOnError=n;this.fetchVersion=0;this.abortController=null;this.debounceTimer=null;this.slowDebounceTimer=null;this.unsubscribe=null}start(){this.doFetch("",[]);let e=this.store.get().text,t=this.store.get().completedParams;this.unsubscribe=this.store.subscribe(i=>{(i.text!==e||i.completedParams!==t)&&(e=i.text,t=i.completedParams,this.scheduleFetch())})}dispose(){this.abortController?.abort(),this.clearTimers(),this.unsubscribe?.()}async doFetch(e,t){this.abortController?.abort();let i=new AbortController;this.abortController=i;let r=++this.fetchVersion,n=this.store.get(),a=n.text.length;n.suggestions.some(s=>s.type!=="placeholder")||this.store.set({isLoading:!0}),this.store.set({error:null});try{let s=await Ee(e,t,{maskCompletedText:this.getMaskCompletedText(),signal:i.signal,apiConfig:this.getApiConfig()});if(r!==this.fetchVersion)return;let l=Le(s.data.suggestions??[],this.getOptionOverrides()),p=s.data.input??[],c=p[p.length-1],m=this.store.get().text,f,g;if(c?.state==="in_progress"){g=!0;let C=m.toLowerCase().lastIndexOf(c.text.toLowerCase());f=C!==-1?C:a}else g=!1,f=a;let v=l.filter(C=>C.type!=="placeholder")[0],S=null;if(v){let C=Q(m,f,g),u=be(v.options,C);u&&(S={id:crypto.randomUUID(),placeholder:"",type:v.type,text:u.text,kind:u.kind,suggestionType:v.type,suggestionPlaceholder:v.text,options:v.options??[],metadata:u.metadata},l=l.filter(I=>I!==v))}this.store.set(C=>({suggestions:l,isLoading:!1,isReady:s.data.is_ready??!1,lastRawQuery:e,activeDropdownIndex:-1,filterBase:f,filterInProgress:g,...S?{completedParams:[...C.completedParams,S]}:{}}))}catch(s){if(r===this.fetchVersion){let l=s instanceof Error?s:new Error(String(s));this.store.set({error:l,isLoading:!1}),this.getOnError()?.(l)}}}scheduleFetch(){if(this.clearTimers(),this.store.get().skipNextFetch){this.store.set({skipNextFetch:!1});return}let t=i=>{let r=this.store.get();if(!r.text&&r.completedParams.length===0)return this.doFetch("",[]),!0;let n=Q(r.text,r.filterBase,r.filterInProgress),d=r.suggestions.filter(v=>v.type!=="placeholder")[0],l=(d?ee(d.options,n):[]).filter(v=>v.is_tappable),p=d?be(d.options,n)!==null:!1,c=n.trim().length>0;if(l.length>0&&!p&&c)return!1;let{rawQuery:m,completedParams:f}=L(r.text,r.completedParams),g=m.length<r.lastRawQuery.length,y=Math.abs(m.length-r.lastRawQuery.length);return g||y>=i?(this.doFetch(m,f),!0):!1};this.debounceTimer=setTimeout(()=>{t(nt)&&this.slowDebounceTimer&&clearTimeout(this.slowDebounceTimer)},ot),this.slowDebounceTimer=setTimeout(()=>t(1),it)}clearTimers(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.slowDebounceTimer&&clearTimeout(this.slowDebounceTimer),this.debounceTimer=null,this.slowDebounceTimer=null}};var ie=class{constructor(e,t){this.store=e;this.ctx=t}handleKeyDown(e){let t=this.store.get(),{columns:i,listboxId:r,getOnSubmit:n}=this.ctx,a=n(),d=this.getTappableIndices();switch(e.key){case"ArrowDown":{let s=e.target;if(!(s.selectionStart!=null&&s.selectionStart===s.value.length)&&t.activeDropdownIndex<0)break;if(e.preventDefault(),!t.isDropdownOpen&&t.actionableSuggestions.length>0){this.store.set({pillTapped:!0,activeDropdownIndex:d[0]??0});break}if(d.length===0)return;let p=d.indexOf(t.activeDropdownIndex),c=p<d.length-1?p+1:0;this.store.set({activeDropdownIndex:d[c]});break}case"ArrowUp":{if(d.length===0||t.activeDropdownIndex<0)break;if(e.preventDefault(),t.activeDropdownIndex<i){this.store.set({activeDropdownIndex:-1});break}let s=d.indexOf(t.activeDropdownIndex),l=s>0?s-1:d.length-1;this.store.set({activeDropdownIndex:d[l]});break}case"ArrowRight":{if(t.activeDropdownIndex<0){let l=e.target;l.selectionStart!=null&&l.selectionStart===l.value.length&&t.actionableSuggestions.length>1&&(e.preventDefault(),this.pillsSetActivePill(1));break}if(t.activeDropdownIndex%i<i-1){let l=t.activeDropdownIndex+1;l<t.filteredOptions.length&&t.filteredOptions[l]?.is_tappable&&(e.preventDefault(),this.store.set({activeDropdownIndex:l}))}break}case"ArrowLeft":{if(t.activeDropdownIndex<0)break;if(t.activeDropdownIndex%i>0){let s=t.activeDropdownIndex-1;s>=0&&t.filteredOptions[s]?.is_tappable&&(e.preventDefault(),this.store.set({activeDropdownIndex:s}))}break}case"Enter":{if(e.preventDefault(),t.activeDropdownIndex>=0&&t.filteredOptions[t.activeDropdownIndex]?.is_tappable)this.clickOrSelect(t.activeDropdownIndex,t.filteredOptions,r);else if(a){let{rawQuery:s,completedParams:l}=L(t.text,t.completedParams);a({query:t.text.trim(),raw_query:s,completed_params:l})}break}case"Tab":{if(t.activeDropdownIndex>=0&&t.filteredOptions[t.activeDropdownIndex]?.is_tappable)e.preventDefault(),this.clickOrSelect(t.activeDropdownIndex,t.filteredOptions,r);else if(t.isDropdownOpen){let s=t.filteredOptions.findIndex(l=>l.is_tappable);s>=0&&(e.preventDefault(),this.clickOrSelect(s,t.filteredOptions,r))}else if(!t.text&&t.placeholderText){e.preventDefault();let s=t.suggestions.find(l=>l.type==="placeholder");s?this.store.set(l=>({text:t.placeholderText,filterBase:t.placeholderText.length,completedParams:[...l.completedParams,{id:crypto.randomUUID(),placeholder:"",type:s.type,text:t.placeholderText,kind:null,suggestionType:s.type,suggestionPlaceholder:s.text,options:s.options??[]}],suggestions:l.suggestions.filter(p=>p!==s)})):this.store.set({text:t.placeholderText,filterBase:t.placeholderText.length})}break}case"Escape":this.store.set({activeDropdownIndex:-1});break}}getTappableIndices(){let e=this.store.get(),{columns:t}=this.ctx,i=e.filteredOptions.map((n,a)=>n.is_tappable?a:-1).filter(n=>n!==-1),r=Array.from({length:t},()=>[]);for(let n of i)r[n%t].push(n);return r.flat()}clickOrSelect(e,t,i){let r=document.getElementById(`${i}-option-${e}`);r?r.click():this.ctx.selectOption(t[e])}pillsSetActivePill(e){let t=this.store.get(),i=t.suggestions.filter(d=>d.type!=="placeholder");if(e<0||e>=i.length)return;let r=i[e],n=i.filter((d,s)=>s!==e),a=t.suggestions.filter(d=>d.type==="placeholder");this.store.set({suggestions:[...a,r,...n],pillTapped:!0,activeDropdownIndex:-1})}};var ne=class{constructor(e){this.store=e}setActivePill(e){let t=this.store.get(),i=t.suggestions.filter(d=>d.type!=="placeholder");if(e<0||e>=i.length)return;let r=i[e],n=i.filter((d,s)=>s!==e),a=t.suggestions.filter(d=>d.type==="placeholder");this.store.set({suggestions:[...a,r,...n],pillTapped:!0,activeDropdownIndex:-1})}removeLastParam(){let e=this.store.get();if(e.completedParams.length===0)return;let t=e.completedParams[e.completedParams.length-1],i={type:t.suggestionType,text:t.suggestionPlaceholder,required:!0,options:t.options};this.store.set(r=>({completedParams:r.completedParams.slice(0,-1),suggestions:[i,...r.suggestions],activeDropdownIndex:-1}))}};function rt(o){return o===0?.4:o===1?.3:.15}function re(o,e,t,i,r=!1){let n=o.querySelector(".magicx-aia-pill-list");n||(n=document.createElement("span"),n.className="magicx-aia-pill-list",o.appendChild(n));let a=new Map;for(let s of n.querySelectorAll(".magicx-aia-pill"))a.set(s.dataset.pillKey??"",s);let d=new Set;for(let s=0;s<e.length;s++){let l=e[s],p=`${l.type}-${l.text}`;d.add(p);let c=a.get(p);c||(c=document.createElement("button"),c.type="button",c.dataset.pillKey=p,c.textContent=l.text),c.className=`magicx-aia-pill${r?" magicx-aia-pill--rounded":""}${s===t?" magicx-aia-pill--active":""}`,c.style.opacity=String(rt(s)),c.onclick=()=>i(s),n.children[s]!==c&&n.insertBefore(c,n.children[s]??null)}for(let[s,l]of a)d.has(s)||l.remove()}function se(o){let e=document.createElement("div");return e.id=o,e.setAttribute("role","listbox"),e.setAttribute("data-aia-dropdown",""),e.className="magicx-aia-dropdown",e.addEventListener("mousedown",t=>t.preventDefault()),e}function ae(o,e){let{filteredOptions:t,activeIndex:i,isOpen:r,pills:n,showPills:a,onSelect:d,onHighlight:s,onPillClick:l}=e,p=a&&n.length>0;r&&t.length>0||r&&p?o.classList.add("magicx-aia-dropdown--visible"):o.classList.remove("magicx-aia-dropdown--visible");let f=o.querySelector(".magicx-aia-pill-bar");p?(f||(f=document.createElement("div"),f.className="magicx-aia-pill-bar",o.insertBefore(f,o.firstChild)),re(f,n,0,l,!0)):f&&f.remove();let g=o.querySelector(".magicx-aia-grid");t.length>0?(g||(g=document.createElement("div"),g.className="magicx-aia-grid",o.appendChild(g)),st(g,t,i,d,s,e.listboxId)):g&&(g.innerHTML="")}function st(o,e,t,i,r,n){let a=e.map(l=>l.text).join("\0"),d=o.dataset.optionsKey??"",s=a!==d;if(o.dataset.optionsKey=a,s){let l=document.createDocumentFragment();for(let p=0;p<e.length;p++){let c=e[p],m=at(c,p,t,i,r,n);l.appendChild(m)}o.innerHTML="",o.appendChild(l)}else{let l=o.querySelectorAll(".magicx-aia-option");for(let p=0;p<l.length;p++){let c=l[p],m=p===t;c.setAttribute("aria-selected",String(m)),m?c.classList.add("magicx-aia-option--highlighted"):c.classList.remove("magicx-aia-option--highlighted")}}}function at(o,e,t,i,r,n){let a=document.createElement("div");a.id=`${n}-option-${e}`,a.setAttribute("role","option"),a.setAttribute("aria-selected",String(e===t)),a.tabIndex=o.is_tappable?0:-1;let d=["magicx-aia-option"];e===t&&d.push("magicx-aia-option--highlighted"),o.is_tappable?d.push("magicx-aia-option--tappable"):d.push("magicx-aia-option--non-tappable"),a.className=d.join(" ");let s=document.createElement("div");s.className="magicx-aia-streaks",a.appendChild(s);let l=document.createElement("div");l.className="magicx-aia-streaks-vert",a.appendChild(l);let p=document.createElement("span");if(p.className="magicx-aia-option-content",p.textContent=o.icon?`${o.icon} ${o.text}`:o.text,o.tag){let c=document.createElement("span");c.className="magicx-aia-option-tag",c.textContent=o.tag,p.appendChild(c)}return a.appendChild(p),o.is_tappable&&a.addEventListener("click",()=>{a.classList.add("magicx-aia-option--pressed"),i(o),setTimeout(()=>a.classList.remove("magicx-aia-option--pressed"),400)}),a.addEventListener("mouseenter",()=>r(e)),a}function Re(o,e){let t=se(e.listboxId);return o.appendChild(t),{dropdown:t}}function ve(o,e,t){ae(o.dropdown,{suggestions:e.actionableSuggestions.length>0?[{...e.actionableSuggestions[0],options:e.filteredOptions}]:[],filteredOptions:e.filteredOptions,activeIndex:e.activeDropdownIndex,isOpen:e.isDropdownOpen,listboxId:t.listboxId,pills:e.actionableSuggestions,showPills:!0,onSelect:t.selectOption,onHighlight:i=>t.store.set({activeDropdownIndex:i}),onPillClick:t.setActivePill})}function Me(o,e,t,i,r){let n=o.querySelector(".magicx-aia-sizer-text"),a=o.querySelector(".magicx-aia-placeholder");if(i&&r){n&&(n.style.display="none"),a||(a=document.createElement("span"),a.className="magicx-aia-placeholder",o.insertBefore(a,o.firstChild)),a.style.display="",a.textContent=`${r} `,o.dataset.segmentKey="";return}a&&(a.style.display="none"),n||(n=document.createElement("span"),n.className="magicx-aia-sizer-text",o.insertBefore(n,o.firstChild)),n.style.display="",n.className=`magicx-aia-sizer-text${t?" magicx-aia-sizer-text--visible":""}`;let d=e.map(p=>`${p.type}:${p.value}`).join("\0"),s=o.dataset.segmentKey??"",l=o.dataset.newParamId??"";if(!(d===s&&(t??"")===l)){o.dataset.segmentKey=d,o.dataset.newParamId=t??"",n.innerHTML="";for(let p of e){let c=document.createElement("span");p.type==="completed"&&(p.param.id===t?c.className="magicx-aia-shimmer-revealed magicx-aia-shimmer-sweep":c.className="magicx-aia-segment magicx-aia-segment--completed"),c.textContent=p.value,n.appendChild(c)}e.length===0&&(n.textContent="\xA0")}}var lt='<svg width="18" height="18" viewBox="0 0 18 18" fill="none" role="img" aria-label="Submit"><path d="M9 14V4M9 4L4 9M9 4L14 9" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>';function ze(o,e){let{listboxId:t}=e,i=se(t);o.appendChild(i);let r=document.createElement("div");r.className="magicx-aia-input-wrapper",o.appendChild(r);let n=document.createElement("div");n.className="magicx-aia-editor",r.appendChild(n);let a=document.createElement("div");a.className="magicx-aia-sizer",a.setAttribute("aria-hidden","true"),n.appendChild(a);let d=document.createElement("span");a.appendChild(document.createTextNode(" ")),a.appendChild(d);let s=document.createElement("textarea");s.className="magicx-aia-textarea",s.rows=1,s.setAttribute("role","combobox"),s.setAttribute("aria-autocomplete","list"),s.setAttribute("aria-controls",t),n.appendChild(s);let l=document.createElement("button");return l.type="button",l.className="magicx-aia-submit",l.setAttribute("aria-label","Submit"),l.innerHTML=lt,r.appendChild(l),r.addEventListener("click",()=>s.focus()),s.addEventListener("input",()=>{let p=s.value,m=p.length>0&&p[0]!==p[0].toUpperCase()?p[0].toUpperCase()+p.slice(1):p;e.handleChange(m)}),s.addEventListener("keydown",p=>e.handleKeyDown(p)),l.addEventListener("click",p=>{p.stopPropagation();let c=e.store.get();if(!(!!c.text||c.completedParams.length>0)||!e.onSubmit)return;let{rawQuery:f,completedParams:g}=L(c.text,c.completedParams);e.onSubmit({query:c.text.trim(),raw_query:f,completed_params:g})}),s.focus(),{textarea:s,dropdown:i,sizer:a,submitButton:l,inlinePillContainer:d}}function ye(o,e,t){let{textarea:i,dropdown:r,sizer:n,submitButton:a,inlinePillContainer:d}=o,{pillPlacement:s,setActivePill:l,selectOption:p,store:c}=t;i.value!==e.text&&(i.value=e.text),e.placeholderText?i.placeholder=e.placeholderText:i.removeAttribute("placeholder"),i.setAttribute("aria-expanded",String(e.isDropdownOpen));let m=e.activeDropdownIndex>=0?`${t.listboxId}-option-${e.activeDropdownIndex}`:"";m?i.setAttribute("aria-activedescendant",m):i.removeAttribute("aria-activedescendant"),e.newParamId?i.classList.add("magicx-aia-textarea--hidden"):i.classList.remove("magicx-aia-textarea--hidden");let f=!!e.text||e.completedParams.length>0;a.disabled=!f,Me(n,e.segments,e.newParamId,!e.text,e.placeholderText),s==="inline"?re(d,e.actionableSuggestions,0,l):d.innerHTML="",ae(r,{suggestions:e.actionableSuggestions.length>0?[{...e.actionableSuggestions[0],options:e.filteredOptions}]:[],filteredOptions:e.filteredOptions,activeIndex:e.activeDropdownIndex,isOpen:e.isDropdownOpen,listboxId:t.listboxId,pills:e.actionableSuggestions,showPills:s==="dropdown",onSelect:p,onHighlight:g=>c.set({activeDropdownIndex:g}),onPillClick:l})}function He(o){let e=o,t=new Set;return{get:()=>e,set:i=>{let r=typeof i=="function"?i(e):i,n={...e,...r},a=e;e=n;for(let d of t)d(n,a)},subscribe:i=>(t.add(i),()=>{t.delete(i)})}}var we=!1;function Be(){if(we||typeof document>"u")return;if(document.querySelector("style[data-magicx-aia]")){we=!0;return}we=!0;let o=document.createElement("style");o.setAttribute("data-magicx-aia",""),o.textContent=dt,document.head.appendChild(o)}var dt="";var pt=0;function ct(){return`:ac-${++pt}:`}function Ne(){return{text:"",completedParams:[],suggestions:[],activeDropdownIndex:-1,newParamId:null,isLoading:!1,isReady:!1,error:null,segments:[],actionableSuggestions:[],filteredOptions:[],placeholderText:"",isDropdownOpen:!1,filterBase:0,filterInProgress:!1,pillTapped:!1,skipNextFetch:!1,lastRawQuery:""}}var le=class{constructor(e,t={}){this.store=He(Ne());this._listboxId=ct();this.modeController=null;this.unsubscribers=[];this.derivedInProgress=!1;this.domRefs=null;this.dropdownRefs=null;this.externalListeners=new Set;this.container=e,this.opts=t,this.renderMode=t.renderMode??"full",t.value!==void 0&&this.store.set({text:t.value}),t.completedParams!==void 0&&this.store.set({completedParams:t.completedParams}),this.pillsController=new ne(this.store),this.fetchController=new oe(this.store,()=>this.opts.apiConfig,()=>this.opts.optionOverrides,()=>this.opts.maskCompletedText,()=>this.opts.onError),this.keyboardController=new ie(this.store,{columns:t.columns??2,listboxId:this.listboxId,getOnSubmit:()=>this.opts.onSubmit,selectOption:i=>this.selectOption(i)}),this.unsubscribers.push(this.store.subscribe((i,r)=>{this.recomputeDerived(i,r)})),this.unsubscribers.push(this.store.subscribe((i,r)=>{i.text!==r.text&&this.opts.onChange?.(i.text),i.completedParams!==r.completedParams&&this.opts.onParamsChange?.(i.completedParams),this.opts.onStateChange?.(i)})),this.renderMode!=="headless"&&(Be(),this.setupContainer()),this.renderMode==="full"?this.buildAndRenderFull():this.renderMode==="dropdown"&&this.buildAndRenderDropdown(),this.fetchController.start()}focus(){this.domRefs?.textarea.focus()}reset(){this.store.set({...Ne()}),this.fetchController.doFetch("",[])}destroy(){this.fetchController.dispose(),this.modeController?.destroy(),this.newParamTimer&&clearTimeout(this.newParamTimer),this.suggestionRemovalTimer&&clearTimeout(this.suggestionRemovalTimer),this.externalListeners.clear();for(let e of this.unsubscribers)e();this.unsubscribers=[],this.domRefs=null,this.dropdownRefs=null,this.renderMode!=="headless"&&(this.container.innerHTML="")}setMode(e){this.modeController?.setMode(e)}setValue(e){this.store.set({text:e})}setCompletedParams(e){this.store.set({completedParams:e})}setActivePill(e){this.pillsController.setActivePill(e)}removeLastParam(){this.pillsController.removeLastParam()}clearNewParamId(){this.store.set({newParamId:null})}setActiveDropdownIndex(e){this.store.set({activeDropdownIndex:e})}handleTextChange(e){this.handleChange(e)}handleKeyDown(e){this.keyboardController.handleKeyDown(e)}subscribe(e){return this.externalListeners.add(e),()=>{this.externalListeners.delete(e)}}getState(){return this.store.get()}get listboxId(){return this._listboxId}get isReady(){return this.store.get().isReady}on(e,t){switch(e){case"submit":return this.opts.onSubmit=t,()=>{this.opts.onSubmit=void 0};case"error":return this.opts.onError=t,()=>{this.opts.onError=void 0};case"change":return this.opts.onChange=t,()=>{this.opts.onChange=void 0};case"paramsChange":return this.opts.onParamsChange=t,()=>{this.opts.onParamsChange=void 0};case"stateChange":return this.opts.onStateChange=t,()=>{this.opts.onStateChange=void 0};default:return()=>{}}}update(e){Object.assign(this.opts,e),e.mode!==void 0&&this.modeController?.setMode(e.mode),e.optionsPosition!==void 0&&(this.container.dataset.optionsPosition=e.optionsPosition),e.animations!==void 0&&(this.container.dataset.animations=e.animations?"on":"off"),e.pillPlacement!==void 0&&(this.container.dataset.pillPlacement=e.pillPlacement,this.store.set({})),e.dropdownTrigger!==void 0&&this.store.set({}),e.value!==void 0&&this.store.set({text:e.value}),e.completedParams!==void 0&&this.store.set({completedParams:e.completedParams})}selectOption(e){let t=this.store.get(),i=t.actionableSuggestions[0];if(!i)return;let r=t.filterBase,n=t.text.slice(0,r),a=n.length===0&&t.text.length===0;a&&t.placeholderText&&(n=`${t.placeholderText} `);let d=Pe(n,e.text);d>0&&(n=n.slice(0,n.length-d));let s=n.length>0&&n[n.length-1]!==" ",l=`${n}${s?" ":""}${e.text} `,p=a&&l.length>0?l[0].toUpperCase()+l.slice(1):l,c=p.toLowerCase().lastIndexOf(e.text.toLowerCase()),m=c>=0?p.slice(c,c+e.text.length):e.text,f={id:crypto.randomUUID(),placeholder:"",type:i.type,text:m,kind:e.kind,suggestionType:i.type,suggestionPlaceholder:i.text,options:i.options??[],metadata:e.metadata},g=t.actionableSuggestions.length-1;this.store.set(y=>({text:p,filterBase:p.length,completedParams:[...y.completedParams,f],newParamId:f.id,pillTapped:!1,activeDropdownIndex:-1,skipNextFetch:g>0})),this.suggestionRemovalTimer=window.setTimeout(()=>{this.store.set(y=>({suggestions:y.suggestions.filter(v=>v!==i)}))},400)}recomputeDerived(e,t){if(this.derivedInProgress)return;this.derivedInProgress=!0;let i=Ce(e.text,e.completedParams),r=e.suggestions.filter(S=>S.type!=="placeholder"),n=r[0],a=n?this.opts.optionOverrides?.[n.type]:void 0,d=Math.min(e.filterBase,e.text.length),l=e.lastRawQuery!==""||d>0?Q(e.text,d,e.filterInProgress):"",p=n?a?a(l.trim()):n.options??[]:[],c=ee(p,l),m=e.suggestions.filter(S=>S.type==="placeholder").map(S=>S.text).join(" ")||this.opts.placeholder||"",f=m.length>0,g=this.opts.dropdownTrigger??"auto",y=!1;g==="auto"?y=!e.isLoading&&c.length>0&&(!!e.text||e.pillTapped||!f):g==="manual"&&(y=!e.isLoading&&c.length>0&&e.pillTapped),this.store.set({segments:i,actionableSuggestions:r,filteredOptions:c,placeholderText:m,isDropdownOpen:y}),this.derivedInProgress=!1;let v=this.store.get();for(let S of this.externalListeners)S(v)}setupContainer(){this.container.classList.add("magicx-aia"),this.container.dataset.pillPlacement=this.renderMode==="dropdown"?"dropdown":this.opts.pillPlacement??"inline",this.container.dataset.optionsPosition=this.opts.optionsPosition??"below",this.container.dataset.animations=this.opts.animations??!0?"on":"off",this.modeController=new K(this.container,this.opts.mode??"auto")}buildAndRenderFull(){let e=this,t={store:this.store,listboxId:this.listboxId,get pillPlacement(){return e.opts.pillPlacement??"inline"},get onSubmit(){return e.opts.onSubmit},selectOption:i=>this.selectOption(i),setActivePill:i=>this.pillsController.setActivePill(i),handleKeyDown:i=>this.keyboardController.handleKeyDown(i),handleChange:i=>this.handleChange(i)};this.domRefs=ze(this.container,t),this.subscribeBatchedRender(()=>{this.domRefs&&ye(this.domRefs,this.store.get(),t)}),ye(this.domRefs,this.store.get(),t),this.subscribeNewParamTimer()}buildAndRenderDropdown(){let e={store:this.store,listboxId:this.listboxId,selectOption:t=>this.selectOption(t),setActivePill:t=>this.pillsController.setActivePill(t)};this.dropdownRefs=Re(this.container,e),this.subscribeBatchedRender(()=>{this.dropdownRefs&&ve(this.dropdownRefs,this.store.get(),e)}),ve(this.dropdownRefs,this.store.get(),e),this.subscribeNewParamTimer()}subscribeBatchedRender(e){let t=!1;this.unsubscribers.push(this.store.subscribe(()=>{t||(t=!0,queueMicrotask(()=>{t=!1,e()}))}))}subscribeNewParamTimer(){this.unsubscribers.push(this.store.subscribe((e,t)=>{e.newParamId&&e.newParamId!==t.newParamId&&(this.newParamTimer&&clearTimeout(this.newParamTimer),this.newParamTimer=window.setTimeout(()=>{this.store.set({newParamId:null})},650))}))}handleChange(e){let t=this.store.get();this.store.set({text:e,pillTapped:!1,activeDropdownIndex:-1});let{valid:i,invalid:r}=Ae(e,t.completedParams);r.length>0&&this.store.set(n=>({completedParams:i,suggestions:[...r.map(a=>({type:a.suggestionType,text:a.suggestionPlaceholder,required:!0,options:a.options})),...n.suggestions]}))}};function de({onSubmit:o,onError:e,optionOverrides:t,maskCompletedText:i,placeholder:r,apiConfig:n,columns:a=2,dropdownTrigger:d,value:s,completedParams:l,onChange:p,onParamsChange:c}){let m=(0,x.useRef)(null),[f,g]=(0,x.useState)(null),y=(0,x.useRef)(o);y.current=o;let v=(0,x.useRef)(e);v.current=e;let S=(0,x.useRef)(p);S.current=p;let C=(0,x.useRef)(c);C.current=c,!m.current&&typeof document<"u"&&(m.current=new le(document.createElement("div"),{renderMode:"headless",apiConfig:n,optionOverrides:t,maskCompletedText:i,placeholder:r,columns:a,dropdownTrigger:d,value:s,completedParams:l,onSubmit:(...h)=>y.current?.(...h),onError:(...h)=>v.current?.(...h),onChange:(...h)=>S.current?.(...h),onParamsChange:(...h)=>C.current?.(...h)}));let u=m.current,I=(0,x.useCallback)(()=>{},[]);(0,x.useEffect)(()=>{if(!u)return;g(u.getState());let h=u.subscribe(A=>{g(A)});return()=>{h(),u.destroy(),m.current=null}},[u]),(0,x.useEffect)(()=>{s!==void 0&&u?.setValue(s)},[s,u]),(0,x.useEffect)(()=>{l!==void 0&&u?.setCompletedParams(l)},[l,u]);let j=JSON.stringify(n??null),T=(0,x.useRef)(t),z=(0,x.useRef)(0);if(t!==T.current){let h=T.current,A=t,b=Object.keys(h??{}),D=Object.keys(A??{});(b.length!==D.length||D.some(X=>!h?.[X]||A[X]!==h[X]))&&z.current++,T.current=t}(0,x.useEffect)(()=>{u?.update({apiConfig:n,optionOverrides:t,dropdownTrigger:d})},[j,z.current,d,u]);let pe=(0,x.useCallback)(h=>{if(!u)return;let A=h.target.value,D=A.length>0&&!h.nativeEvent?.isComposing&&A[0]!==A[0].toUpperCase()?A[0].toUpperCase()+A.slice(1):A;u.handleTextChange(D)},[u]),ce=(0,x.useCallback)(h=>{u?.handleKeyDown(h.nativeEvent)},[u]),$=(0,x.useCallback)(h=>u?.setActivePill(h),[u]),R=(0,x.useCallback)(()=>u?.removeLastParam(),[u]),G=(0,x.useCallback)(()=>u?.clearNewParamId(),[u]),E=(0,x.useCallback)(()=>u?.reset(),[u]),ue=(0,x.useCallback)(h=>u?.selectOption(h),[u]),H=(0,x.useCallback)(h=>u?.setActiveDropdownIndex(h),[u]);if(!u)return{completedParams:l??[],suggestionPills:[],setActivePill:I,removeLastParam:I,segments:[],newParamId:null,clearNewParamId:I,suggestions:[],activeIndex:-1,isReady:!1,isLoading:!0,error:null,inputProps:{value:s??"",placeholder:r,onChange:I,onKeyDown:I,role:"combobox","aria-expanded":!1,"aria-activedescendant":void 0,"aria-autocomplete":"list","aria-controls":""},reset:I,dropdownProps:{suggestions:[],activeIndex:-1,onSelect:I,onHighlight:I,isOpen:!1,id:"",pills:[],onPillClick:I}};let w=f??u.getState(),F=s!==void 0?s:w.text,W=l!==void 0?l:w.completedParams,V=w.actionableSuggestions,q=V[0],me=w.filteredOptions,ge=w.activeDropdownIndex>=0?`${u.listboxId}-option-${w.activeDropdownIndex}`:void 0;return{completedParams:W,suggestionPills:V,setActivePill:$,removeLastParam:R,segments:w.segments,newParamId:w.newParamId,clearNewParamId:G,suggestions:w.suggestions,activeIndex:w.activeDropdownIndex,isReady:w.isReady,isLoading:w.isLoading,error:w.error,inputProps:{value:F,placeholder:w.placeholderText||void 0,onChange:pe,onKeyDown:ce,role:"combobox","aria-expanded":w.isDropdownOpen,"aria-activedescendant":ge,"aria-autocomplete":"list","aria-controls":u.listboxId},reset:E,dropdownProps:{suggestions:q?[{...q,options:me}]:[],activeIndex:w.activeDropdownIndex,onSelect:ue,onHighlight:H,isOpen:w.isDropdownOpen,id:u.listboxId,pills:V,onPillClick:$}}}var _=require("react/jsx-runtime");function ut(o){return o!=="auto"?o:typeof window>"u"||window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}var Ke=(0,P.forwardRef)(function({onSubmit:e,onError:t,optionOverrides:i,maskCompletedText:r,placeholder:n,className:a,apiConfig:d,columns:s,pillPlacement:l="inline",mode:p="auto",optionsPosition:c="below",animations:m=!0,dropdownTrigger:f,value:g,completedParams:y,onChange:v,onParamsChange:S},C){let u=(0,P.useRef)(null),I=(0,P.useRef)(null),j=(0,P.useRef)(()=>{}),T=(0,P.useRef)(null);(0,P.useEffect)(()=>{I.current?.focus()},[]),(0,P.useEffect)(()=>{let b=u.current;if(b)return T.current?T.current.setMode(p):T.current=new K(b,p),()=>{T.current?.destroy(),T.current=null}},[p]);let{completedParams:z,suggestionPills:pe,setActivePill:ce,segments:$,newParamId:R,clearNewParamId:G,inputProps:E,dropdownProps:ue,reset:H}=de({onSubmit:b=>j.current(b),onError:t,optionOverrides:i,maskCompletedText:r,placeholder:n,apiConfig:d,columns:s,dropdownTrigger:f,value:g,completedParams:y,onChange:v,onParamsChange:S});(0,P.useEffect)(()=>{if(!R)return;let b=window.setTimeout(()=>G(),650);return()=>window.clearTimeout(b)},[R,G]),(0,P.useImperativeHandle)(C,()=>({focus:()=>I.current?.focus(),reset:H,setMode:b=>T.current?.setMode(b)}),[H]);let w=()=>{I.current?.focus()},F=!!E.value||z.length>0,W=(0,P.useCallback)(()=>{if(!F)return;let{rawQuery:b,completedParams:D}=L(E.value,z);e({query:E.value.trim(),raw_query:b,completed_params:D}),H()},[F,E.value,z,e,H]);j.current=W;let{onChange:V,placeholder:q,...me}=E,ge=!E.value,h=l==="inline",A=l==="dropdown";return(0,_.jsxs)("div",{ref:u,className:`magicx-aia ${k.container} ${a??""}`,"data-pill-placement":l,"data-options-position":c,"data-animations":m?"on":"off","data-mode":ut(p),children:[(0,_.jsx)(Z,{...ue,showPills:A}),(0,_.jsxs)("div",{className:k.inputWrapper,onClick:w,children:[(0,_.jsxs)("div",{className:k.editorArea,children:[(0,_.jsxs)("div",{className:k.sizerContent,"aria-hidden":"true",children:[ge&&q?(0,_.jsxs)("span",{className:k.placeholderText,children:[q," "]}):(0,_.jsxs)("span",{className:`${k.sizerText} ${R?k.sizerTextVisible:""}`,children:[$.map((b,D)=>{if(b.type==="completed"&&b.param.id===R){let $e=`${k.shimmerRevealed} ${k.shimmerSweep}`;return(0,_.jsx)("span",{className:$e,children:b.value},`${D}-${b.type}`)}return(0,_.jsx)("span",{children:b.value},`${D}-${b.type}`)}),$.length===0&&"\xA0"]})," ",h&&(0,_.jsx)(Y,{pills:pe,activePillIndex:0,onSelectPill:ce})]}),(0,_.jsx)("textarea",{ref:I,className:`${k.textarea} ${R?k.textareaHidden:""}`,rows:1,onChange:V,...me})]}),(0,_.jsx)("button",{type:"button",className:k.submitButton,disabled:!F,onClick:b=>{b.stopPropagation(),W()},"aria-label":"Submit",children:(0,_.jsx)("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",role:"img","aria-label":"Submit",children:(0,_.jsx)("path",{d:"M9 14V4M9 4L4 9M9 4L14 9",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})]})]})});0&&(module.exports={AIAutocomplete,AIAutocompleteDropdown,useAIAutocomplete});
|
|
566
|
+
`,document.head.appendChild(o)}var O={item:"SuggestionItem-module_item_d4vpD",fadeIn:"SuggestionItem-module_fadeIn_I8u35",content:"SuggestionItem-module_content_T-Qba",tappable:"SuggestionItem-module_tappable_70KcX",nonTappable:"SuggestionItem-module_nonTappable_xSZM-",highlighted:"SuggestionItem-module_highlighted_Hb0SU",tag:"SuggestionItem-module_tag_e3Fwe",pressed:"SuggestionItem-module_pressed_98o-r",glassFade:"SuggestionItem-module_glassFade_oyiSj",tapDown:"SuggestionItem-module_tapDown_G3WGz",streaks:"SuggestionItem-module_streaks_d9PEB",streaksVert:"SuggestionItem-module_streaksVert_ERlV1",streakHorizRight:"SuggestionItem-module_streakHorizRight_aboGz",streakHorizLeft:"SuggestionItem-module_streakHorizLeft_BreWJ",streakVertUp:"SuggestionItem-module_streakVertUp_to1GD",streakVertDown:"SuggestionItem-module_streakVertDown_OrcLh"};var M=require("react/jsx-runtime");function Ie({option:o,isHighlighted:e,onSelect:t,onHighlight:i,id:r}){let[n,s]=(0,B.useState)(!1),d=(0,B.useRef)(void 0);(0,B.useEffect)(()=>()=>clearTimeout(d.current),[]);let a=()=>{!o.is_tappable||n||(s(!0),t(o),clearTimeout(d.current),d.current=setTimeout(()=>s(!1),400))},l=[O.item,e?O.highlighted:"",o.is_tappable?O.tappable:O.nonTappable,n?O.pressed:""].filter(Boolean).join(" ");return(0,M.jsxs)("div",{id:r,role:"option","aria-selected":e,className:l,tabIndex:o.is_tappable?0:-1,onClick:a,onKeyDown:p=>{o.is_tappable&&(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),a())},onMouseEnter:i,children:[(0,M.jsx)("div",{className:O.streaks}),(0,M.jsx)("div",{className:O.streaksVert}),(0,M.jsxs)("span",{className:O.content,children:[o.icon?`${o.icon} ${o.text}`:o.text,o.tag&&(0,M.jsx)("span",{className:O.tag,children:o.tag})]})]})}var xe=require("react/jsx-runtime");function _e({options:o,activeIndex:e,onSelect:t,onHighlight:i,listboxId:r}){return(0,xe.jsx)("div",{className:Se.grid,children:o.map((n,s)=>(0,xe.jsx)(Ie,{option:n,isHighlighted:s===e,onSelect:t,onHighlight:()=>i(s),id:`${r}-option-${s}`},n.text))})}var N=require("react/jsx-runtime");function Z({suggestions:o,activeIndex:e,onSelect:t,onHighlight:i,isOpen:r,id:n,className:s,pills:d,onPillClick:a,showPills:l=!0}){let c=o[0]?.options??[],u=l&&d&&d.length>0&&a,m=r&&c.length>0||r&&u;return(0,N.jsxs)("div",{id:n,role:"listbox","data-aia-dropdown":"",className:`${J.dropdown} ${m?J.visible:""} ${s??""}`,onMouseDown:S=>S.preventDefault(),children:[u&&(0,N.jsx)("div",{className:J.pillBar,"data-aia-pillbar":"",children:(0,N.jsx)(Y,{pills:d,activePillIndex:0,onSelectPill:a,rounded:!0})}),c.length>0&&(0,N.jsx)(_e,{options:c,activeIndex:e,onSelect:t,onHighlight:i,listboxId:n})]})}var b=require("react");function Q(o,e,t){let i=o.slice(e);if(t||e===0||o[e-1]===" ")return i;let r=i.indexOf(" ");return r===-1?"":i.slice(r+1)}function Pe(o,e){let t=o.trimEnd().replace(/\s+/g," ");if(t.length===0||e.length===0)return 0;let i=t.split(" "),r=e.toLowerCase();for(let n=0;n<i.length;n++){let s=i.slice(n).join(" ");if(r.startsWith(s.toLowerCase())){let d=t.length-s.length;return o.length-d}}return 0}function ee(o,e){if(!o)return[];let t=e.trimStart();if(!t)return o;let i=t.toLowerCase();return o.filter(r=>!r.is_tappable||r.text.toLowerCase().includes(i))}function be(o,e){if(!o)return null;let t=e.trim();if(!t)return null;let i=t.toLowerCase();return o.find(r=>r.is_tappable&&r.text.toLowerCase()===i)??null}var $=class{constructor(e,t="auto"){this.container=e;this.mode=t;this.mediaQuery=null;this.onSystemChange=e=>{this.container.dataset.mode=e.matches?"dark":"light"};this.apply()}setMode(e){this.detachListener(),this.mode=e,this.apply()}destroy(){this.detachListener()}apply(){this.mode==="auto"?(this.mediaQuery??(this.mediaQuery=window.matchMedia("(prefers-color-scheme: dark)")),this.mediaQuery.addEventListener("change",this.onSystemChange),this.container.dataset.mode=this.mediaQuery.matches?"dark":"light"):this.container.dataset.mode=this.mode}detachListener(){this.mediaQuery?.removeEventListener("change",this.onSystemChange)}};function Ce(o,e){let t=[],i=0;for(let n of e){let s=o.indexOf(n.text,i);s!==-1&&(s>i&&t.push({type:"text",value:o.slice(i,s)}),t.push({type:"completed",value:n.text,param:n}),i=s+n.text.length)}let r=o.slice(i);return r&&t.push({type:"text",value:r}),t}function Ae(o,e){let t=[],i=[],r=0;for(let n of e){let s=o.indexOf(n.text,r);s===-1?i.push(n):(t.push(n),r=s+n.text.length)}return{valid:t,invalid:i}}var te=class{constructor(e){this.config=e;this.current=null;this.expiresAt=null;this.inFlightRefresh=null;e.accessToken&&(this.current=e.accessToken)}async getToken(e=!1){if(!e&&this.current&&!this.isExpired())return this.current;if(!e&&this.inFlightRefresh)return this.inFlightRefresh;this.inFlightRefresh=this.refresh();try{return await this.inFlightRefresh}finally{this.inFlightRefresh=null}}async refresh(){let e=await this.config.getAccessToken();return this.current=e.accessToken,this.expiresAt=e.expiresAt??null,this.current}isExpired(){return this.expiresAt==null?!1:Date.now()>=this.expiresAt-3e4}};var Je="0.1.21",ke=!1;function Ye(){return crypto.randomUUID()}function Ze(o,e){return{placeholder:o.placeholder,type:o.type,...e&&{text:o.text},kind:o.kind}}function De(o){return o?.type==="accessToken"}function et(o){if(!(!o||De(o)))return o}var Te=new WeakMap;function tt(o){let e=Te.get(o.getAccessToken);return e||(e=new te(o),Te.set(o.getAccessToken,e)),e}function ot(o,e,t){let i=e.find(n=>n.type==="contact"&&n.metadata?.contact_account_count)?.metadata?.contact_account_count,r=typeof i=="number"?i:void 0;return{data:{raw_query:o,completed_params:e.map(n=>Ze(n,t)),...r!=null&&{contact_account_count:r}},meta:{request_id:Ye(),request_at:new Date().toISOString(),language:typeof navigator<"u"?navigator.language:"en-US",client_version:Je}}}function it(o){return{"Content-Type":"application/json",...o?.appIdentifier&&{"X-App-Identifier":o.appIdentifier},...o?.headers}}async function Oe(o,e,t,i,r){return fetch(o,{method:"POST",headers:{...e,Authorization:`Bearer ${t}`},body:i,signal:r})}async function Ee(o,e,t){let i=t?.apiConfig,r=!t?.maskCompletedText,n=ot(o,e,r),s=it(i),d=i?.endpoint??"/ac/suggest",a=JSON.stringify(n);if(De(i)){let u=tt(i),f=await u.getToken(),m=await Oe(d,s,f,a,t?.signal);if(m.status===401){let S=await u.getToken(!0);m=await Oe(d,s,S,a,t?.signal)}if(!m.ok)throw new Error(`API error: ${m.status} ${m.statusText}`);return m.json()}let l=et(i),p=l?.apiKey??"";if(!p&&!ke&&(ke=!0,console.warn("[AIAutocomplete] No apiKey in apiConfig. Requests will be sent without an Authorization header.")),p){let u=l?.authScheme??"Bearer";s.Authorization=u==="Basic"?`Basic ${btoa(p)}`:`Bearer ${p}`}let c=await fetch(d,{method:"POST",headers:s,body:a,signal:t?.signal});if(!c.ok)throw new Error(`API error: ${c.status} ${c.statusText}`);return c.json()}function L(o,e){let t=o,i={},r=[];for(let n of e){let s=(i[n.type]??0)+1;i[n.type]=s;let a=`{{${n.type.toUpperCase().replace(/\s+/g,"_")}_${s}}}`,l=t.indexOf(n.text);l!==-1&&(t=t.slice(0,l)+a+t.slice(l+n.text.length)),r.push({...n,placeholder:a})}return{rawQuery:t,completedParams:r}}function Le(o,e){return e?o.map(t=>{let i=e[t.type];if(!i)return t;let r=i("");if(r.length===0)return t;let n=new Set(r.map(d=>d.text)),s=(t.options??[]).filter(d=>!n.has(d.text));return{...t,options:[...r,...s]}}):o}var nt=100,rt=300,st=2,oe=class{constructor(e,t,i,r,n){this.store=e;this.getApiConfig=t;this.getOptionOverrides=i;this.getMaskCompletedText=r;this.getOnError=n;this.fetchVersion=0;this.abortController=null;this.debounceTimer=null;this.slowDebounceTimer=null;this.unsubscribe=null}start(){this.doFetch("",[]);let e=this.store.get().text,t=this.store.get().completedParams;this.unsubscribe=this.store.subscribe(i=>{(i.text!==e||i.completedParams!==t)&&(e=i.text,t=i.completedParams,this.scheduleFetch())})}dispose(){this.abortController?.abort(),this.clearTimers(),this.unsubscribe?.()}async doFetch(e,t){this.abortController?.abort();let i=new AbortController;this.abortController=i;let r=++this.fetchVersion,n=this.store.get(),s=n.text.length;n.suggestions.some(a=>a.type!=="placeholder")||this.store.set({isLoading:!0}),this.store.set({error:null});try{let a=await Ee(e,t,{maskCompletedText:this.getMaskCompletedText(),signal:i.signal,apiConfig:this.getApiConfig()});if(r!==this.fetchVersion)return;let l=Le(a.data.suggestions??[],this.getOptionOverrides()),p=a.data.input??[],c=p[p.length-1],u=this.store.get().text,f,m;if(c?.state==="in_progress"){m=!0;let C=u.toLowerCase().lastIndexOf(c.text.toLowerCase());f=C!==-1?C:s}else m=!1,f=s;let x=l.filter(C=>C.type!=="placeholder")[0],v=null;if(x){let C=Q(u,f,m),g=be(x.options,C);g&&(v={id:crypto.randomUUID(),placeholder:"",type:x.type,text:g.text,kind:g.kind,suggestionType:x.type,suggestionPlaceholder:x.text,options:x.options??[],metadata:g.metadata},l=l.filter(I=>I!==x))}this.store.set(C=>({suggestions:l,isLoading:!1,isReady:a.data.is_ready??!1,lastRawQuery:e,activeDropdownIndex:-1,filterBase:f,filterInProgress:m,...v?{completedParams:[...C.completedParams,v]}:{}}))}catch(a){if(r===this.fetchVersion){let l=a instanceof Error?a:new Error(String(a));this.store.set({error:l,isLoading:!1}),this.getOnError()?.(l)}}}scheduleFetch(){if(this.clearTimers(),this.store.get().skipNextFetch){this.store.set({skipNextFetch:!1});return}let t=i=>{let r=this.store.get();if(!r.text&&r.completedParams.length===0)return this.doFetch("",[]),!0;let n=Q(r.text,r.filterBase,r.filterInProgress),d=r.suggestions.filter(x=>x.type!=="placeholder")[0],l=(d?ee(d.options,n):[]).filter(x=>x.is_tappable),p=d?be(d.options,n)!==null:!1,c=n.trim().length>0;if(l.length>0&&!p&&c)return!1;if(r.completedParams.length===0&&r.text.length>0){let x=r.suggestions.filter(v=>v.type==="placeholder").map(v=>v.text).join(" ");if(x.length>0&&x.toLowerCase().startsWith(r.text.toLowerCase()))return!1}let{rawQuery:u,completedParams:f}=L(r.text,r.completedParams),m=u.length<r.lastRawQuery.length,S=Math.abs(u.length-r.lastRawQuery.length);return m||S>=i?(this.doFetch(u,f),!0):!1};this.debounceTimer=setTimeout(()=>{t(st)&&this.slowDebounceTimer&&clearTimeout(this.slowDebounceTimer)},nt),this.slowDebounceTimer=setTimeout(()=>t(1),rt)}clearTimers(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.slowDebounceTimer&&clearTimeout(this.slowDebounceTimer),this.debounceTimer=null,this.slowDebounceTimer=null}};var ie=class{constructor(e,t){this.store=e;this.ctx=t}handleKeyDown(e){let t=this.store.get(),{columns:i,listboxId:r,getOnSubmit:n}=this.ctx,s=n(),d=this.getTappableIndices();switch(e.key){case"ArrowDown":{let a=e.target;if(!(a.selectionStart!=null&&a.selectionStart===a.value.length)&&t.activeDropdownIndex<0)break;if(e.preventDefault(),!t.isDropdownOpen&&t.actionableSuggestions.length>0){this.store.set({pillTapped:!0,activeDropdownIndex:d[0]??0});break}if(d.length===0)return;let p=d.indexOf(t.activeDropdownIndex),c=p<d.length-1?p+1:0;this.store.set({activeDropdownIndex:d[c]});break}case"ArrowUp":{if(d.length===0||t.activeDropdownIndex<0)break;if(e.preventDefault(),t.activeDropdownIndex<i){this.store.set({activeDropdownIndex:-1});break}let a=d.indexOf(t.activeDropdownIndex),l=a>0?a-1:d.length-1;this.store.set({activeDropdownIndex:d[l]});break}case"ArrowRight":{if(t.activeDropdownIndex<0){let l=e.target;l.selectionStart!=null&&l.selectionStart===l.value.length&&t.actionableSuggestions.length>1&&(e.preventDefault(),this.pillsSetActivePill(1));break}if(t.activeDropdownIndex%i<i-1){let l=t.activeDropdownIndex+1;l<t.filteredOptions.length&&t.filteredOptions[l]?.is_tappable&&(e.preventDefault(),this.store.set({activeDropdownIndex:l}))}break}case"ArrowLeft":{if(t.activeDropdownIndex<0)break;if(t.activeDropdownIndex%i>0){let a=t.activeDropdownIndex-1;a>=0&&t.filteredOptions[a]?.is_tappable&&(e.preventDefault(),this.store.set({activeDropdownIndex:a}))}break}case"Enter":{if(e.preventDefault(),t.activeDropdownIndex>=0&&t.filteredOptions[t.activeDropdownIndex]?.is_tappable)this.clickOrSelect(t.activeDropdownIndex,t.filteredOptions,r);else if(s){let{rawQuery:a,completedParams:l}=L(t.text,t.completedParams);s({query:t.text.trim(),raw_query:a,completed_params:l})}break}case"Tab":{if(t.activeDropdownIndex>=0&&t.filteredOptions[t.activeDropdownIndex]?.is_tappable)e.preventDefault(),this.clickOrSelect(t.activeDropdownIndex,t.filteredOptions,r);else if(t.isDropdownOpen){let a=t.filteredOptions.findIndex(l=>l.is_tappable);a>=0&&(e.preventDefault(),this.clickOrSelect(a,t.filteredOptions,r))}else if(!t.text&&t.placeholderText){e.preventDefault();let a=t.suggestions.find(l=>l.type==="placeholder");a?this.store.set(l=>({text:t.placeholderText,filterBase:t.placeholderText.length,completedParams:[...l.completedParams,{id:crypto.randomUUID(),placeholder:"",type:a.type,text:t.placeholderText,kind:null,suggestionType:a.type,suggestionPlaceholder:a.text,options:a.options??[]}],suggestions:l.suggestions.filter(p=>p!==a)})):this.store.set({text:t.placeholderText,filterBase:t.placeholderText.length})}break}case"Escape":this.store.set({activeDropdownIndex:-1});break}}getTappableIndices(){let e=this.store.get(),{columns:t}=this.ctx,i=e.filteredOptions.map((n,s)=>n.is_tappable?s:-1).filter(n=>n!==-1),r=Array.from({length:t},()=>[]);for(let n of i)r[n%t].push(n);return r.flat()}clickOrSelect(e,t,i){let r=document.getElementById(`${i}-option-${e}`);r?r.click():this.ctx.selectOption(t[e])}pillsSetActivePill(e){let t=this.store.get(),i=t.suggestions.filter(d=>d.type!=="placeholder");if(e<0||e>=i.length)return;let r=i[e],n=i.filter((d,a)=>a!==e),s=t.suggestions.filter(d=>d.type==="placeholder");this.store.set({suggestions:[...s,r,...n],pillTapped:!0,activeDropdownIndex:-1})}};var ne=class{constructor(e){this.store=e}setActivePill(e){let t=this.store.get(),i=t.suggestions.filter(d=>d.type!=="placeholder");if(e<0||e>=i.length)return;let r=i[e],n=i.filter((d,a)=>a!==e),s=t.suggestions.filter(d=>d.type==="placeholder");this.store.set({suggestions:[...s,r,...n],pillTapped:!0,activeDropdownIndex:-1})}removeLastParam(){let e=this.store.get();if(e.completedParams.length===0)return;let t=e.completedParams[e.completedParams.length-1],i={type:t.suggestionType,text:t.suggestionPlaceholder,required:!0,options:t.options};this.store.set(r=>({completedParams:r.completedParams.slice(0,-1),suggestions:[i,...r.suggestions],activeDropdownIndex:-1}))}};function at(o){return o===0?.4:o===1?.3:.15}function re(o,e,t,i,r=!1){let n=o.querySelector(".magicx-aia-pill-list");n||(n=document.createElement("span"),n.className="magicx-aia-pill-list",o.appendChild(n));let s=new Map;for(let a of n.querySelectorAll(".magicx-aia-pill"))s.set(a.dataset.pillKey??"",a);let d=new Set;for(let a=0;a<e.length;a++){let l=e[a],p=`${l.type}-${l.text}`;d.add(p);let c=s.get(p);c||(c=document.createElement("button"),c.type="button",c.dataset.pillKey=p,c.textContent=l.text),c.className=`magicx-aia-pill${r?" magicx-aia-pill--rounded":""}${a===t?" magicx-aia-pill--active":""}`,c.style.opacity=String(at(a)),c.onclick=()=>i(a),n.children[a]!==c&&n.insertBefore(c,n.children[a]??null)}for(let[a,l]of s)d.has(a)||l.remove()}function se(o){let e=document.createElement("div");return e.id=o,e.setAttribute("role","listbox"),e.setAttribute("data-aia-dropdown",""),e.className="magicx-aia-dropdown",e.addEventListener("mousedown",t=>t.preventDefault()),e}function ae(o,e){let{filteredOptions:t,activeIndex:i,isOpen:r,pills:n,showPills:s,onSelect:d,onHighlight:a,onPillClick:l}=e,p=s&&n.length>0;r&&t.length>0||r&&p?o.classList.add("magicx-aia-dropdown--visible"):o.classList.remove("magicx-aia-dropdown--visible");let f=o.querySelector(".magicx-aia-pill-bar");p?(f||(f=document.createElement("div"),f.className="magicx-aia-pill-bar",o.insertBefore(f,o.firstChild)),re(f,n,0,l,!0)):f&&f.remove();let m=o.querySelector(".magicx-aia-grid");t.length>0?(m||(m=document.createElement("div"),m.className="magicx-aia-grid",o.appendChild(m)),lt(m,t,i,d,a,e.listboxId)):m&&(m.innerHTML="")}function lt(o,e,t,i,r,n){let s=e.map(l=>l.text).join("\0"),d=o.dataset.optionsKey??"",a=s!==d;if(o.dataset.optionsKey=s,a){let l=document.createDocumentFragment();for(let p=0;p<e.length;p++){let c=e[p],u=dt(c,p,t,i,r,n);l.appendChild(u)}o.innerHTML="",o.appendChild(l)}else{let l=o.querySelectorAll(".magicx-aia-option");for(let p=0;p<l.length;p++){let c=l[p],u=p===t;c.setAttribute("aria-selected",String(u)),u?c.classList.add("magicx-aia-option--highlighted"):c.classList.remove("magicx-aia-option--highlighted")}}}function dt(o,e,t,i,r,n){let s=document.createElement("div");s.id=`${n}-option-${e}`,s.setAttribute("role","option"),s.setAttribute("aria-selected",String(e===t)),s.tabIndex=o.is_tappable?0:-1;let d=["magicx-aia-option"];e===t&&d.push("magicx-aia-option--highlighted"),o.is_tappable?d.push("magicx-aia-option--tappable"):d.push("magicx-aia-option--non-tappable"),s.className=d.join(" ");let a=document.createElement("div");a.className="magicx-aia-streaks",s.appendChild(a);let l=document.createElement("div");l.className="magicx-aia-streaks-vert",s.appendChild(l);let p=document.createElement("span");if(p.className="magicx-aia-option-content",p.textContent=o.icon?`${o.icon} ${o.text}`:o.text,o.tag){let c=document.createElement("span");c.className="magicx-aia-option-tag",c.textContent=o.tag,p.appendChild(c)}return s.appendChild(p),o.is_tappable&&s.addEventListener("click",()=>{s.classList.add("magicx-aia-option--pressed"),i(o),setTimeout(()=>s.classList.remove("magicx-aia-option--pressed"),400)}),s.addEventListener("mouseenter",()=>r(e)),s}function Re(o,e){let t=se(e.listboxId);return o.appendChild(t),{dropdown:t}}function ve(o,e,t){ae(o.dropdown,{suggestions:e.actionableSuggestions.length>0?[{...e.actionableSuggestions[0],options:e.filteredOptions}]:[],filteredOptions:e.filteredOptions,activeIndex:e.activeDropdownIndex,isOpen:e.isDropdownOpen,listboxId:t.listboxId,pills:e.actionableSuggestions,showPills:!0,onSelect:t.selectOption,onHighlight:i=>t.store.set({activeDropdownIndex:i}),onPillClick:t.setActivePill})}function Me(o,e,t,i,r){let n=o.querySelector(".magicx-aia-sizer-text"),s=o.querySelector(".magicx-aia-placeholder");if(i&&r){n&&(n.style.display="none"),s||(s=document.createElement("span"),s.className="magicx-aia-placeholder",o.insertBefore(s,o.firstChild)),s.style.display="",s.textContent=`${r} `,o.dataset.segmentKey="";return}s&&(s.style.display="none"),n||(n=document.createElement("span"),n.className="magicx-aia-sizer-text",o.insertBefore(n,o.firstChild)),n.style.display="",n.className=`magicx-aia-sizer-text${t?" magicx-aia-sizer-text--visible":""}`;let d=e.map(p=>`${p.type}:${p.value}`).join("\0"),a=o.dataset.segmentKey??"",l=o.dataset.newParamId??"";if(!(d===a&&(t??"")===l)){o.dataset.segmentKey=d,o.dataset.newParamId=t??"",n.innerHTML="";for(let p of e){let c=document.createElement("span");p.type==="completed"&&(p.param.id===t?c.className="magicx-aia-shimmer-revealed magicx-aia-shimmer-sweep":c.className="magicx-aia-segment magicx-aia-segment--completed"),c.textContent=p.value,n.appendChild(c)}e.length===0&&(n.textContent="\xA0")}}var pt='<svg width="18" height="18" viewBox="0 0 18 18" fill="none" role="img" aria-label="Submit"><path d="M9 14V4M9 4L4 9M9 4L14 9" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>';function ze(o,e){let{listboxId:t}=e,i=se(t);o.appendChild(i);let r=document.createElement("div");r.className="magicx-aia-input-wrapper",o.appendChild(r);let n=document.createElement("div");n.className="magicx-aia-editor",r.appendChild(n);let s=document.createElement("div");s.className="magicx-aia-sizer",s.setAttribute("aria-hidden","true"),n.appendChild(s);let d=document.createElement("span");s.appendChild(document.createTextNode(" ")),s.appendChild(d);let a=document.createElement("textarea");a.className="magicx-aia-textarea",a.rows=1,a.setAttribute("role","combobox"),a.setAttribute("aria-autocomplete","list"),a.setAttribute("aria-controls",t),n.appendChild(a);let l=document.createElement("button");return l.type="button",l.className="magicx-aia-submit",l.setAttribute("aria-label","Submit"),l.innerHTML=pt,r.appendChild(l),r.addEventListener("click",()=>a.focus()),a.addEventListener("input",()=>{let p=a.value,u=p.length>0&&p[0]!==p[0].toUpperCase()?p[0].toUpperCase()+p.slice(1):p;e.handleChange(u)}),a.addEventListener("keydown",p=>e.handleKeyDown(p)),l.addEventListener("click",p=>{p.stopPropagation();let c=e.store.get();if(!(!!c.text||c.completedParams.length>0)||!e.onSubmit)return;let{rawQuery:f,completedParams:m}=L(c.text,c.completedParams);e.onSubmit({query:c.text.trim(),raw_query:f,completed_params:m})}),a.focus(),{textarea:a,dropdown:i,sizer:s,submitButton:l,inlinePillContainer:d}}function ye(o,e,t){let{textarea:i,dropdown:r,sizer:n,submitButton:s,inlinePillContainer:d}=o,{pillPlacement:a,setActivePill:l,selectOption:p,store:c}=t;i.value!==e.text&&(i.value=e.text),e.placeholderText?i.placeholder=e.placeholderText:i.removeAttribute("placeholder"),i.setAttribute("aria-expanded",String(e.isDropdownOpen));let u=e.activeDropdownIndex>=0?`${t.listboxId}-option-${e.activeDropdownIndex}`:"";u?i.setAttribute("aria-activedescendant",u):i.removeAttribute("aria-activedescendant"),e.newParamId?i.classList.add("magicx-aia-textarea--hidden"):i.classList.remove("magicx-aia-textarea--hidden");let f=!!e.text||e.completedParams.length>0;s.disabled=!f,Me(n,e.segments,e.newParamId,!e.text,e.placeholderText),a==="inline"?re(d,e.actionableSuggestions,0,l):d.innerHTML="",ae(r,{suggestions:e.actionableSuggestions.length>0?[{...e.actionableSuggestions[0],options:e.filteredOptions}]:[],filteredOptions:e.filteredOptions,activeIndex:e.activeDropdownIndex,isOpen:e.isDropdownOpen,listboxId:t.listboxId,pills:e.actionableSuggestions,showPills:a==="dropdown",onSelect:p,onHighlight:m=>c.set({activeDropdownIndex:m}),onPillClick:l})}function He(o){let e=o,t=new Set;return{get:()=>e,set:i=>{let r=typeof i=="function"?i(e):i,n={...e,...r},s=e;e=n;for(let d of t)d(n,s)},subscribe:i=>(t.add(i),()=>{t.delete(i)})}}var we=!1;function Be(){if(we||typeof document>"u")return;if(document.querySelector("style[data-magicx-aia]")){we=!0;return}we=!0;let o=document.createElement("style");o.setAttribute("data-magicx-aia",""),o.textContent=ct,document.head.appendChild(o)}var ct="";var ut=0;function mt(){return`:ac-${++ut}:`}function Ne(){return{text:"",completedParams:[],suggestions:[],activeDropdownIndex:-1,newParamId:null,isLoading:!1,isReady:!1,error:null,segments:[],actionableSuggestions:[],filteredOptions:[],placeholderText:"",isDropdownOpen:!1,filterBase:0,filterInProgress:!1,pillTapped:!1,skipNextFetch:!1,lastRawQuery:""}}var le=class{constructor(e,t={}){this.store=He(Ne());this._listboxId=mt();this.modeController=null;this.unsubscribers=[];this.derivedInProgress=!1;this.domRefs=null;this.dropdownRefs=null;this.externalListeners=new Set;this.container=e,this.opts=t,this.renderMode=t.renderMode??"full",t.value!==void 0&&this.store.set({text:t.value}),t.completedParams!==void 0&&this.store.set({completedParams:t.completedParams}),this.pillsController=new ne(this.store),this.fetchController=new oe(this.store,()=>this.opts.apiConfig,()=>this.opts.optionOverrides,()=>this.opts.maskCompletedText,()=>this.opts.onError),this.keyboardController=new ie(this.store,{columns:t.columns??2,listboxId:this.listboxId,getOnSubmit:()=>this.opts.onSubmit,selectOption:i=>this.selectOption(i)}),this.unsubscribers.push(this.store.subscribe((i,r)=>{this.recomputeDerived(i,r)})),this.unsubscribers.push(this.store.subscribe((i,r)=>{i.text!==r.text&&this.opts.onChange?.(i.text),i.completedParams!==r.completedParams&&this.opts.onParamsChange?.(i.completedParams),this.opts.onStateChange?.(i)})),this.renderMode!=="headless"&&(Be(),this.setupContainer()),this.renderMode==="full"?this.buildAndRenderFull():this.renderMode==="dropdown"&&this.buildAndRenderDropdown(),this.fetchController.start()}focus(){this.domRefs?.textarea.focus()}reset(){this.store.set({...Ne()}),this.fetchController.doFetch("",[])}destroy(){this.fetchController.dispose(),this.modeController?.destroy(),this.newParamTimer&&clearTimeout(this.newParamTimer),this.suggestionRemovalTimer&&clearTimeout(this.suggestionRemovalTimer),this.externalListeners.clear();for(let e of this.unsubscribers)e();this.unsubscribers=[],this.domRefs=null,this.dropdownRefs=null,this.renderMode!=="headless"&&(this.container.innerHTML="")}setMode(e){this.modeController?.setMode(e)}setValue(e){this.store.set({text:e})}setCompletedParams(e){this.store.set({completedParams:e})}setActivePill(e){this.pillsController.setActivePill(e)}removeLastParam(){this.pillsController.removeLastParam()}clearNewParamId(){this.store.set({newParamId:null})}setActiveDropdownIndex(e){this.store.set({activeDropdownIndex:e})}handleTextChange(e){this.handleChange(e)}handleKeyDown(e){this.keyboardController.handleKeyDown(e)}subscribe(e){return this.externalListeners.add(e),()=>{this.externalListeners.delete(e)}}getState(){return this.store.get()}get listboxId(){return this._listboxId}get isReady(){return this.store.get().isReady}on(e,t){switch(e){case"submit":return this.opts.onSubmit=t,()=>{this.opts.onSubmit=void 0};case"error":return this.opts.onError=t,()=>{this.opts.onError=void 0};case"change":return this.opts.onChange=t,()=>{this.opts.onChange=void 0};case"paramsChange":return this.opts.onParamsChange=t,()=>{this.opts.onParamsChange=void 0};case"stateChange":return this.opts.onStateChange=t,()=>{this.opts.onStateChange=void 0};default:return()=>{}}}update(e){Object.assign(this.opts,e),e.mode!==void 0&&this.modeController?.setMode(e.mode),e.optionsPosition!==void 0&&(this.container.dataset.optionsPosition=e.optionsPosition),e.animations!==void 0&&(this.container.dataset.animations=e.animations?"on":"off"),e.pillPlacement!==void 0&&(this.container.dataset.pillPlacement=e.pillPlacement,this.store.set({})),e.dropdownTrigger!==void 0&&this.store.set({}),e.value!==void 0&&this.store.set({text:e.value}),e.completedParams!==void 0&&this.store.set({completedParams:e.completedParams})}selectOption(e){let t=this.store.get(),i=t.actionableSuggestions[0];if(!i)return;let r=t.filterBase,n=t.text.slice(0,r),s=n.length===0&&t.text.length===0,d=n.length===0&&t.text.length>0&&t.placeholderText.length>0&&t.placeholderText.toLowerCase().startsWith(t.text.toLowerCase());(s||d)&&t.placeholderText&&(n=`${t.placeholderText} `);let a=Pe(n,e.text);a>0&&(n=n.slice(0,n.length-a));let l=n.length>0&&n[n.length-1]!==" ",p=`${n}${l?" ":""}${e.text} `,c=(s||d)&&p.length>0?p[0].toUpperCase()+p.slice(1):p,u=c.toLowerCase().lastIndexOf(e.text.toLowerCase()),f=u>=0?c.slice(u,u+e.text.length):e.text,m={id:crypto.randomUUID(),placeholder:"",type:i.type,text:f,kind:e.kind,suggestionType:i.type,suggestionPlaceholder:i.text,options:i.options??[],metadata:e.metadata},S=t.actionableSuggestions.length-1;this.store.set(x=>({text:c,filterBase:c.length,completedParams:[...x.completedParams,m],newParamId:m.id,pillTapped:!1,activeDropdownIndex:-1,skipNextFetch:S>0})),this.suggestionRemovalTimer=window.setTimeout(()=>{this.store.set(x=>({suggestions:x.suggestions.filter(v=>v!==i)}))},400)}recomputeDerived(e,t){if(this.derivedInProgress)return;this.derivedInProgress=!0;let i=Ce(e.text,e.completedParams),r=e.suggestions.filter(v=>v.type!=="placeholder"),n=r[0],s=n?this.opts.optionOverrides?.[n.type]:void 0,d=Math.min(e.filterBase,e.text.length),l=e.lastRawQuery!==""||d>0?Q(e.text,d,e.filterInProgress):"",p=n?s?s(l.trim()):n.options??[]:[],c=ee(p,l),u=e.suggestions.filter(v=>v.type==="placeholder").map(v=>v.text).join(" ")||this.opts.placeholder||"",f=u.length>0,m=this.opts.dropdownTrigger??"auto",S=!1;m==="auto"?S=!e.isLoading&&c.length>0&&(!!e.text||e.pillTapped||!f):m==="manual"&&(S=!e.isLoading&&c.length>0&&e.pillTapped),this.store.set({segments:i,actionableSuggestions:r,filteredOptions:c,placeholderText:u,isDropdownOpen:S}),this.derivedInProgress=!1;let x=this.store.get();for(let v of this.externalListeners)v(x)}setupContainer(){this.container.classList.add("magicx-aia"),this.container.dataset.pillPlacement=this.renderMode==="dropdown"?"dropdown":this.opts.pillPlacement??"inline",this.container.dataset.optionsPosition=this.opts.optionsPosition??"below",this.container.dataset.animations=this.opts.animations??!0?"on":"off",this.modeController=new $(this.container,this.opts.mode??"auto")}buildAndRenderFull(){let e=this,t={store:this.store,listboxId:this.listboxId,get pillPlacement(){return e.opts.pillPlacement??"inline"},get onSubmit(){return e.opts.onSubmit},selectOption:i=>this.selectOption(i),setActivePill:i=>this.pillsController.setActivePill(i),handleKeyDown:i=>this.keyboardController.handleKeyDown(i),handleChange:i=>this.handleChange(i)};this.domRefs=ze(this.container,t),this.subscribeBatchedRender(()=>{this.domRefs&&ye(this.domRefs,this.store.get(),t)}),ye(this.domRefs,this.store.get(),t),this.subscribeNewParamTimer()}buildAndRenderDropdown(){let e={store:this.store,listboxId:this.listboxId,selectOption:t=>this.selectOption(t),setActivePill:t=>this.pillsController.setActivePill(t)};this.dropdownRefs=Re(this.container,e),this.subscribeBatchedRender(()=>{this.dropdownRefs&&ve(this.dropdownRefs,this.store.get(),e)}),ve(this.dropdownRefs,this.store.get(),e),this.subscribeNewParamTimer()}subscribeBatchedRender(e){let t=!1;this.unsubscribers.push(this.store.subscribe(()=>{t||(t=!0,queueMicrotask(()=>{t=!1,e()}))}))}subscribeNewParamTimer(){this.unsubscribers.push(this.store.subscribe((e,t)=>{e.newParamId&&e.newParamId!==t.newParamId&&(this.newParamTimer&&clearTimeout(this.newParamTimer),this.newParamTimer=window.setTimeout(()=>{this.store.set({newParamId:null})},650))}))}handleChange(e){let t=this.store.get();this.store.set({text:e,pillTapped:!1,activeDropdownIndex:-1});let{valid:i,invalid:r}=Ae(e,t.completedParams);r.length>0&&this.store.set(n=>({completedParams:i,suggestions:[...r.map(s=>({type:s.suggestionType,text:s.suggestionPlaceholder,required:!0,options:s.options})),...n.suggestions]}))}};function de({onSubmit:o,onError:e,optionOverrides:t,maskCompletedText:i,placeholder:r,apiConfig:n,columns:s=2,dropdownTrigger:d,value:a,completedParams:l,onChange:p,onParamsChange:c}){let u=(0,b.useRef)(null),[f,m]=(0,b.useState)(null),S=(0,b.useRef)(o);S.current=o;let x=(0,b.useRef)(e);x.current=e;let v=(0,b.useRef)(p);v.current=p;let C=(0,b.useRef)(c);C.current=c,(0,b.useEffect)(()=>{if(typeof document>"u")return;let y=new le(document.createElement("div"),{renderMode:"headless",apiConfig:n,optionOverrides:t,maskCompletedText:i,placeholder:r,columns:s,dropdownTrigger:d,value:a,completedParams:l,onSubmit:(...h)=>S.current?.(...h),onError:(...h)=>x.current?.(...h),onChange:(...h)=>v.current?.(...h),onParamsChange:(...h)=>C.current?.(...h)});u.current=y,m(y.getState());let A=y.subscribe(h=>m(h));return()=>{A(),y.destroy(),u.current===y&&(u.current=null)}},[]);let g=u.current,I=(0,b.useCallback)(()=>{},[]);(0,b.useEffect)(()=>{a!==void 0&&g?.setValue(a)},[a,g]),(0,b.useEffect)(()=>{l!==void 0&&g?.setCompletedParams(l)},[l,g]);let j=JSON.stringify(n??null),T=(0,b.useRef)(t),z=(0,b.useRef)(0);if(t!==T.current){let y=T.current,A=t,h=Object.keys(y??{}),D=Object.keys(A??{});(h.length!==D.length||D.some(X=>!y?.[X]||A[X]!==y[X]))&&z.current++,T.current=t}(0,b.useEffect)(()=>{g?.update({apiConfig:n,optionOverrides:t,dropdownTrigger:d})},[j,z.current,d,g]);let pe=(0,b.useCallback)(y=>{if(!g)return;let A=y.target.value,D=A.length>0&&!y.nativeEvent?.isComposing&&A[0]!==A[0].toUpperCase()?A[0].toUpperCase()+A.slice(1):A;g.handleTextChange(D)},[g]),ce=(0,b.useCallback)(y=>{g?.handleKeyDown(y.nativeEvent)},[g]),K=(0,b.useCallback)(y=>g?.setActivePill(y),[g]),R=(0,b.useCallback)(()=>g?.removeLastParam(),[g]),G=(0,b.useCallback)(()=>g?.clearNewParamId(),[g]),E=(0,b.useCallback)(()=>g?.reset(),[g]),ue=(0,b.useCallback)(y=>g?.selectOption(y),[g]),H=(0,b.useCallback)(y=>g?.setActiveDropdownIndex(y),[g]);if(!g)return{completedParams:l??[],suggestionPills:[],setActivePill:I,removeLastParam:I,segments:[],newParamId:null,clearNewParamId:I,suggestions:[],activeIndex:-1,isReady:!1,isLoading:!0,error:null,inputProps:{value:a??"",placeholder:r,onChange:I,onKeyDown:I,role:"combobox","aria-expanded":!1,"aria-activedescendant":void 0,"aria-autocomplete":"list","aria-controls":""},reset:I,dropdownProps:{suggestions:[],activeIndex:-1,onSelect:I,onHighlight:I,isOpen:!1,id:"",pills:[],onPillClick:I}};let w=f??g.getState(),F=a!==void 0?a:w.text,W=l!==void 0?l:w.completedParams,q=w.actionableSuggestions,V=q[0],me=w.filteredOptions,ge=w.activeDropdownIndex>=0?`${g.listboxId}-option-${w.activeDropdownIndex}`:void 0;return{completedParams:W,suggestionPills:q,setActivePill:K,removeLastParam:R,segments:w.segments,newParamId:w.newParamId,clearNewParamId:G,suggestions:w.suggestions,activeIndex:w.activeDropdownIndex,isReady:w.isReady,isLoading:w.isLoading,error:w.error,inputProps:{value:F,placeholder:w.placeholderText||void 0,onChange:pe,onKeyDown:ce,role:"combobox","aria-expanded":w.isDropdownOpen,"aria-activedescendant":ge,"aria-autocomplete":"list","aria-controls":g.listboxId},reset:E,dropdownProps:{suggestions:V?[{...V,options:me}]:[],activeIndex:w.activeDropdownIndex,onSelect:ue,onHighlight:H,isOpen:w.isDropdownOpen,id:g.listboxId,pills:q,onPillClick:K}}}var _=require("react/jsx-runtime");function gt(o){return o!=="auto"?o:typeof window>"u"||window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}var $e=(0,P.forwardRef)(function({onSubmit:e,onError:t,optionOverrides:i,maskCompletedText:r,placeholder:n,className:s,apiConfig:d,columns:a,pillPlacement:l="inline",mode:p="auto",optionsPosition:c="below",animations:u=!0,dropdownTrigger:f,value:m,completedParams:S,onChange:x,onParamsChange:v},C){let g=(0,P.useRef)(null),I=(0,P.useRef)(null),j=(0,P.useRef)(()=>{}),T=(0,P.useRef)(null);(0,P.useEffect)(()=>{I.current?.focus()},[]),(0,P.useEffect)(()=>{let h=g.current;if(h)return T.current?T.current.setMode(p):T.current=new $(h,p),()=>{T.current?.destroy(),T.current=null}},[p]);let{completedParams:z,suggestionPills:pe,setActivePill:ce,segments:K,newParamId:R,clearNewParamId:G,inputProps:E,dropdownProps:ue,reset:H}=de({onSubmit:h=>j.current(h),onError:t,optionOverrides:i,maskCompletedText:r,placeholder:n,apiConfig:d,columns:a,dropdownTrigger:f,value:m,completedParams:S,onChange:x,onParamsChange:v});(0,P.useEffect)(()=>{if(!R)return;let h=window.setTimeout(()=>G(),650);return()=>window.clearTimeout(h)},[R,G]),(0,P.useImperativeHandle)(C,()=>({focus:()=>I.current?.focus(),reset:H,setMode:h=>T.current?.setMode(h)}),[H]);let w=()=>{I.current?.focus()},F=!!E.value||z.length>0,W=(0,P.useCallback)(()=>{if(!F)return;let{rawQuery:h,completedParams:D}=L(E.value,z);e({query:E.value.trim(),raw_query:h,completed_params:D}),H()},[F,E.value,z,e,H]);j.current=W;let{onChange:q,placeholder:V,...me}=E,ge=!E.value,y=l==="inline",A=l==="dropdown";return(0,_.jsxs)("div",{ref:g,className:`magicx-aia ${k.container} ${s??""}`,"data-pill-placement":l,"data-options-position":c,"data-animations":u?"on":"off","data-mode":gt(p),children:[(0,_.jsx)(Z,{...ue,showPills:A}),(0,_.jsxs)("div",{className:k.inputWrapper,onClick:w,children:[(0,_.jsxs)("div",{className:k.editorArea,children:[(0,_.jsxs)("div",{className:k.sizerContent,"aria-hidden":"true",children:[ge&&V?(0,_.jsxs)("span",{className:k.placeholderText,children:[V," "]}):(0,_.jsxs)("span",{className:`${k.sizerText} ${R?k.sizerTextVisible:""}`,children:[K.map((h,D)=>{if(h.type==="completed"&&h.param.id===R){let qe=`${k.shimmerRevealed} ${k.shimmerSweep}`;return(0,_.jsx)("span",{className:qe,children:h.value},`${D}-${h.type}`)}return(0,_.jsx)("span",{children:h.value},`${D}-${h.type}`)}),K.length===0&&"\xA0"]})," ",y&&(0,_.jsx)(Y,{pills:pe,activePillIndex:0,onSelectPill:ce})]}),(0,_.jsx)("textarea",{ref:I,className:`${k.textarea} ${R?k.textareaHidden:""}`,rows:1,onChange:q,...me})]}),(0,_.jsx)("button",{type:"button",className:k.submitButton,disabled:!F,onClick:h=>{h.stopPropagation(),W()},"aria-label":"Submit",children:(0,_.jsx)("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",role:"img","aria-label":"Submit",children:(0,_.jsx)("path",{d:"M9 14V4M9 4L4 9M9 4L14 9",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})]})]})});function ht(o){let e=o.replace(/^#/,""),t=e.length===3?e.split("").map(c=>c+c).join(""):e,i=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,n=Number.parseInt(t.slice(4,6),16)/255,s=Math.max(i,r,n),d=Math.min(i,r,n),a=(s+d)/2,l=0,p=0;if(s!==d){let c=s-d;p=a>.5?c/(2-s-d):c/(s+d),s===i?l=(r-n)/c+(r<n?6:0):s===r?l=(n-i)/c+2:l=(i-r)/c+4,l*=60}return{h:Math.round(l),s:Math.round(p*100),l:Math.round(a*100)}}var Ke=o=>Math.max(0,Math.min(100,o));function Fe(o){let{h:e,s:t,l:i}=ht(o),r=i<=50?1:-1,n=Ke(i+r*20),s=Ke(i+r*10),d=(a,l,p,c)=>`hsla(${a}, ${l}%, ${p}%, ${c})`;return`linear-gradient(${d(e,t,i,1)}, ${d(e,t,i,1)}) padding-box, linear-gradient(105deg, ${d(0,0,n,1)}, ${d(0,0,s,.8)} 5%, ${d(0,0,0,0)} 50%, ${d(0,0,s,.8)} 95%, ${d(0,0,n,1)} 100%) border-box`}0&&(module.exports={AIAutocomplete,AIAutocompleteDropdown,buildGlassBackground,useAIAutocomplete});
|
|
548
567
|
//# sourceMappingURL=index.js.map
|