@domternal/core 0.3.0 → 0.4.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/README.md +7 -5
- package/dist/CanChecker.d.ts +79 -0
- package/dist/CanChecker.d.ts.map +1 -0
- package/dist/CanChecker.test.d.ts +2 -0
- package/dist/CanChecker.test.d.ts.map +1 -0
- package/dist/ChainBuilder.d.ts +119 -0
- package/dist/ChainBuilder.d.ts.map +1 -0
- package/dist/ChainBuilder.test.d.ts +2 -0
- package/dist/ChainBuilder.test.d.ts.map +1 -0
- package/dist/CommandManager.d.ts +86 -0
- package/dist/CommandManager.d.ts.map +1 -0
- package/dist/CommandManager.test.d.ts +2 -0
- package/dist/CommandManager.test.d.ts.map +1 -0
- package/dist/Editor.d.ts +262 -0
- package/dist/Editor.d.ts.map +1 -0
- package/dist/Editor.test.d.ts +2 -0
- package/dist/Editor.test.d.ts.map +1 -0
- package/dist/EventEmitter.d.ts +57 -0
- package/dist/EventEmitter.d.ts.map +1 -0
- package/dist/EventEmitter.test.d.ts +2 -0
- package/dist/EventEmitter.test.d.ts.map +1 -0
- package/dist/Extension.d.ts +171 -0
- package/dist/Extension.d.ts.map +1 -0
- package/dist/Extension.test.d.ts +2 -0
- package/dist/Extension.test.d.ts.map +1 -0
- package/dist/ExtensionManager.d.ts +283 -0
- package/dist/ExtensionManager.d.ts.map +1 -0
- package/dist/ExtensionManager.test.d.ts +2 -0
- package/dist/ExtensionManager.test.d.ts.map +1 -0
- package/dist/Mark.d.ts +164 -0
- package/dist/Mark.d.ts.map +1 -0
- package/dist/Mark.test.d.ts +5 -0
- package/dist/Mark.test.d.ts.map +1 -0
- package/dist/Node.d.ts +153 -0
- package/dist/Node.d.ts.map +1 -0
- package/dist/Node.test.d.ts +2 -0
- package/dist/Node.test.d.ts.map +1 -0
- package/dist/ToolbarController.d.ts +169 -0
- package/dist/ToolbarController.d.ts.map +1 -0
- package/dist/ToolbarController.test.d.ts +2 -0
- package/dist/ToolbarController.test.d.ts.map +1 -0
- package/dist/commandPropsBuilder.d.ts +70 -0
- package/dist/commandPropsBuilder.d.ts.map +1 -0
- package/dist/commandPropsBuilder.test.d.ts +2 -0
- package/dist/commandPropsBuilder.test.d.ts.map +1 -0
- package/dist/commands/attributeCommands.d.ts +24 -0
- package/dist/commands/attributeCommands.d.ts.map +1 -0
- package/dist/commands/attributeCommands.test.d.ts +2 -0
- package/dist/commands/attributeCommands.test.d.ts.map +1 -0
- package/dist/commands/builtIn.test.d.ts +2 -0
- package/dist/commands/builtIn.test.d.ts.map +1 -0
- package/dist/commands/contentCommands.d.ts +52 -0
- package/dist/commands/contentCommands.d.ts.map +1 -0
- package/dist/commands/contentCommands.test.d.ts +2 -0
- package/dist/commands/contentCommands.test.d.ts.map +1 -0
- package/dist/commands/index.d.ts +43 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/listCommands.d.ts +15 -0
- package/dist/commands/listCommands.d.ts.map +1 -0
- package/dist/commands/listCommands.test.d.ts +2 -0
- package/dist/commands/listCommands.test.d.ts.map +1 -0
- package/dist/commands/markCommands.d.ts +40 -0
- package/dist/commands/markCommands.d.ts.map +1 -0
- package/dist/commands/markCommands.test.d.ts +2 -0
- package/dist/commands/markCommands.test.d.ts.map +1 -0
- package/dist/commands/nodeCommands.d.ts +53 -0
- package/dist/commands/nodeCommands.d.ts.map +1 -0
- package/dist/commands/nodeCommands.test.d.ts +2 -0
- package/dist/commands/nodeCommands.test.d.ts.map +1 -0
- package/dist/commands/selectionCommands.d.ts +37 -0
- package/dist/commands/selectionCommands.d.ts.map +1 -0
- package/dist/commands/selectionCommands.test.d.ts +2 -0
- package/dist/commands/selectionCommands.test.d.ts.map +1 -0
- package/dist/extensions/BaseKeymap.d.ts +36 -0
- package/dist/extensions/BaseKeymap.d.ts.map +1 -0
- package/dist/extensions/BaseKeymap.test.d.ts +2 -0
- package/dist/extensions/BaseKeymap.test.d.ts.map +1 -0
- package/dist/extensions/BubbleMenu.d.ts +85 -0
- package/dist/extensions/BubbleMenu.d.ts.map +1 -0
- package/dist/extensions/BubbleMenu.test.d.ts +2 -0
- package/dist/extensions/BubbleMenu.test.d.ts.map +1 -0
- package/dist/extensions/CharacterCount.d.ts +60 -0
- package/dist/extensions/CharacterCount.d.ts.map +1 -0
- package/dist/extensions/CharacterCount.test.d.ts +2 -0
- package/dist/extensions/CharacterCount.test.d.ts.map +1 -0
- package/dist/extensions/ClearFormatting.d.ts +25 -0
- package/dist/extensions/ClearFormatting.d.ts.map +1 -0
- package/dist/extensions/ClearFormatting.test.d.ts +2 -0
- package/dist/extensions/ClearFormatting.test.d.ts.map +1 -0
- package/dist/extensions/Dropcursor.d.ts +20 -0
- package/dist/extensions/Dropcursor.d.ts.map +1 -0
- package/dist/extensions/Dropcursor.test.d.ts +2 -0
- package/dist/extensions/Dropcursor.test.d.ts.map +1 -0
- package/dist/extensions/FloatingMenu.d.ts +74 -0
- package/dist/extensions/FloatingMenu.d.ts.map +1 -0
- package/dist/extensions/FloatingMenu.test.d.ts +2 -0
- package/dist/extensions/FloatingMenu.test.d.ts.map +1 -0
- package/dist/extensions/Focus.d.ts +26 -0
- package/dist/extensions/Focus.d.ts.map +1 -0
- package/dist/extensions/Focus.test.d.ts +2 -0
- package/dist/extensions/Focus.test.d.ts.map +1 -0
- package/dist/extensions/FontFamily.d.ts +41 -0
- package/dist/extensions/FontFamily.d.ts.map +1 -0
- package/dist/extensions/FontFamily.test.d.ts +2 -0
- package/dist/extensions/FontFamily.test.d.ts.map +1 -0
- package/dist/extensions/FontSize.d.ts +46 -0
- package/dist/extensions/FontSize.d.ts.map +1 -0
- package/dist/extensions/FontSize.test.d.ts +2 -0
- package/dist/extensions/FontSize.test.d.ts.map +1 -0
- package/dist/extensions/Gapcursor.d.ts +3 -0
- package/dist/extensions/Gapcursor.d.ts.map +1 -0
- package/dist/extensions/Gapcursor.test.d.ts +2 -0
- package/dist/extensions/Gapcursor.test.d.ts.map +1 -0
- package/dist/extensions/Highlight.d.ts +61 -0
- package/dist/extensions/Highlight.d.ts.map +1 -0
- package/dist/extensions/Highlight.test.d.ts +2 -0
- package/dist/extensions/Highlight.test.d.ts.map +1 -0
- package/dist/extensions/History.d.ts +22 -0
- package/dist/extensions/History.d.ts.map +1 -0
- package/dist/extensions/History.test.d.ts +2 -0
- package/dist/extensions/History.test.d.ts.map +1 -0
- package/dist/extensions/InvisibleChars.d.ts +86 -0
- package/dist/extensions/InvisibleChars.d.ts.map +1 -0
- package/dist/extensions/InvisibleChars.test.d.ts +2 -0
- package/dist/extensions/InvisibleChars.test.d.ts.map +1 -0
- package/dist/extensions/LineHeight.d.ts +50 -0
- package/dist/extensions/LineHeight.d.ts.map +1 -0
- package/dist/extensions/LineHeight.test.d.ts +2 -0
- package/dist/extensions/LineHeight.test.d.ts.map +1 -0
- package/dist/extensions/LinkPopover.d.ts +10 -0
- package/dist/extensions/LinkPopover.d.ts.map +1 -0
- package/dist/extensions/ListKeymap.d.ts +10 -0
- package/dist/extensions/ListKeymap.d.ts.map +1 -0
- package/dist/extensions/ListKeymap.test.d.ts +2 -0
- package/dist/extensions/ListKeymap.test.d.ts.map +1 -0
- package/dist/extensions/Placeholder.d.ts +47 -0
- package/dist/extensions/Placeholder.d.ts.map +1 -0
- package/dist/extensions/Placeholder.test.d.ts +2 -0
- package/dist/extensions/Placeholder.test.d.ts.map +1 -0
- package/dist/extensions/Selection.d.ts +71 -0
- package/dist/extensions/Selection.d.ts.map +1 -0
- package/dist/extensions/Selection.test.d.ts +2 -0
- package/dist/extensions/Selection.test.d.ts.map +1 -0
- package/dist/extensions/SelectionDecoration.d.ts +18 -0
- package/dist/extensions/SelectionDecoration.d.ts.map +1 -0
- package/dist/extensions/SelectionDecoration.test.d.ts +2 -0
- package/dist/extensions/SelectionDecoration.test.d.ts.map +1 -0
- package/dist/extensions/StarterKit.d.ts +138 -0
- package/dist/extensions/StarterKit.d.ts.map +1 -0
- package/dist/extensions/StarterKit.test.d.ts +2 -0
- package/dist/extensions/StarterKit.test.d.ts.map +1 -0
- package/dist/extensions/TextAlign.d.ts +32 -0
- package/dist/extensions/TextAlign.d.ts.map +1 -0
- package/dist/extensions/TextAlign.test.d.ts +2 -0
- package/dist/extensions/TextAlign.test.d.ts.map +1 -0
- package/dist/extensions/TextColor.d.ts +55 -0
- package/dist/extensions/TextColor.d.ts.map +1 -0
- package/dist/extensions/TextColor.test.d.ts +2 -0
- package/dist/extensions/TextColor.test.d.ts.map +1 -0
- package/dist/extensions/TrailingNode.d.ts +16 -0
- package/dist/extensions/TrailingNode.d.ts.map +1 -0
- package/dist/extensions/TrailingNode.test.d.ts +2 -0
- package/dist/extensions/TrailingNode.test.d.ts.map +1 -0
- package/dist/extensions/Typography.d.ts +65 -0
- package/dist/extensions/Typography.d.ts.map +1 -0
- package/dist/extensions/Typography.test.d.ts +2 -0
- package/dist/extensions/Typography.test.d.ts.map +1 -0
- package/dist/extensions/UniqueID.d.ts +48 -0
- package/dist/extensions/UniqueID.d.ts.map +1 -0
- package/dist/extensions/UniqueID.test.d.ts +2 -0
- package/dist/extensions/UniqueID.test.d.ts.map +1 -0
- package/dist/extensions/index.d.ts +29 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/isActive-markExclusion.test.d.ts +2 -0
- package/dist/extensions/isActive-markExclusion.test.d.ts.map +1 -0
- package/dist/helpers/callOrReturn.d.ts +30 -0
- package/dist/helpers/callOrReturn.d.ts.map +1 -0
- package/dist/helpers/callOrReturn.test.d.ts +2 -0
- package/dist/helpers/callOrReturn.test.d.ts.map +1 -0
- package/dist/helpers/createDocument.d.ts +48 -0
- package/dist/helpers/createDocument.d.ts.map +1 -0
- package/dist/helpers/createDocument.test.d.ts +2 -0
- package/dist/helpers/createDocument.test.d.ts.map +1 -0
- package/dist/helpers/defaultBlockAt.d.ts +15 -0
- package/dist/helpers/defaultBlockAt.d.ts.map +1 -0
- package/dist/helpers/defaultBlockAt.test.d.ts +2 -0
- package/dist/helpers/defaultBlockAt.test.d.ts.map +1 -0
- package/dist/helpers/findChildren.d.ts +13 -0
- package/dist/helpers/findChildren.d.ts.map +1 -0
- package/dist/helpers/findChildren.test.d.ts +2 -0
- package/dist/helpers/findChildren.test.d.ts.map +1 -0
- package/dist/helpers/findParentNode.d.ts +21 -0
- package/dist/helpers/findParentNode.d.ts.map +1 -0
- package/dist/helpers/findParentNode.test.d.ts +2 -0
- package/dist/helpers/findParentNode.test.d.ts.map +1 -0
- package/dist/helpers/getMarkRange.d.ts +17 -0
- package/dist/helpers/getMarkRange.d.ts.map +1 -0
- package/dist/helpers/getMarkRange.test.d.ts +2 -0
- package/dist/helpers/getMarkRange.test.d.ts.map +1 -0
- package/dist/helpers/index.d.ts +18 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/inputRulesPlugin.d.ts +26 -0
- package/dist/helpers/isNodeEmpty.d.ts +52 -0
- package/dist/helpers/isNodeEmpty.d.ts.map +1 -0
- package/dist/helpers/isNodeEmpty.test.d.ts +2 -0
- package/dist/helpers/isNodeEmpty.test.d.ts.map +1 -0
- package/dist/helpers/isValidUrl.d.ts +31 -0
- package/dist/helpers/isValidUrl.d.ts.map +1 -0
- package/dist/helpers/isValidUrl.test.d.ts +2 -0
- package/dist/helpers/isValidUrl.test.d.ts.map +1 -0
- package/dist/helpers/markInputRule.d.ts +88 -0
- package/dist/helpers/markInputRule.d.ts.map +1 -0
- package/dist/helpers/markInputRule.test.d.ts +2 -0
- package/dist/helpers/markInputRule.test.d.ts.map +1 -0
- package/dist/helpers/nodeInputRule.d.ts +41 -0
- package/dist/helpers/nodeInputRule.d.ts.map +1 -0
- package/dist/helpers/normalizeColor.d.ts +7 -0
- package/dist/helpers/normalizeColor.d.ts.map +1 -0
- package/dist/helpers/normalizeColor.test.d.ts +2 -0
- package/dist/helpers/normalizeColor.test.d.ts.map +1 -0
- package/dist/helpers/specBuilder.d.ts +28 -0
- package/dist/helpers/specBuilder.d.ts.map +1 -0
- package/dist/helpers/specBuilder.test.d.ts +2 -0
- package/dist/helpers/specBuilder.test.d.ts.map +1 -0
- package/dist/helpers/ssr.d.ts +80 -0
- package/dist/helpers/ssr.d.ts.map +1 -0
- package/dist/helpers/ssr.test.d.ts +2 -0
- package/dist/helpers/ssr.test.d.ts.map +1 -0
- package/dist/helpers/textInputRule.d.ts +34 -0
- package/dist/helpers/textInputRule.d.ts.map +1 -0
- package/dist/helpers/textblockTypeInputRule.d.ts +41 -0
- package/dist/helpers/textblockTypeInputRule.d.ts.map +1 -0
- package/dist/helpers/wrappingInputRule.d.ts +66 -0
- package/dist/helpers/wrappingInputRule.d.ts.map +1 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/phosphor.d.ts +3 -0
- package/dist/icons/phosphor.d.ts.map +1 -0
- package/dist/index.cjs +20 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +823 -794
- package/dist/index.d.ts +23 -5803
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -12
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/marks/Bold.d.ts +40 -0
- package/dist/marks/Bold.d.ts.map +1 -0
- package/dist/marks/Bold.test.d.ts +2 -0
- package/dist/marks/Bold.test.d.ts.map +1 -0
- package/dist/marks/Code.d.ts +40 -0
- package/dist/marks/Code.d.ts.map +1 -0
- package/dist/marks/Code.test.d.ts +2 -0
- package/dist/marks/Code.test.d.ts.map +1 -0
- package/dist/marks/Italic.d.ts +40 -0
- package/dist/marks/Italic.d.ts.map +1 -0
- package/dist/marks/Italic.test.d.ts +2 -0
- package/dist/marks/Italic.test.d.ts.map +1 -0
- package/dist/marks/Link.d.ts +75 -0
- package/dist/marks/Link.d.ts.map +1 -0
- package/dist/marks/Link.test.d.ts +2 -0
- package/dist/marks/Link.test.d.ts.map +1 -0
- package/dist/marks/Strike.d.ts +39 -0
- package/dist/marks/Strike.d.ts.map +1 -0
- package/dist/marks/Strike.test.d.ts +2 -0
- package/dist/marks/Strike.test.d.ts.map +1 -0
- package/dist/marks/Subscript.d.ts +38 -0
- package/dist/marks/Subscript.d.ts.map +1 -0
- package/dist/marks/Subscript.test.d.ts +2 -0
- package/dist/marks/Subscript.test.d.ts.map +1 -0
- package/dist/marks/Superscript.d.ts +38 -0
- package/dist/marks/Superscript.d.ts.map +1 -0
- package/dist/marks/Superscript.test.d.ts +2 -0
- package/dist/marks/Superscript.test.d.ts.map +1 -0
- package/dist/marks/TextStyle.d.ts +41 -0
- package/dist/marks/TextStyle.d.ts.map +1 -0
- package/dist/marks/TextStyle.test.d.ts +2 -0
- package/dist/marks/TextStyle.test.d.ts.map +1 -0
- package/dist/marks/Underline.d.ts +38 -0
- package/dist/marks/Underline.d.ts.map +1 -0
- package/dist/marks/Underline.test.d.ts +2 -0
- package/dist/marks/Underline.test.d.ts.map +1 -0
- package/dist/marks/helpers/autolinkPlugin.d.ts +48 -0
- package/dist/marks/helpers/autolinkPlugin.d.ts.map +1 -0
- package/dist/marks/helpers/autolinkPlugin.test.d.ts +2 -0
- package/dist/marks/helpers/autolinkPlugin.test.d.ts.map +1 -0
- package/dist/marks/helpers/index.d.ts +10 -0
- package/dist/marks/helpers/index.d.ts.map +1 -0
- package/dist/marks/helpers/linkClickPlugin.d.ts +43 -0
- package/dist/marks/helpers/linkClickPlugin.d.ts.map +1 -0
- package/dist/marks/helpers/linkClickPlugin.test.d.ts +2 -0
- package/dist/marks/helpers/linkClickPlugin.test.d.ts.map +1 -0
- package/dist/marks/helpers/linkExitPlugin.d.ts +37 -0
- package/dist/marks/helpers/linkExitPlugin.d.ts.map +1 -0
- package/dist/marks/helpers/linkExitPlugin.test.d.ts +2 -0
- package/dist/marks/helpers/linkExitPlugin.test.d.ts.map +1 -0
- package/dist/marks/helpers/linkPastePlugin.d.ts +44 -0
- package/dist/marks/helpers/linkPastePlugin.d.ts.map +1 -0
- package/dist/marks/helpers/linkPastePlugin.test.d.ts +2 -0
- package/dist/marks/helpers/linkPastePlugin.test.d.ts.map +1 -0
- package/dist/marks/index.d.ts +16 -0
- package/dist/marks/index.d.ts.map +1 -0
- package/dist/nodes/Blockquote.d.ts +19 -0
- package/dist/nodes/Blockquote.d.ts.map +1 -0
- package/dist/nodes/Blockquote.test.d.ts +2 -0
- package/dist/nodes/Blockquote.test.d.ts.map +1 -0
- package/dist/nodes/BulletList.d.ts +18 -0
- package/dist/nodes/BulletList.d.ts.map +1 -0
- package/dist/nodes/BulletList.test.d.ts +2 -0
- package/dist/nodes/BulletList.test.d.ts.map +1 -0
- package/dist/nodes/CodeBlock.d.ts +29 -0
- package/dist/nodes/CodeBlock.d.ts.map +1 -0
- package/dist/nodes/CodeBlock.test.d.ts +2 -0
- package/dist/nodes/CodeBlock.test.d.ts.map +1 -0
- package/dist/nodes/Document.d.ts +9 -0
- package/dist/nodes/Document.d.ts.map +1 -0
- package/dist/nodes/Document.test.d.ts +2 -0
- package/dist/nodes/Document.test.d.ts.map +1 -0
- package/dist/nodes/HardBreak.d.ts +18 -0
- package/dist/nodes/HardBreak.d.ts.map +1 -0
- package/dist/nodes/HardBreak.test.d.ts +2 -0
- package/dist/nodes/HardBreak.test.d.ts.map +1 -0
- package/dist/nodes/Heading.d.ts +23 -0
- package/dist/nodes/Heading.d.ts.map +1 -0
- package/dist/nodes/Heading.test.d.ts +2 -0
- package/dist/nodes/Heading.test.d.ts.map +1 -0
- package/dist/nodes/HorizontalRule.d.ts +17 -0
- package/dist/nodes/HorizontalRule.test.d.ts +2 -0
- package/dist/nodes/HorizontalRule.test.d.ts.map +1 -0
- package/dist/nodes/ListItem.d.ts +16 -0
- package/dist/nodes/ListItem.d.ts.map +1 -0
- package/dist/nodes/ListItem.test.d.ts +2 -0
- package/dist/nodes/ListItem.test.d.ts.map +1 -0
- package/dist/nodes/OrderedList.d.ts +18 -0
- package/dist/nodes/OrderedList.d.ts.map +1 -0
- package/dist/nodes/OrderedList.test.d.ts +2 -0
- package/dist/nodes/OrderedList.test.d.ts.map +1 -0
- package/dist/nodes/Paragraph.d.ts +17 -0
- package/dist/nodes/Paragraph.d.ts.map +1 -0
- package/dist/nodes/Paragraph.test.d.ts +2 -0
- package/dist/nodes/Paragraph.test.d.ts.map +1 -0
- package/dist/nodes/TaskItem.d.ts +24 -0
- package/dist/nodes/TaskItem.d.ts.map +1 -0
- package/dist/nodes/TaskItem.test.d.ts +2 -0
- package/dist/nodes/TaskItem.test.d.ts.map +1 -0
- package/dist/nodes/TaskList.d.ts +18 -0
- package/dist/nodes/TaskList.d.ts.map +1 -0
- package/dist/nodes/TaskList.test.d.ts +2 -0
- package/dist/nodes/TaskList.test.d.ts.map +1 -0
- package/dist/nodes/Text.d.ts +9 -0
- package/dist/nodes/Text.d.ts.map +1 -0
- package/dist/nodes/Text.test.d.ts +2 -0
- package/dist/nodes/Text.test.d.ts.map +1 -0
- package/dist/nodes/index.d.ts +19 -0
- package/dist/nodes/index.d.ts.map +1 -0
- package/dist/nodes/integration.test.d.ts +7 -0
- package/dist/nodes/integration.test.d.ts.map +1 -0
- package/dist/types/AttributeSpec.d.ts +78 -0
- package/dist/types/AttributeSpec.d.ts.map +1 -0
- package/dist/types/Commands.d.ts +125 -0
- package/dist/types/Commands.d.ts.map +1 -0
- package/dist/types/Content.d.ts +40 -0
- package/dist/types/Content.d.ts.map +1 -0
- package/dist/types/EditorEvents.d.ts +131 -0
- package/dist/types/EditorEvents.d.ts.map +1 -0
- package/dist/types/EditorOptions.d.ts +133 -0
- package/dist/types/EditorOptions.d.ts.map +1 -0
- package/dist/types/ExtensionConfig.d.ts +271 -0
- package/dist/types/ExtensionConfig.d.ts.map +1 -0
- package/dist/types/MarkConfig.d.ts +206 -0
- package/dist/types/MarkConfig.d.ts.map +1 -0
- package/dist/types/NodeConfig.d.ts +263 -0
- package/dist/types/NodeConfig.d.ts.map +1 -0
- package/dist/types/Toolbar.d.ts +172 -0
- package/dist/types/Toolbar.d.ts.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/utils/inlineStyles.d.ts +83 -0
- package/dist/utils/inlineStyles.d.ts.map +1 -0
- package/dist/utils/inlineStyles.test.d.ts +2 -0
- package/dist/utils/inlineStyles.test.d.ts.map +1 -0
- package/dist/utils/positionFloating.d.ts +74 -0
- package/dist/utils/positionFloating.d.ts.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node configuration types
|
|
3
|
+
*
|
|
4
|
+
* These types define the configuration object passed to Node.create()
|
|
5
|
+
* for creating ProseMirror node extensions.
|
|
6
|
+
*/
|
|
7
|
+
import type { Node as PMNode, DOMOutputSpec, NodeType } from '@domternal/pm/model';
|
|
8
|
+
import type { EditorState, Plugin } from '@domternal/pm/state';
|
|
9
|
+
import type { EditorView, NodeViewConstructor } from '@domternal/pm/view';
|
|
10
|
+
import type { ExtensionConfigBase, ExtensionContext } from './ExtensionConfig.js';
|
|
11
|
+
import type { AttributeSpecs } from './AttributeSpec.js';
|
|
12
|
+
/**
|
|
13
|
+
* Editor interface for Node context
|
|
14
|
+
* Includes schema with nodes for NodeType getter
|
|
15
|
+
*/
|
|
16
|
+
export interface NodeEditorContext {
|
|
17
|
+
readonly state: EditorState;
|
|
18
|
+
readonly view: EditorView;
|
|
19
|
+
readonly schema: {
|
|
20
|
+
nodes: Record<string, NodeType>;
|
|
21
|
+
};
|
|
22
|
+
readonly commands: Record<string, (...args: unknown[]) => boolean>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Context interface for Node config methods.
|
|
26
|
+
* Extends ExtensionContext with node-specific properties.
|
|
27
|
+
* This enables proper typing of `this.options`, `this.nodeType`, etc.
|
|
28
|
+
*
|
|
29
|
+
* @typeParam Options - Node options type
|
|
30
|
+
* @typeParam Storage - Node storage type
|
|
31
|
+
*/
|
|
32
|
+
export interface NodeContext<Options = unknown, Storage = unknown> extends Omit<ExtensionContext<Options, Storage>, 'editor' | 'type'> {
|
|
33
|
+
/** Node type identifier */
|
|
34
|
+
readonly type: 'node';
|
|
35
|
+
/** Editor instance with schema access */
|
|
36
|
+
editor: NodeEditorContext | null;
|
|
37
|
+
/** ProseMirror NodeType (null until editor is initialized) */
|
|
38
|
+
readonly nodeType: NodeType | null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Parse rule for converting HTML to ProseMirror node
|
|
42
|
+
* Simplified version of ProseMirror's ParseRule
|
|
43
|
+
*/
|
|
44
|
+
export interface NodeParseRule {
|
|
45
|
+
/**
|
|
46
|
+
* CSS selector or tag name to match
|
|
47
|
+
* @example 'p', 'h1', 'div.my-class'
|
|
48
|
+
*/
|
|
49
|
+
tag?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Match by CSS style
|
|
52
|
+
* @example 'font-weight'
|
|
53
|
+
*/
|
|
54
|
+
style?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Priority for this rule (higher = checked first)
|
|
57
|
+
* @default 50
|
|
58
|
+
*/
|
|
59
|
+
priority?: number;
|
|
60
|
+
/**
|
|
61
|
+
* Whether to consume the matched element
|
|
62
|
+
* @default true
|
|
63
|
+
*/
|
|
64
|
+
consuming?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Context required for this rule to match
|
|
67
|
+
* ProseMirror content expression
|
|
68
|
+
*/
|
|
69
|
+
context?: string;
|
|
70
|
+
/**
|
|
71
|
+
* Get attributes from the matched element
|
|
72
|
+
* Return null/undefined to skip this rule
|
|
73
|
+
*/
|
|
74
|
+
getAttrs?: ((node: HTMLElement) => Record<string, unknown> | null | undefined) | null;
|
|
75
|
+
/**
|
|
76
|
+
* Get content from the matched element
|
|
77
|
+
* Return false to use default content parsing
|
|
78
|
+
*/
|
|
79
|
+
getContent?: (node: HTMLElement, schema: unknown) => unknown;
|
|
80
|
+
/**
|
|
81
|
+
* How to preserve whitespace
|
|
82
|
+
*/
|
|
83
|
+
preserveWhitespace?: boolean | 'full';
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Props passed to renderHTML function
|
|
87
|
+
*/
|
|
88
|
+
export interface NodeRenderHTMLProps {
|
|
89
|
+
/**
|
|
90
|
+
* The ProseMirror node being rendered
|
|
91
|
+
*/
|
|
92
|
+
node: PMNode;
|
|
93
|
+
/**
|
|
94
|
+
* Merged HTML attributes from all sources
|
|
95
|
+
*/
|
|
96
|
+
HTMLAttributes: Record<string, unknown>;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Node-specific configuration properties (schema-related)
|
|
100
|
+
*/
|
|
101
|
+
interface NodeSchemaProperties {
|
|
102
|
+
/**
|
|
103
|
+
* Node group(s) this node belongs to
|
|
104
|
+
* Used in content expressions
|
|
105
|
+
*
|
|
106
|
+
* @example 'block', 'inline', 'block list'
|
|
107
|
+
* Can be a function that returns the group string (useful for dynamic group based on options)
|
|
108
|
+
*/
|
|
109
|
+
group?: string | (() => string);
|
|
110
|
+
/**
|
|
111
|
+
* Content expression defining allowed children
|
|
112
|
+
* Uses ProseMirror content expression syntax
|
|
113
|
+
*
|
|
114
|
+
* @example 'inline*', 'block+', 'paragraph block*'
|
|
115
|
+
*/
|
|
116
|
+
content?: string;
|
|
117
|
+
/**
|
|
118
|
+
* Whether this is an inline node
|
|
119
|
+
* Can be a function for dynamic inline based on options
|
|
120
|
+
* @default false
|
|
121
|
+
*/
|
|
122
|
+
inline?: boolean | (() => boolean);
|
|
123
|
+
/**
|
|
124
|
+
* Whether this node is an atom (no direct content editing)
|
|
125
|
+
* Cursor moves around atoms, not into them
|
|
126
|
+
*
|
|
127
|
+
* @example true for images, mentions, emoji
|
|
128
|
+
*/
|
|
129
|
+
atom?: boolean;
|
|
130
|
+
/**
|
|
131
|
+
* Whether the node can be selected as a whole
|
|
132
|
+
* @default true for leaf nodes, false for others
|
|
133
|
+
*/
|
|
134
|
+
selectable?: boolean;
|
|
135
|
+
/**
|
|
136
|
+
* Whether the node can be dragged
|
|
137
|
+
* @default false
|
|
138
|
+
*/
|
|
139
|
+
draggable?: boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Whether this node represents code
|
|
142
|
+
* Affects text input handling (disables smart quotes, etc.)
|
|
143
|
+
*/
|
|
144
|
+
code?: boolean;
|
|
145
|
+
/**
|
|
146
|
+
* How whitespace is handled in this node
|
|
147
|
+
* - 'pre': preserve whitespace (like <pre>)
|
|
148
|
+
* - 'normal': collapse whitespace (default)
|
|
149
|
+
*/
|
|
150
|
+
whitespace?: 'pre' | 'normal';
|
|
151
|
+
/**
|
|
152
|
+
* Whether this node isolates marks at its boundaries
|
|
153
|
+
* Marks don't extend across isolating boundaries
|
|
154
|
+
*/
|
|
155
|
+
isolating?: boolean;
|
|
156
|
+
/**
|
|
157
|
+
* Whether a gap cursor is allowed inside this node.
|
|
158
|
+
* Set to false to prevent gapcursor from appearing inside this node.
|
|
159
|
+
* Set to true to force gapcursor even if the default heuristic disallows it.
|
|
160
|
+
* When undefined, uses ProseMirror's default heuristic.
|
|
161
|
+
*/
|
|
162
|
+
allowGapCursor?: boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Table role for prosemirror-tables integration.
|
|
165
|
+
* Nodes with a tableRole are discovered by prosemirror-tables via spec.tableRole.
|
|
166
|
+
* One of: 'table', 'row', 'cell', 'header_cell'
|
|
167
|
+
*/
|
|
168
|
+
tableRole?: 'table' | 'row' | 'cell' | 'header_cell';
|
|
169
|
+
/**
|
|
170
|
+
* Whether this is a top-level node (document root)
|
|
171
|
+
* Only one node should have this set to true
|
|
172
|
+
*/
|
|
173
|
+
topNode?: boolean;
|
|
174
|
+
/**
|
|
175
|
+
* Whether this node defines its own scope
|
|
176
|
+
* Content and marks don't leak out of defining nodes
|
|
177
|
+
*/
|
|
178
|
+
defining?: boolean;
|
|
179
|
+
/**
|
|
180
|
+
* Which marks are allowed in this node
|
|
181
|
+
* Empty string means no marks allowed
|
|
182
|
+
*
|
|
183
|
+
* @example '', '_', 'bold italic'
|
|
184
|
+
*/
|
|
185
|
+
marks?: string;
|
|
186
|
+
/**
|
|
187
|
+
* Custom text for leaf nodes
|
|
188
|
+
* Used by getText() and textContent
|
|
189
|
+
*
|
|
190
|
+
* @example '\n' for hard break
|
|
191
|
+
*/
|
|
192
|
+
leafText?: string | ((node: PMNode) => string);
|
|
193
|
+
/**
|
|
194
|
+
* Define node attributes
|
|
195
|
+
* Returns attribute specifications
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* addAttributes() {
|
|
199
|
+
* return {
|
|
200
|
+
* level: { default: 1 },
|
|
201
|
+
* };
|
|
202
|
+
* }
|
|
203
|
+
*/
|
|
204
|
+
addAttributes?: () => AttributeSpecs;
|
|
205
|
+
/**
|
|
206
|
+
* Parse rules for converting HTML to this node
|
|
207
|
+
* Each rule defines how to match and parse HTML elements
|
|
208
|
+
*
|
|
209
|
+
* @example
|
|
210
|
+
* parseHTML() {
|
|
211
|
+
* return [
|
|
212
|
+
* { tag: 'p' },
|
|
213
|
+
* { tag: 'div', priority: 10 },
|
|
214
|
+
* ];
|
|
215
|
+
* }
|
|
216
|
+
*/
|
|
217
|
+
parseHTML?: () => NodeParseRule[];
|
|
218
|
+
/**
|
|
219
|
+
* Render this node to DOM
|
|
220
|
+
* Returns DOMOutputSpec (tag, attributes, children)
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* renderHTML({ node, HTMLAttributes }) {
|
|
224
|
+
* return ['p', HTMLAttributes, 0];
|
|
225
|
+
* }
|
|
226
|
+
*/
|
|
227
|
+
renderHTML?: (props: NodeRenderHTMLProps) => DOMOutputSpec;
|
|
228
|
+
/**
|
|
229
|
+
* Custom node view constructor
|
|
230
|
+
* For complex interactive nodes
|
|
231
|
+
*/
|
|
232
|
+
addNodeView?: () => NodeViewConstructor;
|
|
233
|
+
/**
|
|
234
|
+
* Additional ProseMirror plugins for this node
|
|
235
|
+
* Called during plugin collection
|
|
236
|
+
*/
|
|
237
|
+
addProseMirrorPlugins?: () => Plugin[];
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Configuration for Node extensions
|
|
241
|
+
* Combines ExtensionConfig base with node-specific schema properties.
|
|
242
|
+
* Uses ThisType<NodeContext> to provide proper typing for `this` in config methods.
|
|
243
|
+
*
|
|
244
|
+
* @typeParam Options - Node options type
|
|
245
|
+
* @typeParam Storage - Node storage type
|
|
246
|
+
*
|
|
247
|
+
* @example
|
|
248
|
+
* const Paragraph = Node.create({
|
|
249
|
+
* name: 'paragraph',
|
|
250
|
+
* group: 'block',
|
|
251
|
+
* content: 'inline*',
|
|
252
|
+
* parseHTML() {
|
|
253
|
+
* // `this` is properly typed here!
|
|
254
|
+
* return [{ tag: 'p' }];
|
|
255
|
+
* },
|
|
256
|
+
* renderHTML({ HTMLAttributes }) {
|
|
257
|
+
* return ['p', HTMLAttributes, 0];
|
|
258
|
+
* },
|
|
259
|
+
* });
|
|
260
|
+
*/
|
|
261
|
+
export type NodeConfig<Options = unknown, Storage = unknown> = ExtensionConfigBase<Options, Storage> & NodeSchemaProperties & ThisType<NodeContext<Options, Storage>>;
|
|
262
|
+
export {};
|
|
263
|
+
//# sourceMappingURL=NodeConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeConfig.d.ts","sourceRoot":"","sources":["../../src/types/NodeConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Toolbar configuration types
|
|
3
|
+
*
|
|
4
|
+
* These types define toolbar items that extensions can register
|
|
5
|
+
* via the `addToolbarItems()` hook. Framework wrappers (Angular, React, Vue)
|
|
6
|
+
* read these items and render the toolbar UI.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Maps icon names to SVG strings.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const icons: IconSet = {
|
|
13
|
+
* textB: '<svg>...</svg>',
|
|
14
|
+
* textItalic: '<svg>...</svg>',
|
|
15
|
+
* };
|
|
16
|
+
*/
|
|
17
|
+
export type IconSet = Record<string, string>;
|
|
18
|
+
/**
|
|
19
|
+
* A toolbar button that executes a command.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* {
|
|
23
|
+
* type: 'button',
|
|
24
|
+
* name: 'bold',
|
|
25
|
+
* command: 'toggleBold',
|
|
26
|
+
* isActive: 'bold',
|
|
27
|
+
* icon: 'textB',
|
|
28
|
+
* label: 'Bold',
|
|
29
|
+
* shortcut: 'Mod-b',
|
|
30
|
+
* group: 'format',
|
|
31
|
+
* priority: 100,
|
|
32
|
+
* }
|
|
33
|
+
*/
|
|
34
|
+
export interface ToolbarButton {
|
|
35
|
+
type: 'button';
|
|
36
|
+
/** Unique identifier for this toolbar item */
|
|
37
|
+
name: string;
|
|
38
|
+
/** Command name to execute (key of editor.commands) */
|
|
39
|
+
command: string;
|
|
40
|
+
/** Arguments to pass to the command */
|
|
41
|
+
commandArgs?: unknown[];
|
|
42
|
+
/**
|
|
43
|
+
* How to check if this button is active.
|
|
44
|
+
* - string: extension name passed to `editor.isActive(name)`
|
|
45
|
+
* - object: `{ name, attributes }` passed to `editor.isActive(name, attributes)`
|
|
46
|
+
* - array: OR-check — active if ANY entry matches (useful for attributes on multiple node types)
|
|
47
|
+
* - undefined: button has no active state (e.g. undo/redo)
|
|
48
|
+
*/
|
|
49
|
+
isActive?: string | {
|
|
50
|
+
name: string;
|
|
51
|
+
attributes?: Record<string, unknown>;
|
|
52
|
+
} | (string | {
|
|
53
|
+
name: string;
|
|
54
|
+
attributes?: Record<string, unknown>;
|
|
55
|
+
})[];
|
|
56
|
+
/** Icon key (resolved against IconSet) */
|
|
57
|
+
icon: string;
|
|
58
|
+
/** Tooltip text and aria-label */
|
|
59
|
+
label: string;
|
|
60
|
+
/** Keyboard shortcut for display (e.g. "Mod-b") */
|
|
61
|
+
shortcut?: string;
|
|
62
|
+
/** Group name for visual grouping (separators between groups) */
|
|
63
|
+
group?: string;
|
|
64
|
+
/** Sort order within group (higher = first). @default 100 */
|
|
65
|
+
priority?: number;
|
|
66
|
+
/** Inline CSS style string applied to the button element (e.g. for font preview) */
|
|
67
|
+
style?: string;
|
|
68
|
+
/**
|
|
69
|
+
* Custom function to check active state.
|
|
70
|
+
* Use for extensions that track state in plugin storage rather than node/mark state.
|
|
71
|
+
* Takes precedence over `isActive` when defined.
|
|
72
|
+
*/
|
|
73
|
+
isActiveFn?: (editor: {
|
|
74
|
+
readonly storage: Record<string, unknown>;
|
|
75
|
+
}) => boolean;
|
|
76
|
+
/** Event name to emit on the editor when clicked. If set, the UI emits this event instead of executing the command. */
|
|
77
|
+
emitEvent?: string;
|
|
78
|
+
/** Color value (hex) for color-swatch rendering in grid-layout dropdowns. */
|
|
79
|
+
color?: string;
|
|
80
|
+
/** Show in the main toolbar. @default true. Set false for bubble-menu-only items. */
|
|
81
|
+
toolbar?: boolean;
|
|
82
|
+
/** Bubble menu context name. When set, this item is included in the default bubble menu for this context. */
|
|
83
|
+
bubbleMenu?: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* A dropdown toolbar item containing multiple buttons.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* {
|
|
90
|
+
* type: 'dropdown',
|
|
91
|
+
* name: 'heading',
|
|
92
|
+
* icon: 'textH',
|
|
93
|
+
* label: 'Heading',
|
|
94
|
+
* group: 'blocks',
|
|
95
|
+
* items: [
|
|
96
|
+
* { type: 'button', name: 'h1', command: 'toggleHeading', ... },
|
|
97
|
+
* { type: 'button', name: 'h2', command: 'toggleHeading', ... },
|
|
98
|
+
* ],
|
|
99
|
+
* }
|
|
100
|
+
*/
|
|
101
|
+
export interface ToolbarDropdown {
|
|
102
|
+
type: 'dropdown';
|
|
103
|
+
/** Unique identifier for this toolbar item */
|
|
104
|
+
name: string;
|
|
105
|
+
/** Icon key for the dropdown trigger button */
|
|
106
|
+
icon: string;
|
|
107
|
+
/** Tooltip text and aria-label */
|
|
108
|
+
label: string;
|
|
109
|
+
/** Buttons shown in the dropdown panel */
|
|
110
|
+
items: ToolbarButton[];
|
|
111
|
+
/** Group name for visual grouping */
|
|
112
|
+
group?: string;
|
|
113
|
+
/** Sort order within group (higher = first). @default 100 */
|
|
114
|
+
priority?: number;
|
|
115
|
+
/** Panel layout: 'list' (default vertical) or 'grid' (color-swatch grid). */
|
|
116
|
+
layout?: 'list' | 'grid';
|
|
117
|
+
/** Number of columns in grid layout. @default 10 */
|
|
118
|
+
gridColumns?: number;
|
|
119
|
+
/** How to display items in the dropdown panel: icon + text (default), text only, or icon only. */
|
|
120
|
+
displayMode?: 'icon-text' | 'text' | 'icon';
|
|
121
|
+
/** Default color for the trigger indicator bar when no item is active (grid dropdowns only). */
|
|
122
|
+
defaultIndicatorColor?: string;
|
|
123
|
+
/** When true, the trigger icon updates to reflect the active sub-item's icon. */
|
|
124
|
+
dynamicIcon?: boolean;
|
|
125
|
+
/** When true, the trigger shows the active sub-item's label as text instead of an icon. */
|
|
126
|
+
dynamicLabel?: boolean;
|
|
127
|
+
/** Text shown in trigger when dynamicLabel is true and no item is active. Falls back to icon if not set. */
|
|
128
|
+
dynamicLabelFallback?: string;
|
|
129
|
+
/** CSS property to read from computed style at cursor when no item is active (e.g. 'font-size', 'font-family'). */
|
|
130
|
+
computedStyleProperty?: string;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* A visual separator between toolbar groups.
|
|
134
|
+
* Typically inserted automatically when group names change.
|
|
135
|
+
*/
|
|
136
|
+
export interface ToolbarSeparator {
|
|
137
|
+
type: 'separator';
|
|
138
|
+
/** Unique identifier (needed so all ToolbarItem variants share a `name` field) */
|
|
139
|
+
name?: string;
|
|
140
|
+
/** Group name (used for ordering) */
|
|
141
|
+
group?: string;
|
|
142
|
+
/** Sort order within group. @default 100 */
|
|
143
|
+
priority?: number;
|
|
144
|
+
}
|
|
145
|
+
/** Any toolbar item */
|
|
146
|
+
export type ToolbarItem = ToolbarButton | ToolbarDropdown | ToolbarSeparator;
|
|
147
|
+
/**
|
|
148
|
+
* A custom dropdown defined in a toolbar layout.
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* { dropdown: 'Format', icon: 'textB', items: ['bold', 'italic', 'underline'] }
|
|
152
|
+
*/
|
|
153
|
+
export interface ToolbarLayoutDropdown {
|
|
154
|
+
/** Label for the dropdown trigger */
|
|
155
|
+
dropdown: string;
|
|
156
|
+
/** Icon key for the dropdown trigger */
|
|
157
|
+
icon: string;
|
|
158
|
+
/** Item names to include as sub-items */
|
|
159
|
+
items: string[];
|
|
160
|
+
/** How to display items in the dropdown panel: icon + text (default), text only, or icon only. */
|
|
161
|
+
displayMode?: 'icon-text' | 'text' | 'icon';
|
|
162
|
+
/** When true, the trigger icon updates to reflect the active sub-item's icon. */
|
|
163
|
+
dynamicIcon?: boolean;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* A single entry in a toolbar layout array.
|
|
167
|
+
*
|
|
168
|
+
* - `string` — item name (e.g. `'bold'`) or separator (`'|'`)
|
|
169
|
+
* - `ToolbarLayoutDropdown` — custom dropdown grouping
|
|
170
|
+
*/
|
|
171
|
+
export type ToolbarLayoutEntry = string | ToolbarLayoutDropdown;
|
|
172
|
+
//# sourceMappingURL=Toolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../src/types/Toolbar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core type definitions for @domternal/core
|
|
3
|
+
*/
|
|
4
|
+
export type { JSONAttribute, JSONMark, JSONContent, Content, Range, } from './Content.js';
|
|
5
|
+
export type { AnyExtension, FocusPosition, EditorOptions, } from './EditorOptions.js';
|
|
6
|
+
export type { EditorInstance, TransactionEventProps, FocusEventProps, CreateEventProps, ContentErrorProps, PasteEventProps, DropEventProps, MountEventProps, DeleteEventProps, ErrorEventProps, EditorEvents, EditorEventName, } from './EditorEvents.js';
|
|
7
|
+
export type { CommandEditor, CommandProps, Command, CommandSpec, CommandMap, RawCommands, SingleCommands, ChainedCommands, ChainFailure, CanCommands, CanChainedCommands, KeyboardShortcutCommand, } from './Commands.js';
|
|
8
|
+
export type { ExtensionEditor, AnyExtensionConfig, GlobalAttributeSpec, GlobalAttributes, ExtensionConfig, } from './ExtensionConfig.js';
|
|
9
|
+
export type { AttributeSpec, AttributeSpecs } from './AttributeSpec.js';
|
|
10
|
+
export type { NodeParseRule, NodeRenderHTMLProps, NodeConfig, } from './NodeConfig.js';
|
|
11
|
+
export type { MarkParseRule, MarkRenderHTMLProps, MarkConfig, } from './MarkConfig.js';
|
|
12
|
+
export type { IconSet, ToolbarButton, ToolbarDropdown, ToolbarSeparator, ToolbarItem, ToolbarLayoutDropdown, ToolbarLayoutEntry, } from './Toolbar.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,aAAa,EACb,QAAQ,EACR,WAAW,EACX,OAAO,EACP,KAAK,GACN,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,YAAY,EACZ,aAAa,EACb,aAAa,GACd,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,aAAa,EACb,YAAY,EACZ,OAAO,EACP,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,eAAe,EACf,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGxE,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,UAAU,GACX,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,UAAU,GACX,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,OAAO,EACP,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inline Styles Utility
|
|
3
|
+
*
|
|
4
|
+
* Applies inline CSS styles to serialized HTML so it renders correctly
|
|
5
|
+
* when pasted outside the editor (email clients, CMS, Google Docs, etc.).
|
|
6
|
+
*
|
|
7
|
+
* Uses hardcoded light-theme defaults (same approach as Google Docs, Notion,
|
|
8
|
+
* TinyMCE). Optionally accepts overrides for custom styling.
|
|
9
|
+
*
|
|
10
|
+
* Only structural styles are inlined (borders, padding, margins, fonts).
|
|
11
|
+
* Colors are NOT inlined — explicit colors (TextColor, Highlight, cell bg)
|
|
12
|
+
* are already inline from renderHTML, and default text color is browser default.
|
|
13
|
+
*/
|
|
14
|
+
export interface InlineStyleOverrides {
|
|
15
|
+
blockquoteBorder?: string;
|
|
16
|
+
blockquoteColor?: string;
|
|
17
|
+
tableBorder?: string;
|
|
18
|
+
tableHeaderBg?: string;
|
|
19
|
+
codeBg?: string;
|
|
20
|
+
codeFont?: string;
|
|
21
|
+
codeBorder?: string;
|
|
22
|
+
codeBlockBg?: string;
|
|
23
|
+
codeBlockFont?: string;
|
|
24
|
+
hrBorder?: string;
|
|
25
|
+
linkColor?: string;
|
|
26
|
+
detailsBorder?: string;
|
|
27
|
+
detailsBg?: string;
|
|
28
|
+
/**
|
|
29
|
+
* How to export table column widths from `data-colwidth` attributes.
|
|
30
|
+
* - `'percent'` (default): convert to percentage widths on first-row cells
|
|
31
|
+
* - `'pixel'`: convert to pixel widths on first-row cells, table gets fixed width
|
|
32
|
+
* - `'none'`: leave `data-colwidth` as-is, no width styles applied
|
|
33
|
+
*/
|
|
34
|
+
tableColumnWidths?: 'percent' | 'pixel' | 'none';
|
|
35
|
+
/**
|
|
36
|
+
* Optional callback to syntax-highlight code blocks.
|
|
37
|
+
* Receives the raw text content and optional language, returns highlighted HTML
|
|
38
|
+
* with `<span class="hljs-*">` markup (or any spans with inline styles).
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* import { createLowlight, common } from 'lowlight';
|
|
43
|
+
* import { toHtml } from 'hast-util-to-html';
|
|
44
|
+
* const lowlight = createLowlight(common);
|
|
45
|
+
*
|
|
46
|
+
* inlineStyles(html, {
|
|
47
|
+
* codeHighlighter: (code, language) => {
|
|
48
|
+
* if (language && lowlight.registered(language)) {
|
|
49
|
+
* return toHtml(lowlight.highlight(language, code));
|
|
50
|
+
* }
|
|
51
|
+
* return null; // no highlighting
|
|
52
|
+
* },
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
codeHighlighter?: (code: string, language: string | null) => string | null;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Applies inline styles to all elements in a container.
|
|
60
|
+
* Exported for use in clipboardSerializer (operates on DOM directly).
|
|
61
|
+
*/
|
|
62
|
+
export declare function applyInlineStyles(container: HTMLElement, overrides?: InlineStyleOverrides): void;
|
|
63
|
+
/**
|
|
64
|
+
* Takes an HTML string and returns it with inline CSS styles applied
|
|
65
|
+
* to all elements, so it renders correctly outside the editor.
|
|
66
|
+
*
|
|
67
|
+
* @param html - Serialized HTML string from editor.getHTML()
|
|
68
|
+
* @param overrides - Optional style overrides for custom theming
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* // Default light-theme styles
|
|
73
|
+
* const styled = inlineStyles(editor.getHTML());
|
|
74
|
+
*
|
|
75
|
+
* // With custom overrides
|
|
76
|
+
* const styled = inlineStyles(editor.getHTML(), {
|
|
77
|
+
* blockquoteBorder: '5px solid red',
|
|
78
|
+
* linkColor: '#ff6600',
|
|
79
|
+
* });
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function inlineStyles(html: string, overrides?: InlineStyleOverrides): string;
|
|
83
|
+
//# sourceMappingURL=inlineStyles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inlineStyles.d.ts","sourceRoot":"","sources":["../../src/utils/inlineStyles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACjD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC;CAC5E;AA0FD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAkOhG;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAOnF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inlineStyles.test.d.ts","sourceRoot":"","sources":["../../src/utils/inlineStyles.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin wrapper around @floating-ui/dom for consistent floating element positioning.
|
|
3
|
+
*
|
|
4
|
+
* Used by BubbleMenu, FloatingMenu, Link Popover, and exposed for extension
|
|
5
|
+
* authors building custom floating UI (emoji suggestion, slash command, etc.).
|
|
6
|
+
*/
|
|
7
|
+
import { type Placement } from '@floating-ui/dom';
|
|
8
|
+
export interface PositionFloatingOptions {
|
|
9
|
+
/** Placement relative to reference. @default 'bottom' */
|
|
10
|
+
placement?: Placement;
|
|
11
|
+
/** Distance from reference in px. @default 4 */
|
|
12
|
+
offsetValue?: number;
|
|
13
|
+
/** Viewport padding for flip/shift in px. @default 10 */
|
|
14
|
+
padding?: number;
|
|
15
|
+
/** Track ancestor scroll events. Disable for static anchors (e.g. toolbar buttons). @default true */
|
|
16
|
+
trackScroll?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Positions a floating element relative to a reference element or virtual rect,
|
|
20
|
+
* and keeps it positioned on scroll, resize, and layout shifts.
|
|
21
|
+
*
|
|
22
|
+
* Uses `autoUpdate` from floating-ui with `animationFrame` polling for
|
|
23
|
+
* jitter-free scroll tracking (rAF syncs with browser paint).
|
|
24
|
+
*
|
|
25
|
+
* Includes `hide` middleware — when the reference element is scrolled out of
|
|
26
|
+
* view, the floating element is hidden via `visibility: hidden`.
|
|
27
|
+
*
|
|
28
|
+
* The floating element must have `position: fixed`.
|
|
29
|
+
*
|
|
30
|
+
* Returns a cleanup function. **Always call it** when hiding or destroying
|
|
31
|
+
* the floating element to stop listeners and prevent memory leaks.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* // Start auto-positioning (follows scroll/resize)
|
|
36
|
+
* const cleanup = positionFloating(buttonEl, dropdownEl, {
|
|
37
|
+
* placement: 'bottom-start',
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* // Virtual reference (e.g. cursor position — must return fresh coords)
|
|
41
|
+
* const virtualEl = {
|
|
42
|
+
* getBoundingClientRect: () => {
|
|
43
|
+
* const coords = view.coordsAtPos(pos);
|
|
44
|
+
* return new DOMRect(coords.left, coords.top, 0, coords.bottom - coords.top);
|
|
45
|
+
* },
|
|
46
|
+
* };
|
|
47
|
+
* const cleanup = positionFloating(virtualEl, tooltipEl, { placement: 'top' });
|
|
48
|
+
*
|
|
49
|
+
* // Stop when done
|
|
50
|
+
* cleanup();
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function positionFloating(reference: Element | {
|
|
54
|
+
getBoundingClientRect: () => DOMRect;
|
|
55
|
+
}, floating: HTMLElement, options?: PositionFloatingOptions): () => void;
|
|
56
|
+
/**
|
|
57
|
+
* Positions a floating element using `strategy: 'absolute'` so it scrolls
|
|
58
|
+
* together with its offsetParent — zero jitter by design.
|
|
59
|
+
*
|
|
60
|
+
* Ideal for dropdowns inside scroll containers (e.g. emoji suggestion inside
|
|
61
|
+
* `.dm-editor`) and toolbar dropdowns. The absolute coordinates are stable
|
|
62
|
+
* across scrolls — only `flip`/`shift` decisions change on scroll, producing
|
|
63
|
+
* a discrete jump rather than continuous jitter.
|
|
64
|
+
*
|
|
65
|
+
* The floating element must have `position: absolute` and its offsetParent
|
|
66
|
+
* must have `position: relative`.
|
|
67
|
+
*
|
|
68
|
+
* Returns a cleanup function — call it when hiding or destroying the
|
|
69
|
+
* floating element.
|
|
70
|
+
*/
|
|
71
|
+
export declare function positionFloatingOnce(reference: Element | {
|
|
72
|
+
getBoundingClientRect: () => DOMRect;
|
|
73
|
+
}, floating: HTMLElement, options?: PositionFloatingOptions): () => void;
|
|
74
|
+
//# sourceMappingURL=positionFloating.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"positionFloating.d.ts","sourceRoot":"","sources":["../../src/utils/positionFloating.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,uBAAuB;IACtC,yDAAyD;IACzD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qGAAqG;IACrG,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,OAAO,GAAG;IAAE,qBAAqB,EAAE,MAAM,OAAO,CAAA;CAAE,EAC7D,QAAQ,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE,uBAAuB,GAChC,MAAM,IAAI,CA+CZ;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,OAAO,GAAG;IAAE,qBAAqB,EAAE,MAAM,OAAO,CAAA;CAAE,EAC7D,QAAQ,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE,uBAAuB,GAChC,MAAM,IAAI,CAmCZ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@domternal/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Framework-agnostic ProseMirror editor engine",
|
|
5
5
|
"author": "https://github.com/ThomasNowHere",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"dist"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@domternal/pm": ">=0.
|
|
32
|
+
"@domternal/pm": ">=0.4.0",
|
|
33
33
|
"@floating-ui/dom": "^1.7.5",
|
|
34
34
|
"linkifyjs": "^4.3.2"
|
|
35
35
|
},
|