@ryuzaki13/react-foundation-ui 0.1.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 (1066) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +37 -0
  3. package/dist/badge/Badge.d.ts +17 -0
  4. package/dist/badge/Badge.d.ts.map +1 -0
  5. package/dist/badge/BadgeList.d.ts +11 -0
  6. package/dist/badge/BadgeList.d.ts.map +1 -0
  7. package/dist/badge/index.d.ts +3 -0
  8. package/dist/badge/index.d.ts.map +1 -0
  9. package/dist/badge/index.js +2 -0
  10. package/dist/badge/stories/Badge.stories.d.ts +54 -0
  11. package/dist/badge/stories/Badge.stories.d.ts.map +1 -0
  12. package/dist/badge/stories/Badge.stories.js +147 -0
  13. package/dist/badge/stories/Badge.stories.js.map +1 -0
  14. package/dist/base-table/index.d.ts +12 -0
  15. package/dist/base-table/index.d.ts.map +1 -0
  16. package/dist/base-table/index.js +3 -0
  17. package/dist/base-table/lib/columnPinning.d.ts +54 -0
  18. package/dist/base-table/lib/columnPinning.d.ts.map +1 -0
  19. package/dist/base-table/lib/formatting.d.ts +43 -0
  20. package/dist/base-table/lib/formatting.d.ts.map +1 -0
  21. package/dist/base-table/lib/mergeDuplicates.d.ts +29 -0
  22. package/dist/base-table/lib/mergeDuplicates.d.ts.map +1 -0
  23. package/dist/base-table/model/useTableColumnOrder.d.ts +37 -0
  24. package/dist/base-table/model/useTableColumnOrder.d.ts.map +1 -0
  25. package/dist/base-table/model/useTableColumnPinning.d.ts +37 -0
  26. package/dist/base-table/model/useTableColumnPinning.d.ts.map +1 -0
  27. package/dist/base-table/model/useTableColumnSizing.d.ts +41 -0
  28. package/dist/base-table/model/useTableColumnSizing.d.ts.map +1 -0
  29. package/dist/base-table/model/useTableColumnVisibility.d.ts +40 -0
  30. package/dist/base-table/model/useTableColumnVisibility.d.ts.map +1 -0
  31. package/dist/base-table/ui/BaseTable.d.ts +69 -0
  32. package/dist/base-table/ui/BaseTable.d.ts.map +1 -0
  33. package/dist/base-table/ui/BaseTableHeaderCell.d.ts +18 -0
  34. package/dist/base-table/ui/BaseTableHeaderCell.d.ts.map +1 -0
  35. package/dist/base-table/ui/FormattedTableCell.d.ts +23 -0
  36. package/dist/base-table/ui/FormattedTableCell.d.ts.map +1 -0
  37. package/dist/button/Button.d.ts +19 -0
  38. package/dist/button/Button.d.ts.map +1 -0
  39. package/dist/button/ButtonRemove.d.ts +12 -0
  40. package/dist/button/ButtonRemove.d.ts.map +1 -0
  41. package/dist/button/index.d.ts +3 -0
  42. package/dist/button/index.d.ts.map +1 -0
  43. package/dist/button/index.js +23 -0
  44. package/dist/button/index.js.map +1 -0
  45. package/dist/button/stories/Button.stories.d.ts +69 -0
  46. package/dist/button/stories/Button.stories.d.ts.map +1 -0
  47. package/dist/button/stories/Button.stories.js +223 -0
  48. package/dist/button/stories/Button.stories.js.map +1 -0
  49. package/dist/check-box/CheckBox.d.ts +13 -0
  50. package/dist/check-box/CheckBox.d.ts.map +1 -0
  51. package/dist/check-box/index.d.ts +2 -0
  52. package/dist/check-box/index.d.ts.map +1 -0
  53. package/dist/check-box/index.js +2 -0
  54. package/dist/check-box/stories/CheckBox.stories.d.ts +58 -0
  55. package/dist/check-box/stories/CheckBox.stories.d.ts.map +1 -0
  56. package/dist/check-box/stories/CheckBox.stories.js +150 -0
  57. package/dist/check-box/stories/CheckBox.stories.js.map +1 -0
  58. package/dist/chunks/BadgeList-DHW_Ktr3.js +65 -0
  59. package/dist/chunks/BadgeList-DHW_Ktr3.js.map +1 -0
  60. package/dist/chunks/Button-BZ_b-Kin.js +55 -0
  61. package/dist/chunks/Button-BZ_b-Kin.js.map +1 -0
  62. package/dist/chunks/CalendarView-B75faWIU.js +435 -0
  63. package/dist/chunks/CalendarView-B75faWIU.js.map +1 -0
  64. package/dist/chunks/CheckBox-Cck5w1Ud.js +48 -0
  65. package/dist/chunks/CheckBox-Cck5w1Ud.js.map +1 -0
  66. package/dist/chunks/CheckBox.module-D0Ze9qh3.js +10 -0
  67. package/dist/chunks/CheckBox.module-D0Ze9qh3.js.map +1 -0
  68. package/dist/chunks/DateInput-CINDYueM.js +340 -0
  69. package/dist/chunks/DateInput-CINDYueM.js.map +1 -0
  70. package/dist/chunks/DateRangePresetSelect-CyzGMvVp.js +105 -0
  71. package/dist/chunks/DateRangePresetSelect-CyzGMvVp.js.map +1 -0
  72. package/dist/chunks/Detail-DKolHye4.js +80 -0
  73. package/dist/chunks/Detail-DKolHye4.js.map +1 -0
  74. package/dist/chunks/Dialog-BPS4BeWZ.js +50 -0
  75. package/dist/chunks/Dialog-BPS4BeWZ.js.map +1 -0
  76. package/dist/chunks/DisclosureGroup-0BtaXO54.js +49 -0
  77. package/dist/chunks/DisclosureGroup-0BtaXO54.js.map +1 -0
  78. package/dist/chunks/DropZone-hf7Em__0.js +98 -0
  79. package/dist/chunks/DropZone-hf7Em__0.js.map +1 -0
  80. package/dist/chunks/DropdownMenu-Ds-trH4M.js +534 -0
  81. package/dist/chunks/DropdownMenu-Ds-trH4M.js.map +1 -0
  82. package/dist/chunks/Flex-DbBdq336.js +137 -0
  83. package/dist/chunks/Flex-DbBdq336.js.map +1 -0
  84. package/dist/chunks/Grid-ByIIytjh.js +159 -0
  85. package/dist/chunks/Grid-ByIIytjh.js.map +1 -0
  86. package/dist/chunks/Input-Ce2HXBUc.js +227 -0
  87. package/dist/chunks/Input-Ce2HXBUc.js.map +1 -0
  88. package/dist/chunks/InputDateTime-DPtY_4Od.js +258 -0
  89. package/dist/chunks/InputDateTime-DPtY_4Od.js.map +1 -0
  90. package/dist/chunks/InputFile-ga5yJmdZ.js +105 -0
  91. package/dist/chunks/InputFile-ga5yJmdZ.js.map +1 -0
  92. package/dist/chunks/InputFiles-Or2Nvfgk.js +141 -0
  93. package/dist/chunks/InputFiles-Or2Nvfgk.js.map +1 -0
  94. package/dist/chunks/InputImage-BeA5WJz1.js +100 -0
  95. package/dist/chunks/InputImage-BeA5WJz1.js.map +1 -0
  96. package/dist/chunks/LabeledExpandableActionPanel-Bx-DWmYz.js +82 -0
  97. package/dist/chunks/LabeledExpandableActionPanel-Bx-DWmYz.js.map +1 -0
  98. package/dist/chunks/Listbox-CY1wQOCP.js +81 -0
  99. package/dist/chunks/Listbox-CY1wQOCP.js.map +1 -0
  100. package/dist/chunks/MultiSelect-CBqTylqO.js +422 -0
  101. package/dist/chunks/MultiSelect-CBqTylqO.js.map +1 -0
  102. package/dist/chunks/NotificationsHost-BQc-zOr2.js +151 -0
  103. package/dist/chunks/NotificationsHost-BQc-zOr2.js.map +1 -0
  104. package/dist/chunks/PresetRangeDateInput-YBQm_4Fb.js +53 -0
  105. package/dist/chunks/PresetRangeDateInput-YBQm_4Fb.js.map +1 -0
  106. package/dist/chunks/RadioButton-DJp31HFR.js +48 -0
  107. package/dist/chunks/RadioButton-DJp31HFR.js.map +1 -0
  108. package/dist/chunks/RadioGroup-BAhN1d1X.js +121 -0
  109. package/dist/chunks/RadioGroup-BAhN1d1X.js.map +1 -0
  110. package/dist/chunks/Select-B7k_8_Lf.js +182 -0
  111. package/dist/chunks/Select-B7k_8_Lf.js.map +1 -0
  112. package/dist/chunks/SelectOptionContent-CI7wq9Oi.js +27 -0
  113. package/dist/chunks/SelectOptionContent-CI7wq9Oi.js.map +1 -0
  114. package/dist/chunks/SerializableSelect-53uNCqdE.js +33 -0
  115. package/dist/chunks/SerializableSelect-53uNCqdE.js.map +1 -0
  116. package/dist/chunks/SingleDateTimeInput-CwvIbwje.js +331 -0
  117. package/dist/chunks/SingleDateTimeInput-CwvIbwje.js.map +1 -0
  118. package/dist/chunks/Splitter-NjNFuEq4.js +168 -0
  119. package/dist/chunks/Splitter-NjNFuEq4.js.map +1 -0
  120. package/dist/chunks/StateSelect-D0wuUdT9.js +78 -0
  121. package/dist/chunks/StateSelect-D0wuUdT9.js.map +1 -0
  122. package/dist/chunks/Switch-B476FBUD.js +81 -0
  123. package/dist/chunks/Switch-B476FBUD.js.map +1 -0
  124. package/dist/chunks/TextEditorLexicalClient-DcixYuo4.js +1178 -0
  125. package/dist/chunks/TextEditorLexicalClient-DcixYuo4.js.map +1 -0
  126. package/dist/chunks/Textarea-DeJJjjkI.js +44 -0
  127. package/dist/chunks/Textarea-DeJJjjkI.js.map +1 -0
  128. package/dist/chunks/TimePanel-_kF2RtHk.js +135 -0
  129. package/dist/chunks/TimePanel-_kF2RtHk.js.map +1 -0
  130. package/dist/chunks/Toggle-C_fE-bkM.js +73 -0
  131. package/dist/chunks/Toggle-C_fE-bkM.js.map +1 -0
  132. package/dist/chunks/TreeMultiSelect-DRYNx7u5.js +40 -0
  133. package/dist/chunks/TreeMultiSelect-DRYNx7u5.js.map +1 -0
  134. package/dist/chunks/TreePickerBase-DYzTsSBQ.js +423 -0
  135. package/dist/chunks/TreePickerBase-DYzTsSBQ.js.map +1 -0
  136. package/dist/chunks/TreeSelect-DGLDu6qc.js +37 -0
  137. package/dist/chunks/TreeSelect-DGLDu6qc.js.map +1 -0
  138. package/dist/chunks/base-table-DVje02Zi.js +514 -0
  139. package/dist/chunks/base-table-DVje02Zi.js.map +1 -0
  140. package/dist/chunks/editorModel-DCJRgzlr.js +10 -0
  141. package/dist/chunks/editorModel-DCJRgzlr.js.map +1 -0
  142. package/dist/chunks/floating-arrow-CdRV69sg.js +48 -0
  143. package/dist/chunks/floating-arrow-CdRV69sg.js.map +1 -0
  144. package/dist/chunks/layout-picker-BA9vA8JI.js +1171 -0
  145. package/dist/chunks/layout-picker-BA9vA8JI.js.map +1 -0
  146. package/dist/chunks/misc-DrmMj8GO.js +298 -0
  147. package/dist/chunks/misc-DrmMj8GO.js.map +1 -0
  148. package/dist/chunks/modal-DqVcZws_.js +153 -0
  149. package/dist/chunks/modal-DqVcZws_.js.map +1 -0
  150. package/dist/chunks/picker-Cj4RnJh6.js +318 -0
  151. package/dist/chunks/picker-Cj4RnJh6.js.map +1 -0
  152. package/dist/chunks/plugins-BqaLckPx.js +118 -0
  153. package/dist/chunks/plugins-BqaLckPx.js.map +1 -0
  154. package/dist/chunks/popover-C79P5bm2.js +222 -0
  155. package/dist/chunks/popover-C79P5bm2.js.map +1 -0
  156. package/dist/chunks/separator-CIqnk2z9.js +15 -0
  157. package/dist/chunks/separator-CIqnk2z9.js.map +1 -0
  158. package/dist/chunks/slider-34wxzKkG.js +695 -0
  159. package/dist/chunks/slider-34wxzKkG.js.map +1 -0
  160. package/dist/chunks/sortable-CwDHC3CA.js +185 -0
  161. package/dist/chunks/sortable-CwDHC3CA.js.map +1 -0
  162. package/dist/chunks/table-BYA0hCj7.js +141 -0
  163. package/dist/chunks/table-BYA0hCj7.js.map +1 -0
  164. package/dist/chunks/table-column-interactions-DPyJDD7P.js +87 -0
  165. package/dist/chunks/table-column-interactions-DPyJDD7P.js.map +1 -0
  166. package/dist/chunks/tabs-CjU2KCgs.js +384 -0
  167. package/dist/chunks/tabs-CjU2KCgs.js.map +1 -0
  168. package/dist/chunks/toolbar-C-Ziw_Uh.js +369 -0
  169. package/dist/chunks/toolbar-C-Ziw_Uh.js.map +1 -0
  170. package/dist/chunks/treeStoryFixtures-Bhm3Gdky.js +113 -0
  171. package/dist/chunks/treeStoryFixtures-Bhm3Gdky.js.map +1 -0
  172. package/dist/chunks/ui.module-BisoTevy.js +58 -0
  173. package/dist/chunks/ui.module-BisoTevy.js.map +1 -0
  174. package/dist/chunks/uiClasses-BNjBunnY.js +82 -0
  175. package/dist/chunks/uiClasses-BNjBunnY.js.map +1 -0
  176. package/dist/chunks/wheel-picker-DUHGy7wE.js +143 -0
  177. package/dist/chunks/wheel-picker-DUHGy7wE.js.map +1 -0
  178. package/dist/context-menu/components/ContextMenu.d.ts +19 -0
  179. package/dist/context-menu/components/ContextMenu.d.ts.map +1 -0
  180. package/dist/context-menu/components/ContextMenuTrigger.d.ts +8 -0
  181. package/dist/context-menu/components/ContextMenuTrigger.d.ts.map +1 -0
  182. package/dist/context-menu/components/DropdownMenu.d.ts +17 -0
  183. package/dist/context-menu/components/DropdownMenu.d.ts.map +1 -0
  184. package/dist/context-menu/components/DropdownMenuTrigger.d.ts +8 -0
  185. package/dist/context-menu/components/DropdownMenuTrigger.d.ts.map +1 -0
  186. package/dist/context-menu/components/MenuContent.d.ts +13 -0
  187. package/dist/context-menu/components/MenuContent.d.ts.map +1 -0
  188. package/dist/context-menu/components/MenuContext.d.ts +21 -0
  189. package/dist/context-menu/components/MenuContext.d.ts.map +1 -0
  190. package/dist/context-menu/components/MenuGroupLabel.d.ts +7 -0
  191. package/dist/context-menu/components/MenuGroupLabel.d.ts.map +1 -0
  192. package/dist/context-menu/components/MenuItem.d.ts +15 -0
  193. package/dist/context-menu/components/MenuItem.d.ts.map +1 -0
  194. package/dist/context-menu/components/MenuRoot.d.ts +14 -0
  195. package/dist/context-menu/components/MenuRoot.d.ts.map +1 -0
  196. package/dist/context-menu/components/MenuSeparator.d.ts +6 -0
  197. package/dist/context-menu/components/MenuSeparator.d.ts.map +1 -0
  198. package/dist/context-menu/components/RadialMenuContent.d.ts +16 -0
  199. package/dist/context-menu/components/RadialMenuContent.d.ts.map +1 -0
  200. package/dist/context-menu/components/RadialMenuItem.d.ts +11 -0
  201. package/dist/context-menu/components/RadialMenuItem.d.ts.map +1 -0
  202. package/dist/context-menu/components/helpers.d.ts +5 -0
  203. package/dist/context-menu/components/helpers.d.ts.map +1 -0
  204. package/dist/context-menu/index.d.ts +3 -0
  205. package/dist/context-menu/index.d.ts.map +1 -0
  206. package/dist/context-menu/index.js +2 -0
  207. package/dist/context-menu/stories/ContextMenu.stories.d.ts +16 -0
  208. package/dist/context-menu/stories/ContextMenu.stories.d.ts.map +1 -0
  209. package/dist/context-menu/stories/ContextMenu.stories.js +136 -0
  210. package/dist/context-menu/stories/ContextMenu.stories.js.map +1 -0
  211. package/dist/date-input/index.d.ts +3 -0
  212. package/dist/date-input/index.d.ts.map +1 -0
  213. package/dist/date-input/index.js +3 -0
  214. package/dist/date-input/lib/dateInputCalendar.d.ts +35 -0
  215. package/dist/date-input/lib/dateInputCalendar.d.ts.map +1 -0
  216. package/dist/date-input/lib/dateInputValue.d.ts +81 -0
  217. package/dist/date-input/lib/dateInputValue.d.ts.map +1 -0
  218. package/dist/date-input/lib/index.d.ts +4 -0
  219. package/dist/date-input/lib/index.d.ts.map +1 -0
  220. package/dist/date-input/lib/types.d.ts +39 -0
  221. package/dist/date-input/lib/types.d.ts.map +1 -0
  222. package/dist/date-input/model/index.d.ts +2 -0
  223. package/dist/date-input/model/index.d.ts.map +1 -0
  224. package/dist/date-input/model/useDateInput.d.ts +15 -0
  225. package/dist/date-input/model/useDateInput.d.ts.map +1 -0
  226. package/dist/date-input/stories/DateInput.stories.d.ts +132 -0
  227. package/dist/date-input/stories/DateInput.stories.d.ts.map +1 -0
  228. package/dist/date-input/stories/DateInput.stories.js +247 -0
  229. package/dist/date-input/stories/DateInput.stories.js.map +1 -0
  230. package/dist/date-input/ui/CalendarDayView.d.ts +19 -0
  231. package/dist/date-input/ui/CalendarDayView.d.ts.map +1 -0
  232. package/dist/date-input/ui/CalendarMonthView.d.ts +19 -0
  233. package/dist/date-input/ui/CalendarMonthView.d.ts.map +1 -0
  234. package/dist/date-input/ui/CalendarView.d.ts +24 -0
  235. package/dist/date-input/ui/CalendarView.d.ts.map +1 -0
  236. package/dist/date-input/ui/CalendarYearView.d.ts +19 -0
  237. package/dist/date-input/ui/CalendarYearView.d.ts.map +1 -0
  238. package/dist/date-input/ui/DateInput.d.ts +49 -0
  239. package/dist/date-input/ui/DateInput.d.ts.map +1 -0
  240. package/dist/date-input/ui/index.d.ts +3 -0
  241. package/dist/date-input/ui/index.d.ts.map +1 -0
  242. package/dist/date-range-preset-select/DateRangePresetSelect.d.ts +12 -0
  243. package/dist/date-range-preset-select/DateRangePresetSelect.d.ts.map +1 -0
  244. package/dist/date-range-preset-select/index.d.ts +4 -0
  245. package/dist/date-range-preset-select/index.d.ts.map +1 -0
  246. package/dist/date-range-preset-select/index.js +2 -0
  247. package/dist/date-range-preset-select/lib/dateRangePresets.d.ts +61 -0
  248. package/dist/date-range-preset-select/lib/dateRangePresets.d.ts.map +1 -0
  249. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.d.ts +22 -0
  250. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.d.ts.map +1 -0
  251. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.js +41 -0
  252. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.js.map +1 -0
  253. package/dist/date-time-input/index.d.ts +2 -0
  254. package/dist/date-time-input/index.d.ts.map +1 -0
  255. package/dist/date-time-input/index.js +2 -0
  256. package/dist/date-time-input/lib/dateTimeValue.d.ts +65 -0
  257. package/dist/date-time-input/lib/dateTimeValue.d.ts.map +1 -0
  258. package/dist/date-time-input/lib/index.d.ts +5 -0
  259. package/dist/date-time-input/lib/index.d.ts.map +1 -0
  260. package/dist/date-time-input/lib/timePanelState.d.ts +16 -0
  261. package/dist/date-time-input/lib/timePanelState.d.ts.map +1 -0
  262. package/dist/date-time-input/model/index.d.ts +2 -0
  263. package/dist/date-time-input/model/index.d.ts.map +1 -0
  264. package/dist/date-time-input/model/useDateTimeSegments.d.ts +27 -0
  265. package/dist/date-time-input/model/useDateTimeSegments.d.ts.map +1 -0
  266. package/dist/date-time-input/stories/SingleDateTimeInput.stories.d.ts +95 -0
  267. package/dist/date-time-input/stories/SingleDateTimeInput.stories.d.ts.map +1 -0
  268. package/dist/date-time-input/stories/SingleDateTimeInput.stories.js +195 -0
  269. package/dist/date-time-input/stories/SingleDateTimeInput.stories.js.map +1 -0
  270. package/dist/date-time-input/stories/TimePanel.stories.d.ts +26 -0
  271. package/dist/date-time-input/stories/TimePanel.stories.d.ts.map +1 -0
  272. package/dist/date-time-input/stories/TimePanel.stories.js +53 -0
  273. package/dist/date-time-input/stories/TimePanel.stories.js.map +1 -0
  274. package/dist/date-time-input/ui/SingleDateTimeInput.d.ts +19 -0
  275. package/dist/date-time-input/ui/SingleDateTimeInput.d.ts.map +1 -0
  276. package/dist/date-time-input/ui/TimePanel.d.ts +17 -0
  277. package/dist/date-time-input/ui/TimePanel.d.ts.map +1 -0
  278. package/dist/date-time-input/ui/index.d.ts +2 -0
  279. package/dist/date-time-input/ui/index.d.ts.map +1 -0
  280. package/dist/detail/Detail.d.ts +36 -0
  281. package/dist/detail/Detail.d.ts.map +1 -0
  282. package/dist/detail/index.d.ts +2 -0
  283. package/dist/detail/index.d.ts.map +1 -0
  284. package/dist/detail/index.js +2 -0
  285. package/dist/detail/stories/Detail.stories.d.ts +67 -0
  286. package/dist/detail/stories/Detail.stories.d.ts.map +1 -0
  287. package/dist/detail/stories/Detail.stories.js +170 -0
  288. package/dist/detail/stories/Detail.stories.js.map +1 -0
  289. package/dist/dialog/Dialog.d.ts +14 -0
  290. package/dist/dialog/Dialog.d.ts.map +1 -0
  291. package/dist/dialog/index.d.ts +2 -0
  292. package/dist/dialog/index.d.ts.map +1 -0
  293. package/dist/dialog/index.js +2 -0
  294. package/dist/dialog/stories/Dialog.stories.d.ts +50 -0
  295. package/dist/dialog/stories/Dialog.stories.d.ts.map +1 -0
  296. package/dist/dialog/stories/Dialog.stories.js +89 -0
  297. package/dist/dialog/stories/Dialog.stories.js.map +1 -0
  298. package/dist/disclosure/Disclosure.d.ts +10 -0
  299. package/dist/disclosure/Disclosure.d.ts.map +1 -0
  300. package/dist/disclosure/DisclosureGroup.d.ts +12 -0
  301. package/dist/disclosure/DisclosureGroup.d.ts.map +1 -0
  302. package/dist/disclosure/index.d.ts +3 -0
  303. package/dist/disclosure/index.d.ts.map +1 -0
  304. package/dist/disclosure/index.js +2 -0
  305. package/dist/disclosure/stories/Disclosure.stories.d.ts +35 -0
  306. package/dist/disclosure/stories/Disclosure.stories.d.ts.map +1 -0
  307. package/dist/disclosure/stories/Disclosure.stories.js +70 -0
  308. package/dist/disclosure/stories/Disclosure.stories.js.map +1 -0
  309. package/dist/drop-zone/DropZone.d.ts +46 -0
  310. package/dist/drop-zone/DropZone.d.ts.map +1 -0
  311. package/dist/drop-zone/index.d.ts +3 -0
  312. package/dist/drop-zone/index.d.ts.map +1 -0
  313. package/dist/drop-zone/index.js +2 -0
  314. package/dist/drop-zone/stories/DropZone.stories.d.ts +63 -0
  315. package/dist/drop-zone/stories/DropZone.stories.d.ts.map +1 -0
  316. package/dist/drop-zone/stories/DropZone.stories.js +97 -0
  317. package/dist/drop-zone/stories/DropZone.stories.js.map +1 -0
  318. package/dist/errors/BadRequestPage.d.ts +2 -0
  319. package/dist/errors/BadRequestPage.d.ts.map +1 -0
  320. package/dist/errors/BoomExplosion.d.ts +2 -0
  321. package/dist/errors/BoomExplosion.d.ts.map +1 -0
  322. package/dist/errors/ErrorBoundary.d.ts +23 -0
  323. package/dist/errors/ErrorBoundary.d.ts.map +1 -0
  324. package/dist/errors/ErrorDisplay.d.ts +6 -0
  325. package/dist/errors/ErrorDisplay.d.ts.map +1 -0
  326. package/dist/errors/ErrorExplosion.d.ts +8 -0
  327. package/dist/errors/ErrorExplosion.d.ts.map +1 -0
  328. package/dist/errors/ForbiddenPage.d.ts +2 -0
  329. package/dist/errors/ForbiddenPage.d.ts.map +1 -0
  330. package/dist/errors/NotFoundPage.d.ts +2 -0
  331. package/dist/errors/NotFoundPage.d.ts.map +1 -0
  332. package/dist/errors/PageError.d.ts +9 -0
  333. package/dist/errors/PageError.d.ts.map +1 -0
  334. package/dist/errors/SimpleErrorDisplay.d.ts +4 -0
  335. package/dist/errors/SimpleErrorDisplay.d.ts.map +1 -0
  336. package/dist/errors/UnauthorizedPage.d.ts +2 -0
  337. package/dist/errors/UnauthorizedPage.d.ts.map +1 -0
  338. package/dist/errors/ViewNotChanged.d.ts +3 -0
  339. package/dist/errors/ViewNotChanged.d.ts.map +1 -0
  340. package/dist/errors/constants.d.ts +2 -0
  341. package/dist/errors/constants.d.ts.map +1 -0
  342. package/dist/errors/index.d.ts +12 -0
  343. package/dist/errors/index.d.ts.map +1 -0
  344. package/dist/errors/index.js +216 -0
  345. package/dist/errors/index.js.map +1 -0
  346. package/dist/expandable-action-panel/ExpandableActionPanel.d.ts +22 -0
  347. package/dist/expandable-action-panel/ExpandableActionPanel.d.ts.map +1 -0
  348. package/dist/expandable-action-panel/LabeledExpandableActionPanel.d.ts +15 -0
  349. package/dist/expandable-action-panel/LabeledExpandableActionPanel.d.ts.map +1 -0
  350. package/dist/expandable-action-panel/index.d.ts +3 -0
  351. package/dist/expandable-action-panel/index.d.ts.map +1 -0
  352. package/dist/expandable-action-panel/index.js +2 -0
  353. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.d.ts +44 -0
  354. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.d.ts.map +1 -0
  355. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.js +117 -0
  356. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.js.map +1 -0
  357. package/dist/flex/Flex.d.ts +6 -0
  358. package/dist/flex/Flex.d.ts.map +1 -0
  359. package/dist/flex/FlexCenter.d.ts +8 -0
  360. package/dist/flex/FlexCenter.d.ts.map +1 -0
  361. package/dist/flex/FlexContainer.d.ts +3 -0
  362. package/dist/flex/FlexContainer.d.ts.map +1 -0
  363. package/dist/flex/FlexItem.d.ts +3 -0
  364. package/dist/flex/FlexItem.d.ts.map +1 -0
  365. package/dist/flex/FlexSpacer.d.ts +3 -0
  366. package/dist/flex/FlexSpacer.d.ts.map +1 -0
  367. package/dist/flex/PredefinedFlex.d.ts +3 -0
  368. package/dist/flex/PredefinedFlex.d.ts.map +1 -0
  369. package/dist/flex/index.d.ts +7 -0
  370. package/dist/flex/index.d.ts.map +1 -0
  371. package/dist/flex/index.js +14 -0
  372. package/dist/flex/index.js.map +1 -0
  373. package/dist/flex/stories/Flex.stories.d.ts +24 -0
  374. package/dist/flex/stories/Flex.stories.d.ts.map +1 -0
  375. package/dist/flex/stories/Flex.stories.js +607 -0
  376. package/dist/flex/stories/Flex.stories.js.map +1 -0
  377. package/dist/flex/types.d.ts +73 -0
  378. package/dist/flex/types.d.ts.map +1 -0
  379. package/dist/flex/useFlexClasses.d.ts +8 -0
  380. package/dist/flex/useFlexClasses.d.ts.map +1 -0
  381. package/dist/floating-arrow/FloatingArrow.d.ts +8 -0
  382. package/dist/floating-arrow/FloatingArrow.d.ts.map +1 -0
  383. package/dist/floating-arrow/getArrowStyle.d.ts +3 -0
  384. package/dist/floating-arrow/getArrowStyle.d.ts.map +1 -0
  385. package/dist/floating-arrow/index.d.ts +2 -0
  386. package/dist/floating-arrow/index.d.ts.map +1 -0
  387. package/dist/floating-arrow/index.js +2 -0
  388. package/dist/fullscreen-portal/FullscreenPortal.d.ts +17 -0
  389. package/dist/fullscreen-portal/FullscreenPortal.d.ts.map +1 -0
  390. package/dist/fullscreen-portal/index.d.ts +2 -0
  391. package/dist/fullscreen-portal/index.d.ts.map +1 -0
  392. package/dist/fullscreen-portal/index.js +42 -0
  393. package/dist/fullscreen-portal/index.js.map +1 -0
  394. package/dist/grid/Grid.d.ts +5 -0
  395. package/dist/grid/Grid.d.ts.map +1 -0
  396. package/dist/grid/GridContainer.d.ts +3 -0
  397. package/dist/grid/GridContainer.d.ts.map +1 -0
  398. package/dist/grid/GridItem.d.ts +3 -0
  399. package/dist/grid/GridItem.d.ts.map +1 -0
  400. package/dist/grid/index.d.ts +4 -0
  401. package/dist/grid/index.d.ts.map +1 -0
  402. package/dist/grid/index.js +2 -0
  403. package/dist/grid/stories/Grid.stories.d.ts +24 -0
  404. package/dist/grid/stories/Grid.stories.d.ts.map +1 -0
  405. package/dist/grid/stories/Grid.stories.js +840 -0
  406. package/dist/grid/stories/Grid.stories.js.map +1 -0
  407. package/dist/grid/types.d.ts +299 -0
  408. package/dist/grid/types.d.ts.map +1 -0
  409. package/dist/grid/useGridClasses.d.ts +10 -0
  410. package/dist/grid/useGridClasses.d.ts.map +1 -0
  411. package/dist/image/index.d.ts +6 -0
  412. package/dist/image/index.d.ts.map +1 -0
  413. package/dist/image/index.js +500 -0
  414. package/dist/image/index.js.map +1 -0
  415. package/dist/image/ui/ImageCropper.d.ts +13 -0
  416. package/dist/image/ui/ImageCropper.d.ts.map +1 -0
  417. package/dist/image/ui/ImagePlaceholder.d.ts +9 -0
  418. package/dist/image/ui/ImagePlaceholder.d.ts.map +1 -0
  419. package/dist/image/ui/ImageRenderer.d.ts +24 -0
  420. package/dist/image/ui/ImageRenderer.d.ts.map +1 -0
  421. package/dist/image/ui/ImageSelection.d.ts +40 -0
  422. package/dist/image/ui/ImageSelection.d.ts.map +1 -0
  423. package/dist/image/ui/ImageView.d.ts +40 -0
  424. package/dist/image/ui/ImageView.d.ts.map +1 -0
  425. package/dist/input/Input.d.ts +65 -0
  426. package/dist/input/Input.d.ts.map +1 -0
  427. package/dist/input/index.d.ts +3 -0
  428. package/dist/input/index.d.ts.map +1 -0
  429. package/dist/input/index.js +2 -0
  430. package/dist/input/lib/index.d.ts +2 -0
  431. package/dist/input/lib/index.d.ts.map +1 -0
  432. package/dist/input/lib/useInputFieldIds.d.ts +15 -0
  433. package/dist/input/lib/useInputFieldIds.d.ts.map +1 -0
  434. package/dist/input/stories/Input.stories.d.ts +69 -0
  435. package/dist/input/stories/Input.stories.d.ts.map +1 -0
  436. package/dist/input/stories/Input.stories.js +132 -0
  437. package/dist/input/stories/Input.stories.js.map +1 -0
  438. package/dist/input-date-time/InputDateTime.d.ts +23 -0
  439. package/dist/input-date-time/InputDateTime.d.ts.map +1 -0
  440. package/dist/input-date-time/index.d.ts +3 -0
  441. package/dist/input-date-time/index.d.ts.map +1 -0
  442. package/dist/input-date-time/index.js +2 -0
  443. package/dist/input-date-time/maskParser.d.ts +32 -0
  444. package/dist/input-date-time/maskParser.d.ts.map +1 -0
  445. package/dist/input-date-time/stories/InputDateTime.stories.d.ts +69 -0
  446. package/dist/input-date-time/stories/InputDateTime.stories.d.ts.map +1 -0
  447. package/dist/input-date-time/stories/InputDateTime.stories.js +125 -0
  448. package/dist/input-date-time/stories/InputDateTime.stories.js.map +1 -0
  449. package/dist/input-date-time/useMaskedSegments.d.ts +22 -0
  450. package/dist/input-date-time/useMaskedSegments.d.ts.map +1 -0
  451. package/dist/input-file/InputFile.d.ts +63 -0
  452. package/dist/input-file/InputFile.d.ts.map +1 -0
  453. package/dist/input-file/index.d.ts +3 -0
  454. package/dist/input-file/index.d.ts.map +1 -0
  455. package/dist/input-file/index.js +2 -0
  456. package/dist/input-file/stories/InputFile.stories.d.ts +85 -0
  457. package/dist/input-file/stories/InputFile.stories.d.ts.map +1 -0
  458. package/dist/input-file/stories/InputFile.stories.js +158 -0
  459. package/dist/input-file/stories/InputFile.stories.js.map +1 -0
  460. package/dist/input-files/InputFiles.d.ts +64 -0
  461. package/dist/input-files/InputFiles.d.ts.map +1 -0
  462. package/dist/input-files/InputFilesList.d.ts +8 -0
  463. package/dist/input-files/InputFilesList.d.ts.map +1 -0
  464. package/dist/input-files/index.d.ts +4 -0
  465. package/dist/input-files/index.d.ts.map +1 -0
  466. package/dist/input-files/index.js +2 -0
  467. package/dist/input-files/stories/InputFiles.stories.d.ts +86 -0
  468. package/dist/input-files/stories/InputFiles.stories.d.ts.map +1 -0
  469. package/dist/input-files/stories/InputFiles.stories.js +158 -0
  470. package/dist/input-files/stories/InputFiles.stories.js.map +1 -0
  471. package/dist/input-image/InputImage.d.ts +42 -0
  472. package/dist/input-image/InputImage.d.ts.map +1 -0
  473. package/dist/input-image/index.d.ts +3 -0
  474. package/dist/input-image/index.d.ts.map +1 -0
  475. package/dist/input-image/index.js +2 -0
  476. package/dist/input-image/stories/InputImage.stories.d.ts +81 -0
  477. package/dist/input-image/stories/InputImage.stories.d.ts.map +1 -0
  478. package/dist/input-image/stories/InputImage.stories.js +174 -0
  479. package/dist/input-image/stories/InputImage.stories.js.map +1 -0
  480. package/dist/input-search/InputSearch.d.ts +8 -0
  481. package/dist/input-search/InputSearch.d.ts.map +1 -0
  482. package/dist/input-search/index.d.ts +2 -0
  483. package/dist/input-search/index.d.ts.map +1 -0
  484. package/dist/input-search/index.js +30 -0
  485. package/dist/input-search/index.js.map +1 -0
  486. package/dist/layout-picker/index.d.ts +3 -0
  487. package/dist/layout-picker/index.d.ts.map +1 -0
  488. package/dist/layout-picker/index.js +2 -0
  489. package/dist/layout-picker/lib/index.d.ts +4 -0
  490. package/dist/layout-picker/lib/index.d.ts.map +1 -0
  491. package/dist/layout-picker/lib/layout.d.ts +11 -0
  492. package/dist/layout-picker/lib/layout.d.ts.map +1 -0
  493. package/dist/layout-picker/lib/presets.d.ts +789 -0
  494. package/dist/layout-picker/lib/presets.d.ts.map +1 -0
  495. package/dist/layout-picker/lib/types.d.ts +22 -0
  496. package/dist/layout-picker/lib/types.d.ts.map +1 -0
  497. package/dist/layout-picker/stories/LayoutPicker.stories.d.ts +873 -0
  498. package/dist/layout-picker/stories/LayoutPicker.stories.d.ts.map +1 -0
  499. package/dist/layout-picker/stories/LayoutPicker.stories.js +422 -0
  500. package/dist/layout-picker/stories/LayoutPicker.stories.js.map +1 -0
  501. package/dist/layout-picker/ui/LayoutPicker.d.ts +18 -0
  502. package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -0
  503. package/dist/layout-picker/ui/index.d.ts +2 -0
  504. package/dist/layout-picker/ui/index.d.ts.map +1 -0
  505. package/dist/list/List.d.ts +43 -0
  506. package/dist/list/List.d.ts.map +1 -0
  507. package/dist/list/index.d.ts +2 -0
  508. package/dist/list/index.d.ts.map +1 -0
  509. package/dist/list/index.js +88 -0
  510. package/dist/list/index.js.map +1 -0
  511. package/dist/listbox/Listbox.d.ts +31 -0
  512. package/dist/listbox/Listbox.d.ts.map +1 -0
  513. package/dist/listbox/index.d.ts +2 -0
  514. package/dist/listbox/index.d.ts.map +1 -0
  515. package/dist/listbox/index.js +2 -0
  516. package/dist/listbox/stories/Listbox.stories.d.ts +76 -0
  517. package/dist/listbox/stories/Listbox.stories.d.ts.map +1 -0
  518. package/dist/listbox/stories/Listbox.stories.js +140 -0
  519. package/dist/listbox/stories/Listbox.stories.js.map +1 -0
  520. package/dist/misc/AnimatedLogo.d.ts +2 -0
  521. package/dist/misc/AnimatedLogo.d.ts.map +1 -0
  522. package/dist/misc/CopyTextWrapper.d.ts +10 -0
  523. package/dist/misc/CopyTextWrapper.d.ts.map +1 -0
  524. package/dist/misc/IconWrapper.d.ts +8 -0
  525. package/dist/misc/IconWrapper.d.ts.map +1 -0
  526. package/dist/misc/LazyDynamicComponent.d.ts +15 -0
  527. package/dist/misc/LazyDynamicComponent.d.ts.map +1 -0
  528. package/dist/misc/LazyValue.d.ts +8 -0
  529. package/dist/misc/LazyValue.d.ts.map +1 -0
  530. package/dist/misc/LoadingMessage.d.ts +8 -0
  531. package/dist/misc/LoadingMessage.d.ts.map +1 -0
  532. package/dist/misc/Message.d.ts +11 -0
  533. package/dist/misc/Message.d.ts.map +1 -0
  534. package/dist/misc/NoData.d.ts +8 -0
  535. package/dist/misc/NoData.d.ts.map +1 -0
  536. package/dist/misc/Notice.d.ts +8 -0
  537. package/dist/misc/Notice.d.ts.map +1 -0
  538. package/dist/misc/OneStepScroller.d.ts +27 -0
  539. package/dist/misc/OneStepScroller.d.ts.map +1 -0
  540. package/dist/misc/Scrollable.d.ts +14 -0
  541. package/dist/misc/Scrollable.d.ts.map +1 -0
  542. package/dist/misc/SkeletonLine.d.ts +9 -0
  543. package/dist/misc/SkeletonLine.d.ts.map +1 -0
  544. package/dist/misc/StateIcon.d.ts +18 -0
  545. package/dist/misc/StateIcon.d.ts.map +1 -0
  546. package/dist/misc/StateWrapper.d.ts +11 -0
  547. package/dist/misc/StateWrapper.d.ts.map +1 -0
  548. package/dist/misc/index.d.ts +15 -0
  549. package/dist/misc/index.d.ts.map +1 -0
  550. package/dist/misc/index.js +2 -0
  551. package/dist/modal/Modal.d.ts +30 -0
  552. package/dist/modal/Modal.d.ts.map +1 -0
  553. package/dist/modal/ModalManagerProvider.d.ts +8 -0
  554. package/dist/modal/ModalManagerProvider.d.ts.map +1 -0
  555. package/dist/modal/index.d.ts +4 -0
  556. package/dist/modal/index.d.ts.map +1 -0
  557. package/dist/modal/index.js +2 -0
  558. package/dist/modal/stories/Modal.stories.d.ts +74 -0
  559. package/dist/modal/stories/Modal.stories.d.ts.map +1 -0
  560. package/dist/modal/stories/Modal.stories.js +320 -0
  561. package/dist/modal/stories/Modal.stories.js.map +1 -0
  562. package/dist/modal/types.d.ts +8 -0
  563. package/dist/modal/types.d.ts.map +1 -0
  564. package/dist/modal/useModalManager.d.ts +13 -0
  565. package/dist/modal/useModalManager.d.ts.map +1 -0
  566. package/dist/multi-select/index.d.ts +2 -0
  567. package/dist/multi-select/index.d.ts.map +1 -0
  568. package/dist/multi-select/index.js +35 -0
  569. package/dist/multi-select/index.js.map +1 -0
  570. package/dist/multi-select/model/index.d.ts +1 -0
  571. package/dist/multi-select/model/index.d.ts.map +1 -0
  572. package/dist/multi-select/ui/MultiSelect.d.ts +55 -0
  573. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -0
  574. package/dist/multi-select/ui/MultiSelectOption.d.ts +14 -0
  575. package/dist/multi-select/ui/MultiSelectOption.d.ts.map +1 -0
  576. package/dist/multi-select/ui/MultiSelectOptionSkeleton.d.ts +10 -0
  577. package/dist/multi-select/ui/MultiSelectOptionSkeleton.d.ts.map +1 -0
  578. package/dist/multi-select/ui/MultiSelectOptionsToolbar.d.ts +8 -0
  579. package/dist/multi-select/ui/MultiSelectOptionsToolbar.d.ts.map +1 -0
  580. package/dist/multi-select/ui/MultiSelectToken.d.ts +9 -0
  581. package/dist/multi-select/ui/MultiSelectToken.d.ts.map +1 -0
  582. package/dist/multi-select/ui/SerializableMultiSelect.d.ts +14 -0
  583. package/dist/multi-select/ui/SerializableMultiSelect.d.ts.map +1 -0
  584. package/dist/multi-select/ui/defaultRenderers.d.ts +14 -0
  585. package/dist/multi-select/ui/defaultRenderers.d.ts.map +1 -0
  586. package/dist/multi-select/ui/index.d.ts +4 -0
  587. package/dist/multi-select/ui/index.d.ts.map +1 -0
  588. package/dist/multi-select/ui/stories/MultiSelect.stories.d.ts +67 -0
  589. package/dist/multi-select/ui/stories/MultiSelect.stories.d.ts.map +1 -0
  590. package/dist/multi-select/ui/stories/MultiSelect.stories.js +114 -0
  591. package/dist/multi-select/ui/stories/MultiSelect.stories.js.map +1 -0
  592. package/dist/notifications/index.d.ts +13 -0
  593. package/dist/notifications/index.d.ts.map +1 -0
  594. package/dist/notifications/index.js +3 -0
  595. package/dist/notifications/model/NotificationsProvider.d.ts +22 -0
  596. package/dist/notifications/model/NotificationsProvider.d.ts.map +1 -0
  597. package/dist/notifications/model/index.d.ts +2 -0
  598. package/dist/notifications/model/index.d.ts.map +1 -0
  599. package/dist/notifications/ui/NotificationsHost.d.ts +6 -0
  600. package/dist/notifications/ui/NotificationsHost.d.ts.map +1 -0
  601. package/dist/notifications/ui/stories/NotificationsHost.stories.d.ts +21 -0
  602. package/dist/notifications/ui/stories/NotificationsHost.stories.d.ts.map +1 -0
  603. package/dist/notifications/ui/stories/NotificationsHost.stories.js +326 -0
  604. package/dist/notifications/ui/stories/NotificationsHost.stories.js.map +1 -0
  605. package/dist/pages/NotFoundPage.d.ts +5 -0
  606. package/dist/pages/NotFoundPage.d.ts.map +1 -0
  607. package/dist/pages/index.d.ts +2 -0
  608. package/dist/pages/index.d.ts.map +1 -0
  609. package/dist/pages/index.js +15 -0
  610. package/dist/pages/index.js.map +1 -0
  611. package/dist/panel/Section.d.ts +9 -0
  612. package/dist/panel/Section.d.ts.map +1 -0
  613. package/dist/panel/index.d.ts +2 -0
  614. package/dist/panel/index.d.ts.map +1 -0
  615. package/dist/panel/index.js +16 -0
  616. package/dist/panel/index.js.map +1 -0
  617. package/dist/period-select/PeriodSelect.d.ts +14 -0
  618. package/dist/period-select/PeriodSelect.d.ts.map +1 -0
  619. package/dist/period-select/index.d.ts +3 -0
  620. package/dist/period-select/index.d.ts.map +1 -0
  621. package/dist/period-select/index.js +100 -0
  622. package/dist/period-select/index.js.map +1 -0
  623. package/dist/period-select/lib/constants.d.ts +2 -0
  624. package/dist/period-select/lib/constants.d.ts.map +1 -0
  625. package/dist/period-select/lib/index.d.ts +3 -0
  626. package/dist/period-select/lib/index.d.ts.map +1 -0
  627. package/dist/period-select/lib/periodSelect.d.ts +34 -0
  628. package/dist/period-select/lib/periodSelect.d.ts.map +1 -0
  629. package/dist/period-select/stories/PeriodSelect.stories.d.ts +96 -0
  630. package/dist/period-select/stories/PeriodSelect.stories.d.ts.map +1 -0
  631. package/dist/period-select/stories/PeriodSelect.stories.js +166 -0
  632. package/dist/period-select/stories/PeriodSelect.stories.js.map +1 -0
  633. package/dist/picker/PickerField.d.ts +4 -0
  634. package/dist/picker/PickerField.d.ts.map +1 -0
  635. package/dist/picker/PickerPopup.d.ts +26 -0
  636. package/dist/picker/PickerPopup.d.ts.map +1 -0
  637. package/dist/picker/PickerStatus.d.ts +9 -0
  638. package/dist/picker/PickerStatus.d.ts.map +1 -0
  639. package/dist/picker/PickerTriggerActions.d.ts +13 -0
  640. package/dist/picker/PickerTriggerActions.d.ts.map +1 -0
  641. package/dist/picker/PickerTriggerInput.d.ts +11 -0
  642. package/dist/picker/PickerTriggerInput.d.ts.map +1 -0
  643. package/dist/picker/index.d.ts +8 -0
  644. package/dist/picker/index.d.ts.map +1 -0
  645. package/dist/picker/index.js +2 -0
  646. package/dist/picker/model/createPickerTriggerPolicy.d.ts +22 -0
  647. package/dist/picker/model/createPickerTriggerPolicy.d.ts.map +1 -0
  648. package/dist/picker/model/extractPickerTextContent.d.ts +3 -0
  649. package/dist/picker/model/extractPickerTextContent.d.ts.map +1 -0
  650. package/dist/picker/model/index.d.ts +8 -0
  651. package/dist/picker/model/index.d.ts.map +1 -0
  652. package/dist/picker/model/usePickerDefaultFilter.d.ts +9 -0
  653. package/dist/picker/model/usePickerDefaultFilter.d.ts.map +1 -0
  654. package/dist/picker/model/usePickerFloatingListbox.d.ts +66 -0
  655. package/dist/picker/model/usePickerFloatingListbox.d.ts.map +1 -0
  656. package/dist/picker/model/usePickerQuery.d.ts +16 -0
  657. package/dist/picker/model/usePickerQuery.d.ts.map +1 -0
  658. package/dist/picker/model/usePickerSelectionLifecycle.d.ts +19 -0
  659. package/dist/picker/model/usePickerSelectionLifecycle.d.ts.map +1 -0
  660. package/dist/picker/model/usePickerTriggerController.d.ts +37 -0
  661. package/dist/picker/model/usePickerTriggerController.d.ts.map +1 -0
  662. package/dist/picker/types.d.ts +17 -0
  663. package/dist/picker/types.d.ts.map +1 -0
  664. package/dist/polymorphic/PolymorphicComponent.d.ts +7 -0
  665. package/dist/polymorphic/PolymorphicComponent.d.ts.map +1 -0
  666. package/dist/polymorphic/index.d.ts +2 -0
  667. package/dist/polymorphic/index.d.ts.map +1 -0
  668. package/dist/polymorphic/index.js +7 -0
  669. package/dist/polymorphic/index.js.map +1 -0
  670. package/dist/popover/FloatingPopover.d.ts +16 -0
  671. package/dist/popover/FloatingPopover.d.ts.map +1 -0
  672. package/dist/popover/FloatingTooltip.d.ts +7 -0
  673. package/dist/popover/FloatingTooltip.d.ts.map +1 -0
  674. package/dist/popover/components/Popover.d.ts +21 -0
  675. package/dist/popover/components/Popover.d.ts.map +1 -0
  676. package/dist/popover/components/PopoverContent.d.ts +16 -0
  677. package/dist/popover/components/PopoverContent.d.ts.map +1 -0
  678. package/dist/popover/components/PopoverContext.d.ts +15 -0
  679. package/dist/popover/components/PopoverContext.d.ts.map +1 -0
  680. package/dist/popover/components/PopoverTrigger.d.ts +9 -0
  681. package/dist/popover/components/PopoverTrigger.d.ts.map +1 -0
  682. package/dist/popover/index.d.ts +7 -0
  683. package/dist/popover/index.d.ts.map +1 -0
  684. package/dist/popover/index.js +2 -0
  685. package/dist/popover/stories/Popover.stories.d.ts +10 -0
  686. package/dist/popover/stories/Popover.stories.d.ts.map +1 -0
  687. package/dist/popover/stories/Popover.stories.js +75 -0
  688. package/dist/popover/stories/Popover.stories.js.map +1 -0
  689. package/dist/preset-range-date-input/index.d.ts +3 -0
  690. package/dist/preset-range-date-input/index.d.ts.map +1 -0
  691. package/dist/preset-range-date-input/index.js +7 -0
  692. package/dist/preset-range-date-input/index.js.map +1 -0
  693. package/dist/preset-range-date-input/lib/constants.d.ts +5 -0
  694. package/dist/preset-range-date-input/lib/constants.d.ts.map +1 -0
  695. package/dist/preset-range-date-input/lib/index.d.ts +2 -0
  696. package/dist/preset-range-date-input/lib/index.d.ts.map +1 -0
  697. package/dist/preset-range-date-input/ui/PresetRangeDateInput.d.ts +19 -0
  698. package/dist/preset-range-date-input/ui/PresetRangeDateInput.d.ts.map +1 -0
  699. package/dist/preset-range-date-input/ui/index.d.ts +3 -0
  700. package/dist/preset-range-date-input/ui/index.d.ts.map +1 -0
  701. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.d.ts +22 -0
  702. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.d.ts.map +1 -0
  703. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.js +45 -0
  704. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.js.map +1 -0
  705. package/dist/preset-select/PresetSelect.d.ts +21 -0
  706. package/dist/preset-select/PresetSelect.d.ts.map +1 -0
  707. package/dist/preset-select/index.d.ts +2 -0
  708. package/dist/preset-select/index.d.ts.map +1 -0
  709. package/dist/preset-select/index.js +28 -0
  710. package/dist/preset-select/index.js.map +1 -0
  711. package/dist/radio-button/RadioButton.d.ts +11 -0
  712. package/dist/radio-button/RadioButton.d.ts.map +1 -0
  713. package/dist/radio-button/index.d.ts +2 -0
  714. package/dist/radio-button/index.d.ts.map +1 -0
  715. package/dist/radio-button/index.js +2 -0
  716. package/dist/radio-button/stories/RadioButton.stories.d.ts +60 -0
  717. package/dist/radio-button/stories/RadioButton.stories.d.ts.map +1 -0
  718. package/dist/radio-button/stories/RadioButton.stories.js +121 -0
  719. package/dist/radio-button/stories/RadioButton.stories.js.map +1 -0
  720. package/dist/radio-group/RadioGroup.d.ts +32 -0
  721. package/dist/radio-group/RadioGroup.d.ts.map +1 -0
  722. package/dist/radio-group/index.d.ts +2 -0
  723. package/dist/radio-group/index.d.ts.map +1 -0
  724. package/dist/radio-group/index.js +2 -0
  725. package/dist/radio-group/stories/RadioGroup.stories.d.ts +74 -0
  726. package/dist/radio-group/stories/RadioGroup.stories.d.ts.map +1 -0
  727. package/dist/radio-group/stories/RadioGroup.stories.js +146 -0
  728. package/dist/radio-group/stories/RadioGroup.stories.js.map +1 -0
  729. package/dist/select/Select.d.ts +41 -0
  730. package/dist/select/Select.d.ts.map +1 -0
  731. package/dist/select/SelectOptionContent.d.ts +11 -0
  732. package/dist/select/SelectOptionContent.d.ts.map +1 -0
  733. package/dist/select/SerializableSelect.d.ts +19 -0
  734. package/dist/select/SerializableSelect.d.ts.map +1 -0
  735. package/dist/select/index.d.ts +4 -0
  736. package/dist/select/index.d.ts.map +1 -0
  737. package/dist/select/index.js +3 -0
  738. package/dist/select/lib/getOptionSearchText.d.ts +12 -0
  739. package/dist/select/lib/getOptionSearchText.d.ts.map +1 -0
  740. package/dist/select/lib/index.d.ts +2 -0
  741. package/dist/select/lib/index.d.ts.map +1 -0
  742. package/dist/select/stories/Select.stories.d.ts +127 -0
  743. package/dist/select/stories/Select.stories.d.ts.map +1 -0
  744. package/dist/select/stories/Select.stories.js +214 -0
  745. package/dist/select/stories/Select.stories.js.map +1 -0
  746. package/dist/select/stories/SerializableSelect.stories.d.ts +91 -0
  747. package/dist/select/stories/SerializableSelect.stories.d.ts.map +1 -0
  748. package/dist/select/stories/SerializableSelect.stories.js +165 -0
  749. package/dist/select/stories/SerializableSelect.stories.js.map +1 -0
  750. package/dist/separator/Separator.d.ts +10 -0
  751. package/dist/separator/Separator.d.ts.map +1 -0
  752. package/dist/separator/index.d.ts +2 -0
  753. package/dist/separator/index.d.ts.map +1 -0
  754. package/dist/separator/index.js +2 -0
  755. package/dist/simple-table/SimpleTable.d.ts +35 -0
  756. package/dist/simple-table/SimpleTable.d.ts.map +1 -0
  757. package/dist/simple-table/index.d.ts +2 -0
  758. package/dist/simple-table/index.d.ts.map +1 -0
  759. package/dist/simple-table/index.js +31 -0
  760. package/dist/simple-table/index.js.map +1 -0
  761. package/dist/slider/Slider.d.ts +86 -0
  762. package/dist/slider/Slider.d.ts.map +1 -0
  763. package/dist/slider/SliderInput.d.ts +53 -0
  764. package/dist/slider/SliderInput.d.ts.map +1 -0
  765. package/dist/slider/index.d.ts +6 -0
  766. package/dist/slider/index.d.ts.map +1 -0
  767. package/dist/slider/index.js +2 -0
  768. package/dist/slider/lib/index.d.ts +3 -0
  769. package/dist/slider/lib/index.d.ts.map +1 -0
  770. package/dist/slider/lib/sliderMath.d.ts +40 -0
  771. package/dist/slider/lib/sliderMath.d.ts.map +1 -0
  772. package/dist/slider/lib/types.d.ts +80 -0
  773. package/dist/slider/lib/types.d.ts.map +1 -0
  774. package/dist/slider/stories/Slider.stories.d.ts +29 -0
  775. package/dist/slider/stories/Slider.stories.d.ts.map +1 -0
  776. package/dist/slider/stories/Slider.stories.js +310 -0
  777. package/dist/slider/stories/Slider.stories.js.map +1 -0
  778. package/dist/slider/stories/SliderInput.stories.d.ts +30 -0
  779. package/dist/slider/stories/SliderInput.stories.d.ts.map +1 -0
  780. package/dist/slider/stories/SliderInput.stories.js +282 -0
  781. package/dist/slider/stories/SliderInput.stories.js.map +1 -0
  782. package/dist/sortable/Sortable.d.ts +52 -0
  783. package/dist/sortable/Sortable.d.ts.map +1 -0
  784. package/dist/sortable/SortableDragHandle.d.ts +18 -0
  785. package/dist/sortable/SortableDragHandle.d.ts.map +1 -0
  786. package/dist/sortable/index.d.ts +14 -0
  787. package/dist/sortable/index.d.ts.map +1 -0
  788. package/dist/sortable/index.js +2 -0
  789. package/dist/sortable/sortableUtils.d.ts +18 -0
  790. package/dist/sortable/sortableUtils.d.ts.map +1 -0
  791. package/dist/sortable/stories/Sortable.stories.d.ts +58 -0
  792. package/dist/sortable/stories/Sortable.stories.d.ts.map +1 -0
  793. package/dist/sortable/stories/Sortable.stories.js +255 -0
  794. package/dist/sortable/stories/Sortable.stories.js.map +1 -0
  795. package/dist/splitter/Splitter.d.ts +14 -0
  796. package/dist/splitter/Splitter.d.ts.map +1 -0
  797. package/dist/splitter/index.d.ts +2 -0
  798. package/dist/splitter/index.d.ts.map +1 -0
  799. package/dist/splitter/index.js +2 -0
  800. package/dist/splitter/stories/Splitter.stories.d.ts +66 -0
  801. package/dist/splitter/stories/Splitter.stories.d.ts.map +1 -0
  802. package/dist/splitter/stories/Splitter.stories.js +223 -0
  803. package/dist/splitter/stories/Splitter.stories.js.map +1 -0
  804. package/dist/state-select/StateSelect.d.ts +19 -0
  805. package/dist/state-select/StateSelect.d.ts.map +1 -0
  806. package/dist/state-select/index.d.ts +3 -0
  807. package/dist/state-select/index.d.ts.map +1 -0
  808. package/dist/state-select/index.js +2 -0
  809. package/dist/state-select/stories/StateSelect.stories.d.ts +70 -0
  810. package/dist/state-select/stories/StateSelect.stories.d.ts.map +1 -0
  811. package/dist/state-select/stories/StateSelect.stories.js +145 -0
  812. package/dist/state-select/stories/StateSelect.stories.js.map +1 -0
  813. package/dist/styles-entry.js +0 -0
  814. package/dist/styles.css +2 -0
  815. package/dist/switch/Switch.d.ts +19 -0
  816. package/dist/switch/Switch.d.ts.map +1 -0
  817. package/dist/switch/index.d.ts +2 -0
  818. package/dist/switch/index.d.ts.map +1 -0
  819. package/dist/switch/index.js +2 -0
  820. package/dist/switch/stories/Switch.stories.d.ts +59 -0
  821. package/dist/switch/stories/Switch.stories.d.ts.map +1 -0
  822. package/dist/switch/stories/Switch.stories.js +90 -0
  823. package/dist/switch/stories/Switch.stories.js.map +1 -0
  824. package/dist/table/Table.d.ts +152 -0
  825. package/dist/table/Table.d.ts.map +1 -0
  826. package/dist/table/index.d.ts +2 -0
  827. package/dist/table/index.d.ts.map +1 -0
  828. package/dist/table/index.js +2 -0
  829. package/dist/table-column-interactions/TableColumnResizeHandle.d.ts +13 -0
  830. package/dist/table-column-interactions/TableColumnResizeHandle.d.ts.map +1 -0
  831. package/dist/table-column-interactions/TableHeaderInteractionCell.d.ts +19 -0
  832. package/dist/table-column-interactions/TableHeaderInteractionCell.d.ts.map +1 -0
  833. package/dist/table-column-interactions/index.d.ts +3 -0
  834. package/dist/table-column-interactions/index.d.ts.map +1 -0
  835. package/dist/table-column-interactions/index.js +2 -0
  836. package/dist/table-sorting/TableSortingControls.d.ts +15 -0
  837. package/dist/table-sorting/TableSortingControls.d.ts.map +1 -0
  838. package/dist/table-sorting/index.d.ts +2 -0
  839. package/dist/table-sorting/index.d.ts.map +1 -0
  840. package/dist/table-sorting/index.js +47 -0
  841. package/dist/table-sorting/index.js.map +1 -0
  842. package/dist/tabs/index.d.ts +6 -0
  843. package/dist/tabs/index.d.ts.map +1 -0
  844. package/dist/tabs/index.js +2 -0
  845. package/dist/tabs/lib/tabs.d.ts +25 -0
  846. package/dist/tabs/lib/tabs.d.ts.map +1 -0
  847. package/dist/tabs/model/types.d.ts +72 -0
  848. package/dist/tabs/model/types.d.ts.map +1 -0
  849. package/dist/tabs/model/useTabsState.d.ts +35 -0
  850. package/dist/tabs/model/useTabsState.d.ts.map +1 -0
  851. package/dist/tabs/stories/Tabs.stories.d.ts +94 -0
  852. package/dist/tabs/stories/Tabs.stories.d.ts.map +1 -0
  853. package/dist/tabs/stories/Tabs.stories.js +283 -0
  854. package/dist/tabs/stories/Tabs.stories.js.map +1 -0
  855. package/dist/tabs/ui/Tabs.d.ts +16 -0
  856. package/dist/tabs/ui/Tabs.d.ts.map +1 -0
  857. package/dist/tabs/ui/TabsBox.d.ts +7 -0
  858. package/dist/tabs/ui/TabsBox.d.ts.map +1 -0
  859. package/dist/tabs/ui/TabsLayout.d.ts +39 -0
  860. package/dist/tabs/ui/TabsLayout.d.ts.map +1 -0
  861. package/dist/tabs/ui/TabsLoadingState.d.ts +14 -0
  862. package/dist/tabs/ui/TabsLoadingState.d.ts.map +1 -0
  863. package/dist/tabs/ui/TabsNoDataState.d.ts +12 -0
  864. package/dist/tabs/ui/TabsNoDataState.d.ts.map +1 -0
  865. package/dist/tabs/ui/TabsPanel.d.ts +15 -0
  866. package/dist/tabs/ui/TabsPanel.d.ts.map +1 -0
  867. package/dist/tabs/ui/TabsTabList.d.ts +15 -0
  868. package/dist/tabs/ui/TabsTabList.d.ts.map +1 -0
  869. package/dist/text/HighlightText.d.ts +5 -0
  870. package/dist/text/HighlightText.d.ts.map +1 -0
  871. package/dist/text/Text.d.ts +22 -0
  872. package/dist/text/Text.d.ts.map +1 -0
  873. package/dist/text/TextOverflow.d.ts +32 -0
  874. package/dist/text/TextOverflow.d.ts.map +1 -0
  875. package/dist/text/index.d.ts +4 -0
  876. package/dist/text/index.d.ts.map +1 -0
  877. package/dist/text/index.js +84 -0
  878. package/dist/text/index.js.map +1 -0
  879. package/dist/text-editor/EmailDialog.d.ts +13 -0
  880. package/dist/text-editor/EmailDialog.d.ts.map +1 -0
  881. package/dist/text-editor/LinkDialog.d.ts +13 -0
  882. package/dist/text-editor/LinkDialog.d.ts.map +1 -0
  883. package/dist/text-editor/Paragraph.d.ts +6 -0
  884. package/dist/text-editor/Paragraph.d.ts.map +1 -0
  885. package/dist/text-editor/PhoneDialog.d.ts +13 -0
  886. package/dist/text-editor/PhoneDialog.d.ts.map +1 -0
  887. package/dist/text-editor/SemanticDialog.d.ts +30 -0
  888. package/dist/text-editor/SemanticDialog.d.ts.map +1 -0
  889. package/dist/text-editor/TextEditorDialogs.d.ts +22 -0
  890. package/dist/text-editor/TextEditorDialogs.d.ts.map +1 -0
  891. package/dist/text-editor/TextEditorLexical.d.ts +6 -0
  892. package/dist/text-editor/TextEditorLexical.d.ts.map +1 -0
  893. package/dist/text-editor/TextEditorLexicalClient.d.ts +9 -0
  894. package/dist/text-editor/TextEditorLexicalClient.d.ts.map +1 -0
  895. package/dist/text-editor/TimeDialog.d.ts +18 -0
  896. package/dist/text-editor/TimeDialog.d.ts.map +1 -0
  897. package/dist/text-editor/editorModel.d.ts +34 -0
  898. package/dist/text-editor/editorModel.d.ts.map +1 -0
  899. package/dist/text-editor/index.d.ts +7 -0
  900. package/dist/text-editor/index.d.ts.map +1 -0
  901. package/dist/text-editor/index.js +22 -0
  902. package/dist/text-editor/index.js.map +1 -0
  903. package/dist/text-editor/lexical/plugins/InitialHtmlPlugin.d.ts +10 -0
  904. package/dist/text-editor/lexical/plugins/InitialHtmlPlugin.d.ts.map +1 -0
  905. package/dist/text-editor/lexical/plugins/SelectionStatePlugin.d.ts +12 -0
  906. package/dist/text-editor/lexical/plugins/SelectionStatePlugin.d.ts.map +1 -0
  907. package/dist/text-editor/lexical/plugins/index.d.ts +3 -0
  908. package/dist/text-editor/lexical/plugins/index.d.ts.map +1 -0
  909. package/dist/text-editor/lexical/plugins/index.js +2 -0
  910. package/dist/text-editor/lib/semantic/getSemanticTagDepth.d.ts +3 -0
  911. package/dist/text-editor/lib/semantic/getSemanticTagDepth.d.ts.map +1 -0
  912. package/dist/text-editor/lib/serialization/createLexicalRaw.d.ts +4 -0
  913. package/dist/text-editor/lib/serialization/createLexicalRaw.d.ts.map +1 -0
  914. package/dist/text-editor/lib/toolbar/resolveToolbarState.d.ts +5 -0
  915. package/dist/text-editor/lib/toolbar/resolveToolbarState.d.ts.map +1 -0
  916. package/dist/text-editor/lib/toolbar/styleMappers.d.ts +5 -0
  917. package/dist/text-editor/lib/toolbar/styleMappers.d.ts.map +1 -0
  918. package/dist/text-editor/linkTypes.d.ts +2 -0
  919. package/dist/text-editor/linkTypes.d.ts.map +1 -0
  920. package/dist/text-editor/model/hooks/useTextEditorLexicalActions.d.ts +27 -0
  921. package/dist/text-editor/model/hooks/useTextEditorLexicalActions.d.ts.map +1 -0
  922. package/dist/text-editor/model/textEditorTypes.d.ts +20 -0
  923. package/dist/text-editor/model/textEditorTypes.d.ts.map +1 -0
  924. package/dist/text-editor/nodes/AccessibleLinkNode.d.ts +42 -0
  925. package/dist/text-editor/nodes/AccessibleLinkNode.d.ts.map +1 -0
  926. package/dist/text-editor/nodes/SemanticTagNode.d.ts +39 -0
  927. package/dist/text-editor/nodes/SemanticTagNode.d.ts.map +1 -0
  928. package/dist/text-editor/semanticTagConfigs.d.ts +4 -0
  929. package/dist/text-editor/semanticTagConfigs.d.ts.map +1 -0
  930. package/dist/text-editor/toolbar/ActionControls.d.ts +9 -0
  931. package/dist/text-editor/toolbar/ActionControls.d.ts.map +1 -0
  932. package/dist/text-editor/toolbar/AlignmentControls.d.ts +11 -0
  933. package/dist/text-editor/toolbar/AlignmentControls.d.ts.map +1 -0
  934. package/dist/text-editor/toolbar/HistoryControls.d.ts +10 -0
  935. package/dist/text-editor/toolbar/HistoryControls.d.ts.map +1 -0
  936. package/dist/text-editor/toolbar/LinkButtons.d.ts +11 -0
  937. package/dist/text-editor/toolbar/LinkButtons.d.ts.map +1 -0
  938. package/dist/text-editor/toolbar/TagButtons.d.ts +10 -0
  939. package/dist/text-editor/toolbar/TagButtons.d.ts.map +1 -0
  940. package/dist/text-editor/toolbar/TextEditorToolbarLexical.d.ts +21 -0
  941. package/dist/text-editor/toolbar/TextEditorToolbarLexical.d.ts.map +1 -0
  942. package/dist/text-editor/toolbar/ToolbarControl.d.ts +15 -0
  943. package/dist/text-editor/toolbar/ToolbarControl.d.ts.map +1 -0
  944. package/dist/text-editor/toolbar/index.d.ts +8 -0
  945. package/dist/text-editor/toolbar/index.d.ts.map +1 -0
  946. package/dist/text-editor/toolbar/index.js +2 -0
  947. package/dist/text-editor/toolbar/types.d.ts +60 -0
  948. package/dist/text-editor/toolbar/types.d.ts.map +1 -0
  949. package/dist/text-editor/types.d.ts +2 -0
  950. package/dist/text-editor/types.d.ts.map +1 -0
  951. package/dist/textarea/Textarea.d.ts +11 -0
  952. package/dist/textarea/Textarea.d.ts.map +1 -0
  953. package/dist/textarea/index.d.ts +2 -0
  954. package/dist/textarea/index.d.ts.map +1 -0
  955. package/dist/textarea/index.js +2 -0
  956. package/dist/textarea/stories/Textarea.stories.d.ts +64 -0
  957. package/dist/textarea/stories/Textarea.stories.d.ts.map +1 -0
  958. package/dist/textarea/stories/Textarea.stories.js +98 -0
  959. package/dist/textarea/stories/Textarea.stories.js.map +1 -0
  960. package/dist/three-scene/ThreeSceneErrorBoundary.d.ts +17 -0
  961. package/dist/three-scene/ThreeSceneErrorBoundary.d.ts.map +1 -0
  962. package/dist/three-scene/ThreeSceneGuard.d.ts +13 -0
  963. package/dist/three-scene/ThreeSceneGuard.d.ts.map +1 -0
  964. package/dist/three-scene/index.d.ts +3 -0
  965. package/dist/three-scene/index.d.ts.map +1 -0
  966. package/dist/three-scene/index.js +38 -0
  967. package/dist/three-scene/index.js.map +1 -0
  968. package/dist/toggle/Toggle.d.ts +14 -0
  969. package/dist/toggle/Toggle.d.ts.map +1 -0
  970. package/dist/toggle/index.d.ts +2 -0
  971. package/dist/toggle/index.d.ts.map +1 -0
  972. package/dist/toggle/index.js +2 -0
  973. package/dist/toggle/stories/Toggle.stories.d.ts +61 -0
  974. package/dist/toggle/stories/Toggle.stories.d.ts.map +1 -0
  975. package/dist/toggle/stories/Toggle.stories.js +102 -0
  976. package/dist/toggle/stories/Toggle.stories.js.map +1 -0
  977. package/dist/toolbar/Toolbar.d.ts +17 -0
  978. package/dist/toolbar/Toolbar.d.ts.map +1 -0
  979. package/dist/toolbar/index.d.ts +2 -0
  980. package/dist/toolbar/index.d.ts.map +1 -0
  981. package/dist/toolbar/index.js +55 -0
  982. package/dist/toolbar/index.js.map +1 -0
  983. package/dist/tree/Tree.d.ts +64 -0
  984. package/dist/tree/Tree.d.ts.map +1 -0
  985. package/dist/tree/index.d.ts +2 -0
  986. package/dist/tree/index.d.ts.map +1 -0
  987. package/dist/tree/index.js +102 -0
  988. package/dist/tree/index.js.map +1 -0
  989. package/dist/tree-select/TreeMultiSelect.d.ts +13 -0
  990. package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -0
  991. package/dist/tree-select/TreeNodeContent.d.ts +15 -0
  992. package/dist/tree-select/TreeNodeContent.d.ts.map +1 -0
  993. package/dist/tree-select/TreePickerBase.d.ts +22 -0
  994. package/dist/tree-select/TreePickerBase.d.ts.map +1 -0
  995. package/dist/tree-select/TreeSelect.d.ts +14 -0
  996. package/dist/tree-select/TreeSelect.d.ts.map +1 -0
  997. package/dist/tree-select/helpers.d.ts +3 -0
  998. package/dist/tree-select/helpers.d.ts.map +1 -0
  999. package/dist/tree-select/index.d.ts +5 -0
  1000. package/dist/tree-select/index.d.ts.map +1 -0
  1001. package/dist/tree-select/index.js +10 -0
  1002. package/dist/tree-select/index.js.map +1 -0
  1003. package/dist/tree-select/model/treeUtils.d.ts +37 -0
  1004. package/dist/tree-select/model/treeUtils.d.ts.map +1 -0
  1005. package/dist/tree-select/stories/TreeMultiSelect.stories.d.ts +35 -0
  1006. package/dist/tree-select/stories/TreeMultiSelect.stories.d.ts.map +1 -0
  1007. package/dist/tree-select/stories/TreeMultiSelect.stories.js +64 -0
  1008. package/dist/tree-select/stories/TreeMultiSelect.stories.js.map +1 -0
  1009. package/dist/tree-select/stories/TreeSelect.stories.d.ts +35 -0
  1010. package/dist/tree-select/stories/TreeSelect.stories.d.ts.map +1 -0
  1011. package/dist/tree-select/stories/TreeSelect.stories.js +66 -0
  1012. package/dist/tree-select/stories/TreeSelect.stories.js.map +1 -0
  1013. package/dist/tree-select/stories/treeStoryFixtures.d.ts +3 -0
  1014. package/dist/tree-select/stories/treeStoryFixtures.d.ts.map +1 -0
  1015. package/dist/tree-select/types.d.ts +16 -0
  1016. package/dist/tree-select/types.d.ts.map +1 -0
  1017. package/dist/tree-table/TreeTable.d.ts +174 -0
  1018. package/dist/tree-table/TreeTable.d.ts.map +1 -0
  1019. package/dist/tree-table/index.d.ts +2 -0
  1020. package/dist/tree-table/index.d.ts.map +1 -0
  1021. package/dist/tree-table/index.js +220 -0
  1022. package/dist/tree-table/index.js.map +1 -0
  1023. package/dist/types.d.ts +21 -0
  1024. package/dist/types.d.ts.map +1 -0
  1025. package/dist/uiClasses.d.ts +16 -0
  1026. package/dist/uiClasses.d.ts.map +1 -0
  1027. package/dist/wheel-picker/WheelPicker.d.ts +21 -0
  1028. package/dist/wheel-picker/WheelPicker.d.ts.map +1 -0
  1029. package/dist/wheel-picker/index.d.ts +3 -0
  1030. package/dist/wheel-picker/index.d.ts.map +1 -0
  1031. package/dist/wheel-picker/index.js +2 -0
  1032. package/dist/wheel-picker/lib/wheelPickerMath.d.ts +25 -0
  1033. package/dist/wheel-picker/lib/wheelPickerMath.d.ts.map +1 -0
  1034. package/package.json +1007 -0
  1035. package/src/styles/_align.scss +96 -0
  1036. package/src/styles/_base.scss +443 -0
  1037. package/src/styles/_border.scss +99 -0
  1038. package/src/styles/_color.scss +161 -0
  1039. package/src/styles/_components.scss +14 -0
  1040. package/src/styles/_controls.scss +42 -0
  1041. package/src/styles/_flex.scss +98 -0
  1042. package/src/styles/_gap.scss +57 -0
  1043. package/src/styles/_grid.scss +52 -0
  1044. package/src/styles/_layout.scss +288 -0
  1045. package/src/styles/_margin.scss +315 -0
  1046. package/src/styles/_normalize.scss +194 -0
  1047. package/src/styles/_root-tokens.scss +41 -0
  1048. package/src/styles/_text.scss +222 -0
  1049. package/src/styles/_variables.scss +22 -0
  1050. package/src/styles/config/_index.scss +400 -0
  1051. package/src/styles/fonts.scss +47 -0
  1052. package/src/styles/foundation.scss +12 -0
  1053. package/src/styles/mixins/_controls.scss +125 -0
  1054. package/src/styles/mixins/_index.scss +3 -0
  1055. package/src/styles/mixins/_media.scss +70 -0
  1056. package/src/styles/mixins/_mixin.scss +299 -0
  1057. package/src/styles/styles.scss +15 -0
  1058. package/src/styles/themes/_index.scss +2 -0
  1059. package/src/styles/themes/_theme.scss +17 -0
  1060. package/src/styles/themes/dark/_default.scss +24 -0
  1061. package/src/styles/themes/light/_default.scss +7 -0
  1062. package/styles/config.scss +1 -0
  1063. package/styles/foundation.scss +1 -0
  1064. package/styles/mixins.scss +1 -0
  1065. package/styles/themes.scss +1 -0
  1066. package/styles.scss +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextEditorLexicalClient-DcixYuo4.js","names":[],"sources":["../../src/text-editor/lib/serialization/createLexicalRaw.ts","../../src/text-editor/lib/semantic/getSemanticTagDepth.ts","../../src/text-editor/nodes/AccessibleLinkNode.ts","../../src/text-editor/nodes/SemanticTagNode.ts","../../src/text-editor/model/hooks/useTextEditorLexicalActions.ts","../../src/text-editor/TextEditor.module.scss","../../src/text-editor/EmailDialog.tsx","../../src/text-editor/LinkDialog.tsx","../../src/text-editor/PhoneDialog.tsx","../../src/text-editor/SemanticDialog.tsx","../../src/text-editor/semanticTagConfigs.tsx","../../src/text-editor/TimeDialog.tsx","../../src/text-editor/TextEditorDialogs.tsx","../../src/text-editor/TextEditorLexicalClient.tsx"],"sourcesContent":["import { EditorState as LexicalEditorState } from \"lexical\";\n\nimport type { TextEditorLexicalRaw } from \"../../editorModel\";\n\nexport const createLexicalRaw = (editorState: LexicalEditorState): TextEditorLexicalRaw => {\n\treturn {\n\t\tformat: \"lexical\",\n\t\tversion: 1,\n\t\teditorState: editorState.toJSON() as unknown as Record<string, unknown>\n\t};\n};\n","import type { LexicalNode } from \"lexical\";\n\nexport const getSemanticTagDepth = (node: LexicalNode): number => {\n\tlet depth = 0;\n\tlet current: LexicalNode | null = node;\n\n\twhile (current) {\n\t\tdepth += 1;\n\t\tcurrent = current.getParent();\n\t}\n\n\treturn depth;\n};\n","import { LinkAttributes, LinkNode, SerializedLinkNode } from \"@lexical/link\";\nimport {\n\t$applyNodeReplacement,\n\tDOMConversionMap,\n\tDOMConversionOutput,\n\tEditorConfig,\n\tElementNode,\n\tLexicalNode,\n\tLexicalUpdateJSON,\n\tNodeKey,\n\tRangeSelection,\n\tSpread\n} from \"lexical\";\n\nexport type AccessibleLinkAttributes = LinkAttributes & {\n\tariaLabel?: null | string;\n\tqrCode?: boolean;\n\tadd?: null | string;\n\ttext?: null | string;\n};\n\nexport type SerializedAccessibleLinkNode = Spread<\n\t{\n\t\tariaLabel: null | string;\n\t\tqrCode: boolean;\n\t\tadd: null | string;\n\t\ttext: null | string;\n\t},\n\tSerializedLinkNode\n>;\n\nconst convertAccessibleLinkElement = (domNode: Node): DOMConversionOutput => {\n\tif (!(domNode instanceof HTMLAnchorElement)) {\n\t\treturn { node: null };\n\t}\n\n\tconst textContent = domNode.textContent;\n\tif ((textContent === null || textContent === \"\") && domNode.children.length === 0) {\n\t\treturn { node: null };\n\t}\n\n\treturn {\n\t\tnode: $createAccessibleLinkNode(domNode.getAttribute(\"href\") || \"\", {\n\t\t\trel: domNode.getAttribute(\"rel\"),\n\t\t\ttarget: domNode.getAttribute(\"target\"),\n\t\t\ttitle: domNode.getAttribute(\"title\"),\n\t\t\tariaLabel: domNode.getAttribute(\"aria-label\"),\n\t\t\tqrCode: domNode.getAttribute(\"data-qr-code\") === \"true\",\n\t\t\tadd: null,\n\t\t\ttext: textContent\n\t\t})\n\t};\n};\n\nexport class AccessibleLinkNode extends LinkNode {\n\t__ariaLabel: null | string;\n\t__qrCode: boolean;\n\t__add: null | string;\n\t__text: null | string;\n\n\tstatic getType(): string {\n\t\treturn \"accessible-link\";\n\t}\n\n\tstatic clone(node: AccessibleLinkNode): AccessibleLinkNode {\n\t\treturn new AccessibleLinkNode(\n\t\t\tnode.__url,\n\t\t\t{\n\t\t\t\trel: node.__rel,\n\t\t\t\ttarget: node.__target,\n\t\t\t\ttitle: node.__title,\n\t\t\t\tariaLabel: node.__ariaLabel,\n\t\t\t\tqrCode: node.__qrCode,\n\t\t\t\tadd: node.__add,\n\t\t\t\ttext: node.__text\n\t\t\t},\n\t\t\tnode.__key\n\t\t);\n\t}\n\n\tconstructor(url = \"\", attributes: AccessibleLinkAttributes = {}, key?: NodeKey) {\n\t\tsuper(url, attributes, key);\n\n\t\tconst { ariaLabel = null, qrCode = false, add = null, text = null } = attributes;\n\t\tthis.__ariaLabel = ariaLabel;\n\t\tthis.__qrCode = qrCode;\n\t\tthis.__add = add;\n\t\tthis.__text = text;\n\t}\n\n\tstatic importDOM(): DOMConversionMap | null {\n\t\treturn {\n\t\t\ta: () => ({\n\t\t\t\tconversion: convertAccessibleLinkElement,\n\t\t\t\tpriority: 2\n\t\t\t})\n\t\t};\n\t}\n\n\tstatic importJSON(serializedNode: SerializedAccessibleLinkNode): AccessibleLinkNode {\n\t\treturn $createAccessibleLinkNode().updateFromJSON(serializedNode);\n\t}\n\n\tupdateFromJSON(serializedNode: LexicalUpdateJSON<SerializedAccessibleLinkNode>): this {\n\t\treturn super\n\t\t\t.updateFromJSON(serializedNode)\n\t\t\t.setAriaLabel(serializedNode.ariaLabel || null)\n\t\t\t.setQrCode(!!serializedNode.qrCode)\n\t\t\t.setAdd(serializedNode.add || null)\n\t\t\t.setText(serializedNode.text || null);\n\t}\n\n\texportJSON(): SerializedAccessibleLinkNode {\n\t\treturn {\n\t\t\t...super.exportJSON(),\n\t\t\ttype: \"accessible-link\",\n\t\t\tversion: 1,\n\t\t\tariaLabel: this.getAriaLabel(),\n\t\t\tqrCode: this.getQrCode(),\n\t\t\tadd: this.getAdd(),\n\t\t\ttext: this.getText()\n\t\t} as SerializedAccessibleLinkNode;\n\t}\n\n\tcreateDOM(config: EditorConfig): HTMLElement {\n\t\tconst dom = super.createDOM(config) as HTMLElement;\n\t\tthis.applyAccessibleAttributes(null, dom);\n\t\treturn dom;\n\t}\n\n\tupdateDOM(prevNode: this, anchor: HTMLElement, config: EditorConfig): boolean {\n\t\tconst isUpdated = super.updateDOM(prevNode, anchor as never, config);\n\t\tthis.applyAccessibleAttributes(prevNode, anchor);\n\t\treturn isUpdated;\n\t}\n\n\tapplyAccessibleAttributes(prevNode: this | null, anchor: HTMLElement): void {\n\t\tif (!(anchor instanceof HTMLAnchorElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!prevNode || prevNode.__ariaLabel !== this.__ariaLabel) {\n\t\t\tif (this.__ariaLabel) {\n\t\t\t\tanchor.setAttribute(\"aria-label\", this.__ariaLabel);\n\t\t\t} else {\n\t\t\t\tanchor.removeAttribute(\"aria-label\");\n\t\t\t}\n\t\t}\n\n\t\tif (!prevNode || prevNode.__qrCode !== this.__qrCode) {\n\t\t\tanchor.setAttribute(\"data-qr-code\", this.__qrCode ? \"true\" : \"false\");\n\t\t}\n\t}\n\n\tinsertNewAfter(_selection: RangeSelection, restoreSelection = true): null | ElementNode {\n\t\tconst linkNode = $createAccessibleLinkNode(this.__url, {\n\t\t\trel: this.__rel,\n\t\t\ttarget: this.__target,\n\t\t\ttitle: this.__title,\n\t\t\tariaLabel: this.__ariaLabel,\n\t\t\tqrCode: this.__qrCode,\n\t\t\tadd: this.__add,\n\t\t\ttext: this.__text\n\t\t});\n\t\tthis.insertAfter(linkNode, restoreSelection);\n\t\treturn linkNode;\n\t}\n\n\tgetAriaLabel(): null | string {\n\t\treturn this.getLatest().__ariaLabel;\n\t}\n\n\tsetAriaLabel(ariaLabel: null | string): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__ariaLabel = ariaLabel;\n\t\treturn this;\n\t}\n\n\tgetQrCode(): boolean {\n\t\treturn this.getLatest().__qrCode;\n\t}\n\n\tsetQrCode(qrCode: boolean): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__qrCode = qrCode;\n\t\treturn this;\n\t}\n\n\tgetAdd(): null | string {\n\t\treturn this.getLatest().__add;\n\t}\n\n\tsetAdd(add: null | string): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__add = add;\n\t\treturn this;\n\t}\n\n\tgetText(): null | string {\n\t\treturn this.getLatest().__text;\n\t}\n\n\tsetText(text: null | string): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__text = text;\n\t\treturn this;\n\t}\n}\n\nexport const $createAccessibleLinkNode = (url = \"\", attributes?: AccessibleLinkAttributes): AccessibleLinkNode => {\n\treturn $applyNodeReplacement(new AccessibleLinkNode(url, attributes));\n};\n\nexport const $isAccessibleLinkNode = (node: LexicalNode | null | undefined): node is AccessibleLinkNode => {\n\treturn node instanceof AccessibleLinkNode;\n};\n","import {\n\t$applyNodeReplacement,\n\tDOMConversionMap,\n\tDOMConversionOutput,\n\tEditorConfig,\n\tElementNode,\n\tLexicalNode,\n\tLexicalUpdateJSON,\n\tNodeKey,\n\tRangeSelection,\n\tSerializedElementNode,\n\tSpread\n} from \"lexical\";\n\nexport type SemanticTagAttributes = Record<string, string>;\n\nexport type SerializedSemanticTagNode = Spread<\n\t{\n\t\ttag: string;\n\t\tattributes: SemanticTagAttributes;\n\t\ttext: null | string;\n\t},\n\tSerializedElementNode\n>;\n\nconst getAttributesFromElement = (element: HTMLElement): SemanticTagAttributes => {\n\tconst attributes: SemanticTagAttributes = {};\n\tArray.from(element.attributes).forEach((attr) => {\n\t\tif (attr.name === \"class\") return;\n\t\tattributes[attr.name] = attr.value;\n\t});\n\treturn attributes;\n};\n\nconst convertSemanticTagElement = (domNode: Node): DOMConversionOutput => {\n\tif (!(domNode instanceof HTMLElement)) {\n\t\treturn { node: null };\n\t}\n\n\tconst tag = domNode.tagName.toLowerCase();\n\tif (![\"abbr\", \"span\", \"time\", \"cite\", \"del\", \"ins\"].includes(tag)) {\n\t\treturn { node: null };\n\t}\n\n\tconst text = domNode.textContent;\n\tif ((text === null || text === \"\") && domNode.children.length === 0) {\n\t\treturn { node: null };\n\t}\n\n\treturn {\n\t\tnode: $createSemanticTagNode(tag, getAttributesFromElement(domNode), text)\n\t};\n};\n\nexport class SemanticTagNode extends ElementNode {\n\t__tag: string;\n\t__attributes: SemanticTagAttributes;\n\t__text: null | string;\n\n\tstatic getType(): string {\n\t\treturn \"semantic-tag\";\n\t}\n\n\tstatic clone(node: SemanticTagNode): SemanticTagNode {\n\t\treturn new SemanticTagNode(node.__tag, node.__attributes, node.__text, node.__key);\n\t}\n\n\tconstructor(tag = \"span\", attributes: SemanticTagAttributes = {}, text: null | string = null, key?: NodeKey) {\n\t\tsuper(key);\n\t\tthis.__tag = tag;\n\t\tthis.__attributes = attributes;\n\t\tthis.__text = text;\n\t}\n\n\tstatic importDOM(): DOMConversionMap | null {\n\t\treturn {\n\t\t\tabbr: () => ({ conversion: convertSemanticTagElement, priority: 2 }),\n\t\t\tspan: () => ({ conversion: convertSemanticTagElement, priority: 2 }),\n\t\t\ttime: () => ({ conversion: convertSemanticTagElement, priority: 2 }),\n\t\t\tcite: () => ({ conversion: convertSemanticTagElement, priority: 2 }),\n\t\t\tdel: () => ({ conversion: convertSemanticTagElement, priority: 2 }),\n\t\t\tins: () => ({ conversion: convertSemanticTagElement, priority: 2 })\n\t\t};\n\t}\n\n\tstatic importJSON(serializedNode: SerializedSemanticTagNode): SemanticTagNode {\n\t\treturn $createSemanticTagNode(serializedNode.tag, serializedNode.attributes, serializedNode.text).updateFromJSON(serializedNode);\n\t}\n\n\tupdateFromJSON(serializedNode: LexicalUpdateJSON<SerializedSemanticTagNode>): this {\n\t\treturn super\n\t\t\t.updateFromJSON(serializedNode)\n\t\t\t.setTag(serializedNode.tag)\n\t\t\t.setAttributes(serializedNode.attributes || {})\n\t\t\t.setText(serializedNode.text || null);\n\t}\n\n\texportJSON(): SerializedSemanticTagNode {\n\t\treturn {\n\t\t\t...super.exportJSON(),\n\t\t\ttype: \"semantic-tag\",\n\t\t\tversion: 1,\n\t\t\ttag: this.getTag(),\n\t\t\tattributes: this.getAttributes(),\n\t\t\ttext: this.getText()\n\t\t};\n\t}\n\n\tcreateDOM(config: EditorConfig): HTMLElement {\n\t\tvoid config;\n\t\tconst element = document.createElement(this.__tag);\n\t\tthis.applyEditorAttributes(element);\n\t\treturn element;\n\t}\n\n\tupdateDOM(prevNode: this, dom: HTMLElement): boolean {\n\t\tif (prevNode.__tag !== this.__tag) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.applyEditorAttributes(dom);\n\t\treturn false;\n\t}\n\n\texportDOM(): { element: HTMLElement } {\n\t\tconst element = document.createElement(this.__tag);\n\t\tObject.entries(this.__attributes).forEach(([key, value]) => {\n\t\t\telement.setAttribute(key, value);\n\t\t});\n\t\treturn { element };\n\t}\n\n\tapplyEditorAttributes(dom: HTMLElement): void {\n\t\tdom.classList.add(\"custom-tag-highlight\");\n\t\tArray.from(dom.attributes).forEach((attr) => {\n\t\t\tif (attr.name === \"class\") return;\n\t\t\tdom.removeAttribute(attr.name);\n\t\t});\n\t\tObject.entries(this.__attributes).forEach(([key, value]) => {\n\t\t\tdom.setAttribute(key, value);\n\t\t});\n\t}\n\n\tinsertNewAfter(_selection: RangeSelection, restoreSelection = true): null | ElementNode {\n\t\tconst node = $createSemanticTagNode(this.__tag, this.__attributes, this.__text);\n\t\tthis.insertAfter(node, restoreSelection);\n\t\treturn node;\n\t}\n\n\tcanInsertTextBefore(): boolean {\n\t\treturn false;\n\t}\n\n\tcanInsertTextAfter(): boolean {\n\t\treturn false;\n\t}\n\n\tcanBeEmpty(): boolean {\n\t\treturn false;\n\t}\n\n\tisInline(): boolean {\n\t\treturn true;\n\t}\n\n\tgetTag(): string {\n\t\treturn this.getLatest().__tag;\n\t}\n\n\tsetTag(tag: string): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__tag = tag;\n\t\treturn this;\n\t}\n\n\tgetAttributes(): SemanticTagAttributes {\n\t\treturn this.getLatest().__attributes;\n\t}\n\n\tsetAttributes(attributes: SemanticTagAttributes): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__attributes = attributes;\n\t\treturn this;\n\t}\n\n\tgetText(): null | string {\n\t\treturn this.getLatest().__text;\n\t}\n\n\tsetText(text: null | string): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__text = text;\n\t\treturn this;\n\t}\n}\n\nexport const $createSemanticTagNode = (\n\ttag: string,\n\tattributes: SemanticTagAttributes = {},\n\ttext: null | string = null\n): SemanticTagNode => {\n\treturn $applyNodeReplacement(new SemanticTagNode(tag, attributes, text));\n};\n\nexport const $isSemanticTagNode = (node: LexicalNode | null | undefined): node is SemanticTagNode => {\n\treturn node instanceof SemanticTagNode;\n};\n","import { useCallback } from \"react\";\n\nimport { $isLinkNode } from \"@lexical/link\";\nimport { INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND, REMOVE_LIST_COMMAND } from \"@lexical/list\";\nimport { $createHeadingNode, $createQuoteNode } from \"@lexical/rich-text\";\nimport { $setBlocksType } from \"@lexical/selection\";\nimport { $findMatchingParent } from \"@lexical/utils\";\nimport {\n\t$createParagraphNode,\n\t$createTextNode,\n\t$getSelection,\n\t$isRangeSelection,\n\tElementFormatType,\n\tFORMAT_ELEMENT_COMMAND,\n\tFORMAT_TEXT_COMMAND,\n\ttype LexicalEditor,\n\ttype LexicalNode,\n\tREDO_COMMAND,\n\tUNDO_COMMAND\n} from \"lexical\";\n\nimport { getSemanticTagDepth } from \"../../lib/semantic/getSemanticTagDepth\";\nimport { getHeadingTagByStyle, getLexicalInlineStyle } from \"../../lib/toolbar/styleMappers\";\nimport { $createAccessibleLinkNode, $isAccessibleLinkNode } from \"../../nodes/AccessibleLinkNode\";\nimport { $createSemanticTagNode, $isSemanticTagNode, type SemanticTagNode } from \"../../nodes/SemanticTagNode\";\nimport { LinkTypes, TagTypes } from \"../../toolbar\";\nimport { type LexicalToolbarState, type LinkType, type TextAlignment } from \"../textEditorTypes\";\n\ninterface InsertLinkPayload {\n\turl: string;\n\ttext: string;\n\tadd: string;\n\tariaLabel: string;\n\tqrCode: boolean;\n}\n\ninterface UseTextEditorLexicalActionsParams {\n\teditor: LexicalEditor | null;\n\ttoolbarState: LexicalToolbarState;\n\thasLocalLinkDialog: boolean;\n\tonOpenLinkDialog: (type: LinkTypes) => void;\n\tonOpenTagDialog: (type: TagTypes) => void;\n}\n\nexport function useTextEditorLexicalActions({\n\teditor,\n\ttoolbarState,\n\thasLocalLinkDialog,\n\tonOpenLinkDialog,\n\tonOpenTagDialog\n}: UseTextEditorLexicalActionsParams) {\n\tconst handleBlockStyleToggle = useCallback(\n\t\t(style: string) => {\n\t\t\tif (!editor) return;\n\n\t\t\tif (style === \"unordered-list-item\") {\n\t\t\t\tif (toolbarState.blockType === \"unordered-list-item\") {\n\t\t\t\t\teditor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\teditor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (style === \"ordered-list-item\") {\n\t\t\t\tif (toolbarState.blockType === \"ordered-list-item\") {\n\t\t\t\t\teditor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\teditor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tif (!$isRangeSelection(selection)) return;\n\n\t\t\t\tif (style === \"unstyled\" || style === \"paragraph\") {\n\t\t\t\t\t$setBlocksType(selection, () => $createParagraphNode());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (style === \"blockquote\") {\n\t\t\t\t\t$setBlocksType(selection, () => $createQuoteNode());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst headingTag = getHeadingTagByStyle(style);\n\t\t\t\tif (headingTag) {\n\t\t\t\t\t$setBlocksType(selection, () => $createHeadingNode(headingTag));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\t[editor, toolbarState.blockType]\n\t);\n\n\tconst handleInlineStyleToggle = useCallback(\n\t\t(style: string) => {\n\t\t\tif (!editor) return;\n\n\t\t\tconst lexicalStyle = getLexicalInlineStyle(style);\n\t\t\tif (!lexicalStyle) return;\n\n\t\t\teditor.dispatchCommand(FORMAT_TEXT_COMMAND, lexicalStyle as never);\n\t\t},\n\t\t[editor]\n\t);\n\n\tconst handleAlignmentChange = useCallback(\n\t\t(alignment: TextAlignment) => {\n\t\t\tif (!editor) return;\n\t\t\teditor.dispatchCommand(FORMAT_ELEMENT_COMMAND, alignment as ElementFormatType);\n\t\t},\n\t\t[editor]\n\t);\n\n\tconst handleUndo = useCallback(() => {\n\t\tif (!editor) return;\n\t\teditor.dispatchCommand(UNDO_COMMAND, undefined);\n\t}, [editor]);\n\n\tconst handleRedo = useCallback(() => {\n\t\tif (!editor) return;\n\t\teditor.dispatchCommand(REDO_COMMAND, undefined);\n\t}, [editor]);\n\n\tconst getCurrentSelectionText = useCallback((): string => {\n\t\tif (!editor) return \"\";\n\n\t\tlet text = \"\";\n\t\teditor.getEditorState().read(() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif (!$isRangeSelection(selection)) return;\n\t\t\ttext = selection.getTextContent();\n\t\t});\n\n\t\treturn text;\n\t}, [editor]);\n\n\tconst insertLinkAtSelection = useCallback(\n\t\t(payload: InsertLinkPayload) => {\n\t\t\tif (!editor) return;\n\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tif (!$isRangeSelection(selection)) return;\n\n\t\t\t\tconst selectionText = selection.getTextContent();\n\t\t\t\tconst finalText = payload.text.length > 0 ? payload.text : selectionText;\n\t\t\t\tif (!finalText.trim()) return;\n\n\t\t\t\tconst linkNode = $createAccessibleLinkNode(payload.url, {\n\t\t\t\t\ttarget: \"_blank\",\n\t\t\t\t\trel: \"noopener noreferrer\",\n\t\t\t\t\tariaLabel: payload.ariaLabel || selectionText || finalText,\n\t\t\t\t\tqrCode: payload.qrCode,\n\t\t\t\t\tadd: payload.add || null,\n\t\t\t\t\ttext: finalText\n\t\t\t\t});\n\n\t\t\t\tconst textNode = $createTextNode(finalText);\n\t\t\t\tlinkNode.append(textNode);\n\t\t\t\tselection.insertNodes([linkNode]);\n\t\t\t});\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\teditor.focus();\n\t\t\t});\n\t\t},\n\t\t[editor]\n\t);\n\n\tconst handleAddLink = useCallback(\n\t\t(url: string, text: string, add: string, ariaLabel: string, showQrCode: boolean) => {\n\t\t\tinsertLinkAtSelection({\n\t\t\t\turl,\n\t\t\t\ttext,\n\t\t\t\tadd,\n\t\t\t\tariaLabel,\n\t\t\t\tqrCode: showQrCode\n\t\t\t});\n\t\t},\n\t\t[insertLinkAtSelection]\n\t);\n\n\tconst handleAddLocalLink = useCallback(\n\t\t(url: string, caption: string) => {\n\t\t\tinsertLinkAtSelection({\n\t\t\t\turl,\n\t\t\t\ttext: caption,\n\t\t\t\tadd: \"\",\n\t\t\t\tariaLabel: \"Внутренняя ссылка на статью: \" + caption,\n\t\t\t\tqrCode: false\n\t\t\t});\n\t\t},\n\t\t[insertLinkAtSelection]\n\t);\n\n\tconst getSelectedLinkState = useCallback((): LinkType => {\n\t\tif (!editor) return \"\";\n\n\t\tlet state: LinkType = \"\";\n\t\teditor.getEditorState().read(() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif (!$isRangeSelection(selection)) {\n\t\t\t\tstate = \"\";\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectionText = selection.getTextContent();\n\t\t\tconst anchorNode = selection.anchor.getNode();\n\t\t\tconst linkNode = $findMatchingParent(anchorNode, (node) => $isAccessibleLinkNode(node) || $isLinkNode(node));\n\n\t\t\tif ($isAccessibleLinkNode(linkNode)) {\n\t\t\t\tstate = {\n\t\t\t\t\turl: linkNode.getURL(),\n\t\t\t\t\tariaLabel: linkNode.getAriaLabel() || \"\",\n\t\t\t\t\ttext: linkNode.getText() || selectionText,\n\t\t\t\t\tadd: linkNode.getAdd() || \"\",\n\t\t\t\t\tqrCode: linkNode.getQrCode()\n\t\t\t\t};\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($isLinkNode(linkNode)) {\n\t\t\t\tstate = {\n\t\t\t\t\turl: linkNode.getURL(),\n\t\t\t\t\tariaLabel: \"\",\n\t\t\t\t\ttext: selectionText,\n\t\t\t\t\tadd: \"\",\n\t\t\t\t\tqrCode: false\n\t\t\t\t};\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate = selectionText;\n\t\t});\n\n\t\treturn state;\n\t}, [editor]);\n\n\tconst handleLinkClick = useCallback(\n\t\t(type: LinkTypes) => {\n\t\t\tif (type === LinkTypes.LOCAL_LINK && !hasLocalLinkDialog) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonOpenLinkDialog(type);\n\t\t},\n\t\t[hasLocalLinkDialog, onOpenLinkDialog]\n\t);\n\n\tconst insertSemanticTagAtSelection = useCallback(\n\t\t(tag: string, text: string, attributes: Record<string, string>) => {\n\t\t\tif (!editor) return;\n\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tif (!$isRangeSelection(selection)) return;\n\n\t\t\t\tconst selectionText = selection.getTextContent().trim();\n\t\t\t\tconst finalText =\n\t\t\t\t\ttext || selectionText || attributes[\"title\"] || attributes[\"aria-label\"] || Object.values(attributes).join(\" \") || tag;\n\n\t\t\t\tif (!finalText.trim()) return;\n\n\t\t\t\tconst node = $createSemanticTagNode(tag, attributes, finalText);\n\t\t\t\tnode.append($createTextNode(finalText));\n\t\t\t\tselection.insertNodes([node]);\n\t\t\t});\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\teditor.focus();\n\t\t\t});\n\t\t},\n\t\t[editor]\n\t);\n\n\tconst handleCleanSemanticTag = useCallback(() => {\n\t\tif (!editor) return;\n\n\t\teditor.update(() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif (!$isRangeSelection(selection) || selection.isCollapsed()) return;\n\n\t\t\tconst selectedNodes = selection.getNodes();\n\t\t\tconst semanticNodes = new Set<SemanticTagNode>();\n\n\t\t\tselectedNodes.forEach((node) => {\n\t\t\t\tlet current: LexicalNode | null = node;\n\t\t\t\twhile (current) {\n\t\t\t\t\tif ($isSemanticTagNode(current)) {\n\t\t\t\t\t\tsemanticNodes.add(current);\n\t\t\t\t\t}\n\t\t\t\t\tcurrent = current.getParent();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst sortedNodes = Array.from(semanticNodes).sort((a, b) => getSemanticTagDepth(b) - getSemanticTagDepth(a));\n\t\t\tsortedNodes.forEach((node) => {\n\t\t\t\tif (!node.isAttached()) return;\n\t\t\t\tconst children = node.getChildren();\n\t\t\t\tchildren.forEach((child) => node.insertBefore(child));\n\t\t\t\tnode.remove();\n\t\t\t});\n\t\t});\n\t}, [editor]);\n\n\tconst handleTagClick = useCallback(\n\t\t(type: TagTypes) => {\n\t\t\tonOpenTagDialog(type);\n\t\t},\n\t\t[onOpenTagDialog]\n\t);\n\n\treturn {\n\t\thandleAddLink,\n\t\thandleAddLocalLink,\n\t\thandleAlignmentChange,\n\t\thandleBlockStyleToggle,\n\t\thandleCleanSemanticTag,\n\t\thandleInlineStyleToggle,\n\t\thandleLinkClick,\n\t\thandleRedo,\n\t\thandleTagClick,\n\t\thandleUndo,\n\t\tgetCurrentSelectionText,\n\t\tgetSelectedLinkState,\n\t\tinsertSemanticTagAtSelection\n\t};\n}\n","@use \"@/styles/mixins/mixin\" as *;\n\n.textEditor {\n\tfont-size: inherit;\n}\n\n.textEditorContent {\n\tposition: relative;\n\tpadding: var(--space-md);\n\tborder-radius: var(--radius-md);\n\tbackground-color: var(--surface-secondary);\n\tborder: var(--border);\n\n\t&.focused {\n\t\tborder-color: var(--brand-primary);\n\t}\n}\n\n.wrapper {\n\tfont-size: inherit;\n}\n","import { type MouseEvent, useEffect, useState } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { isSafe } from \"@ryuzaki13/react-foundation-lib/validators\";\n\nimport { Button } from \"../button\";\nimport { Input } from \"../input\";\nimport { Modal, ModalContent, ModalFooter } from \"../modal\";\n\nimport { LinkType } from \"./linkTypes\";\n\ninterface EmailDialogProps {\n\tisOpen: boolean;\n\tonClose: () => void;\n\tonConfirm: (url: string, text: string, add: string, ariaLabel: string, showQrCode: boolean) => void;\n\tinitialState?: LinkType;\n}\n\n/**\n * Диалог вставки или редактирования email-ссылки в текстовом редакторе.\n */\nexport function EmailDialog({ isOpen, onClose, onConfirm, initialState }: EmailDialogProps) {\n\tconst [email, setEmail] = useState(\"\");\n\tconst [ariaLabel, setAriaLabel] = useState(\"\");\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [state] = useState(() => {\n\t\tif (isSafe(initialState) && typeof initialState === \"string\") {\n\t\t\treturn { text: \"\", add: \"\", ariaLabel: \"\", url: initialState };\n\t\t}\n\n\t\treturn initialState;\n\t});\n\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tif (isSafe(state)) {\n\t\t\t\tsetEmail(state.url ?? \"\");\n\t\t\t\tsetAriaLabel(state.ariaLabel ?? \"\");\n\t\t\t}\n\t\t}\n\t}, [isOpen, state]);\n\n\tconst validateEmail = (email: string): boolean => {\n\t\tconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\t\tif (!emailRegex.test(email)) {\n\t\t\tsetError(\"Некорректный email адрес\");\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\n\tconst handleConfirm = (e: MouseEvent) => {\n\t\te.preventDefault();\n\n\t\tif (!validateEmail(email)) return;\n\t\tif (!ariaLabel) {\n\t\t\tsetError(\"Добавьте описание для email\");\n\t\t\treturn;\n\t\t}\n\n\t\tonConfirm(`mailto:${email}`, \"\", \"\", ariaLabel, false);\n\t\thandleClose();\n\t};\n\n\tconst handleClose = () => {\n\t\tsetEmail(\"\");\n\t\tsetAriaLabel(\"\");\n\t\tsetError(null);\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<Modal isOpen={isOpen} onClose={handleClose} title=\"Ссылка на email\" size=\"md\">\n\t\t\t<ModalContent>\n\t\t\t\t<div className={cn(\"flexColumn\", \"gapMd\")}>\n\t\t\t\t\t<Input label=\"Email адрес\" value={email} onChange={setEmail} placeholder=\"some_email@mail.ru\" />\n\n\t\t\t\t\t{error && (\n\t\t\t\t\t\t<div className=\"textColorDanger\">\n\t\t\t\t\t\t\t<strong>Ошибка ввода:</strong> <span className=\"fontItalic\">{error}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel=\"Текст для экранных читалок\"\n\t\t\t\t\t\tvalue={ariaLabel}\n\t\t\t\t\t\tonChange={setAriaLabel}\n\t\t\t\t\t\tplaceholder=\"Электронная почта руководителя городской думмы\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</ModalContent>\n\t\t\t<ModalFooter>\n\t\t\t\t<Button appearance=\"outline\" tone=\"error\" onClick={handleClose}>\n\t\t\t\t\tОтмена\n\t\t\t\t</Button>\n\t\t\t\t<Button appearance=\"outline\" tone=\"success\" onClick={handleConfirm} disabled={!email || !ariaLabel}>\n\t\t\t\t\tПодтвердить\n\t\t\t\t</Button>\n\t\t\t</ModalFooter>\n\t\t</Modal>\n\t);\n}\n","import { type MouseEvent, useEffect, useState } from \"react\";\n\nimport { isSafe, validateUrl } from \"@ryuzaki13/react-foundation-lib/validators\";\n\nimport { Button } from \"../button\";\nimport { CheckBox } from \"../check-box\";\nimport { GridContainer } from \"../grid\";\nimport { Input } from \"../input\";\nimport { Modal, ModalContent, ModalFooter } from \"../modal\";\n\nimport { LinkType } from \"./linkTypes\";\n\ninterface LinkDialogProps {\n\tisOpen: boolean;\n\tonClose: () => void;\n\tonConfirm: (url: string, text: string, add: string, ariaLabel: string, showQrCode: boolean) => void;\n\tinitialState?: LinkType;\n}\n\n/**\n * Диалог вставки или редактирования ссылки в текстовом редакторе.\n */\nexport function LinkDialog({ isOpen, onClose, onConfirm, initialState }: LinkDialogProps) {\n\tconst [url, setUrl] = useState(\"\");\n\tconst [ariaLabel, setAriaLabel] = useState(\"\");\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [showQrCode, setShowQrCode] = useState(false);\n\tconst [state] = useState(() => {\n\t\tif (isSafe(initialState)) {\n\t\t\tif (typeof initialState === \"string\") {\n\t\t\t\treturn { text: \"\", add: \"\", ariaLabel: \"\", url: initialState };\n\t\t\t}\n\t\t}\n\t\treturn initialState;\n\t});\n\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tif (isSafe(state)) {\n\t\t\t\tsetUrl(state.url ?? \"\");\n\t\t\t\tsetAriaLabel(state.ariaLabel ?? \"\");\n\t\t\t}\n\t\t}\n\t}, [isOpen, state]);\n\n\tconst handleUrlChange = (value: string) => {\n\t\tsetUrl(value);\n\n\t\t// Очищаем ошибку при изменении URL\n\t\tif (error) {\n\t\t\tsetError(null);\n\t\t}\n\t};\n\n\tconst handleConfirm = (e: MouseEvent) => {\n\t\te.preventDefault();\n\n\t\tconst validation = validateUrl(url);\n\t\tif (!validation.isValid) {\n\t\t\tsetError(validation.error);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!ariaLabel) {\n\t\t\tsetError(\"добавьте описание для ссылки\");\n\t\t\treturn;\n\t\t}\n\n\t\t// Добавляем протокол, если его нет\n\t\tconst finalUrl = url.startsWith(\"http\") ? url : `https://${url}`;\n\t\tonConfirm(finalUrl, \"\", \"\", ariaLabel, showQrCode);\n\t\thandleClose();\n\t};\n\n\tconst handleClose = () => {\n\t\tsetUrl(\"\");\n\t\tsetAriaLabel(\"\");\n\t\tsetError(null);\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<Modal isOpen={isOpen} onClose={handleClose} title=\"Ссылка на внешний url\" size=\"md\">\n\t\t\t<ModalContent>\n\t\t\t\t<GridContainer gap=\"md\">\n\t\t\t\t\t<Input label=\"Полный URL адрес\" value={url} onChange={handleUrlChange} placeholder=\"https://somesite.ru\" />\n\n\t\t\t\t\t{error && (\n\t\t\t\t\t\t<div className=\"textColorDanger\">\n\t\t\t\t\t\t\t<strong>Ошибка ввода:</strong> <span className=\"fontItalic\">{error}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel=\"Текст для экранных читалок\"\n\t\t\t\t\t\tvalue={ariaLabel}\n\t\t\t\t\t\tonChange={setAriaLabel}\n\t\t\t\t\t\tplaceholder=\"Ссылка на официальный сайт городской думмы\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<CheckBox title=\"Показать кнопку для генерации QR кода ссылки\" value={showQrCode} onChange={setShowQrCode} />\n\t\t\t\t</GridContainer>\n\t\t\t</ModalContent>\n\t\t\t<ModalFooter>\n\t\t\t\t<Button appearance=\"outline\" tone=\"error\" onClick={handleClose}>\n\t\t\t\t\tОтмена\n\t\t\t\t</Button>\n\t\t\t\t<Button appearance=\"outline\" tone=\"success\" onClick={handleConfirm} disabled={!url || !ariaLabel}>\n\t\t\t\t\tПодтвердить\n\t\t\t\t</Button>\n\t\t\t</ModalFooter>\n\t\t</Modal>\n\t);\n}\n","import { type MouseEvent, useEffect, useState } from \"react\";\n\nimport { formatPhone } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { isSafe } from \"@ryuzaki13/react-foundation-lib/validators\";\n\nimport { Button } from \"../button\";\nimport { GridContainer } from \"../grid\";\nimport { Input } from \"../input\";\nimport { Modal, ModalContent, ModalFooter } from \"../modal\";\n\nimport { LinkType } from \"./linkTypes\";\n\ninterface PhoneDialogProps {\n\tisOpen: boolean;\n\tonClose: () => void;\n\tonConfirm: (url: string, text: string, add: string, ariaLabel: string, showQrCode: boolean) => void;\n\tinitialState?: LinkType;\n}\n\n/**\n * Диалог вставки или редактирования телефонной ссылки в текстовом редакторе.\n */\nexport function PhoneDialog({ isOpen, onClose, onConfirm, initialState }: PhoneDialogProps) {\n\tconst [phone, setPhone] = useState(\"\");\n\tconst [phoneAdd, setPhoneAdd] = useState(\"\");\n\tconst [ariaLabel, setAriaLabel] = useState(\"\");\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [state] = useState(() => {\n\t\tif (isSafe(initialState) && typeof initialState === \"string\") {\n\t\t\treturn { text: \"\", add: \"\", ariaLabel: \"\", url: initialState };\n\t\t}\n\n\t\treturn initialState;\n\t});\n\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tif (isSafe(state)) {\n\t\t\t\tsetPhone((state.url ?? \"\").replace(/\\D/g, \"\").slice(0, 11).replace(/^7/, \"\"));\n\n\t\t\t\tif (!state.add) {\n\t\t\t\t\tsetPhoneAdd((state.url ?? \"\").replace(/\\D/g, \"\").slice(11));\n\t\t\t\t} else {\n\t\t\t\t\tsetPhoneAdd((state.add ?? \"\").replace(/\\D/g, \"\"));\n\t\t\t\t}\n\n\t\t\t\tsetAriaLabel(state.ariaLabel ?? \"\");\n\t\t\t}\n\t\t}\n\t}, [isOpen, state]);\n\n\tconst handlePhoneChange = (value: string) => {\n\t\tvalue = value.replace(/\\D/g, \"\");\n\t\tif (value.length <= 10) {\n\t\t\tsetPhone(value);\n\t\t\tsetError(null);\n\t\t} else {\n\t\t\tsetError(\"нельзя ввести более 10 цифр\");\n\t\t}\n\t};\n\n\tconst validatePhone = (phone: string): boolean => {\n\t\tif (phone.length !== 10) {\n\t\t\tsetError(\"номер телефона должен содержать 10 цифр\");\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\n\tconst handleConfirm = (e: MouseEvent) => {\n\t\te.preventDefault();\n\n\t\tif (!validatePhone(phone)) return;\n\t\tif (!ariaLabel) {\n\t\t\tsetError(\"добавьте описание для телефона\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst formattedPhone = formatPhone(phone);\n\t\tconst fullPhone = `+7${phone}`;\n\t\tonConfirm(`tel:${fullPhone}`, phoneAdd ? `${formattedPhone} доб. ${phoneAdd}` : formattedPhone, phoneAdd, ariaLabel, false);\n\t\thandleClose();\n\t};\n\n\tconst handleClose = () => {\n\t\tsetPhone(\"\");\n\t\tsetAriaLabel(\"\");\n\t\tsetError(null);\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<Modal isOpen={isOpen} onClose={handleClose} title=\"Ссылка на телефон\" size=\"md\">\n\t\t\t<ModalContent>\n\t\t\t\t<GridContainer gap=\"md\">\n\t\t\t\t\t<div className={cn(\"flex\", \"alignItemsEnd\", \"gapSm\")}>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tlabel=\"Номер телефона без 7-ки\"\n\t\t\t\t\t\t\tdescription=\"Вводится только номер (10) цифр без каких-либо дополнительных символов. Ссылка будет привязана к текущему выделенному фрагменту текста. Поэтому текст самой ссылки можно оформить грамотно, например: +7 (3522) 12-34-56 доб. 100\"\n\t\t\t\t\t\t\tvalue={phone}\n\t\t\t\t\t\t\tonChange={handlePhoneChange}\n\t\t\t\t\t\t\tplaceholder=\"3522123456\"\n\t\t\t\t\t\t\tclassName=\"flex1\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Input label=\"Добавочный номер\" value={phoneAdd} onChange={setPhoneAdd} placeholder=\"100\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t{error && (\n\t\t\t\t\t\t<div className=\"textColorDanger\">\n\t\t\t\t\t\t\t<strong>Ошибка ввода:</strong> <span className=\"fontItalic\">{error}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel=\"Текст для экранных читалок\"\n\t\t\t\t\t\tdescription=\"Обязательное поле для организации доступности ссылки для лиц с ОВЗ, использующих скринридеры\"\n\t\t\t\t\t\tvalue={ariaLabel}\n\t\t\t\t\t\tonChange={setAriaLabel}\n\t\t\t\t\t\tplaceholder=\"Контактный телефон директора\"\n\t\t\t\t\t/>\n\t\t\t\t</GridContainer>\n\t\t\t</ModalContent>\n\t\t\t<ModalFooter>\n\t\t\t\t<Button appearance=\"solid\" tone=\"error\" onClick={handleClose}>\n\t\t\t\t\tОтмена\n\t\t\t\t</Button>\n\t\t\t\t<Button appearance=\"solid\" tone=\"success\" onClick={handleConfirm} disabled={!phone || !ariaLabel}>\n\t\t\t\t\tПодтвердить\n\t\t\t\t</Button>\n\t\t\t</ModalFooter>\n\t\t</Modal>\n\t);\n}\n","import { type ReactNode, useEffect, useState } from \"react\";\n\nimport { Button } from \"../button\";\nimport { GridContainer } from \"../grid\";\nimport { Input } from \"../input\";\nimport { Modal, ModalContent, ModalFooter } from \"../modal\";\n\nexport interface AttributeField {\n\tname: string;\n\tlabel: string;\n\tdescription?: string;\n\tplaceholder?: string;\n\trequired?: boolean;\n\tvalidate?: (value: string) => string | null;\n}\n\nexport interface SemanticTagConfig {\n\ttagName: string;\n\ttitle: string;\n\tdescription: string;\n\texample: ReactNode;\n\tfields: AttributeField[];\n}\n\ninterface SemanticDialogProps {\n\tisOpen: boolean;\n\tonClose: () => void;\n\tonConfirm: (tagName: string, text: string, attributes: Record<string, string>) => void;\n\tconfig: SemanticTagConfig;\n\tinitialState?: Record<string, string>;\n\tinitialText?: string;\n}\n\n/**\n * Диалог настройки семантического тега и его атрибутов в текстовом редакторе.\n */\nexport function SemanticDialog({ isOpen, onClose, onConfirm, config, initialText = \"\", initialState = {} }: SemanticDialogProps) {\n\tconst [text, setText] = useState(initialText);\n\tconst [values, setValues] = useState<Record<string, string>>({});\n\tconst [errors, setErrors] = useState<Record<string, string | null>>({});\n\tconst [initialized, setInitialized] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (isOpen && !initialized) {\n\t\t\tconst initial = config.fields.reduce(\n\t\t\t\t(acc, field) => {\n\t\t\t\t\tacc[field.name] = initialState[field.name] ?? \"\";\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{} as Record<string, string>\n\t\t\t);\n\t\t\tsetValues(initial);\n\t\t\tsetErrors({});\n\t\t\tsetInitialized(true);\n\t\t} else if (!isOpen && initialized) {\n\t\t\tsetInitialized(false); // сбрасываем при закрытии\n\t\t}\n\t}, [isOpen, config.fields, initialState, initialized]);\n\n\tconst handleChange = (name: string, value: string) => {\n\t\tsetValues((prev) => ({ ...prev, [name]: value }));\n\t\tsetErrors((prev) => ({ ...prev, [name]: null }));\n\t};\n\n\tconst validate = (): boolean => {\n\t\tconst newErrors: Record<string, string | null> = {};\n\t\tlet isValid = true;\n\n\t\tif (!text.trim()) {\n\t\t\tnewErrors[\"text\"] = \"Обязательное поле\";\n\t\t\tisValid = false;\n\t\t}\n\n\t\tfor (const field of config.fields) {\n\t\t\tconst value = values[field.name]?.trim();\n\t\t\tif (field.required && !value) {\n\t\t\t\tnewErrors[field.name] = \"Обязательное поле\";\n\t\t\t\tisValid = false;\n\t\t\t} else if (field.validate) {\n\t\t\t\tconst err = field.validate(value);\n\t\t\t\tif (err) {\n\t\t\t\t\tnewErrors[field.name] = err;\n\t\t\t\t\tisValid = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsetErrors(newErrors);\n\t\treturn isValid;\n\t};\n\n\tconst handleConfirm = () => {\n\t\tif (!validate()) return;\n\t\tonConfirm(config.tagName, text.trim(), values);\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<Modal isOpen={isOpen} onClose={onClose} title={`Вставка <${config.tagName}>`} size=\"md\">\n\t\t\t<ModalContent>\n\t\t\t\t<GridContainer gap=\"md\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{config.description}.<br />\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<strong>Пример:</strong> {config.example}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={config.title}\n\t\t\t\t\t\tdescription={`Данный текст будет вставлен в редактор и обёрнуть в специальный семантический тег ${config.tagName}`}\n\t\t\t\t\t\tvalue={text}\n\t\t\t\t\t\tonChange={setText}\n\t\t\t\t\t\terror={errors[\"text\"] ?? undefined}\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t\t{config.fields.map((field) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tkey={field.name}\n\t\t\t\t\t\t\t\tlabel={field.label}\n\t\t\t\t\t\t\t\tdescription={field.description}\n\t\t\t\t\t\t\t\tplaceholder={field.placeholder}\n\t\t\t\t\t\t\t\tvalue={values[field.name] ?? \"\"}\n\t\t\t\t\t\t\t\tonChange={(value) => handleChange(field.name, value)}\n\t\t\t\t\t\t\t\terror={errors[field.name] ?? undefined}\n\t\t\t\t\t\t\t\trequired={field.required}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</GridContainer>\n\t\t\t</ModalContent>\n\t\t\t<ModalFooter>\n\t\t\t\t<Button appearance=\"solid\" tone=\"error\" onClick={onClose}>\n\t\t\t\t\tОтмена\n\t\t\t\t</Button>\n\t\t\t\t<Button appearance=\"solid\" tone=\"success\" onClick={handleConfirm}>\n\t\t\t\t\tПодтвердить\n\t\t\t\t</Button>\n\t\t\t</ModalFooter>\n\t\t</Modal>\n\t);\n}\n","import { TagTypes } from \"./toolbar\";\n\nimport type { SemanticTagConfig } from \"./SemanticDialog\";\n\nexport const SemanticTagConfigs: Record<TagTypes, SemanticTagConfig> = {\n\t[TagTypes.abbr]: {\n\t\ttagName: \"abbr\",\n\t\ttitle: \"Аббревиатура\",\n\t\tdescription: \"Обозначает аббревиатуры и сокращения, при наведении покажет расшифровку\",\n\t\texample: (\n\t\t\t<>\n\t\t\t\t<abbr title=\"Национальное управление по аэронавтике и исследованию космического пространства\">НАСА</abbr>\n\t\t\t\t<div className=\"marginTopMd\">\n\t\t\t\t\t<code>{`<abbr title=\"Национальное управление по аэронавтике и исследованию космического пространства\">НАСА</abbr>`}</code>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t),\n\t\tfields: [\n\t\t\t{\n\t\t\t\tname: \"title\",\n\t\t\t\tlabel: \"Расшифровка\",\n\t\t\t\tdescription: \"Появится как подсказка и будет прочитана скринридером\",\n\t\t\t\tplaceholder: \"например: HyperText Markup Language\",\n\t\t\t\trequired: true\n\t\t\t}\n\t\t]\n\t},\n\t[TagTypes.lang]: {\n\t\ttagName: \"span\",\n\t\ttitle: \"Текст на другом языке\",\n\t\tdescription:\n\t\t\t\"Указывает язык фрагмента текста, если он отличается от основного языка страницы, скринридер прочитает это слово с французским произношением\",\n\t\texample: (\n\t\t\t<>\n\t\t\t\t<span lang=\"fr\">Bonjour!</span> — сказал турист.\n\t\t\t\t<div className=\"marginTopMd\">\n\t\t\t\t\t<code>{`<span lang=\"fr\">Bonjour!</span> — сказал турист.`}</code>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t),\n\t\tfields: [\n\t\t\t{\n\t\t\t\tname: \"lang\",\n\t\t\t\tlabel: \"Код языка\",\n\t\t\t\tplaceholder: \"en, fr, ru\",\n\t\t\t\trequired: true,\n\t\t\t\tvalidate: (val) => (!/^[a-z]{2,3}(-[A-Z]{2})?$/.test(val) ? \"Неверный код языка (например, en или en-US)\" : null)\n\t\t\t}\n\t\t]\n\t},\n\t[TagTypes.time]: {\n\t\ttagName: \"time\",\n\t\ttitle: \"Дата/время\",\n\t\tdescription: \"\",\n\t\texample: \"\",\n\t\tfields: [\n\t\t\t{\n\t\t\t\tname: \"datetime\",\n\t\t\t\tlabel: \"Дата/время (machine-readable)\",\n\t\t\t\tdescription: \"Формат ISO 8601: 2025-05-18, 14:30, 2025-05-18T14:30\",\n\t\t\t\tplaceholder: \"например: 2025-05-18T14:30\",\n\t\t\t\trequired: true\n\t\t\t}\n\t\t]\n\t},\n\t[TagTypes.cite]: {\n\t\ttagName: \"cite\",\n\t\ttitle: \"Цитата источника\",\n\t\tdescription: \"Обозначает название книги, статьи, фильма или другого произведения, на которое вы ссылаетесь\",\n\t\texample: (\n\t\t\t<>\n\t\t\t\tПо словам Эйнштейна: <cite>«Воображение важнее знания»</cite>.\n\t\t\t\t<div className=\"marginTopMd\">\n\t\t\t\t\t<code>{`По словам Эйнштейна: <cite>«Воображение важнее знания»</cite>.`}</code>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t),\n\t\tfields: [\n\t\t\t{\n\t\t\t\tname: \"title\",\n\t\t\t\tlabel: \"Название источника\",\n\t\t\t\tdescription: \"Будет отображаться как подсказка\",\n\t\t\t\tplaceholder: \"например: Википедия\",\n\t\t\t\trequired: false\n\t\t\t}\n\t\t]\n\t},\n\t// [TagTypes.address]: {\n\t// \ttagName: \"address\",\n\t// \ttitle: \"Указывает контакты автора статьи/страницы (не для почтовых адресов компаний!)\",\n\t// \tdescription: \"\",\n\t// \texample: ``,\n\t// \tfields: [\n\t// \t\t{\n\t// \t\t\tname: \"aria-label\",\n\t// \t\t\tlabel: \"Описание (для доступности)\",\n\t// \t\t\tdescription: \"Содержимое будет прочитано скринридером, если адрес не очевиден\",\n\t// \t\t\tplaceholder: \"например: Контактный адрес компании\",\n\t// \t\t\trequired: false\n\t// \t\t}\n\t// \t]\n\t// },\n\t[TagTypes.del]: {\n\t\ttagName: \"del\",\n\t\ttitle: \"Изменения в тексте\",\n\t\tdescription: \"Удаленный фрагмент\",\n\t\texample: (\n\t\t\t<>\n\t\t\t\tПроект сдачи: <del>1 июня</del> <ins>15 июня</ins>\n\t\t\t\t<div className=\"marginTopMd\">\n\t\t\t\t\t<code>{`Проект сдачи: <del>1 июня</del> <ins>15 июня</ins>`}</code>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t),\n\t\tfields: [\n\t\t\t{\n\t\t\t\tname: \"datetime\",\n\t\t\t\tlabel: \"Когда был удалён\",\n\t\t\t\tdescription: \"Формат ISO 8601: 2025-05-18T14:30\",\n\t\t\t\tplaceholder: \"например: 2025-05-18T14:30\",\n\t\t\t\trequired: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"cite\",\n\t\t\t\tlabel: \"Источник/обоснование\",\n\t\t\t\tdescription: \"Ссылка на объяснение причины\",\n\t\t\t\tplaceholder: \"например: https://example.com/edit-log\",\n\t\t\t\trequired: false\n\t\t\t}\n\t\t]\n\t},\n\t[TagTypes.ins]: {\n\t\ttagName: \"ins\",\n\t\ttitle: \"Изменения в тексте\",\n\t\tdescription: \"Новый добавленный текст\",\n\t\texample: (\n\t\t\t<>\n\t\t\t\tПроект сдачи: <del>1 июня</del> <ins>15 июня</ins>\n\t\t\t\t<div className=\"marginTopMd\">\n\t\t\t\t\t<code>{`Проект сдачи: <del>1 июня</del> <ins>15 июня</ins>`}</code>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t),\n\t\tfields: [\n\t\t\t{\n\t\t\t\tname: \"datetime\",\n\t\t\t\tlabel: \"Когда был добавлен\",\n\t\t\t\tdescription: \"Формат ISO 8601: 2025-05-18T14:30\",\n\t\t\t\tplaceholder: \"например: 2025-05-18T14:30\",\n\t\t\t\trequired: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"cite\",\n\t\t\t\tlabel: \"Источник/обоснование\",\n\t\t\t\tdescription: \"Ссылка на объяснение причины\",\n\t\t\t\tplaceholder: \"например: https://example.com/edit-log\",\n\t\t\t\trequired: false\n\t\t\t}\n\t\t]\n\t}\n};\n","import { useEffect, useEffectEvent, useState } from \"react\";\n\nimport { Button } from \"../button\";\nimport { GridContainer } from \"../grid\";\nimport { Input } from \"../input\";\nimport { Modal, ModalContent, ModalFooter } from \"../modal\";\nimport { RadioGroup } from \"../radio-group\";\n\ntype TimeDialogInitialState = {\n\tmode?: TimeMode;\n\tfrom?: string;\n\tto?: string;\n};\n\ninterface TimeDialogProps {\n\tisOpen: boolean;\n\tonClose: () => void;\n\tonConfirm: (tagName: string, text: string, attributes: Record<string, string>) => void;\n\tinitialState?: TimeDialogInitialState;\n}\n\ntype TimeMode = \"date\" | \"datetime\" | \"time\" | \"range-time\" | \"range-date\" | \"range-datetime\";\n\n/**\n * Диалог настройки временного атрибута или значения в текстовом редакторе.\n */\nexport function TimeDialog({ isOpen, onClose, onConfirm, initialState }: TimeDialogProps) {\n\tconst [mode, setMode] = useState<TimeMode | undefined>(\"date\");\n\tconst [from, setFrom] = useState(\"\");\n\tconst [to, setTo] = useState(\"\");\n\tconst [errors, setErrors] = useState<{ from?: string; to?: string }>({});\n\n\tconst syncInitialState = useEffectEvent((initialState?: TimeDialogInitialState) => {\n\t\tsetMode(initialState?.mode ?? \"date\");\n\t\tsetFrom(initialState?.from ?? \"\");\n\t\tsetTo(initialState?.to ?? \"\");\n\t\tsetErrors({});\n\t});\n\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tsyncInitialState(initialState);\n\t\t}\n\t}, [isOpen, initialState]);\n\n\tconst validate = () => {\n\t\tconst newErrors: typeof errors = {};\n\t\t// const isValid = true;\n\n\t\tconst isDate = (v: string) => /^\\d{4}-\\d{2}-\\d{2}$/.test(v);\n\t\tconst isTime = (v: string) => /^\\d{2}:\\d{2}$/.test(v);\n\t\tconst isDateTime = (v: string) => /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$/.test(v);\n\n\t\tconst check = (label: string, value: string, type: \"date\" | \"time\" | \"datetime\") => {\n\t\t\tif (!value) return `${label} обязательно`;\n\t\t\tif (type === \"date\" && !isDate(value)) return \"Неверный формат даты (ГГГГ-ММ-ДД)\";\n\t\t\tif (type === \"time\" && !isTime(value)) return \"Неверный формат времени (ЧЧ:ММ)\";\n\t\t\tif (type === \"datetime\" && !isDateTime(value)) return \"Неверный формат даты и времени (ГГГГ-ММ-ДДTЧЧ:ММ)\";\n\t\t\treturn undefined;\n\t\t};\n\n\t\tswitch (mode) {\n\t\t\tcase \"date\":\n\t\t\t\tnewErrors.from = check(\"Дата\", from, \"date\");\n\t\t\t\tbreak;\n\t\t\tcase \"time\":\n\t\t\t\tnewErrors.from = check(\"Время\", from, \"time\");\n\t\t\t\tbreak;\n\t\t\tcase \"datetime\":\n\t\t\t\tnewErrors.from = check(\"Дата и время\", from, \"datetime\");\n\t\t\t\tbreak;\n\t\t\tcase \"range-time\":\n\t\t\t\tnewErrors.from = check(\"Время начала\", from, \"time\");\n\t\t\t\tnewErrors.to = check(\"Время окончания\", to, \"time\");\n\t\t\t\tbreak;\n\t\t\tcase \"range-date\":\n\t\t\t\tnewErrors.from = check(\"Дата начала\", from, \"date\");\n\t\t\t\tnewErrors.to = check(\"Дата окончания\", to, \"date\");\n\t\t\t\tbreak;\n\t\t\tcase \"range-datetime\":\n\t\t\t\tnewErrors.from = check(\"Начало\", from, \"datetime\");\n\t\t\t\tnewErrors.to = check(\"Окончание\", to, \"datetime\");\n\t\t\t\tbreak;\n\t\t}\n\n\t\tsetErrors(newErrors);\n\t\treturn Object.values(newErrors).every((e) => !e);\n\t};\n\n\tconst handleConfirm = () => {\n\t\tif (!validate()) return;\n\n\t\tconst datetime = to ? `${from}/${to}` : from;\n\t\tonConfirm(\"time\", datetime, { datetime });\n\t\tonClose();\n\t};\n\n\tconst renderInputs = () => {\n\t\tswitch (mode) {\n\t\t\tcase \"date\":\n\t\t\tcase \"datetime\":\n\t\t\tcase \"time\":\n\t\t\t\treturn (\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel=\"Значение\"\n\t\t\t\t\t\tplaceholder={mode === \"time\" ? \"09:00\" : mode === \"date\" ? \"2025-05-18\" : \"2025-05-18T09:00\"}\n\t\t\t\t\t\tvalue={from}\n\t\t\t\t\t\tonChange={setFrom}\n\t\t\t\t\t\terror={errors.from}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"range-time\":\n\t\t\tcase \"range-date\":\n\t\t\tcase \"range-datetime\":\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tlabel=\"С\"\n\t\t\t\t\t\t\tplaceholder={mode.includes(\"time\") ? \"09:00\" : mode.includes(\"date\") ? \"2025-05-18\" : \"2025-05-18T09:00\"}\n\t\t\t\t\t\t\tvalue={from}\n\t\t\t\t\t\t\tonChange={setFrom}\n\t\t\t\t\t\t\terror={errors.from}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tlabel=\"По\"\n\t\t\t\t\t\t\tplaceholder={mode.includes(\"time\") ? \"17:00\" : mode.includes(\"date\") ? \"2025-05-22\" : \"2025-05-22T17:00\"}\n\t\t\t\t\t\t\tvalue={to}\n\t\t\t\t\t\t\tonChange={setFrom}\n\t\t\t\t\t\t\terror={errors.to}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t}\n\t};\n\n\treturn (\n\t\t<Modal isOpen={isOpen} onClose={onClose} title=\"Вставка <time>\" size=\"md\">\n\t\t\t<ModalContent>\n\t\t\t\t<GridContainer gap=\"md\">\n\t\t\t\t\t<RadioGroup label=\"Тип значения\" value={mode} onChange={setMode}>\n\t\t\t\t\t\t<RadioGroup.Option label=\"Дата\" value=\"date\" />\n\t\t\t\t\t\t<RadioGroup.Option label=\"Дата и время\" value=\"datetime\" />\n\t\t\t\t\t\t<RadioGroup.Option label=\"Время\" value=\"time\" />\n\t\t\t\t\t\t<RadioGroup.Option label=\"Диапазон дат\" value=\"range-date\" />\n\t\t\t\t\t\t<RadioGroup.Option label=\"Диапазон времени\" value=\"range-time\" />\n\t\t\t\t\t\t<RadioGroup.Option label=\"Диапазон даты и времени\" value=\"range-datetime\" />\n\t\t\t\t\t</RadioGroup>\n\n\t\t\t\t\t<GridContainer gap=\"md\">{renderInputs()}</GridContainer>\n\t\t\t\t</GridContainer>\n\t\t\t</ModalContent>\n\t\t\t<ModalFooter>\n\t\t\t\t<Button appearance=\"solid\" tone=\"error\" onClick={onClose}>\n\t\t\t\t\tОтмена\n\t\t\t\t</Button>\n\t\t\t\t<Button appearance=\"solid\" tone=\"success\" onClick={handleConfirm}>\n\t\t\t\t\tПодтвердить\n\t\t\t\t</Button>\n\t\t\t</ModalFooter>\n\t\t</Modal>\n\t);\n}\n","import type { ComponentType } from \"react\";\n\nimport { EmailDialog } from \"./EmailDialog\";\nimport { LinkDialog } from \"./LinkDialog\";\nimport { PhoneDialog } from \"./PhoneDialog\";\nimport { SemanticDialog } from \"./SemanticDialog\";\nimport { SemanticTagConfigs } from \"./semanticTagConfigs\";\nimport { TimeDialog } from \"./TimeDialog\";\nimport { LinkTypes, TagTypes } from \"./toolbar\";\n\nimport type { LocalLinkDialogAdapterProps } from \"./editorModel\";\nimport type { LinkType } from \"./model/textEditorTypes\";\n\ninterface TextEditorDialogsProps {\n\tlinkTypeDialog: LinkTypes | null;\n\ttagTypeDialog: TagTypes | null;\n\tlocalLinkDialogComponent?: ComponentType<LocalLinkDialogAdapterProps>;\n\tonCloseLinkDialog: () => void;\n\tonCloseTagDialog: () => void;\n\tonAddLink: (url: string, text: string, add: string, ariaLabel: string, showQrCode: boolean) => void;\n\tonAddLocalLink: (url: string, caption: string) => void;\n\tonInsertSemanticTag: (tagName: string, text: string, attributes: Record<string, string>) => void;\n\tgetCurrentSelectionText: () => string;\n\tgetSelectedLinkState: () => LinkType;\n}\n\n/**\n * Контейнер набора диалогов, которые используются редактором для вставки ссылок и семантических сущностей.\n */\nexport function TextEditorDialogs({\n\tlinkTypeDialog,\n\ttagTypeDialog,\n\tlocalLinkDialogComponent,\n\tonCloseLinkDialog,\n\tonCloseTagDialog,\n\tonAddLink,\n\tonAddLocalLink,\n\tonInsertSemanticTag,\n\tgetCurrentSelectionText,\n\tgetSelectedLinkState\n}: TextEditorDialogsProps) {\n\tconst LocalLinkDialogComponent = localLinkDialogComponent;\n\n\treturn (\n\t\t<>\n\t\t\t{linkTypeDialog && (\n\t\t\t\t<>\n\t\t\t\t\t{LocalLinkDialogComponent && (\n\t\t\t\t\t\t<LocalLinkDialogComponent\n\t\t\t\t\t\t\tisOpen={linkTypeDialog === LinkTypes.LOCAL_LINK}\n\t\t\t\t\t\t\tonClose={onCloseLinkDialog}\n\t\t\t\t\t\t\tonConfirm={onAddLocalLink}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<LinkDialog\n\t\t\t\t\t\tisOpen={linkTypeDialog === LinkTypes.LINK}\n\t\t\t\t\t\tinitialState={getSelectedLinkState()}\n\t\t\t\t\t\tonClose={onCloseLinkDialog}\n\t\t\t\t\t\tonConfirm={onAddLink}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<PhoneDialog\n\t\t\t\t\t\tisOpen={linkTypeDialog === LinkTypes.PHONE}\n\t\t\t\t\t\tinitialState={getSelectedLinkState()}\n\t\t\t\t\t\tonClose={onCloseLinkDialog}\n\t\t\t\t\t\tonConfirm={onAddLink}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<EmailDialog\n\t\t\t\t\t\tisOpen={linkTypeDialog === LinkTypes.EMAIL}\n\t\t\t\t\t\tinitialState={getSelectedLinkState()}\n\t\t\t\t\t\tonClose={onCloseLinkDialog}\n\t\t\t\t\t\tonConfirm={onAddLink}\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{tagTypeDialog &&\n\t\t\t\t(tagTypeDialog !== TagTypes.time ? (\n\t\t\t\t\t<SemanticDialog\n\t\t\t\t\t\tisOpen={true}\n\t\t\t\t\t\tonClose={onCloseTagDialog}\n\t\t\t\t\t\tonConfirm={onInsertSemanticTag}\n\t\t\t\t\t\tconfig={SemanticTagConfigs[tagTypeDialog]}\n\t\t\t\t\t\tinitialText={getCurrentSelectionText()}\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<TimeDialog isOpen={true} onClose={onCloseTagDialog} onConfirm={onInsertSemanticTag} />\n\t\t\t\t))}\n\t\t</>\n\t);\n}\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { $generateHtmlFromNodes } from \"@lexical/html\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { ContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { HeadingNode, QuoteNode } from \"@lexical/rich-text\";\nimport { type LexicalEditor, type EditorState as LexicalEditorState } from \"lexical\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { TextEditorCoreProps, isLexicalTextRaw } from \"./editorModel\";\nimport { InitialHtmlPlugin, SelectionStatePlugin } from \"./lexical/plugins\";\nimport { createLexicalRaw } from \"./lib/serialization/createLexicalRaw\";\nimport { useTextEditorLexicalActions } from \"./model/hooks/useTextEditorLexicalActions\";\nimport { DEFAULT_TOOLBAR_STATE, type LexicalToolbarState } from \"./model/textEditorTypes\";\nimport { AccessibleLinkNode } from \"./nodes/AccessibleLinkNode\";\nimport { SemanticTagNode } from \"./nodes/SemanticTagNode\";\nimport TextEditorStyle from \"./TextEditor.module.scss\";\nimport \"./TextEditor.scss\";\nimport { TextEditorDialogs } from \"./TextEditorDialogs\";\nimport { type LinkTypes, type TagTypes, TextEditorToolbarLexical } from \"./toolbar\";\n\ntype TextEditorProps = TextEditorCoreProps;\n\n/**\n * Редактор форматированного текста на базе Lexical. Поддерживает тулбар, бизнес-адаптеры и сериализацию контента в единый формат данных.\n */\nexport function TextEditorLexicalClient({ initialData, onChange, toolbarComponents, businessAdapters }: TextEditorProps) {\n\tconst LocalLinkDialogComponent = businessAdapters?.LocalLinkDialogComponent;\n\tconst [isFocused, setIsFocused] = useState(false);\n\tconst [toolbarState, setToolbarState] = useState<LexicalToolbarState>(DEFAULT_TOOLBAR_STATE);\n\tconst [editor, setEditor] = useState<LexicalEditor | null>(null);\n\tconst [linkTypeDialog, setLinkTypeDialog] = useState<LinkTypes | null>(null);\n\tconst [tagTypeDialog, setTagTypeDialog] = useState<TagTypes | null>(null);\n\n\tconst lexicalRaw = isLexicalTextRaw(initialData?.raw) ? initialData.raw : null;\n\tconst hasLexicalRaw = !!lexicalRaw;\n\n\tconst initialEditorState = useMemo(() => {\n\t\tif (!lexicalRaw) return undefined;\n\t\treturn JSON.stringify(lexicalRaw.editorState);\n\t}, [lexicalRaw]);\n\n\tconst handleError = useCallback((error: Error) => {\n\t\tconsole.error(\"Ошибка редактора Lexical\", error);\n\t}, []);\n\n\tconst handleChange = useCallback(\n\t\t(editorState: LexicalEditorState, lexicalEditor: LexicalEditor) => {\n\t\t\tlet html = \"\";\n\t\t\teditorState.read(() => {\n\t\t\t\thtml = $generateHtmlFromNodes(lexicalEditor, null);\n\t\t\t});\n\n\t\t\tconst raw = createLexicalRaw(editorState);\n\t\t\tonChange({ raw, html });\n\t\t},\n\t\t[onChange]\n\t);\n\n\tconst openLinkDialog = useCallback((type: LinkTypes) => {\n\t\tsetLinkTypeDialog(type);\n\t}, []);\n\n\tconst openTagDialog = useCallback((type: TagTypes) => {\n\t\tsetTagTypeDialog(type);\n\t}, []);\n\n\tconst actions = useTextEditorLexicalActions({\n\t\teditor,\n\t\ttoolbarState,\n\t\thasLocalLinkDialog: !!LocalLinkDialogComponent,\n\t\tonOpenLinkDialog: openLinkDialog,\n\t\tonOpenTagDialog: openTagDialog\n\t});\n\n\tconst initialConfig = useMemo(\n\t\t() => ({\n\t\t\tnamespace: \"KtkTextEditorLexical\",\n\t\t\tonError: handleError,\n\t\t\ttheme: {\n\t\t\t\tparagraph: \"paragraph\",\n\t\t\t\ttext: {\n\t\t\t\t\tcode: \"lexicalTextCode\",\n\t\t\t\t\thighlight: \"lexicalTextHighlight\",\n\t\t\t\t\tunderline: \"lexicalTextUnderline\",\n\t\t\t\t\tstrikethrough: \"lexicalTextStrikethrough\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tnodes: [HeadingNode, QuoteNode, ListNode, ListItemNode, AccessibleLinkNode, SemanticTagNode],\n\t\t\teditorState: initialEditorState\n\t\t}),\n\t\t[handleError, initialEditorState]\n\t);\n\n\treturn (\n\t\t<div className={TextEditorStyle.textEditor}>\n\t\t\t<div\n\t\t\t\tclassName={cn(TextEditorStyle.textEditorContent, {\n\t\t\t\t\t[TextEditorStyle.focused]: isFocused\n\t\t\t\t})}>\n\t\t\t\t<LexicalComposer initialConfig={initialConfig}>\n\t\t\t\t\t<TextEditorToolbarLexical\n\t\t\t\t\t\ttoolbarComponents={toolbarComponents}\n\t\t\t\t\t\tstate={toolbarState}\n\t\t\t\t\t\tonBlockStyleToggle={actions.handleBlockStyleToggle}\n\t\t\t\t\t\tonInlineStyleToggle={actions.handleInlineStyleToggle}\n\t\t\t\t\t\tonAlignmentChange={actions.handleAlignmentChange}\n\t\t\t\t\t\tonLinkClick={actions.handleLinkClick}\n\t\t\t\t\t\tonTagClick={actions.handleTagClick}\n\t\t\t\t\t\tonUndo={actions.handleUndo}\n\t\t\t\t\t\tonRedo={actions.handleRedo}\n\t\t\t\t\t\tonCleanTag={actions.handleCleanSemanticTag}\n\t\t\t\t\t/>\n\t\t\t\t\t<RichTextPlugin\n\t\t\t\t\t\tcontentEditable={\n\t\t\t\t\t\t\t<ContentEditable\n\t\t\t\t\t\t\t\tclassName=\"lexicalEditorContentEditable\"\n\t\t\t\t\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\t\t\t\t\tonBlur={() => setIsFocused(false)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tplaceholder={<div className=\"lexicalEditorPlaceholder\">Введите текст...</div>}\n\t\t\t\t\t\tErrorBoundary={LexicalErrorBoundary}\n\t\t\t\t\t/>\n\t\t\t\t\t<HistoryPlugin />\n\t\t\t\t\t<ListPlugin />\n\t\t\t\t\t<SelectionStatePlugin onEditorReady={setEditor} onStateChange={setToolbarState} />\n\t\t\t\t\t<InitialHtmlPlugin initialHTML={initialData?.html} shouldSkip={hasLexicalRaw} />\n\t\t\t\t\t<OnChangePlugin onChange={handleChange} ignoreSelectionChange />\n\t\t\t\t</LexicalComposer>\n\t\t\t</div>\n\n\t\t\t<TextEditorDialogs\n\t\t\t\tlinkTypeDialog={linkTypeDialog}\n\t\t\t\ttagTypeDialog={tagTypeDialog}\n\t\t\t\tlocalLinkDialogComponent={LocalLinkDialogComponent}\n\t\t\t\tonCloseLinkDialog={() => setLinkTypeDialog(null)}\n\t\t\t\tonCloseTagDialog={() => setTagTypeDialog(null)}\n\t\t\t\tonAddLink={actions.handleAddLink}\n\t\t\t\tonAddLocalLink={actions.handleAddLocalLink}\n\t\t\t\tonInsertSemanticTag={actions.insertSemanticTagAtSelection}\n\t\t\t\tgetCurrentSelectionText={actions.getCurrentSelectionText}\n\t\t\t\tgetSelectedLinkState={actions.getSelectedLinkState}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAa,MAAoB,OACzB;CACN,QAAQ;CACR,SAAS;CACT,aAAa,EAAY,OAAO;AACjC,ICPY,KAAuB,MAA8B;CACjE,IAAI,IAAQ,GACR,IAA8B;CAElC,OAAO,IAEN,AADA,KAAS,GACT,IAAU,EAAQ,UAAU;CAG7B,OAAO;AACR,GCmBM,MAAgC,MAAuC;CAC5E,IAAI,EAAE,aAAmB,oBACxB,OAAO,EAAE,MAAM,KAAK;CAGrB,IAAM,IAAc,EAAQ;CAK5B,QAJK,MAAgB,QAAQ,MAAgB,OAAO,EAAQ,SAAS,WAAW,IACxE,EAAE,MAAM,KAAK,IAGd,EACN,MAAM,EAA0B,EAAQ,aAAa,MAAM,KAAK,IAAI;EACnE,KAAK,EAAQ,aAAa,KAAK;EAC/B,QAAQ,EAAQ,aAAa,QAAQ;EACrC,OAAO,EAAQ,aAAa,OAAO;EACnC,WAAW,EAAQ,aAAa,YAAY;EAC5C,QAAQ,EAAQ,aAAa,cAAc,MAAM;EACjD,KAAK;EACL,MAAM;CACP,CAAC,EACF;AACD,GAEa,IAAb,MAAa,UAA2B,GAAS;CAChD;CACA;CACA;CACA;CAEA,OAAO,UAAkB;EACxB,OAAO;CACR;CAEA,OAAO,MAAM,GAA8C;EAC1D,OAAO,IAAI,EACV,EAAK,OACL;GACC,KAAK,EAAK;GACV,QAAQ,EAAK;GACb,OAAO,EAAK;GACZ,WAAW,EAAK;GAChB,QAAQ,EAAK;GACb,KAAK,EAAK;GACV,MAAM,EAAK;EACZ,GACA,EAAK,KACN;CACD;CAEA,YAAY,IAAM,IAAI,IAAuC,CAAC,GAAG,GAAe;EAC/E,MAAM,GAAK,GAAY,CAAG;EAE1B,IAAM,EAAE,eAAY,MAAM,YAAS,IAAO,SAAM,MAAM,UAAO,SAAS;EAItE,AAHA,KAAK,cAAc,GACnB,KAAK,WAAW,GAChB,KAAK,QAAQ,GACb,KAAK,SAAS;CACf;CAEA,OAAO,YAAqC;EAC3C,OAAO,EACN,UAAU;GACT,YAAY;GACZ,UAAU;EACX,GACD;CACD;CAEA,OAAO,WAAW,GAAkE;EACnF,OAAO,EAA0B,CAAC,CAAC,eAAe,CAAc;CACjE;CAEA,eAAe,GAAuE;EACrF,OAAO,MACL,eAAe,CAAc,CAAC,CAC9B,aAAa,EAAe,aAAa,IAAI,CAAC,CAC9C,UAAU,CAAC,CAAC,EAAe,MAAM,CAAC,CAClC,OAAO,EAAe,OAAO,IAAI,CAAC,CAClC,QAAQ,EAAe,QAAQ,IAAI;CACtC;CAEA,aAA2C;EAC1C,OAAO;GACN,GAAG,MAAM,WAAW;GACpB,MAAM;GACN,SAAS;GACT,WAAW,KAAK,aAAa;GAC7B,QAAQ,KAAK,UAAU;GACvB,KAAK,KAAK,OAAO;GACjB,MAAM,KAAK,QAAQ;EACpB;CACD;CAEA,UAAU,GAAmC;EAC5C,IAAM,IAAM,MAAM,UAAU,CAAM;EAElC,OADA,KAAK,0BAA0B,MAAM,CAAG,GACjC;CACR;CAEA,UAAU,GAAgB,GAAqB,GAA+B;EAC7E,IAAM,IAAY,MAAM,UAAU,GAAU,GAAiB,CAAM;EAEnE,OADA,KAAK,0BAA0B,GAAU,CAAM,GACxC;CACR;CAEA,0BAA0B,GAAuB,GAA2B;EACrE,aAAkB,uBAIpB,CAAC,KAAY,EAAS,gBAAgB,KAAK,iBAC1C,KAAK,cACR,EAAO,aAAa,cAAc,KAAK,WAAW,IAElD,EAAO,gBAAgB,YAAY,KAIjC,CAAC,KAAY,EAAS,aAAa,KAAK,aAC3C,EAAO,aAAa,gBAAgB,KAAK,WAAW,SAAS,OAAO;CAEtE;CAEA,eAAe,GAA4B,IAAmB,IAA0B;EACvF,IAAM,IAAW,EAA0B,KAAK,OAAO;GACtD,KAAK,KAAK;GACV,QAAQ,KAAK;GACb,OAAO,KAAK;GACZ,WAAW,KAAK;GAChB,QAAQ,KAAK;GACb,KAAK,KAAK;GACV,MAAM,KAAK;EACZ,CAAC;EAED,OADA,KAAK,YAAY,GAAU,CAAgB,GACpC;CACR;CAEA,eAA8B;EAC7B,OAAO,KAAK,UAAU,CAAC,CAAC;CACzB;CAEA,aAAa,GAAgC;EAC5C,IAAM,IAAW,KAAK,YAAY;EAElC,OADA,EAAS,cAAc,GAChB;CACR;CAEA,YAAqB;EACpB,OAAO,KAAK,UAAU,CAAC,CAAC;CACzB;CAEA,UAAU,GAAuB;EAChC,IAAM,IAAW,KAAK,YAAY;EAElC,OADA,EAAS,WAAW,GACb;CACR;CAEA,SAAwB;EACvB,OAAO,KAAK,UAAU,CAAC,CAAC;CACzB;CAEA,OAAO,GAA0B;EAChC,IAAM,IAAW,KAAK,YAAY;EAElC,OADA,EAAS,QAAQ,GACV;CACR;CAEA,UAAyB;EACxB,OAAO,KAAK,UAAU,CAAC,CAAC;CACzB;CAEA,QAAQ,GAA2B;EAClC,IAAM,IAAW,KAAK,YAAY;EAElC,OADA,EAAS,SAAS,GACX;CACR;AACD,GAEa,KAA6B,IAAM,IAAI,MAC5C,EAAsB,IAAI,EAAmB,GAAK,CAAU,CAAC,GAGxD,KAAyB,MAC9B,aAAgB,GC7LlB,MAA4B,MAAgD;CACjF,IAAM,IAAoC,CAAC;CAK3C,OAJA,MAAM,KAAK,EAAQ,UAAU,CAAC,CAAC,SAAS,MAAS;EAC5C,EAAK,SAAS,YAClB,EAAW,EAAK,QAAQ,EAAK;CAC9B,CAAC,GACM;AACR,GAEM,KAA6B,MAAuC;CACzE,IAAI,EAAE,aAAmB,cACxB,OAAO,EAAE,MAAM,KAAK;CAGrB,IAAM,IAAM,EAAQ,QAAQ,YAAY;CACxC,IAAI,CAAC;EAAC;EAAQ;EAAQ;EAAQ;EAAQ;EAAO;CAAK,CAAC,CAAC,SAAS,CAAG,GAC/D,OAAO,EAAE,MAAM,KAAK;CAGrB,IAAM,IAAO,EAAQ;CAKrB,QAJK,MAAS,QAAQ,MAAS,OAAO,EAAQ,SAAS,WAAW,IAC1D,EAAE,MAAM,KAAK,IAGd,EACN,MAAM,EAAuB,GAAK,GAAyB,CAAO,GAAG,CAAI,EAC1E;AACD,GAEa,IAAb,MAAa,UAAwB,EAAY;CAChD;CACA;CACA;CAEA,OAAO,UAAkB;EACxB,OAAO;CACR;CAEA,OAAO,MAAM,GAAwC;EACpD,OAAO,IAAI,EAAgB,EAAK,OAAO,EAAK,cAAc,EAAK,QAAQ,EAAK,KAAK;CAClF;CAEA,YAAY,IAAM,QAAQ,IAAoC,CAAC,GAAG,IAAsB,MAAM,GAAe;EAI5G,AAHA,MAAM,CAAG,GACT,KAAK,QAAQ,GACb,KAAK,eAAe,GACpB,KAAK,SAAS;CACf;CAEA,OAAO,YAAqC;EAC3C,OAAO;GACN,aAAa;IAAE,YAAY;IAA2B,UAAU;GAAE;GAClE,aAAa;IAAE,YAAY;IAA2B,UAAU;GAAE;GAClE,aAAa;IAAE,YAAY;IAA2B,UAAU;GAAE;GAClE,aAAa;IAAE,YAAY;IAA2B,UAAU;GAAE;GAClE,YAAY;IAAE,YAAY;IAA2B,UAAU;GAAE;GACjE,YAAY;IAAE,YAAY;IAA2B,UAAU;GAAE;EAClE;CACD;CAEA,OAAO,WAAW,GAA4D;EAC7E,OAAO,EAAuB,EAAe,KAAK,EAAe,YAAY,EAAe,IAAI,CAAC,CAAC,eAAe,CAAc;CAChI;CAEA,eAAe,GAAoE;EAClF,OAAO,MACL,eAAe,CAAc,CAAC,CAC9B,OAAO,EAAe,GAAG,CAAC,CAC1B,cAAc,EAAe,cAAc,CAAC,CAAC,CAAC,CAC9C,QAAQ,EAAe,QAAQ,IAAI;CACtC;CAEA,aAAwC;EACvC,OAAO;GACN,GAAG,MAAM,WAAW;GACpB,MAAM;GACN,SAAS;GACT,KAAK,KAAK,OAAO;GACjB,YAAY,KAAK,cAAc;GAC/B,MAAM,KAAK,QAAQ;EACpB;CACD;CAEA,UAAU,GAAmC;EAE5C,IAAM,IAAU,SAAS,cAAc,KAAK,KAAK;EAEjD,OADA,KAAK,sBAAsB,CAAO,GAC3B;CACR;CAEA,UAAU,GAAgB,GAA2B;EAMpD,OALI,EAAS,UAAU,KAAK,SAI5B,KAAK,sBAAsB,CAAG,GACvB,MAJC;CAKT;CAEA,YAAsC;EACrC,IAAM,IAAU,SAAS,cAAc,KAAK,KAAK;EAIjD,OAHA,OAAO,QAAQ,KAAK,YAAY,CAAC,CAAC,SAAS,CAAC,GAAK,OAAW;GAC3D,EAAQ,aAAa,GAAK,CAAK;EAChC,CAAC,GACM,EAAE,WAAQ;CAClB;CAEA,sBAAsB,GAAwB;EAM7C,AALA,EAAI,UAAU,IAAI,sBAAsB,GACxC,MAAM,KAAK,EAAI,UAAU,CAAC,CAAC,SAAS,MAAS;GACxC,EAAK,SAAS,WAClB,EAAI,gBAAgB,EAAK,IAAI;EAC9B,CAAC,GACD,OAAO,QAAQ,KAAK,YAAY,CAAC,CAAC,SAAS,CAAC,GAAK,OAAW;GAC3D,EAAI,aAAa,GAAK,CAAK;EAC5B,CAAC;CACF;CAEA,eAAe,GAA4B,IAAmB,IAA0B;EACvF,IAAM,IAAO,EAAuB,KAAK,OAAO,KAAK,cAAc,KAAK,MAAM;EAE9E,OADA,KAAK,YAAY,GAAM,CAAgB,GAChC;CACR;CAEA,sBAA+B;EAC9B,OAAO;CACR;CAEA,qBAA8B;EAC7B,OAAO;CACR;CAEA,aAAsB;EACrB,OAAO;CACR;CAEA,WAAoB;EACnB,OAAO;CACR;CAEA,SAAiB;EAChB,OAAO,KAAK,UAAU,CAAC,CAAC;CACzB;CAEA,OAAO,GAAmB;EACzB,IAAM,IAAW,KAAK,YAAY;EAElC,OADA,EAAS,QAAQ,GACV;CACR;CAEA,gBAAuC;EACtC,OAAO,KAAK,UAAU,CAAC,CAAC;CACzB;CAEA,cAAc,GAAyC;EACtD,IAAM,IAAW,KAAK,YAAY;EAElC,OADA,EAAS,eAAe,GACjB;CACR;CAEA,UAAyB;EACxB,OAAO,KAAK,UAAU,CAAC,CAAC;CACzB;CAEA,QAAQ,GAA2B;EAClC,IAAM,IAAW,KAAK,YAAY;EAElC,OADA,EAAS,SAAS,GACX;CACR;AACD,GAEa,KACZ,GACA,IAAoC,CAAC,GACrC,IAAsB,SAEf,EAAsB,IAAI,EAAgB,GAAK,GAAY,CAAI,CAAC,GAG3D,MAAsB,MAC3B,aAAgB;;;ACjKxB,SAAgB,GAA4B,EAC3C,WACA,iBACA,uBACA,qBACA,sBACqC;CACrC,IAAM,IAAyB,GAC7B,MAAkB;EACb,OAEL;OAAI,MAAU,uBAAuB;IACpC,IAAI,EAAa,cAAc,uBAAuB;KACrD,EAAO,gBAAgB,GAAqB,KAAA,CAAS;KACrD;IACD;IACA,EAAO,gBAAgB,IAA+B,KAAA,CAAS;IAC/D;GACD;GAEA,IAAI,MAAU,qBAAqB;IAClC,IAAI,EAAa,cAAc,qBAAqB;KACnD,EAAO,gBAAgB,GAAqB,KAAA,CAAS;KACrD;IACD;IACA,EAAO,gBAAgB,IAA6B,KAAA,CAAS;IAC7D;GACD;GAEA,EAAO,aAAa;IACnB,IAAM,IAAY,EAAc;IAChC,IAAI,CAAC,EAAkB,CAAS,GAAG;IAEnC,IAAI,MAAU,cAAc,MAAU,aAAa;KAClD,EAAe,SAAiB,EAAqB,CAAC;KACtD;IACD;IAEA,IAAI,MAAU,cAAc;KAC3B,EAAe,SAAiB,GAAiB,CAAC;KAClD;IACD;IAEA,IAAM,IAAa,EAAqB,CAAK;IAC7C,AAAI,KACH,EAAe,SAAiB,GAAmB,CAAU,CAAC;GAEhE,CAAC;EA7BD;CA8BD,GACA,CAAC,GAAQ,EAAa,SAAS,CAChC,GAEM,IAA0B,GAC9B,MAAkB;EAClB,IAAI,CAAC,GAAQ;EAEb,IAAM,IAAe,EAAsB,CAAK;EAC3C,KAEL,EAAO,gBAAgB,IAAqB,CAAqB;CAClE,GACA,CAAC,CAAM,CACR,GAEM,IAAwB,GAC5B,MAA6B;EACxB,KACL,EAAO,gBAAgB,IAAwB,CAA8B;CAC9E,GACA,CAAC,CAAM,CACR,GAEM,IAAa,QAAkB;EAC/B,KACL,EAAO,gBAAgB,IAAc,KAAA,CAAS;CAC/C,GAAG,CAAC,CAAM,CAAC,GAEL,IAAa,QAAkB;EAC/B,KACL,EAAO,gBAAgB,IAAc,KAAA,CAAS;CAC/C,GAAG,CAAC,CAAM,CAAC,GAEL,IAA0B,QAA0B;EACzD,IAAI,CAAC,GAAQ,OAAO;EAEpB,IAAI,IAAO;EAOX,OANA,EAAO,eAAe,CAAC,CAAC,WAAW;GAClC,IAAM,IAAY,EAAc;GAC3B,EAAkB,CAAS,MAChC,IAAO,EAAU,eAAe;EACjC,CAAC,GAEM;CACR,GAAG,CAAC,CAAM,CAAC,GAEL,IAAwB,GAC5B,MAA+B;EAC1B,MAEL,EAAO,aAAa;GACnB,IAAM,IAAY,EAAc;GAChC,IAAI,CAAC,EAAkB,CAAS,GAAG;GAEnC,IAAM,IAAgB,EAAU,eAAe,GACzC,IAAY,EAAQ,KAAK,SAAS,IAAI,EAAQ,OAAO;GAC3D,IAAI,CAAC,EAAU,KAAK,GAAG;GAEvB,IAAM,IAAW,EAA0B,EAAQ,KAAK;IACvD,QAAQ;IACR,KAAK;IACL,WAAW,EAAQ,aAAa,KAAiB;IACjD,QAAQ,EAAQ;IAChB,KAAK,EAAQ,OAAO;IACpB,MAAM;GACP,CAAC,GAEK,IAAW,EAAgB,CAAS;GAE1C,AADA,EAAS,OAAO,CAAQ,GACxB,EAAU,YAAY,CAAC,CAAQ,CAAC;EACjC,CAAC,GAED,4BAA4B;GAC3B,EAAO,MAAM;EACd,CAAC;CACF,GACA,CAAC,CAAM,CACR,GAEM,IAAgB,GACpB,GAAa,GAAc,GAAa,GAAmB,MAAwB;EACnF,EAAsB;GACrB;GACA;GACA;GACA;GACA,QAAQ;EACT,CAAC;CACF,GACA,CAAC,CAAqB,CACvB,GAEM,IAAqB,GACzB,GAAa,MAAoB;EACjC,EAAsB;GACrB;GACA,MAAM;GACN,KAAK;GACL,WAAW,kCAAkC;GAC7C,QAAQ;EACT,CAAC;CACF,GACA,CAAC,CAAqB,CACvB,GAEM,IAAuB,QAA4B;EACxD,IAAI,CAAC,GAAQ,OAAO;EAEpB,IAAI,IAAkB;EAqCtB,OApCA,EAAO,eAAe,CAAC,CAAC,WAAW;GAClC,IAAM,IAAY,EAAc;GAChC,IAAI,CAAC,EAAkB,CAAS,GAAG;IAClC,IAAQ;IACR;GACD;GAEA,IAAM,IAAgB,EAAU,eAAe,GAEzC,IAAW,GADE,EAAU,OAAO,QACC,IAAa,MAAS,EAAsB,CAAI,KAAK,EAAY,CAAI,CAAC;GAE3G,IAAI,EAAsB,CAAQ,GAAG;IACpC,IAAQ;KACP,KAAK,EAAS,OAAO;KACrB,WAAW,EAAS,aAAa,KAAK;KACtC,MAAM,EAAS,QAAQ,KAAK;KAC5B,KAAK,EAAS,OAAO,KAAK;KAC1B,QAAQ,EAAS,UAAU;IAC5B;IACA;GACD;GAEA,IAAI,EAAY,CAAQ,GAAG;IAC1B,IAAQ;KACP,KAAK,EAAS,OAAO;KACrB,WAAW;KACX,MAAM;KACN,KAAK;KACL,QAAQ;IACT;IACA;GACD;GAEA,IAAQ;EACT,CAAC,GAEM;CACR,GAAG,CAAC,CAAM,CAAC,GAEL,IAAkB,GACtB,MAAoB;EAChB,MAAS,EAAU,cAAc,CAAC,KAItC,EAAiB,CAAI;CACtB,GACA,CAAC,GAAoB,CAAgB,CACtC,GAEM,IAA+B,GACnC,GAAa,GAAc,MAAuC;EAC7D,MAEL,EAAO,aAAa;GACnB,IAAM,IAAY,EAAc;GAChC,IAAI,CAAC,EAAkB,CAAS,GAAG;GAEnC,IAAM,IAAgB,EAAU,eAAe,CAAC,CAAC,KAAK,GAChD,IACL,KAAQ,KAAiB,EAAW,SAAY,EAAW,iBAAiB,OAAO,OAAO,CAAU,CAAC,CAAC,KAAK,GAAG,KAAK;GAEpH,IAAI,CAAC,EAAU,KAAK,GAAG;GAEvB,IAAM,IAAO,EAAuB,GAAK,GAAY,CAAS;GAE9D,AADA,EAAK,OAAO,EAAgB,CAAS,CAAC,GACtC,EAAU,YAAY,CAAC,CAAI,CAAC;EAC7B,CAAC,GAED,4BAA4B;GAC3B,EAAO,MAAM;EACd,CAAC;CACF,GACA,CAAC,CAAM,CACR;CAuCA,OAAO;EACN;EACA;EACA;EACA;EACA,wBA1C8B,QAAkB;GAC3C,KAEL,EAAO,aAAa;IACnB,IAAM,IAAY,EAAc;IAChC,IAAI,CAAC,EAAkB,CAAS,KAAK,EAAU,YAAY,GAAG;IAE9D,IAAM,IAAgB,EAAU,SAAS,GACnC,oBAAgB,IAAI,IAAqB;IAa/C,AAXA,EAAc,SAAS,MAAS;KAC/B,IAAI,IAA8B;KAClC,OAAO,IAIN,AAHI,GAAmB,CAAO,KAC7B,EAAc,IAAI,CAAO,GAE1B,IAAU,EAAQ,UAAU;IAE9B,CAAC,GAGD,MAD0B,KAAK,CAAa,CAAC,CAAC,MAAM,GAAG,MAAM,EAAoB,CAAC,IAAI,EAAoB,CAAC,CAC3G,CAAA,CAAY,SAAS,MAAS;KACxB,EAAK,WAAW,MAErB,EADsB,YACtB,CAAA,CAAS,SAAS,MAAU,EAAK,aAAa,CAAK,CAAC,GACpD,EAAK,OAAO;IACb,CAAC;GACF,CAAC;EACF,GAAG,CAAC,CAAM,CAcT;EACA;EACA;EACA;EACA,gBAhBsB,GACrB,MAAmB;GACnB,EAAgB,CAAI;EACrB,GACA,CAAC,CAAe,CAYhB;EACA;EACA;EACA;EACA;CACD;AACD;;;;;;;;;AErTA,SAAgB,GAAY,EAAE,WAAQ,YAAS,cAAW,mBAAkC;CAC3F,IAAM,CAAC,GAAO,KAAY,EAAS,EAAE,GAC/B,CAAC,GAAW,KAAgB,EAAS,EAAE,GACvC,CAAC,GAAO,KAAY,EAAwB,IAAI,GAChD,CAAC,KAAS,QACX,EAAO,CAAY,KAAK,OAAO,KAAiB,WAC5C;EAAE,MAAM;EAAI,KAAK;EAAI,WAAW;EAAI,KAAK;CAAa,IAGvD,CACP;CAED,QAAgB;EACf,AAAI,KACC,EAAO,CAAK,MACf,EAAS,EAAM,OAAO,EAAE,GACxB,EAAa,EAAM,aAAa,EAAE;CAGrC,GAAG,CAAC,GAAQ,CAAK,CAAC;CAElB,IAAM,KAAiB,MAEjB,6BAAW,KAAK,CAAK,IAInB,MAHN,EAAS,0BAA0B,GAC5B,KAKH,KAAiB,MAAkB;EACxC,MAAE,eAAe,GAEZ,EAAc,CAAK,GACxB;OAAI,CAAC,GAAW;IACf,EAAS,6BAA6B;IACtC;GACD;GAGA,AADA,EAAU,UAAU,KAAS,IAAI,IAAI,GAAW,EAAK,GACrD,EAAY;EAHZ;CAID,GAEM,UAAoB;EAIzB,AAHA,EAAS,EAAE,GACX,EAAa,EAAE,GACf,EAAS,IAAI,GACb,EAAQ;CACT;CAEA,OACC,kBAAC,GAAD;EAAe;EAAQ,SAAS;EAAa,OAAM;EAAkB,MAAK;YAA1E,CACC,kBAAC,GAAD,EAAA,UACC,kBAAC,OAAD;GAAK,WAAW,EAAG,cAAc,OAAO;aAAxC;IACC,kBAAC,GAAD;KAAO,OAAM;KAAc,OAAO;KAAO,UAAU;KAAU,aAAY;IAAsB,CAAA;IAE9F,KACA,kBAAC,OAAD;KAAK,WAAU;eAAf;MACC,kBAAC,UAAD,EAAA,UAAQ,gBAAqB,CAAA;MAAC;MAAC,kBAAC,QAAD;OAAM,WAAU;iBAAc;MAAY,CAAA;KACrE;;IAGN,kBAAC,GAAD;KACC,OAAM;KACN,OAAO;KACP,UAAU;KACV,aAAY;IACZ,CAAA;GACG;KACQ,CAAA,GACd,kBAAC,GAAD,EAAA,UAAA,CACC,kBAAC,GAAD;GAAQ,YAAW;GAAU,MAAK;GAAQ,SAAS;aAAa;EAExD,CAAA,GACR,kBAAC,GAAD;GAAQ,YAAW;GAAU,MAAK;GAAU,SAAS;GAAe,UAAU,CAAC,KAAS,CAAC;aAAW;EAE5F,CAAA,CACI,EAAA,CAAA,CACP;;AAET;;;AC/EA,SAAgB,EAAW,EAAE,WAAQ,YAAS,cAAW,mBAAiC;CACzF,IAAM,CAAC,GAAK,KAAU,EAAS,EAAE,GAC3B,CAAC,GAAW,KAAgB,EAAS,EAAE,GACvC,CAAC,GAAO,KAAY,EAAwB,IAAI,GAChD,CAAC,GAAY,KAAiB,EAAS,EAAK,GAC5C,CAAC,KAAS,QACX,EAAO,CAAY,KAClB,OAAO,KAAiB,WACpB;EAAE,MAAM;EAAI,KAAK;EAAI,WAAW;EAAI,KAAK;CAAa,IAGxD,CACP;CAED,QAAgB;EACf,AAAI,KACC,EAAO,CAAK,MACf,EAAO,EAAM,OAAO,EAAE,GACtB,EAAa,EAAM,aAAa,EAAE;CAGrC,GAAG,CAAC,GAAQ,CAAK,CAAC;CAElB,IAAM,KAAmB,MAAkB;EAI1C,AAHA,EAAO,CAAK,GAGR,KACH,EAAS,IAAI;CAEf,GAEM,KAAiB,MAAkB;EACxC,EAAE,eAAe;EAEjB,IAAM,IAAa,EAAY,CAAG;EAClC,IAAI,CAAC,EAAW,SAAS;GACxB,EAAS,EAAW,KAAK;GACzB;EACD;EAEA,IAAI,CAAC,GAAW;GACf,EAAS,8BAA8B;GACvC;EACD;EAKA,AADA,EADiB,EAAI,WAAW,MAAM,IAAI,IAAM,WAAW,KACvC,IAAI,IAAI,GAAW,CAAU,GACjD,EAAY;CACb,GAEM,UAAoB;EAIzB,AAHA,EAAO,EAAE,GACT,EAAa,EAAE,GACf,EAAS,IAAI,GACb,EAAQ;CACT;CAEA,OACC,kBAAC,GAAD;EAAe;EAAQ,SAAS;EAAa,OAAM;EAAwB,MAAK;YAAhF,CACC,kBAAC,GAAD,EAAA,UACC,kBAAC,GAAD;GAAe,KAAI;aAAnB;IACC,kBAAC,GAAD;KAAO,OAAM;KAAmB,OAAO;KAAK,UAAU;KAAiB,aAAY;IAAuB,CAAA;IAEzG,KACA,kBAAC,OAAD;KAAK,WAAU;eAAf;MACC,kBAAC,UAAD,EAAA,UAAQ,gBAAqB,CAAA;MAAC;MAAC,kBAAC,QAAD;OAAM,WAAU;iBAAc;MAAY,CAAA;KACrE;;IAGN,kBAAC,GAAD;KACC,OAAM;KACN,OAAO;KACP,UAAU;KACV,aAAY;IACZ,CAAA;IAED,kBAAC,GAAD;KAAU,OAAM;KAA+C,OAAO;KAAY,UAAU;IAAgB,CAAA;GAC9F;KACF,CAAA,GACd,kBAAC,GAAD,EAAA,UAAA,CACC,kBAAC,GAAD;GAAQ,YAAW;GAAU,MAAK;GAAQ,SAAS;aAAa;EAExD,CAAA,GACR,kBAAC,GAAD;GAAQ,YAAW;GAAU,MAAK;GAAU,SAAS;GAAe,UAAU,CAAC,KAAO,CAAC;aAAW;EAE1F,CAAA,CACI,EAAA,CAAA,CACP;;AAET;;;AC1FA,SAAgB,GAAY,EAAE,WAAQ,YAAS,cAAW,mBAAkC;CAC3F,IAAM,CAAC,GAAO,KAAY,EAAS,EAAE,GAC/B,CAAC,GAAU,KAAe,EAAS,EAAE,GACrC,CAAC,GAAW,KAAgB,EAAS,EAAE,GACvC,CAAC,GAAO,KAAY,EAAwB,IAAI,GAChD,CAAC,KAAS,QACX,EAAO,CAAY,KAAK,OAAO,KAAiB,WAC5C;EAAE,MAAM;EAAI,KAAK;EAAI,WAAW;EAAI,KAAK;CAAa,IAGvD,CACP;CAED,QAAgB;EACf,AAAI,KACC,EAAO,CAAK,MACf,GAAU,EAAM,OAAO,GAAA,CAAI,QAAQ,OAAO,EAAE,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,GAEvE,EAAM,MAGV,GAAa,EAAM,OAAO,GAAA,CAAI,QAAQ,OAAO,EAAE,CAAC,IAFhD,GAAa,EAAM,OAAO,GAAA,CAAI,QAAQ,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAK3D,EAAa,EAAM,aAAa,EAAE;CAGrC,GAAG,CAAC,GAAQ,CAAK,CAAC;CAElB,IAAM,KAAqB,MAAkB;EAE5C,AADA,IAAQ,EAAM,QAAQ,OAAO,EAAE,GAC3B,EAAM,UAAU,MACnB,EAAS,CAAK,GACd,EAAS,IAAI,KAEb,EAAS,6BAA6B;CAExC,GAEM,KAAiB,MAClB,EAAM,WAAW,KAId,MAHN,EAAS,yCAAyC,GAC3C,KAKH,KAAiB,MAAkB;EAGxC,IAFA,EAAE,eAAe,GAEb,CAAC,EAAc,CAAK,GAAG;EAC3B,IAAI,CAAC,GAAW;GACf,EAAS,gCAAgC;GACzC;EACD;EAEA,IAAM,IAAiB,EAAY,CAAK;EAGxC,AADA,EAAU,OAAO,KADM,OACO,IAAW,GAAG,EAAe,QAAQ,MAAa,GAAgB,GAAU,GAAW,EAAK,GAC1H,EAAY;CACb,GAEM,UAAoB;EAIzB,AAHA,EAAS,EAAE,GACX,EAAa,EAAE,GACf,EAAS,IAAI,GACb,EAAQ;CACT;CAEA,OACC,kBAAC,GAAD;EAAe;EAAQ,SAAS;EAAa,OAAM;EAAoB,MAAK;YAA5E,CACC,kBAAC,GAAD,EAAA,UACC,kBAAC,GAAD;GAAe,KAAI;aAAnB;IACC,kBAAC,OAAD;KAAK,WAAW,EAAG,QAAQ,iBAAiB,OAAO;eAAnD,CACC,kBAAC,GAAD;MACC,OAAM;MACN,aAAY;MACZ,OAAO;MACP,UAAU;MACV,aAAY;MACZ,WAAU;KACV,CAAA,GACD,kBAAC,GAAD;MAAO,OAAM;MAAmB,OAAO;MAAU,UAAU;MAAa,aAAY;KAAO,CAAA,CACvF;;IACJ,KACA,kBAAC,OAAD;KAAK,WAAU;eAAf;MACC,kBAAC,UAAD,EAAA,UAAQ,gBAAqB,CAAA;MAAC;MAAC,kBAAC,QAAD;OAAM,WAAU;iBAAc;MAAY,CAAA;KACrE;;IAGN,kBAAC,GAAD;KACC,OAAM;KACN,aAAY;KACZ,OAAO;KACP,UAAU;KACV,aAAY;IACZ,CAAA;GACa;KACF,CAAA,GACd,kBAAC,GAAD,EAAA,UAAA,CACC,kBAAC,GAAD;GAAQ,YAAW;GAAQ,MAAK;GAAQ,SAAS;aAAa;EAEtD,CAAA,GACR,kBAAC,GAAD;GAAQ,YAAW;GAAQ,MAAK;GAAU,SAAS;GAAe,UAAU,CAAC,KAAS,CAAC;aAAW;EAE1F,CAAA,CACI,EAAA,CAAA,CACP;;AAET;;;AChGA,SAAgB,GAAe,EAAE,WAAQ,YAAS,cAAW,WAAQ,iBAAc,IAAI,kBAAe,CAAC,KAA0B;CAChI,IAAM,CAAC,GAAM,KAAW,EAAS,CAAW,GACtC,CAAC,GAAQ,KAAa,EAAiC,CAAC,CAAC,GACzD,CAAC,GAAQ,KAAa,EAAwC,CAAC,CAAC,GAChE,CAAC,GAAa,KAAkB,EAAS,EAAK;CAEpD,QAAgB;EACf,IAAI,KAAU,CAAC,GAAa;GAC3B,IAAM,IAAU,EAAO,OAAO,QAC5B,GAAK,OACL,EAAI,EAAM,QAAQ,EAAa,EAAM,SAAS,IACvC,IAER,CAAC,CACF;GAGA,AAFA,EAAU,CAAO,GACjB,EAAU,CAAC,CAAC,GACZ,EAAe,EAAI;EACpB,OAAO,AAAI,CAAC,KAAU,KACrB,EAAe,EAAK;CAEtB,GAAG;EAAC;EAAQ,EAAO;EAAQ;EAAc;CAAW,CAAC;CAErD,IAAM,KAAgB,GAAc,MAAkB;EAErD,AADA,GAAW,OAAU;GAAE,GAAG;IAAO,IAAO;EAAM,EAAE,GAChD,GAAW,OAAU;GAAE,GAAG;IAAO,IAAO;EAAK,EAAE;CAChD,GAEM,UAA0B;EAC/B,IAAM,IAA2C,CAAC,GAC9C,IAAU;EAEd,AAAK,EAAK,KAAK,MACd,EAAU,OAAU,qBACpB,IAAU;EAGX,KAAK,IAAM,KAAS,EAAO,QAAQ;GAClC,IAAM,IAAQ,EAAO,EAAM,KAAK,EAAE,KAAK;GACvC,IAAI,EAAM,YAAY,CAAC,GAEtB,AADA,EAAU,EAAM,QAAQ,qBACxB,IAAU;QACJ,IAAI,EAAM,UAAU;IAC1B,IAAM,IAAM,EAAM,SAAS,CAAK;IAChC,AAAI,MACH,EAAU,EAAM,QAAQ,GACxB,IAAU;GAEZ;EACD;EAGA,OADA,EAAU,CAAS,GACZ;CACR;CAQA,OACC,kBAAC,GAAD;EAAe;EAAiB;EAAS,OAAO,YAAY,EAAO,QAAQ;EAAI,MAAK;YAApF,CACC,kBAAC,GAAD,EAAA,UACC,kBAAC,GAAD;GAAe,KAAI;aAAnB;IACC,kBAAC,OAAD,EAAA,UAAA;KACE,EAAO;KAAY;KAAC,kBAAC,MAAD,CAAK,CAAA;IACtB,EAAA,CAAA;IAEL,kBAAC,OAAD,EAAA,UAAA;KACC,kBAAC,UAAD,EAAA,UAAQ,UAAe,CAAA;KAAC;KAAE,EAAO;IAC7B,EAAA,CAAA;IAEL,kBAAC,GAAD;KACC,OAAO,EAAO;KACd,aAAa,qFAAqF,EAAO;KACzG,OAAO;KACP,UAAU;KACV,OAAO,EAAO,QAAW,KAAA;KACzB,UAAA;IACA,CAAA;IACA,EAAO,OAAO,KAAK,MAElB,kBAAC,GAAD;KAEC,OAAO,EAAM;KACb,aAAa,EAAM;KACnB,aAAa,EAAM;KACnB,OAAO,EAAO,EAAM,SAAS;KAC7B,WAAW,MAAU,EAAa,EAAM,MAAM,CAAK;KACnD,OAAO,EAAO,EAAM,SAAS,KAAA;KAC7B,UAAU,EAAM;IAChB,GARK,EAAM,IAQX,CAEF;GACa;KACF,CAAA,GACd,kBAAC,GAAD,EAAA,UAAA,CACC,kBAAC,GAAD;GAAQ,YAAW;GAAQ,MAAK;GAAQ,SAAS;aAAS;EAElD,CAAA,GACR,kBAAC,GAAD;GAAQ,YAAW;GAAQ,MAAK;GAAU,eA9CjB;IACtB,EAAS,MACd,EAAU,EAAO,SAAS,EAAK,KAAK,GAAG,CAAM,GAC7C,EAAQ;GACT;aA0CqE;EAE1D,CAAA,CACI,EAAA,CAAA,CACP;;AAET;;;AC3IA,IAAa,KAA0D;EACrE,EAAS,OAAO;EAChB,SAAS;EACT,OAAO;EACP,aAAa;EACb,SACC,kBAAA,GAAA,EAAA,UAAA,CACC,kBAAC,QAAD;GAAM,OAAM;aAAkF;EAAU,CAAA,GACxG,kBAAC,OAAD;GAAK,WAAU;aACd,kBAAC,QAAD,EAAA,UAAO,8GAAkH,CAAA;EACrH,CAAA,CACJ,EAAA,CAAA;EAEH,QAAQ,CACP;GACC,MAAM;GACN,OAAO;GACP,aAAa;GACb,aAAa;GACb,UAAU;EACX,CACD;CACD;EACC,EAAS,OAAO;EAChB,SAAS;EACT,OAAO;EACP,aACC;EACD,SACC,kBAAA,GAAA,EAAA,UAAA;GACC,kBAAC,QAAD;IAAM,MAAK;cAAK;GAAc,CAAA;GAAC;GAC/B,kBAAC,OAAD;IAAK,WAAU;cACd,kBAAC,QAAD,EAAA,UAAO,qDAAyD,CAAA;GAC5D,CAAA;EACJ,EAAA,CAAA;EAEH,QAAQ,CACP;GACC,MAAM;GACN,OAAO;GACP,aAAa;GACb,UAAU;GACV,WAAW,MAAU,2BAA2B,KAAK,CAAG,IAAoD,OAAhD;EAC7D,CACD;CACD;EACC,EAAS,OAAO;EAChB,SAAS;EACT,OAAO;EACP,aAAa;EACb,SAAS;EACT,QAAQ,CACP;GACC,MAAM;GACN,OAAO;GACP,aAAa;GACb,aAAa;GACb,UAAU;EACX,CACD;CACD;EACC,EAAS,OAAO;EAChB,SAAS;EACT,OAAO;EACP,aAAa;EACb,SACC,kBAAA,GAAA,EAAA,UAAA;GAAE;GACoB,kBAAC,QAAD,EAAA,UAAM,8BAAiC,CAAA;GAAC;GAC7D,kBAAC,OAAD;IAAK,WAAU;cACd,kBAAC,QAAD,EAAA,UAAO,iEAAuE,CAAA;GAC1E,CAAA;EACJ,EAAA,CAAA;EAEH,QAAQ,CACP;GACC,MAAM;GACN,OAAO;GACP,aAAa;GACb,aAAa;GACb,UAAU;EACX,CACD;CACD;EAgBC,EAAS,MAAM;EACf,SAAS;EACT,OAAO;EACP,aAAa;EACb,SACC,kBAAA,GAAA,EAAA,UAAA;GAAE;GACa,kBAAC,OAAD,EAAA,UAAK,SAAW,CAAA;GAAC;GAAC,kBAAC,OAAD,EAAA,UAAK,UAAY,CAAA;GACjD,kBAAC,OAAD;IAAK,WAAU;cACd,kBAAC,QAAD,EAAA,UAAO,qDAA2D,CAAA;GAC9D,CAAA;EACJ,EAAA,CAAA;EAEH,QAAQ,CACP;GACC,MAAM;GACN,OAAO;GACP,aAAa;GACb,aAAa;GACb,UAAU;EACX,GACA;GACC,MAAM;GACN,OAAO;GACP,aAAa;GACb,aAAa;GACb,UAAU;EACX,CACD;CACD;EACC,EAAS,MAAM;EACf,SAAS;EACT,OAAO;EACP,aAAa;EACb,SACC,kBAAA,GAAA,EAAA,UAAA;GAAE;GACa,kBAAC,OAAD,EAAA,UAAK,SAAW,CAAA;GAAC;GAAC,kBAAC,OAAD,EAAA,UAAK,UAAY,CAAA;GACjD,kBAAC,OAAD;IAAK,WAAU;cACd,kBAAC,QAAD,EAAA,UAAO,qDAA2D,CAAA;GAC9D,CAAA;EACJ,EAAA,CAAA;EAEH,QAAQ,CACP;GACC,MAAM;GACN,OAAO;GACP,aAAa;GACb,aAAa;GACb,UAAU;EACX,GACA;GACC,MAAM;GACN,OAAO;GACP,aAAa;GACb,aAAa;GACb,UAAU;EACX,CACD;CACD;AACD;;;ACtIA,SAAgB,GAAW,EAAE,WAAQ,YAAS,cAAW,mBAAiC;CACzF,IAAM,CAAC,GAAM,KAAW,EAA+B,MAAM,GACvD,CAAC,GAAM,KAAW,EAAS,EAAE,GAC7B,CAAC,GAAI,KAAS,EAAS,EAAE,GACzB,CAAC,GAAQ,KAAa,EAAyC,CAAC,CAAC,GAEjE,IAAmB,GAAgB,MAA0C;EAIlF,AAHA,EAAQ,GAAc,QAAQ,MAAM,GACpC,EAAQ,GAAc,QAAQ,EAAE,GAChC,EAAM,GAAc,MAAM,EAAE,GAC5B,EAAU,CAAC,CAAC;CACb,CAAC;CAED,QAAgB;EACf,AAAI,KACH,EAAiB,CAAY;CAE/B,GAAG,CAAC,GAAQ,CAAY,CAAC;CAEzB,IAAM,UAAiB;EACtB,IAAM,IAA2B,CAAC,GAG5B,KAAU,MAAc,sBAAsB,KAAK,CAAC,GACpD,KAAU,MAAc,gBAAgB,KAAK,CAAC,GAC9C,KAAc,MAAc,kCAAkC,KAAK,CAAC,GAEpE,KAAS,GAAe,GAAe,MAAuC;GACnF,IAAI,CAAC,GAAO,OAAO,GAAG,EAAM;GAC5B,IAAI,MAAS,UAAU,CAAC,EAAO,CAAK,GAAG,OAAO;GAC9C,IAAI,MAAS,UAAU,CAAC,EAAO,CAAK,GAAG,OAAO;GAC9C,IAAI,MAAS,cAAc,CAAC,EAAW,CAAK,GAAG,OAAO;EAEvD;EAEA,QAAQ,GAAR;GACC,KAAK;IACJ,EAAU,OAAO,EAAM,QAAQ,GAAM,MAAM;IAC3C;GACD,KAAK;IACJ,EAAU,OAAO,EAAM,SAAS,GAAM,MAAM;IAC5C;GACD,KAAK;IACJ,EAAU,OAAO,EAAM,gBAAgB,GAAM,UAAU;IACvD;GACD,KAAK;IAEJ,AADA,EAAU,OAAO,EAAM,gBAAgB,GAAM,MAAM,GACnD,EAAU,KAAK,EAAM,mBAAmB,GAAI,MAAM;IAClD;GACD,KAAK;IAEJ,AADA,EAAU,OAAO,EAAM,eAAe,GAAM,MAAM,GAClD,EAAU,KAAK,EAAM,kBAAkB,GAAI,MAAM;IACjD;GACD,KAAK;IAEJ,AADA,EAAU,OAAO,EAAM,UAAU,GAAM,UAAU,GACjD,EAAU,KAAK,EAAM,aAAa,GAAI,UAAU;IAChD;EACF;EAGA,OADA,EAAU,CAAS,GACZ,OAAO,OAAO,CAAS,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC;CAChD;CAgDA,OACC,kBAAC,GAAD;EAAe;EAAiB;EAAS,OAAM;EAAiB,MAAK;YAArE,CACC,kBAAC,GAAD,EAAA,UACC,kBAAC,GAAD;GAAe,KAAI;aAAnB,CACC,kBAAC,GAAD;IAAY,OAAM;IAAe,OAAO;IAAM,UAAU;cAAxD;KACC,kBAAC,EAAW,QAAZ;MAAmB,OAAM;MAAO,OAAM;KAAQ,CAAA;KAC9C,kBAAC,EAAW,QAAZ;MAAmB,OAAM;MAAe,OAAM;KAAY,CAAA;KAC1D,kBAAC,EAAW,QAAZ;MAAmB,OAAM;MAAQ,OAAM;KAAQ,CAAA;KAC/C,kBAAC,EAAW,QAAZ;MAAmB,OAAM;MAAe,OAAM;KAAc,CAAA;KAC5D,kBAAC,EAAW,QAAZ;MAAmB,OAAM;MAAmB,OAAM;KAAc,CAAA;KAChE,kBAAC,EAAW,QAAZ;MAAmB,OAAM;MAA0B,OAAM;KAAkB,CAAA;IAChE;OAEZ,kBAAC,GAAD;IAAe,KAAI;qBAnDI;KAC1B,QAAQ,GAAR;MACC,KAAK;MACL,KAAK;MACL,KAAK,QACJ,OACC,kBAAC,GAAD;OACC,OAAM;OACN,aAAa,MAAS,SAAS,UAAU,MAAS,SAAS,eAAe;OAC1E,OAAO;OACP,UAAU;OACV,OAAO,EAAO;MACd,CAAA;MAEH,KAAK;MACL,KAAK;MACL,KAAK,kBACJ,OACC,kBAAA,GAAA,EAAA,UAAA,CACC,kBAAC,GAAD;OACC,OAAM;OACN,aAAa,EAAK,SAAS,MAAM,IAAI,UAAU,EAAK,SAAS,MAAM,IAAI,eAAe;OACtF,OAAO;OACP,UAAU;OACV,OAAO,EAAO;MACd,CAAA,GACD,kBAAC,GAAD;OACC,OAAM;OACN,aAAa,EAAK,SAAS,MAAM,IAAI,UAAU,EAAK,SAAS,MAAM,IAAI,eAAe;OACtF,OAAO;OACP,UAAU;OACV,OAAO,EAAO;MACd,CAAA,CACA,EAAA,CAAA;KAEL;IACD,EAe6B,CAAa;GAAiB,CAAA,CACzC;KACF,CAAA,GACd,kBAAC,GAAD,EAAA,UAAA,CACC,kBAAC,GAAD;GAAQ,YAAW;GAAQ,MAAK;GAAQ,SAAS;aAAS;EAElD,CAAA,GACR,kBAAC,GAAD;GAAQ,YAAW;GAAQ,MAAK;GAAU,eAlEjB;IAC3B,IAAI,CAAC,EAAS,GAAG;IAEjB,IAAM,IAAW,IAAK,GAAG,EAAK,GAAG,MAAO;IAExC,AADA,EAAU,QAAQ,GAAU,EAAE,YAAS,CAAC,GACxC,EAAQ;GACT;aA4DqE;EAE1D,CAAA,CACI,EAAA,CAAA,CACP;;AAET;;;ACpIA,SAAgB,GAAkB,EACjC,mBACA,kBACA,6BACA,sBACA,qBACA,cACA,mBACA,wBACA,4BACA,2BAC0B;CAC1B,IAAM,IAA2B;CAEjC,OACC,kBAAA,GAAA,EAAA,UAAA,CACE,KACA,kBAAA,GAAA,EAAA,UAAA;EACE,KACA,kBAAC,GAAD;GACC,QAAQ,MAAmB,EAAU;GACrC,SAAS;GACT,WAAW;EACX,CAAA;EAGF,kBAAC,GAAD;GACC,QAAQ,MAAmB,EAAU;GACrC,cAAc,EAAqB;GACnC,SAAS;GACT,WAAW;EACX,CAAA;EAED,kBAAC,IAAD;GACC,QAAQ,MAAmB,EAAU;GACrC,cAAc,EAAqB;GACnC,SAAS;GACT,WAAW;EACX,CAAA;EAED,kBAAC,IAAD;GACC,QAAQ,MAAmB,EAAU;GACrC,cAAc,EAAqB;GACnC,SAAS;GACT,WAAW;EACX,CAAA;CACA,EAAA,CAAA,GAGF,MACC,MAAkB,EAAS,OAS3B,kBAAC,IAAD;EAAY,QAAQ;EAAM,SAAS;EAAkB,WAAW;CAAsB,CAAA,IARtF,kBAAC,IAAD;EACC,QAAQ;EACR,SAAS;EACT,WAAW;EACX,QAAQ,GAAmB;EAC3B,aAAa,EAAwB;CACrC,CAAA,EAIF,EAAA,CAAA;AAEJ;;;AC3DA,SAAgB,GAAwB,EAAE,gBAAa,aAAU,sBAAmB,uBAAqC;CACxH,IAAM,IAA2B,GAAkB,0BAC7C,CAAC,GAAW,KAAgB,EAAS,EAAK,GAC1C,CAAC,GAAc,KAAmB,EAA8B,CAAqB,GACrF,CAAC,GAAQ,KAAa,EAA+B,IAAI,GACzD,CAAC,GAAgB,KAAqB,EAA2B,IAAI,GACrE,CAAC,GAAe,KAAoB,EAA0B,IAAI,GAElE,IAAa,EAAiB,GAAa,GAAG,IAAI,EAAY,MAAM,MACpE,IAAgB,CAAC,CAAC,GAElB,IAAqB,QAAc;EACnC,OACL,OAAO,KAAK,UAAU,EAAW,WAAW;CAC7C,GAAG,CAAC,CAAU,CAAC,GAET,IAAc,GAAa,MAAiB;EACjD,QAAQ,MAAM,4BAA4B,CAAK;CAChD,GAAG,CAAC,CAAC,GAEC,IAAe,GACnB,GAAiC,MAAiC;EAClE,IAAI,IAAO;EAMX,AALA,EAAY,WAAW;GACtB,IAAO,EAAuB,GAAe,IAAI;EAClD,CAAC,GAGD,EAAS;GAAE,KADC,GAAiB,CAClB;GAAK;EAAK,CAAC;CACvB,GACA,CAAC,CAAQ,CACV,GAEM,IAAiB,GAAa,MAAoB;EACvD,EAAkB,CAAI;CACvB,GAAG,CAAC,CAAC,GAEC,IAAgB,GAAa,MAAmB;EACrD,EAAiB,CAAI;CACtB,GAAG,CAAC,CAAC,GAEC,IAAU,GAA4B;EAC3C;EACA;EACA,oBAAoB,CAAC,CAAC;EACtB,kBAAkB;EAClB,iBAAiB;CAClB,CAAC,GAEK,IAAgB,SACd;EACN,WAAW;EACX,SAAS;EACT,OAAO;GACN,WAAW;GACX,MAAM;IACL,MAAM;IACN,WAAW;IACX,WAAW;IACX,eAAe;GAChB;EACD;EACA,OAAO;GAAC;GAAa;GAAW;GAAU;GAAc;GAAoB;EAAe;EAC3F,aAAa;CACd,IACA,CAAC,GAAa,CAAkB,CACjC;CAEA,OACC,kBAAC,OAAD;EAAK,WAAW,EAAgB;YAAhC,CACC,kBAAC,OAAD;GACC,WAAW,EAAG,EAAgB,mBAAmB,GAC/C,EAAgB,UAAU,EAC5B,CAAC;aACD,kBAAC,GAAD;IAAgC;cAAhC;KACC,kBAAC,GAAD;MACoB;MACnB,OAAO;MACP,oBAAoB,EAAQ;MAC5B,qBAAqB,EAAQ;MAC7B,mBAAmB,EAAQ;MAC3B,aAAa,EAAQ;MACrB,YAAY,EAAQ;MACpB,QAAQ,EAAQ;MAChB,QAAQ,EAAQ;MAChB,YAAY,EAAQ;KACpB,CAAA;KACD,kBAAC,IAAD;MACC,iBACC,kBAAC,GAAD;OACC,WAAU;OACV,eAAe,EAAa,EAAI;OAChC,cAAc,EAAa,EAAK;MAChC,CAAA;MAEF,aAAa,kBAAC,OAAD;OAAK,WAAU;iBAA2B;MAAqB,CAAA;MAC5E,eAAe;KACf,CAAA;KACD,kBAAC,GAAD,CAAgB,CAAA;KAChB,kBAAC,GAAD,CAAa,CAAA;KACb,kBAAC,GAAD;MAAsB,eAAe;MAAW,eAAe;KAAkB,CAAA;KACjF,kBAAC,GAAD;MAAmB,aAAa,GAAa;MAAM,YAAY;KAAgB,CAAA;KAC/E,kBAAC,GAAD;MAAgB,UAAU;MAAc,uBAAA;KAAuB,CAAA;IAC/C;;EACb,CAAA,GAEL,kBAAC,IAAD;GACiB;GACD;GACf,0BAA0B;GAC1B,yBAAyB,EAAkB,IAAI;GAC/C,wBAAwB,EAAiB,IAAI;GAC7C,WAAW,EAAQ;GACnB,gBAAgB,EAAQ;GACxB,qBAAqB,EAAQ;GAC7B,yBAAyB,EAAQ;GACjC,sBAAsB,EAAQ;EAC9B,CAAA,CACG;;AAEP"}
