@scbt-ecom/ui 0.104.0 → 0.104.2

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.
Files changed (69) hide show
  1. package/dist/lib/exports/ui.js +1 -1
  2. package/dist/lib/shared/style.css +1 -1
  3. package/dist/lib/shared/ui/button/model/helpers.js +1 -1
  4. package/dist/lib/shared/ui/button/model/helpers.js.map +1 -1
  5. package/dist/lib/shared/ui/calendar/ui/selectDate/ui/SelectList.js +1 -1
  6. package/dist/lib/shared/ui/calendar/ui/selectDate/ui/SelectList.js.map +1 -1
  7. package/dist/lib/shared/ui/customLink/model/helpers.js +1 -1
  8. package/dist/lib/shared/ui/customLink/model/helpers.js.map +1 -1
  9. package/dist/lib/shared/ui/dropdownList/DropdownList.js +1 -1
  10. package/dist/lib/shared/ui/dropdownList/DropdownList.js.map +1 -1
  11. package/dist/lib/shared/ui/dropdownList/hooks/model/scrollTo.js +1 -1
  12. package/dist/lib/shared/ui/dropdownList/hooks/model/scrollTo.js.map +1 -1
  13. package/dist/lib/shared/ui/dropdownList/index.js +1 -1
  14. package/dist/lib/shared/ui/dropdownList/ui/Empty.js +2 -0
  15. package/dist/lib/shared/ui/dropdownList/ui/Empty.js.map +1 -0
  16. package/dist/lib/shared/ui/dropdownList/ui/index.js +1 -1
  17. package/dist/lib/shared/ui/formElements/uncontrolled/combobox/combobox.js +1 -1
  18. package/dist/lib/shared/ui/formElements/uncontrolled/combobox/combobox.js.map +1 -1
  19. package/dist/lib/shared/ui/formElements/uncontrolled/combobox/hooks/index.js +1 -1
  20. package/dist/lib/shared/ui/formElements/uncontrolled/combobox/hooks/useKeyboardNavigation.js +2 -0
  21. package/dist/lib/shared/ui/formElements/uncontrolled/combobox/hooks/useKeyboardNavigation.js.map +1 -0
  22. package/dist/lib/shared/ui/index.js +1 -1
  23. package/dist/lib/shared/ui/slot/ui/SlotClone.js.map +1 -1
  24. package/dist/lib/widgets/calculator/CalculatorView.js +1 -1
  25. package/dist/lib/widgets/calculator/CalculatorView.js.map +1 -1
  26. package/dist/lib/widgets/dynamicForm/DynamicForm.js +1 -1
  27. package/dist/lib/widgets/dynamicForm/DynamicForm.js.map +1 -1
  28. package/dist/lib/widgets/interLinking/ui/LinksList.js +1 -1
  29. package/dist/lib/widgets/interLinking/ui/LinksList.js.map +1 -1
  30. package/dist/lib/widgets/model/helpers.js +2 -2
  31. package/dist/lib/widgets/model/helpers.js.map +1 -1
  32. package/dist/lib/widgets/stepper/ui/SingleStep.js +1 -1
  33. package/dist/lib/widgets/stepper/ui/SingleStep.js.map +1 -1
  34. package/dist/lib/widgets/usefulInfo/UsefulInfo.js +1 -1
  35. package/dist/lib/widgets/usefulInfo/UsefulInfo.js.map +1 -1
  36. package/dist/lib/widgets/usefulInfo/ui/RenderEntity.js +1 -1
  37. package/dist/lib/widgets/usefulInfo/ui/RenderEntity.js.map +1 -1
  38. package/dist/lib/widgets/usefulInfo/ui/Tabs.js +1 -1
  39. package/dist/lib/widgets/usefulInfo/ui/Tabs.js.map +1 -1
  40. package/dist/lib/widgets/usefulInfo/ui/subEntities/documents/Documents.js +1 -1
  41. package/dist/lib/widgets/usefulInfo/ui/subEntities/documents/Documents.js.map +1 -1
  42. package/dist/lib/widgets/usefulInfo/ui/subEntities/html/Html.js +1 -1
  43. package/dist/lib/widgets/usefulInfo/ui/subEntities/html/Html.js.map +1 -1
  44. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/Table.js +1 -1
  45. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/Table.js.map +1 -1
  46. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/ui/DesktopHeadings.js +1 -1
  47. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/ui/DesktopHeadings.js.map +1 -1
  48. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/ui/DesktopRow.js +1 -1
  49. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/ui/DesktopRow.js.map +1 -1
  50. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/ui/MobileRow.js +1 -1
  51. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/ui/MobileRow.js.map +1 -1
  52. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/ui/TableBody.js +1 -1
  53. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/ui/TableBody.js.map +1 -1
  54. package/dist/node_modules/@date-fns/tz/date/index.js +1 -1
  55. package/dist/node_modules/@date-fns/tz/date/index.js.map +1 -1
  56. package/dist/node_modules/@date-fns/tz/tzName/index.js +2 -0
  57. package/dist/node_modules/@date-fns/tz/tzName/index.js.map +1 -0
  58. package/dist/node_modules/@date-fns/tz/tzOffset/index.js +1 -1
  59. package/dist/node_modules/@date-fns/tz/tzOffset/index.js.map +1 -1
  60. package/dist/stats.html +1 -1
  61. package/dist/types/lib/shared/ui/button/model/helpers.d.ts +1 -1
  62. package/dist/types/lib/shared/ui/dropdownList/DropdownList.d.ts +8 -1
  63. package/dist/types/lib/shared/ui/dropdownList/hooks/model/scrollTo.d.ts +2 -2
  64. package/dist/types/lib/shared/ui/dropdownList/ui/Empty.d.ts +4 -0
  65. package/dist/types/lib/shared/ui/dropdownList/ui/index.d.ts +1 -0
  66. package/dist/types/lib/shared/ui/formElements/uncontrolled/combobox/hooks/index.d.ts +1 -0
  67. package/dist/types/lib/shared/ui/formElements/uncontrolled/combobox/hooks/useKeyboardNavigation.d.ts +6 -0
  68. package/dist/types/lib/widgets/usefulInfo/ui/subEntities/table/ui/DesktopRow.d.ts +1 -2
  69. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/combobox/combobox.tsx"],"sourcesContent":["import { type ForwardedRef, forwardRef, useEffect, useRef } from 'react'\nimport { autoUpdate, flip, offset, useFloating } from '@floating-ui/react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { useCombobox } from './hooks'\nimport type { ChangeHandler, ComboboxValue } from './model'\nimport type { ComboboxItemOption } from './ui'\nimport { useClickOutside } from '$/shared/hooks'\nimport { type DeepPartial } from '$/shared/types'\nimport { Icon } from '$/shared/ui'\nimport { DropdownList, type DropdownListClasses, type DropdownListProps } from '$/shared/ui/dropdownList'\nimport { type IFieldAttachmentProps } from '$/shared/ui/formElements/ui'\nimport { InputBase, type InputBaseProps } from '$/shared/ui/formElements/uncontrolled/input'\nimport { cn, mergeRefs } 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> = {\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}\n\nexport interface ComboboxProps<Multi extends boolean> extends Omit<DropdownListProps<Multi>, 'options' | 'value' | 'onChange'> {\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?: (option: ComboboxItemOption) => string\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\nconst InnerComponent = <Multi extends boolean>(\n {\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 classes\n }: ComboboxProps<Multi>,\n ref: ForwardedRef<HTMLInputElement>\n) => {\n const { floating, ...dropdownClasses } = classes?.list ?? {}\n\n const containerRef = useRef<HTMLDivElement>(null)\n\n const { refs, floatingStyles } = useFloating<HTMLInputElement>({\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, comboboxDisplayValue } = 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 useEffect(() => {\n if (!refs.domReference.current) return\n\n const input = refs.domReference.current\n\n const abortController = new AbortController()\n\n input.addEventListener(\n 'keydown',\n (event) => {\n switch (event.key) {\n case ' ':\n if (!open) setOpen(true)\n }\n },\n { signal: abortController.signal }\n )\n\n return () => {\n abortController.abort()\n }\n }, [])\n\n const getLabel = () => {\n if (!value) return ''\n\n if (multiple && searchable) {\n return comboboxDisplayValue(value)\n } else if (searchable) {\n return search\n } else {\n return comboboxDisplayValue(value)\n }\n }\n\n useClickOutside(containerRef, () => setOpen(false))\n\n return (\n <div ref={containerRef} className={cn('relative w-full', classes?.root, className)}>\n <InputBase\n ref={mergeRefs(ref, refs.setReference)}\n label={label}\n invalid={invalid}\n readOnly={readOnly || !searchable}\n value={inputValue || getLabel()}\n onChange={onInputChange}\n disabled={disabled}\n onClick={(event) => {\n setOpen(true)\n externalHandlers?.clickHandler?.(event)\n }}\n onBlur={externalHandlers?.blurHandler}\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 })}\n />\n ),\n onClickIcon: () => setOpen((prev) => !prev),\n ...attachmentProps\n }}\n />\n\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={{ ...floatingStyles, width: containerRef.current?.getBoundingClientRect().width }}\n >\n <DropdownList\n options={options}\n multiple={multiple}\n onPick={changeHandler}\n value={state}\n displayValue={displayValue}\n classes={dropdownClasses}\n target={refs.domReference}\n />\n </motion.div>\n )}\n </AnimatePresence>\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","initialOptions","multiple","value","onChange","defaultOpen","attachmentProps","searchable","invalid","displayValue","label","disabled","readOnly","className","externalHandlers","inputValue","filterDisabled","externalInputChangeHandler","classes","ref","floating","dropdownClasses","containerRef","useRef","refs","floatingStyles","useFloating","flip","offset","autoUpdate","open","setOpen","state","changeHandler","options","search","onInputChange","comboboxDisplayValue","useCombobox","useEffect","input","abortController","event","getLabel","useClickOutside","jsxs","cn","jsx","InputBase","mergeRefs","_a","Icon","prev","AnimatePresence","motion","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, useRef } 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, ComboboxValue } from './model'\nimport type { ComboboxItemOption } from './ui'\nimport { useClickOutside } from '$/shared/hooks'\nimport { type DeepPartial } from '$/shared/types'\nimport { Icon } from '$/shared/ui'\nimport { DropdownList, type DropdownListClasses, type DropdownListProps } from '$/shared/ui/dropdownList'\nimport { type IFieldAttachmentProps } from '$/shared/ui/formElements/ui'\nimport { InputBase, type InputBaseProps } from '$/shared/ui/formElements/uncontrolled/input'\nimport { cn, mergeRefs } 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> = {\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}\n\nexport interface ComboboxProps<Multi extends boolean> extends Omit<DropdownListProps<Multi>, 'options' | 'value' | 'onChange'> {\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?: (option: ComboboxItemOption) => string\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\nconst InnerComponent = <Multi extends boolean>(\n {\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 }: ComboboxProps<Multi>,\n ref: ForwardedRef<HTMLInputElement>\n) => {\n const { floating, ...dropdownClasses } = classes?.list ?? {}\n\n const containerRef = useRef<HTMLDivElement>(null)\n\n const { refs, floatingStyles } = useFloating<HTMLInputElement>({\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, comboboxDisplayValue } = 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 comboboxDisplayValue(value)\n } else if (searchable) {\n return search\n } else {\n return comboboxDisplayValue(value)\n }\n }\n\n useClickOutside(containerRef, () => setOpen(false))\n\n return (\n <div ref={containerRef} className={cn('relative w-full', classes?.root, className)}>\n <InputBase\n ref={mergeRefs(ref, refs.setReference)}\n label={label}\n invalid={invalid}\n readOnly={readOnly || !searchable}\n value={inputValue || getLabel()}\n onChange={onInputChange}\n disabled={disabled}\n onClick={(event) => {\n setOpen(true)\n externalHandlers?.clickHandler?.(event)\n }}\n onBlur={externalHandlers?.blurHandler}\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 })}\n />\n ),\n onClickIcon: () => setOpen((prev) => !prev),\n ...attachmentProps\n }}\n />\n\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={{ ...floatingStyles, width: containerRef.current?.getBoundingClientRect().width }}\n >\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 </motion.div>\n )}\n </AnimatePresence>\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","initialOptions","multiple","value","onChange","defaultOpen","attachmentProps","searchable","invalid","displayValue","label","disabled","readOnly","className","externalHandlers","inputValue","filterDisabled","externalInputChangeHandler","empty","classes","ref","floating","dropdownClasses","containerRef","useRef","refs","floatingStyles","useFloating","flip","offset","autoUpdate","open","setOpen","state","changeHandler","options","search","onInputChange","comboboxDisplayValue","useCombobox","useKeyboardNavigation","getLabel","useClickOutside","jsxs","cn","jsx","InputBase","mergeRefs","event","_a","Icon","prev","AnimatePresence","motion","DropdownList","Combobox","forwardRef"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{useCombobox as e}from"./useCombobox.js";export{e as useCombobox};
