@firestitch/content 12.0.1 → 12.0.3
Sign up to get free protection for your applications and to get access to all the features.
- package/app/modules/content/components/{content- renderer → content-renderer}/content-renderer.component.d.ts +0 -0
- package/app/modules/content/components/{content- renderer → content-renderer}/index.d.ts +0 -0
- package/app/modules/content/fs-content.module.d.ts +1 -1
- package/bundles/firestitch-content.umd.js +12 -3
- package/bundles/firestitch-content.umd.js.map +1 -1
- package/esm2015/app/modules/content/components/content/content.component.js +12 -3
- package/esm2015/app/modules/content/components/content-renderer/content-renderer.component.js +75 -0
- package/esm2015/app/modules/content/components/{content- renderer/index.js → content-renderer/index.js} +1 -1
- package/esm2015/app/modules/content/fs-content.module.js +2 -2
- package/esm2015/app/modules/content-layouts/components/content-layouts/content-layouts.component.js +2 -2
- package/esm2015/app/modules/content-pages/components/content-pages/content-pages.component.js +2 -2
- package/fesm2015/firestitch-content.js +12 -3
- package/fesm2015/firestitch-content.js.map +1 -1
- package/package.json +1 -1
- package/esm2015/app/modules/content/components/content- renderer/content-renderer.component.js +0 -75
File without changes
|
File without changes
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import * as i0 from "@angular/core";
|
2
2
|
import * as i1 from "./components/content/content.component";
|
3
|
-
import * as i2 from "./components/content-
|
3
|
+
import * as i2 from "./components/content-renderer/content-renderer.component";
|
4
4
|
import * as i3 from "@angular/common";
|
5
5
|
import * as i4 from "@firestitch/html-editor";
|
6
6
|
export declare class FsContentModule {
|
@@ -281,7 +281,7 @@
|
|
281
281
|
return FsContentPagesComponent;
|
282
282
|
}());
|
283
283
|
FsContentPagesComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentPagesComponent, deps: [{ token: FS_CONTENT_CONFIG }, { token: i1__namespace.MatDialog }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
284
|
-
FsContentPagesComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentPagesComponent, selector: "fs-content-pages", inputs: { htmlEditorConfig: "htmlEditorConfig" }, viewQueries: [{ propertyName: "listComponent", first: true, predicate: i2$1.FsListComponent, descendants: true }], ngImport: i0__namespace, template: "<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openPage(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 /{{row.path}}
|
284
|
+
FsContentPagesComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentPagesComponent, selector: "fs-content-pages", inputs: { htmlEditorConfig: "htmlEditorConfig" }, viewQueries: [{ propertyName: "listComponent", first: true, predicate: i2$1.FsListComponent, descendants: true }], ngImport: i0__namespace, template: "<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openPage(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", styles: [":host ::ng-deep .modified,:host ::ng-deep .name{width:1%;white-space:nowrap}:host ::ng-deep .preview-content img{display:none}.preview-content{position:relative;max-height:100px;max-width:100%;overflow:hidden;-webkit-mask-image:-webkit-gradient(linear,left 60%,left bottom,from(black),to(rgba(0,0,0,0)))}\n"], components: [{ type: i2__namespace$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i3__namespace$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2__namespace$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }], pipes: { "fsDate": i4__namespace$2.FsDatePipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
285
285
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentPagesComponent, decorators: [{
|
286
286
|
type: i0.Component,
|
287
287
|
args: [{
|
@@ -531,7 +531,7 @@
|
|
531
531
|
styles: contentLayout.styles,
|
532
532
|
content: contentLayout.content,
|
533
533
|
save: function (data) {
|
534
|
-
return _this._config.
|
534
|
+
return _this._config.saveContentLayout(Object.assign({ id: contentLayout.id }, data));
|
535
535
|
},
|
536
536
|
},
|
537
537
|
})
|
@@ -813,7 +813,16 @@
|
|
813
813
|
var path = window.location.pathname;
|
814
814
|
this._config.loadContent(path)
|
815
815
|
.subscribe(function (contentPage) {
|
816
|
-
|
816
|
+
if (contentPage.title) {
|
817
|
+
_this._title.setTitle(contentPage.title);
|
818
|
+
var ogTitleEl = document.querySelector('head meta[property="og:title"]');
|
819
|
+
if (!ogTitleEl) {
|
820
|
+
ogTitleEl = document.createElement('meta');
|
821
|
+
ogTitleEl.setAttribute('property', 'og:title');
|
822
|
+
document.getElementsByTagName('head')[0].appendChild(ogTitleEl);
|
823
|
+
}
|
824
|
+
ogTitleEl.setAttribute('content', contentPage.title);
|
825
|
+
}
|
817
826
|
_this.contentPage = contentPage;
|
818
827
|
_this._cdRef.markForCheck();
|
819
828
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"firestitch-content.umd.js","sources":["../../src/app/enums/page-type.enum.ts","../../src/app/consts/page-types.const.ts","../../src/app/injectors/content-config.injector.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/editor/components/editor/editor.component.ts","../../src/app/modules/editor/components/editor/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/editor/fs-content-editor.module.ts","../../src/app/modules/content-pages/fs-content-pages.module.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-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/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 PageType {\n StandardPage = 'standardPage',\n BlogPost = 'blogPost',\n HomePage = 'homePage',\n NotFoundPage = 'notFoundPage',\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 { 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 { PageTypes } from '../../../../consts';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\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._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 fxLayout=\"column\">\n <mat-form-field>\n <mat-select\n [(ngModel)]=\"contentPage.type\"\n name=\"type\"\n required\n placeholder=\"Type\">\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>\n <input\n matInput\n [(ngModel)]=\"contentPage.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.path\"\n name=\"path\"\n placeholder=\"Path\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.title\"\n name=\"title\"\n placeholder=\"Title\">\n </mat-form-field>\n <mat-form-field *ngIf=\"contentLayouts\">\n <mat-select\n [(ngModel)]=\"contentPage.contentLayoutId\"\n required\n name=\"contentLayoutId\"\n placeholder=\"Layout\">\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 </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 Component,\n Inject,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ViewChildren,\n QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\n\n@Component({\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public styles = null;\n public content = null;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EditorComponent>,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this._dialogRef.updateSize('100%','100%');\n this.content = this._data.content;\n this.styles = this._data.styles;\n }\n\n public editorToggleChange(event: MatButtonToggleChange): void {\n this.editors[event.value] = !this.editors[event.value];\n setTimeout(() => {\n this.textEditors.forEach((textEditor) => {\n textEditor.updateLayout();\n });\n }, 100);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._data.save({ content: this.content, styles: this.styles })\n .pipe(\n tap(() => {\n this._message.success('Saved Changes');\n }),\n );\n };\n\n}\n","<form fsForm [submit]=\"save\">\n <fs-dialog>\n <h1 mat-dialog-title>Design</h1>\n <div mat-dialog-content>\n <div class=\"container\">\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"content\" [checked]=\"editors.content\" (change)=\"editorToggleChange($event)\">Content</mat-button-toggle>\n <mat-button-toggle value=\"styles\" [checked]=\"editors.styles\" (change)=\"editorToggleChange($event)\">Styles</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n <div class=\"editors\">\n <div class=\"editor\" *ngIf=\"editors.content\">\n <fs-label>Content</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"content\" \n name=\"content\"\n [config]=\"{ tabSize: 2, language: 'html' }\">\n </fs-text-editor> \n </div>\n </div>\n <div class=\"editor\" *ngIf=\"editors.styles\">\n <fs-label>Styles</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"styles\" \n name=\"styles\"\n [config]=\"{ tabSize: 2, language: 'scss' }\">\n </fs-text-editor> \n </div>\n </div> \n </div>\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 Component,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n OnDestroy,\n Input,\n Inject,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\nimport { index } from '@firestitch/common';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { PageTypes } from '../../../../consts';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { ContentPageComponent } from '../content-page/content-page.component';\nimport { EditorComponent } from '../../../editor/components/editor';\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(EditorComponent, {\n maxWidth: null,\n maxHeight: null,\n data: {\n styles: contentPage.styles,\n content: contentPage.content,\n save: (data) => {\n return this._config.saveContentPage({\n id: contentPage.id,\n ...data,\n });\n }, \n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public openPage(contentPage: any): void {\n this._dialog.open(ContentPageComponent, {\n data: {\n contentPage,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentPage) => !!_contentPage),\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 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.openPage({});\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\n","<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openPage(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 /{{row.path}}\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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\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 FsLabelModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n ],\n exports: [\n EditorComponent,\n ],\n declarations: [\n EditorComponent,\n ],\n})\nexport class FsContentEditorModule {\n }\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\n\nimport { ContentPageComponent } from './components/content-page';\nimport { FsContentPagesComponent } from './components/content-pages';\nimport { FsContentEditorModule } from '../editor';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n FlexLayoutModule,\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 FsContentPagesComponent,\n ],\n declarations: [\n FsContentPagesComponent,\n ContentPageComponent,\n ],\n})\nexport class FsContentPagesModule {\n static forRoot(): ModuleWithProviders<FsContentPagesModule> {\n return {\n ngModule: FsContentPagesModule,\n };\n }\n}\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 fxLayout=\"column\">\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.tag\"\n name=\"tag\"\n placeholder=\"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 Component,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n OnDestroy,\n Inject,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\n\nimport { map, takeUntil, filter } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { ContentLayoutComponent } from '../../components/content-layout';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\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(EditorComponent, {\n maxWidth: null,\n maxHeight: null, \n data: {\n styles: contentLayout.styles,\n content: contentLayout.content,\n save: (data) => {\n return this._config.saveContentPage({\n id: contentLayout.id,\n ...data,\n });\n },\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): void {\n this._dialog.open(ContentLayoutComponent, {\n data: {\n contentLayout,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentLayout) => !!_contentLayout),\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 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 },\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=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openLayout(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 { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentLayoutsComponent } from './components/content-layouts';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsContentEditorModule } from '../editor';\nimport { ContentLayoutComponent } from './components/content-layout';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n FlexLayoutModule,\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 ],\n})\nexport class FsContentLayoutsModule {\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n OnDestroy,\n ElementRef,\n Input,\n AfterViewChecked,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\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 {\n\n @Input() public set contentPage(contentPage) {\n if(contentPage) {\n this.content = this._sanitizer.bypassSecurityTrustHtml(contentPage.content);\n this.styles = contentPage.styles;\n }\n }\n\n public content;\n public styles;\n public _destroy$ = new Subject();\n\n constructor(\n private _sanitizer: DomSanitizer,\n private _router: Router,\n private _el: ElementRef,\n ) {}\n\n public ngAfterViewChecked(): void {\n let el = document.querySelector('#contentPageStyles');\n if(!el) {\n el = document.createElement('style');\n el.setAttribute('id','contentPageStyles');\n document.getElementsByTagName('head')[0].appendChild(el);\n }\n\n el.innerHTML = this.styles;\n\n this.registerHrefs();\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","import {\n Component,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnInit,\n OnDestroy,\n ElementRef,\n Inject,\n} from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\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 ) {}\n\n public ngOnInit(): void {\n this.load();\n\n this._router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.load();\n });\n }\n\n public load(): void {\n const path = (window as any).location.pathname;\n this._config.loadContent(path)\n .subscribe((contentPage) => {\n this._title.setTitle(contentPage.title);\n this.contentPage = contentPage;\n this._cdRef.markForCheck();\n });\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}\n","<fs-content-renderer *ngIf=\"contentPage\" [contentPage]=\"contentPage\"></fs-content-renderer>","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":["InjectionToken","Subject","tap","of","switchMap","takeUntil","MAT_DIALOG_DATA","FsTextEditorComponent","Component","ChangeDetectionStrategy","Inject","ViewChildren","index","filter","ItemType","map","FsListComponent","Input","ViewChild","CommonModule","FormsModule","MatDialogModule","MatButtonModule","MatTabsModule","MatIconModule","MatButtonToggleModule","FsListModule","FsFormModule","FsLabelModule","FsHtmlEditorModule","FsDialogModule","FsTextEditorModule","NgModule","FlexLayoutModule","MatInputModule","MatFormFieldModule","MatSelectModule","FsDateModule","FsSkeletonModule","NavigationEnd"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"firestitch-content.umd.js","sources":["../../src/app/enums/page-type.enum.ts","../../src/app/consts/page-types.const.ts","../../src/app/injectors/content-config.injector.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/editor/components/editor/editor.component.ts","../../src/app/modules/editor/components/editor/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/editor/fs-content-editor.module.ts","../../src/app/modules/content-pages/fs-content-pages.module.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-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/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 PageType {\n StandardPage = 'standardPage',\n BlogPost = 'blogPost',\n HomePage = 'homePage',\n NotFoundPage = 'notFoundPage',\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 { 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 { PageTypes } from '../../../../consts';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\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._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 fxLayout=\"column\">\n <mat-form-field>\n <mat-select\n [(ngModel)]=\"contentPage.type\"\n name=\"type\"\n required\n placeholder=\"Type\">\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>\n <input\n matInput\n [(ngModel)]=\"contentPage.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.path\"\n name=\"path\"\n placeholder=\"Path\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.title\"\n name=\"title\"\n placeholder=\"Title\">\n </mat-form-field>\n <mat-form-field *ngIf=\"contentLayouts\">\n <mat-select\n [(ngModel)]=\"contentPage.contentLayoutId\"\n required\n name=\"contentLayoutId\"\n placeholder=\"Layout\">\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 </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 Component,\n Inject,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ViewChildren,\n QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\n\n@Component({\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public styles = null;\n public content = null;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EditorComponent>,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this._dialogRef.updateSize('100%','100%');\n this.content = this._data.content;\n this.styles = this._data.styles;\n }\n\n public editorToggleChange(event: MatButtonToggleChange): void {\n this.editors[event.value] = !this.editors[event.value];\n setTimeout(() => {\n this.textEditors.forEach((textEditor) => {\n textEditor.updateLayout();\n });\n }, 100);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._data.save({ content: this.content, styles: this.styles })\n .pipe(\n tap(() => {\n this._message.success('Saved Changes');\n }),\n );\n };\n\n}\n","<form fsForm [submit]=\"save\">\n <fs-dialog>\n <h1 mat-dialog-title>Design</h1>\n <div mat-dialog-content>\n <div class=\"container\">\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"content\" [checked]=\"editors.content\" (change)=\"editorToggleChange($event)\">Content</mat-button-toggle>\n <mat-button-toggle value=\"styles\" [checked]=\"editors.styles\" (change)=\"editorToggleChange($event)\">Styles</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n <div class=\"editors\">\n <div class=\"editor\" *ngIf=\"editors.content\">\n <fs-label>Content</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"content\" \n name=\"content\"\n [config]=\"{ tabSize: 2, language: 'html' }\">\n </fs-text-editor> \n </div>\n </div>\n <div class=\"editor\" *ngIf=\"editors.styles\">\n <fs-label>Styles</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"styles\" \n name=\"styles\"\n [config]=\"{ tabSize: 2, language: 'scss' }\">\n </fs-text-editor> \n </div>\n </div> \n </div>\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 Component,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n OnDestroy,\n Input,\n Inject,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\nimport { index } from '@firestitch/common';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { PageTypes } from '../../../../consts';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { ContentPageComponent } from '../content-page/content-page.component';\nimport { EditorComponent } from '../../../editor/components/editor';\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(EditorComponent, {\n maxWidth: null,\n maxHeight: null,\n data: {\n styles: contentPage.styles,\n content: contentPage.content,\n save: (data) => {\n return this._config.saveContentPage({\n id: contentPage.id,\n ...data,\n });\n }, \n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public openPage(contentPage: any): void {\n this._dialog.open(ContentPageComponent, {\n data: {\n contentPage,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentPage) => !!_contentPage),\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 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.openPage({});\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\n","<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openPage(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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\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 FsLabelModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n ],\n exports: [\n EditorComponent,\n ],\n declarations: [\n EditorComponent,\n ],\n})\nexport class FsContentEditorModule {\n }\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\n\nimport { ContentPageComponent } from './components/content-page';\nimport { FsContentPagesComponent } from './components/content-pages';\nimport { FsContentEditorModule } from '../editor';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n FlexLayoutModule,\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 FsContentPagesComponent,\n ],\n declarations: [\n FsContentPagesComponent,\n ContentPageComponent,\n ],\n})\nexport class FsContentPagesModule {\n static forRoot(): ModuleWithProviders<FsContentPagesModule> {\n return {\n ngModule: FsContentPagesModule,\n };\n }\n}\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 fxLayout=\"column\">\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.tag\"\n name=\"tag\"\n placeholder=\"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 Component,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n OnDestroy,\n Inject,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\n\nimport { map, takeUntil, filter } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { ContentLayoutComponent } from '../../components/content-layout';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\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(EditorComponent, {\n maxWidth: null,\n maxHeight: null, \n data: {\n styles: contentLayout.styles,\n content: contentLayout.content,\n save: (data) => {\n return this._config.saveContentLayout({\n id: contentLayout.id,\n ...data,\n });\n },\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): void {\n this._dialog.open(ContentLayoutComponent, {\n data: {\n contentLayout,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentLayout) => !!_contentLayout),\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 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 },\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=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openLayout(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 { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentLayoutsComponent } from './components/content-layouts';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsContentEditorModule } from '../editor';\nimport { ContentLayoutComponent } from './components/content-layout';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n FlexLayoutModule,\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 ],\n})\nexport class FsContentLayoutsModule {\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n OnDestroy,\n ElementRef,\n Input,\n AfterViewChecked,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\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 {\n\n @Input() public set contentPage(contentPage) {\n if(contentPage) {\n this.content = this._sanitizer.bypassSecurityTrustHtml(contentPage.content);\n this.styles = contentPage.styles;\n }\n }\n\n public content;\n public styles;\n public _destroy$ = new Subject();\n\n constructor(\n private _sanitizer: DomSanitizer,\n private _router: Router,\n private _el: ElementRef,\n ) {}\n\n public ngAfterViewChecked(): void {\n let el = document.querySelector('#contentPageStyles');\n if(!el) {\n el = document.createElement('style');\n el.setAttribute('id','contentPageStyles');\n document.getElementsByTagName('head')[0].appendChild(el);\n }\n\n el.innerHTML = this.styles;\n\n this.registerHrefs();\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","import {\n Component,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnInit,\n OnDestroy,\n ElementRef,\n Inject,\n} from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\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 ) {}\n\n public ngOnInit(): void {\n this.load();\n\n this._router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.load();\n });\n }\n\n public load(): void {\n const path = (window as any).location.pathname;\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 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}\n","<fs-content-renderer *ngIf=\"contentPage\" [contentPage]=\"contentPage\"></fs-content-renderer>","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":["InjectionToken","Subject","tap","of","switchMap","takeUntil","MAT_DIALOG_DATA","FsTextEditorComponent","Component","ChangeDetectionStrategy","Inject","ViewChildren","index","filter","ItemType","map","FsListComponent","Input","ViewChild","CommonModule","FormsModule","MatDialogModule","MatButtonModule","MatTabsModule","MatIconModule","MatButtonToggleModule","FsListModule","FsFormModule","FsLabelModule","FsHtmlEditorModule","FsDialogModule","FsTextEditorModule","NgModule","FlexLayoutModule","MatInputModule","MatFormFieldModule","MatSelectModule","FsDateModule","FsSkeletonModule","NavigationEnd"],"mappings":"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"}
|
@@ -7,7 +7,7 @@ import { FS_CONTENT_CONFIG } from '../../../../injectors';
|
|
7
7
|
import * as i0 from "@angular/core";
|
8
8
|
import * as i1 from "@angular/platform-browser";
|
9
9
|
import * as i2 from "@angular/router";
|
10
|
-
import * as i3 from "../content-
|
10
|
+
import * as i3 from "../content-renderer/content-renderer.component";
|
11
11
|
import * as i4 from "@angular/common";
|
12
12
|
export class FsContentComponent {
|
13
13
|
constructor(_config, _title, _cdRef, _router, _el) {
|
@@ -30,7 +30,16 @@ export class FsContentComponent {
|
|
30
30
|
const path = window.location.pathname;
|
31
31
|
this._config.loadContent(path)
|
32
32
|
.subscribe((contentPage) => {
|
33
|
-
|
33
|
+
if (contentPage.title) {
|
34
|
+
this._title.setTitle(contentPage.title);
|
35
|
+
let ogTitleEl = document.querySelector('head meta[property="og:title"]');
|
36
|
+
if (!ogTitleEl) {
|
37
|
+
ogTitleEl = document.createElement('meta');
|
38
|
+
ogTitleEl.setAttribute('property', 'og:title');
|
39
|
+
document.getElementsByTagName('head')[0].appendChild(ogTitleEl);
|
40
|
+
}
|
41
|
+
ogTitleEl.setAttribute('content', contentPage.title);
|
42
|
+
}
|
34
43
|
this.contentPage = contentPage;
|
35
44
|
this._cdRef.markForCheck();
|
36
45
|
});
|
@@ -58,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
58
67
|
type: Inject,
|
59
68
|
args: [FS_CONTENT_CONFIG]
|
60
69
|
}] }, { type: i1.Title }, { type: i0.ChangeDetectorRef }, { type: i2.Router }, { type: i0.ElementRef }]; } });
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC9jb21wb25lbnRzL2NvbnRlbnQvY29udGVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC9jb21wb25lbnRzL2NvbnRlbnQvY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixpQkFBaUIsRUFHakIsVUFBVSxFQUNWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQVUxRCxNQUFNLE9BQU8sa0JBQWtCO0lBTTdCLFlBQ3FDLE9BQXdCLEVBQ25ELE1BQWEsRUFDYixNQUF5QixFQUN6QixPQUFlLEVBQ2YsR0FBZTtRQUpZLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ25ELFdBQU0sR0FBTixNQUFNLENBQU87UUFDYixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQVBqQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQVEvQixDQUFDO0lBRUcsUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTthQUNoQixJQUFJLENBQ0gsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksYUFBYSxDQUFDLEVBQ3pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLElBQUk7UUFDVCxNQUFNLElBQUksR0FBSSxNQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7YUFDM0IsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDekIsSUFBRyxXQUFXLENBQUMsS0FBSyxFQUFFO2dCQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXhDLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztnQkFDekUsSUFBRyxDQUFDLFNBQVMsRUFBRTtvQkFDYixTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDM0MsU0FBUyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzlDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ2pFO2dCQUVELFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNyRDtZQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBVyxFQUFFO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUNoQyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7Z0hBekRVLGtCQUFrQixrQkFPbkIsaUJBQWlCO29HQVBoQixrQkFBa0Isa0RDekIvQixpR0FBMkY7NEZEeUI5RSxrQkFBa0I7a0JBTjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFdBQVcsRUFBRSwwQkFBMEI7b0JBQ3ZDLFNBQVMsRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUN2QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQVFJLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGU19DT05URU5UX0NPTkZJRyB9IGZyb20gJy4uLy4uLy4uLy4uL2luamVjdG9ycyc7XG5pbXBvcnQgeyBGc0NvbnRlbnRDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1jb250ZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb250ZW50LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0NvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIGNvbnRlbnRQYWdlO1xuICBcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRlNfQ09OVEVOVF9DT05GSUcpIHByaXZhdGUgX2NvbmZpZzogRnNDb250ZW50Q29uZmlnLFxuICAgIHByaXZhdGUgX3RpdGxlOiBUaXRsZSxcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBfZWw6IEVsZW1lbnRSZWYsXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkKCk7XG5cbiAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhdGggPSAod2luZG93IGFzIGFueSkubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgdGhpcy5fY29uZmlnLmxvYWRDb250ZW50KHBhdGgpXG4gICAgICAuc3Vic2NyaWJlKChjb250ZW50UGFnZSkgPT4ge1xuICAgICAgICBpZihjb250ZW50UGFnZS50aXRsZSkge1xuICAgICAgICAgIHRoaXMuX3RpdGxlLnNldFRpdGxlKGNvbnRlbnRQYWdlLnRpdGxlKTtcblxuICAgICAgICAgIGxldCBvZ1RpdGxlRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkIG1ldGFbcHJvcGVydHk9XCJvZzp0aXRsZVwiXScpO1xuICAgICAgICAgIGlmKCFvZ1RpdGxlRWwpIHtcbiAgICAgICAgICAgIG9nVGl0bGVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ21ldGEnKTtcbiAgICAgICAgICAgIG9nVGl0bGVFbC5zZXRBdHRyaWJ1dGUoJ3Byb3BlcnR5Jywnb2c6dGl0bGUnKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQob2dUaXRsZUVsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBvZ1RpdGxlRWwuc2V0QXR0cmlidXRlKCdjb250ZW50Jyxjb250ZW50UGFnZS50aXRsZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbnRlbnRQYWdlID0gY29udGVudFBhZ2U7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVsKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fdGl0bGUuc2V0VGl0bGUoJycpO1xuICB9XG5cbn1cbiIsIjxmcy1jb250ZW50LXJlbmRlcmVyICpuZ0lmPVwiY29udGVudFBhZ2VcIiBbY29udGVudFBhZ2VdPVwiY29udGVudFBhZ2VcIj48L2ZzLWNvbnRlbnQtcmVuZGVyZXI+Il19
|
@@ -0,0 +1,75 @@
|
|
1
|
+
import { Component, ChangeDetectionStrategy, ElementRef, Input, } from '@angular/core';
|
2
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
3
|
+
import { Router } from '@angular/router';
|
4
|
+
import { Subject } from 'rxjs';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
import * as i1 from "@angular/platform-browser";
|
7
|
+
import * as i2 from "@angular/router";
|
8
|
+
import * as i3 from "@angular/common";
|
9
|
+
export class ContentRendererComponent {
|
10
|
+
constructor(_sanitizer, _router, _el) {
|
11
|
+
this._sanitizer = _sanitizer;
|
12
|
+
this._router = _router;
|
13
|
+
this._el = _el;
|
14
|
+
this._destroy$ = new Subject();
|
15
|
+
}
|
16
|
+
set contentPage(contentPage) {
|
17
|
+
if (contentPage) {
|
18
|
+
this.content = this._sanitizer.bypassSecurityTrustHtml(contentPage.content);
|
19
|
+
this.styles = contentPage.styles;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
ngAfterViewChecked() {
|
23
|
+
let el = document.querySelector('#contentPageStyles');
|
24
|
+
if (!el) {
|
25
|
+
el = document.createElement('style');
|
26
|
+
el.setAttribute('id', 'contentPageStyles');
|
27
|
+
document.getElementsByTagName('head')[0].appendChild(el);
|
28
|
+
}
|
29
|
+
el.innerHTML = this.styles;
|
30
|
+
this.registerHrefs();
|
31
|
+
}
|
32
|
+
registerHrefs() {
|
33
|
+
Array.from(this.el.querySelectorAll('a[href]'))
|
34
|
+
.filter((el) => {
|
35
|
+
return el.getAttribute('href').match(/^\//);
|
36
|
+
})
|
37
|
+
.forEach((el) => {
|
38
|
+
el.addEventListener('click', (event) => {
|
39
|
+
if (!event.shiftKey && !event.ctrlKey) {
|
40
|
+
event.preventDefault();
|
41
|
+
const href = el.getAttribute('href');
|
42
|
+
this._router.navigateByUrl(href);
|
43
|
+
}
|
44
|
+
});
|
45
|
+
});
|
46
|
+
}
|
47
|
+
get el() {
|
48
|
+
return this._el.nativeElement;
|
49
|
+
}
|
50
|
+
ngOnDestroy() {
|
51
|
+
this.removeStyles();
|
52
|
+
this._destroy$.next();
|
53
|
+
this._destroy$.complete();
|
54
|
+
}
|
55
|
+
removeStyles() {
|
56
|
+
const el = document.querySelector('#contentPageStyles');
|
57
|
+
if (el) {
|
58
|
+
el.remove();
|
59
|
+
}
|
60
|
+
}
|
61
|
+
}
|
62
|
+
ContentRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContentRendererComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
63
|
+
ContentRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ContentRendererComponent, selector: "fs-content-renderer", inputs: { contentPage: "contentPage" }, ngImport: i0, template: "<div *ngIf=\"content\" [innerHTML]=\"content\"></div>\n", styles: [""], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContentRendererComponent, decorators: [{
|
65
|
+
type: Component,
|
66
|
+
args: [{
|
67
|
+
selector: 'fs-content-renderer',
|
68
|
+
templateUrl: './content-renderer.component.html',
|
69
|
+
styleUrls: ['./content-renderer.component.scss'],
|
70
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
71
|
+
}]
|
72
|
+
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.Router }, { type: i0.ElementRef }]; }, propDecorators: { contentPage: [{
|
73
|
+
type: Input
|
74
|
+
}] } });
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC9jb21wb25lbnRzL2NvbnRlbnQtcmVuZGVyZXIvY29udGVudC1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC9jb21wb25lbnRzL2NvbnRlbnQtcmVuZGVyZXIvY29udGVudC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUV2QixVQUFVLEVBQ1YsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFTL0IsTUFBTSxPQUFPLHdCQUF3QjtJQWFuQyxZQUNVLFVBQXdCLEVBQ3hCLE9BQWUsRUFDZixHQUFlO1FBRmYsZUFBVSxHQUFWLFVBQVUsQ0FBYztRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUxsQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQU05QixDQUFDO0lBZkosSUFBb0IsV0FBVyxDQUFDLFdBQVc7UUFDekMsSUFBRyxXQUFXLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztTQUNsQztJQUNILENBQUM7SUFZTSxrQkFBa0I7UUFDdkIsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3RELElBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDTixFQUFFLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDMUQ7UUFFRCxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFM0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxhQUFhO1FBQ2xCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUM1QyxNQUFNLENBQUMsQ0FBQyxFQUFXLEVBQUUsRUFBRTtZQUN0QixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQzthQUNELE9BQU8sQ0FBQyxDQUFDLEVBQVcsRUFBRSxFQUFFO1lBQ3ZCLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxLQUFpQixFQUFFLEVBQUU7Z0JBQ2hELElBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtvQkFDcEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN2QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDbEM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQVcsRUFBRTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7SUFDaEMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sWUFBWTtRQUNqQixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEQsSUFBRyxFQUFFLEVBQUU7WUFDTCxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDYjtJQUNILENBQUM7O3NIQS9EVSx3QkFBd0I7MEdBQXhCLHdCQUF3QixtR0NwQnJDLHlEQUNBOzRGRG1CYSx3QkFBd0I7a0JBTnBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLG1DQUFtQztvQkFDaEQsU0FBUyxFQUFFLENBQUMsbUNBQW1DLENBQUM7b0JBQ2hELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDtpSkFHcUIsV0FBVztzQkFBOUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9uRGVzdHJveSxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtY29udGVudC1yZW5kZXJlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LXJlbmRlcmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udGVudC1yZW5kZXJlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudFJlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkIHtcblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGNvbnRlbnRQYWdlKGNvbnRlbnRQYWdlKSB7XG4gICAgaWYoY29udGVudFBhZ2UpIHtcbiAgICAgIHRoaXMuY29udGVudCA9IHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChjb250ZW50UGFnZS5jb250ZW50KTtcbiAgICAgIHRoaXMuc3R5bGVzID0gY29udGVudFBhZ2Uuc3R5bGVzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb250ZW50O1xuICBwdWJsaWMgc3R5bGVzO1xuICBwdWJsaWMgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIF9lbDogRWxlbWVudFJlZixcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgbGV0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NvbnRlbnRQYWdlU3R5bGVzJyk7XG4gICAgaWYoIWVsKSB7XG4gICAgICBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2lkJywnY29udGVudFBhZ2VTdHlsZXMnKTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoZWwpO1xuICAgIH1cblxuICAgIGVsLmlubmVySFRNTCA9IHRoaXMuc3R5bGVzO1xuXG4gICAgdGhpcy5yZWdpc3RlckhyZWZzKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJIcmVmcygpOiB2b2lkIHtcbiAgICBBcnJheS5mcm9tKHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnYVtocmVmXScpKVxuICAgICAgLmZpbHRlcigoZWw6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGVsLmdldEF0dHJpYnV0ZSgnaHJlZicpLm1hdGNoKC9eXFwvLyk7XG4gICAgICB9KVxuICAgICAgLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICBpZighZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBocmVmID0gZWwuZ2V0QXR0cmlidXRlKCdocmVmJyk7XG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybChocmVmKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVsKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVTdHlsZXMoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVTdHlsZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY29udGVudFBhZ2VTdHlsZXMnKTtcbiAgICBpZihlbCkge1xuICAgICAgZWwucmVtb3ZlKCk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJjb250ZW50XCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9kaXY+XG4iXX0=
|
@@ -1,2 +1,2 @@
|
|
1
1
|
export * from './content-renderer.component';
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC9jb21wb25lbnRzL2NvbnRlbnQtcmVuZGVyZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29udGVudC1yZW5kZXJlci5jb21wb25lbnQnO1xuIl19
|
@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
3
3
|
import { FsHtmlEditorModule } from '@firestitch/html-editor';
|
4
4
|
import { FsContentComponent } from './components/content';
|
5
|
-
import { ContentRendererComponent } from './components/content-
|
5
|
+
import { ContentRendererComponent } from './components/content-renderer';
|
6
6
|
import * as i0 from "@angular/core";
|
7
7
|
export class FsContentModule {
|
8
8
|
}
|
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
30
30
|
],
|
31
31
|
}]
|
32
32
|
}] });
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtY29udGVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC9mcy1jb250ZW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFrQnpFLE1BQU0sT0FBTyxlQUFlOzs2R0FBZixlQUFlOzhHQUFmLGVBQWUsaUJBSnhCLGtCQUFrQjtRQUNsQix3QkFBd0IsYUFUeEIsWUFBWTtRQUVaLGtCQUFrQixhQUdsQixrQkFBa0I7OEdBT1QsZUFBZSxZQWJqQjtZQUNQLFlBQVk7WUFFWixrQkFBa0I7U0FDbkI7NEZBU1UsZUFBZTtrQkFkM0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFFWixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7cUJBQ25CO29CQUNELFlBQVksRUFBRTt3QkFDWixrQkFBa0I7d0JBQ2xCLHdCQUF3QjtxQkFDekI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgRnNIdG1sRWRpdG9yTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvaHRtbC1lZGl0b3InO1xuXG5pbXBvcnQgeyBGc0NvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29udGVudCc7XG5pbXBvcnQgeyBDb250ZW50UmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29udGVudC1yZW5kZXJlcic7XG5cblxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuXG4gICAgRnNIdG1sRWRpdG9yTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRnNDb250ZW50Q29tcG9uZW50LFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGc0NvbnRlbnRDb21wb25lbnQsXG4gICAgQ29udGVudFJlbmRlcmVyQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0NvbnRlbnRNb2R1bGUge1xufVxuIl19
|
package/esm2015/app/modules/content-layouts/components/content-layouts/content-layouts.component.js
CHANGED
@@ -29,7 +29,7 @@ export class FsContentLayoutsComponent {
|
|
29
29
|
styles: contentLayout.styles,
|
30
30
|
content: contentLayout.content,
|
31
31
|
save: (data) => {
|
32
|
-
return this._config.
|
32
|
+
return this._config.saveContentLayout(Object.assign({ id: contentLayout.id }, data));
|
33
33
|
},
|
34
34
|
},
|
35
35
|
})
|
@@ -121,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
121
121
|
type: ViewChild,
|
122
122
|
args: [FsListComponent]
|
123
123
|
}] } });
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1sYXlvdXRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9jb250ZW50LWxheW91dHMvY29tcG9uZW50cy9jb250ZW50LWxheW91dHMvY29udGVudC1sYXlvdXRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9jb250ZW50LWxheW91dHMvY29tcG9uZW50cy9jb250ZW50LWxheW91dHMvY29udGVudC1sYXlvdXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsU0FBUyxFQUNULHVCQUF1QixFQUV2QixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7QUFTcEUsTUFBTSxPQUFPLHlCQUF5QjtJQVNwQyxZQUNxQyxPQUF3QixFQUNuRCxPQUFrQjtRQURTLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ25ELFlBQU8sR0FBUCxPQUFPLENBQVc7UUFKcEIsY0FBUyxHQUFHLElBQUksT0FB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RSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQzNCLFdBQVcsRUFBRSxjQUFjO2dCQUMzQixTQUFTLEVBQUUsU0FBUztnQkFDcEIsTUFBTSxFQUFFLElBQUk7Z0JBQ1osS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ3pFLENBQUM7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOzt1SEFoSFUseUJBQXlCLGtCQVUxQixpQkFBaUI7MkdBVmhCLHlCQUF5Qix5R0FFekIsZUFBZSxnREMvQjVCLGlzQkFpQkE7NEZEWWEseUJBQXlCO2tCQU5yQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSxrQ0FBa0M7b0JBQy9DLFNBQVMsRUFBRSxDQUFDLGtDQUFrQyxDQUFDO29CQUMvQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQVdJLE1BQU07MkJBQUMsaUJBQWlCO29FQVBwQixhQUFhO3NCQURuQixTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT25EZXN0cm95LFxuICBJbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBGc0xpc3RDb21wb25lbnQsIEZzTGlzdENvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2xpc3QnO1xuaW1wb3J0IHsgSXRlbVR5cGUgfSBmcm9tICdAZmlyZXN0aXRjaC9maWx0ZXInO1xuXG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDb250ZW50TGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb250ZW50LWxheW91dCc7XG5pbXBvcnQgeyBGU19DT05URU5UX0NPTkZJRyB9IGZyb20gJy4uLy4uLy4uLy4uL2luamVjdG9ycyc7XG5pbXBvcnQgeyBGc0NvbnRlbnRDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2VkaXRvci9jb21wb25lbnRzL2VkaXRvcic7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtY29udGVudC1sYXlvdXRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtbGF5b3V0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRlbnQtbGF5b3V0cy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnNDb250ZW50TGF5b3V0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKEZzTGlzdENvbXBvbmVudClcbiAgcHVibGljIGxpc3RDb21wb25lbnQ6IEZzTGlzdENvbXBvbmVudDtcblxuICBwdWJsaWMgbGlzdENvbmZpZzogRnNMaXN0Q29uZmlnO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEZTX0NPTlRFTlRfQ09ORklHKSBwcml2YXRlIF9jb25maWc6IEZzQ29udGVudENvbmZpZyxcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0TGlzdENvbmZpZygpO1xuICB9XG5cbiAgcHVibGljIG9wZW5FZGl0b3IoY29udGVudExheW91dDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oRWRpdG9yQ29tcG9uZW50LCB7XG4gICAgICAgIG1heFdpZHRoOiBudWxsLFxuICAgICAgICBtYXhIZWlnaHQ6IG51bGwsICAgICAgXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBzdHlsZXM6IGNvbnRlbnRMYXlvdXQuc3R5bGVzLFxuICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnRMYXlvdXQuY29udGVudCxcbiAgICAgICAgICBzYXZlOiAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5zYXZlQ29udGVudFBhZ2Uoe1xuICAgICAgICAgICAgICBpZDogY29udGVudExheW91dC5pZCxcbiAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApICAgICAgICBcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50LnJlbG9hZCgpO1xuICAgICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuTGF5b3V0KGNvbnRlbnRMYXlvdXQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKENvbnRlbnRMYXlvdXRDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY29udGVudExheW91dCxcbiAgICAgIH0sXG4gICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChfY29udGVudExheW91dCkgPT4gISFfY29udGVudExheW91dCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50LnJlbG9hZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0TGlzdENvbmZpZygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RDb25maWcgPSB7XG4gICAgICBwYWdpbmc6IGZhbHNlLFxuICAgICAgZmlsdGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLktleXdvcmQsXG4gICAgICAgICAgbGFiZWw6ICdTZWFyY2gnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnQ3JlYXRlJyxcbiAgICAgICAgICBjbGljazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcGVuTGF5b3V0KHt9KTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHJvd0FjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNsaWNrOiAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5kZWxldGVDb250ZW50TGF5b3V0KGRhdGEpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVtb3ZlOiB7XG4gICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm0nLFxuICAgICAgICAgICAgdGVtcGxhdGU6ICdBcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8gZGVsZXRlIHRoaXMgcmVjb3JkPycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZW51OiB0cnVlLFxuICAgICAgICAgIGxhYmVsOiAnRGVsZXRlJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBmZXRjaDogKHF1ZXJ5KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWcubG9hZENvbnRlbnRMYXlvdXRzKHF1ZXJ5KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChjb250ZW50TGF5b3V0czogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7IGRhdGE6IGNvbnRlbnRMYXlvdXRzICB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICByZXN0b3JlOiB7XG4gICAgICAgIHF1ZXJ5OiB7IHN0YXRlOiAnZGVsZXRlZCcgfSxcbiAgICAgICAgZmlsdGVyTGFiZWw6ICdTaG93IERlbGV0ZWQnLFxuICAgICAgICBtZW51TGFiZWw6ICdSZXN0b3JlJyxcbiAgICAgICAgcmVsb2FkOiB0cnVlLFxuICAgICAgICBjbGljazogKHJvdykgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9jb25maWcuc2F2ZUNvbnRlbnRMYXlvdXQoeyBpZDogcm93LmlkLCBzdGF0ZTogJ2FjdGl2ZScgfSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxufVxuXG4iLCI8ZnMtbGlzdCBbY29uZmlnXT1cImxpc3RDb25maWdcIj5cbiAgPGZzLWxpc3QtY29sdW1uIG5hbWU9XCJkZXNpZ25cIiB3aWR0aD1cIjElXCI+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICA8YSAoY2xpY2spPVwib3BlbkVkaXRvcihyb3cpXCI+PG1hdC1pY29uPmRlc2lnbl9zZXJ2aWNlczwvbWF0LWljb24+PC9hPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG4gIDxmcy1saXN0LWNvbHVtbiBuYW1lPVwibmFtZVwiIHRpdGxlPVwiTmFtZVwiIFtzb3J0YWJsZV09XCJ0cnVlXCI+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICA8YSAoY2xpY2spPVwib3BlbkxheW91dChyb3cpXCI+e3tyb3cubmFtZX19PC9hPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG4gIDxmcy1saXN0LWNvbHVtbiBuYW1lPVwibW9kaWZ5X2RhdGVcIiB0aXRsZT1cIk1vZGlmaWVkXCIgW3NvcnRhYmxlXT1cInRydWVcIj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgIHt7cm93Lm1vZGlmeURhdGUgfCBmc0RhdGU6ICdkYXRlLXRpbWUteWVhcmxlc3MnfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuPC9mcy1saXN0PlxuIl19
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1sYXlvdXRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9jb250ZW50LWxheW91dHMvY29tcG9uZW50cy9jb250ZW50LWxheW91dHMvY29udGVudC1sYXlvdXRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9jb250ZW50LWxheW91dHMvY29tcG9uZW50cy9jb250ZW50LWxheW91dHMvY29udGVudC1sYXlvdXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsU0FBUyxFQUNULHVCQUF1QixFQUV2QixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7QUFTcEUsTUFBTSxPQUFPLHlCQUF5QjtJQVNwQyxZQUNxQyxPQUF3QixFQUNuRCxPQUFrQjtRQURTLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ25ELFlBQU8sR0FBUCxPQUFPLENBQVc7UUFKcEIsY0FBUyxHQUFHLElBQUksT0FB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QUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDM0IsV0FBVyxFQUFFLGNBQWM7Z0JBQzNCLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixNQUFNLEVBQUUsSUFBSTtnQkFDWixLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDekUsQ0FBQzthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7O3VIQWhIVSx5QkFBeUIsa0JBVTFCLGlCQUFpQjsyR0FWaEIseUJBQXlCLHlHQUV6QixlQUFlLGdEQy9CNUIsaXNCQWlCQTs0RkRZYSx5QkFBeUI7a0JBTnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsV0FBVyxFQUFFLGtDQUFrQztvQkFDL0MsU0FBUyxFQUFFLENBQUMsa0NBQWtDLENBQUM7b0JBQy9DLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7MEJBV0ksTUFBTTsyQkFBQyxpQkFBaUI7b0VBUHBCLGFBQWE7c0JBRG5CLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPbkRlc3Ryb3ksXG4gIEluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzTGlzdENvbXBvbmVudCwgRnNMaXN0Q29uZmlnIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGlzdCc7XG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XG5cbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENvbnRlbnRMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvbnRlbnQtbGF5b3V0JztcbmltcG9ydCB7IEZTX0NPTlRFTlRfQ09ORklHIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW5qZWN0b3JzJztcbmltcG9ydCB7IEZzQ29udGVudENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZWRpdG9yL2NvbXBvbmVudHMvZWRpdG9yJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1jb250ZW50LWxheW91dHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1sYXlvdXRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udGVudC1sYXlvdXRzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0NvbnRlbnRMYXlvdXRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoRnNMaXN0Q29tcG9uZW50KVxuICBwdWJsaWMgbGlzdENvbXBvbmVudDogRnNMaXN0Q29tcG9uZW50O1xuXG4gIHB1YmxpYyBsaXN0Q29uZmlnOiBGc0xpc3RDb25maWc7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRlNfQ09OVEVOVF9DT05GSUcpIHByaXZhdGUgX2NvbmZpZzogRnNDb250ZW50Q29uZmlnLFxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2luaXRMaXN0Q29uZmlnKCk7XG4gIH1cblxuICBwdWJsaWMgb3BlbkVkaXRvcihjb250ZW50TGF5b3V0OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2cub3BlbihFZGl0b3JDb21wb25lbnQsIHtcbiAgICAgICAgbWF4V2lkdGg6IG51bGwsXG4gICAgICAgIG1heEhlaWdodDogbnVsbCwgICAgICBcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHN0eWxlczogY29udGVudExheW91dC5zdHlsZXMsXG4gICAgICAgICAgY29udGVudDogY29udGVudExheW91dC5jb250ZW50LFxuICAgICAgICAgIHNhdmU6IChkYXRhKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLnNhdmVDb250ZW50TGF5b3V0KHtcbiAgICAgICAgICAgICAgaWQ6IGNvbnRlbnRMYXlvdXQuaWQsXG4gICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKSAgICAgICAgXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubGlzdENvbXBvbmVudC5yZWxvYWQoKTtcbiAgICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3BlbkxheW91dChjb250ZW50TGF5b3V0OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2cub3BlbihDb250ZW50TGF5b3V0Q29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNvbnRlbnRMYXlvdXQsXG4gICAgICB9LFxuICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoX2NvbnRlbnRMYXlvdXQpID0+ICEhX2NvbnRlbnRMYXlvdXQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubGlzdENvbXBvbmVudC5yZWxvYWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdExpc3RDb25maWcoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0Q29uZmlnID0ge1xuICAgICAgcGFnaW5nOiBmYWxzZSxcbiAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICB0eXBlOiBJdGVtVHlwZS5LZXl3b3JkLFxuICAgICAgICAgIGxhYmVsOiAnU2VhcmNoJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ0NyZWF0ZScsXG4gICAgICAgICAgY2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3BlbkxheW91dCh7fSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICByb3dBY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGljazogKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb25maWcuZGVsZXRlQ29udGVudExheW91dChkYXRhKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlbW92ZToge1xuICAgICAgICAgICAgdGl0bGU6ICdDb25maXJtJyxcbiAgICAgICAgICAgIHRlbXBsYXRlOiAnQXJlIHlvdSBzdXJlIHlvdSB3b3VsZCBsaWtlIHRvIGRlbGV0ZSB0aGlzIHJlY29yZD8nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWVudTogdHJ1ZSxcbiAgICAgICAgICBsYWJlbDogJ0RlbGV0ZScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZmV0Y2g6IChxdWVyeSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLmxvYWRDb250ZW50TGF5b3V0cyhxdWVyeSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoY29udGVudExheW91dHM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4geyBkYXRhOiBjb250ZW50TGF5b3V0cyAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICB9LFxuICAgICAgcmVzdG9yZToge1xuICAgICAgICBxdWVyeTogeyBzdGF0ZTogJ2RlbGV0ZWQnIH0sXG4gICAgICAgIGZpbHRlckxhYmVsOiAnU2hvdyBEZWxldGVkJyxcbiAgICAgICAgbWVudUxhYmVsOiAnUmVzdG9yZScsXG4gICAgICAgIHJlbG9hZDogdHJ1ZSxcbiAgICAgICAgY2xpY2s6IChyb3cpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLnNhdmVDb250ZW50TGF5b3V0KHsgaWQ6IHJvdy5pZCwgc3RhdGU6ICdhY3RpdmUnIH0pO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbn1cblxuIiwiPGZzLWxpc3QgW2NvbmZpZ109XCJsaXN0Q29uZmlnXCI+XG4gIDxmcy1saXN0LWNvbHVtbiBuYW1lPVwiZGVzaWduXCIgd2lkdGg9XCIxJVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPGEgKGNsaWNrKT1cIm9wZW5FZGl0b3Iocm93KVwiPjxtYXQtaWNvbj5kZXNpZ25fc2VydmljZXM8L21hdC1pY29uPjwvYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gbmFtZT1cIm5hbWVcIiB0aXRsZT1cIk5hbWVcIiBbc29ydGFibGVdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPGEgKGNsaWNrKT1cIm9wZW5MYXlvdXQocm93KVwiPnt7cm93Lm5hbWV9fTwvYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gbmFtZT1cIm1vZGlmeV9kYXRlXCIgdGl0bGU9XCJNb2RpZmllZFwiIFtzb3J0YWJsZV09XCJ0cnVlXCI+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICB7e3Jvdy5tb2RpZnlEYXRlIHwgZnNEYXRlOiAnZGF0ZS10aW1lLXllYXJsZXNzJ319XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbjwvZnMtbGlzdD5cbiJdfQ==
|
package/esm2015/app/modules/content-pages/components/content-pages/content-pages.component.js
CHANGED
@@ -107,7 +107,7 @@ export class FsContentPagesComponent {
|
|
107
107
|
}
|
108
108
|
}
|
109
109
|
FsContentPagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentPagesComponent, deps: [{ token: FS_CONTENT_CONFIG }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
110
|
-
FsContentPagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentPagesComponent, selector: "fs-content-pages", inputs: { htmlEditorConfig: "htmlEditorConfig" }, viewQueries: [{ propertyName: "listComponent", first: true, predicate: FsListComponent, descendants: true }], ngImport: i0, template: "<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openPage(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 /{{row.path}}
|
110
|
+
FsContentPagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentPagesComponent, selector: "fs-content-pages", inputs: { htmlEditorConfig: "htmlEditorConfig" }, viewQueries: [{ propertyName: "listComponent", first: true, predicate: FsListComponent, descendants: true }], ngImport: i0, template: "<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openPage(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", styles: [":host ::ng-deep .modified,:host ::ng-deep .name{width:1%;white-space:nowrap}:host ::ng-deep .preview-content img{display:none}.preview-content{position:relative;max-height:100px;max-width:100%;overflow:hidden;-webkit-mask-image:-webkit-gradient(linear,left 60%,left bottom,from(black),to(rgba(0,0,0,0)))}\n"], components: [{ type: i2.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }], pipes: { "fsDate": i4.FsDatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
111
111
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentPagesComponent, decorators: [{
|
112
112
|
type: Component,
|
113
113
|
args: [{
|
@@ -125,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
125
125
|
type: ViewChild,
|
126
126
|
args: [FsListComponent]
|
127
127
|
}] } });
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wYWdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZXMvY29udGVudC1wYWdlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZXMvY29udGVudC1wYWdlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFNBQVMsRUFDVCx1QkFBdUIsRUFFdkIsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7O0FBU3BFLE1BQU0sT0FBTyx1QkFBdUI7SUFZbEMsWUFDcUMsT0FBd0IsRUFDbkQsT0FBa0I7UUFEUyxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUNuRCxZQUFPLEdBQVAsT0FBTyxDQUFXO1FBTnJCLGNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU3QyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUtyQyxDQUFDO0lBRUcsUUFBUTtRQUNiLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sVUFBVSxDQUFDLFdBQWdCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNqQyxRQUFRLEVBQUUsSUFBSTtZQUNkLFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTTtnQkFDMUIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO2dCQUM1QixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxpQkFDakMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQ2YsSUFBSSxFQUNQLENBQUM7Z0JBQ0wsQ0FBQzthQUNGO1NBQ0YsQ0FBQzthQUNDLFdBQVcsRUFBRTthQUNiLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjthQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFFBQVEsQ0FBQyxXQUFnQjtRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN0QyxJQUFJLEVBQUU7Z0JBQ0osV0FBVzthQUNaO1NBQ0YsQ0FBQzthQUNDLFdBQVcsRUFBRTthQUNiLElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFDeEMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsU0FBUztvQkFDZixJQUFJLEVBQUUsUUFBUSxDQUFDLE9BQU87b0JBQ3RCLEtBQUssRUFBRSxRQUFRO2lCQUNoQjthQUNGO1lBQ0QsT0FBTyxFQUFFO2dCQUNQO29CQUNFLEtBQUssRUFBRSxRQUFRO29CQUNmLEtBQUssRUFBRSxHQUFHLEVBQUU7d0JBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDcEIsQ0FBQztpQkFDRjthQUNGO1lBQ0QsVUFBVSxFQUFFO2dCQUNWO29CQUNFLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDOUMsQ0FBQztvQkFDRCxNQUFNLEVBQUU7d0JBQ04sS0FBSyxFQUFFLFNBQVM7d0JBQ2hCLFFBQVEsRUFBRSxvREFBb0Q7cUJBQy9EO29CQUNELElBQUksRUFBRSxJQUFJO29CQUNWLEtBQUssRUFBRSxRQUFRO2lCQUNoQjthQUNGO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztxQkFDeEMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO29CQUNwQixPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEUsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUNOLENBQUM7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDM0IsV0FBVyxFQUFFLGNBQWM7Z0JBQzNCLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixNQUFNLEVBQUUsSUFBSTtnQkFDWixLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZFLENBQUM7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOztxSEFsSFUsdUJBQXVCLGtCQWF4QixpQkFBaUI7eUdBYmhCLHVCQUF1Qix5SkFJdkIsZUFBZSxnRENyQzVCLCtpQ0EyQkE7NEZETWEsdUJBQXVCO2tCQU5uQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO29CQUM3QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQWNJLE1BQU07MkJBQUMsaUJBQWlCO29FQVhYLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFHQyxhQUFhO3NCQURuQixTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT25EZXN0cm95LFxuICBJbnB1dCxcbiAgSW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgRnNMaXN0Q29tcG9uZW50LCBGc0xpc3RDb25maWcgfSBmcm9tICdAZmlyZXN0aXRjaC9saXN0JztcbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcbmltcG9ydCB7IGluZGV4IH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcbmltcG9ydCB7IEZzSHRtbEVkaXRvckNvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2h0bWwtZWRpdG9yJztcblxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUGFnZVR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3RzJztcbmltcG9ydCB7IEZTX0NPTlRFTlRfQ09ORklHIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW5qZWN0b3JzJztcbmltcG9ydCB7IEZzQ29udGVudENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29udGVudFBhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jb250ZW50LXBhZ2UvY29udGVudC1wYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lZGl0b3IvY29tcG9uZW50cy9lZGl0b3InO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWNvbnRlbnQtcGFnZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1wYWdlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRlbnQtcGFnZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzQ29udGVudFBhZ2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBodG1sRWRpdG9yQ29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWc7XG5cbiAgQFZpZXdDaGlsZChGc0xpc3RDb21wb25lbnQpXG4gIHB1YmxpYyBsaXN0Q29tcG9uZW50OiBGc0xpc3RDb21wb25lbnQ7XG5cbiAgcHVibGljIGxpc3RDb25maWc6IEZzTGlzdENvbmZpZztcbiAgcHVibGljIHBhZ2VUeXBlcyA9IGluZGV4KFBhZ2VUeXBlcywgJ3ZhbHVlJywgJ25hbWUnKTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChGU19DT05URU5UX0NPTkZJRykgcHJpdmF0ZSBfY29uZmlnOiBGc0NvbnRlbnRDb25maWcsXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5faW5pdExpc3RDb25maWcoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRWRpdG9yKGNvbnRlbnRQYWdlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2cub3BlbihFZGl0b3JDb21wb25lbnQsIHtcbiAgICAgIG1heFdpZHRoOiBudWxsLFxuICAgICAgbWF4SGVpZ2h0OiBudWxsLFxuICAgICAgZGF0YToge1xuICAgICAgICBzdHlsZXM6IGNvbnRlbnRQYWdlLnN0eWxlcyxcbiAgICAgICAgY29udGVudDogY29udGVudFBhZ2UuY29udGVudCxcbiAgICAgICAgc2F2ZTogKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLnNhdmVDb250ZW50UGFnZSh7XG4gICAgICAgICAgICBpZDogY29udGVudFBhZ2UuaWQsXG4gICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAgICAgXG4gICAgICB9LFxuICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmxpc3RDb21wb25lbnQucmVsb2FkKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3BlblBhZ2UoY29udGVudFBhZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKENvbnRlbnRQYWdlQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNvbnRlbnRQYWdlLFxuICAgICAgfSxcbiAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKF9jb250ZW50UGFnZSkgPT4gISFfY29udGVudFBhZ2UpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubGlzdENvbXBvbmVudC5yZWxvYWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdExpc3RDb25maWcoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0Q29uZmlnID0ge1xuICAgICAgZmlsdGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLktleXdvcmQsXG4gICAgICAgICAgbGFiZWw6ICdTZWFyY2gnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnQ3JlYXRlJyxcbiAgICAgICAgICBjbGljazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcGVuUGFnZSh7fSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICByb3dBY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGljazogKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb25maWcuZGVsZXRlQ29udGVudFBhZ2UoZGF0YSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZW1vdmU6IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybScsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBkZWxldGUgdGhpcyByZWNvcmQ/JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lbnU6IHRydWUsXG4gICAgICAgICAgbGFiZWw6ICdEZWxldGUnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGZldGNoOiAocXVlcnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5sb2FkQ29udGVudFBhZ2VzKHF1ZXJ5KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7IGRhdGE6IHJlc3BvbnNlLmNvbnRlbnRQYWdlcywgcGFnaW5nOiByZXNwb25zZS5wYWdpbmcgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICB9LFxuICAgICAgcmVzdG9yZToge1xuICAgICAgICBxdWVyeTogeyBzdGF0ZTogJ2RlbGV0ZWQnIH0sXG4gICAgICAgIGZpbHRlckxhYmVsOiAnU2hvdyBEZWxldGVkJyxcbiAgICAgICAgbWVudUxhYmVsOiAnUmVzdG9yZScsXG4gICAgICAgIHJlbG9hZDogdHJ1ZSxcbiAgICAgICAgY2xpY2s6IChyb3cpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLnNhdmVDb250ZW50UGFnZSh7IGlkOiByb3cuaWQsIHN0YXRlOiAnYWN0aXZlJyB9KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG59XG5cblxuIiwiPGZzLWxpc3QgW2NvbmZpZ109XCJsaXN0Q29uZmlnXCI+XG4gIDxmcy1saXN0LWNvbHVtbiBuYW1lPVwiZGVzaWduXCIgd2lkdGg9XCIxJVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPGEgKGNsaWNrKT1cIm9wZW5FZGl0b3Iocm93KVwiPjxtYXQtaWNvbj5kZXNpZ25fc2VydmljZXM8L21hdC1pY29uPjwvYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gbmFtZT1cIm5hbWVcIiB0aXRsZT1cIk5hbWVcIiBbc29ydGFibGVdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPGEgKGNsaWNrKT1cIm9wZW5QYWdlKHJvdylcIj57e3Jvdy5uYW1lfX08L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbiAgPGZzLWxpc3QtY29sdW1uIG5hbWU9XCJwYXRoXCIgdGl0bGU9XCJQYXRoXCIgW3NvcnRhYmxlXT1cInRydWVcIj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgIC97e3Jvdy5wYXRofX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gbmFtZT1cInR5cGVcIiB0aXRsZT1cIlR5cGVcIiBbc29ydGFibGVdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAge3twYWdlVHlwZXNbcm93LnR5cGVdfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gbmFtZT1cIm1vZGlmeV9kYXRlXCIgdGl0bGU9XCJNb2RpZmllZFwiIFtzb3J0YWJsZV09XCJ0cnVlXCI+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICB7e3Jvdy5tb2RpZnlEYXRlIHwgZnNEYXRlOiAnZGF0ZS10aW1lLXllYXJsZXNzJ319XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbjwvZnMtbGlzdD5cbiJdfQ==
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wYWdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZXMvY29udGVudC1wYWdlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZXMvY29udGVudC1wYWdlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFNBQVMsRUFDVCx1QkFBdUIsRUFFdkIsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7O0FBU3BFLE1BQU0sT0FBTyx1QkFBdUI7SUFZbEMsWUFDcUMsT0FBd0IsRUFDbkQsT0FBa0I7UUFEUyxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUNuRCxZQUFPLEdBQVAsT0FBTyxDQUFXO1FBTnJCLGNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU3QyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUtyQyxDQUFDO0lBRUcsUUFBUTtRQUNiLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sVUFBVSxDQUFDLFdBQWdCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNqQyxRQUFRLEVBQUUsSUFBSTtZQUNkLFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTTtnQkFDMUIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO2dCQUM1QixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxpQkFDakMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQ2YsSUFBSSxFQUNQLENBQUM7Z0JBQ0wsQ0FBQzthQUNGO1NBQ0YsQ0FBQzthQUNDLFdBQVcsRUFBRTthQUNiLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjthQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFFBQVEsQ0FBQyxXQUFnQjtRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN0QyxJQUFJLEVBQUU7Z0JBQ0osV0FBVzthQUNaO1NBQ0YsQ0FBQzthQUNDLFdBQVcsRUFBRTthQUNiLElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFDeEMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsU0FBUztvQkFDZixJQUFJLEVBQUUsUUFBUSxDQUFDLE9BQU87b0JBQ3RCLEtBQUssRUFBRSxRQUFRO2lCQUNoQjthQUNGO1lBQ0QsT0FBTyxFQUFFO2dCQUNQO29CQUNFLEtBQUssRUFBRSxRQUFRO29CQUNmLEtBQUssRUFBRSxHQUFHLEVBQUU7d0JBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDcEIsQ0FBQztpQkFDRjthQUNGO1lBQ0QsVUFBVSxFQUFFO2dCQUNWO29CQUNFLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDOUMsQ0FBQztvQkFDRCxNQUFNLEVBQUU7d0JBQ04sS0FBSyxFQUFFLFNBQVM7d0JBQ2hCLFFBQVEsRUFBRSxvREFBb0Q7cUJBQy9EO29CQUNELElBQUksRUFBRSxJQUFJO29CQUNWLEtBQUssRUFBRSxRQUFRO2lCQUNoQjthQUNGO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztxQkFDeEMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO29CQUNwQixPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEUsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUNOLENBQUM7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDM0IsV0FBVyxFQUFFLGNBQWM7Z0JBQzNCLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixNQUFNLEVBQUUsSUFBSTtnQkFDWixLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZFLENBQUM7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOztxSEFsSFUsdUJBQXVCLGtCQWF4QixpQkFBaUI7eUdBYmhCLHVCQUF1Qix5SkFJdkIsZUFBZSxnRENyQzVCLGttQ0EyQkE7NEZETWEsdUJBQXVCO2tCQU5uQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO29CQUM3QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQWNJLE1BQU07MkJBQUMsaUJBQWlCO29FQVhYLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFHQyxhQUFhO3NCQURuQixTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT25EZXN0cm95LFxuICBJbnB1dCxcbiAgSW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgRnNMaXN0Q29tcG9uZW50LCBGc0xpc3RDb25maWcgfSBmcm9tICdAZmlyZXN0aXRjaC9saXN0JztcbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcbmltcG9ydCB7IGluZGV4IH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcbmltcG9ydCB7IEZzSHRtbEVkaXRvckNvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2h0bWwtZWRpdG9yJztcblxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUGFnZVR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3RzJztcbmltcG9ydCB7IEZTX0NPTlRFTlRfQ09ORklHIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW5qZWN0b3JzJztcbmltcG9ydCB7IEZzQ29udGVudENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29udGVudFBhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jb250ZW50LXBhZ2UvY29udGVudC1wYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lZGl0b3IvY29tcG9uZW50cy9lZGl0b3InO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWNvbnRlbnQtcGFnZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1wYWdlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRlbnQtcGFnZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzQ29udGVudFBhZ2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBodG1sRWRpdG9yQ29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWc7XG5cbiAgQFZpZXdDaGlsZChGc0xpc3RDb21wb25lbnQpXG4gIHB1YmxpYyBsaXN0Q29tcG9uZW50OiBGc0xpc3RDb21wb25lbnQ7XG5cbiAgcHVibGljIGxpc3RDb25maWc6IEZzTGlzdENvbmZpZztcbiAgcHVibGljIHBhZ2VUeXBlcyA9IGluZGV4KFBhZ2VUeXBlcywgJ3ZhbHVlJywgJ25hbWUnKTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChGU19DT05URU5UX0NPTkZJRykgcHJpdmF0ZSBfY29uZmlnOiBGc0NvbnRlbnRDb25maWcsXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5faW5pdExpc3RDb25maWcoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRWRpdG9yKGNvbnRlbnRQYWdlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2cub3BlbihFZGl0b3JDb21wb25lbnQsIHtcbiAgICAgIG1heFdpZHRoOiBudWxsLFxuICAgICAgbWF4SGVpZ2h0OiBudWxsLFxuICAgICAgZGF0YToge1xuICAgICAgICBzdHlsZXM6IGNvbnRlbnRQYWdlLnN0eWxlcyxcbiAgICAgICAgY29udGVudDogY29udGVudFBhZ2UuY29udGVudCxcbiAgICAgICAgc2F2ZTogKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLnNhdmVDb250ZW50UGFnZSh7XG4gICAgICAgICAgICBpZDogY29udGVudFBhZ2UuaWQsXG4gICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAgICAgXG4gICAgICB9LFxuICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmxpc3RDb21wb25lbnQucmVsb2FkKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3BlblBhZ2UoY29udGVudFBhZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKENvbnRlbnRQYWdlQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNvbnRlbnRQYWdlLFxuICAgICAgfSxcbiAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKF9jb250ZW50UGFnZSkgPT4gISFfY29udGVudFBhZ2UpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubGlzdENvbXBvbmVudC5yZWxvYWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdExpc3RDb25maWcoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0Q29uZmlnID0ge1xuICAgICAgZmlsdGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLktleXdvcmQsXG4gICAgICAgICAgbGFiZWw6ICdTZWFyY2gnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnQ3JlYXRlJyxcbiAgICAgICAgICBjbGljazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcGVuUGFnZSh7fSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICByb3dBY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGljazogKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb25maWcuZGVsZXRlQ29udGVudFBhZ2UoZGF0YSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZW1vdmU6IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybScsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBkZWxldGUgdGhpcyByZWNvcmQ/JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lbnU6IHRydWUsXG4gICAgICAgICAgbGFiZWw6ICdEZWxldGUnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGZldGNoOiAocXVlcnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5sb2FkQ29udGVudFBhZ2VzKHF1ZXJ5KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7IGRhdGE6IHJlc3BvbnNlLmNvbnRlbnRQYWdlcywgcGFnaW5nOiByZXNwb25zZS5wYWdpbmcgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICB9LFxuICAgICAgcmVzdG9yZToge1xuICAgICAgICBxdWVyeTogeyBzdGF0ZTogJ2RlbGV0ZWQnIH0sXG4gICAgICAgIGZpbHRlckxhYmVsOiAnU2hvdyBEZWxldGVkJyxcbiAgICAgICAgbWVudUxhYmVsOiAnUmVzdG9yZScsXG4gICAgICAgIHJlbG9hZDogdHJ1ZSxcbiAgICAgICAgY2xpY2s6IChyb3cpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLnNhdmVDb250ZW50UGFnZSh7IGlkOiByb3cuaWQsIHN0YXRlOiAnYWN0aXZlJyB9KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG59XG5cblxuIiwiPGZzLWxpc3QgW2NvbmZpZ109XCJsaXN0Q29uZmlnXCI+XG4gIDxmcy1saXN0LWNvbHVtbiBuYW1lPVwiZGVzaWduXCIgd2lkdGg9XCIxJVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPGEgKGNsaWNrKT1cIm9wZW5FZGl0b3Iocm93KVwiPjxtYXQtaWNvbj5kZXNpZ25fc2VydmljZXM8L21hdC1pY29uPjwvYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gbmFtZT1cIm5hbWVcIiB0aXRsZT1cIk5hbWVcIiBbc29ydGFibGVdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPGEgKGNsaWNrKT1cIm9wZW5QYWdlKHJvdylcIj57e3Jvdy5uYW1lfX08L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbiAgPGZzLWxpc3QtY29sdW1uIG5hbWU9XCJwYXRoXCIgdGl0bGU9XCJQYXRoXCIgW3NvcnRhYmxlXT1cInRydWVcIj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgIDxhIFtocmVmXT1cIicvJyArIHJvdy5wYXRoXCIgdGFyZ2V0PVwiX2JsYWNrXCI+L3t7cm93LnBhdGh9fTwvYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gbmFtZT1cInR5cGVcIiB0aXRsZT1cIlR5cGVcIiBbc29ydGFibGVdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAge3twYWdlVHlwZXNbcm93LnR5cGVdfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gbmFtZT1cIm1vZGlmeV9kYXRlXCIgdGl0bGU9XCJNb2RpZmllZFwiIFtzb3J0YWJsZV09XCJ0cnVlXCI+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICB7e3Jvdy5tb2RpZnlEYXRlIHwgZnNEYXRlOiAnZGF0ZS10aW1lLXllYXJsZXNzJ319XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbjwvZnMtbGlzdD5cbiJdfQ==
|
@@ -268,7 +268,7 @@ class FsContentPagesComponent {
|
|
268
268
|
}
|
269
269
|
}
|
270
270
|
FsContentPagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentPagesComponent, deps: [{ token: FS_CONTENT_CONFIG }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
271
|
-
FsContentPagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentPagesComponent, selector: "fs-content-pages", inputs: { htmlEditorConfig: "htmlEditorConfig" }, viewQueries: [{ propertyName: "listComponent", first: true, predicate: FsListComponent, descendants: true }], ngImport: i0, template: "<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openPage(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 /{{row.path}}
|
271
|
+
FsContentPagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentPagesComponent, selector: "fs-content-pages", inputs: { htmlEditorConfig: "htmlEditorConfig" }, viewQueries: [{ propertyName: "listComponent", first: true, predicate: FsListComponent, descendants: true }], ngImport: i0, template: "<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openPage(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", styles: [":host ::ng-deep .modified,:host ::ng-deep .name{width:1%;white-space:nowrap}:host ::ng-deep .preview-content img{display:none}.preview-content{position:relative;max-height:100px;max-width:100%;overflow:hidden;-webkit-mask-image:-webkit-gradient(linear,left 60%,left bottom,from(black),to(rgba(0,0,0,0)))}\n"], components: [{ type: i2$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }], pipes: { "fsDate": i4$2.FsDatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
272
272
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentPagesComponent, decorators: [{
|
273
273
|
type: Component,
|
274
274
|
args: [{
|
@@ -504,7 +504,7 @@ class FsContentLayoutsComponent {
|
|
504
504
|
styles: contentLayout.styles,
|
505
505
|
content: contentLayout.content,
|
506
506
|
save: (data) => {
|
507
|
-
return this._config.
|
507
|
+
return this._config.saveContentLayout(Object.assign({ id: contentLayout.id }, data));
|
508
508
|
},
|
509
509
|
},
|
510
510
|
})
|
@@ -766,7 +766,16 @@ class FsContentComponent {
|
|
766
766
|
const path = window.location.pathname;
|
767
767
|
this._config.loadContent(path)
|
768
768
|
.subscribe((contentPage) => {
|
769
|
-
|
769
|
+
if (contentPage.title) {
|
770
|
+
this._title.setTitle(contentPage.title);
|
771
|
+
let ogTitleEl = document.querySelector('head meta[property="og:title"]');
|
772
|
+
if (!ogTitleEl) {
|
773
|
+
ogTitleEl = document.createElement('meta');
|
774
|
+
ogTitleEl.setAttribute('property', 'og:title');
|
775
|
+
document.getElementsByTagName('head')[0].appendChild(ogTitleEl);
|
776
|
+
}
|
777
|
+
ogTitleEl.setAttribute('content', contentPage.title);
|
778
|
+
}
|
770
779
|
this.contentPage = contentPage;
|
771
780
|
this._cdRef.markForCheck();
|
772
781
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"firestitch-content.js","sources":["../../src/app/enums/page-type.enum.ts","../../src/app/consts/page-types.const.ts","../../src/app/injectors/content-config.injector.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/editor/components/editor/editor.component.ts","../../src/app/modules/editor/components/editor/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/editor/fs-content-editor.module.ts","../../src/app/modules/content-pages/fs-content-pages.module.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-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/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 PageType {\n StandardPage = 'standardPage',\n BlogPost = 'blogPost',\n HomePage = 'homePage',\n NotFoundPage = 'notFoundPage',\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 { 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 { PageTypes } from '../../../../consts';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\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._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 fxLayout=\"column\">\n <mat-form-field>\n <mat-select\n [(ngModel)]=\"contentPage.type\"\n name=\"type\"\n required\n placeholder=\"Type\">\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>\n <input\n matInput\n [(ngModel)]=\"contentPage.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.path\"\n name=\"path\"\n placeholder=\"Path\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.title\"\n name=\"title\"\n placeholder=\"Title\">\n </mat-form-field>\n <mat-form-field *ngIf=\"contentLayouts\">\n <mat-select\n [(ngModel)]=\"contentPage.contentLayoutId\"\n required\n name=\"contentLayoutId\"\n placeholder=\"Layout\">\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 </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 Component,\n Inject,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ViewChildren,\n QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\n\n@Component({\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public styles = null;\n public content = null;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EditorComponent>,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this._dialogRef.updateSize('100%','100%');\n this.content = this._data.content;\n this.styles = this._data.styles;\n }\n\n public editorToggleChange(event: MatButtonToggleChange): void {\n this.editors[event.value] = !this.editors[event.value];\n setTimeout(() => {\n this.textEditors.forEach((textEditor) => {\n textEditor.updateLayout();\n });\n }, 100);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._data.save({ content: this.content, styles: this.styles })\n .pipe(\n tap(() => {\n this._message.success('Saved Changes');\n }),\n );\n };\n\n}\n","<form fsForm [submit]=\"save\">\n <fs-dialog>\n <h1 mat-dialog-title>Design</h1>\n <div mat-dialog-content>\n <div class=\"container\">\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"content\" [checked]=\"editors.content\" (change)=\"editorToggleChange($event)\">Content</mat-button-toggle>\n <mat-button-toggle value=\"styles\" [checked]=\"editors.styles\" (change)=\"editorToggleChange($event)\">Styles</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n <div class=\"editors\">\n <div class=\"editor\" *ngIf=\"editors.content\">\n <fs-label>Content</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"content\" \n name=\"content\"\n [config]=\"{ tabSize: 2, language: 'html' }\">\n </fs-text-editor> \n </div>\n </div>\n <div class=\"editor\" *ngIf=\"editors.styles\">\n <fs-label>Styles</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"styles\" \n name=\"styles\"\n [config]=\"{ tabSize: 2, language: 'scss' }\">\n </fs-text-editor> \n </div>\n </div> \n </div>\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 Component,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n OnDestroy,\n Input,\n Inject,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\nimport { index } from '@firestitch/common';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { PageTypes } from '../../../../consts';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { ContentPageComponent } from '../content-page/content-page.component';\nimport { EditorComponent } from '../../../editor/components/editor';\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(EditorComponent, {\n maxWidth: null,\n maxHeight: null,\n data: {\n styles: contentPage.styles,\n content: contentPage.content,\n save: (data) => {\n return this._config.saveContentPage({\n id: contentPage.id,\n ...data,\n });\n }, \n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public openPage(contentPage: any): void {\n this._dialog.open(ContentPageComponent, {\n data: {\n contentPage,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentPage) => !!_contentPage),\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 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.openPage({});\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\n","<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openPage(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 /{{row.path}}\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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\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 FsLabelModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n ],\n exports: [\n EditorComponent,\n ],\n declarations: [\n EditorComponent,\n ],\n})\nexport class FsContentEditorModule {\n }\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\n\nimport { ContentPageComponent } from './components/content-page';\nimport { FsContentPagesComponent } from './components/content-pages';\nimport { FsContentEditorModule } from '../editor';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n FlexLayoutModule,\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 FsContentPagesComponent,\n ],\n declarations: [\n FsContentPagesComponent,\n ContentPageComponent,\n ],\n})\nexport class FsContentPagesModule {\n static forRoot(): ModuleWithProviders<FsContentPagesModule> {\n return {\n ngModule: FsContentPagesModule,\n };\n }\n}\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 fxLayout=\"column\">\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.tag\"\n name=\"tag\"\n placeholder=\"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 Component,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n OnDestroy,\n Inject,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\n\nimport { map, takeUntil, filter } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { ContentLayoutComponent } from '../../components/content-layout';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\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(EditorComponent, {\n maxWidth: null,\n maxHeight: null, \n data: {\n styles: contentLayout.styles,\n content: contentLayout.content,\n save: (data) => {\n return this._config.saveContentPage({\n id: contentLayout.id,\n ...data,\n });\n },\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): void {\n this._dialog.open(ContentLayoutComponent, {\n data: {\n contentLayout,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentLayout) => !!_contentLayout),\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 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 },\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=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openLayout(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 { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentLayoutsComponent } from './components/content-layouts';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsContentEditorModule } from '../editor';\nimport { ContentLayoutComponent } from './components/content-layout';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n FlexLayoutModule,\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 ],\n})\nexport class FsContentLayoutsModule {\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n OnDestroy,\n ElementRef,\n Input,\n AfterViewChecked,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\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 {\n\n @Input() public set contentPage(contentPage) {\n if(contentPage) {\n this.content = this._sanitizer.bypassSecurityTrustHtml(contentPage.content);\n this.styles = contentPage.styles;\n }\n }\n\n public content;\n public styles;\n public _destroy$ = new Subject();\n\n constructor(\n private _sanitizer: DomSanitizer,\n private _router: Router,\n private _el: ElementRef,\n ) {}\n\n public ngAfterViewChecked(): void {\n let el = document.querySelector('#contentPageStyles');\n if(!el) {\n el = document.createElement('style');\n el.setAttribute('id','contentPageStyles');\n document.getElementsByTagName('head')[0].appendChild(el);\n }\n\n el.innerHTML = this.styles;\n\n this.registerHrefs();\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","import {\n Component,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnInit,\n OnDestroy,\n ElementRef,\n Inject,\n} from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\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 ) {}\n\n public ngOnInit(): void {\n this.load();\n\n this._router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.load();\n });\n }\n\n public load(): void {\n const path = (window as any).location.pathname;\n this._config.loadContent(path)\n .subscribe((contentPage) => {\n this._title.setTitle(contentPage.title);\n this.contentPage = contentPage;\n this._cdRef.markForCheck();\n });\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}\n","<fs-content-renderer *ngIf=\"contentPage\" [contentPage]=\"contentPage\"></fs-content-renderer>","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":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"firestitch-content.js","sources":["../../src/app/enums/page-type.enum.ts","../../src/app/consts/page-types.const.ts","../../src/app/injectors/content-config.injector.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/editor/components/editor/editor.component.ts","../../src/app/modules/editor/components/editor/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/editor/fs-content-editor.module.ts","../../src/app/modules/content-pages/fs-content-pages.module.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-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/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 PageType {\n StandardPage = 'standardPage',\n BlogPost = 'blogPost',\n HomePage = 'homePage',\n NotFoundPage = 'notFoundPage',\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 { 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 { PageTypes } from '../../../../consts';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\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._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 fxLayout=\"column\">\n <mat-form-field>\n <mat-select\n [(ngModel)]=\"contentPage.type\"\n name=\"type\"\n required\n placeholder=\"Type\">\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>\n <input\n matInput\n [(ngModel)]=\"contentPage.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.path\"\n name=\"path\"\n placeholder=\"Path\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.title\"\n name=\"title\"\n placeholder=\"Title\">\n </mat-form-field>\n <mat-form-field *ngIf=\"contentLayouts\">\n <mat-select\n [(ngModel)]=\"contentPage.contentLayoutId\"\n required\n name=\"contentLayoutId\"\n placeholder=\"Layout\">\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 </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 Component,\n Inject,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ViewChildren,\n QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\n\n@Component({\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public styles = null;\n public content = null;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EditorComponent>,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this._dialogRef.updateSize('100%','100%');\n this.content = this._data.content;\n this.styles = this._data.styles;\n }\n\n public editorToggleChange(event: MatButtonToggleChange): void {\n this.editors[event.value] = !this.editors[event.value];\n setTimeout(() => {\n this.textEditors.forEach((textEditor) => {\n textEditor.updateLayout();\n });\n }, 100);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._data.save({ content: this.content, styles: this.styles })\n .pipe(\n tap(() => {\n this._message.success('Saved Changes');\n }),\n );\n };\n\n}\n","<form fsForm [submit]=\"save\">\n <fs-dialog>\n <h1 mat-dialog-title>Design</h1>\n <div mat-dialog-content>\n <div class=\"container\">\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"content\" [checked]=\"editors.content\" (change)=\"editorToggleChange($event)\">Content</mat-button-toggle>\n <mat-button-toggle value=\"styles\" [checked]=\"editors.styles\" (change)=\"editorToggleChange($event)\">Styles</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n <div class=\"editors\">\n <div class=\"editor\" *ngIf=\"editors.content\">\n <fs-label>Content</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"content\" \n name=\"content\"\n [config]=\"{ tabSize: 2, language: 'html' }\">\n </fs-text-editor> \n </div>\n </div>\n <div class=\"editor\" *ngIf=\"editors.styles\">\n <fs-label>Styles</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"styles\" \n name=\"styles\"\n [config]=\"{ tabSize: 2, language: 'scss' }\">\n </fs-text-editor> \n </div>\n </div> \n </div>\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 Component,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n OnDestroy,\n Input,\n Inject,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\nimport { index } from '@firestitch/common';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { PageTypes } from '../../../../consts';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { ContentPageComponent } from '../content-page/content-page.component';\nimport { EditorComponent } from '../../../editor/components/editor';\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(EditorComponent, {\n maxWidth: null,\n maxHeight: null,\n data: {\n styles: contentPage.styles,\n content: contentPage.content,\n save: (data) => {\n return this._config.saveContentPage({\n id: contentPage.id,\n ...data,\n });\n }, \n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public openPage(contentPage: any): void {\n this._dialog.open(ContentPageComponent, {\n data: {\n contentPage,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentPage) => !!_contentPage),\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 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.openPage({});\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\n","<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openPage(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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\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 FsLabelModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n ],\n exports: [\n EditorComponent,\n ],\n declarations: [\n EditorComponent,\n ],\n})\nexport class FsContentEditorModule {\n }\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\n\nimport { ContentPageComponent } from './components/content-page';\nimport { FsContentPagesComponent } from './components/content-pages';\nimport { FsContentEditorModule } from '../editor';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n FlexLayoutModule,\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 FsContentPagesComponent,\n ],\n declarations: [\n FsContentPagesComponent,\n ContentPageComponent,\n ],\n})\nexport class FsContentPagesModule {\n static forRoot(): ModuleWithProviders<FsContentPagesModule> {\n return {\n ngModule: FsContentPagesModule,\n };\n }\n}\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 fxLayout=\"column\">\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.tag\"\n name=\"tag\"\n placeholder=\"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 Component,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n OnDestroy,\n Inject,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\n\nimport { map, takeUntil, filter } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { ContentLayoutComponent } from '../../components/content-layout';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\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(EditorComponent, {\n maxWidth: null,\n maxHeight: null, \n data: {\n styles: contentLayout.styles,\n content: contentLayout.content,\n save: (data) => {\n return this._config.saveContentLayout({\n id: contentLayout.id,\n ...data,\n });\n },\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): void {\n this._dialog.open(ContentLayoutComponent, {\n data: {\n contentLayout,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentLayout) => !!_contentLayout),\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 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 },\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=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openLayout(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 { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentLayoutsComponent } from './components/content-layouts';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsContentEditorModule } from '../editor';\nimport { ContentLayoutComponent } from './components/content-layout';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n FlexLayoutModule,\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 ],\n})\nexport class FsContentLayoutsModule {\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n OnDestroy,\n ElementRef,\n Input,\n AfterViewChecked,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\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 {\n\n @Input() public set contentPage(contentPage) {\n if(contentPage) {\n this.content = this._sanitizer.bypassSecurityTrustHtml(contentPage.content);\n this.styles = contentPage.styles;\n }\n }\n\n public content;\n public styles;\n public _destroy$ = new Subject();\n\n constructor(\n private _sanitizer: DomSanitizer,\n private _router: Router,\n private _el: ElementRef,\n ) {}\n\n public ngAfterViewChecked(): void {\n let el = document.querySelector('#contentPageStyles');\n if(!el) {\n el = document.createElement('style');\n el.setAttribute('id','contentPageStyles');\n document.getElementsByTagName('head')[0].appendChild(el);\n }\n\n el.innerHTML = this.styles;\n\n this.registerHrefs();\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","import {\n Component,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnInit,\n OnDestroy,\n ElementRef,\n Inject,\n} from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\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 ) {}\n\n public ngOnInit(): void {\n this.load();\n\n this._router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.load();\n });\n }\n\n public load(): void {\n const path = (window as any).location.pathname;\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 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}\n","<fs-content-renderer *ngIf=\"contentPage\" [contentPage]=\"contentPage\"></fs-content-renderer>","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":[],"mappings":"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"}
|
package/package.json
CHANGED
package/esm2015/app/modules/content/components/content- renderer/content-renderer.component.js
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
import { Component, ChangeDetectionStrategy, ElementRef, Input, } from '@angular/core';
|
2
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
3
|
-
import { Router } from '@angular/router';
|
4
|
-
import { Subject } from 'rxjs';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
import * as i1 from "@angular/platform-browser";
|
7
|
-
import * as i2 from "@angular/router";
|
8
|
-
import * as i3 from "@angular/common";
|
9
|
-
export class ContentRendererComponent {
|
10
|
-
constructor(_sanitizer, _router, _el) {
|
11
|
-
this._sanitizer = _sanitizer;
|
12
|
-
this._router = _router;
|
13
|
-
this._el = _el;
|
14
|
-
this._destroy$ = new Subject();
|
15
|
-
}
|
16
|
-
set contentPage(contentPage) {
|
17
|
-
if (contentPage) {
|
18
|
-
this.content = this._sanitizer.bypassSecurityTrustHtml(contentPage.content);
|
19
|
-
this.styles = contentPage.styles;
|
20
|
-
}
|
21
|
-
}
|
22
|
-
ngAfterViewChecked() {
|
23
|
-
let el = document.querySelector('#contentPageStyles');
|
24
|
-
if (!el) {
|
25
|
-
el = document.createElement('style');
|
26
|
-
el.setAttribute('id', 'contentPageStyles');
|
27
|
-
document.getElementsByTagName('head')[0].appendChild(el);
|
28
|
-
}
|
29
|
-
el.innerHTML = this.styles;
|
30
|
-
this.registerHrefs();
|
31
|
-
}
|
32
|
-
registerHrefs() {
|
33
|
-
Array.from(this.el.querySelectorAll('a[href]'))
|
34
|
-
.filter((el) => {
|
35
|
-
return el.getAttribute('href').match(/^\//);
|
36
|
-
})
|
37
|
-
.forEach((el) => {
|
38
|
-
el.addEventListener('click', (event) => {
|
39
|
-
if (!event.shiftKey && !event.ctrlKey) {
|
40
|
-
event.preventDefault();
|
41
|
-
const href = el.getAttribute('href');
|
42
|
-
this._router.navigateByUrl(href);
|
43
|
-
}
|
44
|
-
});
|
45
|
-
});
|
46
|
-
}
|
47
|
-
get el() {
|
48
|
-
return this._el.nativeElement;
|
49
|
-
}
|
50
|
-
ngOnDestroy() {
|
51
|
-
this.removeStyles();
|
52
|
-
this._destroy$.next();
|
53
|
-
this._destroy$.complete();
|
54
|
-
}
|
55
|
-
removeStyles() {
|
56
|
-
const el = document.querySelector('#contentPageStyles');
|
57
|
-
if (el) {
|
58
|
-
el.remove();
|
59
|
-
}
|
60
|
-
}
|
61
|
-
}
|
62
|
-
ContentRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContentRendererComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
63
|
-
ContentRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ContentRendererComponent, selector: "fs-content-renderer", inputs: { contentPage: "contentPage" }, ngImport: i0, template: "<div *ngIf=\"content\" [innerHTML]=\"content\"></div>\n", styles: [""], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
64
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContentRendererComponent, decorators: [{
|
65
|
-
type: Component,
|
66
|
-
args: [{
|
67
|
-
selector: 'fs-content-renderer',
|
68
|
-
templateUrl: './content-renderer.component.html',
|
69
|
-
styleUrls: ['./content-renderer.component.scss'],
|
70
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
71
|
-
}]
|
72
|
-
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.Router }, { type: i0.ElementRef }]; }, propDecorators: { contentPage: [{
|
73
|
-
type: Input
|
74
|
-
}] } });
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC9jb21wb25lbnRzL2NvbnRlbnQtIHJlbmRlcmVyL2NvbnRlbnQtcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2NvbnRlbnQvY29tcG9uZW50cy9jb250ZW50LSByZW5kZXJlci9jb250ZW50LXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBRXZCLFVBQVUsRUFDVixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQVMvQixNQUFNLE9BQU8sd0JBQXdCO0lBYW5DLFlBQ1UsVUFBd0IsRUFDeEIsT0FBZSxFQUNmLEdBQWU7UUFGZixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBTGxCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBTTlCLENBQUM7SUFmSixJQUFvQixXQUFXLENBQUMsV0FBVztRQUN6QyxJQUFHLFdBQVcsRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQVlNLGtCQUFrQjtRQUN2QixJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdEQsSUFBRyxDQUFDLEVBQUUsRUFBRTtZQUNOLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDMUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMxRDtRQUVELEVBQUUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUUzQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVNLGFBQWE7UUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzVDLE1BQU0sQ0FBQyxDQUFDLEVBQVcsRUFBRSxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDO2FBQ0QsT0FBTyxDQUFDLENBQUMsRUFBVyxFQUFFLEVBQUU7WUFDdkIsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBQyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtnQkFDaEQsSUFBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO29CQUNwQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3ZCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNsQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBVyxFQUFFO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUNoQyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RCxJQUFHLEVBQUUsRUFBRTtZQUNMLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQzs7c0hBL0RVLHdCQUF3QjswR0FBeEIsd0JBQXdCLG1HQ3BCckMseURBQ0E7NEZEbUJhLHdCQUF3QjtrQkFOcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixXQUFXLEVBQUUsbUNBQW1DO29CQUNoRCxTQUFTLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQztvQkFDaEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEO2lKQUdxQixXQUFXO3NCQUE5QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT25EZXN0cm95LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1jb250ZW50LXJlbmRlcmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb250ZW50LXJlbmRlcmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50UmVuZGVyZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgY29udGVudFBhZ2UoY29udGVudFBhZ2UpIHtcbiAgICBpZihjb250ZW50UGFnZSkge1xuICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGNvbnRlbnRQYWdlLmNvbnRlbnQpO1xuICAgICAgdGhpcy5zdHlsZXMgPSBjb250ZW50UGFnZS5zdHlsZXM7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNvbnRlbnQ7XG4gIHB1YmxpYyBzdHlsZXM7XG4gIHB1YmxpYyBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3Nhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgX2VsOiBFbGVtZW50UmVmLFxuICApIHt9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBsZXQgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY29udGVudFBhZ2VTdHlsZXMnKTtcbiAgICBpZighZWwpIHtcbiAgICAgIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaWQnLCdjb250ZW50UGFnZVN0eWxlcycpO1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChlbCk7XG4gICAgfVxuXG4gICAgZWwuaW5uZXJIVE1MID0gdGhpcy5zdHlsZXM7XG5cbiAgICB0aGlzLnJlZ2lzdGVySHJlZnMoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckhyZWZzKCk6IHZvaWQge1xuICAgIEFycmF5LmZyb20odGhpcy5lbC5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWZdJykpXG4gICAgICAuZmlsdGVyKChlbDogRWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gZWwuZ2V0QXR0cmlidXRlKCdocmVmJykubWF0Y2goL15cXC8vKTtcbiAgICAgIH0pXG4gICAgICAuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIGlmKCFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IGhyZWYgPSBlbC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKGhyZWYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZWwoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fZWwubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVN0eWxlcygpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVN0eWxlcygpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjb250ZW50UGFnZVN0eWxlcycpO1xuICAgIGlmKGVsKSB7XG4gICAgICBlbC5yZW1vdmUoKTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiAqbmdJZj1cImNvbnRlbnRcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2Rpdj5cbiJdfQ==
|