@scbt-ecom/ui 0.166.1 → 0.168.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/configs/index.js +1 -1
- package/dist/lib/exports/config.js +1 -1
- package/dist/lib/exports/hooks.js +1 -1
- package/dist/lib/exports/next.js +1 -1
- package/dist/lib/exports/ui.js +1 -1
- package/dist/lib/exports/utils.js +1 -1
- package/dist/lib/exports/validation.js +1 -1
- package/dist/lib/exports/widget.js +1 -1
- package/dist/lib/next/index.js +1 -1
- package/dist/lib/shared/hooks/useMount.js +1 -1
- package/dist/lib/shared/style.css +1 -1
- package/dist/lib/shared/ui/button/Button.js +1 -1
- package/dist/lib/shared/ui/calendar/ui/Navigation.js +1 -1
- package/dist/lib/shared/ui/calendar/ui/selectDate/ui/SelectList.js +1 -1
- package/dist/lib/shared/ui/carousel/Carousel.js +1 -1
- package/dist/lib/shared/ui/carousel/model/index.js +1 -1
- package/dist/lib/shared/ui/carousel/ui/ArrowNavigationButton.js +1 -1
- package/dist/lib/shared/ui/carousel/ui/RenderSlides.js +1 -1
- package/dist/lib/shared/ui/carousel/ui/index.js +1 -1
- package/dist/lib/shared/ui/carouselBase/index.js +1 -1
- package/dist/lib/shared/ui/carouselBase/model/index.js +1 -1
- package/dist/lib/shared/ui/carouselBase/ui/ArrowNavigationButton.js +1 -1
- package/dist/lib/shared/ui/carouselBase/ui/CarouselSlide.js +1 -1
- package/dist/lib/shared/ui/carouselBase/ui/index.js +1 -1
- package/dist/lib/shared/ui/customLink/CustomLink.js +1 -1
- package/dist/lib/shared/ui/dropdownList/DropdownList.js +1 -1
- package/dist/lib/shared/ui/dropdownList/index.js +1 -1
- package/dist/lib/shared/ui/floatButton/FloatButton.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/autocomplete/AutocompleteControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/checkbox/CheckboxControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/combobox/ComboboxControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dadata/index.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/range.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/single.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/EditorControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/EditorControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/Editor.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/Editor.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/EditorModal.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/EditorModal.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/EditorWithModal.js +2 -0
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/EditorWithModal.js.map +1 -0
- package/dist/lib/shared/ui/formElements/controlled/input/InputControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/input/MaskInputControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/inputCurrency/InputCurrencyControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/inputOtp/InputOtpControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/radio/RadioGroupCardControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/radio/RadioGroupTabControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/slider/SliderControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/switch/SwitchControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/textarea/TextareaControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/uploader/UploaderControl.js +1 -1
- package/dist/lib/shared/ui/formElements/index.js +1 -1
- package/dist/lib/shared/ui/formElements/ui/fieldAttachment/FieldAttachment.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/combobox/combobox.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/dayPicker/DayPicker.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/InputCurrency.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/inputOtp/InputOtpBase.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/radio/RadioGroup.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/radio/RadioGroup.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/radio/ui/AdditionalContent.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/radio/ui/AdditionalContent.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItem.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItem.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItemCard.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItemCard.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/SliderAlgorithmic.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/hooks/useSliderAlgorithmic.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/hooks/useSliderAlgorithmic.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/UploaderBase.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderInput.js +1 -1
- package/dist/lib/shared/ui/index.js +1 -1
- package/dist/lib/shared/ui/modal/ui/ModalHeader.js +1 -1
- package/dist/lib/shared/ui/modal/ui/ModalHeader.js.map +1 -1
- package/dist/lib/shared/ui/pagination/Pagination.js +1 -1
- package/dist/lib/shared/ui/tabSwitcher/ui/TabContent.js +1 -1
- package/dist/lib/shared/ui/table/Desktop.js +1 -1
- package/dist/lib/shared/ui/table/index.js +1 -1
- package/dist/lib/shared/ui/table/ui/index.js +1 -1
- package/dist/lib/shared/utils/index.js +1 -1
- package/dist/lib/shared/utils/variableHolder/variableContextHolder.js.map +1 -1
- package/dist/lib/shared/utils/variables/variableResolver.js.map +1 -1
- package/dist/lib/shared/validation/index.js +1 -1
- package/dist/lib/widgets/banner/ui/index.js +1 -1
- package/dist/lib/widgets/calculator/Calculator.js +1 -1
- package/dist/lib/widgets/calculator/Calculator.js.map +1 -1
- package/dist/lib/widgets/calculator/CalculatorView.js +1 -1
- package/dist/lib/widgets/calculator/CalculatorView.js.map +1 -1
- package/dist/lib/widgets/calculator/model/helpers.js +1 -1
- package/dist/lib/widgets/calculator/model/helpers.js.map +1 -1
- package/dist/lib/widgets/calculator/model/index.js +1 -1
- package/dist/lib/widgets/calculator/model/utils.js +1 -1
- package/dist/lib/widgets/calculator/model/utils.js.map +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorFields/CalculatorFields.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorFields/CalculatorFields.js.map +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorFields/ui/CalculatorModal.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/CalculatorInfo.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/CalculatorInfo.js.map +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/index.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/CalculatedBlock.js.map +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoBody.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoBody.js.map +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/InfoListItem.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/InfoListItem.js.map +1 -1
- package/dist/lib/widgets/calculator/ui/index.js +1 -1
- package/dist/lib/widgets/carouselBlock/CarouselBlock.js +1 -1
- package/dist/lib/widgets/dynamicFormDialog/DynamicFormDialog.js +1 -1
- package/dist/lib/widgets/esia/Esia.js +1 -1
- package/dist/lib/widgets/fallbacksView/model/helpers.js +1 -1
- package/dist/lib/widgets/footer/Footer.js +1 -1
- package/dist/lib/widgets/footer/ui/SocialLinks.js +1 -1
- package/dist/lib/widgets/header/Header.js +1 -1
- package/dist/lib/widgets/index.js +1 -1
- package/dist/lib/widgets/infoBlock/InfoBlock.js +1 -1
- package/dist/lib/widgets/interLinking/InterLinking.js +1 -1
- package/dist/lib/widgets/interLinking/ui/ColumnGroup.js +1 -1
- package/dist/lib/widgets/longBanner/LongBanner.js +1 -1
- package/dist/lib/widgets/model/helpers.js +2 -2
- package/dist/lib/widgets/seoHeader/SeoHeader.js +1 -1
- package/dist/lib/widgets/seoHeader/hooks/index.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/desktop/tab/Tab.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/desktop/tab/ui/content/TabContent.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/mobile/menu/Menu.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/mobile/menu/MenuItem.js +1 -1
- package/dist/lib/widgets/usefulInfo/ui/subEntities/documents/Documents.js +1 -1
- package/dist/lib/widgets/usefulInfo/ui/subEntities/index.js +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/defineProperty.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/extends.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/iterableToArray.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/objectSpread2.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/slicedToArray.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/toPrimitive.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/typeof.js.map +1 -1
- package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js.map +1 -1
- package/dist/node_modules/.pnpm/rc-slider@11.1.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-slider/es/Handles/Handle.js +1 -1
- package/dist/node_modules/.pnpm/rc-slider@11.1.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-slider/es/Handles/index.js +1 -1
- package/dist/node_modules/.pnpm/rc-slider@11.1.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-slider/es/Marks/Mark.js +1 -1
- package/dist/node_modules/.pnpm/rc-slider@11.1.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-slider/es/Slider.js +1 -1
- package/dist/node_modules/.pnpm/rc-slider@11.1.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-slider/es/Slider.js.map +1 -1
- package/dist/node_modules/.pnpm/rc-slider@11.1.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-slider/es/Steps/Dot.js +1 -1
- package/dist/node_modules/.pnpm/rc-slider@11.1.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-slider/es/Tracks/Track.js +1 -1
- package/dist/node_modules/.pnpm/rc-slider@11.1.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-slider/es/Tracks/index.js +1 -1
- package/dist/node_modules/.pnpm/rc-slider@11.1.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-slider/es/hooks/useDrag.js +1 -1
- package/dist/node_modules/.pnpm/rc-slider@11.1.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-slider/es/hooks/useOffset.js +1 -1
- package/dist/node_modules/.pnpm/rc-util@5.44.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-util/es/hooks/useMergedState.js +1 -1
- package/dist/node_modules/.pnpm/rc-util@5.44.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-util/es/hooks/useState.js +1 -1
- package/dist/node_modules/.pnpm/rc-util@5.44.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-util/es/isEqual.js +1 -1
- package/dist/node_modules/.pnpm/rc-util@5.44.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/rc-util/es/isEqual.js.map +1 -1
- package/dist/stats.html +1 -1
- package/dist/types/lib/shared/ui/formElements/controlled/editor/EditorControl.d.ts +6 -9
- package/dist/types/lib/shared/ui/formElements/controlled/editor/ui/Editor.d.ts +16 -12
- package/dist/types/lib/shared/ui/formElements/controlled/editor/ui/EditorWithModal.d.ts +9 -0
- package/dist/types/lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItem.d.ts +4 -2
- package/dist/types/lib/shared/utils/variableHolder/variableContextHolder.d.ts +3 -0
- package/dist/types/lib/shared/utils/variables/variableResolver.d.ts +4 -3
- package/dist/types/lib/widgets/calculator/CalculatorView.d.ts +3 -2
- package/dist/types/lib/widgets/calculator/model/helpers.d.ts +2 -2
- package/dist/types/lib/widgets/calculator/model/types.d.ts +1 -4
- package/dist/types/lib/widgets/calculator/model/utils.d.ts +1 -2
- package/dist/types/lib/widgets/calculator/ui/calculatorInfo/CalculatorInfo.d.ts +2 -1
- package/dist/types/lib/widgets/calculator/ui/calculatorInfo/ui/CalculatedBlock.d.ts +4 -2
- package/dist/types/lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoBody.d.ts +2 -2
- package/dist/types/lib/widgets/calculator/ui/calculatorInfo/ui/InfoListItem.d.ts +5 -9
- package/package.json +1 -1
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/defineProperty.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/extends.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/iterableToArray.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/objectSpread2.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/slicedToArray.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/typeof.js +0 -0
- /package/dist/node_modules/.pnpm/{@babel_runtime@7.28.4 → @babel_runtime@7.28.6}/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioItem.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItem.tsx"],"sourcesContent":["import { memo, useId } from 'react'\nimport { Indicator, Item, type RadioGroupItemProps } from '@radix-ui/react-radio-group'\nimport {\n AdditionalContent,\n type AdditionalContentClasses,\n type AdditionalContentProps\n} from '$/shared/ui/formElements/uncontrolled/radio/ui/AdditionalContent'\nimport { cn } from '$/shared/utils'\n\nexport type RadioOption = {\n id: number | string\n value: string\n label: string\n disabled?: boolean\n additionalContent?: AdditionalContentProps\n}\n\nexport type RadioItemClasses = {\n root?: string\n item?: string\n indicator?: string\n label?: string\n additionalContent?: AdditionalContentClasses\n}\n\nexport type RadioItemProps = Omit<RadioGroupItemProps, 'value'> & {\n /**\n * Опция списка\n */\n item: RadioOption\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: RadioOption) => string\n /**\n * Функция для управления возвращаемым значением\n */\n returnValue?: (option: RadioOption) => string\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: RadioItemClasses\n /**\n * Свойство для отображения не валидного поля\n */\n invalid?: boolean\n}\n\nexport const RadioItem = memo(\n ({ item, disabled, displayValue, returnValue, classes, className, invalid, ...props }: RadioItemProps) => {\n const label = displayValue ? displayValue(item) : item.label\n const value = returnValue ? returnValue(item) : item.value\n\n const id = useId()\n\n return (\n <Item {...props} asChild disabled={disabled} value={value} id={id}>\n <li\n className={cn(\n 'group flex items-center gap-x-3',\n 'w-full min-w-[200px] [&:not(:last-child)]:mb-4',\n '[&:not(:disabled)]:cursor-pointer',\n {\n 'pointer-events-none text-color-disabled': disabled\n },\n className,\n classes?.root\n )}\n >\n <div\n className={cn(\n 'after:left-1/2 after:top-1/2 after:h-10 after:w-10',\n 'after:-translate-x-1/2 after:-translate-y-1/2 after:content-[\"\"]',\n 'after:absolute after:rounded-full [&:not(:disabled)]:hover:after:bg-color-primary-tr-hover',\n 'after:duration-100 [&:not(:disabled)]:active:after:bg-color-primary-tr-pressed',\n 'after:-z-10 [&:not(:disabled)]:focus:after:bg-color-primary-tr-focus',\n 'relative h-6 w-6 rounded-full border-2 border-blue-grey-700',\n 'group-data-[state=checked]:border-primary-default',\n {\n 'border-negative': invalid,\n 'group-data-[state=unchecked]:border-0 group-data-[state=checked]:border-primary-disabled group-data-[state=unchecked]:bg-color-blue-grey-300':\n disabled\n },\n classes?.item\n )}\n >\n <Indicator\n className={cn(\n 'absolute left-1/2 top-1/2 h-3 w-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-color-primary-default',\n 'group-disabled:group-data-[state=checked]:bg-color-negative',\n {\n 'group-data-[state=checked]:bg-color-primary-disabled': disabled\n },\n classes?.indicator\n )}\n />\n </div>\n <label\n htmlFor={id}\n className={cn(\n 'desk-body-regular-l capitalize text-color-dark',\n {\n 'text-color-disabled': disabled\n },\n classes?.label\n )}\n >\n {label}\n </label>\n {item?.additionalContent && (\n <AdditionalContent disabled={disabled} {...item?.additionalContent} classes={classes?.additionalContent} />\n )}\n </li>\n </Item>\n )\n }\n)\n"],"names":["RadioItem","memo","item","disabled","displayValue","returnValue","classes","className","invalid","props","label","value","id","useId","jsx","Item","jsxs","cn","Indicator","AdditionalContent"],"mappings":"
|
|
1
|
+
{"version":3,"file":"RadioItem.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItem.tsx"],"sourcesContent":["import { memo, useId } from 'react'\nimport { Indicator, Item, type RadioGroupItemProps } from '@radix-ui/react-radio-group'\nimport {\n AdditionalContent,\n type AdditionalContentClasses,\n type AdditionalContentProps\n} from '$/shared/ui/formElements/uncontrolled/radio/ui/AdditionalContent'\nimport { cn } from '$/shared/utils'\n\nexport type RadioOption = {\n id: number | string\n value: string\n label: string\n index?: number\n disabled?: boolean\n additionalContent?: AdditionalContentProps\n}\n\nexport type RadioItemClasses = {\n root?: string\n item?: string\n indicator?: string\n label?: string\n additionalContent?: AdditionalContentClasses\n}\n\nexport type RadioItemProps = Omit<RadioGroupItemProps, 'value'> & {\n /**\n * Опция списка\n */\n item: RadioOption\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: RadioOption) => string\n /**\n * Функция для управления возвращаемым значением\n */\n returnValue?: (option: RadioOption, index?: number) => string\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: RadioItemClasses\n /**\n * Свойство для отображения не валидного поля\n */\n invalid?: boolean\n index?: number\n}\n\nexport const RadioItem = memo(\n ({ item, disabled, displayValue, returnValue, classes, className, invalid, index, ...props }: RadioItemProps) => {\n const label = displayValue ? displayValue(item) : item.label\n const value = returnValue ? returnValue(item, index) : item.value\n\n const id = useId()\n\n return (\n <Item {...props} asChild disabled={disabled} value={value} id={id}>\n <li\n className={cn(\n 'group flex items-center gap-x-3',\n 'w-full min-w-[200px] [&:not(:last-child)]:mb-4',\n '[&:not(:disabled)]:cursor-pointer',\n {\n 'pointer-events-none text-color-disabled': disabled\n },\n className,\n classes?.root\n )}\n >\n <div\n className={cn(\n 'after:left-1/2 after:top-1/2 after:h-10 after:w-10',\n 'after:-translate-x-1/2 after:-translate-y-1/2 after:content-[\"\"]',\n 'after:absolute after:rounded-full [&:not(:disabled)]:hover:after:bg-color-primary-tr-hover',\n 'after:duration-100 [&:not(:disabled)]:active:after:bg-color-primary-tr-pressed',\n 'after:-z-10 [&:not(:disabled)]:focus:after:bg-color-primary-tr-focus',\n 'relative h-6 w-6 rounded-full border-2 border-blue-grey-700',\n 'group-data-[state=checked]:border-primary-default',\n {\n 'border-negative': invalid,\n 'group-data-[state=unchecked]:border-0 group-data-[state=checked]:border-primary-disabled group-data-[state=unchecked]:bg-color-blue-grey-300':\n disabled\n },\n classes?.item\n )}\n >\n <Indicator\n className={cn(\n 'absolute left-1/2 top-1/2 h-3 w-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-color-primary-default',\n 'group-disabled:group-data-[state=checked]:bg-color-negative',\n {\n 'group-data-[state=checked]:bg-color-primary-disabled': disabled\n },\n classes?.indicator\n )}\n />\n </div>\n <label\n htmlFor={id}\n className={cn(\n 'desk-body-regular-l capitalize text-color-dark',\n {\n 'text-color-disabled': disabled\n },\n classes?.label\n )}\n >\n {label}\n </label>\n {item?.additionalContent && (\n <AdditionalContent disabled={disabled} {...item?.additionalContent} classes={classes?.additionalContent} />\n )}\n </li>\n </Item>\n )\n }\n)\n"],"names":["RadioItem","memo","item","disabled","displayValue","returnValue","classes","className","invalid","index","props","label","value","id","useId","jsx","Item","jsxs","cn","Indicator","AdditionalContent"],"mappings":"uQAkDO,MAAMA,EAAYC,EACvB,CAAC,CAAE,KAAAC,EAAM,SAAAC,EAAU,aAAAC,EAAc,YAAAC,EAAa,QAAAC,EAAS,UAAAC,EAAW,QAAAC,EAAS,MAAAC,EAAO,GAAGC,CAAA,IAA4B,CAC/G,MAAMC,EAAQP,EAAeA,EAAaF,CAAI,EAAIA,EAAK,MACjDU,EAAQP,EAAcA,EAAYH,EAAMO,CAAK,EAAIP,EAAK,MAEtDW,EAAKC,EAAA,EAEX,OACEC,EAACC,GAAM,GAAGN,EAAO,QAAO,GAAC,SAAAP,EAAoB,MAAAS,EAAc,GAAAC,EACzD,SAAAI,EAAC,KAAA,CACC,UAAWC,EACT,kCACA,iDACA,oCACA,CACE,0CAA2Cf,CAAA,EAE7CI,EACAD,GAAS,IAAA,EAGX,SAAA,CAAAS,EAAC,MAAA,CACC,UAAWG,EACT,qDACA,mEACA,6FACA,iFACA,uEACA,8DACA,oDACA,CACE,kBAAmBV,EACnB,+IACEL,CAAA,EAEJG,GAAS,IAAA,EAGX,SAAAS,EAACI,EAAA,CACC,UAAWD,EACT,4GACA,8DACA,CACE,uDAAwDf,CAAA,EAE1DG,GAAS,SAAA,CACX,CAAA,CACF,CAAA,EAEFS,EAAC,QAAA,CACC,QAASF,EACT,UAAWK,EACT,iDACA,CACE,sBAAuBf,CAAA,EAEzBG,GAAS,KAAA,EAGV,SAAAK,CAAA,CAAA,EAEFT,GAAM,mBACLa,EAACK,EAAA,CAAkB,SAAAjB,EAAqB,GAAGD,GAAM,kBAAmB,QAASI,GAAS,iBAAA,CAAmB,CAAA,CAAA,CAAA,EAG/G,CAEJ,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r,jsxs as u}from"react/jsx-runtime";import{useId as m}from"react";import{Item as p,Indicator as g}from"@radix-ui/react-radio-group";import{AdditionalContent as h}from"./AdditionalContent.js";import{cn as a}from"../../../../../utils/cn.js";const k=({classes:t,returnValue:
|
|
1
|
+
import{jsx as r,jsxs as u}from"react/jsx-runtime";import{useId as m}from"react";import{Item as p,Indicator as g}from"@radix-ui/react-radio-group";import{AdditionalContent as h}from"./AdditionalContent.js";import{cn as a}from"../../../../../utils/cn.js";const k=({classes:t,returnValue:l,displayValue:d,item:e,disabled:s,invalid:n,...b})=>{const c=d?d(e):e?.label,f=l?l(e):e?.value,i=m(),o=s||e?.disabled;return r(p,{...b,className:a("outline-none",{"pointer-events-none":o}),asChild:!0,disabled:o,value:f,id:i,children:r("div",{className:"h-full",children:u("li",{className:a("group flex h-full w-[160px] flex-col items-start rounded-md border border-solid border-blue-grey-500 px-6 py-4",{"border-negative":n,"bg-color-blue-grey-200":o},t?.root),children:[r("div",{className:a("mb-4 after:left-1/2 after:top-1/2 after:h-10 after:w-10",'after:-translate-x-1/2 after:-translate-y-1/2 after:content-[""]',"after:absolute after:rounded-full [&:not(:disabled)]:hover:after:bg-color-primary-tr-hover","after:duration-100 [&:not(:disabled)]:active:after:bg-color-primary-tr-pressed","after:-z-10 [&:not(:disabled)]:focus:after:bg-color-primary-tr-focus","relative h-6 w-6 rounded-full border-2 border-blue-grey-700","group-data-[state=checked]:border-primary-default",{"border-negative":n},t?.item),children:r(g,{className:a("absolute left-1/2 top-1/2 h-3 w-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-color-primary-default","group-disabled:group-data-[state=checked]:bg-color-negative",t?.indicator)})}),r("label",{htmlFor:i,className:a("desk-body-regular-l mb-4 capitalize text-color-dark",{"text-color-disabled":o},t?.label),children:c}),e?.additionalContent&&r(h,{disabled:o,...e?.additionalContent,classes:t?.additionalContent})]})})})};export{k as RadioItemCard};
|
|
2
2
|
//# sourceMappingURL=RadioItemCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioItemCard.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItemCard.tsx"],"sourcesContent":["import { useId } from 'react'\nimport { Indicator, Item } from '@radix-ui/react-radio-group'\nimport { type RenderComponentProps } from '$/shared/ui/formElements/uncontrolled/radio/RadioGroup'\nimport { AdditionalContent } from '$/shared/ui/formElements/uncontrolled/radio/ui/AdditionalContent'\nimport { cn } from '$/shared/utils'\n\nexport interface RadioItemCardProps extends RenderComponentProps {}\n\nexport const RadioItemCard = ({\n classes,\n returnValue,\n displayValue,\n item,\n disabled: disableGroup,\n invalid,\n ...props\n}: RadioItemCardProps) => {\n const label = displayValue ? displayValue(item) : item?.label\n const value = returnValue ? returnValue(item) : item?.value\n const id = useId()\n\n const disabled = disableGroup || item?.disabled\n\n return (\n <Item\n {...props}\n className={cn('outline-none', { 'pointer-events-none': disabled })}\n asChild\n disabled={disabled}\n value={value}\n id={id}\n >\n <div>\n <li\n className={cn(\n 'group flex w-[160px] flex-col items-start rounded-md border border-solid border-blue-grey-500 px-6 py-4',\n { 'border-negative': invalid, 'bg-color-blue-grey-200': disabled },\n classes?.root\n )}\n >\n <div\n className={cn(\n 'mb-4 after:left-1/2 after:top-1/2 after:h-10 after:w-10',\n 'after:-translate-x-1/2 after:-translate-y-1/2 after:content-[\"\"]',\n 'after:absolute after:rounded-full [&:not(:disabled)]:hover:after:bg-color-primary-tr-hover',\n 'after:duration-100 [&:not(:disabled)]:active:after:bg-color-primary-tr-pressed',\n 'after:-z-10 [&:not(:disabled)]:focus:after:bg-color-primary-tr-focus',\n 'relative h-6 w-6 rounded-full border-2 border-blue-grey-700',\n 'group-data-[state=checked]:border-primary-default',\n {\n 'border-negative': invalid\n },\n classes?.item\n )}\n >\n <Indicator\n className={cn(\n 'absolute left-1/2 top-1/2 h-3 w-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-color-primary-default',\n 'group-disabled:group-data-[state=checked]:bg-color-negative',\n classes?.indicator\n )}\n />\n </div>\n <label\n htmlFor={id}\n className={cn(\n 'desk-body-regular-l mb-4 capitalize text-color-dark',\n { 'text-color-disabled': disabled },\n classes?.label\n )}\n >\n {label}\n </label>\n {item?.additionalContent && (\n <AdditionalContent disabled={disabled} {...item?.additionalContent} classes={classes?.additionalContent} />\n )}\n </li>\n </div>\n </Item>\n )\n}\n"],"names":["RadioItemCard","classes","returnValue","displayValue","item","disableGroup","invalid","props","label","value","id","useId","disabled","jsx","Item","cn","jsxs","Indicator","AdditionalContent"],"mappings":"6PAQO,MAAMA,EAAgB,CAAC,CAC5B,QAAAC,EACA,YAAAC,EACA,aAAAC,EACA,KAAAC,EACA,SAAUC,EACV,QAAAC,EACA,GAAGC,CACL,IAA0B,CACxB,MAAMC,EAAQL,EAAeA,EAAaC,CAAI,EAAIA,GAAM,MAClDK,EAAQP,EAAcA,EAAYE,CAAI,EAAIA,GAAM,MAChDM,EAAKC,EAAA,EAELC,EAAWP,GAAgBD,GAAM,SAEvC,OACES,EAACC,EAAA,CACE,GAAGP,EACJ,UAAWQ,EAAG,eAAgB,CAAE,sBAAuBH,EAAU,EACjE,QAAO,GACP,SAAAA,EACA,MAAAH,EACA,GAAAC,EAEA,
|
|
1
|
+
{"version":3,"file":"RadioItemCard.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItemCard.tsx"],"sourcesContent":["import { useId } from 'react'\nimport { Indicator, Item } from '@radix-ui/react-radio-group'\nimport { type RenderComponentProps } from '$/shared/ui/formElements/uncontrolled/radio/RadioGroup'\nimport { AdditionalContent } from '$/shared/ui/formElements/uncontrolled/radio/ui/AdditionalContent'\nimport { cn } from '$/shared/utils'\n\nexport interface RadioItemCardProps extends RenderComponentProps {}\n\nexport const RadioItemCard = ({\n classes,\n returnValue,\n displayValue,\n item,\n disabled: disableGroup,\n invalid,\n ...props\n}: RadioItemCardProps) => {\n const label = displayValue ? displayValue(item) : item?.label\n const value = returnValue ? returnValue(item) : item?.value\n const id = useId()\n\n const disabled = disableGroup || item?.disabled\n\n return (\n <Item\n {...props}\n className={cn('outline-none', { 'pointer-events-none': disabled })}\n asChild\n disabled={disabled}\n value={value}\n id={id}\n >\n <div className='h-full'>\n <li\n className={cn(\n 'group flex h-full w-[160px] flex-col items-start rounded-md border border-solid border-blue-grey-500 px-6 py-4',\n { 'border-negative': invalid, 'bg-color-blue-grey-200': disabled },\n classes?.root\n )}\n >\n <div\n className={cn(\n 'mb-4 after:left-1/2 after:top-1/2 after:h-10 after:w-10',\n 'after:-translate-x-1/2 after:-translate-y-1/2 after:content-[\"\"]',\n 'after:absolute after:rounded-full [&:not(:disabled)]:hover:after:bg-color-primary-tr-hover',\n 'after:duration-100 [&:not(:disabled)]:active:after:bg-color-primary-tr-pressed',\n 'after:-z-10 [&:not(:disabled)]:focus:after:bg-color-primary-tr-focus',\n 'relative h-6 w-6 rounded-full border-2 border-blue-grey-700',\n 'group-data-[state=checked]:border-primary-default',\n {\n 'border-negative': invalid\n },\n classes?.item\n )}\n >\n <Indicator\n className={cn(\n 'absolute left-1/2 top-1/2 h-3 w-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-color-primary-default',\n 'group-disabled:group-data-[state=checked]:bg-color-negative',\n classes?.indicator\n )}\n />\n </div>\n <label\n htmlFor={id}\n className={cn(\n 'desk-body-regular-l mb-4 capitalize text-color-dark',\n { 'text-color-disabled': disabled },\n classes?.label\n )}\n >\n {label}\n </label>\n {item?.additionalContent && (\n <AdditionalContent disabled={disabled} {...item?.additionalContent} classes={classes?.additionalContent} />\n )}\n </li>\n </div>\n </Item>\n )\n}\n"],"names":["RadioItemCard","classes","returnValue","displayValue","item","disableGroup","invalid","props","label","value","id","useId","disabled","jsx","Item","cn","jsxs","Indicator","AdditionalContent"],"mappings":"6PAQO,MAAMA,EAAgB,CAAC,CAC5B,QAAAC,EACA,YAAAC,EACA,aAAAC,EACA,KAAAC,EACA,SAAUC,EACV,QAAAC,EACA,GAAGC,CACL,IAA0B,CACxB,MAAMC,EAAQL,EAAeA,EAAaC,CAAI,EAAIA,GAAM,MAClDK,EAAQP,EAAcA,EAAYE,CAAI,EAAIA,GAAM,MAChDM,EAAKC,EAAA,EAELC,EAAWP,GAAgBD,GAAM,SAEvC,OACES,EAACC,EAAA,CACE,GAAGP,EACJ,UAAWQ,EAAG,eAAgB,CAAE,sBAAuBH,EAAU,EACjE,QAAO,GACP,SAAAA,EACA,MAAAH,EACA,GAAAC,EAEA,SAAAG,EAAC,MAAA,CAAI,UAAU,SACb,SAAAG,EAAC,KAAA,CACC,UAAWD,EACT,iHACA,CAAE,kBAAmBT,EAAS,yBAA0BM,CAAA,EACxDX,GAAS,IAAA,EAGX,SAAA,CAAAY,EAAC,MAAA,CACC,UAAWE,EACT,0DACA,mEACA,6FACA,iFACA,uEACA,8DACA,oDACA,CACE,kBAAmBT,CAAA,EAErBL,GAAS,IAAA,EAGX,SAAAY,EAACI,EAAA,CACC,UAAWF,EACT,4GACA,8DACAd,GAAS,SAAA,CACX,CAAA,CACF,CAAA,EAEFY,EAAC,QAAA,CACC,QAASH,EACT,UAAWK,EACT,sDACA,CAAE,sBAAuBH,CAAA,EACzBX,GAAS,KAAA,EAGV,SAAAO,CAAA,CAAA,EAEFJ,GAAM,mBACLS,EAACK,EAAA,CAAkB,SAAAN,EAAqB,GAAGR,GAAM,kBAAmB,QAASH,GAAS,iBAAA,CAAmB,CAAA,CAAA,CAAA,CAE7G,CACF,CAAA,CAAA,CAGN"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as m,jsx as i}from"react/jsx-runtime";import*as h from"react";import{forwardRef as E}from"react";import{NumericFormat as J}from"react-number-format";import{SliderInner as K}from"../Slider.js";import{
|
|
1
|
+
import{jsxs as m,jsx as i}from"react/jsx-runtime";import*as h from"react";import{forwardRef as E}from"react";import{NumericFormat as J}from"react-number-format";import{SliderInner as K}from"../Slider.js";import{cn as r}from"../../../../../../utils/cn.js";import{mergeRefs as Q}from"../../../../../../utils/mergeRefs.js";import{getInputSliderSuffix as f}from"../../model/helpers/getInputSliderSuffix.js";import{useSliderAlgorithmic as T}from"./hooks/useSliderAlgorithmic.js";import{InputBase as U}from"../../../input/Input.js";import{Icon as W}from"../../../../../icon/Icon.js";const X=i(W,{name:"general/edit",className:"size-[19px] text-icon-blue-grey-600 transition-[color] group-focus-within/icon:text-icon-blue-grey-800"}),te=E(({classes:b,invalid:I,externalHandlers:e,disabled:p,value:t,onChange:n,min:s,max:c,suffix:a,label:N,attachmentProps:u,additionalSuffix:x,readOnly:l,componentType:k,dataLayers:w,...d},S)=>{const y=h.useId(),g=h.useRef(null),B=()=>{g?.current?.focus()},{sliderValue:C,sliderStep:R,sliderMin:v,sliderMax:j,handleChangeSlider:A,handleBlur:F}=T({min:Number(s),max:Number(c),defaultValue:0,value:t,onChange:n}),{root:M,slider:V,textLeft:$,textRight:z,inputRoot:G,textContainer:L,input:q,field:D}=b||{};return m("div",{"aria-label":k,className:r("flex w-full flex-col gap-1",M),children:[m("div",{className:r("relative w-full select-none",{"select-none":l},D),children:[i(U,{label:N,value:t,attachmentProps:{onClickIcon:l?void 0:u?.onClickIcon||B,icon:l?void 0:u?.icon||X,...u},classes:{container:"border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800",...G},onBlur:o=>{d?.onBlur&&d?.onBlur(o),e?.onBlur&&e.onBlur(o),F()},onClick:e?.onClick,onFocus:e?.onBlur,renderValues:()=>i(J,{id:y,readOnly:l,"aria-invalid":I?"true":"false",value:t,disabled:p,suffix:` ${f(a,t)} ${x??""}`,thousandsGroupStyle:"thousand",thousandSeparator:" ",allowNegative:!1,getInputRef:Q(g,S),onValueChange:({floatValue:o})=>{o!==void 0&&(n&&n(o),e?.onInputChange?.(o))},"data-id":"slider",className:r("group/slider desk-title-bold-s w-full bg-color-transparent text-color-dark outline-none transition-all",q),"data-layer-id":w?.targetId,...d})}),i(K,{classes:{...V},step:R,value:C,disabled:p,min:Number(v),max:Number(j),onChange:A,externalHandlers:e})]}),m("div",{className:r("flex justify-between",L),children:[s&&i("span",{className:r("desk-body-regular-m text-color-tetriary",$),children:f(a,s,!1)}),c&&i("span",{className:r("desk-body-regular-m text-color-tetriary",z),children:f(a,c,!1)})]})]})});export{te as SliderAlgorithmic};
|
|
2
2
|
//# sourceMappingURL=SliderAlgorithmic.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useLogarithmic as
|
|
1
|
+
import{useLogarithmic as h}from"../../../model/useLogarithmic.js";const A=({min:i,max:t,defaultValue:o,value:d,onChange:r})=>{const{fromSlider:l,toSlider:e,round:c}=h({min:i,max:t,defaultSum:o}),f=e(d),u=.01,S=e(i),n=e(t);return{handleChangeSlider:s=>{s&&r&&r(c(l(s)))},handleBlur:()=>{d&&(d>t&&r&&r(t),d<i&&r&&r(i))},toSlider:e,fromSlider:l,sliderValue:f,sliderStep:u,sliderMin:S,sliderMax:n}};export{A as useSliderAlgorithmic};
|
|
2
2
|
//# sourceMappingURL=useSliderAlgorithmic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSliderAlgorithmic.js","sources":["../../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/hooks/useSliderAlgorithmic.ts"],"sourcesContent":["import { useLogarithmic } from '../../../model'\n\ninterface UseSliderAlgorithmic {\n min: number\n max: number\n defaultValue: number\n value: number | undefined\n onChange?: (value: number) => void // good\n}\n\nexport const useSliderAlgorithmic = ({ min, max, defaultValue, value, onChange }: UseSliderAlgorithmic) => {\n const { fromSlider, toSlider, round } = useLogarithmic({ min, max, defaultSum: defaultValue })\n\n
|
|
1
|
+
{"version":3,"file":"useSliderAlgorithmic.js","sources":["../../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/hooks/useSliderAlgorithmic.ts"],"sourcesContent":["import { useLogarithmic } from '../../../model'\n\ninterface UseSliderAlgorithmic {\n min: number\n max: number\n defaultValue: number\n value: number | undefined\n onChange?: (value: number) => void // good\n}\n\nexport const useSliderAlgorithmic = ({ min, max, defaultValue, value, onChange }: UseSliderAlgorithmic) => {\n const { fromSlider, toSlider, round } = useLogarithmic({ min, max, defaultSum: defaultValue })\n\n const sliderValue = toSlider(value)\n\n const sliderStep = 0.01\n\n const sliderMin = toSlider(min)\n const sliderMax = toSlider(max)\n\n const handleBlur = () => {\n if (!value) return\n\n if (value > max) {\n if (onChange) onChange(max)\n }\n if (value < min) {\n if (onChange) onChange(min)\n }\n }\n\n const handleChangeSlider = (value?: number) => {\n if (!value) {\n return\n }\n if (onChange) onChange(round(fromSlider(value)))\n }\n\n return {\n handleChangeSlider,\n handleBlur,\n toSlider,\n fromSlider,\n sliderValue,\n sliderStep,\n sliderMin,\n sliderMax\n }\n}\n"],"names":["useSliderAlgorithmic","min","max","defaultValue","value","onChange","fromSlider","toSlider","round","useLogarithmic","sliderValue","sliderStep","sliderMin","sliderMax"],"mappings":"kEAUO,MAAMA,EAAuB,CAAC,CAAE,IAAAC,EAAK,IAAAC,EAAK,aAAAC,EAAc,MAAAC,EAAO,SAAAC,KAAqC,CACzG,KAAM,CAAE,WAAAC,EAAY,SAAAC,EAAU,MAAAC,GAAUC,EAAe,CAAE,IAAAR,EAAK,IAAAC,EAAK,WAAYC,EAAc,EAEvFO,EAAcH,EAASH,CAAK,EAE5BO,EAAa,IAEbC,EAAYL,EAASN,CAAG,EACxBY,EAAYN,EAASL,CAAG,EAoB9B,MAAO,CACL,mBAR0BE,GAAmB,CACxCA,GAGDC,GAAUA,EAASG,EAAMF,EAAWF,CAAK,CAAC,CAAC,CACjD,EAIE,WApBiB,IAAM,CAClBA,IAEDA,EAAQF,GACNG,KAAmBH,CAAG,EAExBE,EAAQH,GACNI,KAAmBJ,CAAG,EAE9B,EAYE,SAAAM,EACA,WAAAD,EACA,YAAAI,EACA,WAAAC,EACA,UAAAC,EACA,UAAAC,CAAA,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as g,Fragment as h,jsx as o}from"react/jsx-runtime";import{forwardRef as j}from"react";import{useUploader as v}from"./model/hooks/useUploader.js";import{
|
|
1
|
+
import{jsxs as g,Fragment as h,jsx as o}from"react/jsx-runtime";import{forwardRef as j}from"react";import{useUploader as v}from"./model/hooks/useUploader.js";import{UploaderInput as w}from"./ui/UploaderInput.js";import{cn as z}from"../../../../utils/cn.js";import{UploaderFiles as I}from"./ui/UploaderFiles.js";import{defaultDropzoneOptions as S}from"./model/helpers.js";const k=j(({classes:t,dropzoneOptions:s=S,name:i,value:r,disabled:m,invalid:p,onChange:l,externalHandlers:e,dataLayers:a,...d},f)=>{const{filesStatus:n,removeFile:c,dropzoneState:u}=v({controlledFiles:r,dropzoneOptions:s,onChange:l,externalHandlers:e}),{root:F,input:U,files:x}=t||{};return g(h,{children:[o("div",{className:z("relative mb-3 w-[476px]",F),children:o(w,{...d,ref:f,name:i,classes:U,disabled:m,invalid:p,dropzoneState:u,externalHandlers:e,"data-layer-id":a?.targetId})}),o(I,{files:r,removeFile:c,classes:x,filesStatus:n})]})});export{k as UploaderBase};
|
|
2
2
|
//# sourceMappingURL=UploaderBase.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as i,jsx as t}from"react/jsx-runtime";import{forwardRef as m}from"react";import{
|
|
1
|
+
import{jsxs as i,jsx as t}from"react/jsx-runtime";import{forwardRef as m}from"react";import{Icon as b}from"../../../../icon/Icon.js";import{cn as e}from"../../../../../utils/cn.js";const x=m(({dropzoneState:o,classes:r,disabled:l,invalid:n,name:a,externalHandlers:d,...p},c)=>{const s=o.getRootProps();return i("div",{className:e("flex h-[64px] w-[476px] rounded-sm","active:border-1 active:border-solid active:border-primary-hover active:bg-color-primary-tr-pressed","focus-visible:border-1 focus-visible:border-solid focus-visible:border-primary-hover focus-visible:bg-color-primary-tr-hover focus-visible:outline-none","hover:border-1 hover:border-solid hover:border-primary-hover hover:bg-color-primary-tr-hover","border-[1.5px] border-dashed border-blue-grey-700",r?.root,{"bg-color-primary-light-default opacity-50":l},{"border-negative":n}),ref:c,...s,children:[i("div",{className:e("flex h-full w-full items-center justify-center gap-2",r?.textContainer),children:[t(b,{name:"files/upload",className:e("text-icon-primary-default",r?.icon)}),i("p",{className:e("desk-body-regular-l select-none text-icon-primary-default",r?.textContent),children:["Выберите файл",t("span",{className:e("text-icon-blue-grey-600",r?.textContentSpan),children:" или перетащите сюда"})]})]}),t("input",{...p,...o.getInputProps(),onClick:d?.onClick,name:a,ref:o.inputRef,disabled:l,className:e(r?.input),"data-id":"uploader"})]})});export{x as UploaderInput};
|
|
2
2
|
//# sourceMappingURL=UploaderInput.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Accordion as t}from"./accordion/Accordion.js";import{ArrowNavigationButton as a}from"./carouselBase/ui/ArrowNavigationButton.js";import{AutocompleteBase as p}from"./formElements/uncontrolled/autocomplete/Autocomplete.js";import{AutocompleteControl as x}from"./formElements/controlled/autocomplete/AutocompleteControl.js";import{Badge as i}from"./badge/Badge.js";import{Button as d}from"./button/Button.js";import{ButtonIcon as C}from"./buttonIcon/ButtonIcon.js";import{Calendar as b}from"./calendar/Calendar.js";import{Carousel as c}from"./carousel/Carousel.js";import{CarouselBase as B}from"./carouselBase/CarouselBase.js";import{CarouselContent as D}from"./carouselBase/ui/CarouselContent.js";import{CarouselSlide as g}from"./carouselBase/ui/CarouselSlide.js";import{CheckboxBase as v}from"./formElements/uncontrolled/checkbox/Checkbox.js";import{CheckboxControl as R}from"./formElements/controlled/checkbox/CheckboxControl.js";import{Chips as h}from"./chips/Chips.js";import{Combobox as L}from"./formElements/uncontrolled/combobox/combobox.js";import{ComboboxControl as N}from"./formElements/controlled/combobox/ComboboxControl.js";import{Confirmable as H}from"./confirmable/Confirmable.js";import{Controlled as G}from"./formElements/controlled/index.js";import{CustomLink as U}from"./customLink/CustomLink.js";import{DATE_VISIBLE_PATTERN as V,defaultClassNames as _,formatDateToLocaleString as K,formatDateToMonthString as Y,formatDateToYearString as j}from"./calendar/model/utils.js";import{DadataAddress as J}from"./formElements/controlled/dadata/address/DadataAddress.js";import{DadataAuto as W}from"./formElements/controlled/dadata/auto/DadataAuto.js";import{DadataCountry as Z}from"./formElements/controlled/dadata/country/DadataCountry.js";import{DadataFio as oo}from"./formElements/controlled/dadata/fio/DadataFio.js";import{DadataOrganization as to}from"./formElements/controlled/dadata/party/DadataOrganization.js";import{DataTable as ao}from"./table/Table.js";import{DataTableColumnHeader as po}from"./table/ui/dataTableColumnHeader/DataTableColumnHeader.js";import{DayPickerBase as xo}from"./formElements/uncontrolled/dayPicker/DayPicker.js";import{DayPickerControl as io}from"./formElements/controlled/dayPickerControl/dayPickerControl.js";import{Dialog as so}from"./dialog/Dialog.js";import{Divider as uo}from"./divider/Divider.js";import{DotsNavigations as To}from"./carouselBase/ui/DotsNavigations.js";import{DropdownItem as Io}from"./dropdownList/ui/dropdownItem/DropdownItem.js";import{DropdownList as So}from"./dropdownList/DropdownList.js";import{EditableCell as Po}from"./table/ui/editableCell/EditableCell.js";import{EditorControl as yo}from"./formElements/controlled/editor/EditorControl.js";import{EmptyList as ko}from"./dropdownList/ui/Empty.js";import{FloatButton as Ao}from"./floatButton/FloatButton.js";import{Heading as wo}from"./heading/Heading.js";import{Hint as Eo}from"./hint/Hint.js";import{Icon as Fo}from"./icon/Icon.js";import{InputBase as Mo}from"./formElements/uncontrolled/input/Input.js";import{InputControl as Oo}from"./formElements/controlled/input/InputControl.js";import{InputCurrencyBase as zo}from"./formElements/uncontrolled/inputCurrency/InputCurrency.js";import{InputCurrencyControl as _o}from"./formElements/controlled/inputCurrency/InputCurrencyControl.js";import{InputOtpBase as Yo}from"./formElements/uncontrolled/inputOtp/InputOtpBase.js";import{InputOtpControl as qo}from"./formElements/controlled/inputOtp/InputOtpControl.js";import{KeyboardShortcuts as Qo}from"./keyboardShortcuts/KeyboardShortcuts.js";import{Loader as Xo}from"./loader/Loader.js";import{MaskInput as $o}from"./formElements/uncontrolled/maskInput/MaskInput.js";import{MaskInputControl as rr}from"./formElements/controlled/input/MaskInputControl.js";import{Modal as er}from"./modal/Modal.js";import{Notification as mr}from"./notification/Notification.js";import{NotificationProvider as fr}from"./providers/NotificationProvider.js";import{Pagination as nr}from"./pagination/Pagination.js";import{PhoneView as lr}from"./phoneView/PhoneView.js";import{Popover as sr}from"./popover/Popover.js";import{Portal as ur}from"./portal/Portal.js";import{ProgressBar as Tr}from"./progressBar/ProgressBar.js";import{RadioGroupBase as Ir}from"./formElements/uncontrolled/radio/RadioGroup.js";import{RadioGroupCardControl as Sr}from"./formElements/controlled/radio/RadioGroupCardControl.js";import{RadioGroupControl as Pr}from"./formElements/controlled/radio/RadioGroupControl.js";import{RadioGroupTabControl as yr}from"./formElements/controlled/radio/RadioGroupTabControl.js";import{RadioItem as kr}from"./formElements/uncontrolled/radio/ui/RadioItem.js";import{RadioItemCard as Ar}from"./formElements/uncontrolled/radio/ui/RadioItemCard.js";import{RadioItemTab as wr}from"./formElements/uncontrolled/radio/ui/RadioItemTab.js";import{ResponsiveContainer as Er}from"./responsiveContainer/ResponsiveContainer.js";import{SLIDE_VARIANT as Fr}from"./carousel/model/constant.js";import{Skeleton as Mr}from"./skeleton/Skeleton.js";import{SlideFullScreen as Or}from"./carouselBase/ui/slideVariants/SlideFullScreen.js";import{SlideOnlyImage as zr}from"./carouselBase/ui/slideVariants/SlideOnlyImage.js";import{SlideProductCard as _r}from"./carouselBase/ui/slideVariants/SlideProductCard.js";import{SliderBase as Yr}from"./formElements/uncontrolled/slider/SliderBase.js";import{SliderControl as qr}from"./formElements/controlled/slider/SliderControl.js";import{Slot as Qr}from"./slot/Slot.js";import{SwitchBase as Xr}from"./formElements/uncontrolled/switch/Switch.js";import{SwitchControl as $r}from"./formElements/controlled/switch/SwitchControl.js";import{Table as rt,TableBody as tt,TableCaption as et,TableCell as at,TableFooter as mt,TableHead as pt,TableHeader as ft,TableRow as xt}from"./table/ui/primitives/Primitives.js";import{TablePagination as it}from"./table/TablePagination.js";import{TableUtils as dt}from"./table/model/TableUtils.js";import{TabsSwitcher as Ct}from"./tabSwitcher/TabsSwitcher.js";import{TextareaBase as bt}from"./formElements/uncontrolled/textarea/Textarea.js";import{TextareaControl as ct}from"./formElements/controlled/textarea/TextareaControl.js";import{Uncontrolled as Bt}from"./formElements/uncontrolled/index.js";import{UploaderBase as Dt}from"./formElements/uncontrolled/uploader/UploaderBase.js";import{UploaderControl as gt}from"./formElements/controlled/uploader/UploaderControl.js";import{allowedIcons as vt}from"./icon/allowedIcons.js";import{brandLogos as Rt}from"./brandLogos/BrandLogos.js";import{buttonPrimitiveIntent as ht,buttonPrimitiveSize as wt,buttonPrimitiveTextFormat as Lt,buttonPrimitiveType as Et}from"./button/model/helpers.js";import{bytesToMegabytes as Ft,megabytesToBytes as Ht}from"./formElements/uncontrolled/uploader/model/helpers.js";import{linkPrimitiveIconIntent as Gt,linkPrimitiveIntent as Ot,linkPrimitiveSize as Ut}from"./customLink/model/helpers.js";import{usePagination as Vt}from"./pagination/hooks/usePagination.js";export{t as Accordion,a as ArrowNavigationButton,p as AutocompleteBase,x as AutocompleteControl,i as Badge,d as Button,C as ButtonIcon,b as Calendar,c as Carousel,B as CarouselBase,D as CarouselContent,g as CarouselSlide,v as CheckboxBase,R as CheckboxControl,h as Chips,L as Combobox,N as ComboboxControl,H as Confirmable,G as Controlled,U as CustomLink,V as DATE_VISIBLE_PATTERN,J as DadataAddress,W as DadataAuto,Z as DadataCountry,oo as DadataFio,to as DadataOrganization,ao as DataTable,po as DataTableColumnHeader,xo as DayPickerBase,io as DayPickerControl,so as Dialog,uo as Divider,To as DotsNavigations,Io as DropdownItem,So as DropdownList,Po as EditableCell,yo as EditorControl,ko as EmptyList,Ao as FloatButton,wo as Heading,Eo as Hint,Fo as Icon,Mo as InputBase,Oo as InputControl,zo as InputCurrencyBase,_o as InputCurrencyControl,Yo as InputOtpBase,qo as InputOtpControl,Qo as KeyboardShortcuts,Xo as Loader,$o as MaskInput,rr as MaskInputControl,er as Modal,mr as Notification,fr as NotificationProvider,nr as Pagination,lr as PhoneView,sr as Popover,ur as Portal,Tr as ProgressBar,Ir as RadioGroupBase,Sr as RadioGroupCardControl,Pr as RadioGroupControl,yr as RadioGroupTabControl,kr as RadioItem,Ar as RadioItemCard,wr as RadioItemTab,Er as ResponsiveContainer,Fr as SLIDE_VARIANT,Mr as Skeleton,Or as SlideFullScreen,zr as SlideOnlyImage,_r as SlideProductCard,Yr as SliderBase,qr as SliderControl,Qr as Slot,Xr as SwitchBase,$r as SwitchControl,rt as Table,tt as TableBody,et as TableCaption,at as TableCell,mt as TableFooter,pt as TableHead,ft as TableHeader,it as TablePagination,xt as TableRow,dt as TableUtils,Ct as TabsSwitcher,bt as TextareaBase,ct as TextareaControl,Bt as Uncontrolled,Dt as UploaderBase,gt as UploaderControl,vt as allowedIcons,Rt as brandLogos,ht as buttonPrimitiveIntent,wt as buttonPrimitiveSize,Lt as buttonPrimitiveTextFormat,Et as buttonPrimitiveType,Ft as bytesToMegabytes,_ as defaultClassNames,K as formatDateToLocaleString,Y as formatDateToMonthString,j as formatDateToYearString,Gt as linkPrimitiveIconIntent,Ot as linkPrimitiveIntent,Ut as linkPrimitiveSize,Ht as megabytesToBytes,Vt as usePagination};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as l,jsx as r}from"react/jsx-runtime";import{Heading as i}from"../../heading/Heading.js";import{cn as e}from"../../../utils/cn.js";import{Icon as s}from"../../icon/Icon.js";const b=({title:n,closeModal:t,classes:o})=>l("div",{className:e("flex items-start justify-between gap-4",o?.header),children:[n&&r(i,{as:"h3",className:e("flex-1 text-color-dark",o?.title),children:n}),r("span",{onClick:t,onKeyDown:a=>{a.key==="Enter"&&t()},role:"button","aria-label":"Close modal",tabIndex:0,className:e("ml-auto rounded-sm p-1 outline-none transition-colors hover:bg-color-blue-grey-200 focus-visible:bg-color-blue-grey-200"),children:r(s,{name:"general/close",className:e("ml-auto size-6 cursor-pointer text-icon-dark-hover outline-0",o?.icon)})})]});export{b as ModalHeader};
|
|
2
2
|
//# sourceMappingURL=ModalHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalHeader.js","sources":["../../../../../../lib/shared/ui/modal/ui/ModalHeader.tsx"],"sourcesContent":["import type { ModalProps } from '../Modal'\nimport { Heading, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type TModalHeaderClasses = {\n header?: string\n title?: string\n icon?: string\n}\n\nexport interface IModalHeaderProps extends Pick<ModalProps, 'closeModal' | 'title'> {\n classes?: TModalHeaderClasses\n}\n\nexport const ModalHeader = ({ title, closeModal, classes }: IModalHeaderProps) => {\n return (\n <div className={cn('flex items-start justify-between gap-4', classes?.header)}>\n {title && (\n <Heading as='h3' className={cn('flex-1 text-color-dark', classes?.title)}>\n {title}\n </Heading>\n )}\n <span\n onClick={closeModal}\n onKeyDown={(event) => {\n if (event.key === 'Enter') closeModal()\n }}\n role='button'\n aria-label='Close modal'\n tabIndex={0}\n className={cn(\n 'rounded-sm p-
|
|
1
|
+
{"version":3,"file":"ModalHeader.js","sources":["../../../../../../lib/shared/ui/modal/ui/ModalHeader.tsx"],"sourcesContent":["import type { ModalProps } from '../Modal'\nimport { Heading, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type TModalHeaderClasses = {\n header?: string\n title?: string\n icon?: string\n}\n\nexport interface IModalHeaderProps extends Pick<ModalProps, 'closeModal' | 'title'> {\n classes?: TModalHeaderClasses\n}\n\nexport const ModalHeader = ({ title, closeModal, classes }: IModalHeaderProps) => {\n return (\n <div className={cn('flex items-start justify-between gap-4', classes?.header)}>\n {title && (\n <Heading as='h3' className={cn('flex-1 text-color-dark', classes?.title)}>\n {title}\n </Heading>\n )}\n <span\n onClick={closeModal}\n onKeyDown={(event) => {\n if (event.key === 'Enter') closeModal()\n }}\n role='button'\n aria-label='Close modal'\n tabIndex={0}\n className={cn(\n 'ml-auto rounded-sm p-1 outline-none transition-colors hover:bg-color-blue-grey-200 focus-visible:bg-color-blue-grey-200'\n )}\n >\n <Icon\n name='general/close'\n className={cn('ml-auto size-6 cursor-pointer text-icon-dark-hover outline-0', classes?.icon)}\n />\n </span>\n </div>\n )\n}\n"],"names":["ModalHeader","title","closeModal","classes","cn","jsx","Heading","event","Icon"],"mappings":"yLAcO,MAAMA,EAAc,CAAC,CAAE,MAAAC,EAAO,WAAAC,EAAY,QAAAC,OAE5C,MAAA,CAAI,UAAWC,EAAG,yCAA0CD,GAAS,MAAM,EACzE,SAAA,CAAAF,GACCI,EAACC,EAAA,CAAQ,GAAG,KAAK,UAAWF,EAAG,yBAA0BD,GAAS,KAAK,EACpE,SAAAF,CAAA,CACH,EAEFI,EAAC,OAAA,CACC,QAASH,EACT,UAAYK,GAAU,CAChBA,EAAM,MAAQ,SAASL,EAAA,CAC7B,EACA,KAAK,SACL,aAAW,cACX,SAAU,EACV,UAAWE,EACT,yHAAA,EAGF,SAAAC,EAACG,EAAA,CACC,KAAK,gBACL,UAAWJ,EAAG,+DAAgED,GAAS,IAAI,CAAA,CAAA,CAC7F,CAAA,CACF,EACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as C,jsx as i}from"react/jsx-runtime";import{
|
|
1
|
+
import{jsxs as C,jsx as i}from"react/jsx-runtime";import{Button as h}from"../button/Button.js";import{Icon as u}from"../icon/Icon.js";import{cn as c}from"../../utils/cn.js";const R=({page:r=1,between:t=3,totalPages:o,changePage:k,next:N=!0,ellipsis:n=0,classes:d,...z})=>{t=t<1?1:t,r=Math.min(Math.max(r,1),o),n=Math.min(Math.max(n,0),t-2);const b=Array.from({length:o},(m,y)=>y),x=t*2+1;let f;return o<x?f=b:r-1<=t?f=b.slice(0,x-(n>0?n+1:0)):r+t>=o?f=b.slice(o-x+(n>0?n+1:0),o):f=b.slice(r-1-(t-(n>0?n+1:0)),r+(t-(n>0?n+1:0))),C("div",{...z,className:c("flex",d?.root),children:[N&&i(h,{size:"sm",intent:"ghost",className:c("mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled",d?.button),disabled:r<=1,onClick:()=>r>1&&k(r-2),children:i(u,{name:"arrows/arrowRight",className:"rotate-180"})}),o>x&&n>0&&b.slice(0,r-1<=t?0:n).map(m=>i(h,{size:"sm",intent:"ghost",className:c("mob-body-regular-l w-[40px] p-0 text-color-dark",d?.button),onClick:()=>m!==r-1&&k(m),children:m+1},m)),o>x&&n>0&&r-1>t&&i(h,{size:"sm",intent:"ghost",className:c("mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark",d?.ellipsis),children:"..."}),f.map(m=>{const y=m===r-1;return i(h,{size:"sm",className:c("mob-body-regular-l w-[40px] p-0 text-color-dark",{[`text-color-primary-default ${d?.active}`]:y},d?.button),intent:y?"secondary":"ghost",onClick:()=>!y&&k(m),children:m+1},m)}),o>x&&n>0&&r<o-t&&i(h,{size:"sm",intent:"ghost",className:c("mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark",d?.ellipsis),children:"..."}),o>x&&n>0&&b.slice(r>=o-t?o:o-n,o).map(m=>i(h,{size:"sm",className:c("mob-body-regular-l w-[40px] p-0 text-color-dark",d?.button),intent:"ghost",onClick:()=>m!==r-1&&k(m),children:m+1},m)),N&&i(h,{size:"sm",intent:"ghost",className:c("mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled",d?.button),disabled:r>=o,onClick:()=>r<o&&k(r),children:i(u,{name:"arrows/arrowRight"})})]})};export{R as Pagination};
|
|
2
2
|
//# sourceMappingURL=Pagination.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import*as m from"@radix-ui/react-tabs";import{
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import*as m from"@radix-ui/react-tabs";import{Accordion as i}from"../../accordion/Accordion.js";import{cn as l}from"../../../utils/cn.js";const u=({classes:r,contents:a})=>e("div",{className:l("flex flex-col gap-4",r?.contentsWrapper),children:a?.map(({id:t,body:o,accordion:n})=>n&&n?.title?e(m.Content,{value:t,className:l("py-8",r?.content),children:e(i,{label:n?.title,children:o})},t):e(m.Content,{value:t,className:l("py-8",r?.content),children:o},t))});export{u as TabContent};
|
|
2
2
|
//# sourceMappingURL=TabContent.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as s,jsx as l}from"react/jsx-runtime";import{flexRender as m}from"@tanstack/react-table";import{TablePagination as C}from"./TablePagination.js";import{
|
|
1
|
+
import{jsxs as s,jsx as l}from"react/jsx-runtime";import{flexRender as m}from"@tanstack/react-table";import{TablePagination as C}from"./TablePagination.js";import{Table as y,TableHeader as N,TableRow as g,TableHead as P,TableBody as T,TableCell as u}from"./ui/primitives/Primitives.js";import{cn as n}from"../../utils/cn.js";const I=({mode:a,enableHeaders:f,table:e,classes:o,pagination:i,empty:h="Ничего не найдено"})=>{const b=i!==!1&&e.getPageCount()>1,c={pageCount:e.getPageCount(),rowsCount:e.getCoreRowModel().rows.length,pageSize:e.getState().pagination.pageSize,page:e.getState().pagination.pageIndex+1,onPageIndexChange:e.setPageIndex,classes:o?.pagination};return s("div",{className:n("flex w-full flex-col gap-y-4",o?.root),children:[s(y,{className:n("w-full",o?.table),children:[f&&l(N,{className:"px-2",children:e.getHeaderGroups().map(r=>l(g,{className:n("w-full",{"border-b border-b-[rgba(234,237,241,1)]":a==="solid"},o?.tableHeader),children:r.headers.map(t=>l(P,{className:n("py-3",{"px-2":a==="odd"},o?.tableHead),children:t.isPlaceholder?null:m(t.column.columnDef.header,t.getContext())},t.id))},r.id))}),l(T,{children:e.getRowModel().rows.length?e.getRowModel().rows.map((r,t)=>l(g,{className:n("w-full",{"[&:not(:last-child)]:border-b [&:not(:last-child)]:border-b-[rgba(234,237,241,1)]":a==="solid","[&:nth-child(odd)]:bg-color-primary-light-default":a==="odd"},o?.tableRow),children:r.getVisibleCells().map((d,x)=>{const p=d.getContext(),w=p.column.getSize();return l(u,{style:{width:w},className:n("py-3",{"px-3":a==="odd","font-medium":x!==0},o?.tableCell),children:m(d.column.columnDef.cell,{...p,rowIndex:t})},d.id)})},r.id)):l(g,{children:l(u,{className:"py-4 text-center",colSpan:e.getAllColumns().length,children:h})})})]}),typeof i=="function"?i(c):b?l(C,{...c}):null]})};export{I as Desktop};
|
|
2
2
|
//# sourceMappingURL=Desktop.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DataTable as l}from"./Table.js";import{TablePagination as r}from"./TablePagination.js";import{
|
|
1
|
+
import{DataTable as l}from"./Table.js";import{TablePagination as r}from"./TablePagination.js";import{DataTableColumnHeader as t}from"./ui/dataTableColumnHeader/DataTableColumnHeader.js";import{EditableCell as m}from"./ui/editableCell/EditableCell.js";import{Table as f,TableBody as x,TableCaption as d,TableCell as i,TableFooter as n,TableHead as C,TableHeader as H,TableRow as D}from"./ui/primitives/Primitives.js";import{TableUtils as s}from"./model/TableUtils.js";export{l as DataTable,t as DataTableColumnHeader,m as EditableCell,f as Table,x as TableBody,d as TableCaption,i as TableCell,n as TableFooter,C as TableHead,H as TableHeader,r as TablePagination,D as TableRow,s as TableUtils};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Table as
|
|
1
|
+
import{DataTableColumnHeader as l}from"./dataTableColumnHeader/DataTableColumnHeader.js";import{EditableCell as b}from"./editableCell/EditableCell.js";import{Table as T,TableBody as t,TableCaption as d,TableCell as m,TableFooter as p,TableHead as C,TableHeader as f,TableRow as x}from"./primitives/Primitives.js";export{l as DataTableColumnHeader,b as EditableCell,T as Table,t as TableBody,d as TableCaption,m as TableCell,p as TableFooter,C as TableHead,f as TableHeader,x as TableRow};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createPhoneNumber as e}from"./createPhoneNumber.js";import{scrollToElement as m}from"./scrollToElement.js";import{cn as a}from"./cn.js";import{isClient as p}from"./isClient.js";import{capitalize as s}from"./capitalize.js";import{mergeRefs as n}from"./mergeRefs.js";import{TypeGuards as d}from"./typeGuards.js";import{getUuid as u}from"./uuid.js";import{localStorageActions as A}from"./localStorageActions.js";import{assertUnreachable as h}from"./assertUnreachable.js";import{ErrorBoundary as y}from"./ErrorBoundary.js";import{sessionStorageActions as E}from"./sessionStorage.js";import{extractTextFromHtml as H}from"./extractTextFromHtml.js";import{VariableContextHolder as R}from"./variableHolder/variableContextHolder.js";import{
|
|
1
|
+
import{createPhoneNumber as e}from"./createPhoneNumber.js";import{scrollToElement as m}from"./scrollToElement.js";import{cn as a}from"./cn.js";import{isClient as p}from"./isClient.js";import{capitalize as s}from"./capitalize.js";import{mergeRefs as n}from"./mergeRefs.js";import{TypeGuards as d}from"./typeGuards.js";import{getUuid as u}from"./uuid.js";import{localStorageActions as A}from"./localStorageActions.js";import{assertUnreachable as h}from"./assertUnreachable.js";import{ErrorBoundary as y}from"./ErrorBoundary.js";import{sessionStorageActions as E}from"./sessionStorage.js";import{extractTextFromHtml as H}from"./extractTextFromHtml.js";import{VariableContextHolder as R}from"./variableHolder/variableContextHolder.js";import{VariablesFork as U}from"./variablesFork/VariablesFork.js";import{defaultAllowedPrefixes as k,variableResolver as w}from"./variables/variableResolver.js";export{y as ErrorBoundary,d as TypeGuards,R as VariableContextHolder,U as VariablesFork,h as assertUnreachable,s as capitalize,a as cn,e as createPhoneNumber,k as defaultAllowedPrefixes,H as extractTextFromHtml,u as getUuid,p as isClient,A as localStorageActions,n as mergeRefs,m as scrollToElement,E as sessionStorageActions,w as variableResolver};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variableContextHolder.js","sources":["../../../../../lib/shared/utils/variableHolder/variableContextHolder.ts"],"sourcesContent":["import { localStorageActions } from '../localStorageActions'\n\nexport interface Variable<Key = string, Value = string> {\n _id: string\n key: Key\n value: Value\n createdAt: string\n updatedAt: string\n description: string\n}\n\nexport type VariableEntry<Key = string, Value = string> = [Key, Value]\n\nexport interface IVariableContextHolder<Key, Value> {\n /**\n * список переменных, находящихся в имплементации\n */\n variables: Variable<Key, Value>[]\n /**\n * метод для добавления переменной\n * @param variable\n */\n append: (variable: Variable<Key, Value>) => void\n /**\n * метод для удаления переменной\n * @param key\n */\n remove: (key: Key) => void\n /**\n * метод для проверки наличия переменной по ключу\n * @param key\n */\n has: (key: Key) => boolean\n /**\n * метод для замены всех переменных\n * @param variables\n */\n replace: (variables: Variable<Key, Value>[]) => void\n /**\n * метод для очистки переменных\n */\n clear: () => void\n /**\n * метод для обновления переменной, по её идентификатору\n * @param id\n * @param variable\n */\n update: (id: string, variable: Variable<Key, Value>) => void\n /**\n * получение вхождений переменных по ключам\n * @param keys\n * @returns {VariableEntry<Key, Value>[]} entries `Array<[Key, Value]>`\n */\n entriesOf: (...keys: Key[]) => VariableEntry<Key, Value>[]\n /**\n * метод для подписки на изменения переменных\n * @param listener\n * @returns функция для отписки\n */\n observe: (listener: (variables: Variable<Key, Value>[]) => void) => () => void\n /**\n * получение переменной по ключу\n * @param key\n * @returns `Variable<Key, Value>` если переменная присутствует, `undefined` если переменной не существует\n */\n get: (key: Key) => Variable<Key, Value> | undefined\n}\n\nexport interface VariableStore {\n setItem: <T>(key: string, value: T) => void\n getItem: <T>(key: string) => T | null\n clearItems: (...keys: string[]) => void\n}\n\nclass InMemoryVariableStore implements VariableStore {\n private _store = new Map<string, unknown>()\n\n constructor() {}\n\n clearItems(...keys: string[]): void {\n for (const key of keys) {\n this._store.delete(key)\n }\n }\n\n getItem<T>(key: string): T | null {\n return (this._store.get(key) as T) ?? null\n }\n\n setItem<T>(key: string, value: T): void {\n this._store.set(key, value)\n }\n}\n\n/**\n * Класс для управления переменными.\n * Присутствует возможность использования в среде исполнения NodeJS, при этом будет использоваться in-memory хранилище переменных, что может потреблять дополнительную память приложения\n *\n * @example Базовое использование\n * ```ts\n * // используем статичный метод класса для получения инстанса\n * const holder = VariableContextHolder.getInstance('VARIABLE_STORE')\n *\n * // эмулируем создание переменной\n * const variable: Variable = {\n * _id: Math.random().toString(36).substring(2),\n * // ключ должен быть обёрнут в шаблон переменной\n * // чтобы это сделать, используем статичный метод\n * key: VariableContextHolder.wrap('variable_key'),\n * value: 'variable_value',\n * createdAt: new Date().toISOString(),\n * updatedAt: new Date().toISOString(),\n * description: ''\n * }\n *\n * holder.append(variable)\n *\n * holder.variables.forEach((v) => {\n * // рендерим переменные как в соответствии с требованиями\n * })\n * ```\n *\n * @example Использование с react\n * ```tsx\n * const Component = () => {\n * // создадим ref с экземпляром класса (это нужно чтобы не изменять ссылку при ре-рендере)\n * const holder = useRef(VariableContextHolder.getInstance('VARIABLE_STORE'))\n * // подключаем и подписываемся на мутацию переменных\n * const variables = useSyncExternalStore(holder.current.observe, () => holder.current.variables)\n *\n * return (\n * <div>\n * {variables.map((variable) => (\n * // рендерим переменные как в соответствии с требованиями\n * ))}\n * </div>\n * )\n * }\n * ```\n *\n * @example Синхронизация с сервером\n * ```ts\n * const holder = VariableContextHolder.getInstance('VARIABLE_STORE')\n *\n * // загружаем переменные с сервера\n * fetch('https://backend.url/variables')\n * .then((response) => response.json())\n * .then((data) => holder.replace(data))\n * ```\n *\n * @example Обход строки для замены переменных на их значения\n * ```ts\n * const holder = VariableContextHolder.getInstance('VARIABLE_STORE')\n *\n * const transformVariable = (value: string): string => {\n * let str = value\n * // находим все переменные в строке\n * let matches = VariableContextHolder.match(str)\n * // получаем вхождения по найденным переменным\n * let variables = holder.entriesOf(...(matches ?? []))\n *\n * // выполняем замену переменных до тех пор, пока в строке содержатся переменные\n * while (!TypeGuards.isArrayEmpty(variables)) {\n * variables.forEach(([key, value]) => {\n * // заменяем каждую переменную на её значение\n * str = str.replace(key, value)\n * })\n * // пробуем снова получить переменные в строке,\n * // так как переменная может содержать другую переменную\n * matches = VariableContextHolder.match(str)\n * variables = holder.entriesOf(...(matches ?? []))\n * }\n *\n * return str\n * }\n *\n * const stringWithVariables = 'Процентная ставка \\${percent}% годовых до \\${months} месяцев'\n * const processedString = transformVariable(stringWithVariables)\n * ```\n */\nexport class VariableContextHolder<Key extends string = string, Value = string> implements IVariableContextHolder<Key, Value> {\n private _variables: Variable<Key, Value>[] = []\n private _listeners = new Map<symbol, (variables: Variable<Key, Value>[]) => void>()\n private _nextListenerId: number = 0\n private _storeContext: VariableStore\n\n private static _VARIABLE_REGEX: RegExp = /\\$\\{([^}]+)}/g\n private static _VARIABLE_PATTERN: string = '${variable}'\n private static _instance = new Map<string, VariableContextHolder>()\n\n private constructor(private _store: string) {\n // create in-memory store if instance created out of browser\n if (typeof window === 'undefined') {\n this._storeContext = new InMemoryVariableStore()\n } else {\n this._storeContext = localStorageActions\n }\n\n this._variables = this._storeContext.getItem<Variable<Key, Value>[]>(this._store) ?? []\n }\n\n /**\n * метод для извлечения ключа переменной из шаблона\n * @param variable\n */\n public static unwrap(variable: string): string {\n return variable.replace(/\\$\\{|}/g, '')\n }\n\n /**\n * метод для оборачивания ключа переменной в шаблон\n * @param variable\n */\n public static wrap(variable: string): string {\n return this._VARIABLE_PATTERN.replace('variable', variable)\n }\n\n /**\n * метод для поиска переменных в строке\n * @param pattern\n * @returns `string[]` если переменные присутствуют в строке, иначе `null`\n */\n public static match(pattern: string): string[] | null {\n return pattern.match(this._VARIABLE_REGEX) as string[] | null\n }\n\n /**\n * метод для получения синглтон экземпляра класса по ключу хранилища\n * @param store\n * @returns экземпляр подключенный к in-memory хранилищу если код выполняется в NodeJS, `localStorage` если в браузере\n */\n public static getInstance(store: string): VariableContextHolder {\n const instance = VariableContextHolder._instance.get(store)\n\n if (!instance) {\n const holder = new VariableContextHolder(store)\n VariableContextHolder._instance.set(store, holder)\n\n return holder\n }\n\n return instance\n }\n\n get variables() {\n return this._variables\n }\n\n private collect() {\n this._storeContext.setItem(this._store, this._variables)\n this._listeners.forEach((listener) => listener(this._variables))\n\n return this._variables\n }\n\n get = (id: string) => {\n return this._variables.find((variable) => variable._id === id)\n }\n\n append = (variable: Variable<Key, Value>) => {\n this._variables.push(variable)\n this.collect()\n }\n\n clear = () => {\n this._variables = []\n this.collect()\n }\n\n entriesOf = (...keys: Key[]): VariableEntry<Key, Value>[] => {\n const entries: VariableEntry<Key, Value>[] = []\n\n for (const variable of this._variables) {\n if (keys.includes(variable.key)) entries.push([variable.key, variable.value])\n }\n\n return entries\n }\n\n remove = (key: Key) => {\n this._variables = this._variables.filter((v) => v.key !== key)\n this.collect()\n }\n\n replace = (variables: Variable<Key, Value>[]): Variable<Key, Value>[] => {\n this._variables = variables\n\n return this.collect()\n }\n\n update = (id: string, variable: Variable<Key, Value>): Variable<Key, Value>[] => {\n const updated = this._variables.map((v) => (v._id === id ? variable : v))\n\n return this.replace(updated)\n }\n\n observe = (listener: (variables: Variable<Key, Value>[]) => void): (() => void) => {\n const listenerId = Symbol(this._nextListenerId++)\n this._listeners.set(listenerId, listener)\n\n return () => {\n this._listeners.delete(listenerId)\n }\n }\n\n has(key: Key): boolean {\n return this._variables.some((variable) => variable.key === key)\n }\n}\n"],"names":["InMemoryVariableStore","keys","key","value","VariableContextHolder","_store","localStorageActions","variable","pattern","store","instance","holder","listener","id","entries","v","variables","updated","listenerId"],"mappings":"gEA0EA,MAAMA,CAA+C,CAC3C,WAAa,IAErB,aAAc,CAAC,CAEf,cAAcC,EAAsB,CAClC,UAAWC,KAAOD,EAChB,KAAK,OAAO,OAAOC,CAAG,CAE1B,CAEA,QAAWA,EAAuB,CAChC,OAAQ,KAAK,OAAO,IAAIA,CAAG,GAAW,IACxC,CAEA,QAAWA,EAAaC,EAAgB,CACtC,KAAK,OAAO,IAAID,EAAKC,CAAK,CAC5B,CACF,CAwFO,MAAMC,CAAiH,CAUpH,YAAoBC,EAAgB,CAAhB,KAAA,OAAAA,EAEtB,OAAO,OAAW,IACpB,KAAK,cAAgB,IAAIL,EAEzB,KAAK,cAAgBM,EAGvB,KAAK,WAAa,KAAK,cAAc,QAAgC,KAAK,MAAM,GAAK,CAAA,CACvF,CAlBQ,WAAqC,CAAA,EACrC,eAAiB,IACjB,gBAA0B,EAC1B,cAER,OAAe,gBAA0B,gBACzC,OAAe,kBAA4B,cAC3C,OAAe,UAAY,IAAI,IAiB/B,OAAc,OAAOC,EAA0B,CAC7C,OAAOA,EAAS,QAAQ,UAAW,EAAE,CACvC,CAMA,OAAc,KAAKA,EAA0B,CAC3C,OAAO,KAAK,kBAAkB,QAAQ,WAAYA,CAAQ,CAC5D,CAOA,OAAc,MAAMC,EAAkC,CACpD,OAAOA,EAAQ,MAAM,KAAK,eAAe,CAC3C,CAOA,OAAc,YAAYC,EAAsC,CAC9D,MAAMC,EAAWN,EAAsB,UAAU,IAAIK,CAAK,EAE1D,GAAI,CAACC,EAAU,CACb,MAAMC,EAAS,IAAIP,EAAsBK,CAAK,EAC9C,OAAAL,EAAsB,UAAU,IAAIK,EAAOE,CAAM,EAE1CA,CACT,CAEA,OAAOD,CACT,CAEA,IAAI,WAAY,CACd,OAAO,KAAK,UACd,CAEQ,SAAU,CAChB,YAAK,cAAc,QAAQ,KAAK,OAAQ,KAAK,UAAU,EACvD,KAAK,WAAW,QAASE,GAAaA,EAAS,KAAK,UAAU,CAAC,EAExD,KAAK,UACd,CAEA,IAAOC,GACE,KAAK,WAAW,KAAMN,GAAaA,EAAS,MAAQM,CAAE,EAG/D,OAAUN,GAAmC,CAC3C,KAAK,WAAW,KAAKA,CAAQ,EAC7B,KAAK,QAAA,CACP,EAEA,MAAQ,IAAM,CACZ,KAAK,WAAa,CAAA,EAClB,KAAK,QAAA,CACP,EAEA,UAAY,IAAIN,IAA6C,CAC3D,MAAMa,EAAuC,CAAA,EAE7C,UAAWP,KAAY,KAAK,WACtBN,EAAK,SAASM,EAAS,GAAG,GAAGO,EAAQ,KAAK,CAACP,EAAS,IAAKA,EAAS,KAAK,CAAC,EAG9E,OAAOO,CACT,EAEA,OAAUZ,GAAa,CACrB,KAAK,WAAa,KAAK,WAAW,OAAQa,GAAMA,EAAE,MAAQb,CAAG,EAC7D,KAAK,QAAA,CACP,EAEA,QAAWc,IACT,KAAK,WAAaA,EAEX,KAAK,QAAA,GAGd,OAAS,CAACH,EAAYN,IAA2D,CAC/E,MAAMU,EAAU,KAAK,WAAW,IAAKF,GAAOA,EAAE,MAAQF,EAAKN,EAAWQ,CAAE,EAExE,OAAO,KAAK,QAAQE,CAAO,CAC7B,EAEA,QAAWL,GAAwE,CACjF,MAAMM,EAAa,OAAO,KAAK,iBAAiB,EAChD,YAAK,WAAW,IAAIA,EAAYN,CAAQ,EAEjC,IAAM,CACX,KAAK,WAAW,OAAOM,CAAU,CACnC,CACF,EAEA,IAAIhB,EAAmB,CACrB,OAAO,KAAK,WAAW,KAAMK,GAAaA,EAAS,MAAQL,CAAG,CAChE,CACF"}
|
|
1
|
+
{"version":3,"file":"variableContextHolder.js","sources":["../../../../../lib/shared/utils/variableHolder/variableContextHolder.ts"],"sourcesContent":["import { localStorageActions } from '../localStorageActions'\n\nexport interface Variable<Key = string, Value = string> {\n _id: string\n key: Key\n value: Value\n createdAt: string\n updatedAt: string\n description: string\n}\n\nexport type VariableEntry<Key = string, Value = string> = [Key, Value]\n\nexport interface IVariableContextHolder<Key, Value> {\n /**\n * список переменных, находящихся в имплементации\n */\n variables: Variable<Key, Value>[]\n /**\n * метод для добавления переменной\n * @param variable\n */\n append: (variable: Variable<Key, Value>) => void\n /**\n * метод для удаления переменной\n * @param key\n */\n remove: (key: Key) => void\n /**\n * метод для проверки наличия переменной по ключу\n * @param key\n */\n has: (key: Key) => boolean\n /**\n * метод для замены всех переменных\n * @param variables\n */\n replace: (variables: Variable<Key, Value>[]) => void\n /**\n * метод для очистки переменных\n */\n clear: () => void\n /**\n * метод для обновления переменной, по её идентификатору\n * @param id\n * @param variable\n */\n update: (id: string, variable: Variable<Key, Value>) => void\n /**\n * получение вхождений переменных по ключам\n * @param keys\n * @returns {VariableEntry<Key, Value>[]} entries `Array<[Key, Value]>`\n */\n entriesOf: (...keys: Key[]) => VariableEntry<Key, Value>[]\n /**\n * метод для подписки на изменения переменных\n * @param listener\n * @returns функция для отписки\n */\n observe: (listener: (variables: Variable<Key, Value>[]) => void) => () => void\n /**\n * получение переменной по ключу\n * @param key\n * @returns `Variable<Key, Value>` если переменная присутствует, `undefined` если переменной не существует\n */\n get: (key: Key) => Variable<Key, Value> | undefined\n}\n\nexport interface VariableStore {\n setItem: <T>(key: string, value: T) => void\n getItem: <T>(key: string) => T | null\n clearItems: (...keys: string[]) => void\n}\n\nclass InMemoryVariableStore implements VariableStore {\n private _store = new Map<string, unknown>()\n\n constructor() {}\n\n clearItems(...keys: string[]): void {\n for (const key of keys) {\n this._store.delete(key)\n }\n }\n\n getItem<T>(key: string): T | null {\n return (this._store.get(key) as T) ?? null\n }\n\n setItem<T>(key: string, value: T): void {\n this._store.set(key, value)\n }\n}\n\n/**\n * Класс для управления переменными.\n * Присутствует возможность использования в среде исполнения NodeJS, при этом будет использоваться in-memory хранилище переменных, что может потреблять дополнительную память приложения\n *\n * @example Базовое использование\n * ```ts\n * // используем статичный метод класса для получения инстанса\n * const holder = VariableContextHolder.getInstance('VARIABLE_STORE')\n *\n * // эмулируем создание переменной\n * const variable: Variable = {\n * _id: Math.random().toString(36).substring(2),\n * // ключ должен быть обёрнут в шаблон переменной\n * // чтобы это сделать, используем статичный метод\n * key: VariableContextHolder.wrap('variable_key'),\n * value: 'variable_value',\n * createdAt: new Date().toISOString(),\n * updatedAt: new Date().toISOString(),\n * description: ''\n * }\n *\n * holder.append(variable)\n *\n * holder.variables.forEach((v) => {\n * // рендерим переменные как в соответствии с требованиями\n * })\n * ```\n *\n * @example Использование с react\n * ```tsx\n * const Component = () => {\n * // создадим ref с экземпляром класса (это нужно чтобы не изменять ссылку при ре-рендере)\n * const holder = useRef(VariableContextHolder.getInstance('VARIABLE_STORE'))\n * // подключаем и подписываемся на мутацию переменных\n * const variables = useSyncExternalStore(holder.current.observe, () => holder.current.variables)\n *\n * return (\n * <div>\n * {variables.map((variable) => (\n * // рендерим переменные как в соответствии с требованиями\n * ))}\n * </div>\n * )\n * }\n * ```\n *\n * @example Синхронизация с сервером\n * ```ts\n * const holder = VariableContextHolder.getInstance('VARIABLE_STORE')\n *\n * // загружаем переменные с сервера\n * fetch('https://backend.url/variables')\n * .then((response) => response.json())\n * .then((data) => holder.replace(data))\n * ```\n *\n * @example Обход строки для замены переменных на их значения\n * ```ts\n * const holder = VariableContextHolder.getInstance('VARIABLE_STORE')\n *\n * const transformVariable = (value: string): string => {\n * let str = value\n * // находим все переменные в строке\n * let matches = VariableContextHolder.match(str)\n * // получаем вхождения по найденным переменным\n * let variables = holder.entriesOf(...(matches ?? []))\n *\n * // выполняем замену переменных до тех пор, пока в строке содержатся переменные\n * while (!TypeGuards.isArrayEmpty(variables)) {\n * variables.forEach(([key, value]) => {\n * // заменяем каждую переменную на её значение\n * str = str.replace(key, value)\n * })\n * // пробуем снова получить переменные в строке,\n * // так как переменная может содержать другую переменную\n * matches = VariableContextHolder.match(str)\n * variables = holder.entriesOf(...(matches ?? []))\n * }\n *\n * return str\n * }\n *\n * const stringWithVariables = 'Процентная ставка \\${percent}% годовых до \\${months} месяцев'\n * const processedString = transformVariable(stringWithVariables)\n * ```\n */\n/**\n * @deprecated dont use\n */\nexport class VariableContextHolder<Key extends string = string, Value = string> implements IVariableContextHolder<Key, Value> {\n private _variables: Variable<Key, Value>[] = []\n private _listeners = new Map<symbol, (variables: Variable<Key, Value>[]) => void>()\n private _nextListenerId: number = 0\n private _storeContext: VariableStore\n\n private static _VARIABLE_REGEX: RegExp = /\\$\\{([^}]+)}/g\n private static _VARIABLE_PATTERN: string = '${variable}'\n private static _instance = new Map<string, VariableContextHolder>()\n\n private constructor(private _store: string) {\n // create in-memory store if instance created out of browser\n if (typeof window === 'undefined') {\n this._storeContext = new InMemoryVariableStore()\n } else {\n this._storeContext = localStorageActions\n }\n\n this._variables = this._storeContext.getItem<Variable<Key, Value>[]>(this._store) ?? []\n }\n\n /**\n * метод для извлечения ключа переменной из шаблона\n * @param variable\n */\n public static unwrap(variable: string): string {\n return variable.replace(/\\$\\{|}/g, '')\n }\n\n /**\n * метод для оборачивания ключа переменной в шаблон\n * @param variable\n */\n public static wrap(variable: string): string {\n return this._VARIABLE_PATTERN.replace('variable', variable)\n }\n\n /**\n * метод для поиска переменных в строке\n * @param pattern\n * @returns `string[]` если переменные присутствуют в строке, иначе `null`\n */\n public static match(pattern: string): string[] | null {\n return pattern.match(this._VARIABLE_REGEX) as string[] | null\n }\n\n /**\n * метод для получения синглтон экземпляра класса по ключу хранилища\n * @param store\n * @returns экземпляр подключенный к in-memory хранилищу если код выполняется в NodeJS, `localStorage` если в браузере\n */\n public static getInstance(store: string): VariableContextHolder {\n const instance = VariableContextHolder._instance.get(store)\n\n if (!instance) {\n const holder = new VariableContextHolder(store)\n VariableContextHolder._instance.set(store, holder)\n\n return holder\n }\n\n return instance\n }\n\n get variables() {\n return this._variables\n }\n\n private collect() {\n this._storeContext.setItem(this._store, this._variables)\n this._listeners.forEach((listener) => listener(this._variables))\n\n return this._variables\n }\n\n get = (id: string) => {\n return this._variables.find((variable) => variable._id === id)\n }\n\n append = (variable: Variable<Key, Value>) => {\n this._variables.push(variable)\n this.collect()\n }\n\n clear = () => {\n this._variables = []\n this.collect()\n }\n\n entriesOf = (...keys: Key[]): VariableEntry<Key, Value>[] => {\n const entries: VariableEntry<Key, Value>[] = []\n\n for (const variable of this._variables) {\n if (keys.includes(variable.key)) entries.push([variable.key, variable.value])\n }\n\n return entries\n }\n\n remove = (key: Key) => {\n this._variables = this._variables.filter((v) => v.key !== key)\n this.collect()\n }\n\n replace = (variables: Variable<Key, Value>[]): Variable<Key, Value>[] => {\n this._variables = variables\n\n return this.collect()\n }\n\n update = (id: string, variable: Variable<Key, Value>): Variable<Key, Value>[] => {\n const updated = this._variables.map((v) => (v._id === id ? variable : v))\n\n return this.replace(updated)\n }\n\n observe = (listener: (variables: Variable<Key, Value>[]) => void): (() => void) => {\n const listenerId = Symbol(this._nextListenerId++)\n this._listeners.set(listenerId, listener)\n\n return () => {\n this._listeners.delete(listenerId)\n }\n }\n\n has(key: Key): boolean {\n return this._variables.some((variable) => variable.key === key)\n }\n}\n"],"names":["InMemoryVariableStore","keys","key","value","VariableContextHolder","_store","localStorageActions","variable","pattern","store","instance","holder","listener","id","entries","v","variables","updated","listenerId"],"mappings":"gEA0EA,MAAMA,CAA+C,CAC3C,WAAa,IAErB,aAAc,CAAC,CAEf,cAAcC,EAAsB,CAClC,UAAWC,KAAOD,EAChB,KAAK,OAAO,OAAOC,CAAG,CAE1B,CAEA,QAAWA,EAAuB,CAChC,OAAQ,KAAK,OAAO,IAAIA,CAAG,GAAW,IACxC,CAEA,QAAWA,EAAaC,EAAgB,CACtC,KAAK,OAAO,IAAID,EAAKC,CAAK,CAC5B,CACF,CA2FO,MAAMC,CAAiH,CAUpH,YAAoBC,EAAgB,CAAhB,KAAA,OAAAA,EAEtB,OAAO,OAAW,IACpB,KAAK,cAAgB,IAAIL,EAEzB,KAAK,cAAgBM,EAGvB,KAAK,WAAa,KAAK,cAAc,QAAgC,KAAK,MAAM,GAAK,CAAA,CACvF,CAlBQ,WAAqC,CAAA,EACrC,eAAiB,IACjB,gBAA0B,EAC1B,cAER,OAAe,gBAA0B,gBACzC,OAAe,kBAA4B,cAC3C,OAAe,UAAY,IAAI,IAiB/B,OAAc,OAAOC,EAA0B,CAC7C,OAAOA,EAAS,QAAQ,UAAW,EAAE,CACvC,CAMA,OAAc,KAAKA,EAA0B,CAC3C,OAAO,KAAK,kBAAkB,QAAQ,WAAYA,CAAQ,CAC5D,CAOA,OAAc,MAAMC,EAAkC,CACpD,OAAOA,EAAQ,MAAM,KAAK,eAAe,CAC3C,CAOA,OAAc,YAAYC,EAAsC,CAC9D,MAAMC,EAAWN,EAAsB,UAAU,IAAIK,CAAK,EAE1D,GAAI,CAACC,EAAU,CACb,MAAMC,EAAS,IAAIP,EAAsBK,CAAK,EAC9C,OAAAL,EAAsB,UAAU,IAAIK,EAAOE,CAAM,EAE1CA,CACT,CAEA,OAAOD,CACT,CAEA,IAAI,WAAY,CACd,OAAO,KAAK,UACd,CAEQ,SAAU,CAChB,YAAK,cAAc,QAAQ,KAAK,OAAQ,KAAK,UAAU,EACvD,KAAK,WAAW,QAASE,GAAaA,EAAS,KAAK,UAAU,CAAC,EAExD,KAAK,UACd,CAEA,IAAOC,GACE,KAAK,WAAW,KAAMN,GAAaA,EAAS,MAAQM,CAAE,EAG/D,OAAUN,GAAmC,CAC3C,KAAK,WAAW,KAAKA,CAAQ,EAC7B,KAAK,QAAA,CACP,EAEA,MAAQ,IAAM,CACZ,KAAK,WAAa,CAAA,EAClB,KAAK,QAAA,CACP,EAEA,UAAY,IAAIN,IAA6C,CAC3D,MAAMa,EAAuC,CAAA,EAE7C,UAAWP,KAAY,KAAK,WACtBN,EAAK,SAASM,EAAS,GAAG,GAAGO,EAAQ,KAAK,CAACP,EAAS,IAAKA,EAAS,KAAK,CAAC,EAG9E,OAAOO,CACT,EAEA,OAAUZ,GAAa,CACrB,KAAK,WAAa,KAAK,WAAW,OAAQa,GAAMA,EAAE,MAAQb,CAAG,EAC7D,KAAK,QAAA,CACP,EAEA,QAAWc,IACT,KAAK,WAAaA,EAEX,KAAK,QAAA,GAGd,OAAS,CAACH,EAAYN,IAA2D,CAC/E,MAAMU,EAAU,KAAK,WAAW,IAAKF,GAAOA,EAAE,MAAQF,EAAKN,EAAWQ,CAAE,EAExE,OAAO,KAAK,QAAQE,CAAO,CAC7B,EAEA,QAAWL,GAAwE,CACjF,MAAMM,EAAa,OAAO,KAAK,iBAAiB,EAChD,YAAK,WAAW,IAAIA,EAAYN,CAAQ,EAEjC,IAAM,CACX,KAAK,WAAW,OAAOM,CAAU,CACnC,CACF,EAEA,IAAIhB,EAAmB,CACrB,OAAO,KAAK,WAAW,KAAMK,GAAaA,EAAS,MAAQL,CAAG,CAChE,CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variableResolver.js","sources":["../../../../../lib/shared/utils/variables/variableResolver.ts"],"sourcesContent":["import { type AllowedVariablePrefix, type Resolved, type VariablePattern, type VariableType } from './types'\n\nexport const defaultAllowedPrefixes: AllowedVariablePrefix[] = ['$', '@', '#']\n\nexport const variableResolver = <Variable extends VariableType>() => {\n const patterns: VariablePattern[] = []\n const variables: Map<string, string> = new Map()\n\n const addPattern = (start: VariablePattern['start'], end: VariablePattern['end']) => {\n patterns.push({ start, end })\n return resolver\n }\n\n const addVariables = (vars: Variable[]) => {\n vars?.forEach(({ key, value }) => {\n variables.set(key, value)\n })\n return resolver\n }\n\n const escapeVariable = (string: string): string => {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n }\n\n const unwrapVariable = (string: string, allowedPrefixes?: AllowedVariablePrefix[]): string => {\n const prefixes = allowedPrefixes || defaultAllowedPrefixes\n for (const prefix of prefixes) {\n const start = `${prefix}{`\n const end = '}'\n if (string.startsWith(start) && string.endsWith(end)) {\n return string.slice(start.length, -end.length)\n }\n }\n\n return string // не соответствует ни одному шаблону\n }\n\n const wrapVariable = (string: string, allowedPrefixes?: AllowedVariablePrefix[]): string => {\n const prefixes = allowedPrefixes || ['$']\n const prefix = prefixes[0]\n return `${prefix}{${string}}`\n }\n\n const resolve = <T>(data: T): Resolved<T> => {\n if (typeof data === 'string') {\n return replaceInString(data) as Resolved<T>\n }\n\n if (Array.isArray(data)) {\n return data.map((item) => resolve(item)) as Resolved<T>\n }\n\n if (typeof data === 'object' && data !== null) {\n const result = {} as Record<keyof T, unknown>\n for (const key in data) {\n result[key] = resolve(data[key])\n }\n return result as Resolved<T>\n }\n\n return data as Resolved<T>\n }\n\n const replaceInString = (str: string): string => {\n let result = str\n for (const { start, end } of patterns) {\n const regex = new RegExp(`${escapeVariable(start)}(.*?)${escapeVariable(end)}`, 'g')\n result = result.replace(regex, (match, varName) => {\n const fullKey = `${start}${varName}${end}`\n return variables.get(fullKey) ?? match\n })\n }\n return result\n }\n\n const resolver = {\n addPattern,\n addVariables,\n unwrapVariable,\n wrapVariable,\n escapeVariable,\n resolve\n }\n\n return resolver\n}\n"],"names":["defaultAllowedPrefixes","variableResolver","patterns","variables","addPattern","start","end","resolver","addVariables","vars","key","value","escapeVariable","string","unwrapVariable","allowedPrefixes","prefixes","prefix","wrapVariable","resolve","data","replaceInString","item","result","str","regex","match","varName","fullKey"],"mappings":"AAEO,MAAMA,EAAkD,CAAC,IAAK,IAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"variableResolver.js","sources":["../../../../../lib/shared/utils/variables/variableResolver.ts"],"sourcesContent":["import { type AllowedVariablePrefix, type Resolved, type VariablePattern, type VariableType } from './types'\n\nexport const defaultAllowedPrefixes: AllowedVariablePrefix[] = ['$', '@', '#']\n\nexport type VariableResolver<Variable extends VariableType> = {\n addPattern: (start: VariablePattern['start'], end: VariablePattern['end']) => VariableResolver<Variable>\n addVariables: (vars: Variable[]) => VariableResolver<Variable>\n unwrapVariable: (string: string, allowedPrefixes?: AllowedVariablePrefix[]) => string\n wrapVariable: (string: string, allowedPrefixes?: AllowedVariablePrefix[]) => string\n escapeVariable: (string: string) => string\n resolve: <T>(data: T) => Resolved<T>\n}\n\nexport const variableResolver = <Variable extends VariableType>(): VariableResolver<Variable> => {\n const patterns: VariablePattern[] = []\n const variables: Map<string, string> = new Map()\n\n const addPattern = (start: VariablePattern['start'], end: VariablePattern['end']) => {\n patterns.push({ start, end })\n return resolver\n }\n\n const addVariables = (vars: Variable[]) => {\n vars?.forEach(({ key, value }) => {\n variables.set(key, value)\n })\n return resolver\n }\n\n const escapeVariable = (string: string): string => {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n }\n\n const unwrapVariable = (string: string, allowedPrefixes?: AllowedVariablePrefix[]): string => {\n const prefixes = allowedPrefixes || defaultAllowedPrefixes\n for (const prefix of prefixes) {\n const start = `${prefix}{`\n const end = '}'\n if (string.startsWith(start) && string.endsWith(end)) {\n return string.slice(start.length, -end.length)\n }\n }\n\n return string // не соответствует ни одному шаблону\n }\n\n const wrapVariable = (string: string, allowedPrefixes?: AllowedVariablePrefix[]): string => {\n const prefixes = allowedPrefixes || ['$']\n const prefix = prefixes[0]\n return `${prefix}{${string}}`\n }\n\n const resolve = <T>(data: T): Resolved<T> => {\n if (typeof data === 'string') {\n return replaceInString(data) as Resolved<T>\n }\n\n if (Array.isArray(data)) {\n return data.map((item) => resolve(item)) as Resolved<T>\n }\n\n if (typeof data === 'object' && data !== null) {\n const result = {} as Record<keyof T, unknown>\n for (const key in data) {\n result[key] = resolve(data[key])\n }\n return result as Resolved<T>\n }\n\n return data as Resolved<T>\n }\n\n const replaceInString = (str: string): string => {\n let result = str\n for (const { start, end } of patterns) {\n const regex = new RegExp(`${escapeVariable(start)}(.*?)${escapeVariable(end)}`, 'g')\n result = result.replace(regex, (match, varName) => {\n const fullKey = `${start}${varName}${end}`\n return variables.get(fullKey) ?? match\n })\n }\n return result\n }\n\n const resolver = {\n addPattern,\n addVariables,\n unwrapVariable,\n wrapVariable,\n escapeVariable,\n resolve\n }\n\n return resolver\n}\n"],"names":["defaultAllowedPrefixes","variableResolver","patterns","variables","addPattern","start","end","resolver","addVariables","vars","key","value","escapeVariable","string","unwrapVariable","allowedPrefixes","prefixes","prefix","wrapVariable","resolve","data","replaceInString","item","result","str","regex","match","varName","fullKey"],"mappings":"AAEO,MAAMA,EAAkD,CAAC,IAAK,IAAK,GAAG,EAWhEC,EAAmB,IAAiE,CAC/F,MAAMC,EAA8B,CAAA,EAC9BC,MAAqC,IAErCC,EAAa,CAACC,EAAiCC,KACnDJ,EAAS,KAAK,CAAE,MAAAG,EAAO,IAAAC,CAAA,CAAK,EACrBC,GAGHC,EAAgBC,IACpBA,GAAM,QAAQ,CAAC,CAAE,IAAAC,EAAK,MAAAC,KAAY,CAChCR,EAAU,IAAIO,EAAKC,CAAK,CAC1B,CAAC,EACMJ,GAGHK,EAAkBC,GACfA,EAAO,QAAQ,sBAAuB,MAAM,EAG/CC,EAAiB,CAACD,EAAgBE,IAAsD,CAC5F,MAAMC,EAAWD,GAAmBf,EACpC,UAAWiB,KAAUD,EAAU,CAC7B,MAAMX,EAAQ,GAAGY,CAAM,IACjBX,EAAM,IACZ,GAAIO,EAAO,WAAWR,CAAK,GAAKQ,EAAO,SAASP,CAAG,EACjD,OAAOO,EAAO,MAAMR,EAAM,OAAQ,CAACC,EAAI,MAAM,CAEjD,CAEA,OAAOO,CACT,EAEMK,EAAe,CAACL,EAAgBE,IAG7B,IAFUA,GAAmB,CAAC,GAAG,GAChB,CAAC,CACT,IAAIF,CAAM,IAGtBM,EAAcC,GAAyB,CAC3C,GAAI,OAAOA,GAAS,SAClB,OAAOC,EAAgBD,CAAI,EAG7B,GAAI,MAAM,QAAQA,CAAI,EACpB,OAAOA,EAAK,IAAKE,GAASH,EAAQG,CAAI,CAAC,EAGzC,GAAI,OAAOF,GAAS,UAAYA,IAAS,KAAM,CAC7C,MAAMG,EAAS,CAAA,EACf,UAAWb,KAAOU,EAChBG,EAAOb,CAAG,EAAIS,EAAQC,EAAKV,CAAG,CAAC,EAEjC,OAAOa,CACT,CAEA,OAAOH,CACT,EAEMC,EAAmBG,GAAwB,CAC/C,IAAID,EAASC,EACb,SAAW,CAAE,MAAAnB,EAAO,IAAAC,CAAA,IAASJ,EAAU,CACrC,MAAMuB,EAAQ,IAAI,OAAO,GAAGb,EAAeP,CAAK,CAAC,QAAQO,EAAeN,CAAG,CAAC,GAAI,GAAG,EACnFiB,EAASA,EAAO,QAAQE,EAAO,CAACC,EAAOC,IAAY,CACjD,MAAMC,EAAU,GAAGvB,CAAK,GAAGsB,CAAO,GAAGrB,CAAG,GACxC,OAAOH,EAAU,IAAIyB,CAAO,GAAKF,CACnC,CAAC,CACH,CACA,OAAOH,CACT,EAEMhB,EAAW,CACf,WAAAH,EACA,aAAAI,EACA,eAAAM,EACA,aAAAI,EACA,eAAAN,EACA,QAAAO,CAAA,EAGF,OAAOZ,CACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{RgxCheckForHyphen as i,RgxPatronymic as p,RgxUnicode as f}from"./regExp.js";import{VALIDATION_MESSAGES as s}from"./messages.js";import{dadataValidationSchemas as o}from"./dadata/index.js";import{baseValidationSchemas as a}from"./base/base.validators.js";import{
|
|
1
|
+
import{RgxCheckForHyphen as i,RgxPatronymic as p,RgxUnicode as f}from"./regExp.js";import{VALIDATION_MESSAGES as s}from"./messages.js";import{dadataValidationSchemas as o}from"./dadata/index.js";import{baseValidationSchemas as a}from"./base/base.validators.js";import{ZodUtils as h}from"./utils/zodUtils.js";import{baseDefaultMessages as S}from"./base/base.constants.js";import{formattedDadataFio as z,zodDadataFioSchema as V}from"./zodValidation/dadataFio.js";import{zodCalendarValidate as D}from"./zodValidation/calendar.js";import{zodOtpCodeSchema as A}from"./zodValidation/otpCode.js";import{zodPhoneSchema as F}from"./zodValidation/phone.js";const t={base:a,dadata:o};export{i as RgxCheckForHyphen,p as RgxPatronymic,f as RgxUnicode,s as VALIDATION_MESSAGES,h as ZodUtils,S as baseDefaultMessages,a as baseValidationSchemas,z as formattedDadataFio,D as zodCalendarValidate,V as zodDadataFioSchema,A as zodOtpCodeSchema,F as zodPhoneSchema,t as zodValidators};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{BannerImageFull as a}from"./banners/BannerImageFull.js";import{BannerWithSeparateImg as n}from"./banners/BannerWithSeparateImg.js";export{a as BannerImageFull,n as BannerWithSeparateImg};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t,jsxs as f}from"react/jsx-runtime";import{useState as
|
|
1
|
+
import{jsx as t,jsxs as f}from"react/jsx-runtime";import{useState as C,useMemo as p}from"react";import{CalculatorView as b}from"./CalculatorView.js";import{cn as l}from"../../shared/utils/cn.js";import{CalculatorTabs as h}from"./ui/CalculatorTabs.js";import{ResponsiveContainer as g}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";import{Heading as x}from"../../shared/ui/heading/Heading.js";const D=({calculators:r,headline:e,classes:a})=>{const c=r.length>1,[i,m]=C(c?r[0]?.name:""),s=p(()=>r?.map(({name:n,label:d})=>({name:n,label:d})),[r]),u=c?s?.findIndex(n=>n.name===i):0,o=r[u];return t("section",{id:"calculator","data-test-id":"calculator",className:l(a?.root),children:t(g,{className:l(a?.container),children:f("div",{className:l(a?.wrapper),children:[t(x,{className:l("mb-8 desktop:mb-12",a?.headline),as:"h2",children:e}),c&&t(h,{headline:e,calculatorTabs:s,activeCalculator:i,setActiveCalculator:m,classes:a?.calculatorTabs}),t(b,{...o,name:o.name,label:o.label,radioCardsDefaultValue:o.radioCardsDefaultValue,calculatorInfoConfigs:o.calculatorInfoConfigs,calculatorFieldsConfig:o.calculatorFieldsConfig,classes:a?.calculatorView,headline:e})]})})})};export{D as Calculator,D as default};
|
|
2
2
|
//# sourceMappingURL=Calculator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calculator.js","sources":["../../../../lib/widgets/calculator/Calculator.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { cn } from '../../shared/utils'\nimport { CalculatorView, type CalculatorViewClasses, type CalculatorViewProps } from './CalculatorView'\nimport { CalculatorTabs, type CalculatorTabsClasses, type CalculatorTabValue } from './ui'\nimport { Heading, ResponsiveContainer } from '$/shared/ui'\n\nexport type CalculatorClasses = {\n root?: string\n container?: string\n headline?: string\n wrapper?: string\n calculatorView?: CalculatorViewClasses\n calculatorTabs?: CalculatorTabsClasses\n}\n\nexport interface CalculatorProps {\n headline: string\n calculators: CalculatorViewProps[]\n classes?: CalculatorClasses\n}\n\nexport const Calculator = ({ calculators, headline, classes }: CalculatorProps) => {\n const shouldShowTabs = calculators.length > 1\n\n const [activeCalculator, setActiveCalculator] = useState<CalculatorTabValue>(shouldShowTabs ? calculators[0]?.name : '')\n\n const calculatorsTabs = useMemo(() => calculators?.map(({ name, label }) => ({ name, label })), [calculators])\n\n const currentCalculatorIndex = shouldShowTabs\n ? calculatorsTabs?.findIndex((tab) => tab.name === activeCalculator) // Активный калькулятор по значению таба\n : 0 // Берем первый калькулятор если табов нет\n\n const currentCalculator = calculators[currentCalculatorIndex]\n\n return (\n <section id='calculator' data-test-id='calculator' className={cn(classes?.root)}>\n <ResponsiveContainer className={cn(classes?.container)}>\n <div className={cn(classes?.wrapper)}>\n <Heading className={cn('mb-8 desktop:mb-12', classes?.headline)} as='h2'>\n {headline}\n </Heading>\n {shouldShowTabs && (\n <CalculatorTabs\n headline={headline}\n calculatorTabs={calculatorsTabs}\n activeCalculator={activeCalculator}\n setActiveCalculator={setActiveCalculator}\n classes={classes?.calculatorTabs}\n />\n )}\n\n <CalculatorView\n name={currentCalculator.name}\n label={currentCalculator.label}\n
|
|
1
|
+
{"version":3,"file":"Calculator.js","sources":["../../../../lib/widgets/calculator/Calculator.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { cn } from '../../shared/utils'\nimport { CalculatorView, type CalculatorViewClasses, type CalculatorViewProps } from './CalculatorView'\nimport { CalculatorTabs, type CalculatorTabsClasses, type CalculatorTabValue } from './ui'\nimport { Heading, ResponsiveContainer } from '$/shared/ui'\n\nexport type CalculatorClasses = {\n root?: string\n container?: string\n headline?: string\n wrapper?: string\n calculatorView?: CalculatorViewClasses\n calculatorTabs?: CalculatorTabsClasses\n}\n\nexport interface CalculatorProps {\n headline: string\n calculators: CalculatorViewProps[]\n classes?: CalculatorClasses\n}\n\nexport const Calculator = ({ calculators, headline, classes }: CalculatorProps) => {\n const shouldShowTabs = calculators.length > 1\n\n const [activeCalculator, setActiveCalculator] = useState<CalculatorTabValue>(shouldShowTabs ? calculators[0]?.name : '')\n\n const calculatorsTabs = useMemo(() => calculators?.map(({ name, label }) => ({ name, label })), [calculators])\n\n const currentCalculatorIndex = shouldShowTabs\n ? calculatorsTabs?.findIndex((tab) => tab.name === activeCalculator) // Активный калькулятор по значению таба\n : 0 // Берем первый калькулятор если табов нет\n\n const currentCalculator = calculators[currentCalculatorIndex]\n\n return (\n <section id='calculator' data-test-id='calculator' className={cn(classes?.root)}>\n <ResponsiveContainer className={cn(classes?.container)}>\n <div className={cn(classes?.wrapper)}>\n <Heading className={cn('mb-8 desktop:mb-12', classes?.headline)} as='h2'>\n {headline}\n </Heading>\n {shouldShowTabs && (\n <CalculatorTabs\n headline={headline}\n calculatorTabs={calculatorsTabs}\n activeCalculator={activeCalculator}\n setActiveCalculator={setActiveCalculator}\n classes={classes?.calculatorTabs}\n />\n )}\n\n <CalculatorView\n {...currentCalculator}\n name={currentCalculator.name}\n label={currentCalculator.label}\n radioCardsDefaultValue={currentCalculator.radioCardsDefaultValue}\n calculatorInfoConfigs={currentCalculator.calculatorInfoConfigs}\n calculatorFieldsConfig={currentCalculator.calculatorFieldsConfig}\n classes={classes?.calculatorView}\n headline={headline}\n />\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default Calculator\n"],"names":["Calculator","calculators","headline","classes","shouldShowTabs","activeCalculator","setActiveCalculator","useState","calculatorsTabs","useMemo","name","label","currentCalculatorIndex","tab","currentCalculator","jsx","cn","ResponsiveContainer","jsxs","Heading","CalculatorTabs","CalculatorView"],"mappings":"yZAqBO,MAAMA,EAAa,CAAC,CAAE,YAAAC,EAAa,SAAAC,EAAU,QAAAC,KAA+B,CACjF,MAAMC,EAAiBH,EAAY,OAAS,EAEtC,CAACI,EAAkBC,CAAmB,EAAIC,EAA6BH,EAAiBH,EAAY,CAAC,GAAG,KAAO,EAAE,EAEjHO,EAAkBC,EAAQ,IAAMR,GAAa,IAAI,CAAC,CAAE,KAAAS,EAAM,MAAAC,CAAA,KAAa,CAAE,KAAAD,EAAM,MAAAC,CAAA,EAAQ,EAAG,CAACV,CAAW,CAAC,EAEvGW,EAAyBR,EAC3BI,GAAiB,UAAWK,GAAQA,EAAI,OAASR,CAAgB,EACjE,EAEES,EAAoBb,EAAYW,CAAsB,EAE5D,OACEG,EAAC,UAAA,CAAQ,GAAG,aAAa,eAAa,aAAa,UAAWC,EAAGb,GAAS,IAAI,EAC5E,SAAAY,EAACE,GAAoB,UAAWD,EAAGb,GAAS,SAAS,EACnD,SAAAe,EAAC,OAAI,UAAWF,EAAGb,GAAS,OAAO,EACjC,SAAA,CAAAY,EAACI,EAAA,CAAQ,UAAWH,EAAG,qBAAsBb,GAAS,QAAQ,EAAG,GAAG,KACjE,SAAAD,CAAA,CACH,EACCE,GACCW,EAACK,EAAA,CACC,SAAAlB,EACA,eAAgBM,EAChB,iBAAAH,EACA,oBAAAC,EACA,QAASH,GAAS,cAAA,CAAA,EAItBY,EAACM,EAAA,CACE,GAAGP,EACJ,KAAMA,EAAkB,KACxB,MAAOA,EAAkB,MACzB,uBAAwBA,EAAkB,uBAC1C,sBAAuBA,EAAkB,sBACzC,uBAAwBA,EAAkB,uBAC1C,QAASX,GAAS,eAClB,SAAAD,CAAA,CAAA,CACF,CAAA,CACF,EACF,EACF,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as l,jsxs as x}from"react/jsx-runtime";import{useEffect as v}from"react";import{FormProvider as V}from"react-hook-form";import{getCalculatorSchema as w}from"./model/utils.js";import{localStorageActions as F}from"../../shared/utils/localStorageActions.js";import{evaluateFormula as b}from"./model/helpers.js";import{CalculatorFields as D}from"./ui/calculatorFields/CalculatorFields.js";import{CalculatorInfo as I}from"./ui/calculatorInfo/CalculatorInfo.js";import{cn as G}from"../../shared/utils/cn.js";import{ZodUtils as S}from"../../shared/validation/utils/zodUtils.js";import{useControlledForm as j}from"../../shared/hooks/useControlledForm.js";const H=({calculatorInfoConfigs:o,calculatorFieldsConfig:r,classes:t,headline:n,radioCardsDefaultValue:u})=>{const c=w(r?.fieldsGroup),d={...S.getZodDefaults(c),radioCards:u},e=j({schema:c,mode:"onBlur",defaultValues:d}),f=e.watch("radioCards"),m=r.fieldsGroup.radioGroupCardConfig?.fields[0].args.options.find(g=>g.value===f)?.index,s=o.length>1?o[m?Number(m):0]:o[0],a=e.watch(),{rootValue:i,isFormula:p}=s;v(()=>{F.setItem("calculatorData",a)},[a]);const h=p?b(i,a):i,C={...s,rootValue:h};return l(V,{...e,children:x("div",{className:G("flex items-start gap-16 mobile:flex-col mobile:items-center mobile:gap-8",t?.wrapper),children:[l(D,{...r,classes:t?.calculatorFields}),l(I,{...C,headline:n,classes:t?.calculatorInfo})]})})};export{H 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
|
|
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 } 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 calculatorInfoConfigs: CalculatorInfoProps[]\n calculatorFieldsConfig: CalculatorFieldsProps<T>\n classes?: CalculatorViewClasses\n headline?: string\n radioCardsDefaultValue?: string\n}\n\nexport const CalculatorView = <T extends FieldValues>({\n calculatorInfoConfigs,\n calculatorFieldsConfig,\n classes,\n headline,\n radioCardsDefaultValue\n}: CalculatorViewProps<T>) => {\n const calculatorSchema: CalculatorSchema = getCalculatorSchema(calculatorFieldsConfig?.fieldsGroup)\n\n const schemaDefaults = ZodUtils.getZodDefaults(calculatorSchema)\n\n const defaultValues = {\n ...schemaDefaults,\n radioCards: radioCardsDefaultValue\n }\n\n const formMethods = useControlledForm({\n schema: calculatorSchema,\n mode: 'onBlur',\n defaultValues\n })\n const radioCardsValue = formMethods.watch('radioCards') as string | undefined\n\n const currentOption = calculatorFieldsConfig.fieldsGroup.radioGroupCardConfig?.fields[0].args.options.find(\n (option) => option.value === radioCardsValue\n )\n\n const activeIndex = currentOption?.index\n\n const activeCalculatorInfoConfig =\n calculatorInfoConfigs.length > 1 ? calculatorInfoConfigs[activeIndex ? Number(activeIndex) : 0] : calculatorInfoConfigs[0]\n\n const watchedFields = formMethods.watch()\n\n const { rootValue, isFormula } = activeCalculatorInfoConfig\n\n useEffect(() => {\n localStorageActions.setItem('calculatorData', watchedFields)\n }, [watchedFields])\n\n const calculatedValue = isFormula ? evaluateFormula(rootValue, watchedFields) : rootValue\n\n const mergedCalcInfoConfig = { ...activeCalculatorInfoConfig, 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} headline={headline} classes={classes?.calculatorInfo} />\n </div>\n </FormProvider>\n )\n}\n"],"names":["CalculatorView","calculatorInfoConfigs","calculatorFieldsConfig","classes","headline","radioCardsDefaultValue","calculatorSchema","getCalculatorSchema","defaultValues","ZodUtils","formMethods","useControlledForm","radioCardsValue","activeIndex","option","activeCalculatorInfoConfig","watchedFields","rootValue","isFormula","useEffect","localStorageActions","calculatedValue","evaluateFormula","mergedCalcInfoConfig","jsx","FormProvider","jsxs","cn","CalculatorFields","CalculatorInfo"],"mappings":"kpBA8BO,MAAMA,EAAiB,CAAwB,CACpD,sBAAAC,EACA,uBAAAC,EACA,QAAAC,EACA,SAAAC,EACA,uBAAAC,CACF,IAA8B,CAC5B,MAAMC,EAAqCC,EAAoBL,GAAwB,WAAW,EAI5FM,EAAgB,CACpB,GAHqBC,EAAS,eAAeH,CAAgB,EAI7D,WAAYD,CAAA,EAGRK,EAAcC,EAAkB,CACpC,OAAQL,EACR,KAAM,SACN,cAAAE,CAAA,CACD,EACKI,EAAkBF,EAAY,MAAM,YAAY,EAMhDG,EAJgBX,EAAuB,YAAY,sBAAsB,OAAO,CAAC,EAAE,KAAK,QAAQ,KACnGY,GAAWA,EAAO,QAAUF,CAAA,GAGI,MAE7BG,EACJd,EAAsB,OAAS,EAAIA,EAAsBY,EAAc,OAAOA,CAAW,EAAI,CAAC,EAAIZ,EAAsB,CAAC,EAErHe,EAAgBN,EAAY,MAAA,EAE5B,CAAE,UAAAO,EAAW,UAAAC,CAAA,EAAcH,EAEjCI,EAAU,IAAM,CACdC,EAAoB,QAAQ,iBAAkBJ,CAAa,CAC7D,EAAG,CAACA,CAAa,CAAC,EAElB,MAAMK,EAAkBH,EAAYI,EAAgBL,EAAWD,CAAa,EAAIC,EAE1EM,EAAuB,CAAE,GAAGR,EAA4B,UAAWM,CAAA,EAEzE,OACEG,EAACC,EAAA,CAAc,GAAGf,EAChB,SAAAgB,EAAC,MAAA,CAAI,UAAWC,EAAG,2EAA4ExB,GAAS,OAAO,EAC7G,SAAA,CAAAqB,EAACI,EAAA,CAAkB,GAAG1B,EAAwB,QAASC,GAAS,iBAAkB,IACjF0B,EAAA,CAAgB,GAAGN,EAAsB,SAAAnB,EAAoB,QAASD,GAAS,cAAA,CAAgB,CAAA,CAAA,CAClG,CAAA,CACF,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{TypeGuards as u}from"../../../shared/utils/typeGuards.js";const c=(r,e)=>(r.match(/[a-zA-Z_$][a-zA-Z0-9_$]*/g)||[]).filter(t=>!(t in e)).length>0?"":r,m=(r,e)=>{const a=Object.entries(e).map(([s,l])=>[s,u.isNil(l)?"1":l]),n=a.map(([s])=>s),t=a.map(([,s])=>s),o=c(r,Object.fromEntries(a)),i=new Function(...n,`return ${o};`)(...t.map(Number));return Number.isNaN(Number(i))?"0":i.toString()},v=(r,e)=>r?.map(a=>({...a,value:a?.isFormula?m(a.value,e):a.value}));export{m as evaluateFormula,v as formatInfoList};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../../../lib/widgets/calculator/model/helpers.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../lib/widgets/calculator/model/helpers.ts"],"sourcesContent":["import type { InfoListItemProps } from '../ui'\nimport type { CalculatorVariables } from './types'\nimport { TypeGuards } from '$/shared/utils'\n\nconst validateFormula = (formula: string, variables: CalculatorVariables) => {\n const variablesInFormula = formula.match(/[a-zA-Z_$][a-zA-Z0-9_$]*/g) || []\n const missingVariables = variablesInFormula.filter((varName) => !(varName in variables))\n\n if (missingVariables.length > 0) {\n return ''\n // throw new Error(`Отсутствуют переменные для калькулятора: ${missingVariables.join(', ')}`) 12 + 14 / select1\n }\n\n return formula\n}\n\nexport const evaluateFormula = (formula: string, variables: CalculatorVariables): string => {\n const entries = Object.entries(variables).map(([key, value]) => [key, !TypeGuards.isNil(value) ? value : '1'])\n\n const variablesKeys = entries.map(([key]) => key)\n const variablesValues = entries.map(([, value]) => value)\n\n const validatedFormula = validateFormula(formula, Object.fromEntries(entries))\n const replaceVariables = new Function(...variablesKeys, `return ${validatedFormula};`)\n\n const replaceResult: number = replaceVariables(...variablesValues.map(Number))\n\n if (Number.isNaN(Number(replaceResult))) {\n return '0'\n }\n\n return replaceResult.toString()\n}\n\nexport const formatInfoList = (list: InfoListItemProps[], variables: CalculatorVariables): InfoListItemProps[] => {\n return list?.map((item) => {\n return {\n ...item,\n value: item?.isFormula ? evaluateFormula(item.value, variables) : item.value\n }\n })\n}\n"],"names":["validateFormula","formula","variables","varName","evaluateFormula","entries","key","value","TypeGuards","variablesKeys","variablesValues","validatedFormula","replaceResult","formatInfoList","list","item"],"mappings":"iEAIA,MAAMA,EAAkB,CAACC,EAAiBC,KACbD,EAAQ,MAAM,2BAA2B,GAAK,CAAA,GAC7B,OAAQE,GAAY,EAAEA,KAAWD,EAAU,EAElE,OAAS,EACrB,GAIFD,EAGIG,EAAkB,CAACH,EAAiBC,IAA2C,CAC1F,MAAMG,EAAU,OAAO,QAAQH,CAAS,EAAE,IAAI,CAAC,CAACI,EAAKC,CAAK,IAAM,CAACD,EAAME,EAAW,MAAMD,CAAK,EAAY,IAARA,CAAW,CAAC,EAEvGE,EAAgBJ,EAAQ,IAAI,CAAC,CAACC,CAAG,IAAMA,CAAG,EAC1CI,EAAkBL,EAAQ,IAAI,CAAC,CAAA,CAAGE,CAAK,IAAMA,CAAK,EAElDI,EAAmBX,EAAgBC,EAAS,OAAO,YAAYI,CAAO,CAAC,EAGvEO,EAFmB,IAAI,SAAS,GAAGH,EAAe,UAAUE,CAAgB,GAAG,EAEtC,GAAGD,EAAgB,IAAI,MAAM,CAAC,EAE7E,OAAI,OAAO,MAAM,OAAOE,CAAa,CAAC,EAC7B,IAGFA,EAAc,SAAA,CACvB,EAEaC,EAAiB,CAACC,EAA2BZ,IACjDY,GAAM,IAAKC,IACT,CACL,GAAGA,EACH,MAAOA,GAAM,UAAYX,EAAgBW,EAAK,MAAOb,CAAS,EAAIa,EAAK,KAAA,EAE1E"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{evaluateFormula as a,formatInfoList as
|
|
1
|
+
import{evaluateFormula as a,formatInfoList as e}from"./helpers.js";import{formatValueToRenderInfoItem as m,formatWithIntl as f,getCalculatorSchema as l}from"./utils.js";export{a as evaluateFormula,e as formatInfoList,m as formatValueToRenderInfoItem,f as formatWithIntl,l as getCalculatorSchema};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{z as
|
|
1
|
+
import{z as m}from"zod";import{getDynamicSchema as o}from"../../../../src/shared/utils/getDynamicSchema.js";const a=(r,e)=>{let c=e;const t={style:r};switch(r){case"currency":t.currency="RUB",t.minimumFractionDigits=0,t.maximumFractionDigits=0;break;case"percent":t.minimumFractionDigits=0,t.maximumFractionDigits=1,c=c/100;break;default:return null}return new Intl.NumberFormat("ru-RU",t).format(c)},s=(r,e)=>{switch(r){case"text":return e;default:return a(r,Number(e))}},l=r=>Object.values(r).reduce((c,t)=>c.merge(o(t.fields)),m.object({}));export{s as formatValueToRenderInfoItem,a as formatWithIntl,l as getCalculatorSchema};
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../lib/widgets/calculator/model/utils.ts"],"sourcesContent":["import type { FieldValues } from 'react-hook-form'\nimport { z } from 'zod'\nimport { getDynamicSchema } from '@/shared/utils'\nimport { type CalculatorViewProps } from '$/widgets'\nimport { type CalculatorSuffix
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../lib/widgets/calculator/model/utils.ts"],"sourcesContent":["import type { FieldValues } from 'react-hook-form'\nimport { z } from 'zod'\nimport { getDynamicSchema } from '@/shared/utils'\nimport { type CalculatorViewProps } from '$/widgets'\nimport { type CalculatorSuffix } from '$/widgets/calculator/model/types'\nimport { type InfoListItemMode } from '$/widgets/calculator/ui'\n\nexport const formatWithIntl = (suffix: CalculatorSuffix, value: number) => {\n let calculationValue = value\n\n const options: Intl.NumberFormatOptions = {\n style: suffix\n }\n\n switch (suffix) {\n case 'currency':\n options.currency = 'RUB'\n options.minimumFractionDigits = 0\n options.maximumFractionDigits = 0\n break\n\n case 'percent':\n options.minimumFractionDigits = 0\n options.maximumFractionDigits = 1\n calculationValue = calculationValue / 100\n break\n default:\n return null\n }\n\n const formatter = new Intl.NumberFormat('ru-RU', options)\n return formatter.format(calculationValue)\n}\n\nexport const formatValueToRenderInfoItem = (renderMode: InfoListItemMode, value: string) => {\n switch (renderMode) {\n case 'text':\n return value\n default:\n return formatWithIntl(renderMode, Number(value))\n }\n}\n\nexport const getCalculatorSchema = <T extends FieldValues>(\n props: CalculatorViewProps<T>['calculatorFieldsConfig']['fieldsGroup']\n) => {\n const groups = Object.values(props)\n\n return groups.reduce<z.ZodObject<any>>((acc, item) => acc.merge(getDynamicSchema(item.fields)), z.object({}))\n}\n"],"names":["formatWithIntl","suffix","value","calculationValue","options","formatValueToRenderInfoItem","renderMode","getCalculatorSchema","props","acc","item","getDynamicSchema","z"],"mappings":"4GAOO,MAAMA,EAAiB,CAACC,EAA0BC,IAAkB,CACzE,IAAIC,EAAmBD,EAEvB,MAAME,EAAoC,CACxC,MAAOH,CAAA,EAGT,OAAQA,EAAA,CACN,IAAK,WACHG,EAAQ,SAAW,MACnBA,EAAQ,sBAAwB,EAChCA,EAAQ,sBAAwB,EAChC,MAEF,IAAK,UACHA,EAAQ,sBAAwB,EAChCA,EAAQ,sBAAwB,EAChCD,EAAmBA,EAAmB,IACtC,MACF,QACE,OAAO,IAAA,CAIX,OADkB,IAAI,KAAK,aAAa,QAASC,CAAO,EACvC,OAAOD,CAAgB,CAC1C,EAEaE,EAA8B,CAACC,EAA8BJ,IAAkB,CAC1F,OAAQI,EAAA,CACN,IAAK,OACH,OAAOJ,EACT,QACE,OAAOF,EAAeM,EAAY,OAAOJ,CAAK,CAAC,CAAA,CAErD,EAEaK,EACXC,GAEe,OAAO,OAAOA,CAAK,EAEpB,OAAyB,CAACC,EAAKC,IAASD,EAAI,MAAME,EAAiBD,EAAK,MAAM,CAAC,EAAGE,EAAE,OAAO,CAAA,CAAE,CAAC"}
|