@sumaris-net/ngx-components 2.6.26 → 2.7.0-rc2
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/esm2022/public_api.mjs +340 -0
- package/{esm2020 → esm2022}/src/app/admin/admin-routing.module.mjs +8 -8
- package/{esm2020 → esm2022}/src/app/admin/admin.module.mjs +12 -12
- package/esm2022/src/app/admin/services/filter/person.filter.mjs +69 -0
- package/esm2022/src/app/admin/services/person.service.mjs +174 -0
- package/esm2022/src/app/admin/services/validator/person.validator.mjs +72 -0
- package/esm2022/src/app/admin/users/users.mjs +264 -0
- package/esm2022/src/app/admin/users/users.module.mjs +58 -0
- package/{esm2020 → esm2022}/src/app/core/about/about.modal.mjs +20 -7
- package/{esm2020 → esm2022}/src/app/core/about/about.module.mjs +9 -9
- package/{esm2020 → esm2022}/src/app/core/account/account.module.mjs +22 -22
- package/esm2022/src/app/core/account/account.page.mjs +337 -0
- package/esm2022/src/app/core/account/new-token.modal.mjs +130 -0
- package/esm2022/src/app/core/account/token.table.mjs +146 -0
- package/esm2022/src/app/core/auth/auth.form.mjs +140 -0
- package/esm2022/src/app/core/auth/auth.modal.mjs +76 -0
- package/{esm2020 → esm2022}/src/app/core/auth/auth.module.mjs +16 -16
- package/{esm2020 → esm2022}/src/app/core/core.module.mjs +87 -87
- package/esm2022/src/app/core/core.testing.module.mjs +93 -0
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +109 -0
- package/{esm2020 → esm2022}/src/app/core/form/buttons/form-buttons-bar.module.mjs +10 -10
- package/esm2022/src/app/core/form/entity/editor.class.mjs +718 -0
- package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +436 -0
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +730 -0
- package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +24 -0
- package/{esm2020 → esm2022}/src/app/core/form/entity/entity.module.mjs +11 -11
- package/esm2022/src/app/core/form/form.class.mjs +353 -0
- package/{esm2020 → esm2022}/src/app/core/form/form.module.mjs +30 -30
- package/{esm2020 → esm2022}/src/app/core/form/form.utils.mjs +69 -60
- package/esm2022/src/app/core/form/list/list.form.mjs +233 -0
- package/{esm2020 → esm2022}/src/app/core/form/list/list.module.mjs +10 -10
- package/esm2022/src/app/core/form/properties/properties.form.mjs +143 -0
- package/{esm2020 → esm2022}/src/app/core/form/properties/properties.module.mjs +13 -13
- package/esm2022/src/app/core/form/properties/properties.table.mjs +269 -0
- package/esm2022/src/app/core/form/properties/property.validator.mjs +24 -0
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +95 -0
- package/{esm2020 → esm2022}/src/app/core/form/properties/testing/properties-form.testing.module.mjs +11 -11
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +73 -0
- package/{esm2020 → esm2022}/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +10 -10
- package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +152 -0
- package/{esm2020 → esm2022}/src/app/core/form/text-popover/text-popover.module.mjs +10 -10
- package/{esm2020 → esm2022}/src/app/core/graphql/graphql.module.mjs +6 -6
- package/{esm2020 → esm2022}/src/app/core/graphql/graphql.service.mjs +32 -20
- package/{esm2020 → esm2022}/src/app/core/graphql/graphql.utils.mjs +2 -1
- package/esm2022/src/app/core/home/home.mjs +282 -0
- package/esm2022/src/app/core/home/home.module.mjs +51 -0
- package/esm2022/src/app/core/icon/icon.component.mjs +40 -0
- package/{esm2020 → esm2022}/src/app/core/icon/icon.module.mjs +7 -7
- package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +358 -0
- package/{esm2020 → esm2022}/src/app/core/install/install-upgrade-card.module.mjs +10 -10
- package/esm2022/src/app/core/menu/menu.component.mjs +264 -0
- package/esm2022/src/app/core/menu/menu.model.mjs +269 -0
- package/esm2022/src/app/core/menu/menu.module.mjs +52 -0
- package/esm2022/src/app/core/menu/menu.service.mjs +671 -0
- package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +109 -0
- package/{esm2020 → esm2022}/src/app/core/menu/testing/menu-other.testing.mjs +5 -5
- package/esm2022/src/app/core/menu/testing/menu.testing.mjs +122 -0
- package/{esm2020 → esm2022}/src/app/core/menu/testing/menu.testing.module.mjs +12 -12
- package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +29 -0
- package/{esm2020 → esm2022}/src/app/core/offline/update-offline-mode-card.module.mjs +10 -10
- package/esm2022/src/app/core/peer/select-peer.modal.mjs +193 -0
- package/{esm2020 → esm2022}/src/app/core/peer/select-peer.module.mjs +13 -13
- package/esm2022/src/app/core/register/register-confirm.page.mjs +88 -0
- package/esm2022/src/app/core/register/register.form.mjs +194 -0
- package/esm2022/src/app/core/register/register.modal.mjs +55 -0
- package/{esm2020 → esm2022}/src/app/core/register/register.module.mjs +13 -13
- package/esm2022/src/app/core/services/account.service.mjs +1243 -0
- package/esm2022/src/app/core/services/auth-guard.service.mjs +76 -0
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +482 -0
- package/esm2022/src/app/core/services/base-graphql-service.class.mjs +224 -0
- package/esm2022/src/app/core/services/base58.mjs +79 -0
- package/esm2022/src/app/core/services/config.service.mjs +367 -0
- package/esm2022/src/app/core/services/crypto.service.mjs +107 -0
- package/esm2022/src/app/core/services/local-settings.service.mjs +468 -0
- package/esm2022/src/app/core/services/model/account.model.mjs +155 -0
- package/esm2022/src/app/core/services/model/config.model.mjs +107 -0
- package/esm2022/src/app/core/services/model/department.model.mjs +34 -0
- package/esm2022/src/app/core/services/model/entity.decorators.mjs +97 -0
- package/esm2022/src/app/core/services/model/entity.model.mjs +228 -0
- package/esm2022/src/app/core/services/model/peer.model.mjs +83 -0
- package/esm2022/src/app/core/services/model/person.model.mjs +110 -0
- package/esm2022/src/app/core/services/model/referential.model.mjs +189 -0
- package/esm2022/src/app/core/services/model/token.model.mjs +57 -0
- package/esm2022/src/app/core/services/network.service.mjs +626 -0
- package/{esm2020 → esm2022}/src/app/core/services/pipes/account.pipes.mjs +9 -9
- package/{esm2020 → esm2022}/src/app/core/services/pipes/department-to-string.pipe.mjs +5 -5
- package/{esm2020 → esm2022}/src/app/core/services/pipes/person-to-string.pipe.mjs +5 -5
- package/{esm2020 → esm2022}/src/app/core/services/pipes/usage-mode.pipes.mjs +9 -9
- package/{esm2020 → esm2022}/src/app/core/services/platform.service.mjs +29 -7
- package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +434 -0
- package/esm2022/src/app/core/services/storage/entity-store.class.mjs +458 -0
- package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +25 -0
- package/esm2022/src/app/core/services/testing/referential.validator.mjs +46 -0
- package/esm2022/src/app/core/services/validator/account.validator.mjs +45 -0
- package/esm2022/src/app/core/services/validator/base.validator.class.mjs +49 -0
- package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +67 -0
- package/{esm2020 → esm2022}/src/app/core/services/validator/user-settings.validator.mjs +5 -5
- package/{esm2020 → esm2022}/src/app/core/services/validator/user-token.validator.mjs +5 -5
- package/{esm2020 → esm2022}/src/app/core/settings/settings.module.mjs +9 -9
- package/esm2022/src/app/core/settings/settings.page.mjs +328 -0
- package/esm2022/src/app/core/table/actions-column.component.mjs +115 -0
- package/esm2022/src/app/core/table/async-table.class.mjs +1740 -0
- package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +386 -0
- package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +401 -0
- package/esm2022/src/app/core/table/memory-table.class.mjs +57 -0
- package/esm2022/src/app/core/table/table-select-columns.component.mjs +46 -0
- package/esm2022/src/app/core/table/table.class.mjs +1781 -0
- package/esm2022/src/app/core/table/table.model.mjs +16 -0
- package/{esm2020 → esm2022}/src/app/core/table/table.module.mjs +12 -12
- package/esm2022/src/app/core/table/testing/table-validator.service.mjs +28 -0
- package/esm2022/src/app/core/table/testing/table.testing.mjs +291 -0
- package/esm2022/src/app/core/table/testing/table.testing.module.mjs +50 -0
- package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +25 -0
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +250 -0
- package/esm2022/src/app/shared/audio/audio.mjs +251 -0
- package/esm2022/src/app/shared/audio/audio.testing.mjs +32 -0
- package/{esm2020 → esm2022}/src/app/shared/audio/audio.testing.module.mjs +10 -10
- package/esm2022/src/app/shared/capacitor/keyboard.mjs +42 -0
- package/esm2022/src/app/shared/capacitor/plugins.mjs +9 -0
- package/esm2022/src/app/shared/dates.mjs +149 -0
- package/esm2022/src/app/shared/debug/debug.component.mjs +40 -0
- package/{esm2020 → esm2022}/src/app/shared/debug/debug.module.mjs +14 -14
- package/esm2022/src/app/shared/directives/autofocus.directive.mjs +98 -0
- package/esm2022/src/app/shared/directives/autotitle.directive.mjs +32 -0
- package/{esm2020 → esm2022}/src/app/shared/directives/directives.module.mjs +13 -13
- package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +52 -0
- package/esm2022/src/app/shared/directives/ng-var.directive.mjs +33 -0
- package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +62 -0
- package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +45 -0
- package/{esm2020 → esm2022}/src/app/shared/directives/resizable/resizable.module.mjs +5 -5
- package/esm2022/src/app/shared/file/file.service.mjs +122 -0
- package/{esm2020 → esm2022}/src/app/shared/file/file.utils.mjs +2 -2
- package/esm2022/src/app/shared/form/field.component.mjs +353 -0
- package/{esm2020 → esm2022}/src/app/shared/form/field.model.mjs +1 -1
- package/esm2022/src/app/shared/form/loading-spinner.mjs +35 -0
- package/{esm2020 → esm2022}/src/app/shared/functions.mjs +5 -4
- package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +82 -0
- package/esm2022/src/app/shared/gesture/gesture-config.mjs +46 -0
- package/esm2022/src/app/shared/graph/graph-colors.mjs +219 -0
- package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +59 -0
- package/esm2022/src/app/shared/help/help.modal.mjs +63 -0
- package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +23 -0
- package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +85 -0
- package/{esm2020 → esm2022}/src/app/shared/hotkeys/shared-hotkeys.module.mjs +13 -13
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +388 -0
- package/{esm2020 → esm2022}/src/app/shared/image/gallery/image-gallery.module.mjs +22 -22
- package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +26 -0
- package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +90 -0
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +41 -0
- package/{esm2020 → esm2022}/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +16 -16
- package/{esm2020 → esm2022}/src/app/shared/image/image.module.mjs +11 -11
- package/esm2022/src/app/shared/image/image.service.mjs +104 -0
- package/esm2022/src/app/shared/inputs.mjs +231 -0
- package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +28 -0
- package/esm2022/src/app/shared/logging/logging-service.class.mjs +128 -0
- package/{esm2020 → esm2022}/src/app/shared/logging/logging-service.module.mjs +8 -8
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +49 -0
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +961 -0
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +82 -0
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +217 -0
- package/esm2022/src/app/shared/material/badge/badge.directive.mjs +209 -0
- package/{esm2020 → esm2022}/src/app/shared/material/badge/badge.module.mjs +9 -9
- package/esm2022/src/app/shared/material/badge/badge.test.mjs +42 -0
- package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +72 -0
- package/esm2022/src/app/shared/material/boolean/material-boolean2.mjs +266 -0
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +271 -0
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +54 -0
- package/esm2022/src/app/shared/material/chips/chips.module.mjs +76 -0
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +719 -0
- package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +148 -0
- package/{esm2020 → esm2022}/src/app/shared/material/datetime/datetime.module.mjs +38 -38
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +396 -0
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +406 -0
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +549 -0
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +132 -0
- package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +123 -0
- package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +115 -0
- package/esm2022/src/app/shared/material/duration/duration.module.mjs +70 -0
- package/{esm2020 → esm2022}/src/app/shared/material/duration/duration.utils.mjs +2 -2
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +273 -0
- package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +79 -0
- package/{esm2020 → esm2022}/src/app/shared/material/latlong/latlong.utils.mjs +3 -3
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +440 -0
- package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +72 -0
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +113 -0
- package/esm2022/src/app/shared/material/material.module.mjs +229 -0
- package/esm2022/src/app/shared/material/material.testing.module.mjs +221 -0
- package/esm2022/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +104 -0
- package/esm2022/src/app/shared/material/numpad/numpad.component.mjs +83 -0
- package/esm2022/src/app/shared/material/numpad/numpad.container.mjs +203 -0
- package/esm2022/src/app/shared/material/numpad/numpad.content.mjs +19 -0
- package/esm2022/src/app/shared/material/numpad/numpad.directive.mjs +168 -0
- package/esm2022/src/app/shared/material/numpad/numpad.dom-service.mjs +36 -0
- package/esm2022/src/app/shared/material/numpad/numpad.model.mjs +16 -0
- package/{esm2020 → esm2022}/src/app/shared/material/numpad/numpad.module.mjs +21 -21
- package/esm2022/src/app/shared/material/numpad/testing/numpad.test.mjs +48 -0
- package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +48 -0
- package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +23 -0
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +368 -0
- package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +56 -0
- package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +67 -0
- package/esm2022/src/app/shared/material/testing/common.test.mjs +105 -0
- package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +31 -0
- package/esm2022/src/app/shared/material/text/text-form.component.mjs +97 -0
- package/{esm2020 → esm2022}/src/app/shared/material/text/text-form.module.mjs +24 -24
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +236 -0
- package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +49 -0
- package/{esm2020 → esm2022}/src/app/shared/named-filter/named-filter.module.mjs +5 -5
- package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +69 -0
- package/{esm2020 → esm2022}/src/app/shared/pipes/arrays.pipe.mjs +25 -25
- package/esm2022/src/app/shared/pipes/colors.pipe.mjs +27 -0
- package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +51 -0
- package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +72 -0
- package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +28 -0
- package/esm2022/src/app/shared/pipes/duration.pipe.mjs +36 -0
- package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +60 -0
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +194 -0
- package/{esm2020 → esm2022}/src/app/shared/pipes/highlight.pipe.mjs +5 -5
- package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +42 -0
- package/{esm2020 → esm2022}/src/app/shared/pipes/maps.pipe.mjs +13 -13
- package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +118 -0
- package/{esm2020 → esm2022}/src/app/shared/pipes/math.pipes.mjs +13 -13
- package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +19 -0
- package/{esm2020 → esm2022}/src/app/shared/pipes/number-format.pipe.mjs +5 -5
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +256 -0
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +97 -0
- package/esm2022/src/app/shared/pipes/string.pipes.mjs +135 -0
- package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +44 -0
- package/esm2022/src/app/shared/pipes/types.pipes.mjs +58 -0
- package/esm2022/src/app/shared/rx-state.module.mjs +23 -0
- package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +347 -0
- package/esm2022/src/app/shared/services/progress-bar.service.mjs +31 -0
- package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +121 -0
- package/{esm2020 → esm2022}/src/app/shared/services/startable-service.class.mjs +21 -18
- package/esm2022/src/app/shared/services/translate-context.service.mjs +104 -0
- package/{esm2020 → esm2022}/src/app/shared/shared-routing.module.mjs +12 -12
- package/esm2022/src/app/shared/shared.module.mjs +231 -0
- package/{esm2020 → esm2022}/src/app/shared/shared.testing.module.mjs +40 -40
- package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +286 -0
- package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +46 -0
- package/{esm2020 → esm2022}/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +7 -7
- package/{esm2020 → esm2022}/src/app/shared/storage/storage-explorer.testing.module.mjs +6 -6
- package/esm2022/src/app/shared/storage/storage.service.mjs +134 -0
- package/{esm2020 → esm2022}/src/app/shared/storage/storage.utils.mjs +1 -1
- package/esm2022/src/app/shared/testing/observable.test.mjs +96 -0
- package/esm2022/src/app/shared/testing/tests.page.mjs +37 -0
- package/esm2022/src/app/shared/toast/toast.testing.mjs +52 -0
- package/{esm2020 → esm2022}/src/app/shared/toast/toast.testing.module.mjs +10 -10
- package/esm2022/src/app/shared/toast/toasts.mjs +144 -0
- package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +60 -0
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +263 -0
- package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +57 -0
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +59 -0
- package/{esm2020 → esm2022}/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +10 -10
- package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +107 -0
- package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +211 -0
- package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +27 -0
- package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +106 -0
- package/esm2022/src/app/shared/validator/validators.mjs +580 -0
- package/esm2022/src/app/shared/version/versions.mjs +81 -0
- package/esm2022/src/app/social/job/job.module.mjs +42 -0
- package/esm2022/src/app/social/job/progression/job-progression.component.mjs +35 -0
- package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +232 -0
- package/esm2022/src/app/social/job/progression/job-progression.list.mjs +50 -0
- package/esm2022/src/app/social/job/progression/job-progression.model.mjs +29 -0
- package/esm2022/src/app/social/job/progression/job-progression.service.mjs +73 -0
- package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +43 -0
- package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +53 -0
- package/{esm2020 → esm2022}/src/app/social/job/testing/job.testing.module.mjs +9 -9
- package/esm2022/src/app/social/message/message.form.mjs +140 -0
- package/esm2022/src/app/social/message/message.modal.mjs +110 -0
- package/esm2022/src/app/social/message/message.model.mjs +75 -0
- package/{esm2020 → esm2022}/src/app/social/message/message.module.mjs +5 -5
- package/esm2022/src/app/social/message/message.service.mjs +110 -0
- package/{esm2020 → esm2022}/src/app/social/social.module.mjs +19 -19
- package/{esm2020 → esm2022}/src/app/social/social.testing.module.mjs +10 -10
- package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +123 -0
- package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +263 -0
- package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +233 -0
- package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +129 -0
- package/{esm2020 → esm2022}/src/app/social/user-event/testing/user-event.testing.module.mjs +9 -9
- package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +116 -0
- package/esm2022/src/app/social/user-event/user-event.module.mjs +43 -0
- package/esm2022/src/app/social/user-event/user-event.service.mjs +512 -0
- package/esm2022/src/environments/environment.class.mjs +50 -0
- package/esm2022/src/environments/environment.loader.mjs +83 -0
- package/{esm2020 → esm2022}/src/environments/environment.mjs +3 -3
- package/{fesm2020 → fesm2022}/sumaris-net.ngx-components.mjs +12695 -10274
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -0
- package/package.json +37 -17
- package/public_api.d.ts +12 -4
- package/src/app/admin/users/users.d.ts +1 -1
- package/src/app/admin/users/users.module.d.ts +2 -1
- package/src/app/core/about/about.modal.d.ts +1 -1
- package/src/app/core/account/account.page.d.ts +1 -1
- package/src/app/core/account/new-token.modal.d.ts +1 -1
- package/src/app/core/account/token.table.d.ts +1 -1
- package/src/app/core/auth/auth.form.d.ts +1 -1
- package/src/app/core/auth/auth.modal.d.ts +1 -1
- package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +1 -1
- package/src/app/core/form/entity/editor.class.d.ts +3 -3
- package/src/app/core/form/entity/entity-editor-modal.class.d.ts +1 -1
- package/src/app/core/form/entity/entity-editor.class.d.ts +1 -1
- package/src/app/core/form/entity/entity-metadata.component.d.ts +1 -1
- package/src/app/core/form/form.class.d.ts +1 -1
- package/src/app/core/form/list/list.form.d.ts +1 -1
- package/src/app/core/form/properties/properties.form.d.ts +1 -1
- package/src/app/core/form/properties/properties.table.d.ts +2 -3
- package/src/app/core/form/properties/property.validator.d.ts +1 -1
- package/src/app/core/form/properties/testing/properties-form.test.d.ts +1 -1
- package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +1 -1
- package/src/app/core/form/text-popover/text-popover.component.d.ts +1 -1
- package/src/app/core/graphql/graphql.utils.d.ts +1 -1
- package/src/app/core/home/home.d.ts +1 -1
- package/src/app/core/home/home.module.d.ts +4 -3
- package/src/app/core/icon/icon.component.d.ts +1 -1
- package/src/app/core/install/install-upgrade-card.component.d.ts +1 -1
- package/src/app/core/menu/menu.component.d.ts +2 -2
- package/src/app/core/menu/menu.model.d.ts +0 -1
- package/src/app/core/menu/menu.module.d.ts +3 -5
- package/src/app/core/menu/menu.service.d.ts +1 -1
- package/src/app/core/menu/sub-menu-tab.directive.d.ts +1 -1
- package/src/app/core/menu/testing/menu-other.testing.d.ts +1 -1
- package/src/app/core/menu/testing/menu.testing.d.ts +1 -1
- package/src/app/core/offline/update-offline-mode-card.component.d.ts +1 -1
- package/src/app/core/peer/select-peer.modal.d.ts +1 -1
- package/src/app/core/register/register-confirm.page.d.ts +1 -1
- package/src/app/core/register/register.form.d.ts +1 -1
- package/src/app/core/register/register.modal.d.ts +1 -1
- package/src/app/core/services/base-entity-service.class.d.ts +2 -2
- package/src/app/core/services/base-graphql-service.class.d.ts +1 -1
- package/src/app/core/services/model/person.model.d.ts +1 -1
- package/src/app/core/services/model/settings.model.d.ts +1 -1
- package/src/app/core/services/network.types.d.ts +2 -2
- package/src/app/core/services/storage/entity-store.class.d.ts +1 -1
- package/src/app/core/services/validator/base.validator.class.d.ts +1 -1
- package/src/app/core/settings/settings.page.d.ts +1 -1
- package/src/app/core/table/actions-column.component.d.ts +2 -2
- package/src/app/core/table/async-table.class.d.ts +1 -1
- package/src/app/core/table/entities-async-table-datasource.class.d.ts +1 -1
- package/src/app/core/table/entities-table-datasource.class.d.ts +1 -1
- package/src/app/core/table/memory-table.class.d.ts +3 -3
- package/src/app/core/table/table-select-columns.component.d.ts +1 -1
- package/src/app/core/table/table.class.d.ts +4 -3
- package/src/app/core/table/table.model.d.ts +1 -1
- package/src/app/core/table/testing/table.testing.d.ts +5 -4
- package/src/app/core/table/testing/table.testing.module.d.ts +8 -5
- package/src/app/core/table/testing/table2-validator.service.d.ts +15 -0
- package/src/app/core/table/testing/table2.testing.d.ts +45 -0
- package/src/app/shared/audio/audio.d.ts +1 -1
- package/src/app/shared/audio/audio.testing.d.ts +1 -1
- package/src/app/shared/debug/debug.component.d.ts +1 -1
- package/src/app/shared/directives/autofocus.directive.d.ts +1 -1
- package/src/app/shared/directives/autotitle.directive.d.ts +1 -1
- package/src/app/shared/directives/drag-and-drop.directive.d.ts +1 -1
- package/src/app/shared/directives/ng-var.directive.d.ts +1 -1
- package/src/app/shared/directives/resizable/resizable.component.d.ts +1 -1
- package/src/app/shared/directives/resizable/resizable.directive.d.ts +1 -1
- package/src/app/shared/events.d.ts +1 -1
- package/src/app/shared/form/field.component.d.ts +4 -5
- package/src/app/shared/form/field.model.d.ts +2 -0
- package/src/app/shared/form/loading-spinner.d.ts +1 -1
- package/src/app/shared/functions.d.ts +2 -2
- package/src/app/shared/help/help.modal.d.ts +2 -2
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +3 -5
- package/src/app/shared/hotkeys/hotkeys.service.d.ts +3 -3
- package/src/app/shared/image/gallery/image-gallery.component.d.ts +3 -3
- package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +2 -2
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +8 -8
- package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +10 -9
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +1 -1
- package/src/app/shared/material/badge/badge.directive.d.ts +1 -1
- package/src/app/shared/material/badge/badge.test.d.ts +1 -1
- package/src/app/shared/material/boolean/boolean.module.d.ts +12 -11
- package/src/app/shared/material/boolean/material-boolean2.d.ts +66 -0
- package/src/app/shared/material/boolean/material.boolean.d.ts +5 -4
- package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +21 -0
- package/src/app/shared/material/chips/material.chips.d.ts +8 -9
- package/src/app/shared/material/chips/testing/chips.test.d.ts +2 -2
- package/src/app/shared/material/datetime/datetime.module.d.ts +2 -2
- package/src/app/shared/material/datetime/material.date.d.ts +5 -4
- package/src/app/shared/material/datetime/material.dateshort.d.ts +8 -7
- package/src/app/shared/material/datetime/material.datetime.d.ts +16 -8
- package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +7 -1
- package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +3 -1
- package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +3 -1
- package/src/app/shared/material/duration/duration.module.d.ts +6 -5
- package/src/app/shared/material/duration/material.duration.d.ts +6 -5
- package/src/app/shared/material/duration/testing/mat-duration.test.d.ts +22 -0
- package/src/app/shared/material/latlong/material.latlong.d.ts +16 -9
- package/src/app/shared/material/latlong/material.latlong.module.d.ts +9 -8
- package/src/app/shared/material/latlong/testing/latlong.test.d.ts +3 -1
- package/src/app/shared/material/material.testing.module.d.ts +23 -19
- package/src/app/shared/material/numpad/numpad.append-to-input.directive.d.ts +1 -1
- package/src/app/shared/material/numpad/numpad.component.d.ts +1 -1
- package/src/app/shared/material/numpad/numpad.container.d.ts +1 -1
- package/src/app/shared/material/numpad/numpad.content.d.ts +1 -1
- package/src/app/shared/material/numpad/numpad.directive.d.ts +1 -1
- package/src/app/shared/material/numpad/numpad.dom-service.d.ts +3 -3
- package/src/app/shared/material/numpad/testing/numpad.test.d.ts +1 -1
- package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +0 -3
- package/src/app/shared/material/swipe/material.swipe.d.ts +6 -6
- package/src/app/shared/material/swipe/swipe.module.d.ts +2 -1
- package/src/app/shared/material/swipe/testing/swipe.test.d.ts +1 -1
- package/src/app/shared/material/testing/common.test.d.ts +25 -0
- package/src/app/shared/material/text/testing/text-form.testing.d.ts +1 -1
- package/src/app/shared/material/text/text-form.component.d.ts +1 -1
- package/src/app/shared/named-filter/named-filter-selector.component.d.ts +1 -1
- package/src/app/shared/named-filter/named-filter.service.d.ts +1 -1
- package/src/app/shared/pipes/maskito.pipe.d.ts +16 -0
- package/src/app/shared/pipes/ng-init.pipe.d.ts +1 -1
- package/src/app/shared/pipes/pipes.module.d.ts +5 -4
- package/src/app/shared/pipes/string.pipes.d.ts +6 -0
- package/src/app/shared/pipes/types.pipes.d.ts +7 -0
- package/src/app/shared/rx-state.module.d.ts +10 -0
- package/src/app/shared/services/job.utils.d.ts +1 -1
- package/src/app/shared/services/memory-entity-service.class.d.ts +1 -1
- package/src/app/shared/services/startable-observable-service.class.d.ts +3 -0
- package/src/app/shared/services/startable-service.class.d.ts +3 -0
- package/src/app/shared/shared.module.d.ts +4 -4
- package/src/app/shared/storage/storage-explorer.component.d.ts +1 -1
- package/src/app/shared/storage/storage-explorer.module.d.ts +3 -3
- package/src/app/shared/storage/storage.service.d.ts +1 -1
- package/src/app/shared/storage/storage.utils.d.ts +1 -1
- package/src/app/shared/testing/observable.test.d.ts +1 -1
- package/src/app/shared/testing/tests.page.d.ts +1 -1
- package/src/app/shared/toast/toast.testing.d.ts +1 -1
- package/src/app/shared/toolbar/modal-toolbar.d.ts +1 -1
- package/src/app/shared/toolbar/toolbar.d.ts +1 -1
- package/src/app/shared/toolbar/toolbar.module.d.ts +4 -3
- package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +1 -1
- package/src/app/shared/upload-file/upload-file-popover.component.d.ts +1 -1
- package/src/app/shared/upload-file/upload-file.component.d.ts +1 -1
- package/src/app/shared/upload-file/upload-file.model.d.ts +2 -2
- package/src/app/social/job/progression/job-progression.component.d.ts +17 -3
- package/src/app/social/job/progression/job-progression.icon.d.ts +24 -10
- package/src/app/social/job/progression/job-progression.list.d.ts +3 -3
- package/src/app/social/job/progression/job-progression.model.d.ts +0 -1
- package/src/app/social/job/testing/job-progression.testing.d.ts +3 -6
- package/src/app/social/message/message.form.d.ts +1 -1
- package/src/app/social/message/message.modal.d.ts +1 -1
- package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +4 -3
- package/src/app/social/user-event/notification/user-event-notification.list.d.ts +1 -1
- package/src/app/social/user-event/testing/user-event.testing.d.ts +1 -1
- package/src/app/social/user-event/testing/user-event.testing.model.d.ts +0 -1
- package/src/app/social/user-event/user-event.model.d.ts +2 -2
- package/src/app/social/user-event/user-event.module.d.ts +3 -2
- package/src/app/social/user-event/user-event.service.d.ts +1 -1
- package/src/assets/i18n/fr.json +2 -2
- package/src/assets/img/logo/logo-eis.png +0 -0
- package/src/assets/manifest.json +1 -1
- package/src/environments/environment.loader.d.ts +1 -1
- package/src/theme/_material.globals.scss +51 -19
- package/src/theme/_material.scss +35 -19
- package/src/theme/_mixins.scss +4 -4
- package/src/theme/_ngx-components.globals.scss +6 -1
- package/src/theme/_ngx-components.scss +264 -535
- package/src/theme/_ngx-components.table.scss +597 -0
- package/src/theme/_theme.scss +1 -0
- package/esm2020/public_api.mjs +0 -332
- package/esm2020/src/app/admin/services/filter/person.filter.mjs +0 -59
- package/esm2020/src/app/admin/services/person.service.mjs +0 -170
- package/esm2020/src/app/admin/services/validator/person.validator.mjs +0 -71
- package/esm2020/src/app/admin/users/users.mjs +0 -250
- package/esm2020/src/app/admin/users/users.module.mjs +0 -54
- package/esm2020/src/app/core/account/account.page.mjs +0 -319
- package/esm2020/src/app/core/account/new-token.modal.mjs +0 -121
- package/esm2020/src/app/core/account/token.table.mjs +0 -141
- package/esm2020/src/app/core/auth/auth.form.mjs +0 -131
- package/esm2020/src/app/core/auth/auth.modal.mjs +0 -72
- package/esm2020/src/app/core/core.testing.module.mjs +0 -86
- package/esm2020/src/app/core/form/buttons/form-buttons-bar.component.mjs +0 -107
- package/esm2020/src/app/core/form/entity/editor.class.mjs +0 -685
- package/esm2020/src/app/core/form/entity/entity-editor-modal.class.mjs +0 -422
- package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +0 -696
- package/esm2020/src/app/core/form/entity/entity-metadata.component.mjs +0 -25
- package/esm2020/src/app/core/form/form.class.mjs +0 -345
- package/esm2020/src/app/core/form/list/list.form.mjs +0 -222
- package/esm2020/src/app/core/form/properties/properties.form.mjs +0 -132
- package/esm2020/src/app/core/form/properties/properties.table.mjs +0 -267
- package/esm2020/src/app/core/form/properties/property.validator.mjs +0 -23
- package/esm2020/src/app/core/form/properties/testing/properties-form.test.mjs +0 -90
- package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.mjs +0 -70
- package/esm2020/src/app/core/form/text-popover/text-popover.component.mjs +0 -146
- package/esm2020/src/app/core/home/home.mjs +0 -257
- package/esm2020/src/app/core/home/home.module.mjs +0 -48
- package/esm2020/src/app/core/icon/icon.component.mjs +0 -41
- package/esm2020/src/app/core/install/install-upgrade-card.component.mjs +0 -344
- package/esm2020/src/app/core/menu/menu.component.mjs +0 -242
- package/esm2020/src/app/core/menu/menu.model.mjs +0 -247
- package/esm2020/src/app/core/menu/menu.module.mjs +0 -57
- package/esm2020/src/app/core/menu/menu.service.mjs +0 -660
- package/esm2020/src/app/core/menu/sub-menu-tab.directive.mjs +0 -98
- package/esm2020/src/app/core/menu/testing/menu.testing.mjs +0 -121
- package/esm2020/src/app/core/offline/update-offline-mode-card.component.mjs +0 -27
- package/esm2020/src/app/core/peer/select-peer.modal.mjs +0 -183
- package/esm2020/src/app/core/register/register-confirm.page.mjs +0 -81
- package/esm2020/src/app/core/register/register.form.mjs +0 -183
- package/esm2020/src/app/core/register/register.modal.mjs +0 -52
- package/esm2020/src/app/core/services/account.service.mjs +0 -1235
- package/esm2020/src/app/core/services/auth-guard.service.mjs +0 -71
- package/esm2020/src/app/core/services/base-entity-service.class.mjs +0 -468
- package/esm2020/src/app/core/services/base-graphql-service.class.mjs +0 -221
- package/esm2020/src/app/core/services/base58.mjs +0 -78
- package/esm2020/src/app/core/services/config.service.mjs +0 -357
- package/esm2020/src/app/core/services/crypto.service.mjs +0 -107
- package/esm2020/src/app/core/services/local-settings.service.mjs +0 -460
- package/esm2020/src/app/core/services/model/account.model.mjs +0 -147
- package/esm2020/src/app/core/services/model/config.model.mjs +0 -92
- package/esm2020/src/app/core/services/model/department.model.mjs +0 -30
- package/esm2020/src/app/core/services/model/entity.decorators.mjs +0 -97
- package/esm2020/src/app/core/services/model/entity.model.mjs +0 -225
- package/esm2020/src/app/core/services/model/peer.model.mjs +0 -68
- package/esm2020/src/app/core/services/model/person.model.mjs +0 -97
- package/esm2020/src/app/core/services/model/referential.model.mjs +0 -167
- package/esm2020/src/app/core/services/model/token.model.mjs +0 -52
- package/esm2020/src/app/core/services/network.service.mjs +0 -607
- package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +0 -428
- package/esm2020/src/app/core/services/storage/entity-store.class.mjs +0 -449
- package/esm2020/src/app/core/services/testing/referential-filter.model.mjs +0 -23
- package/esm2020/src/app/core/services/testing/referential.validator.mjs +0 -45
- package/esm2020/src/app/core/services/validator/account.validator.mjs +0 -41
- package/esm2020/src/app/core/services/validator/base.validator.class.mjs +0 -47
- package/esm2020/src/app/core/services/validator/local-settings.validator.mjs +0 -66
- package/esm2020/src/app/core/settings/settings.page.mjs +0 -312
- package/esm2020/src/app/core/table/actions-column.component.mjs +0 -102
- package/esm2020/src/app/core/table/async-table.class.mjs +0 -1698
- package/esm2020/src/app/core/table/entities-async-table-datasource.class.mjs +0 -384
- package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +0 -399
- package/esm2020/src/app/core/table/memory-table.class.mjs +0 -53
- package/esm2020/src/app/core/table/table-select-columns.component.mjs +0 -43
- package/esm2020/src/app/core/table/table.class.mjs +0 -1733
- package/esm2020/src/app/core/table/table.model.mjs +0 -12
- package/esm2020/src/app/core/table/testing/table-validator.service.mjs +0 -27
- package/esm2020/src/app/core/table/testing/table.testing.mjs +0 -281
- package/esm2020/src/app/core/table/testing/table.testing.module.mjs +0 -38
- package/esm2020/src/app/shared/audio/audio.mjs +0 -248
- package/esm2020/src/app/shared/audio/audio.testing.mjs +0 -31
- package/esm2020/src/app/shared/capacitor/keyboard.mjs +0 -40
- package/esm2020/src/app/shared/capacitor/plugins.mjs +0 -9
- package/esm2020/src/app/shared/dates.mjs +0 -149
- package/esm2020/src/app/shared/debug/debug.component.mjs +0 -39
- package/esm2020/src/app/shared/directives/autofocus.directive.mjs +0 -93
- package/esm2020/src/app/shared/directives/autotitle.directive.mjs +0 -30
- package/esm2020/src/app/shared/directives/drag-and-drop.directive.mjs +0 -53
- package/esm2020/src/app/shared/directives/ng-var.directive.mjs +0 -31
- package/esm2020/src/app/shared/directives/resizable/resizable.component.mjs +0 -59
- package/esm2020/src/app/shared/directives/resizable/resizable.directive.mjs +0 -40
- package/esm2020/src/app/shared/file/file.service.mjs +0 -117
- package/esm2020/src/app/shared/form/field.component.mjs +0 -332
- package/esm2020/src/app/shared/form/loading-spinner.mjs +0 -36
- package/esm2020/src/app/shared/geolocation/geolocation.utils.mjs +0 -80
- package/esm2020/src/app/shared/gesture/gesture-config.mjs +0 -49
- package/esm2020/src/app/shared/graph/graph-colors.mjs +0 -212
- package/esm2020/src/app/shared/guard/component-dirty.guard.mjs +0 -57
- package/esm2020/src/app/shared/help/help.modal.mjs +0 -53
- package/esm2020/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +0 -23
- package/esm2020/src/app/shared/hotkeys/hotkeys.service.mjs +0 -84
- package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +0 -368
- package/esm2020/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +0 -27
- package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +0 -90
- package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.mjs +0 -39
- package/esm2020/src/app/shared/image/image.service.mjs +0 -98
- package/esm2020/src/app/shared/inputs.mjs +0 -231
- package/esm2020/src/app/shared/interceptors/progess.interceptor.mjs +0 -27
- package/esm2020/src/app/shared/logging/logging-service.class.mjs +0 -121
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +0 -47
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +0 -920
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +0 -78
- package/esm2020/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +0 -209
- package/esm2020/src/app/shared/material/badge/badge.directive.mjs +0 -199
- package/esm2020/src/app/shared/material/badge/badge.test.mjs +0 -41
- package/esm2020/src/app/shared/material/boolean/boolean.module.mjs +0 -68
- package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +0 -253
- package/esm2020/src/app/shared/material/chips/chips.module.mjs +0 -76
- package/esm2020/src/app/shared/material/chips/material.chips.mjs +0 -696
- package/esm2020/src/app/shared/material/chips/testing/chips.test.mjs +0 -143
- package/esm2020/src/app/shared/material/datetime/material.date.mjs +0 -376
- package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +0 -385
- package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +0 -499
- package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +0 -109
- package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +0 -111
- package/esm2020/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +0 -103
- package/esm2020/src/app/shared/material/duration/duration.module.mjs +0 -67
- package/esm2020/src/app/shared/material/duration/material.duration.mjs +0 -257
- package/esm2020/src/app/shared/material/latlong/material.latlong.mjs +0 -382
- package/esm2020/src/app/shared/material/latlong/material.latlong.module.mjs +0 -67
- package/esm2020/src/app/shared/material/latlong/testing/latlong.test.mjs +0 -102
- package/esm2020/src/app/shared/material/material.module.mjs +0 -229
- package/esm2020/src/app/shared/material/material.testing.module.mjs +0 -179
- package/esm2020/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +0 -98
- package/esm2020/src/app/shared/material/numpad/numpad.component.mjs +0 -80
- package/esm2020/src/app/shared/material/numpad/numpad.container.mjs +0 -190
- package/esm2020/src/app/shared/material/numpad/numpad.content.mjs +0 -17
- package/esm2020/src/app/shared/material/numpad/numpad.directive.mjs +0 -162
- package/esm2020/src/app/shared/material/numpad/numpad.dom-service.mjs +0 -37
- package/esm2020/src/app/shared/material/numpad/numpad.model.mjs +0 -15
- package/esm2020/src/app/shared/material/numpad/testing/numpad.test.mjs +0 -46
- package/esm2020/src/app/shared/material/paginator/material.paginator-i18n.mjs +0 -46
- package/esm2020/src/app/shared/material/stepper/material.stepper-i18n.mjs +0 -22
- package/esm2020/src/app/shared/material/swipe/material.swipe.mjs +0 -344
- package/esm2020/src/app/shared/material/swipe/swipe.module.mjs +0 -52
- package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +0 -64
- package/esm2020/src/app/shared/material/text/testing/text-form.testing.mjs +0 -29
- package/esm2020/src/app/shared/material/text/text-form.component.mjs +0 -89
- package/esm2020/src/app/shared/named-filter/named-filter-selector.component.mjs +0 -224
- package/esm2020/src/app/shared/named-filter/named-filter.model.mjs +0 -45
- package/esm2020/src/app/shared/named-filter/named-filter.service.mjs +0 -63
- package/esm2020/src/app/shared/pipes/colors.pipe.mjs +0 -25
- package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +0 -48
- package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +0 -66
- package/esm2020/src/app/shared/pipes/date-from-now.pipe.mjs +0 -27
- package/esm2020/src/app/shared/pipes/duration.pipe.mjs +0 -34
- package/esm2020/src/app/shared/pipes/file-size.pipe.mjs +0 -62
- package/esm2020/src/app/shared/pipes/form.pipes.mjs +0 -187
- package/esm2020/src/app/shared/pipes/latlong-format.pipe.mjs +0 -46
- package/esm2020/src/app/shared/pipes/ng-init.pipe.mjs +0 -21
- package/esm2020/src/app/shared/pipes/pipes.module.mjs +0 -239
- package/esm2020/src/app/shared/pipes/property.pipes.mjs +0 -93
- package/esm2020/src/app/shared/pipes/string.pipes.mjs +0 -121
- package/esm2020/src/app/shared/pipes/translate-context.pipe.mjs +0 -43
- package/esm2020/src/app/shared/pipes/types.pipes.mjs +0 -45
- package/esm2020/src/app/shared/services/memory-entity-service.class.mjs +0 -339
- package/esm2020/src/app/shared/services/progress-bar.service.mjs +0 -33
- package/esm2020/src/app/shared/services/startable-observable-service.class.mjs +0 -118
- package/esm2020/src/app/shared/services/translate-context.service.mjs +0 -103
- package/esm2020/src/app/shared/shared.module.mjs +0 -229
- package/esm2020/src/app/shared/storage/storage-explorer.component.mjs +0 -268
- package/esm2020/src/app/shared/storage/storage-explorer.module.mjs +0 -47
- package/esm2020/src/app/shared/storage/storage.service.mjs +0 -132
- package/esm2020/src/app/shared/testing/observable.test.mjs +0 -95
- package/esm2020/src/app/shared/testing/tests.page.mjs +0 -33
- package/esm2020/src/app/shared/toast/toast.testing.mjs +0 -51
- package/esm2020/src/app/shared/toast/toasts.mjs +0 -144
- package/esm2020/src/app/shared/toolbar/modal-toolbar.mjs +0 -58
- package/esm2020/src/app/shared/toolbar/toolbar.mjs +0 -251
- package/esm2020/src/app/shared/toolbar/toolbar.module.mjs +0 -53
- package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.mjs +0 -58
- package/esm2020/src/app/shared/upload-file/upload-file-popover.component.mjs +0 -97
- package/esm2020/src/app/shared/upload-file/upload-file.component.mjs +0 -204
- package/esm2020/src/app/shared/upload-file/upload-file.model.mjs +0 -20
- package/esm2020/src/app/shared/validator/form-error-adapter.class.mjs +0 -104
- package/esm2020/src/app/shared/validator/validators.mjs +0 -580
- package/esm2020/src/app/shared/version/versions.mjs +0 -81
- package/esm2020/src/app/social/job/job.module.mjs +0 -42
- package/esm2020/src/app/social/job/progression/job-progression.component.mjs +0 -20
- package/esm2020/src/app/social/job/progression/job-progression.icon.mjs +0 -216
- package/esm2020/src/app/social/job/progression/job-progression.list.mjs +0 -43
- package/esm2020/src/app/social/job/progression/job-progression.model.mjs +0 -23
- package/esm2020/src/app/social/job/progression/job-progression.service.mjs +0 -71
- package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +0 -52
- package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +0 -55
- package/esm2020/src/app/social/message/message.form.mjs +0 -136
- package/esm2020/src/app/social/message/message.modal.mjs +0 -99
- package/esm2020/src/app/social/message/message.model.mjs +0 -67
- package/esm2020/src/app/social/message/message.service.mjs +0 -105
- package/esm2020/src/app/social/user-event/notification/user-event-notification.icon.mjs +0 -114
- package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +0 -246
- package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +0 -227
- package/esm2020/src/app/social/user-event/testing/user-event.testing.model.mjs +0 -112
- package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +0 -111
- package/esm2020/src/app/social/user-event/user-event.module.mjs +0 -39
- package/esm2020/src/app/social/user-event/user-event.service.mjs +0 -501
- package/esm2020/src/environments/environment.class.mjs +0 -5
- package/esm2020/src/environments/environment.loader.mjs +0 -79
- package/fesm2015/sumaris-net.ngx-components.mjs +0 -41105
- package/fesm2015/sumaris-net.ngx-components.mjs.map +0 -1
- package/fesm2020/sumaris-net.ngx-components.mjs.map +0 -1
- package/resources/README.md +0 -7
- /package/{esm2020 → esm2022}/src/app/core/services/config/core.config.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/core/services/errors.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/core/services/model/filter.model.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/core/services/model/history.model.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/core/services/model/model.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/core/services/model/settings.model.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/core/services/model/tree-item-entity.model.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/core/services/network.types.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/core/services/network.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/core/table/table.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/alerts.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/constants.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/debug/debug-service.class.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/events.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/file/csv.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/file/images.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/file/json.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/file/uri.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/focusable.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/forms.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/gesture/hammer.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/graph/colors.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/http/http.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/image/image.model.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/logging/log-level.model.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/logging/logger.model.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/logging/logging-service.config.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/material/material.animations.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/modules.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/observables.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/platforms.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/services/entity-service.class.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/services/job.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/services/validator-service.class.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/services.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/types.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/social/social.errors.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/social/user-event/user-event.model.mjs +0 -0
- /package/{esm2020 → esm2022}/sumaris-net.ngx-components.mjs +0 -0
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
import { BehaviorSubject, merge } from 'rxjs';
|
|
2
|
-
import { filter, map, mergeMap, takeUntil, tap } from 'rxjs/operators';
|
|
3
|
-
import { isEmptyArray, isNil, isNotEmptyArray, isNotNil } from '../functions';
|
|
4
|
-
import { Directive } from '@angular/core';
|
|
5
|
-
import { EntityUtils } from '../../core/services/model/entity.model';
|
|
6
|
-
import { EntityFilter, EntityFilterUtils } from '../../core/services/model/filter.model';
|
|
7
|
-
import { firstFalsePromise } from '../observables';
|
|
8
|
-
import { StartableObservableService } from './startable-observable-service.class';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
// @dynamic
|
|
11
|
-
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
12
|
-
export class InMemoryEntitiesService extends StartableObservableService {
|
|
13
|
-
constructor(dataType, filterType, options) {
|
|
14
|
-
super(null);
|
|
15
|
-
this.dataType = dataType;
|
|
16
|
-
this.filterType = filterType;
|
|
17
|
-
this.debug = false;
|
|
18
|
-
this._hiddenData = null;
|
|
19
|
-
this.dirtySubject = new BehaviorSubject(false);
|
|
20
|
-
this.savingSubject = new BehaviorSubject(false);
|
|
21
|
-
options = {
|
|
22
|
-
onSort: this.sort,
|
|
23
|
-
...options
|
|
24
|
-
};
|
|
25
|
-
this._sortFn = options.onSort;
|
|
26
|
-
this._onLoad = options.onLoad;
|
|
27
|
-
this._onSaveFn = options.onSave;
|
|
28
|
-
this._equalsFn = options.equals;
|
|
29
|
-
this._filterFnFactory = options.filterFnFactory || ((f) => {
|
|
30
|
-
const filter = this.asFilter(f);
|
|
31
|
-
if (filter instanceof EntityFilter) {
|
|
32
|
-
return filter.asFilterFn();
|
|
33
|
-
}
|
|
34
|
-
return undefined;
|
|
35
|
-
});
|
|
36
|
-
this._startByReadyFunction = false; // Need setValue() to be called, to start the service
|
|
37
|
-
this.sortByReplacement = {
|
|
38
|
-
...options.sortByReplacement
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
set value(data) {
|
|
42
|
-
this.setValue(data);
|
|
43
|
-
}
|
|
44
|
-
get value() {
|
|
45
|
-
return this.dataSubject.getValue();
|
|
46
|
-
}
|
|
47
|
-
get saving() {
|
|
48
|
-
return this.savingSubject.value;
|
|
49
|
-
}
|
|
50
|
-
get dirty() {
|
|
51
|
-
return this.dirtySubject.value;
|
|
52
|
-
}
|
|
53
|
-
async ngOnStart(data) {
|
|
54
|
-
if (!data)
|
|
55
|
-
throw new Error('Missing required data, to start this service');
|
|
56
|
-
if (this.debug)
|
|
57
|
-
console.debug('[memory-data-service] Starting...');
|
|
58
|
-
this._hiddenData = [];
|
|
59
|
-
this.markAsSaved();
|
|
60
|
-
this.markAsPristine();
|
|
61
|
-
return data;
|
|
62
|
-
}
|
|
63
|
-
async ngOnStop() {
|
|
64
|
-
if (this.debug)
|
|
65
|
-
console.debug('[memory-data-service] Stopping...');
|
|
66
|
-
this._hiddenData = null;
|
|
67
|
-
this.markAsSaved();
|
|
68
|
-
this.markAsPristine();
|
|
69
|
-
}
|
|
70
|
-
ngOnDestroy() {
|
|
71
|
-
this.stop();
|
|
72
|
-
}
|
|
73
|
-
setValue(data) {
|
|
74
|
-
// If service already started
|
|
75
|
-
if (this.started) {
|
|
76
|
-
// Update the data, if changed
|
|
77
|
-
if (this.dataSubject.value !== data) {
|
|
78
|
-
this._hiddenData = [];
|
|
79
|
-
this.dataSubject.next(data);
|
|
80
|
-
}
|
|
81
|
-
// Reset dirty and saving state
|
|
82
|
-
// (Fix ObsBio issue on samples table : still dirty after setting the same value again)
|
|
83
|
-
this.markAsSaved();
|
|
84
|
-
this.markAsPristine();
|
|
85
|
-
}
|
|
86
|
-
// If service not started yet, then start it, using given data
|
|
87
|
-
else {
|
|
88
|
-
this.start(data);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
async loadAll(offset, size, sortBy, sortDirection, filter, opts) {
|
|
92
|
-
offset = offset >= 0 ? offset : 0;
|
|
93
|
-
size = size >= 0 ? size : -1;
|
|
94
|
-
const originalData = this.dataSubject.value;
|
|
95
|
-
if (isNil(originalData)) {
|
|
96
|
-
console.warn('[memory-data-service] Cannot load all: no value set. Will return empty result');
|
|
97
|
-
}
|
|
98
|
-
try {
|
|
99
|
-
// Wait service is ready
|
|
100
|
-
await this.ready();
|
|
101
|
-
// Wait while busy (e.g. when saving, or deleting)
|
|
102
|
-
await this.waitIdle({ stopError: false /*avoid error when stopped*/ });
|
|
103
|
-
}
|
|
104
|
-
catch (err) {
|
|
105
|
-
// Should be a stop error: log and continue
|
|
106
|
-
if (!this.stopped)
|
|
107
|
-
console.error('Unexpected error, while waiting :', err);
|
|
108
|
-
}
|
|
109
|
-
// Make sure service is not stopped
|
|
110
|
-
if (this.stopped)
|
|
111
|
-
return undefined;
|
|
112
|
-
const excludedDataByFilter = [];
|
|
113
|
-
let excludedDataByPagination;
|
|
114
|
-
try {
|
|
115
|
-
if (isEmptyArray(originalData)) {
|
|
116
|
-
return { data: [], total: 0 };
|
|
117
|
-
}
|
|
118
|
-
// Apply sort
|
|
119
|
-
let data = this._sortFn(originalData, sortBy, sortDirection);
|
|
120
|
-
if (this._onLoad) {
|
|
121
|
-
data = await this._onLoad(data);
|
|
122
|
-
}
|
|
123
|
-
// Apply filter (will update hiddenData)
|
|
124
|
-
data = this.filter(data, filter, excludedDataByFilter);
|
|
125
|
-
// Compute the total length
|
|
126
|
-
const total = data.length;
|
|
127
|
-
// If page size=0 (e.g. only need total)
|
|
128
|
-
if (size === 0) {
|
|
129
|
-
excludedDataByPagination = data;
|
|
130
|
-
return { data: [], total };
|
|
131
|
-
}
|
|
132
|
-
// Slice in a page (using offset and size)
|
|
133
|
-
if (offset > 0) {
|
|
134
|
-
// Offset after the end: no result
|
|
135
|
-
if (offset >= data.length) {
|
|
136
|
-
excludedDataByPagination = data;
|
|
137
|
-
data = [];
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
excludedDataByPagination = (size > 0 && ((offset + size) < data.length))
|
|
141
|
-
// Slice using limit to size
|
|
142
|
-
? data.slice(0, offset).concat(data.slice(offset + size))
|
|
143
|
-
// Slice without limit
|
|
144
|
-
: data.slice(0, offset);
|
|
145
|
-
data = (size > 0 && ((offset + size) < data.length))
|
|
146
|
-
// Slice using limit to size
|
|
147
|
-
? data.slice(offset, offset + size)
|
|
148
|
-
// Slice without limit
|
|
149
|
-
: data.slice(offset);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
// Apply a limit
|
|
153
|
-
else if (size > 0) {
|
|
154
|
-
excludedDataByPagination = data.slice(size);
|
|
155
|
-
data = data.slice(0, size);
|
|
156
|
-
}
|
|
157
|
-
// No limit:
|
|
158
|
-
else if (size === -1) {
|
|
159
|
-
// Keep all data
|
|
160
|
-
}
|
|
161
|
-
// /!\ If already observed, then always create a copy of the original array
|
|
162
|
-
// Because datasource will only update if the array changed
|
|
163
|
-
if (data === originalData) {
|
|
164
|
-
data = data.slice();
|
|
165
|
-
}
|
|
166
|
-
const res = { data, total };
|
|
167
|
-
const nextOffset = size > 0 ? (offset || 0) + size : total;
|
|
168
|
-
if (nextOffset < total) {
|
|
169
|
-
res.fetchMore = () => this.loadAll(nextOffset, size, sortBy, sortDirection, filter, { ...opts, updateHiddenData: false })
|
|
170
|
-
.then(res => {
|
|
171
|
-
// Update hidden data (remove new fetched item)
|
|
172
|
-
if (res.data?.length) {
|
|
173
|
-
this._hiddenData = this._hiddenData?.filter(item => !res.data.includes(item));
|
|
174
|
-
}
|
|
175
|
-
return res;
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
return res;
|
|
179
|
-
}
|
|
180
|
-
finally {
|
|
181
|
-
// Remember hidden data
|
|
182
|
-
if (opts?.updateHiddenData !== false) {
|
|
183
|
-
this._hiddenData = !excludedDataByPagination ? excludedDataByFilter : excludedDataByFilter.concat(...excludedDataByPagination);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
watchAll(offset, size, sortBy, sortDirection, filterData, options) {
|
|
188
|
-
offset = offset >= 0 ? offset : 0;
|
|
189
|
-
size = size >= 0 ? size : -1;
|
|
190
|
-
return this.dataSubject
|
|
191
|
-
.pipe(
|
|
192
|
-
// Warn if waiting value to be set
|
|
193
|
-
tap((data) => this.debug && !data && console.debug('[memory-data-service] Waiting value to be set...')), filter(isNotNil), mergeMap(_ => this.loadAll(offset, size, sortBy, sortDirection, filterData, options)), filter(isNotNil), // Skip no result (e.g. when stopped)
|
|
194
|
-
takeUntil(this.stopSubject));
|
|
195
|
-
}
|
|
196
|
-
async saveAll(data, options) {
|
|
197
|
-
if (!this.dataSubject.value)
|
|
198
|
-
throw new Error('[memory-service] Could not save, because value not set');
|
|
199
|
-
this.markAsSaving();
|
|
200
|
-
try {
|
|
201
|
-
// Restore hidden data
|
|
202
|
-
if (isNotEmptyArray(this._hiddenData))
|
|
203
|
-
data = data.concat(...this._hiddenData);
|
|
204
|
-
if (this._onSaveFn) {
|
|
205
|
-
const res = this._onSaveFn(data);
|
|
206
|
-
data = ((res instanceof Promise)) ? await res : res;
|
|
207
|
-
}
|
|
208
|
-
this.dataSubject.next(data);
|
|
209
|
-
this.markAsDirty();
|
|
210
|
-
return data;
|
|
211
|
-
}
|
|
212
|
-
finally {
|
|
213
|
-
this.markAsSaved();
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
async deleteAll(dataToRemove, options) {
|
|
217
|
-
let data = this.dataSubject.value;
|
|
218
|
-
if (!data)
|
|
219
|
-
throw new Error('[memory-service] Could not delete, because value not set');
|
|
220
|
-
this.markAsSaving();
|
|
221
|
-
try {
|
|
222
|
-
// Remove deleted item, from data
|
|
223
|
-
const updatedData = data.filter(entity => {
|
|
224
|
-
const removed = dataToRemove.findIndex(entityToRemove => this.equals(entityToRemove, entity)) !== -1;
|
|
225
|
-
return !removed;
|
|
226
|
-
});
|
|
227
|
-
const deleteCount = data.length - updatedData.length;
|
|
228
|
-
if (deleteCount > 0) {
|
|
229
|
-
data = updatedData;
|
|
230
|
-
this.dataSubject.next(data);
|
|
231
|
-
this.markAsDirty();
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
finally {
|
|
235
|
-
this.markAsSaved();
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
sort(data, sortBy, sortDirection) {
|
|
239
|
-
// Make sure to fill sortBy BEFORE checking in the replacement map
|
|
240
|
-
sortBy = sortBy || 'id';
|
|
241
|
-
// Replace sortBy, using the replacement map
|
|
242
|
-
sortBy = this.sortByReplacement[sortBy] || sortBy;
|
|
243
|
-
// Execute the sort
|
|
244
|
-
return EntityUtils.sort(data, sortBy, sortDirection);
|
|
245
|
-
}
|
|
246
|
-
asFilter(source) {
|
|
247
|
-
return EntityFilterUtils.fromObject(source, this.filterType);
|
|
248
|
-
}
|
|
249
|
-
addSortByReplacement(source, target) {
|
|
250
|
-
this.sortByReplacement[source] = target;
|
|
251
|
-
}
|
|
252
|
-
equals(d1, d2) {
|
|
253
|
-
if (this._equalsFn)
|
|
254
|
-
return this._equalsFn(d1, d2);
|
|
255
|
-
return d1 && d1.equals ? d1.equals(d2) : EntityUtils.equals(d1, d2, 'id');
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Count data stored by the service (without hidden data).
|
|
259
|
-
*
|
|
260
|
-
* @param opts
|
|
261
|
-
*/
|
|
262
|
-
// get visibleCount(): number {
|
|
263
|
-
// return (this.dataSubject.value?.length || 0);
|
|
264
|
-
// }
|
|
265
|
-
/**
|
|
266
|
-
* Count data stored by the service (without hidden data).
|
|
267
|
-
*
|
|
268
|
-
* @param opts
|
|
269
|
-
* @deprecated TODO Please rename this getter into visibleCount (and create count = hiddenCount + visibleCount)
|
|
270
|
-
*/
|
|
271
|
-
get count() {
|
|
272
|
-
return (this.dataSubject.value?.length || 0);
|
|
273
|
-
}
|
|
274
|
-
get hiddenCount() {
|
|
275
|
-
return this._hiddenData?.length || 0;
|
|
276
|
-
}
|
|
277
|
-
async waitIdle(opts) {
|
|
278
|
-
await this.waitWhileSaving(opts);
|
|
279
|
-
}
|
|
280
|
-
markAsDirty() {
|
|
281
|
-
if (!this.dirtySubject.value) {
|
|
282
|
-
this.dirtySubject.next(true);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
markAsPristine() {
|
|
286
|
-
if (this.dirtySubject.value) {
|
|
287
|
-
this.dirtySubject.next(false);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
/* -- protected methods -- */
|
|
291
|
-
filter(data, _filter, hiddenData) {
|
|
292
|
-
// if filter is DataFilter instance, use its test function
|
|
293
|
-
const filterFn = this._filterFnFactory && this._filterFnFactory(_filter);
|
|
294
|
-
if (filterFn) {
|
|
295
|
-
const filteredData = [];
|
|
296
|
-
data.forEach(value => {
|
|
297
|
-
if (filterFn(value))
|
|
298
|
-
filteredData.push(value);
|
|
299
|
-
else
|
|
300
|
-
hiddenData.push(value);
|
|
301
|
-
});
|
|
302
|
-
return filteredData;
|
|
303
|
-
}
|
|
304
|
-
// default, no filter
|
|
305
|
-
return data;
|
|
306
|
-
}
|
|
307
|
-
connect() {
|
|
308
|
-
return this.dataSubject.pipe(map((data) => {
|
|
309
|
-
data = data || [];
|
|
310
|
-
const total = data.length;
|
|
311
|
-
return { data, total };
|
|
312
|
-
}));
|
|
313
|
-
}
|
|
314
|
-
async waitWhileSaving(opts) {
|
|
315
|
-
if (this.saving) {
|
|
316
|
-
return firstFalsePromise(this.savingSubject, {
|
|
317
|
-
stop: opts?.stop || merge(this.stopSubject, this.dataSubject),
|
|
318
|
-
stopError: false,
|
|
319
|
-
...opts
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
markAsSaving() {
|
|
324
|
-
if (!this.savingSubject.value) {
|
|
325
|
-
this.savingSubject.next(true);
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
markAsSaved() {
|
|
329
|
-
if (this.savingSubject.value) {
|
|
330
|
-
this.savingSubject.next(false);
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
InMemoryEntitiesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InMemoryEntitiesService, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
335
|
-
InMemoryEntitiesService.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: InMemoryEntitiesService, usesInheritance: true, ngImport: i0 });
|
|
336
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InMemoryEntitiesService, decorators: [{
|
|
337
|
-
type: Directive
|
|
338
|
-
}], ctorParameters: function () { return [{ type: undefined }, { type: undefined }, { type: undefined }]; } });
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWVudGl0eS1zZXJ2aWNlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvc2VydmljZXMvbWVtb3J5LWVudGl0eS1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQVU5RSxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQVcsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekYsT0FBTyxFQUFFLGlCQUFpQixFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQWNsRixXQUFXO0FBRVgsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyx1QkFLWCxTQUFRLDBCQUFvQztJQW1DNUMsWUFDWSxRQUFvQixFQUNwQixVQUFzQixFQUNoQyxPQUE4QztRQUU5QyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFKRixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBQ3BCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFsQ2xDLFVBQUssR0FBRyxLQUFLLENBQUM7UUFFTixnQkFBVyxHQUFRLElBQUksQ0FBQztRQUV2QixpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ25E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QixPQUFPLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRVMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFxQjtRQUNuRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUc7WUFDaEIsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUMzQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUM3RCxTQUFTLEVBQUUsS0FBSztnQkFDaEIsR0FBRyxJQUFJO2FBQ1IsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRVMsV0FBVztRQUNuQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQzs7b0hBbmFVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRm5DLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1lcmdlLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNFbXB0eUFycmF5LCBpc05pbCwgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQge1xuICBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucyxcbiAgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zLFxuICBGaWx0ZXJGbixcbiAgRmlsdGVyRm5GYWN0b3J5LFxuICBJRW50aXRpZXNTZXJ2aWNlLFxuICBMb2FkUmVzdWx0LFxufSBmcm9tICcuL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHlVdGlscywgSUVudGl0eSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IEVudGl0eUZpbHRlciwgRW50aXR5RmlsdGVyVXRpbHMgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL2ZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBmaXJzdEZhbHNlUHJvbWlzZSwgV2FpdEZvck9wdGlvbnMgfSBmcm9tICcuLi9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyBTdGFydGFibGVPYnNlcnZhYmxlU2VydmljZSB9IGZyb20gJy4vc3RhcnRhYmxlLW9ic2VydmFibGUtc2VydmljZS5jbGFzcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5NZW1vcnlFbnRpdGllc1NlcnZpY2VPcHRpb25zPFQsIEY+IHtcbiAgb25Tb3J0PzogKGRhdGE6IFRbXSwgc29ydEJ5Pzogc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbikgPT4gVFtdO1xuICBvbkxvYWQ/OiAoZGF0YTogVFtdKSA9PiBUW10gfCBQcm9taXNlPFRbXT47XG4gIG9uU2F2ZT86IChkYXRhOiBUW10pID0+IFRbXSB8IFByb21pc2U8VFtdPjtcbiAgZXF1YWxzPzogKGQxOiBULCBkMjogVCkgPT4gYm9vbGVhbjtcblxuICBmaWx0ZXJGbkZhY3Rvcnk/OiBGaWx0ZXJGbkZhY3Rvcnk8VCwgRj47XG4gIGZpbHRlckZuPzogRmlsdGVyRm48VD47XG5cbiAgc29ydEJ5UmVwbGFjZW1lbnQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBJbk1lbW9yeUVudGl0aWVzU2VydmljZTxcbiAgVCBleHRlbmRzIElFbnRpdHk8VCwgSUQ+LFxuICBGID0gYW55LFxuICBJRCA9IG51bWJlcixcbiAgTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucz5cbiAgZXh0ZW5kcyBTdGFydGFibGVPYnNlcnZhYmxlU2VydmljZTxUW10sIFRbXT5cbiAgaW1wbGVtZW50cyBJRW50aXRpZXNTZXJ2aWNlPFQsIEYsIE8+LCBPbkRlc3Ryb3kge1xuXG4gIGRlYnVnID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfaGlkZGVuRGF0YTogVFtdID0gbnVsbDtcblxuICByZWFkb25seSBkaXJ0eVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2F2aW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzb3J0QnlSZXBsYWNlbWVudDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zb3J0Rm46IChkYXRhOiBUW10sIHNvcnRCeT86IHN0cmluZywgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24pID0+IFRbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBfb25Mb2FkOiAoZGF0YTogVFtdKSA9PiBUW10gfCBQcm9taXNlPFRbXT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX29uU2F2ZUZuOiAoZGF0YTogVFtdKSA9PiBUW10gfCBQcm9taXNlPFRbXT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VxdWFsc0ZuOiAoZDE6IFQsIGQyOiBUKSA9PiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJGbkZhY3Rvcnk6IEZpbHRlckZuRmFjdG9yeTxULCBGPjtcblxuXG4gIHNldCB2YWx1ZShkYXRhOiBUW10pIHtcbiAgICB0aGlzLnNldFZhbHVlKGRhdGEpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBzYXZpbmcoKTogYm9vbGVhbntcbiAgICByZXR1cm4gdGhpcy5zYXZpbmdTdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpcnR5U3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBkYXRhVHlwZTogbmV3KCkgPT4gVCxcbiAgICBwcm90ZWN0ZWQgZmlsdGVyVHlwZTogbmV3KCkgPT4gRixcbiAgICBvcHRpb25zPzogSW5NZW1vcnlFbnRpdGllc1NlcnZpY2VPcHRpb25zPFQsIEY+XG4gICkge1xuICAgIHN1cGVyKG51bGwpO1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICBvblNvcnQ6IHRoaXMuc29ydCxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xuXG4gICAgdGhpcy5fc29ydEZuID0gb3B0aW9ucy5vblNvcnQ7XG4gICAgdGhpcy5fb25Mb2FkID0gb3B0aW9ucy5vbkxvYWQ7XG4gICAgdGhpcy5fb25TYXZlRm4gPSBvcHRpb25zLm9uU2F2ZTtcbiAgICB0aGlzLl9lcXVhbHNGbiA9IG9wdGlvbnMuZXF1YWxzO1xuICAgIHRoaXMuX2ZpbHRlckZuRmFjdG9yeSA9IG9wdGlvbnMuZmlsdGVyRm5GYWN0b3J5IHx8ICgoZikgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5hc0ZpbHRlcihmKSBhcyBGO1xuICAgICAgaWYgKGZpbHRlciBpbnN0YW5jZW9mIEVudGl0eUZpbHRlcikge1xuICAgICAgICByZXR1cm4gZmlsdGVyLmFzRmlsdGVyRm4oKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgdGhpcy5fc3RhcnRCeVJlYWR5RnVuY3Rpb24gPSBmYWxzZTsgLy8gTmVlZCBzZXRWYWx1ZSgpIHRvIGJlIGNhbGxlZCwgdG8gc3RhcnQgdGhlIHNlcnZpY2VcblxuICAgIHRoaXMuc29ydEJ5UmVwbGFjZW1lbnQgPSB7XG4gICAgICAuLi5vcHRpb25zLnNvcnRCeVJlcGxhY2VtZW50XG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBuZ09uU3RhcnQoZGF0YT86IFRbXSk6IFByb21pc2U8VFtdPiB7XG4gICAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgZGF0YSwgdG8gc3RhcnQgdGhpcyBzZXJ2aWNlJyk7XG4gICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoJ1ttZW1vcnktZGF0YS1zZXJ2aWNlXSBTdGFydGluZy4uLicpO1xuICAgIHRoaXMuX2hpZGRlbkRhdGEgPSBbXTtcbiAgICB0aGlzLm1hcmtBc1NhdmVkKCk7XG4gICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdG9wKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKCdbbWVtb3J5LWRhdGEtc2VydmljZV0gU3RvcHBpbmcuLi4nKTtcbiAgICB0aGlzLl9oaWRkZW5EYXRhID0gbnVsbDtcbiAgICB0aGlzLm1hcmtBc1NhdmVkKCk7XG4gICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdG9wKCk7XG4gIH1cblxuICBzZXRWYWx1ZShkYXRhOiBUW10pIHtcbiAgICAvLyBJZiBzZXJ2aWNlIGFscmVhZHkgc3RhcnRlZFxuICAgIGlmICh0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgZGF0YSwgaWYgY2hhbmdlZFxuICAgICAgaWYgKHRoaXMuZGF0YVN1YmplY3QudmFsdWUgIT09IGRhdGEpIHtcbiAgICAgICAgdGhpcy5faGlkZGVuRGF0YSA9IFtdO1xuICAgICAgICB0aGlzLmRhdGFTdWJqZWN0Lm5leHQoZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlc2V0IGRpcnR5IGFuZCBzYXZpbmcgc3RhdGVcbiAgICAgIC8vIChGaXggT2JzQmlvIGlzc3VlIG9uIHNhbXBsZXMgdGFibGUgOiBzdGlsbCBkaXJ0eSBhZnRlciBzZXR0aW5nIHRoZSBzYW1lIHZhbHVlIGFnYWluKVxuICAgICAgdGhpcy5tYXJrQXNTYXZlZCgpO1xuICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgIH1cbiAgICAvLyBJZiBzZXJ2aWNlIG5vdCBzdGFydGVkIHlldCwgdGhlbiBzdGFydCBpdCwgdXNpbmcgZ2l2ZW4gZGF0YVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5zdGFydChkYXRhKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkQWxsKFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIHNpemU6IG51bWJlcixcbiAgICBzb3J0Qnk/OiBzdHJpbmcsXG4gICAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sXG4gICAgZmlsdGVyPzogRixcbiAgICBvcHRzPzogRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnMgJiB7dXBkYXRlSGlkZGVuRGF0YT86IGJvb2xlYW59XG4gICk6IFByb21pc2U8TG9hZFJlc3VsdDxUPj4ge1xuXG4gICAgb2Zmc2V0ID0gb2Zmc2V0ID49IDAgPyBvZmZzZXQgOiAwO1xuICAgIHNpemUgPSBzaXplID49IDAgPyBzaXplIDogLTE7XG5cbiAgICBjb25zdCBvcmlnaW5hbERhdGEgPSB0aGlzLmRhdGFTdWJqZWN0LnZhbHVlO1xuICAgIGlmIChpc05pbChvcmlnaW5hbERhdGEpKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1ttZW1vcnktZGF0YS1zZXJ2aWNlXSBDYW5ub3QgbG9hZCBhbGw6IG5vIHZhbHVlIHNldC4gV2lsbCByZXR1cm4gZW1wdHkgcmVzdWx0Jyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFdhaXQgc2VydmljZSBpcyByZWFkeVxuICAgICAgYXdhaXQgdGhpcy5yZWFkeSgpO1xuXG4gICAgICAvLyBXYWl0IHdoaWxlIGJ1c3kgKGUuZy4gd2hlbiBzYXZpbmcsIG9yIGRlbGV0aW5nKVxuICAgICAgYXdhaXQgdGhpcy53YWl0SWRsZSh7c3RvcEVycm9yOiBmYWxzZSAvKmF2b2lkIGVycm9yIHdoZW4gc3RvcHBlZCovfSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIFNob3VsZCBiZSBhIHN0b3AgZXJyb3I6IGxvZyBhbmQgY29udGludWVcbiAgICAgIGlmICghdGhpcy5zdG9wcGVkKSBjb25zb2xlLmVycm9yKCdVbmV4cGVjdGVkIGVycm9yLCB3aGlsZSB3YWl0aW5nIDonLCBlcnIpO1xuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSBzZXJ2aWNlIGlzIG5vdCBzdG9wcGVkXG4gICAgaWYgKHRoaXMuc3RvcHBlZCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGV4Y2x1ZGVkRGF0YUJ5RmlsdGVyOiBUW10gPSBbXTtcbiAgICBsZXQgZXhjbHVkZWREYXRhQnlQYWdpbmF0aW9uOiBUW107XG5cbiAgICB0cnkge1xuICAgICAgaWYgKGlzRW1wdHlBcnJheShvcmlnaW5hbERhdGEpKSB7XG4gICAgICAgIHJldHVybiB7ZGF0YTogW10sIHRvdGFsOiAwfTtcbiAgICAgIH1cblxuICAgICAgLy8gQXBwbHkgc29ydFxuICAgICAgbGV0IGRhdGEgPSB0aGlzLl9zb3J0Rm4ob3JpZ2luYWxEYXRhLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pIDtcblxuICAgICAgaWYgKHRoaXMuX29uTG9hZCkge1xuICAgICAgICBkYXRhID0gYXdhaXQgdGhpcy5fb25Mb2FkKGRhdGEpO1xuICAgICAgfVxuXG4gICAgICAvLyBBcHBseSBmaWx0ZXIgKHdpbGwgdXBkYXRlIGhpZGRlbkRhdGEpXG4gICAgICBkYXRhID0gdGhpcy5maWx0ZXIoZGF0YSwgZmlsdGVyLCBleGNsdWRlZERhdGFCeUZpbHRlcik7XG5cbiAgICAgIC8vIENvbXB1dGUgdGhlIHRvdGFsIGxlbmd0aFxuICAgICAgY29uc3QgdG90YWwgPSBkYXRhLmxlbmd0aDtcblxuICAgICAgLy8gSWYgcGFnZSBzaXplPTAgKGUuZy4gb25seSBuZWVkIHRvdGFsKVxuICAgICAgaWYgKHNpemUgPT09IDApIHtcbiAgICAgICAgZXhjbHVkZWREYXRhQnlQYWdpbmF0aW9uID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIHtkYXRhOiBbXSwgdG90YWx9O1xuICAgICAgfVxuXG4gICAgICAvLyBTbGljZSBpbiBhIHBhZ2UgKHVzaW5nIG9mZnNldCBhbmQgc2l6ZSlcbiAgICAgIGlmIChvZmZzZXQgPiAwKSB7XG5cbiAgICAgICAgLy8gT2Zmc2V0IGFmdGVyIHRoZSBlbmQ6IG5vIHJlc3VsdFxuICAgICAgICBpZiAob2Zmc2V0ID49IGRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgZXhjbHVkZWREYXRhQnlQYWdpbmF0aW9uID0gZGF0YTtcbiAgICAgICAgICBkYXRhID0gW107XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZXhjbHVkZWREYXRhQnlQYWdpbmF0aW9uID0gKHNpemUgPiAwICYmICgob2Zmc2V0ICsgc2l6ZSkgPCBkYXRhLmxlbmd0aCkpXG4gICAgICAgICAgICAvLyBTbGljZSB1c2luZyBsaW1pdCB0byBzaXplXG4gICAgICAgICAgICA/IGRhdGEuc2xpY2UoMCwgb2Zmc2V0KS5jb25jYXQoZGF0YS5zbGljZShvZmZzZXQgKyBzaXplKSlcbiAgICAgICAgICAgIC8vIFNsaWNlIHdpdGhvdXQgbGltaXRcbiAgICAgICAgICAgIDogZGF0YS5zbGljZSgwLCBvZmZzZXQpO1xuXG4gICAgICAgICAgZGF0YSA9IChzaXplID4gMCAmJiAoKG9mZnNldCArIHNpemUpIDwgZGF0YS5sZW5ndGgpKVxuICAgICAgICAgICAgLy8gU2xpY2UgdXNpbmcgbGltaXQgdG8gc2l6ZVxuICAgICAgICAgICAgPyBkYXRhLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc2l6ZSlcbiAgICAgICAgICAgIC8vIFNsaWNlIHdpdGhvdXQgbGltaXRcbiAgICAgICAgICAgIDogZGF0YS5zbGljZShvZmZzZXQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IGEgbGltaXRcbiAgICAgIGVsc2UgaWYgKHNpemUgPiAwKXtcbiAgICAgICAgZXhjbHVkZWREYXRhQnlQYWdpbmF0aW9uID0gZGF0YS5zbGljZShzaXplKTtcbiAgICAgICAgZGF0YSA9IGRhdGEuc2xpY2UoMCwgc2l6ZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIE5vIGxpbWl0OlxuICAgICAgZWxzZSBpZiAoc2l6ZSA9PT0gLTEpe1xuICAgICAgICAvLyBLZWVwIGFsbCBkYXRhXG4gICAgICB9XG5cbiAgICAgIC8vIC8hXFwgSWYgYWxyZWFkeSBvYnNlcnZlZCwgdGhlbiBhbHdheXMgY3JlYXRlIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgYXJyYXlcbiAgICAgIC8vIEJlY2F1c2UgZGF0YXNvdXJjZSB3aWxsIG9ubHkgdXBkYXRlIGlmIHRoZSBhcnJheSBjaGFuZ2VkXG4gICAgICBpZiAoZGF0YSA9PT0gb3JpZ2luYWxEYXRhKSB7XG4gICAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlczogTG9hZFJlc3VsdDxUPiA9IHtkYXRhLCB0b3RhbH07XG5cbiAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSBzaXplID4gMCA/IChvZmZzZXQgfHwgMCkgKyBzaXplIDogdG90YWw7XG4gICAgICBpZiAobmV4dE9mZnNldCA8IHRvdGFsKSB7XG4gICAgICAgIHJlcy5mZXRjaE1vcmUgPSAoKSA9PiB0aGlzLmxvYWRBbGwobmV4dE9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsIHsuLi5vcHRzLCB1cGRhdGVIaWRkZW5EYXRhOiBmYWxzZX0pXG4gICAgICAgICAgLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBoaWRkZW4gZGF0YSAocmVtb3ZlIG5ldyBmZXRjaGVkIGl0ZW0pXG4gICAgICAgICAgICBpZiAocmVzLmRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLl9oaWRkZW5EYXRhID0gdGhpcy5faGlkZGVuRGF0YT8uZmlsdGVyKGl0ZW0gPT4gIXJlcy5kYXRhLmluY2x1ZGVzKGl0ZW0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgLy8gUmVtZW1iZXIgaGlkZGVuIGRhdGFcbiAgICAgIGlmIChvcHRzPy51cGRhdGVIaWRkZW5EYXRhICE9PSBmYWxzZSkge1xuICAgICAgICB0aGlzLl9oaWRkZW5EYXRhID0gIWV4Y2x1ZGVkRGF0YUJ5UGFnaW5hdGlvbiA/IGV4Y2x1ZGVkRGF0YUJ5RmlsdGVyIDogZXhjbHVkZWREYXRhQnlGaWx0ZXIuY29uY2F0KC4uLmV4Y2x1ZGVkRGF0YUJ5UGFnaW5hdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgd2F0Y2hBbGwoXG4gICAgb2Zmc2V0OiBudW1iZXIsXG4gICAgc2l6ZTogbnVtYmVyLFxuICAgIHNvcnRCeT86IHN0cmluZyxcbiAgICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbixcbiAgICBmaWx0ZXJEYXRhPzogRixcbiAgICBvcHRpb25zPzogYW55XG4gICk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxUPj4ge1xuXG4gICAgb2Zmc2V0ID0gb2Zmc2V0ID49IDAgPyBvZmZzZXQgOiAwO1xuICAgIHNpemUgPSBzaXplID49IDAgPyBzaXplIDogLTE7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhU3ViamVjdFxuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIFdhcm4gaWYgd2FpdGluZyB2YWx1ZSB0byBiZSBzZXRcbiAgICAgICAgdGFwKChkYXRhKSA9PiB0aGlzLmRlYnVnICYmICFkYXRhICYmIGNvbnNvbGUuZGVidWcoJ1ttZW1vcnktZGF0YS1zZXJ2aWNlXSBXYWl0aW5nIHZhbHVlIHRvIGJlIHNldC4uLicpKSxcbiAgICAgICAgZmlsdGVyKGlzTm90TmlsKSxcbiAgICAgICAgbWVyZ2VNYXAoXyA9PiB0aGlzLmxvYWRBbGwob2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24sIGZpbHRlckRhdGEsIG9wdGlvbnMpKSxcbiAgICAgICAgZmlsdGVyKGlzTm90TmlsKSwgLy8gU2tpcCBubyByZXN1bHQgKGUuZy4gd2hlbiBzdG9wcGVkKVxuICAgICAgICB0YWtlVW50aWwodGhpcy5zdG9wU3ViamVjdClcbiAgICAgICk7XG4gIH1cblxuICBhc3luYyBzYXZlQWxsKGRhdGE6IFRbXSwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8VFtdPiB7XG4gICAgaWYgKCF0aGlzLmRhdGFTdWJqZWN0LnZhbHVlKSB0aHJvdyBuZXcgRXJyb3IoJ1ttZW1vcnktc2VydmljZV0gQ291bGQgbm90IHNhdmUsIGJlY2F1c2UgdmFsdWUgbm90IHNldCcpO1xuXG4gICAgdGhpcy5tYXJrQXNTYXZpbmcoKTtcblxuICAgIHRyeSB7XG5cbiAgICAgIC8vIFJlc3RvcmUgaGlkZGVuIGRhdGFcbiAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkodGhpcy5faGlkZGVuRGF0YSkpXG4gICAgICAgIGRhdGEgPSBkYXRhLmNvbmNhdCguLi50aGlzLl9oaWRkZW5EYXRhKTtcblxuICAgICAgaWYgKHRoaXMuX29uU2F2ZUZuKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuX29uU2F2ZUZuKGRhdGEpO1xuICAgICAgICBkYXRhID0gKChyZXMgaW5zdGFuY2VvZiBQcm9taXNlKSkgPyBhd2FpdCByZXMgOiByZXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGF0YVN1YmplY3QubmV4dChkYXRhKTtcbiAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMubWFya0FzU2F2ZWQoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGVBbGwoZGF0YVRvUmVtb3ZlOiBUW10sIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGxldCBkYXRhID0gdGhpcy5kYXRhU3ViamVjdC52YWx1ZTtcbiAgICBpZiAoIWRhdGEpIHRocm93IG5ldyBFcnJvcignW21lbW9yeS1zZXJ2aWNlXSBDb3VsZCBub3QgZGVsZXRlLCBiZWNhdXNlIHZhbHVlIG5vdCBzZXQnKTtcblxuICAgIHRoaXMubWFya0FzU2F2aW5nKCk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gUmVtb3ZlIGRlbGV0ZWQgaXRlbSwgZnJvbSBkYXRhXG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IGRhdGEuZmlsdGVyKGVudGl0eSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbW92ZWQgPSBkYXRhVG9SZW1vdmUuZmluZEluZGV4KGVudGl0eVRvUmVtb3ZlID0+IHRoaXMuZXF1YWxzKGVudGl0eVRvUmVtb3ZlLCBlbnRpdHkpKSAhPT0gLTE7XG4gICAgICAgIHJldHVybiAhcmVtb3ZlZDtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZGVsZXRlQ291bnQgPSBkYXRhLmxlbmd0aCAtIHVwZGF0ZWREYXRhLmxlbmd0aDtcbiAgICAgIGlmIChkZWxldGVDb3VudCA+IDApIHtcbiAgICAgICAgZGF0YSA9IHVwZGF0ZWREYXRhO1xuICAgICAgICB0aGlzLmRhdGFTdWJqZWN0Lm5leHQoZGF0YSk7XG4gICAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLm1hcmtBc1NhdmVkKCk7XG4gICAgfVxuICB9XG5cbiAgc29ydChkYXRhOiBUW10sIHNvcnRCeT86IHN0cmluZywgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24pOiBUW10ge1xuICAgIC8vIE1ha2Ugc3VyZSB0byBmaWxsIHNvcnRCeSBCRUZPUkUgY2hlY2tpbmcgaW4gdGhlIHJlcGxhY2VtZW50IG1hcFxuICAgIHNvcnRCeSA9IHNvcnRCeSB8fCAnaWQnO1xuICAgIC8vIFJlcGxhY2Ugc29ydEJ5LCB1c2luZyB0aGUgcmVwbGFjZW1lbnQgbWFwXG4gICAgc29ydEJ5ID0gdGhpcy5zb3J0QnlSZXBsYWNlbWVudFtzb3J0QnldIHx8IHNvcnRCeTtcblxuICAgIC8vIEV4ZWN1dGUgdGhlIHNvcnRcbiAgICByZXR1cm4gRW50aXR5VXRpbHMuc29ydChkYXRhLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pO1xuICB9XG5cbiAgYXNGaWx0ZXIoc291cmNlOiBQYXJ0aWFsPEY+KTogRiB7XG4gICAgcmV0dXJuIEVudGl0eUZpbHRlclV0aWxzLmZyb21PYmplY3Qoc291cmNlLCB0aGlzLmZpbHRlclR5cGUpO1xuICB9XG5cbiAgYWRkU29ydEJ5UmVwbGFjZW1lbnQoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5zb3J0QnlSZXBsYWNlbWVudFtzb3VyY2VdID0gdGFyZ2V0O1xuICB9XG5cbiAgZXF1YWxzKGQxOiBULCBkMjogVCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9lcXVhbHNGbikgcmV0dXJuIHRoaXMuX2VxdWFsc0ZuKGQxLCBkMik7XG4gICAgcmV0dXJuIGQxICYmIGQxLmVxdWFscyA/IGQxLmVxdWFscyhkMikgOiBFbnRpdHlVdGlscy5lcXVhbHMoZDEsIGQyLCAnaWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudCBkYXRhIHN0b3JlZCBieSB0aGUgc2VydmljZSAod2l0aG91dCBoaWRkZW4gZGF0YSkuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICAvLyBnZXQgdmlzaWJsZUNvdW50KCk6IG51bWJlciB7XG4gIC8vICAgcmV0dXJuICh0aGlzLmRhdGFTdWJqZWN0LnZhbHVlPy5sZW5ndGggfHwgMCk7XG4gIC8vIH1cblxuICAvKipcbiAgICogQ291bnQgZGF0YSBzdG9yZWQgYnkgdGhlIHNlcnZpY2UgKHdpdGhvdXQgaGlkZGVuIGRhdGEpLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0c1xuICAgKiBAZGVwcmVjYXRlZCBUT0RPIFBsZWFzZSByZW5hbWUgdGhpcyBnZXR0ZXIgaW50byB2aXNpYmxlQ291bnQgKGFuZCBjcmVhdGUgY291bnQgPSBoaWRkZW5Db3VudCArIHZpc2libGVDb3VudClcbiAgICovXG4gIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5kYXRhU3ViamVjdC52YWx1ZT8ubGVuZ3RoIHx8IDApO1xuICB9XG5cbiAgZ2V0IGhpZGRlbkNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGRlbkRhdGE/Lmxlbmd0aCB8fCAwO1xuICB9XG5cbiAgYXN5bmMgd2FpdElkbGUob3B0cz86IFdhaXRGb3JPcHRpb25zKSB7XG4gICAgYXdhaXQgdGhpcy53YWl0V2hpbGVTYXZpbmcob3B0cyk7XG4gIH1cblxuICBtYXJrQXNEaXJ0eSgpIHtcbiAgICBpZiAoIXRoaXMuZGlydHlTdWJqZWN0LnZhbHVlKSB7XG4gICAgICB0aGlzLmRpcnR5U3ViamVjdC5uZXh0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIG1hcmtBc1ByaXN0aW5lKCkge1xuICAgIGlmICh0aGlzLmRpcnR5U3ViamVjdC52YWx1ZSkge1xuICAgICAgdGhpcy5kaXJ0eVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuICBwcm90ZWN0ZWQgZmlsdGVyKGRhdGE6IFRbXSwgX2ZpbHRlcjogRiwgaGlkZGVuRGF0YTogVFtdKTogVFtdIHtcblxuICAgIC8vIGlmIGZpbHRlciBpcyBEYXRhRmlsdGVyIGluc3RhbmNlLCB1c2UgaXRzIHRlc3QgZnVuY3Rpb25cbiAgICBjb25zdCBmaWx0ZXJGbiA9IHRoaXMuX2ZpbHRlckZuRmFjdG9yeSAmJiB0aGlzLl9maWx0ZXJGbkZhY3RvcnkoX2ZpbHRlcik7XG4gICAgaWYgKGZpbHRlckZuKSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZERhdGEgPSBbXTtcblxuICAgICAgZGF0YS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKGZpbHRlckZuKHZhbHVlKSlcbiAgICAgICAgICBmaWx0ZXJlZERhdGEucHVzaCh2YWx1ZSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBoaWRkZW5EYXRhLnB1c2godmFsdWUpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBmaWx0ZXJlZERhdGE7XG4gICAgfVxuXG4gICAgLy8gZGVmYXVsdCwgbm8gZmlsdGVyXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29ubmVjdCgpOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU3ViamVjdC5waXBlKFxuICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgIGRhdGEgPSBkYXRhIHx8IFtdO1xuICAgICAgICBjb25zdCB0b3RhbCA9IGRhdGEubGVuZ3RoO1xuICAgICAgICByZXR1cm4ge2RhdGEsIHRvdGFsfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyB3YWl0V2hpbGVTYXZpbmcob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuc2F2aW5nKSAge1xuICAgICAgcmV0dXJuIGZpcnN0RmFsc2VQcm9taXNlKHRoaXMuc2F2aW5nU3ViamVjdCwge1xuICAgICAgICBzdG9wOiBvcHRzPy5zdG9wIHx8IG1lcmdlKHRoaXMuc3RvcFN1YmplY3QsIHRoaXMuZGF0YVN1YmplY3QpLCAvLyBTdG9wIGlmIGRlc3Ryb3llZCBvciBuZXcgZGF0YSBSZWNlaXZlZFxuICAgICAgICBzdG9wRXJyb3I6IGZhbHNlLCAvLyBBdm9pZCBlcnJvciB3aGVuIHN0b3BwZWRcbiAgICAgICAgLi4ub3B0c1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtBc1NhdmluZygpIHtcbiAgICBpZiAoIXRoaXMuc2F2aW5nU3ViamVjdC52YWx1ZSkge1xuICAgICAgdGhpcy5zYXZpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtBc1NhdmVkKCkge1xuICAgIGlmICh0aGlzLnNhdmluZ1N1YmplY3QudmFsdWUpIHtcbiAgICAgIHRoaXMuc2F2aW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuXG59XG4iXX0=
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { EventEmitter, Injectable, InjectionToken } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export const APP_PROGRESS_BAR_SERVICE = new InjectionToken('ProgressBarService');
|
|
4
|
-
export class ProgressBarService {
|
|
5
|
-
constructor() {
|
|
6
|
-
this._requestsRunning = 0;
|
|
7
|
-
this.onProgressChanged = new EventEmitter();
|
|
8
|
-
}
|
|
9
|
-
list() {
|
|
10
|
-
return this._requestsRunning;
|
|
11
|
-
}
|
|
12
|
-
increase() {
|
|
13
|
-
this._requestsRunning++;
|
|
14
|
-
if (this._requestsRunning === 1) {
|
|
15
|
-
this.onProgressChanged.emit('query');
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
decrease() {
|
|
19
|
-
if (this._requestsRunning > 0) {
|
|
20
|
-
this._requestsRunning--;
|
|
21
|
-
}
|
|
22
|
-
if (this._requestsRunning === 0) {
|
|
23
|
-
this.onProgressChanged.emit(null);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
ProgressBarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ProgressBarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28
|
-
ProgressBarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ProgressBarService, providedIn: 'root' });
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ProgressBarService, decorators: [{
|
|
30
|
-
type: Injectable,
|
|
31
|
-
args: [{ providedIn: 'root' }]
|
|
32
|
-
}] });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtYmFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcy9wcm9ncmVzcy1iYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR3pFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUFzQixvQkFBb0IsQ0FBQyxDQUFDO0FBWXRHLE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFVSxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFFN0Isc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7S0F1QnpEO0lBckJDLElBQUk7UUFDQSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLENBQUMsRUFBRTtZQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDM0I7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7OytHQXZCVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUROLE1BQU07MkZBQ2xCLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9ncmVzc0Jhck1vZGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuXG5leHBvcnQgY29uc3QgQVBQX1BST0dSRVNTX0JBUl9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElQcm9ncmVzc0JhclNlcnZpY2U+KCdQcm9ncmVzc0JhclNlcnZpY2UnKTtcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBQcm9ncmVzc01vZGUgPSBQcm9ncmVzc0Jhck1vZGU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVByb2dyZXNzQmFyU2VydmljZSB7XG4gIG9uUHJvZ3Jlc3NDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8UHJvZ3Jlc3NCYXJNb2RlPjtcbiAgbGlzdCgpOiBudW1iZXI7XG4gIGluY3JlYXNlKCk7XG4gIGRlY3JlYXNlKCk7XG59XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFByb2dyZXNzQmFyU2VydmljZSBpbXBsZW1lbnRzIElQcm9ncmVzc0JhclNlcnZpY2Uge1xuICBwcml2YXRlIF9yZXF1ZXN0c1J1bm5pbmcgPSAwO1xuXG4gIG9uUHJvZ3Jlc3NDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxQcm9ncmVzc0Jhck1vZGU+KCk7XG5cbiAgbGlzdCgpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RzUnVubmluZztcbiAgfVxuXG4gIGluY3JlYXNlKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlcXVlc3RzUnVubmluZysrO1xuICAgIGlmICh0aGlzLl9yZXF1ZXN0c1J1bm5pbmcgPT09IDEpIHtcbiAgICAgICAgdGhpcy5vblByb2dyZXNzQ2hhbmdlZC5lbWl0KCdxdWVyeScpO1xuICAgIH1cbiAgfVxuXG4gIGRlY3JlYXNlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZXF1ZXN0c1J1bm5pbmcgPiAwKSB7XG4gICAgICAgIHRoaXMuX3JlcXVlc3RzUnVubmluZy0tO1xuICAgIH1cbiAgICBpZiAodGhpcy5fcmVxdWVzdHNSdW5uaW5nID09PSAwKSB7XG4gICAgICB0aGlzLm9uUHJvZ3Jlc3NDaGFuZ2VkLmVtaXQobnVsbCk7XG4gICAgfVxuICB9XG5cblxufVxuIl19
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { __decorate, __param } from "tslib";
|
|
2
|
-
import { Optional } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject, firstValueFrom, Subject, Subscription } from 'rxjs';
|
|
4
|
-
import { filter, takeUntil } from 'rxjs/operators';
|
|
5
|
-
/**
|
|
6
|
-
* Same as StartableService, but with a dataSubject instead of a simple 'data' property
|
|
7
|
-
*/
|
|
8
|
-
let StartableObservableService = class StartableObservableService {
|
|
9
|
-
constructor(prerequisiteService) {
|
|
10
|
-
this.dataSubject = new BehaviorSubject(null);
|
|
11
|
-
this.startSubject = new Subject();
|
|
12
|
-
this.stopSubject = new Subject();
|
|
13
|
-
this._debug = false;
|
|
14
|
-
this._startByReadyFunction = true; // should start when calling ready() ?
|
|
15
|
-
this._started = false;
|
|
16
|
-
this._startPromise = null;
|
|
17
|
-
this._startPrerequisite = null;
|
|
18
|
-
this._subscription = null;
|
|
19
|
-
this._startPrerequisite = prerequisiteService
|
|
20
|
-
? () => prerequisiteService.ready()
|
|
21
|
-
: () => Promise.resolve();
|
|
22
|
-
}
|
|
23
|
-
start(opts) {
|
|
24
|
-
if (this._startPromise)
|
|
25
|
-
return this._startPromise;
|
|
26
|
-
if (this._started)
|
|
27
|
-
return Promise.resolve(this.dataSubject.value);
|
|
28
|
-
this._startPromise = this._startPrerequisite()
|
|
29
|
-
.then(() => this.ngOnStart(opts))
|
|
30
|
-
.then(data => {
|
|
31
|
-
this._started = true;
|
|
32
|
-
this._startPromise = undefined;
|
|
33
|
-
// Should be done AFTER 'this._started = true', because of the 'filter' operator, inside ready() function
|
|
34
|
-
this.dataSubject.next(data);
|
|
35
|
-
this.startSubject.next(data);
|
|
36
|
-
return data;
|
|
37
|
-
})
|
|
38
|
-
.catch(err => {
|
|
39
|
-
if (!this.stopped) {
|
|
40
|
-
console.error('Failed to start a service: ' + (err && err.message || err), err);
|
|
41
|
-
this._started = false;
|
|
42
|
-
this._startPromise = null;
|
|
43
|
-
}
|
|
44
|
-
return null;
|
|
45
|
-
});
|
|
46
|
-
return this._startPromise;
|
|
47
|
-
}
|
|
48
|
-
ready() {
|
|
49
|
-
if (this._started)
|
|
50
|
-
return Promise.resolve(this.dataSubject.value);
|
|
51
|
-
if (this._startPromise)
|
|
52
|
-
return this._startPromise;
|
|
53
|
-
if (this._startByReadyFunction)
|
|
54
|
-
return this.start();
|
|
55
|
-
return firstValueFrom(this.dataSubject
|
|
56
|
-
.pipe(takeUntil(this.stopSubject),
|
|
57
|
-
// Wait start() to be called, to exclude the initial 'null' value
|
|
58
|
-
filter(_ => this._started)));
|
|
59
|
-
}
|
|
60
|
-
async stop() {
|
|
61
|
-
try {
|
|
62
|
-
this.unsubscribe();
|
|
63
|
-
await this.ngOnStop();
|
|
64
|
-
}
|
|
65
|
-
catch (err) {
|
|
66
|
-
console.error('Failed to stop a service: ' + (err && err.message || err), err);
|
|
67
|
-
}
|
|
68
|
-
finally {
|
|
69
|
-
this._started = false;
|
|
70
|
-
this._startPromise = undefined;
|
|
71
|
-
this.stopSubject.next(); // Stop all running observables
|
|
72
|
-
this.dataSubject.next(null); // Reset data
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
async restart(opts) {
|
|
76
|
-
if (this._startPromise)
|
|
77
|
-
await this._startPromise; // Wait end of previous loading
|
|
78
|
-
if (this._started)
|
|
79
|
-
await this.stop(); // Then stop if started
|
|
80
|
-
return this.start(opts); // Then start again
|
|
81
|
-
}
|
|
82
|
-
get started() {
|
|
83
|
-
return this._started;
|
|
84
|
-
}
|
|
85
|
-
get starting() {
|
|
86
|
-
return !!this._startPromise;
|
|
87
|
-
}
|
|
88
|
-
get stopped() {
|
|
89
|
-
return !this._started && !this._startPromise;
|
|
90
|
-
}
|
|
91
|
-
get data() {
|
|
92
|
-
return this.dataSubject.value;
|
|
93
|
-
}
|
|
94
|
-
set data(value) {
|
|
95
|
-
if (this.dataSubject.value !== value) {
|
|
96
|
-
this.dataSubject.next(value);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
registerSubscription(sub) {
|
|
100
|
-
this._subscription = this._subscription || new Subscription();
|
|
101
|
-
this._subscription.add(sub);
|
|
102
|
-
}
|
|
103
|
-
unregisterSubscription(sub) {
|
|
104
|
-
this._subscription?.remove(sub);
|
|
105
|
-
}
|
|
106
|
-
unsubscribe() {
|
|
107
|
-
this._subscription?.unsubscribe();
|
|
108
|
-
this._subscription = null;
|
|
109
|
-
}
|
|
110
|
-
ngOnStop() {
|
|
111
|
-
// Can be overwritten by subclasses
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
StartableObservableService = __decorate([
|
|
115
|
-
__param(0, Optional())
|
|
116
|
-
], StartableObservableService);
|
|
117
|
-
export { StartableObservableService };
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRhYmxlLW9ic2VydmFibGUtc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1vYnNlcnZhYmxlLXNlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25EOztHQUVHO0FBQ0ksSUFBZSwwQkFBMEIsR0FBekMsTUFBZSwwQkFBMEI7SUFjOUMsWUFDYyxtQkFBbUQ7UUFieEQsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFLLENBQUM7UUFDaEMsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWpDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZiwwQkFBcUIsR0FBRyxJQUFJLENBQUMsQ0FBQyxzQ0FBc0M7UUFFdEUsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixrQkFBYSxHQUFlLElBQUksQ0FBQztRQUNqQyx1QkFBa0IsR0FBdUIsSUFBSSxDQUFDO1FBQzlDLGtCQUFhLEdBQWlCLElBQUksQ0FBQztRQUt6QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsbUJBQW1CO1lBQzNDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUU7WUFDbkMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVE7UUFDWixJ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LENBQUE7QUEvSHFCLDBCQUEwQjtJQWUzQyxXQUFBLFFBQVEsRUFBRSxDQUFBO0dBZk8sMEJBQTBCLENBK0gvQztTQS9IcUIsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3RWYWx1ZUZyb20sIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJU3RhcnRhYmxlU2VydmljZSB9IGZyb20gJy4vc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuXG4vKipcbiAqIFNhbWUgYXMgU3RhcnRhYmxlU2VydmljZSwgYnV0IHdpdGggYSBkYXRhU3ViamVjdCBpbnN0ZWFkIG9mIGEgc2ltcGxlICdkYXRhJyBwcm9wZXJ0eVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RhcnRhYmxlT2JzZXJ2YWJsZVNlcnZpY2U8VCA9IGFueSwgTyA9IGFueT4gaW1wbGVtZW50cyBJU3RhcnRhYmxlU2VydmljZTxUPiB7XG5cbiAgcmVhZG9ubHkgZGF0YVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFQ+KG51bGwpO1xuICByZWFkb25seSBzdGFydFN1YmplY3QgPSBuZXcgU3ViamVjdDxUPigpO1xuICByZWFkb25seSBzdG9wU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJvdGVjdGVkIF9kZWJ1ZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX3N0YXJ0QnlSZWFkeUZ1bmN0aW9uID0gdHJ1ZTsgLy8gc2hvdWxkIHN0YXJ0IHdoZW4gY2FsbGluZyByZWFkeSgpID9cblxuICBwcml2YXRlIF9zdGFydGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX3N0YXJ0UHJvbWlzZTogUHJvbWlzZTxUPiA9IG51bGw7XG4gIHByaXZhdGUgX3N0YXJ0UHJlcmVxdWlzaXRlOiAoKSA9PiBQcm9taXNlPGFueT4gPSBudWxsO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHByZXJlcXVpc2l0ZVNlcnZpY2U/OiB7IHJlYWR5OiAoKSA9PiBQcm9taXNlPGFueT4gfVxuICApIHtcbiAgICB0aGlzLl9zdGFydFByZXJlcXVpc2l0ZSA9IHByZXJlcXVpc2l0ZVNlcnZpY2VcbiAgICAgID8gKCkgPT4gcHJlcmVxdWlzaXRlU2VydmljZS5yZWFkeSgpXG4gICAgICA6ICgpID0+IFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgc3RhcnQob3B0cz86IE8pOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodGhpcy5fc3RhcnRQcm9taXNlKSByZXR1cm4gdGhpcy5fc3RhcnRQcm9taXNlO1xuICAgIGlmICh0aGlzLl9zdGFydGVkKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuZGF0YVN1YmplY3QudmFsdWUpO1xuXG4gICAgdGhpcy5fc3RhcnRQcm9taXNlID0gdGhpcy5fc3RhcnRQcmVyZXF1aXNpdGUoKVxuICAgICAgLnRoZW4oKCkgPT4gdGhpcy5uZ09uU3RhcnQob3B0cykpXG4gICAgICAudGhlbihkYXRhID0+IHtcblxuICAgICAgICB0aGlzLl9zdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fc3RhcnRQcm9taXNlID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIFNob3VsZCBiZSBkb25lIEFGVEVSICd0aGlzLl9zdGFydGVkID0gdHJ1ZScsIGJlY2F1c2Ugb2YgdGhlICdmaWx0ZXInIG9wZXJhdG9yLCBpbnNpZGUgcmVhZHkoKSBmdW5jdGlvblxuICAgICAgICB0aGlzLmRhdGFTdWJqZWN0Lm5leHQoZGF0YSk7XG4gICAgICAgIHRoaXMuc3RhcnRTdWJqZWN0Lm5leHQoZGF0YSk7XG5cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdG9wcGVkKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IGEgc2VydmljZTogJyArIChlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyKSwgZXJyKTtcbiAgICAgICAgICB0aGlzLl9zdGFydGVkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fc3RhcnRQcm9taXNlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgIHJldHVybiB0aGlzLl9zdGFydFByb21pc2U7XG4gIH1cblxuICByZWFkeSgpOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodGhpcy5fc3RhcnRlZCkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmRhdGFTdWJqZWN0LnZhbHVlKTtcbiAgICBpZiAodGhpcy5fc3RhcnRQcm9taXNlKSByZXR1cm4gdGhpcy5fc3RhcnRQcm9taXNlO1xuICAgIGlmICh0aGlzLl9zdGFydEJ5UmVhZHlGdW5jdGlvbikgcmV0dXJuIHRoaXMuc3RhcnQoKTtcblxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmRhdGFTdWJqZWN0XG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuc3RvcFN1YmplY3QpLFxuICAgICAgICAvLyBXYWl0IHN0YXJ0KCkgdG8gYmUgY2FsbGVkLCB0byBleGNsdWRlIHRoZSBpbml0aWFsICdudWxsJyB2YWx1ZVxuICAgICAgICBmaWx0ZXIoXyA9PiB0aGlzLl9zdGFydGVkKVxuICAgICAgKSk7XG4gIH1cblxuICBhc3luYyBzdG9wKCkge1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgIGF3YWl0IHRoaXMubmdPblN0b3AoKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHN0b3AgYSBzZXJ2aWNlOiAnICsgKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIpLCBlcnIpO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXJ0UHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RvcFN1YmplY3QubmV4dCgpOyAvLyBTdG9wIGFsbCBydW5uaW5nIG9ic2VydmFibGVzXG4gICAgICB0aGlzLmRhdGFTdWJqZWN0Lm5leHQobnVsbCk7IC8vIFJlc2V0IGRhdGFcbiAgICB9XG4gIH1cblxuICBhc3luYyByZXN0YXJ0KG9wdHM/OiBPKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHRoaXMuX3N0YXJ0UHJvbWlzZSkgYXdhaXQgdGhpcy5fc3RhcnRQcm9taXNlOyAvLyBXYWl0IGVuZCBvZiBwcmV2aW91cyBsb2FkaW5nXG4gICAgaWYgKHRoaXMuX3N0YXJ0ZWQpIGF3YWl0IHRoaXMuc3RvcCgpOyAvLyBUaGVuIHN0b3AgaWYgc3RhcnRlZFxuICAgIHJldHVybiB0aGlzLnN0YXJ0KG9wdHMpOyAvLyBUaGVuIHN0YXJ0IGFnYWluXG4gIH1cblxuICBnZXQgc3RhcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRlZDtcbiAgfVxuXG4gIGdldCBzdGFydGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9zdGFydFByb21pc2U7XG4gIH1cblxuICBnZXQgc3RvcHBlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX3N0YXJ0ZWQgJiYgIXRoaXMuX3N0YXJ0UHJvbWlzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZGF0YSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXQgZGF0YSh2YWx1ZTogVCkge1xuICAgIGlmICh0aGlzLmRhdGFTdWJqZWN0LnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5kYXRhU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVnaXN0ZXJTdWJzY3JpcHRpb24oc3ViOiBTdWJzY3JpcHRpb24pIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB0aGlzLl9zdWJzY3JpcHRpb24gfHwgbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoc3ViKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1bnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHN1YjogU3Vic2NyaXB0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uPy5yZW1vdmUoc3ViKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uU3RvcCgpOiBQcm9taXNlPHZvaWQ+IHwgdm9pZCB7XG4gICAgLy8gQ2FuIGJlIG92ZXJ3cml0dGVuIGJ5IHN1YmNsYXNzZXNcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBuZ09uU3RhcnQob3B0cz86IE8pOiBQcm9taXNlPFQ+O1xufVxuIl19
|