inconel 0.1.36 → 0.1.38

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.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),t=require("react"),_e=require("react-dom"),d=require("../shared/classNames.cjs");;/* empty css */const Ne=require("../DotLoader/DotLoader.cjs"),ee=[];function L(k,g,_){return k.some(O=>O?.[_]===g?.[_])}function Se({id:k=null,label:g=null,className:_=null,labelClassName:O=null,inputClassName:te=null,optionsClassName:ne=null,optionItemClassName:A=null,searchableInputClassName:ce=null,options:N=ee,defaultSelectedOptions:S=ee,optionLabel:b="label",optionValue:s="value",onChange:B,placeholder:z="Seçiniz",selectedInputMessage:F,itemSelectedText:M="öğe seçili",selectAllText:le="Tümünü Seç",searchPlaceholder:se="Ara",noDataMessage:ie="Veri bulunamadı",errorMessage:j="",errorPlace:H="out",isSearchable:D=!1,isLoading:oe=!1,isDisabled:x=!1,reactPortal:i=!1,windowPosition:I=!1,windowHeight:K=800,windowClose:P,isScrollEnd:W,getOptionTooltip:re=v=>typeof v?.tooltip=="string"?v.tooltip:void 0,limit:ue=null,selectionLimit:ae=null}){const v=t.useRef(null),y=t.useRef(null),Y=t.useRef(null),[r,G]=t.useState(!1),[c,J]=t.useState(S),[w,Q]=t.useState(null),[q,U]=t.useState(""),[de,me]=t.useState(null),[he,X]=t.useState(!1),u=Number(ue??ae),m=Number.isFinite(u)&&u>0,C=t.useCallback(()=>{if(I){Q(Number(K)<800?"top":"bottom");return}const e=y.current;if(!e)return;const l=e.getBoundingClientRect(),o=window.innerHeight-l.bottom,a=l.top,f=240+(D?46:0)+40;Q(o<f&&a>o?"top":"bottom")},[D,K,I]),E=t.useCallback(()=>{if(!i||!y.current)return;const e=y.current.getBoundingClientRect();me({position:"fixed",left:e.left,top:w==="top"?e.top:e.bottom,width:e.width,zIndex:9999}),X(!0)},[i,w]);t.useEffect(()=>{const e=m?S.slice(0,u):S;J(e)},[S,m,u]),t.useEffect(()=>{r||(P?.(!0),U(""))},[r,P]),t.useEffect(()=>{if(!r)return;const e=v.current,l=Y.current,o=a=>{const f=a.target,R=e?.contains(f),ge=l?.contains(f);!R&&!ge&&G(!1)};return document.addEventListener("pointerdown",o,!0),()=>document.removeEventListener("pointerdown",o,!0)},[r]),t.useLayoutEffect(()=>{if(!r){X(!1);return}C()},[r,C]),t.useLayoutEffect(()=>{!r||!i||E()},[r,i,E]),t.useEffect(()=>{if(!r)return;const e=()=>{C(),i&&E()};return window.addEventListener("resize",e),window.addEventListener("scroll",e,!0),()=>{window.removeEventListener("resize",e),window.removeEventListener("scroll",e,!0)}},[r,i,C,E]);const p=t.useCallback(e=>{J(e),B?.(e)},[B]),fe=t.useCallback(e=>{const l=e.currentTarget;l.scrollHeight-l.scrollTop<=l.clientHeight+1&&W?.(!0)},[W]),xe=t.useCallback(e=>{if(L(c,e,s)){p(c.filter(l=>l?.[s]!==e?.[s]));return}m&&c.length>=u||p([...c,e])},[m,u,s,c,p]),h=t.useMemo(()=>{const e=q.trim().toLocaleLowerCase();return e?N.filter(l=>String(l?.[b]??"").toLocaleLowerCase().includes(e)):N},[N,b,q]),pe=t.useMemo(()=>c.length===0?"":c.length===1?String(c[0]?.[b]??""):`${c.length} ${F||M}`,[M,b,F,c]),be=H==="in"&&j||z,Z=t.useCallback(()=>{x||G(e=>!e)},[x]),ve=e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),Z())},T=t.useMemo(()=>h.length>0&&h.every(e=>L(c,e,s)),[h,s,c]),ke=t.useCallback(()=>{if(T){p(c.filter(o=>!h.some(a=>o?.[s]===a?.[s])));return}const e=h.filter(o=>!L(c,o,s)),l=m?e.slice(0,Math.max(u-c.length,0)):e;p([...c,...l])},[T,h,m,u,s,c,p]),$=k||"inconel-multi-select-checkbox",V=n.jsx("div",{ref:i?Y:void 0,className:d.classNames("inconel-multi-select-checkbox__panel-wrap",i&&"inconel-multi-select-checkbox__panel-wrap--portal",w==="top"&&"inconel-is-open-top"),style:i?{...de??{},visibility:he?"visible":"hidden"}:void 0,onPointerDown:e=>e.stopPropagation(),children:n.jsxs("div",{className:d.classNames("inconel-multi-select-checkbox__options",i&&"inconel-multi-select-checkbox__options--portal",ne),onScroll:fe,children:[D&&n.jsx("div",{className:"inconel-multi-select-checkbox__search",children:n.jsx("input",{type:"text",placeholder:se,className:d.classNames("inconel-multi-select-checkbox__search-input",ce),value:q,onChange:e=>U(e.target.value),disabled:x})}),n.jsxs("div",{className:d.classNames("inconel-multi-select-checkbox__option-item",A),children:[n.jsx("input",{id:`${$}-select-all`,type:"checkbox",checked:T,onChange:ke,disabled:x}),n.jsx("label",{htmlFor:`${$}-select-all`,children:le})]}),h.map((e,l)=>{const o=e?.[s]??l,a=L(c,e,s),f=x||!a&&m&&c.length>=u,R=`${$}-${String(o)}`;return n.jsxs("div",{className:d.classNames("inconel-multi-select-checkbox__option-item",a&&"inconel-is-selected",f&&"inconel-is-disabled",A),title:re(e),children:[n.jsx("input",{id:R,type:"checkbox",checked:a,onChange:()=>xe(e),disabled:f}),n.jsx("label",{htmlFor:R,children:String(e?.[b]??"")})]},String(o))})]})});return n.jsxs("div",{ref:v,id:k??void 0,className:d.classNames("inconel-multi-select-checkbox",j&&"inconel-is-error",x&&"inconel-is-disabled",w==="top"&&!i&&"inconel-is-open-top",_),children:[g&&n.jsx("span",{className:d.classNames("inconel-multi-select-checkbox__label",O),children:g}),n.jsxs("div",{className:"inconel-multi-select-checkbox__input-wrap",children:[oe&&n.jsx("div",{className:"inconel-multi-select-checkbox__loader-cover",children:n.jsx(Ne.DotLoader,{})}),n.jsxs("div",{ref:y,role:"button",tabIndex:0,className:"inconel-multi-select-checkbox__input-container",onClick:Z,onKeyDown:ve,children:[n.jsx("input",{type:"text",className:d.classNames("inconel-multi-select-checkbox__input",te),placeholder:be,readOnly:!0,value:pe}),n.jsx("span",{className:"inconel-multi-select-checkbox__indicator","aria-hidden":"true"})]})]}),r&&(N.length>0?i?_e.createPortal(V,document.body):V:n.jsx("div",{className:"inconel-multi-select-checkbox__nodata",children:n.jsx("span",{children:ie})})),H!=="in"&&j&&n.jsx("span",{className:"inconel-multi-select-checkbox__error",children:j})]})}exports.MultiSelectCheckBox=Se;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),t=require("react"),Ne=require("react-dom"),m=require("../shared/classNames.cjs");;/* empty css */const je=require("../DotLoader/DotLoader.cjs"),T=[];function se(r){return Array.isArray(r)?r:r&&typeof r=="object"?[r]:T}function O(r,_,v){return Array.isArray(r)?r.some(R=>R?.[v]===_?.[v]):!1}function we({id:r=null,label:_=null,className:v=null,labelClassName:R=null,inputClassName:ce=null,optionsClassName:le=null,optionItemClassName:M=null,searchableInputClassName:oe=null,options:$=T,defaultSelectedOptions:B=T,optionLabel:g="label",optionValue:l="value",onChange:z,placeholder:F="Seçiniz",selectedInputMessage:H,itemSelectedText:I="öğe seçili",selectAllText:ie="Tümünü Seç",searchPlaceholder:re="Ara",noDataMessage:ue="Veri bulunamadı",errorMessage:y="",errorPlace:K="out",isSearchable:L=!1,isLoading:ae=!1,isDisabled:b=!1,reactPortal:o=!1,windowPosition:P=!1,windowHeight:W=800,windowClose:Y,isScrollEnd:G,getOptionTooltip:de=h=>typeof h?.tooltip=="string"?h.tooltip:void 0,limit:me=null,selectionLimit:he=null}){const h=t.useMemo(()=>se($),[$]),S=t.useMemo(()=>se(B),[B]),J=t.useRef(null),N=t.useRef(null),Q=t.useRef(null),[u,U]=t.useState(!1),[s,X]=t.useState(S),[j,Z]=t.useState(null),[A,V]=t.useState(""),[fe,pe]=t.useState(null),[xe,ee]=t.useState(!1),a=Number(me??he),f=Number.isFinite(a)&&a>0,w=t.useCallback(()=>{if(P){Z(Number(W)<800?"top":"bottom");return}const e=N.current;if(!e)return;const c=e.getBoundingClientRect(),i=window.innerHeight-c.bottom,d=c.top,x=240+(L?46:0)+40;Z(i<x&&d>i?"top":"bottom")},[L,W,P]),C=t.useCallback(()=>{if(!o||!N.current)return;const e=N.current.getBoundingClientRect();pe({position:"fixed",left:e.left,top:j==="top"?e.top:e.bottom,width:e.width,zIndex:9999}),ee(!0)},[o,j]);t.useEffect(()=>{const e=f?S.slice(0,a):S;X(e)},[S,f,a]),t.useEffect(()=>{u||(Y?.(!0),V(""))},[u,Y]),t.useEffect(()=>{if(!u)return;const e=J.current,c=Q.current,i=d=>{const x=d.target,E=e?.contains(x),Se=c?.contains(x);!E&&!Se&&U(!1)};return document.addEventListener("pointerdown",i,!0),()=>document.removeEventListener("pointerdown",i,!0)},[u]),t.useLayoutEffect(()=>{if(!u){ee(!1);return}w()},[u,w]),t.useLayoutEffect(()=>{!u||!o||C()},[u,o,C]),t.useEffect(()=>{if(!u)return;const e=()=>{w(),o&&C()};return window.addEventListener("resize",e),window.addEventListener("scroll",e,!0),()=>{window.removeEventListener("resize",e),window.removeEventListener("scroll",e,!0)}},[u,o,w,C]);const k=t.useCallback(e=>{X(e),z?.(e)},[z]),be=t.useCallback(e=>{const c=e.currentTarget;c.scrollHeight-c.scrollTop<=c.clientHeight+1&&G?.(!0)},[G]),ke=t.useCallback(e=>{if(O(s,e,l)){k(s.filter(c=>c?.[l]!==e?.[l]));return}f&&s.length>=a||k([...s,e])},[f,a,l,s,k]),p=t.useMemo(()=>{const e=A.trim().toLocaleLowerCase();return e?h.filter(c=>String(c?.[g]??"").toLocaleLowerCase().includes(e)):h},[h,g,A]),ge=t.useMemo(()=>s.length===0?"":s.length===1?String(s[0]?.[g]??""):`${s.length} ${H||I}`,[I,g,H,s]),_e=K==="in"&&y||F,te=t.useCallback(()=>{b||U(e=>!e)},[b]),ve=e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),te())},q=t.useMemo(()=>p.length>0&&p.every(e=>O(s,e,l)),[p,l,s]),ye=t.useCallback(()=>{if(q){k(s.filter(i=>!p.some(d=>i?.[l]===d?.[l])));return}const e=p.filter(i=>!O(s,i,l)),c=f?e.slice(0,Math.max(a-s.length,0)):e;k([...s,...c])},[q,p,f,a,l,s,k]),D=r||"inconel-multi-select-checkbox",ne=n.jsx("div",{ref:o?Q:void 0,className:m.classNames("inconel-multi-select-checkbox__panel-wrap",o&&"inconel-multi-select-checkbox__panel-wrap--portal",j==="top"&&"inconel-is-open-top"),style:o?{...fe??{},visibility:xe?"visible":"hidden"}:void 0,onPointerDown:e=>e.stopPropagation(),children:n.jsxs("div",{className:m.classNames("inconel-multi-select-checkbox__options",o&&"inconel-multi-select-checkbox__options--portal",le),onScroll:be,children:[L&&n.jsx("div",{className:"inconel-multi-select-checkbox__search",children:n.jsx("input",{type:"text",placeholder:re,className:m.classNames("inconel-multi-select-checkbox__search-input",oe),value:A,onChange:e=>V(e.target.value),disabled:b})}),n.jsxs("div",{className:m.classNames("inconel-multi-select-checkbox__option-item",M),children:[n.jsx("input",{id:`${D}-select-all`,type:"checkbox",checked:q,onChange:ye,disabled:b}),n.jsx("label",{htmlFor:`${D}-select-all`,children:ie})]}),p.map((e,c)=>{const i=e?.[l]??c,d=O(s,e,l),x=b||!d&&f&&s.length>=a,E=`${D}-${String(i)}`;return n.jsxs("div",{className:m.classNames("inconel-multi-select-checkbox__option-item",d&&"inconel-is-selected",x&&"inconel-is-disabled",M),title:de(e),children:[n.jsx("input",{id:E,type:"checkbox",checked:d,onChange:()=>ke(e),disabled:x}),n.jsx("label",{htmlFor:E,children:String(e?.[g]??"")})]},String(i))})]})});return n.jsxs("div",{ref:J,id:r??void 0,className:m.classNames("inconel-multi-select-checkbox",y&&"inconel-is-error",b&&"inconel-is-disabled",j==="top"&&!o&&"inconel-is-open-top",v),children:[_&&n.jsx("span",{className:m.classNames("inconel-multi-select-checkbox__label",R),children:_}),n.jsxs("div",{className:"inconel-multi-select-checkbox__input-wrap",children:[ae&&n.jsx("div",{className:"inconel-multi-select-checkbox__loader-cover",children:n.jsx(je.DotLoader,{})}),n.jsxs("div",{ref:N,role:"button",tabIndex:0,className:"inconel-multi-select-checkbox__input-container",onClick:te,onKeyDown:ve,children:[n.jsx("input",{type:"text",className:m.classNames("inconel-multi-select-checkbox__input",ce),placeholder:_e,readOnly:!0,value:ge}),n.jsx("span",{className:"inconel-multi-select-checkbox__indicator","aria-hidden":"true"})]})]}),u&&(h.length>0?o?Ne.createPortal(ne,document.body):ne:n.jsx("div",{className:"inconel-multi-select-checkbox__nodata",children:n.jsx("span",{children:ue})})),K!=="in"&&y&&n.jsx("span",{className:"inconel-multi-select-checkbox__error",children:y})]})}exports.MultiSelectCheckBox=we;
2
2
  //# sourceMappingURL=MultiSelectCheckBox.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelectCheckBox.cjs","sources":["../../../../src/components/MultiSelectCheckBox/MultiSelectCheckBox.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n type CSSProperties,\n type KeyboardEvent,\n type ReactNode,\n type UIEvent,\n} from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { DotLoader } from '../DotLoader'\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\n\nexport interface MultiSelectCheckBoxOption {\n [key: string]: unknown\n}\n\nexport interface MultiSelectCheckBoxProps<\n T extends MultiSelectCheckBoxOption = MultiSelectCheckBoxOption,\n> {\n id?: string | null\n label?: ReactNode\n className?: string | null\n labelClassName?: string | null\n inputClassName?: string | null\n optionsClassName?: string | null\n optionItemClassName?: string | null\n searchableInputClassName?: string | null\n options?: T[]\n defaultSelectedOptions?: T[]\n optionLabel?: string\n optionValue?: string\n onChange?: (selected: T[]) => void\n placeholder?: string\n selectedInputMessage?: string\n itemSelectedText?: string\n selectAllText?: string\n searchPlaceholder?: string\n noDataMessage?: string\n errorMessage?: string\n errorPlace?: 'in' | 'out'\n isSearchable?: boolean\n isLoading?: boolean\n isDisabled?: boolean\n reactPortal?: boolean\n windowPosition?: boolean\n windowHeight?: number\n windowClose?: (closed: boolean) => void\n isScrollEnd?: (end: boolean) => void\n getOptionTooltip?: (option: T) => string | undefined\n limit?: number | null\n selectionLimit?: number | null\n}\n\nconst EMPTY_OPTIONS: never[] = []\n\nfunction isOptionSelected<T extends MultiSelectCheckBoxOption>(\n selected: T[],\n option: T,\n optionValue: string,\n) {\n return selected.some(\n (item) => item?.[optionValue] === option?.[optionValue],\n )\n}\n\nexport function MultiSelectCheckBox<\n T extends MultiSelectCheckBoxOption = MultiSelectCheckBoxOption,\n>({\n id = null,\n label = null,\n className = null,\n labelClassName = null,\n inputClassName = null,\n optionsClassName = null,\n optionItemClassName = null,\n searchableInputClassName = null,\n options = EMPTY_OPTIONS,\n defaultSelectedOptions = EMPTY_OPTIONS,\n optionLabel = 'label',\n optionValue = 'value',\n onChange,\n placeholder = 'Seçiniz',\n selectedInputMessage,\n itemSelectedText = 'öğe seçili',\n selectAllText = 'Tümünü Seç',\n searchPlaceholder = 'Ara',\n noDataMessage = 'Veri bulunamadı',\n errorMessage = '',\n errorPlace = 'out',\n isSearchable = false,\n isLoading = false,\n isDisabled = false,\n reactPortal = false,\n windowPosition = false,\n windowHeight = 800,\n windowClose,\n isScrollEnd,\n getOptionTooltip = (option: T) =>\n typeof option?.tooltip === 'string' ? option.tooltip : undefined,\n limit = null,\n selectionLimit = null,\n}: MultiSelectCheckBoxProps<T>) {\n const rootRef = useRef<HTMLDivElement>(null)\n const anchorRef = useRef<HTMLDivElement>(null)\n const portalWrapRef = useRef<HTMLDivElement>(null)\n\n const [showOptions, setShowOptions] = useState(false)\n const [selectedOptions, setSelectedOptions] = useState<T[]>(\n defaultSelectedOptions,\n )\n const [openDirection, setOpenDirection] = useState<'top' | 'bottom' | null>(\n null,\n )\n const [searchValue, setSearchValue] = useState('')\n const [portalStyle, setPortalStyle] = useState<CSSProperties | null>(null)\n const [portalReady, setPortalReady] = useState(false)\n\n const selectionLimitValue = limit ?? selectionLimit\n const maxSelectionCount = Number(selectionLimitValue)\n const hasSelectionLimit =\n Number.isFinite(maxSelectionCount) && maxSelectionCount > 0\n\n const recomputeOpenDirection = useCallback(() => {\n if (windowPosition) {\n setOpenDirection(Number(windowHeight) < 800 ? 'top' : 'bottom')\n return\n }\n const anchor = anchorRef.current\n if (!anchor) return\n const rect = anchor.getBoundingClientRect()\n const spaceBelow = window.innerHeight - rect.bottom\n const spaceAbove = rect.top\n const estimatedPanelHeight = 240 + (isSearchable ? 46 : 0) + 40\n setOpenDirection(\n spaceBelow < estimatedPanelHeight && spaceAbove > spaceBelow\n ? 'top'\n : 'bottom',\n )\n }, [isSearchable, windowHeight, windowPosition])\n\n const recomputePortalPosition = useCallback(() => {\n if (!reactPortal || !anchorRef.current) return\n const rect = anchorRef.current.getBoundingClientRect()\n setPortalStyle({\n position: 'fixed',\n left: rect.left,\n top: openDirection === 'top' ? rect.top : rect.bottom,\n width: rect.width,\n zIndex: 9999,\n })\n setPortalReady(true)\n }, [reactPortal, openDirection])\n\n useEffect(() => {\n const next = hasSelectionLimit\n ? defaultSelectedOptions.slice(0, maxSelectionCount)\n : defaultSelectedOptions\n setSelectedOptions(next)\n }, [defaultSelectedOptions, hasSelectionLimit, maxSelectionCount])\n\n useEffect(() => {\n if (!showOptions) {\n windowClose?.(true)\n setSearchValue('')\n }\n }, [showOptions, windowClose])\n\n useEffect(() => {\n if (!showOptions) return undefined\n\n const rootEl = rootRef.current\n const portalEl = portalWrapRef.current\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node\n const inRoot = rootEl?.contains(target)\n const inPortal = portalEl?.contains(target)\n if (!inRoot && !inPortal) setShowOptions(false)\n }\n\n document.addEventListener('pointerdown', handlePointerDown, true)\n return () =>\n document.removeEventListener('pointerdown', handlePointerDown, true)\n }, [showOptions])\n\n useLayoutEffect(() => {\n if (!showOptions) {\n setPortalReady(false)\n return\n }\n recomputeOpenDirection()\n }, [showOptions, recomputeOpenDirection])\n\n useLayoutEffect(() => {\n if (!showOptions || !reactPortal) return\n recomputePortalPosition()\n }, [showOptions, reactPortal, recomputePortalPosition])\n\n useEffect(() => {\n if (!showOptions) return undefined\n\n const handleReposition = () => {\n recomputeOpenDirection()\n if (reactPortal) recomputePortalPosition()\n }\n window.addEventListener('resize', handleReposition)\n window.addEventListener('scroll', handleReposition, true)\n\n return () => {\n window.removeEventListener('resize', handleReposition)\n window.removeEventListener('scroll', handleReposition, true)\n }\n }, [showOptions, reactPortal, recomputeOpenDirection, recomputePortalPosition])\n\n const updateSelection = useCallback(\n (next: T[]) => {\n setSelectedOptions(next)\n onChange?.(next)\n },\n [onChange],\n )\n\n const handleScroll = useCallback(\n (event: UIEvent<HTMLDivElement>) => {\n const target = event.currentTarget\n if (target.scrollHeight - target.scrollTop <= target.clientHeight + 1) {\n isScrollEnd?.(true)\n }\n },\n [isScrollEnd],\n )\n\n const toggleOption = useCallback(\n (option: T) => {\n if (isOptionSelected(selectedOptions, option, optionValue)) {\n updateSelection(\n selectedOptions.filter(\n (item) => item?.[optionValue] !== option?.[optionValue],\n ),\n )\n return\n }\n if (hasSelectionLimit && selectedOptions.length >= maxSelectionCount) {\n return\n }\n updateSelection([...selectedOptions, option])\n },\n [\n hasSelectionLimit,\n maxSelectionCount,\n optionValue,\n selectedOptions,\n updateSelection,\n ],\n )\n\n const filteredOptions = useMemo(() => {\n const query = searchValue.trim().toLocaleLowerCase()\n if (!query) return options\n return options.filter((option) =>\n String(option?.[optionLabel] ?? '')\n .toLocaleLowerCase()\n .includes(query),\n )\n }, [options, optionLabel, searchValue])\n\n const inputValue = useMemo(() => {\n if (selectedOptions.length === 0) return ''\n if (selectedOptions.length === 1) {\n return String(selectedOptions[0]?.[optionLabel] ?? '')\n }\n return `${selectedOptions.length} ${selectedInputMessage || itemSelectedText}`\n }, [itemSelectedText, optionLabel, selectedInputMessage, selectedOptions])\n\n const inputPlaceholder =\n errorPlace === 'in' ? errorMessage || placeholder : placeholder\n\n const toggleDropdown = useCallback(() => {\n if (isDisabled) return\n setShowOptions((prev) => !prev)\n }, [isDisabled])\n\n const handleTriggerKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n toggleDropdown()\n }\n }\n\n const allFilteredSelected = useMemo(\n () =>\n filteredOptions.length > 0 &&\n filteredOptions.every((option) =>\n isOptionSelected(selectedOptions, option, optionValue),\n ),\n [filteredOptions, optionValue, selectedOptions],\n )\n\n const handleSelectAll = useCallback(() => {\n if (allFilteredSelected) {\n updateSelection(\n selectedOptions.filter(\n (selected) =>\n !filteredOptions.some(\n (option) => selected?.[optionValue] === option?.[optionValue],\n ),\n ),\n )\n return\n }\n const toAdd = filteredOptions.filter(\n (option) => !isOptionSelected(selectedOptions, option, optionValue),\n )\n const limitedToAdd = hasSelectionLimit\n ? toAdd.slice(0, Math.max(maxSelectionCount - selectedOptions.length, 0))\n : toAdd\n updateSelection([...selectedOptions, ...limitedToAdd])\n }, [\n allFilteredSelected,\n filteredOptions,\n hasSelectionLimit,\n maxSelectionCount,\n optionValue,\n selectedOptions,\n updateSelection,\n ])\n\n const baseId = id || 'inconel-multi-select-checkbox'\n\n const optionsPanel = (\n <div\n ref={reactPortal ? portalWrapRef : undefined}\n className={classNames(\n 'inconel-multi-select-checkbox__panel-wrap',\n reactPortal && 'inconel-multi-select-checkbox__panel-wrap--portal',\n openDirection === 'top' && 'inconel-is-open-top',\n )}\n style={\n reactPortal\n ? { ...(portalStyle ?? {}), visibility: portalReady ? 'visible' : 'hidden' }\n : undefined\n }\n onPointerDown={(event) => event.stopPropagation()}\n >\n <div\n className={classNames(\n 'inconel-multi-select-checkbox__options',\n reactPortal && 'inconel-multi-select-checkbox__options--portal',\n optionsClassName,\n )}\n onScroll={handleScroll}\n >\n {isSearchable && (\n <div className=\"inconel-multi-select-checkbox__search\">\n <input\n type=\"text\"\n placeholder={searchPlaceholder}\n className={classNames(\n 'inconel-multi-select-checkbox__search-input',\n searchableInputClassName,\n )}\n value={searchValue}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n setSearchValue(event.target.value)\n }\n disabled={isDisabled}\n />\n </div>\n )}\n\n <div\n className={classNames(\n 'inconel-multi-select-checkbox__option-item',\n optionItemClassName,\n )}\n >\n <input\n id={`${baseId}-select-all`}\n type=\"checkbox\"\n checked={allFilteredSelected}\n onChange={handleSelectAll}\n disabled={isDisabled}\n />\n <label htmlFor={`${baseId}-select-all`}>{selectAllText}</label>\n </div>\n\n {filteredOptions.map((option, index) => {\n const value = option?.[optionValue] ?? index\n const checked = isOptionSelected(selectedOptions, option, optionValue)\n const optionDisabled =\n isDisabled ||\n (!checked && hasSelectionLimit && selectedOptions.length >= maxSelectionCount)\n const inputId = `${baseId}-${String(value)}`\n\n return (\n <div\n key={String(value)}\n className={classNames(\n 'inconel-multi-select-checkbox__option-item',\n checked && 'inconel-is-selected',\n optionDisabled && 'inconel-is-disabled',\n optionItemClassName,\n )}\n title={getOptionTooltip(option)}\n >\n <input\n id={inputId}\n type=\"checkbox\"\n checked={checked}\n onChange={() => toggleOption(option)}\n disabled={optionDisabled}\n />\n <label htmlFor={inputId}>\n {String(option?.[optionLabel] ?? '')}\n </label>\n </div>\n )\n })}\n </div>\n </div>\n )\n\n return (\n <div\n ref={rootRef}\n id={id ?? undefined}\n className={classNames(\n 'inconel-multi-select-checkbox',\n errorMessage && 'inconel-is-error',\n isDisabled && 'inconel-is-disabled',\n openDirection === 'top' && !reactPortal && 'inconel-is-open-top',\n className,\n )}\n >\n {label && (\n <span\n className={classNames(\n 'inconel-multi-select-checkbox__label',\n labelClassName,\n )}\n >\n {label}\n </span>\n )}\n\n <div className=\"inconel-multi-select-checkbox__input-wrap\">\n {isLoading && (\n <div className=\"inconel-multi-select-checkbox__loader-cover\">\n <DotLoader />\n </div>\n )}\n\n <div\n ref={anchorRef}\n role=\"button\"\n tabIndex={0}\n className=\"inconel-multi-select-checkbox__input-container\"\n onClick={toggleDropdown}\n onKeyDown={handleTriggerKeyDown}\n >\n <input\n type=\"text\"\n className={classNames(\n 'inconel-multi-select-checkbox__input',\n inputClassName,\n )}\n placeholder={inputPlaceholder}\n readOnly\n value={inputValue}\n />\n <span\n className=\"inconel-multi-select-checkbox__indicator\"\n aria-hidden=\"true\"\n />\n </div>\n </div>\n\n {showOptions &&\n (options.length > 0 ? (\n reactPortal ? (\n createPortal(optionsPanel, document.body)\n ) : (\n optionsPanel\n )\n ) : (\n <div className=\"inconel-multi-select-checkbox__nodata\">\n <span>{noDataMessage}</span>\n </div>\n ))}\n\n {errorPlace !== 'in' && errorMessage && (\n <span className=\"inconel-multi-select-checkbox__error\">\n {errorMessage}\n </span>\n )}\n </div>\n )\n}\n"],"names":["EMPTY_OPTIONS","isOptionSelected","selected","option","optionValue","item","MultiSelectCheckBox","id","label","className","labelClassName","inputClassName","optionsClassName","optionItemClassName","searchableInputClassName","options","defaultSelectedOptions","optionLabel","onChange","placeholder","selectedInputMessage","itemSelectedText","selectAllText","searchPlaceholder","noDataMessage","errorMessage","errorPlace","isSearchable","isLoading","isDisabled","reactPortal","windowPosition","windowHeight","windowClose","isScrollEnd","getOptionTooltip","limit","selectionLimit","rootRef","useRef","anchorRef","portalWrapRef","showOptions","setShowOptions","useState","selectedOptions","setSelectedOptions","openDirection","setOpenDirection","searchValue","setSearchValue","portalStyle","setPortalStyle","portalReady","setPortalReady","maxSelectionCount","hasSelectionLimit","recomputeOpenDirection","useCallback","anchor","rect","spaceBelow","spaceAbove","estimatedPanelHeight","recomputePortalPosition","useEffect","next","rootEl","portalEl","handlePointerDown","event","target","inRoot","inPortal","useLayoutEffect","handleReposition","updateSelection","handleScroll","toggleOption","filteredOptions","useMemo","query","inputValue","inputPlaceholder","toggleDropdown","prev","handleTriggerKeyDown","allFilteredSelected","handleSelectAll","toAdd","limitedToAdd","baseId","optionsPanel","jsx","classNames","jsxs","index","value","checked","optionDisabled","inputId","DotLoader","createPortal"],"mappings":"iRA4DMA,GAAyB,CAAA,EAE/B,SAASC,EACPC,EACAC,EACAC,EACA,CACA,OAAOF,EAAS,KACbG,GAASA,IAAOD,CAAW,IAAMD,IAASC,CAAW,CAAA,CAE1D,CAEO,SAASE,GAEd,CACA,GAAAC,EAAK,KACL,MAAAC,EAAQ,KACR,UAAAC,EAAY,KACZ,eAAAC,EAAiB,KACjB,eAAAC,GAAiB,KACjB,iBAAAC,GAAmB,KACnB,oBAAAC,EAAsB,KACtB,yBAAAC,GAA2B,KAC3B,QAAAC,EAAUf,GACV,uBAAAgB,EAAyBhB,GACzB,YAAAiB,EAAc,QACd,YAAAb,EAAc,QACd,SAAAc,EACA,YAAAC,EAAc,UACd,qBAAAC,EACA,iBAAAC,EAAmB,aACnB,cAAAC,GAAgB,aAChB,kBAAAC,GAAoB,MACpB,cAAAC,GAAgB,kBAChB,aAAAC,EAAe,GACf,WAAAC,EAAa,MACb,aAAAC,EAAe,GACf,UAAAC,GAAY,GACZ,WAAAC,EAAa,GACb,YAAAC,EAAc,GACd,eAAAC,EAAiB,GACjB,aAAAC,EAAe,IACf,YAAAC,EACA,YAAAC,EACA,iBAAAC,GAAoBhC,GAClB,OAAOA,GAAQ,SAAY,SAAWA,EAAO,QAAU,OACzD,MAAAiC,GAAQ,KACR,eAAAC,GAAiB,IACnB,EAAgC,CAC9B,MAAMC,EAAUC,EAAAA,OAAuB,IAAI,EACrCC,EAAYD,EAAAA,OAAuB,IAAI,EACvCE,EAAgBF,EAAAA,OAAuB,IAAI,EAE3C,CAACG,EAAaC,CAAc,EAAIC,EAAAA,SAAS,EAAK,EAC9C,CAACC,EAAiBC,CAAkB,EAAIF,EAAAA,SAC5C5B,CAAA,EAEI,CAAC+B,EAAeC,CAAgB,EAAIJ,EAAAA,SACxC,IAAA,EAEI,CAACK,EAAaC,CAAc,EAAIN,EAAAA,SAAS,EAAE,EAC3C,CAACO,GAAaC,EAAc,EAAIR,EAAAA,SAA+B,IAAI,EACnE,CAACS,GAAaC,CAAc,EAAIV,EAAAA,SAAS,EAAK,EAG9CW,EAAoB,OADEnB,IAASC,EACe,EAC9CmB,EACJ,OAAO,SAASD,CAAiB,GAAKA,EAAoB,EAEtDE,EAAyBC,EAAAA,YAAY,IAAM,CAC/C,GAAI3B,EAAgB,CAClBiB,EAAiB,OAAOhB,CAAY,EAAI,IAAM,MAAQ,QAAQ,EAC9D,MACF,CACA,MAAM2B,EAASnB,EAAU,QACzB,GAAI,CAACmB,EAAQ,OACb,MAAMC,EAAOD,EAAO,sBAAA,EACdE,EAAa,OAAO,YAAcD,EAAK,OACvCE,EAAaF,EAAK,IAClBG,EAAuB,KAAOpC,EAAe,GAAK,GAAK,GAC7DqB,EACEa,EAAaE,GAAwBD,EAAaD,EAC9C,MACA,QAAA,CAER,EAAG,CAAClC,EAAcK,EAAcD,CAAc,CAAC,EAEzCiC,EAA0BN,EAAAA,YAAY,IAAM,CAChD,GAAI,CAAC5B,GAAe,CAACU,EAAU,QAAS,OACxC,MAAMoB,EAAOpB,EAAU,QAAQ,sBAAA,EAC/BY,GAAe,CACb,SAAU,QACV,KAAMQ,EAAK,KACX,IAAKb,IAAkB,MAAQa,EAAK,IAAMA,EAAK,OAC/C,MAAOA,EAAK,MACZ,OAAQ,IAAA,CACT,EACDN,EAAe,EAAI,CACrB,EAAG,CAACxB,EAAaiB,CAAa,CAAC,EAE/BkB,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAOV,EACTxC,EAAuB,MAAM,EAAGuC,CAAiB,EACjDvC,EACJ8B,EAAmBoB,CAAI,CACzB,EAAG,CAAClD,EAAwBwC,EAAmBD,CAAiB,CAAC,EAEjEU,EAAAA,UAAU,IAAM,CACTvB,IACHT,IAAc,EAAI,EAClBiB,EAAe,EAAE,EAErB,EAAG,CAACR,EAAaT,CAAW,CAAC,EAE7BgC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACvB,EAAa,OAElB,MAAMyB,EAAS7B,EAAQ,QACjB8B,EAAW3B,EAAc,QAEzB4B,EAAqBC,GAAwB,CACjD,MAAMC,EAASD,EAAM,OACfE,EAASL,GAAQ,SAASI,CAAM,EAChCE,GAAWL,GAAU,SAASG,CAAM,EACtC,CAACC,GAAU,CAACC,MAAyB,EAAK,CAChD,EAEA,gBAAS,iBAAiB,cAAeJ,EAAmB,EAAI,EACzD,IACL,SAAS,oBAAoB,cAAeA,EAAmB,EAAI,CACvE,EAAG,CAAC3B,CAAW,CAAC,EAEhBgC,EAAAA,gBAAgB,IAAM,CACpB,GAAI,CAAChC,EAAa,CAChBY,EAAe,EAAK,EACpB,MACF,CACAG,EAAA,CACF,EAAG,CAACf,EAAae,CAAsB,CAAC,EAExCiB,EAAAA,gBAAgB,IAAM,CAChB,CAAChC,GAAe,CAACZ,GACrBkC,EAAA,CACF,EAAG,CAACtB,EAAaZ,EAAakC,CAAuB,CAAC,EAEtDC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACvB,EAAa,OAElB,MAAMiC,EAAmB,IAAM,CAC7BlB,EAAA,EACI3B,GAAakC,EAAA,CACnB,EACA,cAAO,iBAAiB,SAAUW,CAAgB,EAClD,OAAO,iBAAiB,SAAUA,EAAkB,EAAI,EAEjD,IAAM,CACX,OAAO,oBAAoB,SAAUA,CAAgB,EACrD,OAAO,oBAAoB,SAAUA,EAAkB,EAAI,CAC7D,CACF,EAAG,CAACjC,EAAaZ,EAAa2B,EAAwBO,CAAuB,CAAC,EAE9E,MAAMY,EAAkBlB,EAAAA,YACrBQ,GAAc,CACbpB,EAAmBoB,CAAI,EACvBhD,IAAWgD,CAAI,CACjB,EACA,CAAChD,CAAQ,CAAA,EAGL2D,GAAenB,EAAAA,YAClBY,GAAmC,CAClC,MAAMC,EAASD,EAAM,cACjBC,EAAO,aAAeA,EAAO,WAAaA,EAAO,aAAe,GAClErC,IAAc,EAAI,CAEtB,EACA,CAACA,CAAW,CAAA,EAGR4C,GAAepB,EAAAA,YAClBvD,GAAc,CACb,GAAIF,EAAiB4C,EAAiB1C,EAAQC,CAAW,EAAG,CAC1DwE,EACE/B,EAAgB,OACbxC,GAASA,IAAOD,CAAW,IAAMD,IAASC,CAAW,CAAA,CACxD,EAEF,MACF,CACIoD,GAAqBX,EAAgB,QAAUU,GAGnDqB,EAAgB,CAAC,GAAG/B,EAAiB1C,CAAM,CAAC,CAC9C,EACA,CACEqD,EACAD,EACAnD,EACAyC,EACA+B,CAAA,CACF,EAGIG,EAAkBC,EAAAA,QAAQ,IAAM,CACpC,MAAMC,EAAQhC,EAAY,KAAA,EAAO,kBAAA,EACjC,OAAKgC,EACElE,EAAQ,OAAQZ,GACrB,OAAOA,IAASc,CAAW,GAAK,EAAE,EAC/B,oBACA,SAASgE,CAAK,CAAA,EAJAlE,CAMrB,EAAG,CAACA,EAASE,EAAagC,CAAW,CAAC,EAEhCiC,GAAaF,EAAAA,QAAQ,IACrBnC,EAAgB,SAAW,EAAU,GACrCA,EAAgB,SAAW,EACtB,OAAOA,EAAgB,CAAC,IAAI5B,CAAW,GAAK,EAAE,EAEhD,GAAG4B,EAAgB,MAAM,IAAIzB,GAAwBC,CAAgB,GAC3E,CAACA,EAAkBJ,EAAaG,EAAsByB,CAAe,CAAC,EAEnEsC,GACJzD,IAAe,MAAOD,GAAgBN,EAElCiE,EAAiB1B,EAAAA,YAAY,IAAM,CACnC7B,GACJc,EAAgB0C,GAAS,CAACA,CAAI,CAChC,EAAG,CAACxD,CAAU,CAAC,EAETyD,GAAwBhB,GAAyC,EACjEA,EAAM,MAAQ,SAAWA,EAAM,MAAQ,OACzCA,EAAM,eAAA,EACNc,EAAA,EAEJ,EAEMG,EAAsBP,EAAAA,QAC1B,IACED,EAAgB,OAAS,GACzBA,EAAgB,MAAO5E,GACrBF,EAAiB4C,EAAiB1C,EAAQC,CAAW,CAAA,EAEzD,CAAC2E,EAAiB3E,EAAayC,CAAe,CAAA,EAG1C2C,GAAkB9B,EAAAA,YAAY,IAAM,CACxC,GAAI6B,EAAqB,CACvBX,EACE/B,EAAgB,OACb3C,GACC,CAAC6E,EAAgB,KACd5E,GAAWD,IAAWE,CAAW,IAAMD,IAASC,CAAW,CAAA,CAC9D,CACJ,EAEF,MACF,CACA,MAAMqF,EAAQV,EAAgB,OAC3B5E,GAAW,CAACF,EAAiB4C,EAAiB1C,EAAQC,CAAW,CAAA,EAE9DsF,EAAelC,EACjBiC,EAAM,MAAM,EAAG,KAAK,IAAIlC,EAAoBV,EAAgB,OAAQ,CAAC,CAAC,EACtE4C,EACJb,EAAgB,CAAC,GAAG/B,EAAiB,GAAG6C,CAAY,CAAC,CACvD,EAAG,CACDH,EACAR,EACAvB,EACAD,EACAnD,EACAyC,EACA+B,CAAA,CACD,EAEKe,EAASpF,GAAM,gCAEfqF,EACJC,EAAAA,IAAC,MAAA,CACC,IAAK/D,EAAcW,EAAgB,OACnC,UAAWqD,EAAAA,WACT,4CACAhE,GAAe,oDACfiB,IAAkB,OAAS,qBAAA,EAE7B,MACEjB,EACI,CAAE,GAAIqB,IAAe,CAAA,EAAK,WAAYE,GAAc,UAAY,QAAA,EAChE,OAEN,cAAgBiB,GAAUA,EAAM,gBAAA,EAEhC,SAAAyB,EAAAA,KAAC,MAAA,CACC,UAAWD,EAAAA,WACT,yCACAhE,GAAe,iDACflB,EAAA,EAEF,SAAUiE,GAET,SAAA,CAAAlD,GACCkE,EAAAA,IAAC,MAAA,CAAI,UAAU,wCACb,SAAAA,EAAAA,IAAC,QAAA,CACC,KAAK,OACL,YAAatE,GACb,UAAWuE,EAAAA,WACT,8CACAhF,EAAA,EAEF,MAAOmC,EACP,SAAWqB,GACTpB,EAAeoB,EAAM,OAAO,KAAK,EAEnC,SAAUzC,CAAA,CAAA,EAEd,EAGFkE,EAAAA,KAAC,MAAA,CACC,UAAWD,EAAAA,WACT,6CACAjF,CAAA,EAGF,SAAA,CAAAgF,EAAAA,IAAC,QAAA,CACC,GAAI,GAAGF,CAAM,cACb,KAAK,WACL,QAASJ,EACT,SAAUC,GACV,SAAU3D,CAAA,CAAA,QAEX,QAAA,CAAM,QAAS,GAAG8D,CAAM,cAAgB,SAAArE,EAAA,CAAc,CAAA,CAAA,CAAA,EAGxDyD,EAAgB,IAAI,CAAC5E,EAAQ6F,IAAU,CACtC,MAAMC,EAAQ9F,IAASC,CAAW,GAAK4F,EACjCE,EAAUjG,EAAiB4C,EAAiB1C,EAAQC,CAAW,EAC/D+F,EACJtE,GACC,CAACqE,GAAW1C,GAAqBX,EAAgB,QAAUU,EACxD6C,EAAU,GAAGT,CAAM,IAAI,OAAOM,CAAK,CAAC,GAE1C,OACEF,EAAAA,KAAC,MAAA,CAEC,UAAWD,EAAAA,WACT,6CACAI,GAAW,sBACXC,GAAkB,sBAClBtF,CAAA,EAEF,MAAOsB,GAAiBhC,CAAM,EAE9B,SAAA,CAAA0F,EAAAA,IAAC,QAAA,CACC,GAAIO,EACJ,KAAK,WACL,QAAAF,EACA,SAAU,IAAMpB,GAAa3E,CAAM,EACnC,SAAUgG,CAAA,CAAA,EAEZN,EAAAA,IAAC,SAAM,QAASO,EACb,gBAAOjG,IAASc,CAAW,GAAK,EAAE,CAAA,CACrC,CAAA,CAAA,EAlBK,OAAOgF,CAAK,CAAA,CAqBvB,CAAC,CAAA,CAAA,CAAA,CACH,CAAA,EAIJ,OACEF,EAAAA,KAAC,MAAA,CACC,IAAKzD,EACL,GAAI/B,GAAM,OACV,UAAWuF,EAAAA,WACT,gCACArE,GAAgB,mBAChBI,GAAc,sBACdkB,IAAkB,OAAS,CAACjB,GAAe,sBAC3CrB,CAAA,EAGD,SAAA,CAAAD,GACCqF,EAAAA,IAAC,OAAA,CACC,UAAWC,EAAAA,WACT,uCACApF,CAAA,EAGD,SAAAF,CAAA,CAAA,EAILuF,EAAAA,KAAC,MAAA,CAAI,UAAU,4CACZ,SAAA,CAAAnE,UACE,MAAA,CAAI,UAAU,8CACb,SAAAiE,MAACQ,GAAAA,YAAU,EACb,EAGFN,EAAAA,KAAC,MAAA,CACC,IAAKvD,EACL,KAAK,SACL,SAAU,EACV,UAAU,iDACV,QAAS4C,EACT,UAAWE,GAEX,SAAA,CAAAO,EAAAA,IAAC,QAAA,CACC,KAAK,OACL,UAAWC,EAAAA,WACT,uCACAnF,EAAA,EAEF,YAAawE,GACb,SAAQ,GACR,MAAOD,EAAA,CAAA,EAETW,EAAAA,IAAC,OAAA,CACC,UAAU,2CACV,cAAY,MAAA,CAAA,CACd,CAAA,CAAA,CACF,EACF,EAECnD,IACE3B,EAAQ,OAAS,EAChBe,EACEwE,gBAAaV,EAAc,SAAS,IAAI,EAExCA,QAGD,MAAA,CAAI,UAAU,wCACb,SAAAC,EAAAA,IAAC,OAAA,CAAM,YAAc,CAAA,CACvB,GAGHnE,IAAe,MAAQD,SACrB,OAAA,CAAK,UAAU,uCACb,SAAAA,CAAA,CACH,CAAA,CAAA,CAAA,CAIR"}
