@scbt-ecom/ui 0.174.2 → 0.174.4

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
- import{jsxs as S,jsx as t}from"react/jsx-runtime";import{forwardRef as U}from"react";import{useFloating as q,autoUpdate as J,flip as Q,offset as V}from"@floating-ui/react";import{AnimatePresence as W,motion as X}from"framer-motion";import{useCombobox as Y}from"./hooks/useCombobox.js";import{useKeyboardNavigation as Z}from"./hooks/useKeyboardNavigation.js";import{useClickOutsideMany as _}from"../../../../hooks/useClickOutsideMany.js";import{InputBase as $}from"../input/Input.js";import{cn as s}from"../../../../utils/cn.js";import{Portal as oo}from"../../../portal/Portal.js";import{TypeGuards as eo}from"../../../../utils/typeGuards.js";import{DropdownList as to}from"../../../dropdownList/DropdownList.js";import{Icon as ro}from"../../../icon/Icon.js";import{stringifyComboboxValue as b}from"./model/utils.js";const no=({name:y,options:w,multiple:m,value:i,onChange:x,defaultOpen:I,attachmentProps:R,searchable:r,invalid:p,displayValue:u,label:k,disabled:c,readOnly:d,className:B,externalHandlers:a,inputValue:g,filterDisabled:A,onInputChange:F,empty:N,classes:f,portal:P=globalThis?globalThis?.document?.body:void 0,...C},T)=>{const M=C["data-error-message"],{floating:O,...j}=f?.list??{},{refs:e,floatingStyles:v}=q({placement:"bottom-start",strategy:"absolute",middleware:[Q({boundary:"clippingAncestors",crossAxis:!1}),V(4)],whileElementsMounted:J}),{open:l,setOpen:n,state:z,changeHandler:E,options:h,search:H,onInputChange:L}=Y({multiple:m,value:i,onChange:x,searchable:r,defaultOpen:I,displayValue:u,initialOptions:w,filterDisabled:A,externalHandlers:a,externalInputValue:g,externalOnInputChange:F});Z({ref:e.domReference,openChangeHandler:n});const D=()=>i?m&&r?b(i):r?H:b(i):"",G=o=>{o.target&&o.relatedTarget&&n(!1)};_([e.floating,e.reference],()=>n(!1));const K=P??e.domReference.current;return S("div",{ref:e.setReference,className:s("relative w-full",f?.root,B),children:[t($,{name:y,ref:T,label:k,invalid:p,readOnly:d||!r,value:g||D(),onChange:L,disabled:c,onClick:o=>{l||n(!0),a?.clickHandler?.(o)},onBlur:o=>{a?.blurHandler?.(o),G(o),C?.onBlur?.(o)},onFocus:a?.focusHandler,classes:{input:s({"cursor-pointer":!r,"cursor-default":c,"pointer-events-none":c||d}),...f?.input},autoComplete:"off",attachmentProps:{icon:t(ro,{name:"arrows/arrowRight",className:s("size-6 rotate-90 text-color-blue-grey-600 duration-100",{"-rotate-90":l,"text-color-negative":p})}),onClickIcon:()=>n(o=>!o),...R},"data-id":"combobox-input","data-error-message":M}),t(oo,{root:K,children:t(W,{children:l&&t(X.div,{ref:e.setFloating,initial:{opacity:0},animate:{opacity:1},transition:{duration:.1},className:s("z-[1000]",O),style:{...v,width:e.reference.current?.getBoundingClientRect().width},children:eo.isArrayFilled(h)&&t(to,{empty:N,options:h,multiple:m,onPick:E,value:z,displayValue:u,classes:j,target:e.domReference})})})})]})},wo=U(no);export{wo as Combobox};
1
+ import{jsxs as S,jsx as t}from"react/jsx-runtime";import{forwardRef as U}from"react";import{useFloating as q,autoUpdate as J,flip as Q,offset as V}from"@floating-ui/react";import{AnimatePresence as W,motion as X}from"framer-motion";import{useCombobox as Y}from"./hooks/useCombobox.js";import{useKeyboardNavigation as Z}from"./hooks/useKeyboardNavigation.js";import{useClickOutsideMany as _}from"../../../../hooks/useClickOutsideMany.js";import{InputBase as $}from"../input/Input.js";import{cn as s}from"../../../../utils/cn.js";import{Portal as oo}from"../../../portal/Portal.js";import{TypeGuards as eo}from"../../../../utils/typeGuards.js";import{DropdownList as to}from"../../../dropdownList/DropdownList.js";import{Icon as ro}from"../../../icon/Icon.js";import{stringifyComboboxValue as y}from"./model/utils.js";const no=({name:b,options:w,multiple:m,value:a,onChange:x,defaultOpen:I,attachmentProps:R,searchable:r,invalid:d,displayValue:p,label:k,disabled:c,readOnly:g,className:B,externalHandlers:i,inputValue:C,filterDisabled:A,onInputChange:F,empty:L,classes:f,portal:N=globalThis?globalThis?.document?.body:void 0,...l},P)=>{const T=l["data-error-message"],{floating:M,...O}=f?.list??{},{refs:e,floatingStyles:j}=q({placement:"bottom-start",strategy:"absolute",middleware:[Q({boundary:"clippingAncestors",crossAxis:!1}),V(4)],whileElementsMounted:J}),{open:u,setOpen:n,state:v,changeHandler:z,options:h,search:E,onInputChange:H}=Y({multiple:m,value:a,onChange:x,searchable:r,defaultOpen:I,displayValue:p,initialOptions:w,filterDisabled:A,externalHandlers:i,externalInputValue:C,externalOnInputChange:F});Z({ref:e.domReference,openChangeHandler:n});const D=()=>a?m&&r?y(a):r?E:y(a):"",G=o=>{o.target&&o.relatedTarget&&n(!1)};_([e.floating,e.reference],()=>n(!1));const K=N??e.domReference.current;return S("div",{ref:e.setReference,className:s("relative w-full",f?.root,B),children:[t($,{name:b,ref:P,label:k,invalid:d,readOnly:g||!r,value:C||D(),onChange:H,disabled:c,onClick:o=>{u||n(!0),i?.clickHandler?.(o)},onBlur:o=>{i?.blurHandler?.(o),G(o),l?.onBlur?.(o)},onFocus:i?.focusHandler,classes:{input:s({"cursor-pointer":!r,"cursor-default":c,"pointer-events-none":c||g}),...f?.input},autoComplete:"off",attachmentProps:{icon:t(ro,{name:"arrows/arrowRight",className:s("size-6 rotate-90 text-color-blue-grey-600 duration-100",{"-rotate-90":u,"text-color-negative":d})}),onClickIcon:()=>n(o=>!o),...R},"data-id":"combobox-input","data-error-message":T,dataLayers:l?.dataLayers}),t(oo,{root:K,children:t(W,{children:u&&t(X.div,{ref:e.setFloating,initial:{opacity:0},animate:{opacity:1},transition:{duration:.1},className:s("z-[1000]",M),style:{...j,width:e.reference.current?.getBoundingClientRect().width},children:eo.isArrayFilled(h)&&t(to,{empty:L,options:h,multiple:m,onPick:z,value:v,displayValue:p,classes:O,target:e.domReference})})})})]})},wo=U(no);export{wo as Combobox};
2
2
  //# sourceMappingURL=combobox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/combobox/combobox.tsx"],"sourcesContent":["import { type ForwardedRef, forwardRef } from 'react'\nimport { autoUpdate, flip, offset, useFloating } from '@floating-ui/react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { useCombobox, useKeyboardNavigation } from './hooks'\nimport { type ChangeHandler, type ComboboxValue, stringifyComboboxValue } from './model'\nimport type { ComboboxItemOption } from './ui'\nimport { useClickOutsideMany } from '$/shared/hooks'\nimport { type DataLayers, type DeepPartial } from '$/shared/types'\nimport { DropdownList, Icon, InputBase, type InputBaseProps, Portal } from '$/shared/ui'\nimport { type DropdownListClasses, type DropdownListProps } from '$/shared/ui/dropdownList'\nimport { type IFieldAttachmentProps } from '$/shared/ui/formElements/ui'\nimport { cn, TypeGuards } from '$/shared/utils'\n\nexport type ComboboxClasses = {\n root?: string\n list?: { floating?: string } & DropdownListClasses\n input?: InputBaseProps['classes']\n}\n\nexport type ExternalHandlers<Multi extends boolean = false> = {\n changeHandler?: ChangeHandler<Multi>\n clickHandler?: (event: React.MouseEvent<HTMLElement>) => void\n blurHandler?: (event: React.FocusEvent<HTMLElement>) => void\n focusHandler?: (event: React.FocusEvent<HTMLElement>) => void\n inputChangeHandler?: (value: string) => void\n onKeyDown?: (value: React.KeyboardEventHandler<HTMLInputElement>) => void\n}\n\nexport interface ComboboxProps<Multi extends boolean = false>\n extends Omit<DropdownListProps<Multi>, 'options' | 'value' | 'onChange' | 'onBlur'>,\n Record<`data-${string}`, unknown> {\n /**\n * Список опций\n */\n options: ComboboxItemOption[]\n /**\n * Выбранное значение\n */\n value?: ComboboxValue<Multi>\n /**\n * Функция для изменения значения\n */\n onChange?: ChangeHandler<Multi>\n /**\n * Свойство управляющее поиском\n */\n searchable?: boolean\n /**\n * Открыть список по умолчанию\n */\n defaultOpen?: boolean\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<IFieldAttachmentProps>\n /**\n * Пометить поле как не валидное\n */\n invalid?: boolean\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: ((value: ComboboxItemOption | null) => string) | undefined\n /**\n * Отображаемый лейбл\n */\n label: string\n /**\n * Выключено поле\n */\n disabled?: boolean\n /**\n * Только для чтения\n */\n readOnly?: boolean\n /**\n * Дополнительные стили\n */\n classes?: ComboboxClasses\n /**\n * Дополнительные события\n */\n externalHandlers?: ExternalHandlers<Multi>\n /**\n * Функция для изменения значения поиска\n */\n onInputChange?: (value: string) => void\n /**\n * Значение инпута\n */\n inputValue?: string\n /**\n * Выключить фильтрацию списка\n */\n filterDisabled?: boolean\n /**\n * Включить рендеринг в портале\n * @property {false | HTMLElement} portal document.body\n */\n portal?: false | HTMLElement\n /**\n * Обработка ошибок для даталееров\n */\n ['data-error-message']?: string\n /**\n * Даталееры\n */\n dataLayers?: DataLayers\n /**\n * Внешнее onBlur событие\n */\n onBlur?: React.FocusEventHandler<HTMLInputElement>\n name?: string | undefined\n}\n\nconst InnerComponent = <Multi extends boolean = false>(\n {\n name,\n options: initialOptions,\n multiple,\n value,\n onChange,\n defaultOpen,\n attachmentProps,\n searchable,\n invalid,\n displayValue,\n label,\n disabled,\n readOnly,\n className,\n externalHandlers,\n inputValue,\n filterDisabled,\n onInputChange: externalInputChangeHandler,\n empty,\n classes,\n portal = globalThis ? globalThis?.document?.body : undefined,\n ...props\n }: ComboboxProps<Multi>,\n ref: ForwardedRef<HTMLInputElement>\n) => {\n const dataErrorMessage = props['data-error-message']\n\n const { floating, ...dropdownClasses } = classes?.list ?? {}\n\n const { refs, floatingStyles } = useFloating<HTMLDivElement>({\n placement: 'bottom-start',\n strategy: 'absolute',\n middleware: [\n flip({\n boundary: 'clippingAncestors',\n crossAxis: false\n }),\n offset(4)\n ],\n whileElementsMounted: autoUpdate\n })\n\n const { open, setOpen, state, changeHandler, options, search, onInputChange } = useCombobox({\n multiple,\n value,\n onChange,\n searchable,\n defaultOpen,\n displayValue,\n initialOptions,\n filterDisabled,\n externalHandlers,\n externalInputValue: inputValue,\n externalOnInputChange: externalInputChangeHandler\n })\n\n useKeyboardNavigation({ ref: refs.domReference, openChangeHandler: setOpen })\n\n const getLabel = () => {\n if (!value) return ''\n\n if (multiple && searchable) {\n return stringifyComboboxValue(value)\n } else if (searchable) {\n return search\n } else {\n return stringifyComboboxValue(value)\n }\n }\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (event.target && event.relatedTarget) {\n setOpen(false)\n }\n }\n\n useClickOutsideMany([refs.floating, refs.reference as React.MutableRefObject<HTMLElement | null>], () => setOpen(false))\n\n const portalContainer = portal ?? refs.domReference.current!\n\n return (\n <div ref={refs.setReference} className={cn('relative w-full', classes?.root, className)}>\n <InputBase\n name={name}\n ref={ref}\n label={label}\n invalid={invalid}\n readOnly={readOnly || !searchable}\n value={inputValue || getLabel()}\n onChange={onInputChange}\n disabled={disabled}\n onClick={(event) => {\n if (!open) setOpen(true)\n externalHandlers?.clickHandler?.(event)\n }}\n onBlur={(event) => {\n externalHandlers?.blurHandler?.(event)\n handleBlur(event)\n props?.onBlur?.(event)\n }}\n onFocus={externalHandlers?.focusHandler}\n classes={{\n input: cn({\n 'cursor-pointer': !searchable,\n 'cursor-default': disabled,\n 'pointer-events-none': disabled || readOnly\n }),\n ...classes?.input\n }}\n autoComplete='off'\n attachmentProps={{\n icon: (\n <Icon\n name='arrows/arrowRight'\n className={cn('size-6 rotate-90 text-color-blue-grey-600 duration-100', {\n '-rotate-90': open,\n 'text-color-negative': invalid\n })}\n />\n ),\n onClickIcon: () => setOpen((prev) => !prev),\n ...attachmentProps\n }}\n data-id='combobox-input'\n data-error-message={dataErrorMessage}\n />\n\n <Portal root={portalContainer}>\n <AnimatePresence>\n {open && (\n <motion.div\n ref={refs.setFloating}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.1 }}\n className={cn('z-[1000]', floating)}\n style={{\n ...floatingStyles,\n width: refs.reference.current?.getBoundingClientRect().width\n }}\n >\n {TypeGuards.isArrayFilled(options) && (\n <DropdownList\n empty={empty}\n options={options}\n multiple={multiple}\n onPick={changeHandler}\n value={state}\n displayValue={displayValue}\n classes={dropdownClasses}\n target={refs.domReference}\n />\n )}\n </motion.div>\n )}\n </AnimatePresence>\n </Portal>\n </div>\n )\n}\n\nexport const Combobox = forwardRef(InnerComponent) as <Multi extends boolean>(\n props: ComboboxProps<Multi> & { ref?: ForwardedRef<HTMLInputElement> }\n) => React.JSX.Element\n"],"names":["InnerComponent","name","initialOptions","multiple","value","onChange","defaultOpen","attachmentProps","searchable","invalid","displayValue","label","disabled","readOnly","className","externalHandlers","inputValue","filterDisabled","externalInputChangeHandler","empty","classes","portal","props","ref","dataErrorMessage","floating","dropdownClasses","refs","floatingStyles","useFloating","flip","offset","autoUpdate","open","setOpen","state","changeHandler","options","search","onInputChange","useCombobox","useKeyboardNavigation","getLabel","stringifyComboboxValue","handleBlur","event","useClickOutsideMany","portalContainer","jsxs","cn","jsx","InputBase","Icon","prev","Portal","AnimatePresence","motion","TypeGuards","DropdownList","Combobox","forwardRef"],"mappings":"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"}
