@choc-ui/chakra-autocomplete 5.9.0 → 5.9.1

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.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react/jsx-runtime"),f=require("react"),a=require("@chakra-ui/react");function lt(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const ie=lt(f),[Qe,_]=$e();function $e(){const e=ie.createContext(void 0);e.displayName="AutoCompleteContext";function t(){var o;const n=ie.useContext(e),r="useAutoCompleteContext: `context` is undefined. Seems you forgot to wrap all autoomplete components within `<AutoComplete />`";if(!n){const l=new Error(r);throw l.name="ContextError",(o=Error.captureStackTrace)==null||o.call(Error,l,t),l}return n}return[e.Provider,t,e]}function ut(e){return e==null?void 0:e[0]}function we(e){return e!=null&&e.length?e[e.length-1]:void 0}function Ke(e,t,n=1,r=!0){if(t===0)return-1;let o=e+n;return e===-1&&(o=n>0?0:t-1),r?o=(o%t+t)%t:o=Math.max(0,Math.min(o,t-1)),o}function it(e,t,n=!0){return Ke(e,t,-1,n)}function at(e,t,n=!0){const r=Ke(e,t.length,1,n);return t[r]}function ct(e,t,n=!0){const r=it(e,t.length,n);return t[r]}function je(e){return Array.isArray(e)}function ft(e){return je(e)&&e.length===0}function Ee(e){return e!==null&&typeof e=="object"&&!je(e)}function pt(e){return Ee(e)&&Object.keys(e).length===0}function Oe(e){return je(e)?ft(e):Ee(e)?pt(e):e==null||e===""}function ue(e){return typeof e>"u"}function Ve(e){return typeof e<"u"}function dt(e,t){const n={};return t.forEach(r=>{r in e&&(n[r]=e[r])}),n}function Re(e,t){const n={...e};return t.forEach(r=>{delete n[r]}),n}function gt(e){return typeof e=="function"}function h(e,...t){return gt(e)?e(...t):e}var ae=function(e,t){for(var n,r=ie.Children.toArray(e),o=0,l=r;o<l.length;o++){var u=l[o];if(t(u))return u;if(!((n=u.props)===null||n===void 0)&&n.children){var i=ae(u.props.children,t);if(i)return i}}},le=function(e,t){for(var n=0,r=t.length,o=e.length;n<r;n++,o++)e[o]=t[n];return e},Ye=function(e,t){for(var n,r=ie.Children.toArray(e),o=[],l=0,u=r;l<u.length;l++){var i=u[l];t(i)&&(o=le(le([],o),[i])),!((n=i.props)===null||n===void 0)&&n.children&&(o=le(le([],o),Ye(i.props.children,t)))}return o};function ze(e,t,n=2){function r(d,R){d=" ".repeat(R-1)+d.toLowerCase()+" ".repeat(R-1);let b=new Array(d.length-R+1);for(let E=0;E<b.length;E++)b[E]=d.slice(E,E+R);return b}if(!(e!=null&&e.length)||!(t!=null&&t.length))return 0;let o=e.length<t.length?e:t,l=e.length<t.length?t:e,u=r(o,n),i=r(l,n),y=new Set(u),C=i.length,x=0;for(let d of i)y.delete(d)&&x++;return x/C}const Pe=e=>{var t;return(t=typeof e=="string"||typeof e=="number"?e:e[Object.keys(e)[0]])==null?void 0:t.toString()},mt=(e,t)=>typeof e!="string"||Oe(t)?e:e.toString().replace(new RegExp(Ct(t),"gi"),r=>`<mark>${r}</mark>`),vt=e=>Ye(e,n=>{var r;return((r=n==null?void 0:n.type)==null?void 0:r.displayName)==="AutoCompleteItem"}).map(n=>{const r=dt(n.props,["value","label","fixed","disabled"]),{getValue:o=Pe}=n.props,l=o(r.value);return{...Ve(r.label)?r:{...r,label:l},value:l,originalValue:r.value}}),ht=()=>({bg:"whiteAlpha.100",_light:{bg:"gray.200"}}),yt=(e,t,n)=>(t==null?void 0:t.toLowerCase().indexOf(e==null?void 0:e.toLowerCase()))>=0||(n==null?void 0:n.toLowerCase().indexOf(e==null?void 0:e.toLowerCase()))>=0||ze(e,t)>=.5||ze(e,n)>=.5;function Ct(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}const xt=(e,t)=>ae(e,r=>{var o;return((o=r==null?void 0:r.type)==null?void 0:o.displayName)==="AutoCompleteItem"&&r.props.value===(t==null?void 0:t.value)}),bt=(e,t)=>ae(e,r=>{var o;return((o=r==null?void 0:r.type)==null?void 0:o.displayName)==="AutoCompleteItem"&&r.props.value===(t==null?void 0:t.value)}),St=(e,t)=>Ve(ae(e,n=>{var o,l;const r=h(((o=n.props)==null?void 0:o.getValue)||Pe,((l=n.props)==null?void 0:l.value)||{});return t.some(u=>u.value===r)})),At=(e,t)=>{const n={},r={},{field:o}=e;return o&&Object.keys(o).forEach(l=>{if(l.startsWith("--input")===!1)n[l]=o[l];else{let u=o[l];const y=l.replace("--input-","").replace(/-([a-z])/g,function(C){return C[1].toUpperCase()});u.indexOf(".")!==-1&&(u=u.substring(u.indexOf(".")+1)),r[y]=u}}),{...t&&{...n,...r,_focusWithin:e.field._focus,pos:"relative",minH:9,py:1.5,spacing:3},cursor:"text",h:"fit-content"}};function Je(e){var Ge;let{prefocusFirstItem:t=!0,closeOnBlur:n=!0,creatable:r,emphasize:o,emptyState:l=!0,defaultEmptyStateProps:u={},freeSolo:i,isReadOnly:y,listAllValuesOnFocus:C,maxSuggestions:x,multiple:d,closeOnSelect:R=!d,defaultValue:b,defaultValues:E=b?[b]:[],onReady:U,defaultIsOpen:z,disableFilter:q,isLoading:ce=!1,placement:ee="bottom",restoreOnBlurIfEmpty:V=!i,shouldRenderSuggestions:fe=()=>!0,submitKeys:pe=[],suggestWhenEmpty:te,value:B,values:Y=B?typeof B=="string"?[B]:[...B]:void 0}=e;i=i||(d?!0:e.freeSolo);const{isOpen:O,onClose:G,onOpen:Q}=a.useDisclosure({defaultIsOpen:z}),de=f.useMemo(()=>h(e.children,{isOpen:O,onClose:G,onOpen:Q}),[e.children,O]),I=f.useMemo(()=>vt(de),[de]),L=f.useRef(null),Ne=f.useRef(null),J=f.useRef(null),$=f.useRef(null),[De,ne]=f.useState(!1);let oe="";d?oe="":ue(E)?ue(Y)||(oe=Y[0]):oe=E[0];const[D,X]=f.useState(oe??""),ge=f.useMemo(()=>q?I:I.filter(s=>s.fixed||h(e.filter||yt,D,s.value,s.label)||De).filter((s,c)=>x?s.fixed||c<x:!0),[D,I,De,x,q]),re=r?[{value:D,noFilter:!0,creatable:!0}]:[],S=f.useMemo(()=>[...ge,...re],[ge,re]),ot=f.useMemo(()=>[...I,...re],[I,re]),[M,me]=a.useControllableState({defaultValue:E.map(s=>s==null?void 0:s.toString()),value:Y,onChange:s=>{const c=S.find(P=>P.value===s.at(-1));if(!c)return;const m=s.map(P=>ot.find(F=>F.value===P));h(e.onChange,d?s:s[0],d?m:c)}});f.useEffect(()=>{S.length===0&&!l&&O&&G()},[S.length,l,O]);const[K,W]=f.useState(t?(Ge=I[0])==null?void 0:Ge.value:null),rt=e.maxSelections||M.length+1,ve=S.findIndex(s=>s.value===K),he=at(ve,S,!!e.rollNavigation),ye=ct(ve,S,!!e.rollNavigation),N=ut(S),Ce=we(S),Me=!S.some(s=>s.value===K);f.useEffect(()=>{var s;Me&&W(t?(s=I[0])==null?void 0:s.value:null)},[Me]),a.useUpdateEffect(()=>{t&&W(N==null?void 0:N.value)},[D,N==null?void 0:N.value]),f.useEffect(()=>{var s;!O&&t&&W((s=I[0])==null?void 0:s.value)},[O]),f.useEffect(()=>{O&&C&&ne(!0)},[O,C,ne]),f.useEffect(()=>{const s=I.find(c=>c.value===K);h(e.onOptionFocus,{item:s,focusMethod:$.current,isNewInput:s==null?void 0:s.creatable})},[K,e.onOptionFocus]);const xe=s=>{var P,F;const c=S.find(w=>w.value===s),m=(c==null?void 0:c.label)||(c==null?void 0:c.value);X(()=>d?"":m??""),!M.includes(s)&&M.length<rt&&me(w=>d?[...w,s]:[s]),d&&((P=L.current)==null||P.focus()),e.focusInputOnSelect&&((F=L.current)==null||F.focus()),h(e.onSelectOption,{item:c,selectMethod:$.current,isNewInput:c==null?void 0:c.creatable}),c!=null&&c.creatable&&h(e.onCreateOption,{item:Re(c,["noFilter"]),selectMethod:$.current}),R&&G()},Te=(s,c)=>{var F;me(w=>{let k=I.find(T=>T.value===s);return!k&&r===!0&&(k={label:s,value:s}),k?(h(e.onTagRemoved,s,k,w),w.filter(T=>T!==s)):w});const m=I.find(w=>w.value===s),P=(m==null?void 0:m.label)||(m==null?void 0:m.value);D===P&&X(""),c&&((F=L.current)==null||F.focus())},st=s=>{var c;me([]),s&&((c=L.current)==null||c.focus())},_e=d?M.map(s=>{var c;return{label:((c=I.find(m=>m.value===(s==null?void 0:s.toString())))==null?void 0:c.label)||s,onRemove:()=>Te(s)}}):[];return f.useEffect(()=>{h(U,{tags:_e})},[M]),{autoCompleteProps:e,children:de,filteredList:S,filteredResults:ge,focusedValue:K,defaultEmptyStateProps:u,getEmptyStateProps:s=>{if(S.every(m=>m.noFilter)&&l&&!r)return typeof l=="boolean"?s:h(l,{query:D})},getGroupProps:s=>{const c=St(s.children,S);return{divider:{hasFirstChild:xt(s.children,N),hasLastChild:bt(s.children,we(S.filter(m=>ue(m==null?void 0:m.noFilter))))},group:{display:c?"initial":"none"}}},getInputProps:(s,c)=>{const{onBlur:m,onChange:P,onFocus:F,onKeyDown:w,variant:k,...T}=s;return{wrapper:{ref:Ne,onClick:()=>{var g;(g=L==null?void 0:L.current)==null||g.focus()},...At(c,d),...T},input:{isReadOnly:y,onFocus:g=>{h(F,g),e.openOnFocus&&!y&&Q(),e.selectOnFocus&&g.target.select(),C&&ne(!0)},onBlur:g=>{var H,se;h(m,g);const A=g.relatedTarget===(J==null?void 0:J.current)||((H=J.current)==null?void 0:H.contains(g.relatedTarget)),v=(se=Ne.current)==null?void 0:se.contains(g.relatedTarget);if(!A&&!v&&(n&&G(),!M.includes(g.target.value)&&V)){const be=we(M),j=I.find(Ae=>Ae.value===be),Se=(j==null?void 0:j.label)||(j==null?void 0:j.value)||"";X(Se)}},onChange:g=>{const A=g.target.value;h(P,g),X(A);const v=Oe(A);h(fe,A)&&(!v||te)?Q():G(),ne(!1)},onKeyDown:g=>{var H;h(w,g),$.current="keyboard";const{key:A}=g,v=S[ve];if(["Enter",...pe].includes(A)){v&&!(v!=null&&v.disabled)&&O?xe(v==null?void 0:v.value):(H=L.current)==null||H.focus(),g.preventDefault();return}if(A==="ArrowDown"){O?W(he==null?void 0:he.value):Q(),g.preventDefault();return}if(A==="ArrowUp"){O?W(ye==null?void 0:ye.value):Q(),g.preventDefault();return}if(A==="Tab"){O&&v&&!(v!=null&&v.disabled)?xe(v==null?void 0:v.value):G();return}if(A==="Home"){W(N==null?void 0:N.value),g.preventDefault();return}if(A==="End"){W(Ce==null?void 0:Ce.value),g.preventDefault();return}A==="Escape"&&(G(),g.preventDefault())},value:D,variant:d?"unstyled":k,...T}}},getItemProps:(s,c)=>{var We;const{_fixed:m,_focus:P,children:F,disabled:w,label:k,value:T,fixed:g,getValue:A=Pe,onClick:v,onMouseOver:H,sx:se,...be}=s,j=c?T:(We=A(T))==null?void 0:We.toString(),Se=j===K,Ae=S.findIndex(Z=>Z.value===j)>=0,Ie=F||k||j;return{item:{...typeof Ie!="string"||!o?{children:Ie}:{dangerouslySetInnerHTML:{__html:mt(Ie,D)}},"aria-selected":M.includes(j),"aria-disabled":w,_disabled:{opacity:.4,cursor:"not-allowed",userSelect:"none"},onClick:Z=>{var ke;h(v,Z),w?(ke=L.current)==null||ke.focus():xe(j)},onMouseOver:Z=>{h(H,Z),W(j),$.current="mouse"},sx:{...se,mark:{color:"inherit",bg:"transparent",...Ee(o)?o:{fontWeight:o?"extrabold":"inherit"}}},...Se&&(P||ht()),...g&&m,...be},root:{isValidSuggestion:Ae,value:j}}},inputRef:L,interactionRef:$,isLoading:ce,isOpen:O,itemList:I,listRef:J,onClose:G,onOpen:Q,placement:ee,query:D,removeItem:Te,resetItems:st,setQuery:X,tags:_e,value:B,values:M}}const Xe=a.forwardRef((e,t)=>{const n=Je(e),{children:r,isOpen:o,onClose:l,onOpen:u,placement:i,resetItems:y,removeItem:C}=n;f.useImperativeHandle(t,()=>({resetItems:y,removeItem:C}));const{matchWidth:x=!0}=n.autoCompleteProps;return p.jsx(Qe,{value:n,children:p.jsx(a.Popover,{isLazy:!0,isOpen:o,autoFocus:!1,placement:i,closeOnBlur:!0,matchWidth:x,children:p.jsx(a.chakra.div,{w:"full",ref:t,children:r})})})});Xe.displayName="AutoComplete";const Ze=a.forwardRef((e,t)=>{const{focusedValue:n,getItemProps:r,interactionRef:o}=_(),l=f.useRef(),u=a.useMergeRefs(t,l),i=r(e),{isValidSuggestion:y,value:C}=i.root,x=n===C;f.useEffect(()=>{var U;x&&o.current==="keyboard"&&((U=l==null?void 0:l.current)==null||U.scrollIntoView({behavior:"smooth",block:"nearest"}))},[x,o]),f.useEffect(()=>{typeof C!="string"&&console.warn("wow"),typeof C!="string"&&ue(e.getValue)&&console.error("You must define the `getValue` prop, when an Item's value is not a string")},[]);const{children:d,dangerouslySetInnerHTML:R,...b}=i.item,E=Re(b,["groupId"]);return y?p.jsx(a.Flex,{ref:u,...Fe,...E,children:d||p.jsx("span",{dangerouslySetInnerHTML:R})}):null});Ze.displayName="AutoCompleteItem";const Fe={mx:"2",px:"2",py:"2",rounded:"md",cursor:"pointer"};function qe(e){const{alwaysDisplay:t,children:n,...r}=e,{autoCompleteProps:o,getItemProps:l,query:u,filteredResults:i}=_(),{children:y,...C}=l({...e,value:u,children:h(n,{value:u})},!0).item,x=i.some(b=>b.value===u),d=Oe(u)?t:!0;return o.creatable&&d&&!x?p.jsx(a.Flex,{...Fe,...C,...r,children:y||`Add ${u}`}):null}qe.displayName="AutoCompleteCreatable";const et=a.forwardRef((e,t)=>{const{children:n,showDivider:r,...o}=e,l=Re(o,["groupSibling"]),{getGroupProps:u}=_(),{group:i}=u(e),y=wt(e);return p.jsxs(a.Box,{ref:t,...i,...l,children:[p.jsx(a.Divider,{...y.top}),n,p.jsx(a.Divider,{...y.bottom})]})}),tt=a.forwardRef((e,t)=>p.jsx(a.Flex,{...It,...e,ref:t}));et.displayName="AutoCompleteGroup";tt.displayName="AutoCompleteGroupTitle";const It={ml:5,my:1,fontSize:"xs",letterSpacing:"wider",fontWeight:"extrabold",textTransform:"uppercase"},wt=e=>{const{getGroupProps:t}=_(),n=e.groupSibling,{divider:{hasFirstChild:r,hasLastChild:o}}=t(e),l={my:2,borderColor:e.dividerColor},u={...l,mb:4,display:!e.showDivider||r?"none":""},i={...l,display:!e.showDivider||o||n?"none":""};return{top:u,bottom:i}},Be=a.forwardRef((e,t)=>{const{isLoading:n}=_(),{loadingIcon:r,...o}=e;return p.jsxs(a.InputGroup,{children:[p.jsx(a.Input,{...o,ref:t}),n&&p.jsx(a.InputRightElement,{children:r||p.jsx(a.Spinner,{})})]})}),Le=a.forwardRef((e,t)=>{const{autoCompleteProps:n,inputRef:r,getInputProps:o,tags:l,setQuery:u,value:i,itemList:y}=_(),{children:C,isInvalid:x,hidePlaceholder:d,...R}=e,{value:b}=R;f.useEffect(()=>{if(i!==void 0&&(typeof i=="string"||i instanceof String)){const te=y.find(Y=>Y.value===i),B=te===void 0?i:te.label;u(B)}},[i]),f.useEffect(()=>{b!==void 0&&(typeof b=="string"||b instanceof String)&&u(b)},[b]);const E=a.useMultiStyleConfig("Input",e);let{wrapper:U,input:z}=o(R,E);const{ref:q,...ce}=U,ee=a.useMergeRefs(t,r),V=h(C,{tags:l});d&&(z={...z,placeholder:Array.isArray(V)&&V.length?void 0:z.placeholder});const fe=p.jsx(Be,{isInvalid:x,...z,ref:ee}),pe=p.jsxs(a.Wrap,{"aria-invalid":x,...ce,ref:q,children:[V,p.jsx(a.WrapItem,{as:Be,...z,ref:ee})]});return p.jsx(a.PopoverAnchor,{children:n.multiple?pe:fe})});Le.displayName="Input";Le.id="Input";const jt=e=>{const{getEmptyStateProps:t,defaultEmptyStateProps:n}=_(),r=t(p.jsx(a.Flex,{...Et,...n,children:"No options found!"}));return p.jsx(a.Box,{...e,children:r})},Et={fontSize:"sm",align:"center",justify:"center",fontWeight:"bold",fontStyle:"italic"},He=["AutoCompleteGroup","AutoCompleteItem","AutoCompleteCreatable"],Ot=e=>{const t=f.Children.map(e,(o,l)=>{var u;if(((u=o==null?void 0:o.type)==null?void 0:u.displayName)==="AutoCompleteGroup"){const i=f.Children.toArray(e)[l+1];return f.cloneElement(o,{groupSibling:i?i.type.displayName==="AutoCompleteGroup":!1})}return o}),n=f.Children.toArray(t).filter(o=>{var l;return!He.includes((l=o==null?void 0:o.type)==null?void 0:l.displayName)});return[f.Children.toArray(t).filter(o=>{var l;return He.includes((l=o==null?void 0:o.type)==null?void 0:l.displayName)}),n]},nt=a.forwardRef((e,t)=>{const{children:n,loadingState:r,...o}=e,{listRef:l,isLoading:u}=_(),i=a.useMergeRefs(t,l),[y,C]=Ot(n);return p.jsx(a.Portal,{appendToParentPortal:!1,children:p.jsxs(a.PopoverContent,{ref:i,w:"inherit",...Rt,...o,children:[u&&p.jsx(a.Center,{children:r||p.jsx(a.Spinner,{size:"md"})}),!u&&p.jsxs(p.Fragment,{children:[y,p.jsx(jt,{}),C]})]})})});nt.displayName="AutoCompleteList";const Rt={py:"4",opacity:"0",bg:"#232934",rounded:"md",maxH:"350px",border:"none",shadow:"base",zIndex:"popover",overflowY:"auto",_light:{bg:"#ffffff"},_focus:{boxShadow:"none"}},Pt=f.memo(e=>{const{label:t,onRemove:n,disabled:r,...o}=e;return p.jsx(a.WrapItem,{children:p.jsxs(a.Tag,{borderRadius:"md",fontWeight:"normal",...r&&Ue,...o,children:[p.jsx(a.TagLabel,{children:t}),p.jsx(a.TagCloseButton,{onClick:()=>!r&&h(n),cursor:"pointer",...r&&Ue})]})})}),Ue={cursor:"text",userSelect:"none",opacity:.4,_focus:{boxShadow:"none"}};exports.AutoComplete=Xe;exports.AutoCompleteCreatable=qe;exports.AutoCompleteGroup=et;exports.AutoCompleteGroupTitle=tt;exports.AutoCompleteInput=Le;exports.AutoCompleteItem=Ze;exports.AutoCompleteList=nt;exports.AutoCompleteProvider=Qe;exports.AutoCompleteTag=Pt;exports.baseItemStyles=Fe;exports.createContext=$e;exports.useAutoComplete=Je;exports.useAutoCompleteContext=_;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("react/jsx-runtime"),c=require("react"),u=require("@chakra-ui/react");function ot(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const se=ot(c),[_e,D]=Ge();function Ge(){const e=se.createContext(void 0);e.displayName="AutoCompleteContext";function t(){const n=se.useContext(e),o="useAutoCompleteContext: `context` is undefined. Seems you forgot to wrap all autoomplete components within `<AutoComplete />`";if(!n){const r=new Error(o);throw r.name="ContextError",Error.captureStackTrace?.(r,t),r}return n}return[e.Provider,t,e]}function rt(e){return e?.[0]}function xe(e){return e?.length?e[e.length-1]:void 0}function We(e,t,n=1,o=!0){if(t===0)return-1;let r=e+n;return e===-1&&(r=n>0?0:t-1),o?r=(r%t+t)%t:r=Math.max(0,Math.min(r,t-1)),r}function st(e,t,n=!0){return We(e,t,-1,n)}function lt(e,t,n=!0){const o=We(e,t.length,1,n);return t[o]}function it(e,t,n=!0){const o=st(e,t.length,n);return t[o]}function Ce(e){return Array.isArray(e)}function ut(e){return Ce(e)&&e.length===0}function Ie(e){return e!==null&&typeof e=="object"&&!Ce(e)}function at(e){return Ie(e)&&Object.keys(e).length===0}function Se(e){return Ce(e)?ut(e):Ie(e)?at(e):e==null||e===""}function re(e){return typeof e>"u"}function ke(e){return typeof e<"u"}function ct(e,t){const n={};return t.forEach(o=>{o in e&&(n[o]=e[o])}),n}function Ae(e,t){const n={...e};return t.forEach(o=>{delete n[o]}),n}function ft(e){return typeof e=="function"}function g(e,...t){return ft(e)?e(...t):e}var le=function(e,t){for(var n,o=se.Children.toArray(e),r=0,l=o;r<l.length;r++){var i=l[r];if(t(i))return i;if(!((n=i.props)===null||n===void 0)&&n.children){var a=le(i.props.children,t);if(a)return a}}},oe=function(e,t){for(var n=0,o=t.length,r=e.length;n<o;n++,r++)e[r]=t[n];return e},Ve=function(e,t){for(var n,o=se.Children.toArray(e),r=[],l=0,i=o;l<i.length;l++){var a=i[l];t(a)&&(r=oe(oe([],r),[a])),!((n=a.props)===null||n===void 0)&&n.children&&(r=oe(oe([],r),Ve(a.props.children,t)))}return r};function Ne(e,t,n=2){function o(p,E){p=" ".repeat(E-1)+p.toLowerCase()+" ".repeat(E-1);let b=new Array(p.length-E+1);for(let A=0;A<b.length;A++)b[A]=p.slice(A,A+E);return b}if(!e?.length||!t?.length)return 0;let r=e.length<t.length?e:t,l=e.length<t.length?t:e,i=o(r,n),a=o(l,n),h=new Set(i),v=a.length,y=0;for(let p of a)h.delete(p)&&y++;return y/v}const we=e=>(typeof e=="string"||typeof e=="number"?e:e[Object.keys(e)[0]])?.toString(),pt=(e,t)=>typeof e!="string"||Se(t)?e:e.toString().replace(new RegExp(ht(t),"gi"),o=>`<mark>${o}</mark>`),dt=e=>Ve(e,n=>n?.type?.displayName==="AutoCompleteItem").map(n=>{const o=ct(n.props,["value","label","fixed","disabled"]),{getValue:r=we}=n.props,l=r(o.value);return{...ke(o.label)?o:{...o,label:l},value:l,originalValue:o.value}}),mt=()=>({bg:"whiteAlpha.100",_light:{bg:"gray.200"}}),gt=(e,t,n)=>t?.toLowerCase().indexOf(e?.toLowerCase())>=0||n?.toLowerCase().indexOf(e?.toLowerCase())>=0||Ne(e,t)>=.5||Ne(e,n)>=.5;function ht(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}const vt=(e,t)=>le(e,o=>o?.type?.displayName==="AutoCompleteItem"&&o.props.value===t?.value),yt=(e,t)=>le(e,o=>o?.type?.displayName==="AutoCompleteItem"&&o.props.value===t?.value),bt=(e,t)=>ke(le(e,n=>{const o=g(n.props?.getValue||we,n.props?.value||{});return t.some(r=>r.value===o)})),xt=(e,t)=>{const n={},o={},{field:r}=e;return r&&Object.keys(r).forEach(l=>{if(l.startsWith("--input")===!1)n[l]=r[l];else{let i=r[l];const h=l.replace("--input-","").replace(/-([a-z])/g,function(v){return v[1].toUpperCase()});i.indexOf(".")!==-1&&(i=i.substring(i.indexOf(".")+1)),o[h]=i}}),{...t&&{...n,...o,_focusWithin:e.field._focus,pos:"relative",minH:9,py:1.5,spacing:3},cursor:"text",h:"fit-content"}};function ze(e){let{prefocusFirstItem:t=!0,closeOnBlur:n=!0,creatable:o,emphasize:r,emptyState:l=!0,defaultEmptyStateProps:i={},freeSolo:a,isReadOnly:h,listAllValuesOnFocus:v,maxSuggestions:y,multiple:p,closeOnSelect:E=!p,defaultValue:b,defaultValues:A=b?[b]:[],onReady:ie,defaultIsOpen:G,disableFilter:K,isLoading:ue=!1,placement:Y="bottom",restoreOnBlurIfEmpty:H=!a,shouldRenderSuggestions:ae=()=>!0,submitKeys:ce=[],suggestWhenEmpty:J,value:W,values:U=W?typeof W=="string"?[W]:[...W]:void 0}=e;a=a||(p?!0:e.freeSolo);const{isOpen:w,onClose:M,onOpen:V}=u.useDisclosure({defaultIsOpen:G}),fe=c.useMemo(()=>g(e.children,{isOpen:w,onClose:M,onOpen:V}),[e.children,w]),I=c.useMemo(()=>dt(fe),[fe]),T=c.useRef(null),Re=c.useRef(null),pe=c.useRef(null),z=c.useRef(null),[Oe,X]=c.useState(!1);let Z="";p?Z="":re(A)?re(U)||(Z=U[0]):Z=A[0];const[L,Q]=c.useState(Z??""),de=c.useMemo(()=>K?I:I.filter(s=>s.fixed||g(e.filter||gt,L,s.value,s.label)||Oe).filter((s,d)=>y?s.fixed||d<y:!0),[L,I,Oe,y,K]),ee=o?[{value:L,noFilter:!0,creatable:!0}]:[],x=c.useMemo(()=>[...de,...ee],[de,ee]),Ke=c.useMemo(()=>[...I,...ee],[I,ee]),[P,me]=u.useControllableState({defaultValue:A.map(s=>s?.toString()),value:U,onChange:s=>{const d=x.find(j=>j.value===s.at(-1));if(!d)return;const S=s.map(j=>Ke.find(O=>O.value===j));g(e.onChange,p?s:s[0],p?S:d)}});c.useEffect(()=>{x.length===0&&!l&&w&&M()},[x.length,l,w]);const[B,_]=c.useState(t?I[0]?.value:null),Ye=e.maxSelections||P.length+1,ge=x.findIndex(s=>s.value===B),Je=lt(ge,x,!!e.rollNavigation),Xe=it(ge,x,!!e.rollNavigation),te=rt(x),Ze=xe(x),Le=!x.some(s=>s.value===B);c.useEffect(()=>{Le&&_(t?I[0]?.value:null)},[Le]),u.useUpdateEffect(()=>{t&&_(te?.value)},[L,te?.value]),c.useEffect(()=>{!w&&t&&_(I[0]?.value)},[w]),c.useEffect(()=>{w&&v&&X(!0)},[w,v,X]),c.useEffect(()=>{const s=I.find(d=>d.value===B);g(e.onOptionFocus,{item:s,focusMethod:z.current,isNewInput:s?.creatable})},[B,e.onOptionFocus]);const he=s=>{const d=x.find(j=>j.value===s),S=d?.label||d?.value;Q(()=>p?"":S??""),!P.includes(s)&&P.length<Ye&&me(j=>p?[...j,s]:[s]),p&&T.current?.focus(),e.focusInputOnSelect&&T.current?.focus(),g(e.onSelectOption,{item:d,selectMethod:z.current,isNewInput:d?.creatable}),d?.creatable&&g(e.onCreateOption,{item:Ae(d,["noFilter"]),selectMethod:z.current}),E&&M()},Pe=(s,d)=>{me(O=>{let F=I.find(k=>k.value===s);return!F&&o===!0&&(F={label:s,value:s}),F?(g(e.onTagRemoved,s,F,O),O.filter(k=>k!==s)):O});const S=I.find(O=>O.value===s),j=S?.label||S?.value;L===j&&Q(""),d&&T.current?.focus()},et=s=>{me([]),s&&T.current?.focus()},Fe=p?P.map(s=>({label:I.find(d=>d.value===s?.toString())?.label||s,onRemove:()=>Pe(s)})):[];return c.useEffect(()=>{g(ie,{tags:Fe})},[P]),{autoCompleteProps:e,children:fe,filteredList:x,filteredResults:de,focusedValue:B,defaultEmptyStateProps:i,getEmptyStateProps:s=>{if(x.every(S=>S.noFilter)&&l&&!o)return typeof l=="boolean"?s:g(l,{query:L})},getGroupProps:s=>{const d=bt(s.children,x);return{divider:{hasFirstChild:vt(s.children,te),hasLastChild:yt(s.children,xe(x.filter(S=>re(S?.noFilter))))},group:{display:d?"initial":"none"}}},getInputProps:(s,d)=>{const{onBlur:S,onChange:j,onFocus:O,onKeyDown:F,variant:k,...$}=s;return{wrapper:{ref:Re,onClick:()=>{T?.current?.focus()},...xt(d,p),...$},input:{isReadOnly:h,onFocus:m=>{g(O,m),e.openOnFocus&&!h&&V(),e.selectOnFocus&&m.target.select(),v&&X(!0)},onBlur:m=>{g(S,m);const C=m.relatedTarget===pe?.current||pe.current?.contains(m.relatedTarget),R=Re.current?.contains(m.relatedTarget);if(!C&&!R&&(n&&M(),!P.includes(m.target.value)&&H)){const ve=xe(P),ne=I.find(N=>N.value===ve),ye=ne?.label||ne?.value||"";Q(ye)}},onChange:m=>{const C=m.target.value;g(j,m),Q(C);const R=Se(C);g(ae,C)&&(!R||J)?V():M(),X(!1)},onKeyDown:m=>{g(F,m),z.current="keyboard";const{key:C}=m,R=x[ge];if(["Enter",...ce].includes(C)){R&&!R?.disabled&&w?he(R?.value):T.current?.focus(),m.preventDefault();return}if(C==="ArrowDown"){w?_(Je?.value):V(),m.preventDefault();return}if(C==="ArrowUp"){w?_(Xe?.value):V(),m.preventDefault();return}if(C==="Tab"){w&&R&&!R?.disabled?he(R?.value):M();return}if(C==="Home"){_(te?.value),m.preventDefault();return}if(C==="End"){_(Ze?.value),m.preventDefault();return}C==="Escape"&&(M(),m.preventDefault())},value:L,variant:p?"unstyled":k,...$}}},getItemProps:(s,d)=>{const{_fixed:S,_focus:j,children:O,disabled:F,label:k,value:$,fixed:m,getValue:C=we,onClick:R,onMouseOver:ve,sx:ne,...ye}=s,N=d?$:C($)?.toString(),tt=N===B,nt=x.findIndex(q=>q.value===N)>=0,be=O||k||N;return{item:{...typeof be!="string"||!r?{children:be}:{dangerouslySetInnerHTML:{__html:pt(be,L)}},"aria-selected":P.includes(N),"aria-disabled":F,_disabled:{opacity:.4,cursor:"not-allowed",userSelect:"none"},onClick:q=>{g(R,q),F?T.current?.focus():he(N)},onMouseOver:q=>{g(ve,q),_(N),z.current="mouse"},sx:{...ne,mark:{color:"inherit",bg:"transparent",...Ie(r)?r:{fontWeight:r?"extrabold":"inherit"}}},...tt&&(j||mt()),...m&&S,...ye},root:{isValidSuggestion:nt,value:N}}},inputRef:T,interactionRef:z,isLoading:ue,isOpen:w,itemList:I,listRef:pe,onClose:M,onOpen:V,placement:Y,query:L,removeItem:Pe,resetItems:et,setQuery:Q,tags:Fe,value:W,values:P}}const Be=u.forwardRef((e,t)=>{const n=ze(e),{children:o,isOpen:r,onClose:l,onOpen:i,placement:a,resetItems:h,removeItem:v}=n;c.useImperativeHandle(t,()=>({resetItems:h,removeItem:v}));const{matchWidth:y=!0}=n.autoCompleteProps;return f.jsx(_e,{value:n,children:f.jsx(u.Popover,{isLazy:!0,isOpen:r,autoFocus:!1,placement:a,closeOnBlur:!0,matchWidth:y,children:f.jsx(u.chakra.div,{w:"full",ref:t,children:o})})})});Be.displayName="AutoComplete";const He=u.forwardRef((e,t)=>{const{focusedValue:n,getItemProps:o,interactionRef:r}=D(),l=c.useRef(),i=u.useMergeRefs(t,l),a=o(e),{isValidSuggestion:h,value:v}=a.root,y=n===v;c.useEffect(()=>{y&&r.current==="keyboard"&&l?.current?.scrollIntoView({behavior:"smooth",block:"nearest"})},[y,r]),c.useEffect(()=>{typeof v!="string"&&console.warn("wow"),typeof v!="string"&&re(e.getValue)&&console.error("You must define the `getValue` prop, when an Item's value is not a string")},[]);const{children:p,dangerouslySetInnerHTML:E,...b}=a.item,A=Ae(b,["groupId"]);return h?f.jsx(u.Flex,{ref:i,...je,...A,children:p||f.jsx("span",{dangerouslySetInnerHTML:E})}):null});He.displayName="AutoCompleteItem";const je={mx:"2",px:"2",py:"2",rounded:"md",cursor:"pointer"};function Ue(e){const{alwaysDisplay:t,children:n,...o}=e,{autoCompleteProps:r,getItemProps:l,query:i,filteredResults:a}=D(),{children:h,...v}=l({...e,value:i,children:g(n,{value:i})},!0).item,y=a.some(b=>b.value===i),p=Se(i)?t:!0;return r.creatable&&p&&!y?f.jsx(u.Flex,{...je,...v,...o,children:h||`Add ${i}`}):null}Ue.displayName="AutoCompleteCreatable";const Qe=u.forwardRef((e,t)=>{const{children:n,showDivider:o,...r}=e,l=Ae(r,["groupSibling"]),{getGroupProps:i}=D(),{group:a}=i(e),h=It(e);return f.jsxs(u.Box,{ref:t,...a,...l,children:[f.jsx(u.Divider,{...h.top}),n,f.jsx(u.Divider,{...h.bottom})]})}),$e=u.forwardRef((e,t)=>f.jsx(u.Flex,{...Ct,...e,ref:t}));Qe.displayName="AutoCompleteGroup";$e.displayName="AutoCompleteGroupTitle";const Ct={ml:5,my:1,fontSize:"xs",letterSpacing:"wider",fontWeight:"extrabold",textTransform:"uppercase"},It=e=>{const{getGroupProps:t}=D(),n=e.groupSibling,{divider:{hasFirstChild:o,hasLastChild:r}}=t(e),l={my:2,borderColor:e.dividerColor},i={...l,mb:4,display:!e.showDivider||o?"none":""},a={...l,display:!e.showDivider||r||n?"none":""};return{top:i,bottom:a}},De=u.forwardRef((e,t)=>{const{isLoading:n}=D(),{loadingIcon:o,...r}=e;return f.jsxs(u.InputGroup,{children:[f.jsx(u.Input,{...r,ref:t}),n&&f.jsx(u.InputRightElement,{children:o||f.jsx(u.Spinner,{})})]})}),Ee=u.forwardRef((e,t)=>{const{autoCompleteProps:n,inputRef:o,getInputProps:r,tags:l,setQuery:i,value:a,itemList:h}=D(),{children:v,isInvalid:y,hidePlaceholder:p,...E}=e,{value:b}=E;c.useEffect(()=>{if(a!==void 0&&(typeof a=="string"||a instanceof String)){const J=h.find(U=>U.value===a),W=J===void 0?a:J.label;i(W)}},[a]),c.useEffect(()=>{b!==void 0&&(typeof b=="string"||b instanceof String)&&i(b)},[b]);const A=u.useMultiStyleConfig("Input",e);let{wrapper:ie,input:G}=r(E,A);const{ref:K,...ue}=ie,Y=u.useMergeRefs(t,o),H=g(v,{tags:l});p&&(G={...G,placeholder:Array.isArray(H)&&H.length?void 0:G.placeholder});const ae=f.jsx(De,{isInvalid:y,...G,ref:Y}),ce=f.jsxs(u.Wrap,{"aria-invalid":y,...ue,ref:K,children:[H,f.jsx(u.WrapItem,{as:De,...G,ref:Y})]});return f.jsx(u.PopoverAnchor,{children:n.multiple?ce:ae})});Ee.displayName="Input";Ee.id="Input";const St=e=>{const{getEmptyStateProps:t,defaultEmptyStateProps:n}=D(),o=t(f.jsx(u.Flex,{...At,...n,children:"No options found!"}));return f.jsx(u.Box,{...e,children:o})},At={fontSize:"sm",align:"center",justify:"center",fontWeight:"bold",fontStyle:"italic"},Me=["AutoCompleteGroup","AutoCompleteItem","AutoCompleteCreatable"],wt=e=>{const t=c.Children.map(e,(r,l)=>{if(r?.type?.displayName==="AutoCompleteGroup"){const i=c.Children.toArray(e)[l+1];return c.cloneElement(r,{groupSibling:i?i.type.displayName==="AutoCompleteGroup":!1})}return r}),n=c.Children.toArray(t).filter(r=>!Me.includes(r?.type?.displayName));return[c.Children.toArray(t).filter(r=>Me.includes(r?.type?.displayName)),n]},qe=u.forwardRef((e,t)=>{const{children:n,loadingState:o,...r}=e,{listRef:l,isLoading:i}=D(),a=u.useMergeRefs(t,l),[h,v]=wt(n);return f.jsx(u.Portal,{appendToParentPortal:!1,children:f.jsxs(u.PopoverContent,{ref:a,w:"inherit",...jt,...r,children:[i&&f.jsx(u.Center,{children:o||f.jsx(u.Spinner,{size:"md"})}),!i&&f.jsxs(f.Fragment,{children:[h,f.jsx(St,{}),v]})]})})});qe.displayName="AutoCompleteList";const jt={py:"4",opacity:"0",bg:"#232934",rounded:"md",maxH:"350px",border:"none",shadow:"base",zIndex:"popover",overflowY:"auto",_light:{bg:"#ffffff"},_focus:{boxShadow:"none"}},Et=c.memo(e=>{const{label:t,onRemove:n,disabled:o,...r}=e;return f.jsx(u.WrapItem,{children:f.jsxs(u.Tag,{borderRadius:"md",fontWeight:"normal",...o&&Te,...r,children:[f.jsx(u.TagLabel,{children:t}),f.jsx(u.TagCloseButton,{onClick:()=>!o&&g(n),cursor:"pointer",...o&&Te})]})})}),Te={cursor:"text",userSelect:"none",opacity:.4,_focus:{boxShadow:"none"}};exports.AutoComplete=Be;exports.AutoCompleteCreatable=Ue;exports.AutoCompleteGroup=Qe;exports.AutoCompleteGroupTitle=$e;exports.AutoCompleteInput=Ee;exports.AutoCompleteItem=He;exports.AutoCompleteList=qe;exports.AutoCompleteProvider=_e;exports.AutoCompleteTag=Et;exports.baseItemStyles=je;exports.createContext=Ge;exports.useAutoComplete=ze;exports.useAutoCompleteContext=D;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "5.9.0",
2
+ "version": "5.9.1",
3
3
  "license": "MIT",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
