@codetectonics/mantle 0.0.7 → 1.0.0

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 (128) hide show
  1. package/bundles/codetectonics-mantle.umd.js +7870 -6899
  2. package/bundles/codetectonics-mantle.umd.js.map +1 -1
  3. package/esm2015/lib/components/dashboard/containers/plain-dashboard-container/plain-dashboard-container.component.js +1 -1
  4. package/esm2015/lib/components/dashboard/dashboard-card/dashboard-card.component.js +3 -2
  5. package/esm2015/lib/components/dashboard/widgets/dashboard-info-card/dashboard-info-card.component.js +1 -1
  6. package/esm2015/lib/components/dashboard/widgets/dashboard-table/dashboard-table.component.js +6 -2
  7. package/esm2015/lib/components/dashboard/widgets/dynamic-chart/dynamic-chart.component.js +9 -2
  8. package/esm2015/lib/components/dashboard/widgets/dynamic-widget-display/dynamic-widget-display.component.js +2 -2
  9. package/esm2015/lib/components/details/dialog-details/dialog-details.component.js +11 -4
  10. package/esm2015/lib/components/details/dialog-nested-details/dialog-nested-details.component.js +3 -2
  11. package/esm2015/lib/components/details/fields/dynamic-attribute-display/dynamic-attribute-display.component.js +5 -4
  12. package/esm2015/lib/components/details/fields/icon-attribute-display/icon-attribute-display.component.js +22 -0
  13. package/esm2015/lib/components/details/sections/dynamic-details-section/dynamic-details-section.component.js +7 -3
  14. package/esm2015/lib/components/details/sections/grid-details-section/grid-details-section.component.js +17 -5
  15. package/esm2015/lib/components/details/sections/roster-shift-list-details-section/roster-shift-list-details-section.component.js +21 -0
  16. package/esm2015/lib/components/details/sections/table-details-section/table-details-section.component.js +7 -2
  17. package/esm2015/lib/components/form/dialog-form/dialog-form.component.js +18 -5
  18. package/esm2015/lib/components/form/dialog-nested-form/dialog-nested-form.component.js +13 -3
  19. package/esm2015/lib/components/form/dynamic-form/dynamic-form.component.js +6 -2
  20. package/esm2015/lib/components/form/fields/autocomplete-input/autocomplete-input.component.js +3 -2
  21. package/esm2015/lib/components/form/fields/chip-input/chip-input.component.js +3 -2
  22. package/esm2015/lib/components/form/fields/datepicker/datepicker.component.js +3 -2
  23. package/esm2015/lib/components/form/fields/datetimepicker/datetimepicker.component.js +3 -2
  24. package/esm2015/lib/components/form/fields/dropdown/dropdown.component.js +3 -2
  25. package/esm2015/lib/components/form/fields/dynamic-form-field/dynamic-form-field.component.js +15 -11
  26. package/esm2015/lib/components/form/fields/filepicker/filepicker.component.js +3 -2
  27. package/esm2015/lib/components/form/fields/image-cropper/image-cropper.component.js +3 -2
  28. package/esm2015/lib/components/form/fields/imagepicker/imagepicker.component.js +3 -2
  29. package/esm2015/lib/components/form/fields/markdown-input/markdown-input.component.js +3 -2
  30. package/esm2015/lib/components/form/fields/number-input/number-input.component.js +3 -2
  31. package/esm2015/lib/components/form/fields/password-input/password-input.component.js +3 -2
  32. package/esm2015/lib/components/form/fields/text-input/text-input.component.js +3 -2
  33. package/esm2015/lib/components/form/fields/textarea/textarea.component.js +3 -2
  34. package/esm2015/lib/components/form/fields/time-input/time-input.component.js +80 -0
  35. package/esm2015/lib/components/form/sections/dynamic-form-section/dynamic-form-section.component.js +15 -7
  36. package/esm2015/lib/components/form/sections/grid-form-section/grid-form-section.component.js +11 -2
  37. package/esm2015/lib/components/form/sections/roster-shift-list-form-section/roster-shift-list-form-section.component.js +69 -0
  38. package/esm2015/lib/components/form/sections/table-form-section/table-form-section.component.js +13 -3
  39. package/esm2015/lib/components/navigation/nav-tree/nav-tree.component.js +5 -4
  40. package/esm2015/lib/components/navigation/paginator/custom-paginator-intl.js +33 -0
  41. package/esm2015/lib/components/pages/dashboard-page/dashboard-page.component.js +4 -3
  42. package/esm2015/lib/components/pages/detail-page/detail-page.component.js +25 -19
  43. package/esm2015/lib/components/pages/documents-page/documents-page.component.js +4 -3
  44. package/esm2015/lib/components/pages/export-page/export-page.component.js +4 -3
  45. package/esm2015/lib/components/pages/form-page/form-page.component.js +7 -6
  46. package/esm2015/lib/components/pages/layout-editor-page/layout-editor-page.component.js +12 -8
  47. package/esm2015/lib/components/pages/list-page/list-page-datasource.js +2 -2
  48. package/esm2015/lib/components/pages/list-page/list-page.component.js +22 -11
  49. package/esm2015/lib/components/pages/roster-page/roster-gantt.data.js +50 -0
  50. package/esm2015/lib/components/pages/roster-page/roster-page.component.js +134 -0
  51. package/esm2015/lib/components/pages/tabbed-page/tabbed-page.component.js +3 -2
  52. package/esm2015/lib/components/titles/page-title/page-title.component.js +11 -9
  53. package/esm2015/lib/components/titles/section-title/section-title.component.js +3 -2
  54. package/esm2015/lib/components/widgets/delete-confirmation-dialog/delete-confirmation-dialog.component.js +3 -2
  55. package/esm2015/lib/components/widgets/draggable-table/draggable-table-datasource.js +31 -0
  56. package/esm2015/lib/components/widgets/draggable-table/draggable-table.component.js +79 -0
  57. package/esm2015/lib/components/widgets/dynamic-table/dynamic-table.component.js +4 -5
  58. package/esm2015/lib/components/widgets/file-preview-dialog/file-preview-dialog.component.js +3 -2
  59. package/esm2015/lib/components/widgets/qr-code-dialog/qr-code-dialog.component.js +37 -0
  60. package/esm2015/lib/components/widgets/save-confirmation-dialog/save-confirmation-dialog.component.js +4 -3
  61. package/esm2015/lib/components/widgets/search-panel/search-panel.component.js +3 -2
  62. package/esm2015/lib/components/widgets/snackbar/snackbar.component.js +3 -2
  63. package/esm2015/lib/data-structures/dynamic-layout.structure.js +1 -1
  64. package/esm2015/lib/guards/feature.guard.js +2 -2
  65. package/esm2015/lib/language-packs/en.data.js +62 -0
  66. package/esm2015/lib/language-packs/ms.data.js +62 -0
  67. package/esm2015/lib/mantle.module.js +49 -4
  68. package/esm2015/lib/material.module.js +12 -2
  69. package/esm2015/lib/services/confirmation.service.js +2 -2
  70. package/esm2015/lib/services/current-user.service.js +55 -21
  71. package/esm2015/lib/services/data-broadcast.service.js +18 -0
  72. package/esm2015/lib/services/dynamic-form.service.js +2 -1
  73. package/esm2015/lib/services/feature-config.service.js +34 -12
  74. package/esm2015/lib/services/interfaces/detail-page.service.js +1 -1
  75. package/esm2015/lib/services/interfaces/form-page.service.js +1 -1
  76. package/esm2015/lib/services/interfaces/list-page.service.js +1 -1
  77. package/esm2015/lib/services/interfaces/roster-page.service.js +2 -0
  78. package/esm2015/lib/services/interfaces/roster-schedule.service.js +2 -0
  79. package/esm2015/lib/services/locale.service.js +75 -0
  80. package/esm2015/lib/services/object.service.js +9 -1
  81. package/esm2015/lib/services/password-check.service.js +10 -8
  82. package/esm2015/public-api.js +15 -1
  83. package/fesm2015/codetectonics-mantle.js +1158 -255
  84. package/fesm2015/codetectonics-mantle.js.map +1 -1
  85. package/lib/components/dashboard/widgets/dashboard-table/dashboard-table.component.d.ts +2 -1
  86. package/lib/components/details/dialog-details/dialog-details.component.d.ts +1 -0
  87. package/lib/components/details/fields/icon-attribute-display/icon-attribute-display.component.d.ts +6 -0
  88. package/lib/components/details/sections/dynamic-details-section/dynamic-details-section.component.d.ts +2 -1
  89. package/lib/components/details/sections/roster-shift-list-details-section/roster-shift-list-details-section.component.d.ts +9 -0
  90. package/lib/components/details/sections/table-details-section/table-details-section.component.d.ts +3 -1
  91. package/lib/components/form/dialog-form/dialog-form.component.d.ts +5 -1
  92. package/lib/components/form/dialog-nested-form/dialog-nested-form.component.d.ts +3 -0
  93. package/lib/components/form/fields/time-input/time-input.component.d.ts +22 -0
  94. package/lib/components/form/sections/dynamic-form-section/dynamic-form-section.component.d.ts +4 -1
  95. package/lib/components/form/sections/roster-shift-list-form-section/roster-shift-list-form-section.component.d.ts +23 -0
  96. package/lib/components/form/sections/table-form-section/table-form-section.component.d.ts +3 -1
  97. package/lib/components/navigation/nav-tree/nav-tree.component.d.ts +2 -2
  98. package/lib/components/navigation/paginator/custom-paginator-intl.d.ts +12 -0
  99. package/lib/components/pages/detail-page/detail-page.component.d.ts +4 -3
  100. package/lib/components/pages/layout-editor-page/layout-editor-page.component.d.ts +2 -1
  101. package/lib/components/pages/list-page/list-page.component.d.ts +4 -1
  102. package/lib/components/pages/roster-page/roster-gantt.data.d.ts +1 -0
  103. package/lib/components/pages/roster-page/roster-page.component.d.ts +40 -0
  104. package/lib/components/titles/page-title/page-title.component.d.ts +3 -1
  105. package/lib/components/widgets/delete-confirmation-dialog/delete-confirmation-dialog.component.d.ts +1 -1
  106. package/lib/components/widgets/draggable-table/draggable-table-datasource.d.ts +23 -0
  107. package/lib/components/widgets/draggable-table/draggable-table.component.d.ts +24 -0
  108. package/lib/components/widgets/qr-code-dialog/qr-code-dialog.component.d.ts +18 -0
  109. package/lib/components/widgets/save-confirmation-dialog/save-confirmation-dialog.component.d.ts +0 -2
  110. package/lib/data-structures/dynamic-layout.structure.d.ts +13 -0
  111. package/lib/language-packs/en.data.d.ts +61 -0
  112. package/lib/language-packs/ms.data.d.ts +61 -0
  113. package/lib/mantle.module.d.ts +104 -94
  114. package/lib/material.module.d.ts +12 -11
  115. package/lib/services/current-user.service.d.ts +14 -7
  116. package/lib/services/data-broadcast.service.d.ts +8 -0
  117. package/lib/services/dynamic-form.service.d.ts +2 -0
  118. package/lib/services/feature-config.service.d.ts +15 -3
  119. package/lib/services/interfaces/detail-page.service.d.ts +4 -2
  120. package/lib/services/interfaces/form-page.service.d.ts +11 -3
  121. package/lib/services/interfaces/list-page.service.d.ts +14 -1
  122. package/lib/services/interfaces/roster-page.service.d.ts +20 -0
  123. package/lib/services/interfaces/roster-schedule.service.d.ts +22 -0
  124. package/lib/services/locale.service.d.ts +21 -0
  125. package/lib/services/object.service.d.ts +2 -0
  126. package/lib/services/password-check.service.d.ts +3 -1
  127. package/package.json +3 -1
  128. package/public-api.d.ts +14 -0
@@ -10,9 +10,10 @@ import * as i5 from "@angular/flex-layout/flex";
10
10
  import * as i6 from "@angular/common";
11
11
  import * as i7 from "@angular/router";
12
12
  import * as i8 from "@angular/material/badge";
13
+ import * as i9 from "@ngx-translate/core";
13
14
  export class NavTreeComponent {
14
15
  constructor() {
15
- this.reminderCount = 0;
16
+ this.notificationCount = 0;
16
17
  this.navTreeFeatures = [];
17
18
  this.treeFlattener = new MatTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren);
18
19
  this.treeControl = new FlatTreeControl(this.getLevel, this.isExpandable);
@@ -49,7 +50,7 @@ export class NavTreeComponent {
49
50
  }
50
51
  }
51
52
  NavTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: NavTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
