Consolidated Tiptap extension manifests
"core" is for Tiptap editor native extensions. "toolbar" is custom buttons for the toolbar. Added consistency with the file and class names. Renamed "Code Editor" to "Source Editor", since it's editing the raw HTML source of the RTE, (not "code").
This commit is contained in:
@@ -1,107 +0,0 @@
|
||||
import type { ManifestTiptapExtension } from '../tiptap-extension.js';
|
||||
|
||||
export const manifests: Array<ManifestTiptapExtension> = [
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
alias: 'Umb.Tiptap.Embed',
|
||||
name: 'Embed Tiptap Extension',
|
||||
api: () => import('./embedded-media.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-embed',
|
||||
label: '#general_embed',
|
||||
group: '#tiptap_extGroup_media',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
alias: 'Umb.Tiptap.Link',
|
||||
name: 'Link Tiptap Extension',
|
||||
api: () => import('./link.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-link',
|
||||
label: '#defaultdialogs_urlLinkPicker',
|
||||
group: '#tiptap_extGroup_interactive',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
alias: 'Umb.Tiptap.Figure',
|
||||
name: 'Figure Tiptap Extension',
|
||||
api: () => import('./figure.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-frame',
|
||||
label: 'Figure',
|
||||
group: '#tiptap_extGroup_media',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
alias: 'Umb.Tiptap.Image',
|
||||
name: 'Image Tiptap Extension',
|
||||
api: () => import('./image.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-picture',
|
||||
label: 'Image',
|
||||
group: '#tiptap_extGroup_media',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Subscript',
|
||||
name: 'Subscript Tiptap Extension',
|
||||
api: () => import('./subscript.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-subscript',
|
||||
label: 'Subscript',
|
||||
group: '#tiptap_extGroup_formatting',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Superscript',
|
||||
name: 'Superscript Tiptap Extension',
|
||||
api: () => import('./superscript.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-superscript',
|
||||
label: 'Superscript',
|
||||
group: '#tiptap_extGroup_formatting',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Table',
|
||||
name: 'Table Tiptap Extension',
|
||||
api: () => import('./table.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-table',
|
||||
label: 'Table',
|
||||
group: '#tiptap_extGroup_interactive',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Underline',
|
||||
name: 'Underline Tiptap Extension',
|
||||
api: () => import('./underline.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-underline',
|
||||
label: 'Underline',
|
||||
group: '#tiptap_extGroup_formatting',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
alias: 'Umb.Tiptap.TextAlign',
|
||||
name: 'Text Align Tiptap Extension',
|
||||
api: () => import('./text-align.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-text-align-justify',
|
||||
label: 'Text Align',
|
||||
group: '#tiptap_extGroup_formatting',
|
||||
},
|
||||
},
|
||||
];
|
||||
@@ -1,18 +1,17 @@
|
||||
import { UmbTiptapExtensionApiBase, type UmbTiptapExtensionArgs } from '../types.js';
|
||||
import {
|
||||
TemporaryFileStatus,
|
||||
UmbTemporaryFileManager,
|
||||
type UmbTemporaryFileModel,
|
||||
} from '@umbraco-cms/backoffice/temporary-file';
|
||||
import { UmbTiptapExtensionApiBase } from '../types.js';
|
||||
import type { UmbTiptapExtensionArgs } from '../types.js';
|
||||
import { imageSize } from '@umbraco-cms/backoffice/utils';
|
||||
import { type Editor, Extension } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
import { Extension } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
import { TemporaryFileStatus, UmbTemporaryFileManager } from '@umbraco-cms/backoffice/temporary-file';
|
||||
import { UmbId } from '@umbraco-cms/backoffice/id';
|
||||
import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbLocalizationController } from '@umbraco-cms/backoffice/localization-api';
|
||||
import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import type { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/property-editor';
|
||||
import type { UmbTemporaryFileModel } from '@umbraco-cms/backoffice/temporary-file';
|
||||
|
||||
export default class UmbTiptapMediaUploadExtension extends UmbTiptapExtensionApiBase {
|
||||
export default class UmbTiptapMediaUploadExtensionApi extends UmbTiptapExtensionApiBase {
|
||||
#configuration?: UmbPropertyEditorConfigCollection;
|
||||
|
||||
/**
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapExtensionApiBase } from '../types.js';
|
||||
import { TextAlign } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapTextAlignCenterExtensionApi extends UmbTiptapExtensionApiBase {
|
||||
export default class UmbTiptapTextAlignExtensionApi extends UmbTiptapExtensionApiBase {
|
||||
getTiptapExtensions = () => [
|
||||
TextAlign.configure({
|
||||
types: ['heading', 'paragraph', 'blockquote', 'orderedList', 'bulletList', 'codeBlock'],
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
import type { ManifestTiptapExtension } from './tiptap-extension.js';
|
||||
import { manifests as core } from './core/manifests.js';
|
||||
import { manifests as toolbar } from './toolbar/manifests.js';
|
||||
import type { ManifestTiptapToolbarExtension } from './tiptap-toolbar-extension.js';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
@@ -16,16 +14,425 @@ const kinds: Array<UmbExtensionManifestKind> = [
|
||||
},
|
||||
];
|
||||
|
||||
const coreExtensions: Array<ManifestTiptapExtension> = [
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
alias: 'Umb.Tiptap.Embed',
|
||||
name: 'Embed Tiptap Extension',
|
||||
api: () => import('./core/embedded-media.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-embed',
|
||||
label: '#general_embed',
|
||||
group: '#tiptap_extGroup_media',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
alias: 'Umb.Tiptap.Link',
|
||||
name: 'Link Tiptap Extension',
|
||||
api: () => import('./core/link.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-link',
|
||||
label: '#defaultdialogs_urlLinkPicker',
|
||||
group: '#tiptap_extGroup_interactive',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
alias: 'Umb.Tiptap.Figure',
|
||||
name: 'Figure Tiptap Extension',
|
||||
api: () => import('./core/figure.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-frame',
|
||||
label: 'Figure',
|
||||
group: '#tiptap_extGroup_media',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
alias: 'Umb.Tiptap.Image',
|
||||
name: 'Image Tiptap Extension',
|
||||
api: () => import('./core/image.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-picture',
|
||||
label: 'Image',
|
||||
group: '#tiptap_extGroup_media',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Subscript',
|
||||
name: 'Subscript Tiptap Extension',
|
||||
api: () => import('./core/subscript.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-subscript',
|
||||
label: 'Subscript',
|
||||
group: '#tiptap_extGroup_formatting',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Superscript',
|
||||
name: 'Superscript Tiptap Extension',
|
||||
api: () => import('./core/superscript.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-superscript',
|
||||
label: 'Superscript',
|
||||
group: '#tiptap_extGroup_formatting',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Table',
|
||||
name: 'Table Tiptap Extension',
|
||||
api: () => import('./core/table.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-table',
|
||||
label: 'Table',
|
||||
group: '#tiptap_extGroup_interactive',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Underline',
|
||||
name: 'Underline Tiptap Extension',
|
||||
api: () => import('./core/underline.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-underline',
|
||||
label: 'Underline',
|
||||
group: '#tiptap_extGroup_formatting',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
alias: 'Umb.Tiptap.TextAlign',
|
||||
name: 'Text Align Tiptap Extension',
|
||||
api: () => import('./core/text-align.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-text-align-justify',
|
||||
label: 'Text Align',
|
||||
group: '#tiptap_extGroup_formatting',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
alias: 'Umb.Tiptap.MediaUpload',
|
||||
name: 'Media Upload Tiptap Extension',
|
||||
api: () => import('./core/media-upload.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-image-up',
|
||||
label: 'Media Upload',
|
||||
group: '#tiptap_extGroup_media',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const toolbarExtensions: Array<ManifestTiptapToolbarExtension> = [
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Blockquote',
|
||||
name: 'Blockquote Tiptap Extension',
|
||||
api: () => import('./toolbar/blockquote.extension.js'),
|
||||
weight: 995,
|
||||
meta: {
|
||||
alias: 'blockquote',
|
||||
icon: 'icon-blockquote',
|
||||
label: 'Blockquote',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Bold',
|
||||
name: 'Bold Tiptap Extension',
|
||||
api: () => import('./toolbar/bold.extension.js'),
|
||||
weight: 999,
|
||||
meta: {
|
||||
alias: 'bold',
|
||||
icon: 'icon-bold',
|
||||
label: 'Bold',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.CodeBlock',
|
||||
name: 'Code Block Tiptap Extension',
|
||||
api: () => import('./toolbar/code-block.extension.js'),
|
||||
weight: 994,
|
||||
meta: {
|
||||
alias: 'codeBlock',
|
||||
icon: 'icon-code',
|
||||
label: 'Code Block',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.BulletList',
|
||||
name: 'Bullet List Tiptap Extension',
|
||||
api: () => import('./toolbar/bullet-list.extension.js'),
|
||||
weight: 993,
|
||||
meta: {
|
||||
alias: 'bulletList',
|
||||
icon: 'icon-bulleted-list',
|
||||
label: 'Bullet List',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.OrderedList',
|
||||
name: 'Ordered List Tiptap Extension',
|
||||
api: () => import('./toolbar/ordered-list.extension.js'),
|
||||
weight: 992,
|
||||
meta: {
|
||||
alias: 'orderedList',
|
||||
icon: 'icon-ordered-list',
|
||||
label: 'Ordered List',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Redo',
|
||||
name: 'Redo Tiptap Extension',
|
||||
api: () => import('./toolbar/redo.extension.js'),
|
||||
element: () => import('../components/toolbar/tiptap-toolbar-button-disabled.element.js'),
|
||||
weight: 994,
|
||||
meta: {
|
||||
alias: 'redo',
|
||||
icon: 'icon-redo',
|
||||
label: 'Redo',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Strike',
|
||||
name: 'Strike Tiptap Extension',
|
||||
api: () => import('./toolbar/strike.extension.js'),
|
||||
weight: 996,
|
||||
meta: {
|
||||
alias: 'strike',
|
||||
icon: 'icon-strikethrough',
|
||||
label: 'Strike',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Subscript',
|
||||
name: 'Subscript Tiptap Extension',
|
||||
api: () => import('./toolbar/subscript.extension.js'),
|
||||
weight: 1010,
|
||||
meta: {
|
||||
alias: 'subscript',
|
||||
icon: 'icon-subscript',
|
||||
label: 'Subscript',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Superscript',
|
||||
name: 'Superscript Tiptap Extension',
|
||||
api: () => import('./toolbar/superscript.extension.js'),
|
||||
weight: 1011,
|
||||
meta: {
|
||||
alias: 'superscript',
|
||||
icon: 'icon-superscript',
|
||||
label: 'Superscript',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Table',
|
||||
name: 'Table Tiptap Extension',
|
||||
api: () => import('./toolbar/table.extension.js'),
|
||||
weight: 909,
|
||||
meta: {
|
||||
alias: 'table',
|
||||
icon: 'icon-table',
|
||||
label: 'Table',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Heading1',
|
||||
name: 'Heading 1 Tiptap Extension',
|
||||
api: () => import('./toolbar/heading1.extension.js'),
|
||||
weight: 949,
|
||||
meta: {
|
||||
alias: 'heading1',
|
||||
icon: 'icon-heading-1',
|
||||
label: 'Heading 1',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Heading2',
|
||||
name: 'Heading 2 Tiptap Extension',
|
||||
api: () => import('./toolbar/heading2.extension.js'),
|
||||
weight: 948,
|
||||
meta: {
|
||||
alias: 'heading2',
|
||||
icon: 'icon-heading-2',
|
||||
label: 'Heading 2',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Heading3',
|
||||
name: 'Heading 3 Tiptap Extension',
|
||||
api: () => import('./toolbar/heading3.extension.js'),
|
||||
weight: 947,
|
||||
meta: {
|
||||
alias: 'heading3',
|
||||
icon: 'icon-heading-3',
|
||||
label: 'Heading 3',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.HorizontalRule',
|
||||
name: 'Horizontal Rule Tiptap Extension',
|
||||
api: () => import('./toolbar/horizontal-rule.extension.js'),
|
||||
weight: 991,
|
||||
meta: {
|
||||
alias: 'horizontalRule',
|
||||
icon: 'icon-horizontal-rule',
|
||||
label: 'Horizontal Rule',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Italic',
|
||||
name: 'Italic Tiptap Extension',
|
||||
api: () => import('./toolbar/italic.extension.js'),
|
||||
weight: 998,
|
||||
meta: {
|
||||
alias: 'italic',
|
||||
icon: 'icon-italic',
|
||||
label: 'Italic',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.TextAlignCenter',
|
||||
name: 'Text Align Center Tiptap Extension',
|
||||
api: () => import('./toolbar/text-align-center.extension.js'),
|
||||
weight: 918,
|
||||
meta: {
|
||||
alias: 'text-align-center',
|
||||
icon: 'icon-text-align-center',
|
||||
label: 'Text Align Center',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.TextAlignJustify',
|
||||
name: 'Text Align Justify Tiptap Extension',
|
||||
api: () => import('./toolbar/text-align-justify.extension.js'),
|
||||
weight: 916,
|
||||
meta: {
|
||||
alias: 'text-align-justify',
|
||||
icon: 'icon-text-align-justify',
|
||||
label: 'Text Align Justify',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.TextAlignLeft',
|
||||
name: 'Text Align Left Tiptap Extension',
|
||||
api: () => import('./toolbar/text-align-left.extension.js'),
|
||||
weight: 919,
|
||||
meta: {
|
||||
alias: 'text-align-left',
|
||||
icon: 'icon-text-align-left',
|
||||
label: 'Text Align Left',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.TextAlignRight',
|
||||
name: 'Text Align Right Tiptap Extension',
|
||||
api: () => import('./toolbar/text-align-right.extension.js'),
|
||||
weight: 917,
|
||||
meta: {
|
||||
alias: 'text-align-right',
|
||||
icon: 'icon-text-align-right',
|
||||
label: 'Text Align Right',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Underline',
|
||||
name: 'Underline Tiptap Extension',
|
||||
api: () => import('./toolbar/underline.extension.js'),
|
||||
weight: 997,
|
||||
meta: {
|
||||
alias: 'underline',
|
||||
icon: 'icon-underline',
|
||||
label: 'Underline',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Undo',
|
||||
name: 'Undo Tiptap Extension',
|
||||
api: () => import('./toolbar/undo.extension.js'),
|
||||
element: () => import('../components/toolbar/tiptap-toolbar-button-disabled.element.js'),
|
||||
weight: 994,
|
||||
meta: {
|
||||
alias: 'undo',
|
||||
icon: 'icon-undo',
|
||||
label: 'Undo',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Unlink',
|
||||
name: 'Unlink Tiptap Extension',
|
||||
api: () => import('./toolbar/unlink.extension.js'),
|
||||
element: () => import('../components/toolbar/tiptap-toolbar-button-disabled.element.js'),
|
||||
weight: 101,
|
||||
meta: {
|
||||
alias: 'unlink',
|
||||
icon: 'icon-unlink',
|
||||
label: 'Unlink',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const umbToolbarExtensions: Array<ManifestTiptapToolbarExtension> = [
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.CodeEditor',
|
||||
name: 'Code Editor Tiptap Extension',
|
||||
api: () => import('./umb/code-editor.extension.js'),
|
||||
alias: 'Umb.Tiptap.Toolbar.SourceEditor',
|
||||
name: 'Source Editor Tiptap Extension',
|
||||
api: () => import('./toolbar/source-editor.extension.js'),
|
||||
meta: {
|
||||
alias: 'umb-code-editor',
|
||||
icon: 'icon-code',
|
||||
alias: 'umbSourceEditor',
|
||||
icon: 'icon-code-xml',
|
||||
label: '#general_viewSourceCode',
|
||||
},
|
||||
},
|
||||
@@ -34,7 +441,7 @@ const umbToolbarExtensions: Array<ManifestTiptapToolbarExtension> = [
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Link',
|
||||
name: 'Link Tiptap Extension',
|
||||
api: () => import('./umb/link.extension.js'),
|
||||
api: () => import('./toolbar/link.extension.js'),
|
||||
meta: {
|
||||
alias: 'umbLink',
|
||||
icon: 'icon-link',
|
||||
@@ -46,7 +453,7 @@ const umbToolbarExtensions: Array<ManifestTiptapToolbarExtension> = [
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.MediaPicker',
|
||||
name: 'Media Picker Tiptap Extension',
|
||||
api: () => import('./umb/mediapicker.extension.js'),
|
||||
api: () => import('./toolbar/media-picker.extension.js'),
|
||||
meta: {
|
||||
alias: 'umbMedia',
|
||||
icon: 'icon-picture',
|
||||
@@ -58,7 +465,7 @@ const umbToolbarExtensions: Array<ManifestTiptapToolbarExtension> = [
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Embed',
|
||||
name: 'Embed Tiptap Extension',
|
||||
api: () => import('./umb/embedded-media.extension.js'),
|
||||
api: () => import('./toolbar/embedded-media.extension.js'),
|
||||
meta: {
|
||||
alias: 'umbEmbeddedMedia',
|
||||
icon: 'icon-embed',
|
||||
@@ -67,20 +474,6 @@ const umbToolbarExtensions: Array<ManifestTiptapToolbarExtension> = [
|
||||
},
|
||||
];
|
||||
|
||||
const umbExtensions: Array<ManifestTiptapExtension> = [
|
||||
{
|
||||
type: 'tiptapExtension',
|
||||
alias: 'Umb.Tiptap.MediaUpload',
|
||||
name: 'Media Upload Tiptap Extension',
|
||||
api: () => import('./umb/media-upload.extension.js'),
|
||||
meta: {
|
||||
icon: 'icon-image-up',
|
||||
label: 'Media Upload',
|
||||
group: '#tiptap_extGroup_media',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const extensions = [...core, ...toolbar, ...umbToolbarExtensions, ...umbExtensions];
|
||||
const extensions = [...coreExtensions, ...toolbarExtensions, ...umbToolbarExtensions];
|
||||
|
||||
export const manifests = [...kinds, ...extensions];
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapBlockquoteExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarBlockquoteExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override execute(editor?: Editor) {
|
||||
editor?.chain().focus().toggleBlockquote().run();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapBoldExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarBoldExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override execute(editor?: Editor) {
|
||||
editor?.chain().focus().toggleBold().run();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapBulletListExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarBulletListExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override execute(editor?: Editor) {
|
||||
editor?.chain().focus().toggleBulletList().run();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapCodeBlockExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarCodeBlockExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override execute(editor?: Editor) {
|
||||
// editor.chain().focus().toggleCode().run();
|
||||
editor?.chain().focus().toggleCodeBlock().run();
|
||||
|
||||
@@ -4,7 +4,7 @@ import { UMB_EMBEDDED_MEDIA_MODAL } from '@umbraco-cms/backoffice/embedded-media
|
||||
import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapEmbedExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarEmbeddedMediaExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override isActive = (editor: Editor) => editor.isActive(umbEmbeddedMedia.name) === true;
|
||||
|
||||
override async execute(editor?: Editor) {
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapHeading1ExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarHeading1ExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override isActive(editor?: Editor) {
|
||||
return editor?.isActive('heading', { level: 1 }) === true;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapHeading2ExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarHeading2ExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override isActive(editor?: Editor) {
|
||||
return editor?.isActive('heading', { level: 2 }) === true;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapHeading3ExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarHeading3ExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override isActive(editor?: Editor) {
|
||||
return editor?.isActive('heading', { level: 3 }) === true;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapHorizontalRuleExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarHorizontalRuleExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override execute(editor?: Editor) {
|
||||
editor?.chain().focus().setHorizontalRule().run();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapItalicExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarItalicExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override execute(editor?: Editor) {
|
||||
editor?.chain().focus().toggleItalic().run();
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
import type { UmbLinkPickerLink } from '@umbraco-cms/backoffice/multi-url-picker';
|
||||
import type { UUIModalSidebarSize } from '@umbraco-cms/backoffice/external/uui';
|
||||
|
||||
export default class UmbTiptapLinkExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarLinkExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override async execute(editor?: Editor) {
|
||||
const attrs = editor?.getAttributes(UmbLink.name) ?? {};
|
||||
const link = this.#getLinkData(attrs);
|
||||
@@ -1,296 +0,0 @@
|
||||
import type {
|
||||
ManifestTiptapToolbarExtension,
|
||||
ManifestTiptapToolbarExtensionButtonKind,
|
||||
} from '../tiptap-toolbar-extension.js';
|
||||
|
||||
export const manifests: Array<ManifestTiptapToolbarExtension | ManifestTiptapToolbarExtensionButtonKind> = [
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Blockquote',
|
||||
name: 'Blockquote Tiptap Extension',
|
||||
api: () => import('./blockquote.extension.js'),
|
||||
weight: 995,
|
||||
meta: {
|
||||
alias: 'blockquote',
|
||||
icon: 'icon-blockquote',
|
||||
label: 'Blockquote',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Bold',
|
||||
name: 'Bold Tiptap Extension',
|
||||
api: () => import('./bold.extension.js'),
|
||||
weight: 999,
|
||||
meta: {
|
||||
alias: 'bold',
|
||||
icon: 'icon-bold',
|
||||
label: 'Bold',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.CodeBlock',
|
||||
name: 'Code Block Tiptap Extension',
|
||||
api: () => import('./code-block.extension.js'),
|
||||
weight: 994,
|
||||
meta: {
|
||||
alias: 'codeBlock',
|
||||
icon: 'icon-code',
|
||||
label: 'Code Block',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.BulletList',
|
||||
name: 'Bullet List Tiptap Extension',
|
||||
api: () => import('./bullet-list.extension.js'),
|
||||
weight: 993,
|
||||
meta: {
|
||||
alias: 'bulletList',
|
||||
icon: 'icon-bulleted-list',
|
||||
label: 'Bullet List',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.OrderedList',
|
||||
name: 'Ordered List Tiptap Extension',
|
||||
api: () => import('./ordered-list.extension.js'),
|
||||
weight: 992,
|
||||
meta: {
|
||||
alias: 'orderedList',
|
||||
icon: 'icon-ordered-list',
|
||||
label: 'Ordered List',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Redo',
|
||||
name: 'Redo Tiptap Extension',
|
||||
api: () => import('./redo.extension.js'),
|
||||
element: () => import('../../components/toolbar/tiptap-toolbar-button-disabled.element.js'),
|
||||
weight: 994,
|
||||
meta: {
|
||||
alias: 'redo',
|
||||
icon: 'icon-redo',
|
||||
label: 'Redo',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Strike',
|
||||
name: 'Strike Tiptap Extension',
|
||||
api: () => import('./strike.extension.js'),
|
||||
weight: 996,
|
||||
meta: {
|
||||
alias: 'strike',
|
||||
icon: 'icon-strikethrough',
|
||||
label: 'Strike',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Subscript',
|
||||
name: 'Subscript Tiptap Extension',
|
||||
api: () => import('./subscript.extension.js'),
|
||||
weight: 1010,
|
||||
meta: {
|
||||
alias: 'subscript',
|
||||
icon: 'icon-subscript',
|
||||
label: 'Subscript',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Superscript',
|
||||
name: 'Superscript Tiptap Extension',
|
||||
api: () => import('./superscript.extension.js'),
|
||||
weight: 1011,
|
||||
meta: {
|
||||
alias: 'superscript',
|
||||
icon: 'icon-superscript',
|
||||
label: 'Superscript',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Table',
|
||||
name: 'Table Tiptap Extension',
|
||||
api: () => import('./table.extension.js'),
|
||||
weight: 909,
|
||||
meta: {
|
||||
alias: 'table',
|
||||
icon: 'icon-table',
|
||||
label: 'Table',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Heading1',
|
||||
name: 'Heading 1 Tiptap Extension',
|
||||
api: () => import('./heading1.extension.js'),
|
||||
weight: 949,
|
||||
meta: {
|
||||
alias: 'heading1',
|
||||
icon: 'icon-heading-1',
|
||||
label: 'Heading 1',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Heading2',
|
||||
name: 'Heading 2 Tiptap Extension',
|
||||
api: () => import('./heading2.extension.js'),
|
||||
weight: 948,
|
||||
meta: {
|
||||
alias: 'heading2',
|
||||
icon: 'icon-heading-2',
|
||||
label: 'Heading 2',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Heading3',
|
||||
name: 'Heading 3 Tiptap Extension',
|
||||
api: () => import('./heading3.extension.js'),
|
||||
weight: 947,
|
||||
meta: {
|
||||
alias: 'heading3',
|
||||
icon: 'icon-heading-3',
|
||||
label: 'Heading 3',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.HorizontalRule',
|
||||
name: 'Horizontal Rule Tiptap Extension',
|
||||
api: () => import('./horizontal-rule.extension.js'),
|
||||
weight: 991,
|
||||
meta: {
|
||||
alias: 'horizontalRule',
|
||||
icon: 'icon-horizontal-rule',
|
||||
label: 'Horizontal Rule',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Italic',
|
||||
name: 'Italic Tiptap Extension',
|
||||
api: () => import('./italic.extension.js'),
|
||||
weight: 998,
|
||||
meta: {
|
||||
alias: 'italic',
|
||||
icon: 'icon-italic',
|
||||
label: 'Italic',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.TextAlignCenter',
|
||||
name: 'Text Align Center Tiptap Extension',
|
||||
api: () => import('./text-align-center.extension.js'),
|
||||
weight: 918,
|
||||
meta: {
|
||||
alias: 'text-align-center',
|
||||
icon: 'icon-text-align-center',
|
||||
label: 'Text Align Center',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.TextAlignJustify',
|
||||
name: 'Text Align Justify Tiptap Extension',
|
||||
api: () => import('./text-align-justify.extension.js'),
|
||||
weight: 916,
|
||||
meta: {
|
||||
alias: 'text-align-justify',
|
||||
icon: 'icon-text-align-justify',
|
||||
label: 'Text Align Justify',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.TextAlignLeft',
|
||||
name: 'Text Align Left Tiptap Extension',
|
||||
api: () => import('./text-align-left.extension.js'),
|
||||
weight: 919,
|
||||
meta: {
|
||||
alias: 'text-align-left',
|
||||
icon: 'icon-text-align-left',
|
||||
label: 'Text Align Left',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.TextAlignRight',
|
||||
name: 'Text Align Right Tiptap Extension',
|
||||
api: () => import('./text-align-right.extension.js'),
|
||||
weight: 917,
|
||||
meta: {
|
||||
alias: 'text-align-right',
|
||||
icon: 'icon-text-align-right',
|
||||
label: 'Text Align Right',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Underline',
|
||||
name: 'Underline Tiptap Extension',
|
||||
api: () => import('./underline.extension.js'),
|
||||
weight: 997,
|
||||
meta: {
|
||||
alias: 'underline',
|
||||
icon: 'icon-underline',
|
||||
label: 'Underline',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Undo',
|
||||
name: 'Undo Tiptap Extension',
|
||||
api: () => import('./undo.extension.js'),
|
||||
element: () => import('../../components/toolbar/tiptap-toolbar-button-disabled.element.js'),
|
||||
weight: 994,
|
||||
meta: {
|
||||
alias: 'undo',
|
||||
icon: 'icon-undo',
|
||||
label: 'Undo',
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'tiptapToolbarExtension',
|
||||
kind: 'button',
|
||||
alias: 'Umb.Tiptap.Toolbar.Unlink',
|
||||
name: 'Unlink Tiptap Extension',
|
||||
api: () => import('./unlink.extension.js'),
|
||||
element: () => import('../../components/toolbar/tiptap-toolbar-button-disabled.element.js'),
|
||||
weight: 101,
|
||||
meta: {
|
||||
alias: 'unlink',
|
||||
icon: 'icon-unlink',
|
||||
label: 'Unlink',
|
||||
},
|
||||
},
|
||||
];
|
||||
@@ -1,16 +1,13 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import {
|
||||
UMB_MEDIA_CAPTION_ALT_TEXT_MODAL,
|
||||
UMB_MEDIA_PICKER_MODAL,
|
||||
type UmbMediaCaptionAltTextModalValue,
|
||||
} from '@umbraco-cms/backoffice/media';
|
||||
import { getGuidFromUdi, getProcessedImageUrl, imageSize } from '@umbraco-cms/backoffice/utils';
|
||||
import { ImageCropModeModel } from '@umbraco-cms/backoffice/external/backend-api';
|
||||
import { UMB_MEDIA_CAPTION_ALT_TEXT_MODAL, UMB_MEDIA_PICKER_MODAL } from '@umbraco-cms/backoffice/media';
|
||||
import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { getGuidFromUdi, getProcessedImageUrl, imageSize } from '@umbraco-cms/backoffice/utils';
|
||||
import { ImageCropModeModel } from '@umbraco-cms/backoffice/external/backend-api';
|
||||
import type { UmbMediaCaptionAltTextModalValue } from '@umbraco-cms/backoffice/media';
|
||||
|
||||
export default class UmbTiptapMediaPickerToolbarExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarMediaPickerToolbarExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
#modalManager?: typeof UMB_MODAL_MANAGER_CONTEXT.TYPE;
|
||||
|
||||
/**
|
||||
@@ -2,7 +2,7 @@ import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import { OrderedList, ListItem } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapOrderedListExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarOrderedListExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
getTiptapExtensions = () => [OrderedList, ListItem];
|
||||
|
||||
override execute(editor?: Editor) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapRedoExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarRedoExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override isActive(editor: Editor): boolean {
|
||||
return editor.can().redo();
|
||||
}
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import { UMB_CODE_EDITOR_MODAL } from '@umbraco-cms/backoffice/code-editor';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapCodeEditorExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarSourceEditorExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override async execute(editor?: Editor) {
|
||||
console.log('umb-code-editor.execute', editor);
|
||||
if (!editor) return;
|
||||
|
||||
const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapStrikeExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarStrikeExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override execute(editor?: Editor) {
|
||||
editor?.chain().focus().toggleStrike().run();
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import { customElement, state } from '@umbraco-cms/backoffice/external/lit';
|
||||
const elementName = 'umb-tiptap-style-select-toolbar-element';
|
||||
|
||||
@customElement(elementName)
|
||||
export class UmbTiptapStyleSelectToolbarElement extends UmbTiptapToolbarDropdownBaseElement {
|
||||
export class UmbTiptapToolbarStyleSelectToolbarElement extends UmbTiptapToolbarDropdownBaseElement {
|
||||
protected override label = 'Style select';
|
||||
|
||||
@state()
|
||||
@@ -15,10 +15,10 @@ export class UmbTiptapStyleSelectToolbarElement extends UmbTiptapToolbarDropdown
|
||||
static override readonly styles = UmbTiptapToolbarDropdownBaseElement.styles;
|
||||
}
|
||||
|
||||
export { UmbTiptapStyleSelectToolbarElement as element };
|
||||
export { UmbTiptapToolbarStyleSelectToolbarElement as element };
|
||||
|
||||
declare global {
|
||||
interface HTMLElementTagNameMap {
|
||||
[elementName]: UmbTiptapStyleSelectToolbarElement;
|
||||
[elementName]: UmbTiptapToolbarStyleSelectToolbarElement;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapBoldExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarSubscriptExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override execute(editor?: Editor) {
|
||||
editor?.chain().focus().toggleSubscript().run();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapBoldExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarSuperscriptExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override execute(editor?: Editor) {
|
||||
editor?.chain().focus().toggleSuperscript().run();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapTableExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarTableExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override execute(editor?: Editor) {
|
||||
editor?.commands.insertTable({ rows: 3, cols: 3, withHeaderRow: true });
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapTextAlignCenterExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarTextAlignCenterExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override isActive(editor?: Editor) {
|
||||
return editor?.isActive({ textAlign: 'center' }) === true;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapTextAlignJustifyExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarTextAlignJustifyExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override isActive(editor?: Editor) {
|
||||
return editor?.isActive({ textAlign: 'justify' }) === true;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapTextAlignLeftExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarTextAlignLeftExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override isActive(editor?: Editor) {
|
||||
return editor?.isActive({ textAlign: 'left' }) === true;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapTextAlignRightExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarTextAlignRightExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override isActive(editor?: Editor) {
|
||||
return editor?.isActive({ textAlign: 'right' }) === true;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapUnderlineExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarUnderlineExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override execute(editor?: Editor) {
|
||||
editor?.chain().focus().toggleUnderline().run();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapUndoExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarUndoExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override isActive(editor: Editor): boolean {
|
||||
return editor.can().undo();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UmbTiptapToolbarElementApiBase } from '../types.js';
|
||||
import type { Editor } from '@umbraco-cms/backoffice/external/tiptap';
|
||||
|
||||
export default class UmbTiptapUnlinkExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
export default class UmbTiptapToolbarUnlinkExtensionApi extends UmbTiptapToolbarElementApiBase {
|
||||
override isActive = (editor?: Editor) => editor?.isActive('umbLink') ?? false;
|
||||
|
||||
override execute(editor?: Editor) {
|
||||
|
||||
@@ -54,7 +54,7 @@ export const manifests: Array<ManifestPropertyEditorUi> = [
|
||||
alias: 'toolbar',
|
||||
value: [
|
||||
[
|
||||
['Umb.Tiptap.Toolbar.CodeEditor'],
|
||||
['Umb.Tiptap.Toolbar.SourceEditor'],
|
||||
['Umb.Tiptap.Toolbar.Bold', 'Umb.Tiptap.Toolbar.Italic', 'Umb.Tiptap.Toolbar.Underline'],
|
||||
[
|
||||
'Umb.Tiptap.Toolbar.TextAlignLeft',
|
||||
|
||||
Reference in New Issue
Block a user