1
+ import{useCombobox as r}from"./useCombobox.js";import{useKeyboardNavigation as b}from"./useKeyboardNavigation.js";export{r as useCombobox,b as useKeyboardNavigation};
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ import{useEffect as s}from"react";const c=({ref:t,openChangeHandler:r})=>{s(()=>{if(!t.current)return;const o=t.current,e=new AbortController;return o.addEventListener("keydown",n=>{switch(n.key){case" ":r(!0);break;case"Escape":r(!1)}},{signal:e.signal}),()=>{e.abort()}},[])};export{c as useKeyboardNavigation};
2
+ //# sourceMappingURL=useKeyboardNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeyboardNavigation.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/combobox/hooks/useKeyboardNavigation.ts"],"sourcesContent":["import { useEffect } from 'react'\n\ninterface UseKeyboardNavigationProps<Ref extends HTMLElement> {\n ref: React.RefObject<Ref>\n openChangeHandler: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nexport const useKeyboardNavigation = <Ref extends HTMLElement>({ ref, openChangeHandler }: UseKeyboardNavigationProps<Ref>) => {\n useEffect(() => {\n if (!ref.current) return\n\n const target = ref.current\n\n const abortController = new AbortController()\n\n target.addEventListener(\n 'keydown',\n (event) => {\n switch (event.key) {\n case ' ':\n openChangeHandler(true)\n break\n case 'Escape':\n openChangeHandler(false)\n }\n },\n { signal: abortController.signal }\n )\n\n return () => {\n abortController.abort()\n }\n }, [])\n}\n"],"names":["useKeyboardNavigation","ref","openChangeHandler","useEffect","target","abortController","event"],"mappings":"kCAOO,MAAMA,EAAwB,CAA0B,CAAE,IAAAC,EAAK,kBAAAC,KAAyD,CAC7HC,EAAU,IAAM,CACd,GAAI,CAACF,EAAI,QAAS,OAElB,MAAMG,EAASH,EAAI,QAEbI,EAAkB,IAAI,gBAE5B,OAAAD,EAAO,iBACL,UACCE,GAAU,CACT,OAAQA,EAAM,IAAA,CACZ,IAAK,IACHJ,EAAkB,EAAI,EACtB,MACF,IAAK,SACHA,EAAkB,EAAK,CAAA,CAE7B,EACA,CAAE,OAAQG,EAAgB,MAAA,CAAO,EAG5B,IAAM,CACXA,EAAgB,MAAA,CAClB,CACF,EAAG,CAAA,CAAE,CACP"}
@@ -1,2 +1,2 @@
1
- import{ResponsiveContainer as t}from"./responsiveContainer/ResponsiveContainer.js";import{Button as a}from"./button/Button.js";import{buttonPrimitiveIntent as p,buttonPrimitiveSize as x,buttonPrimitiveTextFormat as f,buttonPrimitiveType as n}from"./button/model/helpers.js";import{ButtonIcon as l}from"./buttonIcon/ButtonIcon.js";import{PhoneView as s}from"./phoneView/PhoneView.js";import{Badge as u}from"./badge/Badge.js";import{Loader as T}from"./loader/Loader.js";import{Skeleton as I}from"./skeleton/Skeleton.js";import{FloatButton as S}from"./floatButton/FloatButton.js";import{Calendar as P}from"./calendar/Calendar.js";import{DATE_VISIBLE_PATTERN as v,defaultClassNames as y,formatDateToLocaleString as k,formatDateToMonthString as R,formatDateToYearString as h}from"./calendar/model/utils.js";import{Accordion as A}from"./accordion/Accordion.js";import{Hint as N}from"./hint/Hint.js";import{Popover as F}from"./popover/Popover.js";import{ProgressBar as M}from"./progressBar/ProgressBar.js";import{TabsSwitcher as O}from"./tabSwitcher/TabsSwitcher.js";import{Modal as z}from"./modal/Modal.js";import{Notification as _}from"./notification/Notification.js";import{Table as Y,TableBody as j,TableCaption as q,TableCell as J,TableFooter as Q,TableHead as W,TableHeader as X,TableRow as Z}from"./table/ui/primitives/Primitives.js";import{DataTableColumnHeader as oo}from"./table/ui/dataTableColumnHeader/DataTableColumnHeader.js";import{EditableCell as to}from"./table/ui/editableCell/EditableCell.js";import{DataTable as ao}from"./table/Table.js";import{TableUtils as po}from"./table/model/TableUtils.js";import{Pagination as fo}from"./pagination/Pagination.js";import{CarouselBase as io}from"./carousel/CarouselBase.js";import{ArrowNavigationButton as so}from"./carousel/ui/ArrowNavigationButton.js";import{CarouselSlide as uo}from"./carousel/ui/CarouselSlide.js";import{DotsNavigations as To}from"./carousel/ui/DotsNavigations.js";import{SlideProductCard as Io}from"./carousel/ui/slideVariants/SlideProductCard.js";import{SlideOnlyImage as So}from"./carousel/ui/slideVariants/SlideOnlyImage.js";import{SlideFullScreen as Po}from"./carousel/ui/slideVariants/SlideFullScreen.js";import{CarouselContent as vo}from"./carousel/ui/CarouselContent.js";import{Dialog as ko}from"./dialog/Dialog.js";import{NotificationProvider as ho}from"./providers/NotificationProvider.js";import{Heading as Ao}from"./heading/Heading.js";import{Icon as No}from"./icon/Icon.js";import{allowedIcons as Fo}from"./icon/allowedIcons.js";import{brandLogos as Mo}from"./brandLogos/BrandLogos.js";import{CustomLink as Oo}from"./customLink/CustomLink.js";import{linkPrimitiveIconIntent as zo,linkPrimitiveIntent as Vo,linkPrimitiveSize as _o}from"./customLink/model/helpers.js";import{KeyboardShortcuts as Yo}from"./keyboardShortcuts/KeyboardShortcuts.js";import{Slot as qo}from"./slot/Slot.js";import{AutocompleteBase as Qo}from"./formElements/uncontrolled/autocomplete/Autocomplete.js";import{CheckboxBase as Xo}from"./formElements/uncontrolled/checkbox/Checkbox.js";import{Combobox as $o}from"./formElements/uncontrolled/combobox/combobox.js";import{DayPickerBase as rr}from"./formElements/uncontrolled/dayPicker/DayPicker.js";import{InputBase as er}from"./formElements/uncontrolled/input/Input.js";import{InputOtpBase as mr}from"./formElements/uncontrolled/inputOtp/InputOtpBase.js";import{MaskInput as xr}from"./formElements/uncontrolled/maskInput/MaskInput.js";import{RadioGroupBase as nr}from"./formElements/uncontrolled/radio/RadioGroup.js";import{RadioItem as lr}from"./formElements/uncontrolled/radio/ui/RadioItem.js";import{RadioItemCard as sr}from"./formElements/uncontrolled/radio/ui/RadioItemCard.js";import{RadioItemTab as ur}from"./formElements/uncontrolled/radio/ui/RadioItemTab.js";import{SliderBase as Tr}from"./formElements/uncontrolled/slider/SliderBase.js";import{SwitchBase as Ir}from"./formElements/uncontrolled/switch/Switch.js";import{TextareaBase as Sr}from"./formElements/uncontrolled/textarea/Textarea.js";import{UploaderBase as Pr}from"./formElements/uncontrolled/uploader/UploaderBase.js";import{bytesToMegabytes as vr,megabytesToBytes as yr}from"./formElements/uncontrolled/uploader/model/helpers.js";import{Uncontrolled as Rr}from"./formElements/uncontrolled/index.js";import{AutocompleteControl as wr}from"./formElements/controlled/autocomplete/Autocomplete.js";import{CheckboxControl as Lr}from"./formElements/controlled/checkbox/CheckboxControl.js";import{DadataOrganization as Er}from"./formElements/controlled/dadata/party/DadataOrganization.js";import{DadataAddress as Hr}from"./formElements/controlled/dadata/address/DadataAddress.js";import{DadataAuto as Gr}from"./formElements/controlled/dadata/auto/DadataAuto.js";import{DadataCountry as Ur}from"./formElements/controlled/dadata/country/DadataCountry.js";import{DadataFio as Vr}from"./formElements/controlled/dadata/fio/DadataFio.js";import{DayPickerControl as Kr}from"./formElements/controlled/dayPickerControl/dayPickerControl.js";import{EditorControl as jr}from"./formElements/controlled/editor/EditorControl.js";import{InputControl as Jr}from"./formElements/controlled/input/InputControl.js";import{MaskInputControl as Wr}from"./formElements/controlled/input/MaskInputControl.js";import{InputCurrencyControl as Zr}from"./formElements/controlled/inputCurrency/InputCurrencyControl.js";import{InputOtpControl as ot}from"./formElements/controlled/inputOtp/InputOtpControl.js";import{RadioGroupControl as tt}from"./formElements/controlled/radio/RadioGroupControl.js";import{RadioGroupTabControl as at}from"./formElements/controlled/radio/RadioGroupTabControl.js";import{RadioGroupCardControl as pt}from"./formElements/controlled/radio/RadioGroupCardControl.js";import{SliderControl as ft}from"./formElements/controlled/slider/SliderControl.js";import{SwitchControl as it}from"./formElements/controlled/switch/SwitchControl.js";import{TextareaControl as dt}from"./formElements/controlled/textarea/TextareaControl.js";import{UploaderControl as Ct}from"./formElements/controlled/uploader/UploaderControl.js";import{ComboboxControl as bt}from"./formElements/controlled/combobox/ComboboxControl.js";import{Controlled as ct}from"./formElements/controlled/index.js";import{Chips as Bt}from"./chips/Chips.js";import{DropdownItem as Dt}from"./dropdownList/ui/dropdownItem/DropdownItem.js";import{DropdownList as gt}from"./dropdownList/DropdownList.js";export{A as Accordion,so as ArrowNavigationButton,Qo as AutocompleteBase,wr as AutocompleteControl,u as Badge,a as Button,l as ButtonIcon,P as Calendar,io as CarouselBase,vo as CarouselContent,uo as CarouselSlide,Xo as CheckboxBase,Lr as CheckboxControl,Bt as Chips,$o as Combobox,bt as ComboboxControl,ct as Controlled,Oo as CustomLink,v as DATE_VISIBLE_PATTERN,Hr as DadataAddress,Gr as DadataAuto,Ur as DadataCountry,Vr as DadataFio,Er as DadataOrganization,ao as DataTable,oo as DataTableColumnHeader,rr as DayPickerBase,Kr as DayPickerControl,ko as Dialog,To as DotsNavigations,Dt as DropdownItem,gt as DropdownList,to as EditableCell,jr as EditorControl,S as FloatButton,Ao as Heading,N as Hint,No as Icon,er as InputBase,Jr as InputControl,Zr as InputCurrencyControl,mr as InputOtpBase,ot as InputOtpControl,Yo as KeyboardShortcuts,T as Loader,xr as MaskInput,Wr as MaskInputControl,z as Modal,_ as Notification,ho as NotificationProvider,fo as Pagination,s as PhoneView,F as Popover,M as ProgressBar,nr as RadioGroupBase,pt as RadioGroupCardControl,tt as RadioGroupControl,at as RadioGroupTabControl,lr as RadioItem,sr as RadioItemCard,ur as RadioItemTab,t as ResponsiveContainer,I as Skeleton,Po as SlideFullScreen,So as SlideOnlyImage,Io as SlideProductCard,Tr as SliderBase,ft as SliderControl,qo as Slot,Ir as SwitchBase,it as SwitchControl,Y as Table,j as TableBody,q as TableCaption,J as TableCell,Q as TableFooter,W as TableHead,X as TableHeader,Z as TableRow,po as TableUtils,O as TabsSwitcher,Sr as TextareaBase,dt as TextareaControl,Rr as Uncontrolled,Pr as UploaderBase,Ct as UploaderControl,Fo as allowedIcons,Mo as brandLogos,p as buttonPrimitiveIntent,x as buttonPrimitiveSize,f as buttonPrimitiveTextFormat,n as buttonPrimitiveType,vr as bytesToMegabytes,y as defaultClassNames,k as formatDateToLocaleString,R as formatDateToMonthString,h as formatDateToYearString,zo as linkPrimitiveIconIntent,Vo as linkPrimitiveIntent,_o as linkPrimitiveSize,yr as megabytesToBytes};
1
+ import{ResponsiveContainer as t}from"./responsiveContainer/ResponsiveContainer.js";import{Button as a}from"./button/Button.js";import{buttonPrimitiveIntent as p,buttonPrimitiveSize as x,buttonPrimitiveTextFormat as f,buttonPrimitiveType as n}from"./button/model/helpers.js";import{ButtonIcon as l}from"./buttonIcon/ButtonIcon.js";import{PhoneView as s}from"./phoneView/PhoneView.js";import{Badge as u}from"./badge/Badge.js";import{Loader as T}from"./loader/Loader.js";import{Skeleton as I}from"./skeleton/Skeleton.js";import{FloatButton as S}from"./floatButton/FloatButton.js";import{Calendar as P}from"./calendar/Calendar.js";import{DATE_VISIBLE_PATTERN as y,defaultClassNames as v,formatDateToLocaleString as k,formatDateToMonthString as R,formatDateToYearString as h}from"./calendar/model/utils.js";import{Accordion as A}from"./accordion/Accordion.js";import{Hint as E}from"./hint/Hint.js";import{Popover as F}from"./popover/Popover.js";import{ProgressBar as M}from"./progressBar/ProgressBar.js";import{TabsSwitcher as O}from"./tabSwitcher/TabsSwitcher.js";import{Modal as z}from"./modal/Modal.js";import{Notification as _}from"./notification/Notification.js";import{Table as Y,TableBody as j,TableCaption as q,TableCell as J,TableFooter as Q,TableHead as W,TableHeader as X,TableRow as Z}from"./table/ui/primitives/Primitives.js";import{DataTableColumnHeader as oo}from"./table/ui/dataTableColumnHeader/DataTableColumnHeader.js";import{EditableCell as to}from"./table/ui/editableCell/EditableCell.js";import{DataTable as ao}from"./table/Table.js";import{TableUtils as po}from"./table/model/TableUtils.js";import{Pagination as fo}from"./pagination/Pagination.js";import{CarouselBase as io}from"./carousel/CarouselBase.js";import{ArrowNavigationButton as so}from"./carousel/ui/ArrowNavigationButton.js";import{CarouselSlide as uo}from"./carousel/ui/CarouselSlide.js";import{DotsNavigations as To}from"./carousel/ui/DotsNavigations.js";import{SlideProductCard as Io}from"./carousel/ui/slideVariants/SlideProductCard.js";import{SlideOnlyImage as So}from"./carousel/ui/slideVariants/SlideOnlyImage.js";import{SlideFullScreen as Po}from"./carousel/ui/slideVariants/SlideFullScreen.js";import{CarouselContent as yo}from"./carousel/ui/CarouselContent.js";import{Dialog as ko}from"./dialog/Dialog.js";import{NotificationProvider as ho}from"./providers/NotificationProvider.js";import{Heading as Ao}from"./heading/Heading.js";import{Icon as Eo}from"./icon/Icon.js";import{allowedIcons as Fo}from"./icon/allowedIcons.js";import{brandLogos as Mo}from"./brandLogos/BrandLogos.js";import{CustomLink as Oo}from"./customLink/CustomLink.js";import{linkPrimitiveIconIntent as zo,linkPrimitiveIntent as Vo,linkPrimitiveSize as _o}from"./customLink/model/helpers.js";import{KeyboardShortcuts as Yo}from"./keyboardShortcuts/KeyboardShortcuts.js";import{Slot as qo}from"./slot/Slot.js";import{AutocompleteBase as Qo}from"./formElements/uncontrolled/autocomplete/Autocomplete.js";import{CheckboxBase as Xo}from"./formElements/uncontrolled/checkbox/Checkbox.js";import{Combobox as $o}from"./formElements/uncontrolled/combobox/combobox.js";import{DayPickerBase as rr}from"./formElements/uncontrolled/dayPicker/DayPicker.js";import{InputBase as er}from"./formElements/uncontrolled/input/Input.js";import{InputOtpBase as mr}from"./formElements/uncontrolled/inputOtp/InputOtpBase.js";import{MaskInput as xr}from"./formElements/uncontrolled/maskInput/MaskInput.js";import{RadioGroupBase as nr}from"./formElements/uncontrolled/radio/RadioGroup.js";import{RadioItem as lr}from"./formElements/uncontrolled/radio/ui/RadioItem.js";import{RadioItemCard as sr}from"./formElements/uncontrolled/radio/ui/RadioItemCard.js";import{RadioItemTab as ur}from"./formElements/uncontrolled/radio/ui/RadioItemTab.js";import{SliderBase as Tr}from"./formElements/uncontrolled/slider/SliderBase.js";import{SwitchBase as Ir}from"./formElements/uncontrolled/switch/Switch.js";import{TextareaBase as Sr}from"./formElements/uncontrolled/textarea/Textarea.js";import{UploaderBase as Pr}from"./formElements/uncontrolled/uploader/UploaderBase.js";import{bytesToMegabytes as yr,megabytesToBytes as vr}from"./formElements/uncontrolled/uploader/model/helpers.js";import{Uncontrolled as Rr}from"./formElements/uncontrolled/index.js";import{AutocompleteControl as wr}from"./formElements/controlled/autocomplete/Autocomplete.js";import{CheckboxControl as Lr}from"./formElements/controlled/checkbox/CheckboxControl.js";import{DadataOrganization as Nr}from"./formElements/controlled/dadata/party/DadataOrganization.js";import{DadataAddress as Hr}from"./formElements/controlled/dadata/address/DadataAddress.js";import{DadataAuto as Gr}from"./formElements/controlled/dadata/auto/DadataAuto.js";import{DadataCountry as Ur}from"./formElements/controlled/dadata/country/DadataCountry.js";import{DadataFio as Vr}from"./formElements/controlled/dadata/fio/DadataFio.js";import{DayPickerControl as Kr}from"./formElements/controlled/dayPickerControl/dayPickerControl.js";import{EditorControl as jr}from"./formElements/controlled/editor/EditorControl.js";import{InputControl as Jr}from"./formElements/controlled/input/InputControl.js";import{MaskInputControl as Wr}from"./formElements/controlled/input/MaskInputControl.js";import{InputCurrencyControl as Zr}from"./formElements/controlled/inputCurrency/InputCurrencyControl.js";import{InputOtpControl as ot}from"./formElements/controlled/inputOtp/InputOtpControl.js";import{RadioGroupControl as tt}from"./formElements/controlled/radio/RadioGroupControl.js";import{RadioGroupTabControl as at}from"./formElements/controlled/radio/RadioGroupTabControl.js";import{RadioGroupCardControl as pt}from"./formElements/controlled/radio/RadioGroupCardControl.js";import{SliderControl as ft}from"./formElements/controlled/slider/SliderControl.js";import{SwitchControl as it}from"./formElements/controlled/switch/SwitchControl.js";import{TextareaControl as dt}from"./formElements/controlled/textarea/TextareaControl.js";import{UploaderControl as Ct}from"./formElements/controlled/uploader/UploaderControl.js";import{ComboboxControl as bt}from"./formElements/controlled/combobox/ComboboxControl.js";import{Controlled as ct}from"./formElements/controlled/index.js";import{Chips as Bt}from"./chips/Chips.js";import{DropdownItem as Dt}from"./dropdownList/ui/dropdownItem/DropdownItem.js";import{EmptyList as gt}from"./dropdownList/ui/Empty.js";import{DropdownList as vt}from"./dropdownList/DropdownList.js";export{A as Accordion,so as ArrowNavigationButton,Qo as AutocompleteBase,wr as AutocompleteControl,u as Badge,a as Button,l as ButtonIcon,P as Calendar,io as CarouselBase,yo as CarouselContent,uo as CarouselSlide,Xo as CheckboxBase,Lr as CheckboxControl,Bt as Chips,$o as Combobox,bt as ComboboxControl,ct as Controlled,Oo as CustomLink,y as DATE_VISIBLE_PATTERN,Hr as DadataAddress,Gr as DadataAuto,Ur as DadataCountry,Vr as DadataFio,Nr as DadataOrganization,ao as DataTable,oo as DataTableColumnHeader,rr as DayPickerBase,Kr as DayPickerControl,ko as Dialog,To as DotsNavigations,Dt as DropdownItem,vt as DropdownList,to as EditableCell,jr as EditorControl,gt as EmptyList,S as FloatButton,Ao as Heading,E as Hint,Eo as Icon,er as InputBase,Jr as InputControl,Zr as InputCurrencyControl,mr as InputOtpBase,ot as InputOtpControl,Yo as KeyboardShortcuts,T as Loader,xr as MaskInput,Wr as MaskInputControl,z as Modal,_ as Notification,ho as NotificationProvider,fo as Pagination,s as PhoneView,F as Popover,M as ProgressBar,nr as RadioGroupBase,pt as RadioGroupCardControl,tt as RadioGroupControl,at as RadioGroupTabControl,lr as RadioItem,sr as RadioItemCard,ur as RadioItemTab,t as ResponsiveContainer,I as Skeleton,Po as SlideFullScreen,So as SlideOnlyImage,Io as SlideProductCard,Tr as SliderBase,ft as SliderControl,qo as Slot,Ir as SwitchBase,it as SwitchControl,Y as Table,j as TableBody,q as TableCaption,J as TableCell,Q as TableFooter,W as TableHead,X as TableHeader,Z as TableRow,po as TableUtils,O as TabsSwitcher,Sr as TextareaBase,dt as TextareaControl,Rr as Uncontrolled,Pr as UploaderBase,Ct as UploaderControl,Fo as allowedIcons,Mo as brandLogos,p as buttonPrimitiveIntent,x as buttonPrimitiveSize,f as buttonPrimitiveTextFormat,n as buttonPrimitiveType,yr as bytesToMegabytes,v as defaultClassNames,k as formatDateToLocaleString,R as formatDateToMonthString,h as formatDateToYearString,zo as linkPrimitiveIconIntent,Vo as linkPrimitiveIntent,_o as linkPrimitiveSize,vr as megabytesToBytes};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SlotClone.js","sources":["../../../../../../lib/shared/ui/slot/ui/SlotClone.tsx"],"sourcesContent":["import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { getElementRef, mergeProps } from '../model'\nimport { mergeRefs } from '$/shared/utils'\n\nexport type SlotCloneProps = {\n children: React.ReactNode\n}\n\nexport const SlotClone = forwardRef<any, SlotCloneProps>(({ children, ...props }, ref) => {\n if (isValidElement(children)) {\n const childrenRef = getElementRef(children)\n\n return cloneElement(children, {\n ...mergeProps(props, children.props),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n ref: ref ? mergeRefs(ref, childrenRef) : childrenRef\n })\n }\n\n return Children.count(children) > 1 ? Children.only(null) : null\n})\nSlotClone.displayName = 'SlotClone'\n"],"names":["SlotClone","forwardRef","children","props","ref","isValidElement","childrenRef","getElementRef","cloneElement","mergeProps","mergeRefs","Children"],"mappings":"uRAQO,MAAMA,EAAYC,EAAgC,CAAC,CAAE,SAAAC,EAAU,GAAGC,CAAA,EAASC,IAAQ,CACxF,GAAIC,EAAeH,CAAQ,EAAG,CAC5B,MAAMI,EAAcC,EAAcL,CAAQ,EAE1C,OAAOM,EAAaN,EAAU,CAC5B,GAAGO,EAAWN,EAAOD,EAAS,KAAK,EAGnC,IAAKE,EAAMM,EAAUN,EAAKE,CAAW,EAAIA,CAAA,CAC1C,CACH,CAEA,OAAOK,EAAS,MAAMT,CAAQ,EAAI,EAAIS,EAAS,KAAK,IAAI,EAAI,IAC9D,CAAC,EACDX,EAAU,YAAc"}
1
+ {"version":3,"file":"SlotClone.js","sources":["../../../../../../lib/shared/ui/slot/ui/SlotClone.tsx"],"sourcesContent":["import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { getElementRef, mergeProps } from '../model'\nimport { mergeRefs } from '$/shared/utils'\n\nexport type SlotCloneProps = {\n children: React.ReactNode\n}\n\nexport const SlotClone = forwardRef<any, SlotCloneProps>(({ children, ...props }, ref) => {\n if (isValidElement(children)) {\n const childrenRef = getElementRef(children)\n\n return cloneElement(children, {\n ...mergeProps(props, children.props),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ref: ref ? mergeRefs(ref, childrenRef) : childrenRef\n })\n }\n\n return Children.count(children) > 1 ? Children.only(null) : null\n})\nSlotClone.displayName = 'SlotClone'\n"],"names":["SlotClone","forwardRef","children","props","ref","isValidElement","childrenRef","getElementRef","cloneElement","mergeProps","mergeRefs","Children"],"mappings":"uRAQO,MAAMA,EAAYC,EAAgC,CAAC,CAAE,SAAAC,EAAU,GAAGC,CAAA,EAASC,IAAQ,CACxF,GAAIC,EAAeH,CAAQ,EAAG,CAC5B,MAAMI,EAAcC,EAAcL,CAAQ,EAE1C,OAAOM,EAAaN,EAAU,CAC5B,GAAGO,EAAWN,EAAOD,EAAS,KAAK,EAGnC,IAAKE,EAAMM,EAAUN,EAAKE,CAAW,EAAIA,CAAA,CAC1C,CACH,CAEA,OAAOK,EAAS,MAAMT,CAAQ,EAAI,EAAIS,EAAS,KAAK,IAAI,EAAI,IAC9D,CAAC,EACDX,EAAU,YAAc"}
@@ -1,2 +1,2 @@
1
- import{jsx as i,jsxs as u}from"react/jsx-runtime";import{useEffect as n}from"react";import{FormProvider as c}from"../../../node_modules/react-hook-form/dist/index.esm.js";import{evaluateFormula as d}from"./model/helpers.js";import{getCalculatorSchema as h,isFormula as x}from"./model/utils.js";import{CalculatorInfo as V}from"./ui/calculatorInfo/CalculatorInfo.js";import{CalculatorFields as w}from"./ui/calculatorFields/CalculatorFields.js";import"./ui/CalculatorTabs.js";import{cn as S}from"../../shared/utils/cn.js";import{localStorageActions as b}from"../../shared/utils/localStorageActions.js";import{useControlledForm as v}from"../../shared/hooks/useControlledForm.js";import"../../shared/validation/zodValidation/dadataFio.js";import"../../shared/validation/zodValidation/calendar.js";import"../../shared/validation/zodValidation/phone.js";import"../../shared/validation/zodValidation/otpCode.js";import"../../shared/ui/button/Button.js";import"../../shared/ui/buttonIcon/ButtonIcon.js";import"../../shared/ui/calendar/Calendar.js";import"../../shared/ui/calendar/model/utils.js";import"../../shared/ui/accordion/Accordion.js";import"react-dom";import"../../shared/ui/modal/ui/IframeModalContent.js";import"../../../node_modules/react-hot-toast/dist/index.js";import"../../shared/ui/table/ui/primitives/Primitives.js";import"../../shared/ui/carousel/ui/CarouselContent.js";import"../../shared/ui/slot/Slot.js";import"../../shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js";import"../../shared/ui/formElements/uncontrolled/checkbox/Checkbox.js";import"../../shared/ui/formElements/uncontrolled/combobox/combobox.js";import"../../shared/ui/formElements/uncontrolled/dayPicker/DayPicker.js";import"../../shared/ui/formElements/uncontrolled/input/Input.js";import"../../shared/ui/formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../shared/ui/formElements/uncontrolled/maskInput/MaskInput.js";import"../../shared/ui/formElements/uncontrolled/radio/RadioGroup.js";import"../../shared/ui/formElements/uncontrolled/radio/ui/RadioItem.js";import"../../shared/ui/formElements/uncontrolled/slider/SliderBase.js";import"../../shared/ui/formElements/uncontrolled/switch/Switch.js";import"../../shared/ui/formElements/uncontrolled/textarea/Textarea.js";import"../../shared/ui/formElements/uncontrolled/uploader/UploaderBase.js";import"../../shared/ui/formElements/controlled/editor/ui/Editor.js";import"../../shared/ui/formElements/controlled/input/MaskInputControl.js";import"../../shared/ui/dropdownList/ui/dropdownItem/DropdownItem.js";import{ZodUtils as I}from"../../shared/validation/utils/zodUtils.js";const no=({calculatorInfoConfig:p,calculatorFieldsConfig:r,classes:o})=>{const e=h(r==null?void 0:r.fieldsGroup),a=v({schema:e,mode:"onBlur",defaultValues:I.getZodDefaults(e)}),t=a.watch(),{rootValue:m}=p;n(()=>{b.setItem("calculatorData",JSON.stringify(t))},[t]);const l=x(m)?d(m.formula,t):m,f={...p,rootValue:l};return i(c,{...a,children:u("div",{className:S("flex items-start gap-16 mobile:flex-col mobile:items-center mobile:gap-8",o==null?void 0:o.wrapper),children:[i(w,{...r,classes:o==null?void 0:o.calculatorFields}),i(V,{...f,classes:o==null?void 0:o.calculatorInfo})]})})};export{no as CalculatorView};
1
+ import{jsx as i,jsxs as f}from"react/jsx-runtime";import{useEffect as c}from"react";import{FormProvider as d}from"../../../node_modules/react-hook-form/dist/index.esm.js";import{evaluateFormula as n}from"./model/helpers.js";import{getCalculatorSchema as h,isFormula as x}from"./model/utils.js";import{CalculatorInfo as V}from"./ui/calculatorInfo/CalculatorInfo.js";import{CalculatorFields as w}from"./ui/calculatorFields/CalculatorFields.js";import"./ui/CalculatorTabs.js";import{cn as b}from"../../shared/utils/cn.js";import{localStorageActions as v}from"../../shared/utils/localStorageActions.js";import{useControlledForm as I}from"../../shared/hooks/useControlledForm.js";import"../../shared/validation/zodValidation/dadataFio.js";import"../../shared/validation/zodValidation/calendar.js";import"../../shared/validation/zodValidation/phone.js";import"../../shared/validation/zodValidation/otpCode.js";import"../../shared/ui/button/Button.js";import"../../shared/ui/buttonIcon/ButtonIcon.js";import"../../shared/ui/calendar/Calendar.js";import"../../shared/ui/calendar/model/utils.js";import"../../shared/ui/accordion/Accordion.js";import"react-dom";import"../../shared/ui/modal/ui/IframeModalContent.js";import"../../../node_modules/react-hot-toast/dist/index.js";import"../../shared/ui/table/ui/primitives/Primitives.js";import"../../shared/ui/carousel/ui/CarouselContent.js";import"../../shared/ui/slot/Slot.js";import"../../shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js";import"../../shared/ui/formElements/uncontrolled/checkbox/Checkbox.js";import"../../shared/ui/formElements/uncontrolled/combobox/combobox.js";import"../../shared/ui/formElements/uncontrolled/dayPicker/DayPicker.js";import"../../shared/ui/formElements/uncontrolled/input/Input.js";import"../../shared/ui/formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../shared/ui/formElements/uncontrolled/maskInput/MaskInput.js";import"../../shared/ui/formElements/uncontrolled/radio/RadioGroup.js";import"../../shared/ui/formElements/uncontrolled/radio/ui/RadioItem.js";import"../../shared/ui/formElements/uncontrolled/slider/SliderBase.js";import"../../shared/ui/formElements/uncontrolled/switch/Switch.js";import"../../shared/ui/formElements/uncontrolled/textarea/Textarea.js";import"../../shared/ui/formElements/uncontrolled/uploader/UploaderBase.js";import"../../shared/ui/formElements/controlled/editor/ui/Editor.js";import"../../shared/ui/formElements/controlled/input/MaskInputControl.js";import"../../shared/ui/dropdownList/ui/dropdownItem/DropdownItem.js";import{ZodUtils as S}from"../../shared/validation/utils/zodUtils.js";const co=({calculatorInfoConfig:p,calculatorFieldsConfig:r,classes:o})=>{const e=h(r==null?void 0:r.fieldsGroup),a=I({schema:e,mode:"onBlur",defaultValues:S.getZodDefaults(e)}),t=a.watch(),{rootValue:m}=p;c(()=>{v.setItem("calculatorData",t)},[t]);const l=x(m)?n(m.formula,t):m,u={...p,rootValue:l};return i(d,{...a,children:f("div",{className:b("flex items-start gap-16 mobile:flex-col mobile:items-center mobile:gap-8",o==null?void 0:o.wrapper),children:[i(w,{...r,classes:o==null?void 0:o.calculatorFields}),i(V,{...u,classes:o==null?void 0:o.calculatorInfo})]})})};export{co as CalculatorView};
2
2
  //# sourceMappingURL=CalculatorView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CalculatorView.js","sources":["../../../../lib/widgets/calculator/CalculatorView.tsx"],"sourcesContent":["import { useEffect } from 'react'\nimport { type FieldValues, FormProvider } from 'react-hook-form'\nimport { type CalculatorSchema, evaluateFormula, getCalculatorSchema, isFormula } from './model'\nimport {\n CalculatorFields,\n type CalculatorFieldsClasses,\n type CalculatorFieldsProps,\n CalculatorInfo,\n type CalculatorInfoClasses,\n type CalculatorInfoProps,\n type CalculatorTab\n} from './ui'\nimport { useControlledForm } from '$/shared/hooks'\nimport { cn, localStorageActions } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\n\nexport type CalculatorViewClasses = {\n wrapper?: string\n calculatorFields?: CalculatorFieldsClasses\n calculatorInfo?: CalculatorInfoClasses\n}\n\nexport interface CalculatorViewProps<T extends FieldValues = FieldValues> extends CalculatorTab {\n calculatorInfoConfig: CalculatorInfoProps\n calculatorFieldsConfig: CalculatorFieldsProps<T>\n classes?: CalculatorViewClasses\n}\n\nexport const CalculatorView = <T extends FieldValues>({\n calculatorInfoConfig,\n calculatorFieldsConfig,\n classes\n}: CalculatorViewProps<T>) => {\n const calculatorSchema: CalculatorSchema = getCalculatorSchema(calculatorFieldsConfig?.fieldsGroup)\n\n const formMethods = useControlledForm({\n schema: calculatorSchema,\n mode: 'onBlur',\n defaultValues: ZodUtils.getZodDefaults(calculatorSchema)\n })\n\n const watchedFields = formMethods.watch()\n\n const { rootValue } = calculatorInfoConfig\n\n useEffect(() => {\n localStorageActions.setItem('calculatorData', JSON.stringify(watchedFields))\n }, [watchedFields])\n\n const calculatedValue = isFormula(rootValue) ? evaluateFormula(rootValue.formula, watchedFields) : rootValue\n\n const mergedCalcInfoConfig = { ...calculatorInfoConfig, rootValue: calculatedValue }\n\n return (\n <FormProvider {...formMethods}>\n <div className={cn('flex items-start gap-16 mobile:flex-col mobile:items-center mobile:gap-8', classes?.wrapper)}>\n <CalculatorFields {...calculatorFieldsConfig} classes={classes?.calculatorFields} />\n <CalculatorInfo {...mergedCalcInfoConfig} classes={classes?.calculatorInfo} />\n </div>\n </FormProvider>\n )\n}\n"],"names":["CalculatorView","calculatorInfoConfig","calculatorFieldsConfig","classes","calculatorSchema","getCalculatorSchema","formMethods","useControlledForm","ZodUtils","watchedFields","rootValue","useEffect","localStorageActions","calculatedValue","isFormula","evaluateFormula","mergedCalcInfoConfig","jsx","FormProvider","jsxs","cn","CalculatorFields","CalculatorInfo"],"mappings":"skFA4BO,MAAMA,GAAiB,CAAwB,CACpD,qBAAAC,EACA,uBAAAC,EACA,QAAAC,CACF,IAA8B,CAC5B,MAAMC,EAAqCC,EAAoBH,GAAA,YAAAA,EAAwB,WAAW,EAE5FI,EAAcC,EAAkB,CACpC,OAAQH,EACR,KAAM,SACN,cAAeI,EAAS,eAAeJ,CAAgB,CAAA,CACxD,EAEKK,EAAgBH,EAAY,MAAA,EAE5B,CAAE,UAAAI,GAAcT,EAEtBU,EAAU,IAAM,CACdC,EAAoB,QAAQ,iBAAkB,KAAK,UAAUH,CAAa,CAAC,CAC7E,EAAG,CAACA,CAAa,CAAC,EAElB,MAAMI,EAAkBC,EAAUJ,CAAS,EAAIK,EAAgBL,EAAU,QAASD,CAAa,EAAIC,EAE7FM,EAAuB,CAAE,GAAGf,EAAsB,UAAWY,CAAA,EAEnE,OACEI,EAACC,EAAA,CAAc,GAAGZ,EAChB,SAAAa,EAAC,MAAA,CAAI,UAAWC,EAAG,2EAA4EjB,GAAA,YAAAA,EAAS,OAAO,EAC7G,SAAA,CAAAc,EAACI,EAAA,CAAkB,GAAGnB,EAAwB,QAASC,GAAA,YAAAA,EAAS,iBAAkB,IACjFmB,EAAA,CAAgB,GAAGN,EAAsB,QAASb,GAAA,YAAAA,EAAS,cAAA,CAAgB,CAAA,CAAA,CAC9E,CAAA,CACF,CAEJ"}