52
- NavTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: NavTreeComponent, selector: "mantle-nav-tree", inputs: { reminderCount: "reminderCount", navTreeFeatures: "navTreeFeatures" }, usesOnChanges: true, ngImport: i0, template: "<mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n\n <!-- This is the tree node template for leaf nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node\" [class.leaf-node]=\"node.level > 0\">\n <div fxLayout=\"row\" class=\"tree-node-content\">\n <div fxFlex=\"0 0 28px\" *ngIf=\"node.level > 0\" class=\"tree-node-indent\">\n <mat-divider [vertical]=\"true\" color=\"primary\"></mat-divider>\n </div>\n <div fxFlex=\"1 0 1px\">\n <button mat-button [routerLink]=\"node.link\" routerLinkActive=\"active\" class=\"tree-node-button\">\n <mat-icon *ngIf=\"node.icon\"\n [matBadge]=\"(node.name == 'Reminders' && reminderCount > 0) ? reminderCount : undefined\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"small\">\n {{ node.icon }}\n </mat-icon>\n <div class=\"node-label\">{{ node.name }}</div>\n </button>\n </div>\n </div>\n </mat-tree-node>\n\n <!-- This is the tree node template for expandable nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" fxLayout=\"row\" [class.leaf-node]=\"node.level > 0\">\n <div fxLayout=\"row\" class=\"tree-node-content\">\n <div fxFlex=\"0 0 28px\" *ngIf=\"node.level > 0\" class=\"tree-node-indent\">\n <mat-divider [vertical]=\"true\" color=\"primary\"></mat-divider>\n </div>\n <div fxFlex=\"1 0 1px\">\n <button fxFlex=\"1 0 1px\" mat-button matTreeNodeToggle class=\"tree-node-button\">\n <mat-icon *ngIf=\"node.icon\">{{ node.icon }}</mat-icon>\n <div class=\"node-label\">{{ node.name }}</div>\n </button>\n </div>\n </div>\n </mat-tree-node>\n\n</mat-tree>\n", styles: [".mat-tree-node .tree-node-content{min-height:48px}.mat-tree-node .tree-node-content .tree-node-button{text-align:left;border-radius:0;width:239px;margin:6px 0}.mat-tree-node .tree-node-content .tree-node-button .mat-icon{margin-right:8px}.mat-tree-node .tree-node-content .tree-node-button .node-label{display:inline-block;text-align:left;white-space:normal;line-height:1.25rem;width:calc(100% - 32px)}.mat-tree-node.leaf-node .tree-node-indent{position:relative}.mat-tree-node.leaf-node .tree-node-indent .mat-divider{position:absolute;top:0;bottom:0;right:0;border-width:2px}.mat-tree-node.leaf-node .tree-node-button{width:calc(211px - 20px)!important;margin:6px 0 6px 20px!important}\n"], components: [{ type: i1.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { type: i2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i3.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: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { type: i1.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i7.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { type: i7.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["routerLink", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgePosition", "matBadgeSize", "matBadgeColor", "matBadgeOverlap", "matBadgeDescription", "matBadgeHidden", "matBadge"] }, { type: i1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }] });
53
+ NavTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: NavTreeComponent, selector: "mantle-nav-tree", inputs: { notificationCount: "notificationCount", navTreeFeatures: "navTreeFeatures" }, usesOnChanges: true, ngImport: i0, template: "<mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n\n <!-- This is the tree node template for leaf nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node\" [class.leaf-node]=\"node.level > 0\">\n <div fxLayout=\"row\" class=\"tree-node-content\">\n <div fxFlex=\"0 0 28px\" *ngIf=\"node.level > 0\" class=\"tree-node-indent\">\n <mat-divider [vertical]=\"true\" color=\"primary\"></mat-divider>\n </div>\n <div fxFlex=\"1 0 1px\">\n <button mat-button [routerLink]=\"node.link\" routerLinkActive=\"active\" class=\"tree-node-button\">\n <mat-icon *ngIf=\"node.icon\"\n [matBadge]=\"(node.name == 'Notifications' && notificationCount > 0) ? notificationCount : undefined\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"small\">\n {{ node.icon }}\n </mat-icon>\n <div class=\"node-label\">{{ node.name | translate }}</div>\n </button>\n </div>\n </div>\n </mat-tree-node>\n\n <!-- This is the tree node template for expandable nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" fxLayout=\"row\" [class.leaf-node]=\"node.level > 0\">\n <div fxLayout=\"row\" class=\"tree-node-content\">\n <div fxFlex=\"0 0 28px\" *ngIf=\"node.level > 0\" class=\"tree-node-indent\">\n <mat-divider [vertical]=\"true\" color=\"primary\"></mat-divider>\n </div>\n <div fxFlex=\"1 0 1px\">\n <button fxFlex=\"1 0 1px\" mat-button matTreeNodeToggle class=\"tree-node-button\">\n <mat-icon *ngIf=\"node.icon\">{{ node.icon }}</mat-icon>\n <div class=\"node-label\">{{ node.name | translate }}</div>\n </button>\n </div>\n </div>\n </mat-tree-node>\n\n</mat-tree>\n", styles: [".mat-tree-node .tree-node-content{min-height:48px}.mat-tree-node .tree-node-content .tree-node-button{text-align:left;border-radius:0;width:239px;margin:6px 0}.mat-tree-node .tree-node-content .tree-node-button .mat-icon{margin-right:8px}.mat-tree-node .tree-node-content .tree-node-button .node-label{display:inline-block;text-align:left;white-space:normal;line-height:1.25rem;width:calc(100% - 32px)}.mat-tree-node.leaf-node .tree-node-indent{position:relative}.mat-tree-node.leaf-node .tree-node-indent .mat-divider{position:absolute;top:0;bottom:0;right:0;border-width:2px}.mat-tree-node.leaf-node .tree-node-button{width:calc(211px - 20px)!important;margin:6px 0 6px 20px!important}\n"], components: [{ type: i1.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { type: i2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i3.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: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { type: i1.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i7.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { type: i7.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["routerLink", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgePosition", "matBadgeSize", "matBadgeColor", "matBadgeOverlap", "matBadgeDescription", "matBadgeHidden", "matBadge"] }, { type: i1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }], pipes: { "translate": i9.TranslatePipe } });
53
54
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: NavTreeComponent, decorators: [{
54
55
  type: Component,
55
56
  args: [{
@@ -57,9 +58,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImpor
57
58
  templateUrl: './nav-tree.component.html',
58
59
  styleUrls: ['./nav-tree.component.scss']
59
60
  }]
60
- }], ctorParameters: function () { return []; }, propDecorators: { reminderCount: [{
61
+ }], ctorParameters: function () { return []; }, propDecorators: { notificationCount: [{
61
62
  type: Input
62
63
  }], navTreeFeatures: [{
63
64
  type: Input
64
65
  }] } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXRyZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9uYXZpZ2F0aW9uL25hdi10cmVlL25hdi10cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXYtdHJlZS9uYXYtdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7QUEyQnBELE1BQU0sT0FBTyxnQkFBZ0I7SUFjM0I7UUFIUyxrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixvQkFBZSxHQUFVLEVBQUUsQ0FBQztRQUduQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksZ0JBQWdCLENBQ3ZDLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXBCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QyxDQUFDO0lBRUQseURBQXlEO0lBQ3pELFdBQVcsQ0FBQyxJQUFvQixFQUFFLEtBQWE7UUFDN0MsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEtBQUs7WUFDTCxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQztTQUN4RCxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUNoQyxRQUFRLENBQUMsSUFBa0I7UUFDekIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsWUFBWSxDQUFDLElBQWtCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELFFBQVEsQ0FBQyxLQUFhLEVBQUUsSUFBa0I7UUFDeEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsV0FBVyxDQUFDLElBQW9CO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDOzs2R0ExRFUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsNEpDN0I3Qix3c0RBc0NBOzJGRFRhLGdCQUFnQjtrQkFMNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixXQUFXLEVBQUUsMkJBQTJCO29CQUN4QyxTQUFTLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztpQkFDekM7MEVBWVUsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRUcmVlRmxhdERhdGFTb3VyY2UsIE1hdFRyZWVGbGF0dGVuZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcbmltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcblxuLyoqIEZpbGUgbm9kZSBkYXRhIHdpdGggcG9zc2libGUgY2hpbGQgbm9kZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdmlnYXRpb25Ob2RlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBsaW5rPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IE5hdmlnYXRpb25Ob2RlW107XG59XG5cbi8qKlxuICogRmxhdHRlbmVkIHRyZWUgbm9kZSB0aGF0IGhhcyBiZWVuIGNyZWF0ZWQgZnJvbSBhIE5hdmlnYXRpb25Ob2RlIHRocm91Z2ggdGhlIGZsYXR0ZW5lci4gRmxhdHRlbmVkXG4gKiBub2RlcyBpbmNsdWRlIGxldmVsIGluZGV4IGFuZCB3aGV0aGVyIHRoZXkgY2FuIGJlIGV4cGFuZGVkIG9yIG5vdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbGF0VHJlZU5vZGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGxpbms/OiBzdHJpbmc7XG4gIGxldmVsOiBudW1iZXI7XG4gIGV4cGFuZGFibGU6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1uYXYtdHJlZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXYtdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25hdi10cmVlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmF2VHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgLyoqIFRoZSBUcmVlQ29udHJvbCBjb250cm9scyB0aGUgZXhwYW5kL2NvbGxhcHNlIHN0YXRlIG9mIHRyZWUgbm9kZXMuICAqL1xuICB0cmVlQ29udHJvbDogRmxhdFRyZWVDb250cm9sPEZsYXRUcmVlTm9kZT47XG5cbiAgLyoqIFRoZSBUcmVlRmxhdHRlbmVyIGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGZsYXQgbGlzdCBvZiBpdGVtcyBmcm9tIGhpZXJhcmNoaWNhbCBkYXRhLiAqL1xuICB0cmVlRmxhdHRlbmVyOiBNYXRUcmVlRmxhdHRlbmVyPE5hdmlnYXRpb25Ob2RlLCBGbGF0VHJlZU5vZGU+O1xuXG4gIC8qKiBUaGUgTWF0VHJlZUZsYXREYXRhU291cmNlIGNvbm5lY3RzIHRoZSBjb250cm9sIGFuZCBmbGF0dGVuZXIgdG8gcHJvdmlkZSBkYXRhLiAqL1xuICBkYXRhU291cmNlOiBNYXRUcmVlRmxhdERhdGFTb3VyY2U8TmF2aWdhdGlvbk5vZGUsIEZsYXRUcmVlTm9kZT47XG5cbiAgQElucHV0KCkgcmVtaW5kZXJDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgbmF2VHJlZUZlYXR1cmVzOiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMudHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxuICAgICAgdGhpcy50cmFuc2Zvcm1lcixcbiAgICAgIHRoaXMuZ2V0TGV2ZWwsXG4gICAgICB0aGlzLmlzRXhwYW5kYWJsZSxcbiAgICAgIHRoaXMuZ2V0Q2hpbGRyZW4pO1xuXG4gICAgdGhpcy50cmVlQ29udHJvbCA9IG5ldyBGbGF0VHJlZUNvbnRyb2wodGhpcy5nZXRMZXZlbCwgdGhpcy5pc0V4cGFuZGFibGUpO1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UodGhpcy50cmVlQ29udHJvbCwgdGhpcy50cmVlRmxhdHRlbmVyKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5uYXZUcmVlRmVhdHVyZXM7XG4gIH1cblxuICAvKiogVHJhbnNmb3JtIHRoZSBkYXRhIHRvIHNvbWV0aGluZyB0aGUgdHJlZSBjYW4gcmVhZC4gKi9cbiAgdHJhbnNmb3JtZXIobm9kZTogTmF2aWdhdGlvbk5vZGUsIGxldmVsOiBudW1iZXIpOiBGbGF0VHJlZU5vZGUge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBub2RlLm5hbWUsXG4gICAgICBpY29uOiBub2RlLmljb24sXG4gICAgICBsaW5rOiBub2RlLmxpbmssXG4gICAgICBsZXZlbCxcbiAgICAgIGV4cGFuZGFibGU6ICEhbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDBcbiAgICB9O1xuICB9XG5cbiAgLyoqIEdldCB0aGUgbGV2ZWwgb2YgdGhlIG5vZGUgKi9cbiAgZ2V0TGV2ZWwobm9kZTogRmxhdFRyZWVOb2RlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbm9kZS5sZXZlbDtcbiAgfVxuXG4gIC8qKiBHZXQgd2hldGhlciB0aGUgbm9kZSBpcyBleHBhbmRlZCBvciBub3QuICovXG4gIGlzRXhwYW5kYWJsZShub2RlOiBGbGF0VHJlZU5vZGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbm9kZS5leHBhbmRhYmxlO1xuICB9XG5cbiAgLyoqIEdldCB3aGV0aGVyIHRoZSBub2RlIGhhcyBjaGlsZHJlbiBvciBub3QuICovXG4gIGhhc0NoaWxkKGluZGV4OiBudW1iZXIsIG5vZGU6IEZsYXRUcmVlTm9kZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBub2RlLmV4cGFuZGFibGU7XG4gIH1cblxuICAvKiogR2V0IHRoZSBjaGlsZHJlbiBmb3IgdGhlIG5vZGUuICovXG4gIGdldENoaWxkcmVuKG5vZGU6IE5hdmlnYXRpb25Ob2RlKTogTmF2aWdhdGlvbk5vZGVbXSB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBub2RlLmNoaWxkcmVuO1xuICB9XG59XG4iLCI8bWF0LXRyZWUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiPlxuXG4gIDwhLS0gVGhpcyBpcyB0aGUgdHJlZSBub2RlIHRlbXBsYXRlIGZvciBsZWFmIG5vZGVzIC0tPlxuICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIFtjbGFzcy5sZWFmLW5vZGVdPVwibm9kZS5sZXZlbCA+IDBcIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgY2xhc3M9XCJ0cmVlLW5vZGUtY29udGVudFwiPlxuICAgICAgPGRpdiBmeEZsZXg9XCIwIDAgMjhweFwiICpuZ0lmPVwibm9kZS5sZXZlbCA+IDBcIiBjbGFzcz1cInRyZWUtbm9kZS1pbmRlbnRcIj5cbiAgICAgICAgPG1hdC1kaXZpZGVyIFt2ZXJ0aWNhbF09XCJ0cnVlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtZGl2aWRlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBmeEZsZXg9XCIxIDAgMXB4XCI+XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbcm91dGVyTGlua109XCJub2RlLmxpbmtcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCIgY2xhc3M9XCJ0cmVlLW5vZGUtYnV0dG9uXCI+XG4gICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwibm9kZS5pY29uXCJcbiAgICAgICAgICAgICAgW21hdEJhZGdlXT1cIihub2RlLm5hbWUgPT0gJ1JlbWluZGVycycgJiYgcmVtaW5kZXJDb3VudCA+IDApID8gcmVtaW5kZXJDb3VudCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCJcbiAgICAgICAgICAgICAgbWF0QmFkZ2VTaXplPVwic21hbGxcIj5cbiAgICAgICAgICAgIHt7IG5vZGUuaWNvbiB9fVxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGUtbGFiZWxcIj57eyBub2RlLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtdHJlZS1ub2RlPlxuXG4gIDwhLS0gVGhpcyBpcyB0aGUgdHJlZSBub2RlIHRlbXBsYXRlIGZvciBleHBhbmRhYmxlIG5vZGVzIC0tPlxuICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogaGFzQ2hpbGRcIiBmeExheW91dD1cInJvd1wiIFtjbGFzcy5sZWFmLW5vZGVdPVwibm9kZS5sZXZlbCA+IDBcIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgY2xhc3M9XCJ0cmVlLW5vZGUtY29udGVudFwiPlxuICAgICAgPGRpdiBmeEZsZXg9XCIwIDAgMjhweFwiICpuZ0lmPVwibm9kZS5sZXZlbCA+IDBcIiBjbGFzcz1cInRyZWUtbm9kZS1pbmRlbnRcIj5cbiAgICAgICAgPG1hdC1kaXZpZGVyIFt2ZXJ0aWNhbF09XCJ0cnVlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtZGl2aWRlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBmeEZsZXg9XCIxIDAgMXB4XCI+XG4gICAgICAgIDxidXR0b24gZnhGbGV4PVwiMSAwIDFweFwiIG1hdC1idXR0b24gbWF0VHJlZU5vZGVUb2dnbGUgY2xhc3M9XCJ0cmVlLW5vZGUtYnV0dG9uXCI+XG4gICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwibm9kZS5pY29uXCI+e3sgbm9kZS5pY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZS1sYWJlbFwiPnt7IG5vZGUubmFtZSB9fTwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L21hdC10cmVlLW5vZGU+XG5cbjwvbWF0LXRyZWU+XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXRyZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9uYXZpZ2F0aW9uL25hdi10cmVlL25hdi10cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXYtdHJlZS9uYXYtdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7O0FBMkJwRCxNQUFNLE9BQU8sZ0JBQWdCO0lBYzNCO1FBSFMsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBQzlCLG9CQUFlLEdBQVUsRUFBRSxDQUFDO1FBR25DLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxnQkFBZ0IsQ0FDdkMsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlDLENBQUM7SUFFRCx5REFBeUQ7SUFDekQsV0FBVyxDQUFDLElBQW9CLEVBQUUsS0FBYTtRQUM3QyxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSztZQUNMLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDO1NBQ3hELENBQUM7SUFDSixDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLFFBQVEsQ0FBQyxJQUFrQjtRQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELCtDQUErQztJQUMvQyxZQUFZLENBQUMsSUFBa0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsUUFBUSxDQUFDLEtBQWEsRUFBRSxJQUFrQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxXQUFXLENBQUMsSUFBb0I7UUFDOUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7OzZHQTFEVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixvS0M3QjdCLDR1REFzQ0E7MkZEVGEsZ0JBQWdCO2tCQUw1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFdBQVcsRUFBRSwyQkFBMkI7b0JBQ3hDLFNBQVMsRUFBRSxDQUFDLDJCQUEyQixDQUFDO2lCQUN6QzswRUFZVSxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XG5pbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5cbi8qKiBGaWxlIG5vZGUgZGF0YSB3aXRoIHBvc3NpYmxlIGNoaWxkIG5vZGVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0aW9uTm9kZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgbGluaz86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBOYXZpZ2F0aW9uTm9kZVtdO1xufVxuXG4vKipcbiAqIEZsYXR0ZW5lZCB0cmVlIG5vZGUgdGhhdCBoYXMgYmVlbiBjcmVhdGVkIGZyb20gYSBOYXZpZ2F0aW9uTm9kZSB0aHJvdWdoIHRoZSBmbGF0dGVuZXIuIEZsYXR0ZW5lZFxuICogbm9kZXMgaW5jbHVkZSBsZXZlbCBpbmRleCBhbmQgd2hldGhlciB0aGV5IGNhbiBiZSBleHBhbmRlZCBvciBub3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxhdFRyZWVOb2RlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBsaW5rPzogc3RyaW5nO1xuICBsZXZlbDogbnVtYmVyO1xuICBleHBhbmRhYmxlOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYW50bGUtbmF2LXRyZWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbmF2LXRyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uYXYtdHJlZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5hdlRyZWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIC8qKiBUaGUgVHJlZUNvbnRyb2wgY29udHJvbHMgdGhlIGV4cGFuZC9jb2xsYXBzZSBzdGF0ZSBvZiB0cmVlIG5vZGVzLiAgKi9cbiAgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxGbGF0VHJlZU5vZGU+O1xuXG4gIC8qKiBUaGUgVHJlZUZsYXR0ZW5lciBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBmbGF0IGxpc3Qgb2YgaXRlbXMgZnJvbSBoaWVyYXJjaGljYWwgZGF0YS4gKi9cbiAgdHJlZUZsYXR0ZW5lcjogTWF0VHJlZUZsYXR0ZW5lcjxOYXZpZ2F0aW9uTm9kZSwgRmxhdFRyZWVOb2RlPjtcblxuICAvKiogVGhlIE1hdFRyZWVGbGF0RGF0YVNvdXJjZSBjb25uZWN0cyB0aGUgY29udHJvbCBhbmQgZmxhdHRlbmVyIHRvIHByb3ZpZGUgZGF0YS4gKi9cbiAgZGF0YVNvdXJjZTogTWF0VHJlZUZsYXREYXRhU291cmNlPE5hdmlnYXRpb25Ob2RlLCBGbGF0VHJlZU5vZGU+O1xuXG4gIEBJbnB1dCgpIG5vdGlmaWNhdGlvbkNvdW50OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBuYXZUcmVlRmVhdHVyZXM6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy50cmVlRmxhdHRlbmVyID0gbmV3IE1hdFRyZWVGbGF0dGVuZXIoXG4gICAgICB0aGlzLnRyYW5zZm9ybWVyLFxuICAgICAgdGhpcy5nZXRMZXZlbCxcbiAgICAgIHRoaXMuaXNFeHBhbmRhYmxlLFxuICAgICAgdGhpcy5nZXRDaGlsZHJlbik7XG5cbiAgICB0aGlzLnRyZWVDb250cm9sID0gbmV3IEZsYXRUcmVlQ29udHJvbCh0aGlzLmdldExldmVsLCB0aGlzLmlzRXhwYW5kYWJsZSk7XG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRyZWVGbGF0RGF0YVNvdXJjZSh0aGlzLnRyZWVDb250cm9sLCB0aGlzLnRyZWVGbGF0dGVuZXIpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLm5hdlRyZWVGZWF0dXJlcztcbiAgfVxuXG4gIC8qKiBUcmFuc2Zvcm0gdGhlIGRhdGEgdG8gc29tZXRoaW5nIHRoZSB0cmVlIGNhbiByZWFkLiAqL1xuICB0cmFuc2Zvcm1lcihub2RlOiBOYXZpZ2F0aW9uTm9kZSwgbGV2ZWw6IG51bWJlcik6IEZsYXRUcmVlTm9kZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IG5vZGUubmFtZSxcbiAgICAgIGljb246IG5vZGUuaWNvbixcbiAgICAgIGxpbms6IG5vZGUubGluayxcbiAgICAgIGxldmVsLFxuICAgICAgZXhwYW5kYWJsZTogISFub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMFxuICAgIH07XG4gIH1cblxuICAvKiogR2V0IHRoZSBsZXZlbCBvZiB0aGUgbm9kZSAqL1xuICBnZXRMZXZlbChub2RlOiBGbGF0VHJlZU5vZGUpOiBudW1iZXIge1xuICAgIHJldHVybiBub2RlLmxldmVsO1xuICB9XG5cbiAgLyoqIEdldCB3aGV0aGVyIHRoZSBub2RlIGlzIGV4cGFuZGVkIG9yIG5vdC4gKi9cbiAgaXNFeHBhbmRhYmxlKG5vZGU6IEZsYXRUcmVlTm9kZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBub2RlLmV4cGFuZGFibGU7XG4gIH1cblxuICAvKiogR2V0IHdoZXRoZXIgdGhlIG5vZGUgaGFzIGNoaWxkcmVuIG9yIG5vdC4gKi9cbiAgaGFzQ2hpbGQoaW5kZXg6IG51bWJlciwgbm9kZTogRmxhdFRyZWVOb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5vZGUuZXhwYW5kYWJsZTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGNoaWxkcmVuIGZvciB0aGUgbm9kZS4gKi9cbiAgZ2V0Q2hpbGRyZW4obm9kZTogTmF2aWdhdGlvbk5vZGUpOiBOYXZpZ2F0aW9uTm9kZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG5vZGUuY2hpbGRyZW47XG4gIH1cbn1cbiIsIjxtYXQtdHJlZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sXCI+XG5cbiAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XG4gIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlXCIgW2NsYXNzLmxlYWYtbm9kZV09XCJub2RlLmxldmVsID4gMFwiPlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBjbGFzcz1cInRyZWUtbm9kZS1jb250ZW50XCI+XG4gICAgICA8ZGl2IGZ4RmxleD1cIjAgMCAyOHB4XCIgKm5nSWY9XCJub2RlLmxldmVsID4gMFwiIGNsYXNzPVwidHJlZS1ub2RlLWluZGVudFwiPlxuICAgICAgICA8bWF0LWRpdmlkZXIgW3ZlcnRpY2FsXT1cInRydWVcIiBjb2xvcj1cInByaW1hcnlcIj48L21hdC1kaXZpZGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGZ4RmxleD1cIjEgMCAxcHhcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFtyb3V0ZXJMaW5rXT1cIm5vZGUubGlua1wiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIiBjbGFzcz1cInRyZWUtbm9kZS1idXR0b25cIj5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJub2RlLmljb25cIlxuICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwiKG5vZGUubmFtZSA9PSAnTm90aWZpY2F0aW9ucycgJiYgbm90aWZpY2F0aW9uQ291bnQgPiAwKSA/IG5vdGlmaWNhdGlvbkNvdW50IDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgbWF0QmFkZ2VDb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiPlxuICAgICAgICAgICAge3sgbm9kZS5pY29uIH19XG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZS1sYWJlbFwiPnt7IG5vZGUubmFtZSB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L21hdC10cmVlLW5vZGU+XG5cbiAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGV4cGFuZGFibGUgbm9kZXMgLS0+XG4gIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlOyB3aGVuOiBoYXNDaGlsZFwiIGZ4TGF5b3V0PVwicm93XCIgW2NsYXNzLmxlYWYtbm9kZV09XCJub2RlLmxldmVsID4gMFwiPlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBjbGFzcz1cInRyZWUtbm9kZS1jb250ZW50XCI+XG4gICAgICA8ZGl2IGZ4RmxleD1cIjAgMCAyOHB4XCIgKm5nSWY9XCJub2RlLmxldmVsID4gMFwiIGNsYXNzPVwidHJlZS1ub2RlLWluZGVudFwiPlxuICAgICAgICA8bWF0LWRpdmlkZXIgW3ZlcnRpY2FsXT1cInRydWVcIiBjb2xvcj1cInByaW1hcnlcIj48L21hdC1kaXZpZGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGZ4RmxleD1cIjEgMCAxcHhcIj5cbiAgICAgICAgPGJ1dHRvbiBmeEZsZXg9XCIxIDAgMXB4XCIgbWF0LWJ1dHRvbiBtYXRUcmVlTm9kZVRvZ2dsZSBjbGFzcz1cInRyZWUtbm9kZS1idXR0b25cIj5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJub2RlLmljb25cIj57eyBub2RlLmljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RlLWxhYmVsXCI+e3sgbm9kZS5uYW1lIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbWF0LXRyZWUtbm9kZT5cblxuPC9tYXQtdHJlZT5cbiJdfQ==
@@ -0,0 +1,33 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { MatPaginatorIntl } from '@angular/material/paginator';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../services/data-broadcast.service";
5
+ import * as i2 from "../../../services/locale.service";
6
+ export class CustomPaginatorIntl extends MatPaginatorIntl {
7
+ constructor(dataBroadcastService, localeService) {
8
+ super();
9
+ this.dataBroadcastService = dataBroadcastService;
10
+ this.localeService = localeService;
11
+ this.getRangeLabel = (page, pageSize, length) => {
12
+ length = Math.max(length, 0);
13
+ const startIndex = (page * pageSize) + 1;
14
+ const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;
15
+ const ofLabel = this.localeService.getTranslation('mantle.paginator.of');
16
+ return `${startIndex} - ${endIndex} ${ofLabel} ${length}`;
17
+ };
18
+ this.dataBroadcastService.locale.subscribe((locale) => {
19
+ this.itemsPerPageLabel = this.localeService.getTranslation('mantle.paginator.items_per_page');
20
+ this.firstPageLabel = this.localeService.getTranslation('mantle.paginator.first_page');
21
+ this.previousPageLabel = this.localeService.getTranslation('mantle.paginator.previous_page');
22
+ this.nextPageLabel = this.localeService.getTranslation('mantle.paginator.next_page');
23
+ this.lastPageLabel = this.localeService.getTranslation('mantle.paginator.last_page');
24
+ this.changes.next();
25
+ });
26
+ }
27
+ }
28
+ CustomPaginatorIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: CustomPaginatorIntl, deps: [{ token: i1.DataBroadcastService }, { token: i2.LocaleService }], target: i0.ɵɵFactoryTarget.Injectable });
29
+ CustomPaginatorIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: CustomPaginatorIntl });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: CustomPaginatorIntl, decorators: [{
31
+ type: Injectable
32
+ }], ctorParameters: function () { return [{ type: i1.DataBroadcastService }, { type: i2.LocaleService }]; } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBhZ2luYXRvci1pbnRsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9uYXZpZ2F0aW9uL3BhZ2luYXRvci9jdXN0b20tcGFnaW5hdG9yLWludGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUsvRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsZ0JBQWdCO0lBRXZELFlBQW9CLG9CQUEwQyxFQUFVLGFBQTRCO1FBQ2xHLEtBQUssRUFBRSxDQUFDO1FBRFUseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBYXBHLGtCQUFhLEdBQStELENBQzFFLElBQVksRUFDWixRQUFnQixFQUNoQixNQUFjLEVBQ2QsRUFBRTtZQUNGLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3QixNQUFNLFVBQVUsR0FBRyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsTUFBTSxRQUFRLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1lBRXZHLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDekUsT0FBTyxHQUFHLFVBQVUsTUFBTSxRQUFRLElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzVELENBQUMsQ0FBQztRQXJCQSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ3pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1lBQzlGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUN2RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUM3RixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztnSEFiVSxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9ySW50bCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBEYXRhQnJvYWRjYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RhdGEtYnJvYWRjYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvY2FsZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEN1c3RvbVBhZ2luYXRvckludGwgZXh0ZW5kcyBNYXRQYWdpbmF0b3JJbnRsIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFCcm9hZGNhc3RTZXJ2aWNlOiBEYXRhQnJvYWRjYXN0U2VydmljZSwgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuZGF0YUJyb2FkY2FzdFNlcnZpY2UubG9jYWxlLnN1YnNjcmliZSgobG9jYWxlOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaXRlbXNQZXJQYWdlTGFiZWwgPSB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oJ21hbnRsZS5wYWdpbmF0b3IuaXRlbXNfcGVyX3BhZ2UnKTtcbiAgICAgIHRoaXMuZmlyc3RQYWdlTGFiZWwgPSB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oJ21hbnRsZS5wYWdpbmF0b3IuZmlyc3RfcGFnZScpO1xuICAgICAgdGhpcy5wcmV2aW91c1BhZ2VMYWJlbCA9IHRoaXMubG9jYWxlU2VydmljZS5nZXRUcmFuc2xhdGlvbignbWFudGxlLnBhZ2luYXRvci5wcmV2aW91c19wYWdlJyk7XG4gICAgICB0aGlzLm5leHRQYWdlTGFiZWwgPSB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oJ21hbnRsZS5wYWdpbmF0b3IubmV4dF9wYWdlJyk7XG4gICAgICB0aGlzLmxhc3RQYWdlTGFiZWwgPSB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oJ21hbnRsZS5wYWdpbmF0b3IubGFzdF9wYWdlJyk7XG4gICAgICB0aGlzLmNoYW5nZXMubmV4dCgpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmFuZ2VMYWJlbDogKHBhZ2U6IG51bWJlciwgcGFnZVNpemU6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpID0+IHN0cmluZyA9IChcbiAgICBwYWdlOiBudW1iZXIsXG4gICAgcGFnZVNpemU6IG51bWJlcixcbiAgICBsZW5ndGg6IG51bWJlcixcbiAgKSA9PiB7XG4gICAgbGVuZ3RoID0gTWF0aC5tYXgobGVuZ3RoLCAwKTtcbiAgICBjb25zdCBzdGFydEluZGV4ID0gKHBhZ2UgKiBwYWdlU2l6ZSkgKyAxO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCA8IGxlbmd0aCA/IE1hdGgubWluKHN0YXJ0SW5kZXggKyBwYWdlU2l6ZSwgbGVuZ3RoKSA6IHN0YXJ0SW5kZXggKyBwYWdlU2l6ZTtcbiAgICBcbiAgICBjb25zdCBvZkxhYmVsID0gdGhpcy5sb2NhbGVTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKCdtYW50bGUucGFnaW5hdG9yLm9mJyk7XG4gICAgcmV0dXJuIGAke3N0YXJ0SW5kZXh9IC0gJHtlbmRJbmRleH0gJHtvZkxhYmVsfSAke2xlbmd0aH1gO1xuICB9O1xuXG59Il19
@@ -5,7 +5,8 @@ import * as i1 from "@angular/router";
5
5
  import * as i2 from "../../titles/page-title/page-title.component";
6
6
  import * as i3 from "../../dashboard/dynamic-dashboard/dynamic-dashboard.component";
7
7
  import * as i4 from "@angular/flex-layout/flex";
8
- import * as i5 from "@angular/common";
8
+ import * as i5 from "@ngx-translate/core";
9
+ import * as i6 from "@angular/common";
9
10
  export class DashboardPageComponent {
10
11
  constructor(route, injector) {
11
12
  this.route = route;
@@ -21,7 +22,7 @@ export class DashboardPageComponent {
21
22
  }
22
23
  }
23
24
  DashboardPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: DashboardPageComponent, deps: [{ token: i1.ActivatedRoute }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
24
- DashboardPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: DashboardPageComponent, selector: "mantle-dashboard-page", ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"16px\" class=\"page dashboard-page full-height-only vertically-scrollable\">\n\n <div fxFlex=\"0 0 auto\">\n <mantle-page-title>{{ pageTitle }}</mantle-page-title>\n </div>\n\n <div fxFlex=\"1 0 auto\">\n <mantle-dynamic-dashboard [content]=\"content$ | async\" [dashboardPageService]=\"dashboardPageService\"></mantle-dynamic-dashboard>\n </div>\n\n</div>\n", styles: [""], components: [{ type: i2.PageTitleComponent, selector: "mantle-page-title" }, { type: i3.DynamicDashboardComponent, selector: "mantle-dynamic-dashboard", inputs: ["dashboardPageService", "content"] }], directives: [{ type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i4.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "async": i5.AsyncPipe } });
25
+ DashboardPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: DashboardPageComponent, selector: "mantle-dashboard-page", ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"16px\" class=\"page dashboard-page full-height-only vertically-scrollable\">\n\n <div fxFlex=\"0 0 auto\">\n <mantle-page-title>{{ pageTitle | translate }}</mantle-page-title>\n </div>\n\n <div fxFlex=\"1 0 auto\">\n <mantle-dynamic-dashboard [content]=\"content$ | async\" [dashboardPageService]=\"dashboardPageService\"></mantle-dynamic-dashboard>\n </div>\n\n</div>\n", styles: [""], components: [{ type: i2.PageTitleComponent, selector: "mantle-page-title" }, { type: i3.DynamicDashboardComponent, selector: "mantle-dynamic-dashboard", inputs: ["dashboardPageService", "content"] }], directives: [{ type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i4.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "translate": i5.TranslatePipe, "async": i6.AsyncPipe } });
25
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: DashboardPageComponent, decorators: [{
26
27
  type: Component,
27
28
  args: [{
@@ -30,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImpor
30
31
  styleUrls: ['./dashboard-page.component.scss']
31
32
  }]
32
33
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i0.Injector }]; } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlcy9kYXNoYm9hcmQtcGFnZS9kYXNoYm9hcmQtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2VzL2Rhc2hib2FyZC1wYWdlL2Rhc2hib2FyZC1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVFyQyxNQUFNLE9BQU8sc0JBQXNCO0lBTWpDLFlBQW9CLEtBQXFCLEVBQVUsUUFBa0I7UUFBakQsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ25FLE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUF1QixrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3hHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDL0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1IsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzttSEFsQlUsc0JBQXNCO3VHQUF0QixzQkFBc0IsNkRDWG5DLG1iQVdBOzJGREFhLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxXQUFXLEVBQUUsaUNBQWlDO29CQUM5QyxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhc2hib2FyZFBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaW50ZXJmYWNlcy9kYXNoYm9hcmQtcGFnZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFudGxlLWRhc2hib2FyZC1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGFzaGJvYXJkLXBhZ2UuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgZGFzaGJvYXJkUGFnZVNlcnZpY2U6IERhc2hib2FyZFBhZ2VTZXJ2aWNlO1xuICBwdWJsaWMgcGFnZVRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyBjb250ZW50JCE6IE9ic2VydmFibGU8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBjb25zdCBkYXNoYm9hcmRQYWdlU2VydmljZUluamVjdGlvblRva2VuID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydkYXNoYm9hcmRQYWdlU2VydmljZSddO1xuICAgIHRoaXMuZGFzaGJvYXJkUGFnZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxEYXNoYm9hcmRQYWdlU2VydmljZT4oZGFzaGJvYXJkUGFnZVNlcnZpY2VJbmplY3Rpb25Ub2tlbik7XG4gICAgdGhpcy5wYWdlVGl0bGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbJ3BhZ2VUaXRsZSddO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZW50JCA9IHRoaXMuZGFzaGJvYXJkUGFnZVNlcnZpY2UuZ2V0V2lkZ2V0SXRlbXMoe30pLnBpcGUoXG4gICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgcmV0dXJuIHJlcy5jb250ZW50O1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cInN0cmV0Y2hcIiBmeExheW91dEdhcD1cIjE2cHhcIiBjbGFzcz1cInBhZ2UgZGFzaGJvYXJkLXBhZ2UgZnVsbC1oZWlnaHQtb25seSB2ZXJ0aWNhbGx5LXNjcm9sbGFibGVcIj5cblxuICA8ZGl2IGZ4RmxleD1cIjAgMCBhdXRvXCI+XG4gICAgPG1hbnRsZS1wYWdlLXRpdGxlPnt7IHBhZ2VUaXRsZSB9fTwvbWFudGxlLXBhZ2UtdGl0bGU+XG4gIDwvZGl2PlxuXG4gIDxkaXYgZnhGbGV4PVwiMSAwIGF1dG9cIj5cbiAgICA8bWFudGxlLWR5bmFtaWMtZGFzaGJvYXJkIFtjb250ZW50XT1cImNvbnRlbnQkIHwgYXN5bmNcIiBbZGFzaGJvYXJkUGFnZVNlcnZpY2VdPVwiZGFzaGJvYXJkUGFnZVNlcnZpY2VcIj48L21hbnRsZS1keW5hbWljLWRhc2hib2FyZD5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlcy9kYXNoYm9hcmQtcGFnZS9kYXNoYm9hcmQtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2VzL2Rhc2hib2FyZC1wYWdlL2Rhc2hib2FyZC1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFRckMsTUFBTSxPQUFPLHNCQUFzQjtJQU1qQyxZQUFvQixLQUFxQixFQUFVLFFBQWtCO1FBQWpELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNuRSxNQUFNLGtDQUFrQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBdUIsa0NBQWtDLENBQUMsQ0FBQztRQUN4RyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQy9ELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNSLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7bUhBbEJVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDZEQ1huQywrYkFXQTsyRkRBYSxzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsV0FBVyxFQUFFLGlDQUFpQztvQkFDOUMsU0FBUyxFQUFFLENBQUMsaUNBQWlDLENBQUM7aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRQYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ludGVyZmFjZXMvZGFzaGJvYXJkLXBhZ2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1kYXNoYm9hcmQtcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rhc2hib2FyZC1wYWdlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIGRhc2hib2FyZFBhZ2VTZXJ2aWNlOiBEYXNoYm9hcmRQYWdlU2VydmljZTtcbiAgcHVibGljIHBhZ2VUaXRsZTogc3RyaW5nO1xuICBwdWJsaWMgY29udGVudCQhOiBPYnNlcnZhYmxlPGFueT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgY29uc3QgZGFzaGJvYXJkUGFnZVNlcnZpY2VJbmplY3Rpb25Ub2tlbiA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YVsnZGFzaGJvYXJkUGFnZVNlcnZpY2UnXTtcbiAgICB0aGlzLmRhc2hib2FyZFBhZ2VTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8RGFzaGJvYXJkUGFnZVNlcnZpY2U+KGRhc2hib2FyZFBhZ2VTZXJ2aWNlSW5qZWN0aW9uVG9rZW4pO1xuICAgIHRoaXMucGFnZVRpdGxlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydwYWdlVGl0bGUnXTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29udGVudCQgPSB0aGlzLmRhc2hib2FyZFBhZ2VTZXJ2aWNlLmdldFdpZGdldEl0ZW1zKHt9KS5waXBlKFxuICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgIHJldHVybiByZXMuY29udGVudDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdHJldGNoXCIgZnhMYXlvdXRHYXA9XCIxNnB4XCIgY2xhc3M9XCJwYWdlIGRhc2hib2FyZC1wYWdlIGZ1bGwtaGVpZ2h0LW9ubHkgdmVydGljYWxseS1zY3JvbGxhYmxlXCI+XG5cbiAgPGRpdiBmeEZsZXg9XCIwIDAgYXV0b1wiPlxuICAgIDxtYW50bGUtcGFnZS10aXRsZT57eyBwYWdlVGl0bGUgfCB0cmFuc2xhdGUgfX08L21hbnRsZS1wYWdlLXRpdGxlPlxuICA8L2Rpdj5cblxuICA8ZGl2IGZ4RmxleD1cIjEgMCBhdXRvXCI+XG4gICAgPG1hbnRsZS1keW5hbWljLWRhc2hib2FyZCBbY29udGVudF09XCJjb250ZW50JCB8IGFzeW5jXCIgW2Rhc2hib2FyZFBhZ2VTZXJ2aWNlXT1cImRhc2hib2FyZFBhZ2VTZXJ2aWNlXCI+PC9tYW50bGUtZHluYW1pYy1kYXNoYm9hcmQ+XG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==
@@ -1,5 +1,4 @@
1
1
  import { Component } from '@angular/core';
2
- import { map } from 'rxjs/operators';
3
2
  import * as i0 from "@angular/core";
4
3
  import * as i1 from "@angular/router";
5
4
  import * as i2 from "../../../services/announcement.service";
@@ -12,6 +11,7 @@ import * as i8 from "@angular/flex-layout/flex";
12
11
  import * as i9 from "@angular/common";
13
12
  import * as i10 from "@angular/flex-layout/extended";
14
13
  import * as i11 from "@angular/material/form-field";
14
+ import * as i12 from "@ngx-translate/core";
15
15
  export class DetailPageComponent {
16
16
  constructor(route, injector, announcementService) {
17
17
  this.route = route;
@@ -27,25 +27,28 @@ export class DetailPageComponent {
27
27
  this.isTabbedContent = this.route.snapshot.data['isTabbedContent'];
28
28
  }
29
29
  ngOnInit() {
30
- this.loadData();
30
+ this.pullContent();
31
31
  }
32
- loadData() {
32
+ pullContent() {
33
33
  this.route.params.subscribe(params => {
34
34
  this.id = this.route.snapshot.params['id'];
35
- this.content$ = this.detailPageService.get(this.id).pipe(map(res => {
36
- this.header = res.header;
37
- this.detailPageService.onDetailContentLoaded(res.content);
38
- res.content.containers.forEach((container) => {
39
- container.sections.forEach((section) => {
40
- this.loadSectionActions(section);
41
- });
42
- });
43
- this.loadAdditionalButtons(res.content.data);
44
- this.exportOptions = this.detailPageService.detailPageExportOptions(res.content.data);
45
- return res.content;
46
- }));
35
+ this.detailPageService.get(this.id).subscribe((res) => {
36
+ this.loadContent(res);
37
+ });
47
38
  });
48
39
  }
40
+ loadContent(response) {
41
+ this.header = response.header;
42
+ this.content = response.content;
43
+ this.detailPageService.onDetailContentLoaded(this.content);
44
+ this.content.containers.forEach((container) => {
45
+ container.sections.forEach((section) => {
46
+ this.loadSectionActions(section);
47
+ });
48
+ });
49
+ this.loadAdditionalButtons(this.content.data);
50
+ this.exportOptions = this.detailPageService.detailPageExportOptions(this.content.data);
51
+ }
49
52
  loadSectionActions(section) {
50
53
  let sectionActions = this.detailPageService.detailPageSectionActions(section.slug);
51
54
  if (sectionActions.length == 0)
@@ -67,6 +70,9 @@ export class DetailPageComponent {
67
70
  onEditClicked() {
68
71
  this.detailPageService.openForm({ id: this.id });
69
72
  }
73
+ onCloneClicked() {
74
+ this.detailPageService.openForm({}, { clone_id: this.id });
75
+ }
70
76
  onBackClicked() {
71
77
  this.detailPageService.openList();
72
78
  }
@@ -74,12 +80,12 @@ export class DetailPageComponent {
74
80
  this.detailPageService.delete(this.id, () => { this.isDeleteInProgress = true; }, (res) => { this.onDeleteSuccess(res); }, (res) => { this.onDeleteFailure(res); });
75
81
  }
76
82
  onDeleteSuccess(res) {
77
- this.announcementService.success('Delete successful!');
83
+ this.announcementService.success('mantle.messages.delete_successful');
78
84
  this.back();
79
85
  this.isDeleteInProgress = false;
80
86
  }
81
87
  onDeleteFailure(res) {
82
- this.announcementService.error('Delete failed!');
88
+ this.announcementService.error('mantle.messages.delete_failed');
83
89
  this.isDeleteInProgress = false;
84
90
  }
85
91
  back() {
@@ -87,7 +93,7 @@ export class DetailPageComponent {
87
93
  }
88
94
  }
89
95
  DetailPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: DetailPageComponent, deps: [{ token: i1.ActivatedRoute }, { token: i0.Injector }, { token: i2.AnnouncementService }], target: i0.ɵɵFactoryTarget.Component });
90
- DetailPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: DetailPageComponent, selector: "mantle-detail-page", ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutAlign=\"stretch\" class=\"full-height-min\" [ngClass]=\"{'page full-height-only vertically-scrollable': !isTabbedContent}\">\n <div fxFlex=\"0 0 auto\" class=\"page-header\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center start\" fxLayoutGap=\"16px\">\n <div fxFlex=\"0 0 auto\" *ngIf=\"!detailPageService.hideBackButton\">\n <button class=\"back-button\" mat-mini-fab color=\"primary\" type=\"button\" (click)=\"onBackClicked()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </div>\n\n <div fxFlex=\"1 1 auto\">\n <mantle-content-title *ngIf=\"header\" [thumbnail]=\"header.thumbnail\" [title]=\"header.title\"></mantle-content-title>\n </div>\n\n <div fxFlex=\"0 0 auto\" *ngIf=\"detailPageService.showEditButton && detailPageService.canWrite()\">\n <button mat-mini-fab\n color=\"primary\"\n type=\"button\"\n class=\"edit-button\"\n (click)=\"onEditClicked()\"\n [disabled]=\"detailPageService.isCommitInProgress\">\n <mat-icon>edit</mat-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div fxFlex=\"1 0 auto\" class=\"main-content\">\n <mantle-dynamic-details [content]=\"content$ | async\" [detailPageService]=\"detailPageService\"></mantle-dynamic-details>\n </div>\n\n <div fxFlex=\"0 0 auto\" class=\"page-footer\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayoutGap=\"16px\">\n <ng-container *ngFor=\"let button of bottomLeftButtons\">\n <div fxFlex=\"0 0 auto\" *ngIf=\"button.show\">\n <button mat-raised-button\n color=\"{{ button.color }}\"\n type=\"button\"\n class=\"additional-button\"\n [ngClass]=\"{ 'in-progress-button': button.isInProgress() }\"\n [disabled]=\"detailPageService.isCommitInProgress || button.disabled\"\n (click)=\"button.onClick(id)\">\n {{ button.label }}\n <mat-spinner *ngIf=\"button.isInProgress()\" matSuffix [diameter]=\"16\"></mat-spinner>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"content$ | async as content\">\n <div fxFlex=\"0 0 auto\" *ngFor=\"let exportOption of exportOptions\">\n <div *ngIf=\"(exportOption.show == null) || (exportOption.show)\">\n <button mat-button\n type=\"button\"\n class=\"export-button\"\n (click)=\"exportOption.export(content.data).subscribe()\"\n [disabled]=\"detailPageService.isCommitInProgress\">\n <span class=\"export-button-label\">{{ exportOption.label }}</span>\n <mat-icon>download</mat-icon>\n </button>\n </div>\n </div>\n </ng-container>\n\n <div fxFlex=\"1 1 auto\"></div>\n\n <ng-container *ngFor=\"let button of bottomRightButtons\">\n <div fxFlex=\"0 0 auto\" *ngIf=\"button.show\">\n <button mat-raised-button\n color=\"{{ button.color }}\"\n type=\"button\"\n class=\"additional-button\"\n [ngClass]=\"{ 'in-progress-button': button.isInProgress() }\"\n [disabled]=\"detailPageService.isCommitInProgress || button.disabled\"\n (click)=\"button.onClick(id)\">\n {{ button.label }}\n <mat-spinner *ngIf=\"button.isInProgress()\" matSuffix [diameter]=\"16\"></mat-spinner>\n </button>\n </div>\n </ng-container>\n\n <div fxFlex=\"0 0 auto\" *ngIf=\"detailPageService.showDeleteButton && detailPageService.canWrite()\">\n <button mat-button\n color=\"warn\"\n type=\"button\"\n class=\"delete-button\"\n [ngClass]=\"{ 'in-progress-button': isDeleteInProgress }\"\n [disabled]=\"detailPageService.isCommitInProgress\"\n (click)=\"onDeleteClicked()\">\n Delete {{ detailPageService.noun() }}\n <mat-spinner *ngIf=\"isDeleteInProgress\" matSuffix [diameter]=\"16\"></mat-spinner>\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".edit-button{margin-bottom:8px}.export-button{display:block;width:144px;background-color:transparent;white-space:nowrap;padding:0;margin:16px 0 16px auto}.export-button .export-button-label{display:inline-block;width:100px;white-space:normal;text-align:right;text-transform:uppercase;font-weight:normal;line-height:1.25rem;margin-right:.25rem}.export-button .mat-icon{height:auto;width:auto;font-size:2.5rem}.additional-button{min-width:140px}.in-progress-button .mat-spinner{position:absolute;top:10px;right:12px}\n"], components: [{ type: i3.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: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.ContentTitleComponent, selector: "mantle-content-title", inputs: ["thumbnail", "title"] }, { type: i6.DynamicDetailsComponent, selector: "mantle-dynamic-details", inputs: ["detailPageService", "content"] }, { type: i7.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i8.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatSuffix, selector: "[matSuffix]" }], pipes: { "async": i9.AsyncPipe } });
96
+ DetailPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: DetailPageComponent, selector: "mantle-detail-page", ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutAlign=\"stretch\" class=\"full-height-min\" [ngClass]=\"{'page full-height-only vertically-scrollable': !isTabbedContent}\">\n <div fxFlex=\"0 0 auto\" class=\"page-header\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center start\" fxLayoutGap=\"16px\">\n <div fxFlex=\"0 0 auto\" *ngIf=\"!detailPageService.hideBackButton\">\n <button class=\"back-button\" mat-mini-fab color=\"primary\" type=\"button\" (click)=\"onBackClicked()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </div>\n\n <div fxFlex=\"1 1 auto\">\n <mantle-content-title *ngIf=\"header\" [thumbnail]=\"header.thumbnail\" [title]=\"header.title\"></mantle-content-title>\n </div>\n\n <div fxFlex=\"0 0 auto\" *ngIf=\"detailPageService.showEditButton && detailPageService.canWrite()\">\n <button mat-mini-fab\n color=\"primary\"\n type=\"button\"\n class=\"edit-button\"\n (click)=\"onEditClicked()\"\n [disabled]=\"detailPageService.isCommitInProgress\">\n <mat-icon>edit</mat-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div fxFlex=\"1 0 auto\" class=\"main-content\">\n <mantle-dynamic-details [content]=\"content\" [detailPageService]=\"detailPageService\"></mantle-dynamic-details>\n </div>\n\n <div fxFlex=\"0 0 auto\" class=\"page-footer\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayoutGap=\"16px\">\n <ng-container *ngFor=\"let button of bottomLeftButtons\">\n <div fxFlex=\"0 0 auto\" *ngIf=\"button.show\">\n <button mat-raised-button\n color=\"{{ button.color }}\"\n type=\"button\"\n class=\"additional-button\"\n [ngClass]=\"{ 'in-progress-button': button.isInProgress() }\"\n [disabled]=\"detailPageService.isCommitInProgress || button.disabled\"\n (click)=\"button.onClick(id)\">\n {{ button.label | translate }}\n <mat-spinner *ngIf=\"button.isInProgress()\" matSuffix [diameter]=\"16\"></mat-spinner>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"content\">\n <div fxFlex=\"0 0 auto\" *ngFor=\"let exportOption of exportOptions\">\n <div *ngIf=\"(exportOption.show == null) || (exportOption.show)\">\n <button mat-button\n type=\"button\"\n class=\"export-button\"\n (click)=\"exportOption.export(content.data).subscribe()\"\n [disabled]=\"detailPageService.isCommitInProgress\">\n <span class=\"export-button-label\">{{ exportOption.label | translate }}</span>\n <mat-icon>download</mat-icon>\n </button>\n </div>\n </div>\n </ng-container>\n\n <div fxFlex=\"1 1 auto\"></div>\n\n <div fxFlex=\"0 0 auto\" *ngIf=\"detailPageService.showCloneButton && detailPageService.canWrite()\">\n <button mat-raised-button\n color=\"accent\"\n type=\"button\"\n class=\"clone-button\"\n (click)=\"onCloneClicked()\">\n {{ 'mantle.buttons.clone' | translate }}\n </button>\n </div>\n\n <ng-container *ngFor=\"let button of bottomRightButtons\">\n <div fxFlex=\"0 0 auto\" *ngIf=\"button.show\">\n <button mat-raised-button\n color=\"{{ button.color }}\"\n type=\"button\"\n class=\"additional-button\"\n [ngClass]=\"{ 'in-progress-button': button.isInProgress() }\"\n [disabled]=\"detailPageService.isCommitInProgress || button.disabled\"\n (click)=\"button.onClick(id)\">\n {{ button.label | translate }}\n <mat-spinner *ngIf=\"button.isInProgress()\" matSuffix [diameter]=\"16\"></mat-spinner>\n </button>\n </div>\n </ng-container>\n\n <div fxFlex=\"0 0 auto\" *ngIf=\"detailPageService.showDeleteButton && detailPageService.canWrite()\">\n <button mat-button\n color=\"warn\"\n type=\"button\"\n class=\"delete-button\"\n [ngClass]=\"{ 'in-progress-button': isDeleteInProgress }\"\n [disabled]=\"detailPageService.isCommitInProgress\"\n (click)=\"onDeleteClicked()\">\n {{ 'mantle.buttons.delete' | translate }} {{ detailPageService.noun() | translate }}\n <mat-spinner *ngIf=\"isDeleteInProgress\" matSuffix [diameter]=\"16\"></mat-spinner>\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".edit-button{margin-bottom:8px}.export-button{display:block;width:144px;background-color:transparent;white-space:nowrap;padding:0;margin:16px 0 16px auto}.export-button .export-button-label{display:inline-block;width:100px;white-space:normal;text-align:right;text-transform:uppercase;font-weight:normal;line-height:1.25rem;margin-right:.25rem}.export-button .mat-icon{height:auto;width:auto;font-size:2.5rem}.additional-button{min-width:140px}.clone-button{min-width:140px}.in-progress-button .mat-spinner{position:absolute;top:10px;right:12px}\n"], components: [{ type: i3.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: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.ContentTitleComponent, selector: "mantle-content-title", inputs: ["thumbnail", "title"] }, { type: i6.DynamicDetailsComponent, selector: "mantle-dynamic-details", inputs: ["detailPageService", "content"] }, { type: i7.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i8.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatSuffix, selector: "[matSuffix]" }], pipes: { "translate": i12.TranslatePipe } });
91
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: DetailPageComponent, decorators: [{
92
98
  type: Component,
93
99
  args: [{
@@ -96,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImpor
96
102
  styleUrls: ['./detail-page.component.scss']
97
103
  }]
98
104
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i0.Injector }, { type: i2.AnnouncementService }]; } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlcy9kZXRhaWwtcGFnZS9kZXRhaWwtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2VzL2RldGFpbC1wYWdlL2RldGFpbC1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWFyQyxNQUFNLE9BQU8sbUJBQW1CO0lBYTlCLFlBQW9CLEtBQXFCLEVBQVUsUUFBa0IsRUFDakQsbUJBQXdDO1FBRHhDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNqRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBTnJELHNCQUFpQixHQUF1QixFQUFFLENBQUM7UUFDM0MsdUJBQWtCLEdBQXVCLEVBQUUsQ0FBQztRQUM1QyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUt0QyxNQUFNLCtCQUErQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBb0IsK0JBQStCLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVB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QUE4QixDQUFDO2lCQUM1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRHluYW1pY0xheW91dENvbnRhaW5lciwgRHluYW1pY0xheW91dFNlY3Rpb24sIER5bmFtaWNMYXlvdXRUYWJsZVNlY3Rpb25cbn0gZnJvbSAnLi4vLi4vLi4vZGF0YS1zdHJ1Y3R1cmVzL2R5bmFtaWMtbGF5b3V0LnN0cnVjdHVyZSc7XG5pbXBvcnQgeyBBbm5vdW5jZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYW5ub3VuY2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGV0YWlsUGFnZUJ1dHRvbiwgRGV0YWlsUGFnZUV4cG9ydE9wdGlvbiwgRGV0YWlsUGFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pbnRlcmZhY2VzL2RldGFpbC1wYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2ViQXBpRGVsZXRlUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hZGFwdGVycy93ZWItYXBpLWNydWQuYWRhcHRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1kZXRhaWwtcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXRhaWwtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RldGFpbC1wYWdlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGV0YWlsUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIGRldGFpbFBhZ2VTZXJ2aWNlOiBEZXRhaWxQYWdlU2VydmljZTtcblxuICBwdWJsaWMgaWQhOiBzdHJpbmc7XG4gIHB1YmxpYyBoZWFkZXI6IGFueTtcbiAgcHVibGljIGNvbnRlbnQkITogT2JzZXJ2YWJsZTxhbnk+O1xuICBwdWJsaWMgZXhwb3J0T3B0aW9ucyE6IERldGFpbFBhZ2VFeHBvcnRPcHRpb25bXTtcbiAgcHVibGljIGJvdHRvbUxlZnRCdXR0b25zOiBEZXRhaWxQYWdlQnV0dG9uW10gPSBbXTtcbiAgcHVibGljIGJvdHRvbVJpZ2h0QnV0dG9uczogRGV0YWlsUGFnZUJ1dHRvbltdID0gW107XG4gIHB1YmxpYyBpc1RhYmJlZENvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzRGVsZXRlSW5Qcm9ncmVzcyE6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICAgICAgICBwcml2YXRlIGFubm91bmNlbWVudFNlcnZpY2U6IEFubm91bmNlbWVudFNlcnZpY2UpIHtcbiAgICBjb25zdCBkZXRhaWxQYWdlU2VydmljZUluamVjdGlvblRva2VuID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydkZXRhaWxQYWdlU2VydmljZSddO1xuICAgIHRoaXMuZGV0YWlsUGFnZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxEZXRhaWxQYWdlU2VydmljZT4oZGV0YWlsUGFnZVNlcnZpY2VJbmplY3Rpb25Ub2tlbik7XG4gICAgdGhpcy5kZXRhaWxQYWdlU2VydmljZS5zZXRQYXJlbnRDb21wb25lbnQodGhpcyk7XG4gICAgdGhpcy5leHBvcnRPcHRpb25zID0gdGhpcy5kZXRhaWxQYWdlU2VydmljZS5kZXRhaWxQYWdlRXhwb3J0T3B0aW9ucygpO1xuICAgIHRoaXMuaXNUYWJiZWRDb250ZW50ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydpc1RhYmJlZENvbnRlbnQnXTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuXG4gIGxvYWREYXRhKCkge1xuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgdGhpcy5pZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydpZCddO1xuXG4gICAgICB0aGlzLmNvbnRlbnQkID0gdGhpcy5kZXRhaWxQYWdlU2VydmljZS5nZXQodGhpcy5pZCkucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5oZWFkZXIgPSByZXMuaGVhZGVyO1xuICAgICAgICAgIHRoaXMuZGV0YWlsUGFnZVNlcnZpY2Uub25EZXRhaWxDb250ZW50TG9hZGVkKHJlcy5jb250ZW50KTtcblxuICAgICAgICAgIHJlcy5jb250ZW50LmNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyOiBEeW5hbWljTGF5b3V0Q29udGFpbmVyKSA9PiB7XG4gICAgICAgICAgICBjb250YWluZXIuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbjogRHluYW1pY0xheW91dFNlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkU2VjdGlvbkFjdGlvbnMoc2VjdGlvbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMubG9hZEFkZGl0aW9uYWxCdXR0b25zKHJlcy5jb250ZW50LmRhdGEpO1xuICAgICAgICAgIHRoaXMuZXhwb3J0T3B0aW9ucyA9IHRoaXMuZGV0YWlsUGFnZVNlcnZpY2UuZGV0YWlsUGFnZUV4cG9ydE9wdGlvbnMocmVzLmNvbnRlbnQuZGF0YSk7XG5cbiAgICAgICAgICByZXR1cm4gcmVzLmNvbnRlbnQ7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgbG9hZFNlY3Rpb25BY3Rpb25zKHNlY3Rpb246IER5bmFtaWNMYXlvdXRTZWN0aW9uKSB7XG4gICAgbGV0IHNlY3Rpb25BY3Rpb25zID0gdGhpcy5kZXRhaWxQYWdlU2VydmljZS5kZXRhaWxQYWdlU2VjdGlvbkFjdGlvbnMoc2VjdGlvbi5zbHVnISk7XG4gICAgaWYgKHNlY3Rpb25BY3Rpb25zLmxlbmd0aCA9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoc2VjdGlvbi5sYXlvdXQgPT0gJ3RhYmxlJykge1xuICAgICAgbGV0IGFjdGlvbnNDb2x1bW4gPSB7IGhlYWRlcjogJycsIGF0dHI6ICd0YWJsZV9yb3dfYWN0aW9ucycsIHR5cGU6ICdhY3Rpb25zJywgb3B0aW9uczogeyBhY3Rpb25zOiBzZWN0aW9uQWN0aW9ucyB9IH07XG4gICAgICAoc2VjdGlvbiBhcyBEeW5hbWljTGF5b3V0VGFibGVTZWN0aW9uKS5lbGVtZW50cy5wdXNoKGFjdGlvbnNDb2x1bW4pO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRBZGRpdGlvbmFsQnV0dG9ucyhyZWNvcmQ6IGFueSkge1xuICAgIGxldCBhZGRpdGlvbmFsRGV0YWlsUGFnZUJ1dHRvbnMgPSB0aGlzLmRldGFpbFBhZ2VTZXJ2aWNlLmFkZGl0aW9uYWxEZXRhaWxQYWdlQnV0dG9ucyhyZWNvcmQpO1xuICAgIHRoaXMuYm90dG9tTGVmdEJ1dHRvbnMgPSBhZGRpdGlvbmFsRGV0YWlsUGFnZUJ1dHRvbnMuZmlsdGVyKGJ1dHRvbiA9PiB7XG4gICAgICByZXR1cm4gYnV0dG9uLnBvc2l0aW9uID09ICdsZWZ0JztcbiAgICB9KTtcbiAgICB0aGlzLmJvdHRvbVJpZ2h0QnV0dG9ucyA9IGFkZGl0aW9uYWxEZXRhaWxQYWdlQnV0dG9ucy5maWx0ZXIoYnV0dG9uID0+IHtcbiAgICAgIHJldHVybiBidXR0b24ucG9zaXRpb24gPT0gJ3JpZ2h0JztcbiAgICB9KTtcbiAgfVxuXG4gIG9uRWRpdENsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5kZXRhaWxQYWdlU2VydmljZS5vcGVuRm9ybSh7IGlkOiB0aGlzLmlkIH0pO1xuICB9XG5cbiAgb25CYWNrQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmRldGFpbFBhZ2VTZXJ2aWNlLm9wZW5MaXN0KCk7XG4gIH1cblxuICBvbkRlbGV0ZUNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5kZXRhaWxQYWdlU2VydmljZS5kZWxldGUoXG4gICAgICB0aGlzLmlkLFxuICAgICAgKCkgPT4geyB0aGlzLmlzRGVsZXRlSW5Qcm9ncmVzcyA9IHRydWU7IH0sXG4gICAgICAocmVzOiBXZWJBcGlEZWxldGVSZXNwb25zZSkgPT4geyB0aGlzLm9uRGVsZXRlU3VjY2VzcyhyZXMpOyB9LFxuICAgICAgKHJlczogV2ViQXBpRGVsZXRlUmVzcG9uc2UpID0+IHsgdGhpcy5vbkRlbGV0ZUZhaWx1cmUocmVzKTsgfVxuICAgICk7XG4gIH1cblxuICBvbkRlbGV0ZVN1Y2Nlc3MocmVzOiBXZWJBcGlEZWxldGVSZXNwb25zZSk6IHZvaWQge1xuICAgIHRoaXMuYW5ub3VuY2VtZW50U2VydmljZS5zdWNjZXNzKCdEZWxldGUgc3VjY2Vzc2Z1bCEnKTtcbiAgICB0aGlzLmJhY2soKTtcblxuICAgIHRoaXMuaXNEZWxldGVJblByb2dyZXNzID0gZmFsc2U7XG4gIH1cblxuICBvbkRlbGV0ZUZhaWx1cmUocmVzOiBXZWJBcGlEZWxldGVSZXNwb25zZSk6IHZvaWQge1xuICAgIHRoaXMuYW5ub3VuY2VtZW50U2VydmljZS5lcnJvcignRGVsZXRlIGZhaWxlZCEnKTtcblxuICAgIHRoaXMuaXNEZWxldGVJblByb2dyZXNzID0gZmFsc2U7XG4gIH1cblxuICBiYWNrKCkge1xuICAgIHRoaXMuZGV0YWlsUGFnZVNlcnZpY2Uub3Blbkxpc3QoKTtcbiAgfVxuXG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cInN0cmV0Y2hcIiBjbGFzcz1cImZ1bGwtaGVpZ2h0LW1pblwiIFtuZ0NsYXNzXT1cInsncGFnZSBmdWxsLWhlaWdodC1vbmx5IHZlcnRpY2FsbHktc2Nyb2xsYWJsZSc6ICFpc1RhYmJlZENvbnRlbnR9XCI+XG4gIDxkaXYgZnhGbGV4PVwiMCAwIGF1dG9cIiBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgc3RhcnRcIiBmeExheW91dEdhcD1cIjE2cHhcIj5cbiAgICAgIDxkaXYgZnhGbGV4PVwiMCAwIGF1dG9cIiAqbmdJZj1cIiFkZXRhaWxQYWdlU2VydmljZS5oaWRlQmFja0J1dHRvblwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYmFjay1idXR0b25cIiBtYXQtbWluaS1mYWIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkJhY2tDbGlja2VkKClcIj5cbiAgICAgICAgICA8bWF0LWljb24+YXJyb3dfYmFjazwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgZnhGbGV4PVwiMSAxIGF1dG9cIj5cbiAgICAgICAgPG1hbnRsZS1jb250ZW50LXRpdGxlICpuZ0lmPVwiaGVhZGVyXCIgW3RodW1ibmFpbF09XCJoZWFkZXIudGh1bWJuYWlsXCIgW3RpdGxlXT1cImhlYWRlci50aXRsZVwiPjwvbWFudGxlLWNvbnRlbnQtdGl0bGU+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBmeEZsZXg9XCIwIDAgYXV0b1wiICpuZ0lmPVwiZGV0YWlsUGFnZVNlcnZpY2Uuc2hvd0VkaXRCdXR0b24gJiYgZGV0YWlsUGFnZVNlcnZpY2UuY2FuV3JpdGUoKVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1taW5pLWZhYlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0LWJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25FZGl0Q2xpY2tlZCgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkZXRhaWxQYWdlU2VydmljZS5pc0NvbW1pdEluUHJvZ3Jlc3NcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgZnhGbGV4PVwiMSAwIGF1dG9cIiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxuICAgIDxtYW50bGUtZHluYW1pYy1kZXRhaWxzIFtjb250ZW50XT1cImNvbnRlbnQkIHwgYXN5bmNcIiBbZGV0YWlsUGFnZVNlcnZpY2VdPVwiZGV0YWlsUGFnZVNlcnZpY2VcIj48L21hbnRsZS1keW5hbWljLWRldGFpbHM+XG4gIDwvZGl2PlxuXG4gIDxkaXYgZnhGbGV4PVwiMCAwIGF1dG9cIiBjbGFzcz1cInBhZ2UtZm9vdGVyXCI+XG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxNnB4XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYm90dG9tTGVmdEJ1dHRvbnNcIj5cbiAgICAgICAgPGRpdiBmeEZsZXg9XCIwIDAgYXV0b1wiICpuZ0lmPVwiYnV0dG9uLnNob3dcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICAgIGNvbG9yPVwie3sgYnV0dG9uLmNvbG9yIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWRkaXRpb25hbC1idXR0b25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpbi1wcm9ncmVzcy1idXR0b24nOiBidXR0b24uaXNJblByb2dyZXNzKCkgfVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkZXRhaWxQYWdlU2VydmljZS5pc0NvbW1pdEluUHJvZ3Jlc3MgfHwgYnV0dG9uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImJ1dHRvbi5vbkNsaWNrKGlkKVwiPlxuICAgICAgICAgICAge3sgYnV0dG9uLmxhYmVsIH19XG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJidXR0b24uaXNJblByb2dyZXNzKClcIiBtYXRTdWZmaXggW2RpYW1ldGVyXT1cIjE2XCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQkIHwgYXN5bmMgYXMgY29udGVudFwiPlxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjAgMCBhdXRvXCIgKm5nRm9yPVwibGV0IGV4cG9ydE9wdGlvbiBvZiBleHBvcnRPcHRpb25zXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIihleHBvcnRPcHRpb24uc2hvdyA9PSBudWxsKSB8fCAoZXhwb3J0T3B0aW9uLnNob3cpXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXhwb3J0LWJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRPcHRpb24uZXhwb3J0KGNvbnRlbnQuZGF0YSkuc3Vic2NyaWJlKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGV0YWlsUGFnZVNlcnZpY2UuaXNDb21taXRJblByb2dyZXNzXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXhwb3J0LWJ1dHRvbi1sYWJlbFwiPnt7IGV4cG9ydE9wdGlvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmRvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2IGZ4RmxleD1cIjEgMSBhdXRvXCI+PC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBib3R0b21SaWdodEJ1dHRvbnNcIj5cbiAgICAgICAgPGRpdiBmeEZsZXg9XCIwIDAgYXV0b1wiICpuZ0lmPVwiYnV0dG9uLnNob3dcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICAgIGNvbG9yPVwie3sgYnV0dG9uLmNvbG9yIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWRkaXRpb25hbC1idXR0b25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpbi1wcm9ncmVzcy1idXR0b24nOiBidXR0b24uaXNJblByb2dyZXNzKCkgfVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkZXRhaWxQYWdlU2VydmljZS5pc0NvbW1pdEluUHJvZ3Jlc3MgfHwgYnV0dG9uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImJ1dHRvbi5vbkNsaWNrKGlkKVwiPlxuICAgICAgICAgICAge3sgYnV0dG9uLmxhYmVsIH19XG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJidXR0b24uaXNJblByb2dyZXNzKClcIiBtYXRTdWZmaXggW2RpYW1ldGVyXT1cIjE2XCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiBmeEZsZXg9XCIwIDAgYXV0b1wiICpuZ0lmPVwiZGV0YWlsUGFnZVNlcnZpY2Uuc2hvd0RlbGV0ZUJ1dHRvbiAmJiBkZXRhaWxQYWdlU2VydmljZS5jYW5Xcml0ZSgpXCI+XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvblxuICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJkZWxldGUtYnV0dG9uXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2luLXByb2dyZXNzLWJ1dHRvbic6IGlzRGVsZXRlSW5Qcm9ncmVzcyB9XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkZXRhaWxQYWdlU2VydmljZS5pc0NvbW1pdEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlQ2xpY2tlZCgpXCI+XG4gICAgICAgICAgRGVsZXRlIHt7IGRldGFpbFBhZ2VTZXJ2aWNlLm5vdW4oKSB9fVxuICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImlzRGVsZXRlSW5Qcm9ncmVzc1wiIG1hdFN1ZmZpeCBbZGlhbWV0ZXJdPVwiMTZcIj48L21hdC1zcGlubmVyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlcy9kZXRhaWwtcGFnZS9kZXRhaWwtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2VzL2RldGFpbC1wYWdlL2RldGFpbC1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQWM1RCxNQUFNLE9BQU8sbUJBQW1CO0lBYTlCLFlBQW9CLEtBQXFCLEVBQVUsUUFBa0IsRUFDakQsbUJBQXdDO1FBRHhDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNqRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBTnJELHNCQUFpQixHQUF1QixFQUFFLENBQUM7UUFDM0MsdUJBQWtCLEdBQXVCLEVBQUUsQ0FBQztRQUM1QyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUt0QyxNQUFNLCtCQUErQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBb0IsK0JBQStCLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUN0RSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FB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bUIsMERDZGhDLDRnSkF3R0E7MkZEMUZhLG1CQUFtQjtrQkFML0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixXQUFXLEVBQUUsOEJBQThCO29CQUMzQyxTQUFTLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztpQkFDNUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIER5bmFtaWNMYXlvdXRDb250YWluZXIsIER5bmFtaWNMYXlvdXRTZWN0aW9uLCBEeW5hbWljTGF5b3V0VGFibGVTZWN0aW9uXG59IGZyb20gJy4uLy4uLy4uL2RhdGEtc3RydWN0dXJlcy9keW5hbWljLWxheW91dC5zdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgQW5ub3VuY2VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Fubm91bmNlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERldGFpbFBhZ2VCdXR0b24sIERldGFpbFBhZ2VFeHBvcnRPcHRpb24sIERldGFpbFBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaW50ZXJmYWNlcy9kZXRhaWwtcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFdlYkFwaURlbGV0ZVJlc3BvbnNlLCBXZWJBcGlEZXRhaWxzUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hZGFwdGVycy93ZWItYXBpLWNydWQuYWRhcHRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1kZXRhaWwtcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXRhaWwtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RldGFpbC1wYWdlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGV0YWlsUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIGRldGFpbFBhZ2VTZXJ2aWNlOiBEZXRhaWxQYWdlU2VydmljZTtcblxuICBwdWJsaWMgaWQhOiBzdHJpbmc7XG4gIHB1YmxpYyBoZWFkZXI6IGFueTtcbiAgcHVibGljIGNvbnRlbnQhOiBhbnk7XG4gIHB1YmxpYyBleHBvcnRPcHRpb25zITogRGV0YWlsUGFnZUV4cG9ydE9wdGlvbltdO1xuICBwdWJsaWMgYm90dG9tTGVmdEJ1dHRvbnM6IERldGFpbFBhZ2VCdXR0b25bXSA9IFtdO1xuICBwdWJsaWMgYm90dG9tUmlnaHRCdXR0b25zOiBEZXRhaWxQYWdlQnV0dG9uW10gPSBbXTtcbiAgcHVibGljIGlzVGFiYmVkQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaXNEZWxldGVJblByb2dyZXNzITogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgYW5ub3VuY2VtZW50U2VydmljZTogQW5ub3VuY2VtZW50U2VydmljZSkge1xuICAgIGNvbnN0IGRldGFpbFBhZ2VTZXJ2aWNlSW5qZWN0aW9uVG9rZW4gPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbJ2RldGFpbFBhZ2VTZXJ2aWNlJ107XG4gICAgdGhpcy5kZXRhaWxQYWdlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PERldGFpbFBhZ2VTZXJ2aWNlPihkZXRhaWxQYWdlU2VydmljZUluamVjdGlvblRva2VuKTtcbiAgICB0aGlzLmRldGFpbFBhZ2VTZXJ2aWNlLnNldFBhcmVudENvbXBvbmVudCh0aGlzKTtcbiAgICB0aGlzLmV4cG9ydE9wdGlvbnMgPSB0aGlzLmRldGFpbFBhZ2VTZXJ2aWNlLmRldGFpbFBhZ2VFeHBvcnRPcHRpb25zKCk7XG4gICAgdGhpcy5pc1RhYmJlZENvbnRlbnQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbJ2lzVGFiYmVkQ29udGVudCddO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wdWxsQ29udGVudCgpO1xuICB9XG5cbiAgcHVsbENvbnRlbnQoKSB7XG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICB0aGlzLmlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ107XG5cbiAgICAgIHRoaXMuZGV0YWlsUGFnZVNlcnZpY2UuZ2V0KHRoaXMuaWQpLnN1YnNjcmliZShcbiAgICAgICAgKHJlczogV2ViQXBpRGV0YWlsc1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkQ29udGVudChyZXMpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgbG9hZENvbnRlbnQocmVzcG9uc2U6IGFueSkge1xuICAgIHRoaXMuaGVhZGVyID0gcmVzcG9uc2UuaGVhZGVyO1xuICAgIHRoaXMuY29udGVudCA9IHJlc3BvbnNlLmNvbnRlbnQ7XG5cbiAgICB0aGlzLmRldGFpbFBhZ2VTZXJ2aWNlLm9uRGV0YWlsQ29udGVudExvYWRlZCh0aGlzLmNvbnRlbnQpO1xuXG4gICAgdGhpcy5jb250ZW50LmNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyOiBEeW5hbWljTGF5b3V0Q29udGFpbmVyKSA9PiB7XG4gICAgICBjb250YWluZXIuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbjogRHluYW1pY0xheW91dFNlY3Rpb24pID0+IHtcbiAgICAgICAgdGhpcy5sb2FkU2VjdGlvbkFjdGlvbnMoc2VjdGlvbik7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMubG9hZEFkZGl0aW9uYWxCdXR0b25zKHRoaXMuY29udGVudC5kYXRhKTtcbiAgICB0aGlzLmV4cG9ydE9wdGlvbnMgPSB0aGlzLmRldGFpbFBhZ2VTZXJ2aWNlLmRldGFpbFBhZ2VFeHBvcnRPcHRpb25zKHRoaXMuY29udGVudC5kYXRhKTtcbiAgfVxuXG4gIGxvYWRTZWN0aW9uQWN0aW9ucyhzZWN0aW9uOiBEeW5hbWljTGF5b3V0U2VjdGlvbikge1xuICAgIGxldCBzZWN0aW9uQWN0aW9ucyA9IHRoaXMuZGV0YWlsUGFnZVNlcnZpY2UuZGV0YWlsUGFnZVNlY3Rpb25BY3Rpb25zKHNlY3Rpb24uc2x1ZyEpO1xuICAgIGlmIChzZWN0aW9uQWN0aW9ucy5sZW5ndGggPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKHNlY3Rpb24ubGF5b3V0ID09ICd0YWJsZScpIHtcbiAgICAgIGxldCBhY3Rpb25zQ29sdW1uID0geyBoZWFkZXI6ICcnLCBhdHRyOiAndGFibGVfcm93X2FjdGlvbnMnLCB0eXBlOiAnYWN0aW9ucycsIG9wdGlvbnM6IHsgYWN0aW9uczogc2VjdGlvbkFjdGlvbnMgfSB9O1xuICAgICAgKHNlY3Rpb24gYXMgRHluYW1pY0xheW91dFRhYmxlU2VjdGlvbikuZWxlbWVudHMucHVzaChhY3Rpb25zQ29sdW1uKTtcbiAgICB9XG4gIH1cblxuICBsb2FkQWRkaXRpb25hbEJ1dHRvbnMocmVjb3JkOiBhbnkpIHtcbiAgICBsZXQgYWRkaXRpb25hbERldGFpbFBhZ2VCdXR0b25zID0gdGhpcy5kZXRhaWxQYWdlU2VydmljZS5hZGRpdGlvbmFsRGV0YWlsUGFnZUJ1dHRvbnMocmVjb3JkKTtcbiAgICB0aGlzLmJvdHRvbUxlZnRCdXR0b25zID0gYWRkaXRpb25hbERldGFpbFBhZ2VCdXR0b25zLmZpbHRlcihidXR0b24gPT4ge1xuICAgICAgcmV0dXJuIGJ1dHRvbi5wb3NpdGlvbiA9PSAnbGVmdCc7XG4gICAgfSk7XG4gICAgdGhpcy5ib3R0b21SaWdodEJ1dHRvbnMgPSBhZGRpdGlvbmFsRGV0YWlsUGFnZUJ1dHRvbnMuZmlsdGVyKGJ1dHRvbiA9PiB7XG4gICAgICByZXR1cm4gYnV0dG9uLnBvc2l0aW9uID09ICdyaWdodCc7XG4gICAgfSk7XG4gIH1cblxuICBvbkVkaXRDbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZGV0YWlsUGFnZVNlcnZpY2Uub3BlbkZvcm0oeyBpZDogdGhpcy5pZCB9KTtcbiAgfVxuXG4gIG9uQ2xvbmVDbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZGV0YWlsUGFnZVNlcnZpY2Uub3BlbkZvcm0oe30sIHsgY2xvbmVfaWQ6IHRoaXMuaWQgfSk7XG4gIH1cblxuICBvbkJhY2tDbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZGV0YWlsUGFnZVNlcnZpY2Uub3Blbkxpc3QoKTtcbiAgfVxuXG4gIG9uRGVsZXRlQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmRldGFpbFBhZ2VTZXJ2aWNlLmRlbGV0ZShcbiAgICAgIHRoaXMuaWQsXG4gICAgICAoKSA9PiB7IHRoaXMuaXNEZWxldGVJblByb2dyZXNzID0gdHJ1ZTsgfSxcbiAgICAgIChyZXM6IFdlYkFwaURlbGV0ZVJlc3BvbnNlKSA9PiB7IHRoaXMub25EZWxldGVTdWNjZXNzKHJlcyk7IH0sXG4gICAgICAocmVzOiBXZWJBcGlEZWxldGVSZXNwb25zZSkgPT4geyB0aGlzLm9uRGVsZXRlRmFpbHVyZShyZXMpOyB9XG4gICAgKTtcbiAgfVxuXG4gIG9uRGVsZXRlU3VjY2VzcyhyZXM6IFdlYkFwaURlbGV0ZVJlc3BvbnNlKTogdm9pZCB7XG4gICAgdGhpcy5hbm5vdW5jZW1lbnRTZXJ2aWNlLnN1Y2Nlc3MoJ21hbnRsZS5tZXNzYWdlcy5kZWxldGVfc3VjY2Vzc2Z1bCcpO1xuICAgIHRoaXMuYmFjaygpO1xuXG4gICAgdGhpcy5pc0RlbGV0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgfVxuXG4gIG9uRGVsZXRlRmFpbHVyZShyZXM6IFdlYkFwaURlbGV0ZVJlc3BvbnNlKTogdm9pZCB7XG4gICAgdGhpcy5hbm5vdW5jZW1lbnRTZXJ2aWNlLmVycm9yKCdtYW50bGUubWVzc2FnZXMuZGVsZXRlX2ZhaWxlZCcpO1xuXG4gICAgdGhpcy5pc0RlbGV0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgfVxuXG4gIGJhY2soKSB7XG4gICAgdGhpcy5kZXRhaWxQYWdlU2VydmljZS5vcGVuTGlzdCgpO1xuICB9XG5cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RyZXRjaFwiIGNsYXNzPVwiZnVsbC1oZWlnaHQtbWluXCIgW25nQ2xhc3NdPVwieydwYWdlIGZ1bGwtaGVpZ2h0LW9ubHkgdmVydGljYWxseS1zY3JvbGxhYmxlJzogIWlzVGFiYmVkQ29udGVudH1cIj5cbiAgPGRpdiBmeEZsZXg9XCIwIDAgYXV0b1wiIGNsYXNzPVwicGFnZS1oZWFkZXJcIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBzdGFydFwiIGZ4TGF5b3V0R2FwPVwiMTZweFwiPlxuICAgICAgPGRpdiBmeEZsZXg9XCIwIDAgYXV0b1wiICpuZ0lmPVwiIWRldGFpbFBhZ2VTZXJ2aWNlLmhpZGVCYWNrQnV0dG9uXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJiYWNrLWJ1dHRvblwiIG1hdC1taW5pLWZhYiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQmFja0NsaWNrZWQoKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBmeEZsZXg9XCIxIDEgYXV0b1wiPlxuICAgICAgICA8bWFudGxlLWNvbnRlbnQtdGl0bGUgKm5nSWY9XCJoZWFkZXJcIiBbdGh1bWJuYWlsXT1cImhlYWRlci50aHVtYm5haWxcIiBbdGl0bGVdPVwiaGVhZGVyLnRpdGxlXCI+PC9tYW50bGUtY29udGVudC10aXRsZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGZ4RmxleD1cIjAgMCBhdXRvXCIgKm5nSWY9XCJkZXRhaWxQYWdlU2VydmljZS5zaG93RWRpdEJ1dHRvbiAmJiBkZXRhaWxQYWdlU2VydmljZS5jYW5Xcml0ZSgpXCI+XG4gICAgICAgIDxidXR0b24gbWF0LW1pbmktZmFiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXQtYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRDbGlja2VkKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRldGFpbFBhZ2VTZXJ2aWNlLmlzQ29tbWl0SW5Qcm9ncmVzc1wiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBmeEZsZXg9XCIxIDAgYXV0b1wiIGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG4gICAgPG1hbnRsZS1keW5hbWljLWRldGFpbHMgW2NvbnRlbnRdPVwiY29udGVudFwiIFtkZXRhaWxQYWdlU2VydmljZV09XCJkZXRhaWxQYWdlU2VydmljZVwiPjwvbWFudGxlLWR5bmFtaWMtZGV0YWlscz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBmeEZsZXg9XCIwIDAgYXV0b1wiIGNsYXNzPVwicGFnZS1mb290ZXJcIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeExheW91dEdhcD1cIjE2cHhcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBib3R0b21MZWZ0QnV0dG9uc1wiPlxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjAgMCBhdXRvXCIgKm5nSWY9XCJidXR0b24uc2hvd1wiPlxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgICAgY29sb3I9XCJ7eyBidXR0b24uY29sb3IgfX1cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhZGRpdGlvbmFsLWJ1dHRvblwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2luLXByb2dyZXNzLWJ1dHRvbic6IGJ1dHRvbi5pc0luUHJvZ3Jlc3MoKSB9XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRldGFpbFBhZ2VTZXJ2aWNlLmlzQ29tbWl0SW5Qcm9ncmVzcyB8fCBidXR0b24uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYnV0dG9uLm9uQ2xpY2soaWQpXCI+XG4gICAgICAgICAgICB7eyBidXR0b24ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImJ1dHRvbi5pc0luUHJvZ3Jlc3MoKVwiIG1hdFN1ZmZpeCBbZGlhbWV0ZXJdPVwiMTZcIj48L21hdC1zcGlubmVyPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFwiPlxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjAgMCBhdXRvXCIgKm5nRm9yPVwibGV0IGV4cG9ydE9wdGlvbiBvZiBleHBvcnRPcHRpb25zXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIihleHBvcnRPcHRpb24uc2hvdyA9PSBudWxsKSB8fCAoZXhwb3J0T3B0aW9uLnNob3cpXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXhwb3J0LWJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRPcHRpb24uZXhwb3J0KGNvbnRlbnQuZGF0YSkuc3Vic2NyaWJlKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGV0YWlsUGFnZVNlcnZpY2UuaXNDb21taXRJblByb2dyZXNzXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXhwb3J0LWJ1dHRvbi1sYWJlbFwiPnt7IGV4cG9ydE9wdGlvbi5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmRvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2IGZ4RmxleD1cIjEgMSBhdXRvXCI+PC9kaXY+XG5cbiAgICAgIDxkaXYgZnhGbGV4PVwiMCAwIGF1dG9cIiAqbmdJZj1cImRldGFpbFBhZ2VTZXJ2aWNlLnNob3dDbG9uZUJ1dHRvbiAmJiBkZXRhaWxQYWdlU2VydmljZS5jYW5Xcml0ZSgpXCI+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJjbG9uZS1idXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvbmVDbGlja2VkKClcIj5cbiAgICAgICAgICB7eyAnbWFudGxlLmJ1dHRvbnMuY2xvbmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBib3R0b21SaWdodEJ1dHRvbnNcIj5cbiAgICAgICAgPGRpdiBmeEZsZXg9XCIwIDAgYXV0b1wiICpuZ0lmPVwiYnV0dG9uLnNob3dcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICAgIGNvbG9yPVwie3sgYnV0dG9uLmNvbG9yIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWRkaXRpb25hbC1idXR0b25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpbi1wcm9ncmVzcy1idXR0b24nOiBidXR0b24uaXNJblByb2dyZXNzKCkgfVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkZXRhaWxQYWdlU2VydmljZS5pc0NvbW1pdEluUHJvZ3Jlc3MgfHwgYnV0dG9uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImJ1dHRvbi5vbkNsaWNrKGlkKVwiPlxuICAgICAgICAgICAge3sgYnV0dG9uLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJidXR0b24uaXNJblByb2dyZXNzKClcIiBtYXRTdWZmaXggW2RpYW1ldGVyXT1cIjE2XCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiBmeEZsZXg9XCIwIDAgYXV0b1wiICpuZ0lmPVwiZGV0YWlsUGFnZVNlcnZpY2Uuc2hvd0RlbGV0ZUJ1dHRvbiAmJiBkZXRhaWxQYWdlU2VydmljZS5jYW5Xcml0ZSgpXCI+XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvblxuICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJkZWxldGUtYnV0dG9uXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2luLXByb2dyZXNzLWJ1dHRvbic6IGlzRGVsZXRlSW5Qcm9ncmVzcyB9XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkZXRhaWxQYWdlU2VydmljZS5pc0NvbW1pdEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlQ2xpY2tlZCgpXCI+XG4gICAgICAgICAge3sgJ21hbnRsZS5idXR0b25zLmRlbGV0ZScgfCB0cmFuc2xhdGUgfX0ge3sgZGV0YWlsUGFnZVNlcnZpY2Uubm91bigpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiaXNEZWxldGVJblByb2dyZXNzXCIgbWF0U3VmZml4IFtkaWFtZXRlcl09XCIxNlwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -23,6 +23,7 @@ import * as i15 from "@angular/flex-layout/flex";
23
23
  import * as i16 from "@angular/common";
24
24
  import * as i17 from "@angular/flex-layout/extended";
25
25
  import * as i18 from "../../../directives/file-dropzone.directive";
26
+ import * as i19 from "@ngx-translate/core";
26
27
  export class DocumentsPageComponent {
27
28
  constructor(route, injector, announcementService, webApiService, screenSizeService) {
28
29
  this.route = route;
@@ -75,13 +76,13 @@ export class DocumentsPageComponent {
75
76
  this.listPageService.openForm({}, { document: document });
76
77
  this.uploadInProgress = false;
77
78
  }, (response) => {
78
- this.announcementService.error('Unable to upload file');
79
+ this.announcementService.error('mantle.messages.unable_to_upload_file');
79
80
  this.uploadInProgress = false;
80
81
  });
81
82
  }
82
83
  }
83
84
  DocumentsPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: DocumentsPageComponent, deps: [{ token: i1.ActivatedRoute }, { token: i0.Injector }, { token: i2.AnnouncementService }, { token: i3.WebApiService }, { token: i4.ScreenSizeService }], target: i0.ɵɵFactoryTarget.Component });
84
- DocumentsPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: DocumentsPageComponent, selector: "mantle-documents-page", viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "table", first: true, predicate: MatTable, descendants: true }, { propertyName: "searchPanel", first: true, predicate: SearchPanelComponent, descendants: true }], ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"16px\" class=\"list-page full-height-only\" [ngClass]=\"{'page': !isTabbedContent}\">\n\n <div fxFlex=\"0 0 auto\" *ngIf=\"!isTabbedContent\">\n <mantle-page-title>{{ pageTitle }}</mantle-page-title>\n </div>\n\n <div fxFlex=\"1 0 1px\">\n <mat-drawer-container class=\"full-height-only\" [hasBackdrop]=\"isSmallScreen\">\n <mat-drawer #drawer\n [mode]=\"isSmallScreen ? 'over' : 'side'\"\n [position]=\"isSmallScreen ? 'end' : 'start'\"\n [opened]=\"isActionPanelOpen\"\n [disableClose]=\"!isSmallScreen\"\n (closedStart)=\"isActionPanelOpen = false\"\n (openedStart)=\"isActionPanelOpen = true\">\n\n <button *ngIf=\"listPageService.showAddButton && listPageService.canWrite()\"\n mat-raised-button\n color=\"accent\"\n type=\"button\"\n class=\"add-button\"\n (click)=\"onAddClicked()\">\n + New {{ listPageService?.noun() }}\n </button>\n\n <div class=\"search-section\">\n <mantle-search-panel #searchPanel\n [searchFields]=\"listPageService.searchFields()\">\n </mantle-search-panel>\n </div>\n\n <ng-container *ngFor=\"let exportOption of exportOptions\">\n <button mat-button type=\"button\" class=\"export-button\" (click)=\"exportOption.export(searchPanel.searchParams).subscribe()\">\n <span class=\"export-button-label\">{{ exportOption.label }}</span>\n <mat-icon>download</mat-icon>\n </button>\n </ng-container>\n\n </mat-drawer>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"stretch\" class=\"main-content full-height-only\"\n file-dropzone (fileDropped)=\"onFileDropped($event[0])\" [class.uploading]=\"uploadInProgress\">\n\n <div *ngIf=\"uploadInProgress\" class=\"uploading-indicator-overlay\">\n <div class=\"uploading-indicator\">Uploading...</div>\n <mantle-loader></mantle-loader>\n </div>\n\n <div fxFlex=\"1 0 1px\" class=\"vertically-scrollable\">\n <table mat-table class=\"full-width horizontal-scroll-table\" matSort>\n\n <ng-container *ngFor=\"let column of displayedColumns\">\n <ng-container matColumnDef=\"{{ column.attr }}\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{ column.header }}</th>\n <td mat-cell *matCellDef=\"let row\">\n <mantle-dynamic-attribute-display\n [fieldType]=\"column.type\"\n [value]=\"row[column.attr]\">\n </mantle-dynamic-attribute-display>\n </td>\n </ng-container>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnAttrs\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumnAttrs;\"\n (click)=\"onRecordClicked(row)\"\n [class.clickable-row]=\"withClickableRows\">\n </tr>\n </table>\n </div>\n\n <mat-paginator #paginator\n fxFlex=\"0 0 auto\"\n [length]=\"0\"\n [pageIndex]=\"0\"\n [pageSize]=\"10\"\n [pageSizeOptions]=\"[10, 20, 50]\">\n </mat-paginator>\n\n </div>\n\n </mat-drawer-container>\n </div>\n\n <div fxFlex=\"0 0 auto\" *ngIf=\"isSmallScreen\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayoutGap=\"16px\">\n\n <button *ngIf=\"isActionPanelOpen\" type=\"button\" mat-button (click)=\"drawer.toggle()\">\n <ng-container *ngIf=\"isActionPanelOpen\">\n Close Actions<mat-icon>chevron_right</mat-icon>\n </ng-container>\n </button>\n\n <div fxFlex=\"1 1 auto\"></div>\n\n <button *ngIf=\"!isActionPanelOpen\" type=\"button\" mat-button (click)=\"drawer.toggle()\">\n <ng-container>\n <mat-icon>chevron_left</mat-icon> Open Actions\n </ng-container>\n </button>\n\n </div>\n </div>\n</div>\n", styles: [".main-content{padding-top:0;padding-bottom:0}.mat-drawer{padding:0 16px 0 0}.mat-drawer .add-button{display:block;width:100%;text-transform:uppercase;border-radius:0;margin:16px 0 0}.mat-drawer-end{padding:0 16px}.search-section{margin:16px 0 0}.export-button{display:block;width:144px;background-color:transparent;white-space:nowrap;padding:0;margin:16px 0 16px auto}.export-button .export-button-label{display:inline-block;width:100px;white-space:normal;text-align:right;text-transform:uppercase;font-weight:normal;line-height:1.25rem;margin-right:.25rem}.export-button .mat-icon{height:auto;width:auto;font-size:2.5rem}.toggle-collapsible-columns-button{width:200px;text-transform:uppercase}.toggle-collapsible-columns-button .mat-icon{font-size:1.2rem}.collapsible-column-left{border-left:1px solid lightgray}.collapsible-column-right{border-right:1px solid lightgray}th.collapsible-column{border-top:1px solid lightgray}th.collapsible-column-left{border-radius:2px 0 0}th.collapsible-column-right{border-radius:0 2px 0 0}\n"], components: [{ type: i5.PageTitleComponent, selector: "mantle-page-title" }, { type: i6.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { type: i6.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { type: i7.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.SearchPanelComponent, selector: "mantle-search-panel", inputs: ["searchFields"], outputs: ["search"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.LoaderComponent, selector: "mantle-loader", inputs: ["delay"] }, { type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i12.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "arrowPosition", "sortActionDescription", "disableClear", "mat-sort-header", "start"], exportAs: ["matSortHeader"] }, { type: i13.DynamicAttributeDisplayComponent, selector: "mantle-dynamic-attribute-display", inputs: ["value", "field", "fieldType", "options"] }, { type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i14.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i15.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i15.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i15.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i16.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i17.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i16.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i15.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i16.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i18.FileDropzoneDirective, selector: "[file-dropzone]", outputs: ["fileDropped"] }, { type: i12.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortActive"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i11.MatCellDef, selector: "[matCellDef]" }, { type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }] });
85
+ DocumentsPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: DocumentsPageComponent, selector: "mantle-documents-page", viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "table", first: true, predicate: MatTable, descendants: true }, { propertyName: "searchPanel", first: true, predicate: SearchPanelComponent, descendants: true }], ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutAlign=\"stretch\" fxLayoutGap=\"16px\" class=\"list-page full-height-only\" [ngClass]=\"{'page': !isTabbedContent}\">\n\n <div fxFlex=\"0 0 auto\" *ngIf=\"!isTabbedContent\">\n <mantle-page-title>{{ pageTitle | translate }}</mantle-page-title>\n </div>\n\n <div fxFlex=\"1 0 1px\">\n <mat-drawer-container class=\"full-height-only\" [hasBackdrop]=\"isSmallScreen\">\n <mat-drawer #drawer\n [mode]=\"isSmallScreen ? 'over' : 'side'\"\n [position]=\"isSmallScreen ? 'end' : 'start'\"\n [opened]=\"isActionPanelOpen\"\n [disableClose]=\"!isSmallScreen\"\n (closedStart)=\"isActionPanelOpen = false\"\n (openedStart)=\"isActionPanelOpen = true\">\n\n <button *ngIf=\"listPageService.showAddButton && listPageService.canWrite()\"\n mat-raised-button\n color=\"accent\"\n type=\"button\"\n class=\"add-button\"\n (click)=\"onAddClicked()\">\n + {{ 'mantle.buttons.add' | translate }} {{ listPageService.noun() | translate }}\n </button>\n\n <div class=\"search-section\">\n <mantle-search-panel #searchPanel\n [searchFields]=\"listPageService.searchFields()\">\n </mantle-search-panel>\n </div>\n\n <ng-container *ngFor=\"let exportOption of exportOptions\">\n <button mat-button type=\"button\" class=\"export-button\" (click)=\"exportOption.export(searchPanel.searchParams).subscribe()\">\n <span class=\"export-button-label\">{{ exportOption.label | translate }}</span>\n <mat-icon>download</mat-icon>\n </button>\n </ng-container>\n\n </mat-drawer>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"stretch\" class=\"main-content full-height-only\"\n file-dropzone (fileDropped)=\"onFileDropped($event[0])\" [class.uploading]=\"uploadInProgress\">\n\n <div *ngIf=\"uploadInProgress\" class=\"uploading-indicator-overlay\">\n <div class=\"uploading-indicator\">Uploading...</div>\n <mantle-loader></mantle-loader>\n </div>\n\n <div fxFlex=\"1 0 1px\" class=\"vertically-scrollable\">\n <table mat-table class=\"full-width horizontal-scroll-table\" matSort>\n\n <ng-container *ngFor=\"let column of displayedColumns\">\n <ng-container matColumnDef=\"{{ column.attr }}\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{ column.header | translate }}</th>\n <td mat-cell *matCellDef=\"let row\">\n <mantle-dynamic-attribute-display\n [fieldType]=\"column.type\"\n [value]=\"row[column.attr]\">\n </mantle-dynamic-attribute-display>\n </td>\n </ng-container>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnAttrs\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumnAttrs;\"\n (click)=\"onRecordClicked(row)\"\n [class.clickable-row]=\"withClickableRows\">\n </tr>\n </table>\n </div>\n\n <mat-paginator #paginator\n fxFlex=\"0 0 auto\"\n [length]=\"0\"\n [pageIndex]=\"0\"\n [pageSize]=\"10\"\n [pageSizeOptions]=\"[10, 20, 50]\">\n </mat-paginator>\n\n </div>\n\n </mat-drawer-container>\n </div>\n\n <div fxFlex=\"0 0 auto\" *ngIf=\"isSmallScreen\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayoutGap=\"16px\">\n\n <button *ngIf=\"isActionPanelOpen\" type=\"button\" mat-button (click)=\"drawer.toggle()\">\n <ng-container *ngIf=\"isActionPanelOpen\">\n {{ 'mantle.buttons.close_actions' | translate }}<mat-icon>chevron_right</mat-icon>\n </ng-container>\n </button>\n\n <div fxFlex=\"1 1 auto\"></div>\n\n <button *ngIf=\"!isActionPanelOpen\" type=\"button\" mat-button (click)=\"drawer.toggle()\">\n <ng-container>\n <mat-icon>chevron_left</mat-icon> {{ 'mantle.buttons.open_actions' | translate }}\n </ng-container>\n </button>\n\n </div>\n </div>\n</div>\n", styles: [".main-content{padding-top:0;padding-bottom:0}.mat-drawer{padding:0 16px 0 0}.mat-drawer .add-button{display:block;width:200px;text-transform:uppercase;text-wrap-mode:wrap;border-radius:0;margin:16px 0 0;line-height:16px;padding:10px 16px}.mat-drawer-end{padding:0 16px}.search-section{margin:16px 0 0}.export-button{display:block;width:144px;background-color:transparent;white-space:nowrap;padding:0;margin:16px 0 16px auto}.export-button .export-button-label{display:inline-block;width:100px;white-space:normal;text-align:right;text-transform:uppercase;font-weight:normal;line-height:1.25rem;margin-right:.25rem}.export-button .mat-icon{height:auto;width:auto;font-size:2.5rem}.toggle-collapsible-columns-button{width:200px;text-transform:uppercase}.toggle-collapsible-columns-button .mat-icon{font-size:1.2rem}.collapsible-column-left{border-left:1px solid lightgray}.collapsible-column-right{border-right:1px solid lightgray}th.collapsible-column{border-top:1px solid lightgray}th.collapsible-column-left{border-radius:2px 0 0}th.collapsible-column-right{border-radius:0 2px 0 0}.additional-button{display:block;width:100%;text-transform:uppercase;border-radius:0;margin:16px 0 0}.in-progress-button .mat-spinner{position:absolute;top:10px;right:12px}\n"], components: [{ type: i5.PageTitleComponent, selector: "mantle-page-title" }, { type: i6.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { type: i6.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { type: i7.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.SearchPanelComponent, selector: "mantle-search-panel", inputs: ["searchFields"], outputs: ["search"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.LoaderComponent, selector: "mantle-loader", inputs: ["delay"] }, { type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i12.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "arrowPosition", "sortActionDescription", "disableClear", "mat-sort-header", "start"], exportAs: ["matSortHeader"] }, { type: i13.DynamicAttributeDisplayComponent, selector: "mantle-dynamic-attribute-display", inputs: ["value", "field", "fieldType", "options"] }, { type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i14.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i15.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i15.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i15.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i16.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i17.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i16.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i15.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i16.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i18.FileDropzoneDirective, selector: "[file-dropzone]", outputs: ["fileDropped"] }, { type: i12.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortActive"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i11.MatCellDef, selector: "[matCellDef]" }, { type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }], pipes: { "translate": i19.TranslatePipe } });
85
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: DocumentsPageComponent, decorators: [{
86
87
  type: Component,
87
88
  args: [{
@@ -102,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImpor
102
103
  type: ViewChild,
103
104
  args: [SearchPanelComponent]
104
105
  }] } });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRzLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlcy9kb2N1bWVudHMtcGFnZS9kb2N1bWVudHMtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2VzL2RvY3VtZW50cy1wYWdlL2RvY3VtZW50cy1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFNBQVMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUU5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUV2RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVOUYsTUFBTSxPQUFPLHNCQUFzQjtJQW1CakMsWUFBb0IsS0FBcUIsRUFBVSxRQUFrQixFQUNqRCxtQkFBd0MsRUFBVSxhQUE0QixFQUM5RSxpQkFBb0M7UUFGcEMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2pELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM5RSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVGpELG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBRWpDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUVsQyxz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QUFHLEtBQUssQ0FBQztRQUNoQyxDQUFDLEVBQ0QsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUNoQyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7O21IQTVFVSxzQkFBc0I7dUdBQXRCLHNCQUFzQix3R0FDdEIsWUFBWSx1RUFDWixPQUFPLHdFQUNQLFFBQVEsOEVBQ1Isb0JBQW9CLGdEQ3JCakMsd2hJQXdHQTsyRkR2RmEsc0JBQXNCO2tCQUxsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFdBQVcsRUFBRSxpQ0FBaUM7b0JBQzlDLFNBQVMsRUFBRSxDQUFDLHVDQUF1QyxDQUFDO2lCQUNyRDswTkFFMEIsU0FBUztzQkFBakMsU0FBUzt1QkFBQyxZQUFZO2dCQUNILElBQUk7c0JBQXZCLFNBQVM7dUJBQUMsT0FBTztnQkFDRyxLQUFLO3NCQUF6QixTQUFTO3VCQUFDLFFBQVE7Z0JBQ2MsV0FBVztzQkFBM0MsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIFZpZXdDaGlsZCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IFNlYXJjaFBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy93aWRnZXRzL3NlYXJjaC1wYW5lbC9zZWFyY2gtcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RQYWdlU2VydmljZSwgTGlzdFBhZ2VDb2x1bW4sIExpc3RQYWdlRXhwb3J0T3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaW50ZXJmYWNlcy9saXN0LXBhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBMaXN0UGFnZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3BhZ2VzL2xpc3QtcGFnZS9saXN0LXBhZ2UtZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBBbm5vdW5jZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYW5ub3VuY2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgV2ViQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBTY3JlZW5TaXplU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NjcmVlbi1zaXplLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYW50bGUtZG9jdW1lbnRzLXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnRzLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi4vbGlzdC1wYWdlL2xpc3QtcGFnZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERvY3VtZW50c1BhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0ITogTWF0U29ydDtcbiAgQFZpZXdDaGlsZChNYXRUYWJsZSkgdGFibGUhOiBNYXRUYWJsZTxhbnk+O1xuICBAVmlld0NoaWxkKFNlYXJjaFBhbmVsQ29tcG9uZW50KSBzZWFyY2hQYW5lbCE6IFNlYXJjaFBhbmVsQ29tcG9uZW50O1xuXG4gIHB1YmxpYyBsaXN0UGFnZVNlcnZpY2U6IExpc3RQYWdlU2VydmljZTtcbiAgcHVibGljIGRhdGFTb3VyY2U6IExpc3RQYWdlRGF0YVNvdXJjZTtcbiAgcHVibGljIGRpc3BsYXllZENvbHVtbnMhOiBMaXN0UGFnZUNvbHVtbltdO1xuICBwdWJsaWMgZGlzcGxheWVkQ29sdW1uQXR0cnMhOiBzdHJpbmdbXTtcbiAgcHVibGljIGV4cG9ydE9wdGlvbnMhOiBMaXN0UGFnZUV4cG9ydE9wdGlvbltdO1xuICBwdWJsaWMgd2l0aENsaWNrYWJsZVJvd3MhOiBib29sZWFuO1xuICBwdWJsaWMgaXNUYWJiZWRDb250ZW50OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBwYWdlVGl0bGU6IHN0cmluZztcbiAgcHVibGljIHVwbG9hZEluUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgaXNBY3Rpb25QYW5lbE9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzU21hbGxTY3JlZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgYW5ub3VuY2VtZW50U2VydmljZTogQW5ub3VuY2VtZW50U2VydmljZSwgcHJpdmF0ZSB3ZWJBcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHNjcmVlblNpemVTZXJ2aWNlOiBTY3JlZW5TaXplU2VydmljZSkge1xuICAgIGNvbnN0IGxpc3RQYWdlU2VydmljZUluamVjdGlvblRva2VuID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydsaXN0UGFnZVNlcnZpY2UnXTtcbiAgICB0aGlzLmxpc3RQYWdlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PExpc3RQYWdlU2VydmljZT4obGlzdFBhZ2VTZXJ2aWNlSW5qZWN0aW9uVG9rZW4pO1xuXG4gICAgdGhpcy5saXN0UGFnZVNlcnZpY2UucHJlcGFyZSh0aGlzLnJvdXRlKTtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTGlzdFBhZ2VEYXRhU291cmNlKHRoaXMubGlzdFBhZ2VTZXJ2aWNlKTtcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmxpc3RQYWdlU2VydmljZS5saXN0Q29sdW1ucygpO1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uQXR0cnMgPSB0aGlzLmRpc3BsYXllZENvbHVtbnMubWFwKGEgPT4gYS5hdHRyKTtcbiAgICB0aGlzLmV4cG9ydE9wdGlvbnMgPSB0aGlzLmxpc3RQYWdlU2VydmljZS5saXN0UGFnZUV4cG9ydE9wdGlvbnMoKTtcbiAgICB0aGlzLndpdGhDbGlja2FibGVSb3dzID0gdGhpcy5saXN0UGFnZVNlcnZpY2Uud2l0aENsaWNrYWJsZVJvd3M7XG4gICAgdGhpcy5pc1RhYmJlZENvbnRlbnQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbJ2lzVGFiYmVkQ29udGVudCddO1xuICAgIHRoaXMucGFnZVRpdGxlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydwYWdlVGl0bGUnXTtcblxuICAgIHRoaXMuc2NyZWVuU2l6ZVNlcnZpY2Uuc2NyZWVuU2l6ZS5zdWJzY3JpYmUoKHNjcmVlblNpemU6IGFueSkgPT4ge1xuICAgICAgdGhpcy5pc1NtYWxsU2NyZWVuID0gc2NyZWVuU2l6ZSA9PSAneHMnIHx8IHNjcmVlblNpemUgPT0gJ3NtJztcbiAgICAgIHRoaXMuaXNBY3Rpb25QYW5lbE9wZW4gPSAhdGhpcy5pc1NtYWxsU2NyZWVuO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc2VhcmNoUGFuZWwgPSB0aGlzLnNlYXJjaFBhbmVsO1xuICAgIHRoaXMudGFibGUuZGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZTtcbiAgfVxuXG4gIG9uUmVjb3JkQ2xpY2tlZChyZWNvcmQ6IGFueSkge1xuICAgIGlmICghdGhpcy53aXRoQ2xpY2thYmxlUm93cykgcmV0dXJuO1xuXG4gICAgdGhpcy5saXN0UGFnZVNlcnZpY2Uub3BlblJlY29yZChyZWNvcmQpO1xuICB9XG5cbiAgb25BZGRDbGlja2VkKCkge1xuICAgIHRoaXMubGlzdFBhZ2VTZXJ2aWNlLm9wZW5Gb3JtKCk7XG4gIH1cblxuICBvbkZpbGVEcm9wcGVkKGZpbGU6IEZpbGUpIHtcbiAgICB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MgPSB0cnVlO1xuXG4gICAgdGhpcy53ZWJBcGlTZXJ2aWNlLnVwbG9hZChmaWxlLFxuICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IGRvY3VtZW50ID0ge1xuICAgICAgICAgIGZpbGVuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgc291cmNlX3VybDogJycsXG4gICAgICAgICAgcHJldmlld191cmw6ICcnLFxuICAgICAgICAgIHNpZ25lZF9pZDogcmVzcG9uc2Uuc2lnbmVkX2lkXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saXN0UGFnZVNlcnZpY2Uub3BlbkZvcm0oe30sIHsgZG9jdW1lbnQ6IGRvY3VtZW50IH0pO1xuICAgICAgICB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFubm91bmNlbWVudFNlcnZpY2UuZXJyb3IoJ1VuYWJsZSB0byB1cGxvYWQgZmlsZScpO1xuICAgICAgICB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cInN0cmV0Y2hcIiBmeExheW91dEdhcD1cIjE2cHhcIiBjbGFzcz1cImxpc3QtcGFnZSBmdWxsLWhlaWdodC1vbmx5XCIgW25nQ2xhc3NdPVwieydwYWdlJzogIWlzVGFiYmVkQ29udGVudH1cIj5cblxuICA8ZGl2IGZ4RmxleD1cIjAgMCBhdXRvXCIgKm5nSWY9XCIhaXNUYWJiZWRDb250ZW50XCI+XG4gICAgPG1hbnRsZS1wYWdlLXRpdGxlPnt7IHBhZ2VUaXRsZSB9fTwvbWFudGxlLXBhZ2UtdGl0bGU+XG4gIDwvZGl2PlxuXG4gIDxkaXYgZnhGbGV4PVwiMSAwIDFweFwiPlxuICAgIDxtYXQtZHJhd2VyLWNvbnRhaW5lciBjbGFzcz1cImZ1bGwtaGVpZ2h0LW9ubHlcIiBbaGFzQmFja2Ryb3BdPVwiaXNTbWFsbFNjcmVlblwiPlxuICAgICAgPG1hdC1kcmF3ZXIgI2RyYXdlclxuICAgICAgICAgIFttb2RlXT1cImlzU21hbGxTY3JlZW4gPyAnb3ZlcicgOiAnc2lkZSdcIlxuICAgICAgICAgIFtwb3NpdGlvbl09XCJpc1NtYWxsU2NyZWVuID8gJ2VuZCcgOiAnc3RhcnQnXCJcbiAgICAgICAgICBbb3BlbmVkXT1cImlzQWN0aW9uUGFuZWxPcGVuXCJcbiAgICAgICAgICBbZGlzYWJsZUNsb3NlXT1cIiFpc1NtYWxsU2NyZWVuXCJcbiAgICAgICAgICAoY2xvc2VkU3RhcnQpPVwiaXNBY3Rpb25QYW5lbE9wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgKG9wZW5lZFN0YXJ0KT1cImlzQWN0aW9uUGFuZWxPcGVuID0gdHJ1ZVwiPlxuXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJsaXN0UGFnZVNlcnZpY2Uuc2hvd0FkZEJ1dHRvbiAmJiBsaXN0UGFnZVNlcnZpY2UuY2FuV3JpdGUoKVwiXG4gICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImFkZC1idXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWRkQ2xpY2tlZCgpXCI+XG4gICAgICAgICAgKyBOZXcge3sgbGlzdFBhZ2VTZXJ2aWNlPy5ub3VuKCkgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1zZWN0aW9uXCI+XG4gICAgICAgICAgPG1hbnRsZS1zZWFyY2gtcGFuZWwgI3NlYXJjaFBhbmVsXG4gICAgICAgICAgICAgIFtzZWFyY2hGaWVsZHNdPVwibGlzdFBhZ2VTZXJ2aWNlLnNlYXJjaEZpZWxkcygpXCI+XG4gICAgICAgICAgPC9tYW50bGUtc2VhcmNoLXBhbmVsPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBleHBvcnRPcHRpb24gb2YgZXhwb3J0T3B0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJleHBvcnQtYnV0dG9uXCIgKGNsaWNrKT1cImV4cG9ydE9wdGlvbi5leHBvcnQoc2VhcmNoUGFuZWwuc2VhcmNoUGFyYW1zKS5zdWJzY3JpYmUoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHBvcnQtYnV0dG9uLWxhYmVsXCI+e3sgZXhwb3J0T3B0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1pY29uPmRvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwvbWF0LWRyYXdlcj5cblxuICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdHJldGNoXCIgY2xhc3M9XCJtYWluLWNvbnRlbnQgZnVsbC1oZWlnaHQtb25seVwiXG4gICAgICAgICAgZmlsZS1kcm9wem9uZSAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnRbMF0pXCIgW2NsYXNzLnVwbG9hZGluZ109XCJ1cGxvYWRJblByb2dyZXNzXCI+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cInVwbG9hZEluUHJvZ3Jlc3NcIiBjbGFzcz1cInVwbG9hZGluZy1pbmRpY2F0b3Itb3ZlcmxheVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRpbmctaW5kaWNhdG9yXCI+VXBsb2FkaW5nLi4uPC9kaXY+XG4gICAgICAgICAgPG1hbnRsZS1sb2FkZXI+PC9tYW50bGUtbG9hZGVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjEgMCAxcHhcIiBjbGFzcz1cInZlcnRpY2FsbHktc2Nyb2xsYWJsZVwiPlxuICAgICAgICAgIDx0YWJsZSBtYXQtdGFibGUgY2xhc3M9XCJmdWxsLXdpZHRoIGhvcml6b250YWwtc2Nyb2xsLXRhYmxlXCIgbWF0U29ydD5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGRpc3BsYXllZENvbHVtbnNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBjb2x1bW4uYXR0ciB9fVwiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7IGNvbHVtbi5oZWFkZXIgfX08L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxtYW50bGUtZHluYW1pYy1hdHRyaWJ1dGUtZGlzcGxheVxuICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZFR5cGVdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dbY29sdW1uLmF0dHJdXCI+XG4gICAgICAgICAgICAgICAgICA8L21hbnRsZS1keW5hbWljLWF0dHJpYnV0ZS1kaXNwbGF5PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uQXR0cnNcIj48L3RyPlxuICAgICAgICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbkF0dHJzO1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVjb3JkQ2xpY2tlZChyb3cpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuY2xpY2thYmxlLXJvd109XCJ3aXRoQ2xpY2thYmxlUm93c1wiPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bWF0LXBhZ2luYXRvciAjcGFnaW5hdG9yXG4gICAgICAgICAgICBmeEZsZXg9XCIwIDAgYXV0b1wiXG4gICAgICAgICAgICBbbGVuZ3RoXT1cIjBcIlxuICAgICAgICAgICAgW3BhZ2VJbmRleF09XCIwXCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCIxMFwiXG4gICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cIlsxMCwgMjAsIDUwXVwiPlxuICAgICAgICA8L21hdC1wYWdpbmF0b3I+XG5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9tYXQtZHJhd2VyLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBmeEZsZXg9XCIwIDAgYXV0b1wiICpuZ0lmPVwiaXNTbWFsbFNjcmVlblwiPlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTZweFwiPlxuXG4gICAgICA8YnV0dG9uICpuZ0lmPVwiaXNBY3Rpb25QYW5lbE9wZW5cIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiZHJhd2VyLnRvZ2dsZSgpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FjdGlvblBhbmVsT3BlblwiPlxuICAgICAgICAgIENsb3NlIEFjdGlvbnM8bWF0LWljb24+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxkaXYgZnhGbGV4PVwiMSAxIGF1dG9cIj48L2Rpdj5cblxuICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpc0FjdGlvblBhbmVsT3BlblwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJkcmF3ZXIudG9nZ2xlKClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bWF0LWljb24+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj4gT3BlbiBBY3Rpb25zXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9idXR0b24+XG5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRzLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlcy9kb2N1bWVudHMtcGFnZS9kb2N1bWVudHMtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2VzL2RvY3VtZW50cy1wYWdlL2RvY3VtZW50cy1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFNBQVMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUU5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUV2RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVTlGLE1BQU0sT0FBTyxzQkFBc0I7SUFtQmpDLFlBQW9CLEtBQXFCLEVBQVUsUUFBa0IsRUFDakQsbUJBQXdDLEVBQVUsYUFBNEIsRUFDOUUsaUJBQW9DO1FBRnBDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNqRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDOUUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVRqRCxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVqQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFFbEMs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R0FBRyxLQUFLLENBQUM7UUFDaEMsQ0FBQyxFQUNELENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDOzttSEE1RVUsc0JBQXNCO3VHQUF0QixzQkFBc0Isd0dBQ3RCLFlBQVksdUVBQ1osT0FBTyx3RUFDUCxRQUFRLDhFQUNSLG9CQUFvQixnRENyQmpDLGdySUF3R0E7MkZEdkZhLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxXQUFXLEVBQUUsaUNBQWlDO29CQUM5QyxTQUFTLEVBQUUsQ0FBQyx1Q0FBdUMsQ0FBQztpQkFDckQ7ME5BRTBCLFNBQVM7c0JBQWpDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSCxJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0csS0FBSztzQkFBekIsU0FBUzt1QkFBQyxRQUFRO2dCQUNjLFdBQVc7c0JBQTNDLFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvd2lkZ2V0cy9zZWFyY2gtcGFuZWwvc2VhcmNoLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaXN0UGFnZVNlcnZpY2UsIExpc3RQYWdlQ29sdW1uLCBMaXN0UGFnZUV4cG9ydE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ludGVyZmFjZXMvbGlzdC1wYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGlzdFBhZ2VEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9wYWdlcy9saXN0LXBhZ2UvbGlzdC1wYWdlLWRhdGFzb3VyY2UnO1xuaW1wb3J0IHsgQW5ub3VuY2VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Fubm91bmNlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFdlYkFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy93ZWItYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NyZWVuU2l6ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zY3JlZW4tc2l6ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFudGxlLWRvY3VtZW50cy1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50cy1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4uL2xpc3QtcGFnZS9saXN0LXBhZ2UuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEb2N1bWVudHNQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3IhOiBNYXRQYWdpbmF0b3I7XG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydCE6IE1hdFNvcnQ7XG4gIEBWaWV3Q2hpbGQoTWF0VGFibGUpIHRhYmxlITogTWF0VGFibGU8YW55PjtcbiAgQFZpZXdDaGlsZChTZWFyY2hQYW5lbENvbXBvbmVudCkgc2VhcmNoUGFuZWwhOiBTZWFyY2hQYW5lbENvbXBvbmVudDtcblxuICBwdWJsaWMgbGlzdFBhZ2VTZXJ2aWNlOiBMaXN0UGFnZVNlcnZpY2U7XG4gIHB1YmxpYyBkYXRhU291cmNlOiBMaXN0UGFnZURhdGFTb3VyY2U7XG4gIHB1YmxpYyBkaXNwbGF5ZWRDb2x1bW5zITogTGlzdFBhZ2VDb2x1bW5bXTtcbiAgcHVibGljIGRpc3BsYXllZENvbHVtbkF0dHJzITogc3RyaW5nW107XG4gIHB1YmxpYyBleHBvcnRPcHRpb25zITogTGlzdFBhZ2VFeHBvcnRPcHRpb25bXTtcbiAgcHVibGljIHdpdGhDbGlja2FibGVSb3dzITogYm9vbGVhbjtcbiAgcHVibGljIGlzVGFiYmVkQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgcGFnZVRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyB1cGxvYWRJblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGlzQWN0aW9uUGFuZWxPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBpc1NtYWxsU2NyZWVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICAgICAgICBwcml2YXRlIGFubm91bmNlbWVudFNlcnZpY2U6IEFubm91bmNlbWVudFNlcnZpY2UsIHByaXZhdGUgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzY3JlZW5TaXplU2VydmljZTogU2NyZWVuU2l6ZVNlcnZpY2UpIHtcbiAgICBjb25zdCBsaXN0UGFnZVNlcnZpY2VJbmplY3Rpb25Ub2tlbiA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YVsnbGlzdFBhZ2VTZXJ2aWNlJ107XG4gICAgdGhpcy5saXN0UGFnZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxMaXN0UGFnZVNlcnZpY2U+KGxpc3RQYWdlU2VydmljZUluamVjdGlvblRva2VuKTtcblxuICAgIHRoaXMubGlzdFBhZ2VTZXJ2aWNlLnByZXBhcmUodGhpcy5yb3V0ZSk7XG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IExpc3RQYWdlRGF0YVNvdXJjZSh0aGlzLmxpc3RQYWdlU2VydmljZSk7XG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5saXN0UGFnZVNlcnZpY2UubGlzdENvbHVtbnMoKTtcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbkF0dHJzID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLm1hcChhID0+IGEuYXR0cik7XG4gICAgdGhpcy5leHBvcnRPcHRpb25zID0gdGhpcy5saXN0UGFnZVNlcnZpY2UubGlzdFBhZ2VFeHBvcnRPcHRpb25zKCk7XG4gICAgdGhpcy53aXRoQ2xpY2thYmxlUm93cyA9IHRoaXMubGlzdFBhZ2VTZXJ2aWNlLndpdGhDbGlja2FibGVSb3dzO1xuICAgIHRoaXMuaXNUYWJiZWRDb250ZW50ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydpc1RhYmJlZENvbnRlbnQnXTtcbiAgICB0aGlzLnBhZ2VUaXRsZSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YVsncGFnZVRpdGxlJ107XG5cbiAgICB0aGlzLnNjcmVlblNpemVTZXJ2aWNlLnNjcmVlblNpemUuc3Vic2NyaWJlKChzY3JlZW5TaXplOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaXNTbWFsbFNjcmVlbiA9IHNjcmVlblNpemUgPT0gJ3hzJyB8fCBzY3JlZW5TaXplID09ICdzbSc7XG4gICAgICB0aGlzLmlzQWN0aW9uUGFuZWxPcGVuID0gIXRoaXMuaXNTbWFsbFNjcmVlbjtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcbiAgICB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XG4gICAgdGhpcy5kYXRhU291cmNlLnNlYXJjaFBhbmVsID0gdGhpcy5zZWFyY2hQYW5lbDtcbiAgICB0aGlzLnRhYmxlLmRhdGFTb3VyY2UgPSB0aGlzLmRhdGFTb3VyY2U7XG4gIH1cblxuICBvblJlY29yZENsaWNrZWQocmVjb3JkOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMud2l0aENsaWNrYWJsZVJvd3MpIHJldHVybjtcblxuICAgIHRoaXMubGlzdFBhZ2VTZXJ2aWNlLm9wZW5SZWNvcmQocmVjb3JkKTtcbiAgfVxuXG4gIG9uQWRkQ2xpY2tlZCgpIHtcbiAgICB0aGlzLmxpc3RQYWdlU2VydmljZS5vcGVuRm9ybSgpO1xuICB9XG5cbiAgb25GaWxlRHJvcHBlZChmaWxlOiBGaWxlKSB7XG4gICAgdGhpcy51cGxvYWRJblByb2dyZXNzID0gdHJ1ZTtcblxuICAgIHRoaXMud2ViQXBpU2VydmljZS51cGxvYWQoZmlsZSxcbiAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGxldCBkb2N1bWVudCA9IHtcbiAgICAgICAgICBmaWxlbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgIHNvdXJjZV91cmw6ICcnLFxuICAgICAgICAgIHByZXZpZXdfdXJsOiAnJyxcbiAgICAgICAgICBzaWduZWRfaWQ6IHJlc3BvbnNlLnNpZ25lZF9pZFxuICAgICAgICB9XG4gICAgICAgIHRoaXMubGlzdFBhZ2VTZXJ2aWNlLm9wZW5Gb3JtKHt9LCB7IGRvY3VtZW50OiBkb2N1bWVudCB9KTtcbiAgICAgICAgdGhpcy51cGxvYWRJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hbm5vdW5jZW1lbnRTZXJ2aWNlLmVycm9yKCdtYW50bGUubWVzc2FnZXMudW5hYmxlX3RvX3VwbG9hZF9maWxlJyk7XG4gICAgICAgIHRoaXMudXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RyZXRjaFwiIGZ4TGF5b3V0R2FwPVwiMTZweFwiIGNsYXNzPVwibGlzdC1wYWdlIGZ1bGwtaGVpZ2h0LW9ubHlcIiBbbmdDbGFzc109XCJ7J3BhZ2UnOiAhaXNUYWJiZWRDb250ZW50fVwiPlxuXG4gIDxkaXYgZnhGbGV4PVwiMCAwIGF1dG9cIiAqbmdJZj1cIiFpc1RhYmJlZENvbnRlbnRcIj5cbiAgICA8bWFudGxlLXBhZ2UtdGl0bGU+e3sgcGFnZVRpdGxlIHwgdHJhbnNsYXRlIH19PC9tYW50bGUtcGFnZS10aXRsZT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBmeEZsZXg9XCIxIDAgMXB4XCI+XG4gICAgPG1hdC1kcmF3ZXItY29udGFpbmVyIGNsYXNzPVwiZnVsbC1oZWlnaHQtb25seVwiIFtoYXNCYWNrZHJvcF09XCJpc1NtYWxsU2NyZWVuXCI+XG4gICAgICA8bWF0LWRyYXdlciAjZHJhd2VyXG4gICAgICAgICAgW21vZGVdPVwiaXNTbWFsbFNjcmVlbiA/ICdvdmVyJyA6ICdzaWRlJ1wiXG4gICAgICAgICAgW3Bvc2l0aW9uXT1cImlzU21hbGxTY3JlZW4gPyAnZW5kJyA6ICdzdGFydCdcIlxuICAgICAgICAgIFtvcGVuZWRdPVwiaXNBY3Rpb25QYW5lbE9wZW5cIlxuICAgICAgICAgIFtkaXNhYmxlQ2xvc2VdPVwiIWlzU21hbGxTY3JlZW5cIlxuICAgICAgICAgIChjbG9zZWRTdGFydCk9XCJpc0FjdGlvblBhbmVsT3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICAob3BlbmVkU3RhcnQpPVwiaXNBY3Rpb25QYW5lbE9wZW4gPSB0cnVlXCI+XG5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImxpc3RQYWdlU2VydmljZS5zaG93QWRkQnV0dG9uICYmIGxpc3RQYWdlU2VydmljZS5jYW5Xcml0ZSgpXCJcbiAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICBjb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRkLWJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25BZGRDbGlja2VkKClcIj5cbiAgICAgICAgICArIHt7ICdtYW50bGUuYnV0dG9ucy5hZGQnIHwgdHJhbnNsYXRlIH19IHt7IGxpc3RQYWdlU2VydmljZS5ub3VuKCkgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1zZWN0aW9uXCI+XG4gICAgICAgICAgPG1hbnRsZS1zZWFyY2gtcGFuZWwgI3NlYXJjaFBhbmVsXG4gICAgICAgICAgICAgIFtzZWFyY2hGaWVsZHNdPVwibGlzdFBhZ2VTZXJ2aWNlLnNlYXJjaEZpZWxkcygpXCI+XG4gICAgICAgICAgPC9tYW50bGUtc2VhcmNoLXBhbmVsPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBleHBvcnRPcHRpb24gb2YgZXhwb3J0T3B0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJleHBvcnQtYnV0dG9uXCIgKGNsaWNrKT1cImV4cG9ydE9wdGlvbi5leHBvcnQoc2VhcmNoUGFuZWwuc2VhcmNoUGFyYW1zKS5zdWJzY3JpYmUoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHBvcnQtYnV0dG9uLWxhYmVsXCI+e3sgZXhwb3J0T3B0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1pY29uPmRvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwvbWF0LWRyYXdlcj5cblxuICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdHJldGNoXCIgY2xhc3M9XCJtYWluLWNvbnRlbnQgZnVsbC1oZWlnaHQtb25seVwiXG4gICAgICAgICAgZmlsZS1kcm9wem9uZSAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnRbMF0pXCIgW2NsYXNzLnVwbG9hZGluZ109XCJ1cGxvYWRJblByb2dyZXNzXCI+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cInVwbG9hZEluUHJvZ3Jlc3NcIiBjbGFzcz1cInVwbG9hZGluZy1pbmRpY2F0b3Itb3ZlcmxheVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRpbmctaW5kaWNhdG9yXCI+VXBsb2FkaW5nLi4uPC9kaXY+XG4gICAgICAgICAgPG1hbnRsZS1sb2FkZXI+PC9tYW50bGUtbG9hZGVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjEgMCAxcHhcIiBjbGFzcz1cInZlcnRpY2FsbHktc2Nyb2xsYWJsZVwiPlxuICAgICAgICAgIDx0YWJsZSBtYXQtdGFibGUgY2xhc3M9XCJmdWxsLXdpZHRoIGhvcml6b250YWwtc2Nyb2xsLXRhYmxlXCIgbWF0U29ydD5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGRpc3BsYXllZENvbHVtbnNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBjb2x1bW4uYXR0ciB9fVwiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7IGNvbHVtbi5oZWFkZXIgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxtYW50bGUtZHluYW1pYy1hdHRyaWJ1dGUtZGlzcGxheVxuICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZFR5cGVdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dbY29sdW1uLmF0dHJdXCI+XG4gICAgICAgICAgICAgICAgICA8L21hbnRsZS1keW5hbWljLWF0dHJpYnV0ZS1kaXNwbGF5PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uQXR0cnNcIj48L3RyPlxuICAgICAgICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbkF0dHJzO1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVjb3JkQ2xpY2tlZChyb3cpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuY2xpY2thYmxlLXJvd109XCJ3aXRoQ2xpY2thYmxlUm93c1wiPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bWF0LXBhZ2luYXRvciAjcGFnaW5hdG9yXG4gICAgICAgICAgICBmeEZsZXg9XCIwIDAgYXV0b1wiXG4gICAgICAgICAgICBbbGVuZ3RoXT1cIjBcIlxuICAgICAgICAgICAgW3BhZ2VJbmRleF09XCIwXCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCIxMFwiXG4gICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cIlsxMCwgMjAsIDUwXVwiPlxuICAgICAgICA8L21hdC1wYWdpbmF0b3I+XG5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9tYXQtZHJhd2VyLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBmeEZsZXg9XCIwIDAgYXV0b1wiICpuZ0lmPVwiaXNTbWFsbFNjcmVlblwiPlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTZweFwiPlxuXG4gICAgICA8YnV0dG9uICpuZ0lmPVwiaXNBY3Rpb25QYW5lbE9wZW5cIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiZHJhd2VyLnRvZ2dsZSgpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FjdGlvblBhbmVsT3BlblwiPlxuICAgICAgICAgIHt7ICdtYW50bGUuYnV0dG9ucy5jbG9zZV9hY3Rpb25zJyB8IHRyYW5zbGF0ZSB9fTxtYXQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGRpdiBmeEZsZXg9XCIxIDEgYXV0b1wiPjwvZGl2PlxuXG4gICAgICA8YnV0dG9uICpuZ0lmPVwiIWlzQWN0aW9uUGFuZWxPcGVuXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cImRyYXdlci50b2dnbGUoKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPiB7eyAnbWFudGxlLmJ1dHRvbnMub3Blbl9hY3Rpb25zJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=