@magicx-eng/ai-autocomplete-react 0.36.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -2326,5 +2326,5 @@ import{buildSubmitResult as kn,cellDay as Cn,cellIso as Pn,DATE_RANGE_META_END a
2326
2326
  );
2327
2327
  cursor: default;
2328
2328
  }
2329
- `,document.head.appendChild(e)}var Ft={submitButton:"aia-submitButton-otz7H"};import{jsx as ct}from"react/jsx-runtime";function Bt({disabled:e,onClick:o,label:t=ci().submit}){return ct("button",{type:"button","data-aia-submit":"",className:Ft.submitButton,disabled:e,onClick:a=>{a.stopPropagation(),o()},"aria-label":t,children:ct("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",role:"img","aria-label":t,children:ct("path",{d:"M9 14V4M9 4L4 9M9 4L14 9",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})}import{AIAutocomplete as pi,dateSelectionFor as hi,identifiedParamLabel as ui}from"@magicx-eng/ai-autocomplete-vanilla";import{useCallback as _t,useEffect as Le,useRef as B,useState as gi}from"react";import{useRef as Ht}from"react";function Kt(e){let o=Ht(e);o.current=e;let t=Object.keys(e??{}).sort().join("\0"),a=Ht({key:"",overrides:void 0});if(a.current.key!==t){let n={};for(let r of Object.keys(e??{})){let i=(p,l,v)=>{let P=o.current?.[r];return P?P(p,l,v):[]};n[r]=i}a.current={key:t,overrides:e?n:void 0}}return{overrides:a.current.overrides,key:t}}import{useRef as Gt}from"react";function Wt(e){let o=Gt(e);o.current=e;let t=Gt(null);t.current===null&&(t.current={fetch:(n,r)=>{let i=o.current;return i?i.fetch(n,r):Promise.reject(new Error("products config removed"))},transform:n=>o.current?.transform(n)??[],get limit(){return o.current?.limit}});let a=e!==void 0;return{config:a?t.current:void 0,enabled:a}}var mi={text:"",completedParams:[],identifiedParams:[],skippedParams:[],pendingSpan:null,suggestions:[],products:[],customFields:null,optionSearch:null,activeDropdownIndex:-1,newParamId:null,isLoading:!0,isReady:!1,error:null,segments:[],actionableSuggestions:[],filteredOptions:[],dropdownLoading:!0,dropdownOptions:[],skeletonOptions:null,skeletonSuggestion:null,dropdownSuggestion:null,skeletonRequested:!1,skeletonExiting:!1,activeFormatType:"options",dateView:null,dateRangeStart:null,placeholderText:"",optionQuery:"",isSearchingOptions:!1,isDropdownOpen:!1,isActivePillSelected:!1,filterBase:0,filterInProgress:!1,pillTapped:!1,skipNextFetch:!1,lastRawQuery:"",isFocused:!1,editingParam:null,editingIdentified:null,editingAnchor:null,editingTail:null,caretOffset:null,inSelectionAnimation:!1,dateViewMonth:null,pendingRangeStart:null};function pt({onSubmit:e,onResult:o,onError:t,optionOverrides:a,maskCompletedText:n,apiConfig:r,additionalContext:i,language:p,productId:l,visitorId:v,columns:P=2,dropdownTrigger:C,optionsPosition:g,closeDropdownOnBlur:b,showNonTappableOptions:S,showOptionIcons:D,showOptionImages:L,showOptionCounts:H,showSkipButton:O,showProducts:I,productImageFallback:F="image",onFocus:z,onBlur:k,value:M,completedParams:K,onChange:N,onParamsChange:te,products:le,mapProducts:W,onProductSelect:de,source:ke,setCursor:ce}){let u=B(null),[Ce,ae]=gi(null),pe=B(e);pe.current=e;let ie=B(o);ie.current=o;let he=B(t);he.current=t;let q=B(N);q.current=N;let V=B(te);V.current=te;let s=B(z);s.current=z;let m=B(k);m.current=k;let f=B(ce);f.current=ce;let w=B(de);w.current=de;let y=B(v);y.current=v;let E=B(()=>{let d=y.current;return typeof d=="function"?d():d}).current,c=Wt(le),G=B(W);G.current=W;let j=B((d,_)=>{let T=G.current;return T?T(d,_):d}).current,Q=W?j:void 0,ue=Kt(a);Le(()=>{if(typeof document>"u")return;let d=new pi(document.createElement("div"),{renderMode:"headless",apiConfig:r,additionalContext:i,language:p,productId:l,visitorId:E,optionOverrides:ue.overrides,maskCompletedText:n,columns:P,dropdownTrigger:C,optionsPosition:g,closeDropdownOnBlur:b,showNonTappableOptions:S,showProducts:I,source:ke,value:M,completedParams:K,onSubmit:(...T)=>pe.current?.(...T),onResult:(...T)=>ie.current?.(...T),onError:(...T)=>he.current?.(...T),onChange:(...T)=>q.current?.(...T),onParamsChange:(...T)=>V.current?.(...T),onFocus:()=>s.current?.(),onBlur:()=>m.current?.(),onProductSelect:T=>w.current?.(T),setCursor:T=>f.current?.(T),products:c.config,mapProducts:Q});u.current=d,ae(d.getState());let _=d.subscribe(T=>ae(T));return()=>{_(),d.destroy(),u.current===d&&(u.current=null)}},[]),Le(()=>{M!==void 0&&u.current?.setValue(M)},[M]),Le(()=>{K!==void 0&&u.current?.setCompletedParams(K)},[K]);let ge=JSON.stringify(r??null),me;try{me=JSON.stringify(i??null)}catch{me="[unstringifiable]"}Le(()=>{u.current?.update({apiConfig:r,additionalContext:i,language:p,productId:l,optionOverrides:ue.overrides,dropdownTrigger:C,optionsPosition:g,closeDropdownOnBlur:b,showNonTappableOptions:S,showProducts:I})},[ge,me,p,l,ue.key,C,g,b,S,I]);let fe=B(!1);Le(()=>{if(!fe.current){fe.current=!0;return}u.current?.update({products:c.config})},[c.enabled]),Le(()=>{u.current?.update({mapProducts:Q})},[Q]);let be=B(null);be.current===null&&(be.current={handleTextChange:d=>u.current?.handleTextChange(d),handleKeyDown:d=>{let _="nativeEvent"in d?d.nativeEvent:d;u.current?.handleKeyDown(_)},setFocused:d=>u.current?.setFocused(d),startEditingParam:d=>u.current?.startEditingParam(d),exitEditMode:()=>u.current?.exitEditMode(),handleCaretAfterInput:d=>u.current?.handleCaretAfterInput(d),handleCaretMove:d=>u.current?.handleCaretMove(d),replaceEditingRange:d=>u.current?.replaceEditingRange(d)??!1,setActivePill:d=>u.current?.setActivePill(d),skipActivePill:()=>u.current?.skipActivePill(),removeLastParam:()=>u.current?.removeLastParam(),clearNewParamId:()=>u.current?.clearNewParamId(),reset:()=>u.current?.reset(),refreshProducts:()=>u.current?.refreshProducts(),recordSubmit:d=>u.current?.recordSubmit(d),selectOption:d=>u.current?.selectOption(d),selectProduct:d=>u.current?.selectProduct(d),setActiveDropdownIndex:d=>u.current?.setActiveDropdownIndex(d),clearHighlight:d=>u.current?.clearHighlight(d),showPreviousMonth:()=>u.current?.showPreviousMonth(),showNextMonth:()=>u.current?.showNextMonth(),handleFocus:()=>u.current?.setFocused(!0),handleBlur:()=>u.current?.setFocused(!1)});let x=be.current,we=_t(d=>{let _=d.target.value,tt=_.length>0&&!d.nativeEvent?.isComposing&&_[0]!==_[0].toUpperCase()?_[0].toUpperCase()+_.slice(1):_;u.current?.handleTextChange(tt)},[]),ve=_t(d=>{u.current?.handleKeyDown(d.nativeEvent)},[]),oe=u.current,h=Ce??mi,Te=M!==void 0?M:h.text,Ae=K!==void 0?K:h.completedParams,X=h.actionableSuggestions,Ne=X[0],Pe=oe?.listboxId??"",_e=h.activeDropdownIndex>=0&&oe?`${Pe}-option-${h.activeDropdownIndex}`:void 0,xe=h.editingParam,Se=h.editingIdentified,Fe=xe?{parameter:xe.suggestionParameter,text:xe.suggestionPlaceholder,required:!0,options:xe.options}:Se?{parameter:Se.parameter,text:ui(Se.parameter),required:!0,options:[]}:null,Ue=h.dropdownSuggestion??Fe??Ne,et=Fe?[Fe]:X,Be=hi(h),qe=!oe||h.dropdownLoading;return{completedParams:Ae,skippedParams:h.skippedParams,identifiedParams:h.identifiedParams,suggestionPills:X,setActivePill:x.setActivePill,skipActivePill:x.skipActivePill,removeLastParam:x.removeLastParam,segments:h.segments,newParamId:h.newParamId,clearNewParamId:x.clearNewParamId,suggestions:h.suggestions,activeIndex:h.activeDropdownIndex,isReady:h.isReady,isLoading:qe,isFocused:h.isFocused,isDropdownOpen:h.isDropdownOpen,isActivePillSelected:h.isActivePillSelected,placeholderText:h.placeholderText,listboxId:Pe,error:h.error,products:h.products,customFields:h.customFields,selectProduct:x.selectProduct,handleTextChange:x.handleTextChange,handleKeyDown:x.handleKeyDown,setFocused:x.setFocused,editingParam:xe,editingIdentified:Se,editingAnchor:h.editingAnchor,caretOffset:h.caretOffset,startEditingParam:x.startEditingParam,exitEditMode:x.exitEditMode,handleCaretAfterInput:x.handleCaretAfterInput,handleCaretMove:x.handleCaretMove,replaceEditingRange:x.replaceEditingRange,inputProps:{value:Te,placeholder:h.placeholderText||void 0,onChange:we,onKeyDown:ve,onFocus:x.handleFocus,onBlur:x.handleBlur,role:"combobox","aria-expanded":h.isDropdownOpen,"aria-activedescendant":_e,"aria-autocomplete":"list","aria-controls":Pe},reset:x.reset,refreshProducts:x.refreshProducts,recordSubmit:x.recordSubmit,dropdownProps:{suggestions:Ue?[{...Ue,options:h.dropdownOptions}]:[],activeIndex:h.activeDropdownIndex,onSelect:x.selectOption,onHighlight:x.setActiveDropdownIndex,onUnhighlight:x.clearHighlight,isOpen:h.isDropdownOpen,id:Pe,pills:et,activeSelected:h.isActivePillSelected,onPillClick:x.setActivePill,onSkip:x.skipActivePill,showSkipButton:(O??!0)&&!xe&&!Se,showOptionIcons:D??!0,showOptionImages:L??!0,showOptionCounts:H??!0,skipDisabled:h.inSelectionAnimation,isLoading:qe,skeletonExiting:h.skeletonExiting,isInputEmpty:Te.trim().length===0,language:p,products:h.products,productImageFallback:F,onProductSelect:x.selectProduct,onProductFocusChange:x.setFocused,formatType:h.activeFormatType,dateView:h.dateView,selectedDateIso:Be.selectedIso,selectedDateRange:Be.selectedRange,dateRangeStart:Be.rangeStart,onPreviousMonth:x.showPreviousMonth,onNextMonth:x.showNextMonth,optionsPosition:g??"below"}}}import{chipIdFromTap as fi,extractPlainText as Ut,getCursorOffset as qt,keepCaretOnChip as bi,plainTextLength as wi,renderEditableContent as vi,setCursorOffset as jt}from"@magicx-eng/ai-autocomplete-vanilla";import{useCallback as $,useEffect as Xe,useLayoutEffect as ht,useRef as ze}from"react";var Je;function xi(){if(Je!==void 0)return Je;if(typeof document>"u")return!1;let e=document.createElement("div");return e.setAttribute("contenteditable","plaintext-only"),Je=e.contentEditable==="plaintext-only",Je}function Qt(e){let{segments:o,showChipIcons:t=!0,showChipImages:a=!0,newParamId:n,editingParam:r,editingIdentified:i,editingAnchor:p,caretOffset:l,placeholderText:v,isFocused:P,isDropdownOpen:C,listboxId:g,activeDescendantId:b,autoFocus:S,handleTextChange:D,handleKeyDown:L,handleCaretAfterInput:H,handleCaretMove:O,startEditingParam:I,replaceEditingRange:F,setFocused:z}=e,k=ze(null),M=ze(!1),K=ze(""),N=ze(""),te=ze(null),le=ze(0);te.current=l,Xe(()=>{if(!S)return;let s=k.current;if(!s)return;document.activeElement===s?z(!0):s.focus();let m=s.ownerDocument??document,f=m.getSelection(),w=f&&f.rangeCount>0&&s.contains(f.anchorNode);if(f&&!w){let y=m.createRange();y.selectNodeContents(s),y.collapse(!0),f.removeAllRanges(),f.addRange(y)}},[S,z]),Xe(()=>{let s=k.current;if(!s)return;let m=s.ownerDocument??document,f=()=>{let w=m.getSelection();if(!w||w.rangeCount===0||!w.anchorNode||!s.contains(w.anchorNode))return;let y=w.anchorNode,E=y.nodeType===Node.ELEMENT_NODE?y:y.parentElement,G=(w.isCollapsed?E?.closest("strong[data-param-id]"):null)?.dataset.paramId??null,j=r?.id??i?.id??null;if(G&&G!==j){I(G);return}performance.now()-le.current<50||O(qt(s))};return m.addEventListener("selectionchange",f),()=>m.removeEventListener("selectionchange",f)},[r,i,I,O]),Xe(()=>{let s=k.current;if(!s)return;let m=f=>{let w=fi(s,f.target);w&&(I(w),bi(s,w))};return s.addEventListener("click",m),()=>s.removeEventListener("click",m)},[I]),ht(()=>{let s=k.current;s&&vi({input:s,segments:o,newParamId:n,editingParamId:r?.id??null,placeholderText:v??"",isFocused:P,showChipIcons:t,showChipImages:a})},[o,n,r,v,P,t,a]),ht(()=>{let s=K.current,m=n??"";if(K.current=m,!m||m===s)return;let f=k.current;if(!f)return;f.focus();let w=te.current??wi(f);jt(f,w)},[n]),ht(()=>{let s=N.current,m=r?.id??"";if(N.current=m,!m||m===s||p==null)return;let f=k.current;f&&jt(f,p)},[r,p]);let W=$(()=>{if(M.current)return;let s=k.current;if(!s)return;let m=Ut(s),w=m.length>0&&m[0]!==m[0].toUpperCase()?m[0].toUpperCase()+m.slice(1):m;D(w)},[D]),de=$(()=>{le.current=performance.now(),W();let s=k.current;s&&H(qt(s))},[W,H]);Xe(()=>{let s=k.current;if(!s)return;let m=f=>{let w=f,y=w.inputType;if(y==="insertParagraph"||y==="insertLineBreak"||y==="insertFromDrop"){f.preventDefault();return}if(y.startsWith("insert")||y.startsWith("delete")){let E=y.startsWith("delete")?"":w.data??"";F(E)&&f.preventDefault()}};return s.addEventListener("beforeinput",m),()=>s.removeEventListener("beforeinput",m)},[F]);let ke=$(()=>{M.current=!0},[]),ce=$(()=>{M.current=!1,W()},[W]),u=$(s=>{s.preventDefault();let m=k.current;if(!m)return;let f=(s.clipboardData.getData("text/plain")??"").replace(/\r?\n/g," ");if(!f)return;let w=m.ownerDocument??document,y=w.getSelection();if(!y||y.rangeCount===0)return;let E=y.getRangeAt(0);if(!m.contains(E.startContainer))return;E.deleteContents();let c=w.createTextNode(f);E.insertNode(c),E.setStartAfter(c),E.collapse(!0),y.removeAllRanges(),y.addRange(E),W()},[W]),Ce=$(s=>L(s),[L]),ae=$(()=>z(!0),[z]),pe=$(()=>z(!1),[z]),ie=$(()=>k.current?.focus(),[]),he=$(()=>k.current?.blur(),[]),q=$(()=>{let s=k.current;return s?Ut(s):""},[]),V=xi()?"plaintext-only":"true";return{inputRef:k,editorProps:{ref:k,contentEditable:V,suppressContentEditableWarning:!0,tabIndex:0,role:"combobox","aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":g,"aria-expanded":C,"aria-activedescendant":b,spellCheck:!0,enterKeyHint:"send",onInput:de,onKeyDown:Ce,onCompositionStart:ke,onCompositionEnd:ce,onPaste:u,onFocus:ae,onBlur:pe},getPlainText:q,focus:ie,blur:he}}import{jsx as Me,jsxs as gt}from"react/jsx-runtime";function Ti(e){return e!=="auto"?e:typeof window>"u"||window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}var Ai=yi(function({onSubmit:o,onResult:t,onError:a,optionOverrides:n,maskCompletedText:r,className:i,apiConfig:p,additionalContext:l,language:v,productId:P,visitorId:C,columns:g,pillPlacement:b="dropdown",mode:S="auto",optionsPosition:D="below",animations:L=!0,dropdownTrigger:H,closeDropdownOnBlur:O,showNonTappableOptions:I,showOptionIcons:F=!0,showChipIcons:z=!0,showChipImages:k=!0,showOptionImages:M=!0,showOptionCounts:K=!0,showSkipButton:N,showProducts:te,productsLayout:le,productImageFallback:W,autoFocus:de=!0,onFocus:ke,onBlur:ce,value:u,completedParams:Ce,onChange:ae,onParamsChange:pe,products:ie,mapProducts:he,onProductSelect:q,submitButton:V,resetOnSubmit:s=!0},m){let f=We(null),w=We(null),y=We(()=>{}),E=We(null),c=We(null);Yt(()=>{let A=f.current;if(A)return E.current?E.current.setMode(S):E.current=new Si(A,S),()=>{E.current?.destroy(),E.current=null}},[S]);let G=ut(A=>{let J=c.current?.current;J&&(J.focus(),Ii(J,A))},[]),{completedParams:j,skippedParams:Q,identifiedParams:ue,isReady:ge,customFields:me,suggestionPills:fe,setActivePill:be,skipActivePill:x,segments:we,newParamId:ve,clearNewParamId:oe,placeholderText:h,isFocused:Te,isDropdownOpen:Ae,isActivePillSelected:X,isLoading:Ne,activeIndex:Pe,listboxId:_e,handleTextChange:xe,handleKeyDown:Se,setFocused:Fe,editingParam:Ue,editingIdentified:et,editingAnchor:Be,caretOffset:qe,startEditingParam:d,handleCaretAfterInput:_,handleCaretMove:T,replaceEditingRange:tt,dropdownProps:Zt,reset:je,refreshProducts:mt,recordSubmit:ft}=pt({onSubmit:A=>y.current(A),onResult:t,onError:a,optionOverrides:n,maskCompletedText:r,apiConfig:p,additionalContext:l,language:v,productId:P,visitorId:C,columns:g,dropdownTrigger:H,optionsPosition:D,closeDropdownOnBlur:O,showNonTappableOptions:I,showOptionIcons:F,showOptionImages:M,showOptionCounts:K,showSkipButton:N,showProducts:te,onFocus:ke,onBlur:ce,value:u,completedParams:Ce,onChange:ae,onParamsChange:pe,products:ie,mapProducts:he,onProductSelect:q,source:"full-sdk",setCursor:G});Yt(()=>{if(!ve)return;let A=window.setTimeout(()=>oe(),650);return()=>window.clearTimeout(A)},[ve,oe]);let Vt=Pe>=0?`${_e}-option-${Pe}`:void 0,{inputRef:at,editorProps:$t,focus:Qe,blur:bt,getPlainText:wt}=Qt({segments:we,newParamId:ve,editingParam:Ue,editingIdentified:et,editingAnchor:Be,caretOffset:qe,placeholderText:h,isFocused:Te,showChipIcons:z,showChipImages:k,isDropdownOpen:Ae,listboxId:_e,activeDescendantId:Vt,autoFocus:de,handleTextChange:xe,handleKeyDown:Se,handleCaretAfterInput:_,handleCaretMove:T,startEditingParam:d,replaceEditingRange:tt,setFocused:Fe});c.current=at,Ci(()=>{let A=w.current,J=at.current;if(!A||!J)return;let He=()=>{let xt=A.firstElementChild;if(!xt)return;let ta=xt.getBoundingClientRect(),aa=J.getBoundingClientRect();ta.top>=aa.bottom-2?A.setAttribute("data-aia-pill-wrapped",""):A.removeAttribute("data-aia-pill-wrapped")};He();let vt=new ResizeObserver(He);return vt.observe(J),()=>vt.disconnect()},[we,fe.length,Ne,at]),ki(m,()=>({focus:Qe,blur:bt,reset:je,refreshProducts:mt,setMode:A=>E.current?.setMode(A),skipActivePill:x}),[Qe,bt,je,mt,x]);let Ye=!!we.length||j.length>0,it=ut(A=>{if(!Ye)return;let J=wt(),He=Pi(J,j,Q,{identifiedParams:ue,isReady:ge,customFields:me});A&&ft(He),o(He),s&&je()},[ft,s,Ye,j,Q,ue,ge,me,o,je,wt]);y.current=()=>it(!1);let Xt=ut(A=>{A.target?.closest("[data-aia-pill]")||Qe()},[Qe]),Jt=b==="inline",ea=b==="dropdown";return gt("div",{ref:f,className:`magicx-aia ${Ie.container} ${i??""}`,"data-pill-placement":b,"data-options-position":D,"data-animations":L?"on":"off","data-mode":Ti(S),children:[Me(dt,{...Zt,showPills:ea,productsLayout:le,productImageFallback:W}),gt("div",{className:Ie.inputWrapper,"data-aia-input-wrapper":"",onClick:Xt,children:[gt("div",{className:Ie.editorArea,"data-aia-editor":"",children:[Me("div",{...$t,className:Ie.input,"data-aia-input":""}),Jt&&(Ne||fe.length>0)&&Me("span",{ref:w,className:Ie.pillListContainer,"data-aia-pill-list-container":"",children:Me(Ve,{pills:fe,activePillIndex:0,activeSelected:X,onSelectPill:be,loading:Ne})})]}),V===null?null:V===void 0?Me(Bt,{disabled:!Ye,onClick:()=>it(!0),label:Ei(v).submit}):Me("span",{"data-aia-submit":"","data-aia-submit-slot":"",className:Ie.submitSlot,onClick:A=>{Ye&&(A.stopPropagation(),it(!0))},children:V})]})]})});export{Ai as AIAutocomplete,dt as AIAutocompleteDropdown,Sn as DATE_RANGE_META_END,In as DATE_RANGE_META_START,En as DEFAULT_OPTION_COUNT_UNIT,Hn as PRODUCT_PATH_PREFIX,Zn as WEEKDAY_LABELS,kn as buildSubmitResult,Cn as cellDay,Pn as cellIso,Tn as dateCellMarks,An as formatDate,Rn as formatDateRange,On as formatOptionCount,Dn as isoDate,Ln as monthLabel,zn as optionCountLabel,Mn as optionHasImage,Nn as optionImageSources,Fn as optionImageSrc,Bn as optionLabel,Kn as parseDate,Gn as parseLooseDate,Wn as parseLooseDateRange,_n as productFromMatchedItem,Un as productImageSources,qn as productsFromCustomFields,jn as sanitizeOptionIconSvg,Qn as selectedRangeFor,pt as useAIAutocomplete,Yn as visibleDateRange,Vn as withSkippedParams};
2329
+ `,document.head.appendChild(e)}var Ft={submitButton:"aia-submitButton-otz7H"};import{jsx as ct}from"react/jsx-runtime";function Bt({disabled:e,onClick:o,label:t=ci().submit}){return ct("button",{type:"button","data-aia-submit":"",className:Ft.submitButton,disabled:e,onClick:a=>{a.stopPropagation(),o()},"aria-label":t,children:ct("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",role:"img","aria-label":t,children:ct("path",{d:"M9 14V4M9 4L4 9M9 4L14 9",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})}import{AIAutocomplete as pi,dateSelectionFor as hi,identifiedParamLabel as ui}from"@magicx-eng/ai-autocomplete-vanilla";import{useCallback as _t,useEffect as Le,useRef as B,useState as gi}from"react";import{useRef as Ht}from"react";function Kt(e){let o=Ht(e);o.current=e;let t=Object.keys(e??{}).sort().join("\0"),a=Ht({key:"",overrides:void 0});if(a.current.key!==t){let n={};for(let r of Object.keys(e??{})){let i=(p,l,v)=>{let P=o.current?.[r];return P?P(p,l,v):[]};n[r]=i}a.current={key:t,overrides:e?n:void 0}}return{overrides:a.current.overrides,key:t}}import{useRef as Gt}from"react";function Wt(e){let o=Gt(e);o.current=e;let t=Gt(null);t.current===null&&(t.current={fetch:(n,r)=>{let i=o.current;return i?i.fetch(n,r):Promise.reject(new Error("products config removed"))},transform:n=>o.current?.transform(n)??[],get limit(){return o.current?.limit}});let a=e!==void 0;return{config:a?t.current:void 0,enabled:a}}var mi={text:"",completedParams:[],identifiedParams:[],skippedParams:[],pendingSpan:null,suggestions:[],products:[],customFields:null,optionSearch:null,activeDropdownIndex:-1,newParamId:null,isLoading:!0,isReady:!1,error:null,segments:[],actionableSuggestions:[],filteredOptions:[],dropdownLoading:!0,dropdownOptions:[],skeletonOptions:null,skeletonSuggestion:null,dropdownSuggestion:null,skeletonRequested:!1,skeletonExiting:!1,activeFormatType:"options",dateView:null,dateRangeStart:null,placeholderText:"",optionQuery:"",isSearchingOptions:!1,isDropdownOpen:!1,isActivePillSelected:!1,filterBase:0,filterInProgress:!1,pillTapped:!1,skipNextFetch:!1,lastRawQuery:"",isFocused:!1,dropdownHeld:!1,editingParam:null,editingIdentified:null,editingAnchor:null,editingTail:null,caretOffset:null,inSelectionAnimation:!1,dateViewMonth:null,pendingRangeStart:null};function pt({onSubmit:e,onResult:o,onError:t,optionOverrides:a,maskCompletedText:n,apiConfig:r,additionalContext:i,language:p,productId:l,visitorId:v,columns:P=2,dropdownTrigger:C,optionsPosition:g,closeDropdownOnBlur:b,showNonTappableOptions:S,showOptionIcons:D,showOptionImages:L,showOptionCounts:H,showSkipButton:O,showProducts:I,productImageFallback:F="image",onFocus:z,onBlur:k,value:M,completedParams:K,onChange:N,onParamsChange:te,products:le,mapProducts:W,onProductSelect:de,source:ke,setCursor:ce}){let u=B(null),[Ce,ae]=gi(null),pe=B(e);pe.current=e;let ie=B(o);ie.current=o;let he=B(t);he.current=t;let q=B(N);q.current=N;let V=B(te);V.current=te;let s=B(z);s.current=z;let m=B(k);m.current=k;let f=B(ce);f.current=ce;let w=B(de);w.current=de;let y=B(v);y.current=v;let E=B(()=>{let d=y.current;return typeof d=="function"?d():d}).current,c=Wt(le),G=B(W);G.current=W;let j=B((d,_)=>{let T=G.current;return T?T(d,_):d}).current,Q=W?j:void 0,ue=Kt(a);Le(()=>{if(typeof document>"u")return;let d=new pi(document.createElement("div"),{renderMode:"headless",apiConfig:r,additionalContext:i,language:p,productId:l,visitorId:E,optionOverrides:ue.overrides,maskCompletedText:n,columns:P,dropdownTrigger:C,optionsPosition:g,closeDropdownOnBlur:b,showNonTappableOptions:S,showProducts:I,source:ke,value:M,completedParams:K,onSubmit:(...T)=>pe.current?.(...T),onResult:(...T)=>ie.current?.(...T),onError:(...T)=>he.current?.(...T),onChange:(...T)=>q.current?.(...T),onParamsChange:(...T)=>V.current?.(...T),onFocus:()=>s.current?.(),onBlur:()=>m.current?.(),onProductSelect:T=>w.current?.(T),setCursor:T=>f.current?.(T),products:c.config,mapProducts:Q});u.current=d,ae(d.getState());let _=d.subscribe(T=>ae(T));return()=>{_(),d.destroy(),u.current===d&&(u.current=null)}},[]),Le(()=>{M!==void 0&&u.current?.setValue(M)},[M]),Le(()=>{K!==void 0&&u.current?.setCompletedParams(K)},[K]);let ge=JSON.stringify(r??null),me;try{me=JSON.stringify(i??null)}catch{me="[unstringifiable]"}Le(()=>{u.current?.update({apiConfig:r,additionalContext:i,language:p,productId:l,optionOverrides:ue.overrides,dropdownTrigger:C,optionsPosition:g,closeDropdownOnBlur:b,showNonTappableOptions:S,showProducts:I})},[ge,me,p,l,ue.key,C,g,b,S,I]);let fe=B(!1);Le(()=>{if(!fe.current){fe.current=!0;return}u.current?.update({products:c.config})},[c.enabled]),Le(()=>{u.current?.update({mapProducts:Q})},[Q]);let be=B(null);be.current===null&&(be.current={handleTextChange:d=>u.current?.handleTextChange(d),handleKeyDown:d=>{let _="nativeEvent"in d?d.nativeEvent:d;u.current?.handleKeyDown(_)},setFocused:d=>u.current?.setFocused(d),startEditingParam:d=>u.current?.startEditingParam(d),exitEditMode:()=>u.current?.exitEditMode(),handleCaretAfterInput:d=>u.current?.handleCaretAfterInput(d),handleCaretMove:d=>u.current?.handleCaretMove(d),replaceEditingRange:d=>u.current?.replaceEditingRange(d)??!1,setActivePill:d=>u.current?.setActivePill(d),skipActivePill:()=>u.current?.skipActivePill(),removeLastParam:()=>u.current?.removeLastParam(),clearNewParamId:()=>u.current?.clearNewParamId(),reset:()=>u.current?.reset(),refreshProducts:()=>u.current?.refreshProducts(),recordSubmit:d=>u.current?.recordSubmit(d),selectOption:d=>u.current?.selectOption(d),selectProduct:d=>u.current?.selectProduct(d),setActiveDropdownIndex:d=>u.current?.setActiveDropdownIndex(d),clearHighlight:d=>u.current?.clearHighlight(d),showPreviousMonth:()=>u.current?.showPreviousMonth(),showNextMonth:()=>u.current?.showNextMonth(),handleFocus:()=>u.current?.setFocused(!0),handleBlur:()=>u.current?.setFocused(!1)});let x=be.current,we=_t(d=>{let _=d.target.value,tt=_.length>0&&!d.nativeEvent?.isComposing&&_[0]!==_[0].toUpperCase()?_[0].toUpperCase()+_.slice(1):_;u.current?.handleTextChange(tt)},[]),ve=_t(d=>{u.current?.handleKeyDown(d.nativeEvent)},[]),oe=u.current,h=Ce??mi,Te=M!==void 0?M:h.text,Ae=K!==void 0?K:h.completedParams,X=h.actionableSuggestions,Ne=X[0],Pe=oe?.listboxId??"",_e=h.activeDropdownIndex>=0&&oe?`${Pe}-option-${h.activeDropdownIndex}`:void 0,xe=h.editingParam,Se=h.editingIdentified,Fe=xe?{parameter:xe.suggestionParameter,text:xe.suggestionPlaceholder,required:!0,options:xe.options}:Se?{parameter:Se.parameter,text:ui(Se.parameter),required:!0,options:[]}:null,Ue=h.dropdownSuggestion??Fe??Ne,et=Fe?[Fe]:X,Be=hi(h),qe=!oe||h.dropdownLoading;return{completedParams:Ae,skippedParams:h.skippedParams,identifiedParams:h.identifiedParams,suggestionPills:X,setActivePill:x.setActivePill,skipActivePill:x.skipActivePill,removeLastParam:x.removeLastParam,segments:h.segments,newParamId:h.newParamId,clearNewParamId:x.clearNewParamId,suggestions:h.suggestions,activeIndex:h.activeDropdownIndex,isReady:h.isReady,isLoading:qe,isFocused:h.isFocused,isDropdownOpen:h.isDropdownOpen,isActivePillSelected:h.isActivePillSelected,placeholderText:h.placeholderText,listboxId:Pe,error:h.error,products:h.products,customFields:h.customFields,selectProduct:x.selectProduct,handleTextChange:x.handleTextChange,handleKeyDown:x.handleKeyDown,setFocused:x.setFocused,editingParam:xe,editingIdentified:Se,editingAnchor:h.editingAnchor,caretOffset:h.caretOffset,startEditingParam:x.startEditingParam,exitEditMode:x.exitEditMode,handleCaretAfterInput:x.handleCaretAfterInput,handleCaretMove:x.handleCaretMove,replaceEditingRange:x.replaceEditingRange,inputProps:{value:Te,placeholder:h.placeholderText||void 0,onChange:we,onKeyDown:ve,onFocus:x.handleFocus,onBlur:x.handleBlur,role:"combobox","aria-expanded":h.isDropdownOpen,"aria-activedescendant":_e,"aria-autocomplete":"list","aria-controls":Pe},reset:x.reset,refreshProducts:x.refreshProducts,recordSubmit:x.recordSubmit,dropdownProps:{suggestions:Ue?[{...Ue,options:h.dropdownOptions}]:[],activeIndex:h.activeDropdownIndex,onSelect:x.selectOption,onHighlight:x.setActiveDropdownIndex,onUnhighlight:x.clearHighlight,isOpen:h.isDropdownOpen,id:Pe,pills:et,activeSelected:h.isActivePillSelected,onPillClick:x.setActivePill,onSkip:x.skipActivePill,showSkipButton:(O??!0)&&!xe&&!Se,showOptionIcons:D??!0,showOptionImages:L??!0,showOptionCounts:H??!0,skipDisabled:h.inSelectionAnimation,isLoading:qe,skeletonExiting:h.skeletonExiting,isInputEmpty:Te.trim().length===0,language:p,products:h.products,productImageFallback:F,onProductSelect:x.selectProduct,onProductFocusChange:x.setFocused,formatType:h.activeFormatType,dateView:h.dateView,selectedDateIso:Be.selectedIso,selectedDateRange:Be.selectedRange,dateRangeStart:Be.rangeStart,onPreviousMonth:x.showPreviousMonth,onNextMonth:x.showNextMonth,optionsPosition:g??"below"}}}import{chipIdFromTap as fi,extractPlainText as Ut,getCursorOffset as qt,keepCaretOnChip as bi,plainTextLength as wi,renderEditableContent as vi,setCursorOffset as jt}from"@magicx-eng/ai-autocomplete-vanilla";import{useCallback as $,useEffect as Xe,useLayoutEffect as ht,useRef as ze}from"react";var Je;function xi(){if(Je!==void 0)return Je;if(typeof document>"u")return!1;let e=document.createElement("div");return e.setAttribute("contenteditable","plaintext-only"),Je=e.contentEditable==="plaintext-only",Je}function Qt(e){let{segments:o,showChipIcons:t=!0,showChipImages:a=!0,newParamId:n,editingParam:r,editingIdentified:i,editingAnchor:p,caretOffset:l,placeholderText:v,isFocused:P,isDropdownOpen:C,listboxId:g,activeDescendantId:b,autoFocus:S,handleTextChange:D,handleKeyDown:L,handleCaretAfterInput:H,handleCaretMove:O,startEditingParam:I,replaceEditingRange:F,setFocused:z}=e,k=ze(null),M=ze(!1),K=ze(""),N=ze(""),te=ze(null),le=ze(0);te.current=l,Xe(()=>{if(!S)return;let s=k.current;if(!s)return;document.activeElement===s?z(!0):s.focus();let m=s.ownerDocument??document,f=m.getSelection(),w=f&&f.rangeCount>0&&s.contains(f.anchorNode);if(f&&!w){let y=m.createRange();y.selectNodeContents(s),y.collapse(!0),f.removeAllRanges(),f.addRange(y)}},[S,z]),Xe(()=>{let s=k.current;if(!s)return;let m=s.ownerDocument??document,f=()=>{let w=m.getSelection();if(!w||w.rangeCount===0||!w.anchorNode||!s.contains(w.anchorNode))return;let y=w.anchorNode,E=y.nodeType===Node.ELEMENT_NODE?y:y.parentElement,G=(w.isCollapsed?E?.closest("strong[data-param-id]"):null)?.dataset.paramId??null,j=r?.id??i?.id??null;if(G&&G!==j){I(G);return}performance.now()-le.current<50||O(qt(s))};return m.addEventListener("selectionchange",f),()=>m.removeEventListener("selectionchange",f)},[r,i,I,O]),Xe(()=>{let s=k.current;if(!s)return;let m=f=>{let w=fi(s,f.target);w&&(I(w),bi(s,w))};return s.addEventListener("click",m),()=>s.removeEventListener("click",m)},[I]),ht(()=>{let s=k.current;s&&vi({input:s,segments:o,newParamId:n,editingParamId:r?.id??null,placeholderText:v??"",isFocused:P,showChipIcons:t,showChipImages:a})},[o,n,r,v,P,t,a]),ht(()=>{let s=K.current,m=n??"";if(K.current=m,!m||m===s)return;let f=k.current;if(!f)return;f.focus();let w=te.current??wi(f);jt(f,w)},[n]),ht(()=>{let s=N.current,m=r?.id??"";if(N.current=m,!m||m===s||p==null)return;let f=k.current;f&&jt(f,p)},[r,p]);let W=$(()=>{if(M.current)return;let s=k.current;if(!s)return;let m=Ut(s),w=m.length>0&&m[0]!==m[0].toUpperCase()?m[0].toUpperCase()+m.slice(1):m;D(w)},[D]),de=$(()=>{le.current=performance.now(),W();let s=k.current;s&&H(qt(s))},[W,H]);Xe(()=>{let s=k.current;if(!s)return;let m=f=>{let w=f,y=w.inputType;if(y==="insertParagraph"||y==="insertLineBreak"||y==="insertFromDrop"){f.preventDefault();return}if(y.startsWith("insert")||y.startsWith("delete")){let E=y.startsWith("delete")?"":w.data??"";F(E)&&f.preventDefault()}};return s.addEventListener("beforeinput",m),()=>s.removeEventListener("beforeinput",m)},[F]);let ke=$(()=>{M.current=!0},[]),ce=$(()=>{M.current=!1,W()},[W]),u=$(s=>{s.preventDefault();let m=k.current;if(!m)return;let f=(s.clipboardData.getData("text/plain")??"").replace(/\r?\n/g," ");if(!f)return;let w=m.ownerDocument??document,y=w.getSelection();if(!y||y.rangeCount===0)return;let E=y.getRangeAt(0);if(!m.contains(E.startContainer))return;E.deleteContents();let c=w.createTextNode(f);E.insertNode(c),E.setStartAfter(c),E.collapse(!0),y.removeAllRanges(),y.addRange(E),W()},[W]),Ce=$(s=>L(s),[L]),ae=$(()=>z(!0),[z]),pe=$(()=>z(!1),[z]),ie=$(()=>k.current?.focus(),[]),he=$(()=>k.current?.blur(),[]),q=$(()=>{let s=k.current;return s?Ut(s):""},[]),V=xi()?"plaintext-only":"true";return{inputRef:k,editorProps:{ref:k,contentEditable:V,suppressContentEditableWarning:!0,tabIndex:0,role:"combobox","aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":g,"aria-expanded":C,"aria-activedescendant":b,spellCheck:!0,enterKeyHint:"send",onInput:de,onKeyDown:Ce,onCompositionStart:ke,onCompositionEnd:ce,onPaste:u,onFocus:ae,onBlur:pe},getPlainText:q,focus:ie,blur:he}}import{jsx as Me,jsxs as gt}from"react/jsx-runtime";function Ti(e){return e!=="auto"?e:typeof window>"u"||window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}var Ai=yi(function({onSubmit:o,onResult:t,onError:a,optionOverrides:n,maskCompletedText:r,className:i,apiConfig:p,additionalContext:l,language:v,productId:P,visitorId:C,columns:g,pillPlacement:b="dropdown",mode:S="auto",optionsPosition:D="below",animations:L=!0,dropdownTrigger:H,closeDropdownOnBlur:O,showNonTappableOptions:I,showOptionIcons:F=!0,showChipIcons:z=!0,showChipImages:k=!0,showOptionImages:M=!0,showOptionCounts:K=!0,showSkipButton:N,showProducts:te,productsLayout:le,productImageFallback:W,autoFocus:de=!0,onFocus:ke,onBlur:ce,value:u,completedParams:Ce,onChange:ae,onParamsChange:pe,products:ie,mapProducts:he,onProductSelect:q,submitButton:V,resetOnSubmit:s=!0},m){let f=We(null),w=We(null),y=We(()=>{}),E=We(null),c=We(null);Yt(()=>{let A=f.current;if(A)return E.current?E.current.setMode(S):E.current=new Si(A,S),()=>{E.current?.destroy(),E.current=null}},[S]);let G=ut(A=>{let J=c.current?.current;J&&(J.focus(),Ii(J,A))},[]),{completedParams:j,skippedParams:Q,identifiedParams:ue,isReady:ge,customFields:me,suggestionPills:fe,setActivePill:be,skipActivePill:x,segments:we,newParamId:ve,clearNewParamId:oe,placeholderText:h,isFocused:Te,isDropdownOpen:Ae,isActivePillSelected:X,isLoading:Ne,activeIndex:Pe,listboxId:_e,handleTextChange:xe,handleKeyDown:Se,setFocused:Fe,editingParam:Ue,editingIdentified:et,editingAnchor:Be,caretOffset:qe,startEditingParam:d,handleCaretAfterInput:_,handleCaretMove:T,replaceEditingRange:tt,dropdownProps:Zt,reset:je,refreshProducts:mt,recordSubmit:ft}=pt({onSubmit:A=>y.current(A),onResult:t,onError:a,optionOverrides:n,maskCompletedText:r,apiConfig:p,additionalContext:l,language:v,productId:P,visitorId:C,columns:g,dropdownTrigger:H,optionsPosition:D,closeDropdownOnBlur:O,showNonTappableOptions:I,showOptionIcons:F,showOptionImages:M,showOptionCounts:K,showSkipButton:N,showProducts:te,onFocus:ke,onBlur:ce,value:u,completedParams:Ce,onChange:ae,onParamsChange:pe,products:ie,mapProducts:he,onProductSelect:q,source:"full-sdk",setCursor:G});Yt(()=>{if(!ve)return;let A=window.setTimeout(()=>oe(),650);return()=>window.clearTimeout(A)},[ve,oe]);let Vt=Pe>=0?`${_e}-option-${Pe}`:void 0,{inputRef:at,editorProps:$t,focus:Qe,blur:bt,getPlainText:wt}=Qt({segments:we,newParamId:ve,editingParam:Ue,editingIdentified:et,editingAnchor:Be,caretOffset:qe,placeholderText:h,isFocused:Te,showChipIcons:z,showChipImages:k,isDropdownOpen:Ae,listboxId:_e,activeDescendantId:Vt,autoFocus:de,handleTextChange:xe,handleKeyDown:Se,handleCaretAfterInput:_,handleCaretMove:T,startEditingParam:d,replaceEditingRange:tt,setFocused:Fe});c.current=at,Ci(()=>{let A=w.current,J=at.current;if(!A||!J)return;let He=()=>{let xt=A.firstElementChild;if(!xt)return;let ta=xt.getBoundingClientRect(),aa=J.getBoundingClientRect();ta.top>=aa.bottom-2?A.setAttribute("data-aia-pill-wrapped",""):A.removeAttribute("data-aia-pill-wrapped")};He();let vt=new ResizeObserver(He);return vt.observe(J),()=>vt.disconnect()},[we,fe.length,Ne,at]),ki(m,()=>({focus:Qe,blur:bt,reset:je,refreshProducts:mt,setMode:A=>E.current?.setMode(A),skipActivePill:x}),[Qe,bt,je,mt,x]);let Ye=!!we.length||j.length>0,it=ut(A=>{if(!Ye)return;let J=wt(),He=Pi(J,j,Q,{identifiedParams:ue,isReady:ge,customFields:me});A&&ft(He),o(He),s&&je()},[ft,s,Ye,j,Q,ue,ge,me,o,je,wt]);y.current=()=>it(!1);let Xt=ut(A=>{A.target?.closest("[data-aia-pill]")||Qe()},[Qe]),Jt=b==="inline",ea=b==="dropdown";return gt("div",{ref:f,className:`magicx-aia ${Ie.container} ${i??""}`,"data-pill-placement":b,"data-options-position":D,"data-animations":L?"on":"off","data-mode":Ti(S),children:[Me(dt,{...Zt,showPills:ea,productsLayout:le,productImageFallback:W}),gt("div",{className:Ie.inputWrapper,"data-aia-input-wrapper":"",onClick:Xt,children:[gt("div",{className:Ie.editorArea,"data-aia-editor":"",children:[Me("div",{...$t,className:Ie.input,"data-aia-input":""}),Jt&&(Ne||fe.length>0)&&Me("span",{ref:w,className:Ie.pillListContainer,"data-aia-pill-list-container":"",children:Me(Ve,{pills:fe,activePillIndex:0,activeSelected:X,onSelectPill:be,loading:Ne})})]}),V===null?null:V===void 0?Me(Bt,{disabled:!Ye,onClick:()=>it(!0),label:Ei(v).submit}):Me("span",{"data-aia-submit":"","data-aia-submit-slot":"",className:Ie.submitSlot,onClick:A=>{Ye&&(A.stopPropagation(),it(!0))},children:V})]})]})});export{Ai as AIAutocomplete,dt as AIAutocompleteDropdown,Sn as DATE_RANGE_META_END,In as DATE_RANGE_META_START,En as DEFAULT_OPTION_COUNT_UNIT,Hn as PRODUCT_PATH_PREFIX,Zn as WEEKDAY_LABELS,kn as buildSubmitResult,Cn as cellDay,Pn as cellIso,Tn as dateCellMarks,An as formatDate,Rn as formatDateRange,On as formatOptionCount,Dn as isoDate,Ln as monthLabel,zn as optionCountLabel,Mn as optionHasImage,Nn as optionImageSources,Fn as optionImageSrc,Bn as optionLabel,Kn as parseDate,Gn as parseLooseDate,Wn as parseLooseDateRange,_n as productFromMatchedItem,Un as productImageSources,qn as productsFromCustomFields,jn as sanitizeOptionIconSvg,Qn as selectedRangeFor,pt as useAIAutocomplete,Yn as visibleDateRange,Vn as withSkippedParams};
2330
2330
  //# sourceMappingURL=index.mjs.map