@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
@@ -1,121 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Inject, ViewChild, } from '@angular/core';
2
- import { MatDialog } from '@angular/material/dialog';
3
- import { ItemType } from '@firestitch/filter';
4
- import { FsListComponent } from '@firestitch/list';
5
- import { Subject } from 'rxjs';
6
- import { filter, map, takeUntil } from 'rxjs/operators';
7
- import { FS_CONTENT_CONFIG } from '../../../../injectors';
8
- import { ContentLayoutComponent } from '../../components/content-layout';
9
- import { ContentLayoutEditorComponent } from '../content-layout-editor/content-layout-editor.component';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/material/dialog";
12
- import * as i2 from "@firestitch/list";
13
- import * as i3 from "@firestitch/date";
14
- export class FsContentLayoutsComponent {
15
- constructor(_config, _dialog) {
16
- this._config = _config;
17
- this._dialog = _dialog;
18
- this._destroy$ = new Subject();
19
- }
20
- ngOnInit() {
21
- this._initListConfig();
22
- }
23
- openEditor(contentLayout) {
24
- this._dialog.open(ContentLayoutEditorComponent, {
25
- maxWidth: '100vw',
26
- width: '100%',
27
- height: '100%',
28
- data: {
29
- contentLayout,
30
- contentConfig: this._config,
31
- },
32
- })
33
- .afterClosed()
34
- .pipe(takeUntil(this._destroy$))
35
- .subscribe(() => {
36
- this.listComponent.reload();
37
- });
38
- }
39
- openLayout(contentLayout) {
40
- return this._dialog.open(ContentLayoutComponent, {
41
- data: {
42
- contentLayout,
43
- },
44
- })
45
- .afterClosed()
46
- .pipe(filter((_contentLayout) => !!_contentLayout), takeUntil(this._destroy$));
47
- }
48
- ngOnDestroy() {
49
- this._destroy$.next();
50
- this._destroy$.complete();
51
- }
52
- _initListConfig() {
53
- this.listConfig = {
54
- paging: false,
55
- filters: [
56
- {
57
- name: 'keyword',
58
- type: ItemType.Keyword,
59
- label: 'Search',
60
- },
61
- ],
62
- actions: [
63
- {
64
- label: 'Create',
65
- click: () => {
66
- this.openLayout({})
67
- .subscribe(() => {
68
- this.listComponent.reload();
69
- });
70
- },
71
- },
72
- ],
73
- rowActions: [
74
- {
75
- click: (data) => {
76
- return this._config.deleteContentLayout(data);
77
- },
78
- remove: {
79
- title: 'Confirm',
80
- template: 'Are you sure you would like to delete this record?',
81
- },
82
- menu: true,
83
- label: 'Delete',
84
- },
85
- ],
86
- fetch: (query) => {
87
- return this._config.loadContentLayouts(query)
88
- .pipe(map((contentLayouts) => {
89
- return { data: contentLayouts };
90
- }));
91
- },
92
- restore: {
93
- query: { state: 'deleted' },
94
- filterLabel: 'Show Deleted',
95
- menuLabel: 'Restore',
96
- reload: true,
97
- click: (row) => {
98
- return this._config.saveContentLayout({ id: row.id, state: 'active' });
99
- },
100
- },
101
- };
102
- }
103
- }
104
- FsContentLayoutsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentLayoutsComponent, deps: [{ token: FS_CONTENT_CONFIG }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
105
- FsContentLayoutsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentLayoutsComponent, selector: "fs-content-layouts", 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=\"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: [""], 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 });
106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentLayoutsComponent, decorators: [{
107
- type: Component,
108
- args: [{
109
- selector: 'fs-content-layouts',
110
- templateUrl: './content-layouts.component.html',
111
- styleUrls: ['./content-layouts.component.scss'],
112
- changeDetection: ChangeDetectionStrategy.OnPush,
113
- }]
114
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
115
- type: Inject,
116
- args: [FS_CONTENT_CONFIG]
117
- }] }, { type: i1.MatDialog }]; }, propDecorators: { listComponent: [{
118
- type: ViewChild,
119
- args: [FsListComponent]
120
- }] } });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1sYXlvdXRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9jb250ZW50LWxheW91dHMvY29tcG9uZW50cy9jb250ZW50LWxheW91dHMvY29udGVudC1sYXlvdXRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9jb250ZW50LWxheW91dHMvY29tcG9uZW50cy9jb250ZW50LWxheW91dHMvY29udGVudC1sYXlvdXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLGtCQUFrQixDQUFDO0FBRWpFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7Ozs7O0FBU3hHLE1BQU0sT0FBTyx5QkFBeUI7SUFTcEMsWUFDcUMsT0FBd0IsRUFDbkQsT0FBa0I7UUFEUyxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUNuRCxZQUFPLEdBQVAsT0FBTyxDQUFXO1FBSnBCLGNBQVMsR0FBRyxJQUFJLE9B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QUFFO29CQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RSxDQUFDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7dUhBM0dVLHlCQUF5QixrQkFVMUIsaUJBQWlCOzJHQVZoQix5QkFBeUIseUdBRXpCLGVBQWUsZ0RDL0I1Qix3ZUFZQTs0RkRpQmEseUJBQXlCO2tCQU5yQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSxrQ0FBa0M7b0JBQy9DLFNBQVMsRUFBRSxDQUFDLGtDQUFrQyxDQUFDO29CQUMvQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQVdJLE1BQU07MkJBQUMsaUJBQWlCO29FQVBwQixhQUFhO3NCQURuQixTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XG5pbXBvcnQgeyBGc0xpc3RDb21wb25lbnQsIEZzTGlzdENvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2xpc3QnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGU19DT05URU5UX0NPTkZJRyB9IGZyb20gJy4uLy4uLy4uLy4uL2luamVjdG9ycyc7XG5pbXBvcnQgeyBGc0NvbnRlbnRDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbnRlbnRMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvbnRlbnQtbGF5b3V0JztcbmltcG9ydCB7IENvbnRlbnRMYXlvdXRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9jb250ZW50LWxheW91dC1lZGl0b3IvY29udGVudC1sYXlvdXQtZWRpdG9yLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtY29udGVudC1sYXlvdXRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtbGF5b3V0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRlbnQtbGF5b3V0cy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnNDb250ZW50TGF5b3V0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKEZzTGlzdENvbXBvbmVudClcbiAgcHVibGljIGxpc3RDb21wb25lbnQ6IEZzTGlzdENvbXBvbmVudDtcblxuICBwdWJsaWMgbGlzdENvbmZpZzogRnNMaXN0Q29uZmlnO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEZTX0NPTlRFTlRfQ09ORklHKSBwcml2YXRlIF9jb25maWc6IEZzQ29udGVudENvbmZpZyxcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0TGlzdENvbmZpZygpO1xuICB9XG5cbiAgcHVibGljIG9wZW5FZGl0b3IoY29udGVudExheW91dDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oQ29udGVudExheW91dEVkaXRvckNvbXBvbmVudCwge1xuICAgICAgbWF4V2lkdGg6ICcxMDB2dycsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNvbnRlbnRMYXlvdXQsXG4gICAgICAgIGNvbnRlbnRDb25maWc6IHRoaXMuX2NvbmZpZyxcbiAgICAgIH0sXG4gICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxpc3RDb21wb25lbnQucmVsb2FkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuTGF5b3V0KGNvbnRlbnRMYXlvdXQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2RpYWxvZy5vcGVuKENvbnRlbnRMYXlvdXRDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY29udGVudExheW91dCxcbiAgICAgIH0sXG4gICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChfY29udGVudExheW91dCkgPT4gISFfY29udGVudExheW91dCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdExpc3RDb25maWcoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0Q29uZmlnID0ge1xuICAgICAgcGFnaW5nOiBmYWxzZSxcbiAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICB0eXBlOiBJdGVtVHlwZS5LZXl3b3JkLFxuICAgICAgICAgIGxhYmVsOiAnU2VhcmNoJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ0NyZWF0ZScsXG4gICAgICAgICAgY2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3BlbkxheW91dCh7fSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50LnJlbG9hZCgpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHJvd0FjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNsaWNrOiAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5kZWxldGVDb250ZW50TGF5b3V0KGRhdGEpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVtb3ZlOiB7XG4gICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm0nLFxuICAgICAgICAgICAgdGVtcGxhdGU6ICdBcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8gZGVsZXRlIHRoaXMgcmVjb3JkPycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZW51OiB0cnVlLFxuICAgICAgICAgIGxhYmVsOiAnRGVsZXRlJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBmZXRjaDogKHF1ZXJ5KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWcubG9hZENvbnRlbnRMYXlvdXRzKHF1ZXJ5KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChjb250ZW50TGF5b3V0czogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7IGRhdGE6IGNvbnRlbnRMYXlvdXRzICB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICByZXN0b3JlOiB7XG4gICAgICAgIHF1ZXJ5OiB7IHN0YXRlOiAnZGVsZXRlZCcgfSxcbiAgICAgICAgZmlsdGVyTGFiZWw6ICdTaG93IERlbGV0ZWQnLFxuICAgICAgICBtZW51TGFiZWw6ICdSZXN0b3JlJyxcbiAgICAgICAgcmVsb2FkOiB0cnVlLFxuICAgICAgICBjbGljazogKHJvdykgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9jb25maWcuc2F2ZUNvbnRlbnRMYXlvdXQoeyBpZDogcm93LmlkLCBzdGF0ZTogJ2FjdGl2ZScgfSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxufVxuXG4iLCI8ZnMtbGlzdCBbY29uZmlnXT1cImxpc3RDb25maWdcIj5cbiAgPGZzLWxpc3QtY29sdW1uIG5hbWU9XCJuYW1lXCIgdGl0bGU9XCJOYW1lXCIgW3NvcnRhYmxlXT1cInRydWVcIj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgIDxhIChjbGljayk9XCJvcGVuRWRpdG9yKHJvdylcIj57e3Jvdy5uYW1lfX08L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbiAgPGZzLWxpc3QtY29sdW1uIG5hbWU9XCJtb2RpZnlfZGF0ZVwiIHRpdGxlPVwiTW9kaWZpZWRcIiBbc29ydGFibGVdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAge3tyb3cubW9kaWZ5RGF0ZSB8IGZzRGF0ZTogJ2RhdGUtdGltZS15ZWFybGVzcyd9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG48L2ZzLWxpc3Q+XG4iXX0=
@@ -1,83 +0,0 @@
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 = Object.assign({}, contentPage);
60
- this._cdRef.markForCheck();
61
- });
62
- }
63
- }
64
- ContentPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", 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 });
65
- ContentPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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", "mobileActionPlacement", "mobileWidth", "mode"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], 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: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], 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 });
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContentPageComponent, decorators: [{
67
- type: Component,
68
- args: [{
69
- templateUrl: './content-page.component.html',
70
- styleUrls: ['./content-page.component.scss'],
71
- changeDetection: ChangeDetectionStrategy.OnPush,
72
- }]
73
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
74
- type: Inject,
75
- args: [FS_CONTENT_CONFIG]
76
- }] }, { type: undefined, decorators: [{
77
- type: Inject,
78
- args: [MAT_DIALOG_DATA]
79
- }] }, { type: i1.MatDialogRef }, { type: i2.FsMessage }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { textEditors: [{
80
- type: ViewChildren,
81
- args: [FsTextEditorComponent]
82
- }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9jb250ZW50LXBhZ2VzL2NvbXBvbmVudHMvY29udGVudC1wYWdlL2NvbnRlbnQtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZS9jb250ZW50LXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVMxRCxNQUFNLE9BQU8sb0JBQW9CO0lBWS9CLFlBQ3FDLE9BQXdCLEVBQzFCLEtBQVUsRUFDbkMsVUFBOEMsRUFDOUMsUUFBbUIsRUFDbkIsTUFBeUI7UUFKRSxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUFLO1FBQ25DLGVBQVUsR0FBVixVQUFVLENBQW9DO1FBQzlDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFaNUIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUV0QixZQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUV6QyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQW9CakMsU0FBSSxHQUFHLEdBQUcsRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7aUJBQ2xELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDTixDQUFDLENBQUM7SUFwQkMsQ0FBQztJQUVHLFFBQVE7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFZTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUU7YUFDOUIsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVMLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQzthQUN2QixJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDeEIsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN6QixJQUFJLENBQUMsV0FBVyxxQkFDWCxXQUFXLENBQ2YsQ0FBQztZQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztrSEE3RFUsb0JBQW9CLGtCQWFyQixpQkFBaUIsYUFDakIsZUFBZTtzR0FkZCxvQkFBb0Isb0ZBRWpCLHFCQUFxQixnREMvQnJDLDA0REErREE7NEZEbENhLG9CQUFvQjtrQkFMaEMsU0FBUzttQkFBQztvQkFDVCxXQUFXLEVBQUUsK0JBQStCO29CQUM1QyxTQUFTLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzswQkFjSSxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3hCLE1BQU07MkJBQUMsZUFBZTsrSEFYbEIsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnQGZpcmVzdGl0Y2gvdGV4dC1lZGl0b3InO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUGFnZVR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3RzJztcbmltcG9ydCB7IEZTX0NPTlRFTlRfQ09ORklHIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW5qZWN0b3JzJztcbmltcG9ydCB7IEZzQ29udGVudENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udGVudC1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50UGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkcmVuKEZzVGV4dEVkaXRvckNvbXBvbmVudClcbiAgcHVibGljIHRleHRFZGl0b3JzOiBRdWVyeUxpc3Q8RnNUZXh0RWRpdG9yQ29tcG9uZW50PjtcblxuICBwdWJsaWMgY29udGVudFBhZ2UgPSBudWxsO1xuICBwdWJsaWMgUGFnZVR5cGVzID0gUGFnZVR5cGVzO1xuICBwdWJsaWMgY29udGVudExheW91dHM7XG4gIHB1YmxpYyBlZGl0b3JzID0geyBjb250ZW50OiB0cnVlLCBzdHlsZXM6IHRydWUgfTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChGU19DT05URU5UX0NPTkZJRykgcHJpdmF0ZSBfY29uZmlnOiBGc0NvbnRlbnRDb25maWcsXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgX2RhdGE6IGFueSxcbiAgICBwcml2YXRlIF9kaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDb250ZW50UGFnZUNvbXBvbmVudD4sXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2dSZWYudXBkYXRlU2l6ZSgnNjAwcHgnKTtcbiAgICB0aGlzLl9mZXRjaERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcuc2F2ZUNvbnRlbnRQYWdlKHRoaXMuY29udGVudFBhZ2UpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChjb250ZW50UGFnZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU2F2ZWQgQ2hhbmdlcycpO1xuICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZShjb250ZW50UGFnZSk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfTtcblxuICBwcml2YXRlIF9mZXRjaERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5fY29uZmlnLmxvYWRDb250ZW50TGF5b3V0cygpXG4gICAgICAuc3Vic2NyaWJlKChjb250ZW50TGF5b3V0cykgPT4ge1xuICAgICAgICB0aGlzLmNvbnRlbnRMYXlvdXRzID0gY29udGVudExheW91dHM7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBvZih0aGlzLl9kYXRhLmNvbnRlbnRQYWdlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoY29udGVudFBhZ2UpID0+IHtcbiAgICAgICAgICByZXR1cm4gb2YoY29udGVudFBhZ2UpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGNvbnRlbnRQYWdlKSA9PiB7XG4gICAgICAgIHRoaXMuY29udGVudFBhZ2UgPSB7XG4gICAgICAgICAgLi4uY29udGVudFBhZ2UsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG59XG4iLCI8Zm9ybSBmc0Zvcm0gW3N1Ym1pdF09XCJzYXZlXCIgKmZzU2tlbGV0b25Gb3JtPVwiY29udGVudFBhZ2VcIj5cbiAgPGZzLWRpYWxvZz5cbiAgICA8aDEgbWF0LWRpYWxvZy10aXRsZT57e2NvbnRlbnRQYWdlLmlkID8gJ1BhZ2UnIDogJ0NyZWF0ZSBQYWdlJ319PC9oMT5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1jb2x1bW5cIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtbGFiZWw+VHlwZTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudFBhZ2UudHlwZVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJ0eXBlXCJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIFBhZ2VUeXBlc1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj5cbiAgICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJjb250ZW50TGF5b3V0c1wiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+TGF5b3V0PC9tYXQtbGFiZWw+XG4gICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudFBhZ2UuY29udGVudExheW91dElkXCJcbiAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICBuYW1lPVwiY29udGVudExheW91dElkXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudExheW91dHNcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLmlkXCI+XG4gICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtbGFiZWw+TmFtZTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudFBhZ2UubmFtZVwiXG4gICAgICAgICAgICBuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtbGFiZWw+UGF0aDwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudFBhZ2UucGF0aFwiXG4gICAgICAgICAgICBuYW1lPVwicGF0aFwiXG4gICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtbGFiZWw+VGl0bGU8L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRQYWdlLnRpdGxlXCJcbiAgICAgICAgICAgIG5hbWU9XCJ0aXRsZVwiPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICAgIDxmcy1mb3JtLWRpYWxvZy1hY3Rpb25zPlxuICAgICAgPC9mcy1mb3JtLWRpYWxvZy1hY3Rpb25zPlxuICAgIDwvZGl2PlxuICA8L2ZzLWRpYWxvZz5cbjwvZm9ybT5cbiJdfQ==
@@ -1,176 +0,0 @@
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
- export class ContentPageEditorComponent {
24
- constructor(_data, _dialogRef, _message, _dialog, _cdRef, _prompt) {
25
- this._data = _data;
26
- this._dialogRef = _dialogRef;
27
- this._message = _message;
28
- this._dialog = _dialog;
29
- this._cdRef = _cdRef;
30
- this._prompt = _prompt;
31
- this.focused = null;
32
- this.resizing = false;
33
- this.editors = {
34
- [EditorType.Html]: true,
35
- [EditorType.Scss]: true,
36
- [EditorType.Js]: false,
37
- [EditorType.GlobalScss]: false,
38
- };
39
- this._destroy$ = new Subject();
40
- this.submit = () => {
41
- this.submitting = true;
42
- return of(null)
43
- .pipe(filter(() => this.focused), switchMap(() => {
44
- switch (this.focused) {
45
- case EditorType.Js:
46
- case EditorType.Html:
47
- case EditorType.Scss:
48
- return this.saveContentPage();
49
- case EditorType.GlobalScss:
50
- return this.editor.saveGlobalScss();
51
- }
52
- return throwError('Invalid focus');
53
- }), tap(() => {
54
- this.editor.clearChange(this.focused);
55
- this._cdRef.markForCheck();
56
- }), finalize(() => {
57
- this.submitting = false;
58
- this._cdRef.markForCheck();
59
- }))
60
- .pipe(takeUntil(this._destroy$));
61
- };
62
- }
63
- get isMac() {
64
- return navigator.platform.toUpperCase().indexOf('MAC') >= 0;
65
- }
66
- ngOnInit() {
67
- this._dialogRef.addPanelClass('fs-content-editor-overlay-pane');
68
- this._dialogRef.disableClose = true;
69
- this.config = this._data.contentConfig;
70
- this._initContentPage(this._data.contentPage);
71
- this._initEscape();
72
- }
73
- editorToggleChange(event) {
74
- this.editors[event.value] = !this.editors[event.value];
75
- }
76
- ngOnDestroy() {
77
- this._destroy$.next();
78
- this._destroy$.complete();
79
- }
80
- _initContentPage(contentPage) {
81
- this.config.loadContentPage(contentPage.id)
82
- .subscribe((data) => {
83
- this.contentPage = data;
84
- this._cdRef.markForCheck();
85
- });
86
- }
87
- editorFocused(type) {
88
- this.focused = type;
89
- }
90
- save() {
91
- this.submit()
92
- .subscribe();
93
- }
94
- saveContentPage() {
95
- const names = {
96
- [EditorType.Js]: 'js',
97
- [EditorType.Scss]: 'styles',
98
- [EditorType.Html]: 'content',
99
- };
100
- const data = {
101
- id: this.contentPage.id,
102
- [names[this.focused]]: this.editor.changes[this.focused],
103
- };
104
- return this.config.saveContentPage(Object.assign({ id: this.contentPage.id }, data))
105
- .pipe(tap(() => {
106
- this._message.success('Saved Changes');
107
- }));
108
- }
109
- close() {
110
- if (!this.editor.hasChanges) {
111
- return this._dialogRef.close();
112
- }
113
- this._prompt.confirm({
114
- dialogConfig: {
115
- width: null,
116
- },
117
- title: 'You have unsaved changes',
118
- template: 'What would you like to do with your changes?',
119
- buttons: [
120
- {
121
- label: 'Review Changes',
122
- value: 'review',
123
- },
124
- {
125
- label: 'Discard Changes',
126
- value: 'discard',
127
- },
128
- ],
129
- })
130
- .pipe(takeUntil(this._destroy$))
131
- .subscribe((value) => {
132
- if (value === 'discard') {
133
- this._dialogRef.close();
134
- }
135
- });
136
- }
137
- openSettings() {
138
- this._dialog.open(ContentPageComponent, {
139
- data: {
140
- contentPage: this.contentPage,
141
- },
142
- })
143
- .afterClosed()
144
- .pipe(takeUntil(this._destroy$))
145
- .subscribe((contentPage) => {
146
- this.contentPage = Object.assign(Object.assign({}, this.contentPage), contentPage);
147
- this._cdRef.markForCheck();
148
- });
149
- }
150
- _initEscape() {
151
- fromEvent(document, 'keydown')
152
- .pipe(filter((event) => event.code === 'Escape'), takeUntil(this._destroy$)).subscribe(() => {
153
- const dialogRef = this._dialog.openDialogs.reverse()[0];
154
- if ((dialogRef === null || dialogRef === void 0 ? void 0 : dialogRef.componentInstance) === this) {
155
- this.close();
156
- }
157
- });
158
- }
159
- }
160
- ContentPageEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", 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 });
161
- ContentPageEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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-button\n [disabled]=\"!editor?.hasChanges || submitting\"\n [matTooltip]=\"isMac ? 'cmd+s' : 'ctrl+s'\"\n type=\"button\"\n (click)=\"save()\"> \n Save\n </button>\n\n <button \n mat-button\n (click)=\"close()\"\n type=\"button\"> \n Done\n </button>\n </div>\n </div>\n </h1>\n <div mat-dialog-content>\n <app-editor\n [contentConfig]=\"config\"\n [showHtml]=\"editors.html\"\n [showJs]=\"editors.js\"\n [showScss]=\"editors.scss\"\n [showGlobalScss]=\"editors.globalScss\"\n [html]=\"contentPage.content\"\n [scss]=\"contentPage.styles\"\n [js]=\"contentPage.js\"\n (focused)=\"editorFocused($event)\">\n </app-editor>\n </div>\n </fs-dialog>\n</form>\n", 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}h1 .toggles{display:flex;justify-content:flex-end;justify-self:baseline;font-size:13px}h1 .actions{margin-left:30px}h1 .actions .mat-button{border:solid 1px rgba(0,0,0,.12);line-height:48px;margin-right:10px;font-weight:600}h1 .actions .mat-button:last-child{margin-right:0}h1 .actions .mat-button ::ng-deep .svg-icon-process{display:none}.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", "mobileActionPlacement", "mobileWidth", "mode"] }, { 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-labelledby", "tabIndex", "appearance", "checked", "disabled", "id", "name", "aria-label", "value"], 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: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContentPageEditorComponent, decorators: [{
163
- type: Component,
164
- args: [{
165
- templateUrl: './content-page-editor.component.html',
166
- styleUrls: ['./content-page-editor.component.scss'],
167
- changeDetection: ChangeDetectionStrategy.OnPush,
168
- }]
169
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
170
- type: Inject,
171
- args: [MAT_DIALOG_DATA]
172
- }] }, { type: i1.MatDialogRef }, { type: i2.FsMessage }, { type: i1.MatDialog }, { type: i0.ChangeDetectorRef }, { type: i3.FsPrompt }]; }, propDecorators: { editor: [{
173
- type: ViewChild,
174
- args: [EditorComponent]
175
- }] } });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wYWdlLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZS1lZGl0b3IvY29udGVudC1wYWdlLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZS1lZGl0b3IvY29udGVudC1wYWdlLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVE5RSxNQUFNLE9BQU8sMEJBQTBCO0lB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U3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEluamVjdCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZUNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNQcm9tcHQgfSBmcm9tICdAZmlyZXN0aXRjaC9wcm9tcHQnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpbmFsaXplLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBFZGl0b3JUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgRnNDb250ZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lZGl0b3IvY29tcG9uZW50cy9lZGl0b3InO1xuaW1wb3J0IHsgQ29udGVudFBhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jb250ZW50LXBhZ2UvY29udGVudC1wYWdlLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LXBhZ2UtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udGVudC1wYWdlLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudFBhZ2VFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZChFZGl0b3JDb21wb25lbnQpXG4gIHB1YmxpYyBlZGl0b3I6IEVkaXRvckNvbXBvbmVudDtcblxuICBwdWJsaWMgY29udGVudFBhZ2U6IHtcbiAgICBpZD86IG51bWJlcjtcbiAgICBzdHlsZXM/OiBzdHJpbmc7XG4gICAgY29udGVudD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGpzPzogc3RyaW5nO1xuICB9O1xuICBwdWJsaWMgZm9jdXNlZCA9IG51bGw7XG4gIHB1YmxpYyBjb25maWc6IEZzQ29udGVudENvbmZpZztcbiAgcHVibGljIHJlc2l6aW5nID0gZmFsc2U7XG4gIHB1YmxpYyB0aXRsZTtcbiAgcHVibGljIGVkaXRvcnMgPSB7XG4gICAgW0VkaXRvclR5cGUuSHRtbF06IHRydWUsXG4gICAgW0VkaXRvclR5cGUuU2Nzc106IHRydWUsXG4gICAgW0VkaXRvclR5cGUuSnNdOiBmYWxzZSxcbiAgICBbRWRpdG9yVHlwZS5HbG9iYWxTY3NzXTogZmFsc2UsXG4gIH07XG5cbiAgcHVibGljIGdldCBpc01hYygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbmF2aWdhdG9yLnBsYXRmb3JtLnRvVXBwZXJDYXNlKCkuaW5kZXhPZignTUFDJykgPj0gMDtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXR0aW5nOiBib29sZWFuO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YToge1xuICAgICAgY29udGVudFBhZ2U6IGFueTtcbiAgICAgIGNvbnRlbnRDb25maWc6IEZzQ29udGVudENvbmZpZztcbiAgICB9LFxuICAgIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPENvbnRlbnRQYWdlRWRpdG9yQ29tcG9uZW50PixcbiAgICBwcml2YXRlIF9tZXNzYWdlOiBGc01lc3NhZ2UsXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX3Byb21wdDogRnNQcm9tcHQsXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZ1JlZi5hZGRQYW5lbENsYXNzKCdmcy1jb250ZW50LWVkaXRvci1vdmVybGF5LXBhbmUnKTtcbiAgICB0aGlzLl9kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuX2RhdGEuY29udGVudENvbmZpZztcbiAgICB0aGlzLl9pbml0Q29udGVudFBhZ2UodGhpcy5fZGF0YS5jb250ZW50UGFnZSk7XG4gICAgdGhpcy5faW5pdEVzY2FwZSgpO1xuICB9XG5cbiAgcHVibGljIGVkaXRvclRvZ2dsZUNoYW5nZShldmVudDogTWF0QnV0dG9uVG9nZ2xlQ2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3JzW2V2ZW50LnZhbHVlXSA9ICF0aGlzLmVkaXRvcnNbZXZlbnQudmFsdWVdO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIF9pbml0Q29udGVudFBhZ2UoY29udGVudFBhZ2UpIHtcbiAgICB0aGlzLmNvbmZpZy5sb2FkQ29udGVudFBhZ2UoY29udGVudFBhZ2UuaWQpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuY29udGVudFBhZ2UgPSBkYXRhO1xuICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGVkaXRvckZvY3VzZWQodHlwZSkge1xuICAgIHRoaXMuZm9jdXNlZCA9IHR5cGU7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1Ym1pdCgpXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0ID0gKCk6IE9ic2VydmFibGU8YW55PiA9PiB7XG4gICAgdGhpcy5zdWJtaXR0aW5nID0gdHJ1ZTtcblxuICAgIHJldHVybiBvZihudWxsKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmZvY3VzZWQpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAodGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICBjYXNlIEVkaXRvclR5cGUuSnM6XG4gICAgICAgICAgICBjYXNlIEVkaXRvclR5cGUuSHRtbDpcbiAgICAgICAgICAgIGNhc2UgRWRpdG9yVHlwZS5TY3NzOlxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zYXZlQ29udGVudFBhZ2UoKTtcbiAgICAgICAgICAgIGNhc2UgRWRpdG9yVHlwZS5HbG9iYWxTY3NzOlxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3Iuc2F2ZUdsb2JhbFNjc3MoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcignSW52YWxpZCBmb2N1cycpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmVkaXRvci5jbGVhckNoYW5nZSh0aGlzLmZvY3VzZWQpO1xuICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKTtcbiAgfTtcblxuICBwdWJsaWMgc2F2ZUNvbnRlbnRQYWdlKCkge1xuICAgIGNvbnN0IG5hbWVzID0ge1xuICAgICAgW0VkaXRvclR5cGUuSnNdOiAnanMnLFxuICAgICAgW0VkaXRvclR5cGUuU2Nzc106ICdzdHlsZXMnLFxuICAgICAgW0VkaXRvclR5cGUuSHRtbF06ICdjb250ZW50JyxcbiAgICB9O1xuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLmNvbnRlbnRQYWdlLmlkLFxuICAgICAgW25hbWVzW3RoaXMuZm9jdXNlZF1dOiB0aGlzLmVkaXRvci5jaGFuZ2VzW3RoaXMuZm9jdXNlZF0sXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5zYXZlQ29udGVudFBhZ2Uoe1xuICAgICAgaWQ6IHRoaXMuY29udGVudFBhZ2UuaWQsXG4gICAgICAuLi5kYXRhLFxuICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1NhdmVkIENoYW5nZXMnKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cblxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVkaXRvci5oYXNDaGFuZ2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcHJvbXB0LmNvbmZpcm0oe1xuICAgICAgZGlhbG9nQ29uZmlnOiB7XG4gICAgICAgIHdpZHRoOiBudWxsLFxuICAgICAgfSxcbiAgICAgIHRpdGxlOiAnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzJyxcbiAgICAgIHRlbXBsYXRlOiAnV2hhdCB3b3VsZCB5b3UgbGlrZSB0byBkbyB3aXRoIHlvdXIgY2hhbmdlcz8nLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdSZXZpZXcgQ2hhbmdlcycsXG4gICAgICAgICAgdmFsdWU6ICdyZXZpZXcnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdEaXNjYXJkIENoYW5nZXMnLFxuICAgICAgICAgIHZhbHVlOiAnZGlzY2FyZCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJ2Rpc2NhcmQnKSB7XG4gICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9wZW5TZXR0aW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2cub3BlbihDb250ZW50UGFnZUNvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICBjb250ZW50UGFnZTogdGhpcy5jb250ZW50UGFnZSxcbiAgICAgIH0sXG4gICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGNvbnRlbnRQYWdlKSA9PiB7XG4gICAgICAgIHRoaXMuY29udGVudFBhZ2UgPSB7XG4gICAgICAgICAgLi4udGhpcy5jb250ZW50UGFnZSxcbiAgICAgICAgICAuLi5jb250ZW50UGFnZSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRFc2NhcGUoKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gZXZlbnQuY29kZSA9PT0gJ0VzY2FwZScpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2cub3BlbkRpYWxvZ3MucmV2ZXJzZSgpWzBdO1xuICAgICAgICBpZiAoZGlhbG9nUmVmPy5jb21wb25lbnRJbnN0YW5jZSA9PT0gdGhpcykge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxufVxuIiwiPGZvcm0gZnNGb3JtIFtzdWJtaXRdPVwic3VibWl0XCIgW2RpcnR5U3VibWl0QnV0dG9uXT1cImZhbHNlXCIgW2NvbmZpcm1dPVwiZmFsc2VcIj5cbiAgPGZzLWRpYWxvZyAqZnNTa2VsZXRvbkZvcm09XCJjb250ZW50UGFnZVwiPlxuICAgIDxoMSBtYXQtZGlhbG9nLXRpdGxlPlxuICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgICBQYWdlIEVkaXRvclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbFwiPnt7Y29udGVudFBhZ2UubmFtZX19PC9kaXY+ICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YVxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5TZXR0aW5ncygpXCJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvbj5cbiAgICAgICAgICA8bWF0LWljb24+c2V0dGluZ3M8L21hdC1pY29uPlxuICAgICAgICA8L2E+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZXNcIj5cbiAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgbXVsdGlwbGU+XG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJodG1sXCIgW2NoZWNrZWRdPVwiZWRpdG9ycy5odG1sXCIgKGNoYW5nZSk9XCJlZGl0b3JUb2dnbGVDaGFuZ2UoJGV2ZW50KVwiPkhUTUw8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwic2Nzc1wiIFtjaGVja2VkXT1cImVkaXRvcnMuc2Nzc1wiIChjaGFuZ2UpPVwiZWRpdG9yVG9nZ2xlQ2hhbmdlKCRldmVudClcIj5TQ1NTPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImpzXCIgW2NoZWNrZWRdPVwiZWRpdG9ycy5qc1wiIChjaGFuZ2UpPVwiZWRpdG9yVG9nZ2xlQ2hhbmdlKCRldmVudClcIj5KUzwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJnbG9iYWxTY3NzXCIgW2NoZWNrZWRdPVwiZWRpdG9ycy5nbG9iYWxTY3NzXCIgKGNoYW5nZSk9XCJlZGl0b3JUb2dnbGVDaGFuZ2UoJGV2ZW50KVwiPkdsb2JhbCBTQ1NTPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPiAgICAgIFxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgI3N1Ym1pdFxuICAgICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdG9yPy5oYXNDaGFuZ2VzIHx8IHN1Ym1pdHRpbmdcIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJpc01hYyA/ICdjbWQrcycgOiAnY3RybCtzJ1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCI+ICBcbiAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+ICBcbiAgICAgICAgICAgIERvbmVcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2gxPlxuICAgIDxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxuICAgICAgPGFwcC1lZGl0b3JcbiAgICAgICAgW2NvbnRlbnRDb25maWddPVwiY29uZmlnXCJcbiAgICAgICAgW3Nob3dIdG1sXT1cImVkaXRvcnMuaHRtbFwiXG4gICAgICAgIFtzaG93SnNdPVwiZWRpdG9ycy5qc1wiXG4gICAgICAgIFtzaG93U2Nzc109XCJlZGl0b3JzLnNjc3NcIlxuICAgICAgICBbc2hvd0dsb2JhbFNjc3NdPVwiZWRpdG9ycy5nbG9iYWxTY3NzXCJcbiAgICAgICAgW2h0bWxdPVwiY29udGVudFBhZ2UuY29udGVudFwiXG4gICAgICAgIFtzY3NzXT1cImNvbnRlbnRQYWdlLnN0eWxlc1wiXG4gICAgICAgIFtqc109XCJjb250ZW50UGFnZS5qc1wiXG4gICAgICAgIChmb2N1c2VkKT1cImVkaXRvckZvY3VzZWQoJGV2ZW50KVwiPlxuICAgICAgPC9hcHAtZWRpdG9yPlxuICAgIDwvZGl2PlxuICA8L2ZzLWRpYWxvZz5cbjwvZm9ybT5cbiJdfQ==
@@ -1,130 +0,0 @@
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: "12.2.16", 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: "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=\"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: "12.2.16", ngImport: i0, type: FsContentPagesComponent, decorators: [{
114
- type: Component,
115
- args: [{
116
- selector: 'fs-content-pages',
117
- templateUrl: './content-pages.component.html',
118
- styleUrls: ['./content-pages.component.scss'],
119
- changeDetection: ChangeDetectionStrategy.OnPush,
120
- }]
121
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
122
- type: Inject,
123
- args: [FS_CONTENT_CONFIG]
124
- }] }, { type: i1.MatDialog }]; }, propDecorators: { htmlEditorConfig: [{
125
- type: Input
126
- }], listComponent: [{
127
- type: ViewChild,
128
- args: [FsListComponent]
129
- }] } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wYWdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZXMvY29udGVudC1wYWdlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvY29udGVudC1wYWdlcy9jb21wb25lbnRzL2NvbnRlbnQtcGFnZXMvY29udGVudC1wYWdlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLGtCQUFrQixDQUFDO0FBRWpFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7QUFT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SSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7cUJBQ3hDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtvQkFDcEIsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2xFLENBQUMsQ0FBQyxDQUNILENBQUM7WUFDTixDQUFDO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQzNCLFdBQVcsRUFBRSxjQUFjO2dCQUMzQixTQUFTLEVBQUUsU0FBUztnQkFDcEIsTUFBTSxFQUFFLElBQUk7Z0JBQ1osS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RSxDQUFDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7cUhBbEhVLHVCQUF1QixrQkFheEIsaUJBQWlCO3lHQWJoQix1QkFBdUIseUpBSXZCLGVBQWUsZ0RDdkM1QiwyNEJBc0JBOzRGRGFhLHVCQUF1QjtrQkFObkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixXQUFXLEVBQUUsZ0NBQWdDO29CQUM3QyxTQUFTLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztvQkFDN0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzswQkFjSSxNQUFNOzJCQUFDLGlCQUFpQjtvRUFYWCxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBR0MsYUFBYTtzQkFEbkIsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IGluZGV4IH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcbmltcG9ydCB7IEZzSHRtbEVkaXRvckNvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2h0bWwtZWRpdG9yJztcbmltcG9ydCB7IEZzTGlzdENvbXBvbmVudCwgRnNMaXN0Q29uZmlnIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGlzdCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cblxuaW1wb3J0IHsgUGFnZVR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3RzJztcbmltcG9ydCB7IFBhZ2VUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgRlNfQ09OVEVOVF9DT05GSUcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbmplY3RvcnMnO1xuaW1wb3J0IHsgRnNDb250ZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb250ZW50UGFnZUVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbnRlbnQtcGFnZS1lZGl0b3InO1xuaW1wb3J0IHsgQ29udGVudFBhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jb250ZW50LXBhZ2UvY29udGVudC1wYWdlLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtY29udGVudC1wYWdlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LXBhZ2VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udGVudC1wYWdlcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnNDb250ZW50UGFnZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgcHVibGljIGh0bWxFZGl0b3JDb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZztcblxuICBAVmlld0NoaWxkKEZzTGlzdENvbXBvbmVudClcbiAgcHVibGljIGxpc3RDb21wb25lbnQ6IEZzTGlzdENvbXBvbmVudDtcblxuICBwdWJsaWMgbGlzdENvbmZpZzogRnNMaXN0Q29uZmlnO1xuICBwdWJsaWMgcGFnZVR5cGVzID0gaW5kZXgoUGFnZVR5cGVzLCAndmFsdWUnLCAnbmFtZScpO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEZTX0NPTlRFTlRfQ09ORklHKSBwcml2YXRlIF9jb25maWc6IEZzQ29udGVudENvbmZpZyxcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0TGlzdENvbmZpZygpO1xuICB9XG5cbiAgcHVibGljIG9wZW5FZGl0b3IoY29udGVudFBhZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKENvbnRlbnRQYWdlRWRpdG9yQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNvbnRlbnRQYWdlLFxuICAgICAgICBjb25maWc6IHRoaXMuX2NvbmZpZyxcbiAgICAgICAgY29udGVudENvbmZpZzogdGhpcy5fY29uZmlnLFxuICAgICAgfSxcbiAgICAgIG1heFdpZHRoOiAnMTAwdncnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubGlzdENvbXBvbmVudC5yZWxvYWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG9wZW5Db250ZW50UGFnZShjb250ZW50UGFnZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2RpYWxvZy5vcGVuKENvbnRlbnRQYWdlQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7IGNvbnRlbnRQYWdlIH0sXG4gICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0TGlzdENvbmZpZygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RDb25maWcgPSB7XG4gICAgICBmaWx0ZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuS2V5d29yZCxcbiAgICAgICAgICBsYWJlbDogJ1NlYXJjaCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdDcmVhdGUnLFxuICAgICAgICAgIGNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Db250ZW50UGFnZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFBhZ2VUeXBlLlN0YW5kYXJkUGFnZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoY29udGVudFBhZ2UpID0+ICEhY29udGVudFBhZ2UpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNvbnRlbnRQYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuRWRpdG9yKGNvbnRlbnRQYWdlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RDb21wb25lbnQucmVsb2FkKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcm93QWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgY2xpY2s6IChkYXRhKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLmRlbGV0ZUNvbnRlbnRQYWdlKGRhdGEpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVtb3ZlOiB7XG4gICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm0nLFxuICAgICAgICAgICAgdGVtcGxhdGU6ICdBcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8gZGVsZXRlIHRoaXMgcmVjb3JkPycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZW51OiB0cnVlLFxuICAgICAgICAgIGxhYmVsOiAnRGVsZXRlJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBmZXRjaDogKHF1ZXJ5KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWcubG9hZENvbnRlbnRQYWdlcyhxdWVyeSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4geyBkYXRhOiByZXNwb25zZS5jb250ZW50UGFnZXMsIHBhZ2luZzogcmVzcG9uc2UucGFnaW5nIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIHJlc3RvcmU6IHtcbiAgICAgICAgcXVlcnk6IHsgc3RhdGU6ICdkZWxldGVkJyB9LFxuICAgICAgICBmaWx0ZXJMYWJlbDogJ1Nob3cgRGVsZXRlZCcsXG4gICAgICAgIG1lbnVMYWJlbDogJ1Jlc3RvcmUnLFxuICAgICAgICByZWxvYWQ6IHRydWUsXG4gICAgICAgIGNsaWNrOiAocm93KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5zYXZlQ29udGVudFBhZ2UoeyBpZDogcm93LmlkLCBzdGF0ZTogJ2FjdGl2ZScgfSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuXG4iLCI8ZnMtbGlzdCBbY29uZmlnXT1cImxpc3RDb25maWdcIj5cbiAgPGZzLWxpc3QtY29sdW1uIG5hbWU9XCJuYW1lXCIgdGl0bGU9XCJOYW1lXCIgW3NvcnRhYmxlXT1cInRydWVcIj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgIDxhIChjbGljayk9XCJvcGVuRWRpdG9yKHJvdylcIj57e3Jvdy5uYW1lfX08L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbiAgPGZzLWxpc3QtY29sdW1uIG5hbWU9XCJwYXRoXCIgdGl0bGU9XCJQYXRoXCIgW3NvcnRhYmxlXT1cInRydWVcIj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgIDxhIFtocmVmXT1cIicvJyArIHJvdy5wYXRoXCIgdGFyZ2V0PVwiX2JsYWNrXCI+L3t7cm93LnBhdGh9fTwvYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gbmFtZT1cInR5cGVcIiB0aXRsZT1cIlR5cGVcIiBbc29ydGFibGVdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAge3twYWdlVHlwZXNbcm93LnR5cGVdfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gbmFtZT1cIm1vZGlmeV9kYXRlXCIgdGl0bGU9XCJNb2RpZmllZFwiIFtzb3J0YWJsZV09XCJ0cnVlXCI+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICB7e3Jvdy5tb2RpZnlEYXRlIHwgZnNEYXRlOiAnZGF0ZS10aW1lLXllYXJsZXNzJ319XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbjwvZnMtbGlzdD5cbiJdfQ==