@ryuzaki13/react-foundation-ui 3.10.1 → 3.12.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 (355) hide show
  1. package/README.md +11 -0
  2. package/dist/chunks/{TextEditorLexicalClient-Cj6yjCGm.js → TextEditorLexicalClient-apy-Cugj.js} +101 -101
  3. package/dist/chunks/{TextEditorLexicalClient-Cj6yjCGm.js.map → TextEditorLexicalClient-apy-Cugj.js.map} +1 -1
  4. package/dist/floating-windows/FloatingWindow.d.ts +19 -0
  5. package/dist/floating-windows/FloatingWindow.d.ts.map +1 -0
  6. package/dist/floating-windows/FloatingWindowHeader.d.ts +14 -0
  7. package/dist/floating-windows/FloatingWindowHeader.d.ts.map +1 -0
  8. package/dist/floating-windows/FloatingWindows.d.ts +16 -0
  9. package/dist/floating-windows/FloatingWindows.d.ts.map +1 -0
  10. package/dist/floating-windows/FloatingWindowsBoundary.d.ts +10 -0
  11. package/dist/floating-windows/FloatingWindowsBoundary.d.ts.map +1 -0
  12. package/dist/floating-windows/FloatingWindowsProvider.d.ts +11 -0
  13. package/dist/floating-windows/FloatingWindowsProvider.d.ts.map +1 -0
  14. package/dist/floating-windows/index.d.ts +4 -0
  15. package/dist/floating-windows/index.d.ts.map +1 -0
  16. package/dist/floating-windows/index.js +576 -0
  17. package/dist/floating-windows/index.js.map +1 -0
  18. package/dist/floating-windows/lib/constrainFloatingWindowPosition.d.ts +8 -0
  19. package/dist/floating-windows/lib/constrainFloatingWindowPosition.d.ts.map +1 -0
  20. package/dist/floating-windows/lib/floatingWindowsStorage.d.ts +10 -0
  21. package/dist/floating-windows/lib/floatingWindowsStorage.d.ts.map +1 -0
  22. package/dist/floating-windows/lib/getFloatingWindowStyle.d.ts +5 -0
  23. package/dist/floating-windows/lib/getFloatingWindowStyle.d.ts.map +1 -0
  24. package/dist/floating-windows/lib/isFloatingWindowId.d.ts +3 -0
  25. package/dist/floating-windows/lib/isFloatingWindowId.d.ts.map +1 -0
  26. package/dist/floating-windows/lib/selectFloatingWindowCascadePosition.d.ts +8 -0
  27. package/dist/floating-windows/lib/selectFloatingWindowCascadePosition.d.ts.map +1 -0
  28. package/dist/floating-windows/lib/selectFloatingWindowRestoreFocus.d.ts +3 -0
  29. package/dist/floating-windows/lib/selectFloatingWindowRestoreFocus.d.ts.map +1 -0
  30. package/dist/floating-windows/model/FloatingWindowsContext.d.ts +4 -0
  31. package/dist/floating-windows/model/FloatingWindowsContext.d.ts.map +1 -0
  32. package/dist/floating-windows/model/createFloatingWindowsStore.d.ts +8 -0
  33. package/dist/floating-windows/model/createFloatingWindowsStore.d.ts.map +1 -0
  34. package/dist/floating-windows/model/floatingWindowMoveTypes.d.ts +27 -0
  35. package/dist/floating-windows/model/floatingWindowMoveTypes.d.ts.map +1 -0
  36. package/dist/floating-windows/model/floatingWindowsTypes.d.ts +40 -0
  37. package/dist/floating-windows/model/floatingWindowsTypes.d.ts.map +1 -0
  38. package/dist/floating-windows/model/useFloatingWindowFocus.d.ts +4 -0
  39. package/dist/floating-windows/model/useFloatingWindowFocus.d.ts.map +1 -0
  40. package/dist/floating-windows/model/useFloatingWindowMeasurements.d.ts +5 -0
  41. package/dist/floating-windows/model/useFloatingWindowMeasurements.d.ts.map +1 -0
  42. package/dist/floating-windows/model/useFloatingWindowMove.d.ts +4 -0
  43. package/dist/floating-windows/model/useFloatingWindowMove.d.ts.map +1 -0
  44. package/dist/floating-windows/model/useFloatingWindowSnapshot.d.ts +4 -0
  45. package/dist/floating-windows/model/useFloatingWindowSnapshot.d.ts.map +1 -0
  46. package/dist/floating-windows/model/useFloatingWindowsBounds.d.ts +4 -0
  47. package/dist/floating-windows/model/useFloatingWindowsBounds.d.ts.map +1 -0
  48. package/dist/floating-windows/model/useFloatingWindowsPersistence.d.ts +4 -0
  49. package/dist/floating-windows/model/useFloatingWindowsPersistence.d.ts.map +1 -0
  50. package/dist/floating-windows/model/useFloatingWindowsStore.d.ts +4 -0
  51. package/dist/floating-windows/model/useFloatingWindowsStore.d.ts.map +1 -0
  52. package/dist/notifications/index.js +9 -9
  53. package/dist/styles.css +1 -1
  54. package/dist/text-editor/TextEditorLexicalViewer.d.ts +10 -0
  55. package/dist/text-editor/TextEditorLexicalViewer.d.ts.map +1 -0
  56. package/dist/text-editor/index.d.ts +1 -0
  57. package/dist/text-editor/index.d.ts.map +1 -1
  58. package/dist/text-editor/index.js +298 -7
  59. package/dist/text-editor/index.js.map +1 -1
  60. package/dist/text-editor/lib/viewer/getTextEditorViewerElementStyle.d.ts +5 -0
  61. package/dist/text-editor/lib/viewer/getTextEditorViewerElementStyle.d.ts.map +1 -0
  62. package/dist/text-editor/lib/viewer/parseTextEditorViewerDocument.d.ts +4 -0
  63. package/dist/text-editor/lib/viewer/parseTextEditorViewerDocument.d.ts.map +1 -0
  64. package/dist/text-editor/lib/viewer/resolveTextEditorViewerLink.d.ts +3 -0
  65. package/dist/text-editor/lib/viewer/resolveTextEditorViewerLink.d.ts.map +1 -0
  66. package/dist/text-editor/model/textEditorViewerTypes.d.ts +58 -0
  67. package/dist/text-editor/model/textEditorViewerTypes.d.ts.map +1 -0
  68. package/dist/text-editor/ui/viewer/TextEditorViewerNode.d.ts +7 -0
  69. package/dist/text-editor/ui/viewer/TextEditorViewerNode.d.ts.map +1 -0
  70. package/dist/text-editor/ui/viewer/TextEditorViewerText.d.ts +8 -0
  71. package/dist/text-editor/ui/viewer/TextEditorViewerText.d.ts.map +1 -0
  72. package/package.json +5 -1
  73. package/storybook-static/assets/{Badge-7nsS5Yyj.js → Badge-Dn4r-dgK.js} +1 -1
  74. package/storybook-static/assets/{Badge.stories-BzQKeDqC.js → Badge.stories-C8jgD6Tm.js} +1 -1
  75. package/storybook-static/assets/{BadgeList-WzFV9MB1.js → BadgeList-DoZGQ7qG.js} +1 -1
  76. package/storybook-static/assets/{BarcodeScannerDialog.stories-Ci8Mf9WX.js → BarcodeScannerDialog.stories-SWsYyoae.js} +1 -1
  77. package/storybook-static/assets/{Button-DqsSng-I.js → Button-BHqigqOj.js} +1 -1
  78. package/storybook-static/assets/{Button-6F3OVyTc.js → Button-DLYgesJU.js} +1 -1
  79. package/storybook-static/assets/{Button.stories-PNc3lIYB.js → Button.stories-B-YCCpsv.js} +1 -1
  80. package/storybook-static/assets/{CalendarView-BT9X9tky.js → CalendarView-DC9-KqBg.js} +1 -1
  81. package/storybook-static/assets/{CheckBox-BJhTyl1K.js → CheckBox-A1DE9OKH.js} +1 -1
  82. package/storybook-static/assets/{CheckBox-BasxUZYS.js → CheckBox-BhDEikPn.js} +1 -1
  83. package/storybook-static/assets/{CheckBox.stories-DLRA5q3H.js → CheckBox.stories-CCwPabOj.js} +1 -1
  84. package/storybook-static/assets/Color-6AOWCN3U-CZ7Lqth4.js +1 -0
  85. package/storybook-static/assets/{ContextMenu-BckwURZg.js → ContextMenu-C7QDzxj5.js} +1 -1
  86. package/storybook-static/assets/{ContextMenu-OOsbvmOa.js → ContextMenu-snDFBA5B.js} +1 -1
  87. package/storybook-static/assets/{ContextMenu.stories-BD-wMDNw.js → ContextMenu.stories-DmQHbLWt.js} +1 -1
  88. package/storybook-static/assets/{DateInput-DT6btAWU.js → DateInput-BkVJLdmV.js} +1 -1
  89. package/storybook-static/assets/{DateInput-B5MxQUHL.js → DateInput-DLOTW8zG.js} +1 -1
  90. package/storybook-static/assets/{DateInput.stories-BK2brwe_.js → DateInput.stories-DNMVE7-m.js} +1 -1
  91. package/storybook-static/assets/{DateRangePresetSelect-gRdIuTx9.js → DateRangePresetSelect-Aswl3yfO.js} +1 -1
  92. package/storybook-static/assets/{DateRangePresetSelect-Dplr79Cm.js → DateRangePresetSelect-FZ5Wqp5Q.js} +1 -1
  93. package/storybook-static/assets/{DateRangePresetSelect.stories-BRksGdxw.js → DateRangePresetSelect.stories-D7j1ye-X.js} +1 -1
  94. package/storybook-static/assets/{DeprecatedMultiSelect-1MSPac-V.js → DeprecatedMultiSelect-BrU5iHiB.js} +1 -1
  95. package/storybook-static/assets/{DeprecatedMultiSelect-BOxmEW2D.js → DeprecatedMultiSelect-DZm42dZe.js} +1 -1
  96. package/storybook-static/assets/{DeprecatedMultiSelect.stories-Ax0zv6Kb.js → DeprecatedMultiSelect.stories-DX5gJVg8.js} +1 -1
  97. package/storybook-static/assets/{Detail-_5TyqOha.js → Detail-Dm2OB35c.js} +1 -1
  98. package/storybook-static/assets/{Detail.stories-CJbeEBiY.js → Detail.stories-ChjIDw9R.js} +1 -1
  99. package/storybook-static/assets/{Dialog-HBOYhMQq.js → Dialog-5Bjs3MIP.js} +1 -1
  100. package/storybook-static/assets/{Dialog-BodfEiIi.js → Dialog-CppiFu4m.js} +1 -1
  101. package/storybook-static/assets/{Dialog.stories-Ds4F0ZoJ.js → Dialog.stories-DNKVgKJf.js} +1 -1
  102. package/storybook-static/assets/{Disclosure-BbvtIOyN.js → Disclosure-B_rE1zlW.js} +1 -1
  103. package/storybook-static/assets/{Disclosure.stories-CnSK79hZ.js → Disclosure.stories-ATxKR5IU.js} +1 -1
  104. package/storybook-static/assets/{DisclosureGroup-Dd0BeL4o.js → DisclosureGroup-ClweT22a.js} +1 -1
  105. package/storybook-static/assets/{DocsRenderer-JROSPFPF-BX-ThlFg.js → DocsRenderer-JROSPFPF-m7QPTTWT.js} +1 -1
  106. package/storybook-static/assets/{DropZone-DPqYieZH.js → DropZone-C6Qx5YnY.js} +1 -1
  107. package/storybook-static/assets/{DropZone-CCkHaYAD.js → DropZone-CEnjaRlb.js} +1 -1
  108. package/storybook-static/assets/{DropZone.stories-lfKkNIIl.js → DropZone.stories-8b7TFwCV.js} +1 -1
  109. package/storybook-static/assets/{DropdownMenu-QWp-lSol.js → DropdownMenu-BvqYqsyj.js} +1 -1
  110. package/storybook-static/assets/{ExpandableActionPanel-DxPp3zYd.js → ExpandableActionPanel-DfZA1lTx.js} +1 -1
  111. package/storybook-static/assets/{ExpandableActionPanel.stories-BiklI55p.js → ExpandableActionPanel.stories-Bq2XMot-.js} +1 -1
  112. package/storybook-static/assets/{Flex-S4mwRnc2.js → Flex-BFGhhseF.js} +1 -1
  113. package/storybook-static/assets/{Flex.stories-DRBLrgrW.js → Flex.stories-Ct2TXMNG.js} +1 -1
  114. package/storybook-static/assets/{FlexContainer-4Ap7vbIt.js → FlexContainer-DNTMFsKB.js} +1 -1
  115. package/storybook-static/assets/{FlexItem-Dwqi7KeT.js → FlexItem-DdZg96Tw.js} +1 -1
  116. package/storybook-static/assets/{FloatingPopover-D8FScEoc.js → FloatingPopover-Qm2OYQyi.js} +1 -1
  117. package/storybook-static/assets/FloatingWindows-C2FJO6ij.css +1 -0
  118. package/storybook-static/assets/FloatingWindows.stories-DSXleet4.js +13 -0
  119. package/storybook-static/assets/FormattedTableCell-Cfdl2sgg.js +15 -0
  120. package/storybook-static/assets/{Grid-CJ5RLrgv.js → Grid-DF06uQ48.js} +1 -1
  121. package/storybook-static/assets/{Grid-DIYjEdUA.js → Grid-DlctIqYo.js} +1 -1
  122. package/storybook-static/assets/{Grid.stories-Bl35lMkU.js → Grid.stories-CqMEpZ8C.js} +1 -1
  123. package/storybook-static/assets/{GridContainer-B2iAnXeB.js → GridContainer-BlkGC1Ti.js} +1 -1
  124. package/storybook-static/assets/{ImageCropper.stories--E79MUTS.js → ImageCropper.stories-GlDzLRHa.js} +1 -1
  125. package/storybook-static/assets/{ImageRenderer-D0stahXz.js → ImageRenderer-DKVKzwts.js} +1 -1
  126. package/storybook-static/assets/{ImageRenderer.stories-C_Ir6A3m.js → ImageRenderer.stories-D5Ot_LFG.js} +1 -1
  127. package/storybook-static/assets/{ImageView.stories-DbY7pwWs.js → ImageView.stories-t9WED3jc.js} +1 -1
  128. package/storybook-static/assets/{ImageViewer.stories-D2jfTzCV.js → ImageViewer.stories-CTLSla9v.js} +2 -2
  129. package/storybook-static/assets/{ImageViewerRuntime-DlvGnNv4.js → ImageViewerRuntime-B0a-Sycn.js} +1 -1
  130. package/storybook-static/assets/{Input-CzvWPW0I.js → Input-C-RwifM5.js} +1 -1
  131. package/storybook-static/assets/{Input-av5ktymr.js → Input-L7KSl95J.js} +1 -1
  132. package/storybook-static/assets/{Input.stories-CvLnu270.js → Input.stories-RZ8DST5q.js} +1 -1
  133. package/storybook-static/assets/{InputDateTime-D5bQuB9a.js → InputDateTime-C3SMAFaX.js} +1 -1
  134. package/storybook-static/assets/{InputDateTime.stories-BD9Pt7vB.js → InputDateTime.stories-Bo76yqgM.js} +1 -1
  135. package/storybook-static/assets/{InputFile-ulrG6ECh.js → InputFile-ByiVAcXi.js} +1 -1
  136. package/storybook-static/assets/{InputFile-C3nj3qsi.js → InputFile-DeMKgRCz.js} +1 -1
  137. package/storybook-static/assets/{InputFile.stories-CEewSWb_.js → InputFile.stories-C2xolZZp.js} +1 -1
  138. package/storybook-static/assets/{InputFiles-DZ1nUYOE.js → InputFiles-D2X5XwMg.js} +1 -1
  139. package/storybook-static/assets/{InputFiles-lF7Ys1hh.js → InputFiles-DW_A7HZQ.js} +1 -1
  140. package/storybook-static/assets/{InputFiles.stories-CCptKLDn.js → InputFiles.stories-Cy4lGiDs.js} +1 -1
  141. package/storybook-static/assets/{InputFilesList-DTJkMHNI.js → InputFilesList-D-T9k_qj.js} +1 -1
  142. package/storybook-static/assets/{InputImage-lDHbW_ac.js → InputImage-COyE-G8n.js} +1 -1
  143. package/storybook-static/assets/{InputImage-CIPZL6uS.js → InputImage-VviyVqWs.js} +1 -1
  144. package/storybook-static/assets/{InputImage.stories-CQ2BBGf-.js → InputImage.stories-C7PZBPak.js} +1 -1
  145. package/storybook-static/assets/{InteractiveComponents-DD7TZeA4.js → InteractiveComponents-DsXWc2Ba.js} +1 -1
  146. package/storybook-static/assets/{InteractiveComponents.stories-Bbo3l8WO.js → InteractiveComponents.stories-xzIOC6VP.js} +1 -1
  147. package/storybook-static/assets/{LayoutPicker-uw1knHzA.js → LayoutPicker-CEe3rtKw.js} +1 -1
  148. package/storybook-static/assets/{LayoutPicker-A7VlDbc0.js → LayoutPicker-DqauomnH.js} +1 -1
  149. package/storybook-static/assets/{LayoutPicker.stories-DDR6oiSN.js → LayoutPicker.stories-DZS4nX4W.js} +1 -1
  150. package/storybook-static/assets/{Listbox-CmkI7dm_.js → Listbox-DMBqQzvF.js} +1 -1
  151. package/storybook-static/assets/{Listbox-CO1BjyFs.js → Listbox-DcoYj_fu.js} +1 -1
  152. package/storybook-static/assets/{Listbox.stories-BIPmBbuG.js → Listbox.stories-CiEKNklg.js} +1 -1
  153. package/storybook-static/assets/{Modal-C3JdXj6Q.js → Modal-B2NdQSX-.js} +1 -1
  154. package/storybook-static/assets/{Modal-IXMZUaaw.js → Modal-XzWN4rYg.js} +1 -1
  155. package/storybook-static/assets/{Modal.stories-BD-UnVeM.js → Modal.stories-DiO0SJb6.js} +1 -1
  156. package/storybook-static/assets/{ModalManagerProvider-zJVg8-dg.js → ModalManagerProvider-CXZWFJBk.js} +1 -1
  157. package/storybook-static/assets/{MultiSelect-DZKjK53B.js → MultiSelect-Bdo1Sjz8.js} +1 -1
  158. package/storybook-static/assets/{MultiSelect-CGoyA8-m.js → MultiSelect-CIrw0Nez.js} +1 -1
  159. package/storybook-static/assets/{MultiSelect.stories-D65mpYYt.js → MultiSelect.stories-DsYsvZRr.js} +1 -1
  160. package/storybook-static/assets/{MultiSelectCore-ih1pgvuq.js → MultiSelectCore-DVlr9xCh.js} +1 -1
  161. package/storybook-static/assets/{NoData-32gM9qt4.js → NoData-D0rf5MW3.js} +1 -1
  162. package/storybook-static/assets/{NotificationsHost-pkEhxgz2.js → NotificationsHost-BQZaAM-V.js} +9 -9
  163. package/storybook-static/assets/{NotificationsHost.stories-BqIayryx.js → NotificationsHost.stories-DwymJZby.js} +1 -1
  164. package/storybook-static/assets/{ODataMultiSelect-D42gAcHg.js → ODataMultiSelect-DMSWI6tE.js} +1 -1
  165. package/storybook-static/assets/{ODataMultiSelect.stories-DfAkKAsG.js → ODataMultiSelect.stories-B3zztIBx.js} +2 -2
  166. package/storybook-static/assets/{ODataSelect-DPOMWPKO.js → ODataSelect-C7HWF4Mk.js} +1 -1
  167. package/storybook-static/assets/{ODataSelect.stories-DHs3wp7E.js → ODataSelect.stories-BTqluN2n.js} +2 -2
  168. package/storybook-static/assets/{ODataTreeMultiSelect-CC8yuaVP.js → ODataTreeMultiSelect-D1C46tO1.js} +1 -1
  169. package/storybook-static/assets/{ODataTreeMultiSelect.stories-BtwLdGK6.js → ODataTreeMultiSelect.stories-Cau6yuzj.js} +1 -1
  170. package/storybook-static/assets/{ODataTreeSelect-qcitpYxj.js → ODataTreeSelect-DjieOI9n.js} +1 -1
  171. package/storybook-static/assets/{ODataTreeSelect.stories-1r_tkUVi.js → ODataTreeSelect.stories-C2QXdt7d.js} +1 -1
  172. package/storybook-static/assets/{OneStepScroller-wz4Qujpx.js → OneStepScroller-srOmxRQp.js} +1 -1
  173. package/storybook-static/assets/{Option-Beom2xTg.js → Option-7XzYAa1X.js} +1 -1
  174. package/storybook-static/assets/{OptionButton-D_ZCVbsd.js → OptionButton-De2RG5bE.js} +1 -1
  175. package/storybook-static/assets/{OptionContent-FZ-u9L1s.js → OptionContent-J_mD8o8Q.js} +1 -1
  176. package/storybook-static/assets/{OptionContentContainer-HVNOgpjm.js → OptionContentContainer-BMe8XiaH.js} +1 -1
  177. package/storybook-static/assets/{PeriodSelect-qevVtoSU.js → PeriodSelect-BanQI_dT.js} +1 -1
  178. package/storybook-static/assets/{PeriodSelect-DbdeznMQ.js → PeriodSelect-DffdZHTx.js} +1 -1
  179. package/storybook-static/assets/{PeriodSelect.stories-BLi_6rpY.js → PeriodSelect.stories-D_mZIvPa.js} +1 -1
  180. package/storybook-static/assets/{PickerField-BHSRcQY6.js → PickerField-BiRCrEVk.js} +1 -1
  181. package/storybook-static/assets/{PickerTriggerActions-Cxk3YQGF.js → PickerTriggerActions-SYQofxvL.js} +1 -1
  182. package/storybook-static/assets/{Popover-BosMVXTI.js → Popover-CyFO9TsF.js} +1 -1
  183. package/storybook-static/assets/{Popover-De2fvkIB.js → Popover-DVLKhPpI.js} +1 -1
  184. package/storybook-static/assets/{Popover.stories-DM-Plj05.js → Popover.stories-z-_6ttYX.js} +1 -1
  185. package/storybook-static/assets/{PresetRangeDateInput-jersOEYO.js → PresetRangeDateInput-CNwYUovX.js} +1 -1
  186. package/storybook-static/assets/{PresetRangeDateInput-CCQuBkJj.js → PresetRangeDateInput-DusPRYOo.js} +1 -1
  187. package/storybook-static/assets/{PresetRangeDateInput.stories-DwqDWXX9.js → PresetRangeDateInput.stories-C_o_VW2j.js} +1 -1
  188. package/storybook-static/assets/{PresetSelect-BhwHbWmS.js → PresetSelect-CV3zwYQR.js} +1 -1
  189. package/storybook-static/assets/{README-LWfExOhc.js → README-0xXSqDp8.js} +1 -1
  190. package/storybook-static/assets/{README-DmJq-c8n.js → README-2-1qM_na.js} +1 -1
  191. package/storybook-static/assets/{README-B5eMX8_9.js → README-4aHWePja.js} +1 -1
  192. package/storybook-static/assets/{README-DzASMBMv.js → README-7eESTN29.js} +1 -1
  193. package/storybook-static/assets/{README-BzVVPLXk.js → README-B5zjJGVN.js} +1 -1
  194. package/storybook-static/assets/{README-DQl_3tX1.js → README-BG0ZHFMO.js} +1 -1
  195. package/storybook-static/assets/{README-ECCgQcGo.js → README-BJ0oZ6IK.js} +1 -1
  196. package/storybook-static/assets/{README-DT96eoyc.js → README-BaVIhvx2.js} +1 -1
  197. package/storybook-static/assets/{README-1UUrJXjZ.js → README-BdSEAONV.js} +1 -1
  198. package/storybook-static/assets/{README-D_d6frx1.js → README-BgG12pti.js} +1 -1
  199. package/storybook-static/assets/{README-CioPc-xb.js → README-BggXgUKF.js} +1 -1
  200. package/storybook-static/assets/{README-DK5aZdOt.js → README-BjBW3_iS.js} +1 -1
  201. package/storybook-static/assets/{README-DKI2c8YJ.js → README-Bjq-bxH1.js} +1 -1
  202. package/storybook-static/assets/{README-o4PUljT6.js → README-BmcSs4kj.js} +1 -1
  203. package/storybook-static/assets/{README-BPSG9KrB.js → README-Bn7kAPLQ.js} +1 -1
  204. package/storybook-static/assets/{README-bWB0c7pN.js → README-BoQbGA96.js} +1 -1
  205. package/storybook-static/assets/{README-CrhHHw0i.js → README-BwUFmp9h.js} +1 -1
  206. package/storybook-static/assets/{README-CPZBUXWs.js → README-BwvDtGJp.js} +1 -1
  207. package/storybook-static/assets/{README-DeHGaTaW.js → README-BxC_3EeL.js} +1 -1
  208. package/storybook-static/assets/{README-CvReVgGJ.js → README-C-U-dI9P.js} +1 -1
  209. package/storybook-static/assets/{README-D5YLxtgR.js → README-C-e2RqTI.js} +1 -1
  210. package/storybook-static/assets/{README-D09okhy9.js → README-C3-4o6yH.js} +1 -1
  211. package/storybook-static/assets/{README-BNsU3Cqx.js → README-CFpsye1R.js} +1 -1
  212. package/storybook-static/assets/{README-BK8k_Q4m.js → README-CJG1QnZ8.js} +1 -1
  213. package/storybook-static/assets/{README-BD5f1if4.js → README-Cc67rRzO.js} +1 -1
  214. package/storybook-static/assets/{README-BQDFmWGi.js → README-CgHkf8AZ.js} +1 -1
  215. package/storybook-static/assets/{README-DzrrH56m.js → README-CjwjADv4.js} +1 -1
  216. package/storybook-static/assets/{README-CvzdarfH.js → README-CtA0tP_V.js} +1 -1
  217. package/storybook-static/assets/{README-CmzO6bzh.js → README-D0SwEPQG.js} +1 -1
  218. package/storybook-static/assets/{README-sPm51M3K.js → README-D0eHrEQF.js} +1 -1
  219. package/storybook-static/assets/{README-Rk3Krdys.js → README-D8bNkmba.js} +1 -1
  220. package/storybook-static/assets/{README-Cpk-Tr_W.js → README-DCP4ywXT.js} +1 -1
  221. package/storybook-static/assets/{README-CJ6rsYUk.js → README-DEHjbK77.js} +1 -1
  222. package/storybook-static/assets/{README-DNeDK1_H.js → README-DHXjeQQR.js} +1 -1
  223. package/storybook-static/assets/{README-Df8F75dr.js → README-DJsEoOXI.js} +1 -1
  224. package/storybook-static/assets/{README-BCEKAY_J.js → README-DWfKideq.js} +1 -1
  225. package/storybook-static/assets/{README-29WDFTDH.js → README-DZD6wqGT.js} +1 -1
  226. package/storybook-static/assets/{README-CJFgcV8C.js → README-D_V-SEnq.js} +1 -1
  227. package/storybook-static/assets/{README-By0zyJQ-.js → README-DkEysBXh.js} +1 -1
  228. package/storybook-static/assets/{README-33qTnj5l.js → README-DuB9PiOM.js} +1 -1
  229. package/storybook-static/assets/{README-BIvHy4kr.js → README-Duk1AG16.js} +1 -1
  230. package/storybook-static/assets/{README-BKLeD4y3.js → README-DwC2gAZg.js} +1 -1
  231. package/storybook-static/assets/{README-Cz14JUTC.js → README-MX6_MwDQ.js} +1 -1
  232. package/storybook-static/assets/{README-Dc2qBccm.js → README-TaumiOmj.js} +1 -1
  233. package/storybook-static/assets/{README-B_tg7QVI.js → README-_ysKMvAx.js} +1 -1
  234. package/storybook-static/assets/{README-BAlXRtAz.js → README-b_q7W3j3.js} +1 -1
  235. package/storybook-static/assets/{README-B5rmNIab.js → README-gE_kxplo.js} +1 -1
  236. package/storybook-static/assets/{README-DS63ZnOT.js → README-gjTa9tZ_.js} +1 -1
  237. package/storybook-static/assets/{README-NHHRscRF.js → README-p62MFS5g.js} +1 -1
  238. package/storybook-static/assets/{README-CHllxFPj.js → README-swRdnv1f.js} +1 -1
  239. package/storybook-static/assets/{README-BfRKdJtw.js → README-x--9qFul.js} +1 -1
  240. package/storybook-static/assets/{README-O9BJmE-H.js → README-xDqMMO8-.js} +1 -1
  241. package/storybook-static/assets/{README-BoJXfTe6.js → README-xWo3G40o.js} +1 -1
  242. package/storybook-static/assets/{RadioButton-BZiBFXe1.js → RadioButton-B6x2_7or.js} +1 -1
  243. package/storybook-static/assets/{RadioButton-CBLdgMz4.js → RadioButton-CBABLSvE.js} +1 -1
  244. package/storybook-static/assets/{RadioButton.stories-BP5yM5qg.js → RadioButton.stories-DLd7EmuZ.js} +1 -1
  245. package/storybook-static/assets/{RadioGroup-DYRfZVGC.js → RadioGroup-CIaXj3zQ.js} +1 -1
  246. package/storybook-static/assets/{RadioGroup-epjQdSZn.js → RadioGroup-Ce5Irxz3.js} +1 -1
  247. package/storybook-static/assets/{RadioGroup.stories-UOjXIk6v.js → RadioGroup.stories-DKhMElyC.js} +1 -1
  248. package/storybook-static/assets/{ResponsiveLayoutPreview-BHBxtn2W.js → ResponsiveLayoutPreview-Bcojizl4.js} +1 -1
  249. package/storybook-static/assets/{Scrollable-DKQa75cf.js → Scrollable-B5e-IEe8.js} +1 -1
  250. package/storybook-static/assets/{Scrollable-BBYov1Hn.js → Scrollable-BfCUp0BO.js} +1 -1
  251. package/storybook-static/assets/{Scrollable.stories-BH1-i6nI.js → Scrollable.stories-B4IMoipT.js} +1 -1
  252. package/storybook-static/assets/{Select-DU6Eh0Lt.js → Select-CdjYSSyG.js} +1 -1
  253. package/storybook-static/assets/{Select-DYOCTPiv.js → Select-DYHUwcLE.js} +1 -1
  254. package/storybook-static/assets/{Select.stories-BF3svbAH.js → Select.stories-BuaXB6qE.js} +1 -1
  255. package/storybook-static/assets/{Separator-_gvt1sqm.js → Separator-CS6gkWSA.js} +1 -1
  256. package/storybook-static/assets/{Separator-CxviJxG5.js → Separator-D45blL6r.js} +1 -1
  257. package/storybook-static/assets/{Separator.stories-DN6hlZl5.js → Separator.stories-C2GzCEGW.js} +1 -1
  258. package/storybook-static/assets/{SerializableSelect-BVTOrYLs.js → SerializableSelect-7raamiuG.js} +1 -1
  259. package/storybook-static/assets/{SerializableSelect.stories-pcWq603M.js → SerializableSelect.stories-CD0e6DQk.js} +1 -1
  260. package/storybook-static/assets/{ShimmerText-BDDa_Wf7.js → ShimmerText-DkiewbBe.js} +1 -1
  261. package/storybook-static/assets/{ShimmerText.stories-DdZPIKwl.js → ShimmerText.stories-DrXMcGDO.js} +1 -1
  262. package/storybook-static/assets/{SingleDateTimeInput-q-eu2xUU.js → SingleDateTimeInput-BTIgqxH7.js} +1 -1
  263. package/storybook-static/assets/{SingleDateTimeInput-sGTkT8ZA.js → SingleDateTimeInput-Dj_VSvfb.js} +1 -1
  264. package/storybook-static/assets/{SingleDateTimeInput.stories-X7CMAFsq.js → SingleDateTimeInput.stories-CnYFrOUX.js} +1 -1
  265. package/storybook-static/assets/{Slider-CaKY8LIJ.js → Slider-CLE5MSJr.js} +1 -1
  266. package/storybook-static/assets/{Slider-CqNWljkT.js → Slider-D4wvDQDc.js} +1 -1
  267. package/storybook-static/assets/{Slider.stories-CMxutCGM.js → Slider.stories-Cbz3RilT.js} +1 -1
  268. package/storybook-static/assets/{SliderInput-HUUN5_IF.js → SliderInput-AC9oLjGF.js} +1 -1
  269. package/storybook-static/assets/{SliderInput-scYwk-4g.js → SliderInput-DbyDo3fR.js} +1 -1
  270. package/storybook-static/assets/{SliderInput.stories-CDhgeql1.js → SliderInput.stories-69pRH0Uk.js} +1 -1
  271. package/storybook-static/assets/{Sortable-CaysnUNW.js → Sortable-E3DirII-.js} +1 -1
  272. package/storybook-static/assets/{Sortable.stories-C4gHc5ka.js → Sortable.stories-BbmTcem4.js} +1 -1
  273. package/storybook-static/assets/{Splitter-6cU1s7Qr.js → Splitter-DbaIQk2G.js} +1 -1
  274. package/storybook-static/assets/{Splitter.stories-CA9A-CZ-.js → Splitter.stories-HntpFa6w.js} +1 -1
  275. package/storybook-static/assets/{StateSelect-OHl6KWge.js → StateSelect-8r4Qlf4Y.js} +1 -1
  276. package/storybook-static/assets/{StateSelect-BAqjdi4g.js → StateSelect-C7ZIrgDB.js} +1 -1
  277. package/storybook-static/assets/{StateSelect.stories-xX3ujKGO.js → StateSelect.stories-CfUJCQGE.js} +1 -1
  278. package/storybook-static/assets/{StatusIndicator-C_7dWY2t.js → StatusIndicator-IqUZ24rN.js} +1 -1
  279. package/storybook-static/assets/{StatusIndicator.stories-BRlVzKf7.js → StatusIndicator.stories-DhKREzk8.js} +1 -1
  280. package/storybook-static/assets/{StringToggle.stories-DFPLwtHW.js → StringToggle.stories-BOC_AuIw.js} +1 -1
  281. package/storybook-static/assets/{Switch-CrlrIm3t.js → Switch-58npo6H_.js} +1 -1
  282. package/storybook-static/assets/{Switch-DHcMczAC.js → Switch-C4wfyH7_.js} +1 -1
  283. package/storybook-static/assets/{Switch.stories-LhTPX_R-.js → Switch.stories-BpABAFmv.js} +1 -1
  284. package/storybook-static/assets/{Table-Ct8iqJEY.js → Table-RAMtWu9C.js} +1 -1
  285. package/storybook-static/assets/Table.stories-Cth_AbDh.js +184 -0
  286. package/storybook-static/assets/{TableEditor.stories-Qtqr_l4g.js → TableEditor.stories-IfJyun1v.js} +1 -1
  287. package/storybook-static/assets/{Tabs-CC0IIQwl.js → Tabs-CX67nGv0.js} +1 -1
  288. package/storybook-static/assets/{Tabs.stories-Bo_Y-dq8.js → Tabs.stories-6wO9Pmly.js} +1 -1
  289. package/storybook-static/assets/{TabsBox-BMNvHsCH.js → TabsBox-QKS_MMQ0.js} +1 -1
  290. package/storybook-static/assets/{TagInput-BLwbzCit.js → TagInput-R6ANDdvh.js} +1 -1
  291. package/storybook-static/assets/{TagInput.stories-DNcD4tn4.js → TagInput.stories-DAyX89-l.js} +1 -1
  292. package/storybook-static/assets/{Text-Bih-aO3C.js → Text-D3vBpXH0.js} +1 -1
  293. package/storybook-static/assets/TextEditorLexicalViewer-DRQG2UON.css +1 -0
  294. package/storybook-static/assets/TextEditorLexicalViewer.stories-RdypWNwx.js +66 -0
  295. package/storybook-static/assets/{Textarea-DCnLF4aj.js → Textarea-BPtHeqrt.js} +1 -1
  296. package/storybook-static/assets/{Textarea-D3os1biP.js → Textarea-Cio32hA3.js} +1 -1
  297. package/storybook-static/assets/{Textarea.stories-CIFzZQ5Z.js → Textarea.stories-DDVaU3Ho.js} +1 -1
  298. package/storybook-static/assets/{TimePanel-BcVGesht.js → TimePanel-e1drsuDA.js} +1 -1
  299. package/storybook-static/assets/{TimePanel.stories-C6_xVdCq.js → TimePanel.stories-Dze9jjtv.js} +1 -1
  300. package/storybook-static/assets/{Toggle-BD0YAuO2.js → Toggle-BuLJ3UR_.js} +1 -1
  301. package/storybook-static/assets/{Toggle-CtABgcO5.js → Toggle-D8UQ_CuL.js} +1 -1
  302. package/storybook-static/assets/{Toggle.stories-DnTnFcGB.js → Toggle.stories-0wuia83j.js} +1 -1
  303. package/storybook-static/assets/{TreeMultiSelect-DHk_QP2h.js → TreeMultiSelect-Ciy9H9Q3.js} +1 -1
  304. package/storybook-static/assets/{TreeMultiSelect-Bp_Akwgc.js → TreeMultiSelect-QWOfniqX.js} +1 -1
  305. package/storybook-static/assets/{TreeMultiSelect.stories-CBVQbR1c.js → TreeMultiSelect.stories-C5bKUKLA.js} +1 -1
  306. package/storybook-static/assets/{TreePickerBase-BhWXyIoO.js → TreePickerBase-DAld1sj1.js} +1 -1
  307. package/storybook-static/assets/{TreeSelect-HNbghKYG.js → TreeSelect-ANFeSIqw.js} +1 -1
  308. package/storybook-static/assets/{TreeSelect-DleoF0hJ.js → TreeSelect-DKUJycNd.js} +1 -1
  309. package/storybook-static/assets/{TreeSelect.stories-BigcPfEn.js → TreeSelect.stories-BJErYrTv.js} +1 -1
  310. package/storybook-static/assets/{TreeTable-BNkuyFKP.js → TreeTable-DcyUjVXj.js} +1 -1
  311. package/storybook-static/assets/TreeTable.stories-BnyxdNPz.js +138 -0
  312. package/storybook-static/assets/blocks-Bn1nLfdu.js +287 -0
  313. package/storybook-static/assets/{check-DRMDOowi.js → check-DTcQ3CsH.js} +1 -1
  314. package/storybook-static/assets/{chevron-down-D0ohA4RZ.js → chevron-down-CRBjmU7w.js} +1 -1
  315. package/storybook-static/assets/{chevron-left-CLqpYqDQ.js → chevron-left-CBPOblch.js} +1 -1
  316. package/storybook-static/assets/{chevron-right-CXryGzSx.js → chevron-right-Bryg2EIf.js} +1 -1
  317. package/storybook-static/assets/{chunk-W22LQPXL-CxLeSIMq.js → chunk-W22LQPXL-44DPZKTZ.js} +1 -1
  318. package/storybook-static/assets/{circle-alert-l6NwXGUY.js → circle-alert-DviK8puL.js} +1 -1
  319. package/storybook-static/assets/{circle-check-B-r716dD.js → circle-check-B1-l7Oh4.js} +1 -1
  320. package/storybook-static/assets/{contextMenu-Br4n839h.js → contextMenu-DtHQnSjw.js} +1 -1
  321. package/storybook-static/assets/{download-DqFSGBvN.js → download-BuLQijJq.js} +1 -1
  322. package/storybook-static/assets/{floating-ui.react-B-qFeMZZ.js → floating-ui.react-iTaFJp98.js} +1 -1
  323. package/storybook-static/assets/{foundationApi-DxO3oR-c.js → foundationApi-Bjw5h-ru.js} +1 -1
  324. package/storybook-static/assets/{foundationLib-CTFFCQvn.js → foundationLib-BcePCYWP.js} +1 -1
  325. package/storybook-static/assets/{hooks-CAgVZJ-F.js → hooks-CiUB_4kG.js} +1 -1
  326. package/storybook-static/assets/{iframe-E950Ehp0.js → iframe-BvendKJ_.js} +4 -4
  327. package/storybook-static/assets/iframe-BzGX4Usd.js +1 -0
  328. package/storybook-static/assets/{info-Dp6XZGwP.js → info-Dq-9oYHd.js} +1 -1
  329. package/storybook-static/assets/isRecord-DXDTW-jA-CMenzszF.js +1 -0
  330. package/storybook-static/assets/odata-f2MNATrV.js +1 -0
  331. package/storybook-static/assets/{odataStoryFixtures-CDArjyM7.js → odataStoryFixtures-BaKh8qyu.js} +1 -1
  332. package/storybook-static/assets/{react-CGpO0FqR.js → react-B6cO4JYx.js} +1 -1
  333. package/storybook-static/assets/{refresh-cw-dMgbnEda.js → refresh-cw-DmxZlsqm.js} +1 -1
  334. package/storybook-static/assets/{settings-2-CmW1dpao.js → settings-2-CBuqWUWt.js} +1 -1
  335. package/storybook-static/assets/{sortable-D7TAXZBK.js → sortable-BkTzd-5v.js} +1 -1
  336. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-ok7zY4QK.js → syntaxhighlighter-QEQV7K2Y-h6bhL7V7.js} +1 -1
  337. package/storybook-static/assets/{trash-2-5v1tbQ2V.js → trash-2-wTK0eWnF.js} +1 -1
  338. package/storybook-static/assets/{triangle-alert-CVLPpc5j.js → triangle-alert-CD0VXyGn.js} +1 -1
  339. package/storybook-static/assets/{useODataSelectBase-Bkht6gRs.js → useODataSelectBase-keqr2Q3a.js} +1 -1
  340. package/storybook-static/assets/useODataTreeData-BLDGoADN.js +1 -0
  341. package/storybook-static/assets/{usePickerQuery-BmoBHlzm.js → usePickerQuery-BA8NMnw6.js} +1 -1
  342. package/storybook-static/assets/{usePickerTriggerController-Dvt7LsFZ.js → usePickerTriggerController-Ceb5Hrtf.js} +1 -1
  343. package/storybook-static/assets/{x-DZpfbNy0.js → x-CsG3nxct.js} +1 -1
  344. package/storybook-static/iframe.html +2 -2
  345. package/storybook-static/index.json +1 -1
  346. package/storybook-static/project.json +1 -1
  347. package/storybook-static/assets/Color-6AOWCN3U-C4R02nIA.js +0 -1
  348. package/storybook-static/assets/FormattedTableCell-BKSpyxnu.js +0 -15
  349. package/storybook-static/assets/Table.stories-DO30v6VO.js +0 -184
  350. package/storybook-static/assets/TreeTable.stories-Bdx3y7Yb.js +0 -138
  351. package/storybook-static/assets/blocks-DGivDYe5.js +0 -48
  352. package/storybook-static/assets/components-Vmrwp1qC.js +0 -241
  353. package/storybook-static/assets/iframe-dKozSQh6.js +0 -1
  354. package/storybook-static/assets/odata-DuJbgix6.js +0 -1
  355. package/storybook-static/assets/useODataTreeData-DTWPuC9Y.js +0 -1