1
+ {"version":3,"file":"CalculatorView.js","sources":["../../../../lib/widgets/calculator/CalculatorView.tsx"],"sourcesContent":["import { useEffect } from 'react'\nimport { type FieldValues, FormProvider } from 'react-hook-form'\nimport { type CalculatorSchema, evaluateFormula, getCalculatorSchema, isFormula } from './model'\nimport {\n CalculatorFields,\n type CalculatorFieldsClasses,\n type CalculatorFieldsProps,\n CalculatorInfo,\n type CalculatorInfoClasses,\n type CalculatorInfoProps,\n type CalculatorTab\n} from './ui'\nimport { useControlledForm } from '$/shared/hooks'\nimport { cn, localStorageActions } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\n\nexport type CalculatorViewClasses = {\n wrapper?: string\n calculatorFields?: CalculatorFieldsClasses\n calculatorInfo?: CalculatorInfoClasses\n}\n\nexport interface CalculatorViewProps<T extends FieldValues = FieldValues> extends CalculatorTab {\n calculatorInfoConfig: CalculatorInfoProps\n calculatorFieldsConfig: CalculatorFieldsProps<T>\n classes?: CalculatorViewClasses\n}\n\nexport const CalculatorView = <T extends FieldValues>({\n calculatorInfoConfig,\n calculatorFieldsConfig,\n classes\n}: CalculatorViewProps<T>) => {\n const calculatorSchema: CalculatorSchema = getCalculatorSchema(calculatorFieldsConfig?.fieldsGroup)\n\n const formMethods = useControlledForm({\n schema: calculatorSchema,\n mode: 'onBlur',\n defaultValues: ZodUtils.getZodDefaults(calculatorSchema)\n })\n\n const watchedFields = formMethods.watch()\n\n const { rootValue } = calculatorInfoConfig\n\n useEffect(() => {\n localStorageActions.setItem('calculatorData', watchedFields)\n }, [watchedFields])\n\n const calculatedValue = isFormula(rootValue) ? evaluateFormula(rootValue.formula, watchedFields) : rootValue\n\n const mergedCalcInfoConfig = { ...calculatorInfoConfig, rootValue: calculatedValue }\n\n return (\n <FormProvider {...formMethods}>\n <div className={cn('flex items-start gap-16 mobile:flex-col mobile:items-center mobile:gap-8', classes?.wrapper)}>\n <CalculatorFields {...calculatorFieldsConfig} classes={classes?.calculatorFields} />\n <CalculatorInfo {...mergedCalcInfoConfig} classes={classes?.calculatorInfo} />\n </div>\n </FormProvider>\n )\n}\n"],"names":["CalculatorView","calculatorInfoConfig","calculatorFieldsConfig","classes","calculatorSchema","getCalculatorSchema","formMethods","useControlledForm","ZodUtils","watchedFields","rootValue","useEffect","localStorageActions","calculatedValue","isFormula","evaluateFormula","mergedCalcInfoConfig","jsx","FormProvider","jsxs","cn","CalculatorFields","CalculatorInfo"],"mappings":"skFA4BO,MAAMA,GAAiB,CAAwB,CACpD,qBAAAC,EACA,uBAAAC,EACA,QAAAC,CACF,IAA8B,CAC5B,MAAMC,EAAqCC,EAAoBH,GAAA,YAAAA,EAAwB,WAAW,EAE5FI,EAAcC,EAAkB,CACpC,OAAQH,EACR,KAAM,SACN,cAAeI,EAAS,eAAeJ,CAAgB,CAAA,CACxD,EAEKK,EAAgBH,EAAY,MAAA,EAE5B,CAAE,UAAAI,GAAcT,EAEtBU,EAAU,IAAM,CACdC,EAAoB,QAAQ,iBAAkBH,CAAa,CAC7D,EAAG,CAACA,CAAa,CAAC,EAElB,MAAMI,EAAkBC,EAAUJ,CAAS,EAAIK,EAAgBL,EAAU,QAASD,CAAa,EAAIC,EAE7FM,EAAuB,CAAE,GAAGf,EAAsB,UAAWY,CAAA,EAEnE,OACEI,EAACC,EAAA,CAAc,GAAGZ,EAChB,SAAAa,EAAC,MAAA,CAAI,UAAWC,EAAG,2EAA4EjB,GAAA,YAAAA,EAAS,OAAO,EAC7G,SAAA,CAAAc,EAACI,EAAA,CAAkB,GAAGnB,EAAwB,QAASC,GAAA,YAAAA,EAAS,iBAAkB,IACjFmB,EAAA,CAAgB,GAAGN,EAAsB,QAASb,GAAA,YAAAA,EAAS,cAAA,CAAgB,CAAA,CAAA,CAC9E,CAAA,CACF,CAEJ"}
@@ -1,2 +1,2 @@
1
- import{jsx as r,jsxs as d}from"react/jsx-runtime";import{useState as D,createElement as z}from"react";import{HTMLRenderer as g}from"../htmlParser/HTMLRenderer.js";import{widgetIds as b}from"../model/helpers.js";import{getFieldsProgress as H}from"./model/getFieldsProgress.js";import{getDynamicSchema as I}from"../../../src/shared/utils/getDynamicSchema.js";import{cn as e}from"../../shared/utils/cn.js";import{useControlledForm as M}from"../../shared/hooks/useControlledForm.js";import{useFieldsProgress as R}from"../../shared/hooks/useFieldsProgress.js";import{ResponsiveContainer as Z}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";import{Button as A}from"../../shared/ui/button/Button.js";import"../../shared/ui/buttonIcon/ButtonIcon.js";import"../../shared/ui/calendar/Calendar.js";import"../../shared/ui/calendar/model/utils.js";import"../../shared/ui/accordion/Accordion.js";import{ProgressBar as E}from"../../shared/ui/progressBar/ProgressBar.js";import"react-dom";import"../../shared/ui/modal/ui/IframeModalContent.js";import"../../../node_modules/react-hot-toast/dist/index.js";import{Icon as L}from"../../shared/ui/icon/Icon.js";import"../../shared/ui/table/ui/primitives/Primitives.js";import{Heading as c}from"../../shared/ui/heading/Heading.js";import"../../shared/ui/carousel/ui/CarouselContent.js";import"../../shared/ui/slot/Slot.js";import"../../shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js";import{CheckboxBase as Q}from"../../shared/ui/formElements/uncontrolled/checkbox/Checkbox.js";import"../../shared/ui/formElements/uncontrolled/combobox/combobox.js";import"../../shared/ui/formElements/uncontrolled/dayPicker/DayPicker.js";import"../../shared/ui/formElements/uncontrolled/input/Input.js";import"../../shared/ui/formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../shared/ui/formElements/uncontrolled/maskInput/MaskInput.js";import"../../shared/ui/formElements/uncontrolled/radio/RadioGroup.js";import"../../shared/ui/formElements/uncontrolled/radio/ui/RadioItem.js";import"../../shared/ui/formElements/uncontrolled/slider/SliderBase.js";import"../../shared/ui/formElements/uncontrolled/switch/Switch.js";import"../../shared/ui/formElements/uncontrolled/textarea/Textarea.js";import"../../shared/ui/formElements/uncontrolled/uploader/UploaderBase.js";import"../../shared/ui/formElements/controlled/editor/ui/Editor.js";import"../../shared/ui/formElements/controlled/input/MaskInputControl.js";import"../../shared/ui/dropdownList/ui/dropdownItem/DropdownItem.js";import"../../shared/validation/zodValidation/dadataFio.js";import"../../shared/validation/zodValidation/calendar.js";import"../../shared/validation/zodValidation/phone.js";import"../../shared/validation/zodValidation/otpCode.js";import{ZodUtils as T}from"../../shared/validation/utils/zodUtils.js";import{FieldMapper as U}from"../fieldMapper/FieldMapper.js";import{QueryClientProvider as V}from"../queryClientProvider/QueryClientProvider.js";const q=(m,n,i,o)=>m.type==="off"?null:m.type==="text"?r(g,{html:m.message,as:"div",className:o==null?void 0:o.content}):d("label",{className:e("mob-body-regular-s text-color-dark","desktop:desk-body-regular-m desktop:gap-x-4","flex items-center justify-items-start gap-x-3"),children:[r(Q,{classes:o==null?void 0:o.checkbox,checked:n,onCheckedChange:i}),r(g,{html:m.content,as:"div",className:o==null?void 0:o.content})]}),Et=({fields:m,title:n,progress:i,approvement:o,chips:f,submitProps:w,classes:t,buttonGroup:p})=>{var k,y;const{submitCallback:x}=w||{},[a,N]=D(!1),h=I(m),C=T.getZodDefaults(h),{control:u,handleSubmit:P}=M({schema:h,defaultValues:C,mode:"onBlur"}),B=H(i,m),j=R({control:u,fields:B||[],schema:h}),v=l=>{x&&x({...l,agree:a})};return r(V,{children:r("section",{id:b.form,"data-test-id":b.form,className:e("w-full",t==null?void 0:t.root),children:d(Z,{className:e("border-warm-grey-200 px-4 desktop:w-[636px] desktop:gap-8 desktop:p-14","relative mx-auto flex flex-col gap-6 rounded-sm py-8 desktop:border"),children:[f.enabled&&d("div",{className:e("desk-body-regular-l flex items-center gap-x-2 rounded-sm desktop:absolute","bg-color-blue-grey-100 px-2 py-1 text-color-tetriary","right-4 top-4 w-max",(k=t==null?void 0:t.chips)==null?void 0:k.root),children:[f.image&&r(L,{name:f.image,className:e("size-6",(y=t==null?void 0:t.chips)==null?void 0:y.icon)}),f.content]}),r(c,{as:"h2",className:e("desktop:hidden",t==null?void 0:t.title),children:n}),r(c,{as:"h3",className:e("mobile:hidden",t==null?void 0:t.title),children:n}),d("form",{onSubmit:P(v),className:e("flex w-full flex-col gap-y-6","desktop:gap-y-8",t==null?void 0:t.form),children:[i.enabled&&r(E,{progress:j,topContent:r(g,{html:i.title}),bottomContent:r(g,{html:i.subtitle}),maxPercent:i.maxPercent,classes:t==null?void 0:t.progressBar}),r(U,{control:u,fields:m}),d("div",{className:e("mob-body-regular-m flex flex-col items-start justify-center gap-4",{"desktop:flex-row desktop:items-center":p.length===1}),children:[q(o,a,N,t==null?void 0:t.approvement),r("div",{className:e("flex w-full flex-col items-center justify-center gap-4 desktop:flex-row",{"desktop:w-fit":p.length===1}),children:p==null?void 0:p.map((l,F)=>{const S=l.type==="submit"&&o.type==="checkbox"?!a:!1;return z(A,{...l,size:"lg",key:F,disabled:S,className:e("w-full whitespace-nowrap",{"desktop:!w-fit":p.length===1},{"w-full":!!o},t==null?void 0:t.submit)})})})]})]})]})})})};export{Et as DynamicForm,Et as default};
1
+ import{jsx as r,jsxs as d}from"react/jsx-runtime";import{useState as D,createElement as z}from"react";import{HTMLRenderer as g}from"../htmlParser/HTMLRenderer.js";import{widgetIds as b}from"../model/helpers.js";import{getFieldsProgress as H}from"./model/getFieldsProgress.js";import{getDynamicSchema as I}from"../../../src/shared/utils/getDynamicSchema.js";import{cn as e}from"../../shared/utils/cn.js";import{useControlledForm as M}from"../../shared/hooks/useControlledForm.js";import{useFieldsProgress as R}from"../../shared/hooks/useFieldsProgress.js";import{ResponsiveContainer as Z}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";import{Button as A}from"../../shared/ui/button/Button.js";import"../../shared/ui/buttonIcon/ButtonIcon.js";import"../../shared/ui/calendar/Calendar.js";import"../../shared/ui/calendar/model/utils.js";import"../../shared/ui/accordion/Accordion.js";import{ProgressBar as E}from"../../shared/ui/progressBar/ProgressBar.js";import"react-dom";import"../../shared/ui/modal/ui/IframeModalContent.js";import"../../../node_modules/react-hot-toast/dist/index.js";import{Icon as L}from"../../shared/ui/icon/Icon.js";import"../../shared/ui/table/ui/primitives/Primitives.js";import{Heading as c}from"../../shared/ui/heading/Heading.js";import"../../shared/ui/carousel/ui/CarouselContent.js";import"../../shared/ui/slot/Slot.js";import"../../shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js";import{CheckboxBase as Q}from"../../shared/ui/formElements/uncontrolled/checkbox/Checkbox.js";import"../../shared/ui/formElements/uncontrolled/combobox/combobox.js";import"../../shared/ui/formElements/uncontrolled/dayPicker/DayPicker.js";import"../../shared/ui/formElements/uncontrolled/input/Input.js";import"../../shared/ui/formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../shared/ui/formElements/uncontrolled/maskInput/MaskInput.js";import"../../shared/ui/formElements/uncontrolled/radio/RadioGroup.js";import"../../shared/ui/formElements/uncontrolled/radio/ui/RadioItem.js";import"../../shared/ui/formElements/uncontrolled/slider/SliderBase.js";import"../../shared/ui/formElements/uncontrolled/switch/Switch.js";import"../../shared/ui/formElements/uncontrolled/textarea/Textarea.js";import"../../shared/ui/formElements/uncontrolled/uploader/UploaderBase.js";import"../../shared/ui/formElements/controlled/editor/ui/Editor.js";import"../../shared/ui/formElements/controlled/input/MaskInputControl.js";import"../../shared/ui/dropdownList/ui/dropdownItem/DropdownItem.js";import"../../shared/validation/zodValidation/dadataFio.js";import"../../shared/validation/zodValidation/calendar.js";import"../../shared/validation/zodValidation/phone.js";import"../../shared/validation/zodValidation/otpCode.js";import{ZodUtils as T}from"../../shared/validation/utils/zodUtils.js";import{FieldMapper as U}from"../fieldMapper/FieldMapper.js";import{QueryClientProvider as V}from"../queryClientProvider/QueryClientProvider.js";const q=(m,n,i,o)=>m.type==="off"?null:m.type==="text"?r(g,{html:m.message,as:"div",className:o==null?void 0:o.content}):d("label",{className:e("mob-body-regular-s text-color-dark","desktop:desk-body-regular-s desktop:gap-x-4","flex items-center justify-items-start gap-x-3"),children:[r(Q,{classes:o==null?void 0:o.checkbox,checked:n,onCheckedChange:i}),r(g,{html:m.content,as:"div",className:o==null?void 0:o.content})]}),Et=({fields:m,title:n,progress:i,approvement:o,chips:f,submitProps:w,classes:t,buttonGroup:p})=>{var k,y;const{submitCallback:x}=w||{},[a,N]=D(!1),h=I(m),C=T.getZodDefaults(h),{control:u,handleSubmit:P}=M({schema:h,defaultValues:C,mode:"onBlur"}),B=H(i,m),j=R({control:u,fields:B||[],schema:h}),v=l=>{x&&x({...l,agree:a})};return r(V,{children:r("section",{id:b.form,"data-test-id":b.form,className:e("w-full",t==null?void 0:t.root),children:d(Z,{className:e("border-warm-grey-200 px-4 desktop:w-[636px] desktop:gap-8 desktop:p-14","relative mx-auto flex flex-col gap-6 rounded-sm py-8 desktop:border"),children:[f.enabled&&d("div",{className:e("desk-body-regular-l flex items-center gap-x-2 rounded-sm desktop:absolute","bg-color-blue-grey-100 px-2 py-1 text-color-tetriary","right-4 top-4 w-max",(k=t==null?void 0:t.chips)==null?void 0:k.root),children:[f.image&&r(L,{name:f.image,className:e("size-6",(y=t==null?void 0:t.chips)==null?void 0:y.icon)}),f.content]}),r(c,{as:"h2",className:e("desktop:hidden",t==null?void 0:t.title),children:n}),r(c,{as:"h3",className:e("mobile:hidden",t==null?void 0:t.title),children:n}),d("form",{onSubmit:P(v),className:e("flex w-full flex-col gap-y-6","desktop:gap-y-8",t==null?void 0:t.form),children:[i.enabled&&r(E,{progress:j,topContent:r(g,{html:i.title}),bottomContent:r(g,{html:i.subtitle}),maxPercent:i.maxPercent,classes:t==null?void 0:t.progressBar}),r(U,{control:u,fields:m}),d("div",{className:e("mob-body-regular-s flex flex-col items-start justify-center gap-4",{"desktop:flex-row desktop:items-center":p.length===1}),children:[q(o,a,N,t==null?void 0:t.approvement),r("div",{className:e("flex w-full flex-col items-center justify-center gap-4 desktop:flex-row",{"desktop:w-fit":p.length===1}),children:p==null?void 0:p.map((l,F)=>{const S=l.type==="submit"&&o.type==="checkbox"?!a:!1;return z(A,{...l,size:"lg",key:F,disabled:S,className:e("w-full whitespace-nowrap",{"desktop:!w-fit":p.length===1},{"w-full":!!o},t==null?void 0:t.submit)})})})]})]})]})})})};export{Et as DynamicForm,Et as default};
2
2
  //# sourceMappingURL=DynamicForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicForm.js","sources":["../../../../lib/widgets/dynamicForm/DynamicForm.tsx"],"sourcesContent":["'use client'\n\nimport { useState } from 'react'\nimport { type Control, type FieldValues, type SubmitHandler } from 'react-hook-form'\nimport { type TypeOf } from 'zod'\nimport { HTMLRenderer } from '../htmlParser'\nimport { widgetIds } from '../model'\nimport {\n type Approvement,\n type ApprovementType,\n type Chips,\n type ChipsType,\n getFieldsProgress,\n type Progress,\n type ProgressField,\n type ProgressType\n} from './model'\nimport { type FieldValidation, getDynamicSchema } from '@/shared/utils'\nimport { useControlledForm, useFieldsProgress } from '$/shared/hooks'\nimport {\n Button,\n type ButtonProps,\n CheckboxBase,\n type CheckedState,\n Heading,\n Icon,\n ProgressBar,\n ResponsiveContainer\n} from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\nimport { type FieldElement, FieldMapper } from '$/widgets/fieldMapper'\nimport { QueryClientProvider } from '$/widgets/queryClientProvider'\n\ntype SubmitProps = {\n submitCallback: <T extends FieldValues>(values: T) => void\n}\n\ntype ChipsClasses = {\n root?: string\n icon?: string\n}\ntype ApprovementClasses = {\n checkbox?: React.ComponentProps<typeof CheckboxBase>['classes']\n content?: string\n}\n\ntype DynamicFormClasses = {\n root?: string\n title?: string\n fields?: string\n form?: string\n chips?: ChipsClasses\n approvement?: ApprovementClasses\n progressBar?: React.ComponentProps<typeof ProgressBar>['classes']\n submit?: string\n}\n\nexport type DynamicFormProps<AType extends ApprovementType, CType extends ChipsType, PType extends ProgressType> = {\n fields: FieldElement<any, any, { validation: FieldValidation; progress: ProgressField }>[]\n title: string\n progress: Progress<PType>\n approvement: Approvement<AType>\n chips: Chips<CType>\n submitProps?: SubmitProps\n classes?: DynamicFormClasses\n buttonGroup: ButtonProps[]\n}\n\nconst withApprovement = <Type extends ApprovementType>(\n approvement: Approvement<Type>,\n checked: CheckedState,\n onCheckedChange: (checked: CheckedState) => void,\n classes?: ApprovementClasses\n): React.ReactNode => {\n if (approvement.type === 'off') return null\n\n if (approvement.type === 'text') {\n return <HTMLRenderer html={approvement.message} as='div' className={classes?.content} />\n }\n\n return (\n <label\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-m desktop:gap-x-4',\n 'flex items-center justify-items-start gap-x-3'\n )}\n >\n <CheckboxBase classes={classes?.checkbox} checked={checked} onCheckedChange={onCheckedChange} />\n <HTMLRenderer html={approvement.content} as='div' className={classes?.content} />\n </label>\n )\n}\n\nexport const DynamicForm = <AType extends ApprovementType, CType extends ChipsType, PType extends ProgressType>({\n fields,\n title,\n progress,\n approvement,\n chips,\n submitProps,\n classes,\n buttonGroup\n}: DynamicFormProps<AType, CType, PType>) => {\n const { submitCallback } = submitProps || {}\n\n const [checked, onCheckedChange] = useState<CheckedState>(false)\n\n const schema = getDynamicSchema(fields)\n const defaultValues = ZodUtils.getZodDefaults(schema)\n\n const { control, handleSubmit } = useControlledForm({\n schema,\n defaultValues,\n mode: 'onBlur'\n })\n\n const fieldsProgress = getFieldsProgress(progress, fields)\n\n const formattedProgress = useFieldsProgress({ control, fields: fieldsProgress || [], schema })\n\n const onSubmit: SubmitHandler<TypeOf<typeof schema>> = (values) => {\n if (submitCallback) submitCallback({ ...values, agree: checked })\n }\n\n return (\n <QueryClientProvider>\n <section id={widgetIds.form} data-test-id={widgetIds.form} className={cn('w-full', classes?.root)}>\n <ResponsiveContainer\n className={cn(\n 'border-warm-grey-200 px-4 desktop:w-[636px] desktop:gap-8 desktop:p-14',\n 'relative mx-auto flex flex-col gap-6 rounded-sm py-8 desktop:border'\n )}\n >\n {chips.enabled && (\n <div\n className={cn(\n 'desk-body-regular-l flex items-center gap-x-2 rounded-sm desktop:absolute',\n 'bg-color-blue-grey-100 px-2 py-1 text-color-tetriary',\n 'right-4 top-4 w-max',\n classes?.chips?.root\n )}\n >\n {chips.image && <Icon name={chips.image} className={cn('size-6', classes?.chips?.icon)} />}\n {chips.content}\n </div>\n )}\n <Heading as='h2' className={cn('desktop:hidden', classes?.title)}>\n {title}\n </Heading>\n <Heading as='h3' className={cn('mobile:hidden', classes?.title)}>\n {title}\n </Heading>\n <form\n onSubmit={handleSubmit(onSubmit)}\n className={cn('flex w-full flex-col gap-y-6', 'desktop:gap-y-8', classes?.form)}\n >\n {progress.enabled && (\n <ProgressBar\n progress={formattedProgress}\n topContent={<HTMLRenderer html={progress.title} />}\n bottomContent={<HTMLRenderer html={progress.subtitle} />}\n maxPercent={progress.maxPercent}\n classes={classes?.progressBar}\n />\n )}\n <FieldMapper control={control as unknown as Control} fields={fields} />\n <div\n className={cn('mob-body-regular-m flex flex-col items-start justify-center gap-4', {\n ['desktop:flex-row desktop:items-center']: buttonGroup.length === 1\n })}\n >\n {withApprovement(approvement, checked, onCheckedChange, classes?.approvement)}\n <div\n className={cn('flex w-full flex-col items-center justify-center gap-4 desktop:flex-row', {\n 'desktop:w-fit': buttonGroup.length === 1\n })}\n >\n {buttonGroup?.map((button, index) => {\n const disabled = button.type === 'submit' && approvement.type === 'checkbox' ? !checked : false\n\n return (\n <Button\n {...button}\n size='lg'\n key={index}\n disabled={disabled}\n className={cn(\n 'w-full whitespace-nowrap',\n {\n ['desktop:!w-fit']: buttonGroup.length === 1\n },\n {\n 'w-full': Boolean(approvement)\n },\n classes?.submit\n )}\n />\n )\n })}\n </div>\n </div>\n </form>\n </ResponsiveContainer>\n </section>\n </QueryClientProvider>\n )\n}\n\nexport default DynamicForm\n"],"names":["withApprovement","approvement","checked","onCheckedChange","classes","jsx","HTMLRenderer","jsxs","cn","CheckboxBase","DynamicForm","fields","title","progress","chips","submitProps","buttonGroup","submitCallback","useState","schema","getDynamicSchema","defaultValues","ZodUtils","control","handleSubmit","useControlledForm","fieldsProgress","getFieldsProgress","formattedProgress","useFieldsProgress","onSubmit","values","QueryClientProvider","widgetIds","ResponsiveContainer","_a","Icon","_b","Heading","ProgressBar","FieldMapper","button","index","disabled","createElement","Button"],"mappings":"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"}