@@ -70,22 +70,22 @@
70
70
  "@chakra-ui/react": "^2.8.2",
71
71
  "@emotion/react": "^11.11.3",
72
72
  "@emotion/styled": "^11.10.6",
73
- "@size-limit/esbuild": "11.1.5",
74
- "@size-limit/esbuild-why": "11.1.5",
75
- "@size-limit/file": "11.1.5",
73
+ "@size-limit/esbuild": "^11.2.0",
74
+ "@size-limit/esbuild-why": "^11.2.0",
75
+ "@size-limit/file": "^11.2.0",
76
76
  "@types/react": "^18.2.55",
77
77
  "@types/react-dom": "^18.2.18",
78
- "@vitejs/plugin-react": "^4.2.1",
78
+ "@vitejs/plugin-react": "^5.1.1",
79
79
  "babel-loader": "^9.1.3",
80
80
  "framer-motion": "10.16.16",
81
81
  "husky": "^9.1.6",
82
82
  "react": "^18.2.0",
83
83
  "react-dom": "^18.2.0",
84
- "size-limit": "11.1.5",
84
+ "size-limit": "^11.2.0",
85
85
  "tsdx": "^0.14.1",
86
86
  "tslib": "^2.3.0",
87
87
  "typescript": "^5.3.3",
88
- "vite": "^5.0.12",
88
+ "vite": "^7.2.2",
89
89
  "vite-plugin-dts": "^4.2.2",
90
90
  "vite-plugin-linter": "^3.0.0",
91
91
  "vite-tsconfig-paths": "^5.0.1"