@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":"RadioGroup.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/radio/RadioGroup.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { type RadioGroupProps as RadioGroupPrimitiveProps, Root } from '@radix-ui/react-radio-group'\nimport { RadioItem, type RadioOption } from './ui'\nimport { type RadioItemClasses } from './ui/RadioItem'\nimport { cn } from '$/shared/utils'\n\ntype RadioGroupClasses = {\n root?: string\n list?: string\n radioItem?: RadioItemClasses\n}\n\ntype ExternalHandlers = {\n onChange?: (value: string) => void\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLButtonElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLButtonElement>) => void\n}\n\nexport type RenderComponentProps = { item: RadioOption; classes?: RadioItemClasses } & Pick<\n RadioGroupBaseProps,\n 'displayValue' | 'returnValue' | 'invalid' | 'disabled'\n>\n\nexport type RadioGroupBaseProps = Omit<RadioGroupPrimitiveProps, 'children'> & {\n /**\n * Список отображаемых опций\n */\n options: RadioOption[]\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: RadioOption) => string\n /**\n * Функция для управления возвращаемым значением\n */\n returnValue?: (option: RadioOption) => string\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: RadioGroupClasses\n /**\n * Свойство для отображения не валидного поля\n */\n invalid?: boolean\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n /**\n * Отрисовка компонента из вне\n */\n renderComponent?: (props: RadioGroupBaseProps) => React.JSX.Element\n}\n\nexport const RadioGroupBase = forwardRef<HTMLDivElement, RadioGroupBaseProps>(\n (\n {\n options,\n displayValue,\n returnValue,\n invalid,\n className,\n disabled,\n classes,\n externalHandlers,\n onValueChange,\n renderComponent,\n ...props\n },\n ref\n ) => {\n const { root, list, radioItem } = classes || {}\n\n const { onChange: externalOnChange, ...restHandlers } = externalHandlers || {}\n\n const onChange = (value: string) => {\n if (onValueChange) onValueChange(value)\n if (externalOnChange) externalOnChange(value)\n }\n\n return (\n <Root\n {...props}\n onValueChange={onChange}\n aria-invalid={invalid}\n disabled={disabled}\n ref={ref}\n className={cn('w-full', className, root)}\n >\n <>\n {renderComponent ? (\n renderComponent({ options, returnValue, displayValue, invalid, disabled })\n ) : (\n <ul className={cn('w-full', list)}>\n {options.map((option, index) => (\n <RadioItem\n {...restHandlers}\n key={option.value}\n data-test-id={`radio-item-${index}`}\n item={option}\n invalid={invalid}\n disabled={disabled || option?.disabled}\n classes={radioItem}\n returnValue={returnValue}\n displayValue={displayValue}\n />\n ))}\n </ul>\n )}\n </>\n </Root>\n )\n }\n)\n"],"names":["RadioGroupBase","forwardRef","options","displayValue","returnValue","invalid","className","disabled","classes","externalHandlers","onValueChange","renderComponent","props","ref","root","list","radioItem","externalOnChange","restHandlers","jsx","Root","value","cn","Fragment","option","index","createElement","RadioItem"],"mappings":"uSAuDO,MAAMA,EAAiBC,EAC5B,CACE,CACE,QAAAC,EACA,aAAAC,EACA,YAAAC,EACA,QAAAC,EACA,UAAAC,EACA,SAAAC,EACA,QAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,gBAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAAE,KAAAC,EAAM,KAAAC,EAAM,UAAAC,CAAA,EAAcR,GAAW,CAAA,EAEvC,CAAE,SAAUS,EAAkB,GAAGC,CAAA,EAAiBT,GAAoB,CAAA,EAO5E,OACEU,EAACC,EAAA,CACE,GAAGR,EACJ,cARcS,GAAkB,CAC9BX,KAA6BW,CAAK,EAClCJ,KAAmCI,CAAK,CAAA,EAO1C,eAAchB,EACd,SAAAE,EACA,IAAAM,EACA,UAAWS,EAAG,SAAUhB,EAAWQ,CAAI,EAEvC,SAAAK,EAAAI,EAAA,CACG,WACCZ,EAAgB,CAAE,QAAAT,EAAS,YAAAE,EAAa,aAAAD,EAAc,QAAAE,EAAS,SAAAE,CAAA,CAAU,IAExE,KAAA,CAAG,UAAWe,EAAG,SAAUP,CAAI,EAC7B,SAAAb,EAAQ,IAAI,CAACsB,EAAQC,IACpBC,EAACC,EAAA,CACE,GAAGT,EACJ,IAAKM,EAAO,MACZ,eAAc,cAAcC,CAAK,GACjC,KAAMD,EACN,QAAAnB,EACA,SAAUE,IAAYiB,GAAA,YAAAA,EAAQ,UAC9B,QAASR,EACT,YAAAZ,EACA,aAAAD,CAAA,CAAA,CAEH,EACH,CAAA,CAEJ,CAAA,CAAA,CACF,CAGN"}
1
+ {"version":3,"file":"RadioGroup.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/radio/RadioGroup.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { type RadioGroupProps as RadioGroupPrimitiveProps, Root } from '@radix-ui/react-radio-group'\nimport { RadioItem, type RadioOption } from './ui'\nimport { type RadioItemClasses } from './ui/RadioItem'\nimport { cn } from '$/shared/utils'\n\ntype RadioGroupClasses = {\n root?: string\n list?: string\n radioItem?: RadioItemClasses\n}\n\ntype ExternalHandlers = {\n onChange?: (value: string) => void\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLButtonElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLButtonElement>) => void\n}\n\nexport type RenderComponentProps = { item: RadioOption; classes?: RadioItemClasses } & Pick<\n RadioGroupBaseProps,\n 'displayValue' | 'returnValue' | 'invalid' | 'disabled'\n>\n\nexport type RadioGroupBaseProps = Omit<RadioGroupPrimitiveProps, 'children'> & {\n /**\n * Список отображаемых опций\n */\n options: RadioOption[]\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: RadioOption) => string\n /**\n * Функция для управления возвращаемым значением\n */\n returnValue?: (option: RadioOption) => string\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: RadioGroupClasses\n /**\n * Свойство для отображения не валидного поля\n */\n invalid?: boolean\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n /**\n * Отрисовка компонента из вне\n */\n renderComponent?: (props: RadioGroupBaseProps) => React.JSX.Element\n}\n\nexport const RadioGroupBase = forwardRef<HTMLDivElement, RadioGroupBaseProps>(\n (\n {\n options,\n displayValue,\n returnValue,\n invalid,\n className,\n disabled,\n classes,\n externalHandlers,\n onValueChange,\n renderComponent,\n ...props\n },\n ref\n ) => {\n const { root, list, radioItem } = classes || {}\n\n const { onChange: externalOnChange, ...restHandlers } = externalHandlers || {}\n\n const onChange = (value: string) => {\n if (onValueChange) onValueChange(value)\n if (externalOnChange) externalOnChange(value)\n }\n\n return (\n <Root\n {...props}\n onValueChange={onChange}\n aria-invalid={invalid}\n disabled={disabled}\n ref={ref}\n className={cn('w-full', className, root)}\n >\n <>\n {renderComponent ? (\n renderComponent({ options, returnValue, displayValue, invalid, disabled })\n ) : (\n <ul className={cn('w-full', list)}>\n {options.map((option, index) => (\n <RadioItem\n {...restHandlers}\n key={option.value}\n data-test-id={`radio-item-${index}`}\n item={option}\n invalid={invalid}\n disabled={disabled || option?.disabled}\n classes={radioItem}\n returnValue={returnValue}\n displayValue={displayValue}\n />\n ))}\n </ul>\n )}\n </>\n </Root>\n )\n }\n)\n"],"names":["RadioGroupBase","forwardRef","options","displayValue","returnValue","invalid","className","disabled","classes","externalHandlers","onValueChange","renderComponent","props","ref","root","list","radioItem","externalOnChange","restHandlers","jsx","Root","value","cn","Fragment","option","index","createElement","RadioItem"],"mappings":"uSAuDO,MAAMA,EAAiBC,EAC5B,CACE,CACE,QAAAC,EACA,aAAAC,EACA,YAAAC,EACA,QAAAC,EACA,UAAAC,EACA,SAAAC,EACA,QAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,gBAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAAE,KAAAC,EAAM,KAAAC,EAAM,UAAAC,CAAA,EAAcR,GAAW,CAAA,EAEvC,CAAE,SAAUS,EAAkB,GAAGC,CAAA,EAAiBT,GAAoB,CAAA,EAO5E,OACEU,EAACC,EAAA,CACE,GAAGR,EACJ,cARcS,GAAkB,CAC9BX,KAA6BW,CAAK,EAClCJ,KAAmCI,CAAK,CAC9C,EAMI,eAAchB,EACd,SAAAE,EACA,IAAAM,EACA,UAAWS,EAAG,SAAUhB,EAAWQ,CAAI,EAEvC,SAAAK,EAAAI,EAAA,CACG,WACCZ,EAAgB,CAAE,QAAAT,EAAS,YAAAE,EAAa,aAAAD,EAAc,QAAAE,EAAS,SAAAE,CAAA,CAAU,IAExE,KAAA,CAAG,UAAWe,EAAG,SAAUP,CAAI,EAC7B,SAAAb,EAAQ,IAAI,CAACsB,EAAQC,IACpBC,EAACC,EAAA,CACE,GAAGT,EACJ,IAAKM,EAAO,MACZ,eAAc,cAAcC,CAAK,GACjC,KAAMD,EACN,QAAAnB,EACA,SAAUE,IAAYiB,GAAA,YAAAA,EAAQ,UAC9B,QAASR,EACT,YAAAZ,EACA,aAAAD,CAAA,CAAA,CAEH,EACH,CAAA,CAEJ,CAAA,CAAA,CAGN,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"RadioItem.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItem.tsx"],"sourcesContent":["import { memo, useId } from 'react'\nimport { Indicator, Item, type RadioGroupItemProps } from '@radix-ui/react-radio-group'\nimport { AdditionalContent, type AdditionalContentClasses, type AdditionalContentProps } from './AdditionalContent'\nimport { cn } from '$/shared/utils'\n\nexport type RadioOption = {\n id: number | string\n value: string\n label: string\n disabled?: boolean\n additionalContent?: AdditionalContentProps\n}\n\nexport type RadioItemClasses = {\n root?: string\n item?: string\n indicator?: string\n label?: string\n additionalContent?: AdditionalContentClasses\n}\n\nexport type RadioItemProps = Omit<RadioGroupItemProps, 'value'> & {\n /**\n * Опция списка\n */\n item: RadioOption\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: RadioOption) => string\n /**\n * Функция для управления возвращаемым значением\n */\n returnValue?: (option: RadioOption) => string\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: RadioItemClasses\n /**\n * Свойство для отображения не валидного поля\n */\n invalid?: boolean\n}\n\nexport const RadioItem = memo(\n ({ item, disabled, displayValue, returnValue, classes, className, invalid, ...props }: RadioItemProps) => {\n const label = displayValue ? displayValue(item) : item.label\n const value = returnValue ? returnValue(item) : item.value\n\n const id = useId()\n\n return (\n <Item {...props} asChild disabled={disabled} value={value} id={id}>\n <li\n className={cn(\n 'group flex items-center gap-x-3',\n 'w-full min-w-[200px] [&:not(:last-child)]:mb-4',\n '[&:not(:disabled)]:cursor-pointer',\n {\n 'pointer-events-none text-color-disabled': disabled\n },\n className,\n classes?.root\n )}\n >\n <div\n className={cn(\n 'after:left-1/2 after:top-1/2 after:h-10 after:w-10',\n 'after:-translate-x-1/2 after:-translate-y-1/2 after:content-[\"\"]',\n 'after:absolute after:rounded-full [&:not(:disabled)]:hover:after:bg-color-primary-tr-hover',\n 'after:duration-100 [&:not(:disabled)]:active:after:bg-color-primary-tr-pressed',\n 'after:-z-10 [&:not(:disabled)]:focus:after:bg-color-primary-tr-focus',\n 'relative h-6 w-6 rounded-full border-2 border-blue-grey-700',\n 'group-data-[state=checked]:border-primary-default',\n {\n 'border-negative': invalid,\n 'group-data-[state=unchecked]:border-0 group-data-[state=checked]:border-primary-disabled group-data-[state=unchecked]:bg-color-blue-grey-300':\n disabled\n },\n classes?.item\n )}\n >\n <Indicator\n className={cn(\n 'absolute left-1/2 top-1/2 h-3 w-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-color-primary-default',\n 'group-disabled:group-data-[state=checked]:bg-color-negative',\n {\n 'group-data-[state=checked]:bg-color-primary-disabled': disabled\n },\n classes?.indicator\n )}\n />\n </div>\n <label\n htmlFor={id}\n className={cn(\n 'desk-body-regular-l capitalize text-color-dark',\n {\n 'text-color-disabled': disabled\n },\n classes?.label\n )}\n >\n {label}\n </label>\n {item?.additionalContent && (\n <AdditionalContent disabled={disabled} {...item?.additionalContent} classes={classes?.additionalContent} />\n )}\n </li>\n </Item>\n )\n }\n)\n"],"names":["RadioItem","memo","item","disabled","displayValue","returnValue","classes","className","invalid","props","label","value","id","useId","jsx","Item","jsxs","cn","Indicator","AdditionalContent"],"mappings":"uTA4CO,MAAMA,EAAYC,EACvB,CAAC,CAAE,KAAAC,EAAM,SAAAC,EAAU,aAAAC,EAAc,YAAAC,EAAa,QAAAC,EAAS,UAAAC,EAAW,QAAAC,EAAS,GAAGC,KAA4B,CACxG,MAAMC,EAAQN,EAAeA,EAAaF,CAAI,EAAIA,EAAK,MACjDS,EAAQN,EAAcA,EAAYH,CAAI,EAAIA,EAAK,MAE/CU,EAAKC,EAAA,EAEX,OACEC,EAACC,GAAM,GAAGN,EAAO,QAAO,GAAC,SAAAN,EAAoB,MAAAQ,EAAc,GAAAC,EACzD,SAAAI,EAAC,KAAA,CACC,UAAWC,EACT,kCACA,iDACA,oCACA,CACE,0CAA2Cd,CAAA,EAE7CI,EACAD,GAAA,YAAAA,EAAS,IAAA,EAGX,SAAA,CAAAQ,EAAC,MAAA,CACC,UAAWG,EACT,qDACA,mEACA,6FACA,iFACA,uEACA,8DACA,oDACA,CACE,kBAAmBT,EACnB,+IACEL,CAAA,EAEJG,GAAA,YAAAA,EAAS,IAAA,EAGX,SAAAQ,EAACI,EAAA,CACC,UAAWD,EACT,4GACA,8DACA,CACE,uDAAwDd,CAAA,EAE1DG,GAAA,YAAAA,EAAS,SAAA,CACX,CAAA,CACF,CAAA,EAEFQ,EAAC,QAAA,CACC,QAASF,EACT,UAAWK,EACT,iDACA,CACE,sBAAuBd,CAAA,EAEzBG,GAAA,YAAAA,EAAS,KAAA,EAGV,SAAAI,CAAA,CAAA,GAEFR,GAAA,YAAAA,EAAM,oBACLY,EAACK,EAAA,CAAkB,SAAAhB,EAAqB,GAAGD,GAAA,YAAAA,EAAM,kBAAmB,QAASI,GAAA,YAAAA,EAAS,iBAAA,CAAmB,CAAA,CAAA,CAAA,EAG/G,CAAA,CAGN"}
1
+ {"version":3,"file":"RadioItem.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItem.tsx"],"sourcesContent":["import { memo, useId } from 'react'\nimport { Indicator, Item, type RadioGroupItemProps } from '@radix-ui/react-radio-group'\nimport { AdditionalContent, type AdditionalContentClasses, type AdditionalContentProps } from './AdditionalContent'\nimport { cn } from '$/shared/utils'\n\nexport type RadioOption = {\n id: number | string\n value: string\n label: string\n disabled?: boolean\n additionalContent?: AdditionalContentProps\n}\n\nexport type RadioItemClasses = {\n root?: string\n item?: string\n indicator?: string\n label?: string\n additionalContent?: AdditionalContentClasses\n}\n\nexport type RadioItemProps = Omit<RadioGroupItemProps, 'value'> & {\n /**\n * Опция списка\n */\n item: RadioOption\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: RadioOption) => string\n /**\n * Функция для управления возвращаемым значением\n */\n returnValue?: (option: RadioOption) => string\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: RadioItemClasses\n /**\n * Свойство для отображения не валидного поля\n */\n invalid?: boolean\n}\n\nexport const RadioItem = memo(\n ({ item, disabled, displayValue, returnValue, classes, className, invalid, ...props }: RadioItemProps) => {\n const label = displayValue ? displayValue(item) : item.label\n const value = returnValue ? returnValue(item) : item.value\n\n const id = useId()\n\n return (\n <Item {...props} asChild disabled={disabled} value={value} id={id}>\n <li\n className={cn(\n 'group flex items-center gap-x-3',\n 'w-full min-w-[200px] [&:not(:last-child)]:mb-4',\n '[&:not(:disabled)]:cursor-pointer',\n {\n 'pointer-events-none text-color-disabled': disabled\n },\n className,\n classes?.root\n )}\n >\n <div\n className={cn(\n 'after:left-1/2 after:top-1/2 after:h-10 after:w-10',\n 'after:-translate-x-1/2 after:-translate-y-1/2 after:content-[\"\"]',\n 'after:absolute after:rounded-full [&:not(:disabled)]:hover:after:bg-color-primary-tr-hover',\n 'after:duration-100 [&:not(:disabled)]:active:after:bg-color-primary-tr-pressed',\n 'after:-z-10 [&:not(:disabled)]:focus:after:bg-color-primary-tr-focus',\n 'relative h-6 w-6 rounded-full border-2 border-blue-grey-700',\n 'group-data-[state=checked]:border-primary-default',\n {\n 'border-negative': invalid,\n 'group-data-[state=unchecked]:border-0 group-data-[state=checked]:border-primary-disabled group-data-[state=unchecked]:bg-color-blue-grey-300':\n disabled\n },\n classes?.item\n )}\n >\n <Indicator\n className={cn(\n 'absolute left-1/2 top-1/2 h-3 w-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-color-primary-default',\n 'group-disabled:group-data-[state=checked]:bg-color-negative',\n {\n 'group-data-[state=checked]:bg-color-primary-disabled': disabled\n },\n classes?.indicator\n )}\n />\n </div>\n <label\n htmlFor={id}\n className={cn(\n 'desk-body-regular-l capitalize text-color-dark',\n {\n 'text-color-disabled': disabled\n },\n classes?.label\n )}\n >\n {label}\n </label>\n {item?.additionalContent && (\n <AdditionalContent disabled={disabled} {...item?.additionalContent} classes={classes?.additionalContent} />\n )}\n </li>\n </Item>\n )\n }\n)\n"],"names":["RadioItem","memo","item","disabled","displayValue","returnValue","classes","className","invalid","props","label","value","id","useId","jsx","Item","jsxs","cn","Indicator","AdditionalContent"],"mappings":"uTA4CO,MAAMA,EAAYC,EACvB,CAAC,CAAE,KAAAC,EAAM,SAAAC,EAAU,aAAAC,EAAc,YAAAC,EAAa,QAAAC,EAAS,UAAAC,EAAW,QAAAC,EAAS,GAAGC,KAA4B,CACxG,MAAMC,EAAQN,EAAeA,EAAaF,CAAI,EAAIA,EAAK,MACjDS,EAAQN,EAAcA,EAAYH,CAAI,EAAIA,EAAK,MAE/CU,EAAKC,EAAA,EAEX,OACEC,EAACC,GAAM,GAAGN,EAAO,QAAO,GAAC,SAAAN,EAAoB,MAAAQ,EAAc,GAAAC,EACzD,SAAAI,EAAC,KAAA,CACC,UAAWC,EACT,kCACA,iDACA,oCACA,CACE,0CAA2Cd,CAAA,EAE7CI,EACAD,GAAA,YAAAA,EAAS,IAAA,EAGX,SAAA,CAAAQ,EAAC,MAAA,CACC,UAAWG,EACT,qDACA,mEACA,6FACA,iFACA,uEACA,8DACA,oDACA,CACE,kBAAmBT,EACnB,+IACEL,CAAA,EAEJG,GAAA,YAAAA,EAAS,IAAA,EAGX,SAAAQ,EAACI,EAAA,CACC,UAAWD,EACT,4GACA,8DACA,CACE,uDAAwDd,CAAA,EAE1DG,GAAA,YAAAA,EAAS,SAAA,CACX,CAAA,CACF,CAAA,EAEFQ,EAAC,QAAA,CACC,QAASF,EACT,UAAWK,EACT,iDACA,CACE,sBAAuBd,CAAA,EAEzBG,GAAA,YAAAA,EAAS,KAAA,EAGV,SAAAI,CAAA,CAAA,GAEFR,GAAA,YAAAA,EAAM,oBACLY,EAACK,EAAA,CAAkB,SAAAhB,EAAqB,GAAGD,GAAA,YAAAA,EAAM,kBAAmB,QAASI,GAAA,YAAAA,EAAS,iBAAA,CAAmB,CAAA,CAAA,CAAA,EAG/G,CAEJ,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/select/Select.tsx"],"sourcesContent":["import { forwardRef, useRef } from 'react'\nimport { autoUpdate, flip, offset, useFloating } from '@floating-ui/react'\nimport { Combobox, ComboboxButton, ComboboxInput, ComboboxOptions, type ComboboxProps } from '@headlessui/react'\nimport { useSelectController } from './hooks'\nimport { type SelectItemOption } from './model'\nimport { SelectItem, type SelectItemProps } from './ui'\nimport { type DeepPartial } from '$/shared/types'\nimport { Icon, InputBase } from '$/shared/ui'\nimport type { FieldAttachment } from '$/shared/ui/formElements/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\ntype FieldAttachmentProps = React.ComponentPropsWithoutRef<typeof FieldAttachment>\n\nexport type SelectClasses = SelectItemProps['classes'] & {\n root?: string\n list?: string\n}\n\nexport type ExternalHandlers = {\n onChange?: (value?: SelectItemOption | SelectItemOption[]) => void\n onClick?: (event: React.MouseEvent<HTMLElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLElement>) => void\n onInputChange?: (value: string) => void\n}\n\nexport type SelectBaseProps<Multi extends boolean> = Omit<\n ComboboxProps<SelectItemOption, Multi, 'li'>,\n 'multiple' | 'onChange' | 'by' | 'className' | 'virtual'\n> & {\n /**\n * Отображаемый лейбл\n */\n label: string\n /**\n * Поддержка множественного выбора\n */\n isMulti?: Multi\n /**\n * Пометить поле как не валидное\n */\n invalid?: boolean\n /**\n * Свойство управляющее поиском\n */\n isSearchable?: boolean\n /**\n * Список отображаемых значений\n */\n options: SelectItemOption[]\n /**\n * Дополнительные стили каждого внутреннего элемента\n */\n classes?: SelectClasses\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: SelectItemOption) => string\n /**\n * Функция для изменения значения\n */\n onChange?: (value: (Multi extends true ? SelectItemOption[] : SelectItemOption) | undefined) => void\n /**\n * Функция для изменения значения поиска\n */\n onInputChange?: (value: string) => void\n /**\n * Значение инпута\n */\n inputValue?: string\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<FieldAttachmentProps>\n /**\n * Включение виртуализации списка\n */\n virtual?: boolean\n /**\n * Свойство для выключения фильтрации по поиску\n */\n filterDisabled?: boolean\n /**\n * Внешние handlers которые можно прокинуть из вне\n */\n externalHandlers?: ExternalHandlers\n /**\n * Кастомизация отображения текста при пустом списке\n */\n emptyList?: (query?: string) => React.ReactNode\n /**\n * Добавляет option который, позволяет очистить значение селекта\n */\n reset?: string\n}\n\nconst LIST_OFFSET = 4\n\nexport const SelectBase = forwardRef<HTMLInputElement, SelectBaseProps<boolean>>(\n (\n {\n label,\n invalid,\n isMulti = false,\n isSearchable,\n options: initialOptions,\n classes,\n displayValue,\n value,\n onChange,\n attachmentProps,\n virtual = false,\n filterDisabled = false,\n inputValue: externalInputValue,\n onInputChange: externalOnInputChange,\n externalHandlers,\n disabled,\n emptyList,\n reset,\n ...props\n },\n ref\n ) => {\n const { root, list, ...innerClasses } = classes || {}\n\n const { refs, floatingStyles } = useFloating({\n placement: 'bottom-start',\n strategy: 'absolute',\n middleware: [\n flip({\n boundary: 'clippingAncestors',\n crossAxis: false\n }),\n offset(LIST_OFFSET)\n ],\n whileElementsMounted: autoUpdate\n })\n\n const triggerRef = useRef<HTMLDivElement>(null)\n\n const { options, inputValue, onValueChange, onInputValueChange, selectDisplayValue } = useSelectController({\n options: initialOptions,\n isSearchable,\n isMulti,\n displayValue,\n onChange,\n filterDisabled,\n externalInputValue,\n externalOnInputChange,\n externalHandlers\n })\n\n return (\n <Combobox\n {...props}\n virtual={\n virtual\n ? {\n options\n }\n : undefined\n }\n // @ts-expect-error headless ui issue\n by='value'\n onBlur={externalHandlers?.onBlur}\n onFocus={externalHandlers?.onFocus}\n onClick={externalHandlers?.onClick}\n value={(value ? value : isMulti ? [] : '') as typeof value}\n onChange={onValueChange}\n multiple={isMulti}\n // immediate\n disabled={disabled}\n aria-invalid={invalid}\n >\n {({ disabled, open, value }) => {\n const getDisplayValue = () => {\n if (isMulti && isSearchable) {\n return selectDisplayValue(value)\n } else if (isSearchable) {\n return inputValue\n } else {\n return selectDisplayValue(value)\n }\n }\n\n return (\n <div ref={triggerRef} className={cn('relative w-full', root)}>\n <ComboboxButton className='w-full'>\n <ComboboxInput\n // @ts-expect-error asdf\n ref={mergeRefs(ref, refs.setReference)}\n data-test-id='select-input'\n as={InputBase}\n label={label}\n disabled={disabled}\n readOnly={!isSearchable}\n value={externalInputValue || getDisplayValue()}\n autoComplete='off'\n onKeyDown={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopPropagation()\n }}\n onChange={(event) => {\n const { value } = event.target\n\n if (isSearchable) {\n if (externalOnInputChange) externalOnInputChange(value)\n if (externalHandlers?.onInputChange) externalHandlers.onInputChange(value)\n if (onInputValueChange) onInputValueChange(event)\n }\n }}\n invalid={invalid}\n classes={{\n input: isMulti || !isSearchable ? 'cursor-pointer' : undefined\n }}\n // TODO: think about it\n // renderValues={\n // isMulti\n // ? (ref) => (\n // <ChipList\n // ref={ref}\n // values={value}\n // onDeleteItem={(option) => onDeleteItem(value, option)}\n // inputValue={inputValue}\n // onInputValueChange={onInputValueChange}\n // />\n // )\n // : undefined\n // }\n attachmentProps={{\n icon: (\n <ComboboxButton as='span'>\n <Icon\n name='arrows/arrowRight'\n className={cn('size-6 rotate-90 text-color-blue-grey-600 duration-100', {\n '-rotate-90': open\n })}\n />\n </ComboboxButton>\n ),\n ...attachmentProps\n }}\n />\n </ComboboxButton>\n <ComboboxOptions\n portal\n data-test-id='select-list'\n ref={refs.setFloating}\n as='ul'\n style={{\n ...floatingStyles,\n width: triggerRef.current?.getBoundingClientRect().width\n }}\n className={cn(\n 'customScrollbar-y z-10 mt-1',\n 'max-h-[264px] w-full overflow-y-auto bg-color-white',\n 'rounded-md p-1 shadow-[0_8px_20px_0px_rgba(41,41,41,0.08)]',\n list\n )}\n >\n {virtual ? (\n ({ option }) => (\n <SelectItem\n key={option.value}\n option={option}\n isMulti={isMulti}\n classes={{\n item: 'w-[calc(100%-16px)]',\n ...innerClasses\n }}\n displayValue={displayValue}\n motionProps={{\n initial: { opacity: 0 },\n animate: { opacity: 1 }\n }}\n />\n )\n ) : options.length > 0 ? (\n <>\n {reset && !isMulti && (\n <SelectItem\n data-test-id='select-item-empty'\n option={{ value: null, label: reset }}\n isMulti={isMulti}\n classes={innerClasses}\n displayValue={displayValue}\n motionProps={{\n initial: { opacity: 0 },\n animate: { opacity: 1 }\n }}\n />\n )}\n {options.map((option, index) => (\n <SelectItem\n data-test-id={`select-item-${index}`}\n key={option.value}\n option={option}\n isMulti={isMulti}\n classes={innerClasses}\n displayValue={displayValue}\n motionProps={{\n initial: { opacity: 0 },\n animate: { opacity: 1 }\n }}\n />\n ))}\n </>\n ) : emptyList ? (\n emptyList(externalInputValue || inputValue)\n ) : (\n <p className='py-4 text-center align-middle'>Ничего не найдено</p>\n )}\n </ComboboxOptions>\n </div>\n )\n }}\n </Combobox>\n )\n }\n)\n"],"names":["LIST_OFFSET","SelectBase","forwardRef","label","invalid","isMulti","isSearchable","initialOptions","classes","displayValue","value","onChange","attachmentProps","virtual","filterDisabled","externalInputValue","externalOnInputChange","externalHandlers","disabled","emptyList","reset","props","ref","root","list","innerClasses","refs","floatingStyles","useFloating","flip","offset","autoUpdate","triggerRef","useRef","options","inputValue","onValueChange","onInputValueChange","selectDisplayValue","useSelectController","jsx","Combobox","open","getDisplayValue","jsxs","cn","ComboboxButton","ComboboxInput","mergeRefs","InputBase","event","Icon","ComboboxOptions","_a","option","SelectItem","Fragment","index"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/select/Select.tsx"],"sourcesContent":["import { forwardRef, useRef } from 'react'\nimport { autoUpdate, flip, offset, useFloating } from '@floating-ui/react'\nimport { Combobox, ComboboxButton, ComboboxInput, ComboboxOptions, type ComboboxProps } from '@headlessui/react'\nimport { useSelectController } from './hooks'\nimport { type SelectItemOption } from './model'\nimport { SelectItem, type SelectItemProps } from './ui'\nimport { type DeepPartial } from '$/shared/types'\nimport { Icon, InputBase } from '$/shared/ui'\nimport type { FieldAttachment } from '$/shared/ui/formElements/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\ntype FieldAttachmentProps = React.ComponentPropsWithoutRef<typeof FieldAttachment>\n\nexport type SelectClasses = SelectItemProps['classes'] & {\n root?: string\n list?: string\n}\n\nexport type ExternalHandlers = {\n onChange?: (value?: SelectItemOption | SelectItemOption[]) => void\n onClick?: (event: React.MouseEvent<HTMLElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLElement>) => void\n onInputChange?: (value: string) => void\n}\n\nexport type SelectBaseProps<Multi extends boolean> = Omit<\n ComboboxProps<SelectItemOption, Multi, 'li'>,\n 'multiple' | 'onChange' | 'by' | 'className' | 'virtual'\n> & {\n /**\n * Отображаемый лейбл\n */\n label: string\n /**\n * Поддержка множественного выбора\n */\n isMulti?: Multi\n /**\n * Пометить поле как не валидное\n */\n invalid?: boolean\n /**\n * Свойство управляющее поиском\n */\n isSearchable?: boolean\n /**\n * Список отображаемых значений\n */\n options: SelectItemOption[]\n /**\n * Дополнительные стили каждого внутреннего элемента\n */\n classes?: SelectClasses\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: SelectItemOption) => string\n /**\n * Функция для изменения значения\n */\n onChange?: (value: (Multi extends true ? SelectItemOption[] : SelectItemOption) | undefined) => void\n /**\n * Функция для изменения значения поиска\n */\n onInputChange?: (value: string) => void\n /**\n * Значение инпута\n */\n inputValue?: string\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<FieldAttachmentProps>\n /**\n * Включение виртуализации списка\n */\n virtual?: boolean\n /**\n * Свойство для выключения фильтрации по поиску\n */\n filterDisabled?: boolean\n /**\n * Внешние handlers которые можно прокинуть из вне\n */\n externalHandlers?: ExternalHandlers\n /**\n * Кастомизация отображения текста при пустом списке\n */\n emptyList?: (query?: string) => React.ReactNode\n /**\n * Добавляет option который, позволяет очистить значение селекта\n */\n reset?: string\n}\n\nconst LIST_OFFSET = 4\n\nexport const SelectBase = forwardRef<HTMLInputElement, SelectBaseProps<boolean>>(\n (\n {\n label,\n invalid,\n isMulti = false,\n isSearchable,\n options: initialOptions,\n classes,\n displayValue,\n value,\n onChange,\n attachmentProps,\n virtual = false,\n filterDisabled = false,\n inputValue: externalInputValue,\n onInputChange: externalOnInputChange,\n externalHandlers,\n disabled,\n emptyList,\n reset,\n ...props\n },\n ref\n ) => {\n const { root, list, ...innerClasses } = classes || {}\n\n const { refs, floatingStyles } = useFloating({\n placement: 'bottom-start',\n strategy: 'absolute',\n middleware: [\n flip({\n boundary: 'clippingAncestors',\n crossAxis: false\n }),\n offset(LIST_OFFSET)\n ],\n whileElementsMounted: autoUpdate\n })\n\n const triggerRef = useRef<HTMLDivElement>(null)\n\n const { options, inputValue, onValueChange, onInputValueChange, selectDisplayValue } = useSelectController({\n options: initialOptions,\n isSearchable,\n isMulti,\n displayValue,\n onChange,\n filterDisabled,\n externalInputValue,\n externalOnInputChange,\n externalHandlers\n })\n\n return (\n <Combobox\n {...props}\n virtual={\n virtual\n ? {\n options\n }\n : undefined\n }\n // @ts-expect-error headless ui issue\n by='value'\n onBlur={externalHandlers?.onBlur}\n onFocus={externalHandlers?.onFocus}\n onClick={externalHandlers?.onClick}\n value={(value ? value : isMulti ? [] : '') as typeof value}\n onChange={onValueChange}\n multiple={isMulti}\n // immediate\n disabled={disabled}\n aria-invalid={invalid}\n >\n {({ disabled, open, value }) => {\n const getDisplayValue = () => {\n if (isMulti && isSearchable) {\n return selectDisplayValue(value)\n } else if (isSearchable) {\n return inputValue\n } else {\n return selectDisplayValue(value)\n }\n }\n\n return (\n <div ref={triggerRef} className={cn('relative w-full', root)}>\n <ComboboxButton className='w-full'>\n <ComboboxInput\n // @ts-expect-error asdf\n ref={mergeRefs(ref, refs.setReference)}\n data-test-id='select-input'\n as={InputBase}\n label={label}\n disabled={disabled}\n readOnly={!isSearchable}\n value={externalInputValue || getDisplayValue()}\n autoComplete='off'\n onKeyDown={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopPropagation()\n }}\n onChange={(event) => {\n const { value } = event.target\n\n if (isSearchable) {\n if (externalOnInputChange) externalOnInputChange(value)\n if (externalHandlers?.onInputChange) externalHandlers.onInputChange(value)\n if (onInputValueChange) onInputValueChange(event)\n }\n }}\n invalid={invalid}\n classes={{\n input: isMulti || !isSearchable ? 'cursor-pointer' : undefined\n }}\n // TODO: think about it\n // renderValues={\n // isMulti\n // ? (ref) => (\n // <ChipList\n // ref={ref}\n // values={value}\n // onDeleteItem={(option) => onDeleteItem(value, option)}\n // inputValue={inputValue}\n // onInputValueChange={onInputValueChange}\n // />\n // )\n // : undefined\n // }\n attachmentProps={{\n icon: (\n <ComboboxButton as='span'>\n <Icon\n name='arrows/arrowRight'\n className={cn('size-6 rotate-90 text-color-blue-grey-600 duration-100', {\n '-rotate-90': open\n })}\n />\n </ComboboxButton>\n ),\n ...attachmentProps\n }}\n />\n </ComboboxButton>\n <ComboboxOptions\n portal\n data-test-id='select-list'\n ref={refs.setFloating}\n as='ul'\n style={{\n ...floatingStyles,\n width: triggerRef.current?.getBoundingClientRect().width\n }}\n className={cn(\n 'customScrollbar-y z-10 mt-1',\n 'max-h-[264px] w-full overflow-y-auto bg-color-white',\n 'rounded-md p-1 shadow-[0_8px_20px_0px_rgba(41,41,41,0.08)]',\n list\n )}\n >\n {virtual ? (\n ({ option }) => (\n <SelectItem\n key={option.value}\n option={option}\n isMulti={isMulti}\n classes={{\n item: 'w-[calc(100%-16px)]',\n ...innerClasses\n }}\n displayValue={displayValue}\n motionProps={{\n initial: { opacity: 0 },\n animate: { opacity: 1 }\n }}\n />\n )\n ) : options.length > 0 ? (\n <>\n {reset && !isMulti && (\n <SelectItem\n data-test-id='select-item-empty'\n option={{ value: null, label: reset }}\n isMulti={isMulti}\n classes={innerClasses}\n displayValue={displayValue}\n motionProps={{\n initial: { opacity: 0 },\n animate: { opacity: 1 }\n }}\n />\n )}\n {options.map((option, index) => (\n <SelectItem\n data-test-id={`select-item-${index}`}\n key={option.value}\n option={option}\n isMulti={isMulti}\n classes={innerClasses}\n displayValue={displayValue}\n motionProps={{\n initial: { opacity: 0 },\n animate: { opacity: 1 }\n }}\n />\n ))}\n </>\n ) : emptyList ? (\n emptyList(externalInputValue || inputValue)\n ) : (\n <p className='py-4 text-center align-middle'>Ничего не найдено</p>\n )}\n </ComboboxOptions>\n </div>\n )\n }}\n </Combobox>\n )\n }\n)\n"],"names":["LIST_OFFSET","SelectBase","forwardRef","label","invalid","isMulti","isSearchable","initialOptions","classes","displayValue","value","onChange","attachmentProps","virtual","filterDisabled","externalInputValue","externalOnInputChange","externalHandlers","disabled","emptyList","reset","props","ref","root","list","innerClasses","refs","floatingStyles","useFloating","flip","offset","autoUpdate","triggerRef","useRef","options","inputValue","onValueChange","onInputValueChange","selectDisplayValue","useSelectController","jsx","Combobox","open","getDisplayValue","jsxs","cn","ComboboxButton","ComboboxInput","mergeRefs","InputBase","event","Icon","ComboboxOptions","_a","option","SelectItem","Fragment","index"],"mappings":"k5DAgGA,MAAMA,GAAc,EAEPC,GAAaC,EACxB,CACE,CACE,MAAAC,EACA,QAAAC,EACA,QAAAC,EAAU,GACV,aAAAC,EACA,QAASC,EACT,QAAAC,EACA,aAAAC,EACA,MAAAC,EACA,SAAAC,EACA,gBAAAC,EACA,QAAAC,EAAU,GACV,eAAAC,EAAiB,GACjB,WAAYC,EACZ,cAAeC,EACf,iBAAAC,EACA,SAAAC,EACA,UAAAC,EACA,MAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAAE,KAAAC,EAAM,KAAAC,EAAM,GAAGC,CAAA,EAAiBjB,GAAW,CAAA,EAE7C,CAAE,KAAAkB,EAAM,eAAAC,CAAA,EAAmBC,EAAY,CAC3C,UAAW,eACX,SAAU,WACV,WAAY,CACVC,GAAK,CACH,SAAU,oBACV,UAAW,EAAA,CACZ,EACDC,GAAO9B,EAAW,CAAA,EAEpB,qBAAsB+B,EAAA,CACvB,EAEKC,EAAaC,EAAuB,IAAI,EAExC,CAAE,QAAAC,EAAS,WAAAC,EAAY,cAAAC,EAAe,mBAAAC,EAAoB,mBAAAC,CAAA,EAAuBC,EAAoB,CACzG,QAAShC,EACT,aAAAD,EAEA,aAAAG,EACA,SAAAE,EACA,eAAAG,EACA,mBAAAC,EACA,sBAAAC,EACA,iBAAAC,CAAA,CACD,EAED,OACEuB,EAACC,EAAA,CACE,GAAGpB,EACJ,QACER,EACI,CACE,QAAAqB,CAAA,EAEF,OAGN,GAAG,QACH,OAAQjB,GAAA,YAAAA,EAAkB,OAC1B,QAASA,GAAA,YAAAA,EAAkB,QAC3B,QAASA,GAAA,YAAAA,EAAkB,QAC3B,MAAQP,IAAgBL,EAAU,CAAA,EAAK,IACvC,SAAU+B,EACV,SAAU/B,EAEV,SAAAa,EACA,eAAcd,EAEb,UAAC,CAAE,SAAAc,EAAU,KAAAwB,EAAM,MAAAhC,KAAY,OAC9B,MAAMiC,EAAkB,IAClBtC,GAAWC,EACNgC,EAAmB5B,CAAK,EACtBJ,EACF6B,EAEAG,EAAmB5B,CAAK,EAInC,OACEkC,EAAC,OAAI,IAAKZ,EAAY,UAAWa,EAAG,kBAAmBtB,CAAI,EACzD,SAAA,CAAAiB,EAACM,EAAA,CAAe,UAAU,SACxB,SAAAN,EAACO,EAAA,CAEC,IAAKC,EAAU1B,EAAKI,EAAK,YAAY,EACrC,eAAa,eACb,GAAIuB,EACJ,MAAA9C,EACA,SAAUe,EACV,SAAU,CAACZ,EACX,MAAOS,GAAsB4B,EAAA,EAC7B,aAAa,MACb,UAAYO,GAAU,CACpBA,EAAM,gBAAA,EACNA,EAAM,YAAY,gBAAA,CACpB,EACA,SAAWA,GAAU,CACnB,KAAM,CAAE,MAAAxC,CAAAA,EAAUwC,EAAM,OAEpB5C,IACEU,KAA6CN,CAAK,EAClDO,GAAA,MAAAA,EAAkB,eAAeA,EAAiB,cAAcP,CAAK,EACrE2B,KAAuCa,CAAK,EAEpD,EACA,QAAA9C,EACA,QAAS,CACP,MAAOC,GAAW,CAACC,EAAe,iBAAmB,MAAA,EAgBvD,gBAAiB,CACf,KACEkC,EAACM,EAAA,CAAe,GAAG,OACjB,SAAAN,EAACW,EAAA,CACC,KAAK,oBACL,UAAWN,EAAG,yDAA0D,CACtE,aAAcH,CAAA,CACf,CAAA,CAAA,EAEL,EAEF,GAAG9B,CAAA,CACL,CAAA,EAEJ,EACA4B,EAACY,EAAA,CACC,OAAM,GACN,eAAa,cACb,IAAK1B,EAAK,YACV,GAAG,KACH,MAAO,CACL,GAAGC,EACH,OAAO0B,EAAArB,EAAW,UAAX,YAAAqB,EAAoB,wBAAwB,KAAA,EAErD,UAAWR,EACT,8BACA,sDACA,6DACArB,CAAA,EAGD,SAAAX,EACC,CAAC,CAAE,OAAAyC,CAAA,IACDd,EAACe,EAAA,CAEC,OAAAD,EACA,QAAAjD,EACA,QAAS,CACP,KAAM,sBACN,GAAGoB,CAAA,EAEL,aAAAhB,EACA,YAAa,CACX,QAAS,CAAE,QAAS,CAAA,EACpB,QAAS,CAAE,QAAS,CAAA,CAAE,CACxB,EAXK6C,EAAO,KAAA,EAcdpB,EAAQ,OAAS,EACnBU,EAAAY,EAAA,CACG,SAAA,CAAApC,GAAS,CAACf,GACTmC,EAACe,EAAA,CACC,eAAa,oBACb,OAAQ,CAAE,MAAO,KAAM,MAAOnC,CAAA,EAC9B,QAAAf,EACA,QAASoB,EACT,aAAAhB,EACA,YAAa,CACX,QAAS,CAAE,QAAS,CAAA,EACpB,QAAS,CAAE,QAAS,CAAA,CAAE,CACxB,CAAA,EAGHyB,EAAQ,IAAI,CAACoB,EAAQG,IACpBjB,EAACe,EAAA,CACC,eAAc,eAAeE,CAAK,GAElC,OAAAH,EACA,QAAAjD,EACA,QAASoB,EACT,aAAAhB,EACA,YAAa,CACX,QAAS,CAAE,QAAS,CAAA,EACpB,QAAS,CAAE,QAAS,CAAA,CAAE,CACxB,EARK6C,EAAO,KAAA,CAUf,CAAA,CAAA,CACH,EACEnC,EACFA,EAAUJ,GAAsBoB,CAAU,EAE1CK,EAAC,IAAA,CAAE,UAAU,gCAAgC,SAAA,mBAAA,CAAiB,CAAA,CAAA,CAElE,EACF,CAEJ,CAAA,CAAA,CAGN,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSelectController.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/select/hooks/useSelectController.ts"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport type { SelectItemOption } from '../model'\nimport { type ExternalHandlers } from '$/shared/ui/formElements/uncontrolled/select/Select'\n\ntype UseSelectControllerProps = {\n options: SelectItemOption[]\n isMulti?: boolean\n isSearchable?: boolean\n displayValue?: (option: SelectItemOption) => string\n onChange?: (value: SelectItemOption | SelectItemOption[] | undefined) => void\n filterDisabled: boolean\n externalInputValue?: string\n externalOnInputChange?: (value: string) => void\n externalHandlers?: ExternalHandlers\n}\n\nexport const useSelectController = ({\n options: initialOptions,\n displayValue,\n isSearchable = false,\n onChange,\n filterDisabled,\n externalInputValue,\n externalOnInputChange,\n externalHandlers\n}: UseSelectControllerProps) => {\n const [inputValue, setInputValue] = useState<string>('')\n\n const withDisplayValue = (option: SelectItemOption) => {\n return displayValue ? displayValue(option) : option.label\n }\n\n const onInputValueChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const { value } = event.target\n\n setInputValue(value)\n }\n\n const options = useMemo<SelectItemOption[]>(() => {\n if (filterDisabled) {\n return initialOptions\n }\n\n if (!isSearchable) {\n return initialOptions\n }\n\n return initialOptions.filter((option) =>\n withDisplayValue(option)\n .toLowerCase()\n .includes(externalInputValue ? externalInputValue.toLowerCase() : inputValue.toLowerCase())\n )\n }, [isSearchable, initialOptions, withDisplayValue, inputValue, externalInputValue, filterDisabled])\n\n const resetValue = () => {\n if (onChange) onChange(undefined)\n if (externalHandlers?.onChange) externalHandlers?.onChange(undefined)\n }\n\n const onValueChange = (value: SelectItemOption | SelectItemOption[] | null) => {\n if (!value) {\n return\n }\n\n if (!Array.isArray(value)) {\n if (!value.value) {\n return resetValue()\n }\n\n const label = withDisplayValue(value)\n setInputValue(label)\n if (externalOnInputChange) externalOnInputChange(label)\n if (externalHandlers?.onInputChange) externalHandlers?.onInputChange(label)\n }\n\n if (onChange) onChange(value)\n if (externalHandlers?.onChange) externalHandlers?.onChange(value)\n }\n\n const selectDisplayValue = (value: SelectItemOption | SelectItemOption[] | null) => {\n if (!value) return\n\n if (Array.isArray(value)) {\n return value.map((item) => withDisplayValue(item)).join(', ')\n } else {\n return withDisplayValue(value)\n }\n }\n\n const onDeleteItem = (values: SelectItemOption | SelectItemOption[], option: SelectItemOption) => {\n const filteredOptions =\n (Array.isArray(values) && values.filter((value: SelectItemOption) => value.value !== option.value)) || []\n\n onValueChange(filteredOptions)\n }\n\n return { options, inputValue, onInputValueChange, onValueChange, onDeleteItem, selectDisplayValue }\n}\n"],"names":["useSelectController","initialOptions","displayValue","isSearchable","onChange","filterDisabled","externalInputValue","externalOnInputChange","externalHandlers","inputValue","setInputValue","useState","withDisplayValue","option","onInputValueChange","event","value","options","useMemo","resetValue","onValueChange","label","values","filteredOptions","item"],"mappings":"8CAgBO,MAAMA,EAAsB,CAAC,CAClC,QAASC,EACT,aAAAC,EACA,aAAAC,EAAe,GACf,SAAAC,EACA,eAAAC,EACA,mBAAAC,EACA,sBAAAC,EACA,iBAAAC,CACF,IAAgC,CAC9B,KAAM,CAACC,EAAYC,CAAa,EAAIC,EAAiB,EAAE,EAEjDC,EAAoBC,GACjBX,EAAeA,EAAaW,CAAM,EAAIA,EAAO,MAGhDC,EAAkEC,GAAU,CAChF,KAAM,CAAE,MAAAC,GAAUD,EAAM,OAExBL,EAAcM,CAAK,CAAA,EAGfC,EAAUC,EAA4B,IACtCb,GAIA,CAACF,EACIF,EAGFA,EAAe,OAAQY,GAC5BD,EAAiBC,CAAM,EACpB,YAAA,EACA,SAASP,EAAqBA,EAAmB,cAAgBG,EAAW,aAAa,CAAA,EAE7F,CAACN,EAAcF,EAAgBW,EAAkBH,EAAYH,EAAoBD,CAAc,CAAC,EAE7Fc,EAAa,IAAM,CACnBf,KAAmB,MAAS,EAC5BI,GAAA,MAAAA,EAAkB,WAAUA,GAAA,MAAAA,EAAkB,SAAS,QAAS,EAGhEY,EAAiBJ,GAAwD,CAC7E,GAAKA,EAIL,IAAI,CAAC,MAAM,QAAQA,CAAK,EAAG,CACzB,GAAI,CAACA,EAAM,MACT,OAAOG,EAAA,EAGT,MAAME,EAAQT,EAAiBI,CAAK,EACpCN,EAAcW,CAAK,EACfd,KAA6Cc,CAAK,EAClDb,GAAA,MAAAA,EAAkB,gBAAeA,GAAA,MAAAA,EAAkB,cAAca,GAAK,CAGxEjB,KAAmBY,CAAK,EACxBR,GAAA,MAAAA,EAAkB,WAAUA,GAAA,MAAAA,EAAkB,SAASQ,IAAK,EAoBlE,MAAO,CAAE,QAAAC,EAAS,WAAAR,EAAY,mBAAAK,EAAoB,cAAAM,EAAe,aAP5C,CAACE,EAA+CT,IAA6B,CAChG,MAAMU,EACH,MAAM,QAAQD,CAAM,GAAKA,EAAO,OAAQN,GAA4BA,EAAM,QAAUH,EAAO,KAAK,GAAM,CAAA,EAEzGO,EAAcG,CAAe,CAAA,EAGgD,mBAjBnDP,GAAwD,CAClF,GAAKA,EAEL,OAAI,MAAM,QAAQA,CAAK,EACdA,EAAM,IAAKQ,GAASZ,EAAiBY,CAAI,CAAC,EAAE,KAAK,IAAI,EAErDZ,EAAiBI,CAAK,CAC/B,CAU6E,CACjF"}
1
+ {"version":3,"file":"useSelectController.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/select/hooks/useSelectController.ts"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport type { SelectItemOption } from '../model'\nimport { type ExternalHandlers } from '$/shared/ui/formElements/uncontrolled/select/Select'\n\ntype UseSelectControllerProps = {\n options: SelectItemOption[]\n isMulti?: boolean\n isSearchable?: boolean\n displayValue?: (option: SelectItemOption) => string\n onChange?: (value: SelectItemOption | SelectItemOption[] | undefined) => void\n filterDisabled: boolean\n externalInputValue?: string\n externalOnInputChange?: (value: string) => void\n externalHandlers?: ExternalHandlers\n}\n\nexport const useSelectController = ({\n options: initialOptions,\n displayValue,\n isSearchable = false,\n onChange,\n filterDisabled,\n externalInputValue,\n externalOnInputChange,\n externalHandlers\n}: UseSelectControllerProps) => {\n const [inputValue, setInputValue] = useState<string>('')\n\n const withDisplayValue = (option: SelectItemOption) => {\n return displayValue ? displayValue(option) : option.label\n }\n\n const onInputValueChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const { value } = event.target\n\n setInputValue(value)\n }\n\n const options = useMemo<SelectItemOption[]>(() => {\n if (filterDisabled) {\n return initialOptions\n }\n\n if (!isSearchable) {\n return initialOptions\n }\n\n return initialOptions.filter((option) =>\n withDisplayValue(option)\n .toLowerCase()\n .includes(externalInputValue ? externalInputValue.toLowerCase() : inputValue.toLowerCase())\n )\n }, [isSearchable, initialOptions, withDisplayValue, inputValue, externalInputValue, filterDisabled])\n\n const resetValue = () => {\n if (onChange) onChange(undefined)\n if (externalHandlers?.onChange) externalHandlers?.onChange(undefined)\n }\n\n const onValueChange = (value: SelectItemOption | SelectItemOption[] | null) => {\n if (!value) {\n return\n }\n\n if (!Array.isArray(value)) {\n if (!value.value) {\n return resetValue()\n }\n\n const label = withDisplayValue(value)\n setInputValue(label)\n if (externalOnInputChange) externalOnInputChange(label)\n if (externalHandlers?.onInputChange) externalHandlers?.onInputChange(label)\n }\n\n if (onChange) onChange(value)\n if (externalHandlers?.onChange) externalHandlers?.onChange(value)\n }\n\n const selectDisplayValue = (value: SelectItemOption | SelectItemOption[] | null) => {\n if (!value) return\n\n if (Array.isArray(value)) {\n return value.map((item) => withDisplayValue(item)).join(', ')\n } else {\n return withDisplayValue(value)\n }\n }\n\n const onDeleteItem = (values: SelectItemOption | SelectItemOption[], option: SelectItemOption) => {\n const filteredOptions =\n (Array.isArray(values) && values.filter((value: SelectItemOption) => value.value !== option.value)) || []\n\n onValueChange(filteredOptions)\n }\n\n return { options, inputValue, onInputValueChange, onValueChange, onDeleteItem, selectDisplayValue }\n}\n"],"names":["useSelectController","initialOptions","displayValue","isSearchable","onChange","filterDisabled","externalInputValue","externalOnInputChange","externalHandlers","inputValue","setInputValue","useState","withDisplayValue","option","onInputValueChange","event","value","options","useMemo","resetValue","onValueChange","label","values","filteredOptions","item"],"mappings":"8CAgBO,MAAMA,EAAsB,CAAC,CAClC,QAASC,EACT,aAAAC,EACA,aAAAC,EAAe,GACf,SAAAC,EACA,eAAAC,EACA,mBAAAC,EACA,sBAAAC,EACA,iBAAAC,CACF,IAAgC,CAC9B,KAAM,CAACC,EAAYC,CAAa,EAAIC,EAAiB,EAAE,EAEjDC,EAAoBC,GACjBX,EAAeA,EAAaW,CAAM,EAAIA,EAAO,MAGhDC,EAAkEC,GAAU,CAChF,KAAM,CAAE,MAAAC,GAAUD,EAAM,OAExBL,EAAcM,CAAK,CACrB,EAEMC,EAAUC,EAA4B,IACtCb,GAIA,CAACF,EACIF,EAGFA,EAAe,OAAQY,GAC5BD,EAAiBC,CAAM,EACpB,YAAA,EACA,SAASP,EAAqBA,EAAmB,cAAgBG,EAAW,aAAa,CAAA,EAE7F,CAACN,EAAcF,EAAgBW,EAAkBH,EAAYH,EAAoBD,CAAc,CAAC,EAE7Fc,EAAa,IAAM,CACnBf,KAAmB,MAAS,EAC5BI,GAAA,MAAAA,EAAkB,WAAUA,GAAA,MAAAA,EAAkB,SAAS,QAC7D,EAEMY,EAAiBJ,GAAwD,CAC7E,GAAKA,EAIL,IAAI,CAAC,MAAM,QAAQA,CAAK,EAAG,CACzB,GAAI,CAACA,EAAM,MACT,OAAOG,EAAA,EAGT,MAAME,EAAQT,EAAiBI,CAAK,EACpCN,EAAcW,CAAK,EACfd,KAA6Cc,CAAK,EAClDb,GAAA,MAAAA,EAAkB,gBAAeA,GAAA,MAAAA,EAAkB,cAAca,GACvE,CAEIjB,KAAmBY,CAAK,EACxBR,GAAA,MAAAA,EAAkB,WAAUA,GAAA,MAAAA,EAAkB,SAASQ,IAC7D,EAmBA,MAAO,CAAE,QAAAC,EAAS,WAAAR,EAAY,mBAAAK,EAAoB,cAAAM,EAAe,aAP5C,CAACE,EAA+CT,IAA6B,CAChG,MAAMU,EACH,MAAM,QAAQD,CAAM,GAAKA,EAAO,OAAQN,GAA4BA,EAAM,QAAUH,EAAO,KAAK,GAAM,CAAA,EAEzGO,EAAcG,CAAe,CAC/B,EAE+E,mBAjBnDP,GAAwD,CAClF,GAAKA,EAEL,OAAI,MAAM,QAAQA,CAAK,EACdA,EAAM,IAAKQ,GAASZ,EAAiBY,CAAI,CAAC,EAAE,KAAK,IAAI,EAErDZ,EAAiBI,CAAK,CAEjC,CAS+E,CACjF"}
@@ -1 +1 @@
1
- {"version":3,"file":"Chip.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/select/ui/Chip.tsx"],"sourcesContent":["import type { SelectItemOption } from '../model'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype ControlChipClasses = {\n chip?: string\n}\n\nexport interface ControlChipProps extends React.HTMLAttributes<HTMLDivElement> {\n displayValue?: (option: SelectItemOption) => string\n data: SelectItemOption\n classes?: ControlChipClasses\n onDeleteItem: (option: SelectItemOption) => void\n}\n\nexport const ControlChip = ({ data, displayValue, classes, onDeleteItem, ...props }: ControlChipProps) => (\n <div\n {...props}\n className={cn(\n 'mob-body-regular-l flex w-fit items-center gap-x-1 whitespace-nowrap',\n 'rounded-sm bg-color-primary-tr-hover px-1 text-color-primary-default',\n classes?.chip\n )}\n >\n {displayValue ? displayValue(data) : data.label}\n <Icon\n name='general/close'\n className='size-3.5 cursor-pointer'\n onClick={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopPropagation()\n\n onDeleteItem(data)\n }}\n />\n </div>\n)\n"],"names":["ControlChip","data","displayValue","classes","onDeleteItem","props","jsxs","cn","jsx","Icon","event"],"mappings":"+wCAeO,MAAMA,EAAc,CAAC,CAAE,KAAAC,EAAM,aAAAC,EAAc,QAAAC,EAAS,aAAAC,EAAc,GAAGC,CAAA,IAC1EC,EAAC,MAAA,CACE,GAAGD,EACJ,UAAWE,EACT,uEACA,uEACAJ,GAAA,YAAAA,EAAS,IAAA,EAGV,SAAA,CAAAD,EAAeA,EAAaD,CAAI,EAAIA,EAAK,MAC1CO,EAACC,EAAA,CACC,KAAK,gBACL,UAAU,0BACV,QAAUC,GAAU,CAClBA,EAAM,gBAAA,EACNA,EAAM,YAAY,gBAAA,EAElBN,EAAaH,CAAI,CAAA,CACnB,CAAA,CACF,CAAA,CACF"}
1
+ {"version":3,"file":"Chip.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/select/ui/Chip.tsx"],"sourcesContent":["import type { SelectItemOption } from '../model'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype ControlChipClasses = {\n chip?: string\n}\n\nexport interface ControlChipProps extends React.HTMLAttributes<HTMLDivElement> {\n displayValue?: (option: SelectItemOption) => string\n data: SelectItemOption\n classes?: ControlChipClasses\n onDeleteItem: (option: SelectItemOption) => void\n}\n\nexport const ControlChip = ({ data, displayValue, classes, onDeleteItem, ...props }: ControlChipProps) => (\n <div\n {...props}\n className={cn(\n 'mob-body-regular-l flex w-fit items-center gap-x-1 whitespace-nowrap',\n 'rounded-sm bg-color-primary-tr-hover px-1 text-color-primary-default',\n classes?.chip\n )}\n >\n {displayValue ? displayValue(data) : data.label}\n <Icon\n name='general/close'\n className='size-3.5 cursor-pointer'\n onClick={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopPropagation()\n\n onDeleteItem(data)\n }}\n />\n </div>\n)\n"],"names":["ControlChip","data","displayValue","classes","onDeleteItem","props","jsxs","cn","jsx","Icon","event"],"mappings":"+wCAeO,MAAMA,EAAc,CAAC,CAAE,KAAAC,EAAM,aAAAC,EAAc,QAAAC,EAAS,aAAAC,EAAc,GAAGC,CAAA,IAC1EC,EAAC,MAAA,CACE,GAAGD,EACJ,UAAWE,EACT,uEACA,uEACAJ,GAAA,YAAAA,EAAS,IAAA,EAGV,SAAA,CAAAD,EAAeA,EAAaD,CAAI,EAAIA,EAAK,MAC1CO,EAACC,EAAA,CACC,KAAK,gBACL,UAAU,0BACV,QAAUC,GAAU,CAClBA,EAAM,gBAAA,EACNA,EAAM,YAAY,gBAAA,EAElBN,EAAaH,CAAI,CACnB,CAAA,CAAA,CACF,CAAA,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectItem.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/select/ui/SelectItem.tsx"],"sourcesContent":["import React, { forwardRef, Fragment } from 'react'\nimport { ComboboxOption, type ComboboxOptionProps } from '@headlessui/react'\nimport { motion } from 'framer-motion'\nimport { CheckboxBase, type CheckboxBaseClasses } from '../../checkbox/Checkbox'\nimport type { SelectItemOption } from '../model'\nimport { cn } from '$/shared/utils'\n\ntype SelectItemClasses = {\n item?: string\n helperText?: string\n checkbox?: CheckboxBaseClasses\n}\n\nexport type SelectItemProps = Omit<ComboboxOptionProps, 'className' | 'value'> & {\n option: SelectItemOption\n isMulti?: boolean\n classes?: SelectItemClasses\n displayValue?: (option: SelectItemOption) => string\n motionProps?: React.ComponentPropsWithoutRef<typeof motion.li>\n}\n\nexport const SelectItem = forwardRef<HTMLLIElement, SelectItemProps>(\n ({ option, classes, displayValue, isMulti, motionProps, ...props }, ref) => {\n const label = displayValue ? displayValue(option) : option.label\n\n const { item, helperText, checkbox } = classes || {}\n\n const ContentWrapper = isMulti || option.attachment || option.helperText ? 'div' : Fragment\n\n return (\n <ComboboxOption {...props} as={Fragment} disabled={option.disabled} value={option}>\n {({ disabled, selected }) => (\n <motion.li\n {...motionProps}\n ref={ref}\n className={cn(\n 'unset-all-apply desk-body-regular-l cursor-pointer truncate rounded-sm bg-color-white px-2',\n 'flex h-12 items-center gap-x-4 text-color-dark hover:bg-color-primary-tr-hover hover:text-color-primary-hover',\n '[&:not(:disabled)]:cursor-pointer [&:not(:last-child)]:mb-1 [&>p]:hover:text-color-secondary',\n 'data-[selected]:bg-color-primary-tr-hover data-[selected]:text-color-primary-hover',\n 'data-[focus]:bg-color-primary-tr-hover data-[focus]:text-color-primary-hover',\n {\n 'pointer-events-none !text-color-disabled': disabled,\n '!flex items-center gap-x-4': isMulti,\n 'gap-x-3': option.attachment && option.attachment.left\n },\n item\n )}\n >\n {isMulti ? (\n <CheckboxBase checked={selected} disabled={disabled} classes={{ root: 'z-10', ...checkbox }} />\n ) : (\n option.attachment && option.attachment.left\n )}\n <ContentWrapper>\n {label}\n {option.helperText && (\n <p\n className={cn(\n 'desk-body-regular-s text-color-tetriary',\n {\n 'text-color-disabled': disabled\n },\n helperText\n )}\n >\n {option.helperText}\n </p>\n )}\n </ContentWrapper>\n <div className='ml-auto'>{option.attachment && option.attachment.right}</div>\n </motion.li>\n )}\n </ComboboxOption>\n )\n }\n)\n"],"names":["SelectItem","forwardRef","option","classes","displayValue","isMulti","motionProps","props","ref","label","item","helperText","checkbox","ContentWrapper","Fragment","jsx","ComboboxOption","disabled","selected","jsxs","motion","cn","CheckboxBase"],"mappings":"0bAqBO,MAAMA,EAAaC,EACxB,CAAC,CAAE,OAAAC,EAAQ,QAAAC,EAAS,aAAAC,EAAc,QAAAC,EAAS,YAAAC,EAAa,GAAGC,CAAA,EAASC,IAAQ,CAC1E,MAAMC,EAAQL,EAAeA,EAAaF,CAAM,EAAIA,EAAO,MAErD,CAAE,KAAAQ,EAAM,WAAAC,EAAY,SAAAC,CAAA,EAAaT,GAAW,CAAA,EAE5CU,EAAiBR,GAAWH,EAAO,YAAcA,EAAO,WAAa,MAAQY,EAEnF,OACEC,EAACC,EAAA,CAAgB,GAAGT,EAAO,GAAIO,EAAU,SAAUZ,EAAO,SAAU,MAAOA,EACxE,SAAA,CAAC,CAAE,SAAAe,EAAU,SAAAC,KACZC,EAACC,EAAO,GAAP,CACE,GAAGd,EACJ,IAAAE,EACA,UAAWa,EACT,6FACA,gHACA,+FACA,qFACA,+EACA,CACE,2CAA4CJ,EAC5C,6BAA8BZ,EAC9B,UAAWH,EAAO,YAAcA,EAAO,WAAW,IAAA,EAEpDQ,CAAA,EAGD,SAAA,CAAAL,IACEiB,EAAA,CAAa,QAASJ,EAAU,SAAAD,EAAoB,QAAS,CAAE,KAAM,OAAQ,GAAGL,GAAY,EAE7FV,EAAO,YAAcA,EAAO,WAAW,OAExCW,EAAA,CACE,SAAA,CAAAJ,EACAP,EAAO,YACNa,EAAC,IAAA,CACC,UAAWM,EACT,0CACA,CACE,sBAAuBJ,CAAA,EAEzBN,CAAA,EAGD,SAAAT,EAAO,UAAA,CAAA,CACV,EAEJ,EACAa,EAAC,OAAI,UAAU,UAAW,WAAO,YAAcb,EAAO,WAAW,KAAA,CAAM,CAAA,CAAA,CAAA,EAG7E,CAAA,CAGN"}
1
+ {"version":3,"file":"SelectItem.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/select/ui/SelectItem.tsx"],"sourcesContent":["import React, { forwardRef, Fragment } from 'react'\nimport { ComboboxOption, type ComboboxOptionProps } from '@headlessui/react'\nimport { motion } from 'framer-motion'\nimport { CheckboxBase, type CheckboxBaseClasses } from '../../checkbox/Checkbox'\nimport type { SelectItemOption } from '../model'\nimport { cn } from '$/shared/utils'\n\ntype SelectItemClasses = {\n item?: string\n helperText?: string\n checkbox?: CheckboxBaseClasses\n}\n\nexport type SelectItemProps = Omit<ComboboxOptionProps, 'className' | 'value'> & {\n option: SelectItemOption\n isMulti?: boolean\n classes?: SelectItemClasses\n displayValue?: (option: SelectItemOption) => string\n motionProps?: React.ComponentPropsWithoutRef<typeof motion.li>\n}\n\nexport const SelectItem = forwardRef<HTMLLIElement, SelectItemProps>(\n ({ option, classes, displayValue, isMulti, motionProps, ...props }, ref) => {\n const label = displayValue ? displayValue(option) : option.label\n\n const { item, helperText, checkbox } = classes || {}\n\n const ContentWrapper = isMulti || option.attachment || option.helperText ? 'div' : Fragment\n\n return (\n <ComboboxOption {...props} as={Fragment} disabled={option.disabled} value={option}>\n {({ disabled, selected }) => (\n <motion.li\n {...motionProps}\n ref={ref}\n className={cn(\n 'unset-all-apply desk-body-regular-l cursor-pointer truncate rounded-sm bg-color-white px-2',\n 'flex h-12 items-center gap-x-4 text-color-dark hover:bg-color-primary-tr-hover hover:text-color-primary-hover',\n '[&:not(:disabled)]:cursor-pointer [&:not(:last-child)]:mb-1 [&>p]:hover:text-color-secondary',\n 'data-[selected]:bg-color-primary-tr-hover data-[selected]:text-color-primary-hover',\n 'data-[focus]:bg-color-primary-tr-hover data-[focus]:text-color-primary-hover',\n {\n 'pointer-events-none !text-color-disabled': disabled,\n '!flex items-center gap-x-4': isMulti,\n 'gap-x-3': option.attachment && option.attachment.left\n },\n item\n )}\n >\n {isMulti ? (\n <CheckboxBase checked={selected} disabled={disabled} classes={{ root: 'z-10', ...checkbox }} />\n ) : (\n option.attachment && option.attachment.left\n )}\n <ContentWrapper>\n {label}\n {option.helperText && (\n <p\n className={cn(\n 'desk-body-regular-s text-color-tetriary',\n {\n 'text-color-disabled': disabled\n },\n helperText\n )}\n >\n {option.helperText}\n </p>\n )}\n </ContentWrapper>\n <div className='ml-auto'>{option.attachment && option.attachment.right}</div>\n </motion.li>\n )}\n </ComboboxOption>\n )\n }\n)\n"],"names":["SelectItem","forwardRef","option","classes","displayValue","isMulti","motionProps","props","ref","label","item","helperText","checkbox","ContentWrapper","Fragment","jsx","ComboboxOption","disabled","selected","jsxs","motion","cn","CheckboxBase"],"mappings":"0bAqBO,MAAMA,EAAaC,EACxB,CAAC,CAAE,OAAAC,EAAQ,QAAAC,EAAS,aAAAC,EAAc,QAAAC,EAAS,YAAAC,EAAa,GAAGC,CAAA,EAASC,IAAQ,CAC1E,MAAMC,EAAQL,EAAeA,EAAaF,CAAM,EAAIA,EAAO,MAErD,CAAE,KAAAQ,EAAM,WAAAC,EAAY,SAAAC,CAAA,EAAaT,GAAW,CAAA,EAE5CU,EAAiBR,GAAWH,EAAO,YAAcA,EAAO,WAAa,MAAQY,EAEnF,OACEC,EAACC,EAAA,CAAgB,GAAGT,EAAO,GAAIO,EAAU,SAAUZ,EAAO,SAAU,MAAOA,EACxE,SAAA,CAAC,CAAE,SAAAe,EAAU,SAAAC,KACZC,EAACC,EAAO,GAAP,CACE,GAAGd,EACJ,IAAAE,EACA,UAAWa,EACT,6FACA,gHACA,+FACA,qFACA,+EACA,CACE,2CAA4CJ,EAC5C,6BAA8BZ,EAC9B,UAAWH,EAAO,YAAcA,EAAO,WAAW,IAAA,EAEpDQ,CAAA,EAGD,SAAA,CAAAL,IACEiB,EAAA,CAAa,QAASJ,EAAU,SAAAD,EAAoB,QAAS,CAAE,KAAM,OAAQ,GAAGL,GAAY,EAE7FV,EAAO,YAAcA,EAAO,WAAW,OAExCW,EAAA,CACE,SAAA,CAAAJ,EACAP,EAAO,YACNa,EAAC,IAAA,CACC,UAAWM,EACT,0CACA,CACE,sBAAuBJ,CAAA,EAEzBN,CAAA,EAGD,SAAAT,EAAO,UAAA,CAAA,CACV,EAEJ,EACAa,EAAC,OAAI,UAAU,UAAW,WAAO,YAAcb,EAAO,WAAW,KAAA,CAAM,CAAA,CAAA,CAAA,EAG7E,CAEJ,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLogarithmic.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/model/useLogarithmic.ts"],"sourcesContent":["interface UseLogarithmicProps {\n min: number\n max: number\n defaultSum: number\n}\n\nexport const useLogarithmic = ({ min, max, defaultSum }: UseLogarithmicProps) => {\n const initSum = Math.ceil((max - min) * 0.2 + min)\n const startSum = initSum > defaultSum ? defaultSum : initSum\n\n const fromSlider = (value: number) => {\n return round(Math.round(Math.pow(10, value)), 2)\n }\n\n const toSlider = (value: number | undefined) => {\n if (!value) return 0\n\n return Math.log(value) / Math.log(10)\n }\n\n const round = (sum: number, threshold = 2) => {\n const fixedSum = sum.toFixed(0)\n const digits = fixedSum.length\n\n let out = fixedSum.slice(0, Math.min(digits, threshold))\n\n if (digits > threshold) {\n out = out + '000000000000'.slice(0, digits - threshold)\n }\n\n return parseInt(out, 10)\n }\n\n return {\n min,\n max,\n initSum,\n startSum,\n fromSlider,\n toSlider,\n round\n }\n}\n"],"names":["useLogarithmic","min","max","defaultSum","initSum","startSum","fromSlider","value","round","toSlider","sum","threshold","fixedSum","digits","out"],"mappings":"AAMO,MAAMA,EAAiB,CAAC,CAAE,IAAAC,EAAK,IAAAC,EAAK,WAAAC,KAAsC,CAC/E,MAAMC,EAAU,KAAK,MAAMF,EAAMD,GAAO,GAAMA,CAAG,EAC3CI,EAAWD,EAAUD,EAAaA,EAAaC,EAE/CE,EAAcC,GACXC,EAAM,KAAK,MAAM,KAAK,IAAI,GAAID,CAAK,CAAC,EAAG,CAAC,EAG3CE,EAAYF,GACXA,EAEE,KAAK,IAAIA,CAAK,EAAI,KAAK,IAAI,EAAE,EAFjB,EAKfC,EAAQ,CAACE,EAAaC,EAAY,IAAM,CAC5C,MAAMC,EAAWF,EAAI,QAAQ,CAAC,EACxBG,EAASD,EAAS,OAExB,IAAIE,EAAMF,EAAS,MAAM,EAAG,KAAK,IAAIC,EAAQF,CAAS,CAAC,EAEvD,OAAIE,EAASF,IACXG,EAAMA,EAAM,eAAe,MAAM,EAAGD,EAASF,CAAS,GAGjD,SAASG,EAAK,EAAE,CAAA,EAGzB,MAAO,CACL,IAAAb,EACA,IAAAC,EACA,QAAAE,EACA,SAAAC,EACA,WAAAC,EACA,SAAAG,EACA,MAAAD,CAAA,CAEJ"}
1
+ {"version":3,"file":"useLogarithmic.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/model/useLogarithmic.ts"],"sourcesContent":["interface UseLogarithmicProps {\n min: number\n max: number\n defaultSum: number\n}\n\nexport const useLogarithmic = ({ min, max, defaultSum }: UseLogarithmicProps) => {\n const initSum = Math.ceil((max - min) * 0.2 + min)\n const startSum = initSum > defaultSum ? defaultSum : initSum\n\n const fromSlider = (value: number) => {\n return round(Math.round(Math.pow(10, value)), 2)\n }\n\n const toSlider = (value: number | undefined) => {\n if (!value) return 0\n\n return Math.log(value) / Math.log(10)\n }\n\n const round = (sum: number, threshold = 2) => {\n const fixedSum = sum.toFixed(0)\n const digits = fixedSum.length\n\n let out = fixedSum.slice(0, Math.min(digits, threshold))\n\n if (digits > threshold) {\n out = out + '000000000000'.slice(0, digits - threshold)\n }\n\n return parseInt(out, 10)\n }\n\n return {\n min,\n max,\n initSum,\n startSum,\n fromSlider,\n toSlider,\n round\n }\n}\n"],"names":["useLogarithmic","min","max","defaultSum","initSum","startSum","fromSlider","value","round","toSlider","sum","threshold","fixedSum","digits","out"],"mappings":"AAMO,MAAMA,EAAiB,CAAC,CAAE,IAAAC,EAAK,IAAAC,EAAK,WAAAC,KAAsC,CAC/E,MAAMC,EAAU,KAAK,MAAMF,EAAMD,GAAO,GAAMA,CAAG,EAC3CI,EAAWD,EAAUD,EAAaA,EAAaC,EAE/CE,EAAcC,GACXC,EAAM,KAAK,MAAM,KAAK,IAAI,GAAID,CAAK,CAAC,EAAG,CAAC,EAG3CE,EAAYF,GACXA,EAEE,KAAK,IAAIA,CAAK,EAAI,KAAK,IAAI,EAAE,EAFjB,EAKfC,EAAQ,CAACE,EAAaC,EAAY,IAAM,CAC5C,MAAMC,EAAWF,EAAI,QAAQ,CAAC,EACxBG,EAASD,EAAS,OAExB,IAAIE,EAAMF,EAAS,MAAM,EAAG,KAAK,IAAIC,EAAQF,CAAS,CAAC,EAEvD,OAAIE,EAASF,IACXG,EAAMA,EAAM,eAAe,MAAM,EAAGD,EAASF,CAAS,GAGjD,SAASG,EAAK,EAAE,CACzB,EAEA,MAAO,CACL,IAAAb,EACA,IAAAC,EACA,QAAAE,EACA,SAAAC,EACA,WAAAC,EACA,SAAAG,EACA,MAAAD,CAAA,CAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/Slider.tsx"],"sourcesContent":["import Slider from 'rc-slider'\nimport { type ExternalHandlers } from '../model'\nimport { cn } from '$/shared/utils'\n\nexport type SliderClasses = {\n track?: string\n rail?: string\n handle?: string\n tracks?: string\n}\n\nexport interface SliderInnerProps {\n classes?: SliderClasses\n onChange: (value: number) => void\n value: number\n disabled?: boolean\n min?: number\n max?: number\n step?: number | null\n marks?: number[]\n externalHandlers?: ExternalHandlers\n}\n\nexport const SliderInner = ({\n classes,\n min,\n max,\n value,\n step,\n marks,\n disabled,\n onChange,\n externalHandlers,\n ...props\n}: SliderInnerProps) => {\n const { track, rail, handle } = classes || {}\n\n const handleChangeSlider = (value: number | number[]) => {\n const newValue = Array.isArray(value) ? value[0] : value\n onChange(newValue)\n if (externalHandlers?.onChange) externalHandlers.onChange(newValue)\n }\n\n const convertedMarks = marks?.reduce(\n (acc, value) => {\n acc[value] = <></>\n return acc\n },\n {} as Record<number, JSX.Element>\n )\n\n return (\n <div className='absolute bottom-0 w-full'>\n <Slider\n {...props}\n className='relative h-[4px]'\n value={value}\n marks={convertedMarks}\n disabled={disabled}\n min={min}\n max={max}\n onChange={handleChangeSlider}\n step={step}\n classNames={{\n track: cn('absolute bg-color-primary-default size-[3px]', track),\n rail: cn('absolute w-full size-[3px]', rail),\n handle: cn(\n 'absolute top-1/2 !-translate-y-1/2 left-1/2 !-translate-x-1/2 ',\n\n 'ring-offset-background block h-4 w-4 cursor-pointer rounded-full bg-color-primary-default transition-colors focus:outline-none disabled:pointer-events-none disabled:opacity-50',\n\n 'before:absolute before:left-1/2 before:top-1/2 before:size-8 before:-translate-x-1/2 before:-translate-y-1/2 before:rounded-full before:bg-color-transparent before:content-[\"\"]',\n\n 'hover:before:bg-color-primary-tr-hover',\n\n 'focus:before:bg-color-primary-tr-pressed',\n handle\n )\n }}\n />\n </div>\n )\n}\n"],"names":["SliderInner","classes","min","max","value","step","marks","disabled","onChange","externalHandlers","props","track","rail","handle","handleChangeSlider","newValue","convertedMarks","acc","jsx","Fragment","Slider","cn"],"mappings":"4LAuBO,MAAMA,EAAc,CAAC,CAC1B,QAAAC,EACA,IAAAC,EACA,IAAAC,EACA,MAAAC,EACA,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,GAAGC,CACL,IAAwB,CACtB,KAAM,CAAE,MAAAC,EAAO,KAAAC,EAAM,OAAAC,CAAA,EAAWZ,GAAW,CAAA,EAErCa,EAAsBV,GAA6B,CACvD,MAAMW,EAAW,MAAM,QAAQX,CAAK,EAAIA,EAAM,CAAC,EAAIA,EACnDI,EAASO,CAAQ,EACbN,GAAA,MAAAA,EAAkB,UAAUA,EAAiB,SAASM,CAAQ,CAAA,EAG9DC,EAAiBV,GAAA,YAAAA,EAAO,OAC5B,CAACW,EAAKb,KACJa,EAAIb,CAAK,EAAIc,EAAAC,EAAA,CAAA,CAAE,EACRF,GAET,CAAA,GAGF,OACEC,EAAC,MAAA,CAAI,UAAU,2BACb,SAAAA,EAACE,EAAA,CACE,GAAGV,EACJ,UAAU,mBACV,MAAAN,EACA,MAAOY,EACP,SAAAT,EACA,IAAAL,EACA,IAAAC,EACA,SAAUW,EACV,KAAAT,EACA,WAAY,CACV,MAAOgB,EAAG,+CAAgDV,CAAK,EAC/D,KAAMU,EAAG,6BAA8BT,CAAI,EAC3C,OAAQS,EACN,iEAEA,kLAEA,mLAEA,yCAEA,2CACAR,CAAA,CACF,CACF,CAAA,EAEJ,CAEJ"}
1
+ {"version":3,"file":"Slider.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/Slider.tsx"],"sourcesContent":["import Slider from 'rc-slider'\nimport { type ExternalHandlers } from '../model'\nimport { cn } from '$/shared/utils'\n\nexport type SliderClasses = {\n track?: string\n rail?: string\n handle?: string\n tracks?: string\n}\n\nexport interface SliderInnerProps {\n classes?: SliderClasses\n onChange: (value: number) => void\n value: number\n disabled?: boolean\n min?: number\n max?: number\n step?: number | null\n marks?: number[]\n externalHandlers?: ExternalHandlers\n}\n\nexport const SliderInner = ({\n classes,\n min,\n max,\n value,\n step,\n marks,\n disabled,\n onChange,\n externalHandlers,\n ...props\n}: SliderInnerProps) => {\n const { track, rail, handle } = classes || {}\n\n const handleChangeSlider = (value: number | number[]) => {\n const newValue = Array.isArray(value) ? value[0] : value\n onChange(newValue)\n if (externalHandlers?.onChange) externalHandlers.onChange(newValue)\n }\n\n const convertedMarks = marks?.reduce(\n (acc, value) => {\n acc[value] = <></>\n return acc\n },\n {} as Record<number, JSX.Element>\n )\n\n return (\n <div className='absolute bottom-0 w-full'>\n <Slider\n {...props}\n className='relative h-[4px]'\n value={value}\n marks={convertedMarks}\n disabled={disabled}\n min={min}\n max={max}\n onChange={handleChangeSlider}\n step={step}\n classNames={{\n track: cn('absolute bg-color-primary-default size-[3px]', track),\n rail: cn('absolute w-full size-[3px]', rail),\n handle: cn(\n 'absolute top-1/2 !-translate-y-1/2 left-1/2 !-translate-x-1/2 ',\n\n 'ring-offset-background block h-4 w-4 cursor-pointer rounded-full bg-color-primary-default transition-colors focus:outline-none disabled:pointer-events-none disabled:opacity-50',\n\n 'before:absolute before:left-1/2 before:top-1/2 before:size-8 before:-translate-x-1/2 before:-translate-y-1/2 before:rounded-full before:bg-color-transparent before:content-[\"\"]',\n\n 'hover:before:bg-color-primary-tr-hover',\n\n 'focus:before:bg-color-primary-tr-pressed',\n handle\n )\n }}\n />\n </div>\n )\n}\n"],"names":["SliderInner","classes","min","max","value","step","marks","disabled","onChange","externalHandlers","props","track","rail","handle","handleChangeSlider","newValue","convertedMarks","acc","jsx","Fragment","Slider","cn"],"mappings":"4LAuBO,MAAMA,EAAc,CAAC,CAC1B,QAAAC,EACA,IAAAC,EACA,IAAAC,EACA,MAAAC,EACA,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,GAAGC,CACL,IAAwB,CACtB,KAAM,CAAE,MAAAC,EAAO,KAAAC,EAAM,OAAAC,CAAA,EAAWZ,GAAW,CAAA,EAErCa,EAAsBV,GAA6B,CACvD,MAAMW,EAAW,MAAM,QAAQX,CAAK,EAAIA,EAAM,CAAC,EAAIA,EACnDI,EAASO,CAAQ,EACbN,GAAA,MAAAA,EAAkB,UAAUA,EAAiB,SAASM,CAAQ,CACpE,EAEMC,EAAiBV,GAAA,YAAAA,EAAO,OAC5B,CAACW,EAAKb,KACJa,EAAIb,CAAK,EAAIc,EAAAC,EAAA,CAAA,CAAE,EACRF,GAET,CAAA,GAGF,OACEC,EAAC,MAAA,CAAI,UAAU,2BACb,SAAAA,EAACE,EAAA,CACE,GAAGV,EACJ,UAAU,mBACV,MAAAN,EACA,MAAOY,EACP,SAAAT,EACA,IAAAL,EACA,IAAAC,EACA,SAAUW,EACV,KAAAT,EACA,WAAY,CACV,MAAOgB,EAAG,+CAAgDV,CAAK,EAC/D,KAAMU,EAAG,6BAA8BT,CAAI,EAC3C,OAAQS,EACN,iEAEA,kLAEA,mLAEA,yCAEA,2CACAR,CAAA,CACF,CACF,CAAA,EAEJ,CAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"SliderAlgorithmic.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/SliderAlgorithmic.tsx"],"sourcesContent":["import * as React from 'react'\nimport { forwardRef } from 'react'\nimport { NumericFormat } from 'react-number-format'\nimport { getInputSliderSuffix } from '../../model/helpers'\nimport { type SliderAlgorithmicProps } from '../../model/types'\nimport { SliderInner } from '../Slider'\nimport { useSliderAlgorithmic } from './hooks'\nimport { Icon, InputBase } from '$/shared/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nconst defaultIcon = (\n <Icon\n name='general/edit'\n className='size-[19px] text-icon-blue-grey-600 transition-[color] group-focus-within/icon:text-icon-blue-grey-800'\n />\n)\n\nexport const SliderAlgorithmic = forwardRef<HTMLInputElement, SliderAlgorithmicProps>(\n (\n {\n classes,\n invalid,\n externalHandlers,\n disabled,\n value,\n onChange,\n min,\n max,\n suffix,\n label,\n attachmentProps,\n additionalSuffix,\n readOnly,\n componentType,\n ...props\n },\n ref\n ) => {\n const inputId = React.useId()\n\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const handleIconClick = () => {\n inputRef?.current?.focus()\n }\n\n const { handleBlur, sliderValue, sliderStep, sliderMin, sliderMax, handleChangeSlider } = useSliderAlgorithmic({\n min,\n max,\n defaultValue: 0,\n value,\n onChange\n })\n\n const { root, slider, textLeft, textRight, inputRoot, textContainer, input, field } = classes || {}\n\n return (\n <div aria-label={componentType} className={cn('flex w-full flex-col gap-1', root)}>\n <div className={cn('relative w-full select-none', { ['select-none']: readOnly }, field)}>\n <InputBase\n label={label}\n value={value}\n attachmentProps={{\n onClickIcon: readOnly ? undefined : attachmentProps?.onClickIcon || handleIconClick,\n icon: readOnly ? undefined : attachmentProps?.icon || defaultIcon,\n ...attachmentProps\n }}\n classes={{\n container: 'border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800',\n ...inputRoot\n }}\n onBlur={(e) => {\n handleBlur(value)\n if (props?.onBlur) props?.onBlur(e)\n if (externalHandlers?.onBlur) externalHandlers.onBlur(e)\n }}\n onClick={externalHandlers?.onClick}\n onFocus={externalHandlers?.onBlur}\n renderValues={() => (\n <NumericFormat\n id={inputId}\n readOnly={readOnly}\n aria-invalid={invalid ? 'true' : 'false'}\n value={value}\n disabled={disabled}\n suffix={` ${getInputSliderSuffix(suffix, value)} ${additionalSuffix ?? ''}`}\n thousandsGroupStyle='thousand'\n thousandSeparator={' '}\n allowNegative={false}\n getInputRef={mergeRefs(inputRef, ref)}\n onValueChange={({ floatValue }) => {\n if (floatValue !== undefined) {\n if (onChange) onChange(floatValue)\n externalHandlers?.onInputChange?.(floatValue)\n }\n }}\n data-test-id='slider'\n className={cn(\n 'group/slider desk-title-bold-s w-full bg-color-transparent text-color-dark outline-none transition-all',\n\n input\n )}\n {...props}\n />\n )}\n />\n <SliderInner\n classes={{ ...slider }}\n step={sliderStep}\n value={sliderValue}\n disabled={disabled}\n min={Number(sliderMin)}\n max={Number(sliderMax)}\n onChange={handleChangeSlider}\n externalHandlers={externalHandlers}\n />\n </div>\n <div className={cn('flex justify-between', textContainer)}>\n {min && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textLeft)}>\n {getInputSliderSuffix(suffix, min, false)}\n </span>\n )}\n {max && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textRight)}>\n {getInputSliderSuffix(suffix, max, false)}\n </span>\n )}\n </div>\n </div>\n )\n }\n)\n"],"names":["defaultIcon","jsx","Icon","SliderAlgorithmic","forwardRef","classes","invalid","externalHandlers","disabled","value","onChange","min","max","suffix","label","attachmentProps","additionalSuffix","readOnly","componentType","props","ref","inputId","React","inputRef","handleIconClick","_a","handleBlur","sliderValue","sliderStep","sliderMin","sliderMax","handleChangeSlider","useSliderAlgorithmic","root","slider","textLeft","textRight","inputRoot","textContainer","input","field","jsxs","cn","InputBase","e","NumericFormat","getInputSliderSuffix","mergeRefs","floatValue","SliderInner"],"mappings":"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"}
1
+ {"version":3,"file":"SliderAlgorithmic.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/SliderAlgorithmic.tsx"],"sourcesContent":["import * as React from 'react'\nimport { forwardRef } from 'react'\nimport { NumericFormat } from 'react-number-format'\nimport { getInputSliderSuffix } from '../../model/helpers'\nimport { type SliderAlgorithmicProps } from '../../model/types'\nimport { SliderInner } from '../Slider'\nimport { useSliderAlgorithmic } from './hooks'\nimport { Icon, InputBase } from '$/shared/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nconst defaultIcon = (\n <Icon\n name='general/edit'\n className='size-[19px] text-icon-blue-grey-600 transition-[color] group-focus-within/icon:text-icon-blue-grey-800'\n />\n)\n\nexport const SliderAlgorithmic = forwardRef<HTMLInputElement, SliderAlgorithmicProps>(\n (\n {\n classes,\n invalid,\n externalHandlers,\n disabled,\n value,\n onChange,\n min,\n max,\n suffix,\n label,\n attachmentProps,\n additionalSuffix,\n readOnly,\n componentType,\n ...props\n },\n ref\n ) => {\n const inputId = React.useId()\n\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const handleIconClick = () => {\n inputRef?.current?.focus()\n }\n\n const { handleBlur, sliderValue, sliderStep, sliderMin, sliderMax, handleChangeSlider } = useSliderAlgorithmic({\n min,\n max,\n defaultValue: 0,\n value,\n onChange\n })\n\n const { root, slider, textLeft, textRight, inputRoot, textContainer, input, field } = classes || {}\n\n return (\n <div aria-label={componentType} className={cn('flex w-full flex-col gap-1', root)}>\n <div className={cn('relative w-full select-none', { ['select-none']: readOnly }, field)}>\n <InputBase\n label={label}\n value={value}\n attachmentProps={{\n onClickIcon: readOnly ? undefined : attachmentProps?.onClickIcon || handleIconClick,\n icon: readOnly ? undefined : attachmentProps?.icon || defaultIcon,\n ...attachmentProps\n }}\n classes={{\n container: 'border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800',\n ...inputRoot\n }}\n onBlur={(e) => {\n handleBlur(value)\n if (props?.onBlur) props?.onBlur(e)\n if (externalHandlers?.onBlur) externalHandlers.onBlur(e)\n }}\n onClick={externalHandlers?.onClick}\n onFocus={externalHandlers?.onBlur}\n renderValues={() => (\n <NumericFormat\n id={inputId}\n readOnly={readOnly}\n aria-invalid={invalid ? 'true' : 'false'}\n value={value}\n disabled={disabled}\n suffix={` ${getInputSliderSuffix(suffix, value)} ${additionalSuffix ?? ''}`}\n thousandsGroupStyle='thousand'\n thousandSeparator={' '}\n allowNegative={false}\n getInputRef={mergeRefs(inputRef, ref)}\n onValueChange={({ floatValue }) => {\n if (floatValue !== undefined) {\n if (onChange) onChange(floatValue)\n externalHandlers?.onInputChange?.(floatValue)\n }\n }}\n data-test-id='slider'\n className={cn(\n 'group/slider desk-title-bold-s w-full bg-color-transparent text-color-dark outline-none transition-all',\n\n input\n )}\n {...props}\n />\n )}\n />\n <SliderInner\n classes={{ ...slider }}\n step={sliderStep}\n value={sliderValue}\n disabled={disabled}\n min={Number(sliderMin)}\n max={Number(sliderMax)}\n onChange={handleChangeSlider}\n externalHandlers={externalHandlers}\n />\n </div>\n <div className={cn('flex justify-between', textContainer)}>\n {min && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textLeft)}>\n {getInputSliderSuffix(suffix, min, false)}\n </span>\n )}\n {max && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textRight)}>\n {getInputSliderSuffix(suffix, max, false)}\n </span>\n )}\n </div>\n </div>\n )\n }\n)\n"],"names":["defaultIcon","jsx","Icon","SliderAlgorithmic","forwardRef","classes","invalid","externalHandlers","disabled","value","onChange","min","max","suffix","label","attachmentProps","additionalSuffix","readOnly","componentType","props","ref","inputId","React","inputRef","handleIconClick","_a","handleBlur","sliderValue","sliderStep","sliderMin","sliderMax","handleChangeSlider","useSliderAlgorithmic","root","slider","textLeft","textRight","inputRoot","textContainer","input","field","jsxs","cn","InputBase","e","NumericFormat","getInputSliderSuffix","mergeRefs","floatValue","SliderInner"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSliderAlgorithmic.js","sources":["../../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/hooks/useSliderAlgorithmic.ts"],"sourcesContent":["import { useLogarithmic } from '../../../model/useLogarithmic'\n\ninterface UseSliderAlgorithmic {\n min: number\n max: number\n defaultValue: number\n value: number | undefined\n onChange?: (value: number) => void\n}\n\nexport const useSliderAlgorithmic = ({ min, max, defaultValue, value, onChange }: UseSliderAlgorithmic) => {\n const { fromSlider, toSlider, round } = useLogarithmic({ min, max, defaultSum: defaultValue })\n\n const sliderValue = toSlider(value)\n\n const sliderStep = 0.01\n\n const sliderMin = toSlider(min)\n const sliderMax = toSlider(max)\n\n const handleBlur = (value: number | undefined) => {\n if (!value) return\n\n if (value > max) {\n if (onChange) onChange(max)\n }\n if (value < min) {\n if (onChange) onChange(min)\n }\n }\n\n const handleChangeSlider = (value?: number) => {\n if (!value) {\n return\n }\n if (onChange) onChange(round(fromSlider(value)))\n }\n\n return {\n handleBlur,\n handleChangeSlider,\n toSlider,\n fromSlider,\n sliderValue,\n sliderStep,\n sliderMin,\n sliderMax\n }\n}\n"],"names":["useSliderAlgorithmic","min","max","defaultValue","value","onChange","fromSlider","toSlider","round","useLogarithmic","sliderValue","sliderStep","sliderMin","sliderMax"],"mappings":"kEAUO,MAAMA,EAAuB,CAAC,CAAE,IAAAC,EAAK,IAAAC,EAAK,aAAAC,EAAc,MAAAC,EAAO,SAAAC,KAAqC,CACzG,KAAM,CAAE,WAAAC,EAAY,SAAAC,EAAU,MAAAC,GAAUC,EAAe,CAAE,IAAAR,EAAK,IAAAC,EAAK,WAAYC,EAAc,EAEvFO,EAAcH,EAASH,CAAK,EAE5BO,EAAa,IAEbC,EAAYL,EAASN,CAAG,EACxBY,EAAYN,EAASL,CAAG,EAoB9B,MAAO,CACL,WAnBkBE,GAA8B,CAC3CA,IAEDA,EAAQF,GACNG,KAAmBH,CAAG,EAExBE,EAAQH,GACNI,KAAmBJ,CAAG,EAC5B,EAYA,mBAT0BG,GAAmB,CACxCA,GAGDC,GAAUA,EAASG,EAAMF,EAAWF,CAAK,CAAC,CAAC,CAAA,EAM/C,SAAAG,EACA,WAAAD,EACA,YAAAI,EACA,WAAAC,EACA,UAAAC,EACA,UAAAC,CAAA,CAEJ"}
1
+ {"version":3,"file":"useSliderAlgorithmic.js","sources":["../../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/hooks/useSliderAlgorithmic.ts"],"sourcesContent":["import { useLogarithmic } from '../../../model/useLogarithmic'\n\ninterface UseSliderAlgorithmic {\n min: number\n max: number\n defaultValue: number\n value: number | undefined\n onChange?: (value: number) => void\n}\n\nexport const useSliderAlgorithmic = ({ min, max, defaultValue, value, onChange }: UseSliderAlgorithmic) => {\n const { fromSlider, toSlider, round } = useLogarithmic({ min, max, defaultSum: defaultValue })\n\n const sliderValue = toSlider(value)\n\n const sliderStep = 0.01\n\n const sliderMin = toSlider(min)\n const sliderMax = toSlider(max)\n\n const handleBlur = (value: number | undefined) => {\n if (!value) return\n\n if (value > max) {\n if (onChange) onChange(max)\n }\n if (value < min) {\n if (onChange) onChange(min)\n }\n }\n\n const handleChangeSlider = (value?: number) => {\n if (!value) {\n return\n }\n if (onChange) onChange(round(fromSlider(value)))\n }\n\n return {\n handleBlur,\n handleChangeSlider,\n toSlider,\n fromSlider,\n sliderValue,\n sliderStep,\n sliderMin,\n sliderMax\n }\n}\n"],"names":["useSliderAlgorithmic","min","max","defaultValue","value","onChange","fromSlider","toSlider","round","useLogarithmic","sliderValue","sliderStep","sliderMin","sliderMax"],"mappings":"kEAUO,MAAMA,EAAuB,CAAC,CAAE,IAAAC,EAAK,IAAAC,EAAK,aAAAC,EAAc,MAAAC,EAAO,SAAAC,KAAqC,CACzG,KAAM,CAAE,WAAAC,EAAY,SAAAC,EAAU,MAAAC,GAAUC,EAAe,CAAE,IAAAR,EAAK,IAAAC,EAAK,WAAYC,EAAc,EAEvFO,EAAcH,EAASH,CAAK,EAE5BO,EAAa,IAEbC,EAAYL,EAASN,CAAG,EACxBY,EAAYN,EAASL,CAAG,EAoB9B,MAAO,CACL,WAnBkBE,GAA8B,CAC3CA,IAEDA,EAAQF,GACNG,KAAmBH,CAAG,EAExBE,EAAQH,GACNI,KAAmBJ,CAAG,EAE9B,EAWE,mBAT0BG,GAAmB,CACxCA,GAGDC,GAAUA,EAASG,EAAMF,EAAWF,CAAK,CAAC,CAAC,CACjD,EAKE,SAAAG,EACA,WAAAD,EACA,YAAAI,EACA,WAAAC,EACA,UAAAC,EACA,UAAAC,CAAA,CAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"SliderMarks.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderMarks/SliderMarks.tsx"],"sourcesContent":["import * as React from 'react'\nimport { forwardRef } from 'react'\nimport { NumericFormat } from 'react-number-format'\nimport { getInputSliderSuffix } from '../../model/helpers'\nimport { type SliderMarksProps } from '../../model/types'\nimport { SliderInner } from '../../ui/Slider'\nimport { useSliderMarks } from './hooks/useSliderMarks'\nimport { InputBase } from '$/shared/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nexport const SliderMarks = forwardRef<HTMLInputElement, SliderMarksProps>(\n (\n {\n classes,\n invalid,\n externalHandlers,\n disabled,\n value,\n onChange,\n suffix,\n label,\n marks,\n attachmentProps,\n additionalSuffix,\n componentType,\n ...props\n },\n ref\n ) => {\n const inputId = React.useId()\n\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const { sliderMin, sliderMax, handleChangeSlider, handleBlur } = useSliderMarks({\n marks,\n onChange,\n value\n })\n\n const { root, slider, textLeft, textRight, inputRoot, textContainer, input, field } = classes || {}\n return (\n <div aria-label={componentType} className={cn('flex w-full flex-col gap-1', root)}>\n <div className={cn('relative w-full select-none', field)}>\n <InputBase\n label={label}\n value={value}\n attachmentProps={{\n ...attachmentProps\n }}\n classes={{\n container: 'border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800',\n ...inputRoot\n }}\n onClick={externalHandlers?.onClick}\n onFocus={externalHandlers?.onBlur}\n onBlur={(e) => {\n if (externalHandlers?.onBlur) {\n externalHandlers?.onBlur(e)\n }\n handleBlur()\n }}\n renderValues={() => (\n <NumericFormat\n id={inputId}\n readOnly\n aria-invalid={invalid ? 'true' : 'false'}\n value={value}\n disabled={disabled}\n suffix={` ${getInputSliderSuffix(suffix, value)} ${additionalSuffix ?? ''}`}\n thousandsGroupStyle='thousand'\n thousandSeparator={' '}\n allowNegative={false}\n getInputRef={mergeRefs(inputRef, ref)}\n onValueChange={({ floatValue }) => {\n if (floatValue) {\n if (onChange) onChange(floatValue)\n if (externalHandlers?.onInputChange) {\n externalHandlers.onInputChange(floatValue)\n }\n }\n }}\n data-test-id='slider'\n className={cn(\n 'group/slider desk-title-bold-s w-full bg-color-transparent text-color-dark outline-none transition-all',\n input\n )}\n {...props}\n />\n )}\n />\n <SliderInner\n classes={{ ...slider }}\n marks={marks}\n step={null}\n value={value ?? 0}\n disabled={disabled}\n min={Number(sliderMin)}\n max={Number(sliderMax)}\n onChange={handleChangeSlider}\n />\n </div>\n <div className={cn('flex justify-between', textContainer)}>\n {sliderMin && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textLeft)}>\n {getInputSliderSuffix(suffix, sliderMin, false)}\n </span>\n )}\n {sliderMax && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textRight)}>\n {getInputSliderSuffix(suffix, sliderMax, false)}\n </span>\n )}\n </div>\n </div>\n )\n }\n)\n"],"names":["SliderMarks","forwardRef","classes","invalid","externalHandlers","disabled","value","onChange","suffix","label","marks","attachmentProps","additionalSuffix","componentType","props","ref","inputId","React","inputRef","sliderMin","sliderMax","handleChangeSlider","handleBlur","useSliderMarks","root","slider","textLeft","textRight","inputRoot","textContainer","input","field","jsxs","cn","jsx","InputBase","e","NumericFormat","getInputSliderSuffix","mergeRefs","floatValue","SliderInner"],"mappings":"muDAUO,MAAMA,GAAcC,EACzB,CACE,CACE,QAAAC,EACA,QAAAC,EACA,iBAAAC,EACA,SAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,MAAAC,EACA,MAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,MAAMC,EAAUC,EAAM,MAAA,EAEhBC,EAAWD,EAAM,OAAyB,IAAI,EAE9C,CAAE,UAAAE,EAAW,UAAAC,EAAW,mBAAAC,EAAoB,WAAAC,CAAA,EAAeC,EAAe,CAC9E,MAAAb,EACA,SAAAH,EACA,MAAAD,CAAA,CACD,EAEK,CAAE,KAAAkB,EAAM,OAAAC,EAAQ,SAAAC,EAAU,UAAAC,EAAW,UAAAC,EAAW,cAAAC,EAAe,MAAAC,EAAO,MAAAC,CAAA,EAAU7B,GAAW,CAAA,EACjG,OACE8B,EAAC,OAAI,aAAYnB,EAAe,UAAWoB,EAAG,6BAA8BT,CAAI,EAC9E,SAAA,CAAAQ,EAAC,MAAA,CAAI,UAAWC,EAAG,8BAA+BF,CAAK,EACrD,SAAA,CAAAG,EAACC,EAAA,CACC,MAAA1B,EACA,MAAAH,EACA,gBAAiB,CACf,GAAGK,CAAA,EAEL,QAAS,CACP,UAAW,qFACX,GAAGiB,CAAA,EAEL,QAASxB,GAAA,YAAAA,EAAkB,QAC3B,QAASA,GAAA,YAAAA,EAAkB,OAC3B,OAASgC,GAAM,CACThC,GAAA,MAAAA,EAAkB,SACpBA,GAAA,MAAAA,EAAkB,OAAOgC,IAE3Bd,EAAA,CAAW,EAEb,aAAc,IACZY,EAACG,EAAA,CACC,GAAIrB,EACJ,SAAQ,GACR,eAAcb,EAAU,OAAS,QACjC,MAAAG,EACA,SAAAD,EACA,OAAQ,IAAIiC,EAAqB9B,EAAQF,CAAK,CAAC,IAAIM,GAAoB,EAAE,GACzE,oBAAoB,WACpB,kBAAmB,IACnB,cAAe,GACf,YAAa2B,EAAUrB,EAAUH,CAAG,EACpC,cAAe,CAAC,CAAE,WAAAyB,KAAiB,CAC7BA,IACEjC,KAAmBiC,CAAU,EAC7BpC,GAAA,MAAAA,EAAkB,eACpBA,EAAiB,cAAcoC,CAAU,EAE7C,EAEF,eAAa,SACb,UAAWP,EACT,yGACAH,CAAA,EAED,GAAGhB,CAAA,CAAA,CACN,CAAA,EAGJoB,EAACO,EAAA,CACC,QAAS,CAAE,GAAGhB,CAAA,EACd,MAAAf,EACA,KAAM,KACN,MAAOJ,GAAS,EAChB,SAAAD,EACA,IAAK,OAAOc,CAAS,EACrB,IAAK,OAAOC,CAAS,EACrB,SAAUC,CAAA,CAAA,CACZ,EACF,IACC,MAAA,CAAI,UAAWY,EAAG,uBAAwBJ,CAAa,EACrD,SAAA,CAAAV,GACCe,EAAC,OAAA,CAAK,UAAWD,EAAG,0CAA2CP,CAAQ,EACpE,SAAAY,EAAqB9B,EAAQW,EAAW,EAAK,CAAA,CAChD,EAEDC,GACCc,EAAC,OAAA,CAAK,UAAWD,EAAG,0CAA2CN,CAAS,EACrE,SAAAW,EAAqB9B,EAAQY,EAAW,EAAK,CAAA,CAChD,CAAA,CAAA,CAEJ,CAAA,EACF,CAAA,CAGN"}
1
+ {"version":3,"file":"SliderMarks.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderMarks/SliderMarks.tsx"],"sourcesContent":["import * as React from 'react'\nimport { forwardRef } from 'react'\nimport { NumericFormat } from 'react-number-format'\nimport { getInputSliderSuffix } from '../../model/helpers'\nimport { type SliderMarksProps } from '../../model/types'\nimport { SliderInner } from '../../ui/Slider'\nimport { useSliderMarks } from './hooks/useSliderMarks'\nimport { InputBase } from '$/shared/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nexport const SliderMarks = forwardRef<HTMLInputElement, SliderMarksProps>(\n (\n {\n classes,\n invalid,\n externalHandlers,\n disabled,\n value,\n onChange,\n suffix,\n label,\n marks,\n attachmentProps,\n additionalSuffix,\n componentType,\n ...props\n },\n ref\n ) => {\n const inputId = React.useId()\n\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const { sliderMin, sliderMax, handleChangeSlider, handleBlur } = useSliderMarks({\n marks,\n onChange,\n value\n })\n\n const { root, slider, textLeft, textRight, inputRoot, textContainer, input, field } = classes || {}\n return (\n <div aria-label={componentType} className={cn('flex w-full flex-col gap-1', root)}>\n <div className={cn('relative w-full select-none', field)}>\n <InputBase\n label={label}\n value={value}\n attachmentProps={{\n ...attachmentProps\n }}\n classes={{\n container: 'border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800',\n ...inputRoot\n }}\n onClick={externalHandlers?.onClick}\n onFocus={externalHandlers?.onBlur}\n onBlur={(e) => {\n if (externalHandlers?.onBlur) {\n externalHandlers?.onBlur(e)\n }\n handleBlur()\n }}\n renderValues={() => (\n <NumericFormat\n id={inputId}\n readOnly\n aria-invalid={invalid ? 'true' : 'false'}\n value={value}\n disabled={disabled}\n suffix={` ${getInputSliderSuffix(suffix, value)} ${additionalSuffix ?? ''}`}\n thousandsGroupStyle='thousand'\n thousandSeparator={' '}\n allowNegative={false}\n getInputRef={mergeRefs(inputRef, ref)}\n onValueChange={({ floatValue }) => {\n if (floatValue) {\n if (onChange) onChange(floatValue)\n if (externalHandlers?.onInputChange) {\n externalHandlers.onInputChange(floatValue)\n }\n }\n }}\n data-test-id='slider'\n className={cn(\n 'group/slider desk-title-bold-s w-full bg-color-transparent text-color-dark outline-none transition-all',\n input\n )}\n {...props}\n />\n )}\n />\n <SliderInner\n classes={{ ...slider }}\n marks={marks}\n step={null}\n value={value ?? 0}\n disabled={disabled}\n min={Number(sliderMin)}\n max={Number(sliderMax)}\n onChange={handleChangeSlider}\n />\n </div>\n <div className={cn('flex justify-between', textContainer)}>\n {sliderMin && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textLeft)}>\n {getInputSliderSuffix(suffix, sliderMin, false)}\n </span>\n )}\n {sliderMax && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textRight)}>\n {getInputSliderSuffix(suffix, sliderMax, false)}\n </span>\n )}\n </div>\n </div>\n )\n }\n)\n"],"names":["SliderMarks","forwardRef","classes","invalid","externalHandlers","disabled","value","onChange","suffix","label","marks","attachmentProps","additionalSuffix","componentType","props","ref","inputId","React","inputRef","sliderMin","sliderMax","handleChangeSlider","handleBlur","useSliderMarks","root","slider","textLeft","textRight","inputRoot","textContainer","input","field","jsxs","cn","jsx","InputBase","e","NumericFormat","getInputSliderSuffix","mergeRefs","floatValue","SliderInner"],"mappings":"muDAUO,MAAMA,GAAcC,EACzB,CACE,CACE,QAAAC,EACA,QAAAC,EACA,iBAAAC,EACA,SAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,MAAAC,EACA,MAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,MAAMC,EAAUC,EAAM,MAAA,EAEhBC,EAAWD,EAAM,OAAyB,IAAI,EAE9C,CAAE,UAAAE,EAAW,UAAAC,EAAW,mBAAAC,EAAoB,WAAAC,CAAA,EAAeC,EAAe,CAC9E,MAAAb,EACA,SAAAH,EACA,MAAAD,CAAA,CACD,EAEK,CAAE,KAAAkB,EAAM,OAAAC,EAAQ,SAAAC,EAAU,UAAAC,EAAW,UAAAC,EAAW,cAAAC,EAAe,MAAAC,EAAO,MAAAC,CAAA,EAAU7B,GAAW,CAAA,EACjG,OACE8B,EAAC,OAAI,aAAYnB,EAAe,UAAWoB,EAAG,6BAA8BT,CAAI,EAC9E,SAAA,CAAAQ,EAAC,MAAA,CAAI,UAAWC,EAAG,8BAA+BF,CAAK,EACrD,SAAA,CAAAG,EAACC,EAAA,CACC,MAAA1B,EACA,MAAAH,EACA,gBAAiB,CACf,GAAGK,CAAA,EAEL,QAAS,CACP,UAAW,qFACX,GAAGiB,CAAA,EAEL,QAASxB,GAAA,YAAAA,EAAkB,QAC3B,QAASA,GAAA,YAAAA,EAAkB,OAC3B,OAASgC,GAAM,CACThC,GAAA,MAAAA,EAAkB,SACpBA,GAAA,MAAAA,EAAkB,OAAOgC,IAE3Bd,EAAA,CACF,EACA,aAAc,IACZY,EAACG,EAAA,CACC,GAAIrB,EACJ,SAAQ,GACR,eAAcb,EAAU,OAAS,QACjC,MAAAG,EACA,SAAAD,EACA,OAAQ,IAAIiC,EAAqB9B,EAAQF,CAAK,CAAC,IAAIM,GAAoB,EAAE,GACzE,oBAAoB,WACpB,kBAAmB,IACnB,cAAe,GACf,YAAa2B,EAAUrB,EAAUH,CAAG,EACpC,cAAe,CAAC,CAAE,WAAAyB,KAAiB,CAC7BA,IACEjC,KAAmBiC,CAAU,EAC7BpC,GAAA,MAAAA,EAAkB,eACpBA,EAAiB,cAAcoC,CAAU,EAG/C,EACA,eAAa,SACb,UAAWP,EACT,yGACAH,CAAA,EAED,GAAGhB,CAAA,CAAA,CACN,CAAA,EAGJoB,EAACO,EAAA,CACC,QAAS,CAAE,GAAGhB,CAAA,EACd,MAAAf,EACA,KAAM,KACN,MAAOJ,GAAS,EAChB,SAAAD,EACA,IAAK,OAAOc,CAAS,EACrB,IAAK,OAAOC,CAAS,EACrB,SAAUC,CAAA,CAAA,CACZ,EACF,IACC,MAAA,CAAI,UAAWY,EAAG,uBAAwBJ,CAAa,EACrD,SAAA,CAAAV,GACCe,EAAC,OAAA,CAAK,UAAWD,EAAG,0CAA2CP,CAAQ,EACpE,SAAAY,EAAqB9B,EAAQW,EAAW,EAAK,CAAA,CAChD,EAEDC,GACCc,EAAC,OAAA,CAAK,UAAWD,EAAG,0CAA2CN,CAAS,EACrE,SAAAW,EAAqB9B,EAAQY,EAAW,EAAK,CAAA,CAChD,CAAA,CAAA,CAEJ,CAAA,EACF,CAEJ,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSliderMarks.js","sources":["../../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderMarks/hooks/useSliderMarks.ts"],"sourcesContent":["interface UseSliderMarks {\n marks: number[]\n onChange?: (value: number) => void\n value: number | undefined\n}\n\nexport const useSliderMarks = ({ marks, onChange, value }: UseSliderMarks) => {\n const sliderMin = Math.min(...marks)\n const sliderMax = Math.max(...marks)\n\n const handleChangeSlider = (value?: number) => {\n if (!value) {\n return\n }\n if (onChange) onChange(value)\n }\n\n const handleBlur = () => {\n if (value && value > sliderMax) {\n onChange?.(sliderMax)\n }\n }\n\n return {\n handleChangeSlider,\n handleBlur,\n sliderMin,\n sliderMax\n }\n}\n"],"names":["useSliderMarks","marks","onChange","value","sliderMin","sliderMax"],"mappings":"AAMO,MAAMA,EAAiB,CAAC,CAAE,MAAAC,EAAO,SAAAC,EAAU,MAAAC,KAA4B,CAC5E,MAAMC,EAAY,KAAK,IAAI,GAAGH,CAAK,EAC7BI,EAAY,KAAK,IAAI,GAAGJ,CAAK,EAenC,MAAO,CACL,mBAd0BE,GAAmB,CACxCA,GAGDD,KAAmBC,CAAK,CAAA,EAW5B,WARiB,IAAM,CACnBA,GAASA,EAAQE,IACnBH,GAAA,MAAAA,EAAWG,GACb,EAMA,UAAAD,EACA,UAAAC,CAAA,CAEJ"}
1
+ {"version":3,"file":"useSliderMarks.js","sources":["../../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderMarks/hooks/useSliderMarks.ts"],"sourcesContent":["interface UseSliderMarks {\n marks: number[]\n onChange?: (value: number) => void\n value: number | undefined\n}\n\nexport const useSliderMarks = ({ marks, onChange, value }: UseSliderMarks) => {\n const sliderMin = Math.min(...marks)\n const sliderMax = Math.max(...marks)\n\n const handleChangeSlider = (value?: number) => {\n if (!value) {\n return\n }\n if (onChange) onChange(value)\n }\n\n const handleBlur = () => {\n if (value && value > sliderMax) {\n onChange?.(sliderMax)\n }\n }\n\n return {\n handleChangeSlider,\n handleBlur,\n sliderMin,\n sliderMax\n }\n}\n"],"names":["useSliderMarks","marks","onChange","value","sliderMin","sliderMax"],"mappings":"AAMO,MAAMA,EAAiB,CAAC,CAAE,MAAAC,EAAO,SAAAC,EAAU,MAAAC,KAA4B,CAC5E,MAAMC,EAAY,KAAK,IAAI,GAAGH,CAAK,EAC7BI,EAAY,KAAK,IAAI,GAAGJ,CAAK,EAenC,MAAO,CACL,mBAd0BE,GAAmB,CACxCA,GAGDD,KAAmBC,CAAK,CAC9B,EAUE,WARiB,IAAM,CACnBA,GAASA,EAAQE,IACnBH,GAAA,MAAAA,EAAWG,GAEf,EAKE,UAAAD,EACA,UAAAC,CAAA,CAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"SliderStep.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderStep/SliderStep.tsx"],"sourcesContent":["import * as React from 'react'\nimport { forwardRef } from 'react'\nimport { NumericFormat } from 'react-number-format'\nimport { getInputSliderSuffix } from '../../model/helpers'\nimport { type SliderStepProps } from '../../model/types'\nimport { SliderInner } from '../Slider'\nimport { useSliderStep } from './hooks'\nimport { Icon, InputBase } from '$/shared/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nconst defaultIcon = (\n <Icon\n name='general/edit'\n className='size-[19px] text-icon-blue-grey-600 transition-[color] group-focus-within/icon:text-icon-blue-grey-800'\n />\n)\n\nexport const SliderStep = forwardRef<HTMLInputElement, SliderStepProps>(\n (\n {\n classes,\n invalid,\n externalHandlers,\n disabled,\n value,\n onChange,\n min,\n max,\n suffix,\n label,\n step,\n attachmentProps,\n additionalSuffix,\n readOnly,\n componentType,\n ...props\n },\n ref\n ) => {\n const inputId = React.useId()\n\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const handleIconClick = () => {\n inputRef?.current?.focus()\n }\n\n const { handleBlur, sliderStep, sliderMin, sliderMax, handleChangeSlider } = useSliderStep({\n min,\n max,\n step,\n onChange\n })\n\n const { root, slider, textLeft, textRight, inputRoot, textContainer, input, field } = classes || {}\n\n return (\n <div aria-label={componentType} className={cn('flex w-full flex-col gap-1', root)}>\n <div className={cn('relative w-full select-none', { ['select-none']: readOnly }, field)}>\n <InputBase\n label={label}\n value={value}\n attachmentProps={{\n onClickIcon: readOnly ? undefined : attachmentProps?.onClickIcon || handleIconClick,\n icon: readOnly ? undefined : attachmentProps?.icon || defaultIcon,\n ...attachmentProps\n }}\n classes={{\n container: 'border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800',\n ...inputRoot\n }}\n onBlur={(e) => {\n handleBlur(value)\n if (props?.onBlur) props?.onBlur(e)\n if (externalHandlers?.onBlur) externalHandlers.onBlur(e)\n }}\n onClick={externalHandlers?.onClick}\n onFocus={externalHandlers?.onBlur}\n renderValues={() => (\n <NumericFormat\n id={inputId}\n readOnly={readOnly}\n aria-invalid={invalid ? 'true' : 'false'}\n value={value}\n disabled={disabled}\n suffix={` ${getInputSliderSuffix(suffix, value)} ${additionalSuffix ?? ''}`}\n thousandsGroupStyle='thousand'\n thousandSeparator={' '}\n allowNegative={false}\n getInputRef={mergeRefs(inputRef, ref)}\n onValueChange={({ floatValue }) => {\n if (floatValue) {\n if (onChange) onChange(floatValue)\n if (externalHandlers?.onInputChange) {\n externalHandlers.onInputChange(floatValue)\n }\n }\n }}\n data-test-id='slider'\n className={cn(\n 'group/slider desk-title-bold-s w-full bg-color-transparent text-color-dark outline-none transition-all',\n\n input\n )}\n {...props}\n />\n )}\n />\n <SliderInner\n classes={{ ...slider }}\n step={sliderStep}\n value={value ?? 0}\n disabled={disabled}\n min={Number(sliderMin)}\n max={Number(sliderMax)}\n onChange={handleChangeSlider}\n />\n </div>\n <div className={cn('flex justify-between', textContainer)}>\n {min && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textLeft)}>\n {getInputSliderSuffix(suffix, min, false)}\n </span>\n )}\n {max && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textRight)}>\n {getInputSliderSuffix(suffix, max, false)}\n </span>\n )}\n </div>\n </div>\n )\n }\n)\n"],"names":["defaultIcon","jsx","Icon","SliderStep","forwardRef","classes","invalid","externalHandlers","disabled","value","onChange","min","max","suffix","label","step","attachmentProps","additionalSuffix","readOnly","componentType","props","ref","inputId","React","inputRef","handleIconClick","_a","handleBlur","sliderStep","sliderMin","sliderMax","handleChangeSlider","useSliderStep","root","slider","textLeft","textRight","inputRoot","textContainer","input","field","jsxs","cn","InputBase","e","NumericFormat","getInputSliderSuffix","mergeRefs","floatValue","SliderInner"],"mappings":"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"}
1
+ {"version":3,"file":"SliderStep.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderStep/SliderStep.tsx"],"sourcesContent":["import * as React from 'react'\nimport { forwardRef } from 'react'\nimport { NumericFormat } from 'react-number-format'\nimport { getInputSliderSuffix } from '../../model/helpers'\nimport { type SliderStepProps } from '../../model/types'\nimport { SliderInner } from '../Slider'\nimport { useSliderStep } from './hooks'\nimport { Icon, InputBase } from '$/shared/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nconst defaultIcon = (\n <Icon\n name='general/edit'\n className='size-[19px] text-icon-blue-grey-600 transition-[color] group-focus-within/icon:text-icon-blue-grey-800'\n />\n)\n\nexport const SliderStep = forwardRef<HTMLInputElement, SliderStepProps>(\n (\n {\n classes,\n invalid,\n externalHandlers,\n disabled,\n value,\n onChange,\n min,\n max,\n suffix,\n label,\n step,\n attachmentProps,\n additionalSuffix,\n readOnly,\n componentType,\n ...props\n },\n ref\n ) => {\n const inputId = React.useId()\n\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const handleIconClick = () => {\n inputRef?.current?.focus()\n }\n\n const { handleBlur, sliderStep, sliderMin, sliderMax, handleChangeSlider } = useSliderStep({\n min,\n max,\n step,\n onChange\n })\n\n const { root, slider, textLeft, textRight, inputRoot, textContainer, input, field } = classes || {}\n\n return (\n <div aria-label={componentType} className={cn('flex w-full flex-col gap-1', root)}>\n <div className={cn('relative w-full select-none', { ['select-none']: readOnly }, field)}>\n <InputBase\n label={label}\n value={value}\n attachmentProps={{\n onClickIcon: readOnly ? undefined : attachmentProps?.onClickIcon || handleIconClick,\n icon: readOnly ? undefined : attachmentProps?.icon || defaultIcon,\n ...attachmentProps\n }}\n classes={{\n container: 'border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800',\n ...inputRoot\n }}\n onBlur={(e) => {\n handleBlur(value)\n if (props?.onBlur) props?.onBlur(e)\n if (externalHandlers?.onBlur) externalHandlers.onBlur(e)\n }}\n onClick={externalHandlers?.onClick}\n onFocus={externalHandlers?.onBlur}\n renderValues={() => (\n <NumericFormat\n id={inputId}\n readOnly={readOnly}\n aria-invalid={invalid ? 'true' : 'false'}\n value={value}\n disabled={disabled}\n suffix={` ${getInputSliderSuffix(suffix, value)} ${additionalSuffix ?? ''}`}\n thousandsGroupStyle='thousand'\n thousandSeparator={' '}\n allowNegative={false}\n getInputRef={mergeRefs(inputRef, ref)}\n onValueChange={({ floatValue }) => {\n if (floatValue) {\n if (onChange) onChange(floatValue)\n if (externalHandlers?.onInputChange) {\n externalHandlers.onInputChange(floatValue)\n }\n }\n }}\n data-test-id='slider'\n className={cn(\n 'group/slider desk-title-bold-s w-full bg-color-transparent text-color-dark outline-none transition-all',\n\n input\n )}\n {...props}\n />\n )}\n />\n <SliderInner\n classes={{ ...slider }}\n step={sliderStep}\n value={value ?? 0}\n disabled={disabled}\n min={Number(sliderMin)}\n max={Number(sliderMax)}\n onChange={handleChangeSlider}\n />\n </div>\n <div className={cn('flex justify-between', textContainer)}>\n {min && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textLeft)}>\n {getInputSliderSuffix(suffix, min, false)}\n </span>\n )}\n {max && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textRight)}>\n {getInputSliderSuffix(suffix, max, false)}\n </span>\n )}\n </div>\n </div>\n )\n }\n)\n"],"names":["defaultIcon","jsx","Icon","SliderStep","forwardRef","classes","invalid","externalHandlers","disabled","value","onChange","min","max","suffix","label","step","attachmentProps","additionalSuffix","readOnly","componentType","props","ref","inputId","React","inputRef","handleIconClick","_a","handleBlur","sliderStep","sliderMin","sliderMax","handleChangeSlider","useSliderStep","root","slider","textLeft","textRight","inputRoot","textContainer","input","field","jsxs","cn","InputBase","e","NumericFormat","getInputSliderSuffix","mergeRefs","floatValue","SliderInner"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSliderStep.js","sources":["../../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderStep/hooks/useSliderStep.ts"],"sourcesContent":["interface UseSliderStep {\n min: number\n max: number\n step: number\n onChange?: (value: number) => void\n}\n\nexport const useSliderStep = ({ min, max, step, onChange }: UseSliderStep) => {\n const sliderStep = step ?? 1\n\n const sliderMin = min\n const sliderMax = max\n\n const handleBlur = (value: number | undefined) => {\n if (!value) return\n\n if (value > max) {\n if (onChange) onChange(max)\n }\n if (value < min) {\n if (onChange) onChange(min)\n }\n }\n\n const handleChangeSlider = (value?: number) => {\n if (!value) {\n return\n }\n if (onChange) onChange(value)\n }\n\n return {\n handleBlur,\n handleChangeSlider,\n sliderStep,\n sliderMin,\n sliderMax\n }\n}\n"],"names":["useSliderStep","min","max","step","onChange","value"],"mappings":"AAOO,MAAMA,EAAgB,CAAC,CAAE,IAAAC,EAAK,IAAAC,EAAK,KAAAC,EAAM,SAAAC,MAwBvC,CACL,WAnBkBC,GAA8B,CAC3CA,IAEDA,EAAQH,GACNE,KAAmBF,CAAG,EAExBG,EAAQJ,GACNG,KAAmBH,CAAG,EAC5B,EAYA,mBAT0BI,GAAmB,CACxCA,GAGDD,KAAmBC,CAAK,CAAA,EAM5B,WA1BiBF,GAAQ,EA2BzB,UAzBgBF,EA0BhB,UAzBgBC,CAyBhB"}
1
+ {"version":3,"file":"useSliderStep.js","sources":["../../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderStep/hooks/useSliderStep.ts"],"sourcesContent":["interface UseSliderStep {\n min: number\n max: number\n step: number\n onChange?: (value: number) => void\n}\n\nexport const useSliderStep = ({ min, max, step, onChange }: UseSliderStep) => {\n const sliderStep = step ?? 1\n\n const sliderMin = min\n const sliderMax = max\n\n const handleBlur = (value: number | undefined) => {\n if (!value) return\n\n if (value > max) {\n if (onChange) onChange(max)\n }\n if (value < min) {\n if (onChange) onChange(min)\n }\n }\n\n const handleChangeSlider = (value?: number) => {\n if (!value) {\n return\n }\n if (onChange) onChange(value)\n }\n\n return {\n handleBlur,\n handleChangeSlider,\n sliderStep,\n sliderMin,\n sliderMax\n }\n}\n"],"names":["useSliderStep","min","max","step","onChange","value"],"mappings":"AAOO,MAAMA,EAAgB,CAAC,CAAE,IAAAC,EAAK,IAAAC,EAAK,KAAAC,EAAM,SAAAC,MAwBvC,CACL,WAnBkBC,GAA8B,CAC3CA,IAEDA,EAAQH,GACNE,KAAmBF,CAAG,EAExBG,EAAQJ,GACNG,KAAmBH,CAAG,EAE9B,EAWE,mBAT0BI,GAAmB,CACxCA,GAGDD,KAAmBC,CAAK,CAC9B,EAKE,WA1BiBF,GAAQ,EA2BzB,UAzBgBF,EA0BhB,UAzBgBC,CAyBhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/switch/Switch.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { Root, type SwitchProps, Thumb } from '@radix-ui/react-switch'\nimport { cn } from '$/shared/utils'\n\ntype SwitchBaseClasses = {\n root?: string\n thumb?: string\n}\n\nexport type ExternalHandlers = {\n onChange?: (value: boolean) => void\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLButtonElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLButtonElement>) => void\n}\n\nexport type SwitchBaseProps = SwitchProps & {\n classes?: SwitchBaseClasses\n externalHandlers?: ExternalHandlers\n invalid?: boolean\n}\n\nexport const SwitchBase = forwardRef<HTMLButtonElement, SwitchBaseProps>(\n ({ classes, className, disabled, invalid, externalHandlers, onCheckedChange, ...props }, ref) => {\n const { onChange: externalOnChange, ...restHandlers } = externalHandlers || {}\n\n const onChange = (value: boolean) => {\n if (onCheckedChange) onCheckedChange(value)\n if (externalOnChange) externalOnChange(value)\n }\n\n return (\n <Root\n {...props}\n {...restHandlers}\n ref={ref}\n onCheckedChange={onChange}\n disabled={disabled}\n aria-invalid={invalid}\n className={cn(\n 'h-6 w-10 rounded-full bg-color-blue-grey-300 p-[2px] outline-2',\n 'outline-offset-4 outline-transparent focus:outline-primary-focus',\n 'group transition-all hover:bg-color-blue-grey-500',\n 'data-[state=checked]:bg-color-primary-default',\n 'hover:data-[state=checked]:bg-color-primary-hover',\n { 'data-[state=checked]:!bg-color-primary-disabled data-[state=unchecked]:!bg-color-blue-grey-200': disabled },\n className,\n classes?.root\n )}\n >\n <Thumb\n className={cn(\n 'block size-5 rounded-full bg-color-white',\n 'duration-100 will-change-transform',\n 'data-[state=checked]:translate-x-4',\n 'group-active:w-full data-[state=checked]:group-active:translate-x-0',\n classes?.thumb\n )}\n />\n </Root>\n )\n }\n)\nSwitchBase.displayName = 'SwitchBase'\n"],"names":["SwitchBase","forwardRef","classes","className","disabled","invalid","externalHandlers","onCheckedChange","props","ref","externalOnChange","restHandlers","jsx","Root","value","cn","Thumb"],"mappings":"8NAsBO,MAAMA,EAAaC,EACxB,CAAC,CAAE,QAAAC,EAAS,UAAAC,EAAW,SAAAC,EAAU,QAAAC,EAAS,iBAAAC,EAAkB,gBAAAC,EAAiB,GAAGC,CAAA,EAASC,IAAQ,CAC/F,KAAM,CAAE,SAAUC,EAAkB,GAAGC,CAAA,EAAiBL,GAAoB,CAAA,EAO5E,OACEM,EAACC,EAAA,CACE,GAAGL,EACH,GAAGG,EACJ,IAAAF,EACA,gBAVcK,GAAmB,CAC/BP,KAAiCO,CAAK,EACtCJ,KAAmCI,CAAK,CAAA,EAS1C,SAAAV,EACA,eAAcC,EACd,UAAWU,EACT,iEACA,mEACA,oDACA,gDACA,oDACA,CAAE,iGAAkGX,CAAA,EACpGD,EACAD,GAAA,YAAAA,EAAS,IAAA,EAGX,SAAAU,EAACI,EAAA,CACC,UAAWD,EACT,2CACA,qCACA,qCACA,sEACAb,GAAA,YAAAA,EAAS,KAAA,CACX,CAAA,CACF,CAAA,CACF,CAGN,EACAF,EAAW,YAAc"}
1
+ {"version":3,"file":"Switch.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/switch/Switch.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { Root, type SwitchProps, Thumb } from '@radix-ui/react-switch'\nimport { cn } from '$/shared/utils'\n\ntype SwitchBaseClasses = {\n root?: string\n thumb?: string\n}\n\nexport type ExternalHandlers = {\n onChange?: (value: boolean) => void\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLButtonElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLButtonElement>) => void\n}\n\nexport type SwitchBaseProps = SwitchProps & {\n classes?: SwitchBaseClasses\n externalHandlers?: ExternalHandlers\n invalid?: boolean\n}\n\nexport const SwitchBase = forwardRef<HTMLButtonElement, SwitchBaseProps>(\n ({ classes, className, disabled, invalid, externalHandlers, onCheckedChange, ...props }, ref) => {\n const { onChange: externalOnChange, ...restHandlers } = externalHandlers || {}\n\n const onChange = (value: boolean) => {\n if (onCheckedChange) onCheckedChange(value)\n if (externalOnChange) externalOnChange(value)\n }\n\n return (\n <Root\n {...props}\n {...restHandlers}\n ref={ref}\n onCheckedChange={onChange}\n disabled={disabled}\n aria-invalid={invalid}\n className={cn(\n 'h-6 w-10 rounded-full bg-color-blue-grey-300 p-[2px] outline-2',\n 'outline-offset-4 outline-transparent focus:outline-primary-focus',\n 'group transition-all hover:bg-color-blue-grey-500',\n 'data-[state=checked]:bg-color-primary-default',\n 'hover:data-[state=checked]:bg-color-primary-hover',\n { 'data-[state=checked]:!bg-color-primary-disabled data-[state=unchecked]:!bg-color-blue-grey-200': disabled },\n className,\n classes?.root\n )}\n >\n <Thumb\n className={cn(\n 'block size-5 rounded-full bg-color-white',\n 'duration-100 will-change-transform',\n 'data-[state=checked]:translate-x-4',\n 'group-active:w-full data-[state=checked]:group-active:translate-x-0',\n classes?.thumb\n )}\n />\n </Root>\n )\n }\n)\nSwitchBase.displayName = 'SwitchBase'\n"],"names":["SwitchBase","forwardRef","classes","className","disabled","invalid","externalHandlers","onCheckedChange","props","ref","externalOnChange","restHandlers","jsx","Root","value","cn","Thumb"],"mappings":"8NAsBO,MAAMA,EAAaC,EACxB,CAAC,CAAE,QAAAC,EAAS,UAAAC,EAAW,SAAAC,EAAU,QAAAC,EAAS,iBAAAC,EAAkB,gBAAAC,EAAiB,GAAGC,CAAA,EAASC,IAAQ,CAC/F,KAAM,CAAE,SAAUC,EAAkB,GAAGC,CAAA,EAAiBL,GAAoB,CAAA,EAO5E,OACEM,EAACC,EAAA,CACE,GAAGL,EACH,GAAGG,EACJ,IAAAF,EACA,gBAVcK,GAAmB,CAC/BP,KAAiCO,CAAK,EACtCJ,KAAmCI,CAAK,CAC9C,EAQI,SAAAV,EACA,eAAcC,EACd,UAAWU,EACT,iEACA,mEACA,oDACA,gDACA,oDACA,CAAE,iGAAkGX,CAAA,EACpGD,EACAD,GAAA,YAAAA,EAAS,IAAA,EAGX,SAAAU,EAACI,EAAA,CACC,UAAWD,EACT,2CACA,qCACA,qCACA,sEACAb,GAAA,YAAAA,EAAS,KAAA,CACX,CAAA,CACF,CAAA,CAGN,CACF,EACAF,EAAW,YAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/textarea/Textarea.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react'\nimport { FieldAttachment } from '../../ui'\nimport { type DeepPartial } from '$/shared/types'\nimport { cn } from '$/shared/utils'\n\ntype TextareaBaseClasses = {\n container?: string\n textarea?: string\n label?: string\n}\n\ntype FieldAttachmentProps = React.ComponentPropsWithoutRef<typeof FieldAttachment>\n\ntype ExternalHandlers = {\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void\n onClick?: (event: React.MouseEvent<HTMLTextAreaElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLTextAreaElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLTextAreaElement>) => void\n}\n\nexport type TextareaBaseProps = Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size' | 'className'> & {\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: TextareaBaseClasses\n /**\n * Отображаемый placeholder\n */\n label: string\n /**\n * Отображение не валидного поля\n */\n invalid?: boolean\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<FieldAttachmentProps>\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n}\n\nexport const TextareaBase = forwardRef<HTMLTextAreaElement, TextareaBaseProps>(\n ({ label, value, invalid, disabled, classes, attachmentProps, rows = 4, externalHandlers, onChange, ...props }, ref) => {\n const id = useId()\n\n const { onChange: externalOnChange, ...restHandlers } = externalHandlers || {}\n\n const onValueChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChange) onChange(event)\n if (externalOnChange) externalOnChange(event)\n }\n\n return (\n <div\n className={cn(\n 'relative flex w-full items-start gap-x-4 rounded-sm bg-color-blue-grey-100 pb-4 pl-4 pr-1 pt-2',\n '[&_label]:focus-within:text-color-tetriary',\n 'hover:bg-color-blue-grey-200',\n 'border-[1px] border-transparent focus-within:border-blue-grey-800',\n {\n 'border-secondary-default': invalid\n },\n classes?.container\n )}\n data-test-id='textarea-root'\n >\n <div className='flex w-full flex-col'>\n <label\n htmlFor={id}\n className={cn(\n 'desk-body-regular-s pointer-events-none',\n 'text-color-blue-grey-600 duration-100',\n {\n 'text-color-disabled': disabled\n },\n classes?.label\n )}\n >\n {label}\n </label>\n <textarea\n {...props}\n {...restHandlers}\n rows={rows}\n disabled={disabled}\n value={value ?? ''}\n ref={ref}\n id={id}\n onChange={onValueChange}\n className={cn(\n 'customScrollbar-y peer desk-body-regular-l w-full overflow-y-auto bg-color-transparent',\n 'resize-none text-color-dark outline-none placeholder:text-color-blue-grey-600',\n {\n 'placeholder:text-color-disabled': disabled\n },\n classes?.textarea\n )}\n />\n </div>\n {attachmentProps && <FieldAttachment {...attachmentProps} />}\n </div>\n )\n }\n)\nTextareaBase.displayName = 'TextareaBase'\n"],"names":["TextareaBase","forwardRef","label","value","invalid","disabled","classes","attachmentProps","rows","externalHandlers","onChange","props","ref","id","useId","externalOnChange","restHandlers","onValueChange","event","jsxs","cn","jsx","FieldAttachment"],"mappings":"2NA2CO,MAAMA,EAAeC,EAC1B,CAAC,CAAE,MAAAC,EAAO,MAAAC,EAAO,QAAAC,EAAS,SAAAC,EAAU,QAAAC,EAAS,gBAAAC,EAAiB,KAAAC,EAAO,EAAG,iBAAAC,EAAkB,SAAAC,EAAU,GAAGC,CAAA,EAASC,IAAQ,CACtH,MAAMC,EAAKC,EAAA,EAEL,CAAE,SAAUC,EAAkB,GAAGC,CAAA,EAAiBP,GAAoB,CAAA,EAEtEQ,EAAiBC,GAAkD,CACnER,KAAmBQ,CAAK,EACxBH,KAAmCG,CAAK,CAAA,EAG9C,OACEC,EAAC,MAAA,CACC,UAAWC,EACT,iGACA,6CACA,+BACA,oEACA,CACE,2BAA4BhB,CAAA,EAE9BE,GAAA,YAAAA,EAAS,SAAA,EAEX,eAAa,gBAEb,SAAA,CAAAa,EAAC,MAAA,CAAI,UAAU,uBACb,SAAA,CAAAE,EAAC,QAAA,CACC,QAASR,EACT,UAAWO,EACT,0CACA,wCACA,CACE,sBAAuBf,CAAA,EAEzBC,GAAA,YAAAA,EAAS,KAAA,EAGV,SAAAJ,CAAA,CAAA,EAEHmB,EAAC,WAAA,CACE,GAAGV,EACH,GAAGK,EACJ,KAAAR,EACA,SAAAH,EACA,MAAOF,GAAS,GAChB,IAAAS,EACA,GAAAC,EACA,SAAUI,EACV,UAAWG,EACT,yFACA,gFACA,CACE,kCAAmCf,CAAA,EAErCC,GAAA,YAAAA,EAAS,QAAA,CACX,CAAA,CACF,EACF,EACCC,GAAmBc,EAACC,EAAA,CAAiB,GAAGf,CAAA,CAAiB,CAAA,CAAA,CAAA,CAC5D,CAGN,EACAP,EAAa,YAAc"}
1
+ {"version":3,"file":"Textarea.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/textarea/Textarea.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react'\nimport { FieldAttachment } from '../../ui'\nimport { type DeepPartial } from '$/shared/types'\nimport { cn } from '$/shared/utils'\n\ntype TextareaBaseClasses = {\n container?: string\n textarea?: string\n label?: string\n}\n\ntype FieldAttachmentProps = React.ComponentPropsWithoutRef<typeof FieldAttachment>\n\ntype ExternalHandlers = {\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void\n onClick?: (event: React.MouseEvent<HTMLTextAreaElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLTextAreaElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLTextAreaElement>) => void\n}\n\nexport type TextareaBaseProps = Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size' | 'className'> & {\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: TextareaBaseClasses\n /**\n * Отображаемый placeholder\n */\n label: string\n /**\n * Отображение не валидного поля\n */\n invalid?: boolean\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<FieldAttachmentProps>\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n}\n\nexport const TextareaBase = forwardRef<HTMLTextAreaElement, TextareaBaseProps>(\n ({ label, value, invalid, disabled, classes, attachmentProps, rows = 4, externalHandlers, onChange, ...props }, ref) => {\n const id = useId()\n\n const { onChange: externalOnChange, ...restHandlers } = externalHandlers || {}\n\n const onValueChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChange) onChange(event)\n if (externalOnChange) externalOnChange(event)\n }\n\n return (\n <div\n className={cn(\n 'relative flex w-full items-start gap-x-4 rounded-sm bg-color-blue-grey-100 pb-4 pl-4 pr-1 pt-2',\n '[&_label]:focus-within:text-color-tetriary',\n 'hover:bg-color-blue-grey-200',\n 'border-[1px] border-transparent focus-within:border-blue-grey-800',\n {\n 'border-secondary-default': invalid\n },\n classes?.container\n )}\n data-test-id='textarea-root'\n >\n <div className='flex w-full flex-col'>\n <label\n htmlFor={id}\n className={cn(\n 'desk-body-regular-s pointer-events-none',\n 'text-color-blue-grey-600 duration-100',\n {\n 'text-color-disabled': disabled\n },\n classes?.label\n )}\n >\n {label}\n </label>\n <textarea\n {...props}\n {...restHandlers}\n rows={rows}\n disabled={disabled}\n value={value ?? ''}\n ref={ref}\n id={id}\n onChange={onValueChange}\n className={cn(\n 'customScrollbar-y peer desk-body-regular-l w-full overflow-y-auto bg-color-transparent',\n 'resize-none text-color-dark outline-none placeholder:text-color-blue-grey-600',\n {\n 'placeholder:text-color-disabled': disabled\n },\n classes?.textarea\n )}\n />\n </div>\n {attachmentProps && <FieldAttachment {...attachmentProps} />}\n </div>\n )\n }\n)\nTextareaBase.displayName = 'TextareaBase'\n"],"names":["TextareaBase","forwardRef","label","value","invalid","disabled","classes","attachmentProps","rows","externalHandlers","onChange","props","ref","id","useId","externalOnChange","restHandlers","onValueChange","event","jsxs","cn","jsx","FieldAttachment"],"mappings":"2NA2CO,MAAMA,EAAeC,EAC1B,CAAC,CAAE,MAAAC,EAAO,MAAAC,EAAO,QAAAC,EAAS,SAAAC,EAAU,QAAAC,EAAS,gBAAAC,EAAiB,KAAAC,EAAO,EAAG,iBAAAC,EAAkB,SAAAC,EAAU,GAAGC,CAAA,EAASC,IAAQ,CACtH,MAAMC,EAAKC,EAAA,EAEL,CAAE,SAAUC,EAAkB,GAAGC,CAAA,EAAiBP,GAAoB,CAAA,EAEtEQ,EAAiBC,GAAkD,CACnER,KAAmBQ,CAAK,EACxBH,KAAmCG,CAAK,CAC9C,EAEA,OACEC,EAAC,MAAA,CACC,UAAWC,EACT,iGACA,6CACA,+BACA,oEACA,CACE,2BAA4BhB,CAAA,EAE9BE,GAAA,YAAAA,EAAS,SAAA,EAEX,eAAa,gBAEb,SAAA,CAAAa,EAAC,MAAA,CAAI,UAAU,uBACb,SAAA,CAAAE,EAAC,QAAA,CACC,QAASR,EACT,UAAWO,EACT,0CACA,wCACA,CACE,sBAAuBf,CAAA,EAEzBC,GAAA,YAAAA,EAAS,KAAA,EAGV,SAAAJ,CAAA,CAAA,EAEHmB,EAAC,WAAA,CACE,GAAGV,EACH,GAAGK,EACJ,KAAAR,EACA,SAAAH,EACA,MAAOF,GAAS,GAChB,IAAAS,EACA,GAAAC,EACA,SAAUI,EACV,UAAWG,EACT,yFACA,gFACA,CACE,kCAAmCf,CAAA,EAErCC,GAAA,YAAAA,EAAS,QAAA,CACX,CAAA,CACF,EACF,EACCC,GAAmBc,EAACC,EAAA,CAAiB,GAAGf,CAAA,CAAiB,CAAA,CAAA,CAAA,CAGhE,CACF,EACAP,EAAa,YAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"UploaderBase.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/uploader/UploaderBase.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes } from 'react'\nimport { type DropzoneOptions } from 'react-dropzone'\nimport { defaultDropzoneOptions } from './model'\nimport { useUploader } from './model/hooks/useUploader'\nimport { UploaderFiles, type UploaderFilesClasses, UploaderInput, type UploaderInputClasses } from './ui'\nimport { cn } from '$/shared/utils'\n\ntype UploaderBaseClasses = {\n root?: string\n input?: UploaderInputClasses\n files?: UploaderFilesClasses\n}\n\nexport type ExternalHandlers = {\n onChange?: (files: File[]) => void\n onClick?: (event: React.MouseEvent<HTMLInputElement>) => void\n}\n\nexport interface UploaderBaseProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'placeholder' | 'value' | 'onChange'> {\n /**\n * Опции uploader-а, в нем можно валидировать файлы, указывать максимум и минимум для файлов\n * Подробнее можно узнать в типе DropzoneOptions\n */\n dropzoneOptions?: DropzoneOptions\n /**\n * Объект классов которые можно переопределить\n */\n classes?: UploaderBaseClasses\n /**\n * Доп текст под инпутом\n */\n helperText?: string\n /**\n * Сеттер значение\n * @param file - файлы\n */\n onChange?: (file: File[]) => void\n /**\n * Валидное ли значение\n */\n invalid?: boolean\n /**\n * Значение\n */\n value?: File[]\n /**\n * Внешние объект handlers\n */\n externalHandlers?: ExternalHandlers\n}\n\nexport const UploaderBase = forwardRef<HTMLInputElement, UploaderBaseProps>(\n (\n {\n classes,\n dropzoneOptions = defaultDropzoneOptions,\n name,\n value,\n disabled,\n invalid,\n onChange,\n externalHandlers,\n ...props\n }: UploaderBaseProps,\n ref\n ) => {\n const { filesStatus, removeFile, dropzoneState } = useUploader({\n controlledFiles: value,\n dropzoneOptions,\n onChange,\n externalHandlers\n })\n\n const { root, input, files } = classes || {}\n\n return (\n <>\n <div className={cn('relative mb-3 w-[476px]', root)}>\n <UploaderInput\n {...props}\n ref={ref}\n name={name}\n classes={input}\n disabled={disabled}\n invalid={invalid}\n dropzoneState={dropzoneState}\n externalHandlers={externalHandlers}\n />\n </div>\n <UploaderFiles files={value} removeFile={removeFile} classes={files} filesStatus={filesStatus} />\n </>\n )\n }\n)\n"],"names":["UploaderBase","forwardRef","classes","dropzoneOptions","defaultDropzoneOptions","name","value","disabled","invalid","onChange","externalHandlers","props","ref","filesStatus","removeFile","dropzoneState","useUploader","root","input","files","jsxs","Fragment","jsx","cn","UploaderInput","UploaderFiles"],"mappings":"03CAoDO,MAAMA,GAAeC,EAC1B,CACE,CACE,QAAAC,EACA,gBAAAC,EAAkBC,EAClB,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,QAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAAE,YAAAC,EAAa,WAAAC,EAAY,cAAAC,CAAA,EAAkBC,EAAY,CAC7D,gBAAiBV,EACjB,gBAAAH,EACA,SAAAM,EACA,iBAAAC,CAAA,CACD,EAEK,CAAE,KAAAO,EAAM,MAAAC,EAAO,MAAAC,CAAA,EAAUjB,GAAW,CAAA,EAE1C,OACEkB,EAAAC,EAAA,CACE,SAAA,CAAAC,EAAC,MAAA,CAAI,UAAWC,EAAG,0BAA2BN,CAAI,EAChD,SAAAK,EAACE,EAAA,CACE,GAAGb,EACJ,IAAAC,EACA,KAAAP,EACA,QAASa,EACT,SAAAX,EACA,QAAAC,EACA,cAAAO,EACA,iBAAAL,CAAA,CAAA,EAEJ,IACCe,EAAA,CAAc,MAAOnB,EAAO,WAAAQ,EAAwB,QAASK,EAAO,YAAAN,CAAA,CAA0B,CAAA,EACjG,CAAA,CAGN"}
1
+ {"version":3,"file":"UploaderBase.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/uploader/UploaderBase.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes } from 'react'\nimport { type DropzoneOptions } from 'react-dropzone'\nimport { defaultDropzoneOptions } from './model'\nimport { useUploader } from './model/hooks/useUploader'\nimport { UploaderFiles, type UploaderFilesClasses, UploaderInput, type UploaderInputClasses } from './ui'\nimport { cn } from '$/shared/utils'\n\ntype UploaderBaseClasses = {\n root?: string\n input?: UploaderInputClasses\n files?: UploaderFilesClasses\n}\n\nexport type ExternalHandlers = {\n onChange?: (files: File[]) => void\n onClick?: (event: React.MouseEvent<HTMLInputElement>) => void\n}\n\nexport interface UploaderBaseProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'placeholder' | 'value' | 'onChange'> {\n /**\n * Опции uploader-а, в нем можно валидировать файлы, указывать максимум и минимум для файлов\n * Подробнее можно узнать в типе DropzoneOptions\n */\n dropzoneOptions?: DropzoneOptions\n /**\n * Объект классов которые можно переопределить\n */\n classes?: UploaderBaseClasses\n /**\n * Доп текст под инпутом\n */\n helperText?: string\n /**\n * Сеттер значение\n * @param file - файлы\n */\n onChange?: (file: File[]) => void\n /**\n * Валидное ли значение\n */\n invalid?: boolean\n /**\n * Значение\n */\n value?: File[]\n /**\n * Внешние объект handlers\n */\n externalHandlers?: ExternalHandlers\n}\n\nexport const UploaderBase = forwardRef<HTMLInputElement, UploaderBaseProps>(\n (\n {\n classes,\n dropzoneOptions = defaultDropzoneOptions,\n name,\n value,\n disabled,\n invalid,\n onChange,\n externalHandlers,\n ...props\n }: UploaderBaseProps,\n ref\n ) => {\n const { filesStatus, removeFile, dropzoneState } = useUploader({\n controlledFiles: value,\n dropzoneOptions,\n onChange,\n externalHandlers\n })\n\n const { root, input, files } = classes || {}\n\n return (\n <>\n <div className={cn('relative mb-3 w-[476px]', root)}>\n <UploaderInput\n {...props}\n ref={ref}\n name={name}\n classes={input}\n disabled={disabled}\n invalid={invalid}\n dropzoneState={dropzoneState}\n externalHandlers={externalHandlers}\n />\n </div>\n <UploaderFiles files={value} removeFile={removeFile} classes={files} filesStatus={filesStatus} />\n </>\n )\n }\n)\n"],"names":["UploaderBase","forwardRef","classes","dropzoneOptions","defaultDropzoneOptions","name","value","disabled","invalid","onChange","externalHandlers","props","ref","filesStatus","removeFile","dropzoneState","useUploader","root","input","files","jsxs","Fragment","jsx","cn","UploaderInput","UploaderFiles"],"mappings":"03CAoDO,MAAMA,GAAeC,EAC1B,CACE,CACE,QAAAC,EACA,gBAAAC,EAAkBC,EAClB,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,QAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAAE,YAAAC,EAAa,WAAAC,EAAY,cAAAC,CAAA,EAAkBC,EAAY,CAC7D,gBAAiBV,EACjB,gBAAAH,EACA,SAAAM,EACA,iBAAAC,CAAA,CACD,EAEK,CAAE,KAAAO,EAAM,MAAAC,EAAO,MAAAC,CAAA,EAAUjB,GAAW,CAAA,EAE1C,OACEkB,EAAAC,EAAA,CACE,SAAA,CAAAC,EAAC,MAAA,CAAI,UAAWC,EAAG,0BAA2BN,CAAI,EAChD,SAAAK,EAACE,EAAA,CACE,GAAGb,EACJ,IAAAC,EACA,KAAAP,EACA,QAASa,EACT,SAAAX,EACA,QAAAC,EACA,cAAAO,EACA,iBAAAL,CAAA,CAAA,EAEJ,IACCe,EAAA,CAAc,MAAOnB,EAAO,WAAAQ,EAAwB,QAASK,EAAO,YAAAN,CAAA,CAA0B,CAAA,EACjG,CAEJ,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useUploader.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { type DropzoneOptions, type FileRejection, useDropzone } from 'react-dropzone'\nimport { type ExternalHandlers } from '../../UploaderBase'\nimport { bytesToMegabytes, FilesErrorCode } from '../helpers'\nimport { Notification } from '$/shared/ui/'\n\nexport type TUseUploader = {\n controlledFiles?: File[]\n dropzoneOptions: DropzoneOptions\n onChange?: (files: File[]) => void\n externalHandlers?: ExternalHandlers\n}\n\nexport const useUploader = ({ dropzoneOptions, controlledFiles = [], onChange, externalHandlers }: TUseUploader) => {\n const [filesStatus, setFilesStatus] = useState<Record<string, 'loading' | 'success' | 'error'>>({})\n\n const removeFile = (index: number) => {\n const updatedFiles = controlledFiles?.filter((_, idx) => idx !== index)\n if (onChange) onChange(updatedFiles)\n }\n\n const onDrop = (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n acceptedFiles.forEach((file) => {\n const reader = new FileReader()\n setFilesStatus((prev) => ({ ...prev, [file.name]: 'loading' }))\n\n reader.onload = () => {\n setFilesStatus((prev) => ({ ...prev, [file.name]: 'success' }))\n }\n\n reader.readAsArrayBuffer(file)\n })\n\n switch (rejectedFiles[0]?.errors[0]?.code) {\n case FilesErrorCode.FileInvalidType:\n Notification({\n intent: 'error',\n text: 'Неверный формат файла. Загрузите в формате jpg/png/pdf'\n })\n break\n case FilesErrorCode.FileTooLarge:\n Notification({\n intent: 'error',\n text: `Файл слишком большой. Максимальный размер ${dropzoneOptions.maxSize ? bytesToMegabytes(dropzoneOptions.maxSize) : 0} МБ`\n })\n break\n case FilesErrorCode.TooManyFiles:\n Notification({\n intent: 'error',\n text: `Вы загрузили слишком много файлов. Максимальное количество ${dropzoneOptions.maxFiles}`\n })\n break\n default:\n break\n }\n\n const updatedFiles = [...controlledFiles, ...acceptedFiles]\n\n if (onChange) onChange(updatedFiles)\n if (externalHandlers?.onChange) externalHandlers?.onChange(updatedFiles)\n }\n\n const dropzoneState = useDropzone({\n onDrop,\n ...dropzoneOptions\n })\n\n return { filesStatus, removeFile, dropzoneState }\n}\n"],"names":["useUploader","dropzoneOptions","controlledFiles","onChange","externalHandlers","filesStatus","setFilesStatus","useState","removeFile","index","updatedFiles","_","idx","dropzoneState","useDropzone","acceptedFiles","rejectedFiles","file","reader","prev","_b","_a","FilesErrorCode","Notification","bytesToMegabytes"],"mappings":"ggDAaO,MAAMA,GAAc,CAAC,CAAE,gBAAAC,EAAiB,gBAAAC,EAAkB,CAAA,EAAI,SAAAC,EAAU,iBAAAC,KAAqC,CAClH,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAA0D,CAAA,CAAE,EAE5FC,EAAcC,GAAkB,CACpC,MAAMC,EAAeR,GAAA,YAAAA,EAAiB,OAAO,CAACS,EAAGC,IAAQA,IAAQH,GAC7DN,KAAmBO,CAAY,CAAA,EA4C/BG,EAAgBC,EAAY,CAChC,OA1Ca,CAACC,EAAuBC,IAAmC,SAYxE,OAXAD,EAAc,QAASE,GAAS,CAC9B,MAAMC,EAAS,IAAI,WACnBZ,EAAgBa,IAAU,CAAE,GAAGA,EAAM,CAACF,EAAK,IAAI,EAAG,SAAA,EAAY,EAE9DC,EAAO,OAAS,IAAM,CACpBZ,EAAgBa,IAAU,CAAE,GAAGA,EAAM,CAACF,EAAK,IAAI,EAAG,SAAA,EAAY,CAAA,EAGhEC,EAAO,kBAAkBD,CAAI,CAAA,CAC9B,GAEOG,GAAAC,EAAAL,EAAc,CAAC,IAAf,YAAAK,EAAkB,OAAO,KAAzB,YAAAD,EAA6B,KAAA,CACnC,KAAKE,EAAe,gBAClBC,EAAa,CACX,OAAQ,QACR,KAAM,wDAAA,CACP,EACD,MACF,KAAKD,EAAe,aAClBC,EAAa,CACX,OAAQ,QACR,KAAM,6CAA6CtB,EAAgB,QAAUuB,EAAiBvB,EAAgB,OAAO,EAAI,CAAC,KAAA,CAC3H,EACD,MACF,KAAKqB,EAAe,aAClBC,EAAa,CACX,OAAQ,QACR,KAAM,8DAA8DtB,EAAgB,QAAQ,EAAA,CAC7F,EACD,KAEA,CAGJ,MAAMS,EAAe,CAAC,GAAGR,EAAiB,GAAGa,CAAa,EAEtDZ,KAAmBO,CAAY,EAC/BN,GAAA,MAAAA,EAAkB,WAAUA,GAAA,MAAAA,EAAkB,SAASM,GAAY,EAKvE,GAAGT,CAAA,CACJ,EAED,MAAO,CAAE,YAAAI,EAAa,WAAAG,EAAY,cAAAK,CAAA,CACpC"}
1
+ {"version":3,"file":"useUploader.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { type DropzoneOptions, type FileRejection, useDropzone } from 'react-dropzone'\nimport { type ExternalHandlers } from '../../UploaderBase'\nimport { bytesToMegabytes, FilesErrorCode } from '../helpers'\nimport { Notification } from '$/shared/ui/'\n\nexport type TUseUploader = {\n controlledFiles?: File[]\n dropzoneOptions: DropzoneOptions\n onChange?: (files: File[]) => void\n externalHandlers?: ExternalHandlers\n}\n\nexport const useUploader = ({ dropzoneOptions, controlledFiles = [], onChange, externalHandlers }: TUseUploader) => {\n const [filesStatus, setFilesStatus] = useState<Record<string, 'loading' | 'success' | 'error'>>({})\n\n const removeFile = (index: number) => {\n const updatedFiles = controlledFiles?.filter((_, idx) => idx !== index)\n if (onChange) onChange(updatedFiles)\n }\n\n const onDrop = (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n acceptedFiles.forEach((file) => {\n const reader = new FileReader()\n setFilesStatus((prev) => ({ ...prev, [file.name]: 'loading' }))\n\n reader.onload = () => {\n setFilesStatus((prev) => ({ ...prev, [file.name]: 'success' }))\n }\n\n reader.readAsArrayBuffer(file)\n })\n\n switch (rejectedFiles[0]?.errors[0]?.code) {\n case FilesErrorCode.FileInvalidType:\n Notification({\n intent: 'error',\n text: 'Неверный формат файла. Загрузите в формате jpg/png/pdf'\n })\n break\n case FilesErrorCode.FileTooLarge:\n Notification({\n intent: 'error',\n text: `Файл слишком большой. Максимальный размер ${dropzoneOptions.maxSize ? bytesToMegabytes(dropzoneOptions.maxSize) : 0} МБ`\n })\n break\n case FilesErrorCode.TooManyFiles:\n Notification({\n intent: 'error',\n text: `Вы загрузили слишком много файлов. Максимальное количество ${dropzoneOptions.maxFiles}`\n })\n break\n default:\n break\n }\n\n const updatedFiles = [...controlledFiles, ...acceptedFiles]\n\n if (onChange) onChange(updatedFiles)\n if (externalHandlers?.onChange) externalHandlers?.onChange(updatedFiles)\n }\n\n const dropzoneState = useDropzone({\n onDrop,\n ...dropzoneOptions\n })\n\n return { filesStatus, removeFile, dropzoneState }\n}\n"],"names":["useUploader","dropzoneOptions","controlledFiles","onChange","externalHandlers","filesStatus","setFilesStatus","useState","removeFile","index","updatedFiles","_","idx","dropzoneState","useDropzone","acceptedFiles","rejectedFiles","file","reader","prev","_b","_a","FilesErrorCode","Notification","bytesToMegabytes"],"mappings":"ggDAaO,MAAMA,GAAc,CAAC,CAAE,gBAAAC,EAAiB,gBAAAC,EAAkB,CAAA,EAAI,SAAAC,EAAU,iBAAAC,KAAqC,CAClH,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAA0D,CAAA,CAAE,EAE5FC,EAAcC,GAAkB,CACpC,MAAMC,EAAeR,GAAA,YAAAA,EAAiB,OAAO,CAACS,EAAGC,IAAQA,IAAQH,GAC7DN,KAAmBO,CAAY,CACrC,EA2CMG,EAAgBC,EAAY,CAChC,OA1Ca,CAACC,EAAuBC,IAAmC,SAYxE,OAXAD,EAAc,QAASE,GAAS,CAC9B,MAAMC,EAAS,IAAI,WACnBZ,EAAgBa,IAAU,CAAE,GAAGA,EAAM,CAACF,EAAK,IAAI,EAAG,SAAA,EAAY,EAE9DC,EAAO,OAAS,IAAM,CACpBZ,EAAgBa,IAAU,CAAE,GAAGA,EAAM,CAACF,EAAK,IAAI,EAAG,SAAA,EAAY,CAChE,EAEAC,EAAO,kBAAkBD,CAAI,CAC/B,CAAC,GAEOG,GAAAC,EAAAL,EAAc,CAAC,IAAf,YAAAK,EAAkB,OAAO,KAAzB,YAAAD,EAA6B,KAAA,CACnC,KAAKE,EAAe,gBAClBC,EAAa,CACX,OAAQ,QACR,KAAM,wDAAA,CACP,EACD,MACF,KAAKD,EAAe,aAClBC,EAAa,CACX,OAAQ,QACR,KAAM,6CAA6CtB,EAAgB,QAAUuB,EAAiBvB,EAAgB,OAAO,EAAI,CAAC,KAAA,CAC3H,EACD,MACF,KAAKqB,EAAe,aAClBC,EAAa,CACX,OAAQ,QACR,KAAM,8DAA8DtB,EAAgB,QAAQ,EAAA,CAC7F,EACD,KAEA,CAGJ,MAAMS,EAAe,CAAC,GAAGR,EAAiB,GAAGa,CAAa,EAEtDZ,KAAmBO,CAAY,EAC/BN,GAAA,MAAAA,EAAkB,WAAUA,GAAA,MAAAA,EAAkB,SAASM,GAC7D,EAIE,GAAGT,CAAA,CACJ,EAED,MAAO,CAAE,YAAAI,EAAa,WAAAG,EAAY,cAAAK,CAAA,CACpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"UploaderInput.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderInput.tsx"],"sourcesContent":["import { forwardRef, type Ref } from 'react'\nimport { type DropzoneRootProps } from 'react-dropzone'\nimport { type ExternalHandlers } from '../UploaderBase'\nimport { Icon } from '$/shared/ui/icon'\nimport { cn } from '$/shared/utils'\n\nexport type UploaderInputClasses = {\n root?: string\n input?: string\n textContainer?: string\n icon?: string\n textContent?: string\n textContentSpan?: string\n}\n\nexport interface UploaderInputProps {\n dropzoneState: DropzoneRootProps\n disabled?: boolean\n invalid?: boolean\n classes?: UploaderInputClasses\n name?: string\n externalHandlers?: ExternalHandlers\n}\n\nexport const UploaderInput = forwardRef(\n (\n { dropzoneState, classes, disabled, invalid, name, externalHandlers, ...props }: UploaderInputProps,\n ref: Ref<HTMLDivElement>\n ) => {\n const dropzoneProps = dropzoneState.getRootProps()\n return (\n <div\n className={cn(\n 'flex h-[64px] w-[476px] rounded-sm',\n 'active:border-1 active:border-solid active:border-primary-hover active:bg-color-primary-tr-pressed',\n 'focus-visible:border-1 focus-visible:border-solid focus-visible:border-primary-hover focus-visible:bg-color-primary-tr-hover focus-visible:outline-none',\n 'hover:border-1 hover:border-solid hover:border-primary-hover hover:bg-color-primary-tr-hover',\n 'border-[1.5px] border-dashed border-blue-grey-700',\n classes?.root,\n { 'bg-color-primary-light-default opacity-50': disabled },\n { 'border-negative': invalid }\n )}\n ref={ref}\n {...dropzoneProps}\n >\n <div className={cn('flex h-full w-full items-center justify-center gap-2', classes?.textContainer)}>\n <Icon name='files/upload' className={cn('text-icon-primary-default', classes?.icon)} />\n <p className={cn('desk-body-regular-l select-none text-icon-primary-default', classes?.textContent)}>\n Выберите файл\n <span className={cn('text-icon-blue-grey-600', classes?.textContentSpan)}> или перетащите сюда</span>\n </p>\n </div>\n <input\n {...props}\n {...dropzoneState.getInputProps()}\n onClick={externalHandlers?.onClick}\n name={name}\n ref={dropzoneState.inputRef}\n disabled={disabled}\n className={cn(classes?.input)}\n data-test-id='uploader'\n />\n </div>\n )\n }\n)\n"],"names":["UploaderInput","forwardRef","dropzoneState","classes","disabled","invalid","name","externalHandlers","props","ref","dropzoneProps","jsxs","cn","jsx","Icon"],"mappings":"qLAwBO,MAAMA,EAAgBC,EAC3B,CACE,CAAE,cAAAC,EAAe,QAAAC,EAAS,SAAAC,EAAU,QAAAC,EAAS,KAAAC,EAAM,iBAAAC,EAAkB,GAAGC,CAAA,EACxEC,IACG,CACH,MAAMC,EAAgBR,EAAc,aAAA,EACpC,OACES,EAAC,MAAA,CACC,UAAWC,EACT,qCACA,qGACA,0JACA,+FACA,oDACAT,GAAA,YAAAA,EAAS,KACT,CAAE,4CAA6CC,CAAA,EAC/C,CAAE,kBAAmBC,CAAA,CAAQ,EAE/B,IAAAI,EACC,GAAGC,EAEJ,SAAA,CAAAC,EAAC,OAAI,UAAWC,EAAG,uDAAwDT,GAAA,YAAAA,EAAS,aAAa,EAC/F,SAAA,CAAAU,EAACC,EAAA,CAAK,KAAK,eAAe,UAAWF,EAAG,4BAA6BT,GAAA,YAAAA,EAAS,IAAI,EAAG,IACpF,IAAA,CAAE,UAAWS,EAAG,4DAA6DT,GAAA,YAAAA,EAAS,WAAW,EAAG,SAAA,CAAA,gBAEnGU,EAAC,QAAK,UAAWD,EAAG,0BAA2BT,GAAA,YAAAA,EAAS,eAAe,EAAG,SAAA,sBAAA,CAAoB,CAAA,CAAA,CAChG,CAAA,EACF,EACAU,EAAC,QAAA,CACE,GAAGL,EACH,GAAGN,EAAc,cAAA,EAClB,QAASK,GAAA,YAAAA,EAAkB,QAC3B,KAAAD,EACA,IAAKJ,EAAc,SACnB,SAAAE,EACA,UAAWQ,EAAGT,GAAA,YAAAA,EAAS,KAAK,EAC5B,eAAa,UAAA,CAAA,CACf,CAAA,CAAA,CACF,CAGN"}
1
+ {"version":3,"file":"UploaderInput.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderInput.tsx"],"sourcesContent":["import { forwardRef, type Ref } from 'react'\nimport { type DropzoneRootProps } from 'react-dropzone'\nimport { type ExternalHandlers } from '../UploaderBase'\nimport { Icon } from '$/shared/ui/icon'\nimport { cn } from '$/shared/utils'\n\nexport type UploaderInputClasses = {\n root?: string\n input?: string\n textContainer?: string\n icon?: string\n textContent?: string\n textContentSpan?: string\n}\n\nexport interface UploaderInputProps {\n dropzoneState: DropzoneRootProps\n disabled?: boolean\n invalid?: boolean\n classes?: UploaderInputClasses\n name?: string\n externalHandlers?: ExternalHandlers\n}\n\nexport const UploaderInput = forwardRef(\n (\n { dropzoneState, classes, disabled, invalid, name, externalHandlers, ...props }: UploaderInputProps,\n ref: Ref<HTMLDivElement>\n ) => {\n const dropzoneProps = dropzoneState.getRootProps()\n return (\n <div\n className={cn(\n 'flex h-[64px] w-[476px] rounded-sm',\n 'active:border-1 active:border-solid active:border-primary-hover active:bg-color-primary-tr-pressed',\n 'focus-visible:border-1 focus-visible:border-solid focus-visible:border-primary-hover focus-visible:bg-color-primary-tr-hover focus-visible:outline-none',\n 'hover:border-1 hover:border-solid hover:border-primary-hover hover:bg-color-primary-tr-hover',\n 'border-[1.5px] border-dashed border-blue-grey-700',\n classes?.root,\n { 'bg-color-primary-light-default opacity-50': disabled },\n { 'border-negative': invalid }\n )}\n ref={ref}\n {...dropzoneProps}\n >\n <div className={cn('flex h-full w-full items-center justify-center gap-2', classes?.textContainer)}>\n <Icon name='files/upload' className={cn('text-icon-primary-default', classes?.icon)} />\n <p className={cn('desk-body-regular-l select-none text-icon-primary-default', classes?.textContent)}>\n Выберите файл\n <span className={cn('text-icon-blue-grey-600', classes?.textContentSpan)}> или перетащите сюда</span>\n </p>\n </div>\n <input\n {...props}\n {...dropzoneState.getInputProps()}\n onClick={externalHandlers?.onClick}\n name={name}\n ref={dropzoneState.inputRef}\n disabled={disabled}\n className={cn(classes?.input)}\n data-test-id='uploader'\n />\n </div>\n )\n }\n)\n"],"names":["UploaderInput","forwardRef","dropzoneState","classes","disabled","invalid","name","externalHandlers","props","ref","dropzoneProps","jsxs","cn","jsx","Icon"],"mappings":"qLAwBO,MAAMA,EAAgBC,EAC3B,CACE,CAAE,cAAAC,EAAe,QAAAC,EAAS,SAAAC,EAAU,QAAAC,EAAS,KAAAC,EAAM,iBAAAC,EAAkB,GAAGC,CAAA,EACxEC,IACG,CACH,MAAMC,EAAgBR,EAAc,aAAA,EACpC,OACES,EAAC,MAAA,CACC,UAAWC,EACT,qCACA,qGACA,0JACA,+FACA,oDACAT,GAAA,YAAAA,EAAS,KACT,CAAE,4CAA6CC,CAAA,EAC/C,CAAE,kBAAmBC,CAAA,CAAQ,EAE/B,IAAAI,EACC,GAAGC,EAEJ,SAAA,CAAAC,EAAC,OAAI,UAAWC,EAAG,uDAAwDT,GAAA,YAAAA,EAAS,aAAa,EAC/F,SAAA,CAAAU,EAACC,EAAA,CAAK,KAAK,eAAe,UAAWF,EAAG,4BAA6BT,GAAA,YAAAA,EAAS,IAAI,EAAG,IACpF,IAAA,CAAE,UAAWS,EAAG,4DAA6DT,GAAA,YAAAA,EAAS,WAAW,EAAG,SAAA,CAAA,gBAEnGU,EAAC,QAAK,UAAWD,EAAG,0BAA2BT,GAAA,YAAAA,EAAS,eAAe,EAAG,SAAA,sBAAA,CAAoB,CAAA,CAAA,CAChG,CAAA,EACF,EACAU,EAAC,QAAA,CACE,GAAGL,EACH,GAAGN,EAAc,cAAA,EAClB,QAASK,GAAA,YAAAA,EAAkB,QAC3B,KAAAD,EACA,IAAKJ,EAAc,SACnB,SAAAE,EACA,UAAWQ,EAAGT,GAAA,YAAAA,EAAS,KAAK,EAC5B,eAAa,UAAA,CAAA,CACf,CAAA,CAAA,CAGN,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../../../lib/shared/ui/modal/Modal.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { useRef } from 'react'\nimport { createPortal } from 'react-dom'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { modalContentAnimation, modalOverlayAnimation } from './model/helpers'\nimport { IframeModalContent } from './ui/IframeModalContent'\nimport { ModalHeader, type TModalHeaderClasses } from './ui/ModalHeader'\nimport { cn } from '$/shared/utils'\n\ntype ModalClasses = {\n overlay?: string\n modal?: string\n content?: string\n modalHeader?: TModalHeaderClasses\n}\n\nexport interface ModalProps {\n children: React.ReactElement\n isModalOpen: boolean\n classes?: ModalClasses\n isPortal?: boolean\n portalContainer?: HTMLElement\n title?: string | React.ReactElement\n closeModal: () => void\n iframe?: boolean\n}\n\nexport const Modal = ({\n title,\n children,\n isModalOpen,\n isPortal = true,\n portalContainer = globalThis?.document?.body,\n closeModal,\n classes,\n iframe\n}: ModalProps) => {\n if (isModalOpen) {\n document.body.style.overflow = 'hidden'\n } else {\n document.body.style.overflow = 'visible'\n }\n\n const iframeRef = useRef<HTMLIFrameElement>(null)\n\n const modalBody = (\n <AnimatePresence>\n {isModalOpen && (\n <motion.div\n tabIndex={-1}\n onClick={closeModal}\n className={cn(\n 'fixed inset-0 flex h-screen w-screen items-center justify-center bg-color-overlay',\n { 'z-1000': !isPortal },\n classes?.overlay\n )}\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n closeModal()\n }\n }}\n data-test-id='modal-overlay'\n {...modalOverlayAnimation}\n >\n <motion.div\n onClick={(event) => event.stopPropagation()}\n className={cn(\n 'w-full max-w-[600px] rounded-md bg-color-white px-4 py-6 shadow-sm desktop:px-6 desktop:py-8',\n classes?.modal\n )}\n data-test-id='modal'\n {...modalContentAnimation}\n >\n <ModalHeader title={title} closeModal={closeModal} classes={classes?.modalHeader} />\n {iframe ? (\n <IframeModalContent ref={iframeRef} className={cn('mt-4', classes?.content)}>\n {(iframeBody) => createPortal(children, iframeBody)}\n </IframeModalContent>\n ) : (\n <div className={cn('mt-4', classes?.content)}>{children}</div>\n )}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n )\n return <>{isPortal ? createPortal(modalBody, portalContainer) : modalBody}</>\n}\n"],"names":["Modal","title","children","isModalOpen","isPortal","portalContainer","_a","closeModal","classes","iframe","iframeRef","useRef","modalBody","jsx","AnimatePresence","motion","cn","event","modalOverlayAnimation","jsxs","modalContentAnimation","ModalHeader","IframeModalContent","iframeBody","createPortal"],"mappings":"slBA6BO,MAAMA,EAAQ,CAAC,CACpB,MAAAC,EACA,SAAAC,EACA,YAAAC,EACA,SAAAC,EAAW,GACX,gBAAAC,GAAkBC,MAAA,mCAAY,WAAZ,YAAAA,EAAsB,QACxC,WAAAC,EACA,QAAAC,EACA,OAAAC,CACF,IAAkB,CACZN,EACF,SAAS,KAAK,MAAM,SAAW,SAE/B,SAAS,KAAK,MAAM,SAAW,UAGjC,MAAMO,EAAYC,EAA0B,IAAI,EAE1CC,EACJC,EAACC,EAAA,CACE,SAAAX,GACCU,EAACE,EAAO,IAAP,CACC,SAAU,GACV,QAASR,EACT,UAAWS,EACT,oFACA,CAAE,SAAU,CAACZ,CAAA,EACbI,GAAA,YAAAA,EAAS,OAAA,EAEX,UAAYS,GAAU,CAChBA,EAAM,MAAQ,UAChBV,EAAA,CACF,EAEF,eAAa,gBACZ,GAAGW,EAEJ,SAAAC,EAACJ,EAAO,IAAP,CACC,QAAUE,GAAUA,EAAM,gBAAA,EAC1B,UAAWD,EACT,+FACAR,GAAA,YAAAA,EAAS,KAAA,EAEX,eAAa,QACZ,GAAGY,EAEJ,SAAA,CAAAP,EAACQ,EAAA,CAAY,MAAApB,EAAc,WAAAM,EAAwB,QAASC,GAAA,YAAAA,EAAS,YAAa,EACjFC,EACCI,EAACS,EAAA,CAAmB,IAAKZ,EAAW,UAAWM,EAAG,OAAQR,GAAA,YAAAA,EAAS,OAAO,EACvE,SAACe,GAAeC,EAAatB,EAAUqB,CAAU,EACpD,EAEAV,EAAC,MAAA,CAAI,UAAWG,EAAG,OAAQR,GAAA,YAAAA,EAAS,OAAO,EAAI,SAAAN,CAAA,CAAS,CAAA,CAAA,CAAA,CAE5D,CAAA,EAGN,EAEF,YAAU,SAAAE,EAAWoB,EAAaZ,EAAWP,CAAe,EAAIO,EAAU,CAC5E"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../../../lib/shared/ui/modal/Modal.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { useRef } from 'react'\nimport { createPortal } from 'react-dom'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { modalContentAnimation, modalOverlayAnimation } from './model/helpers'\nimport { IframeModalContent } from './ui/IframeModalContent'\nimport { ModalHeader, type TModalHeaderClasses } from './ui/ModalHeader'\nimport { cn } from '$/shared/utils'\n\ntype ModalClasses = {\n overlay?: string\n modal?: string\n content?: string\n modalHeader?: TModalHeaderClasses\n}\n\nexport interface ModalProps {\n children: React.ReactElement\n isModalOpen: boolean\n classes?: ModalClasses\n isPortal?: boolean\n portalContainer?: HTMLElement\n title?: string | React.ReactElement\n closeModal: () => void\n iframe?: boolean\n}\n\nexport const Modal = ({\n title,\n children,\n isModalOpen,\n isPortal = true,\n portalContainer = globalThis?.document?.body,\n closeModal,\n classes,\n iframe\n}: ModalProps) => {\n if (isModalOpen) {\n document.body.style.overflow = 'hidden'\n } else {\n document.body.style.overflow = 'visible'\n }\n\n const iframeRef = useRef<HTMLIFrameElement>(null)\n\n const modalBody = (\n <AnimatePresence>\n {isModalOpen && (\n <motion.div\n tabIndex={-1}\n onClick={closeModal}\n className={cn(\n 'fixed inset-0 flex h-screen w-screen items-center justify-center bg-color-overlay',\n { 'z-1000': !isPortal },\n classes?.overlay\n )}\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n closeModal()\n }\n }}\n data-test-id='modal-overlay'\n {...modalOverlayAnimation}\n >\n <motion.div\n onClick={(event) => event.stopPropagation()}\n className={cn(\n 'w-full max-w-[600px] rounded-md bg-color-white px-4 py-6 shadow-sm desktop:px-6 desktop:py-8',\n classes?.modal\n )}\n data-test-id='modal'\n {...modalContentAnimation}\n >\n <ModalHeader title={title} closeModal={closeModal} classes={classes?.modalHeader} />\n {iframe ? (\n <IframeModalContent ref={iframeRef} className={cn('mt-4', classes?.content)}>\n {(iframeBody) => createPortal(children, iframeBody)}\n </IframeModalContent>\n ) : (\n <div className={cn('mt-4', classes?.content)}>{children}</div>\n )}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n )\n return <>{isPortal ? createPortal(modalBody, portalContainer) : modalBody}</>\n}\n"],"names":["Modal","title","children","isModalOpen","isPortal","portalContainer","_a","closeModal","classes","iframe","iframeRef","useRef","modalBody","jsx","AnimatePresence","motion","cn","event","modalOverlayAnimation","jsxs","modalContentAnimation","ModalHeader","IframeModalContent","iframeBody","createPortal"],"mappings":"slBA6BO,MAAMA,EAAQ,CAAC,CACpB,MAAAC,EACA,SAAAC,EACA,YAAAC,EACA,SAAAC,EAAW,GACX,gBAAAC,GAAkBC,MAAA,mCAAY,WAAZ,YAAAA,EAAsB,QACxC,WAAAC,EACA,QAAAC,EACA,OAAAC,CACF,IAAkB,CACZN,EACF,SAAS,KAAK,MAAM,SAAW,SAE/B,SAAS,KAAK,MAAM,SAAW,UAGjC,MAAMO,EAAYC,EAA0B,IAAI,EAE1CC,EACJC,EAACC,EAAA,CACE,SAAAX,GACCU,EAACE,EAAO,IAAP,CACC,SAAU,GACV,QAASR,EACT,UAAWS,EACT,oFACA,CAAE,SAAU,CAACZ,CAAA,EACbI,GAAA,YAAAA,EAAS,OAAA,EAEX,UAAYS,GAAU,CAChBA,EAAM,MAAQ,UAChBV,EAAA,CAEJ,EACA,eAAa,gBACZ,GAAGW,EAEJ,SAAAC,EAACJ,EAAO,IAAP,CACC,QAAUE,GAAUA,EAAM,gBAAA,EAC1B,UAAWD,EACT,+FACAR,GAAA,YAAAA,EAAS,KAAA,EAEX,eAAa,QACZ,GAAGY,EAEJ,SAAA,CAAAP,EAACQ,EAAA,CAAY,MAAApB,EAAc,WAAAM,EAAwB,QAASC,GAAA,YAAAA,EAAS,YAAa,EACjFC,EACCI,EAACS,EAAA,CAAmB,IAAKZ,EAAW,UAAWM,EAAG,OAAQR,GAAA,YAAAA,EAAS,OAAO,EACvE,SAACe,GAAeC,EAAatB,EAAUqB,CAAU,EACpD,EAEAV,EAAC,MAAA,CAAI,UAAWG,EAAG,OAAQR,GAAA,YAAAA,EAAS,OAAO,EAAI,SAAAN,CAAA,CAAS,CAAA,CAAA,CAAA,CAE5D,CAAA,EAGN,EAEF,YAAU,SAAAE,EAAWoB,EAAaZ,EAAWP,CAAe,EAAIO,EAAU,CAC5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"IframeModalContent.js","sources":["../../../../../../lib/shared/ui/modal/ui/IframeModalContent.tsx"],"sourcesContent":["import { forwardRef, useEffect, useState } from 'react'\nimport { cn } from '$/shared/utils'\n\ntype IframeModalContentProps = {\n children: (body: HTMLElement) => React.ReactNode\n className?: string\n} & Omit<React.IframeHTMLAttributes<HTMLIFrameElement>, 'children'>\n\nexport const IframeModalContent = forwardRef<HTMLIFrameElement, IframeModalContentProps>(\n ({ children, className, ...props }, ref) => {\n const [iframeBody, setIframeBody] = useState<HTMLElement | null>(null)\n\n useEffect(() => {\n const iframe = ref && 'current' in ref ? ref.current : null\n if (!iframe || !iframe.contentDocument) return\n\n if (iframe.contentDocument?.readyState === 'complete') {\n document.querySelectorAll('head > link[rel=\"stylesheet\"], head > style').forEach((node) => {\n iframe.contentDocument?.head.appendChild(node.cloneNode(true))\n })\n\n setIframeBody(iframe.contentDocument.body)\n }\n }, [])\n\n return (\n <iframe id='modal-preview' {...props} ref={ref} className={cn('h-[60vh] w-[60vw]', className)}>\n {iframeBody && children(iframeBody)}\n </iframe>\n )\n }\n)\n"],"names":["IframeModalContent","forwardRef","children","className","props","ref","iframeBody","setIframeBody","useState","useEffect","iframe","_a","node","jsx","cn"],"mappings":"kJAQO,MAAMA,EAAqBC,EAChC,CAAC,CAAE,SAAAC,EAAU,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAAQ,CAC1C,KAAM,CAACC,EAAYC,CAAa,EAAIC,EAA6B,IAAI,EAErE,OAAAC,EAAU,IAAM,OACd,MAAMC,EAASL,GAAO,YAAaA,EAAMA,EAAI,QAAU,KACnD,CAACK,GAAU,CAACA,EAAO,mBAEnBC,EAAAD,EAAO,kBAAP,YAAAC,EAAwB,cAAe,aACzC,SAAS,iBAAiB,6CAA6C,EAAE,QAASC,GAAS,QACzFD,EAAAD,EAAO,kBAAP,MAAAC,EAAwB,KAAK,YAAYC,EAAK,UAAU,EAAI,EAAC,CAC9D,EAEDL,EAAcG,EAAO,gBAAgB,IAAI,EAC3C,EACC,EAAE,EAGHG,EAAC,SAAA,CAAO,GAAG,gBAAiB,GAAGT,EAAO,IAAAC,EAAU,UAAWS,EAAG,oBAAqBX,CAAS,EACzF,SAAAG,GAAcJ,EAASI,CAAU,EACpC,CAAA,CAGN"}
1
+ {"version":3,"file":"IframeModalContent.js","sources":["../../../../../../lib/shared/ui/modal/ui/IframeModalContent.tsx"],"sourcesContent":["import { forwardRef, useEffect, useState } from 'react'\nimport { cn } from '$/shared/utils'\n\ntype IframeModalContentProps = {\n children: (body: HTMLElement) => React.ReactNode\n className?: string\n} & Omit<React.IframeHTMLAttributes<HTMLIFrameElement>, 'children'>\n\nexport const IframeModalContent = forwardRef<HTMLIFrameElement, IframeModalContentProps>(\n ({ children, className, ...props }, ref) => {\n const [iframeBody, setIframeBody] = useState<HTMLElement | null>(null)\n\n useEffect(() => {\n const iframe = ref && 'current' in ref ? ref.current : null\n if (!iframe || !iframe.contentDocument) return\n\n if (iframe.contentDocument?.readyState === 'complete') {\n document.querySelectorAll('head > link[rel=\"stylesheet\"], head > style').forEach((node) => {\n iframe.contentDocument?.head.appendChild(node.cloneNode(true))\n })\n\n setIframeBody(iframe.contentDocument.body)\n }\n }, [])\n\n return (\n <iframe id='modal-preview' {...props} ref={ref} className={cn('h-[60vh] w-[60vw]', className)}>\n {iframeBody && children(iframeBody)}\n </iframe>\n )\n }\n)\n"],"names":["IframeModalContent","forwardRef","children","className","props","ref","iframeBody","setIframeBody","useState","useEffect","iframe","_a","node","jsx","cn"],"mappings":"kJAQO,MAAMA,EAAqBC,EAChC,CAAC,CAAE,SAAAC,EAAU,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAAQ,CAC1C,KAAM,CAACC,EAAYC,CAAa,EAAIC,EAA6B,IAAI,EAErE,OAAAC,EAAU,IAAM,OACd,MAAMC,EAASL,GAAO,YAAaA,EAAMA,EAAI,QAAU,KACnD,CAACK,GAAU,CAACA,EAAO,mBAEnBC,EAAAD,EAAO,kBAAP,YAAAC,EAAwB,cAAe,aACzC,SAAS,iBAAiB,6CAA6C,EAAE,QAASC,GAAS,QACzFD,EAAAD,EAAO,kBAAP,MAAAC,EAAwB,KAAK,YAAYC,EAAK,UAAU,EAAI,EAC9D,CAAC,EAEDL,EAAcG,EAAO,gBAAgB,IAAI,EAE7C,EAAG,CAAA,CAAE,EAGHG,EAAC,SAAA,CAAO,GAAG,gBAAiB,GAAGT,EAAO,IAAAC,EAAU,UAAWS,EAAG,oBAAqBX,CAAS,EACzF,SAAAG,GAAcJ,EAASI,CAAU,EACpC,CAEJ,CACF"}