From 12d3136343ca59941958c3de45bfe1483161eb49 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Mon, 1 Sep 2025 11:23:05 +0100 Subject: [PATCH 1/6] Tiptap RTE: Starter Kit separation - Created extensions for each Tiptap capability/extension - Deprecated native `StarterKit` Tiptap extension - Re-organized all Tiptap extensions into their own feature folders - Other minor amends/tweaks to improve accessibility --- src/Umbraco.Web.UI.Client/package-lock.json | 19 + .../src/assets/lang/en.ts | 1 + .../extensions/tiptap-anchor.extension.ts | 1 + .../tiptap/extensions/tiptap-div.extension.ts | 2 + .../extensions/tiptap-figcaption.extension.ts | 2 + .../extensions/tiptap-figure.extension.ts | 2 + ...tiptap-html-global-attributes.extension.ts | 2 + .../extensions/tiptap-span.extension.ts | 2 + .../tiptap-text-direction-extension.ts | 2 + .../tiptap-text-indent-extension.ts | 2 + .../tiptap-trailing-node.extension.ts | 2 + .../tiptap-umb-bubble-menu.extension.ts | 5 + .../tiptap-umb-embedded-media.extension.ts | 2 + .../extensions/tiptap-umb-image.extension.ts | 2 + .../extensions/tiptap-umb-link.extension.ts | 4 + .../extensions/tiptap-umb-table.extension.ts | 5 + .../src/external/tiptap/index.ts | 14 +- .../src/external/tiptap/package.json | 19 + .../menu-item/action/action-menu-item.api.ts | 5 + .../rte/components/rte-base.element.ts | 2 + .../components/anchor-modal/manifests.ts | 11 - .../cascading-menu-popover/index.ts | 1 + .../components/character-map/manifests.ts | 11 - .../src/packages/tiptap/components/index.ts | 4 +- .../input-tiptap/input-tiptap.element.ts | 21 +- .../packages/tiptap/components/manifests.ts | 4 - .../components/menu/tiptap-menu.element.ts | 4 +- .../tiptap-statusbar.element.ts | 2 +- .../toolbar/tiptap-toolbar-button.element.ts | 2 +- ...tap-toolbar-color-picker-button.element.ts | 13 +- .../toolbar/tiptap-toolbar-menu.element.ts | 15 +- .../tiptap-toolbar.element.ts | 2 +- .../src/packages/tiptap/constants.ts | 6 +- .../extensions/anchor/anchor.tiptap-api.ts | 23 + .../anchor.tiptap-toolbar-api.ts | 4 +- .../tiptap/extensions/anchor/constants.ts | 1 + .../tiptap/extensions/anchor/index.ts | 1 + .../tiptap/extensions/anchor/manifests.ts | 34 + .../anchor/modals}/anchor-modal.element.ts | 0 .../anchor/modals}/anchor-modal.token.ts | 0 .../anchor/modals}/constants.ts | 0 .../anchor/modals}/index.ts | 0 .../extensions/block/block.tipap-api.ts | 2 +- .../block/block.tiptap-toolbar-api.ts | 2 +- .../blockquote/blockquote.tiptap-api.ts | 15 + .../blockquote.tiptap-toolbar-api.ts | 2 +- .../tiptap/extensions/blockquote/manifests.ts | 26 + .../tiptap/extensions/bold/bold.tiptap-api.ts | 6 + .../bold.tiptap-toolbar-api.ts | 2 +- .../tiptap/extensions/bold/manifests.ts | 26 + .../bullet-list/bullet-list.tiptap-api.ts | 16 + .../bullet-list.tiptap-toolbar-api.ts | 2 +- .../extensions/bullet-list/manifests.ts | 26 + .../character-map.tiptap-toolbar-api.ts | 4 +- .../extensions/character-map/constants.ts | 1 + .../tiptap/extensions/character-map/index.ts | 1 + .../extensions/character-map/manifests.ts | 22 + .../modals}/character-map-modal.element.ts | 0 .../modals}/character-map-modal.token.ts | 0 .../character-map/modals}/constants.ts | 0 .../character-map/modals}/index.ts | 0 .../clear-formatting.tiptap-toolbar-api.ts | 2 +- .../extensions/clear-formatting/manifests.ts | 14 + .../code-block/code-block.tiptap-api.ts | 30 + .../code-block.tiptap-toolbar-api.ts | 2 +- .../tiptap/extensions/code-block/manifests.ts | 26 + .../packages/tiptap/extensions/constants.ts | 3 + .../tiptap/extensions/core/manifests.ts | 15 + .../core/rich-text-essentials.tiptap-api.ts | 111 +-- .../default-tiptap-toolbar-api.ts | 2 +- .../element-path.tiptap-statusbar-element.ts | 0 .../extensions/element-path/manifests.ts | 13 + .../embedded-media.tiptap-api.ts | 3 +- .../embedded-media.tiptap-toolbar-api.ts | 2 +- .../extensions/embedded-media/manifests.ts | 26 + .../{core => figure}/figure.tiptap-api.ts | 3 +- .../tiptap/extensions/figure/manifests.ts | 13 + .../font-family.tiptap-toolbar-api.ts | 2 +- .../extensions/font-family/manifests.ts | 35 + .../font-size.tiptap-toolbar-api.ts | 2 +- .../tiptap/extensions/font-size/manifests.ts | 39 + .../extensions/heading/heading.tiptap-api.ts | 19 + .../heading1.tiptap-toolbar-api.ts | 2 +- .../heading2.tiptap-toolbar-api.ts | 2 +- .../heading3.tiptap-toolbar-api.ts | 2 +- .../tiptap/extensions/heading/manifests.ts | 52 ++ .../horizontal-rule.tiptap-api.ts | 6 + .../horizontal-rule.tiptap-toolbar-api.ts | 2 +- .../extensions/horizontal-rule/manifests.ts | 25 + .../html-attr-class.tiptap-api.ts | 95 +++ .../extensions/html-attr-class/manifests.ts | 13 + .../html-attr-dataset.tiptap-api.ts | 115 +++ .../extensions/html-attr-dataset/manifests.ts | 13 + .../html-attr-id/html-attr-id.tiptap-api.ts | 93 +++ .../extensions/html-attr-id/manifests.ts | 13 + .../html-attr-style.tiptap-api.ts | 97 +++ .../extensions/html-attr-style/manifests.ts | 13 + .../html-tag-div/html-tag-div.tiptap-api.ts | 7 + .../extensions/html-tag-div/manifests.ts | 13 + .../html-tag-span/html-tag-span.tiptap-api.ts | 7 + .../extensions/html-tag-span/manifests.ts | 13 + .../{core => image}/image.tiptap-api.ts | 3 +- .../tiptap/extensions/image/manifests.ts | 13 + .../src/packages/tiptap/extensions/index.ts | 6 +- .../extensions/italic/italic.tiptap-api.ts | 7 + .../italic.tiptap-toolbar-api.ts | 2 +- .../tiptap/extensions/italic/manifests.ts | 26 + .../{core => link}/link.tiptap-api.ts | 3 +- .../link.tiptap-toolbar-api.ts | 2 +- .../tiptap/extensions/link/manifests.ts | 40 + .../unlink.tiptap-toolbar-api.ts | 2 +- .../packages/tiptap/extensions/manifests.ts | 762 ++---------------- .../extensions/media-picker/manifests.ts | 15 + .../media-picker.tiptap-toolbar-api.ts | 2 +- .../extensions/media-upload/manifests.ts | 13 + .../media-upload.tiptap-api.ts | 2 +- .../extensions/ordered-list/manifests.ts | 26 + .../ordered-list/ordered-list.tiptap-api.ts | 16 + .../ordered-list.tiptap-toolbar-api.ts | 2 +- .../tiptap/extensions/strike/manifests.ts | 26 + .../extensions/strike/strike.tiptap-api.ts | 6 + .../strike.tiptap-toolbar-api.ts | 2 +- .../extensions/style-menu/style-menu.kind.ts | 12 + .../style-menu.tiptap-toolbar-api.ts | 2 +- .../style-select.tiptap-toolbar-api.ts | 2 +- .../tiptap/extensions/subscript/manifests.ts | 27 + .../subscript.tiptap-api.ts | 2 +- .../subscript.tiptap-toolbar-api.ts | 2 +- .../extensions/superscript/manifests.ts | 27 + .../superscript.tiptap-api.ts | 2 +- .../superscript.tiptap-toolbar-api.ts | 2 +- .../table/actions/table-properties.action.ts | 2 +- .../tiptap/extensions/table/constants.ts | 1 + .../packages/tiptap/extensions/table/index.ts | 2 +- .../tiptap/extensions/table/manifests.ts | 4 +- .../table/{components => modals}/constants.ts | 0 .../tiptap/extensions/table/modals/index.ts | 1 + .../table-properties-modal.element.ts | 0 .../table-properties-modal.token.ts | 0 .../extensions/table/table.tiptap-api.ts | 3 +- .../table/table.tiptap-toolbar-api.ts | 6 +- .../tiptap/extensions/text-align/manifests.ts | 65 ++ .../text-align-center.tiptap-toolbar-api.ts | 2 +- .../text-align-justify.tiptap-toolbar-api.ts | 2 +- .../text-align-left.tiptap-toolbar-api.ts | 2 +- .../text-align-right.tiptap-toolbar-api.ts | 2 +- .../text-align.tiptap-api.ts | 2 +- .../tiptap/extensions/text-color/manifests.ts | 28 + ...ext-color-background.tiptap-toolbar-api.ts | 2 +- ...ext-color-foreground.tiptap-toolbar-api.ts | 2 +- .../extensions/text-direction/manifests.ts | 39 + .../text-direction-ltr.tiptap-toolbar-api.ts | 2 +- .../text-direction-rtl.tiptap-toolbar-api.ts | 2 +- .../text-direction.tiptap-api.ts | 3 +- .../extensions/text-indent/manifests.ts | 39 + .../text-indent.tiptap-api.ts | 3 +- .../text-indent.tiptap-toolbar-api.ts | 2 +- .../text-outdent.tiptap-toolbar-api.ts | 2 +- .../extensions/tiptap-extension-api-base.ts | 35 + .../extensions/tiptap-toolbar-button.kind.ts | 11 + ...tiptap-toolbar-color-picker-button.kind.ts | 11 + ....ts => tiptap-toolbar-element-api-base.ts} | 42 +- .../extensions/tiptap-toolbar-menu.kind.ts | 11 + .../extensions/trailing-node/manifests.ts | 13 + .../trailing-node/trailing-node.tiptap-api.ts | 7 + .../tiptap/extensions/underline/manifests.ts | 27 + .../underline.tiptap-api.ts | 2 +- .../underline.tiptap-toolbar-api.ts | 2 +- .../tiptap/extensions/undo-redo/manifests.ts | 28 + .../redo.tiptap-toolbar-api.ts | 2 +- .../undo.tiptap-toolbar-api.ts | 2 +- .../extensions/view-source/manifests.ts | 14 + .../source-editor.tiptap-toolbar-api.ts | 2 +- .../{statusbar => word-count}/manifests.ts | 50 +- .../word-count.tiptap-api.ts | 2 +- .../word-count.tiptap-statusbar-element.ts | 0 .../src/packages/tiptap/manifests.ts | 7 +- .../tiptap/property-editors/constants.ts | 2 + .../extensions-configuration/manifests.ts | 15 + ...tiptap-extensions-configuration.element.ts | 13 +- .../tiptap/property-editors/manifests.ts | 13 +- .../statusbar-configuration/manifests.ts | 15 + ...-tiptap-statusbar-configuration.element.ts | 10 +- ...p-statusbar-configuration.context-token.ts | 0 .../tiptap-statusbar-configuration.context.ts | 2 +- .../{tiptap => tiptap-rte}/manifests.ts | 33 - .../property-editor-ui-tiptap.element.ts | 1 + .../property-editor-ui-tiptap.stories.ts | 6 + .../property-editor-ui-tiptap.test.ts | 0 .../property-editors/tiptap/constants.ts | 2 - .../toolbar-configuration/manifests.ts | 15 + ...ui-tiptap-toolbar-configuration.element.ts | 10 +- ...tap-toolbar-configuration.context-token.ts | 0 .../tiptap-toolbar-configuration.context.ts | 2 +- ...tap-toolbar-group-configuration.element.ts | 2 +- .../property-editors/{tiptap => }/types.ts | 0 196 files changed, 2012 insertions(+), 1021 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/components/anchor-modal/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/components/cascading-menu-popover/index.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/components/character-map/manifests.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/components/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/components/{input-tiptap => statusbar}/tiptap-statusbar.element.ts (98%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/components/{input-tiptap => toolbar}/tiptap-toolbar.element.ts (98%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/anchor/anchor.tiptap-api.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => anchor}/anchor.tiptap-toolbar-api.ts (85%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/anchor/constants.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/anchor/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/anchor/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/{components/anchor-modal => extensions/anchor/modals}/anchor-modal.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/{components/anchor-modal => extensions/anchor/modals}/anchor-modal.token.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/{components/anchor-modal => extensions/anchor/modals}/constants.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/{components/anchor-modal => extensions/anchor/modals}/index.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/blockquote/blockquote.tiptap-api.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => blockquote}/blockquote.tiptap-toolbar-api.ts (75%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/blockquote/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/bold/bold.tiptap-api.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => bold}/bold.tiptap-toolbar-api.ts (74%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/bold/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/bullet-list/bullet-list.tiptap-api.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => bullet-list}/bullet-list.tiptap-toolbar-api.ts (75%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/bullet-list/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => character-map}/character-map.tiptap-toolbar-api.ts (81%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/character-map/constants.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/character-map/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/character-map/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/{components/character-map => extensions/character-map/modals}/character-map-modal.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/{components/character-map => extensions/character-map/modals}/character-map-modal.token.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/{components/character-map => extensions/character-map/modals}/constants.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/{components/character-map => extensions/character-map/modals}/index.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => clear-formatting}/clear-formatting.tiptap-toolbar-api.ts (78%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/code-block/code-block.tiptap-api.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => code-block}/code-block.tiptap-toolbar-api.ts (78%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/code-block/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/constants.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/core/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/{components/toolbar => extensions}/default-tiptap-toolbar-api.ts (60%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{statusbar => element-path}/element-path.tiptap-statusbar-element.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/element-path/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{core => embedded-media}/embedded-media.tiptap-api.ts (84%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => embedded-media}/embedded-media.tiptap-toolbar-api.ts (92%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/embedded-media/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{core => figure}/figure.tiptap-api.ts (60%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/figure/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => font-family}/font-family.tiptap-toolbar-api.ts (87%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/font-family/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => font-size}/font-size.tiptap-toolbar-api.ts (87%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/font-size/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/heading/heading.tiptap-api.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => heading}/heading1.tiptap-toolbar-api.ts (81%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => heading}/heading2.tiptap-toolbar-api.ts (81%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => heading}/heading3.tiptap-toolbar-api.ts (81%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/heading/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/horizontal-rule/horizontal-rule.tiptap-api.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => horizontal-rule}/horizontal-rule.tiptap-toolbar-api.ts (75%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/horizontal-rule/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-class/html-attr-class.tiptap-api.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-class/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-dataset/html-attr-dataset.tiptap-api.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-dataset/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-id/html-attr-id.tiptap-api.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-id/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-style/html-attr-style.tiptap-api.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-style/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-tag-div/html-tag-div.tiptap-api.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-tag-div/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-tag-span/html-tag-span.tiptap-api.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-tag-span/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{core => image}/image.tiptap-api.ts (81%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/image/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/italic/italic.tiptap-api.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => italic}/italic.tiptap-toolbar-api.ts (74%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/italic/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{core => link}/link.tiptap-api.ts (62%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => link}/link.tiptap-toolbar-api.ts (98%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/link/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => link}/unlink.tiptap-toolbar-api.ts (82%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/media-picker/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => media-picker}/media-picker.tiptap-toolbar-api.ts (98%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/media-upload/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{core => media-upload}/media-upload.tiptap-api.ts (98%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/ordered-list/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/ordered-list/ordered-list.tiptap-api.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => ordered-list}/ordered-list.tiptap-toolbar-api.ts (82%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/strike/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/strike/strike.tiptap-api.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => strike}/strike.tiptap-toolbar-api.ts (74%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/style-menu/style-menu.kind.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/{components/toolbar => extensions/style-menu}/style-menu.tiptap-toolbar-api.ts (96%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/subscript/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{core => subscript}/subscript.tiptap-api.ts (71%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => subscript}/subscript.tiptap-toolbar-api.ts (75%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/superscript/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{core => superscript}/superscript.tiptap-api.ts (72%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => superscript}/superscript.tiptap-toolbar-api.ts (75%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/table/constants.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/table/{components => modals}/constants.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/table/modals/index.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/table/{components => modals}/table-properties-modal.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/table/{components => modals}/table-properties-modal.token.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-align/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => text-align}/text-align-center.tiptap-toolbar-api.ts (84%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => text-align}/text-align-justify.tiptap-toolbar-api.ts (84%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => text-align}/text-align-left.tiptap-toolbar-api.ts (84%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => text-align}/text-align-right.tiptap-toolbar-api.ts (84%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{core => text-align}/text-align.tiptap-api.ts (80%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-color/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => text-color}/text-color-background.tiptap-toolbar-api.ts (79%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => text-color}/text-color-foreground.tiptap-toolbar-api.ts (78%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-direction/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => text-direction}/text-direction-ltr.tiptap-toolbar-api.ts (85%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => text-direction}/text-direction-rtl.tiptap-toolbar-api.ts (84%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{core => text-direction}/text-direction.tiptap-api.ts (69%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-indent/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{core => text-indent}/text-indent.tiptap-api.ts (69%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => text-indent}/text-indent.tiptap-toolbar-api.ts (74%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => text-indent}/text-outdent.tiptap-toolbar-api.ts (74%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-extension-api-base.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-button.kind.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-color-picker-button.kind.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{base.ts => tiptap-toolbar-element-api-base.ts} (66%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-menu.kind.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/trailing-node/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/trailing-node/trailing-node.tiptap-api.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/underline/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{core => underline}/underline.tiptap-api.ts (72%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => underline}/underline.tiptap-toolbar-api.ts (75%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/undo-redo/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => undo-redo}/redo.tiptap-toolbar-api.ts (81%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => undo-redo}/undo.tiptap-toolbar-api.ts (81%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/view-source/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{toolbar => view-source}/source-editor.tiptap-toolbar-api.ts (90%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{statusbar => word-count}/manifests.ts (57%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{core => word-count}/word-count.tiptap-api.ts (80%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/{statusbar => word-count}/word-count.tiptap-statusbar-element.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/constants.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/extensions-configuration/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/{tiptap/components => extensions-configuration}/property-editor-ui-tiptap-extensions-configuration.element.ts (94%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/statusbar-configuration/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/{tiptap/components => statusbar-configuration}/property-editor-ui-tiptap-statusbar-configuration.element.ts (97%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/{tiptap/contexts => statusbar-configuration}/tiptap-statusbar-configuration.context-token.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/{tiptap/contexts => statusbar-configuration}/tiptap-statusbar-configuration.context.ts (98%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/{tiptap => tiptap-rte}/manifests.ts (75%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/{tiptap => tiptap-rte}/property-editor-ui-tiptap.element.ts (99%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/{tiptap => tiptap-rte}/property-editor-ui-tiptap.stories.ts (93%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/{tiptap => tiptap-rte}/property-editor-ui-tiptap.test.ts (100%) delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/tiptap/constants.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/toolbar-configuration/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/{tiptap/components => toolbar-configuration}/property-editor-ui-tiptap-toolbar-configuration.element.ts (97%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/{tiptap/contexts => toolbar-configuration}/tiptap-toolbar-configuration.context-token.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/{tiptap/contexts => toolbar-configuration}/tiptap-toolbar-configuration.context.ts (99%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/{tiptap/components => toolbar-configuration}/tiptap-toolbar-group-configuration.element.ts (97%) rename src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/{tiptap => }/types.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 1e44328da800..d3ed09bef38a 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -17064,17 +17064,36 @@ "name": "@umbraco-backoffice/external-tiptap", "dependencies": { "@tiptap/core": "2.26.1", + "@tiptap/extension-blockquote": "2.26.1", + "@tiptap/extension-bold": "2.26.1", + "@tiptap/extension-bullet-list": "2.26.1", "@tiptap/extension-character-count": "2.26.1", + "@tiptap/extension-code": "2.26.1", + "@tiptap/extension-code-block": "2.26.1", + "@tiptap/extension-document": "2.26.1", + "@tiptap/extension-dropcursor": "2.26.1", + "@tiptap/extension-gapcursor": "2.26.1", + "@tiptap/extension-hard-break": "2.26.1", + "@tiptap/extension-heading": "2.26.1", + "@tiptap/extension-history": "2.26.1", + "@tiptap/extension-horizontal-rule": "2.26.1", "@tiptap/extension-image": "2.26.1", + "@tiptap/extension-italic": "2.26.1", "@tiptap/extension-link": "2.26.1", + "@tiptap/extension-list-item": "2.26.1", + "@tiptap/extension-ordered-list": "2.26.1", + "@tiptap/extension-paragraph": "2.26.1", "@tiptap/extension-placeholder": "2.26.1", + "@tiptap/extension-strike": "2.26.1", "@tiptap/extension-subscript": "2.26.1", "@tiptap/extension-superscript": "2.26.1", "@tiptap/extension-table": "2.26.1", "@tiptap/extension-table-cell": "2.26.1", "@tiptap/extension-table-header": "2.26.1", "@tiptap/extension-table-row": "2.26.1", + "@tiptap/extension-text": "2.26.1", "@tiptap/extension-text-align": "2.26.1", + "@tiptap/extension-text-style": "2.26.1", "@tiptap/extension-underline": "2.26.1", "@tiptap/pm": "2.26.1", "@tiptap/starter-kit": "2.26.1" diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/en.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/en.ts index d4806a5f1bad..4fd053f1522c 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/en.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/en.ts @@ -2792,6 +2792,7 @@ export default { config_statusbar: 'Statusbar', config_toolbar: 'Toolbar', extGroup_formatting: 'Text formatting', + extGroup_html: 'HTML', extGroup_interactive: 'Interactive elements', extGroup_media: 'Embeds and media', extGroup_structure: 'Content structure', diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-anchor.extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-anchor.extension.ts index 12c5a2b0ecef..612dc494e508 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-anchor.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-anchor.extension.ts @@ -1,5 +1,6 @@ import { Node, mergeAttributes } from '@tiptap/core'; +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const Anchor = Node.create({ name: 'anchor', diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-div.extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-div.extension.ts index e7855d428879..2419415cbdfb 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-div.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-div.extension.ts @@ -1,5 +1,6 @@ import { Node, mergeAttributes } from '@tiptap/core'; +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export interface DivOptions { /** * HTML attributes to add to the element. @@ -9,6 +10,7 @@ export interface DivOptions { HTMLAttributes: Record; } +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const Div = Node.create({ name: 'div', diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-figcaption.extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-figcaption.extension.ts index ea2f2ab83e7f..5e7ccb6acea1 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-figcaption.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-figcaption.extension.ts @@ -1,5 +1,6 @@ import { Node } from '@tiptap/core'; +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export interface FigcaptionOptions { /** * HTML attributes to add to the image element. @@ -9,6 +10,7 @@ export interface FigcaptionOptions { HTMLAttributes: Record; } +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const Figcaption = Node.create({ name: 'figcaption', diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-figure.extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-figure.extension.ts index 49a89606dfab..e91cac80482d 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-figure.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-figure.extension.ts @@ -1,5 +1,6 @@ import { mergeAttributes, Node } from '@tiptap/core'; +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export interface FigureOptions { /** * HTML attributes to add to the image element. @@ -9,6 +10,7 @@ export interface FigureOptions { HTMLAttributes: Record; } +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const Figure = Node.create({ name: 'figure', group: 'block', diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-html-global-attributes.extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-html-global-attributes.extension.ts index 69c0cbdd1f89..435b4256fab2 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-html-global-attributes.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-html-global-attributes.extension.ts @@ -10,6 +10,7 @@ function camelCaseToKebabCase(str: string): string { return str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase()); } +/** @deprecated No longer used internally. This will be removed in Umbraco 18. [LK] */ export interface HtmlGlobalAttributesOptions { /** * The types where the text align attribute can be applied. @@ -19,6 +20,7 @@ export interface HtmlGlobalAttributesOptions { types: Array; } +/** @deprecated No longer used internally. This will be removed in Umbraco 18. [LK] */ export const HtmlGlobalAttributes = Extension.create({ name: 'htmlGlobalAttributes', diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-span.extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-span.extension.ts index e0adabf8af71..7f59b7c245d4 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-span.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-span.extension.ts @@ -1,5 +1,6 @@ import { Mark, mergeAttributes } from '@tiptap/core'; +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export interface SpanOptions { /** * HTML attributes to add to the span element. @@ -34,6 +35,7 @@ function serializeStyles(items: Record): string { ); } +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const Span = Mark.create({ name: 'span', diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-text-direction-extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-text-direction-extension.ts index 914d151cd1f2..299b87f88741 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-text-direction-extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-text-direction-extension.ts @@ -1,10 +1,12 @@ import { Extension } from '@tiptap/core'; +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export interface TextDirectionOptions { directions: Array<'auto' | 'ltr' | 'rtl'>; types: Array; } +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const TextDirection = Extension.create({ name: 'textDirection', diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-text-indent-extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-text-indent-extension.ts index 7df5d4043e2b..a44ed2334207 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-text-indent-extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-text-indent-extension.ts @@ -11,12 +11,14 @@ import type { EditorState, Transaction } from '@tiptap/pm/state'; import { Extension } from '@tiptap/core'; import { AllSelection, TextSelection } from '@tiptap/pm/state'; +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export interface TextIndentOptions { minLevel: number; maxLevel: number; types: Array; } +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const TextIndent = Extension.create({ name: 'textIndent', diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-trailing-node.extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-trailing-node.extension.ts index f76956fa9013..32a1cf045238 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-trailing-node.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-trailing-node.extension.ts @@ -13,11 +13,13 @@ function nodeEqualsType({ types, node }) { return (Array.isArray(types) && types.includes(node.type)) || node.type === types; } +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export interface TrailingNodeOptions { node: string; notAfter: string[]; } +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const TrailingNode = Extension.create({ name: 'trailingNode', diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-bubble-menu.extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-bubble-menu.extension.ts index f2b080c42ef1..9fb93d02eff6 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-bubble-menu.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-bubble-menu.extension.ts @@ -5,11 +5,13 @@ import { EditorState, Plugin, PluginKey } from '@tiptap/pm/state'; import { EditorView } from '@tiptap/pm/view'; import type { PluginView } from '@tiptap/pm/state'; +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export interface UmbTiptapBubbleMenuElement extends HTMLElement { editor?: Editor; menuAlias?: string; } +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export type UmbBubbleMenuPluginProps = { unique: string; placement?: UUIPopoverContainerElement['placement']; @@ -20,8 +22,10 @@ export type UmbBubbleMenuPluginProps = { | null; }; +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export type UmbBubbleMenuOptions = UmbBubbleMenuPluginProps; +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const UmbBubbleMenu = Extension.create({ name: 'umbBubbleMenu', @@ -104,6 +108,7 @@ class UmbBubbleMenuPluginView implements PluginView { } } +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const UmbBubbleMenuPlugin = (editor: Editor, props: UmbBubbleMenuPluginProps) => { return new Plugin({ view(editorView) { diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-embedded-media.extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-embedded-media.extension.ts index daecec24689c..c494554cfe0d 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-embedded-media.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-embedded-media.extension.ts @@ -1,9 +1,11 @@ import { mergeAttributes, Node } from '@tiptap/core'; +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export interface UmbEmbeddedMediaOptions { inline: boolean; } +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const umbEmbeddedMedia = Node.create({ name: 'umbEmbeddedMedia', group() { diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-image.extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-image.extension.ts index 84acd5b11d6c..b70feb2f8d41 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-image.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-image.extension.ts @@ -1,5 +1,6 @@ import Image from '@tiptap/extension-image'; +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export interface UmbImageAttributes { src: string; alt?: string; @@ -13,6 +14,7 @@ export interface UmbImageAttributes { 'data-udi'?: string; } +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const UmbImage = Image.extend({ addAttributes() { return { diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-link.extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-link.extension.ts index 9ba943399359..2104ef0d8543 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-link.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-link.extension.ts @@ -1,5 +1,6 @@ import Link from '@tiptap/extension-link'; +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const UmbLink = Link.extend({ name: 'umbLink', @@ -12,6 +13,9 @@ export const UmbLink = Link.extend({ }; }, + // TODO: [LK] Look to use a NodeView to render the link + // https://tiptap.dev/docs/editor/extensions/custom-extensions/node-views/javascript + addOptions() { return { ...this.parent?.(), diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-table.extension.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-table.extension.ts index df5ec8a8fb30..5273850e9a0b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-table.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/extensions/tiptap-umb-table.extension.ts @@ -12,6 +12,7 @@ import type { Rect } from '@tiptap/pm/tables'; // NOTE: Custom TableView, to allow for custom styles to be applied to the element. [LK] // ref: https://github.com/ueberdosis/tiptap/blob/v2.11.5/packages/extension-table/src/TableView.ts +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export class UmbTableView extends TableView { constructor(node: ProseMirrorNode, cellMinWidth: number) { super(node, cellMinWidth); @@ -34,13 +35,16 @@ export class UmbTableView extends TableView { } } +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const UmbTable = Table.configure({ resizable: true, View: UmbTableView }); +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const UmbTableRow = TableRow.extend({ allowGapCursor: false, content: '(tableCell | tableHeader)*', }); +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const UmbTableHeader = TableHeader.extend({ addAttributes() { return { @@ -122,6 +126,7 @@ export const UmbTableHeader = TableHeader.extend({ }, }); +/** @deprecated This will be relocated in Umbraco 18 to the "@umbraco-cms/backoffice/tiptap" module. [LK] */ export const UmbTableCell = TableCell.extend({ addAttributes() { return { diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/index.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/index.ts index 9bb1aedd2892..5bfae4ffc804 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/index.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/index.ts @@ -1,8 +1,13 @@ // REQUIRED EXTENSIONS export * from '@tiptap/core'; -export { StarterKit } from '@tiptap/starter-kit'; +export { Document } from '@tiptap/extension-document'; +export { Dropcursor } from '@tiptap/extension-dropcursor'; +export { Gapcursor } from '@tiptap/extension-gapcursor'; +export { HardBreak } from '@tiptap/extension-hard-break'; +export { History } from '@tiptap/extension-history'; +export { Paragraph } from '@tiptap/extension-paragraph'; export { Placeholder } from '@tiptap/extension-placeholder'; -export { TextStyle } from '@tiptap/extension-text-style'; +export { Text } from '@tiptap/extension-text'; // OPTIONAL EXTENSIONS export { Blockquote } from '@tiptap/extension-blockquote'; @@ -26,9 +31,14 @@ export { TableCell } from '@tiptap/extension-table-cell'; export { TableHeader } from '@tiptap/extension-table-header'; export { TableRow } from '@tiptap/extension-table-row'; export { TextAlign } from '@tiptap/extension-text-align'; +export { TextStyle } from '@tiptap/extension-text-style'; export { Underline } from '@tiptap/extension-underline'; +/** @deprecated No longer used internally. This will be removed in Umbraco 18. [LK] */ +export { StarterKit } from '@tiptap/starter-kit'; + // CUSTOM EXTENSIONS +// TODO: Move the Umbraco-specific (native) extensions to the "tiptap" package in v18. [LK] export * from './extensions/tiptap-anchor.extension.js'; export * from './extensions/tiptap-div.extension.js'; export * from './extensions/tiptap-figcaption.extension.js'; diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/package.json b/src/Umbraco.Web.UI.Client/src/external/tiptap/package.json index 11938ce31a57..61a34ee1c9f5 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tiptap/package.json +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/package.json @@ -7,10 +7,27 @@ }, "dependencies": { "@tiptap/core": "2.26.1", + "@tiptap/extension-blockquote": "2.26.1", + "@tiptap/extension-bold": "2.26.1", + "@tiptap/extension-bullet-list": "2.26.1", "@tiptap/extension-character-count": "2.26.1", + "@tiptap/extension-code-block": "2.26.1", + "@tiptap/extension-code": "2.26.1", + "@tiptap/extension-document": "2.26.1", + "@tiptap/extension-dropcursor": "2.26.1", + "@tiptap/extension-gapcursor": "2.26.1", + "@tiptap/extension-hard-break": "2.26.1", + "@tiptap/extension-heading": "2.26.1", + "@tiptap/extension-history": "2.26.1", + "@tiptap/extension-horizontal-rule": "2.26.1", "@tiptap/extension-image": "2.26.1", + "@tiptap/extension-italic": "2.26.1", "@tiptap/extension-link": "2.26.1", + "@tiptap/extension-list-item": "2.26.1", + "@tiptap/extension-ordered-list": "2.26.1", + "@tiptap/extension-paragraph": "2.26.1", "@tiptap/extension-placeholder": "2.26.1", + "@tiptap/extension-strike": "2.26.1", "@tiptap/extension-subscript": "2.26.1", "@tiptap/extension-superscript": "2.26.1", "@tiptap/extension-table": "2.26.1", @@ -18,6 +35,8 @@ "@tiptap/extension-table-header": "2.26.1", "@tiptap/extension-table-row": "2.26.1", "@tiptap/extension-text-align": "2.26.1", + "@tiptap/extension-text-style": "2.26.1", + "@tiptap/extension-text": "2.26.1", "@tiptap/extension-underline": "2.26.1", "@tiptap/pm": "2.26.1", "@tiptap/starter-kit": "2.26.1" diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/menu/components/menu-item/action/action-menu-item.api.ts b/src/Umbraco.Web.UI.Client/src/packages/core/menu/components/menu-item/action/action-menu-item.api.ts index fc355cb98e8f..ea8daf334449 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/menu/components/menu-item/action/action-menu-item.api.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/menu/components/menu-item/action/action-menu-item.api.ts @@ -5,6 +5,11 @@ export abstract class UmbMenuItemActionApiBase extends UmbActionBase> implements UmbMenuItemActionApi { + /** + * By specifying the `execute` method, the action will act as a button. + * @abstract + * @returns {Promise} + */ public execute(): Promise { return Promise.resolve(); } diff --git a/src/Umbraco.Web.UI.Client/src/packages/rte/components/rte-base.element.ts b/src/Umbraco.Web.UI.Client/src/packages/rte/components/rte-base.element.ts index de1c417a04fd..ef841b82fcd0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/rte/components/rte-base.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/rte/components/rte-base.element.ts @@ -34,6 +34,8 @@ export abstract class UmbPropertyEditorUiRteElementBase extends UmbFormControlMixin(UmbLitElement) implements UmbPropertyEditorUiElement { + public name?: string; + public set config(config: UmbPropertyEditorConfigCollection | undefined) { if (!config) return; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/anchor-modal/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/anchor-modal/manifests.ts deleted file mode 100644 index 99bbb4a2b52d..000000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/anchor-modal/manifests.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { UMB_TIPTAP_ANCHOR_MODAL_ALIAS } from './constants.js'; -import type { ManifestModal } from '@umbraco-cms/backoffice/modal'; - -export const manifests: Array = [ - { - type: 'modal', - alias: UMB_TIPTAP_ANCHOR_MODAL_ALIAS, - name: 'Tiptap Anchor Modal', - element: () => import('./anchor-modal.element.js'), - }, -]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/cascading-menu-popover/index.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/cascading-menu-popover/index.ts new file mode 100644 index 000000000000..ec606adf12fa --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/cascading-menu-popover/index.ts @@ -0,0 +1 @@ +export * from './cascading-menu-popover.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/character-map/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/character-map/manifests.ts deleted file mode 100644 index a238e84eb371..000000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/character-map/manifests.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { UMB_TIPTAP_CHARACTER_MAP_MODAL_ALIAS } from './constants.js'; -import type { ManifestModal } from '@umbraco-cms/backoffice/modal'; - -export const manifests: Array = [ - { - type: 'modal', - alias: UMB_TIPTAP_CHARACTER_MAP_MODAL_ALIAS, - name: 'Character Map Modal', - element: () => import('./character-map-modal.element.js'), - }, -]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/index.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/index.ts index 56491b08d4aa..cc425ff2d0c8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/index.ts @@ -1,5 +1,3 @@ +export * from './cascading-menu-popover/index.js'; export * from './input-tiptap/index.js'; -export * from './anchor-modal/index.js'; -export * from './cascading-menu-popover/cascading-menu-popover.element.js'; -export * from './character-map/index.js'; export * from './menu/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/input-tiptap/input-tiptap.element.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/input-tiptap/input-tiptap.element.ts index 0bb9fdbc66fe..03ef568b0939 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/input-tiptap/input-tiptap.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/input-tiptap/input-tiptap.element.ts @@ -21,8 +21,8 @@ import type { CSSResultGroup } from '@umbraco-cms/backoffice/external/lit'; import type { Extensions } from '@umbraco-cms/backoffice/external/tiptap'; import type { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/property-editor'; -import './tiptap-toolbar.element.js'; -import './tiptap-statusbar.element.js'; +import '../toolbar/tiptap-toolbar.element.js'; +import '../statusbar/tiptap-statusbar.element.js'; const TIPTAP_CORE_EXTENSION_ALIAS = 'Umb.Tiptap.RichTextEssentials'; @@ -56,6 +56,9 @@ export class UmbInputTiptapElement extends UmbFormControlMixin stylesheet, - (stylesheet) => html``, + (stylesheet) => html``, )}