@ryuzaki13/react-foundation-ui 3.11.0 → 3.13.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 (328) hide show
  1. package/dist/chunks/{TextEditorLexicalClient-Cj6yjCGm.js → TextEditorLexicalClient-BwKsJG31.js} +347 -338
  2. package/dist/chunks/TextEditorLexicalClient-BwKsJG31.js.map +1 -0
  3. package/dist/chunks/types-CxXyru6U.js.map +1 -1
  4. package/dist/styles.css +1 -1
  5. package/dist/text-editor/LinkDialog.d.ts +2 -1
  6. package/dist/text-editor/LinkDialog.d.ts.map +1 -1
  7. package/dist/text-editor/TextEditorDialogs.d.ts +3 -2
  8. package/dist/text-editor/TextEditorDialogs.d.ts.map +1 -1
  9. package/dist/text-editor/TextEditorLexicalClient.d.ts +1 -1
  10. package/dist/text-editor/TextEditorLexicalClient.d.ts.map +1 -1
  11. package/dist/text-editor/TextEditorLexicalViewer.d.ts +10 -0
  12. package/dist/text-editor/TextEditorLexicalViewer.d.ts.map +1 -0
  13. package/dist/text-editor/editorModel.d.ts +18 -1
  14. package/dist/text-editor/editorModel.d.ts.map +1 -1
  15. package/dist/text-editor/index.d.ts +2 -1
  16. package/dist/text-editor/index.d.ts.map +1 -1
  17. package/dist/text-editor/index.js +298 -7
  18. package/dist/text-editor/index.js.map +1 -1
  19. package/dist/text-editor/lib/viewer/getTextEditorViewerElementStyle.d.ts +5 -0
  20. package/dist/text-editor/lib/viewer/getTextEditorViewerElementStyle.d.ts.map +1 -0
  21. package/dist/text-editor/lib/viewer/parseTextEditorViewerDocument.d.ts +4 -0
  22. package/dist/text-editor/lib/viewer/parseTextEditorViewerDocument.d.ts.map +1 -0
  23. package/dist/text-editor/lib/viewer/resolveTextEditorViewerLink.d.ts +3 -0
  24. package/dist/text-editor/lib/viewer/resolveTextEditorViewerLink.d.ts.map +1 -0
  25. package/dist/text-editor/model/hooks/useTextEditorLexicalActions.d.ts.map +1 -1
  26. package/dist/text-editor/model/textEditorViewerTypes.d.ts +58 -0
  27. package/dist/text-editor/model/textEditorViewerTypes.d.ts.map +1 -0
  28. package/dist/text-editor/toolbar/LinkButtons.d.ts +2 -1
  29. package/dist/text-editor/toolbar/LinkButtons.d.ts.map +1 -1
  30. package/dist/text-editor/toolbar/TextEditorToolbarLexical.d.ts.map +1 -1
  31. package/dist/text-editor/ui/viewer/TextEditorViewerNode.d.ts +7 -0
  32. package/dist/text-editor/ui/viewer/TextEditorViewerNode.d.ts.map +1 -0
  33. package/dist/text-editor/ui/viewer/TextEditorViewerText.d.ts +8 -0
  34. package/dist/text-editor/ui/viewer/TextEditorViewerText.d.ts.map +1 -0
  35. package/package.json +1 -1
  36. package/storybook-static/assets/{Badge-CVgLMAJT.js → Badge-Bg4hGIjf.js} +1 -1
  37. package/storybook-static/assets/{Badge.stories-KeadkKsz.js → Badge.stories-DvgJJzd7.js} +1 -1
  38. package/storybook-static/assets/{BadgeList-_jBtMkE3.js → BadgeList-OoSc_pn4.js} +1 -1
  39. package/storybook-static/assets/{BarcodeScannerDialog.stories-J9XDExKK.js → BarcodeScannerDialog.stories-e2CjbCdx.js} +1 -1
  40. package/storybook-static/assets/{Button-C-uRygWz.js → Button-CQU_2OUm.js} +1 -1
  41. package/storybook-static/assets/{Button-DegBPiAl.js → Button-CmAd-UMc.js} +1 -1
  42. package/storybook-static/assets/{Button.stories-Ds4zCq_9.js → Button.stories-CdXudj27.js} +1 -1
  43. package/storybook-static/assets/{CalendarView-iyr_ipPy.js → CalendarView-CfpxnEan.js} +1 -1
  44. package/storybook-static/assets/{CheckBox-B0zrARHA.js → CheckBox-CtrHIcza.js} +1 -1
  45. package/storybook-static/assets/{CheckBox-nBqHJGY9.js → CheckBox-HehqIiiV.js} +1 -1
  46. package/storybook-static/assets/{CheckBox.stories-CxO9FwA7.js → CheckBox.stories-C8DlH2mz.js} +1 -1
  47. package/storybook-static/assets/{Color-6AOWCN3U-Dzuzn5Yr.js → Color-6AOWCN3U-D9jGjZ1P.js} +1 -1
  48. package/storybook-static/assets/{ContextMenu-BC5OXqVj.js → ContextMenu-BxHTZhuC.js} +1 -1
  49. package/storybook-static/assets/{ContextMenu-CnZu58rQ.js → ContextMenu-t1s2BKrj.js} +1 -1
  50. package/storybook-static/assets/{ContextMenu.stories-CPdTdVV7.js → ContextMenu.stories-CMbIfQb7.js} +1 -1
  51. package/storybook-static/assets/{DateInput-B5j7kofa.js → DateInput-9FbhYoqV.js} +1 -1
  52. package/storybook-static/assets/{DateInput-CuYe4WXO.js → DateInput-Dm6Kiwka.js} +1 -1
  53. package/storybook-static/assets/{DateInput.stories-C4ZaIPUG.js → DateInput.stories-CPAnx1Ii.js} +1 -1
  54. package/storybook-static/assets/{DateRangePresetSelect-CbDK9t1J.js → DateRangePresetSelect-6l9Q7na9.js} +1 -1
  55. package/storybook-static/assets/{DateRangePresetSelect-Cg6yPY0K.js → DateRangePresetSelect-CyxvE8Px.js} +1 -1
  56. package/storybook-static/assets/{DateRangePresetSelect.stories-DPWUHjXu.js → DateRangePresetSelect.stories-UZ8CMuwl.js} +1 -1
  57. package/storybook-static/assets/{DeprecatedMultiSelect-DkGsEVRD.js → DeprecatedMultiSelect-C04-2wDB.js} +1 -1
  58. package/storybook-static/assets/{DeprecatedMultiSelect-DCReLsN-.js → DeprecatedMultiSelect-CySF9Hqp.js} +1 -1
  59. package/storybook-static/assets/{DeprecatedMultiSelect.stories-tbYFDSML.js → DeprecatedMultiSelect.stories-FANxJnL0.js} +1 -1
  60. package/storybook-static/assets/{Detail-CtVpK6xU.js → Detail-CLPDP9b0.js} +1 -1
  61. package/storybook-static/assets/{Detail.stories-zAQfXGuT.js → Detail.stories-BmBFOXYz.js} +1 -1
  62. package/storybook-static/assets/{Dialog-JetMtpYt.js → Dialog-Co-EPLF-.js} +1 -1
  63. package/storybook-static/assets/{Dialog-B9ltl4hS.js → Dialog-Pzgcq_7r.js} +1 -1
  64. package/storybook-static/assets/{Dialog.stories-tJymN3yq.js → Dialog.stories-B4DitG-A.js} +1 -1
  65. package/storybook-static/assets/{Disclosure-j-RCrVFs.js → Disclosure-Bt0yvf3r.js} +1 -1
  66. package/storybook-static/assets/{Disclosure.stories-4Jj2XNlo.js → Disclosure.stories-Bx4Z3eyR.js} +1 -1
  67. package/storybook-static/assets/{DisclosureGroup-CM7GlGI4.js → DisclosureGroup-CMheYvQ6.js} +1 -1
  68. package/storybook-static/assets/{DocsRenderer-JROSPFPF-DevtpZi5.js → DocsRenderer-JROSPFPF-B4cQpl4D.js} +1 -1
  69. package/storybook-static/assets/{DropZone-CPrhOtX-.js → DropZone-D0j1N6Cy.js} +1 -1
  70. package/storybook-static/assets/{DropZone-Bwo7NG5D.js → DropZone-N4HTfImG.js} +1 -1
  71. package/storybook-static/assets/{DropZone.stories-VyNhIaxw.js → DropZone.stories-CPHCbKF-.js} +1 -1
  72. package/storybook-static/assets/{DropdownMenu-DMWZzFK1.js → DropdownMenu-Bf0k8HDo.js} +1 -1
  73. package/storybook-static/assets/{ExpandableActionPanel-DmKB3xVB.js → ExpandableActionPanel-QyKVmfxd.js} +1 -1
  74. package/storybook-static/assets/{ExpandableActionPanel.stories-Kh_OSEIl.js → ExpandableActionPanel.stories-BmA0hkNv.js} +1 -1
  75. package/storybook-static/assets/{Flex-BZKhuaao.js → Flex-7J7Ai0St.js} +1 -1
  76. package/storybook-static/assets/{Flex.stories-CrHxjVCH.js → Flex.stories-DTJoxIVr.js} +1 -1
  77. package/storybook-static/assets/{FlexContainer-DGc37vCr.js → FlexContainer-CeCwnfbr.js} +1 -1
  78. package/storybook-static/assets/{FlexItem-DYv72TvP.js → FlexItem-D4epTRUG.js} +1 -1
  79. package/storybook-static/assets/{FloatingPopover-Bd3b1U8c.js → FloatingPopover-4lCnQQo9.js} +1 -1
  80. package/storybook-static/assets/{FloatingWindows.stories-Cs_i092m.js → FloatingWindows.stories-BziZWCR7.js} +1 -1
  81. package/storybook-static/assets/FormattedTableCell-SClhK1-d.js +15 -0
  82. package/storybook-static/assets/{Grid-DUcSdqsI.js → Grid-BEn16yj_.js} +1 -1
  83. package/storybook-static/assets/{Grid-DIKudfVu.js → Grid-Bv9iz3Ru.js} +1 -1
  84. package/storybook-static/assets/{Grid.stories-sZUaIp7v.js → Grid.stories-DCcd1XpQ.js} +1 -1
  85. package/storybook-static/assets/{GridContainer-C5r-VTTG.js → GridContainer-tbwtNWmU.js} +1 -1
  86. package/storybook-static/assets/{ImageCropper.stories-Bk3SF90a.js → ImageCropper.stories-Cj7_L3px.js} +1 -1
  87. package/storybook-static/assets/{ImageRenderer-CM-YetP0.js → ImageRenderer-B8sjaCxb.js} +1 -1
  88. package/storybook-static/assets/{ImageRenderer.stories-CMqKyVuX.js → ImageRenderer.stories-BjjI8Xl3.js} +1 -1
  89. package/storybook-static/assets/{ImageView.stories-9IjWDUev.js → ImageView.stories-DSQT9rOC.js} +1 -1
  90. package/storybook-static/assets/{ImageViewer.stories-D-Zzvzh3.js → ImageViewer.stories-BwSjtNZu.js} +2 -2
  91. package/storybook-static/assets/{ImageViewerRuntime-BRWmVnG3.js → ImageViewerRuntime-BYsmm3rq.js} +1 -1
  92. package/storybook-static/assets/{Input-BaEhNNL0.js → Input-A2NM7h5s.js} +1 -1
  93. package/storybook-static/assets/{Input-YuUUu0DD.js → Input-DFpaY5iR.js} +1 -1
  94. package/storybook-static/assets/{Input.stories-CoJY4vR8.js → Input.stories-Dr3bILG0.js} +1 -1
  95. package/storybook-static/assets/{InputDateTime-CPlDTMTI.js → InputDateTime-B1HZuWxu.js} +1 -1
  96. package/storybook-static/assets/{InputDateTime.stories-DaOA4pFM.js → InputDateTime.stories-BRgylAlk.js} +1 -1
  97. package/storybook-static/assets/{InputFile-7PMO3B4Q.js → InputFile-BiYYtArL.js} +1 -1
  98. package/storybook-static/assets/{InputFile-D2HPvbt_.js → InputFile-DJZa1zb6.js} +1 -1
  99. package/storybook-static/assets/{InputFile.stories-CD4sJtXF.js → InputFile.stories-fGygLQ4u.js} +1 -1
  100. package/storybook-static/assets/{InputFiles-DwgBtqPe.js → InputFiles-BhE9kv5d.js} +1 -1
  101. package/storybook-static/assets/{InputFiles-DSOs_hpc.js → InputFiles-Dhx7VEsV.js} +1 -1
  102. package/storybook-static/assets/{InputFiles.stories-B2zPOUXW.js → InputFiles.stories-Dr4Qonyz.js} +1 -1
  103. package/storybook-static/assets/{InputFilesList-DWtH6HFC.js → InputFilesList-Cv2Gpuuc.js} +1 -1
  104. package/storybook-static/assets/{InputImage-Cke0I8XV.js → InputImage-CcGsKNGs.js} +1 -1
  105. package/storybook-static/assets/{InputImage-CnTU-bKF.js → InputImage-CsX9WLK_.js} +1 -1
  106. package/storybook-static/assets/{InputImage.stories-CadyFqUh.js → InputImage.stories-DBXKFyN8.js} +1 -1
  107. package/storybook-static/assets/{InteractiveComponents-cNgymLXT.js → InteractiveComponents-o5dGoBer.js} +1 -1
  108. package/storybook-static/assets/{InteractiveComponents.stories-c5kIdj-d.js → InteractiveComponents.stories-CbpCs1ke.js} +1 -1
  109. package/storybook-static/assets/{LayoutPicker-u5tv4tmF.js → LayoutPicker-BTV50163.js} +1 -1
  110. package/storybook-static/assets/{LayoutPicker-BydBdeCh.js → LayoutPicker-wQBp2vRv.js} +1 -1
  111. package/storybook-static/assets/{LayoutPicker.stories-ZcTgJxX5.js → LayoutPicker.stories-BA9v21Xx.js} +1 -1
  112. package/storybook-static/assets/Lexical.prod-DSYr9I3p.js +11 -0
  113. package/storybook-static/assets/{Listbox-CaBDvhDA.js → Listbox-CiYd52jg.js} +1 -1
  114. package/storybook-static/assets/{Listbox-CzmfAAEG.js → Listbox-RA3seYue.js} +1 -1
  115. package/storybook-static/assets/{Listbox.stories-B_tFWmxp.js → Listbox.stories-DFPgEF8r.js} +1 -1
  116. package/storybook-static/assets/{NoData-CRi9NzcI.js → LoadingMessage-Ce0vqRgG.js} +1 -1
  117. package/storybook-static/assets/{Modal-DIJuHLSp.js → Modal-BQsAioCj.js} +1 -1
  118. package/storybook-static/assets/{Modal-CIptTLdh.js → Modal-BpU6G6JZ.js} +1 -1
  119. package/storybook-static/assets/{Modal.stories-BAh1Lzf0.js → Modal.stories-CQrrk4EW.js} +1 -1
  120. package/storybook-static/assets/{ModalManagerProvider-DH2lt3jw.js → ModalManagerProvider-CoqdrSRD.js} +1 -1
  121. package/storybook-static/assets/{MultiSelect-CbcU2Cam.js → MultiSelect-CU9zjw_p.js} +1 -1
  122. package/storybook-static/assets/{MultiSelect-OPkS-VFp.js → MultiSelect-CZNPmVvS.js} +1 -1
  123. package/storybook-static/assets/{MultiSelect.stories-jghnBwe0.js → MultiSelect.stories-DFz-EHdG.js} +1 -1
  124. package/storybook-static/assets/{MultiSelectCore-AgK9lN-8.js → MultiSelectCore-Cvyz709z.js} +1 -1
  125. package/storybook-static/assets/NoData-Db8STACh.js +1 -0
  126. package/storybook-static/assets/{NotificationsHost-C8sCDEzY.js → NotificationsHost-BfICsokh.js} +1 -1
  127. package/storybook-static/assets/{NotificationsHost.stories-BxpWtMHl.js → NotificationsHost.stories-DlihTcqk.js} +1 -1
  128. package/storybook-static/assets/{ODataMultiSelect-Cjptiw3k.js → ODataMultiSelect-bFKNwfVi.js} +1 -1
  129. package/storybook-static/assets/{ODataMultiSelect.stories-B-tBcHkU.js → ODataMultiSelect.stories-dSgAmYNP.js} +1 -1
  130. package/storybook-static/assets/{ODataSelect-BdVlf2WW.js → ODataSelect-B-VxiKqe.js} +1 -1
  131. package/storybook-static/assets/{ODataSelect.stories-DZv8DgW4.js → ODataSelect.stories-IrICK-VV.js} +1 -1
  132. package/storybook-static/assets/{ODataTreeMultiSelect-B83uLKnT.js → ODataTreeMultiSelect-1-ZKOoT5.js} +1 -1
  133. package/storybook-static/assets/{ODataTreeMultiSelect.stories-k92VjXYz.js → ODataTreeMultiSelect.stories-Dj2gz4OX.js} +1 -1
  134. package/storybook-static/assets/{ODataTreeSelect-CkZeBBoA.js → ODataTreeSelect-C03yKX3Q.js} +1 -1
  135. package/storybook-static/assets/{ODataTreeSelect.stories-COweaWEr.js → ODataTreeSelect.stories-BaWPoCj8.js} +1 -1
  136. package/storybook-static/assets/{OneStepScroller-dD9RSWvg.js → OneStepScroller-C1e40EsR.js} +1 -1
  137. package/storybook-static/assets/{Option-lTkoUcHa.js → Option-DkhmepGt.js} +1 -1
  138. package/storybook-static/assets/{OptionButton-Bt6YtqRZ.js → OptionButton-CaOcFLRc.js} +1 -1
  139. package/storybook-static/assets/{OptionContent-C7Zoef1L.js → OptionContent-C2VjIa7E.js} +1 -1
  140. package/storybook-static/assets/{OptionContentContainer-xpO-es_t.js → OptionContentContainer-D9gbmo8X.js} +1 -1
  141. package/storybook-static/assets/{PeriodSelect-DkGZmPFu.js → PeriodSelect-CKHsqr9Q.js} +1 -1
  142. package/storybook-static/assets/{PeriodSelect-CmGjITS0.js → PeriodSelect-DyuBxEQO.js} +1 -1
  143. package/storybook-static/assets/{PeriodSelect.stories-BxkZen1s.js → PeriodSelect.stories-Clvkah1Y.js} +1 -1
  144. package/storybook-static/assets/{PickerField-vwGcXNU3.js → PickerField-BeafhNsw.js} +1 -1
  145. package/storybook-static/assets/{PickerTriggerActions-BVO2pwu2.js → PickerTriggerActions-DiC3sf79.js} +1 -1
  146. package/storybook-static/assets/{Popover-DU0wD6MT.js → Popover-CTWgpldX.js} +1 -1
  147. package/storybook-static/assets/{Popover-PRWJVARx.js → Popover-Cic2guk_.js} +1 -1
  148. package/storybook-static/assets/{Popover.stories-CXKDCIfT.js → Popover.stories-BN8W4Ioo.js} +1 -1
  149. package/storybook-static/assets/{PresetRangeDateInput-B1oR9Z-A.js → PresetRangeDateInput-BlwDGFlO.js} +1 -1
  150. package/storybook-static/assets/{PresetRangeDateInput-DUcxF5lh.js → PresetRangeDateInput-Cw-UACKj.js} +1 -1
  151. package/storybook-static/assets/{PresetRangeDateInput.stories-CAPHV6_P.js → PresetRangeDateInput.stories-BW4A9N6I.js} +1 -1
  152. package/storybook-static/assets/{PresetSelect-Hrow5Qbz.js → PresetSelect-BROMDIaD.js} +1 -1
  153. package/storybook-static/assets/{README-CHgqsGMV.js → README--dlFTbfU.js} +1 -1
  154. package/storybook-static/assets/{README-w3_FegOo.js → README-0oBzUW7p.js} +1 -1
  155. package/storybook-static/assets/{README-CF5B-uBm.js → README-3_ON5xt9.js} +1 -1
  156. package/storybook-static/assets/{README-FJ4JNfan.js → README-B2Q8nqgC.js} +1 -1
  157. package/storybook-static/assets/{README-JqCoy91R.js → README-B2a17RtT.js} +1 -1
  158. package/storybook-static/assets/{README-Cb_U_ZYK.js → README-B2o_mu2p.js} +1 -1
  159. package/storybook-static/assets/{README-MUzkojYd.js → README-B4UtPkAG.js} +1 -1
  160. package/storybook-static/assets/{README-DjM1av8U.js → README-BC-mtx0Z.js} +1 -1
  161. package/storybook-static/assets/{README-mq6pyk4G.js → README-BEo-chiK.js} +1 -1
  162. package/storybook-static/assets/{README-CxBqJjI3.js → README-BKgDrLYy.js} +1 -1
  163. package/storybook-static/assets/{README-ctVjdbq7.js → README-BU-hpYkT.js} +1 -1
  164. package/storybook-static/assets/{README-BwSjP1rm.js → README-BZO4LN8h.js} +1 -1
  165. package/storybook-static/assets/{README-BCXjh3I1.js → README-Bt7qMnXG.js} +1 -1
  166. package/storybook-static/assets/{README-CDq7upsw.js → README-BzXKbqC2.js} +1 -1
  167. package/storybook-static/assets/{README-Xu3cmYZg.js → README-C0oFjEzk.js} +1 -1
  168. package/storybook-static/assets/{README-DmT1wyUb.js → README-C4DwwmPx.js} +1 -1
  169. package/storybook-static/assets/{README-C_hI3IVn.js → README-CC7qsfLO.js} +1 -1
  170. package/storybook-static/assets/{README-SkcZXYo1.js → README-CCA-VcWp.js} +1 -1
  171. package/storybook-static/assets/{README-D_iA9J4Q.js → README-CM3GEer1.js} +1 -1
  172. package/storybook-static/assets/{README-BCBBtU0T.js → README-CMm_WVI_.js} +1 -1
  173. package/storybook-static/assets/{README-BJXCE3us.js → README-Ch0dHOCi.js} +1 -1
  174. package/storybook-static/assets/{README-CRfg4Opx.js → README-CovA1JtH.js} +1 -1
  175. package/storybook-static/assets/{README-DA8e0atn.js → README-CsAmAsnQ.js} +1 -1
  176. package/storybook-static/assets/{README-DnpmMCNN.js → README-CsgpoZpo.js} +1 -1
  177. package/storybook-static/assets/{README-DYjyXvbd.js → README-CyTthj47.js} +1 -1
  178. package/storybook-static/assets/{README-O1ww7U1S.js → README-D42tlbcC.js} +1 -1
  179. package/storybook-static/assets/{README-CRk_ElRL.js → README-D7e1q280.js} +1 -1
  180. package/storybook-static/assets/{README-COzEPNJ8.js → README-DEIwHKH_.js} +1 -1
  181. package/storybook-static/assets/{README-DUVORqie.js → README-DJXuAagO.js} +1 -1
  182. package/storybook-static/assets/{README-CGalXaw7.js → README-DO98xR7D.js} +1 -1
  183. package/storybook-static/assets/{README-CdDd6nD8.js → README-DOCP85Ok.js} +1 -1
  184. package/storybook-static/assets/{README-De02nG6s.js → README-DV0qQm_q.js} +1 -1
  185. package/storybook-static/assets/{README-AWtoYOeO.js → README-D_wqIsQU.js} +1 -1
  186. package/storybook-static/assets/{README-BPOSX1IH.js → README-Da2MtxkC.js} +1 -1
  187. package/storybook-static/assets/{README-o-a96Aib.js → README-DgnwOBAf.js} +1 -1
  188. package/storybook-static/assets/{README-CDYORt73.js → README-Dh-aESek.js} +1 -1
  189. package/storybook-static/assets/{README-BLog3wnj.js → README-Dh3cmlxY.js} +1 -1
  190. package/storybook-static/assets/{README-CF79JAmm.js → README-DkqWljOh.js} +1 -1
  191. package/storybook-static/assets/{README-BEUQd7JO.js → README-Dns7UYFR.js} +1 -1
  192. package/storybook-static/assets/{README-bcnh89ek.js → README-Dp9qT5k5.js} +1 -1
  193. package/storybook-static/assets/{README-C8-H1dVZ.js → README-Dq_L-Ug6.js} +1 -1
  194. package/storybook-static/assets/{README-CTbRRHIT.js → README-DxnLeJiR.js} +1 -1
  195. package/storybook-static/assets/{README-Cu3r4RYC.js → README-JNaV5buf.js} +1 -1
  196. package/storybook-static/assets/{README-BDdhvdKa.js → README-Sg5qacmO.js} +1 -1
  197. package/storybook-static/assets/{README-BB_tSzAG.js → README-Y_9dubMU.js} +1 -1
  198. package/storybook-static/assets/{README-f5UPnPkY.js → README-Zi-FFn8W.js} +1 -1
  199. package/storybook-static/assets/{README-UfCsOg0n.js → README-g61K1aLN.js} +1 -1
  200. package/storybook-static/assets/{README-D0EguYwa.js → README-gW1fz6Ad.js} +1 -1
  201. package/storybook-static/assets/{README-CbCzYjzO.js → README-ivZpRido.js} +1 -1
  202. package/storybook-static/assets/{README-zelg96nd.js → README-kq33WRAi.js} +1 -1
  203. package/storybook-static/assets/{README-JrppLPED.js → README-lXA9AEv5.js} +1 -1
  204. package/storybook-static/assets/{README-BIHT1kGT.js → README-trL-e_Hw.js} +1 -1
  205. package/storybook-static/assets/{README-diVWU6bQ.js → README-yOf-BvTs.js} +1 -1
  206. package/storybook-static/assets/{RadioButton-BztQMLNR.js → RadioButton-Bc-qW8X4.js} +1 -1
  207. package/storybook-static/assets/{RadioButton-DUOPHyRt.js → RadioButton-dLi6i_d_.js} +1 -1
  208. package/storybook-static/assets/{RadioButton.stories-BOE5cGej.js → RadioButton.stories-fyW8-L85.js} +1 -1
  209. package/storybook-static/assets/RadioGroup-K_pYzh4S.js +1 -0
  210. package/storybook-static/assets/{RadioGroup-QICEWbjz.js → RadioGroup-hx5JHhIo.js} +1 -1
  211. package/storybook-static/assets/{RadioGroup.stories-f2qU7hhM.js → RadioGroup.stories-DkJM4C8g.js} +1 -1
  212. package/storybook-static/assets/{ResponsiveLayoutPreview-BWBLsr8u.js → ResponsiveLayoutPreview-2trckzJQ.js} +1 -1
  213. package/storybook-static/assets/{Scrollable-CAnjXb6_.js → Scrollable-BKrnU0ak.js} +1 -1
  214. package/storybook-static/assets/{Scrollable-Cc641kuG.js → Scrollable-D4W1DFQg.js} +1 -1
  215. package/storybook-static/assets/{Scrollable.stories-ZQT-1f1f.js → Scrollable.stories-D27cJCFP.js} +1 -1
  216. package/storybook-static/assets/{Select-D6RLm9D5.js → Select-BdSn2R7K.js} +1 -1
  217. package/storybook-static/assets/{Select-BeoH_3V4.js → Select-DEZyRp-R.js} +1 -1
  218. package/storybook-static/assets/{Select.stories-DI6pVDzi.js → Select.stories-D1Z2CcxZ.js} +1 -1
  219. package/storybook-static/assets/{Separator-tkZoR8Ft.js → Separator-5i4GBBEP.js} +1 -1
  220. package/storybook-static/assets/{Separator-De9vEg4j.js → Separator-BgRJ7Ocd.js} +1 -1
  221. package/storybook-static/assets/{Separator.stories-CGZrsdLJ.js → Separator.stories-CgSiKmhl.js} +1 -1
  222. package/storybook-static/assets/{SerializableSelect-BWgkYLIe.js → SerializableSelect-DyFu3F0w.js} +1 -1
  223. package/storybook-static/assets/{SerializableSelect.stories-BfGg_SmN.js → SerializableSelect.stories-DGeUH4C-.js} +1 -1
  224. package/storybook-static/assets/{ShimmerText-D1ygdKrh.js → ShimmerText-Dp8aRJ4I.js} +1 -1
  225. package/storybook-static/assets/{ShimmerText.stories-D5AB85Hj.js → ShimmerText.stories-Cf25PNCz.js} +1 -1
  226. package/storybook-static/assets/{SingleDateTimeInput-Bf2RpSbC.js → SingleDateTimeInput-Bzm87a3Z.js} +1 -1
  227. package/storybook-static/assets/{SingleDateTimeInput-C2O-fXgE.js → SingleDateTimeInput-DVFOi4lM.js} +1 -1
  228. package/storybook-static/assets/{SingleDateTimeInput.stories-BUbSA1UY.js → SingleDateTimeInput.stories-ChMKxw-w.js} +1 -1
  229. package/storybook-static/assets/{Slider-CVPKS3XB.js → Slider-CyZ-Su8l.js} +1 -1
  230. package/storybook-static/assets/{Slider-BhfM7XZ9.js → Slider-DD9J2Qhk.js} +1 -1
  231. package/storybook-static/assets/{Slider.stories-C6ZUJc4b.js → Slider.stories-B8wpT9DE.js} +1 -1
  232. package/storybook-static/assets/{SliderInput-MMUGLDDl.js → SliderInput-CZ5RGazl.js} +1 -1
  233. package/storybook-static/assets/{SliderInput-PwHeDeo2.js → SliderInput-DI2fPYZP.js} +1 -1
  234. package/storybook-static/assets/{SliderInput.stories-zBDRonPh.js → SliderInput.stories-kV5nIvmp.js} +1 -1
  235. package/storybook-static/assets/{Sortable-BKNLJGIe.js → Sortable-BRJshDsd.js} +1 -1
  236. package/storybook-static/assets/{Sortable.stories-CLY263mj.js → Sortable.stories-DWdCANF3.js} +1 -1
  237. package/storybook-static/assets/{Splitter-PyZco_V_.js → Splitter-amimlmxB.js} +1 -1
  238. package/storybook-static/assets/{Splitter.stories-CY3Itq_G.js → Splitter.stories-Bp8FI1V5.js} +1 -1
  239. package/storybook-static/assets/{StateSelect-BlEIRWer.js → StateSelect-CEg--oWR.js} +1 -1
  240. package/storybook-static/assets/{StateSelect-DfUif3cG.js → StateSelect-U7CVxa71.js} +1 -1
  241. package/storybook-static/assets/{StateSelect.stories-ClSYkdz8.js → StateSelect.stories-DO2hudAT.js} +1 -1
  242. package/storybook-static/assets/{StatusIndicator-CL-WMBHT.js → StatusIndicator-BgS55kfh.js} +1 -1
  243. package/storybook-static/assets/{StatusIndicator.stories-BbpEocDe.js → StatusIndicator.stories-BThF4RAA.js} +1 -1
  244. package/storybook-static/assets/{StringToggle.stories-0r9TfflS.js → StringToggle.stories-DGpM8fWe.js} +1 -1
  245. package/storybook-static/assets/{Switch-HAWn3D1c.js → Switch-DuR6uVds.js} +1 -1
  246. package/storybook-static/assets/{Switch-AoVSoc9P.js → Switch-M0xvOjjd.js} +1 -1
  247. package/storybook-static/assets/{Switch.stories-D1VJIWsC.js → Switch.stories-4k1xDlbq.js} +1 -1
  248. package/storybook-static/assets/{Table-CyX8frK4.js → Table-BmYczjli.js} +1 -1
  249. package/storybook-static/assets/{Table.stories-DoGpFMZB.js → Table.stories-c1Yu2DYz.js} +1 -1
  250. package/storybook-static/assets/{TableEditor.stories-Mh6q2awx.js → TableEditor.stories-hIvit7LX.js} +1 -1
  251. package/storybook-static/assets/{Tabs-BZfNXmy0.js → Tabs-1AzTozGX.js} +1 -1
  252. package/storybook-static/assets/{Tabs.stories-C9L4pJDb.js → Tabs.stories-DUQx0Ezh.js} +1 -1
  253. package/storybook-static/assets/TabsBox-DGdo-Cb1.js +2 -0
  254. package/storybook-static/assets/{TagInput-CPB6lb2J.js → TagInput-qylU7_PQ.js} +1 -1
  255. package/storybook-static/assets/{TagInput.stories-CT6B8CVV.js → TagInput.stories-Bs78VRGv.js} +1 -1
  256. package/storybook-static/assets/{Text-AbSWZQO3.js → Text-C8ptoppM.js} +1 -1
  257. package/storybook-static/assets/TextEditorLexical.stories-DWCIfqOj.js +54 -0
  258. package/storybook-static/assets/TextEditorLexicalClient-B17un2t_.js +30 -0
  259. package/storybook-static/assets/TextEditorLexicalClient-CLf0OiWB.css +1 -0
  260. package/storybook-static/assets/TextEditorLexicalViewer-DRQG2UON.css +1 -0
  261. package/storybook-static/assets/TextEditorLexicalViewer.stories-IP2pavj0.js +66 -0
  262. package/storybook-static/assets/{Textarea-Bz9O1y1I.js → Textarea-Cpnrb2o_.js} +1 -1
  263. package/storybook-static/assets/{Textarea-BY51Li7J.js → Textarea-nCjyO4i5.js} +1 -1
  264. package/storybook-static/assets/{Textarea.stories-CJbv3jrK.js → Textarea.stories-BNkapgda.js} +1 -1
  265. package/storybook-static/assets/{TimePanel-Wn5lUiwx.js → TimePanel-BQK5NbxR.js} +1 -1
  266. package/storybook-static/assets/{TimePanel.stories-dF5kTdp1.js → TimePanel.stories-DYq--6bF.js} +1 -1
  267. package/storybook-static/assets/{Toggle-CUO99pvo.js → Toggle-0Y7W-fPi.js} +1 -1
  268. package/storybook-static/assets/{Toggle-BpDn9f6k.js → Toggle-DVuWIK21.js} +1 -1
  269. package/storybook-static/assets/{Toggle.stories-T1Hk_etn.js → Toggle.stories-DYZE2fC3.js} +1 -1
  270. package/storybook-static/assets/{TreeMultiSelect-bqQExCm8.js → TreeMultiSelect-BM3xCVHR.js} +1 -1
  271. package/storybook-static/assets/{TreeMultiSelect-DEsECkRj.js → TreeMultiSelect-D7GJiBAt.js} +1 -1
  272. package/storybook-static/assets/{TreeMultiSelect.stories-DyK7bWZu.js → TreeMultiSelect.stories-D2JpEs59.js} +1 -1
  273. package/storybook-static/assets/{TreePickerBase-BCbV37dL.js → TreePickerBase-BCpA1kfG.js} +2 -2
  274. package/storybook-static/assets/{TreeSelect-CTvlmF81.js → TreeSelect-BXBL2lAD.js} +1 -1
  275. package/storybook-static/assets/{TreeSelect-Cepr58wS.js → TreeSelect-D5oAYLRd.js} +1 -1
  276. package/storybook-static/assets/{TreeSelect.stories-RVPMBCd_.js → TreeSelect.stories-emFXypZX.js} +1 -1
  277. package/storybook-static/assets/{TreeTable-DznOmuAD.js → TreeTable-CEyrFWSm.js} +1 -1
  278. package/storybook-static/assets/{TreeTable.stories-Lx2ImfgC.js → TreeTable.stories-DDcnv5XB.js} +1 -1
  279. package/storybook-static/assets/{blocks-u0CCD6I1.js → blocks-DvVybOVR.js} +4 -4
  280. package/storybook-static/assets/{check-CHvYWZD5.js → check-YfnFIyMh.js} +1 -1
  281. package/storybook-static/assets/{chevron-down-DqHAghNU.js → chevron-down-BjxDxv4C.js} +1 -1
  282. package/storybook-static/assets/{chevron-left-Bj7vIyg-.js → chevron-left-C0xgKKWw.js} +1 -1
  283. package/storybook-static/assets/{chevron-right-BUqG0v39.js → chevron-right-Bo0n7sEl.js} +1 -1
  284. package/storybook-static/assets/{chunk-W22LQPXL-BSczDjJT.js → chunk-W22LQPXL-r7A3h_Tz.js} +1 -1
  285. package/storybook-static/assets/{circle-alert-DXUFM6uc.js → circle-alert-Dl_8Z1un.js} +1 -1
  286. package/storybook-static/assets/{circle-check-0x9vHUU_.js → circle-check-CS9puXbe.js} +1 -1
  287. package/storybook-static/assets/{contextMenu-D8PjjiwD.js → contextMenu-C7If_pOc.js} +1 -1
  288. package/storybook-static/assets/{download-15Eb3eUj.js → download-BWZFjl62.js} +1 -1
  289. package/storybook-static/assets/{floating-ui.react-CypKyrM4.js → floating-ui.react-DoLsHxAF.js} +1 -1
  290. package/storybook-static/assets/{formatMultiSelectOptionCount-BxXwE0wd.js → formatMultiSelectOptionCount-Cb7rzikh.js} +1 -1
  291. package/storybook-static/assets/{formatters-DVE1YVNQ-CJCkXjuI.js → formatters-DVE1YVNQ-CimVV-di.js} +1 -1
  292. package/storybook-static/assets/{foundationApi-dmPNotab.js → foundationApi-DUDdWpQ2.js} +1 -1
  293. package/storybook-static/assets/{foundationLib-CyrgF87o.js → foundationLib-C0aoelQA.js} +1 -1
  294. package/storybook-static/assets/hooks-KqAveAk8.js +5 -0
  295. package/storybook-static/assets/{iframe-BmGorvhi.js → iframe-BwMqUCxF.js} +4 -4
  296. package/storybook-static/assets/iframe-CQgVo28z.js +1 -0
  297. package/storybook-static/assets/{info-HMSnCOw2.js → info-BzoIh38o.js} +1 -1
  298. package/storybook-static/assets/{isRecord-DXDTW-jA-DtM9YD3V.js → isRecord-DXDTW-jA-CMenzszF.js} +1 -1
  299. package/storybook-static/assets/odata-B4ZS5oGx.js +1 -0
  300. package/storybook-static/assets/{odataStoryFixtures-DiC-gXoK.js → odataStoryFixtures-BoXfGt8L.js} +1 -1
  301. package/storybook-static/assets/{react-BLxZ0fqY.js → react-BxTMipfI.js} +1 -1
  302. package/storybook-static/assets/{refresh-cw-Obk3FkLO.js → refresh-cw-DZHdlgJG.js} +1 -1
  303. package/storybook-static/assets/{settings-2-BQ2LYeiA.js → settings-2-CSUUgi_0.js} +1 -1
  304. package/storybook-static/assets/sortable-Bikh9uZC.js +1 -0
  305. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-JUCJEf5U.js → syntaxhighlighter-QEQV7K2Y-BvV0CW9d.js} +1 -1
  306. package/storybook-static/assets/{trash-2-CzXfDl_F.js → trash-2-Csx302gq.js} +1 -1
  307. package/storybook-static/assets/{triangle-alert-Ww2Tuzxk.js → triangle-alert-CA_CSo3b.js} +1 -1
  308. package/storybook-static/assets/types-U_TJ2tHU.js +1 -0
  309. package/storybook-static/assets/{useODataSelectBase-DIZSERuU.js → useODataSelectBase-Dmlavp_v.js} +1 -1
  310. package/storybook-static/assets/{useODataTreeData-DLgIiNMG.js → useODataTreeData-W3o26svk.js} +1 -1
  311. package/storybook-static/assets/{usePickerQuery-BZ1Hrn2J.js → usePickerQuery-IBbvSDWi.js} +1 -1
  312. package/storybook-static/assets/{usePickerTriggerController-BIarg6M4.js → usePickerTriggerController-Cy-RrU3A.js} +1 -1
  313. package/storybook-static/assets/{utils-tg3ibbzi.js → utils-DiA8FLax.js} +1 -1
  314. package/storybook-static/assets/validators-CLNEY_Fa.js +1 -0
  315. package/storybook-static/assets/{x-BmlmEU-a.js → x-CP7phAx6.js} +1 -1
  316. package/storybook-static/iframe.html +2 -2
  317. package/storybook-static/index.json +1 -1
  318. package/storybook-static/project.json +1 -1
  319. package/dist/chunks/TextEditorLexicalClient-Cj6yjCGm.js.map +0 -1
  320. package/storybook-static/assets/FormattedTableCell-CdlWquoj.js +0 -15
  321. package/storybook-static/assets/RadioGroup-CDqbnv4J.js +0 -1
  322. package/storybook-static/assets/TabsBox-qRCIBtqi.js +0 -2
  323. package/storybook-static/assets/hooks-DM8_3IU2.js +0 -5
  324. package/storybook-static/assets/iframe-WuXBbC_P.js +0 -1
  325. package/storybook-static/assets/odata-DLogt0PY.js +0 -1
  326. package/storybook-static/assets/sortable-BrLDYUp8.js +0 -1
  327. package/storybook-static/assets/validators-D82aYLRK.js +0 -1
  328. /package/storybook-static/assets/{NoData-C7KqaHUh.css → LoadingMessage-C7KqaHUh.css} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextEditorLexicalViewer.d.ts","sourceRoot":"","sources":["../../src/text-editor/TextEditorLexicalViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAIhD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAM1D,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IACnD,GAAG,EAAE,oBAAoB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC,CAAC;AAEH,mGAAmG;AACnG,wBAAgB,uBAAuB,CAAC,EACvC,GAAG,EACH,SAAS,EACT,QAAmD,EACnD,EAAE,4BAA4B,+BAqB9B"}
