@multiplatform.one/rich-text 6.0.4 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -0
- package/dist/cjs/RichEditor.cjs +84 -9
- package/dist/cjs/RichEditor.native.js +422 -35
- package/dist/cjs/RichEditor.native.js.map +1 -1
- package/dist/cjs/RichTextEditor/index.cjs +18 -2
- package/dist/cjs/RichTextEditor/index.native.js +18 -2
- package/dist/cjs/RichTextEditor/index.native.js.map +1 -1
- package/dist/cjs/constants.cjs +52 -29
- package/dist/cjs/constants.native.js +59 -29
- package/dist/cjs/constants.native.js.map +1 -1
- package/dist/cjs/editor/BlockDragHandle.cjs +22 -7
- package/dist/cjs/editor/BlockDragHandle.native.js +41 -7
- package/dist/cjs/editor/BlockDragHandle.native.js.map +1 -1
- package/dist/cjs/editor/SlashCommands.cjs +249 -293
- package/dist/cjs/editor/SlashCommands.native.js +306 -340
- package/dist/cjs/editor/SlashCommands.native.js.map +1 -1
- package/dist/cjs/editor/TentapEditor.native.js +44 -12
- package/dist/cjs/editor/TentapEditor.native.js.map +1 -1
- package/dist/cjs/editor/TiptapEditor.cjs +140 -33
- package/dist/cjs/editor/TiptapEditor.native.js +153 -33
- package/dist/cjs/editor/TiptapEditor.native.js.map +1 -1
- package/dist/cjs/editor/blockAnchor.cjs +43 -0
- package/dist/cjs/editor/blockAnchor.native.js +68 -0
- package/dist/cjs/editor/blockAnchor.native.js.map +1 -0
- package/dist/cjs/editor/codeBlockPreview.cjs +230 -0
- package/dist/cjs/editor/codeBlockPreview.native.js +265 -0
- package/dist/cjs/editor/codeBlockPreview.native.js.map +1 -0
- package/dist/cjs/editor/editorStyles.cjs +203 -34
- package/dist/cjs/editor/editorStyles.native.js +203 -34
- package/dist/cjs/editor/editorStyles.native.js.map +1 -1
- package/dist/cjs/editor/emoji.cjs +128 -0
- package/dist/cjs/editor/emoji.native.js +184 -0
- package/dist/cjs/editor/emoji.native.js.map +1 -0
- package/dist/cjs/editor/lazyKatex.cjs +78 -0
- package/dist/cjs/editor/lazyKatex.native.js +117 -0
- package/dist/cjs/editor/lazyKatex.native.js.map +1 -0
- package/dist/cjs/editor/markdown.cjs +216 -0
- package/dist/cjs/editor/markdown.native.js +278 -0
- package/dist/cjs/editor/markdown.native.js.map +1 -0
- package/dist/cjs/editor/mathematics.cjs +168 -0
- package/dist/cjs/editor/mathematics.native.js +202 -0
- package/dist/cjs/editor/mathematics.native.js.map +1 -0
- package/dist/cjs/editor/media.cjs +138 -0
- package/dist/cjs/editor/media.native.js +172 -0
- package/dist/cjs/editor/media.native.js.map +1 -0
- package/dist/cjs/editor/mentions.cjs +73 -0
- package/dist/cjs/editor/mentions.native.js +84 -0
- package/dist/cjs/editor/mentions.native.js.map +1 -0
- package/dist/cjs/editor/pasteCleanup.cjs +83 -0
- package/dist/cjs/editor/pasteCleanup.native.js +175 -0
- package/dist/cjs/editor/pasteCleanup.native.js.map +1 -0
- package/dist/cjs/editor/suggestionPopup.cjs +297 -0
- package/dist/cjs/editor/suggestionPopup.native.js +327 -0
- package/dist/cjs/editor/suggestionPopup.native.js.map +1 -0
- package/dist/cjs/preview.cjs +263 -0
- package/dist/cjs/preview.native.js +294 -0
- package/dist/cjs/preview.native.js.map +1 -0
- package/dist/cjs/shared/t.cjs +53 -0
- package/dist/cjs/shared/t.native.js +56 -0
- package/dist/cjs/shared/t.native.js.map +1 -0
- package/dist/cjs/shared/url.cjs +35 -0
- package/dist/cjs/shared/url.native.js +38 -0
- package/dist/cjs/shared/url.native.js.map +1 -0
- package/dist/cjs/styled.cjs +13 -6
- package/dist/cjs/styled.native.js +13 -6
- package/dist/cjs/styled.native.js.map +1 -1
- package/dist/cjs/toolbar/BubbleToolbar.cjs +10 -8
- package/dist/cjs/toolbar/BubbleToolbar.native.js +10 -8
- package/dist/cjs/toolbar/BubbleToolbar.native.js.map +1 -1
- package/dist/cjs/toolbar/CodeBlockBubble.cjs +59 -23
- package/dist/cjs/toolbar/CodeBlockBubble.native.js +71 -25
- package/dist/cjs/toolbar/CodeBlockBubble.native.js.map +1 -1
- package/dist/cjs/toolbar/ColorPicker.cjs +19 -54
- package/dist/cjs/toolbar/ColorPicker.native.js +81 -179
- package/dist/cjs/toolbar/ColorPicker.native.js.map +1 -1
- package/dist/cjs/toolbar/FixedToolbar.cjs +33 -10
- package/dist/cjs/toolbar/FixedToolbar.native.js +46 -54
- package/dist/cjs/toolbar/FixedToolbar.native.js.map +1 -1
- package/dist/cjs/toolbar/HeadingPicker.cjs +32 -39
- package/dist/cjs/toolbar/HeadingPicker.native.js +61 -51
- package/dist/cjs/toolbar/HeadingPicker.native.js.map +1 -1
- package/dist/cjs/toolbar/ImageBubble.cjs +20 -43
- package/dist/cjs/toolbar/ImageBubble.native.js +20 -43
- package/dist/cjs/toolbar/ImageBubble.native.js.map +1 -1
- package/dist/cjs/toolbar/ImageDialog.cjs +5 -4
- package/dist/cjs/toolbar/ImageDialog.native.js +76 -65
- package/dist/cjs/toolbar/ImageDialog.native.js.map +1 -1
- package/dist/cjs/toolbar/LinkBubble.cjs +23 -70
- package/dist/cjs/toolbar/LinkBubble.native.js +23 -70
- package/dist/cjs/toolbar/LinkBubble.native.js.map +1 -1
- package/dist/cjs/toolbar/LinkDialog.cjs +19 -18
- package/dist/cjs/toolbar/LinkDialog.native.js +86 -83
- package/dist/cjs/toolbar/LinkDialog.native.js.map +1 -1
- package/dist/cjs/toolbar/ListPicker.cjs +32 -43
- package/dist/cjs/toolbar/ListPicker.native.js +43 -44
- package/dist/cjs/toolbar/ListPicker.native.js.map +1 -1
- package/dist/cjs/toolbar/MathBubble.cjs +159 -0
- package/dist/cjs/toolbar/MathBubble.native.js +169 -0
- package/dist/cjs/toolbar/MathBubble.native.js.map +1 -0
- package/dist/cjs/toolbar/MoreDropdown.cjs +51 -98
- package/dist/cjs/toolbar/MoreDropdown.native.js +73 -98
- package/dist/cjs/toolbar/MoreDropdown.native.js.map +1 -1
- package/dist/cjs/toolbar/StatusBar.cjs +19 -10
- package/dist/cjs/toolbar/StatusBar.native.js +19 -10
- package/dist/cjs/toolbar/StatusBar.native.js.map +1 -1
- package/dist/cjs/toolbar/TableBubble.cjs +77 -95
- package/dist/cjs/toolbar/TableBubble.native.js +73 -71
- package/dist/cjs/toolbar/TableBubble.native.js.map +1 -1
- package/dist/cjs/toolbar/ToolbarButton.cjs +86 -21
- package/dist/cjs/toolbar/ToolbarButton.native.js +14 -4
- package/dist/cjs/toolbar/ToolbarButton.native.js.map +1 -1
- package/dist/cjs/toolbar/icons.cjs +111 -468
- package/dist/cjs/toolbar/shortcuts.cjs +73 -24
- package/dist/cjs/toolbar/shortcuts.native.js +73 -24
- package/dist/cjs/toolbar/shortcuts.native.js.map +1 -1
- package/dist/cjs/toolbar/useHorizontalScroll.cjs +25 -5
- package/dist/cjs/toolbar/useHorizontalScroll.native.js +25 -5
- package/dist/cjs/toolbar/useHorizontalScroll.native.js.map +1 -1
- package/dist/cjs/toolbar/useRovingFocus.cjs +80 -0
- package/dist/cjs/toolbar/useRovingFocus.native.js +113 -0
- package/dist/cjs/toolbar/useRovingFocus.native.js.map +1 -0
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/esm/RichEditor.mjs +85 -10
- package/dist/esm/RichEditor.mjs.map +1 -1
- package/dist/esm/RichEditor.native.js +425 -38
- package/dist/esm/RichEditor.native.js.map +1 -1
- package/dist/esm/RichTextEditor/index.mjs +18 -2
- package/dist/esm/RichTextEditor/index.mjs.map +1 -1
- package/dist/esm/RichTextEditor/index.native.js +18 -2
- package/dist/esm/RichTextEditor/index.native.js.map +1 -1
- package/dist/esm/constants.mjs +47 -29
- package/dist/esm/constants.mjs.map +1 -1
- package/dist/esm/constants.native.js +54 -29
- package/dist/esm/constants.native.js.map +1 -1
- package/dist/esm/editor/BlockDragHandle.mjs +22 -7
- package/dist/esm/editor/BlockDragHandle.mjs.map +1 -1
- package/dist/esm/editor/BlockDragHandle.native.js +41 -7
- package/dist/esm/editor/BlockDragHandle.native.js.map +1 -1
- package/dist/esm/editor/SlashCommands.mjs +250 -294
- package/dist/esm/editor/SlashCommands.mjs.map +1 -1
- package/dist/esm/editor/SlashCommands.native.js +307 -341
- package/dist/esm/editor/SlashCommands.native.js.map +1 -1
- package/dist/esm/editor/TentapEditor.native.js +45 -13
- package/dist/esm/editor/TentapEditor.native.js.map +1 -1
- package/dist/esm/editor/TiptapEditor.mjs +142 -35
- package/dist/esm/editor/TiptapEditor.mjs.map +1 -1
- package/dist/esm/editor/TiptapEditor.native.js +155 -35
- package/dist/esm/editor/TiptapEditor.native.js.map +1 -1
- package/dist/esm/editor/blockAnchor.mjs +18 -0
- package/dist/esm/editor/blockAnchor.mjs.map +1 -0
- package/dist/esm/editor/blockAnchor.native.js +40 -0
- package/dist/esm/editor/blockAnchor.native.js.map +1 -0
- package/dist/esm/editor/codeBlockPreview.mjs +190 -0
- package/dist/esm/editor/codeBlockPreview.mjs.map +1 -0
- package/dist/esm/editor/codeBlockPreview.native.js +222 -0
- package/dist/esm/editor/codeBlockPreview.native.js.map +1 -0
- package/dist/esm/editor/editorStyles.mjs +203 -34
- package/dist/esm/editor/editorStyles.mjs.map +1 -1
- package/dist/esm/editor/editorStyles.native.js +203 -34
- package/dist/esm/editor/editorStyles.native.js.map +1 -1
- package/dist/esm/editor/emoji.mjs +88 -0
- package/dist/esm/editor/emoji.mjs.map +1 -0
- package/dist/esm/editor/emoji.native.js +141 -0
- package/dist/esm/editor/emoji.native.js.map +1 -0
- package/dist/esm/editor/lazyKatex.mjs +40 -0
- package/dist/esm/editor/lazyKatex.mjs.map +1 -0
- package/dist/esm/editor/lazyKatex.native.js +76 -0
- package/dist/esm/editor/lazyKatex.native.js.map +1 -0
- package/dist/esm/editor/markdown.mjs +179 -0
- package/dist/esm/editor/markdown.mjs.map +1 -0
- package/dist/esm/editor/markdown.native.js +238 -0
- package/dist/esm/editor/markdown.native.js.map +1 -0
- package/dist/esm/editor/mathematics.mjs +142 -0
- package/dist/esm/editor/mathematics.mjs.map +1 -0
- package/dist/esm/editor/mathematics.native.js +173 -0
- package/dist/esm/editor/mathematics.native.js.map +1 -0
- package/dist/esm/editor/media.mjs +113 -0
- package/dist/esm/editor/media.mjs.map +1 -0
- package/dist/esm/editor/media.native.js +144 -0
- package/dist/esm/editor/media.native.js.map +1 -0
- package/dist/esm/editor/mentions.mjs +37 -0
- package/dist/esm/editor/mentions.mjs.map +1 -0
- package/dist/esm/editor/mentions.native.js +45 -0
- package/dist/esm/editor/mentions.native.js.map +1 -0
- package/dist/esm/editor/pasteCleanup.mjs +57 -0
- package/dist/esm/editor/pasteCleanup.mjs.map +1 -0
- package/dist/esm/editor/pasteCleanup.native.js +146 -0
- package/dist/esm/editor/pasteCleanup.native.js.map +1 -0
- package/dist/esm/editor/suggestionPopup.mjs +268 -0
- package/dist/esm/editor/suggestionPopup.mjs.map +1 -0
- package/dist/esm/editor/suggestionPopup.native.js +295 -0
- package/dist/esm/editor/suggestionPopup.native.js.map +1 -0
- package/dist/esm/preview.mjs +236 -0
- package/dist/esm/preview.mjs.map +1 -0
- package/dist/esm/preview.native.js +264 -0
- package/dist/esm/preview.native.js.map +1 -0
- package/dist/esm/shared/t.mjs +17 -0
- package/dist/esm/shared/t.mjs.map +1 -0
- package/dist/esm/shared/t.native.js +17 -0
- package/dist/esm/shared/t.native.js.map +1 -0
- package/dist/esm/shared/url.mjs +10 -0
- package/dist/esm/shared/url.mjs.map +1 -0
- package/dist/esm/shared/url.native.js +10 -0
- package/dist/esm/shared/url.native.js.map +1 -0
- package/dist/esm/styled.mjs +13 -6
- package/dist/esm/styled.mjs.map +1 -1
- package/dist/esm/styled.native.js +13 -6
- package/dist/esm/styled.native.js.map +1 -1
- package/dist/esm/toolbar/BubbleToolbar.mjs +11 -9
- package/dist/esm/toolbar/BubbleToolbar.mjs.map +1 -1
- package/dist/esm/toolbar/BubbleToolbar.native.js +11 -9
- package/dist/esm/toolbar/BubbleToolbar.native.js.map +1 -1
- package/dist/esm/toolbar/CodeBlockBubble.mjs +60 -24
- package/dist/esm/toolbar/CodeBlockBubble.mjs.map +1 -1
- package/dist/esm/toolbar/CodeBlockBubble.native.js +72 -26
- package/dist/esm/toolbar/CodeBlockBubble.native.js.map +1 -1
- package/dist/esm/toolbar/ColorPicker.mjs +21 -56
- package/dist/esm/toolbar/ColorPicker.mjs.map +1 -1
- package/dist/esm/toolbar/ColorPicker.native.js +82 -180
- package/dist/esm/toolbar/ColorPicker.native.js.map +1 -1
- package/dist/esm/toolbar/FixedToolbar.mjs +34 -11
- package/dist/esm/toolbar/FixedToolbar.mjs.map +1 -1
- package/dist/esm/toolbar/FixedToolbar.native.js +47 -55
- package/dist/esm/toolbar/FixedToolbar.native.js.map +1 -1
- package/dist/esm/toolbar/HeadingPicker.mjs +34 -41
- package/dist/esm/toolbar/HeadingPicker.mjs.map +1 -1
- package/dist/esm/toolbar/HeadingPicker.native.js +63 -53
- package/dist/esm/toolbar/HeadingPicker.native.js.map +1 -1
- package/dist/esm/toolbar/ImageBubble.mjs +20 -43
- package/dist/esm/toolbar/ImageBubble.mjs.map +1 -1
- package/dist/esm/toolbar/ImageBubble.native.js +20 -43
- package/dist/esm/toolbar/ImageBubble.native.js.map +1 -1
- package/dist/esm/toolbar/ImageDialog.mjs +5 -4
- package/dist/esm/toolbar/ImageDialog.mjs.map +1 -1
- package/dist/esm/toolbar/ImageDialog.native.js +75 -64
- package/dist/esm/toolbar/ImageDialog.native.js.map +1 -1
- package/dist/esm/toolbar/LinkBubble.mjs +23 -70
- package/dist/esm/toolbar/LinkBubble.mjs.map +1 -1
- package/dist/esm/toolbar/LinkBubble.native.js +23 -70
- package/dist/esm/toolbar/LinkBubble.native.js.map +1 -1
- package/dist/esm/toolbar/LinkDialog.mjs +17 -16
- package/dist/esm/toolbar/LinkDialog.mjs.map +1 -1
- package/dist/esm/toolbar/LinkDialog.native.js +84 -80
- package/dist/esm/toolbar/LinkDialog.native.js.map +1 -1
- package/dist/esm/toolbar/ListPicker.mjs +33 -44
- package/dist/esm/toolbar/ListPicker.mjs.map +1 -1
- package/dist/esm/toolbar/ListPicker.native.js +44 -45
- package/dist/esm/toolbar/ListPicker.native.js.map +1 -1
- package/dist/esm/toolbar/MathBubble.mjs +134 -0
- package/dist/esm/toolbar/MathBubble.mjs.map +1 -0
- package/dist/esm/toolbar/MathBubble.native.js +141 -0
- package/dist/esm/toolbar/MathBubble.native.js.map +1 -0
- package/dist/esm/toolbar/MoreDropdown.mjs +50 -97
- package/dist/esm/toolbar/MoreDropdown.mjs.map +1 -1
- package/dist/esm/toolbar/MoreDropdown.native.js +72 -97
- package/dist/esm/toolbar/MoreDropdown.native.js.map +1 -1
- package/dist/esm/toolbar/StatusBar.mjs +19 -10
- package/dist/esm/toolbar/StatusBar.mjs.map +1 -1
- package/dist/esm/toolbar/StatusBar.native.js +19 -10
- package/dist/esm/toolbar/StatusBar.native.js.map +1 -1
- package/dist/esm/toolbar/TableBubble.mjs +77 -95
- package/dist/esm/toolbar/TableBubble.mjs.map +1 -1
- package/dist/esm/toolbar/TableBubble.native.js +73 -71
- package/dist/esm/toolbar/TableBubble.native.js.map +1 -1
- package/dist/esm/toolbar/ToolbarButton.mjs +87 -22
- package/dist/esm/toolbar/ToolbarButton.mjs.map +1 -1
- package/dist/esm/toolbar/ToolbarButton.native.js +14 -4
- package/dist/esm/toolbar/ToolbarButton.native.js.map +1 -1
- package/dist/esm/toolbar/icons.mjs +109 -469
- package/dist/esm/toolbar/icons.mjs.map +1 -1
- package/dist/esm/toolbar/shortcuts.mjs +73 -24
- package/dist/esm/toolbar/shortcuts.mjs.map +1 -1
- package/dist/esm/toolbar/shortcuts.native.js +73 -24
- package/dist/esm/toolbar/shortcuts.native.js.map +1 -1
- package/dist/esm/toolbar/useHorizontalScroll.mjs +25 -6
- package/dist/esm/toolbar/useHorizontalScroll.mjs.map +1 -1
- package/dist/esm/toolbar/useHorizontalScroll.native.js +25 -6
- package/dist/esm/toolbar/useHorizontalScroll.native.js.map +1 -1
- package/dist/esm/toolbar/useRovingFocus.mjs +55 -0
- package/dist/esm/toolbar/useRovingFocus.mjs.map +1 -0
- package/dist/esm/toolbar/useRovingFocus.native.js +85 -0
- package/dist/esm/toolbar/useRovingFocus.native.js.map +1 -0
- package/dist/esm/types.mjs.map +1 -1
- package/dist/esm/types.native.js.map +1 -1
- package/dist/jsx/RichEditor.mjs +85 -10
- package/dist/jsx/RichEditor.mjs.map +1 -1
- package/dist/jsx/RichEditor.native.js +422 -35
- package/dist/jsx/RichEditor.native.js.map +1 -1
- package/dist/jsx/RichTextEditor/index.mjs +18 -2
- package/dist/jsx/RichTextEditor/index.mjs.map +1 -1
- package/dist/jsx/RichTextEditor/index.native.js +18 -2
- package/dist/jsx/RichTextEditor/index.native.js.map +1 -1
- package/dist/jsx/constants.mjs +47 -29
- package/dist/jsx/constants.mjs.map +1 -1
- package/dist/jsx/constants.native.js +59 -29
- package/dist/jsx/constants.native.js.map +1 -1
- package/dist/jsx/editor/BlockDragHandle.mjs +22 -7
- package/dist/jsx/editor/BlockDragHandle.mjs.map +1 -1
- package/dist/jsx/editor/BlockDragHandle.native.js +41 -7
- package/dist/jsx/editor/BlockDragHandle.native.js.map +1 -1
- package/dist/jsx/editor/SlashCommands.mjs +250 -294
- package/dist/jsx/editor/SlashCommands.mjs.map +1 -1
- package/dist/jsx/editor/SlashCommands.native.js +306 -340
- package/dist/jsx/editor/SlashCommands.native.js.map +1 -1
- package/dist/jsx/editor/TentapEditor.native.js +44 -12
- package/dist/jsx/editor/TentapEditor.native.js.map +1 -1
- package/dist/jsx/editor/TiptapEditor.mjs +142 -35
- package/dist/jsx/editor/TiptapEditor.mjs.map +1 -1
- package/dist/jsx/editor/TiptapEditor.native.js +153 -33
- package/dist/jsx/editor/TiptapEditor.native.js.map +1 -1
- package/dist/jsx/editor/blockAnchor.mjs +18 -0
- package/dist/jsx/editor/blockAnchor.mjs.map +1 -0
- package/dist/jsx/editor/blockAnchor.native.js +68 -0
- package/dist/jsx/editor/blockAnchor.native.js.map +1 -0
- package/dist/jsx/editor/codeBlockPreview.mjs +190 -0
- package/dist/jsx/editor/codeBlockPreview.mjs.map +1 -0
- package/dist/jsx/editor/codeBlockPreview.native.js +265 -0
- package/dist/jsx/editor/codeBlockPreview.native.js.map +1 -0
- package/dist/jsx/editor/editorStyles.mjs +203 -34
- package/dist/jsx/editor/editorStyles.mjs.map +1 -1
- package/dist/jsx/editor/editorStyles.native.js +203 -34
- package/dist/jsx/editor/editorStyles.native.js.map +1 -1
- package/dist/jsx/editor/emoji.mjs +88 -0
- package/dist/jsx/editor/emoji.mjs.map +1 -0
- package/dist/jsx/editor/emoji.native.js +184 -0
- package/dist/jsx/editor/emoji.native.js.map +1 -0
- package/dist/jsx/editor/lazyKatex.mjs +40 -0
- package/dist/jsx/editor/lazyKatex.mjs.map +1 -0
- package/dist/jsx/editor/lazyKatex.native.js +117 -0
- package/dist/jsx/editor/lazyKatex.native.js.map +1 -0
- package/dist/jsx/editor/markdown.mjs +179 -0
- package/dist/jsx/editor/markdown.mjs.map +1 -0
- package/dist/jsx/editor/markdown.native.js +278 -0
- package/dist/jsx/editor/markdown.native.js.map +1 -0
- package/dist/jsx/editor/mathematics.mjs +142 -0
- package/dist/jsx/editor/mathematics.mjs.map +1 -0
- package/dist/jsx/editor/mathematics.native.js +202 -0
- package/dist/jsx/editor/mathematics.native.js.map +1 -0
- package/dist/jsx/editor/media.mjs +113 -0
- package/dist/jsx/editor/media.mjs.map +1 -0
- package/dist/jsx/editor/media.native.js +172 -0
- package/dist/jsx/editor/media.native.js.map +1 -0
- package/dist/jsx/editor/mentions.mjs +37 -0
- package/dist/jsx/editor/mentions.mjs.map +1 -0
- package/dist/jsx/editor/mentions.native.js +84 -0
- package/dist/jsx/editor/mentions.native.js.map +1 -0
- package/dist/jsx/editor/pasteCleanup.mjs +57 -0
- package/dist/jsx/editor/pasteCleanup.mjs.map +1 -0
- package/dist/jsx/editor/pasteCleanup.native.js +175 -0
- package/dist/jsx/editor/pasteCleanup.native.js.map +1 -0
- package/dist/jsx/editor/suggestionPopup.mjs +268 -0
- package/dist/jsx/editor/suggestionPopup.mjs.map +1 -0
- package/dist/jsx/editor/suggestionPopup.native.js +327 -0
- package/dist/jsx/editor/suggestionPopup.native.js.map +1 -0
- package/dist/jsx/preview.mjs +236 -0
- package/dist/jsx/preview.mjs.map +1 -0
- package/dist/jsx/preview.native.js +294 -0
- package/dist/jsx/preview.native.js.map +1 -0
- package/dist/jsx/shared/t.mjs +17 -0
- package/dist/jsx/shared/t.mjs.map +1 -0
- package/dist/jsx/shared/t.native.js +56 -0
- package/dist/jsx/shared/t.native.js.map +1 -0
- package/dist/jsx/shared/url.mjs +10 -0
- package/dist/jsx/shared/url.mjs.map +1 -0
- package/dist/jsx/shared/url.native.js +38 -0
- package/dist/jsx/shared/url.native.js.map +1 -0
- package/dist/jsx/styled.mjs +13 -6
- package/dist/jsx/styled.mjs.map +1 -1
- package/dist/jsx/styled.native.js +13 -6
- package/dist/jsx/styled.native.js.map +1 -1
- package/dist/jsx/toolbar/BubbleToolbar.mjs +11 -9
- package/dist/jsx/toolbar/BubbleToolbar.mjs.map +1 -1
- package/dist/jsx/toolbar/BubbleToolbar.native.js +10 -8
- package/dist/jsx/toolbar/BubbleToolbar.native.js.map +1 -1
- package/dist/jsx/toolbar/CodeBlockBubble.mjs +60 -24
- package/dist/jsx/toolbar/CodeBlockBubble.mjs.map +1 -1
- package/dist/jsx/toolbar/CodeBlockBubble.native.js +71 -25
- package/dist/jsx/toolbar/CodeBlockBubble.native.js.map +1 -1
- package/dist/jsx/toolbar/ColorPicker.mjs +21 -56
- package/dist/jsx/toolbar/ColorPicker.mjs.map +1 -1
- package/dist/jsx/toolbar/ColorPicker.native.js +81 -179
- package/dist/jsx/toolbar/ColorPicker.native.js.map +1 -1
- package/dist/jsx/toolbar/FixedToolbar.mjs +34 -11
- package/dist/jsx/toolbar/FixedToolbar.mjs.map +1 -1
- package/dist/jsx/toolbar/FixedToolbar.native.js +46 -54
- package/dist/jsx/toolbar/FixedToolbar.native.js.map +1 -1
- package/dist/jsx/toolbar/HeadingPicker.mjs +34 -41
- package/dist/jsx/toolbar/HeadingPicker.mjs.map +1 -1
- package/dist/jsx/toolbar/HeadingPicker.native.js +61 -51
- package/dist/jsx/toolbar/HeadingPicker.native.js.map +1 -1
- package/dist/jsx/toolbar/ImageBubble.mjs +20 -43
- package/dist/jsx/toolbar/ImageBubble.mjs.map +1 -1
- package/dist/jsx/toolbar/ImageBubble.native.js +20 -43
- package/dist/jsx/toolbar/ImageBubble.native.js.map +1 -1
- package/dist/jsx/toolbar/ImageDialog.mjs +5 -4
- package/dist/jsx/toolbar/ImageDialog.mjs.map +1 -1
- package/dist/jsx/toolbar/ImageDialog.native.js +76 -65
- package/dist/jsx/toolbar/ImageDialog.native.js.map +1 -1
- package/dist/jsx/toolbar/LinkBubble.mjs +23 -70
- package/dist/jsx/toolbar/LinkBubble.mjs.map +1 -1
- package/dist/jsx/toolbar/LinkBubble.native.js +23 -70
- package/dist/jsx/toolbar/LinkBubble.native.js.map +1 -1
- package/dist/jsx/toolbar/LinkDialog.mjs +17 -16
- package/dist/jsx/toolbar/LinkDialog.mjs.map +1 -1
- package/dist/jsx/toolbar/LinkDialog.native.js +86 -83
- package/dist/jsx/toolbar/LinkDialog.native.js.map +1 -1
- package/dist/jsx/toolbar/ListPicker.mjs +33 -44
- package/dist/jsx/toolbar/ListPicker.mjs.map +1 -1
- package/dist/jsx/toolbar/ListPicker.native.js +43 -44
- package/dist/jsx/toolbar/ListPicker.native.js.map +1 -1
- package/dist/jsx/toolbar/MathBubble.mjs +134 -0
- package/dist/jsx/toolbar/MathBubble.mjs.map +1 -0
- package/dist/jsx/toolbar/MathBubble.native.js +169 -0
- package/dist/jsx/toolbar/MathBubble.native.js.map +1 -0
- package/dist/jsx/toolbar/MoreDropdown.mjs +50 -97
- package/dist/jsx/toolbar/MoreDropdown.mjs.map +1 -1
- package/dist/jsx/toolbar/MoreDropdown.native.js +73 -98
- package/dist/jsx/toolbar/MoreDropdown.native.js.map +1 -1
- package/dist/jsx/toolbar/StatusBar.mjs +19 -10
- package/dist/jsx/toolbar/StatusBar.mjs.map +1 -1
- package/dist/jsx/toolbar/StatusBar.native.js +19 -10
- package/dist/jsx/toolbar/StatusBar.native.js.map +1 -1
- package/dist/jsx/toolbar/TableBubble.mjs +77 -95
- package/dist/jsx/toolbar/TableBubble.mjs.map +1 -1
- package/dist/jsx/toolbar/TableBubble.native.js +73 -71
- package/dist/jsx/toolbar/TableBubble.native.js.map +1 -1
- package/dist/jsx/toolbar/ToolbarButton.mjs +87 -22
- package/dist/jsx/toolbar/ToolbarButton.mjs.map +1 -1
- package/dist/jsx/toolbar/ToolbarButton.native.js +14 -4
- package/dist/jsx/toolbar/ToolbarButton.native.js.map +1 -1
- package/dist/jsx/toolbar/icons.mjs +109 -469
- package/dist/jsx/toolbar/icons.mjs.map +1 -1
- package/dist/jsx/toolbar/shortcuts.mjs +73 -24
- package/dist/jsx/toolbar/shortcuts.mjs.map +1 -1
- package/dist/jsx/toolbar/shortcuts.native.js +73 -24
- package/dist/jsx/toolbar/shortcuts.native.js.map +1 -1
- package/dist/jsx/toolbar/useHorizontalScroll.mjs +25 -6
- package/dist/jsx/toolbar/useHorizontalScroll.mjs.map +1 -1
- package/dist/jsx/toolbar/useHorizontalScroll.native.js +25 -5
- package/dist/jsx/toolbar/useHorizontalScroll.native.js.map +1 -1
- package/dist/jsx/toolbar/useRovingFocus.mjs +55 -0
- package/dist/jsx/toolbar/useRovingFocus.mjs.map +1 -0
- package/dist/jsx/toolbar/useRovingFocus.native.js +113 -0
- package/dist/jsx/toolbar/useRovingFocus.native.js.map +1 -0
- package/dist/jsx/types.mjs.map +1 -1
- package/dist/jsx/types.native.js.map +1 -1
- package/package.json +28 -13
- package/src/RichEditor.native.tsx +451 -49
- package/src/RichEditor.stories.tsx +158 -0
- package/src/RichEditor.tsx +121 -7
- package/src/RichTextEditor/index.tsx +41 -3
- package/src/RichTextEditor/richTextEditor.spec.tsx +11 -4
- package/src/constants.ts +86 -24
- package/src/editor/BlockDragHandle.ts +30 -5
- package/src/editor/SlashCommands.tsx +228 -293
- package/src/editor/TentapEditor.native.tsx +68 -17
- package/src/editor/TiptapEditor.tsx +187 -22
- package/src/editor/blockAnchor.spec.ts +70 -0
- package/src/editor/blockAnchor.ts +42 -0
- package/src/editor/codeBlockPreview.spec.ts +144 -0
- package/src/editor/codeBlockPreview.ts +266 -0
- package/src/editor/css.d.ts +2 -0
- package/src/editor/details.spec.ts +48 -0
- package/src/editor/editorStyles.spec.ts +25 -0
- package/src/editor/editorStyles.ts +218 -34
- package/src/editor/emoji.spec.ts +88 -0
- package/src/editor/emoji.ts +147 -0
- package/src/editor/emojilib.d.ts +16 -0
- package/src/editor/lazyKatex.spec.ts +38 -0
- package/src/editor/lazyKatex.ts +68 -0
- package/src/editor/markdown.spec.ts +196 -0
- package/src/editor/markdown.ts +249 -0
- package/src/editor/mathematics.spec.ts +97 -0
- package/src/editor/mathematics.ts +179 -0
- package/src/editor/media.spec.ts +121 -0
- package/src/editor/media.ts +133 -0
- package/src/editor/mentions.spec.ts +41 -0
- package/src/editor/mentions.ts +55 -0
- package/src/editor/pasteCleanup.spec.ts +84 -0
- package/src/editor/pasteCleanup.ts +124 -0
- package/src/editor/suggestionPopup.spec.tsx +105 -0
- package/src/editor/suggestionPopup.tsx +414 -0
- package/src/editor/tiptapEditor.spec.tsx +15 -8
- package/src/exports.spec.ts +4 -2
- package/src/index.ts +7 -1
- package/src/integration.spec.tsx +38 -9
- package/src/preview.spec.ts +130 -0
- package/src/preview.ts +287 -0
- package/src/richEditor.spec.tsx +10 -3
- package/src/shared/t.ts +25 -0
- package/src/shared/url.ts +16 -0
- package/src/styled.ts +13 -6
- package/src/toolbar/BubbleToolbar.tsx +11 -8
- package/src/toolbar/CodeBlockBubble.tsx +66 -28
- package/src/toolbar/ColorPicker.native.tsx +126 -0
- package/src/toolbar/ColorPicker.tsx +23 -67
- package/src/toolbar/FixedToolbar.native.tsx +51 -51
- package/src/toolbar/FixedToolbar.tsx +54 -10
- package/src/toolbar/HeadingPicker.tsx +46 -38
- package/src/toolbar/ImageBubble.tsx +26 -44
- package/src/toolbar/ImageDialog.native.tsx +97 -0
- package/src/toolbar/ImageDialog.tsx +5 -4
- package/src/toolbar/LinkBubble.tsx +27 -64
- package/src/toolbar/LinkDialog.native.tsx +117 -0
- package/src/toolbar/LinkDialog.tsx +28 -24
- package/src/toolbar/ListPicker.tsx +47 -43
- package/src/toolbar/MathBubble.tsx +140 -0
- package/src/toolbar/MoreDropdown.tsx +53 -60
- package/src/toolbar/StatusBar.tsx +13 -8
- package/src/toolbar/TableBubble.tsx +82 -94
- package/src/toolbar/ToolbarButton.native.tsx +14 -4
- package/src/toolbar/ToolbarButton.tsx +98 -19
- package/src/toolbar/bubbleToolbar.spec.tsx +2 -1
- package/src/toolbar/fixedToolbar.spec.tsx +4 -2
- package/src/toolbar/icons.tsx +113 -323
- package/src/toolbar/shortcuts.ts +77 -24
- package/src/toolbar/toolbarPrimitives.spec.tsx +29 -1
- package/src/toolbar/toolbarSubComponents.spec.tsx +4 -2
- package/src/toolbar/useHorizontalScroll.spec.ts +67 -0
- package/src/toolbar/useHorizontalScroll.tsx +39 -12
- package/src/toolbar/useRovingFocus.spec.tsx +100 -0
- package/src/toolbar/useRovingFocus.ts +82 -0
- package/src/types.spec.ts +40 -1
- package/src/types.ts +28 -0
- package/types/RichEditor.d.ts +51 -0
- package/types/RichEditor.d.ts.map +1 -0
- package/types/RichEditor.native.d.ts +59 -0
- package/types/RichEditor.native.d.ts.map +1 -0
- package/types/RichTextEditor/index.d.ts +71 -0
- package/types/RichTextEditor/index.d.ts.map +1 -0
- package/types/constants.d.ts +49 -0
- package/types/constants.d.ts.map +1 -0
- package/types/context.d.ts +10 -0
- package/types/context.d.ts.map +1 -0
- package/types/editor/BlockDragHandle.d.ts +8 -0
- package/types/editor/BlockDragHandle.d.ts.map +1 -0
- package/types/editor/MarkdownPaste.d.ts +8 -0
- package/types/editor/MarkdownPaste.d.ts.map +1 -0
- package/types/editor/SlashCommands.d.ts +24 -0
- package/types/editor/SlashCommands.d.ts.map +1 -0
- package/types/editor/TentapEditor.native.d.ts +21 -0
- package/types/editor/TentapEditor.native.d.ts.map +1 -0
- package/types/editor/TiptapEditor.d.ts +24 -0
- package/types/editor/TiptapEditor.d.ts.map +1 -0
- package/types/editor/blockAnchor.d.ts +25 -0
- package/types/editor/blockAnchor.d.ts.map +1 -0
- package/types/editor/codeBlockPreview.d.ts +51 -0
- package/types/editor/codeBlockPreview.d.ts.map +1 -0
- package/types/editor/editorStyles.d.ts +25 -0
- package/types/editor/editorStyles.d.ts.map +1 -0
- package/types/editor/emoji.d.ts +45 -0
- package/types/editor/emoji.d.ts.map +1 -0
- package/types/editor/index.d.ts +11 -0
- package/types/editor/index.d.ts.map +1 -0
- package/types/editor/lazyKatex.d.ts +33 -0
- package/types/editor/lazyKatex.d.ts.map +1 -0
- package/types/editor/markdown.d.ts +24 -0
- package/types/editor/markdown.d.ts.map +1 -0
- package/types/editor/mathematics.d.ts +44 -0
- package/types/editor/mathematics.d.ts.map +1 -0
- package/types/editor/media.d.ts +32 -0
- package/types/editor/media.d.ts.map +1 -0
- package/types/editor/mentions.d.ts +15 -0
- package/types/editor/mentions.d.ts.map +1 -0
- package/types/editor/pasteCleanup.d.ts +24 -0
- package/types/editor/pasteCleanup.d.ts.map +1 -0
- package/types/editor/suggestionPopup.d.ts +113 -0
- package/types/editor/suggestionPopup.d.ts.map +1 -0
- package/types/editor/types.d.ts +80 -0
- package/types/editor/types.d.ts.map +1 -0
- package/types/editor/useEditorState.d.ts +19 -0
- package/types/editor/useEditorState.d.ts.map +1 -0
- package/types/index.d.ts +11 -0
- package/types/index.d.ts.map +1 -0
- package/types/preview.d.ts +44 -0
- package/types/preview.d.ts.map +1 -0
- package/types/shared/t.d.ts +10 -0
- package/types/shared/t.d.ts.map +1 -0
- package/types/shared/url.d.ts +9 -0
- package/types/shared/url.d.ts.map +1 -0
- package/types/styled.d.ts +40 -0
- package/types/styled.d.ts.map +1 -0
- package/types/toolbar/BubbleToolbar.d.ts +23 -0
- package/types/toolbar/BubbleToolbar.d.ts.map +1 -0
- package/types/toolbar/CodeBlockBubble.d.ts +10 -0
- package/types/toolbar/CodeBlockBubble.d.ts.map +1 -0
- package/types/toolbar/ColorPicker.d.ts +15 -0
- package/types/toolbar/ColorPicker.d.ts.map +1 -0
- package/types/toolbar/ColorPicker.native.d.ts +20 -0
- package/types/toolbar/ColorPicker.native.d.ts.map +1 -0
- package/types/toolbar/FixedToolbar.d.ts +32 -0
- package/types/toolbar/FixedToolbar.d.ts.map +1 -0
- package/types/toolbar/FixedToolbar.native.d.ts +30 -0
- package/types/toolbar/FixedToolbar.native.d.ts.map +1 -0
- package/types/toolbar/HeadingPicker.d.ts +14 -0
- package/types/toolbar/HeadingPicker.d.ts.map +1 -0
- package/types/toolbar/ImageBubble.d.ts +10 -0
- package/types/toolbar/ImageBubble.d.ts.map +1 -0
- package/types/toolbar/ImageDialog.d.ts +12 -0
- package/types/toolbar/ImageDialog.d.ts.map +1 -0
- package/types/toolbar/ImageDialog.native.d.ts +15 -0
- package/types/toolbar/ImageDialog.native.d.ts.map +1 -0
- package/types/toolbar/LinkBubble.d.ts +10 -0
- package/types/toolbar/LinkBubble.d.ts.map +1 -0
- package/types/toolbar/LinkDialog.d.ts +20 -0
- package/types/toolbar/LinkDialog.d.ts.map +1 -0
- package/types/toolbar/LinkDialog.native.d.ts +18 -0
- package/types/toolbar/LinkDialog.native.d.ts.map +1 -0
- package/types/toolbar/ListPicker.d.ts +14 -0
- package/types/toolbar/ListPicker.d.ts.map +1 -0
- package/types/toolbar/MathBubble.d.ts +11 -0
- package/types/toolbar/MathBubble.d.ts.map +1 -0
- package/types/toolbar/MoreDropdown.d.ts +13 -0
- package/types/toolbar/MoreDropdown.d.ts.map +1 -0
- package/types/toolbar/ResizeHandle.d.ts +11 -0
- package/types/toolbar/ResizeHandle.d.ts.map +1 -0
- package/types/toolbar/StatusBar.d.ts +11 -0
- package/types/toolbar/StatusBar.d.ts.map +1 -0
- package/types/toolbar/TableBubble.d.ts +10 -0
- package/types/toolbar/TableBubble.d.ts.map +1 -0
- package/types/toolbar/ToolbarButton.d.ts +35 -0
- package/types/toolbar/ToolbarButton.d.ts.map +1 -0
- package/types/toolbar/ToolbarButton.native.d.ts +30 -0
- package/types/toolbar/ToolbarButton.native.d.ts.map +1 -0
- package/types/toolbar/ToolbarGroup.d.ts +14 -0
- package/types/toolbar/ToolbarGroup.d.ts.map +1 -0
- package/types/toolbar/icons.d.ts +52 -0
- package/types/toolbar/icons.d.ts.map +1 -0
- package/types/toolbar/icons.native.d.ts +41 -0
- package/types/toolbar/icons.native.d.ts.map +1 -0
- package/types/toolbar/shortcuts.d.ts +34 -0
- package/types/toolbar/shortcuts.d.ts.map +1 -0
- package/types/toolbar/useHorizontalScroll.d.ts +43 -0
- package/types/toolbar/useHorizontalScroll.d.ts.map +1 -0
- package/types/toolbar/useRovingFocus.d.ts +10 -0
- package/types/toolbar/useRovingFocus.d.ts.map +1 -0
- package/types/types.d.ts +125 -0
- package/types/types.d.ts.map +1 -0
- package/dist/cjs/RichEditor.stories.cjs +0 -327
- package/dist/cjs/RichEditor.stories.native.js +0 -342
- package/dist/cjs/RichEditor.stories.native.js.map +0 -1
- package/dist/esm/RichEditor.stories.mjs +0 -291
- package/dist/esm/RichEditor.stories.mjs.map +0 -1
- package/dist/esm/RichEditor.stories.native.js +0 -303
- package/dist/esm/RichEditor.stories.native.js.map +0 -1
- package/dist/jsx/RichEditor.stories.mjs +0 -291
- package/dist/jsx/RichEditor.stories.mjs.map +0 -1
- package/dist/jsx/RichEditor.stories.native.js +0 -342
- package/dist/jsx/RichEditor.stories.native.js.map +0 -1
|
@@ -14,6 +14,10 @@ import { NATIVE_SUPPORTED_COMMANDS } from "../constants";
|
|
|
14
14
|
import { ToolbarFrame } from "../styled";
|
|
15
15
|
import { ToolbarButton } from "./ToolbarButton";
|
|
16
16
|
import { ToolbarGroup } from "./ToolbarGroup";
|
|
17
|
+
import { TextColorPicker, HighlightColorPicker } from "./ColorPicker";
|
|
18
|
+
import { LinkDialog } from "./LinkDialog";
|
|
19
|
+
import { ImageDialog } from "./ImageDialog";
|
|
20
|
+
import { t } from "../shared/t";
|
|
17
21
|
import {
|
|
18
22
|
UndoIcon,
|
|
19
23
|
RedoIcon,
|
|
@@ -27,10 +31,6 @@ import {
|
|
|
27
31
|
AlignJustifyIcon,
|
|
28
32
|
BlockquoteIcon,
|
|
29
33
|
ClearFormattingIcon,
|
|
30
|
-
LinkIcon,
|
|
31
|
-
ImageIcon,
|
|
32
|
-
TextColorIcon,
|
|
33
|
-
HighlightIcon,
|
|
34
34
|
} from "./icons";
|
|
35
35
|
|
|
36
36
|
// ===========================================================================
|
|
@@ -46,6 +46,16 @@ export interface FixedToolbarProps {
|
|
|
46
46
|
sections?: ToolbarSection[];
|
|
47
47
|
/** Whether the toolbar has an error state */
|
|
48
48
|
hasError?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Which edge the toolbar docks to (default: "top"). "bottom" flips the
|
|
51
|
+
* hairline to the top edge -- used by the fullscreen modal where the
|
|
52
|
+
* toolbar rides above the keyboard.
|
|
53
|
+
*/
|
|
54
|
+
docked?: "top" | "bottom";
|
|
55
|
+
/** Interface parity with web (native fullscreen is the modal; no toggle button) */
|
|
56
|
+
fullscreen?: boolean;
|
|
57
|
+
/** Interface parity with web (ignored on native) */
|
|
58
|
+
onFullscreenToggle?: () => void;
|
|
49
59
|
}
|
|
50
60
|
|
|
51
61
|
// ===========================================================================
|
|
@@ -82,6 +92,7 @@ export function FixedToolbar({
|
|
|
82
92
|
state = defaultEditorState,
|
|
83
93
|
sections,
|
|
84
94
|
hasError,
|
|
95
|
+
docked = "top",
|
|
85
96
|
}: FixedToolbarProps) {
|
|
86
97
|
const executeCommand = useCallback(
|
|
87
98
|
(command: EditorCommand, payload?: any) => {
|
|
@@ -130,7 +141,14 @@ export function FixedToolbar({
|
|
|
130
141
|
const clearVisible = visible("clear") && isNativeSupported("clearFormatting");
|
|
131
142
|
|
|
132
143
|
return (
|
|
133
|
-
<ToolbarFrame
|
|
144
|
+
<ToolbarFrame
|
|
145
|
+
hasError={hasError}
|
|
146
|
+
{...(docked === "bottom" && {
|
|
147
|
+
borderBottomWidth: 0,
|
|
148
|
+
borderTopWidth: 1,
|
|
149
|
+
borderTopColor: hasError ? "$red10" : ("$color6" as any),
|
|
150
|
+
})}
|
|
151
|
+
>
|
|
134
152
|
<ScrollView
|
|
135
153
|
horizontal
|
|
136
154
|
showsHorizontalScrollIndicator={false}
|
|
@@ -143,7 +161,7 @@ export function FixedToolbar({
|
|
|
143
161
|
<ToolbarButton
|
|
144
162
|
disabled={!state.canUndo}
|
|
145
163
|
onPress={() => executeCommand("undo")}
|
|
146
|
-
aria-label="Undo"
|
|
164
|
+
aria-label={t("Undo")}
|
|
147
165
|
>
|
|
148
166
|
<UndoIcon />
|
|
149
167
|
</ToolbarButton>
|
|
@@ -152,7 +170,7 @@ export function FixedToolbar({
|
|
|
152
170
|
<ToolbarButton
|
|
153
171
|
disabled={!state.canRedo}
|
|
154
172
|
onPress={() => executeCommand("redo")}
|
|
155
|
-
aria-label="Redo"
|
|
173
|
+
aria-label={t("Redo")}
|
|
156
174
|
>
|
|
157
175
|
<RedoIcon />
|
|
158
176
|
</ToolbarButton>
|
|
@@ -165,7 +183,7 @@ export function FixedToolbar({
|
|
|
165
183
|
<ToolbarButton
|
|
166
184
|
active={state.isBold}
|
|
167
185
|
onPress={() => executeCommand("bold")}
|
|
168
|
-
aria-label="Bold"
|
|
186
|
+
aria-label={t("Bold")}
|
|
169
187
|
>
|
|
170
188
|
<BoldIcon>B</BoldIcon>
|
|
171
189
|
</ToolbarButton>
|
|
@@ -174,7 +192,7 @@ export function FixedToolbar({
|
|
|
174
192
|
<ToolbarButton
|
|
175
193
|
active={state.isItalic}
|
|
176
194
|
onPress={() => executeCommand("italic")}
|
|
177
|
-
aria-label="Italic"
|
|
195
|
+
aria-label={t("Italic")}
|
|
178
196
|
>
|
|
179
197
|
<ItalicIcon>I</ItalicIcon>
|
|
180
198
|
</ToolbarButton>
|
|
@@ -183,7 +201,7 @@ export function FixedToolbar({
|
|
|
183
201
|
<ToolbarButton
|
|
184
202
|
active={state.isUnderline}
|
|
185
203
|
onPress={() => executeCommand("underline")}
|
|
186
|
-
aria-label="Underline"
|
|
204
|
+
aria-label={t("Underline")}
|
|
187
205
|
>
|
|
188
206
|
<UnderlineIcon>U</UnderlineIcon>
|
|
189
207
|
</ToolbarButton>
|
|
@@ -192,7 +210,7 @@ export function FixedToolbar({
|
|
|
192
210
|
<ToolbarButton
|
|
193
211
|
active={state.isStrike}
|
|
194
212
|
onPress={() => executeCommand("strike")}
|
|
195
|
-
aria-label="Strikethrough"
|
|
213
|
+
aria-label={t("Strikethrough")}
|
|
196
214
|
>
|
|
197
215
|
<StrikeIcon>S</StrikeIcon>
|
|
198
216
|
</ToolbarButton>
|
|
@@ -201,7 +219,7 @@ export function FixedToolbar({
|
|
|
201
219
|
<ToolbarButton
|
|
202
220
|
active={state.isCode}
|
|
203
221
|
onPress={() => executeCommand("code")}
|
|
204
|
-
aria-label="Code"
|
|
222
|
+
aria-label={t("Code")}
|
|
205
223
|
>
|
|
206
224
|
<Text>{"</>"}</Text>
|
|
207
225
|
</ToolbarButton>
|
|
@@ -209,25 +227,15 @@ export function FixedToolbar({
|
|
|
209
227
|
{/* subscript and superscript are NOT supported on native -- hidden entirely */}
|
|
210
228
|
</ToolbarGroup>
|
|
211
229
|
|
|
212
|
-
{/* Color
|
|
230
|
+
{/* Color — must open a picker; bare textColor/highlight with no
|
|
231
|
+
payload is a no-op at best and historically wiped Tentap content
|
|
232
|
+
when ColorBridge received an undefined setColor. */}
|
|
213
233
|
<ToolbarGroup visible={colorVisible}>
|
|
214
234
|
{isNativeSupported("textColor") && (
|
|
215
|
-
<
|
|
216
|
-
active={!!state.textColor}
|
|
217
|
-
onPress={() => executeCommand("textColor")}
|
|
218
|
-
aria-label="Text Color"
|
|
219
|
-
>
|
|
220
|
-
<TextColorIcon color={state.textColor} />
|
|
221
|
-
</ToolbarButton>
|
|
235
|
+
<TextColorPicker editorRef={editorRef} state={state} />
|
|
222
236
|
)}
|
|
223
237
|
{isNativeSupported("highlight") && (
|
|
224
|
-
<
|
|
225
|
-
active={!!state.highlightColor}
|
|
226
|
-
onPress={() => executeCommand("highlight")}
|
|
227
|
-
aria-label="Highlight Color"
|
|
228
|
-
>
|
|
229
|
-
<HighlightIcon color={state.highlightColor} />
|
|
230
|
-
</ToolbarButton>
|
|
238
|
+
<HighlightColorPicker editorRef={editorRef} state={state} />
|
|
231
239
|
)}
|
|
232
240
|
</ToolbarGroup>
|
|
233
241
|
|
|
@@ -237,7 +245,7 @@ export function FixedToolbar({
|
|
|
237
245
|
<ToolbarButton
|
|
238
246
|
active={state.isHeading1}
|
|
239
247
|
onPress={() => executeCommand("heading1")}
|
|
240
|
-
aria-label="Heading 1"
|
|
248
|
+
aria-label={t("Heading 1")}
|
|
241
249
|
>
|
|
242
250
|
<Text fontWeight="700">H1</Text>
|
|
243
251
|
</ToolbarButton>
|
|
@@ -246,7 +254,7 @@ export function FixedToolbar({
|
|
|
246
254
|
<ToolbarButton
|
|
247
255
|
active={state.isHeading2}
|
|
248
256
|
onPress={() => executeCommand("heading2")}
|
|
249
|
-
aria-label="Heading 2"
|
|
257
|
+
aria-label={t("Heading 2")}
|
|
250
258
|
>
|
|
251
259
|
<Text fontWeight="600">H2</Text>
|
|
252
260
|
</ToolbarButton>
|
|
@@ -255,7 +263,7 @@ export function FixedToolbar({
|
|
|
255
263
|
<ToolbarButton
|
|
256
264
|
active={state.isHeading3}
|
|
257
265
|
onPress={() => executeCommand("heading3")}
|
|
258
|
-
aria-label="Heading 3"
|
|
266
|
+
aria-label={t("Heading 3")}
|
|
259
267
|
>
|
|
260
268
|
<Text fontWeight="600">H3</Text>
|
|
261
269
|
</ToolbarButton>
|
|
@@ -268,7 +276,7 @@ export function FixedToolbar({
|
|
|
268
276
|
<ToolbarButton
|
|
269
277
|
active={state.textAlign === "left"}
|
|
270
278
|
onPress={() => executeCommand("alignLeft")}
|
|
271
|
-
aria-label="Align Left"
|
|
279
|
+
aria-label={t("Align Left")}
|
|
272
280
|
>
|
|
273
281
|
<AlignLeftIcon />
|
|
274
282
|
</ToolbarButton>
|
|
@@ -277,7 +285,7 @@ export function FixedToolbar({
|
|
|
277
285
|
<ToolbarButton
|
|
278
286
|
active={state.textAlign === "center"}
|
|
279
287
|
onPress={() => executeCommand("alignCenter")}
|
|
280
|
-
aria-label="Align Center"
|
|
288
|
+
aria-label={t("Align Center")}
|
|
281
289
|
>
|
|
282
290
|
<AlignCenterIcon />
|
|
283
291
|
</ToolbarButton>
|
|
@@ -286,7 +294,7 @@ export function FixedToolbar({
|
|
|
286
294
|
<ToolbarButton
|
|
287
295
|
active={state.textAlign === "right"}
|
|
288
296
|
onPress={() => executeCommand("alignRight")}
|
|
289
|
-
aria-label="Align Right"
|
|
297
|
+
aria-label={t("Align Right")}
|
|
290
298
|
>
|
|
291
299
|
<AlignRightIcon />
|
|
292
300
|
</ToolbarButton>
|
|
@@ -295,7 +303,7 @@ export function FixedToolbar({
|
|
|
295
303
|
<ToolbarButton
|
|
296
304
|
active={state.textAlign === "justify"}
|
|
297
305
|
onPress={() => executeCommand("alignJustify")}
|
|
298
|
-
aria-label="Justify"
|
|
306
|
+
aria-label={t("Justify")}
|
|
299
307
|
>
|
|
300
308
|
<AlignJustifyIcon />
|
|
301
309
|
</ToolbarButton>
|
|
@@ -308,7 +316,7 @@ export function FixedToolbar({
|
|
|
308
316
|
<ToolbarButton
|
|
309
317
|
active={state.isBulletList}
|
|
310
318
|
onPress={() => executeCommand("bulletList")}
|
|
311
|
-
aria-label="Bullet List"
|
|
319
|
+
aria-label={t("Bullet List")}
|
|
312
320
|
>
|
|
313
321
|
<Text>{"•"}</Text>
|
|
314
322
|
</ToolbarButton>
|
|
@@ -317,7 +325,7 @@ export function FixedToolbar({
|
|
|
317
325
|
<ToolbarButton
|
|
318
326
|
active={state.isOrderedList}
|
|
319
327
|
onPress={() => executeCommand("orderedList")}
|
|
320
|
-
aria-label="Ordered List"
|
|
328
|
+
aria-label={t("Ordered List")}
|
|
321
329
|
>
|
|
322
330
|
<Text>{"1."}</Text>
|
|
323
331
|
</ToolbarButton>
|
|
@@ -326,7 +334,7 @@ export function FixedToolbar({
|
|
|
326
334
|
<ToolbarButton
|
|
327
335
|
active={state.isTaskList}
|
|
328
336
|
onPress={() => executeCommand("taskList")}
|
|
329
|
-
aria-label="Task List"
|
|
337
|
+
aria-label={t("Task List")}
|
|
330
338
|
>
|
|
331
339
|
<Text>{"[ ]"}</Text>
|
|
332
340
|
</ToolbarButton>
|
|
@@ -339,7 +347,7 @@ export function FixedToolbar({
|
|
|
339
347
|
<ToolbarButton
|
|
340
348
|
active={state.isBlockquote}
|
|
341
349
|
onPress={() => executeCommand("blockquote")}
|
|
342
|
-
aria-label="Blockquote"
|
|
350
|
+
aria-label={t("Blockquote")}
|
|
343
351
|
>
|
|
344
352
|
<BlockquoteIcon />
|
|
345
353
|
</ToolbarButton>
|
|
@@ -347,29 +355,21 @@ export function FixedToolbar({
|
|
|
347
355
|
{/* codeBlock and horizontalRule are NOT supported on native -- hidden entirely */}
|
|
348
356
|
</ToolbarGroup>
|
|
349
357
|
|
|
350
|
-
{/* Link */}
|
|
358
|
+
{/* Link (modal dialog -- a bare "link" command has no href and is a no-op) */}
|
|
351
359
|
<ToolbarGroup visible={linkVisible}>
|
|
352
|
-
<
|
|
353
|
-
active={state.isLink}
|
|
354
|
-
onPress={() => executeCommand("link")}
|
|
355
|
-
aria-label="Link"
|
|
356
|
-
>
|
|
357
|
-
<LinkIcon />
|
|
358
|
-
</ToolbarButton>
|
|
360
|
+
<LinkDialog editorRef={editorRef} state={state} />
|
|
359
361
|
</ToolbarGroup>
|
|
360
362
|
|
|
361
|
-
{/* Image */}
|
|
363
|
+
{/* Image (modal dialog -- a bare "image" command has no src and is a no-op) */}
|
|
362
364
|
<ToolbarGroup visible={imageVisible} showSeparator={!clearVisible}>
|
|
363
|
-
<
|
|
364
|
-
<ImageIcon />
|
|
365
|
-
</ToolbarButton>
|
|
365
|
+
<ImageDialog editorRef={editorRef} />
|
|
366
366
|
</ToolbarGroup>
|
|
367
367
|
|
|
368
368
|
{/* Clear formatting (not supported on native -- hidden entirely) */}
|
|
369
369
|
<ToolbarGroup visible={clearVisible} showSeparator={false}>
|
|
370
370
|
<ToolbarButton
|
|
371
371
|
onPress={() => executeCommand("clearFormatting")}
|
|
372
|
-
aria-label="Clear Formatting"
|
|
372
|
+
aria-label={t("Clear Formatting")}
|
|
373
373
|
>
|
|
374
374
|
<ClearFormattingIcon />
|
|
375
375
|
</ToolbarButton>
|
|
@@ -29,6 +29,8 @@ import {
|
|
|
29
29
|
StrikeIcon,
|
|
30
30
|
BlockquoteIcon,
|
|
31
31
|
CodeBlockIcon,
|
|
32
|
+
ExpandIcon,
|
|
33
|
+
CompressIcon,
|
|
32
34
|
} from "./icons";
|
|
33
35
|
import { TextColorPicker, HighlightColorPicker } from "./ColorPicker";
|
|
34
36
|
import { HeadingPicker } from "./HeadingPicker";
|
|
@@ -37,6 +39,8 @@ import { LinkDialog } from "./LinkDialog";
|
|
|
37
39
|
import { ImageDialog } from "./ImageDialog";
|
|
38
40
|
import { MoreDropdown } from "./MoreDropdown";
|
|
39
41
|
import { SHORTCUTS } from "./shortcuts";
|
|
42
|
+
import { useRovingFocus } from "./useRovingFocus";
|
|
43
|
+
import { t } from "../shared/t";
|
|
40
44
|
|
|
41
45
|
// ===========================================================================
|
|
42
46
|
// Types
|
|
@@ -51,6 +55,16 @@ export interface FixedToolbarProps {
|
|
|
51
55
|
sections?: ToolbarSection[];
|
|
52
56
|
/** Whether the toolbar has an error state */
|
|
53
57
|
hasError?: boolean;
|
|
58
|
+
/** Whether the editor is in fullscreen mode */
|
|
59
|
+
fullscreen?: boolean;
|
|
60
|
+
/** Shows a fullscreen toggle at the toolbar's right end when provided */
|
|
61
|
+
onFullscreenToggle?: () => void;
|
|
62
|
+
/** Native only: which edge the toolbar docks to (ignored on web) */
|
|
63
|
+
docked?: "top" | "bottom";
|
|
64
|
+
/** Controlled link-dialog open state (Mod+K wiring; internal when omitted) */
|
|
65
|
+
linkDialogOpen?: boolean;
|
|
66
|
+
/** Called when the link-dialog open state changes */
|
|
67
|
+
onLinkDialogOpenChange?: (open: boolean) => void;
|
|
54
68
|
}
|
|
55
69
|
|
|
56
70
|
// ===========================================================================
|
|
@@ -71,11 +85,17 @@ export function FixedToolbar({
|
|
|
71
85
|
state = defaultEditorState,
|
|
72
86
|
sections,
|
|
73
87
|
hasError,
|
|
88
|
+
fullscreen,
|
|
89
|
+
onFullscreenToggle,
|
|
90
|
+
linkDialogOpen,
|
|
91
|
+
onLinkDialogOpenChange,
|
|
74
92
|
}: FixedToolbarProps) {
|
|
75
93
|
const scrollerRef = useRef<HTMLDivElement>(null);
|
|
76
94
|
const { arrowLeft, arrowRight, arrowScrollDirRef, updateArrows } = useHorizontalScrollArrows();
|
|
77
95
|
|
|
78
96
|
useHorizontalScroll(scrollerRef);
|
|
97
|
+
// WAI-ARIA toolbar pattern: one tab stop, arrows move between controls
|
|
98
|
+
useRovingFocus(scrollerRef);
|
|
79
99
|
|
|
80
100
|
useEffect(() => {
|
|
81
101
|
const el = scrollerRef.current;
|
|
@@ -125,14 +145,20 @@ export function FixedToolbar({
|
|
|
125
145
|
visible={arrowLeft}
|
|
126
146
|
arrowScrollDirRef={arrowScrollDirRef}
|
|
127
147
|
/>
|
|
128
|
-
<div
|
|
148
|
+
<div
|
|
149
|
+
ref={scrollerRef}
|
|
150
|
+
className="toolbar-scroller"
|
|
151
|
+
role="toolbar"
|
|
152
|
+
aria-label={t("Formatting toolbar")}
|
|
153
|
+
aria-orientation="horizontal"
|
|
154
|
+
>
|
|
129
155
|
<XStack alignItems="center" gap="$1" paddingHorizontal="$2">
|
|
130
156
|
{/* History */}
|
|
131
157
|
<ToolbarGroup visible={visible("history")}>
|
|
132
158
|
<ToolbarButton
|
|
133
159
|
disabled={!state.canUndo}
|
|
134
160
|
onPress={() => executeCommand("undo")}
|
|
135
|
-
aria-label="Undo"
|
|
161
|
+
aria-label={t("Undo")}
|
|
136
162
|
tooltip={SHORTCUTS.undo}
|
|
137
163
|
>
|
|
138
164
|
<UndoIcon />
|
|
@@ -140,7 +166,7 @@ export function FixedToolbar({
|
|
|
140
166
|
<ToolbarButton
|
|
141
167
|
disabled={!state.canRedo}
|
|
142
168
|
onPress={() => executeCommand("redo")}
|
|
143
|
-
aria-label="Redo"
|
|
169
|
+
aria-label={t("Redo")}
|
|
144
170
|
tooltip={SHORTCUTS.redo}
|
|
145
171
|
>
|
|
146
172
|
<RedoIcon />
|
|
@@ -152,7 +178,7 @@ export function FixedToolbar({
|
|
|
152
178
|
<ToolbarButton
|
|
153
179
|
active={state.isBold}
|
|
154
180
|
onPress={() => executeCommand("bold")}
|
|
155
|
-
aria-label="Bold"
|
|
181
|
+
aria-label={t("Bold")}
|
|
156
182
|
tooltip={SHORTCUTS.bold}
|
|
157
183
|
>
|
|
158
184
|
<BoldIcon>B</BoldIcon>
|
|
@@ -160,7 +186,7 @@ export function FixedToolbar({
|
|
|
160
186
|
<ToolbarButton
|
|
161
187
|
active={state.isItalic}
|
|
162
188
|
onPress={() => executeCommand("italic")}
|
|
163
|
-
aria-label="Italic"
|
|
189
|
+
aria-label={t("Italic")}
|
|
164
190
|
tooltip={SHORTCUTS.italic}
|
|
165
191
|
>
|
|
166
192
|
<ItalicIcon>I</ItalicIcon>
|
|
@@ -168,7 +194,7 @@ export function FixedToolbar({
|
|
|
168
194
|
<ToolbarButton
|
|
169
195
|
active={state.isUnderline}
|
|
170
196
|
onPress={() => executeCommand("underline")}
|
|
171
|
-
aria-label="Underline"
|
|
197
|
+
aria-label={t("Underline")}
|
|
172
198
|
tooltip={SHORTCUTS.underline}
|
|
173
199
|
>
|
|
174
200
|
<UnderlineIcon>U</UnderlineIcon>
|
|
@@ -176,7 +202,7 @@ export function FixedToolbar({
|
|
|
176
202
|
<ToolbarButton
|
|
177
203
|
active={state.isStrike}
|
|
178
204
|
onPress={() => executeCommand("strike")}
|
|
179
|
-
aria-label="Strikethrough"
|
|
205
|
+
aria-label={t("Strikethrough")}
|
|
180
206
|
tooltip={SHORTCUTS.strike}
|
|
181
207
|
>
|
|
182
208
|
<StrikeIcon>S</StrikeIcon>
|
|
@@ -204,7 +230,7 @@ export function FixedToolbar({
|
|
|
204
230
|
<ToolbarButton
|
|
205
231
|
active={state.isBlockquote}
|
|
206
232
|
onPress={() => executeCommand("blockquote")}
|
|
207
|
-
aria-label="Blockquote"
|
|
233
|
+
aria-label={t("Blockquote")}
|
|
208
234
|
tooltip={SHORTCUTS.blockquote}
|
|
209
235
|
>
|
|
210
236
|
<BlockquoteIcon />
|
|
@@ -212,7 +238,7 @@ export function FixedToolbar({
|
|
|
212
238
|
<ToolbarButton
|
|
213
239
|
active={state.isCodeBlock}
|
|
214
240
|
onPress={() => executeCommand("codeBlock")}
|
|
215
|
-
aria-label="Code Block"
|
|
241
|
+
aria-label={t("Code Block")}
|
|
216
242
|
tooltip={SHORTCUTS.codeBlock}
|
|
217
243
|
>
|
|
218
244
|
<CodeBlockIcon />
|
|
@@ -221,7 +247,12 @@ export function FixedToolbar({
|
|
|
221
247
|
|
|
222
248
|
{/* Link */}
|
|
223
249
|
<ToolbarGroup visible={visible("link")}>
|
|
224
|
-
<LinkDialog
|
|
250
|
+
<LinkDialog
|
|
251
|
+
editorRef={editorRef}
|
|
252
|
+
state={state}
|
|
253
|
+
open={linkDialogOpen}
|
|
254
|
+
onOpenChange={onLinkDialogOpenChange}
|
|
255
|
+
/>
|
|
225
256
|
</ToolbarGroup>
|
|
226
257
|
|
|
227
258
|
{/* Image */}
|
|
@@ -247,6 +278,19 @@ export function FixedToolbar({
|
|
|
247
278
|
visible={arrowRight}
|
|
248
279
|
arrowScrollDirRef={arrowScrollDirRef}
|
|
249
280
|
/>
|
|
281
|
+
{onFullscreenToggle && (
|
|
282
|
+
<XStack alignItems="center" paddingHorizontal="$1">
|
|
283
|
+
<ToolbarButton
|
|
284
|
+
active={fullscreen}
|
|
285
|
+
onPress={onFullscreenToggle}
|
|
286
|
+
aria-label={t("Fullscreen")}
|
|
287
|
+
aria-pressed={!!fullscreen}
|
|
288
|
+
tooltip={fullscreen ? t("Exit fullscreen (Esc)") : t("Fullscreen")}
|
|
289
|
+
>
|
|
290
|
+
{fullscreen ? <CompressIcon /> : <ExpandIcon />}
|
|
291
|
+
</ToolbarButton>
|
|
292
|
+
</XStack>
|
|
293
|
+
)}
|
|
250
294
|
</ToolbarFrame>
|
|
251
295
|
);
|
|
252
296
|
}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* Heading picker dropdown for selecting heading levels
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { useState } from "react";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { useRef, useState } from "react";
|
|
6
|
+
import { DropdownMenu } from "@multiplatform.one/components";
|
|
7
|
+
import { Text } from "tamagui";
|
|
8
8
|
import type { EditorCommand, EditorState, RichEditorRef } from "../types";
|
|
9
|
-
import { DropdownMenuItemFrame } from "../styled";
|
|
10
9
|
import { ToolbarDropdownButton } from "./ToolbarButton";
|
|
10
|
+
import { t } from "../shared/t";
|
|
11
11
|
|
|
12
12
|
// ===========================================================================
|
|
13
13
|
// Types
|
|
@@ -28,7 +28,8 @@ export interface HeadingPickerProps {
|
|
|
28
28
|
|
|
29
29
|
interface HeadingOption {
|
|
30
30
|
label: string;
|
|
31
|
-
|
|
31
|
+
/** Lazy so t() resolves at render time, not module import */
|
|
32
|
+
description: () => string;
|
|
32
33
|
command: EditorCommand;
|
|
33
34
|
stateKey: keyof EditorState;
|
|
34
35
|
fontSize: string;
|
|
@@ -38,7 +39,7 @@ interface HeadingOption {
|
|
|
38
39
|
const HEADING_OPTIONS: HeadingOption[] = [
|
|
39
40
|
{
|
|
40
41
|
label: "H1",
|
|
41
|
-
description: "Heading 1",
|
|
42
|
+
description: () => t("Heading 1"),
|
|
42
43
|
command: "heading1",
|
|
43
44
|
stateKey: "isHeading1",
|
|
44
45
|
fontSize: "$5",
|
|
@@ -46,7 +47,7 @@ const HEADING_OPTIONS: HeadingOption[] = [
|
|
|
46
47
|
},
|
|
47
48
|
{
|
|
48
49
|
label: "H2",
|
|
49
|
-
description: "Heading 2",
|
|
50
|
+
description: () => t("Heading 2"),
|
|
50
51
|
command: "heading2",
|
|
51
52
|
stateKey: "isHeading2",
|
|
52
53
|
fontSize: "$4",
|
|
@@ -54,7 +55,7 @@ const HEADING_OPTIONS: HeadingOption[] = [
|
|
|
54
55
|
},
|
|
55
56
|
{
|
|
56
57
|
label: "H3",
|
|
57
|
-
description: "Heading 3",
|
|
58
|
+
description: () => t("Heading 3"),
|
|
58
59
|
command: "heading3",
|
|
59
60
|
stateKey: "isHeading3",
|
|
60
61
|
fontSize: "$3",
|
|
@@ -62,7 +63,7 @@ const HEADING_OPTIONS: HeadingOption[] = [
|
|
|
62
63
|
},
|
|
63
64
|
{
|
|
64
65
|
label: "H4",
|
|
65
|
-
description: "Heading 4",
|
|
66
|
+
description: () => t("Heading 4"),
|
|
66
67
|
command: "heading4",
|
|
67
68
|
stateKey: "isHeading4",
|
|
68
69
|
fontSize: "$2",
|
|
@@ -70,7 +71,7 @@ const HEADING_OPTIONS: HeadingOption[] = [
|
|
|
70
71
|
},
|
|
71
72
|
{
|
|
72
73
|
label: "H5",
|
|
73
|
-
description: "Heading 5",
|
|
74
|
+
description: () => t("Heading 5"),
|
|
74
75
|
command: "heading5",
|
|
75
76
|
stateKey: "isHeading5",
|
|
76
77
|
fontSize: "$1",
|
|
@@ -78,7 +79,7 @@ const HEADING_OPTIONS: HeadingOption[] = [
|
|
|
78
79
|
},
|
|
79
80
|
{
|
|
80
81
|
label: "H6",
|
|
81
|
-
description: "Heading 6",
|
|
82
|
+
description: () => t("Heading 6"),
|
|
82
83
|
command: "heading6",
|
|
83
84
|
stateKey: "isHeading6",
|
|
84
85
|
fontSize: "$1",
|
|
@@ -86,7 +87,7 @@ const HEADING_OPTIONS: HeadingOption[] = [
|
|
|
86
87
|
},
|
|
87
88
|
{
|
|
88
89
|
label: "P",
|
|
89
|
-
description: "Paragraph",
|
|
90
|
+
description: () => t("Paragraph"),
|
|
90
91
|
command: "paragraph",
|
|
91
92
|
stateKey: "isParagraph",
|
|
92
93
|
fontSize: "$3",
|
|
@@ -120,50 +121,57 @@ function isAnyHeadingActive(state: EditorState): boolean {
|
|
|
120
121
|
}
|
|
121
122
|
|
|
122
123
|
export function HeadingPicker({ editorRef, state, disabled }: HeadingPickerProps) {
|
|
123
|
-
const { knobProps } = useResolvedKnobs();
|
|
124
124
|
const [open, setOpen] = useState(false);
|
|
125
|
+
const selectedRef = useRef(false);
|
|
125
126
|
|
|
126
127
|
return (
|
|
127
|
-
<
|
|
128
|
-
<
|
|
128
|
+
<DropdownMenu open={open} onOpenChange={setOpen} placement="bottom-start">
|
|
129
|
+
<DropdownMenu.Trigger asChild>
|
|
129
130
|
<ToolbarDropdownButton
|
|
130
131
|
active={isAnyHeadingActive(state)}
|
|
131
132
|
disabled={disabled}
|
|
132
133
|
onPress={() => setOpen(true)}
|
|
133
|
-
aria-label="Heading"
|
|
134
|
+
aria-label={t("Heading")}
|
|
134
135
|
>
|
|
135
136
|
<Text fontWeight="600">{getActiveHeadingLabel(state)}</Text>
|
|
136
137
|
</ToolbarDropdownButton>
|
|
137
|
-
</
|
|
138
|
-
<
|
|
139
|
-
{
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
138
|
+
</DropdownMenu.Trigger>
|
|
139
|
+
<DropdownMenu.Content
|
|
140
|
+
minWidth={200}
|
|
141
|
+
// Toolbar menus must not steal focus back to the trigger on
|
|
142
|
+
// select-close: the user expects to keep typing, so focus returns
|
|
143
|
+
// to the editor. Escape still restores the trigger via the menu's
|
|
144
|
+
// own close().
|
|
145
|
+
onCloseAutoFocus={(event) => {
|
|
146
|
+
event.preventDefault();
|
|
147
|
+
if (selectedRef.current) {
|
|
148
|
+
selectedRef.current = false;
|
|
149
|
+
editorRef.current?.focus();
|
|
150
|
+
}
|
|
151
|
+
}}
|
|
147
152
|
>
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
153
|
+
{HEADING_OPTIONS.map((option) => {
|
|
154
|
+
const description = option.description();
|
|
155
|
+
return (
|
|
156
|
+
<DropdownMenu.Item
|
|
151
157
|
key={option.command}
|
|
152
|
-
|
|
153
|
-
|
|
158
|
+
closeOnSelect={false}
|
|
159
|
+
backgroundColor={state[option.stateKey] ? "$color4" : undefined}
|
|
160
|
+
aria-label={description}
|
|
161
|
+
onSelect={() => {
|
|
162
|
+
selectedRef.current = true;
|
|
154
163
|
editorRef.current?.executeCommand(option.command);
|
|
155
164
|
setOpen(false);
|
|
156
165
|
}}
|
|
157
|
-
aria-label={option.description}
|
|
158
166
|
>
|
|
159
167
|
<Text fontWeight={option.fontWeight as any} fontSize={option.fontSize as any}>
|
|
160
168
|
{option.label}
|
|
161
169
|
</Text>
|
|
162
|
-
<Text color="$color11">{
|
|
163
|
-
</
|
|
164
|
-
)
|
|
165
|
-
|
|
166
|
-
</
|
|
167
|
-
</
|
|
170
|
+
<Text color="$color11"> {description}</Text>
|
|
171
|
+
</DropdownMenu.Item>
|
|
172
|
+
);
|
|
173
|
+
})}
|
|
174
|
+
</DropdownMenu.Content>
|
|
175
|
+
</DropdownMenu>
|
|
168
176
|
);
|
|
169
177
|
}
|