1
+ {"version":3,"file":"combobox.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/combobox/combobox.tsx"],"sourcesContent":["import { type ForwardedRef, forwardRef } from 'react'\nimport { autoUpdate, flip, offset, useFloating } from '@floating-ui/react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { useCombobox, useKeyboardNavigation } from './hooks'\nimport { type ChangeHandler, type ComboboxValue, stringifyComboboxValue } from './model'\nimport type { ComboboxItemOption } from './ui'\nimport { useClickOutsideMany } from '$/shared/hooks'\nimport { type DataLayers, type DeepPartial } from '$/shared/types'\nimport { DropdownList, Icon, InputBase, type InputBaseProps, Portal } from '$/shared/ui'\nimport { type DropdownListClasses, type DropdownListProps } from '$/shared/ui/dropdownList'\nimport { type IFieldAttachmentProps } from '$/shared/ui/formElements/ui'\nimport { cn, TypeGuards } from '$/shared/utils'\n\nexport type ComboboxClasses = {\n root?: string\n list?: { floating?: string } & DropdownListClasses\n input?: InputBaseProps['classes']\n}\n\nexport type ExternalHandlers<Multi extends boolean = false> = {\n changeHandler?: ChangeHandler<Multi>\n clickHandler?: (event: React.MouseEvent<HTMLElement>) => void\n blurHandler?: (event: React.FocusEvent<HTMLElement>) => void\n focusHandler?: (event: React.FocusEvent<HTMLElement>) => void\n inputChangeHandler?: (value: string) => void\n onKeyDown?: (value: React.KeyboardEventHandler<HTMLInputElement>) => void\n}\n\nexport interface ComboboxProps<Multi extends boolean = false>\n extends Omit<DropdownListProps<Multi>, 'options' | 'value' | 'onChange' | 'onBlur'>,\n Record<`data-${string}`, unknown> {\n /**\n * Список опций\n */\n options: ComboboxItemOption[]\n /**\n * Выбранное значение\n */\n value?: ComboboxValue<Multi>\n /**\n * Функция для изменения значения\n */\n onChange?: ChangeHandler<Multi>\n /**\n * Свойство управляющее поиском\n */\n searchable?: boolean\n /**\n * Открыть список по умолчанию\n */\n defaultOpen?: boolean\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<IFieldAttachmentProps>\n /**\n * Пометить поле как не валидное\n */\n invalid?: boolean\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: ((value: ComboboxItemOption | null) => string) | undefined\n /**\n * Отображаемый лейбл\n */\n label: string\n /**\n * Выключено поле\n */\n disabled?: boolean\n /**\n * Только для чтения\n */\n readOnly?: boolean\n /**\n * Дополнительные стили\n */\n classes?: ComboboxClasses\n /**\n * Дополнительные события\n */\n externalHandlers?: ExternalHandlers<Multi>\n /**\n * Функция для изменения значения поиска\n */\n onInputChange?: (value: string) => void\n /**\n * Значение инпута\n */\n inputValue?: string\n /**\n * Выключить фильтрацию списка\n */\n filterDisabled?: boolean\n /**\n * Включить рендеринг в портале\n * @property {false | HTMLElement} portal document.body\n */\n portal?: false | HTMLElement\n /**\n * Обработка ошибок для даталееров\n */\n ['data-error-message']?: string\n /**\n * Даталееры\n */\n dataLayers?: DataLayers\n /**\n * Внешнее onBlur событие\n */\n onBlur?: React.FocusEventHandler<HTMLInputElement>\n name?: string | undefined\n}\n\nconst InnerComponent = <Multi extends boolean = false>(\n {\n name,\n options: initialOptions,\n multiple,\n value,\n onChange,\n defaultOpen,\n attachmentProps,\n searchable,\n invalid,\n displayValue,\n label,\n disabled,\n readOnly,\n className,\n externalHandlers,\n inputValue,\n filterDisabled,\n onInputChange: externalInputChangeHandler,\n empty,\n classes,\n portal = globalThis ? globalThis?.document?.body : undefined,\n ...props\n }: ComboboxProps<Multi>,\n ref: ForwardedRef<HTMLInputElement>\n) => {\n const dataErrorMessage = props['data-error-message']\n\n const { floating, ...dropdownClasses } = classes?.list ?? {}\n\n const { refs, floatingStyles } = useFloating<HTMLDivElement>({\n placement: 'bottom-start',\n strategy: 'absolute',\n middleware: [\n flip({\n boundary: 'clippingAncestors',\n crossAxis: false\n }),\n offset(4)\n ],\n whileElementsMounted: autoUpdate\n })\n\n const { open, setOpen, state, changeHandler, options, search, onInputChange } = useCombobox({\n multiple,\n value,\n onChange,\n searchable,\n defaultOpen,\n displayValue,\n initialOptions,\n filterDisabled,\n externalHandlers,\n externalInputValue: inputValue,\n externalOnInputChange: externalInputChangeHandler\n })\n\n useKeyboardNavigation({ ref: refs.domReference, openChangeHandler: setOpen })\n\n const getLabel = () => {\n if (!value) return ''\n\n if (multiple && searchable) {\n return stringifyComboboxValue(value)\n } else if (searchable) {\n return search\n } else {\n return stringifyComboboxValue(value)\n }\n }\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (event.target && event.relatedTarget) {\n setOpen(false)\n }\n }\n\n useClickOutsideMany([refs.floating, refs.reference as React.MutableRefObject<HTMLElement | null>], () => setOpen(false))\n\n const portalContainer = portal ?? refs.domReference.current!\n\n return (\n <div ref={refs.setReference} className={cn('relative w-full', classes?.root, className)}>\n <InputBase\n name={name}\n ref={ref}\n label={label}\n invalid={invalid}\n readOnly={readOnly || !searchable}\n value={inputValue || getLabel()}\n onChange={onInputChange}\n disabled={disabled}\n onClick={(event) => {\n if (!open) setOpen(true)\n externalHandlers?.clickHandler?.(event)\n }}\n onBlur={(event) => {\n externalHandlers?.blurHandler?.(event)\n handleBlur(event)\n props?.onBlur?.(event)\n }}\n onFocus={externalHandlers?.focusHandler}\n classes={{\n input: cn({\n 'cursor-pointer': !searchable,\n 'cursor-default': disabled,\n 'pointer-events-none': disabled || readOnly\n }),\n ...classes?.input\n }}\n autoComplete='off'\n attachmentProps={{\n icon: (\n <Icon\n name='arrows/arrowRight'\n className={cn('size-6 rotate-90 text-color-blue-grey-600 duration-100', {\n '-rotate-90': open,\n 'text-color-negative': invalid\n })}\n />\n ),\n onClickIcon: () => setOpen((prev) => !prev),\n ...attachmentProps\n }}\n data-id='combobox-input'\n data-error-message={dataErrorMessage}\n dataLayers={props?.dataLayers}\n />\n\n <Portal root={portalContainer}>\n <AnimatePresence>\n {open && (\n <motion.div\n ref={refs.setFloating}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.1 }}\n className={cn('z-[1000]', floating)}\n style={{\n ...floatingStyles,\n width: refs.reference.current?.getBoundingClientRect().width\n }}\n >\n {TypeGuards.isArrayFilled(options) && (\n <DropdownList\n empty={empty}\n options={options}\n multiple={multiple}\n onPick={changeHandler}\n value={state}\n displayValue={displayValue}\n classes={dropdownClasses}\n target={refs.domReference}\n />\n )}\n </motion.div>\n )}\n </AnimatePresence>\n </Portal>\n </div>\n )\n}\n\nexport const Combobox = forwardRef(InnerComponent) as <Multi extends boolean>(\n props: ComboboxProps<Multi> & { ref?: ForwardedRef<HTMLInputElement> }\n) => React.JSX.Element\n"],"names":["InnerComponent","name","initialOptions","multiple","value","onChange","defaultOpen","attachmentProps","searchable","invalid","displayValue","label","disabled","readOnly","className","externalHandlers","inputValue","filterDisabled","externalInputChangeHandler","empty","classes","portal","props","ref","dataErrorMessage","floating","dropdownClasses","refs","floatingStyles","useFloating","flip","offset","autoUpdate","open","setOpen","state","changeHandler","options","search","onInputChange","useCombobox","useKeyboardNavigation","getLabel","stringifyComboboxValue","handleBlur","event","useClickOutsideMany","portalContainer","jsxs","cn","jsx","InputBase","Icon","prev","Portal","AnimatePresence","motion","TypeGuards","DropdownList","Combobox","forwardRef"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{jsxs as h,jsx as t}from"react/jsx-runtime";import{TypeGuards as u}from"../../../../../shared/utils/typeGuards.js";import{cn as e}from"../../../../../shared/utils/cn.js";import{pushToDlLink as k}from"../../../../../shared/dataLayers/utils.js";const N=({category:r,selectedCategory:a,onCurrentCategoryChange:i,onRootCategoryChange:l,active:p,...d})=>{const n=!!r.link&&!u.isStringEmpty(r?.link?.href),m=n?"a":"div",c=n?{href:r.link?.href,target:r.link?.target}:{onClick:()=>{r.children&&(i(r.children?.[0]),l(r))}};return h("div",{className:"group/category relative",children:[t(m,{...d,...c,className:e("cursor-pointer text-color-tetriary duration-100 hover:text-color-dark",{"text-color-dark":p}),children:t("span",{className:"desk-body-regular-m",children:r.title})}),r?.children&&r?.children?.length>1&&t("div",{className:e("absolute right-0 top-full z-10 flex w-max flex-col","invisible bg-color-white opacity-0 shadow-sm group-hover/category:visible group-hover/category:opacity-100","rounded-sm p-1"),children:r?.children?.map(o=>t("span",{onPointerDown:()=>k(o?.title,"","seoHeader"),onClick:s=>{s.stopPropagation(),s.nativeEvent.stopPropagation(),l(r),i(o)},className:e("desk-body-regular-l rounded-sm px-3 py-3.5 text-color-dark duration-100 hover:bg-color-primary-tr-hover hover:text-color-dark",{"text-color-primary-default":a?.title===o?.title}),children:o.title},o.title))})]})};export{N as RootTab};
1
+ import{jsxs as h,jsx as e}from"react/jsx-runtime";import{cn as t}from"../../../../../shared/utils/cn.js";import{pushToDlLink as u}from"../../../../../shared/dataLayers/utils.js";const f=({category:r,selectedCategory:a,onCurrentCategoryChange:i,onRootCategoryChange:l,active:d,...p})=>{const n=!!r?.link?.href,c=n?"a":"div",m=n?{href:r.link?.href,target:r.link?.target}:{onClick:()=>{r.children&&(i(r.children?.[0]),l(r))}};return h("div",{className:"group/category relative",children:[e(c,{...p,...m,className:t("cursor-pointer text-color-tetriary duration-100 hover:text-color-dark",{"text-color-dark":d}),children:e("span",{className:"desk-body-regular-m",children:r.title})}),r?.children&&r?.children?.length>1&&e("div",{className:t("absolute right-0 top-full z-10 flex w-max flex-col","invisible bg-color-white opacity-0 shadow-sm group-hover/category:visible group-hover/category:opacity-100","rounded-sm p-1"),children:r?.children?.map(o=>e("span",{onPointerDown:()=>u(o?.title,"","seoHeader"),onClick:s=>{s.stopPropagation(),s.nativeEvent.stopPropagation(),l(r),i(o)},className:t("desk-body-regular-l rounded-sm px-3 py-3.5 text-color-dark duration-100 hover:bg-color-primary-tr-hover hover:text-color-dark",{"text-color-primary-default":a?.title===o?.title}),children:o.title},o.title))})]})};export{f as RootTab};
2
2
  //# sourceMappingURL=RootTab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RootTab.js","sources":["../../../../../../../lib/widgets/seoHeader/ui/desktop/rootTab/RootTab.tsx"],"sourcesContent":["import { pushToDlLink } from '../../../../../shared/dataLayers'\nimport { type Category } from '../../../model'\nimport { cn, TypeGuards } from '$/shared/utils'\n\ntype RootTabProps = React.HTMLAttributes<HTMLDivElement | HTMLAnchorElement> & {\n category: Category\n selectedCategory: Category | undefined\n onCurrentCategoryChange: (category: Category) => void\n onRootCategoryChange: (category: Category) => void\n active: boolean\n}\n\nexport const RootTab = ({\n category,\n selectedCategory,\n onCurrentCategoryChange,\n onRootCategoryChange,\n active,\n ...props\n}: RootTabProps) => {\n const isLink = Boolean(category.link) && !TypeGuards.isStringEmpty(category?.link?.href)\n const Comp = isLink ? 'a' : 'div'\n\n const attrs = isLink\n ? {\n href: category.link?.href,\n target: category.link?.target\n }\n : {\n onClick: () => {\n if (!category.children) return\n\n onCurrentCategoryChange(category.children?.[0])\n onRootCategoryChange(category)\n }\n }\n\n return (\n <div className='group/category relative'>\n <Comp\n {...props}\n {...attrs}\n className={cn('cursor-pointer text-color-tetriary duration-100 hover:text-color-dark', {\n 'text-color-dark': active\n })}\n >\n <span className='desk-body-regular-m'>{category.title}</span>\n </Comp>\n {category?.children && category?.children?.length > 1 && (\n <div\n className={cn(\n 'absolute right-0 top-full z-10 flex w-max flex-col',\n 'invisible bg-color-white opacity-0 shadow-sm group-hover/category:visible group-hover/category:opacity-100',\n 'rounded-sm p-1'\n )}\n >\n {category?.children?.map((child) => (\n <span\n onPointerDown={() => pushToDlLink(child?.title, '', 'seoHeader')}\n onClick={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopPropagation()\n\n onRootCategoryChange(category)\n onCurrentCategoryChange(child)\n }}\n key={child.title}\n className={cn(\n 'desk-body-regular-l rounded-sm px-3 py-3.5 text-color-dark duration-100 hover:bg-color-primary-tr-hover hover:text-color-dark',\n {\n 'text-color-primary-default': selectedCategory?.title === child?.title\n }\n )}\n >\n {child.title}\n </span>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["RootTab","category","selectedCategory","onCurrentCategoryChange","onRootCategoryChange","active","props","isLink","TypeGuards","Comp","attrs","jsxs","jsx","cn","child","pushToDlLink","event"],"mappings":"yPAYO,MAAMA,EAAU,CAAC,CACtB,SAAAC,EACA,iBAAAC,EACA,wBAAAC,EACA,qBAAAC,EACA,OAAAC,EACA,GAAGC,CACL,IAAoB,CAClB,MAAMC,EAAS,EAAQN,EAAS,MAAS,CAACO,EAAW,cAAcP,GAAU,MAAM,IAAI,EACjFQ,EAAOF,EAAS,IAAM,MAEtBG,EAAQH,EACV,CACE,KAAMN,EAAS,MAAM,KACrB,OAAQA,EAAS,MAAM,MAAA,EAEzB,CACE,QAAS,IAAM,CACRA,EAAS,WAEdE,EAAwBF,EAAS,WAAW,CAAC,CAAC,EAC9CG,EAAqBH,CAAQ,EAC/B,CAAA,EAGN,OACEU,EAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAC,EAACH,EAAA,CACE,GAAGH,EACH,GAAGI,EACJ,UAAWG,EAAG,wEAAyE,CACrF,kBAAmBR,CAAA,CACpB,EAED,SAAAO,EAAC,OAAA,CAAK,UAAU,sBAAuB,WAAS,KAAA,CAAM,CAAA,CAAA,EAEvDX,GAAU,UAAYA,GAAU,UAAU,OAAS,GAClDW,EAAC,MAAA,CACC,UAAWC,EACT,qDACA,6GACA,gBAAA,EAGD,SAAAZ,GAAU,UAAU,IAAKa,GACxBF,EAAC,OAAA,CACC,cAAe,IAAMG,EAAaD,GAAO,MAAO,GAAI,WAAW,EAC/D,QAAUE,GAAU,CAClBA,EAAM,gBAAA,EACNA,EAAM,YAAY,gBAAA,EAElBZ,EAAqBH,CAAQ,EAC7BE,EAAwBW,CAAK,CAC/B,EAEA,UAAWD,EACT,gIACA,CACE,6BAA8BX,GAAkB,QAAUY,GAAO,KAAA,CACnE,EAGD,SAAAA,EAAM,KAAA,EARFA,EAAM,KAAA,CAUd,CAAA,CAAA,CACH,EAEJ,CAEJ"}
1
+ {"version":3,"file":"RootTab.js","sources":["../../../../../../../lib/widgets/seoHeader/ui/desktop/rootTab/RootTab.tsx"],"sourcesContent":["import { pushToDlLink } from '../../../../../shared/dataLayers'\nimport { type Category } from '../../../model'\nimport { cn } from '$/shared/utils'\n\ntype RootTabProps = React.HTMLAttributes<HTMLDivElement | HTMLAnchorElement> & {\n category: Category\n selectedCategory: Category | undefined\n onCurrentCategoryChange: (category: Category) => void\n onRootCategoryChange: (category: Category) => void\n active: boolean\n}\n\nexport const RootTab = ({\n category,\n selectedCategory,\n onCurrentCategoryChange,\n onRootCategoryChange,\n active,\n ...props\n}: RootTabProps) => {\n const isLink = Boolean(category?.link?.href)\n const Comp = isLink ? 'a' : 'div'\n\n const attrs = isLink\n ? {\n href: category.link?.href,\n target: category.link?.target\n }\n : {\n onClick: () => {\n if (!category.children) return\n\n onCurrentCategoryChange(category.children?.[0])\n onRootCategoryChange(category)\n }\n }\n\n return (\n <div className='group/category relative'>\n <Comp\n {...props}\n {...attrs}\n className={cn('cursor-pointer text-color-tetriary duration-100 hover:text-color-dark', {\n 'text-color-dark': active\n })}\n >\n <span className='desk-body-regular-m'>{category.title}</span>\n </Comp>\n {category?.children && category?.children?.length > 1 && (\n <div\n className={cn(\n 'absolute right-0 top-full z-10 flex w-max flex-col',\n 'invisible bg-color-white opacity-0 shadow-sm group-hover/category:visible group-hover/category:opacity-100',\n 'rounded-sm p-1'\n )}\n >\n {category?.children?.map((child) => (\n <span\n onPointerDown={() => pushToDlLink(child?.title, '', 'seoHeader')}\n onClick={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopPropagation()\n\n onRootCategoryChange(category)\n onCurrentCategoryChange(child)\n }}\n key={child.title}\n className={cn(\n 'desk-body-regular-l rounded-sm px-3 py-3.5 text-color-dark duration-100 hover:bg-color-primary-tr-hover hover:text-color-dark',\n {\n 'text-color-primary-default': selectedCategory?.title === child?.title\n }\n )}\n >\n {child.title}\n </span>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["RootTab","category","selectedCategory","onCurrentCategoryChange","onRootCategoryChange","active","props","isLink","Comp","attrs","jsxs","jsx","cn","child","pushToDlLink","event"],"mappings":"kLAYO,MAAMA,EAAU,CAAC,CACtB,SAAAC,EACA,iBAAAC,EACA,wBAAAC,EACA,qBAAAC,EACA,OAAAC,EACA,GAAGC,CACL,IAAoB,CAClB,MAAMC,EAAS,EAAQN,GAAU,MAAM,KACjCO,EAAOD,EAAS,IAAM,MAEtBE,EAAQF,EACV,CACE,KAAMN,EAAS,MAAM,KACrB,OAAQA,EAAS,MAAM,MAAA,EAEzB,CACE,QAAS,IAAM,CACRA,EAAS,WAEdE,EAAwBF,EAAS,WAAW,CAAC,CAAC,EAC9CG,EAAqBH,CAAQ,EAC/B,CAAA,EAGN,OACES,EAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAC,EAACH,EAAA,CACE,GAAGF,EACH,GAAGG,EACJ,UAAWG,EAAG,wEAAyE,CACrF,kBAAmBP,CAAA,CACpB,EAED,SAAAM,EAAC,OAAA,CAAK,UAAU,sBAAuB,WAAS,KAAA,CAAM,CAAA,CAAA,EAEvDV,GAAU,UAAYA,GAAU,UAAU,OAAS,GAClDU,EAAC,MAAA,CACC,UAAWC,EACT,qDACA,6GACA,gBAAA,EAGD,SAAAX,GAAU,UAAU,IAAKY,GACxBF,EAAC,OAAA,CACC,cAAe,IAAMG,EAAaD,GAAO,MAAO,GAAI,WAAW,EAC/D,QAAUE,GAAU,CAClBA,EAAM,gBAAA,EACNA,EAAM,YAAY,gBAAA,EAElBX,EAAqBH,CAAQ,EAC7BE,EAAwBU,CAAK,CAC/B,EAEA,UAAWD,EACT,gIACA,CACE,6BAA8BV,GAAkB,QAAUW,GAAO,KAAA,CACnE,EAGD,SAAAA,EAAM,KAAA,EARFA,EAAM,KAAA,CAUd,CAAA,CAAA,CACH,EAEJ,CAEJ"}
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as a}from"react/jsx-runtime";import{cn as s}from"../../../../../shared/utils/cn.js";import{Accordion as f}from"../../../../../shared/ui/accordion/Accordion.js";import{Icon as i}from"../../../../../shared/ui/icon/Icon.js";import{pushToDlLink as n}from"../../../../../shared/dataLayers/utils.js";const b=({category:r})=>e(f,{onPointerDown:()=>n(r?.title,"","seoHeader"),label:r.title??"",icon:e(i,{name:"arrows/arrowRight",className:"-rotate-90"}),classes:{root:"w-full",header:{trigger:"py-2 data-[open=false]:bg-color-white",label:"desk-body-regular-m"},content:s("relative",'after:content-"" after:absolute after:w-[calc(100%-32px)]',"after:bottom-0 after:left-1/2 after:-translate-x-1/2","after:h-[1px] after:bg-color-blue-grey-200")},children:e("div",{className:"flex flex-col items-start justify-center gap-y-4",children:r?.children?.map(t=>{const o=!!t.link;return a("ul",{className:"w-full list-none p-0",children:[a(o?"a":"p",{href:o?t.link?.href:void 0,className:"mb-3 flex items-center gap-x-1 text-16 text-color-primary-default",children:[t.title,e(i,{name:"arrows/arrowLink"})]}),t?.children?.map(l=>e("li",{className:"inline-block w-full [&:not(:last-child)]:mb-3",children:e("a",{onPointerDown:()=>n(l?.title,l?.link?.href,"seoHeader"),href:l.link?.href,className:"w-full",children:l.title})},l.title))]},t.title)})})},r.title);export{b as MenuItem};
1
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";import{cn as s}from"../../../../../shared/utils/cn.js";import{Accordion as f}from"../../../../../shared/ui/accordion/Accordion.js";import{Icon as i}from"../../../../../shared/ui/icon/Icon.js";import{pushToDlLink as n}from"../../../../../shared/dataLayers/utils.js";const x=({category:l})=>e(f,{onPointerDown:()=>n(l?.title,"","seoHeader"),label:l.title??"",icon:e(i,{name:"arrows/arrowRight",className:"-rotate-90"}),classes:{root:"w-full",header:{trigger:"py-2 data-[open=false]:bg-color-white",label:"desk-body-regular-m"},content:s("relative",'after:content-"" after:absolute after:w-[calc(100%-32px)]',"after:bottom-0 after:left-1/2 after:-translate-x-1/2","after:h-[1px] after:bg-color-blue-grey-200")},children:e("div",{className:"flex flex-col items-start justify-center gap-y-4",children:l?.children?.map(t=>{const o=!!t?.link?.href;return a("ul",{className:"w-full list-none p-0",children:[a(o?"a":"p",{href:o?t.link?.href:void 0,className:"mb-3 flex items-center gap-x-1 text-16 text-color-primary-default",children:[t.title,e(i,{name:"arrows/arrowLink"})]}),t?.children?.map(r=>e("li",{className:"inline-block w-full [&:not(:last-child)]:mb-3",children:e("a",{onPointerDown:()=>n(r?.title,r?.link?.href,"seoHeader"),href:r.link?.href,className:"w-full",children:r.title})},r.title))]},t.title)})})},l.title);export{x as MenuItem};
2
2
  //# sourceMappingURL=MenuItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.js","sources":["../../../../../../../lib/widgets/seoHeader/ui/mobile/menu/MenuItem.tsx"],"sourcesContent":["import { pushToDlLink } from '../../../../../shared/dataLayers'\nimport { type Category } from '../../../model'\nimport { Accordion, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype MenuItemProps = {\n category: Category\n}\n\nexport const MenuItem = ({ category }: MenuItemProps) => (\n <Accordion\n key={category.title}\n onPointerDown={() => pushToDlLink(category?.title, '', 'seoHeader')}\n label={category.title ?? ''}\n icon={<Icon name='arrows/arrowRight' className='-rotate-90' />}\n classes={{\n root: 'w-full',\n header: {\n trigger: 'py-2 data-[open=false]:bg-color-white',\n label: 'desk-body-regular-m'\n },\n content: cn(\n 'relative',\n 'after:content-\"\" after:absolute after:w-[calc(100%-32px)]',\n 'after:bottom-0 after:left-1/2 after:-translate-x-1/2',\n 'after:h-[1px] after:bg-color-blue-grey-200'\n )\n }}\n >\n <div className='flex flex-col items-start justify-center gap-y-4'>\n {category?.children?.map((child) => {\n const isLink = Boolean(child.link)\n const Title = isLink ? 'a' : 'p'\n\n return (\n <ul key={child.title} className='w-full list-none p-0'>\n <Title\n href={isLink ? child.link?.href : undefined}\n className='mb-3 flex items-center gap-x-1 text-16 text-color-primary-default'\n >\n {child.title}\n <Icon name='arrows/arrowLink' />\n </Title>\n {child?.children?.map((innerChild) => (\n <li key={innerChild.title} className='inline-block w-full [&:not(:last-child)]:mb-3'>\n <a\n onPointerDown={() => pushToDlLink(innerChild?.title, innerChild?.link?.href, 'seoHeader')}\n href={innerChild.link?.href}\n className='w-full'\n >\n {innerChild.title}\n </a>\n </li>\n ))}\n </ul>\n )\n })}\n </div>\n </Accordion>\n)\n"],"names":["MenuItem","category","jsx","Accordion","pushToDlLink","Icon","cn","child","isLink","jsxs","innerChild"],"mappings":"2TASO,MAAMA,EAAW,CAAC,CAAE,SAAAC,CAAA,IACzBC,EAACC,EAAA,CAEC,cAAe,IAAMC,EAAaH,GAAU,MAAO,GAAI,WAAW,EAClE,MAAOA,EAAS,OAAS,GACzB,KAAMC,EAACG,EAAA,CAAK,KAAK,oBAAoB,UAAU,aAAa,EAC5D,QAAS,CACP,KAAM,SACN,OAAQ,CACN,QAAS,wCACT,MAAO,qBAAA,EAET,QAASC,EACP,WACA,4DACA,uDACA,4CAAA,CACF,EAGF,SAAAJ,EAAC,OAAI,UAAU,mDACZ,YAAU,UAAU,IAAKK,GAAU,CAClC,MAAMC,EAAS,EAAQD,EAAM,KAG7B,OACEE,EAAC,KAAA,CAAqB,UAAU,uBAC9B,SAAA,CAAAA,EAJUD,EAAS,IAAM,IAIxB,CACC,KAAMA,EAASD,EAAM,MAAM,KAAO,OAClC,UAAU,oEAET,SAAA,CAAAA,EAAM,MACPL,EAACG,EAAA,CAAK,KAAK,kBAAA,CAAmB,CAAA,CAAA,CAAA,EAE/BE,GAAO,UAAU,IAAKG,GACrBR,EAAC,KAAA,CAA0B,UAAU,gDACnC,SAAAA,EAAC,IAAA,CACC,cAAe,IAAME,EAAaM,GAAY,MAAOA,GAAY,MAAM,KAAM,WAAW,EACxF,KAAMA,EAAW,MAAM,KACvB,UAAU,SAET,SAAAA,EAAW,KAAA,CAAA,CACd,EAPOA,EAAW,KAQpB,CACD,CAAA,CAAA,EAlBMH,EAAM,KAmBf,CAEJ,CAAC,CAAA,CACH,CAAA,EA9CKN,EAAS,KA+ChB"}
1
+ {"version":3,"file":"MenuItem.js","sources":["../../../../../../../lib/widgets/seoHeader/ui/mobile/menu/MenuItem.tsx"],"sourcesContent":["import { pushToDlLink } from '../../../../../shared/dataLayers'\nimport { type Category } from '../../../model'\nimport { Accordion, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype MenuItemProps = {\n category: Category\n}\n\nexport const MenuItem = ({ category }: MenuItemProps) => (\n <Accordion\n key={category.title}\n onPointerDown={() => pushToDlLink(category?.title, '', 'seoHeader')}\n label={category.title ?? ''}\n icon={<Icon name='arrows/arrowRight' className='-rotate-90' />}\n classes={{\n root: 'w-full',\n header: {\n trigger: 'py-2 data-[open=false]:bg-color-white',\n label: 'desk-body-regular-m'\n },\n content: cn(\n 'relative',\n 'after:content-\"\" after:absolute after:w-[calc(100%-32px)]',\n 'after:bottom-0 after:left-1/2 after:-translate-x-1/2',\n 'after:h-[1px] after:bg-color-blue-grey-200'\n )\n }}\n >\n <div className='flex flex-col items-start justify-center gap-y-4'>\n {category?.children?.map((child) => {\n const isLink = Boolean(child?.link?.href)\n const Title = isLink ? 'a' : 'p'\n\n return (\n <ul key={child.title} className='w-full list-none p-0'>\n <Title\n href={isLink ? child.link?.href : undefined}\n className='mb-3 flex items-center gap-x-1 text-16 text-color-primary-default'\n >\n {child.title}\n <Icon name='arrows/arrowLink' />\n </Title>\n {child?.children?.map((innerChild) => (\n <li key={innerChild.title} className='inline-block w-full [&:not(:last-child)]:mb-3'>\n <a\n onPointerDown={() => pushToDlLink(innerChild?.title, innerChild?.link?.href, 'seoHeader')}\n href={innerChild.link?.href}\n className='w-full'\n >\n {innerChild.title}\n </a>\n </li>\n ))}\n </ul>\n )\n })}\n </div>\n </Accordion>\n)\n"],"names":["MenuItem","category","jsx","Accordion","pushToDlLink","Icon","cn","child","isLink","jsxs","innerChild"],"mappings":"2TASO,MAAMA,EAAW,CAAC,CAAE,SAAAC,CAAA,IACzBC,EAACC,EAAA,CAEC,cAAe,IAAMC,EAAaH,GAAU,MAAO,GAAI,WAAW,EAClE,MAAOA,EAAS,OAAS,GACzB,KAAMC,EAACG,EAAA,CAAK,KAAK,oBAAoB,UAAU,aAAa,EAC5D,QAAS,CACP,KAAM,SACN,OAAQ,CACN,QAAS,wCACT,MAAO,qBAAA,EAET,QAASC,EACP,WACA,4DACA,uDACA,4CAAA,CACF,EAGF,SAAAJ,EAAC,OAAI,UAAU,mDACZ,YAAU,UAAU,IAAKK,GAAU,CAClC,MAAMC,EAAS,EAAQD,GAAO,MAAM,KAGpC,OACEE,EAAC,KAAA,CAAqB,UAAU,uBAC9B,SAAA,CAAAA,EAJUD,EAAS,IAAM,IAIxB,CACC,KAAMA,EAASD,EAAM,MAAM,KAAO,OAClC,UAAU,oEAET,SAAA,CAAAA,EAAM,MACPL,EAACG,EAAA,CAAK,KAAK,kBAAA,CAAmB,CAAA,CAAA,CAAA,EAE/BE,GAAO,UAAU,IAAKG,GACrBR,EAAC,KAAA,CAA0B,UAAU,gDACnC,SAAAA,EAAC,IAAA,CACC,cAAe,IAAME,EAAaM,GAAY,MAAOA,GAAY,MAAM,KAAM,WAAW,EACxF,KAAMA,EAAW,MAAM,KACvB,UAAU,SAET,SAAAA,EAAW,KAAA,CAAA,CACd,EAPOA,EAAW,KAQpB,CACD,CAAA,CAAA,EAlBMH,EAAM,KAmBf,CAEJ,CAAC,CAAA,CACH,CAAA,EA9CKN,EAAS,KA+ChB"}