@scbt-ecom/ui 0.92.0 → 0.94.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.
Files changed (455) hide show
  1. package/README.md +1 -1
  2. package/dist/lib/configs/tailwindConfigBase.js.map +1 -1
  3. package/dist/lib/configs/tailwindPresets/resetPreset.js.map +1 -1
  4. package/dist/lib/next/utils/hasWidget.js.map +1 -1
  5. package/dist/lib/next/utils/hideWidgetsWithQueryParams.js.map +1 -1
  6. package/dist/lib/next/utils/orderWidgetWithQueryParams.js.map +1 -1
  7. package/dist/lib/shared/api/apiInstance.js.map +1 -1
  8. package/dist/lib/shared/hooks/useClickOutside.js.map +1 -1
  9. package/dist/lib/shared/hooks/useDebounce.js.map +1 -1
  10. package/dist/lib/shared/hooks/useDevice.js.map +1 -1
  11. package/dist/lib/shared/hooks/useFieldsProgress.js.map +1 -1
  12. package/dist/lib/shared/hooks/useFloating.js.map +1 -1
  13. package/dist/lib/shared/hooks/useObserverWidgets.js.map +1 -1
  14. package/dist/lib/shared/hooks/useOverflow.js.map +1 -1
  15. package/dist/lib/shared/ui/accordion/Accordion.js.map +1 -1
  16. package/dist/lib/shared/ui/calendar/Calendar.js.map +1 -1
  17. package/dist/lib/shared/ui/calendar/ui/MonthCaption.js.map +1 -1
  18. package/dist/lib/shared/ui/calendar/ui/Navigation.js.map +1 -1
  19. package/dist/lib/shared/ui/calendar/ui/selectDate/SelectDate.js.map +1 -1
  20. package/dist/lib/shared/ui/calendar/ui/selectDate/ui/SelectList.js.map +1 -1
  21. package/dist/lib/shared/ui/carousel/CarouselNative.js.map +1 -1
  22. package/dist/lib/shared/ui/carousel/model/hooks/useArrowNavigation.js.map +1 -1
  23. package/dist/lib/shared/ui/carousel/model/hooks/useCarousel.js.map +1 -1
  24. package/dist/lib/shared/ui/carousel/model/hooks/useDotsNavigation.js.map +1 -1
  25. package/dist/lib/shared/ui/carousel/ui/CarouselContent.js.map +1 -1
  26. package/dist/lib/shared/ui/dialog/Dialog.js.map +1 -1
  27. package/dist/lib/shared/ui/dropdownList/DropdownList.js.map +1 -1
  28. package/dist/lib/shared/ui/dropdownList/hooks/useKeyboardNavigation.js.map +1 -1
  29. package/dist/lib/shared/ui/dropdownList/ui/dropdownItem/DropdownItem.js.map +1 -1
  30. package/dist/lib/shared/ui/formElements/controlled/combobox/ComboboxControl.js.map +1 -1
  31. package/dist/lib/shared/ui/formElements/controlled/dadata/address/query.js.map +1 -1
  32. package/dist/lib/shared/ui/formElements/controlled/dadata/auto/query.js.map +1 -1
  33. package/dist/lib/shared/ui/formElements/controlled/dadata/country/query.js.map +1 -1
  34. package/dist/lib/shared/ui/formElements/controlled/dadata/fio/query.js.map +1 -1
  35. package/dist/lib/shared/ui/formElements/controlled/dadata/party/query.js.map +1 -1
  36. package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/model/utils.js.map +1 -1
  37. package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/range.js.map +1 -1
  38. package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/single.js.map +1 -1
  39. package/dist/lib/shared/ui/formElements/controlled/editor/model/config.js.map +1 -1
  40. package/dist/lib/shared/ui/formElements/controlled/editor/ui/Editor.js.map +1 -1
  41. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/setCustomLink.js.map +1 -1
  42. package/dist/lib/shared/ui/formElements/controlled/inputCurrency/InputCurrencyControl.js.map +1 -1
  43. package/dist/lib/shared/ui/formElements/controlled/inputCurrency/model/useInputCurrency.js.map +1 -1
  44. package/dist/lib/shared/ui/formElements/controlled/select/SelectControl.js.map +1 -1
  45. package/dist/lib/shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js.map +1 -1
  46. package/dist/lib/shared/ui/formElements/uncontrolled/checkbox/Checkbox.js.map +1 -1
  47. package/dist/lib/shared/ui/formElements/uncontrolled/combobox/combobox.js +1 -1
  48. package/dist/lib/shared/ui/formElements/uncontrolled/combobox/combobox.js.map +1 -1
  49. package/dist/lib/shared/ui/formElements/uncontrolled/combobox/hooks/useCombobox.js +1 -1
  50. package/dist/lib/shared/ui/formElements/uncontrolled/combobox/hooks/useCombobox.js.map +1 -1
  51. package/dist/lib/shared/ui/formElements/uncontrolled/dayPicker/DayPicker.js.map +1 -1
  52. package/dist/lib/shared/ui/formElements/uncontrolled/input/Input.js.map +1 -1
  53. package/dist/lib/shared/ui/formElements/uncontrolled/inputOtp/InputOtpBase.js.map +1 -1
  54. package/dist/lib/shared/ui/formElements/uncontrolled/radio/RadioGroup.js.map +1 -1
  55. package/dist/lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItem.js.map +1 -1
  56. package/dist/lib/shared/ui/formElements/uncontrolled/select/Select.js.map +1 -1
  57. package/dist/lib/shared/ui/formElements/uncontrolled/select/hooks/useSelectController.js.map +1 -1
  58. package/dist/lib/shared/ui/formElements/uncontrolled/select/ui/Chip.js.map +1 -1
  59. package/dist/lib/shared/ui/formElements/uncontrolled/select/ui/SelectItem.js.map +1 -1
  60. package/dist/lib/shared/ui/formElements/uncontrolled/slider/model/useLogarithmic.js.map +1 -1
  61. package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/Slider.js.map +1 -1
  62. package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/SliderAlgorithmic.js.map +1 -1
  63. package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/hooks/useSliderAlgorithmic.js.map +1 -1
  64. package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderMarks/SliderMarks.js.map +1 -1
  65. package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderMarks/hooks/useSliderMarks.js.map +1 -1
  66. package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderStep/SliderStep.js.map +1 -1
  67. package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderStep/hooks/useSliderStep.js.map +1 -1
  68. package/dist/lib/shared/ui/formElements/uncontrolled/switch/Switch.js.map +1 -1
  69. package/dist/lib/shared/ui/formElements/uncontrolled/textarea/Textarea.js.map +1 -1
  70. package/dist/lib/shared/ui/formElements/uncontrolled/uploader/UploaderBase.js.map +1 -1
  71. package/dist/lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.js.map +1 -1
  72. package/dist/lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderInput.js.map +1 -1
  73. package/dist/lib/shared/ui/modal/Modal.js.map +1 -1
  74. package/dist/lib/shared/ui/modal/ui/IframeModalContent.js.map +1 -1
  75. package/dist/lib/shared/ui/pagination/Pagination.js.map +1 -1
  76. package/dist/lib/shared/ui/providers/NotificationProvider.js.map +1 -1
  77. package/dist/lib/shared/ui/slot/Slot.js.map +1 -1
  78. package/dist/lib/shared/ui/slot/model/mergeProps.js.map +1 -1
  79. package/dist/lib/shared/ui/slot/ui/SlotClone.js.map +1 -1
  80. package/dist/lib/shared/ui/tabSwitcher/ui/TabContent.js.map +1 -1
  81. package/dist/lib/shared/ui/table/Mobile.js.map +1 -1
  82. package/dist/lib/shared/ui/table/model/TableUtils.js.map +1 -1
  83. package/dist/lib/shared/ui/table/ui/editableCell/EditableCell.js.map +1 -1
  84. package/dist/lib/shared/utils/localStorageActions.js.map +1 -1
  85. package/dist/lib/shared/utils/mergeRefs.js.map +1 -1
  86. package/dist/lib/shared/utils/scrollToElement.js.map +1 -1
  87. package/dist/lib/shared/utils/sessionStorage.js.map +1 -1
  88. package/dist/lib/shared/utils/typeGuards.js.map +1 -1
  89. package/dist/lib/shared/validation/base/base.constants.js.map +1 -1
  90. package/dist/lib/shared/validation/base/date.validators.js.map +1 -1
  91. package/dist/lib/shared/validation/base/phone.validators.js.map +1 -1
  92. package/dist/lib/shared/validation/base/select.validators.js.map +1 -1
  93. package/dist/lib/shared/validation/dadata/fio.validators.js.map +1 -1
  94. package/dist/lib/shared/validation/utils/zodUtils.js.map +1 -1
  95. package/dist/lib/widgets/breadcrumbs/Breadcrumbs.js.map +1 -1
  96. package/dist/lib/widgets/buttonWithHandlers/model/useButtonHandler.js.map +1 -1
  97. package/dist/lib/widgets/calculator/CalculatorView.js.map +1 -1
  98. package/dist/lib/widgets/calculator/ui/calculatorFields/hooks/useAdditionalSlider.js.map +1 -1
  99. package/dist/lib/widgets/dynamicForm/DynamicForm.js.map +1 -1
  100. package/dist/lib/widgets/dynamicFormDialog/DynamicFormDialog.js.map +1 -1
  101. package/dist/lib/widgets/fieldMapper/FieldMapper.js.map +1 -1
  102. package/dist/lib/widgets/footer/ui/Ligal.js.map +1 -1
  103. package/dist/lib/widgets/htmlParser/baseHtmlParser.js.map +1 -1
  104. package/dist/lib/widgets/htmlParser/htmlParser.js.map +1 -1
  105. package/dist/lib/widgets/htmlParser/reactHtmlParser.js.map +1 -1
  106. package/dist/lib/widgets/seoHeader/ui/desktop/CategoriesDesktop.js.map +1 -1
  107. package/dist/lib/widgets/seoHeader/ui/desktop/CategoryTabs.js.map +1 -1
  108. package/dist/lib/widgets/seoHeader/ui/desktop/rootTab/RootTab.js.map +1 -1
  109. package/dist/lib/widgets/seoHeader/ui/desktop/tab/ui/content/TabContent.js.map +1 -1
  110. package/dist/lib/widgets/seoHeader/ui/mobile/menu/Menu.js.map +1 -1
  111. package/dist/lib/widgets/seoHeader/ui/mobile/menu/MenuItem.js.map +1 -1
  112. package/dist/lib/widgets/userFeedback/model/hooks/useRating.js.map +1 -1
  113. package/dist/lib/widgets/userFeedback/ui/FeedbackTrigger.js.map +1 -1
  114. package/dist/lib/widgets/userFeedback/ui/UserReview.js.map +1 -1
  115. package/dist/node_modules/@babel/runtime/helpers/esm/extends.js.map +1 -1
  116. package/dist/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js.map +1 -1
  117. package/dist/node_modules/@babel/runtime/helpers/esm/objectSpread2.js.map +1 -1
  118. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js.map +1 -1
  119. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -1
  120. package/dist/node_modules/@babel/runtime/helpers/esm/toPrimitive.js.map +1 -1
  121. package/dist/node_modules/@babel/runtime/helpers/esm/typeof.js.map +1 -1
  122. package/dist/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js.map +1 -1
  123. package/dist/node_modules/@date-fns/tz/date/index.js.map +1 -1
  124. package/dist/node_modules/@date-fns/tz/date/mini.js.map +1 -1
  125. package/dist/node_modules/@date-fns/tz/tzOffset/index.js.map +1 -1
  126. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js.map +1 -1
  127. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -1
  128. package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.js.map +1 -1
  129. package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.utils.js.map +1 -1
  130. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +1 -1
  131. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +1 -1
  132. package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js.map +1 -1
  133. package/dist/node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js.map +1 -1
  134. package/dist/node_modules/@headlessui/react/dist/hooks/use-transition.js.map +1 -1
  135. package/dist/node_modules/@headlessui/react/dist/internal/floating.js.map +1 -1
  136. package/dist/node_modules/@headlessui/react/node_modules/@floating-ui/react/dist/floating-ui.react.js.map +1 -1
  137. package/dist/node_modules/@headlessui/react/node_modules/@floating-ui/react/dist/floating-ui.react.utils.js.map +1 -1
  138. package/dist/node_modules/@radix-ui/primitive/dist/index.js.map +1 -1
  139. package/dist/node_modules/@radix-ui/react-checkbox/dist/index.js.map +1 -1
  140. package/dist/node_modules/@radix-ui/react-collection/dist/index.js.map +1 -1
  141. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js.map +1 -1
  142. package/dist/node_modules/@radix-ui/react-context/dist/index.js.map +1 -1
  143. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js.map +1 -1
  144. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js.map +1 -1
  145. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js.map +1 -1
  146. package/dist/node_modules/@radix-ui/react-id/dist/index.js.map +1 -1
  147. package/dist/node_modules/@radix-ui/react-popover/dist/index.js.map +1 -1
  148. package/dist/node_modules/@radix-ui/react-popper/dist/index.js.map +1 -1
  149. package/dist/node_modules/@radix-ui/react-presence/dist/index.js.map +1 -1
  150. package/dist/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -1
  151. package/dist/node_modules/@radix-ui/react-radio-group/dist/index.js.map +1 -1
  152. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js.map +1 -1
  153. package/dist/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -1
  154. package/dist/node_modules/@radix-ui/react-switch/dist/index.js.map +1 -1
  155. package/dist/node_modules/@radix-ui/react-tabs/dist/index.js.map +1 -1
  156. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.js.map +1 -1
  157. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js.map +1 -1
  158. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js.map +1 -1
  159. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js.map +1 -1
  160. package/dist/node_modules/@radix-ui/react-use-size/dist/index.js.map +1 -1
  161. package/dist/node_modules/@react-aria/focus/dist/useFocusRing.js.map +1 -1
  162. package/dist/node_modules/@react-aria/interactions/dist/useFocus.js.map +1 -1
  163. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.js.map +1 -1
  164. package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.js.map +1 -1
  165. package/dist/node_modules/@react-aria/interactions/dist/useHover.js.map +1 -1
  166. package/dist/node_modules/@react-aria/interactions/dist/utils.js.map +1 -1
  167. package/dist/node_modules/@react-aria/utils/dist/DOMFunctions.js.map +1 -1
  168. package/dist/node_modules/@react-aria/utils/dist/useEffectEvent.js.map +1 -1
  169. package/dist/node_modules/@react-aria/utils/dist/useGlobalListeners.js.map +1 -1
  170. package/dist/node_modules/@react-aria/utils/dist/useLayoutEffect.js.map +1 -1
  171. package/dist/node_modules/@tanstack/query-core/build/modern/focusManager.js.map +1 -1
  172. package/dist/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js.map +1 -1
  173. package/dist/node_modules/@tanstack/query-core/build/modern/mutation.js.map +1 -1
  174. package/dist/node_modules/@tanstack/query-core/build/modern/mutationCache.js.map +1 -1
  175. package/dist/node_modules/@tanstack/query-core/build/modern/notifyManager.js.map +1 -1
  176. package/dist/node_modules/@tanstack/query-core/build/modern/onlineManager.js.map +1 -1
  177. package/dist/node_modules/@tanstack/query-core/build/modern/query.js.map +1 -1
  178. package/dist/node_modules/@tanstack/query-core/build/modern/queryCache.js.map +1 -1
  179. package/dist/node_modules/@tanstack/query-core/build/modern/queryClient.js.map +1 -1
  180. package/dist/node_modules/@tanstack/query-core/build/modern/queryObserver.js.map +1 -1
  181. package/dist/node_modules/@tanstack/query-core/build/modern/removable.js.map +1 -1
  182. package/dist/node_modules/@tanstack/query-core/build/modern/retryer.js.map +1 -1
  183. package/dist/node_modules/@tanstack/query-core/build/modern/subscribable.js.map +1 -1
  184. package/dist/node_modules/@tanstack/query-core/build/modern/thenable.js.map +1 -1
  185. package/dist/node_modules/@tanstack/query-core/build/modern/utils.js.map +1 -1
  186. package/dist/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js.map +1 -1
  187. package/dist/node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js.map +1 -1
  188. package/dist/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js.map +1 -1
  189. package/dist/node_modules/@tanstack/react-query/build/modern/suspense.js.map +1 -1
  190. package/dist/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js.map +1 -1
  191. package/dist/node_modules/@tanstack/react-table/build/lib/index.js.map +1 -1
  192. package/dist/node_modules/@tanstack/react-virtual/dist/esm/index.js.map +1 -1
  193. package/dist/node_modules/@tanstack/table-core/build/lib/index.js.map +1 -1
  194. package/dist/node_modules/@tanstack/virtual-core/dist/esm/index.js.map +1 -1
  195. package/dist/node_modules/@tanstack/virtual-core/dist/esm/utils.js.map +1 -1
  196. package/dist/node_modules/@tiptap/core/dist/index.js.map +1 -1
  197. package/dist/node_modules/@tiptap/extension-blockquote/dist/index.js.map +1 -1
  198. package/dist/node_modules/@tiptap/extension-bold/dist/index.js.map +1 -1
  199. package/dist/node_modules/@tiptap/extension-bullet-list/dist/index.js.map +1 -1
  200. package/dist/node_modules/@tiptap/extension-character-count/dist/index.js.map +1 -1
  201. package/dist/node_modules/@tiptap/extension-code/dist/index.js.map +1 -1
  202. package/dist/node_modules/@tiptap/extension-code-block/dist/index.js.map +1 -1
  203. package/dist/node_modules/@tiptap/extension-color/dist/index.js.map +1 -1
  204. package/dist/node_modules/@tiptap/extension-dropcursor/dist/index.js.map +1 -1
  205. package/dist/node_modules/@tiptap/extension-gapcursor/dist/index.js.map +1 -1
  206. package/dist/node_modules/@tiptap/extension-hard-break/dist/index.js.map +1 -1
  207. package/dist/node_modules/@tiptap/extension-heading/dist/index.js.map +1 -1
  208. package/dist/node_modules/@tiptap/extension-history/dist/index.js.map +1 -1
  209. package/dist/node_modules/@tiptap/extension-horizontal-rule/dist/index.js.map +1 -1
  210. package/dist/node_modules/@tiptap/extension-italic/dist/index.js.map +1 -1
  211. package/dist/node_modules/@tiptap/extension-link/dist/index.js.map +1 -1
  212. package/dist/node_modules/@tiptap/extension-list-item/dist/index.js.map +1 -1
  213. package/dist/node_modules/@tiptap/extension-ordered-list/dist/index.js.map +1 -1
  214. package/dist/node_modules/@tiptap/extension-paragraph/dist/index.js.map +1 -1
  215. package/dist/node_modules/@tiptap/extension-strike/dist/index.js.map +1 -1
  216. package/dist/node_modules/@tiptap/extension-text-style/dist/index.js.map +1 -1
  217. package/dist/node_modules/@tiptap/extension-underline/dist/index.js.map +1 -1
  218. package/dist/node_modules/@tiptap/react/dist/index.js.map +1 -1
  219. package/dist/node_modules/@tiptap/starter-kit/dist/index.js.map +1 -1
  220. package/dist/node_modules/aria-hidden/dist/es2015/index.js.map +1 -1
  221. package/dist/node_modules/class-variance-authority/dist/index.js.map +1 -1
  222. package/dist/node_modules/classnames/index.js.map +1 -1
  223. package/dist/node_modules/date-fns/_lib/format/formatters.js.map +1 -1
  224. package/dist/node_modules/date-fns/_lib/format/lightFormatters.js.map +1 -1
  225. package/dist/node_modules/date-fns/format.js.map +1 -1
  226. package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +1 -1
  227. package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +1 -1
  228. package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +1 -1
  229. package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +1 -1
  230. package/dist/node_modules/date-fns/locale/ru/_lib/formatRelative.js.map +1 -1
  231. package/dist/node_modules/date-fns/max.js.map +1 -1
  232. package/dist/node_modules/date-fns/min.js.map +1 -1
  233. package/dist/node_modules/date-fns/parse/_lib/Parser.js.map +1 -1
  234. package/dist/node_modules/date-fns/parse/_lib/Setter.js.map +1 -1
  235. package/dist/node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js.map +1 -1
  236. package/dist/node_modules/date-fns/parse/_lib/parsers/AMPMParser.js.map +1 -1
  237. package/dist/node_modules/date-fns/parse/_lib/parsers/DateParser.js.map +1 -1
  238. package/dist/node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js.map +1 -1
  239. package/dist/node_modules/date-fns/parse/_lib/parsers/DayParser.js.map +1 -1
  240. package/dist/node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js.map +1 -1
  241. package/dist/node_modules/date-fns/parse/_lib/parsers/EraParser.js.map +1 -1
  242. package/dist/node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js.map +1 -1
  243. package/dist/node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js.map +1 -1
  244. package/dist/node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js.map +1 -1
  245. package/dist/node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js.map +1 -1
  246. package/dist/node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js.map +1 -1
  247. package/dist/node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js.map +1 -1
  248. package/dist/node_modules/date-fns/parse/_lib/parsers/ISODayParser.js.map +1 -1
  249. package/dist/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js.map +1 -1
  250. package/dist/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js.map +1 -1
  251. package/dist/node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js.map +1 -1
  252. package/dist/node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js.map +1 -1
  253. package/dist/node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js.map +1 -1
  254. package/dist/node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js.map +1 -1
  255. package/dist/node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js.map +1 -1
  256. package/dist/node_modules/date-fns/parse/_lib/parsers/MinuteParser.js.map +1 -1
  257. package/dist/node_modules/date-fns/parse/_lib/parsers/MonthParser.js.map +1 -1
  258. package/dist/node_modules/date-fns/parse/_lib/parsers/QuarterParser.js.map +1 -1
  259. package/dist/node_modules/date-fns/parse/_lib/parsers/SecondParser.js.map +1 -1
  260. package/dist/node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js.map +1 -1
  261. package/dist/node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js.map +1 -1
  262. package/dist/node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js.map +1 -1
  263. package/dist/node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js.map +1 -1
  264. package/dist/node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js.map +1 -1
  265. package/dist/node_modules/date-fns/parse/_lib/parsers/YearParser.js.map +1 -1
  266. package/dist/node_modules/date-fns/parse/_lib/utils.js.map +1 -1
  267. package/dist/node_modules/date-fns/parse.js.map +1 -1
  268. package/dist/node_modules/embla-carousel/esm/embla-carousel.esm.js.map +1 -1
  269. package/dist/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js.map +1 -1
  270. package/dist/node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js.map +1 -1
  271. package/dist/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js.map +1 -1
  272. package/dist/node_modules/file-selector/dist/es2015/file-selector.js.map +1 -1
  273. package/dist/node_modules/file-selector/dist/es2015/file.js.map +1 -1
  274. package/dist/node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.js.map +1 -1
  275. package/dist/node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.js.map +1 -1
  276. package/dist/node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.js.map +1 -1
  277. package/dist/node_modules/framer-motion/dist/es/animation/generators/inertia.js.map +1 -1
  278. package/dist/node_modules/framer-motion/dist/es/animation/generators/spring/find.js.map +1 -1
  279. package/dist/node_modules/framer-motion/dist/es/animation/generators/spring/index.js.map +1 -1
  280. package/dist/node_modules/framer-motion/dist/es/animation/interfaces/motion-value.js.map +1 -1
  281. package/dist/node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.js.map +1 -1
  282. package/dist/node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.js.map +1 -1
  283. package/dist/node_modules/framer-motion/dist/es/animation/interfaces/visual-element.js.map +1 -1
  284. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.js.map +1 -1
  285. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.js.map +1 -1
  286. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.js.map +1 -1
  287. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.js.map +1 -1
  288. package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/utils.js.map +1 -1
  289. package/dist/node_modules/framer-motion/dist/es/context/MotionContext/utils.js.map +1 -1
  290. package/dist/node_modules/framer-motion/dist/es/easing/utils/map.js.map +1 -1
  291. package/dist/node_modules/framer-motion/dist/es/frameloop/batcher.js.map +1 -1
  292. package/dist/node_modules/framer-motion/dist/es/frameloop/render-step.js.map +1 -1
  293. package/dist/node_modules/framer-motion/dist/es/frameloop/sync-time.js.map +1 -1
  294. package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.js.map +1 -1
  295. package/dist/node_modules/framer-motion/dist/es/gestures/drag/index.js.map +1 -1
  296. package/dist/node_modules/framer-motion/dist/es/gestures/focus.js.map +1 -1
  297. package/dist/node_modules/framer-motion/dist/es/gestures/hover.js.map +1 -1
  298. package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.js.map +1 -1
  299. package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.js.map +1 -1
  300. package/dist/node_modules/framer-motion/dist/es/gestures/press.js.map +1 -1
  301. package/dist/node_modules/framer-motion/dist/es/motion/features/Feature.js.map +1 -1
  302. package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.js.map +1 -1
  303. package/dist/node_modules/framer-motion/dist/es/motion/features/animation/index.js.map +1 -1
  304. package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.js.map +1 -1
  305. package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.js.map +1 -1
  306. package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.js.map +1 -1
  307. package/dist/node_modules/framer-motion/dist/es/motion/index.js.map +1 -1
  308. package/dist/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.js.map +1 -1
  309. package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.js.map +1 -1
  310. package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.js.map +1 -1
  311. package/dist/node_modules/framer-motion/dist/es/projection/animation/mix-values.js.map +1 -1
  312. package/dist/node_modules/framer-motion/dist/es/projection/geometry/delta-apply.js.map +1 -1
  313. package/dist/node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.js.map +1 -1
  314. package/dist/node_modules/framer-motion/dist/es/projection/node/create-projection-node.js.map +1 -1
  315. package/dist/node_modules/framer-motion/dist/es/projection/shared/stack.js.map +1 -1
  316. package/dist/node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.js.map +1 -1
  317. package/dist/node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.js.map +1 -1
  318. package/dist/node_modules/framer-motion/dist/es/projection/styles/transform.js.map +1 -1
  319. package/dist/node_modules/framer-motion/dist/es/render/VisualElement.js.map +1 -1
  320. package/dist/node_modules/framer-motion/dist/es/render/components/create-factory.js.map +1 -1
  321. package/dist/node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.js.map +1 -1
  322. package/dist/node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.js.map +1 -1
  323. package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.js.map +1 -1
  324. package/dist/node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.js.map +1 -1
  325. package/dist/node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.js.map +1 -1
  326. package/dist/node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.js.map +1 -1
  327. package/dist/node_modules/framer-motion/dist/es/render/html/use-props.js.map +1 -1
  328. package/dist/node_modules/framer-motion/dist/es/render/html/utils/build-styles.js.map +1 -1
  329. package/dist/node_modules/framer-motion/dist/es/render/html/utils/build-transform.js.map +1 -1
  330. package/dist/node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.js.map +1 -1
  331. package/dist/node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.js.map +1 -1
  332. package/dist/node_modules/framer-motion/dist/es/render/svg/config-motion.js.map +1 -1
  333. package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.js.map +1 -1
  334. package/dist/node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.js.map +1 -1
  335. package/dist/node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.js.map +1 -1
  336. package/dist/node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.js.map +1 -1
  337. package/dist/node_modules/framer-motion/dist/es/render/utils/animation-state.js.map +1 -1
  338. package/dist/node_modules/framer-motion/dist/es/render/utils/flat-tree.js.map +1 -1
  339. package/dist/node_modules/framer-motion/dist/es/render/utils/get-variant-context.js.map +1 -1
  340. package/dist/node_modules/framer-motion/dist/es/render/utils/motion-values.js.map +1 -1
  341. package/dist/node_modules/framer-motion/dist/es/render/utils/resolve-variants.js.map +1 -1
  342. package/dist/node_modules/framer-motion/dist/es/render/utils/setters.js.map +1 -1
  343. package/dist/node_modules/framer-motion/dist/es/utils/delay.js.map +1 -1
  344. package/dist/node_modules/framer-motion/dist/es/utils/hsla-to-rgba.js.map +1 -1
  345. package/dist/node_modules/framer-motion/dist/es/utils/interpolate.js.map +1 -1
  346. package/dist/node_modules/framer-motion/dist/es/utils/mix/complex.js.map +1 -1
  347. package/dist/node_modules/framer-motion/dist/es/utils/offsets/fill.js.map +1 -1
  348. package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/index.js.map +1 -1
  349. package/dist/node_modules/framer-motion/dist/es/utils/subscription-manager.js.map +1 -1
  350. package/dist/node_modules/framer-motion/dist/es/value/index.js.map +1 -1
  351. package/dist/node_modules/framer-motion/dist/es/value/types/complex/filter.js.map +1 -1
  352. package/dist/node_modules/framer-motion/dist/es/value/types/complex/index.js.map +1 -1
  353. package/dist/node_modules/linkifyjs/dist/linkify.js.map +1 -1
  354. package/dist/node_modules/motion-dom/dist/es/animation/controls/BaseGroup.js.map +1 -1
  355. package/dist/node_modules/motion-dom/dist/es/animation/controls/Group.js.map +1 -1
  356. package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.js.map +1 -1
  357. package/dist/node_modules/motion-dom/dist/es/gestures/hover.js.map +1 -1
  358. package/dist/node_modules/motion-dom/dist/es/gestures/press/index.js.map +1 -1
  359. package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.js.map +1 -1
  360. package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.js.map +1 -1
  361. package/dist/node_modules/motion-dom/dist/es/utils/supports/linear-easing.js.map +1 -1
  362. package/dist/node_modules/motion-dom/dist/es/utils/supports/memo.js.map +1 -1
  363. package/dist/node_modules/orderedmap/dist/index.js.map +1 -1
  364. package/dist/node_modules/prosemirror-commands/dist/index.js.map +1 -1
  365. package/dist/node_modules/prosemirror-dropcursor/dist/index.js.map +1 -1
  366. package/dist/node_modules/prosemirror-gapcursor/dist/index.js.map +1 -1
  367. package/dist/node_modules/prosemirror-history/dist/index.js.map +1 -1
  368. package/dist/node_modules/prosemirror-keymap/dist/index.js.map +1 -1
  369. package/dist/node_modules/prosemirror-model/dist/index.js.map +1 -1
  370. package/dist/node_modules/prosemirror-schema-list/dist/index.js.map +1 -1
  371. package/dist/node_modules/prosemirror-state/dist/index.js.map +1 -1
  372. package/dist/node_modules/prosemirror-transform/dist/index.js.map +1 -1
  373. package/dist/node_modules/prosemirror-view/dist/index.js.map +1 -1
  374. package/dist/node_modules/rc-slider/es/Handles/Handle.js.map +1 -1
  375. package/dist/node_modules/rc-slider/es/Handles/index.js.map +1 -1
  376. package/dist/node_modules/rc-slider/es/Marks/Mark.js.map +1 -1
  377. package/dist/node_modules/rc-slider/es/Marks/index.js.map +1 -1
  378. package/dist/node_modules/rc-slider/es/Slider.js.map +1 -1
  379. package/dist/node_modules/rc-slider/es/Steps/index.js.map +1 -1
  380. package/dist/node_modules/rc-slider/es/Tracks/Track.js.map +1 -1
  381. package/dist/node_modules/rc-slider/es/Tracks/index.js.map +1 -1
  382. package/dist/node_modules/rc-slider/es/hooks/useDrag.js.map +1 -1
  383. package/dist/node_modules/rc-slider/es/hooks/useOffset.js.map +1 -1
  384. package/dist/node_modules/rc-slider/es/hooks/useRange.js.map +1 -1
  385. package/dist/node_modules/rc-util/es/hooks/useEvent.js.map +1 -1
  386. package/dist/node_modules/rc-util/es/hooks/useLayoutEffect.js.map +1 -1
  387. package/dist/node_modules/rc-util/es/hooks/useMergedState.js.map +1 -1
  388. package/dist/node_modules/rc-util/es/hooks/useState.js.map +1 -1
  389. package/dist/node_modules/rc-util/es/isEqual.js.map +1 -1
  390. package/dist/node_modules/react-day-picker/dist/esm/DayPicker.js +1 -1
  391. package/dist/node_modules/react-day-picker/dist/esm/DayPicker.js.map +1 -1
  392. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js.map +1 -1
  393. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js.map +1 -1
  394. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js.map +1 -1
  395. package/dist/node_modules/react-day-picker/dist/esm/classes/DateLib.js.map +1 -1
  396. package/dist/node_modules/react-day-picker/dist/esm/components/DayButton.js.map +1 -1
  397. package/dist/node_modules/react-day-picker/dist/esm/components/Nav.js.map +1 -1
  398. package/dist/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js.map +1 -1
  399. package/dist/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js +1 -1
  400. package/dist/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js.map +1 -1
  401. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js.map +1 -1
  402. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDates.js.map +1 -1
  403. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDays.js.map +1 -1
  404. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js.map +1 -1
  405. package/dist/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js +1 -1
  406. package/dist/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js.map +1 -1
  407. package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js.map +1 -1
  408. package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonths.js.map +1 -1
  409. package/dist/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js.map +1 -1
  410. package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js.map +1 -1
  411. package/dist/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js.map +1 -1
  412. package/dist/node_modules/react-day-picker/dist/esm/selection/useMulti.js.map +1 -1
  413. package/dist/node_modules/react-day-picker/dist/esm/selection/useRange.js.map +1 -1
  414. package/dist/node_modules/react-day-picker/dist/esm/selection/useSingle.js.map +1 -1
  415. package/dist/node_modules/react-day-picker/dist/esm/useAnimation.js.map +1 -1
  416. package/dist/node_modules/react-day-picker/dist/esm/useCalendar.js +1 -1
  417. package/dist/node_modules/react-day-picker/dist/esm/useCalendar.js.map +1 -1
  418. package/dist/node_modules/react-day-picker/dist/esm/useFocus.js.map +1 -1
  419. package/dist/node_modules/react-day-picker/dist/esm/utils/addToRange.js.map +1 -1
  420. package/dist/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js.map +1 -1
  421. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js.map +1 -1
  422. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js.map +1 -1
  423. package/dist/node_modules/react-dropzone/dist/es/index.js.map +1 -1
  424. package/dist/node_modules/react-dropzone/dist/es/utils/index.js.map +1 -1
  425. package/dist/node_modules/react-hook-form/dist/index.esm.js +1 -1
  426. package/dist/node_modules/react-hook-form/dist/index.esm.js.map +1 -1
  427. package/dist/node_modules/react-number-format/dist/react-number-format.es.js.map +1 -1
  428. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js.map +1 -1
  429. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js.map +1 -1
  430. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js.map +1 -1
  431. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js.map +1 -1
  432. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js.map +1 -1
  433. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js.map +1 -1
  434. package/dist/node_modules/react-style-singleton/dist/es2015/component.js.map +1 -1
  435. package/dist/node_modules/react-style-singleton/dist/es2015/hook.js.map +1 -1
  436. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js.map +1 -1
  437. package/dist/node_modules/rope-sequence/dist/index.js.map +1 -1
  438. package/dist/node_modules/tailwindcss/lib/public/create-plugin.js.map +1 -1
  439. package/dist/node_modules/tailwindcss/lib/util/createPlugin.js.map +1 -1
  440. package/dist/node_modules/tslib/tslib.es6.js.map +1 -1
  441. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js.map +1 -1
  442. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js.map +1 -1
  443. package/dist/node_modules/use-sidecar/dist/es2015/medium.js.map +1 -1
  444. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  445. package/dist/node_modules/zod/v3/ZodError.js.map +1 -1
  446. package/dist/node_modules/zod/v3/helpers/parseUtil.js.map +1 -1
  447. package/dist/node_modules/zod/v3/helpers/util.js.map +1 -1
  448. package/dist/node_modules/zod/v3/types.js.map +1 -1
  449. package/dist/src/shared/utils/getDynamicSchema.js.map +1 -1
  450. package/dist/stats.html +1 -1
  451. package/dist/types/lib/shared/ui/dropdownList/DropdownList.d.ts +1 -1
  452. package/dist/types/lib/shared/ui/formElements/uncontrolled/combobox/combobox.d.ts +12 -1
  453. package/dist/types/lib/shared/ui/formElements/uncontrolled/combobox/hooks/useCombobox.d.ts +2 -0
  454. package/dist/types/lib/shared/ui/formElements/uncontrolled/index.d.ts +1 -1
  455. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sources":["../../../../../lib/shared/ui/pagination/Pagination.tsx"],"sourcesContent":["import { cn } from '../../utils'\nimport { Button } from '../button'\nimport { Icon } from '../icon'\n\ntype PaginationClasses = {\n root?: string\n button?: string\n ellipsis?: string\n active?: string\n}\n\nexport type PaginationProps = {\n /**\n * активная страница\n */\n page?: number\n /**\n * количество элементов после сужения страниц пример 1 - (1...6 7 8...n)\n * ^ ^\n */\n between?: number\n /**\n * количество элементов на странице\n */\n totalPages: number\n /**\n * функция для переключения страницы\n */\n changePage: (page: number) => void\n /**\n * включить переход на следующую/предыдущую страницу\n */\n next?: boolean\n /**\n * количество страниц для сужения\n */\n ellipsis?: number\n /**\n * дополнительные стили\n */\n classes?: PaginationClasses\n}\n\nexport const Pagination = ({\n page = 1,\n between = 3,\n totalPages,\n changePage,\n next = true,\n ellipsis = 0,\n classes\n}: PaginationProps) => {\n // гарантирует что between никогда не будет меньше 1\n between = between < 1 ? 1 : between\n // ограничиваем текущую страницу от 1 до totalPages\n page = Math.min(Math.max(page, 1), totalPages)\n // ограничиваем количество сужаемых элементов от 0 до between - 2\n ellipsis = Math.min(Math.max(ellipsis, 0), between - 2)\n\n const positions = Array.from({ length: totalPages }, (_, index) => index)\n\n // количество отображаемых страниц (включая активную)\n const visiblePages = between * 2 + 1\n\n let range\n\n if (totalPages < visiblePages) {\n // если общее количество страниц меньше, чем нужно отобразить, то отображаем все страницы\n range = positions\n } else if (page - 1 <= between) {\n // если текущая страница близка к началу, то отображаем страницы с начала\n range = positions.slice(0, visiblePages - (ellipsis > 0 ? ellipsis + 1 : 0))\n } else if (page + between >= totalPages) {\n // если текущая страница близка к концу, то отображаем страницы с конца\n range = positions.slice(totalPages - visiblePages + (ellipsis > 0 ? ellipsis + 1 : 0), totalPages)\n } else {\n // иначе показываем страницы обрезая их слева и справа\n range = positions.slice(\n page - 1 - (between - (ellipsis > 0 ? ellipsis + 1 : 0)),\n page + (between - (ellipsis > 0 ? ellipsis + 1 : 0))\n )\n }\n\n return (\n <div className={cn('flex', classes?.root)}>\n {next && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled', classes?.button)}\n disabled={page <= 1}\n onClick={() => page > 1 && changePage(page - 2)}\n >\n <Icon name='arrows/arrowRight' className='rotate-180' />\n </Button>\n )}\n {totalPages > visiblePages &&\n ellipsis > 0 &&\n positions.slice(0, page - 1 <= between ? 0 : ellipsis).map((value) => (\n <Button\n key={value}\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark', classes?.button)}\n onClick={() => value !== page - 1 && changePage(value)}\n >\n {value + 1}\n </Button>\n ))}\n {totalPages > visiblePages && ellipsis > 0 && page - 1 > between && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark', classes?.ellipsis)}\n >\n ...\n </Button>\n )}\n {range.map((value) => {\n const active = value === page - 1\n\n return (\n <Button\n key={value}\n size='sm'\n className={cn(\n 'mob-body-regular-l w-[40px] p-0 text-color-dark',\n {\n [`text-color-primary-default ${classes?.active}`]: active\n },\n classes?.button\n )}\n intent={active ? 'secondary' : 'ghost'}\n onClick={() => !active && changePage(value)}\n >\n {value + 1}\n </Button>\n )\n })}\n {totalPages > visiblePages && ellipsis > 0 && page < totalPages - between && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark', classes?.ellipsis)}\n >\n ...\n </Button>\n )}\n {totalPages > visiblePages &&\n ellipsis > 0 &&\n positions.slice(page >= totalPages - between ? totalPages : totalPages - ellipsis, totalPages).map((value) => (\n <Button\n key={value}\n size='sm'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark', classes?.button)}\n intent='ghost'\n onClick={() => value !== page - 1 && changePage(value)}\n >\n {value + 1}\n </Button>\n ))}\n {next && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled', classes?.button)}\n disabled={page >= totalPages}\n onClick={() => page < totalPages && changePage(page)}\n >\n <Icon name='arrows/arrowRight' />\n </Button>\n )}\n </div>\n )\n}\n"],"names":["Pagination","page","between","totalPages","changePage","next","ellipsis","classes","positions","_","index","visiblePages","range","cn","jsx","Button","Icon","value","active"],"mappings":"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"}
1
+ {"version":3,"file":"Pagination.js","sources":["../../../../../lib/shared/ui/pagination/Pagination.tsx"],"sourcesContent":["import { cn } from '../../utils'\nimport { Button } from '../button'\nimport { Icon } from '../icon'\n\ntype PaginationClasses = {\n root?: string\n button?: string\n ellipsis?: string\n active?: string\n}\n\nexport type PaginationProps = {\n /**\n * активная страница\n */\n page?: number\n /**\n * количество элементов после сужения страниц пример 1 - (1...6 7 8...n)\n * ^ ^\n */\n between?: number\n /**\n * количество элементов на странице\n */\n totalPages: number\n /**\n * функция для переключения страницы\n */\n changePage: (page: number) => void\n /**\n * включить переход на следующую/предыдущую страницу\n */\n next?: boolean\n /**\n * количество страниц для сужения\n */\n ellipsis?: number\n /**\n * дополнительные стили\n */\n classes?: PaginationClasses\n}\n\nexport const Pagination = ({\n page = 1,\n between = 3,\n totalPages,\n changePage,\n next = true,\n ellipsis = 0,\n classes\n}: PaginationProps) => {\n // гарантирует что between никогда не будет меньше 1\n between = between < 1 ? 1 : between\n // ограничиваем текущую страницу от 1 до totalPages\n page = Math.min(Math.max(page, 1), totalPages)\n // ограничиваем количество сужаемых элементов от 0 до between - 2\n ellipsis = Math.min(Math.max(ellipsis, 0), between - 2)\n\n const positions = Array.from({ length: totalPages }, (_, index) => index)\n\n // количество отображаемых страниц (включая активную)\n const visiblePages = between * 2 + 1\n\n let range\n\n if (totalPages < visiblePages) {\n // если общее количество страниц меньше, чем нужно отобразить, то отображаем все страницы\n range = positions\n } else if (page - 1 <= between) {\n // если текущая страница близка к началу, то отображаем страницы с начала\n range = positions.slice(0, visiblePages - (ellipsis > 0 ? ellipsis + 1 : 0))\n } else if (page + between >= totalPages) {\n // если текущая страница близка к концу, то отображаем страницы с конца\n range = positions.slice(totalPages - visiblePages + (ellipsis > 0 ? ellipsis + 1 : 0), totalPages)\n } else {\n // иначе показываем страницы обрезая их слева и справа\n range = positions.slice(\n page - 1 - (between - (ellipsis > 0 ? ellipsis + 1 : 0)),\n page + (between - (ellipsis > 0 ? ellipsis + 1 : 0))\n )\n }\n\n return (\n <div className={cn('flex', classes?.root)}>\n {next && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled', classes?.button)}\n disabled={page <= 1}\n onClick={() => page > 1 && changePage(page - 2)}\n >\n <Icon name='arrows/arrowRight' className='rotate-180' />\n </Button>\n )}\n {totalPages > visiblePages &&\n ellipsis > 0 &&\n positions.slice(0, page - 1 <= between ? 0 : ellipsis).map((value) => (\n <Button\n key={value}\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark', classes?.button)}\n onClick={() => value !== page - 1 && changePage(value)}\n >\n {value + 1}\n </Button>\n ))}\n {totalPages > visiblePages && ellipsis > 0 && page - 1 > between && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark', classes?.ellipsis)}\n >\n ...\n </Button>\n )}\n {range.map((value) => {\n const active = value === page - 1\n\n return (\n <Button\n key={value}\n size='sm'\n className={cn(\n 'mob-body-regular-l w-[40px] p-0 text-color-dark',\n {\n [`text-color-primary-default ${classes?.active}`]: active\n },\n classes?.button\n )}\n intent={active ? 'secondary' : 'ghost'}\n onClick={() => !active && changePage(value)}\n >\n {value + 1}\n </Button>\n )\n })}\n {totalPages > visiblePages && ellipsis > 0 && page < totalPages - between && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark', classes?.ellipsis)}\n >\n ...\n </Button>\n )}\n {totalPages > visiblePages &&\n ellipsis > 0 &&\n positions.slice(page >= totalPages - between ? totalPages : totalPages - ellipsis, totalPages).map((value) => (\n <Button\n key={value}\n size='sm'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark', classes?.button)}\n intent='ghost'\n onClick={() => value !== page - 1 && changePage(value)}\n >\n {value + 1}\n </Button>\n ))}\n {next && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled', classes?.button)}\n disabled={page >= totalPages}\n onClick={() => page < totalPages && changePage(page)}\n >\n <Icon name='arrows/arrowRight' />\n </Button>\n )}\n </div>\n )\n}\n"],"names":["Pagination","page","between","totalPages","changePage","next","ellipsis","classes","positions","_","index","visiblePages","range","cn","jsx","Button","Icon","value","active"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationProvider.js","sources":["../../../../../lib/shared/ui/providers/NotificationProvider.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect } from 'react'\nimport toast, { Toaster, useToasterStore } from 'react-hot-toast'\n\nexport interface NotificationProviderProps {\n maxToastViewLimit?: number\n toastDuration?: number\n}\n\nexport const NotificationProvider = ({ maxToastViewLimit = 2, toastDuration = 5000 }: NotificationProviderProps) => {\n const { toasts } = useToasterStore()\n\n useEffect(() => {\n toasts\n .filter((t) => t.visible)\n .filter((_, i) => i >= maxToastViewLimit)\n .forEach((t) => toast.dismiss(t.id))\n }, [maxToastViewLimit, toasts])\n\n return (\n <Toaster\n position='top-center'\n toastOptions={{\n duration: toastDuration\n }}\n />\n )\n}\n"],"names":["NotificationProvider","maxToastViewLimit","toastDuration","toasts","useToasterStore","useEffect","_","i","toast","jsx","Toaster"],"mappings":"mLAUO,MAAMA,EAAuB,CAAC,CAAE,kBAAAC,EAAoB,EAAG,cAAAC,EAAgB,OAAsC,CAClH,KAAM,CAAE,OAAAC,CAAA,EAAWC,EAAA,EAEnB,OAAAC,EAAU,IAAM,CACdF,EACG,OAAQ,GAAM,EAAE,OAAO,EACvB,OAAO,CAACG,EAAGC,IAAMA,GAAKN,CAAiB,EACvC,QAAS,GAAMO,EAAM,QAAQ,EAAE,EAAE,CAAC,CAAA,EACpC,CAACP,EAAmBE,CAAM,CAAC,EAG5BM,EAACC,EAAA,CACC,SAAS,aACT,aAAc,CACZ,SAAUR,CAAA,CACZ,CAAA,CAGN"}
1
+ {"version":3,"file":"NotificationProvider.js","sources":["../../../../../lib/shared/ui/providers/NotificationProvider.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect } from 'react'\nimport toast, { Toaster, useToasterStore } from 'react-hot-toast'\n\nexport interface NotificationProviderProps {\n maxToastViewLimit?: number\n toastDuration?: number\n}\n\nexport const NotificationProvider = ({ maxToastViewLimit = 2, toastDuration = 5000 }: NotificationProviderProps) => {\n const { toasts } = useToasterStore()\n\n useEffect(() => {\n toasts\n .filter((t) => t.visible)\n .filter((_, i) => i >= maxToastViewLimit)\n .forEach((t) => toast.dismiss(t.id))\n }, [maxToastViewLimit, toasts])\n\n return (\n <Toaster\n position='top-center'\n toastOptions={{\n duration: toastDuration\n }}\n />\n )\n}\n"],"names":["NotificationProvider","maxToastViewLimit","toastDuration","toasts","useToasterStore","useEffect","_","i","toast","jsx","Toaster"],"mappings":"mLAUO,MAAMA,EAAuB,CAAC,CAAE,kBAAAC,EAAoB,EAAG,cAAAC,EAAgB,OAAsC,CAClH,KAAM,CAAE,OAAAC,CAAA,EAAWC,EAAA,EAEnB,OAAAC,EAAU,IAAM,CACdF,EACG,OAAQ,GAAM,EAAE,OAAO,EACvB,OAAO,CAACG,EAAGC,IAAMA,GAAKN,CAAiB,EACvC,QAAS,GAAMO,EAAM,QAAQ,EAAE,EAAE,CAAC,CACvC,EAAG,CAACP,EAAmBE,CAAM,CAAC,EAG5BM,EAACC,EAAA,CACC,SAAS,aACT,aAAc,CACZ,SAAUR,CAAA,CACZ,CAAA,CAGN"}
@@ -1 +1 @@
1
- {"version":3,"file":"Slot.js","sources":["../../../../../lib/shared/ui/slot/Slot.tsx"],"sourcesContent":["import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { isSlottable } from './model'\nimport { SlotClone, type SlottableProps } from '$/shared/ui/slot/ui'\n\nexport type SlotProps = React.HTMLAttributes<HTMLElement> & {\n children?: React.ReactNode\n}\n\nexport const Slot = forwardRef<HTMLElement, SlotProps>(({ children, ...props }, ref) => {\n const childrenArray = Children.toArray(children)\n const slottable = childrenArray.find(isSlottable)\n\n if (slottable) {\n const newElement = slottable.props.children\n\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (Children.count(newElement) > 1) {\n return Children.only(null)\n }\n\n return isValidElement(newElement) ? (newElement.props as SlottableProps).children : null\n } else {\n return child\n }\n })\n\n return (\n <SlotClone {...props} ref={ref}>\n {isValidElement(newElement) ? cloneElement(newElement, undefined, newChildren) : null}\n </SlotClone>\n )\n }\n\n return (\n <SlotClone {...props} ref={ref}>\n {children}\n </SlotClone>\n )\n})\nSlot.displayName = 'Slot'\n"],"names":["Slot","forwardRef","children","props","ref","childrenArray","Children","slottable","isSlottable","newElement","newChildren","child","isValidElement","jsx","SlotClone","cloneElement"],"mappings":"kOAQO,MAAMA,EAAOC,EAAmC,CAAC,CAAE,SAAAC,EAAU,GAAGC,CAAA,EAASC,IAAQ,CACtF,MAAMC,EAAgBC,EAAS,QAAQJ,CAAQ,EACzCK,EAAYF,EAAc,KAAKG,CAAW,EAEhD,GAAID,EAAW,CACb,MAAME,EAAaF,EAAU,MAAM,SAE7BG,EAAcL,EAAc,IAAKM,GACjCA,IAAUJ,EACRD,EAAS,MAAMG,CAAU,EAAI,EACxBH,EAAS,KAAK,IAAI,EAGpBM,EAAeH,CAAU,EAAKA,EAAW,MAAyB,SAAW,KAE7EE,CAEV,EAED,OACEE,EAACC,EAAA,CAAW,GAAGX,EAAO,IAAAC,EACnB,SAAAQ,EAAeH,CAAU,EAAIM,EAAaN,EAAY,OAAWC,CAAW,EAAI,KACnF,CAAA,CAIJ,OACEG,EAACC,EAAA,CAAW,GAAGX,EAAO,IAAAC,EACnB,SAAAF,EACH,CAEJ,CAAC,EACDF,EAAK,YAAc"}
1
+ {"version":3,"file":"Slot.js","sources":["../../../../../lib/shared/ui/slot/Slot.tsx"],"sourcesContent":["import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { isSlottable } from './model'\nimport { SlotClone, type SlottableProps } from '$/shared/ui/slot/ui'\n\nexport type SlotProps = React.HTMLAttributes<HTMLElement> & {\n children?: React.ReactNode\n}\n\nexport const Slot = forwardRef<HTMLElement, SlotProps>(({ children, ...props }, ref) => {\n const childrenArray = Children.toArray(children)\n const slottable = childrenArray.find(isSlottable)\n\n if (slottable) {\n const newElement = slottable.props.children\n\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (Children.count(newElement) > 1) {\n return Children.only(null)\n }\n\n return isValidElement(newElement) ? (newElement.props as SlottableProps).children : null\n } else {\n return child\n }\n })\n\n return (\n <SlotClone {...props} ref={ref}>\n {isValidElement(newElement) ? cloneElement(newElement, undefined, newChildren) : null}\n </SlotClone>\n )\n }\n\n return (\n <SlotClone {...props} ref={ref}>\n {children}\n </SlotClone>\n )\n})\nSlot.displayName = 'Slot'\n"],"names":["Slot","forwardRef","children","props","ref","childrenArray","Children","slottable","isSlottable","newElement","newChildren","child","isValidElement","jsx","SlotClone","cloneElement"],"mappings":"kOAQO,MAAMA,EAAOC,EAAmC,CAAC,CAAE,SAAAC,EAAU,GAAGC,CAAA,EAASC,IAAQ,CACtF,MAAMC,EAAgBC,EAAS,QAAQJ,CAAQ,EACzCK,EAAYF,EAAc,KAAKG,CAAW,EAEhD,GAAID,EAAW,CACb,MAAME,EAAaF,EAAU,MAAM,SAE7BG,EAAcL,EAAc,IAAKM,GACjCA,IAAUJ,EACRD,EAAS,MAAMG,CAAU,EAAI,EACxBH,EAAS,KAAK,IAAI,EAGpBM,EAAeH,CAAU,EAAKA,EAAW,MAAyB,SAAW,KAE7EE,CAEV,EAED,OACEE,EAACC,EAAA,CAAW,GAAGX,EAAO,IAAAC,EACnB,SAAAQ,EAAeH,CAAU,EAAIM,EAAaN,EAAY,OAAWC,CAAW,EAAI,KACnF,CAEJ,CAEA,OACEG,EAACC,EAAA,CAAW,GAAGX,EAAO,IAAAC,EACnB,SAAAF,EACH,CAEJ,CAAC,EACDF,EAAK,YAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"mergeProps.js","sources":["../../../../../../lib/shared/ui/slot/model/mergeProps.ts"],"sourcesContent":["type AnyProps = Record<string, any>\n\nexport const mergeProps = (slotProps: AnyProps, childProps: AnyProps) => {\n const override = { ...childProps }\n\n for (const prop in childProps) {\n const slotPropValue = slotProps[prop]\n const childPropValue = childProps[prop]\n\n // check if is handler\n if (/^on[A-Z]/.test(prop)) {\n if (slotPropValue && childPropValue) {\n override[prop] = (...args: unknown[]) => {\n slotPropValue(...args)\n childPropValue(...args)\n }\n }\n } else if (slotPropValue) {\n override[prop] = slotPropValue\n } else if (prop === 'style') {\n override[prop] = { ...slotPropValue, ...childPropValue }\n } else if (prop === 'className') {\n override[prop] = [slotPropValue, childPropValue].filter(Boolean).join(' ')\n }\n }\n\n return { ...slotProps, ...override }\n}\n"],"names":["mergeProps","slotProps","childProps","override","prop","slotPropValue","childPropValue","args"],"mappings":"AAEO,MAAMA,EAAa,CAACC,EAAqBC,IAAyB,CACvE,MAAMC,EAAW,CAAE,GAAGD,CAAA,EAEtB,UAAWE,KAAQF,EAAY,CAC7B,MAAMG,EAAgBJ,EAAUG,CAAI,EAC9BE,EAAiBJ,EAAWE,CAAI,EAGlC,WAAW,KAAKA,CAAI,EAClBC,GAAiBC,IACnBH,EAASC,CAAI,EAAI,IAAIG,IAAoB,CACvCF,EAAc,GAAGE,CAAI,EACrBD,EAAe,GAAGC,CAAI,CAAA,GAGjBF,EACTF,EAASC,CAAI,EAAIC,EACRD,IAAS,QAClBD,EAASC,CAAI,EAAI,CAAE,GAAGC,EAAe,GAAGC,CAAA,EAC/BF,IAAS,cAClBD,EAASC,CAAI,EAAI,CAACC,EAAeC,CAAc,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC3E,CAGF,MAAO,CAAE,GAAGL,EAAW,GAAGE,CAAA,CAC5B"}
1
+ {"version":3,"file":"mergeProps.js","sources":["../../../../../../lib/shared/ui/slot/model/mergeProps.ts"],"sourcesContent":["type AnyProps = Record<string, any>\n\nexport const mergeProps = (slotProps: AnyProps, childProps: AnyProps) => {\n const override = { ...childProps }\n\n for (const prop in childProps) {\n const slotPropValue = slotProps[prop]\n const childPropValue = childProps[prop]\n\n // check if is handler\n if (/^on[A-Z]/.test(prop)) {\n if (slotPropValue && childPropValue) {\n override[prop] = (...args: unknown[]) => {\n slotPropValue(...args)\n childPropValue(...args)\n }\n }\n } else if (slotPropValue) {\n override[prop] = slotPropValue\n } else if (prop === 'style') {\n override[prop] = { ...slotPropValue, ...childPropValue }\n } else if (prop === 'className') {\n override[prop] = [slotPropValue, childPropValue].filter(Boolean).join(' ')\n }\n }\n\n return { ...slotProps, ...override }\n}\n"],"names":["mergeProps","slotProps","childProps","override","prop","slotPropValue","childPropValue","args"],"mappings":"AAEO,MAAMA,EAAa,CAACC,EAAqBC,IAAyB,CACvE,MAAMC,EAAW,CAAE,GAAGD,CAAA,EAEtB,UAAWE,KAAQF,EAAY,CAC7B,MAAMG,EAAgBJ,EAAUG,CAAI,EAC9BE,EAAiBJ,EAAWE,CAAI,EAGlC,WAAW,KAAKA,CAAI,EAClBC,GAAiBC,IACnBH,EAASC,CAAI,EAAI,IAAIG,IAAoB,CACvCF,EAAc,GAAGE,CAAI,EACrBD,EAAe,GAAGC,CAAI,CACxB,GAEOF,EACTF,EAASC,CAAI,EAAIC,EACRD,IAAS,QAClBD,EAASC,CAAI,EAAI,CAAE,GAAGC,EAAe,GAAGC,CAAA,EAC/BF,IAAS,cAClBD,EAASC,CAAI,EAAI,CAACC,EAAeC,CAAc,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAE7E,CAEA,MAAO,CAAE,GAAGL,EAAW,GAAGE,CAAA,CAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"SlotClone.js","sources":["../../../../../../lib/shared/ui/slot/ui/SlotClone.tsx"],"sourcesContent":["import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { getElementRef, mergeProps } from '../model'\nimport { mergeRefs } from '$/shared/utils'\n\nexport type SlotCloneProps = {\n children: React.ReactNode\n}\n\nexport const SlotClone = forwardRef<any, SlotCloneProps>(({ children, ...props }, ref) => {\n if (isValidElement(children)) {\n const childrenRef = getElementRef(children)\n\n return cloneElement(children, {\n ...mergeProps(props, children.props),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n ref: ref ? mergeRefs(ref, childrenRef) : childrenRef\n })\n }\n\n return Children.count(children) > 1 ? Children.only(null) : null\n})\nSlotClone.displayName = 'SlotClone'\n"],"names":["SlotClone","forwardRef","children","props","ref","isValidElement","childrenRef","getElementRef","cloneElement","mergeProps","mergeRefs","Children"],"mappings":"8SAQO,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,CAAA,CAGH,OAAOK,EAAS,MAAMT,CAAQ,EAAI,EAAIS,EAAS,KAAK,IAAI,EAAI,IAC9D,CAAC,EACDX,EAAU,YAAc"}
1
+ {"version":3,"file":"SlotClone.js","sources":["../../../../../../lib/shared/ui/slot/ui/SlotClone.tsx"],"sourcesContent":["import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { getElementRef, mergeProps } from '../model'\nimport { mergeRefs } from '$/shared/utils'\n\nexport type SlotCloneProps = {\n children: React.ReactNode\n}\n\nexport const SlotClone = forwardRef<any, SlotCloneProps>(({ children, ...props }, ref) => {\n if (isValidElement(children)) {\n const childrenRef = getElementRef(children)\n\n return cloneElement(children, {\n ...mergeProps(props, children.props),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n ref: ref ? mergeRefs(ref, childrenRef) : childrenRef\n })\n }\n\n return Children.count(children) > 1 ? Children.only(null) : null\n})\nSlotClone.displayName = 'SlotClone'\n"],"names":["SlotClone","forwardRef","children","props","ref","isValidElement","childrenRef","getElementRef","cloneElement","mergeProps","mergeRefs","Children"],"mappings":"8SAQO,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 +1 @@
1
- {"version":3,"file":"TabContent.js","sources":["../../../../../../lib/shared/ui/tabSwitcher/ui/TabContent.tsx"],"sourcesContent":["import * as TabPrimitive from '@radix-ui/react-tabs'\nimport { Accordion } from '../../accordion'\nimport type { ITabContent } from '../model/types'\nimport { cn } from '$/shared/utils'\n\nexport type TabContentClasses = {\n content?: string\n contentsWrapper?: string\n}\n\nexport interface TabContentProps {\n contents: ITabContent[]\n classes?: TabContentClasses\n}\n\nexport const TabContent = ({ classes, contents }: TabContentProps) => {\n return (\n <div className={cn('flex flex-col gap-4', classes?.contentsWrapper)}>\n {contents?.map(({ id, body, accordion }) => {\n if (accordion && accordion?.title) {\n return (\n <TabPrimitive.Content key={id} value={id} className={cn('py-8', classes?.content)}>\n <Accordion label={accordion?.title}>{body}</Accordion>\n </TabPrimitive.Content>\n )\n }\n\n return (\n <TabPrimitive.Content key={id} value={id} className={cn('py-8', classes?.content)}>\n {body}\n </TabPrimitive.Content>\n )\n })}\n </div>\n )\n}\n"],"names":["TabContent","classes","contents","jsx","cn","id","body","accordion","TabPrimitive.Content","Accordion"],"mappings":"oOAeO,MAAMA,EAAa,CAAC,CAAE,QAAAC,EAAS,SAAAC,KAElCC,EAAC,MAAA,CAAI,UAAWC,EAAG,sBAAuBH,GAAA,YAAAA,EAAS,eAAe,EAC/D,SAAAC,GAAA,YAAAA,EAAU,IAAI,CAAC,CAAE,GAAAG,EAAI,KAAAC,EAAM,UAAAC,KACtBA,IAAaA,GAAA,MAAAA,EAAW,SAEvBC,EAAA,CAA8B,MAAOH,EAAI,UAAWD,EAAG,OAAQH,GAAA,YAAAA,EAAS,OAAO,EAC9E,WAACQ,EAAA,CAAU,MAAOF,GAAA,YAAAA,EAAW,MAAQ,SAAAD,CAAA,CAAK,GADjBD,CAE3B,EAKFF,EAACK,EAAA,CAA8B,MAAOH,EAAI,UAAWD,EAAG,OAAQH,GAAA,YAAAA,EAAS,OAAO,EAC7E,YADwBI,CAE3B,GAGN"}
1
+ {"version":3,"file":"TabContent.js","sources":["../../../../../../lib/shared/ui/tabSwitcher/ui/TabContent.tsx"],"sourcesContent":["import * as TabPrimitive from '@radix-ui/react-tabs'\nimport { Accordion } from '../../accordion'\nimport type { ITabContent } from '../model/types'\nimport { cn } from '$/shared/utils'\n\nexport type TabContentClasses = {\n content?: string\n contentsWrapper?: string\n}\n\nexport interface TabContentProps {\n contents: ITabContent[]\n classes?: TabContentClasses\n}\n\nexport const TabContent = ({ classes, contents }: TabContentProps) => {\n return (\n <div className={cn('flex flex-col gap-4', classes?.contentsWrapper)}>\n {contents?.map(({ id, body, accordion }) => {\n if (accordion && accordion?.title) {\n return (\n <TabPrimitive.Content key={id} value={id} className={cn('py-8', classes?.content)}>\n <Accordion label={accordion?.title}>{body}</Accordion>\n </TabPrimitive.Content>\n )\n }\n\n return (\n <TabPrimitive.Content key={id} value={id} className={cn('py-8', classes?.content)}>\n {body}\n </TabPrimitive.Content>\n )\n })}\n </div>\n )\n}\n"],"names":["TabContent","classes","contents","jsx","cn","id","body","accordion","TabPrimitive.Content","Accordion"],"mappings":"oOAeO,MAAMA,EAAa,CAAC,CAAE,QAAAC,EAAS,SAAAC,KAElCC,EAAC,MAAA,CAAI,UAAWC,EAAG,sBAAuBH,GAAA,YAAAA,EAAS,eAAe,EAC/D,SAAAC,GAAA,YAAAA,EAAU,IAAI,CAAC,CAAE,GAAAG,EAAI,KAAAC,EAAM,UAAAC,KACtBA,IAAaA,GAAA,MAAAA,EAAW,SAEvBC,EAAA,CAA8B,MAAOH,EAAI,UAAWD,EAAG,OAAQH,GAAA,YAAAA,EAAS,OAAO,EAC9E,WAACQ,EAAA,CAAU,MAAOF,GAAA,YAAAA,EAAW,MAAQ,SAAAD,CAAA,CAAK,GADjBD,CAE3B,EAKFF,EAACK,EAAA,CAA8B,MAAOH,EAAI,UAAWD,EAAG,OAAQH,GAAA,YAAAA,EAAS,OAAO,EAC7E,YADwBI,CAE3B,EAEH,CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"Mobile.js","sources":["../../../../../lib/shared/ui/table/Mobile.tsx"],"sourcesContent":["import { flexRender, type Table } from '@tanstack/react-table'\nimport type { DataTableProps } from './model'\nimport { cn } from '$/shared/utils'\n\nexport const Mobile = <TData extends {}>({\n mode,\n enableHeaders,\n table,\n classes,\n empty = 'Not found'\n}: Pick<DataTableProps<TData>, 'enableHeaders' | 'classes' | 'mode' | 'empty'> & { table: Table<TData> }) => {\n return (\n <div className={cn('w-full', classes?.table)}>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <div\n key={row.id}\n className={cn(\n {\n '[&:not(:last-child)]:border-b [&:not(:last-child)]:border-b-[rgba(234,237,241,1)]': mode === 'solid',\n '[&:nth-child(odd)]:bg-color-primary-light-default': mode === 'odd'\n },\n classes?.tableRow\n )}\n >\n {row.getVisibleCells().map((cell, index) => {\n const header = table.getHeaderGroups()[0].headers[index]\n\n return (\n <div\n key={cell.id}\n className={cn(\n 'grid grid-cols-2 p-2',\n {\n 'px-2': mode === 'odd',\n 'font-medium': index !== 0\n },\n classes?.tableCell\n )}\n >\n {enableHeaders && (\n <p className='font-bold'>{flexRender(header.column.columnDef.header, header.getContext())}</p>\n )}\n <p>{flexRender(cell.column.columnDef.cell, cell.getContext())}</p>\n </div>\n )\n })}\n </div>\n ))\n ) : (\n <div>{empty}</div>\n )}\n </div>\n )\n}\n"],"names":["Mobile","mode","enableHeaders","table","classes","empty","cn","row","jsx","cell","index","header","jsxs","flexRender"],"mappings":"wLAIO,MAAMA,EAAS,CAAmB,CACvC,KAAAC,EACA,cAAAC,EACA,MAAAC,EACA,QAAAC,EACA,MAAAC,EAAQ,WACV,MAEK,MAAA,CAAI,UAAWC,EAAG,SAAUF,GAAA,YAAAA,EAAS,KAAK,EACxC,SAAAD,EAAM,cAAc,KAAK,OACxBA,EAAM,YAAA,EAAc,KAAK,IAAKI,GAC5BC,EAAC,MAAA,CAEC,UAAWF,EACT,CACE,oFAAqFL,IAAS,QAC9F,oDAAqDA,IAAS,KAAA,EAEhEG,GAAA,YAAAA,EAAS,QAAA,EAGV,WAAI,gBAAA,EAAkB,IAAI,CAACK,EAAMC,IAAU,CAC1C,MAAMC,EAASR,EAAM,gBAAA,EAAkB,CAAC,EAAE,QAAQO,CAAK,EAEvD,OACEE,EAAC,MAAA,CAEC,UAAWN,EACT,uBACA,CACE,OAAQL,IAAS,MACjB,cAAeS,IAAU,CAAA,EAE3BN,GAAA,YAAAA,EAAS,SAAA,EAGV,SAAA,CAAAF,GACCM,EAAC,IAAA,CAAE,UAAU,YAAa,SAAAK,EAAWF,EAAO,OAAO,UAAU,OAAQA,EAAO,WAAA,CAAY,EAAE,EAE5FH,EAAC,IAAA,CAAG,SAAAK,EAAWJ,EAAK,OAAO,UAAU,KAAMA,EAAK,WAAA,CAAY,CAAA,CAAE,CAAA,CAAA,EAbzDA,EAAK,EAAA,CAcZ,CAEH,CAAA,EA9BIF,EAAI,EAAA,CAgCZ,EAEDC,EAAC,MAAA,CAAK,WAAM,EAEhB"}
1
+ {"version":3,"file":"Mobile.js","sources":["../../../../../lib/shared/ui/table/Mobile.tsx"],"sourcesContent":["import { flexRender, type Table } from '@tanstack/react-table'\nimport type { DataTableProps } from './model'\nimport { cn } from '$/shared/utils'\n\nexport const Mobile = <TData extends {}>({\n mode,\n enableHeaders,\n table,\n classes,\n empty = 'Not found'\n}: Pick<DataTableProps<TData>, 'enableHeaders' | 'classes' | 'mode' | 'empty'> & { table: Table<TData> }) => {\n return (\n <div className={cn('w-full', classes?.table)}>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <div\n key={row.id}\n className={cn(\n {\n '[&:not(:last-child)]:border-b [&:not(:last-child)]:border-b-[rgba(234,237,241,1)]': mode === 'solid',\n '[&:nth-child(odd)]:bg-color-primary-light-default': mode === 'odd'\n },\n classes?.tableRow\n )}\n >\n {row.getVisibleCells().map((cell, index) => {\n const header = table.getHeaderGroups()[0].headers[index]\n\n return (\n <div\n key={cell.id}\n className={cn(\n 'grid grid-cols-2 p-2',\n {\n 'px-2': mode === 'odd',\n 'font-medium': index !== 0\n },\n classes?.tableCell\n )}\n >\n {enableHeaders && (\n <p className='font-bold'>{flexRender(header.column.columnDef.header, header.getContext())}</p>\n )}\n <p>{flexRender(cell.column.columnDef.cell, cell.getContext())}</p>\n </div>\n )\n })}\n </div>\n ))\n ) : (\n <div>{empty}</div>\n )}\n </div>\n )\n}\n"],"names":["Mobile","mode","enableHeaders","table","classes","empty","cn","row","jsx","cell","index","header","jsxs","flexRender"],"mappings":"wLAIO,MAAMA,EAAS,CAAmB,CACvC,KAAAC,EACA,cAAAC,EACA,MAAAC,EACA,QAAAC,EACA,MAAAC,EAAQ,WACV,MAEK,MAAA,CAAI,UAAWC,EAAG,SAAUF,GAAA,YAAAA,EAAS,KAAK,EACxC,SAAAD,EAAM,cAAc,KAAK,OACxBA,EAAM,YAAA,EAAc,KAAK,IAAKI,GAC5BC,EAAC,MAAA,CAEC,UAAWF,EACT,CACE,oFAAqFL,IAAS,QAC9F,oDAAqDA,IAAS,KAAA,EAEhEG,GAAA,YAAAA,EAAS,QAAA,EAGV,WAAI,gBAAA,EAAkB,IAAI,CAACK,EAAMC,IAAU,CAC1C,MAAMC,EAASR,EAAM,gBAAA,EAAkB,CAAC,EAAE,QAAQO,CAAK,EAEvD,OACEE,EAAC,MAAA,CAEC,UAAWN,EACT,uBACA,CACE,OAAQL,IAAS,MACjB,cAAeS,IAAU,CAAA,EAE3BN,GAAA,YAAAA,EAAS,SAAA,EAGV,SAAA,CAAAF,GACCM,EAAC,IAAA,CAAE,UAAU,YAAa,SAAAK,EAAWF,EAAO,OAAO,UAAU,OAAQA,EAAO,WAAA,CAAY,EAAE,EAE5FH,EAAC,IAAA,CAAG,SAAAK,EAAWJ,EAAK,OAAO,UAAU,KAAMA,EAAK,WAAA,CAAY,CAAA,CAAE,CAAA,CAAA,EAbzDA,EAAK,EAAA,CAgBhB,CAAC,CAAA,EA9BIF,EAAI,EAAA,CAgCZ,EAEDC,EAAC,MAAA,CAAK,WAAM,EAEhB"}
@@ -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} from '@tanstack/react-table'\nimport { DataTableColumnHeader } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype ColumnDefOptions<TData, TValue> = {\n enableSorting?: (keyof TData)[] | boolean\n enableColumnFilter?: (keyof TData)[] | boolean\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 } = 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 })\n }) as ColumnDef<TData>[]\n }\n}\n"],"names":["TableUtils","createColumnHelper","template","options","helper","enableColumnFilter","enableSorting","cellAccessor","headerAccessor","key","header","column","accessor","jsx","DataTableColumnHeader","cell","TypeGuards"],"mappings":"gZAoBO,MAAMA,CAAW,CACtB,OAAO,iBAAyD,CAC9D,OAAOC,EAAA,CAA0B,CAGnC,OAAO,WACLC,EACAC,EACoB,CACpB,KAAM,CACJ,OAAAC,EAAS,KAAK,gBAAA,EACd,mBAAAC,EAAqB,GACrB,cAAAC,EAAgB,GAChB,aAAAC,EACA,eAAAC,CAAA,EACEL,GAAW,CAAA,EAIf,OAFa,OAAO,KAAKD,CAAQ,EAErB,IAAKO,GACRL,EAAO,SAAsBK,EAAK,CACvC,OAASC,GAAW,CAClB,KAAM,CAAE,OAAAC,GAAWD,EACbE,EAAWJ,EAAiBA,EAAeC,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,CACvC,EAGJ,KAAOM,GAAS,CACd,MAAMH,EAAWL,EAAeA,EAAaE,CAAG,EAAI,KAEpD,OAAOG,EAAWA,EAASG,CAAI,EAAIA,EAAK,SAAA,CAAS,EAEnD,mBAAoBC,EAAW,UAAUX,CAAkB,EAAIA,EAAqBA,EAAmB,SAASI,CAAG,EACnH,cAAeO,EAAW,UAAUV,CAAa,EAAIA,EAAgBA,EAAc,SAASG,CAAG,CAAA,CAChG,CACF,CAAA,CAEL"}
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} from '@tanstack/react-table'\nimport { DataTableColumnHeader } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype ColumnDefOptions<TData, TValue> = {\n enableSorting?: (keyof TData)[] | boolean\n enableColumnFilter?: (keyof TData)[] | boolean\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 } = 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 })\n }) as ColumnDef<TData>[]\n }\n}\n"],"names":["TableUtils","createColumnHelper","template","options","helper","enableColumnFilter","enableSorting","cellAccessor","headerAccessor","key","header","column","accessor","jsx","DataTableColumnHeader","cell","TypeGuards"],"mappings":"gZAoBO,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,CAAA,EACEL,GAAW,CAAA,EAIf,OAFa,OAAO,KAAKD,CAAQ,EAErB,IAAKO,GACRL,EAAO,SAAsBK,EAAK,CACvC,OAASC,GAAW,CAClB,KAAM,CAAE,OAAAC,GAAWD,EACbE,EAAWJ,EAAiBA,EAAeC,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,EAAWL,EAAeA,EAAaE,CAAG,EAAI,KAEpD,OAAOG,EAAWA,EAASG,CAAI,EAAIA,EAAK,SAAA,CAC1C,EACA,mBAAoBC,EAAW,UAAUX,CAAkB,EAAIA,EAAqBA,EAAmB,SAASI,CAAG,EACnH,cAAeO,EAAW,UAAUV,CAAa,EAAIA,EAAgBA,EAAc,SAASG,CAAG,CAAA,CAChG,CACF,CACH,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditableCell.js","sources":["../../../../../../../lib/shared/ui/table/ui/editableCell/EditableCell.tsx"],"sourcesContent":["import { useRef, useState } from 'react'\nimport { type CellContext } from '@tanstack/react-table'\nimport { useClickOutside } from '$/shared/hooks'\n\ntype Cell<TData, TValue> = CellContext<TData, TValue> & { rowIndex?: number }\n\ninterface EditableCellProps<TData, TValue> extends Cell<TData, TValue> {\n target: keyof TData\n update: (target: number, values: TData) => void\n}\n\nexport const EditableCell = <TData, TValue extends string | undefined>({\n row,\n getValue,\n update,\n target,\n rowIndex = -1\n}: EditableCellProps<TData, TValue>) => {\n const [focused, setFocused] = useState<boolean>(false)\n const [value, setValue] = useState<TValue | string>(getValue())\n const changed = useRef<boolean>(false)\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const { original } = row\n\n const onValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setValue(event.target.value)\n\n changed.current = true\n }\n\n const onInputBlur = () => {\n if (changed.current) {\n const updatedRow = { ...original, [target]: value }\n update(rowIndex, updatedRow)\n\n changed.current = false\n }\n\n setFocused(false)\n }\n\n useClickOutside(inputRef, onInputBlur)\n\n return focused ? (\n <input\n ref={inputRef}\n className='mr-2 w-full outline-none'\n type='text'\n value={value}\n onChange={onValueChange}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n\n onInputBlur()\n }\n }}\n />\n ) : (\n <p className='w-full' onClick={() => setFocused(true)}>\n {getValue()}\n </p>\n )\n}\n"],"names":["EditableCell","row","getValue","update","target","rowIndex","focused","setFocused","useState","value","setValue","changed","useRef","inputRef","original","onValueChange","event","onInputBlur","updatedRow","useClickOutside","jsx"],"mappings":"wLAWO,MAAMA,EAAe,CAA2C,CACrE,IAAAC,EACA,SAAAC,EACA,OAAAC,EACA,OAAAC,EACA,SAAAC,EAAW,EACb,IAAwC,CACtC,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAkB,EAAK,EAC/C,CAACC,EAAOC,CAAQ,EAAIF,EAA0BN,GAAU,EACxDS,EAAUC,EAAgB,EAAK,EAE/BC,EAAWD,EAAyB,IAAI,EAExC,CAAE,SAAAE,GAAab,EAEfc,EAAiBC,GAA+C,CACpEN,EAASM,EAAM,OAAO,KAAK,EAE3BL,EAAQ,QAAU,EAAA,EAGdM,EAAc,IAAM,CACxB,GAAIN,EAAQ,QAAS,CACnB,MAAMO,EAAa,CAAE,GAAGJ,EAAU,CAACV,CAAM,EAAGK,CAAA,EAC5CN,EAAOE,EAAUa,CAAU,EAE3BP,EAAQ,QAAU,EAAA,CAGpBJ,EAAW,EAAK,CAAA,EAGlB,OAAAY,EAAgBN,EAAUI,CAAW,EAE9BX,EACLc,EAAC,QAAA,CACC,IAAKP,EACL,UAAU,2BACV,KAAK,OACL,MAAAJ,EACA,SAAUM,EACV,UAAYC,GAAU,CAChBA,EAAM,MAAQ,UAChBA,EAAM,eAAA,EAENC,EAAA,EACF,CACF,CAAA,EAGFG,EAAC,IAAA,CAAE,UAAU,SAAS,QAAS,IAAMb,EAAW,EAAI,EACjD,SAAAL,EAAA,CAAS,CACZ,CAEJ"}
1
+ {"version":3,"file":"EditableCell.js","sources":["../../../../../../../lib/shared/ui/table/ui/editableCell/EditableCell.tsx"],"sourcesContent":["import { useRef, useState } from 'react'\nimport { type CellContext } from '@tanstack/react-table'\nimport { useClickOutside } from '$/shared/hooks'\n\ntype Cell<TData, TValue> = CellContext<TData, TValue> & { rowIndex?: number }\n\ninterface EditableCellProps<TData, TValue> extends Cell<TData, TValue> {\n target: keyof TData\n update: (target: number, values: TData) => void\n}\n\nexport const EditableCell = <TData, TValue extends string | undefined>({\n row,\n getValue,\n update,\n target,\n rowIndex = -1\n}: EditableCellProps<TData, TValue>) => {\n const [focused, setFocused] = useState<boolean>(false)\n const [value, setValue] = useState<TValue | string>(getValue())\n const changed = useRef<boolean>(false)\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const { original } = row\n\n const onValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setValue(event.target.value)\n\n changed.current = true\n }\n\n const onInputBlur = () => {\n if (changed.current) {\n const updatedRow = { ...original, [target]: value }\n update(rowIndex, updatedRow)\n\n changed.current = false\n }\n\n setFocused(false)\n }\n\n useClickOutside(inputRef, onInputBlur)\n\n return focused ? (\n <input\n ref={inputRef}\n className='mr-2 w-full outline-none'\n type='text'\n value={value}\n onChange={onValueChange}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n\n onInputBlur()\n }\n }}\n />\n ) : (\n <p className='w-full' onClick={() => setFocused(true)}>\n {getValue()}\n </p>\n )\n}\n"],"names":["EditableCell","row","getValue","update","target","rowIndex","focused","setFocused","useState","value","setValue","changed","useRef","inputRef","original","onValueChange","event","onInputBlur","updatedRow","useClickOutside","jsx"],"mappings":"wLAWO,MAAMA,EAAe,CAA2C,CACrE,IAAAC,EACA,SAAAC,EACA,OAAAC,EACA,OAAAC,EACA,SAAAC,EAAW,EACb,IAAwC,CACtC,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAkB,EAAK,EAC/C,CAACC,EAAOC,CAAQ,EAAIF,EAA0BN,GAAU,EACxDS,EAAUC,EAAgB,EAAK,EAE/BC,EAAWD,EAAyB,IAAI,EAExC,CAAE,SAAAE,GAAab,EAEfc,EAAiBC,GAA+C,CACpEN,EAASM,EAAM,OAAO,KAAK,EAE3BL,EAAQ,QAAU,EACpB,EAEMM,EAAc,IAAM,CACxB,GAAIN,EAAQ,QAAS,CACnB,MAAMO,EAAa,CAAE,GAAGJ,EAAU,CAACV,CAAM,EAAGK,CAAA,EAC5CN,EAAOE,EAAUa,CAAU,EAE3BP,EAAQ,QAAU,EACpB,CAEAJ,EAAW,EAAK,CAClB,EAEA,OAAAY,EAAgBN,EAAUI,CAAW,EAE9BX,EACLc,EAAC,QAAA,CACC,IAAKP,EACL,UAAU,2BACV,KAAK,OACL,MAAAJ,EACA,SAAUM,EACV,UAAYC,GAAU,CAChBA,EAAM,MAAQ,UAChBA,EAAM,eAAA,EAENC,EAAA,EAEJ,CAAA,CAAA,EAGFG,EAAC,IAAA,CAAE,UAAU,SAAS,QAAS,IAAMb,EAAW,EAAI,EACjD,SAAAL,EAAA,CAAS,CACZ,CAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"localStorageActions.js","sources":["../../../../lib/shared/utils/localStorageActions.ts"],"sourcesContent":["import { TypeGuards } from './typeGuards'\n\nexport const localStorageActions = {\n setItem: <T>(key: string, value: T): void => {\n if (TypeGuards.isNil(value)) {\n return\n }\n const stringifiesPayload = JSON.stringify(value)\n localStorage.setItem(key, stringifiesPayload)\n },\n\n getItem: <T>(key: string): T | null => {\n const item = localStorage.getItem(key)\n\n if (TypeGuards.isNull(item)) {\n return null\n }\n\n try {\n return JSON.parse(item) as T\n } catch {\n return item as T\n }\n },\n\n clearItems: (...keys: string[]): void => {\n keys.forEach((key) => {\n localStorage.removeItem(key)\n })\n }\n}\n"],"names":["localStorageActions","key","value","TypeGuards","stringifiesPayload","item","keys"],"mappings":"6CAEO,MAAMA,EAAsB,CACjC,QAAS,CAAIC,EAAaC,IAAmB,CAC3C,GAAIC,EAAW,MAAMD,CAAK,EACxB,OAEF,MAAME,EAAqB,KAAK,UAAUF,CAAK,EAC/C,aAAa,QAAQD,EAAKG,CAAkB,CAAA,EAG9C,QAAaH,GAA0B,CACrC,MAAMI,EAAO,aAAa,QAAQJ,CAAG,EAErC,GAAIE,EAAW,OAAOE,CAAI,EACxB,OAAO,KAGT,GAAI,CACF,OAAO,KAAK,MAAMA,CAAI,CAAA,MAChB,CACN,OAAOA,CAAA,CACT,EAGF,WAAY,IAAIC,IAAyB,CACvCA,EAAK,QAASL,GAAQ,CACpB,aAAa,WAAWA,CAAG,CAAA,CAC5B,CAAA,CAEL"}
1
+ {"version":3,"file":"localStorageActions.js","sources":["../../../../lib/shared/utils/localStorageActions.ts"],"sourcesContent":["import { TypeGuards } from './typeGuards'\n\nexport const localStorageActions = {\n setItem: <T>(key: string, value: T): void => {\n if (TypeGuards.isNil(value)) {\n return\n }\n const stringifiesPayload = JSON.stringify(value)\n localStorage.setItem(key, stringifiesPayload)\n },\n\n getItem: <T>(key: string): T | null => {\n const item = localStorage.getItem(key)\n\n if (TypeGuards.isNull(item)) {\n return null\n }\n\n try {\n return JSON.parse(item) as T\n } catch {\n return item as T\n }\n },\n\n clearItems: (...keys: string[]): void => {\n keys.forEach((key) => {\n localStorage.removeItem(key)\n })\n }\n}\n"],"names":["localStorageActions","key","value","TypeGuards","stringifiesPayload","item","keys"],"mappings":"6CAEO,MAAMA,EAAsB,CACjC,QAAS,CAAIC,EAAaC,IAAmB,CAC3C,GAAIC,EAAW,MAAMD,CAAK,EACxB,OAEF,MAAME,EAAqB,KAAK,UAAUF,CAAK,EAC/C,aAAa,QAAQD,EAAKG,CAAkB,CAC9C,EAEA,QAAaH,GAA0B,CACrC,MAAMI,EAAO,aAAa,QAAQJ,CAAG,EAErC,GAAIE,EAAW,OAAOE,CAAI,EACxB,OAAO,KAGT,GAAI,CACF,OAAO,KAAK,MAAMA,CAAI,CACxB,MAAQ,CACN,OAAOA,CACT,CACF,EAEA,WAAY,IAAIC,IAAyB,CACvCA,EAAK,QAASL,GAAQ,CACpB,aAAa,WAAWA,CAAG,CAC7B,CAAC,CACH,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"mergeRefs.js","sources":["../../../../lib/shared/utils/mergeRefs.ts"],"sourcesContent":["import type React from 'react'\n\nexport const mergeRefs = <T>(...inputRefs: (React.Ref<T> | undefined)[]): React.Ref<T> | React.RefCallback<T> => {\n const filteredInputRefs = inputRefs.filter(Boolean)\n\n if (filteredInputRefs.length <= 1) {\n const firstRef = filteredInputRefs[0]\n\n return firstRef || null\n }\n\n return function mergedRefs(ref) {\n filteredInputRefs.forEach((inputRef) => {\n if (typeof inputRef === 'function') {\n inputRef(ref)\n } else if (inputRef) {\n ;(inputRef as React.MutableRefObject<T | null>).current = ref\n }\n })\n }\n}\n"],"names":["mergeRefs","inputRefs","filteredInputRefs","ref","inputRef"],"mappings":"AAEO,MAAMA,EAAY,IAAOC,IAAiF,CAC/G,MAAMC,EAAoBD,EAAU,OAAO,OAAO,EAElD,OAAIC,EAAkB,QAAU,EACbA,EAAkB,CAAC,GAEjB,KAGd,SAAoBC,EAAK,CAC9BD,EAAkB,QAASE,GAAa,CAClC,OAAOA,GAAa,WACtBA,EAASD,CAAG,EACHC,IACPA,EAA8C,QAAUD,EAC5D,CACD,CAAA,CAEL"}
1
+ {"version":3,"file":"mergeRefs.js","sources":["../../../../lib/shared/utils/mergeRefs.ts"],"sourcesContent":["import type React from 'react'\n\nexport const mergeRefs = <T>(...inputRefs: (React.Ref<T> | undefined)[]): React.Ref<T> | React.RefCallback<T> => {\n const filteredInputRefs = inputRefs.filter(Boolean)\n\n if (filteredInputRefs.length <= 1) {\n const firstRef = filteredInputRefs[0]\n\n return firstRef || null\n }\n\n return function mergedRefs(ref) {\n filteredInputRefs.forEach((inputRef) => {\n if (typeof inputRef === 'function') {\n inputRef(ref)\n } else if (inputRef) {\n ;(inputRef as React.MutableRefObject<T | null>).current = ref\n }\n })\n }\n}\n"],"names":["mergeRefs","inputRefs","filteredInputRefs","ref","inputRef"],"mappings":"AAEO,MAAMA,EAAY,IAAOC,IAAiF,CAC/G,MAAMC,EAAoBD,EAAU,OAAO,OAAO,EAElD,OAAIC,EAAkB,QAAU,EACbA,EAAkB,CAAC,GAEjB,KAGd,SAAoBC,EAAK,CAC9BD,EAAkB,QAASE,GAAa,CAClC,OAAOA,GAAa,WACtBA,EAASD,CAAG,EACHC,IACPA,EAA8C,QAAUD,EAE9D,CAAC,CACH,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"scrollToElement.js","sources":["../../../../lib/shared/utils/scrollToElement.ts"],"sourcesContent":["import type { AllowedWidgets } from '$/widgets'\n\ntype ScrollConfig = {\n behavior?: ScrollBehavior\n block?: ScrollLogicalPosition\n}\n\ntype ScrollElement = {\n widgetId: AllowedWidgets\n config?: ScrollConfig\n}\n\nconst DEFAULT_SCROLL_CONFIG: Required<ScrollConfig> = {\n behavior: 'smooth',\n block: 'center'\n}\n\nexport const scrollToElement = ({ widgetId, config = {} }: ScrollElement) => {\n const { behavior, block } = { ...DEFAULT_SCROLL_CONFIG, ...config }\n\n const element = document.getElementById(widgetId)\n if (!element) {\n console.error('Такого элемента в DOM не существует', widgetId)\n return\n }\n\n element.scrollIntoView({ behavior, block })\n}\n"],"names":["DEFAULT_SCROLL_CONFIG","scrollToElement","widgetId","config","behavior","block","element"],"mappings":"AAYA,MAAMA,EAAgD,CACpD,SAAU,SACV,MAAO,QACT,EAEaC,EAAkB,CAAC,CAAE,SAAAC,EAAU,OAAAC,EAAS,CAAA,KAAwB,CAC3E,KAAM,CAAE,SAAAC,EAAU,MAAAC,CAAA,EAAU,CAAE,GAAGL,EAAuB,GAAGG,CAAA,EAErDG,EAAU,SAAS,eAAeJ,CAAQ,EAChD,GAAI,CAACI,EAAS,CACZ,QAAQ,MAAM,sCAAuCJ,CAAQ,EAC7D,MAAA,CAGFI,EAAQ,eAAe,CAAE,SAAAF,EAAU,MAAAC,CAAA,CAAO,CAC5C"}
1
+ {"version":3,"file":"scrollToElement.js","sources":["../../../../lib/shared/utils/scrollToElement.ts"],"sourcesContent":["import type { AllowedWidgets } from '$/widgets'\n\ntype ScrollConfig = {\n behavior?: ScrollBehavior\n block?: ScrollLogicalPosition\n}\n\ntype ScrollElement = {\n widgetId: AllowedWidgets\n config?: ScrollConfig\n}\n\nconst DEFAULT_SCROLL_CONFIG: Required<ScrollConfig> = {\n behavior: 'smooth',\n block: 'center'\n}\n\nexport const scrollToElement = ({ widgetId, config = {} }: ScrollElement) => {\n const { behavior, block } = { ...DEFAULT_SCROLL_CONFIG, ...config }\n\n const element = document.getElementById(widgetId)\n if (!element) {\n console.error('Такого элемента в DOM не существует', widgetId)\n return\n }\n\n element.scrollIntoView({ behavior, block })\n}\n"],"names":["DEFAULT_SCROLL_CONFIG","scrollToElement","widgetId","config","behavior","block","element"],"mappings":"AAYA,MAAMA,EAAgD,CACpD,SAAU,SACV,MAAO,QACT,EAEaC,EAAkB,CAAC,CAAE,SAAAC,EAAU,OAAAC,EAAS,CAAA,KAAwB,CAC3E,KAAM,CAAE,SAAAC,EAAU,MAAAC,CAAA,EAAU,CAAE,GAAGL,EAAuB,GAAGG,CAAA,EAErDG,EAAU,SAAS,eAAeJ,CAAQ,EAChD,GAAI,CAACI,EAAS,CACZ,QAAQ,MAAM,sCAAuCJ,CAAQ,EAC7D,MACF,CAEAI,EAAQ,eAAe,CAAE,SAAAF,EAAU,MAAAC,CAAA,CAAO,CAC5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"sessionStorage.js","sources":["../../../../lib/shared/utils/sessionStorage.ts"],"sourcesContent":["import { TypeGuards } from './typeGuards'\nimport { isClient } from '$/shared/utils/isClient'\n\nexport const sessionStorageActions = {\n setItem: <T>(key: string, value: T): void => {\n if (!isClient) {\n return console.warn('Session storage can be used only in client side')\n }\n\n if (TypeGuards.isNil(value)) return\n\n const payload = JSON.stringify(value)\n\n sessionStorage.setItem(key, payload)\n },\n getItem: <T>(key: string): T | null => {\n if (!isClient) {\n console.warn('Session storage can be used only in client side')\n return null\n }\n\n const item = sessionStorage.getItem(key)\n\n if (TypeGuards.isNull(item)) return null\n\n try {\n return JSON.parse(item) as T\n } catch {\n return item as T\n }\n },\n clearItems: (...keys: string[]): void => {\n keys.forEach((key) => {\n sessionStorage.removeItem(key)\n })\n }\n}\n"],"names":["sessionStorageActions","key","value","isClient","TypeGuards","payload","item","keys"],"mappings":"sFAGO,MAAMA,EAAwB,CACnC,QAAS,CAAIC,EAAaC,IAAmB,CAC3C,GAAI,CAACC,EACH,OAAO,QAAQ,KAAK,iDAAiD,EAGvE,GAAIC,EAAW,MAAMF,CAAK,EAAG,OAE7B,MAAMG,EAAU,KAAK,UAAUH,CAAK,EAEpC,eAAe,QAAQD,EAAKI,CAAO,CAAA,EAErC,QAAaJ,GAA0B,CACrC,GAAI,CAACE,EACH,eAAQ,KAAK,iDAAiD,EACvD,KAGT,MAAMG,EAAO,eAAe,QAAQL,CAAG,EAEvC,GAAIG,EAAW,OAAOE,CAAI,EAAG,OAAO,KAEpC,GAAI,CACF,OAAO,KAAK,MAAMA,CAAI,CAAA,MAChB,CACN,OAAOA,CAAA,CACT,EAEF,WAAY,IAAIC,IAAyB,CACvCA,EAAK,QAASN,GAAQ,CACpB,eAAe,WAAWA,CAAG,CAAA,CAC9B,CAAA,CAEL"}
1
+ {"version":3,"file":"sessionStorage.js","sources":["../../../../lib/shared/utils/sessionStorage.ts"],"sourcesContent":["import { TypeGuards } from './typeGuards'\nimport { isClient } from '$/shared/utils/isClient'\n\nexport const sessionStorageActions = {\n setItem: <T>(key: string, value: T): void => {\n if (!isClient) {\n return console.warn('Session storage can be used only in client side')\n }\n\n if (TypeGuards.isNil(value)) return\n\n const payload = JSON.stringify(value)\n\n sessionStorage.setItem(key, payload)\n },\n getItem: <T>(key: string): T | null => {\n if (!isClient) {\n console.warn('Session storage can be used only in client side')\n return null\n }\n\n const item = sessionStorage.getItem(key)\n\n if (TypeGuards.isNull(item)) return null\n\n try {\n return JSON.parse(item) as T\n } catch {\n return item as T\n }\n },\n clearItems: (...keys: string[]): void => {\n keys.forEach((key) => {\n sessionStorage.removeItem(key)\n })\n }\n}\n"],"names":["sessionStorageActions","key","value","isClient","TypeGuards","payload","item","keys"],"mappings":"sFAGO,MAAMA,EAAwB,CACnC,QAAS,CAAIC,EAAaC,IAAmB,CAC3C,GAAI,CAACC,EACH,OAAO,QAAQ,KAAK,iDAAiD,EAGvE,GAAIC,EAAW,MAAMF,CAAK,EAAG,OAE7B,MAAMG,EAAU,KAAK,UAAUH,CAAK,EAEpC,eAAe,QAAQD,EAAKI,CAAO,CACrC,EACA,QAAaJ,GAA0B,CACrC,GAAI,CAACE,EACH,eAAQ,KAAK,iDAAiD,EACvD,KAGT,MAAMG,EAAO,eAAe,QAAQL,CAAG,EAEvC,GAAIG,EAAW,OAAOE,CAAI,EAAG,OAAO,KAEpC,GAAI,CACF,OAAO,KAAK,MAAMA,CAAI,CACxB,MAAQ,CACN,OAAOA,CACT,CACF,EACA,WAAY,IAAIC,IAAyB,CACvCA,EAAK,QAASN,GAAQ,CACpB,eAAe,WAAWA,CAAG,CAC/B,CAAC,CACH,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"typeGuards.js","sources":["../../../../lib/shared/utils/typeGuards.ts"],"sourcesContent":["export class TypeGuards {\n static isString(value: unknown): value is string {\n return typeof value === 'string'\n }\n\n static isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean'\n }\n\n static isStringEmpty(value: unknown): value is string {\n return this.isString(value) && !value.length\n }\n\n static isNull(value: unknown): value is null {\n return value === null\n }\n\n static isUndefined(value: unknown): value is undefined {\n return value === undefined && typeof value === 'undefined'\n }\n\n static isNil(value: unknown): value is boolean {\n return this.isNull(value) || this.isUndefined(value)\n }\n\n static isArray(value: unknown): value is unknown[] {\n return Array.isArray(value)\n }\n\n static isArrayEmpty(value: unknown): value is boolean {\n return this.isArray(value) && !value.length\n }\n\n static isArrayFilled(value: unknown): value is boolean {\n return Array.isArray(value) && value.length > 0\n }\n\n static isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n }\n\n static isFunction(value: unknown): value is (...args: unknown[]) => unknown {\n return typeof value === 'function'\n }\n\n static isObjectEmpty(value: unknown): value is Record<string, never> {\n return this.isObject(value) && Object.keys(value).length === 0\n }\n}\n"],"names":["TypeGuards","value"],"mappings":"AAAO,MAAMA,CAAW,CACtB,OAAO,SAASC,EAAiC,CAC/C,OAAO,OAAOA,GAAU,QAAA,CAG1B,OAAO,UAAUA,EAAkC,CACjD,OAAO,OAAOA,GAAU,SAAA,CAG1B,OAAO,cAAcA,EAAiC,CACpD,OAAO,KAAK,SAASA,CAAK,GAAK,CAACA,EAAM,MAAA,CAGxC,OAAO,OAAOA,EAA+B,CAC3C,OAAOA,IAAU,IAAA,CAGnB,OAAO,YAAYA,EAAoC,CACrD,OAAOA,IAAU,QAAa,OAAOA,EAAU,GAAA,CAGjD,OAAO,MAAMA,EAAkC,CAC7C,OAAO,KAAK,OAAOA,CAAK,GAAK,KAAK,YAAYA,CAAK,CAAA,CAGrD,OAAO,QAAQA,EAAoC,CACjD,OAAO,MAAM,QAAQA,CAAK,CAAA,CAG5B,OAAO,aAAaA,EAAkC,CACpD,OAAO,KAAK,QAAQA,CAAK,GAAK,CAACA,EAAM,MAAA,CAGvC,OAAO,cAAcA,EAAkC,CACrD,OAAO,MAAM,QAAQA,CAAK,GAAKA,EAAM,OAAS,CAAA,CAGhD,OAAO,SAASA,EAAkD,CAChE,OAAO,OAAOA,GAAU,UAAYA,IAAU,MAAQ,CAAC,MAAM,QAAQA,CAAK,CAAA,CAG5E,OAAO,WAAWA,EAA0D,CAC1E,OAAO,OAAOA,GAAU,UAAA,CAG1B,OAAO,cAAcA,EAAgD,CACnE,OAAO,KAAK,SAASA,CAAK,GAAK,OAAO,KAAKA,CAAK,EAAE,SAAW,CAAA,CAEjE"}
1
+ {"version":3,"file":"typeGuards.js","sources":["../../../../lib/shared/utils/typeGuards.ts"],"sourcesContent":["export class TypeGuards {\n static isString(value: unknown): value is string {\n return typeof value === 'string'\n }\n\n static isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean'\n }\n\n static isStringEmpty(value: unknown): value is string {\n return this.isString(value) && !value.length\n }\n\n static isNull(value: unknown): value is null {\n return value === null\n }\n\n static isUndefined(value: unknown): value is undefined {\n return value === undefined && typeof value === 'undefined'\n }\n\n static isNil(value: unknown): value is boolean {\n return this.isNull(value) || this.isUndefined(value)\n }\n\n static isArray(value: unknown): value is unknown[] {\n return Array.isArray(value)\n }\n\n static isArrayEmpty(value: unknown): value is boolean {\n return this.isArray(value) && !value.length\n }\n\n static isArrayFilled(value: unknown): value is boolean {\n return Array.isArray(value) && value.length > 0\n }\n\n static isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n }\n\n static isFunction(value: unknown): value is (...args: unknown[]) => unknown {\n return typeof value === 'function'\n }\n\n static isObjectEmpty(value: unknown): value is Record<string, never> {\n return this.isObject(value) && Object.keys(value).length === 0\n }\n}\n"],"names":["TypeGuards","value"],"mappings":"AAAO,MAAMA,CAAW,CACtB,OAAO,SAASC,EAAiC,CAC/C,OAAO,OAAOA,GAAU,QAC1B,CAEA,OAAO,UAAUA,EAAkC,CACjD,OAAO,OAAOA,GAAU,SAC1B,CAEA,OAAO,cAAcA,EAAiC,CACpD,OAAO,KAAK,SAASA,CAAK,GAAK,CAACA,EAAM,MACxC,CAEA,OAAO,OAAOA,EAA+B,CAC3C,OAAOA,IAAU,IACnB,CAEA,OAAO,YAAYA,EAAoC,CACrD,OAAOA,IAAU,QAAa,OAAOA,EAAU,GACjD,CAEA,OAAO,MAAMA,EAAkC,CAC7C,OAAO,KAAK,OAAOA,CAAK,GAAK,KAAK,YAAYA,CAAK,CACrD,CAEA,OAAO,QAAQA,EAAoC,CACjD,OAAO,MAAM,QAAQA,CAAK,CAC5B,CAEA,OAAO,aAAaA,EAAkC,CACpD,OAAO,KAAK,QAAQA,CAAK,GAAK,CAACA,EAAM,MACvC,CAEA,OAAO,cAAcA,EAAkC,CACrD,OAAO,MAAM,QAAQA,CAAK,GAAKA,EAAM,OAAS,CAChD,CAEA,OAAO,SAASA,EAAkD,CAChE,OAAO,OAAOA,GAAU,UAAYA,IAAU,MAAQ,CAAC,MAAM,QAAQA,CAAK,CAC5E,CAEA,OAAO,WAAWA,EAA0D,CAC1E,OAAO,OAAOA,GAAU,UAC1B,CAEA,OAAO,cAAcA,EAAgD,CACnE,OAAO,KAAK,SAASA,CAAK,GAAK,OAAO,KAAKA,CAAK,EAAE,SAAW,CAC/D,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"base.constants.js","sources":["../../../../../lib/shared/validation/base/base.constants.ts"],"sourcesContent":["import { type Primitive } from 'zod'\nimport { formatDateToLocaleString } from '$/shared/ui'\nimport { TypeGuards } from '$/shared/utils'\n\nexport const baseDefaultMessages = {\n NON_EMPTY: () => 'Поле не может быть пустым',\n MIN_LENGTH: (min: number) => `Поле должно содержать минимум символов: ${min}`,\n MAX_LENGTH: (max: number) => `Поле должно содержать максимум символов: ${max}`,\n FIX_LENGTH: (length: number) => `Поле должно быть фиксированной длины символов: ${length}`,\n MIN_VALUE: (min: number) => `Значение не может быть меньше чем ${min}`,\n MAX_VALUE: (max: number) => `Значение не может быть больше чем ${max}`,\n PHONE_NON_EMPTY: () => 'Номер телефона должен состоять из 11 цифр',\n PHONE_INVALID_OPERATOR: () => 'Код города/оператора должен начинаться с цифры 3, 4, 5, 6 или 9',\n EMAIL_INVALID: () => 'Email введен некорректно. Пример: example@domain.ru',\n EMAIL_NON_EMPTY: () => 'Введите адрес электронной почты',\n SELECT_NON_EMPTY: () => 'Выберите один из вариантов',\n SELECT_MULTIPLE_MIN_LENGTH: (length: number) => `Выберите не менее ${length} вариантов`,\n SELECT_MULTIPLE_MAX_LENGTH: (length: number) => `Выберите не более ${length} вариантов`,\n SELECT_FIX_LENGTH: (length: number) => `Поле должно быть фиксированного количества вариантов: ${length}`,\n DATE_INVALID_FORMAT: () => 'Дата указана некорректно',\n DATE_NON_EMPTY: () => 'Укажите дату',\n VALUE_OUT_OF_RANGE: <T extends Primitive>(range: T[]) => `Выберите один из вариантов ${range.join(', ')}`,\n DATE_MIN: (min: Date | string) => {\n const date = TypeGuards.isString(min) ? new Date(min) : min\n\n return `Выбранная дата должна быть не раньше ${formatDateToLocaleString(date)}`\n },\n DATE_MAX: (max: Date | string) => {\n const date = TypeGuards.isString(max) ? new Date(max) : max\n\n return `Выбранная дата должна быть не позже ${formatDateToLocaleString(date)}`\n },\n INVALID_REGEX_STRING: () => 'Поле не соответствует требованиям',\n INVALID_URL: () => 'Ссылка введена некорректно. Пример: https://example.com, example.com'\n}\n"],"names":["baseDefaultMessages","min","max","length","range","date","TypeGuards","formatDateToLocaleString"],"mappings":"8nDAIO,MAAMA,EAAsB,CACjC,UAAW,IAAM,4BACjB,WAAaC,GAAgB,2CAA2CA,CAAG,GAC3E,WAAaC,GAAgB,4CAA4CA,CAAG,GAC5E,WAAaC,GAAmB,kDAAkDA,CAAM,GACxF,UAAYF,GAAgB,qCAAqCA,CAAG,GACpE,UAAYC,GAAgB,qCAAqCA,CAAG,GACpE,gBAAiB,IAAM,4CACvB,uBAAwB,IAAM,kEAC9B,cAAe,IAAM,sDACrB,gBAAiB,IAAM,kCACvB,iBAAkB,IAAM,6BACxB,2BAA6BC,GAAmB,qBAAqBA,CAAM,aAC3E,2BAA6BA,GAAmB,qBAAqBA,CAAM,aAC3E,kBAAoBA,GAAmB,yDAAyDA,CAAM,GACtG,oBAAqB,IAAM,2BAC3B,eAAgB,IAAM,eACtB,mBAA0CC,GAAe,8BAA8BA,EAAM,KAAK,IAAI,CAAC,GACvG,SAAWH,GAAuB,CAChC,MAAMI,EAAOC,EAAW,SAASL,CAAG,EAAI,IAAI,KAAKA,CAAG,EAAIA,EAExD,MAAO,wCAAwCM,EAAyBF,CAAI,CAAC,EAAA,EAE/E,SAAWH,GAAuB,CAChC,MAAMG,EAAOC,EAAW,SAASJ,CAAG,EAAI,IAAI,KAAKA,CAAG,EAAIA,EAExD,MAAO,uCAAuCK,EAAyBF,CAAI,CAAC,EAAA,EAE9E,qBAAsB,IAAM,oCAC5B,YAAa,IAAM,sEACrB"}
1
+ {"version":3,"file":"base.constants.js","sources":["../../../../../lib/shared/validation/base/base.constants.ts"],"sourcesContent":["import { type Primitive } from 'zod'\nimport { formatDateToLocaleString } from '$/shared/ui'\nimport { TypeGuards } from '$/shared/utils'\n\nexport const baseDefaultMessages = {\n NON_EMPTY: () => 'Поле не может быть пустым',\n MIN_LENGTH: (min: number) => `Поле должно содержать минимум символов: ${min}`,\n MAX_LENGTH: (max: number) => `Поле должно содержать максимум символов: ${max}`,\n FIX_LENGTH: (length: number) => `Поле должно быть фиксированной длины символов: ${length}`,\n MIN_VALUE: (min: number) => `Значение не может быть меньше чем ${min}`,\n MAX_VALUE: (max: number) => `Значение не может быть больше чем ${max}`,\n PHONE_NON_EMPTY: () => 'Номер телефона должен состоять из 11 цифр',\n PHONE_INVALID_OPERATOR: () => 'Код города/оператора должен начинаться с цифры 3, 4, 5, 6 или 9',\n EMAIL_INVALID: () => 'Email введен некорректно. Пример: example@domain.ru',\n EMAIL_NON_EMPTY: () => 'Введите адрес электронной почты',\n SELECT_NON_EMPTY: () => 'Выберите один из вариантов',\n SELECT_MULTIPLE_MIN_LENGTH: (length: number) => `Выберите не менее ${length} вариантов`,\n SELECT_MULTIPLE_MAX_LENGTH: (length: number) => `Выберите не более ${length} вариантов`,\n SELECT_FIX_LENGTH: (length: number) => `Поле должно быть фиксированного количества вариантов: ${length}`,\n DATE_INVALID_FORMAT: () => 'Дата указана некорректно',\n DATE_NON_EMPTY: () => 'Укажите дату',\n VALUE_OUT_OF_RANGE: <T extends Primitive>(range: T[]) => `Выберите один из вариантов ${range.join(', ')}`,\n DATE_MIN: (min: Date | string) => {\n const date = TypeGuards.isString(min) ? new Date(min) : min\n\n return `Выбранная дата должна быть не раньше ${formatDateToLocaleString(date)}`\n },\n DATE_MAX: (max: Date | string) => {\n const date = TypeGuards.isString(max) ? new Date(max) : max\n\n return `Выбранная дата должна быть не позже ${formatDateToLocaleString(date)}`\n },\n INVALID_REGEX_STRING: () => 'Поле не соответствует требованиям',\n INVALID_URL: () => 'Ссылка введена некорректно. Пример: https://example.com, example.com'\n}\n"],"names":["baseDefaultMessages","min","max","length","range","date","TypeGuards","formatDateToLocaleString"],"mappings":"8nDAIO,MAAMA,EAAsB,CACjC,UAAW,IAAM,4BACjB,WAAaC,GAAgB,2CAA2CA,CAAG,GAC3E,WAAaC,GAAgB,4CAA4CA,CAAG,GAC5E,WAAaC,GAAmB,kDAAkDA,CAAM,GACxF,UAAYF,GAAgB,qCAAqCA,CAAG,GACpE,UAAYC,GAAgB,qCAAqCA,CAAG,GACpE,gBAAiB,IAAM,4CACvB,uBAAwB,IAAM,kEAC9B,cAAe,IAAM,sDACrB,gBAAiB,IAAM,kCACvB,iBAAkB,IAAM,6BACxB,2BAA6BC,GAAmB,qBAAqBA,CAAM,aAC3E,2BAA6BA,GAAmB,qBAAqBA,CAAM,aAC3E,kBAAoBA,GAAmB,yDAAyDA,CAAM,GACtG,oBAAqB,IAAM,2BAC3B,eAAgB,IAAM,eACtB,mBAA0CC,GAAe,8BAA8BA,EAAM,KAAK,IAAI,CAAC,GACvG,SAAWH,GAAuB,CAChC,MAAMI,EAAOC,EAAW,SAASL,CAAG,EAAI,IAAI,KAAKA,CAAG,EAAIA,EAExD,MAAO,wCAAwCM,EAAyBF,CAAI,CAAC,EAC/E,EACA,SAAWH,GAAuB,CAChC,MAAMG,EAAOC,EAAW,SAASJ,CAAG,EAAI,IAAI,KAAKA,CAAG,EAAIA,EAExD,MAAO,uCAAuCK,EAAyBF,CAAI,CAAC,EAC9E,EACA,qBAAsB,IAAM,oCAC5B,YAAa,IAAM,sEACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"date.validators.js","sources":["../../../../../lib/shared/validation/base/date.validators.ts"],"sourcesContent":["import { isValid, parse } from 'date-fns'\nimport z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { DATE_VISIBLE_PATTERN } from '$/shared/ui'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type DateValidationOptions<Required extends boolean> = {\n /**\n * валидация строки с учетом ISO формата\n * @default true\n */\n iso?: boolean\n /**\n * шаблон для валидации строки (будет проигнорирован, если `iso = true`)\n * @default 'dd.MM.yyyy'\n */\n pattern?: string\n /**\n * минимальная дата\n * `Date | ISO string`\n */\n min?: Date | string\n /**\n * максимальная дата\n * `Date | ISO string`\n */\n max?: Date | string\n /**\n * указывает что поле обязательное\n */\n required?: Required\n /**\n * значение по умолчанию\n * @default undefined\n */\n defaultValue?: string\n message?: {\n min?: string\n max?: string\n invalidDate?: string\n }\n}\n\n/**\n * Схема валидации обязательного поля даты\n */\nconst getDateRequired = (props?: Omit<DateValidationOptions<boolean>, 'required'>) => {\n const { iso = true, pattern = DATE_VISIBLE_PATTERN, min, max, defaultValue, message } = props || {}\n\n return z\n .string()\n .min(8, message?.min || baseDefaultMessages.DATE_NON_EMPTY())\n .superRefine((value, context) => {\n const validSymbolsLength = pattern.replace(/\\W/g, '').length\n const cleanedValue = value.replace(/[._-]/g, '')\n\n if (cleanedValue.length < validSymbolsLength) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: validSymbolsLength,\n type: 'date',\n inclusive: true,\n message: message?.min || baseDefaultMessages.DATE_NON_EMPTY()\n })\n }\n\n if (iso) {\n let date: Date | null = null\n\n try {\n date = new Date(value)\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date!.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date!.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\n }\n }\n } else {\n const date = parse(value, pattern, new Date())\n\n if (!isValid(date)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\n }\n }\n }\n })\n .default(defaultValue ?? '')\n}\ntype DateRequiredSchema = ReturnType<typeof getDateRequired>\n\n/**\n * Схема валидации опционального поля даты\n */\nconst getDateOptional = (props?: Omit<DateValidationOptions<boolean>, 'required'>) => {\n const { iso = true, pattern = DATE_VISIBLE_PATTERN, min, max, message } = props || {}\n\n return z\n .string()\n .transform((value) => (!value ? undefined : value))\n .superRefine((value, context) => {\n if (TypeGuards.isString(value) && Boolean(value.length)) {\n const validSymbolsLength = pattern.replace(/\\W/g, '').length\n const cleanedValue = value.replace(/[._-]/g, '')\n\n if (cleanedValue.length < validSymbolsLength) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: validSymbolsLength,\n type: 'date',\n inclusive: true,\n message: message?.min || baseDefaultMessages.DATE_NON_EMPTY()\n })\n }\n\n if (iso) {\n let date: Date | null = null\n\n try {\n date = new Date(value)\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date!.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date!.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\n }\n }\n } else {\n const date = parse(value, pattern, new Date())\n\n if (!isValid(date)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\n }\n }\n }\n }\n })\n .optional()\n}\ntype DateOptionalSchema = ReturnType<typeof getDateOptional>\n\n/**\n * Схема валидации поля даты\n * @param {DateValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @typeParam `iso` - `boolean | undefined`\n * @typeParam `pattern` - `string | undefined`\n * @typeParam `message` - `{ [min | invalidOperator]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getDateSchema()\n * })\n * // will returns z.string()\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getDateSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getDateSchema(props?: DateValidationOptions<true>): DateRequiredSchema\nexport function getDateSchema(props?: DateValidationOptions<false>): DateOptionalSchema\nexport function getDateSchema<Required extends boolean>(\n props?: DateValidationOptions<Required>\n): DateRequiredSchema | DateOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getDateRequired(props) : getDateOptional(props)\n}\n"],"names":["getDateRequired","props","iso","pattern","DATE_VISIBLE_PATTERN","min","max","defaultValue","message","z","baseDefaultMessages","value","context","validSymbolsLength","date","TypeGuards","parse","isValid","getDateOptional","getDateSchema","required"],"mappings":"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"}
1
+ {"version":3,"file":"date.validators.js","sources":["../../../../../lib/shared/validation/base/date.validators.ts"],"sourcesContent":["import { isValid, parse } from 'date-fns'\nimport z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { DATE_VISIBLE_PATTERN } from '$/shared/ui'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type DateValidationOptions<Required extends boolean> = {\n /**\n * валидация строки с учетом ISO формата\n * @default true\n */\n iso?: boolean\n /**\n * шаблон для валидации строки (будет проигнорирован, если `iso = true`)\n * @default 'dd.MM.yyyy'\n */\n pattern?: string\n /**\n * минимальная дата\n * `Date | ISO string`\n */\n min?: Date | string\n /**\n * максимальная дата\n * `Date | ISO string`\n */\n max?: Date | string\n /**\n * указывает что поле обязательное\n */\n required?: Required\n /**\n * значение по умолчанию\n * @default undefined\n */\n defaultValue?: string\n message?: {\n min?: string\n max?: string\n invalidDate?: string\n }\n}\n\n/**\n * Схема валидации обязательного поля даты\n */\nconst getDateRequired = (props?: Omit<DateValidationOptions<boolean>, 'required'>) => {\n const { iso = true, pattern = DATE_VISIBLE_PATTERN, min, max, defaultValue, message } = props || {}\n\n return z\n .string()\n .min(8, message?.min || baseDefaultMessages.DATE_NON_EMPTY())\n .superRefine((value, context) => {\n const validSymbolsLength = pattern.replace(/\\W/g, '').length\n const cleanedValue = value.replace(/[._-]/g, '')\n\n if (cleanedValue.length < validSymbolsLength) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: validSymbolsLength,\n type: 'date',\n inclusive: true,\n message: message?.min || baseDefaultMessages.DATE_NON_EMPTY()\n })\n }\n\n if (iso) {\n let date: Date | null = null\n\n try {\n date = new Date(value)\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date!.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date!.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\n }\n }\n } else {\n const date = parse(value, pattern, new Date())\n\n if (!isValid(date)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\n }\n }\n }\n })\n .default(defaultValue ?? '')\n}\ntype DateRequiredSchema = ReturnType<typeof getDateRequired>\n\n/**\n * Схема валидации опционального поля даты\n */\nconst getDateOptional = (props?: Omit<DateValidationOptions<boolean>, 'required'>) => {\n const { iso = true, pattern = DATE_VISIBLE_PATTERN, min, max, message } = props || {}\n\n return z\n .string()\n .transform((value) => (!value ? undefined : value))\n .superRefine((value, context) => {\n if (TypeGuards.isString(value) && Boolean(value.length)) {\n const validSymbolsLength = pattern.replace(/\\W/g, '').length\n const cleanedValue = value.replace(/[._-]/g, '')\n\n if (cleanedValue.length < validSymbolsLength) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: validSymbolsLength,\n type: 'date',\n inclusive: true,\n message: message?.min || baseDefaultMessages.DATE_NON_EMPTY()\n })\n }\n\n if (iso) {\n let date: Date | null = null\n\n try {\n date = new Date(value)\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date!.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date!.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\n }\n }\n } else {\n const date = parse(value, pattern, new Date())\n\n if (!isValid(date)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\n }\n }\n }\n }\n })\n .optional()\n}\ntype DateOptionalSchema = ReturnType<typeof getDateOptional>\n\n/**\n * Схема валидации поля даты\n * @param {DateValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @typeParam `iso` - `boolean | undefined`\n * @typeParam `pattern` - `string | undefined`\n * @typeParam `message` - `{ [min | invalidOperator]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getDateSchema()\n * })\n * // will returns z.string()\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getDateSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getDateSchema(props?: DateValidationOptions<true>): DateRequiredSchema\nexport function getDateSchema(props?: DateValidationOptions<false>): DateOptionalSchema\nexport function getDateSchema<Required extends boolean>(\n props?: DateValidationOptions<Required>\n): DateRequiredSchema | DateOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getDateRequired(props) : getDateOptional(props)\n}\n"],"names":["getDateRequired","props","iso","pattern","DATE_VISIBLE_PATTERN","min","max","defaultValue","message","z","baseDefaultMessages","value","context","validSymbolsLength","date","TypeGuards","parse","isValid","getDateOptional","getDateSchema","required"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"phone.validators.js","sources":["../../../../../lib/shared/validation/base/phone.validators.ts"],"sourcesContent":["import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type PhoneValidationOptions<Required extends boolean> = {\n /**\n * исключает маску в возвращаемом значении\n * @default true\n */\n ignoreMask?: boolean\n /**\n * игнорирует символы для проверки поля исключая данные символы\n * @default /[()+_ -]/g\n */\n maskSymbols?: RegExp | string\n /**\n * указывает что поле обязательное\n */\n required?: Required\n /**\n * значение по умолчанию\n * @default undefined\n */\n defaultValue?: string\n message?: {\n min?: string\n invalidOperator?: string\n }\n /**\n * указываем валидные коды оператор\n * @default ['3', '4', '5', '6', '9']\n * @param string[]\n */\n validOperatorCodes?: string[]\n}\n\n/**\n * Схема валидации обязательного поля номера телефона\n */\nconst getPhoneRequired = (props?: Omit<PhoneValidationOptions<true>, 'required'>) => {\n const {\n ignoreMask = true,\n maskSymbols = /[()+_ -]/g,\n message,\n defaultValue,\n validOperatorCodes = ['3', '4', '5', '6', '9']\n } = props || {}\n\n const mask = TypeGuards.isString(maskSymbols) ? new RegExp(maskSymbols) : maskSymbols\n\n let schema = z.string().superRefine((value, context) => {\n const cleanValue = value.replace(mask, '')\n\n const operatorCode = cleanValue.charAt(1)\n\n if (!validOperatorCodes.includes(operatorCode)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: message?.invalidOperator || baseDefaultMessages.PHONE_INVALID_OPERATOR()\n })\n }\n\n if (cleanValue.length < 11) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: 11,\n inclusive: true,\n type: 'string',\n message: message?.min || baseDefaultMessages.PHONE_NON_EMPTY()\n })\n }\n })\n\n if (ignoreMask) {\n schema = schema.transform((value) => value.replace(mask, '')) as unknown as typeof schema\n }\n\n return schema.default(defaultValue ?? '')\n}\ntype PhoneRequiredSchema = ReturnType<typeof getPhoneRequired>\n\n/**\n * Схема валидации опционального поля номера телефона\n */\nconst getPhoneOptional = (props?: Omit<PhoneValidationOptions<false>, 'required'>) => {\n const { ignoreMask = true, maskSymbols = /[()+_ -]/g, message, validOperatorCodes = ['3', '4', '5', '6', '9'] } = props || {}\n\n const mask = TypeGuards.isString(maskSymbols) ? new RegExp(maskSymbols) : maskSymbols\n\n let schema = z.string().superRefine((value, context) => {\n const cleanValue = value.replace(mask, '')\n\n if (!cleanValue.length) return\n\n const operatorCode = cleanValue.charAt(1)\n\n if (!validOperatorCodes.includes(operatorCode)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: message?.invalidOperator || baseDefaultMessages.PHONE_INVALID_OPERATOR()\n })\n }\n\n if (cleanValue.length < 11) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: 11,\n inclusive: true,\n type: 'string',\n message: message?.min || baseDefaultMessages.PHONE_NON_EMPTY()\n })\n }\n })\n\n if (ignoreMask) {\n schema = schema.transform((value) => value.replace(mask, '')) as unknown as typeof schema\n }\n\n return schema.optional().transform((value) => (!value || value?.replace(mask, '').length !== 0 ? undefined : value))\n}\ntype PhoneOptionalSchema = ReturnType<typeof getPhoneOptional>\n\n/**\n * Схема валидации опционального поля номера телефона\n * @param {PhoneValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @typeParam `ignoreSeparators` - `boolean | undefined` `default: false`\n * @typeParam `maskSymbols` - `RegExp | undefined` `default: /[()+_ -]/g`\n * @typeParam `message` - `{ [min | invalidOperator]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getPhoneSchema()\n * })\n * // will returns z.string()\n *\n * @example with optional value\n * z.object({\n * field: zodValidators.base.getPhoneSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getPhoneSchema(props?: PhoneValidationOptions<true>): PhoneRequiredSchema\nexport function getPhoneSchema(props?: PhoneValidationOptions<false>): PhoneOptionalSchema\nexport function getPhoneSchema<Required extends boolean>(\n props?: PhoneValidationOptions<Required>\n): PhoneRequiredSchema | PhoneOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getPhoneRequired(props) : getPhoneOptional(props)\n}\n"],"names":["getPhoneRequired","props","ignoreMask","maskSymbols","message","defaultValue","validOperatorCodes","mask","TypeGuards","schema","z","value","context","cleanValue","operatorCode","baseDefaultMessages","getPhoneOptional","getPhoneSchema","required"],"mappings":"sMAuCA,MAAMA,EAAoBC,GAA2D,CACnF,KAAM,CACJ,WAAAC,EAAa,GACb,YAAAC,EAAc,YACd,QAAAC,EACA,aAAAC,EACA,mBAAAC,EAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,CAAA,EAC3CL,GAAS,CAAA,EAEPM,EAAOC,EAAW,SAASL,CAAW,EAAI,IAAI,OAAOA,CAAW,EAAIA,EAE1E,IAAIM,EAASC,EAAE,OAAA,EAAS,YAAY,CAACC,EAAOC,IAAY,CACtD,MAAMC,EAAaF,EAAM,QAAQJ,EAAM,EAAE,EAEnCO,EAAeD,EAAW,OAAO,CAAC,EAEnCP,EAAmB,SAASQ,CAAY,GAC3CF,EAAQ,SAAS,CACf,KAAMF,EAAE,aAAa,eACrB,WAAY,QACZ,SAASN,GAAA,YAAAA,EAAS,kBAAmBW,EAAoB,uBAAA,CAAuB,CACjF,EAGCF,EAAW,OAAS,IACtBD,EAAQ,SAAS,CACf,KAAMF,EAAE,aAAa,UACrB,QAAS,GACT,UAAW,GACX,KAAM,SACN,SAASN,GAAA,YAAAA,EAAS,MAAOW,EAAoB,gBAAA,CAAgB,CAC9D,CACH,CACD,EAED,OAAIb,IACFO,EAASA,EAAO,UAAWE,GAAUA,EAAM,QAAQJ,EAAM,EAAE,CAAC,GAGvDE,EAAO,QAAQJ,GAAgB,EAAE,CAC1C,EAMMW,EAAoBf,GAA4D,CACpF,KAAM,CAAE,WAAAC,EAAa,GAAM,YAAAC,EAAc,YAAa,QAAAC,EAAS,mBAAAE,EAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,CAAA,EAAML,GAAS,CAAA,EAErHM,EAAOC,EAAW,SAASL,CAAW,EAAI,IAAI,OAAOA,CAAW,EAAIA,EAE1E,IAAIM,EAASC,EAAE,OAAA,EAAS,YAAY,CAACC,EAAOC,IAAY,CACtD,MAAMC,EAAaF,EAAM,QAAQJ,EAAM,EAAE,EAEzC,GAAI,CAACM,EAAW,OAAQ,OAExB,MAAMC,EAAeD,EAAW,OAAO,CAAC,EAEnCP,EAAmB,SAASQ,CAAY,GAC3CF,EAAQ,SAAS,CACf,KAAMF,EAAE,aAAa,eACrB,WAAY,QACZ,SAASN,GAAA,YAAAA,EAAS,kBAAmBW,EAAoB,uBAAA,CAAuB,CACjF,EAGCF,EAAW,OAAS,IACtBD,EAAQ,SAAS,CACf,KAAMF,EAAE,aAAa,UACrB,QAAS,GACT,UAAW,GACX,KAAM,SACN,SAASN,GAAA,YAAAA,EAAS,MAAOW,EAAoB,gBAAA,CAAgB,CAC9D,CACH,CACD,EAED,OAAIb,IACFO,EAASA,EAAO,UAAWE,GAAUA,EAAM,QAAQJ,EAAM,EAAE,CAAC,GAGvDE,EAAO,SAAA,EAAW,UAAWE,GAAW,CAACA,IAASA,GAAA,YAAAA,EAAO,QAAQJ,EAAM,IAAI,UAAW,EAAI,OAAYI,CAAM,CACrH,EA0BO,SAASM,EACdhB,EAC2C,CAC3C,KAAM,CAAE,SAAAiB,EAAW,EAAA,EAASjB,GAAS,CAAA,EAErC,OAAOiB,EAAWlB,EAAiBC,CAAK,EAAIe,EAAiBf,CAAK,CACpE"}
1
+ {"version":3,"file":"phone.validators.js","sources":["../../../../../lib/shared/validation/base/phone.validators.ts"],"sourcesContent":["import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type PhoneValidationOptions<Required extends boolean> = {\n /**\n * исключает маску в возвращаемом значении\n * @default true\n */\n ignoreMask?: boolean\n /**\n * игнорирует символы для проверки поля исключая данные символы\n * @default /[()+_ -]/g\n */\n maskSymbols?: RegExp | string\n /**\n * указывает что поле обязательное\n */\n required?: Required\n /**\n * значение по умолчанию\n * @default undefined\n */\n defaultValue?: string\n message?: {\n min?: string\n invalidOperator?: string\n }\n /**\n * указываем валидные коды оператор\n * @default ['3', '4', '5', '6', '9']\n * @param string[]\n */\n validOperatorCodes?: string[]\n}\n\n/**\n * Схема валидации обязательного поля номера телефона\n */\nconst getPhoneRequired = (props?: Omit<PhoneValidationOptions<true>, 'required'>) => {\n const {\n ignoreMask = true,\n maskSymbols = /[()+_ -]/g,\n message,\n defaultValue,\n validOperatorCodes = ['3', '4', '5', '6', '9']\n } = props || {}\n\n const mask = TypeGuards.isString(maskSymbols) ? new RegExp(maskSymbols) : maskSymbols\n\n let schema = z.string().superRefine((value, context) => {\n const cleanValue = value.replace(mask, '')\n\n const operatorCode = cleanValue.charAt(1)\n\n if (!validOperatorCodes.includes(operatorCode)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: message?.invalidOperator || baseDefaultMessages.PHONE_INVALID_OPERATOR()\n })\n }\n\n if (cleanValue.length < 11) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: 11,\n inclusive: true,\n type: 'string',\n message: message?.min || baseDefaultMessages.PHONE_NON_EMPTY()\n })\n }\n })\n\n if (ignoreMask) {\n schema = schema.transform((value) => value.replace(mask, '')) as unknown as typeof schema\n }\n\n return schema.default(defaultValue ?? '')\n}\ntype PhoneRequiredSchema = ReturnType<typeof getPhoneRequired>\n\n/**\n * Схема валидации опционального поля номера телефона\n */\nconst getPhoneOptional = (props?: Omit<PhoneValidationOptions<false>, 'required'>) => {\n const { ignoreMask = true, maskSymbols = /[()+_ -]/g, message, validOperatorCodes = ['3', '4', '5', '6', '9'] } = props || {}\n\n const mask = TypeGuards.isString(maskSymbols) ? new RegExp(maskSymbols) : maskSymbols\n\n let schema = z.string().superRefine((value, context) => {\n const cleanValue = value.replace(mask, '')\n\n if (!cleanValue.length) return\n\n const operatorCode = cleanValue.charAt(1)\n\n if (!validOperatorCodes.includes(operatorCode)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: message?.invalidOperator || baseDefaultMessages.PHONE_INVALID_OPERATOR()\n })\n }\n\n if (cleanValue.length < 11) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: 11,\n inclusive: true,\n type: 'string',\n message: message?.min || baseDefaultMessages.PHONE_NON_EMPTY()\n })\n }\n })\n\n if (ignoreMask) {\n schema = schema.transform((value) => value.replace(mask, '')) as unknown as typeof schema\n }\n\n return schema.optional().transform((value) => (!value || value?.replace(mask, '').length !== 0 ? undefined : value))\n}\ntype PhoneOptionalSchema = ReturnType<typeof getPhoneOptional>\n\n/**\n * Схема валидации опционального поля номера телефона\n * @param {PhoneValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @typeParam `ignoreSeparators` - `boolean | undefined` `default: false`\n * @typeParam `maskSymbols` - `RegExp | undefined` `default: /[()+_ -]/g`\n * @typeParam `message` - `{ [min | invalidOperator]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getPhoneSchema()\n * })\n * // will returns z.string()\n *\n * @example with optional value\n * z.object({\n * field: zodValidators.base.getPhoneSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getPhoneSchema(props?: PhoneValidationOptions<true>): PhoneRequiredSchema\nexport function getPhoneSchema(props?: PhoneValidationOptions<false>): PhoneOptionalSchema\nexport function getPhoneSchema<Required extends boolean>(\n props?: PhoneValidationOptions<Required>\n): PhoneRequiredSchema | PhoneOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getPhoneRequired(props) : getPhoneOptional(props)\n}\n"],"names":["getPhoneRequired","props","ignoreMask","maskSymbols","message","defaultValue","validOperatorCodes","mask","TypeGuards","schema","z","value","context","cleanValue","operatorCode","baseDefaultMessages","getPhoneOptional","getPhoneSchema","required"],"mappings":"sMAuCA,MAAMA,EAAoBC,GAA2D,CACnF,KAAM,CACJ,WAAAC,EAAa,GACb,YAAAC,EAAc,YACd,QAAAC,EACA,aAAAC,EACA,mBAAAC,EAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,CAAA,EAC3CL,GAAS,CAAA,EAEPM,EAAOC,EAAW,SAASL,CAAW,EAAI,IAAI,OAAOA,CAAW,EAAIA,EAE1E,IAAIM,EAASC,EAAE,OAAA,EAAS,YAAY,CAACC,EAAOC,IAAY,CACtD,MAAMC,EAAaF,EAAM,QAAQJ,EAAM,EAAE,EAEnCO,EAAeD,EAAW,OAAO,CAAC,EAEnCP,EAAmB,SAASQ,CAAY,GAC3CF,EAAQ,SAAS,CACf,KAAMF,EAAE,aAAa,eACrB,WAAY,QACZ,SAASN,GAAA,YAAAA,EAAS,kBAAmBW,EAAoB,uBAAA,CAAuB,CACjF,EAGCF,EAAW,OAAS,IACtBD,EAAQ,SAAS,CACf,KAAMF,EAAE,aAAa,UACrB,QAAS,GACT,UAAW,GACX,KAAM,SACN,SAASN,GAAA,YAAAA,EAAS,MAAOW,EAAoB,gBAAA,CAAgB,CAC9D,CAEL,CAAC,EAED,OAAIb,IACFO,EAASA,EAAO,UAAWE,GAAUA,EAAM,QAAQJ,EAAM,EAAE,CAAC,GAGvDE,EAAO,QAAQJ,GAAgB,EAAE,CAC1C,EAMMW,EAAoBf,GAA4D,CACpF,KAAM,CAAE,WAAAC,EAAa,GAAM,YAAAC,EAAc,YAAa,QAAAC,EAAS,mBAAAE,EAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,CAAA,EAAML,GAAS,CAAA,EAErHM,EAAOC,EAAW,SAASL,CAAW,EAAI,IAAI,OAAOA,CAAW,EAAIA,EAE1E,IAAIM,EAASC,EAAE,OAAA,EAAS,YAAY,CAACC,EAAOC,IAAY,CACtD,MAAMC,EAAaF,EAAM,QAAQJ,EAAM,EAAE,EAEzC,GAAI,CAACM,EAAW,OAAQ,OAExB,MAAMC,EAAeD,EAAW,OAAO,CAAC,EAEnCP,EAAmB,SAASQ,CAAY,GAC3CF,EAAQ,SAAS,CACf,KAAMF,EAAE,aAAa,eACrB,WAAY,QACZ,SAASN,GAAA,YAAAA,EAAS,kBAAmBW,EAAoB,uBAAA,CAAuB,CACjF,EAGCF,EAAW,OAAS,IACtBD,EAAQ,SAAS,CACf,KAAMF,EAAE,aAAa,UACrB,QAAS,GACT,UAAW,GACX,KAAM,SACN,SAASN,GAAA,YAAAA,EAAS,MAAOW,EAAoB,gBAAA,CAAgB,CAC9D,CAEL,CAAC,EAED,OAAIb,IACFO,EAASA,EAAO,UAAWE,GAAUA,EAAM,QAAQJ,EAAM,EAAE,CAAC,GAGvDE,EAAO,SAAA,EAAW,UAAWE,GAAW,CAACA,IAASA,GAAA,YAAAA,EAAO,QAAQJ,EAAM,IAAI,UAAW,EAAI,OAAYI,CAAM,CACrH,EA0BO,SAASM,EACdhB,EAC2C,CAC3C,KAAM,CAAE,SAAAiB,EAAW,EAAA,EAASjB,GAAS,CAAA,EAErC,OAAOiB,EAAWlB,EAAiBC,CAAK,EAAIe,EAAiBf,CAAK,CACpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"select.validators.js","sources":["../../../../../lib/shared/validation/base/select.validators.ts"],"sourcesContent":["import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type SelectSingleValidationOptions<Required extends boolean, Multi extends boolean = false> = {\n /**\n * включает валидацию мульти селекта\n * @default false\n */\n multiple?: Multi\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n /**\n * значение по умолчанию\n * @default undefined\n */\n defaultValue?: string\n message?: {\n single?: string\n multiple?: string\n }\n}\n\ntype SelectMultipleValidationOptions<Required extends boolean, Multi extends boolean = true> = SelectSingleValidationOptions<\n Required,\n Multi\n> & {\n /**\n * минимальное количество элементов\n * @default 0\n */\n minLength?: number\n /**\n * максимальное количество элементов\n * @default undefined\n */\n maxLength?: number\n /**\n * фиксированное количество элементов\n * @default undefined\n */\n length?: number\n message?: SelectSingleValidationOptions<Required, Multi> & {\n minLength?: string\n maxLength?: string\n length?: string\n }\n}\n\ntype SelectValidationOptions<Required extends boolean, Multi extends boolean> = Multi extends true\n ? SelectMultipleValidationOptions<Required, Multi>\n : SelectSingleValidationOptions<Required, Multi>\n\n/**\n * Схема валидации обязательного поля типа select\n */\nconst getSelectRequired = <Required extends boolean, Multi extends boolean>(props?: SelectValidationOptions<Required, Multi>) => {\n const { message, defaultValue } = props || {}\n\n const selectSchema = z\n .string()\n .min(1, message?.single || baseDefaultMessages.SELECT_NON_EMPTY())\n .nullable()\n .refine((value) => Boolean(value), message?.single || baseDefaultMessages.SELECT_NON_EMPTY())\n .default(defaultValue ?? null)\n\n if (props?.multiple) {\n let arraySchema = z\n .array(selectSchema)\n .min(props?.minLength || 0, message?.multiple || baseDefaultMessages.SELECT_MULTIPLE_MIN_LENGTH(props?.minLength || 0))\n\n if (props?.length) {\n return arraySchema\n .length(props.length, props.message?.length || baseDefaultMessages.SELECT_FIX_LENGTH(props.length))\n .default([])\n } else if (props?.maxLength) {\n arraySchema = arraySchema.max(\n props.maxLength,\n props.message?.maxLength || baseDefaultMessages.SELECT_MULTIPLE_MAX_LENGTH(props.maxLength)\n )\n }\n\n return arraySchema.default([])\n }\n\n return selectSchema\n}\ntype SelectRequiredSchema = ReturnType<typeof getSelectRequired>\n\n/**\n * Схема валидации опционального поля типа select\n */\nfunction getSelectOptional<Required extends boolean, Multi extends boolean>(\n props?: Omit<SelectValidationOptions<Required, Multi>, 'message'>\n) {\n const selectSchema = z.string().nullable().optional()\n\n if (props?.multiple) {\n return z.array(selectSchema).optional()\n }\n\n return selectSchema\n}\ntype SelectOptionalSchema = ReturnType<typeof getSelectOptional>\n\n/**\n * Схема валидации опционального поля типа select\n * @param {SelectValidationOptions} props настройки схемы\n @typeParam `required` - `boolean`\n * @typeParam `multiple` - `boolean`\n * @typeParam `minLength` - `number | undefined`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required single value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ multiple: false })\n * })\n * // will returns z.string().nullable()\n *\n * @example with required multiple value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ multiple: true })\n * })\n * // will returns z.array(z.string().nullable())\n *\n * @example with optional single value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ required: false, multiple: false })\n * })\n * // will returns z.string().nullable().optional()\n *\n * @example with optional multiple value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ required: false, multiple: true })\n * })\n * // will returns z.array(z.string().nullable().optional()).optional()\n */\nexport function getSelectSchema<Multi extends boolean>(props?: SelectValidationOptions<true, Multi>): SelectRequiredSchema\nexport function getSelectSchema<Multi extends boolean>(props?: SelectValidationOptions<false, Multi>): SelectOptionalSchema\nexport function getSelectSchema<Multi extends boolean, Required extends boolean>(\n props?: SelectValidationOptions<Required, Multi>\n): SelectRequiredSchema | SelectOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getSelectRequired(props) : getSelectOptional(props)\n}\n"],"names":["getSelectRequired","props","message","defaultValue","selectSchema","z","baseDefaultMessages","value","arraySchema","_a","_b","getSelectOptional","getSelectSchema","required"],"mappings":"wHA0DA,MAAMA,EAAsEC,GAAqD,SAC/H,KAAM,CAAE,QAAAC,EAAS,aAAAC,CAAA,EAAiBF,GAAS,CAAA,EAErCG,EAAeC,EAClB,OAAA,EACA,IAAI,GAAGH,GAAA,YAAAA,EAAS,SAAUI,EAAoB,iBAAA,CAAkB,EAChE,SAAA,EACA,OAAQC,GAAU,EAAQA,GAAQL,GAAA,YAAAA,EAAS,SAAUI,EAAoB,iBAAA,CAAkB,EAC3F,QAAQH,GAAgB,IAAI,EAE/B,GAAIF,GAAA,MAAAA,EAAO,SAAU,CACnB,IAAIO,EAAcH,EACf,MAAMD,CAAY,EAClB,KAAIH,GAAA,YAAAA,EAAO,YAAa,GAAGC,GAAA,YAAAA,EAAS,WAAYI,EAAoB,4BAA2BL,GAAA,YAAAA,EAAO,YAAa,CAAC,CAAC,EAExH,OAAIA,GAAA,MAAAA,EAAO,OACFO,EACJ,OAAOP,EAAM,SAAQQ,EAAAR,EAAM,UAAN,YAAAQ,EAAe,SAAUH,EAAoB,kBAAkBL,EAAM,MAAM,CAAC,EACjG,QAAQ,CAAA,CAAE,GACJA,GAAA,MAAAA,EAAO,YAChBO,EAAcA,EAAY,IACxBP,EAAM,YACNS,EAAAT,EAAM,UAAN,YAAAS,EAAe,YAAaJ,EAAoB,2BAA2BL,EAAM,SAAS,CAAA,GAIvFO,EAAY,QAAQ,EAAE,EAAA,CAG/B,OAAOJ,CACT,EAMA,SAASO,EACPV,EACA,CACA,MAAMG,EAAeC,EAAE,OAAA,EAAS,SAAA,EAAW,SAAA,EAE3C,OAAIJ,GAAA,MAAAA,EAAO,SACFI,EAAE,MAAMD,CAAY,EAAE,SAAA,EAGxBA,CACT,CAqCO,SAASQ,EACdX,EAC6C,CAC7C,KAAM,CAAE,SAAAY,EAAW,EAAA,EAASZ,GAAS,CAAA,EAErC,OAAOY,EAAWb,EAAkBC,CAAK,EAAIU,EAAkBV,CAAK,CACtE"}
1
+ {"version":3,"file":"select.validators.js","sources":["../../../../../lib/shared/validation/base/select.validators.ts"],"sourcesContent":["import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type SelectSingleValidationOptions<Required extends boolean, Multi extends boolean = false> = {\n /**\n * включает валидацию мульти селекта\n * @default false\n */\n multiple?: Multi\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n /**\n * значение по умолчанию\n * @default undefined\n */\n defaultValue?: string\n message?: {\n single?: string\n multiple?: string\n }\n}\n\ntype SelectMultipleValidationOptions<Required extends boolean, Multi extends boolean = true> = SelectSingleValidationOptions<\n Required,\n Multi\n> & {\n /**\n * минимальное количество элементов\n * @default 0\n */\n minLength?: number\n /**\n * максимальное количество элементов\n * @default undefined\n */\n maxLength?: number\n /**\n * фиксированное количество элементов\n * @default undefined\n */\n length?: number\n message?: SelectSingleValidationOptions<Required, Multi> & {\n minLength?: string\n maxLength?: string\n length?: string\n }\n}\n\ntype SelectValidationOptions<Required extends boolean, Multi extends boolean> = Multi extends true\n ? SelectMultipleValidationOptions<Required, Multi>\n : SelectSingleValidationOptions<Required, Multi>\n\n/**\n * Схема валидации обязательного поля типа select\n */\nconst getSelectRequired = <Required extends boolean, Multi extends boolean>(props?: SelectValidationOptions<Required, Multi>) => {\n const { message, defaultValue } = props || {}\n\n const selectSchema = z\n .string()\n .min(1, message?.single || baseDefaultMessages.SELECT_NON_EMPTY())\n .nullable()\n .refine((value) => Boolean(value), message?.single || baseDefaultMessages.SELECT_NON_EMPTY())\n .default(defaultValue ?? null)\n\n if (props?.multiple) {\n let arraySchema = z\n .array(selectSchema)\n .min(props?.minLength || 0, message?.multiple || baseDefaultMessages.SELECT_MULTIPLE_MIN_LENGTH(props?.minLength || 0))\n\n if (props?.length) {\n return arraySchema\n .length(props.length, props.message?.length || baseDefaultMessages.SELECT_FIX_LENGTH(props.length))\n .default([])\n } else if (props?.maxLength) {\n arraySchema = arraySchema.max(\n props.maxLength,\n props.message?.maxLength || baseDefaultMessages.SELECT_MULTIPLE_MAX_LENGTH(props.maxLength)\n )\n }\n\n return arraySchema.default([])\n }\n\n return selectSchema\n}\ntype SelectRequiredSchema = ReturnType<typeof getSelectRequired>\n\n/**\n * Схема валидации опционального поля типа select\n */\nfunction getSelectOptional<Required extends boolean, Multi extends boolean>(\n props?: Omit<SelectValidationOptions<Required, Multi>, 'message'>\n) {\n const selectSchema = z.string().nullable().optional()\n\n if (props?.multiple) {\n return z.array(selectSchema).optional()\n }\n\n return selectSchema\n}\ntype SelectOptionalSchema = ReturnType<typeof getSelectOptional>\n\n/**\n * Схема валидации опционального поля типа select\n * @param {SelectValidationOptions} props настройки схемы\n @typeParam `required` - `boolean`\n * @typeParam `multiple` - `boolean`\n * @typeParam `minLength` - `number | undefined`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required single value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ multiple: false })\n * })\n * // will returns z.string().nullable()\n *\n * @example with required multiple value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ multiple: true })\n * })\n * // will returns z.array(z.string().nullable())\n *\n * @example with optional single value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ required: false, multiple: false })\n * })\n * // will returns z.string().nullable().optional()\n *\n * @example with optional multiple value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ required: false, multiple: true })\n * })\n * // will returns z.array(z.string().nullable().optional()).optional()\n */\nexport function getSelectSchema<Multi extends boolean>(props?: SelectValidationOptions<true, Multi>): SelectRequiredSchema\nexport function getSelectSchema<Multi extends boolean>(props?: SelectValidationOptions<false, Multi>): SelectOptionalSchema\nexport function getSelectSchema<Multi extends boolean, Required extends boolean>(\n props?: SelectValidationOptions<Required, Multi>\n): SelectRequiredSchema | SelectOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getSelectRequired(props) : getSelectOptional(props)\n}\n"],"names":["getSelectRequired","props","message","defaultValue","selectSchema","z","baseDefaultMessages","value","arraySchema","_a","_b","getSelectOptional","getSelectSchema","required"],"mappings":"wHA0DA,MAAMA,EAAsEC,GAAqD,SAC/H,KAAM,CAAE,QAAAC,EAAS,aAAAC,CAAA,EAAiBF,GAAS,CAAA,EAErCG,EAAeC,EAClB,OAAA,EACA,IAAI,GAAGH,GAAA,YAAAA,EAAS,SAAUI,EAAoB,iBAAA,CAAkB,EAChE,SAAA,EACA,OAAQC,GAAU,EAAQA,GAAQL,GAAA,YAAAA,EAAS,SAAUI,EAAoB,iBAAA,CAAkB,EAC3F,QAAQH,GAAgB,IAAI,EAE/B,GAAIF,GAAA,MAAAA,EAAO,SAAU,CACnB,IAAIO,EAAcH,EACf,MAAMD,CAAY,EAClB,KAAIH,GAAA,YAAAA,EAAO,YAAa,GAAGC,GAAA,YAAAA,EAAS,WAAYI,EAAoB,4BAA2BL,GAAA,YAAAA,EAAO,YAAa,CAAC,CAAC,EAExH,OAAIA,GAAA,MAAAA,EAAO,OACFO,EACJ,OAAOP,EAAM,SAAQQ,EAAAR,EAAM,UAAN,YAAAQ,EAAe,SAAUH,EAAoB,kBAAkBL,EAAM,MAAM,CAAC,EACjG,QAAQ,CAAA,CAAE,GACJA,GAAA,MAAAA,EAAO,YAChBO,EAAcA,EAAY,IACxBP,EAAM,YACNS,EAAAT,EAAM,UAAN,YAAAS,EAAe,YAAaJ,EAAoB,2BAA2BL,EAAM,SAAS,CAAA,GAIvFO,EAAY,QAAQ,EAAE,EAC/B,CAEA,OAAOJ,CACT,EAMA,SAASO,EACPV,EACA,CACA,MAAMG,EAAeC,EAAE,OAAA,EAAS,SAAA,EAAW,SAAA,EAE3C,OAAIJ,GAAA,MAAAA,EAAO,SACFI,EAAE,MAAMD,CAAY,EAAE,SAAA,EAGxBA,CACT,CAqCO,SAASQ,EACdX,EAC6C,CAC7C,KAAM,CAAE,SAAAY,EAAW,EAAA,EAASZ,GAAS,CAAA,EAErC,OAAOY,EAAWb,EAAkBC,CAAK,EAAIU,EAAkBV,CAAK,CACtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"fio.validators.js","sources":["../../../../../lib/shared/validation/dadata/fio.validators.ts"],"sourcesContent":["import z from 'zod'\nimport { fioDefaultMessages, fioRegex } from './dadata.constants'\n\nconst getFioParts = (value: string) => {\n const [surname, name, ...patronymicParts] = value.trim().replace(/\\s+/g, ' ').split(' ')\n const patronymic = patronymicParts.join(' ')\n\n return { surname, name, patronymic }\n}\n\nexport type FioValidationOptions<Required extends boolean> = {\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: {\n root?: string\n nameOrSurnameEmpty?: string\n invalidName?: string\n invalidSurname?: string\n invalidPatronymic?: string\n }\n}\n\n/**\n * Схема валидации обязательного поля автозаполнения ФИО\n */\nconst getFioRequired = (props?: Omit<FioValidationOptions<true>, 'required'>) => {\n const { message } = props || {}\n\n const { nameOrSurnameEmpty, invalidSurname, invalidPatronymic, invalidName } = message || {}\n\n return z\n .string()\n .superRefine((value, context) => {\n const { name, surname, patronymic } = getFioParts(value)\n\n if (!fioRegex.ONLY_CYRILLIC.test(value)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: fioDefaultMessages.ONLY_CYRILLIC()\n })\n }\n\n if (!name || !surname) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: nameOrSurnameEmpty || fioDefaultMessages.NAME_OR_SURNAME_NON_EMPTY()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(name)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidName || fioDefaultMessages.INVALID_NAME()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(surname)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidSurname || fioDefaultMessages.INVALID_SURNAME()\n })\n }\n\n if (patronymic) {\n if (!fioRegex.PATRONYMIC.test(patronymic)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidPatronymic || fioDefaultMessages.INVALID_PATRONYMIC()\n })\n }\n }\n })\n .transform((value) => value.trimEnd())\n .default('')\n}\ntype FioRequiredSchema = ReturnType<typeof getFioRequired>\n\n/**\n * Схема валидации опционального поля автозаполнения ФИО\n */\nconst getFioOptional = (props?: Omit<FioValidationOptions<false>, 'required'>) => {\n return getFioRequired(props)\n .optional()\n .transform((value) => (!value?.length ? undefined : value))\n}\ntype FioOptionalSchema = ReturnType<typeof getFioOptional>\n\n/**\n * Схема валидации поля автозаполнения ФИО\n * @param {DateValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema()\n * })\n * // will returns z.string()\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getFioSchema(props?: FioValidationOptions<true>): FioRequiredSchema\nexport function getFioSchema(props?: FioValidationOptions<false>): FioOptionalSchema\nexport function getFioSchema<Required extends boolean>(\n props?: FioValidationOptions<Required>\n): FioRequiredSchema | FioOptionalSchema {\n const { required = true, ...restProps } = props || {}\n\n return required ? getFioRequired(restProps) : getFioOptional(restProps)\n}\n"],"names":["getFioParts","value","surname","name","patronymicParts","patronymic","getFioRequired","props","message","nameOrSurnameEmpty","invalidSurname","invalidPatronymic","invalidName","z","context","fioRegex","fioDefaultMessages","getFioOptional","getFioSchema","required","restProps"],"mappings":"uIAGA,MAAMA,EAAeC,GAAkB,CACrC,KAAM,CAACC,EAASC,EAAM,GAAGC,CAAe,EAAIH,EAAM,KAAA,EAAO,QAAQ,OAAQ,GAAG,EAAE,MAAM,GAAG,EACjFI,EAAaD,EAAgB,KAAK,GAAG,EAE3C,MAAO,CAAE,QAAAF,EAAS,KAAAC,EAAM,WAAAE,CAAA,CAC1B,EAoBMC,EAAkBC,GAAyD,CAC/E,KAAM,CAAE,QAAAC,GAAYD,GAAS,CAAA,EAEvB,CAAE,mBAAAE,EAAoB,eAAAC,EAAgB,kBAAAC,EAAmB,YAAAC,CAAA,EAAgBJ,GAAW,CAAA,EAE1F,OAAOK,EACJ,OAAA,EACA,YAAY,CAACZ,EAAOa,IAAY,CAC/B,KAAM,CAAE,KAAAX,EAAM,QAAAD,EAAS,WAAAG,CAAA,EAAeL,EAAYC,CAAK,EAElDc,EAAS,cAAc,KAAKd,CAAK,GACpCa,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASG,EAAmB,cAAA,CAAc,CAC3C,GAGC,CAACb,GAAQ,CAACD,IACZY,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASJ,GAAsBO,EAAmB,0BAAA,CAA0B,CAC7E,EAGED,EAAS,aAAa,KAAKZ,CAAI,GAClCW,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASD,GAAeI,EAAmB,aAAA,CAAa,CACzD,EAGED,EAAS,aAAa,KAAKb,CAAO,GACrCY,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASH,GAAkBM,EAAmB,gBAAA,CAAgB,CAC/D,EAGCX,IACGU,EAAS,WAAW,KAAKV,CAAU,GACtCS,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASF,GAAqBK,EAAmB,mBAAA,CAAmB,CACrE,EAEL,CACD,EACA,UAAWf,GAAUA,EAAM,SAAS,EACpC,QAAQ,EAAE,CACf,EAMMgB,EAAkBV,GACfD,EAAeC,CAAK,EACxB,SAAA,EACA,UAAWN,GAAYA,GAAA,MAAAA,EAAO,OAAqBA,EAAZ,MAAkB,EAwBvD,SAASiB,EACdX,EACuC,CACvC,KAAM,CAAE,SAAAY,EAAW,GAAM,GAAGC,CAAA,EAAcb,GAAS,CAAA,EAEnD,OAAOY,EAAWb,EAAec,CAAS,EAAIH,EAAeG,CAAS,CACxE"}
1
+ {"version":3,"file":"fio.validators.js","sources":["../../../../../lib/shared/validation/dadata/fio.validators.ts"],"sourcesContent":["import z from 'zod'\nimport { fioDefaultMessages, fioRegex } from './dadata.constants'\n\nconst getFioParts = (value: string) => {\n const [surname, name, ...patronymicParts] = value.trim().replace(/\\s+/g, ' ').split(' ')\n const patronymic = patronymicParts.join(' ')\n\n return { surname, name, patronymic }\n}\n\nexport type FioValidationOptions<Required extends boolean> = {\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: {\n root?: string\n nameOrSurnameEmpty?: string\n invalidName?: string\n invalidSurname?: string\n invalidPatronymic?: string\n }\n}\n\n/**\n * Схема валидации обязательного поля автозаполнения ФИО\n */\nconst getFioRequired = (props?: Omit<FioValidationOptions<true>, 'required'>) => {\n const { message } = props || {}\n\n const { nameOrSurnameEmpty, invalidSurname, invalidPatronymic, invalidName } = message || {}\n\n return z\n .string()\n .superRefine((value, context) => {\n const { name, surname, patronymic } = getFioParts(value)\n\n if (!fioRegex.ONLY_CYRILLIC.test(value)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: fioDefaultMessages.ONLY_CYRILLIC()\n })\n }\n\n if (!name || !surname) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: nameOrSurnameEmpty || fioDefaultMessages.NAME_OR_SURNAME_NON_EMPTY()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(name)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidName || fioDefaultMessages.INVALID_NAME()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(surname)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidSurname || fioDefaultMessages.INVALID_SURNAME()\n })\n }\n\n if (patronymic) {\n if (!fioRegex.PATRONYMIC.test(patronymic)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidPatronymic || fioDefaultMessages.INVALID_PATRONYMIC()\n })\n }\n }\n })\n .transform((value) => value.trimEnd())\n .default('')\n}\ntype FioRequiredSchema = ReturnType<typeof getFioRequired>\n\n/**\n * Схема валидации опционального поля автозаполнения ФИО\n */\nconst getFioOptional = (props?: Omit<FioValidationOptions<false>, 'required'>) => {\n return getFioRequired(props)\n .optional()\n .transform((value) => (!value?.length ? undefined : value))\n}\ntype FioOptionalSchema = ReturnType<typeof getFioOptional>\n\n/**\n * Схема валидации поля автозаполнения ФИО\n * @param {DateValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema()\n * })\n * // will returns z.string()\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getFioSchema(props?: FioValidationOptions<true>): FioRequiredSchema\nexport function getFioSchema(props?: FioValidationOptions<false>): FioOptionalSchema\nexport function getFioSchema<Required extends boolean>(\n props?: FioValidationOptions<Required>\n): FioRequiredSchema | FioOptionalSchema {\n const { required = true, ...restProps } = props || {}\n\n return required ? getFioRequired(restProps) : getFioOptional(restProps)\n}\n"],"names":["getFioParts","value","surname","name","patronymicParts","patronymic","getFioRequired","props","message","nameOrSurnameEmpty","invalidSurname","invalidPatronymic","invalidName","z","context","fioRegex","fioDefaultMessages","getFioOptional","getFioSchema","required","restProps"],"mappings":"uIAGA,MAAMA,EAAeC,GAAkB,CACrC,KAAM,CAACC,EAASC,EAAM,GAAGC,CAAe,EAAIH,EAAM,KAAA,EAAO,QAAQ,OAAQ,GAAG,EAAE,MAAM,GAAG,EACjFI,EAAaD,EAAgB,KAAK,GAAG,EAE3C,MAAO,CAAE,QAAAF,EAAS,KAAAC,EAAM,WAAAE,CAAA,CAC1B,EAoBMC,EAAkBC,GAAyD,CAC/E,KAAM,CAAE,QAAAC,GAAYD,GAAS,CAAA,EAEvB,CAAE,mBAAAE,EAAoB,eAAAC,EAAgB,kBAAAC,EAAmB,YAAAC,CAAA,EAAgBJ,GAAW,CAAA,EAE1F,OAAOK,EACJ,OAAA,EACA,YAAY,CAACZ,EAAOa,IAAY,CAC/B,KAAM,CAAE,KAAAX,EAAM,QAAAD,EAAS,WAAAG,CAAA,EAAeL,EAAYC,CAAK,EAElDc,EAAS,cAAc,KAAKd,CAAK,GACpCa,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASG,EAAmB,cAAA,CAAc,CAC3C,GAGC,CAACb,GAAQ,CAACD,IACZY,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASJ,GAAsBO,EAAmB,0BAAA,CAA0B,CAC7E,EAGED,EAAS,aAAa,KAAKZ,CAAI,GAClCW,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASD,GAAeI,EAAmB,aAAA,CAAa,CACzD,EAGED,EAAS,aAAa,KAAKb,CAAO,GACrCY,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASH,GAAkBM,EAAmB,gBAAA,CAAgB,CAC/D,EAGCX,IACGU,EAAS,WAAW,KAAKV,CAAU,GACtCS,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASF,GAAqBK,EAAmB,mBAAA,CAAmB,CACrE,EAGP,CAAC,EACA,UAAWf,GAAUA,EAAM,QAAA,CAAS,EACpC,QAAQ,EAAE,CACf,EAMMgB,EAAkBV,GACfD,EAAeC,CAAK,EACxB,SAAA,EACA,UAAWN,GAAYA,GAAA,MAAAA,EAAO,OAAqBA,EAAZ,MAAkB,EAwBvD,SAASiB,EACdX,EACuC,CACvC,KAAM,CAAE,SAAAY,EAAW,GAAM,GAAGC,CAAA,EAAcb,GAAS,CAAA,EAEnD,OAAOY,EAAWb,EAAec,CAAS,EAAIH,EAAeG,CAAS,CACxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"zodUtils.js","sources":["../../../../../lib/shared/validation/utils/zodUtils.ts"],"sourcesContent":["import z from 'zod'\n\ntype ZodUtilsGetDefaultsOptions = {\n /**\n * Вставить в массив значение, исходя из внутренней схемы z.array\n */\n fillArrayWithValue?: boolean\n}\n\nexport class ZodUtils {\n /**\n * Функция для получения значения по умолчанию исходя из схемы\n * @param zodSchema схема формы\n * @param options настройки генерации значений по умолчанию\n * @returns объект значений по умолчанию\n *\n * @example\n * const schema = z.object({\n * name: zodValidators.base.getStringSchema(),\n * role: zodValidators.base.getUnionSchema(['UNKNOWN', 'ADMIN', 'MODERATOR', 'USER'] as const),\n * info: z.object({\n * address: zodValidators.base.getStringSchema(),\n * phone: zodValidators.base.getPhoneSchema({ ignoreMask: true }),\n * age: zodValidators.base.getNumberSchema()\n * })\n * })\n *\n * const defaultValues = ZodUtils.getZodDefaults(schema)\n *\n * // default values will be inferred from schema\n * // {\n * // name: '',\n * // role: 'UNKNOWN',\n * // info: {\n * // address: '',\n * // phone: '',\n * // age: 0\n * // }\n * // }\n */\n static getZodDefaults<ZodSchema extends z.AnyZodObject, Schema = z.TypeOf<ZodSchema>>(\n zodSchema: ZodSchema | z.ZodEffects<ZodSchema>,\n options?: ZodUtilsGetDefaultsOptions\n ): Schema {\n const { fillArrayWithValue } = options || {}\n\n const processZodEffects = (schema: z.ZodEffects<any>) => {\n const innerType = schema._def.schema\n\n if (innerType instanceof z.ZodEffects || innerType._def.typeName === 'ZodEffects') {\n return processZodEffects(innerType)\n }\n\n if (innerType instanceof z.ZodObject || innerType._def.typeName === 'ZodObject') {\n return this.getZodDefaults(innerType, options)\n }\n\n return getDefaultValue(innerType)\n }\n\n const getDefaultValue = (schema: z.ZodTypeAny): unknown => {\n if (schema instanceof z.ZodEffects || schema._def.typeName === 'ZodEffects') {\n return processZodEffects(schema as z.ZodEffects<ZodSchema>)\n }\n\n switch (true) {\n case schema._def.typeName === 'ZodDefault' || schema instanceof z.ZodDefault:\n return (schema as z.ZodDefault<ZodSchema>)._def.defaultValue()\n case schema._def.typeName === 'ZodOptional' || schema instanceof z.ZodOptional:\n return undefined\n case schema._def.typeName === 'ZodEffects':\n return processZodEffects(schema as z.ZodEffects<ZodSchema>)\n case schema._def.typeName === 'ZodNullable' || schema instanceof z.ZodNullable:\n return null\n case schema._def.typeName === 'ZodArray' || schema instanceof z.ZodArray:\n return fillArrayWithValue ? [getDefaultValue((schema as z.ZodArray<ZodSchema>).element)] : []\n case schema._def.typeName === 'ZodObject' || schema instanceof z.ZodObject:\n return this.getZodDefaults(schema as z.ZodObject<z.ZodRawShape>, options)\n case schema._def.typeName === 'ZodUnion' || schema instanceof z.ZodUnion:\n return getDefaultValue(schema._def.options[0])\n case schema._def.typeName === 'ZodLiteral' || schema instanceof z.ZodLiteral:\n return schema._def.value\n case schema._def.typeName === 'ZodDiscriminatedUnion' || schema instanceof z.ZodDiscriminatedUnion:\n return getDefaultValue(schema._def.options[0])\n case schema._def.typeName === 'ZodEnum' || schema instanceof z.ZodEnum:\n return schema._def.values[0]\n case schema._def.typeName === 'ZodString' || schema instanceof z.ZodString:\n return ''\n case schema._def.typeName === 'ZodNumber' || schema instanceof z.ZodNumber:\n return 0\n case schema._def.typeName === 'ZodBoolean' || schema instanceof z.ZodBoolean:\n return false\n case !('innerType' in schema._def):\n return undefined\n default:\n return getDefaultValue(schema._def.innerType)\n }\n }\n\n // @ts-expect-error asf\n if (zodSchema instanceof z.ZodEffects || zodSchema._def.typeName === 'ZodEffects') {\n return processZodEffects(zodSchema as unknown as z.ZodEffects<any>)\n }\n\n const defaults = {} as Schema\n\n const schemaEntries = Object.entries(zodSchema.shape) as [keyof Schema, z.ZodAny][]\n\n schemaEntries.map(([key, value]) => {\n defaults[key] = getDefaultValue(value) as Schema[keyof Schema]\n })\n\n return defaults\n }\n\n /**\n * Функция для объединения zod схождений\n * @param {ZodIntersection} zodSchema\n * @returns объединенная схема двух схождений\n *\n * @example\n * let schema = z.object({\n * foo: z.string()\n * })\n * // this will return intersection and we need\n * // to merge its left to right schema's\n * .and(\n * z.object({\n * bar: z.string()\n * })\n * )\n *\n * schema = ZodUtils.zodMergeIntersection(schema)\n *\n * // schema will be\n * z.object({\n * foo: z.string(),\n * bar: z.string()\n * })\n */\n static zodMergeIntersection<ZodLeft extends z.ZodTypeAny, ZodRight extends z.ZodTypeAny>(\n zodSchema: z.ZodIntersection<ZodLeft, ZodRight>\n ): z.ZodObject<z.objectUtil.MergeShapes<z.TypeOf<ZodLeft>, z.TypeOf<ZodRight>>> {\n const { left, right } = zodSchema._def\n\n const leftSchema =\n left instanceof z.ZodDiscriminatedUnion || left._def.typeName === 'ZodDiscriminatedUnion' ? left._def.options[0] : left\n const rightSchema =\n right instanceof z.ZodDiscriminatedUnion || right._def.typeName === 'ZodDiscriminatedUnion' ? right._def.options[0] : right\n\n if (\n (leftSchema._def.typeName === 'ZodObject' || leftSchema instanceof z.ZodObject) &&\n (rightSchema._def.typeName === 'ZodObject' || rightSchema instanceof z.ZodObject)\n ) {\n return leftSchema.merge(rightSchema)\n }\n\n throw new Error(`Cannot merge schema type ${rightSchema._def.typeName} to ${leftSchema._def.typeName}`)\n }\n}\n"],"names":["ZodUtils","zodSchema","options","fillArrayWithValue","processZodEffects","schema","innerType","z","getDefaultValue","defaults","key","value","left","right","leftSchema","rightSchema"],"mappings":"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"}
1
+ {"version":3,"file":"zodUtils.js","sources":["../../../../../lib/shared/validation/utils/zodUtils.ts"],"sourcesContent":["import z from 'zod'\n\ntype ZodUtilsGetDefaultsOptions = {\n /**\n * Вставить в массив значение, исходя из внутренней схемы z.array\n */\n fillArrayWithValue?: boolean\n}\n\nexport class ZodUtils {\n /**\n * Функция для получения значения по умолчанию исходя из схемы\n * @param zodSchema схема формы\n * @param options настройки генерации значений по умолчанию\n * @returns объект значений по умолчанию\n *\n * @example\n * const schema = z.object({\n * name: zodValidators.base.getStringSchema(),\n * role: zodValidators.base.getUnionSchema(['UNKNOWN', 'ADMIN', 'MODERATOR', 'USER'] as const),\n * info: z.object({\n * address: zodValidators.base.getStringSchema(),\n * phone: zodValidators.base.getPhoneSchema({ ignoreMask: true }),\n * age: zodValidators.base.getNumberSchema()\n * })\n * })\n *\n * const defaultValues = ZodUtils.getZodDefaults(schema)\n *\n * // default values will be inferred from schema\n * // {\n * // name: '',\n * // role: 'UNKNOWN',\n * // info: {\n * // address: '',\n * // phone: '',\n * // age: 0\n * // }\n * // }\n */\n static getZodDefaults<ZodSchema extends z.AnyZodObject, Schema = z.TypeOf<ZodSchema>>(\n zodSchema: ZodSchema | z.ZodEffects<ZodSchema>,\n options?: ZodUtilsGetDefaultsOptions\n ): Schema {\n const { fillArrayWithValue } = options || {}\n\n const processZodEffects = (schema: z.ZodEffects<any>) => {\n const innerType = schema._def.schema\n\n if (innerType instanceof z.ZodEffects || innerType._def.typeName === 'ZodEffects') {\n return processZodEffects(innerType)\n }\n\n if (innerType instanceof z.ZodObject || innerType._def.typeName === 'ZodObject') {\n return this.getZodDefaults(innerType, options)\n }\n\n return getDefaultValue(innerType)\n }\n\n const getDefaultValue = (schema: z.ZodTypeAny): unknown => {\n if (schema instanceof z.ZodEffects || schema._def.typeName === 'ZodEffects') {\n return processZodEffects(schema as z.ZodEffects<ZodSchema>)\n }\n\n switch (true) {\n case schema._def.typeName === 'ZodDefault' || schema instanceof z.ZodDefault:\n return (schema as z.ZodDefault<ZodSchema>)._def.defaultValue()\n case schema._def.typeName === 'ZodOptional' || schema instanceof z.ZodOptional:\n return undefined\n case schema._def.typeName === 'ZodEffects':\n return processZodEffects(schema as z.ZodEffects<ZodSchema>)\n case schema._def.typeName === 'ZodNullable' || schema instanceof z.ZodNullable:\n return null\n case schema._def.typeName === 'ZodArray' || schema instanceof z.ZodArray:\n return fillArrayWithValue ? [getDefaultValue((schema as z.ZodArray<ZodSchema>).element)] : []\n case schema._def.typeName === 'ZodObject' || schema instanceof z.ZodObject:\n return this.getZodDefaults(schema as z.ZodObject<z.ZodRawShape>, options)\n case schema._def.typeName === 'ZodUnion' || schema instanceof z.ZodUnion:\n return getDefaultValue(schema._def.options[0])\n case schema._def.typeName === 'ZodLiteral' || schema instanceof z.ZodLiteral:\n return schema._def.value\n case schema._def.typeName === 'ZodDiscriminatedUnion' || schema instanceof z.ZodDiscriminatedUnion:\n return getDefaultValue(schema._def.options[0])\n case schema._def.typeName === 'ZodEnum' || schema instanceof z.ZodEnum:\n return schema._def.values[0]\n case schema._def.typeName === 'ZodString' || schema instanceof z.ZodString:\n return ''\n case schema._def.typeName === 'ZodNumber' || schema instanceof z.ZodNumber:\n return 0\n case schema._def.typeName === 'ZodBoolean' || schema instanceof z.ZodBoolean:\n return false\n case !('innerType' in schema._def):\n return undefined\n default:\n return getDefaultValue(schema._def.innerType)\n }\n }\n\n // @ts-expect-error asf\n if (zodSchema instanceof z.ZodEffects || zodSchema._def.typeName === 'ZodEffects') {\n return processZodEffects(zodSchema as unknown as z.ZodEffects<any>)\n }\n\n const defaults = {} as Schema\n\n const schemaEntries = Object.entries(zodSchema.shape) as [keyof Schema, z.ZodAny][]\n\n schemaEntries.map(([key, value]) => {\n defaults[key] = getDefaultValue(value) as Schema[keyof Schema]\n })\n\n return defaults\n }\n\n /**\n * Функция для объединения zod схождений\n * @param {ZodIntersection} zodSchema\n * @returns объединенная схема двух схождений\n *\n * @example\n * let schema = z.object({\n * foo: z.string()\n * })\n * // this will return intersection and we need\n * // to merge its left to right schema's\n * .and(\n * z.object({\n * bar: z.string()\n * })\n * )\n *\n * schema = ZodUtils.zodMergeIntersection(schema)\n *\n * // schema will be\n * z.object({\n * foo: z.string(),\n * bar: z.string()\n * })\n */\n static zodMergeIntersection<ZodLeft extends z.ZodTypeAny, ZodRight extends z.ZodTypeAny>(\n zodSchema: z.ZodIntersection<ZodLeft, ZodRight>\n ): z.ZodObject<z.objectUtil.MergeShapes<z.TypeOf<ZodLeft>, z.TypeOf<ZodRight>>> {\n const { left, right } = zodSchema._def\n\n const leftSchema =\n left instanceof z.ZodDiscriminatedUnion || left._def.typeName === 'ZodDiscriminatedUnion' ? left._def.options[0] : left\n const rightSchema =\n right instanceof z.ZodDiscriminatedUnion || right._def.typeName === 'ZodDiscriminatedUnion' ? right._def.options[0] : right\n\n if (\n (leftSchema._def.typeName === 'ZodObject' || leftSchema instanceof z.ZodObject) &&\n (rightSchema._def.typeName === 'ZodObject' || rightSchema instanceof z.ZodObject)\n ) {\n return leftSchema.merge(rightSchema)\n }\n\n throw new Error(`Cannot merge schema type ${rightSchema._def.typeName} to ${leftSchema._def.typeName}`)\n }\n}\n"],"names":["ZodUtils","zodSchema","options","fillArrayWithValue","processZodEffects","schema","innerType","z","getDefaultValue","defaults","key","value","left","right","leftSchema","rightSchema"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs.js","sources":["../../../../lib/widgets/breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { useMemo, useRef, useState } from 'react'\nimport { Breadcrumb } from './Breadcrumb'\nimport { type Breadcrumb as BreadcrumbType, defaultBreadcrumbs, type UseBreadcrumbsOptions } from './hooks'\nimport { useClickOutside } from '$/shared/hooks'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype BreadcrumbsClasses = {\n root?: string\n separator?: string\n breadcrumb?: string\n}\n\ntype BreadcrumbsProps = UseBreadcrumbsOptions & {\n /**\n * произвольный сепаратор, разделяющий элементы\n */\n separator?: React.ReactElement | string\n /**\n * указывает, сколько элементов отображать перед/после сужения\n */\n ellipsis?: number\n /**\n * дополнительные стили компонента\n */\n classes?: BreadcrumbsClasses\n /**\n * Массив хлебных крошек\n */\n breadcrumbs: BreadcrumbType[]\n}\n\nconst renderBreadcrumbs = (\n breadcrumbs: BreadcrumbType[],\n separator: BreadcrumbsProps['separator'],\n classes?: BreadcrumbsClasses['breadcrumb'],\n lastIndex?: number\n) => {\n return breadcrumbs.map((breadcrumb, index) => {\n const isLast = index === lastIndex\n\n return (\n <div key={breadcrumb.label} className='flex items-center gap-x-1'>\n <Breadcrumb\n breadcrumb={breadcrumb}\n className={cn(classes, {\n 'pointer-events-none text-color-primary-disabled': isLast,\n 'text-color-blue-grey-600': breadcrumb.disabled\n })}\n />\n {index !== breadcrumbs.length - 1 && separator}\n </div>\n )\n })\n}\n\nexport const Breadcrumbs = ({ separator, ellipsis, classes, breadcrumbs = defaultBreadcrumbs }: BreadcrumbsProps) => {\n const [hiddenCrumbsOpen, setHiddenCrumbsOpen] = useState<boolean>(false)\n\n const hiddenCrumbsRef = useRef<HTMLUListElement>(null)\n\n useClickOutside(hiddenCrumbsRef, () => setHiddenCrumbsOpen(false))\n\n // separated crumbs while ellipsis provided\n const { first, middle, last } = useMemo(() => {\n let first: BreadcrumbType[] = []\n let middle: BreadcrumbType[] = []\n let last: BreadcrumbType[] = []\n\n if (ellipsis) {\n first = breadcrumbs.slice(0, ellipsis)\n middle = breadcrumbs.slice(ellipsis, breadcrumbs.length - ellipsis)\n last = breadcrumbs.slice(breadcrumbs.length - ellipsis)\n }\n\n return { first, middle, last }\n }, [breadcrumbs, ellipsis])\n\n const separatedElement = separator ?? <Icon name='arrows/arrowRight' className={cn('size-4', classes?.separator)} />\n\n return (\n <div\n className={cn(\n 'flex max-w-[840px] flex-wrap items-center',\n 'gap-x-2 gap-y-1 py-4 text-color-primary-default',\n classes?.root\n )}\n >\n {ellipsis ? (\n // if ellipsis provided, render hidden breadcrumbs\n <>\n {breadcrumbs.length > ellipsis * 2 + 1 ? (\n // if we have more than ellipsis (visible crumbs) + available hidden crumbs\n // render hidden breadcrumbs\n <>\n {renderBreadcrumbs(first, separatedElement, classes?.breadcrumb)}\n {separatedElement}\n {middle.length > 0 && (\n <>\n <div className='relative'>\n <button onClick={() => setHiddenCrumbsOpen(true)}>...</button>\n <ul\n ref={hiddenCrumbsRef}\n className={cn(\n 'invisible absolute max-h-[264px] overflow-y-auto',\n 'w-[280px] rounded-sm bg-color-white',\n 'customScrollbar-y p-1 opacity-0 shadow-sm',\n {\n 'visible opacity-100': hiddenCrumbsOpen\n }\n )}\n >\n {middle.map((breadcrumb) => (\n <li key={breadcrumb.label}>\n <Breadcrumb\n breadcrumb={breadcrumb}\n className={cn(\n 'desk-body-regular-l inline-block py-3',\n 'w-full rounded-sm bg-color-white px-2',\n 'text-color-dark hover:bg-color-primary-tr-hover',\n classes?.breadcrumb\n )}\n />\n </li>\n ))}\n </ul>\n </div>\n {separatedElement}\n </>\n )}\n {renderBreadcrumbs(last, separatedElement, classes?.breadcrumb, last.length - 1)}\n </>\n ) : (\n // otherwise render all breadcrumbs\n renderBreadcrumbs(breadcrumbs, separatedElement, classes?.breadcrumb, breadcrumbs.length - 1)\n )}\n </>\n ) : (\n // if ellipsis doesn't provided render all breadcrumbs\n renderBreadcrumbs(breadcrumbs, separatedElement, classes?.breadcrumb, breadcrumbs.length - 1)\n )}\n </div>\n )\n}\n"],"names":["renderBreadcrumbs","breadcrumbs","separator","classes","lastIndex","breadcrumb","index","jsxs","jsx","Breadcrumb","cn","Breadcrumbs","ellipsis","defaultBreadcrumbs","hiddenCrumbsOpen","setHiddenCrumbsOpen","useState","hiddenCrumbsRef","useRef","useClickOutside","first","middle","last","useMemo","separatedElement","Icon","Fragment"],"mappings":"4hEAgCA,MAAMA,EAAoB,CACxBC,EACAC,EACAC,EACAC,IAEOH,EAAY,IAAI,CAACI,EAAYC,IAIhCC,EAAC,MAAA,CAA2B,UAAU,4BACpC,SAAA,CAAAC,EAACC,EAAA,CACC,WAAAJ,EACA,UAAWK,EAAGP,EAAS,CACrB,kDAPOG,IAAUF,EAQjB,2BAA4BC,EAAW,QAAA,CACxC,CAAA,CAAA,EAEFC,IAAUL,EAAY,OAAS,GAAKC,CAAA,CAAA,EAR7BG,EAAW,KASrB,CAEH,EAGUM,GAAc,CAAC,CAAE,UAAAT,EAAW,SAAAU,EAAU,QAAAT,EAAS,YAAAF,EAAcY,KAA2C,CACnH,KAAM,CAACC,EAAkBC,CAAmB,EAAIC,EAAkB,EAAK,EAEjEC,EAAkBC,EAAyB,IAAI,EAErDC,EAAgBF,EAAiB,IAAMF,EAAoB,EAAK,CAAC,EAGjE,KAAM,CAAE,MAAAK,EAAO,OAAAC,EAAQ,KAAAC,CAAA,EAASC,EAAQ,IAAM,CAC5C,IAAIH,EAA0B,CAAA,EAC1BC,EAA2B,CAAA,EAC3BC,EAAyB,CAAA,EAE7B,OAAIV,IACFQ,EAAQnB,EAAY,MAAM,EAAGW,CAAQ,EACrCS,EAASpB,EAAY,MAAMW,EAAUX,EAAY,OAASW,CAAQ,EAClEU,EAAOrB,EAAY,MAAMA,EAAY,OAASW,CAAQ,GAGjD,CAAE,MAAAQ,EAAO,OAAAC,EAAQ,KAAAC,CAAAA,CAAK,EAC5B,CAACrB,EAAaW,CAAQ,CAAC,EAEpBY,EAAmBtB,GAAaM,EAACiB,EAAA,CAAK,KAAK,oBAAoB,UAAWf,EAAG,SAAUP,GAAA,YAAAA,EAAS,SAAS,CAAA,CAAG,EAElH,OACEK,EAAC,MAAA,CACC,UAAWE,EACT,4CACA,kDACAP,GAAA,YAAAA,EAAS,IAAA,EAGV,SAAAS,EAECJ,EAAAkB,EAAA,CACG,SAAAzB,EAAY,OAASW,EAAW,EAAI,EAGnCL,EAAAmB,EAAA,CACG,SAAA,CAAA1B,EAAkBoB,EAAOI,EAAkBrB,GAAA,YAAAA,EAAS,UAAU,EAC9DqB,EACAH,EAAO,OAAS,GACfd,EAAAmB,EAAA,CACE,SAAA,CAAAnB,EAAC,MAAA,CAAI,UAAU,WACb,SAAA,CAAAC,EAAC,UAAO,QAAS,IAAMO,EAAoB,EAAI,EAAG,SAAA,MAAG,EACrDP,EAAC,KAAA,CACC,IAAKS,EACL,UAAWP,EACT,mDACA,sCACA,4CACA,CACE,sBAAuBI,CAAA,CACzB,EAGD,SAAAO,EAAO,IAAKhB,KACV,KAAA,CACC,SAAAG,EAACC,EAAA,CACC,WAAAJ,EACA,UAAWK,EACT,wCACA,wCACA,kDACAP,GAAA,YAAAA,EAAS,UAAA,CACX,CAAA,CACF,EATOE,EAAW,KAUpB,CACD,CAAA,CAAA,CACH,EACF,EACCmB,CAAA,EACH,EAEDxB,EAAkBsB,EAAME,EAAkBrB,GAAA,YAAAA,EAAS,WAAYmB,EAAK,OAAS,CAAC,CAAA,CAAA,CACjF,EAGAtB,EAAkBC,EAAauB,EAAkBrB,GAAA,YAAAA,EAAS,WAAYF,EAAY,OAAS,CAAC,CAAA,CAEhG,EAGAD,EAAkBC,EAAauB,EAAkBrB,GAAA,YAAAA,EAAS,WAAYF,EAAY,OAAS,CAAC,CAAA,CAAA,CAIpG"}
1
+ {"version":3,"file":"Breadcrumbs.js","sources":["../../../../lib/widgets/breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { useMemo, useRef, useState } from 'react'\nimport { Breadcrumb } from './Breadcrumb'\nimport { type Breadcrumb as BreadcrumbType, defaultBreadcrumbs, type UseBreadcrumbsOptions } from './hooks'\nimport { useClickOutside } from '$/shared/hooks'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype BreadcrumbsClasses = {\n root?: string\n separator?: string\n breadcrumb?: string\n}\n\ntype BreadcrumbsProps = UseBreadcrumbsOptions & {\n /**\n * произвольный сепаратор, разделяющий элементы\n */\n separator?: React.ReactElement | string\n /**\n * указывает, сколько элементов отображать перед/после сужения\n */\n ellipsis?: number\n /**\n * дополнительные стили компонента\n */\n classes?: BreadcrumbsClasses\n /**\n * Массив хлебных крошек\n */\n breadcrumbs: BreadcrumbType[]\n}\n\nconst renderBreadcrumbs = (\n breadcrumbs: BreadcrumbType[],\n separator: BreadcrumbsProps['separator'],\n classes?: BreadcrumbsClasses['breadcrumb'],\n lastIndex?: number\n) => {\n return breadcrumbs.map((breadcrumb, index) => {\n const isLast = index === lastIndex\n\n return (\n <div key={breadcrumb.label} className='flex items-center gap-x-1'>\n <Breadcrumb\n breadcrumb={breadcrumb}\n className={cn(classes, {\n 'pointer-events-none text-color-primary-disabled': isLast,\n 'text-color-blue-grey-600': breadcrumb.disabled\n })}\n />\n {index !== breadcrumbs.length - 1 && separator}\n </div>\n )\n })\n}\n\nexport const Breadcrumbs = ({ separator, ellipsis, classes, breadcrumbs = defaultBreadcrumbs }: BreadcrumbsProps) => {\n const [hiddenCrumbsOpen, setHiddenCrumbsOpen] = useState<boolean>(false)\n\n const hiddenCrumbsRef = useRef<HTMLUListElement>(null)\n\n useClickOutside(hiddenCrumbsRef, () => setHiddenCrumbsOpen(false))\n\n // separated crumbs while ellipsis provided\n const { first, middle, last } = useMemo(() => {\n let first: BreadcrumbType[] = []\n let middle: BreadcrumbType[] = []\n let last: BreadcrumbType[] = []\n\n if (ellipsis) {\n first = breadcrumbs.slice(0, ellipsis)\n middle = breadcrumbs.slice(ellipsis, breadcrumbs.length - ellipsis)\n last = breadcrumbs.slice(breadcrumbs.length - ellipsis)\n }\n\n return { first, middle, last }\n }, [breadcrumbs, ellipsis])\n\n const separatedElement = separator ?? <Icon name='arrows/arrowRight' className={cn('size-4', classes?.separator)} />\n\n return (\n <div\n className={cn(\n 'flex max-w-[840px] flex-wrap items-center',\n 'gap-x-2 gap-y-1 py-4 text-color-primary-default',\n classes?.root\n )}\n >\n {ellipsis ? (\n // if ellipsis provided, render hidden breadcrumbs\n <>\n {breadcrumbs.length > ellipsis * 2 + 1 ? (\n // if we have more than ellipsis (visible crumbs) + available hidden crumbs\n // render hidden breadcrumbs\n <>\n {renderBreadcrumbs(first, separatedElement, classes?.breadcrumb)}\n {separatedElement}\n {middle.length > 0 && (\n <>\n <div className='relative'>\n <button onClick={() => setHiddenCrumbsOpen(true)}>...</button>\n <ul\n ref={hiddenCrumbsRef}\n className={cn(\n 'invisible absolute max-h-[264px] overflow-y-auto',\n 'w-[280px] rounded-sm bg-color-white',\n 'customScrollbar-y p-1 opacity-0 shadow-sm',\n {\n 'visible opacity-100': hiddenCrumbsOpen\n }\n )}\n >\n {middle.map((breadcrumb) => (\n <li key={breadcrumb.label}>\n <Breadcrumb\n breadcrumb={breadcrumb}\n className={cn(\n 'desk-body-regular-l inline-block py-3',\n 'w-full rounded-sm bg-color-white px-2',\n 'text-color-dark hover:bg-color-primary-tr-hover',\n classes?.breadcrumb\n )}\n />\n </li>\n ))}\n </ul>\n </div>\n {separatedElement}\n </>\n )}\n {renderBreadcrumbs(last, separatedElement, classes?.breadcrumb, last.length - 1)}\n </>\n ) : (\n // otherwise render all breadcrumbs\n renderBreadcrumbs(breadcrumbs, separatedElement, classes?.breadcrumb, breadcrumbs.length - 1)\n )}\n </>\n ) : (\n // if ellipsis doesn't provided render all breadcrumbs\n renderBreadcrumbs(breadcrumbs, separatedElement, classes?.breadcrumb, breadcrumbs.length - 1)\n )}\n </div>\n )\n}\n"],"names":["renderBreadcrumbs","breadcrumbs","separator","classes","lastIndex","breadcrumb","index","jsxs","jsx","Breadcrumb","cn","Breadcrumbs","ellipsis","defaultBreadcrumbs","hiddenCrumbsOpen","setHiddenCrumbsOpen","useState","hiddenCrumbsRef","useRef","useClickOutside","first","middle","last","useMemo","separatedElement","Icon","Fragment"],"mappings":"4hEAgCA,MAAMA,EAAoB,CACxBC,EACAC,EACAC,EACAC,IAEOH,EAAY,IAAI,CAACI,EAAYC,IAIhCC,EAAC,MAAA,CAA2B,UAAU,4BACpC,SAAA,CAAAC,EAACC,EAAA,CACC,WAAAJ,EACA,UAAWK,EAAGP,EAAS,CACrB,kDAPOG,IAAUF,EAQjB,2BAA4BC,EAAW,QAAA,CACxC,CAAA,CAAA,EAEFC,IAAUL,EAAY,OAAS,GAAKC,CAAA,CAAA,EAR7BG,EAAW,KASrB,CAEH,EAGUM,GAAc,CAAC,CAAE,UAAAT,EAAW,SAAAU,EAAU,QAAAT,EAAS,YAAAF,EAAcY,KAA2C,CACnH,KAAM,CAACC,EAAkBC,CAAmB,EAAIC,EAAkB,EAAK,EAEjEC,EAAkBC,EAAyB,IAAI,EAErDC,EAAgBF,EAAiB,IAAMF,EAAoB,EAAK,CAAC,EAGjE,KAAM,CAAE,MAAAK,EAAO,OAAAC,EAAQ,KAAAC,CAAA,EAASC,EAAQ,IAAM,CAC5C,IAAIH,EAA0B,CAAA,EAC1BC,EAA2B,CAAA,EAC3BC,EAAyB,CAAA,EAE7B,OAAIV,IACFQ,EAAQnB,EAAY,MAAM,EAAGW,CAAQ,EACrCS,EAASpB,EAAY,MAAMW,EAAUX,EAAY,OAASW,CAAQ,EAClEU,EAAOrB,EAAY,MAAMA,EAAY,OAASW,CAAQ,GAGjD,CAAE,MAAAQ,EAAO,OAAAC,EAAQ,KAAAC,CAAAA,CAC1B,EAAG,CAACrB,EAAaW,CAAQ,CAAC,EAEpBY,EAAmBtB,GAAaM,EAACiB,EAAA,CAAK,KAAK,oBAAoB,UAAWf,EAAG,SAAUP,GAAA,YAAAA,EAAS,SAAS,CAAA,CAAG,EAElH,OACEK,EAAC,MAAA,CACC,UAAWE,EACT,4CACA,kDACAP,GAAA,YAAAA,EAAS,IAAA,EAGV,SAAAS,EAECJ,EAAAkB,EAAA,CACG,SAAAzB,EAAY,OAASW,EAAW,EAAI,EAGnCL,EAAAmB,EAAA,CACG,SAAA,CAAA1B,EAAkBoB,EAAOI,EAAkBrB,GAAA,YAAAA,EAAS,UAAU,EAC9DqB,EACAH,EAAO,OAAS,GACfd,EAAAmB,EAAA,CACE,SAAA,CAAAnB,EAAC,MAAA,CAAI,UAAU,WACb,SAAA,CAAAC,EAAC,UAAO,QAAS,IAAMO,EAAoB,EAAI,EAAG,SAAA,MAAG,EACrDP,EAAC,KAAA,CACC,IAAKS,EACL,UAAWP,EACT,mDACA,sCACA,4CACA,CACE,sBAAuBI,CAAA,CACzB,EAGD,SAAAO,EAAO,IAAKhB,KACV,KAAA,CACC,SAAAG,EAACC,EAAA,CACC,WAAAJ,EACA,UAAWK,EACT,wCACA,wCACA,kDACAP,GAAA,YAAAA,EAAS,UAAA,CACX,CAAA,CACF,EATOE,EAAW,KAUpB,CACD,CAAA,CAAA,CACH,EACF,EACCmB,CAAA,EACH,EAEDxB,EAAkBsB,EAAME,EAAkBrB,GAAA,YAAAA,EAAS,WAAYmB,EAAK,OAAS,CAAC,CAAA,CAAA,CACjF,EAGAtB,EAAkBC,EAAauB,EAAkBrB,GAAA,YAAAA,EAAS,WAAYF,EAAY,OAAS,CAAC,CAAA,CAEhG,EAGAD,EAAkBC,EAAauB,EAAkBrB,GAAA,YAAAA,EAAS,WAAYF,EAAY,OAAS,CAAC,CAAA,CAAA,CAIpG"}
@@ -1 +1 @@
1
- {"version":3,"file":"useButtonHandler.js","sources":["../../../../../lib/widgets/buttonWithHandlers/model/useButtonHandler.ts"],"sourcesContent":["'use client'\n\nimport { useCallback } from 'react'\nimport type { ButtonHandlerOptions } from './types'\nimport { isClient, scrollToElement } from '$/shared/utils'\n\nexport const useButtonHandler = (handlerOptions: ButtonHandlerOptions) => {\n const handleClick = useCallback(() => {\n switch (handlerOptions.handler) {\n case 'navigate': {\n const { url, target, rel } = handlerOptions\n if (isClient) {\n window?.open(url, target, rel)\n }\n\n break\n }\n case 'scroll': {\n const { widgetId } = handlerOptions ?? ''\n scrollToElement({ widgetId })\n break\n }\n\n case 'dialog': {\n if (!isClient) return\n\n const { dialogId } = handlerOptions ?? {}\n\n const dialog = document.getElementById(dialogId) as HTMLDialogElement | null\n\n if (!dialog) {\n console.error('Такого элемента в DOM не существует', dialogId)\n break\n }\n\n dialog.show()\n }\n }\n }, [handlerOptions])\n\n return handleClick\n}\n"],"names":["useButtonHandler","handlerOptions","useCallback","url","target","rel","isClient","widgetId","scrollToElement","dialogId","dialog"],"mappings":"mMAMO,MAAMA,EAAoBC,GACXC,EAAY,IAAM,CACpC,OAAQD,EAAe,QAAA,CACrB,IAAK,WAAY,CACf,KAAM,CAAE,IAAAE,EAAK,OAAAC,EAAQ,IAAAC,CAAA,EAAQJ,EACzBK,IACF,qBAAQ,KAAKH,EAAKC,EAAQC,IAG5B,KAAA,CAEF,IAAK,SAAU,CACb,KAAM,CAAE,SAAAE,GAAaN,GAAkB,GACvCO,EAAgB,CAAE,SAAAD,EAAU,EAC5B,KAAA,CAGF,IAAK,SAAU,CACb,GAAI,CAACD,EAAU,OAEf,KAAM,CAAE,SAAAG,GAAaR,GAAkB,CAAA,EAEjCS,EAAS,SAAS,eAAeD,CAAQ,EAE/C,GAAI,CAACC,EAAQ,CACX,QAAQ,MAAM,sCAAuCD,CAAQ,EAC7D,KAAA,CAGFC,EAAO,KAAA,CAAK,CACd,CACF,EACC,CAACT,CAAc,CAAC"}
1
+ {"version":3,"file":"useButtonHandler.js","sources":["../../../../../lib/widgets/buttonWithHandlers/model/useButtonHandler.ts"],"sourcesContent":["'use client'\n\nimport { useCallback } from 'react'\nimport type { ButtonHandlerOptions } from './types'\nimport { isClient, scrollToElement } from '$/shared/utils'\n\nexport const useButtonHandler = (handlerOptions: ButtonHandlerOptions) => {\n const handleClick = useCallback(() => {\n switch (handlerOptions.handler) {\n case 'navigate': {\n const { url, target, rel } = handlerOptions\n if (isClient) {\n window?.open(url, target, rel)\n }\n\n break\n }\n case 'scroll': {\n const { widgetId } = handlerOptions ?? ''\n scrollToElement({ widgetId })\n break\n }\n\n case 'dialog': {\n if (!isClient) return\n\n const { dialogId } = handlerOptions ?? {}\n\n const dialog = document.getElementById(dialogId) as HTMLDialogElement | null\n\n if (!dialog) {\n console.error('Такого элемента в DOM не существует', dialogId)\n break\n }\n\n dialog.show()\n }\n }\n }, [handlerOptions])\n\n return handleClick\n}\n"],"names":["useButtonHandler","handlerOptions","useCallback","url","target","rel","isClient","widgetId","scrollToElement","dialogId","dialog"],"mappings":"mMAMO,MAAMA,EAAoBC,GACXC,EAAY,IAAM,CACpC,OAAQD,EAAe,QAAA,CACrB,IAAK,WAAY,CACf,KAAM,CAAE,IAAAE,EAAK,OAAAC,EAAQ,IAAAC,CAAA,EAAQJ,EACzBK,IACF,qBAAQ,KAAKH,EAAKC,EAAQC,IAG5B,KACF,CACA,IAAK,SAAU,CACb,KAAM,CAAE,SAAAE,GAAaN,GAAkB,GACvCO,EAAgB,CAAE,SAAAD,EAAU,EAC5B,KACF,CAEA,IAAK,SAAU,CACb,GAAI,CAACD,EAAU,OAEf,KAAM,CAAE,SAAAG,GAAaR,GAAkB,CAAA,EAEjCS,EAAS,SAAS,eAAeD,CAAQ,EAE/C,GAAI,CAACC,EAAQ,CACX,QAAQ,MAAM,sCAAuCD,CAAQ,EAC7D,KACF,CAEAC,EAAO,KAAA,CACT,CAAA,CAEJ,EAAG,CAACT,CAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CalculatorView.js","sources":["../../../../lib/widgets/calculator/CalculatorView.tsx"],"sourcesContent":["import { useEffect } from 'react'\nimport { type FieldValues, FormProvider } from 'react-hook-form'\nimport { type CalculatorSchema, evaluateFormula, getCalculatorSchema, isFormula } from './model'\nimport {\n CalculatorFields,\n type CalculatorFieldsClasses,\n type CalculatorFieldsProps,\n CalculatorInfo,\n type CalculatorInfoClasses,\n type CalculatorInfoProps,\n type CalculatorTab\n} from './ui'\nimport { useControlledForm } from '$/shared/hooks'\nimport { cn, localStorageActions } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\n\nexport type CalculatorViewClasses = {\n wrapper?: string\n calculatorFields?: CalculatorFieldsClasses\n calculatorInfo?: CalculatorInfoClasses\n}\n\nexport interface CalculatorViewProps<T extends FieldValues = FieldValues> extends CalculatorTab {\n calculatorInfoConfig: CalculatorInfoProps\n calculatorFieldsConfig: CalculatorFieldsProps<T>\n classes?: CalculatorViewClasses\n}\n\nexport const CalculatorView = <T extends FieldValues>({\n calculatorInfoConfig,\n calculatorFieldsConfig,\n classes\n}: CalculatorViewProps<T>) => {\n const calculatorSchema: CalculatorSchema = getCalculatorSchema(calculatorFieldsConfig?.fieldsGroup)\n\n const formMethods = useControlledForm({\n schema: calculatorSchema,\n mode: 'onBlur',\n defaultValues: ZodUtils.getZodDefaults(calculatorSchema)\n })\n\n const watchedFields = formMethods.watch()\n\n const { rootValue } = calculatorInfoConfig\n\n useEffect(() => {\n localStorageActions.setItem('calculatorData', JSON.stringify(watchedFields))\n }, [watchedFields])\n\n const calculatedValue = isFormula(rootValue) ? evaluateFormula(rootValue.formula, watchedFields) : rootValue\n\n const mergedCalcInfoConfig = { ...calculatorInfoConfig, rootValue: calculatedValue }\n\n return (\n <FormProvider {...formMethods}>\n <div className={cn('flex items-start gap-16 mobile:flex-col mobile:items-center mobile:gap-8', classes?.wrapper)}>\n <CalculatorFields {...calculatorFieldsConfig} classes={classes?.calculatorFields} />\n <CalculatorInfo {...mergedCalcInfoConfig} classes={classes?.calculatorInfo} />\n </div>\n </FormProvider>\n )\n}\n"],"names":["CalculatorView","calculatorInfoConfig","calculatorFieldsConfig","classes","calculatorSchema","getCalculatorSchema","formMethods","useControlledForm","ZodUtils","watchedFields","rootValue","useEffect","localStorageActions","calculatedValue","isFormula","evaluateFormula","mergedCalcInfoConfig","jsx","FormProvider","jsxs","cn","CalculatorFields","CalculatorInfo"],"mappings":"kkFA4BO,MAAMA,GAAiB,CAAwB,CACpD,qBAAAC,EACA,uBAAAC,EACA,QAAAC,CACF,IAA8B,CAC5B,MAAMC,EAAqCC,EAAoBH,GAAA,YAAAA,EAAwB,WAAW,EAE5FI,EAAcC,EAAkB,CACpC,OAAQH,EACR,KAAM,SACN,cAAeI,EAAS,eAAeJ,CAAgB,CAAA,CACxD,EAEKK,EAAgBH,EAAY,MAAA,EAE5B,CAAE,UAAAI,GAAcT,EAEtBU,EAAU,IAAM,CACdC,EAAoB,QAAQ,iBAAkB,KAAK,UAAUH,CAAa,CAAC,CAAA,EAC1E,CAACA,CAAa,CAAC,EAElB,MAAMI,EAAkBC,EAAUJ,CAAS,EAAIK,EAAgBL,EAAU,QAASD,CAAa,EAAIC,EAE7FM,EAAuB,CAAE,GAAGf,EAAsB,UAAWY,CAAA,EAEnE,OACEI,EAACC,EAAA,CAAc,GAAGZ,EAChB,SAAAa,EAAC,MAAA,CAAI,UAAWC,EAAG,2EAA4EjB,GAAA,YAAAA,EAAS,OAAO,EAC7G,SAAA,CAAAc,EAACI,EAAA,CAAkB,GAAGnB,EAAwB,QAASC,GAAA,YAAAA,EAAS,iBAAkB,IACjFmB,EAAA,CAAgB,GAAGN,EAAsB,QAASb,GAAA,YAAAA,EAAS,cAAA,CAAgB,CAAA,CAAA,CAC9E,CAAA,CACF,CAEJ"}
1
+ {"version":3,"file":"CalculatorView.js","sources":["../../../../lib/widgets/calculator/CalculatorView.tsx"],"sourcesContent":["import { useEffect } from 'react'\nimport { type FieldValues, FormProvider } from 'react-hook-form'\nimport { type CalculatorSchema, evaluateFormula, getCalculatorSchema, isFormula } from './model'\nimport {\n CalculatorFields,\n type CalculatorFieldsClasses,\n type CalculatorFieldsProps,\n CalculatorInfo,\n type CalculatorInfoClasses,\n type CalculatorInfoProps,\n type CalculatorTab\n} from './ui'\nimport { useControlledForm } from '$/shared/hooks'\nimport { cn, localStorageActions } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\n\nexport type CalculatorViewClasses = {\n wrapper?: string\n calculatorFields?: CalculatorFieldsClasses\n calculatorInfo?: CalculatorInfoClasses\n}\n\nexport interface CalculatorViewProps<T extends FieldValues = FieldValues> extends CalculatorTab {\n calculatorInfoConfig: CalculatorInfoProps\n calculatorFieldsConfig: CalculatorFieldsProps<T>\n classes?: CalculatorViewClasses\n}\n\nexport const CalculatorView = <T extends FieldValues>({\n calculatorInfoConfig,\n calculatorFieldsConfig,\n classes\n}: CalculatorViewProps<T>) => {\n const calculatorSchema: CalculatorSchema = getCalculatorSchema(calculatorFieldsConfig?.fieldsGroup)\n\n const formMethods = useControlledForm({\n schema: calculatorSchema,\n mode: 'onBlur',\n defaultValues: ZodUtils.getZodDefaults(calculatorSchema)\n })\n\n const watchedFields = formMethods.watch()\n\n const { rootValue } = calculatorInfoConfig\n\n useEffect(() => {\n localStorageActions.setItem('calculatorData', JSON.stringify(watchedFields))\n }, [watchedFields])\n\n const calculatedValue = isFormula(rootValue) ? evaluateFormula(rootValue.formula, watchedFields) : rootValue\n\n const mergedCalcInfoConfig = { ...calculatorInfoConfig, rootValue: calculatedValue }\n\n return (\n <FormProvider {...formMethods}>\n <div className={cn('flex items-start gap-16 mobile:flex-col mobile:items-center mobile:gap-8', classes?.wrapper)}>\n <CalculatorFields {...calculatorFieldsConfig} classes={classes?.calculatorFields} />\n <CalculatorInfo {...mergedCalcInfoConfig} classes={classes?.calculatorInfo} />\n </div>\n </FormProvider>\n )\n}\n"],"names":["CalculatorView","calculatorInfoConfig","calculatorFieldsConfig","classes","calculatorSchema","getCalculatorSchema","formMethods","useControlledForm","ZodUtils","watchedFields","rootValue","useEffect","localStorageActions","calculatedValue","isFormula","evaluateFormula","mergedCalcInfoConfig","jsx","FormProvider","jsxs","cn","CalculatorFields","CalculatorInfo"],"mappings":"kkFA4BO,MAAMA,GAAiB,CAAwB,CACpD,qBAAAC,EACA,uBAAAC,EACA,QAAAC,CACF,IAA8B,CAC5B,MAAMC,EAAqCC,EAAoBH,GAAA,YAAAA,EAAwB,WAAW,EAE5FI,EAAcC,EAAkB,CACpC,OAAQH,EACR,KAAM,SACN,cAAeI,EAAS,eAAeJ,CAAgB,CAAA,CACxD,EAEKK,EAAgBH,EAAY,MAAA,EAE5B,CAAE,UAAAI,GAAcT,EAEtBU,EAAU,IAAM,CACdC,EAAoB,QAAQ,iBAAkB,KAAK,UAAUH,CAAa,CAAC,CAC7E,EAAG,CAACA,CAAa,CAAC,EAElB,MAAMI,EAAkBC,EAAUJ,CAAS,EAAIK,EAAgBL,EAAU,QAASD,CAAa,EAAIC,EAE7FM,EAAuB,CAAE,GAAGf,EAAsB,UAAWY,CAAA,EAEnE,OACEI,EAACC,EAAA,CAAc,GAAGZ,EAChB,SAAAa,EAAC,MAAA,CAAI,UAAWC,EAAG,2EAA4EjB,GAAA,YAAAA,EAAS,OAAO,EAC7G,SAAA,CAAAc,EAACI,EAAA,CAAkB,GAAGnB,EAAwB,QAASC,GAAA,YAAAA,EAAS,iBAAkB,IACjFmB,EAAA,CAAgB,GAAGN,EAAsB,QAASb,GAAA,YAAAA,EAAS,cAAA,CAAgB,CAAA,CAAA,CAC9E,CAAA,CACF,CAEJ"}