@firestitch/html-editor 9.5.5 → 9.5.8

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 (66) hide show
  1. package/app/classes/plugin.d.ts +7 -7
  2. package/app/components/html-editor/html-editor.component.d.ts +54 -54
  3. package/app/components/html-renderer/html-renderer.component.d.ts +9 -9
  4. package/app/consts/paragraph-buttons.const.d.ts +1 -1
  5. package/app/consts/rich-buttons.const.d.ts +1 -1
  6. package/app/consts/text-buttons.const.d.ts +1 -1
  7. package/app/enums/default-plugin.enum.d.ts +14 -14
  8. package/app/fs-html-editor.module.d.ts +25 -25
  9. package/app/injects/config.inject.d.ts +3 -3
  10. package/app/interfaces/html-editor-config.d.ts +31 -31
  11. package/app/interfaces/plugin-button.d.ts +12 -12
  12. package/app/interfaces/plugin-config.d.ts +5 -5
  13. package/app/plugins/checklist.plugin.d.ts +7 -7
  14. package/app/plugins/code.plugin.d.ts +9 -9
  15. package/app/plugins/configs/mention-plugin.config.d.ts +13 -12
  16. package/app/plugins/configs/screen-record-plugin.config.d.ts +7 -7
  17. package/app/plugins/mention.plugin.d.ts +15 -12
  18. package/app/plugins/screen-record.plugin.d.ts +11 -11
  19. package/app/services/froala-loader.service.d.ts +17 -17
  20. package/app/utils/loader.d.ts +7 -7
  21. package/bundles/firestitch-html-editor.umd.js +1031 -1008
  22. package/bundles/firestitch-html-editor.umd.js.map +1 -1
  23. package/bundles/firestitch-html-editor.umd.min.js +2 -2
  24. package/bundles/firestitch-html-editor.umd.min.js.map +1 -1
  25. package/esm2015/app/classes/plugin.js +4 -4
  26. package/esm2015/app/components/html-editor/html-editor.component.js +445 -435
  27. package/esm2015/app/components/html-renderer/html-renderer.component.js +33 -33
  28. package/esm2015/app/consts/paragraph-buttons.const.js +8 -8
  29. package/esm2015/app/consts/rich-buttons.const.js +6 -6
  30. package/esm2015/app/consts/text-buttons.const.js +18 -18
  31. package/esm2015/app/fs-html-editor.module.js +56 -56
  32. package/esm2015/app/injects/config.inject.js +3 -3
  33. package/esm2015/app/plugins/checklist.plugin.js +34 -34
  34. package/esm2015/app/plugins/code.plugin.js +62 -62
  35. package/esm2015/app/plugins/configs/mention-plugin.config.js +1 -1
  36. package/esm2015/app/plugins/mention.plugin.js +87 -73
  37. package/esm2015/app/plugins/screen-record.plugin.js +91 -91
  38. package/esm2015/app/services/froala-loader.service.js +80 -80
  39. package/esm2015/app/utils/loader.js +82 -82
  40. package/esm2015/firestitch-html-editor.js +8 -8
  41. package/esm2015/public_api.js +11 -11
  42. package/esm5/app/classes/plugin.js +8 -8
  43. package/esm5/app/components/html-editor/html-editor.component.js +471 -461
  44. package/esm5/app/components/html-renderer/html-renderer.component.js +38 -38
  45. package/esm5/app/consts/paragraph-buttons.const.js +8 -8
  46. package/esm5/app/consts/rich-buttons.const.js +6 -6
  47. package/esm5/app/consts/text-buttons.const.js +18 -18
  48. package/esm5/app/fs-html-editor.module.js +61 -61
  49. package/esm5/app/injects/config.inject.js +3 -3
  50. package/esm5/app/plugins/checklist.plugin.js +40 -40
  51. package/esm5/app/plugins/code.plugin.js +69 -69
  52. package/esm5/app/plugins/configs/mention-plugin.config.js +1 -1
  53. package/esm5/app/plugins/mention.plugin.js +93 -79
  54. package/esm5/app/plugins/screen-record.plugin.js +105 -105
  55. package/esm5/app/services/froala-loader.service.js +95 -95
  56. package/esm5/app/utils/loader.js +82 -82
  57. package/esm5/firestitch-html-editor.js +8 -8
  58. package/esm5/public_api.js +11 -11
  59. package/fesm2015/firestitch-html-editor.js +952 -928
  60. package/fesm2015/firestitch-html-editor.js.map +1 -1
  61. package/fesm5/firestitch-html-editor.js +1032 -1008
  62. package/fesm5/firestitch-html-editor.js.map +1 -1
  63. package/firestitch-html-editor.d.ts +9 -9
  64. package/firestitch-html-editor.metadata.json +1 -1
  65. package/package.json +1 -1
  66. package/public_api.d.ts +16 -16