1
+ {"version":3,"file":"MultiSelectCheckBox.cjs","sources":["../../../../src/components/MultiSelectCheckBox/MultiSelectCheckBox.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n type CSSProperties,\n type KeyboardEvent,\n type ReactNode,\n type UIEvent,\n} from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { DotLoader } from '../DotLoader'\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\n\nexport interface MultiSelectCheckBoxOption {\n [key: string]: unknown\n}\n\nexport interface MultiSelectCheckBoxProps<\n T extends MultiSelectCheckBoxOption = MultiSelectCheckBoxOption,\n> {\n id?: string | null\n label?: ReactNode\n className?: string | null\n labelClassName?: string | null\n inputClassName?: string | null\n optionsClassName?: string | null\n optionItemClassName?: string | null\n searchableInputClassName?: string | null\n options?: T[]\n defaultSelectedOptions?: T[]\n optionLabel?: string\n optionValue?: string\n onChange?: (selected: T[]) => void\n placeholder?: string\n selectedInputMessage?: string\n itemSelectedText?: string\n selectAllText?: string\n searchPlaceholder?: string\n noDataMessage?: string\n errorMessage?: string\n errorPlace?: 'in' | 'out'\n isSearchable?: boolean\n isLoading?: boolean\n isDisabled?: boolean\n reactPortal?: boolean\n windowPosition?: boolean\n windowHeight?: number\n windowClose?: (closed: boolean) => void\n isScrollEnd?: (end: boolean) => void\n getOptionTooltip?: (option: T) => string | undefined\n limit?: number | null\n selectionLimit?: number | null\n}\n\nconst EMPTY_OPTIONS: never[] = []\n\nfunction toOptionArray<T>(value: unknown): T[] {\n if (Array.isArray(value)) return value as T[]\n if (value && typeof value === 'object') return [value as T]\n return EMPTY_OPTIONS\n}\n\nfunction isOptionSelected<T extends MultiSelectCheckBoxOption>(\n selected: T[],\n option: T,\n optionValue: string,\n) {\n if (!Array.isArray(selected)) return false\n return selected.some(\n (item) => item?.[optionValue] === option?.[optionValue],\n )\n}\n\nexport function MultiSelectCheckBox<\n T extends MultiSelectCheckBoxOption = MultiSelectCheckBoxOption,\n>({\n id = null,\n label = null,\n className = null,\n labelClassName = null,\n inputClassName = null,\n optionsClassName = null,\n optionItemClassName = null,\n searchableInputClassName = null,\n options: rawOptions = EMPTY_OPTIONS,\n defaultSelectedOptions: rawDefaultSelectedOptions = EMPTY_OPTIONS,\n optionLabel = 'label',\n optionValue = 'value',\n onChange,\n placeholder = 'Seçiniz',\n selectedInputMessage,\n itemSelectedText = 'öğe seçili',\n selectAllText = 'Tümünü Seç',\n searchPlaceholder = 'Ara',\n noDataMessage = 'Veri bulunamadı',\n errorMessage = '',\n errorPlace = 'out',\n isSearchable = false,\n isLoading = false,\n isDisabled = false,\n reactPortal = false,\n windowPosition = false,\n windowHeight = 800,\n windowClose,\n isScrollEnd,\n getOptionTooltip = (option: T) =>\n typeof option?.tooltip === 'string' ? option.tooltip : undefined,\n limit = null,\n selectionLimit = null,\n}: MultiSelectCheckBoxProps<T>) {\n const options = useMemo(() => toOptionArray<T>(rawOptions), [rawOptions])\n const defaultSelectedOptions = useMemo(\n () => toOptionArray<T>(rawDefaultSelectedOptions),\n [rawDefaultSelectedOptions],\n )\n const rootRef = useRef<HTMLDivElement>(null)\n const anchorRef = useRef<HTMLDivElement>(null)\n const portalWrapRef = useRef<HTMLDivElement>(null)\n\n const [showOptions, setShowOptions] = useState(false)\n const [selectedOptions, setSelectedOptions] = useState<T[]>(\n defaultSelectedOptions,\n )\n const [openDirection, setOpenDirection] = useState<'top' | 'bottom' | null>(\n null,\n )\n const [searchValue, setSearchValue] = useState('')\n const [portalStyle, setPortalStyle] = useState<CSSProperties | null>(null)\n const [portalReady, setPortalReady] = useState(false)\n\n const selectionLimitValue = limit ?? selectionLimit\n const maxSelectionCount = Number(selectionLimitValue)\n const hasSelectionLimit =\n Number.isFinite(maxSelectionCount) && maxSelectionCount > 0\n\n const recomputeOpenDirection = useCallback(() => {\n if (windowPosition) {\n setOpenDirection(Number(windowHeight) < 800 ? 'top' : 'bottom')\n return\n }\n const anchor = anchorRef.current\n if (!anchor) return\n const rect = anchor.getBoundingClientRect()\n const spaceBelow = window.innerHeight - rect.bottom\n const spaceAbove = rect.top\n const estimatedPanelHeight = 240 + (isSearchable ? 46 : 0) + 40\n setOpenDirection(\n spaceBelow < estimatedPanelHeight && spaceAbove > spaceBelow\n ? 'top'\n : 'bottom',\n )\n }, [isSearchable, windowHeight, windowPosition])\n\n const recomputePortalPosition = useCallback(() => {\n if (!reactPortal || !anchorRef.current) return\n const rect = anchorRef.current.getBoundingClientRect()\n setPortalStyle({\n position: 'fixed',\n left: rect.left,\n top: openDirection === 'top' ? rect.top : rect.bottom,\n width: rect.width,\n zIndex: 9999,\n })\n setPortalReady(true)\n }, [reactPortal, openDirection])\n\n useEffect(() => {\n const next = hasSelectionLimit\n ? defaultSelectedOptions.slice(0, maxSelectionCount)\n : defaultSelectedOptions\n setSelectedOptions(next)\n }, [defaultSelectedOptions, hasSelectionLimit, maxSelectionCount])\n\n useEffect(() => {\n if (!showOptions) {\n windowClose?.(true)\n setSearchValue('')\n }\n }, [showOptions, windowClose])\n\n useEffect(() => {\n if (!showOptions) return undefined\n\n const rootEl = rootRef.current\n const portalEl = portalWrapRef.current\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node\n const inRoot = rootEl?.contains(target)\n const inPortal = portalEl?.contains(target)\n if (!inRoot && !inPortal) setShowOptions(false)\n }\n\n document.addEventListener('pointerdown', handlePointerDown, true)\n return () =>\n document.removeEventListener('pointerdown', handlePointerDown, true)\n }, [showOptions])\n\n useLayoutEffect(() => {\n if (!showOptions) {\n setPortalReady(false)\n return\n }\n recomputeOpenDirection()\n }, [showOptions, recomputeOpenDirection])\n\n useLayoutEffect(() => {\n if (!showOptions || !reactPortal) return\n recomputePortalPosition()\n }, [showOptions, reactPortal, recomputePortalPosition])\n\n useEffect(() => {\n if (!showOptions) return undefined\n\n const handleReposition = () => {\n recomputeOpenDirection()\n if (reactPortal) recomputePortalPosition()\n }\n window.addEventListener('resize', handleReposition)\n window.addEventListener('scroll', handleReposition, true)\n\n return () => {\n window.removeEventListener('resize', handleReposition)\n window.removeEventListener('scroll', handleReposition, true)\n }\n }, [showOptions, reactPortal, recomputeOpenDirection, recomputePortalPosition])\n\n const updateSelection = useCallback(\n (next: T[]) => {\n setSelectedOptions(next)\n onChange?.(next)\n },\n [onChange],\n )\n\n const handleScroll = useCallback(\n (event: UIEvent<HTMLDivElement>) => {\n const target = event.currentTarget\n if (target.scrollHeight - target.scrollTop <= target.clientHeight + 1) {\n isScrollEnd?.(true)\n }\n },\n [isScrollEnd],\n )\n\n const toggleOption = useCallback(\n (option: T) => {\n if (isOptionSelected(selectedOptions, option, optionValue)) {\n updateSelection(\n selectedOptions.filter(\n (item) => item?.[optionValue] !== option?.[optionValue],\n ),\n )\n return\n }\n if (hasSelectionLimit && selectedOptions.length >= maxSelectionCount) {\n return\n }\n updateSelection([...selectedOptions, option])\n },\n [\n hasSelectionLimit,\n maxSelectionCount,\n optionValue,\n selectedOptions,\n updateSelection,\n ],\n )\n\n const filteredOptions = useMemo(() => {\n const query = searchValue.trim().toLocaleLowerCase()\n if (!query) return options\n return options.filter((option) =>\n String(option?.[optionLabel] ?? '')\n .toLocaleLowerCase()\n .includes(query),\n )\n }, [options, optionLabel, searchValue])\n\n const inputValue = useMemo(() => {\n if (selectedOptions.length === 0) return ''\n if (selectedOptions.length === 1) {\n return String(selectedOptions[0]?.[optionLabel] ?? '')\n }\n return `${selectedOptions.length} ${selectedInputMessage || itemSelectedText}`\n }, [itemSelectedText, optionLabel, selectedInputMessage, selectedOptions])\n\n const inputPlaceholder =\n errorPlace === 'in' ? errorMessage || placeholder : placeholder\n\n const toggleDropdown = useCallback(() => {\n if (isDisabled) return\n setShowOptions((prev) => !prev)\n }, [isDisabled])\n\n const handleTriggerKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n toggleDropdown()\n }\n }\n\n const allFilteredSelected = useMemo(\n () =>\n filteredOptions.length > 0 &&\n filteredOptions.every((option) =>\n isOptionSelected(selectedOptions, option, optionValue),\n ),\n [filteredOptions, optionValue, selectedOptions],\n )\n\n const handleSelectAll = useCallback(() => {\n if (allFilteredSelected) {\n updateSelection(\n selectedOptions.filter(\n (selected) =>\n !filteredOptions.some(\n (option) => selected?.[optionValue] === option?.[optionValue],\n ),\n ),\n )\n return\n }\n const toAdd = filteredOptions.filter(\n (option) => !isOptionSelected(selectedOptions, option, optionValue),\n )\n const limitedToAdd = hasSelectionLimit\n ? toAdd.slice(0, Math.max(maxSelectionCount - selectedOptions.length, 0))\n : toAdd\n updateSelection([...selectedOptions, ...limitedToAdd])\n }, [\n allFilteredSelected,\n filteredOptions,\n hasSelectionLimit,\n maxSelectionCount,\n optionValue,\n selectedOptions,\n updateSelection,\n ])\n\n const baseId = id || 'inconel-multi-select-checkbox'\n\n const optionsPanel = (\n <div\n ref={reactPortal ? portalWrapRef : undefined}\n className={classNames(\n 'inconel-multi-select-checkbox__panel-wrap',\n reactPortal && 'inconel-multi-select-checkbox__panel-wrap--portal',\n openDirection === 'top' && 'inconel-is-open-top',\n )}\n style={\n reactPortal\n ? { ...(portalStyle ?? {}), visibility: portalReady ? 'visible' : 'hidden' }\n : undefined\n }\n onPointerDown={(event) => event.stopPropagation()}\n >\n <div\n className={classNames(\n 'inconel-multi-select-checkbox__options',\n reactPortal && 'inconel-multi-select-checkbox__options--portal',\n optionsClassName,\n )}\n onScroll={handleScroll}\n >\n {isSearchable && (\n <div className=\"inconel-multi-select-checkbox__search\">\n <input\n type=\"text\"\n placeholder={searchPlaceholder}\n className={classNames(\n 'inconel-multi-select-checkbox__search-input',\n searchableInputClassName,\n )}\n value={searchValue}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n setSearchValue(event.target.value)\n }\n disabled={isDisabled}\n />\n </div>\n )}\n\n <div\n className={classNames(\n 'inconel-multi-select-checkbox__option-item',\n optionItemClassName,\n )}\n >\n <input\n id={`${baseId}-select-all`}\n type=\"checkbox\"\n checked={allFilteredSelected}\n onChange={handleSelectAll}\n disabled={isDisabled}\n />\n <label htmlFor={`${baseId}-select-all`}>{selectAllText}</label>\n </div>\n\n {filteredOptions.map((option, index) => {\n const value = option?.[optionValue] ?? index\n const checked = isOptionSelected(selectedOptions, option, optionValue)\n const optionDisabled =\n isDisabled ||\n (!checked && hasSelectionLimit && selectedOptions.length >= maxSelectionCount)\n const inputId = `${baseId}-${String(value)}`\n\n return (\n <div\n key={String(value)}\n className={classNames(\n 'inconel-multi-select-checkbox__option-item',\n checked && 'inconel-is-selected',\n optionDisabled && 'inconel-is-disabled',\n optionItemClassName,\n )}\n title={getOptionTooltip(option)}\n >\n <input\n id={inputId}\n type=\"checkbox\"\n checked={checked}\n onChange={() => toggleOption(option)}\n disabled={optionDisabled}\n />\n <label htmlFor={inputId}>\n {String(option?.[optionLabel] ?? '')}\n </label>\n </div>\n )\n })}\n </div>\n </div>\n )\n\n return (\n <div\n ref={rootRef}\n id={id ?? undefined}\n className={classNames(\n 'inconel-multi-select-checkbox',\n errorMessage && 'inconel-is-error',\n isDisabled && 'inconel-is-disabled',\n openDirection === 'top' && !reactPortal && 'inconel-is-open-top',\n className,\n )}\n >\n {label && (\n <span\n className={classNames(\n 'inconel-multi-select-checkbox__label',\n labelClassName,\n )}\n >\n {label}\n </span>\n )}\n\n <div className=\"inconel-multi-select-checkbox__input-wrap\">\n {isLoading && (\n <div className=\"inconel-multi-select-checkbox__loader-cover\">\n <DotLoader />\n </div>\n )}\n\n <div\n ref={anchorRef}\n role=\"button\"\n tabIndex={0}\n className=\"inconel-multi-select-checkbox__input-container\"\n onClick={toggleDropdown}\n onKeyDown={handleTriggerKeyDown}\n >\n <input\n type=\"text\"\n className={classNames(\n 'inconel-multi-select-checkbox__input',\n inputClassName,\n )}\n placeholder={inputPlaceholder}\n readOnly\n value={inputValue}\n />\n <span\n className=\"inconel-multi-select-checkbox__indicator\"\n aria-hidden=\"true\"\n />\n </div>\n </div>\n\n {showOptions &&\n (options.length > 0 ? (\n reactPortal ? (\n createPortal(optionsPanel, document.body)\n ) : (\n optionsPanel\n )\n ) : (\n <div className=\"inconel-multi-select-checkbox__nodata\">\n <span>{noDataMessage}</span>\n </div>\n ))}\n\n {errorPlace !== 'in' && errorMessage && (\n <span className=\"inconel-multi-select-checkbox__error\">\n {errorMessage}\n </span>\n )}\n </div>\n )\n}\n"],"names":["EMPTY_OPTIONS","toOptionArray","value","isOptionSelected","selected","option","optionValue","item","MultiSelectCheckBox","id","label","className","labelClassName","inputClassName","optionsClassName","optionItemClassName","searchableInputClassName","rawOptions","rawDefaultSelectedOptions","optionLabel","onChange","placeholder","selectedInputMessage","itemSelectedText","selectAllText","searchPlaceholder","noDataMessage","errorMessage","errorPlace","isSearchable","isLoading","isDisabled","reactPortal","windowPosition","windowHeight","windowClose","isScrollEnd","getOptionTooltip","limit","selectionLimit","options","useMemo","defaultSelectedOptions","rootRef","useRef","anchorRef","portalWrapRef","showOptions","setShowOptions","useState","selectedOptions","setSelectedOptions","openDirection","setOpenDirection","searchValue","setSearchValue","portalStyle","setPortalStyle","portalReady","setPortalReady","maxSelectionCount","hasSelectionLimit","recomputeOpenDirection","useCallback","anchor","rect","spaceBelow","spaceAbove","estimatedPanelHeight","recomputePortalPosition","useEffect","next","rootEl","portalEl","handlePointerDown","event","target","inRoot","inPortal","useLayoutEffect","handleReposition","updateSelection","handleScroll","toggleOption","filteredOptions","query","inputValue","inputPlaceholder","toggleDropdown","prev","handleTriggerKeyDown","allFilteredSelected","handleSelectAll","toAdd","limitedToAdd","baseId","optionsPanel","jsx","classNames","jsxs","index","checked","optionDisabled","inputId","DotLoader","createPortal"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react/jsx-runtime"),n=require("react"),w=require("@floating-ui/react"),gt=require("@tanstack/react-virtual"),bt=require("react-dom"),u=require("../shared/classNames.cjs");;/* empty css */;/* empty css */;/* empty css */;/* empty css */const ht=require("../FieldFeedback/FieldFeedback.cjs"),yt=require("../../adapters/context.cjs");function xt({id:ve,name:P,label:j,options:M=[],value:ke,onChange:L,optionLabel:A="label",optionValue:B="value",getOptionSearchText:F,isOptionDisabled:C=()=>!1,placeholder:Se,isClearable:ee=!1,isDisabled:we=!1,isReadOnly:je=!1,isRequired:te=!1,isLoading:Ie=!1,loadOptions:h,loadOptionsDebounceMs:ne=250,hint:se,errorMessage:y,asyncErrorMessage:Ee,loadingMessage:Ne,noOptionsMessage:qe,clearButtonLabel:Le,openMenuButtonLabel:Ae,closeMenuButtonLabel:Be,searchLocale:$,menuPortalTarget:D,virtualize:Ce=!1,virtualizationThreshold:De=100,optionHeight:ze=44,className:Oe,classNames:o={},styles:i={},onInputChange:I,onMenuOpen:Ve,onMenuClose:le,autoFocus:Re,selectClassName:re,disabled:Me,isSearchable:Fe=!0,readOnly:$e,defaultValue:He,errorPlace:H,onBlur:Te,setFieldValue:Ue,render:Ye=!0,singleValue:Ke,sortByUppercase:_e,inputClassName:We,labelClassName:Ge,size:ae="md",required:Je},Qe){const m=yt.useInconelAdapters(),oe=Ke!==void 0||re!==void 0||H!==void 0,z=ke??Ue??He??null,Xe=n.useId(),d=ve??`inconel-select-${Xe.replace(/:/g,"")}`,ie=`${d}-label`,ce=`${d}-listbox`,ue=`${d}-message`,de=`${d}-hint`,fe=n.useRef(null),E=n.useRef(null),T=n.useRef(null),[l,me]=n.useState(!1),[p,U]=n.useState(""),[c,f]=n.useState(0),[Ze,Pe]=n.useState(null),[et,pe]=n.useState(!1),[tt,ge]=n.useState(!1);n.useEffect(()=>{if(!h)return;const e=new AbortController,t=window.setTimeout(async()=>{pe(!0),ge(!1);try{const a=await h(p,e.signal);e.signal.aborted||Pe(a)}catch{e.signal.aborted||ge(!0)}finally{e.signal.aborted||pe(!1)}},ne);return()=>{window.clearTimeout(t),e.abort()}},[p,h,ne]);const x=h?Ze??M:M,Y=Ie||et,g=we||!!Me,N=je||!!$e,K=te||!!Je,nt=(H==="in"&&y?String(y):Se)??String(m.translate?.("select","Seçim yapın...")??"Seçim yapın..."),st=qe??m.translate?.("noData","Sonuç bulunamadı.")??"Sonuç bulunamadı.",lt=Ne??m.translate?.("loading","Yükleniyor...")??"Yükleniyor...",rt=Le??String(m.translate?.("clearSelection","Seçimi temizle")??"Seçimi temizle"),at=Ae??String(m.translate?.("openOptions","Seçenekleri aç")??"Seçenekleri aç"),ot=Be??String(m.translate?.("closeOptions","Seçenekleri kapat")??"Seçenekleri kapat"),_=n.useCallback(e=>typeof A=="function"?A(e):String(e[A]),[A]),W=n.useCallback(e=>{if(F)return F(e);const t=_(e);return typeof t=="string"||typeof t=="number"?String(t):""},[_,F]),v=n.useCallback(e=>{const t=typeof B=="function"?B(e):e[B];if(typeof t!="string"&&typeof t!="number")throw new TypeError("optionValue must resolve to a string or number.");return t},[B]),b=z&&typeof z=="object"?v(z):z,G=n.useCallback((e,t)=>{L&&(oe?L(t):L(e,t))},[oe,L]),J=n.useMemo(()=>{const e=new Set;return x.map(v).filter(t=>e.has(t)?!0:(e.add(t),!1))},[x,v]);n.useEffect(()=>{J.length&&console.warn(`Duplicate optionValue found in Select "${j}":`,J)},[J,j]);const Q=[...M,...x].find(e=>v(e)===b),it=Q?W(Q):"",r=n.useMemo(()=>{const e=p.trim().toLocaleLowerCase($);return!e||h?x:x.filter(t=>W(t).toLocaleLowerCase($).includes(e))},[x,W,p,h,$]),{refs:be,floatingStyles:ct}=w.useFloating({open:l,placement:"bottom-start",strategy:D?"fixed":"absolute",whileElementsMounted:w.autoUpdate,middleware:[w.offset(8),w.flip({padding:12}),w.shift({padding:12}),w.size({padding:12,apply({availableHeight:e,rects:t,elements:a}){Object.assign(a.floating.style,{maxHeight:`${Math.min(230,e)}px`,width:`${t.reference.width}px`})}})]}),O=Ce||r.length>=De,V=gt.useVirtualizer({count:r.length,getScrollElement:()=>T.current,estimateSize:()=>ze,overscan:5,enabled:O&&l}),k=n.useCallback(()=>{me(!1),U(""),I?.(""),le?.()},[I,le]),q=()=>{g||N||(l||Ve?.(),me(!0))},R=n.useCallback(()=>{g||N||(G(null,null),U(""),f(0),I?.(""),E.current?.focus())},[g,N,G,I]);n.useImperativeHandle(Qe,()=>({focus:()=>E.current?.focus(),blur:()=>E.current?.blur(),clear:R}),[R]),n.useEffect(()=>{const e=t=>{const a=t.target;!fe.current?.contains(a)&&!T.current?.contains(a)&&k()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[k]),n.useEffect(()=>{c>=r.length&&f(0)},[c,r.length]),n.useEffect(()=>{O&&l&&r[c]&&V.scrollToIndex(c,{align:"auto"})},[c,r,l,O,V]);const he=e=>{C(e)||(G(v(e),e),k(),E.current?.focus())},ut=e=>{if(!r.length)return;let t=c;do t=(t+e+r.length)%r.length;while(C(r[t])&&t!==c);f(t)},X=(e=!1)=>{const t=r.map((a,S)=>({option:a,index:S}));return e&&t.reverse(),t.find(({option:a})=>!C(a))?.index??0},dt=e=>{if(e.key==="Backspace"&&!p&&b!==null&&ee){e.preventDefault(),R();return}if(e.key==="ArrowDown"||e.key==="ArrowUp")e.preventDefault(),l?ut(e.key==="ArrowDown"?1:-1):(q(),f(X(e.key==="ArrowUp")));else if(e.key==="Home"&&l)e.preventDefault(),f(X());else if(e.key==="End"&&l)e.preventDefault(),f(X(!0));else if(e.key==="Enter"&&l){e.preventDefault();const t=r[c];t&&he(t)}else e.key==="Escape"&&l?(e.preventDefault(),k()):e.key==="Tab"&&k()},ye=(e,t,a)=>{const S=v(e),xe=C(e);return s.jsxs("div",{id:`${d}-option-${t}`,role:"option","aria-selected":S===b,"aria-disabled":xe,"aria-posinset":t+1,"aria-setsize":r.length,className:u.classNames("inconel-select-option",t===c&&"inconel-is-active",S===b&&"inconel-is-selected",xe&&"inconel-is-disabled",o.option),style:{...a,...i.option},onMouseEnter:()=>f(t),onMouseDown:pt=>pt.preventDefault(),onClick:()=>he(e),children:[s.jsx("span",{children:_(e)}),S===b&&s.jsx("span",{"aria-hidden":"true",children:"✓"})]},S)},ft=Y?s.jsxs("div",{role:"status",className:u.classNames("inconel-select-message",o.message),style:i.message,children:[s.jsx("span",{className:"inconel-select-spinner","aria-hidden":"true"}),lt]}):tt?s.jsx("div",{role:"alert",className:u.classNames("inconel-select-message inconel-select-message-error",o.message),style:i.message,children:Ee}):r.length===0?s.jsx("div",{className:u.classNames("inconel-select-message",o.message),style:i.message,children:st}):O?s.jsx("div",{role:"presentation",className:"inconel-select-virtual-content",style:{height:V.getTotalSize()},children:V.getVirtualItems().map(e=>ye(r[e.index],e.index,{position:"absolute",top:0,left:0,width:"100%",height:e.size,transform:`translateY(${e.start}px)`}))}):r.map((e,t)=>ye(e,t)),Z=l?s.jsx("div",{ref:e=>{T.current=e,be.setFloating(e)},id:ce,role:"listbox","aria-labelledby":j?ie:void 0,className:u.classNames("inconel-select-menu",D&&"inconel-select-menu-portal",o.menu),style:{...ct,...i.menu},children:ft}):null,mt=y?ue:se?de:void 0;return Ye?s.jsxs("div",{ref:fe,className:u.classNames("inconel-select-field",`inconel-size-${ae}`,`inconel-select-field--${ae}`,Oe,o.root),style:i.root,children:[j&&s.jsxs("label",{id:ie,htmlFor:d,className:u.classNames(o.label,Ge),style:i.label,children:[j,K&&s.jsx("span",{"aria-hidden":"true",children:" *"})]}),s.jsxs("div",{ref:be.setReference,className:u.classNames("inconel-select-control",l&&"inconel-is-open",g&&"inconel-is-disabled",!!y&&"inconel-has-error",o.control),style:i.control,children:[s.jsx("input",{ref:E,id:d,role:"combobox","aria-expanded":l,"aria-controls":ce,"aria-autocomplete":"list","aria-activedescendant":l&&r[c]?`${d}-option-${c}`:void 0,"aria-describedby":mt,"aria-invalid":!!y,"aria-required":te,"aria-busy":Y,required:K,disabled:g,readOnly:N||!Fe,autoFocus:Re,autoComplete:"off",placeholder:nt,value:p||it,className:u.classNames(o.input,We,re),style:i.input,onChange:e=>{const t=_e?e.target.value.toLocaleUpperCase(m.locale??"tr-TR"):e.target.value;U(t),f(0),I?.(t),q()},onClick:q,onFocus:e=>{q(),Q&&!p&&e.currentTarget.select()},onBlur:Te,onKeyDown:dt}),Y&&s.jsx("span",{className:"inconel-select-spinner","aria-hidden":"true"}),ee&&b!==null&&!g&&!N&&s.jsx("button",{type:"button",className:u.classNames("inconel-select-clear",o.clearButton),style:i.clearButton,"aria-label":rt,onClick:R,children:"×"}),s.jsx("button",{type:"button",className:u.classNames("inconel-select-toggle",o.toggleButton),style:i.toggleButton,"aria-label":l?ot:at,"aria-expanded":l,disabled:g,tabIndex:-1,onClick:()=>l?k():q(),children:s.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 20 20",width:"20",height:"20",fill:"none",children:s.jsx("path",{d:"m5 7.5 5 5 5-5",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),P&&s.jsx("input",{type:"hidden",name:P,value:b??"",required:K}),s.jsx(ht.default,{hint:se,errorMessage:H==="in"?void 0:y,hintId:de,errorId:ue}),D&&Z?bt.createPortal(Z,D):Z]}):null}const vt=n.forwardRef(xt);exports.default=vt;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react/jsx-runtime"),n=require("react"),w=require("@floating-ui/react"),gt=require("@tanstack/react-virtual"),bt=require("react-dom"),u=require("../shared/classNames.cjs");;/* empty css */;/* empty css */;/* empty css */;/* empty css */const yt=require("../FieldFeedback/FieldFeedback.cjs"),ht=require("../../adapters/context.cjs");function xt({id:ve,name:P,label:j,options:M=[],value:Se,onChange:L,optionLabel:A="label",optionValue:B="value",getOptionSearchText:F,isOptionDisabled:C=()=>!1,placeholder:ke,isClearable:ee=!1,isDisabled:we=!1,isReadOnly:je=!1,isRequired:te=!1,isLoading:Ie=!1,loadOptions:y,loadOptionsDebounceMs:ne=250,hint:se,errorMessage:h,asyncErrorMessage:Ee,loadingMessage:Ne,noOptionsMessage:qe,clearButtonLabel:Le,openMenuButtonLabel:Ae,closeMenuButtonLabel:Be,searchLocale:$,menuPortalTarget:D,virtualize:Ce=!1,virtualizationThreshold:De=100,optionHeight:ze=44,className:Oe,classNames:o={},styles:i={},onInputChange:I,onMenuOpen:Ve,onMenuClose:le,autoFocus:Re,selectClassName:re,disabled:Me,isSearchable:Fe=!0,readOnly:$e,defaultValue:He,errorPlace:H,onBlur:Te,setFieldValue:Ue,render:Ye=!0,singleValue:Ke,sortByUppercase:_e,inputClassName:We,labelClassName:Ge,size:ae="md",required:Je},Qe){const p=ht.useInconelAdapters(),oe=Ke!==void 0||re!==void 0||H!==void 0,z=Se??Ue??He??null,Xe=n.useId(),d=ve??`inconel-select-${Xe.replace(/:/g,"")}`,ie=`${d}-label`,ce=`${d}-listbox`,ue=`${d}-message`,de=`${d}-hint`,fe=n.useRef(null),E=n.useRef(null),T=n.useRef(null),[l,me]=n.useState(!1),[g,U]=n.useState(""),[c,f]=n.useState(0),[Ze,Pe]=n.useState(null),[et,pe]=n.useState(!1),[tt,ge]=n.useState(!1);n.useEffect(()=>{if(!y)return;const e=new AbortController,t=window.setTimeout(async()=>{pe(!0),ge(!1);try{const a=await y(g,e.signal);e.signal.aborted||Pe(a)}catch{e.signal.aborted||ge(!0)}finally{e.signal.aborted||pe(!1)}},ne);return()=>{window.clearTimeout(t),e.abort()}},[g,y,ne]);const x=y?Ze??M:M,Y=Ie||et,b=we||!!Me,N=je||!!$e,K=te||!!Je,nt=(H==="in"&&h?String(h):ke)??String(p.translate?.("select","Seçim yapın...")??"Seçim yapın..."),st=qe??p.translate?.("noData","Sonuç bulunamadı.")??"Sonuç bulunamadı.",lt=Ne??p.translate?.("loading","Yükleniyor...")??"Yükleniyor...",rt=Le??String(p.translate?.("clearSelection","Seçimi temizle")??"Seçimi temizle"),at=Ae??String(p.translate?.("openOptions","Seçenekleri aç")??"Seçenekleri aç"),ot=Be??String(p.translate?.("closeOptions","Seçenekleri kapat")??"Seçenekleri kapat"),_=n.useCallback(e=>typeof A=="function"?A(e):String(e[A]),[A]),W=n.useCallback(e=>{if(F)return F(e);const t=_(e);return typeof t=="string"||typeof t=="number"?String(t):""},[_,F]),v=n.useCallback(e=>{const t=typeof B=="function"?B(e):e[B];if(typeof t!="string"&&typeof t!="number"&&typeof t!="boolean")throw new TypeError("optionValue must resolve to a string, number or boolean.");return t},[B]),m=z&&typeof z=="object"?v(z):z,G=n.useCallback((e,t)=>{L&&(oe?L(t):L(e,t))},[oe,L]),J=n.useMemo(()=>{const e=new Set;return x.map(v).filter(t=>e.has(t)?!0:(e.add(t),!1))},[x,v]);n.useEffect(()=>{J.length&&console.warn(`Duplicate optionValue found in Select "${j}":`,J)},[J,j]);const Q=[...M,...x].find(e=>v(e)===m),it=Q?W(Q):"",r=n.useMemo(()=>{const e=g.trim().toLocaleLowerCase($);return!e||y?x:x.filter(t=>W(t).toLocaleLowerCase($).includes(e))},[x,W,g,y,$]),{refs:be,floatingStyles:ct}=w.useFloating({open:l,placement:"bottom-start",strategy:D?"fixed":"absolute",whileElementsMounted:w.autoUpdate,middleware:[w.offset(8),w.flip({padding:12}),w.shift({padding:12}),w.size({padding:12,apply({availableHeight:e,rects:t,elements:a}){Object.assign(a.floating.style,{maxHeight:`${Math.min(230,e)}px`,width:`${t.reference.width}px`})}})]}),O=Ce||r.length>=De,V=gt.useVirtualizer({count:r.length,getScrollElement:()=>T.current,estimateSize:()=>ze,overscan:5,enabled:O&&l}),S=n.useCallback(()=>{me(!1),U(""),I?.(""),le?.()},[I,le]),q=()=>{b||N||(l||Ve?.(),me(!0))},R=n.useCallback(()=>{b||N||(G(null,null),U(""),f(0),I?.(""),E.current?.focus())},[b,N,G,I]);n.useImperativeHandle(Qe,()=>({focus:()=>E.current?.focus(),blur:()=>E.current?.blur(),clear:R}),[R]),n.useEffect(()=>{const e=t=>{const a=t.target;!fe.current?.contains(a)&&!T.current?.contains(a)&&S()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[S]),n.useEffect(()=>{c>=r.length&&f(0)},[c,r.length]),n.useEffect(()=>{O&&l&&r[c]&&V.scrollToIndex(c,{align:"auto"})},[c,r,l,O,V]);const ye=e=>{C(e)||(G(v(e),e),S(),E.current?.focus())},ut=e=>{if(!r.length)return;let t=c;do t=(t+e+r.length)%r.length;while(C(r[t])&&t!==c);f(t)},X=(e=!1)=>{const t=r.map((a,k)=>({option:a,index:k}));return e&&t.reverse(),t.find(({option:a})=>!C(a))?.index??0},dt=e=>{if(e.key==="Backspace"&&!g&&m!==null&&ee){e.preventDefault(),R();return}if(e.key==="ArrowDown"||e.key==="ArrowUp")e.preventDefault(),l?ut(e.key==="ArrowDown"?1:-1):(q(),f(X(e.key==="ArrowUp")));else if(e.key==="Home"&&l)e.preventDefault(),f(X());else if(e.key==="End"&&l)e.preventDefault(),f(X(!0));else if(e.key==="Enter"&&l){e.preventDefault();const t=r[c];t&&ye(t)}else e.key==="Escape"&&l?(e.preventDefault(),S()):e.key==="Tab"&&S()},he=(e,t,a)=>{const k=v(e),xe=C(e);return s.jsxs("div",{id:`${d}-option-${t}`,role:"option","aria-selected":k===m,"aria-disabled":xe,"aria-posinset":t+1,"aria-setsize":r.length,className:u.classNames("inconel-select-option",t===c&&"inconel-is-active",k===m&&"inconel-is-selected",xe&&"inconel-is-disabled",o.option),style:{...a,...i.option},onMouseEnter:()=>f(t),onMouseDown:pt=>pt.preventDefault(),onClick:()=>ye(e),children:[s.jsx("span",{children:_(e)}),k===m&&s.jsx("span",{"aria-hidden":"true",children:"✓"})]},String(k))},ft=Y?s.jsxs("div",{role:"status",className:u.classNames("inconel-select-message",o.message),style:i.message,children:[s.jsx("span",{className:"inconel-select-spinner","aria-hidden":"true"}),lt]}):tt?s.jsx("div",{role:"alert",className:u.classNames("inconel-select-message inconel-select-message-error",o.message),style:i.message,children:Ee}):r.length===0?s.jsx("div",{className:u.classNames("inconel-select-message",o.message),style:i.message,children:st}):O?s.jsx("div",{role:"presentation",className:"inconel-select-virtual-content",style:{height:V.getTotalSize()},children:V.getVirtualItems().map(e=>he(r[e.index],e.index,{position:"absolute",top:0,left:0,width:"100%",height:e.size,transform:`translateY(${e.start}px)`}))}):r.map((e,t)=>he(e,t)),Z=l?s.jsx("div",{ref:e=>{T.current=e,be.setFloating(e)},id:ce,role:"listbox","aria-labelledby":j?ie:void 0,className:u.classNames("inconel-select-menu",D&&"inconel-select-menu-portal",o.menu),style:{...ct,...i.menu},children:ft}):null,mt=h?ue:se?de:void 0;return Ye?s.jsxs("div",{ref:fe,className:u.classNames("inconel-select-field",`inconel-size-${ae}`,`inconel-select-field--${ae}`,Oe,o.root),style:i.root,children:[j&&s.jsxs("label",{id:ie,htmlFor:d,className:u.classNames(o.label,Ge),style:i.label,children:[j,K&&s.jsx("span",{"aria-hidden":"true",children:" *"})]}),s.jsxs("div",{ref:be.setReference,className:u.classNames("inconel-select-control",l&&"inconel-is-open",b&&"inconel-is-disabled",!!h&&"inconel-has-error",o.control),style:i.control,children:[s.jsx("input",{ref:E,id:d,role:"combobox","aria-expanded":l,"aria-controls":ce,"aria-autocomplete":"list","aria-activedescendant":l&&r[c]?`${d}-option-${c}`:void 0,"aria-describedby":mt,"aria-invalid":!!h,"aria-required":te,"aria-busy":Y,required:K,disabled:b,readOnly:N||!Fe,autoFocus:Re,autoComplete:"off",placeholder:nt,value:g||it,className:u.classNames(o.input,We,re),style:i.input,onChange:e=>{const t=_e?e.target.value.toLocaleUpperCase(p.locale??"tr-TR"):e.target.value;U(t),f(0),I?.(t),q()},onClick:q,onFocus:e=>{q(),Q&&!g&&e.currentTarget.select()},onBlur:Te,onKeyDown:dt}),Y&&s.jsx("span",{className:"inconel-select-spinner","aria-hidden":"true"}),ee&&m!==null&&!b&&!N&&s.jsx("button",{type:"button",className:u.classNames("inconel-select-clear",o.clearButton),style:i.clearButton,"aria-label":rt,onClick:R,children:"×"}),s.jsx("button",{type:"button",className:u.classNames("inconel-select-toggle",o.toggleButton),style:i.toggleButton,"aria-label":l?ot:at,"aria-expanded":l,disabled:b,tabIndex:-1,onClick:()=>l?S():q(),children:s.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 20 20",width:"20",height:"20",fill:"none",children:s.jsx("path",{d:"m5 7.5 5 5 5-5",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),P&&s.jsx("input",{type:"hidden",name:P,value:m===null?"":String(m),required:K}),s.jsx(yt.default,{hint:se,errorMessage:H==="in"?void 0:h,hintId:de,errorId:ue}),D&&Z?bt.createPortal(Z,D):Z]}):null}const vt=n.forwardRef(xt);exports.default=vt;
2
2
  //# sourceMappingURL=Select.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.cjs","sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ForwardedRef,\n type KeyboardEvent,\n type ReactNode,\n} from 'react'\nimport {\n autoUpdate,\n flip,\n offset,\n shift,\n size as floatingSize,\n useFloating,\n} from '@floating-ui/react'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport { createPortal } from 'react-dom'\nimport { useInconelAdapters } from '../../adapters'\nimport { classNames as mergeClassNames } from '../shared/classNames'\nimport '../shared/field.css'\nimport '../shared/field-controls.css'\nimport '../shared/sizes.css'\nimport type { ControlSize } from '../shared/types'\nimport './styles.css'\n\nimport FieldFeedback from '../FieldFeedback/FieldFeedback'\nimport type { FieldFeedbackContentProps } from '../FieldFeedback/FieldFeedback'\n\nexport type OptionValue = string | number\n\nexport interface SelectHandle {\n focus: () => void\n blur: () => void\n clear: () => void\n}\n\ntype SelectPart =\n | 'root'\n | 'label'\n | 'control'\n | 'input'\n | 'clearButton'\n | 'toggleButton'\n | 'menu'\n | 'option'\n | 'message'\n\nexport type SelectClassNames = Partial<Record<SelectPart, string>>\nexport type SelectStyles = Partial<Record<SelectPart, CSSProperties>>\n\nexport interface SelectProps<T extends object> extends FieldFeedbackContentProps {\n id?: string\n name?: string\n label?: ReactNode\n options?: T[]\n value?: OptionValue | T | null\n onChange?:\n | ((value: OptionValue | null, option: T | null) => void)\n | ((option: T | null) => void)\n optionLabel?: keyof T | ((option: T) => ReactNode)\n optionValue?: keyof T | ((option: T) => OptionValue)\n getOptionSearchText?: (option: T) => string\n isOptionDisabled?: (option: T) => boolean\n placeholder?: string\n isClearable?: boolean\n isDisabled?: boolean\n isReadOnly?: boolean\n isRequired?: boolean\n isLoading?: boolean\n loadOptions?: (inputValue: string, signal: AbortSignal) => Promise<T[]>\n loadOptionsDebounceMs?: number\n asyncErrorMessage?: ReactNode\n loadingMessage?: ReactNode\n noOptionsMessage?: ReactNode\n clearButtonLabel?: string\n openMenuButtonLabel?: string\n closeMenuButtonLabel?: string\n searchLocale?: string\n menuPortalTarget?: HTMLElement | null\n virtualize?: boolean\n virtualizationThreshold?: number\n optionHeight?: number\n className?: string\n classNames?: SelectClassNames\n styles?: SelectStyles\n onInputChange?: (value: string) => void\n onMenuOpen?: () => void\n onMenuClose?: () => void\n autoFocus?: boolean\n selectClassName?: string\n disabled?: boolean\n isSearchable?: boolean\n readOnly?: boolean\n defaultValue?: OptionValue | T | null\n errorPlace?: 'in' | 'out' | string\n onBlur?: () => void\n setFieldValue?: OptionValue | string | null\n render?: boolean\n singleValue?: boolean\n sortByUppercase?: boolean\n selectClassNamePrefix?: string\n menuPlacement?: 'auto' | 'bottom' | 'top'\n maxMenuHeight?: number\n inputClassName?: string\n labelClassName?: string\n size?: ControlSize\n required?: boolean\n components?: Record<string, unknown>\n}\n\nfunction SelectInner<T extends object>(\n {\n id,\n name,\n label,\n options = [],\n value,\n onChange,\n optionLabel = 'label' as keyof T,\n optionValue = 'value' as keyof T,\n getOptionSearchText,\n isOptionDisabled = () => false,\n placeholder,\n isClearable = false,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n isLoading = false,\n loadOptions,\n loadOptionsDebounceMs = 250,\n hint,\n errorMessage,\n asyncErrorMessage,\n loadingMessage,\n noOptionsMessage,\n clearButtonLabel,\n openMenuButtonLabel,\n closeMenuButtonLabel,\n searchLocale,\n menuPortalTarget,\n virtualize = false,\n virtualizationThreshold = 100,\n optionHeight = 44,\n className,\n classNames = {},\n styles = {},\n onInputChange,\n onMenuOpen,\n onMenuClose,\n autoFocus,\n selectClassName,\n disabled,\n isSearchable = true,\n readOnly,\n defaultValue,\n errorPlace,\n onBlur,\n setFieldValue,\n render = true,\n singleValue,\n sortByUppercase,\n inputClassName,\n labelClassName,\n size = 'md',\n required,\n }: SelectProps<T>,\n forwardedRef: ForwardedRef<SelectHandle>,\n) {\n const adapters = useInconelAdapters()\n const legacyMode =\n singleValue !== undefined ||\n selectClassName !== undefined ||\n errorPlace !== undefined\n const controlledValue = value ?? setFieldValue ?? defaultValue ?? null\n const generatedId = useId()\n const inputId = id ?? `inconel-select-${generatedId.replace(/:/g, '')}`\n const labelId = `${inputId}-label`\n const listboxId = `${inputId}-listbox`\n const messageId = `${inputId}-message`\n const hintId = `${inputId}-hint`\n const rootRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const menuRef = useRef<HTMLDivElement>(null)\n const [isOpen, setIsOpen] = useState(false)\n const [inputValue, setInputValue] = useState('')\n const [activeIndex, setActiveIndex] = useState(0)\n const [asyncOptions, setAsyncOptions] = useState<T[] | null>(null)\n const [isAsyncLoading, setIsAsyncLoading] = useState(false)\n const [hasAsyncError, setHasAsyncError] = useState(false)\n\n useEffect(() => {\n if (!loadOptions) return\n const controller = new AbortController()\n const timeout = window.setTimeout(async () => {\n setIsAsyncLoading(true)\n setHasAsyncError(false)\n try {\n const loadedOptions = await loadOptions(\n inputValue,\n controller.signal,\n )\n if (!controller.signal.aborted) setAsyncOptions(loadedOptions)\n } catch {\n if (!controller.signal.aborted) setHasAsyncError(true)\n } finally {\n if (!controller.signal.aborted) setIsAsyncLoading(false)\n }\n }, loadOptionsDebounceMs)\n\n return () => {\n window.clearTimeout(timeout)\n controller.abort()\n }\n }, [inputValue, loadOptions, loadOptionsDebounceMs])\n\n const availableOptions = loadOptions\n ? (asyncOptions ?? options)\n : options\n const loading = isLoading || isAsyncLoading\n const componentDisabled = isDisabled || Boolean(disabled)\n const componentReadOnly = isReadOnly || Boolean(readOnly)\n const componentRequired = isRequired || Boolean(required)\n const resolvedPlaceholder =\n (errorPlace === 'in' && errorMessage\n ? String(errorMessage)\n : placeholder) ??\n String(adapters.translate?.('select', 'Seçim yapın...') ?? 'Seçim yapın...')\n const resolvedNoOptionsMessage =\n noOptionsMessage ??\n adapters.translate?.('noData', 'Sonuç bulunamadı.') ??\n 'Sonuç bulunamadı.'\n const resolvedLoadingMessage =\n loadingMessage ??\n adapters.translate?.('loading', 'Yükleniyor...') ??\n 'Yükleniyor...'\n const resolvedClearLabel =\n clearButtonLabel ??\n String(adapters.translate?.('clearSelection', 'Seçimi temizle') ?? 'Seçimi temizle')\n const resolvedOpenLabel =\n openMenuButtonLabel ??\n String(adapters.translate?.('openOptions', 'Seçenekleri aç') ?? 'Seçenekleri aç')\n const resolvedCloseLabel =\n closeMenuButtonLabel ??\n String(adapters.translate?.('closeOptions', 'Seçenekleri kapat') ?? 'Seçenekleri kapat')\n\n const getLabel = useCallback(\n (option: T): ReactNode =>\n typeof optionLabel === 'function'\n ? optionLabel(option)\n : String(option[optionLabel]),\n [optionLabel],\n )\n\n const getSearchLabel = useCallback(\n (option: T) => {\n if (getOptionSearchText) return getOptionSearchText(option)\n const renderedLabel = getLabel(option)\n return typeof renderedLabel === 'string' ||\n typeof renderedLabel === 'number'\n ? String(renderedLabel)\n : ''\n },\n [getLabel, getOptionSearchText],\n )\n\n const getValue = useCallback(\n (option: T): OptionValue => {\n const resolvedValue =\n typeof optionValue === 'function'\n ? optionValue(option)\n : option[optionValue]\n\n if (\n typeof resolvedValue !== 'string' &&\n typeof resolvedValue !== 'number'\n ) {\n throw new TypeError('optionValue must resolve to a string or number.')\n }\n return resolvedValue\n },\n [optionValue],\n )\n\n const normalizedValue =\n controlledValue && typeof controlledValue === 'object'\n ? getValue(controlledValue as T)\n : (controlledValue as OptionValue | null)\n\n const emitChange = useCallback(\n (nextValue: OptionValue | null, option: T | null) => {\n if (!onChange) return\n if (legacyMode) {\n ;(onChange as (selected: T | null) => void)(option)\n } else {\n ;(\n onChange as (\n value: OptionValue | null,\n selected: T | null,\n ) => void\n )(nextValue, option)\n }\n },\n [legacyMode, onChange],\n )\n\n const duplicateValues = useMemo(() => {\n const seen = new Set<OptionValue>()\n return availableOptions\n .map(getValue)\n .filter((optionId) => {\n if (seen.has(optionId)) return true\n seen.add(optionId)\n return false\n })\n }, [availableOptions, getValue])\n\n useEffect(() => {\n if (duplicateValues.length) {\n console.warn(\n `Duplicate optionValue found in Select \"${label}\":`,\n duplicateValues,\n )\n }\n }, [duplicateValues, label])\n\n const selectedOption = [...options, ...availableOptions].find(\n (option) => getValue(option) === normalizedValue,\n )\n const selectedLabel = selectedOption ? getSearchLabel(selectedOption) : ''\n\n const filteredOptions = useMemo(() => {\n const query = inputValue.trim().toLocaleLowerCase(searchLocale)\n if (!query || loadOptions) return availableOptions\n return availableOptions.filter((option) =>\n getSearchLabel(option).toLocaleLowerCase(searchLocale).includes(query),\n )\n }, [availableOptions, getSearchLabel, inputValue, loadOptions, searchLocale])\n\n const { refs, floatingStyles } = useFloating({\n open: isOpen,\n placement: 'bottom-start',\n strategy: menuPortalTarget ? 'fixed' : 'absolute',\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(8),\n flip({ padding: 12 }),\n shift({ padding: 12 }),\n floatingSize({\n padding: 12,\n apply({ availableHeight, rects, elements }) {\n Object.assign(elements.floating.style, {\n maxHeight: `${Math.min(230, availableHeight)}px`,\n width: `${rects.reference.width}px`,\n })\n },\n }),\n ],\n })\n\n const shouldVirtualize =\n virtualize || filteredOptions.length >= virtualizationThreshold\n const virtualizer = useVirtualizer({\n count: filteredOptions.length,\n getScrollElement: () => menuRef.current,\n estimateSize: () => optionHeight,\n overscan: 5,\n enabled: shouldVirtualize && isOpen,\n })\n\n const closeMenu = useCallback(() => {\n setIsOpen(false)\n setInputValue('')\n onInputChange?.('')\n onMenuClose?.()\n }, [onInputChange, onMenuClose])\n\n const openMenu = () => {\n if (componentDisabled || componentReadOnly) return\n if (!isOpen) onMenuOpen?.()\n setIsOpen(true)\n }\n\n const clearSelection = useCallback(() => {\n if (componentDisabled || componentReadOnly) return\n emitChange(null, null)\n setInputValue('')\n setActiveIndex(0)\n onInputChange?.('')\n inputRef.current?.focus()\n }, [componentDisabled, componentReadOnly, emitChange, onInputChange])\n\n useImperativeHandle(\n forwardedRef,\n () => ({\n focus: () => inputRef.current?.focus(),\n blur: () => inputRef.current?.blur(),\n clear: clearSelection,\n }),\n [clearSelection],\n )\n\n useEffect(() => {\n const closeOnOutsideClick = (event: MouseEvent) => {\n const target = event.target as Node\n if (\n !rootRef.current?.contains(target) &&\n !menuRef.current?.contains(target)\n ) {\n closeMenu()\n }\n }\n\n document.addEventListener('mousedown', closeOnOutsideClick)\n return () => document.removeEventListener('mousedown', closeOnOutsideClick)\n }, [closeMenu])\n\n useEffect(() => {\n if (activeIndex >= filteredOptions.length) setActiveIndex(0)\n }, [activeIndex, filteredOptions.length])\n\n useEffect(() => {\n if (shouldVirtualize && isOpen && filteredOptions[activeIndex]) {\n virtualizer.scrollToIndex(activeIndex, { align: 'auto' })\n }\n }, [\n activeIndex,\n filteredOptions,\n isOpen,\n shouldVirtualize,\n virtualizer,\n ])\n\n const selectOption = (option: T) => {\n if (isOptionDisabled(option)) return\n emitChange(getValue(option), option)\n closeMenu()\n inputRef.current?.focus()\n }\n\n const moveActiveOption = (direction: 1 | -1) => {\n if (!filteredOptions.length) return\n let nextIndex = activeIndex\n do {\n nextIndex =\n (nextIndex + direction + filteredOptions.length) %\n filteredOptions.length\n } while (\n isOptionDisabled(filteredOptions[nextIndex]) &&\n nextIndex !== activeIndex\n )\n setActiveIndex(nextIndex)\n }\n\n const findEnabledIndex = (fromEnd = false) => {\n const entries = filteredOptions.map((option, index) => ({ option, index }))\n if (fromEnd) entries.reverse()\n return entries.find(({ option }) => !isOptionDisabled(option))?.index ?? 0\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (\n event.key === 'Backspace' &&\n !inputValue &&\n normalizedValue !== null &&\n isClearable\n ) {\n event.preventDefault()\n clearSelection()\n return\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault()\n if (!isOpen) {\n openMenu()\n setActiveIndex(findEnabledIndex(event.key === 'ArrowUp'))\n } else {\n moveActiveOption(event.key === 'ArrowDown' ? 1 : -1)\n }\n } else if (event.key === 'Home' && isOpen) {\n event.preventDefault()\n setActiveIndex(findEnabledIndex())\n } else if (event.key === 'End' && isOpen) {\n event.preventDefault()\n setActiveIndex(findEnabledIndex(true))\n } else if (event.key === 'Enter' && isOpen) {\n event.preventDefault()\n const activeOption = filteredOptions[activeIndex]\n if (activeOption) selectOption(activeOption)\n } else if (event.key === 'Escape' && isOpen) {\n event.preventDefault()\n closeMenu()\n } else if (event.key === 'Tab') {\n closeMenu()\n }\n }\n\n const renderOption = (option: T, index: number, style?: CSSProperties) => {\n const optionId = getValue(option)\n const disabled = isOptionDisabled(option)\n return (\n <div\n id={`${inputId}-option-${index}`}\n key={optionId}\n role=\"option\"\n aria-selected={optionId === normalizedValue}\n aria-disabled={disabled}\n aria-posinset={index + 1}\n aria-setsize={filteredOptions.length}\n className={mergeClassNames(\n 'inconel-select-option',\n index === activeIndex && 'inconel-is-active',\n optionId === normalizedValue && 'inconel-is-selected',\n disabled && 'inconel-is-disabled',\n classNames.option,\n )}\n style={{ ...style, ...styles.option }}\n onMouseEnter={() => setActiveIndex(index)}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => selectOption(option)}\n >\n <span>{getLabel(option)}</span>\n {optionId === normalizedValue && <span aria-hidden=\"true\">✓</span>}\n </div>\n )\n }\n\n const menuContent = loading ? (\n <div\n role=\"status\"\n className={mergeClassNames('inconel-select-message', classNames.message)}\n style={styles.message}\n >\n <span className=\"inconel-select-spinner\" aria-hidden=\"true\" />\n {resolvedLoadingMessage}\n </div>\n ) : hasAsyncError ? (\n <div\n role=\"alert\"\n className={mergeClassNames('inconel-select-message inconel-select-message-error', classNames.message)}\n style={styles.message}\n >\n {asyncErrorMessage}\n </div>\n ) : filteredOptions.length === 0 ? (\n <div\n className={mergeClassNames('inconel-select-message', classNames.message)}\n style={styles.message}\n >\n {resolvedNoOptionsMessage}\n </div>\n ) : shouldVirtualize ? (\n <div\n role=\"presentation\"\n className=\"inconel-select-virtual-content\"\n style={{ height: virtualizer.getTotalSize() }}\n >\n {virtualizer.getVirtualItems().map((virtualRow) =>\n renderOption(filteredOptions[virtualRow.index], virtualRow.index, {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: virtualRow.size,\n transform: `translateY(${virtualRow.start}px)`,\n }),\n )}\n </div>\n ) : (\n filteredOptions.map((option, index) => renderOption(option, index))\n )\n\n const menu = isOpen ? (\n <div\n ref={(node) => {\n menuRef.current = node\n refs.setFloating(node)\n }}\n id={listboxId}\n role=\"listbox\"\n aria-labelledby={label ? labelId : undefined}\n className={mergeClassNames(\n 'inconel-select-menu',\n menuPortalTarget && 'inconel-select-menu-portal',\n classNames.menu,\n )}\n style={{ ...floatingStyles, ...styles.menu }}\n >\n {menuContent}\n </div>\n ) : null\n\n const describedBy = errorMessage ? messageId : hint ? hintId : undefined\n\n if (!render) return null\n\n return (\n <div\n ref={rootRef}\n className={mergeClassNames(\n 'inconel-select-field',\n `inconel-size-${size}`,\n `inconel-select-field--${size}`,\n className,\n classNames.root,\n )}\n style={styles.root}\n >\n {label && (\n <label\n id={labelId}\n htmlFor={inputId}\n className={mergeClassNames(classNames.label, labelClassName)}\n style={styles.label}\n >\n {label}\n {componentRequired && <span aria-hidden=\"true\"> *</span>}\n </label>\n )}\n <div\n ref={refs.setReference}\n className={mergeClassNames(\n 'inconel-select-control',\n isOpen && 'inconel-is-open',\n componentDisabled && 'inconel-is-disabled',\n Boolean(errorMessage) && 'inconel-has-error',\n classNames.control,\n )}\n style={styles.control}\n >\n <input\n ref={inputRef}\n id={inputId}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-controls={listboxId}\n aria-autocomplete=\"list\"\n aria-activedescendant={\n isOpen && filteredOptions[activeIndex]\n ? `${inputId}-option-${activeIndex}`\n : undefined\n }\n aria-describedby={describedBy}\n aria-invalid={Boolean(errorMessage)}\n aria-required={isRequired}\n aria-busy={loading}\n required={componentRequired}\n disabled={componentDisabled}\n readOnly={componentReadOnly || !isSearchable}\n autoFocus={autoFocus}\n autoComplete=\"off\"\n placeholder={resolvedPlaceholder}\n value={inputValue || selectedLabel}\n className={mergeClassNames(classNames.input, inputClassName, selectClassName)}\n style={styles.input}\n onChange={(event) => {\n const nextInput = sortByUppercase\n ? event.target.value.toLocaleUpperCase(\n adapters.locale ?? 'tr-TR',\n )\n : event.target.value\n setInputValue(nextInput)\n setActiveIndex(0)\n onInputChange?.(nextInput)\n openMenu()\n }}\n onClick={openMenu}\n onFocus={(event) => {\n openMenu()\n if (selectedOption && !inputValue) event.currentTarget.select()\n }}\n onBlur={onBlur}\n onKeyDown={handleKeyDown}\n />\n {loading && <span className=\"inconel-select-spinner\" aria-hidden=\"true\" />}\n {isClearable && normalizedValue !== null && !componentDisabled && !componentReadOnly && (\n <button\n type=\"button\"\n className={mergeClassNames('inconel-select-clear', classNames.clearButton)}\n style={styles.clearButton}\n aria-label={resolvedClearLabel}\n onClick={clearSelection}\n >\n ×\n </button>\n )}\n <button\n type=\"button\"\n className={mergeClassNames('inconel-select-toggle', classNames.toggleButton)}\n style={styles.toggleButton}\n aria-label={isOpen ? resolvedCloseLabel : resolvedOpenLabel}\n aria-expanded={isOpen}\n disabled={componentDisabled}\n tabIndex={-1}\n onClick={() => (isOpen ? closeMenu() : openMenu())}\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n >\n <path\n d=\"m5 7.5 5 5 5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={normalizedValue ?? ''}\n required={componentRequired}\n />\n )}\n <FieldFeedback\n hint={hint}\n errorMessage={errorPlace === 'in' ? undefined : errorMessage}\n hintId={hintId}\n errorId={messageId}\n />\n\n {menuPortalTarget && menu\n ? createPortal(menu, menuPortalTarget)\n : menu}\n </div>\n )\n}\n\nconst Select = forwardRef(SelectInner) as <T extends object>(\n props: SelectProps<T> & { ref?: ForwardedRef<SelectHandle> },\n) => ReactNode\n\nexport default Select\n"],"names":["SelectInner","id","name","label","options","value","onChange","optionLabel","optionValue","getOptionSearchText","isOptionDisabled","placeholder","isClearable","isDisabled","isReadOnly","isRequired","isLoading","loadOptions","loadOptionsDebounceMs","hint","errorMessage","asyncErrorMessage","loadingMessage","noOptionsMessage","clearButtonLabel","openMenuButtonLabel","closeMenuButtonLabel","searchLocale","menuPortalTarget","virtualize","virtualizationThreshold","optionHeight","className","classNames","styles","onInputChange","onMenuOpen","onMenuClose","autoFocus","selectClassName","disabled","isSearchable","readOnly","defaultValue","errorPlace","onBlur","setFieldValue","render","singleValue","sortByUppercase","inputClassName","labelClassName","size","required","forwardedRef","adapters","useInconelAdapters","legacyMode","controlledValue","generatedId","useId","inputId","labelId","listboxId","messageId","hintId","rootRef","useRef","inputRef","menuRef","isOpen","setIsOpen","useState","inputValue","setInputValue","activeIndex","setActiveIndex","asyncOptions","setAsyncOptions","isAsyncLoading","setIsAsyncLoading","hasAsyncError","setHasAsyncError","useEffect","controller","timeout","loadedOptions","availableOptions","loading","componentDisabled","componentReadOnly","componentRequired","resolvedPlaceholder","resolvedNoOptionsMessage","resolvedLoadingMessage","resolvedClearLabel","resolvedOpenLabel","resolvedCloseLabel","getLabel","useCallback","option","getSearchLabel","renderedLabel","getValue","resolvedValue","normalizedValue","emitChange","nextValue","duplicateValues","useMemo","seen","optionId","selectedOption","selectedLabel","filteredOptions","query","refs","floatingStyles","useFloating","autoUpdate","offset","flip","shift","floatingSize","availableHeight","rects","elements","shouldVirtualize","virtualizer","useVirtualizer","closeMenu","openMenu","clearSelection","useImperativeHandle","closeOnOutsideClick","event","target","selectOption","moveActiveOption","direction","nextIndex","findEnabledIndex","fromEnd","entries","index","handleKeyDown","activeOption","renderOption","style","jsxs","mergeClassNames","jsx","menuContent","virtualRow","menu","node","describedBy","nextInput","FieldFeedback","createPortal","Select","forwardRef"],"mappings":"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"}
