@acorex/cdk 22.4.8 → 22.4.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-cdk-text-editor.mjs +942 -0
- package/fesm2022/acorex-cdk-text-editor.mjs.map +1 -0
- package/fesm2022/acorex-cdk-wysiwyg.mjs +2 -2
- package/fesm2022/acorex-cdk-wysiwyg.mjs.map +1 -1
- package/package.json +8 -2
- package/text-editor/README.md +5 -0
- package/types/acorex-cdk-text-editor.d.ts +156 -0
- package/types/acorex-cdk-wysiwyg.d.ts +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-cdk-text-editor.mjs","sources":["../../../../packages/cdk/text-editor/src/lib/text-editor.types.ts","../../../../packages/cdk/text-editor/src/lib/text-editor.class.ts","../../../../packages/cdk/text-editor/src/lib/text-editor.commands.ts","../../../../packages/cdk/text-editor/src/lib/text-editor.extensions.ts","../../../../packages/cdk/text-editor/src/acorex-cdk-text-editor.ts"],"sourcesContent":["import type { Content, Editor, Extensions, JSONContent } from '@tiptap/core';\n\nexport type AXTextEditorTiptapEditor = Editor;\nexport type AXTextEditorTiptapContent = Content;\nexport type AXTextEditorTiptapJSON = JSONContent;\nexport type AXTextEditorTiptapChain = ReturnType<Editor['chain']>;\n\nexport type AXTextEditorHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type AXTextEditorTextAlign = 'left' | 'center' | 'right' | 'justify';\nexport type AXTextEditorTextDirection = 'rtl' | 'ltr';\nexport type AXTextEditorFontSizeToken = 'small' | 'large' | 'huge';\n\nexport const AX_TEXT_EDITOR_FONT_SIZE_TOKEN_VALUES: Record<AXTextEditorFontSizeToken, string> = {\n small: '0.75em',\n large: '1.5em',\n huge: '2.5em',\n};\n\nexport type AXTextEditorCommandAttrs = Record<string, unknown>;\n\nexport const AX_TEXT_EDITOR_ZOOM_PRESETS = [40, 50, 75, 90, 100, 125, 150, 175, 200] as const;\nexport const AX_TEXT_EDITOR_ZOOM_MIN = 40;\nexport const AX_TEXT_EDITOR_ZOOM_MAX = 200;\n\nexport const AX_TEXT_EDITOR_FONT_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 20, 24, 28, 32, 36, 48, 72] as const;\nexport type AXTextEditorFontSize = (typeof AX_TEXT_EDITOR_FONT_SIZES)[number];\n\nexport const AX_TEXT_EDITOR_DEFAULT_TEXT_COLORS = [\n '#f59e0b',\n '#eab308',\n '#22c55e',\n '#06b6d4',\n '#3b82f6',\n '#a855f7',\n '#ec4899',\n '#ef4444',\n];\n\nexport const AX_TEXT_EDITOR_DEFAULT_BACKGROUND_COLORS = [\n '#ffffff',\n '#f5e6c8',\n '#fde68a',\n '#f9a8d4',\n '#bbf7d0',\n '#ddd6fe',\n '#fbcfe8',\n '#fdba74',\n];\n\nexport interface AXTextEditorRecentColor {\n color: string;\n kind: 'text' | 'background';\n}\n\nexport type AXTextEditorCommandType =\n | 'undo'\n | 'redo'\n | 'bold'\n | 'italic'\n | 'underline'\n | 'strike'\n | 'heading'\n | 'paragraph'\n | 'align'\n | 'direction'\n | 'color'\n | 'highlight'\n | 'fontSize'\n | 'bulletList'\n | 'orderedList'\n | 'superscript'\n | 'subscript'\n | 'link'\n | 'unlink'\n | 'blockquote'\n | 'code'\n | 'codeBlock'\n | 'horizontalRule'\n | 'image'\n | 'video'\n | 'insertTable'\n | 'addColumnBefore'\n | 'addColumnAfter'\n | 'deleteColumn'\n | 'addRowBefore'\n | 'addRowAfter'\n | 'deleteRow'\n | 'toggleHeaderRow'\n | 'deleteTable';\n\nexport interface AXTextEditorFeatures {\n table?: boolean;\n image?: boolean;\n video?: boolean;\n superscript?: boolean;\n subscript?: boolean;\n keepSelection?: boolean;\n placeholder?: boolean;\n}\n\nexport const AX_DEFAULT_TEXT_EDITOR_FEATURES: AXTextEditorFeatures = {\n table: true,\n image: true,\n video: true,\n superscript: true,\n subscript: true,\n keepSelection: true,\n placeholder: true,\n};\n\nexport interface AXTextEditorLoadExtensionsOptions {\n placeholder?: string | (() => string);\n features?: AXTextEditorFeatures;\n headingLevels?: AXTextEditorHeadingLevel[];\n extensions?: Extensions;\n}\n\nexport interface AXTextEditorState {\n bold: boolean;\n italic: boolean;\n underline: boolean;\n strike: boolean;\n code: boolean;\n codeBlock: boolean;\n headingLevel: AXTextEditorHeadingLevel | null;\n bulletList: boolean;\n orderedList: boolean;\n blockquote: boolean;\n superscript: boolean;\n subscript: boolean;\n textAlign: AXTextEditorTextAlign | null;\n textColor: string | null;\n highlightColor: string | null;\n linkHref: string | null;\n fontSize: string | null;\n textDirection: AXTextEditorTextDirection | null;\n table: boolean;\n canUndo: boolean;\n canRedo: boolean;\n isEmpty: boolean;\n isFocused: boolean;\n}\n\nexport const AX_EMPTY_TEXT_EDITOR_STATE: AXTextEditorState = {\n bold: false,\n italic: false,\n underline: false,\n strike: false,\n code: false,\n codeBlock: false,\n headingLevel: null,\n bulletList: false,\n orderedList: false,\n blockquote: false,\n superscript: false,\n subscript: false,\n textAlign: null,\n textColor: null,\n highlightColor: null,\n linkHref: null,\n fontSize: null,\n textDirection: null,\n table: false,\n canUndo: false,\n canRedo: false,\n isEmpty: true,\n isFocused: false,\n};\n\nexport interface AXTextEditorInitOptions {\n content?: AXTextEditorTiptapContent;\n editable?: boolean;\n placeholder?: string | (() => string);\n features?: AXTextEditorFeatures;\n headingLevels?: AXTextEditorHeadingLevel[];\n extensions?: Extensions;\n editorProps?: import('@tiptap/core').EditorOptions['editorProps'];\n /** @deprecated Use `editable: false` instead. */\n readOnly?: boolean;\n onUpdate?: (editor: AXTextEditorTiptapEditor) => void;\n onFocus?: (editor: AXTextEditorTiptapEditor, event?: FocusEvent) => void;\n onBlur?: (editor: AXTextEditorTiptapEditor, event?: FocusEvent) => void;\n onSelectionUpdate?: (editor: AXTextEditorTiptapEditor) => void;\n onTransaction?: (editor: AXTextEditorTiptapEditor) => void;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n superscript: {\n toggleSuperscript: () => ReturnType;\n };\n subscript: {\n toggleSubscript: () => ReturnType;\n };\n axTextEditorFontSize: {\n setFontSize: (size: string | null) => ReturnType;\n };\n axTextEditorVideo: {\n setVideo: (options: { src: string }) => ReturnType;\n };\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport {\n AX_EMPTY_TEXT_EDITOR_STATE,\n type AXTextEditorCommandAttrs,\n type AXTextEditorCommandType,\n type AXTextEditorHeadingLevel,\n type AXTextEditorInitOptions,\n type AXTextEditorState,\n type AXTextEditorTextAlign,\n type AXTextEditorTextDirection,\n type AXTextEditorTiptapChain,\n type AXTextEditorTiptapContent,\n type AXTextEditorTiptapEditor,\n type AXTextEditorTiptapJSON,\n} from './text-editor.types';\n\n@Injectable()\nexport class AXTextEditor {\n readonly editor = signal<AXTextEditorTiptapEditor | null>(null);\n readonly state = signal<AXTextEditorState>(AX_EMPTY_TEXT_EDITOR_STATE);\n readonly ready = signal(false);\n readonly version = signal(0);\n\n private readonly platformId = inject(PLATFORM_ID);\n private destroyed = false;\n private applyingContent = false;\n\n async init(container: HTMLElement | string, options: AXTextEditorInitOptions = {}): Promise<void> {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const element =\n typeof container === 'string' ? (document.querySelector(container) as HTMLElement | null) : container;\n if (!element) {\n return;\n }\n\n this.destroyed = false;\n const editable = options.readOnly === true ? false : (options.editable ?? true);\n\n const [{ createTextEditorExtensions }, commandsApi, { Editor }] = await Promise.all([\n import('./text-editor.extensions'),\n import('./text-editor.commands'),\n import('@tiptap/core'),\n ]);\n this.commandsApi = commandsApi;\n\n const extensions = await createTextEditorExtensions({\n placeholder: options.placeholder,\n features: options.features,\n headingLevels: options.headingLevels,\n extensions: options.extensions,\n });\n\n if (this.destroyed) {\n return;\n }\n\n const editor = new Editor({\n element,\n extensions,\n content: options.content ?? '',\n editable,\n editorProps: {\n ...options.editorProps,\n attributes: {\n class: 'ax-text-editor-prose',\n ...(typeof options.editorProps?.attributes === 'object' ? options.editorProps.attributes : {}),\n },\n handleDOMEvents: {\n ...options.editorProps?.handleDOMEvents,\n },\n },\n onUpdate: ({ editor: ed }) => {\n this.refreshState(ed);\n if (!this.applyingContent) {\n options.onUpdate?.(ed);\n }\n },\n onSelectionUpdate: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onSelectionUpdate?.(ed);\n },\n onTransaction: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onTransaction?.(ed);\n },\n onFocus: ({ editor: ed, event }) => {\n this.refreshState(ed);\n options.onFocus?.(ed, event);\n },\n onBlur: ({ editor: ed, event }) => {\n this.refreshState(ed);\n options.onBlur?.(ed, event);\n },\n });\n\n this.editor.set(editor);\n this.ready.set(true);\n this.refreshState(editor);\n }\n\n destroy(): void {\n this.destroyed = true;\n const ed = this.editor();\n ed?.destroy();\n this.editor.set(null);\n this.ready.set(false);\n this.state.set(AX_EMPTY_TEXT_EDITOR_STATE);\n this.version.set(0);\n this.commandsApi = null;\n }\n\n refresh(): void {\n const ed = this.editor();\n if (ed) {\n this.refreshState(ed);\n }\n }\n\n setContent(value: AXTextEditorTiptapContent | null | undefined, emit = false): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n\n const content = value == null || value === '' ? '' : value;\n this.applyingContent = true;\n try {\n ed.commands.setContent(content, { emitUpdate: emit });\n this.refreshState(ed);\n } finally {\n this.applyingContent = false;\n }\n }\n\n getHTML(): string {\n return this.editor()?.getHTML() ?? '';\n }\n\n getJSON(): AXTextEditorTiptapJSON | null {\n return this.editor()?.getJSON() ?? null;\n }\n\n getText(options?: { blockSeparator?: string }): string {\n return this.editor()?.getText(options) ?? '';\n }\n\n isEmpty(): boolean {\n return this.editor()?.isEmpty ?? true;\n }\n\n isFocused(): boolean {\n return this.editor()?.isFocused ?? false;\n }\n\n isEditable(): boolean {\n return this.editor()?.isEditable ?? false;\n }\n\n setEditable(editable: boolean): void {\n const ed = this.editor();\n if (!ed || ed.isEditable === editable) {\n return;\n }\n ed.setEditable(editable, false);\n this.refreshState(ed);\n }\n\n focus(): void {\n this.editor()?.commands.focus();\n }\n\n blur(): void {\n this.editor()?.commands.blur();\n }\n\n chain(): AXTextEditorTiptapChain | null {\n return this.editor()?.chain() ?? null;\n }\n\n get commands(): AXTextEditorTiptapEditor['commands'] | undefined {\n return this.editor()?.commands;\n }\n\n isActive(command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean {\n this.version();\n const ed = this.editor();\n if (!ed) {\n return false;\n }\n return this.getCommandsApi().isTextEditorCommandActive(ed, command, attrs);\n }\n\n can(command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean {\n this.version();\n const ed = this.editor();\n if (!ed || !ed.isEditable) {\n return false;\n }\n return this.getCommandsApi().canRunTextEditorCommand(ed, command, attrs);\n }\n\n run(command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean {\n const ed = this.editor();\n if (!ed || !ed.isEditable) {\n return false;\n }\n const result = this.getCommandsApi().runTextEditorCommand(ed, command, attrs);\n this.refreshState(ed);\n return result;\n }\n\n private commandsApi: typeof import('./text-editor.commands') | null = null;\n\n private getCommandsApi(): typeof import('./text-editor.commands') {\n if (!this.commandsApi) {\n throw new Error('AXTextEditor commands are not loaded. Call init() first.');\n }\n return this.commandsApi;\n }\n\n insertContent(value: AXTextEditorTiptapContent): boolean {\n const result = this.editor()?.chain().focus().insertContent(value).run() ?? false;\n this.refresh();\n return result;\n }\n\n clearContent(): boolean {\n const result = this.editor()?.commands.clearContent() ?? false;\n this.refresh();\n return result;\n }\n\n insertImage(src: string, alt?: string): void {\n this.run('image', { src, alt });\n }\n\n insertVideo(src: string): void {\n this.run('video', { src });\n }\n\n setLink(href: string): void {\n this.run('link', { href });\n }\n\n unsetLink(): void {\n this.run('unlink');\n }\n\n clearFormatting(): void {\n this.editor()?.chain().focus().clearNodes().unsetAllMarks().run();\n this.refresh();\n }\n\n toggleHeading(level: AXTextEditorHeadingLevel): void {\n this.run('heading', { level });\n }\n\n setTextAlign(align: AXTextEditorTextAlign): void {\n this.run('align', { align });\n }\n\n setTextDirection(direction: AXTextEditorTextDirection): void {\n this.run('direction', { direction });\n }\n\n private refreshState(editor: AXTextEditorTiptapEditor): void {\n this.version.update((value) => value + 1);\n\n const textColor = editor.getAttributes('textStyle')['color'] as string | undefined;\n const fontSizeCss = editor.getAttributes('textStyle')['fontSize'] as string | undefined;\n const highlightColor = editor.getAttributes('highlight')['color'] as string | undefined;\n const linkHref = editor.getAttributes('link')['href'] as string | undefined;\n const dir = (editor.getAttributes('paragraph')['dir'] || editor.getAttributes('heading')['dir']) as\n | AXTextEditorTextDirection\n | undefined;\n\n let headingLevel: AXTextEditorHeadingLevel | null = null;\n for (let level = 1; level <= 6; level++) {\n if (editor.isActive('heading', { level })) {\n headingLevel = level as AXTextEditorHeadingLevel;\n break;\n }\n }\n\n let textAlign: AXTextEditorTextAlign | null = null;\n for (const align of ['left', 'center', 'right', 'justify'] as AXTextEditorTextAlign[]) {\n if (editor.isActive({ textAlign: align })) {\n textAlign = align;\n break;\n }\n }\n\n this.state.set({\n bold: editor.isActive('bold'),\n italic: editor.isActive('italic'),\n underline: editor.isActive('underline'),\n strike: editor.isActive('strike'),\n code: editor.isActive('code'),\n codeBlock: editor.isActive('codeBlock'),\n headingLevel,\n bulletList: editor.isActive('bulletList'),\n orderedList: editor.isActive('orderedList'),\n blockquote: editor.isActive('blockquote'),\n superscript: editor.isActive('superscript'),\n subscript: editor.isActive('subscript'),\n textAlign,\n textColor: textColor ?? null,\n highlightColor: highlightColor ?? null,\n linkHref: linkHref ?? null,\n fontSize: fontSizeCss ?? null,\n textDirection: dir ?? null,\n table: editor.isActive('table'),\n canUndo: editor.can().undo(),\n canRedo: editor.can().redo(),\n isEmpty: editor.isEmpty,\n isFocused: editor.isFocused,\n });\n }\n}\n","import {\n AX_TEXT_EDITOR_FONT_SIZE_TOKEN_VALUES,\n type AXTextEditorCommandAttrs,\n type AXTextEditorCommandType,\n type AXTextEditorFontSizeToken,\n type AXTextEditorHeadingLevel,\n type AXTextEditorTiptapEditor,\n} from './text-editor.types';\n\nfunction escapeHtml(value: string): string {\n return value.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('\"', '"');\n}\n\nfunction normalizeHref(value: string): string {\n const href = value.trim();\n if (!href) return '';\n if (/^(https?:|mailto:|tel:|#|\\/)/i.test(href)) return href;\n return `https://${href}`;\n}\n\nfunction headingLevel(attrs?: AXTextEditorCommandAttrs): AXTextEditorHeadingLevel | undefined {\n const level = Number(attrs?.['level']);\n if (level >= 1 && level <= 6) {\n return level as AXTextEditorHeadingLevel;\n }\n return undefined;\n}\n\nfunction resolveFontSize(attrs?: AXTextEditorCommandAttrs): string | null {\n const raw = attrs?.['size'];\n if (raw == null || raw === '') {\n return null;\n }\n const size = String(raw);\n if (size === 'small' || size === 'large' || size === 'huge') {\n return AX_TEXT_EDITOR_FONT_SIZE_TOKEN_VALUES[size as AXTextEditorFontSizeToken];\n }\n return size;\n}\n\nexport function isTextEditorCommandActive(\n editor: AXTextEditorTiptapEditor,\n command: AXTextEditorCommandType,\n attrs?: AXTextEditorCommandAttrs,\n): boolean {\n switch (command) {\n case 'heading': {\n const level = headingLevel(attrs);\n return level ? editor.isActive('heading', { level }) : editor.isActive('heading');\n }\n case 'paragraph':\n return editor.isActive('paragraph');\n case 'align':\n return editor.isActive({ textAlign: attrs?.['align'] });\n case 'direction':\n return editor.isActive({ dir: attrs?.['direction'] });\n case 'link':\n return editor.isActive('link');\n case 'image':\n return editor.isActive('image');\n case 'video':\n return editor.isActive('video');\n case 'fontSize':\n return Boolean(editor.getAttributes('textStyle')?.['fontSize']);\n case 'insertTable':\n return editor.isActive('table');\n case 'unlink':\n case 'color':\n case 'highlight':\n case 'undo':\n case 'redo':\n case 'horizontalRule':\n return false;\n default:\n return editor.isActive(command);\n }\n}\n\nexport function canRunTextEditorCommand(\n editor: AXTextEditorTiptapEditor,\n command: AXTextEditorCommandType,\n attrs?: AXTextEditorCommandAttrs,\n): boolean {\n switch (command) {\n case 'undo':\n return editor.can().undo();\n case 'redo':\n return editor.can().redo();\n case 'heading': {\n const level = headingLevel(attrs);\n return level ? editor.can().setHeading({ level }) : editor.can().setParagraph();\n }\n case 'paragraph':\n return editor.can().setParagraph();\n case 'align':\n return editor.can().setTextAlign(String(attrs?.['align'] ?? 'left'));\n case 'direction':\n return true;\n case 'color':\n return attrs?.['color'] ? editor.can().setColor(String(attrs['color'])) : editor.can().unsetColor();\n case 'highlight':\n return attrs?.['color']\n ? editor.can().setHighlight({ color: String(attrs['color']) })\n : editor.can().unsetHighlight();\n case 'fontSize':\n return editor.isEditable;\n case 'link':\n return editor.isEditable;\n case 'unlink':\n return editor.isEditable && editor.can().unsetLink();\n case 'image':\n case 'video':\n return editor.isEditable;\n case 'insertTable':\n return editor.can().insertTable({\n rows: Number(attrs?.['rows'] ?? 3),\n cols: Number(attrs?.['cols'] ?? 3),\n withHeaderRow: Boolean(attrs?.['withHeaderRow'] ?? false),\n });\n case 'addColumnBefore':\n return editor.can().addColumnBefore();\n case 'addColumnAfter':\n return editor.can().addColumnAfter();\n case 'deleteColumn':\n return editor.can().deleteColumn();\n case 'addRowBefore':\n return editor.can().addRowBefore();\n case 'addRowAfter':\n return editor.can().addRowAfter();\n case 'deleteRow':\n return editor.can().deleteRow();\n case 'toggleHeaderRow':\n return editor.can().toggleHeaderRow();\n case 'deleteTable':\n return editor.can().deleteTable();\n case 'blockquote':\n return editor.can().toggleBlockquote();\n case 'code':\n return editor.can().toggleCode();\n case 'codeBlock':\n return editor.can().toggleCodeBlock();\n case 'horizontalRule':\n return editor.can().setHorizontalRule();\n case 'bulletList':\n return editor.isEditable && Boolean(editor.schema.nodes['bulletList']);\n case 'orderedList':\n return editor.isEditable && Boolean(editor.schema.nodes['orderedList']);\n case 'superscript':\n return editor.can().toggleSuperscript();\n case 'subscript':\n return editor.can().toggleSubscript();\n case 'bold':\n return editor.can().toggleBold();\n case 'italic':\n return editor.can().toggleItalic();\n case 'underline':\n return editor.can().toggleUnderline();\n case 'strike':\n return editor.can().toggleStrike();\n default:\n return false;\n }\n}\n\nexport function runTextEditorCommand(\n editor: AXTextEditorTiptapEditor,\n command: AXTextEditorCommandType,\n attrs?: AXTextEditorCommandAttrs,\n): boolean {\n const chain = editor.chain().focus();\n switch (command) {\n case 'undo':\n return chain.undo().run();\n case 'redo':\n return chain.redo().run();\n case 'heading': {\n const level = headingLevel(attrs);\n return level ? chain.setHeading({ level }).run() : chain.setParagraph().run();\n }\n case 'paragraph':\n return chain.setParagraph().run();\n case 'align':\n return chain.setTextAlign(String(attrs?.['align'] ?? 'left')).run();\n case 'direction': {\n const direction = attrs?.['direction'] === 'rtl' ? 'rtl' : 'ltr';\n return chain\n .updateAttributes('paragraph', { dir: direction })\n .updateAttributes('heading', { dir: direction })\n .run();\n }\n case 'color':\n return attrs?.['color'] ? chain.setColor(String(attrs['color'])).run() : chain.unsetColor().run();\n case 'highlight':\n return attrs?.['color']\n ? chain.setHighlight({ color: String(attrs['color']) }).run()\n : chain.unsetHighlight().run();\n case 'fontSize':\n return chain.setFontSize(resolveFontSize(attrs)).run();\n case 'link': {\n const href = normalizeHref(String(attrs?.['href'] ?? ''));\n if (!href) {\n return chain.extendMarkRange('link').unsetLink().run();\n }\n if (editor.state.selection.empty) {\n const safeHref = escapeHtml(href);\n return chain.insertContent(`<a href=\"${safeHref}\">${safeHref}</a>`).run();\n }\n return chain.extendMarkRange('link').setLink({ href }).run();\n }\n case 'unlink':\n return chain.extendMarkRange('link').unsetLink().run();\n case 'image': {\n const src = String(attrs?.['src'] ?? '').trim();\n if (!src) return false;\n return chain.setImage({ src, alt: String(attrs?.['alt'] ?? '') }).run();\n }\n case 'video': {\n const src = String(attrs?.['src'] ?? '').trim();\n if (!src) return false;\n return chain.setVideo({ src }).run();\n }\n case 'insertTable':\n return chain\n .insertTable({\n rows: Number(attrs?.['rows'] ?? 3),\n cols: Number(attrs?.['cols'] ?? 3),\n withHeaderRow: Boolean(attrs?.['withHeaderRow'] ?? false),\n })\n .run();\n case 'addColumnBefore':\n return chain.addColumnBefore().run();\n case 'addColumnAfter':\n return chain.addColumnAfter().run();\n case 'deleteColumn':\n return chain.deleteColumn().run();\n case 'addRowBefore':\n return chain.addRowBefore().run();\n case 'addRowAfter':\n return chain.addRowAfter().run();\n case 'deleteRow':\n return chain.deleteRow().run();\n case 'toggleHeaderRow':\n return chain.toggleHeaderRow().run();\n case 'deleteTable':\n return chain.deleteTable().run();\n case 'blockquote':\n return chain.toggleBlockquote().run();\n case 'code':\n return chain.toggleCode().run();\n case 'codeBlock':\n return chain.toggleCodeBlock().run();\n case 'horizontalRule':\n return chain.setHorizontalRule().run();\n case 'bulletList':\n return chain.toggleBulletList().run();\n case 'orderedList':\n return chain.toggleOrderedList().run();\n case 'superscript':\n return chain.toggleSuperscript().run();\n case 'subscript':\n return chain.toggleSubscript().run();\n case 'bold':\n return chain.toggleBold().run();\n case 'italic':\n return chain.toggleItalic().run();\n case 'underline':\n return chain.toggleUnderline().run();\n case 'strike':\n return chain.toggleStrike().run();\n default:\n return false;\n }\n}\n","import {\n AX_DEFAULT_TEXT_EDITOR_FEATURES,\n type AXTextEditorFeatures,\n type AXTextEditorHeadingLevel,\n type AXTextEditorLoadExtensionsOptions,\n} from './text-editor.types';\n\ntype AXTextEditorCore = typeof import('@tiptap/core');\n\nfunction createSuperscript(core: AXTextEditorCore) {\n return core.Mark.create({\n name: 'superscript',\n excludes: 'subscript',\n parseHTML() {\n return [{ tag: 'sup' }];\n },\n renderHTML({ HTMLAttributes }) {\n return ['sup', core.mergeAttributes(HTMLAttributes), 0];\n },\n addCommands() {\n return {\n toggleSuperscript:\n () =>\n ({ commands }) =>\n commands.toggleMark(this.name),\n };\n },\n });\n}\n\nfunction createSubscript(core: AXTextEditorCore) {\n return core.Mark.create({\n name: 'subscript',\n excludes: 'superscript',\n parseHTML() {\n return [{ tag: 'sub' }];\n },\n renderHTML({ HTMLAttributes }) {\n return ['sub', core.mergeAttributes(HTMLAttributes), 0];\n },\n addCommands() {\n return {\n toggleSubscript:\n () =>\n ({ commands }) =>\n commands.toggleMark(this.name),\n };\n },\n });\n}\n\nfunction createKeepSelection(\n core: AXTextEditorCore,\n pmState: typeof import('@tiptap/pm/state'),\n pmView: typeof import('@tiptap/pm/view'),\n) {\n const keepSelectionKey = new pmState.PluginKey('axKeepSelection');\n return core.Extension.create({\n name: 'keepSelection',\n addProseMirrorPlugins() {\n return [\n new pmState.Plugin({\n key: keepSelectionKey,\n state: {\n init() {\n return pmView.DecorationSet.empty;\n },\n apply(tr, set) {\n const meta = tr.getMeta(keepSelectionKey) as { from: number; to: number } | 'clear' | undefined;\n if (meta === 'clear') return pmView.DecorationSet.empty;\n if (meta && meta.from !== meta.to) {\n return pmView.DecorationSet.create(tr.doc, [\n pmView.Decoration.inline(meta.from, meta.to, { class: 'ax-text-editor-kept-selection' }),\n ]);\n }\n return set.map(tr.mapping, tr.doc);\n },\n },\n props: {\n decorations(state) {\n return keepSelectionKey.getState(state);\n },\n handleDOMEvents: {\n blur(view) {\n const { from, to } = view.state.selection;\n if (from !== to) {\n view.dispatch(view.state.tr.setMeta(keepSelectionKey, { from, to }));\n }\n return false;\n },\n focus(view) {\n const decorations = keepSelectionKey.getState(view.state) as\n | import('@tiptap/pm/view').DecorationSet\n | undefined;\n if (decorations?.find().length) {\n view.dispatch(view.state.tr.setMeta(keepSelectionKey, 'clear'));\n }\n return false;\n },\n },\n },\n }),\n ];\n },\n });\n}\n\nfunction createTextDirection(core: AXTextEditorCore) {\n return core.Extension.create({\n name: 'textDirection',\n addGlobalAttributes() {\n return [\n {\n types: ['paragraph', 'heading'],\n attributes: {\n dir: {\n default: null,\n parseHTML: (element) => element.getAttribute('dir'),\n renderHTML: (attributes) => (attributes['dir'] ? { dir: attributes['dir'] } : {}),\n },\n },\n },\n ];\n },\n });\n}\n\nfunction createFontSize(core: AXTextEditorCore) {\n return core.Extension.create({\n name: 'axTextEditorFontSize',\n addGlobalAttributes() {\n return [\n {\n types: ['textStyle'],\n attributes: {\n fontSize: {\n default: null,\n parseHTML: (element) => element.style.fontSize?.replace(/['\"]+/g, '') || null,\n renderHTML: (attributes) =>\n attributes['fontSize'] ? { style: `font-size: ${attributes['fontSize']}` } : {},\n },\n },\n },\n ];\n },\n addCommands() {\n return {\n setFontSize:\n (size: string | null) =>\n ({ chain }) => {\n if (!size) {\n return chain().focus().setMark('textStyle', { fontSize: null }).removeEmptyTextStyle().run();\n }\n return chain().focus().setMark('textStyle', { fontSize: size }).run();\n },\n };\n },\n });\n}\n\nfunction createVideo(core: AXTextEditorCore) {\n return core.Node.create({\n name: 'video',\n group: 'block',\n atom: true,\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n addAttributes() {\n return {\n src: {\n default: null,\n },\n };\n },\n parseHTML() {\n return [\n { tag: 'video[src]' },\n { tag: 'div[data-text-editor-video] video' },\n { tag: 'div[data-wysiwyg-video] iframe' },\n { tag: 'iframe[src]' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n const src = String(HTMLAttributes['src'] ?? '');\n if (isEmbedSrc(src)) {\n return [\n 'div',\n core.mergeAttributes(this.options.HTMLAttributes, { 'data-text-editor-video': '' }),\n [\n 'iframe',\n core.mergeAttributes({\n src,\n frameborder: '0',\n allowfullscreen: 'true',\n allow: 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture',\n }),\n ],\n ];\n }\n return [\n 'video',\n core.mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {\n class: 'ax-text-editor-video',\n controls: 'true',\n }),\n ];\n },\n addCommands() {\n return {\n setVideo:\n ({ src }) =>\n ({ commands }) =>\n commands.insertContent({\n type: this.name,\n attrs: { src: toVideoSrc(src) },\n }),\n };\n },\n });\n}\n\nfunction isEmbedSrc(src: string): boolean {\n return /youtube\\.com\\/embed\\/|youtu\\.be\\//i.test(src);\n}\n\nfunction toVideoSrc(src: string): string {\n const trimmed = src.trim();\n if (!trimmed) return trimmed;\n try {\n const url = new URL(trimmed);\n if (url.hostname.includes('youtube.com') && url.searchParams.get('v')) {\n return `https://www.youtube.com/embed/${url.searchParams.get('v')}`;\n }\n if (url.hostname === 'youtu.be') {\n return `https://www.youtube.com/embed/${url.pathname.slice(1)}`;\n }\n } catch {\n return trimmed;\n }\n return trimmed;\n}\n\nconst DEFAULT_HEADING_LEVELS: AXTextEditorHeadingLevel[] = [1, 2, 3];\n\nfunction resolvePlaceholder(placeholder?: string | (() => string)): string {\n if (typeof placeholder === 'function') {\n return placeholder();\n }\n return placeholder ?? '';\n}\n\nexport async function createTextEditorExtensions(\n placeholderOrOptions: string | (() => string) | AXTextEditorLoadExtensionsOptions = '',\n): Promise<import('@tiptap/core').AnyExtension[]> {\n const options: AXTextEditorLoadExtensionsOptions =\n typeof placeholderOrOptions === 'function' || typeof placeholderOrOptions === 'string'\n ? { placeholder: placeholderOrOptions }\n : placeholderOrOptions;\n\n const features: AXTextEditorFeatures = { ...AX_DEFAULT_TEXT_EDITOR_FEATURES, ...options.features };\n const headingLevels = options.headingLevels ?? DEFAULT_HEADING_LEVELS;\n\n const [core, pmState, pmView, starterKitMod, textStyleMod, highlightMod, textAlignMod, extensionsMod, tableMod, imageMod] =\n await Promise.all([\n import('@tiptap/core'),\n import('@tiptap/pm/state'),\n import('@tiptap/pm/view'),\n import('@tiptap/starter-kit'),\n import('@tiptap/extension-text-style'),\n import('@tiptap/extension-highlight'),\n import('@tiptap/extension-text-align'),\n import('@tiptap/extensions'),\n import('@tiptap/extension-table/kit'),\n import('@tiptap/extension-image'),\n ]);\n\n const Image = imageMod.default ?? imageMod.Image;\n const Highlight = highlightMod.default ?? highlightMod.Highlight;\n\n const extensions: import('@tiptap/core').AnyExtension[] = [\n starterKitMod.StarterKit.configure({\n heading: {\n levels: headingLevels,\n HTMLAttributes: {\n class: 'ax-text-editor-heading',\n },\n },\n link: {\n openOnClick: false,\n HTMLAttributes: {\n class: 'ax-text-editor-link',\n },\n },\n code: {\n HTMLAttributes: {\n class: 'ax-text-editor-code',\n },\n },\n codeBlock: {\n HTMLAttributes: {\n class: 'ax-text-editor-code-block',\n },\n },\n bulletList: {\n HTMLAttributes: {\n class: 'ax-text-editor-bullet-list',\n },\n },\n orderedList: {\n HTMLAttributes: {\n class: 'ax-text-editor-ordered-list',\n },\n },\n listItem: {\n HTMLAttributes: {\n class: 'ax-text-editor-list-item',\n },\n },\n }),\n textStyleMod.TextStyle,\n textStyleMod.Color,\n createFontSize(core),\n Highlight.configure({ multicolor: true }),\n textAlignMod.TextAlign.configure({\n types: ['heading', 'paragraph'],\n }),\n createTextDirection(core),\n ];\n\n if (features.superscript) {\n extensions.push(createSuperscript(core));\n }\n if (features.subscript) {\n extensions.push(createSubscript(core));\n }\n if (features.keepSelection) {\n extensions.push(createKeepSelection(core, pmState, pmView));\n }\n if (features.table) {\n extensions.push(\n tableMod.TableKit.configure({\n table: {\n resizable: true,\n lastColumnResizable: true,\n cellMinWidth: 64,\n HTMLAttributes: {\n class: 'ax-text-editor-table',\n },\n },\n }),\n );\n }\n if (features.image) {\n extensions.push(\n Image.configure({\n inline: true,\n allowBase64: true,\n HTMLAttributes: {\n class: 'ax-text-editor-image',\n },\n }),\n );\n }\n if (features.video) {\n extensions.push(createVideo(core));\n }\n if (features.placeholder) {\n extensions.push(\n extensionsMod.Placeholder.configure({\n placeholder: () => resolvePlaceholder(options.placeholder),\n showOnlyCurrent: true,\n }),\n );\n }\n\n if (options.extensions?.length) {\n extensions.push(...options.extensions);\n }\n\n return extensions;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -237,7 +237,7 @@ async function loadAXWysiwygExtensions(options) {
|
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
/**
|
|
240
|
-
* @deprecated Use `
|
|
240
|
+
* @deprecated Use `AXTextEditor` from `@acorex/cdk/text-editor` instead.
|
|
241
241
|
*/
|
|
242
242
|
class AXWysiwyg {
|
|
243
243
|
constructor() {
|
|
@@ -735,7 +735,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
|
|
|
735
735
|
type: Injectable
|
|
736
736
|
}] });
|
|
737
737
|
|
|
738
|
-
/** @deprecated Use `@acorex/components/text-editor` instead. */
|
|
738
|
+
/** @deprecated Use `@acorex/cdk/text-editor` and `@acorex/components/text-editor` instead. */
|
|
739
739
|
|
|
740
740
|
/**
|
|
741
741
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-cdk-wysiwyg.mjs","sources":["../../../../packages/cdk/wysiwyg/src/lib/wysiwyg-font-size.extension.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg.types.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg-text-direction.extension.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg-video.extension.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg.extensions.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg.class.ts","../../../../packages/cdk/wysiwyg/src/index.ts","../../../../packages/cdk/wysiwyg/src/acorex-cdk-wysiwyg.ts"],"sourcesContent":["import { Extension } from '@tiptap/core';\nimport type { AXWysiwygFontSizeToken } from './wysiwyg.types';\n\nexport const AX_WYSIWYG_FONT_SIZE_VALUES: Record<AXWysiwygFontSizeToken, string> = {\n small: '0.75em',\n large: '1.5em',\n huge: '2.5em',\n};\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n axWysiwygFontSize: {\n setAxWysiwygFontSize: (size: AXWysiwygFontSizeToken | null) => ReturnType;\n };\n }\n}\n\nexport const AXWysiwygFontSizeExtension = Extension.create({\n name: 'axWysiwygFontSize',\n\n addGlobalAttributes() {\n return [\n {\n types: ['textStyle'],\n attributes: {\n fontSize: {\n default: null,\n parseHTML: (element) => element.style.fontSize?.replace(/['\"]+/g, '') || null,\n renderHTML: (attributes) => {\n if (!attributes['fontSize']) {\n return {};\n }\n return { style: `font-size: ${attributes['fontSize']}` };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setAxWysiwygFontSize:\n (size: AXWysiwygFontSizeToken | null) =>\n ({ chain }) => {\n if (!size) {\n return chain().focus().unsetMark('textStyle').run();\n }\n const cssSize = AX_WYSIWYG_FONT_SIZE_VALUES[size];\n return chain().focus().setMark('textStyle', { fontSize: cssSize }).run();\n },\n };\n },\n});\n","import type { Editor, Extensions } from '@tiptap/core';\n\nexport type AXWysiwygEditor = Editor;\n\nexport type AXWysiwygHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type AXWysiwygTextAlign = 'left' | 'center' | 'right' | 'justify';\n\nexport type AXWysiwygFontSizeToken = 'small' | 'large' | 'huge';\n\nexport type AXWysiwygTextDirection = 'rtl' | 'ltr';\n\nexport interface AXWysiwygRange {\n index: number;\n length: number;\n}\n\nexport type AXWysiwygCommand =\n | 'bold'\n | 'italic'\n | 'underline'\n | 'strike'\n | 'code'\n | 'codeBlock'\n | 'heading'\n | 'paragraph'\n | 'bulletList'\n | 'orderedList'\n | 'blockquote'\n | 'textAlign'\n | 'color'\n | 'highlight'\n | 'link'\n | 'image'\n | 'video'\n | 'undo'\n | 'redo'\n | 'clearFormatting'\n | 'direction'\n | 'fontSize';\n\nexport interface AXWysiwygFeatures {\n textAlign?: boolean;\n image?: boolean;\n link?: boolean;\n video?: boolean;\n color?: boolean;\n highlight?: boolean;\n placeholder?: boolean;\n fontSize?: boolean;\n textDirection?: boolean;\n}\n\nexport const AX_DEFAULT_WYSIWYG_FEATURES: AXWysiwygFeatures = {\n textAlign: true,\n image: true,\n link: true,\n video: true,\n color: true,\n highlight: true,\n placeholder: true,\n fontSize: true,\n textDirection: true,\n};\n\nexport interface AXWysiwygState {\n bold: boolean;\n italic: boolean;\n underline: boolean;\n strike: boolean;\n code: boolean;\n codeBlock: boolean;\n headingLevel: AXWysiwygHeadingLevel | null;\n bulletList: boolean;\n orderedList: boolean;\n blockquote: boolean;\n textAlign: AXWysiwygTextAlign | null;\n textColor: string | null;\n highlightColor: string | null;\n linkHref: string | null;\n fontSize: AXWysiwygFontSizeToken | null;\n textDirection: AXWysiwygTextDirection | null;\n canUndo: boolean;\n canRedo: boolean;\n isEmpty: boolean;\n isFocused: boolean;\n}\n\nexport const AX_EMPTY_WYSIWYG_STATE: AXWysiwygState = {\n bold: false,\n italic: false,\n underline: false,\n strike: false,\n code: false,\n codeBlock: false,\n headingLevel: null,\n bulletList: false,\n orderedList: false,\n blockquote: false,\n textAlign: null,\n textColor: null,\n highlightColor: null,\n linkHref: null,\n fontSize: null,\n textDirection: null,\n canUndo: false,\n canRedo: false,\n isEmpty: true,\n isFocused: false,\n};\n\nexport interface AXWysiwygInitOptions {\n content?: string;\n editable?: boolean;\n placeholder?: string;\n features?: AXWysiwygFeatures;\n extensions?: Extensions;\n /** @deprecated Use `editable: false` instead. */\n readOnly?: boolean;\n onUpdate?: (editor: AXWysiwygEditor) => void;\n onFocus?: (editor: AXWysiwygEditor) => void;\n onBlur?: (editor: AXWysiwygEditor) => void;\n onSelectionUpdate?: (editor: AXWysiwygEditor) => void;\n}\n\nexport interface AXWysiwygLoadExtensionsOptions {\n features?: AXWysiwygFeatures;\n placeholder?: string;\n}\n","import { Extension } from '@tiptap/core';\nimport type { AXWysiwygTextDirection } from './wysiwyg.types';\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n axWysiwygTextDirection: {\n setAxWysiwygTextDirection: (direction: AXWysiwygTextDirection | null) => ReturnType;\n };\n }\n}\n\nexport const AXWysiwygTextDirectionExtension = Extension.create({\n name: 'axWysiwygTextDirection',\n\n addGlobalAttributes() {\n return [\n {\n types: ['paragraph', 'heading'],\n attributes: {\n dir: {\n default: null,\n parseHTML: (element) => element.getAttribute('dir'),\n renderHTML: (attributes) => {\n if (!attributes['dir']) {\n return {};\n }\n return { dir: attributes['dir'] };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setAxWysiwygTextDirection:\n (direction: AXWysiwygTextDirection | null) =>\n ({ chain }) =>\n chain()\n .focus()\n .updateAttributes('paragraph', { dir: direction })\n .updateAttributes('heading', { dir: direction })\n .run(),\n };\n },\n});\n","import { mergeAttributes, Node } from '@tiptap/core';\n\nexport interface AXWysiwygVideoOptions {\n inline: boolean;\n allowBase64: boolean;\n HTMLAttributes: Record<string, unknown>;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n axWysiwygVideo: {\n setVideo: (options: { src: string }) => ReturnType;\n };\n }\n}\n\nfunction toEmbedSrc(src: string): string {\n const trimmed = src.trim();\n if (!trimmed) {\n return trimmed;\n }\n try {\n const url = new URL(trimmed);\n if (url.hostname.includes('youtube.com') && url.searchParams.get('v')) {\n return `https://www.youtube.com/embed/${url.searchParams.get('v')}`;\n }\n if (url.hostname === 'youtu.be') {\n return `https://www.youtube.com/embed/${url.pathname.slice(1)}`;\n }\n } catch {\n return trimmed;\n }\n return trimmed;\n}\n\nexport const AXWysiwygVideoExtension = Node.create<AXWysiwygVideoOptions>({\n name: 'video',\n\n group: 'block',\n\n atom: true,\n\n addOptions() {\n return {\n inline: false,\n allowBase64: false,\n HTMLAttributes: {},\n };\n },\n\n addAttributes() {\n return {\n src: {\n default: null,\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'div[data-wysiwyg-video] iframe',\n },\n {\n tag: 'iframe[src]',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n const src = HTMLAttributes['src'] as string | undefined;\n return [\n 'div',\n mergeAttributes(this.options.HTMLAttributes, { 'data-wysiwyg-video': '' }),\n [\n 'iframe',\n mergeAttributes({\n src,\n frameborder: '0',\n allowfullscreen: 'true',\n allow: 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture',\n }),\n ],\n ];\n },\n\n addCommands() {\n return {\n setVideo:\n ({ src }) =>\n ({ commands }) =>\n commands.insertContent({\n type: this.name,\n attrs: { src: toEmbedSrc(src) },\n }),\n };\n },\n});\n","import type { Extensions } from '@tiptap/core';\nimport {\n AX_DEFAULT_WYSIWYG_FEATURES,\n type AXWysiwygFeatures,\n type AXWysiwygLoadExtensionsOptions,\n} from './wysiwyg.types';\nimport { AXWysiwygFontSizeExtension } from './wysiwyg-font-size.extension';\nimport { AXWysiwygTextDirectionExtension } from './wysiwyg-text-direction.extension';\nimport { AXWysiwygVideoExtension } from './wysiwyg-video.extension';\n\nexport async function loadAXWysiwygExtensions(options?: AXWysiwygLoadExtensionsOptions): Promise<Extensions> {\n const features: AXWysiwygFeatures = { ...AX_DEFAULT_WYSIWYG_FEATURES, ...options?.features };\n\n const [starterKitMod, textStyleMod, colorMod, highlightMod, underlineMod] = await Promise.all([\n import('@tiptap/starter-kit'),\n import('@tiptap/extension-text-style'),\n import('@tiptap/extension-color'),\n import('@tiptap/extension-highlight'),\n import('@tiptap/extension-underline'),\n ]);\n\n const extensions: Extensions = [\n starterKitMod.default.configure({\n link: features.link ? { openOnClick: false } : false,\n }),\n underlineMod.default,\n ];\n\n if (features.color || features.fontSize) {\n extensions.push(textStyleMod.TextStyle);\n }\n\n if (features.color) {\n extensions.push(colorMod.Color);\n }\n\n if (features.highlight) {\n extensions.push(highlightMod.default.configure({ multicolor: true }));\n }\n\n if (features.fontSize) {\n extensions.push(AXWysiwygFontSizeExtension);\n }\n\n if (features.textDirection) {\n extensions.push(AXWysiwygTextDirectionExtension);\n }\n\n if (features.textAlign) {\n const textAlignMod = await import('@tiptap/extension-text-align');\n extensions.push(\n textAlignMod.default.configure({\n types: ['heading', 'paragraph'],\n }),\n );\n }\n\n if (features.image) {\n const imageMod = await import('@tiptap/extension-image');\n extensions.push(\n imageMod.default.configure({\n inline: true,\n allowBase64: true,\n }),\n );\n }\n\n if (features.video) {\n extensions.push(AXWysiwygVideoExtension);\n }\n\n if (features.placeholder && options?.placeholder) {\n const { Placeholder } = await import('@tiptap/extensions');\n extensions.push(\n Placeholder.configure({\n placeholder: options.placeholder,\n }),\n );\n }\n\n return extensions;\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport type { Editor } from '@tiptap/core';\nimport { AX_WYSIWYG_FONT_SIZE_VALUES } from './wysiwyg-font-size.extension';\nimport { loadAXWysiwygExtensions } from './wysiwyg.extensions';\nimport {\n AX_EMPTY_WYSIWYG_STATE,\n type AXWysiwygCommand,\n type AXWysiwygEditor,\n type AXWysiwygFontSizeToken,\n type AXWysiwygHeadingLevel,\n type AXWysiwygInitOptions,\n type AXWysiwygRange,\n type AXWysiwygState,\n type AXWysiwygTextAlign,\n type AXWysiwygTextDirection,\n} from './wysiwyg.types';\n\n/**\n * @deprecated Use `AXTextEditorService` from `@acorex/components/text-editor` instead.\n */\n@Injectable()\nexport class AXWysiwyg {\n readonly editor = signal<AXWysiwygEditor | null>(null);\n readonly state = signal<AXWysiwygState>(AX_EMPTY_WYSIWYG_STATE);\n readonly ready = signal(false);\n\n private readonly platformId = inject(PLATFORM_ID);\n private destroyed = false;\n private applyingContent = false;\n\n async init(container: HTMLElement | string, options: AXWysiwygInitOptions = {}): Promise<void> {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const element =\n typeof container === 'string' ? (document.querySelector(container) as HTMLElement | null) : container;\n if (!element) {\n return;\n }\n\n this.destroyed = false;\n const editable = options.readOnly === true ? false : (options.editable ?? true);\n\n const extensions = await loadAXWysiwygExtensions({\n features: options.features,\n placeholder: options.placeholder,\n });\n\n if (this.destroyed) {\n return;\n }\n\n const { Editor } = await import('@tiptap/core');\n if (this.destroyed) {\n return;\n }\n\n const allExtensions = [...extensions, ...(options.extensions ?? [])];\n\n const editor = new Editor({\n element,\n extensions: allExtensions,\n content: options.content ?? '',\n editable,\n editorProps: {\n attributes: {\n class: 'tiptap',\n },\n },\n onUpdate: ({ editor: ed }) => {\n this.refreshState(ed);\n if (!this.applyingContent) {\n options.onUpdate?.(ed);\n }\n },\n onSelectionUpdate: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onSelectionUpdate?.(ed);\n },\n onFocus: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onFocus?.(ed);\n },\n onBlur: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onBlur?.(ed);\n },\n });\n\n this.editor.set(editor);\n this.ready.set(true);\n this.refreshState(editor);\n }\n\n destroy(): void {\n this.destroyed = true;\n const ed = this.editor();\n ed?.destroy();\n this.editor.set(null);\n this.ready.set(false);\n this.state.set(AX_EMPTY_WYSIWYG_STATE);\n }\n\n setContent(value: string | null | undefined, emit = false): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n\n const html = value?.trim() ? value : '';\n this.applyingContent = true;\n try {\n ed.commands.setContent(html, { emitUpdate: emit });\n this.refreshState(ed);\n } finally {\n this.applyingContent = false;\n }\n }\n\n getHTML(): string {\n return this.editor()?.getHTML() ?? '';\n }\n\n get JSONoutput(): unknown {\n return this.editor()?.getJSON() ?? null;\n }\n\n getText(): string {\n return this.editor()?.getText() ?? '';\n }\n\n isEmpty(): boolean {\n return this.editor()?.isEmpty ?? true;\n }\n\n setEditable(editable: boolean): void {\n this.editor()?.setEditable(editable);\n const ed = this.editor();\n if (ed) {\n this.refreshState(ed);\n }\n }\n\n get HTMLoutput(): string {\n return this.getHTML();\n }\n\n bold(value: boolean): void {\n this.setMarkActive('bold', value);\n }\n\n italic(value: boolean): void {\n this.setMarkActive('italic', value);\n }\n\n underLine(value: boolean): void {\n this.setMarkActive('underline', value);\n }\n\n strike(value: boolean): void {\n this.setMarkActive('strike', value);\n }\n\n color(value: string): void {\n if (value) {\n this.setColor(value);\n } else {\n this.unsetColor();\n }\n }\n\n header(value: number): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n if (value >= 1 && value <= 6) {\n ed.chain()\n .focus()\n .toggleHeading({ level: value as AXWysiwygHeadingLevel })\n .run();\n } else {\n ed.chain().focus().setParagraph().run();\n }\n }\n\n list(value: 'ordered' | 'bullet' | ''): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n const chain = ed.chain().focus();\n if (value === 'bullet') {\n chain.toggleBulletList().run();\n } else if (value === 'ordered') {\n chain.toggleOrderedList().run();\n } else {\n chain.liftListItem('listItem').run();\n }\n }\n\n align(value: 'center' | 'right' | 'left' | 'justify'): void {\n if (value === 'left') {\n this.setTextAlign('left');\n } else {\n this.setTextAlign(value);\n }\n }\n\n direction(value: AXWysiwygTextDirection): void {\n this.setTextDirection(value);\n }\n\n fontSize(value: 'small' | false | 'large' | 'huge', range: AXWysiwygRange): void {\n const ed = this.editor();\n if (!ed || !range) {\n return;\n }\n const from = range.index;\n const to = range.index + range.length;\n if (value === false) {\n ed.chain().focus().setTextSelection({ from, to }).setAxWysiwygFontSize(null).run();\n return;\n }\n ed.chain().focus().setTextSelection({ from, to }).setAxWysiwygFontSize(value).run();\n }\n\n background(value: string): void {\n if (value) {\n this.setHighlight(value);\n } else {\n this.unsetHighlight();\n }\n }\n\n addImage(value: string): void {\n this.insertImage(value);\n }\n\n insertVideo(src: string): void {\n this.editor()?.chain().focus().setVideo({ src }).run();\n }\n\n codeBlock(range: AXWysiwygRange, status: boolean): void {\n const ed = this.editor();\n if (!ed || !range) {\n return;\n }\n const from = range.index;\n const to = range.index + range.length;\n if (status) {\n ed.chain().focus().setTextSelection({ from, to }).toggleCodeBlock().run();\n } else {\n ed.chain().focus().setTextSelection({ from, to }).setParagraph().run();\n }\n }\n\n focus(): void {\n this.editor()?.commands.focus();\n }\n\n blur(): void {\n this.editor()?.commands.blur();\n }\n\n toggleBold(): void {\n this.editor()?.chain().focus().toggleBold().run();\n }\n\n toggleItalic(): void {\n this.editor()?.chain().focus().toggleItalic().run();\n }\n\n toggleUnderline(): void {\n this.editor()?.chain().focus().toggleUnderline().run();\n }\n\n toggleStrike(): void {\n this.editor()?.chain().focus().toggleStrike().run();\n }\n\n toggleCode(): void {\n this.editor()?.chain().focus().toggleCode().run();\n }\n\n toggleCodeBlock(): void {\n this.editor()?.chain().focus().toggleCodeBlock().run();\n }\n\n toggleHeading(level: AXWysiwygHeadingLevel): void {\n this.editor()?.chain().focus().toggleHeading({ level }).run();\n }\n\n setParagraph(): void {\n this.editor()?.chain().focus().setParagraph().run();\n }\n\n toggleBulletList(): void {\n this.editor()?.chain().focus().toggleBulletList().run();\n }\n\n toggleOrderedList(): void {\n this.editor()?.chain().focus().toggleOrderedList().run();\n }\n\n toggleBlockquote(): void {\n this.editor()?.chain().focus().toggleBlockquote().run();\n }\n\n setTextAlign(align: AXWysiwygTextAlign): void {\n this.editor()?.chain().focus().setTextAlign(align).run();\n }\n\n setTextDirection(direction: AXWysiwygTextDirection | null): void {\n this.editor()?.chain().focus().setAxWysiwygTextDirection(direction).run();\n }\n\n setFontSize(size: AXWysiwygFontSizeToken | null): void {\n this.editor()?.chain().focus().setAxWysiwygFontSize(size).run();\n }\n\n setColor(color: string): void {\n this.editor()?.chain().focus().setColor(color).run();\n }\n\n unsetColor(): void {\n this.editor()?.chain().focus().unsetColor().run();\n }\n\n setHighlight(color: string): void {\n this.editor()?.chain().focus().setHighlight({ color }).run();\n }\n\n unsetHighlight(): void {\n this.editor()?.chain().focus().unsetHighlight().run();\n }\n\n setLink(href: string): void {\n this.editor()?.chain().focus().extendMarkRange('link').setLink({ href }).run();\n }\n\n unsetLink(): void {\n this.editor()?.chain().focus().unsetLink().run();\n }\n\n insertImage(src: string, alt?: string): void {\n this.editor()?.chain().focus().setImage({ src, alt }).run();\n }\n\n undo(): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n ed.chain().focus().undo().run();\n this.refreshState(ed);\n }\n\n redo(): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n ed.chain().focus().redo().run();\n this.refreshState(ed);\n }\n\n clearFormatting(): void {\n this.editor()?.chain().focus().clearNodes().unsetAllMarks().run();\n }\n\n execute(command: AXWysiwygCommand, payload?: unknown): void {\n switch (command) {\n case 'bold':\n this.toggleBold();\n break;\n case 'italic':\n this.toggleItalic();\n break;\n case 'underline':\n this.toggleUnderline();\n break;\n case 'strike':\n this.toggleStrike();\n break;\n case 'code':\n this.toggleCode();\n break;\n case 'codeBlock':\n this.toggleCodeBlock();\n break;\n case 'heading':\n if (typeof payload === 'number') {\n this.toggleHeading(payload as AXWysiwygHeadingLevel);\n }\n break;\n case 'paragraph':\n this.setParagraph();\n break;\n case 'bulletList':\n this.toggleBulletList();\n break;\n case 'orderedList':\n this.toggleOrderedList();\n break;\n case 'blockquote':\n this.toggleBlockquote();\n break;\n case 'textAlign':\n if (typeof payload === 'string') {\n this.setTextAlign(payload as AXWysiwygTextAlign);\n }\n break;\n case 'direction':\n if (payload === 'rtl' || payload === 'ltr') {\n this.setTextDirection(payload);\n }\n break;\n case 'fontSize':\n if (payload === null) {\n this.setFontSize(null);\n } else if (payload === 'small' || payload === 'large' || payload === 'huge') {\n this.setFontSize(payload);\n }\n break;\n case 'color':\n if (typeof payload === 'string') {\n this.setColor(payload);\n } else {\n this.unsetColor();\n }\n break;\n case 'highlight':\n if (typeof payload === 'string') {\n this.setHighlight(payload);\n } else {\n this.unsetHighlight();\n }\n break;\n case 'link':\n if (typeof payload === 'string' && payload) {\n this.setLink(payload);\n } else {\n this.unsetLink();\n }\n break;\n case 'image':\n if (typeof payload === 'string') {\n this.insertImage(payload);\n }\n break;\n case 'video':\n if (typeof payload === 'string') {\n this.insertVideo(payload);\n }\n break;\n case 'undo':\n this.undo();\n break;\n case 'redo':\n this.redo();\n break;\n case 'clearFormatting':\n this.clearFormatting();\n break;\n }\n }\n\n isActive(name: string, attrs?: Record<string, unknown>): boolean {\n return this.editor()?.isActive(name, attrs) ?? false;\n }\n\n can(command: 'undo' | 'redo'): boolean {\n const ed = this.editor();\n if (!ed) {\n return false;\n }\n if (command === 'undo') {\n return ed.can().undo();\n }\n return ed.can().redo();\n }\n\n private setMarkActive(name: 'bold' | 'italic' | 'underline' | 'strike', active: boolean): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n const chain = ed.chain().focus();\n switch (name) {\n case 'bold':\n active ? chain.setBold().run() : chain.unsetBold().run();\n break;\n case 'italic':\n active ? chain.setItalic().run() : chain.unsetItalic().run();\n break;\n case 'underline':\n active ? chain.setUnderline().run() : chain.unsetUnderline().run();\n break;\n case 'strike':\n active ? chain.setStrike().run() : chain.unsetStrike().run();\n break;\n }\n }\n\n private refreshState(editor: Editor): void {\n const textColor = editor.getAttributes('textStyle')['color'] as string | undefined;\n const fontSizeCss = editor.getAttributes('textStyle')['fontSize'] as string | undefined;\n const highlightColor = editor.getAttributes('highlight')['color'] as string | undefined;\n const linkHref = editor.getAttributes('link')['href'] as string | undefined;\n const dir = (editor.getAttributes('paragraph')['dir'] || editor.getAttributes('heading')['dir']) as\n | AXWysiwygTextDirection\n | undefined;\n\n let headingLevel: AXWysiwygHeadingLevel | null = null;\n for (let level = 1; level <= 6; level++) {\n if (editor.isActive('heading', { level })) {\n headingLevel = level as AXWysiwygHeadingLevel;\n break;\n }\n }\n\n let textAlign: AXWysiwygTextAlign | null = null;\n for (const align of ['left', 'center', 'right', 'justify'] as AXWysiwygTextAlign[]) {\n if (editor.isActive({ textAlign: align })) {\n textAlign = align;\n break;\n }\n }\n\n let fontSize: AXWysiwygFontSizeToken | null = null;\n if (fontSizeCss) {\n for (const [token, css] of Object.entries(AX_WYSIWYG_FONT_SIZE_VALUES) as [AXWysiwygFontSizeToken, string][]) {\n if (fontSizeCss === css) {\n fontSize = token;\n break;\n }\n }\n }\n\n this.state.set({\n bold: editor.isActive('bold'),\n italic: editor.isActive('italic'),\n underline: editor.isActive('underline'),\n strike: editor.isActive('strike'),\n code: editor.isActive('code'),\n codeBlock: editor.isActive('codeBlock'),\n headingLevel,\n bulletList: editor.isActive('bulletList'),\n orderedList: editor.isActive('orderedList'),\n blockquote: editor.isActive('blockquote'),\n textAlign,\n textColor: textColor ?? null,\n highlightColor: highlightColor ?? null,\n linkHref: linkHref ?? null,\n fontSize,\n textDirection: dir ?? null,\n canUndo: editor.can().undo(),\n canRedo: editor.can().redo(),\n isEmpty: editor.isEmpty,\n isFocused: editor.isFocused,\n });\n }\n}\n\nexport type { AXWysiwygRange };\n","/** @deprecated Use `@acorex/components/text-editor` instead. */\nexport * from './lib/wysiwyg.class';\nexport * from './lib/wysiwyg.extensions';\nexport * from './lib/wysiwyg.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-cdk-wysiwyg.mjs","sources":["../../../../packages/cdk/wysiwyg/src/lib/wysiwyg-font-size.extension.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg.types.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg-text-direction.extension.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg-video.extension.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg.extensions.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg.class.ts","../../../../packages/cdk/wysiwyg/src/index.ts","../../../../packages/cdk/wysiwyg/src/acorex-cdk-wysiwyg.ts"],"sourcesContent":["import { Extension } from '@tiptap/core';\nimport type { AXWysiwygFontSizeToken } from './wysiwyg.types';\n\nexport const AX_WYSIWYG_FONT_SIZE_VALUES: Record<AXWysiwygFontSizeToken, string> = {\n small: '0.75em',\n large: '1.5em',\n huge: '2.5em',\n};\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n axWysiwygFontSize: {\n setAxWysiwygFontSize: (size: AXWysiwygFontSizeToken | null) => ReturnType;\n };\n }\n}\n\nexport const AXWysiwygFontSizeExtension = Extension.create({\n name: 'axWysiwygFontSize',\n\n addGlobalAttributes() {\n return [\n {\n types: ['textStyle'],\n attributes: {\n fontSize: {\n default: null,\n parseHTML: (element) => element.style.fontSize?.replace(/['\"]+/g, '') || null,\n renderHTML: (attributes) => {\n if (!attributes['fontSize']) {\n return {};\n }\n return { style: `font-size: ${attributes['fontSize']}` };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setAxWysiwygFontSize:\n (size: AXWysiwygFontSizeToken | null) =>\n ({ chain }) => {\n if (!size) {\n return chain().focus().unsetMark('textStyle').run();\n }\n const cssSize = AX_WYSIWYG_FONT_SIZE_VALUES[size];\n return chain().focus().setMark('textStyle', { fontSize: cssSize }).run();\n },\n };\n },\n});\n","import type { Editor, Extensions } from '@tiptap/core';\n\nexport type AXWysiwygEditor = Editor;\n\nexport type AXWysiwygHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type AXWysiwygTextAlign = 'left' | 'center' | 'right' | 'justify';\n\nexport type AXWysiwygFontSizeToken = 'small' | 'large' | 'huge';\n\nexport type AXWysiwygTextDirection = 'rtl' | 'ltr';\n\nexport interface AXWysiwygRange {\n index: number;\n length: number;\n}\n\nexport type AXWysiwygCommand =\n | 'bold'\n | 'italic'\n | 'underline'\n | 'strike'\n | 'code'\n | 'codeBlock'\n | 'heading'\n | 'paragraph'\n | 'bulletList'\n | 'orderedList'\n | 'blockquote'\n | 'textAlign'\n | 'color'\n | 'highlight'\n | 'link'\n | 'image'\n | 'video'\n | 'undo'\n | 'redo'\n | 'clearFormatting'\n | 'direction'\n | 'fontSize';\n\nexport interface AXWysiwygFeatures {\n textAlign?: boolean;\n image?: boolean;\n link?: boolean;\n video?: boolean;\n color?: boolean;\n highlight?: boolean;\n placeholder?: boolean;\n fontSize?: boolean;\n textDirection?: boolean;\n}\n\nexport const AX_DEFAULT_WYSIWYG_FEATURES: AXWysiwygFeatures = {\n textAlign: true,\n image: true,\n link: true,\n video: true,\n color: true,\n highlight: true,\n placeholder: true,\n fontSize: true,\n textDirection: true,\n};\n\nexport interface AXWysiwygState {\n bold: boolean;\n italic: boolean;\n underline: boolean;\n strike: boolean;\n code: boolean;\n codeBlock: boolean;\n headingLevel: AXWysiwygHeadingLevel | null;\n bulletList: boolean;\n orderedList: boolean;\n blockquote: boolean;\n textAlign: AXWysiwygTextAlign | null;\n textColor: string | null;\n highlightColor: string | null;\n linkHref: string | null;\n fontSize: AXWysiwygFontSizeToken | null;\n textDirection: AXWysiwygTextDirection | null;\n canUndo: boolean;\n canRedo: boolean;\n isEmpty: boolean;\n isFocused: boolean;\n}\n\nexport const AX_EMPTY_WYSIWYG_STATE: AXWysiwygState = {\n bold: false,\n italic: false,\n underline: false,\n strike: false,\n code: false,\n codeBlock: false,\n headingLevel: null,\n bulletList: false,\n orderedList: false,\n blockquote: false,\n textAlign: null,\n textColor: null,\n highlightColor: null,\n linkHref: null,\n fontSize: null,\n textDirection: null,\n canUndo: false,\n canRedo: false,\n isEmpty: true,\n isFocused: false,\n};\n\nexport interface AXWysiwygInitOptions {\n content?: string;\n editable?: boolean;\n placeholder?: string;\n features?: AXWysiwygFeatures;\n extensions?: Extensions;\n /** @deprecated Use `editable: false` instead. */\n readOnly?: boolean;\n onUpdate?: (editor: AXWysiwygEditor) => void;\n onFocus?: (editor: AXWysiwygEditor) => void;\n onBlur?: (editor: AXWysiwygEditor) => void;\n onSelectionUpdate?: (editor: AXWysiwygEditor) => void;\n}\n\nexport interface AXWysiwygLoadExtensionsOptions {\n features?: AXWysiwygFeatures;\n placeholder?: string;\n}\n","import { Extension } from '@tiptap/core';\nimport type { AXWysiwygTextDirection } from './wysiwyg.types';\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n axWysiwygTextDirection: {\n setAxWysiwygTextDirection: (direction: AXWysiwygTextDirection | null) => ReturnType;\n };\n }\n}\n\nexport const AXWysiwygTextDirectionExtension = Extension.create({\n name: 'axWysiwygTextDirection',\n\n addGlobalAttributes() {\n return [\n {\n types: ['paragraph', 'heading'],\n attributes: {\n dir: {\n default: null,\n parseHTML: (element) => element.getAttribute('dir'),\n renderHTML: (attributes) => {\n if (!attributes['dir']) {\n return {};\n }\n return { dir: attributes['dir'] };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setAxWysiwygTextDirection:\n (direction: AXWysiwygTextDirection | null) =>\n ({ chain }) =>\n chain()\n .focus()\n .updateAttributes('paragraph', { dir: direction })\n .updateAttributes('heading', { dir: direction })\n .run(),\n };\n },\n});\n","import { mergeAttributes, Node } from '@tiptap/core';\n\nexport interface AXWysiwygVideoOptions {\n inline: boolean;\n allowBase64: boolean;\n HTMLAttributes: Record<string, unknown>;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n axWysiwygVideo: {\n setVideo: (options: { src: string }) => ReturnType;\n };\n }\n}\n\nfunction toEmbedSrc(src: string): string {\n const trimmed = src.trim();\n if (!trimmed) {\n return trimmed;\n }\n try {\n const url = new URL(trimmed);\n if (url.hostname.includes('youtube.com') && url.searchParams.get('v')) {\n return `https://www.youtube.com/embed/${url.searchParams.get('v')}`;\n }\n if (url.hostname === 'youtu.be') {\n return `https://www.youtube.com/embed/${url.pathname.slice(1)}`;\n }\n } catch {\n return trimmed;\n }\n return trimmed;\n}\n\nexport const AXWysiwygVideoExtension = Node.create<AXWysiwygVideoOptions>({\n name: 'video',\n\n group: 'block',\n\n atom: true,\n\n addOptions() {\n return {\n inline: false,\n allowBase64: false,\n HTMLAttributes: {},\n };\n },\n\n addAttributes() {\n return {\n src: {\n default: null,\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'div[data-wysiwyg-video] iframe',\n },\n {\n tag: 'iframe[src]',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n const src = HTMLAttributes['src'] as string | undefined;\n return [\n 'div',\n mergeAttributes(this.options.HTMLAttributes, { 'data-wysiwyg-video': '' }),\n [\n 'iframe',\n mergeAttributes({\n src,\n frameborder: '0',\n allowfullscreen: 'true',\n allow: 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture',\n }),\n ],\n ];\n },\n\n addCommands() {\n return {\n setVideo:\n ({ src }) =>\n ({ commands }) =>\n commands.insertContent({\n type: this.name,\n attrs: { src: toEmbedSrc(src) },\n }),\n };\n },\n});\n","import type { Extensions } from '@tiptap/core';\nimport {\n AX_DEFAULT_WYSIWYG_FEATURES,\n type AXWysiwygFeatures,\n type AXWysiwygLoadExtensionsOptions,\n} from './wysiwyg.types';\nimport { AXWysiwygFontSizeExtension } from './wysiwyg-font-size.extension';\nimport { AXWysiwygTextDirectionExtension } from './wysiwyg-text-direction.extension';\nimport { AXWysiwygVideoExtension } from './wysiwyg-video.extension';\n\nexport async function loadAXWysiwygExtensions(options?: AXWysiwygLoadExtensionsOptions): Promise<Extensions> {\n const features: AXWysiwygFeatures = { ...AX_DEFAULT_WYSIWYG_FEATURES, ...options?.features };\n\n const [starterKitMod, textStyleMod, colorMod, highlightMod, underlineMod] = await Promise.all([\n import('@tiptap/starter-kit'),\n import('@tiptap/extension-text-style'),\n import('@tiptap/extension-color'),\n import('@tiptap/extension-highlight'),\n import('@tiptap/extension-underline'),\n ]);\n\n const extensions: Extensions = [\n starterKitMod.default.configure({\n link: features.link ? { openOnClick: false } : false,\n }),\n underlineMod.default,\n ];\n\n if (features.color || features.fontSize) {\n extensions.push(textStyleMod.TextStyle);\n }\n\n if (features.color) {\n extensions.push(colorMod.Color);\n }\n\n if (features.highlight) {\n extensions.push(highlightMod.default.configure({ multicolor: true }));\n }\n\n if (features.fontSize) {\n extensions.push(AXWysiwygFontSizeExtension);\n }\n\n if (features.textDirection) {\n extensions.push(AXWysiwygTextDirectionExtension);\n }\n\n if (features.textAlign) {\n const textAlignMod = await import('@tiptap/extension-text-align');\n extensions.push(\n textAlignMod.default.configure({\n types: ['heading', 'paragraph'],\n }),\n );\n }\n\n if (features.image) {\n const imageMod = await import('@tiptap/extension-image');\n extensions.push(\n imageMod.default.configure({\n inline: true,\n allowBase64: true,\n }),\n );\n }\n\n if (features.video) {\n extensions.push(AXWysiwygVideoExtension);\n }\n\n if (features.placeholder && options?.placeholder) {\n const { Placeholder } = await import('@tiptap/extensions');\n extensions.push(\n Placeholder.configure({\n placeholder: options.placeholder,\n }),\n );\n }\n\n return extensions;\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport type { Editor } from '@tiptap/core';\nimport { AX_WYSIWYG_FONT_SIZE_VALUES } from './wysiwyg-font-size.extension';\nimport { loadAXWysiwygExtensions } from './wysiwyg.extensions';\nimport {\n AX_EMPTY_WYSIWYG_STATE,\n type AXWysiwygCommand,\n type AXWysiwygEditor,\n type AXWysiwygFontSizeToken,\n type AXWysiwygHeadingLevel,\n type AXWysiwygInitOptions,\n type AXWysiwygRange,\n type AXWysiwygState,\n type AXWysiwygTextAlign,\n type AXWysiwygTextDirection,\n} from './wysiwyg.types';\n\n/**\n * @deprecated Use `AXTextEditor` from `@acorex/cdk/text-editor` instead.\n */\n@Injectable()\nexport class AXWysiwyg {\n readonly editor = signal<AXWysiwygEditor | null>(null);\n readonly state = signal<AXWysiwygState>(AX_EMPTY_WYSIWYG_STATE);\n readonly ready = signal(false);\n\n private readonly platformId = inject(PLATFORM_ID);\n private destroyed = false;\n private applyingContent = false;\n\n async init(container: HTMLElement | string, options: AXWysiwygInitOptions = {}): Promise<void> {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const element =\n typeof container === 'string' ? (document.querySelector(container) as HTMLElement | null) : container;\n if (!element) {\n return;\n }\n\n this.destroyed = false;\n const editable = options.readOnly === true ? false : (options.editable ?? true);\n\n const extensions = await loadAXWysiwygExtensions({\n features: options.features,\n placeholder: options.placeholder,\n });\n\n if (this.destroyed) {\n return;\n }\n\n const { Editor } = await import('@tiptap/core');\n if (this.destroyed) {\n return;\n }\n\n const allExtensions = [...extensions, ...(options.extensions ?? [])];\n\n const editor = new Editor({\n element,\n extensions: allExtensions,\n content: options.content ?? '',\n editable,\n editorProps: {\n attributes: {\n class: 'tiptap',\n },\n },\n onUpdate: ({ editor: ed }) => {\n this.refreshState(ed);\n if (!this.applyingContent) {\n options.onUpdate?.(ed);\n }\n },\n onSelectionUpdate: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onSelectionUpdate?.(ed);\n },\n onFocus: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onFocus?.(ed);\n },\n onBlur: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onBlur?.(ed);\n },\n });\n\n this.editor.set(editor);\n this.ready.set(true);\n this.refreshState(editor);\n }\n\n destroy(): void {\n this.destroyed = true;\n const ed = this.editor();\n ed?.destroy();\n this.editor.set(null);\n this.ready.set(false);\n this.state.set(AX_EMPTY_WYSIWYG_STATE);\n }\n\n setContent(value: string | null | undefined, emit = false): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n\n const html = value?.trim() ? value : '';\n this.applyingContent = true;\n try {\n ed.commands.setContent(html, { emitUpdate: emit });\n this.refreshState(ed);\n } finally {\n this.applyingContent = false;\n }\n }\n\n getHTML(): string {\n return this.editor()?.getHTML() ?? '';\n }\n\n get JSONoutput(): unknown {\n return this.editor()?.getJSON() ?? null;\n }\n\n getText(): string {\n return this.editor()?.getText() ?? '';\n }\n\n isEmpty(): boolean {\n return this.editor()?.isEmpty ?? true;\n }\n\n setEditable(editable: boolean): void {\n this.editor()?.setEditable(editable);\n const ed = this.editor();\n if (ed) {\n this.refreshState(ed);\n }\n }\n\n get HTMLoutput(): string {\n return this.getHTML();\n }\n\n bold(value: boolean): void {\n this.setMarkActive('bold', value);\n }\n\n italic(value: boolean): void {\n this.setMarkActive('italic', value);\n }\n\n underLine(value: boolean): void {\n this.setMarkActive('underline', value);\n }\n\n strike(value: boolean): void {\n this.setMarkActive('strike', value);\n }\n\n color(value: string): void {\n if (value) {\n this.setColor(value);\n } else {\n this.unsetColor();\n }\n }\n\n header(value: number): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n if (value >= 1 && value <= 6) {\n ed.chain()\n .focus()\n .toggleHeading({ level: value as AXWysiwygHeadingLevel })\n .run();\n } else {\n ed.chain().focus().setParagraph().run();\n }\n }\n\n list(value: 'ordered' | 'bullet' | ''): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n const chain = ed.chain().focus();\n if (value === 'bullet') {\n chain.toggleBulletList().run();\n } else if (value === 'ordered') {\n chain.toggleOrderedList().run();\n } else {\n chain.liftListItem('listItem').run();\n }\n }\n\n align(value: 'center' | 'right' | 'left' | 'justify'): void {\n if (value === 'left') {\n this.setTextAlign('left');\n } else {\n this.setTextAlign(value);\n }\n }\n\n direction(value: AXWysiwygTextDirection): void {\n this.setTextDirection(value);\n }\n\n fontSize(value: 'small' | false | 'large' | 'huge', range: AXWysiwygRange): void {\n const ed = this.editor();\n if (!ed || !range) {\n return;\n }\n const from = range.index;\n const to = range.index + range.length;\n if (value === false) {\n ed.chain().focus().setTextSelection({ from, to }).setAxWysiwygFontSize(null).run();\n return;\n }\n ed.chain().focus().setTextSelection({ from, to }).setAxWysiwygFontSize(value).run();\n }\n\n background(value: string): void {\n if (value) {\n this.setHighlight(value);\n } else {\n this.unsetHighlight();\n }\n }\n\n addImage(value: string): void {\n this.insertImage(value);\n }\n\n insertVideo(src: string): void {\n this.editor()?.chain().focus().setVideo({ src }).run();\n }\n\n codeBlock(range: AXWysiwygRange, status: boolean): void {\n const ed = this.editor();\n if (!ed || !range) {\n return;\n }\n const from = range.index;\n const to = range.index + range.length;\n if (status) {\n ed.chain().focus().setTextSelection({ from, to }).toggleCodeBlock().run();\n } else {\n ed.chain().focus().setTextSelection({ from, to }).setParagraph().run();\n }\n }\n\n focus(): void {\n this.editor()?.commands.focus();\n }\n\n blur(): void {\n this.editor()?.commands.blur();\n }\n\n toggleBold(): void {\n this.editor()?.chain().focus().toggleBold().run();\n }\n\n toggleItalic(): void {\n this.editor()?.chain().focus().toggleItalic().run();\n }\n\n toggleUnderline(): void {\n this.editor()?.chain().focus().toggleUnderline().run();\n }\n\n toggleStrike(): void {\n this.editor()?.chain().focus().toggleStrike().run();\n }\n\n toggleCode(): void {\n this.editor()?.chain().focus().toggleCode().run();\n }\n\n toggleCodeBlock(): void {\n this.editor()?.chain().focus().toggleCodeBlock().run();\n }\n\n toggleHeading(level: AXWysiwygHeadingLevel): void {\n this.editor()?.chain().focus().toggleHeading({ level }).run();\n }\n\n setParagraph(): void {\n this.editor()?.chain().focus().setParagraph().run();\n }\n\n toggleBulletList(): void {\n this.editor()?.chain().focus().toggleBulletList().run();\n }\n\n toggleOrderedList(): void {\n this.editor()?.chain().focus().toggleOrderedList().run();\n }\n\n toggleBlockquote(): void {\n this.editor()?.chain().focus().toggleBlockquote().run();\n }\n\n setTextAlign(align: AXWysiwygTextAlign): void {\n this.editor()?.chain().focus().setTextAlign(align).run();\n }\n\n setTextDirection(direction: AXWysiwygTextDirection | null): void {\n this.editor()?.chain().focus().setAxWysiwygTextDirection(direction).run();\n }\n\n setFontSize(size: AXWysiwygFontSizeToken | null): void {\n this.editor()?.chain().focus().setAxWysiwygFontSize(size).run();\n }\n\n setColor(color: string): void {\n this.editor()?.chain().focus().setColor(color).run();\n }\n\n unsetColor(): void {\n this.editor()?.chain().focus().unsetColor().run();\n }\n\n setHighlight(color: string): void {\n this.editor()?.chain().focus().setHighlight({ color }).run();\n }\n\n unsetHighlight(): void {\n this.editor()?.chain().focus().unsetHighlight().run();\n }\n\n setLink(href: string): void {\n this.editor()?.chain().focus().extendMarkRange('link').setLink({ href }).run();\n }\n\n unsetLink(): void {\n this.editor()?.chain().focus().unsetLink().run();\n }\n\n insertImage(src: string, alt?: string): void {\n this.editor()?.chain().focus().setImage({ src, alt }).run();\n }\n\n undo(): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n ed.chain().focus().undo().run();\n this.refreshState(ed);\n }\n\n redo(): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n ed.chain().focus().redo().run();\n this.refreshState(ed);\n }\n\n clearFormatting(): void {\n this.editor()?.chain().focus().clearNodes().unsetAllMarks().run();\n }\n\n execute(command: AXWysiwygCommand, payload?: unknown): void {\n switch (command) {\n case 'bold':\n this.toggleBold();\n break;\n case 'italic':\n this.toggleItalic();\n break;\n case 'underline':\n this.toggleUnderline();\n break;\n case 'strike':\n this.toggleStrike();\n break;\n case 'code':\n this.toggleCode();\n break;\n case 'codeBlock':\n this.toggleCodeBlock();\n break;\n case 'heading':\n if (typeof payload === 'number') {\n this.toggleHeading(payload as AXWysiwygHeadingLevel);\n }\n break;\n case 'paragraph':\n this.setParagraph();\n break;\n case 'bulletList':\n this.toggleBulletList();\n break;\n case 'orderedList':\n this.toggleOrderedList();\n break;\n case 'blockquote':\n this.toggleBlockquote();\n break;\n case 'textAlign':\n if (typeof payload === 'string') {\n this.setTextAlign(payload as AXWysiwygTextAlign);\n }\n break;\n case 'direction':\n if (payload === 'rtl' || payload === 'ltr') {\n this.setTextDirection(payload);\n }\n break;\n case 'fontSize':\n if (payload === null) {\n this.setFontSize(null);\n } else if (payload === 'small' || payload === 'large' || payload === 'huge') {\n this.setFontSize(payload);\n }\n break;\n case 'color':\n if (typeof payload === 'string') {\n this.setColor(payload);\n } else {\n this.unsetColor();\n }\n break;\n case 'highlight':\n if (typeof payload === 'string') {\n this.setHighlight(payload);\n } else {\n this.unsetHighlight();\n }\n break;\n case 'link':\n if (typeof payload === 'string' && payload) {\n this.setLink(payload);\n } else {\n this.unsetLink();\n }\n break;\n case 'image':\n if (typeof payload === 'string') {\n this.insertImage(payload);\n }\n break;\n case 'video':\n if (typeof payload === 'string') {\n this.insertVideo(payload);\n }\n break;\n case 'undo':\n this.undo();\n break;\n case 'redo':\n this.redo();\n break;\n case 'clearFormatting':\n this.clearFormatting();\n break;\n }\n }\n\n isActive(name: string, attrs?: Record<string, unknown>): boolean {\n return this.editor()?.isActive(name, attrs) ?? false;\n }\n\n can(command: 'undo' | 'redo'): boolean {\n const ed = this.editor();\n if (!ed) {\n return false;\n }\n if (command === 'undo') {\n return ed.can().undo();\n }\n return ed.can().redo();\n }\n\n private setMarkActive(name: 'bold' | 'italic' | 'underline' | 'strike', active: boolean): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n const chain = ed.chain().focus();\n switch (name) {\n case 'bold':\n active ? chain.setBold().run() : chain.unsetBold().run();\n break;\n case 'italic':\n active ? chain.setItalic().run() : chain.unsetItalic().run();\n break;\n case 'underline':\n active ? chain.setUnderline().run() : chain.unsetUnderline().run();\n break;\n case 'strike':\n active ? chain.setStrike().run() : chain.unsetStrike().run();\n break;\n }\n }\n\n private refreshState(editor: Editor): void {\n const textColor = editor.getAttributes('textStyle')['color'] as string | undefined;\n const fontSizeCss = editor.getAttributes('textStyle')['fontSize'] as string | undefined;\n const highlightColor = editor.getAttributes('highlight')['color'] as string | undefined;\n const linkHref = editor.getAttributes('link')['href'] as string | undefined;\n const dir = (editor.getAttributes('paragraph')['dir'] || editor.getAttributes('heading')['dir']) as\n | AXWysiwygTextDirection\n | undefined;\n\n let headingLevel: AXWysiwygHeadingLevel | null = null;\n for (let level = 1; level <= 6; level++) {\n if (editor.isActive('heading', { level })) {\n headingLevel = level as AXWysiwygHeadingLevel;\n break;\n }\n }\n\n let textAlign: AXWysiwygTextAlign | null = null;\n for (const align of ['left', 'center', 'right', 'justify'] as AXWysiwygTextAlign[]) {\n if (editor.isActive({ textAlign: align })) {\n textAlign = align;\n break;\n }\n }\n\n let fontSize: AXWysiwygFontSizeToken | null = null;\n if (fontSizeCss) {\n for (const [token, css] of Object.entries(AX_WYSIWYG_FONT_SIZE_VALUES) as [AXWysiwygFontSizeToken, string][]) {\n if (fontSizeCss === css) {\n fontSize = token;\n break;\n }\n }\n }\n\n this.state.set({\n bold: editor.isActive('bold'),\n italic: editor.isActive('italic'),\n underline: editor.isActive('underline'),\n strike: editor.isActive('strike'),\n code: editor.isActive('code'),\n codeBlock: editor.isActive('codeBlock'),\n headingLevel,\n bulletList: editor.isActive('bulletList'),\n orderedList: editor.isActive('orderedList'),\n blockquote: editor.isActive('blockquote'),\n textAlign,\n textColor: textColor ?? null,\n highlightColor: highlightColor ?? null,\n linkHref: linkHref ?? null,\n fontSize,\n textDirection: dir ?? null,\n canUndo: editor.can().undo(),\n canRedo: editor.can().redo(),\n isEmpty: editor.isEmpty,\n isFocused: editor.isFocused,\n });\n }\n}\n\nexport type { AXWysiwygRange };\n","/** @deprecated Use `@acorex/cdk/text-editor` and `@acorex/components/text-editor` instead. */\nexport * from './lib/wysiwyg.class';\nexport * from './lib/wysiwyg.extensions';\nexport * from './lib/wysiwyg.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex/cdk",
|
|
3
|
-
"version": "22.4.
|
|
3
|
+
"version": "22.4.11",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@acorex/core": "22.4.
|
|
5
|
+
"@acorex/core": "22.4.11",
|
|
6
6
|
"@tiptap/core": ">=3.31.4",
|
|
7
7
|
"@tiptap/extension-color": ">=3.31.4",
|
|
8
8
|
"@tiptap/extension-highlight": ">=3.31.4",
|
|
9
9
|
"@tiptap/extension-image": ">=3.31.4",
|
|
10
|
+
"@tiptap/extension-table": ">=3.31.4",
|
|
11
|
+
"@tiptap/pm": ">=3.31.4",
|
|
10
12
|
"@tiptap/extension-text-align": ">=3.31.4",
|
|
11
13
|
"@tiptap/extension-text-style": ">=3.31.4",
|
|
12
14
|
"@tiptap/extension-underline": ">=3.31.4",
|
|
@@ -128,6 +130,10 @@
|
|
|
128
130
|
"types": "./types/acorex-cdk-sticky.d.ts",
|
|
129
131
|
"default": "./fesm2022/acorex-cdk-sticky.mjs"
|
|
130
132
|
},
|
|
133
|
+
"./text-editor": {
|
|
134
|
+
"types": "./types/acorex-cdk-text-editor.d.ts",
|
|
135
|
+
"default": "./fesm2022/acorex-cdk-text-editor.mjs"
|
|
136
|
+
},
|
|
131
137
|
"./uploader": {
|
|
132
138
|
"types": "./types/acorex-cdk-uploader.d.ts",
|
|
133
139
|
"default": "./fesm2022/acorex-cdk-uploader.mjs"
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import * as _tiptap_core from '@tiptap/core';
|
|
3
|
+
import { Content, Extensions, Editor, JSONContent } from '@tiptap/core';
|
|
4
|
+
|
|
5
|
+
type AXTextEditorTiptapEditor = Editor;
|
|
6
|
+
type AXTextEditorTiptapContent = Content;
|
|
7
|
+
type AXTextEditorTiptapJSON = JSONContent;
|
|
8
|
+
type AXTextEditorTiptapChain = ReturnType<Editor['chain']>;
|
|
9
|
+
type AXTextEditorHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
10
|
+
type AXTextEditorTextAlign = 'left' | 'center' | 'right' | 'justify';
|
|
11
|
+
type AXTextEditorTextDirection = 'rtl' | 'ltr';
|
|
12
|
+
type AXTextEditorFontSizeToken = 'small' | 'large' | 'huge';
|
|
13
|
+
declare const AX_TEXT_EDITOR_FONT_SIZE_TOKEN_VALUES: Record<AXTextEditorFontSizeToken, string>;
|
|
14
|
+
type AXTextEditorCommandAttrs = Record<string, unknown>;
|
|
15
|
+
declare const AX_TEXT_EDITOR_ZOOM_PRESETS: readonly [40, 50, 75, 90, 100, 125, 150, 175, 200];
|
|
16
|
+
declare const AX_TEXT_EDITOR_ZOOM_MIN = 40;
|
|
17
|
+
declare const AX_TEXT_EDITOR_ZOOM_MAX = 200;
|
|
18
|
+
declare const AX_TEXT_EDITOR_FONT_SIZES: readonly [8, 9, 10, 11, 12, 14, 16, 18, 20, 24, 28, 32, 36, 48, 72];
|
|
19
|
+
type AXTextEditorFontSize = (typeof AX_TEXT_EDITOR_FONT_SIZES)[number];
|
|
20
|
+
declare const AX_TEXT_EDITOR_DEFAULT_TEXT_COLORS: string[];
|
|
21
|
+
declare const AX_TEXT_EDITOR_DEFAULT_BACKGROUND_COLORS: string[];
|
|
22
|
+
interface AXTextEditorRecentColor {
|
|
23
|
+
color: string;
|
|
24
|
+
kind: 'text' | 'background';
|
|
25
|
+
}
|
|
26
|
+
type AXTextEditorCommandType = 'undo' | 'redo' | 'bold' | 'italic' | 'underline' | 'strike' | 'heading' | 'paragraph' | 'align' | 'direction' | 'color' | 'highlight' | 'fontSize' | 'bulletList' | 'orderedList' | 'superscript' | 'subscript' | 'link' | 'unlink' | 'blockquote' | 'code' | 'codeBlock' | 'horizontalRule' | 'image' | 'video' | 'insertTable' | 'addColumnBefore' | 'addColumnAfter' | 'deleteColumn' | 'addRowBefore' | 'addRowAfter' | 'deleteRow' | 'toggleHeaderRow' | 'deleteTable';
|
|
27
|
+
interface AXTextEditorFeatures {
|
|
28
|
+
table?: boolean;
|
|
29
|
+
image?: boolean;
|
|
30
|
+
video?: boolean;
|
|
31
|
+
superscript?: boolean;
|
|
32
|
+
subscript?: boolean;
|
|
33
|
+
keepSelection?: boolean;
|
|
34
|
+
placeholder?: boolean;
|
|
35
|
+
}
|
|
36
|
+
declare const AX_DEFAULT_TEXT_EDITOR_FEATURES: AXTextEditorFeatures;
|
|
37
|
+
interface AXTextEditorLoadExtensionsOptions {
|
|
38
|
+
placeholder?: string | (() => string);
|
|
39
|
+
features?: AXTextEditorFeatures;
|
|
40
|
+
headingLevels?: AXTextEditorHeadingLevel[];
|
|
41
|
+
extensions?: Extensions;
|
|
42
|
+
}
|
|
43
|
+
interface AXTextEditorState {
|
|
44
|
+
bold: boolean;
|
|
45
|
+
italic: boolean;
|
|
46
|
+
underline: boolean;
|
|
47
|
+
strike: boolean;
|
|
48
|
+
code: boolean;
|
|
49
|
+
codeBlock: boolean;
|
|
50
|
+
headingLevel: AXTextEditorHeadingLevel | null;
|
|
51
|
+
bulletList: boolean;
|
|
52
|
+
orderedList: boolean;
|
|
53
|
+
blockquote: boolean;
|
|
54
|
+
superscript: boolean;
|
|
55
|
+
subscript: boolean;
|
|
56
|
+
textAlign: AXTextEditorTextAlign | null;
|
|
57
|
+
textColor: string | null;
|
|
58
|
+
highlightColor: string | null;
|
|
59
|
+
linkHref: string | null;
|
|
60
|
+
fontSize: string | null;
|
|
61
|
+
textDirection: AXTextEditorTextDirection | null;
|
|
62
|
+
table: boolean;
|
|
63
|
+
canUndo: boolean;
|
|
64
|
+
canRedo: boolean;
|
|
65
|
+
isEmpty: boolean;
|
|
66
|
+
isFocused: boolean;
|
|
67
|
+
}
|
|
68
|
+
declare const AX_EMPTY_TEXT_EDITOR_STATE: AXTextEditorState;
|
|
69
|
+
interface AXTextEditorInitOptions {
|
|
70
|
+
content?: AXTextEditorTiptapContent;
|
|
71
|
+
editable?: boolean;
|
|
72
|
+
placeholder?: string | (() => string);
|
|
73
|
+
features?: AXTextEditorFeatures;
|
|
74
|
+
headingLevels?: AXTextEditorHeadingLevel[];
|
|
75
|
+
extensions?: Extensions;
|
|
76
|
+
editorProps?: _tiptap_core.EditorOptions['editorProps'];
|
|
77
|
+
/** @deprecated Use `editable: false` instead. */
|
|
78
|
+
readOnly?: boolean;
|
|
79
|
+
onUpdate?: (editor: AXTextEditorTiptapEditor) => void;
|
|
80
|
+
onFocus?: (editor: AXTextEditorTiptapEditor, event?: FocusEvent) => void;
|
|
81
|
+
onBlur?: (editor: AXTextEditorTiptapEditor, event?: FocusEvent) => void;
|
|
82
|
+
onSelectionUpdate?: (editor: AXTextEditorTiptapEditor) => void;
|
|
83
|
+
onTransaction?: (editor: AXTextEditorTiptapEditor) => void;
|
|
84
|
+
}
|
|
85
|
+
declare module '@tiptap/core' {
|
|
86
|
+
interface Commands<ReturnType> {
|
|
87
|
+
superscript: {
|
|
88
|
+
toggleSuperscript: () => ReturnType;
|
|
89
|
+
};
|
|
90
|
+
subscript: {
|
|
91
|
+
toggleSubscript: () => ReturnType;
|
|
92
|
+
};
|
|
93
|
+
axTextEditorFontSize: {
|
|
94
|
+
setFontSize: (size: string | null) => ReturnType;
|
|
95
|
+
};
|
|
96
|
+
axTextEditorVideo: {
|
|
97
|
+
setVideo: (options: {
|
|
98
|
+
src: string;
|
|
99
|
+
}) => ReturnType;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
declare class AXTextEditor {
|
|
105
|
+
readonly editor: _angular_core.WritableSignal<_tiptap_core.Editor>;
|
|
106
|
+
readonly state: _angular_core.WritableSignal<AXTextEditorState>;
|
|
107
|
+
readonly ready: _angular_core.WritableSignal<boolean>;
|
|
108
|
+
readonly version: _angular_core.WritableSignal<number>;
|
|
109
|
+
private readonly platformId;
|
|
110
|
+
private destroyed;
|
|
111
|
+
private applyingContent;
|
|
112
|
+
init(container: HTMLElement | string, options?: AXTextEditorInitOptions): Promise<void>;
|
|
113
|
+
destroy(): void;
|
|
114
|
+
refresh(): void;
|
|
115
|
+
setContent(value: AXTextEditorTiptapContent | null | undefined, emit?: boolean): void;
|
|
116
|
+
getHTML(): string;
|
|
117
|
+
getJSON(): AXTextEditorTiptapJSON | null;
|
|
118
|
+
getText(options?: {
|
|
119
|
+
blockSeparator?: string;
|
|
120
|
+
}): string;
|
|
121
|
+
isEmpty(): boolean;
|
|
122
|
+
isFocused(): boolean;
|
|
123
|
+
isEditable(): boolean;
|
|
124
|
+
setEditable(editable: boolean): void;
|
|
125
|
+
focus(): void;
|
|
126
|
+
blur(): void;
|
|
127
|
+
chain(): AXTextEditorTiptapChain | null;
|
|
128
|
+
get commands(): AXTextEditorTiptapEditor['commands'] | undefined;
|
|
129
|
+
isActive(command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean;
|
|
130
|
+
can(command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean;
|
|
131
|
+
run(command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean;
|
|
132
|
+
private commandsApi;
|
|
133
|
+
private getCommandsApi;
|
|
134
|
+
insertContent(value: AXTextEditorTiptapContent): boolean;
|
|
135
|
+
clearContent(): boolean;
|
|
136
|
+
insertImage(src: string, alt?: string): void;
|
|
137
|
+
insertVideo(src: string): void;
|
|
138
|
+
setLink(href: string): void;
|
|
139
|
+
unsetLink(): void;
|
|
140
|
+
clearFormatting(): void;
|
|
141
|
+
toggleHeading(level: AXTextEditorHeadingLevel): void;
|
|
142
|
+
setTextAlign(align: AXTextEditorTextAlign): void;
|
|
143
|
+
setTextDirection(direction: AXTextEditorTextDirection): void;
|
|
144
|
+
private refreshState;
|
|
145
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTextEditor, never>;
|
|
146
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
declare function isTextEditorCommandActive(editor: AXTextEditorTiptapEditor, command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean;
|
|
150
|
+
declare function canRunTextEditorCommand(editor: AXTextEditorTiptapEditor, command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean;
|
|
151
|
+
declare function runTextEditorCommand(editor: AXTextEditorTiptapEditor, command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean;
|
|
152
|
+
|
|
153
|
+
declare function createTextEditorExtensions(placeholderOrOptions?: string | (() => string) | AXTextEditorLoadExtensionsOptions): Promise<_tiptap_core.AnyExtension[]>;
|
|
154
|
+
|
|
155
|
+
export { AXTextEditor, AX_DEFAULT_TEXT_EDITOR_FEATURES, AX_EMPTY_TEXT_EDITOR_STATE, AX_TEXT_EDITOR_DEFAULT_BACKGROUND_COLORS, AX_TEXT_EDITOR_DEFAULT_TEXT_COLORS, AX_TEXT_EDITOR_FONT_SIZES, AX_TEXT_EDITOR_FONT_SIZE_TOKEN_VALUES, AX_TEXT_EDITOR_ZOOM_MAX, AX_TEXT_EDITOR_ZOOM_MIN, AX_TEXT_EDITOR_ZOOM_PRESETS, canRunTextEditorCommand, createTextEditorExtensions, isTextEditorCommandActive, runTextEditorCommand };
|
|
156
|
+
export type { AXTextEditorCommandAttrs, AXTextEditorCommandType, AXTextEditorFeatures, AXTextEditorFontSize, AXTextEditorFontSizeToken, AXTextEditorHeadingLevel, AXTextEditorInitOptions, AXTextEditorLoadExtensionsOptions, AXTextEditorRecentColor, AXTextEditorState, AXTextEditorTextAlign, AXTextEditorTextDirection, AXTextEditorTiptapChain, AXTextEditorTiptapContent, AXTextEditorTiptapEditor, AXTextEditorTiptapJSON };
|
|
@@ -65,7 +65,7 @@ interface AXWysiwygLoadExtensionsOptions {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
|
-
* @deprecated Use `
|
|
68
|
+
* @deprecated Use `AXTextEditor` from `@acorex/cdk/text-editor` instead.
|
|
69
69
|
*/
|
|
70
70
|
declare class AXWysiwyg {
|
|
71
71
|
readonly editor: _angular_core.WritableSignal<Editor>;
|