@firestitch/content 12.3.4 → 13.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/app/consts/index.d.ts +1 -1
  2. package/app/consts/page-types.const.d.ts +5 -5
  3. package/app/enums/editor-type.d.ts +6 -6
  4. package/app/enums/index.d.ts +2 -2
  5. package/app/enums/page-type.enum.d.ts +6 -6
  6. package/app/injectors/content-config.injector.d.ts +2 -2
  7. package/app/injectors/index.d.ts +1 -1
  8. package/app/interfaces/content-config.d.ts +21 -21
  9. package/app/interfaces/content-layout.d.ts +10 -10
  10. package/app/interfaces/content-page.d.ts +14 -14
  11. package/app/interfaces/content-style.d.ts +4 -4
  12. package/app/interfaces/index.d.ts +4 -4
  13. package/app/modules/content/components/content/content.component.d.ts +25 -25
  14. package/app/modules/content/components/content/index.d.ts +1 -1
  15. package/app/modules/content/components/content-renderer/content-renderer.component.d.ts +24 -24
  16. package/app/modules/content/components/content-renderer/index.d.ts +1 -1
  17. package/app/modules/content/fs-content.module.d.ts +10 -10
  18. package/app/modules/content-layouts/components/content-layout/content-layout.component.d.ts +27 -27
  19. package/app/modules/content-layouts/components/content-layout/index.d.ts +1 -1
  20. package/app/modules/content-layouts/components/content-layout-editor/content-layout-editor.component.d.ts +50 -50
  21. package/app/modules/content-layouts/components/content-layout-editor/index.d.ts +1 -1
  22. package/app/modules/content-layouts/components/content-layouts/content-layouts.component.d.ts +21 -21
  23. package/app/modules/content-layouts/components/content-layouts/index.d.ts +1 -1
  24. package/app/modules/content-layouts/components/index.d.ts +3 -3
  25. package/app/modules/content-layouts/fs-content-layouts.module.d.ts +28 -28
  26. package/app/modules/content-pages/components/content-page/content-page.component.d.ts +32 -32
  27. package/app/modules/content-pages/components/content-page/index.d.ts +1 -1
  28. package/app/modules/content-pages/components/content-page-editor/content-page-editor.component.d.ts +56 -55
  29. package/app/modules/content-pages/components/content-page-editor/index.d.ts +1 -1
  30. package/app/modules/content-pages/components/content-pages/content-pages.component.d.ts +24 -24
  31. package/app/modules/content-pages/components/content-pages/index.d.ts +1 -1
  32. package/app/modules/content-pages/components/index.d.ts +3 -3
  33. package/app/modules/content-pages/fs-content-pages.module.d.ts +33 -32
  34. package/app/modules/content-style/components/content-style/content-style.component.d.ts +27 -27
  35. package/app/modules/content-style/components/content-style/index.d.ts +1 -1
  36. package/app/modules/content-style/fs-content-style.module.d.ts +14 -14
  37. package/app/modules/editor/components/editor/editor.component.d.ts +49 -49
  38. package/app/modules/editor/components/editor/index.d.ts +1 -1
  39. package/app/modules/editor/components/editor-label/editor-label.component.d.ts +7 -7
  40. package/app/modules/editor/components/editor-label/index.d.ts +1 -1
  41. package/app/modules/editor/fs-content-editor.module.d.ts +24 -24
  42. package/app/modules/editor/index.d.ts +1 -1
  43. package/{esm2015/app/consts/index.js → esm2020/app/consts/index.mjs} +1 -1
  44. package/{esm2015/app/consts/page-types.const.js → esm2020/app/consts/page-types.const.mjs} +7 -7
  45. package/{esm2015/app/enums/editor-type.js → esm2020/app/enums/editor-type.mjs} +7 -7
  46. package/{esm2015/app/enums/index.js → esm2020/app/enums/index.mjs} +3 -3
  47. package/{esm2015/app/enums/page-type.enum.js → esm2020/app/enums/page-type.enum.mjs} +7 -7
  48. package/{esm2015/app/injectors/content-config.injector.js → esm2020/app/injectors/content-config.injector.mjs} +2 -2
  49. package/{esm2015/app/injectors/index.js → esm2020/app/injectors/index.mjs} +1 -1
  50. package/{esm2015/app/interfaces/content-config.js → esm2020/app/interfaces/content-config.mjs} +1 -1
  51. package/{esm2015/app/interfaces/content-layout.js → esm2020/app/interfaces/content-layout.mjs} +1 -1
  52. package/{esm2015/app/interfaces/content-page.js → esm2020/app/interfaces/content-page.mjs} +1 -1
  53. package/{esm2015/app/interfaces/content-style.js → esm2020/app/interfaces/content-style.mjs} +1 -1
  54. package/{esm2015/app/interfaces/index.js → esm2020/app/interfaces/index.mjs} +5 -5
  55. package/{esm2015/app/modules/content/components/content/content.component.js → esm2020/app/modules/content/components/content/content.component.mjs} +80 -85
  56. package/{esm2015/app/modules/content/components/content/index.js → esm2020/app/modules/content/components/content/index.mjs} +1 -1
  57. package/esm2020/app/modules/content/components/content-renderer/content-renderer.component.mjs +74 -0
  58. package/{esm2015/app/modules/content/components/content-renderer/index.js → esm2020/app/modules/content/components/content-renderer/index.mjs} +1 -1
  59. package/{esm2015/app/modules/content/fs-content.module.js → esm2020/app/modules/content/fs-content.module.mjs} +33 -33
  60. package/esm2020/app/modules/content-layouts/components/content-layout/content-layout.component.mjs +68 -0
  61. package/{esm2015/app/modules/content-layouts/components/content-layout/index.js → esm2020/app/modules/content-layouts/components/content-layout/index.mjs} +1 -1
  62. package/esm2020/app/modules/content-layouts/components/content-layout-editor/content-layout-editor.component.mjs +162 -0
  63. package/{esm2015/app/modules/content-layouts/components/content-layout-editor/index.js → esm2020/app/modules/content-layouts/components/content-layout-editor/index.mjs} +1 -1
  64. package/esm2020/app/modules/content-layouts/components/content-layouts/content-layouts.component.mjs +116 -0
  65. package/{esm2015/app/modules/content-layouts/components/content-layouts/index.js → esm2020/app/modules/content-layouts/components/content-layouts/index.mjs} +1 -1
  66. package/{esm2015/app/modules/content-layouts/components/index.js → esm2020/app/modules/content-layouts/components/index.mjs} +4 -4
  67. package/{esm2015/app/modules/content-layouts/fs-content-layouts.module.js → esm2020/app/modules/content-layouts/fs-content-layouts.module.mjs} +104 -104
  68. package/esm2020/app/modules/content-pages/components/content-page/content-page.component.mjs +81 -0
  69. package/{esm2015/app/modules/content-pages/components/content-page/index.js → esm2020/app/modules/content-pages/components/content-page/index.mjs} +1 -1
  70. package/esm2020/app/modules/content-pages/components/content-page-editor/content-page-editor.component.mjs +179 -0
  71. package/{esm2015/app/modules/content-pages/components/content-page-editor/index.js → esm2020/app/modules/content-pages/components/content-page-editor/index.mjs} +1 -1
  72. package/esm2020/app/modules/content-pages/components/content-pages/content-pages.component.mjs +125 -0
  73. package/{esm2015/app/modules/content-pages/components/content-pages/index.js → esm2020/app/modules/content-pages/components/content-pages/index.mjs} +1 -1
  74. package/{esm2015/app/modules/content-pages/components/index.js → esm2020/app/modules/content-pages/components/index.mjs} +4 -4
  75. package/esm2020/app/modules/content-pages/fs-content-pages.module.mjs +121 -0
  76. package/esm2020/app/modules/content-style/components/content-style/content-style.component.mjs +69 -0
  77. package/{esm2015/app/modules/content-style/components/content-style/index.js → esm2020/app/modules/content-style/components/content-style/index.mjs} +1 -1
  78. package/{esm2015/app/modules/content-style/fs-content-style.module.js → esm2020/app/modules/content-style/fs-content-style.module.mjs} +50 -50
  79. package/esm2020/app/modules/editor/components/editor/editor.component.mjs +144 -0
  80. package/{esm2015/app/modules/editor/components/editor/index.js → esm2020/app/modules/editor/components/editor/index.mjs} +1 -1
  81. package/esm2020/app/modules/editor/components/editor-label/editor-label.component.mjs +16 -0
  82. package/{esm2015/app/modules/editor/components/editor-label/index.js → esm2020/app/modules/editor/components/editor-label/index.mjs} +1 -1
  83. package/{esm2015/app/modules/editor/fs-content-editor.module.js → esm2020/app/modules/editor/fs-content-editor.module.mjs} +89 -89
  84. package/{esm2015/app/modules/editor/index.js → esm2020/app/modules/editor/index.mjs} +1 -1
  85. package/{esm2015/firestitch-content.js → esm2020/firestitch-content.mjs} +4 -4
  86. package/{esm2015/public_api.js → esm2020/public_api.mjs} +10 -10
  87. package/fesm2015/firestitch-content.mjs +1344 -0
  88. package/fesm2015/firestitch-content.mjs.map +1 -0
  89. package/fesm2020/firestitch-content.mjs +1345 -0
  90. package/fesm2020/firestitch-content.mjs.map +1 -0
  91. package/firestitch-content.d.ts +5 -5
  92. package/package.json +21 -8
  93. package/public_api.d.ts +10 -10
  94. package/bundles/firestitch-content.umd.js +0 -1480
  95. package/bundles/firestitch-content.umd.js.map +0 -1
  96. package/esm2015/app/modules/content/components/content-renderer/content-renderer.component.js +0 -77
  97. package/esm2015/app/modules/content-layouts/components/content-layout/content-layout.component.js +0 -72
  98. package/esm2015/app/modules/content-layouts/components/content-layout-editor/content-layout-editor.component.js +0 -160
  99. package/esm2015/app/modules/content-layouts/components/content-layouts/content-layouts.component.js +0 -121
  100. package/esm2015/app/modules/content-pages/components/content-page/content-page.component.js +0 -83
  101. package/esm2015/app/modules/content-pages/components/content-page-editor/content-page-editor.component.js +0 -176
  102. package/esm2015/app/modules/content-pages/components/content-pages/content-pages.component.js +0 -130
  103. package/esm2015/app/modules/content-pages/fs-content-pages.module.js +0 -117
  104. package/esm2015/app/modules/content-style/components/content-style/content-style.component.js +0 -71
  105. package/esm2015/app/modules/editor/components/editor/editor.component.js +0 -149
  106. package/esm2015/app/modules/editor/components/editor-label/editor-label.component.js +0 -21
  107. package/fesm2015/firestitch-content.js +0 -1374
  108. package/fesm2015/firestitch-content.js.map +0 -1
