ngx-tiptap
Version:
Angular bindings for tiptap v2
1 lines • 32.1 kB
Source Map (JSON)
{"version":3,"file":"ngx-tiptap.mjs","sources":["../../../projects/ngx-tiptap/src/lib/editor.directive.ts","../../../projects/ngx-tiptap/src/lib/floating-menu.directive.ts","../../../projects/ngx-tiptap/src/lib/bubble-menu.directive.ts","../../../projects/ngx-tiptap/src/lib/draggable.directive.ts","../../../projects/ngx-tiptap/src/lib/node-view-content.directive.ts","../../../projects/ngx-tiptap/src/lib/node-view.component.ts","../../../projects/ngx-tiptap/src/lib/ngx-tiptap.module.ts","../../../projects/ngx-tiptap/src/lib/AngularRenderer.ts","../../../projects/ngx-tiptap/src/lib/NodeViewRenderer.ts","../../../projects/ngx-tiptap/src/public-api.ts","../../../projects/ngx-tiptap/src/ngx-tiptap.ts"],"sourcesContent":["import {\n AfterViewInit, ChangeDetectorRef, Directive,\n ElementRef, forwardRef, Input, OnInit, Renderer2,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Content, Editor, type EditorEvents } from '@tiptap/core';\n\n@Directive({\n selector: 'tiptap[editor], [tiptap][editor], tiptap-editor[editor], [tiptapEditor][editor]',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EditorDirective),\n multi: true,\n }],\n})\n\nexport class EditorDirective implements OnInit, AfterViewInit, ControlValueAccessor {\n @Input() editor!: Editor;\n @Input() outputFormat: 'json' | 'html' = 'html';\n\n constructor(\n protected elRef: ElementRef<HTMLElement>,\n protected renderer: Renderer2,\n protected changeDetectorRef: ChangeDetectorRef,\n ) { }\n\n protected onChange: (value: Content) => void = () => { /** */ };\n protected onTouched: () => void = () => { /** */ };\n\n // Writes a new value to the element.\n // This methods is called when programmatic changes from model to view are requested.\n writeValue(value: Content): void {\n if (!this.outputFormat && typeof value === 'string') {\n this.outputFormat = 'html';\n }\n\n this.editor.chain().setContent(value, false).run();\n }\n\n // Registers a callback function that is called when the control's value changes in the UI.\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n // Registers a callback function that is called by the forms API on initialization to update the form model on blur.\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Called by the forms api to enable or disable the element\n setDisabledState(isDisabled: boolean): void {\n this.editor.setEditable(!isDisabled);\n this.renderer.setProperty(this.elRef.nativeElement, 'disabled', isDisabled);\n }\n\n protected handleChange = ({ editor, transaction }: EditorEvents['transaction']): void => {\n if (!transaction.docChanged) {\n return;\n }\n\n // Needed for ChangeDetectionStrategy.OnPush to get notified about changes\n this.changeDetectorRef.markForCheck();\n\n if (this.outputFormat === 'html') {\n this.onChange(editor.getHTML());\n return;\n }\n\n this.onChange(editor.getJSON());\n };\n\n ngOnInit(): void {\n if (!this.editor) {\n throw new Error('Required: Input `editor`');\n }\n\n // take the inner contents and clear the block\n const { innerHTML } = this.elRef.nativeElement;\n this.elRef.nativeElement.innerHTML = '';\n\n // insert the editor in the dom\n this.elRef.nativeElement.append(...Array.from(this.editor.options.element.childNodes));\n\n // update the options for the editor\n this.editor.setOptions({ element: this.elRef.nativeElement });\n\n // update content to the editor\n if (innerHTML) {\n this.editor.chain().setContent(innerHTML, false).run();\n }\n\n // register blur handler to update `touched` property\n this.editor.on('blur', () => {\n this.onTouched();\n });\n\n // register update handler to listen to changes on update\n this.editor.on('update', this.handleChange);\n\n // Needed for ChangeDetectionStrategy.OnPush to get notified\n this.editor.on('selectionUpdate', () => this.changeDetectorRef.markForCheck());\n }\n\n ngAfterViewInit(): void {\n this.changeDetectorRef.detectChanges();\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Editor } from '@tiptap/core';\nimport { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu';\n\n@Directive({\n selector: 'tiptap-floating-menu[editor], [tiptapFloatingMenu][editor]',\n})\n\nexport class FloatingMenuDirective implements OnInit, OnDestroy {\n @Input() pluginKey: FloatingMenuPluginProps['pluginKey'] = 'NgxTiptapFloatingMenu';\n @Input() editor!: Editor;\n @Input() tippyOptions: FloatingMenuPluginProps['tippyOptions'] = {};\n @Input() shouldShow: FloatingMenuPluginProps['shouldShow'] = null;\n\n constructor(private elRef: ElementRef<HTMLElement>) { }\n\n ngOnInit(): void {\n if (!this.editor) {\n throw new Error('Required: Input `editor`');\n }\n\n this.editor.registerPlugin(FloatingMenuPlugin({\n pluginKey: this.pluginKey,\n editor: this.editor,\n element: this.elRef.nativeElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n }));\n }\n\n ngOnDestroy(): void {\n this.editor.unregisterPlugin(this.pluginKey);\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Editor } from '@tiptap/core';\nimport { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu';\n\n@Directive({\n selector: 'tiptap-bubble-menu[editor], [tiptapBubbleMenu][editor]',\n})\nexport class BubbleMenuDirective implements OnInit, OnDestroy {\n @Input() pluginKey: BubbleMenuPluginProps['pluginKey'] = 'NgxTiptapBubbleMenu';\n @Input() editor!: Editor;\n @Input() tippyOptions: BubbleMenuPluginProps['tippyOptions'] = {};\n @Input() shouldShow: BubbleMenuPluginProps['shouldShow'] = null;\n @Input() updateDelay: BubbleMenuPluginProps['updateDelay'];\n\n constructor(private elRef: ElementRef<HTMLElement>) { }\n\n ngOnInit(): void {\n if (!this.editor) {\n throw new Error('Required: Input `editor`');\n }\n\n this.editor.registerPlugin(BubbleMenuPlugin({\n pluginKey: this.pluginKey,\n editor: this.editor,\n element: this.elRef.nativeElement,\n tippyOptions: this.tippyOptions,\n shouldShow: this.shouldShow,\n updateDelay: this.updateDelay,\n }));\n }\n\n ngOnDestroy(): void {\n this.editor.unregisterPlugin(this.pluginKey);\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tiptapDraggable]',\n})\nexport class DraggableDirective {\n @HostBinding('attr.draggable') draggable = true;\n @HostBinding('attr.data-drag-handle') handle = '';\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tiptapNodeViewContent]',\n})\nexport class NodeViewContentDirective {\n @HostBinding('attr.data-node-view-content') handle = '';\n @HostBinding('style.white-space') whiteSpace = 'pre-wrap';\n}\n","import { Component, Input } from '@angular/core';\nimport type { NodeViewProps } from '@tiptap/core';\n\n@Component({ template: '' })\nexport class AngularNodeViewComponent implements NodeViewProps {\n @Input() editor!: NodeViewProps['editor'];\n @Input() node!: NodeViewProps['node'];\n @Input() decorations!: NodeViewProps['decorations'];\n @Input() innerDecorations!: NodeViewProps['innerDecorations'];\n @Input() view!: NodeViewProps['view'];\n @Input() selected!: NodeViewProps['selected'];\n @Input() extension!: NodeViewProps['extension'];\n @Input() HTMLAttributes!: NodeViewProps['HTMLAttributes'];\n @Input() getPos!: NodeViewProps['getPos'];\n @Input() updateAttributes!: NodeViewProps['updateAttributes'];\n @Input() deleteNode!: NodeViewProps['deleteNode'];\n}\n","import { NgModule } from '@angular/core';\n\nimport { EditorDirective } from './editor.directive';\nimport { FloatingMenuDirective } from './floating-menu.directive';\nimport { BubbleMenuDirective } from './bubble-menu.directive';\nimport { DraggableDirective } from './draggable.directive';\nimport { NodeViewContentDirective } from './node-view-content.directive';\n\n@NgModule({\n declarations: [\n EditorDirective,\n FloatingMenuDirective,\n BubbleMenuDirective,\n DraggableDirective,\n NodeViewContentDirective,\n ],\n exports: [\n EditorDirective,\n FloatingMenuDirective,\n BubbleMenuDirective,\n DraggableDirective,\n NodeViewContentDirective,\n ],\n})\nexport class NgxTiptapModule { }\n","import {\n ApplicationRef, ComponentRef, ElementRef,\n Injector, Type, createComponent,\n} from '@angular/core';\n\nexport class AngularRenderer<C, P> {\n private applicationRef: ApplicationRef;\n private componentRef: ComponentRef<C>;\n\n constructor(ViewComponent: Type<C>, injector: Injector, props: Partial<P>) {\n this.applicationRef = injector.get(ApplicationRef);\n\n this.componentRef = createComponent(ViewComponent, {\n environmentInjector: this.applicationRef.injector,\n elementInjector: injector,\n });\n\n // set input props to the component\n this.updateProps(props);\n\n this.applicationRef.attachView(this.componentRef.hostView);\n }\n\n get instance(): C {\n return this.componentRef.instance;\n }\n\n get elementRef(): ElementRef {\n return this.componentRef.injector.get(ElementRef);\n }\n\n get dom(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n updateProps<T extends P>(props: Partial<T>): void {\n Object.entries(props).forEach(([key, value]) => {\n this.componentRef.setInput(key, value);\n });\n }\n\n updateAttributes(attributes: Record<string, string>): void {\n Object.keys(attributes).forEach((key) => {\n this.dom.setAttribute(key, attributes[key]);\n });\n }\n\n detectChanges(): void {\n this.componentRef.changeDetectorRef.detectChanges();\n }\n\n destroy(): void {\n this.componentRef.destroy();\n this.applicationRef.detachView(this.componentRef.hostView);\n }\n}\n","import { Injector, Type } from '@angular/core';\nimport {\n Editor, NodeView, NodeViewProps,\n NodeViewRenderer, NodeViewRendererProps, NodeViewRendererOptions, DecorationWithType,\n getRenderedAttributes,\n} from '@tiptap/core';\nimport type { Decoration, DecorationSource } from '@tiptap/pm/view';\nimport type { Node as ProseMirrorNode } from '@tiptap/pm/model';\n\nimport { AngularRenderer } from './AngularRenderer';\nimport { AngularNodeViewComponent } from './node-view.component';\n\ninterface RendererUpdateProps {\n oldNode: ProseMirrorNode;\n oldDecorations: readonly Decoration[];\n oldInnerDecorations: DecorationSource;\n newNode: ProseMirrorNode;\n newDecorations: readonly Decoration[];\n innerDecorations: DecorationSource;\n updateProps: () => void;\n}\n\ntype AttrProps = Record<string, string>\n| ((props: {\n node: ProseMirrorNode;\n HTMLAttributes: Record<string, any>;\n}) => Record<string, string>);\n\ninterface AngularNodeViewRendererOptions extends NodeViewRendererOptions {\n update?: ((props: RendererUpdateProps) => boolean) | null;\n injector: Injector;\n attrs?: AttrProps;\n}\n\nclass AngularNodeView extends NodeView<Type<AngularNodeViewComponent>, Editor, AngularNodeViewRendererOptions> {\n renderer!: AngularRenderer<AngularNodeViewComponent, NodeViewProps>;\n contentDOMElement!: HTMLElement | null;\n\n override mount() {\n const injector = this.options.injector as Injector;\n\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations as DecorationWithType[],\n innerDecorations: this.innerDecorations,\n view: this.view,\n selected: false,\n extension: this.extension,\n HTMLAttributes: this.HTMLAttributes,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n };\n\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n this.editor.on('selectionUpdate', this.handleSelectionUpdate);\n\n // create renderer\n this.renderer = new AngularRenderer(this.component, injector, props);\n\n // Register drag handler\n if (this.extension.config.draggable) {\n this.renderer.elementRef.nativeElement.ondragstart = (e: DragEvent) => {\n this.onDragStart(e);\n };\n }\n\n this.contentDOMElement = this.node.isLeaf ? null : document.createElement(this.node.isInline ? 'span' : 'div');\n\n if (this.contentDOMElement) {\n // For some reason the whiteSpace prop is not inherited properly in Chrome and Safari\n // With this fix it seems to work fine\n // See: https://github.com/ueberdosis/tiptap/issues/1197\n this.contentDOMElement.style.whiteSpace = 'inherit';\n\n // Required for editable node views\n // The content won't be rendered if `editable` is set to `false`\n this.renderer.detectChanges();\n }\n\n this.appendContendDom();\n this.updateElementAttributes();\n }\n\n override get dom() {\n return this.renderer.dom;\n }\n\n override get contentDOM() {\n if (this.node.isLeaf) {\n return null;\n }\n\n return this.contentDOMElement;\n }\n\n private appendContendDom() {\n const contentElement = this.dom.querySelector('[data-node-view-content]');\n\n if (\n this.contentDOMElement\n && contentElement\n && !contentElement.contains(this.contentDOMElement)\n ) {\n contentElement.appendChild(this.contentDOMElement);\n }\n }\n\n handleSelectionUpdate() {\n const { from, to } = this.editor.state.selection;\n const pos = this.getPos();\n\n if (typeof pos !== 'number') {\n return;\n }\n\n if (from <= pos && to >= pos + this.node.nodeSize) {\n if (this.renderer.instance.selected) {\n return;\n }\n\n this.selectNode();\n } else {\n if (!this.renderer.instance.selected) {\n return;\n }\n\n this.deselectNode();\n }\n }\n\n update(node: ProseMirrorNode, decorations: readonly Decoration[], innerDecorations: DecorationSource): boolean {\n const updateProps = (props: Partial<NodeViewProps>) => {\n this.renderer.updateProps(props);\n\n if (typeof this.options.attrs === 'function') {\n this.updateElementAttributes();\n }\n };\n\n if (this.options.update) {\n const oldNode = this.node;\n const oldDecorations = this.decorations;\n const oldInnerDecorations = this.innerDecorations;\n\n this.node = node;\n this.decorations = decorations;\n this.innerDecorations = innerDecorations;\n\n return this.options.update({\n oldNode,\n oldDecorations,\n oldInnerDecorations,\n newNode: node,\n newDecorations: decorations,\n innerDecorations: this.innerDecorations,\n updateProps: () => updateProps({\n node,\n decorations: decorations as DecorationWithType[],\n innerDecorations,\n }),\n });\n }\n\n if (node.type !== this.node.type) {\n return false;\n }\n\n if (\n node === this.node\n && this.decorations === decorations\n && this.innerDecorations === innerDecorations\n ) {\n return true;\n }\n\n this.node = node;\n this.decorations = decorations;\n this.innerDecorations = innerDecorations;\n\n updateProps({\n node,\n decorations: decorations as DecorationWithType[],\n innerDecorations,\n });\n\n return true;\n }\n\n selectNode() {\n this.renderer.updateProps({ selected: true });\n this.renderer.dom.classList.add('ProseMirror-selectednode');\n }\n\n deselectNode() {\n this.renderer.updateProps({ selected: false });\n this.renderer.dom.classList.remove('ProseMirror-selectednode');\n }\n\n destroy() {\n this.renderer.destroy();\n this.editor.off('selectionUpdate', this.handleSelectionUpdate);\n this.contentDOMElement = null;\n }\n\n /**\n * Update the attributes of the top-level element that holds the React component.\n * Applying the attributes defined in the `attrs` option.\n */\n updateElementAttributes() {\n if (this.options.attrs) {\n let attrsObj: Record<string, string> = {};\n\n if (typeof this.options.attrs === 'function') {\n const extensionAttributes = this.editor.extensionManager.attributes;\n const HTMLAttributes = getRenderedAttributes(this.node, extensionAttributes);\n\n attrsObj = this.options.attrs({ node: this.node, HTMLAttributes });\n } else {\n attrsObj = this.options.attrs;\n }\n\n this.renderer.updateAttributes(attrsObj);\n }\n }\n}\n\nexport const AngularNodeViewRenderer = (\n ViewComponent: Type<AngularNodeViewComponent>,\n options: Partial<AngularNodeViewRendererOptions>,\n): NodeViewRenderer => {\n return (props: NodeViewRendererProps) => {\n return new AngularNodeView(ViewComponent, props, options);\n };\n};\n","/*\n * Public API Surface of ngx-tiptap\n */\n\nexport * from './lib/editor.directive';\nexport * from './lib/floating-menu.directive';\nexport * from './lib/bubble-menu.directive';\nexport * from './lib/draggable.directive';\nexport * from './lib/node-view-content.directive';\nexport * from './lib/node-view.component';\nexport * from './lib/ngx-tiptap.module';\n\nexport * from './lib/AngularRenderer';\nexport * from './lib/NodeViewRenderer';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}