UNPKG

ngx-tiptap-editor

Version:

[![Build and Publish](https://github.com/HuiiBuh/ngx-tiptap-editor/actions/workflows/publish.yml/badge.svg)](https://github.com/HuiiBuh/ngx-tiptap-editor/actions/workflows/publish.yml) [![Deploy to Github Pages](https://github.com/HuiiBuh/ngx-tiptap-edito

77 lines 11.2 kB
import { DOCUMENT } from '@angular/common'; import { Inject, Injectable, Injector } from '@angular/core'; import { DialogComponent } from '../components/dialog/dialog.component'; import { DialogRef, TIP_DIALOG_DATA } from '../components/dialog/dialog.helpers'; import { PopoverComponent } from '../components/dialog/popover.component'; import * as i0 from "@angular/core"; // @dynamic export class TipDialogService { constructor(componentFactoryResolver, appRef, injector, document) { this.componentFactoryResolver = componentFactoryResolver; this.appRef = appRef; this.injector = injector; this.document = document; } openDialog(component, config = {}) { // Fill with default values const newConfig = { ...{ type: 'dialog', autoClose: true, maxWidth: '1000px', width: '50%', backdropColor: 'var(--tip-overlay-color)', position: 'center' }, ...config }; return this.createAndAttachComponent(component, newConfig, DialogComponent); } openPopover(component, config) { const newConfig = { ...{ type: 'popover', autoClose: true, maxWidth: 'auto', width: 'auto', backdropColor: 'transparent', }, ...config }; return this.createAndAttachComponent(component, newConfig, PopoverComponent); } /** * @param component The component which will be displayed * @param config The config of the dialog * @param wrapperComponent The wrapper component which will encapsulate the user component */ createAndAttachComponent(component, config, wrapperComponent) { const dialogReference = {}; const dialogRef = new DialogRef(component, this.appRef, dialogReference, config); const componentInjector = Injector.create({ providers: [ { provide: TIP_DIALOG_DATA, useValue: config.data }, { provide: DialogRef, useValue: dialogRef } ], parent: this.injector }); // Create the component wrapper which in turn will attach the user component to the view const componentFactory = this.componentFactoryResolver.resolveComponentFactory(wrapperComponent); const componentRef = componentFactory.create(componentInjector); dialogReference.component = componentRef; this.appRef.attachView(componentRef.hostView); // Attach the component wrapper const domElement = componentRef.hostView.rootNodes[0]; this.document.body.appendChild(domElement); return dialogRef; } } TipDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TipDialogService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); TipDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TipDialogService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TipDialogService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }, { type: Document, decorators: [{ type: Inject, args: [DOCUMENT] }] }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGlwdGFwLWVkaXRvci9zcmMvbGliL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQTJFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQzVJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQStCLFNBQVMsRUFBZSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFFMUUsV0FBVztBQUVYLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsWUFDVSx3QkFBa0QsRUFDbEQsTUFBc0IsRUFDdEIsUUFBa0IsRUFDQSxRQUFrQjtRQUhwQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDQSxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRTlDLENBQUM7SUFFTSxVQUFVLENBQ2YsU0FBMEIsRUFDMUIsU0FBb0MsRUFBRTtRQUV0QywyQkFBMkI7UUFDM0IsTUFBTSxTQUFTLEdBQXFCO1lBQ2xDLEdBQUc7Z0JBQ0QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLEtBQUssRUFBRSxLQUFLO2dCQUNaLGFBQWEsRUFBRSwwQkFBMEI7Z0JBQ3pDLFFBQVEsRUFBRSxRQUFRO2FBQ25CLEVBQUUsR0FBRyxNQUFNO1NBQ2IsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVNLFdBQVcsQ0FDaEIsU0FBb0IsRUFDcEIsTUFBK0U7UUFHL0UsTUFBTSxTQUFTLEdBQXNCO1lBQ25DLEdBQUc7Z0JBQ0QsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLEtBQUssRUFBRSxNQUFNO2dCQUNiLGFBQWEsRUFBRSxhQUFhO2FBQzdCO1lBQ0QsR0FBRyxNQUFNO1NBQ1YsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHdCQUF3QixDQUM5QixTQUFvQixFQUNwQixNQUEwQyxFQUMxQyxnQkFBMEQ7UUFJMUQsTUFBTSxlQUFlLEdBQWtELEVBQUUsQ0FBQztRQUMxRSxNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBZ0IsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hHLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUN4QyxTQUFTLEVBQUU7Z0JBQ1QsRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFDO2dCQUNqRCxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQzthQUMxQztZQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUTtTQUN0QixDQUFDLENBQUM7UUFFSCx3RkFBd0Y7UUFDeEYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRyxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoRSxlQUFlLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFOUMsK0JBQStCO1FBQy9CLE1BQU0sVUFBVSxHQUFJLFlBQVksQ0FBQyxRQUFpQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWdCLENBQUM7UUFDL0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNDLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7OzZHQWpGVSxnQkFBZ0IsZ0hBTWpCLFFBQVE7aUhBTlAsZ0JBQWdCLGNBREosTUFBTTsyRkFDbEIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQztxSkFPUSxRQUFROzBCQUEzQyxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBDb21wb25lbnRSZWYsIEVtYmVkZGVkVmlld1JlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaWFsb2dCYXNlQ2xhc3MsIERpYWxvZ0RhdGEsIERpYWxvZ1JlZiwgUG9wb3ZlckRhdGEsIFRJUF9ESUFMT0dfREFUQSB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGlhbG9nL2RpYWxvZy5oZWxwZXJzJztcbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2RpYWxvZy9wb3BvdmVyLmNvbXBvbmVudCc7XG5cbi8vIEBkeW5hbWljXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBUaXBEaWFsb2dTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRGlhbG9nPFJFVFVSTiwgREFUQSA9IGFueSwgQ09NUE9ORU5UID0gYW55PihcbiAgICBjb21wb25lbnQ6IFR5cGU8Q09NUE9ORU5UPixcbiAgICBjb25maWc6IFBhcnRpYWw8RGlhbG9nRGF0YTxEQVRBPj4gPSB7fVxuICApOiBEaWFsb2dSZWY8UkVUVVJOLCBEQVRBLCBUeXBlPENPTVBPTkVOVD4+IHtcbiAgICAvLyBGaWxsIHdpdGggZGVmYXVsdCB2YWx1ZXNcbiAgICBjb25zdCBuZXdDb25maWc6IERpYWxvZ0RhdGE8REFUQT4gPSB7XG4gICAgICAuLi57XG4gICAgICAgIHR5cGU6ICdkaWFsb2cnLFxuICAgICAgICBhdXRvQ2xvc2U6IHRydWUsXG4gICAgICAgIG1heFdpZHRoOiAnMTAwMHB4JyxcbiAgICAgICAgd2lkdGg6ICc1MCUnLFxuICAgICAgICBiYWNrZHJvcENvbG9yOiAndmFyKC0tdGlwLW92ZXJsYXktY29sb3IpJyxcbiAgICAgICAgcG9zaXRpb246ICdjZW50ZXInXG4gICAgICB9LCAuLi5jb25maWdcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQW5kQXR0YWNoQ29tcG9uZW50KGNvbXBvbmVudCwgbmV3Q29uZmlnLCBEaWFsb2dDb21wb25lbnQpO1xuICB9XG5cbiAgcHVibGljIG9wZW5Qb3BvdmVyPFJFVFVSTiwgREFUQSA9IGFueSwgQ09NUE9ORU5UIGV4dGVuZHMgVHlwZTxhbnk+ID0gYW55PihcbiAgICBjb21wb25lbnQ6IENPTVBPTkVOVCxcbiAgICBjb25maWc6IFBhcnRpYWw8UG9wb3ZlckRhdGE8REFUQT4+ICYgeyBwb3NpdGlvbjogUG9wb3ZlckRhdGE8YW55PlsncG9zaXRpb24nXSB9XG4gICk6IERpYWxvZ1JlZjxSRVRVUk4sIERBVEEsIENPTVBPTkVOVD4ge1xuXG4gICAgY29uc3QgbmV3Q29uZmlnOiBQb3BvdmVyRGF0YTxEQVRBPiA9IHtcbiAgICAgIC4uLntcbiAgICAgICAgdHlwZTogJ3BvcG92ZXInLFxuICAgICAgICBhdXRvQ2xvc2U6IHRydWUsXG4gICAgICAgIG1heFdpZHRoOiAnYXV0bycsXG4gICAgICAgIHdpZHRoOiAnYXV0bycsXG4gICAgICAgIGJhY2tkcm9wQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICB9LFxuICAgICAgLi4uY29uZmlnXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUFuZEF0dGFjaENvbXBvbmVudChjb21wb25lbnQsIG5ld0NvbmZpZywgUG9wb3ZlckNvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGNvbXBvbmVudCBUaGUgY29tcG9uZW50IHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZyBvZiB0aGUgZGlhbG9nXG4gICAqIEBwYXJhbSB3cmFwcGVyQ29tcG9uZW50IFRoZSB3cmFwcGVyIGNvbXBvbmVudCB3aGljaCB3aWxsIGVuY2Fwc3VsYXRlIHRoZSB1c2VyIGNvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVBbmRBdHRhY2hDb21wb25lbnQoXG4gICAgY29tcG9uZW50OiBUeXBlPGFueT4sXG4gICAgY29uZmlnOiBEaWFsb2dEYXRhPGFueT4gfCBQb3BvdmVyRGF0YTxhbnk+LFxuICAgIHdyYXBwZXJDb21wb25lbnQ6IFR5cGU8UG9wb3ZlckNvbXBvbmVudCB8IERpYWxvZ0NvbXBvbmVudD5cbiAgKTogRGlhbG9nUmVmPGFueSwgYW55LCBhbnk+IHtcblxuXG4gICAgY29uc3QgZGlhbG9nUmVmZXJlbmNlOiB7IGNvbXBvbmVudD86IENvbXBvbmVudFJlZjxEaWFsb2dCYXNlQ2xhc3M+IH0gPSB7fTtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSBuZXcgRGlhbG9nUmVmPGFueSwgYW55LCBhbnk+KGNvbXBvbmVudCwgdGhpcy5hcHBSZWYsIGRpYWxvZ1JlZmVyZW5jZSwgY29uZmlnKTtcbiAgICBjb25zdCBjb21wb25lbnRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge3Byb3ZpZGU6IFRJUF9ESUFMT0dfREFUQSwgdXNlVmFsdWU6IGNvbmZpZy5kYXRhfSxcbiAgICAgICAge3Byb3ZpZGU6IERpYWxvZ1JlZiwgdXNlVmFsdWU6IGRpYWxvZ1JlZn1cbiAgICAgIF0sXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3JcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSB0aGUgY29tcG9uZW50IHdyYXBwZXIgd2hpY2ggaW4gdHVybiB3aWxsIGF0dGFjaCB0aGUgdXNlciBjb21wb25lbnQgdG8gdGhlIHZpZXdcbiAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnkod3JhcHBlckNvbXBvbmVudCk7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeS5jcmVhdGUoY29tcG9uZW50SW5qZWN0b3IpO1xuICAgIGRpYWxvZ1JlZmVyZW5jZS5jb21wb25lbnQgPSBjb21wb25lbnRSZWY7XG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXG4gICAgLy8gQXR0YWNoIHRoZSBjb21wb25lbnQgd3JhcHBlclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIGRpYWxvZ1JlZjtcbiAgfVxuXG59XG4iXX0=