1
+ {"version":3,"file":"Select.cjs","sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ForwardedRef,\n type KeyboardEvent,\n type ReactNode,\n} from 'react'\nimport {\n autoUpdate,\n flip,\n offset,\n shift,\n size as floatingSize,\n useFloating,\n} from '@floating-ui/react'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport { createPortal } from 'react-dom'\nimport { useInconelAdapters } from '../../adapters'\nimport { classNames as mergeClassNames } from '../shared/classNames'\nimport '../shared/field.css'\nimport '../shared/field-controls.css'\nimport '../shared/sizes.css'\nimport type { ControlSize } from '../shared/types'\nimport './styles.css'\n\nimport FieldFeedback from '../FieldFeedback/FieldFeedback'\nimport type { FieldFeedbackContentProps } from '../FieldFeedback/FieldFeedback'\n\nexport type OptionValue = string | number | boolean\n\nexport interface SelectHandle {\n focus: () => void\n blur: () => void\n clear: () => void\n}\n\ntype SelectPart =\n | 'root'\n | 'label'\n | 'control'\n | 'input'\n | 'clearButton'\n | 'toggleButton'\n | 'menu'\n | 'option'\n | 'message'\n\nexport type SelectClassNames = Partial<Record<SelectPart, string>>\nexport type SelectStyles = Partial<Record<SelectPart, CSSProperties>>\n\nexport interface SelectProps<T extends object> extends FieldFeedbackContentProps {\n id?: string\n name?: string\n label?: ReactNode\n options?: T[]\n value?: OptionValue | T | null\n onChange?:\n | ((value: OptionValue | null, option: T | null) => void)\n | ((option: T | null) => void)\n optionLabel?: keyof T | ((option: T) => ReactNode)\n optionValue?: keyof T | ((option: T) => OptionValue)\n getOptionSearchText?: (option: T) => string\n isOptionDisabled?: (option: T) => boolean\n placeholder?: string\n isClearable?: boolean\n isDisabled?: boolean\n isReadOnly?: boolean\n isRequired?: boolean\n isLoading?: boolean\n loadOptions?: (inputValue: string, signal: AbortSignal) => Promise<T[]>\n loadOptionsDebounceMs?: number\n asyncErrorMessage?: ReactNode\n loadingMessage?: ReactNode\n noOptionsMessage?: ReactNode\n clearButtonLabel?: string\n openMenuButtonLabel?: string\n closeMenuButtonLabel?: string\n searchLocale?: string\n menuPortalTarget?: HTMLElement | null\n virtualize?: boolean\n virtualizationThreshold?: number\n optionHeight?: number\n className?: string\n classNames?: SelectClassNames\n styles?: SelectStyles\n onInputChange?: (value: string) => void\n onMenuOpen?: () => void\n onMenuClose?: () => void\n autoFocus?: boolean\n selectClassName?: string\n disabled?: boolean\n isSearchable?: boolean\n readOnly?: boolean\n defaultValue?: OptionValue | T | null\n errorPlace?: 'in' | 'out' | string\n onBlur?: () => void\n setFieldValue?: OptionValue | string | null\n render?: boolean\n singleValue?: boolean\n sortByUppercase?: boolean\n selectClassNamePrefix?: string\n menuPlacement?: 'auto' | 'bottom' | 'top'\n maxMenuHeight?: number\n inputClassName?: string\n labelClassName?: string\n size?: ControlSize\n required?: boolean\n components?: Record<string, unknown>\n}\n\nfunction SelectInner<T extends object>(\n {\n id,\n name,\n label,\n options = [],\n value,\n onChange,\n optionLabel = 'label' as keyof T,\n optionValue = 'value' as keyof T,\n getOptionSearchText,\n isOptionDisabled = () => false,\n placeholder,\n isClearable = false,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n isLoading = false,\n loadOptions,\n loadOptionsDebounceMs = 250,\n hint,\n errorMessage,\n asyncErrorMessage,\n loadingMessage,\n noOptionsMessage,\n clearButtonLabel,\n openMenuButtonLabel,\n closeMenuButtonLabel,\n searchLocale,\n menuPortalTarget,\n virtualize = false,\n virtualizationThreshold = 100,\n optionHeight = 44,\n className,\n classNames = {},\n styles = {},\n onInputChange,\n onMenuOpen,\n onMenuClose,\n autoFocus,\n selectClassName,\n disabled,\n isSearchable = true,\n readOnly,\n defaultValue,\n errorPlace,\n onBlur,\n setFieldValue,\n render = true,\n singleValue,\n sortByUppercase,\n inputClassName,\n labelClassName,\n size = 'md',\n required,\n }: SelectProps<T>,\n forwardedRef: ForwardedRef<SelectHandle>,\n) {\n const adapters = useInconelAdapters()\n const legacyMode =\n singleValue !== undefined ||\n selectClassName !== undefined ||\n errorPlace !== undefined\n const controlledValue = value ?? setFieldValue ?? defaultValue ?? null\n const generatedId = useId()\n const inputId = id ?? `inconel-select-${generatedId.replace(/:/g, '')}`\n const labelId = `${inputId}-label`\n const listboxId = `${inputId}-listbox`\n const messageId = `${inputId}-message`\n const hintId = `${inputId}-hint`\n const rootRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const menuRef = useRef<HTMLDivElement>(null)\n const [isOpen, setIsOpen] = useState(false)\n const [inputValue, setInputValue] = useState('')\n const [activeIndex, setActiveIndex] = useState(0)\n const [asyncOptions, setAsyncOptions] = useState<T[] | null>(null)\n const [isAsyncLoading, setIsAsyncLoading] = useState(false)\n const [hasAsyncError, setHasAsyncError] = useState(false)\n\n useEffect(() => {\n if (!loadOptions) return\n const controller = new AbortController()\n const timeout = window.setTimeout(async () => {\n setIsAsyncLoading(true)\n setHasAsyncError(false)\n try {\n const loadedOptions = await loadOptions(\n inputValue,\n controller.signal,\n )\n if (!controller.signal.aborted) setAsyncOptions(loadedOptions)\n } catch {\n if (!controller.signal.aborted) setHasAsyncError(true)\n } finally {\n if (!controller.signal.aborted) setIsAsyncLoading(false)\n }\n }, loadOptionsDebounceMs)\n\n return () => {\n window.clearTimeout(timeout)\n controller.abort()\n }\n }, [inputValue, loadOptions, loadOptionsDebounceMs])\n\n const availableOptions = loadOptions\n ? (asyncOptions ?? options)\n : options\n const loading = isLoading || isAsyncLoading\n const componentDisabled = isDisabled || Boolean(disabled)\n const componentReadOnly = isReadOnly || Boolean(readOnly)\n const componentRequired = isRequired || Boolean(required)\n const resolvedPlaceholder =\n (errorPlace === 'in' && errorMessage\n ? String(errorMessage)\n : placeholder) ??\n String(adapters.translate?.('select', 'Seçim yapın...') ?? 'Seçim yapın...')\n const resolvedNoOptionsMessage =\n noOptionsMessage ??\n adapters.translate?.('noData', 'Sonuç bulunamadı.') ??\n 'Sonuç bulunamadı.'\n const resolvedLoadingMessage =\n loadingMessage ??\n adapters.translate?.('loading', 'Yükleniyor...') ??\n 'Yükleniyor...'\n const resolvedClearLabel =\n clearButtonLabel ??\n String(adapters.translate?.('clearSelection', 'Seçimi temizle') ?? 'Seçimi temizle')\n const resolvedOpenLabel =\n openMenuButtonLabel ??\n String(adapters.translate?.('openOptions', 'Seçenekleri aç') ?? 'Seçenekleri aç')\n const resolvedCloseLabel =\n closeMenuButtonLabel ??\n String(adapters.translate?.('closeOptions', 'Seçenekleri kapat') ?? 'Seçenekleri kapat')\n\n const getLabel = useCallback(\n (option: T): ReactNode =>\n typeof optionLabel === 'function'\n ? optionLabel(option)\n : String(option[optionLabel]),\n [optionLabel],\n )\n\n const getSearchLabel = useCallback(\n (option: T) => {\n if (getOptionSearchText) return getOptionSearchText(option)\n const renderedLabel = getLabel(option)\n return typeof renderedLabel === 'string' ||\n typeof renderedLabel === 'number'\n ? String(renderedLabel)\n : ''\n },\n [getLabel, getOptionSearchText],\n )\n\n const getValue = useCallback(\n (option: T): OptionValue => {\n const resolvedValue =\n typeof optionValue === 'function'\n ? optionValue(option)\n : option[optionValue]\n\n if (\n typeof resolvedValue !== 'string' &&\n typeof resolvedValue !== 'number' &&\n typeof resolvedValue !== 'boolean'\n ) {\n throw new TypeError(\n 'optionValue must resolve to a string, number or boolean.',\n )\n }\n return resolvedValue\n },\n [optionValue],\n )\n\n const normalizedValue =\n controlledValue && typeof controlledValue === 'object'\n ? getValue(controlledValue as T)\n : (controlledValue as OptionValue | null)\n\n const emitChange = useCallback(\n (nextValue: OptionValue | null, option: T | null) => {\n if (!onChange) return\n if (legacyMode) {\n ;(onChange as (selected: T | null) => void)(option)\n } else {\n ;(\n onChange as (\n value: OptionValue | null,\n selected: T | null,\n ) => void\n )(nextValue, option)\n }\n },\n [legacyMode, onChange],\n )\n\n const duplicateValues = useMemo(() => {\n const seen = new Set<OptionValue>()\n return availableOptions\n .map(getValue)\n .filter((optionId) => {\n if (seen.has(optionId)) return true\n seen.add(optionId)\n return false\n })\n }, [availableOptions, getValue])\n\n useEffect(() => {\n if (duplicateValues.length) {\n console.warn(\n `Duplicate optionValue found in Select \"${label}\":`,\n duplicateValues,\n )\n }\n }, [duplicateValues, label])\n\n const selectedOption = [...options, ...availableOptions].find(\n (option) => getValue(option) === normalizedValue,\n )\n const selectedLabel = selectedOption ? getSearchLabel(selectedOption) : ''\n\n const filteredOptions = useMemo(() => {\n const query = inputValue.trim().toLocaleLowerCase(searchLocale)\n if (!query || loadOptions) return availableOptions\n return availableOptions.filter((option) =>\n getSearchLabel(option).toLocaleLowerCase(searchLocale).includes(query),\n )\n }, [availableOptions, getSearchLabel, inputValue, loadOptions, searchLocale])\n\n const { refs, floatingStyles } = useFloating({\n open: isOpen,\n placement: 'bottom-start',\n strategy: menuPortalTarget ? 'fixed' : 'absolute',\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(8),\n flip({ padding: 12 }),\n shift({ padding: 12 }),\n floatingSize({\n padding: 12,\n apply({ availableHeight, rects, elements }) {\n Object.assign(elements.floating.style, {\n maxHeight: `${Math.min(230, availableHeight)}px`,\n width: `${rects.reference.width}px`,\n })\n },\n }),\n ],\n })\n\n const shouldVirtualize =\n virtualize || filteredOptions.length >= virtualizationThreshold\n const virtualizer = useVirtualizer({\n count: filteredOptions.length,\n getScrollElement: () => menuRef.current,\n estimateSize: () => optionHeight,\n overscan: 5,\n enabled: shouldVirtualize && isOpen,\n })\n\n const closeMenu = useCallback(() => {\n setIsOpen(false)\n setInputValue('')\n onInputChange?.('')\n onMenuClose?.()\n }, [onInputChange, onMenuClose])\n\n const openMenu = () => {\n if (componentDisabled || componentReadOnly) return\n if (!isOpen) onMenuOpen?.()\n setIsOpen(true)\n }\n\n const clearSelection = useCallback(() => {\n if (componentDisabled || componentReadOnly) return\n emitChange(null, null)\n setInputValue('')\n setActiveIndex(0)\n onInputChange?.('')\n inputRef.current?.focus()\n }, [componentDisabled, componentReadOnly, emitChange, onInputChange])\n\n useImperativeHandle(\n forwardedRef,\n () => ({\n focus: () => inputRef.current?.focus(),\n blur: () => inputRef.current?.blur(),\n clear: clearSelection,\n }),\n [clearSelection],\n )\n\n useEffect(() => {\n const closeOnOutsideClick = (event: MouseEvent) => {\n const target = event.target as Node\n if (\n !rootRef.current?.contains(target) &&\n !menuRef.current?.contains(target)\n ) {\n closeMenu()\n }\n }\n\n document.addEventListener('mousedown', closeOnOutsideClick)\n return () => document.removeEventListener('mousedown', closeOnOutsideClick)\n }, [closeMenu])\n\n useEffect(() => {\n if (activeIndex >= filteredOptions.length) setActiveIndex(0)\n }, [activeIndex, filteredOptions.length])\n\n useEffect(() => {\n if (shouldVirtualize && isOpen && filteredOptions[activeIndex]) {\n virtualizer.scrollToIndex(activeIndex, { align: 'auto' })\n }\n }, [\n activeIndex,\n filteredOptions,\n isOpen,\n shouldVirtualize,\n virtualizer,\n ])\n\n const selectOption = (option: T) => {\n if (isOptionDisabled(option)) return\n emitChange(getValue(option), option)\n closeMenu()\n inputRef.current?.focus()\n }\n\n const moveActiveOption = (direction: 1 | -1) => {\n if (!filteredOptions.length) return\n let nextIndex = activeIndex\n do {\n nextIndex =\n (nextIndex + direction + filteredOptions.length) %\n filteredOptions.length\n } while (\n isOptionDisabled(filteredOptions[nextIndex]) &&\n nextIndex !== activeIndex\n )\n setActiveIndex(nextIndex)\n }\n\n const findEnabledIndex = (fromEnd = false) => {\n const entries = filteredOptions.map((option, index) => ({ option, index }))\n if (fromEnd) entries.reverse()\n return entries.find(({ option }) => !isOptionDisabled(option))?.index ?? 0\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (\n event.key === 'Backspace' &&\n !inputValue &&\n normalizedValue !== null &&\n isClearable\n ) {\n event.preventDefault()\n clearSelection()\n return\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault()\n if (!isOpen) {\n openMenu()\n setActiveIndex(findEnabledIndex(event.key === 'ArrowUp'))\n } else {\n moveActiveOption(event.key === 'ArrowDown' ? 1 : -1)\n }\n } else if (event.key === 'Home' && isOpen) {\n event.preventDefault()\n setActiveIndex(findEnabledIndex())\n } else if (event.key === 'End' && isOpen) {\n event.preventDefault()\n setActiveIndex(findEnabledIndex(true))\n } else if (event.key === 'Enter' && isOpen) {\n event.preventDefault()\n const activeOption = filteredOptions[activeIndex]\n if (activeOption) selectOption(activeOption)\n } else if (event.key === 'Escape' && isOpen) {\n event.preventDefault()\n closeMenu()\n } else if (event.key === 'Tab') {\n closeMenu()\n }\n }\n\n const renderOption = (option: T, index: number, style?: CSSProperties) => {\n const optionId = getValue(option)\n const disabled = isOptionDisabled(option)\n return (\n <div\n id={`${inputId}-option-${index}`}\n key={String(optionId)}\n role=\"option\"\n aria-selected={optionId === normalizedValue}\n aria-disabled={disabled}\n aria-posinset={index + 1}\n aria-setsize={filteredOptions.length}\n className={mergeClassNames(\n 'inconel-select-option',\n index === activeIndex && 'inconel-is-active',\n optionId === normalizedValue && 'inconel-is-selected',\n disabled && 'inconel-is-disabled',\n classNames.option,\n )}\n style={{ ...style, ...styles.option }}\n onMouseEnter={() => setActiveIndex(index)}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => selectOption(option)}\n >\n <span>{getLabel(option)}</span>\n {optionId === normalizedValue && <span aria-hidden=\"true\">✓</span>}\n </div>\n )\n }\n\n const menuContent = loading ? (\n <div\n role=\"status\"\n className={mergeClassNames('inconel-select-message', classNames.message)}\n style={styles.message}\n >\n <span className=\"inconel-select-spinner\" aria-hidden=\"true\" />\n {resolvedLoadingMessage}\n </div>\n ) : hasAsyncError ? (\n <div\n role=\"alert\"\n className={mergeClassNames('inconel-select-message inconel-select-message-error', classNames.message)}\n style={styles.message}\n >\n {asyncErrorMessage}\n </div>\n ) : filteredOptions.length === 0 ? (\n <div\n className={mergeClassNames('inconel-select-message', classNames.message)}\n style={styles.message}\n >\n {resolvedNoOptionsMessage}\n </div>\n ) : shouldVirtualize ? (\n <div\n role=\"presentation\"\n className=\"inconel-select-virtual-content\"\n style={{ height: virtualizer.getTotalSize() }}\n >\n {virtualizer.getVirtualItems().map((virtualRow) =>\n renderOption(filteredOptions[virtualRow.index], virtualRow.index, {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: virtualRow.size,\n transform: `translateY(${virtualRow.start}px)`,\n }),\n )}\n </div>\n ) : (\n filteredOptions.map((option, index) => renderOption(option, index))\n )\n\n const menu = isOpen ? (\n <div\n ref={(node) => {\n menuRef.current = node\n refs.setFloating(node)\n }}\n id={listboxId}\n role=\"listbox\"\n aria-labelledby={label ? labelId : undefined}\n className={mergeClassNames(\n 'inconel-select-menu',\n menuPortalTarget && 'inconel-select-menu-portal',\n classNames.menu,\n )}\n style={{ ...floatingStyles, ...styles.menu }}\n >\n {menuContent}\n </div>\n ) : null\n\n const describedBy = errorMessage ? messageId : hint ? hintId : undefined\n\n if (!render) return null\n\n return (\n <div\n ref={rootRef}\n className={mergeClassNames(\n 'inconel-select-field',\n `inconel-size-${size}`,\n `inconel-select-field--${size}`,\n className,\n classNames.root,\n )}\n style={styles.root}\n >\n {label && (\n <label\n id={labelId}\n htmlFor={inputId}\n className={mergeClassNames(classNames.label, labelClassName)}\n style={styles.label}\n >\n {label}\n {componentRequired && <span aria-hidden=\"true\"> *</span>}\n </label>\n )}\n <div\n ref={refs.setReference}\n className={mergeClassNames(\n 'inconel-select-control',\n isOpen && 'inconel-is-open',\n componentDisabled && 'inconel-is-disabled',\n Boolean(errorMessage) && 'inconel-has-error',\n classNames.control,\n )}\n style={styles.control}\n >\n <input\n ref={inputRef}\n id={inputId}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-controls={listboxId}\n aria-autocomplete=\"list\"\n aria-activedescendant={\n isOpen && filteredOptions[activeIndex]\n ? `${inputId}-option-${activeIndex}`\n : undefined\n }\n aria-describedby={describedBy}\n aria-invalid={Boolean(errorMessage)}\n aria-required={isRequired}\n aria-busy={loading}\n required={componentRequired}\n disabled={componentDisabled}\n readOnly={componentReadOnly || !isSearchable}\n autoFocus={autoFocus}\n autoComplete=\"off\"\n placeholder={resolvedPlaceholder}\n value={inputValue || selectedLabel}\n className={mergeClassNames(classNames.input, inputClassName, selectClassName)}\n style={styles.input}\n onChange={(event) => {\n const nextInput = sortByUppercase\n ? event.target.value.toLocaleUpperCase(\n adapters.locale ?? 'tr-TR',\n )\n : event.target.value\n setInputValue(nextInput)\n setActiveIndex(0)\n onInputChange?.(nextInput)\n openMenu()\n }}\n onClick={openMenu}\n onFocus={(event) => {\n openMenu()\n if (selectedOption && !inputValue) event.currentTarget.select()\n }}\n onBlur={onBlur}\n onKeyDown={handleKeyDown}\n />\n {loading && <span className=\"inconel-select-spinner\" aria-hidden=\"true\" />}\n {isClearable && normalizedValue !== null && !componentDisabled && !componentReadOnly && (\n <button\n type=\"button\"\n className={mergeClassNames('inconel-select-clear', classNames.clearButton)}\n style={styles.clearButton}\n aria-label={resolvedClearLabel}\n onClick={clearSelection}\n >\n ×\n </button>\n )}\n <button\n type=\"button\"\n className={mergeClassNames('inconel-select-toggle', classNames.toggleButton)}\n style={styles.toggleButton}\n aria-label={isOpen ? resolvedCloseLabel : resolvedOpenLabel}\n aria-expanded={isOpen}\n disabled={componentDisabled}\n tabIndex={-1}\n onClick={() => (isOpen ? closeMenu() : openMenu())}\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n >\n <path\n d=\"m5 7.5 5 5 5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={normalizedValue === null ? '' : String(normalizedValue)}\n required={componentRequired}\n />\n )}\n <FieldFeedback\n hint={hint}\n errorMessage={errorPlace === 'in' ? undefined : errorMessage}\n hintId={hintId}\n errorId={messageId}\n />\n\n {menuPortalTarget && menu\n ? createPortal(menu, menuPortalTarget)\n : menu}\n </div>\n )\n}\n\nconst Select = forwardRef(SelectInner) as <T extends object>(\n props: SelectProps<T> & { ref?: ForwardedRef<SelectHandle> },\n) => ReactNode\n\nexport default Select\n"],"names":["SelectInner","id","name","label","options","value","onChange","optionLabel","optionValue","getOptionSearchText","isOptionDisabled","placeholder","isClearable","isDisabled","isReadOnly","isRequired","isLoading","loadOptions","loadOptionsDebounceMs","hint","errorMessage","asyncErrorMessage","loadingMessage","noOptionsMessage","clearButtonLabel","openMenuButtonLabel","closeMenuButtonLabel","searchLocale","menuPortalTarget","virtualize","virtualizationThreshold","optionHeight","className","classNames","styles","onInputChange","onMenuOpen","onMenuClose","autoFocus","selectClassName","disabled","isSearchable","readOnly","defaultValue","errorPlace","onBlur","setFieldValue","render","singleValue","sortByUppercase","inputClassName","labelClassName","size","required","forwardedRef","adapters","useInconelAdapters","legacyMode","controlledValue","generatedId","useId","inputId","labelId","listboxId","messageId","hintId","rootRef","useRef","inputRef","menuRef","isOpen","setIsOpen","useState","inputValue","setInputValue","activeIndex","setActiveIndex","asyncOptions","setAsyncOptions","isAsyncLoading","setIsAsyncLoading","hasAsyncError","setHasAsyncError","useEffect","controller","timeout","loadedOptions","availableOptions","loading","componentDisabled","componentReadOnly","componentRequired","resolvedPlaceholder","resolvedNoOptionsMessage","resolvedLoadingMessage","resolvedClearLabel","resolvedOpenLabel","resolvedCloseLabel","getLabel","useCallback","option","getSearchLabel","renderedLabel","getValue","resolvedValue","normalizedValue","emitChange","nextValue","duplicateValues","useMemo","seen","optionId","selectedOption","selectedLabel","filteredOptions","query","refs","floatingStyles","useFloating","autoUpdate","offset","flip","shift","floatingSize","availableHeight","rects","elements","shouldVirtualize","virtualizer","useVirtualizer","closeMenu","openMenu","clearSelection","useImperativeHandle","closeOnOutsideClick","event","target","selectOption","moveActiveOption","direction","nextIndex","findEnabledIndex","fromEnd","entries","index","handleKeyDown","activeOption","renderOption","style","jsxs","mergeClassNames","jsx","menuContent","virtualRow","menu","node","describedBy","nextInput","FieldFeedback","createPortal","Select","forwardRef"],"mappings":"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"}
@@ -36,5 +36,5 @@ export interface MultiSelectCheckBoxProps<T extends MultiSelectCheckBoxOption =
36
36
  limit?: number | null;
