{"version":3,"file":"angular-froala-wysiwyg.mjs","sources":["../../projects/library/src/editor/editor.directive.ts","../../projects/library/src/editor/editor.module.ts","../../projects/library/src/view/view.directive.ts","../../projects/library/src/view/view.module.ts","../../projects/library/src/fe-root.module.ts","../../projects/library/src/angular-froala-wysiwyg.ts"],"sourcesContent":["import { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { Directive, ElementRef, EventEmitter, forwardRef, Input, NgZone, Output, PLATFORM_ID, Inject } from '@angular/core';\nimport { isPlatformBrowser } from \"@angular/common\";\n\n@Directive({\n selector: '[froalaEditor]',\n exportAs: 'froalaEditor',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FroalaEditorDirective),\n multi: true\n }\n ],\n standalone: false\n})\nexport class FroalaEditorDirective implements ControlValueAccessor {\n\n // editor options\n private _opts: any = {\n immediateAngularModelUpdate: false,\n angularIgnoreAttrs: null\n };\n\n private _element: any;\n\n private SPECIAL_TAGS: string[] = ['img', 'button', 'input', 'a'];\n private INNER_HTML_ATTR: string = 'innerHTML';\n private _hasSpecialTag: boolean = false;\n\n // editor element\n private _editor: any;\n\n // initial editor content\n private _model: string;\n\n private _editorInitialized: boolean = false;\n\n private _oldModel: string = null;\n\n constructor(el: ElementRef, private zone: NgZone, @Inject(PLATFORM_ID) private platformId: Object) {\n\n let element: any = el.nativeElement;\n\n // check if the element is a special tag\n if (this.SPECIAL_TAGS.indexOf(element.tagName.toLowerCase()) != -1) {\n this._hasSpecialTag = true;\n }\n this._element = element;\n\n this.zone = zone;\n }\n\n // Begin ControlValueAccesor methods.\n onChange = (_: any) => {\n };\n onTouched = () => {\n };\n\n // Form model content changed.\n writeValue(content: any): void {\n this.updateEditor(content);\n if(content){\n this.setup();\n }\n }\n\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // End ControlValueAccesor methods.\n\n // froalaEditor directive as input: store the editor options\n @Input() set froalaEditor(opts: any) {\n this._opts = this.clone( opts || this._opts);\n this._opts = {...this._opts};\n }\n\n // TODO: replace clone method with better possible alternate \n private clone(item) {\n \tconst me = this; \n if (!item) { return item; } // null, undefined values check\n\n let types = [ Number, String, Boolean ], \n result;\n\n // normalizing primitives if someone did new String('aaa'), or new Number('444');\n types.forEach(function(type) {\n if (item instanceof type) {\n result = type( item );\n }\n });\n\n if (typeof result == \"undefined\") {\n if (Object.prototype.toString.call( item ) === \"[object Array]\") {\n result = [];\n item.forEach(function(child, index, array) { \n result[index] = me.clone( child );\n });\n } else if (typeof item == \"object\") {\n // testing that this is DOM\n if (item.nodeType && typeof item.cloneNode == \"function\") {\n result = item.cloneNode( true ); \n } else if (!item.prototype) { // check that this is a literal\n if (item instanceof Date) {\n result = new Date(item);\n } else {\n // it is an object literal\n result = {};\n for (var i in item) {\n result[i] = me.clone( item[i] );\n }\n }\n } else {\n if (false && item.constructor) {\n result = new item.constructor();\n } else {\n result = item;\n }\n }\n } else {\n result = item;\n }\n }\n return result;\n }\n // froalaModel directive as input: store initial editor content\n @Input() set froalaModel(content: any) {\n this.updateEditor(content);\n }\n\n private stringify(obj) {\n let cache = [];\n let str = JSON.stringify(obj, function(key, value) {\n if (typeof value === \"object\" && value !== null) {\n if (cache.indexOf(value) !== -1) {\n // Circular reference found, discard key\n return;\n }\n // Store value in our collection\n cache.push(value);\n }\n return value;\n });\n cache = null; // reset the cache\n return str;\n }\n \n // Update editor with model contents.\n private updateEditor(content: any) {\n if (this.stringify(this._oldModel) == this.stringify(content)) {\n return;\n }\n \n if (!this._hasSpecialTag) {\n this._oldModel = content;\n } else {\n this._model = content;\n }\n\n if (this._editorInitialized) {\n if (!this._hasSpecialTag) {\n this._editor.html.set(content);\n } else {\n this.setContent();\n }\n } else {\n if (!this._hasSpecialTag) {\n this._element.innerHTML = content || '';\n } else {\n this.setContent();\n }\n }\n }\n\n // froalaModel directive as output: update model if editor contentChanged\n @Output() froalaModelChange: EventEmitter = new EventEmitter();\n\n // froalaInit directive as output: send manual editor initialization\n @Output() froalaInit: EventEmitter = new EventEmitter();\n\n // update model if editor contentChanged\n private updateModel() {\n this.zone.run(() => {\n\n let modelContent: any = null;\n\n if (this._hasSpecialTag) {\n\n let attributeNodes = this._element.attributes;\n let attrs = {};\n\n for (let i = 0; i < attributeNodes.length; i++) {\n\n let attrName = attributeNodes[i].name;\n if (this._opts.angularIgnoreAttrs && this._opts.angularIgnoreAttrs.indexOf(attrName) != -1) {\n continue;\n }\n\n attrs[attrName] = attributeNodes[i].value;\n }\n\n if (this._element.innerHTML) {\n attrs[this.INNER_HTML_ATTR] = this._element.innerHTML;\n }\n\n modelContent = attrs;\n } else {\n\n let returnedHtml: any = this._editor.html.get();\n if (typeof returnedHtml === 'string') {\n modelContent = returnedHtml;\n }\n }\n if (this._oldModel !== modelContent) {\n this._oldModel = modelContent;\n\n // Update froalaModel.\n this.froalaModelChange.emit(modelContent);\n\n // Update form model.\n this.onChange(modelContent);\n }\n\n })\n }\n\n private registerEvent(eventName, callback) {\n if (!eventName || !callback) {\n return;\n }\n\n if (!this._opts.events) {\n this._opts.events = {};\n }\n\n this._opts.events[eventName] = callback;\n }\n\n private initListeners() {\n let self = this;\n // Check if we have events on the editor.\n if (this._editor.events) {\n // bind contentChange and keyup event to froalaModel\n this._editor.events.on('contentChanged', function () {\n self.updateModel();\n });\n this._editor.events.on('mousedown', function () {\n setTimeout(function () {\n self.onTouched();\n }, 0);\n });\n\n if (this._opts.immediateAngularModelUpdate) {\n this._editor.events.on('keyup', function () {\n setTimeout(function () {\n self.updateModel();\n }, 0);\n });\n }\n }\n\n this._editorInitialized = true;\n }\n\n private createEditor() {\n if (this._editorInitialized) {\n return;\n }\n\n this.setContent(true);\n\n // init editor\n this.zone.runOutsideAngular(() => {\n // Add listeners on initialized event.\n if (!this._opts.events) this._opts.events = {};\n\n // Register initialized event.\n this.registerEvent('initialized', this._opts.events && this._opts.events.initialized);\n const existingInitCallback = this._opts.events.initialized;\n // Default initialized event.\n if (!this._opts.events.initialized || !this._opts.events.initialized.overridden) {\n this._opts.events.initialized = () => {\n this.initListeners();\n existingInitCallback && existingInitCallback.call(this._editor, this);\n };\n this._opts.events.initialized.overridden = true;\n }\n\n import('froala-editor').then(({ default: FroalaEditor }) => {\n // Initialize the Froala Editor.\n this._editor = new FroalaEditor(\n this._element,\n this._opts\n );\n });\n });\n }\n\n private setHtml() {\n this._editor.html.set(this._model || \"\");\n\n // This will reset the undo stack everytime the model changes externally. Can we fix this?\n this._editor.undo.reset();\n this._editor.undo.saveStep();\n }\n\n private setContent(firstTime = false) {\n let self = this;\n\n // Set initial content\n if (this._model || this._model == '') {\n this._oldModel = this._model;\n if (this._hasSpecialTag) {\n\n let tags: Object = this._model;\n\n // add tags on element\n if (tags) {\n\n for (let attr in tags) {\n if (tags.hasOwnProperty(attr) && attr != this.INNER_HTML_ATTR) {\n this._element.setAttribute(attr, tags[attr]);\n }\n }\n\n if (tags.hasOwnProperty(this.INNER_HTML_ATTR)) {\n this._element.innerHTML = tags[this.INNER_HTML_ATTR];\n }\n }\n } else {\n if (firstTime) {\n this.registerEvent('initialized', function () {\n self.setHtml();\n });\n } else {\n self.setHtml();\n }\n }\n }\n }\n\n private destroyEditor() {\n if (this._editorInitialized) {\n this._editor.destroy();\n this._editorInitialized = false;\n }\n }\n\n private getEditor() {\n if (this._element) {\n return this._editor;\n }\n\n return null;\n }\n\n // send manual editor initialization\n private generateManualController() {\n let controls = {\n initialize: this.createEditor.bind(this),\n destroy: this.destroyEditor.bind(this),\n getEditor: this.getEditor.bind(this),\n };\n this.froalaInit.emit(controls);\n }\n\n // TODO not sure if ngOnInit is executed after @inputs\n ngAfterViewInit() {\n // check if output froalaInit is present. Maybe observers is private and should not be used?? TODO how to better test that an output directive is present.\n // Only allow initialization in browser\n if (isPlatformBrowser(this.platformId)) {\n this.setup();\n }\n }\n\n private initialized = false;\n private setup() {\n if (this.initialized) {\n return;\n }\n this.initialized = true;\n if (!this.froalaInit.observers.length) {\n this.createEditor();\n } else {\n this.generateManualController();\n }\n }\n\n ngOnDestroy() {\n this.destroyEditor();\n }\n\n setDisabledState(isDisabled: boolean): void {\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { FroalaEditorDirective } from './editor.directive';\n\n@NgModule({\n declarations: [FroalaEditorDirective],\n exports: [FroalaEditorDirective]\n})\n\nexport class FroalaEditorModule {\n public static forRoot(): ModuleWithProviders {\n return {ngModule: FroalaEditorModule, providers: []};\n }\n}\n","import { Directive, ElementRef, Renderer2, Input } from '@angular/core';\n\n@Directive({\n selector: '[froalaView]',\n standalone: false\n})\nexport class FroalaViewDirective {\n\n private _element: HTMLElement;\n\n constructor(private renderer: Renderer2, element: ElementRef) {\n this._element = element.nativeElement;\n }\n\n // update content model as it comes\n @Input() set froalaView(content: string) {\n this._element.innerHTML = content;\n }\n\n ngAfterViewInit() {\n this.renderer.addClass(this._element, \"fr-view\");\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { FroalaViewDirective } from './view.directive';\n\n@NgModule({\n declarations: [FroalaViewDirective],\n exports: [FroalaViewDirective]\n})\nexport class FroalaViewModule {\n public static forRoot(): ModuleWithProviders {\n return {ngModule: FroalaViewModule, providers: []};\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FroalaEditorModule } from './editor/editor.module';\nimport { FroalaViewModule } from './view/view.module';\n\n@NgModule({\n imports: [\n FroalaEditorModule.forRoot(),\n FroalaViewModule.forRoot()\n ],\n exports: [\n FroalaEditorModule,\n FroalaViewModule\n ]\n})\nexport class FERootModule {\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}