@@ -1 +1 @@
1
- {"version":3,"file":"firestitch-html-editor.js","sources":["ng://@firestitch/html-editor/app/consts/rich-buttons.const.ts","ng://@firestitch/html-editor/app/consts/text-buttons.const.ts","ng://@firestitch/html-editor/app/consts/paragraph-buttons.const.ts","ng://@firestitch/html-editor/app/injects/config.inject.ts","ng://@firestitch/html-editor/app/utils/loader.ts","ng://@firestitch/html-editor/app/services/froala-loader.service.ts","ng://@firestitch/html-editor/app/components/html-editor/html-editor.component.ts","ng://@firestitch/html-editor/app/components/html-renderer/html-renderer.component.ts","ng://@firestitch/html-editor/app/fs-html-editor.module.ts","ng://@firestitch/html-editor/app/classes/plugin.ts","ng://@firestitch/html-editor/app/plugins/mention.plugin.ts","ng://@firestitch/html-editor/app/plugins/checklist.plugin.ts","ng://@firestitch/html-editor/app/plugins/code.plugin.ts","ng://@firestitch/html-editor/app/plugins/screen-record.plugin.ts","ng://@firestitch/html-editor/firestitch-html-editor.ts"],"sourcesContent":["export const RichButtons = [\n 'insertTable',\n 'insertImage',\n 'insertLink',\n 'insertVideo',\n];\n","export const TextButtons = [\n 'paragraphFormat',\n 'code',\n 'bold',\n 'italic',\n 'underline',\n 'strikeThrough',\n 'subscript',\n 'superscript',\n 'fontFamily',\n 'fontSize',\n 'textColor',\n 'backgroundColor',\n 'inlineClass',\n 'inlineStyle',\n 'clearFormatting',\n 'quote',\n];\n","export const ParagraphButtons = [\n 'align',\n 'formatOL',\n 'formatUL',\n 'checklist',\n 'indent',\n 'outdent',\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_HTML_EDITOR_DEFAULT_CONFIG = new InjectionToken<any[]>('fs-html-editor.default-config');\nexport const FS_HTML_EDITOR_CONFIG = new InjectionToken<any[]>('fs-html-editor.config');\n","import { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\nfunction resourceLoaderFactory() {\n let resourceBase = '/assets/js/froala/';\n let stylesBase = '/assets/css/';\n\n const head = document.getElementsByTagName('head')[0];\n const files = new Map<string, Observable<unknown>>();\n\n const resourcePaths = {\n froala: 'froala_editor.min.js',\n align: 'plugins/align.min.js',\n colors: 'plugins/colors.min.js',\n image: 'plugins/image.min.js',\n link: 'plugins/link.min.js',\n lists: 'plugins/lists.min.js',\n paragraph_format: 'plugins/paragraph_format.min.js',\n table: 'plugins/table.min.js',\n url: 'plugins/url.min.js',\n video: 'plugins/video.min.js',\n quote: 'plugins/quote.min.js',\n draggable: 'plugins/draggable.min.js',\n font_size: 'plugins/font_size.min.js',\n }\n\n const stylesPaths = {\n froala: 'froala_editor.pkgd.min.css',\n }\n\n const loadResource = function (scriptPath: string): Observable<unknown> {\n if (!files.has(scriptPath)) {\n const obs$ = new Observable((obs) => {\n\n const script = document.createElement('script');\n script.src = scriptPath;\n\n head.appendChild(script);\n\n script.onload = () => {\n obs.next();\n obs.complete();\n };\n\n script.onerror = (err) => {\n obs.error(err);\n }\n })\n .pipe(\n shareReplay(1),\n );\n\n files.set(scriptPath, obs$);\n }\n\n return files.get(scriptPath);\n };\n\n const loadStyles = function (stylePath: string): Observable<unknown> {\n if (!files.has(stylePath)) {\n const obs$ = new Observable((obs) => {\n const style = document.createElement('link');\n style.id = stylePath;\n style.rel = 'stylesheet';\n style.href = `${stylePath}`;\n\n head.appendChild(style);\n\n style.onload = () => {\n obs.next();\n obs.complete();\n };\n\n style.onerror = (err) => {\n obs.error(err);\n }\n });\n\n files.set(stylePath, obs$);\n }\n\n return files.get(stylePath);\n };\n\n return {\n setResourceBase: (path: string) => {\n resourceBase = path;\n },\n setStylesBase: (path: string) => {\n stylesBase = path;\n },\n loadResource: (resourceName: string) => {\n const path = resourcePaths[resourceName] || resourceName;\n\n return loadResource(resourceBase + path);\n },\n loadStyles: (resourceName: string) => {\n const path = stylesPaths[resourceName] || resourceName;\n\n return loadStyles(stylesBase + path);\n }\n }\n}\n\n\nexport const ResourceLoader = resourceLoaderFactory();\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { concatMap, map, shareReplay, tap } from 'rxjs/operators';\n\nimport { FS_HTML_EDITOR_CONFIG } from '../injects/config.inject';\nimport { FsHtmlEditorConfig } from '../interfaces/html-editor-config';\n\nimport { ResourceLoader } from '../utils/loader';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsFroalaLoaderService {\n\n private _FroalaEditor: unknown;\n\n private _froalaLoaded = new BehaviorSubject(false);\n private _defaultPluginsLoaded = new BehaviorSubject(false);\n\n private _loaded$ = combineLatest([this._froalaLoaded, this._defaultPluginsLoaded])\n .pipe(\n map(([FroalaReady, pluginsRead]) => {\n return pluginsRead && FroalaReady;\n }),\n shareReplay(1),\n );\n\n constructor(\n @Optional() @Inject(FS_HTML_EDITOR_CONFIG) private _defaultConfig: FsHtmlEditorConfig,\n ) {\n if (this._defaultConfig) {\n if (this._defaultConfig.assetsJSPath) {\n ResourceLoader.setResourceBase(this._defaultConfig.assetsJSPath)\n }\n\n if (this._defaultConfig.assetsCSSPath) {\n ResourceLoader.setStylesBase(this._defaultConfig.assetsCSSPath)\n }\n }\n\n this._load();\n }\n\n public get loaded$(): Observable<boolean> {\n return this._loaded$;\n }\n\n public get ready(): boolean {\n return this._froalaLoaded.getValue() && this._defaultPluginsLoaded.getValue();\n }\n\n public get FroalaEditor(): any {\n return this._FroalaEditor;\n }\n\n private _load() {\n combineLatest([\n ResourceLoader.loadResource('froala'),\n ResourceLoader.loadStyles('froala')\n ])\n .pipe(\n tap(() => {\n this._FroalaEditor = (window as any).FroalaEditor;\n this._froalaDone();\n }),\n concatMap(() => {\n return this._loadPlugins();\n }),\n tap(() => {\n this._defaultPluginsDone();\n }),\n )\n .subscribe();\n }\n\n private _loadPlugins(): Observable<unknown> {\n const imports = this._defaultConfig\n .defaultPlugins\n .reduce((acc, pluginName) => {\n const import$ = ResourceLoader.loadResource(pluginName);\n\n acc.push(import$);\n\n return acc;\n }, []);\n\n return combineLatest(imports);\n }\n\n private _froalaDone() {\n this._froalaLoaded.next(true);\n }\n\n private _defaultPluginsDone() {\n this._defaultPluginsLoaded.next(true);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport { FileProcessor, FsFile } from '@firestitch/file';\n\nimport { BehaviorSubject, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { filter, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { merge } from 'lodash-es';\n\nimport { PluginButton } from './../../interfaces/plugin-button';\nimport { FsHtmlEditorConfig } from '../../interfaces/html-editor-config';\nimport { RichButtons } from './../../consts/rich-buttons.const';\nimport { TextButtons } from './../../consts/text-buttons.const';\nimport { ParagraphButtons } from './../../consts/paragraph-buttons.const';\n\nimport { FS_HTML_EDITOR_CONFIG } from '../../injects/config.inject';\nimport { Plugin } from './../../classes/plugin';\n\nimport { FsFroalaLoaderService } from '../../services/froala-loader.service';\n\n\n@Component({\n selector: 'fs-html-editor',\n templateUrl: 'html-editor.component.html',\n styleUrls: ['html-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FsHtmlEditorComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => FsHtmlEditorComponent),\n multi: true\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsHtmlEditorComponent implements OnInit, AfterViewInit, ControlValueAccessor, Validator, OnDestroy {\n\n @HostBinding('class.focused') classFocused = false;\n @HostBinding('class.disabled') classDisabled = false;\n\n @ViewChild('elRef') public elRef: ElementRef;\n\n @Input() public config: FsHtmlEditorConfig = {};\n\n public initialized = false;\n\n private _editor: any;\n private _html: string;\n private _initialize$ = new ReplaySubject();\n private _froalaReady$ = new BehaviorSubject(null);\n private _destroy$ = new Subject();\n\n constructor(\n @Optional() @Inject(FS_HTML_EDITOR_CONFIG) private _defaultConfig,\n private _cdRef: ChangeDetectorRef,\n private _fr: FsFroalaLoaderService,\n ) { }\n\n public onChange = (data: any) => {}\n public onTouched = () => {}\n\n public get el(): any {\n return this.elRef.nativeElement;\n }\n\n public get html(): string {\n return this._html;\n }\n\n public get editor(): any {\n return this._editor;\n }\n\n public get froalaLoaded$(): Observable<boolean> {\n return this._fr.loaded$;\n }\n\n public ngOnInit(): void {\n this.config = this.config || {};\n this.config.autofocus = this.config.autofocus !== false && !this.config.disabled;\n this.initialized = !this.config.initOnClick;\n this._listenLazyInit();\n }\n\n public ngAfterViewInit() {\n if (!this.config.initOnClick || !this.hasContent()) {\n this.initialized = true;\n this._initialize$.next();\n }\n }\n\n public hasContent() {\n const el = document.createElement('div');\n\n if (el.querySelector('img')) {\n return true;\n }\n\n el.innerHTML = this._html;\n return !!el.innerText.length;\n }\n\n public initialize(options: any = {}) {\n const config = this._createConfig();\n\n this._initPlugins(config);\n // this.el.innerHTML = this._html || '';\n\n this._editor = new this._fr.FroalaEditor(this.el, this._createOptions(), () => {\n this._froalaReady$.next({ config, options });\n });\n }\n\n private _processImageUpload(blob) {\n const processor = new FileProcessor();\n const file = new FsFile(blob);\n\n return processor.process([file], this.config.image)\n .pipe(\n switchMap(([f]: FsFile[]) => {\n return this.config.image.upload(f.file)\n }),\n );\n }\n\n private _getTextNode(node) {\n if (node) {\n if (node.nodeType === Node.TEXT_NODE) {\n return node;\n }\n if (node.childNodes) {\n return this._getTextNode(node.childNodes[0]);\n }\n }\n }\n\n public uninitializedClick(event: UIEvent): void {\n if (!event.defaultPrevented) {\n const target: any = event.target;\n if (target && target.nodeName === 'A' && target.getAttribute('href')) {\n const targetTarget = target.getAttribute('target');\n target.setAttribute('target', '_blank');\n setTimeout(() => {\n if (targetTarget) {\n target.setAttribute('target', targetTarget);\n } else {\n target.removeAttribute('target');\n }\n });\n } else {\n if (this.config.initClick) {\n this.config.initClick(event);\n }\n this._initialize$.next();\n this.initialized = true;\n }\n }\n }\n\n public updateSize() {\n // Hack: To trigger the toolbar button size modes\n window.dispatchEvent(new Event('resize'));\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n\n const err: any = {};\n if (this.config.maxLength && this._html) {\n const maxLength = this.config.maxLength;\n const length = this._html.length;\n if (length > maxLength) {\n err.maxLengthError = `Must be ${maxLength} characters or fewer. You entered ${length} characters.`;\n }\n }\n\n return Object.keys(err).length ? err : null;\n }\n\n public focus(options?: { cursorPosition?: 'start' | 'end' }) {\n options = options ? options : {};\n\n if (options.cursorPosition === 'end') {\n this.editor.selection.setAtEnd(this.editor.$el.get(0));\n } else {\n this.editor.selection.setAtStart(this.editor.$el.get(0));\n }\n\n this.editor.selection.restore();\n\n const elSelection = this.editor.selection.element();\n if (elSelection) {\n elSelection.scrollIntoView({ block: 'center' });\n }\n }\n\n public clear() {\n this.writeValue('');\n }\n\n public disable() {\n this.classDisabled = true;\n }\n\n public setHtml(html) {\n this.writeValue(html);\n }\n\n public writeValue(html: string): void {\n this._html = html || '';\n\n if (this.editor && this.editor.html) {\n try {\n this.editor.html.set(this._html);\n } catch (e) {\n }\n }\n\n this._cdRef.markForCheck();\n }\n\n public registerOnChange(fn: (data: any) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public ngOnDestroy() {\n this._initialize$.complete();\n this._destroy$.next();\n this._destroy$.complete();\n this.destroy();\n }\n\n public destroy() {\n if (this.editor) {\n this.editor.destroy();\n }\n this.initialized = false;\n this._cdRef.markForCheck();\n this.el.innerHTML = '';\n }\n\n private _createConfig(): FsHtmlEditorConfig {\n return merge({ froalaConfig: {} }, this._defaultConfig, this.config);\n }\n\n private _change(html): void {\n // this._html = html;\n this.onChange(html);\n }\n\n private _initPlugins(config) {\n\n (config.plugins || []).forEach((plugin: Plugin) => {\n this._fr.FroalaEditor.PLUGINS[plugin.config.name] = function (editor) {\n plugin.editor = editor;\n plugin.initialize();\n return plugin;\n };\n\n (plugin.config.buttons || []).forEach((button: PluginButton) => {\n this._fr.FroalaEditor.DefineIcon(button.name, {\n NAME: button.name,\n PATH: button.svgPath,\n });\n\n this._fr.FroalaEditor.RegisterCommand(button.name, {\n icon: button.name,\n title: button.tooltip,\n undo: button.undo,\n focus: button.focus,\n showOnMobile: button.showOnMobile,\n refreshAfterCallback: button.refreshAfterCallback,\n callback: function () {\n if (button.click) {\n button.click(this);\n }\n },\n refresh: function (button) {\n if (button.refresh) {\n button.refresh(this, button);\n }\n }\n });\n });\n\n });\n }\n\n private _createOptions() {\n const config = this._createConfig();\n\n return merge(\n // For some reason editor store somewhere pointer on default config object and dublicate options each time on init\n // Extra merge level fixed this problem and allow to init config properly without legacy data\n {},\n {\n key: config.activationKey,\n placeholderText: config.placeholder,\n linkAlwaysBlank: true,\n tabSpaces: 2,\n typingTimer: 250,\n tooltips: false,\n wordPasteModal: false,\n imageDefaultWidth: 0,\n imageDefaultAlign: 'left',\n quickInsertEnabled: false,\n paragraphDefaultSelection: 'Format',\n videoUpload: false,\n paragraphFormat: {\n N: 'Normal',\n H1: 'Heading 1',\n H2: 'Heading 2',\n H3: 'Heading 3',\n H4: 'Heading 4',\n BLOCKQUOTE: 'Quote',\n },\n paragraphFormatSelection: true,\n toolbarButtonsXS: {\n moreText: {\n buttons: TextButtons,\n buttonsVisible: 1,\n },\n moreParagraph: {\n buttons: ParagraphButtons,\n buttonsVisible: 2,\n },\n moreRich: {\n buttons: RichButtons,\n buttonsVisible: 0,\n },\n },\n toolbarButtons: {\n moreText: {\n buttons: TextButtons,\n buttonsVisible: 3,\n },\n moreParagraph: {\n buttons: ParagraphButtons,\n buttonsVisible: 5,\n },\n moreRich: {\n buttons: RichButtons,\n buttonsVisible: 3,\n },\n },\n },\n config.froalaConfig,\n );\n }\n\n private _listenLazyInit() {\n this.froalaLoaded$\n .pipe(\n filter((ready) => ready),\n switchMap(() => this._initialize$),\n tap(() => {\n const selection: any = window.getSelection();\n const options: any = {};\n if (selection.baseNode) {\n options.selection = {\n node: selection.baseNode.nodeValue,\n offset: selection.baseOffset,\n };\n }\n this.initialize(options);\n }),\n switchMap(() => this._froalaReady$),\n filter((data) => !!data),\n tap(({ config, options }) => {\n this._setupFroala(config, options);\n })\n )\n .subscribe();\n }\n\n private _contentChanged(): void {\n const editorHTML = this._editor.html.get();\n\n if (this.html !== editorHTML) {\n this._change(editorHTML);\n }\n }\n\n private _setupFroala(config: FsHtmlEditorConfig, options: any): void {\n this._cdRef.markForCheck();\n\n this.setHtml(this._html);\n\n if (config.disabled) {\n this.disable();\n }\n\n if (config.froalaConfig.events) {\n if (config.froalaConfig.events.initialized) {\n config.froalaConfig.events.initialized();\n }\n }\n\n this._editor.events.on('focus', () => {\n this.classFocused = true;\n this._cdRef.markForCheck();\n });\n\n this._editor.events.on('blur', () => {\n this.classFocused = false;\n this._cdRef.markForCheck();\n });\n\n this._editor.events.on('contentChanged', () => {\n this._contentChanged();\n });\n\n this._editor.events.on('paste.afterCleanup', (html) => {\n var div = document.createElement('div');\n div.innerHTML = html;\n div.querySelectorAll('*')\n .forEach((el) => {\n for (var i = 0; i < el.attributes.length; i++) {\n const name = el.attributes[0].name;\n if (name !== 'href') {\n el.removeAttribute(name);\n }\n }\n });\n return div.innerHTML;\n });\n\n this._editor.events.on('keydown', () => {\n this.onTouched();\n });\n\n if (this.config.image && this.config.image.upload) {\n this._editor.events.on('image.beforePasteUpload', (image) => {\n\n fetch(image.getAttribute('src'))\n .then((res) => {\n res.blob()\n .then((blob) => {\n this._processImageUpload(blob)\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((url) => {\n image.setAttribute('src', url);\n image.removeAttribute('data-fr-image-pasted');\n\n this._contentChanged();\n });\n });\n });\n\n return false;\n });\n\n this._editor.events.on('image.beforeUpload', (blobs) => {\n this._processImageUpload(blobs[0])\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((url) => {\n this.editor.image.insert(url, null, null, this.editor.image.get());\n });\n\n return false;\n });\n }\n\n if (this.el.querySelector('.fr-second-toolbar')) {\n this.el.querySelector('.fr-second-toolbar').remove();\n }\n\n const selection = options.selection;\n\n if (selection) {\n const node: any = Array.from(this.el.querySelectorAll('.fr-element *')).find((node: any) => {\n return selection.node === node.textContent;\n });\n\n if (node) {\n const range = document.createRange();\n const sel = window.getSelection();\n\n range.setStart(this._getTextNode(node), selection.offset);\n range.collapse(true)\n\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (this.config.autofocus) {\n this.focus();\n }\n } else if (this.config.autofocus) {\n this.focus();\n }\n }\n}\n","import { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ChangeDetectionStrategy, Component, Input, ChangeDetectorRef } from '@angular/core';\n\n\n@Component({\n selector: 'fs-html-renderer',\n templateUrl: 'html-renderer.component.html',\n styleUrls: ['html-renderer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsHtmlRendererComponent {\n\n @Input('html') public set setHtml(html) {\n this.trustedHtml = this.sanitized.bypassSecurityTrustHtml(html);\n this._cdRef.markForCheck();\n }\n\n public trustedHtml: SafeHtml;\n\n public constructor(\n private sanitized: DomSanitizer,\n private _cdRef: ChangeDetectorRef,\n ) { }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsSkeletonModule } from '@firestitch/skeleton';\n\nimport { FsHtmlEditorComponent } from './components/html-editor/html-editor.component';\nimport { FsHtmlRendererComponent } from './components/html-renderer/html-renderer.component';\nimport { FsHtmlEditorConfig } from './interfaces/html-editor-config';\nimport { FS_HTML_EDITOR_CONFIG, FS_HTML_EDITOR_DEFAULT_CONFIG } from './injects/config.inject';\nimport { DefaultPlugin } from './enums/default-plugin.enum';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FsSkeletonModule,\n ],\n exports: [\n FsHtmlEditorComponent,\n FsHtmlRendererComponent,\n ],\n declarations: [\n FsHtmlEditorComponent,\n FsHtmlRendererComponent,\n ],\n})\nexport class FsHtmlEditorModule {\n static forRoot(config: FsHtmlEditorConfig = {}): ModuleWithProviders<FsHtmlEditorModule> {\n return {\n ngModule: FsHtmlEditorModule,\n providers: [\n { provide: FS_HTML_EDITOR_DEFAULT_CONFIG, useValue: config },\n {\n provide: FS_HTML_EDITOR_CONFIG,\n useFactory: FsHtmlEditorConfigFactory,\n deps: [FS_HTML_EDITOR_DEFAULT_CONFIG]\n }\n ]\n };\n }\n}\n\nexport function FsHtmlEditorConfigFactory(config: FsHtmlEditorConfig) {\n return {\n defaultPlugins: [\n DefaultPlugin.Align,\n DefaultPlugin.Colors,\n DefaultPlugin.Image,\n DefaultPlugin.Link,\n DefaultPlugin.Lists,\n DefaultPlugin.ParagraphFormat,\n DefaultPlugin.Quote,\n DefaultPlugin.Table,\n DefaultPlugin.Url,\n DefaultPlugin.Video,\n DefaultPlugin.Draggable,\n DefaultPlugin.FontSize,\n ],\n ...config\n };\n}\n","// import { FroalaEditor } from 'froala-editor';\nimport { PluginConfig } from './../interfaces/plugin-config';\n\nexport class Plugin {\n\n public config: PluginConfig;\n public editor: any;\n\n public initialize() {}\n public destroy() {}\n\n}\n","import { debounce } from 'lodash-es';\nimport Tribute, { TributeItem } from 'tributejs';\n\nimport { MentionPluginConfig } from './configs/mention-plugin.config';\n\nimport { Plugin } from '../classes/plugin';\n\n\nexport class MentionPlugin extends Plugin {\n\n private static _tributes = [];\n private _tribute;\n\n public constructor(public config: MentionPluginConfig) {\n super();\n this.config = {\n ...config,\n buttons: [\n {\n name: config.name,\n tooltip: config.tooltip,\n svgPath: config.iconPath,\n click: (editor) => {\n this._closeAll();\n this._tribute.showMenuForCollection(editor.el);\n }\n }\n ]\n };\n\n this._tribute = new Tribute({\n values: debounce(this._loadValues.bind(this), 200),\n searchOpts: {\n pre: '',\n post: '',\n skip: true\n },\n containerClass: `fs-html-editor-mention-container ${this.config.containerClass || ''}`,\n itemClass: `fs-html-editor-mention-menu-item ${this.config.menuItemClass || ''}`,\n trigger: this.config.trigger,\n allowSpaces: true,\n menuItemTemplate: (item: TributeItem<any>) => {\n return this.config.menuItemTemplate(item.original);\n },\n selectTemplate: (item: TributeItem<any>) => {\n const template = this.config.selectedTemplate(item.original);\n\n let p = document.createElement('p');\n p.innerHTML = template;\n\n let node = p.firstElementChild;\n if (!node) {\n node = document.createElement('span');\n node.innerHTML = template;\n }\n\n node.setAttribute('contenteditable', 'false');\n node.classList.add('fr-deletable');\n\n return node.outerHTML;\n },\n });\n\n MentionPlugin._tributes.push(this._tribute);\n }\n\n public initialize() {\n this._tribute.attach(this.editor.el);\n this.editor.events.on('keydown', (e) => {\n if (e.key === 'Enter' && this._tribute.isActive) {\n return false;\n }\n }, true);\n }\n\n public destroy() {}\n\n private _closeAll() {\n MentionPlugin._tributes.forEach((tribute) => {\n if (tribute.menu) {\n tribute.hideMenu();\n }\n });\n }\n\n private _loadValues(keyword, cb) {\n return this.config.fetch(keyword)\n .subscribe((data) => {\n cb(data);\n });\n }\n}\n","import { Plugin } from '../classes/plugin';\n\nimport { PluginConfig } from './../interfaces/plugin-config';\n\n\nexport class ChecklistPlugin extends Plugin {\n\n public constructor(public config: PluginConfig = { name: 'checklist' }) {\n super();\n this.config = {\n ...config,\n name: 'checklist',\n buttons: [\n {\n name: 'checklist',\n svgPath: 'M8.4,10.3l-1.2,1.2l4,4L20,6.7l-1.2-1.2l-7.6,7.6L8.4,10.3z M18.2,18.2H5.8V5.8h8.9V4H5.8C4.8,4,4,4.8,4,5.8v12.4c0,1,0.8,1.8,1.8,1.8h12.4c1,0,1.8-0.8,1.8-1.8v-7.1h-1.8V18.2z',\n click: (editor) => {\n editor.html.insert('<ul class=\"checklist\"><li></li></ul>');\n }\n }\n ]\n };\n }\n\n public initialize() {\n this.editor.events.on('click', (e) => {\n const li = e.target;\n if (li.nodeName === 'LI' && e.offsetX < 0) {\n\n const items = [li, ...li.querySelectorAll('li')];\n\n if (li.classList.contains('checked')) {\n items.forEach((item) => {\n item.classList.remove('checked');\n });\n } else {\n items.forEach((item) => {\n item.classList.add('checked');\n });\n }\n }\n\n }, false);\n }\n\n}\n","import { Plugin } from '../classes/plugin';\n\nimport { PluginConfig } from './../interfaces/plugin-config';\n\n\nexport class CodePlugin extends Plugin {\n\n public constructor(public config: PluginConfig = { name: 'code' }) {\n super();\n this.config = {\n ...config,\n name: 'code',\n buttons: [\n {\n name: 'code',\n svgPath: 'M8.9,7.3L4.2,12l4.7,4.7l1.1-1.1L6.4,12L10,8.4L8.9,7.3z M15.1,7.3L14,8.4l3.6,3.6L14,15.6l1.1,1.1l4.7-4.7L15.1,7.3z',\n click: (editor) => {\n const node = editor.selection.get();\n const codeEl = this._getCodeEl(node.baseNode);\n if (codeEl) {\n codeEl.classList.remove('code');\n } else {\n editor.html.insert('<p class=\"code\">' + editor.selection.get().toString().replace(/\\n{1,}/g,'<br>') + '</p>');\n }\n }\n }\n ]\n };\n }\n\n public initialize() {\n this.editor.events.on('keydown', (e) => {\n if (e.keyCode === 13) {\n const selection = this.editor.selection.get();\n\n if (selection && this._getCodeEl(selection.baseNode)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n let br = '<br>';\n const base = selection.baseNode;\n if (base.nodeName === '#text' && selection.baseOffset === base.length) {\n\n if (!(base.nextSibling && base.nextSibling.nodeName === 'BR')) {\n br += '<br>';\n }\n } else {\n const el: any = Array.from(base.childNodes).splice(selection.baseOffset - 1, 1).pop();\n if (el && el.nodeName !== 'BR') {\n br += '<br>';\n }\n }\n\n this.editor.html.insert(br);\n return false;\n }\n }\n }, true);\n }\n\n public destroy() {}\n\n private _getCodeEl(el) {\n\n if (el) {\n if (el.classList && el.classList.contains('code')) {\n return el;\n }\n\n if (el.parentElement) {\n return this._getCodeEl(el.parentElement);\n }\n }\n\n return null;\n }\n}\n","import { ScreenRecordPluginConfig } from './configs/screen-record-plugin.config';\nimport { Plugin } from '../classes/plugin';\nimport { ResourceLoader } from '../utils/loader';\n\n\ndeclare var MediaRecorder: any;\n\nexport class ScreenRecordPlugin extends Plugin {\n\n private _activeEl;\n\n public constructor(public config: ScreenRecordPluginConfig = {}) {\n super();\n\n this.config = {\n ...config,\n name: config.name || 'screenRecord',\n buttons: [\n {\n name: 'screenRecord',\n svgPath: `M14.7,7.7v6.1H7.1V7.7H14.7 M16.3,9.6V6.9c0-0.4-0.3-0.8-0.8-0.8H6.4c-0.4,0-0.8,0.3-0.8,0.8v7.6c0,0.4,0.3,0.8,0.8,0.8h9.1c0.4,0,0.8-0.3,0.8-0.8v-2.7l1.7,1.7c0.3,0.3,0.8,0.3,1.1,0c0.1-0.1,0.2-0.3,0.2-0.5V8.4c0-0.4-0.3-0.8-0.8-0.8\n\tc-0.2,0-0.4,0.1-0.5,0.2L16.3,9.6z M21.5,1.6H2.9c-0.7,0-1.3,0.7-1.3,1.6v14.6c0,0.9,0.6,1.6,1.3,1.6h7.6v1.1l-5,1c-0.2,0-0.4,0.3-0.4,0.6c0,0.3,0.2,0.4,0.4,0.4c0,0,0,0,0.1,0l5.3-1h2.6l5.3,1c0,0,0,0,0.1,0c0.2,0,0.4-0.2,0.4-0.4\n c0-0.3-0.1-0.6-0.4-0.6l-5-1v-1.1h7.6c0.7,0,1.3-0.7,1.3-1.6V3.2C22.9,2.3,22.3,1.6,21.5,1.6z M21.1,17.3H3.3V3.7h17.8L21.1,17.3L21.1,17.3z`,\n tooltip: 'Screen Record',\n click: (editor) => {\n\n (<any>navigator).mediaDevices.getDisplayMedia({ video: true })\n .then((stream) => {\n const chunks = [];\n const options = { mimeType: 'video/webm; codecs=vp9' };\n let mediaRecorder = new MediaRecorder(stream, options);\n\n stream.addEventListener('inactive', (e) => {\n mediaRecorder.stop();\n mediaRecorder = null;\n stream.getTracks().forEach((track) => track.stop());\n stream = null;\n\n const blob = new Blob(chunks, { type: 'video/webm' });\n config.upload(blob)\n .subscribe((url) => {\n editor.html.insert(`<span class=\"fr-screen-record fr-deletable fr-draggable\"><video controls style=\"max-width:${config.maxWidth}\"><source src=\"${url}\" type=\"video/webm\"></video></span>`);\n });\n });\n\n mediaRecorder.addEventListener('dataavailable', (event) => {\n if (event.data && event.data.size > 0) {\n chunks.push(event.data);\n }\n });\n\n mediaRecorder.start(10);\n })\n .catch((e) => { });\n }\n }\n ]\n };\n }\n\n public async initialize() {\n await ResourceLoader.loadStyles('froala')\n .toPromise();\n\n const FroalaEditor = (window as any).FroalaEditor;\n\n this.editor.events.on('mouseup', (e) => {\n const el = this._getEl(e.target);\n\n if (el) {\n this.editor.popups.hideAll();\n this._activeEl = el;\n this._showPopup(el);\n }\n });\n\n FroalaEditor.POPUP_TEMPLATES[\"screenRecordPlugin.popup\"] = '[_BUTTONS_]';\n\n FroalaEditor.DefineIcon('popupClose', { NAME: 'trash', SVG_KEY: 'remove' });\n FroalaEditor.RegisterCommand('popupClose', {\n title: 'Remove',\n undo: false,\n focus: false,\n callback: () => {\n if (this._activeEl) {\n this._activeEl.remove();\n }\n }\n });\n }\n\n private _createPopup() {\n\n const template = {\n buttons: `<div class=\"fr-buttons\">${this.editor.button.buildList(['popupClose'])}</div>`,\n };\n\n return this.editor.popups.create('screenRecordPlugin.popup', template);\n }\n\n private _showPopup (el) {\n var $popup = this.editor.popups.get('screenRecordPlugin.popup');\n\n if (!$popup) {\n $popup = this._createPopup();\n }\n\n this.editor.popups.setContainer('screenRecordPlugin.popup', this.editor.$(el));\n\n const left = el.offsetLeft + el.offsetWidth / 2;\n\n this.editor.popups.show('screenRecordPlugin.popup', left, null);\n }\n\n private _getEl(el) {\n if (el && el.classList) {\n if (el.classList.contains('fr-screen-record'))\n return el;\n\n return this._getEl(el.parentNode);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {Plugin as ɵe} from './app/classes/plugin';\nexport {DefaultPlugin as ɵd} from './app/enums/default-plugin.enum';\nexport {FsHtmlEditorConfigFactory as ɵa} from './app/fs-html-editor.module';\nexport {FS_HTML_EDITOR_DEFAULT_CONFIG as ɵb} from './app/injects/config.inject';\nexport {FsFroalaLoaderService as ɵc} from './app/services/froala-loader.service';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firestitch-html-editor.js","sources":["ng://@firestitch/html-editor/app/consts/rich-buttons.const.ts","ng://@firestitch/html-editor/app/consts/text-buttons.const.ts","ng://@firestitch/html-editor/app/consts/paragraph-buttons.const.ts","ng://@firestitch/html-editor/app/injects/config.inject.ts","ng://@firestitch/html-editor/app/utils/loader.ts","ng://@firestitch/html-editor/app/services/froala-loader.service.ts","ng://@firestitch/html-editor/app/components/html-editor/html-editor.component.ts","ng://@firestitch/html-editor/app/components/html-renderer/html-renderer.component.ts","ng://@firestitch/html-editor/app/fs-html-editor.module.ts","ng://@firestitch/html-editor/app/classes/plugin.ts","ng://@firestitch/html-editor/app/plugins/mention.plugin.ts","ng://@firestitch/html-editor/app/plugins/checklist.plugin.ts","ng://@firestitch/html-editor/app/plugins/code.plugin.ts","ng://@firestitch/html-editor/app/plugins/screen-record.plugin.ts","ng://@firestitch/html-editor/firestitch-html-editor.ts"],"sourcesContent":["export const RichButtons = [\n 'insertTable',\n 'insertImage',\n 'insertLink',\n 'insertVideo',\n];\n","export const TextButtons = [\n 'paragraphFormat',\n 'code',\n 'bold',\n 'italic',\n 'underline',\n 'strikeThrough',\n 'subscript',\n 'superscript',\n 'fontFamily',\n 'fontSize',\n 'textColor',\n 'backgroundColor',\n 'inlineClass',\n 'inlineStyle',\n 'clearFormatting',\n 'quote',\n];\n","export const ParagraphButtons = [\n 'align',\n 'formatOL',\n 'formatUL',\n 'checklist',\n 'indent',\n 'outdent',\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_HTML_EDITOR_DEFAULT_CONFIG = new InjectionToken<any[]>('fs-html-editor.default-config');\nexport const FS_HTML_EDITOR_CONFIG = new InjectionToken<any[]>('fs-html-editor.config');\n","import { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\nfunction resourceLoaderFactory() {\n let resourceBase = '/assets/js/froala/';\n let stylesBase = '/assets/css/';\n\n const head = document.getElementsByTagName('head')[0];\n const files = new Map<string, Observable<unknown>>();\n\n const resourcePaths = {\n froala: 'froala_editor.min.js',\n align: 'plugins/align.min.js',\n colors: 'plugins/colors.min.js',\n image: 'plugins/image.min.js',\n link: 'plugins/link.min.js',\n lists: 'plugins/lists.min.js',\n paragraph_format: 'plugins/paragraph_format.min.js',\n table: 'plugins/table.min.js',\n url: 'plugins/url.min.js',\n video: 'plugins/video.min.js',\n quote: 'plugins/quote.min.js',\n draggable: 'plugins/draggable.min.js',\n font_size: 'plugins/font_size.min.js',\n }\n\n const stylesPaths = {\n froala: 'froala_editor.pkgd.min.css',\n }\n\n const loadResource = function (scriptPath: string): Observable<unknown> {\n if (!files.has(scriptPath)) {\n const obs$ = new Observable((obs) => {\n\n const script = document.createElement('script');\n script.src = scriptPath;\n\n head.appendChild(script);\n\n script.onload = () => {\n obs.next();\n obs.complete();\n };\n\n script.onerror = (err) => {\n obs.error(err);\n }\n })\n .pipe(\n shareReplay(1),\n );\n\n files.set(scriptPath, obs$);\n }\n\n return files.get(scriptPath);\n };\n\n const loadStyles = function (stylePath: string): Observable<unknown> {\n if (!files.has(stylePath)) {\n const obs$ = new Observable((obs) => {\n const style = document.createElement('link');\n style.id = stylePath;\n style.rel = 'stylesheet';\n style.href = `${stylePath}`;\n\n head.appendChild(style);\n\n style.onload = () => {\n obs.next();\n obs.complete();\n };\n\n style.onerror = (err) => {\n obs.error(err);\n }\n });\n\n files.set(stylePath, obs$);\n }\n\n return files.get(stylePath);\n };\n\n return {\n setResourceBase: (path: string) => {\n resourceBase = path;\n },\n setStylesBase: (path: string) => {\n stylesBase = path;\n },\n loadResource: (resourceName: string) => {\n const path = resourcePaths[resourceName] || resourceName;\n\n return loadResource(resourceBase + path);\n },\n loadStyles: (resourceName: string) => {\n const path = stylesPaths[resourceName] || resourceName;\n\n return loadStyles(stylesBase + path);\n }\n }\n}\n\n\nexport const ResourceLoader = resourceLoaderFactory();\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { concatMap, map, shareReplay, tap } from 'rxjs/operators';\n\nimport { FS_HTML_EDITOR_CONFIG } from '../injects/config.inject';\nimport { FsHtmlEditorConfig } from '../interfaces/html-editor-config';\n\nimport { ResourceLoader } from '../utils/loader';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsFroalaLoaderService {\n\n private _FroalaEditor: unknown;\n\n private _froalaLoaded = new BehaviorSubject(false);\n private _defaultPluginsLoaded = new BehaviorSubject(false);\n\n private _loaded$ = combineLatest([this._froalaLoaded, this._defaultPluginsLoaded])\n .pipe(\n map(([FroalaReady, pluginsRead]) => {\n return pluginsRead && FroalaReady;\n }),\n shareReplay(1),\n );\n\n constructor(\n @Optional() @Inject(FS_HTML_EDITOR_CONFIG) private _defaultConfig: FsHtmlEditorConfig,\n ) {\n if (this._defaultConfig) {\n if (this._defaultConfig.assetsJSPath) {\n ResourceLoader.setResourceBase(this._defaultConfig.assetsJSPath)\n }\n\n if (this._defaultConfig.assetsCSSPath) {\n ResourceLoader.setStylesBase(this._defaultConfig.assetsCSSPath)\n }\n }\n\n this._load();\n }\n\n public get loaded$(): Observable<boolean> {\n return this._loaded$;\n }\n\n public get ready(): boolean {\n return this._froalaLoaded.getValue() && this._defaultPluginsLoaded.getValue();\n }\n\n public get FroalaEditor(): any {\n return this._FroalaEditor;\n }\n\n private _load() {\n combineLatest([\n ResourceLoader.loadResource('froala'),\n ResourceLoader.loadStyles('froala')\n ])\n .pipe(\n tap(() => {\n this._FroalaEditor = (window as any).FroalaEditor;\n this._froalaDone();\n }),\n concatMap(() => {\n return this._loadPlugins();\n }),\n tap(() => {\n this._defaultPluginsDone();\n }),\n )\n .subscribe();\n }\n\n private _loadPlugins(): Observable<unknown> {\n const imports = this._defaultConfig\n .defaultPlugins\n .reduce((acc, pluginName) => {\n const import$ = ResourceLoader.loadResource(pluginName);\n\n acc.push(import$);\n\n return acc;\n }, []);\n\n return combineLatest(imports);\n }\n\n private _froalaDone() {\n this._froalaLoaded.next(true);\n }\n\n private _defaultPluginsDone() {\n this._defaultPluginsLoaded.next(true);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport { FileProcessor, FsFile } from '@firestitch/file';\n\nimport { BehaviorSubject, fromEventPattern, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, skip, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { merge } from 'lodash-es';\n\nimport { PluginButton } from './../../interfaces/plugin-button';\nimport { FsHtmlEditorConfig } from '../../interfaces/html-editor-config';\nimport { RichButtons } from './../../consts/rich-buttons.const';\nimport { TextButtons } from './../../consts/text-buttons.const';\nimport { ParagraphButtons } from './../../consts/paragraph-buttons.const';\n\nimport { FS_HTML_EDITOR_CONFIG } from '../../injects/config.inject';\nimport { Plugin } from './../../classes/plugin';\n\nimport { FsFroalaLoaderService } from '../../services/froala-loader.service';\n\n\n@Component({\n selector: 'fs-html-editor',\n templateUrl: 'html-editor.component.html',\n styleUrls: ['html-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FsHtmlEditorComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => FsHtmlEditorComponent),\n multi: true\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsHtmlEditorComponent implements OnInit, AfterViewInit, ControlValueAccessor, Validator, OnDestroy {\n\n @HostBinding('class.focused') classFocused = false;\n @HostBinding('class.disabled') classDisabled = false;\n\n @ViewChild('elRef') public elRef: ElementRef;\n\n @Input() public config: FsHtmlEditorConfig = {};\n\n public initialized = false;\n\n private _editor: any;\n private _html: string;\n private _initialize$ = new ReplaySubject();\n private _froalaReady$ = new BehaviorSubject(null);\n private _destroy$ = new Subject();\n\n constructor(\n @Optional() @Inject(FS_HTML_EDITOR_CONFIG) private _defaultConfig,\n private _cdRef: ChangeDetectorRef,\n private _fr: FsFroalaLoaderService,\n ) { }\n\n public onChange = (data: any) => {}\n public onTouched = () => {}\n\n public get el(): any {\n return this.elRef.nativeElement;\n }\n\n public get html(): string {\n return this._html;\n }\n\n public get editor(): any {\n return this._editor;\n }\n\n public get froalaLoaded$(): Observable<boolean> {\n return this._fr.loaded$;\n }\n\n public ngOnInit(): void {\n this.config = this.config || {};\n this.config.autofocus = this.config.autofocus !== false && !this.config.disabled;\n this.initialized = !this.config.initOnClick;\n this._listenLazyInit();\n }\n\n public ngAfterViewInit() {\n if (!this.config.initOnClick || !this.hasContent()) {\n this.initialized = true;\n this._initialize$.next();\n }\n }\n\n public hasContent() {\n const el = document.createElement('div');\n\n if (el.querySelector('img')) {\n return true;\n }\n\n el.innerHTML = this._html;\n return !!el.innerText.length;\n }\n\n public initialize(options: any = {}) {\n const config = this._createConfig();\n\n this._initPlugins(config);\n // this.el.innerHTML = this._html || '';\n\n this._editor = new this._fr.FroalaEditor(this.el, this._createOptions(), () => {\n this._froalaReady$.next({ config, options });\n });\n }\n\n private _processImageUpload(blob) {\n const processor = new FileProcessor();\n const file = new FsFile(blob);\n\n return processor.process([file], this.config.image)\n .pipe(\n switchMap(([f]: FsFile[]) => {\n return this.config.image.upload(f.file)\n }),\n );\n }\n\n private _getTextNode(node) {\n if (node) {\n if (node.nodeType === Node.TEXT_NODE) {\n return node;\n }\n if (node.childNodes) {\n return this._getTextNode(node.childNodes[0]);\n }\n }\n }\n\n public uninitializedClick(event: UIEvent): void {\n if (!event.defaultPrevented) {\n const target: any = event.target;\n if (target && target.nodeName === 'A' && target.getAttribute('href')) {\n const targetTarget = target.getAttribute('target');\n target.setAttribute('target', '_blank');\n setTimeout(() => {\n if (targetTarget) {\n target.setAttribute('target', targetTarget);\n } else {\n target.removeAttribute('target');\n }\n });\n } else {\n if (this.config.initClick) {\n this.config.initClick(event);\n }\n this._initialize$.next();\n this.initialized = true;\n }\n }\n }\n\n public updateSize() {\n // Hack: To trigger the toolbar button size modes\n window.dispatchEvent(new Event('resize'));\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n\n const err: any = {};\n if (this.config.maxLength && this._html) {\n const maxLength = this.config.maxLength;\n const length = this._html.length;\n if (length > maxLength) {\n err.maxLengthError = `Must be ${maxLength} characters or fewer. You entered ${length} characters.`;\n }\n }\n\n return Object.keys(err).length ? err : null;\n }\n\n public focus(options?: { cursorPosition?: 'start' | 'end' }) {\n options = options ? options : {};\n\n if (options.cursorPosition === 'end') {\n this.editor.selection.setAtEnd(this.editor.$el.get(0));\n } else {\n this.editor.selection.setAtStart(this.editor.$el.get(0));\n }\n\n this.editor.selection.restore();\n\n const elSelection = this.editor.selection.element();\n if (elSelection) {\n elSelection.scrollIntoView({ block: 'center' });\n }\n }\n\n public clear() {\n this.writeValue('');\n }\n\n public disable() {\n this.classDisabled = true;\n }\n\n public setHtml(html) {\n this.writeValue(html);\n }\n\n public writeValue(html: string): void {\n this._html = html || '';\n\n if (this.editor && this.editor.html) {\n try {\n this.editor.html.set(this._html);\n } catch (e) {\n }\n }\n\n this._cdRef.markForCheck();\n }\n\n public registerOnChange(fn: (data: any) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public ngOnDestroy() {\n this._initialize$.complete();\n this._destroy$.next();\n this._destroy$.complete();\n this.destroy();\n }\n\n public destroy() {\n if (this.editor) {\n this.editor.destroy();\n }\n this.initialized = false;\n this._cdRef.markForCheck();\n this.el.innerHTML = '';\n }\n\n private _createConfig(): FsHtmlEditorConfig {\n return merge({ froalaConfig: {} }, this._defaultConfig, this.config);\n }\n\n private _change(html): void {\n // this._html = html;\n this.onChange(html);\n }\n\n private _initPlugins(config) {\n\n (config.plugins || []).forEach((plugin: Plugin) => {\n this._fr.FroalaEditor.PLUGINS[plugin.config.name] = function (editor) {\n plugin.editor = editor;\n plugin.initialize();\n return plugin;\n };\n\n (plugin.config.buttons || []).forEach((button: PluginButton) => {\n this._fr.FroalaEditor.DefineIcon(button.name, {\n NAME: button.name,\n PATH: button.svgPath,\n });\n\n this._fr.FroalaEditor.RegisterCommand(button.name, {\n icon: button.name,\n title: button.tooltip,\n undo: button.undo,\n focus: button.focus,\n showOnMobile: button.showOnMobile,\n refreshAfterCallback: button.refreshAfterCallback,\n callback: function () {\n if (button.click) {\n button.click(this);\n }\n },\n refresh: function (button) {\n if (button.refresh) {\n button.refresh(this, button);\n }\n }\n });\n });\n\n });\n }\n\n private _createOptions() {\n const config = this._createConfig();\n\n return merge(\n // For some reason editor store somewhere pointer on default config object and dublicate options each time on init\n // Extra merge level fixed this problem and allow to init config properly without legacy data\n {},\n {\n key: config.activationKey,\n placeholderText: config.placeholder,\n linkAlwaysBlank: true,\n tabSpaces: 2,\n typingTimer: 250,\n tooltips: false,\n wordPasteModal: false,\n imageDefaultWidth: 0,\n imageDefaultAlign: 'left',\n quickInsertEnabled: false,\n paragraphDefaultSelection: 'Format',\n videoUpload: false,\n paragraphFormat: {\n N: 'Normal',\n H1: 'Heading 1',\n H2: 'Heading 2',\n H3: 'Heading 3',\n H4: 'Heading 4',\n BLOCKQUOTE: 'Quote',\n },\n paragraphFormatSelection: true,\n toolbarButtonsXS: {\n moreText: {\n buttons: TextButtons,\n buttonsVisible: 1,\n },\n moreParagraph: {\n buttons: ParagraphButtons,\n buttonsVisible: 2,\n },\n moreRich: {\n buttons: RichButtons,\n buttonsVisible: 0,\n },\n },\n toolbarButtons: {\n moreText: {\n buttons: TextButtons,\n buttonsVisible: 3,\n },\n moreParagraph: {\n buttons: ParagraphButtons,\n buttonsVisible: 5,\n },\n moreRich: {\n buttons: RichButtons,\n buttonsVisible: 3,\n },\n },\n },\n config.froalaConfig,\n );\n }\n\n private _listenLazyInit() {\n this.froalaLoaded$\n .pipe(\n filter((ready) => ready),\n switchMap(() => this._initialize$),\n tap(() => {\n const selection: any = window.getSelection();\n const options: any = {};\n if (selection.baseNode) {\n options.selection = {\n node: selection.baseNode.nodeValue,\n offset: selection.baseOffset,\n };\n }\n this.initialize(options);\n }),\n switchMap(() => this._froalaReady$),\n filter((data) => !!data),\n tap(({ config, options }) => {\n this._setupFroala(config, options);\n })\n )\n .subscribe();\n }\n\n private _contentChanged(): void {\n const editorHTML = this._editor.html.get();\n\n if (this.html !== editorHTML) {\n this._change(editorHTML);\n }\n }\n\n private _setupFroala(config: FsHtmlEditorConfig, options: any): void {\n this._cdRef.markForCheck();\n\n this.setHtml(this._html);\n\n if (config.disabled) {\n this.disable();\n }\n\n if (config.froalaConfig.events) {\n if (config.froalaConfig.events.initialized) {\n config.froalaConfig.events.initialized();\n }\n }\n\n this._editor.events.on('focus', () => {\n this.classFocused = true;\n this._cdRef.markForCheck();\n });\n\n this._editor.events.on('blur', () => {\n this.classFocused = false;\n this._cdRef.markForCheck();\n });\n\n\n fromEventPattern(\n (handler) => {\n this._editor.events.on('contentChanged', handler);\n },\n () => {}\n )\n .pipe(\n startWith(this._html),\n map(() => this.editor.html.get()),\n distinctUntilChanged(),\n skip(1),\n )\n .subscribe(() => {\n this._contentChanged();\n });\n\n // this._editor.events.on('contentChanged', () => {\n // console.log('test');\n // if (!this._firstChange) {\n // this._contentChanged();\n // }\n // });\n\n this._editor.events.on('paste.afterCleanup', (html) => {\n var div = document.createElement('div');\n div.innerHTML = html;\n div.querySelectorAll('*')\n .forEach((el) => {\n for (var i = 0; i < el.attributes.length; i++) {\n const name = el.attributes[0].name;\n if (name !== 'href') {\n el.removeAttribute(name);\n }\n }\n });\n return div.innerHTML;\n });\n\n this._editor.events.on('keydown', () => {\n this.onTouched();\n });\n\n if (this.config.image && this.config.image.upload) {\n this._editor.events.on('image.beforePasteUpload', (image) => {\n\n fetch(image.getAttribute('src'))\n .then((res) => {\n res.blob()\n .then((blob) => {\n this._processImageUpload(blob)\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((url) => {\n image.setAttribute('src', url);\n image.removeAttribute('data-fr-image-pasted');\n\n this._contentChanged();\n });\n });\n });\n\n return false;\n });\n\n this._editor.events.on('image.beforeUpload', (blobs) => {\n this._processImageUpload(blobs[0])\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((url) => {\n this.editor.image.insert(url, null, null, this.editor.image.get());\n });\n\n return false;\n });\n }\n\n if (this.el.querySelector('.fr-second-toolbar')) {\n this.el.querySelector('.fr-second-toolbar').remove();\n }\n\n const selection = options.selection;\n\n if (selection) {\n const node: any = Array.from(this.el.querySelectorAll('.fr-element *')).find((node: any) => {\n return selection.node === node.textContent;\n });\n\n if (node) {\n const range = document.createRange();\n const sel = window.getSelection();\n\n range.setStart(this._getTextNode(node), selection.offset);\n range.collapse(true)\n\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (this.config.autofocus) {\n this.focus();\n }\n } else if (this.config.autofocus) {\n this.focus();\n }\n }\n}\n","import { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ChangeDetectionStrategy, Component, Input, ChangeDetectorRef } from '@angular/core';\n\n\n@Component({\n selector: 'fs-html-renderer',\n templateUrl: 'html-renderer.component.html',\n styleUrls: ['html-renderer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsHtmlRendererComponent {\n\n @Input('html') public set setHtml(html) {\n this.trustedHtml = this.sanitized.bypassSecurityTrustHtml(html);\n this._cdRef.markForCheck();\n }\n\n public trustedHtml: SafeHtml;\n\n public constructor(\n private sanitized: DomSanitizer,\n private _cdRef: ChangeDetectorRef,\n ) { }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsSkeletonModule } from '@firestitch/skeleton';\n\nimport { FsHtmlEditorComponent } from './components/html-editor/html-editor.component';\nimport { FsHtmlRendererComponent } from './components/html-renderer/html-renderer.component';\nimport { FsHtmlEditorConfig } from './interfaces/html-editor-config';\nimport { FS_HTML_EDITOR_CONFIG, FS_HTML_EDITOR_DEFAULT_CONFIG } from './injects/config.inject';\nimport { DefaultPlugin } from './enums/default-plugin.enum';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FsSkeletonModule,\n ],\n exports: [\n FsHtmlEditorComponent,\n FsHtmlRendererComponent,\n ],\n declarations: [\n FsHtmlEditorComponent,\n FsHtmlRendererComponent,\n ],\n})\nexport class FsHtmlEditorModule {\n static forRoot(config: FsHtmlEditorConfig = {}): ModuleWithProviders<FsHtmlEditorModule> {\n return {\n ngModule: FsHtmlEditorModule,\n providers: [\n { provide: FS_HTML_EDITOR_DEFAULT_CONFIG, useValue: config },\n {\n provide: FS_HTML_EDITOR_CONFIG,\n useFactory: FsHtmlEditorConfigFactory,\n deps: [FS_HTML_EDITOR_DEFAULT_CONFIG]\n }\n ]\n };\n }\n}\n\nexport function FsHtmlEditorConfigFactory(config: FsHtmlEditorConfig) {\n return {\n defaultPlugins: [\n DefaultPlugin.Align,\n DefaultPlugin.Colors,\n DefaultPlugin.Image,\n DefaultPlugin.Link,\n DefaultPlugin.Lists,\n DefaultPlugin.ParagraphFormat,\n DefaultPlugin.Quote,\n DefaultPlugin.Table,\n DefaultPlugin.Url,\n DefaultPlugin.Video,\n DefaultPlugin.Draggable,\n DefaultPlugin.FontSize,\n ],\n ...config\n };\n}\n","// import { FroalaEditor } from 'froala-editor';\nimport { PluginConfig } from './../interfaces/plugin-config';\n\nexport class Plugin {\n\n public config: PluginConfig;\n public editor: any;\n\n public initialize() {}\n public destroy() {}\n\n}\n","import { debounce } from 'lodash-es';\nimport Tribute, { TributeItem } from 'tributejs';\n\nimport { MentionPluginConfig } from './configs/mention-plugin.config';\n\nimport { Plugin } from '../classes/plugin';\n\nimport { guid } from '@firestitch/common';\n\n\nexport class MentionPlugin extends Plugin {\n\n private static _currentGuid = null;\n private static _tributes = [];\n private _tribute;\n private _guid = guid();\n\n public constructor(public config: MentionPluginConfig) {\n super();\n this.config = {\n ...config,\n buttons: [\n {\n name: config.name,\n tooltip: config.tooltip,\n svgPath: config.iconPath,\n click: (editor) => {\n this._closeAll();\n this._tribute.showMenuForCollection(editor.el);\n }\n }\n ]\n };\n\n this._tribute = new Tribute({\n values: debounce(this._loadValues.bind(this), 200),\n searchOpts: {\n pre: '',\n post: '',\n skip: true\n },\n containerClass: `fs-html-editor-mention-container ${this.config.containerClass || ''}`,\n itemClass: `fs-html-editor-mention-menu-item ${this.config.menuItemClass || ''}`,\n trigger: this.config.trigger,\n allowSpaces: true,\n menuItemTemplate: (item: TributeItem<any>) => {\n return this.config.menuItemTemplate(item.original);\n },\n selectTemplate: (item: TributeItem<any>) => {\n const template = this.config.selectedTemplate(item.original);\n\n let p = document.createElement('p');\n p.innerHTML = template;\n\n let node = p.firstElementChild;\n if (!node) {\n node = document.createElement('span');\n node.innerHTML = template;\n }\n\n node.setAttribute('contenteditable', 'false');\n node.classList.add('fr-deletable');\n\n return node.outerHTML;\n },\n });\n\n MentionPlugin._tributes.push(this._tribute);\n }\n\n public initialize() {\n this._tribute.attach(this.editor.el);\n this.editor.events.on('keydown', (e) => {\n if (e.key === 'Enter' && this._tribute.isActive) {\n return false;\n }\n }, true);\n\n \n this.editor.el.addEventListener(\"tribute-replaced\", this.selected);\n }\n\n public selected = (event) => {\n if(this.config.selected) {\n if(MentionPlugin._currentGuid === this._guid) {\n this.config.selected(event.detail.item.original);\n }\n }\n }\n\n public destroy() {\n this.editor.el.removeEventListener(\"tribute-replaced\", this.selected);\n }\n\n private _closeAll() {\n MentionPlugin._tributes.forEach((tribute) => {\n if (tribute.menu) {\n tribute.hideMenu();\n }\n });\n }\n\n private _loadValues(keyword, cb) {\n MentionPlugin._currentGuid = this._guid;\n return this.config.fetch(keyword)\n .subscribe((data) => {\n cb(data);\n });\n }\n}\n","import { Plugin } from '../classes/plugin';\n\nimport { PluginConfig } from './../interfaces/plugin-config';\n\n\nexport class ChecklistPlugin extends Plugin {\n\n public constructor(public config: PluginConfig = { name: 'checklist' }) {\n super();\n this.config = {\n ...config,\n name: 'checklist',\n buttons: [\n {\n name: 'checklist',\n svgPath: 'M8.4,10.3l-1.2,1.2l4,4L20,6.7l-1.2-1.2l-7.6,7.6L8.4,10.3z M18.2,18.2H5.8V5.8h8.9V4H5.8C4.8,4,4,4.8,4,5.8v12.4c0,1,0.8,1.8,1.8,1.8h12.4c1,0,1.8-0.8,1.8-1.8v-7.1h-1.8V18.2z',\n click: (editor) => {\n editor.html.insert('<ul class=\"checklist\"><li></li></ul>');\n }\n }\n ]\n };\n }\n\n public initialize() {\n this.editor.events.on('click', (e) => {\n const li = e.target;\n if (li.nodeName === 'LI' && e.offsetX < 0) {\n\n const items = [li, ...li.querySelectorAll('li')];\n\n if (li.classList.contains('checked')) {\n items.forEach((item) => {\n item.classList.remove('checked');\n });\n } else {\n items.forEach((item) => {\n item.classList.add('checked');\n });\n }\n }\n\n }, false);\n }\n\n}\n","import { Plugin } from '../classes/plugin';\n\nimport { PluginConfig } from './../interfaces/plugin-config';\n\n\nexport class CodePlugin extends Plugin {\n\n public constructor(public config: PluginConfig = { name: 'code' }) {\n super();\n this.config = {\n ...config,\n name: 'code',\n buttons: [\n {\n name: 'code',\n svgPath: 'M8.9,7.3L4.2,12l4.7,4.7l1.1-1.1L6.4,12L10,8.4L8.9,7.3z M15.1,7.3L14,8.4l3.6,3.6L14,15.6l1.1,1.1l4.7-4.7L15.1,7.3z',\n click: (editor) => {\n const node = editor.selection.get();\n const codeEl = this._getCodeEl(node.baseNode);\n if (codeEl) {\n codeEl.classList.remove('code');\n } else {\n editor.html.insert('<p class=\"code\">' + editor.selection.get().toString().replace(/\\n{1,}/g,'<br>') + '</p>');\n }\n }\n }\n ]\n };\n }\n\n public initialize() {\n this.editor.events.on('keydown', (e) => {\n if (e.keyCode === 13) {\n const selection = this.editor.selection.get();\n\n if (selection && this._getCodeEl(selection.baseNode)) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n let br = '<br>';\n const base = selection.baseNode;\n if (base.nodeName === '#text' && selection.baseOffset === base.length) {\n\n if (!(base.nextSibling && base.nextSibling.nodeName === 'BR')) {\n br += '<br>';\n }\n } else {\n const el: any = Array.from(base.childNodes).splice(selection.baseOffset - 1, 1).pop();\n if (el && el.nodeName !== 'BR') {\n br += '<br>';\n }\n }\n\n this.editor.html.insert(br);\n return false;\n }\n }\n }, true);\n }\n\n public destroy() {}\n\n private _getCodeEl(el) {\n\n if (el) {\n if (el.classList && el.classList.contains('code')) {\n return el;\n }\n\n if (el.parentElement) {\n return this._getCodeEl(el.parentElement);\n }\n }\n\n return null;\n }\n}\n","import { ScreenRecordPluginConfig } from './configs/screen-record-plugin.config';\nimport { Plugin } from '../classes/plugin';\nimport { ResourceLoader } from '../utils/loader';\n\n\ndeclare var MediaRecorder: any;\n\nexport class ScreenRecordPlugin extends Plugin {\n\n private _activeEl;\n\n public constructor(public config: ScreenRecordPluginConfig = {}) {\n super();\n\n this.config = {\n ...config,\n name: config.name || 'screenRecord',\n buttons: [\n {\n name: 'screenRecord',\n svgPath: `M14.7,7.7v6.1H7.1V7.7H14.7 M16.3,9.6V6.9c0-0.4-0.3-0.8-0.8-0.8H6.4c-0.4,0-0.8,0.3-0.8,0.8v7.6c0,0.4,0.3,0.8,0.8,0.8h9.1c0.4,0,0.8-0.3,0.8-0.8v-2.7l1.7,1.7c0.3,0.3,0.8,0.3,1.1,0c0.1-0.1,0.2-0.3,0.2-0.5V8.4c0-0.4-0.3-0.8-0.8-0.8\n\tc-0.2,0-0.4,0.1-0.5,0.2L16.3,9.6z M21.5,1.6H2.9c-0.7,0-1.3,0.7-1.3,1.6v14.6c0,0.9,0.6,1.6,1.3,1.6h7.6v1.1l-5,1c-0.2,0-0.4,0.3-0.4,0.6c0,0.3,0.2,0.4,0.4,0.4c0,0,0,0,0.1,0l5.3-1h2.6l5.3,1c0,0,0,0,0.1,0c0.2,0,0.4-0.2,0.4-0.4\n c0-0.3-0.1-0.6-0.4-0.6l-5-1v-1.1h7.6c0.7,0,1.3-0.7,1.3-1.6V3.2C22.9,2.3,22.3,1.6,21.5,1.6z M21.1,17.3H3.3V3.7h17.8L21.1,17.3L21.1,17.3z`,\n tooltip: 'Screen Record',\n click: (editor) => {\n\n (<any>navigator).mediaDevices.getDisplayMedia({ video: true })\n .then((stream) => {\n const chunks = [];\n const options = { mimeType: 'video/webm; codecs=vp9' };\n let mediaRecorder = new MediaRecorder(stream, options);\n\n stream.addEventListener('inactive', (e) => {\n mediaRecorder.stop();\n mediaRecorder = null;\n stream.getTracks().forEach((track) => track.stop());\n stream = null;\n\n const blob = new Blob(chunks, { type: 'video/webm' });\n config.upload(blob)\n .subscribe((url) => {\n editor.html.insert(`<span class=\"fr-screen-record fr-deletable fr-draggable\"><video controls style=\"max-width:${config.maxWidth}\"><source src=\"${url}\" type=\"video/webm\"></video></span>`);\n });\n });\n\n mediaRecorder.addEventListener('dataavailable', (event) => {\n if (event.data && event.data.size > 0) {\n chunks.push(event.data);\n }\n });\n\n mediaRecorder.start(10);\n })\n .catch((e) => { });\n }\n }\n ]\n };\n }\n\n public async initialize() {\n await ResourceLoader.loadStyles('froala')\n .toPromise();\n\n const FroalaEditor = (window as any).FroalaEditor;\n\n this.editor.events.on('mouseup', (e) => {\n const el = this._getEl(e.target);\n\n if (el) {\n this.editor.popups.hideAll();\n this._activeEl = el;\n this._showPopup(el);\n }\n });\n\n FroalaEditor.POPUP_TEMPLATES[\"screenRecordPlugin.popup\"] = '[_BUTTONS_]';\n\n FroalaEditor.DefineIcon('popupClose', { NAME: 'trash', SVG_KEY: 'remove' });\n FroalaEditor.RegisterCommand('popupClose', {\n title: 'Remove',\n undo: false,\n focus: false,\n callback: () => {\n if (this._activeEl) {\n this._activeEl.remove();\n }\n }\n });\n }\n\n private _createPopup() {\n\n const template = {\n buttons: `<div class=\"fr-buttons\">${this.editor.button.buildList(['popupClose'])}</div>`,\n };\n\n return this.editor.popups.create('screenRecordPlugin.popup', template);\n }\n\n private _showPopup (el) {\n var $popup = this.editor.popups.get('screenRecordPlugin.popup');\n\n if (!$popup) {\n $popup = this._createPopup();\n }\n\n this.editor.popups.setContainer('screenRecordPlugin.popup', this.editor.$(el));\n\n const left = el.offsetLeft + el.offsetWidth / 2;\n\n this.editor.popups.show('screenRecordPlugin.popup', left, null);\n }\n\n private _getEl(el) {\n if (el && el.classList) {\n if (el.classList.contains('fr-screen-record'))\n return el;\n\n return this._getEl(el.parentNode);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {Plugin as ɵe} from './app/classes/plugin';\nexport {DefaultPlugin as ɵd} from './app/enums/default-plugin.enum';\nexport {FsHtmlEditorConfigFactory as ɵa} from './app/fs-html-editor.module';\nexport {FS_HTML_EDITOR_DEFAULT_CONFIG as ɵb} from './app/injects/config.inject';\nexport {FsFroalaLoaderService as ɵc} from './app/services/froala-loader.service';"],"names":[],"mappings":";;;;;;;;;;;;;IAAa,WAAW,GAAG;IACzB,aAAa;IACb,aAAa;IACb,YAAY;IACZ,aAAa;;;ICJF,WAAW,GAAG;IACrB,iBAAiB;IACjB,MAAM;IACN,MAAM;IACN,QAAQ;IACR,WAAW;IACX,eAAe;IACf,WAAW;IACX,aAAa;IACb,YAAY;IACZ,UAAU;IACV,WAAW;IACX,iBAAiB;IACjB,aAAa;IACb,aAAa;IACb,iBAAiB;IACjB,OAAO;;;IChBA,gBAAgB,GAAG;IAC9B,OAAO;IACP,UAAU;IACV,UAAU;IACV,WAAW;IACX,QAAQ;IACR,SAAS;;;ICJE,6BAA6B,GAAG,IAAI,cAAc,CAAQ,+BAA+B,EAAE;IAC3F,qBAAqB,GAAG,IAAI,cAAc,CAAQ,uBAAuB;;ACAtF,SAAS,qBAAqB;IAC5B,IAAI,YAAY,GAAG,oBAAoB,CAAC;IACxC,IAAI,UAAU,GAAG,cAAc,CAAC;IAEhC,IAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAM,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;IAErD,IAAM,aAAa,GAAG;QACpB,MAAM,EAAE,sBAAsB;QAC9B,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,uBAAuB;QAC/B,KAAK,EAAE,sBAAsB;QAC7B,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,sBAAsB;QAC7B,gBAAgB,EAAE,iCAAiC;QACnD,KAAK,EAAE,sBAAsB;QAC7B,GAAG,EAAE,oBAAoB;QACzB,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,sBAAsB;QAC7B,SAAS,EAAE,0BAA0B;QACrC,SAAS,EAAE,0BAA0B;KACtC,CAAA;IAED,IAAM,WAAW,GAAG;QAClB,MAAM,EAAE,4BAA4B;KACrC,CAAA;IAED,IAAM,YAAY,GAAG,UAAU,UAAkB;QAC/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC1B,IAAM,IAAI,GAAG,IAAI,UAAU,CAAC,UAAC,GAAG;gBAE9B,IAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,CAAC,GAAG,GAAG,UAAU,CAAC;gBAExB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAEzB,MAAM,CAAC,MAAM,GAAG;oBACd,GAAG,CAAC,IAAI,EAAE,CAAC;oBACX,GAAG,CAAC,QAAQ,EAAE,CAAC;iBAChB,CAAC;gBAEF,MAAM,CAAC,OAAO,GAAG,UAAC,GAAG;oBACnB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAChB,CAAA;aACF,CAAC;iBACC,IAAI,CACH,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;YAEJ,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;SAC7B;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KAC9B,CAAC;IAEF,IAAM,UAAU,GAAG,UAAU,SAAiB;QAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACzB,IAAM,IAAI,GAAG,IAAI,UAAU,CAAC,UAAC,GAAG;gBAC9B,IAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC7C,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC;gBACrB,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC;gBACzB,KAAK,CAAC,IAAI,GAAG,KAAG,SAAW,CAAC;gBAE5B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAExB,KAAK,CAAC,MAAM,GAAG;oBACb,GAAG,CAAC,IAAI,EAAE,CAAC;oBACX,GAAG,CAAC,QAAQ,EAAE,CAAC;iBAChB,CAAC;gBAEF,KAAK,CAAC,OAAO,GAAG,UAAC,GAAG;oBAClB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAChB,CAAA;aACF,CAAC,CAAC;YAEH,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAC5B;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KAC7B,CAAC;IAEF,OAAO;QACL,eAAe,EAAE,UAAC,IAAY;YAC5B,YAAY,GAAG,IAAI,CAAC;SACrB;QACD,aAAa,EAAE,UAAC,IAAY;YAC1B,UAAU,GAAG,IAAI,CAAC;SACnB;QACD,YAAY,EAAE,UAAC,YAAoB;YACjC,IAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC;YAEzD,OAAO,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;SAC1C;QACD,UAAU,EAAE,UAAC,YAAoB;YAC/B,IAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC;YAEvD,OAAO,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;SACtC;KACF,CAAA;AACH,CAAC;AAGM,IAAM,cAAc,GAAG,qBAAqB,EAAE;;;IC5EnD,+BACqD,cAAkC;QAAlC,mBAAc,GAAd,cAAc,CAAoB;QAZ/E,kBAAa,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAC3C,0BAAqB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAEnD,aAAQ,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;aAC/E,IAAI,CACH,GAAG,CAAC,UAAC,EAA0B;gBAA1B,kBAA0B,EAAzB,mBAAW,EAAE,mBAAW;YAC5B,OAAO,WAAW,IAAI,WAAW,CAAC;SACnC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;QAKF,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;gBACpC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;aACjE;YAED,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;gBACrC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;aAChE;SACF;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;IAED,sBAAW,0CAAO;aAAlB;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;;;OAAA;IAED,sBAAW,wCAAK;aAAhB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC;SAC/E;;;OAAA;IAED,sBAAW,+CAAY;aAAvB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC;SAC3B;;;OAAA;IAEO,qCAAK,GAAb;QAAA,iBAkBC;QAjBC,aAAa,CAAC;YACZ,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC;YACrC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC;SACpC,CAAC;aACC,IAAI,CACH,GAAG,CAAC;YACF,KAAI,CAAC,aAAa,GAAI,MAAc,CAAC,YAAY,CAAC;YAClD,KAAI,CAAC,WAAW,EAAE,CAAC;SACpB,CAAC,EACF,SAAS,CAAC;YACR,OAAO,KAAI,CAAC,YAAY,EAAE,CAAC;SAC5B,CAAC,EACF,GAAG,CAAC;YACF,KAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B,CAAC,CACH;aACA,SAAS,EAAE,CAAC;KAChB;IAEO,4CAAY,GAApB;QACE,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc;aAChC,cAAc;aACd,MAAM,CAAC,UAAC,GAAG,EAAE,UAAU;YACtB,IAAM,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAExD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAElB,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;QAET,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;IAEO,2CAAW,GAAnB;QACE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;IAEO,mDAAmB,GAA3B;QACE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvC;;gDAnEE,QAAQ,YAAI,MAAM,SAAC,qBAAqB;;;IAhBhC,qBAAqB;QAHjC,UAAU,CAAC;YACV,UAAU,EAAE,MAAM;SACnB,CAAC;QAiBG,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,qBAAqB,CAAC,CAAA;;OAhBjC,qBAAqB,CAoFjC;gCAlGD;CAcA;;;ICgEE,+BACqD,cAAc,EACzD,MAAyB,EACzB,GAA0B;QAFiB,mBAAc,GAAd,cAAc,CAAA;QACzD,WAAM,GAAN,MAAM,CAAmB;QACzB,QAAG,GAAH,GAAG,CAAuB;QAlBN,iBAAY,GAAG,KAAK,CAAC;QACpB,kBAAa,GAAG,KAAK,CAAC;QAIrC,WAAM,GAAuB,EAAE,CAAC;QAEzC,gBAAW,GAAG,KAAK,CAAC;QAInB,iBAAY,GAAG,IAAI,aAAa,EAAE,CAAC;QACnC,kBAAa,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,cAAS,GAAG,IAAI,OAAO,EAAE,CAAC;QAQ3B,aAAQ,GAAG,UAAC,IAAS,KAAO,CAAA;QAC5B,cAAS,GAAG,eAAQ,CAAA;KAHtB;8BArBM,qBAAqB;IA0BhC,sBAAW,qCAAE;aAAb;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;SACjC;;;OAAA;IAED,sBAAW,uCAAI;aAAf;YACE,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;;;OAAA;IAED,sBAAW,yCAAM;aAAjB;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;;;OAAA;IAED,sBAAW,gDAAa;aAAxB;YACE,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;SACzB;;;OAAA;IAEM,wCAAQ,GAAf;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjF,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5C,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAEM,+CAAe,GAAtB;QACE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YAClD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC1B;KACF;IAEM,0CAAU,GAAjB;QACE,IAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAC;SACb;QAED,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;KAC9B;IAEM,0CAAU,GAAjB,UAAkB,OAAiB;QAAnC,iBASC;QATiB,wBAAA,EAAA,YAAiB;QACjC,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEpC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;;QAG1B,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE;YACvE,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;SAC9C,CAAC,CAAC;KACJ;IAEO,mDAAmB,GAA3B,UAA4B,IAAI;QAAhC,iBAUC;QATC,IAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;QACtC,IAAM,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QAE9B,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aAChD,IAAI,CACH,SAAS,CAAC,UAAC,EAAa;gBAAb,kBAAa,EAAZ,SAAC;YACX,OAAO,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;SACxC,CAAC,CACH,CAAC;KACL;IAEO,4CAAY,GAApB,UAAqB,IAAI;QACvB,IAAI,IAAI,EAAE;YACR,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;gBACpC,OAAO,IAAI,CAAC;aACb;YACD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9C;SACF;KACF;IAEM,kDAAkB,GAAzB,UAA0B,KAAc;QACtC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAC3B,IAAM,QAAM,GAAQ,KAAK,CAAC,MAAM,CAAC;YACjC,IAAI,QAAM,IAAI,QAAM,CAAC,QAAQ,KAAK,GAAG,IAAI,QAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;gBACpE,IAAM,cAAY,GAAG,QAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACnD,QAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACxC,UAAU,CAAC;oBACT,IAAI,cAAY,EAAE;wBAChB,QAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAY,CAAC,CAAC;qBAC7C;yBAAM;wBACL,QAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;qBAClC;iBACF,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;oBACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;iBAC9B;gBACD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aACzB;SACF;KACF;IAEM,0CAAU,GAAjB;;QAEE,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC3C;IAEM,wCAAQ,GAAf,UAAgB,OAAwB;QAEtC,IAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE;YACvC,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACxC,IAAM,QAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACjC,IAAI,QAAM,GAAG,SAAS,EAAE;gBACtB,GAAG,CAAC,cAAc,GAAG,aAAW,SAAS,0CAAqC,QAAM,iBAAc,CAAC;aACpG;SACF;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;KAC7C;IAEM,qCAAK,GAAZ,UAAa,OAA8C;QACzD,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC;QAEjC,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACxD;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1D;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAEhC,IAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACpD,IAAI,WAAW,EAAE;YACf,WAAW,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;SACjD;KACF;IAEM,qCAAK,GAAZ;QACE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;KACrB;IAEM,uCAAO,GAAd;QACE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC3B;IAEM,uCAAO,GAAd,UAAe,IAAI;QACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACvB;IAEM,0CAAU,GAAjB,UAAkB,IAAY;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QAExB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACnC,IAAI;gBACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAClC;YAAC,OAAO,CAAC,EAAE;aACX;SACF;QAED,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAC5B;IAEM,gDAAgB,GAAvB,UAAwB,EAAuB;QAC7C,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;IAEM,iDAAiB,GAAxB,UAAyB,EAAc;QACrC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;IAEM,2CAAW,GAAlB;QACE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAEM,uCAAO,GAAd;QACE,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SACvB;QACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC3B,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;KACxB;IAEO,6CAAa,GAArB;QACE,OAAO,KAAK,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KACtE;IAEO,uCAAO,GAAf,UAAgB,IAAI;;QAElB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACrB;IAEO,4CAAY,GAApB,UAAqB,MAAM;QAA3B,iBAoCC;QAlCC,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC,UAAC,MAAc;YAC5C,KAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,MAAM;gBAClE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;gBACvB,MAAM,CAAC,UAAU,EAAE,CAAC;gBACpB,OAAO,MAAM,CAAC;aACf,CAAC;YAEF,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC,UAAC,MAAoB;gBACzD,KAAI,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;oBAC5C,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,OAAO;iBACrB,CAAC,CAAC;gBAEH,KAAI,CAAC,GAAG,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE;oBACjD,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,MAAM,CAAC,OAAO;oBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;oBACjD,QAAQ,EAAE;wBACR,IAAI,MAAM,CAAC,KAAK,EAAE;4BAChB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;yBACpB;qBACF;oBACD,OAAO,EAAE,UAAU,MAAM;wBACvB,IAAI,MAAM,CAAC,OAAO,EAAE;4BAClB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;yBAC9B;qBACF;iBACF,CAAC,CAAC;aACJ,CAAC,CAAC;SAEJ,CAAC,CAAC;KACJ;IAEO,8CAAc,GAAtB;QACE,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEpC,OAAO,KAAK;;;QAGV,EAAE,EACF;YACE,GAAG,EAAE,MAAM,CAAC,aAAa;YACzB,eAAe,EAAE,MAAM,CAAC,WAAW;YACnC,eAAe,EAAE,IAAI;YACrB,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,GAAG;YAChB,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,KAAK;YACrB,iBAAiB,EAAE,CAAC;YACpB,iBAAiB,EAAE,MAAM;YACzB,kBAAkB,EAAE,KAAK;YACzB,yBAAyB,EAAE,QAAQ;YACnC,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE;gBACf,CAAC,EAAE,QAAQ;gBACX,EAAE,EAAE,WAAW;gBACf,EAAE,EAAE,WAAW;gBACf,EAAE,EAAE,WAAW;gBACf,EAAE,EAAE,WAAW;gBACf,UAAU,EAAE,OAAO;aACpB;YACD,wBAAwB,EAAE,IAAI;YAC9B,gBAAgB,EAAE;gBAChB,QAAQ,EAAE;oBACR,OAAO,EAAE,WAAW;oBACpB,cAAc,EAAE,CAAC;iBAClB;gBACD,aAAa,EAAE;oBACb,OAAO,EAAE,gBAAgB;oBACzB,cAAc,EAAE,CAAC;iBAClB;gBACD,QAAQ,EAAE;oBACR,OAAO,EAAE,WAAW;oBACpB,cAAc,EAAE,CAAC;iBAClB;aACF;YACD,cAAc,EAAE;gBACd,QAAQ,EAAE;oBACR,OAAO,EAAE,WAAW;oBACpB,cAAc,EAAE,CAAC;iBAClB;gBACD,aAAa,EAAE;oBACb,OAAO,EAAE,gBAAgB;oBACzB,cAAc,EAAE,CAAC;iBAClB;gBACD,QAAQ,EAAE;oBACR,OAAO,EAAE,WAAW;oBACpB,cAAc,EAAE,CAAC;iBAClB;aACF;SACF,EACD,MAAM,CAAC,YAAY,CACpB,CAAC;KACH;IAEO,+CAAe,GAAvB;QAAA,iBAuBC;QAtBC,IAAI,CAAC,aAAa;aACf,IAAI,CACH,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,GAAA,CAAC,EACxB,SAAS,CAAC,cAAM,OAAA,KAAI,CAAC,YAAY,GAAA,CAAC,EAClC,GAAG,CAAC;YACF,IAAM,SAAS,GAAQ,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7C,IAAM,OAAO,GAAQ,EAAE,CAAC;YACxB,IAAI,SAAS,CAAC,QAAQ,EAAE;gBACtB,OAAO,CAAC,SAAS,GAAG;oBAClB,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS;oBAClC,MAAM,EAAE,SAAS,CAAC,UAAU;iBAC7B,CAAC;aACH;YACD,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC1B,CAAC,EACF,SAAS,CAAC,cAAM,OAAA,KAAI,CAAC,aAAa,GAAA,CAAC,EACnC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,CAAC,CAAC,IAAI,GAAA,CAAC,EACxB,GAAG,CAAC,UAAC,EAAmB;gBAAjB,kBAAM,EAAE,oBAAO;YACpB,KAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACpC,CAAC,CACH;aACA,SAAS,EAAE,CAAC;KAChB;IAEO,+CAAe,GAAvB;QACE,IAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAE3C,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SAC1B;KACF;IAEO,4CAAY,GAApB,UAAqB,MAA0B,EAAE,OAAY;QAA7D,iBAkIC;QAjIC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAE3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;QAED,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE;YAC9B,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE;gBAC1C,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;aAC1C;SACF;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;YAC9B,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,KAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;SAC5B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE;YAC7B,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,KAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;SAC5B,CAAC,CAAC;QAGH,gBAAgB,CACd,UAAC,OAAO;YACN,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;SACnD,EACD,eAAQ,CACT;aACE,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,GAAG,CAAC,cAAM,OAAA,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAA,CAAC,EACjC,oBAAoB,EAAE,EACtB,IAAI,CAAC,CAAC,CAAC,CACR;aACA,SAAS,CAAC;YACT,KAAI,CAAC,eAAe,EAAE,CAAC;SACxB,CAAC,CAAC;;;;;;;QASL,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,UAAC,IAAI;YAChD,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACxC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;YACrB,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC;iBACtB,OAAO,CAAC,UAAC,EAAE;gBACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC7C,IAAM,MAAI,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACnC,IAAI,MAAI,KAAK,MAAM,EAAE;wBACnB,EAAE,CAAC,eAAe,CAAC,MAAI,CAAC,CAAC;qBAC1B;iBACF;aACF,CAAC,CAAC;YACL,OAAO,GAAG,CAAC,SAAS,CAAC;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE;YAChC,KAAI,CAAC,SAAS,EAAE,CAAC;SAClB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YACjD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,UAAC,KAAK;gBAEtD,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;qBAC7B,IAAI,CAAC,UAAC,GAAG;oBACR,GAAG,CAAC,IAAI,EAAE;yBACP,IAAI,CAAC,UAAC,IAAI;wBACT,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;6BAC3B,IAAI,CACH,SAAS,CAAC,KAAI,CAAC,SAAS,CAAC,CAC1B;6BACA,SAAS,CAAC,UAAC,GAAG;4BACb,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;4BAC/B,KAAK,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;4BAE9C,KAAI,CAAC,eAAe,EAAE,CAAC;yBACxB,CAAC,CAAC;qBACN,CAAC,CAAC;iBACN,CAAC,CAAC;gBAEL,OAAO,KAAK,CAAC;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,UAAC,KAAK;gBACjD,KAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;qBAC/B,IAAI,CACH,SAAS,CAAC,KAAI,CAAC,SAAS,CAAC,CAC1B;qBACA,SAAS,CAAC,UAAC,GAAG;oBACb,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;iBACpE,CAAC,CAAC;gBAEL,OAAO,KAAK,CAAC;aACd,CAAC,CAAC;SACJ;QAED,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE;YAC/C,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,CAAC;SACtD;QAED,IAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAEpC,IAAI,SAAS,EAAE;YACb,IAAM,IAAI,GAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,UAAC,IAAS;gBACrF,OAAO,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC;aAC5C,CAAC,CAAC;YAEH,IAAI,IAAI,EAAE;gBACR,IAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACrC,IAAM,GAAG,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;gBAElC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC1D,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;gBAEpB,GAAG,CAAC,eAAe,EAAE,CAAC;gBACtB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACrB;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;gBAChC,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;SACF;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;;;gDA/cE,QAAQ,YAAI,MAAM,SAAC,qBAAqB;gBACzB,iBAAiB;gBACpB,qBAAqB;;IAlBN;QAA7B,WAAW,CAAC,eAAe,CAAC;;+DAAsB;IACpB;QAA9B,WAAW,CAAC,gBAAgB,CAAC;;gEAAuB;IAEjC;QAAnB,SAAS,CAAC,OAAO,CAAC;kCAAe,UAAU;wDAAC;IAEpC;QAAR,KAAK,EAAE;;yDAAwC;IAPrC,qBAAqB;QAlBjC,SAAS,CAAC;YACT,QAAQ,EAAE,gBAAgB;YAC1B,kcAAyC;YAEzC,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,uBAAqB,GAAA,CAAC;oBACpD,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,OAAO,EAAE,aAAa;oBACtB,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,uBAAqB,GAAA,CAAC;oBACpD,KAAK,EAAE,IAAI;iBACZ;aACF;YACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;SAChD,CAAC;QAmBG,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,qBAAqB,CAAC,CAAA;iDAC1B,iBAAiB;YACpB,qBAAqB;OApBzB,qBAAqB,CAkejC;IAAD,4BAAC;CAleD;;;IC1CE,iCACU,SAAuB,EACvB,MAAyB;QADzB,cAAS,GAAT,SAAS,CAAc;QACvB,WAAM,GAAN,MAAM,CAAmB;KAC9B;IAVU,sBAAW,4CAAO;aAAlB,UAAmB,IAAI;YACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;SAC5B;;;OAAA;;gBAKoB,YAAY;gBACf,iBAAiB;;IATpB;QAAd,KAAK,CAAC,MAAM,CAAC;;;0DAGb;IALU,uBAAuB;QANnC,SAAS,CAAC;YACT,QAAQ,EAAE,kBAAkB;YAC5B,8FAA2C;YAE3C,eAAe,EAAE,uBAAuB,CAAC,MAAM;;SAChD,CAAC;yCAWqB,YAAY;YACf,iBAAiB;OAXxB,uBAAuB,CAcnC;IAAD,8BAAC;CAdD;;;ICgBA;KAcC;2BAdY,kBAAkB;IACtB,0BAAO,GAAd,UAAe,MAA+B;QAA/B,uBAAA,EAAA,WAA+B;QAC5C,OAAO;YACL,QAAQ,EAAE,oBAAkB;YAC5B,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,MAAM,EAAE;gBAC5D;oBACE,OAAO,EAAE,qBAAqB;oBAC9B,UAAU,EAAE,yBAAyB;oBACrC,IAAI,EAAE,CAAC,6BAA6B,CAAC;iBACtC;aACF;SACF,CAAC;KACH;;IAbU,kBAAkB;QAd9B,QAAQ,CAAC;YACR,OAAO,EAAE;gBACP,YAAY;gBACZ,gBAAgB;aACjB;YACD,OAAO,EAAE;gBACP,qBAAqB;gBACrB,uBAAuB;aACxB;YACD,YAAY,EAAE;gBACZ,qBAAqB;gBACrB,uBAAuB;aACxB;SACF,CAAC;OACW,kBAAkB,CAc9B;IAAD,yBAAC;CAdD,IAcC;SAEe,yBAAyB,CAAC,MAA0B;IAClE,kBACE,cAAc,EAAE;;;;;;;;;;;;;SAaf,IACE,MAAM,EACT;AACJ;;;ICzDA;KAQC;IAHQ,2BAAU,GAAjB,eAAsB;IACf,wBAAO,GAAd,eAAmB;IAErB,aAAC;AAAD,CAAC;;;ICDkC,iCAAM;IAOvC,uBAA0B,MAA2B;QAArD,YACE,iBAAO,SAkDR;QAnDyB,YAAM,GAAN,MAAM,CAAqB;QAF7C,WAAK,GAAG,IAAI,EAAE,CAAC;QAmEhB,cAAQ,GAAG,UAAC,KAAK;YACtB,IAAG,KAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACvB,IAAG,aAAa,CAAC,YAAY,KAAK,KAAI,CAAC,KAAK,EAAE;oBAC5C,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAClD;aACF;SACF,CAAA;QArEC,KAAI,CAAC,MAAM,yBACN,MAAM,KACT,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,MAAM,CAAC,QAAQ;oBACxB,KAAK,EAAE,UAAC,MAAM;wBACZ,KAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,KAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;qBAChD;iBACF;aACF,GACF,CAAC;QAEF,KAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC;YACxB,MAAM,EAAE,QAAQ,CAAC,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAI,CAAC,EAAE,GAAG,CAAC;YAClD,UAAU,EAAE;gBACV,GAAG,EAAE,EAAE;gBACP,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,IAAI;aACX;YACD,cAAc,EAAE,uCAAoC,KAAI,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAE;YACtF,SAAS,EAAE,uCAAoC,KAAI,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAE;YAChF,OAAO,EAAE,KAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,WAAW,EAAE,IAAI;YACjB,gBAAgB,EAAE,UAAC,IAAsB;gBACvC,OAAO,KAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACpD;YACD,cAAc,EAAE,UAAC,IAAsB;gBACrC,IAAM,QAAQ,GAAG,KAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAE7D,IAAI,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACpC,CAAC,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAEvB,IAAI,IAAI,GAAG,CAAC,CAAC,iBAAiB,CAAC;gBAC/B,IAAI,CAAC,IAAI,EAAE;oBACT,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oBACtC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;iBAC3B;gBAED,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;gBAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAEnC,OAAO,IAAI,CAAC,SAAS,CAAC;aACvB;SACF,CAAC,CAAC;QAEL,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC;;KAC7C;IAEM,kCAAU,GAAjB;QAAA,iBAUC;QATC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,CAAC;YACjC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAK,KAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBAChD,OAAO,KAAK,CAAC;aACd;SACF,EAAE,IAAI,CAAC,CAAC;QAGT,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpE;IAUM,+BAAO,GAAd;QACE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACvE;IAEO,iCAAS,GAAjB;QACE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,OAAO;YACtC,IAAI,OAAO,CAAC,IAAI,EAAE;gBAChB,OAAO,CAAC,QAAQ,EAAE,CAAC;aACpB;SACF,CAAC,CAAC;KACJ;IAEO,mCAAW,GAAnB,UAAoB,OAAO,EAAE,EAAE;QAC7B,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;aACtB,SAAS,CAAC,UAAC,IAAI;YACd,EAAE,CAAC,IAAI,CAAC,CAAC;SACV,CAAC,CAAC;KACd;IAhGc,0BAAY,GAAG,IAAI,CAAC;IACpB,uBAAS,GAAG,EAAE,CAAC;IAgGhC,oBAAC;CAAA,CAnGkC,MAAM;;;ICLJ,mCAAM;IAEzC,yBAA0B,MAA4C;QAA5C,uBAAA,EAAA,WAAyB,IAAI,EAAE,WAAW,EAAE;QAAtE,YACE,iBAAO,SAcR;QAfyB,YAAM,GAAN,MAAM,CAAsC;QAEpE,KAAI,CAAC,MAAM,yBACN,MAAM,KACT,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,4KAA4K;oBACrL,KAAK,EAAE,UAAC,MAAM;wBACZ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;qBAC5D;iBACF;aACF,GACF,CAAC;;KACH;IAEM,oCAAU,GAAjB;QACE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,CAAC;YAC/B,IAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE;gBAEzC,IAAM,KAAK,aAAI,EAAE,GAAK,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEjD,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;oBACpC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI;wBACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;qBAClC,CAAC,CAAC;iBACJ;qBAAM;oBACL,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI;wBACjB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;qBAC/B,CAAC,CAAC;iBACJ;aACF;SAEF,EAAE,KAAK,CAAC,CAAC;KACX;IAEH,sBAAC;AAAD,CAxCA,CAAqC,MAAM;;;ICAX,8BAAM;IAEpC,oBAA0B,MAAuC;QAAvC,uBAAA,EAAA,WAAyB,IAAI,EAAE,MAAM,EAAE;QAAjE,YACE,iBAAO,SAoBR;QArByB,YAAM,GAAN,MAAM,CAAiC;QAE/D,KAAI,CAAC,MAAM,yBACN,MAAM,KACT,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,mHAAmH;oBAC5H,KAAK,EAAE,UAAC,MAAM;wBACZ,IAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;wBACpC,IAAM,MAAM,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC9C,IAAI,MAAM,EAAE;4BACV,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;yBACjC;6BAAM;4BACL,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,EAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;yBAC/G;qBACF;iBACF;aACF,GACF,CAAC;;KACH;IAEM,+BAAU,GAAjB;QAAA,iBA4BC;QA3BC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,CAAC;YACjC,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE,EAAE;gBACpB,IAAM,SAAS,GAAG,KAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gBAE9C,IAAI,SAAS,IAAI,KAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;oBACpD,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;oBACpB,CAAC,CAAC,wBAAwB,EAAE,CAAC;oBAC7B,IAAI,EAAE,GAAG,MAAM,CAAC;oBAChB,IAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC;oBAChC,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,EAAE;wBAErE,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE;4BAC7D,EAAE,IAAI,MAAM,CAAC;yBACd;qBACF;yBAAM;wBACL,IAAM,EAAE,GAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;wBACtF,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,KAAK,IAAI,EAAE;4BAC9B,EAAE,IAAI,MAAM,CAAC;yBACd;qBACF;oBAED,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC5B,OAAO,KAAK,CAAC;iBACd;aACF;SACF,EAAE,IAAI,CAAC,CAAC;KACV;IAEM,4BAAO,GAAd,eAAmB;IAEX,+BAAU,GAAlB,UAAmB,EAAE;QAEnB,IAAI,EAAE,EAAE;YACN,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACjD,OAAO,EAAE,CAAC;aACX;YAED,IAAI,EAAE,CAAC,aAAa,EAAE;gBACpB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;aAC1C;SACF;QAED,OAAO,IAAI,CAAC;KACb;IACH,iBAAC;AAAD,CAvEA,CAAgC,MAAM;;;ICEE,sCAAM;IAI5C,4BAA0B,MAAqC;QAArC,uBAAA,EAAA,WAAqC;QAA/D,YACE,iBAAO,SA8CR;QA/CyB,YAAM,GAAN,MAAM,CAA+B;QAG7D,KAAI,CAAC,MAAM,yBACN,MAAM,KACT,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,cAAc,EACnC,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,glBAEuH;oBAChI,OAAO,EAAE,eAAe;oBACxB,KAAK,EAAE,UAAC,MAAM;wBAEN,SAAU,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;6BAC3D,IAAI,CAAC,UAAC,MAAM;4BACX,IAAM,MAAM,GAAG,EAAE,CAAC;4BAClB,IAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,wBAAwB,EAAE,CAAC;4BACvD,IAAI,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;4BAEvD,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAC,CAAC;gCACpC,aAAa,CAAC,IAAI,EAAE,CAAC;gCACrB,aAAa,GAAG,IAAI,CAAC;gCACrB,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,IAAI,EAAE,GAAA,CAAC,CAAC;gCACpD,MAAM,GAAG,IAAI,CAAC;gCAEd,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;gCACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;qCAChB,SAAS,CAAC,UAAC,GAAG;oCACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,kGAA6F,MAAM,CAAC,QAAQ,yBAAkB,GAAG,2CAAqC,CAAC,CAAC;iCAC5L,CAAC,CAAC;6BACJ,CAAC,CAAC;4BAEH,aAAa,CAAC,gBAAgB,CAAC,eAAe,EAAE,UAAC,KAAK;gCACpD,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;oCACrC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iCACzB;6BACF,CAAC,CAAC;4BAEH,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;yBACzB,CAAC;6BACD,KAAK,CAAC,UAAC,CAAC,KAAQ,CAAC,CAAC;qBACtB;iBACF;aACF,GACF,CAAC;;KACH;IAEY,uCAAU,GAAvB;;;;;;4BACE,qBAAM,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC;6BACtC,SAAS,EAAE,EAAA;;wBADd,SACc,CAAC;wBAET,YAAY,GAAI,MAAc,CAAC,YAAY,CAAC;wBAElD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,CAAC;4BACjC,IAAM,EAAE,GAAG,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;4BAEjC,IAAI,EAAE,EAAE;gCACN,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gCAC7B,KAAI,CAAC,SAAS,GAAG,EAAE,CAAC;gCACpB,KAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;6BACrB;yBACF,CAAC,CAAC;wBAEH,YAAY,CAAC,eAAe,CAAC,0BAA0B,CAAC,GAAG,aAAa,CAAC;wBAEzE,YAAY,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;wBAC5E,YAAY,CAAC,eAAe,CAAC,YAAY,EAAE;4BACzC,KAAK,EAAE,QAAQ;4BACf,IAAI,EAAE,KAAK;4BACX,KAAK,EAAE,KAAK;4BACZ,QAAQ,EAAE;gCACR,IAAI,KAAI,CAAC,SAAS,EAAE;oCAClB,KAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;iCACzB;6BACF;yBACF,CAAC,CAAC;;;;;KACJ;IAEO,yCAAY,GAApB;QAEE,IAAM,QAAQ,GAAG;YACf,OAAO,EAAE,+BAA2B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,WAAQ;SACzF,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;KACxE;IAEO,uCAAU,GAAlB,UAAoB,EAAE;QACpB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAEhE,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,0BAA0B,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE/E,IAAM,IAAI,GAAG,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;KACjE;IAEO,mCAAM,GAAd,UAAe,EAAE;QACf,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE;YACtB,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBAC3C,OAAO,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;SACnC;KACF;IACH,yBAAC;AAAD,CAnHA,CAAwC,MAAM;;ACP9C;;;;;;"}
@@ -1,9 +1,9 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- export { Plugin as ɵe } from './app/classes/plugin';
6
- export { DefaultPlugin as ɵd } from './app/enums/default-plugin.enum';
7
- export { FsHtmlEditorConfigFactory as ɵa } from './app/fs-html-editor.module';
8
- export { FS_HTML_EDITOR_DEFAULT_CONFIG as ɵb } from './app/injects/config.inject';
9
- export { FsFroalaLoaderService as ɵc } from './app/services/froala-loader.service';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ export { Plugin as ɵe } from './app/classes/plugin';
6
+ export { DefaultPlugin as ɵd } from './app/enums/default-plugin.enum';
7
+ export { FsHtmlEditorConfigFactory as ɵa } from './app/fs-html-editor.module';
8
+ export { FS_HTML_EDITOR_DEFAULT_CONFIG as ɵb } from './app/injects/config.inject';
9
+ export { FsFroalaLoaderService as ɵc } from './app/services/froala-loader.service';
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"ɵa":{"__symbolic":"function","parameters":["config"],"value":{"defaultPlugins":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Align"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Colors"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Image"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Link"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Lists"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"ParagraphFormat"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Quote"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Table"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Url"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Video"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Draggable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"FontSize"}]}},"FsHtmlEditorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"reference","module":"@firestitch/skeleton","name":"FsSkeletonModule","line":15,"character":4}],"exports":[{"__symbolic":"reference","name":"FsHtmlEditorComponent"},{"__symbolic":"reference","name":"FsHtmlRendererComponent"}],"declarations":[{"__symbolic":"reference","name":"FsHtmlEditorComponent"},{"__symbolic":"reference","name":"FsHtmlRendererComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"defaults":[{}],"value":{"ngModule":{"__symbolic":"reference","name":"FsHtmlEditorModule"},"providers":[{"provide":{"__symbolic":"reference","name":"ɵb"},"useValue":{"__symbolic":"reference","name":"config"}},{"provide":{"__symbolic":"reference","name":"FS_HTML_EDITOR_CONFIG"},"useFactory":{"__symbolic":"reference","name":"ɵa"},"deps":[{"__symbolic":"reference","name":"ɵb"}]}]}}}},"FsHtmlEditorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":43,"character":1},"arguments":[{"selector":"fs-html-editor","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":49,"character":15},"useExisting":{"__symbolic":"reference","name":"FsHtmlEditorComponent"},"multi":true},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":54,"character":15},"useExisting":{"__symbolic":"reference","name":"FsHtmlEditorComponent"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":59,"character":19},"member":"OnPush"},"template":"<div class=\"fs-html-editor-default\">\n <ng-container *ngIf=\"initialized\">\n <ng-container *fsSkeleton=\"(froalaLoaded$ | async) !== false\">\n </ng-container>\n </ng-container>\n\n <div #elRef></div>\n\n <div class=\"bottom-line\"></div>\n <div class=\"disabled-line\"></div>\n <fs-html-renderer\n *ngIf=\"!initialized\"\n [html]=\"html\"\n (click)=\"uninitializedClick($event)\">\n </fs-html-renderer>\n</div>\n","styles":[":host ::ng-deep .fr-box.fr-basic .fr-wrapper{border:0;border-bottom:1px solid #949494;margin-bottom:1px;background-color:transparent}:host ::ng-deep .fr-box.fr-basic .fr-element{padding:0;font-family:inherit;color:inherit;font-size:inherit;line-height:inherit;min-height:auto}:host ::ng-deep .fr-dropdown-menu .fr-dropdown-wrapper,:host ::ng-deep .fr-dropdown:after,:host ::ng-deep .fr-more-toolbar,:host ::ng-deep .fr-toolbar{transition:none!important}:host ::ng-deep .fr-toolbar{position:-webkit-sticky;position:sticky;z-index:2;border-radius:0;background-color:transparent}:host ::ng-deep .fr-toolbar .fr-btn-grp{margin:0 20px 0 0}:host ::ng-deep .fr-toolbar .fr-btn-grp:nth-child(1):after,:host ::ng-deep .fr-toolbar .fr-btn-grp:nth-child(2):after{content:\"\";position:absolute;top:9px;height:30px;border-left:1px solid #e5e5e5;margin-left:10px}:host ::ng-deep .fr-toolbar div:first-of-type:before{border:none}:host ::ng-deep .fr-toolbar.fr-toolbar-open .fr-newline{height:auto}:host ::ng-deep .fr-toolbar .fr-btn-grp:first-child{margin-left:0}:host ::ng-deep .fr-toolbar.fr-top{border:0}:host ::ng-deep .fr-toolbar .fr-newline{margin:0}:host ::ng-deep .fr-toolbar .fr-more-toolbar{z-index:auto}:host ::ng-deep .fr-toolbar .fr-command.fr-btn{z-index:auto}:host ::ng-deep .fr-toolbar .fr-command.fr-btn.fr-dropdown:after{right:3px}:host ::ng-deep .fr-toolbar .fr-command.fr-btn.fr-dropdown.fr-selection span{margin-right:24px}:host ::ng-deep .fr-toolbar .fr-command.fr-btn.fr-open{border-radius:4px;margin:4px 2px}:host ::ng-deep .fr-view ol,:host ::ng-deep .fr-view ul{list-style-position:unset}:host.disabled ::ng-deep .fr-box.fr-basic{opacity:.5;pointer-events:none}:host.disabled ::ng-deep .fr-box.fr-basic .fr-wrapper{border:none}:host.disabled ::ng-deep .disabled-line{display:block}::ng-deep .fr-popup{z-index:1001!important}::ng-deep .fr-video-by-url-layer .fr-checkbox-line{display:none}.disabled-line{display:none;position:absolute;bottom:-1px;z-index:1;background-image:linear-gradient(90deg,rgba(0,0,0,.42) 0,rgba(0,0,0,.42) 33%,transparent 0);background-size:4px 100%;background-repeat:repeat-x;height:1px;width:100%}.bottom-line{opacity:0;transform-origin:50%;transform:scaleX(.5);transition:background-color .3s cubic-bezier(.55,0,.55,.2);width:100%;border-bottom:2px solid #949494;position:absolute;bottom:-1px;z-index:1}:host{position:relative;display:block}:host.focused .bottom-line{opacity:1;display:block;transform:scaleX(1);transition:transform .3s cubic-bezier(.25,.8,.25,1),opacity .1s cubic-bezier(.25,.8,.25,1),background-color .3s cubic-bezier(.25,.8,.25,1)}::ng-deep .fs-html-editor-mention-container{position:absolute;top:0;left:0;height:auto;max-height:300px;max-width:500px;overflow:auto;display:block;z-index:999999;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);border-bottom-left-radius:4px;border-bottom-right-radius:4px;background:#fff}::ng-deep .fs-html-editor-mention-container ul{margin:0;padding:0;list-style:none}::ng-deep .fs-html-editor-mention-container li{padding:0 16px;cursor:pointer;line-height:48px}::ng-deep .fs-html-editor-mention-container li.highlight,::ng-deep .fs-html-editor-mention-container li:hover{background:#f5f5f5}::ng-deep .fs-html-editor-mention-container li.no-match{cursor:default}"]}]}],"members":{"classFocused":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":63,"character":3},"arguments":["class.focused"]}]}],"classDisabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":64,"character":3},"arguments":["class.disabled"]}]}],"elRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":66,"character":3},"arguments":["elRef"]}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":79,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":79,"character":17},"arguments":[{"__symbolic":"reference","name":"FS_HTML_EDITOR_CONFIG"}]}],null,null],"parameters":[null,{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":80,"character":20},{"__symbolic":"reference","name":"ɵc"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"hasContent":[{"__symbolic":"method"}],"initialize":[{"__symbolic":"method"}],"_processImageUpload":[{"__symbolic":"method"}],"_getTextNode":[{"__symbolic":"method"}],"uninitializedClick":[{"__symbolic":"method"}],"updateSize":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"disable":[{"__symbolic":"method"}],"setHtml":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"_createConfig":[{"__symbolic":"method"}],"_change":[{"__symbolic":"method"}],"_initPlugins":[{"__symbolic":"method"}],"_createOptions":[{"__symbolic":"method"}],"_listenLazyInit":[{"__symbolic":"method"}],"_contentChanged":[{"__symbolic":"method"}],"_setupFroala":[{"__symbolic":"method"}]}},"FsHtmlRendererComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"fs-html-renderer","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":8,"character":19},"member":"OnPush"},"template":"<div class=\"fr-view fs-html-editor-default\" [innerHtml]=\"trustedHtml\"></div>\n","styles":[""]}]}],"members":{"setHtml":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3},"arguments":["html"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":20,"character":23},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":21,"character":20}]}]}},"ɵb":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":2,"character":49},"arguments":["fs-html-editor.default-config"]},"FS_HTML_EDITOR_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":3,"character":41},"arguments":["fs-html-editor.config"]},"ParagraphButtons":["align","formatOL","formatUL","checklist","indent","outdent"],"TextButtons":["paragraphFormat","code","bold","italic","underline","strikeThrough","subscript","superscript","fontFamily","fontSize","textColor","backgroundColor","inlineClass","inlineStyle","clearFormatting","quote"],"RichButtons":["insertTable","insertImage","insertLink","insertVideo"],"MentionPlugin":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MentionPluginConfig"}]}],"initialize":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"_closeAll":[{"__symbolic":"method"}],"_loadValues":[{"__symbolic":"method"}]},"statics":{"_tributes":[]}},"ChecklistPlugin":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"PluginConfig"}]}],"initialize":[{"__symbolic":"method"}]}},"CodePlugin":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"PluginConfig"}]}],"initialize":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"_getCodeEl":[{"__symbolic":"method"}]}},"ScreenRecordPlugin":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ScreenRecordPluginConfig"}]}],"initialize":[{"__symbolic":"method"}],"_createPopup":[{"__symbolic":"method"}],"_showPopup":[{"__symbolic":"method"}],"_getEl":[{"__symbolic":"method"}]}},"MentionPluginConfig":{"__symbolic":"interface"},"ScreenRecordPluginConfig":{"__symbolic":"interface"},"FsHtmlEditorConfig":{"__symbolic":"interface"},"PluginConfig":{"__symbolic":"interface"},"PluginButton":{"__symbolic":"interface"},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":30,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":17},"arguments":[{"__symbolic":"reference","name":"FS_HTML_EDITOR_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","name":"FsHtmlEditorConfig"}]}],"_load":[{"__symbolic":"method"}],"_loadPlugins":[{"__symbolic":"method"}],"_froalaDone":[{"__symbolic":"method"}],"_defaultPluginsDone":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵd":{"Align":"align","Colors":"colors","Image":"image","Link":"link","Lists":"lists","ParagraphFormat":"paragraph_format","Table":"table","Url":"url","Video":"video","Quote":"quote","Draggable":"draggable","FontSize":"font_size"},"ɵe":{"__symbolic":"class","members":{"initialize":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}]}}},"origins":{"ɵa":"./app/fs-html-editor.module","FsHtmlEditorModule":"./app/fs-html-editor.module","FsHtmlEditorComponent":"./app/components/html-editor/html-editor.component","FsHtmlRendererComponent":"./app/components/html-renderer/html-renderer.component","ɵb":"./app/injects/config.inject","FS_HTML_EDITOR_CONFIG":"./app/injects/config.inject","ParagraphButtons":"./app/consts/paragraph-buttons.const","TextButtons":"./app/consts/text-buttons.const","RichButtons":"./app/consts/rich-buttons.const","MentionPlugin":"./app/plugins/mention.plugin","ChecklistPlugin":"./app/plugins/checklist.plugin","CodePlugin":"./app/plugins/code.plugin","ScreenRecordPlugin":"./app/plugins/screen-record.plugin","MentionPluginConfig":"./app/plugins/configs/mention-plugin.config","ScreenRecordPluginConfig":"./app/plugins/configs/screen-record-plugin.config","FsHtmlEditorConfig":"./app/interfaces/html-editor-config","PluginConfig":"./app/interfaces/plugin-config","PluginButton":"./app/interfaces/plugin-button","ɵc":"./app/services/froala-loader.service","ɵd":"./app/enums/default-plugin.enum","ɵe":"./app/classes/plugin"},"importAs":"@firestitch/html-editor"}
1
+ {"__symbolic":"module","version":4,"metadata":{"ɵa":{"__symbolic":"function","parameters":["config"],"value":{"defaultPlugins":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Align"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Colors"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Image"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Link"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Lists"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"ParagraphFormat"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Quote"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Table"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Url"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Video"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"Draggable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵd"},"member":"FontSize"}]}},"FsHtmlEditorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"reference","module":"@firestitch/skeleton","name":"FsSkeletonModule","line":15,"character":4}],"exports":[{"__symbolic":"reference","name":"FsHtmlEditorComponent"},{"__symbolic":"reference","name":"FsHtmlRendererComponent"}],"declarations":[{"__symbolic":"reference","name":"FsHtmlEditorComponent"},{"__symbolic":"reference","name":"FsHtmlRendererComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"defaults":[{}],"value":{"ngModule":{"__symbolic":"reference","name":"FsHtmlEditorModule"},"providers":[{"provide":{"__symbolic":"reference","name":"ɵb"},"useValue":{"__symbolic":"reference","name":"config"}},{"provide":{"__symbolic":"reference","name":"FS_HTML_EDITOR_CONFIG"},"useFactory":{"__symbolic":"reference","name":"ɵa"},"deps":[{"__symbolic":"reference","name":"ɵb"}]}]}}}},"FsHtmlEditorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":43,"character":1},"arguments":[{"selector":"fs-html-editor","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":49,"character":15},"useExisting":{"__symbolic":"reference","name":"FsHtmlEditorComponent"},"multi":true},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":54,"character":15},"useExisting":{"__symbolic":"reference","name":"FsHtmlEditorComponent"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":59,"character":19},"member":"OnPush"},"template":"<div class=\"fs-html-editor-default\">\n <ng-container *ngIf=\"initialized\">\n <ng-container *fsSkeleton=\"(froalaLoaded$ | async) !== false\">\n </ng-container>\n </ng-container>\n\n <div #elRef></div>\n\n <div class=\"bottom-line\"></div>\n <div class=\"disabled-line\"></div>\n <fs-html-renderer\n *ngIf=\"!initialized\"\n [html]=\"html\"\n (click)=\"uninitializedClick($event)\">\n </fs-html-renderer>\n</div>\n","styles":[":host ::ng-deep .fr-box.fr-basic .fr-wrapper{border:0;border-bottom:1px solid #949494;margin-bottom:1px;background-color:transparent}:host ::ng-deep .fr-box.fr-basic .fr-element{padding:0;font-family:inherit;color:inherit;font-size:inherit;line-height:inherit;min-height:auto}:host ::ng-deep .fr-dropdown-menu .fr-dropdown-wrapper,:host ::ng-deep .fr-dropdown:after,:host ::ng-deep .fr-more-toolbar,:host ::ng-deep .fr-toolbar{transition:none!important}:host ::ng-deep .fr-toolbar.fr-top{position:-webkit-sticky;position:sticky;z-index:2;border-radius:0;background-color:#fff}:host ::ng-deep .fr-toolbar.fr-top .fr-btn-grp{margin:0 20px 0 0}:host ::ng-deep .fr-toolbar.fr-top .fr-btn-grp:nth-child(1):after,:host ::ng-deep .fr-toolbar.fr-top .fr-btn-grp:nth-child(2):after{content:\"\";position:absolute;top:9px;height:30px;border-left:1px solid #e5e5e5;margin-left:10px}:host ::ng-deep .fr-toolbar.fr-top div:first-of-type:before{border:none}:host ::ng-deep .fr-toolbar.fr-top.fr-toolbar-open .fr-newline{height:auto}:host ::ng-deep .fr-toolbar.fr-top .fr-btn-grp:first-child{margin-left:0}:host ::ng-deep .fr-toolbar.fr-top.fr-top{border:0}:host ::ng-deep .fr-toolbar.fr-top .fr-newline{margin:0}:host ::ng-deep .fr-toolbar.fr-top .fr-more-toolbar{z-index:auto}:host ::ng-deep .fr-toolbar.fr-top .fr-command.fr-btn{z-index:auto}:host ::ng-deep .fr-toolbar.fr-top .fr-command.fr-btn.fr-dropdown:after{right:3px}:host ::ng-deep .fr-toolbar.fr-top .fr-command.fr-btn.fr-dropdown.fr-selection span{margin-right:24px}:host ::ng-deep .fr-toolbar.fr-top .fr-command.fr-btn.fr-open{border-radius:4px;margin:4px 2px}:host ::ng-deep .fr-view ol,:host ::ng-deep .fr-view ul{list-style-position:unset}:host.disabled ::ng-deep .fr-box.fr-basic{opacity:.5;pointer-events:none}:host.disabled ::ng-deep .fr-box.fr-basic .fr-wrapper{border:none}:host.disabled ::ng-deep .disabled-line{display:block}::ng-deep .fr-popup{z-index:1001!important}::ng-deep .fr-video-by-url-layer .fr-checkbox-line{display:none}.disabled-line{display:none;position:absolute;bottom:-1px;z-index:1;background-image:linear-gradient(90deg,rgba(0,0,0,.42) 0,rgba(0,0,0,.42) 33%,transparent 0);background-size:4px 100%;background-repeat:repeat-x;height:1px;width:100%}.bottom-line{opacity:0;transform-origin:50%;transform:scaleX(.5);transition:background-color .3s cubic-bezier(.55,0,.55,.2);width:100%;border-bottom:2px solid #949494;position:absolute;bottom:-1px;z-index:1}:host{position:relative;display:block}:host.focused .bottom-line{opacity:1;display:block;transform:scaleX(1);transition:transform .3s cubic-bezier(.25,.8,.25,1),opacity .1s cubic-bezier(.25,.8,.25,1),background-color .3s cubic-bezier(.25,.8,.25,1)}::ng-deep .fs-html-editor-mention-container{position:absolute;top:0;left:0;height:auto;max-height:300px;max-width:500px;overflow:auto;display:block;z-index:999999;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);border-bottom-left-radius:4px;border-bottom-right-radius:4px;background:#fff}::ng-deep .fs-html-editor-mention-container ul{margin:0;padding:0;list-style:none}::ng-deep .fs-html-editor-mention-container li{padding:0 16px;cursor:pointer;line-height:48px}::ng-deep .fs-html-editor-mention-container li.highlight,::ng-deep .fs-html-editor-mention-container li:hover{background:#f5f5f5}::ng-deep .fs-html-editor-mention-container li.no-match{cursor:default}"]}]}],"members":{"classFocused":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":63,"character":3},"arguments":["class.focused"]}]}],"classDisabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":64,"character":3},"arguments":["class.disabled"]}]}],"elRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":66,"character":3},"arguments":["elRef"]}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":79,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":79,"character":17},"arguments":[{"__symbolic":"reference","name":"FS_HTML_EDITOR_CONFIG"}]}],null,null],"parameters":[null,{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":80,"character":20},{"__symbolic":"reference","name":"ɵc"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"hasContent":[{"__symbolic":"method"}],"initialize":[{"__symbolic":"method"}],"_processImageUpload":[{"__symbolic":"method"}],"_getTextNode":[{"__symbolic":"method"}],"uninitializedClick":[{"__symbolic":"method"}],"updateSize":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"disable":[{"__symbolic":"method"}],"setHtml":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"_createConfig":[{"__symbolic":"method"}],"_change":[{"__symbolic":"method"}],"_initPlugins":[{"__symbolic":"method"}],"_createOptions":[{"__symbolic":"method"}],"_listenLazyInit":[{"__symbolic":"method"}],"_contentChanged":[{"__symbolic":"method"}],"_setupFroala":[{"__symbolic":"method"}]}},"FsHtmlRendererComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"fs-html-renderer","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":8,"character":19},"member":"OnPush"},"template":"<div class=\"fr-view fs-html-editor-default\" [innerHtml]=\"trustedHtml\"></div>\n","styles":[""]}]}],"members":{"setHtml":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3},"arguments":["html"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":20,"character":23},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":21,"character":20}]}]}},"ɵb":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":2,"character":49},"arguments":["fs-html-editor.default-config"]},"FS_HTML_EDITOR_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":3,"character":41},"arguments":["fs-html-editor.config"]},"ParagraphButtons":["align","formatOL","formatUL","checklist","indent","outdent"],"TextButtons":["paragraphFormat","code","bold","italic","underline","strikeThrough","subscript","superscript","fontFamily","fontSize","textColor","backgroundColor","inlineClass","inlineStyle","clearFormatting","quote"],"RichButtons":["insertTable","insertImage","insertLink","insertVideo"],"MentionPlugin":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MentionPluginConfig"}]}],"initialize":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"_closeAll":[{"__symbolic":"method"}],"_loadValues":[{"__symbolic":"method"}]},"statics":{"_currentGuid":null,"_tributes":[]}},"ChecklistPlugin":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"PluginConfig"}]}],"initialize":[{"__symbolic":"method"}]}},"CodePlugin":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"PluginConfig"}]}],"initialize":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"_getCodeEl":[{"__symbolic":"method"}]}},"ScreenRecordPlugin":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ScreenRecordPluginConfig"}]}],"initialize":[{"__symbolic":"method"}],"_createPopup":[{"__symbolic":"method"}],"_showPopup":[{"__symbolic":"method"}],"_getEl":[{"__symbolic":"method"}]}},"MentionPluginConfig":{"__symbolic":"interface"},"ScreenRecordPluginConfig":{"__symbolic":"interface"},"FsHtmlEditorConfig":{"__symbolic":"interface"},"PluginConfig":{"__symbolic":"interface"},"PluginButton":{"__symbolic":"interface"},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":30,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":17},"arguments":[{"__symbolic":"reference","name":"FS_HTML_EDITOR_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","name":"FsHtmlEditorConfig"}]}],"_load":[{"__symbolic":"method"}],"_loadPlugins":[{"__symbolic":"method"}],"_froalaDone":[{"__symbolic":"method"}],"_defaultPluginsDone":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵd":{"Align":"align","Colors":"colors","Image":"image","Link":"link","Lists":"lists","ParagraphFormat":"paragraph_format","Table":"table","Url":"url","Video":"video","Quote":"quote","Draggable":"draggable","FontSize":"font_size"},"ɵe":{"__symbolic":"class","members":{"initialize":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}]}}},"origins":{"ɵa":"./app/fs-html-editor.module","FsHtmlEditorModule":"./app/fs-html-editor.module","FsHtmlEditorComponent":"./app/components/html-editor/html-editor.component","FsHtmlRendererComponent":"./app/components/html-renderer/html-renderer.component","ɵb":"./app/injects/config.inject","FS_HTML_EDITOR_CONFIG":"./app/injects/config.inject","ParagraphButtons":"./app/consts/paragraph-buttons.const","TextButtons":"./app/consts/text-buttons.const","RichButtons":"./app/consts/rich-buttons.const","MentionPlugin":"./app/plugins/mention.plugin","ChecklistPlugin":"./app/plugins/checklist.plugin","CodePlugin":"./app/plugins/code.plugin","ScreenRecordPlugin":"./app/plugins/screen-record.plugin","MentionPluginConfig":"./app/plugins/configs/mention-plugin.config","ScreenRecordPluginConfig":"./app/plugins/configs/screen-record-plugin.config","FsHtmlEditorConfig":"./app/interfaces/html-editor-config","PluginConfig":"./app/interfaces/plugin-config","PluginButton":"./app/interfaces/plugin-button","ɵc":"./app/services/froala-loader.service","ɵd":"./app/enums/default-plugin.enum","ɵe":"./app/classes/plugin"},"importAs":"@firestitch/html-editor"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firestitch/html-editor",
3
- "version": "9.5.5",
3
+ "version": "9.5.8",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/Firestitch/ngx-html-editor"
package/public_api.d.ts CHANGED
@@ -1,16 +1,16 @@
1
- export { FsHtmlEditorModule } from './app/fs-html-editor.module';
2
- export { FsHtmlEditorComponent } from './app/components/html-editor/html-editor.component';
3
- export { FsHtmlRendererComponent } from './app/components/html-renderer/html-renderer.component';
4
- export { FS_HTML_EDITOR_CONFIG } from './app/injects/config.inject';
5
- export { ParagraphButtons } from './app/consts/paragraph-buttons.const';
6
- export { TextButtons } from './app/consts/text-buttons.const';
7
- export { RichButtons } from './app/consts/rich-buttons.const';
8
- export { MentionPlugin } from './app/plugins/mention.plugin';
9
- export { ChecklistPlugin } from './app/plugins/checklist.plugin';
10
- export { CodePlugin } from './app/plugins/code.plugin';
11
- export { ScreenRecordPlugin } from './app/plugins/screen-record.plugin';
12
- export { MentionPluginConfig } from './app/plugins/configs/mention-plugin.config';
13
- export { ScreenRecordPluginConfig } from './app/plugins/configs/screen-record-plugin.config';
14
- export { FsHtmlEditorConfig } from './app/interfaces/html-editor-config';
15
- export { PluginConfig } from './app/interfaces/plugin-config';
16
- export { PluginButton } from './app/interfaces/plugin-button';
1
+ export { FsHtmlEditorModule } from './app/fs-html-editor.module';
2
+ export { FsHtmlEditorComponent } from './app/components/html-editor/html-editor.component';
3
+ export { FsHtmlRendererComponent } from './app/components/html-renderer/html-renderer.component';
4
+ export { FS_HTML_EDITOR_CONFIG } from './app/injects/config.inject';
5
+ export { ParagraphButtons } from './app/consts/paragraph-buttons.const';
6
+ export { TextButtons } from './app/consts/text-buttons.const';
7
+ export { RichButtons } from './app/consts/rich-buttons.const';
8
+ export { MentionPlugin } from './app/plugins/mention.plugin';
9
+ export { ChecklistPlugin } from './app/plugins/checklist.plugin';
10
+ export { CodePlugin } from './app/plugins/code.plugin';
11
+ export { ScreenRecordPlugin } from './app/plugins/screen-record.plugin';
12
+ export { MentionPluginConfig } from './app/plugins/configs/mention-plugin.config';
13
+ export { ScreenRecordPluginConfig } from './app/plugins/configs/screen-record-plugin.config';
14
+ export { FsHtmlEditorConfig } from './app/interfaces/html-editor-config';
15
+ export { PluginConfig } from './app/interfaces/plugin-config';
16
+ export { PluginButton } from './app/interfaces/plugin-button';