37
37
  selectionLimit?: number | null;
38
38
  }
39
- export declare function MultiSelectCheckBox<T extends MultiSelectCheckBoxOption = MultiSelectCheckBoxOption>({ id, label, className, labelClassName, inputClassName, optionsClassName, optionItemClassName, searchableInputClassName, options, defaultSelectedOptions, optionLabel, optionValue, onChange, placeholder, selectedInputMessage, itemSelectedText, selectAllText, searchPlaceholder, noDataMessage, errorMessage, errorPlace, isSearchable, isLoading, isDisabled, reactPortal, windowPosition, windowHeight, windowClose, isScrollEnd, getOptionTooltip, limit, selectionLimit, }: MultiSelectCheckBoxProps<T>): import("react").JSX.Element;
39
+ export declare function MultiSelectCheckBox<T extends MultiSelectCheckBoxOption = MultiSelectCheckBoxOption>({ id, label, className, labelClassName, inputClassName, optionsClassName, optionItemClassName, searchableInputClassName, options: rawOptions, defaultSelectedOptions: rawDefaultSelectedOptions, optionLabel, optionValue, onChange, placeholder, selectedInputMessage, itemSelectedText, selectAllText, searchPlaceholder, noDataMessage, errorMessage, errorPlace, isSearchable, isLoading, isDisabled, reactPortal, windowPosition, windowHeight, windowClose, isScrollEnd, getOptionTooltip, limit, selectionLimit, }: MultiSelectCheckBoxProps<T>): import("react").JSX.Element;
40
40
  //# sourceMappingURL=MultiSelectCheckBox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelectCheckBox.d.ts","sourceRoot":"","sources":["../../../src/components/MultiSelectCheckBox/MultiSelectCheckBox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,SAAS,EAEf,MAAM,OAAO,CAAA;AAKd,OAAO,cAAc,CAAA;AAErB,MAAM,WAAW,yBAAyB;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,wBAAwB,CACvC,CAAC,SAAS,yBAAyB,GAAG,yBAAyB;IAE/D,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAA;IACb,sBAAsB,CAAC,EAAE,CAAC,EAAE,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,IAAI,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,IAAI,GAAG,KAAK,CAAA;IACzB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACvC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;IACpC,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;IACpD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAcD,wBAAgB,mBAAmB,CACjC,CAAC,SAAS,yBAAyB,GAAG,yBAAyB,EAC/D,EACA,EAAS,EACT,KAAY,EACZ,SAAgB,EAChB,cAAqB,EACrB,cAAqB,EACrB,gBAAuB,EACvB,mBAA0B,EAC1B,wBAA+B,EAC/B,OAAuB,EACvB,sBAAsC,EACtC,WAAqB,EACrB,WAAqB,EACrB,QAAQ,EACR,WAAuB,EACvB,oBAAoB,EACpB,gBAA+B,EAC/B,aAA4B,EAC5B,iBAAyB,EACzB,aAAiC,EACjC,YAAiB,EACjB,UAAkB,EAClB,YAAoB,EACpB,SAAiB,EACjB,UAAkB,EAClB,WAAmB,EACnB,cAAsB,EACtB,YAAkB,EAClB,WAAW,EACX,WAAW,EACX,gBACkE,EAClE,KAAY,EACZ,cAAqB,GACtB,EAAE,wBAAwB,CAAC,CAAC,CAAC,+BA4Y7B"}
