@notectl/core 2.1.2 → 2.2.1
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/AlignmentPlugin-BLzRjrUl.mjs +2 -0
- package/dist/chunks/AlignmentPlugin-BLzRjrUl.mjs.map +1 -0
- package/dist/chunks/AttrRegistry-CRnXTPha.mjs +2 -0
- package/dist/chunks/AttrRegistry-CRnXTPha.mjs.map +1 -0
- package/dist/chunks/AttributedMarkCommands-CxhdUsuE.mjs +2 -0
- package/dist/chunks/AttributedMarkCommands-CxhdUsuE.mjs.map +1 -0
- package/dist/chunks/BidiIsolationPlugin-DNPXe5ga.mjs +2 -0
- package/dist/chunks/BidiIsolationPlugin-DNPXe5ga.mjs.map +1 -0
- package/dist/chunks/BlockInsertion-C7jFEeYB.mjs +2 -0
- package/dist/chunks/BlockInsertion-C7jFEeYB.mjs.map +1 -0
- package/dist/chunks/BlockTypePickerRegistry-U4uY7-lN.mjs +2 -0
- package/dist/chunks/BlockTypePickerRegistry-U4uY7-lN.mjs.map +1 -0
- package/dist/chunks/BlockquotePlugin-YgXcV4mT.mjs +2 -0
- package/dist/chunks/BlockquotePlugin-YgXcV4mT.mjs.map +1 -0
- package/dist/chunks/CaretNavigationPlugin-P6OYaTSq.mjs +2 -0
- package/dist/chunks/CaretNavigationPlugin-P6OYaTSq.mjs.map +1 -0
- package/dist/chunks/CodeBlockPlugin-ChPv3Edf.mjs +2 -0
- package/dist/chunks/CodeBlockPlugin-ChPv3Edf.mjs.map +1 -0
- package/dist/chunks/ColorGrid-D5-teEjD.mjs +2 -0
- package/dist/chunks/ColorGrid-D5-teEjD.mjs.map +1 -0
- package/dist/chunks/ColorPickerPopup-_Gp09pdx.mjs +2 -0
- package/dist/chunks/ColorPickerPopup-_Gp09pdx.mjs.map +1 -0
- package/dist/chunks/ColorValidation-okAvytHQ.mjs +2 -0
- package/dist/chunks/ColorValidation-okAvytHQ.mjs.map +1 -0
- package/dist/chunks/CommandHelpers-NV80Ff1G.mjs +2 -0
- package/dist/chunks/CommandHelpers-NV80Ff1G.mjs.map +1 -0
- package/dist/chunks/Commands-ixGhPiRG.mjs +2 -0
- package/dist/chunks/Commands-ixGhPiRG.mjs.map +1 -0
- package/dist/chunks/Decoration-DZK7hrL1.mjs +2 -0
- package/dist/chunks/Decoration-DZK7hrL1.mjs.map +1 -0
- package/dist/chunks/DirectionDetection-7HmMUZrx.mjs +2 -0
- package/dist/chunks/DirectionDetection-7HmMUZrx.mjs.map +1 -0
- package/dist/chunks/DirectionIcons-DhRvPVoz.mjs +2 -0
- package/dist/chunks/DirectionIcons-DhRvPVoz.mjs.map +1 -0
- package/dist/chunks/Document-znhIcvM9.mjs +2 -0
- package/dist/chunks/Document-znhIcvM9.mjs.map +1 -0
- package/dist/chunks/DocumentParser-DCjOW3us.mjs +2 -0
- package/dist/chunks/DocumentParser-DCjOW3us.mjs.map +1 -0
- package/dist/chunks/FontPlugin-COYtG1Uo.mjs +2 -0
- package/dist/chunks/FontPlugin-COYtG1Uo.mjs.map +1 -0
- package/dist/chunks/FontSizePlugin-CLcfdTm3.mjs +2 -0
- package/dist/chunks/FontSizePlugin-CLcfdTm3.mjs.map +1 -0
- package/dist/chunks/FormulaPlugin-DphHU4Rn.mjs +2 -0
- package/dist/chunks/FormulaPlugin-DphHU4Rn.mjs.map +1 -0
- package/dist/chunks/GapCursorNavigation-Bkuu_Ek8.mjs +2 -0
- package/dist/chunks/GapCursorNavigation-Bkuu_Ek8.mjs.map +1 -0
- package/dist/chunks/GapCursorPlugin-CRDmQEi1.mjs +2 -0
- package/dist/chunks/GapCursorPlugin-CRDmQEi1.mjs.map +1 -0
- package/dist/chunks/HardBreakPlugin-Cr6dMQ-H.mjs +2 -0
- package/dist/chunks/HardBreakPlugin-Cr6dMQ-H.mjs.map +1 -0
- package/dist/chunks/HeadingPlugin-3NL4ARPp.mjs +2 -0
- package/dist/chunks/HeadingPlugin-3NL4ARPp.mjs.map +1 -0
- package/dist/chunks/HighlightPlugin-dHxnAuoW.mjs +2 -0
- package/dist/chunks/HighlightPlugin-dHxnAuoW.mjs.map +1 -0
- package/dist/chunks/HorizontalRulePlugin-BYPaI4TR.mjs +2 -0
- package/dist/chunks/HorizontalRulePlugin-BYPaI4TR.mjs.map +1 -0
- package/dist/chunks/ImagePlugin-kgokm-a1.mjs +2 -0
- package/dist/chunks/ImagePlugin-kgokm-a1.mjs.map +1 -0
- package/dist/chunks/InlineCodePlugin-Bl1jyDwk.mjs +2 -0
- package/dist/chunks/InlineCodePlugin-Bl1jyDwk.mjs.map +1 -0
- package/dist/chunks/InlineStyleMarkSpec-Cc-b1tlm.mjs +2 -0
- package/dist/chunks/InlineStyleMarkSpec-Cc-b1tlm.mjs.map +1 -0
- package/dist/chunks/KeyboardNav-DZXdTg-_.mjs +2 -0
- package/dist/chunks/KeyboardNav-DZXdTg-_.mjs.map +1 -0
- package/dist/chunks/LinkPlugin-Dmcfo3On.mjs +2 -0
- package/dist/chunks/LinkPlugin-Dmcfo3On.mjs.map +1 -0
- package/dist/chunks/ListPlugin-Ch-5CsFc.mjs +2 -0
- package/dist/chunks/ListPlugin-Ch-5CsFc.mjs.map +1 -0
- package/dist/chunks/NavigationQueries-3zTaNBlp.mjs +2 -0
- package/dist/chunks/NavigationQueries-3zTaNBlp.mjs.map +1 -0
- package/dist/chunks/NodeResolver-BplmzA7c.mjs +2 -0
- package/dist/chunks/NodeResolver-BplmzA7c.mjs.map +1 -0
- package/dist/chunks/NodeSelectionCommands-dUmbRoZ2.mjs +2 -0
- package/dist/chunks/NodeSelectionCommands-dUmbRoZ2.mjs.map +1 -0
- package/dist/chunks/NodeSpecPatching-DToX09gc.mjs +2 -0
- package/dist/chunks/NodeSpecPatching-DToX09gc.mjs.map +1 -0
- package/dist/chunks/Platform-wPvKFB9m.mjs +2 -0
- package/dist/chunks/Platform-wPvKFB9m.mjs.map +1 -0
- package/dist/chunks/PluginHelpers-C3aCCGfX.mjs +2 -0
- package/dist/chunks/PluginHelpers-C3aCCGfX.mjs.map +1 -0
- package/dist/chunks/PopupKeyboardPatterns-ZdAQB78m.mjs +2 -0
- package/dist/chunks/PopupKeyboardPatterns-ZdAQB78m.mjs.map +1 -0
- package/dist/chunks/PopupManager-DsT1uRWi.mjs +2 -0
- package/dist/chunks/PopupManager-DsT1uRWi.mjs.map +1 -0
- package/dist/chunks/PopupPositioning-BEnz90Oh.mjs +2 -0
- package/dist/chunks/PopupPositioning-BEnz90Oh.mjs.map +1 -0
- package/dist/chunks/PrintPlugin-Bq-Z14K1.mjs +2 -0
- package/dist/chunks/PrintPlugin-Bq-Z14K1.mjs.map +1 -0
- package/dist/chunks/PrintTypes-DA0Cc--M.mjs +2 -0
- package/dist/chunks/PrintTypes-DA0Cc--M.mjs.map +1 -0
- package/dist/chunks/RangeIterator-Cl4_k8cx.mjs +2 -0
- package/dist/chunks/RangeIterator-Cl4_k8cx.mjs.map +1 -0
- package/dist/chunks/SelectionSync-DCJpNFat.mjs +2 -0
- package/dist/chunks/SelectionSync-DCJpNFat.mjs.map +1 -0
- package/dist/chunks/ShortcutFormatting-DZK70CN9.mjs +2 -0
- package/dist/chunks/ShortcutFormatting-DZK70CN9.mjs.map +1 -0
- package/dist/chunks/SimpleMark-CezTJnXh.mjs +2 -0
- package/dist/chunks/SimpleMark-CezTJnXh.mjs.map +1 -0
- package/dist/chunks/SmartPastePlugin-DlApY6Vw.mjs +2 -0
- package/dist/chunks/SmartPastePlugin-DlApY6Vw.mjs.map +1 -0
- package/dist/chunks/StrikethroughPlugin-BuFDABvz.mjs +2 -0
- package/dist/chunks/StrikethroughPlugin-BuFDABvz.mjs.map +1 -0
- package/dist/chunks/StyleRuntime-Bwde5icB.mjs +2 -0
- package/dist/chunks/StyleRuntime-Bwde5icB.mjs.map +1 -0
- package/dist/chunks/SuperSubPlugin-CiLJ7i4s.mjs +2 -0
- package/dist/chunks/SuperSubPlugin-CiLJ7i4s.mjs.map +1 -0
- package/dist/chunks/SyntaxTokenTypes-C9dGwufi.mjs +2 -0
- package/dist/chunks/SyntaxTokenTypes-C9dGwufi.mjs.map +1 -0
- package/dist/chunks/TablePlugin-5ru-y-YX.mjs +2 -0
- package/dist/chunks/TablePlugin-5ru-y-YX.mjs.map +1 -0
- package/dist/chunks/TextColorPlugin-Vz-Nz8aH.mjs +2 -0
- package/dist/chunks/TextColorPlugin-Vz-Nz8aH.mjs.map +1 -0
- package/dist/chunks/TextDirectionAutoPlugin-Behl6KMe.mjs +2 -0
- package/dist/chunks/TextDirectionAutoPlugin-Behl6KMe.mjs.map +1 -0
- package/dist/chunks/TextDirectionPlugin-C3h1n-aA.mjs +2 -0
- package/dist/chunks/TextDirectionPlugin-C3h1n-aA.mjs.map +1 -0
- package/dist/chunks/TextDirectionService-DRfeQnF6.mjs +2 -0
- package/dist/chunks/TextDirectionService-DRfeQnF6.mjs.map +1 -0
- package/dist/chunks/TextFormattingPlugin-D_nRMeBn.mjs +2 -0
- package/dist/chunks/TextFormattingPlugin-D_nRMeBn.mjs.map +1 -0
- package/dist/chunks/ToolbarPlugin-CSMSgjPM.mjs +2 -0
- package/dist/chunks/ToolbarPlugin-CSMSgjPM.mjs.map +1 -0
- package/dist/chunks/TypedKeys-E3jOGByL.mjs +2 -0
- package/dist/chunks/TypedKeys-E3jOGByL.mjs.map +1 -0
- package/dist/chunks/VideoPlugin-BUCGIYXr.mjs +2 -0
- package/dist/chunks/VideoPlugin-BUCGIYXr.mjs.map +1 -0
- package/dist/chunks/WordBoundary-CYDAtEks.mjs +2 -0
- package/dist/chunks/WordBoundary-CYDAtEks.mjs.map +1 -0
- package/dist/chunks/XmlDetector-DxBGXqua.mjs +2 -0
- package/dist/chunks/XmlDetector-DxBGXqua.mjs.map +1 -0
- package/dist/chunks/XmlPatterns-BiHS8w3k.mjs +2 -0
- package/dist/chunks/XmlPatterns-BiHS8w3k.mjs.map +1 -0
- package/dist/chunks/XmlSupport-B_F65M8G.mjs +2 -0
- package/dist/chunks/XmlSupport-B_F65M8G.mjs.map +1 -0
- package/dist/chunks/ar-B38MlRRN.mjs +2 -0
- package/dist/chunks/ar-B38MlRRN.mjs.map +1 -0
- package/dist/chunks/ar-BIeE0C5A.mjs +2 -0
- package/dist/chunks/ar-BIeE0C5A.mjs.map +1 -0
- package/dist/chunks/ar-BK0rFxF_.mjs +2 -0
- package/dist/chunks/ar-BK0rFxF_.mjs.map +1 -0
- package/dist/chunks/ar-BK4O36ep.mjs +2 -0
- package/dist/chunks/ar-BK4O36ep.mjs.map +1 -0
- package/dist/chunks/ar-BNUWuZe3.mjs +2 -0
- package/dist/chunks/ar-BNUWuZe3.mjs.map +1 -0
- package/dist/chunks/ar-BSXH8acw.mjs +2 -0
- package/dist/chunks/ar-BSXH8acw.mjs.map +1 -0
- package/dist/chunks/ar-BY8yNlGe.mjs +2 -0
- package/dist/chunks/ar-BY8yNlGe.mjs.map +1 -0
- package/dist/chunks/ar-BgHkduPE.mjs +2 -0
- package/dist/chunks/ar-BgHkduPE.mjs.map +1 -0
- package/dist/chunks/ar-BnfWtLhK.mjs +2 -0
- package/dist/chunks/ar-BnfWtLhK.mjs.map +1 -0
- package/dist/chunks/ar-BwCPhCf6.mjs +2 -0
- package/dist/chunks/ar-BwCPhCf6.mjs.map +1 -0
- package/dist/chunks/ar-Bymjd9Z_.mjs +2 -0
- package/dist/chunks/ar-Bymjd9Z_.mjs.map +1 -0
- package/dist/chunks/ar-CKPpdJ7F.mjs +2 -0
- package/dist/chunks/ar-CKPpdJ7F.mjs.map +1 -0
- package/dist/chunks/ar-C_ir5Uf4.mjs +2 -0
- package/dist/chunks/ar-C_ir5Uf4.mjs.map +1 -0
- package/dist/chunks/ar-CkE6GDVA.mjs +2 -0
- package/dist/chunks/ar-CkE6GDVA.mjs.map +1 -0
- package/dist/chunks/ar-ClgA1KQM.mjs +2 -0
- package/dist/chunks/ar-ClgA1KQM.mjs.map +1 -0
- package/dist/chunks/ar-Cm1DOK74.mjs +2 -0
- package/dist/chunks/ar-Cm1DOK74.mjs.map +1 -0
- package/dist/chunks/ar-CseGhQtS.mjs +2 -0
- package/dist/chunks/ar-CseGhQtS.mjs.map +1 -0
- package/dist/chunks/ar-D0bqkviV.mjs +2 -0
- package/dist/chunks/ar-D0bqkviV.mjs.map +1 -0
- package/dist/chunks/ar-D5d185g0.mjs +2 -0
- package/dist/chunks/ar-D5d185g0.mjs.map +1 -0
- package/dist/chunks/ar-DSwUyX47.mjs +2 -0
- package/dist/chunks/ar-DSwUyX47.mjs.map +1 -0
- package/dist/chunks/ar-DfSNWZX7.mjs +2 -0
- package/dist/chunks/ar-DfSNWZX7.mjs.map +1 -0
- package/dist/chunks/ar-Dghtfs46.mjs +2 -0
- package/dist/chunks/ar-Dghtfs46.mjs.map +1 -0
- package/dist/chunks/ar-DvNKBrJd.mjs +2 -0
- package/dist/chunks/ar-DvNKBrJd.mjs.map +1 -0
- package/dist/chunks/ar-KNULRI8r.mjs +2 -0
- package/dist/chunks/ar-KNULRI8r.mjs.map +1 -0
- package/dist/chunks/ar-NtGRavHz.mjs +2 -0
- package/dist/chunks/ar-NtGRavHz.mjs.map +1 -0
- package/dist/chunks/ar-Y9KjJLX8.mjs +2 -0
- package/dist/chunks/ar-Y9KjJLX8.mjs.map +1 -0
- package/dist/chunks/ar-odM5gkvw.mjs +2 -0
- package/dist/chunks/ar-odM5gkvw.mjs.map +1 -0
- package/dist/chunks/color-picker-C89H4SVX.mjs +2 -0
- package/dist/chunks/color-picker-C89H4SVX.mjs.map +1 -0
- package/dist/chunks/de-B1TXiyll.mjs +2 -0
- package/dist/chunks/de-B1TXiyll.mjs.map +1 -0
- package/dist/chunks/de-BDRaxLyi.mjs +2 -0
- package/dist/chunks/de-BDRaxLyi.mjs.map +1 -0
- package/dist/chunks/de-BGOpZ8Ls.mjs +2 -0
- package/dist/chunks/de-BGOpZ8Ls.mjs.map +1 -0
- package/dist/chunks/de-BfZ5qXWz.mjs +2 -0
- package/dist/chunks/de-BfZ5qXWz.mjs.map +1 -0
- package/dist/chunks/de-BibufNIa.mjs +2 -0
- package/dist/chunks/de-BibufNIa.mjs.map +1 -0
- package/dist/chunks/de-BkZqCmzL.mjs +2 -0
- package/dist/chunks/de-BkZqCmzL.mjs.map +1 -0
- package/dist/chunks/de-BzRd2oyR.mjs +2 -0
- package/dist/chunks/de-BzRd2oyR.mjs.map +1 -0
- package/dist/chunks/de-C4gnHDmk.mjs +2 -0
- package/dist/chunks/de-C4gnHDmk.mjs.map +1 -0
- package/dist/chunks/de-C4iw9SEp.mjs +2 -0
- package/dist/chunks/de-C4iw9SEp.mjs.map +1 -0
- package/dist/chunks/de-CLWzcDoW.mjs +2 -0
- package/dist/chunks/de-CLWzcDoW.mjs.map +1 -0
- package/dist/chunks/de-Cbv0otYM.mjs +2 -0
- package/dist/chunks/de-Cbv0otYM.mjs.map +1 -0
- package/dist/chunks/de-Cinp7zmo.mjs +2 -0
- package/dist/chunks/de-Cinp7zmo.mjs.map +1 -0
- package/dist/chunks/de-CvnyjI_X.mjs +2 -0
- package/dist/chunks/de-CvnyjI_X.mjs.map +1 -0
- package/dist/chunks/de-DCx3Shj3.mjs +2 -0
- package/dist/chunks/de-DCx3Shj3.mjs.map +1 -0
- package/dist/chunks/de-Dav2GzjV.mjs +2 -0
- package/dist/chunks/de-Dav2GzjV.mjs.map +1 -0
- package/dist/chunks/de-Dc7GRbWc.mjs +2 -0
- package/dist/chunks/de-Dc7GRbWc.mjs.map +1 -0
- package/dist/chunks/de-DdntlpT3.mjs +2 -0
- package/dist/chunks/de-DdntlpT3.mjs.map +1 -0
- package/dist/chunks/de-DefykdF-.mjs +2 -0
- package/dist/chunks/de-DefykdF-.mjs.map +1 -0
- package/dist/chunks/de-DfQQIP8Y.mjs +2 -0
- package/dist/chunks/de-DfQQIP8Y.mjs.map +1 -0
- package/dist/chunks/de-DkcKDkbA.mjs +2 -0
- package/dist/chunks/de-DkcKDkbA.mjs.map +1 -0
- package/dist/chunks/de-DqGfLfeV.mjs +2 -0
- package/dist/chunks/de-DqGfLfeV.mjs.map +1 -0
- package/dist/chunks/de-DudqIJho.mjs +2 -0
- package/dist/chunks/de-DudqIJho.mjs.map +1 -0
- package/dist/chunks/de-LCXA2xWj.mjs +2 -0
- package/dist/chunks/de-LCXA2xWj.mjs.map +1 -0
- package/dist/chunks/de-YygmrxGp.mjs +2 -0
- package/dist/chunks/de-YygmrxGp.mjs.map +1 -0
- package/dist/chunks/de-asI3UlFG.mjs +2 -0
- package/dist/chunks/de-asI3UlFG.mjs.map +1 -0
- package/dist/chunks/de-kvMvD3AJ.mjs +2 -0
- package/dist/chunks/de-kvMvD3AJ.mjs.map +1 -0
- package/dist/chunks/de-pnfTnS03.mjs +2 -0
- package/dist/chunks/de-pnfTnS03.mjs.map +1 -0
- package/dist/chunks/es-4tbAR0If.mjs +2 -0
- package/dist/chunks/es-4tbAR0If.mjs.map +1 -0
- package/dist/chunks/es-B9z2Xwj0.mjs +2 -0
- package/dist/chunks/es-B9z2Xwj0.mjs.map +1 -0
- package/dist/chunks/es-BJxjRQSg.mjs +2 -0
- package/dist/chunks/es-BJxjRQSg.mjs.map +1 -0
- package/dist/chunks/es-BSyxBRjn.mjs +2 -0
- package/dist/chunks/es-BSyxBRjn.mjs.map +1 -0
- package/dist/chunks/es-Bcpq2xfU.mjs +2 -0
- package/dist/chunks/es-Bcpq2xfU.mjs.map +1 -0
- package/dist/chunks/es-BhUjc8mO.mjs +2 -0
- package/dist/chunks/es-BhUjc8mO.mjs.map +1 -0
- package/dist/chunks/es-Bm7hoJSI.mjs +2 -0
- package/dist/chunks/es-Bm7hoJSI.mjs.map +1 -0
- package/dist/chunks/es-C0E-lFIC.mjs +2 -0
- package/dist/chunks/es-C0E-lFIC.mjs.map +1 -0
- package/dist/chunks/es-C2wBBQ7N.mjs +2 -0
- package/dist/chunks/es-C2wBBQ7N.mjs.map +1 -0
- package/dist/chunks/es-C9vhYpfP.mjs +2 -0
- package/dist/chunks/es-C9vhYpfP.mjs.map +1 -0
- package/dist/chunks/es-Cgslt0Hp.mjs +2 -0
- package/dist/chunks/es-Cgslt0Hp.mjs.map +1 -0
- package/dist/chunks/es-CksXDFxg.mjs +2 -0
- package/dist/chunks/es-CksXDFxg.mjs.map +1 -0
- package/dist/chunks/es-CnQUZlfY.mjs +2 -0
- package/dist/chunks/es-CnQUZlfY.mjs.map +1 -0
- package/dist/chunks/es-CrRNOn2Q.mjs +2 -0
- package/dist/chunks/es-CrRNOn2Q.mjs.map +1 -0
- package/dist/chunks/es-D0427MIH.mjs +2 -0
- package/dist/chunks/es-D0427MIH.mjs.map +1 -0
- package/dist/chunks/es-D19xfXus.mjs +2 -0
- package/dist/chunks/es-D19xfXus.mjs.map +1 -0
- package/dist/chunks/es-Dk6lCcOt.mjs +2 -0
- package/dist/chunks/es-Dk6lCcOt.mjs.map +1 -0
- package/dist/chunks/es-Dls_xPCW.mjs +2 -0
- package/dist/chunks/es-Dls_xPCW.mjs.map +1 -0
- package/dist/chunks/es-DrcsyDvI.mjs +2 -0
- package/dist/chunks/es-DrcsyDvI.mjs.map +1 -0
- package/dist/chunks/es-DwKejbO9.mjs +2 -0
- package/dist/chunks/es-DwKejbO9.mjs.map +1 -0
- package/dist/chunks/es-NcrWuNe1.mjs +2 -0
- package/dist/chunks/es-NcrWuNe1.mjs.map +1 -0
- package/dist/chunks/es-RaZerssd.mjs +2 -0
- package/dist/chunks/es-RaZerssd.mjs.map +1 -0
- package/dist/chunks/es-TIjHCFNF.mjs +2 -0
- package/dist/chunks/es-TIjHCFNF.mjs.map +1 -0
- package/dist/chunks/es-eZcDkBb-.mjs +2 -0
- package/dist/chunks/es-eZcDkBb-.mjs.map +1 -0
- package/dist/chunks/es-j_-KW9-4.mjs +2 -0
- package/dist/chunks/es-j_-KW9-4.mjs.map +1 -0
- package/dist/chunks/es-kGLwn8EB.mjs +2 -0
- package/dist/chunks/es-kGLwn8EB.mjs.map +1 -0
- package/dist/chunks/es-qQRDC0Ge.mjs +2 -0
- package/dist/chunks/es-qQRDC0Ge.mjs.map +1 -0
- package/dist/chunks/fonts-ZXAIMT3b.mjs +2 -0
- package/dist/chunks/fonts-ZXAIMT3b.mjs.map +1 -0
- package/dist/chunks/fr-B27zAq0X.mjs +2 -0
- package/dist/chunks/fr-B27zAq0X.mjs.map +1 -0
- package/dist/chunks/fr-BEd3ZHO4.mjs +2 -0
- package/dist/chunks/fr-BEd3ZHO4.mjs.map +1 -0
- package/dist/chunks/fr-BHXLpdaH.mjs +2 -0
- package/dist/chunks/fr-BHXLpdaH.mjs.map +1 -0
- package/dist/chunks/fr-BKu4eU3V.mjs +2 -0
- package/dist/chunks/fr-BKu4eU3V.mjs.map +1 -0
- package/dist/chunks/fr-BUrUZ5UQ.mjs +2 -0
- package/dist/chunks/fr-BUrUZ5UQ.mjs.map +1 -0
- package/dist/chunks/fr-BlqlUQ3b.mjs +2 -0
- package/dist/chunks/fr-BlqlUQ3b.mjs.map +1 -0
- package/dist/chunks/fr-BruEqDw1.mjs +2 -0
- package/dist/chunks/fr-BruEqDw1.mjs.map +1 -0
- package/dist/chunks/fr-BwuuFBkA.mjs +2 -0
- package/dist/chunks/fr-BwuuFBkA.mjs.map +1 -0
- package/dist/chunks/fr-C2lLh5Ti.mjs +2 -0
- package/dist/chunks/fr-C2lLh5Ti.mjs.map +1 -0
- package/dist/chunks/fr-C7N2_AlK.mjs +2 -0
- package/dist/chunks/fr-C7N2_AlK.mjs.map +1 -0
- package/dist/chunks/fr-COfd6sLW.mjs +2 -0
- package/dist/chunks/fr-COfd6sLW.mjs.map +1 -0
- package/dist/chunks/fr-COx4cSxc.mjs +2 -0
- package/dist/chunks/fr-COx4cSxc.mjs.map +1 -0
- package/dist/chunks/fr-CX37XjPO.mjs +2 -0
- package/dist/chunks/fr-CX37XjPO.mjs.map +1 -0
- package/dist/chunks/fr-CYn6fMiH.mjs +2 -0
- package/dist/chunks/fr-CYn6fMiH.mjs.map +1 -0
- package/dist/chunks/fr-CbsiyDEa.mjs +2 -0
- package/dist/chunks/fr-CbsiyDEa.mjs.map +1 -0
- package/dist/chunks/fr-CcZiELJY.mjs +2 -0
- package/dist/chunks/fr-CcZiELJY.mjs.map +1 -0
- package/dist/chunks/fr-CeHzUPVT.mjs +2 -0
- package/dist/chunks/fr-CeHzUPVT.mjs.map +1 -0
- package/dist/chunks/fr-Cv73J4QZ.mjs +2 -0
- package/dist/chunks/fr-Cv73J4QZ.mjs.map +1 -0
- package/dist/chunks/fr-DDLuorz7.mjs +2 -0
- package/dist/chunks/fr-DDLuorz7.mjs.map +1 -0
- package/dist/chunks/fr-DMA4CAyo.mjs +2 -0
- package/dist/chunks/fr-DMA4CAyo.mjs.map +1 -0
- package/dist/chunks/fr-DNJuGtO1.mjs +2 -0
- package/dist/chunks/fr-DNJuGtO1.mjs.map +1 -0
- package/dist/chunks/fr-DQOE8O6_.mjs +2 -0
- package/dist/chunks/fr-DQOE8O6_.mjs.map +1 -0
- package/dist/chunks/fr-DXjOwGew.mjs +2 -0
- package/dist/chunks/fr-DXjOwGew.mjs.map +1 -0
- package/dist/chunks/fr-DilrEvE_.mjs +2 -0
- package/dist/chunks/fr-DilrEvE_.mjs.map +1 -0
- package/dist/chunks/fr-P7iY3ntE.mjs +2 -0
- package/dist/chunks/fr-P7iY3ntE.mjs.map +1 -0
- package/dist/chunks/fr-ViUNGo_J.mjs +2 -0
- package/dist/chunks/fr-ViUNGo_J.mjs.map +1 -0
- package/dist/chunks/fr-gdIyLcGC.mjs +2 -0
- package/dist/chunks/fr-gdIyLcGC.mjs.map +1 -0
- package/dist/chunks/full-h88Sb2MR.mjs +2 -0
- package/dist/chunks/full-h88Sb2MR.mjs.map +1 -0
- package/dist/chunks/hi-BC82Jxjl.mjs +2 -0
- package/dist/chunks/hi-BC82Jxjl.mjs.map +1 -0
- package/dist/chunks/hi-BCTarnem.mjs +2 -0
- package/dist/chunks/hi-BCTarnem.mjs.map +1 -0
- package/dist/chunks/hi-BMStjhJF.mjs +2 -0
- package/dist/chunks/hi-BMStjhJF.mjs.map +1 -0
- package/dist/chunks/hi-BQ2Fyx7t.mjs +2 -0
- package/dist/chunks/hi-BQ2Fyx7t.mjs.map +1 -0
- package/dist/chunks/hi-Bg4-z2Os.mjs +2 -0
- package/dist/chunks/hi-Bg4-z2Os.mjs.map +1 -0
- package/dist/chunks/hi-BgqI_gOH.mjs +2 -0
- package/dist/chunks/hi-BgqI_gOH.mjs.map +1 -0
- package/dist/chunks/hi-CEPSeUBX.mjs +2 -0
- package/dist/chunks/hi-CEPSeUBX.mjs.map +1 -0
- package/dist/chunks/hi-CRaZj5Uo.mjs +2 -0
- package/dist/chunks/hi-CRaZj5Uo.mjs.map +1 -0
- package/dist/chunks/hi-CT0uK1Me.mjs +2 -0
- package/dist/chunks/hi-CT0uK1Me.mjs.map +1 -0
- package/dist/chunks/hi-CnIpMd8L.mjs +2 -0
- package/dist/chunks/hi-CnIpMd8L.mjs.map +1 -0
- package/dist/chunks/hi-CnSv0JhL.mjs +2 -0
- package/dist/chunks/hi-CnSv0JhL.mjs.map +1 -0
- package/dist/chunks/hi-DLLBZu67.mjs +2 -0
- package/dist/chunks/hi-DLLBZu67.mjs.map +1 -0
- package/dist/chunks/hi-DMg_aiSR.mjs +2 -0
- package/dist/chunks/hi-DMg_aiSR.mjs.map +1 -0
- package/dist/chunks/hi-DWwLzOX5.mjs +2 -0
- package/dist/chunks/hi-DWwLzOX5.mjs.map +1 -0
- package/dist/chunks/hi-D_4Xi4Nv.mjs +2 -0
- package/dist/chunks/hi-D_4Xi4Nv.mjs.map +1 -0
- package/dist/chunks/hi-D_Jtykmj.mjs +2 -0
- package/dist/chunks/hi-D_Jtykmj.mjs.map +1 -0
- package/dist/chunks/hi-Da5pRz8E.mjs +2 -0
- package/dist/chunks/hi-Da5pRz8E.mjs.map +1 -0
- package/dist/chunks/hi-DqL20WmM.mjs +2 -0
- package/dist/chunks/hi-DqL20WmM.mjs.map +1 -0
- package/dist/chunks/hi-DwQopxRg.mjs +2 -0
- package/dist/chunks/hi-DwQopxRg.mjs.map +1 -0
- package/dist/chunks/hi-IuMohSSw.mjs +2 -0
- package/dist/chunks/hi-IuMohSSw.mjs.map +1 -0
- package/dist/chunks/hi-PUX7dDPm.mjs +2 -0
- package/dist/chunks/hi-PUX7dDPm.mjs.map +1 -0
- package/dist/chunks/hi-RmfZAmwT.mjs +2 -0
- package/dist/chunks/hi-RmfZAmwT.mjs.map +1 -0
- package/dist/chunks/hi-UIBrTEVu.mjs +2 -0
- package/dist/chunks/hi-UIBrTEVu.mjs.map +1 -0
- package/dist/chunks/hi-_SjWnfeh.mjs +2 -0
- package/dist/chunks/hi-_SjWnfeh.mjs.map +1 -0
- package/dist/chunks/hi-dV2GZgH_.mjs +2 -0
- package/dist/chunks/hi-dV2GZgH_.mjs.map +1 -0
- package/dist/chunks/hi-ehh5oKz3.mjs +2 -0
- package/dist/chunks/hi-ehh5oKz3.mjs.map +1 -0
- package/dist/chunks/hi-yXnRBFJK.mjs +2 -0
- package/dist/chunks/hi-yXnRBFJK.mjs.map +1 -0
- package/dist/chunks/minimal-a40NeBQ_.mjs +2 -0
- package/dist/chunks/minimal-a40NeBQ_.mjs.map +1 -0
- package/dist/chunks/pt-2a8Oto6x.mjs +2 -0
- package/dist/chunks/pt-2a8Oto6x.mjs.map +1 -0
- package/dist/chunks/pt-ALzIyTiI.mjs +2 -0
- package/dist/chunks/pt-ALzIyTiI.mjs.map +1 -0
- package/dist/chunks/pt-B2hMlTc6.mjs +2 -0
- package/dist/chunks/pt-B2hMlTc6.mjs.map +1 -0
- package/dist/chunks/pt-BCIkSb0w.mjs +2 -0
- package/dist/chunks/pt-BCIkSb0w.mjs.map +1 -0
- package/dist/chunks/pt-BFotmq5x.mjs +2 -0
- package/dist/chunks/pt-BFotmq5x.mjs.map +1 -0
- package/dist/chunks/pt-BM7OScX6.mjs +2 -0
- package/dist/chunks/pt-BM7OScX6.mjs.map +1 -0
- package/dist/chunks/pt-BM7zXWxW.mjs +2 -0
- package/dist/chunks/pt-BM7zXWxW.mjs.map +1 -0
- package/dist/chunks/pt-BchCuzFq.mjs +2 -0
- package/dist/chunks/pt-BchCuzFq.mjs.map +1 -0
- package/dist/chunks/pt-BmcHFWoR.mjs +2 -0
- package/dist/chunks/pt-BmcHFWoR.mjs.map +1 -0
- package/dist/chunks/pt-C53W99RV.mjs +2 -0
- package/dist/chunks/pt-C53W99RV.mjs.map +1 -0
- package/dist/chunks/pt-CORQy8qv.mjs +2 -0
- package/dist/chunks/pt-CORQy8qv.mjs.map +1 -0
- package/dist/chunks/pt-CUPKr943.mjs +2 -0
- package/dist/chunks/pt-CUPKr943.mjs.map +1 -0
- package/dist/chunks/pt-CYkKDsLa.mjs +2 -0
- package/dist/chunks/pt-CYkKDsLa.mjs.map +1 -0
- package/dist/chunks/pt-Cd_SXHKt.mjs +2 -0
- package/dist/chunks/pt-Cd_SXHKt.mjs.map +1 -0
- package/dist/chunks/pt-CjN3Oq-6.mjs +2 -0
- package/dist/chunks/pt-CjN3Oq-6.mjs.map +1 -0
- package/dist/chunks/pt-CrKrgktr.mjs +2 -0
- package/dist/chunks/pt-CrKrgktr.mjs.map +1 -0
- package/dist/chunks/pt-Crmbkj0e.mjs +2 -0
- package/dist/chunks/pt-Crmbkj0e.mjs.map +1 -0
- package/dist/chunks/pt-D19IWOM_.mjs +2 -0
- package/dist/chunks/pt-D19IWOM_.mjs.map +1 -0
- package/dist/chunks/pt-D6zY7l2E.mjs +2 -0
- package/dist/chunks/pt-D6zY7l2E.mjs.map +1 -0
- package/dist/chunks/pt-DA5hufLZ.mjs +2 -0
- package/dist/chunks/pt-DA5hufLZ.mjs.map +1 -0
- package/dist/chunks/pt-DEfBqu-c.mjs +2 -0
- package/dist/chunks/pt-DEfBqu-c.mjs.map +1 -0
- package/dist/chunks/pt-DG3rw6nK.mjs +2 -0
- package/dist/chunks/pt-DG3rw6nK.mjs.map +1 -0
- package/dist/chunks/pt-DRoAHNZi.mjs +2 -0
- package/dist/chunks/pt-DRoAHNZi.mjs.map +1 -0
- package/dist/chunks/pt-Eml9QiUL.mjs +2 -0
- package/dist/chunks/pt-Eml9QiUL.mjs.map +1 -0
- package/dist/chunks/pt-Haa3wVmA.mjs +2 -0
- package/dist/chunks/pt-Haa3wVmA.mjs.map +1 -0
- package/dist/chunks/pt-aj7zOxTg.mjs +2 -0
- package/dist/chunks/pt-aj7zOxTg.mjs.map +1 -0
- package/dist/chunks/pt-l6dTmkQk.mjs +2 -0
- package/dist/chunks/pt-l6dTmkQk.mjs.map +1 -0
- package/dist/chunks/ru--JPEpdcJ.mjs +2 -0
- package/dist/chunks/ru--JPEpdcJ.mjs.map +1 -0
- package/dist/chunks/ru-B76ORyqe.mjs +2 -0
- package/dist/chunks/ru-B76ORyqe.mjs.map +1 -0
- package/dist/chunks/ru-BDQ62WuE.mjs +2 -0
- package/dist/chunks/ru-BDQ62WuE.mjs.map +1 -0
- package/dist/chunks/ru-BQ6W3lwr.mjs +2 -0
- package/dist/chunks/ru-BQ6W3lwr.mjs.map +1 -0
- package/dist/chunks/ru-BQpaitci.mjs +2 -0
- package/dist/chunks/ru-BQpaitci.mjs.map +1 -0
- package/dist/chunks/ru-Bm9VwJLu.mjs +2 -0
- package/dist/chunks/ru-Bm9VwJLu.mjs.map +1 -0
- package/dist/chunks/ru-BnNdik6i.mjs +2 -0
- package/dist/chunks/ru-BnNdik6i.mjs.map +1 -0
- package/dist/chunks/ru-Bo4am8cd.mjs +2 -0
- package/dist/chunks/ru-Bo4am8cd.mjs.map +1 -0
- package/dist/chunks/ru-C1k56xWQ.mjs +2 -0
- package/dist/chunks/ru-C1k56xWQ.mjs.map +1 -0
- package/dist/chunks/ru-C4rnSQlI.mjs +2 -0
- package/dist/chunks/ru-C4rnSQlI.mjs.map +1 -0
- package/dist/chunks/ru-CKM3t1sv.mjs +2 -0
- package/dist/chunks/ru-CKM3t1sv.mjs.map +1 -0
- package/dist/chunks/ru-CO6eCsxU.mjs +2 -0
- package/dist/chunks/ru-CO6eCsxU.mjs.map +1 -0
- package/dist/chunks/ru-CTaYpQ9_.mjs +2 -0
- package/dist/chunks/ru-CTaYpQ9_.mjs.map +1 -0
- package/dist/chunks/ru-CdY8d80t.mjs +2 -0
- package/dist/chunks/ru-CdY8d80t.mjs.map +1 -0
- package/dist/chunks/ru-CsDtaWRd.mjs +2 -0
- package/dist/chunks/ru-CsDtaWRd.mjs.map +1 -0
- package/dist/chunks/ru-Cy_4nn8h.mjs +2 -0
- package/dist/chunks/ru-Cy_4nn8h.mjs.map +1 -0
- package/dist/chunks/ru-DACtjNuJ.mjs +2 -0
- package/dist/chunks/ru-DACtjNuJ.mjs.map +1 -0
- package/dist/chunks/ru-DN6yN_w9.mjs +2 -0
- package/dist/chunks/ru-DN6yN_w9.mjs.map +1 -0
- package/dist/chunks/ru-DThFtd76.mjs +2 -0
- package/dist/chunks/ru-DThFtd76.mjs.map +1 -0
- package/dist/chunks/ru-Dd_P7hP7.mjs +2 -0
- package/dist/chunks/ru-Dd_P7hP7.mjs.map +1 -0
- package/dist/chunks/ru-Dhuxwzwy.mjs +2 -0
- package/dist/chunks/ru-Dhuxwzwy.mjs.map +1 -0
- package/dist/chunks/ru-Dn6UDGIG.mjs +2 -0
- package/dist/chunks/ru-Dn6UDGIG.mjs.map +1 -0
- package/dist/chunks/ru-DojHc5wu.mjs +2 -0
- package/dist/chunks/ru-DojHc5wu.mjs.map +1 -0
- package/dist/chunks/ru-DyWzWBjV.mjs +2 -0
- package/dist/chunks/ru-DyWzWBjV.mjs.map +1 -0
- package/dist/chunks/ru-NBxCkjlP.mjs +2 -0
- package/dist/chunks/ru-NBxCkjlP.mjs.map +1 -0
- package/dist/chunks/ru-_MQaVHam.mjs +2 -0
- package/dist/chunks/ru-_MQaVHam.mjs.map +1 -0
- package/dist/chunks/ru-wv17PPrd.mjs +2 -0
- package/dist/chunks/ru-wv17PPrd.mjs.map +1 -0
- package/dist/chunks/src-ooaZ_Egu.mjs +2 -0
- package/dist/chunks/src-ooaZ_Egu.mjs.map +1 -0
- package/dist/chunks/zh-2-Y3Limy.mjs +2 -0
- package/dist/chunks/zh-2-Y3Limy.mjs.map +1 -0
- package/dist/chunks/zh-B02VPMqX.mjs +2 -0
- package/dist/chunks/zh-B02VPMqX.mjs.map +1 -0
- package/dist/chunks/zh-BYjLBWWN.mjs +2 -0
- package/dist/chunks/zh-BYjLBWWN.mjs.map +1 -0
- package/dist/chunks/zh-Bt2ZdHcS.mjs +2 -0
- package/dist/chunks/zh-Bt2ZdHcS.mjs.map +1 -0
- package/dist/chunks/zh-BuN_C4o-.mjs +2 -0
- package/dist/chunks/zh-BuN_C4o-.mjs.map +1 -0
- package/dist/chunks/zh-CA3BDj0Y.mjs +2 -0
- package/dist/chunks/zh-CA3BDj0Y.mjs.map +1 -0
- package/dist/chunks/zh-CHuGP7RS.mjs +2 -0
- package/dist/chunks/zh-CHuGP7RS.mjs.map +1 -0
- package/dist/chunks/zh-CIPsF5P8.mjs +2 -0
- package/dist/chunks/zh-CIPsF5P8.mjs.map +1 -0
- package/dist/chunks/zh-C_YS18re.mjs +2 -0
- package/dist/chunks/zh-C_YS18re.mjs.map +1 -0
- package/dist/chunks/zh-CfMPFWUg.mjs +2 -0
- package/dist/chunks/zh-CfMPFWUg.mjs.map +1 -0
- package/dist/chunks/zh-CfjCcBIB.mjs +2 -0
- package/dist/chunks/zh-CfjCcBIB.mjs.map +1 -0
- package/dist/chunks/zh-CqQph809.mjs +2 -0
- package/dist/chunks/zh-CqQph809.mjs.map +1 -0
- package/dist/chunks/zh-Cxe42GC5.mjs +2 -0
- package/dist/chunks/zh-Cxe42GC5.mjs.map +1 -0
- package/dist/chunks/zh-CyMU2cTf.mjs +2 -0
- package/dist/chunks/zh-CyMU2cTf.mjs.map +1 -0
- package/dist/chunks/zh-Cynz1sBa.mjs +2 -0
- package/dist/chunks/zh-Cynz1sBa.mjs.map +1 -0
- package/dist/chunks/zh-DRKs6Q0a.mjs +2 -0
- package/dist/chunks/zh-DRKs6Q0a.mjs.map +1 -0
- package/dist/chunks/zh-DTuIJjx6.mjs +2 -0
- package/dist/chunks/zh-DTuIJjx6.mjs.map +1 -0
- package/dist/chunks/zh-DTz9l6mp.mjs +2 -0
- package/dist/chunks/zh-DTz9l6mp.mjs.map +1 -0
- package/dist/chunks/zh-DZwjiJmn.mjs +2 -0
- package/dist/chunks/zh-DZwjiJmn.mjs.map +1 -0
- package/dist/chunks/zh-D_VJDQl4.mjs +2 -0
- package/dist/chunks/zh-D_VJDQl4.mjs.map +1 -0
- package/dist/chunks/zh-Dt20Om7Z.mjs +2 -0
- package/dist/chunks/zh-Dt20Om7Z.mjs.map +1 -0
- package/dist/chunks/zh-SgsZ9f-W.mjs +2 -0
- package/dist/chunks/zh-SgsZ9f-W.mjs.map +1 -0
- package/dist/chunks/zh-XR7Ls7m-.mjs +2 -0
- package/dist/chunks/zh-XR7Ls7m-.mjs.map +1 -0
- package/dist/chunks/zh-aXPI9lKF.mjs +2 -0
- package/dist/chunks/zh-aXPI9lKF.mjs.map +1 -0
- package/dist/chunks/zh-cLXIKkZQ.mjs +2 -0
- package/dist/chunks/zh-cLXIKkZQ.mjs.map +1 -0
- package/dist/chunks/zh-cZUtN871.mjs +2 -0
- package/dist/chunks/zh-cZUtN871.mjs.map +1 -0
- package/dist/chunks/zh-hcdnCGUp.mjs +2 -0
- package/dist/chunks/zh-hcdnCGUp.mjs.map +1 -0
- package/dist/commands/AttributedMarkCommands.d.ts.map +1 -1
- package/dist/commands/BlockInsertion.d.ts +27 -0
- package/dist/commands/BlockInsertion.d.ts.map +1 -1
- package/dist/commands/CommandHelpers.d.ts +12 -0
- package/dist/commands/CommandHelpers.d.ts.map +1 -1
- package/dist/commands/Commands.d.ts.map +1 -1
- package/dist/commands/ContainerCommands.d.ts +24 -0
- package/dist/commands/ContainerCommands.d.ts.map +1 -0
- package/dist/commands/CursorMarks.d.ts +13 -0
- package/dist/commands/CursorMarks.d.ts.map +1 -0
- package/dist/commands/GapCursorCommands.d.ts.map +1 -1
- package/dist/commands/MarkCommands.d.ts.map +1 -1
- package/dist/commands/NodeSelectionCommands.d.ts.map +1 -1
- package/dist/commands/PasteCommand.d.ts.map +1 -1
- package/dist/commands/SelectionDeletion.d.ts +25 -0
- package/dist/commands/SelectionDeletion.d.ts.map +1 -0
- package/dist/decorations/Decoration.d.ts +6 -0
- package/dist/decorations/Decoration.d.ts.map +1 -1
- package/dist/decorations/PositionMapping.d.ts +13 -3
- package/dist/decorations/PositionMapping.d.ts.map +1 -1
- package/dist/editor/ContentSerializer.d.ts +1 -1
- package/dist/editor/ContentSerializer.d.ts.map +1 -1
- package/dist/editor/EditorConfig.d.ts +14 -2
- package/dist/editor/EditorConfig.d.ts.map +1 -1
- package/dist/editor/EditorDOM.d.ts.map +1 -1
- package/dist/editor/EditorInitializer.d.ts.map +1 -1
- package/dist/editor/NotectlEditor.d.ts +12 -7
- package/dist/editor/NotectlEditor.d.ts.map +1 -1
- package/dist/editor/PluginBootstrapper.d.ts.map +1 -1
- package/dist/editor/styles/base.d.ts +1 -1
- package/dist/editor/styles/base.d.ts.map +1 -1
- package/dist/editor/styles/table.d.ts +1 -1
- package/dist/editor/styles/table.d.ts.map +1 -1
- package/dist/editor/styles/toolbar.d.ts +1 -1
- package/dist/editor/styles/toolbar.d.ts.map +1 -1
- package/dist/fonts.d.ts +11 -0
- package/dist/fonts.d.ts.map +1 -1
- package/dist/fonts.mjs +1 -1
- package/dist/full.d.ts +2 -0
- package/dist/full.d.ts.map +1 -1
- package/dist/full.mjs +1 -1
- package/dist/html.d.ts +1 -1
- package/dist/html.d.ts.map +1 -1
- package/dist/html.mjs +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/input/ClipboardHandler.d.ts.map +1 -1
- package/dist/input/HTMLParser.d.ts +3 -0
- package/dist/input/HTMLParser.d.ts.map +1 -1
- package/dist/input/InputHandler.d.ts +9 -0
- package/dist/input/InputHandler.d.ts.map +1 -1
- package/dist/input/InputManager.d.ts +2 -0
- package/dist/input/InputManager.d.ts.map +1 -1
- package/dist/input/KeyboardHandler.d.ts.map +1 -1
- package/dist/input/PasteHTMLHandler.d.ts +1 -1
- package/dist/input/PasteHTMLHandler.d.ts.map +1 -1
- package/dist/input/PasteRichBlockHandler.d.ts +1 -1
- package/dist/input/PasteRichBlockHandler.d.ts.map +1 -1
- package/dist/input/SelectionDocument.d.ts.map +1 -1
- package/dist/model/ContentSlice.d.ts +6 -7
- package/dist/model/ContentSlice.d.ts.map +1 -1
- package/dist/model/Document.d.ts +34 -0
- package/dist/model/Document.d.ts.map +1 -1
- package/dist/model/GraphemeUtils.d.ts +8 -2
- package/dist/model/GraphemeUtils.d.ts.map +1 -1
- package/dist/model/MarkSpec.d.ts +6 -0
- package/dist/model/MarkSpec.d.ts.map +1 -1
- package/dist/model/NodeResolver.d.ts +18 -0
- package/dist/model/NodeResolver.d.ts.map +1 -1
- package/dist/model/Schema.d.ts +6 -0
- package/dist/model/Schema.d.ts.map +1 -1
- package/dist/model/SchemaRegistry.d.ts.map +1 -1
- package/dist/model/TextInputInterceptor.d.ts +21 -0
- package/dist/model/TextInputInterceptor.d.ts.map +1 -0
- package/dist/notectl-core.mjs +1 -1
- package/dist/notectl-core.umd.js +1 -1
- package/dist/notectl-core.umd.js.map +1 -1
- package/dist/plugins/MiddlewareChain.d.ts +11 -0
- package/dist/plugins/MiddlewareChain.d.ts.map +1 -1
- package/dist/plugins/Plugin.d.ts +7 -0
- package/dist/plugins/Plugin.d.ts.map +1 -1
- package/dist/plugins/PluginContextFactory.d.ts +6 -0
- package/dist/plugins/PluginContextFactory.d.ts.map +1 -1
- package/dist/plugins/PluginManager.d.ts +5 -0
- package/dist/plugins/PluginManager.d.ts.map +1 -1
- package/dist/plugins/RegistrationTracker.d.ts.map +1 -1
- package/dist/plugins/alignment/AlignmentPlugin.d.ts.map +1 -1
- package/dist/plugins/alignment.mjs +1 -1
- package/dist/plugins/bidi-isolation/BidiIsolationPlugin.d.ts.map +1 -1
- package/dist/plugins/bidi-isolation.mjs +1 -1
- package/dist/plugins/blockquote/BlockquoteKeyboardHandlers.d.ts +1 -1
- package/dist/plugins/blockquote/BlockquoteKeyboardHandlers.d.ts.map +1 -1
- package/dist/plugins/blockquote/BlockquotePlugin.d.ts +13 -3
- package/dist/plugins/blockquote/BlockquotePlugin.d.ts.map +1 -1
- package/dist/plugins/blockquote/BlockquoteStyles.d.ts +1 -1
- package/dist/plugins/blockquote/BlockquoteStyles.d.ts.map +1 -1
- package/dist/plugins/blockquote.mjs +1 -1
- package/dist/plugins/caret-navigation.mjs +1 -1
- package/dist/plugins/code-block/AutoPairController.d.ts +50 -0
- package/dist/plugins/code-block/AutoPairController.d.ts.map +1 -0
- package/dist/plugins/code-block/BracketPairing.d.ts +49 -0
- package/dist/plugins/code-block/BracketPairing.d.ts.map +1 -0
- package/dist/plugins/code-block/CodeBlockDecorations.d.ts +16 -0
- package/dist/plugins/code-block/CodeBlockDecorations.d.ts.map +1 -0
- package/dist/plugins/code-block/CodeBlockHighlighting.d.ts +10 -0
- package/dist/plugins/code-block/CodeBlockHighlighting.d.ts.map +1 -0
- package/dist/plugins/code-block/CodeBlockKeyboardHandlers.d.ts +11 -2
- package/dist/plugins/code-block/CodeBlockKeyboardHandlers.d.ts.map +1 -1
- package/dist/plugins/code-block/CodeBlockLocale.d.ts +4 -0
- package/dist/plugins/code-block/CodeBlockLocale.d.ts.map +1 -1
- package/dist/plugins/code-block/CodeBlockNodeView.d.ts.map +1 -1
- package/dist/plugins/code-block/CodeBlockPlugin.d.ts +4 -14
- package/dist/plugins/code-block/CodeBlockPlugin.d.ts.map +1 -1
- package/dist/plugins/code-block/CodeBlockSchema.d.ts +11 -0
- package/dist/plugins/code-block/CodeBlockSchema.d.ts.map +1 -0
- package/dist/plugins/code-block/CodeBlockTypes.d.ts +66 -0
- package/dist/plugins/code-block/CodeBlockTypes.d.ts.map +1 -1
- package/dist/plugins/code-block/IndentHelpers.d.ts +71 -0
- package/dist/plugins/code-block/IndentHelpers.d.ts.map +1 -0
- package/dist/plugins/code-block/PairStack.d.ts +37 -0
- package/dist/plugins/code-block/PairStack.d.ts.map +1 -0
- package/dist/plugins/code-block/TokenCache.d.ts +21 -0
- package/dist/plugins/code-block/TokenCache.d.ts.map +1 -0
- package/dist/plugins/code-block/highlighter/RegexTokenizer.d.ts.map +1 -1
- package/dist/plugins/code-block/highlighter/TokenIteration.d.ts +18 -0
- package/dist/plugins/code-block/highlighter/TokenIteration.d.ts.map +1 -0
- package/dist/plugins/code-block/highlighter/languages/index.d.ts +1 -0
- package/dist/plugins/code-block/highlighter/languages/index.d.ts.map +1 -1
- package/dist/plugins/code-block/highlighter/languages/java.d.ts.map +1 -1
- package/dist/plugins/code-block/highlighter/languages/typescript.d.ts +3 -0
- package/dist/plugins/code-block/highlighter/languages/typescript.d.ts.map +1 -0
- package/dist/plugins/code-block/index.d.ts +1 -0
- package/dist/plugins/code-block/index.d.ts.map +1 -1
- package/dist/plugins/code-block/locales/ar.d.ts.map +1 -1
- package/dist/plugins/code-block/locales/de.d.ts.map +1 -1
- package/dist/plugins/code-block/locales/es.d.ts.map +1 -1
- package/dist/plugins/code-block/locales/fr.d.ts.map +1 -1
- package/dist/plugins/code-block/locales/hi.d.ts.map +1 -1
- package/dist/plugins/code-block/locales/pt.d.ts.map +1 -1
- package/dist/plugins/code-block/locales/ru.d.ts.map +1 -1
- package/dist/plugins/code-block/locales/zh.d.ts.map +1 -1
- package/dist/plugins/code-block.mjs +1 -1
- package/dist/plugins/font/FontPlugin.d.ts.map +1 -1
- package/dist/plugins/font-size/FontSizeOperations.d.ts +7 -3
- package/dist/plugins/font-size/FontSizeOperations.d.ts.map +1 -1
- package/dist/plugins/font-size/FontSizePlugin.d.ts.map +1 -1
- package/dist/plugins/font-size.mjs +1 -1
- package/dist/plugins/font.mjs +1 -1
- package/dist/plugins/formula/DisplayMathNodeSpec.d.ts +5 -0
- package/dist/plugins/formula/DisplayMathNodeSpec.d.ts.map +1 -0
- package/dist/plugins/formula/DisplayMathNodeView.d.ts +12 -0
- package/dist/plugins/formula/DisplayMathNodeView.d.ts.map +1 -0
- package/dist/plugins/formula/FormulaCommands.d.ts +35 -0
- package/dist/plugins/formula/FormulaCommands.d.ts.map +1 -0
- package/dist/plugins/formula/FormulaEditTrigger.d.ts +12 -0
- package/dist/plugins/formula/FormulaEditTrigger.d.ts.map +1 -0
- package/dist/plugins/formula/FormulaEditorMount.d.ts +19 -0
- package/dist/plugins/formula/FormulaEditorMount.d.ts.map +1 -0
- package/dist/plugins/formula/FormulaInputRules.d.ts +4 -0
- package/dist/plugins/formula/FormulaInputRules.d.ts.map +1 -0
- package/dist/plugins/formula/FormulaLocale.d.ts +45 -0
- package/dist/plugins/formula/FormulaLocale.d.ts.map +1 -0
- package/dist/plugins/formula/FormulaOverlay.d.ts +38 -0
- package/dist/plugins/formula/FormulaOverlay.d.ts.map +1 -0
- package/dist/plugins/formula/FormulaPasteInterceptor.d.ts +10 -0
- package/dist/plugins/formula/FormulaPasteInterceptor.d.ts.map +1 -0
- package/dist/plugins/formula/FormulaPlugin.d.ts +22 -0
- package/dist/plugins/formula/FormulaPlugin.d.ts.map +1 -0
- package/dist/plugins/formula/FormulaRendering.d.ts +18 -0
- package/dist/plugins/formula/FormulaRendering.d.ts.map +1 -0
- package/dist/plugins/formula/FormulaStyles.d.ts +12 -0
- package/dist/plugins/formula/FormulaStyles.d.ts.map +1 -0
- package/dist/plugins/formula/FormulaToolbar.d.ts +5 -0
- package/dist/plugins/formula/FormulaToolbar.d.ts.map +1 -0
- package/dist/plugins/formula/FormulaTypes.d.ts +64 -0
- package/dist/plugins/formula/FormulaTypes.d.ts.map +1 -0
- package/dist/plugins/formula/InlineMathNodeSpec.d.ts +5 -0
- package/dist/plugins/formula/InlineMathNodeSpec.d.ts.map +1 -0
- package/dist/plugins/formula/MathFont.d.ts +4 -0
- package/dist/plugins/formula/MathFont.d.ts.map +1 -0
- package/dist/plugins/formula/MathFontFace.d.ts +4 -0
- package/dist/plugins/formula/MathFontFace.d.ts.map +1 -0
- package/dist/plugins/formula/index.d.ts +14 -0
- package/dist/plugins/formula/index.d.ts.map +1 -0
- package/dist/plugins/formula/latex/LatexParser.d.ts +8 -0
- package/dist/plugins/formula/latex/LatexParser.d.ts.map +1 -0
- package/dist/plugins/formula/latex/LatexParserTypes.d.ts +61 -0
- package/dist/plugins/formula/latex/LatexParserTypes.d.ts.map +1 -0
- package/dist/plugins/formula/latex/LatexSymbols.d.ts +87 -0
- package/dist/plugins/formula/latex/LatexSymbols.d.ts.map +1 -0
- package/dist/plugins/formula/latex/LatexToMathML.d.ts +33 -0
- package/dist/plugins/formula/latex/LatexToMathML.d.ts.map +1 -0
- package/dist/plugins/formula/latex/LatexTokenizer.d.ts +45 -0
- package/dist/plugins/formula/latex/LatexTokenizer.d.ts.map +1 -0
- package/dist/plugins/formula/latex/MathAlphabet.d.ts +42 -0
- package/dist/plugins/formula/latex/MathAlphabet.d.ts.map +1 -0
- package/dist/plugins/formula/latex/handlers/Accents.d.ts +6 -0
- package/dist/plugins/formula/latex/handlers/Accents.d.ts.map +1 -0
- package/dist/plugins/formula/latex/handlers/Delimiters.d.ts +12 -0
- package/dist/plugins/formula/latex/handlers/Delimiters.d.ts.map +1 -0
- package/dist/plugins/formula/latex/handlers/Environments.d.ts +9 -0
- package/dist/plugins/formula/latex/handlers/Environments.d.ts.map +1 -0
- package/dist/plugins/formula/latex/handlers/Fonts.d.ts +6 -0
- package/dist/plugins/formula/latex/handlers/Fonts.d.ts.map +1 -0
- package/dist/plugins/formula/latex/handlers/Spacing.d.ts +13 -0
- package/dist/plugins/formula/latex/handlers/Spacing.d.ts.map +1 -0
- package/dist/plugins/formula/latex/handlers/Structures.d.ts +19 -0
- package/dist/plugins/formula/latex/handlers/Structures.d.ts.map +1 -0
- package/dist/plugins/formula/latex/index.d.ts +11 -0
- package/dist/plugins/formula/latex/index.d.ts.map +1 -0
- package/dist/plugins/formula/locales/ar.d.ts +4 -0
- package/dist/plugins/formula/locales/ar.d.ts.map +1 -0
- package/dist/plugins/formula/locales/de.d.ts +4 -0
- package/dist/plugins/formula/locales/de.d.ts.map +1 -0
- package/dist/plugins/formula/locales/es.d.ts +4 -0
- package/dist/plugins/formula/locales/es.d.ts.map +1 -0
- package/dist/plugins/formula/locales/fr.d.ts +4 -0
- package/dist/plugins/formula/locales/fr.d.ts.map +1 -0
- package/dist/plugins/formula/locales/hi.d.ts +4 -0
- package/dist/plugins/formula/locales/hi.d.ts.map +1 -0
- package/dist/plugins/formula/locales/pt.d.ts +4 -0
- package/dist/plugins/formula/locales/pt.d.ts.map +1 -0
- package/dist/plugins/formula/locales/ru.d.ts +4 -0
- package/dist/plugins/formula/locales/ru.d.ts.map +1 -0
- package/dist/plugins/formula/locales/zh.d.ts +4 -0
- package/dist/plugins/formula/locales/zh.d.ts.map +1 -0
- package/dist/plugins/formula/math-field/MathField.d.ts +45 -0
- package/dist/plugins/formula/math-field/MathField.d.ts.map +1 -0
- package/dist/plugins/formula/math-field/MathFieldTypes.d.ts +73 -0
- package/dist/plugins/formula/math-field/MathFieldTypes.d.ts.map +1 -0
- package/dist/plugins/formula/math-field/MathPalette.d.ts +16 -0
- package/dist/plugins/formula/math-field/MathPalette.d.ts.map +1 -0
- package/dist/plugins/formula/math-field/MathPaletteData.d.ts +15 -0
- package/dist/plugins/formula/math-field/MathPaletteData.d.ts.map +1 -0
- package/dist/plugins/formula/math-field/index.d.ts +9 -0
- package/dist/plugins/formula/math-field/index.d.ts.map +1 -0
- package/dist/plugins/formula/mathml/MathMLBuilder.d.ts +58 -0
- package/dist/plugins/formula/mathml/MathMLBuilder.d.ts.map +1 -0
- package/dist/plugins/formula/mathml/MathMLDocument.d.ts +54 -0
- package/dist/plugins/formula/mathml/MathMLDocument.d.ts.map +1 -0
- package/dist/plugins/formula/mathml/MathMLSanitize.d.ts +15 -0
- package/dist/plugins/formula/mathml/MathMLSanitize.d.ts.map +1 -0
- package/dist/plugins/formula/mathml/index.d.ts +8 -0
- package/dist/plugins/formula/mathml/index.d.ts.map +1 -0
- package/dist/plugins/formula.mjs +1 -0
- package/dist/plugins/gap-cursor.mjs +1 -1
- package/dist/plugins/hard-break.mjs +1 -1
- package/dist/plugins/heading.mjs +1 -1
- package/dist/plugins/highlight/HighlightPalette.d.ts +7 -0
- package/dist/plugins/highlight/HighlightPalette.d.ts.map +1 -0
- package/dist/plugins/highlight/HighlightPlugin.d.ts.map +1 -1
- package/dist/plugins/highlight.mjs +1 -1
- package/dist/plugins/horizontal-rule/HorizontalRulePlugin.d.ts.map +1 -1
- package/dist/plugins/horizontal-rule.mjs +1 -1
- package/dist/plugins/image/ImageCommands.d.ts.map +1 -1
- package/dist/plugins/image/ImageNodeView.d.ts.map +1 -1
- package/dist/plugins/image/ImagePlugin.d.ts.map +1 -1
- package/dist/plugins/image/ImagePopup.d.ts.map +1 -1
- package/dist/plugins/image/ImagePopupStyles.d.ts +3 -0
- package/dist/plugins/image/ImagePopupStyles.d.ts.map +1 -0
- package/dist/plugins/image.mjs +1 -1
- package/dist/plugins/inline-code/InlineCodePlugin.d.ts +1 -4
- package/dist/plugins/inline-code/InlineCodePlugin.d.ts.map +1 -1
- package/dist/plugins/inline-code.mjs +1 -1
- package/dist/plugins/language/bundles/JavaSupport.d.ts.map +1 -1
- package/dist/plugins/language/bundles/TypeScriptSupport.d.ts +3 -0
- package/dist/plugins/language/bundles/TypeScriptSupport.d.ts.map +1 -0
- package/dist/plugins/language/bundles/index.d.ts +1 -0
- package/dist/plugins/language/bundles/index.d.ts.map +1 -1
- package/dist/plugins/language/index.d.ts +1 -1
- package/dist/plugins/language/index.d.ts.map +1 -1
- package/dist/plugins/language.mjs +1 -1
- package/dist/plugins/link/LinkPlugin.d.ts.map +1 -1
- package/dist/plugins/link.mjs +1 -1
- package/dist/plugins/list.mjs +1 -1
- package/dist/plugins/print.mjs +1 -1
- package/dist/plugins/shared/InlineStyleMarkSpec.d.ts +22 -0
- package/dist/plugins/shared/InlineStyleMarkSpec.d.ts.map +1 -0
- package/dist/plugins/shared/NodeSpecPatching.d.ts +16 -0
- package/dist/plugins/shared/NodeSpecPatching.d.ts.map +1 -0
- package/dist/plugins/shared/PluginHelpers.d.ts +8 -0
- package/dist/plugins/shared/PluginHelpers.d.ts.map +1 -1
- package/dist/plugins/shared/PopupManager.d.ts.map +1 -1
- package/dist/plugins/shared/PopupPositioning.d.ts +20 -0
- package/dist/plugins/shared/PopupPositioning.d.ts.map +1 -1
- package/dist/plugins/shared/SimpleMark.d.ts +22 -0
- package/dist/plugins/shared/SimpleMark.d.ts.map +1 -0
- package/dist/plugins/shared.mjs +1 -1
- package/dist/plugins/smart-paste/detectors/DetectionScorer.d.ts +17 -0
- package/dist/plugins/smart-paste/detectors/DetectionScorer.d.ts.map +1 -0
- package/dist/plugins/smart-paste/detectors/LexerDetector.d.ts +36 -0
- package/dist/plugins/smart-paste/detectors/LexerDetector.d.ts.map +1 -0
- package/dist/plugins/smart-paste/detectors/TokenStats.d.ts +44 -0
- package/dist/plugins/smart-paste/detectors/TokenStats.d.ts.map +1 -0
- package/dist/plugins/smart-paste/index.d.ts +3 -1
- package/dist/plugins/smart-paste/index.d.ts.map +1 -1
- package/dist/plugins/smart-paste.mjs +1 -1
- package/dist/plugins/strikethrough/StrikethroughPlugin.d.ts +0 -4
- package/dist/plugins/strikethrough/StrikethroughPlugin.d.ts.map +1 -1
- package/dist/plugins/strikethrough.mjs +1 -1
- package/dist/plugins/super-sub/SuperSubPlugin.d.ts.map +1 -1
- package/dist/plugins/super-sub.mjs +1 -1
- package/dist/plugins/table/TableCommands.d.ts.map +1 -1
- package/dist/plugins/table/TableNavigation.d.ts.map +1 -1
- package/dist/plugins/table/TablePlugin.d.ts.map +1 -1
- package/dist/plugins/table.mjs +1 -1
- package/dist/plugins/text-color/TextColorPalette.d.ts +6 -0
- package/dist/plugins/text-color/TextColorPalette.d.ts.map +1 -0
- package/dist/plugins/text-color/TextColorPlugin.d.ts.map +1 -1
- package/dist/plugins/text-color.mjs +1 -1
- package/dist/plugins/text-direction/TextDirectionPlugin.d.ts.map +1 -1
- package/dist/plugins/text-direction-auto.mjs +1 -1
- package/dist/plugins/text-direction.mjs +1 -1
- package/dist/plugins/text-formatting/TextFormattingPlugin.d.ts.map +1 -1
- package/dist/plugins/text-formatting.mjs +1 -1
- package/dist/plugins/toolbar/ToolbarOverflowController.d.ts +14 -1
- package/dist/plugins/toolbar/ToolbarOverflowController.d.ts.map +1 -1
- package/dist/plugins/toolbar/ToolbarPlugin.d.ts +13 -1
- package/dist/plugins/toolbar/ToolbarPlugin.d.ts.map +1 -1
- package/dist/plugins/toolbar/ToolbarRenderers.d.ts.map +1 -1
- package/dist/plugins/toolbar/index.d.ts +1 -1
- package/dist/plugins/toolbar/index.d.ts.map +1 -1
- package/dist/plugins/toolbar.mjs +1 -1
- package/dist/plugins/video/VideoCommands.d.ts +62 -0
- package/dist/plugins/video/VideoCommands.d.ts.map +1 -0
- package/dist/plugins/video/VideoEditOverlay.d.ts +30 -0
- package/dist/plugins/video/VideoEditOverlay.d.ts.map +1 -0
- package/dist/plugins/video/VideoEmbedPrompt.d.ts +18 -0
- package/dist/plugins/video/VideoEmbedPrompt.d.ts.map +1 -0
- package/dist/plugins/video/VideoFacade.d.ts +46 -0
- package/dist/plugins/video/VideoFacade.d.ts.map +1 -0
- package/dist/plugins/video/VideoLocale.d.ts +53 -0
- package/dist/plugins/video/VideoLocale.d.ts.map +1 -0
- package/dist/plugins/video/VideoNodeSpec.d.ts +24 -0
- package/dist/plugins/video/VideoNodeSpec.d.ts.map +1 -0
- package/dist/plugins/video/VideoNodeView.d.ts +16 -0
- package/dist/plugins/video/VideoNodeView.d.ts.map +1 -0
- package/dist/plugins/video/VideoPasteInterceptor.d.ts +9 -0
- package/dist/plugins/video/VideoPasteInterceptor.d.ts.map +1 -0
- package/dist/plugins/video/VideoPlugin.d.ts +31 -0
- package/dist/plugins/video/VideoPlugin.d.ts.map +1 -0
- package/dist/plugins/video/VideoPopup.d.ts +28 -0
- package/dist/plugins/video/VideoPopup.d.ts.map +1 -0
- package/dist/plugins/video/VideoPopupStyles.d.ts +3 -0
- package/dist/plugins/video/VideoPopupStyles.d.ts.map +1 -0
- package/dist/plugins/video/VideoProviders.d.ts +98 -0
- package/dist/plugins/video/VideoProviders.d.ts.map +1 -0
- package/dist/plugins/video/VideoResize.d.ts +35 -0
- package/dist/plugins/video/VideoResize.d.ts.map +1 -0
- package/dist/plugins/video/VideoSanitizeHook.d.ts +23 -0
- package/dist/plugins/video/VideoSanitizeHook.d.ts.map +1 -0
- package/dist/plugins/video/VideoSelectionToolbar.d.ts +20 -0
- package/dist/plugins/video/VideoSelectionToolbar.d.ts.map +1 -0
- package/dist/plugins/video/VideoStyles.d.ts +3 -0
- package/dist/plugins/video/VideoStyles.d.ts.map +1 -0
- package/dist/plugins/video/VideoTypes.d.ts +102 -0
- package/dist/plugins/video/VideoTypes.d.ts.map +1 -0
- package/dist/plugins/video/VideoViewHelpers.d.ts +13 -0
- package/dist/plugins/video/VideoViewHelpers.d.ts.map +1 -0
- package/dist/plugins/video/index.d.ts +6 -0
- package/dist/plugins/video/index.d.ts.map +1 -0
- package/dist/plugins/video/locales/ar.d.ts +4 -0
- package/dist/plugins/video/locales/ar.d.ts.map +1 -0
- package/dist/plugins/video/locales/de.d.ts +4 -0
- package/dist/plugins/video/locales/de.d.ts.map +1 -0
- package/dist/plugins/video/locales/es.d.ts +4 -0
- package/dist/plugins/video/locales/es.d.ts.map +1 -0
- package/dist/plugins/video/locales/fr.d.ts +4 -0
- package/dist/plugins/video/locales/fr.d.ts.map +1 -0
- package/dist/plugins/video/locales/hi.d.ts +4 -0
- package/dist/plugins/video/locales/hi.d.ts.map +1 -0
- package/dist/plugins/video/locales/pt.d.ts +4 -0
- package/dist/plugins/video/locales/pt.d.ts.map +1 -0
- package/dist/plugins/video/locales/ru.d.ts +4 -0
- package/dist/plugins/video/locales/ru.d.ts.map +1 -0
- package/dist/plugins/video/locales/zh.d.ts +4 -0
- package/dist/plugins/video/locales/zh.d.ts.map +1 -0
- package/dist/plugins/video.mjs +1 -0
- package/dist/presets/FullPreset.d.ts +1 -1
- package/dist/presets/FullPreset.d.ts.map +1 -1
- package/dist/presets/PresetTypes.d.ts +4 -0
- package/dist/presets/PresetTypes.d.ts.map +1 -1
- package/dist/presets/full.mjs +1 -1
- package/dist/presets/minimal.mjs +1 -1
- package/dist/presets.mjs +1 -1
- package/dist/serialization/CSSClassCollector.d.ts.map +1 -1
- package/dist/serialization/ContentHTMLTypes.d.ts +19 -1
- package/dist/serialization/ContentHTMLTypes.d.ts.map +1 -1
- package/dist/serialization/DocumentParser.d.ts.map +1 -1
- package/dist/serialization/DocumentSerializer.d.ts +3 -3
- package/dist/serialization/DocumentSerializer.d.ts.map +1 -1
- package/dist/serialization/HTMLWhitespace.d.ts +22 -0
- package/dist/serialization/HTMLWhitespace.d.ts.map +1 -0
- package/dist/serialization/MarkSerializer.d.ts.map +1 -1
- package/dist/serialization/index.d.ts +1 -1
- package/dist/serialization/index.d.ts.map +1 -1
- package/dist/state/BlockTreeOps.d.ts +8 -1
- package/dist/state/BlockTreeOps.d.ts.map +1 -1
- package/dist/state/EditorState.d.ts.map +1 -1
- package/dist/state/History.d.ts +20 -0
- package/dist/state/History.d.ts.map +1 -1
- package/dist/state/InlineContentOps.d.ts +30 -0
- package/dist/state/InlineContentOps.d.ts.map +1 -1
- package/dist/state/Mapping.d.ts +261 -0
- package/dist/state/Mapping.d.ts.map +1 -0
- package/dist/state/NavigationQueries.d.ts +11 -0
- package/dist/state/NavigationQueries.d.ts.map +1 -1
- package/dist/state/SelectionMapping.d.ts +25 -0
- package/dist/state/SelectionMapping.d.ts.map +1 -0
- package/dist/state/StepApplication.d.ts +20 -3
- package/dist/state/StepApplication.d.ts.map +1 -1
- package/dist/state/StepHandlers.d.ts +68 -0
- package/dist/state/StepHandlers.d.ts.map +1 -0
- package/dist/state/StepInversion.d.ts +22 -5
- package/dist/state/StepInversion.d.ts.map +1 -1
- package/dist/state/StepMapping.d.ts +18 -0
- package/dist/state/StepMapping.d.ts.map +1 -0
- package/dist/state/StepMaps.d.ts +25 -0
- package/dist/state/StepMaps.d.ts.map +1 -0
- package/dist/state/Steps.d.ts +38 -0
- package/dist/state/Steps.d.ts.map +1 -1
- package/dist/state/Transaction.d.ts +25 -1
- package/dist/state/Transaction.d.ts.map +1 -1
- package/dist/state/TransactionBuilder.d.ts +51 -7
- package/dist/state/TransactionBuilder.d.ts.map +1 -1
- package/dist/test/TestUtils.d.ts +3 -1
- package/dist/test/TestUtils.d.ts.map +1 -1
- package/dist/view/CaretNavigation.d.ts.map +1 -1
- package/dist/view/EditorView.d.ts.map +1 -1
- package/dist/view/SelectionSync.d.ts.map +1 -1
- package/dist/view/ViewMovementCommands.d.ts.map +1 -1
- package/package.json +16 -1
- package/dist/chunks/AlignmentPlugin-bqK6ze-E.mjs +0 -2
- package/dist/chunks/AlignmentPlugin-bqK6ze-E.mjs.map +0 -1
- package/dist/chunks/AttrRegistry-nDKtHK87.mjs +0 -2
- package/dist/chunks/AttrRegistry-nDKtHK87.mjs.map +0 -1
- package/dist/chunks/AttributedMarkCommands-35jTbVRg.mjs +0 -2
- package/dist/chunks/AttributedMarkCommands-35jTbVRg.mjs.map +0 -1
- package/dist/chunks/BidiIsolationPlugin-SIKxfWXp.mjs +0 -2
- package/dist/chunks/BidiIsolationPlugin-SIKxfWXp.mjs.map +0 -1
- package/dist/chunks/BlockInsertion-DsnHLcvM.mjs +0 -2
- package/dist/chunks/BlockInsertion-DsnHLcvM.mjs.map +0 -1
- package/dist/chunks/BlockTypePickerRegistry-C_jLddOz.mjs +0 -2
- package/dist/chunks/BlockTypePickerRegistry-C_jLddOz.mjs.map +0 -1
- package/dist/chunks/BlockquotePlugin-BEaZSoVT.mjs +0 -2
- package/dist/chunks/BlockquotePlugin-BEaZSoVT.mjs.map +0 -1
- package/dist/chunks/CaretNavigationPlugin-DHl61oc6.mjs +0 -2
- package/dist/chunks/CaretNavigationPlugin-DHl61oc6.mjs.map +0 -1
- package/dist/chunks/CodeBlockPlugin-DglqiSNK.mjs +0 -2
- package/dist/chunks/CodeBlockPlugin-DglqiSNK.mjs.map +0 -1
- package/dist/chunks/ColorGrid-Czm0p2E9.mjs +0 -2
- package/dist/chunks/ColorGrid-Czm0p2E9.mjs.map +0 -1
- package/dist/chunks/ColorPickerPopup-CL-W380M.mjs +0 -2
- package/dist/chunks/ColorPickerPopup-CL-W380M.mjs.map +0 -1
- package/dist/chunks/ColorValidation-CiGxVsqd.mjs +0 -2
- package/dist/chunks/ColorValidation-CiGxVsqd.mjs.map +0 -1
- package/dist/chunks/CommandHelpers-DTlQcGv5.mjs +0 -2
- package/dist/chunks/CommandHelpers-DTlQcGv5.mjs.map +0 -1
- package/dist/chunks/Commands-BuYF23lf.mjs +0 -2
- package/dist/chunks/Commands-BuYF23lf.mjs.map +0 -1
- package/dist/chunks/Decoration-oeHDjWWq.mjs +0 -2
- package/dist/chunks/Decoration-oeHDjWWq.mjs.map +0 -1
- package/dist/chunks/DirectionDetection-Hun6-7ER.mjs +0 -2
- package/dist/chunks/DirectionDetection-Hun6-7ER.mjs.map +0 -1
- package/dist/chunks/DirectionIcons-CfaDcQ9a.mjs +0 -2
- package/dist/chunks/DirectionIcons-CfaDcQ9a.mjs.map +0 -1
- package/dist/chunks/Document-_qdGR4vh.mjs +0 -2
- package/dist/chunks/Document-_qdGR4vh.mjs.map +0 -1
- package/dist/chunks/DocumentParser-CyATBOz-.mjs +0 -2
- package/dist/chunks/DocumentParser-CyATBOz-.mjs.map +0 -1
- package/dist/chunks/FontPlugin-B-Sxa0UW.mjs +0 -2
- package/dist/chunks/FontPlugin-B-Sxa0UW.mjs.map +0 -1
- package/dist/chunks/FontSizePlugin-C1zlyXL2.mjs +0 -2
- package/dist/chunks/FontSizePlugin-C1zlyXL2.mjs.map +0 -1
- package/dist/chunks/GapCursorNavigation-BaXDnjFf.mjs +0 -2
- package/dist/chunks/GapCursorNavigation-BaXDnjFf.mjs.map +0 -1
- package/dist/chunks/GapCursorPlugin-nldun8cE.mjs +0 -2
- package/dist/chunks/GapCursorPlugin-nldun8cE.mjs.map +0 -1
- package/dist/chunks/HardBreakPlugin-DZRdsE15.mjs +0 -2
- package/dist/chunks/HardBreakPlugin-DZRdsE15.mjs.map +0 -1
- package/dist/chunks/HeadingPlugin-EPAmsEGt.mjs +0 -2
- package/dist/chunks/HeadingPlugin-EPAmsEGt.mjs.map +0 -1
- package/dist/chunks/HighlightPlugin-RN3l6pVJ.mjs +0 -2
- package/dist/chunks/HighlightPlugin-RN3l6pVJ.mjs.map +0 -1
- package/dist/chunks/HorizontalRulePlugin-BJPXzTtJ.mjs +0 -2
- package/dist/chunks/HorizontalRulePlugin-BJPXzTtJ.mjs.map +0 -1
- package/dist/chunks/ImagePlugin-CCEevNfJ.mjs +0 -2
- package/dist/chunks/ImagePlugin-CCEevNfJ.mjs.map +0 -1
- package/dist/chunks/InlineCodePlugin-B7IOgUSI.mjs +0 -2
- package/dist/chunks/InlineCodePlugin-B7IOgUSI.mjs.map +0 -1
- package/dist/chunks/KeyboardNav-CsdlWnNl.mjs +0 -2
- package/dist/chunks/KeyboardNav-CsdlWnNl.mjs.map +0 -1
- package/dist/chunks/LinkPlugin-Bhwg24lH.mjs +0 -2
- package/dist/chunks/LinkPlugin-Bhwg24lH.mjs.map +0 -1
- package/dist/chunks/ListPlugin-BkG6UO4x.mjs +0 -2
- package/dist/chunks/ListPlugin-BkG6UO4x.mjs.map +0 -1
- package/dist/chunks/NavigationQueries-CgYPG6oY.mjs +0 -2
- package/dist/chunks/NavigationQueries-CgYPG6oY.mjs.map +0 -1
- package/dist/chunks/NodeResolver-DVPpO5nC.mjs +0 -2
- package/dist/chunks/NodeResolver-DVPpO5nC.mjs.map +0 -1
- package/dist/chunks/NodeSelectionCommands-Ddxu5Qck.mjs +0 -2
- package/dist/chunks/NodeSelectionCommands-Ddxu5Qck.mjs.map +0 -1
- package/dist/chunks/Platform-D9TRT4Mn.mjs +0 -2
- package/dist/chunks/Platform-D9TRT4Mn.mjs.map +0 -1
- package/dist/chunks/PluginHelpers-D-MvWR98.mjs +0 -2
- package/dist/chunks/PluginHelpers-D-MvWR98.mjs.map +0 -1
- package/dist/chunks/PopupKeyboardPatterns-DQdL7RHx.mjs +0 -2
- package/dist/chunks/PopupKeyboardPatterns-DQdL7RHx.mjs.map +0 -1
- package/dist/chunks/PopupManager-CxPzNm-P.mjs +0 -2
- package/dist/chunks/PopupManager-CxPzNm-P.mjs.map +0 -1
- package/dist/chunks/PopupPositioning-DRNwWB0U.mjs +0 -2
- package/dist/chunks/PopupPositioning-DRNwWB0U.mjs.map +0 -1
- package/dist/chunks/PrintPlugin-DOk5IZRO.mjs +0 -2
- package/dist/chunks/PrintPlugin-DOk5IZRO.mjs.map +0 -1
- package/dist/chunks/PrintTypes-Drk6kLcl.mjs +0 -2
- package/dist/chunks/PrintTypes-Drk6kLcl.mjs.map +0 -1
- package/dist/chunks/RangeIterator-DytL1lUT.mjs +0 -2
- package/dist/chunks/RangeIterator-DytL1lUT.mjs.map +0 -1
- package/dist/chunks/ShortcutFormatting-DE6B8iGs.mjs +0 -2
- package/dist/chunks/ShortcutFormatting-DE6B8iGs.mjs.map +0 -1
- package/dist/chunks/SmartPastePlugin-DqKx94sH.mjs +0 -2
- package/dist/chunks/SmartPastePlugin-DqKx94sH.mjs.map +0 -1
- package/dist/chunks/StrikethroughPlugin-vYNzfxdy.mjs +0 -2
- package/dist/chunks/StrikethroughPlugin-vYNzfxdy.mjs.map +0 -1
- package/dist/chunks/StyleRuntime-D3d1XFFe.mjs +0 -2
- package/dist/chunks/StyleRuntime-D3d1XFFe.mjs.map +0 -1
- package/dist/chunks/SuperSubPlugin-BNsoXWHS.mjs +0 -2
- package/dist/chunks/SuperSubPlugin-BNsoXWHS.mjs.map +0 -1
- package/dist/chunks/SyntaxTokenTypes-CVUAMov0.mjs +0 -2
- package/dist/chunks/SyntaxTokenTypes-CVUAMov0.mjs.map +0 -1
- package/dist/chunks/TablePlugin-R-hmydrM.mjs +0 -2
- package/dist/chunks/TablePlugin-R-hmydrM.mjs.map +0 -1
- package/dist/chunks/TextColorPlugin-DQ-CB9cr.mjs +0 -2
- package/dist/chunks/TextColorPlugin-DQ-CB9cr.mjs.map +0 -1
- package/dist/chunks/TextDirectionAutoPlugin-kZ1tcu0d.mjs +0 -2
- package/dist/chunks/TextDirectionAutoPlugin-kZ1tcu0d.mjs.map +0 -1
- package/dist/chunks/TextDirectionPlugin-Bk3CkbYh.mjs +0 -2
- package/dist/chunks/TextDirectionPlugin-Bk3CkbYh.mjs.map +0 -1
- package/dist/chunks/TextDirectionService-DY4M8EwU.mjs +0 -2
- package/dist/chunks/TextDirectionService-DY4M8EwU.mjs.map +0 -1
- package/dist/chunks/TextFormattingPlugin-D13eP6nF.mjs +0 -2
- package/dist/chunks/TextFormattingPlugin-D13eP6nF.mjs.map +0 -1
- package/dist/chunks/ToolbarPlugin-DeH8n5d2.mjs +0 -2
- package/dist/chunks/ToolbarPlugin-DeH8n5d2.mjs.map +0 -1
- package/dist/chunks/TypedKeys-CU7aToqY.mjs +0 -2
- package/dist/chunks/TypedKeys-CU7aToqY.mjs.map +0 -1
- package/dist/chunks/WordBoundary-BE2u997Q.mjs +0 -2
- package/dist/chunks/WordBoundary-BE2u997Q.mjs.map +0 -1
- package/dist/chunks/XmlDetector-BtYxzBDa.mjs +0 -2
- package/dist/chunks/XmlDetector-BtYxzBDa.mjs.map +0 -1
- package/dist/chunks/XmlPatterns-DuP8GWVt.mjs +0 -2
- package/dist/chunks/XmlPatterns-DuP8GWVt.mjs.map +0 -1
- package/dist/chunks/XmlSupport-D54BdAJZ.mjs +0 -2
- package/dist/chunks/XmlSupport-D54BdAJZ.mjs.map +0 -1
- package/dist/chunks/ar-2Fkz_6nI.mjs +0 -2
- package/dist/chunks/ar-2Fkz_6nI.mjs.map +0 -1
- package/dist/chunks/ar-4ZPC8daa.mjs +0 -2
- package/dist/chunks/ar-4ZPC8daa.mjs.map +0 -1
- package/dist/chunks/ar-6I20_Djq.mjs +0 -2
- package/dist/chunks/ar-6I20_Djq.mjs.map +0 -1
- package/dist/chunks/ar-B7-Dm70S.mjs +0 -2
- package/dist/chunks/ar-B7-Dm70S.mjs.map +0 -1
- package/dist/chunks/ar-BRe0t96G.mjs +0 -2
- package/dist/chunks/ar-BRe0t96G.mjs.map +0 -1
- package/dist/chunks/ar-BnNyrtdi.mjs +0 -2
- package/dist/chunks/ar-BnNyrtdi.mjs.map +0 -1
- package/dist/chunks/ar-BsMfhWs5.mjs +0 -2
- package/dist/chunks/ar-BsMfhWs5.mjs.map +0 -1
- package/dist/chunks/ar-Bvja-bjE.mjs +0 -2
- package/dist/chunks/ar-Bvja-bjE.mjs.map +0 -1
- package/dist/chunks/ar-BxVbBvSa.mjs +0 -2
- package/dist/chunks/ar-BxVbBvSa.mjs.map +0 -1
- package/dist/chunks/ar-C5dW-co3.mjs +0 -2
- package/dist/chunks/ar-C5dW-co3.mjs.map +0 -1
- package/dist/chunks/ar-CARMr30L.mjs +0 -2
- package/dist/chunks/ar-CARMr30L.mjs.map +0 -1
- package/dist/chunks/ar-CB-pehGw.mjs +0 -2
- package/dist/chunks/ar-CB-pehGw.mjs.map +0 -1
- package/dist/chunks/ar-CEYgAxTM.mjs +0 -2
- package/dist/chunks/ar-CEYgAxTM.mjs.map +0 -1
- package/dist/chunks/ar-CO60qpZJ.mjs +0 -2
- package/dist/chunks/ar-CO60qpZJ.mjs.map +0 -1
- package/dist/chunks/ar-CtI_snUM.mjs +0 -2
- package/dist/chunks/ar-CtI_snUM.mjs.map +0 -1
- package/dist/chunks/ar-Cv1RQvhK.mjs +0 -2
- package/dist/chunks/ar-Cv1RQvhK.mjs.map +0 -1
- package/dist/chunks/ar-D5jV20Tu.mjs +0 -2
- package/dist/chunks/ar-D5jV20Tu.mjs.map +0 -1
- package/dist/chunks/ar-DJN9fQ7Z.mjs +0 -2
- package/dist/chunks/ar-DJN9fQ7Z.mjs.map +0 -1
- package/dist/chunks/ar-DPTsUnwA.mjs +0 -2
- package/dist/chunks/ar-DPTsUnwA.mjs.map +0 -1
- package/dist/chunks/ar-DZJIBD1Q.mjs +0 -2
- package/dist/chunks/ar-DZJIBD1Q.mjs.map +0 -1
- package/dist/chunks/ar-DkkbwV93.mjs +0 -2
- package/dist/chunks/ar-DkkbwV93.mjs.map +0 -1
- package/dist/chunks/ar-DmeMor8Y.mjs +0 -2
- package/dist/chunks/ar-DmeMor8Y.mjs.map +0 -1
- package/dist/chunks/ar-LnE7jPai.mjs +0 -2
- package/dist/chunks/ar-LnE7jPai.mjs.map +0 -1
- package/dist/chunks/ar-P3wW0fmA.mjs +0 -2
- package/dist/chunks/ar-P3wW0fmA.mjs.map +0 -1
- package/dist/chunks/ar-uum0DCfv.mjs +0 -2
- package/dist/chunks/ar-uum0DCfv.mjs.map +0 -1
- package/dist/chunks/color-picker-DlXhHBZ6.mjs +0 -2
- package/dist/chunks/color-picker-DlXhHBZ6.mjs.map +0 -1
- package/dist/chunks/de-8SHQu0rr.mjs +0 -2
- package/dist/chunks/de-8SHQu0rr.mjs.map +0 -1
- package/dist/chunks/de-B8a71A0X.mjs +0 -2
- package/dist/chunks/de-B8a71A0X.mjs.map +0 -1
- package/dist/chunks/de-B9weXoA1.mjs +0 -2
- package/dist/chunks/de-B9weXoA1.mjs.map +0 -1
- package/dist/chunks/de-BKm53tVU.mjs +0 -2
- package/dist/chunks/de-BKm53tVU.mjs.map +0 -1
- package/dist/chunks/de-BLWrnMfX.mjs +0 -2
- package/dist/chunks/de-BLWrnMfX.mjs.map +0 -1
- package/dist/chunks/de-BOujs1pF.mjs +0 -2
- package/dist/chunks/de-BOujs1pF.mjs.map +0 -1
- package/dist/chunks/de-B_1XleAG.mjs +0 -2
- package/dist/chunks/de-B_1XleAG.mjs.map +0 -1
- package/dist/chunks/de-BpmjrOMc.mjs +0 -2
- package/dist/chunks/de-BpmjrOMc.mjs.map +0 -1
- package/dist/chunks/de-C8OHD1fm.mjs +0 -2
- package/dist/chunks/de-C8OHD1fm.mjs.map +0 -1
- package/dist/chunks/de-CAVCXBBR.mjs +0 -2
- package/dist/chunks/de-CAVCXBBR.mjs.map +0 -1
- package/dist/chunks/de-CkMnuozT.mjs +0 -2
- package/dist/chunks/de-CkMnuozT.mjs.map +0 -1
- package/dist/chunks/de-CtDnvnnm.mjs +0 -2
- package/dist/chunks/de-CtDnvnnm.mjs.map +0 -1
- package/dist/chunks/de-Cz26vtXW.mjs +0 -2
- package/dist/chunks/de-Cz26vtXW.mjs.map +0 -1
- package/dist/chunks/de-D0BPSP3j.mjs +0 -2
- package/dist/chunks/de-D0BPSP3j.mjs.map +0 -1
- package/dist/chunks/de-D74v0paw.mjs +0 -2
- package/dist/chunks/de-D74v0paw.mjs.map +0 -1
- package/dist/chunks/de-DKj55F9g.mjs +0 -2
- package/dist/chunks/de-DKj55F9g.mjs.map +0 -1
- package/dist/chunks/de-DYuRb98l.mjs +0 -2
- package/dist/chunks/de-DYuRb98l.mjs.map +0 -1
- package/dist/chunks/de-DaK0-sdo.mjs +0 -2
- package/dist/chunks/de-DaK0-sdo.mjs.map +0 -1
- package/dist/chunks/de-Dia08Wsq.mjs +0 -2
- package/dist/chunks/de-Dia08Wsq.mjs.map +0 -1
- package/dist/chunks/de-Dp_uj2Z3.mjs +0 -2
- package/dist/chunks/de-Dp_uj2Z3.mjs.map +0 -1
- package/dist/chunks/de-DwX1CDNO.mjs +0 -2
- package/dist/chunks/de-DwX1CDNO.mjs.map +0 -1
- package/dist/chunks/de-DyF2mRfw.mjs +0 -2
- package/dist/chunks/de-DyF2mRfw.mjs.map +0 -1
- package/dist/chunks/de-X3BLBlF8.mjs +0 -2
- package/dist/chunks/de-X3BLBlF8.mjs.map +0 -1
- package/dist/chunks/de-dPC3Qk7N.mjs +0 -2
- package/dist/chunks/de-dPC3Qk7N.mjs.map +0 -1
- package/dist/chunks/de-pLGt5S7j.mjs +0 -2
- package/dist/chunks/de-pLGt5S7j.mjs.map +0 -1
- package/dist/chunks/es--xozZF4T.mjs +0 -2
- package/dist/chunks/es--xozZF4T.mjs.map +0 -1
- package/dist/chunks/es-2BjtTusm.mjs +0 -2
- package/dist/chunks/es-2BjtTusm.mjs.map +0 -1
- package/dist/chunks/es-B2rEK7_f.mjs +0 -2
- package/dist/chunks/es-B2rEK7_f.mjs.map +0 -1
- package/dist/chunks/es-B9esmUm1.mjs +0 -2
- package/dist/chunks/es-B9esmUm1.mjs.map +0 -1
- package/dist/chunks/es-BJxkHalP.mjs +0 -2
- package/dist/chunks/es-BJxkHalP.mjs.map +0 -1
- package/dist/chunks/es-BMKsnh3y.mjs +0 -2
- package/dist/chunks/es-BMKsnh3y.mjs.map +0 -1
- package/dist/chunks/es-BXFflrrU.mjs +0 -2
- package/dist/chunks/es-BXFflrrU.mjs.map +0 -1
- package/dist/chunks/es-BbX_lEEN.mjs +0 -2
- package/dist/chunks/es-BbX_lEEN.mjs.map +0 -1
- package/dist/chunks/es-BlHe_tc0.mjs +0 -2
- package/dist/chunks/es-BlHe_tc0.mjs.map +0 -1
- package/dist/chunks/es-Bu6nnEeT.mjs +0 -2
- package/dist/chunks/es-Bu6nnEeT.mjs.map +0 -1
- package/dist/chunks/es-Bx0CbUoY.mjs +0 -2
- package/dist/chunks/es-Bx0CbUoY.mjs.map +0 -1
- package/dist/chunks/es-CE9Tbsb7.mjs +0 -2
- package/dist/chunks/es-CE9Tbsb7.mjs.map +0 -1
- package/dist/chunks/es-COSomns3.mjs +0 -2
- package/dist/chunks/es-COSomns3.mjs.map +0 -1
- package/dist/chunks/es-C_7qthHu.mjs +0 -2
- package/dist/chunks/es-C_7qthHu.mjs.map +0 -1
- package/dist/chunks/es-CirfP3x1.mjs +0 -2
- package/dist/chunks/es-CirfP3x1.mjs.map +0 -1
- package/dist/chunks/es-CpF8eiPr.mjs +0 -2
- package/dist/chunks/es-CpF8eiPr.mjs.map +0 -1
- package/dist/chunks/es-D787y0ui.mjs +0 -2
- package/dist/chunks/es-D787y0ui.mjs.map +0 -1
- package/dist/chunks/es-D8iB5vwQ.mjs +0 -2
- package/dist/chunks/es-D8iB5vwQ.mjs.map +0 -1
- package/dist/chunks/es-DBb78XWu.mjs +0 -2
- package/dist/chunks/es-DBb78XWu.mjs.map +0 -1
- package/dist/chunks/es-DC6mYTD3.mjs +0 -2
- package/dist/chunks/es-DC6mYTD3.mjs.map +0 -1
- package/dist/chunks/es-Dh--mRZs.mjs +0 -2
- package/dist/chunks/es-Dh--mRZs.mjs.map +0 -1
- package/dist/chunks/es-DvPsYqFj.mjs +0 -2
- package/dist/chunks/es-DvPsYqFj.mjs.map +0 -1
- package/dist/chunks/es-DxXimuUa.mjs +0 -2
- package/dist/chunks/es-DxXimuUa.mjs.map +0 -1
- package/dist/chunks/es-mWJptxq3.mjs +0 -2
- package/dist/chunks/es-mWJptxq3.mjs.map +0 -1
- package/dist/chunks/es-qYV--o6U.mjs +0 -2
- package/dist/chunks/es-qYV--o6U.mjs.map +0 -1
- package/dist/chunks/fonts-CxtWyeNB.mjs +0 -2
- package/dist/chunks/fonts-CxtWyeNB.mjs.map +0 -1
- package/dist/chunks/fr--F426oao.mjs +0 -2
- package/dist/chunks/fr--F426oao.mjs.map +0 -1
- package/dist/chunks/fr-B0BPbbNB.mjs +0 -2
- package/dist/chunks/fr-B0BPbbNB.mjs.map +0 -1
- package/dist/chunks/fr-B4UQy0j-.mjs +0 -2
- package/dist/chunks/fr-B4UQy0j-.mjs.map +0 -1
- package/dist/chunks/fr-B4XLxkci.mjs +0 -2
- package/dist/chunks/fr-B4XLxkci.mjs.map +0 -1
- package/dist/chunks/fr-BC1Rfp9S.mjs +0 -2
- package/dist/chunks/fr-BC1Rfp9S.mjs.map +0 -1
- package/dist/chunks/fr-BRGGu0E2.mjs +0 -2
- package/dist/chunks/fr-BRGGu0E2.mjs.map +0 -1
- package/dist/chunks/fr-BoSz1pa9.mjs +0 -2
- package/dist/chunks/fr-BoSz1pa9.mjs.map +0 -1
- package/dist/chunks/fr-Bom3RFIN.mjs +0 -2
- package/dist/chunks/fr-Bom3RFIN.mjs.map +0 -1
- package/dist/chunks/fr-BtnwMUII.mjs +0 -2
- package/dist/chunks/fr-BtnwMUII.mjs.map +0 -1
- package/dist/chunks/fr-C6pglM3H.mjs +0 -2
- package/dist/chunks/fr-C6pglM3H.mjs.map +0 -1
- package/dist/chunks/fr-CDBpS6xE.mjs +0 -2
- package/dist/chunks/fr-CDBpS6xE.mjs.map +0 -1
- package/dist/chunks/fr-CN0ihkUg.mjs +0 -2
- package/dist/chunks/fr-CN0ihkUg.mjs.map +0 -1
- package/dist/chunks/fr-CNNBBeLM.mjs +0 -2
- package/dist/chunks/fr-CNNBBeLM.mjs.map +0 -1
- package/dist/chunks/fr-CVOY2y07.mjs +0 -2
- package/dist/chunks/fr-CVOY2y07.mjs.map +0 -1
- package/dist/chunks/fr-CZAbL_o0.mjs +0 -2
- package/dist/chunks/fr-CZAbL_o0.mjs.map +0 -1
- package/dist/chunks/fr-DJkPmQG_.mjs +0 -2
- package/dist/chunks/fr-DJkPmQG_.mjs.map +0 -1
- package/dist/chunks/fr-DkWdFDsR.mjs +0 -2
- package/dist/chunks/fr-DkWdFDsR.mjs.map +0 -1
- package/dist/chunks/fr-DnQHoPVo.mjs +0 -2
- package/dist/chunks/fr-DnQHoPVo.mjs.map +0 -1
- package/dist/chunks/fr-DsdueaiG.mjs +0 -2
- package/dist/chunks/fr-DsdueaiG.mjs.map +0 -1
- package/dist/chunks/fr-DxNdsa11.mjs +0 -2
- package/dist/chunks/fr-DxNdsa11.mjs.map +0 -1
- package/dist/chunks/fr-IO4_LYvE.mjs +0 -2
- package/dist/chunks/fr-IO4_LYvE.mjs.map +0 -1
- package/dist/chunks/fr-ZKDCEpww.mjs +0 -2
- package/dist/chunks/fr-ZKDCEpww.mjs.map +0 -1
- package/dist/chunks/fr-coufP_et.mjs +0 -2
- package/dist/chunks/fr-coufP_et.mjs.map +0 -1
- package/dist/chunks/fr-lYSOgOK7.mjs +0 -2
- package/dist/chunks/fr-lYSOgOK7.mjs.map +0 -1
- package/dist/chunks/fr-wobtRjcF.mjs +0 -2
- package/dist/chunks/fr-wobtRjcF.mjs.map +0 -1
- package/dist/chunks/full-5hGvv-bG.mjs +0 -2
- package/dist/chunks/full-5hGvv-bG.mjs.map +0 -1
- package/dist/chunks/hi-B0o90MFd.mjs +0 -2
- package/dist/chunks/hi-B0o90MFd.mjs.map +0 -1
- package/dist/chunks/hi-BFko34WG.mjs +0 -2
- package/dist/chunks/hi-BFko34WG.mjs.map +0 -1
- package/dist/chunks/hi-BVxSgaNT.mjs +0 -2
- package/dist/chunks/hi-BVxSgaNT.mjs.map +0 -1
- package/dist/chunks/hi-BirBQ5Ef.mjs +0 -2
- package/dist/chunks/hi-BirBQ5Ef.mjs.map +0 -1
- package/dist/chunks/hi-BnsbcSIX.mjs +0 -2
- package/dist/chunks/hi-BnsbcSIX.mjs.map +0 -1
- package/dist/chunks/hi-BoFuxLtG.mjs +0 -2
- package/dist/chunks/hi-BoFuxLtG.mjs.map +0 -1
- package/dist/chunks/hi-BptyTwAv.mjs +0 -2
- package/dist/chunks/hi-BptyTwAv.mjs.map +0 -1
- package/dist/chunks/hi-BulaYhi_.mjs +0 -2
- package/dist/chunks/hi-BulaYhi_.mjs.map +0 -1
- package/dist/chunks/hi-BzflHG6Y.mjs +0 -2
- package/dist/chunks/hi-BzflHG6Y.mjs.map +0 -1
- package/dist/chunks/hi-C7Hb-gQ_.mjs +0 -2
- package/dist/chunks/hi-C7Hb-gQ_.mjs.map +0 -1
- package/dist/chunks/hi-C_lY7kA9.mjs +0 -2
- package/dist/chunks/hi-C_lY7kA9.mjs.map +0 -1
- package/dist/chunks/hi-CkylXoIm.mjs +0 -2
- package/dist/chunks/hi-CkylXoIm.mjs.map +0 -1
- package/dist/chunks/hi-DGJTbrQi.mjs +0 -2
- package/dist/chunks/hi-DGJTbrQi.mjs.map +0 -1
- package/dist/chunks/hi-DGJgX0fG.mjs +0 -2
- package/dist/chunks/hi-DGJgX0fG.mjs.map +0 -1
- package/dist/chunks/hi-DKDYpjdr.mjs +0 -2
- package/dist/chunks/hi-DKDYpjdr.mjs.map +0 -1
- package/dist/chunks/hi-DfAX8S-T.mjs +0 -2
- package/dist/chunks/hi-DfAX8S-T.mjs.map +0 -1
- package/dist/chunks/hi-Dhq91ipt.mjs +0 -2
- package/dist/chunks/hi-Dhq91ipt.mjs.map +0 -1
- package/dist/chunks/hi-Dup389dM.mjs +0 -2
- package/dist/chunks/hi-Dup389dM.mjs.map +0 -1
- package/dist/chunks/hi-DzRFsYYN.mjs +0 -2
- package/dist/chunks/hi-DzRFsYYN.mjs.map +0 -1
- package/dist/chunks/hi-ObZRwITd.mjs +0 -2
- package/dist/chunks/hi-ObZRwITd.mjs.map +0 -1
- package/dist/chunks/hi-VvUzjfH_.mjs +0 -2
- package/dist/chunks/hi-VvUzjfH_.mjs.map +0 -1
- package/dist/chunks/hi-jWQDQkOX.mjs +0 -2
- package/dist/chunks/hi-jWQDQkOX.mjs.map +0 -1
- package/dist/chunks/hi-l3hIrp8J.mjs +0 -2
- package/dist/chunks/hi-l3hIrp8J.mjs.map +0 -1
- package/dist/chunks/hi-o8Gsu5Ly.mjs +0 -2
- package/dist/chunks/hi-o8Gsu5Ly.mjs.map +0 -1
- package/dist/chunks/hi-sxC2nk3h.mjs +0 -2
- package/dist/chunks/hi-sxC2nk3h.mjs.map +0 -1
- package/dist/chunks/minimal-pBhi4EJI.mjs +0 -2
- package/dist/chunks/minimal-pBhi4EJI.mjs.map +0 -1
- package/dist/chunks/pt--57Ug7ig.mjs +0 -2
- package/dist/chunks/pt--57Ug7ig.mjs.map +0 -1
- package/dist/chunks/pt-4j8Km9Db.mjs +0 -2
- package/dist/chunks/pt-4j8Km9Db.mjs.map +0 -1
- package/dist/chunks/pt-BTGFKCns.mjs +0 -2
- package/dist/chunks/pt-BTGFKCns.mjs.map +0 -1
- package/dist/chunks/pt-BU8Qfuoz.mjs +0 -2
- package/dist/chunks/pt-BU8Qfuoz.mjs.map +0 -1
- package/dist/chunks/pt-BYAOJxIB.mjs +0 -2
- package/dist/chunks/pt-BYAOJxIB.mjs.map +0 -1
- package/dist/chunks/pt-BjNWQm9A.mjs +0 -2
- package/dist/chunks/pt-BjNWQm9A.mjs.map +0 -1
- package/dist/chunks/pt-Bvnb_NpT.mjs +0 -2
- package/dist/chunks/pt-Bvnb_NpT.mjs.map +0 -1
- package/dist/chunks/pt-C2pkn7vo.mjs +0 -2
- package/dist/chunks/pt-C2pkn7vo.mjs.map +0 -1
- package/dist/chunks/pt-C8MhLnWx.mjs +0 -2
- package/dist/chunks/pt-C8MhLnWx.mjs.map +0 -1
- package/dist/chunks/pt-CJfYLSTe.mjs +0 -2
- package/dist/chunks/pt-CJfYLSTe.mjs.map +0 -1
- package/dist/chunks/pt-CdwVIYOK.mjs +0 -2
- package/dist/chunks/pt-CdwVIYOK.mjs.map +0 -1
- package/dist/chunks/pt-CwrVo90O.mjs +0 -2
- package/dist/chunks/pt-CwrVo90O.mjs.map +0 -1
- package/dist/chunks/pt-DD26CKCA.mjs +0 -2
- package/dist/chunks/pt-DD26CKCA.mjs.map +0 -1
- package/dist/chunks/pt-DLbf6uoo.mjs +0 -2
- package/dist/chunks/pt-DLbf6uoo.mjs.map +0 -1
- package/dist/chunks/pt-DNyNHwKh.mjs +0 -2
- package/dist/chunks/pt-DNyNHwKh.mjs.map +0 -1
- package/dist/chunks/pt-DVfMAcXb.mjs +0 -2
- package/dist/chunks/pt-DVfMAcXb.mjs.map +0 -1
- package/dist/chunks/pt-DWSFad3n.mjs +0 -2
- package/dist/chunks/pt-DWSFad3n.mjs.map +0 -1
- package/dist/chunks/pt-DZXY4i4G.mjs +0 -2
- package/dist/chunks/pt-DZXY4i4G.mjs.map +0 -1
- package/dist/chunks/pt-DfUpRhK1.mjs +0 -2
- package/dist/chunks/pt-DfUpRhK1.mjs.map +0 -1
- package/dist/chunks/pt-DlvNEDeW.mjs +0 -2
- package/dist/chunks/pt-DlvNEDeW.mjs.map +0 -1
- package/dist/chunks/pt-DzFyGwB4.mjs +0 -2
- package/dist/chunks/pt-DzFyGwB4.mjs.map +0 -1
- package/dist/chunks/pt-HhQcARW6.mjs +0 -2
- package/dist/chunks/pt-HhQcARW6.mjs.map +0 -1
- package/dist/chunks/pt-SjvTF40s.mjs +0 -2
- package/dist/chunks/pt-SjvTF40s.mjs.map +0 -1
- package/dist/chunks/pt-ihNE0VQJ.mjs +0 -2
- package/dist/chunks/pt-ihNE0VQJ.mjs.map +0 -1
- package/dist/chunks/pt-zfCjhIgy.mjs +0 -2
- package/dist/chunks/pt-zfCjhIgy.mjs.map +0 -1
- package/dist/chunks/ru-0AHodbWv.mjs +0 -2
- package/dist/chunks/ru-0AHodbWv.mjs.map +0 -1
- package/dist/chunks/ru-2MDGmLw0.mjs +0 -2
- package/dist/chunks/ru-2MDGmLw0.mjs.map +0 -1
- package/dist/chunks/ru-3VfYKfTm.mjs +0 -2
- package/dist/chunks/ru-3VfYKfTm.mjs.map +0 -1
- package/dist/chunks/ru-B-gRJ6nQ.mjs +0 -2
- package/dist/chunks/ru-B-gRJ6nQ.mjs.map +0 -1
- package/dist/chunks/ru-B6ITUB-Y.mjs +0 -2
- package/dist/chunks/ru-B6ITUB-Y.mjs.map +0 -1
- package/dist/chunks/ru-BKDWkabk.mjs +0 -2
- package/dist/chunks/ru-BKDWkabk.mjs.map +0 -1
- package/dist/chunks/ru-BMxJsSe3.mjs +0 -2
- package/dist/chunks/ru-BMxJsSe3.mjs.map +0 -1
- package/dist/chunks/ru-Bep1iHQL.mjs +0 -2
- package/dist/chunks/ru-Bep1iHQL.mjs.map +0 -1
- package/dist/chunks/ru-Blj0nqoL.mjs +0 -2
- package/dist/chunks/ru-Blj0nqoL.mjs.map +0 -1
- package/dist/chunks/ru-BqnHkmii.mjs +0 -2
- package/dist/chunks/ru-BqnHkmii.mjs.map +0 -1
- package/dist/chunks/ru-C-4AaPUK.mjs +0 -2
- package/dist/chunks/ru-C-4AaPUK.mjs.map +0 -1
- package/dist/chunks/ru-C9Nv7JJI.mjs +0 -2
- package/dist/chunks/ru-C9Nv7JJI.mjs.map +0 -1
- package/dist/chunks/ru-CJFtr1Ks.mjs +0 -2
- package/dist/chunks/ru-CJFtr1Ks.mjs.map +0 -1
- package/dist/chunks/ru-CN63yWk_.mjs +0 -2
- package/dist/chunks/ru-CN63yWk_.mjs.map +0 -1
- package/dist/chunks/ru-CcFX97-2.mjs +0 -2
- package/dist/chunks/ru-CcFX97-2.mjs.map +0 -1
- package/dist/chunks/ru-D8PhWFSp.mjs +0 -2
- package/dist/chunks/ru-D8PhWFSp.mjs.map +0 -1
- package/dist/chunks/ru-DYAncidS.mjs +0 -2
- package/dist/chunks/ru-DYAncidS.mjs.map +0 -1
- package/dist/chunks/ru-D_zXo-FA.mjs +0 -2
- package/dist/chunks/ru-D_zXo-FA.mjs.map +0 -1
- package/dist/chunks/ru-DhSPV6m0.mjs +0 -2
- package/dist/chunks/ru-DhSPV6m0.mjs.map +0 -1
- package/dist/chunks/ru-LNbpjKCw.mjs +0 -2
- package/dist/chunks/ru-LNbpjKCw.mjs.map +0 -1
- package/dist/chunks/ru-LXi1ONW4.mjs +0 -2
- package/dist/chunks/ru-LXi1ONW4.mjs.map +0 -1
- package/dist/chunks/ru-db7wsWkx.mjs +0 -2
- package/dist/chunks/ru-db7wsWkx.mjs.map +0 -1
- package/dist/chunks/ru-nZ4BjiD0.mjs +0 -2
- package/dist/chunks/ru-nZ4BjiD0.mjs.map +0 -1
- package/dist/chunks/ru-v9zumXd2.mjs +0 -2
- package/dist/chunks/ru-v9zumXd2.mjs.map +0 -1
- package/dist/chunks/ru-wK2ytv3A.mjs +0 -2
- package/dist/chunks/ru-wK2ytv3A.mjs.map +0 -1
- package/dist/chunks/src-CNK6vpUU.mjs +0 -2
- package/dist/chunks/src-CNK6vpUU.mjs.map +0 -1
- package/dist/chunks/zh-9AcCSFm0.mjs +0 -2
- package/dist/chunks/zh-9AcCSFm0.mjs.map +0 -1
- package/dist/chunks/zh-B3bJCfdB.mjs +0 -2
- package/dist/chunks/zh-B3bJCfdB.mjs.map +0 -1
- package/dist/chunks/zh-B46Dt1h7.mjs +0 -2
- package/dist/chunks/zh-B46Dt1h7.mjs.map +0 -1
- package/dist/chunks/zh-BRy2B6Og.mjs +0 -2
- package/dist/chunks/zh-BRy2B6Og.mjs.map +0 -1
- package/dist/chunks/zh-BfYi8wB2.mjs +0 -2
- package/dist/chunks/zh-BfYi8wB2.mjs.map +0 -1
- package/dist/chunks/zh-C0I3L6NA.mjs +0 -2
- package/dist/chunks/zh-C0I3L6NA.mjs.map +0 -1
- package/dist/chunks/zh-C33e4gfg.mjs +0 -2
- package/dist/chunks/zh-C33e4gfg.mjs.map +0 -1
- package/dist/chunks/zh-C9sNwnC1.mjs +0 -2
- package/dist/chunks/zh-C9sNwnC1.mjs.map +0 -1
- package/dist/chunks/zh-CACr0qSo.mjs +0 -2
- package/dist/chunks/zh-CACr0qSo.mjs.map +0 -1
- package/dist/chunks/zh-CU0hd8zq.mjs +0 -2
- package/dist/chunks/zh-CU0hd8zq.mjs.map +0 -1
- package/dist/chunks/zh-CX2zUoWR.mjs +0 -2
- package/dist/chunks/zh-CX2zUoWR.mjs.map +0 -1
- package/dist/chunks/zh-CblZ-34H.mjs +0 -2
- package/dist/chunks/zh-CblZ-34H.mjs.map +0 -1
- package/dist/chunks/zh-CicpU0g8.mjs +0 -2
- package/dist/chunks/zh-CicpU0g8.mjs.map +0 -1
- package/dist/chunks/zh-Cr3KdEZV.mjs +0 -2
- package/dist/chunks/zh-Cr3KdEZV.mjs.map +0 -1
- package/dist/chunks/zh-D24dsCiw.mjs +0 -2
- package/dist/chunks/zh-D24dsCiw.mjs.map +0 -1
- package/dist/chunks/zh-DQtLxQ3s.mjs +0 -2
- package/dist/chunks/zh-DQtLxQ3s.mjs.map +0 -1
- package/dist/chunks/zh-DR1OF5vm.mjs +0 -2
- package/dist/chunks/zh-DR1OF5vm.mjs.map +0 -1
- package/dist/chunks/zh-DS82x1KL.mjs +0 -2
- package/dist/chunks/zh-DS82x1KL.mjs.map +0 -1
- package/dist/chunks/zh-DdJA-AEY.mjs +0 -2
- package/dist/chunks/zh-DdJA-AEY.mjs.map +0 -1
- package/dist/chunks/zh-DpVlDZ9n.mjs +0 -2
- package/dist/chunks/zh-DpVlDZ9n.mjs.map +0 -1
- package/dist/chunks/zh-OWVKcbVR.mjs +0 -2
- package/dist/chunks/zh-OWVKcbVR.mjs.map +0 -1
- package/dist/chunks/zh-d19V68ib.mjs +0 -2
- package/dist/chunks/zh-d19V68ib.mjs.map +0 -1
- package/dist/chunks/zh-fSMt1FnB.mjs +0 -2
- package/dist/chunks/zh-fSMt1FnB.mjs.map +0 -1
- package/dist/chunks/zh-mLlk9Wki.mjs +0 -2
- package/dist/chunks/zh-mLlk9Wki.mjs.map +0 -1
- package/dist/chunks/zh-nnMt8E6m.mjs +0 -2
- package/dist/chunks/zh-nnMt8E6m.mjs.map +0 -1
- package/dist/input/InternalClipboard.d.ts +0 -13
- package/dist/input/InternalClipboard.d.ts.map +0 -1
- package/dist/plugins/smart-paste/detectors/JavaDetector.d.ts +0 -7
- package/dist/plugins/smart-paste/detectors/JavaDetector.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SmartPastePlugin-DqKx94sH.mjs","names":[],"sources":["../../src/plugins/smart-paste/ContentSplitter.ts","../../src/plugins/smart-paste/SmartPasteLocale.ts","../../src/plugins/smart-paste/SmartPasteTypes.ts","../../src/plugins/smart-paste/SmartPastePlugin.ts"],"sourcesContent":["/**\n * Splits pasted text at blank-line boundaries and classifies each segment\n * using content detectors. Adjacent segments of the same type are merged.\n */\n\nimport type { ContentDetector, DetectionResult, PasteSegment } from './SmartPasteTypes.js';\n\n/** Pattern matching one or more consecutive blank lines (may contain whitespace). */\nconst BLANK_LINE_SPLIT: RegExp = /\\n(?:[ \\t]*\\n)+/;\n\n/**\n * Splits text at blank-line boundaries and classifies each segment\n * using the provided detectors. Returns null if no code is detected\n * in any segment (the paste should fall through to default handling).\n */\nexport function splitAndClassify(\n\ttext: string,\n\tdetectors: readonly ContentDetector[],\n): readonly PasteSegment[] | null {\n\tconst rawSegments: readonly string[] = text.split(BLANK_LINE_SPLIT);\n\tconst trimmed: readonly string[] = rawSegments\n\t\t.map((s: string) => s.trim())\n\t\t.filter((s: string) => s.length > 0);\n\n\tif (trimmed.length === 0) return null;\n\n\tlet hasCode = false;\n\tconst segments: PasteSegment[] = trimmed.map((segmentText: string): PasteSegment => {\n\t\tconst detection: DetectionResult | null = detectBest(segmentText, detectors);\n\t\tif (detection) hasCode = true;\n\t\treturn { text: segmentText, detection };\n\t});\n\n\tif (!hasCode) return null;\n\n\treturn mergeAdjacentSegments(segments);\n}\n\n/**\n * Merges adjacent segments that share the same classification:\n * consecutive text segments become one paragraph, consecutive code\n * segments of the same language become one code block.\n */\nexport function mergeAdjacentSegments(segments: readonly PasteSegment[]): readonly PasteSegment[] {\n\tif (segments.length <= 1) return segments;\n\n\tconst merged: PasteSegment[] = [segments[0] as PasteSegment];\n\n\tfor (let i = 1; i < segments.length; i++) {\n\t\tconst current: PasteSegment = segments[i] as PasteSegment;\n\t\tconst previous: PasteSegment = merged[merged.length - 1] as PasteSegment;\n\n\t\tif (canMerge(previous, current)) {\n\t\t\tmerged[merged.length - 1] = merge(previous, current);\n\t\t} else {\n\t\t\tmerged.push(current);\n\t\t}\n\t}\n\n\treturn merged;\n}\n\n/** Picks the highest-confidence detection result from all detectors. */\nfunction detectBest(text: string, detectors: readonly ContentDetector[]): DetectionResult | null {\n\tlet best: DetectionResult | null = null;\n\n\tfor (const detector of detectors) {\n\t\tconst result: DetectionResult | null = detector.detect(text);\n\t\tif (result && (best === null || result.confidence > best.confidence)) {\n\t\t\tbest = result;\n\t\t}\n\t}\n\n\treturn best;\n}\n\n/** Two segments can merge if both are text or both are code of the same language. */\nfunction canMerge(a: PasteSegment, b: PasteSegment): boolean {\n\tif (!a.detection && !b.detection) return true;\n\tif (a.detection && b.detection) return a.detection.language === b.detection.language;\n\treturn false;\n}\n\n/** Merges two compatible segments into one. */\nfunction merge(a: PasteSegment, b: PasteSegment): PasteSegment {\n\tconst joinedText: string = `${a.text}\\n\\n${b.text}`;\n\n\tif (!a.detection && !b.detection) {\n\t\treturn { text: joinedText, detection: null };\n\t}\n\n\tconst detA: DetectionResult = a.detection as DetectionResult;\n\tconst detB: DetectionResult = b.detection as DetectionResult;\n\n\treturn {\n\t\ttext: joinedText,\n\t\tdetection: {\n\t\t\tlanguage: detA.language,\n\t\t\tformattedText: `${detA.formattedText}\\n\\n${detB.formattedText}`,\n\t\t\tconfidence: Math.max(detA.confidence, detB.confidence),\n\t\t},\n\t};\n}\n","/** Locale interface and default English locale for the SmartPastePlugin. */\n\nimport { type LocaleModuleMap, loadLocaleModule } from '../shared/LocaleLoader.js';\n\nexport interface SmartPasteLocale {\n\treadonly detectedAsCodeBlock: (language: string) => string;\n\treadonly detectedMixedContent: (\n\t\ttextCount: number,\n\t\tcodeCount: number,\n\t\tlanguages: readonly string[],\n\t) => string;\n}\n\nexport const SMART_PASTE_LOCALE_EN: SmartPasteLocale = {\n\tdetectedAsCodeBlock: (language: string) =>\n\t\t`Pasted as ${language} code block with syntax highlighting.`,\n\tdetectedMixedContent: (textCount: number, codeCount: number, languages: readonly string[]) => {\n\t\tconst parts: string[] = [];\n\t\tif (textCount > 0) {\n\t\t\tparts.push(`${textCount} paragraph${textCount > 1 ? 's' : ''}`);\n\t\t}\n\t\tif (codeCount > 0) {\n\t\t\tconst langList: string = languages.join(', ');\n\t\t\tparts.push(`${codeCount} code block${codeCount > 1 ? 's' : ''} (${langList})`);\n\t\t}\n\t\treturn `Pasted as ${parts.join(' and ')}.`;\n\t},\n};\n\nconst localeModules: LocaleModuleMap<SmartPasteLocale> = import.meta.glob<{\n\tdefault: SmartPasteLocale;\n}>('./locales/*.ts', { eager: false });\n\nexport async function loadSmartPasteLocale(lang: string): Promise<SmartPasteLocale> {\n\treturn loadLocaleModule(localeModules, lang, SMART_PASTE_LOCALE_EN);\n}\n","/**\n * Types for the smart paste plugin — content detection and formatting.\n */\n\nimport { ServiceKey } from '../Plugin.js';\nimport type { SmartPasteLocale } from './SmartPasteLocale.js';\n\n/** Result of detecting structured content in pasted text. */\nexport interface DetectionResult {\n\treadonly language: string;\n\treadonly formattedText: string;\n\treadonly confidence: number;\n}\n\n/** A classified segment of pasted text — either plain text or detected code. */\nexport interface PasteSegment {\n\treadonly text: string;\n\treadonly detection: DetectionResult | null;\n}\n\n/** Interface for content detectors that identify and format pasted text. */\nexport interface ContentDetector {\n\treadonly id: string;\n\tdetect(text: string): DetectionResult | null;\n}\n\n/** Configuration for the SmartPastePlugin. */\nexport interface SmartPasteConfig {\n\treadonly detectors?: readonly ContentDetector[];\n\treadonly locale?: SmartPasteLocale;\n}\n\n/** Public service for registering additional content detectors at runtime. */\nexport interface SmartPasteService {\n\tregisterDetector(detector: ContentDetector): void;\n}\n\nexport const SMART_PASTE_SERVICE_KEY = new ServiceKey<SmartPasteService>('smartPaste');\n","/**\n * SmartPastePlugin: detects structured content in clipboard text\n * and inserts it as formatted code blocks with syntax highlighting.\n * Mixed content (text + code) is split into separate blocks.\n */\n\nimport {\n\ttype InsertionContext,\n\tfindTableCellAncestor,\n\tinsertBlockAfterAnchor,\n\tresolveAnchorBlockId,\n\tresolveCellInsertionContext,\n\tresolveRootInsertionContext,\n} from '../../commands/BlockInsertion.js';\nimport { addDeleteSelectionSteps } from '../../commands/Commands.js';\nimport {\n\ttype BlockNode,\n\tcreateBlockNode,\n\tcreateTextNode,\n\tgenerateBlockId,\n} from '../../model/Document.js';\nimport {\n\tcreateCollapsedSelection,\n\tisCollapsed,\n\tisGapCursor,\n\tisTextSelection,\n} from '../../model/Selection.js';\nimport type { BlockId, NodeTypeName } from '../../model/TypeBrands.js';\nimport { nodeType } from '../../model/TypeBrands.js';\nimport type { EditorState } from '../../state/EditorState.js';\nimport type { Transaction } from '../../state/Transaction.js';\nimport type { PasteInterceptor, Plugin, PluginContext } from '../Plugin.js';\nimport { LANGUAGE_REGISTRY_SERVICE_KEY } from '../language/LanguageTypes.js';\nimport { resolveLocale } from '../shared/PluginHelpers.js';\nimport { splitAndClassify } from './ContentSplitter.js';\nimport {\n\tSMART_PASTE_LOCALE_EN,\n\ttype SmartPasteLocale,\n\tloadSmartPasteLocale,\n} from './SmartPasteLocale.js';\nimport type {\n\tContentDetector,\n\tDetectionResult,\n\tPasteSegment,\n\tSmartPasteConfig,\n} from './SmartPasteTypes.js';\nimport { SMART_PASTE_SERVICE_KEY } from './SmartPasteTypes.js';\n\nexport class SmartPastePlugin implements Plugin {\n\treadonly id = 'smart-paste';\n\treadonly name = 'Smart Paste';\n\treadonly dependencies = ['code-block'] as const;\n\n\tprivate readonly config: SmartPasteConfig;\n\tprivate readonly detectors: ContentDetector[] = [];\n\tprivate context: PluginContext | null = null;\n\tprivate locale: SmartPasteLocale = SMART_PASTE_LOCALE_EN;\n\n\tconstructor(config?: Partial<SmartPasteConfig>) {\n\t\tthis.config = { ...config };\n\t}\n\n\tasync init(context: PluginContext): Promise<void> {\n\t\tthis.context = context;\n\n\t\tthis.locale = await resolveLocale(\n\t\t\tcontext,\n\t\t\tthis.config.locale,\n\t\t\tSMART_PASTE_LOCALE_EN,\n\t\t\tloadSmartPasteLocale,\n\t\t);\n\n\t\t// Subscribe to language registry for detectors (replay provides built-ins)\n\t\tconst registry = context.getService(LANGUAGE_REGISTRY_SERVICE_KEY);\n\t\tif (registry) {\n\t\t\tregistry.onRegister((support) => {\n\t\t\t\tif (support.detection) {\n\t\t\t\t\tthis.detectors.push(support.detection);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Register config-provided detectors\n\t\tif (this.config.detectors) {\n\t\t\tfor (const detector of this.config.detectors) {\n\t\t\t\tthis.detectors.push(detector);\n\t\t\t}\n\t\t}\n\n\t\t// Register paste interceptor\n\t\tcontext.registerPasteInterceptor(this.handlePaste, { name: 'smart-paste', priority: 50 });\n\n\t\t// Register service for external detector registration\n\t\tcontext.registerService(SMART_PASTE_SERVICE_KEY, {\n\t\t\tregisterDetector: (detector: ContentDetector) => {\n\t\t\t\tthis.detectors.push(detector);\n\t\t\t},\n\t\t});\n\t}\n\n\tdestroy(): void {\n\t\tthis.context = null;\n\t\tthis.detectors.length = 0;\n\t}\n\n\t// --- Paste Interceptor ---\n\n\tprivate readonly handlePaste: PasteInterceptor = (\n\t\tplainText: string,\n\t\t_html: string,\n\t\tstate: EditorState,\n\t): Transaction | null => {\n\t\tif (this.isCursorInCodeBlock(state)) return null;\n\n\t\tconst segments: readonly PasteSegment[] | null = splitAndClassify(plainText, this.detectors);\n\t\tif (!segments) return null;\n\n\t\t// Single code-only segment: use existing fast path\n\t\tif (segments.length === 1 && segments[0]?.detection) {\n\t\t\treturn this.handleSingleCodeBlock(state, segments[0].detection);\n\t\t}\n\n\t\t// Mixed content: create multiple blocks\n\t\treturn this.handleMixedContent(state, segments);\n\t};\n\n\tprivate isCursorInCodeBlock(state: EditorState): boolean {\n\t\tconst sel = state.selection;\n\t\tif (!isTextSelection(sel)) return false;\n\n\t\tconst block: BlockNode | undefined = state.getBlock(sel.anchor.blockId);\n\t\treturn block?.type === 'code_block';\n\t}\n\n\t// --- Single Code Block (existing behavior) ---\n\n\tprivate handleSingleCodeBlock(\n\t\tstate: EditorState,\n\t\tdetection: DetectionResult,\n\t): Transaction | null {\n\t\tconst tr: Transaction | null = this.buildCodeBlockTransaction(state, detection);\n\t\tif (tr && this.context) {\n\t\t\tthis.context.announce(this.locale.detectedAsCodeBlock(detection.language));\n\t\t}\n\t\treturn tr;\n\t}\n\n\tprivate buildCodeBlockTransaction(\n\t\tstate: EditorState,\n\t\tdetection: DetectionResult,\n\t): Transaction | null {\n\t\tconst sel = state.selection;\n\t\tconst builder = state.transaction('paste');\n\n\t\t// Delete selection if range-selected\n\t\tlet anchorBlockId: BlockId;\n\t\tif (isTextSelection(sel) && !isCollapsed(sel)) {\n\t\t\tconst landingId: BlockId | undefined = addDeleteSelectionSteps(state, builder);\n\t\t\tanchorBlockId = landingId ?? sel.anchor.blockId;\n\t\t} else {\n\t\t\tanchorBlockId = resolveAnchorBlockId(sel);\n\t\t}\n\n\t\t// Create the code block node\n\t\tconst newBlockId: BlockId = generateBlockId();\n\t\tconst codeBlock: BlockNode = createBlockNode(\n\t\t\tnodeType('code_block') as NodeTypeName,\n\t\t\t[createTextNode(detection.formattedText)],\n\t\t\tnewBlockId,\n\t\t\t{ language: detection.language, backgroundColor: '' },\n\t\t);\n\n\t\t// Insert at cursor (handles cell vs root, empty anchor removal)\n\t\tconst inserted: boolean = insertBlockAfterAnchor(\n\t\t\tstate,\n\t\t\tbuilder,\n\t\t\tanchorBlockId,\n\t\t\tcodeBlock,\n\t\t\tsel,\n\t\t\tthis.context?.getSchemaRegistry(),\n\t\t);\n\t\tif (!inserted) return null;\n\n\t\tbuilder.setSelection(createCollapsedSelection(newBlockId, detection.formattedText.length));\n\n\t\treturn builder.build();\n\t}\n\n\t// --- Mixed Content (multiple blocks) ---\n\n\tprivate handleMixedContent(\n\t\tstate: EditorState,\n\t\tsegments: readonly PasteSegment[],\n\t): Transaction | null {\n\t\tconst tr: Transaction | null = this.buildMultiBlockTransaction(state, segments);\n\t\tif (tr && this.context) {\n\t\t\tthis.announceMixedContent(segments);\n\t\t}\n\t\treturn tr;\n\t}\n\n\tprivate buildMultiBlockTransaction(\n\t\tstate: EditorState,\n\t\tsegments: readonly PasteSegment[],\n\t): Transaction | null {\n\t\tconst sel = state.selection;\n\t\tconst builder = state.transaction('paste');\n\n\t\tlet anchorBlockId: BlockId;\n\t\tif (isTextSelection(sel) && !isCollapsed(sel)) {\n\t\t\tconst landingId: BlockId | undefined = addDeleteSelectionSteps(state, builder);\n\t\t\tanchorBlockId = landingId ?? sel.anchor.blockId;\n\t\t} else {\n\t\t\tanchorBlockId = resolveAnchorBlockId(sel);\n\t\t}\n\n\t\tconst cellId: BlockId | undefined = findTableCellAncestor(state, anchorBlockId);\n\t\tconst schemaRegistry = this.context?.getSchemaRegistry();\n\n\t\tconst ctx: InsertionContext | undefined = cellId\n\t\t\t? resolveCellInsertionContext(state, anchorBlockId, cellId, schemaRegistry)\n\t\t\t: resolveRootInsertionContext(state, anchorBlockId, schemaRegistry);\n\t\tif (!ctx) return null;\n\n\t\tconst insertOffset: number = !cellId && isGapCursor(sel) && sel.side === 'before' ? 0 : 1;\n\t\tlet insertIndex: number = ctx.anchorIndex + insertOffset;\n\t\tlet lastBlockId: BlockId | undefined;\n\t\tlet lastBlockTextLen = 0;\n\n\t\tfor (const segment of segments) {\n\t\t\tconst block: BlockNode = segment.detection\n\t\t\t\t? this.createCodeBlockNode(segment.detection)\n\t\t\t\t: this.createParagraphNode(segment.text);\n\n\t\t\tbuilder.insertNode(ctx.parentPath, insertIndex, block);\n\t\t\tinsertIndex++;\n\t\t\tlastBlockId = block.id;\n\t\t\tlastBlockTextLen = segment.detection\n\t\t\t\t? segment.detection.formattedText.length\n\t\t\t\t: segment.text.length;\n\t\t}\n\n\t\tconst shouldRemoveAnchor: boolean = cellId\n\t\t\t? ctx.isAnchorEmpty && ctx.anchorIndex >= 0\n\t\t\t: ctx.isAnchorEmpty && !isGapCursor(sel);\n\n\t\tif (shouldRemoveAnchor) {\n\t\t\tbuilder.removeNode(ctx.parentPath, ctx.anchorIndex);\n\t\t}\n\n\t\tif (lastBlockId) {\n\t\t\tbuilder.setSelection(createCollapsedSelection(lastBlockId, lastBlockTextLen));\n\t\t}\n\n\t\treturn builder.build();\n\t}\n\n\tprivate createCodeBlockNode(detection: DetectionResult): BlockNode {\n\t\treturn createBlockNode(\n\t\t\tnodeType('code_block') as NodeTypeName,\n\t\t\t[createTextNode(detection.formattedText)],\n\t\t\tgenerateBlockId(),\n\t\t\t{ language: detection.language, backgroundColor: '' },\n\t\t);\n\t}\n\n\tprivate createParagraphNode(text: string): BlockNode {\n\t\treturn createBlockNode(\n\t\t\tnodeType('paragraph') as NodeTypeName,\n\t\t\t[createTextNode(text)],\n\t\t\tgenerateBlockId(),\n\t\t);\n\t}\n\n\tprivate announceMixedContent(segments: readonly PasteSegment[]): void {\n\t\tlet textCount = 0;\n\t\tlet codeCount = 0;\n\t\tconst languages: string[] = [];\n\n\t\tfor (const segment of segments) {\n\t\t\tif (segment.detection) {\n\t\t\t\tcodeCount++;\n\t\t\t\tif (!languages.includes(segment.detection.language)) {\n\t\t\t\t\tlanguages.push(segment.detection.language);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttextCount++;\n\t\t\t}\n\t\t}\n\n\t\tthis.context?.announce(this.locale.detectedMixedContent(textCount, codeCount, languages));\n\t}\n}\n"],"mappings":"mbAQA,IAAM,EAA2B,kBAqEjC,SAAS,EAAS,EAAiB,GAClC,OAAK,EAAE,YAAc,EAAE,cACnB,EAAE,YAAa,EAAE,YAAkB,EAAE,UAAU,WAAa,EAAE,UAAU,SAK7E,SAAS,EAAM,EAAiB,GAC/B,MAAM,EAAqB,GAAG,EAAE,WAAW,EAAE,OAE7C,IAAK,EAAE,YAAc,EAAE,UACtB,MAAO,CAAE,KAAM,EAAY,UAAW,MAGvC,MAAM,EAAwB,EAAE,UAC1B,EAAwB,EAAE,UAEhC,MAAO,CACN,KAAM,EACN,UAAW,CACV,SAAU,EAAK,SACf,cAAe,GAAG,EAAK,oBAAoB,EAAK,gBAChD,WAAY,KAAK,IAAI,EAAK,WAAY,EAAK,cCtF9C,IAAa,EAA0C,CACtD,oBAAsB,GACrB,aAAa,yCACd,qBAAA,CAAuB,EAAmB,EAAmB,KAC5D,MAAM,EAAkB,GAIxB,GAHI,EAAY,GACf,EAAM,KAAK,GAAG,cAAsB,EAAY,EAAI,IAAM,MAEvD,EAAY,EAAG,CAClB,MAAM,EAAmB,EAAU,KAAK,MACxC,EAAM,KAAK,GAAG,eAAuB,EAAY,EAAI,IAAM,OAAO,MAEnE,MAAO,aAAa,EAAM,KAAK,cAI3B,iBAAmD,OAAA,OAAA,CAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,uBAIzD,eAAsB,EAAqB,GAC1C,OAAO,EAAiB,EAAe,EAAM,GCG9C,IAAa,EAA0B,IAAI,EAA8B,cCW5D,EAAb,MACC,GAAc,cACd,KAAgB,cAChB,aAAwB,CAAC,cAEzB,OACA,UAAgD,GAChD,QAAwC,KACxC,OAAmC,EAEnC,WAAA,CAAY,GACX,KAAK,OAAS,IAAK,GAGpB,UAAM,CAAK,GACV,KAAK,QAAU,EAEf,KAAK,aAAe,EACnB,EACA,KAAK,OAAO,OACZ,EACA,GAID,MAAM,EAAW,EAAQ,WAAW,GAUpC,GATI,GACH,EAAS,WAAY,IAChB,EAAQ,WACX,KAAK,UAAU,KAAK,EAAQ,aAM3B,KAAK,OAAO,UACf,IAAK,MAAM,KAAY,KAAK,OAAO,UAClC,KAAK,UAAU,KAAK,GAKtB,EAAQ,yBAAyB,KAAK,YAAa,CAAE,KAAM,cAAe,SAAU,KAGpF,EAAQ,gBAAgB,EAAyB,CAChD,iBAAmB,IAClB,KAAK,UAAU,KAAK,MAKvB,OAAA,GACC,KAAK,QAAU,KACf,KAAK,UAAU,OAAS,EAKzB,YAAA,CACC,EACA,EACA,KAEA,GAAI,KAAK,oBAAoB,GAAQ,OAAO,KAE5C,MAAM,EHnGR,SACC,EACA,GAGA,MAAM,EADiC,EAAK,MAAM,GAEhD,IAAK,GAAc,EAAE,QACrB,OAAQ,GAAc,EAAE,OAAS,GAEnC,GAAuB,IAAnB,EAAQ,OAAc,OAAO,KAEjC,IAAI,GAAU,EACd,MAAM,EAA2B,EAAQ,IAAK,IAC7C,MAAM,EAmCR,SAAoB,EAAc,GACjC,IAAI,EAA+B,KAEnC,IAAK,MAAM,KAAY,EAAW,CACjC,MAAM,EAAiC,EAAS,OAAO,GACnD,IAAoB,OAAT,GAAiB,EAAO,WAAa,EAAK,cACxD,EAAO,GAIT,OAAO,EA7CoC,CAAW,EAAa,GAElE,OADI,IAAW,GAAU,GAClB,CAAE,KAAM,EAAa,eAG7B,OAAK,EAUN,SAAsC,GACrC,GAAI,EAAS,QAAU,EAAG,OAAO,EAEjC,MAAM,EAAyB,CAAC,EAAS,IAEzC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,OAAQ,IAAK,CACzC,MAAM,EAAwB,EAAS,GACjC,EAAyB,EAAO,EAAO,OAAS,GAElD,EAAS,EAAU,GACtB,EAAO,EAAO,OAAS,GAAK,EAAM,EAAU,GAE5C,EAAO,KAAK,GAId,OAAO,EAxBA,CAAsB,GAFR,KGiF6B,CAAiB,EAAW,KAAK,WAClF,OAAK,EAGmB,IAApB,EAAS,QAAgB,EAAS,IAAI,UAClC,KAAK,sBAAsB,EAAO,EAAS,GAAG,WAI/C,KAAK,mBAAmB,EAAO,GARhB,MAWvB,mBAAA,CAA4B,GAC3B,MAAM,EAAM,EAAM,UAClB,QAAK,EAAgB,IAGE,eADc,EAAM,SAAS,EAAI,OAAO,UACjD,KAKf,qBAAA,CACC,EACA,GAEA,MAAM,EAAyB,KAAK,0BAA0B,EAAO,GAIrE,OAHI,GAAM,KAAK,SACd,KAAK,QAAQ,SAAS,KAAK,OAAO,oBAAoB,EAAU,WAE1D,EAGR,yBAAA,CACC,EACA,GAEA,MAAM,EAAM,EAAM,UACZ,EAAU,EAAM,YAAY,SAGlC,IAAI,EAGH,EAFG,EAAgB,KAAS,EAAY,GACD,EAAwB,EAAO,IACzC,EAAI,OAAO,QAExB,EAAqB,GAItC,MAAM,EAAsB,IACtB,EAAuB,EAC5B,EAAS,cACT,CAAC,EAAe,EAAU,gBAC1B,EACA,CAAE,SAAU,EAAU,SAAU,gBAAiB,KAYlD,OAR0B,EACzB,EACA,EACA,EACA,EACA,EACA,KAAK,SAAS,sBAIf,EAAQ,aAAa,EAAyB,EAAY,EAAU,cAAc,SAE3E,EAAQ,SAJO,KASvB,kBAAA,CACC,EACA,GAEA,MAAM,EAAyB,KAAK,2BAA2B,EAAO,GAItE,OAHI,GAAM,KAAK,SACd,KAAK,qBAAqB,GAEpB,EAGR,0BAAA,CACC,EACA,GAEA,MAAM,EAAM,EAAM,UACZ,EAAU,EAAM,YAAY,SAElC,IAAI,EAGH,EAFG,EAAgB,KAAS,EAAY,GACD,EAAwB,EAAO,IACzC,EAAI,OAAO,QAExB,EAAqB,GAGtC,MAAM,EAA8B,EAAsB,EAAO,GAC3D,EAAiB,KAAK,SAAS,oBAE/B,EAAoC,EACvC,EAA4B,EAAO,EAAe,EAAQ,GAC1D,EAA4B,EAAO,EAAe,GACrD,IAAK,EAAK,OAAO,KAEjB,MAAM,GAAwB,GAAU,EAAY,IAAqB,WAAb,EAAI,KAAoB,EAAI,EACxF,IACI,EADA,EAAsB,EAAI,YAAc,EAExC,EAAmB,EAEvB,IAAK,MAAM,KAAW,EAAU,CAC/B,MAAM,EAAmB,EAAQ,UAC9B,KAAK,oBAAoB,EAAQ,WACjC,KAAK,oBAAoB,EAAQ,MAEpC,EAAQ,WAAW,EAAI,WAAY,EAAa,GAChD,IACA,EAAc,EAAM,GACpB,EAAmB,EAAQ,UACxB,EAAQ,UAAU,cAAc,OAChC,EAAQ,KAAK,OAejB,OAZoC,EACjC,EAAI,eAAiB,EAAI,aAAe,EACxC,EAAI,gBAAkB,EAAY,KAGpC,EAAQ,WAAW,EAAI,WAAY,EAAI,aAGpC,GACH,EAAQ,aAAa,EAAyB,EAAa,IAGrD,EAAQ,QAGhB,mBAAA,CAA4B,GAC3B,OAAO,EACN,EAAS,cACT,CAAC,EAAe,EAAU,gBAC1B,IACA,CAAE,SAAU,EAAU,SAAU,gBAAiB,KAInD,mBAAA,CAA4B,GAC3B,OAAO,EACN,EAAS,aACT,CAAC,EAAe,IAChB,KAIF,oBAAA,CAA6B,GAC5B,IAAI,EAAY,EACZ,EAAY,EAChB,MAAM,EAAsB,GAE5B,IAAK,MAAM,KAAW,EACjB,EAAQ,WACX,IACK,EAAU,SAAS,EAAQ,UAAU,WACzC,EAAU,KAAK,EAAQ,UAAU,WAGlC,IAIF,KAAK,SAAS,SAAS,KAAK,OAAO,qBAAqB,EAAW,EAAW"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{_ as t,m as r}from"./Commands-BuYF23lf.mjs";import{i as e}from"./TypeBrands-BZDKMjR-.mjs";import{i as s,o}from"./PluginHelpers-D-MvWR98.mjs";import{t as i}from"./ShortcutFormatting-DE6B8iGs.mjs";var a={label:"Strikethrough",tooltip:t=>`Strikethrough (${t})`},m=/* @__PURE__ */Object.assign({"./locales/ar.ts":()=>import("./ar-Cv1RQvhK.mjs"),"./locales/de.ts":()=>import("./de-BOujs1pF.mjs"),"./locales/es.ts":()=>import("./es-BJxkHalP.mjs"),"./locales/fr.ts":()=>import("./fr-BoSz1pa9.mjs"),"./locales/hi.ts":()=>import("./hi-B0o90MFd.mjs"),"./locales/pt.ts":()=>import("./pt-zfCjhIgy.mjs"),"./locales/ru.ts":()=>import("./ru-LNbpjKCw.mjs"),"./locales/zh.ts":()=>import("./zh-C9sNwnC1.mjs")});async function l(t){return o(m,t,a)}var g={},h=class{id="strikethrough";name="Strikethrough";priority=22;config;locale;constructor(t){this.config={...g,...t}}async init(t){this.locale=await s(t,this.config.locale,a,l),this.registerMarkSpec(t),this.registerCommand(t),this.registerKeymap(t),this.registerToolbarItem(t)}registerMarkSpec(t){t.registerMarkSpec({type:"strikethrough",rank:3,toDOM:()=>document.createElement("s"),toHTMLString:(t,r)=>`<s>${r}</s>`,parseHTML:[{tag:"s"},{tag:"strike"},{tag:"del"},{tag:"span",getAttrs:t=>!!t.style.textDecoration.includes("line-through")&&{}}],sanitize:{tags:["s"]}})}registerCommand(r){r.registerCommand("toggleStrikethrough",()=>{const s=t(r.getState(),e("strikethrough"));return!!s&&(r.dispatch(s),!0)})}registerKeymap(t){t.registerKeymap({"Mod-Shift-X":()=>t.executeCommand("toggleStrikethrough")})}registerToolbarItem(t){t.registerToolbarItem({id:"strikethrough",group:"format",icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 19h4v-3h-4v3zM5 4v3h5v3h4V7h5V4H5zM3 14h18v-2H3v2z"/></svg>',label:this.locale.label,tooltip:this.locale.tooltip(i("Mod-Shift-X")),command:"toggleStrikethrough",isActive:t=>r(t,e("strikethrough"))})}};export{a as n,l as r,h as t};
|
|
2
|
-
//# sourceMappingURL=StrikethroughPlugin-vYNzfxdy.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StrikethroughPlugin-vYNzfxdy.mjs","names":[],"sources":["../../src/plugins/strikethrough/StrikethroughLocale.ts","../../src/plugins/strikethrough/StrikethroughPlugin.ts"],"sourcesContent":["/**\n * Locale interface and default English locale for the StrikethroughPlugin.\n */\n\nimport { type LocaleModuleMap, loadLocaleModule } from '../shared/LocaleLoader.js';\n\n// --- Locale Interface ---\n\nexport interface StrikethroughLocale {\n\treadonly label: string;\n\treadonly tooltip: (shortcut: string) => string;\n}\n\n// --- Default English Locale ---\n\nexport const STRIKETHROUGH_LOCALE_EN: StrikethroughLocale = {\n\tlabel: 'Strikethrough',\n\ttooltip: (shortcut: string) => `Strikethrough (${shortcut})`,\n};\n\n// --- Lazy Locale Loader ---\n\nconst localeModules: LocaleModuleMap<StrikethroughLocale> = import.meta.glob<{\n\tdefault: StrikethroughLocale;\n}>('./locales/*.ts', { eager: false });\n\nexport async function loadStrikethroughLocale(lang: string): Promise<StrikethroughLocale> {\n\treturn loadLocaleModule(localeModules, lang, STRIKETHROUGH_LOCALE_EN);\n}\n","/**\n * StrikethroughPlugin: registers a strikethrough inline mark with MarkSpec,\n * toggle command, keyboard shortcut (Mod-Shift-X), and a toolbar button.\n */\n\nimport { isMarkActive, toggleMark } from '../../commands/Commands.js';\nimport { markType } from '../../model/TypeBrands.js';\nimport type { Plugin, PluginContext } from '../Plugin.js';\nimport { resolveLocale } from '../shared/PluginHelpers.js';\nimport { formatShortcut } from '../shared/ShortcutFormatting.js';\nimport {\n\tSTRIKETHROUGH_LOCALE_EN,\n\ttype StrikethroughLocale,\n\tloadStrikethroughLocale,\n} from './StrikethroughLocale.js';\n\n// --- Attribute Registry Augmentation ---\n\ndeclare module '../../model/AttrRegistry.js' {\n\tinterface MarkAttrRegistry {\n\t\tstrikethrough: Record<string, never>;\n\t}\n}\n\n// --- Configuration ---\n\nexport interface StrikethroughConfig {\n\treadonly locale?: StrikethroughLocale;\n}\n\nconst DEFAULT_CONFIG: StrikethroughConfig = {};\n\n// --- Plugin ---\n\nexport class StrikethroughPlugin implements Plugin {\n\treadonly id = 'strikethrough';\n\treadonly name = 'Strikethrough';\n\treadonly priority = 22;\n\n\tprivate readonly config: StrikethroughConfig;\n\tprivate locale!: StrikethroughLocale;\n\n\tconstructor(config?: Partial<StrikethroughConfig>) {\n\t\tthis.config = { ...DEFAULT_CONFIG, ...config };\n\t}\n\n\tasync init(context: PluginContext): Promise<void> {\n\t\tthis.locale = await resolveLocale(\n\t\t\tcontext,\n\t\t\tthis.config.locale,\n\t\t\tSTRIKETHROUGH_LOCALE_EN,\n\t\t\tloadStrikethroughLocale,\n\t\t);\n\t\tthis.registerMarkSpec(context);\n\t\tthis.registerCommand(context);\n\t\tthis.registerKeymap(context);\n\t\tthis.registerToolbarItem(context);\n\t}\n\n\tprivate registerMarkSpec(context: PluginContext): void {\n\t\tcontext.registerMarkSpec({\n\t\t\ttype: 'strikethrough',\n\t\t\trank: 3,\n\t\t\ttoDOM() {\n\t\t\t\treturn document.createElement('s');\n\t\t\t},\n\t\t\ttoHTMLString: (_mark, content) => `<s>${content}</s>`,\n\t\t\tparseHTML: [\n\t\t\t\t{ tag: 's' },\n\t\t\t\t{ tag: 'strike' },\n\t\t\t\t{ tag: 'del' },\n\t\t\t\t{\n\t\t\t\t\ttag: 'span',\n\t\t\t\t\tgetAttrs: (el: HTMLElement) => {\n\t\t\t\t\t\treturn el.style.textDecoration.includes('line-through') ? {} : false;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tsanitize: { tags: ['s'] },\n\t\t});\n\t}\n\n\tprivate registerCommand(context: PluginContext): void {\n\t\tcontext.registerCommand('toggleStrikethrough', () => {\n\t\t\tconst tr = toggleMark(context.getState(), markType('strikethrough'));\n\t\t\tif (tr) {\n\t\t\t\tcontext.dispatch(tr);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t}\n\n\tprivate registerKeymap(context: PluginContext): void {\n\t\tcontext.registerKeymap({\n\t\t\t'Mod-Shift-X': () => context.executeCommand('toggleStrikethrough'),\n\t\t});\n\t}\n\n\tprivate registerToolbarItem(context: PluginContext): void {\n\t\tconst icon =\n\t\t\t'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M10 19h4v-3h-4v3zM5 4v3h5v3h4V7h5V4H5zM3 14h18v-2H3v2z\"/></svg>';\n\n\t\tcontext.registerToolbarItem({\n\t\t\tid: 'strikethrough',\n\t\t\tgroup: 'format',\n\t\t\ticon,\n\t\t\tlabel: this.locale.label,\n\t\t\ttooltip: this.locale.tooltip(formatShortcut('Mod-Shift-X')),\n\t\t\tcommand: 'toggleStrikethrough',\n\t\t\tisActive: (state) => isMarkActive(state, markType('strikethrough')),\n\t\t});\n\t}\n}\n"],"mappings":"0MAeA,IAAa,EAA+C,CAC3D,MAAO,gBACP,QAAU,GAAqB,kBAAkB,MAK5C,iBAAsD,OAAA,OAAA,CAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,qBAAA,kBAAA,IAAA,OAAA,uBAI5D,eAAsB,EAAwB,GAC7C,OAAO,EAAiB,EAAe,EAAM,GCG9C,IAAM,EAAsC,CAAA,EAI/B,EAAb,MACC,GAAc,gBACd,KAAgB,gBAChB,SAAoB,GAEpB,OACA,OAEA,WAAA,CAAY,GACX,KAAK,OAAS,IAAK,KAAmB,GAGvC,UAAM,CAAK,GACV,KAAK,aAAe,EACnB,EACA,KAAK,OAAO,OACZ,EACA,GAED,KAAK,iBAAiB,GACtB,KAAK,gBAAgB,GACrB,KAAK,eAAe,GACpB,KAAK,oBAAoB,GAG1B,gBAAA,CAAyB,GACxB,EAAQ,iBAAiB,CACxB,KAAM,gBACN,KAAM,EACN,MAAA,IACQ,SAAS,cAAc,KAE/B,aAAA,CAAe,EAAO,IAAY,MAAM,QACxC,UAAW,CACV,CAAE,IAAK,KACP,CAAE,IAAK,UACP,CAAE,IAAK,OACP,CACC,IAAK,OACL,SAAW,KACH,EAAG,MAAM,eAAe,SAAS,iBAAkB,CAAA,IAI7D,SAAU,CAAE,KAAM,CAAC,QAIrB,eAAA,CAAwB,GACvB,EAAQ,gBAAgB,sBAAA,KACvB,MAAM,EAAK,EAAW,EAAQ,WAAY,EAAS,kBACnD,QAAI,IACH,EAAQ,SAAS,IACV,KAMV,cAAA,CAAuB,GACtB,EAAQ,eAAe,CACtB,cAAA,IAAqB,EAAQ,eAAe,yBAI9C,mBAAA,CAA4B,GAI3B,EAAQ,oBAAoB,CAC3B,GAAI,gBACJ,MAAO,SACP,KALA,uIAMA,MAAO,KAAK,OAAO,MACnB,QAAS,KAAK,OAAO,QAAQ,EAAe,gBAC5C,QAAS,sBACT,SAAW,GAAU,EAAa,EAAO,EAAS"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var e="data-notectl-style-token",t=/* @__PURE__ */new WeakMap,n=/* @__PURE__ */new WeakMap;function s(){if("undefined"==typeof CSSStyleSheet)return null;try{return new CSSStyleSheet}catch{return null}}function o(e,s){const o=n.get(e);o&&(o.destroy(),n.delete(e)),t.set(e,{nonce:s.nonce,sheet:s.sheet??null})}function i(e){const s=n.get(e);s&&(s.destroy(),n.delete(e)),t.delete(e)}function r(e,t,n){const s=f(e);s?y(s.root,s.settings).setProperty(e,t,n):d(e,t,n)}function l(e,t){r(e,t,"")}function c(e,t){const n=f(e);if(n)y(n.root,n.settings).setProperties(e,t);else for(const[s,o]of Object.entries(t))d(e,s,o??"")}function a(e,t){const n=f(e);n?y(n.root,n.settings).setStyleText(e,t):e.style.cssText=t}function h(e,t){const n=f(e);if(!n){const n=e.style.cssText;return void(e.style.cssText=n?`${n}; ${t}`:t)}y(n.root,n.settings).appendStyleText(e,t)}function u(e){const n=m(e);if(n)return t.get(n)?.nonce}function d(e,t,n){t.startsWith("--")||t.includes("-")?n?e.style.setProperty(t,n):e.style.removeProperty(t):e.style[t]=n}function f(e){const n=function(e){return m(e)}(e);if(!n)return null;const s=t.get(n);return s?{root:n,settings:s}:null}function y(e,t){const s=n.get(e);if(s)return s;const o=new p(e,t);return n.set(e,o),o}function S(e){return"undefined"!=typeof ShadowRoot&&e instanceof ShadowRoot}function k(e){return"undefined"!=typeof Document&&e instanceof Document}function m(e){const t=S(e)||k(e)?e:e.getRootNode();return S(t)||k(t)?t:"undefined"!=typeof document?document:null}var p=class{declarationByElement=/* @__PURE__ */new WeakMap;tokenByDeclaration=/* @__PURE__ */new Map;declarationByToken=/* @__PURE__ */new Map;tokenRefCount=/* @__PURE__ */new Map;tokenByElement=/* @__PURE__ */new WeakMap;tokenCounter=0;root;nonce;sheet;fallbackStyleElement=null;ownsAdoptedSheet=!1;constructor(e,t){this.root=e,this.nonce=t.nonce,this.sheet=t.sheet??null}destroy(){this.clearRuntimeRules(),this.ownsAdoptedSheet&&this.sheet&&"adoptedStyleSheets"in this.root&&(this.root.adoptedStyleSheets=this.root.adoptedStyleSheets.filter(e=>e!==this.sheet)),this.fallbackStyleElement?.remove(),this.fallbackStyleElement=null,this.sheet=null,this.ownsAdoptedSheet=!1,this.tokenByDeclaration.clear(),this.declarationByToken.clear(),this.tokenRefCount.clear(),this.tokenCounter=0}setProperty(e,t,n){const s=this.getOrCreateDeclarations(e),o=R(t);n?s.set(o,n):s.delete(o),this.syncElementToken(e,s)}setProperties(e,t){const n=this.getOrCreateDeclarations(e);for(const[s,o]of Object.entries(t)){const e=R(s);o?n.set(e,o):n.delete(e)}this.syncElementToken(e,n)}setStyleText(e,t){const n=g(t);0!==n.size?(this.declarationByElement.set(e,n),this.syncElementToken(e,n)):this.clearElementStyles(e)}appendStyleText(e,t){const n=g(t);if(0===n.size)return;const s=this.getOrCreateDeclarations(e);for(const[o,i]of n)s.set(o,i);this.syncElementToken(e,s)}getStyleText(e){const t=this.declarationByElement.get(e);return t&&0!==t.size?E(t):""}getOrCreateDeclarations(e){const t=this.declarationByElement.get(e);if(t)return t;const n=/* @__PURE__ */new Map;return this.declarationByElement.set(e,n),n}syncElementToken(t,n){const s=this.tokenByElement.get(t);if(0===n.size)return void this.clearElementStyles(t);const o=E(n);let i=this.tokenByDeclaration.get(o);i||(i=`s${this.tokenCounter.toString(36)}`,this.tokenCounter+=1,this.tokenByDeclaration.set(o,i),this.declarationByToken.set(i,o),this.insertRule(i,o)),s!==i&&(this.retainToken(i),s&&this.releaseToken(s),this.tokenByElement.set(t,i)),t.setAttribute(e,i)}insertRule(e,t){const n=`${C(e)} { ${t}; }`,s=this.ensureSheet();if(s)try{s.insertRule(n,s.cssRules.length)}catch{}}ensureSheet(){if(this.sheet)return this.sheet;if("undefined"!=typeof CSSStyleSheet)try{const e=new CSSStyleSheet;if("adoptedStyleSheets"in this.root){const t=this.root.adoptedStyleSheets;return this.root.adoptedStyleSheets=[...t,e],this.sheet=e,this.ownsAdoptedSheet=!0,e}}catch{}return this.sheet=this.ensureFallbackStyleElement().sheet??null,this.sheet}clearElementStyles(t){this.declarationByElement.delete(t);const n=this.tokenByElement.get(t);n&&(this.tokenByElement.delete(t),this.releaseToken(n)),t.removeAttribute(e)}retainToken(e){const t=this.tokenRefCount.get(e)??0;this.tokenRefCount.set(e,t+1)}releaseToken(e){const t=this.tokenRefCount.get(e);if(!t)return;if(t>1)return void this.tokenRefCount.set(e,t-1);this.tokenRefCount.delete(e);const n=this.declarationByToken.get(e);n&&(this.declarationByToken.delete(e),this.tokenByDeclaration.delete(n)),this.deleteRule(e)}deleteRule(e){const t=this.sheet;if(!t)return;const n=C(e);for(let s=t.cssRules.length-1;s>=0;s-=1){const e=t.cssRules[s];if(e&&T(e,n)){try{t.deleteRule(s)}catch{}return}}}clearRuntimeRules(){const t=this.sheet;if(t)for(let n=t.cssRules.length-1;n>=0;n-=1){const s=t.cssRules[n];if(s&&s.cssText.includes(`[${e}="`))try{t.deleteRule(n)}catch{}}}ensureFallbackStyleElement(){if(this.fallbackStyleElement)return this.fallbackStyleElement;const e=document.createElement("style");return e.setAttribute("data-notectl-runtime-styles",""),this.nonce&&e.setAttribute("nonce",this.nonce),S(this.root)?this.root.appendChild(e):(this.root.head??this.root.documentElement).appendChild(e),this.fallbackStyleElement=e,e}};function g(e){const t=/* @__PURE__ */new Map;for(const n of e.split(";")){const e=n.trim();if(!e)continue;const s=e.indexOf(":");if(s<=0)continue;const o=R(e.slice(0,s)),i=e.slice(s+1).trim();i?t.set(o,i):t.delete(o)}return t}function E(e){return Array.from(e.entries()).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${e}: ${t}`).join("; ")}function R(e){const t=e.trim();return t?t.startsWith("--")?t:t.includes("-")?t.toLowerCase():t.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`).toLowerCase():""}function C(t){return`[${e}="${t}"]`}function T(e,t){return"undefined"!=typeof CSSStyleRule&&e instanceof CSSStyleRule?e.selectorText===t:e.cssText.includes(t)}export{l as a,a as c,o as i,i as l,s as n,c as o,u as r,r as s,h as t};
|
|
2
|
-
//# sourceMappingURL=StyleRuntime-D3d1XFFe.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StyleRuntime-D3d1XFFe.mjs","names":[],"sources":["../../src/style/StyleRuntime.ts"],"sourcesContent":["/**\n * Runtime style abstraction.\n *\n * Writes no inline styles and instead assigns token attributes\n * backed by dynamic CSS rules in a stylesheet.\n * Elements outside a registered root fall back to inline styles.\n */\n\nexport interface StyleRootOptions {\n\treadonly nonce?: string;\n\treadonly sheet?: CSSStyleSheet | null;\n}\n\ntype StyleRoot = ShadowRoot | Document;\n\ninterface RootConfig {\n\treadonly nonce?: string;\n\treadonly sheet: CSSStyleSheet | null;\n}\n\nconst STYLE_TOKEN_ATTR = 'data-notectl-style-token';\nconst STYLE_ELEMENT_ATTR = 'data-notectl-runtime-styles';\n\nconst rootConfigs: WeakMap<StyleRoot, RootConfig> = new WeakMap();\nconst strictEngines: WeakMap<StyleRoot, StrictStyleEngine> = new WeakMap();\n\n/** Creates a constructable stylesheet when the environment supports it. */\nexport function createRuntimeStyleSheet(): CSSStyleSheet | null {\n\tif (typeof CSSStyleSheet === 'undefined') return null;\n\ttry {\n\t\treturn new CSSStyleSheet();\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/** Registers styling mode for a root (shadow root or document). */\nexport function registerStyleRoot(root: StyleRoot, options: StyleRootOptions): void {\n\tconst previous = strictEngines.get(root);\n\tif (previous) {\n\t\tprevious.destroy();\n\t\tstrictEngines.delete(root);\n\t}\n\trootConfigs.set(root, {\n\t\tnonce: options.nonce,\n\t\tsheet: options.sheet ?? null,\n\t});\n}\n\n/** Unregisters root styling and tears down strict runtime state if present. */\nexport function unregisterStyleRoot(root: StyleRoot): void {\n\tconst engine = strictEngines.get(root);\n\tif (engine) {\n\t\tengine.destroy();\n\t\tstrictEngines.delete(root);\n\t}\n\trootConfigs.delete(root);\n}\n\n/** Sets a single style property. Empty value removes the property. */\nexport function setStyleProperty(el: HTMLElement, property: string, value: string): void {\n\tconst config = resolveConfig(el);\n\tif (!config) {\n\t\tsetInlineProperty(el, property, value);\n\t\treturn;\n\t}\n\tgetStrictEngine(config.root, config.settings).setProperty(el, property, value);\n}\n\n/** Removes a single style property. */\nexport function removeStyleProperty(el: HTMLElement, property: string): void {\n\tsetStyleProperty(el, property, '');\n}\n\n/** Sets multiple style properties in one call. */\nexport function setStyleProperties(\n\tel: HTMLElement,\n\tproperties: Readonly<Record<string, string | undefined | null>>,\n): void {\n\tconst config = resolveConfig(el);\n\tif (!config) {\n\t\tfor (const [property, value] of Object.entries(properties)) {\n\t\t\tsetInlineProperty(el, property, value ?? '');\n\t\t}\n\t\treturn;\n\t}\n\tgetStrictEngine(config.root, config.settings).setProperties(el, properties);\n}\n\n/** Replaces the element style text. */\nexport function setStyleText(el: HTMLElement, cssText: string): void {\n\tconst config = resolveConfig(el);\n\tif (!config) {\n\t\tel.style.cssText = cssText;\n\t\treturn;\n\t}\n\tgetStrictEngine(config.root, config.settings).setStyleText(el, cssText);\n}\n\n/** Merges a cssText fragment into current element styles. */\nexport function appendStyleText(el: HTMLElement, cssText: string): void {\n\tconst config = resolveConfig(el);\n\tif (!config) {\n\t\tconst current = el.style.cssText;\n\t\tel.style.cssText = current ? `${current}; ${cssText}` : cssText;\n\t\treturn;\n\t}\n\tgetStrictEngine(config.root, config.settings).appendStyleText(el, cssText);\n}\n\n/** Returns serialized styles for an element. */\nexport function getStyleText(el: HTMLElement): string {\n\tconst config = resolveConfig(el);\n\tif (!config) return el.style.cssText;\n\treturn getStrictEngine(config.root, config.settings).getStyleText(el);\n}\n\n/** Returns the configured CSP nonce for the node's style root (if any). */\nexport function getStyleNonceForNode(node: Node): string | undefined {\n\tconst root = resolveStyleRootFromNode(node);\n\tif (!root) return undefined;\n\treturn rootConfigs.get(root)?.nonce;\n}\n\nfunction setInlineProperty(el: HTMLElement, property: string, value: string): void {\n\tif (property.startsWith('--')) {\n\t\tif (value) {\n\t\t\tel.style.setProperty(property, value);\n\t\t} else {\n\t\t\tel.style.removeProperty(property);\n\t\t}\n\t\treturn;\n\t}\n\tif (property.includes('-')) {\n\t\tif (value) {\n\t\t\tel.style.setProperty(property, value);\n\t\t} else {\n\t\t\tel.style.removeProperty(property);\n\t\t}\n\t\treturn;\n\t}\n\t(el.style as CSSStyleDeclaration & Record<string, string>)[property] = value;\n}\n\nfunction resolveConfig(el: HTMLElement): { root: StyleRoot; settings: RootConfig } | null {\n\tconst root = resolveStyleRoot(el);\n\tif (!root) return null;\n\tconst settings = rootConfigs.get(root);\n\tif (!settings) return null;\n\treturn { root, settings };\n}\n\nfunction resolveStyleRoot(el: HTMLElement): StyleRoot | null {\n\treturn resolveStyleRootFromNode(el);\n}\n\nfunction getStrictEngine(root: StyleRoot, config: RootConfig): StrictStyleEngine {\n\tconst cached = strictEngines.get(root);\n\tif (cached) return cached;\n\tconst engine = new StrictStyleEngine(root, config);\n\tstrictEngines.set(root, engine);\n\treturn engine;\n}\n\nfunction isShadowRoot(value: unknown): value is ShadowRoot {\n\treturn typeof ShadowRoot !== 'undefined' && value instanceof ShadowRoot;\n}\n\nfunction isDocument(value: unknown): value is Document {\n\treturn typeof Document !== 'undefined' && value instanceof Document;\n}\n\nfunction resolveStyleRootFromNode(node: Node): StyleRoot | null {\n\tconst rootNode: Node = isShadowRoot(node) || isDocument(node) ? node : node.getRootNode();\n\tif (isShadowRoot(rootNode)) return rootNode;\n\tif (isDocument(rootNode)) return rootNode;\n\tif (typeof document !== 'undefined') return document;\n\treturn null;\n}\n\nclass StrictStyleEngine {\n\tprivate readonly declarationByElement: WeakMap<HTMLElement, Map<string, string>> = new WeakMap();\n\tprivate readonly tokenByDeclaration: Map<string, string> = new Map();\n\tprivate readonly declarationByToken: Map<string, string> = new Map();\n\tprivate readonly tokenRefCount: Map<string, number> = new Map();\n\tprivate readonly tokenByElement: WeakMap<HTMLElement, string> = new WeakMap();\n\tprivate tokenCounter = 0;\n\tprivate readonly root: StyleRoot;\n\tprivate readonly nonce?: string;\n\tprivate sheet: CSSStyleSheet | null;\n\tprivate fallbackStyleElement: HTMLStyleElement | null = null;\n\tprivate ownsAdoptedSheet = false;\n\n\tconstructor(root: StyleRoot, config: RootConfig) {\n\t\tthis.root = root;\n\t\tthis.nonce = config.nonce;\n\t\tthis.sheet = config.sheet ?? null;\n\t}\n\n\tdestroy(): void {\n\t\tthis.clearRuntimeRules();\n\t\tif (this.ownsAdoptedSheet && this.sheet && 'adoptedStyleSheets' in this.root) {\n\t\t\tthis.root.adoptedStyleSheets = this.root.adoptedStyleSheets.filter(\n\t\t\t\t(adoptedSheet: CSSStyleSheet): boolean => adoptedSheet !== this.sheet,\n\t\t\t);\n\t\t}\n\t\tthis.fallbackStyleElement?.remove();\n\t\tthis.fallbackStyleElement = null;\n\t\tthis.sheet = null;\n\t\tthis.ownsAdoptedSheet = false;\n\t\tthis.tokenByDeclaration.clear();\n\t\tthis.declarationByToken.clear();\n\t\tthis.tokenRefCount.clear();\n\t\tthis.tokenCounter = 0;\n\t}\n\n\tsetProperty(el: HTMLElement, property: string, value: string): void {\n\t\tconst declarations = this.getOrCreateDeclarations(el);\n\t\tconst name = normalizePropertyName(property);\n\t\tif (!value) {\n\t\t\tdeclarations.delete(name);\n\t\t} else {\n\t\t\tdeclarations.set(name, value);\n\t\t}\n\t\tthis.syncElementToken(el, declarations);\n\t}\n\n\tsetProperties(\n\t\tel: HTMLElement,\n\t\tproperties: Readonly<Record<string, string | undefined | null>>,\n\t): void {\n\t\tconst declarations = this.getOrCreateDeclarations(el);\n\t\tfor (const [property, value] of Object.entries(properties)) {\n\t\t\tconst name = normalizePropertyName(property);\n\t\t\tif (!value) {\n\t\t\t\tdeclarations.delete(name);\n\t\t\t} else {\n\t\t\t\tdeclarations.set(name, value);\n\t\t\t}\n\t\t}\n\t\tthis.syncElementToken(el, declarations);\n\t}\n\n\tsetStyleText(el: HTMLElement, cssText: string): void {\n\t\tconst declarations = parseStyleText(cssText);\n\t\tif (declarations.size === 0) {\n\t\t\tthis.clearElementStyles(el);\n\t\t\treturn;\n\t\t}\n\t\tthis.declarationByElement.set(el, declarations);\n\t\tthis.syncElementToken(el, declarations);\n\t}\n\n\tappendStyleText(el: HTMLElement, cssText: string): void {\n\t\tconst parsed = parseStyleText(cssText);\n\t\tif (parsed.size === 0) return;\n\t\tconst declarations = this.getOrCreateDeclarations(el);\n\t\tfor (const [property, value] of parsed) {\n\t\t\tdeclarations.set(property, value);\n\t\t}\n\t\tthis.syncElementToken(el, declarations);\n\t}\n\n\tgetStyleText(el: HTMLElement): string {\n\t\tconst declarations = this.declarationByElement.get(el);\n\t\tif (!declarations || declarations.size === 0) return '';\n\t\treturn serializeDeclarations(declarations);\n\t}\n\n\tprivate getOrCreateDeclarations(el: HTMLElement): Map<string, string> {\n\t\tconst existing = this.declarationByElement.get(el);\n\t\tif (existing) return existing;\n\t\tconst created = new Map<string, string>();\n\t\tthis.declarationByElement.set(el, created);\n\t\treturn created;\n\t}\n\n\tprivate syncElementToken(el: HTMLElement, declarations: Map<string, string>): void {\n\t\tconst previousToken = this.tokenByElement.get(el);\n\t\tif (declarations.size === 0) {\n\t\t\tthis.clearElementStyles(el);\n\t\t\treturn;\n\t\t}\n\n\t\tconst declarationText = serializeDeclarations(declarations);\n\t\tlet token = this.tokenByDeclaration.get(declarationText);\n\t\tif (!token) {\n\t\t\ttoken = `s${this.tokenCounter.toString(36)}`;\n\t\t\tthis.tokenCounter += 1;\n\t\t\tthis.tokenByDeclaration.set(declarationText, token);\n\t\t\tthis.declarationByToken.set(token, declarationText);\n\t\t\tthis.insertRule(token, declarationText);\n\t\t}\n\t\tif (previousToken !== token) {\n\t\t\tthis.retainToken(token);\n\t\t\tif (previousToken) {\n\t\t\t\tthis.releaseToken(previousToken);\n\t\t\t}\n\t\t\tthis.tokenByElement.set(el, token);\n\t\t}\n\t\tel.setAttribute(STYLE_TOKEN_ATTR, token);\n\t}\n\n\tprivate insertRule(token: string, declarationText: string): void {\n\t\tconst rule = `${buildTokenSelector(token)} { ${declarationText}; }`;\n\t\tconst sheet = this.ensureSheet();\n\t\tif (!sheet) return;\n\t\ttry {\n\t\t\tsheet.insertRule(rule, sheet.cssRules.length);\n\t\t} catch {\n\t\t\t// Ignore malformed declarations from third-party plugin attrs.\n\t\t}\n\t}\n\n\tprivate ensureSheet(): CSSStyleSheet | null {\n\t\tif (this.sheet) return this.sheet;\n\n\t\tif (typeof CSSStyleSheet !== 'undefined') {\n\t\t\ttry {\n\t\t\t\tconst sheet = new CSSStyleSheet();\n\t\t\t\tif ('adoptedStyleSheets' in this.root) {\n\t\t\t\t\tconst adopted = this.root.adoptedStyleSheets;\n\t\t\t\t\tthis.root.adoptedStyleSheets = [...adopted, sheet];\n\t\t\t\t\tthis.sheet = sheet;\n\t\t\t\t\tthis.ownsAdoptedSheet = true;\n\t\t\t\t\treturn sheet;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Fall through to style element fallback.\n\t\t\t}\n\t\t}\n\n\t\tconst style = this.ensureFallbackStyleElement();\n\t\tthis.sheet = (style.sheet as CSSStyleSheet | null) ?? null;\n\t\treturn this.sheet;\n\t}\n\n\tprivate clearElementStyles(el: HTMLElement): void {\n\t\tthis.declarationByElement.delete(el);\n\t\tconst token = this.tokenByElement.get(el);\n\t\tif (token) {\n\t\t\tthis.tokenByElement.delete(el);\n\t\t\tthis.releaseToken(token);\n\t\t}\n\t\tel.removeAttribute(STYLE_TOKEN_ATTR);\n\t}\n\n\tprivate retainToken(token: string): void {\n\t\tconst current = this.tokenRefCount.get(token) ?? 0;\n\t\tthis.tokenRefCount.set(token, current + 1);\n\t}\n\n\tprivate releaseToken(token: string): void {\n\t\tconst current = this.tokenRefCount.get(token);\n\t\tif (!current) return;\n\t\tif (current > 1) {\n\t\t\tthis.tokenRefCount.set(token, current - 1);\n\t\t\treturn;\n\t\t}\n\t\tthis.tokenRefCount.delete(token);\n\t\tconst declaration = this.declarationByToken.get(token);\n\t\tif (declaration) {\n\t\t\tthis.declarationByToken.delete(token);\n\t\t\tthis.tokenByDeclaration.delete(declaration);\n\t\t}\n\t\tthis.deleteRule(token);\n\t}\n\n\tprivate deleteRule(token: string): void {\n\t\tconst sheet = this.sheet;\n\t\tif (!sheet) return;\n\t\tconst selector = buildTokenSelector(token);\n\t\tfor (let index = sheet.cssRules.length - 1; index >= 0; index -= 1) {\n\t\t\tconst rule = sheet.cssRules[index];\n\t\t\tif (!rule || !isTokenSelectorMatch(rule, selector)) continue;\n\t\t\ttry {\n\t\t\t\tsheet.deleteRule(index);\n\t\t\t} catch {\n\t\t\t\t// Ignore parser/runtime discrepancies in unsupported environments.\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate clearRuntimeRules(): void {\n\t\tconst sheet = this.sheet;\n\t\tif (!sheet) return;\n\t\tfor (let index = sheet.cssRules.length - 1; index >= 0; index -= 1) {\n\t\t\tconst rule = sheet.cssRules[index];\n\t\t\tif (!rule || !rule.cssText.includes(`[${STYLE_TOKEN_ATTR}=\"`)) continue;\n\t\t\ttry {\n\t\t\t\tsheet.deleteRule(index);\n\t\t\t} catch {\n\t\t\t\t// Ignore parser/runtime discrepancies in unsupported environments.\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate ensureFallbackStyleElement(): HTMLStyleElement {\n\t\tif (this.fallbackStyleElement) return this.fallbackStyleElement;\n\t\tconst style: HTMLStyleElement = document.createElement('style');\n\t\tstyle.setAttribute(STYLE_ELEMENT_ATTR, '');\n\t\tif (this.nonce) {\n\t\t\tstyle.setAttribute('nonce', this.nonce);\n\t\t}\n\t\tif (isShadowRoot(this.root)) {\n\t\t\tthis.root.appendChild(style);\n\t\t} else {\n\t\t\tconst host = this.root.head ?? this.root.documentElement;\n\t\t\thost.appendChild(style);\n\t\t}\n\t\tthis.fallbackStyleElement = style;\n\t\treturn style;\n\t}\n}\n\nfunction parseStyleText(styleText: string): Map<string, string> {\n\tconst declarations = new Map<string, string>();\n\tfor (const rawPart of styleText.split(';')) {\n\t\tconst part = rawPart.trim();\n\t\tif (!part) continue;\n\t\tconst separator = part.indexOf(':');\n\t\tif (separator <= 0) continue;\n\t\tconst property = normalizePropertyName(part.slice(0, separator));\n\t\tconst value = part.slice(separator + 1).trim();\n\t\tif (!value) {\n\t\t\tdeclarations.delete(property);\n\t\t} else {\n\t\t\tdeclarations.set(property, value);\n\t\t}\n\t}\n\treturn declarations;\n}\n\nfunction serializeDeclarations(declarations: Map<string, string>): string {\n\tconst ordered: [string, string][] = Array.from(declarations.entries()).sort(([a], [b]) =>\n\t\ta.localeCompare(b),\n\t);\n\treturn ordered.map(([property, value]) => `${property}: ${value}`).join('; ');\n}\n\nfunction normalizePropertyName(property: string): string {\n\tconst trimmed = property.trim();\n\tif (!trimmed) return '';\n\tif (trimmed.startsWith('--')) return trimmed;\n\tif (trimmed.includes('-')) return trimmed.toLowerCase();\n\treturn trimmed.replace(/[A-Z]/g, (char: string) => `-${char.toLowerCase()}`).toLowerCase();\n}\n\nfunction buildTokenSelector(token: string): string {\n\treturn `[${STYLE_TOKEN_ATTR}=\"${token}\"]`;\n}\n\nfunction isTokenSelectorMatch(rule: CSSRule, selector: string): boolean {\n\tif (typeof CSSStyleRule !== 'undefined' && rule instanceof CSSStyleRule) {\n\t\treturn rule.selectorText === selector;\n\t}\n\treturn rule.cssText.includes(selector);\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{_ as s,m as t}from"./Commands-BuYF23lf.mjs";import{i as e}from"./TypeBrands-BZDKMjR-.mjs";import{a as i,i as r,o}from"./PluginHelpers-D-MvWR98.mjs";import{t as p}from"./ShortcutFormatting-DE6B8iGs.mjs";var c={superscriptLabel:"Superscript",superscriptTooltip:s=>`Superscript (${s})`,subscriptLabel:"Subscript",subscriptTooltip:s=>`Subscript (${s})`},a=/* @__PURE__ */Object.assign({"./locales/ar.ts":()=>import("./ar-DmeMor8Y.mjs"),"./locales/de.ts":()=>import("./de-BKm53tVU.mjs"),"./locales/es.ts":()=>import("./es-COSomns3.mjs"),"./locales/fr.ts":()=>import("./fr-C6pglM3H.mjs"),"./locales/hi.ts":()=>import("./hi-Dhq91ipt.mjs"),"./locales/pt.ts":()=>import("./pt-CJfYLSTe.mjs"),"./locales/ru.ts":()=>import("./ru-db7wsWkx.mjs"),"./locales/zh.ts":()=>import("./zh-D24dsCiw.mjs")});async function n(s){return o(a,s,c)}var l={superscript:!0,subscript:!0},u=[{type:"superscript",opposite:"subscript",configKey:"superscript",rank:4,tag:"sup",icon:['<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">','<path d="M16 7.41L11.41 12 16 16.59 14.59 18l-6-6 6-6z"',' fill="none"/>','<path d="M9.64 7.64c.23-.5.36-1.05.36-1.64'," 0-2.21-1.79-4-4-4H2v14h4.36c2.34 0 4.24-1.9"," 4.24-4.24 0-1.6-.89-2.99-2.2-3.71zM4.5 4.5H6c.83"," 0 1.5.67 1.5 1.5S6.83 7.5 6 7.5H4.5v-3zm2 9H4.5v-3H6.5c.83",' 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5z" fill="none"/>','<path d="M15.97 3.84c0-.47.19-.91.53-1.21.34-.31.8-.49'," 1.3-.49.5 0 .95.18 1.28.48.32.3.5.7.51 1.15h1.59c-.02","-.96-.43-1.83-1.13-2.42C19.36.77 18.45.44 17.5.44c-.88"," 0-1.74.28-2.39.8-.67.53-1.06 1.28-1.06 2.1 0 .76.34"," 1.47.93 1.97.59.49 1.41.84 2.32 1.15.7.24 1.26.5 1.62.8.35.3.53.64.53"," 1.02 0 .48-.2.93-.55 1.24-.36.3-.84.48-1.37.48-.55 0-1.04-.2-1.39-.54","-.34-.33-.53-.8-.53-1.32h-1.58c.01 1.02.43 1.95 1.16 2.57.72.62 1.67.96"," 2.67.96.92 0 1.81-.3 2.46-.84.67-.56 1.04-1.33 1.04-2.18 0-.81-.36-1.56","-.99-2.08-.62-.51-1.48-.88-2.43-1.2-.67-.23-1.2-.47-1.52-.75-.32-.27-.46",'-.59-.46-.94z"/>','<path d="M5.88 20h2.66l3.4-5.42L15.3 20h2.67l-4.73-7.38',' 4.37-6.62h-2.6l-3.07 4.98L8.92 6h-2.6l4.26 6.58z"/>',"</svg>"].join(""),keyBinding:"Mod-.",toHTMLString:s=>`<sup>${s}</sup>`,parseHTML:[{tag:"sup"}],sanitize:{tags:["sup"]}},{type:"subscript",opposite:"superscript",configKey:"subscript",rank:4,tag:"sub",icon:['<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">','<path d="M15.97 16.84c0-.47.19-.91.53-1.21.34-.31.8-.49'," 1.3-.49.5 0 .95.18 1.28.48.32.3.5.7.51 1.15h1.59c-.02","-.96-.43-1.83-1.13-2.42-.7-.58-1.61-.91-2.56-.91-.88"," 0-1.74.28-2.39.8-.67.53-1.06 1.28-1.06 2.1 0 .76.34"," 1.47.93 1.97.59.49 1.41.84 2.32 1.15.7.24 1.26.5 1.62.8.35.3.53.64.53"," 1.02 0 .48-.2.93-.55 1.24-.36.3-.84.48-1.37.48-.55 0-1.04-.2-1.39-.54","-.34-.33-.53-.8-.53-1.32h-1.58c.01 1.02.43 1.95 1.16 2.57.72.62 1.67.96"," 2.67.96.92 0 1.81-.3 2.46-.84.67-.56 1.04-1.33 1.04-2.18 0-.81-.36-1.56","-.99-2.08-.62-.51-1.48-.88-2.43-1.2-.67-.23-1.2-.47-1.52-.75-.32-.27-.46",'-.59-.46-.94z"/>','<path d="M5.88 18h2.66l3.4-5.42L15.3 18h2.67l-4.73-7.38',' 4.37-6.62h-2.6l-3.07 4.98L8.92 4h-2.6l4.26 6.58z"/>',"</svg>"].join(""),keyBinding:"Mod-,",toHTMLString:s=>`<sub>${s}</sub>`,parseHTML:[{tag:"sub"}],sanitize:{tags:["sub"]}}],m=class{id="super-sub";name="Superscript & Subscript";priority=23;config;locale;constructor(s){this.config={...l,...s}}async init(s){this.locale=await r(s,this.config.locale,c,n);const t=u.filter(s=>this.config[s.configKey]);for(const e of t)this.registerMark(s,e);this.registerKeymaps(s,t),this.registerExclusivityMiddleware(s,t),this.registerDisabledToolbarItems(s)}registerMark(r,o){const c=i(o.type),a=this.isToolbarVisible(o.configKey);if(r.registerMarkSpec({type:o.type,rank:o.rank,toDOM:()=>document.createElement(o.tag),toHTMLString:(s,t)=>o.toHTMLString(t),parseHTML:o.parseHTML,sanitize:o.sanitize}),r.registerCommand(c,()=>{const t=s(r.getState(),e(o.type));return!!t&&(r.dispatch(t),!0)}),a){const s="superscript"===o.type?this.locale.superscriptLabel:this.locale.subscriptLabel,i="superscript"===o.type?this.locale.superscriptTooltip(p(o.keyBinding)):this.locale.subscriptTooltip(p(o.keyBinding));r.registerToolbarItem({id:o.type,group:"format",icon:o.icon,label:s,tooltip:i,command:c,isActive:s=>t(s,e(o.type))})}}registerKeymaps(s,t){const e={};for(const r of t){const t=i(r.type);e[r.keyBinding]=()=>s.executeCommand(t)}Object.keys(e).length>0&&s.registerKeymap(e)}registerExclusivityMiddleware(s,t){t.some(s=>"superscript"===s.type)&&t.some(s=>"subscript"===s.type)&&s.registerMiddleware((s,t,i)=>{let r=!1;const o=[];for(const c of s.steps){if("addMark"!==c.type){o.push(c);continue}const s=c.mark.type,t=u.find(t=>t.type===s);if(!t){o.push(c);continue}r=!0;const i={type:"removeMark",blockId:c.blockId,from:c.from,to:c.to,mark:{type:e(t.opposite)},...c.path?{path:c.path}:{}};o.push(i,c)}let p=s.storedMarksAfter;if(p){const s=p.some(s=>"superscript"===s.type),t=p.some(s=>"subscript"===s.type);if(s&&t){const s=p.findLastIndex(s=>"superscript"===s.type)>p.findLastIndex(s=>"subscript"===s.type)?"subscript":"superscript";p=p.filter(t=>t.type!==s),r=!0}}i(r?{...s,steps:o,storedMarksAfter:p}:s)},{name:"super-sub:exclusivity"})}registerDisabledToolbarItems(s){if(this.config.toolbar)for(const t of u){const e=this.config[t.configKey],r=this.config.toolbar[t.configKey]??!0;if(!e&&r){const e="superscript"===t.type?this.locale.superscriptLabel:this.locale.subscriptLabel;s.registerToolbarItem({id:t.type,group:"format",icon:t.icon,label:e,command:i(t.type),isEnabled:()=>!1})}}}isToolbarVisible(s){return!this.config.toolbar||(this.config.toolbar[s]??!0)}};export{c as n,n as r,m as t};
|
|
2
|
-
//# sourceMappingURL=SuperSubPlugin-BNsoXWHS.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SuperSubPlugin-BNsoXWHS.mjs","names":[],"sources":["../../src/plugins/super-sub/SuperSubLocale.ts","../../src/plugins/super-sub/SuperSubPlugin.ts"],"sourcesContent":["/**\n * Locale interface and default English locale for the SuperSubPlugin.\n */\n\nimport { type LocaleModuleMap, loadLocaleModule } from '../shared/LocaleLoader.js';\n\n// --- Locale Interface ---\n\nexport interface SuperSubLocale {\n\treadonly superscriptLabel: string;\n\treadonly superscriptTooltip: (shortcut: string) => string;\n\treadonly subscriptLabel: string;\n\treadonly subscriptTooltip: (shortcut: string) => string;\n}\n\n// --- Default English Locale ---\n\nexport const SUPER_SUB_LOCALE_EN: SuperSubLocale = {\n\tsuperscriptLabel: 'Superscript',\n\tsuperscriptTooltip: (shortcut: string) => `Superscript (${shortcut})`,\n\tsubscriptLabel: 'Subscript',\n\tsubscriptTooltip: (shortcut: string) => `Subscript (${shortcut})`,\n};\n\n// --- Lazy Locale Loader ---\n\nconst localeModules: LocaleModuleMap<SuperSubLocale> = import.meta.glob<{\n\tdefault: SuperSubLocale;\n}>('./locales/*.ts', { eager: false });\n\nexport async function loadSuperSubLocale(lang: string): Promise<SuperSubLocale> {\n\treturn loadLocaleModule(localeModules, lang, SUPER_SUB_LOCALE_EN);\n}\n","/**\n * SuperSubPlugin: registers superscript and subscript inline marks with\n * MarkSpecs, toggle commands, keyboard shortcuts, toolbar buttons, and\n * a middleware that enforces mutual exclusivity between the two marks.\n *\n * Data-driven — each mark type is defined declaratively and all\n * registrations are derived from the same definition table.\n */\n\nimport { isMarkActive, toggleMark } from '../../commands/Commands.js';\nimport type { Mark } from '../../model/Document.js';\nimport type { ParseRule } from '../../model/ParseRule.js';\nimport type { SanitizeConfig } from '../../model/SanitizeConfig.js';\nimport { markType as mkType } from '../../model/TypeBrands.js';\nimport type { RemoveMarkStep, Step } from '../../state/Transaction.js';\nimport type { Plugin, PluginContext } from '../Plugin.js';\nimport { resolveLocale, toCommandName } from '../shared/PluginHelpers.js';\nimport { formatShortcut } from '../shared/ShortcutFormatting.js';\nimport { SUPER_SUB_LOCALE_EN, type SuperSubLocale, loadSuperSubLocale } from './SuperSubLocale.js';\n\n// --- Attribute Registry Augmentation ---\n\ndeclare module '../../model/AttrRegistry.js' {\n\tinterface MarkAttrRegistry {\n\t\tsuperscript: Record<string, never>;\n\t\tsubscript: Record<string, never>;\n\t}\n}\n\n// --- Configuration ---\n\n/** Controls toolbar button visibility per mark. */\nexport interface SuperSubToolbarConfig {\n\treadonly superscript?: boolean;\n\treadonly subscript?: boolean;\n}\n\n/** Controls which marks are enabled and which toolbar buttons are shown. */\nexport interface SuperSubConfig {\n\treadonly superscript: boolean;\n\treadonly subscript: boolean;\n\treadonly toolbar?: SuperSubToolbarConfig;\n\treadonly locale?: SuperSubLocale;\n}\n\nconst DEFAULT_CONFIG: SuperSubConfig = {\n\tsuperscript: true,\n\tsubscript: true,\n};\n\n// --- Mark Definitions ---\n\ninterface MarkDefinition {\n\treadonly type: 'superscript' | 'subscript';\n\treadonly opposite: 'superscript' | 'subscript';\n\treadonly configKey: keyof Omit<SuperSubConfig, 'toolbar' | 'locale'>;\n\treadonly rank: number;\n\treadonly tag: string;\n\treadonly icon: string;\n\treadonly keyBinding: string;\n\treadonly toHTMLString: (content: string) => string;\n\treadonly parseHTML: readonly ParseRule[];\n\treadonly sanitize: SanitizeConfig;\n}\n\nconst SUPERSCRIPT_ICON: string = [\n\t'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">',\n\t'<path d=\"M16 7.41L11.41 12 16 16.59 14.59 18l-6-6 6-6z\"',\n\t' fill=\"none\"/>',\n\t'<path d=\"M9.64 7.64c.23-.5.36-1.05.36-1.64',\n\t' 0-2.21-1.79-4-4-4H2v14h4.36c2.34 0 4.24-1.9',\n\t' 4.24-4.24 0-1.6-.89-2.99-2.2-3.71zM4.5 4.5H6c.83',\n\t' 0 1.5.67 1.5 1.5S6.83 7.5 6 7.5H4.5v-3zm2 9H4.5v-3H6.5c.83',\n\t' 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5z\" fill=\"none\"/>',\n\t'<path d=\"M15.97 3.84c0-.47.19-.91.53-1.21.34-.31.8-.49',\n\t' 1.3-.49.5 0 .95.18 1.28.48.32.3.5.7.51 1.15h1.59c-.02',\n\t'-.96-.43-1.83-1.13-2.42C19.36.77 18.45.44 17.5.44c-.88',\n\t' 0-1.74.28-2.39.8-.67.53-1.06 1.28-1.06 2.1 0 .76.34',\n\t' 1.47.93 1.97.59.49 1.41.84 2.32 1.15.7.24 1.26.5 1.62.8.35.3.53.64.53',\n\t' 1.02 0 .48-.2.93-.55 1.24-.36.3-.84.48-1.37.48-.55 0-1.04-.2-1.39-.54',\n\t'-.34-.33-.53-.8-.53-1.32h-1.58c.01 1.02.43 1.95 1.16 2.57.72.62 1.67.96',\n\t' 2.67.96.92 0 1.81-.3 2.46-.84.67-.56 1.04-1.33 1.04-2.18 0-.81-.36-1.56',\n\t'-.99-2.08-.62-.51-1.48-.88-2.43-1.2-.67-.23-1.2-.47-1.52-.75-.32-.27-.46',\n\t'-.59-.46-.94z\"/>',\n\t'<path d=\"M5.88 20h2.66l3.4-5.42L15.3 20h2.67l-4.73-7.38',\n\t' 4.37-6.62h-2.6l-3.07 4.98L8.92 6h-2.6l4.26 6.58z\"/>',\n\t'</svg>',\n].join('');\n\nconst SUBSCRIPT_ICON: string = [\n\t'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">',\n\t'<path d=\"M15.97 16.84c0-.47.19-.91.53-1.21.34-.31.8-.49',\n\t' 1.3-.49.5 0 .95.18 1.28.48.32.3.5.7.51 1.15h1.59c-.02',\n\t'-.96-.43-1.83-1.13-2.42-.7-.58-1.61-.91-2.56-.91-.88',\n\t' 0-1.74.28-2.39.8-.67.53-1.06 1.28-1.06 2.1 0 .76.34',\n\t' 1.47.93 1.97.59.49 1.41.84 2.32 1.15.7.24 1.26.5 1.62.8.35.3.53.64.53',\n\t' 1.02 0 .48-.2.93-.55 1.24-.36.3-.84.48-1.37.48-.55 0-1.04-.2-1.39-.54',\n\t'-.34-.33-.53-.8-.53-1.32h-1.58c.01 1.02.43 1.95 1.16 2.57.72.62 1.67.96',\n\t' 2.67.96.92 0 1.81-.3 2.46-.84.67-.56 1.04-1.33 1.04-2.18 0-.81-.36-1.56',\n\t'-.99-2.08-.62-.51-1.48-.88-2.43-1.2-.67-.23-1.2-.47-1.52-.75-.32-.27-.46',\n\t'-.59-.46-.94z\"/>',\n\t'<path d=\"M5.88 18h2.66l3.4-5.42L15.3 18h2.67l-4.73-7.38',\n\t' 4.37-6.62h-2.6l-3.07 4.98L8.92 4h-2.6l4.26 6.58z\"/>',\n\t'</svg>',\n].join('');\n\nconst MARK_DEFINITIONS: readonly MarkDefinition[] = [\n\t{\n\t\ttype: 'superscript',\n\t\topposite: 'subscript',\n\t\tconfigKey: 'superscript',\n\t\trank: 4,\n\t\ttag: 'sup',\n\t\ticon: SUPERSCRIPT_ICON,\n\t\tkeyBinding: 'Mod-.',\n\t\ttoHTMLString: (content) => `<sup>${content}</sup>`,\n\t\tparseHTML: [{ tag: 'sup' }],\n\t\tsanitize: { tags: ['sup'] },\n\t},\n\t{\n\t\ttype: 'subscript',\n\t\topposite: 'superscript',\n\t\tconfigKey: 'subscript',\n\t\trank: 4,\n\t\ttag: 'sub',\n\t\ticon: SUBSCRIPT_ICON,\n\t\tkeyBinding: 'Mod-,',\n\t\ttoHTMLString: (content) => `<sub>${content}</sub>`,\n\t\tparseHTML: [{ tag: 'sub' }],\n\t\tsanitize: { tags: ['sub'] },\n\t},\n];\n\n// --- Plugin ---\n\nexport class SuperSubPlugin implements Plugin {\n\treadonly id = 'super-sub';\n\treadonly name = 'Superscript & Subscript';\n\treadonly priority = 23;\n\n\tprivate readonly config: SuperSubConfig;\n\tprivate locale!: SuperSubLocale;\n\n\tconstructor(config?: Partial<SuperSubConfig>) {\n\t\tthis.config = { ...DEFAULT_CONFIG, ...config };\n\t}\n\n\tasync init(context: PluginContext): Promise<void> {\n\t\tthis.locale = await resolveLocale(\n\t\t\tcontext,\n\t\t\tthis.config.locale,\n\t\t\tSUPER_SUB_LOCALE_EN,\n\t\t\tloadSuperSubLocale,\n\t\t);\n\n\t\tconst enabledMarks: MarkDefinition[] = MARK_DEFINITIONS.filter(\n\t\t\t(def) => this.config[def.configKey],\n\t\t);\n\n\t\tfor (const def of enabledMarks) {\n\t\t\tthis.registerMark(context, def);\n\t\t}\n\n\t\tthis.registerKeymaps(context, enabledMarks);\n\t\tthis.registerExclusivityMiddleware(context, enabledMarks);\n\t\tthis.registerDisabledToolbarItems(context);\n\t}\n\n\tprivate registerMark(context: PluginContext, def: MarkDefinition): void {\n\t\tconst commandName: string = toCommandName(def.type);\n\t\tconst toolbarVisible: boolean = this.isToolbarVisible(def.configKey);\n\n\t\tcontext.registerMarkSpec({\n\t\t\ttype: def.type,\n\t\t\trank: def.rank,\n\t\t\ttoDOM() {\n\t\t\t\treturn document.createElement(def.tag);\n\t\t\t},\n\t\t\ttoHTMLString: (_mark, content) => def.toHTMLString(content),\n\t\t\tparseHTML: def.parseHTML,\n\t\t\tsanitize: def.sanitize,\n\t\t});\n\n\t\tcontext.registerCommand(commandName, () => {\n\t\t\tconst tr = toggleMark(context.getState(), mkType(def.type));\n\t\t\tif (tr) {\n\t\t\t\tcontext.dispatch(tr);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\t\tif (toolbarVisible) {\n\t\t\tconst label: string =\n\t\t\t\tdef.type === 'superscript' ? this.locale.superscriptLabel : this.locale.subscriptLabel;\n\t\t\tconst tooltip: string =\n\t\t\t\tdef.type === 'superscript'\n\t\t\t\t\t? this.locale.superscriptTooltip(formatShortcut(def.keyBinding))\n\t\t\t\t\t: this.locale.subscriptTooltip(formatShortcut(def.keyBinding));\n\t\t\tcontext.registerToolbarItem({\n\t\t\t\tid: def.type,\n\t\t\t\tgroup: 'format',\n\t\t\t\ticon: def.icon,\n\t\t\t\tlabel,\n\t\t\t\ttooltip,\n\t\t\t\tcommand: commandName,\n\t\t\t\tisActive: (state) => isMarkActive(state, mkType(def.type)),\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate registerKeymaps(context: PluginContext, marks: readonly MarkDefinition[]): void {\n\t\tconst keymap: Record<string, () => boolean> = {};\n\t\tfor (const def of marks) {\n\t\t\tconst commandName: string = toCommandName(def.type);\n\t\t\tkeymap[def.keyBinding] = () => context.executeCommand(commandName);\n\t\t}\n\t\tif (Object.keys(keymap).length > 0) {\n\t\t\tcontext.registerKeymap(keymap);\n\t\t}\n\t}\n\n\t/**\n\t * Ensures superscript and subscript are mutually exclusive.\n\t * When an addMark step for one type is found, a removeMark step\n\t * for the opposite type is injected. For stored marks, the opposite\n\t * mark is filtered out.\n\t */\n\tprivate registerExclusivityMiddleware(\n\t\tcontext: PluginContext,\n\t\tenabledMarks: readonly MarkDefinition[],\n\t): void {\n\t\tconst bothEnabled: boolean =\n\t\t\tenabledMarks.some((d) => d.type === 'superscript') &&\n\t\t\tenabledMarks.some((d) => d.type === 'subscript');\n\n\t\tif (!bothEnabled) return;\n\n\t\tcontext.registerMiddleware(\n\t\t\t(tr, _state, next) => {\n\t\t\t\tlet patched = false;\n\n\t\t\t\t// Handle addMark steps: inject removeMark for the opposite type\n\t\t\t\tconst patchedSteps: Step[] = [];\n\t\t\t\tfor (const step of tr.steps) {\n\t\t\t\t\tif (step.type !== 'addMark') {\n\t\t\t\t\t\tpatchedSteps.push(step);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst markName: string = step.mark.type;\n\t\t\t\t\tconst def: MarkDefinition | undefined = MARK_DEFINITIONS.find((d) => d.type === markName);\n\t\t\t\t\tif (!def) {\n\t\t\t\t\t\tpatchedSteps.push(step);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpatched = true;\n\t\t\t\t\tconst removeStep: RemoveMarkStep = {\n\t\t\t\t\t\ttype: 'removeMark',\n\t\t\t\t\t\tblockId: step.blockId,\n\t\t\t\t\t\tfrom: step.from,\n\t\t\t\t\t\tto: step.to,\n\t\t\t\t\t\tmark: { type: mkType(def.opposite) },\n\t\t\t\t\t\t...(step.path ? { path: step.path } : {}),\n\t\t\t\t\t};\n\t\t\t\t\tpatchedSteps.push(removeStep, step);\n\t\t\t\t}\n\n\t\t\t\t// Handle stored marks: remove the opposite mark\n\t\t\t\tlet storedMarksAfter: readonly Mark[] | null = tr.storedMarksAfter;\n\t\t\t\tif (storedMarksAfter) {\n\t\t\t\t\tconst hasSup: boolean = storedMarksAfter.some((m) => m.type === 'superscript');\n\t\t\t\t\tconst hasSub: boolean = storedMarksAfter.some((m) => m.type === 'subscript');\n\n\t\t\t\t\tif (hasSup && hasSub) {\n\t\t\t\t\t\t// Keep the one that was most recently added (last in array)\n\t\t\t\t\t\tconst lastSupIdx: number = storedMarksAfter.findLastIndex(\n\t\t\t\t\t\t\t(m) => m.type === 'superscript',\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst lastSubIdx: number = storedMarksAfter.findLastIndex(\n\t\t\t\t\t\t\t(m) => m.type === 'subscript',\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst removeType: string = lastSupIdx > lastSubIdx ? 'subscript' : 'superscript';\n\n\t\t\t\t\t\tstoredMarksAfter = storedMarksAfter.filter((m) => m.type !== removeType);\n\t\t\t\t\t\tpatched = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnext(patched ? { ...tr, steps: patchedSteps, storedMarksAfter } : tr);\n\t\t\t},\n\t\t\t{ name: 'super-sub:exclusivity' },\n\t\t);\n\t}\n\n\t/**\n\t * Registers disabled toolbar buttons for marks whose feature is disabled\n\t * but whose toolbar button is explicitly requested.\n\t */\n\tprivate registerDisabledToolbarItems(context: PluginContext): void {\n\t\tif (!this.config.toolbar) return;\n\n\t\tfor (const def of MARK_DEFINITIONS) {\n\t\t\tconst featureEnabled: boolean = this.config[def.configKey];\n\t\t\tconst toolbarVisible: boolean = this.config.toolbar[def.configKey] ?? true;\n\n\t\t\tif (!featureEnabled && toolbarVisible) {\n\t\t\t\tconst label: string =\n\t\t\t\t\tdef.type === 'superscript' ? this.locale.superscriptLabel : this.locale.subscriptLabel;\n\t\t\t\tcontext.registerToolbarItem({\n\t\t\t\t\tid: def.type,\n\t\t\t\t\tgroup: 'format',\n\t\t\t\t\ticon: def.icon,\n\t\t\t\t\tlabel,\n\t\t\t\t\tcommand: toCommandName(def.type),\n\t\t\t\t\tisEnabled: () => false,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate isToolbarVisible(configKey: keyof Omit<SuperSubConfig, 'toolbar' | 'locale'>): boolean {\n\t\tif (!this.config.toolbar) return true;\n\t\treturn this.config.toolbar[configKey] ?? true;\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var t=["keyword","string","comment","number","function","operator","punctuation","boolean","null","property","type","annotation","tag","attribute","constant","regex"];function n(t){return"string"==typeof t?t:t.color}function o(t){return"object"==typeof t?t.fontStyle:void 0}function e(t){return"object"==typeof t?t.fontWeight:void 0}export{e as i,n,o as r,t};
|
|
2
|
-
//# sourceMappingURL=SyntaxTokenTypes-CVUAMov0.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SyntaxTokenTypes-CVUAMov0.mjs","names":[],"sources":["../../src/editor/theme/SyntaxTokenTypes.ts"],"sourcesContent":["/**\n * Canonical syntax token type list and style resolution utilities.\n *\n * Single source of truth for all syntax highlighting token types.\n * Adding a new token type here automatically propagates to themes,\n * CSS variables, and token CSS classes.\n */\n\n/** All supported syntax token types. */\nexport const SYNTAX_TOKEN_TYPES = [\n\t'keyword',\n\t'string',\n\t'comment',\n\t'number',\n\t'function',\n\t'operator',\n\t'punctuation',\n\t'boolean',\n\t'null',\n\t'property',\n\t'type',\n\t'annotation',\n\t'tag',\n\t'attribute',\n\t'constant',\n\t'regex',\n] as const;\n\n/** A syntax token type from the canonical list. */\nexport type SyntaxTokenType = (typeof SYNTAX_TOKEN_TYPES)[number];\n\n/** Per-token style: color plus optional font weight and style. */\nexport interface TokenStyle {\n\treadonly color: string;\n\treadonly fontWeight?: 'normal' | 'bold';\n\treadonly fontStyle?: 'normal' | 'italic';\n}\n\n/** A token style value is either a plain color string or a full TokenStyle object. */\nexport type TokenStyleValue = string | TokenStyle;\n\n/** Extracts the color from a TokenStyleValue. */\nexport function resolveTokenColor(value: TokenStyleValue): string {\n\treturn typeof value === 'string' ? value : value.color;\n}\n\n/** Extracts the font-style from a TokenStyleValue, or undefined if not set. */\nexport function resolveTokenFontStyle(value: TokenStyleValue): string | undefined {\n\treturn typeof value === 'object' ? value.fontStyle : undefined;\n}\n\n/** Extracts the font-weight from a TokenStyleValue, or undefined if not set. */\nexport function resolveTokenFontWeight(value: TokenStyleValue): string | undefined {\n\treturn typeof value === 'object' ? value.fontWeight : undefined;\n}\n"],"mappings":"AASA,IAAa,EAAqB,CACjC,UACA,SACA,UACA,SACA,WACA,WACA,cACA,UACA,OACA,WACA,OACA,aACA,MACA,YACA,WACA,SAiBD,SAAgB,EAAkB,GACjC,MAAwB,iBAAV,EAAqB,EAAQ,EAAM,MAIlD,SAAgB,EAAsB,GACrC,MAAwB,iBAAV,EAAqB,EAAM,eAAY,EAItD,SAAgB,EAAuB,GACtC,MAAwB,iBAAV,EAAqB,EAAM,gBAAa"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as t,c as e,d as n,l as o,r,s as l}from"./Document-_qdGR4vh.mjs";import{c as i,l as s,o as a,r as c,t as d,u}from"./Selection-aeiSsvhe.mjs";import{a as b}from"./TypeBrands-BZDKMjR-.mjs";import{r as p}from"./HTMLUtils-brwcaufP.mjs";import{t as h}from"./CommandHelpers-DTlQcGv5.mjs";import{a as m,o as f,s as g}from"./StyleRuntime-D3d1XFFe.mjs";import{n as v}from"./TypedKeys-CU7aToqY.mjs";import{i as x,t as w}from"./Decoration-oeHDjWWq.mjs";import{i as C,o as I}from"./PluginHelpers-D-MvWR98.mjs";import{t as y}from"./KeyboardNav-CsdlWnNl.mjs";import{r as k}from"./PopupPositioning-DRNwWB0U.mjs";import{i as S}from"./ColorValidation-CiGxVsqd.mjs";import{n as L,t as A}from"./ColorGrid-Czm0p2E9.mjs";function R(){const t=r(b("paragraph"),[l("")],e());return r(b("table_cell"),[t],e())}function B(t,e){const n=t.getNodePath(e);if(!n)return null;let r=null,l=null,i=null,s=null;for(const o of n){const e=t.getBlock(o);e&&("table"===e.type?(r=o,l=e):"table_row"===e.type?i=o:"table_cell"===e.type&&(s=o))}if("table_cell"===t.getBlock(e)?.type&&(s=e),!(r&&l&&s&&i))return null;const a=t.doc.children.findIndex(t=>t.id===r),c=o(l),d=c.findIndex(t=>t.id===i);if(-1===d)return null;const u=c[d];if(!u)return null;const b=o(u),p=b.findIndex(t=>t.id===s);if(-1===p)return null;const h=b.length,m=c.length;return{tableId:r,tableIndex:a,rowId:i,rowIndex:d,cellId:s,colIndex:p,totalRows:m,totalCols:h}}function E(t,e,n,r){const l=t.getBlock(e);if(!l)return null;const i=o(l)[n];return i?o(i)[r]?.id??null:null}function T(t,e){const n=t.getBlock(e);if(!n)return e;const r=o(n)[0];if(!r)return e;let l=r;for(;;){const t=o(l)[0];if(!t)return l.id;l=t}}function M(t,e){const n=t.getBlock(e);if(!n)return e;const r=o(n),l=r[r.length-1];if(!l)return e;let i=l;for(;;){const t=o(i),e=t[t.length-1];if(!e)return i.id;i=e}}function N(t,e){const n=t.getNodePath(e);if(!n)return!1;for(const o of n)if("table"===t.getBlock(o)?.type)return!0;return!1}var H={insertRowAbove:"Insert Row Above",insertRowBelow:"Insert Row Below",insertColumnLeft:"Insert Column Left",insertColumnRight:"Insert Column Right",deleteRow:"Delete Row",deleteColumn:"Delete Column",borderColorLabel:"Border Color...",deleteTable:"Delete Table",tableActions:"Table actions",menuKeyboardHint:"↑↓ Navigate · Enter Select · Esc Close",insertRow:"Insert row",insertColumn:"Insert column",addRow:"Add row",addColumn:"Add column",tableActionsHint:"Table actions (Right-click or Shift+F10)",contextMenuHint:"Right-click or Shift+F10 for table actions",borderColor:"Border color",defaultColor:"Default",noBorders:"No borders",borderColorPicker:"Border color picker",announceBorderColorSet:t=>`Table border color set to ${t}`,announceBorderReset:"Table borders reset to default",borderSwatchLabel:t=>`Border ${t}`,announceRowInsertedAbove:"Row inserted above",announceRowInsertedBelow:"Row inserted below",announceColumnInserted:t=>`Column inserted ${t}`,announceRowDeleted:"Row deleted",announceColumnDeleted:"Column deleted",announceTableDeleted:"Table deleted",insertTable:"Insert Table",tableAriaLabel:(t,e)=>`Table with ${t} rows and ${e} columns`,tableAriaDescription:"Right-click or press Shift+F10 for table actions"},D=/* @__PURE__ */Object.assign({"./locales/ar.ts":()=>import("./ar-CB-pehGw.mjs"),"./locales/de.ts":()=>import("./de-DYuRb98l.mjs"),"./locales/es.ts":()=>import("./es-CirfP3x1.mjs"),"./locales/fr.ts":()=>import("./fr-B0BPbbNB.mjs"),"./locales/hi.ts":()=>import("./hi-DKDYpjdr.mjs"),"./locales/pt.ts":()=>import("./pt-DNyNHwKh.mjs"),"./locales/ru.ts":()=>import("./ru-D_zXo-FA.mjs"),"./locales/zh.ts":()=>import("./zh-B3bJCfdB.mjs")});async function P(t){return I(D,t,H)}var z=["#000000","#434343","#666666","#999999","#b7b7b7","#cccccc","#d9d9d9","#efefef","#980000","#cc0000","#e69138","#f1c232","#6aa84f","#45818e","#3c78d8","#3d85c6","#674ea7","#a64d79","#0b5394","#38761d"];function $(t,e,n){const o=t.getBlock(e);if(!o||"table"!==o.type)return null;const r=t.getNodePath(e);if(!r)return null;if(void 0===n){const{borderColor:e,...n}=o.attrs??{},l=n;return t.transaction("command").setNodeAttr(r,l).setSelection(t.selection).build()}const l={...o.attrs,borderColor:n};return t.transaction("command").setNodeAttr(r,l).setSelection(t.selection).build()}function j(t,e,n=H){const o=t.getState();if(!u(o.selection))return!1;const r=B(o,o.selection.anchor.blockId);if(!r)return!1;const l=$(o,r.tableId,e);if(!l)return!1;t.dispatch(l);const i="none"===e?"none":L(e);return t.announce(n.announceBorderColorSet(i)),!0}function _(t,e=H){const n=t.getState();if(!u(n.selection))return!1;const o=B(n,n.selection.anchor.blockId);if(!o)return!1;const r=$(n,o.tableId,void 0);return!!r&&(t.dispatch(r),t.announce(e.announceBorderReset),!0)}function V(t,e){const n=t.getBlock(e);if(n)return n.attrs?.borderColor}function O(t,e,n,o,r=H){t.classList.add("notectl-color-picker");const l=V(e.getState(),n),i=document.createElement("button");i.type="button",i.className="notectl-color-picker__default",i.textContent=r.defaultColor,i.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation(),_(e,r),o()}),i.addEventListener("keydown",t=>{"Escape"===t.key&&(t.preventDefault(),o())}),t.appendChild(i);const s=document.createElement("button");s.type="button",s.className="notectl-color-picker__default",s.textContent=r.noBorders,s.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation(),j(e,"none",r),o()}),s.addEventListener("keydown",t=>{"Escape"===t.key&&(t.preventDefault(),o())}),t.appendChild(s),A(t,{colors:z,columns:5,ariaLabel:r.borderColorPicker,ariaLabelPrefix:"",activeColor:l??null,swatchLabel:r.borderSwatchLabel,titleAsName:!0,onSelect:t=>{j(e,t,r),o()},onClose:o})}function F(t,n,l){const i=t.getBlock(n);if(!i)return null;const s=o(i),a=s[0]?o(s[0]).length:0;if(0===a)return null;const c=function(t){const n=[];for(let e=0;e<t;e++)n.push(R());return r(b("table_row"),n,e())}(a),u=t.transaction("command").insertNode([n],l,c),p=o(c)[0],h=p?o(p)[0]:void 0;return h?u.setSelection(d(h.id,0)):p&&u.setSelection(d(p.id,0)),u.build()}function q(t,e,n){const r=t.getBlock(e);if(!r)return null;const l=o(r),i=t.transaction("command");for(const o of l){const t=R();i.insertNode([e,o.id],n,t)}return i.setSelection(t.selection),i.build()}function Z(t,e,n,r=0){const l=t.getBlock(e);if(!l)return null;if(o(l).length<=1)return Y(t,e);const i=t.transaction("command").removeNode([e],n),s=E(t,e,n>0?n-1:1,r);if(s){const e=T(t,s);i.setSelection(d(e,0))}return i.build()}function K(t,e,n,r=0){const l=t.getBlock(e);if(!l)return null;const i=o(l);if((i[0]?o(i[0]).length:0)<=1)return Y(t,e);const s=t.transaction("command");for(let o=i.length-1;o>=0;o--){const t=i[o];t&&s.removeNode([e,t.id],n)}const a=E(t,e,r,n>0?n-1:1);if(a){const e=T(t,a);s.setSelection(d(e,0))}return s.build()}function Y(n,o){const r=n.doc.children.findIndex(t=>t.id===o);if(-1===r)return null;if(1===n.doc.children.length){const o=t(e());return n.transaction("command").insertNode([],0,o).removeNode([],1).setSelection(d(o.id,0)).build()}const l=n.transaction("command").removeNode([],r),i=n.doc.children[r+1];if(i){const t=h(n,i.id,"start");if(t)return l.setSelection(t),l.build()}const s=n.doc.children[r-1];if(s){const t=h(n,s.id,"end");if(t)return l.setSelection(t),l.build()}return null}function X(t,n,l){const i=t.getState(),s=i.selection;if(!u(s))return!1;const a=s.anchor.blockId;let c=-1;for(let e=0;e<i.doc.children.length;e++){const t=i.doc.children[e];if(!t)continue;if(t.id===a){c=e;break}const n=i.getNodePath(a);if(n&&n[0]===t.id){c=e;break}}-1===c&&(c=i.doc.children.length-1);const p=function(t,n){const o=e(),l=[];for(let i=0;i<t;i++){const t=[];for(let e=0;e<n;e++)t.push(R());l.push(r(b("table_row"),t,e()))}return r(b("table"),l,o)}(n,l),h=r(b("paragraph")),m=c+1,f=i.transaction("command").insertNode([],m,p).insertNode([],m+1,h),g=o(p)[0],v=g?o(g)[0]:void 0,x=v?o(v)[0]:void 0;return x?f.setSelection(d(x.id,0)):v&&f.setSelection(d(v.id,0)),t.dispatch(f.build()),!0}function W(t,e){const n=t.getState();if(!u(n.selection))return!1;const o=B(n,n.selection.anchor.blockId);if(!o)return!1;const r=F(n,o.tableId,o.rowIndex+1);return!!r&&(t.dispatch(r),t.announce(e.announceRowInsertedBelow),!0)}function U(t,e,n){const o=t.getState();if(!u(o.selection))return!1;const r=B(o,o.selection.anchor.blockId);if(!r)return!1;const l="left"===e?r.colIndex:r.colIndex+1,i=q(o,r.tableId,l);return!!i&&(t.dispatch(i),t.announce(n.announceColumnInserted(e)),!0)}function G(t,e){t.registerCommand("insertTable",()=>X(t,3,3)),t.registerCommand("addRowAbove",()=>function(t,e){const n=t.getState();if(!u(n.selection))return!1;const o=B(n,n.selection.anchor.blockId);if(!o)return!1;const r=F(n,o.tableId,o.rowIndex);return!!r&&(t.dispatch(r),t.announce(e.announceRowInsertedAbove),!0)}(t,e)),t.registerCommand("addRowBelow",()=>W(t,e)),t.registerCommand("addColumnLeft",()=>function(t,e){return U(t,"left",e)}(t,e)),t.registerCommand("addColumnRight",()=>function(t,e){return U(t,"right",e)}(t,e)),t.registerCommand("deleteRow",()=>function(t,e){const n=t.getState();if(!u(n.selection))return!1;const o=B(n,n.selection.anchor.blockId);if(!o)return!1;const r=Z(n,o.tableId,o.rowIndex,o.colIndex);return!!r&&(t.dispatch(r),t.announce(e.announceRowDeleted),!0)}(t,e)),t.registerCommand("deleteColumn",()=>function(t,e){const n=t.getState();if(!u(n.selection))return!1;const o=B(n,n.selection.anchor.blockId);if(!o)return!1;const r=K(n,o.tableId,o.colIndex,o.rowIndex);return!!r&&(t.dispatch(r),t.announce(e.announceColumnDeleted),!0)}(t,e)),t.registerCommand("selectTable",()=>function(t){const e=t.getState(),n=e.selection;if(s(n))return"table"===e.getBlock(n.nodeId)?.type;if(i(n))return!1;const o=B(e,n.anchor.blockId);if(!o)return!1;const r=e.getNodePath(o.tableId);if(!r)return!1;const l=e.transaction("command").setSelection(c(o.tableId,r)).build();return t.dispatch(l),!0}(t)),t.registerCommand("deleteTable",()=>function(t,e){const n=t.getState(),o=function(t){if(s(t.selection)){const e=t.getBlock(t.selection.nodeId);return"table"!==e?.type?null:{tableId:e.id}}if(i(t.selection))return null;const e=B(t,t.selection.anchor.blockId);return e?{tableId:e.tableId}:null}(n);if(!o)return!1;const r=Y(n,o.tableId);return!!r&&(t.dispatch(r),t.announce(e.announceTableDeleted),!0)}(t,e))}function J(t,e,n,o,r,l=H,i){let s=!0,a=null,c=null;const d=document.createElement("div");d.className="notectl-table-context-menu",d.setAttribute("role","menu"),d.setAttribute("aria-label",l.tableActions),d.setAttribute("contenteditable","false");const u=[];let b=0;const p=function(t){return[{type:"item",label:t.insertRowAbove,command:"addRowAbove"},{type:"item",label:t.insertRowBelow,command:"addRowBelow"},{type:"separator"},{type:"item",label:t.insertColumnLeft,command:"addColumnLeft"},{type:"item",label:t.insertColumnRight,command:"addColumnRight"},{type:"separator"},{type:"item",label:t.deleteRow,command:"deleteRow"},{type:"item",label:t.deleteColumn,command:"deleteColumn"},{type:"separator"},{type:"submenu",label:t.borderColorLabel,id:"borderColor"},{type:"separator"},{type:"item",label:t.deleteTable,command:"deleteTable"}]}(l);for(const I of p){if("separator"===I.type){const t=document.createElement("div");t.setAttribute("role","separator"),d.appendChild(t);continue}const t=document.createElement("button");t.type="button",t.setAttribute("role","menuitem"),t.textContent=I.label,"submenu"===I.type&&(t.dataset.submenu=I.id,t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-expanded","false")),"item"===I.type&&(t.dataset.command=I.command),t.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation()}),t.addEventListener("click",n=>{n.stopPropagation(),"item"===I.type?(e.executeCommand(I.command),C()):"submenu"===I.type&&m(t)}),u.push(t),d.appendChild(t)}const h=document.createElement("div");function m(o){if(f(),o.setAttribute("aria-expanded","true"),i)c=i.open({anchor:o,position:"right",referenceNode:d,parent:{close:()=>C(),getElement:()=>d},onClose:()=>{c=null,a=null,g()},content:(t,r)=>{t.className="notectl-table-context-menu",t.setAttribute("contenteditable","false"),a=t,t.addEventListener("keydown",t=>{t.stopPropagation();const e="rtl"===getComputedStyle(d).direction?"ArrowRight":"ArrowLeft";t.key===e&&(t.preventDefault(),r(),o.focus())}),O(t,e,n,()=>C(),l)}});else{a=document.createElement("div"),a.className="notectl-table-context-menu",a.setAttribute("contenteditable","false"),a.addEventListener("keydown",t=>{t.stopPropagation();const e="rtl"===getComputedStyle(d).direction?"ArrowRight":"ArrowLeft";t.key===e&&(t.preventDefault(),f(),o.focus())}),O(a,e,n,()=>C(),l),t.appendChild(a);const r=d.getBoundingClientRect(),i="rtl"===getComputedStyle(d).direction;k(a,r,{position:"right",isRtl:i}),requestAnimationFrame(()=>{(a?.querySelector("button"))?.focus()})}}function f(){c?(c.close(),c=null,a=null):a&&(a.remove(),a=null),g()}function g(){for(const t of u)t.dataset.submenu&&t.setAttribute("aria-expanded","false")}h.className="notectl-table-context-menu__hint",h.setAttribute("aria-hidden","true"),h.textContent=l.menuKeyboardHint,d.appendChild(h),y(u,b),d.addEventListener("keydown",t=>{switch(t.stopPropagation(),t.key){case"Escape":return t.preventDefault(),void C();case"ArrowDown":return t.preventDefault(),b=(b+1)%u.length,y(u,b),void u[b]?.focus();case"ArrowUp":return t.preventDefault(),b=(b-1+u.length)%u.length,y(u,b),void u[b]?.focus();case"ArrowRight":case"ArrowLeft":{t.preventDefault();const e="rtl"===getComputedStyle(d).direction?"ArrowLeft":"ArrowRight";if(t.key===e){const t=u[b];t?.dataset.submenu&&m(t)}else f(),u[b]?.focus();return}case"Enter":case" ":{t.preventDefault();const n=u[b];if(!n)return;return void(n.dataset.submenu?m(n):n.dataset.command&&(e.executeCommand(n.dataset.command),C()))}case"Home":return t.preventDefault(),b=0,y(u,b),void u[b]?.focus();case"End":return t.preventDefault(),b=u.length-1,y(u,b),void u[b]?.focus()}}),k(d,o,{position:"below-start"}),t.appendChild(d),u[0]?.focus(),requestAnimationFrame(()=>{s&&u[0]&&u[0].focus()});const v=t=>{const e=t.composedPath();e.includes(d)||a&&e.includes(a)||C()};let x=null,w=!1;function C(){s&&(s=!1,f(),d.remove(),null!==x&&(clearTimeout(x),x=null),w&&(document.removeEventListener("mousedown",v,!0),w=!1),r?.())}return x=setTimeout(()=>{x=null,document.addEventListener("mousedown",v,!0),w=!0},0),{isOpen:()=>s,close:C,destroy:C}}function Q(t,e){const n=t.getState();if(!u(n.selection))return!1;const o=n.selection,r=B(n,o.anchor.blockId);return!!r&&e(n,o,r)}function tt(t){return Q(t,(e,n,o)=>{const r=o.tableIndex+1;if(r>=e.doc.children.length)return!1;const l=e.doc.children[r];if(!l)return!1;const i=e.transaction("command").setSelection(d(l.id,0)).build();return t.dispatch(i),!0})}var et=null;function nt(t,e,n,o){const r=t.getState(),l=E(r,e,n,o);if(!l)return!1;const i=T(r,l),s=r.transaction("command").setSelection(d(i,0)).build();return t.dispatch(s),!0}function ot(t,e,o,r){const l=t.getState(),i=E(l,e,o,r);if(!i)return!1;const s=M(l,i),a=l.getBlock(s);if(!a)return!1;const c=n(a),u=l.transaction("command").setSelection(d(s,c)).build();return t.dispatch(u),!0}function rt(t,e){const n=t.getState(),o=n.getNodePath(e);if(!o)return!1;const r=n.transaction("input").setSelection(c(e,o)).build();return t.dispatch(r),!0}var lt='<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M6 1v10M1 6h10" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg>';function it(t,e,n){const o=document.createElement("button");return o.className=t,o.innerHTML=e,o.title=n,o.type="button",o.setAttribute("aria-label",n),o.setAttribute("contenteditable","false"),o.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation()}),o}function st(t,e){const n=document.createElement("div");n.className=`ntbl-insert-line ntbl-insert-line--${t}`,n.setAttribute("contenteditable","false"),n.setAttribute("data-notectl-no-print","");const o=it("ntbl-insert-btn",lt,e);return n.appendChild(o),n}function at(t,e){const n=document.createElement("button");n.className=`ntbl-add-zone ${t}`,n.type="button",n.setAttribute("contenteditable","false"),n.setAttribute("aria-label",e),n.setAttribute("data-notectl-no-print",""),n.title=e;const o=document.createElement("span");return o.className="ntbl-add-icon",o.innerHTML=lt,n.appendChild(o),n.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation()}),n}function ct(t){const e=document.createElement("div");return e.className=t,e.setAttribute("contenteditable","false"),e.setAttribute("data-notectl-no-print",""),e}function dt(t,e){f(t,"none"===e?{backgroundColor:"transparent",border:"1px dashed rgba(128,128,128,0.4)"}:e?{backgroundColor:e,border:"1px solid rgba(0,0,0,0.15)"}:{backgroundColor:"var(--notectl-border)",border:"1px solid rgba(0,0,0,0.15)"})}function ut(t,e,n,o){const r=document.createElement("div");r.className=`ntbl-handle ${t}`,r.dataset.index=String(e);const l=it("ntbl-handle-delete",'<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 10 10" fill="none"><path d="M2 2l6 6M8 2l-6 6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>',n);return l.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),o(e)}),r.appendChild(l),r}function bt(t,e){let n=0,o=0,r=t;for(;r&&r!==e;)n+=r.offsetTop,o+=r.offsetLeft,r=r.offsetParent;return{top:n,left:o}}var pt=class{tableId;numRows;numCols;activeRowIndex=-1;activeColIndex=-1;colBar;rowBar;insertLineH;insertLineV;addRowZone;addColZone;deleteTableBtn;borderColorBtn;actionsBtn;contextHint;observer;borderColorPopup=null;activeContextMenu=null;container;tableEl;getState;dispatchFn;pluginContext;locale;onMouseMove=t=>{const e=this.tableEl.getBoundingClientRect(),n=t.clientX-e.left,o=t.clientY-e.top;if(!(n>=-10&&n<=e.width+10&&o>=-10&&o<=e.height+10))return void this.hideInsertLines();const r=function(t,e,n,o){let r=Number.POSITIVE_INFINITY,l=null;for(const a of n){const t=Math.abs(e-a.position);t<r&&t<10&&(r=t,l=a)}let i=Number.POSITIVE_INFINITY,s=null;for(const a of o){const e=Math.abs(t-a.position);e<i&&e<10&&(i=e,s=a)}return l&&(!s||r<=i)?{type:"row",border:l}:s?{type:"col",border:s}:{type:"none",border:null}}(n,o,function(t){const e=t.querySelectorAll(":scope > tbody > tr"),n=t.offsetTop,o=[];for(let r=1;r<e.length;r++){const t=e[r];t&&o.push({position:t.offsetTop-n,index:r})}return o}(this.tableEl),function(t,e){if(e<=1)return[];const n=t/e,o=[];for(let r=1;r<e;r++)o.push({position:Math.round(n*r),index:r});return o}(this.tableEl.offsetWidth,this.numCols));"row"===r.type&&r.border?(this.showHorizontalLine(r.border),this.hideVerticalLine()):"col"===r.type&&r.border?(this.showVerticalLine(r.border),this.hideHorizontalLine()):this.hideInsertLines()};onMouseLeave=()=>{this.hideInsertLines()};constructor(t,e,n,r,l,i,s=H){if(this.container=t,this.tableEl=e,this.getState=r,this.dispatchFn=l,this.pluginContext=i??null,this.locale=s,this.tableId=n.id,this.numRows=o(n).length,this.numCols=this.countCols(n),this.colBar=ct("ntbl-col-bar"),this.rowBar=ct("ntbl-row-bar"),this.insertLineH=st("horizontal",s.insertRow),this.insertLineV=st("vertical",s.insertColumn),this.addRowZone=at("ntbl-add-row",s.addRow),this.addColZone=at("ntbl-add-col",s.addColumn),this.deleteTableBtn=it("ntbl-delete-table-btn",'<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none"><path d="M9 3h6m-9 4h12M10 11v6m4-6v6m-9 3h14l-1-13H6L5 20z" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg>',s.deleteTable),this.deleteTableBtn.setAttribute("data-notectl-no-print",""),i){const t=V(r(),this.tableId);this.borderColorBtn=function(t,e){const n=it("ntbl-border-color-btn",'<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none"><path d="M3 3h18v18H3V3zm0 6h18M3 15h18M9 3v18M15 3v18" stroke="currentColor" stroke-width="1.5"/></svg>',t);n.setAttribute("data-notectl-no-print","");const o=document.createElement("span");return o.className="ntbl-border-color-swatch",dt(o,e),n.appendChild(o),n}(s.borderColor,t),this.actionsBtn=function(t){const e=it("ntbl-actions-btn",'<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="currentColor"><circle cx="12" cy="5" r="2"/><circle cx="12" cy="12" r="2"/><circle cx="12" cy="19" r="2"/></svg>',t);return e.setAttribute("data-notectl-no-print",""),e}(s.tableActionsHint)}else this.borderColorBtn=null,this.actionsBtn=null;t.append(this.colBar,this.rowBar,this.insertLineH,this.insertLineV,this.addRowZone,this.addColZone,this.deleteTableBtn),this.borderColorBtn&&t.appendChild(this.borderColorBtn),this.actionsBtn&&t.appendChild(this.actionsBtn),this.contextHint=function(t){const e=document.createElement("div");return e.className="ntbl-context-hint",e.setAttribute("aria-hidden","true"),e.setAttribute("contenteditable","false"),e.setAttribute("data-notectl-no-print",""),e.textContent=t,e}(s.contextMenuHint),t.appendChild(this.contextHint),this.rebuildColHandles(),this.rebuildRowHandles(),this.bindEventListeners(),this.observer=new ResizeObserver(()=>{this.positionControls()}),this.observer.observe(e),requestAnimationFrame(()=>this.positionControls())}update(t){this.tableId=t.id;const e=o(t).length,n=this.countCols(t);if(e===this.numRows&&n===this.numCols||(this.numRows=e,this.numCols=n,this.rebuildColHandles(),this.rebuildRowHandles()),this.borderColorBtn){const e=this.borderColorBtn.querySelector(".ntbl-border-color-swatch");if(e){const n=t.attrs?.borderColor;dt(e,n)}}requestAnimationFrame(()=>this.positionControls())}destroy(){this.activeContextMenu?.destroy(),this.closeBorderColorPopup(),this.observer.disconnect(),this.container.removeEventListener("mousemove",this.onMouseMove),this.container.removeEventListener("mouseleave",this.onMouseLeave),this.colBar.remove(),this.rowBar.remove(),this.insertLineH.remove(),this.insertLineV.remove(),this.addRowZone.remove(),this.addColZone.remove(),this.deleteTableBtn.remove(),this.borderColorBtn?.remove(),this.actionsBtn?.remove(),this.contextHint.remove()}bindEventListeners(){const t=this.insertLineH.querySelector(".ntbl-insert-btn"),e=this.insertLineV.querySelector(".ntbl-insert-btn");if(t.addEventListener("click",()=>{this.activeRowIndex>=0&&this.dispatchTransaction(F(this.getState(),this.tableId,this.activeRowIndex))}),e.addEventListener("click",()=>{this.activeColIndex>=0&&this.dispatchTransaction(q(this.getState(),this.tableId,this.activeColIndex))}),this.addRowZone.addEventListener("click",()=>{this.dispatchTransaction(F(this.getState(),this.tableId,this.numRows))}),this.addColZone.addEventListener("click",()=>{this.dispatchTransaction(q(this.getState(),this.tableId,this.numCols))}),this.deleteTableBtn.addEventListener("click",()=>{this.dispatchTransaction(Y(this.getState(),this.tableId))}),this.borderColorBtn&&this.pluginContext){const t=this.pluginContext;this.borderColorBtn.addEventListener("click",()=>{this.toggleBorderColorPopup(t)})}if(this.actionsBtn&&this.pluginContext){const t=this.pluginContext;this.actionsBtn.addEventListener("click",()=>{this.openActionsMenu(t)})}this.container.addEventListener("mousemove",this.onMouseMove),this.container.addEventListener("mouseleave",this.onMouseLeave)}openActionsMenu(t){if(this.activeContextMenu?.isOpen())return this.activeContextMenu.close(),void(this.activeContextMenu=null);if(!this.actionsBtn)return;const e=this.actionsBtn.getBoundingClientRect(),n=new DOMRect(e.left,e.bottom+4,0,0);this.activeContextMenu=J(this.container,t,this.tableId,n,()=>{this.activeContextMenu=null},this.locale)}toggleBorderColorPopup(t){this.borderColorPopup?this.closeBorderColorPopup():(this.borderColorPopup=document.createElement("div"),this.borderColorPopup.className="notectl-table-context-menu",f(this.borderColorPopup,{position:"absolute",top:"24px",left:"24px",zIndex:"10000"}),this.borderColorPopup.setAttribute("contenteditable","false"),O(this.borderColorPopup,t,this.tableId,()=>{this.closeBorderColorPopup()},this.locale),this.container.appendChild(this.borderColorPopup))}closeBorderColorPopup(){this.borderColorPopup&&(this.borderColorPopup.remove(),this.borderColorPopup=null)}dispatchTransaction(t){t&&this.dispatchFn(t)}countCols(t){const e=o(t);return e[0]?o(e[0]).length:0}positionControls(){!function(t,e,n){const o=t.children;if(0===o.length)return;const r=e/n;for(let l=0;l<o.length;l++){const t=o[l];f(t,{left:`${Math.round(r*l)}px`,width:`${Math.round(r)}px`})}g(t,"width",`${e}px`)}(this.colBar,this.tableEl.offsetWidth,this.numCols),function(t,e){const n=t.children;if(0===n.length)return;const o=e.querySelectorAll(":scope > tbody > tr"),r=e.offsetTop;let l=0;for(let i=0;i<n.length;i++){const t=n[i],e=o[i];if(e){const n=e.offsetTop-r,o=e.offsetHeight;f(t,{top:`${n}px`,height:`${o}px`}),l=n+o}}g(t,"height",`${l}px`)}(this.rowBar,this.tableEl),function(t,e,n,o){const r=bt(n,o),l=n.offsetHeight,i=n.offsetWidth;f(t,{width:`${i}px`,left:`${r.left}px`}),f(e,{height:`${l}px`,top:`${r.top}px`})}(this.addRowZone,this.addColZone,this.tableEl,this.container)}showHorizontalLine(t){this.activeRowIndex=t.index;const e=bt(this.tableEl,this.container);f(this.insertLineH,{top:e.top+t.position-1+"px",left:`${e.left}px`,width:`${this.tableEl.offsetWidth}px`}),this.insertLineH.classList.add("ntbl-insert-line--visible")}showVerticalLine(t){this.activeColIndex=t.index;const e=bt(this.tableEl,this.container);f(this.insertLineV,{left:e.left+t.position-1+"px",top:`${e.top}px`,height:`${this.tableEl.offsetHeight}px`}),this.insertLineV.classList.add("ntbl-insert-line--visible")}hideInsertLines(){this.hideHorizontalLine(),this.hideVerticalLine()}hideHorizontalLine(){this.insertLineH.classList.remove("ntbl-insert-line--visible"),this.activeRowIndex=-1}hideVerticalLine(){this.insertLineV.classList.remove("ntbl-insert-line--visible"),this.activeColIndex=-1}rebuildColHandles(){this.colBar.innerHTML="";for(let t=0;t<this.numCols;t++){const e=ut("ntbl-col-handle",t,this.locale.deleteColumn,t=>{this.dispatchTransaction(K(this.getState(),this.tableId,t))});this.colBar.appendChild(e)}}rebuildRowHandles(){this.rowBar.innerHTML="";for(let t=0;t<this.numRows;t++){const e=ut("ntbl-row-handle",t,this.locale.deleteRow,t=>{this.dispatchTransaction(Z(this.getState(),this.tableId,t))});this.rowBar.appendChild(e)}}};function ht(t,e){"none"===e?(g(t,"--ntbl-border-color","transparent"),t.classList.add("notectl-table--borderless")):e?(g(t,"--ntbl-border-color",e),t.classList.remove("notectl-table--borderless")):(m(t,"--ntbl-border-color"),t.classList.remove("notectl-table--borderless"))}var mt=new v("tableSelection"),ft={maxPickerRows:8,maxPickerCols:8},gt="border-collapse: collapse; width: 100%; table-layout: fixed",vt="border: 1px solid var(--ntbl-bc, #d0d0d0); padding: 8px 12px; vertical-align: top",xt=class{id="table";name="Table";priority=40;config;locale;selectionService=null;cleanupMouseSelection=null;context=null;constructor(t){this.config={...ft,...t}}async init(t){this.locale=await C(t,this.config.locale,H,P),t.registerStyleSheet('\n/* Table */\n.notectl-table-wrapper {\n\tmargin: 8px 0;\n\toverflow-x: auto;\n\tposition: relative;\n}\n\n.notectl-table {\n\twidth: 100%;\n\tborder-collapse: collapse;\n\ttable-layout: fixed;\n}\n\n.notectl-table td {\n\tborder: 1px solid var(--ntbl-border-color, var(--notectl-border));\n\tpadding: 8px 12px;\n\tmin-width: 60px;\n\tvertical-align: top;\n\tmin-height: 1.6em;\n}\n\n.notectl-table--borderless td {\n\tborder: 1px dashed rgba(128, 128, 128, 0.15);\n}\n\n@media print {\n\t.notectl-table--borderless td {\n\t\tborder: none;\n\t}\n}\n\n.notectl-table td:focus-within {\n\toutline: 2px solid var(--notectl-primary);\n\toutline-offset: -2px;\n}\n\n.notectl-table-cell--selected {\n\tbackground: var(--notectl-primary-muted);\n}\n\n/* Table Context Menu */\n.notectl-table-context-menu {\n\tbackground: var(--notectl-surface-overlay);\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 6px;\n\tbox-shadow: 0 4px 12px var(--notectl-shadow);\n\tpadding: 4px 0;\n\tmin-width: 180px;\n\tz-index: 10000;\n}\n\n.notectl-table-context-menu button {\n\tdisplay: block;\n\twidth: 100%;\n\tpadding: 8px 12px;\n\ttext-align: start;\n\tborder: none;\n\tbackground: none;\n\tcursor: pointer;\n\tfont-size: 14px;\n\tcolor: var(--notectl-fg);\n\tfont-family: inherit;\n}\n\n.notectl-table-context-menu button:hover {\n\tbackground: var(--notectl-hover-bg);\n}\n\n.notectl-table-context-menu hr {\n\tborder: none;\n\tborder-top: 1px solid var(--notectl-border);\n\tmargin: 4px 0;\n}\n\n/* === Table Controls === */\n\n/* Outer container for table + controls */\n.ntbl-container {\n\tposition: relative;\n\tmargin: 8px 0;\n\tpadding-block-start: 24px;\n\tpadding-inline-start: 24px;\n}\n\n.ntbl-container .notectl-table-wrapper {\n\tmargin: 0;\n}\n\n.ntbl-container.notectl-table--selected .notectl-table-wrapper {\n\toutline: 2px solid var(--notectl-primary-fg);\n\toutline-offset: 2px;\n\tborder-radius: 6px;\n}\n\n/* --- Column Handle Bar --- */\n.ntbl-col-bar {\n\tposition: absolute;\n\ttop: 0;\n\tinset-inline-start: 24px;\n\theight: 20px;\n\tdisplay: flex;\n\topacity: 0;\n\ttransition: opacity 0.2s ease;\n\tz-index: 3;\n\tpointer-events: none;\n}\n\n.ntbl-container:hover .ntbl-col-bar,\n.ntbl-container:focus-within .ntbl-col-bar {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n.ntbl-container.notectl-table--selected .ntbl-col-bar {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n/* --- Row Handle Bar --- */\n.ntbl-row-bar {\n\tposition: absolute;\n\ttop: 24px;\n\tinset-inline-start: 0;\n\twidth: 20px;\n\tdisplay: flex;\n\tflex-direction: column;\n\topacity: 0;\n\ttransition: opacity 0.2s ease;\n\tz-index: 3;\n\tpointer-events: none;\n}\n\n.ntbl-container:hover .ntbl-row-bar,\n.ntbl-container:focus-within .ntbl-row-bar {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n.ntbl-container.notectl-table--selected .ntbl-row-bar {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n/* --- Handle (shared base) --- */\n.ntbl-handle {\n\tposition: absolute;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\ttransition: background 0.15s ease;\n\tborder-radius: 3px;\n}\n\n.ntbl-col-handle {\n\theight: 100%;\n\tbackground: var(--notectl-hover-bg);\n\tborder-radius: 4px 4px 0 0;\n}\n\n.ntbl-col-handle:hover {\n\tbackground: var(--notectl-border);\n}\n\n.ntbl-row-handle {\n\twidth: 100%;\n\tbackground: var(--notectl-hover-bg);\n\tborder-start-start-radius: 4px;\n\tborder-end-start-radius: 4px;\n}\n\n.ntbl-row-handle:hover {\n\tbackground: var(--notectl-border);\n}\n\n/* --- Handle Delete Button --- */\n.ntbl-handle-delete {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 16px;\n\theight: 16px;\n\tborder: none;\n\tbackground: transparent;\n\tcolor: var(--notectl-fg-muted);\n\tcursor: pointer;\n\tborder-radius: 3px;\n\tpadding: 0;\n\topacity: 0;\n\ttransform: scale(0.7);\n\ttransition: opacity 0.15s, transform 0.15s,\n\t\tbackground 0.15s, color 0.15s;\n}\n\n.ntbl-handle:hover .ntbl-handle-delete,\n.ntbl-handle:focus-within .ntbl-handle-delete {\n\topacity: 1;\n\ttransform: scale(1);\n}\n\n.ntbl-handle-delete:hover,\n.ntbl-handle-delete:focus-visible {\n\tbackground: var(--notectl-danger-muted);\n\tcolor: var(--notectl-danger);\n}\n\n.ntbl-handle-delete:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n/* --- Insert Lines --- */\n.ntbl-insert-line {\n\tposition: absolute;\n\tpointer-events: none;\n\topacity: 0;\n\ttransition: opacity 0.15s ease;\n\tz-index: 6;\n}\n\n.ntbl-insert-line--visible {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n.ntbl-insert-line--horizontal {\n\theight: 2px;\n\tbackground: linear-gradient(\n\t\t90deg,\n\t\ttransparent,\n\t\tvar(--notectl-primary) 8%,\n\t\tvar(--notectl-primary) 92%,\n\t\ttransparent\n\t);\n\tbox-shadow: 0 0 6px var(--notectl-focus-ring);\n}\n\n.ntbl-insert-line--vertical {\n\twidth: 2px;\n\tbackground: linear-gradient(\n\t\t180deg,\n\t\ttransparent,\n\t\tvar(--notectl-primary) 8%,\n\t\tvar(--notectl-primary) 92%,\n\t\ttransparent\n\t);\n\tbox-shadow: 0 0 6px var(--notectl-focus-ring);\n}\n\n/* --- Insert Button on Line --- */\n.ntbl-insert-btn {\n\tposition: absolute;\n\twidth: 20px;\n\theight: 20px;\n\tborder-radius: 50%;\n\tbackground: var(--notectl-surface-raised);\n\tborder: 2px solid var(--notectl-primary);\n\tcolor: var(--notectl-primary);\n\tcursor: pointer;\n\tpointer-events: all;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 0;\n\tbox-shadow: 0 2px 8px var(--notectl-focus-ring);\n\ttransition: background 0.15s, color 0.15s,\n\t\ttransform 0.15s, box-shadow 0.15s;\n}\n\n.ntbl-insert-line--horizontal .ntbl-insert-btn {\n\tleft: 50%;\n\ttop: -9px;\n\ttransform: translateX(-50%);\n}\n\n.ntbl-insert-line--vertical .ntbl-insert-btn {\n\ttop: 50%;\n\tinset-inline-start: -9px;\n\ttransform: translateY(-50%);\n}\n\n.ntbl-insert-btn:hover,\n.ntbl-insert-btn:focus-visible {\n\tbackground: var(--notectl-primary);\n\tcolor: var(--notectl-primary-fg);\n\tbox-shadow: 0 2px 12px var(--notectl-focus-ring);\n}\n\n.ntbl-insert-btn:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-insert-line--horizontal .ntbl-insert-btn:hover {\n\ttransform: translateX(-50%) scale(1.2);\n}\n\n.ntbl-insert-line--vertical .ntbl-insert-btn:hover {\n\ttransform: translateY(-50%) scale(1.2);\n}\n\n/* --- Add Row / Add Column Zones --- */\n.ntbl-add-zone {\n\tposition: absolute;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\tuser-select: none;\n\topacity: 0;\n\ttransition: opacity 0.2s ease, background 0.2s ease,\n\t\tborder-color 0.2s ease;\n}\n\n.ntbl-container:hover .ntbl-add-zone,\n.ntbl-container:focus-within .ntbl-add-zone {\n\topacity: 1;\n}\n\n.ntbl-container.notectl-table--selected .ntbl-add-zone {\n\topacity: 1;\n}\n\n.ntbl-delete-table-btn {\n\tposition: absolute;\n\ttop: 0;\n\tinset-inline-start: 0;\n\twidth: 20px;\n\theight: 20px;\n\tborder: 1px solid var(--notectl-danger);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-surface-raised);\n\tcolor: var(--notectl-danger);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\topacity: 0;\n\ttransition: opacity 0.2s ease, background 0.15s, border-color 0.15s;\n\tz-index: 7;\n}\n\n.ntbl-container:hover .ntbl-delete-table-btn,\n.ntbl-container:focus-within .ntbl-delete-table-btn,\n.ntbl-container.notectl-table--selected .ntbl-delete-table-btn {\n\topacity: 1;\n}\n\n.ntbl-delete-table-btn:hover,\n.ntbl-delete-table-btn:focus-visible {\n\tbackground: var(--notectl-danger-muted);\n\tborder-color: var(--notectl-danger);\n}\n\n.ntbl-delete-table-btn:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n/* --- Context Menu Discovery Hint --- */\n.ntbl-context-hint {\n\tposition: absolute;\n\ttop: 4px;\n\tinset-inline-end: 0;\n\tfont-size: 11px;\n\tcolor: var(--notectl-fg-muted);\n\tpadding: 2px 8px;\n\tborder-radius: 4px;\n\topacity: 0;\n\ttransition: opacity 0.2s ease;\n\tpointer-events: none;\n\twhite-space: nowrap;\n\tz-index: 5;\n}\n\n.ntbl-container:hover .ntbl-context-hint,\n.ntbl-container:focus-within .ntbl-context-hint,\n.ntbl-container.notectl-table--selected .ntbl-context-hint {\n\topacity: 1;\n}\n\n/* --- Table Actions Button --- */\n.ntbl-actions-btn {\n\tposition: absolute;\n\ttop: 0;\n\tinset-inline-start: 48px;\n\twidth: 20px;\n\theight: 20px;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-surface-raised);\n\tcolor: var(--notectl-fg-muted);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\topacity: 0;\n\ttransition: opacity 0.2s ease, background 0.15s, border-color 0.15s;\n\tz-index: 7;\n\tcursor: pointer;\n\tpadding: 0;\n}\n\n.ntbl-container:hover .ntbl-actions-btn,\n.ntbl-container:focus-within .ntbl-actions-btn,\n.ntbl-container.notectl-table--selected .ntbl-actions-btn {\n\topacity: 1;\n}\n\n.ntbl-actions-btn:hover,\n.ntbl-actions-btn:focus-visible {\n\tbackground: var(--notectl-hover-bg);\n\tborder-color: var(--notectl-primary);\n}\n\n.ntbl-actions-btn:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n/* --- Border Color Button --- */\n.ntbl-border-color-btn {\n\tposition: absolute;\n\ttop: 0;\n\tinset-inline-start: 24px;\n\twidth: 20px;\n\theight: 20px;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-surface-raised);\n\tcolor: var(--notectl-fg-muted);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\topacity: 0;\n\ttransition: opacity 0.2s ease, background 0.15s, border-color 0.15s;\n\tz-index: 7;\n\tcursor: pointer;\n\tpadding: 0;\n}\n\n.ntbl-container:hover .ntbl-border-color-btn,\n.ntbl-container:focus-within .ntbl-border-color-btn,\n.ntbl-container.notectl-table--selected .ntbl-border-color-btn {\n\topacity: 1;\n}\n\n.ntbl-border-color-btn:hover,\n.ntbl-border-color-btn:focus-visible {\n\tbackground: var(--notectl-hover-bg);\n\tborder-color: var(--notectl-primary);\n}\n\n.ntbl-border-color-btn:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-border-color-swatch {\n\twidth: 10px;\n\theight: 10px;\n\tborder-radius: 2px;\n\tborder: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n/* --- Context Menu Keyboard Hint --- */\n.notectl-table-context-menu__hint {\n\tpadding: 4px 12px 6px;\n\tfont-size: 11px;\n\tcolor: var(--notectl-fg-muted);\n\tborder-top: 1px solid var(--notectl-border);\n\tmargin-top: 4px;\n\ttext-align: center;\n\tuser-select: none;\n}\n\n/* --- Context Menu Focus --- */\n.notectl-table-context-menu button:focus-visible {\n\toutline: none;\n\tbackground: var(--notectl-primary-muted);\n\tbox-shadow: inset 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.notectl-table-context-menu [role="separator"] {\n\tborder: none;\n\tborder-top: 1px solid var(--notectl-border);\n\tmargin: 4px 0;\n\theight: 0;\n}\n\n.ntbl-add-row {\n\tbottom: 0;\n\theight: 24px;\n\tborder: 1px dashed var(--notectl-border);\n\tborder-end-start-radius: 6px;\n\tborder-end-end-radius: 6px;\n\tborder-block-start: none;\n\tcolor: var(--notectl-fg-muted);\n\ttransform: translateY(100%);\n}\n\n.ntbl-add-row:hover,\n.ntbl-add-row:focus-visible {\n\tbackground: var(--notectl-primary-muted);\n\tborder-color: var(--notectl-primary);\n\tcolor: var(--notectl-primary);\n}\n\n.ntbl-add-row:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-add-col {\n\tinset-inline-end: 0;\n\ttop: 24px;\n\twidth: 24px;\n\tborder: 1px dashed var(--notectl-border);\n\tborder-start-end-radius: 6px;\n\tborder-end-end-radius: 6px;\n\tborder-inline-start: none;\n\tcolor: var(--notectl-fg-muted);\n\ttransform: translateX(100%);\n}\n\n[dir="rtl"] .ntbl-add-col {\n\ttransform: translateX(-100%);\n}\n\n.ntbl-add-col:hover,\n.ntbl-add-col:focus-visible {\n\tbackground: var(--notectl-primary-muted);\n\tborder-color: var(--notectl-primary);\n\tcolor: var(--notectl-primary);\n}\n\n.ntbl-add-col:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-add-icon {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\ttransition: transform 0.2s ease;\n}\n\n.ntbl-add-zone:hover .ntbl-add-icon {\n\ttransform: scale(1.15);\n}\n'),this.context=t,this.registerNodeSpecs(t),this.registerNodeViews(t),G(t,this.locale),t.registerCommand("resetTableBorderColor",()=>_(t,this.locale)),function(t,e){t.registerKeymap({Tab:()=>function(t,e){return Q(t,(n,o,r)=>r.colIndex<r.totalCols-1?nt(t,r.tableId,r.rowIndex,r.colIndex+1):r.rowIndex<r.totalRows-1?nt(t,r.tableId,r.rowIndex+1,0):(W(t,e),!0))}(t,e),"Shift-Tab":()=>function(t){return Q(t,(e,n,o)=>o.colIndex>0?nt(t,o.tableId,o.rowIndex,o.colIndex-1):!(o.rowIndex>0)||nt(t,o.tableId,o.rowIndex-1,o.totalCols-1))}(t),Backspace:()=>function(t){return Q(t,(e,n,o)=>{if(!a(n))return!1;if(0!==n.anchor.offset)return!1;if(0!==o.rowIndex||0!==o.colIndex)return!1;const r=T(e,o.cellId);return n.anchor.blockId===r&&rt(t,o.tableId)})}(t),Delete:()=>function(t){return Q(t,(e,o,r)=>{if(!a(o))return!1;const l=e.getBlock(o.anchor.blockId);if(!l)return!1;const i=n(l);if(o.anchor.offset!==i)return!1;if(r.rowIndex!==r.totalRows-1||r.colIndex!==r.totalCols-1)return!1;const s=M(e,r.cellId);return o.anchor.blockId===s&&rt(t,r.tableId)})}(t),ArrowDown:()=>function(t){return Q(t,(e,n,o)=>{const r=M(e,o.cellId);return n.anchor.blockId===r&&(o.rowIndex>=o.totalRows-1?tt(t):nt(t,o.tableId,o.rowIndex+1,o.colIndex))})}(t),ArrowUp:()=>function(t){return Q(t,(e,n,o)=>{const r=T(e,o.cellId);return n.anchor.blockId===r&&!(o.rowIndex<=0)&&nt(t,o.tableId,o.rowIndex-1,o.colIndex)})}(t),ArrowRight:()=>function(t){return Q(t,(e,o,r)=>{if(!a(o))return!1;const l=e.getBlock(o.anchor.blockId);if(!l)return!1;const i=n(l);if(o.anchor.offset!==i)return!1;const s=M(e,r.cellId);return o.anchor.blockId===s&&(r.colIndex<r.totalCols-1?nt(t,r.tableId,r.rowIndex,r.colIndex+1):!(r.rowIndex<r.totalRows-1)||nt(t,r.tableId,r.rowIndex+1,0))})}(t),ArrowLeft:()=>function(t){return Q(t,(e,n,o)=>{if(!a(n))return!1;if(0!==n.anchor.offset)return!1;const r=T(e,o.cellId);return n.anchor.blockId===r&&(o.colIndex>0?ot(t,o.tableId,o.rowIndex,o.colIndex-1):!(o.rowIndex>0)||ot(t,o.tableId,o.rowIndex-1,o.totalCols-1))})}(t),Escape:()=>tt(t),"Shift-F10":()=>function(t){return Q(t,(e,n,o)=>{const r=t.getContainer(),l=r.querySelector(`[data-block-id="${o.cellId}"]`);if(!l)return!1;const i=l.getBoundingClientRect(),s=new DOMRect(i.left+i.width/2,i.bottom,0,0),a=r.querySelector(`[data-block-id="${o.tableId}"].ntbl-container`)??r;return et?.close(),et=J(a,t,o.tableId,s,()=>{et=null}),!0})}(t)},{priority:"context"})}(t,this.locale),this.registerToolbarItem(t),this.selectionService=function(t){let e=null,n=[],o=/* @__PURE__ */new Set;function r(){if(!e)return n=[],void(o=/* @__PURE__ */new Set);const r=t.getState(),l=[],i=Math.min(e.fromRow,e.toRow),s=Math.max(e.fromRow,e.toRow),a=Math.min(e.fromCol,e.toCol),c=Math.max(e.fromCol,e.toCol);for(let t=i;t<=s;t++)for(let n=a;n<=c;n++){const o=E(r,e.tableId,t,n);o&&l.push(o)}n=l,o=new Set(l)}const l={getSelectedRange:()=>e,setSelectedRange(n){e=n,r();const o=t.getState();t.dispatch(o.transaction("api").setSelection(o.selection).build())},clearSelectionSilent(){e=null,r()},getSelectedCellIds:()=>n,isSelected:t=>o.has(t)};return t.registerService(mt,l),l}(t)}onReady(){this.context&&this.selectionService&&(this.cleanupMouseSelection=function(t,e){const n=t.getContainer();let o=null,r=!1;function l(n){const l=n.target.closest("td[data-block-id]");if(!l)return o=null,r=!1,void e.setSelectedRange(null);if(n.shiftKey){if(o){const r=B(t.getState(),l.getAttribute("data-block-id"));if(!r||r.tableId!==o.tableId)return o=null,void e.setSelectedRange(null);n.preventDefault(),e.setSelectedRange({tableId:o.tableId,fromRow:o.row,fromCol:o.col,toRow:r.rowIndex,toCol:r.colIndex})}}else{e.setSelectedRange(null);const n=B(t.getState(),l.getAttribute("data-block-id"));if(!n)return o=null,void(r=!1);o={tableId:n.tableId,row:n.rowIndex,col:n.colIndex},r=!0}}function i(n){if(!r||!o)return;const l=n.target.closest("td[data-block-id]");if(!l)return;const i=B(t.getState(),l.getAttribute("data-block-id"));i&&i.tableId===o.tableId&&(i.rowIndex===o.row&&i.colIndex===o.col||(n.preventDefault(),e.setSelectedRange({tableId:o.tableId,fromRow:o.row,fromCol:o.col,toRow:i.rowIndex,toCol:i.colIndex})))}function s(){r=!1}return n.addEventListener("mousedown",l),n.addEventListener("mousemove",i),document.addEventListener("mouseup",s),()=>{n.removeEventListener("mousedown",l),n.removeEventListener("mousemove",i),document.removeEventListener("mouseup",s)}}(this.context,this.selectionService))}destroy(){this.cleanupMouseSelection?.(),this.cleanupMouseSelection=null,this.selectionService=null,this.context=null}decorations(t){if(!this.selectionService)return w.empty;if(!this.selectionService.getSelectedRange())return w.empty;const e=t.selection;if(!u(e)||!N(t,e.anchor.blockId))return this.selectionService.clearSelectionSilent(),w.empty;const n=this.selectionService.getSelectedCellIds();if(0===n.length)return w.empty;const o=[];for(const r of n)o.push(x(r,{class:"notectl-table-cell--selected"}));return w.create(o)}registerNodeSpecs(t){t.registerNodeSpec({type:"table",group:"block",content:{allow:["table_row"],min:1},isolating:!0,selectable:!0,toDOM(t){const e=document.createElement("div");return e.className="notectl-table-wrapper",e.setAttribute("data-block-id",t.id),e},toHTML(t,e,n){const o=t.attrs?.borderColor,r=function(t){return t?"none"===t?`${gt}; --ntbl-bc: transparent`:S(t)?`${gt}; --ntbl-bc: ${p(t)}`:gt:gt}(o);return`<table${n?.styleAttr(r)??` style="${r}"`}>${e}</table>`},sanitize:{tags:["table","tbody"]}}),t.registerNodeSpec({type:"table_row",group:"table_content",content:{allow:["table_cell"],min:1},toDOM(t){const e=document.createElement("tr");return e.setAttribute("data-block-id",t.id),e.setAttribute("role","row"),e},toHTML:(t,e)=>`<tr>${e}</tr>`,sanitize:{tags:["tr"]}}),t.registerNodeSpec({type:"table_cell",group:"table_content",content:{allow:["paragraph","list_item","heading","blockquote","image","horizontal_rule"]},isolating:!0,toDOM(t){const e=document.createElement("td");return e.setAttribute("data-block-id",t.id),e.setAttribute("role","cell"),e},toHTML(t,e,n){const o=t.attrs?.colspan??1,r=t.attrs?.rowspan??1,l=[n?.styleAttr(vt)??` style="${vt}"`];return o>1&&l.push(` colspan="${o}"`),r>1&&l.push(` rowspan="${r}"`),`<td${l.join("")}>${e}</td>`},sanitize:{tags:["td"],attrs:["colspan","rowspan"]}})}registerNodeViews(t){t.getSchemaRegistry(),t.registerNodeView("table",function(t,e,n=H){return(t,r,l)=>{const i=document.createElement("div");i.className="ntbl-container",i.setAttribute("data-block-id",t.id),i.setAttribute("data-selectable","true");const s=document.createElement("div");s.className="notectl-table-wrapper";const a=document.createElement("table");a.className="notectl-table",a.setAttribute("role","table");const c=o(t),d=c.length,u=c[0]?o(c[0]).length:0;a.setAttribute("aria-label",n.tableAriaLabel(d,u)),a.setAttribute("aria-description",n.tableAriaDescription);const b=document.createElement("tbody");a.appendChild(b),s.appendChild(a),i.appendChild(s),ht(a,t.attrs?.borderColor);const p=document.createElement("div");p.className="notectl-sr-only",p.setAttribute("aria-live","polite"),p.setAttribute("aria-atomic","true"),i.appendChild(p);const h=function(t,e,n,o,r,l,i){return new pt(t,e,n,o,r,l,i)}(i,a,t,r,l,e,n);let m=null,f=t.id;const g=t=>{if(!e)return;t.preventDefault(),t.stopPropagation(),m?.close();const o=new DOMRect(t.clientX,t.clientY,0,0);m=J(i,e,f,o,()=>{m=null},n)};return a.addEventListener("contextmenu",g),{dom:i,contentDOM:b,update(t){if("table"!==t.type)return!1;f=t.id,i.setAttribute("data-block-id",t.id),i.setAttribute("data-selectable","true");const e=o(t),r=e.length,l=e[0]?o(e[0]).length:0;return a.setAttribute("aria-label",n.tableAriaLabel(r,l)),ht(a,t.attrs?.borderColor),h.update(t),!1},destroy(){m?.destroy(),a.removeEventListener("contextmenu",g),h.destroy()},selectNode(){i.classList.add("notectl-table--selected")},deselectNode(){i.classList.remove("notectl-table--selected")}}}}(0,t,this.locale)),t.registerNodeView("table_row",(t,e,n)=>{const o=document.createElement("tr");return o.setAttribute("data-block-id",t.id),o.setAttribute("role","row"),{dom:o,contentDOM:o,update:t=>("table_row"!==t.type||o.setAttribute("data-block-id",t.id),!1),destroy(){}}}),t.registerNodeView("table_cell",(t,e,n)=>{const o=document.createElement("td");o.setAttribute("data-block-id",t.id),o.setAttribute("role","cell");const r=t.attrs?.colspan??1,l=t.attrs?.rowspan??1;r>1&&(o.colSpan=r),l>1&&(o.rowSpan=l);const i=t.attrs?.align;return i&&"left"!==i&&g(o,"textAlign",i),{dom:o,contentDOM:o,update(t){if("table_cell"!==t.type)return!1;o.setAttribute("data-block-id",t.id);const e=t.attrs?.colspan??1,n=t.attrs?.rowspan??1;return e>1?o.colSpan=e:o.removeAttribute("colspan"),n>1?o.rowSpan=n:o.removeAttribute("rowspan"),!1},destroy(){}}})}registerToolbarItem(t){const e=this.config.maxPickerRows??8,n=this.config.maxPickerCols??8;t.registerToolbarItem({id:"table",group:"insert",icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 3h18v18H3V3zm2 2v4h6V5H5zm8 0v4h6V5h-6zm-8 6v4h6v-4H5zm8 0v4h6v-4h-6zm-8 6v4h6v-4H5zm8 0v4h6v-4h-6z"/></svg>',label:this.locale.insertTable,tooltip:this.locale.insertTable,command:"insertTable",popupType:"gridPicker",popupConfig:{maxRows:e,maxCols:n,onSelect:(e,n)=>{X(t,e,n)}},isActive:t=>!!u(t.selection)&&N(t,t.selection.anchor.blockId)})}};export{mt as n,xt as t};
|
|
2
|
-
//# sourceMappingURL=TablePlugin-R-hmydrM.mjs.map
|