@@ -1,14 +1,18 @@
1
1
  import { m as e } from "../chunks/misc-Dcr24uDY.js";
2
2
  import { a as t, n, t as r } from "../chunks/types-CxXyru6U.js";
3
- import { jsx as i } from "react/jsx-runtime";
3
+ import { cn as i } from "@ryuzaki13/react-foundation-lib/utils";
4
+ import { jsx as a } from "react/jsx-runtime";
5
+ import { useMemo as o } from "react";
6
+ import { isPlainObject as s, isRecord as c } from "@ryuzaki13/react-foundation-lib/validators";
7
+ import { IS_BOLD as l, IS_CODE as u, IS_HIGHLIGHT as d, IS_ITALIC as f, IS_STRIKETHROUGH as p, IS_SUBSCRIPT as m, IS_SUPERSCRIPT as h, IS_UNDERLINE as g } from "lexical";
4
8
  //#region src/text-editor/TextEditorLexical.tsx
5
- function a() {
6
- return import("../chunks/TextEditorLexicalClient-Cj6yjCGm.js").then((e) => ({ TextEditorLexicalClient: e.TextEditorLexicalClient }));
9
+ function _() {
10
+ return import("../chunks/TextEditorLexicalClient-apy-Cugj.js").then((e) => ({ TextEditorLexicalClient: e.TextEditorLexicalClient }));
7
11
  }
8
- function o(t) {
9
- return /* @__PURE__ */ i(e, {
12
+ function v(t) {
13
+ return /* @__PURE__ */ a(e, {
10
14
  clientOnly: !0,
11
- importFunc: a,
15
+ importFunc: _,
12
16
  componentName: "TextEditorLexicalClient",
13
17
  cacheKey: "shared-ui:text-editor-lexical-client",
14
18
  fallback: null,
@@ -16,6 +20,293 @@ function o(t) {
16
20
  });
17
21
  }
18
22
  //#endregion
19
- export { r as LinkTypes, n as TagTypes, o as TextEditorLexical, t as isLexicalTextRaw };
23
+ //#region src/text-editor/lib/viewer/getTextEditorViewerElementStyle.ts
24
+ function y(e) {
25
+ return {
26
+ textAlign: e.alignment || void 0,
27
+ marginInlineStart: e.indent ? `min(${e.indent} * var(--space-lg), 25%)` : void 0
28
+ };
29
+ }
30
+ //#endregion
31
+ //#region src/text-editor/lib/viewer/resolveTextEditorViewerLink.ts
32
+ function b(e) {
33
+ if (typeof e != "string" || e.length === 0 || /[\s\u0000-\u001f\u007f]/u.test(e) || !URL.canParse(e)) return null;
34
+ let t = new URL(e);
35
+ return t.protocol !== "http:" && t.protocol !== "https:" || !t.hostname || t.username || t.password ? null : t.href;
36
+ }
37
+ //#endregion
38
+ //#region src/text-editor/lib/viewer/parseTextEditorViewerDocument.ts
39
+ var x = 1e4, S = 32, C = 1e6, w = 32, T = l | f | p | g | u | m | h | d, E = [
40
+ "type",
41
+ "version",
42
+ "children",
43
+ "direction",
44
+ "format",
45
+ "indent",
46
+ "textFormat",
47
+ "textStyle"
48
+ ], D = [
49
+ ...E,
50
+ "url",
51
+ "target",
52
+ "rel",
53
+ "title"
54
+ ], O = [
55
+ ...D,
56
+ "ariaLabel",
57
+ "qrCode",
58
+ "add",
59
+ "text"
60
+ ], k = { status: "invalid" };
61
+ function A(e) {
62
+ if (!c(e) || !s(e)) return null;
63
+ let t = Reflect.ownKeys(e);
64
+ if (t.length > O.length) return null;
65
+ for (let n of t) {
66
+ if (typeof n != "string") return null;
67
+ let t = Object.getOwnPropertyDescriptor(e, n);
68
+ if (!t || !t.enumerable || !("value" in t)) return null;
69
+ }
70
+ return e;
71
+ }
72
+ function j(e, t) {
73
+ return Object.keys(e).every((e) => t.includes(e));
74
+ }
75
+ function M(e) {
76
+ return typeof e == "number" && Number.isSafeInteger(e) && e >= 0 && e <= T && (e & ~T) === 0;
77
+ }
78
+ function N(e, t) {
79
+ return typeof e == "string" && (t.textUnits += e.length, t.textUnits <= C);
80
+ }
81
+ function P(e) {
82
+ return typeof e == "number" && Number.isSafeInteger(e) && e > 0;
83
+ }
84
+ function F(e) {
85
+ let t = e.direction, n = e.format, r = e.indent;
86
+ return t !== null && t !== "ltr" && t !== "rtl" || n !== "" && n !== "left" && n !== "right" && n !== "center" && n !== "justify" && n !== "start" && n !== "end" || typeof r != "number" || !Number.isSafeInteger(r) || r < 0 || r > w || e.textFormat !== void 0 && !M(e.textFormat) || e.textStyle !== void 0 && e.textStyle !== "" ? null : {
87
+ direction: t,
88
+ alignment: n,
89
+ indent: r
90
+ };
91
+ }
92
+ function I(e) {
93
+ return e.type === "text" || e.type === "linebreak" || e.type === "link";
94
+ }
95
+ function L(e) {
96
+ return e.type === "text" || e.type === "linebreak";
97
+ }
98
+ function R(e) {
99
+ return e.type === "paragraph" || e.type === "quote" || e.type === "heading" || e.type === "list";
100
+ }
101
+ function z(e) {
102
+ return e.type === "listitem";
103
+ }
104
+ function B(e) {
105
+ return I(e) || e.type === "list";
106
+ }
107
+ function V(e, t, n, r) {
108
+ if (!Array.isArray(e) || Object.getPrototypeOf(e) !== Array.prototype || e.length > x || Reflect.ownKeys(e).length !== e.length + 1) return null;
109
+ let i = [];
110
+ for (let a = 0; a < e.length; a++) {
111
+ let o = Object.getOwnPropertyDescriptor(e, a);
112
+ if (!o || !("value" in o)) return null;
113
+ let s = H(o.value, t, n);
114
+ if (!s || !r(s)) return null;
115
+ i.push(s);
116
+ }
117
+ return i;
118
+ }
119
+ function H(e, t, n) {
120
+ if (++t.nodes > x || n > S) return null;
121
+ let r = A(e);
122
+ if (!r || r.version !== 1) return null;
123
+ if (r.type === "text") return !j(r, [
124
+ "type",
125
+ "version",
126
+ "detail",
127
+ "format",
128
+ "mode",
129
+ "style",
130
+ "text"
131
+ ]) || r.detail !== 0 || r.mode !== "normal" || r.style !== "" || !M(r.format) || !N(r.text, t) ? null : {
132
+ type: "text",
133
+ text: r.text,
134
+ format: r.format
135
+ };
136
+ if (r.type === "linebreak") return j(r, ["type", "version"]) ? { type: "linebreak" } : null;
137
+ let i = F(r);
138
+ if (!i) return null;
139
+ switch (r.type) {
140
+ case "paragraph":
141
+ case "quote": {
142
+ if (!j(r, E)) return null;
143
+ let e = V(r.children, t, n + 1, I);
144
+ return e ? {
145
+ ...i,
146
+ type: r.type,
147
+ children: e
148
+ } : null;
149
+ }
150
+ case "heading": {
151
+ if (!j(r, [...E, "tag"])) return null;
152
+ let e = r.tag;
153
+ if (e !== "h1" && e !== "h2" && e !== "h3" && e !== "h4" && e !== "h5" && e !== "h6") return null;
154
+ let a = V(r.children, t, n + 1, I);
155
+ return a ? {
156
+ ...i,
157
+ type: "heading",
158
+ tag: e,
159
+ children: a
160
+ } : null;
161
+ }
162
+ case "list": {
163
+ if (!j(r, [
164
+ ...E,
165
+ "listType",
166
+ "tag",
167
+ "start"
168
+ ]) || !P(r.start)) return null;
169
+ let e = r.listType;
170
+ if (!(e === "bullet" && r.tag === "ul" || e === "number" && r.tag === "ol")) return null;
171
+ let a = V(r.children, t, n + 1, z);
172
+ return a ? {
173
+ ...i,
174
+ type: "list",
175
+ listType: e,
176
+ start: r.start,
177
+ children: a
178
+ } : null;
179
+ }
180
+ case "listitem": {
181
+ if (!j(r, [
182
+ ...E,
183
+ "value",
184
+ "checked"
185
+ ]) || !P(r.value) || r.checked !== void 0) return null;
186
+ let e = V(r.children, t, n + 1, B);
187
+ return e ? {
188
+ ...i,
189
+ type: "listitem",
190
+ value: r.value,
191
+ children: e
192
+ } : null;
193
+ }
194
+ case "link":
195
+ case "accessible-link": {
196
+ if (!j(r, r.type === "link" ? D : O) || !N(r.url, t)) return null;
197
+ let e = b(r.url);
198
+ if (!e || r.target !== null && r.target !== void 0 && r.target !== "_self" && r.target !== "_blank" || r.rel !== void 0 && r.rel !== null && !N(r.rel, t) || r.title !== void 0 && r.title !== null && !N(r.title, t) || r.type === "accessible-link" && (r.qrCode !== void 0 && r.qrCode !== !1 || r.add !== void 0 && r.add !== null || r.text !== void 0 && r.text !== null && !N(r.text, t) || r.ariaLabel !== void 0 && r.ariaLabel !== null && !N(r.ariaLabel, t))) return null;
199
+ let a = V(r.children, t, n + 1, L);
200
+ return a ? {
201
+ ...i,
202
+ type: "link",
203
+ url: e,
204
+ target: r.target === "_blank" ? "_blank" : "_self",
205
+ ariaLabel: typeof r.ariaLabel == "string" ? r.ariaLabel : null,
206
+ title: typeof r.title == "string" ? r.title : null,
207
+ children: a
208
+ } : null;
209
+ }
210
+ default: return null;
211
+ }
212
+ }
213
+ function U(e) {
214
+ let t = A(e);
215
+ if (!t || !j(t, [
216
+ "format",
217
+ "version",
218
+ "editorState"
219
+ ]) || t.format !== "lexical" || t.version !== 1) return k;
220
+ let n = A(t.editorState);
221
+ if (!n || !j(n, ["root"])) return k;
222
+ let r = A(n.root);
223
+ if (!r || !j(r, E) || r.type !== "root" || r.version !== 1) return k;
224
+ let i = F(r);
225
+ if (!i) return k;
226
+ let a = V(r.children, {
227
+ nodes: 1,
228
+ textUnits: 0
229
+ }, 1, R);
230
+ return a ? {
231
+ status: "valid",
232
+ element: i,
233
+ children: a
234
+ } : k;
235
+ }
236
+ var W = { viewer: "IFCV0m" };
237
+ //#endregion
238
+ //#region src/text-editor/ui/viewer/TextEditorViewerText.tsx
239
+ function G({ node: e }) {
240
+ let t = e.text;
241
+ return e.format & l && (t = /* @__PURE__ */ a("strong", { children: t })), e.format & f && (t = /* @__PURE__ */ a("em", { children: t })), e.format & g && (t = /* @__PURE__ */ a("u", { children: t })), e.format & p && (t = /* @__PURE__ */ a("s", { children: t })), e.format & u && (t = /* @__PURE__ */ a("code", { children: t })), e.format & d && (t = /* @__PURE__ */ a("mark", { children: t })), e.format & m && (t = /* @__PURE__ */ a("sub", { children: t })), e.format & h && (t = /* @__PURE__ */ a("sup", { children: t })), t;
242
+ }
243
+ //#endregion
244
+ //#region src/text-editor/ui/viewer/TextEditorViewerNode.tsx
245
+ function K({ node: e }) {
246
+ if (e.type === "text") return /* @__PURE__ */ a(G, { node: e });
247
+ if (e.type === "linebreak") return /* @__PURE__ */ a("br", {});
248
+ let t = e.children.map((e, t) => /* @__PURE__ */ a(K, { node: e }, t)), n = {
249
+ dir: e.direction ?? void 0,
250
+ style: y(e)
251
+ };
252
+ switch (e.type) {
253
+ case "paragraph": return /* @__PURE__ */ a("p", {
254
+ ...n,
255
+ children: t.length ? t : /* @__PURE__ */ a("br", {})
256
+ });
257
+ case "quote": return /* @__PURE__ */ a("blockquote", {
258
+ ...n,
259
+ children: t
260
+ });
261
+ case "heading": {
262
+ let r = e.tag;
263
+ return /* @__PURE__ */ a(r, {
264
+ ...n,
265
+ children: t
266
+ });
267
+ }
268
+ case "link": return /* @__PURE__ */ a("a", {
269
+ ...n,
270
+ href: e.url,
271
+ target: e.target,
272
+ rel: e.target === "_blank" ? "noopener noreferrer" : void 0,
273
+ "aria-label": e.ariaLabel ?? void 0,
274
+ title: e.title ?? void 0,
275
+ children: t
276
+ });
277
+ case "list": return e.listType === "number" ? /* @__PURE__ */ a("ol", {
278
+ ...n,
279
+ start: e.start,
280
+ children: t
281
+ }) : /* @__PURE__ */ a("ul", {
282
+ ...n,
283
+ children: t
284
+ });
285
+ case "listitem": return /* @__PURE__ */ a("li", {
286
+ ...n,
287
+ value: e.value,
288
+ "data-nested-list": e.children.length === 1 && e.children[0]?.type === "list" ? "true" : void 0,
289
+ children: t
290
+ });
291
+ }
292
+ }
293
+ //#endregion
294
+ //#region src/text-editor/TextEditorLexicalViewer.tsx
295
+ function q({ raw: e, className: t, fallback: n = "Содержимое недоступно для отображения." }) {
296
+ let r = o(() => U(e), [e]);
297
+ return r.status === "invalid" ? /* @__PURE__ */ a("div", {
298
+ className: i(W.viewer, t),
299
+ "data-text-editor-viewer": "unsupported",
300
+ children: n
301
+ }) : /* @__PURE__ */ a("div", {
302
+ className: i(W.viewer, t),
303
+ "data-text-editor-viewer": "ready",
304
+ dir: r.element.direction ?? void 0,
305
+ style: y(r.element),
306
+ children: r.children.map((e, t) => /* @__PURE__ */ a(K, { node: e }, t))
307
+ });
308
+ }
309
+ //#endregion
310
+ export { r as LinkTypes, n as TagTypes, v as TextEditorLexical, q as TextEditorLexicalViewer, t as isLexicalTextRaw };
20
311
 
21
312
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/text-editor/TextEditorLexical.tsx"],"sourcesContent":["import { LazyDynamicComponent } from \"../misc\";\n\nimport type { TextEditorCoreProps } from \"./editorModel\";\n\nfunction importTextEditorLexicalClient() {\n\tif (import.meta.env.SSR) return Promise.resolve(null);\n\n\treturn import(\"./TextEditorLexicalClient\").then((module) => ({\n\t\tTextEditorLexicalClient: module.TextEditorLexicalClient\n\t}));\n}\n\n/**\n * Client-only граница редактора: Lexical использует DOM и не должен попадать в SSR-исполнение.\n */\nexport function TextEditorLexical(props: TextEditorCoreProps) {\n\treturn (\n\t\t<LazyDynamicComponent<TextEditorCoreProps>\n\t\t\tclientOnly\n\t\t\timportFunc={importTextEditorLexicalClient}\n\t\t\tcomponentName=\"TextEditorLexicalClient\"\n\t\t\tcacheKey=\"shared-ui:text-editor-lexical-client\"\n\t\t\tfallback={null}\n\t\t\tprops={props}\n\t\t/>\n\t);\n}\n"],"mappings":";;;;AAIA,SAAS,IAAgC;CAGxC,OAAO,OAAO,gDAA4B,CAAC,MAAM,OAAY,EAC5D,yBAAyB,EAAO,wBACjC,EAAE;AACH;AAKA,SAAgB,EAAkB,GAA4B;CAC7D,OACC,kBAAC,GAAD;EACC,YAAA;EACA,YAAY;EACZ,eAAc;EACd,UAAS;EACT,UAAU;EACH;CACP,CAAA;AAEH"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/text-editor/TextEditorLexical.tsx","../../src/text-editor/lib/viewer/getTextEditorViewerElementStyle.ts","../../src/text-editor/lib/viewer/resolveTextEditorViewerLink.ts","../../src/text-editor/lib/viewer/parseTextEditorViewerDocument.ts","../../src/text-editor/TextEditorLexicalViewer.module.scss","../../src/text-editor/ui/viewer/TextEditorViewerText.tsx","../../src/text-editor/ui/viewer/TextEditorViewerNode.tsx","../../src/text-editor/TextEditorLexicalViewer.tsx"],"sourcesContent":["import { LazyDynamicComponent } from \"../misc\";\n\nimport type { TextEditorCoreProps } from \"./editorModel\";\n\nfunction importTextEditorLexicalClient() {\n\tif (import.meta.env.SSR) return Promise.resolve(null);\n\n\treturn import(\"./TextEditorLexicalClient\").then((module) => ({\n\t\tTextEditorLexicalClient: module.TextEditorLexicalClient\n\t}));\n}\n\n/**\n * Client-only граница редактора: Lexical использует DOM и не должен попадать в SSR-исполнение.\n */\nexport function TextEditorLexical(props: TextEditorCoreProps) {\n\treturn (\n\t\t<LazyDynamicComponent<TextEditorCoreProps>\n\t\t\tclientOnly\n\t\t\timportFunc={importTextEditorLexicalClient}\n\t\t\tcomponentName=\"TextEditorLexicalClient\"\n\t\t\tcacheKey=\"shared-ui:text-editor-lexical-client\"\n\t\t\tfallback={null}\n\t\t\tprops={props}\n\t\t/>\n\t);\n}\n","import { type CSSProperties } from \"react\";\n\nimport { type TextEditorViewerElement } from \"../../model/textEditorViewerTypes\";\n\n/** CSS получает только проверенные enum/число; произвольный style из raw сюда не попадает. */\nexport function getTextEditorViewerElementStyle(element: TextEditorViewerElement): CSSProperties {\n\treturn {\n\t\ttextAlign: element.alignment || undefined,\n\t\tmarginInlineStart: element.indent ? `min(${element.indent} * var(--space-lg), 25%)` : undefined\n\t};\n}\n","/** URL не зависит от browser origin: сервер и клиент принимают одну абсолютную безопасную форму. */\nexport function resolveTextEditorViewerLink(input: unknown): string | null {\n\tif (typeof input !== \"string\" || input.length === 0 || /[\\s\\u0000-\\u001f\\u007f]/u.test(input)) return null;\n\tif (!URL.canParse(input)) return null;\n\tconst url = new URL(input);\n\tif ((url.protocol !== \"http:\" && url.protocol !== \"https:\") || !url.hostname || url.username || url.password) return null;\n\treturn url.href;\n}\n","import { isPlainObject, isRecord } from \"@ryuzaki13/react-foundation-lib/validators\";\nimport { IS_BOLD, IS_CODE, IS_HIGHLIGHT, IS_ITALIC, IS_STRIKETHROUGH, IS_SUBSCRIPT, IS_SUPERSCRIPT, IS_UNDERLINE } from \"lexical\";\n\nimport {\n\ttype TextEditorViewerBlock,\n\ttype TextEditorViewerDocument,\n\ttype TextEditorViewerElement,\n\ttype TextEditorViewerInline,\n\ttype TextEditorViewerLineBreak,\n\ttype TextEditorViewerList,\n\ttype TextEditorViewerListItem,\n\ttype TextEditorViewerNode,\n\ttype TextEditorViewerText\n} from \"../../model/textEditorViewerTypes\";\n\nimport { resolveTextEditorViewerLink } from \"./resolveTextEditorViewerLink\";\n\nconst MAX_NODE_COUNT = 10_000;\nconst MAX_NODE_DEPTH = 32;\nconst MAX_TEXT_UNITS = 1_000_000;\nconst MAX_INDENT = 32;\nconst INLINE_FORMAT_MASK = IS_BOLD | IS_ITALIC | IS_STRIKETHROUGH | IS_UNDERLINE | IS_CODE | IS_SUBSCRIPT | IS_SUPERSCRIPT | IS_HIGHLIGHT;\nconst ELEMENT_FIELDS = [\"type\", \"version\", \"children\", \"direction\", \"format\", \"indent\", \"textFormat\", \"textStyle\"];\nconst LINK_FIELDS = [...ELEMENT_FIELDS, \"url\", \"target\", \"rel\", \"title\"];\nconst ACCESSIBLE_LINK_FIELDS = [...LINK_FIELDS, \"ariaLabel\", \"qrCode\", \"add\", \"text\"];\nconst INVALID_DOCUMENT: TextEditorViewerDocument = { status: \"invalid\" };\n\ntype ViewerParseBudget = { nodes: number; textUnits: number };\n\n/** Accessor и prototype objects не являются сериализованными данными; не вызываем чужой getter при render. */\nfunction readPlainRecord(input: unknown): Record<string, unknown> | null {\n\tif (!isRecord(input) || !isPlainObject(input)) return null;\n\tconst keys = Reflect.ownKeys(input);\n\tif (keys.length > ACCESSIBLE_LINK_FIELDS.length) return null;\n\tfor (const key of keys) {\n\t\tif (typeof key !== \"string\") return null;\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(input, key);\n\t\tif (!descriptor || !descriptor.enumerable || !(\"value\" in descriptor)) return null;\n\t}\n\treturn input;\n}\n\nfunction hasOnlyFields(input: Record<string, unknown>, fields: readonly string[]): boolean {\n\treturn Object.keys(input).every((key) => fields.includes(key));\n}\n\nfunction isInlineFormat(input: unknown): input is number {\n\treturn (\n\t\ttypeof input === \"number\" &&\n\t\tNumber.isSafeInteger(input) &&\n\t\tinput >= 0 &&\n\t\tinput <= INLINE_FORMAT_MASK &&\n\t\t(input & ~INLINE_FORMAT_MASK) === 0\n\t);\n}\n\nfunction consumeText(input: unknown, budget: ViewerParseBudget): input is string {\n\tif (typeof input !== \"string\") return false;\n\tbudget.textUnits += input.length;\n\treturn budget.textUnits <= MAX_TEXT_UNITS;\n}\n\nfunction isPositiveInteger(input: unknown): input is number {\n\treturn typeof input === \"number\" && Number.isSafeInteger(input) && input > 0;\n}\n\nfunction readElement(input: Record<string, unknown>): TextEditorViewerElement | null {\n\tconst direction = input.direction;\n\tconst alignment = input.format;\n\tconst indent = input.indent;\n\tif (direction !== null && direction !== \"ltr\" && direction !== \"rtl\") return null;\n\tif (\n\t\talignment !== \"\" &&\n\t\talignment !== \"left\" &&\n\t\talignment !== \"right\" &&\n\t\talignment !== \"center\" &&\n\t\talignment !== \"justify\" &&\n\t\talignment !== \"start\" &&\n\t\talignment !== \"end\"\n\t)\n\t\treturn null;\n\tif (typeof indent !== \"number\" || !Number.isSafeInteger(indent) || indent < 0 || indent > MAX_INDENT) return null;\n\tif ((input.textFormat !== undefined && !isInlineFormat(input.textFormat)) || (input.textStyle !== undefined && input.textStyle !== \"\"))\n\t\treturn null;\n\treturn { direction, alignment, indent };\n}\n\nfunction isInline(node: TextEditorViewerNode): node is TextEditorViewerInline {\n\treturn node.type === \"text\" || node.type === \"linebreak\" || node.type === \"link\";\n}\n\nfunction isLinkChild(node: TextEditorViewerNode): node is TextEditorViewerText | TextEditorViewerLineBreak {\n\treturn node.type === \"text\" || node.type === \"linebreak\";\n}\n\nfunction isBlock(node: TextEditorViewerNode): node is TextEditorViewerBlock {\n\treturn node.type === \"paragraph\" || node.type === \"quote\" || node.type === \"heading\" || node.type === \"list\";\n}\n\nfunction isListItem(node: TextEditorViewerNode): node is TextEditorViewerListItem {\n\treturn node.type === \"listitem\";\n}\n\nfunction isListItemChild(node: TextEditorViewerNode): node is TextEditorViewerInline | TextEditorViewerList {\n\treturn isInline(node) || node.type === \"list\";\n}\n\n/** Только плотный JSON-массив: не вызываем собственные iterator/getter, depth/node budget отсекают циклы. */\nfunction readChildren<Node extends TextEditorViewerNode>(\n\tinput: unknown,\n\tbudget: ViewerParseBudget,\n\tdepth: number,\n\taccept: (node: TextEditorViewerNode) => node is Node\n): readonly Node[] | null {\n\tif (!Array.isArray(input) || Object.getPrototypeOf(input) !== Array.prototype || input.length > MAX_NODE_COUNT) return null;\n\tif (Reflect.ownKeys(input).length !== input.length + 1) return null;\n\tconst children: Node[] = [];\n\tfor (let index = 0; index < input.length; index++) {\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(input, index);\n\t\tif (!descriptor || !(\"value\" in descriptor)) return null;\n\t\tconst node = readNode(descriptor.value, budget, depth);\n\t\tif (!node || !accept(node)) return null;\n\t\tchildren.push(node);\n\t}\n\treturn children;\n}\n\nfunction readNode(input: unknown, budget: ViewerParseBudget, depth: number): TextEditorViewerNode | null {\n\tif (++budget.nodes > MAX_NODE_COUNT || depth > MAX_NODE_DEPTH) return null;\n\tconst node = readPlainRecord(input);\n\tif (!node || node.version !== 1) return null;\n\tif (node.type === \"text\") {\n\t\tif (\n\t\t\t!hasOnlyFields(node, [\"type\", \"version\", \"detail\", \"format\", \"mode\", \"style\", \"text\"]) ||\n\t\t\tnode.detail !== 0 ||\n\t\t\tnode.mode !== \"normal\" ||\n\t\t\tnode.style !== \"\" ||\n\t\t\t!isInlineFormat(node.format) ||\n\t\t\t!consumeText(node.text, budget)\n\t\t)\n\t\t\treturn null;\n\t\treturn { type: \"text\", text: node.text, format: node.format };\n\t}\n\tif (node.type === \"linebreak\") return hasOnlyFields(node, [\"type\", \"version\"]) ? { type: \"linebreak\" } : null;\n\tconst element = readElement(node);\n\tif (!element) return null;\n\tswitch (node.type) {\n\t\tcase \"paragraph\":\n\t\tcase \"quote\": {\n\t\t\tif (!hasOnlyFields(node, ELEMENT_FIELDS)) return null;\n\t\t\tconst children = readChildren(node.children, budget, depth + 1, isInline);\n\t\t\treturn children ? { ...element, type: node.type, children } : null;\n\t\t}\n\t\tcase \"heading\": {\n\t\t\tif (!hasOnlyFields(node, [...ELEMENT_FIELDS, \"tag\"])) return null;\n\t\t\tconst tag = node.tag;\n\t\t\tif (tag !== \"h1\" && tag !== \"h2\" && tag !== \"h3\" && tag !== \"h4\" && tag !== \"h5\" && tag !== \"h6\") return null;\n\t\t\tconst children = readChildren(node.children, budget, depth + 1, isInline);\n\t\t\treturn children ? { ...element, type: \"heading\", tag, children } : null;\n\t\t}\n\t\tcase \"list\": {\n\t\t\tif (!hasOnlyFields(node, [...ELEMENT_FIELDS, \"listType\", \"tag\", \"start\"]) || !isPositiveInteger(node.start)) return null;\n\t\t\tconst listType = node.listType;\n\t\t\tif (!((listType === \"bullet\" && node.tag === \"ul\") || (listType === \"number\" && node.tag === \"ol\"))) return null;\n\t\t\tconst children = readChildren(node.children, budget, depth + 1, isListItem);\n\t\t\treturn children ? { ...element, type: \"list\", listType, start: node.start, children } : null;\n\t\t}\n\t\tcase \"listitem\": {\n\t\t\tif (\n\t\t\t\t!hasOnlyFields(node, [...ELEMENT_FIELDS, \"value\", \"checked\"]) ||\n\t\t\t\t!isPositiveInteger(node.value) ||\n\t\t\t\tnode.checked !== undefined\n\t\t\t)\n\t\t\t\treturn null;\n\t\t\tconst children = readChildren(node.children, budget, depth + 1, isListItemChild);\n\t\t\treturn children ? { ...element, type: \"listitem\", value: node.value, children } : null;\n\t\t}\n\t\tcase \"link\":\n\t\tcase \"accessible-link\": {\n\t\t\tif (!hasOnlyFields(node, node.type === \"link\" ? LINK_FIELDS : ACCESSIBLE_LINK_FIELDS)) return null;\n\t\t\tif (!consumeText(node.url, budget)) return null;\n\t\t\tconst url = resolveTextEditorViewerLink(node.url);\n\t\t\tif (!url || (node.target !== null && node.target !== undefined && node.target !== \"_self\" && node.target !== \"_blank\"))\n\t\t\t\treturn null;\n\t\t\tif (node.rel !== undefined && node.rel !== null && !consumeText(node.rel, budget)) return null;\n\t\t\tif (node.title !== undefined && node.title !== null && !consumeText(node.title, budget)) return null;\n\t\t\tif (\n\t\t\t\tnode.type === \"accessible-link\" &&\n\t\t\t\t((node.qrCode !== undefined && node.qrCode !== false) ||\n\t\t\t\t\t(node.add !== undefined && node.add !== null) ||\n\t\t\t\t\t(node.text !== undefined && node.text !== null && !consumeText(node.text, budget)) ||\n\t\t\t\t\t(node.ariaLabel !== undefined && node.ariaLabel !== null && !consumeText(node.ariaLabel, budget)))\n\t\t\t)\n\t\t\t\treturn null;\n\t\t\tconst children = readChildren(node.children, budget, depth + 1, isLinkChild);\n\t\t\tif (!children) return null;\n\t\t\treturn {\n\t\t\t\t...element,\n\t\t\t\ttype: \"link\",\n\t\t\t\turl,\n\t\t\t\ttarget: node.target === \"_blank\" ? \"_blank\" : \"_self\",\n\t\t\t\tariaLabel: typeof node.ariaLabel === \"string\" ? node.ariaLabel : null,\n\t\t\t\ttitle: typeof node.title === \"string\" ? node.title : null,\n\t\t\t\tchildren\n\t\t\t};\n\t\t}\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\n/** Чистая bounded-проекция; отсутствие DOM/Lexical editor сохраняет одинаковый SSR и browser render. */\nexport function parseTextEditorViewerDocument(input: unknown): TextEditorViewerDocument {\n\tconst envelope = readPlainRecord(input);\n\tif (\n\t\t!envelope ||\n\t\t!hasOnlyFields(envelope, [\"format\", \"version\", \"editorState\"]) ||\n\t\tenvelope.format !== \"lexical\" ||\n\t\tenvelope.version !== 1\n\t)\n\t\treturn INVALID_DOCUMENT;\n\tconst editorState = readPlainRecord(envelope.editorState);\n\tif (!editorState || !hasOnlyFields(editorState, [\"root\"])) return INVALID_DOCUMENT;\n\tconst root = readPlainRecord(editorState.root);\n\tif (!root || !hasOnlyFields(root, ELEMENT_FIELDS) || root.type !== \"root\" || root.version !== 1) return INVALID_DOCUMENT;\n\tconst element = readElement(root);\n\tif (!element) return INVALID_DOCUMENT;\n\tconst children = readChildren(root.children, { nodes: 1, textUnits: 0 }, 1, isBlock);\n\treturn children ? { status: \"valid\", element, children } : INVALID_DOCUMENT;\n}\n",".viewer {\n\tmin-width: 0;\n\tmax-width: 100%;\n\toverflow-wrap: anywhere;\n\tcolor: var(--content-0);\n\n\tp,\n\tblockquote,\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6,\n\tul,\n\tol {\n\t\tmargin-block: 0 var(--space-sm);\n\t}\n\n\tp,\n\tblockquote,\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6,\n\tli {\n\t\twhite-space: pre-wrap;\n\t}\n\n\t> :last-child {\n\t\tmargin-block-end: 0;\n\t}\n\n\tul,\n\tol {\n\t\tpadding-inline-start: var(--space-lg);\n\t}\n\n\tul {\n\t\tlist-style-type: disc;\n\t}\n\tol {\n\t\tlist-style-type: decimal;\n\t}\n\tli[data-nested-list=\"true\"] {\n\t\tlist-style-type: none;\n\t}\n\n\tblockquote {\n\t\tmargin-inline: 0;\n\t\tpadding-inline-start: var(--space-md);\n\t\tborder-inline-start: var(--border);\n\t\tcolor: var(--content-1);\n\t}\n\n\tcode {\n\t\tborder-radius: var(--radius-xs);\n\t\tpadding-inline: var(--space-xs);\n\t\tbackground: var(--surface-2);\n\t}\n\n\tmark {\n\t\tbackground: var(--warning-fill);\n\t\tcolor: var(--warning-on-fill);\n\t}\n}\n","import { type ReactNode } from \"react\";\n\nimport { IS_BOLD, IS_CODE, IS_HIGHLIGHT, IS_ITALIC, IS_STRIKETHROUGH, IS_SUBSCRIPT, IS_SUPERSCRIPT, IS_UNDERLINE } from \"lexical\";\n\nimport { type TextEditorViewerText as TextEditorViewerTextModel } from \"../../model/textEditorViewerTypes\";\n\nexport type TextEditorViewerTextProps = Readonly<{ node: TextEditorViewerTextModel }>;\n\n/** Семантические обёртки сохраняют сочетания форматов, React экранирует сам текст. */\nexport function TextEditorViewerText({ node }: TextEditorViewerTextProps) {\n\tlet content: ReactNode = node.text;\n\tif (node.format & IS_BOLD) content = <strong>{content}</strong>;\n\tif (node.format & IS_ITALIC) content = <em>{content}</em>;\n\tif (node.format & IS_UNDERLINE) content = <u>{content}</u>;\n\tif (node.format & IS_STRIKETHROUGH) content = <s>{content}</s>;\n\tif (node.format & IS_CODE) content = <code>{content}</code>;\n\tif (node.format & IS_HIGHLIGHT) content = <mark>{content}</mark>;\n\tif (node.format & IS_SUBSCRIPT) content = <sub>{content}</sub>;\n\tif (node.format & IS_SUPERSCRIPT) content = <sup>{content}</sup>;\n\treturn content;\n}\n","import { getTextEditorViewerElementStyle } from \"../../lib/viewer/getTextEditorViewerElementStyle\";\nimport { type TextEditorViewerNode as TextEditorViewerNodeModel } from \"../../model/textEditorViewerTypes\";\n\nimport { TextEditorViewerText } from \"./TextEditorViewerText\";\n\nexport type TextEditorViewerNodeProps = Readonly<{ node: TextEditorViewerNodeModel }>;\n\n/** Все tags и DOM props заданы renderer: исходные attributes не распространяются в JSX. */\nexport function TextEditorViewerNode({ node }: TextEditorViewerNodeProps) {\n\tif (node.type === \"text\") return <TextEditorViewerText node={node} />;\n\tif (node.type === \"linebreak\") return <br />;\n\tconst children = node.children.map((child, index) => <TextEditorViewerNode key={index} node={child} />);\n\tconst elementProps = { dir: node.direction ?? undefined, style: getTextEditorViewerElementStyle(node) };\n\tswitch (node.type) {\n\t\tcase \"paragraph\":\n\t\t\treturn <p {...elementProps}>{children.length ? children : <br />}</p>;\n\t\tcase \"quote\":\n\t\t\treturn <blockquote {...elementProps}>{children}</blockquote>;\n\t\tcase \"heading\": {\n\t\t\tconst Heading = node.tag;\n\t\t\treturn <Heading {...elementProps}>{children}</Heading>;\n\t\t}\n\t\tcase \"link\":\n\t\t\treturn (\n\t\t\t\t<a\n\t\t\t\t\t{...elementProps}\n\t\t\t\t\thref={node.url}\n\t\t\t\t\ttarget={node.target}\n\t\t\t\t\trel={node.target === \"_blank\" ? \"noopener noreferrer\" : undefined}\n\t\t\t\t\taria-label={node.ariaLabel ?? undefined}\n\t\t\t\t\ttitle={node.title ?? undefined}>\n\t\t\t\t\t{children}\n\t\t\t\t</a>\n\t\t\t);\n\t\tcase \"list\":\n\t\t\treturn node.listType === \"number\" ? (\n\t\t\t\t<ol {...elementProps} start={node.start}>\n\t\t\t\t\t{children}\n\t\t\t\t</ol>\n\t\t\t) : (\n\t\t\t\t<ul {...elementProps}>{children}</ul>\n\t\t\t);\n\t\tcase \"listitem\":\n\t\t\treturn (\n\t\t\t\t<li\n\t\t\t\t\t{...elementProps}\n\t\t\t\t\tvalue={node.value}\n\t\t\t\t\tdata-nested-list={node.children.length === 1 && node.children[0]?.type === \"list\" ? \"true\" : undefined}>\n\t\t\t\t\t{children}\n\t\t\t\t</li>\n\t\t\t);\n\t}\n}\n","import { type ReactNode, useMemo } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { type TextEditorLexicalRaw } from \"./editorModel\";\nimport { getTextEditorViewerElementStyle } from \"./lib/viewer/getTextEditorViewerElementStyle\";\nimport { parseTextEditorViewerDocument } from \"./lib/viewer/parseTextEditorViewerDocument\";\nimport styles from \"./TextEditorLexicalViewer.module.scss\";\nimport { TextEditorViewerNode } from \"./ui/viewer/TextEditorViewerNode\";\n\nexport type TextEditorLexicalViewerProps = Readonly<{\n\traw: TextEditorLexicalRaw;\n\tclassName?: string;\n\tfallback?: ReactNode;\n}>;\n\n/** Читает immutable raw без editor instance; SSR и браузер используют одну безопасную проекцию. */\nexport function TextEditorLexicalViewer({\n\traw,\n\tclassName,\n\tfallback = \"Содержимое недоступно для отображения.\"\n}: TextEditorLexicalViewerProps) {\n\t// Повторный render карточки не должен заново обходить неизменившийся документ.\n\tconst document = useMemo(() => parseTextEditorViewerDocument(raw), [raw]);\n\tif (document.status === \"invalid\") {\n\t\treturn (\n\t\t\t<div className={cn(styles.viewer, className)} data-text-editor-viewer=\"unsupported\">\n\t\t\t\t{fallback}\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(styles.viewer, className)}\n\t\t\tdata-text-editor-viewer=\"ready\"\n\t\t\tdir={document.element.direction ?? undefined}\n\t\t\tstyle={getTextEditorViewerElementStyle(document.element)}>\n\t\t\t{document.children.map((node, index) => (\n\t\t\t\t<TextEditorViewerNode key={index} node={node} />\n\t\t\t))}\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type CSSProperties } from "react";
2
+ import { type TextEditorViewerElement } from "../../model/textEditorViewerTypes";
3
+ /** CSS получает только проверенные enum/число; произвольный style из raw сюда не попадает. */
4
+ export declare function getTextEditorViewerElementStyle(element: TextEditorViewerElement): CSSProperties;
5
+ //# sourceMappingURL=getTextEditorViewerElementStyle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTextEditorViewerElementStyle.d.ts","sourceRoot":"","sources":["../../../../src/text-editor/lib/viewer/getTextEditorViewerElementStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAEjF,8FAA8F;AAC9F,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa,CAK/F"}
@@ -0,0 +1,4 @@
1
+ import { type TextEditorViewerDocument } from "../../model/textEditorViewerTypes";
2
+ /** Чистая bounded-проекция; отсутствие DOM/Lexical editor сохраняет одинаковый SSR и browser render. */
3
+ export declare function parseTextEditorViewerDocument(input: unknown): TextEditorViewerDocument;
4
+ //# sourceMappingURL=parseTextEditorViewerDocument.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseTextEditorViewerDocument.d.ts","sourceRoot":"","sources":["../../../../src/text-editor/lib/viewer/parseTextEditorViewerDocument.ts"],"names":[],"mappings":"AAGA,OAAO,EAEN,KAAK,wBAAwB,EAQ7B,MAAM,mCAAmC,CAAC;AAsM3C,wGAAwG;AACxG,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,CAiBtF"}
@@ -0,0 +1,3 @@
1
+ /** URL не зависит от browser origin: сервер и клиент принимают одну абсолютную безопасную форму. */
2
+ export declare function resolveTextEditorViewerLink(input: unknown): string | null;
3
+ //# sourceMappingURL=resolveTextEditorViewerLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveTextEditorViewerLink.d.ts","sourceRoot":"","sources":["../../../../src/text-editor/lib/viewer/resolveTextEditorViewerLink.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAMzE"}
@@ -0,0 +1,58 @@
1
+ /** Приватная безопасная проекция: DOM получает только перечисленные свойства, а не исходный JSON. */
2
+ export type TextEditorViewerElement = Readonly<{
3
+ direction: "ltr" | "rtl" | null;
4
+ alignment: "" | "left" | "right" | "center" | "justify" | "start" | "end";
5
+ indent: number;
6
+ }>;
7
+ export type TextEditorViewerText = Readonly<{
8
+ type: "text";
9
+ text: string;
10
+ format: number;
11
+ }>;
12
+ export type TextEditorViewerLineBreak = Readonly<{
13
+ type: "linebreak";
14
+ }>;
15
+ export type TextEditorViewerLink = Readonly<TextEditorViewerElement & {
16
+ type: "link";
17
+ url: string;
18
+ target: "_self" | "_blank";
19
+ ariaLabel: string | null;
20
+ title: string | null;
21
+ children: readonly (TextEditorViewerText | TextEditorViewerLineBreak)[];
22
+ }>;
23
+ export type TextEditorViewerInline = TextEditorViewerText | TextEditorViewerLineBreak | TextEditorViewerLink;
24
+ export type TextEditorViewerParagraph = Readonly<TextEditorViewerElement & {
25
+ type: "paragraph";
26
+ children: readonly TextEditorViewerInline[];
27
+ }>;
28
+ export type TextEditorViewerQuote = Readonly<TextEditorViewerElement & {
29
+ type: "quote";
30
+ children: readonly TextEditorViewerInline[];
31
+ }>;
32
+ export type TextEditorViewerHeading = Readonly<TextEditorViewerElement & {
33
+ type: "heading";
34
+ tag: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
35
+ children: readonly TextEditorViewerInline[];
36
+ }>;
37
+ export type TextEditorViewerList = Readonly<TextEditorViewerElement & {
38
+ type: "list";
39
+ listType: "bullet" | "number";
40
+ start: number;
41
+ children: readonly TextEditorViewerListItem[];
42
+ }>;
43
+ export type TextEditorViewerListItem = Readonly<TextEditorViewerElement & {
44
+ type: "listitem";
45
+ value: number;
46
+ children: readonly (TextEditorViewerInline | TextEditorViewerList)[];
47
+ }>;
48
+ export type TextEditorViewerBlock = TextEditorViewerParagraph | TextEditorViewerQuote | TextEditorViewerHeading | TextEditorViewerList;
49
+ export type TextEditorViewerNode = TextEditorViewerBlock | TextEditorViewerInline | TextEditorViewerListItem;
50
+ /** Неподдержанный документ не возвращает частично разобранный content. */
51
+ export type TextEditorViewerDocument = Readonly<{
52
+ status: "valid";
53
+ element: TextEditorViewerElement;
54
+ children: readonly TextEditorViewerBlock[];
55
+ }> | Readonly<{
56
+ status: "invalid";
57
+ }>;
58
+ //# sourceMappingURL=textEditorViewerTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textEditorViewerTypes.d.ts","sourceRoot":"","sources":["../../../src/text-editor/model/textEditorViewerTypes.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC9C,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,EAAE,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;IAC1E,MAAM,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC5F,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AACxE,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAC1C,uBAAuB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC,oBAAoB,GAAG,yBAAyB,CAAC,EAAE,CAAC;CACxE,CACD,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,GAAG,yBAAyB,GAAG,oBAAoB,CAAC;AAE7G,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAC/C,uBAAuB,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAA;CAAE,CAC5F,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,uBAAuB,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAA;CAAE,CAAC,CAAC;AACvI,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAC7C,uBAAuB,GAAG;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7C,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAC5C,CACD,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAC1C,uBAAuB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,wBAAwB,EAAE,CAAC;CAC9C,CACD,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAC9C,uBAAuB,GAAG;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC,sBAAsB,GAAG,oBAAoB,CAAC,EAAE,CAAC;CACrE,CACD,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,yBAAyB,GAAG,qBAAqB,GAAG,uBAAuB,GAAG,oBAAoB,CAAC;AACvI,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,GAAG,sBAAsB,GAAG,wBAAwB,CAAC;AAE7G,0EAA0E;AAC1E,MAAM,MAAM,wBAAwB,GACjC,QAAQ,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAC;IAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAA;CAAE,CAAC,GAC3G,QAAQ,CAAC;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type TextEditorViewerNode as TextEditorViewerNodeModel } from "../../model/textEditorViewerTypes";
2
+ export type TextEditorViewerNodeProps = Readonly<{
3
+ node: TextEditorViewerNodeModel;
4
+ }>;
5
+ /** Все tags и DOM props заданы renderer: исходные attributes не распространяются в JSX. */
6
+ export declare function TextEditorViewerNode({ node }: TextEditorViewerNodeProps): import("react").JSX.Element;
7
+ //# sourceMappingURL=TextEditorViewerNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextEditorViewerNode.d.ts","sourceRoot":"","sources":["../../../../src/text-editor/ui/viewer/TextEditorViewerNode.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,IAAI,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAI3G,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,yBAAyB,CAAA;CAAE,CAAC,CAAC;AAEtF,2FAA2F;AAC3F,wBAAgB,oBAAoB,CAAC,EAAE,IAAI,EAAE,EAAE,yBAAyB,+BA4CvE"}
@@ -0,0 +1,8 @@
1
+ import { type ReactNode } from "react";
2
+ import { type TextEditorViewerText as TextEditorViewerTextModel } from "../../model/textEditorViewerTypes";
3
+ export type TextEditorViewerTextProps = Readonly<{
4
+ node: TextEditorViewerTextModel;
5
+ }>;
6
+ /** Семантические обёртки сохраняют сочетания форматов, React экранирует сам текст. */
7
+ export declare function TextEditorViewerText({ node }: TextEditorViewerTextProps): string | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode>;
8
+ //# sourceMappingURL=TextEditorViewerText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextEditorViewerText.d.ts","sourceRoot":"","sources":["../../../../src/text-editor/ui/viewer/TextEditorViewerText.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,EAAE,KAAK,oBAAoB,IAAI,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE3G,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,yBAAyB,CAAA;CAAE,CAAC,CAAC;AAEtF,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,EAAE,IAAI,EAAE,EAAE,yBAAyB,6HAWvE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryuzaki13/react-foundation-ui",
3
- "version": "3.10.1",
3
+ "version": "3.12.0",
4
4
  "description": "Reusable React foundation UI primitives and Storybook stories.",
5
5
  "license": "MIT",
6
6
  "author": "Ryuzaki13",
@@ -131,6 +131,10 @@
131
131
  "types": "./dist/floating-arrow/index.d.ts",
132
132
  "import": "./dist/floating-arrow/index.js"
133
133
  },
134
+ "./floating-windows": {
135
+ "types": "./dist/floating-windows/index.d.ts",
136
+ "import": "./dist/floating-windows/index.js"
137
+ },
134
138
  "./fullscreen-portal": {
135
139
  "types": "./dist/fullscreen-portal/index.d.ts",
136
140
  "import": "./dist/fullscreen-portal/index.js"
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-E950Ehp0.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DGivDYe5.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./Badge.stories-BzQKeDqC.js";function b(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:h,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BvendKJ_.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-Bn1nLfdu.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./Badge.stories-C8jgD6Tm.js";function b(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:h,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
2
2
  `,(0,S.jsx)(u,{children:`Badge`}),`
3
3
  `,(0,S.jsx)(o,{children:`Компактная текстовая метка для статусов, категорий, фильтров и коротких служебных пометок`}),`
4
4
  `,(0,S.jsx)(t.p,{children:`Badge подходит для коротких подписей, которые должны быстро читаться и не перегружать интерфейс:`}),`
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-E950Ehp0.js";import{i,n as a,r as o,t as s}from"./BadgeList-WzFV9MB1.js";var c=t({Appearances:()=>h,Basic:()=>p,RemovableList:()=>_,Sizes:()=>g,Tones:()=>m,__namedExportsOrder:()=>v,default:()=>f}),l,u,d,f,p,m,h,g,_,v;function y(){return(y=e((()=>{l=n(),i(),a(),u=r(),{useArgs:d}=__STORYBOOK_MODULE_PREVIEW_API__,f={title:`UI/Badge`,component:o,args:{children:`Новый`,size:`md`,tone:`info`,appearance:`solid`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{children:{description:`Текст внутри бейджа.`,control:`text`},size:{description:`Размер бейджа.`,control:`inline-radio`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},tone:{description:`Цветовой тон бейджа.`,control:`inline-radio`,options:[`neutral`,`accent`,`brand`,`success`,`warning`,`error`,`info`]},appearance:{description:`Форма бейджа.`,control:`inline-radio`,options:[`solid`,`outline`,`ghost`,`transparent`]},onRemove:{description:`Показывает кнопку удаления и вызывает обработчик по клику.`,control:!1}}},p={render:function(){let[e]=d();return(0,u.jsx)(o,{...e})}},m={render:()=>(0,u.jsxs)(s,{children:[(0,u.jsx)(o,{tone:`neutral`,appearance:`outline`,children:`Neutral`}),(0,u.jsx)(o,{tone:`accent`,appearance:`solid`,children:`Акцент`}),(0,u.jsx)(o,{tone:`brand`,appearance:`solid`,children:`Бренд`}),(0,u.jsx)(o,{tone:`success`,appearance:`solid`,children:`Успешно`}),(0,u.jsx)(o,{tone:`warning`,appearance:`solid`,children:`Внимание`}),(0,u.jsx)(o,{tone:`error`,appearance:`solid`,children:`Ошибка`}),(0,u.jsx)(o,{tone:`info`,appearance:`solid`,children:`Информация`})]})},h={render:()=>(0,u.jsxs)(s,{children:[(0,u.jsx)(o,{tone:`neutral`,appearance:`solid`,children:`Solid`}),(0,u.jsx)(o,{tone:`neutral`,appearance:`outline`,children:`Outline`}),(0,u.jsx)(o,{tone:`info`,appearance:`ghost`,children:`Ghost`}),(0,u.jsx)(o,{tone:`warning`,appearance:`transparent`,children:`Transparent`})]})},g={render:()=>(0,u.jsxs)(s,{children:[(0,u.jsx)(o,{size:`xs`,children:`Extra Small`}),(0,u.jsx)(o,{size:`sm`,children:`Small`}),(0,u.jsx)(o,{size:`md`,children:`Medium`}),(0,u.jsx)(o,{size:`lg`,children:`Large`}),(0,u.jsx)(o,{size:`xl`,children:`Extra Large`})]})},_={render:()=>{let[e,t]=(0,l.useState)([`Фильтр A`,`Фильтр B`,`Фильтр C`]);return(0,u.jsx)(s,{children:e.map(e=>(0,u.jsx)(o,{tone:`info`,appearance:`outline`,onRemove:()=>t(t=>t.filter(t=>t!==e)),children:e},e))})}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-BvendKJ_.js";import{i,n as a,r as o,t as s}from"./BadgeList-DoZGQ7qG.js";var c=t({Appearances:()=>h,Basic:()=>p,RemovableList:()=>_,Sizes:()=>g,Tones:()=>m,__namedExportsOrder:()=>v,default:()=>f}),l,u,d,f,p,m,h,g,_,v;function y(){return(y=e((()=>{l=n(),i(),a(),u=r(),{useArgs:d}=__STORYBOOK_MODULE_PREVIEW_API__,f={title:`UI/Badge`,component:o,args:{children:`Новый`,size:`md`,tone:`info`,appearance:`solid`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{children:{description:`Текст внутри бейджа.`,control:`text`},size:{description:`Размер бейджа.`,control:`inline-radio`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},tone:{description:`Цветовой тон бейджа.`,control:`inline-radio`,options:[`neutral`,`accent`,`brand`,`success`,`warning`,`error`,`info`]},appearance:{description:`Форма бейджа.`,control:`inline-radio`,options:[`solid`,`outline`,`ghost`,`transparent`]},onRemove:{description:`Показывает кнопку удаления и вызывает обработчик по клику.`,control:!1}}},p={render:function(){let[e]=d();return(0,u.jsx)(o,{...e})}},m={render:()=>(0,u.jsxs)(s,{children:[(0,u.jsx)(o,{tone:`neutral`,appearance:`outline`,children:`Neutral`}),(0,u.jsx)(o,{tone:`accent`,appearance:`solid`,children:`Акцент`}),(0,u.jsx)(o,{tone:`brand`,appearance:`solid`,children:`Бренд`}),(0,u.jsx)(o,{tone:`success`,appearance:`solid`,children:`Успешно`}),(0,u.jsx)(o,{tone:`warning`,appearance:`solid`,children:`Внимание`}),(0,u.jsx)(o,{tone:`error`,appearance:`solid`,children:`Ошибка`}),(0,u.jsx)(o,{tone:`info`,appearance:`solid`,children:`Информация`})]})},h={render:()=>(0,u.jsxs)(s,{children:[(0,u.jsx)(o,{tone:`neutral`,appearance:`solid`,children:`Solid`}),(0,u.jsx)(o,{tone:`neutral`,appearance:`outline`,children:`Outline`}),(0,u.jsx)(o,{tone:`info`,appearance:`ghost`,children:`Ghost`}),(0,u.jsx)(o,{tone:`warning`,appearance:`transparent`,children:`Transparent`})]})},g={render:()=>(0,u.jsxs)(s,{children:[(0,u.jsx)(o,{size:`xs`,children:`Extra Small`}),(0,u.jsx)(o,{size:`sm`,children:`Small`}),(0,u.jsx)(o,{size:`md`,children:`Medium`}),(0,u.jsx)(o,{size:`lg`,children:`Large`}),(0,u.jsx)(o,{size:`xl`,children:`Extra Large`})]})},_={render:()=>{let[e,t]=(0,l.useState)([`Фильтр A`,`Фильтр B`,`Фильтр C`]);return(0,u.jsx)(s,{children:e.map(e=>(0,u.jsx)(o,{tone:`info`,appearance:`outline`,onRemove:()=>t(t=>t.filter(t=>t!==e)),children:e},e))})}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
2
2
  render: function Render() {
3
3
  const [args] = useArgs<BadgeStoryArgs>();
4
4
  return <Badge {...args} />;
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./x-DZpfbNy0.js";import{n as i}from"./iframe-E950Ehp0.js";import{a,i as o}from"./utils-tg3ibbzi.js";import{a as s,l as c}from"./array-D-_yMMUK-BBmW5vUr.js";import{n as l,t as u}from"./FloatingPopover-D8FScEoc.js";import{a as d,i as f,r as p,t as m}from"./uiClasses-BblrV9p1.js";import{n as h,t as g}from"./FlexContainer-4Ap7vbIt.js";function _({maxChar:e,placement:t=`left`,closeDelay:n=0,maxWidth:r,children:i,block:a,state:o,textWrap:s,textWrapProps:l}){let d=c(i);if(!d.length||e&&d.length<e)return(0,v.jsx)(`span`,{children:d});let f=s??`div`,p={style:{display:a?`block`:`inline-block`,width:e?`${e-3}ch`:`auto`},className:`textOverflow`},m={...l,...p,style:{...l?.style,...p.style},className:[l?.className,p.className].filter(Boolean).join(` `)};return(0,v.jsx)(u,{state:o,placement:t,openOnHover:!0,content:d,closeDelay:n,maxWidth:r,children:(0,v.jsx)(f,{...m,children:d})})}var v;function y(){return(y=e((()=>{s(),l(),v=i(),_.__docgenInfo={description:``,methods:[],displayName:`TextOverflow`,props:{children:{required:!0,tsType:{name:`string`},description:``},maxChar:{required:!1,tsType:{name:`number`},description:``},maxWidth:{required:!1,tsType:{name:`number`},description:`Максимальная ширина тултипа в em.`},placement:{required:!1,tsType:{name:`Placement`},description:``,defaultValue:{value:`"left"`,computed:!1}},closeDelay:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`0`,computed:!1}},block:{required:!1,tsType:{name:`literal`,value:`true`},description:`Для работы text-overflow элемент обязан быть блочным или inline-block.
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./x-CsG3nxct.js";import{n as i}from"./iframe-BvendKJ_.js";import{a,i as o}from"./utils-tg3ibbzi.js";import{a as s,l as c}from"./array-D-_yMMUK-BBmW5vUr.js";import{n as l,t as u}from"./FloatingPopover-Qm2OYQyi.js";import{a as d,i as f,r as p,t as m}from"./uiClasses-BblrV9p1.js";import{n as h,t as g}from"./FlexContainer-DNTMFsKB.js";function _({maxChar:e,placement:t=`left`,closeDelay:n=0,maxWidth:r,children:i,block:a,state:o,textWrap:s,textWrapProps:l}){let d=c(i);if(!d.length||e&&d.length<e)return(0,v.jsx)(`span`,{children:d});let f=s??`div`,p={style:{display:a?`block`:`inline-block`,width:e?`${e-3}ch`:`auto`},className:`textOverflow`},m={...l,...p,style:{...l?.style,...p.style},className:[l?.className,p.className].filter(Boolean).join(` `)};return(0,v.jsx)(u,{state:o,placement:t,openOnHover:!0,content:d,closeDelay:n,maxWidth:r,children:(0,v.jsx)(f,{...m,children:d})})}var v;function y(){return(y=e((()=>{s(),l(),v=i(),_.__docgenInfo={description:``,methods:[],displayName:`TextOverflow`,props:{children:{required:!0,tsType:{name:`string`},description:``},maxChar:{required:!1,tsType:{name:`number`},description:``},maxWidth:{required:!1,tsType:{name:`number`},description:`Максимальная ширина тултипа в em.`},placement:{required:!1,tsType:{name:`Placement`},description:``,defaultValue:{value:`"left"`,computed:!1}},closeDelay:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`0`,computed:!1}},block:{required:!1,tsType:{name:`literal`,value:`true`},description:`Для работы text-overflow элемент обязан быть блочным или inline-block.
2
2
  Если в качестве обёртки передается инлайновый компонент, то он будет
3
3
  перезаписан через стили на display: block или inline-block в зависимости
4
4
  от установки данного пропса.`},state:{required:!1,tsType:{name:`union`,raw:`"information" | "error" | "warning" | "success" | "negative"`,elements:[{name:`literal`,value:`"information"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"negative"`}]},description:``},textWrap:{required:!1,tsType:{name:`T`},description:``},textWrapProps:{required:!1,tsType:{name:`Omit`,elements:[{name:`ComponentProps`,elements:[{name:`T`}],raw:`ComponentProps<T>`},{name:`literal`,value:`"children"`}],raw:`Omit<ComponentProps<T>, "children">`},description:``}}}})))()}var b,x,S,C,w,T,E,D,O,k;function A(){return(A=e((()=>{b=`qBtmnH`,x=`p-HsHY`,S=`u9tQAE`,C=`FRScRz`,w=`W13uQO`,T=`_3IRcM9`,E=`R3ybI7`,D=`DdWAaC`,O=`_5cXBQF`,k={badge:b,passive:x,sizeXs:S,sizeSm:C,sizeMd:w,sizeLg:T,sizeXl:E,content:D,removeButton:O}})))()}function j({children:e,size:t=`sm`,tone:n,appearance:i,className:o,onRemove:s}){let c=n??`neutral`,l=d({tone:n,appearance:i,fallbackTone:c,fallbackAppearance:c===`neutral`?`outline`:`solid`});return(0,M.jsxs)(`div`,{className:a(k.badge,N[t],p(l.tone),m(l.appearance),!s&&k.passive,o),children:[(0,M.jsx)(_,{maxChar:25,placement:`top`,block:!0,textWrapProps:{className:k.content},children:String(e)}),s&&(0,M.jsx)(`button`,{type:`button`,onClick:s,className:k.removeButton,"aria-label":`Удалить бейдж`,"data-ui":`badge-remove-button`,"data-action":`remove-badge`,children:(0,M.jsx)(r,{})})]})}var M,N;function P(){return(P=e((()=>{o(),n(),y(),f(),A(),M=i(),N={xs:k.sizeXs,sm:k.sizeSm,md:k.sizeMd,lg:k.sizeLg,xl:k.sizeXl},j.__docgenInfo={description:`Компактный индикатор для статусов, категорий и коротких служебных меток.`,methods:[],displayName:`Badge`,props:{children:{required:!0,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``,defaultValue:{value:`"sm"`,computed:!1}},tone:{required:!1,tsType:{name:`union`,raw:`"accent" | "neutral" | "brand" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"accent"`},{name:`literal`,value:`"neutral"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`}]},description:``},appearance:{required:!1,tsType:{name:`union`,raw:`"solid" | "outline" | "ghost" | "transparent"`,elements:[{name:`literal`,value:`"solid"`},{name:`literal`,value:`"outline"`},{name:`literal`,value:`"ghost"`},{name:`literal`,value:`"transparent"`}]},description:``},className:{required:!1,tsType:{name:`string`},description:``},onRemove:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}}}})))()}function F({children:e}){return(0,L.jsx)(g,{inline:!0,wrap:!0,gap:`sm`,align:`baseline`,children:I.Children.map(e,(e,t)=>(0,L.jsx)(I.Fragment,{children:e},t))})}var I,L;function R(){return(R=e((()=>{I=t(),h(),L=i(),F.__docgenInfo={description:"Контейнер для группы `Badge`, который выстраивает элементы в единый список с предсказуемыми отступами. Используется для компактного вывода набора меток или фильтров.",methods:[],displayName:`BadgeList`,props:{children:{required:!0,tsType:{name:`Array`,elements:[{name:`ReactElement`,elements:[{name:`union`,raw:`typeof Badge | null | undefined | false`,elements:[{name:`Badge`},{name:`null`},{name:`undefined`},{name:`literal`,value:`false`}]}],raw:`ReactElement<typeof Badge | null | undefined | false>`}],raw:`ReactElement<typeof Badge | null | undefined | false>[]`},description:``}}}})))()}export{P as i,R as n,j as r,F as t};