@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.
- package/dist/chunks/{TextEditorLexicalClient-Cj6yjCGm.js → TextEditorLexicalClient-BwKsJG31.js} +347 -338
- package/dist/chunks/TextEditorLexicalClient-BwKsJG31.js.map +1 -0
- package/dist/chunks/types-CxXyru6U.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/text-editor/LinkDialog.d.ts +2 -1
- package/dist/text-editor/LinkDialog.d.ts.map +1 -1
- package/dist/text-editor/TextEditorDialogs.d.ts +3 -2
- package/dist/text-editor/TextEditorDialogs.d.ts.map +1 -1
- package/dist/text-editor/TextEditorLexicalClient.d.ts +1 -1
- package/dist/text-editor/TextEditorLexicalClient.d.ts.map +1 -1
- package/dist/text-editor/TextEditorLexicalViewer.d.ts +10 -0
- package/dist/text-editor/TextEditorLexicalViewer.d.ts.map +1 -0
- package/dist/text-editor/editorModel.d.ts +18 -1
- package/dist/text-editor/editorModel.d.ts.map +1 -1
- package/dist/text-editor/index.d.ts +2 -1
- package/dist/text-editor/index.d.ts.map +1 -1
- package/dist/text-editor/index.js +298 -7
- package/dist/text-editor/index.js.map +1 -1
- package/dist/text-editor/lib/viewer/getTextEditorViewerElementStyle.d.ts +5 -0
- package/dist/text-editor/lib/viewer/getTextEditorViewerElementStyle.d.ts.map +1 -0
- package/dist/text-editor/lib/viewer/parseTextEditorViewerDocument.d.ts +4 -0
- package/dist/text-editor/lib/viewer/parseTextEditorViewerDocument.d.ts.map +1 -0
- package/dist/text-editor/lib/viewer/resolveTextEditorViewerLink.d.ts +3 -0
- package/dist/text-editor/lib/viewer/resolveTextEditorViewerLink.d.ts.map +1 -0
- package/dist/text-editor/model/hooks/useTextEditorLexicalActions.d.ts.map +1 -1
- package/dist/text-editor/model/textEditorViewerTypes.d.ts +58 -0
- package/dist/text-editor/model/textEditorViewerTypes.d.ts.map +1 -0
- package/dist/text-editor/toolbar/LinkButtons.d.ts +2 -1
- package/dist/text-editor/toolbar/LinkButtons.d.ts.map +1 -1
- package/dist/text-editor/toolbar/TextEditorToolbarLexical.d.ts.map +1 -1
- package/dist/text-editor/ui/viewer/TextEditorViewerNode.d.ts +7 -0
- package/dist/text-editor/ui/viewer/TextEditorViewerNode.d.ts.map +1 -0
- package/dist/text-editor/ui/viewer/TextEditorViewerText.d.ts +8 -0
- package/dist/text-editor/ui/viewer/TextEditorViewerText.d.ts.map +1 -0
- package/package.json +1 -1
- package/storybook-static/assets/{Badge-CVgLMAJT.js → Badge-Bg4hGIjf.js} +1 -1
- package/storybook-static/assets/{Badge.stories-KeadkKsz.js → Badge.stories-DvgJJzd7.js} +1 -1
- package/storybook-static/assets/{BadgeList-_jBtMkE3.js → BadgeList-OoSc_pn4.js} +1 -1
- package/storybook-static/assets/{BarcodeScannerDialog.stories-J9XDExKK.js → BarcodeScannerDialog.stories-e2CjbCdx.js} +1 -1
- package/storybook-static/assets/{Button-C-uRygWz.js → Button-CQU_2OUm.js} +1 -1
- package/storybook-static/assets/{Button-DegBPiAl.js → Button-CmAd-UMc.js} +1 -1
- package/storybook-static/assets/{Button.stories-Ds4zCq_9.js → Button.stories-CdXudj27.js} +1 -1
- package/storybook-static/assets/{CalendarView-iyr_ipPy.js → CalendarView-CfpxnEan.js} +1 -1
- package/storybook-static/assets/{CheckBox-B0zrARHA.js → CheckBox-CtrHIcza.js} +1 -1
- package/storybook-static/assets/{CheckBox-nBqHJGY9.js → CheckBox-HehqIiiV.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-CxO9FwA7.js → CheckBox.stories-C8DlH2mz.js} +1 -1
- package/storybook-static/assets/{Color-6AOWCN3U-Dzuzn5Yr.js → Color-6AOWCN3U-D9jGjZ1P.js} +1 -1
- package/storybook-static/assets/{ContextMenu-BC5OXqVj.js → ContextMenu-BxHTZhuC.js} +1 -1
- package/storybook-static/assets/{ContextMenu-CnZu58rQ.js → ContextMenu-t1s2BKrj.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-CPdTdVV7.js → ContextMenu.stories-CMbIfQb7.js} +1 -1
- package/storybook-static/assets/{DateInput-B5j7kofa.js → DateInput-9FbhYoqV.js} +1 -1
- package/storybook-static/assets/{DateInput-CuYe4WXO.js → DateInput-Dm6Kiwka.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-C4ZaIPUG.js → DateInput.stories-CPAnx1Ii.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-CbDK9t1J.js → DateRangePresetSelect-6l9Q7na9.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-Cg6yPY0K.js → DateRangePresetSelect-CyxvE8Px.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-DPWUHjXu.js → DateRangePresetSelect.stories-UZ8CMuwl.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect-DkGsEVRD.js → DeprecatedMultiSelect-C04-2wDB.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect-DCReLsN-.js → DeprecatedMultiSelect-CySF9Hqp.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect.stories-tbYFDSML.js → DeprecatedMultiSelect.stories-FANxJnL0.js} +1 -1
- package/storybook-static/assets/{Detail-CtVpK6xU.js → Detail-CLPDP9b0.js} +1 -1
- package/storybook-static/assets/{Detail.stories-zAQfXGuT.js → Detail.stories-BmBFOXYz.js} +1 -1
- package/storybook-static/assets/{Dialog-JetMtpYt.js → Dialog-Co-EPLF-.js} +1 -1
- package/storybook-static/assets/{Dialog-B9ltl4hS.js → Dialog-Pzgcq_7r.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-tJymN3yq.js → Dialog.stories-B4DitG-A.js} +1 -1
- package/storybook-static/assets/{Disclosure-j-RCrVFs.js → Disclosure-Bt0yvf3r.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-4Jj2XNlo.js → Disclosure.stories-Bx4Z3eyR.js} +1 -1
- package/storybook-static/assets/{DisclosureGroup-CM7GlGI4.js → DisclosureGroup-CMheYvQ6.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-DevtpZi5.js → DocsRenderer-JROSPFPF-B4cQpl4D.js} +1 -1
- package/storybook-static/assets/{DropZone-CPrhOtX-.js → DropZone-D0j1N6Cy.js} +1 -1
- package/storybook-static/assets/{DropZone-Bwo7NG5D.js → DropZone-N4HTfImG.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-VyNhIaxw.js → DropZone.stories-CPHCbKF-.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-DMWZzFK1.js → DropdownMenu-Bf0k8HDo.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-DmKB3xVB.js → ExpandableActionPanel-QyKVmfxd.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-Kh_OSEIl.js → ExpandableActionPanel.stories-BmA0hkNv.js} +1 -1
- package/storybook-static/assets/{Flex-BZKhuaao.js → Flex-7J7Ai0St.js} +1 -1
- package/storybook-static/assets/{Flex.stories-CrHxjVCH.js → Flex.stories-DTJoxIVr.js} +1 -1
- package/storybook-static/assets/{FlexContainer-DGc37vCr.js → FlexContainer-CeCwnfbr.js} +1 -1
- package/storybook-static/assets/{FlexItem-DYv72TvP.js → FlexItem-D4epTRUG.js} +1 -1
- package/storybook-static/assets/{FloatingPopover-Bd3b1U8c.js → FloatingPopover-4lCnQQo9.js} +1 -1
- package/storybook-static/assets/{FloatingWindows.stories-Cs_i092m.js → FloatingWindows.stories-BziZWCR7.js} +1 -1
- package/storybook-static/assets/FormattedTableCell-SClhK1-d.js +15 -0
- package/storybook-static/assets/{Grid-DUcSdqsI.js → Grid-BEn16yj_.js} +1 -1
- package/storybook-static/assets/{Grid-DIKudfVu.js → Grid-Bv9iz3Ru.js} +1 -1
- package/storybook-static/assets/{Grid.stories-sZUaIp7v.js → Grid.stories-DCcd1XpQ.js} +1 -1
- package/storybook-static/assets/{GridContainer-C5r-VTTG.js → GridContainer-tbwtNWmU.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-Bk3SF90a.js → ImageCropper.stories-Cj7_L3px.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-CM-YetP0.js → ImageRenderer-B8sjaCxb.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-CMqKyVuX.js → ImageRenderer.stories-BjjI8Xl3.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-9IjWDUev.js → ImageView.stories-DSQT9rOC.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-D-Zzvzh3.js → ImageViewer.stories-BwSjtNZu.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-BRWmVnG3.js → ImageViewerRuntime-BYsmm3rq.js} +1 -1
- package/storybook-static/assets/{Input-BaEhNNL0.js → Input-A2NM7h5s.js} +1 -1
- package/storybook-static/assets/{Input-YuUUu0DD.js → Input-DFpaY5iR.js} +1 -1
- package/storybook-static/assets/{Input.stories-CoJY4vR8.js → Input.stories-Dr3bILG0.js} +1 -1
- package/storybook-static/assets/{InputDateTime-CPlDTMTI.js → InputDateTime-B1HZuWxu.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-DaOA4pFM.js → InputDateTime.stories-BRgylAlk.js} +1 -1
- package/storybook-static/assets/{InputFile-7PMO3B4Q.js → InputFile-BiYYtArL.js} +1 -1
- package/storybook-static/assets/{InputFile-D2HPvbt_.js → InputFile-DJZa1zb6.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-CD4sJtXF.js → InputFile.stories-fGygLQ4u.js} +1 -1
- package/storybook-static/assets/{InputFiles-DwgBtqPe.js → InputFiles-BhE9kv5d.js} +1 -1
- package/storybook-static/assets/{InputFiles-DSOs_hpc.js → InputFiles-Dhx7VEsV.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-B2zPOUXW.js → InputFiles.stories-Dr4Qonyz.js} +1 -1
- package/storybook-static/assets/{InputFilesList-DWtH6HFC.js → InputFilesList-Cv2Gpuuc.js} +1 -1
- package/storybook-static/assets/{InputImage-Cke0I8XV.js → InputImage-CcGsKNGs.js} +1 -1
- package/storybook-static/assets/{InputImage-CnTU-bKF.js → InputImage-CsX9WLK_.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-CadyFqUh.js → InputImage.stories-DBXKFyN8.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-cNgymLXT.js → InteractiveComponents-o5dGoBer.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-c5kIdj-d.js → InteractiveComponents.stories-CbpCs1ke.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-u5tv4tmF.js → LayoutPicker-BTV50163.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-BydBdeCh.js → LayoutPicker-wQBp2vRv.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-ZcTgJxX5.js → LayoutPicker.stories-BA9v21Xx.js} +1 -1
- package/storybook-static/assets/Lexical.prod-DSYr9I3p.js +11 -0
- package/storybook-static/assets/{Listbox-CaBDvhDA.js → Listbox-CiYd52jg.js} +1 -1
- package/storybook-static/assets/{Listbox-CzmfAAEG.js → Listbox-RA3seYue.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-B_tFWmxp.js → Listbox.stories-DFPgEF8r.js} +1 -1
- package/storybook-static/assets/{NoData-CRi9NzcI.js → LoadingMessage-Ce0vqRgG.js} +1 -1
- package/storybook-static/assets/{Modal-DIJuHLSp.js → Modal-BQsAioCj.js} +1 -1
- package/storybook-static/assets/{Modal-CIptTLdh.js → Modal-BpU6G6JZ.js} +1 -1
- package/storybook-static/assets/{Modal.stories-BAh1Lzf0.js → Modal.stories-CQrrk4EW.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-DH2lt3jw.js → ModalManagerProvider-CoqdrSRD.js} +1 -1
- package/storybook-static/assets/{MultiSelect-CbcU2Cam.js → MultiSelect-CU9zjw_p.js} +1 -1
- package/storybook-static/assets/{MultiSelect-OPkS-VFp.js → MultiSelect-CZNPmVvS.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-jghnBwe0.js → MultiSelect.stories-DFz-EHdG.js} +1 -1
- package/storybook-static/assets/{MultiSelectCore-AgK9lN-8.js → MultiSelectCore-Cvyz709z.js} +1 -1
- package/storybook-static/assets/NoData-Db8STACh.js +1 -0
- package/storybook-static/assets/{NotificationsHost-C8sCDEzY.js → NotificationsHost-BfICsokh.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-BxpWtMHl.js → NotificationsHost.stories-DlihTcqk.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-Cjptiw3k.js → ODataMultiSelect-bFKNwfVi.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-B-tBcHkU.js → ODataMultiSelect.stories-dSgAmYNP.js} +1 -1
- package/storybook-static/assets/{ODataSelect-BdVlf2WW.js → ODataSelect-B-VxiKqe.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-DZv8DgW4.js → ODataSelect.stories-IrICK-VV.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect-B83uLKnT.js → ODataTreeMultiSelect-1-ZKOoT5.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-k92VjXYz.js → ODataTreeMultiSelect.stories-Dj2gz4OX.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-CkZeBBoA.js → ODataTreeSelect-C03yKX3Q.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-COweaWEr.js → ODataTreeSelect.stories-BaWPoCj8.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-dD9RSWvg.js → OneStepScroller-C1e40EsR.js} +1 -1
- package/storybook-static/assets/{Option-lTkoUcHa.js → Option-DkhmepGt.js} +1 -1
- package/storybook-static/assets/{OptionButton-Bt6YtqRZ.js → OptionButton-CaOcFLRc.js} +1 -1
- package/storybook-static/assets/{OptionContent-C7Zoef1L.js → OptionContent-C2VjIa7E.js} +1 -1
- package/storybook-static/assets/{OptionContentContainer-xpO-es_t.js → OptionContentContainer-D9gbmo8X.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-DkGZmPFu.js → PeriodSelect-CKHsqr9Q.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-CmGjITS0.js → PeriodSelect-DyuBxEQO.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-BxkZen1s.js → PeriodSelect.stories-Clvkah1Y.js} +1 -1
- package/storybook-static/assets/{PickerField-vwGcXNU3.js → PickerField-BeafhNsw.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-BVO2pwu2.js → PickerTriggerActions-DiC3sf79.js} +1 -1
- package/storybook-static/assets/{Popover-DU0wD6MT.js → Popover-CTWgpldX.js} +1 -1
- package/storybook-static/assets/{Popover-PRWJVARx.js → Popover-Cic2guk_.js} +1 -1
- package/storybook-static/assets/{Popover.stories-CXKDCIfT.js → Popover.stories-BN8W4Ioo.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-B1oR9Z-A.js → PresetRangeDateInput-BlwDGFlO.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-DUcxF5lh.js → PresetRangeDateInput-Cw-UACKj.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-CAPHV6_P.js → PresetRangeDateInput.stories-BW4A9N6I.js} +1 -1
- package/storybook-static/assets/{PresetSelect-Hrow5Qbz.js → PresetSelect-BROMDIaD.js} +1 -1
- package/storybook-static/assets/{README-CHgqsGMV.js → README--dlFTbfU.js} +1 -1
- package/storybook-static/assets/{README-w3_FegOo.js → README-0oBzUW7p.js} +1 -1
- package/storybook-static/assets/{README-CF5B-uBm.js → README-3_ON5xt9.js} +1 -1
- package/storybook-static/assets/{README-FJ4JNfan.js → README-B2Q8nqgC.js} +1 -1
- package/storybook-static/assets/{README-JqCoy91R.js → README-B2a17RtT.js} +1 -1
- package/storybook-static/assets/{README-Cb_U_ZYK.js → README-B2o_mu2p.js} +1 -1
- package/storybook-static/assets/{README-MUzkojYd.js → README-B4UtPkAG.js} +1 -1
- package/storybook-static/assets/{README-DjM1av8U.js → README-BC-mtx0Z.js} +1 -1
- package/storybook-static/assets/{README-mq6pyk4G.js → README-BEo-chiK.js} +1 -1
- package/storybook-static/assets/{README-CxBqJjI3.js → README-BKgDrLYy.js} +1 -1
- package/storybook-static/assets/{README-ctVjdbq7.js → README-BU-hpYkT.js} +1 -1
- package/storybook-static/assets/{README-BwSjP1rm.js → README-BZO4LN8h.js} +1 -1
- package/storybook-static/assets/{README-BCXjh3I1.js → README-Bt7qMnXG.js} +1 -1
- package/storybook-static/assets/{README-CDq7upsw.js → README-BzXKbqC2.js} +1 -1
- package/storybook-static/assets/{README-Xu3cmYZg.js → README-C0oFjEzk.js} +1 -1
- package/storybook-static/assets/{README-DmT1wyUb.js → README-C4DwwmPx.js} +1 -1
- package/storybook-static/assets/{README-C_hI3IVn.js → README-CC7qsfLO.js} +1 -1
- package/storybook-static/assets/{README-SkcZXYo1.js → README-CCA-VcWp.js} +1 -1
- package/storybook-static/assets/{README-D_iA9J4Q.js → README-CM3GEer1.js} +1 -1
- package/storybook-static/assets/{README-BCBBtU0T.js → README-CMm_WVI_.js} +1 -1
- package/storybook-static/assets/{README-BJXCE3us.js → README-Ch0dHOCi.js} +1 -1
- package/storybook-static/assets/{README-CRfg4Opx.js → README-CovA1JtH.js} +1 -1
- package/storybook-static/assets/{README-DA8e0atn.js → README-CsAmAsnQ.js} +1 -1
- package/storybook-static/assets/{README-DnpmMCNN.js → README-CsgpoZpo.js} +1 -1
- package/storybook-static/assets/{README-DYjyXvbd.js → README-CyTthj47.js} +1 -1
- package/storybook-static/assets/{README-O1ww7U1S.js → README-D42tlbcC.js} +1 -1
- package/storybook-static/assets/{README-CRk_ElRL.js → README-D7e1q280.js} +1 -1
- package/storybook-static/assets/{README-COzEPNJ8.js → README-DEIwHKH_.js} +1 -1
- package/storybook-static/assets/{README-DUVORqie.js → README-DJXuAagO.js} +1 -1
- package/storybook-static/assets/{README-CGalXaw7.js → README-DO98xR7D.js} +1 -1
- package/storybook-static/assets/{README-CdDd6nD8.js → README-DOCP85Ok.js} +1 -1
- package/storybook-static/assets/{README-De02nG6s.js → README-DV0qQm_q.js} +1 -1
- package/storybook-static/assets/{README-AWtoYOeO.js → README-D_wqIsQU.js} +1 -1
- package/storybook-static/assets/{README-BPOSX1IH.js → README-Da2MtxkC.js} +1 -1
- package/storybook-static/assets/{README-o-a96Aib.js → README-DgnwOBAf.js} +1 -1
- package/storybook-static/assets/{README-CDYORt73.js → README-Dh-aESek.js} +1 -1
- package/storybook-static/assets/{README-BLog3wnj.js → README-Dh3cmlxY.js} +1 -1
- package/storybook-static/assets/{README-CF79JAmm.js → README-DkqWljOh.js} +1 -1
- package/storybook-static/assets/{README-BEUQd7JO.js → README-Dns7UYFR.js} +1 -1
- package/storybook-static/assets/{README-bcnh89ek.js → README-Dp9qT5k5.js} +1 -1
- package/storybook-static/assets/{README-C8-H1dVZ.js → README-Dq_L-Ug6.js} +1 -1
- package/storybook-static/assets/{README-CTbRRHIT.js → README-DxnLeJiR.js} +1 -1
- package/storybook-static/assets/{README-Cu3r4RYC.js → README-JNaV5buf.js} +1 -1
- package/storybook-static/assets/{README-BDdhvdKa.js → README-Sg5qacmO.js} +1 -1
- package/storybook-static/assets/{README-BB_tSzAG.js → README-Y_9dubMU.js} +1 -1
- package/storybook-static/assets/{README-f5UPnPkY.js → README-Zi-FFn8W.js} +1 -1
- package/storybook-static/assets/{README-UfCsOg0n.js → README-g61K1aLN.js} +1 -1
- package/storybook-static/assets/{README-D0EguYwa.js → README-gW1fz6Ad.js} +1 -1
- package/storybook-static/assets/{README-CbCzYjzO.js → README-ivZpRido.js} +1 -1
- package/storybook-static/assets/{README-zelg96nd.js → README-kq33WRAi.js} +1 -1
- package/storybook-static/assets/{README-JrppLPED.js → README-lXA9AEv5.js} +1 -1
- package/storybook-static/assets/{README-BIHT1kGT.js → README-trL-e_Hw.js} +1 -1
- package/storybook-static/assets/{README-diVWU6bQ.js → README-yOf-BvTs.js} +1 -1
- package/storybook-static/assets/{RadioButton-BztQMLNR.js → RadioButton-Bc-qW8X4.js} +1 -1
- package/storybook-static/assets/{RadioButton-DUOPHyRt.js → RadioButton-dLi6i_d_.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-BOE5cGej.js → RadioButton.stories-fyW8-L85.js} +1 -1
- package/storybook-static/assets/RadioGroup-K_pYzh4S.js +1 -0
- package/storybook-static/assets/{RadioGroup-QICEWbjz.js → RadioGroup-hx5JHhIo.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-f2qU7hhM.js → RadioGroup.stories-DkJM4C8g.js} +1 -1
- package/storybook-static/assets/{ResponsiveLayoutPreview-BWBLsr8u.js → ResponsiveLayoutPreview-2trckzJQ.js} +1 -1
- package/storybook-static/assets/{Scrollable-CAnjXb6_.js → Scrollable-BKrnU0ak.js} +1 -1
- package/storybook-static/assets/{Scrollable-Cc641kuG.js → Scrollable-D4W1DFQg.js} +1 -1
- package/storybook-static/assets/{Scrollable.stories-ZQT-1f1f.js → Scrollable.stories-D27cJCFP.js} +1 -1
- package/storybook-static/assets/{Select-D6RLm9D5.js → Select-BdSn2R7K.js} +1 -1
- package/storybook-static/assets/{Select-BeoH_3V4.js → Select-DEZyRp-R.js} +1 -1
- package/storybook-static/assets/{Select.stories-DI6pVDzi.js → Select.stories-D1Z2CcxZ.js} +1 -1
- package/storybook-static/assets/{Separator-tkZoR8Ft.js → Separator-5i4GBBEP.js} +1 -1
- package/storybook-static/assets/{Separator-De9vEg4j.js → Separator-BgRJ7Ocd.js} +1 -1
- package/storybook-static/assets/{Separator.stories-CGZrsdLJ.js → Separator.stories-CgSiKmhl.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-BWgkYLIe.js → SerializableSelect-DyFu3F0w.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-BfGg_SmN.js → SerializableSelect.stories-DGeUH4C-.js} +1 -1
- package/storybook-static/assets/{ShimmerText-D1ygdKrh.js → ShimmerText-Dp8aRJ4I.js} +1 -1
- package/storybook-static/assets/{ShimmerText.stories-D5AB85Hj.js → ShimmerText.stories-Cf25PNCz.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-Bf2RpSbC.js → SingleDateTimeInput-Bzm87a3Z.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-C2O-fXgE.js → SingleDateTimeInput-DVFOi4lM.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-BUbSA1UY.js → SingleDateTimeInput.stories-ChMKxw-w.js} +1 -1
- package/storybook-static/assets/{Slider-CVPKS3XB.js → Slider-CyZ-Su8l.js} +1 -1
- package/storybook-static/assets/{Slider-BhfM7XZ9.js → Slider-DD9J2Qhk.js} +1 -1
- package/storybook-static/assets/{Slider.stories-C6ZUJc4b.js → Slider.stories-B8wpT9DE.js} +1 -1
- package/storybook-static/assets/{SliderInput-MMUGLDDl.js → SliderInput-CZ5RGazl.js} +1 -1
- package/storybook-static/assets/{SliderInput-PwHeDeo2.js → SliderInput-DI2fPYZP.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-zBDRonPh.js → SliderInput.stories-kV5nIvmp.js} +1 -1
- package/storybook-static/assets/{Sortable-BKNLJGIe.js → Sortable-BRJshDsd.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-CLY263mj.js → Sortable.stories-DWdCANF3.js} +1 -1
- package/storybook-static/assets/{Splitter-PyZco_V_.js → Splitter-amimlmxB.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-CY3Itq_G.js → Splitter.stories-Bp8FI1V5.js} +1 -1
- package/storybook-static/assets/{StateSelect-BlEIRWer.js → StateSelect-CEg--oWR.js} +1 -1
- package/storybook-static/assets/{StateSelect-DfUif3cG.js → StateSelect-U7CVxa71.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-ClSYkdz8.js → StateSelect.stories-DO2hudAT.js} +1 -1
- package/storybook-static/assets/{StatusIndicator-CL-WMBHT.js → StatusIndicator-BgS55kfh.js} +1 -1
- package/storybook-static/assets/{StatusIndicator.stories-BbpEocDe.js → StatusIndicator.stories-BThF4RAA.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-0r9TfflS.js → StringToggle.stories-DGpM8fWe.js} +1 -1
- package/storybook-static/assets/{Switch-HAWn3D1c.js → Switch-DuR6uVds.js} +1 -1
- package/storybook-static/assets/{Switch-AoVSoc9P.js → Switch-M0xvOjjd.js} +1 -1
- package/storybook-static/assets/{Switch.stories-D1VJIWsC.js → Switch.stories-4k1xDlbq.js} +1 -1
- package/storybook-static/assets/{Table-CyX8frK4.js → Table-BmYczjli.js} +1 -1
- package/storybook-static/assets/{Table.stories-DoGpFMZB.js → Table.stories-c1Yu2DYz.js} +1 -1
- package/storybook-static/assets/{TableEditor.stories-Mh6q2awx.js → TableEditor.stories-hIvit7LX.js} +1 -1
- package/storybook-static/assets/{Tabs-BZfNXmy0.js → Tabs-1AzTozGX.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-C9L4pJDb.js → Tabs.stories-DUQx0Ezh.js} +1 -1
- package/storybook-static/assets/TabsBox-DGdo-Cb1.js +2 -0
- package/storybook-static/assets/{TagInput-CPB6lb2J.js → TagInput-qylU7_PQ.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-CT6B8CVV.js → TagInput.stories-Bs78VRGv.js} +1 -1
- package/storybook-static/assets/{Text-AbSWZQO3.js → Text-C8ptoppM.js} +1 -1
- package/storybook-static/assets/TextEditorLexical.stories-DWCIfqOj.js +54 -0
- package/storybook-static/assets/TextEditorLexicalClient-B17un2t_.js +30 -0
- package/storybook-static/assets/TextEditorLexicalClient-CLf0OiWB.css +1 -0
- package/storybook-static/assets/TextEditorLexicalViewer-DRQG2UON.css +1 -0
- package/storybook-static/assets/TextEditorLexicalViewer.stories-IP2pavj0.js +66 -0
- package/storybook-static/assets/{Textarea-Bz9O1y1I.js → Textarea-Cpnrb2o_.js} +1 -1
- package/storybook-static/assets/{Textarea-BY51Li7J.js → Textarea-nCjyO4i5.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-CJbv3jrK.js → Textarea.stories-BNkapgda.js} +1 -1
- package/storybook-static/assets/{TimePanel-Wn5lUiwx.js → TimePanel-BQK5NbxR.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-dF5kTdp1.js → TimePanel.stories-DYq--6bF.js} +1 -1
- package/storybook-static/assets/{Toggle-CUO99pvo.js → Toggle-0Y7W-fPi.js} +1 -1
- package/storybook-static/assets/{Toggle-BpDn9f6k.js → Toggle-DVuWIK21.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-T1Hk_etn.js → Toggle.stories-DYZE2fC3.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-bqQExCm8.js → TreeMultiSelect-BM3xCVHR.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-DEsECkRj.js → TreeMultiSelect-D7GJiBAt.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-DyK7bWZu.js → TreeMultiSelect.stories-D2JpEs59.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-BCbV37dL.js → TreePickerBase-BCpA1kfG.js} +2 -2
- package/storybook-static/assets/{TreeSelect-CTvlmF81.js → TreeSelect-BXBL2lAD.js} +1 -1
- package/storybook-static/assets/{TreeSelect-Cepr58wS.js → TreeSelect-D5oAYLRd.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-RVPMBCd_.js → TreeSelect.stories-emFXypZX.js} +1 -1
- package/storybook-static/assets/{TreeTable-DznOmuAD.js → TreeTable-CEyrFWSm.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-Lx2ImfgC.js → TreeTable.stories-DDcnv5XB.js} +1 -1
- package/storybook-static/assets/{blocks-u0CCD6I1.js → blocks-DvVybOVR.js} +4 -4
- package/storybook-static/assets/{check-CHvYWZD5.js → check-YfnFIyMh.js} +1 -1
- package/storybook-static/assets/{chevron-down-DqHAghNU.js → chevron-down-BjxDxv4C.js} +1 -1
- package/storybook-static/assets/{chevron-left-Bj7vIyg-.js → chevron-left-C0xgKKWw.js} +1 -1
- package/storybook-static/assets/{chevron-right-BUqG0v39.js → chevron-right-Bo0n7sEl.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-BSczDjJT.js → chunk-W22LQPXL-r7A3h_Tz.js} +1 -1
- package/storybook-static/assets/{circle-alert-DXUFM6uc.js → circle-alert-Dl_8Z1un.js} +1 -1
- package/storybook-static/assets/{circle-check-0x9vHUU_.js → circle-check-CS9puXbe.js} +1 -1
- package/storybook-static/assets/{contextMenu-D8PjjiwD.js → contextMenu-C7If_pOc.js} +1 -1
- package/storybook-static/assets/{download-15Eb3eUj.js → download-BWZFjl62.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-CypKyrM4.js → floating-ui.react-DoLsHxAF.js} +1 -1
- package/storybook-static/assets/{formatMultiSelectOptionCount-BxXwE0wd.js → formatMultiSelectOptionCount-Cb7rzikh.js} +1 -1
- package/storybook-static/assets/{formatters-DVE1YVNQ-CJCkXjuI.js → formatters-DVE1YVNQ-CimVV-di.js} +1 -1
- package/storybook-static/assets/{foundationApi-dmPNotab.js → foundationApi-DUDdWpQ2.js} +1 -1
- package/storybook-static/assets/{foundationLib-CyrgF87o.js → foundationLib-C0aoelQA.js} +1 -1
- package/storybook-static/assets/hooks-KqAveAk8.js +5 -0
- package/storybook-static/assets/{iframe-BmGorvhi.js → iframe-BwMqUCxF.js} +4 -4
- package/storybook-static/assets/iframe-CQgVo28z.js +1 -0
- package/storybook-static/assets/{info-HMSnCOw2.js → info-BzoIh38o.js} +1 -1
- package/storybook-static/assets/{isRecord-DXDTW-jA-DtM9YD3V.js → isRecord-DXDTW-jA-CMenzszF.js} +1 -1
- package/storybook-static/assets/odata-B4ZS5oGx.js +1 -0
- package/storybook-static/assets/{odataStoryFixtures-DiC-gXoK.js → odataStoryFixtures-BoXfGt8L.js} +1 -1
- package/storybook-static/assets/{react-BLxZ0fqY.js → react-BxTMipfI.js} +1 -1
- package/storybook-static/assets/{refresh-cw-Obk3FkLO.js → refresh-cw-DZHdlgJG.js} +1 -1
- package/storybook-static/assets/{settings-2-BQ2LYeiA.js → settings-2-CSUUgi_0.js} +1 -1
- package/storybook-static/assets/sortable-Bikh9uZC.js +1 -0
- package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-JUCJEf5U.js → syntaxhighlighter-QEQV7K2Y-BvV0CW9d.js} +1 -1
- package/storybook-static/assets/{trash-2-CzXfDl_F.js → trash-2-Csx302gq.js} +1 -1
- package/storybook-static/assets/{triangle-alert-Ww2Tuzxk.js → triangle-alert-CA_CSo3b.js} +1 -1
- package/storybook-static/assets/types-U_TJ2tHU.js +1 -0
- package/storybook-static/assets/{useODataSelectBase-DIZSERuU.js → useODataSelectBase-Dmlavp_v.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-DLgIiNMG.js → useODataTreeData-W3o26svk.js} +1 -1
- package/storybook-static/assets/{usePickerQuery-BZ1Hrn2J.js → usePickerQuery-IBbvSDWi.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-BIarg6M4.js → usePickerTriggerController-Cy-RrU3A.js} +1 -1
- package/storybook-static/assets/{utils-tg3ibbzi.js → utils-DiA8FLax.js} +1 -1
- package/storybook-static/assets/validators-CLNEY_Fa.js +1 -0
- package/storybook-static/assets/{x-BmlmEU-a.js → x-CP7phAx6.js} +1 -1
- package/storybook-static/iframe.html +2 -2
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/dist/chunks/TextEditorLexicalClient-Cj6yjCGm.js.map +0 -1
- package/storybook-static/assets/FormattedTableCell-CdlWquoj.js +0 -15
- package/storybook-static/assets/RadioGroup-CDqbnv4J.js +0 -1
- package/storybook-static/assets/TabsBox-qRCIBtqi.js +0 -2
- package/storybook-static/assets/hooks-DM8_3IU2.js +0 -5
- package/storybook-static/assets/iframe-WuXBbC_P.js +0 -1
- package/storybook-static/assets/odata-DLogt0PY.js +0 -1
- package/storybook-static/assets/sortable-BrLDYUp8.js +0 -1
- package/storybook-static/assets/validators-D82aYLRK.js +0 -1
- /package/storybook-static/assets/{NoData-C7KqaHUh.css → LoadingMessage-C7KqaHUh.css} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"generatedAt":
|
|
1
|
+
{"generatedAt":1790489797567,"hasCustomBabel":false,"hasCustomWebpack":false,"hasStaticDirs":false,"hasStorybookEslint":false,"refCount":0,"metaFramework":{"name":"tanstack-react","packageName":"@tanstack/react-router","version":"1.170.32"},"knownPackages":{"testPackages":{"@chromatic-com/storybook":"5.3.0","@storybook/addon-vitest":"10.5.10","@testing-library/dom":"10.4.1","@testing-library/react":"16.3.3","@testing-library/user-event":"^14.6.1","@vitest/browser":"4.1.11","playwright":"1.62.1","vitest":"4.1.11"},"stateManagementPackages":{"zustand":"5.0.0"},"dataFetchingPackages":{"@tanstack/react-query":"5.101.4"},"routerPackages":{"@tanstack/react-router":"1.170.23"}},"hasRouterPackage":false,"packageManager":{"type":"npm","version":"11.7.0","agent":"npm","nodeLinker":"node_modules"},"preview":{"usesGlobals":false},"framework":{"name":"@storybook/react-vite","options":{}},"builder":"@storybook/builder-vite","renderer":"@storybook/react","portableStoriesFileCount":1,"applicationFileCount":9,"storybookVersion":"10.5.10","storybookVersionSpecifier":"^10.5.5","language":"typescript","storybookPackages":{"@storybook/react-vite":{"version":"10.5.10"},"storybook":{}},"addons":{"@chromatic-com/storybook":{"version":"5.3.0"},"@storybook/addon-docs":{"version":"10.5.10"},"@storybook/addon-a11y":{"version":"10.5.10"},"@storybook/addon-vitest":{"version":"10.5.10"}},"packageJsonType":"module"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TextEditorLexicalClient-Cj6yjCGm.js","names":[],"sources":["../../src/text-editor/toolbar/Toolbar.module.scss","../../src/text-editor/toolbar/ToolbarControl.tsx","../../src/text-editor/toolbar/AlignmentControls.tsx","../../src/text-editor/toolbar/HistoryControls.tsx","../../src/text-editor/toolbar/LinkButtons.tsx","../../src/text-editor/toolbar/TagButtons.tsx","../../src/text-editor/toolbar/TextEditorToolbarLexical.tsx","../../src/text-editor/lexical/plugins/InitialHtmlPlugin.tsx","../../src/text-editor/model/textEditorTypes.ts","../../src/text-editor/lib/toolbar/styleMappers.ts","../../src/text-editor/lib/toolbar/resolveToolbarState.ts","../../src/text-editor/lexical/plugins/SelectionStatePlugin.tsx","../../src/text-editor/lib/serialization/createLexicalRaw.ts","../../src/text-editor/lib/selection/findSelectedInlineNode.ts","../../src/text-editor/lib/selection/restoreEditorDialogSelection.ts","../../src/text-editor/lib/semantic/getSemanticTagDepth.ts","../../src/text-editor/nodes/AccessibleLinkNode.ts","../../src/text-editor/nodes/SemanticTagNode.ts","../../src/text-editor/model/hooks/useTextEditorLexicalActions.ts","../../src/text-editor/TextEditor.module.scss","../../src/text-editor/EmailDialog.tsx","../../src/text-editor/lib/semantic/getTimeDialogInitialState.ts","../../src/text-editor/LinkDialog.tsx","../../src/text-editor/PhoneDialog.tsx","../../src/text-editor/SemanticDialog.tsx","../../src/text-editor/lib/semantic/isSemanticDateTime.ts","../../src/text-editor/semanticTagConfigs.tsx","../../src/text-editor/TimeDialog.tsx","../../src/text-editor/TextEditorDialogs.tsx","../../src/text-editor/TextEditorLexicalClient.tsx"],"sourcesContent":[".toolbar {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: start;\n\tgap: var(--space-sm);\n\tmargin-bottom: var(--space-md);\n\n\thr {\n\t\tmargin: 0.5rem 0;\n\t}\n}\n\n.groupControls {\n\tdisplay: flex;\n\tgap: var(--space-sm);\n}\n","import { type MouseEvent, type ReactNode } from \"react\";\n\nimport { Button } from \"../../button\";\n\ntype ToolbarControlProps = {\n\tisActive?: boolean;\n\tonClick?: (style: string) => void;\n\ttitle?: string;\n\tstyle?: string;\n\tdisabled?: boolean;\n\ticon?: ReactNode;\n};\n\n/**\n * Унифицированная кнопка действия в тулбаре текстового редактора. Отвечает за активное состояние, disabled-режим и визуальное представление иконки.\n */\nexport function ToolbarControl({ isActive, disabled, style, title, icon, onClick }: ToolbarControlProps) {\n\tconst handleMouseDown = (e: MouseEvent<HTMLButtonElement>) => {\n\t\t// Не отдаём фокус кнопке раньше сохранения Lexical selection. Само действие\n\t\t// выполняется native click: одинаково для мыши, Enter и пробела.\n\t\te.preventDefault();\n\t};\n\n\treturn (\n\t\t<Button\n\t\t\ttitle={title}\n\t\t\tdisabled={disabled}\n\t\t\tappearance=\"outline\"\n\t\t\ttone={isActive ? \"info\" : undefined}\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\tonClick={() => onClick?.(style || \"\")}\n\t\t\ticon={icon}\n\t\t/>\n\t);\n}\n","import { AlignCenter, AlignJustify, AlignLeft, AlignRight } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\n\nimport type { TextAlignment } from \"../model/textEditorTypes\";\n\ninterface AlignmentControlsProps {\n\tonAlignmentChange: (alignment: TextAlignment) => void;\n\tactiveAlignment?: TextAlignment | null;\n}\n\n/**\n * Кнопки управления выравниванием содержимого в текстовом редакторе. Используются в тулбаре для смены текстового alignment.\n */\nexport function AlignmentControls({ onAlignmentChange, activeAlignment }: AlignmentControlsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl\n\t\t\t\ttitle=\"По левому краю\"\n\t\t\t\ticon={<AlignLeft />}\n\t\t\t\tisActive={activeAlignment === \"left\"}\n\t\t\t\tonClick={() => onAlignmentChange(\"left\")}\n\t\t\t/>\n\t\t\t<ToolbarControl\n\t\t\t\ttitle=\"По центру\"\n\t\t\t\ticon={<AlignCenter />}\n\t\t\t\tisActive={activeAlignment === \"center\"}\n\t\t\t\tonClick={() => onAlignmentChange(\"center\")}\n\t\t\t/>\n\t\t\t<ToolbarControl\n\t\t\t\ttitle=\"По правому краю\"\n\t\t\t\ticon={<AlignRight />}\n\t\t\t\tisActive={activeAlignment === \"right\"}\n\t\t\t\tonClick={() => onAlignmentChange(\"right\")}\n\t\t\t/>\n\t\t\t<ToolbarControl\n\t\t\t\ttitle=\"По ширине\"\n\t\t\t\ticon={<AlignJustify />}\n\t\t\t\tisActive={activeAlignment === \"justify\"}\n\t\t\t\tonClick={() => onAlignmentChange(\"justify\")}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","import { Redo, Undo } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\n\ninterface HistoryControlsProps {\n\tonUndo: () => void;\n\tonRedo: () => void;\n}\n\n/**\n * Кнопки отмены и повтора действий для текстового редактора. Отвечают за работу с историей изменений документа.\n */\nexport function HistoryControls({ onUndo, onRedo }: HistoryControlsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl title=\"Отменить последнее действие\" icon={<Undo />} onClick={onUndo} />\n\t\t\t<ToolbarControl title=\"Повторить предыдущее действие\" icon={<Redo />} onClick={onRedo} />\n\t\t</div>\n\t);\n}\n","import { AtSign, ExternalLink, Link, Phone } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\nimport { LinkTypes } from \"./types\";\n\ninterface LinkButtonsProps {\n\tdisabled: boolean;\n\tonClick: (type: LinkTypes) => void;\n}\n\n/**\n * Набор кнопок для вставки ссылок и связанных сущностей в текстовом редакторе. Используется в составе тулбара редактора.\n */\nexport function LinkButtons({ disabled, onClick }: LinkButtonsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl title=\"Добавить ссылку на статью\" icon={<Link />} onClick={() => onClick(LinkTypes.LOCAL_LINK)} />\n\t\t\t<ToolbarControl title=\"Добавить ссылку\" disabled={disabled} icon={<ExternalLink />} onClick={() => onClick(LinkTypes.LINK)} />\n\t\t\t<ToolbarControl title=\"Добавить телефон\" disabled={disabled} icon={<Phone />} onClick={() => onClick(LinkTypes.PHONE)} />\n\t\t\t<ToolbarControl title=\"Добавить email\" disabled={disabled} icon={<AtSign />} onClick={() => onClick(LinkTypes.EMAIL)} />\n\t\t</div>\n\t);\n}\n","import { BookType, Clock, Languages, MessageSquareQuote, PictureInPicture, Shredder } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\nimport { TagTypes } from \"./types\";\n\ninterface TagButtonsProps {\n\tonClick: (type: TagTypes) => void;\n}\n\n/**\n * Переиспользуемый компонент `TagButtons` из раздела `toolbar`. Инкапсулирует общую логику отображения и взаимодействия, чтобы интерфейс оставался консистентным.\n */\nexport function TagButtons({ onClick }: TagButtonsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl title=\"Вставить Аббревиатуру\" icon={<BookType />} onClick={() => onClick(TagTypes.abbr)} />\n\t\t\t<ToolbarControl title=\"Вставить Код языка\" icon={<Languages />} onClick={() => onClick(TagTypes.lang)} />\n\t\t\t<ToolbarControl title=\"Вставить Дату/время\" icon={<Clock />} onClick={() => onClick(TagTypes.time)} />\n\t\t\t<ToolbarControl title=\"Вставить Ссылку на источник\" icon={<MessageSquareQuote />} onClick={() => onClick(TagTypes.cite)} />\n\t\t\t<ToolbarControl title=\"Вставить Удалённый фрагмент\" icon={<Shredder />} onClick={() => onClick(TagTypes.del)} />\n\t\t\t<ToolbarControl title=\"Вставить Добавленный фрагмент\" icon={<PictureInPicture />} onClick={() => onClick(TagTypes.ins)} />\n\t\t</div>\n\t);\n}\n","import { BrushCleaning } from \"lucide-react\";\n\nimport { AlignmentControls } from \"./AlignmentControls\";\nimport { HistoryControls } from \"./HistoryControls\";\nimport { LinkButtons } from \"./LinkButtons\";\nimport { TagButtons } from \"./TagButtons\";\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\nimport { LinkTypes, TagTypes, TextEditorBlockControls, TextEditorInlineControls } from \"./types\";\n\nimport type { TextEditorToolbarComponents } from \"../editorModel\";\nimport type { LexicalToolbarState, TextAlignment } from \"../model/textEditorTypes\";\n\ninterface TextEditorToolbarLexicalProps {\n\ttoolbarComponents?: TextEditorToolbarComponents;\n\tstate: LexicalToolbarState;\n\tonBlockStyleToggle: (style: string) => void;\n\tonInlineStyleToggle: (style: string) => void;\n\tonAlignmentChange: (alignment: TextAlignment) => void;\n\tonLinkClick: (type: LinkTypes) => void;\n\tonTagClick: (type: TagTypes) => void;\n\tonUndo: () => void;\n\tonRedo: () => void;\n\tonCleanTag?: () => void;\n}\n\n/**\n * Основная панель инструментов редактора Lexical. Собирает управляющие блоки и синхронизирует их с текущим состоянием выделения.\n */\nexport function TextEditorToolbarLexical({\n\ttoolbarComponents,\n\tstate,\n\tonBlockStyleToggle,\n\tonInlineStyleToggle,\n\tonAlignmentChange,\n\tonLinkClick,\n\tonTagClick,\n\tonUndo,\n\tonRedo,\n\tonCleanTag\n}: TextEditorToolbarLexicalProps) {\n\tconst components = { history: true, ...(toolbarComponents || {}) };\n\n\treturn (\n\t\t<div className={ToolbarStyle.toolbar}>\n\t\t\t{components.blocks && (\n\t\t\t\t<>\n\t\t\t\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t\t\t\t{TextEditorBlockControls.map((control) => (\n\t\t\t\t\t\t\t<ToolbarControl\n\t\t\t\t\t\t\t\tkey={control.style}\n\t\t\t\t\t\t\t\tisActive={control.style === state.blockType}\n\t\t\t\t\t\t\t\tstyle={control.style}\n\t\t\t\t\t\t\t\ttitle={control.label}\n\t\t\t\t\t\t\t\ticon={control.icon}\n\t\t\t\t\t\t\t\tonClick={onBlockStyleToggle}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.inline && (\n\t\t\t\t<>\n\t\t\t\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t\t\t\t{TextEditorInlineControls.map((control) => (\n\t\t\t\t\t\t\t<ToolbarControl\n\t\t\t\t\t\t\t\tkey={control.style}\n\t\t\t\t\t\t\t\tisActive={!!state.activeInlineStyles[control.style as keyof typeof state.activeInlineStyles]}\n\t\t\t\t\t\t\t\ttitle={control.label}\n\t\t\t\t\t\t\t\tstyle={control.style}\n\t\t\t\t\t\t\t\ticon={control.icon}\n\t\t\t\t\t\t\t\tdisabled={state.isTextUnselected}\n\t\t\t\t\t\t\t\tonClick={onInlineStyleToggle}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.alignment && (\n\t\t\t\t<>\n\t\t\t\t\t<AlignmentControls activeAlignment={state.activeAlignment} onAlignmentChange={onAlignmentChange} />\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.links && (\n\t\t\t\t<>\n\t\t\t\t\t<LinkButtons disabled={state.isTextUnselected} onClick={onLinkClick} />\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.tags && (\n\t\t\t\t<>\n\t\t\t\t\t<TagButtons onClick={onTagClick} />\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.history && (\n\t\t\t\t<>\n\t\t\t\t\t<HistoryControls onUndo={onUndo} onRedo={onRedo} />\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t<ToolbarControl\n\t\t\t\tdisabled={state.isTextUnselected}\n\t\t\t\ttitle=\"Очистить выбранный тег\"\n\t\t\t\ticon={<BrushCleaning />}\n\t\t\t\tonClick={onCleanTag}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","import { useEffect, useRef } from \"react\";\n\nimport { $generateNodesFromDOM } from \"@lexical/html\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $createParagraphNode, $getRoot } from \"lexical\";\n\ninterface InitialHtmlPluginProps {\n\tinitialHTML?: string;\n\tshouldSkip: boolean;\n}\n\n/**\n * Плагин Lexical для инициализации содержимого редактора из HTML-строки.\n */\nexport function InitialHtmlPlugin({ initialHTML, shouldSkip }: InitialHtmlPluginProps) {\n\tconst [editor] = useLexicalComposerContext();\n\tconst isAppliedRef = useRef(false);\n\n\tuseEffect(() => {\n\t\tif (shouldSkip || !initialHTML || isAppliedRef.current || typeof window === \"undefined\") return;\n\n\t\tisAppliedRef.current = true;\n\t\teditor.update(() => {\n\t\t\tconst root = $getRoot();\n\t\t\tconst dom = new DOMParser().parseFromString(initialHTML, \"text/html\");\n\t\t\tconst nodes = $generateNodesFromDOM(editor, dom);\n\n\t\t\troot.clear();\n\t\t\tif (nodes.length === 0) {\n\t\t\t\troot.append($createParagraphNode());\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\troot.append(...nodes);\n\t\t});\n\t}, [editor, initialHTML, shouldSkip]);\n\n\treturn null;\n}\n","export type TextAlignment = \"left\" | \"center\" | \"right\" | \"justify\";\n\nexport type TextEditorBlockStyle =\n\t| \"header-one\"\n\t| \"header-two\"\n\t| \"header-three\"\n\t| \"header-four\"\n\t| \"header-five\"\n\t| \"header-six\"\n\t| \"blockquote\"\n\t| \"code-block\"\n\t| \"ordered-list-item\"\n\t| \"unordered-list-item\"\n\t| \"unstyled\"\n\t| \"paragraph\";\n\nexport type TextEditorInlineStyle = \"BOLD\" | \"ITALIC\" | \"UNDERLINE\" | \"STRIKETHROUGH\" | \"HIGHLIGHT\" | \"CODE\";\n\nexport type TextEditorElementTypes = TextEditorBlockStyle | TextEditorInlineStyle;\n\nexport interface TextEditorLinkState {\n\tariaLabel: string;\n\ttext: string;\n\turl: string;\n\tadd: string;\n\tqrCode?: boolean;\n}\n\nexport type LinkType = TextEditorLinkState | string;\n\nexport interface LexicalToolbarState {\n\tblockType: string;\n\tisTextUnselected: boolean;\n\tactiveInlineStyles: Record<TextEditorInlineStyle, boolean>;\n\tactiveAlignment: TextAlignment | null;\n}\n\nexport const DEFAULT_TOOLBAR_STATE: LexicalToolbarState = {\n\tblockType: \"unstyled\",\n\tisTextUnselected: true,\n\tactiveInlineStyles: {\n\t\tBOLD: false,\n\t\tITALIC: false,\n\t\tUNDERLINE: false,\n\t\tSTRIKETHROUGH: false,\n\t\tHIGHLIGHT: false,\n\t\tCODE: false\n\t},\n\tactiveAlignment: null\n};\n","import type { TextEditorBlockStyle } from \"../../model/textEditorTypes\";\n\nexport const getHeadingBlockType = (tag: string): TextEditorBlockStyle => {\n\tswitch (tag) {\n\t\tcase \"h3\":\n\t\t\treturn \"header-three\";\n\t\tcase \"h4\":\n\t\t\treturn \"header-four\";\n\t\tcase \"h5\":\n\t\t\treturn \"header-five\";\n\t\tcase \"h6\":\n\t\t\treturn \"header-six\";\n\t\tdefault:\n\t\t\treturn \"unstyled\";\n\t}\n};\n\nexport const getHeadingTagByStyle = (style: string): \"h3\" | \"h4\" | \"h5\" | \"h6\" | null => {\n\tswitch (style) {\n\t\tcase \"header-three\":\n\t\t\treturn \"h3\";\n\t\tcase \"header-four\":\n\t\t\treturn \"h4\";\n\t\tcase \"header-five\":\n\t\t\treturn \"h5\";\n\t\tcase \"header-six\":\n\t\t\treturn \"h6\";\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nexport const getLexicalInlineStyle = (style: string): string | null => {\n\tswitch (style) {\n\t\tcase \"BOLD\":\n\t\t\treturn \"bold\";\n\t\tcase \"ITALIC\":\n\t\t\treturn \"italic\";\n\t\tcase \"UNDERLINE\":\n\t\t\treturn \"underline\";\n\t\tcase \"STRIKETHROUGH\":\n\t\t\treturn \"strikethrough\";\n\t\tcase \"HIGHLIGHT\":\n\t\t\treturn \"highlight\";\n\t\tcase \"CODE\":\n\t\t\treturn \"code\";\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n","import { $isListItemNode, $isListNode } from \"@lexical/list\";\nimport { $isHeadingNode, $isQuoteNode } from \"@lexical/rich-text\";\nimport { $getSelection, $isRangeSelection } from \"lexical\";\n\nimport { DEFAULT_TOOLBAR_STATE, type LexicalToolbarState, type TextAlignment } from \"../../model/textEditorTypes\";\n\nimport { getHeadingBlockType } from \"./styleMappers\";\n\nexport const resolveBlockType = (): string => {\n\tconst selection = $getSelection();\n\tif (!$isRangeSelection(selection)) return \"unstyled\";\n\n\tconst anchorNode = selection.anchor.getNode();\n\tconst topLevel = anchorNode.getTopLevelElementOrThrow();\n\n\tif ($isListItemNode(topLevel)) {\n\t\tconst listNode = topLevel.getParent();\n\t\tif ($isListNode(listNode)) {\n\t\t\treturn listNode.getListType() === \"bullet\" ? \"unordered-list-item\" : \"ordered-list-item\";\n\t\t}\n\t}\n\n\tif ($isListNode(topLevel)) {\n\t\treturn topLevel.getListType() === \"bullet\" ? \"unordered-list-item\" : \"ordered-list-item\";\n\t}\n\n\tif ($isHeadingNode(topLevel)) {\n\t\treturn getHeadingBlockType(topLevel.getTag());\n\t}\n\n\tif ($isQuoteNode(topLevel)) {\n\t\treturn \"blockquote\";\n\t}\n\n\tif (topLevel.getType() === \"paragraph\") {\n\t\treturn \"unstyled\";\n\t}\n\n\treturn topLevel.getType();\n};\n\nexport const resolveAlignment = (): TextAlignment | null => {\n\tconst selection = $getSelection();\n\tif (!$isRangeSelection(selection)) return null;\n\n\tconst anchorNode = selection.anchor.getNode();\n\tconst topLevel = anchorNode.getTopLevelElementOrThrow();\n\tconst formatType = topLevel.getFormatType();\n\n\tswitch (formatType) {\n\t\tcase \"left\":\n\t\tcase \"center\":\n\t\tcase \"right\":\n\t\tcase \"justify\":\n\t\t\treturn formatType;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nexport const resolveToolbarState = (): LexicalToolbarState => {\n\tconst selection = $getSelection();\n\tif (!$isRangeSelection(selection)) {\n\t\treturn DEFAULT_TOOLBAR_STATE;\n\t}\n\n\treturn {\n\t\tblockType: resolveBlockType(),\n\t\tisTextUnselected: selection.isCollapsed(),\n\t\tactiveInlineStyles: {\n\t\t\tBOLD: selection.hasFormat(\"bold\"),\n\t\t\tITALIC: selection.hasFormat(\"italic\"),\n\t\t\tUNDERLINE: selection.hasFormat(\"underline\"),\n\t\t\tSTRIKETHROUGH: selection.hasFormat(\"strikethrough\"),\n\t\t\tHIGHLIGHT: selection.hasFormat(\"highlight\" as never),\n\t\t\tCODE: selection.hasFormat(\"code\")\n\t\t},\n\t\tactiveAlignment: resolveAlignment()\n\t};\n};\n","import { useEffect } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { LexicalEditor } from \"lexical\";\n\nimport { resolveToolbarState } from \"../../lib/toolbar/resolveToolbarState\";\n\nimport type { LexicalToolbarState } from \"../../model/textEditorTypes\";\n\ninterface SelectionStatePluginProps {\n\tonEditorReady: (editor: LexicalEditor) => void;\n\tonStateChange: (state: LexicalToolbarState) => void;\n}\n\n/**\n * Плагин Lexical, отслеживающий состояние выделения и готовность редактора.\n */\nexport function SelectionStatePlugin({ onEditorReady, onStateChange }: SelectionStatePluginProps) {\n\tconst [editor] = useLexicalComposerContext();\n\n\tuseEffect(() => {\n\t\tonEditorReady(editor);\n\n\t\treturn editor.registerUpdateListener(({ editorState }) => {\n\t\t\teditorState.read(() => {\n\t\t\t\tonStateChange(resolveToolbarState());\n\t\t\t});\n\t\t});\n\t}, [editor, onEditorReady, onStateChange]);\n\n\treturn null;\n}\n","import { EditorState as LexicalEditorState } from \"lexical\";\n\nimport type { TextEditorLexicalRaw } from \"../../editorModel\";\n\nexport const createLexicalRaw = (editorState: LexicalEditorState): TextEditorLexicalRaw => {\n\treturn {\n\t\tformat: \"lexical\",\n\t\tversion: 1,\n\t\teditorState: editorState.toJSON() as unknown as Record<string, unknown>\n\t};\n};\n","import { $findMatchingParent } from \"@lexical/utils\";\nimport { $getSelection, $isRangeSelection, type LexicalNode } from \"lexical\";\n\n/** Редактируем один wrapper только когда обе границы selection принадлежат ему. */\nexport function $findSelectedInlineNode<T extends LexicalNode>(predicate: (node: LexicalNode) => node is T): T | null {\n\tconst selection = $getSelection();\n\tif (!$isRangeSelection(selection)) return null;\n\tconst anchor = $findMatchingParent(selection.anchor.getNode(), predicate);\n\tconst focus = $findMatchingParent(selection.focus.getNode(), predicate);\n\treturn anchor && focus && anchor.is(focus) && predicate(anchor) ? anchor : null;\n}\n","import { $createParagraphNode, $getNodeByKey, $getRoot, $isElementNode, $isTextNode, $setSelection, type RangeSelection } from \"lexical\";\n\n/**\n * Восстанавливает место вставки, сохранённое до переноса фокуса в диалог.\n * Вызывается только внутри editor.update при подтверждении: открытие и отмена\n * не меняют документ/историю. Удалённый или отсутствующий диапазон означает\n * добавление в конец; пустому корню нужен абзац для корректного inline-узла.\n */\nexport function $restoreEditorDialogSelection(snapshot: RangeSelection | null): RangeSelection {\n\tif (\n\t\tsnapshot &&\n\t\t[snapshot.anchor, snapshot.focus].every((point) => {\n\t\t\tconst node = $getNodeByKey(point.key);\n\t\t\tif (!node?.isAttached() || point.offset < 0) return false;\n\t\t\treturn point.type === \"text\"\n\t\t\t\t? $isTextNode(node) && point.offset <= node.getTextContentSize()\n\t\t\t\t: $isElementNode(node) && point.offset <= node.getChildrenSize();\n\t\t})\n\t) {\n\t\tconst selection = snapshot.clone();\n\t\t$setSelection(selection);\n\t\treturn selection;\n\t}\n\tconst root = $getRoot();\n\tif (root.isEmpty()) root.append($createParagraphNode());\n\treturn root.selectEnd();\n}\n","import type { LexicalNode } from \"lexical\";\n\nexport const getSemanticTagDepth = (node: LexicalNode): number => {\n\tlet depth = 0;\n\tlet current: LexicalNode | null = node;\n\n\twhile (current) {\n\t\tdepth += 1;\n\t\tcurrent = current.getParent();\n\t}\n\n\treturn depth;\n};\n","import { LinkAttributes, LinkNode, SerializedLinkNode } from \"@lexical/link\";\nimport {\n\t$applyNodeReplacement,\n\tDOMConversionMap,\n\tDOMConversionOutput,\n\tEditorConfig,\n\tElementNode,\n\tLexicalNode,\n\tLexicalUpdateJSON,\n\tNodeKey,\n\tRangeSelection,\n\tSpread\n} from \"lexical\";\n\nexport type AccessibleLinkAttributes = LinkAttributes & {\n\tariaLabel?: null | string;\n\tqrCode?: boolean;\n\tadd?: null | string;\n\ttext?: null | string;\n};\n\nexport type SerializedAccessibleLinkNode = Spread<\n\t{\n\t\tariaLabel: null | string;\n\t\tqrCode: boolean;\n\t\tadd: null | string;\n\t\ttext: null | string;\n\t},\n\tSerializedLinkNode\n>;\n\nconst convertAccessibleLinkElement = (domNode: Node): DOMConversionOutput => {\n\tif (!(domNode instanceof HTMLAnchorElement)) {\n\t\treturn { node: null };\n\t}\n\n\tconst textContent = domNode.textContent;\n\tif ((textContent === null || textContent === \"\") && domNode.children.length === 0) {\n\t\treturn { node: null };\n\t}\n\n\treturn {\n\t\tnode: $createAccessibleLinkNode(domNode.getAttribute(\"href\") || \"\", {\n\t\t\trel: domNode.getAttribute(\"rel\"),\n\t\t\ttarget: domNode.getAttribute(\"target\"),\n\t\t\ttitle: domNode.getAttribute(\"title\"),\n\t\t\tariaLabel: domNode.getAttribute(\"aria-label\"),\n\t\t\tqrCode: domNode.getAttribute(\"data-qr-code\") === \"true\",\n\t\t\tadd: null,\n\t\t\ttext: textContent\n\t\t})\n\t};\n};\n\nexport class AccessibleLinkNode extends LinkNode {\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\t__ariaLabel: null | string;\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\t__qrCode: boolean;\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\t__add: null | string;\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\t__text: null | string;\n\n\tstatic getType(): string {\n\t\treturn \"accessible-link\";\n\t}\n\n\tstatic clone(node: AccessibleLinkNode): AccessibleLinkNode {\n\t\treturn new AccessibleLinkNode(\n\t\t\tnode.__url,\n\t\t\t{\n\t\t\t\trel: node.__rel,\n\t\t\t\ttarget: node.__target,\n\t\t\t\ttitle: node.__title,\n\t\t\t\tariaLabel: node.__ariaLabel,\n\t\t\t\tqrCode: node.__qrCode,\n\t\t\t\tadd: node.__add,\n\t\t\t\ttext: node.__text\n\t\t\t},\n\t\t\tnode.__key\n\t\t);\n\t}\n\n\tconstructor(url = \"\", attributes: AccessibleLinkAttributes = {}, key?: NodeKey) {\n\t\tsuper(url, attributes, key);\n\n\t\tconst { ariaLabel = null, qrCode = false, add = null, text = null } = attributes;\n\t\tthis.__ariaLabel = ariaLabel;\n\t\tthis.__qrCode = qrCode;\n\t\tthis.__add = add;\n\t\tthis.__text = text;\n\t}\n\n\tstatic importDOM(): DOMConversionMap | null {\n\t\treturn {\n\t\t\ta: () => ({\n\t\t\t\tconversion: convertAccessibleLinkElement,\n\t\t\t\tpriority: 2\n\t\t\t})\n\t\t};\n\t}\n\n\tstatic importJSON(serializedNode: SerializedAccessibleLinkNode): AccessibleLinkNode {\n\t\treturn $createAccessibleLinkNode().updateFromJSON(serializedNode);\n\t}\n\n\tupdateFromJSON(serializedNode: LexicalUpdateJSON<SerializedAccessibleLinkNode>): this {\n\t\treturn super\n\t\t\t.updateFromJSON(serializedNode)\n\t\t\t.setAriaLabel(serializedNode.ariaLabel || null)\n\t\t\t.setQrCode(!!serializedNode.qrCode)\n\t\t\t.setAdd(serializedNode.add || null)\n\t\t\t.setText(serializedNode.text || null);\n\t}\n\n\texportJSON(): SerializedAccessibleLinkNode {\n\t\treturn {\n\t\t\t...super.exportJSON(),\n\t\t\ttype: \"accessible-link\",\n\t\t\tversion: 1,\n\t\t\tariaLabel: this.getAriaLabel(),\n\t\t\tqrCode: this.getQrCode(),\n\t\t\tadd: this.getAdd(),\n\t\t\ttext: this.getText()\n\t\t} as SerializedAccessibleLinkNode;\n\t}\n\n\tcreateDOM(config: EditorConfig): HTMLElement {\n\t\tconst dom = super.createDOM(config) as HTMLElement;\n\t\tthis.applyAccessibleAttributes(null, dom);\n\t\treturn dom;\n\t}\n\n\tupdateDOM(prevNode: this, anchor: HTMLElement, config: EditorConfig): boolean {\n\t\tconst isUpdated = super.updateDOM(prevNode, anchor as never, config);\n\t\tthis.applyAccessibleAttributes(prevNode, anchor);\n\t\treturn isUpdated;\n\t}\n\n\tapplyAccessibleAttributes(prevNode: this | null, anchor: HTMLElement): void {\n\t\tif (!(anchor instanceof HTMLAnchorElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!prevNode || prevNode.__ariaLabel !== this.__ariaLabel) {\n\t\t\tif (this.__ariaLabel) {\n\t\t\t\tanchor.setAttribute(\"aria-label\", this.__ariaLabel);\n\t\t\t} else {\n\t\t\t\tanchor.removeAttribute(\"aria-label\");\n\t\t\t}\n\t\t}\n\n\t\tif (!prevNode || prevNode.__qrCode !== this.__qrCode) {\n\t\t\tanchor.setAttribute(\"data-qr-code\", this.__qrCode ? \"true\" : \"false\");\n\t\t}\n\t}\n\n\tinsertNewAfter(_selection: RangeSelection, restoreSelection = true): null | ElementNode {\n\t\tconst linkNode = $createAccessibleLinkNode(this.__url, {\n\t\t\trel: this.__rel,\n\t\t\ttarget: this.__target,\n\t\t\ttitle: this.__title,\n\t\t\tariaLabel: this.__ariaLabel,\n\t\t\tqrCode: this.__qrCode,\n\t\t\tadd: this.__add,\n\t\t\ttext: this.__text\n\t\t});\n\t\tthis.insertAfter(linkNode, restoreSelection);\n\t\treturn linkNode;\n\t}\n\n\tgetAriaLabel(): null | string {\n\t\treturn this.getLatest().__ariaLabel;\n\t}\n\n\tsetAriaLabel(ariaLabel: null | string): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__ariaLabel = ariaLabel;\n\t\treturn this;\n\t}\n\n\tgetQrCode(): boolean {\n\t\treturn this.getLatest().__qrCode;\n\t}\n\n\tsetQrCode(qrCode: boolean): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__qrCode = qrCode;\n\t\treturn this;\n\t}\n\n\tgetAdd(): null | string {\n\t\treturn this.getLatest().__add;\n\t}\n\n\tsetAdd(add: null | string): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__add = add;\n\t\treturn this;\n\t}\n\n\tgetText(): null | string {\n\t\treturn this.getLatest().__text;\n\t}\n\n\tsetText(text: null | string): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__text = text;\n\t\treturn this;\n\t}\n}\n\nexport const $createAccessibleLinkNode = (url = \"\", attributes?: AccessibleLinkAttributes): AccessibleLinkNode => {\n\treturn $applyNodeReplacement(new AccessibleLinkNode(url, attributes));\n};\n\nexport const $isAccessibleLinkNode = (node: LexicalNode | null | undefined): node is AccessibleLinkNode => {\n\treturn node instanceof AccessibleLinkNode;\n};\n","import {\n\t$applyNodeReplacement,\n\tDOMConversionMap,\n\tDOMConversionOutput,\n\tEditorConfig,\n\tElementNode,\n\tLexicalNode,\n\tLexicalUpdateJSON,\n\tNodeKey,\n\tRangeSelection,\n\tSerializedElementNode,\n\tSpread\n} from \"lexical\";\n\nexport type SemanticTagAttributes = Record<string, string>;\n\nexport type SerializedSemanticTagNode = Spread<\n\t{\n\t\ttag: string;\n\t\tattributes: SemanticTagAttributes;\n\t\ttext: null | string;\n\t},\n\tSerializedElementNode\n>;\n\nconst getAttributesFromElement = (element: HTMLElement): SemanticTagAttributes => {\n\tconst attributes: SemanticTagAttributes = {};\n\tArray.from(element.attributes).forEach((attr) => {\n\t\tif (attr.name === \"class\") return;\n\t\tattributes[attr.name] = attr.value;\n\t});\n\treturn attributes;\n};\n\nconst convertSemanticTagElement = (domNode: Node): DOMConversionOutput => {\n\tif (!(domNode instanceof HTMLElement)) {\n\t\treturn { node: null };\n\t}\n\n\tconst tag = domNode.tagName.toLowerCase();\n\tif (![\"abbr\", \"span\", \"time\", \"cite\", \"del\", \"ins\"].includes(tag)) {\n\t\treturn { node: null };\n\t}\n\n\tconst text = domNode.textContent;\n\tif ((text === null || text === \"\") && domNode.children.length === 0) {\n\t\treturn { node: null };\n\t}\n\n\treturn {\n\t\tnode: $createSemanticTagNode(tag, getAttributesFromElement(domNode), text)\n\t};\n};\n\nexport class SemanticTagNode extends ElementNode {\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\t__tag: string;\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\t__attributes: SemanticTagAttributes;\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\t__text: null | string;\n\n\tstatic getType(): string {\n\t\treturn \"semantic-tag\";\n\t}\n\n\tstatic clone(node: SemanticTagNode): SemanticTagNode {\n\t\treturn new SemanticTagNode(node.__tag, node.__attributes, node.__text, node.__key);\n\t}\n\n\tconstructor(tag = \"span\", attributes: SemanticTagAttributes = {}, text: null | string = null, key?: NodeKey) {\n\t\tsuper(key);\n\t\tthis.__tag = tag;\n\t\tthis.__attributes = attributes;\n\t\tthis.__text = text;\n\t}\n\n\tstatic importDOM(): DOMConversionMap | null {\n\t\treturn {\n\t\t\tabbr: () => ({ conversion: convertSemanticTagElement, priority: 2 }),\n\t\t\tspan: () => ({ conversion: convertSemanticTagElement, priority: 2 }),\n\t\t\ttime: () => ({ conversion: convertSemanticTagElement, priority: 2 }),\n\t\t\tcite: () => ({ conversion: convertSemanticTagElement, priority: 2 }),\n\t\t\tdel: () => ({ conversion: convertSemanticTagElement, priority: 2 }),\n\t\t\tins: () => ({ conversion: convertSemanticTagElement, priority: 2 })\n\t\t};\n\t}\n\n\tstatic importJSON(serializedNode: SerializedSemanticTagNode): SemanticTagNode {\n\t\treturn $createSemanticTagNode(serializedNode.tag, serializedNode.attributes, serializedNode.text).updateFromJSON(serializedNode);\n\t}\n\n\tupdateFromJSON(serializedNode: LexicalUpdateJSON<SerializedSemanticTagNode>): this {\n\t\treturn super\n\t\t\t.updateFromJSON(serializedNode)\n\t\t\t.setTag(serializedNode.tag)\n\t\t\t.setAttributes(serializedNode.attributes || {})\n\t\t\t.setText(serializedNode.text || null);\n\t}\n\n\texportJSON(): SerializedSemanticTagNode {\n\t\treturn {\n\t\t\t...super.exportJSON(),\n\t\t\ttype: \"semantic-tag\",\n\t\t\tversion: 1,\n\t\t\ttag: this.getTag(),\n\t\t\tattributes: this.getAttributes(),\n\t\t\ttext: this.getText()\n\t\t};\n\t}\n\n\tcreateDOM(config: EditorConfig): HTMLElement {\n\t\tvoid config;\n\t\tconst element = document.createElement(this.__tag);\n\t\tthis.applyEditorAttributes(element);\n\t\treturn element;\n\t}\n\n\tupdateDOM(prevNode: this, dom: HTMLElement): boolean {\n\t\tif (prevNode.__tag !== this.__tag) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.applyEditorAttributes(dom);\n\t\treturn false;\n\t}\n\n\texportDOM(): { element: HTMLElement } {\n\t\tconst element = document.createElement(this.__tag);\n\t\tObject.entries(this.__attributes).forEach(([key, value]) => {\n\t\t\telement.setAttribute(key, value);\n\t\t});\n\t\treturn { element };\n\t}\n\n\tapplyEditorAttributes(dom: HTMLElement): void {\n\t\tdom.classList.add(\"custom-tag-highlight\");\n\t\tArray.from(dom.attributes).forEach((attr) => {\n\t\t\tif (attr.name === \"class\") return;\n\t\t\tdom.removeAttribute(attr.name);\n\t\t});\n\t\tObject.entries(this.__attributes).forEach(([key, value]) => {\n\t\t\tdom.setAttribute(key, value);\n\t\t});\n\t}\n\n\tinsertNewAfter(_selection: RangeSelection, restoreSelection = true): null | ElementNode {\n\t\tconst node = $createSemanticTagNode(this.__tag, this.__attributes, this.__text);\n\t\tthis.insertAfter(node, restoreSelection);\n\t\treturn node;\n\t}\n\n\tcanInsertTextBefore(): boolean {\n\t\treturn false;\n\t}\n\n\tcanInsertTextAfter(): boolean {\n\t\treturn false;\n\t}\n\n\tcanBeEmpty(): boolean {\n\t\treturn false;\n\t}\n\n\tisInline(): boolean {\n\t\treturn true;\n\t}\n\n\tgetTag(): string {\n\t\treturn this.getLatest().__tag;\n\t}\n\n\tsetTag(tag: string): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__tag = tag;\n\t\treturn this;\n\t}\n\n\tgetAttributes(): SemanticTagAttributes {\n\t\treturn this.getLatest().__attributes;\n\t}\n\n\tsetAttributes(attributes: SemanticTagAttributes): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__attributes = attributes;\n\t\treturn this;\n\t}\n\n\tgetText(): null | string {\n\t\treturn this.getLatest().__text;\n\t}\n\n\tsetText(text: null | string): this {\n\t\tconst writable = this.getWritable();\n\t\twritable.__text = text;\n\t\treturn this;\n\t}\n}\n\nexport const $createSemanticTagNode = (\n\ttag: string,\n\tattributes: SemanticTagAttributes = {},\n\ttext: null | string = null\n): SemanticTagNode => {\n\treturn $applyNodeReplacement(new SemanticTagNode(tag, attributes, text));\n};\n\nexport const $isSemanticTagNode = (node: LexicalNode | null | undefined): node is SemanticTagNode => {\n\treturn node instanceof SemanticTagNode;\n};\n","import { useCallback, useRef, useState } from \"react\";\n\nimport { $isLinkNode } from \"@lexical/link\";\nimport { INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND, REMOVE_LIST_COMMAND } from \"@lexical/list\";\nimport { $createHeadingNode, $createQuoteNode } from \"@lexical/rich-text\";\nimport { $setBlocksType } from \"@lexical/selection\";\nimport {\n\t$createParagraphNode,\n\t$createTextNode,\n\t$getSelection,\n\t$getNodeByKey,\n\t$isRangeSelection,\n\ttype ElementFormatType,\n\tFORMAT_ELEMENT_COMMAND,\n\tFORMAT_TEXT_COMMAND,\n\tHISTORY_MERGE_TAG,\n\tHISTORY_PUSH_TAG,\n\ttype LexicalEditor,\n\ttype LexicalNode,\n\ttype RangeSelection,\n\tREDO_COMMAND,\n\tSKIP_DOM_SELECTION_TAG,\n\tUNDO_COMMAND\n} from \"lexical\";\n\nimport { $findSelectedInlineNode } from \"../../lib/selection/findSelectedInlineNode\";\nimport { $restoreEditorDialogSelection } from \"../../lib/selection/restoreEditorDialogSelection\";\nimport { getSemanticTagDepth } from \"../../lib/semantic/getSemanticTagDepth\";\nimport { getHeadingTagByStyle, getLexicalInlineStyle } from \"../../lib/toolbar/styleMappers\";\nimport { $createAccessibleLinkNode, $isAccessibleLinkNode } from \"../../nodes/AccessibleLinkNode\";\nimport { $createSemanticTagNode, $isSemanticTagNode, type SemanticTagNode } from \"../../nodes/SemanticTagNode\";\nimport { LinkTypes, TagTypes } from \"../../toolbar\";\nimport { type SemanticDialogState } from \"../semanticDialogState\";\nimport { type LexicalToolbarState, type LinkType, type TextAlignment } from \"../textEditorTypes\";\n\ninterface InsertLinkPayload {\n\turl: string;\n\ttext: string;\n\tadd: string;\n\tariaLabel: string;\n\tqrCode: boolean;\n}\n\ninterface UseTextEditorLexicalActionsParams {\n\teditor: LexicalEditor | null;\n\ttoolbarState: LexicalToolbarState;\n\thasLocalLinkDialog: boolean;\n\tonOpenLinkDialog: (type: LinkTypes) => void;\n\tonOpenTagDialog: (type: TagTypes) => void;\n}\n\nexport function useTextEditorLexicalActions({\n\teditor,\n\ttoolbarState,\n\thasLocalLinkDialog,\n\tonOpenLinkDialog,\n\tonOpenTagDialog\n}: UseTextEditorLexicalActionsParams) {\n\t// Snapshot принадлежит одной сессии ссылки и конкретному editor, не внешнему\n\t// каталогу. Каждое открытие заменяет его, в том числе после отмены диалога.\n\tconst linkSelectionRef = useRef<{ editor: LexicalEditor; selection: RangeSelection | null; key: string | null; local: boolean } | null>(\n\t\tnull\n\t);\n\tconst semanticSelectionRef = useRef<{ editor: LexicalEditor; selection: RangeSelection | null; key: string | null } | null>(null);\n\tconst [linkDialogState, setLinkDialogState] = useState<LinkType>(\"\");\n\tconst [semanticDialogState, setSemanticDialogState] = useState<SemanticDialogState>({ text: \"\", attributes: {} });\n\tconst handleBlockStyleToggle = useCallback(\n\t\t(style: string) => {\n\t\t\tif (!editor) return;\n\n\t\t\tif (style === \"unordered-list-item\") {\n\t\t\t\tif (toolbarState.blockType === \"unordered-list-item\") {\n\t\t\t\t\teditor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\teditor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (style === \"ordered-list-item\") {\n\t\t\t\tif (toolbarState.blockType === \"ordered-list-item\") {\n\t\t\t\t\teditor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\teditor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tif (!$isRangeSelection(selection)) return;\n\n\t\t\t\tif (style === \"unstyled\" || style === \"paragraph\") {\n\t\t\t\t\t$setBlocksType(selection, () => $createParagraphNode());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (style === \"blockquote\") {\n\t\t\t\t\t$setBlocksType(selection, () => $createQuoteNode());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst headingTag = getHeadingTagByStyle(style);\n\t\t\t\tif (headingTag) {\n\t\t\t\t\t$setBlocksType(selection, () => $createHeadingNode(headingTag));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\t[editor, toolbarState.blockType]\n\t);\n\n\tconst handleInlineStyleToggle = useCallback(\n\t\t(style: string) => {\n\t\t\tif (!editor) return;\n\n\t\t\tconst lexicalStyle = getLexicalInlineStyle(style);\n\t\t\tif (!lexicalStyle) return;\n\n\t\t\teditor.dispatchCommand(FORMAT_TEXT_COMMAND, lexicalStyle as never);\n\t\t},\n\t\t[editor]\n\t);\n\n\tconst handleAlignmentChange = useCallback(\n\t\t(alignment: TextAlignment) => {\n\t\t\tif (!editor) return;\n\t\t\teditor.dispatchCommand(FORMAT_ELEMENT_COMMAND, alignment as ElementFormatType);\n\t\t},\n\t\t[editor]\n\t);\n\n\tconst handleUndo = useCallback(() => {\n\t\tif (!editor) return;\n\t\teditor.dispatchCommand(UNDO_COMMAND, undefined);\n\t}, [editor]);\n\n\tconst handleRedo = useCallback(() => {\n\t\tif (!editor) return;\n\t\teditor.dispatchCommand(REDO_COMMAND, undefined);\n\t}, [editor]);\n\n\tconst insertLinkAtSelection = useCallback(\n\t\t(payload: InsertLinkPayload) => {\n\t\t\tif (!editor) return;\n\n\t\t\tconst snapshot = linkSelectionRef.current;\n\t\t\tlinkSelectionRef.current = null;\n\t\t\t// Отдельный selection-only commit создаёт baseline HistoryPlugin даже\n\t\t\t// до первого ввода. Вставка затем отменяется одним undo и не сливается\n\t\t\t// с предыдущим набором текста; фокус передаём только после закрытия диалога.\n\t\t\teditor.update(\n\t\t\t\t() => {\n\t\t\t\t\t$restoreEditorDialogSelection(snapshot?.editor === editor ? snapshot.selection : null);\n\t\t\t\t},\n\t\t\t\t{ discrete: true, tag: [HISTORY_MERGE_TAG, SKIP_DOM_SELECTION_TAG] }\n\t\t\t);\n\t\t\teditor.update(\n\t\t\t\t() => {\n\t\t\t\t\tconst selection = $getSelection();\n\t\t\t\t\tif (!$isRangeSelection(selection)) return;\n\t\t\t\t\tconst existing = snapshot?.editor === editor && snapshot.key ? $getNodeByKey(snapshot.key) : null;\n\t\t\t\t\tif ($isAccessibleLinkNode(existing) && existing.isAttached()) {\n\t\t\t\t\t\texisting\n\t\t\t\t\t\t\t.setURL(payload.url)\n\t\t\t\t\t\t\t.setAriaLabel(payload.ariaLabel)\n\t\t\t\t\t\t\t.setQrCode(payload.qrCode)\n\t\t\t\t\t\t\t.setAdd(payload.add || null);\n\t\t\t\t\t\t// Изменение адреса не стирает rich-text дочерних узлов.\n\t\t\t\t\t\tif (snapshot?.local && payload.text !== existing.getTextContent())\n\t\t\t\t\t\t\texisting.clear().append($createTextNode(payload.text));\n\t\t\t\t\t\texisting.setText(existing.getTextContent());\n\t\t\t\t\t\texisting.selectEnd();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst selectionText = selection.getTextContent();\n\t\t\t\t\tconst finalText = payload.text.length > 0 ? payload.text : selectionText;\n\t\t\t\t\tif (!finalText.trim()) return;\n\n\t\t\t\t\tconst linkNode = $createAccessibleLinkNode(payload.url, {\n\t\t\t\t\t\ttarget: \"_blank\",\n\t\t\t\t\t\trel: \"noopener noreferrer\",\n\t\t\t\t\t\tariaLabel: payload.ariaLabel || selectionText || finalText,\n\t\t\t\t\t\tqrCode: payload.qrCode,\n\t\t\t\t\t\tadd: payload.add || null,\n\t\t\t\t\t\ttext: finalText\n\t\t\t\t\t});\n\n\t\t\t\t\tconst textNode = $createTextNode(finalText);\n\t\t\t\t\tlinkNode.append(textNode);\n\t\t\t\t\tselection.insertNodes([linkNode]);\n\t\t\t\t},\n\t\t\t\t{ tag: HISTORY_PUSH_TAG }\n\t\t\t);\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\teditor.focus();\n\t\t\t});\n\t\t},\n\t\t[editor]\n\t);\n\n\tconst handleAddLink = useCallback(\n\t\t(url: string, text: string, add: string, ariaLabel: string, showQrCode: boolean) => {\n\t\t\tinsertLinkAtSelection({\n\t\t\t\turl,\n\t\t\t\ttext,\n\t\t\t\tadd,\n\t\t\t\tariaLabel,\n\t\t\t\tqrCode: showQrCode\n\t\t\t});\n\t\t},\n\t\t[insertLinkAtSelection]\n\t);\n\n\tconst handleAddLocalLink = useCallback(\n\t\t(url: string, caption: string) => {\n\t\t\tinsertLinkAtSelection({\n\t\t\t\turl,\n\t\t\t\ttext: caption,\n\t\t\t\tadd: \"\",\n\t\t\t\tariaLabel: \"Внутренняя ссылка на статью: \" + caption,\n\t\t\t\tqrCode: false\n\t\t\t});\n\t\t},\n\t\t[insertLinkAtSelection]\n\t);\n\n\tconst readSelectedLinkState = useCallback((): LinkType => {\n\t\tif (!editor) return \"\";\n\n\t\tlet state: LinkType = \"\";\n\t\teditor.getEditorState().read(() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif (!$isRangeSelection(selection)) {\n\t\t\t\tstate = \"\";\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectionText = selection.getTextContent();\n\t\t\tconst linkNode = $findSelectedInlineNode($isLinkNode);\n\n\t\t\tif ($isAccessibleLinkNode(linkNode)) {\n\t\t\t\tstate = {\n\t\t\t\t\turl: linkNode.getURL(),\n\t\t\t\t\tariaLabel: linkNode.getAriaLabel() || \"\",\n\t\t\t\t\ttext: linkNode.getText() || selectionText,\n\t\t\t\t\tadd: linkNode.getAdd() || \"\",\n\t\t\t\t\tqrCode: linkNode.getQrCode()\n\t\t\t\t};\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($isLinkNode(linkNode)) {\n\t\t\t\tstate = {\n\t\t\t\t\turl: linkNode.getURL(),\n\t\t\t\t\tariaLabel: \"\",\n\t\t\t\t\ttext: selectionText,\n\t\t\t\t\tadd: \"\",\n\t\t\t\t\tqrCode: false\n\t\t\t\t};\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate = selectionText;\n\t\t});\n\n\t\treturn state;\n\t}, [editor]);\n\n\tconst handleLinkClick = useCallback(\n\t\t(type: LinkTypes) => {\n\t\t\tif (type === LinkTypes.LOCAL_LINK && !hasLocalLinkDialog) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!editor) return;\n\t\t\teditor.getEditorState().read(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tlinkSelectionRef.current = {\n\t\t\t\t\teditor,\n\t\t\t\t\tselection: $isRangeSelection(selection) ? selection.clone() : null,\n\t\t\t\t\tkey: $findSelectedInlineNode($isAccessibleLinkNode)?.getKey() ?? null,\n\t\t\t\t\tlocal: type === LinkTypes.LOCAL_LINK\n\t\t\t\t};\n\t\t\t});\n\t\t\tsetLinkDialogState(readSelectedLinkState());\n\t\t\tonOpenLinkDialog(type);\n\t\t},\n\t\t[editor, hasLocalLinkDialog, onOpenLinkDialog, readSelectedLinkState]\n\t);\n\n\tconst insertSemanticTagAtSelection = useCallback(\n\t\t(tag: string, text: string, attributes: Record<string, string>) => {\n\t\t\tif (!editor) return;\n\t\t\tconst snapshot = semanticSelectionRef.current;\n\t\t\tsemanticSelectionRef.current = null;\n\t\t\teditor.update(\n\t\t\t\t() => {\n\t\t\t\t\t$restoreEditorDialogSelection(snapshot?.editor === editor ? snapshot.selection : null);\n\t\t\t\t},\n\t\t\t\t{ discrete: true, tag: [HISTORY_MERGE_TAG, SKIP_DOM_SELECTION_TAG] }\n\t\t\t);\n\t\t\teditor.update(\n\t\t\t\t() => {\n\t\t\t\t\tconst selection = $getSelection();\n\t\t\t\t\tif (!$isRangeSelection(selection) || !text.trim()) return;\n\t\t\t\t\tconst existing = snapshot?.editor === editor && snapshot.key ? $getNodeByKey(snapshot.key) : null;\n\t\t\t\t\tif ($isSemanticTagNode(existing) && existing.isAttached() && existing.getTag() === tag) {\n\t\t\t\t\t\texisting.setAttributes(attributes).setText(text);\n\t\t\t\t\t\tif (text !== existing.getTextContent()) existing.clear().append($createTextNode(text));\n\t\t\t\t\t\texisting.selectEnd();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst node = $createSemanticTagNode(tag, attributes, text);\n\t\t\t\t\t\tconst content = $createTextNode(text);\n\t\t\t\t\t\tcontent.setFormat(selection.format).setStyle(selection.style);\n\t\t\t\t\t\tnode.append(content);\n\t\t\t\t\t\tselection.insertNodes([node]);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ tag: HISTORY_PUSH_TAG }\n\t\t\t);\n\t\t\trequestAnimationFrame(() => editor.focus());\n\t\t},\n\t\t[editor]\n\t);\n\n\tconst handleCleanSemanticTag = useCallback(() => {\n\t\tif (!editor) return;\n\n\t\teditor.update(() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif (!$isRangeSelection(selection) || selection.isCollapsed()) return;\n\n\t\t\tconst selectedNodes = selection.getNodes();\n\t\t\tconst semanticNodes = new Set<SemanticTagNode>();\n\n\t\t\tselectedNodes.forEach((node) => {\n\t\t\t\tlet current: LexicalNode | null = node;\n\t\t\t\twhile (current) {\n\t\t\t\t\tif ($isSemanticTagNode(current)) {\n\t\t\t\t\t\tsemanticNodes.add(current);\n\t\t\t\t\t}\n\t\t\t\t\tcurrent = current.getParent();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst sortedNodes = Array.from(semanticNodes).sort((a, b) => getSemanticTagDepth(b) - getSemanticTagDepth(a));\n\t\t\tsortedNodes.forEach((node) => {\n\t\t\t\tif (!node.isAttached()) return;\n\t\t\t\tconst children = node.getChildren();\n\t\t\t\tchildren.forEach((child) => node.insertBefore(child));\n\t\t\t\tnode.remove();\n\t\t\t});\n\t\t});\n\t}, [editor]);\n\n\tconst handleTagClick = useCallback(\n\t\t(type: TagTypes) => {\n\t\t\tif (!editor) return;\n\t\t\teditor.getEditorState().read(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tconst node = $findSelectedInlineNode($isSemanticTagNode);\n\t\t\t\tconst matching = node?.getTag() === (type === TagTypes.lang ? \"span\" : type) ? node : null;\n\t\t\t\tsemanticSelectionRef.current = {\n\t\t\t\t\teditor,\n\t\t\t\t\tselection: $isRangeSelection(selection) ? selection.clone() : null,\n\t\t\t\t\tkey: matching?.getKey() ?? null\n\t\t\t\t};\n\t\t\t\tsetSemanticDialogState({\n\t\t\t\t\ttext: matching?.getTextContent() ?? ($isRangeSelection(selection) ? selection.getTextContent() : \"\"),\n\t\t\t\t\tattributes: { ...matching?.getAttributes() }\n\t\t\t\t});\n\t\t\t});\n\t\t\tonOpenTagDialog(type);\n\t\t},\n\t\t[editor, onOpenTagDialog]\n\t);\n\n\treturn {\n\t\thandleAddLink,\n\t\thandleAddLocalLink,\n\t\thandleAlignmentChange,\n\t\thandleBlockStyleToggle,\n\t\thandleCleanSemanticTag,\n\t\thandleInlineStyleToggle,\n\t\thandleLinkClick,\n\t\thandleRedo,\n\t\thandleTagClick,\n\t\thandleUndo,\n\t\tsemanticDialogState,\n\t\tlinkDialogState,\n\t\tinsertSemanticTagAtSelection\n\t};\n}\n","@use \"@/styles/mixins/mixin\" as *;\n\n.textEditor {\n\tfont-size: inherit;\n}\n\n.textEditorContent {\n\tposition: relative;\n\tpadding: var(--space-md);\n\tborder-radius: var(--radius-md);\n\tbackground-color: var(--surface-secondary);\n\tborder: var(--border);\n\n\t&.focused {\n\t\tborder-color: var(--brand-border);\n\t}\n}\n\n.wrapper {\n\tfont-size: inherit;\n}\n","import { type MouseEvent, useState } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { isSafe } from \"@ryuzaki13/react-foundation-lib/validators\";\n\nimport { Button } from \"../button\";\nimport { Input } from \"../input\";\nimport { Modal, ModalContent, ModalFooter } from \"../modal\";\n\nimport { LinkType } from \"./linkTypes\";\n\ninterface EmailDialogProps {\n\tonClose: () => void;\n\tonConfirm: (url: string, text: string, add: string, ariaLabel: string, showQrCode: boolean) => void;\n\tinitialState?: LinkType;\n}\n\n/**\n * Диалог вставки или редактирования email-ссылки в текстовом редакторе.\n */\nexport function EmailDialog({ onClose, onConfirm, initialState }: EmailDialogProps) {\n\tconst state = (() => {\n\t\tif (isSafe(initialState) && typeof initialState === \"string\") {\n\t\t\treturn { text: \"\", add: \"\", ariaLabel: \"\", url: initialState };\n\t\t}\n\n\t\treturn initialState;\n\t})();\n\tconst [email, setEmail] = useState(() => (isSafe(state) ? (state.url ?? \"\").replace(/^mailto:/i, \"\") : \"\"));\n\tconst [ariaLabel, setAriaLabel] = useState(() => (isSafe(state) ? (state.ariaLabel ?? \"\") : \"\"));\n\tconst [error, setError] = useState<string | null>(null);\n\n\tconst validateEmail = (email: string): boolean => {\n\t\tconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\t\tif (!emailRegex.test(email)) {\n\t\t\tsetError(\"Некорректный email адрес\");\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\n\tconst handleConfirm = (e: MouseEvent) => {\n\t\te.preventDefault();\n\n\t\tif (!validateEmail(email)) return;\n\t\tif (!ariaLabel) {\n\t\t\tsetError(\"Добавьте описание для email\");\n\t\t\treturn;\n\t\t}\n\n\t\tonConfirm(`mailto:${email}`, \"\", \"\", ariaLabel, false);\n\t\thandleClose();\n\t};\n\n\tconst handleClose = () => {\n\t\tsetEmail(\"\");\n\t\tsetAriaLabel(\"\");\n\t\tsetError(null);\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<Modal isOpen={true} onClose={handleClose} title=\"Ссылка на email\" size=\"md\">\n\t\t\t<ModalContent>\n\t\t\t\t<div className={cn(\"flexColumn\", \"gapMd\")}>\n\t\t\t\t\t<Input label=\"Email адрес\" value={email} onChange={setEmail} placeholder=\"some_email@mail.ru\" />\n\n\t\t\t\t\t{error && (\n\t\t\t\t\t\t<div className=\"textColorDanger\">\n\t\t\t\t\t\t\t<strong>Ошибка ввода:</strong> <span className=\"fontItalic\">{error}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel=\"Текст для экранных читалок\"\n\t\t\t\t\t\tvalue={ariaLabel}\n\t\t\t\t\t\tonChange={setAriaLabel}\n\t\t\t\t\t\tplaceholder=\"Электронная почта руководителя городской думмы\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</ModalContent>\n\t\t\t<ModalFooter>\n\t\t\t\t<Button appearance=\"outline\" tone=\"error\" onClick={handleClose}>\n\t\t\t\t\tОтмена\n\t\t\t\t</Button>\n\t\t\t\t<Button appearance=\"outline\" tone=\"success\" onClick={handleConfirm} disabled={!email || !ariaLabel}>\n\t\t\t\t\tПодтвердить\n\t\t\t\t</Button>\n\t\t\t</ModalFooter>\n\t\t</Modal>\n\t);\n}\n","import { type TimeDialogInitialState, type TimeMode } from \"../../model/timeDialogState\";\n\n/** Восстанавливает поля существующего time без переписывания сохранённого значения. */\nexport function getTimeDialogInitialState(value: string | undefined): TimeDialogInitialState {\n\tif (!value) return {};\n\tconst [from, to] = value.split(\"/\");\n\tconst single = from.includes(\"T\") ? \"datetime\" : from.includes(\":\") ? \"time\" : \"date\";\n\tconst mode: TimeMode = to ? `range-${single}` : single;\n\treturn { mode, from, to: to ?? \"\" };\n}\n","import { type MouseEvent, useState } from \"react\";\n\nimport { isSafe, validateUrl } from \"@ryuzaki13/react-foundation-lib/validators\";\n\nimport { Button } from \"../button\";\nimport { CheckBox } from \"../check-box\";\nimport { GridContainer } from \"../grid\";\nimport { Input } from \"../input\";\nimport { Modal, ModalContent, ModalFooter } from \"../modal\";\n\nimport { LinkType } from \"./linkTypes\";\n\ninterface LinkDialogProps {\n\tonClose: () => void;\n\tonConfirm: (url: string, text: string, add: string, ariaLabel: string, showQrCode: boolean) => void;\n\tinitialState?: LinkType;\n}\n\n/**\n * Диалог вставки или редактирования ссылки в текстовом редакторе.\n */\nexport function LinkDialog({ onClose, onConfirm, initialState }: LinkDialogProps) {\n\tconst state = (() => {\n\t\tif (isSafe(initialState)) {\n\t\t\tif (typeof initialState === \"string\") {\n\t\t\t\treturn { text: \"\", add: \"\", ariaLabel: \"\", url: initialState };\n\t\t\t}\n\t\t}\n\t\treturn initialState;\n\t})();\n\tconst [url, setUrl] = useState(() => (isSafe(state) ? (state.url ?? \"\") : \"\"));\n\tconst [ariaLabel, setAriaLabel] = useState(() => (isSafe(state) ? (state.ariaLabel ?? \"\") : \"\"));\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [showQrCode, setShowQrCode] = useState(() =>\n\t\ttypeof initialState === \"object\" && initialState !== null ? (initialState.qrCode ?? false) : false\n\t);\n\n\tconst handleUrlChange = (value: string) => {\n\t\tsetUrl(value);\n\n\t\t// Очищаем ошибку при изменении URL\n\t\tif (error) {\n\t\t\tsetError(null);\n\t\t}\n\t};\n\n\tconst handleConfirm = (e: MouseEvent) => {\n\t\te.preventDefault();\n\n\t\tconst validation = validateUrl(url);\n\t\tif (!validation.isValid) {\n\t\t\tsetError(validation.error);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!ariaLabel) {\n\t\t\tsetError(\"добавьте описание для ссылки\");\n\t\t\treturn;\n\t\t}\n\n\t\t// Добавляем протокол, если его нет\n\t\tconst finalUrl = url.startsWith(\"http\") ? url : `https://${url}`;\n\t\tonConfirm(finalUrl, \"\", \"\", ariaLabel, showQrCode);\n\t\thandleClose();\n\t};\n\n\tconst handleClose = () => {\n\t\tsetUrl(\"\");\n\t\tsetAriaLabel(\"\");\n\t\tsetError(null);\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<Modal isOpen={true} onClose={handleClose} title=\"Ссылка на внешний url\" size=\"md\">\n\t\t\t<ModalContent>\n\t\t\t\t<GridContainer gap=\"md\">\n\t\t\t\t\t<Input label=\"Полный URL адрес\" value={url} onChange={handleUrlChange} placeholder=\"https://somesite.ru\" />\n\n\t\t\t\t\t{error && (\n\t\t\t\t\t\t<div className=\"textColorDanger\">\n\t\t\t\t\t\t\t<strong>Ошибка ввода:</strong> <span className=\"fontItalic\">{error}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel=\"Текст для экранных читалок\"\n\t\t\t\t\t\tvalue={ariaLabel}\n\t\t\t\t\t\tonChange={setAriaLabel}\n\t\t\t\t\t\tplaceholder=\"Ссылка на официальный сайт городской думмы\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<CheckBox title=\"Показать кнопку для генерации QR кода ссылки\" value={showQrCode} onChange={setShowQrCode} />\n\t\t\t\t</GridContainer>\n\t\t\t</ModalContent>\n\t\t\t<ModalFooter>\n\t\t\t\t<Button appearance=\"outline\" tone=\"error\" onClick={handleClose}>\n\t\t\t\t\tОтмена\n\t\t\t\t</Button>\n\t\t\t\t<Button appearance=\"outline\" tone=\"success\" onClick={handleConfirm} disabled={!url || !ariaLabel}>\n\t\t\t\t\tПодтвердить\n\t\t\t\t</Button>\n\t\t\t</ModalFooter>\n\t\t</Modal>\n\t);\n}\n","import { type MouseEvent, useState } from \"react\";\n\nimport { formatPhone } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { isSafe } from \"@ryuzaki13/react-foundation-lib/validators\";\n\nimport { Button } from \"../button\";\nimport { GridContainer } from \"../grid\";\nimport { Input } from \"../input\";\nimport { Modal, ModalContent, ModalFooter } from \"../modal\";\n\nimport { LinkType } from \"./linkTypes\";\n\ninterface PhoneDialogProps {\n\tonClose: () => void;\n\tonConfirm: (url: string, text: string, add: string, ariaLabel: string, showQrCode: boolean) => void;\n\tinitialState?: LinkType;\n}\n\n/**\n * Диалог вставки или редактирования телефонной ссылки в текстовом редакторе.\n */\nexport function PhoneDialog({ onClose, onConfirm, initialState }: PhoneDialogProps) {\n\tconst state = (() => {\n\t\tif (isSafe(initialState) && typeof initialState === \"string\") {\n\t\t\treturn { text: \"\", add: \"\", ariaLabel: \"\", url: initialState };\n\t\t}\n\n\t\treturn initialState;\n\t})();\n\tconst initialPhone = isSafe(state) ? (state.url ?? \"\").replace(/\\D/g, \"\").slice(0, 11).replace(/^7/, \"\") : \"\";\n\tconst initialPhoneAdd = isSafe(state)\n\t\t? state.add\n\t\t\t? (state.add ?? \"\").replace(/\\D/g, \"\")\n\t\t\t: (state.url ?? \"\").replace(/\\D/g, \"\").slice(11)\n\t\t: \"\";\n\tconst [phone, setPhone] = useState(initialPhone);\n\tconst [phoneAdd, setPhoneAdd] = useState(initialPhoneAdd);\n\tconst [ariaLabel, setAriaLabel] = useState(() => (isSafe(state) ? (state.ariaLabel ?? \"\") : \"\"));\n\tconst [error, setError] = useState<string | null>(null);\n\n\tconst handlePhoneChange = (value: string) => {\n\t\tvalue = value.replace(/\\D/g, \"\");\n\t\tif (value.length <= 10) {\n\t\t\tsetPhone(value);\n\t\t\tsetError(null);\n\t\t} else {\n\t\t\tsetError(\"нельзя ввести более 10 цифр\");\n\t\t}\n\t};\n\n\tconst validatePhone = (phone: string): boolean => {\n\t\tif (phone.length !== 10) {\n\t\t\tsetError(\"номер телефона должен содержать 10 цифр\");\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\n\tconst handleConfirm = (e: MouseEvent) => {\n\t\te.preventDefault();\n\n\t\tif (!validatePhone(phone)) return;\n\t\tif (!ariaLabel) {\n\t\t\tsetError(\"добавьте описание для телефона\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst formattedPhone = formatPhone(phone);\n\t\tconst fullPhone = `+7${phone}`;\n\t\tonConfirm(`tel:${fullPhone}`, phoneAdd ? `${formattedPhone} доб. ${phoneAdd}` : formattedPhone, phoneAdd, ariaLabel, false);\n\t\thandleClose();\n\t};\n\n\tconst handleClose = () => {\n\t\tsetPhone(\"\");\n\t\tsetAriaLabel(\"\");\n\t\tsetError(null);\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<Modal isOpen={true} onClose={handleClose} title=\"Ссылка на телефон\" size=\"md\">\n\t\t\t<ModalContent>\n\t\t\t\t<GridContainer gap=\"md\">\n\t\t\t\t\t<div className={cn(\"flex\", \"alignItemsEnd\", \"gapSm\")}>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tlabel=\"Номер телефона без 7-ки\"\n\t\t\t\t\t\t\tdescription=\"Вводится только номер (10) цифр без каких-либо дополнительных символов. Ссылка будет привязана к текущему выделенному фрагменту текста. Поэтому текст самой ссылки можно оформить грамотно, например: +7 (3522) 12-34-56 доб. 100\"\n\t\t\t\t\t\t\tvalue={phone}\n\t\t\t\t\t\t\tonChange={handlePhoneChange}\n\t\t\t\t\t\t\tplaceholder=\"3522123456\"\n\t\t\t\t\t\t\tclassName=\"flex1\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Input label=\"Добавочный номер\" value={phoneAdd} onChange={setPhoneAdd} placeholder=\"100\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t{error && (\n\t\t\t\t\t\t<div className=\"textColorDanger\">\n\t\t\t\t\t\t\t<strong>Ошибка ввода:</strong> <span className=\"fontItalic\">{error}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel=\"Текст для экранных читалок\"\n\t\t\t\t\t\tdescription=\"Обязательное поле для организации доступности ссылки для лиц с ОВЗ, использующих скринридеры\"\n\t\t\t\t\t\tvalue={ariaLabel}\n\t\t\t\t\t\tonChange={setAriaLabel}\n\t\t\t\t\t\tplaceholder=\"Контактный телефон директора\"\n\t\t\t\t\t/>\n\t\t\t\t</GridContainer>\n\t\t\t</ModalContent>\n\t\t\t<ModalFooter>\n\t\t\t\t<Button appearance=\"solid\" tone=\"error\" onClick={handleClose}>\n\t\t\t\t\tОтмена\n\t\t\t\t</Button>\n\t\t\t\t<Button appearance=\"solid\" tone=\"success\" onClick={handleConfirm} disabled={!phone || !ariaLabel}>\n\t\t\t\t\tПодтвердить\n\t\t\t\t</Button>\n\t\t\t</ModalFooter>\n\t\t</Modal>\n\t);\n}\n","import { type ReactNode, useState } from \"react\";\n\nimport { Button } from \"../button\";\nimport { GridContainer } from \"../grid\";\nimport { Input } from \"../input\";\nimport { Modal, ModalContent, ModalFooter } from \"../modal\";\n\nexport interface AttributeField {\n\tname: string;\n\tlabel: string;\n\tdescription?: string;\n\tplaceholder?: string;\n\trequired?: boolean;\n\tvalidate?: (value: string) => string | null;\n}\n\nexport interface SemanticTagConfig {\n\ttagName: string;\n\ttitle: string;\n\tdescription: string;\n\texample: ReactNode;\n\tfields: AttributeField[];\n}\n\ninterface SemanticDialogProps {\n\tonClose: () => void;\n\tonConfirm: (tagName: string, text: string, attributes: Record<string, string>) => void;\n\tconfig: SemanticTagConfig;\n\tinitialState?: Record<string, string>;\n\tinitialText?: string;\n}\n\n/**\n * Диалог настройки семантического тега и его атрибутов в текстовом редакторе.\n */\nexport function SemanticDialog({ onClose, onConfirm, config, initialText = \"\", initialState = {} }: SemanticDialogProps) {\n\tconst [text, setText] = useState(initialText);\n\tconst [values, setValues] = useState<Record<string, string>>(() =>\n\t\tconfig.fields.reduce<Record<string, string>>((result, field) => {\n\t\t\tresult[field.name] = initialState[field.name] ?? \"\";\n\t\t\treturn result;\n\t\t}, {})\n\t);\n\tconst [errors, setErrors] = useState<Record<string, string | null>>({});\n\n\tconst handleChange = (name: string, value: string) => {\n\t\tsetValues((prev) => ({ ...prev, [name]: value }));\n\t\tsetErrors((prev) => ({ ...prev, [name]: null }));\n\t};\n\n\tconst validate = (): boolean => {\n\t\tconst newErrors: Record<string, string | null> = {};\n\t\tlet isValid = true;\n\n\t\tif (!text.trim()) {\n\t\t\tnewErrors[\"text\"] = \"Обязательное поле\";\n\t\t\tisValid = false;\n\t\t}\n\n\t\tfor (const field of config.fields) {\n\t\t\tconst value = values[field.name]?.trim();\n\t\t\tif (field.required && !value) {\n\t\t\t\tnewErrors[field.name] = \"Обязательное поле\";\n\t\t\t\tisValid = false;\n\t\t\t} else if (field.validate) {\n\t\t\t\tconst err = field.validate(value);\n\t\t\t\tif (err) {\n\t\t\t\t\tnewErrors[field.name] = err;\n\t\t\t\t\tisValid = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsetErrors(newErrors);\n\t\treturn isValid;\n\t};\n\n\tconst handleConfirm = () => {\n\t\tif (!validate()) return;\n\t\t// Поля текущего диалога не должны стирать другие атрибуты существующего узла.\n\t\tonConfirm(config.tagName, text.trim(), { ...initialState, ...values });\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<Modal isOpen={true} onClose={onClose} title={`Вставка <${config.tagName}>`} size=\"md\">\n\t\t\t<ModalContent>\n\t\t\t\t<GridContainer gap=\"md\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{config.description}.<br />\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<strong>Пример:</strong> {config.example}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={config.title}\n\t\t\t\t\t\tdescription={`Данный текст будет вставлен в редактор и обёрнуть в специальный семантический тег ${config.tagName}`}\n\t\t\t\t\t\tvalue={text}\n\t\t\t\t\t\tonChange={setText}\n\t\t\t\t\t\terror={errors[\"text\"] ?? undefined}\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t\t{config.fields.map((field) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tkey={field.name}\n\t\t\t\t\t\t\t\tlabel={field.label}\n\t\t\t\t\t\t\t\tdescription={field.description}\n\t\t\t\t\t\t\t\tplaceholder={field.placeholder}\n\t\t\t\t\t\t\t\tvalue={values[field.name] ?? \"\"}\n\t\t\t\t\t\t\t\tonChange={(value) => handleChange(field.name, value)}\n\t\t\t\t\t\t\t\terror={errors[field.name] ?? undefined}\n\t\t\t\t\t\t\t\trequired={field.required}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</GridContainer>\n\t\t\t</ModalContent>\n\t\t\t<ModalFooter>\n\t\t\t\t<Button appearance=\"solid\" tone=\"error\" onClick={onClose}>\n\t\t\t\t\tОтмена\n\t\t\t\t</Button>\n\t\t\t\t<Button appearance=\"solid\" tone=\"success\" onClick={handleConfirm}>\n\t\t\t\t\tПодтвердить\n\t\t\t\t</Button>\n\t\t\t</ModalFooter>\n\t\t</Modal>\n\t);\n}\n","import { parseDate } from \"@ryuzaki13/react-foundation-lib/formatters\";\n\n/** Проверка календарных значений диалогов поверх строгого foundation parser. */\nexport function isSemanticDateTime(value: string): boolean {\n\tconst parts = value.split(\"/\");\n\treturn (\n\t\tparts.length <= 2 &&\n\t\tparts.every((part) => {\n\t\t\tif (/^\\d{2}:\\d{2}(?::\\d{2})?$/.test(part)) return parseDate(`2000-01-01T${part}`) !== null;\n\t\t\treturn (\n\t\t\t\t/^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)?)?$/.test(part) &&\n\t\t\t\tparseDate(part) !== null\n\t\t\t);\n\t\t})\n\t);\n}\n","import { isSemanticDateTime } from \"./lib/semantic/isSemanticDateTime\";\nimport { TagTypes } from \"./toolbar\";\n\nimport type { SemanticTagConfig } from \"./SemanticDialog\";\n\nexport const SemanticTagConfigs: Record<TagTypes, SemanticTagConfig> = {\n\t[TagTypes.abbr]: {\n\t\ttagName: \"abbr\",\n\t\ttitle: \"Аббревиатура\",\n\t\tdescription: \"Обозначает аббревиатуры и сокращения, при наведении покажет расшифровку\",\n\t\texample: (\n\t\t\t<>\n\t\t\t\t<abbr title=\"Национальное управление по аэронавтике и исследованию космического пространства\">НАСА</abbr>\n\t\t\t\t<div className=\"marginTopMd\">\n\t\t\t\t\t<code>{`<abbr title=\"Национальное управление по аэронавтике и исследованию космического пространства\">НАСА</abbr>`}</code>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t),\n\t\tfields: [\n\t\t\t{\n\t\t\t\tname: \"title\",\n\t\t\t\tlabel: \"Расшифровка\",\n\t\t\t\tdescription: \"Появится как подсказка и будет прочитана скринридером\",\n\t\t\t\tplaceholder: \"например: HyperText Markup Language\",\n\t\t\t\trequired: true\n\t\t\t}\n\t\t]\n\t},\n\t[TagTypes.lang]: {\n\t\ttagName: \"span\",\n\t\ttitle: \"Текст на другом языке\",\n\t\tdescription:\n\t\t\t\"Указывает язык фрагмента текста, если он отличается от основного языка страницы, скринридер прочитает это слово с французским произношением\",\n\t\texample: (\n\t\t\t<>\n\t\t\t\t<span lang=\"fr\">Bonjour!</span> — сказал турист.\n\t\t\t\t<div className=\"marginTopMd\">\n\t\t\t\t\t<code>{`<span lang=\"fr\">Bonjour!</span> — сказал турист.`}</code>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t),\n\t\tfields: [\n\t\t\t{\n\t\t\t\tname: \"lang\",\n\t\t\t\tlabel: \"Код языка\",\n\t\t\t\tplaceholder: \"en, fr, ru\",\n\t\t\t\trequired: true,\n\t\t\t\tvalidate: (val) => (!/^[a-z]{2,3}(-[A-Z]{2})?$/.test(val) ? \"Неверный код языка (например, en или en-US)\" : null)\n\t\t\t}\n\t\t]\n\t},\n\t[TagTypes.time]: {\n\t\ttagName: \"time\",\n\t\ttitle: \"Дата/время\",\n\t\tdescription: \"\",\n\t\texample: \"\",\n\t\tfields: [\n\t\t\t{\n\t\t\t\tname: \"datetime\",\n\t\t\t\tlabel: \"Дата/время (machine-readable)\",\n\t\t\t\tdescription: \"Формат ISO 8601: 2025-05-18, 14:30, 2025-05-18T14:30\",\n\t\t\t\tplaceholder: \"например: 2025-05-18T14:30\",\n\t\t\t\trequired: true\n\t\t\t}\n\t\t]\n\t},\n\t[TagTypes.cite]: {\n\t\ttagName: \"cite\",\n\t\ttitle: \"Цитата источника\",\n\t\tdescription: \"Обозначает название книги, статьи, фильма или другого произведения, на которое вы ссылаетесь\",\n\t\texample: (\n\t\t\t<>\n\t\t\t\tПо словам Эйнштейна: <cite>«Воображение важнее знания»</cite>.\n\t\t\t\t<div className=\"marginTopMd\">\n\t\t\t\t\t<code>{`По словам Эйнштейна: <cite>«Воображение важнее знания»</cite>.`}</code>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t),\n\t\tfields: [\n\t\t\t{\n\t\t\t\tname: \"title\",\n\t\t\t\tlabel: \"Название источника\",\n\t\t\t\tdescription: \"Будет отображаться как подсказка\",\n\t\t\t\tplaceholder: \"например: Википедия\",\n\t\t\t\trequired: false\n\t\t\t}\n\t\t]\n\t},\n\t// [TagTypes.address]: {\n\t// \ttagName: \"address\",\n\t// \ttitle: \"Указывает контакты автора статьи/страницы (не для почтовых адресов компаний!)\",\n\t// \tdescription: \"\",\n\t// \texample: ``,\n\t// \tfields: [\n\t// \t\t{\n\t// \t\t\tname: \"aria-label\",\n\t// \t\t\tlabel: \"Описание (для доступности)\",\n\t// \t\t\tdescription: \"Содержимое будет прочитано скринридером, если адрес не очевиден\",\n\t// \t\t\tplaceholder: \"например: Контактный адрес компании\",\n\t// \t\t\trequired: false\n\t// \t\t}\n\t// \t]\n\t// },\n\t[TagTypes.del]: {\n\t\ttagName: \"del\",\n\t\ttitle: \"Изменения в тексте\",\n\t\tdescription: \"Удаленный фрагмент\",\n\t\texample: (\n\t\t\t<>\n\t\t\t\tПроект сдачи: <del>1 июня</del> <ins>15 июня</ins>\n\t\t\t\t<div className=\"marginTopMd\">\n\t\t\t\t\t<code>{`Проект сдачи: <del>1 июня</del> <ins>15 июня</ins>`}</code>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t),\n\t\tfields: [\n\t\t\t{\n\t\t\t\tname: \"datetime\",\n\t\t\t\tlabel: \"Когда был удалён\",\n\t\t\t\tvalidate: (value) => (!value || isSemanticDateTime(value) ? null : \"Укажите существующую дату и время в формате ISO 8601\"),\n\t\t\t\tdescription: \"Формат ISO 8601: 2025-05-18T14:30\",\n\t\t\t\tplaceholder: \"например: 2025-05-18T14:30\",\n\t\t\t\trequired: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"cite\",\n\t\t\t\tlabel: \"Источник/обоснование\",\n\t\t\t\tdescription: \"Ссылка на объяснение причины\",\n\t\t\t\tplaceholder: \"например: https://example.com/edit-log\",\n\t\t\t\trequired: false\n\t\t\t}\n\t\t]\n\t},\n\t[TagTypes.ins]: {\n\t\ttagName: \"ins\",\n\t\ttitle: \"Изменения в тексте\",\n\t\tdescription: \"Новый добавленный текст\",\n\t\texample: (\n\t\t\t<>\n\t\t\t\tПроект сдачи: <del>1 июня</del> <ins>15 июня</ins>\n\t\t\t\t<div className=\"marginTopMd\">\n\t\t\t\t\t<code>{`Проект сдачи: <del>1 июня</del> <ins>15 июня</ins>`}</code>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t),\n\t\tfields: [\n\t\t\t{\n\t\t\t\tname: \"datetime\",\n\t\t\t\tlabel: \"Когда был добавлен\",\n\t\t\t\tvalidate: (value) => (!value || isSemanticDateTime(value) ? null : \"Укажите существующую дату и время в формате ISO 8601\"),\n\t\t\t\tdescription: \"Формат ISO 8601: 2025-05-18T14:30\",\n\t\t\t\tplaceholder: \"например: 2025-05-18T14:30\",\n\t\t\t\trequired: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"cite\",\n\t\t\t\tlabel: \"Источник/обоснование\",\n\t\t\t\tdescription: \"Ссылка на объяснение причины\",\n\t\t\t\tplaceholder: \"например: https://example.com/edit-log\",\n\t\t\t\trequired: false\n\t\t\t}\n\t\t]\n\t}\n};\n","import { useState } from \"react\";\n\nimport { Button } from \"../button\";\nimport { GridContainer } from \"../grid\";\nimport { Input } from \"../input\";\nimport { Modal, ModalContent, ModalFooter } from \"../modal\";\nimport { RadioGroup } from \"../radio-group\";\n\nimport { isSemanticDateTime } from \"./lib/semantic/isSemanticDateTime\";\nimport { type TimeMode, type TimeDialogInitialState } from \"./model/timeDialogState\";\n\ninterface TimeDialogProps {\n\tonClose: () => void;\n\tonConfirm: (tagName: string, text: string, attributes: Record<string, string>) => void;\n\tinitialState?: TimeDialogInitialState;\n}\n\n/**\n * Диалог настройки временного атрибута или значения в текстовом редакторе.\n */\nexport function TimeDialog({ onClose, onConfirm, initialState }: TimeDialogProps) {\n\tconst [mode, setMode] = useState<TimeMode | undefined>(() => initialState?.mode ?? \"date\");\n\tconst [from, setFrom] = useState(() => initialState?.from ?? \"\");\n\tconst [to, setTo] = useState(() => initialState?.to ?? \"\");\n\tconst [errors, setErrors] = useState<{ from?: string; to?: string }>({});\n\n\tconst validate = () => {\n\t\tconst newErrors: typeof errors = {};\n\t\t// const isValid = true;\n\n\t\tconst isDate = (v: string) => /^\\d{4}-\\d{2}-\\d{2}$/.test(v);\n\t\tconst isTime = (v: string) => /^\\d{2}:\\d{2}$/.test(v);\n\t\tconst isDateTime = (v: string) => /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$/.test(v);\n\n\t\tconst check = (label: string, value: string, type: \"date\" | \"time\" | \"datetime\") => {\n\t\t\tif (!value) return `${label} обязательно`;\n\t\t\tif (type === \"date\" && !isDate(value)) return \"Неверный формат даты (ГГГГ-ММ-ДД)\";\n\t\t\tif (type === \"time\" && !isTime(value)) return \"Неверный формат времени (ЧЧ:ММ)\";\n\t\t\tif (type === \"datetime\" && !isDateTime(value)) return \"Неверный формат даты и времени (ГГГГ-ММ-ДДTЧЧ:ММ)\";\n\t\t\tif (!isSemanticDateTime(value)) return \"Укажите существующую дату и корректное время\";\n\t\t\treturn undefined;\n\t\t};\n\n\t\tswitch (mode) {\n\t\t\tcase \"date\":\n\t\t\t\tnewErrors.from = check(\"Дата\", from, \"date\");\n\t\t\t\tbreak;\n\t\t\tcase \"time\":\n\t\t\t\tnewErrors.from = check(\"Время\", from, \"time\");\n\t\t\t\tbreak;\n\t\t\tcase \"datetime\":\n\t\t\t\tnewErrors.from = check(\"Дата и время\", from, \"datetime\");\n\t\t\t\tbreak;\n\t\t\tcase \"range-time\":\n\t\t\t\tnewErrors.from = check(\"Время начала\", from, \"time\");\n\t\t\t\tnewErrors.to = check(\"Время окончания\", to, \"time\");\n\t\t\t\tbreak;\n\t\t\tcase \"range-date\":\n\t\t\t\tnewErrors.from = check(\"Дата начала\", from, \"date\");\n\t\t\t\tnewErrors.to = check(\"Дата окончания\", to, \"date\");\n\t\t\t\tbreak;\n\t\t\tcase \"range-datetime\":\n\t\t\t\tnewErrors.from = check(\"Начало\", from, \"datetime\");\n\t\t\t\tnewErrors.to = check(\"Окончание\", to, \"datetime\");\n\t\t\t\tbreak;\n\t\t}\n\n\t\tsetErrors(newErrors);\n\t\treturn Object.values(newErrors).every((e) => !e);\n\t};\n\n\tconst handleConfirm = () => {\n\t\tif (!validate()) return;\n\n\t\t// Скрытая правая граница не должна попадать в одиночный режим.\n\t\tconst datetime = mode?.startsWith(\"range-\") ? `${from}/${to}` : from;\n\t\tonConfirm(\"time\", datetime, { datetime });\n\t\tonClose();\n\t};\n\n\tconst renderInputs = () => {\n\t\tswitch (mode) {\n\t\t\tcase \"date\":\n\t\t\tcase \"datetime\":\n\t\t\tcase \"time\":\n\t\t\t\treturn (\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel=\"Значение\"\n\t\t\t\t\t\tplaceholder={mode === \"time\" ? \"09:00\" : mode === \"date\" ? \"2025-05-18\" : \"2025-05-18T09:00\"}\n\t\t\t\t\t\tvalue={from}\n\t\t\t\t\t\tonChange={setFrom}\n\t\t\t\t\t\terror={errors.from}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"range-time\":\n\t\t\tcase \"range-date\":\n\t\t\tcase \"range-datetime\":\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tlabel=\"С\"\n\t\t\t\t\t\t\tplaceholder={mode.includes(\"time\") ? \"09:00\" : mode.includes(\"date\") ? \"2025-05-18\" : \"2025-05-18T09:00\"}\n\t\t\t\t\t\t\tvalue={from}\n\t\t\t\t\t\t\tonChange={setFrom}\n\t\t\t\t\t\t\terror={errors.from}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tlabel=\"По\"\n\t\t\t\t\t\t\tplaceholder={mode.includes(\"time\") ? \"17:00\" : mode.includes(\"date\") ? \"2025-05-22\" : \"2025-05-22T17:00\"}\n\t\t\t\t\t\t\tvalue={to}\n\t\t\t\t\t\t\tonChange={setTo}\n\t\t\t\t\t\t\terror={errors.to}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t}\n\t};\n\n\treturn (\n\t\t<Modal isOpen={true} onClose={onClose} title=\"Вставка <time>\" size=\"md\">\n\t\t\t<ModalContent>\n\t\t\t\t<GridContainer gap=\"md\">\n\t\t\t\t\t<RadioGroup label=\"Тип значения\" value={mode} onChange={setMode}>\n\t\t\t\t\t\t<RadioGroup.Option label=\"Дата\" value=\"date\" />\n\t\t\t\t\t\t<RadioGroup.Option label=\"Дата и время\" value=\"datetime\" />\n\t\t\t\t\t\t<RadioGroup.Option label=\"Время\" value=\"time\" />\n\t\t\t\t\t\t<RadioGroup.Option label=\"Диапазон дат\" value=\"range-date\" />\n\t\t\t\t\t\t<RadioGroup.Option label=\"Диапазон времени\" value=\"range-time\" />\n\t\t\t\t\t\t<RadioGroup.Option label=\"Диапазон даты и времени\" value=\"range-datetime\" />\n\t\t\t\t\t</RadioGroup>\n\n\t\t\t\t\t<GridContainer gap=\"md\">{renderInputs()}</GridContainer>\n\t\t\t\t</GridContainer>\n\t\t\t</ModalContent>\n\t\t\t<ModalFooter>\n\t\t\t\t<Button appearance=\"solid\" tone=\"error\" onClick={onClose}>\n\t\t\t\t\tОтмена\n\t\t\t\t</Button>\n\t\t\t\t<Button appearance=\"solid\" tone=\"success\" onClick={handleConfirm}>\n\t\t\t\t\tПодтвердить\n\t\t\t\t</Button>\n\t\t\t</ModalFooter>\n\t\t</Modal>\n\t);\n}\n","import { type ComponentType } from \"react\";\n\nimport { type LocalLinkDialogAdapterProps } from \"./editorModel\";\nimport { EmailDialog } from \"./EmailDialog\";\nimport { getTimeDialogInitialState } from \"./lib/semantic/getTimeDialogInitialState\";\nimport { LinkDialog } from \"./LinkDialog\";\nimport { type SemanticDialogState } from \"./model/semanticDialogState\";\nimport { type LinkType } from \"./model/textEditorTypes\";\nimport { PhoneDialog } from \"./PhoneDialog\";\nimport { SemanticDialog } from \"./SemanticDialog\";\nimport { SemanticTagConfigs } from \"./semanticTagConfigs\";\nimport { TimeDialog } from \"./TimeDialog\";\nimport { LinkTypes, TagTypes } from \"./toolbar\";\n\ninterface TextEditorDialogsProps {\n\tlinkTypeDialog: LinkTypes | null;\n\ttagTypeDialog: TagTypes | null;\n\tlocalLinkDialogComponent?: ComponentType<LocalLinkDialogAdapterProps>;\n\tonCloseLinkDialog: () => void;\n\tonCloseTagDialog: () => void;\n\tonAddLink: (url: string, text: string, add: string, ariaLabel: string, showQrCode: boolean) => void;\n\tonAddLocalLink: (url: string, caption: string) => void;\n\tonInsertSemanticTag: (tagName: string, text: string, attributes: Record<string, string>) => void;\n\tsemanticDialogState: SemanticDialogState;\n\tlinkDialogState: LinkType;\n}\n\n/**\n * Монтирует только активную dialog-session редактора. Граница монтирования создаёт\n * свежий draft из текущего selection state без синхронизирующих setState-effects.\n */\nexport function TextEditorDialogs({\n\tlinkTypeDialog,\n\ttagTypeDialog,\n\tlocalLinkDialogComponent,\n\tonCloseLinkDialog,\n\tonCloseTagDialog,\n\tonAddLink,\n\tonAddLocalLink,\n\tonInsertSemanticTag,\n\tsemanticDialogState,\n\tlinkDialogState\n}: TextEditorDialogsProps) {\n\tconst LocalLinkDialogComponent = localLinkDialogComponent;\n\n\treturn (\n\t\t<>\n\t\t\t{linkTypeDialog === LinkTypes.LOCAL_LINK && LocalLinkDialogComponent ? (\n\t\t\t\t<LocalLinkDialogComponent isOpen={true} onClose={onCloseLinkDialog} onConfirm={onAddLocalLink} />\n\t\t\t) : null}\n\n\t\t\t{linkTypeDialog === LinkTypes.LINK ? (\n\t\t\t\t<LinkDialog initialState={linkDialogState} onClose={onCloseLinkDialog} onConfirm={onAddLink} />\n\t\t\t) : null}\n\n\t\t\t{linkTypeDialog === LinkTypes.PHONE ? (\n\t\t\t\t<PhoneDialog initialState={linkDialogState} onClose={onCloseLinkDialog} onConfirm={onAddLink} />\n\t\t\t) : null}\n\n\t\t\t{linkTypeDialog === LinkTypes.EMAIL ? (\n\t\t\t\t<EmailDialog initialState={linkDialogState} onClose={onCloseLinkDialog} onConfirm={onAddLink} />\n\t\t\t) : null}\n\n\t\t\t{tagTypeDialog &&\n\t\t\t\t(tagTypeDialog !== TagTypes.time ? (\n\t\t\t\t\t<SemanticDialog\n\t\t\t\t\t\tonClose={onCloseTagDialog}\n\t\t\t\t\t\tonConfirm={onInsertSemanticTag}\n\t\t\t\t\t\tconfig={SemanticTagConfigs[tagTypeDialog]}\n\t\t\t\t\t\tinitialText={semanticDialogState.text}\n\t\t\t\t\t\tinitialState={semanticDialogState.attributes}\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<TimeDialog\n\t\t\t\t\t\tonClose={onCloseTagDialog}\n\t\t\t\t\t\tonConfirm={onInsertSemanticTag}\n\t\t\t\t\t\tinitialState={getTimeDialogInitialState(semanticDialogState.attributes.datetime)}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t</>\n\t);\n}\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { $generateHtmlFromNodes } from \"@lexical/html\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { ContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { HeadingNode, QuoteNode } from \"@lexical/rich-text\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { type LexicalEditor, type EditorState as LexicalEditorState } from \"lexical\";\n\nimport { TextEditorCoreProps, isLexicalTextRaw } from \"./editorModel\";\nimport { InitialHtmlPlugin, SelectionStatePlugin } from \"./lexical/plugins\";\nimport { createLexicalRaw } from \"./lib/serialization/createLexicalRaw\";\nimport { useTextEditorLexicalActions } from \"./model/hooks/useTextEditorLexicalActions\";\nimport { DEFAULT_TOOLBAR_STATE, type LexicalToolbarState } from \"./model/textEditorTypes\";\nimport { AccessibleLinkNode } from \"./nodes/AccessibleLinkNode\";\nimport { SemanticTagNode } from \"./nodes/SemanticTagNode\";\nimport TextEditorStyle from \"./TextEditor.module.scss\";\nimport \"./TextEditor.scss\";\nimport { TextEditorDialogs } from \"./TextEditorDialogs\";\nimport { type LinkTypes, type TagTypes, TextEditorToolbarLexical } from \"./toolbar\";\n\ntype TextEditorProps = TextEditorCoreProps;\n\n/**\n * Редактор форматированного текста на базе Lexical. Поддерживает тулбар, бизнес-адаптеры и сериализацию контента в единый формат данных.\n */\nexport function TextEditorLexicalClient({ initialData, onChange, toolbarComponents, businessAdapters }: TextEditorProps) {\n\tconst LocalLinkDialogComponent = businessAdapters?.LocalLinkDialogComponent;\n\tconst [isFocused, setIsFocused] = useState(false);\n\tconst [toolbarState, setToolbarState] = useState<LexicalToolbarState>(DEFAULT_TOOLBAR_STATE);\n\tconst [editor, setEditor] = useState<LexicalEditor | null>(null);\n\tconst [linkTypeDialog, setLinkTypeDialog] = useState<LinkTypes | null>(null);\n\tconst [tagTypeDialog, setTagTypeDialog] = useState<TagTypes | null>(null);\n\n\tconst lexicalRaw = isLexicalTextRaw(initialData?.raw) ? initialData.raw : null;\n\tconst hasLexicalRaw = !!lexicalRaw;\n\n\tconst initialEditorState = useMemo(() => {\n\t\tif (!lexicalRaw) return undefined;\n\t\treturn JSON.stringify(lexicalRaw.editorState);\n\t}, [lexicalRaw]);\n\n\tconst handleError = useCallback((error: Error) => {\n\t\tconsole.error(\"Ошибка редактора Lexical\", error);\n\t}, []);\n\n\tconst handleChange = useCallback(\n\t\t(editorState: LexicalEditorState, lexicalEditor: LexicalEditor) => {\n\t\t\tlet html = \"\";\n\t\t\teditorState.read(() => {\n\t\t\t\thtml = $generateHtmlFromNodes(lexicalEditor, null);\n\t\t\t});\n\n\t\t\tconst raw = createLexicalRaw(editorState);\n\t\t\tonChange({ raw, html });\n\t\t},\n\t\t[onChange]\n\t);\n\n\tconst openLinkDialog = useCallback((type: LinkTypes) => {\n\t\tsetLinkTypeDialog(type);\n\t}, []);\n\n\tconst openTagDialog = useCallback((type: TagTypes) => {\n\t\tsetTagTypeDialog(type);\n\t}, []);\n\n\tconst actions = useTextEditorLexicalActions({\n\t\teditor,\n\t\ttoolbarState,\n\t\thasLocalLinkDialog: !!LocalLinkDialogComponent,\n\t\tonOpenLinkDialog: openLinkDialog,\n\t\tonOpenTagDialog: openTagDialog\n\t});\n\n\tconst initialConfig = useMemo(\n\t\t() => ({\n\t\t\tnamespace: \"KtkTextEditorLexical\",\n\t\t\tonError: handleError,\n\t\t\ttheme: {\n\t\t\t\tparagraph: \"paragraph\",\n\t\t\t\ttext: {\n\t\t\t\t\tcode: \"lexicalTextCode\",\n\t\t\t\t\thighlight: \"lexicalTextHighlight\",\n\t\t\t\t\tunderline: \"lexicalTextUnderline\",\n\t\t\t\t\tstrikethrough: \"lexicalTextStrikethrough\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tnodes: [HeadingNode, QuoteNode, ListNode, ListItemNode, AccessibleLinkNode, SemanticTagNode],\n\t\t\teditorState: initialEditorState\n\t\t}),\n\t\t[handleError, initialEditorState]\n\t);\n\n\treturn (\n\t\t<div className={TextEditorStyle.textEditor}>\n\t\t\t<div\n\t\t\t\tclassName={cn(TextEditorStyle.textEditorContent, {\n\t\t\t\t\t[TextEditorStyle.focused]: isFocused\n\t\t\t\t})}>\n\t\t\t\t<LexicalComposer initialConfig={initialConfig}>\n\t\t\t\t\t<TextEditorToolbarLexical\n\t\t\t\t\t\ttoolbarComponents={toolbarComponents}\n\t\t\t\t\t\tstate={toolbarState}\n\t\t\t\t\t\tonBlockStyleToggle={actions.handleBlockStyleToggle}\n\t\t\t\t\t\tonInlineStyleToggle={actions.handleInlineStyleToggle}\n\t\t\t\t\t\tonAlignmentChange={actions.handleAlignmentChange}\n\t\t\t\t\t\tonLinkClick={actions.handleLinkClick}\n\t\t\t\t\t\tonTagClick={actions.handleTagClick}\n\t\t\t\t\t\tonUndo={actions.handleUndo}\n\t\t\t\t\t\tonRedo={actions.handleRedo}\n\t\t\t\t\t\tonCleanTag={actions.handleCleanSemanticTag}\n\t\t\t\t\t/>\n\t\t\t\t\t<RichTextPlugin\n\t\t\t\t\t\tcontentEditable={\n\t\t\t\t\t\t\t<ContentEditable\n\t\t\t\t\t\t\t\tclassName=\"lexicalEditorContentEditable\"\n\t\t\t\t\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\t\t\t\t\tonBlur={() => setIsFocused(false)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tplaceholder={<div className=\"lexicalEditorPlaceholder\">Введите текст...</div>}\n\t\t\t\t\t\tErrorBoundary={LexicalErrorBoundary}\n\t\t\t\t\t/>\n\t\t\t\t\t<HistoryPlugin />\n\t\t\t\t\t<ListPlugin />\n\t\t\t\t\t<SelectionStatePlugin onEditorReady={setEditor} onStateChange={setToolbarState} />\n\t\t\t\t\t<InitialHtmlPlugin initialHTML={initialData?.html} shouldSkip={hasLexicalRaw} />\n\t\t\t\t\t<OnChangePlugin onChange={handleChange} ignoreSelectionChange />\n\t\t\t\t</LexicalComposer>\n\t\t\t</div>\n\n\t\t\t<TextEditorDialogs\n\t\t\t\tlinkTypeDialog={linkTypeDialog}\n\t\t\t\ttagTypeDialog={tagTypeDialog}\n\t\t\t\tlocalLinkDialogComponent={LocalLinkDialogComponent}\n\t\t\t\tonCloseLinkDialog={() => setLinkTypeDialog(null)}\n\t\t\t\tonCloseTagDialog={() => setTagTypeDialog(null)}\n\t\t\t\tonAddLink={actions.handleAddLink}\n\t\t\t\tonAddLocalLink={actions.handleAddLocalLink}\n\t\t\t\tonInsertSemanticTag={actions.insertSemanticTagAtSelection}\n\t\t\t\tsemanticDialogState={actions.semanticDialogState}\n\t\t\t\tlinkDialogState={actions.linkDialogState}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./circle-alert-DXUFM6uc.js";import{n as i,t as a}from"./circle-check-0x9vHUU_.js";import{i as o,n as s,r as c,t as l}from"./info-HMSnCOw2.js";import{n as u,r as d,t as f}from"./sortable-BrLDYUp8.js";import{n as p}from"./iframe-BmGorvhi.js";import{a as m,i as h,n as g}from"./utils-tg3ibbzi.js";import{a as _,n as v,o as y}from"./array-D-_yMMUK-BBmW5vUr.js";import{h as ee,l as te,y as ne}from"./formatters-DVE1YVNQ-CJCkXjuI.js";import{i as b,n as x,r as re,t as ie}from"./NoData-CRi9NzcI.js";import{n as S,t as ae}from"./GridContainer-C5r-VTTG.js";import{c as C,m as w,n as oe,o as T,p as se,r as E}from"./hooks-DM8_3IU2.js";import{i as D,r as ce}from"./useTable-CK68Q4S4.js";import{n as le,t as ue}from"./Scrollable-Cc641kuG.js";import{n as O,t as de}from"./ContextMenu-BC5OXqVj.js";import{C as k,S as A,b as j,c as M,f as fe,l as pe,m as N,p as me,u as he,v as P,w as ge,x as _e,y as ve}from"./odata-DLogt0PY.js";import{At as F,Mt as I}from"./tableFeatures-Dx3U-F9E.js";var L,R,ye,z,be,xe,B,V;function Se(){return(Se=e((()=>{L=`UMTbLD`,R=`cz57Fx`,ye=`oPzAxu`,z=`MBu26r`,be=`_03z-1l`,xe=`_0RqsqJ`,B=`mXkUoM`,V={stateWrapper:L,status:R,information:ye,success:z,warning:be,error:xe,state:B}})))()}function Ce({state:e}){switch(e){case`error`:return(0,H.jsx)(we,{});case`warning`:return(0,H.jsx)(Te,{});case`success`:return(0,H.jsx)(Ee,{});case`information`:return(0,H.jsx)(De,{});default:return null}}function we(){return(0,H.jsx)(c,{className:m(V.state,V.error)})}function Te(){return(0,H.jsx)(r,{className:m(V.state,V.warning)})}function Ee(){return(0,H.jsx)(a,{className:m(V.state,V.success)})}function De(){return(0,H.jsx)(l,{className:m(V.state,V.information)})}var H;function Oe(){return(Oe=e((()=>{h(),n(),i(),o(),s(),Se(),H=p(),Ce.__docgenInfo={description:``,methods:[],displayName:`RenderStateIcon`,props:{state:{required:!1,tsType:{name:`State`},description:``}}},we.__docgenInfo={description:``,methods:[],displayName:`ErrorIcon`},Te.__docgenInfo={description:``,methods:[],displayName:`WarningIcon`},Ee.__docgenInfo={description:``,methods:[],displayName:`SuccessIcon`},De.__docgenInfo={description:``,methods:[],displayName:`InformationIcon`}})))()}var ke,Ae;function je(){return(je=e((()=>{ke=`YJUVjb`,Ae={resizeHandle:ke}})))()}function Me(e,t){let n=e.closest(`th`)?.getBoundingClientRect().width;return k(typeof n==`number`&&Number.isFinite(n)?n:t,t)}function Ne({columnId:e,className:t,minWidth:n,keyboardStep:r=Fe,ariaLabel:i=`Изменить ширину колонки`,getStartWidth:a,onResize:o,onResizeEnd:s,onReset:c}){let l=n??60,u=(0,U.useRef)(0),d=(0,U.useRef)(0),f=(0,U.useRef)(0),p=(0,U.useRef)(!1),h=(0,U.useRef)(!1),g=t=>{let n=a?.(e,t)??Me(t,l);return k(n,l)},_=e=>{(e.button===0||e.pointerType!==`mouse`)&&(p.current=!0,h.current=!1,u.current=e.clientX,d.current=g(e.currentTarget),f.current=d.current,e.currentTarget.setPointerCapture(e.pointerId),e.preventDefault(),e.stopPropagation())},v=t=>{if(!p.current)return;let n=k(d.current+t.clientX-u.current,l);f.current=n,h.current=!0,o(e,n),t.preventDefault(),t.stopPropagation()},y=t=>{if(p.current){p.current=!1,h.current&&s?.(e,f.current);try{t.currentTarget.releasePointerCapture(t.pointerId)}catch{}t.preventDefault(),t.stopPropagation()}};return(0,Pe.jsx)(`div`,{role:`separator`,"aria-label":i,"aria-orientation":`vertical`,tabIndex:0,onPointerDown:_,onPointerMove:v,onPointerUp:y,onPointerCancel:y,onKeyDown:t=>{if(t.key!==`ArrowLeft`&&t.key!==`ArrowRight`&&t.key!==`Home`)return;if(t.preventDefault(),t.stopPropagation(),t.key===`Home`){c?.(e);return}let n=t.key===`ArrowRight`?1:-1,i=g(t.currentTarget),a=k(i+n*r,l);o(e,a),s?.(e,a)},onDoubleClick:t=>{t.preventDefault(),t.stopPropagation(),c?.(e)},className:m(Ae.resizeHandle,t)})}var U,Pe,Fe;function Ie(){return(Ie=e((()=>{U=t(),j(),h(),je(),Pe=p(),Fe=8,Ne.__docgenInfo={description:``,methods:[],displayName:`TableColumnResizeHandle`,props:{columnId:{required:!0,tsType:{name:`string`},description:``},className:{required:!1,tsType:{name:`string`},description:``},minWidth:{required:!1,tsType:{name:`number`},description:``},keyboardStep:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`8`,computed:!1}},ariaLabel:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Изменить ширину колонки"`,computed:!1}},getStartWidth:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(columnId: string, element: HTMLElement) => number`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`HTMLElement`},name:`element`}],return:{name:`number`}}},description:``},onResize:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(columnId: string, width: number) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`number`},name:`width`}],return:{name:`void`}}},description:``},onResizeEnd:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(columnId: string, width: number) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`number`},name:`width`}],return:{name:`void`}}},description:``},onReset:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(columnId: string) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`}],return:{name:`void`}}},description:``}}}})))()}function Le(e,t){return typeof e==`function`?e(t):e}function Re({columnId:e,children:t,dragDisabled:n=!1,draggingClassName:r,resizeHandle:i,className:a,style:o,...s}){let{attributes:c,listeners:l,setActivatorNodeRef:u,setNodeRef:d,transform:f,isDragging:p,rect:h}=C({id:e,disabled:n}),g=p?h.current?.width:void 0,_={transform:se.Translate.toString(f),zIndex:p?`calc(var(--z-header) + 1)`:void 0,...g?{width:g,minWidth:g}:{},...o},v={attributes:c,listeners:l,setActivatorElement:u,disabled:n,isDragging:p};return(0,ze.jsxs)(`th`,{...s,ref:d,className:m(a,p&&r),style:_,children:[Le(t,v),i?(0,ze.jsx)(Ne,{...i}):null]})}var ze;function Be(){return(Be=e((()=>{T(),w(),h(),Ie(),ze=p(),Re.__docgenInfo={description:``,methods:[],displayName:`TableHeaderInteractionCell`,props:{columnId:{required:!0,tsType:{name:`UniqueIdentifier`},description:``},children:{required:!0,tsType:{name:`union`,raw:`ReactNode | ((dragState: TableHeaderCellDragState) => ReactNode)`,elements:[{name:`ReactNode`},{name:`unknown`}]},description:``},dragDisabled:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},draggingClassName:{required:!1,tsType:{name:`string`},description:``},resizeHandle:{required:!1,tsType:{name:`signature`,type:`object`,raw:`{
|
|
2
|
-
columnId: string;
|
|
3
|
-
className?: string;
|
|
4
|
-
minWidth?: number;
|
|
5
|
-
keyboardStep?: number;
|
|
6
|
-
ariaLabel?: string;
|
|
7
|
-
getStartWidth?: (columnId: string, element: HTMLElement) => number;
|
|
8
|
-
onResize: (columnId: string, width: number) => void;
|
|
9
|
-
onResizeEnd?: (columnId: string, width: number) => void;
|
|
10
|
-
onReset?: (columnId: string) => void;
|
|
11
|
-
}`,signature:{properties:[{key:`columnId`,value:{name:`string`,required:!0}},{key:`className`,value:{name:`string`,required:!1}},{key:`minWidth`,value:{name:`number`,required:!1}},{key:`keyboardStep`,value:{name:`number`,required:!1}},{key:`ariaLabel`,value:{name:`string`,required:!1}},{key:`getStartWidth`,value:{name:`signature`,type:`function`,raw:`(columnId: string, element: HTMLElement) => number`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`HTMLElement`},name:`element`}],return:{name:`number`}},required:!1}},{key:`onResize`,value:{name:`signature`,type:`function`,raw:`(columnId: string, width: number) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`number`},name:`width`}],return:{name:`void`}},required:!0}},{key:`onResizeEnd`,value:{name:`signature`,type:`function`,raw:`(columnId: string, width: number) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`number`},name:`width`}],return:{name:`void`}},required:!1}},{key:`onReset`,value:{name:`signature`,type:`function`,raw:`(columnId: string) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`}],return:{name:`void`}},required:!1}}]}},description:``}}}})))()}function Ve(e){return{start:Array.from(new Set((e?.start??[]).filter(e=>typeof e==`string`&&e.trim().length>0))),end:[]}}function He(e,t){let n=t?.[e.id];if(typeof n==`number`&&Number.isFinite(n)&&n>0)return`${Math.floor(n)}px`;let r=fe(e.columnDef)?.width??4;return typeof r==`number`&&(r=Math.max(r,4)),ve(r)}function Ue(e,t){let n=e.getAllLeafColumns().filter(e=>e.getIsVisible()),r=new Map(n.map(e=>[e.id,e])),i=n.map(e=>e.id),a=v(t.columnPinning.start,i),o=v(t.columnPinning.end,i),s=new Set([...a,...o]),c=[];for(let e of n)s.has(e.id)||c.push(e.id);let l=P({ids:c,order:t.columnOrder});return y([...a,...l,...o],r)}function We(e,t){let n=Ue(e,t),r=new Map(n.map(e=>[e.id,e]));return A({ids:n.map(e=>e.id),getWidth:e=>{let n=r.get(e);return n?He(n,t.columnSizing):`0px`}}).flatMap(e=>{let t=r.get(e.id);return t?[{...e,column:t}]:[]})}function Ge(e,t){let n={},r=[];for(let i of Ue(e,t))i.getIsPinned()===`start`&&(n[i.id]=Ke(r),r.push(He(i,t.columnSizing)));return n}function Ke(e){return e.length===0?`0px`:e.length===1?e[0]:`calc(${e.join(` + `)})`}function W(){return(W=e((()=>{_(),j()})))()}function qe(e){if(typeof e.id==`string`&&e.id.trim())return e.id;if(`accessorKey`in e&&typeof e.accessorKey==`string`&&e.accessorKey.trim())return e.accessorKey}function Je(e){return`cell`in e&&e.cell!=null}function Ye(e,t){for(let n of e){if(`columns`in n&&Array.isArray(n.columns)&&n.columns.length>0){Ye(n.columns,t);continue}t(n)}}function Xe(e){let t={},n=new Set;return Ye(e,e=>{let r=qe(e);if(!r)return;Je(e)&&n.add(r);let i=M(e);i&&(t[r]={...i,id:i.id??r,role:i.role??`dimension`,type:i.type??`string`})}),{runtimeByColumnId:te(t),customCellColumnIds:n}}function Ze(e){return!e.customCellColumnIds.has(e.columnId)&&!!e.runtimeByColumnId[e.columnId]}function Qe(){return(Qe=e((()=>{ee(),j()})))()}function $e(e){return e!=null&&e!==``}function et(e,t){return e.map(e=>({row:e,boundaryKey:t(e),cellByColumnId:new Map(e.getVisibleCells().map(e=>[e.column.id,e]))}))}function tt({rows:e,columns:t,resolveRowBoundaryKey:n=()=>`__all_rows__`,excludeColumnIds:r}){let i=t.filter(e=>!r?.has(e.id)&&fe(e.columnDef)?.mergeDuplicates===!0);if(e.length===0||i.length===0)return new Map;let a=et(e,n),o=new Map;for(let e of i){let t=-1,n,r,i=i=>{if(t!==-1){if(i-t<=1){t=-1,n=void 0,r=void 0;return}for(let n=t;n<i;n+=1){let r=a[n]?.cellByColumnId.get(e.id)?.id;r&&o.set(r,{hideContent:n>t,mergeWithNext:n<i-1})}t=-1,n=void 0,r=void 0}};for(let o=0;o<a.length;o+=1){let s=a[o],c=s?.cellByColumnId.get(e.id),l=c?.getValue();if(!c||!$e(l)){i(o);continue}if(t===-1){t=o,n=l,r=s?.boundaryKey;continue}(!Object.is(r,s?.boundaryKey)||!Object.is(n,l))&&(i(o),t=o,n=l,r=s?.boundaryKey)}i(a.length)}return o}function nt(){return(nt=e((()=>{j()})))()}function rt({columnOrder:e,defaultColumnOrder:t,onColumnOrderChange:n}){let[r,i]=(0,G.useState)(void 0),a=(0,G.useMemo)(()=>ge(e??r??t),[e,t,r]);return{columnOrder:a,onColumnOrderChange:(0,G.useCallback)(t=>{let r=ge(F(t,a));e===void 0&&i(r),n?.(r)},[e,n,a])}}var G;function it(){return(it=e((()=>{G=t(),j(),I()})))()}function at({columnPinning:e,defaultColumnPinning:t,onColumnPinningChange:n}){let[r,i]=(0,K.useState)(void 0),a=(0,K.useMemo)(()=>Ve(e??r??t),[e,t,r]);return{columnPinning:a,onColumnPinningChange:(0,K.useCallback)(t=>{let r={start:Ve(F(t,a)).start};e===void 0&&i(r),n?.(r)},[e,n,a])}}var K;function ot(){return(ot=e((()=>{K=t(),I(),W()})))()}function st({columnSizing:e,defaultColumnSizing:t,columnResizeMinWidth:n,onColumnSizingChange:r}){let[i,a]=(0,q.useState)(void 0),o=(0,q.useMemo)(()=>N(e??i??t,n),[n,e,t,i]);return{columnSizing:o,onColumnSizingChange:(0,q.useCallback)(t=>{let i=N(F(t,o),n);e===void 0&&a(i),r?.(i)},[n,e,r,o])}}var q;function ct(){return(ct=e((()=>{q=t(),j(),I()})))()}function lt({columnVisibility:e,defaultColumnVisibility:t,onColumnVisibilityChange:n}){let[r,i]=(0,J.useState)(void 0),a=(0,J.useMemo)(()=>e??r??t??{},[e,t,r]);return{columnVisibility:a,onColumnVisibilityChange:(0,J.useCallback)(t=>{let r=F(t,a);e===void 0&&i(r),n?.(r)},[e,n,a])}}var J;function ut(){return(ut=e((()=>{J=t(),I()})))()}var dt,ft;function pt(){return(pt=e((()=>{w(),dt=e=>{let{transform:t}=e;return{...t,y:0}},ft=e=>{let{transform:t}=e;return{...t,x:0}}})))()}var mt,ht,gt,_t,vt,yt,bt,xt,St,Ct,wt,Tt,Et,Dt,Ot,kt,At,jt,Mt,Nt,Y;function Pt(){return(Pt=e((()=>{mt=`_0rNBMr`,ht=`gp-7Db`,gt=`Ck-sXP`,_t=`-F3gli`,vt=`V5tPM-`,yt=`_2VJbvj`,bt=`AD8NkG`,xt=`qqixKn`,St=`dVDRNv`,Ct=`klOoMz`,wt=`fJvFJA`,Tt=`_7D8xa9`,Et=`_3j87pS`,Dt=`uwojkJ`,Ot=`lLsmW6`,kt=`uYvZ5P`,At=`QIS3xA`,jt=`a580w0`,Mt=`UOhaMF`,Nt=`DtKAgs`,Y={root:mt,headerContextMenuTrigger:ht,table:gt,head:_t,pinnedStartBoundary:vt,headerRow:yt,headerCell:bt,headerCellContent:xt,headerCellDraggable:St,headerCellDragging:Ct,headerCellPinnedStart:wt,bodyRow:Tt,bodyRowInteractive:Et,bodyCell:Dt,bodyRowSelected:Ot,bodyCellPinnedStart:kt,bodyCellMergedWithNext:At,feedbackCell:jt,fetchingRow:Mt,noData:Nt}})))()}function Ft({header:e,isPinnedStart:t,insetInlineStart:n,isPinnedBoundary:r,isDragDisabled:i,enableColumnResizing:a,enableColumnReordering:o,columnResizeMinWidth:s,renderHeaderContent:c,onResizeColumn:l,onResetColumnWidth:u}){return(0,It.jsx)(Re,{columnId:e.column.id,colSpan:e.colSpan,dragDisabled:!o||i,draggingClassName:Y.headerCellDragging,className:m(Y.headerCell,t&&Y.headerCellPinnedStart,r&&Y.pinnedStartBoundary),style:{...t?{insetInlineStart:n}:{}},resizeHandle:a&&!e.isPlaceholder?{columnId:e.column.id,minWidth:s,onResize:l,onReset:u}:void 0,children:({listeners:t,setActivatorElement:n})=>(0,It.jsx)(`div`,{ref:o&&!i?n:void 0,className:m(Y.headerCellContent,o&&!i&&Y.headerCellDraggable),...o&&!i?t??{}:{},children:c(e)})})}var It;function Lt(){return(Lt=e((()=>{h(),Be(),Pt(),It=p(),Ft.__docgenInfo={description:``,methods:[],displayName:`BaseTableHeaderCell`,props:{header:{required:!0,tsType:{name:`FoundationTableHeader`,elements:[{name:`TData`}],raw:`FoundationTableHeader<TData>`},description:``},isPinnedStart:{required:!0,tsType:{name:`boolean`},description:``},insetInlineStart:{required:!1,tsType:{name:`string`},description:``},isPinnedBoundary:{required:!0,tsType:{name:`boolean`},description:``},isDragDisabled:{required:!0,tsType:{name:`boolean`},description:``},enableColumnResizing:{required:!0,tsType:{name:`boolean`},description:``},enableColumnReordering:{required:!0,tsType:{name:`boolean`},description:``},columnResizeMinWidth:{required:!0,tsType:{name:`union`,raw:`number | undefined`,elements:[{name:`number`},{name:`undefined`}]},description:``},renderHeaderContent:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(header: FoundationTableHeader<TData>) => ReactNode`,signature:{arguments:[{type:{name:`FoundationTableHeader`,elements:[{name:`TData`}],raw:`FoundationTableHeader<TData>`},name:`header`}],return:{name:`ReactNode`}}},description:``},onResizeColumn:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(columnId: string, width: number) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`},{type:{name:`number`},name:`width`}],return:{name:`void`}}},description:``},onResetColumnWidth:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(columnId: string) => void`,signature:{arguments:[{type:{name:`string`},name:`columnId`}],return:{name:`void`}}},description:``}}}})))()}function Rt(e,t){let n=e.getLeafHeaders().map(e=>t.get(e.column.id)).filter(e=>typeof e==`number`);return n.length?Math.min(...n):2**53-1}function zt(e,t){let n=e.getStartHeaderGroups(),r=e.getCenterHeaderGroups(),i=e.getEndHeaderGroups(),a=Math.max(n.length,r.length,i.length);return Array.from({length:a},(e,a)=>[...n[a]?.headers??[],...r[a]?.headers??[],...i[a]?.headers??[]].filter(e=>e.isPlaceholder?!0:e.getLeafHeaders().some(e=>t.has(e.column.id))).sort((e,n)=>Rt(e,t)-Rt(n,t)))}function Bt(e,t,n){let r=e.getLeafHeaders().map(e=>e.column.id);return r.length>0&&r.every(e=>e in t)?{isPinnedStart:!0,insetInlineStart:t[r[0]]??`0px`,isPinnedBoundary:!!(n&&r.includes(n))}:{isPinnedStart:!1,isPinnedBoundary:!1}}function Vt(e,t){let n=e.getAllLeafColumns().map(e=>e.id);return P({ids:n,order:t.columnOrder})}function Ht({table:e,columnState:t,title:n,isLoading:r,isFetching:i,className:a,minHeight:o=`15em`,tableClassName:s,selectionMode:c=`none`,scrollableRef:l,interactiveElementSelector:u,onActivateRow:p,isRowInteractive:h,getRowClassName:_,getCellClassName:v,getCellStyle:y,getCellLayout:ee,renderCellContent:te,renderHeaderContextMenu:ne,enableColumnResizing:b=!1,enableColumnReordering:x=!1,rowReordering:S,columnResizeMinWidth:C,afterTableContent:w}){let T=We(e,t),se=(0,X.useMemo)(()=>T.map(e=>e.column),[T]),E=(0,X.useMemo)(()=>T.map(e=>e.id),[T]),D=(0,X.useMemo)(()=>new Map(E.map((e,t)=>[e,t])),[E]),le=(0,X.useMemo)(()=>new Set(E),[E]),O=oe({activationDistance:8}),k=zt(e,D),A=Ge(e,t),j=se.filter(e=>e.getIsPinned()===`start`).at(-1)?.id,M=(0,X.useMemo)(()=>t.columnPinning.start??[],[t.columnPinning.start]),N=(0,X.useMemo)(()=>new Set(M),[M]),P=e.getRowModel(),ge=(0,X.useMemo)(()=>P.rows.map(e=>e.id),[P.rows]),ve=!!n,F=P.rows.length>0,I=(0,X.useCallback)(e=>[...e].sort((e,t)=>(D.get(e.column.id)??2**53-1)-(D.get(t.column.id)??2**53-1)),[D]),L=(0,X.useCallback)((t,n)=>{e.setColumnSizing(e=>he(e,t,n,C))},[C,e]),R=(0,X.useCallback)(t=>{e.setColumnSizing(e=>pe(e,t))},[e]),ye=(0,X.useCallback)(n=>{let r=d({event:n,items:E});if(!r)return;let i=Vt(e,t),a=me({order:i,headerIds:E,pinnedIds:M,activeId:String(r.activeId),overId:String(r.overId)});a&&e.setColumnOrder(a)},[t,M,e,E]),z=e=>{if(e.isPlaceholder)return null;let t=ce(e.column.columnDef.header,e.getContext()),n=ne?.(e);return n?(0,Z.jsxs)(de,{children:[(0,Z.jsx)(de.Trigger,{children:(0,Z.jsx)(`div`,{className:Y.headerContextMenuTrigger,tabIndex:0,children:t})}),(0,Z.jsx)(de.Content,{children:n})]}):t},be=(e,t)=>{!(h?.(t)??!!p)||!p||_e(e.target,u)||p(t)},xe=(e,t)=>{!(h?.(t)??!!p)||!p||_e(e.target,u)||g(e,()=>p(t))},B=e=>{let t=h?.(e)??!!p,n=I([...e.getStartVisibleCells(),...e.getCenterVisibleCells(),...e.getEndVisibleCells()]).map(t=>{let n=fe(t.column.columnDef),r=ce(t.column.columnDef.cell,t.getContext()),i={row:e,cell:t,defaultContent:r,columnMeta:n},a=ee?.(i),o=t.column.getIsPinned()===`start`,s=t.column.id===j,c={...n?.align?{textAlign:n.align}:{},...o?{insetInlineStart:A[t.column.id]??`0px`}:{},...y?.(i)??{}};return(0,Z.jsx)(`td`,{className:m(Y.bodyCell,o&&Y.bodyCellPinnedStart,s&&Y.pinnedStartBoundary,a?.mergeWithNext&&Y.bodyCellMergedWithNext,v?.(i)),style:c,children:a?.hideContent?null:te?te(i):r},t.id)}),r={className:m(Y.bodyRow,t&&Y.bodyRowInteractive,e.getIsSelected()&&Y.bodyRowSelected,_?.(e)),"aria-selected":c===`none`?void 0:e.getIsSelected(),tabIndex:t?0:void 0,onClick:t=>be(t,e),onKeyDown:t=>xe(t,e)};return S?(0,Z.jsx)(f.Item,{as:`tr`,id:e.id,disabled:S.disabled,...r,children:n},e.id):(0,Z.jsx)(`tr`,{...r,children:n},e.id)};return(0,Z.jsxs)(ae,{templateRows:ve?`auto 1fr`:`1fr`,className:m(`overflowHidden w100 h100`,Y.root,a),style:{minHeight:o},children:[ve&&(0,Z.jsx)(`h3`,{className:`marginBottomXs`,children:n}),(0,Z.jsxs)(`div`,{className:`surface0 overflowHidden relative w100 h100`,children:[(0,Z.jsx)(ue,{ref:l,className:`w100 h100`,children:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`table`,{className:m(Y.table,s),children:[(0,Z.jsx)(`colgroup`,{children:T.map(e=>(0,Z.jsx)(`col`,{style:e.width?{width:e.width}:void 0},e.id))}),(0,Z.jsx)(`thead`,{className:m(`stickyTop`,Y.head),children:x?(0,Z.jsx)(f.Root,{sensors:O,modifiers:[dt],onDragEnd:ye,children:(0,Z.jsx)(f.Container,{containerId:`base-table-header`,items:E,layout:`horizontal`,children:k.map((e,t)=>(0,Z.jsx)(`tr`,{className:Y.headerRow,children:e.map(e=>{let{isPinnedStart:t,insetInlineStart:n,isPinnedBoundary:r}=Bt(e,A,j),i=e.isPlaceholder||!le.has(e.column.id)||N.has(e.column.id);return(0,Z.jsx)(Ft,{header:e,isPinnedStart:t,insetInlineStart:n,isPinnedBoundary:r,isDragDisabled:i,enableColumnResizing:b,enableColumnReordering:x,columnResizeMinWidth:C,renderHeaderContent:z,onResizeColumn:L,onResetColumnWidth:R},e.id)})},`header-group-${t}`))})}):k.map((e,t)=>(0,Z.jsx)(`tr`,{className:Y.headerRow,children:e.map(e=>{let{isPinnedStart:t,insetInlineStart:n,isPinnedBoundary:r}=Bt(e,A,j);return(0,Z.jsx)(Ft,{header:e,isPinnedStart:t,insetInlineStart:n,isPinnedBoundary:r,isDragDisabled:!0,enableColumnResizing:b,enableColumnReordering:x,columnResizeMinWidth:C,renderHeaderContent:z,onResizeColumn:L,onResetColumnWidth:R},e.id)})},`header-group-${t}`))}),(0,Z.jsxs)(`tbody`,{children:[S?(0,Z.jsx)(f.Root,{sensors:O,modifiers:[ft],onDragEnd:S.onDragEnd,children:(0,Z.jsx)(f.Container,{containerId:S.containerId??`base-table-body`,items:ge,layout:`vertical`,children:P.rows.map(B)})}):P.rows.map(B),i&&F&&(0,Z.jsx)(`tr`,{className:Y.fetchingRow,children:(0,Z.jsx)(`td`,{colSpan:Math.max(se.length,1),className:Y.feedbackCell,children:(0,Z.jsx)(re,{})})})]})]}),w]})}),(0,Z.jsxs)(`div`,{className:`absolute inset0 border`,style:{pointerEvents:`none`,zIndex:20},children:[!r&&!i&&!F&&(0,Z.jsx)(ie,{className:Y.noData}),r&&!F&&(0,Z.jsx)(re,{className:`h100 w100`})]})]})]})}var X,Z;function Ut(){return(Ut=e((()=>{X=t(),pt(),E(),j(),h(),D(),O(),S(),b(),x(),le(),u(),W(),Pt(),Lt(),Z=p(),Ht.__docgenInfo={description:"Базовая таблица с общим UI-каркасом для Table и TreeTable.\n\n@NOTE: не для использования напрямую, это база для `Table` и `TreeTable`",methods:[],displayName:`BaseTable`,props:{table:{required:!0,tsType:{name:`FoundationTableInstance`,elements:[{name:`TData`}],raw:`FoundationTableInstance<TData>`},description:``},columnState:{required:!0,tsType:{name:`Pick`,elements:[{name:`FoundationTableState`},{name:`union`,raw:`"columnOrder" | "columnPinning" | "columnSizing" | "columnVisibility"`,elements:[{name:`literal`,value:`"columnOrder"`},{name:`literal`,value:`"columnPinning"`},{name:`literal`,value:`"columnSizing"`},{name:`literal`,value:`"columnVisibility"`}]}],raw:`Pick<FoundationTableState, "columnOrder" | "columnPinning" | "columnSizing" | "columnVisibility">`},description:``},title:{required:!1,tsType:{name:`string`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},isFetching:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`union`,raw:"`${number}em` | `${number}%`",elements:[{name:`literal`,value:"`${number}em`"},{name:`literal`,value:"`${number}%`"}]},description:``,defaultValue:{value:`"15em"`,computed:!1}},tableClassName:{required:!1,tsType:{name:`string`},description:``},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:``,defaultValue:{value:`"none"`,computed:!1}},scrollableRef:{required:!1,tsType:{name:`Ref`,elements:[{name:`HTMLDivElement`}],raw:`Ref<HTMLDivElement>`},description:``},interactiveElementSelector:{required:!1,tsType:{name:`string`},description:``},onActivateRow:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: FoundationTableRow<TData>) => void`,signature:{arguments:[{type:{name:`FoundationTableRow`,elements:[{name:`TData`}],raw:`FoundationTableRow<TData>`},name:`row`}],return:{name:`void`}}},description:``},isRowInteractive:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: FoundationTableRow<TData>) => boolean`,signature:{arguments:[{type:{name:`FoundationTableRow`,elements:[{name:`TData`}],raw:`FoundationTableRow<TData>`},name:`row`}],return:{name:`boolean`}}},description:``},getRowClassName:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: FoundationTableRow<TData>) => string | undefined`,signature:{arguments:[{type:{name:`FoundationTableRow`,elements:[{name:`TData`}],raw:`FoundationTableRow<TData>`},name:`row`}],return:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]}}},description:``},getCellClassName:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(args: BaseTableCellRenderArgs<TData>) => string | undefined`,signature:{arguments:[{type:{name:`BaseTableCellRenderArgs`,elements:[{name:`TData`}],raw:`BaseTableCellRenderArgs<TData>`},name:`args`}],return:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]}}},description:``},getCellStyle:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(args: BaseTableCellRenderArgs<TData>) => CSSProperties | undefined`,signature:{arguments:[{type:{name:`BaseTableCellRenderArgs`,elements:[{name:`TData`}],raw:`BaseTableCellRenderArgs<TData>`},name:`args`}],return:{name:`union`,raw:`CSSProperties | undefined`,elements:[{name:`CSSProperties`},{name:`undefined`}]}}},description:``},getCellLayout:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(args: BaseTableCellRenderArgs<TData>) => BaseTableCellLayout | undefined`,signature:{arguments:[{type:{name:`BaseTableCellRenderArgs`,elements:[{name:`TData`}],raw:`BaseTableCellRenderArgs<TData>`},name:`args`}],return:{name:`union`,raw:`BaseTableCellLayout | undefined`,elements:[{name:`BaseTableCellLayout`},{name:`undefined`}]}}},description:``},renderCellContent:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(args: BaseTableCellRenderArgs<TData>) => ReactNode`,signature:{arguments:[{type:{name:`BaseTableCellRenderArgs`,elements:[{name:`TData`}],raw:`BaseTableCellRenderArgs<TData>`},name:`args`}],return:{name:`ReactNode`}}},description:``},renderHeaderContextMenu:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(header: FoundationTableHeader<TData>) => ReactNode`,signature:{arguments:[{type:{name:`FoundationTableHeader`,elements:[{name:`TData`}],raw:`FoundationTableHeader<TData>`},name:`header`}],return:{name:`ReactNode`}}},description:`Общий слот контекстного меню заголовка.
|
|
12
|
-
|
|
13
|
-
BaseTable намеренно не знает про сортировку, группировку или доменные
|
|
14
|
-
действия. Он только сохраняет единый доступный способ открыть меню для
|
|
15
|
-
\`Table\` и \`TreeTable\`, а содержимое передает потребитель.`},enableColumnResizing:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},enableColumnReordering:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},rowReordering:{required:!1,tsType:{name:`BaseTableRowReordering`},description:``},columnResizeMinWidth:{required:!1,tsType:{name:`number`},description:``},afterTableContent:{required:!1,tsType:{name:`ReactNode`},description:``}}}})))()}var Wt,Gt,Kt,Q;function qt(){return(qt=e((()=>{Wt=`jPPyP7`,Gt=`Oa7e5P`,Kt=`KhQtgF`,Q={formattedCellValue:Wt,formattedCell:Gt,formattedCellInner:Kt}})))()}function Jt({displayValue:e,align:t=`left`}){let n=(0,Yt.useRef)(null),r=e.showValue,i=e.showIcon?e.icon:void 0,a=r&&e.value!=null?String(e.value):``,o=ne(e.state),s=t===`right`?`flex-end`:t===`center`?`center`:`flex-start`,c=t===`center`?`center`:t===`right`?`right`:`left`;return(0,Yt.useEffect)(()=>{let t=n.current;if(!t)return;let r=()=>{if(!e.overflowTooltip||!a){t.removeAttribute(`title`);return}if(t.scrollWidth>t.clientWidth+1){t.setAttribute(`title`,a);return}t.removeAttribute(`title`)};if(r(),typeof ResizeObserver>`u`)return;let i=new ResizeObserver(r);return i.observe(t),()=>{i.disconnect()}},[e.overflowTooltip,a]),(0,$.jsx)(`div`,{className:m(Q.formattedCell,o),children:(0,$.jsxs)(`div`,{className:Q.formattedCellInner,style:{justifyContent:s},children:[e.iconPosition===`left`?(0,$.jsx)(Ce,{state:i}):null,r?(0,$.jsx)(`span`,{ref:n,className:m(`textOverflow`,Q.formattedCellValue),style:{textAlign:c},children:a}):null,e.iconPosition===`right`?(0,$.jsx)(Ce,{state:i}):null]})})}var Yt,$;function Xt(){return(Xt=e((()=>{Yt=t(),ee(),h(),Oe(),qt(),$=p(),Jt.__docgenInfo={description:"Общий renderer форматированной ячейки для `Table` и будущего `TreeTable`.\n\nКомпонент отвечает только за UI-отрисовку уже вычисленного display-result:\nruntime и бизнес-логика вычисления значения в него не входят.",methods:[],displayName:`FormattedTableCell`,props:{displayValue:{required:!0,tsType:{name:`FormattersPipelineDisplayValue`},description:`Нормализованный display-result из formatting-runtime.`},align:{required:!1,tsType:{name:`TableColumnAlign`},description:`Табличное выравнивание содержимого.`,defaultValue:{value:`"left"`,computed:!1}}}}})))()}export{Ze as _,ut as a,st as c,it as d,rt as f,Qe as g,Xe as h,Ut as i,ot as l,nt as m,Xt as n,lt as o,tt as p,Ht as r,ct as s,Jt as t,at as u,Ue as v,W as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-BmGorvhi.js";import{a as i,i as a,n as o,o as s}from"./utils-tg3ibbzi.js";import{n as c,t as l}from"./ui.module-l7VCYIW-.js";var u,d,f,p,m,h,g,_;function v(){return(v=t((()=>{u=`nINbA6`,d=`GL-UWx`,f=`_6PeF-i`,p=`_5wP4aR`,m=`S3MnZI`,h=`KHJ0ja`,g=`oGmcQH`,_={radioGroup:u,noWrap:d,horizontal:f,vertical:p,radioItem:m,checked:h,radioItemContent:g}})))()}function y({value:e,onChange:t,label:n,description:r,disabled:a,className:o,noWrap:s,orientation:l=`horizontal`,"aria-label":u,children:d}){let f=(0,x.useId)(),p=n?`${f}-label`:void 0,m=r?`${f}-description`:void 0,[h,g]=(0,x.useState)([]),v=(0,x.useCallback)(e=>t?.(e),[t]),y=(0,x.useCallback)(e=>(g(t=>t.includes(e)?t:[...t,e]),()=>{g(t=>t.filter(t=>t!==e))}),[]),b=(0,x.useMemo)(()=>({value:e,onChange:v,disabled:a,orientation:l,groupId:f,labelId:p,descriptionId:m,firstOptionId:h[0],registerOption:y}),[m,a,f,v,p,l,y,h,e]);return(0,S.jsxs)(`div`,{className:i(c.uiElement,a&&c.disabled,o),children:[n&&(0,S.jsx)(`div`,{id:p,className:c.uiLabel,children:n}),r&&(0,S.jsx)(`div`,{id:m,className:c.uiDescription,children:r}),(0,S.jsx)(C.Provider,{value:b,children:(0,S.jsx)(`div`,{role:`radiogroup`,"aria-labelledby":p,"aria-label":p?void 0:u,"aria-describedby":m,"aria-disabled":a||void 0,"data-disabled":a||void 0,className:i(c.uiInputControl,_.radioGroup,s&&_.noWrap,_[l]),children:d})})]})}function b({value:e,label:t,description:n,className:r}){let a=(0,x.useContext)(C),c=(0,x.useId)(),l=a?.registerOption;if((0,x.useLayoutEffect)(()=>{if(l)return l(c)},[l,c]),!a)return(0,S.jsxs)(`div`,{className:i(_.radioItem,r),children:[(0,S.jsx)(`p`,{className:`textNoWrap`,children:t}),n&&(0,S.jsx)(`div`,{className:`fontSizeSm content2`,children:n})]});let u=Object.is(a.value,e),d=a.disabled===!0,f=a.value===void 0&&a.firstOptionId===c,p=()=>{d||u||a.onChange?.(e)};return(0,S.jsx)(`button`,{id:`${a.groupId}-option-${c}`,type:`button`,role:`radio`,"aria-checked":u,disabled:d,tabIndex:u||f?0:-1,className:i(_.radioItem,u&&_.checked,r),"data-ui":`radio-option`,"data-action":`select-radio-option`,onClick:p,onKeyDown:e=>{if(d||o(e,p))return;let t=e.currentTarget,n=t.closest(`[role="radiogroup"]`),r=Array.from(n?.querySelectorAll(`[role="radio"]:not([disabled])`)??[]);if(!r.length)return;let i=r.indexOf(t);if(i===-1)return;let c=s({currentIndex:i,itemCount:r.length,key:e.key,orientation:a.orientation});c!==null&&(e.preventDefault(),r[c]?.focus(),r[c]?.click())},children:(0,S.jsxs)(`span`,{className:_.radioItemContent,children:[(0,S.jsx)(`span`,{className:`textNoWrap`,children:t}),n&&(0,S.jsx)(`span`,{className:`fontSizeSm`,children:n})]})})}var x,S,C;function w(){return(w=t((()=>{x=e(n(),1),a(),l(),v(),S=r(),C=(0,x.createContext)(null),y.Option=b,y.__docgenInfo={description:`Группа радиокнопок с общим состоянием выбранного значения. Обеспечивает единый API выбора и контекст для дочерних опций.`,methods:[{name:`Option`,docblock:null,modifiers:[`static`],params:[{name:`{ value, label, description, className }: OptionProps<T>`,optional:!1,type:{name:`OptionProps`,elements:[{name:`T`}],raw:`OptionProps<T>`,alias:`OptionProps`}}],returns:null}],displayName:`RadioGroup`,props:{value:{required:!1,tsType:{name:`T`},description:``},onChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`T`},name:`value`}],return:{name:`void`}}},description:``},label:{required:!1,tsType:{name:`string`},description:``},description:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},noWrap:{required:!1,tsType:{name:`literal`,value:`true`},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"vertical" | "horizontal"`,elements:[{name:`literal`,value:`"vertical"`},{name:`literal`,value:`"horizontal"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},"aria-label":{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}},b.__docgenInfo={description:"Опция внутри `RadioGroup`, представляющая одно выбираемое значение. Отрисовывает подпись, описание и состояние выбора.",methods:[],displayName:`Option`,props:{value:{required:!0,tsType:{name:`T`},description:``},label:{required:!0,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``}}}})))()}export{w as n,y as t};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-BmGorvhi.js";import{a as r,i,o as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./ui.module-l7VCYIW-.js";import{i as c,n as l}from"./uiClasses-BblrV9p1.js";import{i as u,n as d,r as f,t as p}from"./NoData-CRi9NzcI.js";import{n as m,t as h}from"./OneStepScroller-dD9RSWvg.js";function g(e){return e.find(e=>!e.disabled)?.id??null}function _(e,t){return t?e.find(e=>e.id===t&&!e.disabled)?.id??g(e):g(e)}function v(e){return e.filter(e=>!e.disabled)}function y({mountStrategy:e,isSelected:t,isVisited:n}){return e===`keep-mounted`||t||e===`lazy`&&n}function b(){return(b=e((()=>{})))()}function x({items:e,value:t,defaultValue:n,onValueChange:r,orientation:i=`horizontal`,activationMode:o=`automatic`,loop:s=!0}){let c=t!==void 0,l=(0,S.useMemo)(()=>v(e),[e]),u=l[0]?.id??null,[d,f]=(0,S.useState)(()=>_(e,n)),[p,m]=(0,S.useState)(()=>_(e,t??n)),h=_(e,t??n),[g,y]=(0,S.useState)(()=>h?new Set([h]):new Set),b=(0,S.useId)(),x=(0,S.useRef)({}),C=_(e,c?t:d),w=_(e,p)??C??u,T=(0,S.useMemo)(()=>{if(!C||g.has(C))return g;let e=new Set(g);return e.add(C),e},[C,g]),E=t=>{let n=_(e,t);n&&(y(e=>{if(e.has(n))return e;let t=new Set(e);return t.add(n),t}),c||f(n),r?.(n))},D=e=>{x.current[e]?.focus()},O=e=>{if(l.length<2)return;let t=Math.max(0,l.findIndex(e=>e.id===(w??C??u))),n=a({currentIndex:t,itemCount:l.length,key:e.key,orientation:i,wrap:s});if(n===null)return;e.preventDefault();let r=l[n]?.id;r&&(m(r),D(r),o===`automatic`&&E(r))},k=e=>{let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||m(C??u)},A=e=>`${b}-tab-${e}`,j=e=>`${b}-panel-${e}`;return{activationMode:o,orientation:i,selectedTabId:C,tabbableTabId:w,onTabListKeyDown:O,onTabListBlur:k,getTabElementId:A,getPanelElementId:j,getTabButtonProps:e=>{let t=e.id===C,n=e.id===w;return{ref:t=>{x.current[e.id]=t},type:`button`,role:`tab`,id:A(e.id),disabled:e.disabled,"aria-selected":t,"aria-controls":j(e.id),"aria-disabled":e.disabled||void 0,tabIndex:e.disabled?-1:n?0:-1,onFocus:()=>m(e.id),onClick:()=>E(e.id)}},isVisited:e=>T.has(e)}}var S;function C(){return(C=e((()=>{S=t(),i()})))()}var w,T,E,D,O,k,A,j,M,N,P,F,I,L,R,z,B;function V(){return(V=e((()=>{w=`pcMjuj`,T=`NLOw2z`,E=`Z6PwjQ`,D=`ZSAoAa`,O=`psYhsZ`,k=`mNDq9-`,A=`g156KO`,j=`C2mO1e`,M=`_28F3fs`,N=`UKZXTZ`,P=`jiTafe`,F=`nhD0k7`,I=`G8FICe`,L=`W50XHh`,R=`vnjXkU`,z=`Nzvfhw`,B={tabsContainer:w,clean:T,tabsWrapper:E,tabs:D,panels:O,horizontal:k,vertical:A,panelScrollable:j,tab:M,selected:N,panel:P,panelBody:F,layoutPanels:I,layoutPanel:L,layoutSection:R,layoutContent:z}})))()}function H({containerClassName:e,tabListClassName:t,panelsClassName:n,panelClassName:i,panelBodyClassName:a,loadingText:o}){return(0,U.jsxs)(`div`,{className:e,children:[(0,U.jsx)(`div`,{className:t,"aria-hidden":`true`,children:(0,U.jsx)(`button`,{type:`button`,disabled:!0,"data-disabled":``,className:r(B.tab,`skeletonLine`),children:`Загрузка...`})}),(0,U.jsx)(`div`,{className:n,"aria-busy":`true`,children:(0,U.jsx)(`div`,{className:i,children:(0,U.jsx)(`div`,{className:a,children:(0,U.jsx)(f,{text:o,className:`radiusSm`})})})})]})}var U;function W(){return(W=e((()=>{i(),u(),V(),U=n(),H.__docgenInfo={description:"Служебное loading-состояние для `TabsBox`.",methods:[],displayName:`TabsLoadingState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},tabListClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``}}}})))()}function G({containerClassName:e,panelsClassName:t,panelClassName:n,panelBodyClassName:r}){return(0,K.jsx)(`div`,{className:e,children:(0,K.jsx)(`div`,{className:t,children:(0,K.jsx)(`div`,{className:n,children:(0,K.jsx)(`div`,{className:r,children:(0,K.jsx)(p,{className:`radiusSm`})})})})})}var K;function q(){return(q=e((()=>{d(),K=n(),G.__docgenInfo={description:"Служебное empty-состояние для `TabsBox`.",methods:[],displayName:`TabsNoDataState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``}}}})))()}function J({tabId:e,isSelected:t,className:n,getTabElementId:r,getPanelElementId:i,children:a}){return(0,ee.jsx)(`div`,{role:`tabpanel`,id:i(e),"aria-labelledby":r(e),hidden:!t,tabIndex:t?0:-1,className:n,children:a})}var ee;function Y(){return(Y=e((()=>{ee=n(),J.__docgenInfo={description:``,methods:[],displayName:`TabsPanel`,props:{tabId:{required:!0,tsType:{name:`string`},description:``},isSelected:{required:!0,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},getTabElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},getPanelElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},children:{required:!1,tsType:{name:`ReactNode`},description:``}}}})))()}function X({items:e,state:t,className:n,ariaLabel:i,ariaLabelledBy:a}){let o=(0,Z.jsx)(`div`,{"data-ui":`tabs-tablist`,className:n,role:`tablist`,"aria-orientation":t.orientation,"aria-label":a?void 0:i??`Вкладки`,"aria-labelledby":a,"aria-live":`off`,onKeyDown:t.onTabListKeyDown,onBlur:t.onTabListBlur,children:e.map(e=>(0,Z.jsx)(`button`,{...t.getTabButtonProps(e),"data-ui":`tabs-tab`,"data-action":`select-tab`,className:r(B.tab,`textWrap`,e.id===t.selectedTabId&&B.selected),children:e.title},e.id))});return t.orientation===`horizontal`?(0,Z.jsx)(h,{itemSelector:`[role='tab']`,children:o}):o}var Z;function Q(){return(Q=e((()=>{i(),m(),V(),Z=n(),X.__docgenInfo={description:``,methods:[],displayName:`TabsTabList`,props:{items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsDescriptor`}],raw:`TabsDescriptor[]`},description:``},state:{required:!0,tsType:{name:`TabsStateModel`},description:``},className:{required:!1,tsType:{name:`string`},description:``},ariaLabel:{required:!1,tsType:{name:`string`},description:``},ariaLabelledBy:{required:!1,tsType:{name:`string`},description:``}}}})))()}function te({items:e,value:t,defaultValue:n,onValueChange:i,className:a,isLoading:s,loadingText:c,orientation:u=`horizontal`,activationMode:d=`automatic`,mountStrategy:f=`unmount`,loop:p=!0,tone:m=`primary`,clean:h=!1,"aria-label":g,"aria-labelledby":_}){let v=x({items:e,value:t,defaultValue:n,onValueChange:i,orientation:u,activationMode:d,loop:p}),b=r(B.tabsContainer,h?B.clean:o.uiFilledPanel,B[u],l(m),a),S=B.tabs,C=r(B.panels,B.panelScrollable,`scrollable overscroll`),w=B.panel,T=B.panelBody;return s?(0,$.jsx)(H,{containerClassName:b,tabListClassName:S,panelsClassName:C,panelClassName:w,panelBodyClassName:T,loadingText:c}):e.length?(0,$.jsxs)(`div`,{className:b,children:[(0,$.jsx)(`div`,{className:B.tabsWrapper,children:(0,$.jsx)(X,{items:e,state:v,className:S,ariaLabel:g,ariaLabelledBy:_})}),(0,$.jsx)(`div`,{className:C,children:e.map(e=>{let t=e.id===v.selectedTabId,n=y({mountStrategy:f,isSelected:t,isVisited:v.isVisited(e.id)});return(0,$.jsx)(J,{tabId:e.id,isSelected:t,className:w,getTabElementId:v.getTabElementId,getPanelElementId:v.getPanelElementId,children:n?(0,$.jsx)(`div`,{className:T,children:e.content}):null},e.id)})})]}):(0,$.jsx)(G,{containerClassName:b,panelsClassName:C,panelClassName:w,panelBodyClassName:T})}var $;function ne(){return(ne=e((()=>{i(),s(),c(),C(),V(),W(),q(),Y(),Q(),$=n(),te.__docgenInfo={description:`Простой items-based tabs-компонент.
|
|
2
|
-
Сам управляет областью панели и её прокруткой.`,methods:[],displayName:`TabsBox`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``,defaultValue:{value:`"automatic"`,computed:!1}},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``,defaultValue:{value:`"unmount"`,computed:!1}},loop:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},tone:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary" | "tertiary"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`},{name:`literal`,value:`"tertiary"`}]},description:``,defaultValue:{value:`"primary"`,computed:!1}},clean:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsBoxItem`}],raw:`TabsBoxItem[]`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``}}}})))()}export{J as a,V as c,b as d,y as f,Q as i,C as l,ne as n,Y as o,X as r,B as s,te as t,x as u};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{t as r}from"./react-dom-BzEl8usk.js";import{i,n as a,r as o,s,t as c}from"./utils-tg3ibbzi.js";import{_ as l,a as u,c as d,d as f,f as p,g as m,h,i as g,l as _,m as v,r as y}from"./floating-ui.react-CypKyrM4.js";function b(){var e=[...arguments];return(0,I.useMemo)(()=>t=>{e.forEach(e=>e(t))},e)}function x(e){let t=Object.prototype.toString.call(e);return t===`[object Window]`||t===`[object global]`}function S(e){return`nodeType`in e}function C(e){return e?x(e)?e:S(e)?e.ownerDocument?.defaultView??window:window:window}function w(e){let{Document:t}=C(e);return e instanceof t}function T(e){return!x(e)&&e instanceof C(e).HTMLElement}function ee(e){return e instanceof C(e).SVGElement}function E(e){return e?x(e)?e.document:S(e)?w(e)?e:T(e)||ee(e)?e.ownerDocument:document:document:document}function D(e){let t=(0,I.useRef)(e);return R(()=>{t.current=e}),(0,I.useCallback)(function(){var e=[...arguments];return t.current==null?void 0:t.current(...e)},[])}function te(){let e=(0,I.useRef)(null);return[(0,I.useCallback)((t,n)=>{e.current=setInterval(t,n)},[]),(0,I.useCallback)(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[])]}function ne(e,t){t===void 0&&(t=[e]);let n=(0,I.useRef)(e);return R(()=>{n.current!==e&&(n.current=e)},t),n}function O(e,t){let n=(0,I.useRef)();return(0,I.useMemo)(()=>{let t=e(n.current);return n.current=t,t},[...t])}function k(e){let t=D(e),n=(0,I.useRef)(null);return[n,(0,I.useCallback)(e=>{e!==n.current&&t?.(e,n.current),n.current=e},[])]}function re(e){let t=(0,I.useRef)();return(0,I.useEffect)(()=>{t.current=e},[e]),t.current}function A(e,t){return(0,I.useMemo)(()=>{if(t)return t;let n=z[e]==null?0:z[e]+1;return z[e]=n,e+`-`+n},[e,t])}function j(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>{let r=Object.entries(n);for(let[n,i]of r){let r=t[n];r!=null&&(t[n]=r+e*i)}return t},{...t})}}function M(e){return`clientX`in e&&`clientY`in e}function N(e){if(!e)return!1;let{KeyboardEvent:t}=C(e.target);return t&&e instanceof t}function ie(e){if(!e)return!1;let{TouchEvent:t}=C(e.target);return t&&e instanceof t}function P(e){if(ie(e)){if(e.touches&&e.touches.length){let{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}if(e.changedTouches&&e.changedTouches.length){let{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return M(e)?{x:e.clientX,y:e.clientY}:null}function F(e){return e.matches(U)?e:e.querySelector(U)}var I,L,R,z,B,V,H,U;function W(){return(W=t((()=>{I=n(),L=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,R=L?I.useLayoutEffect:I.useEffect,z={},B=j(1),V=j(-1),H=Object.freeze({Translate:{toString(e){if(!e)return;let{x:t,y:n}=e;return`translate3d(`+(t?Math.round(t):0)+`px, `+(n?Math.round(n):0)+`px, 0)`}},Scale:{toString(e){if(!e)return;let{scaleX:t,scaleY:n}=e;return`scaleX(`+t+`) scaleY(`+n+`)`}},Transform:{toString(e){if(e)return[H.Translate.toString(e),H.Scale.toString(e)].join(` `)}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+` `+n+`ms `+r}}}),U=`a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]`})))()}function G(e){let{id:t,value:n}=e;return se.createElement(`div`,{id:t,style:ce},n)}function ae(e){let{id:t,announcement:n,ariaLiveType:r=`assertive`}=e;return se.createElement(`div`,{id:t,style:{position:`fixed`,top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0 0 0 0)`,clipPath:`inset(100%)`,whiteSpace:`nowrap`},role:`status`,"aria-live":r,"aria-atomic":!0},n)}function oe(){let[e,t]=(0,se.useState)(``);return{announce:(0,se.useCallback)(e=>{e!=null&&t(e)},[]),announcement:e}}var se,ce;function le(){return(le=t((()=>{se=e(n()),ce={display:`none`}})))()}function K(e){let t=(0,q.useContext)(kt);(0,q.useEffect)(()=>{if(!t)throw Error(`useDndMonitor must be used within a children of <DndContext>`);return t(e)},[e,t])}function ue(){let[e]=(0,q.useState)(()=>new Set),t=(0,q.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,q.useCallback)(t=>{let{type:n,event:r}=t;e.forEach(e=>e[n]?.call(e,r))},[e]),t]}function de(e){let{announcements:t=jt,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=At}=e,{announce:a,announcement:o}=oe(),s=A(`DndLiveRegion`),[c,l]=(0,q.useState)(!1);if((0,q.useEffect)(()=>{l(!0)},[]),K((0,q.useMemo)(()=>({onDragStart(e){let{active:n}=e;a(t.onDragStart({active:n}))},onDragMove(e){let{active:n,over:r}=e;t.onDragMove&&a(t.onDragMove({active:n,over:r}))},onDragOver(e){let{active:n,over:r}=e;a(t.onDragOver({active:n,over:r}))},onDragEnd(e){let{active:n,over:r}=e;a(t.onDragEnd({active:n,over:r}))},onDragCancel(e){let{active:n,over:r}=e;a(t.onDragCancel({active:n,over:r}))}}),[a,t])),!c)return null;let u=q.createElement(q.Fragment,null,q.createElement(G,{id:r,value:i.draggable}),q.createElement(ae,{id:s,announcement:o}));return n?(0,Ot.createPortal)(u,n):u}function fe(){}function pe(e,t){return(0,q.useMemo)(()=>({sensor:e,options:t??{}}),[e,t])}function me(){var e=[...arguments];return(0,q.useMemo)(()=>[...e].filter(e=>e!=null),[...e])}function he(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function ge(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function _e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function ve(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function ye(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}function be(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}function xe(e,t){let n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=i-r,s=a-n;if(r<i&&n<a){let n=t.width*t.height,r=e.width*e.height,i=o*s,a=i/(n+r-i);return Number(a.toFixed(4))}return 0}function Se(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function Ce(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Y}function we(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}function Te(e){if(e.startsWith(`matrix3d(`)){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}if(e.startsWith(`matrix(`)){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function Ee(e,t,n){let r=Te(t);if(!r)return e;let{scaleX:i,scaleY:a,x:o,y:s}=r,c=e.left-o-(1-i)*parseFloat(n),l=e.top-s-(1-a)*parseFloat(n.slice(n.indexOf(` `)+1)),u=i?e.width/i:e.width,d=a?e.height/a:e.height;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c}}function De(e,t){t===void 0&&(t=It);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=C(e).getComputedStyle(e);t&&(n=Ee(n,t,r))}let{top:r,left:i,width:a,height:o,bottom:s,right:c}=n;return{top:r,left:i,width:a,height:o,bottom:s,right:c}}function Oe(e){return De(e,{ignoreTransform:!0})}function ke(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function Ae(e,t){return t===void 0&&(t=C(e).getComputedStyle(e)),t.position===`fixed`}function je(e,t){t===void 0&&(t=C(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`&&n.test(r)})}function Me(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(w(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!T(i)||ee(i)||n.includes(i))return n;let a=C(e).getComputedStyle(i);return i!==e&&je(i,a)&&n.push(i),Ae(i,a)?n:r(i.parentNode)}return e?r(e):n}function Ne(e){let[t]=Me(e,1);return t??null}function Pe(e){return!L||!e?null:x(e)?e:S(e)?w(e)||e===E(e).scrollingElement?window:T(e)?e:null:null}function Fe(e){return x(e)?e.scrollX:e.scrollLeft}function Ie(e){return x(e)?e.scrollY:e.scrollTop}function Le(e){return{x:Fe(e),y:Ie(e)}}function Re(e){return!L||!e?!1:e===document.scrollingElement}function ze(e){let t={x:0,y:0},n=Re(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}function Be(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=Lt);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=ze(e),p={x:0,y:0},m={x:0,y:0},h={height:t.height*i.y,width:t.width*i.x};return!l&&a<=t.top+h.height?(p.y=X.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=X.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=X.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=X.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function Ve(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function He(e){return e.reduce((e,t)=>B(e,Le(t)),Y)}function Ue(e){return e.reduce((e,t)=>e+Fe(t),0)}function We(e){return e.reduce((e,t)=>e+Ie(t),0)}function Ge(e,t){if(t===void 0&&(t=De),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);Ne(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}function Ke(e){let{EventTarget:t}=C(e);return e instanceof t?e:E(e)}function qe(e,t){let n=Math.abs(e.x),r=Math.abs(e.y);return typeof t==`number`?Math.sqrt(n**2+r**2)>t:`x`in t&&`y`in t?n>t.x&&r>t.y:`x`in t?n>t.x:`y`in t&&r>t.y}function Je(e){e.preventDefault()}function Ye(e){e.stopPropagation()}function Xe(e){return!!(e&&`distance`in e)}function Ze(e){return!!(e&&`delay`in e)}function Qe(e){let{acceleration:t,activator:n=Qt.Pointer,canScroll:r,draggingRect:i,enabled:a,interval:o=5,order:s=$t.TreeOrder,pointerCoordinates:c,scrollableAncestors:l,scrollableAncestorRects:u,delta:d,threshold:f}=e,p=$e({delta:d,disabled:!a}),[m,h]=te(),g=(0,q.useRef)({x:0,y:0}),_=(0,q.useRef)({x:0,y:0}),v=(0,q.useMemo)(()=>{switch(n){case Qt.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case Qt.DraggableRect:return i}},[n,i,c]),y=(0,q.useRef)(null),b=(0,q.useCallback)(()=>{let e=y.current;if(!e)return;let t=g.current.x*_.current.x,n=g.current.y*_.current.y;e.scrollBy(t,n)},[]),x=(0,q.useMemo)(()=>s===$t.TreeOrder?[...l].reverse():l,[s,l]);(0,q.useEffect)(()=>{if(!a||!l.length||!v){h();return}for(let e of x){if(r?.(e)===!1)continue;let n=l.indexOf(e),i=u[n];if(!i)continue;let{direction:a,speed:s}=Be(e,i,v,t,f);for(let e of[`x`,`y`])p[e][a[e]]||(s[e]=0,a[e]=0);if(s.x>0||s.y>0){h(),y.current=e,m(b,o),g.current=s,_.current=a;return}}g.current={x:0,y:0},_.current={x:0,y:0},h()},[t,b,r,h,a,o,JSON.stringify(v),JSON.stringify(p),m,l,x,u,JSON.stringify(f)])}function $e(e){let{delta:t,disabled:n}=e,r=re(t);return O(e=>{if(n||!r||!e)return en;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[X.Backward]:e.x[X.Backward]||i.x===-1,[X.Forward]:e.x[X.Forward]||i.x===1},y:{[X.Backward]:e.y[X.Backward]||i.y===-1,[X.Forward]:e.y[X.Forward]||i.y===1}}},[n,t,r])}function et(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return O(e=>t==null?null:r??e??null,[r,t])}function tt(e,t){return(0,q.useMemo)(()=>e.reduce((e,n)=>{let{sensor:r}=n,i=r.activators.map(e=>({eventName:e.eventName,handler:t(e.handler,n)}));return[...e,...i]},[]),[e,t])}function nt(e,t){let{dragging:n,dependencies:r,config:i}=t,[a,o]=(0,q.useState)(null),{frequency:s,measure:c,strategy:l}=i,u=(0,q.useRef)(e),d=g(),f=ne(d),p=(0,q.useCallback)(function(e){e===void 0&&(e=[]),!f.current&&o(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[f]),m=(0,q.useRef)(null),h=O(t=>{if(d&&!n)return rn;if(!t||t===rn||u.current!==e||a!=null){let t=new Map;for(let n of e){if(!n)continue;if(a&&a.length>0&&!a.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new zt(c(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,a,n,d,c]);return(0,q.useEffect)(()=>{u.current=e},[e]),(0,q.useEffect)(()=>{d||p()},[n,d]),(0,q.useEffect)(()=>{a&&a.length>0&&o(null)},[JSON.stringify(a)]),(0,q.useEffect)(()=>{d||typeof s!=`number`||m.current!==null||(m.current=setTimeout(()=>{p(),m.current=null},s))},[s,d,p,...r]),{droppableRects:h,measureDroppableContainers:p,measuringScheduled:a!=null};function g(){switch(l){case tn.Always:return!1;case tn.BeforeDragging:return n;default:return!n}}}function rt(e,t){return O(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function it(e,t){return rt(e,t)}function at(e){let{callback:t,disabled:n}=e,r=D(t),i=(0,q.useMemo)(()=>{if(n||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(r)},[r,n]);return(0,q.useEffect)(()=>()=>i?.disconnect(),[i]),i}function ot(e){let{callback:t,disabled:n}=e,r=D(t),i=(0,q.useMemo)(()=>{if(n||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(r)},[n]);return(0,q.useEffect)(()=>()=>i?.disconnect(),[i]),i}function st(e){return new zt(De(e),e)}function ct(e,t,n){t===void 0&&(t=st);let[r,i]=(0,q.useState)(null);function a(){i(r=>{if(!e)return null;if(e.isConnected===!1)return r??n??null;let i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i})}let o=at({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){a();break}}}}),s=ot({callback:a});return R(()=>{a(),e?(s?.observe(e),o?.observe(document.body,{childList:!0,subtree:!0})):(s?.disconnect(),o?.disconnect())},[e]),r}function lt(e){return Ce(e,rt(e))}function ut(e){let t=(0,q.useRef)(e),n=O(n=>e?n&&n!==an&&e&&t.current&&e.parentNode===t.current.parentNode?n:Me(e):an,[e]);return(0,q.useEffect)(()=>{t.current=e},[e]),n}function dt(e){let[t,n]=(0,q.useState)(null),r=(0,q.useRef)(e),i=(0,q.useCallback)(e=>{let t=Pe(e.target);t&&n(e=>e?(e.set(t,Le(t)),new Map(e)):null)},[]);return(0,q.useEffect)(()=>{let t=r.current;if(e!==t){a(t);let o=e.map(e=>{let t=Pe(e);return t?(t.addEventListener(`scroll`,i,{passive:!0}),[t,Le(t)]):null}).filter(e=>e!=null);n(o.length?new Map(o):null),r.current=e}return()=>{a(e),a(t)};function a(e){e.forEach(e=>{Pe(e)?.removeEventListener(`scroll`,i)})}},[i,e]),(0,q.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>B(e,t),Y):He(e):Y,[e,t])}function ft(e,t){t===void 0&&(t=[]);let n=(0,q.useRef)(null);return(0,q.useEffect)(()=>{n.current=null},t),(0,q.useEffect)(()=>{let t=e!==Y;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)},[e]),n.current?V(e,n.current):Y}function pt(e){(0,q.useEffect)(()=>{if(!L)return;let t=e.map(e=>{let{sensor:t}=e;return t.setup==null?void 0:t.setup()});return()=>{for(let e of t)e?.()}},e.map(e=>{let{sensor:t}=e;return t}))}function mt(e,t){return(0,q.useMemo)(()=>e.reduce((e,n)=>{let{eventName:r,handler:i}=n;return e[r]=e=>{i(e,t)},e},{}),[e,t])}function ht(e){return(0,q.useMemo)(()=>e?ke(e):null,[e])}function gt(e,t){t===void 0&&(t=De);let[n]=e,r=ht(n?C(n):null),[i,a]=(0,q.useState)(on);function o(){a(()=>e.length?e.map(e=>Re(e)?r:new zt(t(e),e)):on)}let s=ot({callback:o});return R(()=>{s?.disconnect(),o(),e.forEach(e=>s?.observe(e))},[e]),i}function _t(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return T(t)?t:e}function vt(e){let{measure:t}=e,[n,r]=(0,q.useState)(null),i=ot({callback:(0,q.useCallback)(e=>{for(let{target:n}of e)if(T(n)){r(e=>{let r=t(n);return e?{...e,width:r.width,height:r.height}:r});break}},[t])}),[a,o]=k((0,q.useCallback)(e=>{let n=_t(e);i?.disconnect(),n&&i?.observe(n),r(n?t(n):null)},[t,i]));return(0,q.useMemo)(()=>({nodeRef:a,rect:n,setRef:o}),[n,a,o])}function yt(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new un}}}function bt(e,t){switch(t.type){case J.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case J.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case J.DragEnd:case J.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case J.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new un(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case J.SetDroppableDisabled:{let{id:n,key:r,disabled:i}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;let o=new un(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case J.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new un(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function xt(e){let{disabled:t}=e,{active:n,activatorEvent:r,draggableNodes:i}=(0,q.useContext)(pn),a=re(r),o=re(n?.id);return(0,q.useEffect)(()=>{if(!t&&!r&&a&&o!=null){if(!N(a)||document.activeElement===a.target)return;let e=i.get(o);if(!e)return;let{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(let e of[t.current,n.current]){if(!e)continue;let t=F(e);if(t){t.focus();break}}})}},[r,t,i,o,a]),null}function St(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function Ct(e){return(0,q.useMemo)(()=>({draggable:{...ln.draggable,...e?.draggable},droppable:{...ln.droppable,...e?.droppable},dragOverlay:{...ln.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function wt(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e,a=(0,q.useRef)(!1),{x:o,y:s}=typeof i==`boolean`?{x:i,y:i}:i;R(()=>{if(!o&&!s||!t){a.current=!1;return}if(a.current||!r)return;let e=t?.node.current;if(!e||e.isConnected===!1)return;let i=Ce(n(e),r);if(o||(i.x=0),s||(i.y=0),a.current=!0,Math.abs(i.x)>0||Math.abs(i.y)>0){let t=Ne(e);t&&t.scrollBy({top:i.y,left:i.x})}},[t,o,s,r,n])}function Tt(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e,a=A(bn),{activators:o,activatorEvent:s,active:c,activeNodeRect:l,ariaDescribedById:u,draggableNodes:d,over:f}=(0,q.useContext)(pn),{role:p=yn,roleDescription:m=`draggable`,tabIndex:h=0}=i??{},g=c?.id===t,_=(0,q.useContext)(g?hn:vn),[v,y]=k(),[b,x]=k(),S=mt(o,t),C=ne(n);return R(()=>(d.set(t,{id:t,key:a,node:v,activatorNode:b,data:C}),()=>{let e=d.get(t);e&&e.key===a&&d.delete(t)}),[d,t]),{active:c,activatorEvent:s,activeNodeRect:l,attributes:(0,q.useMemo)(()=>({role:p,tabIndex:h,"aria-disabled":r,"aria-pressed":g&&p===yn?!0:void 0,"aria-roledescription":m,"aria-describedby":u.draggable}),[r,p,h,g,m,u.draggable]),isDragging:g,listeners:r?void 0:S,node:v,over:f,setNodeRef:y,setActivatorNodeRef:x,transform:_}}function Et(){return(0,q.useContext)(mn)}function Dt(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e,a=A(xn),{active:o,dispatch:s,over:c,measureDroppableContainers:l}=(0,q.useContext)(pn),u=(0,q.useRef)({disabled:n}),d=(0,q.useRef)(!1),f=(0,q.useRef)(null),p=(0,q.useRef)(null),{disabled:m,updateMeasurementsFor:h,timeout:g}={...Sn,...i},_=ne(h??r),v=ot({callback:(0,q.useCallback)(()=>{if(!d.current){d.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{l(Array.isArray(_.current)?_.current:[_.current]),p.current=null},g)},[g]),disabled:m||!o}),[y,b]=k((0,q.useCallback)((e,t)=>{v&&(t&&(v.unobserve(t),d.current=!1),e&&v.observe(e))},[v])),x=ne(t);return(0,q.useEffect)(()=>{!v||!y.current||(v.disconnect(),d.current=!1,v.observe(y.current))},[y,v]),(0,q.useEffect)(()=>(s({type:J.RegisterDroppable,element:{id:r,key:a,disabled:n,node:y,rect:f,data:x}}),()=>s({type:J.UnregisterDroppable,key:a,id:r})),[r]),(0,q.useEffect)(()=>{n!==u.current.disabled&&(s({type:J.SetDroppableDisabled,id:r,key:a,disabled:n}),u.current.disabled=n)},[r,a,n,s]),{active:o,rect:f,isOver:c?.id===r,node:y,over:c,setNodeRef:b}}var q,Ot,kt,At,jt,J,Y,Mt,Nt,Pt,Ft,It,X,Lt,Rt,zt,Bt,Z,Q,Vt,Ht,Ut,Wt,Gt,Kt,qt,Jt,Yt,Xt,Zt,Qt,$t,en,tn,nn,rn,an,on,sn,cn,ln,un,dn,fn,pn,mn,hn,gn,_n,vn,yn,bn,xn,Sn;function Cn(){return(Cn=t((()=>{q=e(n()),Ot=r(),W(),le(),kt=(0,q.createContext)(null),At={draggable:`
|
|
2
|
-
To pick up a draggable item, press the space bar.
|
|
3
|
-
While dragging, use the arrow keys to move the item.
|
|
4
|
-
Press space again to drop the item in its new position, or press escape to cancel.
|
|
5
|
-
`},jt={onDragStart(e){let{active:t}=e;return`Picked up draggable item `+t.id+`.`},onDragOver(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was moved over droppable area `+n.id+`.`:`Draggable item `+t.id+` is no longer over a droppable area.`},onDragEnd(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was dropped over droppable area `+n.id:`Draggable item `+t.id+` was dropped.`},onDragCancel(e){let{active:t}=e;return`Dragging was cancelled. Draggable item `+t.id+` was dropped.`}},(function(e){e.DragStart=`dragStart`,e.DragMove=`dragMove`,e.DragEnd=`dragEnd`,e.DragCancel=`dragCancel`,e.DragOver=`dragOver`,e.RegisterDroppable=`registerDroppable`,e.SetDroppableDisabled=`setDroppableDisabled`,e.UnregisterDroppable=`unregisterDroppable`})(J||={}),Y=Object.freeze({x:0,y:0}),Mt=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=be(t,t.left,t.top),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=he(be(r),i);a.push({id:t,data:{droppableContainer:e,value:n}})}}return a.sort(ge)},Nt=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=ve(t),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=ve(r),o=i.reduce((e,t,r)=>e+he(n[r],t),0),s=Number((o/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:s}})}}return a.sort(ge)},Pt=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=[];for(let e of r){let{id:r}=e,a=n.get(r);if(a){let n=xe(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(_e)},Ft=we(1),It={ignoreTransform:!1},(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(X||={}),Lt={x:.2,y:.2},Rt=[[`x`,[`left`,`right`],Ue],[`y`,[`top`,`bottom`],We]],zt=class{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;let n=Me(t),r=He(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of Rt)for(let a of t)Object.defineProperty(this,a,{get:()=>{let t=i(n),o=r[e]-t;return this.rect[a]+o},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}},Bt=class{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>this.target?.removeEventListener(...e))},this.target=e}add(e,t,n){var r;(r=this.target)==null||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}},(function(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(Z||={}),(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})(Q||={}),Vt={start:[Q.Space,Q.Enter],cancel:[Q.Esc],end:[Q.Space,Q.Enter,Q.Tab]},Ht=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case Q.Right:return{...n,x:n.x+25};case Q.Left:return{...n,x:n.x-25};case Q.Down:return{...n,y:n.y+25};case Q.Up:return{...n,y:n.y-25}}},Ut=class{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;let{event:{target:t}}=e;this.props=e,this.listeners=new Bt(E(t)),this.windowListeners=new Bt(C(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Z.Resize,this.handleCancel),this.windowListeners.add(Z.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Z.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&Ge(n),t(Y)}handleKeyDown(e){if(N(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=Vt,coordinateGetter:a=Ht,scrollBehavior:o=`smooth`}=r,{code:s}=e;if(i.end.includes(s)){this.handleEnd(e);return}if(i.cancel.includes(s)){this.handleCancel(e);return}let{collisionRect:c}=n.current,l=c?{x:c.left,y:c.top}:Y;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=V(u,l),r={x:0,y:0},{scrollableAncestors:i}=n.current;for(let n of i){let i=e.code,{isTop:a,isRight:s,isLeft:c,isBottom:l,maxScroll:d,minScroll:f}=ze(n),p=Ve(n),m={x:Math.min(i===Q.Right?p.right-p.width/2:p.right,Math.max(i===Q.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===Q.Down?p.bottom-p.height/2:p.bottom,Math.max(i===Q.Down?p.top:p.top+p.height/2,u.y))},h=i===Q.Right&&!s||i===Q.Left&&!c,g=i===Q.Down&&!l||i===Q.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===Q.Right&&e<=d.x||i===Q.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}r.x=a?n.scrollLeft-e:i===Q.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===Q.Down&&e<=d.y||i===Q.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}r.y=a?n.scrollTop-e:i===Q.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,B(V(u,this.referenceCoordinates),r))}}}handleMove(e,t){let{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}},Ut.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=Vt,onActivation:i}=t,{active:a}=n,{code:o}=e.nativeEvent;if(r.start.includes(o)){let t=a.activatorNode.current;return t&&e.target!==t?!1:(e.preventDefault(),i?.({event:e.nativeEvent}),!0)}return!1}}],Wt=class{constructor(e,t,n){n===void 0&&(n=Ke(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;let{event:r}=e,{target:i}=r;this.props=e,this.events=t,this.document=E(i),this.documentListeners=new Bt(this.document),this.listeners=new Bt(n),this.windowListeners=new Bt(C(i)),this.initialCoordinates=P(r)??Y,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(Z.Resize,this.handleCancel),this.windowListeners.add(Z.DragStart,Je),this.windowListeners.add(Z.VisibilityChange,this.handleCancel),this.windowListeners.add(Z.ContextMenu,Je),this.documentListeners.add(Z.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Ze(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(Xe(t)){this.handlePending(t);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(Z.Click,Ye,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Z.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){let{activated:t,initialCoordinates:n,props:r}=this,{onMove:i,options:{activationConstraint:a}}=r;if(!n)return;let o=P(e)??Y,s=V(n,o);if(!t&&a){if(Xe(a)){if(a.tolerance!=null&&qe(s,a.tolerance))return this.handleCancel();if(qe(s,a.distance))return this.handleStart()}if(Ze(a)&&qe(s,a.tolerance))return this.handleCancel();this.handlePending(a,s);return}e.cancelable&&e.preventDefault(),i(o)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===Q.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},Gt={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},Kt=class extends Wt{constructor(e){let{event:t}=e,n=E(t.target);super(e,Gt,n)}},Kt.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}],qt={move:{name:`mousemove`},end:{name:`mouseup`}},(function(e){e[e.RightClick=2]=`RightClick`})(Jt||={}),Yt=class extends Wt{constructor(e){super(e,qt,E(e.event.target))}},Yt.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button!==Jt.RightClick&&(r?.({event:n}),!0)}}],Xt={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},Zt=class extends Wt{constructor(e){super(e,Xt)}static setup(){return window.addEventListener(Xt.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(Xt.move.name,e)};function e(){}}},Zt.activators=[{eventName:`onTouchStart`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t,{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}],(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(Qt||={}),(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})($t||={}),en={x:{[X.Backward]:!1,[X.Forward]:!1},y:{[X.Backward]:!1,[X.Forward]:!1}},(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(tn||={}),(function(e){e.Optimized=`optimized`})(nn||={}),rn=new Map,an=[],on=[],sn=[{sensor:Kt,options:{}},{sensor:Ut,options:{}}],cn={current:{}},ln={draggable:{measure:Oe},droppable:{measure:Oe,strategy:tn.WhileDragging,frequency:nn.Optimized},dragOverlay:{measure:De}},un=class extends Map{get(e){return e==null?void 0:super.get(e)??void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){return this.get(e)?.node.current??void 0}},dn={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new un,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:fe},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:ln,measureDroppableContainers:fe,windowRect:null,measuringScheduled:!1},fn={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:fe,draggableNodes:new Map,over:null,measureDroppableContainers:fe},pn=(0,q.createContext)(fn),mn=(0,q.createContext)(dn),hn=(0,q.createContext)({...Y,scaleX:1,scaleY:1}),(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(gn||={}),_n=(0,q.memo)(function(e){let{id:t,accessibility:n,autoScroll:r=!0,children:i,sensors:a=sn,collisionDetection:o=Pt,measuring:s,modifiers:c,...l}=e,[u,d]=(0,q.useReducer)(bt,void 0,yt),[f,p]=ue(),[m,h]=(0,q.useState)(gn.Uninitialized),g=m===gn.Initialized,{draggable:{active:_,nodes:v,translate:y},droppable:{containers:b}}=u,x=_==null?null:v.get(_),S=(0,q.useRef)({initial:null,translated:null}),w=(0,q.useMemo)(()=>_==null?null:{id:_,data:x?.data??cn,rect:S},[_,x]),T=(0,q.useRef)(null),[ee,E]=(0,q.useState)(null),[D,te]=(0,q.useState)(null),O=ne(l,Object.values(l)),k=A(`DndDescribedBy`,t),re=(0,q.useMemo)(()=>b.getEnabled(),[b]),j=Ct(s),{droppableRects:M,measureDroppableContainers:N,measuringScheduled:ie}=nt(re,{dragging:g,dependencies:[y.x,y.y],config:j.droppable}),F=et(v,_),I=(0,q.useMemo)(()=>D?P(D):null,[D]),L=Me(),z=it(F,j.draggable.measure);wt({activeNode:_==null?null:v.get(_),config:L.layoutShiftCompensation,initialRect:z,measure:j.draggable.measure});let V=ct(F,j.draggable.measure,z),H=ct(F?F.parentElement:null),U=(0,q.useRef)({activatorEvent:null,active:null,activeNode:F,collisionRect:null,collisions:null,droppableRects:M,draggableNodes:v,draggingNode:null,draggingNodeRect:null,droppableContainers:b,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),W=b.getNodeFor(U.current.over?.id),G=vt({measure:j.dragOverlay.measure}),ae=G.nodeRef.current??F,oe=g?G.rect??V:null,se=!!(G.nodeRef.current&&G.rect),ce=lt(se?null:V),le=ht(ae?C(ae):null),K=ut(g?W??F:null),fe=gt(K),pe=St(c,{transform:{x:y.x-ce.x,y:y.y-ce.y,scaleX:1,scaleY:1},activatorEvent:D,active:w,activeNodeRect:V,containerNodeRect:H,draggingNodeRect:oe,over:U.current.over,overlayNodeRect:G.rect,scrollableAncestors:K,scrollableAncestorRects:fe,windowRect:le}),me=I?B(I,y):null,he=dt(K),ge=ft(he),_e=ft(he,[V]),ve=B(pe,ge),be=oe?Ft(oe,pe):null,xe=w&&be?o({active:w,collisionRect:be,droppableRects:M,droppableContainers:re,pointerCoordinates:me}):null,Ce=ye(xe,`id`),[we,Te]=(0,q.useState)(null),Ee=Se(se?pe:B(pe,_e),we?.rect??null,V),De=(0,q.useRef)(null),Oe=(0,q.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(T.current==null)return;let i=v.get(T.current);if(!i)return;let a=e.nativeEvent,o=new n({active:T.current,activeNode:i,event:a,options:r,context:U,onAbort(e){if(!v.get(e))return;let{onDragAbort:t}=O.current,n={id:e};t?.(n),f({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!v.get(e))return;let{onDragPending:i}=O.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),f({type:`onDragPending`,event:a})},onStart(e){let t=T.current;if(t==null)return;let n=v.get(t);if(!n)return;let{onDragStart:r}=O.current,i={activatorEvent:a,active:{id:t,data:n.data,rect:S}};(0,Ot.unstable_batchedUpdates)(()=>{r?.(i),h(gn.Initializing),d({type:J.DragStart,initialCoordinates:e,active:t}),f({type:`onDragStart`,event:i}),E(De.current),te(a)})},onMove(e){d({type:J.DragMove,coordinates:e})},onEnd:s(J.DragEnd),onCancel:s(J.DragCancel)});De.current=o;function s(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:i}=U.current,o=null;if(t&&i){let{cancelDrop:s}=O.current;o={activatorEvent:a,active:t,collisions:n,delta:i,over:r},e===J.DragEnd&&typeof s==`function`&&await Promise.resolve(s(o))&&(e=J.DragCancel)}T.current=null,(0,Ot.unstable_batchedUpdates)(()=>{d({type:e}),h(gn.Uninitialized),Te(null),E(null),te(null),De.current=null;let t=e===J.DragEnd?`onDragEnd`:`onDragCancel`;if(o){let e=O.current[t];e?.(o),f({type:t,event:o})}})}}},[v]),ke=tt(a,(0,q.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=v.get(r);if(T.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},T.current=r,Oe(n,t))},[v,Oe]));pt(a),R(()=>{V&&m===gn.Initializing&&h(gn.Initialized)},[V,m]),(0,q.useEffect)(()=>{let{onDragMove:e}=O.current,{active:t,activatorEvent:n,collisions:r,over:i}=U.current;if(!t||!n)return;let a={active:t,activatorEvent:n,collisions:r,delta:{x:ve.x,y:ve.y},over:i};(0,Ot.unstable_batchedUpdates)(()=>{e?.(a),f({type:`onDragMove`,event:a})})},[ve.x,ve.y]),(0,q.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:i}=U.current;if(!e||T.current==null||!t||!i)return;let{onDragOver:a}=O.current,o=r.get(Ce),s=o&&o.rect.current?{id:o.id,rect:o.rect.current,data:o.data,disabled:o.disabled}:null,c={active:e,activatorEvent:t,collisions:n,delta:{x:i.x,y:i.y},over:s};(0,Ot.unstable_batchedUpdates)(()=>{Te(s),a?.(c),f({type:`onDragOver`,event:c})})},[Ce]),R(()=>{U.current={activatorEvent:D,active:w,activeNode:F,collisionRect:be,collisions:xe,droppableRects:M,draggableNodes:v,draggingNode:ae,draggingNodeRect:oe,droppableContainers:b,over:we,scrollableAncestors:K,scrollAdjustedTranslate:ve},S.current={initial:oe,translated:be}},[w,F,xe,be,v,ae,oe,M,b,we,K,ve]),Qe({...L,delta:y,draggingRect:be,pointerCoordinates:me,scrollableAncestors:K,scrollableAncestorRects:fe});let Ae=(0,q.useMemo)(()=>({active:w,activeNode:F,activeNodeRect:V,activatorEvent:D,collisions:xe,containerNodeRect:H,dragOverlay:G,draggableNodes:v,droppableContainers:b,droppableRects:M,over:we,measureDroppableContainers:N,scrollableAncestors:K,scrollableAncestorRects:fe,measuringConfiguration:j,measuringScheduled:ie,windowRect:le}),[w,F,V,D,xe,H,G,v,b,M,we,N,K,fe,j,ie,le]),je=(0,q.useMemo)(()=>({activatorEvent:D,activators:ke,active:w,activeNodeRect:V,ariaDescribedById:{draggable:k},dispatch:d,draggableNodes:v,over:we,measureDroppableContainers:N}),[D,ke,w,V,d,k,v,we,N]);return q.createElement(kt.Provider,{value:p},q.createElement(pn.Provider,{value:je},q.createElement(mn.Provider,{value:Ae},q.createElement(hn.Provider,{value:Ee},i)),q.createElement(xt,{disabled:n?.restoreFocus===!1})),q.createElement(de,{...n,hiddenTextDescribedById:k}));function Me(){let e=ee?.autoScrollEnabled===!1,t=typeof r==`object`?r.enabled===!1:r===!1,n=g&&!e&&!t;return typeof r==`object`?{...r,enabled:n}:{enabled:n}}}),vn=(0,q.createContext)(null),yn=`button`,bn=`Draggable`,xn=`Droppable`,Sn={timeout:25}})))()}function wn(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function Tn(e,t){return e.reduce((e,n,r)=>{let i=t.get(n);return i&&(e[r]=i),e},Array(e.length))}function En(e){return e!==null&&e>=0}function Dn(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function On(e){return typeof e==`boolean`?{draggable:e,droppable:e}:e}function kn(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return!r||!i&&!a?0:n<t?i?r.left-(i.left+i.width):a.left-(r.left+r.width):a?a.left-(r.left+r.width):r.left-(i.left+i.width)}function An(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return r?n<t?i?r.top-(i.top+i.height):a?a.top-(r.top+r.height):0:a?a.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}function jn(e){let{children:t,id:n,items:r,strategy:i=Bn,disabled:a=!1}=e,{active:o,dragOverlay:s,droppableRects:c,over:l,measureDroppableContainers:u}=Et(),d=A(Un,n),f=s.rect!==null,p=(0,$.useMemo)(()=>r.map(e=>typeof e==`object`&&`id`in e?e.id:e),[r]),m=o!=null,h=o?p.indexOf(o.id):-1,g=l?p.indexOf(l.id):-1,_=(0,$.useRef)(p),v=!Dn(p,_.current),y=g!==-1&&h===-1||v,b=On(a);R(()=>{v&&m&&u(p)},[v,p,m,u]),(0,$.useEffect)(()=>{_.current=p},[p]);let x=(0,$.useMemo)(()=>({activeIndex:h,containerId:d,disabled:b,disableTransforms:y,items:p,overIndex:g,useDragOverlay:f,sortedRects:Tn(p,c),strategy:i}),[h,d,b.draggable,b.droppable,y,p,g,c,f,i]);return $.createElement(Wn.Provider,{value:x},t)}function Mn(e){let{disabled:t,index:n,node:r,rect:i}=e,[a,o]=(0,$.useState)(null),s=(0,$.useRef)(n);return R(()=>{if(!t&&n!==s.current&&r.current){let e=i.current;if(e){let t=De(r.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&o(n)}}n!==s.current&&(s.current=n)},[t,n,r,i]),(0,$.useEffect)(()=>{a&&o(null)},[a]),a}function Nn(e){let{animateLayoutChanges:t=Kn,attributes:n,disabled:r,data:i,getNewIndex:a=Gn,id:o,strategy:s,resizeObserverConfig:c,transition:l=qn}=e,{items:u,containerId:d,activeIndex:f,disabled:p,disableTransforms:m,sortedRects:h,overIndex:g,useDragOverlay:_,strategy:v}=(0,$.useContext)(Wn),y=Pn(r,p),x=u.indexOf(o),S=(0,$.useMemo)(()=>({sortable:{containerId:d,index:x,items:u},...i}),[d,i,x,u]),C=(0,$.useMemo)(()=>u.slice(u.indexOf(o)),[u,o]),{rect:w,node:T,isOver:ee,setNodeRef:E}=Dt({id:o,data:S,disabled:y.droppable,resizeObserverConfig:{updateMeasurementsFor:C,...c}}),{active:D,activatorEvent:te,activeNodeRect:ne,attributes:O,setNodeRef:k,listeners:re,isDragging:A,over:j,setActivatorNodeRef:M,transform:ie}=Tt({id:o,data:S,attributes:{...Xn,...n},disabled:y.draggable}),P=b(E,k),F=!!D,I=F&&!m&&En(f)&&En(g),L=!_&&A,R=I?(L&&I?ie:null)??(s??v)({rects:h,activeNodeRect:ne,activeIndex:f,overIndex:g,index:x}):null,z=En(f)&&En(g)?a({id:o,items:u,activeIndex:f,overIndex:g}):x,B=D?.id,V=(0,$.useRef)({activeId:B,items:u,newIndex:z,containerId:d}),U=u!==V.current.items,W=t({active:D,containerId:d,isDragging:A,isSorting:F,id:o,index:x,items:u,newIndex:V.current.newIndex,previousItems:V.current.items,previousContainerId:V.current.containerId,transition:l,wasDragging:V.current.activeId!=null}),G=Mn({disabled:!W,index:x,node:T,rect:w});return(0,$.useEffect)(()=>{F&&V.current.newIndex!==z&&(V.current.newIndex=z),d!==V.current.containerId&&(V.current.containerId=d),u!==V.current.items&&(V.current.items=u)},[F,z,d,u]),(0,$.useEffect)(()=>{if(B===V.current.activeId)return;if(B!=null&&V.current.activeId==null){V.current.activeId=B;return}let e=setTimeout(()=>{V.current.activeId=B},50);return()=>clearTimeout(e)},[B]),{active:D,activeIndex:f,attributes:O,data:S,rect:w,index:x,newIndex:z,items:u,isOver:ee,isSorting:F,isDragging:A,listeners:re,node:T,overIndex:g,over:j,setNodeRef:P,setActivatorNodeRef:M,setDroppableNodeRef:E,setDraggableNodeRef:k,transform:G??R,transition:ae()};function ae(){if(G||U&&V.current.newIndex===x)return Yn;if(!(L&&!N(te)||!l)&&(F||W))return H.Transition.toString({...l,property:Jn})}}function Pn(e,t){return typeof e==`boolean`?{draggable:e,droppable:!1}:{draggable:e?.draggable??t.draggable,droppable:e?.droppable??t.droppable}}function Fn(e){if(!e)return!1;let t=e.data.current;return!!(t&&`sortable`in t&&typeof t.sortable==`object`&&`containerId`in t.sortable&&`items`in t.sortable&&`index`in t.sortable)}function In(e,t){return!Fn(e)||!Fn(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function Ln(e,t){return!Fn(e)||!Fn(t)||!In(e,t)?!1:e.data.current.sortable.index<t.data.current.sortable.index}var $,Rn,zn,Bn,Vn,Hn,Un,Wn,Gn,Kn,qn,Jn,Yn,Xn,Zn,Qn;function $n(){return($n=t((()=>{$=e(n()),Cn(),W(),Rn={scaleX:1,scaleY:1},zn=e=>{let{rects:t,activeNodeRect:n,activeIndex:r,overIndex:i,index:a}=e,o=t[r]??n;if(!o)return null;let s=kn(t,a,r);if(a===r){let e=t[i];return e?{x:r<i?e.left+e.width-(o.left+o.width):e.left-o.left,y:0,...Rn}:null}return a>r&&a<=i?{x:-o.width-s,y:0,...Rn}:a<r&&a>=i?{x:o.width+s,y:0,...Rn}:{x:0,y:0,...Rn}},Bn=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e,a=wn(t,r,n),o=t[i],s=a[i];return!s||!o?null:{x:s.left-o.left,y:s.top-o.top,scaleX:s.width/o.width,scaleY:s.height/o.height}},Vn={scaleX:1,scaleY:1},Hn=e=>{let{activeIndex:t,activeNodeRect:n,index:r,rects:i,overIndex:a}=e,o=i[t]??n;if(!o)return null;if(r===t){let e=i[a];return e?{x:0,y:t<a?e.top+e.height-(o.top+o.height):e.top-o.top,...Vn}:null}let s=An(i,r,t);return r>t&&r<=a?{x:0,y:-o.height-s,...Vn}:r<t&&r>=a?{x:0,y:o.height+s,...Vn}:{x:0,y:0,...Vn}},Un=`Sortable`,Wn=$.createContext({activeIndex:-1,containerId:Un,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:Bn,disabled:{draggable:!1,droppable:!1}}),Gn=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return wn(n,r,i).indexOf(t)},Kn=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:i,items:a,newIndex:o,previousItems:s,previousContainerId:c,transition:l}=e;return!l||!r||s!==a&&i===o?!1:n?!0:o!==i&&t===c},qn={duration:200,easing:`ease`},Jn=`transform`,Yn=H.Transition.toString({property:Jn,duration:0,easing:`linear`}),Xn={roleDescription:`sortable`},Zn=[Q.Down,Q.Right,Q.Up,Q.Left],Qn=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:i,droppableContainers:a,over:o,scrollableAncestors:s}}=t;if(Zn.includes(e.code)){if(e.preventDefault(),!n||!r)return;let t=[];a.getEnabled().forEach(n=>{if(!n||n!=null&&n.disabled)return;let a=i.get(n.id);if(a)switch(e.code){case Q.Down:r.top<a.top&&t.push(n);break;case Q.Up:r.top>a.top&&t.push(n);break;case Q.Left:r.left>a.left&&t.push(n);break;case Q.Right:r.left<a.left&&t.push(n)}});let c=Nt({active:n,collisionRect:r,droppableRects:i,droppableContainers:t,pointerCoordinates:null}),l=ye(c,`id`);if(l===o?.id&&c.length>1&&(l=c[1].id),l!=null){let e=a.get(n.id),t=a.get(l),o=t?i.get(t.id):null,c=t?.node.current;if(c&&o&&e&&t){let n=Me(c).some((e,t)=>s[t]!==e),i=In(e,t),a=Ln(e,t),l=n||!i?{x:0,y:0}:{x:a?r.width-o.width:0,y:a?r.height-o.height:0},u={x:o.left,y:o.top};return l.x&&l.y?u:V(u,l)}}}}})))()}function er(e=6){let t=typeof e==`number`?{activationDistance:e}:e,n=t.activationDistance??6,r=pe(Kt,{activationConstraint:{distance:n}}),i=pe(Yt,{activationConstraint:{distance:n}}),a=pe(Zt,{activationConstraint:{delay:t.touchActivation?.delay??0,tolerance:t.touchActivation?.tolerance??n}}),o=pe(Ut,{coordinateGetter:t.keyboardCoordinateGetter??Qn,keyboardCodes:t.keyboardCodes});return me(t.touchActivation?i:r,t.touchActivation?a:void 0,o)}function tr({options:e,selectedIndex:t,open:n,onOpenChange:r,getOptionDisabled:i,onSelect:y,disabled:b,placement:x=`bottom-start`,placementStrategy:S=`flip`,closeOnSelect:C=!0,focusFloatingOnOpen:w=!0,allowOpenWithoutOptions:T=!1,restoreFocusOnClose:ee=!0,resolveFloatingSize:E}){let D=(0,nr.useRef)([]),[te,ne]=(0,nr.useState)(!1),O=n??te,k=r??ne,[re,A]=(0,nr.useState)(t>=0?t:o(e,i)),[j]=(0,nr.useState)(()=>({})),M=n=>e.length===0?-1:n>=0&&n<e.length&&!i?.(e[n])?n:t>=0&&t<e.length&&!i?.(e[t])?t:o(e,i),N=M(re),ie=S===`auto`?f({allowedPlacements:ar,crossAxis:!1,padding:8}):p({padding:8}),{refs:P,floatingStyles:F,context:I,update:L}=u({open:O,onOpenChange:k,placement:x,transform:!1,strategy:`fixed`,middleware:[v(4),ie,h({padding:8}),m({padding:8,apply({availableWidth:e,availableHeight:t,rects:n,elements:r}){let i=r.floating.ownerDocument.documentElement,a=r.floating.style,o=ir.get(j)?.({availableWidth:e,availableHeight:t,viewportWidth:i.clientWidth,viewportHeight:i.clientHeight,referenceWidth:n.reference.width,referenceHeight:n.reference.height}),s=rr.get(r.floating);for(let e of s?.customProperties??[])a.removeProperty(e);for(let[e,t]of s?.standardProperties??[])a[e]=t;a.minWidth=`${n.reference.width}px`,a.maxHeight=`${Math.max(t,120)}px`;let c=new Set,l=new Map;for(let[e,t]of Object.entries(o??{})){if(e.startsWith(`--`)){let n=e;t!==void 0&&(a.setProperty(n,t),c.add(n));continue}if(t!==void 0){let n=e;l.set(n,a[n]),a[n]=t}}rr.set(r.floating,{customProperties:c,standardProperties:l})}})],whileElementsMounted:l}),R=E!==void 0;(0,nr.useLayoutEffect)(()=>(E?ir.set(j,E):ir.delete(j),()=>{ir.delete(j)}),[j,E]),(0,nr.useLayoutEffect)(()=>{!O||!R||L()},[R,e.length,O,L]);let z=g(I),B=_(I,{role:`listbox`}),{getFloatingProps:V}=d([z,B]),H=T||e.length>0;(0,nr.useEffect)(()=>{!O||N<0||D.current[N]?.scrollIntoView({block:`nearest`})},[N,O]),(0,nr.useEffect)(()=>{!O||!w||requestAnimationFrame(()=>{P.floating.current?.focus()})},[w,O,P]);let U=()=>{if(k(!1),ee){let e=P.domReference.current;e instanceof HTMLElement&&e.focus()}},W=t=>{b||!H||(e.length>0&&A(M(t)),k(!0))},G=()=>{W(t>=0?t:o(e,i))},ae=()=>{if(O){U();return}G()},oe=e=>{i?.(e)||(y?.(e),C&&U())},se=()=>{if(N<0)return;let t=e[N];t!==void 0&&oe(t)},ce=()=>{A(o(e,i))},le=()=>{A(s(e,i))},K=n=>{if(!b){if(n.key===`ArrowDown`){if(n.preventDefault(),!O){W(t>=0?t:o(e,i));return}A(t=>c(e,M(t),1,i));return}if(n.key===`ArrowUp`){if(n.preventDefault(),!O){W(t>=0?t:s(e,i));return}A(t=>c(e,M(t),-1,i));return}if(n.key===`Home`&&O){n.preventDefault(),ce();return}if(n.key===`End`&&O){n.preventDefault(),le();return}if(n.key===`Escape`&&O){n.preventDefault(),U();return}n.key===`Tab`&&O&&U()}},ue=t=>{if(t.target!==t.currentTarget){t.key===`Escape`&&(t.preventDefault(),U());return}if(t.key===`ArrowDown`){t.preventDefault(),A(t=>c(e,M(t),1,i));return}if(t.key===`ArrowUp`){t.preventDefault(),A(t=>c(e,M(t),-1,i));return}if(t.key===`Home`){t.preventDefault(),ce();return}if(t.key===`End`){t.preventDefault(),le();return}if(!a(t,se)){if(t.key===`Escape`){t.preventDefault(),U();return}t.key===`Tab`&&U()}},de=(e,t)=>`${e}-option-${t}`;return{open:O,setOpen:k,activeIndex:N,refs:P,context:I,floatingStyles:F,getFloatingProps:V,setReference:P.setReference,setFloating:P.setFloating,setOptionRef:(e,t)=>{D.current[e]=t},close:U,openList:G,openWithIndex:W,toggleOpen:ae,selectOption:oe,selectActiveOption:se,handleReferenceKeyDown:K,handleFloatingKeyDown:ue,getOptionId:de,getActiveOptionId:e=>N>=0?de(e,N):void 0}}var nr,rr,ir,ar;function or(){return(or=t((()=>{i(),nr=n(),Cn(),$n(),y(),rr=new WeakMap,ir=new WeakMap,ar=[`bottom-start`,`bottom-end`,`top-start`,`top-end`,`left-start`,`left-end`,`right-start`,`right-end`]})))()}export{zn as a,Nn as c,Mt as d,Cn as f,jn as i,Hn as l,W as m,er as n,$n as o,H as p,or as r,Bn as s,tr as t,_n as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./iframe-BmGorvhi.js";e();
|