@shival99/z-ui 2.0.12 → 2.0.14

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.
Files changed (28) hide show
  1. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +1 -1
  2. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
  3. package/fesm2022/shival99-z-ui-components-z-calendar.mjs +9 -1
  4. package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
  5. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +1 -1
  6. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -1
  7. package/fesm2022/shival99-z-ui-components-z-editor.mjs +1 -1
  8. package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
  9. package/fesm2022/shival99-z-ui-components-z-filter.mjs +1 -1
  10. package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
  11. package/fesm2022/shival99-z-ui-components-z-input.mjs +1 -1
  12. package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
  13. package/fesm2022/shival99-z-ui-components-z-menu.mjs +2 -2
  14. package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
  15. package/fesm2022/shival99-z-ui-components-z-popover.mjs +8 -3
  16. package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
  17. package/fesm2022/shival99-z-ui-components-z-select.mjs +1 -1
  18. package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
  19. package/fesm2022/shival99-z-ui-components-z-table.mjs +2 -2
  20. package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
  21. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +1 -1
  22. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
  23. package/package.json +1 -1
  24. package/types/shival99-z-ui-components-z-autocomplete.d.ts +1 -1
  25. package/types/shival99-z-ui-components-z-editor.d.ts +1 -1
  26. package/types/shival99-z-ui-components-z-popover.d.ts +3 -2
  27. package/types/shival99-z-ui-components-z-select.d.ts +1 -1
  28. package/types/shival99-z-ui-components-z-table.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"shival99-z-ui-components-z-editor.mjs","sources":["../../../../libs/core-ui/components/z-editor/z-editor.define.ts","../../../../libs/core-ui/components/z-editor/z-editor.variants.ts","../../../../libs/core-ui/components/z-editor/z-editor.component.ts","../../../../libs/core-ui/components/z-editor/z-editor.component.html","../../../../libs/core-ui/components/z-editor/shival99-z-ui-components-z-editor.ts"],"sourcesContent":["import type { ZEditorSlashCommandItem, ZEditorToolbarItem } from './z-editor.types';\n\nexport const Z_EDITOR_DEFAULT_TOOLBAR: readonly ZEditorToolbarItem[] = [\n { id: 'undo', icon: 'lucideUndo', label: 'Undo' },\n { id: 'redo', icon: 'lucideRedo', label: 'Redo' },\n { id: 'bold', icon: 'lucideBold', label: 'Bold' },\n { id: 'italic', icon: 'lucideItalic', label: 'Italic' },\n { id: 'underline', icon: 'lucideUnderline', label: 'Underline' },\n { id: 'strike', icon: 'lucideStrikethrough', label: 'Strike' },\n { id: 'code', icon: 'lucideCode', label: 'Code' },\n { id: 'blockStyle', icon: 'lucidePilcrow', label: 'Block style' },\n { id: 'bulletList', icon: 'lucideList', label: 'Bullet list' },\n { id: 'orderedList', icon: 'lucideListOrdered', label: 'Ordered list' },\n { id: 'blockquote', icon: 'lucideQuote', label: 'Blockquote' },\n { id: 'codeBlock', icon: 'lucideFileCode', label: 'Code block' },\n { id: 'link', icon: 'lucideLink', label: 'Link' },\n { id: 'image', icon: 'lucideImage', label: 'Image' },\n { id: 'emoji', icon: 'lucideSmilePlus', label: 'Emoji' },\n { id: 'textColor', icon: 'lucidePalette', label: 'Text color' },\n { id: 'backgroundColor', icon: 'lucideHighlighter', label: 'Background color' },\n { id: 'align', icon: 'lucideAlignLeft', label: 'Align' },\n { id: 'horizontalRule', icon: 'lucideMinus', label: 'Horizontal rule' },\n { id: 'clearFormatting', icon: 'lucideRemoveFormatting', label: 'Clear formatting' },\n];\n\nexport const Z_EDITOR_COLOR_SWATCHES: readonly string[] = [\n '#000000',\n '#111827',\n '#374151',\n '#6b7280',\n '#9ca3af',\n '#ffffff',\n '#7f1d1d',\n '#ef4444',\n '#f97316',\n '#f59e0b',\n '#eab308',\n '#365314',\n '#22c55e',\n '#0f766e',\n '#06b6d4',\n '#1d4ed8',\n '#3b82f6',\n '#8b5cf6',\n '#6d28d9',\n '#ec4899',\n];\n\nexport const Z_EDITOR_BACKGROUND_SWATCHES: readonly string[] = [\n '#ffffff',\n '#f9fafb',\n '#f3f4f6',\n '#e5e7eb',\n '#d1d5db',\n '#fef3c7',\n '#fde68a',\n '#ffedd5',\n '#fed7aa',\n '#fee2e2',\n '#fecaca',\n '#fce7f3',\n '#fbcfe8',\n '#ede9fe',\n '#ddd6fe',\n '#dbeafe',\n '#bfdbfe',\n '#cffafe',\n '#a5f3fc',\n '#dcfce7',\n];\n\nexport const Z_EDITOR_SLASH_COMMANDS: readonly ZEditorSlashCommandItem[] = [\n {\n id: 'text',\n command: 'paragraph',\n icon: 'lucideType',\n label: 'Text',\n description: 'Plain paragraph text',\n group: 'Formatting',\n aliases: ['paragraph', 'p'],\n },\n {\n id: 'standard',\n command: 'paragraph',\n icon: 'lucideType',\n label: 'Standard',\n description: '',\n group: 'Formatting',\n aliases: ['standard', 'normal'],\n },\n {\n id: 'small',\n command: 'small',\n icon: 'lucideCaseLower',\n label: 'Small',\n description: '',\n group: 'Formatting',\n aliases: ['small', 'caption'],\n },\n {\n id: 'heading-1',\n command: 'heading1',\n icon: 'lucideHeading1',\n label: 'Heading 1',\n description: 'Large section heading',\n group: 'Formatting',\n aliases: ['h1', 'title'],\n },\n {\n id: 'heading-2',\n command: 'heading2',\n icon: 'lucideHeading2',\n label: 'Heading 2',\n description: 'Medium section heading',\n group: 'Formatting',\n aliases: ['h2', 'subtitle'],\n },\n {\n id: 'heading-3',\n command: 'heading3',\n icon: 'lucideHeading3',\n label: 'Heading 3',\n description: 'Small section heading',\n group: 'Formatting',\n aliases: ['h3'],\n },\n {\n id: 'heading-4',\n command: 'heading4',\n icon: 'lucideHeading4',\n label: 'Heading 4',\n description: '',\n group: 'Formatting',\n aliases: ['h4'],\n },\n {\n id: 'bullet-list',\n command: 'bulletList',\n icon: 'lucideList',\n label: 'Bullet list',\n description: 'Unordered list',\n group: 'Lists',\n aliases: ['ul', 'list'],\n },\n {\n id: 'ordered-list',\n command: 'orderedList',\n icon: 'lucideListOrdered',\n label: 'Ordered list',\n description: 'Numbered list',\n group: 'Lists',\n aliases: ['ol', 'number'],\n },\n {\n id: 'alphabetical-list',\n command: 'orderedList',\n icon: 'lucideListOrdered',\n label: 'Alphabetical list',\n description: '',\n group: 'Lists',\n aliases: ['ordered', 'ol', 'number', 'alphabetical'],\n },\n {\n id: 'blockquote',\n command: 'blockquote',\n icon: 'lucideQuote',\n label: 'Blockquote',\n description: 'Quote block',\n group: 'Blocks',\n aliases: ['quote'],\n },\n {\n id: 'code-block',\n command: 'codeBlock',\n icon: 'lucideFileCode',\n label: 'Code block',\n description: 'Preformatted code',\n group: 'Blocks',\n aliases: ['code', 'pre'],\n },\n {\n id: 'horizontal-rule',\n command: 'horizontalRule',\n icon: 'lucideMinus',\n label: 'Divider',\n description: 'Horizontal separator',\n group: 'Insert',\n aliases: ['hr', 'line', 'divider'],\n },\n {\n id: 'image',\n command: 'image',\n icon: 'lucideImage',\n label: 'Image',\n description: 'Upload image',\n group: 'Insert',\n aliases: ['photo', 'picture'],\n },\n];\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zEditorVariants = cva(\n [\n 'z-editor block w-full rounded-[0.375rem] border border-input bg-white shadow-xs',\n 'transition-[border-color,box-shadow,background-color,color,opacity] duration-200',\n 'dark:bg-input/30 dark:border-input',\n 'outline-none',\n ],\n {\n variants: {\n zSize: {\n sm: '[&_.z-editor-prosemirror]:min-h-24 [&_.z-editor-prosemirror]:text-sm',\n default: '[&_.z-editor-prosemirror]:min-h-40 [&_.z-editor-prosemirror]:text-sm',\n lg: '[&_.z-editor-prosemirror]:min-h-60 [&_.z-editor-prosemirror]:text-base',\n },\n zStatus: {\n default: 'focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]',\n error:\n 'border-destructive! ring-destructive/20 ring-[3px] focus-within:border-destructive! focus-within:ring-destructive/30',\n disabled: 'opacity-50 cursor-not-allowed bg-muted! text-muted-foreground',\n readonly: 'bg-muted/50! text-muted-foreground cursor-default',\n },\n zPlaceholderMode: {\n firstLine: 'z-editor-placeholder-first-line',\n everyLine: '',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zStatus: 'default',\n zPlaceholderMode: 'everyLine',\n },\n }\n);\n\nexport type ZEditorVariants = VariantProps<typeof zEditorVariants>;\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n type OnInit,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n type AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n NgControl,\n NgModel,\n PristineChangeEvent,\n ReactiveFormsModule,\n TouchedChangeEvent,\n} from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { ZInputComponent } from '@shival99/z-ui/components/z-input';\nimport type { ZInputValidator } from '@shival99/z-ui/components/z-input';\nimport { ZPopoverDirective } from '@shival99/z-ui/components/z-popover';\nimport type { ZPopoverControl } from '@shival99/z-ui/components/z-popover';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { ZTranslateService } from '@shival99/z-ui/services';\nimport {\n Z_EMOJI_KEYWORDS,\n Z_EMOJI_SHEET,\n type ZEmojiCategory,\n zCreateEvent,\n type ZEvent,\n zMergeClasses,\n zTransform,\n zUuid,\n} from '@shival99/z-ui/utils';\nimport { Editor, type AnyExtension, type Content, posToDOMRect } from '@tiptap/core';\nimport BubbleMenu from '@tiptap/extension-bubble-menu';\nimport Code from '@tiptap/extension-code';\nimport HorizontalRule from '@tiptap/extension-horizontal-rule';\nimport Link from '@tiptap/extension-link';\nimport Mention from '@tiptap/extension-mention';\nimport Placeholder, { type PlaceholderOptions } from '@tiptap/extension-placeholder';\nimport TextAlign from '@tiptap/extension-text-align';\nimport { BackgroundColor, Color, TextStyle } from '@tiptap/extension-text-style';\nimport FontSize from '@tiptap/extension-text-style/font-size';\nimport Underline from '@tiptap/extension-underline';\nimport { Markdown } from '@tiptap/markdown';\nimport { TextSelection } from '@tiptap/pm/state';\nimport type { EditorView } from '@tiptap/pm/view';\nimport StarterKit from '@tiptap/starter-kit';\nimport type { ClassValue } from 'clsx';\nimport { filter, merge } from 'rxjs';\nimport ImageResize from 'tiptap-extension-resize-image';\nimport {\n Z_EDITOR_BACKGROUND_SWATCHES,\n Z_EDITOR_COLOR_SWATCHES,\n Z_EDITOR_DEFAULT_TOOLBAR,\n Z_EDITOR_SLASH_COMMANDS,\n} from './z-editor.define';\nimport type {\n ZEditorContentType,\n ZEditorControl,\n ZEditorMarkdownCapable,\n ZEditorResolvedToolbarItem,\n ZEditorSlashCommandItem,\n ZEditorSlashCommandViewItem,\n ZEditorSize,\n ZEditorTipTapOptions,\n ZEditorToolbarCommand,\n ZEditorToolbarItem,\n ZEditorValidator,\n} from './z-editor.types';\nimport { zEditorVariants } from './z-editor.variants';\n\n@Component({\n selector: 'z-editor',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n ZButtonComponent,\n ZIconComponent,\n ZInputComponent,\n ZPopoverDirective,\n ZTooltipDirective,\n TranslatePipe,\n ],\n standalone: true,\n templateUrl: './z-editor.component.html',\n styleUrl: './z-editor.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZEditorComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'zEditor',\n})\nexport class ZEditorComponent implements OnInit, ControlValueAccessor {\n private readonly _injector = inject(Injector);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _zTranslate = inject(ZTranslateService);\n private readonly _editorHost = viewChild.required<ElementRef<HTMLElement>>('editorHost');\n private readonly _floatingToolbar = viewChild.required<ElementRef<HTMLElement>>('floatingToolbar');\n private readonly _slashMenuScrollHost = viewChild<ElementRef<HTMLElement>>('slashMenuScrollHost');\n\n public readonly zOnChange = output<string | Content>();\n public readonly zOnFocus = output<FocusEvent>();\n public readonly zOnBlur = output<FocusEvent>();\n public readonly zControl = output<ZEditorControl>();\n public readonly zEvent = output<ZEvent>();\n\n public readonly class = input<ClassValue>('');\n public readonly zSize = input<ZEditorSize>('default');\n public readonly zLabel = input<string>('');\n public readonly zLabelClass = input<string>('');\n public readonly zPlaceholder = input<string>('');\n public readonly zRequired = input(false, { transform: zTransform });\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zReadonly = input(false, { transform: zTransform });\n public readonly zContentType = input<ZEditorContentType>('html');\n public readonly zToolbar = input<readonly ZEditorToolbarItem[] | false>(Z_EDITOR_DEFAULT_TOOLBAR);\n public readonly zTipTap = input<ZEditorTipTapOptions>({});\n public readonly zValidators = input<ZEditorValidator[]>([]);\n\n protected readonly editorId = zUuid('z-editor');\n protected readonly linkInputId = zUuid('z-editor-link');\n\n protected readonly _value = signal<string | Content>('');\n private readonly _disabled = signal(false);\n private readonly _formControl = signal<AbstractControl | null>(null);\n private readonly _formStateVersion = signal(0);\n private readonly _isNgModel = signal(false);\n private readonly _selectionVersion = signal(0);\n private readonly _plainText = signal('');\n protected readonly slashMenuState = signal({\n visible: false,\n query: '',\n from: 0,\n to: 0,\n left: 0,\n top: 0,\n });\n\n protected readonly slashMenuActiveIndex = signal(0);\n protected readonly linkPopoverState = signal({\n visible: false,\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n\n protected readonly linkUrl = signal('');\n protected readonly activeLinkHref = signal('');\n protected readonly linkValidators: ZInputValidator[] = [\n {\n error: 'url',\n message: 'i18n_z_ui_editor_invalid_url',\n validate: value => this._normalizeUrl(String(value ?? '')) !== '',\n },\n ];\n\n protected readonly textColorSwatches = Z_EDITOR_COLOR_SWATCHES;\n protected readonly backgroundColorSwatches = Z_EDITOR_BACKGROUND_SWATCHES;\n protected readonly slashCommands = Z_EDITOR_SLASH_COMMANDS;\n protected readonly blockStyleOptions: readonly {\n command: Extract<ZEditorToolbarCommand, 'paragraph' | 'heading1' | 'heading2' | 'heading3' | 'heading4'>;\n icon: ZEditorToolbarItem['icon'];\n label: string;\n }[] = [\n { command: 'paragraph', icon: 'lucidePilcrow', label: 'Paragraph' },\n { command: 'heading1', icon: 'lucideHeading1', label: 'Heading 1' },\n { command: 'heading2', icon: 'lucideHeading2', label: 'Heading 2' },\n { command: 'heading3', icon: 'lucideHeading3', label: 'Heading 3' },\n { command: 'heading4', icon: 'lucideHeading4', label: 'Heading 4' },\n ];\n\n protected readonly alignOptions: readonly {\n command: Extract<ZEditorToolbarCommand, 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify'>;\n icon: ZEditorToolbarItem['icon'];\n label: string;\n }[] = [\n { command: 'alignLeft', icon: 'lucideAlignLeft', label: 'Left' },\n { command: 'alignCenter', icon: 'lucideAlignCenter', label: 'Center' },\n { command: 'alignRight', icon: 'lucideAlignRight', label: 'Right' },\n { command: 'alignJustify', icon: 'lucideAlignJustify', label: 'Justify' },\n ];\n\n private readonly _toolbarShortcutLabels: Partial<Record<ZEditorToolbarCommand, string>> = {\n bold: 'Ctrl+B',\n italic: 'Ctrl+I',\n underline: 'Ctrl+U',\n strike: 'Ctrl+Shift+S',\n code: 'Ctrl+E',\n link: 'Ctrl+K',\n clearFormatting: 'Ctrl+\\\\',\n undo: 'Ctrl+Z',\n redo: 'Ctrl+Y',\n };\n\n protected readonly uiState = signal({\n touched: false,\n dirty: false,\n });\n\n private readonly _customError = signal<string | null>(null);\n\n private _onChange: (value: string | Content) => void = () => void 0;\n private _onTouched: () => void = () => void 0;\n private _ngControl: NgControl | null = null;\n private _editor: Editor | null = null;\n private _pendingValue: Content = '';\n private _linkSelection: { from: number; to: number } | null = null;\n private _linkAnchorElement: HTMLAnchorElement | null = null;\n private _emojiPopoverControl: ZPopoverControl | null = null;\n private _blockStylePopoverControl: ZPopoverControl | null = null;\n private _alignPopoverControl: ZPopoverControl | null = null;\n private _textColorPopoverControl: ZPopoverControl | null = null;\n private _backgroundColorPopoverControl: ZPopoverControl | null = null;\n private _slashMenuPopoverControl: ZPopoverControl | null = null;\n private _dismissedSlashMenu: { query: string; from: number; to: number } | null = null;\n private _linkPopoverControl: ZPopoverControl | null = null;\n private _resizeObserver: ResizeObserver | null = null;\n private _resizeListenerCleanup: (() => void) | null = null;\n private _bubbleMenuPositionFrame: number | null = null;\n protected readonly emojiCategories = Z_EMOJI_SHEET as readonly (Omit<ZEmojiCategory, 'icon'> & { icon: ZIcon })[];\n protected readonly activeEmojiCategoryId = signal(this.emojiCategories[0]?.id ?? 'smileys-people');\n protected readonly emojiSearch = signal('');\n protected readonly activeEmojiCategory = computed(\n () => this.emojiCategories.find(category => category.id === this.activeEmojiCategoryId()) ?? this.emojiCategories[0]\n );\n\n protected readonly activeEmojiCategoryLabel = computed(\n () => this.activeEmojiCategory()?.labelKey ?? 'i18n_z_ui_emoji_category_smileys'\n );\n\n protected readonly emojiSearchQuery = computed(() => this.emojiSearch().trim().toLowerCase());\n\n protected readonly activeEmojis = computed(() => {\n const query = this.emojiSearchQuery();\n\n if (query) {\n return this._searchEmojis(query);\n }\n\n return this.activeEmojiCategory()?.emojis ?? [];\n });\n\n protected readonly hasEmojiResults = computed(() => this.activeEmojis().length > 0);\n\n protected readonly isDisabled = computed(() => this._disabled() || this.zDisabled());\n protected readonly showToolbar = computed(() => this.zToolbar() !== false && !this.zReadonly() && !this.isDisabled());\n protected readonly normalizedLinkUrl = computed(() => this._normalizeUrl(this.linkUrl()));\n protected readonly activeTextColor = computed(() => this._getTextStyleAttribute('color') || '#111827');\n protected readonly activeBackgroundColor = computed(\n () => this._getTextStyleAttribute('backgroundColor') || '#ffffff'\n );\n\n protected readonly activeBlockStyle = computed(() => this._getActiveBlockStyle());\n protected readonly activeBlockStyleLabel = computed(\n () => this.blockStyleOptions.find(option => option.command === this.activeBlockStyle())?.label ?? 'Paragraph'\n );\n\n protected readonly activeAlign = computed(() => this._getActiveAlign());\n protected readonly activeAlignLabel = computed(\n () => this.alignOptions.find(option => option.command === this.activeAlign())?.label ?? 'Left'\n );\n\n protected readonly activeAlignIcon = computed(\n () => this.alignOptions.find(option => option.command === this.activeAlign())?.icon ?? 'lucideAlignLeft'\n );\n\n protected readonly filteredSlashCommands = computed<ZEditorSlashCommandViewItem[]>(() => {\n const query = this.slashMenuState().query.trim().toLowerCase();\n const commands = this.slashCommands;\n let matchedCommands = commands;\n\n if (query) {\n matchedCommands = commands.filter(item => {\n const label = item.label.toLowerCase();\n const description = item.description.toLowerCase();\n return (\n label.includes(query) || description.includes(query) || item.aliases.some(alias => alias.includes(query))\n );\n });\n }\n\n return matchedCommands.map((item, index) => ({\n ...item,\n showGroupLabel: index === 0 || matchedCommands[index - 1]?.group !== item.group,\n }));\n });\n\n protected readonly canApplyLink = computed(() => !!this.normalizedLinkUrl());\n protected readonly effectivePlaceholder = computed(() => {\n this._zTranslate.currentLang();\n return this.zPlaceholder() || this._zTranslate.instant('i18n_z_ui_editor_placeholder');\n });\n\n protected readonly toolbarItems = computed<ZEditorResolvedToolbarItem[]>(() => {\n this._selectionVersion();\n const toolbar = this.zToolbar();\n\n if (toolbar === false) {\n return [];\n }\n\n return toolbar.map(item => ({\n ...item,\n active: this._isToolbarCommandActive(item.id),\n disabled: this._isToolbarCommandDisabled(item.id),\n }));\n });\n\n protected readonly floatingToolbarItems = computed<\n (ZEditorResolvedToolbarItem & { shortcut: string; tooltip: string })[]\n >(() => {\n this._selectionVersion();\n const itemIds: ZEditorToolbarCommand[] = [\n 'bold',\n 'italic',\n 'underline',\n 'strike',\n 'code',\n 'blockStyle',\n 'clearFormatting',\n 'textColor',\n 'backgroundColor',\n 'align',\n 'link',\n ];\n\n return Z_EDITOR_DEFAULT_TOOLBAR.filter(item => itemIds.includes(item.id)).map(item => ({\n ...item,\n active: this._isToolbarCommandActive(item.id),\n disabled: this._isToolbarCommandDisabled(item.id),\n shortcut: this._toolbarShortcutLabels[item.id] ?? '',\n tooltip: this._getToolbarTooltip(item.id, item.label),\n }));\n });\n\n private readonly _shouldShowValidation = computed(() => {\n const control = this._formControl();\n this._formStateVersion();\n\n if (this._isNgModel()) {\n return this.uiState().dirty || this.uiState().touched;\n }\n\n if (control) {\n return control.dirty;\n }\n\n return this.uiState().dirty || this.uiState().touched;\n });\n\n private _getValidationErrors(): string[] {\n const errors: string[] = [];\n const plainText = this._plainText().trim();\n const valueText = this._serializeValueAsText();\n const validators = this.zValidators();\n\n if (!this._shouldShowValidation()) {\n return errors;\n }\n\n const isRequired = this.zRequired() || this._formControl()?.errors?.['required'];\n if (isRequired && !plainText && this._isEditorEmpty()) {\n this._zTranslate.currentLang();\n errors.push(this._zTranslate.instant('i18n_z_ui_editor_required'));\n }\n\n for (const validator of validators) {\n if (validator.error === 'required') {\n continue;\n }\n\n if (validator.minLength && valueText.length < validator.minLength) {\n errors.push(validator.message);\n continue;\n }\n\n if (validator.maxLength && valueText.length > validator.maxLength) {\n errors.push(validator.message);\n continue;\n }\n\n if (validator.pattern && !validator.pattern.test(valueText)) {\n errors.push(validator.message);\n }\n }\n\n return errors;\n }\n\n protected readonly hasError = computed(() => {\n if (this._customError()) {\n return true;\n }\n\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return true;\n }\n\n const control = this._formControl();\n this._formStateVersion();\n\n if (!control) {\n return false;\n }\n\n return control.invalid && this._shouldShowValidation();\n });\n\n protected readonly errorMessage = computed(() => {\n const customError = this._customError();\n if (customError) {\n return customError;\n }\n\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return customErrors[0];\n }\n\n const control = this._formControl();\n const errors = control?.errors;\n\n if (!errors) {\n return '';\n }\n\n this._zTranslate.currentLang();\n if (errors['required']) {\n return this._zTranslate.instant('i18n_z_ui_editor_required');\n }\n\n if (errors['minlength']) {\n return this._zTranslate.instant('i18n_z_ui_editor_min_length', {\n min: errors['minlength'].requiredLength,\n });\n }\n\n if (errors['maxlength']) {\n return this._zTranslate.instant('i18n_z_ui_editor_max_length', {\n max: errors['maxlength'].requiredLength,\n });\n }\n\n return this._zTranslate.instant('i18n_z_ui_editor_invalid');\n });\n\n protected readonly currentStatus = computed(() => {\n if (this.isDisabled()) {\n return 'disabled';\n }\n\n if (this.zReadonly()) {\n return 'readonly';\n }\n\n if (this.hasError()) {\n return 'error';\n }\n\n return 'default';\n });\n\n protected readonly wrapperClasses = computed(() => 'z-editor-wrapper flex w-full flex-col gap-2');\n\n protected readonly editorClasses = computed(() =>\n zMergeClasses(\n zEditorVariants({\n zSize: this.zSize(),\n zStatus: this.currentStatus(),\n zPlaceholderMode: this._placeholderMode(),\n }),\n this.class()\n )\n );\n\n constructor() {\n afterNextRender(() => {\n this._createEditor();\n });\n\n effect(() => {\n const editor = this._editor;\n const editable = !this.isDisabled() && !this.zReadonly();\n\n if (!editor || editor.isEditable === editable) {\n return;\n }\n\n editor.setEditable(editable);\n this._selectionVersion.update(v => v + 1);\n });\n\n this._destroyRef.onDestroy(() => {\n this._teardownBubbleMenuPositionUpdates();\n this._editor?.destroy();\n this._editor = null;\n });\n }\n\n ngOnInit(): void {\n queueMicrotask(() => {\n try {\n this._ngControl = this._injector.get(NgControl, null);\n this._isNgModel.set(this._ngControl instanceof NgModel);\n\n if (this._ngControl?.control) {\n const { control } = this._ngControl;\n this._formControl.set(control);\n merge(\n control.statusChanges,\n control.valueChanges,\n control.events.pipe(\n filter(event => event instanceof PristineChangeEvent || event instanceof TouchedChangeEvent)\n )\n )\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._formStateVersion.update(v => v + 1);\n });\n }\n } catch {\n this._ngControl = null;\n }\n });\n }\n\n public writeValue(value: string | Content): void {\n const nextValue = value || '';\n this._pendingValue = nextValue;\n this._value.set(nextValue);\n\n if (!this._editor || this._isCurrentEditorContent(nextValue)) {\n return;\n }\n\n this._editor.commands.setContent(nextValue, { emitUpdate: false });\n this._refreshEditorState();\n }\n\n public registerOnChange(fn: (value: string | Content) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n this._editor?.setEditable(!isDisabled && !this.zReadonly());\n }\n\n protected onToolbarClick(command: ZEditorToolbarCommand): void {\n const editor = this._editor;\n\n if (!editor || this._isToolbarCommandDisabled(command)) {\n return;\n }\n\n switch (command) {\n case 'bold':\n editor.chain().focus().toggleBold().run();\n break;\n case 'italic':\n editor.chain().focus().toggleItalic().run();\n break;\n case 'underline':\n editor.chain().focus().toggleUnderline().run();\n break;\n case 'strike':\n editor.chain().focus().toggleStrike().run();\n break;\n case 'code':\n editor.chain().focus().toggleCode().run();\n break;\n case 'blockStyle':\n break;\n case 'heading1':\n editor.chain().focus().toggleHeading({ level: 1 }).run();\n break;\n case 'heading2':\n editor.chain().focus().toggleHeading({ level: 2 }).run();\n break;\n case 'heading3':\n editor.chain().focus().toggleHeading({ level: 3 }).run();\n break;\n case 'heading4':\n editor.chain().focus().toggleHeading({ level: 4 }).run();\n break;\n case 'small':\n editor.chain().focus().setParagraph().setFontSize('0.875rem').run();\n break;\n case 'paragraph':\n editor.chain().focus().setParagraph().unsetFontSize().run();\n break;\n case 'bulletList':\n editor.chain().focus().toggleBulletList().run();\n break;\n case 'orderedList':\n editor.chain().focus().toggleOrderedList().run();\n break;\n case 'blockquote':\n editor.chain().focus().toggleBlockquote().run();\n break;\n case 'codeBlock':\n editor.chain().focus().toggleCodeBlock().run();\n break;\n case 'horizontalRule':\n editor.chain().focus().setHorizontalRule().run();\n break;\n case 'link':\n this._toggleLink();\n break;\n case 'image':\n this._insertImage();\n break;\n case 'emoji':\n case 'align':\n case 'textColor':\n case 'backgroundColor':\n break;\n case 'alignLeft':\n this._setTextAlign('left');\n break;\n case 'alignCenter':\n this._setTextAlign('center');\n break;\n case 'alignRight':\n this._setTextAlign('right');\n break;\n case 'alignJustify':\n this._setTextAlign('justify');\n break;\n case 'undo':\n editor.chain().focus().undo().run();\n break;\n case 'redo':\n editor.chain().focus().redo().run();\n break;\n case 'clearFormatting':\n editor.chain().focus().clearNodes().unsetAllMarks().run();\n this._collapseSelectionToAnchor();\n break;\n }\n\n this._refreshEditorState();\n }\n\n private _createEditor(): void {\n if (this._editor) {\n return;\n }\n\n const host = this._editorHost().nativeElement;\n const tiptapOptions = this.zTipTap();\n const placeholderConfig = this._placeholderConfig();\n\n this._editor = new Editor({\n element: host,\n content: this._pendingValue,\n editable: !this.isDisabled() && !this.zReadonly(),\n extensions: [\n this.zContentType() === 'markdown' &&\n Markdown.configure({\n markedOptions: {\n gfm: true,\n },\n }),\n StarterKit.configure({\n code: false,\n horizontalRule: false,\n link: false,\n underline: false,\n dropcursor: {\n color: 'var(--primary)',\n width: 2,\n },\n ...tiptapOptions.starterKit,\n }),\n Code.extend({\n excludes: 'code',\n }),\n Underline,\n TextStyle,\n FontSize,\n Color,\n BackgroundColor,\n BubbleMenu.configure({\n element: this._floatingToolbar().nativeElement,\n pluginKey: 'zEditorBubbleMenu',\n updateDelay: 0,\n options: {\n strategy: 'fixed',\n placement: 'top-start',\n offset: 8,\n flip: true,\n shift: {\n padding: 8,\n },\n },\n getReferencedVirtualElement: () => this._getSelectionFloatingElement(),\n shouldShow: ({ editor, from, to }) =>\n editor.isEditable &&\n !this.isDisabled() &&\n !this.zReadonly() &&\n from !== to &&\n !editor.isActive('image') &&\n editor.state.doc.textBetween(from, to).trim().length > 0,\n }),\n TextAlign.configure({\n types: ['heading', 'paragraph', 'image'],\n }),\n Link.configure({\n openOnClick: false,\n ...tiptapOptions.link,\n }),\n HorizontalRule,\n tiptapOptions.image !== false &&\n this._createImageExtension(typeof tiptapOptions.image === 'boolean' ? {} : (tiptapOptions.image ?? {})),\n tiptapOptions.mention !== false &&\n Mention.configure({\n HTMLAttributes: {\n class: 'mention',\n },\n ...(typeof tiptapOptions.mention === 'boolean' ? {} : tiptapOptions.mention),\n }),\n Placeholder.configure({\n placeholder: this.effectivePlaceholder(),\n showOnlyWhenEditable: false,\n showOnlyCurrent: true,\n ...placeholderConfig,\n }),\n ...(tiptapOptions.extensions ?? []),\n ].filter(extension => !!extension),\n editorProps: {\n attributes: {\n class: 'z-editor-prosemirror',\n autocomplete: 'off',\n autocorrect: 'off',\n autocapitalize: 'off',\n translate: 'no',\n },\n handleKeyDown: (_view, event) =>\n this._handleSlashMenuKeyDown(event) || this._handleEditorShortcutKeyDown(event),\n handleClick: (view, _pos, event) => this._handleEditorClick(view, event),\n },\n onUpdate: () => this._handleEditorUpdate(),\n onSelectionUpdate: () => this._refreshEditorState(),\n onTransaction: () => this._refreshEditorState(),\n onFocus: () => this._handleFocus(),\n onBlur: () => this._handleBlur(),\n });\n\n this._refreshEditorState();\n this._setupBubbleMenuPositionUpdates();\n this._emitControl();\n }\n\n private _handleEditorUpdate(): void {\n const value = this._getSerializedContent();\n this._value.set(value);\n this.uiState.update(s => ({ ...s, dirty: true }));\n this._onChange(value);\n this.zOnChange.emit(value);\n this._refreshEditorState();\n }\n\n private _handleFocus(): void {\n const focusEvent = new FocusEvent('focus');\n this.zOnFocus.emit(focusEvent);\n this.zEvent.emit(zCreateEvent('focus', focusEvent));\n }\n\n private _handleBlur(): void {\n if (this.uiState().dirty) {\n this.uiState.update(s => ({ ...s, touched: true }));\n }\n\n this._dismissCurrentSlashMenu();\n this._onTouched();\n const blurEvent = new FocusEvent('blur');\n this.zOnBlur.emit(blurEvent);\n this.zEvent.emit(zCreateEvent('blur', blurEvent));\n }\n\n private _emitControl(): void {\n const control: ZEditorControl = {\n focus: () => this._editor?.commands.focus(),\n blur: () => this._editor?.commands.blur(),\n clear: () => this._setEditorContent(''),\n setContent: content => this._setEditorContent(content),\n getContent: () => this._getSerializedContent(),\n getHTML: () => this._editor?.getHTML() ?? '',\n getJSON: () => this._editor?.getJSON() ?? { type: 'doc', content: [] },\n getMarkdown: () => this._getMarkdown(),\n getText: () => this._editor?.getText() ?? '',\n getLength: () => this._editor?.state.doc.content.size ?? 0,\n getEditor: () => this._editor,\n valid: () => this._validateControl(),\n validate: () => !this._validateControl(),\n reset: () => {\n this._customError.set(null);\n this.uiState.set({ touched: false, dirty: false });\n this._setEditorContent('');\n },\n setValue: content => this._setEditorContent(content),\n setErrorMessage: message => {\n this._customError.set(message);\n this._formStateVersion.update(v => v + 1);\n },\n hasError: this.hasError,\n value: this._value.asReadonly(),\n errorMessage: this.errorMessage,\n };\n\n this.zControl.emit(control);\n }\n\n private _setEditorContent(content: Content): void {\n this._pendingValue = content;\n this._editor?.commands.setContent(content, { emitUpdate: false });\n const value = this._getSerializedContent();\n this._value.set(value);\n this._plainText.set(this._editor?.getText() ?? '');\n this._onChange(value);\n this.zOnChange.emit(value);\n this._refreshEditorState();\n }\n\n private _validateControl(): boolean {\n this.uiState.set({ touched: true, dirty: true });\n this._formControl()?.markAsDirty();\n this._formControl()?.markAsTouched();\n this._formControl()?.updateValueAndValidity({ onlySelf: true });\n this._formStateVersion.update(v => v + 1);\n return !this.hasError();\n }\n\n private _getSerializedContent(): string | Content {\n const editor = this._editor;\n\n if (!editor) {\n return this._value();\n }\n\n if (this.zContentType() === 'json') {\n return editor.getJSON();\n }\n\n if (this.zContentType() === 'markdown') {\n return this._getMarkdown();\n }\n\n return editor.getHTML();\n }\n\n private _getMarkdown(): string {\n const editor = this._editor as (Editor & ZEditorMarkdownCapable) | null;\n return editor?.getMarkdown?.() ?? this._editor?.getText() ?? '';\n }\n\n private _serializeValueAsText(): string {\n const value = this._value();\n\n if (typeof value === 'string') {\n return value;\n }\n\n return JSON.stringify(value);\n }\n\n private _refreshEditorState(): void {\n this._plainText.set(this._editor?.getText() ?? '');\n this._selectionVersion.update(v => v + 1);\n this._formStateVersion.update(v => v + 1);\n this._syncSlashMenu();\n this._syncLinkPopoverPosition();\n }\n\n private _searchEmojis(query: string): readonly string[] {\n const results: string[] = [];\n for (const category of this.emojiCategories) {\n for (const entry of category.emojis) {\n const emoji = typeof entry === 'string' ? entry : entry.emoji;\n const keywords = typeof entry === 'string' ? Z_EMOJI_KEYWORDS.get(entry) : entry.keywords;\n const matchesKeywords = keywords?.some(kw => kw.includes(query)) ?? false;\n if (matchesKeywords || emoji.includes(query)) {\n results.push(emoji);\n }\n }\n }\n return results;\n }\n\n private _setupBubbleMenuPositionUpdates(): void {\n if (typeof ResizeObserver === 'undefined') {\n this._resizeListenerCleanup = this._listenWindowResize();\n return;\n }\n\n const editorElement = this._editorHost().nativeElement;\n this._resizeObserver = new ResizeObserver(() => this._requestBubbleMenuPositionUpdate());\n this._resizeObserver.observe(editorElement);\n\n const wrapperElement = editorElement.closest('.z-editor-wrapper');\n if (wrapperElement instanceof HTMLElement) {\n this._resizeObserver.observe(wrapperElement);\n }\n\n this._resizeListenerCleanup = this._listenWindowResize();\n }\n\n private _listenWindowResize(): () => void {\n const listener = (event: Event): void => {\n if (event.type === 'scroll' && event.target instanceof Element && event.target.closest('.z-popover')) {\n return;\n }\n this._requestBubbleMenuPositionUpdate();\n };\n window.addEventListener('resize', listener, { passive: true });\n window.addEventListener('scroll', listener, { passive: true, capture: true });\n return () => {\n window.removeEventListener('resize', listener);\n window.removeEventListener('scroll', listener, { capture: true });\n };\n }\n\n private _teardownBubbleMenuPositionUpdates(): void {\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n this._resizeListenerCleanup?.();\n this._resizeListenerCleanup = null;\n\n if (this._bubbleMenuPositionFrame !== null) {\n cancelAnimationFrame(this._bubbleMenuPositionFrame);\n this._bubbleMenuPositionFrame = null;\n }\n }\n\n private _requestBubbleMenuPositionUpdate(): void {\n if (this._bubbleMenuPositionFrame !== null) {\n return;\n }\n\n if (this._isAnyBubbleMenuPopoverOpen()) {\n return;\n }\n\n this._bubbleMenuPositionFrame = requestAnimationFrame(() => {\n this._bubbleMenuPositionFrame = null;\n this._editor?.view.dispatch(this._editor.state.tr.setMeta('zEditorBubbleMenu', 'updatePosition'));\n this._syncLinkPopoverPosition();\n });\n }\n\n private _isAnyBubbleMenuPopoverOpen(): boolean {\n return (\n !!this._blockStylePopoverControl?.isVisible() ||\n !!this._alignPopoverControl?.isVisible() ||\n !!this._textColorPopoverControl?.isVisible() ||\n !!this._backgroundColorPopoverControl?.isVisible()\n );\n }\n\n private _syncLinkPopoverPosition(): void {\n if (!this.linkPopoverState().visible) {\n return;\n }\n\n const rect = this._getLinkPopoverReferenceRect();\n\n if (!rect) {\n return;\n }\n\n this.linkPopoverState.set({\n visible: true,\n left: rect.left,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n });\n\n requestAnimationFrame(() => {\n if (this.linkPopoverState().visible) {\n this._linkPopoverControl?.show();\n }\n });\n }\n\n private _getSelectionFloatingElement(): {\n getBoundingClientRect: () => DOMRect;\n getClientRects: () => DOMRect[];\n } | null {\n const editor = this._editor;\n\n if (!editor) {\n return null;\n }\n\n // Freeze the bubble menu in place while any popover triggered from it is open,\n // so the popover (positioned relative to the bubble menu) does not flicker.\n if (this._isAnyBubbleMenuPopoverOpen()) {\n const toolbarRect = this._floatingToolbar().nativeElement.getBoundingClientRect();\n if (toolbarRect.width > 0) {\n return {\n getBoundingClientRect: () => toolbarRect,\n getClientRects: () => [toolbarRect],\n };\n }\n }\n\n const { from, to } = editor.state.selection;\n if (from === to) {\n return null;\n }\n\n const selectionRect = posToDOMRect(editor.view, from, to);\n const menuWidth = this._floatingToolbar().nativeElement.getBoundingClientRect().width;\n const activeAlign = this._getActiveAlignFromEditor(editor);\n const left =\n activeAlign === 'alignCenter'\n ? selectionRect.left + selectionRect.width / 2 - menuWidth / 2\n : activeAlign === 'alignRight'\n ? selectionRect.right - menuWidth\n : selectionRect.left;\n const rect = new DOMRect(Math.max(left, 0), selectionRect.top, menuWidth, selectionRect.height);\n\n return {\n getBoundingClientRect: () => rect,\n getClientRects: () => [rect],\n };\n }\n\n private _isEditorEmpty(): boolean {\n const editor = this._editor;\n\n if (editor) {\n return editor.isEmpty;\n }\n\n const value = this._value();\n if (typeof value === 'string') {\n return !value || value === '<p></p>' || value === '<p><br></p>';\n }\n\n return false;\n }\n\n private _isCurrentEditorContent(content: Content): boolean {\n const editor = this._editor;\n\n if (!editor) {\n return false;\n }\n\n if (this.zContentType() === 'json') {\n return JSON.stringify(editor.getJSON()) === JSON.stringify(content);\n }\n\n return editor.getHTML() === String(content);\n }\n\n private _isToolbarCommandActive(command: ZEditorToolbarCommand): boolean {\n const editor = this._editor;\n\n if (!editor || !editor.isEditable) {\n return false;\n }\n\n switch (command) {\n case 'bold':\n case 'italic':\n case 'underline':\n case 'strike':\n case 'code':\n case 'bulletList':\n case 'orderedList':\n case 'blockquote':\n case 'codeBlock':\n case 'link':\n return editor.isActive(command);\n case 'heading1':\n return editor.isActive('heading', { level: 1 });\n case 'heading2':\n return editor.isActive('heading', { level: 2 });\n case 'heading3':\n return editor.isActive('heading', { level: 3 });\n case 'heading4':\n return editor.isActive('heading', { level: 4 });\n case 'paragraph':\n return editor.isActive('paragraph');\n case 'blockStyle':\n return this.activeBlockStyle() !== 'paragraph';\n case 'align':\n return this.activeAlign() !== 'alignLeft';\n default:\n return false;\n }\n }\n\n private _isToolbarCommandDisabled(command: ZEditorToolbarCommand): boolean {\n const editor = this._editor;\n\n if (!editor || !editor.isEditable || this.isDisabled() || this.zReadonly()) {\n return true;\n }\n\n switch (command) {\n case 'undo':\n return !editor.can().undo();\n case 'redo':\n return !editor.can().redo();\n case 'link':\n return editor.state.selection.empty && !editor.isActive('link');\n case 'emoji':\n case 'blockStyle':\n case 'align':\n case 'textColor':\n case 'backgroundColor':\n return false;\n default:\n return false;\n }\n }\n\n protected onFloatingToolbarClick(command: ZEditorToolbarCommand): void {\n this.onToolbarClick(command);\n }\n\n private _getToolbarTooltip(command: ZEditorToolbarCommand, label: string): string {\n const shortcut = this._toolbarShortcutLabels[command];\n return shortcut ? `${label} (${shortcut})` : label;\n }\n\n protected applySlashCommand(item: ZEditorSlashCommandItem): void {\n const editor = this._editor;\n const { from, to } = this.slashMenuState();\n\n if (!editor) {\n return;\n }\n\n editor.chain().focus().deleteRange({ from, to }).run();\n this._hideSlashMenu();\n this.onToolbarClick(item.command);\n }\n\n protected applyBlockStyle(\n command: Extract<ZEditorToolbarCommand, 'paragraph' | 'heading1' | 'heading2' | 'heading3' | 'heading4'>\n ): void {\n this.onToolbarClick(command);\n this._blockStylePopoverControl?.close();\n }\n\n protected applyAlign(\n command: Extract<ZEditorToolbarCommand, 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify'>\n ): void {\n this.onToolbarClick(command);\n this._alignPopoverControl?.close();\n }\n\n protected insertEmoji(emoji: string): void {\n this._editor?.chain().focus().insertContent(emoji).run();\n this._refreshEditorState();\n }\n\n protected setEmojiCategory(categoryId: string): void {\n this.activeEmojiCategoryId.set(categoryId);\n this.emojiSearch.set('');\n }\n\n protected onEmojiPopoverControl(control: ZPopoverControl): void {\n this._emojiPopoverControl = control;\n }\n\n protected onEmojiPopoverShow(): void {\n setTimeout(() => {\n const overlay = document.querySelector('.z-editor-emoji-popover');\n const input = overlay?.querySelector('input');\n input?.focus();\n });\n }\n\n protected onBlockStylePopoverControl(control: ZPopoverControl): void {\n this._blockStylePopoverControl = control;\n }\n\n protected onAlignPopoverControl(control: ZPopoverControl): void {\n this._alignPopoverControl = control;\n }\n\n protected onTextColorPopoverControl(control: ZPopoverControl): void {\n this._textColorPopoverControl = control;\n }\n\n protected onBackgroundColorPopoverControl(control: ZPopoverControl): void {\n this._backgroundColorPopoverControl = control;\n }\n\n protected onSlashMenuPopoverControl(control: ZPopoverControl): void {\n this._slashMenuPopoverControl = control;\n }\n\n protected onSlashMenuPopoverHide(): void {\n this.slashMenuState.update(state => ({ ...state, visible: false }));\n this.slashMenuActiveIndex.set(0);\n }\n\n protected onLinkPopoverControl(control: ZPopoverControl): void {\n this._linkPopoverControl = control;\n }\n\n protected onLinkPopoverHide(): void {\n this.linkPopoverState.update(state => ({ ...state, visible: false }));\n this._linkAnchorElement = null;\n }\n\n protected setTextColor(color: string): void {\n this._editor?.chain().focus().setColor(color).run();\n this._textColorPopoverControl?.close();\n this._refreshEditorState();\n }\n\n protected setTextColorFromEvent(event: Event): void {\n const input = event.target as HTMLInputElement | null;\n this.setTextColor(input?.value ?? '');\n }\n\n protected unsetTextColor(): void {\n this._editor?.chain().focus().unsetColor().run();\n this._textColorPopoverControl?.close();\n this._refreshEditorState();\n }\n\n protected setBackgroundColor(color: string): void {\n this._editor?.chain().focus().setBackgroundColor(color).run();\n this._backgroundColorPopoverControl?.close();\n this._refreshEditorState();\n }\n\n protected setBackgroundColorFromEvent(event: Event): void {\n const input = event.target as HTMLInputElement | null;\n this.setBackgroundColor(input?.value ?? '');\n }\n\n protected unsetBackgroundColor(): void {\n this._editor?.chain().focus().unsetBackgroundColor().run();\n this._backgroundColorPopoverControl?.close();\n this._refreshEditorState();\n }\n\n private _handleSlashMenuKeyDown(event: KeyboardEvent): boolean {\n if (!this.slashMenuState().visible) {\n return false;\n }\n\n const commands = this.filteredSlashCommands();\n\n if (event.key === 'Escape' || event.key === 'Tab') {\n this._hideSlashMenu();\n return event.key === 'Escape';\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.slashMenuActiveIndex.update(index => (commands.length ? (index + 1) % commands.length : 0));\n this._scrollActiveSlashMenuItemIntoView();\n return true;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.slashMenuActiveIndex.update(index =>\n commands.length ? (index - 1 + commands.length) % commands.length : 0\n );\n this._scrollActiveSlashMenuItemIntoView();\n return true;\n }\n\n if (event.key === 'Enter') {\n const item = commands[this.slashMenuActiveIndex()];\n if (!item) {\n return false;\n }\n\n event.preventDefault();\n this.applySlashCommand(item);\n return true;\n }\n\n return false;\n }\n\n private _handleEditorShortcutKeyDown(event: KeyboardEvent): boolean {\n if (!this._editor || this.isDisabled() || this.zReadonly() || !this._isPrimaryShortcut(event)) {\n return false;\n }\n\n const key = event.key.toLowerCase();\n const command = this._getShortcutCommand(event, key);\n\n if (!command || this._isToolbarCommandDisabled(command)) {\n return false;\n }\n\n event.preventDefault();\n this.onToolbarClick(command);\n return true;\n }\n\n private _getShortcutCommand(event: KeyboardEvent, key: string): ZEditorToolbarCommand | null {\n if (!event.shiftKey) {\n switch (key) {\n case 'b':\n return 'bold';\n case 'i':\n return 'italic';\n case 'u':\n return 'underline';\n case 'e':\n return 'code';\n case 'k':\n return 'link';\n case '\\\\':\n return 'clearFormatting';\n case 'z':\n return 'undo';\n case 'y':\n return 'redo';\n }\n }\n\n if (event.shiftKey && key === 's') {\n return 'strike';\n }\n\n return null;\n }\n\n private _isPrimaryShortcut(event: KeyboardEvent): boolean {\n return (event.ctrlKey || event.metaKey) && !event.altKey;\n }\n\n private _syncSlashMenu(): void {\n const editor = this._editor;\n\n if (!editor || !editor.isEditable || this.isDisabled() || this.zReadonly()) {\n this._hideSlashMenu();\n return;\n }\n\n const { selection } = editor.state;\n if (!selection.empty) {\n this._hideSlashMenu();\n return;\n }\n\n const { $from } = selection;\n const textBeforeCursor = $from.parent.textBetween(0, $from.parentOffset, '\\0', '\\0');\n const match = /(?:^|\\s)\\/([^\\s/]*)$/.exec(textBeforeCursor);\n\n if (!match) {\n if (!this._isDismissedSlashStillPresent()) {\n this._dismissedSlashMenu = null;\n }\n this._hideSlashMenu();\n return;\n }\n\n const query = match[1] ?? '';\n const from = selection.from - query.length - 1;\n const to = selection.from;\n\n if (\n this._dismissedSlashMenu?.from === from &&\n this._dismissedSlashMenu.to === to &&\n this._dismissedSlashMenu.query === query\n ) {\n this._hideSlashMenu();\n return;\n }\n\n if (this._dismissedSlashMenu) {\n this._dismissedSlashMenu = null;\n }\n\n const coords = editor.view.coordsAtPos(selection.from);\n\n if (this._slashMenuPopoverControl?.isVisible()) {\n this._slashMenuPopoverControl.closeImmediate();\n }\n\n this.slashMenuState.set({\n visible: true,\n query,\n from,\n to,\n left: coords.left,\n top: coords.bottom,\n });\n\n const commandsLength = this.filteredSlashCommands().length;\n if (this.slashMenuActiveIndex() >= commandsLength) {\n this.slashMenuActiveIndex.set(0);\n }\n\n requestAnimationFrame(() => {\n if (this.slashMenuState().visible) {\n this._slashMenuPopoverControl?.show();\n this._scrollActiveSlashMenuItemIntoView();\n }\n });\n }\n\n private _scrollActiveSlashMenuItemIntoView(): void {\n requestAnimationFrame(() => {\n const scrollHost = this._slashMenuScrollHost()?.nativeElement;\n const activeIndex = this.slashMenuActiveIndex();\n const lastIndex = this.filteredSlashCommands().length - 1;\n\n if (!scrollHost) {\n return;\n }\n\n if (activeIndex === 0) {\n scrollHost.scrollTop = 0;\n return;\n }\n\n if (activeIndex === lastIndex) {\n scrollHost.scrollTop = scrollHost.scrollHeight - scrollHost.clientHeight;\n return;\n }\n\n const activeItem = scrollHost?.querySelector('.z-editor-slash-menu-item-active');\n\n if (!(activeItem instanceof HTMLElement)) {\n return;\n }\n\n activeItem.scrollIntoView({ block: 'nearest' });\n });\n }\n\n private _hideSlashMenu(): void {\n if (!this.slashMenuState().visible) {\n return;\n }\n\n this.slashMenuState.update(state => ({ ...state, visible: false }));\n this.slashMenuActiveIndex.set(0);\n this._slashMenuPopoverControl?.closeImmediate();\n }\n\n private _dismissCurrentSlashMenu(): void {\n const { visible, query, from, to } = this.slashMenuState();\n\n if (visible) {\n this._dismissedSlashMenu = { query, from, to };\n this._hideSlashMenu();\n return;\n }\n\n const currentSlashMenuMatch = this._getCurrentSlashMenuMatch();\n if (currentSlashMenuMatch) {\n this._dismissedSlashMenu = currentSlashMenuMatch;\n }\n }\n\n private _getCurrentSlashMenuMatch(): { query: string; from: number; to: number } | null {\n const selection = this._editor?.state.selection;\n\n if (!selection?.empty) {\n return null;\n }\n\n const textBeforeCursor = selection.$from.parent.textBetween(0, selection.$from.parentOffset, '\\0', '\\0');\n const match = /(?:^|\\s)\\/([^\\s/]*)$/.exec(textBeforeCursor);\n\n if (!match) {\n return null;\n }\n\n const query = match[1] ?? '';\n return {\n query,\n from: selection.from - query.length - 1,\n to: selection.from,\n };\n }\n\n private _isDismissedSlashStillPresent(): boolean {\n const dismissed = this._dismissedSlashMenu;\n const doc = this._editor?.state.doc;\n\n if (!dismissed || !doc || dismissed.from < 0 || dismissed.from >= doc.content.size) {\n return false;\n }\n\n return doc.textBetween(dismissed.from, dismissed.from + 1, '\\0', '\\0') === '/';\n }\n\n private _toggleLink(): void {\n const editor = this._editor;\n\n if (!editor) {\n return;\n }\n\n const { from, to } = editor.state.selection;\n this._linkAnchorElement = null;\n this._linkSelection = { from, to };\n const href = String(editor.getAttributes('link')['href'] ?? '');\n this.activeLinkHref.set(href);\n this.linkUrl.set(href);\n this._showLinkPopover();\n }\n\n protected closeLinkPopover(): void {\n this.linkPopoverState.update(state => ({ ...state, visible: false }));\n this._linkAnchorElement = null;\n this._linkPopoverControl?.closeImmediate();\n }\n\n protected onLinkUrlChange(value: string | number | null): void {\n this.linkUrl.set(String(value ?? ''));\n }\n\n protected applyLink(): void {\n const editor = this._editor;\n const href = this.normalizedLinkUrl();\n const selection = this._linkSelection;\n\n if (!editor || !href || !selection) {\n return;\n }\n\n editor.chain().focus().setTextSelection(selection).extendMarkRange('link').setLink({ href }).run();\n this.closeLinkPopover();\n this._refreshEditorState();\n }\n\n private _normalizeUrl(value: string): string {\n const trimmed = value.trim();\n\n if (!trimmed) {\n return '';\n }\n\n try {\n const url = new URL(trimmed);\n return url.protocol === 'http:' || url.protocol === 'https:' ? url.toString() : '';\n } catch {\n return '';\n }\n }\n\n protected removeLink(): void {\n const editor = this._editor;\n const selection = this._linkSelection;\n\n if (!editor || !selection) {\n this.closeLinkPopover();\n return;\n }\n\n editor.chain().focus().setTextSelection(selection).extendMarkRange('link').unsetLink().run();\n this.closeLinkPopover();\n this._refreshEditorState();\n }\n\n protected openActiveLink(): void {\n const href = this.activeLinkHref();\n\n if (!href) {\n return;\n }\n\n window.open(href, '_blank', 'noopener,noreferrer');\n }\n\n private _handleEditorClick(view: EditorView, event: MouseEvent): boolean {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const link = target?.closest('a[href]');\n\n if (!(link instanceof HTMLAnchorElement) || this.isDisabled() || this.zReadonly()) {\n return false;\n }\n\n if (event.detail >= 2) {\n this.closeLinkPopover();\n return false;\n }\n\n const position = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (!position) {\n return false;\n }\n\n event.preventDefault();\n view.dispatch(view.state.tr.setSelection(TextSelection.near(view.state.doc.resolve(position.pos))));\n this._editor?.chain().focus().run();\n\n const selection = this._editor?.state.selection;\n if (!selection) {\n return true;\n }\n\n this._linkSelection = { from: selection.from, to: selection.to };\n this._linkAnchorElement = link;\n const href = link.href || link.getAttribute('href') || '';\n this.activeLinkHref.set(href);\n this.linkUrl.set(href);\n this._showLinkPopover();\n return true;\n }\n\n private _showLinkPopover(): void {\n const rect = this._getLinkPopoverReferenceRect();\n\n if (!rect) {\n return;\n }\n\n this.linkPopoverState.set({\n visible: true,\n left: rect.left,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n });\n\n requestAnimationFrame(() => {\n if (this.linkPopoverState().visible) {\n this._linkPopoverControl?.show();\n }\n });\n }\n\n private _getLinkPopoverReferenceRect(): DOMRect | null {\n const anchorRect = this._getLinkAnchorRect();\n if (anchorRect) {\n return anchorRect;\n }\n\n const editor = this._editor;\n const selection = this._linkSelection;\n\n if (!editor || !selection) {\n return null;\n }\n\n return posToDOMRect(editor.view, selection.from, selection.to);\n }\n\n private _getLinkAnchorRect(): DOMRect | null {\n const anchor = this._linkAnchorElement;\n\n if (!anchor || !this._editorHost().nativeElement.contains(anchor)) {\n return null;\n }\n\n const rect = anchor.getBoundingClientRect();\n if (rect.width === 0 && rect.height === 0) {\n return null;\n }\n\n return rect;\n }\n\n private _insertImage(): void {\n const editor = this._editor;\n\n if (!editor) {\n return;\n }\n\n const selectionFrom = editor.state.selection.from;\n const input = document.createElement('input');\n input.type = 'file';\n input.accept = 'image/*';\n input.style.display = 'none';\n\n const removeInput = (): void => {\n input.remove();\n };\n\n input.addEventListener(\n 'change',\n () => {\n const file = input.files?.[0];\n if (!file) {\n removeInput();\n return;\n }\n\n const reader = new FileReader();\n reader.addEventListener('load', () => {\n const src = typeof reader.result === 'string' ? reader.result : '';\n if (src) {\n editor.chain().focus().setTextSelection(selectionFrom).setImage({ src, alt: file.name }).run();\n }\n\n removeInput();\n });\n reader.addEventListener('error', removeInput);\n reader.readAsDataURL(file);\n },\n { once: true }\n );\n\n document.body.appendChild(input);\n input.click();\n }\n\n private _setTextAlign(alignment: 'left' | 'center' | 'right' | 'justify'): void {\n const editor = this._editor;\n\n if (!editor) {\n return;\n }\n\n const command =\n alignment === 'left' ? editor.chain().focus().unsetTextAlign() : editor.chain().focus().setTextAlign(alignment);\n command.run();\n }\n\n private _collapseSelectionToAnchor(): void {\n const editor = this._editor;\n\n if (!editor) {\n return;\n }\n\n const { from } = editor.state.selection;\n editor.commands.setTextSelection(from);\n editor.view.dispatch(editor.state.tr.setMeta('zEditorBubbleMenu', 'updatePosition'));\n }\n\n private _getTextStyleAttribute(attribute: 'color' | 'backgroundColor'): string {\n this._selectionVersion();\n return String(this._editor?.getAttributes('textStyle')[attribute] ?? '');\n }\n\n private _getActiveBlockStyle(): Extract<\n ZEditorToolbarCommand,\n 'paragraph' | 'heading1' | 'heading2' | 'heading3' | 'heading4'\n > {\n const editor = this._editor;\n this._selectionVersion();\n\n if (!editor) {\n return 'paragraph';\n }\n\n if (editor.isActive('heading', { level: 1 })) {\n return 'heading1';\n }\n\n if (editor.isActive('heading', { level: 2 })) {\n return 'heading2';\n }\n\n if (editor.isActive('heading', { level: 3 })) {\n return 'heading3';\n }\n\n if (editor.isActive('heading', { level: 4 })) {\n return 'heading4';\n }\n\n return 'paragraph';\n }\n\n private _getActiveAlign(): Extract<\n ZEditorToolbarCommand,\n 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify'\n > {\n const editor = this._editor;\n this._selectionVersion();\n\n if (!editor) {\n return 'alignLeft';\n }\n\n return this._getActiveAlignFromEditor(editor);\n }\n\n private _getActiveAlignFromEditor(\n editor: Editor\n ): Extract<ZEditorToolbarCommand, 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify'> {\n if (editor.isActive({ textAlign: 'center' })) {\n return 'alignCenter';\n }\n\n if (editor.isActive({ textAlign: 'right' })) {\n return 'alignRight';\n }\n\n if (editor.isActive({ textAlign: 'justify' })) {\n return 'alignJustify';\n }\n\n return 'alignLeft';\n }\n\n private _createImageExtension(options: Record<string, unknown>): AnyExtension {\n return ImageResize.extend({\n addAttributes() {\n return {\n ...this.parent?.(),\n textAlign: {\n default: null,\n parseHTML: element => element.style.textAlign || element.getAttribute('data-text-align') || null,\n renderHTML: attributes => {\n const textAlign = String(attributes['textAlign'] ?? '');\n if (!textAlign) {\n return {};\n }\n\n return {\n 'data-text-align': textAlign,\n style: ZEditorComponent._getImageAlignStyle(textAlign),\n };\n },\n },\n };\n },\n }).configure(options);\n }\n\n private static _getImageAlignStyle(textAlign: string): string {\n if (textAlign === 'center') {\n return 'display: block; margin-left: auto; margin-right: auto;';\n }\n\n if (textAlign === 'right') {\n return 'display: block; margin-left: auto; margin-right: 0;';\n }\n\n return 'display: block; margin-left: 0; margin-right: auto;';\n }\n\n private _placeholderConfig(): Partial<PlaceholderOptions> {\n const { placeholder } = this.zTipTap();\n\n if (!placeholder || typeof placeholder === 'string') {\n return {};\n }\n\n const { mode: _mode, ...config } = placeholder;\n return config;\n }\n\n private _placeholderMode(): 'firstLine' | 'everyLine' {\n const { placeholder } = this.zTipTap();\n return typeof placeholder === 'object' && placeholder.mode === 'firstLine' ? 'firstLine' : 'everyLine';\n }\n}\n","<div [class]=\"wrapperClasses()\" [class.z-editor-disabled]=\"isDisabled()\" [class.z-editor-readonly]=\"zReadonly()\">\n @if (zLabel()) {\n <label [for]=\"editorId\" class=\"text-xs leading-none font-medium\" [class]=\"zLabelClass()\">\n {{ zLabel() }}\n @if (zRequired()) {\n <span class=\"text-destructive! ml-0.5\">*</span>\n }\n </label>\n }\n\n <div [class]=\"editorClasses()\">\n @if (showToolbar()) {\n <div class=\"z-editor-toolbar\" role=\"toolbar\" [attr.aria-controls]=\"editorId\">\n @for (item of toolbarItems(); track item.id) {\n @switch (item.id) {\n @case ('emoji') {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"emojiPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-emoji-popover\"\n (zControl)=\"onEmojiPopoverControl($event)\"\n (zShow)=\"onEmojiPopoverShow()\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n @case ('blockStyle') {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"blockStylePopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-menu-popover\"\n (zControl)=\"onBlockStylePopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n @case ('textColor') {\n @let textColor = activeTextColor();\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"textColorPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-color-popover\"\n (zControl)=\"onTextColorPopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span class=\"z-editor-color-indicator\" [style.background]=\"textColor\"></span>\n </button>\n }\n @case ('backgroundColor') {\n @let bgColor = activeBackgroundColor();\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"backgroundColorPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-color-popover\"\n (zControl)=\"onBackgroundColorPopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span class=\"z-editor-color-indicator\" [style.background]=\"bgColor\"></span>\n </button>\n }\n @case ('align') {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"alignPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-menu-popover\"\n (zControl)=\"onAlignPopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\">\n <i z-icon [zType]=\"activeAlignIcon()\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n @default {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n [class.z-editor-toolbar-button-active]=\"item.active\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\"\n (click)=\"onToolbarClick(item.id)\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n }\n }\n </div>\n }\n\n <div\n #editorHost\n [id]=\"editorId\"\n class=\"z-editor-content\"\n role=\"textbox\"\n [attr.aria-multiline]=\"true\"\n [attr.aria-readonly]=\"isDisabled() || zReadonly()\"></div>\n </div>\n\n @if (hasError()) {\n <p class=\"text-destructive animate-in fade-in slide-in-from-top-1 m-0 text-xs duration-200\">\n {{ errorMessage() }}\n </p>\n }\n\n <ng-template #emojiPopover>\n @let emojiCategoryLabel =\n emojiSearchQuery() ? ('i18n_z_ui_emoji_search_results' | translate) : (activeEmojiCategoryLabel() | translate);\n @let activeCategoryId = activeEmojiCategoryId();\n <div class=\"z-editor-emoji-sheet\">\n <div class=\"z-editor-emoji-header\">\n <div class=\"z-editor-emoji-title mb-1\">\n <span class=\"z-editor-emoji-title-dot\" aria-hidden=\"true\"></span>\n <span>{{ emojiCategoryLabel }}</span>\n </div>\n <z-input\n class=\"z-editor-emoji-search\"\n zSize=\"sm\"\n [zSearch]=\"true\"\n [zDebounce]=\"150\"\n [zPlaceholder]=\"'i18n_z_ui_emoji_search_placeholder' | translate\"\n [ngModel]=\"emojiSearch()\"\n (zOnSearch)=\"emojiSearch.set($any($event))\" />\n </div>\n <div class=\"z-editor-emoji-body\">\n @if (hasEmojiResults()) {\n <div class=\"z-editor-emoji-grid\">\n @for (emoji of activeEmojis(); track emoji) {\n <button\n type=\"button\"\n class=\"z-editor-emoji-button\"\n [attr.aria-label]=\"emoji\"\n (click)=\"insertEmoji($any(emoji))\">\n {{ emoji }}\n </button>\n }\n </div>\n } @else {\n <div class=\"z-editor-emoji-empty\">\n <span class=\"z-editor-emoji-empty-icon\" aria-hidden=\"true\">\n <i z-icon zType=\"lucideSearchX\" zSize=\"14\" [zStrokeWidth]=\"2\"></i>\n </span>\n <span>{{ 'i18n_z_ui_emoji_no_results' | translate }}</span>\n </div>\n }\n </div>\n <div class=\"z-editor-emoji-footer\" role=\"tablist\">\n @for (category of emojiCategories; track category.id) {\n <button\n type=\"button\"\n role=\"tab\"\n class=\"z-editor-emoji-footer-button cursor-pointer!\"\n [class.z-editor-emoji-footer-button-active]=\"category.id === activeCategoryId\"\n [attr.aria-label]=\"category.labelKey | translate\"\n [attr.aria-selected]=\"category.id === activeCategoryId\"\n [attr.title]=\"category.labelKey | translate\"\n (click)=\"setEmojiCategory(category.id)\">\n <i z-icon [zType]=\"category.icon\" zSize=\"15\" [zStrokeWidth]=\"2\"></i>\n </button>\n }\n </div>\n </div>\n </ng-template>\n\n <ng-template #blockStylePopover>\n <div class=\"z-editor-menu-list\">\n @for (option of blockStyleOptions; track option.command) {\n <button\n type=\"button\"\n class=\"z-editor-menu-item\"\n [class.z-editor-menu-item-active]=\"activeBlockStyle() === option.command\"\n (click)=\"applyBlockStyle(option.command)\">\n <i z-icon [zType]=\"option.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </ng-template>\n\n <ng-template #alignPopover>\n <div class=\"z-editor-menu-list\">\n @for (option of alignOptions; track option.command) {\n <button\n type=\"button\"\n class=\"z-editor-menu-item\"\n [class.z-editor-menu-item-active]=\"activeAlign() === option.command\"\n (click)=\"applyAlign(option.command)\">\n <i z-icon [zType]=\"option.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </ng-template>\n\n <ng-template #textColorPopover>\n @let currentTextColor = activeTextColor();\n <div class=\"z-editor-color-grid\">\n @for (color of textColorSwatches; track color) {\n <button\n type=\"button\"\n class=\"z-editor-color-swatch\"\n [class.z-editor-color-swatch-active]=\"currentTextColor === color\"\n [style.background]=\"color\"\n [attr.aria-label]=\"'Text color ' + color\"\n (click)=\"setTextColor(color)\"></button>\n }\n <label class=\"z-editor-color-custom\">\n <input type=\"color\" [value]=\"currentTextColor\" (input)=\"setTextColorFromEvent($event)\" />\n {{ currentTextColor }}\n </label>\n <button type=\"button\" z-button zType=\"outline\" zSize=\"sm\" class=\"z-editor-color-reset\" (click)=\"unsetTextColor()\">\n Reset\n </button>\n </div>\n </ng-template>\n\n <ng-template #backgroundColorPopover>\n @let currentBgColor = activeBackgroundColor();\n <div class=\"z-editor-color-grid\">\n @for (color of backgroundColorSwatches; track color) {\n <button\n type=\"button\"\n class=\"z-editor-color-swatch\"\n [class.z-editor-color-swatch-active]=\"currentBgColor === color\"\n [style.background]=\"color\"\n [attr.aria-label]=\"'Background color ' + color\"\n (click)=\"setBackgroundColor(color)\"></button>\n }\n <label class=\"z-editor-color-custom\">\n <input type=\"color\" [value]=\"currentBgColor\" (input)=\"setBackgroundColorFromEvent($event)\" />\n {{ currentBgColor }}\n </label>\n <button\n type=\"button\"\n z-button\n zType=\"outline\"\n zSize=\"sm\"\n class=\"z-editor-color-reset\"\n (click)=\"unsetBackgroundColor()\">\n Reset\n </button>\n </div>\n </ng-template>\n\n <div #floatingToolbar class=\"z-editor-floating-toolbar\" role=\"toolbar\" [attr.aria-controls]=\"editorId\">\n @for (item of floatingToolbarItems(); track item.id) {\n @switch (item.id) {\n @case ('blockStyle') {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"blockStylePopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-menu-popover\"\n (zControl)=\"onBlockStylePopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"activeBlockStyleLabel()\"\n (mousedown)=\"$event.preventDefault()\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n @case ('textColor') {\n @let textColor = activeTextColor();\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"textColorPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-color-popover\"\n (zControl)=\"onTextColorPopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\"\n (mousedown)=\"$event.preventDefault()\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span class=\"z-editor-color-indicator\" [style.background]=\"textColor\"></span>\n </button>\n }\n @case ('backgroundColor') {\n @let bgColor = activeBackgroundColor();\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"backgroundColorPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-color-popover\"\n (zControl)=\"onBackgroundColorPopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\"\n (mousedown)=\"$event.preventDefault()\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span class=\"z-editor-color-indicator\" [style.background]=\"bgColor\"></span>\n </button>\n }\n @case ('align') {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"alignPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-menu-popover\"\n (zControl)=\"onAlignPopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"activeAlignLabel()\"\n (mousedown)=\"$event.preventDefault()\">\n <i z-icon [zType]=\"activeAlignIcon()\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n @default {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-tooltip\n [zContent]=\"item.tooltip\"\n zPosition=\"top\"\n [zAlwaysShow]=\"true\"\n [zDisabled]=\"item.disabled || !item.shortcut\"\n [class.z-editor-toolbar-button-active]=\"item.active\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"onFloatingToolbarClick(item.id)\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n }\n }\n </div>\n\n <span\n class=\"z-editor-slash-menu-trigger\"\n z-popover\n [zPopoverContent]=\"slashMenuPopover\"\n zTrigger=\"manual\"\n zPosition=\"bottom-left\"\n zClass=\"z-editor-slash-popover\"\n [zOffset]=\"4\"\n [zPopoverWidth]=\"300\"\n [style.left.px]=\"slashMenuState().left\"\n [style.top.px]=\"slashMenuState().top\"\n (zControl)=\"onSlashMenuPopoverControl($event)\"\n (zHide)=\"onSlashMenuPopoverHide()\"></span>\n\n <ng-template #slashMenuPopover>\n @let slashActiveIndex = slashMenuActiveIndex();\n <div class=\"z-editor-slash-menu-shell\">\n <div #slashMenuScrollHost class=\"z-editor-slash-menu-scrollbar\">\n <div class=\"z-editor-slash-menu\" role=\"listbox\" [attr.aria-controls]=\"editorId\">\n @for (item of filteredSlashCommands(); track item.id) {\n @if (item.showGroupLabel) {\n <div class=\"z-editor-slash-menu-group\">\n {{ item.group }}\n </div>\n }\n <button\n type=\"button\"\n class=\"z-editor-slash-menu-item\"\n role=\"option\"\n [class.z-editor-slash-menu-item-active]=\"$index === slashActiveIndex\"\n [attr.aria-selected]=\"$index === slashActiveIndex\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"applySlashCommand(item)\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span class=\"z-editor-slash-menu-copy\">\n <span class=\"z-editor-slash-menu-label\">{{ item.label }}</span>\n </span>\n </button>\n } @empty {\n <div class=\"z-editor-slash-menu-empty\">\n <i z-icon zType=\"lucideSearchX\" zSize=\"28\" [zStrokeWidth]=\"1.8\"></i>\n <span>{{ 'i18n_z_ui_editor_no_commands' | translate }}</span>\n </div>\n }\n </div>\n </div>\n <div class=\"z-editor-slash-menu-footer\" aria-hidden=\"true\">\n <span>\n <kbd>↑↓</kbd>\n {{ 'i18n_z_ui_editor_shortcut_navigate' | translate }}\n </span>\n <span>\n <kbd>Esc</kbd>\n {{ 'i18n_z_ui_editor_shortcut_abort' | translate }}\n </span>\n <span>\n <kbd>↵</kbd>\n {{ 'i18n_z_ui_editor_shortcut_select' | translate }}\n </span>\n </div>\n </div>\n </ng-template>\n\n <span\n class=\"z-editor-link-popover-trigger\"\n z-popover\n [zPopoverContent]=\"linkPopover\"\n zTrigger=\"manual\"\n zPosition=\"bottom-left\"\n zClass=\"z-editor-link-popover\"\n [zOffset]=\"6\"\n [zPopoverWidth]=\"320\"\n [style.left.px]=\"linkPopoverState().left\"\n [style.top.px]=\"linkPopoverState().top\"\n [style.width.px]=\"linkPopoverState().width\"\n [style.height.px]=\"linkPopoverState().height\"\n (zControl)=\"onLinkPopoverControl($event)\"\n (zHide)=\"onLinkPopoverHide()\"></span>\n\n <ng-template #linkPopover>\n <div class=\"z-editor-link-popover-content\">\n <ng-template #linkPrefix>\n <z-icon zType=\"lucideLink\" zSize=\"16\" class=\"text-muted-foreground\" />\n </ng-template>\n <z-input\n zType=\"url\"\n zSize=\"sm\"\n class=\"z-editor-link-popover-input\"\n [zPrefix]=\"linkPrefix\"\n zPlaceholder=\"https://example.com\"\n [zValidators]=\"linkValidators\"\n [ngModel]=\"linkUrl()\"\n (ngModelChange)=\"onLinkUrlChange($event)\"\n (zOnEnter)=\"applyLink()\" />\n <div class=\"z-editor-link-popover-actions\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n [zDisabled]=\"!canApplyLink()\"\n (click)=\"applyLink()\"\n aria-label=\"Apply link\">\n <z-icon zType=\"lucideCheck\" zSize=\"16\" [zStrokeWidth]=\"2.5\" />\n </button>\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n [zDisabled]=\"!activeLinkHref()\"\n (click)=\"openActiveLink()\"\n aria-label=\"Open link\">\n <z-icon zType=\"lucideExternalLink\" zSize=\"16\" [zStrokeWidth]=\"2.5\" />\n </button>\n <button\n type=\"button\"\n z-button\n zType=\"ghost-destructive\"\n zSize=\"sm\"\n [zDisabled]=\"!activeLinkHref()\"\n (click)=\"removeLink()\"\n aria-label=\"Remove link\">\n <z-icon zType=\"lucideUnlink\" zSize=\"16\" [zStrokeWidth]=\"2.5\" />\n </button>\n </div>\n </div>\n </ng-template>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shival99-z-ui-components-z-editor.mjs","sources":["../../../../libs/core-ui/components/z-editor/z-editor.define.ts","../../../../libs/core-ui/components/z-editor/z-editor.variants.ts","../../../../libs/core-ui/components/z-editor/z-editor.component.ts","../../../../libs/core-ui/components/z-editor/z-editor.component.html","../../../../libs/core-ui/components/z-editor/shival99-z-ui-components-z-editor.ts"],"sourcesContent":["import type { ZEditorSlashCommandItem, ZEditorToolbarItem } from './z-editor.types';\n\nexport const Z_EDITOR_DEFAULT_TOOLBAR: readonly ZEditorToolbarItem[] = [\n { id: 'undo', icon: 'lucideUndo', label: 'Undo' },\n { id: 'redo', icon: 'lucideRedo', label: 'Redo' },\n { id: 'bold', icon: 'lucideBold', label: 'Bold' },\n { id: 'italic', icon: 'lucideItalic', label: 'Italic' },\n { id: 'underline', icon: 'lucideUnderline', label: 'Underline' },\n { id: 'strike', icon: 'lucideStrikethrough', label: 'Strike' },\n { id: 'code', icon: 'lucideCode', label: 'Code' },\n { id: 'blockStyle', icon: 'lucidePilcrow', label: 'Block style' },\n { id: 'bulletList', icon: 'lucideList', label: 'Bullet list' },\n { id: 'orderedList', icon: 'lucideListOrdered', label: 'Ordered list' },\n { id: 'blockquote', icon: 'lucideQuote', label: 'Blockquote' },\n { id: 'codeBlock', icon: 'lucideFileCode', label: 'Code block' },\n { id: 'link', icon: 'lucideLink', label: 'Link' },\n { id: 'image', icon: 'lucideImage', label: 'Image' },\n { id: 'emoji', icon: 'lucideSmilePlus', label: 'Emoji' },\n { id: 'textColor', icon: 'lucidePalette', label: 'Text color' },\n { id: 'backgroundColor', icon: 'lucideHighlighter', label: 'Background color' },\n { id: 'align', icon: 'lucideAlignLeft', label: 'Align' },\n { id: 'horizontalRule', icon: 'lucideMinus', label: 'Horizontal rule' },\n { id: 'clearFormatting', icon: 'lucideRemoveFormatting', label: 'Clear formatting' },\n];\n\nexport const Z_EDITOR_COLOR_SWATCHES: readonly string[] = [\n '#000000',\n '#111827',\n '#374151',\n '#6b7280',\n '#9ca3af',\n '#ffffff',\n '#7f1d1d',\n '#ef4444',\n '#f97316',\n '#f59e0b',\n '#eab308',\n '#365314',\n '#22c55e',\n '#0f766e',\n '#06b6d4',\n '#1d4ed8',\n '#3b82f6',\n '#8b5cf6',\n '#6d28d9',\n '#ec4899',\n];\n\nexport const Z_EDITOR_BACKGROUND_SWATCHES: readonly string[] = [\n '#ffffff',\n '#f9fafb',\n '#f3f4f6',\n '#e5e7eb',\n '#d1d5db',\n '#fef3c7',\n '#fde68a',\n '#ffedd5',\n '#fed7aa',\n '#fee2e2',\n '#fecaca',\n '#fce7f3',\n '#fbcfe8',\n '#ede9fe',\n '#ddd6fe',\n '#dbeafe',\n '#bfdbfe',\n '#cffafe',\n '#a5f3fc',\n '#dcfce7',\n];\n\nexport const Z_EDITOR_SLASH_COMMANDS: readonly ZEditorSlashCommandItem[] = [\n {\n id: 'text',\n command: 'paragraph',\n icon: 'lucideType',\n label: 'Text',\n description: 'Plain paragraph text',\n group: 'Formatting',\n aliases: ['paragraph', 'p'],\n },\n {\n id: 'standard',\n command: 'paragraph',\n icon: 'lucideType',\n label: 'Standard',\n description: '',\n group: 'Formatting',\n aliases: ['standard', 'normal'],\n },\n {\n id: 'small',\n command: 'small',\n icon: 'lucideCaseLower',\n label: 'Small',\n description: '',\n group: 'Formatting',\n aliases: ['small', 'caption'],\n },\n {\n id: 'heading-1',\n command: 'heading1',\n icon: 'lucideHeading1',\n label: 'Heading 1',\n description: 'Large section heading',\n group: 'Formatting',\n aliases: ['h1', 'title'],\n },\n {\n id: 'heading-2',\n command: 'heading2',\n icon: 'lucideHeading2',\n label: 'Heading 2',\n description: 'Medium section heading',\n group: 'Formatting',\n aliases: ['h2', 'subtitle'],\n },\n {\n id: 'heading-3',\n command: 'heading3',\n icon: 'lucideHeading3',\n label: 'Heading 3',\n description: 'Small section heading',\n group: 'Formatting',\n aliases: ['h3'],\n },\n {\n id: 'heading-4',\n command: 'heading4',\n icon: 'lucideHeading4',\n label: 'Heading 4',\n description: '',\n group: 'Formatting',\n aliases: ['h4'],\n },\n {\n id: 'bullet-list',\n command: 'bulletList',\n icon: 'lucideList',\n label: 'Bullet list',\n description: 'Unordered list',\n group: 'Lists',\n aliases: ['ul', 'list'],\n },\n {\n id: 'ordered-list',\n command: 'orderedList',\n icon: 'lucideListOrdered',\n label: 'Ordered list',\n description: 'Numbered list',\n group: 'Lists',\n aliases: ['ol', 'number'],\n },\n {\n id: 'alphabetical-list',\n command: 'orderedList',\n icon: 'lucideListOrdered',\n label: 'Alphabetical list',\n description: '',\n group: 'Lists',\n aliases: ['ordered', 'ol', 'number', 'alphabetical'],\n },\n {\n id: 'blockquote',\n command: 'blockquote',\n icon: 'lucideQuote',\n label: 'Blockquote',\n description: 'Quote block',\n group: 'Blocks',\n aliases: ['quote'],\n },\n {\n id: 'code-block',\n command: 'codeBlock',\n icon: 'lucideFileCode',\n label: 'Code block',\n description: 'Preformatted code',\n group: 'Blocks',\n aliases: ['code', 'pre'],\n },\n {\n id: 'horizontal-rule',\n command: 'horizontalRule',\n icon: 'lucideMinus',\n label: 'Divider',\n description: 'Horizontal separator',\n group: 'Insert',\n aliases: ['hr', 'line', 'divider'],\n },\n {\n id: 'image',\n command: 'image',\n icon: 'lucideImage',\n label: 'Image',\n description: 'Upload image',\n group: 'Insert',\n aliases: ['photo', 'picture'],\n },\n];\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zEditorVariants = cva(\n [\n 'z-editor block w-full rounded-[0.375rem] border border-input bg-white shadow-xs',\n 'transition-[border-color,box-shadow,background-color,color,opacity] duration-200',\n 'dark:bg-input/30 dark:border-input',\n 'outline-none',\n ],\n {\n variants: {\n zSize: {\n sm: '[&_.z-editor-prosemirror]:min-h-24 [&_.z-editor-prosemirror]:text-sm',\n default: '[&_.z-editor-prosemirror]:min-h-40 [&_.z-editor-prosemirror]:text-sm',\n lg: '[&_.z-editor-prosemirror]:min-h-60 [&_.z-editor-prosemirror]:text-base',\n },\n zStatus: {\n default: 'focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]',\n error:\n 'border-destructive! ring-destructive/20 ring-[3px] focus-within:border-destructive! focus-within:ring-destructive/30',\n disabled: 'opacity-50 cursor-not-allowed bg-muted! text-muted-foreground',\n readonly: 'bg-muted/50! text-muted-foreground cursor-default',\n },\n zPlaceholderMode: {\n firstLine: 'z-editor-placeholder-first-line',\n everyLine: '',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zStatus: 'default',\n zPlaceholderMode: 'everyLine',\n },\n }\n);\n\nexport type ZEditorVariants = VariantProps<typeof zEditorVariants>;\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n type OnInit,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n type AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n NgControl,\n NgModel,\n PristineChangeEvent,\n ReactiveFormsModule,\n TouchedChangeEvent,\n} from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { ZInputComponent } from '@shival99/z-ui/components/z-input';\nimport type { ZInputValidator } from '@shival99/z-ui/components/z-input';\nimport { ZPopoverDirective } from '@shival99/z-ui/components/z-popover';\nimport type { ZPopoverControl } from '@shival99/z-ui/components/z-popover';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { ZTranslateService } from '@shival99/z-ui/services';\nimport {\n Z_EMOJI_KEYWORDS,\n Z_EMOJI_SHEET,\n type ZEmojiCategory,\n zCreateEvent,\n type ZEvent,\n zMergeClasses,\n zTransform,\n zUuid,\n} from '@shival99/z-ui/utils';\nimport { Editor, type AnyExtension, type Content, posToDOMRect } from '@tiptap/core';\nimport BubbleMenu from '@tiptap/extension-bubble-menu';\nimport Code from '@tiptap/extension-code';\nimport HorizontalRule from '@tiptap/extension-horizontal-rule';\nimport Link from '@tiptap/extension-link';\nimport Mention from '@tiptap/extension-mention';\nimport Placeholder, { type PlaceholderOptions } from '@tiptap/extension-placeholder';\nimport TextAlign from '@tiptap/extension-text-align';\nimport { BackgroundColor, Color, TextStyle } from '@tiptap/extension-text-style';\nimport FontSize from '@tiptap/extension-text-style/font-size';\nimport Underline from '@tiptap/extension-underline';\nimport { Markdown } from '@tiptap/markdown';\nimport { TextSelection } from '@tiptap/pm/state';\nimport type { EditorView } from '@tiptap/pm/view';\nimport StarterKit from '@tiptap/starter-kit';\nimport type { ClassValue } from 'clsx';\nimport { filter, merge } from 'rxjs';\nimport ImageResize from 'tiptap-extension-resize-image';\nimport {\n Z_EDITOR_BACKGROUND_SWATCHES,\n Z_EDITOR_COLOR_SWATCHES,\n Z_EDITOR_DEFAULT_TOOLBAR,\n Z_EDITOR_SLASH_COMMANDS,\n} from './z-editor.define';\nimport type {\n ZEditorContentType,\n ZEditorControl,\n ZEditorMarkdownCapable,\n ZEditorResolvedToolbarItem,\n ZEditorSlashCommandItem,\n ZEditorSlashCommandViewItem,\n ZEditorSize,\n ZEditorTipTapOptions,\n ZEditorToolbarCommand,\n ZEditorToolbarItem,\n ZEditorValidator,\n} from './z-editor.types';\nimport { zEditorVariants } from './z-editor.variants';\n\n@Component({\n selector: 'z-editor',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n ZButtonComponent,\n ZIconComponent,\n ZInputComponent,\n ZPopoverDirective,\n ZTooltipDirective,\n TranslatePipe,\n ],\n standalone: true,\n templateUrl: './z-editor.component.html',\n styleUrl: './z-editor.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZEditorComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'zEditor',\n})\nexport class ZEditorComponent implements OnInit, ControlValueAccessor {\n private readonly _injector = inject(Injector);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _zTranslate = inject(ZTranslateService);\n private readonly _editorHost = viewChild.required<ElementRef<HTMLElement>>('editorHost');\n private readonly _floatingToolbar = viewChild.required<ElementRef<HTMLElement>>('floatingToolbar');\n private readonly _slashMenuScrollHost = viewChild<ElementRef<HTMLElement>>('slashMenuScrollHost');\n\n public readonly zOnChange = output<string | Content>();\n public readonly zOnFocus = output<FocusEvent>();\n public readonly zOnBlur = output<FocusEvent>();\n public readonly zControl = output<ZEditorControl>();\n public readonly zEvent = output<ZEvent>();\n\n public readonly class = input<ClassValue>('');\n public readonly zSize = input<ZEditorSize>('default');\n public readonly zLabel = input<string>('');\n public readonly zLabelClass = input<string>('');\n public readonly zPlaceholder = input<string>('');\n public readonly zRequired = input(false, { transform: zTransform });\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zReadonly = input(false, { transform: zTransform });\n public readonly zContentType = input<ZEditorContentType>('html');\n public readonly zToolbar = input<readonly ZEditorToolbarItem[] | false>(Z_EDITOR_DEFAULT_TOOLBAR);\n public readonly zTipTap = input<ZEditorTipTapOptions>({});\n public readonly zValidators = input<ZEditorValidator[]>([]);\n\n protected readonly editorId = zUuid('z-editor');\n protected readonly linkInputId = zUuid('z-editor-link');\n\n protected readonly _value = signal<string | Content>('');\n private readonly _disabled = signal(false);\n private readonly _formControl = signal<AbstractControl | null>(null);\n private readonly _formStateVersion = signal(0);\n private readonly _isNgModel = signal(false);\n private readonly _selectionVersion = signal(0);\n private readonly _plainText = signal('');\n protected readonly slashMenuState = signal({\n visible: false,\n query: '',\n from: 0,\n to: 0,\n left: 0,\n top: 0,\n });\n\n protected readonly slashMenuActiveIndex = signal(0);\n protected readonly linkPopoverState = signal({\n visible: false,\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n\n protected readonly linkUrl = signal('');\n protected readonly activeLinkHref = signal('');\n protected readonly linkValidators: ZInputValidator[] = [\n {\n error: 'url',\n message: 'i18n_z_ui_editor_invalid_url',\n validate: value => this._normalizeUrl(String(value ?? '')) !== '',\n },\n ];\n\n protected readonly textColorSwatches = Z_EDITOR_COLOR_SWATCHES;\n protected readonly backgroundColorSwatches = Z_EDITOR_BACKGROUND_SWATCHES;\n protected readonly slashCommands = Z_EDITOR_SLASH_COMMANDS;\n protected readonly blockStyleOptions: readonly {\n command: Extract<ZEditorToolbarCommand, 'paragraph' | 'heading1' | 'heading2' | 'heading3' | 'heading4'>;\n icon: ZEditorToolbarItem['icon'];\n label: string;\n }[] = [\n { command: 'paragraph', icon: 'lucidePilcrow', label: 'Paragraph' },\n { command: 'heading1', icon: 'lucideHeading1', label: 'Heading 1' },\n { command: 'heading2', icon: 'lucideHeading2', label: 'Heading 2' },\n { command: 'heading3', icon: 'lucideHeading3', label: 'Heading 3' },\n { command: 'heading4', icon: 'lucideHeading4', label: 'Heading 4' },\n ];\n\n protected readonly alignOptions: readonly {\n command: Extract<ZEditorToolbarCommand, 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify'>;\n icon: ZEditorToolbarItem['icon'];\n label: string;\n }[] = [\n { command: 'alignLeft', icon: 'lucideAlignLeft', label: 'Left' },\n { command: 'alignCenter', icon: 'lucideAlignCenter', label: 'Center' },\n { command: 'alignRight', icon: 'lucideAlignRight', label: 'Right' },\n { command: 'alignJustify', icon: 'lucideAlignJustify', label: 'Justify' },\n ];\n\n private readonly _toolbarShortcutLabels: Partial<Record<ZEditorToolbarCommand, string>> = {\n bold: 'Ctrl+B',\n italic: 'Ctrl+I',\n underline: 'Ctrl+U',\n strike: 'Ctrl+Shift+S',\n code: 'Ctrl+E',\n link: 'Ctrl+K',\n clearFormatting: 'Ctrl+\\\\',\n undo: 'Ctrl+Z',\n redo: 'Ctrl+Y',\n };\n\n protected readonly uiState = signal({\n touched: false,\n dirty: false,\n });\n\n private readonly _customError = signal<string | null>(null);\n\n private _onChange: (value: string | Content) => void = () => void 0;\n private _onTouched: () => void = () => void 0;\n private _ngControl: NgControl | null = null;\n private _editor: Editor | null = null;\n private _pendingValue: Content = '';\n private _linkSelection: { from: number; to: number } | null = null;\n private _linkAnchorElement: HTMLAnchorElement | null = null;\n private _emojiPopoverControl: ZPopoverControl | null = null;\n private _blockStylePopoverControl: ZPopoverControl | null = null;\n private _alignPopoverControl: ZPopoverControl | null = null;\n private _textColorPopoverControl: ZPopoverControl | null = null;\n private _backgroundColorPopoverControl: ZPopoverControl | null = null;\n private _slashMenuPopoverControl: ZPopoverControl | null = null;\n private _dismissedSlashMenu: { query: string; from: number; to: number } | null = null;\n private _linkPopoverControl: ZPopoverControl | null = null;\n private _resizeObserver: ResizeObserver | null = null;\n private _resizeListenerCleanup: (() => void) | null = null;\n private _bubbleMenuPositionFrame: number | null = null;\n protected readonly emojiCategories = Z_EMOJI_SHEET as readonly (Omit<ZEmojiCategory, 'icon'> & { icon: ZIcon })[];\n protected readonly activeEmojiCategoryId = signal(this.emojiCategories[0]?.id ?? 'smileys-people');\n protected readonly emojiSearch = signal('');\n protected readonly activeEmojiCategory = computed(\n () => this.emojiCategories.find(category => category.id === this.activeEmojiCategoryId()) ?? this.emojiCategories[0]\n );\n\n protected readonly activeEmojiCategoryLabel = computed(\n () => this.activeEmojiCategory()?.labelKey ?? 'i18n_z_ui_emoji_category_smileys'\n );\n\n protected readonly emojiSearchQuery = computed(() => this.emojiSearch().trim().toLowerCase());\n\n protected readonly activeEmojis = computed(() => {\n const query = this.emojiSearchQuery();\n\n if (query) {\n return this._searchEmojis(query);\n }\n\n return this.activeEmojiCategory()?.emojis ?? [];\n });\n\n protected readonly hasEmojiResults = computed(() => this.activeEmojis().length > 0);\n\n protected readonly isDisabled = computed(() => this._disabled() || this.zDisabled());\n protected readonly showToolbar = computed(() => this.zToolbar() !== false && !this.zReadonly() && !this.isDisabled());\n protected readonly normalizedLinkUrl = computed(() => this._normalizeUrl(this.linkUrl()));\n protected readonly activeTextColor = computed(() => this._getTextStyleAttribute('color') || '#111827');\n protected readonly activeBackgroundColor = computed(\n () => this._getTextStyleAttribute('backgroundColor') || '#ffffff'\n );\n\n protected readonly activeBlockStyle = computed(() => this._getActiveBlockStyle());\n protected readonly activeBlockStyleLabel = computed(\n () => this.blockStyleOptions.find(option => option.command === this.activeBlockStyle())?.label ?? 'Paragraph'\n );\n\n protected readonly activeAlign = computed(() => this._getActiveAlign());\n protected readonly activeAlignLabel = computed(\n () => this.alignOptions.find(option => option.command === this.activeAlign())?.label ?? 'Left'\n );\n\n protected readonly activeAlignIcon = computed(\n () => this.alignOptions.find(option => option.command === this.activeAlign())?.icon ?? 'lucideAlignLeft'\n );\n\n protected readonly filteredSlashCommands = computed<ZEditorSlashCommandViewItem[]>(() => {\n const query = this.slashMenuState().query.trim().toLowerCase();\n const commands = this.slashCommands;\n let matchedCommands = commands;\n\n if (query) {\n matchedCommands = commands.filter(item => {\n const label = item.label.toLowerCase();\n const description = item.description.toLowerCase();\n return (\n label.includes(query) || description.includes(query) || item.aliases.some(alias => alias.includes(query))\n );\n });\n }\n\n return matchedCommands.map((item, index) => ({\n ...item,\n showGroupLabel: index === 0 || matchedCommands[index - 1]?.group !== item.group,\n }));\n });\n\n protected readonly canApplyLink = computed(() => !!this.normalizedLinkUrl());\n protected readonly effectivePlaceholder = computed(() => {\n this._zTranslate.currentLang();\n return this.zPlaceholder() || this._zTranslate.instant('i18n_z_ui_editor_placeholder');\n });\n\n protected readonly toolbarItems = computed<ZEditorResolvedToolbarItem[]>(() => {\n this._selectionVersion();\n const toolbar = this.zToolbar();\n\n if (toolbar === false) {\n return [];\n }\n\n return toolbar.map(item => ({\n ...item,\n active: this._isToolbarCommandActive(item.id),\n disabled: this._isToolbarCommandDisabled(item.id),\n }));\n });\n\n protected readonly floatingToolbarItems = computed<\n (ZEditorResolvedToolbarItem & { shortcut: string; tooltip: string })[]\n >(() => {\n this._selectionVersion();\n const itemIds: ZEditorToolbarCommand[] = [\n 'bold',\n 'italic',\n 'underline',\n 'strike',\n 'code',\n 'blockStyle',\n 'clearFormatting',\n 'textColor',\n 'backgroundColor',\n 'align',\n 'link',\n ];\n\n return Z_EDITOR_DEFAULT_TOOLBAR.filter(item => itemIds.includes(item.id)).map(item => ({\n ...item,\n active: this._isToolbarCommandActive(item.id),\n disabled: this._isToolbarCommandDisabled(item.id),\n shortcut: this._toolbarShortcutLabels[item.id] ?? '',\n tooltip: this._getToolbarTooltip(item.id, item.label),\n }));\n });\n\n private readonly _shouldShowValidation = computed(() => {\n const control = this._formControl();\n this._formStateVersion();\n\n if (this._isNgModel()) {\n return this.uiState().dirty || this.uiState().touched;\n }\n\n if (control) {\n return control.dirty;\n }\n\n return this.uiState().dirty || this.uiState().touched;\n });\n\n private _getValidationErrors(): string[] {\n const errors: string[] = [];\n const plainText = this._plainText().trim();\n const valueText = this._serializeValueAsText();\n const validators = this.zValidators();\n\n if (!this._shouldShowValidation()) {\n return errors;\n }\n\n const isRequired = this.zRequired() || this._formControl()?.errors?.['required'];\n if (isRequired && !plainText && this._isEditorEmpty()) {\n this._zTranslate.currentLang();\n errors.push(this._zTranslate.instant('i18n_z_ui_editor_required'));\n }\n\n for (const validator of validators) {\n if (validator.error === 'required') {\n continue;\n }\n\n if (validator.minLength && valueText.length < validator.minLength) {\n errors.push(validator.message);\n continue;\n }\n\n if (validator.maxLength && valueText.length > validator.maxLength) {\n errors.push(validator.message);\n continue;\n }\n\n if (validator.pattern && !validator.pattern.test(valueText)) {\n errors.push(validator.message);\n }\n }\n\n return errors;\n }\n\n protected readonly hasError = computed(() => {\n if (this._customError()) {\n return true;\n }\n\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return true;\n }\n\n const control = this._formControl();\n this._formStateVersion();\n\n if (!control) {\n return false;\n }\n\n return control.invalid && this._shouldShowValidation();\n });\n\n protected readonly errorMessage = computed(() => {\n const customError = this._customError();\n if (customError) {\n return customError;\n }\n\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return customErrors[0];\n }\n\n const control = this._formControl();\n const errors = control?.errors;\n\n if (!errors) {\n return '';\n }\n\n this._zTranslate.currentLang();\n if (errors['required']) {\n return this._zTranslate.instant('i18n_z_ui_editor_required');\n }\n\n if (errors['minlength']) {\n return this._zTranslate.instant('i18n_z_ui_editor_min_length', {\n min: errors['minlength'].requiredLength,\n });\n }\n\n if (errors['maxlength']) {\n return this._zTranslate.instant('i18n_z_ui_editor_max_length', {\n max: errors['maxlength'].requiredLength,\n });\n }\n\n return this._zTranslate.instant('i18n_z_ui_editor_invalid');\n });\n\n protected readonly currentStatus = computed(() => {\n if (this.isDisabled()) {\n return 'disabled';\n }\n\n if (this.zReadonly()) {\n return 'readonly';\n }\n\n if (this.hasError()) {\n return 'error';\n }\n\n return 'default';\n });\n\n protected readonly wrapperClasses = computed(() => 'z-editor-wrapper flex w-full flex-col gap-2');\n\n protected readonly editorClasses = computed(() =>\n zMergeClasses(\n zEditorVariants({\n zSize: this.zSize(),\n zStatus: this.currentStatus(),\n zPlaceholderMode: this._placeholderMode(),\n }),\n this.class()\n )\n );\n\n constructor() {\n afterNextRender(() => {\n this._createEditor();\n });\n\n effect(() => {\n const editor = this._editor;\n const editable = !this.isDisabled() && !this.zReadonly();\n\n if (!editor || editor.isEditable === editable) {\n return;\n }\n\n editor.setEditable(editable);\n this._selectionVersion.update(v => v + 1);\n });\n\n this._destroyRef.onDestroy(() => {\n this._teardownBubbleMenuPositionUpdates();\n this._editor?.destroy();\n this._editor = null;\n });\n }\n\n ngOnInit(): void {\n queueMicrotask(() => {\n try {\n this._ngControl = this._injector.get(NgControl, null);\n this._isNgModel.set(this._ngControl instanceof NgModel);\n\n if (this._ngControl?.control) {\n const { control } = this._ngControl;\n this._formControl.set(control);\n merge(\n control.statusChanges,\n control.valueChanges,\n control.events.pipe(\n filter(event => event instanceof PristineChangeEvent || event instanceof TouchedChangeEvent)\n )\n )\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._formStateVersion.update(v => v + 1);\n });\n }\n } catch {\n this._ngControl = null;\n }\n });\n }\n\n public writeValue(value: string | Content): void {\n const nextValue = value || '';\n this._pendingValue = nextValue;\n this._value.set(nextValue);\n\n if (!this._editor || this._isCurrentEditorContent(nextValue)) {\n return;\n }\n\n this._editor.commands.setContent(nextValue, { emitUpdate: false });\n this._refreshEditorState();\n }\n\n public registerOnChange(fn: (value: string | Content) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n this._editor?.setEditable(!isDisabled && !this.zReadonly());\n }\n\n protected onToolbarClick(command: ZEditorToolbarCommand): void {\n const editor = this._editor;\n\n if (!editor || this._isToolbarCommandDisabled(command)) {\n return;\n }\n\n switch (command) {\n case 'bold':\n editor.chain().focus().toggleBold().run();\n break;\n case 'italic':\n editor.chain().focus().toggleItalic().run();\n break;\n case 'underline':\n editor.chain().focus().toggleUnderline().run();\n break;\n case 'strike':\n editor.chain().focus().toggleStrike().run();\n break;\n case 'code':\n editor.chain().focus().toggleCode().run();\n break;\n case 'blockStyle':\n break;\n case 'heading1':\n editor.chain().focus().toggleHeading({ level: 1 }).run();\n break;\n case 'heading2':\n editor.chain().focus().toggleHeading({ level: 2 }).run();\n break;\n case 'heading3':\n editor.chain().focus().toggleHeading({ level: 3 }).run();\n break;\n case 'heading4':\n editor.chain().focus().toggleHeading({ level: 4 }).run();\n break;\n case 'small':\n editor.chain().focus().setParagraph().setFontSize('0.875rem').run();\n break;\n case 'paragraph':\n editor.chain().focus().setParagraph().unsetFontSize().run();\n break;\n case 'bulletList':\n editor.chain().focus().toggleBulletList().run();\n break;\n case 'orderedList':\n editor.chain().focus().toggleOrderedList().run();\n break;\n case 'blockquote':\n editor.chain().focus().toggleBlockquote().run();\n break;\n case 'codeBlock':\n editor.chain().focus().toggleCodeBlock().run();\n break;\n case 'horizontalRule':\n editor.chain().focus().setHorizontalRule().run();\n break;\n case 'link':\n this._toggleLink();\n break;\n case 'image':\n this._insertImage();\n break;\n case 'emoji':\n case 'align':\n case 'textColor':\n case 'backgroundColor':\n break;\n case 'alignLeft':\n this._setTextAlign('left');\n break;\n case 'alignCenter':\n this._setTextAlign('center');\n break;\n case 'alignRight':\n this._setTextAlign('right');\n break;\n case 'alignJustify':\n this._setTextAlign('justify');\n break;\n case 'undo':\n editor.chain().focus().undo().run();\n break;\n case 'redo':\n editor.chain().focus().redo().run();\n break;\n case 'clearFormatting':\n editor.chain().focus().clearNodes().unsetAllMarks().run();\n this._collapseSelectionToAnchor();\n break;\n }\n\n this._refreshEditorState();\n }\n\n private _createEditor(): void {\n if (this._editor) {\n return;\n }\n\n const host = this._editorHost().nativeElement;\n const tiptapOptions = this.zTipTap();\n const placeholderConfig = this._placeholderConfig();\n\n this._editor = new Editor({\n element: host,\n content: this._pendingValue,\n editable: !this.isDisabled() && !this.zReadonly(),\n extensions: [\n this.zContentType() === 'markdown' &&\n Markdown.configure({\n markedOptions: {\n gfm: true,\n },\n }),\n StarterKit.configure({\n code: false,\n horizontalRule: false,\n link: false,\n underline: false,\n dropcursor: {\n color: 'var(--primary)',\n width: 2,\n },\n ...tiptapOptions.starterKit,\n }),\n Code.extend({\n excludes: 'code',\n }),\n Underline,\n TextStyle,\n FontSize,\n Color,\n BackgroundColor,\n BubbleMenu.configure({\n element: this._floatingToolbar().nativeElement,\n pluginKey: 'zEditorBubbleMenu',\n updateDelay: 0,\n options: {\n strategy: 'fixed',\n placement: 'top-start',\n offset: 8,\n flip: true,\n shift: {\n padding: 8,\n },\n },\n getReferencedVirtualElement: () => this._getSelectionFloatingElement(),\n shouldShow: ({ editor, from, to }) =>\n editor.isEditable &&\n !this.isDisabled() &&\n !this.zReadonly() &&\n from !== to &&\n !editor.isActive('image') &&\n editor.state.doc.textBetween(from, to).trim().length > 0,\n }),\n TextAlign.configure({\n types: ['heading', 'paragraph', 'image'],\n }),\n Link.configure({\n openOnClick: false,\n ...tiptapOptions.link,\n }),\n HorizontalRule,\n tiptapOptions.image !== false &&\n this._createImageExtension(typeof tiptapOptions.image === 'boolean' ? {} : (tiptapOptions.image ?? {})),\n tiptapOptions.mention !== false &&\n Mention.configure({\n HTMLAttributes: {\n class: 'mention',\n },\n ...(typeof tiptapOptions.mention === 'boolean' ? {} : tiptapOptions.mention),\n }),\n Placeholder.configure({\n placeholder: this.effectivePlaceholder(),\n showOnlyWhenEditable: false,\n showOnlyCurrent: true,\n ...placeholderConfig,\n }),\n ...(tiptapOptions.extensions ?? []),\n ].filter(extension => !!extension),\n editorProps: {\n attributes: {\n class: 'z-editor-prosemirror',\n autocomplete: 'off',\n autocorrect: 'off',\n autocapitalize: 'off',\n translate: 'no',\n },\n handleKeyDown: (_view, event) =>\n this._handleSlashMenuKeyDown(event) || this._handleEditorShortcutKeyDown(event),\n handleClick: (view, _pos, event) => this._handleEditorClick(view, event),\n },\n onUpdate: () => this._handleEditorUpdate(),\n onSelectionUpdate: () => this._refreshEditorState(),\n onTransaction: () => this._refreshEditorState(),\n onFocus: () => this._handleFocus(),\n onBlur: () => this._handleBlur(),\n });\n\n this._refreshEditorState();\n this._setupBubbleMenuPositionUpdates();\n this._emitControl();\n }\n\n private _handleEditorUpdate(): void {\n const value = this._getSerializedContent();\n this._value.set(value);\n this.uiState.update(s => ({ ...s, dirty: true }));\n this._onChange(value);\n this.zOnChange.emit(value);\n this._refreshEditorState();\n }\n\n private _handleFocus(): void {\n const focusEvent = new FocusEvent('focus');\n this.zOnFocus.emit(focusEvent);\n this.zEvent.emit(zCreateEvent('focus', focusEvent));\n }\n\n private _handleBlur(): void {\n if (this.uiState().dirty) {\n this.uiState.update(s => ({ ...s, touched: true }));\n }\n\n this._dismissCurrentSlashMenu();\n this._onTouched();\n const blurEvent = new FocusEvent('blur');\n this.zOnBlur.emit(blurEvent);\n this.zEvent.emit(zCreateEvent('blur', blurEvent));\n }\n\n private _emitControl(): void {\n const control: ZEditorControl = {\n focus: () => this._editor?.commands.focus(),\n blur: () => this._editor?.commands.blur(),\n clear: () => this._setEditorContent(''),\n setContent: content => this._setEditorContent(content),\n getContent: () => this._getSerializedContent(),\n getHTML: () => this._editor?.getHTML() ?? '',\n getJSON: () => this._editor?.getJSON() ?? { type: 'doc', content: [] },\n getMarkdown: () => this._getMarkdown(),\n getText: () => this._editor?.getText() ?? '',\n getLength: () => this._editor?.state.doc.content.size ?? 0,\n getEditor: () => this._editor,\n valid: () => this._validateControl(),\n validate: () => !this._validateControl(),\n reset: () => {\n this._customError.set(null);\n this.uiState.set({ touched: false, dirty: false });\n this._setEditorContent('');\n },\n setValue: content => this._setEditorContent(content),\n setErrorMessage: message => {\n this._customError.set(message);\n this._formStateVersion.update(v => v + 1);\n },\n hasError: this.hasError,\n value: this._value.asReadonly(),\n errorMessage: this.errorMessage,\n };\n\n this.zControl.emit(control);\n }\n\n private _setEditorContent(content: Content): void {\n this._pendingValue = content;\n this._editor?.commands.setContent(content, { emitUpdate: false });\n const value = this._getSerializedContent();\n this._value.set(value);\n this._plainText.set(this._editor?.getText() ?? '');\n this._onChange(value);\n this.zOnChange.emit(value);\n this._refreshEditorState();\n }\n\n private _validateControl(): boolean {\n this.uiState.set({ touched: true, dirty: true });\n this._formControl()?.markAsDirty();\n this._formControl()?.markAsTouched();\n this._formControl()?.updateValueAndValidity({ onlySelf: true });\n this._formStateVersion.update(v => v + 1);\n return !this.hasError();\n }\n\n private _getSerializedContent(): string | Content {\n const editor = this._editor;\n\n if (!editor) {\n return this._value();\n }\n\n if (this.zContentType() === 'json') {\n return editor.getJSON();\n }\n\n if (this.zContentType() === 'markdown') {\n return this._getMarkdown();\n }\n\n return editor.getHTML();\n }\n\n private _getMarkdown(): string {\n const editor = this._editor as (Editor & ZEditorMarkdownCapable) | null;\n return editor?.getMarkdown?.() ?? this._editor?.getText() ?? '';\n }\n\n private _serializeValueAsText(): string {\n const value = this._value();\n\n if (typeof value === 'string') {\n return value;\n }\n\n return JSON.stringify(value);\n }\n\n private _refreshEditorState(): void {\n this._plainText.set(this._editor?.getText() ?? '');\n this._selectionVersion.update(v => v + 1);\n this._formStateVersion.update(v => v + 1);\n this._syncSlashMenu();\n this._syncLinkPopoverPosition();\n }\n\n private _searchEmojis(query: string): readonly string[] {\n const results: string[] = [];\n for (const category of this.emojiCategories) {\n for (const entry of category.emojis) {\n const emoji = typeof entry === 'string' ? entry : entry.emoji;\n const keywords = typeof entry === 'string' ? Z_EMOJI_KEYWORDS.get(entry) : entry.keywords;\n const matchesKeywords = keywords?.some(kw => kw.includes(query)) ?? false;\n if (matchesKeywords || emoji.includes(query)) {\n results.push(emoji);\n }\n }\n }\n return results;\n }\n\n private _setupBubbleMenuPositionUpdates(): void {\n if (typeof ResizeObserver === 'undefined') {\n this._resizeListenerCleanup = this._listenWindowResize();\n return;\n }\n\n const editorElement = this._editorHost().nativeElement;\n this._resizeObserver = new ResizeObserver(() => this._requestBubbleMenuPositionUpdate());\n this._resizeObserver.observe(editorElement);\n\n const wrapperElement = editorElement.closest('.z-editor-wrapper');\n if (wrapperElement instanceof HTMLElement) {\n this._resizeObserver.observe(wrapperElement);\n }\n\n this._resizeListenerCleanup = this._listenWindowResize();\n }\n\n private _listenWindowResize(): () => void {\n const listener = (event: Event): void => {\n if (event.type === 'scroll' && event.target instanceof Element && event.target.closest('.z-popover')) {\n return;\n }\n this._requestBubbleMenuPositionUpdate();\n };\n window.addEventListener('resize', listener, { passive: true });\n window.addEventListener('scroll', listener, { passive: true, capture: true });\n return () => {\n window.removeEventListener('resize', listener);\n window.removeEventListener('scroll', listener, { capture: true });\n };\n }\n\n private _teardownBubbleMenuPositionUpdates(): void {\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n this._resizeListenerCleanup?.();\n this._resizeListenerCleanup = null;\n\n if (this._bubbleMenuPositionFrame !== null) {\n cancelAnimationFrame(this._bubbleMenuPositionFrame);\n this._bubbleMenuPositionFrame = null;\n }\n }\n\n private _requestBubbleMenuPositionUpdate(): void {\n if (this._bubbleMenuPositionFrame !== null) {\n return;\n }\n\n if (this._isAnyBubbleMenuPopoverOpen()) {\n return;\n }\n\n this._bubbleMenuPositionFrame = requestAnimationFrame(() => {\n this._bubbleMenuPositionFrame = null;\n this._editor?.view.dispatch(this._editor.state.tr.setMeta('zEditorBubbleMenu', 'updatePosition'));\n this._syncLinkPopoverPosition();\n });\n }\n\n private _isAnyBubbleMenuPopoverOpen(): boolean {\n return (\n !!this._blockStylePopoverControl?.isVisible() ||\n !!this._alignPopoverControl?.isVisible() ||\n !!this._textColorPopoverControl?.isVisible() ||\n !!this._backgroundColorPopoverControl?.isVisible()\n );\n }\n\n private _syncLinkPopoverPosition(): void {\n if (!this.linkPopoverState().visible) {\n return;\n }\n\n const rect = this._getLinkPopoverReferenceRect();\n\n if (!rect) {\n return;\n }\n\n this.linkPopoverState.set({\n visible: true,\n left: rect.left,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n });\n\n requestAnimationFrame(() => {\n if (this.linkPopoverState().visible) {\n this._linkPopoverControl?.show();\n }\n });\n }\n\n private _getSelectionFloatingElement(): {\n getBoundingClientRect: () => DOMRect;\n getClientRects: () => DOMRect[];\n } | null {\n const editor = this._editor;\n\n if (!editor) {\n return null;\n }\n\n // Freeze the bubble menu in place while any popover triggered from it is open,\n // so the popover (positioned relative to the bubble menu) does not flicker.\n if (this._isAnyBubbleMenuPopoverOpen()) {\n const toolbarRect = this._floatingToolbar().nativeElement.getBoundingClientRect();\n if (toolbarRect.width > 0) {\n return {\n getBoundingClientRect: () => toolbarRect,\n getClientRects: () => [toolbarRect],\n };\n }\n }\n\n const { from, to } = editor.state.selection;\n if (from === to) {\n return null;\n }\n\n const selectionRect = posToDOMRect(editor.view, from, to);\n const menuWidth = this._floatingToolbar().nativeElement.getBoundingClientRect().width;\n const activeAlign = this._getActiveAlignFromEditor(editor);\n const left =\n activeAlign === 'alignCenter'\n ? selectionRect.left + selectionRect.width / 2 - menuWidth / 2\n : activeAlign === 'alignRight'\n ? selectionRect.right - menuWidth\n : selectionRect.left;\n const rect = new DOMRect(Math.max(left, 0), selectionRect.top, menuWidth, selectionRect.height);\n\n return {\n getBoundingClientRect: () => rect,\n getClientRects: () => [rect],\n };\n }\n\n private _isEditorEmpty(): boolean {\n const editor = this._editor;\n\n if (editor) {\n return editor.isEmpty;\n }\n\n const value = this._value();\n if (typeof value === 'string') {\n return !value || value === '<p></p>' || value === '<p><br></p>';\n }\n\n return false;\n }\n\n private _isCurrentEditorContent(content: Content): boolean {\n const editor = this._editor;\n\n if (!editor) {\n return false;\n }\n\n if (this.zContentType() === 'json') {\n return JSON.stringify(editor.getJSON()) === JSON.stringify(content);\n }\n\n return editor.getHTML() === String(content);\n }\n\n private _isToolbarCommandActive(command: ZEditorToolbarCommand): boolean {\n const editor = this._editor;\n\n if (!editor || !editor.isEditable) {\n return false;\n }\n\n switch (command) {\n case 'bold':\n case 'italic':\n case 'underline':\n case 'strike':\n case 'code':\n case 'bulletList':\n case 'orderedList':\n case 'blockquote':\n case 'codeBlock':\n case 'link':\n return editor.isActive(command);\n case 'heading1':\n return editor.isActive('heading', { level: 1 });\n case 'heading2':\n return editor.isActive('heading', { level: 2 });\n case 'heading3':\n return editor.isActive('heading', { level: 3 });\n case 'heading4':\n return editor.isActive('heading', { level: 4 });\n case 'paragraph':\n return editor.isActive('paragraph');\n case 'blockStyle':\n return this.activeBlockStyle() !== 'paragraph';\n case 'align':\n return this.activeAlign() !== 'alignLeft';\n default:\n return false;\n }\n }\n\n private _isToolbarCommandDisabled(command: ZEditorToolbarCommand): boolean {\n const editor = this._editor;\n\n if (!editor || !editor.isEditable || this.isDisabled() || this.zReadonly()) {\n return true;\n }\n\n switch (command) {\n case 'undo':\n return !editor.can().undo();\n case 'redo':\n return !editor.can().redo();\n case 'link':\n return editor.state.selection.empty && !editor.isActive('link');\n case 'emoji':\n case 'blockStyle':\n case 'align':\n case 'textColor':\n case 'backgroundColor':\n return false;\n default:\n return false;\n }\n }\n\n protected onFloatingToolbarClick(command: ZEditorToolbarCommand): void {\n this.onToolbarClick(command);\n }\n\n private _getToolbarTooltip(command: ZEditorToolbarCommand, label: string): string {\n const shortcut = this._toolbarShortcutLabels[command];\n return shortcut ? `${label} (${shortcut})` : label;\n }\n\n protected applySlashCommand(item: ZEditorSlashCommandItem): void {\n const editor = this._editor;\n const { from, to } = this.slashMenuState();\n\n if (!editor) {\n return;\n }\n\n editor.chain().focus().deleteRange({ from, to }).run();\n this._hideSlashMenu();\n this.onToolbarClick(item.command);\n }\n\n protected applyBlockStyle(\n command: Extract<ZEditorToolbarCommand, 'paragraph' | 'heading1' | 'heading2' | 'heading3' | 'heading4'>\n ): void {\n this.onToolbarClick(command);\n this._blockStylePopoverControl?.close();\n }\n\n protected applyAlign(\n command: Extract<ZEditorToolbarCommand, 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify'>\n ): void {\n this.onToolbarClick(command);\n this._alignPopoverControl?.close();\n }\n\n protected insertEmoji(emoji: string): void {\n this._editor?.chain().focus().insertContent(emoji).run();\n this._refreshEditorState();\n }\n\n protected setEmojiCategory(categoryId: string): void {\n this.activeEmojiCategoryId.set(categoryId);\n this.emojiSearch.set('');\n }\n\n protected onEmojiPopoverControl(control: ZPopoverControl): void {\n this._emojiPopoverControl = control;\n }\n\n protected onEmojiPopoverShow(): void {\n setTimeout(() => {\n const overlay = document.querySelector('.z-editor-emoji-popover');\n const input = overlay?.querySelector('input');\n input?.focus();\n });\n }\n\n protected onBlockStylePopoverControl(control: ZPopoverControl): void {\n this._blockStylePopoverControl = control;\n }\n\n protected onAlignPopoverControl(control: ZPopoverControl): void {\n this._alignPopoverControl = control;\n }\n\n protected onTextColorPopoverControl(control: ZPopoverControl): void {\n this._textColorPopoverControl = control;\n }\n\n protected onBackgroundColorPopoverControl(control: ZPopoverControl): void {\n this._backgroundColorPopoverControl = control;\n }\n\n protected onSlashMenuPopoverControl(control: ZPopoverControl): void {\n this._slashMenuPopoverControl = control;\n }\n\n protected onSlashMenuPopoverHide(): void {\n this.slashMenuState.update(state => ({ ...state, visible: false }));\n this.slashMenuActiveIndex.set(0);\n }\n\n protected onLinkPopoverControl(control: ZPopoverControl): void {\n this._linkPopoverControl = control;\n }\n\n protected onLinkPopoverHide(): void {\n this.linkPopoverState.update(state => ({ ...state, visible: false }));\n this._linkAnchorElement = null;\n }\n\n protected setTextColor(color: string): void {\n this._editor?.chain().focus().setColor(color).run();\n this._textColorPopoverControl?.close();\n this._refreshEditorState();\n }\n\n protected setTextColorFromEvent(event: Event): void {\n const input = event.target as HTMLInputElement | null;\n this.setTextColor(input?.value ?? '');\n }\n\n protected unsetTextColor(): void {\n this._editor?.chain().focus().unsetColor().run();\n this._textColorPopoverControl?.close();\n this._refreshEditorState();\n }\n\n protected setBackgroundColor(color: string): void {\n this._editor?.chain().focus().setBackgroundColor(color).run();\n this._backgroundColorPopoverControl?.close();\n this._refreshEditorState();\n }\n\n protected setBackgroundColorFromEvent(event: Event): void {\n const input = event.target as HTMLInputElement | null;\n this.setBackgroundColor(input?.value ?? '');\n }\n\n protected unsetBackgroundColor(): void {\n this._editor?.chain().focus().unsetBackgroundColor().run();\n this._backgroundColorPopoverControl?.close();\n this._refreshEditorState();\n }\n\n private _handleSlashMenuKeyDown(event: KeyboardEvent): boolean {\n if (!this.slashMenuState().visible) {\n return false;\n }\n\n const commands = this.filteredSlashCommands();\n\n if (event.key === 'Escape' || event.key === 'Tab') {\n this._hideSlashMenu();\n return event.key === 'Escape';\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.slashMenuActiveIndex.update(index => (commands.length ? (index + 1) % commands.length : 0));\n this._scrollActiveSlashMenuItemIntoView();\n return true;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.slashMenuActiveIndex.update(index =>\n commands.length ? (index - 1 + commands.length) % commands.length : 0\n );\n this._scrollActiveSlashMenuItemIntoView();\n return true;\n }\n\n if (event.key === 'Enter') {\n const item = commands[this.slashMenuActiveIndex()];\n if (!item) {\n return false;\n }\n\n event.preventDefault();\n this.applySlashCommand(item);\n return true;\n }\n\n return false;\n }\n\n private _handleEditorShortcutKeyDown(event: KeyboardEvent): boolean {\n if (!this._editor || this.isDisabled() || this.zReadonly() || !this._isPrimaryShortcut(event)) {\n return false;\n }\n\n const key = event.key.toLowerCase();\n const command = this._getShortcutCommand(event, key);\n\n if (!command || this._isToolbarCommandDisabled(command)) {\n return false;\n }\n\n event.preventDefault();\n this.onToolbarClick(command);\n return true;\n }\n\n private _getShortcutCommand(event: KeyboardEvent, key: string): ZEditorToolbarCommand | null {\n if (!event.shiftKey) {\n switch (key) {\n case 'b':\n return 'bold';\n case 'i':\n return 'italic';\n case 'u':\n return 'underline';\n case 'e':\n return 'code';\n case 'k':\n return 'link';\n case '\\\\':\n return 'clearFormatting';\n case 'z':\n return 'undo';\n case 'y':\n return 'redo';\n }\n }\n\n if (event.shiftKey && key === 's') {\n return 'strike';\n }\n\n return null;\n }\n\n private _isPrimaryShortcut(event: KeyboardEvent): boolean {\n return (event.ctrlKey || event.metaKey) && !event.altKey;\n }\n\n private _syncSlashMenu(): void {\n const editor = this._editor;\n\n if (!editor || !editor.isEditable || this.isDisabled() || this.zReadonly()) {\n this._hideSlashMenu();\n return;\n }\n\n const { selection } = editor.state;\n if (!selection.empty) {\n this._hideSlashMenu();\n return;\n }\n\n const { $from } = selection;\n const textBeforeCursor = $from.parent.textBetween(0, $from.parentOffset, '\\0', '\\0');\n const match = /(?:^|\\s)\\/([^\\s/]*)$/.exec(textBeforeCursor);\n\n if (!match) {\n if (!this._isDismissedSlashStillPresent()) {\n this._dismissedSlashMenu = null;\n }\n this._hideSlashMenu();\n return;\n }\n\n const query = match[1] ?? '';\n const from = selection.from - query.length - 1;\n const to = selection.from;\n\n if (\n this._dismissedSlashMenu?.from === from &&\n this._dismissedSlashMenu.to === to &&\n this._dismissedSlashMenu.query === query\n ) {\n this._hideSlashMenu();\n return;\n }\n\n if (this._dismissedSlashMenu) {\n this._dismissedSlashMenu = null;\n }\n\n const coords = editor.view.coordsAtPos(selection.from);\n\n if (this._slashMenuPopoverControl?.isVisible()) {\n this._slashMenuPopoverControl.closeImmediate();\n }\n\n this.slashMenuState.set({\n visible: true,\n query,\n from,\n to,\n left: coords.left,\n top: coords.bottom,\n });\n\n const commandsLength = this.filteredSlashCommands().length;\n if (this.slashMenuActiveIndex() >= commandsLength) {\n this.slashMenuActiveIndex.set(0);\n }\n\n requestAnimationFrame(() => {\n if (this.slashMenuState().visible) {\n this._slashMenuPopoverControl?.show();\n this._scrollActiveSlashMenuItemIntoView();\n }\n });\n }\n\n private _scrollActiveSlashMenuItemIntoView(): void {\n requestAnimationFrame(() => {\n const scrollHost = this._slashMenuScrollHost()?.nativeElement;\n const activeIndex = this.slashMenuActiveIndex();\n const lastIndex = this.filteredSlashCommands().length - 1;\n\n if (!scrollHost) {\n return;\n }\n\n if (activeIndex === 0) {\n scrollHost.scrollTop = 0;\n return;\n }\n\n if (activeIndex === lastIndex) {\n scrollHost.scrollTop = scrollHost.scrollHeight - scrollHost.clientHeight;\n return;\n }\n\n const activeItem = scrollHost?.querySelector('.z-editor-slash-menu-item-active');\n\n if (!(activeItem instanceof HTMLElement)) {\n return;\n }\n\n activeItem.scrollIntoView({ block: 'nearest' });\n });\n }\n\n private _hideSlashMenu(): void {\n if (!this.slashMenuState().visible) {\n return;\n }\n\n this.slashMenuState.update(state => ({ ...state, visible: false }));\n this.slashMenuActiveIndex.set(0);\n this._slashMenuPopoverControl?.closeImmediate();\n }\n\n private _dismissCurrentSlashMenu(): void {\n const { visible, query, from, to } = this.slashMenuState();\n\n if (visible) {\n this._dismissedSlashMenu = { query, from, to };\n this._hideSlashMenu();\n return;\n }\n\n const currentSlashMenuMatch = this._getCurrentSlashMenuMatch();\n if (currentSlashMenuMatch) {\n this._dismissedSlashMenu = currentSlashMenuMatch;\n }\n }\n\n private _getCurrentSlashMenuMatch(): { query: string; from: number; to: number } | null {\n const selection = this._editor?.state.selection;\n\n if (!selection?.empty) {\n return null;\n }\n\n const textBeforeCursor = selection.$from.parent.textBetween(0, selection.$from.parentOffset, '\\0', '\\0');\n const match = /(?:^|\\s)\\/([^\\s/]*)$/.exec(textBeforeCursor);\n\n if (!match) {\n return null;\n }\n\n const query = match[1] ?? '';\n return {\n query,\n from: selection.from - query.length - 1,\n to: selection.from,\n };\n }\n\n private _isDismissedSlashStillPresent(): boolean {\n const dismissed = this._dismissedSlashMenu;\n const doc = this._editor?.state.doc;\n\n if (!dismissed || !doc || dismissed.from < 0 || dismissed.from >= doc.content.size) {\n return false;\n }\n\n return doc.textBetween(dismissed.from, dismissed.from + 1, '\\0', '\\0') === '/';\n }\n\n private _toggleLink(): void {\n const editor = this._editor;\n\n if (!editor) {\n return;\n }\n\n const { from, to } = editor.state.selection;\n this._linkAnchorElement = null;\n this._linkSelection = { from, to };\n const href = String(editor.getAttributes('link')['href'] ?? '');\n this.activeLinkHref.set(href);\n this.linkUrl.set(href);\n this._showLinkPopover();\n }\n\n protected closeLinkPopover(): void {\n this.linkPopoverState.update(state => ({ ...state, visible: false }));\n this._linkAnchorElement = null;\n this._linkPopoverControl?.closeImmediate();\n }\n\n protected onLinkUrlChange(value: string | number | null): void {\n this.linkUrl.set(String(value ?? ''));\n }\n\n protected applyLink(): void {\n const editor = this._editor;\n const href = this.normalizedLinkUrl();\n const selection = this._linkSelection;\n\n if (!editor || !href || !selection) {\n return;\n }\n\n editor.chain().focus().setTextSelection(selection).extendMarkRange('link').setLink({ href }).run();\n this.closeLinkPopover();\n this._refreshEditorState();\n }\n\n private _normalizeUrl(value: string): string {\n const trimmed = value.trim();\n\n if (!trimmed) {\n return '';\n }\n\n try {\n const url = new URL(trimmed);\n return url.protocol === 'http:' || url.protocol === 'https:' ? url.toString() : '';\n } catch {\n return '';\n }\n }\n\n protected removeLink(): void {\n const editor = this._editor;\n const selection = this._linkSelection;\n\n if (!editor || !selection) {\n this.closeLinkPopover();\n return;\n }\n\n editor.chain().focus().setTextSelection(selection).extendMarkRange('link').unsetLink().run();\n this.closeLinkPopover();\n this._refreshEditorState();\n }\n\n protected openActiveLink(): void {\n const href = this.activeLinkHref();\n\n if (!href) {\n return;\n }\n\n window.open(href, '_blank', 'noopener,noreferrer');\n }\n\n private _handleEditorClick(view: EditorView, event: MouseEvent): boolean {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const link = target?.closest('a[href]');\n\n if (!(link instanceof HTMLAnchorElement) || this.isDisabled() || this.zReadonly()) {\n return false;\n }\n\n if (event.detail >= 2) {\n this.closeLinkPopover();\n return false;\n }\n\n const position = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (!position) {\n return false;\n }\n\n event.preventDefault();\n view.dispatch(view.state.tr.setSelection(TextSelection.near(view.state.doc.resolve(position.pos))));\n this._editor?.chain().focus().run();\n\n const selection = this._editor?.state.selection;\n if (!selection) {\n return true;\n }\n\n this._linkSelection = { from: selection.from, to: selection.to };\n this._linkAnchorElement = link;\n const href = link.href || link.getAttribute('href') || '';\n this.activeLinkHref.set(href);\n this.linkUrl.set(href);\n this._showLinkPopover();\n return true;\n }\n\n private _showLinkPopover(): void {\n const rect = this._getLinkPopoverReferenceRect();\n\n if (!rect) {\n return;\n }\n\n this.linkPopoverState.set({\n visible: true,\n left: rect.left,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n });\n\n requestAnimationFrame(() => {\n if (this.linkPopoverState().visible) {\n this._linkPopoverControl?.show();\n }\n });\n }\n\n private _getLinkPopoverReferenceRect(): DOMRect | null {\n const anchorRect = this._getLinkAnchorRect();\n if (anchorRect) {\n return anchorRect;\n }\n\n const editor = this._editor;\n const selection = this._linkSelection;\n\n if (!editor || !selection) {\n return null;\n }\n\n return posToDOMRect(editor.view, selection.from, selection.to);\n }\n\n private _getLinkAnchorRect(): DOMRect | null {\n const anchor = this._linkAnchorElement;\n\n if (!anchor || !this._editorHost().nativeElement.contains(anchor)) {\n return null;\n }\n\n const rect = anchor.getBoundingClientRect();\n if (rect.width === 0 && rect.height === 0) {\n return null;\n }\n\n return rect;\n }\n\n private _insertImage(): void {\n const editor = this._editor;\n\n if (!editor) {\n return;\n }\n\n const selectionFrom = editor.state.selection.from;\n const input = document.createElement('input');\n input.type = 'file';\n input.accept = 'image/*';\n input.style.display = 'none';\n\n const removeInput = (): void => {\n input.remove();\n };\n\n input.addEventListener(\n 'change',\n () => {\n const file = input.files?.[0];\n if (!file) {\n removeInput();\n return;\n }\n\n const reader = new FileReader();\n reader.addEventListener('load', () => {\n const src = typeof reader.result === 'string' ? reader.result : '';\n if (src) {\n editor.chain().focus().setTextSelection(selectionFrom).setImage({ src, alt: file.name }).run();\n }\n\n removeInput();\n });\n reader.addEventListener('error', removeInput);\n reader.readAsDataURL(file);\n },\n { once: true }\n );\n\n document.body.appendChild(input);\n input.click();\n }\n\n private _setTextAlign(alignment: 'left' | 'center' | 'right' | 'justify'): void {\n const editor = this._editor;\n\n if (!editor) {\n return;\n }\n\n const command =\n alignment === 'left' ? editor.chain().focus().unsetTextAlign() : editor.chain().focus().setTextAlign(alignment);\n command.run();\n }\n\n private _collapseSelectionToAnchor(): void {\n const editor = this._editor;\n\n if (!editor) {\n return;\n }\n\n const { from } = editor.state.selection;\n editor.commands.setTextSelection(from);\n editor.view.dispatch(editor.state.tr.setMeta('zEditorBubbleMenu', 'updatePosition'));\n }\n\n private _getTextStyleAttribute(attribute: 'color' | 'backgroundColor'): string {\n this._selectionVersion();\n return String(this._editor?.getAttributes('textStyle')[attribute] ?? '');\n }\n\n private _getActiveBlockStyle(): Extract<\n ZEditorToolbarCommand,\n 'paragraph' | 'heading1' | 'heading2' | 'heading3' | 'heading4'\n > {\n const editor = this._editor;\n this._selectionVersion();\n\n if (!editor) {\n return 'paragraph';\n }\n\n if (editor.isActive('heading', { level: 1 })) {\n return 'heading1';\n }\n\n if (editor.isActive('heading', { level: 2 })) {\n return 'heading2';\n }\n\n if (editor.isActive('heading', { level: 3 })) {\n return 'heading3';\n }\n\n if (editor.isActive('heading', { level: 4 })) {\n return 'heading4';\n }\n\n return 'paragraph';\n }\n\n private _getActiveAlign(): Extract<\n ZEditorToolbarCommand,\n 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify'\n > {\n const editor = this._editor;\n this._selectionVersion();\n\n if (!editor) {\n return 'alignLeft';\n }\n\n return this._getActiveAlignFromEditor(editor);\n }\n\n private _getActiveAlignFromEditor(\n editor: Editor\n ): Extract<ZEditorToolbarCommand, 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify'> {\n if (editor.isActive({ textAlign: 'center' })) {\n return 'alignCenter';\n }\n\n if (editor.isActive({ textAlign: 'right' })) {\n return 'alignRight';\n }\n\n if (editor.isActive({ textAlign: 'justify' })) {\n return 'alignJustify';\n }\n\n return 'alignLeft';\n }\n\n private _createImageExtension(options: Record<string, unknown>): AnyExtension {\n return ImageResize.extend({\n addAttributes() {\n return {\n ...this.parent?.(),\n textAlign: {\n default: null,\n parseHTML: element => element.style.textAlign || element.getAttribute('data-text-align') || null,\n renderHTML: attributes => {\n const textAlign = String(attributes['textAlign'] ?? '');\n if (!textAlign) {\n return {};\n }\n\n return {\n 'data-text-align': textAlign,\n style: ZEditorComponent._getImageAlignStyle(textAlign),\n };\n },\n },\n };\n },\n }).configure(options);\n }\n\n private static _getImageAlignStyle(textAlign: string): string {\n if (textAlign === 'center') {\n return 'display: block; margin-left: auto; margin-right: auto;';\n }\n\n if (textAlign === 'right') {\n return 'display: block; margin-left: auto; margin-right: 0;';\n }\n\n return 'display: block; margin-left: 0; margin-right: auto;';\n }\n\n private _placeholderConfig(): Partial<PlaceholderOptions> {\n const { placeholder } = this.zTipTap();\n\n if (!placeholder || typeof placeholder === 'string') {\n return {};\n }\n\n const { mode: _mode, ...config } = placeholder;\n return config;\n }\n\n private _placeholderMode(): 'firstLine' | 'everyLine' {\n const { placeholder } = this.zTipTap();\n return typeof placeholder === 'object' && placeholder.mode === 'firstLine' ? 'firstLine' : 'everyLine';\n }\n}\n","<div [class]=\"wrapperClasses()\" [class.z-editor-disabled]=\"isDisabled()\" [class.z-editor-readonly]=\"zReadonly()\">\n @if (zLabel()) {\n <label [for]=\"editorId\" class=\"text-xs leading-none font-medium\" [class]=\"zLabelClass()\">\n {{ zLabel() }}\n @if (zRequired()) {\n <span class=\"text-destructive! ml-0.5\">*</span>\n }\n </label>\n }\n\n <div [class]=\"editorClasses()\">\n @if (showToolbar()) {\n <div class=\"z-editor-toolbar\" role=\"toolbar\" [attr.aria-controls]=\"editorId\">\n @for (item of toolbarItems(); track item.id) {\n @switch (item.id) {\n @case ('emoji') {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"emojiPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-emoji-popover\"\n (zControl)=\"onEmojiPopoverControl($event)\"\n (zShow)=\"onEmojiPopoverShow()\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n @case ('blockStyle') {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"blockStylePopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-menu-popover\"\n (zControl)=\"onBlockStylePopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n @case ('textColor') {\n @let textColor = activeTextColor();\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"textColorPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-color-popover\"\n (zControl)=\"onTextColorPopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span class=\"z-editor-color-indicator\" [style.background]=\"textColor\"></span>\n </button>\n }\n @case ('backgroundColor') {\n @let bgColor = activeBackgroundColor();\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"backgroundColorPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-color-popover\"\n (zControl)=\"onBackgroundColorPopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span class=\"z-editor-color-indicator\" [style.background]=\"bgColor\"></span>\n </button>\n }\n @case ('align') {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"alignPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-menu-popover\"\n (zControl)=\"onAlignPopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\">\n <i z-icon [zType]=\"activeAlignIcon()\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n @default {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n [class.z-editor-toolbar-button-active]=\"item.active\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\"\n (click)=\"onToolbarClick(item.id)\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n }\n }\n </div>\n }\n\n <div\n #editorHost\n [id]=\"editorId\"\n class=\"z-editor-content\"\n role=\"textbox\"\n [attr.aria-multiline]=\"true\"\n [attr.aria-readonly]=\"isDisabled() || zReadonly()\"></div>\n </div>\n\n @if (hasError()) {\n <p class=\"text-destructive animate-in fade-in slide-in-from-top-1 m-0 text-xs duration-200\">\n {{ errorMessage() }}\n </p>\n }\n\n <ng-template #emojiPopover>\n @let emojiCategoryLabel =\n emojiSearchQuery() ? ('i18n_z_ui_emoji_search_results' | translate) : (activeEmojiCategoryLabel() | translate);\n @let activeCategoryId = activeEmojiCategoryId();\n <div class=\"z-editor-emoji-sheet\">\n <div class=\"z-editor-emoji-header\">\n <div class=\"z-editor-emoji-title mb-1\">\n <span class=\"z-editor-emoji-title-dot\" aria-hidden=\"true\"></span>\n <span>{{ emojiCategoryLabel }}</span>\n </div>\n <z-input\n class=\"z-editor-emoji-search\"\n zSize=\"sm\"\n [zSearch]=\"true\"\n [zDebounce]=\"150\"\n [zPlaceholder]=\"'i18n_z_ui_emoji_search_placeholder' | translate\"\n [ngModel]=\"emojiSearch()\"\n (zOnSearch)=\"emojiSearch.set($any($event))\" />\n </div>\n <div class=\"z-editor-emoji-body\">\n @if (hasEmojiResults()) {\n <div class=\"z-editor-emoji-grid\">\n @for (emoji of activeEmojis(); track emoji) {\n <button\n type=\"button\"\n class=\"z-editor-emoji-button\"\n [attr.aria-label]=\"emoji\"\n (click)=\"insertEmoji($any(emoji))\">\n {{ emoji }}\n </button>\n }\n </div>\n } @else {\n <div class=\"z-editor-emoji-empty\">\n <span class=\"z-editor-emoji-empty-icon\" aria-hidden=\"true\">\n <i z-icon zType=\"lucideSearchX\" zSize=\"14\" [zStrokeWidth]=\"2\"></i>\n </span>\n <span>{{ 'i18n_z_ui_emoji_no_results' | translate }}</span>\n </div>\n }\n </div>\n <div class=\"z-editor-emoji-footer\" role=\"tablist\">\n @for (category of emojiCategories; track category.id) {\n <button\n type=\"button\"\n role=\"tab\"\n class=\"z-editor-emoji-footer-button cursor-pointer!\"\n [class.z-editor-emoji-footer-button-active]=\"category.id === activeCategoryId\"\n [attr.aria-label]=\"category.labelKey | translate\"\n [attr.aria-selected]=\"category.id === activeCategoryId\"\n [attr.title]=\"category.labelKey | translate\"\n (click)=\"setEmojiCategory(category.id)\">\n <i z-icon [zType]=\"category.icon\" zSize=\"15\" [zStrokeWidth]=\"2\"></i>\n </button>\n }\n </div>\n </div>\n </ng-template>\n\n <ng-template #blockStylePopover>\n <div class=\"z-editor-menu-list\">\n @for (option of blockStyleOptions; track option.command) {\n <button\n type=\"button\"\n class=\"z-editor-menu-item\"\n [class.z-editor-menu-item-active]=\"activeBlockStyle() === option.command\"\n (click)=\"applyBlockStyle(option.command)\">\n <i z-icon [zType]=\"option.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </ng-template>\n\n <ng-template #alignPopover>\n <div class=\"z-editor-menu-list\">\n @for (option of alignOptions; track option.command) {\n <button\n type=\"button\"\n class=\"z-editor-menu-item\"\n [class.z-editor-menu-item-active]=\"activeAlign() === option.command\"\n (click)=\"applyAlign(option.command)\">\n <i z-icon [zType]=\"option.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </ng-template>\n\n <ng-template #textColorPopover>\n @let currentTextColor = activeTextColor();\n <div class=\"z-editor-color-grid\">\n @for (color of textColorSwatches; track color) {\n <button\n type=\"button\"\n class=\"z-editor-color-swatch\"\n [class.z-editor-color-swatch-active]=\"currentTextColor === color\"\n [style.background]=\"color\"\n [attr.aria-label]=\"'Text color ' + color\"\n (click)=\"setTextColor(color)\"></button>\n }\n <label class=\"z-editor-color-custom\">\n <input type=\"color\" [value]=\"currentTextColor\" (input)=\"setTextColorFromEvent($event)\" />\n {{ currentTextColor }}\n </label>\n <button type=\"button\" z-button zType=\"outline\" zSize=\"sm\" class=\"z-editor-color-reset\" (click)=\"unsetTextColor()\">\n Reset\n </button>\n </div>\n </ng-template>\n\n <ng-template #backgroundColorPopover>\n @let currentBgColor = activeBackgroundColor();\n <div class=\"z-editor-color-grid\">\n @for (color of backgroundColorSwatches; track color) {\n <button\n type=\"button\"\n class=\"z-editor-color-swatch\"\n [class.z-editor-color-swatch-active]=\"currentBgColor === color\"\n [style.background]=\"color\"\n [attr.aria-label]=\"'Background color ' + color\"\n (click)=\"setBackgroundColor(color)\"></button>\n }\n <label class=\"z-editor-color-custom\">\n <input type=\"color\" [value]=\"currentBgColor\" (input)=\"setBackgroundColorFromEvent($event)\" />\n {{ currentBgColor }}\n </label>\n <button\n type=\"button\"\n z-button\n zType=\"outline\"\n zSize=\"sm\"\n class=\"z-editor-color-reset\"\n (click)=\"unsetBackgroundColor()\">\n Reset\n </button>\n </div>\n </ng-template>\n\n <div #floatingToolbar class=\"z-editor-floating-toolbar\" role=\"toolbar\" [attr.aria-controls]=\"editorId\">\n @for (item of floatingToolbarItems(); track item.id) {\n @switch (item.id) {\n @case ('blockStyle') {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"blockStylePopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-menu-popover\"\n (zControl)=\"onBlockStylePopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"activeBlockStyleLabel()\"\n (mousedown)=\"$event.preventDefault()\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n @case ('textColor') {\n @let textColor = activeTextColor();\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"textColorPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-color-popover\"\n (zControl)=\"onTextColorPopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\"\n (mousedown)=\"$event.preventDefault()\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span class=\"z-editor-color-indicator\" [style.background]=\"textColor\"></span>\n </button>\n }\n @case ('backgroundColor') {\n @let bgColor = activeBackgroundColor();\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"backgroundColorPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-color-popover\"\n (zControl)=\"onBackgroundColorPopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\"\n (mousedown)=\"$event.preventDefault()\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span class=\"z-editor-color-indicator\" [style.background]=\"bgColor\"></span>\n </button>\n }\n @case ('align') {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-popover\n [zPopoverContent]=\"alignPopover\"\n zPosition=\"bottom-left\"\n zTrigger=\"click\"\n zClass=\"z-editor-menu-popover\"\n (zControl)=\"onAlignPopoverControl($event)\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"activeAlignLabel()\"\n (mousedown)=\"$event.preventDefault()\">\n <i z-icon [zType]=\"activeAlignIcon()\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n @default {\n <button\n type=\"button\"\n class=\"z-editor-toolbar-button\"\n z-tooltip\n [zContent]=\"item.tooltip\"\n zPosition=\"top\"\n [zAlwaysShow]=\"true\"\n [zDisabled]=\"item.disabled || !item.shortcut\"\n [class.z-editor-toolbar-button-active]=\"item.active\"\n [disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.title]=\"item.label\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"onFloatingToolbarClick(item.id)\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n </button>\n }\n }\n }\n </div>\n\n <span\n class=\"z-editor-slash-menu-trigger\"\n z-popover\n [zPopoverContent]=\"slashMenuPopover\"\n zTrigger=\"manual\"\n zPosition=\"bottom-left\"\n zClass=\"z-editor-slash-popover\"\n [zOffset]=\"4\"\n [zPopoverWidth]=\"300\"\n [style.left.px]=\"slashMenuState().left\"\n [style.top.px]=\"slashMenuState().top\"\n (zControl)=\"onSlashMenuPopoverControl($event)\"\n (zHide)=\"onSlashMenuPopoverHide()\"></span>\n\n <ng-template #slashMenuPopover>\n @let slashActiveIndex = slashMenuActiveIndex();\n <div class=\"z-editor-slash-menu-shell\">\n <div #slashMenuScrollHost class=\"z-editor-slash-menu-scrollbar\">\n <div class=\"z-editor-slash-menu\" role=\"listbox\" [attr.aria-controls]=\"editorId\">\n @for (item of filteredSlashCommands(); track item.id) {\n @if (item.showGroupLabel) {\n <div class=\"z-editor-slash-menu-group\">\n {{ item.group }}\n </div>\n }\n <button\n type=\"button\"\n class=\"z-editor-slash-menu-item\"\n role=\"option\"\n [class.z-editor-slash-menu-item-active]=\"$index === slashActiveIndex\"\n [attr.aria-selected]=\"$index === slashActiveIndex\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"applySlashCommand(item)\">\n <i z-icon [zType]=\"item.icon\" zSize=\"16\" [zStrokeWidth]=\"2.5\"></i>\n <span class=\"z-editor-slash-menu-copy\">\n <span class=\"z-editor-slash-menu-label\">{{ item.label }}</span>\n </span>\n </button>\n } @empty {\n <div class=\"z-editor-slash-menu-empty\">\n <i z-icon zType=\"lucideSearchX\" zSize=\"28\" [zStrokeWidth]=\"1.8\"></i>\n <span>{{ 'i18n_z_ui_editor_no_commands' | translate }}</span>\n </div>\n }\n </div>\n </div>\n <div class=\"z-editor-slash-menu-footer\" aria-hidden=\"true\">\n <span>\n <kbd>↑↓</kbd>\n {{ 'i18n_z_ui_editor_shortcut_navigate' | translate }}\n </span>\n <span>\n <kbd>Esc</kbd>\n {{ 'i18n_z_ui_editor_shortcut_abort' | translate }}\n </span>\n <span>\n <kbd>↵</kbd>\n {{ 'i18n_z_ui_editor_shortcut_select' | translate }}\n </span>\n </div>\n </div>\n </ng-template>\n\n <span\n class=\"z-editor-link-popover-trigger\"\n z-popover\n [zPopoverContent]=\"linkPopover\"\n zTrigger=\"manual\"\n zPosition=\"bottom-left\"\n zClass=\"z-editor-link-popover\"\n [zOffset]=\"6\"\n [zPopoverWidth]=\"320\"\n [style.left.px]=\"linkPopoverState().left\"\n [style.top.px]=\"linkPopoverState().top\"\n [style.width.px]=\"linkPopoverState().width\"\n [style.height.px]=\"linkPopoverState().height\"\n (zControl)=\"onLinkPopoverControl($event)\"\n (zHide)=\"onLinkPopoverHide()\"></span>\n\n <ng-template #linkPopover>\n <div class=\"z-editor-link-popover-content\">\n <ng-template #linkPrefix>\n <z-icon zType=\"lucideLink\" zSize=\"16\" class=\"text-muted-foreground\" />\n </ng-template>\n <z-input\n zType=\"url\"\n zSize=\"sm\"\n class=\"z-editor-link-popover-input\"\n [zPrefix]=\"linkPrefix\"\n zPlaceholder=\"https://example.com\"\n [zValidators]=\"linkValidators\"\n [ngModel]=\"linkUrl()\"\n (ngModelChange)=\"onLinkUrlChange($event)\"\n (zOnEnter)=\"applyLink()\" />\n <div class=\"z-editor-link-popover-actions\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n [zDisabled]=\"!canApplyLink()\"\n (click)=\"applyLink()\"\n aria-label=\"Apply link\">\n <z-icon zType=\"lucideCheck\" zSize=\"16\" [zStrokeWidth]=\"2.5\" />\n </button>\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n [zDisabled]=\"!activeLinkHref()\"\n (click)=\"openActiveLink()\"\n aria-label=\"Open link\">\n <z-icon zType=\"lucideExternalLink\" zSize=\"16\" [zStrokeWidth]=\"2.5\" />\n </button>\n <button\n type=\"button\"\n z-button\n zType=\"ghost-destructive\"\n zSize=\"sm\"\n [zDisabled]=\"!activeLinkHref()\"\n (click)=\"removeLink()\"\n aria-label=\"Remove link\">\n <z-icon zType=\"lucideUnlink\" zSize=\"16\" [zStrokeWidth]=\"2.5\" />\n </button>\n </div>\n </div>\n </ng-template>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}