@codetectonics/mantle 0.0.2 → 0.0.4
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.
- package/README.md +10 -49
- package/bundles/codetectonics-mantle.umd.js +6907 -0
- package/bundles/codetectonics-mantle.umd.js.map +1 -0
- package/esm2015/codetectonics-mantle.js +5 -0
- package/esm2015/lib/components/dashboard/containers/dynamic-dashboard-container/dynamic-dashboard-container.component.js +24 -0
- package/esm2015/lib/components/dashboard/containers/plain-dashboard-container/plain-dashboard-container.component.js +35 -0
- package/esm2015/lib/components/dashboard/dashboard-card/dashboard-card.component.js +133 -0
- package/esm2015/lib/components/dashboard/dashboard-card-search-menu/dashboard-card-search-menu.component.js +55 -0
- package/esm2015/lib/components/dashboard/dynamic-dashboard/dynamic-dashboard.component.js +23 -0
- package/esm2015/lib/components/dashboard/sections/dashboard-section/dashboard-section.component.js +71 -0
- package/esm2015/lib/components/dashboard/widgets/dashboard-info-card/dashboard-info-card.component.js +26 -0
- package/esm2015/lib/components/dashboard/widgets/dashboard-table/dashboard-table-datasource.js +30 -0
- package/esm2015/lib/components/dashboard/widgets/dashboard-table/dashboard-table.component.js +58 -0
- package/esm2015/lib/components/dashboard/widgets/dynamic-chart/dynamic-chart.component.js +85 -0
- package/esm2015/lib/components/dashboard/widgets/dynamic-widget-display/dynamic-widget-display.component.js +29 -0
- package/esm2015/lib/components/details/containers/accordion-details-container/accordion-details-container.component.js +26 -0
- package/esm2015/lib/components/details/containers/dynamic-details-container/dynamic-details-container.component.js +25 -0
- package/esm2015/lib/components/details/containers/plain-details-container/plain-details-container.component.js +25 -0
- package/esm2015/lib/components/details/dialog-details/dialog-details.component.js +77 -0
- package/esm2015/lib/components/details/dialog-nested-details/dialog-nested-details.component.js +40 -0
- package/esm2015/lib/components/details/dynamic-details/dynamic-details.component.js +23 -0
- package/esm2015/lib/components/details/fields/actions-attribute-display/actions-attribute-display.component.js +27 -0
- package/esm2015/lib/components/details/fields/chip-attribute-display/chip-attribute-display.component.js +40 -0
- package/esm2015/lib/components/details/fields/dynamic-attribute-display/dynamic-attribute-display.component.js +46 -0
- package/esm2015/lib/components/details/fields/file-attribute-display/file-attribute-display.component.js +37 -0
- package/esm2015/lib/components/details/fields/image-attribute-display/image-attribute-display.component.js +36 -0
- package/esm2015/lib/components/details/fields/link-attribute-display/link-attribute-display.component.js +30 -0
- package/esm2015/lib/components/details/fields/markdown-attribute-display/markdown-attribute-display.component.js +21 -0
- package/esm2015/lib/components/details/fields/thumbnail-display/thumbnail-display.component.js +33 -0
- package/esm2015/lib/components/details/sections/dynamic-details-section/dynamic-details-section.component.js +42 -0
- package/esm2015/lib/components/details/sections/grid-details-section/grid-details-section.component.js +53 -0
- package/esm2015/lib/components/details/sections/markdown-details-section/markdown-details-section.component.js +19 -0
- package/esm2015/lib/components/details/sections/table-details-section/table-details-section.component.js +37 -0
- package/esm2015/lib/components/form/containers/accordion-form-container/accordion-form-container.component.js +29 -0
- package/esm2015/lib/components/form/containers/dynamic-form-container/dynamic-form-container.component.js +28 -0
- package/esm2015/lib/components/form/containers/plain-form-container/plain-form-container.component.js +28 -0
- package/esm2015/lib/components/form/dialog-form/dialog-form.component.js +91 -0
- package/esm2015/lib/components/form/dialog-nested-form/dialog-nested-form.component.js +57 -0
- package/esm2015/lib/components/form/dynamic-form/dynamic-form.component.js +52 -0
- package/esm2015/lib/components/form/fields/autocomplete-input/autocomplete-input.component.js +69 -0
- package/esm2015/lib/components/form/fields/chip-input/chip-input.component.js +84 -0
- package/esm2015/lib/components/form/fields/datepicker/datepicker.component.js +91 -0
- package/esm2015/lib/components/form/fields/datetimepicker/datetimepicker.component.js +92 -0
- package/esm2015/lib/components/form/fields/dropdown/dropdown.component.js +73 -0
- package/esm2015/lib/components/form/fields/dynamic-form-field/dynamic-form-field.component.js +37 -0
- package/esm2015/lib/components/form/fields/filepicker/filepicker.component.js +97 -0
- package/esm2015/lib/components/form/fields/image-cropper/image-cropper.component.js +52 -0
- package/esm2015/lib/components/form/fields/imagepicker/imagepicker.component.js +139 -0
- package/esm2015/lib/components/form/fields/markdown-input/markdown-input.component.js +53 -0
- package/esm2015/lib/components/form/fields/number-input/number-input.component.js +91 -0
- package/esm2015/lib/components/form/fields/password-input/password-input.component.js +58 -0
- package/esm2015/lib/components/form/fields/text-input/text-input.component.js +55 -0
- package/esm2015/lib/components/form/fields/textarea/textarea.component.js +58 -0
- package/esm2015/lib/components/form/sections/dynamic-form-section/dynamic-form-section.component.js +47 -0
- package/esm2015/lib/components/form/sections/grid-form-section/grid-form-section.component.js +69 -0
- package/esm2015/lib/components/form/sections/table-form-section/table-form-section.component.js +107 -0
- package/esm2015/lib/components/layout-editor/containers/accordion-layout-editor-container/accordion-layout-editor-container.component.js +24 -0
- package/esm2015/lib/components/layout-editor/containers/dynamic-layout-editor-container/dynamic-layout-editor-container.component.js +23 -0
- package/esm2015/lib/components/layout-editor/containers/plain-layout-editor-container/plain-layout-editor-container.component.js +24 -0
- package/esm2015/lib/components/layout-editor/dynamic-layout-editor/dynamic-layout-editor.component.js +23 -0
- package/esm2015/lib/components/layout-editor/elements/dynamic-layout-editor-element/dynamic-layout-editor-element.component.js +38 -0
- package/esm2015/lib/components/layout-editor/elements/layout-editor-field-element/layout-editor-field-element.component.js +76 -0
- package/esm2015/lib/components/layout-editor/elements/layout-editor-table-column-element/layout-editor-table-column-element.component.js +76 -0
- package/esm2015/lib/components/layout-editor/elements/layout-editor-widget-element/layout-editor-widget-element.component.js +19 -0
- package/esm2015/lib/components/layout-editor/sections/dashboard-layout-editor-section/dashboard-layout-editor-section.component.js +21 -0
- package/esm2015/lib/components/layout-editor/sections/dynamic-layout-editor-section/dynamic-layout-editor-section.component.js +25 -0
- package/esm2015/lib/components/layout-editor/sections/grid-layout-editor-section/grid-layout-editor-section.component.js +102 -0
- package/esm2015/lib/components/layout-editor/sections/markdown-layout-editor-section/markdown-layout-editor-section.component.js +19 -0
- package/esm2015/lib/components/layout-editor/sections/table-layout-editor-section/table-layout-editor-section.component.js +74 -0
- package/esm2015/lib/components/navigation/nav-tree/nav-tree.component.js +65 -0
- package/esm2015/lib/components/navigation/reroute/reroute.component.js +28 -0
- package/esm2015/lib/components/pages/dashboard-page/dashboard-page.component.js +34 -0
- package/esm2015/lib/components/pages/detail-page/detail-page.component.js +101 -0
- package/esm2015/lib/components/pages/documents-page/documents-page.component.js +109 -0
- package/esm2015/lib/components/pages/export-page/export-page.component.js +65 -0
- package/esm2015/lib/components/pages/form-page/form-page.component.js +133 -0
- package/esm2015/lib/components/pages/layout-editor-page/layout-editor-page.component.js +72 -0
- package/esm2015/lib/components/pages/list-page/list-page-datasource.js +62 -0
- package/esm2015/lib/components/pages/list-page/list-page.component.js +159 -0
- package/esm2015/lib/components/pages/tabbed-page/tabbed-page.component.js +35 -0
- package/esm2015/lib/components/titles/content-title/content-title.component.js +23 -0
- package/esm2015/lib/components/titles/page-title/page-title.component.js +28 -0
- package/esm2015/lib/components/titles/section-title/section-title.component.js +18 -0
- package/esm2015/lib/components/widgets/delete-confirmation-dialog/delete-confirmation-dialog.component.js +36 -0
- package/esm2015/lib/components/widgets/dynamic-table/dynamic-table-datasource.js +89 -0
- package/esm2015/lib/components/widgets/dynamic-table/dynamic-table.component.js +67 -0
- package/esm2015/lib/components/widgets/file-preview-dialog/file-preview-dialog.component.js +42 -0
- package/esm2015/lib/components/widgets/loader/loader.component.js +21 -0
- package/esm2015/lib/components/widgets/save-confirmation-dialog/save-confirmation-dialog.component.js +35 -0
- package/esm2015/lib/components/widgets/search-panel/search-panel.component.js +67 -0
- package/esm2015/lib/components/widgets/snackbar/snackbar.component.js +42 -0
- package/esm2015/lib/config/charts/column-chart.data.js +38 -0
- package/esm2015/lib/config/charts/gantt-chart.data.js +18 -0
- package/esm2015/lib/config/charts/pie-chart.data.js +21 -0
- package/esm2015/lib/config/charts/progress-bar-chart.data.js +50 -0
- package/esm2015/lib/config/charts/spline-chart.data.js +24 -0
- package/esm2015/lib/data-structures/dynamic-layout.structure.js +2 -0
- package/esm2015/lib/data-structures/file-attachment.structure.js +2 -0
- package/esm2015/lib/directives/click-stop-propagation.directive.js +19 -0
- package/esm2015/lib/directives/file-dropzone.directive.js +53 -0
- package/esm2015/lib/guards/feature.guard.js +42 -0
- package/esm2015/lib/guards/password-check.guard.js +21 -0
- package/esm2015/lib/guards/session.guard.js +21 -0
- package/esm2015/lib/mantle.module.js +518 -0
- package/esm2015/lib/material.module.js +290 -0
- package/esm2015/lib/models/screen-size-map.model.js +9 -0
- package/esm2015/lib/pipes/dynamic.pipe.js +45 -0
- package/esm2015/lib/pipes/secure-image.pipe.js +35 -0
- package/esm2015/lib/services/adapters/web-api-crud.adapter.js +22 -0
- package/esm2015/lib/services/adapters/websocket.adapter.js +2 -0
- package/esm2015/lib/services/announcement.service.js +43 -0
- package/esm2015/lib/services/array.service.js +82 -0
- package/esm2015/lib/services/chart.service.js +45 -0
- package/esm2015/lib/services/confirmation.service.js +45 -0
- package/esm2015/lib/services/current-user.service.js +120 -0
- package/esm2015/lib/services/dynamic-form.service.js +59 -0
- package/esm2015/lib/services/feature-config.service.js +240 -0
- package/esm2015/lib/services/interfaces/authorisable-feature.service.js +2 -0
- package/esm2015/lib/services/interfaces/dashboard-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/dashboard-widget.service.js +2 -0
- package/esm2015/lib/services/interfaces/detail-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/export-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/form-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/layout-editor-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/list-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/nav-tabs.service.js +2 -0
- package/esm2015/lib/services/interfaces/reroute.service.js +2 -0
- package/esm2015/lib/services/object.service.js +69 -0
- package/esm2015/lib/services/password-check.service.js +93 -0
- package/esm2015/lib/services/screen-size.service.js +41 -0
- package/esm2015/lib/services/web-api.service.js +99 -0
- package/esm2015/lib/services/websocket.service.js +58 -0
- package/esm2015/lib/tokens/environment.token.js +3 -0
- package/esm2015/public-api.js +133 -0
- package/fesm2015/codetectonics-mantle.js +5940 -0
- package/fesm2015/codetectonics-mantle.js.map +1 -0
- package/lib/components/dashboard/containers/dynamic-dashboard-container/dynamic-dashboard-container.component.d.ts +11 -0
- package/lib/components/dashboard/containers/plain-dashboard-container/plain-dashboard-container.component.d.ts +14 -0
- package/lib/components/dashboard/dashboard-card/dashboard-card.component.d.ts +41 -0
- package/lib/components/dashboard/dashboard-card-search-menu/dashboard-card-search-menu.component.d.ts +20 -0
- package/lib/components/dashboard/dynamic-dashboard/dynamic-dashboard.component.d.ts +10 -0
- package/lib/components/dashboard/sections/dashboard-section/dashboard-section.component.d.ts +27 -0
- package/lib/components/dashboard/widgets/dashboard-info-card/dashboard-info-card.component.d.ts +8 -0
- package/lib/components/dashboard/widgets/dashboard-table/dashboard-table-datasource.d.ts +22 -0
- package/lib/components/dashboard/widgets/dashboard-table/dashboard-table.component.d.ts +28 -0
- package/lib/components/dashboard/widgets/dynamic-chart/dynamic-chart.component.d.ts +20 -0
- package/lib/components/dashboard/widgets/dynamic-widget-display/dynamic-widget-display.component.d.ts +9 -0
- package/lib/components/details/containers/accordion-details-container/accordion-details-container.component.d.ts +11 -0
- package/lib/components/details/containers/dynamic-details-container/dynamic-details-container.component.d.ts +11 -0
- package/lib/components/details/containers/plain-details-container/plain-details-container.component.d.ts +11 -0
- package/lib/components/details/dialog-details/dialog-details.component.d.ts +36 -0
- package/lib/components/details/dialog-nested-details/dialog-nested-details.component.d.ts +22 -0
- package/lib/components/details/dynamic-details/dynamic-details.component.d.ts +10 -0
- package/lib/components/details/fields/actions-attribute-display/actions-attribute-display.component.d.ts +7 -0
- package/lib/components/details/fields/chip-attribute-display/chip-attribute-display.component.d.ts +9 -0
- package/lib/components/details/fields/dynamic-attribute-display/dynamic-attribute-display.component.d.ts +15 -0
- package/lib/components/details/fields/file-attribute-display/file-attribute-display.component.d.ts +12 -0
- package/lib/components/details/fields/image-attribute-display/image-attribute-display.component.d.ts +12 -0
- package/lib/components/details/fields/link-attribute-display/link-attribute-display.component.d.ts +10 -0
- package/lib/components/details/fields/markdown-attribute-display/markdown-attribute-display.component.d.ts +6 -0
- package/lib/components/details/fields/thumbnail-display/thumbnail-display.component.d.ts +10 -0
- package/lib/components/details/sections/dynamic-details-section/dynamic-details-section.component.d.ts +17 -0
- package/lib/components/details/sections/grid-details-section/grid-details-section.component.d.ts +17 -0
- package/lib/components/details/sections/markdown-details-section/markdown-details-section.component.d.ts +7 -0
- package/lib/components/details/sections/table-details-section/table-details-section.component.d.ts +12 -0
- package/lib/components/form/containers/accordion-form-container/accordion-form-container.component.d.ts +13 -0
- package/lib/components/form/containers/dynamic-form-container/dynamic-form-container.component.d.ts +13 -0
- package/lib/components/form/containers/plain-form-container/plain-form-container.component.d.ts +13 -0
- package/lib/components/form/dialog-form/dialog-form.component.d.ts +39 -0
- package/lib/components/form/dialog-nested-form/dialog-nested-form.component.d.ts +31 -0
- package/lib/components/form/dynamic-form/dynamic-form.component.d.ts +21 -0
- package/lib/components/form/fields/autocomplete-input/autocomplete-input.component.d.ts +32 -0
- package/lib/components/form/fields/chip-input/chip-input.component.d.ts +27 -0
- package/lib/components/form/fields/datepicker/datepicker.component.d.ts +24 -0
- package/lib/components/form/fields/datetimepicker/datetimepicker.component.d.ts +24 -0
- package/lib/components/form/fields/dropdown/dropdown.component.d.ts +31 -0
- package/lib/components/form/fields/dynamic-form-field/dynamic-form-field.component.d.ts +10 -0
- package/lib/components/form/fields/filepicker/filepicker.component.d.ts +27 -0
- package/lib/components/form/fields/image-cropper/image-cropper.component.d.ts +27 -0
- package/lib/components/form/fields/imagepicker/imagepicker.component.d.ts +41 -0
- package/lib/components/form/fields/markdown-input/markdown-input.component.d.ts +17 -0
- package/lib/components/form/fields/number-input/number-input.component.d.ts +27 -0
- package/lib/components/form/fields/password-input/password-input.component.d.ts +19 -0
- package/lib/components/form/fields/text-input/text-input.component.d.ts +18 -0
- package/lib/components/form/fields/textarea/textarea.component.d.ts +19 -0
- package/lib/components/form/sections/dynamic-form-section/dynamic-form-section.component.d.ts +19 -0
- package/lib/components/form/sections/grid-form-section/grid-form-section.component.d.ts +23 -0
- package/lib/components/form/sections/table-form-section/table-form-section.component.d.ts +22 -0
- package/lib/components/layout-editor/containers/accordion-layout-editor-container/accordion-layout-editor-container.component.d.ts +10 -0
- package/lib/components/layout-editor/containers/dynamic-layout-editor-container/dynamic-layout-editor-container.component.d.ts +10 -0
- package/lib/components/layout-editor/containers/plain-layout-editor-container/plain-layout-editor-container.component.d.ts +10 -0
- package/lib/components/layout-editor/dynamic-layout-editor/dynamic-layout-editor.component.d.ts +10 -0
- package/lib/components/layout-editor/elements/dynamic-layout-editor-element/dynamic-layout-editor-element.component.d.ts +13 -0
- package/lib/components/layout-editor/elements/layout-editor-field-element/layout-editor-field-element.component.d.ts +14 -0
- package/lib/components/layout-editor/elements/layout-editor-table-column-element/layout-editor-table-column-element.component.d.ts +14 -0
- package/lib/components/layout-editor/elements/layout-editor-widget-element/layout-editor-widget-element.component.d.ts +8 -0
- package/lib/components/layout-editor/sections/dashboard-layout-editor-section/dashboard-layout-editor-section.component.d.ts +8 -0
- package/lib/components/layout-editor/sections/dynamic-layout-editor-section/dynamic-layout-editor-section.component.d.ts +10 -0
- package/lib/components/layout-editor/sections/grid-layout-editor-section/grid-layout-editor-section.component.d.ts +21 -0
- package/lib/components/layout-editor/sections/markdown-layout-editor-section/markdown-layout-editor-section.component.d.ts +7 -0
- package/lib/components/layout-editor/sections/table-layout-editor-section/table-layout-editor-section.component.d.ts +14 -0
- package/lib/components/navigation/nav-tree/nav-tree.component.d.ts +46 -0
- package/lib/components/navigation/reroute/reroute.component.d.ts +14 -0
- package/lib/components/pages/dashboard-page/dashboard-page.component.d.ts +16 -0
- package/lib/components/pages/detail-page/detail-page.component.d.ts +35 -0
- package/lib/components/pages/documents-page/documents-page.component.d.ts +41 -0
- package/lib/components/pages/export-page/export-page.component.d.ts +29 -0
- package/lib/components/pages/form-page/form-page.component.d.ts +37 -0
- package/lib/components/pages/layout-editor-page/layout-editor-page.component.d.ts +26 -0
- package/lib/components/pages/list-page/list-page-datasource.d.ts +32 -0
- package/lib/components/pages/list-page/list-page.component.d.ts +46 -0
- package/lib/components/pages/tabbed-page/tabbed-page.component.d.ts +16 -0
- package/lib/components/titles/content-title/content-title.component.d.ts +8 -0
- package/lib/components/titles/page-title/page-title.component.d.ts +10 -0
- package/lib/components/titles/section-title/section-title.component.d.ts +7 -0
- package/lib/components/widgets/delete-confirmation-dialog/delete-confirmation-dialog.component.d.ts +20 -0
- package/lib/components/widgets/dynamic-table/dynamic-table-datasource.d.ts +40 -0
- package/lib/components/widgets/dynamic-table/dynamic-table.component.d.ts +30 -0
- package/lib/components/widgets/file-preview-dialog/file-preview-dialog.component.d.ts +17 -0
- package/lib/components/widgets/loader/loader.component.d.ts +6 -0
- package/lib/components/widgets/save-confirmation-dialog/save-confirmation-dialog.component.d.ts +16 -0
- package/lib/components/widgets/search-panel/search-panel.component.d.ts +21 -0
- package/lib/components/widgets/snackbar/snackbar.component.d.ts +11 -0
- package/lib/config/charts/column-chart.data.d.ts +37 -0
- package/lib/config/charts/gantt-chart.data.d.ts +17 -0
- package/lib/config/charts/pie-chart.data.d.ts +20 -0
- package/lib/config/charts/progress-bar-chart.data.d.ts +49 -0
- package/lib/config/charts/spline-chart.data.d.ts +23 -0
- package/lib/data-structures/dynamic-layout.structure.d.ts +161 -0
- package/lib/data-structures/file-attachment.structure.d.ts +6 -0
- package/lib/directives/click-stop-propagation.directive.d.ts +6 -0
- package/lib/directives/file-dropzone.directive.d.ts +12 -0
- package/lib/guards/feature.guard.d.ts +15 -0
- package/lib/guards/password-check.guard.d.ts +11 -0
- package/lib/guards/session.guard.d.ts +10 -0
- package/lib/mantle.module.d.ts +106 -0
- package/lib/material.module.d.ts +34 -0
- package/lib/models/screen-size-map.model.d.ts +13 -0
- package/lib/pipes/dynamic.pipe.d.ts +12 -0
- package/lib/pipes/secure-image.pipe.d.ts +11 -0
- package/lib/services/adapters/web-api-crud.adapter.d.ts +63 -0
- package/lib/services/adapters/websocket.adapter.d.ts +6 -0
- package/lib/services/announcement.service.d.ts +11 -0
- package/lib/services/array.service.d.ts +21 -0
- package/lib/services/chart.service.d.ts +14 -0
- package/lib/services/confirmation.service.d.ts +11 -0
- package/lib/services/current-user.service.d.ts +28 -0
- package/lib/services/dynamic-form.service.d.ts +30 -0
- package/lib/services/feature-config.service.d.ts +82 -0
- package/lib/services/interfaces/authorisable-feature.service.d.ts +5 -0
- package/lib/services/interfaces/dashboard-page.service.d.ts +13 -0
- package/lib/services/interfaces/dashboard-widget.service.d.ts +34 -0
- package/lib/services/interfaces/detail-page.service.d.ts +36 -0
- package/lib/services/interfaces/export-page.service.d.ts +6 -0
- package/lib/services/interfaces/form-page.service.d.ts +30 -0
- package/lib/services/interfaces/layout-editor-page.service.d.ts +14 -0
- package/lib/services/interfaces/list-page.service.d.ts +44 -0
- package/lib/services/interfaces/nav-tabs.service.d.ts +7 -0
- package/lib/services/interfaces/reroute.service.d.ts +3 -0
- package/lib/services/object.service.d.ts +11 -0
- package/lib/services/password-check.service.d.ts +21 -0
- package/lib/services/screen-size.service.d.ts +14 -0
- package/lib/services/web-api.service.d.ts +21 -0
- package/lib/services/websocket.service.d.ts +20 -0
- package/lib/tokens/environment.token.d.ts +2 -0
- package/package.json +33 -15
- package/public-api.d.ts +129 -2
- package/fesm2022/codetectonics-mantle.mjs +0 -42
- package/fesm2022/codetectonics-mantle.mjs.map +0 -1
- package/lib/mantle.component.d.ts +0 -5
- package/lib/mantle.service.d.ts +0 -6
- /package/{index.d.ts → codetectonics-mantle.d.ts} +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { ObjectService } from './object.service';
|
|
3
|
+
import { COLUMN_CHART } from '../config/charts/column-chart.data';
|
|
4
|
+
import { GANTT_CHART } from '../config/charts/gantt-chart.data';
|
|
5
|
+
import { PIE_CHART } from '../config/charts/pie-chart.data';
|
|
6
|
+
import { PROGRESS_BAR_CHART } from '../config/charts/progress-bar-chart.data';
|
|
7
|
+
import { SPLINE_CHART } from '../config/charts/spline-chart.data';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "./object.service";
|
|
10
|
+
export class ChartService {
|
|
11
|
+
constructor(objectService) {
|
|
12
|
+
this.objectService = objectService;
|
|
13
|
+
}
|
|
14
|
+
mergeChartConfig(chartConfig, domainConfig, widgetConfig) {
|
|
15
|
+
let config = this.objectService.deepMerge(chartConfig, domainConfig);
|
|
16
|
+
if (widgetConfig) {
|
|
17
|
+
config = this.objectService.deepMerge(config, widgetConfig);
|
|
18
|
+
}
|
|
19
|
+
return config;
|
|
20
|
+
}
|
|
21
|
+
columnChart(domainConfig, widgetConfig) {
|
|
22
|
+
return this.mergeChartConfig(COLUMN_CHART, domainConfig, widgetConfig);
|
|
23
|
+
}
|
|
24
|
+
ganttChart(domainConfig, widgetConfig) {
|
|
25
|
+
return this.mergeChartConfig(GANTT_CHART, domainConfig, widgetConfig);
|
|
26
|
+
}
|
|
27
|
+
pieChart(domainConfig, widgetConfig) {
|
|
28
|
+
return this.mergeChartConfig(PIE_CHART, domainConfig, widgetConfig);
|
|
29
|
+
}
|
|
30
|
+
progressBarChart(domainConfig, widgetConfig) {
|
|
31
|
+
return this.mergeChartConfig(PROGRESS_BAR_CHART, domainConfig, widgetConfig);
|
|
32
|
+
}
|
|
33
|
+
splineChart(domainConfig, widgetConfig) {
|
|
34
|
+
return this.mergeChartConfig(SPLINE_CHART, domainConfig, widgetConfig);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
ChartService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ChartService, deps: [{ token: i1.ObjectService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
38
|
+
ChartService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ChartService, providedIn: 'root' });
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ChartService, decorators: [{
|
|
40
|
+
type: Injectable,
|
|
41
|
+
args: [{
|
|
42
|
+
providedIn: 'root'
|
|
43
|
+
}]
|
|
44
|
+
}], ctorParameters: function () { return [{ type: i1.ObjectService }]; } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL3NlcnZpY2VzL2NoYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFLbEUsTUFBTSxPQUFPLFlBQVk7SUFFdkIsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFBSSxDQUFDO0lBRTdDLGdCQUFnQixDQUFDLFdBQWdCLEVBQUUsWUFBaUIsRUFBRSxZQUFrQjtRQUM5RSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFckUsSUFBSSxZQUFZLEVBQUU7WUFDaEIsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztTQUM3RDtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxXQUFXLENBQUMsWUFBaUIsRUFBRSxZQUFrQjtRQUN0RCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSxVQUFVLENBQUMsWUFBaUIsRUFBRSxZQUFrQjtRQUNyRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTSxRQUFRLENBQUMsWUFBaUIsRUFBRSxZQUFrQjtRQUNuRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxZQUFpQixFQUFFLFlBQWtCO1FBQzNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRU0sV0FBVyxDQUFDLFlBQWlCLEVBQUUsWUFBa0I7UUFDdEQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN6RSxDQUFDOzswR0FoQ1UsWUFBWTs4R0FBWixZQUFZLGNBRlgsTUFBTTs0RkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9iamVjdFNlcnZpY2UgfSBmcm9tICcuL29iamVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IENPTFVNTl9DSEFSVCB9IGZyb20gJy4uL2NvbmZpZy9jaGFydHMvY29sdW1uLWNoYXJ0LmRhdGEnO1xuaW1wb3J0IHsgR0FOVFRfQ0hBUlQgfSBmcm9tICcuLi9jb25maWcvY2hhcnRzL2dhbnR0LWNoYXJ0LmRhdGEnO1xuaW1wb3J0IHsgUElFX0NIQVJUIH0gZnJvbSAnLi4vY29uZmlnL2NoYXJ0cy9waWUtY2hhcnQuZGF0YSc7XG5pbXBvcnQgeyBQUk9HUkVTU19CQVJfQ0hBUlQgfSBmcm9tICcuLi9jb25maWcvY2hhcnRzL3Byb2dyZXNzLWJhci1jaGFydC5kYXRhJztcbmltcG9ydCB7IFNQTElORV9DSEFSVCB9IGZyb20gJy4uL2NvbmZpZy9jaGFydHMvc3BsaW5lLWNoYXJ0LmRhdGEnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDaGFydFNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb2JqZWN0U2VydmljZTogT2JqZWN0U2VydmljZSkgeyB9XG5cbiAgcHJpdmF0ZSBtZXJnZUNoYXJ0Q29uZmlnKGNoYXJ0Q29uZmlnOiBhbnksIGRvbWFpbkNvbmZpZzogYW55LCB3aWRnZXRDb25maWc/OiBhbnkpIHtcbiAgICBsZXQgY29uZmlnID0gdGhpcy5vYmplY3RTZXJ2aWNlLmRlZXBNZXJnZShjaGFydENvbmZpZywgZG9tYWluQ29uZmlnKTtcblxuICAgIGlmICh3aWRnZXRDb25maWcpIHtcbiAgICAgIGNvbmZpZyA9IHRoaXMub2JqZWN0U2VydmljZS5kZWVwTWVyZ2UoY29uZmlnLCB3aWRnZXRDb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBwdWJsaWMgY29sdW1uQ2hhcnQoZG9tYWluQ29uZmlnOiBhbnksIHdpZGdldENvbmZpZz86IGFueSkge1xuICAgIHJldHVybiB0aGlzLm1lcmdlQ2hhcnRDb25maWcoQ09MVU1OX0NIQVJULCBkb21haW5Db25maWcsIHdpZGdldENvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgZ2FudHRDaGFydChkb21haW5Db25maWc6IGFueSwgd2lkZ2V0Q29uZmlnPzogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMubWVyZ2VDaGFydENvbmZpZyhHQU5UVF9DSEFSVCwgZG9tYWluQ29uZmlnLCB3aWRnZXRDb25maWcpO1xuICB9XG5cbiAgcHVibGljIHBpZUNoYXJ0KGRvbWFpbkNvbmZpZzogYW55LCB3aWRnZXRDb25maWc/OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5tZXJnZUNoYXJ0Q29uZmlnKFBJRV9DSEFSVCwgZG9tYWluQ29uZmlnLCB3aWRnZXRDb25maWcpO1xuICB9XG5cbiAgcHVibGljIHByb2dyZXNzQmFyQ2hhcnQoZG9tYWluQ29uZmlnOiBhbnksIHdpZGdldENvbmZpZz86IGFueSkge1xuICAgIHJldHVybiB0aGlzLm1lcmdlQ2hhcnRDb25maWcoUFJPR1JFU1NfQkFSX0NIQVJULCBkb21haW5Db25maWcsIHdpZGdldENvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgc3BsaW5lQ2hhcnQoZG9tYWluQ29uZmlnOiBhbnksIHdpZGdldENvbmZpZz86IGFueSkge1xuICAgIHJldHVybiB0aGlzLm1lcmdlQ2hhcnRDb25maWcoU1BMSU5FX0NIQVJULCBkb21haW5Db25maWcsIHdpZGdldENvbmZpZyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { MatDialog, MatDialogConfig } from "@angular/material/dialog";
|
|
3
|
+
import { DeleteConfirmationDialogComponent } from '../components/widgets/delete-confirmation-dialog/delete-confirmation-dialog.component';
|
|
4
|
+
import { SaveConfirmationDialogComponent } from '../components/widgets/save-confirmation-dialog/save-confirmation-dialog.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/material/dialog";
|
|
7
|
+
export class ConfirmationService {
|
|
8
|
+
constructor(dialog) {
|
|
9
|
+
this.dialog = dialog;
|
|
10
|
+
}
|
|
11
|
+
confirmSave(onConfirmation, configData = {}) {
|
|
12
|
+
const dialogConfig = new MatDialogConfig();
|
|
13
|
+
dialogConfig.data = configData;
|
|
14
|
+
dialogConfig.minWidth = '400px';
|
|
15
|
+
dialogConfig.maxWidth = '80%';
|
|
16
|
+
dialogConfig.position = { right: '8px', bottom: '8px' };
|
|
17
|
+
dialogConfig.autoFocus = false;
|
|
18
|
+
dialogConfig.panelClass = 'confirmation-dialog';
|
|
19
|
+
let dialogRef = this.dialog.open(SaveConfirmationDialogComponent, dialogConfig);
|
|
20
|
+
dialogRef.afterClosed().subscribe(onConfirmation);
|
|
21
|
+
}
|
|
22
|
+
confirmDeletion(onConfirmation, configData = {}) {
|
|
23
|
+
const dialogConfig = new MatDialogConfig();
|
|
24
|
+
dialogConfig.data = configData;
|
|
25
|
+
dialogConfig.minWidth = '400px';
|
|
26
|
+
dialogConfig.maxWidth = '80%';
|
|
27
|
+
dialogConfig.position = { right: '8px', bottom: '8px' };
|
|
28
|
+
dialogConfig.autoFocus = false;
|
|
29
|
+
let dialogRef = this.dialog.open(DeleteConfirmationDialogComponent, dialogConfig);
|
|
30
|
+
dialogRef.afterClosed().subscribe((res) => {
|
|
31
|
+
if (!res || !res.confirmed)
|
|
32
|
+
return;
|
|
33
|
+
onConfirmation(res.deletionAction);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
ConfirmationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfirmationService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
38
|
+
ConfirmationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfirmationService, providedIn: 'root' });
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfirmationService, decorators: [{
|
|
40
|
+
type: Injectable,
|
|
41
|
+
args: [{
|
|
42
|
+
providedIn: 'root'
|
|
43
|
+
}]
|
|
44
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9zZXJ2aWNlcy9jb25maXJtYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sdUZBQXVGLENBQUM7QUFDMUksT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUZBQW1GLENBQUM7OztBQUtwSSxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLFlBQW9CLE1BQWlCO1FBQWpCLFdBQU0sR0FBTixNQUFNLENBQVc7SUFBSSxDQUFDO0lBRTFDLFdBQVcsQ0FBQyxjQUE0QyxFQUFFLGFBQWtCLEVBQUU7UUFDNUUsTUFBTSxZQUFZLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUMzQyxZQUFZLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUMvQixZQUFZLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUNoQyxZQUFZLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUM5QixZQUFZLENBQUMsUUFBUSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDeEQsWUFBWSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDL0IsWUFBWSxDQUFDLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQztRQUVoRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUVoRixTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxlQUFlLENBQUMsY0FBeUUsRUFBRSxhQUFrQixFQUFFO1FBQzdHLE1BQU0sWUFBWSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDM0MsWUFBWSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7UUFDL0IsWUFBWSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDaEMsWUFBWSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDOUIsWUFBWSxDQUFDLFFBQVEsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3hELFlBQVksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBRS9CLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRWxGLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUE0RSxFQUFFLEVBQUU7WUFDakgsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTO2dCQUFFLE9BQU87WUFFbkMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2lIQWpDVSxtQkFBbUI7cUhBQW5CLG1CQUFtQixjQUZsQixNQUFNOzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7IERlbGV0ZUNvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvd2lkZ2V0cy9kZWxldGUtY29uZmlybWF0aW9uLWRpYWxvZy9kZWxldGUtY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2F2ZUNvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvd2lkZ2V0cy9zYXZlLWNvbmZpcm1hdGlvbi1kaWFsb2cvc2F2ZS1jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpcm1hdGlvblNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2cpIHsgfVxuXG4gIGNvbmZpcm1TYXZlKG9uQ29uZmlybWF0aW9uOiAoY29uZmlybWVkOiBib29sZWFuKSA9PiB2b2lkLCBjb25maWdEYXRhOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcbiAgICBkaWFsb2dDb25maWcuZGF0YSA9IGNvbmZpZ0RhdGE7XG4gICAgZGlhbG9nQ29uZmlnLm1pbldpZHRoID0gJzQwMHB4JztcbiAgICBkaWFsb2dDb25maWcubWF4V2lkdGggPSAnODAlJztcbiAgICBkaWFsb2dDb25maWcucG9zaXRpb24gPSB7IHJpZ2h0OiAnOHB4JywgYm90dG9tOiAnOHB4JyB9O1xuICAgIGRpYWxvZ0NvbmZpZy5hdXRvRm9jdXMgPSBmYWxzZTtcbiAgICBkaWFsb2dDb25maWcucGFuZWxDbGFzcyA9ICdjb25maXJtYXRpb24tZGlhbG9nJztcblxuICAgIGxldCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFNhdmVDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIGRpYWxvZ0NvbmZpZyk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUob25Db25maXJtYXRpb24pO1xuICB9XG5cbiAgY29uZmlybURlbGV0aW9uKG9uQ29uZmlybWF0aW9uOiAoZGVsZXRpb25BY3Rpb246IChpZDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGFueT4pID0+IHZvaWQsIGNvbmZpZ0RhdGE6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xuICAgIGRpYWxvZ0NvbmZpZy5kYXRhID0gY29uZmlnRGF0YTtcbiAgICBkaWFsb2dDb25maWcubWluV2lkdGggPSAnNDAwcHgnO1xuICAgIGRpYWxvZ0NvbmZpZy5tYXhXaWR0aCA9ICc4MCUnO1xuICAgIGRpYWxvZ0NvbmZpZy5wb3NpdGlvbiA9IHsgcmlnaHQ6ICc4cHgnLCBib3R0b206ICc4cHgnIH07XG4gICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IGZhbHNlO1xuXG4gICAgbGV0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IHsgY29uZmlybWVkOiBib29sZWFuLCBkZWxldGlvbkFjdGlvbjogKGlkOiBzdHJpbmcpID0+IE9ic2VydmFibGU8YW55PiB9KSA9PiB7XG4gICAgICBpZiAoIXJlcyB8fCAhcmVzLmNvbmZpcm1lZCkgcmV0dXJuO1xuXG4gICAgICBvbkNvbmZpcm1hdGlvbihyZXMuZGVsZXRpb25BY3Rpb24pO1xuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
import { tap, retryWhen, delay } from 'rxjs/operators';
|
|
5
|
+
import { AngularTokenService } from 'angular-token';
|
|
6
|
+
import * as moment from 'moment';
|
|
7
|
+
import { ArrayService } from './array.service';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "angular-token";
|
|
10
|
+
import * as i2 from "@angular/router";
|
|
11
|
+
import * as i3 from "./array.service";
|
|
12
|
+
export class CurrentUserService {
|
|
13
|
+
constructor(tokenService, router, arrayService) {
|
|
14
|
+
this.tokenService = tokenService;
|
|
15
|
+
this.router = router;
|
|
16
|
+
this.arrayService = arrayService;
|
|
17
|
+
this.sessionData = new BehaviorSubject({});
|
|
18
|
+
this.sessionData.next(this.getSessionData());
|
|
19
|
+
this.sessionData.subscribe((sessionData) => {
|
|
20
|
+
if (sessionData)
|
|
21
|
+
localStorage.setItem('sessionData', JSON.stringify(sessionData));
|
|
22
|
+
else
|
|
23
|
+
localStorage.removeItem("sessionData");
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
signIn(signInData, onSuccess, onFailure) {
|
|
27
|
+
this.tokenService.signIn(signInData).subscribe((response) => {
|
|
28
|
+
this.sessionData.next(response.data);
|
|
29
|
+
this.setLatestPasswordCheckTime();
|
|
30
|
+
if (onSuccess)
|
|
31
|
+
onSuccess(response);
|
|
32
|
+
}, (response) => {
|
|
33
|
+
if (onFailure)
|
|
34
|
+
onFailure(response);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
validateToken(onValid, onInvalid) {
|
|
38
|
+
this.tokenService.validateToken().pipe(retryWhen(errors => errors.pipe(delay(1000), tap(response => {
|
|
39
|
+
if (!response.status.toString().startsWith('5')) {
|
|
40
|
+
throw response;
|
|
41
|
+
}
|
|
42
|
+
})))).subscribe((response) => {
|
|
43
|
+
this.sessionData.next(response.data);
|
|
44
|
+
if (onValid)
|
|
45
|
+
onValid(response);
|
|
46
|
+
}, (response) => {
|
|
47
|
+
if (onInvalid)
|
|
48
|
+
onInvalid(response);
|
|
49
|
+
this.signOut();
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
updatePassword(updatePasswordData, onSuccess, onFailure) {
|
|
53
|
+
this.tokenService.updatePassword(updatePasswordData).subscribe((response) => {
|
|
54
|
+
if (onSuccess)
|
|
55
|
+
onSuccess(response);
|
|
56
|
+
}, (response) => {
|
|
57
|
+
if (onFailure)
|
|
58
|
+
onFailure(response);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
resetPassword(resetPasswordData, onSuccess, onFailure) {
|
|
62
|
+
this.tokenService.resetPassword(resetPasswordData).subscribe((response) => {
|
|
63
|
+
if (onSuccess)
|
|
64
|
+
onSuccess(response);
|
|
65
|
+
}, (response) => {
|
|
66
|
+
if (onFailure)
|
|
67
|
+
onFailure(response);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
signOut(callback) {
|
|
71
|
+
this.tokenService.signOut().subscribe((response) => {
|
|
72
|
+
if (callback)
|
|
73
|
+
callback();
|
|
74
|
+
this.clearSessionData();
|
|
75
|
+
this.router.navigateByUrl('sign-in');
|
|
76
|
+
}, (response) => {
|
|
77
|
+
if (callback)
|
|
78
|
+
callback();
|
|
79
|
+
this.clearSessionData();
|
|
80
|
+
this.router.navigateByUrl('sign-in');
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
isSignedIn() {
|
|
84
|
+
return this.tokenService.userSignedIn();
|
|
85
|
+
}
|
|
86
|
+
getSessionData() {
|
|
87
|
+
return JSON.parse(localStorage.getItem('sessionData')) || {};
|
|
88
|
+
}
|
|
89
|
+
clearSessionData() {
|
|
90
|
+
this.sessionData.next(undefined);
|
|
91
|
+
}
|
|
92
|
+
getId() {
|
|
93
|
+
return this.getSessionData().id;
|
|
94
|
+
}
|
|
95
|
+
changePassword() {
|
|
96
|
+
this.router.navigateByUrl('change-password');
|
|
97
|
+
}
|
|
98
|
+
getPermissions() {
|
|
99
|
+
return this.getSessionData().permissions || [];
|
|
100
|
+
}
|
|
101
|
+
hasFeatureAccess(feature, action = 'Read') {
|
|
102
|
+
return this.arrayService.hasItemWithAttributes(this.getPermissions(), { feature: feature, action: action });
|
|
103
|
+
}
|
|
104
|
+
setLatestPasswordCheckTime() {
|
|
105
|
+
let now = moment().format('YYYY-MM-DD HH:mm:ss');
|
|
106
|
+
localStorage.setItem('latestPasswordCheckTime', now);
|
|
107
|
+
}
|
|
108
|
+
getLatestPasswordCheckTime() {
|
|
109
|
+
return localStorage.getItem('latestPasswordCheckTime');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
CurrentUserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CurrentUserService, deps: [{ token: i1.AngularTokenService }, { token: i2.Router }, { token: i3.ArrayService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
113
|
+
CurrentUserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CurrentUserService, providedIn: 'root' });
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CurrentUserService, decorators: [{
|
|
115
|
+
type: Injectable,
|
|
116
|
+
args: [{
|
|
117
|
+
providedIn: 'root'
|
|
118
|
+
}]
|
|
119
|
+
}], ctorParameters: function () { return [{ type: i1.AngularTokenService }, { type: i2.Router }, { type: i3.ArrayService }]; } });
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC11c2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9zZXJ2aWNlcy9jdXJyZW50LXVzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBcUQsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUsvQyxNQUFNLE9BQU8sa0JBQWtCO0lBSTdCLFlBQXNCLFlBQWlDLEVBQVksTUFBYyxFQUMzRCxZQUEwQjtRQUQxQixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFBWSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQzNELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBSHpDLGdCQUFXLEdBQXlCLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBSXRFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBZ0IsRUFBRSxFQUFFO1lBQzlDLElBQUksV0FBVztnQkFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7O2dCQUM3RSxZ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RSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2pELFlBQVksQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUN6RCxDQUFDOztnSEE1SFUsa0JBQWtCO29IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwLCByZXRyeVdoZW4sIGRlbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQW5ndWxhclRva2VuU2VydmljZSwgUmVzZXRQYXNzd29yZERhdGEsIFNpZ25JbkRhdGEsIFVwZGF0ZVBhc3N3b3JkRGF0YSB9IGZyb20gJ2FuZ3VsYXItdG9rZW4nO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBBcnJheVNlcnZpY2UgfSBmcm9tICcuL2FycmF5LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDdXJyZW50VXNlclNlcnZpY2Uge1xuXG4gIHB1YmxpYyBzZXNzaW9uRGF0YTogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB0b2tlblNlcnZpY2U6IEFuZ3VsYXJUb2tlblNlcnZpY2UsIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGFycmF5U2VydmljZTogQXJyYXlTZXJ2aWNlKSB7XG4gICAgdGhpcy5zZXNzaW9uRGF0YS5uZXh0KHRoaXMuZ2V0U2Vzc2lvbkRhdGEoKSk7XG4gICAgdGhpcy5zZXNzaW9uRGF0YS5zdWJzY3JpYmUoKHNlc3Npb25EYXRhOiBhbnkpID0+IHtcbiAgICAgIGlmIChzZXNzaW9uRGF0YSkgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Nlc3Npb25EYXRhJywgSlNPTi5zdHJpbmdpZnkoc2Vzc2lvbkRhdGEpKTtcbiAgICAgIGVsc2UgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJzZXNzaW9uRGF0YVwiKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNpZ25JbihzaWduSW5EYXRhOiBTaWduSW5EYXRhLCBvblN1Y2Nlc3M/OiAocmVzOiBhbnkpID0+IHZvaWQsIG9uRmFpbHVyZT86IChyZXM6IGFueSkgPT4gdm9pZCkge1xuICAgIHRoaXMudG9rZW5TZXJ2aWNlLnNpZ25JbihzaWduSW5EYXRhKS5zdWJzY3JpYmUoXG4gICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNlc3Npb25EYXRhLm5leHQocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIHRoaXMuc2V0TGF0ZXN0UGFzc3dvcmRDaGVja1RpbWUoKTtcbiAgICAgICAgaWYgKG9uU3VjY2Vzcykgb25TdWNjZXNzKHJlc3BvbnNlKTtcbiAgICAgIH0sXG4gICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAob25GYWlsdXJlKSBvbkZhaWx1cmUocmVzcG9uc2UpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICB2YWxpZGF0ZVRva2VuKG9uVmFsaWQ/OiAocmVzOiBhbnkpID0+IHZvaWQsIG9uSW52YWxpZD86IChyZXM6IGFueSkgPT4gdm9pZCkge1xuICAgIHRoaXMudG9rZW5TZXJ2aWNlLnZhbGlkYXRlVG9rZW4oKS5waXBlKFxuICAgICAgcmV0cnlXaGVuKGVycm9ycyA9PlxuICAgICAgICBlcnJvcnMucGlwZShcbiAgICAgICAgICBkZWxheSgxMDAwKSxcbiAgICAgICAgICB0YXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5zdGF0dXMudG9TdHJpbmcoKS5zdGFydHNXaXRoKCc1JykpIHtcbiAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICkuc3Vic2NyaWJlKFxuICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zZXNzaW9uRGF0YS5uZXh0KHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICBpZiAob25WYWxpZCkgb25WYWxpZChyZXNwb25zZSk7XG4gICAgICB9LFxuICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKG9uSW52YWxpZCkgb25JbnZhbGlkKHJlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5zaWduT3V0KCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVBhc3N3b3JkKHVwZGF0ZVBhc3N3b3JkRGF0YTogVXBkYXRlUGFzc3dvcmREYXRhLCBvblN1Y2Nlc3M/OiAocmVzOiBhbnkpID0+IHZvaWQsIG9uRmFpbHVyZT86IChyZXM6IGFueSkgPT4gdm9pZCkge1xuICAgIHRoaXMudG9rZW5TZXJ2aWNlLnVwZGF0ZVBhc3N3b3JkKHVwZGF0ZVBhc3N3b3JkRGF0YSkuc3Vic2NyaWJlKFxuICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKG9uU3VjY2Vzcykgb25TdWNjZXNzKHJlc3BvbnNlKTtcbiAgICAgIH0sXG4gICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAob25GYWlsdXJlKSBvbkZhaWx1cmUocmVzcG9uc2UpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZXNldFBhc3N3b3JkKHJlc2V0UGFzc3dvcmREYXRhOiBSZXNldFBhc3N3b3JkRGF0YSwgb25TdWNjZXNzPzogKHJlczogYW55KSA9PiB2b2lkLCBvbkZhaWx1cmU/OiAocmVzOiBhbnkpID0+IHZvaWQpIHtcbiAgICB0aGlzLnRva2VuU2VydmljZS5yZXNldFBhc3N3b3JkKHJlc2V0UGFzc3dvcmREYXRhKS5zdWJzY3JpYmUoXG4gICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAob25TdWNjZXNzKSBvblN1Y2Nlc3MocmVzcG9uc2UpO1xuICAgICAgfSxcbiAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChvbkZhaWx1cmUpIG9uRmFpbHVyZShyZXNwb25zZSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHNpZ25PdXQoY2FsbGJhY2s/OiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy50b2tlblNlcnZpY2Uuc2lnbk91dCgpLnN1YnNjcmliZShcbiAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICAgICAgdGhpcy5jbGVhclNlc3Npb25EYXRhKCk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJ3NpZ24taW4nKTtcbiAgICAgIH0sXG4gICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG4gICAgICAgIHRoaXMuY2xlYXJTZXNzaW9uRGF0YSgpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdzaWduLWluJyk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGlzU2lnbmVkSW4oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5TZXJ2aWNlLnVzZXJTaWduZWRJbigpO1xuICB9XG5cbiAgZ2V0U2Vzc2lvbkRhdGEoKSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Nlc3Npb25EYXRhJykhKSB8fCB7fTtcbiAgfVxuXG4gIGNsZWFyU2Vzc2lvbkRhdGEoKSB7XG4gICAgdGhpcy5zZXNzaW9uRGF0YS5uZXh0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBnZXRJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTZXNzaW9uRGF0YSgpLmlkO1xuICB9XG5cbiAgY2hhbmdlUGFzc3dvcmQoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnY2hhbmdlLXBhc3N3b3JkJyk7XG4gIH1cblxuICBnZXRQZXJtaXNzaW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTZXNzaW9uRGF0YSgpLnBlcm1pc3Npb25zIHx8IFtdO1xuICB9XG5cbiAgcHVibGljIGhhc0ZlYXR1cmVBY2Nlc3MoZmVhdHVyZTogc3RyaW5nLCBhY3Rpb246IHN0cmluZyA9ICdSZWFkJykge1xuICAgIHJldHVybiB0aGlzLmFycmF5U2VydmljZS5oYXNJdGVtV2l0aEF0dHJpYnV0ZXMoXG4gICAgICB0aGlzLmdldFBlcm1pc3Npb25zKCksIHsgZmVhdHVyZTogZmVhdHVyZSwgYWN0aW9uOiBhY3Rpb24gfVxuICAgICk7XG4gIH1cblxuICBzZXRMYXRlc3RQYXNzd29yZENoZWNrVGltZSgpIHtcbiAgICBsZXQgbm93ID0gbW9tZW50KCkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhdGVzdFBhc3N3b3JkQ2hlY2tUaW1lJywgbm93KTtcbiAgfVxuXG4gIGdldExhdGVzdFBhc3N3b3JkQ2hlY2tUaW1lKCkge1xuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGF0ZXN0UGFzc3dvcmRDaGVja1RpbWUnKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class DynamicFormField {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
this.label = options.label;
|
|
7
|
+
this.attr = options.attr;
|
|
8
|
+
this.type = options.type;
|
|
9
|
+
this.options = options.options || {};
|
|
10
|
+
this.default = options.default;
|
|
11
|
+
this.required = !!options.required;
|
|
12
|
+
this.disabled = !!options.disabled;
|
|
13
|
+
this.hidden = !!options.hidden;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export class DynamicFormService {
|
|
17
|
+
constructor() { }
|
|
18
|
+
toFormGroup(data = {}, formGroup = new FormGroup({})) {
|
|
19
|
+
Object.keys(data).forEach(attr => {
|
|
20
|
+
let formControl = new FormControl(data[attr] || undefined);
|
|
21
|
+
formGroup.addControl(attr, formControl);
|
|
22
|
+
});
|
|
23
|
+
return formGroup;
|
|
24
|
+
}
|
|
25
|
+
generateFormInitData(fields) {
|
|
26
|
+
return fields.reduce((result, field) => {
|
|
27
|
+
result[field.attr] = field.default;
|
|
28
|
+
return result;
|
|
29
|
+
}, {});
|
|
30
|
+
}
|
|
31
|
+
transformFormValue(formValue) {
|
|
32
|
+
formValue = Object.assign({}, formValue);
|
|
33
|
+
Object.keys(formValue).forEach((key) => {
|
|
34
|
+
if (Array.isArray(formValue[key])) {
|
|
35
|
+
formValue[key] = formValue[key].map((nestedFormValue) => {
|
|
36
|
+
return this.transformFormValue(nestedFormValue);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
else if (formValue[key] && formValue[key].hasOwnProperty('signed_id')) {
|
|
40
|
+
formValue[key] = formValue[key].signed_id;
|
|
41
|
+
}
|
|
42
|
+
if (key.startsWith('dynamic_attributes.')) {
|
|
43
|
+
formValue['dynamic_attributes'] || (formValue['dynamic_attributes'] = {});
|
|
44
|
+
formValue['dynamic_attributes'][key] = formValue[key];
|
|
45
|
+
delete formValue[key];
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return formValue;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
DynamicFormService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
52
|
+
DynamicFormService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicFormService, providedIn: 'root' });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicFormService, decorators: [{
|
|
54
|
+
type: Injectable,
|
|
55
|
+
args: [{
|
|
56
|
+
providedIn: 'root'
|
|
57
|
+
}]
|
|
58
|
+
}], ctorParameters: function () { return []; } });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXhELE1BQU0sT0FBTyxnQkFBZ0I7SUFVM0IsWUFBWSxPQVNUO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBS0QsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixnQkFBZ0IsQ0FBQztJQUVqQixXQUFXLENBQUMsT0FBWSxFQUFFLEVBQUUsWUFBdUIsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9CLElBQUksV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQztZQUMzRCxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUEwQjtRQUM3QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFXLEVBQUUsS0FBdUIsRUFBRSxFQUFFO1lBQzVELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNuQyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsU0FBYztRQUMvQixTQUFTLHFCQUFPLFNBQVMsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNqQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQW9CLEVBQUUsRUFBRTtvQkFDM0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQ0ksSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDckUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7YUFDM0M7WUFFRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsRUFBRTtnQkFDekMsU0FBUyxDQUFDLG9CQUFvQixNQUE5QixTQUFTLENBQUMsb0JBQW9CLElBQU0sRUFBRSxFQUFDO2dCQUN2QyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOztnSEF2Q1Usa0JBQWtCO29IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtRmllbGQge1xuICBsYWJlbDogc3RyaW5nO1xuICBhdHRyOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgb3B0aW9uczogYW55O1xuICBkZWZhdWx0Pzogc3RyaW5nO1xuICByZXF1aXJlZCE6IGJvb2xlYW47XG4gIGRpc2FibGVkITogYm9vbGVhbjtcbiAgaGlkZGVuITogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiB7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgYXR0cjogc3RyaW5nO1xuICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgb3B0aW9ucz86IGFueTtcbiAgICAgIGRlZmF1bHQ/OiBzdHJpbmc7XG4gICAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgICBoaWRkZW4/OiBib29sZWFuO1xuICAgIH0pIHtcbiAgICB0aGlzLmxhYmVsID0gb3B0aW9ucy5sYWJlbDtcbiAgICB0aGlzLmF0dHIgPSBvcHRpb25zLmF0dHI7XG4gICAgdGhpcy50eXBlID0gb3B0aW9ucy50eXBlO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCB7fTtcbiAgICB0aGlzLmRlZmF1bHQgPSBvcHRpb25zLmRlZmF1bHQ7XG4gICAgdGhpcy5yZXF1aXJlZCA9ICEhb3B0aW9ucy5yZXF1aXJlZDtcbiAgICB0aGlzLmRpc2FibGVkID0gISFvcHRpb25zLmRpc2FibGVkO1xuICAgIHRoaXMuaGlkZGVuID0gISFvcHRpb25zLmhpZGRlbjtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybVNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgdG9Gb3JtR3JvdXAoZGF0YTogYW55ID0ge30sIGZvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSkpIDogRm9ybUdyb3VwIHtcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgbGV0IGZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKGRhdGFbYXR0cl0gfHwgdW5kZWZpbmVkKTtcbiAgICAgIGZvcm1Hcm91cC5hZGRDb250cm9sKGF0dHIsIGZvcm1Db250cm9sKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBmb3JtR3JvdXA7XG4gIH1cblxuICBnZW5lcmF0ZUZvcm1Jbml0RGF0YShmaWVsZHM6IER5bmFtaWNGb3JtRmllbGRbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gZmllbGRzLnJlZHVjZSgocmVzdWx0OiBhbnksIGZpZWxkOiBEeW5hbWljRm9ybUZpZWxkKSA9PiB7XG4gICAgICByZXN1bHRbZmllbGQuYXR0cl0gPSBmaWVsZC5kZWZhdWx0O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCB7fSk7XG4gIH1cblxuICB0cmFuc2Zvcm1Gb3JtVmFsdWUoZm9ybVZhbHVlOiBhbnkpIHtcbiAgICBmb3JtVmFsdWUgPSB7Li4uZm9ybVZhbHVlfTtcbiAgICBPYmplY3Qua2V5cyhmb3JtVmFsdWUpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShmb3JtVmFsdWVba2V5XSkpIHtcbiAgICAgICAgZm9ybVZhbHVlW2tleV0gPSBmb3JtVmFsdWVba2V5XS5tYXAoKG5lc3RlZEZvcm1WYWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtRm9ybVZhbHVlKG5lc3RlZEZvcm1WYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZm9ybVZhbHVlW2tleV0gJiYgZm9ybVZhbHVlW2tleV0uaGFzT3duUHJvcGVydHkoJ3NpZ25lZF9pZCcpKSB7XG4gICAgICAgIGZvcm1WYWx1ZVtrZXldID0gZm9ybVZhbHVlW2tleV0uc2lnbmVkX2lkO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2R5bmFtaWNfYXR0cmlidXRlcy4nKSkge1xuICAgICAgICBmb3JtVmFsdWVbJ2R5bmFtaWNfYXR0cmlidXRlcyddIHx8PSB7fTtcbiAgICAgICAgZm9ybVZhbHVlWydkeW5hbWljX2F0dHJpYnV0ZXMnXVtrZXldID0gZm9ybVZhbHVlW2tleV07XG4gICAgICAgIGRlbGV0ZSBmb3JtVmFsdWVba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybVZhbHVlO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { MatDialogConfig } from "@angular/material/dialog";
|
|
3
|
+
import { finalize } from 'rxjs/operators';
|
|
4
|
+
import { DialogDetailsComponent } from '../components/details/dialog-details/dialog-details.component';
|
|
5
|
+
import { DialogFormComponent } from '../components/form/dialog-form/dialog-form.component';
|
|
6
|
+
export class FeatureConfigService {
|
|
7
|
+
constructor(config) {
|
|
8
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
9
|
+
this.sessionData = {};
|
|
10
|
+
this.webRtcEvents = new EventEmitter();
|
|
11
|
+
this.listContentChangeEvents = new EventEmitter();
|
|
12
|
+
this.isCommitInProgress = false;
|
|
13
|
+
this.webApiBaseUrl = (_a = config.webApi) === null || _a === void 0 ? void 0 : _a.baseUrl;
|
|
14
|
+
this.webApiService = (_b = config.webApi) === null || _b === void 0 ? void 0 : _b.service;
|
|
15
|
+
this.webRtcChannel = (_c = config.webRtc) === null || _c === void 0 ? void 0 : _c.channel;
|
|
16
|
+
this.webRtcService = (_d = config.webRtc) === null || _d === void 0 ? void 0 : _d.service;
|
|
17
|
+
this.feature = (_e = config.authorisation) === null || _e === void 0 ? void 0 : _e.feature;
|
|
18
|
+
this.currentUserService = (_f = config.authorisation) === null || _f === void 0 ? void 0 : _f.service;
|
|
19
|
+
(_g = this.currentUserService) === null || _g === void 0 ? void 0 : _g.sessionData.subscribe(sessionData => { this.sessionData = sessionData; });
|
|
20
|
+
this.router = (_h = config.routing) === null || _h === void 0 ? void 0 : _h.service;
|
|
21
|
+
this.dialog = (_j = config.dialog) === null || _j === void 0 ? void 0 : _j.service;
|
|
22
|
+
this.confirmationService = (_k = config.confirmation) === null || _k === void 0 ? void 0 : _k.service;
|
|
23
|
+
this.onInit();
|
|
24
|
+
}
|
|
25
|
+
onInit() { }
|
|
26
|
+
// Override this method in your domain-service if you would like to use it.
|
|
27
|
+
noun() {
|
|
28
|
+
return '';
|
|
29
|
+
}
|
|
30
|
+
/*
|
|
31
|
+
* PARENT COMPONENT
|
|
32
|
+
*/
|
|
33
|
+
setParentComponent(parentComponent) {
|
|
34
|
+
this.parentComponent = parentComponent;
|
|
35
|
+
}
|
|
36
|
+
refreshParentComponent() {
|
|
37
|
+
this.parentComponent.loadData();
|
|
38
|
+
}
|
|
39
|
+
/*
|
|
40
|
+
* WEB API INTERFACE
|
|
41
|
+
*/
|
|
42
|
+
getList(params, headers = {}) {
|
|
43
|
+
return this.webApiService.get(this.webApiBaseUrl, params.toHttpParams(), headers);
|
|
44
|
+
}
|
|
45
|
+
get(id, params = {}, headers = {}) {
|
|
46
|
+
return this.webApiService.get(`${this.webApiBaseUrl}/${id}`, params, headers);
|
|
47
|
+
}
|
|
48
|
+
getNew(params = {}, headers = {}) {
|
|
49
|
+
return this.webApiService.get(`${this.webApiBaseUrl}/new`, params, headers);
|
|
50
|
+
}
|
|
51
|
+
create(params, headers = {}) {
|
|
52
|
+
this.isCommitInProgress = true;
|
|
53
|
+
let observable = this.webApiService.create(this.webApiBaseUrl, params, headers);
|
|
54
|
+
return observable.pipe(finalize(() => {
|
|
55
|
+
this.isCommitInProgress = false;
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
getEdit(id, params = {}, headers = {}) {
|
|
59
|
+
return this.webApiService.get(`${this.webApiBaseUrl}/${id}/edit`, params, headers);
|
|
60
|
+
}
|
|
61
|
+
update(id, params, headers = {}) {
|
|
62
|
+
this.isCommitInProgress = true;
|
|
63
|
+
let observable = this.webApiService.update(`${this.webApiBaseUrl}/${id}`, params, headers);
|
|
64
|
+
return observable.pipe(finalize(() => {
|
|
65
|
+
this.isCommitInProgress = false;
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
destroy(id, params = {}, headers = {}) {
|
|
69
|
+
this.isCommitInProgress = true;
|
|
70
|
+
return this.webApiService.destroy(`${this.webApiBaseUrl}/${id}`, params, headers).pipe(finalize(() => {
|
|
71
|
+
this.isCommitInProgress = false;
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
downloadList(format, filename, params = {}, headers = {}) {
|
|
75
|
+
return this.webApiService.download(`${this.webApiBaseUrl}.${format}`, filename, params, headers);
|
|
76
|
+
}
|
|
77
|
+
download(id, format, filename, params = {}, headers = {}) {
|
|
78
|
+
return this.webApiService.download(`${this.webApiBaseUrl}/${id}.${format}`, filename, params, headers);
|
|
79
|
+
}
|
|
80
|
+
/*
|
|
81
|
+
* WEB RTC INTERFACE
|
|
82
|
+
*/
|
|
83
|
+
connectWebRtc() {
|
|
84
|
+
var _a;
|
|
85
|
+
this.webRtcConnection = (_a = this.webRtcService) === null || _a === void 0 ? void 0 : _a.connect();
|
|
86
|
+
this.webRtcConnection.subscribe({ channel: this.webRtcChannel }, {
|
|
87
|
+
received: (data) => {
|
|
88
|
+
this.webRtcEvents.emit(data);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
disconnectWebRtc() {
|
|
93
|
+
if (this.webRtcConnection)
|
|
94
|
+
this.webRtcConnection.disconnect();
|
|
95
|
+
}
|
|
96
|
+
/*
|
|
97
|
+
* AUTHORISATION
|
|
98
|
+
*/
|
|
99
|
+
canRead() {
|
|
100
|
+
if (!this.feature)
|
|
101
|
+
return true;
|
|
102
|
+
return this.currentUserService.hasFeatureAccess(this.feature, 'Read');
|
|
103
|
+
}
|
|
104
|
+
canWrite() {
|
|
105
|
+
if (!this.feature)
|
|
106
|
+
return true;
|
|
107
|
+
return this.currentUserService.hasFeatureAccess(this.feature, 'Write');
|
|
108
|
+
}
|
|
109
|
+
authorise(action) {
|
|
110
|
+
if (action == 'Write')
|
|
111
|
+
return this.canWrite();
|
|
112
|
+
else
|
|
113
|
+
return this.canRead();
|
|
114
|
+
}
|
|
115
|
+
/*
|
|
116
|
+
* ROUTING
|
|
117
|
+
*/
|
|
118
|
+
openRoute(route) {
|
|
119
|
+
this.router.navigateByUrl(route);
|
|
120
|
+
}
|
|
121
|
+
/*
|
|
122
|
+
* DIALOG
|
|
123
|
+
*/
|
|
124
|
+
openDetailDialog(detailPageService, title, record) {
|
|
125
|
+
const dialogConfig = new MatDialogConfig();
|
|
126
|
+
dialogConfig.data = {
|
|
127
|
+
detailPageService: detailPageService,
|
|
128
|
+
title: title,
|
|
129
|
+
id: record.id
|
|
130
|
+
};
|
|
131
|
+
dialogConfig.width = '80%';
|
|
132
|
+
dialogConfig.autoFocus = false;
|
|
133
|
+
let dialogRef = this.dialog.open(DialogDetailsComponent, dialogConfig);
|
|
134
|
+
dialogRef.afterClosed().subscribe((response) => {
|
|
135
|
+
if (response)
|
|
136
|
+
this.listContentChangeEvents.emit();
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
openFormDialog(formPageService, title, record = {}, initData = {}) {
|
|
140
|
+
const dialogConfig = new MatDialogConfig();
|
|
141
|
+
dialogConfig.data = {
|
|
142
|
+
formPageService: formPageService,
|
|
143
|
+
title: title,
|
|
144
|
+
id: record.id,
|
|
145
|
+
initData: initData
|
|
146
|
+
};
|
|
147
|
+
dialogConfig.width = '80%';
|
|
148
|
+
dialogConfig.autoFocus = false;
|
|
149
|
+
let dialogRef = this.dialog.open(DialogFormComponent, dialogConfig);
|
|
150
|
+
dialogRef.afterClosed().subscribe((response) => {
|
|
151
|
+
if (response)
|
|
152
|
+
this.listContentChangeEvents.emit();
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/*
|
|
156
|
+
* DETAILS PAGE CONFIG
|
|
157
|
+
*/
|
|
158
|
+
// Override this method in you domain-service if you would like to use it.
|
|
159
|
+
onDetailContentLoaded(content) { }
|
|
160
|
+
// Override this method in your domain-service if you would like to use it.
|
|
161
|
+
detailPageExportOptions() {
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
// Override this method in your domain-service if you would like to use it.
|
|
165
|
+
detailPageSectionActions(sectionSlug) {
|
|
166
|
+
return [];
|
|
167
|
+
}
|
|
168
|
+
// Override this method in your domain-service if you would like to use it.
|
|
169
|
+
additionalDetailPageButtons(record) {
|
|
170
|
+
return [];
|
|
171
|
+
}
|
|
172
|
+
deletionOptions() {
|
|
173
|
+
return {
|
|
174
|
+
message: `Do you want to delete this ${this.noun()}?`,
|
|
175
|
+
buttons: [
|
|
176
|
+
{
|
|
177
|
+
label: 'Delete',
|
|
178
|
+
onClick: (id) => {
|
|
179
|
+
return this.destroy(id);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
]
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
delete(id, onDeleteConfirmed, onSuccess, onFailure) {
|
|
186
|
+
this.confirmationService.confirmDeletion((deletionAction) => {
|
|
187
|
+
onDeleteConfirmed();
|
|
188
|
+
deletionAction(id).subscribe(res => {
|
|
189
|
+
this.onDeleteSuccess(res);
|
|
190
|
+
onSuccess(res);
|
|
191
|
+
}, res => {
|
|
192
|
+
this.onDeleteFailure(res.error);
|
|
193
|
+
onFailure(res.error);
|
|
194
|
+
});
|
|
195
|
+
}, this.deletionOptions());
|
|
196
|
+
}
|
|
197
|
+
// Override this method in you domain-service if you would like to use it.
|
|
198
|
+
onDeleteSuccess(response) { }
|
|
199
|
+
// Override this method in you domain-service if you would like to use it.
|
|
200
|
+
onDeleteFailure(response) { }
|
|
201
|
+
/*
|
|
202
|
+
* FORM PAGE CONFIG
|
|
203
|
+
*/
|
|
204
|
+
// Override this method in you domain-service if you would like to use it.
|
|
205
|
+
onFormContentLoaded(content) { }
|
|
206
|
+
// Override this method in you domain-service if you would like to use it.
|
|
207
|
+
onFormValueChanged(pageContent, formValue) { }
|
|
208
|
+
;
|
|
209
|
+
// Override this method in you domain-service if you would like to use it.
|
|
210
|
+
additionalFormPageButtons(record) {
|
|
211
|
+
return [];
|
|
212
|
+
}
|
|
213
|
+
save(id, value, onSuccess, onFailure) {
|
|
214
|
+
this.beforeSave(value);
|
|
215
|
+
let responseObservable = id ? this.update(id, value) : this.create(value);
|
|
216
|
+
responseObservable.subscribe(res => {
|
|
217
|
+
this.onSaveSuccess(res);
|
|
218
|
+
onSuccess(res);
|
|
219
|
+
}, res => {
|
|
220
|
+
this.onSaveFailure(res.error);
|
|
221
|
+
onFailure(res.error);
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
// Override this method in you domain-service if you would like to use it.
|
|
225
|
+
beforeSave(value) { }
|
|
226
|
+
// Override this method in you domain-service if you would like to use it.
|
|
227
|
+
onSaveSuccess(response) { }
|
|
228
|
+
// Override this method in you domain-service if you would like to use it.
|
|
229
|
+
onSaveFailure(response) { }
|
|
230
|
+
/*
|
|
231
|
+
* LIST PAGE CONFIG
|
|
232
|
+
*/
|
|
233
|
+
listPageExportOptions() {
|
|
234
|
+
return [];
|
|
235
|
+
}
|
|
236
|
+
listPageBulkExportOptions() {
|
|
237
|
+
return [];
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL3NlcnZpY2VzL2ZlYXR1cmUtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBWTFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBYTNGLE1BQU0sT0FBTyxvQkFBb0I7SUFxQi9CLFlBQVksTUFBVzs7UUFaYixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQU16QixpQkFBWSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTFELDRCQUF1QixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXJFLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUd6QyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQUEsTUFBTSxDQUFDLE1BQU0sMENBQUUsT0FBTyxDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBQSxNQUFNLENBQUMsTUFBTSwwQ0FBRSxPQUFPLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFBLE1BQU0sQ0FBQyxNQUFNLDBDQUFFLE9BQU8sQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQUEsTUFBTSxDQUFDLE1BQU0sMENBQUUsT0FBTyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBQSxNQUFNLENBQUMsYUFBYSwwQ0FBRSxPQUFPLENBQUM7UUFDN0MsSUFBSSxDQUFDLGtCQUFrQixHQUFH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QiwwRUFBMEU7SUFDMUUsYUFBYSxDQUFDLFFBQTRCLElBQUksQ0FBQztJQUUvQywwRUFBMEU7SUFDMUUsYUFBYSxDQUFDLFFBQTRCLElBQUksQ0FBQztJQUUvQzs7T0FFRztJQUVILHFCQUFxQjtRQUNuQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0aG9yaXNhYmxlRmVhdHVyZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnRlcmZhY2VzL2F1dGhvcmlzYWJsZS1mZWF0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEN1cnJlbnRVc2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2N1cnJlbnQtdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IERldGFpbFBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaW50ZXJmYWNlcy9kZXRhaWwtcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1QYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ludGVyZmFjZXMvZm9ybS1wYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2ViQXBpQ3J1ZEFkYXB0ZXIgfSBmcm9tICcuLi9zZXJ2aWNlcy9hZGFwdGVycy93ZWItYXBpLWNydWQuYWRhcHRlcic7XG5pbXBvcnQgeyBXZWJzb2NrZXRBZGFwdGVyIH0gZnJvbSAnLi4vc2VydmljZXMvYWRhcHRlcnMvd2Vic29ja2V0LmFkYXB0ZXInO1xuaW1wb3J0IHsgV2ViQXBpU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dlYi1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBXZWJzb2NrZXRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvd2Vic29ja2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGV0YWlsUGFnZUJ1dHRvbiB9IGZyb20gJy4uL3NlcnZpY2VzL2ludGVyZmFjZXMvZGV0YWlsLXBhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBEZXRhaWxQYWdlRXhwb3J0T3B0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvaW50ZXJmYWNlcy9kZXRhaWwtcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IERpYWxvZ0RldGFpbHNDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2RldGFpbHMvZGlhbG9nLWRldGFpbHMvZGlhbG9nLWRldGFpbHMuY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Zvcm0vZGlhbG9nLWZvcm0vZGlhbG9nLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNEZXRhaWxzQ29udGVudCB9IGZyb20gJy4uL2RhdGEtc3RydWN0dXJlcy9keW5hbWljLWxheW91dC5zdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1Db250ZW50IH0gZnJvbSAnLi4vZGF0YS1zdHJ1Y3R1cmVzL2R5bmFtaWMtbGF5b3V0LnN0cnVjdHVyZSc7XG5pbXBvcnQgeyBGb3JtUGFnZUJ1dHRvbiB9IGZyb20gJy4uL3NlcnZpY2VzL2ludGVyZmFjZXMvZm9ybS1wYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGlzdFBhZ2VCdWxrRXhwb3J0T3B0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvaW50ZXJmYWNlcy9saXN0LXBhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBMaXN0UGFnZUV4cG9ydE9wdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL2ludGVyZmFjZXMvbGlzdC1wYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2ViQXBpRGVsZXRlUmVzcG9uc2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hZGFwdGVycy93ZWItYXBpLWNydWQuYWRhcHRlcic7XG5pbXBvcnQgeyBXZWJBcGlEZXRhaWxzUmVzcG9uc2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hZGFwdGVycy93ZWItYXBpLWNydWQuYWRhcHRlcic7XG5pbXBvcnQgeyBXZWJBcGlGb3JtUmVzcG9uc2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hZGFwdGVycy93ZWItYXBpLWNydWQuYWRhcHRlcic7XG5pbXBvcnQgeyBXZWJBcGlMaXN0UmVxdWVzdCB9IGZyb20gJy4uL3NlcnZpY2VzL2FkYXB0ZXJzL3dlYi1hcGktY3J1ZC5hZGFwdGVyJztcbmltcG9ydCB7IFdlYkFwaUxpc3RSZXNwb25zZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FkYXB0ZXJzL3dlYi1hcGktY3J1ZC5hZGFwdGVyJztcbmltcG9ydCB7IFdlYkFwaVNhdmVSZXNwb25zZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FkYXB0ZXJzL3dlYi1hcGktY3J1ZC5hZGFwdGVyJztcblxuZXhwb3J0IGNsYXNzIEZlYXR1cmVDb25maWdTZXJ2aWNlIGltcGxlbWVudHMgV2ViQXBpQ3J1ZEFkYXB0ZXIsIFdlYnNvY2tldEFkYXB0ZXIsIEF1dGhvcmlzYWJsZUZlYXR1cmVTZXJ2aWNlIHtcblxuICBwcml2YXRlIHBhcmVudENvbXBvbmVudDogYW55O1xuICBwcm90ZWN0ZWQgd2ViQXBpQmFzZVVybDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZTtcbiAgcHJpdmF0ZSB3ZWJSdGNDaGFubmVsOiBzdHJpbmc7XG4gIHByb3RlY3RlZCB3ZWJSdGNTZXJ2aWNlOiBXZWJzb2NrZXRTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgZmVhdHVyZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgY3VycmVudFVzZXJTZXJ2aWNlOiBDdXJyZW50VXNlclNlcnZpY2U7XG4gIHByb3RlY3RlZCBzZXNzaW9uRGF0YTogYW55ID0ge307XG4gIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcjtcbiAgcHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nO1xuICBwcm90ZWN0ZWQgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZTtcblxuICBwcml2YXRlIHdlYlJ0Y0Nvbm5lY3Rpb246IGFueTtcbiAgcHVibGljIHdlYlJ0Y0V2ZW50czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwdWJsaWMgbGlzdENvbnRlbnRDaGFuZ2VFdmVudHM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHVibGljIGlzQ29tbWl0SW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogYW55KSB7XG4gICAgdGhpcy53ZWJBcGlCYXNlVXJsID0gY29uZmlnLndlYkFwaT8uYmFzZVVybDtcbiAgICB0aGlzLndlYkFwaVNlcnZpY2UgPSBjb25maWcud2ViQXBpPy5zZXJ2aWNlO1xuICAgIHRoaXMud2ViUnRjQ2hhbm5lbCA9IGNvbmZpZy53ZWJSdGM/LmNoYW5uZWw7XG4gICAgdGhpcy53ZWJSdGNTZXJ2aWNlID0gY29uZmlnLndlYlJ0Yz8uc2VydmljZTtcbiAgICB0aGlzLmZlYXR1cmUgPSBjb25maWcuYXV0aG9yaXNhdGlvbj8uZmVhdHVyZTtcbiAgICB0aGlzLmN1cnJlbnRVc2VyU2VydmljZSA9IGNvbmZpZy5hdXRob3Jpc2F0aW9uPy5zZXJ2aWNlO1xuICAgIHRoaXMuY3VycmVudFVzZXJTZXJ2aWNlPy5zZXNzaW9uRGF0YS5zdWJzY3JpYmUoc2Vzc2lvbkRhdGEgPT4geyB0aGlzLnNlc3Npb25EYXRhID0gc2Vzc2lvbkRhdGE7IH0pO1xuICAgIHRoaXMucm91dGVyID0gY29uZmlnLnJvdXRpbmc/LnNlcnZpY2U7XG4gICAgdGhpcy5kaWFsb2cgPSBjb25maWcuZGlhbG9nPy5zZXJ2aWNlO1xuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZSA9IGNvbmZpZy5jb25maXJtYXRpb24/LnNlcnZpY2U7XG4gICAgdGhpcy5vbkluaXQoKTtcbiAgfVxuXG4gIG9uSW5pdCgpIHsgfVxuXG4gIC8vIE92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZG9tYWluLXNlcnZpY2UgaWYgeW91IHdvdWxkIGxpa2UgdG8gdXNlIGl0LlxuICBub3VuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLypcbiAgICogUEFSRU5UIENPTVBPTkVOVFxuICAgKi9cblxuICBzZXRQYXJlbnRDb21wb25lbnQocGFyZW50Q29tcG9uZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmVudENvbXBvbmVudCA9IHBhcmVudENvbXBvbmVudDtcbiAgfVxuXG4gIHJlZnJlc2hQYXJlbnRDb21wb25lbnQoKSB7XG4gICAgdGhpcy5wYXJlbnRDb21wb25lbnQubG9hZERhdGEoKTtcbiAgfVxuXG4gIC8qXG4gICAqIFdFQiBBUEkgSU5URVJGQUNFXG4gICAqL1xuXG4gIGdldExpc3QocGFyYW1zOiBXZWJBcGlMaXN0UmVxdWVzdCwgaGVhZGVyczogYW55ID0ge30pOiBPYnNlcnZhYmxlPFdlYkFwaUxpc3RSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLndlYkFwaVNlcnZpY2UuZ2V0KHRoaXMud2ViQXBpQmFzZVVybCwgcGFyYW1zLnRvSHR0cFBhcmFtcygpLCBoZWFkZXJzKSBhcyBPYnNlcnZhYmxlPFdlYkFwaUxpc3RSZXNwb25zZT47XG4gIH1cblxuICBnZXQoaWQ6IHN0cmluZywgcGFyYW1zOiBhbnkgPSB7fSwgaGVhZGVyczogYW55ID0ge30pOiBPYnNlcnZhYmxlPFdlYkFwaURldGFpbHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLndlYkFwaVNlcnZpY2UuZ2V0KGAke3RoaXMud2ViQXBpQmFzZVVybH0vJHtpZH1gLCBwYXJhbXMsIGhlYWRlcnMpIGFzIE9ic2VydmFibGU8V2ViQXBpRGV0YWlsc1Jlc3BvbnNlPjtcbiAgfVxuXG4gIGdldE5ldyhwYXJhbXM6IGFueSA9IHt9LCBoZWFkZXJzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8V2ViQXBpRm9ybVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMud2ViQXBpU2VydmljZS5nZXQoYCR7dGhpcy53ZWJBcGlCYXNlVXJsfS9uZXdgLCBwYXJhbXMsIGhlYWRlcnMpIGFzIE9ic2VydmFibGU8V2ViQXBpRm9ybVJlc3BvbnNlPjtcbiAgfVxuXG4gIGNyZWF0ZShwYXJhbXM6IGFueSwgaGVhZGVyczogYW55ID0ge30pOiBPYnNlcnZhYmxlPFdlYkFwaVNhdmVSZXNwb25zZT4ge1xuICAgIHRoaXMuaXNDb21taXRJblByb2dyZXNzID0gdHJ1ZTtcbiAgICBsZXQgb2JzZXJ2YWJsZSA9IHRoaXMud2ViQXBpU2VydmljZS5jcmVhdGUodGhpcy53ZWJBcGlCYXNlVXJsLCBwYXJhbXMsIGhlYWRlcnMpIGFzIE9ic2VydmFibGU8V2ViQXBpU2F2ZVJlc3BvbnNlPjtcbiAgICByZXR1cm4gb2JzZXJ2YWJsZS5waXBlKFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzQ29tbWl0SW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0RWRpdChpZDogc3RyaW5nLCBwYXJhbXM6IGFueSA9IHt9LCBoZWFkZXJzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8V2ViQXBpRm9ybVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMud2ViQXBpU2VydmljZS5nZXQoYCR7dGhpcy53ZWJBcGlCYXNlVXJsfS8ke2lkfS9lZGl0YCwgcGFyYW1zLCBoZWFkZXJzKSBhcyBPYnNlcnZhYmxlPFdlYkFwaUZvcm1SZXNwb25zZT47XG4gIH1cblxuICB1cGRhdGUoaWQ6IHN0cmluZywgcGFyYW1zOiBhbnksIGhlYWRlcnM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxXZWJBcGlTYXZlUmVzcG9uc2U+IHtcbiAgICB0aGlzLmlzQ29tbWl0SW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgbGV0IG9ic2VydmFibGUgPSB0aGlzLndlYkFwaVNlcnZpY2UudXBkYXRlKGAke3RoaXMud2ViQXBpQmFzZVVybH0vJHtpZH1gLCBwYXJhbXMsIGhlYWRlcnMpIGFzIE9ic2VydmFibGU8V2ViQXBpU2F2ZVJlc3BvbnNlPjtcbiAgICByZXR1cm4gb2JzZXJ2YWJsZS5waXBlKFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzQ29tbWl0SW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZGVzdHJveShpZDogc3RyaW5nLCBwYXJhbXM6IGFueSA9IHt9LCBoZWFkZXJzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy5pc0NvbW1pdEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLndlYkFwaVNlcnZpY2UuZGVzdHJveShgJHt0aGlzLndlYkFwaUJhc2VVcmx9LyR7aWR9YCwgcGFyYW1zLCBoZWFkZXJzKS5waXBlKFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzQ29tbWl0SW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZG93bmxvYWRMaXN0KGZvcm1hdDogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nLCBwYXJhbXM6IGFueSA9IHt9LCBoZWFkZXJzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMud2ViQXBpU2VydmljZS5kb3dubG9hZChgJHt0aGlzLndlYkFwaUJhc2VVcmx9LiR7Zm9ybWF0fWAsIGZpbGVuYW1lLCBwYXJhbXMsIGhlYWRlcnMpO1xuICB9XG5cbiAgZG93bmxvYWQoaWQ6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcsIHBhcmFtczogYW55ID0ge30sIGhlYWRlcnM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy53ZWJBcGlTZXJ2aWNlLmRvd25sb2FkKGAke3RoaXMud2ViQXBpQmFzZVVybH0vJHtpZH0uJHtmb3JtYXR9YCwgZmlsZW5hbWUsIHBhcmFtcywgaGVhZGVycyk7XG4gIH1cblxuICAvKlxuICAgKiBXRUIgUlRDIElOVEVSRkFDRVxuICAgKi9cblxuICBjb25uZWN0V2ViUnRjKCk6IHZvaWQge1xuICAgIHRoaXMud2ViUnRjQ29ubmVjdGlvbiA9IHRoaXMud2ViUnRjU2VydmljZT8uY29ubmVjdCgpO1xuICAgIHRoaXMud2ViUnRjQ29ubmVjdGlvbi5zdWJzY3JpYmUoeyBjaGFubmVsOiB0aGlzLndlYlJ0Y0NoYW5uZWwgfSwge1xuICAgICAgcmVjZWl2ZWQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy53ZWJSdGNFdmVudHMuZW1pdChkYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGRpc2Nvbm5lY3RXZWJSdGMoKSB7XG4gICAgaWYgKHRoaXMud2ViUnRjQ29ubmVjdGlvbikgdGhpcy53ZWJSdGNDb25uZWN0aW9uLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIC8qXG4gICAqIEFVVEhPUklTQVRJT05cbiAgICovXG5cbiAgY2FuUmVhZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZmVhdHVyZSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFVzZXJTZXJ2aWNlLmhhc0ZlYXR1cmVBY2Nlc3ModGhpcy5mZWF0dXJlLCAnUmVhZCcpO1xuICB9XG5cbiAgY2FuV3JpdGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmZlYXR1cmUpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRVc2VyU2VydmljZS5oYXNGZWF0dXJlQWNjZXNzKHRoaXMuZmVhdHVyZSwgJ1dyaXRlJyk7XG4gIH1cblxuICBhdXRob3Jpc2UoYWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoYWN0aW9uID09ICdXcml0ZScpIHJldHVybiB0aGlzLmNhbldyaXRlKCk7XG4gICAgZWxzZSByZXR1cm4gdGhpcy5jYW5SZWFkKCk7XG4gIH1cblxuICAvKlxuICAgKiBST1VUSU5HXG4gICAqL1xuXG4gIG9wZW5Sb3V0ZShyb3V0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChyb3V0ZSk7XG4gIH1cblxuICAvKlxuICAgKiBESUFMT0dcbiAgICovXG5cbiAgb3BlbkRldGFpbERpYWxvZyhkZXRhaWxQYWdlU2VydmljZTogRGV0YWlsUGFnZVNlcnZpY2UsIHRpdGxlOiBzdHJpbmcsIHJlY29yZDogYW55KSB7XG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xuICAgIGRpYWxvZ0NvbmZpZy5kYXRhID0ge1xuICAgICAgZGV0YWlsUGFnZVNlcnZpY2U6IGRldGFpbFBhZ2VTZXJ2aWNlLFxuICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgaWQ6IHJlY29yZC5pZFxuICAgIH07XG4gICAgZGlhbG9nQ29uZmlnLndpZHRoID0gJzgwJSc7XG4gICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IGZhbHNlO1xuXG4gICAgbGV0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nRGV0YWlsc0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlKSB0aGlzLmxpc3RDb250ZW50Q2hhbmdlRXZlbnRzLmVtaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9wZW5Gb3JtRGlhbG9nKGZvcm1QYWdlU2VydmljZTogRm9ybVBhZ2VTZXJ2aWNlLCB0aXRsZTogc3RyaW5nLCByZWNvcmQ6IGFueSA9IHt9LCBpbml0RGF0YTogYW55ID0ge30pIHtcbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKCk7XG4gICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7XG4gICAgICBmb3JtUGFnZVNlcnZpY2U6IGZvcm1QYWdlU2VydmljZSxcbiAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgIGlkOiByZWNvcmQuaWQsXG4gICAgICBpbml0RGF0YTogaW5pdERhdGFcbiAgICB9O1xuICAgIGRpYWxvZ0NvbmZpZy53aWR0aCA9ICc4MCUnO1xuICAgIGRpYWxvZ0NvbmZpZy5hdXRvRm9jdXMgPSBmYWxzZTtcblxuICAgIGxldCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERpYWxvZ0Zvcm1Db21wb25lbnQsIGRpYWxvZ0NvbmZpZyk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXNwb25zZSkgdGhpcy5saXN0Q29udGVudENoYW5nZUV2ZW50cy5lbWl0KCk7XG4gICAgfSk7XG4gIH1cblxuICAvKlxuICAgKiBERVRBSUxTIFBBR0UgQ09ORklHXG4gICAqL1xuXG4gIC8vIE92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdSBkb21haW4tc2VydmljZSBpZiB5b3Ugd291bGQgbGlrZSB0byB1c2UgaXQuXG4gIG9uRGV0YWlsQ29udGVudExvYWRlZChjb250ZW50OiBEeW5hbWljRGV0YWlsc0NvbnRlbnQpIHsgfVxuXG4gIC8vIE92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZG9tYWluLXNlcnZpY2UgaWYgeW91IHdvdWxkIGxpa2UgdG8gdXNlIGl0LlxuICBkZXRhaWxQYWdlRXhwb3J0T3B0aW9ucygpOiBEZXRhaWxQYWdlRXhwb3J0T3B0aW9uW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIE92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZG9tYWluLXNlcnZpY2UgaWYgeW91IHdvdWxkIGxpa2UgdG8gdXNlIGl0LlxuICBkZXRhaWxQYWdlU2VjdGlvbkFjdGlvbnMoc2VjdGlvblNsdWc6IHN0cmluZyk6IGFueVtdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBPdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGRvbWFpbi1zZXJ2aWNlIGlmIHlvdSB3b3VsZCBsaWtlIHRvIHVzZSBpdC5cbiAgYWRkaXRpb25hbERldGFpbFBhZ2VCdXR0b25zKHJlY29yZDogYW55KTogRGV0YWlsUGFnZUJ1dHRvbltdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBkZWxldGlvbk9wdGlvbnMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogYERvIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzICR7dGhpcy5ub3VuKCl9P2AsXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ0RlbGV0ZScsXG4gICAgICAgICAgb25DbGljazogKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlc3Ryb3koaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZShpZDogc3RyaW5nLCBvbkRlbGV0ZUNvbmZpcm1lZDogKCkgPT4gdm9pZCwgb25TdWNjZXNzOiAocmVzcG9uc2U6IFdlYkFwaURlbGV0ZVJlc3BvbnNlKSA9PiB2b2lkLCBvbkZhaWx1cmU6IChyZXNwb25zZTogV2ViQXBpRGVsZXRlUmVzcG9uc2UpID0+IHZvaWQpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybURlbGV0aW9uKFxuICAgICAgKGRlbGV0aW9uQWN0aW9uOiAoaWQ6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxhbnk+KSA9PiB7XG4gICAgICAgIG9uRGVsZXRlQ29uZmlybWVkKCk7XG5cbiAgICAgICAgZGVsZXRpb25BY3Rpb24oaWQpLnN1YnNjcmliZShcbiAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZVN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICAgIG9uU3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMub25EZWxldGVGYWlsdXJlKHJlcy5lcnJvcik7XG4gICAgICAgICAgICBvbkZhaWx1cmUocmVzLmVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgdGhpcy5kZWxldGlvbk9wdGlvbnMoKVxuICAgICk7XG4gIH1cblxuICAvLyBPdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3UgZG9tYWluLXNlcnZpY2UgaWYgeW91IHdvdWxkIGxpa2UgdG8gdXNlIGl0LlxuICBvbkRlbGV0ZVN1Y2Nlc3MocmVzcG9uc2U6IFdlYkFwaVNhdmVSZXNwb25zZSkgeyB9XG5cbiAgLy8gT3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91IGRvbWFpbi1zZXJ2aWNlIGlmIHlvdSB3b3VsZCBsaWtlIHRvIHVzZSBpdC5cbiAgb25EZWxldGVGYWlsdXJlKHJlc3BvbnNlOiBXZWJBcGlTYXZlUmVzcG9uc2UpIHsgfVxuXG4gIC8qXG4gICAqIEZPUk0gUEFHRSBDT05GSUdcbiAgICovXG5cbiAgLy8gT3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91IGRvbWFpbi1zZXJ2aWNlIGlmIHlvdSB3b3VsZCBsaWtlIHRvIHVzZSBpdC5cbiAgb25Gb3JtQ29udGVudExvYWRlZChjb250ZW50OiBEeW5hbWljRm9ybUNvbnRlbnQpIHsgfVxuXG4gIC8vIE92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdSBkb21haW4tc2VydmljZSBpZiB5b3Ugd291bGQgbGlrZSB0byB1c2UgaXQuXG4gIG9uRm9ybVZhbHVlQ2hhbmdlZChwYWdlQ29udGVudDogRHluYW1pY0Zvcm1Db250ZW50LCBmb3JtVmFsdWU6IGFueSkgeyB9O1xuXG4gIC8vIE92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdSBkb21haW4tc2VydmljZSBpZiB5b3Ugd291bGQgbGlrZSB0byB1c2UgaXQuXG4gIGFkZGl0aW9uYWxGb3JtUGFnZUJ1dHRvbnMocmVjb3JkOiBhbnkpOiBGb3JtUGFnZUJ1dHRvbltdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBzYXZlKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQsIHZhbHVlOiBhbnksIG9uU3VjY2VzczogKHJlc3BvbnNlOiBXZWJBcGlTYXZlUmVzcG9uc2UpID0+IHZvaWQsIG9uRmFpbHVyZTogKHJlc3BvbnNlOiBXZWJBcGlTYXZlUmVzcG9uc2UpID0+IHZvaWQpIHtcbiAgICB0aGlzLmJlZm9yZVNhdmUodmFsdWUpO1xuXG4gICAgbGV0IHJlc3BvbnNlT2JzZXJ2YWJsZSA9IGlkID8gdGhpcy51cGRhdGUoaWQsIHZhbHVlKSA6IHRoaXMuY3JlYXRlKHZhbHVlKTtcblxuICAgIHJlc3BvbnNlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4ge1xuICAgICAgICB0aGlzLm9uU2F2ZVN1Y2Nlc3MocmVzKTtcbiAgICAgICAgb25TdWNjZXNzKHJlcyk7XG4gICAgICB9LFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgdGhpcy5vblNhdmVGYWlsdXJlKHJlcy5lcnJvcik7XG4gICAgICAgIG9uRmFpbHVyZShyZXMuZXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvLyBPdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3UgZG9tYWluLXNlcnZpY2UgaWYgeW91IHdvdWxkIGxpa2UgdG8gdXNlIGl0LlxuICBiZWZvcmVTYXZlKHZhbHVlOiBhbnkpIHsgfVxuXG4gIC8vIE92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdSBkb21haW4tc2VydmljZSBpZiB5b3Ugd291bGQgbGlrZSB0byB1c2UgaXQuXG4gIG9uU2F2ZVN1Y2Nlc3MocmVzcG9uc2U6IFdlYkFwaVNhdmVSZXNwb25zZSkgeyB9XG5cbiAgLy8gT3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91IGRvbWFpbi1zZXJ2aWNlIGlmIHlvdSB3b3VsZCBsaWtlIHRvIHVzZSBpdC5cbiAgb25TYXZlRmFpbHVyZShyZXNwb25zZTogV2ViQXBpU2F2ZVJlc3BvbnNlKSB7IH1cblxuICAvKlxuICAgKiAgTElTVCBQQUdFIENPTkZJR1xuICAgKi9cblxuICBsaXN0UGFnZUV4cG9ydE9wdGlvbnMoKTogTGlzdFBhZ2VFeHBvcnRPcHRpb25bXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgbGlzdFBhZ2VCdWxrRXhwb3J0T3B0aW9ucygpOiBMaXN0UGFnZUJ1bGtFeHBvcnRPcHRpb25bXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXNhYmxlLWZlYXR1cmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL3NlcnZpY2VzL2ludGVyZmFjZXMvYXV0aG9yaXNhYmxlLWZlYXR1cmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBdXRob3Jpc2FibGVGZWF0dXJlU2VydmljZSB7XG5cbiAgY2FuUmVhZCgpOiBib29sZWFuO1xuICBjYW5Xcml0ZSgpOiBib29sZWFuO1xuICBhdXRob3Jpc2UoYWN0aW9uOiBzdHJpbmcpOiBib29sZWFuO1xuXG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXBhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL3NlcnZpY2VzL2ludGVyZmFjZXMvZGFzaGJvYXJkLXBhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRHluYW1pY0xheW91dEdyaWREaW1lbnNpb25zIH0gZnJvbSAnLi4vLi4vZGF0YS1zdHJ1Y3R1cmVzL2R5bmFtaWMtbGF5b3V0LnN0cnVjdHVyZSc7XG5pbXBvcnQgeyBTY3JlZW5TaXplTWFwIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NjcmVlbi1zaXplLW1hcC5tb2RlbCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRXaWRnZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW50ZXJmYWNlcy9kYXNoYm9hcmQtd2lkZ2V0LnNlcnZpY2UnXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGFzaGJvYXJkUGFnZVNlY3Rpb24ge1xuXG4gIHNlY3Rpb25TbHVnOiBzdHJpbmc7XG4gIHNlY3Rpb25EaW1lbnNpb25zOiBTY3JlZW5TaXplTWFwPER5bmFtaWNMYXlvdXRHcmlkRGltZW5zaW9ucz47XG4gIGRhc2hib2FyZFdpZGdldFNlcnZpY2VzOiBEYXNoYm9hcmRXaWRnZXRTZXJ2aWNlW107XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXNoYm9hcmRQYWdlU2VydmljZSB7XG5cbiAgZ2V0V2lkZ2V0SXRlbXMocGFyYW1zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT47XG4gIGRhc2hib2FyZFNlY3Rpb25zKCk6IERhc2hib2FyZFBhZ2VTZWN0aW9uW107XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXdpZGdldC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvc2VydmljZXMvaW50ZXJmYWNlcy9kYXNoYm9hcmQtd2lkZ2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IER5bmFtaWNMYXlvdXRHcmlkQ2VsbERpbWVuc2lvbnMsIER5bmFtaWNMYXlvdXRHcmlkRGltZW5zaW9ucyB9IGZyb20gJy4uLy4uL2RhdGEtc3RydWN0dXJlcy9keW5hbWljLWxheW91dC5zdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgU2NyZWVuU2l6ZU1hcCB9IGZyb20gJy4uLy4uL21vZGVscy9zY3JlZW4tc2l6ZS1tYXAubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZFdpZGdldEl0ZW1Db25maWcge1xuXG4gIGxhYmVsOiBzdHJpbmc7XG4gIHNsdWc6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBzaXplOiBTY3JlZW5TaXplTWFwPER5bmFtaWNMYXlvdXRHcmlkQ2VsbERpbWVuc2lvbnM+O1xuICBjb25maWd1cmF0aW9uOiBhbnk7XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaWRnZXRFeHBvcnRPcHRpb24ge1xuXG4gIGxhYmVsOiBzdHJpbmc7XG4gIGV4cG9ydChwYXJhbXM6IGFueSk6IE9ic2VydmFibGU8YW55PjtcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZFdpZGdldEJ1dHRvbiB7XG5cbiAgbGFiZWw6IHN0cmluZztcbiAgY29sb3I/OiAncHJpbWFyeScgfCAnYWNjZW50JyB8ICd3YXJuJztcbiAgc3R5bGluZz86IGFueTtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIG9uQ2xpY2s6IChkYXRhPzogYW55KSA9PiB2b2lkO1xuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGFzaGJvYXJkV2lkZ2V0U2VydmljZSB7XG5cbiAgc2x1Zzogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIHNob3dNZW51QnV0dG9uOiBib29sZWFuO1xuICB3aWRnZXREaW1lbnNpb25zOiBTY3JlZW5TaXplTWFwPER5bmFtaWNMYXlvdXRHcmlkRGltZW5zaW9ucz47XG5cbiAgd2lkZ2V0U2l6ZSgpOiBTY3JlZW5TaXplTWFwPER5bmFtaWNMYXlvdXRHcmlkQ2VsbERpbWVuc2lvbnM+O1xuICB3aWRnZXRJdGVtc0NvbmZpZygpOiBEYXNoYm9hcmRXaWRnZXRJdGVtQ29uZmlnW107XG4gIHdpZGdldEV4cG9ydE9wdGlvbnMoKTogV2lkZ2V0RXhwb3J0T3B0aW9uW107XG4gIGFkZGl0aW9uYWxXaWRnZXRCdXR0b25zKHdpZGdldENvbmZpZz86IGFueSk6IERhc2hib2FyZFdpZGdldEJ1dHRvbltdO1xuICB3aWRnZXRTZWFyY2hGaWVsZHMoKTogRHluYW1pY0Zvcm1GaWVsZFtdO1xuICBkZWZhdWx0T3B0aW9ucygpOiBhbnk7XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXBhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL3NlcnZpY2VzL2ludGVyZmFjZXMvZGV0YWlsLXBhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgV2ViQXBpRGV0YWlsc1Jlc3BvbnNlLCBXZWJBcGlEZWxldGVSZXNwb25zZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FkYXB0ZXJzL3dlYi1hcGktY3J1ZC5hZGFwdGVyJztcbmltcG9ydCB7IER5bmFtaWNEZXRhaWxzQ29udGVudCB9IGZyb20gJy4uLy4uL2RhdGEtc3RydWN0dXJlcy9keW5hbWljLWxheW91dC5zdHJ1Y3R1cmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERldGFpbFBhZ2VCdXR0b24ge1xuICBsYWJlbDogc3RyaW5nO1xuICBjb2xvcj86ICdwcmltYXJ5JyB8ICdhY2NlbnQnIHwgJ3dhcm4nO1xuICBwb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgc2hvdzogYm9vbGVhbjtcbiAgaXNJblByb2dyZXNzOiAoKSA9PiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgb25DbGljazogKGlkOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV0YWlsUGFnZUV4cG9ydE9wdGlvbiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGV4cG9ydChyZWNvcmQ6IGFueSk6IE9ic2VydmFibGU8YW55PjtcbiAgc2hvdz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV0YWlsUGFnZVNlcnZpY2Uge1xuXG4gIHNob3dFZGl0QnV0dG9uOiBib29sZWFuO1xuICBzaG93RGVsZXRlQnV0dG9uOiBib29sZWFuO1xuICBoaWRlQmFja0J1dHRvbj86IGJvb2xlYW47XG4gIGRlbGV0ZUNvbmZpcm1hdGlvbk1lc3NhZ2U/OiBzdHJpbmc7XG4gIGlzQ29tbWl0SW5Qcm9ncmVzczogYm9vbGVhbjtcblxuICBub3VuKCk6IHN0cmluZztcbiAgc2V0UGFyZW50Q29tcG9uZW50KHBhcmVudENvbXBvbmVudDogYW55KTogdm9pZDtcbiAgZ2V0KGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFdlYkFwaURldGFpbHNSZXNwb25zZT47XG4gIGRlbGV0ZShpZDogc3RyaW5nLCBvbkRlbGV0ZUNvbmZpcm1lZDogKCkgPT4gdm9pZCwgb25TdWNjZXNzOiAocmVzcG9uc2U6IFdlYkFwaURlbGV0ZVJlc3BvbnNlKSA9PiB2b2lkLCBvbkZhaWx1cmU6IChyZXNwb25zZTogV2ViQXBpRGVsZXRlUmVzcG9uc2UpID0+IHZvaWQpOiB2b2lkO1xuICBkZXN0cm95KGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFdlYkFwaURlbGV0ZVJlc3BvbnNlPjtcbiAgZGV0YWlsUGFnZUV4cG9ydE9wdGlvbnMocmVjb3JkPzogYW55KTogRGV0YWlsUGFnZUV4cG9ydE9wdGlvbltdO1xuICBvbkRldGFpbENvbnRlbnRMb2FkZWQoY29udGVudDogRHluYW1pY0RldGFpbHNDb250ZW50KTogdm9pZDtcbiAgZGV0YWlsUGFnZVNlY3Rpb25BY3Rpb25zKHNlY3Rpb25TbHVnOiBzdHJpbmcpOiBhbnlbXVxuICBhZGRpdGlvbmFsRGV0YWlsUGFnZUJ1dHRvbnMocmVjb3JkOiBhbnkpOiBEZXRhaWxQYWdlQnV0dG9uW107XG4gIG9wZW5MaXN0KCk6IHZvaWQ7XG4gIG9wZW5Gb3JtKHJlY29yZD86IGFueSk6IHZvaWQ7XG4gIGNhbldyaXRlKCk6IGJvb2xlYW47XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXBhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL3NlcnZpY2VzL2ludGVyZmFjZXMvZXhwb3J0LXBhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgV2ViQXBpRm9ybVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWRhcHRlcnMvd2ViLWFwaS1jcnVkLmFkYXB0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4cG9ydFBhZ2VTZXJ2aWNlIHtcblxuICBnZXROZXcoKTogT2JzZXJ2YWJsZTxXZWJBcGlGb3JtUmVzcG9uc2U+O1xuICBleHBvcnQocGFyYW1zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT47XG5cbn1cbiJdfQ==
|