1
+ {"version":3,"file":"MultiSelectCheckBox.d.ts","sourceRoot":"","sources":["../../../src/components/MultiSelectCheckBox/MultiSelectCheckBox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,SAAS,EAEf,MAAM,OAAO,CAAA;AAKd,OAAO,cAAc,CAAA;AAErB,MAAM,WAAW,yBAAyB;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,wBAAwB,CACvC,CAAC,SAAS,yBAAyB,GAAG,yBAAyB;IAE/D,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAA;IACb,sBAAsB,CAAC,EAAE,CAAC,EAAE,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,IAAI,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,IAAI,GAAG,KAAK,CAAA;IACzB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACvC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;IACpC,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;IACpD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAqBD,wBAAgB,mBAAmB,CACjC,CAAC,SAAS,yBAAyB,GAAG,yBAAyB,EAC/D,EACA,EAAS,EACT,KAAY,EACZ,SAAgB,EAChB,cAAqB,EACrB,cAAqB,EACrB,gBAAuB,EACvB,mBAA0B,EAC1B,wBAA+B,EAC/B,OAAO,EAAE,UAA0B,EACnC,sBAAsB,EAAE,yBAAyC,EACjE,WAAqB,EACrB,WAAqB,EACrB,QAAQ,EACR,WAAuB,EACvB,oBAAoB,EACpB,gBAA+B,EAC/B,aAA4B,EAC5B,iBAAyB,EACzB,aAAiC,EACjC,YAAiB,EACjB,UAAkB,EAClB,YAAoB,EACpB,SAAiB,EACjB,UAAkB,EAClB,WAAmB,EACnB,cAAsB,EACtB,YAAkB,EAClB,WAAW,EACX,WAAW,EACX,gBACkE,EAClE,KAAY,EACZ,cAAqB,GACtB,EAAE,wBAAwB,CAAC,CAAC,CAAC,+BAiZ7B"}