@firestitch/content 12.3.1 → 12.3.2
Sign up to get free protection for your applications and to get access to all the features.
- package/app/modules/editor/components/editor/editor.component.d.ts +2 -0
- package/app/modules/editor/components/editor-label/editor-label.component.d.ts +7 -0
- package/app/modules/editor/components/editor-label/index.d.ts +1 -0
- package/app/modules/editor/fs-content-editor.module.d.ts +18 -17
- package/bundles/firestitch-content.umd.js +118 -92
- package/bundles/firestitch-content.umd.js.map +1 -1
- package/esm2015/app/modules/editor/components/editor/editor.component.js +12 -8
- package/esm2015/app/modules/editor/components/editor-label/editor-label.component.js +21 -0
- package/esm2015/app/modules/editor/components/editor-label/index.js +2 -0
- package/esm2015/app/modules/editor/fs-content-editor.module.js +5 -2
- package/fesm2015/firestitch-content.js +63 -40
- package/fesm2015/firestitch-content.js.map +1 -1
- package/package.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"firestitch-content.umd.js","sources":["../../src/app/enums/editor-type.ts","../../src/app/enums/page-type.enum.ts","../../src/app/modules/editor/components/editor/editor.component.ts","../../src/app/modules/editor/components/editor/editor.component.html","../../src/app/modules/editor/fs-content-editor.module.ts","../../src/app/injectors/content-config.injector.ts","../../src/app/modules/content-layouts/components/content-layout/content-layout.component.ts","../../src/app/modules/content-layouts/components/content-layout/content-layout.component.html","../../src/app/modules/content-layouts/components/content-layout-editor/content-layout-editor.component.ts","../../src/app/modules/content-layouts/components/content-layout-editor/content-layout-editor.component.html","../../src/app/modules/content-layouts/components/content-layouts/content-layouts.component.ts","../../src/app/modules/content-layouts/components/content-layouts/content-layouts.component.html","../../src/app/modules/content-layouts/fs-content-layouts.module.ts","../../src/app/consts/page-types.const.ts","../../src/app/modules/content-pages/components/content-page/content-page.component.ts","../../src/app/modules/content-pages/components/content-page/content-page.component.html","../../src/app/modules/content-pages/components/content-page-editor/content-page-editor.component.ts","../../src/app/modules/content-pages/components/content-page-editor/content-page-editor.component.html","../../src/app/modules/content-pages/components/content-pages/content-pages.component.ts","../../src/app/modules/content-pages/components/content-pages/content-pages.component.html","../../src/app/modules/content-pages/fs-content-pages.module.ts","../../src/app/modules/content-style/components/content-style/content-style.component.ts","../../src/app/modules/content-style/components/content-style/content-style.component.html","../../src/app/modules/content-style/fs-content-style.module.ts","../../src/app/modules/content/components/content-renderer/content-renderer.component.ts","../../src/app/modules/content/components/content-renderer/content-renderer.component.html","../../src/app/modules/content/components/content/content.component.ts","../../src/app/modules/content/components/content/content.component.html","../../src/app/modules/content/fs-content.module.ts","../../src/firestitch-content.ts"],"sourcesContent":["export enum EditorType {\n Js = 'js',\n Html = 'html',\n Scss = 'scss',\n GlobalScss = 'globalScss',\n}\n","export enum PageType {\n StandardPage = 'standardPage',\n BlogPost = 'blogPost',\n HomePage = 'homePage',\n NotFoundPage = 'notFoundPage',\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\n\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorConfig } from '@firestitch/text-editor';\n\nimport { Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { EditorType } from '../../../../enums';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n selector: 'app-editor',\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorComponent implements OnInit, OnDestroy {\n\n @Input() public showHtml = false;\n @Input() public showScss = false;\n @Input() public showJs = false;\n @Input() public showGlobalScss = false;\n\n @Input() public html;\n @Input() public scss;\n @Input() public js ;\n @Input() public contentConfig: FsContentConfig;\n\n @Output() public changed = new EventEmitter<{ type: string; value: string }>();\n @Output() public focused = new EventEmitter<string>();\n @Output() public blured = new EventEmitter<string>();\n\n public changes: any = {};\n public EditorType = EditorType;\n\n public contentStyle: {\n scss?: string;\n };\n\n public resizing = false;\n public title;\n\n public scssConfig: FsTextEditorConfig;\n public globalScssConfig: FsTextEditorConfig;\n public htmlConfig: FsTextEditorConfig;\n public jsConfig: FsTextEditorConfig;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this.initTextEditors();\n this.initGlobalContentStyle();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public change(type, value) {\n this.changed.emit({ type, value });\n this.changes[type] = value;\n }\n\n public get hasChanges() {\n return Object.keys(this.changes)\n .filter((name) => !!this.changes[name])\n .length !== 0;\n }\n\n public clearChange(type) {\n this.changes[type] = null;\n this._cdRef.markForCheck();\n }\n\n public initTextEditors() {\n this.scssConfig = {\n tabSize: 2,\n language: 'scss',\n height: '100%',\n focus: () => {\n this.focused.emit(EditorType.Scss);\n },\n blur: () => {\n this.blured.emit(EditorType.Scss);\n },\n };\n this.jsConfig = {\n tabSize: 2,\n language: 'js',\n height: '100%',\n focus: () => {\n this.focused.emit(EditorType.Js);\n },\n blur: () => {\n this.blured.emit(EditorType.Js);\n },\n };\n this.htmlConfig = {\n tabSize: 2,\n language: 'html',\n height: '100%',\n focus: () => {\n this.focused.emit(EditorType.Html);\n },\n blur: () => {\n this.blured.emit(EditorType.Html);\n },\n };\n this.globalScssConfig = {\n tabSize: 2,\n language: 'scss',\n height: '100%',\n focus: () => {\n this.focused.emit(EditorType.GlobalScss);\n },\n blur: () => {\n this.blured.emit(EditorType.GlobalScss);\n },\n };\n }\n\n public initGlobalContentStyle() {\n this.contentConfig.loadContentStyle()\n .subscribe((contentStyle) => {\n this.contentStyle = contentStyle || {};\n this._cdRef.markForCheck();\n });\n }\n\n public saveGlobalScss() {\n return this.contentConfig.saveContentStyle(this.contentStyle)\n .pipe(\n tap(() => {\n this._message.success('Saved Changes');\n }),\n );\n }\n\n}\n","<as-split [unit]=\"'percent'\" [gutterSize]=\"25\"> \n <as-split-area [size]=\"70\" [visible]=\"showHtml\" [order]=\"1\">\n <div class=\"editor-container\">\n <fs-label>HTML {{changes.html ? '*' : ''}}</fs-label>\n <fs-text-editor \n [(ngModel)]=\"html\" \n name=\"html\"\n [fsModelChangeOptions]=\"{ debounce: 0 }\"\n (fsModelChange)=\"change(EditorType.Html, $event)\"\n [config]=\"htmlConfig\">\n </fs-text-editor> \n </div>\n </as-split-area>\n <as-split-area [size]=\"30\" [visible]=\"showScss\" [order]=\"2\">\n <div class=\"editor-container\">\n <fs-label>SCSS {{changes.scss ? '*' : ''}}</fs-label>\n <fs-text-editor \n [(ngModel)]=\"scss\" \n name=\"scss\"\n [fsModelChangeOptions]=\"{ debounce: 0 }\"\n (fsModelChange)=\"change(EditorType.Scss, $event)\"\n [config]=\"scssConfig\">\n </fs-text-editor> \n </div>\n </as-split-area>\n <as-split-area [size]=\"30\" [visible]=\"showJs\" [order]=\"3\">\n <div class=\"editor-container\">\n <fs-label>JS {{changes.js ? '*' : ''}}</fs-label>\n <fs-text-editor \n [(ngModel)]=\"js\" \n name=\"js\"\n [fsModelChangeOptions]=\"{ debounce: 0 }\"\n (fsModelChange)=\"change(EditorType.Js, $event)\"\n [config]=\"jsConfig\">\n </fs-text-editor> \n </div>\n </as-split-area>\n <as-split-area [size]=\"30\" [visible]=\"showGlobalScss\" [order]=\"4\">\n <div class=\"editor-container\">\n <fs-label>Global SCSS {{changes.globalScss ? '*' : ''}}</fs-label>\n <ng-container *fsSkeleton=\"contentStyle\">\n <fs-text-editor \n [(ngModel)]=\"contentStyle.scss\" \n name=\"globalScss\"\n [fsModelChangeOptions]=\"{ debounce: 300 }\"\n (fsModelChange)=\"change(EditorType.GlobalScss, $event)\"\n [config]=\"globalScssConfig\">\n </fs-text-editor> \n </ng-container> \n </div>\n </as-split-area>\n</as-split>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { FsCommonModule } from '@firestitch/common';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsListModule } from '@firestitch/list';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { AngularSplitModule } from 'angular-split';\n\nimport { EditorComponent } from './components/editor';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatButtonModule,\n MatTabsModule,\n MatIconModule,\n MatButtonToggleModule,\n\n FsListModule,\n FsFormModule,\n FsSkeletonModule,\n FsLabelModule,\n FsHtmlEditorModule,\n FsCommonModule,\n FsDialogModule,\n FsTextEditorModule,\n\n AngularSplitModule,\n ],\n exports: [\n EditorComponent,\n ],\n declarations: [\n EditorComponent,\n ],\n})\nexport class FsContentEditorModule {\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_CONTENT_CONFIG = new InjectionToken<any>('fs-content-config');\n","import {\n Component,\n Inject,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChildren,\n QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject, of } from 'rxjs';\nimport { switchMap, tap, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n templateUrl: './content-layout.component.html',\n styleUrls: ['./content-layout.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentLayoutComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public contentLayout = null;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor( \n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<ContentLayoutComponent>,\n private _message: FsMessage,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n this._fetchData();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._config.saveContentLayout(this.contentLayout)\n .pipe(\n tap((contentLayout) => {\n this._message.success('Saved Changes');\n this._dialogRef.close(contentLayout);\n }),\n );\n };\n\n private _fetchData(): void {\n of(this._data.contentLayout)\n .pipe(\n switchMap((contentLayout) => {\n return of(contentLayout);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe((contentLayout) => {\n this.contentLayout = { ...contentLayout };\n\n this._cdRef.markForCheck();\n });\n }\n\n}\n","<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentLayout\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentLayout.id ? 'Layout' : 'Layout Page'}}</h1>\n <div mat-dialog-content>\n <div class=\"fs-column\">\n <mat-form-field>\n <mat-label>Name</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentLayout.name\"\n name=\"name\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Tag</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentLayout.tag\"\n name=\"tag\">\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { Subject, fromEvent, of, throwError } from 'rxjs';\nimport { filter, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { EditorType } from '../../../../enums';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\nimport { ContentLayoutComponent } from '../content-layout/content-layout.component';\n\n\n@Component({\n templateUrl: './content-layout-editor.component.html',\n styleUrls: ['./content-layout-editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentLayoutEditorComponent implements OnInit, OnDestroy {\n\n @ViewChild(EditorComponent)\n public editor: EditorComponent;\n\n public contentLayout: {\n id?: number;\n styles?: string;\n content?: string;\n name?: string;\n };\n\n public config: FsContentConfig;\n public EditorType = EditorType;\n public focused = null;\n public title;\n public editors = {\n [EditorType.Html]: true,\n [EditorType.Scss]: true,\n [EditorType.GlobalScss]: false,\n };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: {\n contentLayout: any;\n contentConfig: FsContentConfig;\n },\n private _dialogRef: MatDialogRef<ContentLayoutEditorComponent>,\n private _message: FsMessage,\n private _dialog: MatDialog,\n private _cdRef: ChangeDetectorRef,\n private _prompt: FsPrompt,\n ) {}\n\n public ngOnInit(): void {\n this._dialogRef.addPanelClass('fs-content-editor-overlay-pane');\n this._dialogRef.disableClose = true;\n this.config = this._data.contentConfig;\n this._initContentLayout(this._data.contentLayout);\n this._initEscape();\n }\n\n public editorToggleChange(event: MatButtonToggleChange): void {\n this.editors[event.value] = !this.editors[event.value];\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public _initContentLayout(contentLayout) {\n this.config.loadContentLayout(contentLayout.id)\n .subscribe((data) => {\n this.contentLayout = data;\n this._cdRef.markForCheck();\n });\n }\n\n public editorFocused(type) {\n this.focused = type;\n }\n\n public save = () => {\n return of(null)\n .pipe(\n filter(() => this.focused),\n switchMap(() => {\n switch (this.focused) {\n case EditorType.Html:\n case EditorType.Scss:\n return this.saveContentPage();\n case EditorType.GlobalScss:\n return this.editor.saveGlobalScss();\n }\n\n return throwError('Invalid focus');\n }),\n tap(() => {\n this.editor.clearChange(this.focused);\n this._cdRef.markForCheck();\n }),\n );\n };\n\n public saveContentPage() {\n const names = {\n [EditorType.Scss]: 'styles',\n [EditorType.Html]: 'content',\n };\n\n const data = {\n id: this.contentLayout.id,\n [names[this.focused]]: this.editor.changes[this.focused],\n };\n\n return this.config.saveContentLayout({\n id: this.contentLayout.id,\n ...data,\n })\n .pipe(\n tap(() => {\n this._message.success('Saved Changes');\n }),\n );\n }\n\n public close(): void {\n if(!this.editor.hasChanges) {\n return this._dialogRef.close();\n }\n\n this._prompt.confirm({\n dialogConfig: {\n width: null,\n },\n title: 'You have unsaved changes',\n template: 'What would you like to do with your changes?',\n buttons: [\n {\n label: 'Review Changes',\n value: 'review',\n },\n {\n label: 'Discard Changes',\n value: 'discard',\n },\n ],\n })\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((value) =>{\n if(value === 'discard') {\n this._dialogRef.close();\n }\n });\n }\n\n public openSettings(): void {\n this._dialog.open(ContentLayoutComponent, {\n data: {\n contentLayout: this.contentLayout,\n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((contentLayout) => {\n this.contentLayout = {\n ...this.contentLayout,\n ...contentLayout,\n };\n this._cdRef.markForCheck();\n });\n }\n\n private _initEscape(): void {\n fromEvent(document, 'keydown')\n .pipe(\n filter((event: KeyboardEvent) => event.code === 'Escape'),\n takeUntil(this._destroy$),\n ).subscribe(() => {\n const dialogRef = this._dialog.openDialogs.reverse()[0];\n if(dialogRef?.componentInstance === this) {\n this.close();\n }\n });\n }\n\n}\n","<form fsForm [submit]=\"save\" [dirtySubmitButton]=\"false\" [confirm]=\"false\">\n <fs-dialog *fsSkeletonForm=\"contentLayout\">\n <h1 mat-dialog-title>\n <div class=\"title-container\">\n <div class=\"title\">\n Layout Editor\n <div class=\"small\">{{contentLayout.name}}</div> \n </div>\n <a\n (click)=\"openSettings()\"\n mat-icon-button>\n <mat-icon>settings</mat-icon>\n </a> \n </div>\n </h1>\n <div mat-dialog-content>\n <app-editor\n [contentConfig]=\"config\"\n [showHtml]=\"editors.html\"\n [showScss]=\"editors.scss\"\n [showGlobalScss]=\"editors.globalScss\"\n [html]=\"contentLayout.content\"\n [scss]=\"contentLayout.styles\"\n (focused)=\"editorFocused($event)\">\n </app-editor>\n </div>\n\n <div mat-dialog-actions>\n <button \n mat-button\n color=\"primary\"\n (click)=\"close()\"\n type=\"button\"> \n Done \n </button>\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"html\" [checked]=\"editors.html\" (change)=\"editorToggleChange($event)\">HTML</mat-button-toggle>\n <mat-button-toggle value=\"scss\" [checked]=\"editors.scss\" (change)=\"editorToggleChange($event)\">SCSS</mat-button-toggle>\n <mat-button-toggle value=\"globalScss\" [checked]=\"editors.globalScss\" (change)=\"editorToggleChange($event)\">Global SCSS</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n </div>\n </fs-dialog>\n</form>","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { ItemType } from '@firestitch/filter';\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\n\nimport { Observable, Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { ContentLayoutComponent } from '../../components/content-layout';\nimport { ContentLayoutEditorComponent } from '../content-layout-editor/content-layout-editor.component';\n\n\n@Component({\n selector: 'fs-content-layouts',\n templateUrl: './content-layouts.component.html',\n styleUrls: ['./content-layouts.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentLayoutsComponent implements OnInit, OnDestroy {\n\n @ViewChild(FsListComponent)\n public listComponent: FsListComponent;\n\n public listConfig: FsListConfig;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _dialog: MatDialog,\n ) {}\n\n public ngOnInit(): void {\n this._initListConfig();\n }\n\n public openEditor(contentLayout: any): void {\n this._dialog.open(ContentLayoutEditorComponent, {\n maxWidth: '100vw',\n width: '100%',\n height: '100%',\n data: {\n contentLayout,\n contentConfig: this._config,\n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public openLayout(contentLayout: any): Observable<any> {\n return this._dialog.open(ContentLayoutComponent, {\n data: {\n contentLayout,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentLayout) => !!_contentLayout),\n takeUntil(this._destroy$),\n );\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _initListConfig(): void {\n this.listConfig = {\n paging: false,\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n ],\n actions: [\n {\n label: 'Create',\n click: () => {\n this.openLayout({})\n .subscribe(() => {\n this.listComponent.reload();\n });\n },\n },\n ],\n rowActions: [\n {\n click: (data) => {\n return this._config.deleteContentLayout(data);\n },\n remove: {\n title: 'Confirm',\n template: 'Are you sure you would like to delete this record?',\n },\n menu: true,\n label: 'Delete',\n },\n ],\n fetch: (query) => {\n return this._config.loadContentLayouts(query)\n .pipe(\n map((contentLayouts: any) => {\n return { data: contentLayouts };\n }),\n );\n },\n restore: {\n query: { state: 'deleted' },\n filterLabel: 'Show Deleted',\n menuLabel: 'Restore',\n reload: true,\n click: (row) => {\n return this._config.saveContentLayout({ id: row.id, state: 'active' });\n },\n },\n };\n }\n\n}\n\n","<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.modifyDate | fsDate: 'date-time-yearless'}}\n </ng-template>\n </fs-list-column>\n</fs-list>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsListModule } from '@firestitch/list';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentEditorModule } from '../editor';\n\nimport { ContentLayoutEditorComponent } from './components';\nimport { ContentLayoutComponent } from './components/content-layout';\nimport { FsContentLayoutsComponent } from './components/content-layouts';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatTabsModule,\n MatIconModule,\n MatSelectModule,\n MatButtonToggleModule,\n\n FsListModule,\n FsDateModule,\n FsFormModule,\n FsLabelModule,\n FsSkeletonModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n\n FsContentEditorModule,\n ],\n exports: [\n FsContentLayoutsComponent,\n ],\n declarations: [\n ContentLayoutComponent,\n FsContentLayoutsComponent,\n ContentLayoutEditorComponent,\n ],\n})\nexport class FsContentLayoutsModule {\n}\n","import { PageType } from '../enums';\n\nexport const PageTypes = [\n { name: 'Standard Page', value: PageType.StandardPage },\n { name: 'Home Page', value: PageType.HomePage },\n { name: 'Not Found Page', value: PageType.NotFoundPage },\n { name: 'Blog Post', value: PageType.BlogPost },\n];\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChildren,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject, of } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { PageTypes } from '../../../../consts';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n templateUrl: './content-page.component.html',\n styleUrls: ['./content-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentPageComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public contentPage = null;\n public PageTypes = PageTypes;\n public contentLayouts;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<ContentPageComponent>,\n private _message: FsMessage,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n this._dialogRef.updateSize('600px');\n this._fetchData();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._config.saveContentPage(this.contentPage)\n .pipe(\n tap((contentPage) => {\n this._message.success('Saved Changes');\n this._dialogRef.close(contentPage);\n }),\n );\n };\n\n private _fetchData(): void {\n this._config.loadContentLayouts()\n .subscribe((contentLayouts) => {\n this.contentLayouts = contentLayouts;\n this._cdRef.markForCheck();\n });\n\n of(this._data.contentPage)\n .pipe(\n switchMap((contentPage) => {\n return of(contentPage);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe((contentPage) => {\n this.contentPage = {\n ...contentPage,\n };\n\n this._cdRef.markForCheck();\n });\n }\n\n}\n","<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentPage\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentPage.id ? 'Page' : 'Create Page'}}</h1>\n <div mat-dialog-content>\n <div class=\"fs-column\">\n <mat-form-field>\n <mat-label>Type</mat-label>\n <mat-select\n [(ngModel)]=\"contentPage.type\"\n name=\"type\"\n required>\n <mat-option\n *ngFor=\"let item of PageTypes\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field *ngIf=\"contentLayouts\">\n <mat-label>Layout</mat-label>\n <mat-select\n [(ngModel)]=\"contentPage.contentLayoutId\"\n required\n name=\"contentLayoutId\">\n <mat-option\n *ngFor=\"let item of contentLayouts\"\n [value]=\"item.id\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Name</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentPage.name\"\n name=\"name\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Path</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentPage.path\"\n name=\"path\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Title</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentPage.title\"\n name=\"title\">\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { Subject, fromEvent, of, throwError } from 'rxjs';\nimport { filter, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { EditorType } from '../../../../enums';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\nimport { ContentPageComponent } from '../content-page/content-page.component';\n\n\n@Component({\n templateUrl: './content-page-editor.component.html',\n styleUrls: ['./content-page-editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentPageEditorComponent implements OnInit, OnDestroy {\n\n @ViewChild(EditorComponent)\n public editor: EditorComponent;\n\n public contentPage: {\n id?: number;\n styles?: string;\n content?: string;\n name?: string;\n js?: string;\n };\n public focused = null;\n public config: FsContentConfig;\n public resizing = false;\n public title;\n public editors = {\n [EditorType.Html]: true,\n [EditorType.Scss]: true,\n [EditorType.Js]: false,\n [EditorType.GlobalScss]: false,\n };\n\n public get isMac(): boolean {\n return navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n }\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: {\n contentPage: any;\n contentConfig: FsContentConfig;\n },\n private _dialogRef: MatDialogRef<ContentPageEditorComponent>,\n private _message: FsMessage,\n private _dialog: MatDialog,\n private _cdRef: ChangeDetectorRef,\n private _prompt: FsPrompt,\n ) { }\n\n public ngOnInit(): void {\n this._dialogRef.addPanelClass('fs-content-editor-overlay-pane');\n this._dialogRef.disableClose = true;\n this.config = this._data.contentConfig;\n this._initContentPage(this._data.contentPage);\n this._initEscape();\n }\n\n public editorToggleChange(event: MatButtonToggleChange): void {\n this.editors[event.value] = !this.editors[event.value];\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public _initContentPage(contentPage) {\n this.config.loadContentPage(contentPage.id)\n .subscribe((data) => {\n this.contentPage = data;\n this._cdRef.markForCheck();\n });\n }\n\n public editorFocused(type) {\n this.focused = type;\n }\n\n public save = () => {\n return of(null)\n .pipe(\n filter(() => this.focused),\n switchMap(() => {\n switch (this.focused) {\n case EditorType.Js:\n case EditorType.Html:\n case EditorType.Scss:\n return this.saveContentPage();\n case EditorType.GlobalScss:\n return this.editor.saveGlobalScss();\n }\n\n return throwError('Invalid focus');\n }),\n tap(() => {\n this.editor.clearChange(this.focused);\n this._cdRef.markForCheck();\n }),\n );\n };\n\n public saveContentPage() {\n const names = {\n [EditorType.Js]: 'js',\n [EditorType.Scss]: 'styles',\n [EditorType.Html]: 'content',\n };\n\n const data = {\n id: this.contentPage.id,\n [names[this.focused]]: this.editor.changes[this.focused],\n };\n\n return this.config.saveContentPage({\n id: this.contentPage.id,\n ...data,\n })\n .pipe(\n tap(() => {\n this._message.success('Saved Changes');\n }),\n );\n }\n\n\n public close(): void {\n if (!this.editor.hasChanges) {\n return this._dialogRef.close();\n }\n\n this._prompt.confirm({\n dialogConfig: {\n width: null,\n },\n title: 'You have unsaved changes',\n template: 'What would you like to do with your changes?',\n buttons: [\n {\n label: 'Review Changes',\n value: 'review',\n },\n {\n label: 'Discard Changes',\n value: 'discard',\n },\n ],\n })\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((value) => {\n if (value === 'discard') {\n this._dialogRef.close();\n }\n });\n }\n\n public openSettings(): void {\n this._dialog.open(ContentPageComponent, {\n data: {\n contentPage: this.contentPage,\n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((contentPage) => {\n this.contentPage = {\n ...this.contentPage,\n ...contentPage,\n };\n this._cdRef.markForCheck();\n });\n }\n\n private _initEscape(): void {\n fromEvent(document, 'keydown')\n .pipe(\n filter((event: KeyboardEvent) => event.code === 'Escape'),\n takeUntil(this._destroy$),\n ).subscribe(() => {\n const dialogRef = this._dialog.openDialogs.reverse()[0];\n if (dialogRef?.componentInstance === this) {\n this.close();\n }\n });\n }\n\n}\n","<form fsForm [submit]=\"save\" [dirtySubmitButton]=\"false\" [confirm]=\"false\">\n <fs-dialog *fsSkeletonForm=\"contentPage\">\n <h1 mat-dialog-title>\n <div class=\"title-container\">\n <div class=\"title\">\n Page Editor\n <div class=\"small\">{{contentPage.name}}</div> \n </div>\n <a\n (click)=\"openSettings()\"\n mat-icon-button>\n <mat-icon>settings</mat-icon>\n </a>\n\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"html\" [checked]=\"editors.html\" (change)=\"editorToggleChange($event)\">HTML</mat-button-toggle>\n <mat-button-toggle value=\"scss\" [checked]=\"editors.scss\" (change)=\"editorToggleChange($event)\">SCSS</mat-button-toggle>\n <mat-button-toggle value=\"js\" [checked]=\"editors.js\" (change)=\"editorToggleChange($event)\">JS</mat-button-toggle>\n <mat-button-toggle value=\"globalScss\" [checked]=\"editors.globalScss\" (change)=\"editorToggleChange($event)\">Global SCSS</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n\n <div class=\"actions\">\n <button \n mat-button\n [disabled]=\"!editor?.hasChanges\"\n [matTooltip]=\"isMac ? 'cmd+s' : 'ctrl+s'\"\n type=\"submit\"> \n Save\n </button>\n\n <button \n mat-button\n (click)=\"close()\"\n type=\"button\"> \n Done\n </button>\n </div>\n </div>\n </h1>\n <div mat-dialog-content>\n <app-editor\n [contentConfig]=\"config\"\n [showHtml]=\"editors.html\"\n [showJs]=\"editors.js\"\n [showScss]=\"editors.scss\"\n [showGlobalScss]=\"editors.globalScss\"\n [html]=\"contentPage.content\"\n [scss]=\"contentPage.styles\"\n [js]=\"contentPage.js\"\n (focused)=\"editorFocused($event)\">\n </app-editor>\n </div>\n </fs-dialog>\n</form>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { index } from '@firestitch/common';\nimport { ItemType } from '@firestitch/filter';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\n\nimport { Observable, Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\n\nimport { PageTypes } from '../../../../consts';\nimport { PageType } from '../../../../enums';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { ContentPageEditorComponent } from '../content-page-editor';\nimport { ContentPageComponent } from '../content-page/content-page.component';\n\n\n@Component({\n selector: 'fs-content-pages',\n templateUrl: './content-pages.component.html',\n styleUrls: ['./content-pages.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentPagesComponent implements OnInit, OnDestroy {\n\n @Input() public htmlEditorConfig: FsHtmlEditorConfig;\n\n @ViewChild(FsListComponent)\n public listComponent: FsListComponent;\n\n public listConfig: FsListConfig;\n public pageTypes = index(PageTypes, 'value', 'name');\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _dialog: MatDialog,\n ) {}\n\n public ngOnInit(): void {\n this._initListConfig();\n }\n\n public openEditor(contentPage: any): void {\n this._dialog.open(ContentPageEditorComponent, {\n data: {\n contentPage,\n config: this._config,\n contentConfig: this._config,\n },\n maxWidth: '100vw',\n width: '100%',\n height: '100%',\n autoFocus: false,\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public openContentPage(contentPage): Observable<any> {\n return this._dialog.open(ContentPageComponent, {\n data: { contentPage },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n );\n }\n\n private _initListConfig(): void {\n this.listConfig = {\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n ],\n actions: [\n {\n label: 'Create',\n click: () => {\n this.openContentPage({\n type: PageType.StandardPage,\n })\n .pipe(\n filter((contentPage) => !!contentPage),\n )\n .subscribe((contentPage) => {\n this.openEditor(contentPage);\n this.listComponent.reload();\n });\n },\n },\n ],\n rowActions: [\n {\n click: (data) => {\n return this._config.deleteContentPage(data);\n },\n remove: {\n title: 'Confirm',\n template: 'Are you sure you would like to delete this record?',\n },\n menu: true,\n label: 'Delete',\n },\n ],\n fetch: (query) => {\n return this._config.loadContentPages(query)\n .pipe(\n map((response: any) => {\n return { data: response.contentPages, paging: response.paging };\n }),\n );\n },\n restore: {\n query: { state: 'deleted' },\n filterLabel: 'Show Deleted',\n menuLabel: 'Restore',\n reload: true,\n click: (row) => {\n return this._config.saveContentPage({ id: row.id, state: 'active' });\n },\n },\n };\n }\n}\n\n\n","<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"path\" title=\"Path\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a [href]=\"'/' + row.path\" target=\"_black\">/{{row.path}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"type\" title=\"Type\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{pageTypes[row.type]}}\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.modifyDate | fsDate: 'date-time-yearless'}}\n </ng-template>\n </fs-list-column>\n</fs-list>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { FsCommonModule } from '@firestitch/common';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsListModule } from '@firestitch/list';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentEditorModule } from '../editor';\n\nimport { ContentPageEditorComponent } from './components';\nimport { ContentPageComponent } from './components/content-page';\nimport { FsContentPagesComponent } from './components/content-pages';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatTabsModule,\n MatIconModule,\n MatSelectModule,\n MatButtonToggleModule,\n MatTooltipModule,\n\n FsListModule,\n FsDateModule,\n FsCommonModule,\n FsFormModule,\n FsLabelModule,\n FsSkeletonModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n\n FsContentEditorModule,\n ],\n exports: [\n FsContentPagesComponent,\n ],\n declarations: [\n FsContentPagesComponent,\n ContentPageComponent,\n ContentPageEditorComponent,\n ],\n})\nexport class FsContentPagesModule {\n public static forRoot(): ModuleWithProviders<FsContentPagesModule> {\n return {\n ngModule: FsContentPagesModule,\n };\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\n\nimport { FsFormDirective } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n selector: 'fs-content-style',\n templateUrl: './content-style.component.html',\n styleUrls: ['./content-style.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentStyleComponent implements OnInit, OnDestroy {\n\n @ViewChild(FsTextEditorComponent)\n public textEditors: FsTextEditorComponent;\n\n @ViewChild(FsFormDirective)\n public form: FsFormDirective;\n\n @Input() public height: string = '100%';\n\n public contentStyle = null;\n public styleConfig = {\n tabSize: 2,\n language: 'scss',\n height: '100%',\n };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _message: FsMessage,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n this.styleConfig.height = this.height;\n this._config.loadContentStyle()\n .subscribe((contentStyle) => {\n this.contentStyle = contentStyle;\n this._cdRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save() {\n this._config.saveContentStyle(this.contentStyle)\n .pipe(\n tap((contentStyle) => {\n this.contentStyle = {\n ...this.contentStyle,\n ...contentStyle,\n };\n\n this._cdRef.markForCheck();\n this._message.success('Saved Changes');\n }),\n ).subscribe();\n }\n\n}\n","<ng-container *fsSkeletonForm=\"contentStyle\">\n <fs-text-editor \n [(ngModel)]=\"contentStyle.scss\" \n name=\"contentStyle\"\n [fsModelChangeOptions]=\"{ debounce: 300 }\"\n (fsModelChange)=\"save()\"\n [config]=\"styleConfig\">\n </fs-text-editor> \n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { FsCommonModule } from '@firestitch/common';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentEditorModule } from '../editor';\n\nimport { ContentStyleComponent } from './components/content-style';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatButtonModule,\n\n FsTextEditorModule,\n FsSkeletonModule,\n FsCommonModule,\n FsContentEditorModule,\n ],\n exports: [\n ContentStyleComponent,\n ],\n declarations: [\n ContentStyleComponent,\n ],\n})\nexport class FsContentStyleModule {\n}\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\n\nimport { HtmlRenderer } from '@firestitch/html';\n\nimport { Subject } from 'rxjs';\n\n\n@Component({\n selector: 'fs-content-renderer',\n templateUrl: './content-renderer.component.html',\n styleUrls: ['./content-renderer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentRendererComponent implements OnDestroy, AfterViewChecked, OnInit {\n\n @ViewChild('script', { read: ElementRef })\n public script: ElementRef;\n\n @Input() public contentPage;\n\n public content: SafeHtml;\n\n private _destroy$ = new Subject();\n\n constructor(\n private _sanitizer: DomSanitizer,\n private _router: Router,\n private _el: ElementRef,\n private _htmlRenderer: HtmlRenderer,\n ) {}\n\n public ngOnInit(): void {\n this._htmlRenderer.addStyle(this.contentPage.styles, { id: 'contentPageStyles' });\n this.content = this._sanitizer.bypassSecurityTrustHtml(this.contentPage.content);\n }\n\n public ngAfterViewChecked(): void {\n this.registerHrefs();\n\n if(this.contentPage.js) {\n const script = document.createElement('script');\n script.text = this.contentPage.js;\n this.script.nativeElement.after(script);\n }\n }\n\n public registerHrefs(): void {\n Array.from(this.el.querySelectorAll('a[href]'))\n .filter((el: Element) => {\n return el.getAttribute('href').match(/^\\//);\n })\n .forEach((el: Element) => {\n el.addEventListener('click',(event: MouseEvent) => {\n if(!event.shiftKey && !event.ctrlKey) {\n event.preventDefault();\n const href = el.getAttribute('href');\n this._router.navigateByUrl(href);\n }\n });\n });\n }\n\n public get el(): any {\n return this._el.nativeElement;\n }\n\n public ngOnDestroy(): void {\n this.removeStyles();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public removeStyles(): void {\n const el = document.querySelector('#contentPageStyles');\n if(el) {\n el.remove();\n }\n }\n\n}\n","<div *ngIf=\"content\" [innerHTML]=\"content\"></div>\n<span #script></span>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { HtmlRenderer } from '@firestitch/html';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n selector: 'fs-content',\n templateUrl: './content.component.html',\n styleUrls: ['./content.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentComponent implements OnInit, OnDestroy {\n\n public contentPage;\n\n private _destroy$ = new Subject();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _title: Title,\n private _cdRef: ChangeDetectorRef,\n private _router: Router,\n private _el: ElementRef,\n private _htmlRenderer: HtmlRenderer,\n ) {}\n\n public ngOnInit(): void {\n this._initContent();\n this._initStyles();\n }\n\n public get el(): any {\n return this._el.nativeElement;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n this._title.setTitle('');\n }\n\n private _initStyles(): void {\n if(this._config.loadContentStyleCss) {\n this._config.loadContentStyleCss()\n .subscribe((styles) => {\n this._htmlRenderer.addStyle(styles, { id: 'content-sytle' });\n });\n }\n }\n\n private _initContent(): void {\n this._loadContent();\n\n this._router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd),\n takeUntil(this._destroy$),\n )\n .subscribe((e) => {\n this._loadContent();\n });\n }\n\n private _loadContent() {\n const path = (window as any).location.pathname;\n\n this._config.loadContent(path)\n .subscribe((contentPage) => {\n if(contentPage.title) {\n this._title.setTitle(contentPage.title);\n\n let ogTitleEl = document.querySelector('head meta[property=\"og:title\"]');\n if(!ogTitleEl) {\n ogTitleEl = document.createElement('meta');\n ogTitleEl.setAttribute('property','og:title');\n document.getElementsByTagName('head')[0].appendChild(ogTitleEl);\n }\n\n ogTitleEl.setAttribute('content',contentPage.title);\n }\n\n this.contentPage = contentPage;\n this._cdRef.markForCheck();\n });\n }\n\n}\n","<ng-container *ngIf=\"contentPage\">\n <fs-content-renderer [contentPage]=\"contentPage\"></fs-content-renderer>\n</ng-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\n\nimport { FsContentComponent } from './components/content';\nimport { ContentRendererComponent } from './components/content-renderer';\n\n\n\n@NgModule({\n imports: [\n CommonModule,\n\n FsHtmlEditorModule,\n ],\n exports: [\n FsContentComponent,\n ],\n declarations: [\n FsContentComponent,\n ContentRendererComponent,\n ],\n})\nexport class FsContentModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["EventEmitter","Subject","tap","Component","ChangeDetectionStrategy","Input","Output","CommonModule","FormsModule","MatDialogModule","MatButtonModule","MatTabsModule","MatIconModule","MatButtonToggleModule","FsListModule","FsFormModule","FsSkeletonModule","FsLabelModule","FsHtmlEditorModule","FsCommonModule","FsDialogModule","FsTextEditorModule","AngularSplitModule","NgModule","InjectionToken","of","switchMap","takeUntil","MAT_DIALOG_DATA","FsTextEditorComponent","Inject","ViewChildren","filter","throwError","fromEvent","ViewChild","ItemType","map","FsListComponent","MatInputModule","MatFormFieldModule","MatSelectModule","FsDateModule","index","MatTooltipModule","FsFormDirective","ElementRef","NavigationEnd"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"firestitch-content.umd.js","sources":["../../src/app/enums/editor-type.ts","../../src/app/enums/page-type.enum.ts","../../src/app/modules/editor/components/editor-label/editor-label.component.ts","../../src/app/modules/editor/components/editor-label/editor-label.component.html","../../src/app/modules/editor/components/editor/editor.component.ts","../../src/app/modules/editor/components/editor/editor.component.html","../../src/app/modules/editor/fs-content-editor.module.ts","../../src/app/injectors/content-config.injector.ts","../../src/app/modules/content-layouts/components/content-layout/content-layout.component.ts","../../src/app/modules/content-layouts/components/content-layout/content-layout.component.html","../../src/app/modules/content-layouts/components/content-layout-editor/content-layout-editor.component.ts","../../src/app/modules/content-layouts/components/content-layout-editor/content-layout-editor.component.html","../../src/app/modules/content-layouts/components/content-layouts/content-layouts.component.ts","../../src/app/modules/content-layouts/components/content-layouts/content-layouts.component.html","../../src/app/modules/content-layouts/fs-content-layouts.module.ts","../../src/app/consts/page-types.const.ts","../../src/app/modules/content-pages/components/content-page/content-page.component.ts","../../src/app/modules/content-pages/components/content-page/content-page.component.html","../../src/app/modules/content-pages/components/content-page-editor/content-page-editor.component.ts","../../src/app/modules/content-pages/components/content-page-editor/content-page-editor.component.html","../../src/app/modules/content-pages/components/content-pages/content-pages.component.ts","../../src/app/modules/content-pages/components/content-pages/content-pages.component.html","../../src/app/modules/content-pages/fs-content-pages.module.ts","../../src/app/modules/content-style/components/content-style/content-style.component.ts","../../src/app/modules/content-style/components/content-style/content-style.component.html","../../src/app/modules/content-style/fs-content-style.module.ts","../../src/app/modules/content/components/content-renderer/content-renderer.component.ts","../../src/app/modules/content/components/content-renderer/content-renderer.component.html","../../src/app/modules/content/components/content/content.component.ts","../../src/app/modules/content/components/content/content.component.html","../../src/app/modules/content/fs-content.module.ts","../../src/firestitch-content.ts"],"sourcesContent":["export enum EditorType {\n Js = 'js',\n Html = 'html',\n Scss = 'scss',\n GlobalScss = 'globalScss',\n}\n","export enum PageType {\n StandardPage = 'standardPage',\n BlogPost = 'blogPost',\n HomePage = 'homePage',\n NotFoundPage = 'notFoundPage',\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\n\n\n@Component({\n selector: 'app-editor-label',\n templateUrl: './editor-label.component.html',\n styleUrls: ['./editor-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorLabelComponent {\n\n @Input()\n public changed: boolean;\n\n @Input()\n public focused: boolean;\n\n}\n","<div class=\"label\" [ngClass]=\"{ focused: focused }\">\n <ng-content></ng-content>\n <span *ngIf=\"changed\" class=\"changed\"> ●</span>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\n\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorConfig } from '@firestitch/text-editor';\n\nimport { Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { EditorType } from '../../../../enums';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n selector: 'app-editor',\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorComponent implements OnInit, OnDestroy {\n\n @Input() public showHtml = false;\n @Input() public showScss = false;\n @Input() public showJs = false;\n @Input() public showGlobalScss = false;\n\n @Input() public html;\n @Input() public scss;\n @Input() public js;\n @Input() public contentConfig: FsContentConfig;\n\n @Output() public changed = new EventEmitter<{ type: string; value: string }>();\n @Output() public focused = new EventEmitter<string>();\n @Output() public blured = new EventEmitter<string>();\n\n public changes: any = {};\n public EditorType = EditorType;\n public focusedArea: string;\n\n public contentStyle: {\n scss?: string;\n };\n\n public resizing = false;\n public title;\n\n public scssConfig: FsTextEditorConfig;\n public globalScssConfig: FsTextEditorConfig;\n public htmlConfig: FsTextEditorConfig;\n public jsConfig: FsTextEditorConfig;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) { }\n\n public ngOnInit(): void {\n this.initTextEditors();\n this.initGlobalContentStyle();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public change(type, value) {\n this.changed.emit({ type, value });\n this.changes[type] = value;\n }\n\n public get hasChanges() {\n return Object.keys(this.changes)\n .filter((name) => !!this.changes[name])\n .length !== 0;\n }\n\n public clearChange(type) {\n this.changes[type] = undefined;\n this._cdRef.markForCheck();\n }\n\n public initTextEditors() {\n this.scssConfig = {\n tabSize: 2,\n language: 'scss',\n height: '100%',\n focus: () => {\n this._onFocus(EditorType.Scss);\n },\n blur: () => {\n this.blured.emit(EditorType.Scss);\n },\n };\n this.jsConfig = {\n tabSize: 2,\n language: 'js',\n height: '100%',\n focus: () => {\n this._onFocus(EditorType.Js);\n },\n blur: () => {\n this.blured.emit(EditorType.Js);\n },\n };\n this.htmlConfig = {\n tabSize: 2,\n language: 'html',\n height: '100%',\n focus: () => {\n this._onFocus(EditorType.Html);\n },\n blur: () => {\n this.blured.emit(EditorType.Html);\n },\n };\n this.globalScssConfig = {\n tabSize: 2,\n language: 'scss',\n height: '100%',\n focus: () => {\n this._onFocus(EditorType.GlobalScss);\n },\n blur: () => {\n this.blured.emit(EditorType.GlobalScss);\n },\n };\n }\n\n public initGlobalContentStyle() {\n this.contentConfig.loadContentStyle()\n .subscribe((contentStyle) => {\n this.contentStyle = contentStyle || {};\n this._cdRef.markForCheck();\n });\n }\n\n public saveGlobalScss() {\n return this.contentConfig.saveContentStyle(this.contentStyle)\n .pipe(\n tap(() => {\n this._message.success('Saved Changes');\n }),\n );\n }\n\n private _onFocus(type): void {\n this.focusedArea = type;\n this.focused.emit(type);\n }\n\n}\n","<as-split [unit]=\"'percent'\" [gutterSize]=\"25\"> \n <as-split-area [size]=\"70\" [visible]=\"showHtml\" [order]=\"1\">\n <div class=\"editor-container\">\n <app-editor-label\n [changed]=\"changes.html !== undefined\"\n [focused]=\"focusedArea === 'html'\">\n HTML\n </app-editor-label>\n <fs-text-editor \n [(ngModel)]=\"html\" \n name=\"html\"\n [fsModelChangeOptions]=\"{ debounce: 0 }\"\n (fsModelChange)=\"change(EditorType.Html, $event)\"\n [config]=\"htmlConfig\">\n </fs-text-editor> \n </div>\n </as-split-area>\n <as-split-area [size]=\"30\" [visible]=\"showScss\" [order]=\"2\">\n <div class=\"editor-container\">\n <app-editor-label\n [changed]=\"changes.scss !== undefined\"\n [focused]=\"focusedArea === 'scss'\">\n SCSS\n </app-editor-label>\n <fs-text-editor \n [(ngModel)]=\"scss\" \n name=\"scss\"\n [fsModelChangeOptions]=\"{ debounce: 0 }\"\n (fsModelChange)=\"change(EditorType.Scss, $event)\"\n [config]=\"scssConfig\">\n </fs-text-editor> \n </div>\n </as-split-area>\n <as-split-area [size]=\"30\" [visible]=\"showJs\" [order]=\"3\">\n <div class=\"editor-container\">\n <app-editor-label\n [changed]=\"changes.js !== undefined\"\n [focused]=\"focusedArea === 'js'\">\n JS\n </app-editor-label>\n <fs-text-editor \n [(ngModel)]=\"js\" \n name=\"js\"\n [fsModelChangeOptions]=\"{ debounce: 0 }\"\n (fsModelChange)=\"change(EditorType.Js, $event)\"\n [config]=\"jsConfig\">\n </fs-text-editor> \n </div>\n </as-split-area>\n <as-split-area [size]=\"30\" [visible]=\"showGlobalScss\" [order]=\"4\">\n <div class=\"editor-container\">\n <app-editor-label\n [changed]=\"changes.globalScss !== undefined\"\n [focused]=\"focusedArea === 'globalScss'\">\n Global SCSS\n </app-editor-label>\n <ng-container *fsSkeleton=\"contentStyle\">\n <fs-text-editor \n [(ngModel)]=\"contentStyle.scss\" \n name=\"globalScss\"\n [fsModelChangeOptions]=\"{ debounce: 300 }\"\n (fsModelChange)=\"change(EditorType.GlobalScss, $event)\"\n [config]=\"globalScssConfig\">\n </fs-text-editor> \n </ng-container> \n </div>\n </as-split-area>\n</as-split>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { FsCommonModule } from '@firestitch/common';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsListModule } from '@firestitch/list';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { AngularSplitModule } from 'angular-split';\n\nimport { EditorComponent } from './components/editor';\nimport { EditorLabelComponent } from './components/editor-label';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatButtonModule,\n MatTabsModule,\n MatIconModule,\n MatButtonToggleModule,\n\n FsListModule,\n FsFormModule,\n FsSkeletonModule,\n FsLabelModule,\n FsHtmlEditorModule,\n FsCommonModule,\n FsDialogModule,\n FsTextEditorModule,\n\n AngularSplitModule,\n ],\n exports: [\n EditorComponent,\n ],\n declarations: [\n EditorComponent,\n EditorLabelComponent,\n ],\n})\nexport class FsContentEditorModule {\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_CONTENT_CONFIG = new InjectionToken<any>('fs-content-config');\n","import {\n Component,\n Inject,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChildren,\n QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject, of } from 'rxjs';\nimport { switchMap, tap, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n templateUrl: './content-layout.component.html',\n styleUrls: ['./content-layout.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentLayoutComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public contentLayout = null;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor( \n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<ContentLayoutComponent>,\n private _message: FsMessage,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n this._fetchData();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._config.saveContentLayout(this.contentLayout)\n .pipe(\n tap((contentLayout) => {\n this._message.success('Saved Changes');\n this._dialogRef.close(contentLayout);\n }),\n );\n };\n\n private _fetchData(): void {\n of(this._data.contentLayout)\n .pipe(\n switchMap((contentLayout) => {\n return of(contentLayout);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe((contentLayout) => {\n this.contentLayout = { ...contentLayout };\n\n this._cdRef.markForCheck();\n });\n }\n\n}\n","<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentLayout\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentLayout.id ? 'Layout' : 'Layout Page'}}</h1>\n <div mat-dialog-content>\n <div class=\"fs-column\">\n <mat-form-field>\n <mat-label>Name</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentLayout.name\"\n name=\"name\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Tag</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentLayout.tag\"\n name=\"tag\">\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { Subject, fromEvent, of, throwError } from 'rxjs';\nimport { filter, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { EditorType } from '../../../../enums';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\nimport { ContentLayoutComponent } from '../content-layout/content-layout.component';\n\n\n@Component({\n templateUrl: './content-layout-editor.component.html',\n styleUrls: ['./content-layout-editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentLayoutEditorComponent implements OnInit, OnDestroy {\n\n @ViewChild(EditorComponent)\n public editor: EditorComponent;\n\n public contentLayout: {\n id?: number;\n styles?: string;\n content?: string;\n name?: string;\n };\n\n public config: FsContentConfig;\n public EditorType = EditorType;\n public focused = null;\n public title;\n public editors = {\n [EditorType.Html]: true,\n [EditorType.Scss]: true,\n [EditorType.GlobalScss]: false,\n };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: {\n contentLayout: any;\n contentConfig: FsContentConfig;\n },\n private _dialogRef: MatDialogRef<ContentLayoutEditorComponent>,\n private _message: FsMessage,\n private _dialog: MatDialog,\n private _cdRef: ChangeDetectorRef,\n private _prompt: FsPrompt,\n ) {}\n\n public ngOnInit(): void {\n this._dialogRef.addPanelClass('fs-content-editor-overlay-pane');\n this._dialogRef.disableClose = true;\n this.config = this._data.contentConfig;\n this._initContentLayout(this._data.contentLayout);\n this._initEscape();\n }\n\n public editorToggleChange(event: MatButtonToggleChange): void {\n this.editors[event.value] = !this.editors[event.value];\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public _initContentLayout(contentLayout) {\n this.config.loadContentLayout(contentLayout.id)\n .subscribe((data) => {\n this.contentLayout = data;\n this._cdRef.markForCheck();\n });\n }\n\n public editorFocused(type) {\n this.focused = type;\n }\n\n public save = () => {\n return of(null)\n .pipe(\n filter(() => this.focused),\n switchMap(() => {\n switch (this.focused) {\n case EditorType.Html:\n case EditorType.Scss:\n return this.saveContentPage();\n case EditorType.GlobalScss:\n return this.editor.saveGlobalScss();\n }\n\n return throwError('Invalid focus');\n }),\n tap(() => {\n this.editor.clearChange(this.focused);\n this._cdRef.markForCheck();\n }),\n );\n };\n\n public saveContentPage() {\n const names = {\n [EditorType.Scss]: 'styles',\n [EditorType.Html]: 'content',\n };\n\n const data = {\n id: this.contentLayout.id,\n [names[this.focused]]: this.editor.changes[this.focused],\n };\n\n return this.config.saveContentLayout({\n id: this.contentLayout.id,\n ...data,\n })\n .pipe(\n tap(() => {\n this._message.success('Saved Changes');\n }),\n );\n }\n\n public close(): void {\n if(!this.editor.hasChanges) {\n return this._dialogRef.close();\n }\n\n this._prompt.confirm({\n dialogConfig: {\n width: null,\n },\n title: 'You have unsaved changes',\n template: 'What would you like to do with your changes?',\n buttons: [\n {\n label: 'Review Changes',\n value: 'review',\n },\n {\n label: 'Discard Changes',\n value: 'discard',\n },\n ],\n })\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((value) =>{\n if(value === 'discard') {\n this._dialogRef.close();\n }\n });\n }\n\n public openSettings(): void {\n this._dialog.open(ContentLayoutComponent, {\n data: {\n contentLayout: this.contentLayout,\n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((contentLayout) => {\n this.contentLayout = {\n ...this.contentLayout,\n ...contentLayout,\n };\n this._cdRef.markForCheck();\n });\n }\n\n private _initEscape(): void {\n fromEvent(document, 'keydown')\n .pipe(\n filter((event: KeyboardEvent) => event.code === 'Escape'),\n takeUntil(this._destroy$),\n ).subscribe(() => {\n const dialogRef = this._dialog.openDialogs.reverse()[0];\n if(dialogRef?.componentInstance === this) {\n this.close();\n }\n });\n }\n\n}\n","<form fsForm [submit]=\"save\" [dirtySubmitButton]=\"false\" [confirm]=\"false\">\n <fs-dialog *fsSkeletonForm=\"contentLayout\">\n <h1 mat-dialog-title>\n <div class=\"title-container\">\n <div class=\"title\">\n Layout Editor\n <div class=\"small\">{{contentLayout.name}}</div> \n </div>\n <a\n (click)=\"openSettings()\"\n mat-icon-button>\n <mat-icon>settings</mat-icon>\n </a> \n </div>\n </h1>\n <div mat-dialog-content>\n <app-editor\n [contentConfig]=\"config\"\n [showHtml]=\"editors.html\"\n [showScss]=\"editors.scss\"\n [showGlobalScss]=\"editors.globalScss\"\n [html]=\"contentLayout.content\"\n [scss]=\"contentLayout.styles\"\n (focused)=\"editorFocused($event)\">\n </app-editor>\n </div>\n\n <div mat-dialog-actions>\n <button \n mat-button\n color=\"primary\"\n (click)=\"close()\"\n type=\"button\"> \n Done \n </button>\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"html\" [checked]=\"editors.html\" (change)=\"editorToggleChange($event)\">HTML</mat-button-toggle>\n <mat-button-toggle value=\"scss\" [checked]=\"editors.scss\" (change)=\"editorToggleChange($event)\">SCSS</mat-button-toggle>\n <mat-button-toggle value=\"globalScss\" [checked]=\"editors.globalScss\" (change)=\"editorToggleChange($event)\">Global SCSS</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n </div>\n </fs-dialog>\n</form>","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { ItemType } from '@firestitch/filter';\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\n\nimport { Observable, Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { ContentLayoutComponent } from '../../components/content-layout';\nimport { ContentLayoutEditorComponent } from '../content-layout-editor/content-layout-editor.component';\n\n\n@Component({\n selector: 'fs-content-layouts',\n templateUrl: './content-layouts.component.html',\n styleUrls: ['./content-layouts.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentLayoutsComponent implements OnInit, OnDestroy {\n\n @ViewChild(FsListComponent)\n public listComponent: FsListComponent;\n\n public listConfig: FsListConfig;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _dialog: MatDialog,\n ) {}\n\n public ngOnInit(): void {\n this._initListConfig();\n }\n\n public openEditor(contentLayout: any): void {\n this._dialog.open(ContentLayoutEditorComponent, {\n maxWidth: '100vw',\n width: '100%',\n height: '100%',\n data: {\n contentLayout,\n contentConfig: this._config,\n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public openLayout(contentLayout: any): Observable<any> {\n return this._dialog.open(ContentLayoutComponent, {\n data: {\n contentLayout,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentLayout) => !!_contentLayout),\n takeUntil(this._destroy$),\n );\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _initListConfig(): void {\n this.listConfig = {\n paging: false,\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n ],\n actions: [\n {\n label: 'Create',\n click: () => {\n this.openLayout({})\n .subscribe(() => {\n this.listComponent.reload();\n });\n },\n },\n ],\n rowActions: [\n {\n click: (data) => {\n return this._config.deleteContentLayout(data);\n },\n remove: {\n title: 'Confirm',\n template: 'Are you sure you would like to delete this record?',\n },\n menu: true,\n label: 'Delete',\n },\n ],\n fetch: (query) => {\n return this._config.loadContentLayouts(query)\n .pipe(\n map((contentLayouts: any) => {\n return { data: contentLayouts };\n }),\n );\n },\n restore: {\n query: { state: 'deleted' },\n filterLabel: 'Show Deleted',\n menuLabel: 'Restore',\n reload: true,\n click: (row) => {\n return this._config.saveContentLayout({ id: row.id, state: 'active' });\n },\n },\n };\n }\n\n}\n\n","<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.modifyDate | fsDate: 'date-time-yearless'}}\n </ng-template>\n </fs-list-column>\n</fs-list>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsListModule } from '@firestitch/list';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentEditorModule } from '../editor';\n\nimport { ContentLayoutEditorComponent } from './components';\nimport { ContentLayoutComponent } from './components/content-layout';\nimport { FsContentLayoutsComponent } from './components/content-layouts';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatTabsModule,\n MatIconModule,\n MatSelectModule,\n MatButtonToggleModule,\n\n FsListModule,\n FsDateModule,\n FsFormModule,\n FsLabelModule,\n FsSkeletonModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n\n FsContentEditorModule,\n ],\n exports: [\n FsContentLayoutsComponent,\n ],\n declarations: [\n ContentLayoutComponent,\n FsContentLayoutsComponent,\n ContentLayoutEditorComponent,\n ],\n})\nexport class FsContentLayoutsModule {\n}\n","import { PageType } from '../enums';\n\nexport const PageTypes = [\n { name: 'Standard Page', value: PageType.StandardPage },\n { name: 'Home Page', value: PageType.HomePage },\n { name: 'Not Found Page', value: PageType.NotFoundPage },\n { name: 'Blog Post', value: PageType.BlogPost },\n];\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChildren,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject, of } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { PageTypes } from '../../../../consts';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n templateUrl: './content-page.component.html',\n styleUrls: ['./content-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentPageComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public contentPage = null;\n public PageTypes = PageTypes;\n public contentLayouts;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<ContentPageComponent>,\n private _message: FsMessage,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n this._dialogRef.updateSize('600px');\n this._fetchData();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._config.saveContentPage(this.contentPage)\n .pipe(\n tap((contentPage) => {\n this._message.success('Saved Changes');\n this._dialogRef.close(contentPage);\n }),\n );\n };\n\n private _fetchData(): void {\n this._config.loadContentLayouts()\n .subscribe((contentLayouts) => {\n this.contentLayouts = contentLayouts;\n this._cdRef.markForCheck();\n });\n\n of(this._data.contentPage)\n .pipe(\n switchMap((contentPage) => {\n return of(contentPage);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe((contentPage) => {\n this.contentPage = {\n ...contentPage,\n };\n\n this._cdRef.markForCheck();\n });\n }\n\n}\n","<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentPage\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentPage.id ? 'Page' : 'Create Page'}}</h1>\n <div mat-dialog-content>\n <div class=\"fs-column\">\n <mat-form-field>\n <mat-label>Type</mat-label>\n <mat-select\n [(ngModel)]=\"contentPage.type\"\n name=\"type\"\n required>\n <mat-option\n *ngFor=\"let item of PageTypes\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field *ngIf=\"contentLayouts\">\n <mat-label>Layout</mat-label>\n <mat-select\n [(ngModel)]=\"contentPage.contentLayoutId\"\n required\n name=\"contentLayoutId\">\n <mat-option\n *ngFor=\"let item of contentLayouts\"\n [value]=\"item.id\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Name</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentPage.name\"\n name=\"name\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Path</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentPage.path\"\n name=\"path\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Title</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentPage.title\"\n name=\"title\">\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { Subject, fromEvent, of, throwError } from 'rxjs';\nimport { filter, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { EditorType } from '../../../../enums';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\nimport { ContentPageComponent } from '../content-page/content-page.component';\n\n\n@Component({\n templateUrl: './content-page-editor.component.html',\n styleUrls: ['./content-page-editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentPageEditorComponent implements OnInit, OnDestroy {\n\n @ViewChild(EditorComponent)\n public editor: EditorComponent;\n\n public contentPage: {\n id?: number;\n styles?: string;\n content?: string;\n name?: string;\n js?: string;\n };\n public focused = null;\n public config: FsContentConfig;\n public resizing = false;\n public title;\n public editors = {\n [EditorType.Html]: true,\n [EditorType.Scss]: true,\n [EditorType.Js]: false,\n [EditorType.GlobalScss]: false,\n };\n\n public get isMac(): boolean {\n return navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n }\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: {\n contentPage: any;\n contentConfig: FsContentConfig;\n },\n private _dialogRef: MatDialogRef<ContentPageEditorComponent>,\n private _message: FsMessage,\n private _dialog: MatDialog,\n private _cdRef: ChangeDetectorRef,\n private _prompt: FsPrompt,\n ) { }\n\n public ngOnInit(): void {\n this._dialogRef.addPanelClass('fs-content-editor-overlay-pane');\n this._dialogRef.disableClose = true;\n this.config = this._data.contentConfig;\n this._initContentPage(this._data.contentPage);\n this._initEscape();\n }\n\n public editorToggleChange(event: MatButtonToggleChange): void {\n this.editors[event.value] = !this.editors[event.value];\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public _initContentPage(contentPage) {\n this.config.loadContentPage(contentPage.id)\n .subscribe((data) => {\n this.contentPage = data;\n this._cdRef.markForCheck();\n });\n }\n\n public editorFocused(type) {\n this.focused = type;\n }\n\n public save = () => {\n return of(null)\n .pipe(\n filter(() => this.focused),\n switchMap(() => {\n switch (this.focused) {\n case EditorType.Js:\n case EditorType.Html:\n case EditorType.Scss:\n return this.saveContentPage();\n case EditorType.GlobalScss:\n return this.editor.saveGlobalScss();\n }\n\n return throwError('Invalid focus');\n }),\n tap(() => {\n this.editor.clearChange(this.focused);\n this._cdRef.markForCheck();\n }),\n );\n };\n\n public saveContentPage() {\n const names = {\n [EditorType.Js]: 'js',\n [EditorType.Scss]: 'styles',\n [EditorType.Html]: 'content',\n };\n\n const data = {\n id: this.contentPage.id,\n [names[this.focused]]: this.editor.changes[this.focused],\n };\n\n return this.config.saveContentPage({\n id: this.contentPage.id,\n ...data,\n })\n .pipe(\n tap(() => {\n this._message.success('Saved Changes');\n }),\n );\n }\n\n\n public close(): void {\n if (!this.editor.hasChanges) {\n return this._dialogRef.close();\n }\n\n this._prompt.confirm({\n dialogConfig: {\n width: null,\n },\n title: 'You have unsaved changes',\n template: 'What would you like to do with your changes?',\n buttons: [\n {\n label: 'Review Changes',\n value: 'review',\n },\n {\n label: 'Discard Changes',\n value: 'discard',\n },\n ],\n })\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((value) => {\n if (value === 'discard') {\n this._dialogRef.close();\n }\n });\n }\n\n public openSettings(): void {\n this._dialog.open(ContentPageComponent, {\n data: {\n contentPage: this.contentPage,\n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((contentPage) => {\n this.contentPage = {\n ...this.contentPage,\n ...contentPage,\n };\n this._cdRef.markForCheck();\n });\n }\n\n private _initEscape(): void {\n fromEvent(document, 'keydown')\n .pipe(\n filter((event: KeyboardEvent) => event.code === 'Escape'),\n takeUntil(this._destroy$),\n ).subscribe(() => {\n const dialogRef = this._dialog.openDialogs.reverse()[0];\n if (dialogRef?.componentInstance === this) {\n this.close();\n }\n });\n }\n\n}\n","<form fsForm [submit]=\"save\" [dirtySubmitButton]=\"false\" [confirm]=\"false\">\n <fs-dialog *fsSkeletonForm=\"contentPage\">\n <h1 mat-dialog-title>\n <div class=\"title-container\">\n <div class=\"title\">\n Page Editor\n <div class=\"small\">{{contentPage.name}}</div> \n </div>\n <a\n (click)=\"openSettings()\"\n mat-icon-button>\n <mat-icon>settings</mat-icon>\n </a>\n\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"html\" [checked]=\"editors.html\" (change)=\"editorToggleChange($event)\">HTML</mat-button-toggle>\n <mat-button-toggle value=\"scss\" [checked]=\"editors.scss\" (change)=\"editorToggleChange($event)\">SCSS</mat-button-toggle>\n <mat-button-toggle value=\"js\" [checked]=\"editors.js\" (change)=\"editorToggleChange($event)\">JS</mat-button-toggle>\n <mat-button-toggle value=\"globalScss\" [checked]=\"editors.globalScss\" (change)=\"editorToggleChange($event)\">Global SCSS</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n\n <div class=\"actions\">\n <button \n mat-button\n [disabled]=\"!editor?.hasChanges\"\n [matTooltip]=\"isMac ? 'cmd+s' : 'ctrl+s'\"\n type=\"submit\"> \n Save\n </button>\n\n <button \n mat-button\n (click)=\"close()\"\n type=\"button\"> \n Done\n </button>\n </div>\n </div>\n </h1>\n <div mat-dialog-content>\n <app-editor\n [contentConfig]=\"config\"\n [showHtml]=\"editors.html\"\n [showJs]=\"editors.js\"\n [showScss]=\"editors.scss\"\n [showGlobalScss]=\"editors.globalScss\"\n [html]=\"contentPage.content\"\n [scss]=\"contentPage.styles\"\n [js]=\"contentPage.js\"\n (focused)=\"editorFocused($event)\">\n </app-editor>\n </div>\n </fs-dialog>\n</form>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { index } from '@firestitch/common';\nimport { ItemType } from '@firestitch/filter';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\n\nimport { Observable, Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\n\nimport { PageTypes } from '../../../../consts';\nimport { PageType } from '../../../../enums';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { ContentPageEditorComponent } from '../content-page-editor';\nimport { ContentPageComponent } from '../content-page/content-page.component';\n\n\n@Component({\n selector: 'fs-content-pages',\n templateUrl: './content-pages.component.html',\n styleUrls: ['./content-pages.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentPagesComponent implements OnInit, OnDestroy {\n\n @Input() public htmlEditorConfig: FsHtmlEditorConfig;\n\n @ViewChild(FsListComponent)\n public listComponent: FsListComponent;\n\n public listConfig: FsListConfig;\n public pageTypes = index(PageTypes, 'value', 'name');\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _dialog: MatDialog,\n ) {}\n\n public ngOnInit(): void {\n this._initListConfig();\n }\n\n public openEditor(contentPage: any): void {\n this._dialog.open(ContentPageEditorComponent, {\n data: {\n contentPage,\n config: this._config,\n contentConfig: this._config,\n },\n maxWidth: '100vw',\n width: '100%',\n height: '100%',\n autoFocus: false,\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public openContentPage(contentPage): Observable<any> {\n return this._dialog.open(ContentPageComponent, {\n data: { contentPage },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n );\n }\n\n private _initListConfig(): void {\n this.listConfig = {\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n ],\n actions: [\n {\n label: 'Create',\n click: () => {\n this.openContentPage({\n type: PageType.StandardPage,\n })\n .pipe(\n filter((contentPage) => !!contentPage),\n )\n .subscribe((contentPage) => {\n this.openEditor(contentPage);\n this.listComponent.reload();\n });\n },\n },\n ],\n rowActions: [\n {\n click: (data) => {\n return this._config.deleteContentPage(data);\n },\n remove: {\n title: 'Confirm',\n template: 'Are you sure you would like to delete this record?',\n },\n menu: true,\n label: 'Delete',\n },\n ],\n fetch: (query) => {\n return this._config.loadContentPages(query)\n .pipe(\n map((response: any) => {\n return { data: response.contentPages, paging: response.paging };\n }),\n );\n },\n restore: {\n query: { state: 'deleted' },\n filterLabel: 'Show Deleted',\n menuLabel: 'Restore',\n reload: true,\n click: (row) => {\n return this._config.saveContentPage({ id: row.id, state: 'active' });\n },\n },\n };\n }\n}\n\n\n","<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"path\" title=\"Path\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a [href]=\"'/' + row.path\" target=\"_black\">/{{row.path}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"type\" title=\"Type\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{pageTypes[row.type]}}\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.modifyDate | fsDate: 'date-time-yearless'}}\n </ng-template>\n </fs-list-column>\n</fs-list>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { FsCommonModule } from '@firestitch/common';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsListModule } from '@firestitch/list';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentEditorModule } from '../editor';\n\nimport { ContentPageEditorComponent } from './components';\nimport { ContentPageComponent } from './components/content-page';\nimport { FsContentPagesComponent } from './components/content-pages';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatTabsModule,\n MatIconModule,\n MatSelectModule,\n MatButtonToggleModule,\n MatTooltipModule,\n\n FsListModule,\n FsDateModule,\n FsCommonModule,\n FsFormModule,\n FsLabelModule,\n FsSkeletonModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n\n FsContentEditorModule,\n ],\n exports: [\n FsContentPagesComponent,\n ],\n declarations: [\n FsContentPagesComponent,\n ContentPageComponent,\n ContentPageEditorComponent,\n ],\n})\nexport class FsContentPagesModule {\n public static forRoot(): ModuleWithProviders<FsContentPagesModule> {\n return {\n ngModule: FsContentPagesModule,\n };\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\n\nimport { FsFormDirective } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n selector: 'fs-content-style',\n templateUrl: './content-style.component.html',\n styleUrls: ['./content-style.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentStyleComponent implements OnInit, OnDestroy {\n\n @ViewChild(FsTextEditorComponent)\n public textEditors: FsTextEditorComponent;\n\n @ViewChild(FsFormDirective)\n public form: FsFormDirective;\n\n @Input() public height: string = '100%';\n\n public contentStyle = null;\n public styleConfig = {\n tabSize: 2,\n language: 'scss',\n height: '100%',\n };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _message: FsMessage,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n this.styleConfig.height = this.height;\n this._config.loadContentStyle()\n .subscribe((contentStyle) => {\n this.contentStyle = contentStyle;\n this._cdRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save() {\n this._config.saveContentStyle(this.contentStyle)\n .pipe(\n tap((contentStyle) => {\n this.contentStyle = {\n ...this.contentStyle,\n ...contentStyle,\n };\n\n this._cdRef.markForCheck();\n this._message.success('Saved Changes');\n }),\n ).subscribe();\n }\n\n}\n","<ng-container *fsSkeletonForm=\"contentStyle\">\n <fs-text-editor \n [(ngModel)]=\"contentStyle.scss\" \n name=\"contentStyle\"\n [fsModelChangeOptions]=\"{ debounce: 300 }\"\n (fsModelChange)=\"save()\"\n [config]=\"styleConfig\">\n </fs-text-editor> \n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { FsCommonModule } from '@firestitch/common';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentEditorModule } from '../editor';\n\nimport { ContentStyleComponent } from './components/content-style';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatButtonModule,\n\n FsTextEditorModule,\n FsSkeletonModule,\n FsCommonModule,\n FsContentEditorModule,\n ],\n exports: [\n ContentStyleComponent,\n ],\n declarations: [\n ContentStyleComponent,\n ],\n})\nexport class FsContentStyleModule {\n}\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\n\nimport { HtmlRenderer } from '@firestitch/html';\n\nimport { Subject } from 'rxjs';\n\n\n@Component({\n selector: 'fs-content-renderer',\n templateUrl: './content-renderer.component.html',\n styleUrls: ['./content-renderer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentRendererComponent implements OnDestroy, AfterViewChecked, OnInit {\n\n @ViewChild('script', { read: ElementRef })\n public script: ElementRef;\n\n @Input() public contentPage;\n\n public content: SafeHtml;\n\n private _destroy$ = new Subject();\n\n constructor(\n private _sanitizer: DomSanitizer,\n private _router: Router,\n private _el: ElementRef,\n private _htmlRenderer: HtmlRenderer,\n ) {}\n\n public ngOnInit(): void {\n this._htmlRenderer.addStyle(this.contentPage.styles, { id: 'contentPageStyles' });\n this.content = this._sanitizer.bypassSecurityTrustHtml(this.contentPage.content);\n }\n\n public ngAfterViewChecked(): void {\n this.registerHrefs();\n\n if(this.contentPage.js) {\n const script = document.createElement('script');\n script.text = this.contentPage.js;\n this.script.nativeElement.after(script);\n }\n }\n\n public registerHrefs(): void {\n Array.from(this.el.querySelectorAll('a[href]'))\n .filter((el: Element) => {\n return el.getAttribute('href').match(/^\\//);\n })\n .forEach((el: Element) => {\n el.addEventListener('click',(event: MouseEvent) => {\n if(!event.shiftKey && !event.ctrlKey) {\n event.preventDefault();\n const href = el.getAttribute('href');\n this._router.navigateByUrl(href);\n }\n });\n });\n }\n\n public get el(): any {\n return this._el.nativeElement;\n }\n\n public ngOnDestroy(): void {\n this.removeStyles();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public removeStyles(): void {\n const el = document.querySelector('#contentPageStyles');\n if(el) {\n el.remove();\n }\n }\n\n}\n","<div *ngIf=\"content\" [innerHTML]=\"content\"></div>\n<span #script></span>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { HtmlRenderer } from '@firestitch/html';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n selector: 'fs-content',\n templateUrl: './content.component.html',\n styleUrls: ['./content.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentComponent implements OnInit, OnDestroy {\n\n public contentPage;\n\n private _destroy$ = new Subject();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _title: Title,\n private _cdRef: ChangeDetectorRef,\n private _router: Router,\n private _el: ElementRef,\n private _htmlRenderer: HtmlRenderer,\n ) {}\n\n public ngOnInit(): void {\n this._initContent();\n this._initStyles();\n }\n\n public get el(): any {\n return this._el.nativeElement;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n this._title.setTitle('');\n }\n\n private _initStyles(): void {\n if(this._config.loadContentStyleCss) {\n this._config.loadContentStyleCss()\n .subscribe((styles) => {\n this._htmlRenderer.addStyle(styles, { id: 'content-sytle' });\n });\n }\n }\n\n private _initContent(): void {\n this._loadContent();\n\n this._router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd),\n takeUntil(this._destroy$),\n )\n .subscribe((e) => {\n this._loadContent();\n });\n }\n\n private _loadContent() {\n const path = (window as any).location.pathname;\n\n this._config.loadContent(path)\n .subscribe((contentPage) => {\n if(contentPage.title) {\n this._title.setTitle(contentPage.title);\n\n let ogTitleEl = document.querySelector('head meta[property=\"og:title\"]');\n if(!ogTitleEl) {\n ogTitleEl = document.createElement('meta');\n ogTitleEl.setAttribute('property','og:title');\n document.getElementsByTagName('head')[0].appendChild(ogTitleEl);\n }\n\n ogTitleEl.setAttribute('content',contentPage.title);\n }\n\n this.contentPage = contentPage;\n this._cdRef.markForCheck();\n });\n }\n\n}\n","<ng-container *ngIf=\"contentPage\">\n <fs-content-renderer [contentPage]=\"contentPage\"></fs-content-renderer>\n</ng-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\n\nimport { FsContentComponent } from './components/content';\nimport { ContentRendererComponent } from './components/content-renderer';\n\n\n\n@NgModule({\n imports: [\n CommonModule,\n\n FsHtmlEditorModule,\n ],\n exports: [\n FsContentComponent,\n ],\n declarations: [\n FsContentComponent,\n ContentRendererComponent,\n ],\n})\nexport class FsContentModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["Component","ChangeDetectionStrategy","Input","EventEmitter","Subject","tap","Output","CommonModule","FormsModule","MatDialogModule","MatButtonModule","MatTabsModule","MatIconModule","MatButtonToggleModule","FsListModule","FsFormModule","FsSkeletonModule","FsLabelModule","FsHtmlEditorModule","FsCommonModule","FsDialogModule","FsTextEditorModule","AngularSplitModule","NgModule","InjectionToken","of","switchMap","takeUntil","MAT_DIALOG_DATA","FsTextEditorComponent","Inject","ViewChildren","filter","throwError","fromEvent","ViewChild","ItemType","map","FsListComponent","MatInputModule","MatFormFieldModule","MatSelectModule","FsDateModule","index","MatTooltipModule","FsFormDirective","ElementRef","NavigationEnd"],"mappings":"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"}
|
@@ -6,7 +6,7 @@ import { EditorType } from '../../../../enums';
|
|
6
6
|
import * as i0 from "@angular/core";
|
7
7
|
import * as i1 from "@firestitch/message";
|
8
8
|
import * as i2 from "angular-split";
|
9
|
-
import * as i3 from "
|
9
|
+
import * as i3 from "../editor-label/editor-label.component";
|
10
10
|
import * as i4 from "@firestitch/text-editor";
|
11
11
|
import * as i5 from "@angular/forms";
|
12
12
|
import * as i6 from "@firestitch/form";
|
@@ -46,7 +46,7 @@ export class EditorComponent {
|
|
46
46
|
.length !== 0;
|
47
47
|
}
|
48
48
|
clearChange(type) {
|
49
|
-
this.changes[type] =
|
49
|
+
this.changes[type] = undefined;
|
50
50
|
this._cdRef.markForCheck();
|
51
51
|
}
|
52
52
|
initTextEditors() {
|
@@ -55,7 +55,7 @@ export class EditorComponent {
|
|
55
55
|
language: 'scss',
|
56
56
|
height: '100%',
|
57
57
|
focus: () => {
|
58
|
-
this.
|
58
|
+
this._onFocus(EditorType.Scss);
|
59
59
|
},
|
60
60
|
blur: () => {
|
61
61
|
this.blured.emit(EditorType.Scss);
|
@@ -66,7 +66,7 @@ export class EditorComponent {
|
|
66
66
|
language: 'js',
|
67
67
|
height: '100%',
|
68
68
|
focus: () => {
|
69
|
-
this.
|
69
|
+
this._onFocus(EditorType.Js);
|
70
70
|
},
|
71
71
|
blur: () => {
|
72
72
|
this.blured.emit(EditorType.Js);
|
@@ -77,7 +77,7 @@ export class EditorComponent {
|
|
77
77
|
language: 'html',
|
78
78
|
height: '100%',
|
79
79
|
focus: () => {
|
80
|
-
this.
|
80
|
+
this._onFocus(EditorType.Html);
|
81
81
|
},
|
82
82
|
blur: () => {
|
83
83
|
this.blured.emit(EditorType.Html);
|
@@ -88,7 +88,7 @@ export class EditorComponent {
|
|
88
88
|
language: 'scss',
|
89
89
|
height: '100%',
|
90
90
|
focus: () => {
|
91
|
-
this.
|
91
|
+
this._onFocus(EditorType.GlobalScss);
|
92
92
|
},
|
93
93
|
blur: () => {
|
94
94
|
this.blured.emit(EditorType.GlobalScss);
|
@@ -108,9 +108,13 @@ export class EditorComponent {
|
|
108
108
|
this._message.success('Saved Changes');
|
109
109
|
}));
|
110
110
|
}
|
111
|
+
_onFocus(type) {
|
112
|
+
this.focusedArea = type;
|
113
|
+
this.focused.emit(type);
|
114
|
+
}
|
111
115
|
}
|
112
116
|
EditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EditorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FsMessage }], target: i0.ɵɵFactoryTarget.Component });
|
113
|
-
EditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: EditorComponent, selector: "app-editor", inputs: { showHtml: "showHtml", showScss: "showScss", showJs: "showJs", showGlobalScss: "showGlobalScss", html: "html", scss: "scss", js: "js", contentConfig: "contentConfig" }, outputs: { changed: "changed", focused: "focused", blured: "blured" }, ngImport: i0, template: "<as-split [unit]=\"'percent'\" [gutterSize]=\"25\"> \n <as-split-area [size]=\"70\" [visible]=\"showHtml\" [order]=\"1\">\n <div class=\"editor-container\">\n <
|
117
|
+
EditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: EditorComponent, selector: "app-editor", inputs: { showHtml: "showHtml", showScss: "showScss", showJs: "showJs", showGlobalScss: "showGlobalScss", html: "html", scss: "scss", js: "js", contentConfig: "contentConfig" }, outputs: { changed: "changed", focused: "focused", blured: "blured" }, ngImport: i0, template: "<as-split [unit]=\"'percent'\" [gutterSize]=\"25\"> \n <as-split-area [size]=\"70\" [visible]=\"showHtml\" [order]=\"1\">\n <div class=\"editor-container\">\n <app-editor-label\n [changed]=\"changes.html !== undefined\"\n [focused]=\"focusedArea === 'html'\">\n HTML\n </app-editor-label>\n <fs-text-editor \n [(ngModel)]=\"html\" \n name=\"html\"\n [fsModelChangeOptions]=\"{ debounce: 0 }\"\n (fsModelChange)=\"change(EditorType.Html, $event)\"\n [config]=\"htmlConfig\">\n </fs-text-editor> \n </div>\n </as-split-area>\n <as-split-area [size]=\"30\" [visible]=\"showScss\" [order]=\"2\">\n <div class=\"editor-container\">\n <app-editor-label\n [changed]=\"changes.scss !== undefined\"\n [focused]=\"focusedArea === 'scss'\">\n SCSS\n </app-editor-label>\n <fs-text-editor \n [(ngModel)]=\"scss\" \n name=\"scss\"\n [fsModelChangeOptions]=\"{ debounce: 0 }\"\n (fsModelChange)=\"change(EditorType.Scss, $event)\"\n [config]=\"scssConfig\">\n </fs-text-editor> \n </div>\n </as-split-area>\n <as-split-area [size]=\"30\" [visible]=\"showJs\" [order]=\"3\">\n <div class=\"editor-container\">\n <app-editor-label\n [changed]=\"changes.js !== undefined\"\n [focused]=\"focusedArea === 'js'\">\n JS\n </app-editor-label>\n <fs-text-editor \n [(ngModel)]=\"js\" \n name=\"js\"\n [fsModelChangeOptions]=\"{ debounce: 0 }\"\n (fsModelChange)=\"change(EditorType.Js, $event)\"\n [config]=\"jsConfig\">\n </fs-text-editor> \n </div>\n </as-split-area>\n <as-split-area [size]=\"30\" [visible]=\"showGlobalScss\" [order]=\"4\">\n <div class=\"editor-container\">\n <app-editor-label\n [changed]=\"changes.globalScss !== undefined\"\n [focused]=\"focusedArea === 'globalScss'\">\n Global SCSS\n </app-editor-label>\n <ng-container *fsSkeleton=\"contentStyle\">\n <fs-text-editor \n [(ngModel)]=\"contentStyle.scss\" \n name=\"globalScss\"\n [fsModelChangeOptions]=\"{ debounce: 300 }\"\n (fsModelChange)=\"change(EditorType.GlobalScss, $event)\"\n [config]=\"globalScssConfig\">\n </fs-text-editor> \n </ng-container> \n </div>\n </as-split-area>\n</as-split>\n", styles: [":host ::ng-deep .as-split-gutter{background-color:unset!important}.editor-container{height:100%;border-radius:5px;display:flex;flex-direction:column}.editor-container fs-text-editor{flex:1}\n"], components: [{ type: i2.SplitComponent, selector: "as-split", inputs: ["direction", "unit", "gutterSize", "gutterStep", "restrictMove", "useTransition", "disabled", "dir", "gutterDblClickDuration", "gutterClickDeltaPx", "gutterAriaLabel"], outputs: ["transitionEnd", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"], exportAs: ["asSplit"] }, { type: i3.EditorLabelComponent, selector: "app-editor-label", inputs: ["changed", "focused"] }, { type: i4.FsTextEditorComponent, selector: "fs-text-editor", inputs: ["config", "scrollable"], outputs: ["ready", "blur"] }], directives: [{ type: i2.SplitAreaDirective, selector: "as-split-area, [as-split-area]", inputs: ["order", "size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { type: i7.FsModelChangeDirective, selector: "[fsModelChange]", inputs: ["fsModelChangeOptions"], outputs: ["fsModelChange"] }, { type: i8.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
114
118
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EditorComponent, decorators: [{
|
115
119
|
type: Component,
|
116
120
|
args: [{
|
@@ -142,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
142
146
|
}], blured: [{
|
143
147
|
type: Output
|
144
148
|
}] } });
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9lZGl0b3IvY29tcG9uZW50cy9lZGl0b3IvZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9lZGl0b3IvY29tcG9uZW50cy9lZGl0b3IvZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7O0FBVS9DLE1BQU0sT0FBTyxlQUFlO0lBaUMxQixZQUNVLE1BQXlCLEVBQ3pCLFFBQW1CO1FBRG5CLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFqQ2IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQU90QixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQW1DLENBQUM7UUFDOUQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDckMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFOUMsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQUNsQixlQUFVLEdBQUcsVUFB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O2dCQUVXLE9BQU87c0JBQXZCLE1BQU07Z0JBQ1UsT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxNQUFNO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNUZXh0RWRpdG9yQ29uZmlnIH0gZnJvbSAnQGZpcmVzdGl0Y2gvdGV4dC1lZGl0b3InO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEVkaXRvclR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBGc0NvbnRlbnRDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93SHRtbCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd1Njc3MgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHNob3dKcyA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd0dsb2JhbFNjc3MgPSBmYWxzZTtcblxuICBASW5wdXQoKSBwdWJsaWMgaHRtbDtcbiAgQElucHV0KCkgcHVibGljIHNjc3M7XG4gIEBJbnB1dCgpIHB1YmxpYyBqcyA7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb250ZW50Q29uZmlnOiBGc0NvbnRlbnRDb25maWc7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IHR5cGU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PigpO1xuICBAT3V0cHV0KCkgcHVibGljIGZvY3VzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBibHVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwdWJsaWMgY2hhbmdlczogYW55ID0ge307XG4gIHB1YmxpYyBFZGl0b3JUeXBlID0gRWRpdG9yVHlwZTtcblxuICBwdWJsaWMgY29udGVudFN0eWxlOiB7XG4gICAgc2Nzcz86IHN0cmluZztcbiAgfTtcblxuICBwdWJsaWMgcmVzaXppbmcgPSBmYWxzZTtcbiAgcHVibGljIHRpdGxlO1xuXG4gIHB1YmxpYyBzY3NzQ29uZmlnOiBGc1RleHRFZGl0b3JDb25maWc7XG4gIHB1YmxpYyBnbG9iYWxTY3NzQ29uZmlnOiBGc1RleHRFZGl0b3JDb25maWc7XG4gIHB1YmxpYyBodG1sQ29uZmlnOiBGc1RleHRFZGl0b3JDb25maWc7XG4gIHB1YmxpYyBqc0NvbmZpZzogRnNUZXh0RWRpdG9yQ29uZmlnO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdFRleHRFZGl0b3JzKCk7XG4gICAgdGhpcy5pbml0R2xvYmFsQ29udGVudFN0eWxlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlKHR5cGUsIHZhbHVlKSB7XG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoeyB0eXBlLCB2YWx1ZSB9KTtcbiAgICB0aGlzLmNoYW5nZXNbdHlwZV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzQ2hhbmdlcygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5jaGFuZ2VzKVxuICAgICAgLmZpbHRlcigobmFtZSkgPT4gISF0aGlzLmNoYW5nZXNbbmFtZV0pXG4gICAgICAubGVuZ3RoICE9PSAwO1xuICB9XG5cbiAgcHVibGljIGNsZWFyQ2hhbmdlKHR5cGUpIHtcbiAgICB0aGlzLmNoYW5nZXNbdHlwZV0gPSBudWxsO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGluaXRUZXh0RWRpdG9ycygpIHtcbiAgICB0aGlzLnNjc3NDb25maWcgPSB7XG4gICAgICB0YWJTaXplOiAyLFxuICAgICAgbGFuZ3VhZ2U6ICdzY3NzJyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgZm9jdXM6ICgpID0+IHtcbiAgICAgICAgdGhpcy5mb2N1c2VkLmVtaXQoRWRpdG9yVHlwZS5TY3NzKTtcbiAgICAgIH0sXG4gICAgICBibHVyOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYmx1cmVkLmVtaXQoRWRpdG9yVHlwZS5TY3NzKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLmpzQ29uZmlnID0ge1xuICAgICAgdGFiU2l6ZTogMixcbiAgICAgIGxhbmd1YWdlOiAnanMnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBmb2N1czogKCkgPT4ge1xuICAgICAgICB0aGlzLmZvY3VzZWQuZW1pdChFZGl0b3JUeXBlLkpzKTtcbiAgICAgIH0sXG4gICAgICBibHVyOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYmx1cmVkLmVtaXQoRWRpdG9yVHlwZS5Kcyk7XG4gICAgICB9LFxuICAgIH07XG4gICAgdGhpcy5odG1sQ29uZmlnID0ge1xuICAgICAgdGFiU2l6ZTogMixcbiAgICAgIGxhbmd1YWdlOiAnaHRtbCcsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgIGZvY3VzOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXNlZC5lbWl0KEVkaXRvclR5cGUuSHRtbCk7XG4gICAgICB9LFxuICAgICAgYmx1cjogKCkgPT4ge1xuICAgICAgICB0aGlzLmJsdXJlZC5lbWl0KEVkaXRvclR5cGUuSHRtbCk7XG4gICAgICB9LFxuICAgIH07XG4gICAgdGhpcy5nbG9iYWxTY3NzQ29uZmlnID0ge1xuICAgICAgdGFiU2l6ZTogMixcbiAgICAgIGxhbmd1YWdlOiAnc2NzcycsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgIGZvY3VzOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXNlZC5lbWl0KEVkaXRvclR5cGUuR2xvYmFsU2Nzcyk7XG4gICAgICB9LFxuICAgICAgYmx1cjogKCkgPT4ge1xuICAgICAgICB0aGlzLmJsdXJlZC5lbWl0KEVkaXRvclR5cGUuR2xvYmFsU2Nzcyk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgaW5pdEdsb2JhbENvbnRlbnRTdHlsZSgpIHtcbiAgICB0aGlzLmNvbnRlbnRDb25maWcubG9hZENvbnRlbnRTdHlsZSgpXG4gICAgICAuc3Vic2NyaWJlKChjb250ZW50U3R5bGUpID0+IHtcbiAgICAgICAgdGhpcy5jb250ZW50U3R5bGUgPSBjb250ZW50U3R5bGUgfHwge307XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUdsb2JhbFNjc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudENvbmZpZy5zYXZlQ29udGVudFN0eWxlKHRoaXMuY29udGVudFN0eWxlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdTYXZlZCBDaGFuZ2VzJyk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG59XG4iLCI8YXMtc3BsaXQgW3VuaXRdPVwiJ3BlcmNlbnQnXCIgW2d1dHRlclNpemVdPVwiMjVcIj4gXG4gIDxhcy1zcGxpdC1hcmVhIFtzaXplXT1cIjcwXCIgW3Zpc2libGVdPVwic2hvd0h0bWxcIiBbb3JkZXJdPVwiMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJlZGl0b3ItY29udGFpbmVyXCI+XG4gICAgICA8ZnMtbGFiZWw+SFRNTCB7e2NoYW5nZXMuaHRtbCA/ICcqJyA6ICcnfX08L2ZzLWxhYmVsPlxuICAgICAgPGZzLXRleHQtZWRpdG9yIFxuICAgICAgICBbKG5nTW9kZWwpXT1cImh0bWxcIiBcbiAgICAgICAgbmFtZT1cImh0bWxcIlxuICAgICAgICBbZnNNb2RlbENoYW5nZU9wdGlvbnNdPVwieyBkZWJvdW5jZTogMCB9XCJcbiAgICAgICAgKGZzTW9kZWxDaGFuZ2UpPVwiY2hhbmdlKEVkaXRvclR5cGUuSHRtbCwgJGV2ZW50KVwiXG4gICAgICAgIFtjb25maWddPVwiaHRtbENvbmZpZ1wiPlxuICAgICAgPC9mcy10ZXh0LWVkaXRvcj4gICAgICAgICAgICAgIFxuICAgIDwvZGl2PlxuICA8L2FzLXNwbGl0LWFyZWE+XG4gIDxhcy1zcGxpdC1hcmVhIFtzaXplXT1cIjMwXCIgW3Zpc2libGVdPVwic2hvd1Njc3NcIiBbb3JkZXJdPVwiMlwiPlxuICAgIDxkaXYgY2xhc3M9XCJlZGl0b3ItY29udGFpbmVyXCI+XG4gICAgICA8ZnMtbGFiZWw+U0NTUyB7e2NoYW5nZXMuc2NzcyA/ICcqJyA6ICcnfX08L2ZzLWxhYmVsPlxuICAgICAgPGZzLXRleHQtZWRpdG9yIFxuICAgICAgICBbKG5nTW9kZWwpXT1cInNjc3NcIiBcbiAgICAgICAgbmFtZT1cInNjc3NcIlxuICAgICAgICBbZnNNb2RlbENoYW5nZU9wdGlvbnNdPVwieyBkZWJvdW5jZTogMCB9XCJcbiAgICAgICAgKGZzTW9kZWxDaGFuZ2UpPVwiY2hhbmdlKEVkaXRvclR5cGUuU2NzcywgJGV2ZW50KVwiXG4gICAgICAgIFtjb25maWddPVwic2Nzc0NvbmZpZ1wiPlxuICAgICAgPC9mcy10ZXh0LWVkaXRvcj4gICAgXG4gICAgPC9kaXY+XG4gIDwvYXMtc3BsaXQtYXJlYT5cbiAgPGFzLXNwbGl0LWFyZWEgW3NpemVdPVwiMzBcIiAgW3Zpc2libGVdPVwic2hvd0pzXCIgW29yZGVyXT1cIjNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZWRpdG9yLWNvbnRhaW5lclwiPlxuICAgICAgPGZzLWxhYmVsPkpTIHt7Y2hhbmdlcy5qcyA/ICcqJyA6ICcnfX08L2ZzLWxhYmVsPlxuICAgICAgPGZzLXRleHQtZWRpdG9yIFxuICAgICAgICBbKG5nTW9kZWwpXT1cImpzXCIgXG4gICAgICAgIG5hbWU9XCJqc1wiXG4gICAgICAgIFtmc01vZGVsQ2hhbmdlT3B0aW9uc109XCJ7IGRlYm91bmNlOiAwIH1cIlxuICAgICAgICAoZnNNb2RlbENoYW5nZSk9XCJjaGFuZ2UoRWRpdG9yVHlwZS5KcywgJGV2ZW50KVwiXG4gICAgICAgIFtjb25maWddPVwianNDb25maWdcIj5cbiAgICAgIDwvZnMtdGV4dC1lZGl0b3I+ICAgIFxuICAgIDwvZGl2PlxuICA8L2FzLXNwbGl0LWFyZWE+XG4gIDxhcy1zcGxpdC1hcmVhIFtzaXplXT1cIjMwXCIgW3Zpc2libGVdPVwic2hvd0dsb2JhbFNjc3NcIiBbb3JkZXJdPVwiNFwiPlxuICAgIDxkaXYgY2xhc3M9XCJlZGl0b3ItY29udGFpbmVyXCI+XG4gICAgICA8ZnMtbGFiZWw+R2xvYmFsIFNDU1Mge3tjaGFuZ2VzLmdsb2JhbFNjc3MgPyAnKicgOiAnJ319PC9mcy1sYWJlbD5cbiAgICAgIDxuZy1jb250YWluZXIgKmZzU2tlbGV0b249XCJjb250ZW50U3R5bGVcIj5cbiAgICAgICAgPGZzLXRleHQtZWRpdG9yIFxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudFN0eWxlLnNjc3NcIiBcbiAgICAgICAgICBuYW1lPVwiZ2xvYmFsU2Nzc1wiXG4gICAgICAgICAgW2ZzTW9kZWxDaGFuZ2VPcHRpb25zXT1cInsgZGVib3VuY2U6IDMwMCB9XCJcbiAgICAgICAgICAoZnNNb2RlbENoYW5nZSk9XCJjaGFuZ2UoRWRpdG9yVHlwZS5HbG9iYWxTY3NzLCAkZXZlbnQpXCJcbiAgICAgICAgICBbY29uZmlnXT1cImdsb2JhbFNjc3NDb25maWdcIj5cbiAgICAgICAgPC9mcy10ZXh0LWVkaXRvcj4gXG4gICAgICA8L25nLWNvbnRhaW5lcj4gICBcbiAgICA8L2Rpdj5cbiAgPC9hcy1zcGxpdC1hcmVhPlxuPC9hcy1zcGxpdD5cbiJdfQ==
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9lZGl0b3IvY29tcG9uZW50cy9lZGl0b3IvZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9lZGl0b3IvY29tcG9uZW50cy9lZGl0b3IvZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7O0FBVS9DLE1BQU0sT0FBTyxlQUFlO0lBa0MxQixZQUNVLE1BQXlCLEVBQ3pCLFFBQW1CO1FBRG5CLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFsQ2IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQU90QixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQW1DLENBQUM7UUFDOUQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDckMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFOUMsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQUNsQixlQUFVLEdBQUcsVUFBVSxDQUFDO1FBT3hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFRaEIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFLcEMsQ0FBQztJQUVFLFFBQVE7UUFDYixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUs7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQzdCLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdEMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRU0sV0FBVyxDQUFDLElBQUk7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLE9BQU8sRUFBRSxDQUFDO1lBQ1YsUUFBUSxFQUFFLE1BQU07WUFDaEIsTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFDRCxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxDQUFDO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxPQUFPLEVBQUUsQ0FBQztZQUNWLFFBQVEsRUFBRSxJQUFJO1lBQ2QsTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLENBQUM7WUFDRCxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsQyxDQUFDO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDaEIsT0FBTyxFQUFFLENBQUM7WUFDVixRQUFRLEVBQUUsTUFBTTtZQUNoQixNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsQ0FBQztZQUNELElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLENBQUM7U0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3RCLE9BQU8sRUFBRSxDQUFDO1lBQ1YsUUFBUSxFQUFFLE1BQU07WUFDaEIsTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxQyxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxzQkFBc0I7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRTthQUNsQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQzFELElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFTyxRQUFRLENBQUMsSUFBSTtRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDOzs2R0FwSVUsZUFBZTtpR0FBZixlQUFlLDJTQzVCNUIsczVFQW9FQTs0RkR4Q2EsZUFBZTtrQkFOM0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsV0FBVyxFQUFFLHlCQUF5QjtvQkFDdEMsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3RDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDtnSUFHaUIsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFFVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsRUFBRTtzQkFBakIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUVXLE9BQU87c0JBQXZCLE1BQU07Z0JBQ1UsT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxNQUFNO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNUZXh0RWRpdG9yQ29uZmlnIH0gZnJvbSAnQGZpcmVzdGl0Y2gvdGV4dC1lZGl0b3InO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEVkaXRvclR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBGc0NvbnRlbnRDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93SHRtbCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd1Njc3MgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHNob3dKcyA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd0dsb2JhbFNjc3MgPSBmYWxzZTtcblxuICBASW5wdXQoKSBwdWJsaWMgaHRtbDtcbiAgQElucHV0KCkgcHVibGljIHNjc3M7XG4gIEBJbnB1dCgpIHB1YmxpYyBqcztcbiAgQElucHV0KCkgcHVibGljIGNvbnRlbnRDb25maWc6IEZzQ29udGVudENvbmZpZztcblxuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgdHlwZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZm9jdXNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGJsdXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyBjaGFuZ2VzOiBhbnkgPSB7fTtcbiAgcHVibGljIEVkaXRvclR5cGUgPSBFZGl0b3JUeXBlO1xuICBwdWJsaWMgZm9jdXNlZEFyZWE6IHN0cmluZztcblxuICBwdWJsaWMgY29udGVudFN0eWxlOiB7XG4gICAgc2Nzcz86IHN0cmluZztcbiAgfTtcblxuICBwdWJsaWMgcmVzaXppbmcgPSBmYWxzZTtcbiAgcHVibGljIHRpdGxlO1xuXG4gIHB1YmxpYyBzY3NzQ29uZmlnOiBGc1RleHRFZGl0b3JDb25maWc7XG4gIHB1YmxpYyBnbG9iYWxTY3NzQ29uZmlnOiBGc1RleHRFZGl0b3JDb25maWc7XG4gIHB1YmxpYyBodG1sQ29uZmlnOiBGc1RleHRFZGl0b3JDb25maWc7XG4gIHB1YmxpYyBqc0NvbmZpZzogRnNUZXh0RWRpdG9yQ29uZmlnO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRUZXh0RWRpdG9ycygpO1xuICAgIHRoaXMuaW5pdEdsb2JhbENvbnRlbnRTdHlsZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZSh0eXBlLCB2YWx1ZSkge1xuICAgIHRoaXMuY2hhbmdlZC5lbWl0KHsgdHlwZSwgdmFsdWUgfSk7XG4gICAgdGhpcy5jaGFuZ2VzW3R5cGVdID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY2hhbmdlcylcbiAgICAgIC5maWx0ZXIoKG5hbWUpID0+ICEhdGhpcy5jaGFuZ2VzW25hbWVdKVxuICAgICAgLmxlbmd0aCAhPT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckNoYW5nZSh0eXBlKSB7XG4gICAgdGhpcy5jaGFuZ2VzW3R5cGVdID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGluaXRUZXh0RWRpdG9ycygpIHtcbiAgICB0aGlzLnNjc3NDb25maWcgPSB7XG4gICAgICB0YWJTaXplOiAyLFxuICAgICAgbGFuZ3VhZ2U6ICdzY3NzJyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgZm9jdXM6ICgpID0+IHtcbiAgICAgICAgdGhpcy5fb25Gb2N1cyhFZGl0b3JUeXBlLlNjc3MpO1xuICAgICAgfSxcbiAgICAgIGJsdXI6ICgpID0+IHtcbiAgICAgICAgdGhpcy5ibHVyZWQuZW1pdChFZGl0b3JUeXBlLlNjc3MpO1xuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuanNDb25maWcgPSB7XG4gICAgICB0YWJTaXplOiAyLFxuICAgICAgbGFuZ3VhZ2U6ICdqcycsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgIGZvY3VzOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX29uRm9jdXMoRWRpdG9yVHlwZS5Kcyk7XG4gICAgICB9LFxuICAgICAgYmx1cjogKCkgPT4ge1xuICAgICAgICB0aGlzLmJsdXJlZC5lbWl0KEVkaXRvclR5cGUuSnMpO1xuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuaHRtbENvbmZpZyA9IHtcbiAgICAgIHRhYlNpemU6IDIsXG4gICAgICBsYW5ndWFnZTogJ2h0bWwnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBmb2N1czogKCkgPT4ge1xuICAgICAgICB0aGlzLl9vbkZvY3VzKEVkaXRvclR5cGUuSHRtbCk7XG4gICAgICB9LFxuICAgICAgYmx1cjogKCkgPT4ge1xuICAgICAgICB0aGlzLmJsdXJlZC5lbWl0KEVkaXRvclR5cGUuSHRtbCk7XG4gICAgICB9LFxuICAgIH07XG4gICAgdGhpcy5nbG9iYWxTY3NzQ29uZmlnID0ge1xuICAgICAgdGFiU2l6ZTogMixcbiAgICAgIGxhbmd1YWdlOiAnc2NzcycsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgIGZvY3VzOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX29uRm9jdXMoRWRpdG9yVHlwZS5HbG9iYWxTY3NzKTtcbiAgICAgIH0sXG4gICAgICBibHVyOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYmx1cmVkLmVtaXQoRWRpdG9yVHlwZS5HbG9iYWxTY3NzKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0R2xvYmFsQ29udGVudFN0eWxlKCkge1xuICAgIHRoaXMuY29udGVudENvbmZpZy5sb2FkQ29udGVudFN0eWxlKClcbiAgICAgIC5zdWJzY3JpYmUoKGNvbnRlbnRTdHlsZSkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRlbnRTdHlsZSA9IGNvbnRlbnRTdHlsZSB8fCB7fTtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlR2xvYmFsU2NzcygpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50Q29uZmlnLnNhdmVDb250ZW50U3R5bGUodGhpcy5jb250ZW50U3R5bGUpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1NhdmVkIENoYW5nZXMnKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25Gb2N1cyh0eXBlKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c2VkQXJlYSA9IHR5cGU7XG4gICAgdGhpcy5mb2N1c2VkLmVtaXQodHlwZSk7XG4gIH1cblxufVxuIiwiPGFzLXNwbGl0IFt1bml0XT1cIidwZXJjZW50J1wiIFtndXR0ZXJTaXplXT1cIjI1XCI+IFxuICA8YXMtc3BsaXQtYXJlYSBbc2l6ZV09XCI3MFwiIFt2aXNpYmxlXT1cInNob3dIdG1sXCIgW29yZGVyXT1cIjFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZWRpdG9yLWNvbnRhaW5lclwiPlxuICAgICAgPGFwcC1lZGl0b3ItbGFiZWxcbiAgICAgICAgICBbY2hhbmdlZF09XCJjaGFuZ2VzLmh0bWwgIT09IHVuZGVmaW5lZFwiXG4gICAgICAgICAgW2ZvY3VzZWRdPVwiZm9jdXNlZEFyZWEgPT09ICdodG1sJ1wiPlxuICAgICAgICBIVE1MXG4gICAgICA8L2FwcC1lZGl0b3ItbGFiZWw+XG4gICAgICA8ZnMtdGV4dC1lZGl0b3IgXG4gICAgICAgIFsobmdNb2RlbCldPVwiaHRtbFwiIFxuICAgICAgICBuYW1lPVwiaHRtbFwiXG4gICAgICAgIFtmc01vZGVsQ2hhbmdlT3B0aW9uc109XCJ7IGRlYm91bmNlOiAwIH1cIlxuICAgICAgICAoZnNNb2RlbENoYW5nZSk9XCJjaGFuZ2UoRWRpdG9yVHlwZS5IdG1sLCAkZXZlbnQpXCJcbiAgICAgICAgW2NvbmZpZ109XCJodG1sQ29uZmlnXCI+XG4gICAgICA8L2ZzLXRleHQtZWRpdG9yPiAgICAgICAgICAgICAgXG4gICAgPC9kaXY+XG4gIDwvYXMtc3BsaXQtYXJlYT5cbiAgPGFzLXNwbGl0LWFyZWEgW3NpemVdPVwiMzBcIiBbdmlzaWJsZV09XCJzaG93U2Nzc1wiIFtvcmRlcl09XCIyXCI+XG4gICAgPGRpdiBjbGFzcz1cImVkaXRvci1jb250YWluZXJcIj5cbiAgICAgIDxhcHAtZWRpdG9yLWxhYmVsXG4gICAgICAgICAgW2NoYW5nZWRdPVwiY2hhbmdlcy5zY3NzICE9PSB1bmRlZmluZWRcIlxuICAgICAgICAgIFtmb2N1c2VkXT1cImZvY3VzZWRBcmVhID09PSAnc2NzcydcIj5cbiAgICAgICAgU0NTU1xuICAgICAgPC9hcHAtZWRpdG9yLWxhYmVsPlxuICAgICAgPGZzLXRleHQtZWRpdG9yIFxuICAgICAgICBbKG5nTW9kZWwpXT1cInNjc3NcIiBcbiAgICAgICAgbmFtZT1cInNjc3NcIlxuICAgICAgICBbZnNNb2RlbENoYW5nZU9wdGlvbnNdPVwieyBkZWJvdW5jZTogMCB9XCJcbiAgICAgICAgKGZzTW9kZWxDaGFuZ2UpPVwiY2hhbmdlKEVkaXRvclR5cGUuU2NzcywgJGV2ZW50KVwiXG4gICAgICAgIFtjb25maWddPVwic2Nzc0NvbmZpZ1wiPlxuICAgICAgPC9mcy10ZXh0LWVkaXRvcj4gICAgXG4gICAgPC9kaXY+XG4gIDwvYXMtc3BsaXQtYXJlYT5cbiAgPGFzLXNwbGl0LWFyZWEgW3NpemVdPVwiMzBcIiAgW3Zpc2libGVdPVwic2hvd0pzXCIgW29yZGVyXT1cIjNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZWRpdG9yLWNvbnRhaW5lclwiPlxuICAgICAgPGFwcC1lZGl0b3ItbGFiZWxcbiAgICAgICAgICBbY2hhbmdlZF09XCJjaGFuZ2VzLmpzICE9PSB1bmRlZmluZWRcIlxuICAgICAgICAgIFtmb2N1c2VkXT1cImZvY3VzZWRBcmVhID09PSAnanMnXCI+XG4gICAgICAgIEpTXG4gICAgICA8L2FwcC1lZGl0b3ItbGFiZWw+XG4gICAgICA8ZnMtdGV4dC1lZGl0b3IgXG4gICAgICAgIFsobmdNb2RlbCldPVwianNcIiBcbiAgICAgICAgbmFtZT1cImpzXCJcbiAgICAgICAgW2ZzTW9kZWxDaGFuZ2VPcHRpb25zXT1cInsgZGVib3VuY2U6IDAgfVwiXG4gICAgICAgIChmc01vZGVsQ2hhbmdlKT1cImNoYW5nZShFZGl0b3JUeXBlLkpzLCAkZXZlbnQpXCJcbiAgICAgICAgW2NvbmZpZ109XCJqc0NvbmZpZ1wiPlxuICAgICAgPC9mcy10ZXh0LWVkaXRvcj4gICAgXG4gICAgPC9kaXY+XG4gIDwvYXMtc3BsaXQtYXJlYT5cbiAgPGFzLXNwbGl0LWFyZWEgW3NpemVdPVwiMzBcIiBbdmlzaWJsZV09XCJzaG93R2xvYmFsU2Nzc1wiIFtvcmRlcl09XCI0XCI+XG4gICAgPGRpdiBjbGFzcz1cImVkaXRvci1jb250YWluZXJcIj5cbiAgICAgIDxhcHAtZWRpdG9yLWxhYmVsXG4gICAgICAgICAgW2NoYW5nZWRdPVwiY2hhbmdlcy5nbG9iYWxTY3NzICE9PSB1bmRlZmluZWRcIlxuICAgICAgICAgIFtmb2N1c2VkXT1cImZvY3VzZWRBcmVhID09PSAnZ2xvYmFsU2NzcydcIj5cbiAgICAgICAgR2xvYmFsIFNDU1NcbiAgICAgIDwvYXBwLWVkaXRvci1sYWJlbD5cbiAgICAgIDxuZy1jb250YWluZXIgKmZzU2tlbGV0b249XCJjb250ZW50U3R5bGVcIj5cbiAgICAgICAgPGZzLXRleHQtZWRpdG9yIFxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudFN0eWxlLnNjc3NcIiBcbiAgICAgICAgICBuYW1lPVwiZ2xvYmFsU2Nzc1wiXG4gICAgICAgICAgW2ZzTW9kZWxDaGFuZ2VPcHRpb25zXT1cInsgZGVib3VuY2U6IDMwMCB9XCJcbiAgICAgICAgICAoZnNNb2RlbENoYW5nZSk9XCJjaGFuZ2UoRWRpdG9yVHlwZS5HbG9iYWxTY3NzLCAkZXZlbnQpXCJcbiAgICAgICAgICBbY29uZmlnXT1cImdsb2JhbFNjc3NDb25maWdcIj5cbiAgICAgICAgPC9mcy10ZXh0LWVkaXRvcj4gXG4gICAgICA8L25nLWNvbnRhaW5lcj4gICBcbiAgICA8L2Rpdj5cbiAgPC9hcy1zcGxpdC1hcmVhPlxuPC9hcy1zcGxpdD5cbiJdfQ==
|