@@ -0,0 +1,44 @@
1
+ import { t as e } from "./ui.module-BisoTevy.js";
2
+ import { c as t, o as n } from "./Input-Ce2HXBUc.js";
3
+ import { cn as r } from "@ryuzaki13/react-foundation-lib/utils";
4
+ import { jsx as i } from "react/jsx-runtime";
5
+ var a = { textarea: "TjY2iu" };
6
+ //#endregion
7
+ //#region src/textarea/Textarea.tsx
8
+ function o({ label: o, description: s, className: c, disabled: l, size: u, value: d, onChange: f, error: p, onClearError: m, id: h, ...g }) {
9
+ let { controlId: _, labelId: v, descriptionId: y, errorId: b, describedBy: x } = t({
10
+ id: h,
11
+ hasLabel: o != null,
12
+ hasDescription: !!s,
13
+ hasError: !!p
14
+ });
15
+ return /* @__PURE__ */ i(n, {
16
+ label: o,
17
+ description: s,
18
+ disabled: l,
19
+ size: u,
20
+ error: p,
21
+ controlId: _,
22
+ labelId: v,
23
+ descriptionId: y,
24
+ errorId: b,
25
+ children: /* @__PURE__ */ i("textarea", {
26
+ ...g,
27
+ id: _,
28
+ disabled: l,
29
+ value: d,
30
+ "aria-invalid": !!p || void 0,
31
+ "aria-labelledby": v,
32
+ "aria-describedby": x,
33
+ "data-invalid": p ? "" : void 0,
34
+ className: r(e.uiControl, a.textarea, "scrollable", c),
35
+ onChange: (e) => {
36
+ f?.(e.target.value), p && m && m();
37
+ }
38
+ })
39
+ });
40
+ }
41
+ //#endregion
42
+ export { o as t };
43
+
44
+ //# sourceMappingURL=Textarea-DeJJjjkI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Textarea-DeJJjjkI.js","names":[],"sources":["../../src/textarea/Textarea.module.scss","../../src/textarea/Textarea.tsx"],"sourcesContent":[".textarea {\n\twidth: 100%;\n\tmin-height: 6em;\n\tresize: vertical;\n\tpadding: var(--space-sm);\n\tdisplay: block;\n}\n","import { TextareaHTMLAttributes } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { InputUI, useInputFieldIds } from \"../input\";\nimport { UiBaseProps } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Textarea.module.scss\";\n\nexport interface TextareaProps\n\textends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"children\" | \"onChange\" | \"size\" | \"value\">, UiBaseProps<string> {\n\terror?: string;\n\tonClearError?: () => void;\n}\n\n/**\n * Многострочное текстовое поле для ввода свободного текста. Поддерживает подпись, описание, ошибки и единый визуальный стиль формы.\n */\nexport function Textarea({\n\tlabel,\n\tdescription,\n\tclassName,\n\tdisabled,\n\tsize,\n\tvalue,\n\tonChange,\n\terror,\n\tonClearError,\n\tid: externalId,\n\t...props\n}: TextareaProps) {\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid: externalId,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tsize={size}\n\t\t\terror={error}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t<textarea\n\t\t\t\t{...props}\n\t\t\t\tid={controlId}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tvalue={value}\n\t\t\t\taria-invalid={!!error || undefined}\n\t\t\t\taria-labelledby={labelId}\n\t\t\t\taria-describedby={describedBy}\n\t\t\t\tdata-invalid={error ? \"\" : undefined}\n\t\t\t\tclassName={cn(uiStyles.uiControl, styles.textarea, \"scrollable\", className)}\n\t\t\t\tonChange={(event) => {\n\t\t\t\t\tonChange?.(event.target.value);\n\t\t\t\t\tif (error && onClearError) {\n\t\t\t\t\t\tonClearError();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t</InputUI>\n\t);\n}\n"],"mappings":";;;;;;;ACmBA,SAAgB,EAAS,EACxB,UACA,gBACA,cACA,aACA,SACA,UACA,aACA,UACA,iBACA,IAAI,GACJ,GAAG,KACc;CACjB,IAAM,EAAE,cAAW,YAAS,kBAAe,YAAS,mBAAgB,EAAiB;EACpF,IAAI;EACJ,UAAU,KAAiC;EAC3C,gBAAgB,CAAC,CAAC;EAClB,UAAU,CAAC,CAAC;CACb,CAAC;CAED,OACC,kBAAC,GAAD;EACQ;EACM;EACH;EACJ;EACC;EACI;EACF;EACM;EACN;YACT,kBAAC,YAAD;GACC,GAAI;GACJ,IAAI;GACM;GACH;GACP,gBAAc,CAAC,CAAC,KAAS,KAAA;GACzB,mBAAiB;GACjB,oBAAkB;GAClB,gBAAc,IAAQ,KAAK,KAAA;GAC3B,WAAW,EAAG,EAAS,WAAW,EAAO,UAAU,cAAc,CAAS;GAC1E,WAAW,MAAU;IAEpB,AADA,IAAW,EAAM,OAAO,KAAK,GACzB,KAAS,KACZ,EAAa;GAEf;EACA,CAAA;CACO,CAAA;AAEX"}
@@ -0,0 +1,135 @@
1
+ import { t as e } from "./wheel-picker-DUHGy7wE.js";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ import { createCalendarDate as r, parseDate as i } from "@ryuzaki13/react-foundation-lib/formatters";
4
+ import { parseDateSegmentMask as a } from "@ryuzaki13/react-foundation-lib/date-segments";
5
+ //#region src/date-time-input/lib/dateTimeValue.ts
6
+ var o = "dd.MM.yyyy HH:mm", s = "HH:mm", c = 1970, l = 0, u = 1;
7
+ a(s);
8
+ function d(e = 0, t = 0) {
9
+ return r(c, l, u, e, t, 0, 0);
10
+ }
11
+ function f(e = "date-time") {
12
+ return e === "time" ? s : o;
13
+ }
14
+ function p(e, t = "date-time") {
15
+ if (e == null) return null;
16
+ let n = i(e);
17
+ return n ? t === "time" ? d(n.getHours(), n.getMinutes()) : n : null;
18
+ }
19
+ function m(e, t, n, r = "date-time") {
20
+ let i = p(e, r);
21
+ if (!i) return !1;
22
+ if (r === "time") {
23
+ let e = i.getHours() * 60 + i.getMinutes(), r = t ? p(t, "time") : null, a = n ? p(n, "time") : null;
24
+ return !(r && e < r.getHours() * 60 + r.getMinutes() || a && e > a.getHours() * 60 + a.getMinutes());
25
+ }
26
+ return !(t && i < t || n && i > n);
27
+ }
28
+ function h(e, t) {
29
+ let n = p(t), i = n?.getHours() ?? 0, a = n?.getMinutes() ?? 0;
30
+ return r(e.getFullYear(), e.getMonth(), e.getDate(), i, a, 0, 0);
31
+ }
32
+ function g(e, t, n, i = "date-time") {
33
+ return i === "time" ? d(t, n) : r(e.getFullYear(), e.getMonth(), e.getDate(), t, n, 0, 0);
34
+ }
35
+ function _(e, t, n = "date-time") {
36
+ return n === "time" ? p(e, "time") ?? d() : p(e, n) ?? t;
37
+ }
38
+ function v(e, t, n, r = "date-time") {
39
+ let i = p(e, r) ?? e, a = t ? p(t, r) : null, o = n ? p(n, r) : null, s = !!a && i.getFullYear() === a.getFullYear() && i.getMonth() === a.getMonth() && i.getDate() === a.getDate(), c = !!o && i.getFullYear() === o.getFullYear() && i.getMonth() === o.getMonth() && i.getDate() === o.getDate(), l = s ? a.getHours() : 0, u = c ? o.getHours() : 23, d = s && l === u ? a.getMinutes() : 0, f = c && l === u ? o.getMinutes() : 59, m = l > u || l === u && d > f;
40
+ return {
41
+ disabled: m,
42
+ minHour: l,
43
+ maxHour: u,
44
+ minMinuteByHour: (e) => m ? 0 : s && e === l ? a.getMinutes() : 0,
45
+ maxMinuteByHour: (e) => m ? 59 : c && e === u ? o.getMinutes() : 59
46
+ };
47
+ }
48
+ function y(e, t, n, r, i, a = "date-time") {
49
+ let o = v(e, r, i, a);
50
+ if (o.disabled) return {
51
+ hours: 0,
52
+ minutes: 0
53
+ };
54
+ let s = Math.min(Math.max(t, o.minHour), o.maxHour), c = o.minMinuteByHour(s), l = o.maxMinuteByHour(s);
55
+ return {
56
+ hours: s,
57
+ minutes: Math.min(Math.max(n, c), l)
58
+ };
59
+ }
60
+ //#endregion
61
+ //#region src/date-time-input/lib/timePanelState.ts
62
+ function b(e, t, n, r = "date-time") {
63
+ let i = v(e, t, n, r), a = e.getHours(), o = e.getMinutes(), s = i.minMinuteByHour(a), c = i.maxMinuteByHour(a);
64
+ return i.disabled ? {
65
+ disabled: !0,
66
+ selectedHour: a,
67
+ selectedMinute: o,
68
+ hours: [],
69
+ minutes: []
70
+ } : {
71
+ disabled: !1,
72
+ selectedHour: a,
73
+ selectedMinute: o,
74
+ hours: Array.from({ length: i.maxHour - i.minHour + 1 }, (e, t) => i.minHour + t),
75
+ minutes: Array.from({ length: c - s + 1 }, (e, t) => s + t)
76
+ };
77
+ }
78
+ var x = {
79
+ timePanel: "_5-SSnO",
80
+ hint: "s1NHua",
81
+ fields: "KQC9-8",
82
+ field: "WDu02W",
83
+ label: "_9mEhfD",
84
+ wheel: "N-Fzjk"
85
+ };
86
+ //#endregion
87
+ //#region src/date-time-input/ui/TimePanel.tsx
88
+ function S({ value: r, disabled: i, minDate: a, maxDate: o, mode: s = "date-time", onChange: c }) {
89
+ let l = b(r, a, o, s), u = (e) => String(e).padStart(2, "0");
90
+ return l.disabled ? /* @__PURE__ */ t("div", {
91
+ className: x.timePanel,
92
+ children: /* @__PURE__ */ t("p", {
93
+ className: x.hint,
94
+ children: "Для выбранного дня нет доступного времени в заданном диапазоне."
95
+ })
96
+ }) : /* @__PURE__ */ t("div", {
97
+ className: x.timePanel,
98
+ children: /* @__PURE__ */ n("div", {
99
+ className: x.fields,
100
+ children: [/* @__PURE__ */ n("label", {
101
+ className: x.field,
102
+ children: [/* @__PURE__ */ t("span", {
103
+ className: x.label,
104
+ children: "Часы"
105
+ }), /* @__PURE__ */ t(e, {
106
+ className: x.wheel,
107
+ items: l.hours,
108
+ value: l.selectedHour,
109
+ onChange: (e) => c(e, l.selectedMinute),
110
+ ariaLabel: "Выбор часов",
111
+ disabled: i,
112
+ formatItem: u
113
+ })]
114
+ }), /* @__PURE__ */ n("label", {
115
+ className: x.field,
116
+ children: [/* @__PURE__ */ t("span", {
117
+ className: x.label,
118
+ children: "Минуты"
119
+ }), /* @__PURE__ */ t(e, {
120
+ className: x.wheel,
121
+ items: l.minutes,
122
+ value: l.selectedMinute,
123
+ onChange: (e) => c(l.selectedHour, e),
124
+ ariaLabel: "Выбор минут",
125
+ disabled: i,
126
+ formatItem: u
127
+ })]
128
+ })]
129
+ })
130
+ });
131
+ }
132
+ //#endregion
133
+ export { m as a, p as c, f as i, _ as l, y as n, h as o, d as r, g as s, S as t };
134
+
135
+ //# sourceMappingURL=TimePanel-_kF2RtHk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePanel-_kF2RtHk.js","names":[],"sources":["../../src/date-time-input/lib/dateTimeValue.ts","../../src/date-time-input/lib/timePanelState.ts","../../src/date-time-input/ui/TimePanel.module.scss","../../src/date-time-input/ui/TimePanel.tsx"],"sourcesContent":["import { dateToIndexedSegmentValues, indexedSegmentsToDate, parseDateSegmentMask } from \"@ryuzaki13/react-foundation-lib/date-segments\";\nimport { createCalendarDate, type DateFormatPreset, formatDate, parseDate, parseDateByPattern } from \"@ryuzaki13/react-foundation-lib/formatters\";\n\nexport type DateTimeInputMode = \"date-time\" | \"time\";\n\n/**\n * Фиксированный формат нового поля даты-времени.\n */\nexport const DATE_TIME_INPUT_FORMAT = \"dd.MM.yyyy HH:mm\";\nexport const TIME_INPUT_FORMAT = \"HH:mm\";\n\nconst DATE_TIME_INPUT_PRESET_NAME = \"__date_time_input__\";\nconst TIME_INPUT_PRESET_NAME = \"__time_input__\";\nconst TIME_ONLY_BASE_YEAR = 1970;\nconst TIME_ONLY_BASE_MONTH = 0;\nconst TIME_ONLY_BASE_DAY = 1;\nconst TIME_SEGMENTS = parseDateSegmentMask(TIME_INPUT_FORMAT);\n\n/**\n * Создаёт техническую базовую дату для режима выбора только времени.\n */\nexport function createTimeOnlyBaseDate(hours = 0, minutes = 0): Date {\n\treturn createCalendarDate(TIME_ONLY_BASE_YEAR, TIME_ONLY_BASE_MONTH, TIME_ONLY_BASE_DAY, hours, minutes, 0, 0);\n}\n\n/**\n * Возвращает формат пользовательского ввода для выбранного режима.\n */\nexport function getDateTimeInputFormat(mode: DateTimeInputMode = \"date-time\"): string {\n\treturn mode === \"time\" ? TIME_INPUT_FORMAT : DATE_TIME_INPUT_FORMAT;\n}\n\n/**\n * Создаёт временную предустановку форматирования для нового поля даты-времени.\n */\nexport function createDateTimeInputPreset(mode: DateTimeInputMode = \"date-time\"): DateFormatPreset {\n\treturn {\n\t\tname: mode === \"time\" ? TIME_INPUT_PRESET_NAME : DATE_TIME_INPUT_PRESET_NAME,\n\t\tpattern: getDateTimeInputFormat(mode),\n\t\tlocale: \"ru-RU\",\n\t\tinvalidFallback: \"\"\n\t};\n}\n\n/**\n * Нормализует внешнее значение к валидному Date без timezone-сдвига.\n */\nexport function normalizeDateTimeValue(value: Date | null | undefined, mode: DateTimeInputMode = \"date-time\"): Date | null {\n\tif (value == null) return null;\n\n\tconst parsedValue = parseDate(value);\n\tif (!parsedValue) return null;\n\n\tif (mode === \"time\") {\n\t\treturn createTimeOnlyBaseDate(parsedValue.getHours(), parsedValue.getMinutes());\n\t}\n\n\treturn parsedValue;\n}\n\n/**\n * Форматирует значение поля даты-времени в фиксированный пользовательский формат.\n */\nexport function formatDateTimeInputValue(value: Date | null | undefined, mode: DateTimeInputMode = \"date-time\"): string {\n\tif (!value) return \"\";\n\treturn formatDate(normalizeDateTimeValue(value, mode), createDateTimeInputPreset(mode));\n}\n\n/**\n * Строго парсит строку пользовательского ввода в Date.\n */\nexport function parseDateTimeInputValue(value: string, mode: DateTimeInputMode = \"date-time\"): Date | null {\n\tif (mode === \"time\") {\n\t\tconst match = /^\\d{2}:\\d{2}$/.exec(value.trim());\n\t\tif (!match) return null;\n\n\t\tconst values = dateToIndexedSegmentValues(createTimeOnlyBaseDate(), TIME_SEGMENTS);\n\t\tvalues.set(0, value.slice(0, 2));\n\t\tvalues.set(2, value.slice(3, 5));\n\n\t\treturn indexedSegmentsToDate(TIME_SEGMENTS, values, {\n\t\t\tdefaultDate: createTimeOnlyBaseDate()\n\t\t});\n\t}\n\n\tconst parsed = parseDateByPattern(value, DATE_TIME_INPUT_FORMAT);\n\tif (!parsed || parsed.kind !== \"date-time\") return null;\n\n\treturn parsed.date;\n}\n\n/**\n * Проверяет, попадает ли дата-время в допустимый диапазон.\n */\nexport function isDateTimeWithinRange(value: Date, minDate?: Date, maxDate?: Date, mode: DateTimeInputMode = \"date-time\"): boolean {\n\tconst normalizedValue = normalizeDateTimeValue(value, mode);\n\tif (!normalizedValue) return false;\n\n\tif (mode === \"time\") {\n\t\tconst valueMinutes = normalizedValue.getHours() * 60 + normalizedValue.getMinutes();\n\t\tconst normalizedMinDate = minDate ? normalizeDateTimeValue(minDate, \"time\") : null;\n\t\tconst normalizedMaxDate = maxDate ? normalizeDateTimeValue(maxDate, \"time\") : null;\n\n\t\tif (normalizedMinDate) {\n\t\t\tconst minMinutes = normalizedMinDate.getHours() * 60 + normalizedMinDate.getMinutes();\n\t\t\tif (valueMinutes < minMinutes) return false;\n\t\t}\n\n\t\tif (normalizedMaxDate) {\n\t\t\tconst maxMinutes = normalizedMaxDate.getHours() * 60 + normalizedMaxDate.getMinutes();\n\t\t\tif (valueMinutes > maxMinutes) return false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tif (minDate && normalizedValue < minDate) return false;\n\tif (maxDate && normalizedValue > maxDate) return false;\n\n\treturn true;\n}\n\n/**\n * Переносит дату выбранного дня, сохраняя часы и минуты базового значения.\n */\nexport function mergeDateWithTime(datePart: Date, timeSource?: Date | null): Date {\n\tconst source = normalizeDateTimeValue(timeSource);\n\tconst hours = source?.getHours() ?? 0;\n\tconst minutes = source?.getMinutes() ?? 0;\n\n\treturn createCalendarDate(datePart.getFullYear(), datePart.getMonth(), datePart.getDate(), hours, minutes, 0, 0);\n}\n\n/**\n * Переносит часы и минуты в базовую календарную дату.\n */\nexport function mergeTimeIntoDate(baseDate: Date, hours: number, minutes: number, mode: DateTimeInputMode = \"date-time\"): Date {\n\tif (mode === \"time\") {\n\t\treturn createTimeOnlyBaseDate(hours, minutes);\n\t}\n\n\treturn createCalendarDate(baseDate.getFullYear(), baseDate.getMonth(), baseDate.getDate(), hours, minutes, 0, 0);\n}\n\n/**\n * Создаёт рабочую дату для picker-сценариев без выбранного значения.\n */\nexport function resolvePickerBaseDate(value: Date | null | undefined, fallbackDate: Date, mode: DateTimeInputMode = \"date-time\"): Date {\n\tif (mode === \"time\") {\n\t\treturn normalizeDateTimeValue(value, \"time\") ?? createTimeOnlyBaseDate();\n\t}\n\n\treturn normalizeDateTimeValue(value, mode) ?? fallbackDate;\n}\n\n/**\n * Возвращает границы часов и минут для выбранного календарного дня.\n */\nexport function getTimeRangeForDay(\n\tday: Date,\n\tminDate?: Date,\n\tmaxDate?: Date,\n\tmode: DateTimeInputMode = \"date-time\"\n): {\n\tdisabled: boolean;\n\tminHour: number;\n\tmaxHour: number;\n\tminMinuteByHour: (hour: number) => number;\n\tmaxMinuteByHour: (hour: number) => number;\n} {\n\tconst normalizedDay = normalizeDateTimeValue(day, mode) ?? day;\n\tconst normalizedMinDate = minDate ? normalizeDateTimeValue(minDate, mode) : null;\n\tconst normalizedMaxDate = maxDate ? normalizeDateTimeValue(maxDate, mode) : null;\n\tconst isSameMinDay =\n\t\t!!normalizedMinDate &&\n\t\tnormalizedDay.getFullYear() === normalizedMinDate.getFullYear() &&\n\t\tnormalizedDay.getMonth() === normalizedMinDate.getMonth() &&\n\t\tnormalizedDay.getDate() === normalizedMinDate.getDate();\n\tconst isSameMaxDay =\n\t\t!!normalizedMaxDate &&\n\t\tnormalizedDay.getFullYear() === normalizedMaxDate.getFullYear() &&\n\t\tnormalizedDay.getMonth() === normalizedMaxDate.getMonth() &&\n\t\tnormalizedDay.getDate() === normalizedMaxDate.getDate();\n\n\tconst minHour = isSameMinDay ? normalizedMinDate!.getHours() : 0;\n\tconst maxHour = isSameMaxDay ? normalizedMaxDate!.getHours() : 23;\n\tconst minMinuteAtBoundary = isSameMinDay && minHour === maxHour ? normalizedMinDate!.getMinutes() : 0;\n\tconst maxMinuteAtBoundary = isSameMaxDay && minHour === maxHour ? normalizedMaxDate!.getMinutes() : 59;\n\tconst disabled = minHour > maxHour || (minHour === maxHour && minMinuteAtBoundary > maxMinuteAtBoundary);\n\n\treturn {\n\t\tdisabled,\n\t\tminHour,\n\t\tmaxHour,\n\t\tminMinuteByHour: (hour) => {\n\t\t\tif (disabled) return 0;\n\t\t\treturn isSameMinDay && hour === minHour ? normalizedMinDate!.getMinutes() : 0;\n\t\t},\n\t\tmaxMinuteByHour: (hour) => {\n\t\t\tif (disabled) return 59;\n\t\t\treturn isSameMaxDay && hour === maxHour ? normalizedMaxDate!.getMinutes() : 59;\n\t\t}\n\t};\n}\n\n/**\n * Ограничивает часы и минуты допустимым диапазоном текущего дня.\n */\nexport function clampTimeForDay(\n\tday: Date,\n\thours: number,\n\tminutes: number,\n\tminDate?: Date,\n\tmaxDate?: Date,\n\tmode: DateTimeInputMode = \"date-time\"\n): { hours: number; minutes: number } {\n\tconst range = getTimeRangeForDay(day, minDate, maxDate, mode);\n\tif (range.disabled) {\n\t\treturn { hours: 0, minutes: 0 };\n\t}\n\n\tconst clampedHour = Math.min(Math.max(hours, range.minHour), range.maxHour);\n\tconst minMinute = range.minMinuteByHour(clampedHour);\n\tconst maxMinute = range.maxMinuteByHour(clampedHour);\n\tconst clampedMinute = Math.min(Math.max(minutes, minMinute), maxMinute);\n\n\treturn {\n\t\thours: clampedHour,\n\t\tminutes: clampedMinute\n\t};\n}\n","import { getTimeRangeForDay } from \"./dateTimeValue\";\n\nimport type { DateTimeInputMode } from \"./dateTimeValue\";\n\n/**\n * Состояние и доступные значения для панели выбора времени.\n */\nexport interface TimePanelState {\n\tdisabled: boolean;\n\tselectedHour: number;\n\tselectedMinute: number;\n\thours: number[];\n\tminutes: number[];\n}\n\n/**\n * Собирает состояние часов и минут для панели выбора времени.\n */\nexport function buildTimePanelState(value: Date, minDate?: Date, maxDate?: Date, mode: DateTimeInputMode = \"date-time\"): TimePanelState {\n\tconst timeRange = getTimeRangeForDay(value, minDate, maxDate, mode);\n\tconst selectedHour = value.getHours();\n\tconst selectedMinute = value.getMinutes();\n\tconst minuteMin = timeRange.minMinuteByHour(selectedHour);\n\tconst minuteMax = timeRange.maxMinuteByHour(selectedHour);\n\n\tif (timeRange.disabled) {\n\t\treturn {\n\t\t\tdisabled: true,\n\t\t\tselectedHour,\n\t\t\tselectedMinute,\n\t\t\thours: [],\n\t\t\tminutes: []\n\t\t};\n\t}\n\n\treturn {\n\t\tdisabled: false,\n\t\tselectedHour,\n\t\tselectedMinute,\n\t\thours: Array.from({ length: timeRange.maxHour - timeRange.minHour + 1 }, (_, index) => timeRange.minHour + index),\n\t\tminutes: Array.from({ length: minuteMax - minuteMin + 1 }, (_, index) => minuteMin + index)\n\t};\n}\n",".timePanel {\n\theight: 100%;\n}\n\n.hint {\n\tfont-size: var(--font-size-xs);\n\tcolor: var(--content-1);\n}\n\n.fields {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, minmax(0, 1fr));\n\tgap: var(--space-sm);\n\tmin-height: 10em;\n\theight: 100%;\n}\n\n.field {\n\tdisplay: grid;\n\tgrid-template-rows: auto 1fr;\n\tgap: var(--space-xs);\n\tmin-height: 0;\n}\n\n.label {\n\t// font-size: var(--font-size-sm);\n\tcolor: var(--content-1);\n}\n\n.wheel {\n\tmin-height: 10em;\n}\n","import { WheelPicker } from \"../../wheel-picker\";\nimport { buildTimePanelState } from \"../lib/timePanelState\";\n\nimport styles from \"./TimePanel.module.scss\";\n\nimport type { DateTimeInputMode } from \"../lib\";\n\n/**\n * Пропсы панели выбора времени.\n */\nexport interface TimePanelProps {\n\tvalue: Date;\n\tdisabled?: boolean;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tmode?: DateTimeInputMode;\n\tonChange: (hours: number, minutes: number) => void;\n}\n\n/**\n * Переиспользуемая панель выбора времени поверх internal wheel-picker.\n */\nexport function TimePanel({ value, disabled, minDate, maxDate, mode = \"date-time\", onChange }: TimePanelProps) {\n\tconst state = buildTimePanelState(value, minDate, maxDate, mode);\n\n\t/**\n\t * Форматирует двузначное значение времени.\n\t */\n\tconst formatValue = (timePart: number) => String(timePart).padStart(2, \"0\");\n\n\tif (state.disabled) {\n\t\treturn (\n\t\t\t<div className={styles.timePanel}>\n\t\t\t\t<p className={styles.hint}>Для выбранного дня нет доступного времени в заданном диапазоне.</p>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={styles.timePanel}>\n\t\t\t<div className={styles.fields}>\n\t\t\t\t<label className={styles.field}>\n\t\t\t\t\t<span className={styles.label}>Часы</span>\n\t\t\t\t\t<WheelPicker\n\t\t\t\t\t\tclassName={styles.wheel}\n\t\t\t\t\t\titems={state.hours}\n\t\t\t\t\t\tvalue={state.selectedHour}\n\t\t\t\t\t\tonChange={(hours) => onChange(hours, state.selectedMinute)}\n\t\t\t\t\t\tariaLabel=\"Выбор часов\"\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tformatItem={formatValue}\n\t\t\t\t\t/>\n\t\t\t\t</label>\n\n\t\t\t\t<label className={styles.field}>\n\t\t\t\t\t<span className={styles.label}>Минуты</span>\n\t\t\t\t\t<WheelPicker\n\t\t\t\t\t\tclassName={styles.wheel}\n\t\t\t\t\t\titems={state.minutes}\n\t\t\t\t\t\tvalue={state.selectedMinute}\n\t\t\t\t\t\tonChange={(minutes) => onChange(state.selectedHour, minutes)}\n\t\t\t\t\t\tariaLabel=\"Выбор минут\"\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tformatItem={formatValue}\n\t\t\t\t\t/>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { t as e } from "./ui.module-BisoTevy.js";
2
+ import { cn as t } from "@ryuzaki13/react-foundation-lib/utils";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ import { useId as i } from "react";
5
+ var a = {
6
+ row: "FFyoOs",
7
+ wrapper: "zPYy7T",
8
+ input: "j6ek6R",
9
+ track: "HFTPXI",
10
+ thumb: "_0RK4xF",
11
+ unchecked: "kDPnKt",
12
+ checked: "DQHqws",
13
+ option: "nCQ9v4"
14
+ };
15
+ //#endregion
16
+ //#region src/toggle/Toggle.tsx
17
+ function o({ label: o, description: s, placeholder: c, disabled: l, size: u, className: d, onChange: f, value: p, id: m, checkedText: h = "ВКЛ", uncheckedText: g = "ВЫКЛ", labelPosition: _ = "before", ...v }) {
18
+ let y = i(), b = m ?? y, x = s ? `${b}-description` : void 0, S = o ?? c, C = !!p, w = !S && !v["aria-label"] ? `${g} / ${h}` : void 0, T = S ? /* @__PURE__ */ n("label", {
19
+ htmlFor: b,
20
+ className: e.uiLabel,
21
+ children: S
22
+ }) : null;
23
+ return /* @__PURE__ */ r("div", {
24
+ className: t(e.uiElement, l && e.disabled, u && e.uiSizable, u && e[u], d),
25
+ "aria-disabled": l || void 0,
26
+ children: [/* @__PURE__ */ r("div", {
27
+ className: a.row,
28
+ children: [
29
+ _ === "before" && T,
30
+ /* @__PURE__ */ r("div", {
31
+ className: a.wrapper,
32
+ children: [/* @__PURE__ */ n("input", {
33
+ ...v,
34
+ id: b,
35
+ type: "checkbox",
36
+ role: "switch",
37
+ checked: C,
38
+ disabled: l,
39
+ "aria-checked": C,
40
+ "aria-describedby": x,
41
+ "aria-label": w,
42
+ className: t(e.uiInputControl, a.input),
43
+ onChange: (e) => f?.(e.currentTarget.checked)
44
+ }), /* @__PURE__ */ r("div", {
45
+ className: a.track,
46
+ "data-disabled": l || void 0,
47
+ "aria-hidden": "true",
48
+ children: [
49
+ /* @__PURE__ */ n("div", { className: a.thumb }),
50
+ /* @__PURE__ */ n("div", {
51
+ className: t(a.option, a.unchecked),
52
+ children: g
53
+ }),
54
+ /* @__PURE__ */ n("div", {
55
+ className: t(a.option, a.checked),
56
+ children: h
57
+ })
58
+ ]
59
+ })]
60
+ }),
61
+ _ === "after" && T
62
+ ]
63
+ }), s && /* @__PURE__ */ n("p", {
64
+ id: x,
65
+ className: e.uiDescription,
66
+ children: s
67
+ })]
68
+ });
69
+ }
70
+ //#endregion
71
+ export { o as t };
72
+
73
+ //# sourceMappingURL=Toggle-C_fE-bkM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toggle-C_fE-bkM.js","names":[],"sources":["../../src/toggle/Toggle.module.scss","../../src/toggle/Toggle.tsx"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n\n.row {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-sm);\n}\n\n.wrapper {\n\tposition: relative;\n\tdisplay: flex;\n\tflex: 1 0 auto;\n\tmin-width: calc(var(--drp-ui-width-xs, var(--ui-width-xs)) - var(--width-add));\n}\n\n.input {\n\twidth: 100%;\n\tmargin: 0;\n\tpadding: 0;\n\tappearance: none;\n\tcursor: pointer;\n\n\t&:checked + .track {\n\t\t.thumb {\n\t\t\ttransform: translateX(100%);\n\t\t}\n\n\t\t.unchecked {\n\t\t\tcolor: var(--content-2);\n\t\t}\n\n\t\t.checked {\n\t\t\tcolor: var(--status-neutral-on-fill);\n\t\t}\n\t}\n\n\t&:focus-visible + .track {\n\t\t@include focusVisible;\n\t}\n}\n\n.track {\n\t.unchecked {\n\t\tcolor: var(--status-neutral-on-fill);\n\t}\n\n\t.checked {\n\t\tcolor: var(--content-2);\n\t}\n\n\tposition: absolute;\n\tinset: calc(var(--border-width) * 2);\n\tpointer-events: none;\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, minmax(0, 1fr));\n\talign-items: center;\n\tmin-width: 6.5em;\n\tpadding: 0;\n\toverflow: hidden;\n\n\t&[data-disabled] {\n\t\t.thumb {\n\t\t\topacity: var(--disabled-opacity);\n\t\t}\n\t}\n}\n\n.option {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 0 var(--space-sm);\n\tline-height: 1;\n\twhite-space: nowrap;\n\tuser-select: none;\n\tpointer-events: none;\n\tposition: relative;\n\tz-index: 1;\n\ttransition: color var(--transition-fast) linear;\n}\n\n.thumb {\n\tposition: absolute;\n\ttop: 0; // var(--border-width);\n\tleft: 0; //var(--border-width);\n\twidth: 50%; // calc(50% - var(--border-width));\n\theight: 100%; // calc(100% - var(--border-width) * 2);\n\tborder-radius: var(--radius-xs);\n\tbackground-color: var(--status-neutral-fill);\n\ttransition:\n\t\ttransform var(--transition-fast) ease-in-out,\n\t\topacity var(--transition-fast) ease-in-out;\n}\n","import React, { useId } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { UiBaseProps } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Toggle.module.scss\";\n\ntype ToggleLabelPosition = \"before\" | \"after\";\n\nexport interface ToggleProps\n\textends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"checked\" | \"value\" | \"onChange\" | \"type\">, UiBaseProps<boolean> {\n\tcheckedText?: string;\n\tuncheckedText?: string;\n\tlabelPosition?: ToggleLabelPosition;\n}\n\n/**\n * Переключаемая кнопка с сохранением активного состояния. Используется для локального выбора режима, фильтра или форматирования.\n */\nexport function Toggle({\n\tlabel,\n\tdescription,\n\tplaceholder,\n\tdisabled,\n\tsize,\n\tclassName,\n\tonChange,\n\tvalue,\n\tid: externalId,\n\tcheckedText = \"ВКЛ\",\n\tuncheckedText = \"ВЫКЛ\",\n\tlabelPosition = \"before\",\n\t...props\n}: ToggleProps) {\n\tconst autoId = useId();\n\tconst id = externalId ?? autoId;\n\tconst descriptionId = description ? `${id}-description` : undefined;\n\tconst text = label ?? placeholder;\n\tconst isChecked = Boolean(value);\n\tconst fallbackAriaLabel = !text && !props[\"aria-label\"] ? `${uncheckedText} / ${checkedText}` : undefined;\n\n\tconst labelElement = text ? (\n\t\t<label htmlFor={id} className={uiStyles.uiLabel}>\n\t\t\t{text}\n\t\t</label>\n\t) : null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(uiStyles.uiElement, disabled && uiStyles.disabled, size && uiStyles.uiSizable, size && uiStyles[size], className)}\n\t\t\taria-disabled={disabled || undefined}>\n\t\t\t<div className={styles.row}>\n\t\t\t\t{labelPosition === \"before\" && labelElement}\n\t\t\t\t<div className={styles.wrapper}>\n\t\t\t\t\t<input\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\trole=\"switch\"\n\t\t\t\t\t\tchecked={isChecked}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\taria-checked={isChecked}\n\t\t\t\t\t\taria-describedby={descriptionId}\n\t\t\t\t\t\taria-label={fallbackAriaLabel}\n\t\t\t\t\t\tclassName={cn(uiStyles.uiInputControl, styles.input)}\n\t\t\t\t\t\tonChange={(event) => onChange?.(event.currentTarget.checked)}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className={styles.track} data-disabled={disabled || undefined} aria-hidden=\"true\">\n\t\t\t\t\t\t<div className={styles.thumb} />\n\t\t\t\t\t\t<div className={cn(styles.option, styles.unchecked)}>{uncheckedText}</div>\n\t\t\t\t\t\t<div className={cn(styles.option, styles.checked)}>{checkedText}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{labelPosition === \"after\" && labelElement}\n\t\t\t</div>\n\t\t\t{description && (\n\t\t\t\t<p id={descriptionId} className={uiStyles.uiDescription}>\n\t\t\t\t\t{description}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;;;;;;;;;;ACqBA,SAAgB,EAAO,EACtB,UACA,gBACA,gBACA,aACA,SACA,cACA,aACA,UACA,IAAI,GACJ,iBAAc,OACd,mBAAgB,QAChB,mBAAgB,UAChB,GAAG,KACY;CACf,IAAM,IAAS,EAAM,GACf,IAAK,KAAc,GACnB,IAAgB,IAAc,GAAG,EAAG,gBAAgB,KAAA,GACpD,IAAO,KAAS,GAChB,IAAY,EAAQ,GACpB,IAAoB,CAAC,KAAQ,CAAC,EAAM,gBAAgB,GAAG,EAAc,KAAK,MAAgB,KAAA,GAE1F,IAAe,IACpB,kBAAC,SAAD;EAAO,SAAS;EAAI,WAAW,EAAS;YACtC;CACK,CAAA,IACJ;CAEJ,OACC,kBAAC,OAAD;EACC,WAAW,EAAG,EAAS,WAAW,KAAY,EAAS,UAAU,KAAQ,EAAS,WAAW,KAAQ,EAAS,IAAO,CAAS;EAC9H,iBAAe,KAAY,KAAA;YAF5B,CAGC,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB;IACE,MAAkB,YAAY;IAC/B,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB,CACC,kBAAC,SAAD;MACC,GAAI;MACA;MACJ,MAAK;MACL,MAAK;MACL,SAAS;MACC;MACV,gBAAc;MACd,oBAAkB;MAClB,cAAY;MACZ,WAAW,EAAG,EAAS,gBAAgB,EAAO,KAAK;MACnD,WAAW,MAAU,IAAW,EAAM,cAAc,OAAO;KAC3D,CAAA,GACD,kBAAC,OAAD;MAAK,WAAW,EAAO;MAAO,iBAAe,KAAY,KAAA;MAAW,eAAY;gBAAhF;OACC,kBAAC,OAAD,EAAK,WAAW,EAAO,MAAQ,CAAA;OAC/B,kBAAC,OAAD;QAAK,WAAW,EAAG,EAAO,QAAQ,EAAO,SAAS;kBAAI;OAAmB,CAAA;OACzE,kBAAC,OAAD;QAAK,WAAW,EAAG,EAAO,QAAQ,EAAO,OAAO;kBAAI;OAAiB,CAAA;MACjE;OACD;;IACJ,MAAkB,WAAW;GAC1B;MACJ,KACA,kBAAC,KAAD;GAAG,IAAI;GAAe,WAAW,EAAS;aACxC;EACC,CAAA,CAEA;;AAEP"}
@@ -0,0 +1,40 @@
1
+ import { a as e, i as t, n, r, t as i } from "./TreePickerBase-DYzTsSBQ.js";
2
+ import { jsx as a } from "react/jsx-runtime";
3
+ import { useMemo as o } from "react";
4
+ //#region src/tree-select/TreeMultiSelect.tsx
5
+ function s(e, t) {
6
+ if (e.size !== 0) {
7
+ if (e.size === 1) {
8
+ let n = t.nodeById.get([...e][0]);
9
+ return n ? n.code && n.code !== n.label ? `${n.label} · ${n.code}` : n.label : void 0;
10
+ }
11
+ return `Выбрано ${e.size} узл.`;
12
+ }
13
+ }
14
+ function c({ label: c, description: l, disabled: u, placeholder: d = "Выберите значения", size: f, nodes: p, value: m, onChange: h, query: g, defaultQuery: _, onQuery: v, isLoading: y, error: b }) {
15
+ let x = o(() => n(p), [p]), S = o(() => e(m, x), [x, m]), C = o(() => r(S, x), [S, x]), w = o(() => s(S, x), [S, x]);
16
+ return /* @__PURE__ */ a(i, {
17
+ label: c,
18
+ description: l,
19
+ disabled: u,
20
+ placeholder: d,
21
+ size: f,
22
+ nodes: p,
23
+ selectedIds: C.selectedIds,
24
+ partialIds: C.partialIds,
25
+ selectionMode: "multi",
26
+ triggerMode: "search",
27
+ selectedSummary: w,
28
+ query: g,
29
+ defaultQuery: _,
30
+ onQuery: v,
31
+ onNodeActivate: (e) => h(t(m, e.id, x)),
32
+ onClearSelection: () => h({}),
33
+ isLoading: y,
34
+ error: b
35
+ });
36
+ }
37
+ //#endregion
38
+ export { c as t };
39
+
40
+ //# sourceMappingURL=TreeMultiSelect-DRYNx7u5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeMultiSelect-DRYNx7u5.js","names":[],"sources":["../../src/tree-select/TreeMultiSelect.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport { UiBaseProps } from \"../types\";\n\nimport { createTreeNodeIndex, getTreeNodeSelectionState, toggleTreeMultiSelection, treeMultiValueToSelectedIds } from \"./model/treeUtils\";\nimport { TreePickerBase } from \"./TreePickerBase\";\nimport { TreeMultiSelectValue, TreeSelectNode } from \"./types\";\n\nexport interface TreeMultiSelectProps extends Omit<UiBaseProps<TreeMultiSelectValue>, \"placeholder\"> {\n\tnodes: readonly TreeSelectNode[];\n\tplaceholder?: string;\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tisLoading?: boolean;\n\terror?: string;\n}\n\nfunction formatTreeMultiSummary(selectedIds: Set<string>, treeIndex: ReturnType<typeof createTreeNodeIndex>) {\n\tif (selectedIds.size === 0) {\n\t\treturn undefined;\n\t}\n\n\tif (selectedIds.size === 1) {\n\t\tconst selectedNode = treeIndex.nodeById.get([...selectedIds][0]);\n\n\t\tif (!selectedNode) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (selectedNode.code && selectedNode.code !== selectedNode.label) {\n\t\t\treturn `${selectedNode.label} · ${selectedNode.code}`;\n\t\t}\n\n\t\treturn selectedNode.label;\n\t}\n\n\treturn `Выбрано ${selectedIds.size} узл.`;\n}\n\nexport function TreeMultiSelect({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tplaceholder = \"Выберите значения\",\n\tsize,\n\tnodes,\n\tvalue,\n\tonChange,\n\tquery,\n\tdefaultQuery,\n\tonQuery,\n\tisLoading,\n\terror\n}: TreeMultiSelectProps) {\n\tconst treeIndex = useMemo(() => createTreeNodeIndex(nodes), [nodes]);\n\tconst selectedIds = useMemo(() => treeMultiValueToSelectedIds(value, treeIndex), [treeIndex, value]);\n\tconst selectionState = useMemo(() => getTreeNodeSelectionState(selectedIds, treeIndex), [selectedIds, treeIndex]);\n\tconst selectedSummary = useMemo(() => formatTreeMultiSummary(selectedIds, treeIndex), [selectedIds, treeIndex]);\n\n\treturn (\n\t\t<TreePickerBase\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={placeholder}\n\t\t\tsize={size}\n\t\t\tnodes={nodes}\n\t\t\tselectedIds={selectionState.selectedIds}\n\t\t\tpartialIds={selectionState.partialIds}\n\t\t\tselectionMode=\"multi\"\n\t\t\ttriggerMode=\"search\"\n\t\t\tselectedSummary={selectedSummary}\n\t\t\tquery={query}\n\t\t\tdefaultQuery={defaultQuery}\n\t\t\tonQuery={onQuery}\n\t\t\tonNodeActivate={(node) => onChange(toggleTreeMultiSelection(value, node.id, treeIndex))}\n\t\t\tonClearSelection={() => onChange({})}\n\t\t\tisLoading={isLoading}\n\t\t\terror={error}\n\t\t/>\n\t);\n}\n"],"mappings":";;;;AAkBA,SAAS,EAAuB,GAA0B,GAAmD;CACxG,MAAY,SAAS,GAIzB;MAAI,EAAY,SAAS,GAAG;GAC3B,IAAM,IAAe,EAAU,SAAS,IAAI,CAAC,GAAG,CAAW,CAAC,CAAC,EAAE;GAU/D,OARK,IAID,EAAa,QAAQ,EAAa,SAAS,EAAa,QACpD,GAAG,EAAa,MAAM,KAAK,EAAa,SAGzC,EAAa,QAPnB;EAQF;EAEA,OAAO,WAAW,EAAY,KAAK;CAFnC;AAGD;AAEA,SAAgB,EAAgB,EAC/B,UACA,gBACA,aACA,iBAAc,qBACd,SACA,UACA,UACA,aACA,UACA,iBACA,YACA,cACA,YACwB;CACxB,IAAM,IAAY,QAAc,EAAoB,CAAK,GAAG,CAAC,CAAK,CAAC,GAC7D,IAAc,QAAc,EAA4B,GAAO,CAAS,GAAG,CAAC,GAAW,CAAK,CAAC,GAC7F,IAAiB,QAAc,EAA0B,GAAa,CAAS,GAAG,CAAC,GAAa,CAAS,CAAC,GAC1G,IAAkB,QAAc,EAAuB,GAAa,CAAS,GAAG,CAAC,GAAa,CAAS,CAAC;CAE9G,OACC,kBAAC,GAAD;EACQ;EACM;EACH;EACG;EACP;EACC;EACP,aAAa,EAAe;EAC5B,YAAY,EAAe;EAC3B,eAAc;EACd,aAAY;EACK;EACV;EACO;EACL;EACT,iBAAiB,MAAS,EAAS,EAAyB,GAAO,EAAK,IAAI,CAAS,CAAC;EACtF,wBAAwB,EAAS,CAAC,CAAC;EACxB;EACJ;CACP,CAAA;AAEH"}