@@ -0,0 +1,81 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, QueryList, ViewChildren, } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3
+ import { FsMessage } from '@firestitch/message';
4
+ import { FsTextEditorComponent } from '@firestitch/text-editor';
5
+ import { Subject, of } from 'rxjs';
6
+ import { switchMap, takeUntil, tap } from 'rxjs/operators';
7
+ import { PageTypes } from '../../../../consts';
8
+ import { FS_CONTENT_CONFIG } from '../../../../injectors';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/material/dialog";
11
+ import * as i2 from "@firestitch/message";
12
+ import * as i3 from "@firestitch/dialog";
13
+ import * as i4 from "@angular/material/form-field";
14
+ import * as i5 from "@angular/material/select";
15
+ import * as i6 from "@angular/material/core";
16
+ import * as i7 from "@firestitch/form";
17
+ import * as i8 from "@firestitch/skeleton";
18
+ import * as i9 from "@angular/forms";
19
+ import * as i10 from "@angular/common";
20
+ import * as i11 from "@angular/material/input";
21
+ export class ContentPageComponent {
22
+ constructor(_config, _data, _dialogRef, _message, _cdRef) {
23
+ this._config = _config;
24
+ this._data = _data;
25
+ this._dialogRef = _dialogRef;
26
+ this._message = _message;
27
+ this._cdRef = _cdRef;
28
+ this.contentPage = null;
29
+ this.PageTypes = PageTypes;
30
+ this.editors = { content: true, styles: true };
31
+ this._destroy$ = new Subject();
32
+ this.save = () => {
33
+ return this._config.saveContentPage(this.contentPage)
34
+ .pipe(tap((contentPage) => {
35
+ this._message.success('Saved Changes');
36
+ this._dialogRef.close(contentPage);
37
+ }));
38
+ };
39
+ }
40
+ ngOnInit() {
41
+ this._dialogRef.updateSize('600px');
42
+ this._fetchData();
43
+ }
44
+ ngOnDestroy() {
45
+ this._destroy$.next();
46
+ this._destroy$.complete();
47
+ }
48
+ _fetchData() {
49
+ this._config.loadContentLayouts()
50
+ .subscribe((contentLayouts) => {
51
+ this.contentLayouts = contentLayouts;
52
+ this._cdRef.markForCheck();
53
+ });
54
+ of(this._data.contentPage)
55
+ .pipe(switchMap((contentPage) => {
56
+ return of(contentPage);
57
+ }), takeUntil(this._destroy$))
58
+ .subscribe((contentPage) => {
59
+ this.contentPage = {
60
+ ...contentPage,
61
+ };
62
+ this._cdRef.markForCheck();
63
+ });
64
+ }
65
+ }
66
+ ContentPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ContentPageComponent, deps: [{ token: FS_CONTENT_CONFIG }, { token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i2.FsMessage }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
67
+ ContentPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ContentPageComponent, selector: "ng-component", viewQueries: [{ propertyName: "textEditors", predicate: FsTextEditorComponent, descendants: true }], ngImport: i0, template: "<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentPage\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentPage.id ? 'Page' : 'Create Page'}}</h1>\n <div mat-dialog-content>\n <div class=\"fs-column\">\n <mat-form-field>\n <mat-label>Type</mat-label>\n <mat-select\n [(ngModel)]=\"contentPage.type\"\n name=\"type\"\n required>\n <mat-option\n *ngFor=\"let item of PageTypes\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field *ngIf=\"contentLayouts\">\n <mat-label>Layout</mat-label>\n <mat-select\n [(ngModel)]=\"contentPage.contentLayoutId\"\n required\n name=\"contentLayoutId\">\n <mat-option\n *ngFor=\"let item of contentLayouts\"\n [value]=\"item.id\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Name</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentPage.name\"\n name=\"name\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Path</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentPage.path\"\n name=\"path\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Title</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentPage.title\"\n name=\"title\">\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n", styles: [""], components: [{ type: i3.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.FsFormDialogActionsComponent, selector: "fs-form-dialog-actions", inputs: ["save", "create", "close", "done", "closeData", "name"] }], directives: [{ type: i8.FsSkeletonFormDirective, selector: "[fsSkeletonForm]", inputs: ["fsSkeletonForm", "fsSkeletonFormLines"] }, { type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i4.MatLabel, selector: "mat-label" }, { type: i9.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ContentPageComponent, decorators: [{
69
+ type: Component,
70
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentPage\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentPage.id ? 'Page' : 'Create Page'}}</h1>\n <div mat-dialog-content>\n <div class=\"fs-column\">\n <mat-form-field>\n <mat-label>Type</mat-label>\n <mat-select\n [(ngModel)]=\"contentPage.type\"\n name=\"type\"\n required>\n <mat-option\n *ngFor=\"let item of PageTypes\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field *ngIf=\"contentLayouts\">\n <mat-label>Layout</mat-label>\n <mat-select\n [(ngModel)]=\"contentPage.contentLayoutId\"\n required\n name=\"contentLayoutId\">\n <mat-option\n *ngFor=\"let item of contentLayouts\"\n [value]=\"item.id\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Name</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentPage.name\"\n name=\"name\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Path</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentPage.path\"\n name=\"path\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Title</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentPage.title\"\n name=\"title\">\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n", styles: [""] }]
71
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
72
+ type: Inject,
73
+ args: [FS_CONTENT_CONFIG]
74
+ }] }, { type: undefined, decorators: [{
75
+ type: Inject,
76
+ args: [MAT_DIALOG_DATA]
77
+ }] }, { type: i1.MatDialogRef }, { type: i2.FsMessage }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { textEditors: [{
78
+ type: ViewChildren,
79
+ args: [FsTextEditorComponent]
80
+ }] } });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9jb250ZW50LXBhZ2VzL2NvbXBvbmVudHMvY29udGVudC1wYWdlL2NvbnRlbnQtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZS9jb250ZW50LXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVMxRCxNQUFNLE9BQU8sb0JBQW9CO0lBWS9CLFlBQ3FDLE9BQXdCLEVBQzFCLEtBQVUsRUFDbkMsVUFBOEMsRUFDOUMsUUFBbUIsRUFDbkIsTUFBeUI7UUFKRSxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUFLO1FBQ25DLGVBQVUsR0FBVixVQUFVLENBQW9DO1FBQzlDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFaNUIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUV0QixZQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUV6QyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQW9CakMsU0FBSSxHQUFHLEdBQUcsRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7aUJBQ2xELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDTixDQUFDLENBQUM7SUFwQkMsQ0FBQztJQUVHLFFBQVE7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFZTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUU7YUFDOUIsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVMLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQzthQUN2QixJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDeEIsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHO2dCQUNqQixHQUFHLFdBQVc7YUFDZixDQUFDO1lBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O2lIQTdEVSxvQkFBb0Isa0JBYXJCLGlCQUFpQixhQUNqQixlQUFlO3FHQWRkLG9CQUFvQixvRkFFakIscUJBQXFCLGdEQy9CckMsMDREQStEQTsyRkRsQ2Esb0JBQW9CO2tCQUxoQyxTQUFTO3NDQUdTLHVCQUF1QixDQUFDLE1BQU07OzBCQWU1QyxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3hCLE1BQU07MkJBQUMsZUFBZTsrSEFYbEIsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnQGZpcmVzdGl0Y2gvdGV4dC1lZGl0b3InO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUGFnZVR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3RzJztcbmltcG9ydCB7IEZTX0NPTlRFTlRfQ09ORklHIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW5qZWN0b3JzJztcbmltcG9ydCB7IEZzQ29udGVudENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udGVudC1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50UGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkcmVuKEZzVGV4dEVkaXRvckNvbXBvbmVudClcbiAgcHVibGljIHRleHRFZGl0b3JzOiBRdWVyeUxpc3Q8RnNUZXh0RWRpdG9yQ29tcG9uZW50PjtcblxuICBwdWJsaWMgY29udGVudFBhZ2UgPSBudWxsO1xuICBwdWJsaWMgUGFnZVR5cGVzID0gUGFnZVR5cGVzO1xuICBwdWJsaWMgY29udGVudExheW91dHM7XG4gIHB1YmxpYyBlZGl0b3JzID0geyBjb250ZW50OiB0cnVlLCBzdHlsZXM6IHRydWUgfTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChGU19DT05URU5UX0NPTkZJRykgcHJpdmF0ZSBfY29uZmlnOiBGc0NvbnRlbnRDb25maWcsXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgX2RhdGE6IGFueSxcbiAgICBwcml2YXRlIF9kaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDb250ZW50UGFnZUNvbXBvbmVudD4sXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2dSZWYudXBkYXRlU2l6ZSgnNjAwcHgnKTtcbiAgICB0aGlzLl9mZXRjaERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcuc2F2ZUNvbnRlbnRQYWdlKHRoaXMuY29udGVudFBhZ2UpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChjb250ZW50UGFnZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU2F2ZWQgQ2hhbmdlcycpO1xuICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZShjb250ZW50UGFnZSk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfTtcblxuICBwcml2YXRlIF9mZXRjaERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5fY29uZmlnLmxvYWRDb250ZW50TGF5b3V0cygpXG4gICAgICAuc3Vic2NyaWJlKChjb250ZW50TGF5b3V0cykgPT4ge1xuICAgICAgICB0aGlzLmNvbnRlbnRMYXlvdXRzID0gY29udGVudExheW91dHM7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBvZih0aGlzLl9kYXRhLmNvbnRlbnRQYWdlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoY29udGVudFBhZ2UpID0+IHtcbiAgICAgICAgICByZXR1cm4gb2YoY29udGVudFBhZ2UpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGNvbnRlbnRQYWdlKSA9PiB7XG4gICAgICAgIHRoaXMuY29udGVudFBhZ2UgPSB7XG4gICAgICAgICAgLi4uY29udGVudFBhZ2UsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG59XG4iLCI8Zm9ybSBmc0Zvcm0gW3N1Ym1pdF09XCJzYXZlXCIgKmZzU2tlbGV0b25Gb3JtPVwiY29udGVudFBhZ2VcIj5cbiAgPGZzLWRpYWxvZz5cbiAgICA8aDEgbWF0LWRpYWxvZy10aXRsZT57e2NvbnRlbnRQYWdlLmlkID8gJ1BhZ2UnIDogJ0NyZWF0ZSBQYWdlJ319PC9oMT5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1jb2x1bW5cIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtbGFiZWw+VHlwZTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudFBhZ2UudHlwZVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJ0eXBlXCJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIFBhZ2VUeXBlc1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj5cbiAgICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJjb250ZW50TGF5b3V0c1wiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+TGF5b3V0PC9tYXQtbGFiZWw+XG4gICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudFBhZ2UuY29udGVudExheW91dElkXCJcbiAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICBuYW1lPVwiY29udGVudExheW91dElkXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudExheW91dHNcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLmlkXCI+XG4gICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtbGFiZWw+TmFtZTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudFBhZ2UubmFtZVwiXG4gICAgICAgICAgICBuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtbGFiZWw+UGF0aDwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudFBhZ2UucGF0aFwiXG4gICAgICAgICAgICBuYW1lPVwicGF0aFwiXG4gICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtbGFiZWw+VGl0bGU8L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRQYWdlLnRpdGxlXCJcbiAgICAgICAgICAgIG5hbWU9XCJ0aXRsZVwiPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICAgIDxmcy1mb3JtLWRpYWxvZy1hY3Rpb25zPlxuICAgICAgPC9mcy1mb3JtLWRpYWxvZy1hY3Rpb25zPlxuICAgIDwvZGl2PlxuICA8L2ZzLWRpYWxvZz5cbjwvZm9ybT5cbiJdfQ==
@@ -1,2 +1,2 @@
1
- export * from './content-page.component';
1
+ export * from './content-page.component';
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb250ZW50LXBhZ2UuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,179 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, ViewChild, } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';
3
+ import { FsMessage } from '@firestitch/message';
4
+ import { FsPrompt } from '@firestitch/prompt';
5
+ import { Subject, fromEvent, of, throwError } from 'rxjs';
6
+ import { filter, finalize, switchMap, takeUntil, tap } from 'rxjs/operators';
7
+ import { EditorType } from '../../../../enums';
8
+ import { EditorComponent } from '../../../editor/components/editor';
9
+ import { ContentPageComponent } from '../content-page/content-page.component';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/material/dialog";
12
+ import * as i2 from "@firestitch/message";
13
+ import * as i3 from "@firestitch/prompt";
14
+ import * as i4 from "@firestitch/dialog";
15
+ import * as i5 from "@angular/material/button";
16
+ import * as i6 from "@angular/material/icon";
17
+ import * as i7 from "@angular/material/button-toggle";
18
+ import * as i8 from "../../../editor/components/editor/editor.component";
19
+ import * as i9 from "@angular/forms";
20
+ import * as i10 from "@firestitch/form";
21
+ import * as i11 from "@firestitch/skeleton";
22
+ import * as i12 from "@angular/material/tooltip";
23
+ import * as i13 from "@angular/router";
24
+ export class ContentPageEditorComponent {
25
+ constructor(_data, _dialogRef, _message, _dialog, _cdRef, _prompt) {
26
+ this._data = _data;
27
+ this._dialogRef = _dialogRef;
28
+ this._message = _message;
29
+ this._dialog = _dialog;
30
+ this._cdRef = _cdRef;
31
+ this._prompt = _prompt;
32
+ this.focused = null;
33
+ this.resizing = false;
34
+ this.editors = {
35
+ [EditorType.Html]: true,
36
+ [EditorType.Scss]: true,
37
+ [EditorType.Js]: false,
38
+ [EditorType.GlobalScss]: false,
39
+ };
40
+ this._destroy$ = new Subject();
41
+ this.submit = () => {
42
+ this.submitting = true;
43
+ return of(null)
44
+ .pipe(filter(() => this.focused), switchMap(() => {
45
+ switch (this.focused) {
46
+ case EditorType.Js:
47
+ case EditorType.Html:
48
+ case EditorType.Scss:
49
+ return this.saveContentPage();
50
+ case EditorType.GlobalScss:
51
+ return this.editor.saveGlobalScss();
52
+ }
53
+ return throwError('Invalid focus');
54
+ }), tap(() => {
55
+ this.editor.clearChange(this.focused);
56
+ this._cdRef.markForCheck();
57
+ }), finalize(() => {
58
+ this.submitting = false;
59
+ this._cdRef.markForCheck();
60
+ }))
61
+ .pipe(takeUntil(this._destroy$));
62
+ };
63
+ }
64
+ get isMac() {
65
+ return navigator.platform.toUpperCase().indexOf('MAC') >= 0;
66
+ }
67
+ ngOnInit() {
68
+ this._dialogRef.addPanelClass('fs-content-editor-overlay-pane');
69
+ this._dialogRef.disableClose = true;
70
+ this.config = this._data.contentConfig;
71
+ this._initContentPage(this._data.contentPage);
72
+ this._initEscape();
73
+ }
74
+ editorToggleChange(event) {
75
+ this.editors[event.value] = !this.editors[event.value];
76
+ }
77
+ ngOnDestroy() {
78
+ this._destroy$.next();
79
+ this._destroy$.complete();
80
+ }
81
+ _initContentPage(contentPage) {
82
+ this.config.loadContentPage(contentPage.id)
83
+ .subscribe((data) => {
84
+ this.contentPage = data;
85
+ this._cdRef.markForCheck();
86
+ });
87
+ }
88
+ editorFocused(type) {
89
+ this.focused = type;
90
+ }
91
+ save() {
92
+ this.submit()
93
+ .subscribe();
94
+ }
95
+ saveContentPage() {
96
+ const names = {
97
+ [EditorType.Js]: 'js',
98
+ [EditorType.Scss]: 'styles',
99
+ [EditorType.Html]: 'content',
100
+ };
101
+ const data = {
102
+ id: this.contentPage.id,
103
+ [names[this.focused]]: this.editor.changes[this.focused],
104
+ };
105
+ return this.config.saveContentPage({
106
+ id: this.contentPage.id,
107
+ ...data,
108
+ })
109
+ .pipe(tap(() => {
110
+ this._message.success('Saved Changes');
111
+ }));
112
+ }
113
+ close() {
114
+ if (!this.editor.hasChanges) {
115
+ return this._dialogRef.close();
116
+ }
117
+ this._prompt.confirm({
118
+ dialogConfig: {
119
+ width: null,
120
+ },
121
+ title: 'You have unsaved changes',
122
+ template: 'What would you like to do with your changes?',
123
+ buttons: [
124
+ {
125
+ label: 'Review Changes',
126
+ value: 'review',
127
+ },
128
+ {
129
+ label: 'Discard Changes',
130
+ value: 'discard',
131
+ },
132
+ ],
133
+ })
134
+ .pipe(takeUntil(this._destroy$))
135
+ .subscribe((value) => {
136
+ if (value === 'discard') {
137
+ this._dialogRef.close();
138
+ }
139
+ });
140
+ }
141
+ openSettings() {
142
+ this._dialog.open(ContentPageComponent, {
143
+ data: {
144
+ contentPage: this.contentPage,
145
+ },
146
+ })
147
+ .afterClosed()
148
+ .pipe(takeUntil(this._destroy$))
149
+ .subscribe((contentPage) => {
150
+ this.contentPage = {
151
+ ...this.contentPage,
152
+ ...contentPage,
153
+ };
154
+ this._cdRef.markForCheck();
155
+ });
156
+ }
157
+ _initEscape() {
158
+ fromEvent(document, 'keydown')
159
+ .pipe(filter((event) => event.code === 'Escape'), takeUntil(this._destroy$)).subscribe(() => {
160
+ const dialogRef = this._dialog.openDialogs.reverse()[0];
161
+ if (dialogRef?.componentInstance === this) {
162
+ this.close();
163
+ }
164
+ });
165
+ }
166
+ }
167
+ ContentPageEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ContentPageEditorComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i2.FsMessage }, { token: i1.MatDialog }, { token: i0.ChangeDetectorRef }, { token: i3.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
168
+ ContentPageEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ContentPageEditorComponent, selector: "ng-component", viewQueries: [{ propertyName: "editor", first: true, predicate: EditorComponent, descendants: true }], ngImport: i0, template: "<form fsForm [submit]=\"submit\" [dirtySubmitButton]=\"false\" [confirm]=\"false\">\n <fs-dialog *fsSkeletonForm=\"contentPage\">\n <h1 mat-dialog-title>\n <div class=\"title-container\">\n <div class=\"title\">\n Page Editor\n <div class=\"small\">{{contentPage.name}}</div> \n </div>\n <a\n (click)=\"openSettings()\"\n mat-icon-button>\n <mat-icon>settings</mat-icon>\n </a>\n\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"html\" [checked]=\"editors.html\" (change)=\"editorToggleChange($event)\">HTML</mat-button-toggle>\n <mat-button-toggle value=\"scss\" [checked]=\"editors.scss\" (change)=\"editorToggleChange($event)\">SCSS</mat-button-toggle>\n <mat-button-toggle value=\"js\" [checked]=\"editors.js\" (change)=\"editorToggleChange($event)\">JS</mat-button-toggle>\n <mat-button-toggle value=\"globalScss\" [checked]=\"editors.globalScss\" (change)=\"editorToggleChange($event)\">Global SCSS</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n\n <div class=\"actions\">\n <button\n #submit\n mat-stroked-button\n color=\"primary\"\n [disabled]=\"!editor?.hasChanges || submitting\"\n [matTooltip]=\"isMac ? 'cmd+s' : 'ctrl+s'\"\n type=\"button\"\n (click)=\"save()\"> \n Save\n </button>\n\n <a \n mat-stroked-button\n target=\"_blank\"\n [routerLink]=\"contentPage.path\"\n type=\"button\"> \n Preview\n </a>\n\n <button \n mat-stroked-button\n (click)=\"close()\"\n type=\"button\"> \n Done\n </button>\n </div>\n </div>\n </h1>\n <div mat-dialog-content>\n <app-editor\n [contentConfig]=\"config\"\n [showHtml]=\"editors.html\"\n [showJs]=\"editors.js\"\n [showScss]=\"editors.scss\"\n [showGlobalScss]=\"editors.globalScss\"\n [html]=\"contentPage.content\"\n [scss]=\"contentPage.styles\"\n [js]=\"contentPage.js\"\n (focused)=\"editorFocused($event)\">\n </app-editor>\n </div>\n </fs-dialog>\n</form>\n", styles: ["::ng-deep .fs-content-editor-overlay-pane .mat-dialog-container{border-radius:0}form{height:100%}fs-dialog{display:flex;height:100%;flex-direction:column}fs-dialog ::ng-deep .mat-dialog-content{max-height:none;flex:1;overflow:hidden}fs-dialog ::ng-deep .mat-button-toggle-label-content{line-height:36px}h1 .toggles{display:flex;justify-content:flex-end;justify-self:baseline;font-size:13px}h1 .actions{margin-left:30px}h1 .actions .mat-stroked-button{margin-left:5px}.title-container{display:flex;align-items:center}.title-container .title{flex:1}.title-container .title .small{line-height:normal}\n"], components: [{ type: i4.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout"] }, { type: i5.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.EditorComponent, selector: "app-editor", inputs: ["showHtml", "showScss", "showJs", "showGlobalScss", "html", "scss", "js", "contentConfig"], outputs: ["changed", "focused", "blured"] }], directives: [{ type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { type: i11.FsSkeletonFormDirective, selector: "[fsSkeletonForm]", inputs: ["fsSkeletonForm", "fsSkeletonFormLines"] }, { type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i7.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i10.FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit", "form"] }, { type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i13.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ContentPageEditorComponent, decorators: [{
170
+ type: Component,
171
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<form fsForm [submit]=\"submit\" [dirtySubmitButton]=\"false\" [confirm]=\"false\">\n <fs-dialog *fsSkeletonForm=\"contentPage\">\n <h1 mat-dialog-title>\n <div class=\"title-container\">\n <div class=\"title\">\n Page Editor\n <div class=\"small\">{{contentPage.name}}</div> \n </div>\n <a\n (click)=\"openSettings()\"\n mat-icon-button>\n <mat-icon>settings</mat-icon>\n </a>\n\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"html\" [checked]=\"editors.html\" (change)=\"editorToggleChange($event)\">HTML</mat-button-toggle>\n <mat-button-toggle value=\"scss\" [checked]=\"editors.scss\" (change)=\"editorToggleChange($event)\">SCSS</mat-button-toggle>\n <mat-button-toggle value=\"js\" [checked]=\"editors.js\" (change)=\"editorToggleChange($event)\">JS</mat-button-toggle>\n <mat-button-toggle value=\"globalScss\" [checked]=\"editors.globalScss\" (change)=\"editorToggleChange($event)\">Global SCSS</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n\n <div class=\"actions\">\n <button\n #submit\n mat-stroked-button\n color=\"primary\"\n [disabled]=\"!editor?.hasChanges || submitting\"\n [matTooltip]=\"isMac ? 'cmd+s' : 'ctrl+s'\"\n type=\"button\"\n (click)=\"save()\"> \n Save\n </button>\n\n <a \n mat-stroked-button\n target=\"_blank\"\n [routerLink]=\"contentPage.path\"\n type=\"button\"> \n Preview\n </a>\n\n <button \n mat-stroked-button\n (click)=\"close()\"\n type=\"button\"> \n Done\n </button>\n </div>\n </div>\n </h1>\n <div mat-dialog-content>\n <app-editor\n [contentConfig]=\"config\"\n [showHtml]=\"editors.html\"\n [showJs]=\"editors.js\"\n [showScss]=\"editors.scss\"\n [showGlobalScss]=\"editors.globalScss\"\n [html]=\"contentPage.content\"\n [scss]=\"contentPage.styles\"\n [js]=\"contentPage.js\"\n (focused)=\"editorFocused($event)\">\n </app-editor>\n </div>\n </fs-dialog>\n</form>\n", styles: ["::ng-deep .fs-content-editor-overlay-pane .mat-dialog-container{border-radius:0}form{height:100%}fs-dialog{display:flex;height:100%;flex-direction:column}fs-dialog ::ng-deep .mat-dialog-content{max-height:none;flex:1;overflow:hidden}fs-dialog ::ng-deep .mat-button-toggle-label-content{line-height:36px}h1 .toggles{display:flex;justify-content:flex-end;justify-self:baseline;font-size:13px}h1 .actions{margin-left:30px}h1 .actions .mat-stroked-button{margin-left:5px}.title-container{display:flex;align-items:center}.title-container .title{flex:1}.title-container .title .small{line-height:normal}\n"] }]
172
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
173
+ type: Inject,
174
+ args: [MAT_DIALOG_DATA]
175
+ }] }, { type: i1.MatDialogRef }, { type: i2.FsMessage }, { type: i1.MatDialog }, { type: i0.ChangeDetectorRef }, { type: i3.FsPrompt }]; }, propDecorators: { editor: [{
176
+ type: ViewChild,
177
+ args: [EditorComponent]
178
+ }] } });
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wYWdlLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZS1lZGl0b3IvY29udGVudC1wYWdlLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZS1lZGl0b3IvY29udGVudC1wYWdlLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFROUUsTUFBTSxPQUFPLDBCQUEwQjtJ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QUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjthQUNBLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUc7Z0JBQ2pCLEdBQUcsSUFBSSxDQUFDLFdBQVc7Z0JBQ25CLEdBQUcsV0FBVzthQUNmLENBQUM7WUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLFdBQVc7UUFDakIsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7YUFDM0IsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLEVBQ3pELFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNmLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hELElBQUksU0FBUyxFQUFFLGlCQUFpQixLQUFLLElBQUksRUFBRTtnQkFDekMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2Q7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O3VIQXBNVSwwQkFBMEIsa0JBaUMzQixlQUFlOzJHQWpDZCwwQkFBMEIsNEZBRTFCLGVBQWUsZ0RDaEM1QixtM0VBbUVBOzJGRHJDYSwwQkFBMEI7a0JBTHRDLFNBQVM7c0NBR1MsdUJBQXVCLENBQUMsTUFBTTs7MEJBbUM1QyxNQUFNOzJCQUFDLGVBQWU7OEtBOUJsQixNQUFNO3NCQURaLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcbmltcG9ydCB7IEZzUHJvbXB0IH0gZnJvbSAnQGZpcmVzdGl0Y2gvcHJvbXB0JztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZnJvbUV2ZW50LCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaW5hbGl6ZSwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRWRpdG9yVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zJztcbmltcG9ydCB7IEZzQ29udGVudENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZWRpdG9yL2NvbXBvbmVudHMvZWRpdG9yJztcbmltcG9ydCB7IENvbnRlbnRQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29udGVudC1wYWdlL2NvbnRlbnQtcGFnZS5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1wYWdlLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRlbnQtcGFnZS1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnRQYWdlRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoRWRpdG9yQ29tcG9uZW50KVxuICBwdWJsaWMgZWRpdG9yOiBFZGl0b3JDb21wb25lbnQ7XG5cbiAgcHVibGljIGNvbnRlbnRQYWdlOiB7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgc3R5bGVzPzogc3RyaW5nO1xuICAgIGNvbnRlbnQ/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBqcz86IHN0cmluZztcbiAgICBwYXRoPzogc3RyaW5nO1xuICB9O1xuICBwdWJsaWMgZm9jdXNlZCA9IG51bGw7XG4gIHB1YmxpYyBjb25maWc6IEZzQ29udGVudENvbmZpZztcbiAgcHVibGljIHJlc2l6aW5nID0gZmFsc2U7XG4gIHB1YmxpYyB0aXRsZTtcbiAgcHVibGljIGVkaXRvcnMgPSB7XG4gICAgW0VkaXRvclR5cGUuSHRtbF06IHRydWUsXG4gICAgW0VkaXRvclR5cGUuU2Nzc106IHRydWUsXG4gICAgW0VkaXRvclR5cGUuSnNdOiBmYWxzZSxcbiAgICBbRWRpdG9yVHlwZS5HbG9iYWxTY3NzXTogZmFsc2UsXG4gIH07XG5cbiAgcHVibGljIGdldCBpc01hYygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbmF2aWdhdG9yLnBsYXRmb3JtLnRvVXBwZXJDYXNlKCkuaW5kZXhPZignTUFDJykgPj0gMDtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXR0aW5nOiBib29sZWFuO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YToge1xuICAgICAgY29udGVudFBhZ2U6IGFueTtcbiAgICAgIGNvbnRlbnRDb25maWc6IEZzQ29udGVudENvbmZpZztcbiAgICB9LFxuICAgIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPENvbnRlbnRQYWdlRWRpdG9yQ29tcG9uZW50PixcbiAgICBwcml2YXRlIF9tZXNzYWdlOiBGc01lc3NhZ2UsXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX3Byb21wdDogRnNQcm9tcHQsXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZ1JlZi5hZGRQYW5lbENsYXNzKCdmcy1jb250ZW50LWVkaXRvci1vdmVybGF5LXBhbmUnKTtcbiAgICB0aGlzLl9kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuX2RhdGEuY29udGVudENvbmZpZztcbiAgICB0aGlzLl9pbml0Q29udGVudFBhZ2UodGhpcy5fZGF0YS5jb250ZW50UGFnZSk7XG4gICAgdGhpcy5faW5pdEVzY2FwZSgpO1xuICB9XG5cbiAgcHVibGljIGVkaXRvclRvZ2dsZUNoYW5nZShldmVudDogTWF0QnV0dG9uVG9nZ2xlQ2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3JzW2V2ZW50LnZhbHVlXSA9ICF0aGlzLmVkaXRvcnNbZXZlbnQudmFsdWVdO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIF9pbml0Q29udGVudFBhZ2UoY29udGVudFBhZ2UpIHtcbiAgICB0aGlzLmNvbmZpZy5sb2FkQ29udGVudFBhZ2UoY29udGVudFBhZ2UuaWQpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuY29udGVudFBhZ2UgPSBkYXRhO1xuICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGVkaXRvckZvY3VzZWQodHlwZSkge1xuICAgIHRoaXMuZm9jdXNlZCA9IHR5cGU7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1Ym1pdCgpXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0ID0gKCk6IE9ic2VydmFibGU8YW55PiA9PiB7XG4gICAgdGhpcy5zdWJtaXR0aW5nID0gdHJ1ZTtcblxuICAgIHJldHVybiBvZihudWxsKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmZvY3VzZWQpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAodGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICBjYXNlIEVkaXRvclR5cGUuSnM6XG4gICAgICAgICAgICBjYXNlIEVkaXRvclR5cGUuSHRtbDpcbiAgICAgICAgICAgIGNhc2UgRWRpdG9yVHlwZS5TY3NzOlxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zYXZlQ29udGVudFBhZ2UoKTtcbiAgICAgICAgICAgIGNhc2UgRWRpdG9yVHlwZS5HbG9iYWxTY3NzOlxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3Iuc2F2ZUdsb2JhbFNjc3MoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcignSW52YWxpZCBmb2N1cycpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmVkaXRvci5jbGVhckNoYW5nZSh0aGlzLmZvY3VzZWQpO1xuICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKTtcbiAgfTtcblxuICBwdWJsaWMgc2F2ZUNvbnRlbnRQYWdlKCkge1xuICAgIGNvbnN0IG5hbWVzID0ge1xuICAgICAgW0VkaXRvclR5cGUuSnNdOiAnanMnLFxuICAgICAgW0VkaXRvclR5cGUuU2Nzc106ICdzdHlsZXMnLFxuICAgICAgW0VkaXRvclR5cGUuSHRtbF06ICdjb250ZW50JyxcbiAgICB9O1xuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLmNvbnRlbnRQYWdlLmlkLFxuICAgICAgW25hbWVzW3RoaXMuZm9jdXNlZF1dOiB0aGlzLmVkaXRvci5jaGFuZ2VzW3RoaXMuZm9jdXNlZF0sXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5zYXZlQ29udGVudFBhZ2Uoe1xuICAgICAgaWQ6IHRoaXMuY29udGVudFBhZ2UuaWQsXG4gICAgICAuLi5kYXRhLFxuICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1NhdmVkIENoYW5nZXMnKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cblxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVkaXRvci5oYXNDaGFuZ2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcHJvbXB0LmNvbmZpcm0oe1xuICAgICAgZGlhbG9nQ29uZmlnOiB7XG4gICAgICAgIHdpZHRoOiBudWxsLFxuICAgICAgfSxcbiAgICAgIHRpdGxlOiAnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzJyxcbiAgICAgIHRlbXBsYXRlOiAnV2hhdCB3b3VsZCB5b3UgbGlrZSB0byBkbyB3aXRoIHlvdXIgY2hhbmdlcz8nLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdSZXZpZXcgQ2hhbmdlcycsXG4gICAgICAgICAgdmFsdWU6ICdyZXZpZXcnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdEaXNjYXJkIENoYW5nZXMnLFxuICAgICAgICAgIHZhbHVlOiAnZGlzY2FyZCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJ2Rpc2NhcmQnKSB7XG4gICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9wZW5TZXR0aW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2cub3BlbihDb250ZW50UGFnZUNvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICBjb250ZW50UGFnZTogdGhpcy5jb250ZW50UGFnZSxcbiAgICAgIH0sXG4gICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGNvbnRlbnRQYWdlKSA9PiB7XG4gICAgICAgIHRoaXMuY29udGVudFBhZ2UgPSB7XG4gICAgICAgICAgLi4udGhpcy5jb250ZW50UGFnZSxcbiAgICAgICAgICAuLi5jb250ZW50UGFnZSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRFc2NhcGUoKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gZXZlbnQuY29kZSA9PT0gJ0VzY2FwZScpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2cub3BlbkRpYWxvZ3MucmV2ZXJzZSgpWzBdO1xuICAgICAgICBpZiAoZGlhbG9nUmVmPy5jb21wb25lbnRJbnN0YW5jZSA9PT0gdGhpcykge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxufVxuIiwiPGZvcm0gZnNGb3JtIFtzdWJtaXRdPVwic3VibWl0XCIgW2RpcnR5U3VibWl0QnV0dG9uXT1cImZhbHNlXCIgW2NvbmZpcm1dPVwiZmFsc2VcIj5cbiAgPGZzLWRpYWxvZyAqZnNTa2VsZXRvbkZvcm09XCJjb250ZW50UGFnZVwiPlxuICAgIDxoMSBtYXQtZGlhbG9nLXRpdGxlPlxuICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgICBQYWdlIEVkaXRvclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbFwiPnt7Y29udGVudFBhZ2UubmFtZX19PC9kaXY+ICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YVxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5TZXR0aW5ncygpXCJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvbj5cbiAgICAgICAgICA8bWF0LWljb24+c2V0dGluZ3M8L21hdC1pY29uPlxuICAgICAgICA8L2E+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZXNcIj5cbiAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgbXVsdGlwbGU+XG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJodG1sXCIgW2NoZWNrZWRdPVwiZWRpdG9ycy5odG1sXCIgKGNoYW5nZSk9XCJlZGl0b3JUb2dnbGVDaGFuZ2UoJGV2ZW50KVwiPkhUTUw8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwic2Nzc1wiIFtjaGVja2VkXT1cImVkaXRvcnMuc2Nzc1wiIChjaGFuZ2UpPVwiZWRpdG9yVG9nZ2xlQ2hhbmdlKCRldmVudClcIj5TQ1NTPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImpzXCIgW2NoZWNrZWRdPVwiZWRpdG9ycy5qc1wiIChjaGFuZ2UpPVwiZWRpdG9yVG9nZ2xlQ2hhbmdlKCRldmVudClcIj5KUzwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJnbG9iYWxTY3NzXCIgW2NoZWNrZWRdPVwiZWRpdG9ycy5nbG9iYWxTY3NzXCIgKGNoYW5nZSk9XCJlZGl0b3JUb2dnbGVDaGFuZ2UoJGV2ZW50KVwiPkdsb2JhbCBTQ1NTPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPiAgICAgIFxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgI3N1Ym1pdFxuICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0b3I/Lmhhc0NoYW5nZXMgfHwgc3VibWl0dGluZ1wiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImlzTWFjID8gJ2NtZCtzJyA6ICdjdHJsK3MnXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIj4gIFxuICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGEgXG4gICAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJjb250ZW50UGFnZS5wYXRoXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPiAgXG4gICAgICAgICAgICBQcmV2aWV3XG4gICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPiAgXG4gICAgICAgICAgICBEb25lXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9oMT5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cbiAgICAgIDxhcHAtZWRpdG9yXG4gICAgICAgIFtjb250ZW50Q29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgIFtzaG93SHRtbF09XCJlZGl0b3JzLmh0bWxcIlxuICAgICAgICBbc2hvd0pzXT1cImVkaXRvcnMuanNcIlxuICAgICAgICBbc2hvd1Njc3NdPVwiZWRpdG9ycy5zY3NzXCJcbiAgICAgICAgW3Nob3dHbG9iYWxTY3NzXT1cImVkaXRvcnMuZ2xvYmFsU2Nzc1wiXG4gICAgICAgIFtodG1sXT1cImNvbnRlbnRQYWdlLmNvbnRlbnRcIlxuICAgICAgICBbc2Nzc109XCJjb250ZW50UGFnZS5zdHlsZXNcIlxuICAgICAgICBbanNdPVwiY29udGVudFBhZ2UuanNcIlxuICAgICAgICAoZm9jdXNlZCk9XCJlZGl0b3JGb2N1c2VkKCRldmVudClcIj5cbiAgICAgIDwvYXBwLWVkaXRvcj5cbiAgICA8L2Rpdj5cbiAgPC9mcy1kaWFsb2c+XG48L2Zvcm0+XG4iXX0=
@@ -1,2 +1,2 @@
1
- export * from './content-page-editor.component';
1
+ export * from './content-page-editor.component';
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZS1lZGl0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29udGVudC1wYWdlLWVkaXRvci5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,125 @@
1
+ import { ChangeDetectionStrategy, Component, Inject, Input, ViewChild, } from '@angular/core';
2
+ import { MatDialog } from '@angular/material/dialog';
3
+ import { index } from '@firestitch/common';
4
+ import { ItemType } from '@firestitch/filter';
5
+ import { FsListComponent } from '@firestitch/list';
6
+ import { Subject } from 'rxjs';
7
+ import { filter, map, takeUntil } from 'rxjs/operators';
8
+ import { PageTypes } from '../../../../consts';
9
+ import { PageType } from '../../../../enums';
10
+ import { FS_CONTENT_CONFIG } from '../../../../injectors';
11
+ import { ContentPageEditorComponent } from '../content-page-editor';
12
+ import { ContentPageComponent } from '../content-page/content-page.component';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "@angular/material/dialog";
15
+ import * as i2 from "@firestitch/list";
16
+ import * as i3 from "@firestitch/date";
17
+ export class FsContentPagesComponent {
18
+ constructor(_config, _dialog) {
19
+ this._config = _config;
20
+ this._dialog = _dialog;
21
+ this.pageTypes = index(PageTypes, 'value', 'name');
22
+ this._destroy$ = new Subject();
23
+ }
24
+ ngOnInit() {
25
+ this._initListConfig();
26
+ }
27
+ openEditor(contentPage) {
28
+ this._dialog.open(ContentPageEditorComponent, {
29
+ data: {
30
+ contentPage,
31
+ config: this._config,
32
+ contentConfig: this._config,
33
+ },
34
+ maxWidth: '100vw',
35
+ width: '100%',
36
+ height: '100%',
37
+ autoFocus: false,
38
+ })
39
+ .afterClosed()
40
+ .pipe(takeUntil(this._destroy$))
41
+ .subscribe(() => {
42
+ this.listComponent.reload();
43
+ });
44
+ }
45
+ ngOnDestroy() {
46
+ this._destroy$.next();
47
+ this._destroy$.complete();
48
+ }
49
+ openContentPage(contentPage) {
50
+ return this._dialog.open(ContentPageComponent, {
51
+ data: { contentPage },
52
+ })
53
+ .afterClosed()
54
+ .pipe(takeUntil(this._destroy$));
55
+ }
56
+ _initListConfig() {
57
+ this.listConfig = {
58
+ filters: [
59
+ {
60
+ name: 'keyword',
61
+ type: ItemType.Keyword,
62
+ label: 'Search',
63
+ },
64
+ ],
65
+ actions: [
66
+ {
67
+ label: 'Create',
68
+ click: () => {
69
+ this.openContentPage({
70
+ type: PageType.StandardPage,
71
+ })
72
+ .pipe(filter((contentPage) => !!contentPage))
73
+ .subscribe((contentPage) => {
74
+ this.openEditor(contentPage);
75
+ this.listComponent.reload();
76
+ });
77
+ },
78
+ },
79
+ ],
80
+ rowActions: [
81
+ {
82
+ click: (data) => {
83
+ return this._config.deleteContentPage(data);
84
+ },
85
+ remove: {
86
+ title: 'Confirm',
87
+ template: 'Are you sure you would like to delete this record?',
88
+ },
89
+ menu: true,
90
+ label: 'Delete',
91
+ },
92
+ ],
93
+ fetch: (query) => {
94
+ return this._config.loadContentPages(query)
95
+ .pipe(map((response) => {
96
+ return { data: response.contentPages, paging: response.paging };
97
+ }));
98
+ },
99
+ restore: {
100
+ query: { state: 'deleted' },
101
+ filterLabel: 'Show Deleted',
102
+ menuLabel: 'Restore',
103
+ reload: true,
104
+ click: (row) => {
105
+ return this._config.saveContentPage({ id: row.id, state: 'active' });
106
+ },
107
+ },
108
+ };
109
+ }
110
+ }
111
+ FsContentPagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsContentPagesComponent, deps: [{ token: FS_CONTENT_CONFIG }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
112
+ FsContentPagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", 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=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"path\" title=\"Path\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a [href]=\"'/' + row.path\" target=\"_black\">/{{row.path}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"type\" title=\"Type\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{pageTypes[row.type]}}\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.modifyDate | fsDate: 'date-time-yearless'}}\n </ng-template>\n </fs-list-column>\n</fs-list>\n", 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"] }], 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": i3.FsDatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsContentPagesComponent, decorators: [{
114
+ type: Component,
115
+ args: [{ selector: 'fs-content-pages', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"path\" title=\"Path\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a [href]=\"'/' + row.path\" target=\"_black\">/{{row.path}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"type\" title=\"Type\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{pageTypes[row.type]}}\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.modifyDate | fsDate: 'date-time-yearless'}}\n </ng-template>\n </fs-list-column>\n</fs-list>\n", 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"] }]
116
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
117
+ type: Inject,
118
+ args: [FS_CONTENT_CONFIG]
119
+ }] }, { type: i1.MatDialog }]; }, propDecorators: { htmlEditorConfig: [{
120
+ type: Input
121
+ }], listComponent: [{
122
+ type: ViewChild,
123
+ args: [FsListComponent]
124
+ }] } });
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wYWdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZXMvY29udGVudC1wYWdlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZXMvY29udGVudC1wYWdlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLGtCQUFrQixDQUFDO0FBRWpFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7QUFT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SSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7cUJBQ3hDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtvQkFDcEIsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2xFLENBQUMsQ0FBQyxDQUNILENBQUM7WUFDTixDQUFDO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQzNCLFdBQVcsRUFBRSxjQUFjO2dCQUMzQixTQUFTLEVBQUUsU0FBUztnQkFDcEIsTUFBTSxFQUFFLElBQUk7Z0JBQ1osS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RSxDQUFDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7b0hBbEhVLHVCQUF1QixrQkFheEIsaUJBQWlCO3dHQWJoQix1QkFBdUIseUpBSXZCLGVBQWUsZ0RDdkM1QiwyNEJBc0JBOzJGRGFhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs7MEJBZTVDLE1BQU07MkJBQUMsaUJBQWlCO29FQVhYLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFHQyxhQUFhO3NCQURuQixTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgaW5kZXggfSBmcm9tICdAZmlyZXN0aXRjaC9jb21tb24nO1xuaW1wb3J0IHsgSXRlbVR5cGUgfSBmcm9tICdAZmlyZXN0aXRjaC9maWx0ZXInO1xuaW1wb3J0IHsgRnNIdG1sRWRpdG9yQ29uZmlnIH0gZnJvbSAnQGZpcmVzdGl0Y2gvaHRtbC1lZGl0b3InO1xuaW1wb3J0IHsgRnNMaXN0Q29tcG9uZW50LCBGc0xpc3RDb25maWcgfSBmcm9tICdAZmlyZXN0aXRjaC9saXN0JztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuXG5pbXBvcnQgeyBQYWdlVHlwZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25zdHMnO1xuaW1wb3J0IHsgUGFnZVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBGU19DT05URU5UX0NPTkZJRyB9IGZyb20gJy4uLy4uLy4uLy4uL2luamVjdG9ycyc7XG5pbXBvcnQgeyBGc0NvbnRlbnRDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbnRlbnRQYWdlRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vY29udGVudC1wYWdlLWVkaXRvcic7XG5pbXBvcnQgeyBDb250ZW50UGFnZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbnRlbnQtcGFnZS9jb250ZW50LXBhZ2UuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1jb250ZW50LXBhZ2VzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtcGFnZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb250ZW50LXBhZ2VzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0NvbnRlbnRQYWdlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBwdWJsaWMgaHRtbEVkaXRvckNvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnO1xuXG4gIEBWaWV3Q2hpbGQoRnNMaXN0Q29tcG9uZW50KVxuICBwdWJsaWMgbGlzdENvbXBvbmVudDogRnNMaXN0Q29tcG9uZW50O1xuXG4gIHB1YmxpYyBsaXN0Q29uZmlnOiBGc0xpc3RDb25maWc7XG4gIHB1YmxpYyBwYWdlVHlwZXMgPSBpbmRleChQYWdlVHlwZXMsICd2YWx1ZScsICduYW1lJyk7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRlNfQ09OVEVOVF9DT05GSUcpIHByaXZhdGUgX2NvbmZpZzogRnNDb250ZW50Q29uZmlnLFxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2luaXRMaXN0Q29uZmlnKCk7XG4gIH1cblxuICBwdWJsaWMgb3BlbkVkaXRvcihjb250ZW50UGFnZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oQ29udGVudFBhZ2VFZGl0b3JDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY29udGVudFBhZ2UsXG4gICAgICAgIGNvbmZpZzogdGhpcy5fY29uZmlnLFxuICAgICAgICBjb250ZW50Q29uZmlnOiB0aGlzLl9jb25maWcsXG4gICAgICB9LFxuICAgICAgbWF4V2lkdGg6ICcxMDB2dycsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50LnJlbG9hZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb3BlbkNvbnRlbnRQYWdlKGNvbnRlbnRQYWdlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlhbG9nLm9wZW4oQ29udGVudFBhZ2VDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgY29udGVudFBhZ2UgfSxcbiAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRMaXN0Q29uZmlnKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdENvbmZpZyA9IHtcbiAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICB0eXBlOiBJdGVtVHlwZS5LZXl3b3JkLFxuICAgICAgICAgIGxhYmVsOiAnU2VhcmNoJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ0NyZWF0ZScsXG4gICAgICAgICAgY2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3BlbkNvbnRlbnRQYWdlKHtcbiAgICAgICAgICAgICAgdHlwZTogUGFnZVR5cGUuU3RhbmRhcmRQYWdlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChjb250ZW50UGFnZSkgPT4gISFjb250ZW50UGFnZSksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoY29udGVudFBhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5FZGl0b3IoY29udGVudFBhZ2UpO1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdENvbXBvbmVudC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICByb3dBY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGljazogKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb25maWcuZGVsZXRlQ29udGVudFBhZ2UoZGF0YSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZW1vdmU6IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybScsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBkZWxldGUgdGhpcyByZWNvcmQ/JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lbnU6IHRydWUsXG4gICAgICAgICAgbGFiZWw6ICdEZWxldGUnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGZldGNoOiAocXVlcnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5sb2FkQ29udGVudFBhZ2VzKHF1ZXJ5KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7IGRhdGE6IHJlc3BvbnNlLmNvbnRlbnRQYWdlcywgcGFnaW5nOiByZXNwb25zZS5wYWdpbmcgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICB9LFxuICAgICAgcmVzdG9yZToge1xuICAgICAgICBxdWVyeTogeyBzdGF0ZTogJ2RlbGV0ZWQnIH0sXG4gICAgICAgIGZpbHRlckxhYmVsOiAnU2hvdyBEZWxldGVkJyxcbiAgICAgICAgbWVudUxhYmVsOiAnUmVzdG9yZScsXG4gICAgICAgIHJlbG9hZDogdHJ1ZSxcbiAgICAgICAgY2xpY2s6IChyb3cpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLnNhdmVDb250ZW50UGFnZSh7IGlkOiByb3cuaWQsIHN0YXRlOiAnYWN0aXZlJyB9KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5cbiIsIjxmcy1saXN0IFtjb25maWddPVwibGlzdENvbmZpZ1wiPlxuICA8ZnMtbGlzdC1jb2x1bW4gbmFtZT1cIm5hbWVcIiB0aXRsZT1cIk5hbWVcIiBbc29ydGFibGVdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPGEgKGNsaWNrKT1cIm9wZW5FZGl0b3Iocm93KVwiPnt7cm93Lm5hbWV9fTwvYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gbmFtZT1cInBhdGhcIiB0aXRsZT1cIlBhdGhcIiBbc29ydGFibGVdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPGEgW2hyZWZdPVwiJy8nICsgcm93LnBhdGhcIiB0YXJnZXQ9XCJfYmxhY2tcIj4ve3tyb3cucGF0aH19PC9hPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG4gIDxmcy1saXN0LWNvbHVtbiBuYW1lPVwidHlwZVwiIHRpdGxlPVwiVHlwZVwiIFtzb3J0YWJsZV09XCJ0cnVlXCI+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICB7e3BhZ2VUeXBlc1tyb3cudHlwZV19fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG4gIDxmcy1saXN0LWNvbHVtbiBuYW1lPVwibW9kaWZ5X2RhdGVcIiB0aXRsZT1cIk1vZGlmaWVkXCIgW3NvcnRhYmxlXT1cInRydWVcIj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgIHt7cm93Lm1vZGlmeURhdGUgfCBmc0RhdGU6ICdkYXRlLXRpbWUteWVhcmxlc3MnfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuPC9mcy1saXN0PlxuIl19
@@ -1,2 +1,2 @@
1
- export * from './content-pages.component';
1
+ export * from './content-pages.component';
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29udGVudC1wYWdlcy5jb21wb25lbnQnO1xuIl19
@@ -1,4 +1,4 @@
1
- export * from './content-page';
2
- export * from './content-page-editor';
3
- export * from './content-pages';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb250ZW50LXBhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZW50LXBhZ2UtZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGVudC1wYWdlcyc7XG4iXX0=
1
+ export * from './content-page';
2
+ export * from './content-page-editor';
3
+ export * from './content-pages';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb250ZW50LXBhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRlbnQtcGFnZS1lZGl0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRlbnQtcGFnZXMnO1xyXG4iXX0=