@firestitch/html-editor 9.5.9 → 12.0.0
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.
- package/app/classes/plugin.d.ts +7 -7
- package/app/components/html-editor/html-editor.component.d.ts +57 -54
- package/app/components/html-renderer/html-renderer.component.d.ts +12 -9
- package/app/consts/paragraph-buttons.const.d.ts +1 -1
- package/app/consts/rich-buttons.const.d.ts +1 -1
- package/app/consts/text-buttons.const.d.ts +1 -1
- package/app/enums/default-plugin.enum.d.ts +14 -14
- package/app/fs-html-editor.module.d.ts +33 -25
- package/app/injects/config.inject.d.ts +3 -3
- package/app/interfaces/html-editor-config.d.ts +31 -31
- package/app/interfaces/plugin-button.d.ts +12 -12
- package/app/interfaces/plugin-config.d.ts +5 -5
- package/app/plugins/checklist.plugin.d.ts +7 -7
- package/app/plugins/code.plugin.d.ts +9 -9
- package/app/plugins/configs/mention-plugin.config.d.ts +13 -13
- package/app/plugins/configs/screen-record-plugin.config.d.ts +7 -7
- package/app/plugins/mention.plugin.d.ts +15 -15
- package/app/plugins/screen-record.plugin.d.ts +11 -11
- package/app/services/froala-loader.service.d.ts +20 -17
- package/app/utils/loader.d.ts +7 -7
- package/bundles/firestitch-html-editor.umd.js +1389 -1274
- package/bundles/firestitch-html-editor.umd.js.map +1 -1
- package/esm2015/app/classes/plugin.js +5 -5
- package/esm2015/app/components/html-editor/html-editor.component.js +453 -445
- package/esm2015/app/components/html-renderer/html-renderer.component.js +29 -34
- package/esm2015/app/consts/paragraph-buttons.const.js +9 -9
- package/esm2015/app/consts/rich-buttons.const.js +7 -7
- package/esm2015/app/consts/text-buttons.const.js +19 -19
- package/esm2015/app/enums/default-plugin.enum.js +2 -1
- package/esm2015/app/fs-html-editor.module.js +65 -57
- package/esm2015/app/injects/config.inject.js +4 -4
- package/esm2015/app/interfaces/html-editor-config.js +2 -1
- package/esm2015/app/interfaces/plugin-button.js +2 -1
- package/esm2015/app/interfaces/plugin-config.js +2 -1
- package/esm2015/app/plugins/checklist.plugin.js +35 -35
- package/esm2015/app/plugins/code.plugin.js +63 -63
- package/esm2015/app/plugins/configs/mention-plugin.config.js +2 -1
- package/esm2015/app/plugins/configs/screen-record-plugin.config.js +2 -1
- package/esm2015/app/plugins/mention.plugin.js +87 -87
- package/esm2015/app/plugins/screen-record.plugin.js +92 -92
- package/esm2015/app/services/froala-loader.service.js +80 -81
- package/esm2015/app/utils/loader.js +83 -83
- package/esm2015/firestitch-html-editor.js +5 -9
- package/esm2015/public_api.js +12 -12
- package/fesm2015/firestitch-html-editor.js +970 -956
- package/fesm2015/firestitch-html-editor.js.map +1 -1
- package/firestitch-html-editor.d.ts +5 -9
- package/package.json +4 -7
- package/public_api.d.ts +16 -16
- package/styles.scss +3 -2
- package/bundles/firestitch-html-editor.umd.min.js +0 -17
- package/bundles/firestitch-html-editor.umd.min.js.map +0 -1
- package/esm5/app/classes/plugin.js +0 -9
- package/esm5/app/components/html-editor/html-editor.component.js +0 -471
- package/esm5/app/components/html-renderer/html-renderer.component.js +0 -39
- package/esm5/app/consts/paragraph-buttons.const.js +0 -9
- package/esm5/app/consts/rich-buttons.const.js +0 -7
- package/esm5/app/consts/text-buttons.const.js +0 -19
- package/esm5/app/enums/default-plugin.enum.js +0 -1
- package/esm5/app/fs-html-editor.module.js +0 -62
- package/esm5/app/injects/config.inject.js +0 -4
- package/esm5/app/interfaces/html-editor-config.js +0 -1
- package/esm5/app/interfaces/plugin-button.js +0 -1
- package/esm5/app/interfaces/plugin-config.js +0 -1
- package/esm5/app/plugins/checklist.plugin.js +0 -41
- package/esm5/app/plugins/code.plugin.js +0 -70
- package/esm5/app/plugins/configs/mention-plugin.config.js +0 -1
- package/esm5/app/plugins/configs/screen-record-plugin.config.js +0 -1
- package/esm5/app/plugins/mention.plugin.js +0 -93
- package/esm5/app/plugins/screen-record.plugin.js +0 -106
- package/esm5/app/services/froala-loader.service.js +0 -96
- package/esm5/app/utils/loader.js +0 -83
- package/esm5/firestitch-html-editor.js +0 -9
- package/esm5/public_api.js +0 -12
- package/fesm5/firestitch-html-editor.js +0 -1074
- package/fesm5/firestitch-html-editor.js.map +0 -1
- package/firestitch-html-editor.metadata.json +0 -1
|
@@ -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, 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":"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"}
|
|
1
|
+
{"version":3,"file":"firestitch-html-editor.js","sources":["../../src/app/consts/rich-buttons.const.ts","../../src/app/consts/text-buttons.const.ts","../../src/app/consts/paragraph-buttons.const.ts","../../src/app/injects/config.inject.ts","../../src/app/utils/loader.ts","../../src/app/services/froala-loader.service.ts","../../src/app/components/html-renderer/html-renderer.component.ts","../../src/app/components/html-renderer/html-renderer.component.html","../../src/app/components/html-editor/html-editor.component.ts","../../src/app/components/html-editor/html-editor.component.html","../../src/app/fs-html-editor.module.ts","../../src/app/classes/plugin.ts","../../src/app/plugins/mention.plugin.ts","../../src/app/plugins/checklist.plugin.ts","../../src/app/plugins/code.plugin.ts","../../src/app/plugins/screen-record.plugin.ts","../../src/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 { 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","<div class=\"fr-view fs-html-editor-default\" [innerHtml]=\"trustedHtml\"></div>\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","<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","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"],"names":["i1.FsFroalaLoaderService","i2.FsHtmlRendererComponent"],"mappings":"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"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
export
|
|
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
|
+
/// <amd-module name="@firestitch/html-editor" />
|
|
5
|
+
export * from './public_api';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@firestitch/html-editor",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "12.0.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/Firestitch/ngx-html-editor"
|
|
@@ -23,12 +23,9 @@
|
|
|
23
23
|
},
|
|
24
24
|
"sideEffects": false,
|
|
25
25
|
"main": "bundles/firestitch-html-editor.umd.js",
|
|
26
|
-
"module": "
|
|
26
|
+
"module": "fesm2015/firestitch-html-editor.js",
|
|
27
27
|
"es2015": "fesm2015/firestitch-html-editor.js",
|
|
28
|
-
"esm5": "esm5/firestitch-html-editor.js",
|
|
29
28
|
"esm2015": "esm2015/firestitch-html-editor.js",
|
|
30
|
-
"fesm5": "fesm5/firestitch-html-editor.js",
|
|
31
29
|
"fesm2015": "fesm2015/firestitch-html-editor.js",
|
|
32
|
-
"typings": "firestitch-html-editor.d.ts"
|
|
33
|
-
|
|
34
|
-
}
|
|
30
|
+
"typings": "firestitch-html-editor.d.ts"
|
|
31
|
+
}
|
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';
|
package/styles.scss
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
// @import "./../app/froala/css/froala_editor.pkgd";
|
|
2
|
+
@use '~@angular/material' as mat;
|
|
2
3
|
// @import "./../app/froala/css/froala_style";
|
|
3
4
|
|
|
4
5
|
@mixin fs-html-editor($theme) {
|
|
5
|
-
$primary: mat-palette($theme);
|
|
6
|
+
$primary: mat.define-palette($theme);
|
|
6
7
|
|
|
7
8
|
fs-html-editor.focused {
|
|
8
9
|
.bottom-line {
|
|
9
|
-
border-color: mat-color($primary);
|
|
10
|
+
border-color: mat.get-color-from-palette($primary);
|
|
10
11
|
}
|
|
11
12
|
}
|
|
12
13
|
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("@firestitch/skeleton"),require("@angular/forms"),require("@firestitch/file"),require("rxjs"),require("rxjs/operators"),require("lodash-es"),require("@angular/platform-browser"),require("tributejs"),require("@firestitch/common")):"function"==typeof define&&define.amd?define("@firestitch/html-editor",["exports","@angular/core","@angular/common","@firestitch/skeleton","@angular/forms","@firestitch/file","rxjs","rxjs/operators","lodash-es","@angular/platform-browser","tributejs","@firestitch/common"],t):t(((e=e||self).firestitch=e.firestitch||{},e.firestitch["html-editor"]={}),e.ng.core,e.ng.common,e.skeleton,e.ng.forms,e.file,e.rxjs,e.rxjs.operators,e.lodashEs,e.ng.platformBrowser,e.Tribute,e.common$1)}(this,(function(e,t,n,o,i,r,a,s,l,c,u,f){"use strict";u=u&&Object.prototype.hasOwnProperty.call(u,"default")?u.default:u;
|
|
2
|
-
/*! *****************************************************************************
|
|
3
|
-
Copyright (c) Microsoft Corporation.
|
|
4
|
-
|
|
5
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
-
purpose with or without fee is hereby granted.
|
|
7
|
-
|
|
8
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
9
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
10
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
11
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
12
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
13
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
14
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
15
|
-
***************************************************************************** */
|
|
16
|
-
var d=function(e,t){return(d=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}d(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var h=function(){return(h=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function g(e,t,n,o){var i,r=arguments.length,a=r<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(r<3?i(a):r>3?i(t,n,a):i(t,n))||a);return r>3&&a&&Object.defineProperty(t,n,a),a}function m(e,t){return function(n,o){t(n,o,e)}}function b(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function y(e,t,n,o){return new(n||(n=Promise))((function(i,r){function a(e){try{l(o.next(e))}catch(e){r(e)}}function s(e){try{l(o.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((o=o.apply(e,t||[])).next())}))}function v(e,t){var n,o,i,r,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return r={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function s(r){return function(s){return function(r){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(i=2&r[0]?o.return:r[0]?o.throw||((i=o.return)&&i.call(o),0):o.next)&&!(i=i.call(o,r[1])).done)return i;switch(o=0,i&&(r=[2&r[0],i.value]),r[0]){case 0:case 1:i=r;break;case 4:return a.label++,{value:r[1],done:!1};case 5:a.label++,o=r[1],r=[0];continue;case 7:r=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==r[0]&&2!==r[0])){a=0;continue}if(3===r[0]&&(!i||r[1]>i[0]&&r[1]<i[3])){a.label=r[1];break}if(6===r[0]&&a.label<i[1]){a.label=i[1],i=r;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(r);break}i[2]&&a.ops.pop(),a.trys.pop();continue}r=t.call(e,a)}catch(e){r=[6,e],o=0}finally{n=i=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}([r,s])}}}Object.create;function _(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var o,i,r=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(o=r.next()).done;)a.push(o.value)}catch(e){i={error:e}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(i)throw i.error}}return a}Object.create;var w=["insertTable","insertImage","insertLink","insertVideo"],k=["paragraphFormat","code","bold","italic","underline","strikeThrough","subscript","superscript","fontFamily","fontSize","textColor","backgroundColor","inlineClass","inlineStyle","clearFormatting","quote"],x=["align","formatOL","formatUL","checklist","indent","outdent"],C=new t.InjectionToken("fs-html-editor.default-config"),P=new t.InjectionToken("fs-html-editor.config");var E,j,O,L,R,S,z=(E="/assets/js/froala/",j="/assets/css/",O=document.getElementsByTagName("head")[0],L=new Map,R={froala:"froala_editor.min.js",align:"plugins/align.min.js",colors:"plugins/colors.min.js",image:"plugins/image.min.js",link:"plugins/link.min.js",lists:"plugins/lists.min.js",paragraph_format:"plugins/paragraph_format.min.js",table:"plugins/table.min.js",url:"plugins/url.min.js",video:"plugins/video.min.js",quote:"plugins/quote.min.js",draggable:"plugins/draggable.min.js",font_size:"plugins/font_size.min.js"},S={froala:"froala_editor.pkgd.min.css"},{setResourceBase:function(e){E=e},setStylesBase:function(e){j=e},loadResource:function(e){return function(e){if(!L.has(e)){var t=new a.Observable((function(t){var n=document.createElement("script");n.src=e,O.appendChild(n),n.onload=function(){t.next(),t.complete()},n.onerror=function(e){t.error(e)}})).pipe(s.shareReplay(1));L.set(e,t)}return L.get(e)}(E+(R[e]||e))},loadStyles:function(e){return function(e){if(!L.has(e)){var t=new a.Observable((function(t){var n=document.createElement("link");n.id=e,n.rel="stylesheet",n.href=""+e,O.appendChild(n),n.onload=function(){t.next(),t.complete()},n.onerror=function(e){t.error(e)}}));L.set(e,t)}return L.get(e)}(j+(S[e]||e))}}),T=function(){function e(e){this._defaultConfig=e,this._froalaLoaded=new a.BehaviorSubject(!1),this._defaultPluginsLoaded=new a.BehaviorSubject(!1),this._loaded$=a.combineLatest([this._froalaLoaded,this._defaultPluginsLoaded]).pipe(s.map((function(e){var t=_(e,2),n=t[0];return t[1]&&n})),s.shareReplay(1)),this._defaultConfig&&(this._defaultConfig.assetsJSPath&&z.setResourceBase(this._defaultConfig.assetsJSPath),this._defaultConfig.assetsCSSPath&&z.setStylesBase(this._defaultConfig.assetsCSSPath)),this._load()}return Object.defineProperty(e.prototype,"loaded$",{get:function(){return this._loaded$},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ready",{get:function(){return this._froalaLoaded.getValue()&&this._defaultPluginsLoaded.getValue()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"FroalaEditor",{get:function(){return this._FroalaEditor},enumerable:!0,configurable:!0}),e.prototype._load=function(){var e=this;a.combineLatest([z.loadResource("froala"),z.loadStyles("froala")]).pipe(s.tap((function(){e._FroalaEditor=window.FroalaEditor,e._froalaDone()})),s.concatMap((function(){return e._loadPlugins()})),s.tap((function(){e._defaultPluginsDone()}))).subscribe()},e.prototype._loadPlugins=function(){var e=this._defaultConfig.defaultPlugins.reduce((function(e,t){var n=z.loadResource(t);return e.push(n),e}),[]);return a.combineLatest(e)},e.prototype._froalaDone=function(){this._froalaLoaded.next(!0)},e.prototype._defaultPluginsDone=function(){this._defaultPluginsLoaded.next(!0)},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Optional},{type:t.Inject,args:[P]}]}]},e.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new e(t.ɵɵinject(P,8))},token:e,providedIn:"root"}),e=g([t.Injectable({providedIn:"root"}),m(0,t.Optional()),m(0,t.Inject(P)),b("design:paramtypes",[Object])],e)}(),M=function(){function e(e,t,n){this._defaultConfig=e,this._cdRef=t,this._fr=n,this.classFocused=!1,this.classDisabled=!1,this.config={},this.initialized=!1,this._initialize$=new a.ReplaySubject,this._froalaReady$=new a.BehaviorSubject(null),this._destroy$=new a.Subject,this.onChange=function(e){},this.onTouched=function(){}}var n;return n=e,Object.defineProperty(e.prototype,"el",{get:function(){return this.elRef.nativeElement},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"html",{get:function(){return this._html},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"editor",{get:function(){return this._editor},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"froalaLoaded$",{get:function(){return this._fr.loaded$},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){this.config=this.config||{},this.config.autofocus=!1!==this.config.autofocus&&!this.config.disabled,this.initialized=!this.config.initOnClick,this._listenLazyInit()},e.prototype.ngAfterViewInit=function(){this.config.initOnClick&&this.hasContent()||(this.initialized=!0,this._initialize$.next())},e.prototype.hasContent=function(){var e=document.createElement("div");return!!e.querySelector("img")||(e.innerHTML=this._html,!!e.innerText.length)},e.prototype.initialize=function(e){var t=this;void 0===e&&(e={});var n=this._createConfig();this._initPlugins(n),this._editor=new this._fr.FroalaEditor(this.el,this._createOptions(),(function(){t._froalaReady$.next({config:n,options:e})}))},e.prototype._processImageUpload=function(e){var t=this,n=new r.FileProcessor,o=new r.FsFile(e);return n.process([o],this.config.image).pipe(s.switchMap((function(e){var n=_(e,1)[0];return t.config.image.upload(n.file)})))},e.prototype._getTextNode=function(e){if(e){if(e.nodeType===Node.TEXT_NODE)return e;if(e.childNodes)return this._getTextNode(e.childNodes[0])}},e.prototype.uninitializedClick=function(e){if(!e.defaultPrevented){var t=e.target;if(t&&"A"===t.nodeName&&t.getAttribute("href")){var n=t.getAttribute("target");t.setAttribute("target","_blank"),setTimeout((function(){n?t.setAttribute("target",n):t.removeAttribute("target")}))}else this.config.initClick&&this.config.initClick(e),this._initialize$.next(),this.initialized=!0}},e.prototype.updateSize=function(){window.dispatchEvent(new Event("resize"))},e.prototype.validate=function(e){var t={};if(this.config.maxLength&&this._html){var n=this.config.maxLength,o=this._html.length;o>n&&(t.maxLengthError="Must be "+n+" characters or fewer. You entered "+o+" characters.")}return Object.keys(t).length?t:null},e.prototype.focus=function(e){"end"===(e=e||{}).cursorPosition?this.editor.selection.setAtEnd(this.editor.$el.get(0)):this.editor.selection.setAtStart(this.editor.$el.get(0)),this.editor.selection.restore();var t=this.editor.selection.element();t&&t.scrollIntoView({block:"center"})},e.prototype.clear=function(){this.writeValue("")},e.prototype.disable=function(){this.classDisabled=!0},e.prototype.setHtml=function(e){this.writeValue(e)},e.prototype.writeValue=function(e){if(this._html=e||"",this.editor&&this.editor.html)try{this.editor.html.set(this._html)}catch(e){}this._cdRef.markForCheck()},e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.ngOnDestroy=function(){this._initialize$.complete(),this._destroy$.next(),this._destroy$.complete(),this.destroy()},e.prototype.destroy=function(){this.editor&&this.editor.destroy(),this.initialized=!1,this._cdRef.markForCheck(),this.el.innerHTML=""},e.prototype._createConfig=function(){return l.merge({froalaConfig:{}},this._defaultConfig,this.config)},e.prototype._change=function(e){this.onChange(e)},e.prototype._initPlugins=function(e){var t=this;(e.plugins||[]).forEach((function(e){t._fr.FroalaEditor.PLUGINS[e.config.name]=function(t){return e.editor=t,e.initialize(),e},(e.config.buttons||[]).forEach((function(e){t._fr.FroalaEditor.DefineIcon(e.name,{NAME:e.name,PATH:e.svgPath}),t._fr.FroalaEditor.RegisterCommand(e.name,{icon:e.name,title:e.tooltip,undo:e.undo,focus:e.focus,showOnMobile:e.showOnMobile,refreshAfterCallback:e.refreshAfterCallback,callback:function(){e.click&&e.click(this)},refresh:function(e){e.refresh&&e.refresh(this,e)}})}))}))},e.prototype._createOptions=function(){var e=this._createConfig();return l.merge({},{key:e.activationKey,placeholderText:e.placeholder,linkAlwaysBlank:!0,tabSpaces:2,typingTimer:250,tooltips:!1,wordPasteModal:!1,imageDefaultWidth:0,imageDefaultAlign:"left",quickInsertEnabled:!1,paragraphDefaultSelection:"Format",videoUpload:!1,paragraphFormat:{N:"Normal",H1:"Heading 1",H2:"Heading 2",H3:"Heading 3",H4:"Heading 4",BLOCKQUOTE:"Quote"},paragraphFormatSelection:!0,toolbarButtonsXS:{moreText:{buttons:k,buttonsVisible:1},moreParagraph:{buttons:x,buttonsVisible:2},moreRich:{buttons:w,buttonsVisible:0}},toolbarButtons:{moreText:{buttons:k,buttonsVisible:3},moreParagraph:{buttons:x,buttonsVisible:5},moreRich:{buttons:w,buttonsVisible:3}}},e.froalaConfig)},e.prototype._listenLazyInit=function(){var e=this;this.froalaLoaded$.pipe(s.filter((function(e){return e})),s.switchMap((function(){return e._initialize$})),s.tap((function(){var t=window.getSelection(),n={};t.baseNode&&(n.selection={node:t.baseNode.nodeValue,offset:t.baseOffset}),e.initialize(n)})),s.switchMap((function(){return e._froalaReady$})),s.filter((function(e){return!!e})),s.tap((function(t){var n=t.config,o=t.options;e._setupFroala(n,o)}))).subscribe()},e.prototype._contentChanged=function(){var e=this._editor.html.get();this.html!==e&&this._change(e)},e.prototype._setupFroala=function(e,t){var n=this;this._cdRef.markForCheck(),this.setHtml(this._html),e.disabled&&this.disable(),e.froalaConfig.events&&e.froalaConfig.events.initialized&&e.froalaConfig.events.initialized(),this._editor.events.on("focus",(function(){n.classFocused=!0,n._cdRef.markForCheck()})),this._editor.events.on("blur",(function(){n.classFocused=!1,n._cdRef.markForCheck()})),a.fromEventPattern((function(e){n._editor.events.on("contentChanged",e)}),(function(){})).pipe(s.startWith(this._html),s.map((function(){return n.editor.html.get()})),s.distinctUntilChanged(),s.skip(1)).subscribe((function(){n._contentChanged()})),this._editor.events.on("paste.afterCleanup",(function(e){var t=document.createElement("div");return t.innerHTML=e,t.querySelectorAll("*").forEach((function(e){for(var t=0;t<e.attributes.length;t++){var n=e.attributes[0].name;"href"!==n&&e.removeAttribute(n)}})),t.innerHTML})),this._editor.events.on("keydown",(function(){n.onTouched()})),this.config.image&&this.config.image.upload&&(this._editor.events.on("image.beforePasteUpload",(function(e){return fetch(e.getAttribute("src")).then((function(t){t.blob().then((function(t){n._processImageUpload(t).pipe(s.takeUntil(n._destroy$)).subscribe((function(t){e.setAttribute("src",t),e.removeAttribute("data-fr-image-pasted"),n._contentChanged()}))}))})),!1})),this._editor.events.on("image.beforeUpload",(function(e){return n._processImageUpload(e[0]).pipe(s.takeUntil(n._destroy$)).subscribe((function(e){n.editor.image.insert(e,null,null,n.editor.image.get())})),!1}))),this.el.querySelector(".fr-second-toolbar")&&this.el.querySelector(".fr-second-toolbar").remove();var o=t.selection;if(o){var i=Array.from(this.el.querySelectorAll(".fr-element *")).find((function(e){return o.node===e.textContent}));if(i){var r=document.createRange(),l=window.getSelection();r.setStart(this._getTextNode(i),o.offset),r.collapse(!0),l.removeAllRanges(),l.addRange(r)}else this.config.autofocus&&this.focus()}else this.config.autofocus&&this.focus()},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Optional},{type:t.Inject,args:[P]}]},{type:t.ChangeDetectorRef},{type:T}]},g([t.HostBinding("class.focused"),b("design:type",Object)],e.prototype,"classFocused",void 0),g([t.HostBinding("class.disabled"),b("design:type",Object)],e.prototype,"classDisabled",void 0),g([t.ViewChild("elRef"),b("design:type",t.ElementRef)],e.prototype,"elRef",void 0),g([t.Input(),b("design:type",Object)],e.prototype,"config",void 0),e=n=g([t.Component({selector:"fs-html-editor",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',providers:[{provide:i.NG_VALUE_ACCESSOR,useExisting:t.forwardRef((function(){return n})),multi:!0},{provide:i.NG_VALIDATORS,useExisting:t.forwardRef((function(){return n})),multi:!0}],changeDetection:t.ChangeDetectionStrategy.OnPush,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}']}),m(0,t.Optional()),m(0,t.Inject(P)),b("design:paramtypes",[Object,t.ChangeDetectorRef,T])],e)}(),F=function(){function e(e,t){this.sanitized=e,this._cdRef=t}return Object.defineProperty(e.prototype,"setHtml",{set:function(e){this.trustedHtml=this.sanitized.bypassSecurityTrustHtml(e||""),this._cdRef.markForCheck()},enumerable:!0,configurable:!0}),e.ctorParameters=function(){return[{type:c.DomSanitizer},{type:t.ChangeDetectorRef}]},g([t.Input("html"),b("design:type",Object),b("design:paramtypes",[Object])],e.prototype,"setHtml",null),e=g([t.Component({selector:"fs-html-renderer",template:'<div class="fr-view fs-html-editor-default" [innerHtml]="trustedHtml"></div>\n',changeDetection:t.ChangeDetectionStrategy.OnPush,styles:[""]}),b("design:paramtypes",[c.DomSanitizer,t.ChangeDetectorRef])],e)}(),A=function(){function e(){}var i;return i=e,e.forRoot=function(e){return void 0===e&&(e={}),{ngModule:i,providers:[{provide:C,useValue:e},{provide:P,useFactory:H,deps:[C]}]}},e=i=g([t.NgModule({imports:[n.CommonModule,o.FsSkeletonModule],exports:[M,F],declarations:[M,F]})],e)}();function H(e){return h({defaultPlugins:["align","colors","image","link","lists","paragraph_format","quote","table","url","video","draggable","font_size"]},e)}var I=function(){function e(){}return e.prototype.initialize=function(){},e.prototype.destroy=function(){},e}(),D=function(e){function t(n){var o=e.call(this)||this;return o.config=n,o._guid=f.guid(),o.selected=function(e){o.config.selected&&t._currentGuid===o._guid&&o.config.selected(e.detail.item.original)},o.config=h(h({},n),{buttons:[{name:n.name,tooltip:n.tooltip,svgPath:n.iconPath,click:function(e){o._closeAll(),o._tribute.showMenuForCollection(e.el)}}]}),o._tribute=new u({values:l.debounce(o._loadValues.bind(o),200),searchOpts:{pre:"",post:"",skip:!0},containerClass:"fs-html-editor-mention-container "+(o.config.containerClass||""),itemClass:"fs-html-editor-mention-menu-item "+(o.config.menuItemClass||""),trigger:o.config.trigger,allowSpaces:!0,menuItemTemplate:function(e){return o.config.menuItemTemplate(e.original)},selectTemplate:function(e){var t=o.config.selectedTemplate(e.original),n=document.createElement("p");n.innerHTML=t;var i=n.firstElementChild;return i||((i=document.createElement("span")).innerHTML=t),i.setAttribute("contenteditable","false"),i.classList.add("fr-deletable"),i.outerHTML}}),t._tributes.push(o._tribute),o}return p(t,e),t.prototype.initialize=function(){var e=this;this._tribute.attach(this.editor.el),this.editor.events.on("keydown",(function(t){if("Enter"===t.key&&e._tribute.isActive)return!1}),!0),this.editor.el.addEventListener("tribute-replaced",this.selected)},t.prototype.destroy=function(){this.editor.el.removeEventListener("tribute-replaced",this.selected)},t.prototype._closeAll=function(){t._tributes.forEach((function(e){e.menu&&e.hideMenu()}))},t.prototype._loadValues=function(e,n){return t._currentGuid=this._guid,this.config.fetch(e).subscribe((function(e){n(e)}))},t._currentGuid=null,t._tributes=[],t}(I),N=function(e){function t(t){void 0===t&&(t={name:"checklist"});var n=e.call(this)||this;return n.config=t,n.config=h(h({},t),{name:"checklist",buttons:[{name:"checklist",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",click:function(e){e.html.insert('<ul class="checklist"><li></li></ul>')}}]}),n}return p(t,e),t.prototype.initialize=function(){this.editor.events.on("click",(function(e){var t=e.target;if("LI"===t.nodeName&&e.offsetX<0){var n=function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(_(arguments[t]));return e}([t],t.querySelectorAll("li"));t.classList.contains("checked")?n.forEach((function(e){e.classList.remove("checked")})):n.forEach((function(e){e.classList.add("checked")}))}}),!1)},t}(I),V=function(e){function t(t){void 0===t&&(t={name:"code"});var n=e.call(this)||this;return n.config=t,n.config=h(h({},t),{name:"code",buttons:[{name:"code",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",click:function(e){var t=e.selection.get(),o=n._getCodeEl(t.baseNode);o?o.classList.remove("code"):e.html.insert('<p class="code">'+e.selection.get().toString().replace(/\n{1,}/g,"<br>")+"</p>")}}]}),n}return p(t,e),t.prototype.initialize=function(){var e=this;this.editor.events.on("keydown",(function(t){if(13===t.keyCode){var n=e.editor.selection.get();if(n&&e._getCodeEl(n.baseNode)){t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation();var o="<br>",i=n.baseNode;if("#text"===i.nodeName&&n.baseOffset===i.length)i.nextSibling&&"BR"===i.nextSibling.nodeName||(o+="<br>");else{var r=Array.from(i.childNodes).splice(n.baseOffset-1,1).pop();r&&"BR"!==r.nodeName&&(o+="<br>")}return e.editor.html.insert(o),!1}}}),!0)},t.prototype.destroy=function(){},t.prototype._getCodeEl=function(e){if(e){if(e.classList&&e.classList.contains("code"))return e;if(e.parentElement)return this._getCodeEl(e.parentElement)}return null},t}(I),$=function(e){function t(t){void 0===t&&(t={});var n=e.call(this)||this;return n.config=t,n.config=h(h({},t),{name:t.name||"screenRecord",buttons:[{name:"screenRecord",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",tooltip:"Screen Record",click:function(e){navigator.mediaDevices.getDisplayMedia({video:!0}).then((function(n){var o=[],i=new MediaRecorder(n,{mimeType:"video/webm; codecs=vp9"});n.addEventListener("inactive",(function(r){i.stop(),i=null,n.getTracks().forEach((function(e){return e.stop()})),n=null;var a=new Blob(o,{type:"video/webm"});t.upload(a).subscribe((function(n){e.html.insert('<span class="fr-screen-record fr-deletable fr-draggable"><video controls style="max-width:'+t.maxWidth+'"><source src="'+n+'" type="video/webm"></video></span>')}))})),i.addEventListener("dataavailable",(function(e){e.data&&e.data.size>0&&o.push(e.data)})),i.start(10)})).catch((function(e){}))}}]}),n}return p(t,e),t.prototype.initialize=function(){return y(this,void 0,void 0,(function(){var e,t=this;return v(this,(function(n){switch(n.label){case 0:return[4,z.loadStyles("froala").toPromise()];case 1:return n.sent(),e=window.FroalaEditor,this.editor.events.on("mouseup",(function(e){var n=t._getEl(e.target);n&&(t.editor.popups.hideAll(),t._activeEl=n,t._showPopup(n))})),e.POPUP_TEMPLATES["screenRecordPlugin.popup"]="[_BUTTONS_]",e.DefineIcon("popupClose",{NAME:"trash",SVG_KEY:"remove"}),e.RegisterCommand("popupClose",{title:"Remove",undo:!1,focus:!1,callback:function(){t._activeEl&&t._activeEl.remove()}}),[2]}}))}))},t.prototype._createPopup=function(){var e={buttons:'<div class="fr-buttons">'+this.editor.button.buildList(["popupClose"])+"</div>"};return this.editor.popups.create("screenRecordPlugin.popup",e)},t.prototype._showPopup=function(e){var t=this.editor.popups.get("screenRecordPlugin.popup");t||(t=this._createPopup()),this.editor.popups.setContainer("screenRecordPlugin.popup",this.editor.$(e));var n=e.offsetLeft+e.offsetWidth/2;this.editor.popups.show("screenRecordPlugin.popup",n,null)},t.prototype._getEl=function(e){if(e&&e.classList)return e.classList.contains("fr-screen-record")?e:this._getEl(e.parentNode)},t}(I);e.ChecklistPlugin=N,e.CodePlugin=V,e.FS_HTML_EDITOR_CONFIG=P,e.FsHtmlEditorComponent=M,e.FsHtmlEditorModule=A,e.FsHtmlRendererComponent=F,e.MentionPlugin=D,e.ParagraphButtons=x,e.RichButtons=w,e.ScreenRecordPlugin=$,e.TextButtons=k,e.ɵa=H,e.ɵb=C,e.ɵc=T,e.ɵe=I,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
17
|
-
//# sourceMappingURL=firestitch-html-editor.umd.min.js.map
|