@@ -1,4 +1,6 @@
1
- import { ComponentType } from "react";
1
+ import { type ComponentProps, type ComponentType } from "react";
2
+ import { type TextEditorBlockStyle } from "./model/textEditorTypes";
3
+ import { type LinkTypes } from "./toolbar/types";
2
4
  export type TextEditorLexicalRaw = {
3
5
  format: "lexical";
4
6
  version: 1;
@@ -10,12 +12,25 @@ export type TextEditorData<TRaw = unknown> = {
10
12
  };
11
13
  export interface TextEditorToolbarComponents {
12
14
  blocks?: boolean;
15
+ /** Сужает включённую группу blocks; отсутствие сохраняет прежний полный набор. Не фильтрует документ. */
16
+ blockStyles?: readonly TextEditorBlockStyle[];
13
17
  links?: boolean;
18
+ /** Сужает включённую группу links в каноническом порядке; пустой список скрывает группу. */
19
+ linkTypes?: readonly LinkTypes[];
14
20
  history?: boolean;
15
21
  alignment?: boolean;
16
22
  inline?: boolean;
17
23
  tags?: boolean;
24
+ /** Независимая кнопка очистки semantic tag; по умолчанию сохраняется для прежних consumers. */
25
+ clearSemanticTag?: boolean;
18
26
  }
27
+ /** Только атрибуты доступности editable: consumer не подменяет обработчики и DOM-контракт Lexical. */
28
+ export type TextEditorEditableProps = Readonly<Pick<ComponentProps<"div">, "id" | "aria-label" | "aria-labelledby" | "aria-describedby" | "aria-invalid" | "aria-required">>;
29
+ /** Опции диалога внешней ссылки; не являются валидатором initial raw или вставленного документа. */
30
+ export type TextEditorExternalLinkOptions = Readonly<{
31
+ /** false скрывает QR-переключатель и записывает qrCode=false при подтверждении; по умолчанию true. */
32
+ allowQrCode?: boolean;
33
+ }>;
19
34
  export interface LocalLinkDialogAdapterProps {
20
35
  isOpen: boolean;
21
36
  onClose: () => void;
@@ -29,6 +44,8 @@ export interface TextEditorCoreProps<TRaw = unknown> {
29
44
  onChange: (data: TextEditorData<TextEditorLexicalRaw>) => void;
30
45
  toolbarComponents?: TextEditorToolbarComponents;
31
46
  businessAdapters?: TextEditorBusinessAdapters;
47
+ editableProps?: TextEditorEditableProps;
48
+ externalLinkOptions?: TextEditorExternalLinkOptions;
32
49
  }
33
50
  export declare const isLexicalTextRaw: (raw: unknown) => raw is TextEditorLexicalRaw;
34
51
  //# sourceMappingURL=editorModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editorModel.d.ts","sourceRoot":"","sources":["../../src/text-editor/editorModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,IAAI,GAAG,OAAO,IAAI;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,IAAI,CAAC;CACV,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,2BAA2B;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,0BAA0B;IAC1C,wBAAwB,CAAC,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,mBAAmB,CAAC,IAAI,GAAG,OAAO;IAClD,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;IAC/D,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;IAChD,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;CAC9C;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,OAAO,KAAG,GAAG,IAAI,oBAKtD,CAAC"}
1
+ {"version":3,"file":"editorModel.d.ts","sourceRoot":"","sources":["../../src/text-editor/editorModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,IAAI,GAAG,OAAO,IAAI;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,IAAI,CAAC;CACV,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yGAAyG;IACzG,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,sGAAsG;AACtG,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAC7C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,YAAY,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,cAAc,GAAG,eAAe,CAAC,CAC5H,CAAC;AAEF,oGAAoG;AACpG,MAAM,MAAM,6BAA6B,GAAG,QAAQ,CAAC;IACpD,sGAAsG;IACtG,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC,CAAC;AAEH,MAAM,WAAW,2BAA2B;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,0BAA0B;IAC1C,wBAAwB,CAAC,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,mBAAmB,CAAC,IAAI,GAAG,OAAO;IAClD,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;IAC/D,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;IAChD,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAC9C,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,mBAAmB,CAAC,EAAE,6BAA6B,CAAC;CACpD;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,OAAO,KAAG,GAAG,IAAI,oBAKtD,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export { TextEditorLexical } from "./TextEditorLexical";
2
- export type { LocalLinkDialogAdapterProps, TextEditorBusinessAdapters, TextEditorCoreProps, TextEditorData, TextEditorLexicalRaw, TextEditorToolbarComponents } from "./editorModel";
2
+ export { TextEditorLexicalViewer, type TextEditorLexicalViewerProps } from "./TextEditorLexicalViewer";
3
+ export type { LocalLinkDialogAdapterProps, TextEditorBusinessAdapters, TextEditorCoreProps, TextEditorData, TextEditorEditableProps, TextEditorExternalLinkOptions, TextEditorLexicalRaw, TextEditorToolbarComponents } from "./editorModel";
3
4
  export { isLexicalTextRaw } from "./editorModel";
4
5
  export type { LinkType, TextEditorLinkState } from "./linkTypes";
5
6
  export { LinkTypes, TagTypes } from "./toolbar";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/text-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EACX,2BAA2B,EAC3B,0BAA0B,EAC1B,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,2BAA2B,EAC3B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EACX,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/text-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,KAAK,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACvG,YAAY,EACX,2BAA2B,EAC3B,0BAA0B,EAC1B,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACpB,2BAA2B,EAC3B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EACX,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,MAAM,yBAAyB,CAAC"}
@@ -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-BwKsJG31.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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTextEditorLexicalActions.d.ts","sourceRoot":"","sources":["../../../../src/text-editor/model/hooks/useTextEditorLexicalActions.ts"],"names":[],"mappings":"AAMA,OAAO,EAWN,KAAK,aAAa,EAMlB,MAAM,SAAS,CAAC;AAQjB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUjG,UAAU,iCAAiC;IAC1C,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,mBAAmB,CAAC;IAClC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAC5C,eAAe,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC1C;AAED,wBAAgB,2BAA2B,CAAC,EAC3C,MAAM,EACN,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,EAAE,iCAAiC;yBAiJ5B,MAAM,QAAQ,MAAM,OAAO,MAAM,aAAa,MAAM,cAAc,OAAO;8BAazE,MAAM,WAAW,MAAM;uCA3FjB,aAAa;oCAzDjB,MAAM;;qCA6CN,MAAM;4BA8JP,SAAS;;2BAsFT,QAAQ;;;;wCAjET,MAAM,QAAQ,MAAM,cAAc,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;EAqG/D"}
1
+ {"version":3,"file":"useTextEditorLexicalActions.d.ts","sourceRoot":"","sources":["../../../../src/text-editor/model/hooks/useTextEditorLexicalActions.ts"],"names":[],"mappings":"AAMA,OAAO,EAWN,KAAK,aAAa,EAMlB,MAAM,SAAS,CAAC;AAQjB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUjG,UAAU,iCAAiC;IAC1C,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,mBAAmB,CAAC;IAClC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAC5C,eAAe,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC1C;AAED,wBAAgB,2BAA2B,CAAC,EAC3C,MAAM,EACN,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,EAAE,iCAAiC;yBAkJ5B,MAAM,QAAQ,MAAM,OAAO,MAAM,aAAa,MAAM,cAAc,OAAO;8BAazE,MAAM,WAAW,MAAM;uCA5FjB,aAAa;oCAzDjB,MAAM;;qCA6CN,MAAM;4BA+JP,SAAS;;2BAsFT,QAAQ;;;;wCAjET,MAAM,QAAQ,MAAM,cAAc,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;EAqG/D"}
@@ -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"}
@@ -1,11 +1,12 @@
1
1
  import { LinkTypes } from "./types";
2
2
  interface LinkButtonsProps {
3
+ linkTypes?: readonly LinkTypes[];
3
4
  disabled: boolean;
4
5
  onClick: (type: LinkTypes) => void;
5
6
  }
6
7
  /**
7
8
  * Набор кнопок для вставки ссылок и связанных сущностей в текстовом редакторе. Используется в составе тулбара редактора.
8
9
  */
9
- export declare function LinkButtons({ disabled, onClick }: LinkButtonsProps): import("react").JSX.Element;
10
+ export declare function LinkButtons({ disabled, onClick, linkTypes }: LinkButtonsProps): import("react").JSX.Element;
10
11
  export {};
11
12
  //# sourceMappingURL=LinkButtons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinkButtons.d.ts","sourceRoot":"","sources":["../../../src/text-editor/toolbar/LinkButtons.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,UAAU,gBAAgB;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,gBAAgB,+BASlE"}
1
+ {"version":3,"file":"LinkButtons.d.ts","sourceRoot":"","sources":["../../../src/text-editor/toolbar/LinkButtons.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,UAAU,gBAAgB;IACzB,SAAS,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BAsB7E"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditorToolbarLexical.d.ts","sourceRoot":"","sources":["../../../src/text-editor/toolbar/TextEditorToolbarLexical.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAqD,MAAM,SAAS,CAAC;AAEjG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEnF,UAAU,6BAA6B;IACtC,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;IAChD,KAAK,EAAE,mBAAmB,CAAC;IAC3B,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,iBAAiB,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IACtD,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,EACxC,iBAAiB,EACjB,KAAK,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,MAAM,EACN,MAAM,EACN,UAAU,EACV,EAAE,6BAA6B,+BA8E/B"}
1
+ {"version":3,"file":"TextEditorToolbarLexical.d.ts","sourceRoot":"","sources":["../../../src/text-editor/toolbar/TextEditorToolbarLexical.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAqD,MAAM,SAAS,CAAC;AAEjG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEnF,UAAU,6BAA6B;IACtC,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;IAChD,KAAK,EAAE,mBAAmB,CAAC;IAC3B,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,iBAAiB,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IACtD,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,EACxC,iBAAiB,EACjB,KAAK,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,MAAM,EACN,MAAM,EACN,UAAU,EACV,EAAE,6BAA6B,+BAqF/B"}
@@ -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.11.0",
3
+ "version": "3.13.0",
4
4
  "description": "Reusable React foundation UI primitives and Storybook stories.",
5
5
  "license": "MIT",
6
6
  "author": "Ryuzaki13",