{"version":3,"file":"sk-front-lib-article.mjs","sources":["../../../projects/sk-front-lib/article/src/sk-article.service.ts","../../../projects/sk-front-lib/article/src/sk-froala-editor.directive.ts","../../../projects/sk-front-lib/article/src/sk-article-editor.component.ts","../../../projects/sk-front-lib/article/src/sk-article-editor.component.html","../../../projects/sk-front-lib/article/src/sk-article.module.ts","../../../projects/sk-front-lib/article/src/sk-article-editor-server.component.ts","../../../projects/sk-front-lib/article/src/sk-article-editor-server.component.html","../../../projects/sk-front-lib/article/src/sk-article-server.module.ts","../../../projects/sk-front-lib/article/src/sk-front-lib-article.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\n\nimport FroalaEditor from 'froala-editor';\nimport 'froala-editor/js/plugins.pkgd.min.js';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SkArticleService {\n\n    constructor(@Inject('environment') public environment: any) {\n        this.initializeFroala();\n    }\n\n    initializeFroala() {\n        FroalaEditor.DefineIconTemplate('material_design', '<i class=\"material-icons\">[NAME]</i>');\n\n        this.loadFontWeight();\n        this.registerShortcuts();\n    }\n\n    loadFontWeight() {\n        // Define an icon.\n        FroalaEditor.DefineIcon('font-weight', {NAME: 'format_size', template: 'material_design'});\n\n        // Define a dropdown button.\n        FroalaEditor.RegisterCommand('font-weight-drop', {\n            // Button title.\n            title: 'Font Weight',\n\n            // Mark the button as a dropdown.\n            type: 'dropdown',\n\n            // Specify the icon for the button.\n            // If this option is not specified, the button name will be used.\n            icon: 'font-weight',\n\n            // Options for the dropdown.\n            options: {\n                100: 'Thin',\n                300: 'Light',\n                400: 'Regular',\n                500: 'Medium',\n                700: 'Bold',\n                900: 'Black'\n            },\n\n            // If present, the options property will be ignored.\n            // It can be used to define a custom HTML for the dropdown.\n            // html: function () {\n            //     // The current context is the editor instance.\n            //     return '';\n            // },\n\n            // Save the dropdown action into undo stack.\n            undo: true,\n\n            // Focus inside the editor before callback.\n            focus: true,\n\n            // Refresh the button state after the callback.\n            refreshAfterCallback: true,\n\n            // Callback.\n            callback(cmd, val, params) {\n                this.format.removeStyle('font-weight');\n                this.format.applyStyle('font-weight', val);\n            },\n\n            // Called when the dropdown button state might have changed.\n            // refresh: function ($btn) {\n            //     // The current context is the editor instance.\n            //     console.log (this.selection.element());\n            //     console.log(this);\n            // },\n\n            // Called when the dropdown is shown.\n            // refreshOnShow: function ($btn, $dropdown) {\n            //     // The current context is the editor instance.\n            //     console.log (this.selection.element());\n            // }\n        });\n    }\n\n    registerShortcuts() {\n        FroalaEditor.RegisterShortcut(49, 'paragraphFormat', 'H1', '1', false);\n        FroalaEditor.RegisterShortcut(50, 'paragraphFormat', 'H2', '2', false);\n        FroalaEditor.RegisterShortcut(51, 'paragraphFormat', 'H3', '3', false);\n        FroalaEditor.RegisterShortcut(52, 'paragraphFormat', 'N', '4', false);\n        FroalaEditor.RegisterShortcut(66, 'font-weight-drop', '700');\n    }\n\n    getBaseConfig() {\n        return {\n            key: 'Ig1A7vB2D2E2E1F1B4muvugzxmwA-7I-7A5B-21qrC-11A2B2C2A1C9B3B3C6E2C1==',\n            editorClass: 'sk-custom',\n            fontFamily: {\n                'Noto Sans KR, Noto Sans, Arial,Helvetica,sans-serif': 'Noto Sans',\n                'Roboto, Arial,Helvetica,sans-serif': 'Roboto',\n                'Georgia,serif': 'Georgia',\n                'Impact,Charcoal,sans-serif': 'Impact',\n                'Tahoma,Geneva,sans-serif': 'Tahoma',\n                '\\'Times New Roman\\',Times,serif': 'Times New Roman',\n                'Verdana,Geneva,sans-serif': 'Verdana'\n            },\n            imageDefaultWidth: 0,\n            // remove image manager\n            // imageInsertButtons: ['imageBack', '|', 'imageUpload', 'imageByURL', 'imageManager'],\n            imageInsertButtons: ['imageBack', '|', 'imageUpload', 'imageByURL'],\n            imageEditButtons: ['imageAlign', 'imageCaption', 'imageRemove', '|', 'imageLink', 'linkOpen', 'linkEdit', 'linkRemove', '-', 'imageDisplay', 'imageStyle', 'imageAlt', 'imageSize'],\n            imageAllowedTypes: ['jpeg', 'jpg', 'png', 'gif'],\n\n            // remove video upload\n            // ['videoBack', '|', 'videoByURL', 'videoEmbed', 'videoUpload']\n            videoInsertButtons: ['videoBack', '|', 'videoByURL', 'videoEmbed'],\n            videoUpload: false,\n            videoResponsive: true,\n\n            pastePlain: true,\n            pasteDeniedAttrs: ['class', 'id', 'style'],\n            pasteDeniedTags: ['div'],\n            wordPasteKeepFormatting: false,\n            imagePaste: false,\n\n            quickInsertEnabled: false,\n\n            paragraphFormat: {\n                H1: '대제목',\n                H2: '소제목',\n                H3: '문단 제목',\n                N: '본문'\n            },\n\n            // toolbarContainer: '.sk-custom-editor-toolbar',\n            toolbarSticky: false,\n            toolbarBottom: false,\n\n\n            attribution: false,\n\n            helpSets: [\n                {\n                    title: 'Gearlounge Custom',\n                    commands: [\n                        {val: 'OSkey1', desc: '대제목'},\n                        {val: 'OSkey2', desc: '소제목'},\n                        {val: 'OSkey3', desc: '문단 제목'},\n                        {val: 'OSkey4', desc: '본문'}\n                    ]\n                },\n                {\n                    title: 'Inline Editor',\n                    commands: [\n                        {val: 'OSkeyE', desc: 'Show the editor'}\n                    ]\n                },\n                {\n                    title: 'Common actions',\n                    commands: [\n                        {val: 'OSkeyC', desc: 'Copy'},\n                        {val: 'OSkeyX', desc: 'Cut'},\n                        {val: 'OSkeyV', desc: 'Paste'},\n                        {val: 'OSkeyZ', desc: 'Undo'},\n                        {val: 'OSkeyShift+Z', desc: 'Redo'},\n                        {val: 'OSkeyK', desc: 'Insert Link'},\n                        {val: 'OSkeyP', desc: 'Insert Image'}\n                    ]\n                },\n                {\n                    title: 'Basic Formatting',\n                    commands: [\n                        {val: 'OSkeyA', desc: 'Select All'},\n                        {val: 'OSkeyB', desc: 'Bold'},\n                        {val: 'OSkeyI', desc: 'Italic'},\n                        {val: 'OSkeyU', desc: 'Underline'},\n                        {val: 'OSkeyS', desc: 'Strikethrough'},\n                        {val: 'OSkey]', desc: 'Increase Indent'},\n                        {val: 'OSkey[', desc: 'Decrease Indent'}\n                    ]\n                },\n                {\n                    title: 'Quote',\n                    commands: [\n                        {val: 'OSkey\\'', desc: 'Increase quote level'},\n                        {val: 'OSkeyShift+\\'', desc: 'Decrease quote level'}\n                    ]\n                },\n                {\n                    title: 'Image / Video',\n                    commands: [\n                        {val: 'OSkey+', desc: 'Resize larger'},\n                        {val: 'OSkey-', desc: 'Resize smaller'}\n                    ]\n                },\n                {\n                    title: 'Table',\n                    commands: [\n                        {val: 'Alt+Space', desc: 'Select table cell'},\n                        {val: 'Shift+Left/Right arrow', desc: 'Extend selection one cell'},\n                        {val: 'Shift+Up/Down arrow', desc: 'Extend selection one row'}\n                    ]\n                },\n                {\n                    title: 'Navigation',\n                    commands: [\n                        {val: 'OSkey/', desc: 'Shortcuts'},\n                        {val: 'Alt+F10', desc: 'Focus popup / toolbar'},\n                        {val: 'Esc', desc: 'Return focus to previous position'}\n                    ]\n                }\n            ],\n        };\n    }\n\n    getToolbar(type: string = 'default') {\n        if (type === 'default') {\n            return {\n                toolbarButtons: {\n                    moreText: {\n                        buttons: ['font-weight-drop', 'fontFamily', 'fontSize', 'textColor', 'clearFormatting', 'italic', 'strikeThrough', 'subscript', 'superscript', 'backgroundColor', 'inlineClass', 'inlineStyle'],\n                        buttonsVisible: 5\n                    },\n                    moreParagraph: {\n                        buttons: ['paragraphFormat', 'alignLeft', 'alignCenter', 'formatUL', 'quote', 'alignRight', 'alignJustify', 'formatOLSimple', 'formatOL', 'paragraphStyle', 'lineHeight', 'outdent', 'indent'],\n                        buttonsVisible: 5\n                    },\n                    moreRich: {\n                        buttons: ['insertLink', 'insertImage', 'insertVideo', 'insertHR', 'insertTable', 'emoticons', 'fontAwesome', 'specialCharacters', 'embedly', 'insertFile'],\n                        buttonsVisible: 4\n                    },\n                    moreMisc: {\n                        buttons: ['undo', 'redo', 'fullscreen', 'print', 'getPDF', 'spellChecker', 'selectAll', 'html', 'help'],\n                        align: 'right',\n                        buttonsVisible: 3\n                    }\n                },\n                toolbarButtonsSm: {\n                    moreText: {\n                        buttons: ['font-weight-drop', 'underline', 'strikeThrough', 'subscript', 'superscript', 'fontFamily', 'fontSize', 'textColor', 'backgroundColor', 'inlineClass', 'inlineStyle', 'clearFormatting'],\n                        buttonsVisible: 2\n                    },\n                    moreParagraph: {\n                        buttons: ['alignLeft', 'alignCenter', 'formatOLSimple', 'alignRight', 'alignJustify', 'formatOL', 'formatUL', 'paragraphFormat', 'paragraphStyle', 'lineHeight', 'outdent', 'indent', 'quote'],\n                        buttonsVisible: 2\n                    },\n                    moreRich: {\n                        buttons: ['insertLink', 'insertImage', 'insertVideo', 'insertTable', 'emoticons', 'fontAwesome', 'specialCharacters', 'embedly', 'insertFile', 'insertHR'],\n                        buttonsVisible: 2\n                    },\n                    moreMisc: {\n                        buttons: ['undo', 'redo', 'fullscreen', 'print', 'getPDF', 'spellChecker', 'selectAll', 'html', 'help'],\n                        align: 'right',\n                        buttonsVisible: 2\n                    }\n                },\n            };\n        } else if (type === 'simple') {\n            return {\n                toolbarButtons: [['font-weight-drop', 'fontFamily', 'fontSize', 'textColor', 'clearFormatting'], ['paragraphFormat', 'alignLeft', 'alignCenter', 'formatUL', 'quote'], ['insertLink']],\n                toolbarButtonsSm: [['font-weight-drop', 'fontFamily', 'fontSize', 'textColor', 'clearFormatting'], ['paragraphFormat', 'alignLeft', 'alignCenter', 'formatUL', 'quote'], ['insertLink']],\n            };\n        }\n\n    }\n\n\n}\n","import {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    Output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport FroalaEditor from 'froala-editor';\n\n@Directive({\n    selector: '[froalaEditor]',\n    exportAs: 'froalaEditor',\n    providers: [{\n        provide: NG_VALUE_ACCESSOR, useExisting:\n            forwardRef(() => SkFroalaEditorDirective),\n        multi: true\n    }]\n})\nexport class SkFroalaEditorDirective implements ControlValueAccessor, AfterViewInit, OnDestroy {\n\n    constructor(el: ElementRef, private zone: NgZone) {\n\n        const element: any = el.nativeElement;\n\n        // check if the element is a special tag\n        if (this.SPECIAL_TAGS.indexOf(element.tagName.toLowerCase()) != -1) {\n            this._hasSpecialTag = true;\n        }\n        this._element = element;\n\n        this.zone = zone;\n    }\n\n    // End ControlValueAccesor methods.\n\n    // froalaEditor directive as input: store the editor options\n    @Input() set froalaEditor(opts: any) {\n        this._opts = this.clone(opts || this._opts);\n        this._opts = {...this._opts};\n    }\n\n    // froalaModel directive as input: store initial editor content\n    @Input() set froalaModel(content: any) {\n        this.updateEditor(content);\n    }\n\n    // editor options\n    private _opts: any = {\n        immediateAngularModelUpdate: false,\n        angularIgnoreAttrs: null\n    };\n\n    private _element: any;\n\n    private SPECIAL_TAGS: string[] = ['img', 'button', 'input', 'a'];\n    private INNER_HTML_ATTR: string = 'innerHTML';\n    private _hasSpecialTag: boolean = false;\n\n    // editor element\n    private _editor: any;\n\n    // initial editor content\n    private _model: string;\n\n    private _editorInitialized: boolean = false;\n\n    private _oldModel: string = null;\n\n    // froalaModel directive as output: update model if editor contentChanged\n    @Output() froalaModelChange: EventEmitter<any> = new EventEmitter<any>();\n\n    // froalaInit directive as output: send manual editor initialization\n    @Output() froalaInit: EventEmitter<Object> = new EventEmitter<Object>();\n\n    // Begin ControlValueAccesor methods.\n    onChange = (_) => {\n    }\n    onTouched = () => {\n    }\n\n    // Form model content changed.\n    writeValue(content: any): void {\n        this.updateEditor(content);\n    }\n\n    registerOnChange(fn: (_: any) => void): void {\n        this.onChange = fn;\n    }\n\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    // TODO: replace clone method with better possible alternate\n    private clone(item) {\n        const me = this;\n        if (!item) {\n            return item;\n        } // null, undefined values check\n\n        let types = [Number, String, Boolean],\n            result;\n\n        // normalizing primitives if someone did new String('aaa'), or new Number('444');\n        types.forEach(function(type) {\n            if (item instanceof type) {\n                result = type(item);\n            }\n        });\n\n        if (typeof result == 'undefined') {\n            if (Object.prototype.toString.call(item) === '[object Array]') {\n                result = [];\n                item.forEach(function(child, index, array) {\n                    result[index] = me.clone(child);\n                });\n            } else if (typeof item == 'object') {\n                // testing that this is DOM\n                if (item.nodeType && typeof item.cloneNode == 'function') {\n                    result = item.cloneNode(true);\n                } else if (!item.prototype) { // check that this is a literal\n                    if (item instanceof Date) {\n                        result = new Date(item);\n                    } else {\n                        // it is an object literal\n                        result = {};\n                        for (const i in item) {\n                            result[i] = me.clone(item[i]);\n                        }\n                    }\n                } else {\n                    if (false && item.constructor) {\n                        result = new item.constructor();\n                    } else {\n                        result = item;\n                    }\n                }\n            } else {\n                result = item;\n            }\n        }\n        return result;\n    }\n\n    // Update editor with model contents.\n    private updateEditor(content: any) {\n        if (JSON.stringify(this._oldModel) == JSON.stringify(content)) {\n            return;\n        }\n\n        if (!this._hasSpecialTag) {\n            this._oldModel = content;\n        } else {\n            this._model = content;\n        }\n\n        if (this._editorInitialized) {\n            if (!this._hasSpecialTag) {\n                this._editor.html.set(content);\n            } else {\n                this.setContent();\n            }\n        } else {\n            if (!this._hasSpecialTag) {\n                this._element.innerHTML = content || '';\n            } else {\n                this.setContent();\n            }\n        }\n    }\n\n    // update model if editor contentChanged\n    private updateModel() {\n        this.zone.run(() => {\n\n            let modelContent: any = null;\n\n            if (this._hasSpecialTag) {\n\n                const attributeNodes = this._element.attributes;\n                const attrs = {};\n\n                for (let i = 0; i < attributeNodes.length; i++) {\n\n                    const attrName = attributeNodes[i].name;\n                    if (this._opts.angularIgnoreAttrs && this._opts.angularIgnoreAttrs.indexOf(attrName) != -1) {\n                        continue;\n                    }\n\n                    attrs[attrName] = attributeNodes[i].value;\n                }\n\n                if (this._element.innerHTML) {\n                    attrs[this.INNER_HTML_ATTR] = this._element.innerHTML;\n                }\n\n                modelContent = attrs;\n            } else {\n\n                const returnedHtml: any = this._editor.html.get();\n                if (typeof returnedHtml === 'string') {\n                    modelContent = returnedHtml;\n                }\n            }\n            if (this._oldModel !== modelContent) {\n                this._oldModel = modelContent;\n\n                // Update froalaModel.\n                this.froalaModelChange.emit(modelContent);\n\n                // Update form model.\n                this.onChange(modelContent);\n            }\n\n        });\n    }\n\n    private registerEvent(eventName, callback) {\n\n        if (!eventName || !callback) {\n            return;\n        }\n\n        if (!this._opts.events) {\n            this._opts.events = {};\n        }\n\n        this._opts.events[eventName] = callback;\n    }\n\n    private initListeners() {\n        const self = this;\n        // Check if we have events on the editor.\n        if (this._editor.events) {\n            // bind contentChange and keyup event to froalaModel\n            this._editor.events.on('contentChanged', function() {\n                setTimeout(function() {\n                    self.updateModel();\n                }, 0);\n            });\n            this._editor.events.on('mousedown', function() {\n                setTimeout(function() {\n                    self.onTouched();\n                }, 0);\n            });\n\n            if (this._opts.immediateAngularModelUpdate) {\n                this._editor.events.on('keyup', function() {\n                    setTimeout(function() {\n                        self.updateModel();\n                    }, 0);\n                });\n            }\n        }\n\n        this._editorInitialized = true;\n    }\n\n    private createEditor() {\n        if (this._editorInitialized) {\n            return;\n        }\n\n        this.setContent(true);\n\n        // init editor\n        this.zone.runOutsideAngular(() => {\n            // Add listeners on initialized event.\n            if (!this._opts.events) { this._opts.events = {}; }\n\n            // Register initialized event.\n            this.registerEvent('initialized', this._opts.events && this._opts.events.initialized);\n            const existingInitCallback = this._opts.events.initialized;\n            // Default initialized event.\n            if (!this._opts.events.initialized || !this._opts.events.initialized.overridden) {\n                this._opts.events.initialized = () => {\n                    this.initListeners();\n                    existingInitCallback && existingInitCallback.call(this._editor, this);\n                };\n                this._opts.events.initialized.overridden = true;\n            }\n\n            // Initialize the Froala Editor.\n            this._editor = new FroalaEditor(\n                this._element,\n                this._opts\n            );\n        });\n    }\n\n    private setHtml() {\n        this._editor.html.set(this._model || '');\n\n        // This will reset the undo stack everytime the model changes externally. Can we fix this?\n        this._editor.undo.reset();\n        this._editor.undo.saveStep();\n    }\n\n    private setContent(firstTime = false) {\n        const self = this;\n\n        // Set initial content\n        if (this._model || this._model == '') {\n            this._oldModel = this._model;\n            if (this._hasSpecialTag) {\n\n                const tags: Object = this._model;\n\n                // add tags on element\n                if (tags) {\n\n                    for (const attr in tags) {\n                        if (tags.hasOwnProperty(attr) && attr != this.INNER_HTML_ATTR) {\n                            this._element.setAttribute(attr, tags[attr]);\n                        }\n                    }\n\n                    if (tags.hasOwnProperty(this.INNER_HTML_ATTR)) {\n                        this._element.innerHTML = tags[this.INNER_HTML_ATTR];\n                    }\n                }\n            } else {\n                if (firstTime) {\n                    this.registerEvent('initialized', function() {\n                        self.setHtml();\n                    });\n                } else {\n                    self.setHtml();\n                }\n            }\n        }\n    }\n\n    private destroyEditor() {\n        if (this._editorInitialized) {\n            this._editor.destroy();\n            this._editorInitialized = false;\n        }\n    }\n\n    private getEditor() {\n        if (this._element) {\n            return this._editor;\n        }\n\n        return null;\n    }\n\n    // send manual editor initialization\n    private generateManualController() {\n        const controls = {\n            initialize: this.createEditor.bind(this),\n            destroy: this.destroyEditor.bind(this),\n            getEditor: this.getEditor.bind(this),\n        };\n        this.froalaInit.emit(controls);\n    }\n\n    // TODO not sure if ngOnInit is executed after @inputs\n    ngAfterViewInit() {\n        // check if output froalaInit is present. Maybe observers is private and should not be used?? TODO how to better test that an output directive is present.\n        if (!this.froalaInit.observers.length) {\n            this.createEditor();\n        } else {\n            this.generateManualController();\n        }\n    }\n\n    ngOnDestroy() {\n        this.destroyEditor();\n    }\n}\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { SkApiService } from 'sk-front-lib/api';\nimport { ISkFile, SkArticle, SkFile } from 'sk-front-lib/model';\nimport { SkArticleService } from './sk-article.service';\n\n@Component({\n    selector: 'sk-article-editor',\n    templateUrl: './sk-article-editor.component.html',\n    styleUrls: ['./sk-article-editor.component.scss']\n})\nexport class SkArticleEditorComponent implements OnInit, OnChanges {\n\n    @Input() article: SkArticle;\n    @Input() toolbarType: string = 'default';\n\n    content: string;\n    images: SkFile[];\n\n    editorConfig;\n\n    constructor(private _apiService: SkApiService,\n                private _articleService: SkArticleService) {\n        this._initOptions();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // ------------------------------------------1-----------------------------------------------------------\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    ngOnInit(): void {\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this._initData();\n        this._initOptions();\n    }\n\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    public getData(): { content: string, images: SkFile[] } {\n        return {content: this.content, images: this.images};\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n\n    _initData() {\n        if (!this.article) {\n            return;\n        }\n\n        this.content = this.article.content;\n        this.images = this.article.images || [];\n    }\n\n    _initOptions() {\n        this.editorConfig = Object.assign({}, this._articleService.getBaseConfig(), {\n            requestHeaders: {\n                'Authorization': 'Bearer ' + this._apiService.getToken(),\n                'ngsw-bypass': 'true'\n            },\n            imageUploadParams: {\n                imageUrl: this._articleService.environment.apiServer + '/api/public/images/'\n            },\n            imageUploadParam: 'file',\n            imageUploadRemoteUrls: true,\n            imageUploadURL: this._articleService.environment.apiServer + '/external/froala/upload',\n\n            fileUploadParams: {\n                imageUrl: this._articleService.environment.apiServer + '/api/public/files/'\n            },\n            fileUploadParam: 'file',\n            fileUploadURL: this._articleService.environment.apiServer + '/external/froala/upload',\n\n            events: {\n                'image.inserted': ($img, response) => {\n                    this._addImage(JSON.parse(response).file);\n                },\n                'image.removed': ($img) => {\n                    console.log($img, $img.dataset);\n                    for (let i = 0; i < $img.length; i++) {\n                        this._removeImage(Number($img[i].dataset.id));\n                    }\n                }\n            },\n            ...this._articleService.getToolbar(this.toolbarType)\n        });\n    }\n\n    _addImage(file: ISkFile) {\n        this.images.push(new SkFile(file));\n    }\n\n    _removeImage(id: number) {\n        const index = this.images.findIndex(value => value.id === id);\n        if (index > -1) {\n            this.images.splice(index, 1);\n        }\n    }\n}\n","<div [froalaEditor]=\"editorConfig\" [(froalaModel)]=\"content\"></div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SkArticleEditorComponent } from './sk-article-editor.component';\nimport { SkFroalaEditorDirective } from './sk-froala-editor.directive';\n\n@NgModule({\n    declarations: [\n        SkArticleEditorComponent,\n        SkFroalaEditorDirective\n    ],\n    imports: [\n        CommonModule\n    ],\n    exports: [\n        SkArticleEditorComponent,\n        SkFroalaEditorDirective\n    ],\n    providers: [\n    ]\n})\nexport class SkArticleModule {\n}\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { SkApiService } from 'sk-front-lib/api';\nimport { SkArticle, SkFile } from 'sk-front-lib/model';\n\n@Component({\n    selector: 'sk-article-editor',\n    templateUrl: './sk-article-editor-server.component.html',\n    styleUrls: ['./sk-article-editor-server.component.scss']\n})\nexport class SkArticleEditorServerComponent implements OnInit, OnChanges {\n\n    @Input() article: SkArticle;\n    @Input() toolbarType: string = 'default';\n\n    content: string;\n    images: SkFile[];\n\n    editorConfig;\n\n    constructor(private _apiService: SkApiService) {\n        this._initOptions();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // ------------------------------------------1-----------------------------------------------------------\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    ngOnInit(): void {\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this._initData();\n        this._initOptions();\n    }\n\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    public getData(): { content: string, images: SkFile[] } {\n        return {content: this.content, images: this.images};\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n\n    _initData() {\n        if (!this.article) {\n            return;\n        }\n\n        this.content = this.article.content;\n        this.images = this.article.images || [];\n    }\n\n    _initOptions() {\n    }\n}\n","<div>Server</div>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { SkArticleEditorServerComponent } from './sk-article-editor-server.component';\n\n@NgModule({\n    declarations: [\n        SkArticleEditorServerComponent,\n    ],\n    imports: [\n        CommonModule\n    ],\n    exports: [\n        SkArticleEditorServerComponent,\n    ],\n    providers: [\n    ]\n})\nexport class SkArticleServerModule {\n    static forRoot(environment): ModuleWithProviders<SkArticleServerModule> {\n        return {\n            ngModule: SkArticleServerModule,\n            providers: []\n        };\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.SkArticleService","i3.SkFroalaEditorDirective"],"mappings":"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"}