diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/CLAUDE.md b/src/Umbraco.Web.UI.Client/src/packages/tiptap/CLAUDE.md index 22f13f02bb20..1c0d37e19af7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/CLAUDE.md +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/CLAUDE.md @@ -143,13 +143,15 @@ export default class UmbTiptapBoldToolbarApi extends UmbTiptapToolbarElementApiB } } -// manifests.ts +// manifests.ts — uses dynamic-import thunks pointing at the SHARED boundary file, +// so manifest registration stays slim and the implementation code is only fetched +// the first time `umb-input-tiptap` actually mounts. export const manifests: Array = [ { type: 'tiptapExtension', alias: 'Umb.Tiptap.Bold', name: 'Bold Tiptap Extension', - api: () => import('./bold.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapBoldExtensionApi })), meta: { icon: 'icon-bold', label: 'Bold', @@ -161,7 +163,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Bold', name: 'Bold Tiptap Toolbar Extension', - api: () => import('./bold.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapBoldToolbarApi })), forExtensions: ['Umb.Tiptap.Bold'], meta: { alias: 'bold', @@ -172,6 +174,14 @@ export const manifests: Array = [ ]; ``` +To register the new extension's API class, add a re-export line to `extensions/extension-apis.bundle.ts` (the shared boundary file). + +> **Why the indirection?** The data-type configuration UIs (`extensions-configuration`, `toolbar-configuration`, `statusbar-configuration`) enumerate the extension registry at boot to populate their pickers — they need every extension's manifest metadata (alias, label, icon, group). If the manifest were a static `api: SomeClass`, the implementation bytes would ship with the manifest registration and load on every workspace, including ones without an RTE. +> +> Routing all first-party API/element references through one shared bundle gives us the best of both worlds: manifests register at boot (so the config UIs work), but the implementation code lives in a single chunk that's only fetched the first time `umb-input-tiptap` actually renders. The Tiptap toolbar/statusbar/modal elements piggyback on the same chunk, so an RTE-bearing workspace pays one round-trip for everything Tiptap. +> +> External (plugin-supplied) Tiptap extensions may still use the per-file `() => import('./my-thing.api.js')` form when they want their API code in a separately fetched chunk — `loadManifestApi` accepts both forms. + ### Extension with Custom Styles Override `getStyles()` to inject CSS into the editor's Shadow DOM: diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/clipboard/block/copy/manifest.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/clipboard/block/copy/manifest.ts index 94b59405fc7f..a1a11c24334c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/clipboard/block/copy/manifest.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/clipboard/block/copy/manifest.ts @@ -5,7 +5,10 @@ export const manifest: UmbExtensionManifest = { type: 'clipboardCopyPropertyValueTranslator', alias: 'Umb.ClipboardCopyPropertyValueTranslator.Tiptap.BlockRteToBlock', name: 'Tiptap Block RTE To Block Clipboard Copy Property Value Translator', - api: () => import('./block-rte-to-block-copy-translator.js'), + api: () => + import('../../../extensions/extension-apis.bundle.js').then((m) => ({ + default: m.UmbTiptapBlockRteToBlockClipboardCopyPropertyValueTranslator, + })), fromPropertyEditorUi: UMB_TIPTAP_PROPERTY_EDITOR_UI_ALIAS, toClipboardEntryValueType: UMB_BLOCK_CLIPBOARD_ENTRY_VALUE_TYPE, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/clipboard/block/paste/manifest.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/clipboard/block/paste/manifest.ts index 3e4d65e74a03..a955f5bed5e7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/clipboard/block/paste/manifest.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/clipboard/block/paste/manifest.ts @@ -5,7 +5,10 @@ export const manifest: UmbExtensionManifest = { type: 'clipboardPastePropertyValueTranslator', alias: 'Umb.ClipboardPastePropertyValueTranslator.Tiptap.BlockToBlockRte', name: 'Tiptap Block To Block RTE Clipboard Paste Property Value Translator', - api: () => import('./block-to-block-rte-paste-translator.js'), + api: () => + import('../../../extensions/extension-apis.bundle.js').then((m) => ({ + default: m.UmbTiptapBlockToBlockRteClipboardPastePropertyValueTranslator, + })), fromClipboardEntryValueType: UMB_BLOCK_CLIPBOARD_ENTRY_VALUE_TYPE, toPropertyEditorUi: UMB_TIPTAP_PROPERTY_EDITOR_UI_ALIAS, }; 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 addfe51b6388..7c717c7f976e 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 @@ -139,22 +139,27 @@ export class UmbInputTiptapElement extends UmbFormControlMixin('extensions') ?? []; // Ensures that the "Rich Text Essentials" extension is always enabled. [LK] - if (!enabledExtensions.includes(TIPTAP_CORE_EXTENSION_ALIAS)) { - const { default: api } = await import('../../extensions/core/rich-text-essentials.tiptap-api.js'); - this._extensions.push(new api(this)); - } + // Prepending the alias rather than statically importing the API class keeps + // essentials inside the shared `extension-apis.bundle` chunk and avoids + // duplicating it into the input-tiptap chunk. + const aliases = enabledExtensions.includes(TIPTAP_CORE_EXTENSION_ALIAS) + ? enabledExtensions + : [TIPTAP_CORE_EXTENSION_ALIAS, ...enabledExtensions]; await new Promise((resolve) => { - this.observe(umbExtensionsRegistry.byTypeAndAliases('tiptapExtension', enabledExtensions), async (manifests) => { - for (const manifest of manifests) { - if (manifest.api) { + this.observe(umbExtensionsRegistry.byTypeAndAliases('tiptapExtension', aliases), async (manifests) => { + const loaded = await Promise.all( + manifests.map(async (manifest) => { + if (!manifest.api) return null; const extension = await loadManifestApi(manifest.api); - if (extension) { - const ext = new extension(this); - ext.manifest = manifest; - this._extensions.push(ext); - } - } + if (!extension) return null; + const ext = new extension(this); + ext.manifest = manifest; + return ext; + }), + ); + for (const ext of loaded) { + if (ext) this._extensions.push(ext); } resolve(); }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/input-tiptap/input-tiptap.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/input-tiptap/input-tiptap.stories.ts new file mode 100644 index 000000000000..7802c6c85d44 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/input-tiptap/input-tiptap.stories.ts @@ -0,0 +1,85 @@ +import type { UmbInputTiptapElement } from './input-tiptap.element.js'; +import { manifests as tiptapManifests } from '../../manifests.js'; +import { html } from '@umbraco-cms/backoffice/external/lit'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; +import { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/property-editor'; +import type { Meta, StoryObj } from '@storybook/web-components-vite'; + +import './input-tiptap.element.js'; + +// Standalone use case: a custom dashboard, workspace view, or external package can +// import `` directly. The story exists primarily so we can +// visually confirm in Storybook that registering the package manifests and +// rendering the element on its own — without `` — +// still triggers the lazy `extension-apis.bundle` chunk and instantiates the +// Tiptap editor end-to-end. + +// One-time manifest registration (Storybook keeps the registry alive across stories). +let manifestsRegistered = false; +function ensureManifestsRegistered() { + if (manifestsRegistered) return; + umbExtensionsRegistry.registerMany(tiptapManifests); + manifestsRegistered = true; +} + +const minimalConfig = new UmbPropertyEditorConfigCollection([ + { alias: 'dimensions', value: { height: 300 } }, + { alias: 'extensions', value: ['Umb.Tiptap.RichTextEssentials'] }, +]); + +const richConfig = new UmbPropertyEditorConfigCollection([ + { alias: 'dimensions', value: { height: 400 } }, + { + alias: 'extensions', + value: [ + 'Umb.Tiptap.RichTextEssentials', + 'Umb.Tiptap.Bold', + 'Umb.Tiptap.Italic', + 'Umb.Tiptap.Underline', + 'Umb.Tiptap.BulletList', + 'Umb.Tiptap.OrderedList', + ], + }, + { + alias: 'toolbar', + value: [ + [ + ['Umb.Tiptap.Toolbar.Bold', 'Umb.Tiptap.Toolbar.Italic', 'Umb.Tiptap.Toolbar.Underline'], + ['Umb.Tiptap.Toolbar.BulletList', 'Umb.Tiptap.Toolbar.OrderedList'], + ], + ], + }, +]); + +const meta: Meta = { + title: 'Components/Inputs/Tiptap (standalone)', + component: 'umb-input-tiptap', + id: 'umb-input-tiptap', + decorators: [ + (story) => { + ensureManifestsRegistered(); + return story(); + }, + ], +}; + +export default meta; +type Story = StoryObj; + +export const EssentialsOnly: Story = { + render: () => html` + Standalone with only Rich Text Essentials.

