@scbt-ecom/ui 0.113.1 → 0.114.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/_virtual/index.js +1 -1
- package/dist/_virtual/index2.js +1 -1
- package/dist/lib/exports/widget.js +1 -1
- package/dist/lib/shared/hooks/useClickOutside.js +1 -1
- package/dist/lib/shared/hooks/useClickOutside.js.map +1 -1
- package/dist/lib/shared/ui/brandLogos/BrandLogos.js +1 -1
- package/dist/lib/shared/ui/brandLogos/BrandLogos.js.map +1 -1
- package/dist/lib/shared/ui/carousel/model/helpers.js +1 -1
- package/dist/lib/shared/ui/carousel/model/helpers.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/combobox/hooks/useComboboxControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/combobox/hooks/useComboboxControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/model/utils.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/model/utils.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/model/helper.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/model/helper.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/combobox/hooks/useCombobox.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/combobox/hooks/useCombobox.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/index.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/index.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/maskInput/MaskInput.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/maskInput/MaskInput.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.js.map +1 -1
- package/dist/lib/shared/ui/slot/ui/SlotClone.js +1 -1
- package/dist/lib/shared/ui/slot/ui/SlotClone.js.map +1 -1
- package/dist/lib/shared/ui/table/Table.js +1 -1
- package/dist/lib/shared/ui/table/Table.js.map +1 -1
- package/dist/lib/shared/ui/table/model/TableUtils.js +1 -1
- package/dist/lib/shared/ui/table/model/TableUtils.js.map +1 -1
- package/dist/lib/shared/utils/cn.js +1 -1
- package/dist/lib/shared/utils/cn.js.map +1 -1
- package/dist/lib/shared/validation/base/base.constants.js +1 -1
- package/dist/lib/shared/validation/base/base.constants.js.map +1 -1
- package/dist/lib/shared/validation/base/currency.validators.js +1 -1
- package/dist/lib/shared/validation/base/currency.validators.js.map +1 -1
- package/dist/lib/shared/validation/base/date.validators.js +1 -1
- package/dist/lib/shared/validation/base/date.validators.js.map +1 -1
- package/dist/lib/shared/validation/base/email.validators.js +1 -1
- package/dist/lib/shared/validation/base/email.validators.js.map +1 -1
- package/dist/lib/shared/validation/base/phone.validators.js +1 -1
- package/dist/lib/shared/validation/base/phone.validators.js.map +1 -1
- package/dist/lib/shared/validation/base/regex.validators.js +1 -1
- package/dist/lib/shared/validation/base/regex.validators.js.map +1 -1
- package/dist/lib/shared/validation/base/url.validators.js +1 -1
- package/dist/lib/shared/validation/base/url.validators.js.map +1 -1
- package/dist/lib/widgets/banner/index.js +1 -1
- package/dist/lib/widgets/buttonWithHandlers/model/useButtonHandler.js +1 -1
- package/dist/lib/widgets/buttonWithHandlers/model/useButtonHandler.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/ui/calculatorFields/hooks/useAdditionalSlider.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorFields/hooks/useAdditionalSlider.js.map +1 -1
- package/dist/lib/widgets/fallbacksView/model/helpers.js +1 -1
- package/dist/lib/widgets/fallbacksView/model/helpers.js.map +1 -1
- package/dist/lib/widgets/fieldMapper/FieldMapper.js +1 -1
- package/dist/lib/widgets/fieldMapper/FieldMapper.js.map +1 -1
- package/dist/lib/widgets/header/model/helpers.js +1 -1
- package/dist/lib/widgets/header/model/helpers.js.map +1 -1
- package/dist/lib/widgets/index.js +1 -1
- package/dist/lib/widgets/model/helpers.js +2 -2
- package/dist/lib/widgets/model/helpers.js.map +1 -1
- package/dist/lib/widgets/seoHeader/ui/desktop/CategoriesDesktop.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/desktop/CategoriesDesktop.js.map +1 -1
- package/dist/lib/widgets/seoHeader/ui/desktop/CategoryTabs.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/desktop/CategoryTabs.js.map +1 -1
- package/dist/lib/widgets/seoHeader/ui/mobile/CategoriesMobile.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/mobile/CategoriesMobile.js.map +1 -1
- package/dist/lib/widgets/stepper/ui/StepperCarousel.js +1 -1
- package/dist/lib/widgets/stepper/ui/StepperCarousel.js.map +1 -1
- package/dist/lib/widgets/table/model/utils.js +1 -1
- package/dist/lib/widgets/table/model/utils.js.map +1 -1
- package/dist/node_modules/classnames/index.js +1 -1
- package/dist/node_modules/prop-types/index.js +1 -1
- package/dist/node_modules/prop-types/index.js.map +1 -1
- package/dist/src/shared/utils/getDynamicSchema.js +1 -1
- package/dist/src/shared/utils/getDynamicSchema.js.map +1 -1
- package/dist/stats.html +1 -1
- package/dist/types/lib/shared/utils/cn.d.ts +2 -2
- package/package.json +2 -2
package/dist/_virtual/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var s={exports:{}};export{s as __module};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/_virtual/index2.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var p={exports:{}};export{p as __module};
|
|
2
2
|
//# sourceMappingURL=index2.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Benefit as
|
|
1
|
+
import{Benefit as C}from"../widgets/benefit/Benefit.js";import{Header as P}from"../widgets/header/Header.js";import"react/jsx-runtime";import{ButtonWithHandlers as G}from"../widgets/buttonWithHandlers/ButtonWithHandlers.js";import"../../node_modules/classnames/index.js";import"../shared/ui/button/Button.js";import"../shared/ui/buttonIcon/ButtonIcon.js";import"../shared/ui/calendar/Calendar.js";import"../shared/ui/calendar/model/utils.js";import"../shared/ui/accordion/Accordion.js";import"react";import"react-dom";import"../shared/ui/modal/ui/IframeModalContent.js";import"../../node_modules/react-hot-toast/dist/index.js";import"../shared/ui/table/ui/primitives/Primitives.js";import"../shared/ui/carousel/ui/CarouselContent.js";import"../shared/ui/slot/Slot.js";import"../shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js";import"../shared/ui/formElements/uncontrolled/checkbox/Checkbox.js";import"../shared/ui/formElements/uncontrolled/combobox/combobox.js";import"../shared/ui/formElements/uncontrolled/dayPicker/DayPicker.js";import"../shared/ui/formElements/uncontrolled/input/Input.js";import"../shared/ui/formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../shared/ui/formElements/uncontrolled/maskInput/MaskInput.js";import"../shared/ui/formElements/uncontrolled/radio/RadioGroup.js";import"../shared/ui/formElements/uncontrolled/radio/ui/RadioItem.js";import"../shared/ui/formElements/uncontrolled/slider/SliderBase.js";import"../shared/ui/formElements/uncontrolled/switch/Switch.js";import"../shared/ui/formElements/uncontrolled/textarea/Textarea.js";import"../shared/ui/formElements/uncontrolled/uploader/UploaderBase.js";import"../shared/ui/formElements/uncontrolled/inputCurrency/InputCurrency.js";import"../shared/ui/formElements/controlled/editor/ui/Editor.js";import"../shared/ui/formElements/controlled/input/MaskInputControl.js";import"../shared/ui/dropdownList/ui/dropdownItem/DropdownItem.js";import{BannerWithSeparateImg as V}from"../widgets/banner/ui/banners/BannerWithSeparateImg.js";import{Banner as v}from"../widgets/banner/Banner.js";import{Footer as O}from"../widgets/footer/Footer.js";import{Stepper as Y}from"../widgets/stepper/Stepper.js";import{LongBanner as z}from"../widgets/longBanner/LongBanner.js";import{AuthProvider as N}from"../widgets/authProvider/AuthProvider.js";import{InterLinking as X}from"../widgets/interLinking/InterLinking.js";import{UsefulInfo as $}from"../widgets/usefulInfo/UsefulInfo.js";import{FieldMapper as or}from"../widgets/fieldMapper/FieldMapper.js";import{DynamicForm as mr}from"../widgets/dynamicForm/DynamicForm.js";import{DynamicFormDialog as er}from"../widgets/dynamicFormDialog/DynamicFormDialog.js";import{KEYS_OF_WIDGET_LIST as fr,WIDGET_LIST_MAP as xr,widgetIds as ar}from"../widgets/model/helpers.js";import{FallbacksView as lr}from"../widgets/fallbacksView/FallbacksView.js";import{HTMLParser as Ir}from"../widgets/htmlParser/htmlParser.js";import{HTMLRenderer as sr}from"../widgets/htmlParser/HTMLRenderer.js";import{Breadcrumbs as Br}from"../widgets/breadcrumbs/Breadcrumbs.js";import{SeoHeader as Tr}from"../widgets/seoHeader/SeoHeader.js";import{Calculator as Sr}from"../widgets/calculator/Calculator.js";import{CalculatorView as Dr}from"../widgets/calculator/CalculatorView.js";import{InfoBlock as _r}from"../widgets/infoBlock/InfoBlock.js";import{UserFeedback as kr}from"../widgets/userFeedback/UserFeedback.js";import{Table as Wr}from"../widgets/table/Table.js";import{queryClient as wr}from"../widgets/queryClientProvider/QueryClientProvider.js";export{N as AuthProvider,v as Banner,V as BannerWithSeparateImg,C as Benefit,Br as Breadcrumbs,G as ButtonWithHandlers,Sr as Calculator,Dr as CalculatorView,mr as DynamicForm,er as DynamicFormDialog,lr as FallbacksView,or as FieldMapper,O as Footer,Ir as HTMLParser,sr as HTMLRenderer,P as Header,_r as InfoBlock,X as InterLinking,fr as KEYS_OF_WIDGET_LIST,z as LongBanner,Tr as SeoHeader,Y as Stepper,Wr as Table,$ as UsefulInfo,kr as UserFeedback,xr as WIDGET_LIST_MAP,wr as queryClient,ar as widgetIds};
|
|
2
2
|
//# sourceMappingURL=widget.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as i from"react";import{isClient as s}from"../utils/isClient.js";const
|
|
1
|
+
import*as i from"react";import"../../../node_modules/classnames/index.js";import{isClient as s}from"../utils/isClient.js";const m=(t,o)=>{const n=e=>{t.current&&!t.current.contains(e.target)&&o()};i.useEffect(()=>{var e;if(s)return(e=globalThis==null?void 0:globalThis.document)==null||e.addEventListener("mousedown",n),()=>{globalThis==null||globalThis.document.removeEventListener("mousedown",n)}},[t,o])};export{m as useClickOutside};
|
|
2
2
|
//# sourceMappingURL=useClickOutside.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useClickOutside.js","sources":["../../../../lib/shared/hooks/useClickOutside.ts"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { isClient } from '../utils'\n\nexport const useClickOutside = (ref: React.RefObject<HTMLElement>, callback: () => void) => {\n const handleClickOutside = (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n callback()\n }\n }\n\n React.useEffect(() => {\n if (isClient) {\n globalThis?.document?.addEventListener('mousedown', handleClickOutside)\n return () => {\n globalThis?.document.removeEventListener('mousedown', handleClickOutside)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref, callback])\n}\n\n//\n"],"names":["useClickOutside","ref","callback","handleClickOutside","event","React","isClient","_a"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useClickOutside.js","sources":["../../../../lib/shared/hooks/useClickOutside.ts"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { isClient } from '../utils'\n\nexport const useClickOutside = (ref: React.RefObject<HTMLElement>, callback: () => void) => {\n const handleClickOutside = (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n callback()\n }\n }\n\n React.useEffect(() => {\n if (isClient) {\n globalThis?.document?.addEventListener('mousedown', handleClickOutside)\n return () => {\n globalThis?.document.removeEventListener('mousedown', handleClickOutside)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref, callback])\n}\n\n//\n"],"names":["useClickOutside","ref","callback","handleClickOutside","event","React","isClient","_a"],"mappings":"0HAKO,MAAMA,EAAkB,CAACC,EAAmCC,IAAyB,CAC1F,MAAMC,EAAsBC,GAAsB,CAC5CH,EAAI,SAAW,CAACA,EAAI,QAAQ,SAASG,EAAM,MAAc,GAC3DF,EAAA,CAEJ,EAEAG,EAAM,UAAU,IAAM,OACpB,GAAIC,EACF,OAAAC,EAAA,mCAAY,WAAZ,MAAAA,EAAsB,iBAAiB,YAAaJ,GAC7C,IAAM,CACX,6BAAY,SAAS,oBAAoB,YAAaA,EACxD,CAGJ,EAAG,CAACF,EAAKC,CAAQ,CAAC,CACpB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import"../button/Button.js";import"../buttonIcon/ButtonIcon.js";import"../calendar/Calendar.js";import"../calendar/model/utils.js";import"../accordion/Accordion.js";import"react";import"react-dom";import"../modal/ui/IframeModalContent.js";import"../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as r}from"../icon/Icon.js";import"../table/ui/primitives/Primitives.js";import"../carousel/ui/CarouselContent.js";import"../slot/Slot.js";import"../formElements/uncontrolled/autocomplete/Autocomplete.js";import"../formElements/uncontrolled/checkbox/Checkbox.js";import"../formElements/uncontrolled/combobox/combobox.js";import"../formElements/uncontrolled/dayPicker/DayPicker.js";import"../formElements/uncontrolled/input/Input.js";import"../formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../formElements/uncontrolled/maskInput/MaskInput.js";import"../formElements/uncontrolled/radio/RadioGroup.js";import"../formElements/uncontrolled/radio/ui/RadioItem.js";import"../formElements/uncontrolled/slider/SliderBase.js";import"../formElements/uncontrolled/switch/Switch.js";import"../formElements/uncontrolled/textarea/Textarea.js";import"../formElements/uncontrolled/uploader/UploaderBase.js";import"../formElements/uncontrolled/inputCurrency/InputCurrency.js";import"../formElements/controlled/editor/ui/Editor.js";import"../formElements/controlled/input/MaskInputControl.js";import"../dropdownList/ui/dropdownItem/DropdownItem.js";const
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import"../../../../node_modules/classnames/index.js";import"../button/Button.js";import"../buttonIcon/ButtonIcon.js";import"../calendar/Calendar.js";import"../calendar/model/utils.js";import"../accordion/Accordion.js";import"react";import"react-dom";import"../modal/ui/IframeModalContent.js";import"../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as r}from"../icon/Icon.js";import"../table/ui/primitives/Primitives.js";import"../carousel/ui/CarouselContent.js";import"../slot/Slot.js";import"../formElements/uncontrolled/autocomplete/Autocomplete.js";import"../formElements/uncontrolled/checkbox/Checkbox.js";import"../formElements/uncontrolled/combobox/combobox.js";import"../formElements/uncontrolled/dayPicker/DayPicker.js";import"../formElements/uncontrolled/input/Input.js";import"../formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../formElements/uncontrolled/maskInput/MaskInput.js";import"../formElements/uncontrolled/radio/RadioGroup.js";import"../formElements/uncontrolled/radio/ui/RadioItem.js";import"../formElements/uncontrolled/slider/SliderBase.js";import"../formElements/uncontrolled/switch/Switch.js";import"../formElements/uncontrolled/textarea/Textarea.js";import"../formElements/uncontrolled/uploader/UploaderBase.js";import"../formElements/uncontrolled/inputCurrency/InputCurrency.js";import"../formElements/controlled/editor/ui/Editor.js";import"../formElements/controlled/input/MaskInputControl.js";import"../dropdownList/ui/dropdownItem/DropdownItem.js";const D={main:o(r,{name:"brandLogos/logoMain"}),white:o(r,{name:"brandLogos/logoWhite"}),gray:o(r,{name:"brandLogos/logoGray"}),black:o(r,{name:"brandLogos/logoBlack"}),business:o(r,{name:"brandLogos/logoBusiness"}),insurance:o(r,{name:"brandLogos/logoInsurance"})};export{D as brandLogos};
|
|
2
2
|
//# sourceMappingURL=BrandLogos.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrandLogos.js","sources":["../../../../../lib/shared/ui/brandLogos/BrandLogos.tsx"],"sourcesContent":["import type { ReactElement } from 'react'\nimport { Icon } from '$/shared/ui'\n\nexport type BrandLogoVariant = 'main' | 'white' | 'gray' | 'black' | 'business' | 'insurance'\ntype BrandLogosVariants = Record<BrandLogoVariant, ReactElement>\n\nexport const brandLogos: BrandLogosVariants = {\n main: <Icon name='brandLogos/logoMain' />,\n white: <Icon name='brandLogos/logoWhite' />,\n gray: <Icon name='brandLogos/logoGray' />,\n black: <Icon name='brandLogos/logoBlack' />,\n business: <Icon name='brandLogos/logoBusiness' />,\n insurance: <Icon name='brandLogos/logoInsurance' />\n} as const\n"],"names":["brandLogos","jsx","Icon"],"mappings":"
|
|
1
|
+
{"version":3,"file":"BrandLogos.js","sources":["../../../../../lib/shared/ui/brandLogos/BrandLogos.tsx"],"sourcesContent":["import type { ReactElement } from 'react'\nimport { Icon } from '$/shared/ui'\n\nexport type BrandLogoVariant = 'main' | 'white' | 'gray' | 'black' | 'business' | 'insurance'\ntype BrandLogosVariants = Record<BrandLogoVariant, ReactElement>\n\nexport const brandLogos: BrandLogosVariants = {\n main: <Icon name='brandLogos/logoMain' />,\n white: <Icon name='brandLogos/logoWhite' />,\n gray: <Icon name='brandLogos/logoGray' />,\n black: <Icon name='brandLogos/logoBlack' />,\n business: <Icon name='brandLogos/logoBusiness' />,\n insurance: <Icon name='brandLogos/logoInsurance' />\n} as const\n"],"names":["brandLogos","jsx","Icon"],"mappings":"6gDAMO,MAAMA,EAAiC,CAC5C,KAAMC,EAACC,EAAA,CAAK,KAAK,qBAAA,CAAsB,EACvC,MAAOD,EAACC,EAAA,CAAK,KAAK,sBAAA,CAAuB,EACzC,KAAMD,EAACC,EAAA,CAAK,KAAK,qBAAA,CAAsB,EACvC,MAAOD,EAACC,EAAA,CAAK,KAAK,sBAAA,CAAuB,EACzC,SAAUD,EAACC,EAAA,CAAK,KAAK,yBAAA,CAA0B,EAC/C,UAAWD,EAACC,EAAA,CAAK,KAAK,0BAAA,CAA2B,CACnD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import"../../../../../node_modules/classnames/index.js";import"react";import{SlideProductCard as r}from"../ui/slideVariants/SlideProductCard.js";import{SlideOnlyImage as o}from"../ui/slideVariants/SlideOnlyImage.js";import{SlideFullScreen as i}from"../ui/slideVariants/SlideFullScreen.js";import"../ui/CarouselContent.js";const m={dragFree:!0,loop:!1,align:"start",slidesToScroll:1},f={position:"center",deskVisible:!0,mobVisible:!0},p={position:"top-right",deskVisible:!0,mobVisible:!1},S={active:!0},b=t=>{switch(t.variant){case"productCard":return e(r,{...t});case"onlyImage":return e(o,{...t});case"fullScreen":return e(i,{...t})}};export{S as defaultAutoPlayOptions,m as defaultCarouselOptions,f as defaultDotsOptions,p as defaultNavArrowOptions,b as renderSlideVariant};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../../../../lib/shared/ui/carousel/model/helpers.tsx"],"sourcesContent":["import type { EmblaOptionsType } from 'embla-carousel'\nimport type { AutoplayOptionsType } from 'embla-carousel-autoplay'\nimport { SlideFullScreen, SlideOnlyImage, SlideProductCard } from '../ui'\nimport type { CarouselSlideVariant, DotsOptions, NavArrowOptions } from './types'\nimport type { DiscriminatedUnion } from '$/shared/types'\n\nexport const defaultCarouselOptions: EmblaOptionsType = {\n dragFree: true,\n loop: false,\n align: 'start',\n slidesToScroll: 1\n}\n\nexport const defaultDotsOptions: DotsOptions = {\n position: 'center',\n deskVisible: true,\n mobVisible: true\n}\n\nexport const defaultNavArrowOptions: NavArrowOptions = {\n position: 'top-right',\n deskVisible: true,\n mobVisible: false\n}\n\nexport const defaultAutoPlayOptions: AutoplayOptionsType = {\n active: true\n}\n\nexport const renderSlideVariant = (props: DiscriminatedUnion<'variant', CarouselSlideVariant>) => {\n switch (props.variant) {\n case 'productCard':\n return <SlideProductCard {...props} />\n case 'onlyImage':\n return <SlideOnlyImage {...props} />\n case 'fullScreen':\n return <SlideFullScreen {...props} />\n }\n}\n"],"names":["defaultCarouselOptions","defaultDotsOptions","defaultNavArrowOptions","defaultAutoPlayOptions","renderSlideVariant","props","jsx","SlideProductCard","SlideOnlyImage","SlideFullScreen"],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../../lib/shared/ui/carousel/model/helpers.tsx"],"sourcesContent":["import type { EmblaOptionsType } from 'embla-carousel'\nimport type { AutoplayOptionsType } from 'embla-carousel-autoplay'\nimport { SlideFullScreen, SlideOnlyImage, SlideProductCard } from '../ui'\nimport type { CarouselSlideVariant, DotsOptions, NavArrowOptions } from './types'\nimport type { DiscriminatedUnion } from '$/shared/types'\n\nexport const defaultCarouselOptions: EmblaOptionsType = {\n dragFree: true,\n loop: false,\n align: 'start',\n slidesToScroll: 1\n}\n\nexport const defaultDotsOptions: DotsOptions = {\n position: 'center',\n deskVisible: true,\n mobVisible: true\n}\n\nexport const defaultNavArrowOptions: NavArrowOptions = {\n position: 'top-right',\n deskVisible: true,\n mobVisible: false\n}\n\nexport const defaultAutoPlayOptions: AutoplayOptionsType = {\n active: true\n}\n\nexport const renderSlideVariant = (props: DiscriminatedUnion<'variant', CarouselSlideVariant>) => {\n switch (props.variant) {\n case 'productCard':\n return <SlideProductCard {...props} />\n case 'onlyImage':\n return <SlideOnlyImage {...props} />\n case 'fullScreen':\n return <SlideFullScreen {...props} />\n }\n}\n"],"names":["defaultCarouselOptions","defaultDotsOptions","defaultNavArrowOptions","defaultAutoPlayOptions","renderSlideVariant","props","jsx","SlideProductCard","SlideOnlyImage","SlideFullScreen"],"mappings":"0WAMO,MAAMA,EAA2C,CACtD,SAAU,GACV,KAAM,GACN,MAAO,QACP,eAAgB,CAClB,EAEaC,EAAkC,CAC7C,SAAU,SACV,YAAa,GACb,WAAY,EACd,EAEaC,EAA0C,CACrD,SAAU,YACV,YAAa,GACb,WAAY,EACd,EAEaC,EAA8C,CACzD,OAAQ,EACV,EAEaC,EAAsBC,GAA+D,CAChG,OAAQA,EAAM,QAAA,CACZ,IAAK,cACH,OAAOC,EAACC,EAAA,CAAkB,GAAGF,CAAA,CAAO,EACtC,IAAK,YACH,OAAOC,EAACE,EAAA,CAAgB,GAAGH,CAAA,CAAO,EACpC,IAAK,aACH,OAAOC,EAACG,EAAA,CAAiB,GAAGJ,CAAA,CAAO,CAAA,CAEzC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useMemo as p,useCallback as y}from"react";import{TypeGuards as a}from"../../../../../utils/typeGuards.js";const
|
|
1
|
+
import{useMemo as p,useCallback as y}from"react";import"../../../../../../../node_modules/classnames/index.js";import{TypeGuards as a}from"../../../../../utils/typeGuards.js";const A=({options:f,multiple:n,onChange:c,returnValue:r,value:i})=>{const e=p(()=>{const s=new Map;for(const t of f){const o=r?r(t):t.value;s.set(o,t)}return s},[f]),m=y(s=>{if(!s){n||c(null);return}if(n){if(!a.isArray(s))return;const t=s.map(o=>r?r(o):o.value);c(t)}else{const t=s,o=r?r(t):t.value;c(o)}},[]),d=p(()=>i?n?a.isArray(i)?i.map(o=>e.get(o)).filter(o=>o!==void 0):[]:e.get(i)??null:n?[]:null,[n,e,i]);return{changeHandler:m,selected:d}};export{A as useComboboxControl};
|
|
2
2
|
//# sourceMappingURL=useComboboxControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useComboboxControl.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/combobox/hooks/useComboboxControl.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport { type ChangeHandler, type ComboboxItemOption, type ComboboxValue } from '$/shared/ui/formElements/uncontrolled/combobox'\nimport { TypeGuards } from '$/shared/utils'\n\ntype Value<Multi extends boolean> = Multi extends true ? string[] : string | null\n\ninterface UseComboboxControlProps<Multi extends boolean> {\n multiple?: Multi\n options: ComboboxItemOption[]\n returnValue?: (option: ComboboxItemOption) => string | null\n onChange: (...event: any[]) => void\n value: Value<Multi>\n}\n\nexport const useComboboxControl = <Multi extends boolean>({\n options,\n multiple,\n onChange,\n returnValue,\n value\n}: UseComboboxControlProps<Multi>) => {\n const optionsMap = useMemo(() => {\n const map = new Map<string | null, ComboboxItemOption>()\n\n for (const option of options) {\n const value = returnValue ? returnValue(option) : option.value\n map.set(value, option)\n }\n\n return map\n }, [options])\n\n const changeHandler = useCallback<ChangeHandler<Multi>>((selected) => {\n if (!selected) {\n if (!multiple) onChange(null)\n return\n }\n\n if (multiple) {\n if (!TypeGuards.isArray(selected)) {\n return\n }\n\n const stringValues = selected.map((option) => (returnValue ? returnValue(option) : option.value))\n\n onChange(stringValues as string[])\n } else {\n const singleOption = selected as ComboboxItemOption\n const stringValue = returnValue ? returnValue(singleOption) : singleOption.value\n\n onChange(stringValue as string)\n }\n }, [])\n\n const selected = useMemo<ComboboxValue<Multi>>(() => {\n if (!value) {\n return (multiple ? [] : null) as ComboboxValue<Multi>\n }\n\n if (multiple) {\n if (!TypeGuards.isArray(value)) {\n return [] as unknown as ComboboxValue<Multi>\n }\n\n const selectedOptionsArray = value\n .map((stringValue: string) => optionsMap.get(stringValue))\n .filter((option): option is ComboboxItemOption => option !== undefined)\n\n return selectedOptionsArray as ComboboxValue<Multi>\n }\n\n const selectedOption = optionsMap.get(value as string)\n\n return (selectedOption ?? null) as ComboboxValue<Multi>\n }, [multiple, optionsMap, value])\n\n return {\n changeHandler,\n selected\n }\n}\n"],"names":["useComboboxControl","options","multiple","onChange","returnValue","value","optionsMap","useMemo","map","option","changeHandler","useCallback","selected","TypeGuards","stringValues","singleOption","stringValue"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useComboboxControl.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/combobox/hooks/useComboboxControl.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport { type ChangeHandler, type ComboboxItemOption, type ComboboxValue } from '$/shared/ui/formElements/uncontrolled/combobox'\nimport { TypeGuards } from '$/shared/utils'\n\ntype Value<Multi extends boolean> = Multi extends true ? string[] : string | null\n\ninterface UseComboboxControlProps<Multi extends boolean> {\n multiple?: Multi\n options: ComboboxItemOption[]\n returnValue?: (option: ComboboxItemOption) => string | null\n onChange: (...event: any[]) => void\n value: Value<Multi>\n}\n\nexport const useComboboxControl = <Multi extends boolean>({\n options,\n multiple,\n onChange,\n returnValue,\n value\n}: UseComboboxControlProps<Multi>) => {\n const optionsMap = useMemo(() => {\n const map = new Map<string | null, ComboboxItemOption>()\n\n for (const option of options) {\n const value = returnValue ? returnValue(option) : option.value\n map.set(value, option)\n }\n\n return map\n }, [options])\n\n const changeHandler = useCallback<ChangeHandler<Multi>>((selected) => {\n if (!selected) {\n if (!multiple) onChange(null)\n return\n }\n\n if (multiple) {\n if (!TypeGuards.isArray(selected)) {\n return\n }\n\n const stringValues = selected.map((option) => (returnValue ? returnValue(option) : option.value))\n\n onChange(stringValues as string[])\n } else {\n const singleOption = selected as ComboboxItemOption\n const stringValue = returnValue ? returnValue(singleOption) : singleOption.value\n\n onChange(stringValue as string)\n }\n }, [])\n\n const selected = useMemo<ComboboxValue<Multi>>(() => {\n if (!value) {\n return (multiple ? [] : null) as ComboboxValue<Multi>\n }\n\n if (multiple) {\n if (!TypeGuards.isArray(value)) {\n return [] as unknown as ComboboxValue<Multi>\n }\n\n const selectedOptionsArray = value\n .map((stringValue: string) => optionsMap.get(stringValue))\n .filter((option): option is ComboboxItemOption => option !== undefined)\n\n return selectedOptionsArray as ComboboxValue<Multi>\n }\n\n const selectedOption = optionsMap.get(value as string)\n\n return (selectedOption ?? null) as ComboboxValue<Multi>\n }, [multiple, optionsMap, value])\n\n return {\n changeHandler,\n selected\n }\n}\n"],"names":["useComboboxControl","options","multiple","onChange","returnValue","value","optionsMap","useMemo","map","option","changeHandler","useCallback","selected","TypeGuards","stringValues","singleOption","stringValue"],"mappings":"+KAcO,MAAMA,EAAqB,CAAwB,CACxD,QAAAC,EACA,SAAAC,EACA,SAAAC,EACA,YAAAC,EACA,MAAAC,CACF,IAAsC,CACpC,MAAMC,EAAaC,EAAQ,IAAM,CAC/B,MAAMC,MAAU,IAEhB,UAAWC,KAAUR,EAAS,CAC5B,MAAMI,EAAQD,EAAcA,EAAYK,CAAM,EAAIA,EAAO,MACzDD,EAAI,IAAIH,EAAOI,CAAM,CACvB,CAEA,OAAOD,CACT,EAAG,CAACP,CAAO,CAAC,EAENS,EAAgBC,EAAmCC,GAAa,CACpE,GAAI,CAACA,EAAU,CACRV,GAAUC,EAAS,IAAI,EAC5B,MACF,CAEA,GAAID,EAAU,CACZ,GAAI,CAACW,EAAW,QAAQD,CAAQ,EAC9B,OAGF,MAAME,EAAeF,EAAS,IAAKH,GAAYL,EAAcA,EAAYK,CAAM,EAAIA,EAAO,KAAM,EAEhGN,EAASW,CAAwB,CACnC,KAAO,CACL,MAAMC,EAAeH,EACfI,EAAcZ,EAAcA,EAAYW,CAAY,EAAIA,EAAa,MAE3EZ,EAASa,CAAqB,CAChC,CACF,EAAG,CAAA,CAAE,EAECJ,EAAWL,EAA8B,IACxCF,EAIDH,EACGW,EAAW,QAAQR,CAAK,EAIAA,EAC1B,IAAKW,GAAwBV,EAAW,IAAIU,CAAW,CAAC,EACxD,OAAQP,GAAyCA,IAAW,MAAS,EAL/D,CAAA,EAUYH,EAAW,IAAID,CAAe,GAE3B,KAjBhBH,EAAW,CAAA,EAAK,KAkBzB,CAACA,EAAUI,EAAYD,CAAK,CAAC,EAEhC,MAAO,CACL,cAAAK,EACA,SAAAE,CAAA,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"react/jsx-runtime";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import{formatDateToLocaleString as m}from"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../../../uncontrolled/inputCurrency/InputCurrency.js";import"../../editor/ui/Editor.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";function
|
|
1
|
+
import"react/jsx-runtime";import"../../../../../../../node_modules/classnames/index.js";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import{formatDateToLocaleString as m}from"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../../../uncontrolled/inputCurrency/InputCurrency.js";import"../../editor/ui/Editor.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";function H(o,t){switch(o){case"range":const[r,i]=Object.values(t).map(p=>new Date(p));return[r?m(r):void 0,i?m(i):void 0].join("-");case"single":default:const e=t?new Date(t):new Date;return t?m(e):""}}function J(o,t){switch(o){case"range":if(t){const r=Object.entries(t).map(([i,e])=>[i,new Date(e)]);return Object.fromEntries(r)}return{};case"single":default:return t?new Date(t):new Date}}export{J as getCurrentDate,H as getInitialValue};
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/dayPickerControl/model/utils.ts"],"sourcesContent":["import type { DateRange } from 'react-day-picker'\nimport { formatDateToLocaleString } from '$/shared/ui'\n\ntype IsoDateRange = {\n from?: string\n to?: string\n}\n\n/**\n * Функция для получения инит состояния поля ввода\n * @param mode режим календаря (single | range)\n * @param value текущее состояние поля\n */\nexport function getInitialValue(mode: 'single', value?: string): string\nexport function getInitialValue(mode: 'range', value?: IsoDateRange): string\nexport function getInitialValue(mode: 'multiple', value?: IsoDateRange): string\nexport function getInitialValue(mode: 'single' | 'multiple' | 'range', value?: IsoDateRange | string) {\n switch (mode) {\n case 'range':\n const [from, to] = Object.values(value as IsoDateRange).map((date) => new Date(date))\n\n return [from ? formatDateToLocaleString(from) : undefined, to ? formatDateToLocaleString(to) : undefined].join('-')\n case 'single':\n default:\n const date = value ? new Date(value as string) : new Date()\n\n return value ? formatDateToLocaleString(date) : ''\n }\n}\n\n/**\n * Функция для получения объекта даты по текущему состоянию\n * @param mode режим календаря (single | range)\n * @param value текущее состояние поля\n *\n * @returns Date если mode 'single'\n * @returns DateRange если mode 'range'\n */\nexport function getCurrentDate(mode: 'single', value?: string): Date\nexport function getCurrentDate(mode: 'range', value?: IsoDateRange): DateRange\nexport function getCurrentDate(mode: 'multiple', value?: IsoDateRange): Date\nexport function getCurrentDate(mode: 'single' | 'multiple' | 'range', value?: string | IsoDateRange): Date | DateRange {\n switch (mode) {\n case 'range':\n if (value) {\n const entries = Object.entries(value as IsoDateRange).map(([key, value]) => [key, new Date(value)])\n\n return Object.fromEntries(entries)\n }\n\n return {} as DateRange\n case 'single':\n default:\n return value ? new Date(value as string) : new Date()\n }\n}\n"],"names":["getInitialValue","mode","value","from","to","date","formatDateToLocaleString","getCurrentDate","entries","key"],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/dayPickerControl/model/utils.ts"],"sourcesContent":["import type { DateRange } from 'react-day-picker'\nimport { formatDateToLocaleString } from '$/shared/ui'\n\ntype IsoDateRange = {\n from?: string\n to?: string\n}\n\n/**\n * Функция для получения инит состояния поля ввода\n * @param mode режим календаря (single | range)\n * @param value текущее состояние поля\n */\nexport function getInitialValue(mode: 'single', value?: string): string\nexport function getInitialValue(mode: 'range', value?: IsoDateRange): string\nexport function getInitialValue(mode: 'multiple', value?: IsoDateRange): string\nexport function getInitialValue(mode: 'single' | 'multiple' | 'range', value?: IsoDateRange | string) {\n switch (mode) {\n case 'range':\n const [from, to] = Object.values(value as IsoDateRange).map((date) => new Date(date))\n\n return [from ? formatDateToLocaleString(from) : undefined, to ? formatDateToLocaleString(to) : undefined].join('-')\n case 'single':\n default:\n const date = value ? new Date(value as string) : new Date()\n\n return value ? formatDateToLocaleString(date) : ''\n }\n}\n\n/**\n * Функция для получения объекта даты по текущему состоянию\n * @param mode режим календаря (single | range)\n * @param value текущее состояние поля\n *\n * @returns Date если mode 'single'\n * @returns DateRange если mode 'range'\n */\nexport function getCurrentDate(mode: 'single', value?: string): Date\nexport function getCurrentDate(mode: 'range', value?: IsoDateRange): DateRange\nexport function getCurrentDate(mode: 'multiple', value?: IsoDateRange): Date\nexport function getCurrentDate(mode: 'single' | 'multiple' | 'range', value?: string | IsoDateRange): Date | DateRange {\n switch (mode) {\n case 'range':\n if (value) {\n const entries = Object.entries(value as IsoDateRange).map(([key, value]) => [key, new Date(value)])\n\n return Object.fromEntries(entries)\n }\n\n return {} as DateRange\n case 'single':\n default:\n return value ? new Date(value as string) : new Date()\n }\n}\n"],"names":["getInitialValue","mode","value","from","to","date","formatDateToLocaleString","getCurrentDate","entries","key"],"mappings":"29CAgBO,SAASA,EAAgBC,EAAuCC,EAA+B,CACpG,OAAQD,EAAA,CACN,IAAK,QACH,KAAM,CAACE,EAAMC,CAAE,EAAI,OAAO,OAAOF,CAAqB,EAAE,IAAKG,GAAS,IAAI,KAAKA,CAAI,CAAC,EAEpF,MAAO,CAACF,EAAOG,EAAyBH,CAAI,EAAI,OAAWC,EAAKE,EAAyBF,CAAE,EAAI,MAAS,EAAE,KAAK,GAAG,EACpH,IAAK,SACL,QACE,MAAMC,EAAOH,EAAQ,IAAI,KAAKA,CAAe,MAAQ,KAErD,OAAOA,EAAQI,EAAyBD,CAAI,EAAI,EAAA,CAEtD,CAaO,SAASE,EAAeN,EAAuCC,EAAiD,CACrH,OAAQD,EAAA,CACN,IAAK,QACH,GAAIC,EAAO,CACT,MAAMM,EAAU,OAAO,QAAQN,CAAqB,EAAE,IAAI,CAAC,CAACO,EAAKP,CAAK,IAAM,CAACO,EAAK,IAAI,KAAKP,CAAK,CAAC,CAAC,EAElG,OAAO,OAAO,YAAYM,CAAO,CACnC,CAEA,MAAO,CAAA,EACT,IAAK,SACL,QACE,OAAON,EAAQ,IAAI,KAAKA,CAAe,MAAQ,IAAK,CAE1D"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as i}from"react/jsx-runtime";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as o}from"../../../../icon/Icon.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../../../uncontrolled/inputCurrency/InputCurrency.js";import"../ui/Editor.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const
|
|
1
|
+
import{jsx as i}from"react/jsx-runtime";import"../../../../../../../node_modules/classnames/index.js";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as o}from"../../../../icon/Icon.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../../../uncontrolled/inputCurrency/InputCurrency.js";import"../ui/Editor.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const j=[1,2,3,4],w={1:"mob-headline-bold-m desktop:desk-headline-bold-l",2:"mob-headline-bold-s desktop:desk-headline-bold-m",3:"mob-title-bold-l desktop:desk-title-bold-l",4:"mob-title-bold-m desktop:desk-title-bold-s"},M=[{label:"12px",value:"12px"},{label:"14px",value:"14px"},{label:"16px",value:"16px"},{label:"18px",value:"18px"},{label:"20px",value:"20px"},{label:"24px",value:"24px"}],U=["#292929","#FFFFFF","#40465A","#5A6E85","#A9B6C5","#94A4B7","#003790","#042E73","#809BC7","#76BC21","#F49F00","#F42500"],q=e=>[{label:"Жирный текст",icon:i(o,{name:"editor/bold",className:"size-4"}),onClick:()=>e.chain().focus().toggleBold().run(),isActive:e.isActive("bold")},{label:"Курсивный текст",icon:i(o,{name:"editor/italic",className:"size-4"}),onClick:()=>e.chain().focus().toggleItalic().run(),isActive:e.isActive("italic")},{label:"Подчеркнутый текст",icon:i(o,{name:"editor/underline",className:"size-4"}),onClick:()=>e.chain().focus().toggleUnderline().run(),isActive:e.isActive("underline")},{label:"Зачеркнутый текст",icon:i(o,{name:"editor/strikethrough",className:"size-4"}),onClick:()=>e.chain().focus().toggleStrike().run(),isActive:e.isActive("strike")},{label:"Обычный текст",icon:i(o,{name:"editor/typography",className:"size-4"}),onClick:()=>e.chain().focus().setParagraph().run()},{label:"Маркированный список",icon:i(o,{name:"editor/list",className:"size-4"}),onClick:()=>e.chain().focus().toggleBulletList().run(),isActive:e.isActive("bulletList")},{label:"Перенос строки",icon:i(o,{name:"editor/space",className:"size-4"}),onClick:()=>e.chain().focus().setHardBreak().run()},{label:"Отменить",icon:i(o,{name:"editor/undo",className:"size-4"}),onClick:()=>e.chain().focus().undo().run()},{label:"Вернуть",icon:i(o,{name:"editor/redo",className:"size-4"}),onClick:()=>e.chain().focus().redo().run()},{label:"Очистить стили и теги",icon:i(o,{name:"editor/removeFormatting",className:"size-4"}),onClick:()=>e.chain().focus().clearNodes().unsetAllMarks().run()},{label:"Удалить все",icon:i(o,{name:"general/close",className:"size-4"}),onClick:()=>e.commands.clearContent()}];export{U as editorAllowedColors,w as editorHeadingClasses,M as fontSizesOptions,j as headingsOptions,q as renderEditorPanel};
|
|
2
2
|
//# sourceMappingURL=helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/model/helper.tsx"],"sourcesContent":["import type { Editor } from '@tiptap/react'\nimport { type ColorOption, type HeadingLevel } from './types'\nimport { Icon } from '$/shared/ui'\n\nexport const headingsOptions: HeadingLevel[] = [1, 2, 3, 4]\n\nexport const editorHeadingClasses: Record<number, string> = {\n 1: 'mob-headline-bold-m desktop:desk-headline-bold-l',\n 2: 'mob-headline-bold-s desktop:desk-headline-bold-m',\n 3: 'mob-title-bold-l desktop:desk-title-bold-l',\n 4: 'mob-title-bold-m desktop:desk-title-bold-s'\n}\n\nexport const fontSizesOptions = [\n { label: '12px', value: '12px' },\n { label: '14px', value: '14px' },\n { label: '16px', value: '16px' },\n { label: '18px', value: '18px' },\n { label: '20px', value: '20px' },\n { label: '24px', value: '24px' }\n]\n\nexport const editorAllowedColors: ColorOption[] = [\n '#292929',\n '#FFFFFF',\n '#40465A',\n '#5A6E85',\n '#A9B6C5',\n '#94A4B7',\n '#003790',\n '#042E73',\n '#809BC7',\n '#76BC21',\n '#F49F00',\n '#F42500'\n]\n\nexport const renderEditorPanel = (editor: Editor) => [\n {\n label: 'Жирный текст',\n icon: <Icon name='editor/bold' className='size-4' />,\n onClick: () => editor.chain().focus().toggleBold().run(),\n isActive: editor.isActive('bold')\n },\n {\n label: 'Курсивный текст',\n icon: <Icon name='editor/italic' className='size-4' />,\n onClick: () => editor.chain().focus().toggleItalic().run(),\n isActive: editor.isActive('italic')\n },\n {\n label: 'Подчеркнутый текст',\n icon: <Icon name='editor/underline' className='size-4' />,\n onClick: () => editor.chain().focus().toggleUnderline().run(),\n isActive: editor.isActive('underline')\n },\n {\n label: 'Зачеркнутый текст',\n icon: <Icon name='editor/strikethrough' className='size-4' />,\n onClick: () => editor.chain().focus().toggleStrike().run(),\n isActive: editor.isActive('strike')\n },\n {\n label: 'Обычный текст',\n icon: <Icon name='editor/typography' className='size-4' />,\n onClick: () => editor.chain().focus().setParagraph().run()\n },\n {\n label: 'Маркированный список',\n icon: <Icon name='editor/list' className='size-4' />,\n onClick: () => editor.chain().focus().toggleBulletList().run(),\n isActive: editor.isActive('bulletList')\n },\n {\n label: 'Перенос строки',\n icon: <Icon name='editor/space' className='size-4' />,\n onClick: () => editor.chain().focus().setHardBreak().run()\n },\n {\n label: 'Отменить',\n icon: <Icon name='editor/undo' className='size-4' />,\n onClick: () => editor.chain().focus().undo().run()\n },\n {\n label: 'Вернуть',\n icon: <Icon name='editor/redo' className='size-4' />,\n onClick: () => editor.chain().focus().redo().run()\n },\n {\n label: 'Очистить стили и теги',\n icon: <Icon name='editor/removeFormatting' className='size-4' />,\n onClick: () => editor.chain().focus().clearNodes().unsetAllMarks().run()\n },\n {\n label: 'Удалить все',\n icon: <Icon name='general/close' className='size-4' />,\n onClick: () => editor.commands.clearContent()\n }\n]\n"],"names":["headingsOptions","editorHeadingClasses","fontSizesOptions","editorAllowedColors","renderEditorPanel","editor","jsx","Icon"],"mappings":"
|
|
1
|
+
{"version":3,"file":"helper.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/model/helper.tsx"],"sourcesContent":["import type { Editor } from '@tiptap/react'\nimport { type ColorOption, type HeadingLevel } from './types'\nimport { Icon } from '$/shared/ui'\n\nexport const headingsOptions: HeadingLevel[] = [1, 2, 3, 4]\n\nexport const editorHeadingClasses: Record<number, string> = {\n 1: 'mob-headline-bold-m desktop:desk-headline-bold-l',\n 2: 'mob-headline-bold-s desktop:desk-headline-bold-m',\n 3: 'mob-title-bold-l desktop:desk-title-bold-l',\n 4: 'mob-title-bold-m desktop:desk-title-bold-s'\n}\n\nexport const fontSizesOptions = [\n { label: '12px', value: '12px' },\n { label: '14px', value: '14px' },\n { label: '16px', value: '16px' },\n { label: '18px', value: '18px' },\n { label: '20px', value: '20px' },\n { label: '24px', value: '24px' }\n]\n\nexport const editorAllowedColors: ColorOption[] = [\n '#292929',\n '#FFFFFF',\n '#40465A',\n '#5A6E85',\n '#A9B6C5',\n '#94A4B7',\n '#003790',\n '#042E73',\n '#809BC7',\n '#76BC21',\n '#F49F00',\n '#F42500'\n]\n\nexport const renderEditorPanel = (editor: Editor) => [\n {\n label: 'Жирный текст',\n icon: <Icon name='editor/bold' className='size-4' />,\n onClick: () => editor.chain().focus().toggleBold().run(),\n isActive: editor.isActive('bold')\n },\n {\n label: 'Курсивный текст',\n icon: <Icon name='editor/italic' className='size-4' />,\n onClick: () => editor.chain().focus().toggleItalic().run(),\n isActive: editor.isActive('italic')\n },\n {\n label: 'Подчеркнутый текст',\n icon: <Icon name='editor/underline' className='size-4' />,\n onClick: () => editor.chain().focus().toggleUnderline().run(),\n isActive: editor.isActive('underline')\n },\n {\n label: 'Зачеркнутый текст',\n icon: <Icon name='editor/strikethrough' className='size-4' />,\n onClick: () => editor.chain().focus().toggleStrike().run(),\n isActive: editor.isActive('strike')\n },\n {\n label: 'Обычный текст',\n icon: <Icon name='editor/typography' className='size-4' />,\n onClick: () => editor.chain().focus().setParagraph().run()\n },\n {\n label: 'Маркированный список',\n icon: <Icon name='editor/list' className='size-4' />,\n onClick: () => editor.chain().focus().toggleBulletList().run(),\n isActive: editor.isActive('bulletList')\n },\n {\n label: 'Перенос строки',\n icon: <Icon name='editor/space' className='size-4' />,\n onClick: () => editor.chain().focus().setHardBreak().run()\n },\n {\n label: 'Отменить',\n icon: <Icon name='editor/undo' className='size-4' />,\n onClick: () => editor.chain().focus().undo().run()\n },\n {\n label: 'Вернуть',\n icon: <Icon name='editor/redo' className='size-4' />,\n onClick: () => editor.chain().focus().redo().run()\n },\n {\n label: 'Очистить стили и теги',\n icon: <Icon name='editor/removeFormatting' className='size-4' />,\n onClick: () => editor.chain().focus().clearNodes().unsetAllMarks().run()\n },\n {\n label: 'Удалить все',\n icon: <Icon name='general/close' className='size-4' />,\n onClick: () => editor.commands.clearContent()\n }\n]\n"],"names":["headingsOptions","editorHeadingClasses","fontSizesOptions","editorAllowedColors","renderEditorPanel","editor","jsx","Icon"],"mappings":"4+CAIO,MAAMA,EAAkC,CAAC,EAAG,EAAG,EAAG,CAAC,EAE7CC,EAA+C,CAC1D,EAAG,mDACH,EAAG,mDACH,EAAG,6CACH,EAAG,4CACL,EAEaC,EAAmB,CAC9B,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,CAC1B,EAEaC,EAAqC,CAChD,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EAEaC,EAAqBC,GAAmB,CACnD,CACE,MAAO,eACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,WAAA,EAAa,IAAA,EACnD,SAAUA,EAAO,SAAS,MAAM,CAAA,EAElC,CACE,MAAO,kBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,gBAAgB,UAAU,SAAS,EACpD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,aAAA,EAAe,IAAA,EACrD,SAAUA,EAAO,SAAS,QAAQ,CAAA,EAEpC,CACE,MAAO,qBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,mBAAmB,UAAU,SAAS,EACvD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,gBAAA,EAAkB,IAAA,EACxD,SAAUA,EAAO,SAAS,WAAW,CAAA,EAEvC,CACE,MAAO,oBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,uBAAuB,UAAU,SAAS,EAC3D,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,aAAA,EAAe,IAAA,EACrD,SAAUA,EAAO,SAAS,QAAQ,CAAA,EAEpC,CACE,MAAO,gBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,oBAAoB,UAAU,SAAS,EACxD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,aAAA,EAAe,IAAA,CAAI,EAE3D,CACE,MAAO,uBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,iBAAA,EAAmB,IAAA,EACzD,SAAUA,EAAO,SAAS,YAAY,CAAA,EAExC,CACE,MAAO,iBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,eAAe,UAAU,SAAS,EACnD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,aAAA,EAAe,IAAA,CAAI,EAE3D,CACE,MAAO,WACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,CAAI,EAEnD,CACE,MAAO,UACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,CAAI,EAEnD,CACE,MAAO,wBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,0BAA0B,UAAU,SAAS,EAC9D,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAa,cAAA,EAAgB,IAAA,CAAI,EAEzE,CACE,MAAO,cACP,KAAMC,EAACC,EAAA,CAAK,KAAK,gBAAgB,UAAU,SAAS,EACpD,QAAS,IAAMF,EAAO,SAAS,aAAA,CAAa,CAEhD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as C}from"react/jsx-runtime";import{forwardRef as S,useState as q}from"react";import{useDebounceValue as D}from"../../../../hooks/useDebounce.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../checkbox/Checkbox.js";import{Combobox as O}from"../combobox/combobox.js";import"../dayPicker/DayPicker.js";import"../input/Input.js";import"../inputOtp/InputOtpBase.js";import"../maskInput/MaskInput.js";import"../radio/RadioGroup.js";import"../radio/ui/RadioItem.js";import"../slider/SliderBase.js";import"../switch/Switch.js";import"../textarea/Textarea.js";import"../uploader/UploaderBase.js";import"../inputCurrency/InputCurrency.js";import"../../controlled/editor/ui/Editor.js";import"../../controlled/input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";const
|
|
1
|
+
import{jsx as C}from"react/jsx-runtime";import{forwardRef as S,useState as q}from"react";import"../../../../../../node_modules/classnames/index.js";import{useDebounceValue as D}from"../../../../hooks/useDebounce.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../checkbox/Checkbox.js";import{Combobox as O}from"../combobox/combobox.js";import"../dayPicker/DayPicker.js";import"../input/Input.js";import"../inputOtp/InputOtpBase.js";import"../maskInput/MaskInput.js";import"../radio/RadioGroup.js";import"../radio/ui/RadioItem.js";import"../slider/SliderBase.js";import"../switch/Switch.js";import"../textarea/Textarea.js";import"../uploader/UploaderBase.js";import"../inputCurrency/InputCurrency.js";import"../../controlled/editor/ui/Editor.js";import"../../controlled/input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";const rt=S(({formatter:u,query:c,queryOptions:a,value:m,displayValue:o,limit:t=0,onChange:r,strategy:e="input-first",...f},b)=>{const[h,l]=q(m??""),n=e==="input-first"?m??"":h,d=e==="input-first"?r:l,p=D(n,100),g={enabled:t>0?p.length>=t:!0,...a},{data:s}=c(p,g),x=s?s.map(u):[];return C(O,{...f,ref:b,options:x,searchable:!0,filterDisabled:!0,inputValue:n,onInputChange:d,multiple:!1,displayValue:o,onChange:i=>{i&&r&&r(o?o(i):i.label)},empty:p.length<t?`Введите более ${t} символов для поиска`:void 0})});export{rt as AutocompleteBase};
|
|
2
2
|
//# sourceMappingURL=Autocomplete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.tsx"],"sourcesContent":["import { forwardRef, useState } from 'react'\nimport { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query'\nimport type { AutocompleteItemOption } from './types'\nimport { useDebounceValue } from '$/shared/hooks'\nimport { Combobox, type ComboboxProps, type ComboboxValue } from '$/shared/ui'\n\nexport interface AutocompleteBaseProps<TData>\n extends Omit<\n ComboboxProps<false>,\n 'options' | 'inputValue' | 'onInputChange' | 'searchable' | 'multiple' | 'value' | 'onChange'\n > {\n /**\n * Функция для запроса основанная на [@tanstack/query](https://tanstack.com/query/latest/docs/framework/react/overview)\n */\n query: (query: string, options?: Partial<UseQueryOptions<TData[]>>) => UseQueryResult<TData[]>\n /**\n * Параметры запроса\n */\n queryOptions?: Partial<UseQueryOptions<TData[]>>\n /**\n * Позволяет форматировать данные\n */\n formatter: (item: TData, index: number, array: TData[]) => AutocompleteItemOption<TData>\n /**\n * Значение инпута\n */\n value?: string\n /**\n * Handler инпута\n */\n onChange?: (value: string) => void\n /**\n * Стратегия управления полем\n * @variation `input-first` - источником правды является инпут\n * @variation `select-first` - источником правды является список\n * @default input-first\n */\n strategy?: 'input-first' | 'select-first'\n limit?: number\n}\n\nexport const AutocompleteBase = forwardRef(\n <TData,>(\n {\n formatter,\n query,\n queryOptions: initialQueryOptions,\n value,\n displayValue,\n limit = 0,\n onChange,\n strategy = 'input-first',\n ...props\n }: AutocompleteBaseProps<TData>,\n ref: React.ForwardedRef<HTMLInputElement>\n ) => {\n const [search, setSearch] = useState<string>(value ?? '')\n\n const inputValue = strategy === 'input-first' ? (value ?? '') : search\n const onInputChange = strategy === 'input-first' ? onChange : setSearch\n\n const debounceSearch = useDebounceValue(inputValue, 100)\n\n const queryOptions: Partial<UseQueryOptions<TData[]>> = {\n enabled: limit > 0 ? debounceSearch.length >= limit : true,\n ...initialQueryOptions\n }\n\n const { data } = query(debounceSearch, queryOptions)\n\n const options = data ? data.map(formatter) : []\n\n const onValueChange = (value: ComboboxValue<false>) => {\n if (!value) return\n\n if (onChange) onChange(displayValue ? displayValue(value) : value.label)\n }\n\n return (\n <Combobox\n {...props}\n ref={ref}\n options={options}\n searchable\n filterDisabled\n inputValue={inputValue}\n onInputChange={onInputChange}\n multiple={false}\n displayValue={displayValue}\n onChange={onValueChange}\n empty={debounceSearch.length < limit ? `Введите более ${limit} символов для поиска` : undefined}\n />\n )\n }\n) as <TData>(props: AutocompleteBaseProps<TData> & { ref: React.Ref<HTMLInputElement> }) => React.JSX.Element\n"],"names":["AutocompleteBase","forwardRef","formatter","query","initialQueryOptions","value","displayValue","limit","onChange","strategy","props","ref","search","setSearch","useState","inputValue","onInputChange","debounceSearch","useDebounceValue","queryOptions","data","options","jsx","Combobox"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Autocomplete.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.tsx"],"sourcesContent":["import { forwardRef, useState } from 'react'\nimport { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query'\nimport type { AutocompleteItemOption } from './types'\nimport { useDebounceValue } from '$/shared/hooks'\nimport { Combobox, type ComboboxProps, type ComboboxValue } from '$/shared/ui'\n\nexport interface AutocompleteBaseProps<TData>\n extends Omit<\n ComboboxProps<false>,\n 'options' | 'inputValue' | 'onInputChange' | 'searchable' | 'multiple' | 'value' | 'onChange'\n > {\n /**\n * Функция для запроса основанная на [@tanstack/query](https://tanstack.com/query/latest/docs/framework/react/overview)\n */\n query: (query: string, options?: Partial<UseQueryOptions<TData[]>>) => UseQueryResult<TData[]>\n /**\n * Параметры запроса\n */\n queryOptions?: Partial<UseQueryOptions<TData[]>>\n /**\n * Позволяет форматировать данные\n */\n formatter: (item: TData, index: number, array: TData[]) => AutocompleteItemOption<TData>\n /**\n * Значение инпута\n */\n value?: string\n /**\n * Handler инпута\n */\n onChange?: (value: string) => void\n /**\n * Стратегия управления полем\n * @variation `input-first` - источником правды является инпут\n * @variation `select-first` - источником правды является список\n * @default input-first\n */\n strategy?: 'input-first' | 'select-first'\n limit?: number\n}\n\nexport const AutocompleteBase = forwardRef(\n <TData,>(\n {\n formatter,\n query,\n queryOptions: initialQueryOptions,\n value,\n displayValue,\n limit = 0,\n onChange,\n strategy = 'input-first',\n ...props\n }: AutocompleteBaseProps<TData>,\n ref: React.ForwardedRef<HTMLInputElement>\n ) => {\n const [search, setSearch] = useState<string>(value ?? '')\n\n const inputValue = strategy === 'input-first' ? (value ?? '') : search\n const onInputChange = strategy === 'input-first' ? onChange : setSearch\n\n const debounceSearch = useDebounceValue(inputValue, 100)\n\n const queryOptions: Partial<UseQueryOptions<TData[]>> = {\n enabled: limit > 0 ? debounceSearch.length >= limit : true,\n ...initialQueryOptions\n }\n\n const { data } = query(debounceSearch, queryOptions)\n\n const options = data ? data.map(formatter) : []\n\n const onValueChange = (value: ComboboxValue<false>) => {\n if (!value) return\n\n if (onChange) onChange(displayValue ? displayValue(value) : value.label)\n }\n\n return (\n <Combobox\n {...props}\n ref={ref}\n options={options}\n searchable\n filterDisabled\n inputValue={inputValue}\n onInputChange={onInputChange}\n multiple={false}\n displayValue={displayValue}\n onChange={onValueChange}\n empty={debounceSearch.length < limit ? `Введите более ${limit} символов для поиска` : undefined}\n />\n )\n }\n) as <TData>(props: AutocompleteBaseProps<TData> & { ref: React.Ref<HTMLInputElement> }) => React.JSX.Element\n"],"names":["AutocompleteBase","forwardRef","formatter","query","initialQueryOptions","value","displayValue","limit","onChange","strategy","props","ref","search","setSearch","useState","inputValue","onInputChange","debounceSearch","useDebounceValue","queryOptions","data","options","jsx","Combobox"],"mappings":"gwCAyCO,MAAMA,GAAmBC,EAC9B,CACE,CACE,UAAAC,EACA,MAAAC,EACA,aAAcC,EACd,MAAAC,EACA,aAAAC,EACA,MAAAC,EAAQ,EACR,SAAAC,EACA,SAAAC,EAAW,cACX,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAiBT,GAAS,EAAE,EAElDU,EAAaN,IAAa,cAAiBJ,GAAS,GAAMO,EAC1DI,EAAgBP,IAAa,cAAgBD,EAAWK,EAExDI,EAAiBC,EAAiBH,EAAY,GAAG,EAEjDI,EAAkD,CACtD,QAASZ,EAAQ,EAAIU,EAAe,QAAUV,EAAQ,GACtD,GAAGH,CAAA,EAGC,CAAE,KAAAgB,CAAA,EAASjB,EAAMc,EAAgBE,CAAY,EAE7CE,EAAUD,EAAOA,EAAK,IAAIlB,CAAS,EAAI,CAAA,EAQ7C,OACEoB,EAACC,EAAA,CACE,GAAGb,EACJ,IAAAC,EACA,QAAAU,EACA,WAAU,GACV,eAAc,GACd,WAAAN,EACA,cAAAC,EACA,SAAU,GACV,aAAAV,EACA,SAjBmBD,GAAgC,CAChDA,GAEDG,GAAUA,EAASF,EAAeA,EAAaD,CAAK,EAAIA,EAAM,KAAK,CACzE,EAcI,MAAOY,EAAe,OAASV,EAAQ,iBAAiBA,CAAK,uBAAyB,MAAA,CAAA,CAG5F,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useState as j,useRef as H,useMemo as M}from"react";import{TypeGuards as U}from"../../../../../utils/typeGuards.js";const
|
|
1
|
+
import{useState as j,useRef as H,useMemo as M}from"react";import"../../../../../../../node_modules/classnames/index.js";import{TypeGuards as U}from"../../../../../utils/typeGuards.js";const J=R=>{const{multiple:S,defaultOpen:T,value:a,onChange:r,initialOptions:c,searchable:y,filterDisabled:D,displayValue:o,externalHandlers:V,externalInputValue:b,externalOnInputChange:s}=R,{changeHandler:l,inputChangeHandler:m}=V??{},[u,n]=j(""),[A,d]=j(T??!1),v=H(!1),G=M(()=>D||!u.length||!y?c:c.filter(e=>e.label.toLowerCase().includes(b?b.toLowerCase():u.toLowerCase())),[b,D,c,u,y]);return{open:A,setOpen:d,changeHandler:e=>{if(!v.current){if(v.current=!0,S){const t=a||[],f=t.some(i=>i.value===e.value);let p;f?p=t.filter(i=>i.value!==e.value):p=[...t,e],r==null||r(p),l==null||l(p);const L=t.map(i=>o?o(i):i.label).join(", ");n(L),s==null||s(L)}else{let t;(a==null?void 0:a.value)===e.value?t=null:t=e,r==null||r(t),l==null||l(t);const f=o&&t?o(t):t==null?void 0:t.label;n(f??""),s==null||s(f??""),d(!1)}setTimeout(()=>{v.current=!1},0)}},options:G,search:u,onInputChange:e=>{d(!0),n(e.target.value),m==null||m(e.target.value),s==null||s(e.target.value)},state:a,comboboxDisplayValue:e=>{if(e)return U.isArray(e)?e.map(t=>o?o(t):t.label).join(", "):o?o(e):e.label}}};export{J as useCombobox};
|
|
2
2
|
//# sourceMappingURL=useCombobox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCombobox.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/combobox/hooks/useCombobox.ts"],"sourcesContent":["import { useMemo, useRef, useState } from 'react'\nimport type { ExternalHandlers } from '../combobox'\nimport { type ChangeHandler, type ComboboxValue } from '../model'\nimport type { ComboboxItemOption } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype UseComboboxOptions<Multi extends boolean> = {\n initialOptions: ComboboxItemOption[]\n searchable?: boolean\n multiple?: Multi\n value?: ComboboxValue<Multi>\n onChange?: ChangeHandler<Multi>\n displayValue?: (option: ComboboxItemOption) => string\n defaultOpen?: boolean\n externalHandlers?: ExternalHandlers<Multi>\n externalInputValue?: string\n externalOnInputChange?: (value: string) => void\n filterDisabled?: boolean\n}\n\nexport const useCombobox = <Multi extends boolean>(props: UseComboboxOptions<Multi>) => {\n const {\n multiple,\n defaultOpen,\n value,\n onChange,\n initialOptions,\n searchable,\n filterDisabled,\n displayValue,\n externalHandlers,\n externalInputValue,\n externalOnInputChange\n } = props\n const { changeHandler: externalChangeHandler, inputChangeHandler: externalInputChangeHandler } = externalHandlers ?? {}\n\n const [search, setSearch] = useState<string>('')\n const [open, setOpen] = useState<boolean>(defaultOpen ?? false)\n\n const isUpdatingRef = useRef<boolean>(false)\n\n const options = useMemo<ComboboxItemOption[]>(() => {\n if (filterDisabled) {\n return initialOptions\n }\n\n if (!search.length || !searchable) {\n return initialOptions\n }\n\n return initialOptions.filter((option) =>\n option.label.toLowerCase().includes(externalInputValue ? externalInputValue.toLowerCase() : search.toLowerCase())\n )\n }, [externalInputValue, filterDisabled, initialOptions, search, searchable])\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setOpen(true)\n\n setSearch(e.target.value)\n externalInputChangeHandler?.(e.target.value)\n externalOnInputChange?.(e.target.value)\n }\n\n const changeHandler = (newValue: ComboboxItemOption) => {\n if (isUpdatingRef.current) return\n\n isUpdatingRef.current = true\n\n if (multiple) {\n const prev = (value as ComboboxItemOption[]) || []\n const exists = prev.some((option) => option.value === newValue.value)\n\n let updatedValue: ComboboxItemOption[]\n\n if (exists) {\n updatedValue = prev.filter((option) => option.value !== newValue.value)\n } else {\n updatedValue = [...prev, newValue]\n }\n\n onChange?.(updatedValue as ComboboxValue<Multi>)\n externalChangeHandler?.(updatedValue as ComboboxValue<Multi>)\n\n const searchValue = prev.map((option) => (displayValue ? displayValue(option) : option.label)).join(', ')\n setSearch(searchValue)\n externalOnInputChange?.(searchValue)\n } else {\n let updated: ComboboxValue<Multi>\n\n if ((value as ComboboxItemOption)?.value === newValue.value) {\n updated = null as ComboboxValue<Multi>\n } else {\n updated = newValue as ComboboxValue<Multi>\n }\n\n onChange?.(updated)\n externalChangeHandler?.(updated)\n\n const label = displayValue && updated ? displayValue(updated as ComboboxItemOption) : (updated as ComboboxItemOption)?.label\n setSearch(label ?? '')\n externalOnInputChange?.(label ?? '')\n setOpen(false)\n }\n\n setTimeout(() => {\n isUpdatingRef.current = false\n }, 0)\n }\n\n const comboboxDisplayValue = (value: ComboboxValue<Multi>) => {\n if (!value) return\n\n if (TypeGuards.isArray(value)) {\n return value.map((item) => (displayValue ? displayValue(item) : item.label)).join(', ')\n }\n\n return displayValue ? displayValue(value) : value.label\n }\n\n return {\n open,\n setOpen,\n changeHandler,\n options,\n search,\n onInputChange,\n state: value,\n comboboxDisplayValue\n }\n}\n"],"names":["useCombobox","props","multiple","defaultOpen","value","onChange","initialOptions","searchable","filterDisabled","displayValue","externalHandlers","externalInputValue","externalOnInputChange","externalChangeHandler","externalInputChangeHandler","search","setSearch","useState","open","setOpen","isUpdatingRef","useRef","options","useMemo","option","newValue","prev","exists","updatedValue","searchValue","updated","label","TypeGuards","item"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useCombobox.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/combobox/hooks/useCombobox.ts"],"sourcesContent":["import { useMemo, useRef, useState } from 'react'\nimport type { ExternalHandlers } from '../combobox'\nimport { type ChangeHandler, type ComboboxValue } from '../model'\nimport type { ComboboxItemOption } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype UseComboboxOptions<Multi extends boolean> = {\n initialOptions: ComboboxItemOption[]\n searchable?: boolean\n multiple?: Multi\n value?: ComboboxValue<Multi>\n onChange?: ChangeHandler<Multi>\n displayValue?: (option: ComboboxItemOption) => string\n defaultOpen?: boolean\n externalHandlers?: ExternalHandlers<Multi>\n externalInputValue?: string\n externalOnInputChange?: (value: string) => void\n filterDisabled?: boolean\n}\n\nexport const useCombobox = <Multi extends boolean>(props: UseComboboxOptions<Multi>) => {\n const {\n multiple,\n defaultOpen,\n value,\n onChange,\n initialOptions,\n searchable,\n filterDisabled,\n displayValue,\n externalHandlers,\n externalInputValue,\n externalOnInputChange\n } = props\n const { changeHandler: externalChangeHandler, inputChangeHandler: externalInputChangeHandler } = externalHandlers ?? {}\n\n const [search, setSearch] = useState<string>('')\n const [open, setOpen] = useState<boolean>(defaultOpen ?? false)\n\n const isUpdatingRef = useRef<boolean>(false)\n\n const options = useMemo<ComboboxItemOption[]>(() => {\n if (filterDisabled) {\n return initialOptions\n }\n\n if (!search.length || !searchable) {\n return initialOptions\n }\n\n return initialOptions.filter((option) =>\n option.label.toLowerCase().includes(externalInputValue ? externalInputValue.toLowerCase() : search.toLowerCase())\n )\n }, [externalInputValue, filterDisabled, initialOptions, search, searchable])\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setOpen(true)\n\n setSearch(e.target.value)\n externalInputChangeHandler?.(e.target.value)\n externalOnInputChange?.(e.target.value)\n }\n\n const changeHandler = (newValue: ComboboxItemOption) => {\n if (isUpdatingRef.current) return\n\n isUpdatingRef.current = true\n\n if (multiple) {\n const prev = (value as ComboboxItemOption[]) || []\n const exists = prev.some((option) => option.value === newValue.value)\n\n let updatedValue: ComboboxItemOption[]\n\n if (exists) {\n updatedValue = prev.filter((option) => option.value !== newValue.value)\n } else {\n updatedValue = [...prev, newValue]\n }\n\n onChange?.(updatedValue as ComboboxValue<Multi>)\n externalChangeHandler?.(updatedValue as ComboboxValue<Multi>)\n\n const searchValue = prev.map((option) => (displayValue ? displayValue(option) : option.label)).join(', ')\n setSearch(searchValue)\n externalOnInputChange?.(searchValue)\n } else {\n let updated: ComboboxValue<Multi>\n\n if ((value as ComboboxItemOption)?.value === newValue.value) {\n updated = null as ComboboxValue<Multi>\n } else {\n updated = newValue as ComboboxValue<Multi>\n }\n\n onChange?.(updated)\n externalChangeHandler?.(updated)\n\n const label = displayValue && updated ? displayValue(updated as ComboboxItemOption) : (updated as ComboboxItemOption)?.label\n setSearch(label ?? '')\n externalOnInputChange?.(label ?? '')\n setOpen(false)\n }\n\n setTimeout(() => {\n isUpdatingRef.current = false\n }, 0)\n }\n\n const comboboxDisplayValue = (value: ComboboxValue<Multi>) => {\n if (!value) return\n\n if (TypeGuards.isArray(value)) {\n return value.map((item) => (displayValue ? displayValue(item) : item.label)).join(', ')\n }\n\n return displayValue ? displayValue(value) : value.label\n }\n\n return {\n open,\n setOpen,\n changeHandler,\n options,\n search,\n onInputChange,\n state: value,\n comboboxDisplayValue\n }\n}\n"],"names":["useCombobox","props","multiple","defaultOpen","value","onChange","initialOptions","searchable","filterDisabled","displayValue","externalHandlers","externalInputValue","externalOnInputChange","externalChangeHandler","externalInputChangeHandler","search","setSearch","useState","open","setOpen","isUpdatingRef","useRef","options","useMemo","option","newValue","prev","exists","updatedValue","searchValue","updated","label","TypeGuards","item"],"mappings":"wLAoBO,MAAMA,EAAsCC,GAAqC,CACtF,KAAM,CACJ,SAAAC,EACA,YAAAC,EACA,MAAAC,EACA,SAAAC,EACA,eAAAC,EACA,WAAAC,EACA,eAAAC,EACA,aAAAC,EACA,iBAAAC,EACA,mBAAAC,EACA,sBAAAC,CAAA,EACEX,EACE,CAAE,cAAeY,EAAuB,mBAAoBC,CAAA,EAA+BJ,GAAoB,CAAA,EAE/G,CAACK,EAAQC,CAAS,EAAIC,EAAiB,EAAE,EACzC,CAACC,EAAMC,CAAO,EAAIF,EAAkBd,GAAe,EAAK,EAExDiB,EAAgBC,EAAgB,EAAK,EAErCC,EAAUC,EAA8B,IACxCf,GAIA,CAACO,EAAO,QAAU,CAACR,EACdD,EAGFA,EAAe,OAAQkB,GAC5BA,EAAO,MAAM,YAAA,EAAc,SAASb,EAAqBA,EAAmB,cAAgBI,EAAO,aAAa,CAAA,EAEjH,CAACJ,EAAoBH,EAAgBF,EAAgBS,EAAQR,CAAU,CAAC,EAkE3E,MAAO,CACL,KAAAW,EACA,QAAAC,EACA,cA3DqBM,GAAiC,CACtD,GAAI,CAAAL,EAAc,QAIlB,IAFAA,EAAc,QAAU,GAEpBlB,EAAU,CACZ,MAAMwB,EAAQtB,GAAkC,CAAA,EAC1CuB,EAASD,EAAK,KAAMF,GAAWA,EAAO,QAAUC,EAAS,KAAK,EAEpE,IAAIG,EAEAD,EACFC,EAAeF,EAAK,OAAQF,GAAWA,EAAO,QAAUC,EAAS,KAAK,EAEtEG,EAAe,CAAC,GAAGF,EAAMD,CAAQ,EAGnCpB,GAAA,MAAAA,EAAWuB,GACXf,GAAA,MAAAA,EAAwBe,GAExB,MAAMC,EAAcH,EAAK,IAAKF,GAAYf,EAAeA,EAAae,CAAM,EAAIA,EAAO,KAAM,EAAE,KAAK,IAAI,EACxGR,EAAUa,CAAW,EACrBjB,GAAA,MAAAA,EAAwBiB,EAC1B,KAAO,CACL,IAAIC,GAEC1B,GAAA,YAAAA,EAA8B,SAAUqB,EAAS,MACpDK,EAAU,KAEVA,EAAUL,EAGZpB,GAAA,MAAAA,EAAWyB,GACXjB,GAAA,MAAAA,EAAwBiB,GAExB,MAAMC,EAAQtB,GAAgBqB,EAAUrB,EAAaqB,CAA6B,EAAKA,GAAA,YAAAA,EAAgC,MACvHd,EAAUe,GAAS,EAAE,EACrBnB,GAAA,MAAAA,EAAwBmB,GAAS,IACjCZ,EAAQ,EAAK,CACf,CAEA,WAAW,IAAM,CACfC,EAAc,QAAU,EAC1B,EAAG,CAAC,EACN,EAgBE,QAAAE,EACA,OAAAP,EACA,cAtEqB,GAA2C,CAChEI,EAAQ,EAAI,EAEZH,EAAU,EAAE,OAAO,KAAK,EACxBF,GAAA,MAAAA,EAA6B,EAAE,OAAO,OACtCF,GAAA,MAAAA,EAAwB,EAAE,OAAO,MACnC,EAiEE,MAAOR,EACP,qBAlB4BA,GAAgC,CAC5D,GAAKA,EAEL,OAAI4B,EAAW,QAAQ5B,CAAK,EACnBA,EAAM,IAAK6B,GAAUxB,EAAeA,EAAawB,CAAI,EAAIA,EAAK,KAAM,EAAE,KAAK,IAAI,EAGjFxB,EAAeA,EAAaL,CAAK,EAAIA,EAAM,KACpD,CAUE,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{InputBase as o}from"./input/Input.js";import{MaskInput as r}from"./maskInput/MaskInput.js";import{CheckboxBase as m}from"./checkbox/Checkbox.js";import{DayPickerBase as t}from"./dayPicker/DayPicker.js";import{SwitchBase as p}from"./switch/Switch.js";import{AutocompleteBase as e}from"./autocomplete/Autocomplete.js";import{SliderBase as i}from"./slider/SliderBase.js";import{RadioGroupBase as a}from"./radio/RadioGroup.js";import"./radio/ui/RadioItem.js";import"react/jsx-runtime";import"react";import{TextareaBase as f}from"./textarea/Textarea.js";import{UploaderBase as s}from"./uploader/UploaderBase.js";import{InputOtpBase as B}from"./inputOtp/InputOtpBase.js";import{Combobox as c}from"./combobox/combobox.js";const
|
|
1
|
+
import{InputBase as o}from"./input/Input.js";import{MaskInput as r}from"./maskInput/MaskInput.js";import{CheckboxBase as m}from"./checkbox/Checkbox.js";import{DayPickerBase as t}from"./dayPicker/DayPicker.js";import{SwitchBase as p}from"./switch/Switch.js";import{AutocompleteBase as e}from"./autocomplete/Autocomplete.js";import{SliderBase as i}from"./slider/SliderBase.js";import{RadioGroupBase as a}from"./radio/RadioGroup.js";import"./radio/ui/RadioItem.js";import"react/jsx-runtime";import"react";import"../../../../../node_modules/classnames/index.js";import{TextareaBase as f}from"./textarea/Textarea.js";import{UploaderBase as s}from"./uploader/UploaderBase.js";import{InputOtpBase as B}from"./inputOtp/InputOtpBase.js";import{Combobox as c}from"./combobox/combobox.js";const G={InputBase:o,SliderBase:i,AutocompleteBase:e,MaskInput:r,CheckboxBase:m,DayPickerBase:t,SwitchBase:p,RadioGroupBase:a,TextareaBase:f,InputOtpBase:B,UploaderBase:s,Combobox:c};export{G as Uncontrolled};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../lib/shared/ui/formElements/uncontrolled/index.ts"],"sourcesContent":["import { InputBase } from './input'\nexport type { InputBaseProps } from './input'\nimport { MaskInput } from './maskInput'\nexport type { MaskInputProps } from './maskInput'\nimport { CheckboxBase } from './checkbox'\nexport type { CheckboxBaseProps, CheckedState } from './checkbox'\nimport { DayPickerBase } from './dayPicker'\nexport type { DayPickerProps } from './dayPicker'\nimport { SwitchBase } from './switch'\nexport type { SwitchBaseProps } from './switch'\nimport { AutocompleteBase } from './autocomplete'\nimport { SliderBase } from './slider'\nexport type { AutocompleteBaseProps, AutocompleteItemOption } from './autocomplete'\nimport { RadioGroupBase } from './radio'\nexport type { RadioGroupBaseProps, RadioOption } from './radio'\nimport { TextareaBase } from './textarea'\nimport { UploaderBase } from './uploader'\nexport type { TextareaBaseProps } from './textarea'\nimport { InputOtpBase } from './inputOtp'\nexport type { InputOtpBaseProps } from './inputOtp'\nimport { Combobox } from './combobox'\nexport type { ComboboxProps, ComboboxItemOption } from './combobox'\n\n/**\n * @example\n * ```ts\n * It's ok\n * import { InputBase } from '@scbt-ecom/ui'\n *\n * Not ok (tree shaking doesn't work)\n * import { Uncontrolled } from '@scbt-ecom/ui'\n * ```\n * @deprecated use Select instead\n */\nexport const Uncontrolled = {\n InputBase,\n SliderBase,\n AutocompleteBase,\n MaskInput,\n CheckboxBase,\n DayPickerBase,\n SwitchBase,\n RadioGroupBase,\n TextareaBase,\n InputOtpBase,\n UploaderBase,\n Combobox\n}\n"],"names":["Uncontrolled","InputBase","SliderBase","AutocompleteBase","MaskInput","CheckboxBase","DayPickerBase","SwitchBase","RadioGroupBase","TextareaBase","InputOtpBase","UploaderBase","Combobox"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../lib/shared/ui/formElements/uncontrolled/index.ts"],"sourcesContent":["import { InputBase } from './input'\nexport type { InputBaseProps } from './input'\nimport { MaskInput } from './maskInput'\nexport type { MaskInputProps } from './maskInput'\nimport { CheckboxBase } from './checkbox'\nexport type { CheckboxBaseProps, CheckedState } from './checkbox'\nimport { DayPickerBase } from './dayPicker'\nexport type { DayPickerProps } from './dayPicker'\nimport { SwitchBase } from './switch'\nexport type { SwitchBaseProps } from './switch'\nimport { AutocompleteBase } from './autocomplete'\nimport { SliderBase } from './slider'\nexport type { AutocompleteBaseProps, AutocompleteItemOption } from './autocomplete'\nimport { RadioGroupBase } from './radio'\nexport type { RadioGroupBaseProps, RadioOption } from './radio'\nimport { TextareaBase } from './textarea'\nimport { UploaderBase } from './uploader'\nexport type { TextareaBaseProps } from './textarea'\nimport { InputOtpBase } from './inputOtp'\nexport type { InputOtpBaseProps } from './inputOtp'\nimport { Combobox } from './combobox'\nexport type { ComboboxProps, ComboboxItemOption } from './combobox'\n\n/**\n * @example\n * ```ts\n * It's ok\n * import { InputBase } from '@scbt-ecom/ui'\n *\n * Not ok (tree shaking doesn't work)\n * import { Uncontrolled } from '@scbt-ecom/ui'\n * ```\n * @deprecated use Select instead\n */\nexport const Uncontrolled = {\n InputBase,\n SliderBase,\n AutocompleteBase,\n MaskInput,\n CheckboxBase,\n DayPickerBase,\n SwitchBase,\n RadioGroupBase,\n TextareaBase,\n InputOtpBase,\n UploaderBase,\n Combobox\n}\n"],"names":["Uncontrolled","InputBase","SliderBase","AutocompleteBase","MaskInput","CheckboxBase","DayPickerBase","SwitchBase","RadioGroupBase","TextareaBase","InputOtpBase","UploaderBase","Combobox"],"mappings":"0wBAkCO,MAAMA,EAAe,CAC1B,UAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,UAAAC,EACA,aAAAC,EACA,cAAAC,EACA,WAAAC,EACA,eAAAC,EACA,aAAAC,EACA,aAAAC,EACA,aAAAC,EACA,SAAAC,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as f}from"react/jsx-runtime";import{forwardRef as a}from"react";import{useInputMask as p}from"../../../../../../node_modules/use-mask-input/dist/index.js";import{InputBase as n}from"../input/Input.js";import{defaultMask as u}from"./model/constants.js";import{defaultDefinitions as k}from"./model/mask/utils.js";import"../../../../../../node_modules/classnames/index.js";import{mergeRefs as d}from"../../../../utils/mergeRefs.js";const M=a(({mask:o,externalMaskDefinitions:r,options:t,...e},s)=>{const i=u.get(o),m=p({mask:i??o,options:{jitMasking:!1,definitions:{...k,...r},...t}});return f(n,{ref:d(m,s),...e})});M.displayName="MaskInput";export{M as MaskInput};
|
|
2
2
|
//# sourceMappingURL=MaskInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaskInput.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/maskInput/MaskInput.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { type Options, useInputMask } from 'use-mask-input'\nimport { InputBase, type InputBaseProps } from '../input'\nimport { defaultDefinitions, defaultMask, type Mask } from './model'\nimport type { NonNullable } from '$/shared/types'\nimport { mergeRefs } from '$/shared/utils'\n\ntype Validator = (char: string) => boolean\ntype Casing = 'upper' | 'lower' | 'title'\nexport type Definition = {\n validator: string | Validator\n casing?: Casing\n cardinality?: number\n placeholder?: string\n definitionSymbol?: string\n}\n\nexport type MaskInputProps = InputBaseProps & {\n /**\n * маска, по которой будет определяться валидация символов\n */\n mask: NonNullable<Mask>\n /**\n * дополнительные валидаторы спец символов в маске\n */\n externalMaskDefinitions?: Record<string, Definition>\n options?: Options\n}\n\n/**\n * Компонент маски очень умный, умеет обрабатывать специальные символы\n * в том порядке, который определён маской\n * @typeParam `#` позволяет вводить только числа (regexp: `/\\d/g`)\n * @typeParam `A` позволяет вводить любые буквы русского и английского алфавита (regexp: `/[A-Za-zА-Яа-я]/g`)\n * @typeParam `C` позволяет вводить любые буквы, которые определены для использования в гос номерах автомобилей (regexp: `/([АВЕКМНОРСТУХавекмнорстух])/`)\n */\nexport const MaskInput = forwardRef<HTMLInputElement, MaskInputProps>(\n ({ mask, externalMaskDefinitions, options, ...props }, ref) => {\n const regularMask = defaultMask.get(mask)\n\n const maskedRef = useInputMask({\n mask: regularMask ?? mask,\n options: {\n jitMasking: false,\n definitions: {\n ...defaultDefinitions,\n ...externalMaskDefinitions\n },\n ...options\n }\n })\n\n return <InputBase ref={mergeRefs(maskedRef, ref)} {...props} />\n }\n)\nMaskInput.displayName = 'MaskInput'\n"],"names":["MaskInput","forwardRef","mask","externalMaskDefinitions","options","props","ref","regularMask","defaultMask","maskedRef","useInputMask","defaultDefinitions","jsx","InputBase","mergeRefs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MaskInput.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/maskInput/MaskInput.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { type Options, useInputMask } from 'use-mask-input'\nimport { InputBase, type InputBaseProps } from '../input'\nimport { defaultDefinitions, defaultMask, type Mask } from './model'\nimport type { NonNullable } from '$/shared/types'\nimport { mergeRefs } from '$/shared/utils'\n\ntype Validator = (char: string) => boolean\ntype Casing = 'upper' | 'lower' | 'title'\nexport type Definition = {\n validator: string | Validator\n casing?: Casing\n cardinality?: number\n placeholder?: string\n definitionSymbol?: string\n}\n\nexport type MaskInputProps = InputBaseProps & {\n /**\n * маска, по которой будет определяться валидация символов\n */\n mask: NonNullable<Mask>\n /**\n * дополнительные валидаторы спец символов в маске\n */\n externalMaskDefinitions?: Record<string, Definition>\n options?: Options\n}\n\n/**\n * Компонент маски очень умный, умеет обрабатывать специальные символы\n * в том порядке, который определён маской\n * @typeParam `#` позволяет вводить только числа (regexp: `/\\d/g`)\n * @typeParam `A` позволяет вводить любые буквы русского и английского алфавита (regexp: `/[A-Za-zА-Яа-я]/g`)\n * @typeParam `C` позволяет вводить любые буквы, которые определены для использования в гос номерах автомобилей (regexp: `/([АВЕКМНОРСТУХавекмнорстух])/`)\n */\nexport const MaskInput = forwardRef<HTMLInputElement, MaskInputProps>(\n ({ mask, externalMaskDefinitions, options, ...props }, ref) => {\n const regularMask = defaultMask.get(mask)\n\n const maskedRef = useInputMask({\n mask: regularMask ?? mask,\n options: {\n jitMasking: false,\n definitions: {\n ...defaultDefinitions,\n ...externalMaskDefinitions\n },\n ...options\n }\n })\n\n return <InputBase ref={mergeRefs(maskedRef, ref)} {...props} />\n }\n)\nMaskInput.displayName = 'MaskInput'\n"],"names":["MaskInput","forwardRef","mask","externalMaskDefinitions","options","props","ref","regularMask","defaultMask","maskedRef","useInputMask","defaultDefinitions","jsx","InputBase","mergeRefs"],"mappings":"wbAoCO,MAAMA,EAAYC,EACvB,CAAC,CAAE,KAAAC,EAAM,wBAAAC,EAAyB,QAAAC,EAAS,GAAGC,CAAA,EAASC,IAAQ,CAC7D,MAAMC,EAAcC,EAAY,IAAIN,CAAI,EAElCO,EAAYC,EAAa,CAC7B,KAAMH,GAAeL,EACrB,QAAS,CACP,WAAY,GACZ,YAAa,CACX,GAAGS,EACH,GAAGR,CAAA,EAEL,GAAGC,CAAA,CACL,CACD,EAED,OAAOQ,EAACC,GAAU,IAAKC,EAAUL,EAAWH,CAAG,EAAI,GAAGD,EAAO,CAC/D,CACF,EACAL,EAAU,YAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useState as k}from"react";import{useDropzone as D}from"../../../../../../../../node_modules/react-dropzone/dist/es/index.js";import{FilesErrorCode as c,bytesToMegabytes as v}from"../helpers.js";import"react/jsx-runtime";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import"react-dom";import"../../../../../modal/ui/IframeModalContent.js";import{Notification as u}from"../../../../../notification/Notification.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../../slot/Slot.js";import"../../../autocomplete/Autocomplete.js";import"../../../checkbox/Checkbox.js";import"../../../combobox/combobox.js";import"../../../dayPicker/DayPicker.js";import"../../../input/Input.js";import"../../../inputOtp/InputOtpBase.js";import"../../../maskInput/MaskInput.js";import"../../../radio/RadioGroup.js";import"../../../radio/ui/RadioItem.js";import"../../../slider/SliderBase.js";import"../../../switch/Switch.js";import"../../../textarea/Textarea.js";import"../../UploaderBase.js";import"../../../inputCurrency/InputCurrency.js";import"../../../../controlled/editor/ui/Editor.js";import"../../../../controlled/input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const
|
|
1
|
+
import{useState as k}from"react";import{useDropzone as D}from"../../../../../../../../node_modules/react-dropzone/dist/es/index.js";import{FilesErrorCode as c,bytesToMegabytes as v}from"../helpers.js";import"react/jsx-runtime";import"../../../../../../../../node_modules/classnames/index.js";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import"react-dom";import"../../../../../modal/ui/IframeModalContent.js";import{Notification as u}from"../../../../../notification/Notification.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../../slot/Slot.js";import"../../../autocomplete/Autocomplete.js";import"../../../checkbox/Checkbox.js";import"../../../combobox/combobox.js";import"../../../dayPicker/DayPicker.js";import"../../../input/Input.js";import"../../../inputOtp/InputOtpBase.js";import"../../../maskInput/MaskInput.js";import"../../../radio/RadioGroup.js";import"../../../radio/ui/RadioItem.js";import"../../../slider/SliderBase.js";import"../../../switch/Switch.js";import"../../../textarea/Textarea.js";import"../../UploaderBase.js";import"../../../inputCurrency/InputCurrency.js";import"../../../../controlled/editor/ui/Editor.js";import"../../../../controlled/input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const io=({dropzoneOptions:t,controlledFiles:i=[],onChange:r,externalHandlers:o})=>{const[g,S]=k({}),F=m=>{const e=i==null?void 0:i.filter((s,p)=>p!==m);r&&r(e)},T=D({onDrop:(m,e)=>{var p,b;switch(m.forEach(f=>{const y=new FileReader;S(a=>({...a,[f.name]:"loading"})),y.onload=()=>{S(a=>({...a,[f.name]:"success"}))},y.readAsArrayBuffer(f)}),(b=(p=e[0])==null?void 0:p.errors[0])==null?void 0:b.code){case c.FileInvalidType:u({intent:"error",text:"Неверный формат файла. Загрузите в формате jpg/png/pdf"});break;case c.FileTooLarge:u({intent:"error",text:`Файл слишком большой. Максимальный размер ${t.maxSize?v(t.maxSize):0} МБ`});break;case c.TooManyFiles:u({intent:"error",text:`Вы загрузили слишком много файлов. Максимальное количество ${t.maxFiles}`});break}const s=[...i,...m];r&&r(s),o!=null&&o.onChange&&(o==null||o.onChange(s))},...t});return{filesStatus:g,removeFile:F,dropzoneState:T}};export{io as useUploader};
|
|
2
2
|
//# sourceMappingURL=useUploader.js.map
|
package/dist/lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUploader.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { type DropzoneOptions, type FileRejection, useDropzone } from 'react-dropzone'\nimport { type ExternalHandlers } from '../../UploaderBase'\nimport { bytesToMegabytes, FilesErrorCode } from '../helpers'\nimport { Notification } from '$/shared/ui/'\n\nexport type TUseUploader = {\n controlledFiles?: File[]\n dropzoneOptions: DropzoneOptions\n onChange?: (files: File[]) => void\n externalHandlers?: ExternalHandlers\n}\n\nexport const useUploader = ({ dropzoneOptions, controlledFiles = [], onChange, externalHandlers }: TUseUploader) => {\n const [filesStatus, setFilesStatus] = useState<Record<string, 'loading' | 'success' | 'error'>>({})\n\n const removeFile = (index: number) => {\n const updatedFiles = controlledFiles?.filter((_, idx) => idx !== index)\n if (onChange) onChange(updatedFiles)\n }\n\n const onDrop = (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n acceptedFiles.forEach((file) => {\n const reader = new FileReader()\n setFilesStatus((prev) => ({ ...prev, [file.name]: 'loading' }))\n\n reader.onload = () => {\n setFilesStatus((prev) => ({ ...prev, [file.name]: 'success' }))\n }\n\n reader.readAsArrayBuffer(file)\n })\n\n switch (rejectedFiles[0]?.errors[0]?.code) {\n case FilesErrorCode.FileInvalidType:\n Notification({\n intent: 'error',\n text: 'Неверный формат файла. Загрузите в формате jpg/png/pdf'\n })\n break\n case FilesErrorCode.FileTooLarge:\n Notification({\n intent: 'error',\n text: `Файл слишком большой. Максимальный размер ${dropzoneOptions.maxSize ? bytesToMegabytes(dropzoneOptions.maxSize) : 0} МБ`\n })\n break\n case FilesErrorCode.TooManyFiles:\n Notification({\n intent: 'error',\n text: `Вы загрузили слишком много файлов. Максимальное количество ${dropzoneOptions.maxFiles}`\n })\n break\n default:\n break\n }\n\n const updatedFiles = [...controlledFiles, ...acceptedFiles]\n\n if (onChange) onChange(updatedFiles)\n if (externalHandlers?.onChange) externalHandlers?.onChange(updatedFiles)\n }\n\n const dropzoneState = useDropzone({\n onDrop,\n ...dropzoneOptions\n })\n\n return { filesStatus, removeFile, dropzoneState }\n}\n"],"names":["useUploader","dropzoneOptions","controlledFiles","onChange","externalHandlers","filesStatus","setFilesStatus","useState","removeFile","index","updatedFiles","_","idx","dropzoneState","useDropzone","acceptedFiles","rejectedFiles","file","reader","prev","_b","_a","FilesErrorCode","Notification","bytesToMegabytes"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useUploader.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { type DropzoneOptions, type FileRejection, useDropzone } from 'react-dropzone'\nimport { type ExternalHandlers } from '../../UploaderBase'\nimport { bytesToMegabytes, FilesErrorCode } from '../helpers'\nimport { Notification } from '$/shared/ui/'\n\nexport type TUseUploader = {\n controlledFiles?: File[]\n dropzoneOptions: DropzoneOptions\n onChange?: (files: File[]) => void\n externalHandlers?: ExternalHandlers\n}\n\nexport const useUploader = ({ dropzoneOptions, controlledFiles = [], onChange, externalHandlers }: TUseUploader) => {\n const [filesStatus, setFilesStatus] = useState<Record<string, 'loading' | 'success' | 'error'>>({})\n\n const removeFile = (index: number) => {\n const updatedFiles = controlledFiles?.filter((_, idx) => idx !== index)\n if (onChange) onChange(updatedFiles)\n }\n\n const onDrop = (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n acceptedFiles.forEach((file) => {\n const reader = new FileReader()\n setFilesStatus((prev) => ({ ...prev, [file.name]: 'loading' }))\n\n reader.onload = () => {\n setFilesStatus((prev) => ({ ...prev, [file.name]: 'success' }))\n }\n\n reader.readAsArrayBuffer(file)\n })\n\n switch (rejectedFiles[0]?.errors[0]?.code) {\n case FilesErrorCode.FileInvalidType:\n Notification({\n intent: 'error',\n text: 'Неверный формат файла. Загрузите в формате jpg/png/pdf'\n })\n break\n case FilesErrorCode.FileTooLarge:\n Notification({\n intent: 'error',\n text: `Файл слишком большой. Максимальный размер ${dropzoneOptions.maxSize ? bytesToMegabytes(dropzoneOptions.maxSize) : 0} МБ`\n })\n break\n case FilesErrorCode.TooManyFiles:\n Notification({\n intent: 'error',\n text: `Вы загрузили слишком много файлов. Максимальное количество ${dropzoneOptions.maxFiles}`\n })\n break\n default:\n break\n }\n\n const updatedFiles = [...controlledFiles, ...acceptedFiles]\n\n if (onChange) onChange(updatedFiles)\n if (externalHandlers?.onChange) externalHandlers?.onChange(updatedFiles)\n }\n\n const dropzoneState = useDropzone({\n onDrop,\n ...dropzoneOptions\n })\n\n return { filesStatus, removeFile, dropzoneState }\n}\n"],"names":["useUploader","dropzoneOptions","controlledFiles","onChange","externalHandlers","filesStatus","setFilesStatus","useState","removeFile","index","updatedFiles","_","idx","dropzoneState","useDropzone","acceptedFiles","rejectedFiles","file","reader","prev","_b","_a","FilesErrorCode","Notification","bytesToMegabytes"],"mappings":"kkDAaO,MAAMA,GAAc,CAAC,CAAE,gBAAAC,EAAiB,gBAAAC,EAAkB,CAAA,EAAI,SAAAC,EAAU,iBAAAC,KAAqC,CAClH,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAA0D,CAAA,CAAE,EAE5FC,EAAcC,GAAkB,CACpC,MAAMC,EAAeR,GAAA,YAAAA,EAAiB,OAAO,CAACS,EAAGC,IAAQA,IAAQH,GAC7DN,KAAmBO,CAAY,CACrC,EA2CMG,EAAgBC,EAAY,CAChC,OA1Ca,CAACC,EAAuBC,IAAmC,SAYxE,OAXAD,EAAc,QAASE,GAAS,CAC9B,MAAMC,EAAS,IAAI,WACnBZ,EAAgBa,IAAU,CAAE,GAAGA,EAAM,CAACF,EAAK,IAAI,EAAG,SAAA,EAAY,EAE9DC,EAAO,OAAS,IAAM,CACpBZ,EAAgBa,IAAU,CAAE,GAAGA,EAAM,CAACF,EAAK,IAAI,EAAG,SAAA,EAAY,CAChE,EAEAC,EAAO,kBAAkBD,CAAI,CAC/B,CAAC,GAEOG,GAAAC,EAAAL,EAAc,CAAC,IAAf,YAAAK,EAAkB,OAAO,KAAzB,YAAAD,EAA6B,KAAA,CACnC,KAAKE,EAAe,gBAClBC,EAAa,CACX,OAAQ,QACR,KAAM,wDAAA,CACP,EACD,MACF,KAAKD,EAAe,aAClBC,EAAa,CACX,OAAQ,QACR,KAAM,6CAA6CtB,EAAgB,QAAUuB,EAAiBvB,EAAgB,OAAO,EAAI,CAAC,KAAA,CAC3H,EACD,MACF,KAAKqB,EAAe,aAClBC,EAAa,CACX,OAAQ,QACR,KAAM,8DAA8DtB,EAAgB,QAAQ,EAAA,CAC7F,EACD,KAEA,CAGJ,MAAMS,EAAe,CAAC,GAAGR,EAAiB,GAAGa,CAAa,EAEtDZ,KAAmBO,CAAY,EAC/BN,GAAA,MAAAA,EAAkB,WAAUA,GAAA,MAAAA,EAAkB,SAASM,GAC7D,EAIE,GAAGT,CAAA,CACJ,EAED,MAAO,CAAE,YAAAI,EAAa,WAAAG,EAAY,cAAAK,CAAA,CACpC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{forwardRef as l,isValidElement as n,cloneElement as
|
|
1
|
+
import{forwardRef as l,isValidElement as n,cloneElement as p,Children as t}from"react";import"react/jsx-runtime";import{getElementRef as f}from"../model/getElementRef.js";import{mergeProps as i}from"../model/mergeProps.js";import"../../../../../node_modules/classnames/index.js";import{mergeRefs as s}from"../../../utils/mergeRefs.js";const u=l(({children:o,...m},e)=>{if(n(o)){const r=f(o);return p(o,{...i(m,o.props),ref:e?s(e,r):r})}return t.count(o)>1?t.only(null):null});u.displayName="SlotClone";export{u as SlotClone};
|
|
2
2
|
//# sourceMappingURL=SlotClone.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlotClone.js","sources":["../../../../../../lib/shared/ui/slot/ui/SlotClone.tsx"],"sourcesContent":["import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { getElementRef, mergeProps } from '../model'\nimport { mergeRefs } from '$/shared/utils'\n\nexport type SlotCloneProps = {\n children: React.ReactNode\n}\n\nexport const SlotClone = forwardRef<any, SlotCloneProps>(({ children, ...props }, ref) => {\n if (isValidElement(children)) {\n const childrenRef = getElementRef(children)\n\n return cloneElement(children, {\n ...mergeProps(props, children.props),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ref: ref ? mergeRefs(ref, childrenRef) : childrenRef\n })\n }\n\n return Children.count(children) > 1 ? Children.only(null) : null\n})\nSlotClone.displayName = 'SlotClone'\n"],"names":["SlotClone","forwardRef","children","props","ref","isValidElement","childrenRef","getElementRef","cloneElement","mergeProps","mergeRefs","Children"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SlotClone.js","sources":["../../../../../../lib/shared/ui/slot/ui/SlotClone.tsx"],"sourcesContent":["import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { getElementRef, mergeProps } from '../model'\nimport { mergeRefs } from '$/shared/utils'\n\nexport type SlotCloneProps = {\n children: React.ReactNode\n}\n\nexport const SlotClone = forwardRef<any, SlotCloneProps>(({ children, ...props }, ref) => {\n if (isValidElement(children)) {\n const childrenRef = getElementRef(children)\n\n return cloneElement(children, {\n ...mergeProps(props, children.props),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ref: ref ? mergeRefs(ref, childrenRef) : childrenRef\n })\n }\n\n return Children.count(children) > 1 ? Children.only(null) : null\n})\nSlotClone.displayName = 'SlotClone'\n"],"names":["SlotClone","forwardRef","children","props","ref","isValidElement","childrenRef","getElementRef","cloneElement","mergeProps","mergeRefs","Children"],"mappings":"+UAQO,MAAMA,EAAYC,EAAgC,CAAC,CAAE,SAAAC,EAAU,GAAGC,CAAA,EAASC,IAAQ,CACxF,GAAIC,EAAeH,CAAQ,EAAG,CAC5B,MAAMI,EAAcC,EAAcL,CAAQ,EAE1C,OAAOM,EAAaN,EAAU,CAC5B,GAAGO,EAAWN,EAAOD,EAAS,KAAK,EAGnC,IAAKE,EAAMM,EAAUN,EAAKE,CAAW,EAAIA,CAAA,CAC1C,CACH,CAEA,OAAOK,EAAS,MAAMT,CAAQ,EAAI,EAAIS,EAAS,KAAK,IAAI,EAAI,IAC9D,CAAC,EACDX,EAAU,YAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as a}from"react/jsx-runtime";import{useState as g}from"react";import{useReactTable as F}from"../../../../node_modules/@tanstack/react-table/build/lib/index.js";import{Desktop as C}from"./Desktop.js";import{Horizontal as S}from"./Horizontal.js";import{Mobile as b}from"./Mobile.js";import{useDevice as P}from"../../hooks/useDevice.js";import{TypeGuards as x}from"../../utils/typeGuards.js";import{getPaginationRowModel as D,getFacetedUniqueValues as T,getFacetedRowModel as q,getSortedRowModel as U,getFilteredRowModel as V,getCoreRowModel as h}from"../../../../node_modules/@tanstack/table-core/build/lib/index.js";const
|
|
1
|
+
import{jsx as a}from"react/jsx-runtime";import{useState as g}from"react";import{useReactTable as F}from"../../../../node_modules/@tanstack/react-table/build/lib/index.js";import{Desktop as C}from"./Desktop.js";import{Horizontal as S}from"./Horizontal.js";import{Mobile as b}from"./Mobile.js";import{useDevice as P}from"../../hooks/useDevice.js";import"../../../../node_modules/classnames/index.js";import{TypeGuards as x}from"../../utils/typeGuards.js";import{getPaginationRowModel as D,getFacetedUniqueValues as T,getFacetedRowModel as q,getSortedRowModel as U,getFilteredRowModel as V,getCoreRowModel as h}from"../../../../node_modules/@tanstack/table-core/build/lib/index.js";const L=({columns:l,data:m,enableHeaders:o=!0,mode:e="solid",classes:t,pagination:d=!0,empty:i,horizontal:r,pageSize:s=10})=>{const[u,p]=g([]),[c,M]=g([]),[R,w]=g({pageIndex:0,pageSize:s}),n=F({data:m,columns:l,state:{columnFilters:u,sorting:c,pagination:R},enableRowSelection:!0,onSortingChange:M,onColumnFiltersChange:p,onPaginationChange:w,getCoreRowModel:h(),getFilteredRowModel:V(),getSortedRowModel:U(),getFacetedRowModel:q(),getFacetedUniqueValues:T(),getPaginationRowModel:D()}),{isMobile:f}=P();return(x.isFunction(r)?r(l):r)?a(S,{table:n,enableHeaders:o,pagination:d,empty:i,mode:e,classes:t}):f?a(b,{table:n,enableHeaders:o,empty:i,mode:e,classes:t}):a(C,{table:n,enableHeaders:o,empty:i,pagination:d,mode:e,classes:t})};export{L as DataTable};
|
|
2
2
|
//# sourceMappingURL=Table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sources":["../../../../../lib/shared/ui/table/Table.tsx"],"sourcesContent":["import { useState } from 'react'\nimport {\n type ColumnFiltersState,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type SortingState,\n useReactTable\n} from '@tanstack/react-table'\nimport { Desktop } from './Desktop'\nimport { Horizontal } from './Horizontal'\nimport { Mobile } from './Mobile'\nimport { type DataTableProps } from './model'\nimport { useDevice } from '$/shared/hooks'\nimport { TypeGuards } from '$/shared/utils'\n\nexport const DataTable = <TData extends {}>({\n columns,\n data,\n enableHeaders = true,\n mode = 'solid',\n classes,\n pagination = true,\n empty,\n horizontal,\n pageSize = 10\n}: DataTableProps<TData>) => {\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [sorting, setSorting] = useState<SortingState>([])\n const [paginationState, setPagination] = useState<PaginationState>({\n pageIndex: 0,\n pageSize\n })\n\n const table = useReactTable({\n data,\n columns,\n state: { columnFilters, sorting, pagination: paginationState },\n enableRowSelection: true,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onPaginationChange: setPagination,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getPaginationRowModel: getPaginationRowModel()\n })\n\n const { isMobile } = useDevice()\n\n if (TypeGuards.isFunction(horizontal) ? horizontal(columns) : horizontal) {\n return (\n <Horizontal\n table={table}\n enableHeaders={enableHeaders}\n pagination={pagination}\n empty={empty}\n mode={mode}\n classes={classes}\n />\n )\n }\n\n return isMobile ? (\n <Mobile table={table} enableHeaders={enableHeaders} empty={empty} mode={mode} classes={classes} />\n ) : (\n <Desktop table={table} enableHeaders={enableHeaders} empty={empty} pagination={pagination} mode={mode} classes={classes} />\n )\n}\n"],"names":["DataTable","columns","data","enableHeaders","mode","classes","pagination","empty","horizontal","pageSize","columnFilters","setColumnFilters","useState","sorting","setSorting","paginationState","setPagination","table","useReactTable","getCoreRowModel","getFilteredRowModel","getSortedRowModel","getFacetedRowModel","getFacetedUniqueValues","getPaginationRowModel","isMobile","useDevice","TypeGuards","jsx","Horizontal","Mobile","Desktop"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Table.js","sources":["../../../../../lib/shared/ui/table/Table.tsx"],"sourcesContent":["import { useState } from 'react'\nimport {\n type ColumnFiltersState,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type SortingState,\n useReactTable\n} from '@tanstack/react-table'\nimport { Desktop } from './Desktop'\nimport { Horizontal } from './Horizontal'\nimport { Mobile } from './Mobile'\nimport { type DataTableProps } from './model'\nimport { useDevice } from '$/shared/hooks'\nimport { TypeGuards } from '$/shared/utils'\n\nexport const DataTable = <TData extends {}>({\n columns,\n data,\n enableHeaders = true,\n mode = 'solid',\n classes,\n pagination = true,\n empty,\n horizontal,\n pageSize = 10\n}: DataTableProps<TData>) => {\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [sorting, setSorting] = useState<SortingState>([])\n const [paginationState, setPagination] = useState<PaginationState>({\n pageIndex: 0,\n pageSize\n })\n\n const table = useReactTable({\n data,\n columns,\n state: { columnFilters, sorting, pagination: paginationState },\n enableRowSelection: true,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onPaginationChange: setPagination,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getPaginationRowModel: getPaginationRowModel()\n })\n\n const { isMobile } = useDevice()\n\n if (TypeGuards.isFunction(horizontal) ? horizontal(columns) : horizontal) {\n return (\n <Horizontal\n table={table}\n enableHeaders={enableHeaders}\n pagination={pagination}\n empty={empty}\n mode={mode}\n classes={classes}\n />\n )\n }\n\n return isMobile ? (\n <Mobile table={table} enableHeaders={enableHeaders} empty={empty} mode={mode} classes={classes} />\n ) : (\n <Desktop table={table} enableHeaders={enableHeaders} empty={empty} pagination={pagination} mode={mode} classes={classes} />\n )\n}\n"],"names":["DataTable","columns","data","enableHeaders","mode","classes","pagination","empty","horizontal","pageSize","columnFilters","setColumnFilters","useState","sorting","setSorting","paginationState","setPagination","table","useReactTable","getCoreRowModel","getFilteredRowModel","getSortedRowModel","getFacetedRowModel","getFacetedUniqueValues","getPaginationRowModel","isMobile","useDevice","TypeGuards","jsx","Horizontal","Mobile","Desktop"],"mappings":"uqBAoBO,MAAMA,EAAY,CAAmB,CAC1C,QAAAC,EACA,KAAAC,EACA,cAAAC,EAAgB,GAChB,KAAAC,EAAO,QACP,QAAAC,EACA,WAAAC,EAAa,GACb,MAAAC,EACA,WAAAC,EACA,SAAAC,EAAW,EACb,IAA6B,CAC3B,KAAM,CAACC,EAAeC,CAAgB,EAAIC,EAA6B,CAAA,CAAE,EACnE,CAACC,EAASC,CAAU,EAAIF,EAAuB,CAAA,CAAE,EACjD,CAACG,EAAiBC,CAAa,EAAIJ,EAA0B,CACjE,UAAW,EACX,SAAAH,CAAA,CACD,EAEKQ,EAAQC,EAAc,CAC1B,KAAAhB,EACA,QAAAD,EACA,MAAO,CAAE,cAAAS,EAAe,QAAAG,EAAS,WAAYE,CAAA,EAC7C,mBAAoB,GACpB,gBAAiBD,EACjB,sBAAuBH,EACvB,mBAAoBK,EACpB,gBAAiBG,EAAA,EACjB,oBAAqBC,EAAA,EACrB,kBAAmBC,EAAA,EACnB,mBAAoBC,EAAA,EACpB,uBAAwBC,EAAA,EACxB,sBAAuBC,EAAA,CAAsB,CAC9C,EAEK,CAAE,SAAAC,CAAA,EAAaC,EAAA,EAErB,OAAIC,EAAW,WAAWnB,CAAU,EAAIA,EAAWP,CAAO,EAAIO,GAE1DoB,EAACC,EAAA,CACC,MAAAZ,EACA,cAAAd,EACA,WAAAG,EACA,MAAAC,EACA,KAAAH,EACA,QAAAC,CAAA,CAAA,EAKCoB,EACLG,EAACE,EAAA,CAAO,MAAAb,EAAc,cAAAd,EAA8B,MAAAI,EAAc,KAAAH,EAAY,QAAAC,CAAA,CAAkB,EAEhGuB,EAACG,GAAQ,MAAAd,EAAc,cAAAd,EAA8B,MAAAI,EAAc,WAAAD,EAAwB,KAAAF,EAAY,QAAAC,EAAkB,CAE7H"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as d}from"react/jsx-runtime";import"../ui/primitives/Primitives.js";import{DataTableColumnHeader as S}from"../ui/dataTableColumnHeader/DataTableColumnHeader.js";import"react";import{TypeGuards as
|
|
1
|
+
import{jsx as d}from"react/jsx-runtime";import"../ui/primitives/Primitives.js";import{DataTableColumnHeader as S}from"../ui/dataTableColumnHeader/DataTableColumnHeader.js";import"react";import"../../../../../node_modules/classnames/index.js";import{TypeGuards as m}from"../../../utils/typeGuards.js";import{createColumnHelper as b}from"../../../../../node_modules/@tanstack/table-core/build/lib/index.js";class A{static getColumnHelper(){return b()}static getColumns(g,u){const{helper:p=this.getColumnHelper(),enableColumnFilter:o=!1,enableSorting:n=!1,cellAccessor:c,headerAccessor:a,sortingFn:l,size:s}=u||{};return Object.keys(g).map(e=>p.accessor(e,{header:t=>{const{column:r}=t,i=a?a[e]:null;return d(S,{isSorted:r.getIsSorted()==="desc",nextSortingOrder:r.getNextSortingOrder(),toggleSorting:r.toggleSorting,canSort:r.getCanSort(),children:i?i(e,t):e})},cell:t=>{const r=c?c[e]:null;return r?r(t):t.getValue()},enableColumnFilter:m.isBoolean(o)?o:o.includes(e),enableSorting:m.isBoolean(n)?n:n.includes(e),sortingFn:typeof l=="object"?l[e]:l,...s==null?void 0:s[e]}))}}export{A as TableUtils};
|
|
2
2
|
//# sourceMappingURL=TableUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableUtils.js","sources":["../../../../../../lib/shared/ui/table/model/TableUtils.tsx"],"sourcesContent":["import {\n type CellContext,\n type ColumnDef,\n type ColumnHelper,\n createColumnHelper,\n type HeaderContext,\n type SortingFnOption\n} from '@tanstack/react-table'\nimport { DataTableColumnHeader } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype SizeOptions = {\n size?: number\n minSize?: number\n maxSize?: number\n}\n\ntype ColumnDefOptions<TData, TValue> = {\n enableSorting?: (keyof TData)[] | boolean\n sortingFn?: SortingFnOption<TData> | Partial<Record<keyof TData, SortingFnOption<TData>>>\n enableColumnFilter?: (keyof TData)[] | boolean\n size?: Partial<Record<keyof TData, SizeOptions>>\n helper?: ColumnHelper<TData>\n cellAccessor?: Partial<Record<keyof TData, (cellContext: CellContext<TData, TValue>) => React.ReactNode>>\n headerAccessor?: Partial<\n Record<keyof TData, (key: keyof TData, headerContext: HeaderContext<TData, TValue>) => React.ReactNode>\n >\n}\n\nexport class TableUtils {\n static getColumnHelper<TData extends {}>(): ColumnHelper<TData> {\n return createColumnHelper<TData>()\n }\n\n static getColumns<TData extends {}, TValue = TData[keyof TData]>(\n template: TData,\n options?: ColumnDefOptions<TData, TValue>\n ): ColumnDef<TData>[] {\n const {\n helper = this.getColumnHelper<TData>(),\n enableColumnFilter = false,\n enableSorting = false,\n cellAccessor,\n headerAccessor,\n sortingFn,\n size\n } = options || {}\n\n const keys = Object.keys(template) as (keyof TData)[]\n\n return keys.map((key) => {\n return helper.accessor<any, TValue>(key, {\n header: (header) => {\n const { column } = header\n const accessor = headerAccessor ? headerAccessor[key] : null\n\n return (\n <DataTableColumnHeader\n isSorted={column.getIsSorted() === 'desc'}\n nextSortingOrder={column.getNextSortingOrder()}\n toggleSorting={column.toggleSorting}\n canSort={column.getCanSort()}\n >\n {accessor ? accessor(key, header) : (key as string)}\n </DataTableColumnHeader>\n )\n },\n cell: (cell) => {\n const accessor = cellAccessor ? cellAccessor[key] : null\n\n return accessor ? accessor(cell) : cell.getValue()\n },\n enableColumnFilter: TypeGuards.isBoolean(enableColumnFilter) ? enableColumnFilter : enableColumnFilter.includes(key),\n enableSorting: TypeGuards.isBoolean(enableSorting) ? enableSorting : enableSorting.includes(key),\n sortingFn: typeof sortingFn === 'object' ? sortingFn[key] : sortingFn,\n ...size?.[key]\n })\n }) as ColumnDef<TData>[]\n }\n}\n"],"names":["TableUtils","createColumnHelper","template","options","helper","enableColumnFilter","enableSorting","cellAccessor","headerAccessor","sortingFn","size","key","header","column","accessor","jsx","DataTableColumnHeader","cell","TypeGuards"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableUtils.js","sources":["../../../../../../lib/shared/ui/table/model/TableUtils.tsx"],"sourcesContent":["import {\n type CellContext,\n type ColumnDef,\n type ColumnHelper,\n createColumnHelper,\n type HeaderContext,\n type SortingFnOption\n} from '@tanstack/react-table'\nimport { DataTableColumnHeader } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype SizeOptions = {\n size?: number\n minSize?: number\n maxSize?: number\n}\n\ntype ColumnDefOptions<TData, TValue> = {\n enableSorting?: (keyof TData)[] | boolean\n sortingFn?: SortingFnOption<TData> | Partial<Record<keyof TData, SortingFnOption<TData>>>\n enableColumnFilter?: (keyof TData)[] | boolean\n size?: Partial<Record<keyof TData, SizeOptions>>\n helper?: ColumnHelper<TData>\n cellAccessor?: Partial<Record<keyof TData, (cellContext: CellContext<TData, TValue>) => React.ReactNode>>\n headerAccessor?: Partial<\n Record<keyof TData, (key: keyof TData, headerContext: HeaderContext<TData, TValue>) => React.ReactNode>\n >\n}\n\nexport class TableUtils {\n static getColumnHelper<TData extends {}>(): ColumnHelper<TData> {\n return createColumnHelper<TData>()\n }\n\n static getColumns<TData extends {}, TValue = TData[keyof TData]>(\n template: TData,\n options?: ColumnDefOptions<TData, TValue>\n ): ColumnDef<TData>[] {\n const {\n helper = this.getColumnHelper<TData>(),\n enableColumnFilter = false,\n enableSorting = false,\n cellAccessor,\n headerAccessor,\n sortingFn,\n size\n } = options || {}\n\n const keys = Object.keys(template) as (keyof TData)[]\n\n return keys.map((key) => {\n return helper.accessor<any, TValue>(key, {\n header: (header) => {\n const { column } = header\n const accessor = headerAccessor ? headerAccessor[key] : null\n\n return (\n <DataTableColumnHeader\n isSorted={column.getIsSorted() === 'desc'}\n nextSortingOrder={column.getNextSortingOrder()}\n toggleSorting={column.toggleSorting}\n canSort={column.getCanSort()}\n >\n {accessor ? accessor(key, header) : (key as string)}\n </DataTableColumnHeader>\n )\n },\n cell: (cell) => {\n const accessor = cellAccessor ? cellAccessor[key] : null\n\n return accessor ? accessor(cell) : cell.getValue()\n },\n enableColumnFilter: TypeGuards.isBoolean(enableColumnFilter) ? enableColumnFilter : enableColumnFilter.includes(key),\n enableSorting: TypeGuards.isBoolean(enableSorting) ? enableSorting : enableSorting.includes(key),\n sortingFn: typeof sortingFn === 'object' ? sortingFn[key] : sortingFn,\n ...size?.[key]\n })\n }) as ColumnDef<TData>[]\n }\n}\n"],"names":["TableUtils","createColumnHelper","template","options","helper","enableColumnFilter","enableSorting","cellAccessor","headerAccessor","sortingFn","size","key","header","column","accessor","jsx","DataTableColumnHeader","cell","TypeGuards"],"mappings":"qZA6BO,MAAMA,CAAW,CACtB,OAAO,iBAAyD,CAC9D,OAAOC,EAAA,CACT,CAEA,OAAO,WACLC,EACAC,EACoB,CACpB,KAAM,CACJ,OAAAC,EAAS,KAAK,gBAAA,EACd,mBAAAC,EAAqB,GACrB,cAAAC,EAAgB,GAChB,aAAAC,EACA,eAAAC,EACA,UAAAC,EACA,KAAAC,CAAA,EACEP,GAAW,CAAA,EAIf,OAFa,OAAO,KAAKD,CAAQ,EAErB,IAAKS,GACRP,EAAO,SAAsBO,EAAK,CACvC,OAASC,GAAW,CAClB,KAAM,CAAE,OAAAC,GAAWD,EACbE,EAAWN,EAAiBA,EAAeG,CAAG,EAAI,KAExD,OACEI,EAACC,EAAA,CACC,SAAUH,EAAO,YAAA,IAAkB,OACnC,iBAAkBA,EAAO,oBAAA,EACzB,cAAeA,EAAO,cACtB,QAASA,EAAO,WAAA,EAEf,SAAAC,EAAWA,EAASH,EAAKC,CAAM,EAAKD,CAAA,CAAA,CAG3C,EACA,KAAOM,GAAS,CACd,MAAMH,EAAWP,EAAeA,EAAaI,CAAG,EAAI,KAEpD,OAAOG,EAAWA,EAASG,CAAI,EAAIA,EAAK,SAAA,CAC1C,EACA,mBAAoBC,EAAW,UAAUb,CAAkB,EAAIA,EAAqBA,EAAmB,SAASM,CAAG,EACnH,cAAeO,EAAW,UAAUZ,CAAa,EAAIA,EAAgBA,EAAc,SAASK,CAAG,EAC/F,UAAW,OAAOF,GAAc,SAAWA,EAAUE,CAAG,EAAIF,EAC5D,GAAGC,GAAA,YAAAA,EAAOC,EAAG,CACd,CACF,CACH,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import o from"../../../node_modules/classnames/index.js";import{twMerge as t}from"../../../node_modules/tailwind-merge/dist/bundle-mjs.js";const c=(...r)=>t(o(r));export{c as cn};
|
|
2
2
|
//# sourceMappingURL=cn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cn.js","sources":["../../../../lib/shared/utils/cn.ts"],"sourcesContent":["import clsx, { type
|
|
1
|
+
{"version":3,"file":"cn.js","sources":["../../../../lib/shared/utils/cn.ts"],"sourcesContent":["import clsx, { type ArgumentArray } from 'classnames'\nimport { twMerge } from 'tailwind-merge'\n\nexport const cn = (...inputs: ArgumentArray) => {\n return twMerge(clsx(inputs))\n}\n"],"names":["cn","inputs","twMerge","clsx"],"mappings":"2IAGO,MAAMA,EAAK,IAAIC,IACbC,EAAQC,EAAKF,CAAM,CAAC"}
|