1
+ {"version":3,"file":"DynamicForm.js","sources":["../../../../lib/widgets/dynamicForm/DynamicForm.tsx"],"sourcesContent":["'use client'\n\nimport { useState } from 'react'\nimport { type Control, type FieldValues, type SubmitHandler } from 'react-hook-form'\nimport { type TypeOf } from 'zod'\nimport { HTMLRenderer } from '../htmlParser'\nimport { widgetIds } from '../model'\nimport {\n type Approvement,\n type ApprovementType,\n type Chips,\n type ChipsType,\n getFieldsProgress,\n type Progress,\n type ProgressField,\n type ProgressType\n} from './model'\nimport { type FieldValidation, getDynamicSchema } from '@/shared/utils'\nimport { useControlledForm, useFieldsProgress } from '$/shared/hooks'\nimport {\n Button,\n type ButtonProps,\n CheckboxBase,\n type CheckedState,\n Heading,\n Icon,\n ProgressBar,\n ResponsiveContainer\n} from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\nimport { type FieldElement, FieldMapper } from '$/widgets/fieldMapper'\nimport { QueryClientProvider } from '$/widgets/queryClientProvider'\n\ntype SubmitProps = {\n submitCallback: <T extends FieldValues>(values: T) => void\n}\n\ntype ChipsClasses = {\n root?: string\n icon?: string\n}\ntype ApprovementClasses = {\n checkbox?: React.ComponentProps<typeof CheckboxBase>['classes']\n content?: string\n}\n\ntype DynamicFormClasses = {\n root?: string\n title?: string\n fields?: string\n form?: string\n chips?: ChipsClasses\n approvement?: ApprovementClasses\n progressBar?: React.ComponentProps<typeof ProgressBar>['classes']\n submit?: string\n}\n\nexport type DynamicFormProps<AType extends ApprovementType, CType extends ChipsType, PType extends ProgressType> = {\n fields: FieldElement<any, any, { validation: FieldValidation; progress: ProgressField }>[]\n title: string\n progress: Progress<PType>\n approvement: Approvement<AType>\n chips: Chips<CType>\n submitProps?: SubmitProps\n classes?: DynamicFormClasses\n buttonGroup: ButtonProps[]\n}\n\nconst withApprovement = <Type extends ApprovementType>(\n approvement: Approvement<Type>,\n checked: CheckedState,\n onCheckedChange: (checked: CheckedState) => void,\n classes?: ApprovementClasses\n): React.ReactNode => {\n if (approvement.type === 'off') return null\n\n if (approvement.type === 'text') {\n return <HTMLRenderer html={approvement.message} as='div' className={classes?.content} />\n }\n\n return (\n <label\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-s desktop:gap-x-4',\n 'flex items-center justify-items-start gap-x-3'\n )}\n >\n <CheckboxBase classes={classes?.checkbox} checked={checked} onCheckedChange={onCheckedChange} />\n <HTMLRenderer html={approvement.content} as='div' className={classes?.content} />\n </label>\n )\n}\n\nexport const DynamicForm = <AType extends ApprovementType, CType extends ChipsType, PType extends ProgressType>({\n fields,\n title,\n progress,\n approvement,\n chips,\n submitProps,\n classes,\n buttonGroup\n}: DynamicFormProps<AType, CType, PType>) => {\n const { submitCallback } = submitProps || {}\n\n const [checked, onCheckedChange] = useState<CheckedState>(false)\n\n const schema = getDynamicSchema(fields)\n const defaultValues = ZodUtils.getZodDefaults(schema)\n\n const { control, handleSubmit } = useControlledForm({\n schema,\n defaultValues,\n mode: 'onBlur'\n })\n\n const fieldsProgress = getFieldsProgress(progress, fields)\n\n const formattedProgress = useFieldsProgress({ control, fields: fieldsProgress || [], schema })\n\n const onSubmit: SubmitHandler<TypeOf<typeof schema>> = (values) => {\n if (submitCallback) submitCallback({ ...values, agree: checked })\n }\n\n return (\n <QueryClientProvider>\n <section id={widgetIds.form} data-test-id={widgetIds.form} className={cn('w-full', classes?.root)}>\n <ResponsiveContainer\n className={cn(\n 'border-warm-grey-200 px-4 desktop:w-[636px] desktop:gap-8 desktop:p-14',\n 'relative mx-auto flex flex-col gap-6 rounded-sm py-8 desktop:border'\n )}\n >\n {chips.enabled && (\n <div\n className={cn(\n 'desk-body-regular-l flex items-center gap-x-2 rounded-sm desktop:absolute',\n 'bg-color-blue-grey-100 px-2 py-1 text-color-tetriary',\n 'right-4 top-4 w-max',\n classes?.chips?.root\n )}\n >\n {chips.image && <Icon name={chips.image} className={cn('size-6', classes?.chips?.icon)} />}\n {chips.content}\n </div>\n )}\n <Heading as='h2' className={cn('desktop:hidden', classes?.title)}>\n {title}\n </Heading>\n <Heading as='h3' className={cn('mobile:hidden', classes?.title)}>\n {title}\n </Heading>\n <form\n onSubmit={handleSubmit(onSubmit)}\n className={cn('flex w-full flex-col gap-y-6', 'desktop:gap-y-8', classes?.form)}\n >\n {progress.enabled && (\n <ProgressBar\n progress={formattedProgress}\n topContent={<HTMLRenderer html={progress.title} />}\n bottomContent={<HTMLRenderer html={progress.subtitle} />}\n maxPercent={progress.maxPercent}\n classes={classes?.progressBar}\n />\n )}\n <FieldMapper control={control as unknown as Control} fields={fields} />\n <div\n className={cn('mob-body-regular-s flex flex-col items-start justify-center gap-4', {\n ['desktop:flex-row desktop:items-center']: buttonGroup.length === 1\n })}\n >\n {withApprovement(approvement, checked, onCheckedChange, classes?.approvement)}\n <div\n className={cn('flex w-full flex-col items-center justify-center gap-4 desktop:flex-row', {\n 'desktop:w-fit': buttonGroup.length === 1\n })}\n >\n {buttonGroup?.map((button, index) => {\n const disabled = button.type === 'submit' && approvement.type === 'checkbox' ? !checked : false\n\n return (\n <Button\n {...button}\n size='lg'\n key={index}\n disabled={disabled}\n className={cn(\n 'w-full whitespace-nowrap',\n {\n ['desktop:!w-fit']: buttonGroup.length === 1\n },\n {\n 'w-full': Boolean(approvement)\n },\n classes?.submit\n )}\n />\n )\n })}\n </div>\n </div>\n </form>\n </ResponsiveContainer>\n </section>\n </QueryClientProvider>\n )\n}\n\nexport default DynamicForm\n"],"names":["withApprovement","approvement","checked","onCheckedChange","classes","jsx","HTMLRenderer","jsxs","cn","CheckboxBase","DynamicForm","fields","title","progress","chips","submitProps","buttonGroup","submitCallback","useState","schema","getDynamicSchema","defaultValues","ZodUtils","control","handleSubmit","useControlledForm","fieldsProgress","getFieldsProgress","formattedProgress","useFieldsProgress","onSubmit","values","QueryClientProvider","widgetIds","ResponsiveContainer","_a","Icon","_b","Heading","ProgressBar","FieldMapper","button","index","disabled","createElement","Button"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{jsx as t}from"react/jsx-runtime";import{cn as i}from"../../../shared/utils/cn.js";import"../../../shared/ui/button/Button.js";import"../../../shared/ui/buttonIcon/ButtonIcon.js";import"../../../shared/ui/calendar/Calendar.js";import"../../../shared/ui/calendar/model/utils.js";import"../../../shared/ui/accordion/Accordion.js";import"react";import"react-dom";import"../../../shared/ui/modal/ui/IframeModalContent.js";import"../../../../node_modules/react-hot-toast/dist/index.js";import"../../../shared/ui/table/ui/primitives/Primitives.js";import"../../../shared/ui/carousel/ui/CarouselContent.js";import{CustomLink as f}from"../../../shared/ui/customLink/CustomLink.js";import"../../../shared/ui/slot/Slot.js";import"../../../shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js";import"../../../shared/ui/formElements/uncontrolled/checkbox/Checkbox.js";import"../../../shared/ui/formElements/uncontrolled/combobox/combobox.js";import"../../../shared/ui/formElements/uncontrolled/dayPicker/DayPicker.js";import"../../../shared/ui/formElements/uncontrolled/input/Input.js";import"../../../shared/ui/formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../../shared/ui/formElements/uncontrolled/maskInput/MaskInput.js";import"../../../shared/ui/formElements/uncontrolled/radio/RadioGroup.js";import"../../../shared/ui/formElements/uncontrolled/radio/ui/RadioItem.js";import"../../../shared/ui/formElements/uncontrolled/slider/SliderBase.js";import"../../../shared/ui/formElements/uncontrolled/switch/Switch.js";import"../../../shared/ui/formElements/uncontrolled/textarea/Textarea.js";import"../../../shared/ui/formElements/uncontrolled/uploader/UploaderBase.js";import"../../../shared/ui/formElements/controlled/editor/ui/Editor.js";import"../../../shared/ui/formElements/controlled/input/MaskInputControl.js";import"../../../shared/ui/dropdownList/ui/dropdownItem/DropdownItem.js";const Q=({links:o,classes:r})=>t("nav",{className:i("flex flex-col gap-1",r==null?void 0:r.linksWrapper),children:o==null?void 0:o.map(({path:m,label:p,...n})=>t(f,{classes:{link:i("w-max",r==null?void 0:r.linkText),icon:i(r==null?void 0:r.linkIcon)},intent:"dark",href:m,...n,children:p},m))});export{Q as LinksList};
1
+ import{jsx as m}from"react/jsx-runtime";import{cn as i}from"../../../shared/utils/cn.js";import"../../../shared/ui/button/Button.js";import"../../../shared/ui/buttonIcon/ButtonIcon.js";import"../../../shared/ui/calendar/Calendar.js";import"../../../shared/ui/calendar/model/utils.js";import"../../../shared/ui/accordion/Accordion.js";import"react";import"react-dom";import"../../../shared/ui/modal/ui/IframeModalContent.js";import"../../../../node_modules/react-hot-toast/dist/index.js";import"../../../shared/ui/table/ui/primitives/Primitives.js";import"../../../shared/ui/carousel/ui/CarouselContent.js";import{CustomLink as f}from"../../../shared/ui/customLink/CustomLink.js";import"../../../shared/ui/slot/Slot.js";import"../../../shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js";import"../../../shared/ui/formElements/uncontrolled/checkbox/Checkbox.js";import"../../../shared/ui/formElements/uncontrolled/combobox/combobox.js";import"../../../shared/ui/formElements/uncontrolled/dayPicker/DayPicker.js";import"../../../shared/ui/formElements/uncontrolled/input/Input.js";import"../../../shared/ui/formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../../shared/ui/formElements/uncontrolled/maskInput/MaskInput.js";import"../../../shared/ui/formElements/uncontrolled/radio/RadioGroup.js";import"../../../shared/ui/formElements/uncontrolled/radio/ui/RadioItem.js";import"../../../shared/ui/formElements/uncontrolled/slider/SliderBase.js";import"../../../shared/ui/formElements/uncontrolled/switch/Switch.js";import"../../../shared/ui/formElements/uncontrolled/textarea/Textarea.js";import"../../../shared/ui/formElements/uncontrolled/uploader/UploaderBase.js";import"../../../shared/ui/formElements/controlled/editor/ui/Editor.js";import"../../../shared/ui/formElements/controlled/input/MaskInputControl.js";import"../../../shared/ui/dropdownList/ui/dropdownItem/DropdownItem.js";const Q=({links:o,classes:r})=>m("nav",{className:i("flex flex-col gap-1",r==null?void 0:r.linksWrapper),children:o==null?void 0:o.map(({path:t,label:p,...n})=>m(f,{classes:{link:i(r==null?void 0:r.linkText),icon:i(r==null?void 0:r.linkIcon)},intent:"dark",href:t,...n,children:p},t))});export{Q as LinksList};
2
2
  //# sourceMappingURL=LinksList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinksList.js","sources":["../../../../../lib/widgets/interLinking/ui/LinksList.tsx"],"sourcesContent":["import type { Link } from '../model/types'\nimport { CustomLink } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type LinksListClasses = {\n linksWrapper?: string\n linkText?: string\n linkIcon?: string\n}\n\nexport interface LinksListProps {\n links: Link[]\n classes?: LinksListClasses\n}\n\nexport const LinksList = ({ links, classes }: LinksListProps) => {\n return (\n <nav className={cn('flex flex-col gap-1', classes?.linksWrapper)}>\n {links?.map(({ path, label, ...rest }) => (\n <CustomLink\n classes={{\n link: cn('w-max', classes?.linkText),\n icon: cn(classes?.linkIcon)\n }}\n intent='dark'\n key={path}\n href={path}\n {...rest}\n >\n {label}\n </CustomLink>\n ))}\n </nav>\n )\n}\n"],"names":["LinksList","links","classes","cn","path","label","rest","jsx","CustomLink"],"mappings":"u3DAeO,MAAMA,EAAY,CAAC,CAAE,MAAAC,EAAO,QAAAC,OAE9B,MAAA,CAAI,UAAWC,EAAG,sBAAuBD,GAAA,YAAAA,EAAS,YAAY,EAC5D,SAAAD,GAAA,YAAAA,EAAO,IAAI,CAAC,CAAE,KAAAG,EAAM,MAAAC,EAAO,GAAGC,KAC7BC,EAACC,EAAA,CACC,QAAS,CACP,KAAML,EAAG,QAASD,GAAA,YAAAA,EAAS,QAAQ,EACnC,KAAMC,EAAGD,GAAA,YAAAA,EAAS,QAAQ,CAAA,EAE5B,OAAO,OAEP,KAAME,EACL,GAAGE,EAEH,SAAAD,CAAA,EAJID,CAAA,GAOX"}
1
+ {"version":3,"file":"LinksList.js","sources":["../../../../../lib/widgets/interLinking/ui/LinksList.tsx"],"sourcesContent":["import type { Link } from '../model/types'\nimport { CustomLink } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type LinksListClasses = {\n linksWrapper?: string\n linkText?: string\n linkIcon?: string\n}\n\nexport interface LinksListProps {\n links: Link[]\n classes?: LinksListClasses\n}\n\nexport const LinksList = ({ links, classes }: LinksListProps) => {\n return (\n <nav className={cn('flex flex-col gap-1', classes?.linksWrapper)}>\n {links?.map(({ path, label, ...rest }) => (\n <CustomLink\n classes={{\n link: cn(classes?.linkText),\n icon: cn(classes?.linkIcon)\n }}\n intent='dark'\n key={path}\n href={path}\n {...rest}\n >\n {label}\n </CustomLink>\n ))}\n </nav>\n )\n}\n"],"names":["LinksList","links","classes","cn","path","label","rest","jsx","CustomLink"],"mappings":"u3DAeO,MAAMA,EAAY,CAAC,CAAE,MAAAC,EAAO,QAAAC,OAE9B,MAAA,CAAI,UAAWC,EAAG,sBAAuBD,GAAA,YAAAA,EAAS,YAAY,EAC5D,SAAAD,GAAA,YAAAA,EAAO,IAAI,CAAC,CAAE,KAAAG,EAAM,MAAAC,EAAO,GAAGC,KAC7BC,EAACC,EAAA,CACC,QAAS,CACP,KAAML,EAAGD,GAAA,YAAAA,EAAS,QAAQ,EAC1B,KAAMC,EAAGD,GAAA,YAAAA,EAAS,QAAQ,CAAA,EAE5B,OAAO,OAEP,KAAME,EACL,GAAGE,EAEH,SAAAD,CAAA,EAJID,CAAA,GAOX"}