'}> +
+ `, +}; + +export const WithFormattingToolbar: Story = { + render: () => html` + Standalone with a minimal toolbar.

'}> +
+ `, +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/input-tiptap/input-tiptap.test.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/input-tiptap/input-tiptap.test.ts new file mode 100644 index 000000000000..a4e47cfb5b60 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/input-tiptap/input-tiptap.test.ts @@ -0,0 +1,20 @@ +import { UmbInputTiptapElement } from './input-tiptap.element.js'; +import { expect } from '@open-wc/testing'; + +describe('UmbInputTiptapElement (standalone)', () => { + // Proves that `` is usable on its own — i.e. not gated on being + // rendered inside ``. We deliberately don't mount + // the element here: mounting it spins up an `UmbTiptapRteContext` that consumes + // `UMB_SERVER_CONTEXT` (not provided in unit tests), and the pending context + // request would surface as an unhandled rejection after the fixture tears down. + // The visual end-to-end load path is covered by the Storybook stories instead; + // this just nails down the contract that standalone consumers depend on. + + it('exports the element class so a standalone consumer can import it', () => { + expect(UmbInputTiptapElement).to.be.a('function'); + }); + + it('registers the `umb-input-tiptap` custom element at module load time', () => { + expect(customElements.get('umb-input-tiptap')).to.equal(UmbInputTiptapElement); + }); +}); diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/toolbar/tiptap-toolbar.element.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/toolbar/tiptap-toolbar.element.ts index bb67cf45aa89..194207d199b6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/toolbar/tiptap-toolbar.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/components/toolbar/tiptap-toolbar.element.ts @@ -1,3 +1,4 @@ +import UmbTiptapToolbarDefaultExtensionApi from '../../extensions/default-tiptap-toolbar-api.js'; import type { Editor } from '../../externals.js'; import type { UmbTiptapToolbarValue } from '../types.js'; import { css, customElement, html, nothing, property, repeat } from '@umbraco-cms/backoffice/external/lit'; @@ -68,7 +69,7 @@ export class UmbTiptapToolbarElement extends UmbLitElement { }, undefined, undefined, - () => import('../../extensions/default-tiptap-toolbar-api.js'), + UmbTiptapToolbarDefaultExtensionApi, ); this.#extensionsController.apiProperties = { configuration: this.configuration }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/anchor/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/anchor/manifests.ts index 2ef13ee73557..ff5ef5cc07a0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/anchor/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/anchor/manifests.ts @@ -5,7 +5,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.Anchor', name: 'Anchor Tiptap Extension', - api: () => import('./anchor.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapAnchorExtensionApi })), meta: { icon: 'icon-anchor', label: '#tiptap_anchor', @@ -17,7 +17,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Anchor', name: 'Anchor Tiptap Toolbar Extension', - api: () => import('./anchor.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarAnchorExtensionApi })), forExtensions: ['Umb.Tiptap.Anchor'], meta: { alias: 'anchor', @@ -29,6 +29,6 @@ export const manifests: Array = [ type: 'modal', alias: UMB_TIPTAP_ANCHOR_MODAL_ALIAS, name: 'Tiptap Anchor Modal', - element: () => import('./modals/anchor-modal.element.js'), + element: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapAnchorModalElement })), }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/block/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/block/manifests.ts index bee2331d93c7..511d7a712de2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/block/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/block/manifests.ts @@ -6,7 +6,7 @@ export const manifests: Array import('./block.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapBlockElementApi })), meta: { icon: 'icon-plugin', label: 'Block', @@ -18,7 +18,7 @@ export const manifests: Array import('./block.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapBlockPickerToolbarExtension })), forExtensions: ['Umb.Tiptap.Block'], meta: { alias: 'umbblockpicker', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/blockquote/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/blockquote/manifests.ts index 9938dd4263b1..8b2b734c9c53 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/blockquote/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/blockquote/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.Blockquote', name: 'Blockquote Tiptap Extension', - api: () => import('./blockquote.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapBlockquoteExtensionApi })), meta: { icon: 'icon-blockquote', label: 'Blockquote', @@ -15,7 +15,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Blockquote', name: 'Blockquote Tiptap Toolbar Extension', - api: () => import('./blockquote.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarBlockquoteExtensionApi })), forExtensions: ['Umb.Tiptap.Blockquote'], meta: { alias: 'blockquote', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/bold/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/bold/manifests.ts index a435430ed97a..9d84b4d668b5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/bold/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/bold/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.Bold', name: 'Bold Tiptap Extension', - api: () => import('./bold.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapBoldExtensionApi })), meta: { icon: 'icon-bold', label: 'Bold', @@ -15,7 +15,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Bold', name: 'Bold Tiptap Toolbar Extension', - api: () => import('./bold.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarBoldExtensionApi })), forExtensions: ['Umb.Tiptap.Bold'], meta: { alias: 'bold', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/bullet-list/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/bullet-list/manifests.ts index 58fdceb9c056..b96a159b9e11 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/bullet-list/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/bullet-list/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.BulletList', name: 'Bullet List Tiptap Extension', - api: () => import('./bullet-list.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapBulletListExtensionApi })), meta: { icon: 'icon-bulleted-list', label: 'Bullet List', @@ -15,7 +15,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.BulletList', name: 'Bullet List Tiptap Toolbar Extension', - api: () => import('./bullet-list.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarBulletListExtensionApi })), forExtensions: ['Umb.Tiptap.BulletList'], meta: { alias: 'bulletList', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/character-map/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/character-map/manifests.ts index cdc8117bd0f9..cd811bfebab5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/character-map/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/character-map/manifests.ts @@ -6,7 +6,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.CharacterMap', name: 'Character Map Tiptap Toolbar Extension', - api: () => import('./character-map.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarCharacterMapExtensionApi })), meta: { alias: 'umbCharacterMap', icon: 'icon-omega', @@ -17,6 +18,6 @@ export const manifests: Array = [ type: 'modal', alias: UMB_TIPTAP_CHARACTER_MAP_MODAL_ALIAS, name: 'Character Map Modal', - element: () => import('./modals/character-map-modal.element.js'), + element: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbCharacterMapModalElement })), }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/manifests.ts index 5516bef1fb66..2a96d20c65de 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/clear-formatting/manifests.ts @@ -4,7 +4,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.ClearFormatting', name: 'Clear Formatting Tiptap Toolbar Extension', - api: () => import('./clear-formatting.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarClearFormattingExtensionApi })), meta: { alias: 'clear-formatting', icon: 'icon-clear-formatting', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/code-block/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/code-block/manifests.ts index 0d866a5307ce..143e8eeb8635 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/code-block/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/code-block/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.CodeBlock', name: 'Code Block Tiptap Extension', - api: () => import('./code-block.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapCodeBlockExtensionApi })), meta: { icon: 'icon-code', label: 'Code Block', @@ -15,7 +15,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.CodeBlock', name: 'Code Block Tiptap Toolbar Extension', - api: () => import('./code-block.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarCodeBlockExtensionApi })), forExtensions: ['Umb.Tiptap.CodeBlock'], meta: { alias: 'codeBlock', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/core/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/core/manifests.ts index dafe43c8e7db..e98fed1fd98f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/core/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/core/manifests.ts @@ -3,7 +3,8 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.RichTextEssentials', name: 'Rich Text Essentials Tiptap Extension', - api: () => import('./rich-text-essentials.tiptap-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapRichTextEssentialsExtensionApi })), weight: 1000, meta: { icon: 'icon-browser-window', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/element-path/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/element-path/manifests.ts index 368caf4fe7dc..25efd7a538eb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/element-path/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/element-path/manifests.ts @@ -3,7 +3,8 @@ export const manifests: Array = [ type: 'tiptapStatusbarExtension', alias: 'Umb.Tiptap.Statusbar.ElementPath', name: 'Element Path Tiptap Statusbar Extension', - element: () => import('./element-path.tiptap-statusbar-element.js'), + element: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapStatusbarElementPathElement })), meta: { alias: 'elementPath', icon: 'icon-map-alt', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/embedded-media/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/embedded-media/manifests.ts index d299978d5502..2d6ae236ce56 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/embedded-media/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/embedded-media/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.Embed', name: 'Embedded Media Tiptap Extension', - api: () => import('./embedded-media.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapEmbeddedMediaExtensionApi })), meta: { icon: 'icon-embed', label: '#general_embed', @@ -15,7 +15,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.EmbeddedMedia', name: 'Embedded Media Tiptap Toolbar Extension', - api: () => import('./embedded-media.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarEmbeddedMediaExtensionApi })), forExtensions: ['Umb.Tiptap.Embed'], meta: { alias: 'umbEmbeddedMedia', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/extension-apis.bundle.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/extension-apis.bundle.ts new file mode 100644 index 000000000000..13f17bdbc502 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/extension-apis.bundle.ts @@ -0,0 +1,124 @@ +/** + * Lazy-loaded bundle of every first-party Tiptap extension, toolbar, statusbar, modal + * and table-action API/element. Manifests reference everything here via + * `() => import('./extension-apis.bundle.js').then((m) => ({ default: m.X }))` thunks so + * Rollup emits a single shared chunk that is only fetched the first time an RTE is + * actually rendered. Workspaces that don't host an RTE never load this bundle. + * + * Do NOT add a static import of this file from anywhere — that would defeat the lazy + * boundary and pull all extension code back into the manifest registration bundle. + */ + +// Extension APIs +export { default as UmbTiptapAnchorExtensionApi } from './anchor/anchor.tiptap-api.js'; +export { default as UmbTiptapBlockElementApi } from './block/block.tiptap-api.js'; +export { default as UmbTiptapBlockquoteExtensionApi } from './blockquote/blockquote.tiptap-api.js'; +export { default as UmbTiptapBoldExtensionApi } from './bold/bold.tiptap-api.js'; +export { default as UmbTiptapBulletListExtensionApi } from './bullet-list/bullet-list.tiptap-api.js'; +export { default as UmbTiptapCodeBlockExtensionApi } from './code-block/code-block.tiptap-api.js'; +export { default as UmbTiptapEmbeddedMediaExtensionApi } from './embedded-media/embedded-media.tiptap-api.js'; +export { default as UmbTiptapFigureExtensionApi } from './figure/figure.tiptap-api.js'; +export { default as UmbTiptapHeadingExtensionApi } from './heading/heading.tiptap-api.js'; +export { default as UmbTiptapHorizontalRuleExtensionApi } from './horizontal-rule/horizontal-rule.tiptap-api.js'; +export { default as UmbTiptapHtmlAttributeClassExtensionApi } from './html-attr-class/html-attr-class.tiptap-api.js'; +export { default as UmbTiptapHtmlAttributeDatasetExtensionApi } from './html-attr-dataset/html-attr-dataset.tiptap-api.js'; +export { default as UmbTiptapHtmlAttributeIdExtensionApi } from './html-attr-id/html-attr-id.tiptap-api.js'; +export { default as UmbTiptapHtmlAttributeStyleExtensionApi } from './html-attr-style/html-attr-style.tiptap-api.js'; +export { default as UmbTiptapHtmlTagDivExtensionApi } from './html-tag-div/html-tag-div.tiptap-api.js'; +export { default as UmbTiptapHtmlTagSpanExtensionApi } from './html-tag-span/html-tag-span.tiptap-api.js'; +export { default as UmbTiptapImageExtensionApi } from './image/image.tiptap-api.js'; +export { default as UmbTiptapItalicExtensionApi } from './italic/italic.tiptap-api.js'; +export { default as UmbTiptapLinkExtensionApi } from './link/link.tiptap-api.js'; +export { default as UmbTiptapMediaUploadExtensionApi } from './media-upload/media-upload.tiptap-api.js'; +export { default as UmbTiptapOrderedListExtensionApi } from './ordered-list/ordered-list.tiptap-api.js'; +export { default as UmbTiptapRichTextEssentialsExtensionApi } from './core/rich-text-essentials.tiptap-api.js'; +export { default as UmbTiptapStrikeExtensionApi } from './strike/strike.tiptap-api.js'; +export { default as UmbTiptapSubscriptExtensionApi } from './subscript/subscript.tiptap-api.js'; +export { default as UmbTiptapSuperscriptExtensionApi } from './superscript/superscript.tiptap-api.js'; +export { default as UmbTiptapTableExtensionApi } from './table/table.tiptap-api.js'; +export { default as UmbTiptapTextAlignExtensionApi } from './text-align/text-align.tiptap-api.js'; +export { default as UmbTiptapTextDirectionExtensionApi } from './text-direction/text-direction.tiptap-api.js'; +export { default as UmbTiptapTextIndentExtensionApi } from './text-indent/text-indent.tiptap-api.js'; +export { default as UmbTiptapTrailingNodeExtensionApi } from './trailing-node/trailing-node.tiptap-api.js'; +export { default as UmbTiptapUnderlineExtensionApi } from './underline/underline.tiptap-api.js'; +export { default as UmbTiptapWordCountExtensionApi } from './word-count/word-count.tiptap-api.js'; + +// Toolbar APIs +export { default as UmbTiptapToolbarAnchorExtensionApi } from './anchor/anchor.tiptap-toolbar-api.js'; +export { default as UmbTiptapBlockPickerToolbarExtension } from './block/block.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarBlockquoteExtensionApi } from './blockquote/blockquote.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarBoldExtensionApi } from './bold/bold.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarBulletListExtensionApi } from './bullet-list/bullet-list.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarCharacterMapExtensionApi } from './character-map/character-map.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarClearFormattingExtensionApi } from './clear-formatting/clear-formatting.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarCodeBlockExtensionApi } from './code-block/code-block.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarEmbeddedMediaExtensionApi } from './embedded-media/embedded-media.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarFontFamilyExtensionApi } from './font-family/font-family.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarFontSizeExtensionApi } from './font-size/font-size.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarHeading1ExtensionApi } from './heading/heading1.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarHeading2ExtensionApi } from './heading/heading2.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarHeading3ExtensionApi } from './heading/heading3.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarHeading4ExtensionApi } from './heading/heading4.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarHeading5ExtensionApi } from './heading/heading5.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarHeading6ExtensionApi } from './heading/heading6.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarHorizontalRuleExtensionApi } from './horizontal-rule/horizontal-rule.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarItalicExtensionApi } from './italic/italic.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarLinkExtensionApi } from './link/link.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarUnlinkExtensionApi } from './link/unlink.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarMediaPickerToolbarExtensionApi } from './media-picker/media-picker.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarOrderedListExtensionApi } from './ordered-list/ordered-list.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarRedoExtensionApi } from './undo-redo/redo.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarSourceEditorExtensionApi } from './view-source/source-editor.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarStrikeExtensionApi } from './strike/strike.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarStyleMenuApi } from './style-menu/style-menu.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarSubscriptExtensionApi } from './subscript/subscript.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarSuperscriptExtensionApi } from './superscript/superscript.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarTableExtensionApi } from './table/table.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarTextAlignCenterExtensionApi } from './text-align/text-align-center.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarTextAlignJustifyExtensionApi } from './text-align/text-align-justify.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarTextAlignLeftExtensionApi } from './text-align/text-align-left.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarTextAlignRightExtensionApi } from './text-align/text-align-right.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarTextColorBackgroundExtensionApi } from './text-color/text-color-background.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarTextColorForegroundExtensionApi } from './text-color/text-color-foreground.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarTextDirectionLtrExtensionApi } from './text-direction/text-direction-ltr.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarTextDirectionRtlExtensionApi } from './text-direction/text-direction-rtl.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarTextIndentExtensionApi } from './text-indent/text-indent.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarTextOutdentExtensionApi } from './text-indent/text-outdent.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarUndoExtensionApi } from './undo-redo/undo.tiptap-toolbar-api.js'; +export { default as UmbTiptapToolbarUnderlineExtensionApi } from './underline/underline.tiptap-toolbar-api.js'; + +// Statusbar elements +export { UmbTiptapStatusbarElementPathElement } from './element-path/element-path.tiptap-statusbar-element.js'; +export { UmbTiptapStatusbarWordCountElement } from './word-count/word-count.tiptap-statusbar-element.js'; + +// Modal elements +export { UmbTiptapAnchorModalElement } from './anchor/modals/anchor-modal.element.js'; +export { UmbCharacterMapModalElement } from './character-map/modals/character-map-modal.element.js'; +export { UmbTiptapTablePropertiesModalElement } from './table/modals/table-properties-modal.element.js'; + +// Toolbar UI elements (referenced from kind manifests) +export { UmbTiptapTableToolbarMenuElement } from './table/components/table-toolbar-menu.element.js'; +export { UmbTiptapToolbarButtonActionElement } from '../components/toolbar/tiptap-toolbar-button-action.element.js'; +export { UmbTiptapToolbarButtonElement } from '../components/toolbar/tiptap-toolbar-button.element.js'; +export { UmbTiptapToolbarColorPickerButtonElement } from '../components/toolbar/tiptap-toolbar-color-picker-button.element.js'; +export { UmbTiptapToolbarMenuElement } from '../components/toolbar/tiptap-toolbar-menu.element.js'; + +// Table menu-item action APIs +export { default as UmbTableCellMergeAction } from './table/actions/table-cell-merge.action.js'; +export { default as UmbTableCellMergeSplitAction } from './table/actions/table-cell-merge-split.action.js'; +export { default as UmbTableCellSplitAction } from './table/actions/table-cell-split.action.js'; +export { default as UmbTableCellToggleHeaderAction } from './table/actions/table-cell-toggle-header.action.js'; +export { default as UmbTableColumnAddAfterAction } from './table/actions/table-column-add-after.action.js'; +export { default as UmbTableColumnAddBeforeAction } from './table/actions/table-column-add-before.action.js'; +export { default as UmbTableColumnDeleteAction } from './table/actions/table-column-delete.action.js'; +export { default as UmbTableColumnToggleHeaderAction } from './table/actions/table-column-toggle-header.action.js'; +export { default as UmbTableDeleteAction } from './table/actions/table-delete.action.js'; +export { default as UmbTablePropertiesAction } from './table/actions/table-properties.action.js'; +export { default as UmbTableRowAddAfterAction } from './table/actions/table-row-add-after.action.js'; +export { default as UmbTableRowAddBeforeAction } from './table/actions/table-row-add-before.action.js'; +export { default as UmbTableRowDeleteAction } from './table/actions/table-row-delete.action.js'; +export { default as UmbTableRowToggleHeaderAction } from './table/actions/table-row-toggle-header.action.js'; + +// Clipboard property-value translators +export { UmbTiptapBlockRteToBlockClipboardCopyPropertyValueTranslator } from '../clipboard/block/copy/block-rte-to-block-copy-translator.js'; +export { UmbTiptapBlockToBlockRteClipboardPastePropertyValueTranslator } from '../clipboard/block/paste/block-to-block-rte-paste-translator.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/figure/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/figure/manifests.ts index ef5157228652..c36d8fe2b36e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/figure/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/figure/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.Figure', name: 'Figure Tiptap Extension', - api: () => import('./figure.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapFigureExtensionApi })), meta: { icon: 'icon-frame', label: 'Figure', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/font-family/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/font-family/manifests.ts index 6e6ea6392b55..0657df85836d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/font-family/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/font-family/manifests.ts @@ -4,7 +4,8 @@ export const manifests: Array = [ kind: 'menu', alias: 'Umb.Tiptap.Toolbar.FontFamily', name: 'Font Family Tiptap Toolbar Extension', - api: () => import('./font-family.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarFontFamilyExtensionApi })), forExtensions: ['Umb.Tiptap.HtmlAttributeStyle', 'Umb.Tiptap.HtmlTagSpan'], items: [ { label: 'Sans serif', appearance: { style: 'font-family: sans-serif;' }, data: 'sans-serif' }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/font-size/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/font-size/manifests.ts index 52c0c21d2ada..15118f056199 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/font-size/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/font-size/manifests.ts @@ -4,7 +4,7 @@ export const manifests: Array = [ kind: 'menu', alias: 'Umb.Tiptap.Toolbar.FontSize', name: 'Font Size Tiptap Toolbar Extension', - api: () => import('./font-size.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarFontSizeExtensionApi })), forExtensions: ['Umb.Tiptap.HtmlAttributeStyle', 'Umb.Tiptap.HtmlTagSpan'], items: [ { label: '8pt', data: '8pt' }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/heading/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/heading/manifests.ts index a7f2f60c066f..d31a0de3f1ed 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/heading/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/heading/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.Heading', name: 'Headings Tiptap Extension', - api: () => import('./heading.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapHeadingExtensionApi })), meta: { icon: 'icon-heading', label: 'Headings', @@ -15,7 +15,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Heading1', name: 'Heading 1 Tiptap Toolbar Extension', - api: () => import('./heading1.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarHeading1ExtensionApi })), forExtensions: ['Umb.Tiptap.Heading'], meta: { alias: 'heading1', @@ -28,7 +28,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Heading2', name: 'Heading 2 Tiptap Toolbar Extension', - api: () => import('./heading2.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarHeading2ExtensionApi })), forExtensions: ['Umb.Tiptap.Heading'], meta: { alias: 'heading2', @@ -41,7 +41,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Heading3', name: 'Heading 3 Tiptap Toolbar Extension', - api: () => import('./heading3.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarHeading3ExtensionApi })), forExtensions: ['Umb.Tiptap.Heading'], meta: { alias: 'heading3', @@ -54,7 +54,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Heading4', name: 'Heading 4 Tiptap Toolbar Extension', - api: () => import('./heading4.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarHeading4ExtensionApi })), forExtensions: ['Umb.Tiptap.Heading'], meta: { alias: 'heading4', @@ -67,7 +67,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Heading5', name: 'Heading 5 Tiptap Toolbar Extension', - api: () => import('./heading5.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarHeading5ExtensionApi })), forExtensions: ['Umb.Tiptap.Heading'], meta: { alias: 'heading5', @@ -80,7 +80,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Heading6', name: 'Heading 6 Tiptap Toolbar Extension', - api: () => import('./heading6.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarHeading6ExtensionApi })), forExtensions: ['Umb.Tiptap.Heading'], meta: { alias: 'heading6', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/horizontal-rule/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/horizontal-rule/manifests.ts index 86ec324126d4..7390150f5851 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/horizontal-rule/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/horizontal-rule/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.HorizontalRule', name: 'Horizontal Rule Tiptap Extension', - api: () => import('./horizontal-rule.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapHorizontalRuleExtensionApi })), meta: { icon: 'icon-horizontal-rule', label: 'Horizontal Rule', @@ -15,7 +15,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.HorizontalRule', name: 'Horizontal Rule Tiptap Toolbar Extension', - api: () => import('./horizontal-rule.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarHorizontalRuleExtensionApi })), forExtensions: ['Umb.Tiptap.HorizontalRule'], meta: { alias: 'horizontalRule', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-class/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-class/manifests.ts index 01badb125f75..a8f0353b0a34 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-class/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-class/manifests.ts @@ -3,7 +3,8 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.HtmlAttributeClass', name: 'Class HTML Attribute Tiptap Extension', - api: () => import('./html-attr-class.tiptap-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapHtmlAttributeClassExtensionApi })), meta: { icon: 'icon-barcode', label: '`class` attributes', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-dataset/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-dataset/manifests.ts index 44aca270a0ff..51f0df24767a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-dataset/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-dataset/manifests.ts @@ -3,7 +3,8 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.HtmlAttributeDataset', name: 'Dataset HTML Attribute Tiptap Extension', - api: () => import('./html-attr-dataset.tiptap-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapHtmlAttributeDatasetExtensionApi })), meta: { icon: 'icon-binarycode', label: '`data-*` attributes', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-id/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-id/manifests.ts index b77fedc7bf84..fb1017a7f6c8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-id/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-id/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.HtmlAttributeId', name: 'ID HTML Attribute Tiptap Extension', - api: () => import('./html-attr-id.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapHtmlAttributeIdExtensionApi })), meta: { icon: 'icon-fingerprint', label: '`id` attributes', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-style/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-style/manifests.ts index edc851a0e2fc..fe0b1b13880a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-style/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-attr-style/manifests.ts @@ -3,7 +3,8 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.HtmlAttributeStyle', name: 'Style HTML Attribute Tiptap Extension', - api: () => import('./html-attr-style.tiptap-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapHtmlAttributeStyleExtensionApi })), meta: { icon: 'icon-palette', label: '`style` attributes', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-tag-div/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-tag-div/manifests.ts index ac85724183f6..c4c8370797ca 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-tag-div/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-tag-div/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.HtmlTagDiv', name: 'Div HTML Tag Tiptap Extension', - api: () => import('./html-tag-div.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapHtmlTagDivExtensionApi })), meta: { icon: 'icon-document-html', label: '`
` tags', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-tag-span/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-tag-span/manifests.ts index 0265382a0076..d5abe12db98b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-tag-span/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/html-tag-span/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.HtmlTagSpan', name: 'Span HTML Tag Tiptap Extension', - api: () => import('./html-tag-span.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapHtmlTagSpanExtensionApi })), meta: { icon: 'icon-document-html', label: '`` tags', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/image/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/image/manifests.ts index 22ad0583ba74..1474d7977624 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/image/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/image/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.Image', name: 'Image Tiptap Extension', - api: () => import('./image.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapImageExtensionApi })), meta: { icon: 'icon-picture', label: 'Image', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/italic/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/italic/manifests.ts index fe75d0872000..fd3e22c9ea2a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/italic/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/italic/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.Italic', name: 'Italic Tiptap Extension', - api: () => import('./italic.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapItalicExtensionApi })), meta: { icon: 'icon-italic', label: 'Italic', @@ -15,7 +15,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Italic', name: 'Italic Tiptap Toolbar Extension', - api: () => import('./italic.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarItalicExtensionApi })), forExtensions: ['Umb.Tiptap.Italic'], meta: { alias: 'italic', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/link/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/link/manifests.ts index f82243cfb635..a3ce1e63e4a9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/link/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/link/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.Link', name: 'Link Tiptap Extension', - api: () => import('./link.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapLinkExtensionApi })), meta: { icon: 'icon-link', label: '#defaultdialogs_urlLinkPicker', @@ -15,7 +15,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Link', name: 'Link Tiptap Toolbar Extension', - api: () => import('./link.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarLinkExtensionApi })), forExtensions: ['Umb.Tiptap.Link'], meta: { alias: 'umbLink', @@ -28,7 +28,7 @@ export const manifests: Array = [ kind: 'actionButton', alias: 'Umb.Tiptap.Toolbar.Unlink', name: 'Unlink Tiptap Toolbar Extension', - api: () => import('./unlink.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarUnlinkExtensionApi })), forExtensions: ['Umb.Tiptap.Link'], meta: { alias: 'unlink', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/media-picker/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/media-picker/manifests.ts index cf0918261dd5..0021bbe443d7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/media-picker/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/media-picker/manifests.ts @@ -4,7 +4,10 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.MediaPicker', name: 'Media Picker Tiptap Toolbar Extension', - api: () => import('./media-picker.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ + default: m.UmbTiptapToolbarMediaPickerToolbarExtensionApi, + })), forExtensions: ['Umb.Tiptap.Figure', 'Umb.Tiptap.Image'], meta: { alias: 'umbMedia', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/media-upload/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/media-upload/manifests.ts index 25e3183c5f87..73b7ae2ab79c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/media-upload/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/media-upload/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.MediaUpload', name: 'Media Upload Tiptap Extension', - api: () => import('./media-upload.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapMediaUploadExtensionApi })), meta: { icon: 'icon-image-up', label: 'Media Upload', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/ordered-list/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/ordered-list/manifests.ts index 089dc6936547..cda2914273b8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/ordered-list/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/ordered-list/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.OrderedList', name: 'Ordered List Tiptap Extension', - api: () => import('./ordered-list.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapOrderedListExtensionApi })), meta: { icon: 'icon-ordered-list', label: 'Ordered List', @@ -15,7 +15,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.OrderedList', name: 'Ordered List Tiptap Toolbar Extension', - api: () => import('./ordered-list.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarOrderedListExtensionApi })), forExtensions: ['Umb.Tiptap.OrderedList'], meta: { alias: 'orderedList', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/strike/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/strike/manifests.ts index 8cd410645ab7..afc94451346b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/strike/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/strike/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.Strike', name: 'Strike Tiptap Extension', - api: () => import('./strike.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapStrikeExtensionApi })), meta: { icon: 'icon-strikethrough', label: 'Strike', @@ -15,7 +15,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Strike', name: 'Strike Tiptap Toolbar Extension', - api: () => import('./strike.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarStrikeExtensionApi })), forExtensions: ['Umb.Tiptap.Strike'], meta: { alias: 'strike', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/style-menu/style-menu.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/style-menu/style-menu.kind.ts index f211fc9135e9..08a5be021229 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/style-menu/style-menu.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/style-menu/style-menu.kind.ts @@ -6,7 +6,7 @@ export const manifest: UmbExtensionManifestKind = { matchKind: 'styleMenu', matchType: 'tiptapToolbarExtension', manifest: { - api: () => import('./style-menu.tiptap-toolbar-api.js'), - element: () => import('../../components/toolbar/tiptap-toolbar-menu.element.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarStyleMenuApi })), + element: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarMenuElement })), }, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/subscript/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/subscript/manifests.ts index 7742d8bd8101..bd049bad16e7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/subscript/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/subscript/manifests.ts @@ -4,7 +4,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Subscript', name: 'Subscript Tiptap Extension', - api: () => import('./subscript.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapSubscriptExtensionApi })), meta: { icon: 'icon-subscript', label: 'Subscript', @@ -16,7 +16,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Subscript', name: 'Subscript Tiptap Toolbar Extension', - api: () => import('./subscript.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarSubscriptExtensionApi })), forExtensions: ['Umb.Tiptap.Subscript'], meta: { alias: 'subscript', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/superscript/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/superscript/manifests.ts index 818216ae0701..5c053cd744db 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/superscript/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/superscript/manifests.ts @@ -4,7 +4,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Superscript', name: 'Superscript Tiptap Extension', - api: () => import('./superscript.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapSuperscriptExtensionApi })), meta: { icon: 'icon-superscript', label: 'Superscript', @@ -16,7 +16,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Superscript', name: 'Superscript Tiptap Toolbar Extension', - api: () => import('./superscript.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarSuperscriptExtensionApi })), forExtensions: ['Umb.Tiptap.Superscript'], meta: { alias: 'superscript', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/table/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/table/manifests.ts index e0340bbe5f91..0272cef713c3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/table/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/table/manifests.ts @@ -10,7 +10,8 @@ const modals: Array = [ type: 'modal', alias: UMB_TIPTAP_TABLE_PROPERTIES_MODAL_ALIAS, name: 'Tiptap Table Properties Modal', - element: () => import('./modals/table-properties-modal.element.js'), + element: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapTablePropertiesModalElement })), }, ]; @@ -20,7 +21,7 @@ const coreExtensions: Array = [ kind: 'button', alias: 'Umb.Tiptap.Table', name: 'Table Tiptap Extension', - api: () => import('./table.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapTableExtensionApi })), meta: { icon: 'icon-table', label: 'Table', @@ -35,8 +36,8 @@ const toolbarExtensions: Array = [ kind: 'menu', alias: 'Umb.Tiptap.Toolbar.Table', name: 'Table Tiptap Extension', - api: () => import('./table.tiptap-toolbar-api.js'), - element: () => import('./components/table-toolbar-menu.element.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarTableExtensionApi })), + element: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapTableToolbarMenuElement })), forExtensions: ['Umb.Tiptap.Table'], items: [ { @@ -74,7 +75,7 @@ const tableMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableProperties', name: 'Tiptap Table Menu Item: Table Properties', - api: () => import('./actions/table-properties.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTablePropertiesAction })), weight: 110, meta: { label: 'Table properties', @@ -86,7 +87,7 @@ const tableMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableDelete', name: 'Tiptap Table Menu Item: Delete Table', - api: () => import('./actions/table-delete.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTableDeleteAction })), weight: 100, meta: { label: 'Delete table', @@ -107,7 +108,7 @@ const tableColumnMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableColumnAddBefore', name: 'Tiptap Table Menu Item: Add Column Before', - api: () => import('./actions/table-column-add-before.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTableColumnAddBeforeAction })), weight: 120, meta: { label: 'Add column before', @@ -120,7 +121,7 @@ const tableColumnMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableColumnAddAfter', name: 'Tiptap Table Menu Item: Add Column After', - api: () => import('./actions/table-column-add-after.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTableColumnAddAfterAction })), weight: 110, meta: { label: 'Add column after', @@ -133,7 +134,7 @@ const tableColumnMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableColumnDelete', name: 'Tiptap Table Menu Item: Delete Column', - api: () => import('./actions/table-column-delete.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTableColumnDeleteAction })), weight: 100, meta: { label: 'Delete column', @@ -146,7 +147,7 @@ const tableColumnMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableColumnToggleHeader', name: 'Tiptap Table Menu Item: Toggle Header Column', - api: () => import('./actions/table-column-toggle-header.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTableColumnToggleHeaderAction })), weight: 90, meta: { label: 'Toggle header column', @@ -166,7 +167,7 @@ const tableRowMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableRowAddBefore', name: 'Tiptap Table Menu Item: Add Row Before', - api: () => import('./actions/table-row-add-before.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTableRowAddBeforeAction })), weight: 120, meta: { label: 'Add row before', @@ -179,7 +180,7 @@ const tableRowMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableRowAddAfter', name: 'Tiptap Table Menu Item: Add Row After', - api: () => import('./actions/table-row-add-after.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTableRowAddAfterAction })), weight: 110, meta: { label: 'Add row after', @@ -192,7 +193,7 @@ const tableRowMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableRowDelete', name: 'Tiptap Table Menu Item: Delete Row', - api: () => import('./actions/table-row-delete.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTableRowDeleteAction })), weight: 100, meta: { label: 'Delete row', @@ -205,7 +206,7 @@ const tableRowMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableRowToggleHeader', name: 'Tiptap Table Menu Item: Toggle Header Row', - api: () => import('./actions/table-row-toggle-header.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTableRowToggleHeaderAction })), weight: 90, meta: { label: 'Toggle header row', @@ -225,7 +226,7 @@ const tableCellMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableCellMerge', name: 'Tiptap Table Menu Item: Merge Cell', - api: () => import('./actions/table-cell-merge.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTableCellMergeAction })), weight: 120, meta: { label: 'Merge cells', @@ -237,7 +238,7 @@ const tableCellMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableCellSplit', name: 'Tiptap Table Menu Item: Split Cell', - api: () => import('./actions/table-cell-split.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTableCellSplitAction })), weight: 110, meta: { label: 'Split cell', @@ -249,7 +250,7 @@ const tableCellMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableCellMergeSplit', name: 'Tiptap Table Menu Item: Merge Or Split Cell', - api: () => import('./actions/table-cell-merge-split.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTableCellMergeSplitAction })), weight: 100, meta: { label: 'Merge or split', @@ -261,7 +262,7 @@ const tableCellMenu: Array = [ kind: 'action', alias: 'Umb.MenuItem.Tiptap.TableCellToggleHeader', name: 'Tiptap Table Menu Item: Toggle Header Cell', - api: () => import('./actions/table-cell-toggle-header.action.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTableCellToggleHeaderAction })), weight: 90, meta: { label: 'Toggle header cell', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-align/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-align/manifests.ts index fce382bce002..8d759c5b4585 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-align/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-align/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.TextAlign', name: 'Text Align Tiptap Extension', - api: () => import('./text-align.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapTextAlignExtensionApi })), meta: { icon: 'icon-text-align-justify', label: 'Text Align', @@ -15,7 +15,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.TextAlignLeft', name: 'Text Align Left Tiptap Toolbar Extension', - api: () => import('./text-align-left.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarTextAlignLeftExtensionApi })), forExtensions: ['Umb.Tiptap.TextAlign'], meta: { alias: 'text-align-left', @@ -28,7 +29,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.TextAlignCenter', name: 'Text Align Center Tiptap Toolbar Extension', - api: () => import('./text-align-center.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarTextAlignCenterExtensionApi })), forExtensions: ['Umb.Tiptap.TextAlign'], meta: { alias: 'text-align-center', @@ -41,7 +43,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.TextAlignRight', name: 'Text Align Right Tiptap Toolbar Extension', - api: () => import('./text-align-right.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarTextAlignRightExtensionApi })), forExtensions: ['Umb.Tiptap.TextAlign'], meta: { alias: 'text-align-right', @@ -54,7 +57,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.TextAlignJustify', name: 'Text Align Justify Tiptap Toolbar Extension', - api: () => import('./text-align-justify.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarTextAlignJustifyExtensionApi })), forExtensions: ['Umb.Tiptap.TextAlign'], meta: { alias: 'text-align-justify', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-color/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-color/manifests.ts index 3d5d5ff91318..885f0cf2f2cb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-color/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-color/manifests.ts @@ -4,7 +4,10 @@ export const manifests: Array = [ kind: 'colorPickerButton', alias: 'Umb.Tiptap.Toolbar.TextColorBackground', name: 'Text Color Background Tiptap Toolbar Extension', - api: () => import('./text-color-background.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ + default: m.UmbTiptapToolbarTextColorBackgroundExtensionApi, + })), forExtensions: ['Umb.Tiptap.HtmlAttributeStyle', 'Umb.Tiptap.HtmlTagSpan'], meta: { alias: 'text-color-background', @@ -17,7 +20,10 @@ export const manifests: Array = [ kind: 'colorPickerButton', alias: 'Umb.Tiptap.Toolbar.TextColorForeground', name: 'Text Color Foreground Tiptap Toolbar Extension', - api: () => import('./text-color-foreground.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ + default: m.UmbTiptapToolbarTextColorForegroundExtensionApi, + })), forExtensions: ['Umb.Tiptap.HtmlAttributeStyle', 'Umb.Tiptap.HtmlTagSpan'], meta: { alias: 'text-color-foreground', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-direction/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-direction/manifests.ts index 49bdede2e759..e18791d14763 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-direction/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-direction/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.TextDirection', name: 'Text Direction Tiptap Extension', - api: () => import('./text-direction.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapTextDirectionExtensionApi })), meta: { icon: 'icon-text-direction-ltr', label: 'Text Direction', @@ -15,7 +15,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.TextDirectionRtl', name: 'Text Direction RTL Tiptap Toolbar Extension', - api: () => import('./text-direction-rtl.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarTextDirectionRtlExtensionApi })), forExtensions: ['Umb.Tiptap.TextDirection'], meta: { alias: 'text-direction-rtl', @@ -28,7 +29,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.TextDirectionLtr', name: 'Text Direction LTR Tiptap Toolbar Extension', - api: () => import('./text-direction-ltr.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarTextDirectionLtrExtensionApi })), forExtensions: ['Umb.Tiptap.TextDirection'], meta: { alias: 'text-direction-ltr', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-indent/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-indent/manifests.ts index 9d0b6c3ee978..f948621b4dc5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-indent/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/text-indent/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.TextIndent', name: 'Text Indent Tiptap Extension', - api: () => import('./text-indent.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapTextIndentExtensionApi })), meta: { icon: 'icon-indent', label: 'Text Indent', @@ -15,7 +15,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.TextIndent', name: 'Text Indent Tiptap Toolbar Extension', - api: () => import('./text-indent.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarTextIndentExtensionApi })), forExtensions: ['Umb.Tiptap.TextIndent'], meta: { alias: 'indent', @@ -28,7 +29,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.TextOutdent', name: 'Text Outdent Tiptap Toolbar Extension', - api: () => import('./text-outdent.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarTextOutdentExtensionApi })), forExtensions: ['Umb.Tiptap.TextIndent'], meta: { alias: 'outdent', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-action-button.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-action-button.kind.ts index bb724ae92a56..d147f4827967 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-action-button.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-action-button.kind.ts @@ -6,6 +6,9 @@ export const manifest: UmbExtensionManifestKind = { matchKind: 'actionButton', matchType: 'tiptapToolbarExtension', manifest: { - element: () => import('../components/toolbar/tiptap-toolbar-button-action.element.js'), + element: () => + import('./extension-apis.bundle.js').then((m) => ({ + default: m.UmbTiptapToolbarButtonActionElement, + })), }, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-button.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-button.kind.ts index 00292b0421fb..79d0ab3f4d53 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-button.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-button.kind.ts @@ -6,6 +6,6 @@ export const manifest: UmbExtensionManifestKind = { matchKind: 'button', matchType: 'tiptapToolbarExtension', manifest: { - element: () => import('../components/toolbar/tiptap-toolbar-button.element.js'), + element: () => import('./extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarButtonElement })), }, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-color-picker-button.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-color-picker-button.kind.ts index dfb1bca4ede9..7901776884e9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-color-picker-button.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-color-picker-button.kind.ts @@ -6,6 +6,9 @@ export const manifest: UmbExtensionManifestKind = { matchKind: 'colorPickerButton', matchType: 'tiptapToolbarExtension', manifest: { - element: () => import('../components/toolbar/tiptap-toolbar-color-picker-button.element.js'), + element: () => + import('./extension-apis.bundle.js').then((m) => ({ + default: m.UmbTiptapToolbarColorPickerButtonElement, + })), }, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-menu.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-menu.kind.ts index bb69bc7a0986..f3fd82f5e9af 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-menu.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/tiptap-toolbar-menu.kind.ts @@ -6,6 +6,6 @@ export const manifest: UmbExtensionManifestKind = { matchKind: 'menu', matchType: 'tiptapToolbarExtension', manifest: { - element: () => import('../components/toolbar/tiptap-toolbar-menu.element.js'), + element: () => import('./extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarMenuElement })), }, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/trailing-node/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/trailing-node/manifests.ts index 6b091e0d2bf7..3b8362d5cfdc 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/trailing-node/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/trailing-node/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.TrailingNode', name: 'Trailing Node Tiptap Extension', - api: () => import('./trailing-node.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapTrailingNodeExtensionApi })), meta: { icon: 'icon-page-down', label: 'Trailing Node', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/underline/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/underline/manifests.ts index 3cdaff46169a..ce76083ffd25 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/underline/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/underline/manifests.ts @@ -4,7 +4,7 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Underline', name: 'Underline Tiptap Extension', - api: () => import('./underline.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapUnderlineExtensionApi })), meta: { icon: 'icon-underline', label: 'Underline', @@ -16,7 +16,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.Underline', name: 'Underline Tiptap Toolbar Extension', - api: () => import('./underline.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarUnderlineExtensionApi })), forExtensions: ['Umb.Tiptap.Underline'], meta: { alias: 'underline', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/undo-redo/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/undo-redo/manifests.ts index 0fd64c4aa9f0..305cff06fcc2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/undo-redo/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/undo-redo/manifests.ts @@ -4,7 +4,7 @@ export const manifests: Array = [ kind: 'actionButton', alias: 'Umb.Tiptap.Toolbar.Undo', name: 'Undo Tiptap Toolbar Extension', - api: () => import('./undo.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarUndoExtensionApi })), meta: { alias: 'undo', icon: 'icon-undo', @@ -16,7 +16,7 @@ export const manifests: Array = [ kind: 'actionButton', alias: 'Umb.Tiptap.Toolbar.Redo', name: 'Redo Tiptap Toolbar Extension', - api: () => import('./redo.tiptap-toolbar-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarRedoExtensionApi })), meta: { alias: 'redo', icon: 'icon-redo', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/view-source/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/view-source/manifests.ts index e5e191edd067..f863e0454dad 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/view-source/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/view-source/manifests.ts @@ -4,7 +4,8 @@ export const manifests: Array = [ kind: 'button', alias: 'Umb.Tiptap.Toolbar.SourceEditor', name: 'Source Editor Tiptap Toolbar Extension', - api: () => import('./source-editor.tiptap-toolbar-api.js'), + api: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapToolbarSourceEditorExtensionApi })), meta: { alias: 'umbSourceEditor', icon: 'icon-code-xml', diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/word-count/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/word-count/manifests.ts index d563e0891c0a..ae8315f762c3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/word-count/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/word-count/manifests.ts @@ -3,7 +3,7 @@ export const manifests: Array = [ type: 'tiptapExtension', alias: 'Umb.Tiptap.WordCount', name: 'Word Count Tiptap Extension', - api: () => import('./word-count.tiptap-api.js'), + api: () => import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapWordCountExtensionApi })), meta: { icon: 'icon-speed-gauge', label: 'Word Count', @@ -14,7 +14,8 @@ export const manifests: Array = [ type: 'tiptapStatusbarExtension', alias: 'Umb.Tiptap.Statusbar.WordCount', name: 'Word Count Tiptap Statusbar Extension', - element: () => import('./word-count.tiptap-statusbar-element.js'), + element: () => + import('../extension-apis.bundle.js').then((m) => ({ default: m.UmbTiptapStatusbarWordCountElement })), forExtensions: ['Umb.Tiptap.WordCount'], meta: { alias: 'wordCount',