@sumaris-net/ngx-components 18.12.0 → 18.12.2
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/doc/changelog.md +3 -0
- package/esm2022/public_api.mjs +380 -0
- package/esm2022/src/app/admin/admin-routing.module.mjs +34 -0
- package/esm2022/src/app/admin/admin.module.mjs +32 -0
- package/esm2022/src/app/admin/services/filter/person.filter.mjs +76 -0
- package/esm2022/src/app/admin/services/person.service.mjs +184 -0
- package/esm2022/src/app/admin/services/validator/person.validator.mjs +72 -0
- package/esm2022/src/app/admin/users/users.mjs +379 -0
- package/esm2022/src/app/admin/users/users.module.mjs +56 -0
- package/esm2022/src/app/core/about/about.modal.mjs +86 -0
- package/esm2022/src/app/core/about/about.module.mjs +22 -0
- package/esm2022/src/app/core/account/account.module.mjs +75 -0
- package/esm2022/src/app/core/account/account.page.mjs +364 -0
- package/esm2022/src/app/core/account/new-token.form.mjs +106 -0
- package/esm2022/src/app/core/account/new-token.modal.mjs +66 -0
- package/esm2022/src/app/core/account/password/change-password.form.mjs +63 -0
- package/esm2022/src/app/core/account/password/change-password.module.mjs +22 -0
- package/esm2022/src/app/core/account/password/change-password.page.mjs +150 -0
- package/esm2022/src/app/core/account/token.table.mjs +157 -0
- package/esm2022/src/app/core/auth/auth.form.mjs +159 -0
- package/esm2022/src/app/core/auth/auth.modal.mjs +76 -0
- package/esm2022/src/app/core/auth/auth.module.mjs +56 -0
- package/esm2022/src/app/core/auth/reset-password.modal.mjs +89 -0
- package/esm2022/src/app/core/core.module.mjs +151 -0
- package/esm2022/src/app/core/core.testing.module.mjs +107 -0
- package/esm2022/src/app/core/form/array/form-array.mjs +328 -0
- package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +23 -0
- package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +94 -0
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +108 -0
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +31 -0
- package/esm2022/src/app/core/form/entity/editor.class.mjs +268 -0
- package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +420 -0
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +741 -0
- package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +24 -0
- package/esm2022/src/app/core/form/entity/entity.module.mjs +32 -0
- package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +190 -0
- package/esm2022/src/app/core/form/form-container.class.mjs +340 -0
- package/esm2022/src/app/core/form/form.class.mjs +337 -0
- package/esm2022/src/app/core/form/form.module.mjs +70 -0
- package/esm2022/src/app/core/form/form.utils.mjs +205 -0
- package/esm2022/src/app/core/form/list/list.form.mjs +235 -0
- package/esm2022/src/app/core/form/list/list.module.mjs +31 -0
- package/esm2022/src/app/core/form/properties/properties.form.mjs +317 -0
- package/esm2022/src/app/core/form/properties/properties.module.mjs +37 -0
- package/esm2022/src/app/core/form/properties/properties.table.mjs +264 -0
- package/esm2022/src/app/core/form/properties/properties.utils.mjs +304 -0
- package/esm2022/src/app/core/form/properties/property.validator.mjs +70 -0
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +104 -0
- package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +23 -0
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +73 -0
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +30 -0
- package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +161 -0
- package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +31 -0
- package/esm2022/src/app/core/form/username/username.form.mjs +55 -0
- package/esm2022/src/app/core/form/username/username.module.mjs +20 -0
- package/esm2022/src/app/core/graphql/graphql.module.mjs +14 -0
- package/esm2022/src/app/core/graphql/graphql.service.mjs +781 -0
- package/esm2022/src/app/core/graphql/graphql.utils.mjs +119 -0
- package/esm2022/src/app/core/home/home.mjs +382 -0
- package/esm2022/src/app/core/home/home.module.mjs +46 -0
- package/esm2022/src/app/core/icon/icon.component.mjs +40 -0
- package/esm2022/src/app/core/icon/icon.module.mjs +20 -0
- package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +394 -0
- package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +31 -0
- package/esm2022/src/app/core/menu/menu.component.mjs +258 -0
- package/esm2022/src/app/core/menu/menu.model.mjs +272 -0
- package/esm2022/src/app/core/menu/menu.module.mjs +47 -0
- package/esm2022/src/app/core/menu/menu.service.mjs +666 -0
- package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +109 -0
- package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +50 -0
- package/esm2022/src/app/core/menu/testing/menu.testing.mjs +158 -0
- package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +60 -0
- package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +28 -0
- package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +31 -0
- package/esm2022/src/app/core/peer/select-peer.modal.mjs +344 -0
- package/esm2022/src/app/core/peer/select-peer.module.mjs +36 -0
- package/esm2022/src/app/core/register/register-confirm.page.mjs +90 -0
- package/esm2022/src/app/core/register/register.form.mjs +194 -0
- package/esm2022/src/app/core/register/register.modal.mjs +55 -0
- package/esm2022/src/app/core/register/register.module.mjs +23 -0
- package/esm2022/src/app/core/services/account.service.mjs +1358 -0
- package/esm2022/src/app/core/services/auth-guard.service.mjs +74 -0
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +485 -0
- package/esm2022/src/app/core/services/base-graphql-service.class.mjs +230 -0
- package/esm2022/src/app/core/services/base58.mjs +83 -0
- package/esm2022/src/app/core/services/config/core.config.mjs +258 -0
- package/esm2022/src/app/core/services/config.service.mjs +384 -0
- package/esm2022/src/app/core/services/crypto.service.mjs +107 -0
- package/esm2022/src/app/core/services/errors.mjs +54 -0
- package/esm2022/src/app/core/services/local-settings.service.mjs +516 -0
- package/esm2022/src/app/core/services/model/account.model.mjs +178 -0
- package/esm2022/src/app/core/services/model/config.model.mjs +107 -0
- package/esm2022/src/app/core/services/model/department.model.mjs +35 -0
- package/esm2022/src/app/core/services/model/entity.decorators.mjs +97 -0
- package/esm2022/src/app/core/services/model/entity.model.mjs +338 -0
- package/esm2022/src/app/core/services/model/filter.model.mjs +93 -0
- package/esm2022/src/app/core/services/model/history.model.mjs +2 -0
- package/esm2022/src/app/core/services/model/model.enum.mjs +11 -0
- package/esm2022/src/app/core/services/model/node-feature.model.mjs +31 -0
- package/esm2022/src/app/core/services/model/peer.model.mjs +113 -0
- package/esm2022/src/app/core/services/model/person.model.mjs +114 -0
- package/esm2022/src/app/core/services/model/referential.model.mjs +205 -0
- package/esm2022/src/app/core/services/model/settings.model.mjs +6 -0
- package/esm2022/src/app/core/services/model/token.model.mjs +57 -0
- package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +195 -0
- package/esm2022/src/app/core/services/network.service.mjs +638 -0
- package/esm2022/src/app/core/services/network.types.mjs +2 -0
- package/esm2022/src/app/core/services/network.utils.mjs +35 -0
- package/esm2022/src/app/core/services/pipes/account.pipes.mjs +38 -0
- package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +23 -0
- package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +23 -0
- package/esm2022/src/app/core/services/pipes/pipes.module.mjs +54 -0
- package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +21 -0
- package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +37 -0
- package/esm2022/src/app/core/services/platform.service.mjs +627 -0
- package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +427 -0
- package/esm2022/src/app/core/services/storage/entity-store.class.mjs +450 -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 +57 -0
- package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +27 -0
- package/esm2022/src/app/core/services/validator/user-token.validator.mjs +55 -0
- package/esm2022/src/app/core/settings/settings.module.mjs +23 -0
- package/esm2022/src/app/core/settings/settings.page.mjs +403 -0
- package/esm2022/src/app/core/table/async-table.class.mjs +1811 -0
- package/esm2022/src/app/core/table/column/actions-column.component.mjs +130 -0
- package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +117 -0
- package/esm2022/src/app/core/table/column/row-field.component.mjs +116 -0
- package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +404 -0
- package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +405 -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 +1867 -0
- package/esm2022/src/app/core/table/table.model.mjs +21 -0
- package/esm2022/src/app/core/table/table.module.mjs +51 -0
- package/esm2022/src/app/core/table/table.pipes.mjs +77 -0
- package/esm2022/src/app/core/table/table.utils.mjs +34 -0
- package/esm2022/src/app/core/table/testing/table-validator.service.mjs +32 -0
- package/esm2022/src/app/core/table/testing/table.testing.mjs +329 -0
- package/esm2022/src/app/core/table/testing/table.testing.module.mjs +25 -0
- package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +25 -0
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +273 -0
- package/esm2022/src/app/shared/alerts.mjs +243 -0
- package/esm2022/src/app/shared/audio/audio.mjs +255 -0
- package/esm2022/src/app/shared/audio/audio.testing.mjs +32 -0
- package/esm2022/src/app/shared/audio/audio.testing.module.mjs +30 -0
- 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/constants.mjs +16 -0
- package/esm2022/src/app/shared/dates.mjs +180 -0
- package/esm2022/src/app/shared/debug/debug-service.class.mjs +3 -0
- package/esm2022/src/app/shared/debug/debug.component.mjs +44 -0
- package/esm2022/src/app/shared/debug/debug.module.mjs +23 -0
- package/esm2022/src/app/shared/directives/autofocus.directive.mjs +91 -0
- package/esm2022/src/app/shared/directives/autoresize.directive.mjs +75 -0
- package/esm2022/src/app/shared/directives/autotitle.directive.mjs +30 -0
- package/esm2022/src/app/shared/directives/directives.module.mjs +24 -0
- 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/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +17 -0
- package/esm2022/src/app/shared/directives/throttled-click.directive.mjs +43 -0
- package/esm2022/src/app/shared/events.mjs +64 -0
- package/esm2022/src/app/shared/file/csv.utils.mjs +97 -0
- package/esm2022/src/app/shared/file/file.service.mjs +118 -0
- package/esm2022/src/app/shared/file/file.utils.mjs +117 -0
- package/esm2022/src/app/shared/file/images.utils.mjs +186 -0
- package/esm2022/src/app/shared/file/json.utils.mjs +58 -0
- package/esm2022/src/app/shared/file/uri.utils.mjs +29 -0
- package/esm2022/src/app/shared/file/url.utils.mjs +164 -0
- package/esm2022/src/app/shared/focusable.mjs +6 -0
- package/esm2022/src/app/shared/form/field.component.mjs +393 -0
- package/esm2022/src/app/shared/form/field.model.mjs +82 -0
- package/esm2022/src/app/shared/form/loading-spinner.mjs +35 -0
- package/esm2022/src/app/shared/forms.mjs +510 -0
- package/esm2022/src/app/shared/functions.mjs +672 -0
- package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +86 -0
- package/esm2022/src/app/shared/gesture/gesture-config.mjs +46 -0
- package/esm2022/src/app/shared/gesture/hammer.utils.mjs +2 -0
- package/esm2022/src/app/shared/graph/colors.utils.mjs +60 -0
- package/esm2022/src/app/shared/graph/graph-colors.mjs +214 -0
- package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +65 -0
- package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +23 -0
- package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +147 -0
- package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +24 -0
- package/esm2022/src/app/shared/http/http.utils.mjs +56 -0
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +443 -0
- package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +62 -0
- 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 +87 -0
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +37 -0
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +59 -0
- package/esm2022/src/app/shared/image/image.model.mjs +2 -0
- package/esm2022/src/app/shared/image/image.module.mjs +24 -0
- package/esm2022/src/app/shared/image/image.service.mjs +109 -0
- package/esm2022/src/app/shared/inputs.mjs +279 -0
- package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +27 -0
- package/esm2022/src/app/shared/logging/log-level.model.mjs +48 -0
- package/esm2022/src/app/shared/logging/logger.model.mjs +47 -0
- package/esm2022/src/app/shared/logging/logging-service.class.mjs +125 -0
- package/esm2022/src/app/shared/logging/logging-service.config.mjs +2 -0
- package/esm2022/src/app/shared/logging/logging-service.module.mjs +30 -0
- package/esm2022/src/app/shared/markdown/markdown.component.mjs +321 -0
- package/esm2022/src/app/shared/markdown/markdown.directive.mjs +34 -0
- package/esm2022/src/app/shared/markdown/markdown.modal.mjs +99 -0
- package/esm2022/src/app/shared/markdown/markdown.module.mjs +87 -0
- package/esm2022/src/app/shared/markdown/markdown.service.mjs +204 -0
- package/esm2022/src/app/shared/markdown/markdown.utils.mjs +87 -0
- package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +55 -0
- package/esm2022/src/app/shared/markdown/testing/markdown.testing.module.mjs +30 -0
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +46 -0
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +1313 -0
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +79 -0
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +18 -0
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +242 -0
- package/esm2022/src/app/shared/material/badge/badge.directive.mjs +251 -0
- package/esm2022/src/app/shared/material/badge/badge.module.mjs +20 -0
- package/esm2022/src/app/shared/material/badge/badge.test.mjs +42 -0
- package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +67 -0
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +371 -0
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +72 -0
- package/esm2022/src/app/shared/material/chips/chips.module.mjs +71 -0
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +836 -0
- package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +151 -0
- package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +76 -0
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +471 -0
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +457 -0
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +693 -0
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +136 -0
- package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +127 -0
- package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +118 -0
- package/esm2022/src/app/shared/material/duration/duration.module.mjs +61 -0
- package/esm2022/src/app/shared/material/duration/duration.utils.mjs +16 -0
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +283 -0
- package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +85 -0
- package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +319 -0
- package/esm2022/src/app/shared/material/latlong/material.latlong-input.mjs +432 -0
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +231 -0
- package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +68 -0
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +137 -0
- package/esm2022/src/app/shared/material/material.animations.mjs +200 -0
- package/esm2022/src/app/shared/material/material.config.mjs +3 -0
- package/esm2022/src/app/shared/material/material.module.mjs +229 -0
- package/esm2022/src/app/shared/material/material.testing.module.mjs +245 -0
- package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +51 -0
- package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +23 -0
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +379 -0
- package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +52 -0
- package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +67 -0
- package/esm2022/src/app/shared/material/test/test-component.mjs +264 -0
- package/esm2022/src/app/shared/material/testing/common.test.mjs +111 -0
- package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +42 -0
- package/esm2022/src/app/shared/material/text/text-form.component.mjs +205 -0
- package/esm2022/src/app/shared/material/text/text-form.module.mjs +63 -0
- package/esm2022/src/app/shared/modules.mjs +12 -0
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +303 -0
- package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +49 -0
- package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +24 -0
- package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +69 -0
- package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +74 -0
- package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +28 -0
- package/esm2022/src/app/shared/observables.mjs +100 -0
- package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +217 -0
- package/esm2022/src/app/shared/pipes/badge.pipes.mjs +24 -0
- package/esm2022/src/app/shared/pipes/colors.pipe.mjs +29 -0
- package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +50 -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/dates.pipe.mjs +18 -0
- package/esm2022/src/app/shared/pipes/display-with.pipe.mjs +23 -0
- package/esm2022/src/app/shared/pipes/duration.pipe.mjs +34 -0
- package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +53 -0
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +219 -0
- package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +50 -0
- package/esm2022/src/app/shared/pipes/html.pipes.mjs +69 -0
- package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +42 -0
- package/esm2022/src/app/shared/pipes/maps.pipe.mjs +65 -0
- package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +67 -0
- package/esm2022/src/app/shared/pipes/math.pipes.mjs +77 -0
- package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +19 -0
- package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +17 -0
- package/esm2022/src/app/shared/pipes/observable.pipes.mjs +63 -0
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +285 -0
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +135 -0
- package/esm2022/src/app/shared/pipes/selection.pipes.mjs +179 -0
- package/esm2022/src/app/shared/pipes/string.pipes.mjs +183 -0
- package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +44 -0
- package/esm2022/src/app/shared/pipes/types.pipes.mjs +74 -0
- package/esm2022/src/app/shared/pipes/url.pipes.mjs +43 -0
- package/esm2022/src/app/shared/platforms.mjs +81 -0
- package/esm2022/src/app/shared/print/print.service.mjs +305 -0
- package/esm2022/src/app/shared/regexps.mjs +96 -0
- package/esm2022/src/app/shared/rx-state/rx-state.decorators.mjs +217 -0
- package/esm2022/src/app/shared/rx-state/rx-state.module.mjs +19 -0
- package/esm2022/src/app/shared/rx-state/rx-state.types.mjs +2 -0
- package/esm2022/src/app/shared/services/entity-service.class.mjs +10 -0
- package/esm2022/src/app/shared/services/job.utils.mjs +92 -0
- package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +353 -0
- package/esm2022/src/app/shared/services/progress-bar.service.mjs +31 -0
- package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +118 -0
- package/esm2022/src/app/shared/services/startable-service.class.mjs +107 -0
- package/esm2022/src/app/shared/services/translate-context.service.mjs +107 -0
- package/esm2022/src/app/shared/services/validator-service.class.mjs +2 -0
- package/esm2022/src/app/shared/services.mjs +85 -0
- package/esm2022/src/app/shared/shared-routing.module.mjs +72 -0
- package/esm2022/src/app/shared/shared.module.mjs +229 -0
- package/esm2022/src/app/shared/shared.testing.module.mjs +108 -0
- package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +279 -0
- package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +42 -0
- package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +27 -0
- package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +25 -0
- package/esm2022/src/app/shared/storage/storage.service.mjs +134 -0
- package/esm2022/src/app/shared/storage/storage.utils.mjs +13 -0
- package/esm2022/src/app/shared/testing/maskito.test.mjs +41 -0
- package/esm2022/src/app/shared/testing/observable.test.mjs +94 -0
- package/esm2022/src/app/shared/testing/tests.page.mjs +37 -0
- package/esm2022/src/app/shared/toast/toast.testing.mjs +54 -0
- package/esm2022/src/app/shared/toast/toast.testing.module.mjs +31 -0
- package/esm2022/src/app/shared/toast/toasts.mjs +134 -0
- package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +62 -0
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +267 -0
- package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +26 -0
- package/esm2022/src/app/shared/types.mjs +2 -0
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +59 -0
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +30 -0
- package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +109 -0
- package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +216 -0
- package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +26 -0
- package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +114 -0
- package/esm2022/src/app/shared/validator/validators.mjs +621 -0
- package/esm2022/src/app/shared/version/versions.mjs +81 -0
- package/esm2022/src/app/social/job/job.module.mjs +23 -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 +235 -0
- package/esm2022/src/app/social/job/progression/job-progression.list.mjs +47 -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 +91 -0
- package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +38 -0
- package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +34 -0
- package/esm2022/src/app/social/job/testing/job.testing.module.mjs +22 -0
- package/esm2022/src/app/social/message/message.form.mjs +141 -0
- package/esm2022/src/app/social/message/message.modal.mjs +110 -0
- package/esm2022/src/app/social/message/message.model.mjs +75 -0
- package/esm2022/src/app/social/message/message.module.mjs +22 -0
- package/esm2022/src/app/social/message/message.service.mjs +110 -0
- package/esm2022/src/app/social/social.errors.mjs +10 -0
- package/esm2022/src/app/social/social.module.mjs +22 -0
- package/esm2022/src/app/social/social.testing.module.mjs +40 -0
- package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +127 -0
- package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +260 -0
- package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +257 -0
- package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +129 -0
- package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +22 -0
- package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +128 -0
- package/esm2022/src/app/social/user-event/user-event.model.mjs +2 -0
- package/esm2022/src/app/social/user-event/user-event.module.mjs +23 -0
- package/esm2022/src/app/social/user-event/user-event.service.mjs +512 -0
- package/esm2022/src/environments/environment.class.mjs +65 -0
- package/esm2022/src/environments/environment.loader.mjs +77 -0
- package/esm2022/src/environments/environment.mjs +109 -0
- package/esm2022/sumaris-net.ngx-components.mjs +5 -0
- package/fesm2022/sumaris-net.ngx-components.mjs +48744 -0
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/package.json +19 -132
- package/public_api.d.ts +344 -0
- package/src/app/admin/admin-routing.module.d.ts +9 -0
- package/src/app/admin/admin.module.d.ts +10 -0
- package/src/app/admin/services/filter/person.filter.d.ts +22 -0
- package/src/app/admin/services/person.service.d.ts +37 -0
- package/src/app/admin/services/validator/person.validator.d.ts +23 -0
- package/src/app/admin/users/users.d.ts +61 -0
- package/src/app/admin/users/users.module.d.ts +14 -0
- package/src/app/core/about/about.modal.d.ts +32 -0
- package/src/app/core/about/about.module.d.ts +11 -0
- package/src/app/core/account/account.module.d.ts +18 -0
- package/src/app/core/account/account.page.d.ts +83 -0
- package/src/app/core/account/new-token.form.d.ts +29 -0
- package/src/app/core/account/new-token.modal.d.ts +29 -0
- package/src/app/core/account/password/change-password.form.d.ts +19 -0
- package/src/app/core/account/password/change-password.module.d.ts +11 -0
- package/src/app/core/account/password/change-password.page.d.ts +36 -0
- package/src/app/core/account/token.table.d.ts +27 -0
- package/src/app/core/auth/auth.form.d.ts +38 -0
- package/src/app/core/auth/auth.modal.d.ts +24 -0
- package/src/app/core/auth/auth.module.d.ts +13 -0
- package/src/app/core/auth/reset-password.modal.d.ts +29 -0
- package/src/app/core/core.module.d.ts +28 -0
- package/src/app/core/core.testing.module.d.ts +15 -0
- package/src/app/core/form/array/form-array.d.ts +137 -0
- package/src/app/core/form/array/testing/form-array-test.module.d.ts +12 -0
- package/src/app/core/form/array/testing/form-array.test.d.ts +26 -0
- package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +37 -0
- package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +9 -0
- package/src/app/core/form/entity/editor.class.d.ts +84 -0
- package/src/app/core/form/entity/entity-editor-modal.class.d.ts +126 -0
- package/src/app/core/form/entity/entity-editor.class.d.ts +204 -0
- package/src/app/core/form/entity/entity-metadata.component.d.ts +13 -0
- package/src/app/core/form/entity/entity.module.d.ts +10 -0
- package/src/app/core/form/entity/tab-editor.class.d.ts +66 -0
- package/src/app/core/form/form-container.class.d.ts +127 -0
- package/src/app/core/form/form.class.d.ts +144 -0
- package/src/app/core/form/form.module.d.ts +14 -0
- package/src/app/core/form/form.utils.d.ts +260 -0
- package/src/app/core/form/list/list.form.d.ts +81 -0
- package/src/app/core/form/list/list.module.d.ts +9 -0
- package/src/app/core/form/properties/properties.form.d.ts +92 -0
- package/src/app/core/form/properties/properties.module.d.ts +11 -0
- package/src/app/core/form/properties/properties.table.d.ts +72 -0
- package/src/app/core/form/properties/properties.utils.d.ts +59 -0
- package/src/app/core/form/properties/property.validator.d.ts +27 -0
- package/src/app/core/form/properties/testing/properties-form.test.d.ts +22 -0
- package/src/app/core/form/properties/testing/properties-form.testing.module.d.ts +12 -0
- package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +16 -0
- package/src/app/core/form/text-popover/testing/text-popover.testing.module.d.ts +11 -0
- package/src/app/core/form/text-popover/text-popover.component.d.ts +80 -0
- package/src/app/core/form/text-popover/text-popover.module.d.ts +9 -0
- package/src/app/core/form/username/username.form.d.ts +19 -0
- package/src/app/core/form/username/username.module.d.ts +9 -0
- package/src/app/core/graphql/graphql.module.d.ts +7 -0
- package/src/app/core/graphql/graphql.service.d.ts +142 -0
- package/src/app/core/graphql/graphql.utils.d.ts +47 -0
- package/src/app/core/home/home.d.ts +109 -0
- package/src/app/core/home/home.module.d.ts +14 -0
- package/src/app/core/icon/icon.component.d.ts +13 -0
- package/src/app/core/icon/icon.module.d.ts +9 -0
- package/src/app/core/install/install-upgrade-card.component.d.ts +63 -0
- package/src/app/core/install/install-upgrade-card.module.d.ts +9 -0
- package/src/app/core/menu/menu.component.d.ts +66 -0
- package/src/app/core/menu/menu.model.d.ts +144 -0
- package/src/app/core/menu/menu.module.d.ts +12 -0
- package/src/app/core/menu/menu.service.d.ts +93 -0
- package/src/app/core/menu/sub-menu-tab.directive.d.ts +29 -0
- package/src/app/core/menu/testing/menu-other.testing.d.ts +15 -0
- package/src/app/core/menu/testing/menu.testing.d.ts +51 -0
- package/src/app/core/menu/testing/menu.testing.module.d.ts +12 -0
- package/src/app/core/offline/update-offline-mode-card.component.d.ts +11 -0
- package/src/app/core/offline/update-offline-mode-card.module.d.ts +9 -0
- package/src/app/core/peer/select-peer.modal.d.ts +101 -0
- package/src/app/core/peer/select-peer.module.d.ts +12 -0
- package/src/app/core/register/register-confirm.page.d.ts +24 -0
- package/src/app/core/register/register.form.d.ts +49 -0
- package/src/app/core/register/register.modal.d.ts +14 -0
- package/src/app/core/register/register.module.d.ts +12 -0
- package/src/app/core/services/account.service.d.ts +207 -0
- package/src/app/core/services/auth-guard.service.d.ts +17 -0
- package/src/app/core/services/base-entity-service.class.d.ts +135 -0
- package/src/app/core/services/base-graphql-service.class.d.ts +77 -0
- package/src/app/core/services/base58.d.ts +7 -0
- package/src/app/core/services/config/core.config.d.ts +46 -0
- package/src/app/core/services/config.service.d.ts +63 -0
- package/src/app/core/services/crypto.service.d.ts +44 -0
- package/src/app/core/services/errors.d.ts +65 -0
- package/src/app/core/services/local-settings.service.d.ts +99 -0
- package/src/app/core/services/model/account.model.d.ts +56 -0
- package/src/app/core/services/model/config.model.d.ts +36 -0
- package/src/app/core/services/model/department.model.d.ts +11 -0
- package/src/app/core/services/model/entity.decorators.d.ts +17 -0
- package/src/app/core/services/model/entity.model.d.ts +133 -0
- package/src/app/core/services/model/filter.model.d.ts +37 -0
- package/src/app/core/services/model/history.model.d.ts +20 -0
- package/src/app/core/services/model/model.enum.d.ts +7 -0
- package/src/app/core/services/model/node-feature.model.d.ts +14 -0
- package/src/app/core/services/model/peer.model.d.ts +35 -0
- package/src/app/core/services/model/person.model.d.ts +37 -0
- package/src/app/core/services/model/referential.model.d.ts +84 -0
- package/src/app/core/services/model/settings.model.d.ts +29 -0
- package/src/app/core/services/model/token.model.d.ts +22 -0
- package/src/app/core/services/model/tree-item-entity.model.d.ts +53 -0
- package/src/app/core/services/network.service.d.ts +159 -0
- package/src/app/core/services/network.types.d.ts +4 -0
- package/src/app/core/services/network.utils.d.ts +38 -0
- package/src/app/core/services/pipes/account.pipes.d.ts +15 -0
- package/src/app/core/services/pipes/department-to-string.pipe.d.ts +9 -0
- package/src/app/core/services/pipes/person-to-string.pipe.d.ts +11 -0
- package/src/app/core/services/pipes/pipes.module.d.ts +11 -0
- package/src/app/core/services/pipes/referential-to-string.pipe.d.ts +13 -0
- package/src/app/core/services/pipes/usage-mode.pipes.d.ts +15 -0
- package/src/app/core/services/platform.service.d.ts +110 -0
- package/src/app/core/services/storage/entities-storage.service.d.ts +108 -0
- package/src/app/core/services/storage/entity-store.class.d.ts +113 -0
- package/src/app/core/services/testing/referential-filter.model.d.ts +9 -0
- package/src/app/core/services/testing/referential.validator.d.ts +22 -0
- package/src/app/core/services/validator/account.validator.d.ts +24 -0
- package/src/app/core/services/validator/base.validator.class.d.ts +21 -0
- package/src/app/core/services/validator/local-settings.validator.d.ts +18 -0
- package/src/app/core/services/validator/user-settings.validator.d.ts +10 -0
- package/src/app/core/services/validator/user-token.validator.d.ts +13 -0
- package/src/app/core/settings/settings.module.d.ts +12 -0
- package/src/app/core/settings/settings.page.d.ts +88 -0
- package/src/app/core/table/async-table.class.d.ts +395 -0
- package/src/app/core/table/column/actions-column.component.d.ts +62 -0
- package/src/app/core/table/column/nav-actions-column.component.d.ts +46 -0
- package/src/app/core/table/column/row-field.component.d.ts +40 -0
- package/src/app/core/table/entities-async-table-datasource.class.d.ts +100 -0
- package/src/app/core/table/entities-table-datasource.class.d.ts +103 -0
- package/src/app/core/table/memory-table.class.d.ts +25 -0
- package/src/app/core/table/table-select-columns.component.d.ts +22 -0
- package/src/app/core/table/table.class.d.ts +400 -0
- package/src/app/core/table/table.model.d.ts +31 -0
- package/src/app/core/table/table.module.d.ts +14 -0
- package/src/app/core/table/table.pipes.d.ts +29 -0
- package/src/app/core/table/table.utils.d.ts +13 -0
- package/src/app/core/table/testing/table-validator.service.d.ts +17 -0
- package/src/app/core/table/testing/table.testing.d.ts +54 -0
- package/src/app/core/table/testing/table.testing.module.d.ts +14 -0
- package/src/app/core/table/testing/table2-validator.service.d.ts +15 -0
- package/src/app/core/table/testing/table2.testing.d.ts +48 -0
- package/src/app/shared/alerts.d.ts +55 -0
- package/src/app/shared/audio/audio.d.ts +45 -0
- package/src/app/shared/audio/audio.testing.d.ts +13 -0
- package/src/app/shared/audio/audio.testing.module.d.ts +11 -0
- package/src/app/shared/capacitor/keyboard.d.ts +16 -0
- package/src/app/shared/capacitor/plugins.d.ts +7 -0
- package/src/app/shared/constants.d.ts +13 -0
- package/src/app/shared/dates.d.ts +61 -0
- package/src/app/shared/debug/debug-service.class.d.ts +5 -0
- package/src/app/shared/debug/debug.component.d.ts +14 -0
- package/src/app/shared/debug/debug.module.d.ts +12 -0
- package/src/app/shared/directives/autofocus.directive.d.ts +18 -0
- package/src/app/shared/directives/autoresize.directive.d.ts +20 -0
- package/src/app/shared/directives/autotitle.directive.d.ts +11 -0
- package/src/app/shared/directives/directives.module.d.ts +14 -0
- package/src/app/shared/directives/drag-and-drop.directive.d.ts +17 -0
- package/src/app/shared/directives/ng-var.directive.d.ts +12 -0
- package/src/app/shared/directives/resizable/resizable.component.d.ts +21 -0
- package/src/app/shared/directives/resizable/resizable.directive.d.ts +12 -0
- package/src/app/shared/directives/resizable/resizable.module.d.ts +8 -0
- package/src/app/shared/directives/throttled-click.directive.d.ts +16 -0
- package/src/app/shared/events.d.ts +29 -0
- package/src/app/shared/file/csv.utils.d.ts +30 -0
- package/src/app/shared/file/file.service.d.ts +23 -0
- package/src/app/shared/file/file.utils.d.ts +20 -0
- package/src/app/shared/file/images.utils.d.ts +36 -0
- package/src/app/shared/file/json.utils.d.ts +19 -0
- package/src/app/shared/file/uri.utils.d.ts +8 -0
- package/src/app/shared/file/url.utils.d.ts +77 -0
- package/src/app/shared/focusable.d.ts +4 -0
- package/src/app/shared/form/field.component.d.ts +85 -0
- package/src/app/shared/form/field.model.d.ts +82 -0
- package/src/app/shared/form/loading-spinner.d.ts +8 -0
- package/src/app/shared/forms.d.ts +135 -0
- package/src/app/shared/functions.d.ts +206 -0
- package/src/app/shared/geolocation/geolocation.utils.d.ts +19 -0
- package/src/app/shared/gesture/gesture-config.d.ts +15 -0
- package/src/app/shared/gesture/hammer.utils.d.ts +16 -0
- package/src/app/shared/graph/colors.utils.d.ts +17 -0
- package/src/app/shared/graph/graph-colors.d.ts +63 -0
- package/src/app/shared/guard/component-dirty.guard.d.ts +14 -0
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +8 -0
- package/src/app/shared/hotkeys/hotkeys.service.d.ts +48 -0
- package/src/app/shared/hotkeys/shared-hotkeys.module.d.ts +11 -0
- package/src/app/shared/http/http.utils.d.ts +28 -0
- package/src/app/shared/image/gallery/image-gallery.component.d.ts +137 -0
- package/src/app/shared/image/gallery/image-gallery.module.d.ts +15 -0
- package/src/app/shared/image/gallery/testing/gallegry.model.testing.d.ts +12 -0
- package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +33 -0
- package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +16 -0
- package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +13 -0
- package/src/app/shared/image/image.model.d.ts +7 -0
- package/src/app/shared/image/image.module.d.ts +8 -0
- package/src/app/shared/image/image.service.d.ts +36 -0
- package/src/app/shared/inputs.d.ts +36 -0
- package/src/app/shared/interceptors/progess.interceptor.d.ts +8 -0
- package/src/app/shared/logging/log-level.model.d.ts +38 -0
- package/src/app/shared/logging/logger.model.d.ts +68 -0
- package/src/app/shared/logging/logging-service.class.d.ts +39 -0
- package/src/app/shared/logging/logging-service.config.d.ts +25 -0
- package/src/app/shared/logging/logging-service.module.d.ts +9 -0
- package/src/app/shared/markdown/markdown.component.d.ts +86 -0
- package/src/app/shared/markdown/markdown.directive.d.ts +13 -0
- package/src/app/shared/markdown/markdown.modal.d.ts +49 -0
- package/src/app/shared/markdown/markdown.module.d.ts +17 -0
- package/src/app/shared/markdown/markdown.service.d.ts +37 -0
- package/src/app/shared/markdown/markdown.utils.d.ts +26 -0
- package/src/app/shared/markdown/testing/markdown.test.d.ts +18 -0
- package/src/app/shared/markdown/testing/markdown.testing.module.d.ts +12 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +74 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +211 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +22 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +5 -0
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +48 -0
- package/src/app/shared/material/badge/badge.directive.d.ts +43 -0
- package/src/app/shared/material/badge/badge.module.d.ts +10 -0
- package/src/app/shared/material/badge/badge.test.d.ts +21 -0
- package/src/app/shared/material/boolean/boolean.module.d.ts +20 -0
- package/src/app/shared/material/boolean/material.boolean.d.ts +93 -0
- package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +26 -0
- package/src/app/shared/material/chips/chips.module.d.ts +21 -0
- package/src/app/shared/material/chips/material.chips.d.ts +164 -0
- package/src/app/shared/material/chips/testing/chips.test.d.ts +32 -0
- package/src/app/shared/material/datetime/datetime.module.d.ts +24 -0
- package/src/app/shared/material/datetime/material.date.d.ts +90 -0
- package/src/app/shared/material/datetime/material.dateshort.d.ts +89 -0
- package/src/app/shared/material/datetime/material.datetime.d.ts +116 -0
- package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +37 -0
- package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +32 -0
- package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +31 -0
- package/src/app/shared/material/duration/duration.module.d.ts +18 -0
- package/src/app/shared/material/duration/duration.utils.d.ts +2 -0
- package/src/app/shared/material/duration/material.duration.d.ts +64 -0
- package/src/app/shared/material/duration/testing/mat-duration.test.d.ts +23 -0
- package/src/app/shared/material/latlong/latlong.utils.d.ts +59 -0
- package/src/app/shared/material/latlong/material.latlong-input.d.ts +85 -0
- package/src/app/shared/material/latlong/material.latlong.d.ts +90 -0
- package/src/app/shared/material/latlong/material.latlong.module.d.ts +21 -0
- package/src/app/shared/material/latlong/testing/latlong.test.d.ts +28 -0
- package/src/app/shared/material/material.animations.d.ts +8 -0
- package/src/app/shared/material/material.config.d.ts +3 -0
- package/src/app/shared/material/material.module.d.ts +45 -0
- package/src/app/shared/material/material.testing.module.d.ts +32 -0
- package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +12 -0
- package/src/app/shared/material/stepper/material.stepper-i18n.d.ts +10 -0
- package/src/app/shared/material/swipe/material.swipe.d.ts +89 -0
- package/src/app/shared/material/swipe/swipe.module.d.ts +16 -0
- package/src/app/shared/material/swipe/testing/swipe.test.d.ts +22 -0
- package/src/app/shared/material/test/test-component.d.ts +75 -0
- package/src/app/shared/material/testing/common.test.d.ts +25 -0
- package/src/app/shared/material/text/testing/text-form.testing.d.ts +19 -0
- package/src/app/shared/material/text/text-form.component.d.ts +66 -0
- package/src/app/shared/material/text/text-form.module.d.ts +16 -0
- package/src/app/shared/modules.d.ts +9 -0
- package/src/app/shared/named-filter/named-filter-selector.component.d.ts +62 -0
- package/src/app/shared/named-filter/named-filter.model.d.ts +32 -0
- package/src/app/shared/named-filter/named-filter.module.d.ts +13 -0
- package/src/app/shared/named-filter/named-filter.service.d.ts +32 -0
- package/src/app/shared/named-filter/testing/named-filter-selector.testing.d.ts +34 -0
- package/src/app/shared/named-filter/testing/named-filter.testing.module.d.ts +10 -0
- package/src/app/shared/observables.d.ts +30 -0
- package/src/app/shared/pipes/arrays.pipe.d.ts +82 -0
- package/src/app/shared/pipes/badge.pipes.d.ts +7 -0
- package/src/app/shared/pipes/colors.pipe.d.ts +9 -0
- package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +25 -0
- package/src/app/shared/pipes/date-format.pipe.d.ts +35 -0
- package/src/app/shared/pipes/date-from-now.pipe.d.ts +12 -0
- package/src/app/shared/pipes/dates.pipe.d.ts +10 -0
- package/src/app/shared/pipes/display-with.pipe.d.ts +8 -0
- package/src/app/shared/pipes/duration.pipe.d.ts +23 -0
- package/src/app/shared/pipes/file-size.pipe.d.ts +30 -0
- package/src/app/shared/pipes/form.pipes.d.ts +69 -0
- package/src/app/shared/pipes/highlight.pipe.d.ts +11 -0
- package/src/app/shared/pipes/html.pipes.d.ts +22 -0
- package/src/app/shared/pipes/latlong-format.pipe.d.ts +20 -0
- package/src/app/shared/pipes/maps.pipe.d.ts +23 -0
- package/src/app/shared/pipes/maskito.pipe.d.ts +14 -0
- package/src/app/shared/pipes/math.pipes.d.ts +26 -0
- package/src/app/shared/pipes/ng-init.pipe.d.ts +8 -0
- package/src/app/shared/pipes/number-format.pipe.d.ts +9 -0
- package/src/app/shared/pipes/observable.pipes.d.ts +25 -0
- package/src/app/shared/pipes/pipes.module.d.ts +35 -0
- package/src/app/shared/pipes/property.pipes.d.ts +41 -0
- package/src/app/shared/pipes/selection.pipes.d.ts +62 -0
- package/src/app/shared/pipes/string.pipes.d.ts +68 -0
- package/src/app/shared/pipes/translate-context.pipe.d.ts +17 -0
- package/src/app/shared/pipes/types.pipes.d.ts +30 -0
- package/src/app/shared/pipes/url.pipes.d.ts +27 -0
- package/src/app/shared/platforms.d.ts +16 -0
- package/src/app/shared/print/print.service.d.ts +94 -0
- package/src/app/shared/regexps.d.ts +32 -0
- package/src/app/shared/rx-state/rx-state.decorators.d.ts +43 -0
- package/src/app/shared/rx-state/rx-state.module.d.ts +10 -0
- package/src/app/shared/rx-state/rx-state.types.d.ts +4 -0
- package/src/app/shared/services/entity-service.class.d.ts +75 -0
- package/src/app/shared/services/job.utils.d.ts +20 -0
- package/src/app/shared/services/memory-entity-service.class.d.ts +79 -0
- package/src/app/shared/services/progress-bar.service.d.ts +20 -0
- package/src/app/shared/services/startable-observable-service.class.d.ts +36 -0
- package/src/app/shared/services/startable-service.class.d.ts +37 -0
- package/src/app/shared/services/translate-context.service.d.ts +29 -0
- package/src/app/shared/services/validator-service.class.d.ts +11 -0
- package/src/app/shared/services.d.ts +17 -0
- package/src/app/shared/shared-routing.module.d.ts +23 -0
- package/src/app/shared/shared.module.d.ts +33 -0
- package/src/app/shared/shared.testing.module.d.ts +20 -0
- package/src/app/shared/storage/storage-explorer.component.d.ts +59 -0
- package/src/app/shared/storage/storage-explorer.module.d.ts +13 -0
- package/src/app/shared/storage/storage-explorer.testing-routing.module.d.ts +9 -0
- package/src/app/shared/storage/storage-explorer.testing.module.d.ts +10 -0
- package/src/app/shared/storage/storage.service.d.ts +22 -0
- package/src/app/shared/storage/storage.utils.d.ts +19 -0
- package/src/app/shared/testing/maskito.test.d.ts +10 -0
- package/src/app/shared/testing/observable.test.d.ts +25 -0
- package/src/app/shared/testing/tests.page.d.ts +20 -0
- package/src/app/shared/toast/toast.testing.d.ts +15 -0
- package/src/app/shared/toast/toast.testing.module.d.ts +12 -0
- package/src/app/shared/toast/toasts.d.ts +16 -0
- package/src/app/shared/toolbar/modal-toolbar.d.ts +21 -0
- package/src/app/shared/toolbar/toolbar.d.ts +70 -0
- package/src/app/shared/toolbar/toolbar.module.d.ts +16 -0
- package/src/app/shared/types.d.ts +36 -0
- package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +21 -0
- package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +11 -0
- package/src/app/shared/upload-file/upload-file-popover.component.d.ts +41 -0
- package/src/app/shared/upload-file/upload-file.component.d.ts +50 -0
- package/src/app/shared/upload-file/upload-file.model.d.ts +30 -0
- package/src/app/shared/validator/form-error-adapter.class.d.ts +33 -0
- package/src/app/shared/validator/validators.d.ts +139 -0
- package/src/app/shared/version/versions.d.ts +26 -0
- package/src/app/social/job/job.module.d.ts +12 -0
- package/src/app/social/job/progression/job-progression.component.d.ts +23 -0
- package/src/app/social/job/progression/job-progression.icon.d.ts +62 -0
- package/src/app/social/job/progression/job-progression.list.d.ts +19 -0
- package/src/app/social/job/progression/job-progression.model.d.ts +10 -0
- package/src/app/social/job/progression/job-progression.service.d.ts +33 -0
- package/src/app/social/job/testing/job-progression.testing.d.ts +13 -0
- package/src/app/social/job/testing/job-progression.testing.service.d.ts +9 -0
- package/src/app/social/job/testing/job.testing.module.d.ts +11 -0
- package/src/app/social/message/message.form.d.ts +36 -0
- package/src/app/social/message/message.modal.d.ts +43 -0
- package/src/app/social/message/message.model.d.ts +33 -0
- package/src/app/social/message/message.module.d.ts +12 -0
- package/src/app/social/message/message.service.d.ts +32 -0
- package/src/app/social/social.errors.d.ts +9 -0
- package/src/app/social/social.module.d.ts +20 -0
- package/src/app/social/social.testing.module.d.ts +13 -0
- package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +32 -0
- package/src/app/social/user-event/notification/user-event-notification.list.d.ts +71 -0
- package/src/app/social/user-event/testing/user-event.testing.d.ts +35 -0
- package/src/app/social/user-event/testing/user-event.testing.model.d.ts +42 -0
- package/src/app/social/user-event/testing/user-event.testing.module.d.ts +11 -0
- package/src/app/social/user-event/testing/user-event.testing.service.d.ts +42 -0
- package/src/app/social/user-event/user-event.model.d.ts +44 -0
- package/src/app/social/user-event/user-event.module.d.ts +13 -0
- package/src/app/social/user-event/user-event.service.d.ts +124 -0
- package/src/assets/manifest.json +1 -1
- package/src/environments/environment.class.d.ts +75 -0
- package/src/environments/environment.d.ts +2 -0
- package/src/environments/environment.loader.d.ts +24 -0
- package/.editorconfig +0 -24
- package/.eslintrc.json +0 -95
- package/.gitattribute +0 -1
- package/.github/CONTRIBUTING.md +0 -10
- package/.github/ISSUE_TEMPLATE.md +0 -6
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
- package/.github/github_disclaimer.md +0 -14
- package/.gitlab-ci.yml +0 -46
- package/.graphqlconfig +0 -15
- package/.prettierignore +0 -9
- package/.prettierrc.json +0 -17
- package/angular.json +0 -236
- package/capacitor.config.ts +0 -49
- package/graphql.config.yml +0 -13
- package/ionic.config.json +0 -7
- package/karma.conf.js +0 -38
- package/ng-package.json +0 -21
- package/ngcc.config.js +0 -9
- package/public_api.ts +0 -426
- package/resources/README.md +0 -7
- package/resources/icon/TODO.md +0 -11
- package/resources/icon.png +0 -0
- package/resources/icon.png.md5 +0 -1
- package/resources/icon.xcf +0 -0
- package/resources/ios/icon/icon-1024.png +0 -0
- package/resources/ios/icon/icon-108@2x.png +0 -0
- package/resources/ios/icon/icon-20.png +0 -0
- package/resources/ios/icon/icon-20@2x.png +0 -0
- package/resources/ios/icon/icon-20@3x.png +0 -0
- package/resources/ios/icon/icon-24@2x.png +0 -0
- package/resources/ios/icon/icon-27.5@2x.png +0 -0
- package/resources/ios/icon/icon-29.png +0 -0
- package/resources/ios/icon/icon-29@2x.png +0 -0
- package/resources/ios/icon/icon-29@3x.png +0 -0
- package/resources/ios/icon/icon-40.png +0 -0
- package/resources/ios/icon/icon-40@2x.png +0 -0
- package/resources/ios/icon/icon-40@3x.png +0 -0
- package/resources/ios/icon/icon-44@2x.png +0 -0
- package/resources/ios/icon/icon-50.png +0 -0
- package/resources/ios/icon/icon-50@2x.png +0 -0
- package/resources/ios/icon/icon-60.png +0 -0
- package/resources/ios/icon/icon-60@2x.png +0 -0
- package/resources/ios/icon/icon-60@3x.png +0 -0
- package/resources/ios/icon/icon-72.png +0 -0
- package/resources/ios/icon/icon-72@2x.png +0 -0
- package/resources/ios/icon/icon-76.png +0 -0
- package/resources/ios/icon/icon-76@2x.png +0 -0
- package/resources/ios/icon/icon-83.5@2x.png +0 -0
- package/resources/ios/icon/icon-86@2x.png +0 -0
- package/resources/ios/icon/icon-98@2x.png +0 -0
- package/resources/ios/icon/icon-small.png +0 -0
- package/resources/ios/icon/icon-small@2x.png +0 -0
- package/resources/ios/icon/icon-small@3x.png +0 -0
- package/resources/ios/icon/icon.png +0 -0
- package/resources/ios/icon/icon@2x.png +0 -0
- package/resources/ios/splash/Default-1792h~iphone.png +0 -0
- package/resources/ios/splash/Default-2436h.png +0 -0
- package/resources/ios/splash/Default-2688h~iphone.png +0 -0
- package/resources/ios/splash/Default-568h@2x~iphone.png +0 -0
- package/resources/ios/splash/Default-667h.png +0 -0
- package/resources/ios/splash/Default-736h.png +0 -0
- package/resources/ios/splash/Default-Landscape-1792h~iphone.png +0 -0
- package/resources/ios/splash/Default-Landscape-2436h.png +0 -0
- package/resources/ios/splash/Default-Landscape-2688h~iphone.png +0 -0
- package/resources/ios/splash/Default-Landscape-736h.png +0 -0
- package/resources/ios/splash/Default-Landscape@2x~ipad.png +0 -0
- package/resources/ios/splash/Default-Landscape@~ipadpro.png +0 -0
- package/resources/ios/splash/Default-Landscape~ipad.png +0 -0
- package/resources/ios/splash/Default-Portrait@2x~ipad.png +0 -0
- package/resources/ios/splash/Default-Portrait@~ipadpro.png +0 -0
- package/resources/ios/splash/Default-Portrait~ipad.png +0 -0
- package/resources/ios/splash/Default@2x~iphone.png +0 -0
- package/resources/ios/splash/Default@2x~universal~anyany.png +0 -0
- package/resources/ios/splash/Default~iphone.png +0 -0
- package/resources/splash.png +0 -0
- package/resources/splash.png.md5 +0 -1
- package/scripts/build-android.sh +0 -18
- package/scripts/docker-start.sh +0 -6
- package/scripts/emulate-android.sh +0 -17
- package/scripts/env-android.sh +0 -83
- package/scripts/env-clean.sh +0 -23
- package/scripts/env-global.sh +0 -154
- package/scripts/install-android-sdk-tools.sh +0 -73
- package/scripts/ionic-update.sh +0 -24
- package/scripts/node/build-i18n.js +0 -37
- package/scripts/node/playground.ts +0 -9
- package/scripts/node/resources.js +0 -108
- package/scripts/release.sh +0 -162
- package/scripts/run-android.sh +0 -59
- package/scripts/test.sh +0 -19
- package/src/app/admin/admin-routing.module.ts +0 -26
- package/src/app/admin/admin.module.ts +0 -20
- package/src/app/admin/services/filter/person.filter.ts +0 -86
- package/src/app/admin/services/person.service.ts +0 -244
- package/src/app/admin/services/validator/person.validator.ts +0 -86
- package/src/app/admin/users/users.html +0 -613
- package/src/app/admin/users/users.module.ts +0 -32
- package/src/app/admin/users/users.scss +0 -80
- package/src/app/admin/users/users.ts +0 -387
- package/src/app/app-routing.module.ts +0 -165
- package/src/app/app.component.html +0 -14
- package/src/app/app.component.scss +0 -4
- package/src/app/app.component.ts +0 -252
- package/src/app/app.module.ts +0 -355
- package/src/app/core/about/about.modal.html +0 -145
- package/src/app/core/about/about.modal.scss +0 -22
- package/src/app/core/about/about.modal.ts +0 -69
- package/src/app/core/about/about.module.ts +0 -14
- package/src/app/core/account/account.module.ts +0 -43
- package/src/app/core/account/account.page.html +0 -329
- package/src/app/core/account/account.page.scss +0 -20
- package/src/app/core/account/account.page.ts +0 -389
- package/src/app/core/account/new-token.form.html +0 -90
- package/src/app/core/account/new-token.form.ts +0 -99
- package/src/app/core/account/new-token.modal.html +0 -52
- package/src/app/core/account/new-token.modal.ts +0 -68
- package/src/app/core/account/password/change-password.form.html +0 -62
- package/src/app/core/account/password/change-password.form.scss +0 -0
- package/src/app/core/account/password/change-password.form.ts +0 -58
- package/src/app/core/account/password/change-password.module.ts +0 -14
- package/src/app/core/account/password/change-password.page.html +0 -41
- package/src/app/core/account/password/change-password.page.scss +0 -49
- package/src/app/core/account/password/change-password.page.ts +0 -158
- package/src/app/core/account/token.table.html +0 -160
- package/src/app/core/account/token.table.scss +0 -7
- package/src/app/core/account/token.table.ts +0 -160
- package/src/app/core/auth/auth.form.html +0 -108
- package/src/app/core/auth/auth.form.scss +0 -0
- package/src/app/core/auth/auth.form.ts +0 -165
- package/src/app/core/auth/auth.modal.html +0 -50
- package/src/app/core/auth/auth.modal.scss +0 -0
- package/src/app/core/auth/auth.modal.ts +0 -78
- package/src/app/core/auth/auth.module.ts +0 -35
- package/src/app/core/auth/reset-password.modal.html +0 -59
- package/src/app/core/auth/reset-password.modal.ts +0 -83
- package/src/app/core/core.module.ts +0 -72
- package/src/app/core/core.testing.module.ts +0 -80
- package/src/app/core/form/array/form-array.ts +0 -409
- package/src/app/core/form/array/testing/form-array-test.module.ts +0 -15
- package/src/app/core/form/array/testing/form-array.test.html +0 -196
- package/src/app/core/form/array/testing/form-array.test.ts +0 -119
- package/src/app/core/form/buttons/form-buttons-bar.component.html +0 -82
- package/src/app/core/form/buttons/form-buttons-bar.component.scss +0 -19
- package/src/app/core/form/buttons/form-buttons-bar.component.ts +0 -89
- package/src/app/core/form/buttons/form-buttons-bar.module.ts +0 -20
- package/src/app/core/form/entity/editor.class.ts +0 -295
- package/src/app/core/form/entity/entity-editor-modal.class.ts +0 -494
- package/src/app/core/form/entity/entity-editor.class.ts +0 -894
- package/src/app/core/form/entity/entity-metadata.component.html +0 -57
- package/src/app/core/form/entity/entity-metadata.component.scss +0 -40
- package/src/app/core/form/entity/entity-metadata.component.ts +0 -18
- package/src/app/core/form/entity/entity.module.ts +0 -20
- package/src/app/core/form/entity/tab-editor.class.ts +0 -224
- package/src/app/core/form/form-container.class.ts +0 -380
- package/src/app/core/form/form.class.ts +0 -377
- package/src/app/core/form/form.module.ts +0 -38
- package/src/app/core/form/form.utils.ts +0 -305
- package/src/app/core/form/list/list.form.html +0 -68
- package/src/app/core/form/list/list.form.scss +0 -40
- package/src/app/core/form/list/list.form.ts +0 -266
- package/src/app/core/form/list/list.module.ts +0 -20
- package/src/app/core/form/properties/properties.form.html +0 -160
- package/src/app/core/form/properties/properties.form.scss +0 -21
- package/src/app/core/form/properties/properties.form.ts +0 -331
- package/src/app/core/form/properties/properties.module.ts +0 -24
- package/src/app/core/form/properties/properties.table.html +0 -228
- package/src/app/core/form/properties/properties.table.scss +0 -0
- package/src/app/core/form/properties/properties.table.ts +0 -275
- package/src/app/core/form/properties/properties.utils.ts +0 -391
- package/src/app/core/form/properties/property.validator.ts +0 -82
- package/src/app/core/form/properties/testing/properties-form.test.html +0 -23
- package/src/app/core/form/properties/testing/properties-form.test.ts +0 -109
- package/src/app/core/form/properties/testing/properties-form.testing.module.ts +0 -14
- package/src/app/core/form/text-popover/testing/text-popover.testing.html +0 -50
- package/src/app/core/form/text-popover/testing/text-popover.testing.module.ts +0 -21
- package/src/app/core/form/text-popover/testing/text-popover.testing.ts +0 -76
- package/src/app/core/form/text-popover/text-popover.component.html +0 -89
- package/src/app/core/form/text-popover/text-popover.component.scss +0 -7
- package/src/app/core/form/text-popover/text-popover.component.ts +0 -176
- package/src/app/core/form/text-popover/text-popover.module.ts +0 -19
- package/src/app/core/form/username/username.form.html +0 -27
- package/src/app/core/form/username/username.form.ts +0 -44
- package/src/app/core/form/username/username.module.ts +0 -12
- package/src/app/core/graphql/graphql.module.ts +0 -7
- package/src/app/core/graphql/graphql.service.ts +0 -962
- package/src/app/core/graphql/graphql.utils.ts +0 -166
- package/src/app/core/home/home.html +0 -295
- package/src/app/core/home/home.module.ts +0 -27
- package/src/app/core/home/home.scss +0 -279
- package/src/app/core/home/home.ts +0 -422
- package/src/app/core/icon/icon.component.html +0 -19
- package/src/app/core/icon/icon.component.ts +0 -22
- package/src/app/core/icon/icon.module.ts +0 -13
- package/src/app/core/install/install-upgrade-card.component.html +0 -144
- package/src/app/core/install/install-upgrade-card.component.scss +0 -3
- package/src/app/core/install/install-upgrade-card.component.ts +0 -445
- package/src/app/core/install/install-upgrade-card.module.ts +0 -18
- package/src/app/core/menu/menu.component.html +0 -219
- package/src/app/core/menu/menu.component.scss +0 -304
- package/src/app/core/menu/menu.component.ts +0 -251
- package/src/app/core/menu/menu.filter.ts +0 -28
- package/src/app/core/menu/menu.model.ts +0 -356
- package/src/app/core/menu/menu.module.ts +0 -27
- package/src/app/core/menu/menu.service.ts +0 -727
- package/src/app/core/menu/sub-menu-tab.directive.ts +0 -99
- package/src/app/core/menu/testing/menu-other.testing.ts +0 -57
- package/src/app/core/menu/testing/menu.testing.html +0 -143
- package/src/app/core/menu/testing/menu.testing.module.ts +0 -52
- package/src/app/core/menu/testing/menu.testing.scss +0 -5
- package/src/app/core/menu/testing/menu.testing.ts +0 -175
- package/src/app/core/offline/update-offline-mode-card.component.html +0 -39
- package/src/app/core/offline/update-offline-mode-card.component.scss +0 -3
- package/src/app/core/offline/update-offline-mode-card.component.ts +0 -23
- package/src/app/core/offline/update-offline-mode-card.module.ts +0 -20
- package/src/app/core/peer/select-peer.modal.html +0 -317
- package/src/app/core/peer/select-peer.modal.scss +0 -41
- package/src/app/core/peer/select-peer.modal.ts +0 -366
- package/src/app/core/peer/select-peer.module.ts +0 -23
- package/src/app/core/register/register-confirm.page.html +0 -51
- package/src/app/core/register/register-confirm.page.scss +0 -56
- package/src/app/core/register/register-confirm.page.ts +0 -90
- package/src/app/core/register/register.form.html +0 -143
- package/src/app/core/register/register.form.scss +0 -10
- package/src/app/core/register/register.form.ts +0 -218
- package/src/app/core/register/register.modal.html +0 -66
- package/src/app/core/register/register.modal.ts +0 -50
- package/src/app/core/register/register.module.ts +0 -15
- package/src/app/core/services/account.service.ts +0 -1567
- package/src/app/core/services/auth-guard.service.ts +0 -70
- package/src/app/core/services/base-entity-service.class.ts +0 -659
- package/src/app/core/services/base-graphql-service.class.ts +0 -319
- package/src/app/core/services/base58.ts +0 -90
- package/src/app/core/services/config/core.config.ts +0 -263
- package/src/app/core/services/config.service.ts +0 -425
- package/src/app/core/services/crypto.service.ts +0 -126
- package/src/app/core/services/errors.ts +0 -80
- package/src/app/core/services/local-settings.service.spec.ts +0 -39
- package/src/app/core/services/local-settings.service.ts +0 -605
- package/src/app/core/services/model/account.model.ts +0 -188
- package/src/app/core/services/model/config.model.ts +0 -116
- package/src/app/core/services/model/department.model.ts +0 -34
- package/src/app/core/services/model/entity.decorators.ts +0 -110
- package/src/app/core/services/model/entity.model.ts +0 -409
- package/src/app/core/services/model/filter.model.ts +0 -127
- package/src/app/core/services/model/history.model.ts +0 -25
- package/src/app/core/services/model/model.enum.ts +0 -10
- package/src/app/core/services/model/node-feature.model.ts +0 -31
- package/src/app/core/services/model/peer.model.ts +0 -119
- package/src/app/core/services/model/person.model.ts +0 -122
- package/src/app/core/services/model/referential.model.ts +0 -253
- package/src/app/core/services/model/settings.model.ts +0 -37
- package/src/app/core/services/model/token.model.ts +0 -60
- package/src/app/core/services/model/tree-item-entity.model.ts +0 -230
- package/src/app/core/services/network.service.spec.ts +0 -47
- package/src/app/core/services/network.service.ts +0 -761
- package/src/app/core/services/network.types.ts +0 -7
- package/src/app/core/services/network.utils.ts +0 -83
- package/src/app/core/services/pipes/account.pipes.ts +0 -22
- package/src/app/core/services/pipes/department-to-string.pipe.ts +0 -13
- package/src/app/core/services/pipes/person-to-string.pipe.ts +0 -13
- package/src/app/core/services/pipes/pipes.module.ts +0 -30
- package/src/app/core/services/pipes/referential-to-string.pipe.ts +0 -18
- package/src/app/core/services/pipes/usage-mode.pipes.ts +0 -23
- package/src/app/core/services/platform.service.spec.ts +0 -50
- package/src/app/core/services/platform.service.ts +0 -694
- package/src/app/core/services/storage/entities-storage.service.ts +0 -557
- package/src/app/core/services/storage/entity-store.class.ts +0 -589
- package/src/app/core/services/testing/local-settings.config.ts +0 -35
- package/src/app/core/services/testing/referential-filter.model.ts +0 -28
- package/src/app/core/services/testing/referential.validator.ts +0 -58
- package/src/app/core/services/testing/user-settings.config.ts +0 -77
- package/src/app/core/services/validator/account.validator.ts +0 -50
- package/src/app/core/services/validator/base.validator.class.ts +0 -51
- package/src/app/core/services/validator/local-settings.validator.ts +0 -59
- package/src/app/core/services/validator/user-settings.validator.ts +0 -22
- package/src/app/core/services/validator/user-token.validator.ts +0 -54
- package/src/app/core/settings/settings.module.ts +0 -15
- package/src/app/core/settings/settings.page.html +0 -300
- package/src/app/core/settings/settings.page.ts +0 -455
- package/src/app/core/table/async-table.class.ts +0 -2019
- package/src/app/core/table/column/actions-column.component.html +0 -219
- package/src/app/core/table/column/actions-column.component.scss +0 -17
- package/src/app/core/table/column/actions-column.component.ts +0 -83
- package/src/app/core/table/column/nav-actions-column.component.html +0 -119
- package/src/app/core/table/column/nav-actions-column.component.ts +0 -108
- package/src/app/core/table/column/row-field.component.html +0 -43
- package/src/app/core/table/column/row-field.component.scss +0 -0
- package/src/app/core/table/column/row-field.component.ts +0 -63
- package/src/app/core/table/entities-async-table-datasource.class.ts +0 -501
- package/src/app/core/table/entities-table-datasource.class.ts +0 -499
- package/src/app/core/table/memory-table.class.ts +0 -56
- package/src/app/core/table/table-select-columns.component.html +0 -56
- package/src/app/core/table/table-select-columns.component.ts +0 -49
- package/src/app/core/table/table.class.ts +0 -2080
- package/src/app/core/table/table.model.ts +0 -39
- package/src/app/core/table/table.module.ts +0 -28
- package/src/app/core/table/table.pipes.ts +0 -87
- package/src/app/core/table/table.utils.ts +0 -42
- package/src/app/core/table/testing/multi-table.testing.html +0 -456
- package/src/app/core/table/testing/multi-table.testing.ts +0 -263
- package/src/app/core/table/testing/table-validator.service.ts +0 -29
- package/src/app/core/table/testing/table.testing.html +0 -556
- package/src/app/core/table/testing/table.testing.module.ts +0 -16
- package/src/app/core/table/testing/table.testing.scss +0 -32
- package/src/app/core/table/testing/table.testing.ts +0 -329
- package/src/app/core/table/testing/table2-validator.service.ts +0 -19
- package/src/app/core/table/testing/table2.testing.html +0 -470
- package/src/app/core/table/testing/table2.testing.scss +0 -25
- package/src/app/core/table/testing/table2.testing.ts +0 -274
- package/src/app/shared/alerts.ts +0 -296
- package/src/app/shared/audio/audio.testing.html +0 -29
- package/src/app/shared/audio/audio.testing.module.ts +0 -21
- package/src/app/shared/audio/audio.testing.ts +0 -27
- package/src/app/shared/audio/audio.ts +0 -273
- package/src/app/shared/base64.utils.ts +0 -66
- package/src/app/shared/capacitor/keyboard.ts +0 -38
- package/src/app/shared/capacitor/plugins.ts +0 -12
- package/src/app/shared/constants.ts +0 -19
- package/src/app/shared/dates.ts +0 -206
- package/src/app/shared/debug/debug-service.class.ts +0 -7
- package/src/app/shared/debug/debug.component.html +0 -13
- package/src/app/shared/debug/debug.component.scss +0 -21
- package/src/app/shared/debug/debug.component.spec.ts +0 -24
- package/src/app/shared/debug/debug.component.ts +0 -25
- package/src/app/shared/debug/debug.module.ts +0 -14
- package/src/app/shared/directives/autofocus.directive.ts +0 -93
- package/src/app/shared/directives/autoresize.directive.ts +0 -67
- package/src/app/shared/directives/autotitle.directive.ts +0 -17
- package/src/app/shared/directives/directives.module.ts +0 -16
- package/src/app/shared/directives/drag-and-drop.directive.ts +0 -46
- package/src/app/shared/directives/ng-var.directive.ts +0 -31
- package/src/app/shared/directives/resizable/resizable.component.ts +0 -48
- package/src/app/shared/directives/resizable/resizable.directive.ts +0 -43
- package/src/app/shared/directives/resizable/resizable.module.ts +0 -9
- package/src/app/shared/directives/resizable/resizable.style.scss +0 -37
- package/src/app/shared/directives/resizable/resizable.template.html +0 -6
- package/src/app/shared/directives/throttled-click.directive.ts +0 -36
- package/src/app/shared/events.ts +0 -93
- package/src/app/shared/file/csv.utils.ts +0 -123
- package/src/app/shared/file/file.service.ts +0 -129
- package/src/app/shared/file/file.utils.ts +0 -142
- package/src/app/shared/file/images.utils.ts +0 -214
- package/src/app/shared/file/json.utils.ts +0 -82
- package/src/app/shared/file/uri.utils.ts +0 -31
- package/src/app/shared/file/url.utils.ts +0 -163
- package/src/app/shared/focusable.ts +0 -8
- package/src/app/shared/form/field.component.html +0 -380
- package/src/app/shared/form/field.component.scss +0 -7
- package/src/app/shared/form/field.component.ts +0 -344
- package/src/app/shared/form/field.model.ts +0 -158
- package/src/app/shared/form/loading-spinner.ts +0 -16
- package/src/app/shared/forms.ts +0 -577
- package/src/app/shared/functions.spec.ts +0 -197
- package/src/app/shared/functions.ts +0 -694
- package/src/app/shared/geolocation/geolocation.utils.ts +0 -105
- package/src/app/shared/gesture/gesture-config.ts +0 -43
- package/src/app/shared/gesture/hammer.utils.ts +0 -14
- package/src/app/shared/graph/colors.utils.ts +0 -69
- package/src/app/shared/graph/graph-colors.ts +0 -270
- package/src/app/shared/guard/component-dirty.guard.ts +0 -67
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.html +0 -11
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.scss +0 -37
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.ts +0 -14
- package/src/app/shared/hotkeys/hotkeys.service.ts +0 -165
- package/src/app/shared/hotkeys/shared-hotkeys.module.ts +0 -15
- package/src/app/shared/http/http.utils.ts +0 -95
- package/src/app/shared/image/gallery/image-gallery.component.html +0 -282
- package/src/app/shared/image/gallery/image-gallery.component.scss +0 -218
- package/src/app/shared/image/gallery/image-gallery.component.ts +0 -434
- package/src/app/shared/image/gallery/image-gallery.module.ts +0 -35
- package/src/app/shared/image/gallery/testing/gallegry.model.testing.ts +0 -23
- package/src/app/shared/image/gallery/testing/gallery.service.testing.ts +0 -99
- package/src/app/shared/image/gallery/testing/gallery.testing.html +0 -27
- package/src/app/shared/image/gallery/testing/gallery.testing.module.ts +0 -39
- package/src/app/shared/image/gallery/testing/gallery.testing.ts +0 -34
- package/src/app/shared/image/image.model.ts +0 -8
- package/src/app/shared/image/image.module.ts +0 -12
- package/src/app/shared/image/image.service.ts +0 -111
- package/src/app/shared/image/image.testing.module.ts +0 -16
- package/src/app/shared/inputs.ts +0 -330
- package/src/app/shared/interceptors/progess.interceptor.ts +0 -24
- package/src/app/shared/logging/log-level.model.ts +0 -53
- package/src/app/shared/logging/logger.model.ts +0 -117
- package/src/app/shared/logging/logging-service.class.ts +0 -131
- package/src/app/shared/logging/logging-service.config.ts +0 -29
- package/src/app/shared/logging/logging-service.module.ts +0 -19
- package/src/app/shared/markdown/markdown.component.html +0 -55
- package/src/app/shared/markdown/markdown.component.scss +0 -75
- package/src/app/shared/markdown/markdown.component.ts +0 -350
- package/src/app/shared/markdown/markdown.directive.ts +0 -28
- package/src/app/shared/markdown/markdown.modal.html +0 -42
- package/src/app/shared/markdown/markdown.modal.ts +0 -91
- package/src/app/shared/markdown/markdown.module.ts +0 -65
- package/src/app/shared/markdown/markdown.service.ts +0 -234
- package/src/app/shared/markdown/markdown.utils.ts +0 -90
- package/src/app/shared/markdown/testing/markdown.test.html +0 -50
- package/src/app/shared/markdown/testing/markdown.test.ts +0 -49
- package/src/app/shared/markdown/testing/markdown.testing.module.ts +0 -22
- package/src/app/shared/material/autocomplete/material.autocomplete.config.ts +0 -127
- package/src/app/shared/material/autocomplete/material.autocomplete.html +0 -400
- package/src/app/shared/material/autocomplete/material.autocomplete.module.ts +0 -41
- package/src/app/shared/material/autocomplete/material.autocomplete.scss +0 -54
- package/src/app/shared/material/autocomplete/material.autocomplete.ts +0 -1375
- package/src/app/shared/material/autocomplete/material.autocomplete.utils.ts +0 -21
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.html +0 -1164
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.spec.ts +0 -33
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.ts +0 -272
- package/src/app/shared/material/badge/badge.directive.ts +0 -217
- package/src/app/shared/material/badge/badge.module.ts +0 -12
- package/src/app/shared/material/badge/badge.test.html +0 -275
- package/src/app/shared/material/badge/badge.test.ts +0 -34
- package/src/app/shared/material/boolean/boolean.module.ts +0 -36
- package/src/app/shared/material/boolean/material.boolean.html +0 -271
- package/src/app/shared/material/boolean/material.boolean.scss +0 -27
- package/src/app/shared/material/boolean/material.boolean.ts +0 -343
- package/src/app/shared/material/boolean/testing/boolean.test.page.html +0 -469
- package/src/app/shared/material/boolean/testing/boolean.test.page.ts +0 -66
- package/src/app/shared/material/chips/chips.module.ts +0 -38
- package/src/app/shared/material/chips/material.chips.html +0 -233
- package/src/app/shared/material/chips/material.chips.scss +0 -67
- package/src/app/shared/material/chips/material.chips.ts +0 -834
- package/src/app/shared/material/chips/testing/chips.test.html +0 -207
- package/src/app/shared/material/chips/testing/chips.test.ts +0 -169
- package/src/app/shared/material/datetime/datetime.module.ts +0 -42
- package/src/app/shared/material/datetime/material.date.html +0 -186
- package/src/app/shared/material/datetime/material.date.scss +0 -17
- package/src/app/shared/material/datetime/material.date.ts +0 -512
- package/src/app/shared/material/datetime/material.dateshort.html +0 -194
- package/src/app/shared/material/datetime/material.dateshort.scss +0 -23
- package/src/app/shared/material/datetime/material.dateshort.ts +0 -497
- package/src/app/shared/material/datetime/material.datetime.html +0 -325
- package/src/app/shared/material/datetime/material.datetime.scss +0 -87
- package/src/app/shared/material/datetime/material.datetime.ts +0 -758
- package/src/app/shared/material/datetime/testing/mat-date-time.test.html +0 -794
- package/src/app/shared/material/datetime/testing/mat-date-time.test.ts +0 -155
- package/src/app/shared/material/datetime/testing/mat-date.test.html +0 -564
- package/src/app/shared/material/datetime/testing/mat-date.test.ts +0 -145
- package/src/app/shared/material/datetime/testing/mat-dateshort.test.html +0 -530
- package/src/app/shared/material/datetime/testing/mat-dateshort.test.ts +0 -133
- package/src/app/shared/material/duration/duration.module.ts +0 -33
- package/src/app/shared/material/duration/duration.utils.ts +0 -18
- package/src/app/shared/material/duration/material.duration.html +0 -116
- package/src/app/shared/material/duration/material.duration.scss +0 -28
- package/src/app/shared/material/duration/material.duration.ts +0 -308
- package/src/app/shared/material/duration/testing/mat-duration.test.html +0 -170
- package/src/app/shared/material/duration/testing/mat-duration.test.ts +0 -88
- package/src/app/shared/material/latlong/latlong.utils.ts +0 -376
- package/src/app/shared/material/latlong/material.latlong-input.html +0 -95
- package/src/app/shared/material/latlong/material.latlong-input.scss +0 -66
- package/src/app/shared/material/latlong/material.latlong-input.ts +0 -445
- package/src/app/shared/material/latlong/material.latlong.html +0 -90
- package/src/app/shared/material/latlong/material.latlong.module.ts +0 -37
- package/src/app/shared/material/latlong/material.latlong.scss +0 -0
- package/src/app/shared/material/latlong/material.latlong.ts +0 -203
- package/src/app/shared/material/latlong/testing/latlong.test.html +0 -1008
- package/src/app/shared/material/latlong/testing/latlong.test.ts +0 -144
- package/src/app/shared/material/material.animations.ts +0 -269
- package/src/app/shared/material/material.config.ts +0 -5
- package/src/app/shared/material/material.module.ts +0 -94
- package/src/app/shared/material/material.testing.module.ts +0 -192
- package/src/app/shared/material/memory/memory.utils.ts +0 -57
- package/src/app/shared/material/numpad/numpad.animation.ts +0 -1
- package/src/app/shared/material/numpad/numpad.append-to-input.directive.ts +0 -110
- package/src/app/shared/material/numpad/numpad.component.ts +0 -73
- package/src/app/shared/material/numpad/numpad.container.html +0 -37
- package/src/app/shared/material/numpad/numpad.container.scss +0 -55
- package/src/app/shared/material/numpad/numpad.container.ts +0 -152
- package/src/app/shared/material/numpad/numpad.content.html +0 -13
- package/src/app/shared/material/numpad/numpad.content.ts +0 -10
- package/src/app/shared/material/numpad/numpad.directive.ts +0 -159
- package/src/app/shared/material/numpad/numpad.dom-service.ts +0 -35
- package/src/app/shared/material/numpad/numpad.model.ts +0 -53
- package/src/app/shared/material/numpad/numpad.module.ts +0 -18
- package/src/app/shared/material/numpad/testing/numpad.test.html +0 -146
- package/src/app/shared/material/numpad/testing/numpad.test.ts +0 -44
- package/src/app/shared/material/paginator/material.paginator-i18n.ts +0 -47
- package/src/app/shared/material/stepper/material.stepper-i18n.ts +0 -17
- package/src/app/shared/material/swipe/material.swipe.html +0 -85
- package/src/app/shared/material/swipe/material.swipe.scss +0 -55
- package/src/app/shared/material/swipe/material.swipe.ts +0 -366
- package/src/app/shared/material/swipe/swipe.module.ts +0 -29
- package/src/app/shared/material/swipe/testing/swipe.test.html +0 -112
- package/src/app/shared/material/swipe/testing/swipe.test.ts +0 -74
- package/src/app/shared/material/test/test-component.css +0 -22
- package/src/app/shared/material/test/test-component.html +0 -40
- package/src/app/shared/material/test/test-component.ts +0 -295
- package/src/app/shared/material/testing/common.test.html +0 -227
- package/src/app/shared/material/testing/common.test.ts +0 -126
- package/src/app/shared/material/text/testing/text-form.testing.html +0 -213
- package/src/app/shared/material/text/testing/text-form.testing.ts +0 -30
- package/src/app/shared/material/text/text-form.component.html +0 -63
- package/src/app/shared/material/text/text-form.component.scss +0 -8
- package/src/app/shared/material/text/text-form.component.ts +0 -177
- package/src/app/shared/material/text/text-form.module.ts +0 -36
- package/src/app/shared/modules.ts +0 -12
- package/src/app/shared/named-filter/named-filter-selector.component.html +0 -77
- package/src/app/shared/named-filter/named-filter-selector.component.scss +0 -3
- package/src/app/shared/named-filter/named-filter-selector.component.ts +0 -287
- package/src/app/shared/named-filter/named-filter.model.ts +0 -64
- package/src/app/shared/named-filter/named-filter.module.ts +0 -15
- package/src/app/shared/named-filter/named-filter.service.ts +0 -100
- package/src/app/shared/named-filter/testing/named-filter-selector.testing.html +0 -61
- package/src/app/shared/named-filter/testing/named-filter-selector.testing.ts +0 -80
- package/src/app/shared/named-filter/testing/named-filter.testing.module.ts +0 -20
- package/src/app/shared/named-filter/testing/named-filter.testing.service.ts +0 -83
- package/src/app/shared/observables.ts +0 -139
- package/src/app/shared/pipes/arrays.pipe.ts +0 -153
- package/src/app/shared/pipes/badge.pipes.ts +0 -17
- package/src/app/shared/pipes/colors.pipe.ts +0 -24
- package/src/app/shared/pipes/date-diff-duration.pipe.ts +0 -53
- package/src/app/shared/pipes/date-format.pipe.ts +0 -73
- package/src/app/shared/pipes/date-from-now.pipe.ts +0 -17
- package/src/app/shared/pipes/dates.pipe.ts +0 -13
- package/src/app/shared/pipes/display-with.pipe.ts +0 -13
- package/src/app/shared/pipes/duration.pipe.spec.ts +0 -41
- package/src/app/shared/pipes/duration.pipe.ts +0 -28
- package/src/app/shared/pipes/file-size.pipe.ts +0 -50
- package/src/app/shared/pipes/form.pipes.ts +0 -209
- package/src/app/shared/pipes/highlight.pipe.ts +0 -41
- package/src/app/shared/pipes/html.pipes.ts +0 -49
- package/src/app/shared/pipes/latlong-format.pipe.ts +0 -28
- package/src/app/shared/pipes/maps.pipe.ts +0 -41
- package/src/app/shared/pipes/maskito.pipe.ts +0 -68
- package/src/app/shared/pipes/math.pipes.ts +0 -46
- package/src/app/shared/pipes/ng-init.pipe.ts +0 -13
- package/src/app/shared/pipes/number-format.pipe.ts +0 -11
- package/src/app/shared/pipes/observable.pipes.ts +0 -45
- package/src/app/shared/pipes/pipes.module.ts +0 -162
- package/src/app/shared/pipes/property.pipes.ts +0 -115
- package/src/app/shared/pipes/selection.pipes.ts +0 -165
- package/src/app/shared/pipes/string.pipes.ts +0 -128
- package/src/app/shared/pipes/translate-context.pipe.ts +0 -27
- package/src/app/shared/pipes/types.pipes.ts +0 -52
- package/src/app/shared/pipes/url.pipes.ts +0 -36
- package/src/app/shared/platforms.ts +0 -99
- package/src/app/shared/print/print.service.ts +0 -337
- package/src/app/shared/regexps.ts +0 -112
- package/src/app/shared/rx-state/rx-state.decorators.ts +0 -281
- package/src/app/shared/rx-state/rx-state.module.ts +0 -11
- package/src/app/shared/rx-state/rx-state.types.ts +0 -5
- package/src/app/shared/services/entity-service.class.ts +0 -120
- package/src/app/shared/services/job.utils.ts +0 -124
- package/src/app/shared/services/memory-entity-service.class.ts +0 -435
- package/src/app/shared/services/progress-bar.service.ts +0 -40
- package/src/app/shared/services/startable-observable-service.class.ts +0 -129
- package/src/app/shared/services/startable-service.class.ts +0 -120
- package/src/app/shared/services/storage.utils.ts +0 -53
- package/src/app/shared/services/translate-context.service.ts +0 -112
- package/src/app/shared/services/validator-service.class.ts +0 -13
- package/src/app/shared/services.ts +0 -134
- package/src/app/shared/shared-routing.module.ts +0 -69
- package/src/app/shared/shared.module.spec.ts +0 -13
- package/src/app/shared/shared.module.ts +0 -168
- package/src/app/shared/shared.testing.module.ts +0 -61
- package/src/app/shared/storage/storage-explorer.component.html +0 -160
- package/src/app/shared/storage/storage-explorer.component.scss +0 -37
- package/src/app/shared/storage/storage-explorer.component.spec.ts +0 -24
- package/src/app/shared/storage/storage-explorer.component.ts +0 -268
- package/src/app/shared/storage/storage-explorer.module.ts +0 -24
- package/src/app/shared/storage/storage-explorer.testing-routing.module.ts +0 -19
- package/src/app/shared/storage/storage-explorer.testing.module.ts +0 -19
- package/src/app/shared/storage/storage.service.ts +0 -131
- package/src/app/shared/storage/storage.utils.ts +0 -25
- package/src/app/shared/testing/maskito.test.html +0 -40
- package/src/app/shared/testing/maskito.test.ts +0 -33
- package/src/app/shared/testing/observable.test.html +0 -53
- package/src/app/shared/testing/observable.test.scss +0 -3
- package/src/app/shared/testing/observable.test.ts +0 -101
- package/src/app/shared/testing/tests.page.html +0 -22
- package/src/app/shared/testing/tests.page.ts +0 -32
- package/src/app/shared/toast/toast.testing.html +0 -50
- package/src/app/shared/toast/toast.testing.module.ts +0 -22
- package/src/app/shared/toast/toast.testing.ts +0 -52
- package/src/app/shared/toast/toasts.ts +0 -161
- package/src/app/shared/toolbar/modal-toolbar.html +0 -30
- package/src/app/shared/toolbar/modal-toolbar.scss +0 -0
- package/src/app/shared/toolbar/modal-toolbar.ts +0 -64
- package/src/app/shared/toolbar/toolbar.html +0 -68
- package/src/app/shared/toolbar/toolbar.module.ts +0 -18
- package/src/app/shared/toolbar/toolbar.scss +0 -0
- package/src/app/shared/toolbar/toolbar.ts +0 -262
- package/src/app/shared/types.ts +0 -44
- package/src/app/shared/upload-file/testing/upload-file.testing.html +0 -30
- package/src/app/shared/upload-file/testing/upload-file.testing.module.ts +0 -21
- package/src/app/shared/upload-file/testing/upload-file.testing.ts +0 -65
- package/src/app/shared/upload-file/upload-file-popover.component.html +0 -46
- package/src/app/shared/upload-file/upload-file-popover.component.scss +0 -6
- package/src/app/shared/upload-file/upload-file-popover.component.ts +0 -115
- package/src/app/shared/upload-file/upload-file.component.html +0 -57
- package/src/app/shared/upload-file/upload-file.component.scss +0 -60
- package/src/app/shared/upload-file/upload-file.component.ts +0 -222
- package/src/app/shared/upload-file/upload-file.model.ts +0 -40
- package/src/app/shared/validator/form-error-adapter.class.ts +0 -136
- package/src/app/shared/validator/validators.ts +0 -725
- package/src/app/shared/version/versions.ts +0 -89
- package/src/app/social/job/job.module.ts +0 -14
- package/src/app/social/job/progression/job-progression.component.html +0 -19
- package/src/app/social/job/progression/job-progression.component.scss +0 -15
- package/src/app/social/job/progression/job-progression.component.ts +0 -39
- package/src/app/social/job/progression/job-progression.icon.html +0 -30
- package/src/app/social/job/progression/job-progression.icon.scss +0 -7
- package/src/app/social/job/progression/job-progression.icon.ts +0 -276
- package/src/app/social/job/progression/job-progression.list.html +0 -25
- package/src/app/social/job/progression/job-progression.list.scss +0 -17
- package/src/app/social/job/progression/job-progression.list.ts +0 -40
- package/src/app/social/job/progression/job-progression.model.ts +0 -26
- package/src/app/social/job/progression/job-progression.service.ts +0 -97
- package/src/app/social/job/testing/job-progression.testing.html +0 -11
- package/src/app/social/job/testing/job-progression.testing.service.ts +0 -33
- package/src/app/social/job/testing/job-progression.testing.ts +0 -28
- package/src/app/social/job/testing/job.testing.module.ts +0 -13
- package/src/app/social/message/message.form.html +0 -71
- package/src/app/social/message/message.form.scss +0 -6
- package/src/app/social/message/message.form.ts +0 -128
- package/src/app/social/message/message.modal.html +0 -68
- package/src/app/social/message/message.modal.ts +0 -117
- package/src/app/social/message/message.model.ts +0 -78
- package/src/app/social/message/message.module.ts +0 -14
- package/src/app/social/message/message.service.ts +0 -104
- package/src/app/social/social.errors.ts +0 -10
- package/src/app/social/social.module.ts +0 -23
- package/src/app/social/social.testing.module.ts +0 -33
- package/src/app/social/user-event/notification/user-event-notification.icon.html +0 -17
- package/src/app/social/user-event/notification/user-event-notification.icon.ts +0 -112
- package/src/app/social/user-event/notification/user-event-notification.list.html +0 -142
- package/src/app/social/user-event/notification/user-event-notification.list.scss +0 -73
- package/src/app/social/user-event/notification/user-event-notification.list.ts +0 -270
- package/src/app/social/user-event/testing/user-event.testing.html +0 -26
- package/src/app/social/user-event/testing/user-event.testing.model.ts +0 -142
- package/src/app/social/user-event/testing/user-event.testing.module.ts +0 -13
- package/src/app/social/user-event/testing/user-event.testing.service.ts +0 -161
- package/src/app/social/user-event/testing/user-event.testing.ts +0 -282
- package/src/app/social/user-event/user-event.model.ts +0 -55
- package/src/app/social/user-event/user-event.module.ts +0 -15
- package/src/app/social/user-event/user-event.service.ts +0 -686
- package/src/browserslist +0 -9
- package/src/environments/environment.class.ts +0 -106
- package/src/environments/environment.loader.ts +0 -90
- package/src/environments/environment.prod.ts +0 -49
- package/src/environments/environment.test.ts +0 -92
- package/src/environments/environment.ts +0 -126
- package/src/favicon.ico +0 -0
- package/src/global.scss +0 -13
- package/src/index.html +0 -76
- package/src/main.ts +0 -18
- package/src/polyfills.ts +0 -34
- package/src/schema.graphql +0 -4381
- package/src/service-worker.js +0 -31
- package/src/test.ts +0 -30
- package/tsconfig.app.json +0 -15
- package/tsconfig.json +0 -47
- package/tsconfig.spec.json +0 -18
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
export class Alerts {
|
|
2
|
+
/**
|
|
3
|
+
* Ask the user to save before leaving. If return undefined: user has cancelled
|
|
4
|
+
* <p>
|
|
5
|
+
* from a routed page, prefer using ComponentDirtyGuard
|
|
6
|
+
*
|
|
7
|
+
* @param alertCtrl
|
|
8
|
+
* @param translate
|
|
9
|
+
* @param event
|
|
10
|
+
*/
|
|
11
|
+
static async askSaveBeforeLeave(alertCtrl, translate, event) {
|
|
12
|
+
let confirm = false;
|
|
13
|
+
let cancel = false;
|
|
14
|
+
const translations = translate.instant([
|
|
15
|
+
'COMMON.BTN_SAVE',
|
|
16
|
+
'COMMON.BTN_CANCEL',
|
|
17
|
+
'COMMON.BTN_ABORT_CHANGES',
|
|
18
|
+
'CONFIRM.SAVE',
|
|
19
|
+
'CONFIRM.ALERT_HEADER',
|
|
20
|
+
]);
|
|
21
|
+
const alert = await alertCtrl.create({
|
|
22
|
+
header: translations['CONFIRM.ALERT_HEADER'],
|
|
23
|
+
message: translations['CONFIRM.SAVE'],
|
|
24
|
+
buttons: [
|
|
25
|
+
{
|
|
26
|
+
text: translations['COMMON.BTN_CANCEL'],
|
|
27
|
+
role: 'cancel',
|
|
28
|
+
cssClass: 'secondary',
|
|
29
|
+
handler: () => {
|
|
30
|
+
cancel = true;
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
text: translations['COMMON.BTN_ABORT_CHANGES'],
|
|
35
|
+
cssClass: 'secondary',
|
|
36
|
+
handler: () => { },
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
text: translations['COMMON.BTN_SAVE'],
|
|
40
|
+
handler: () => {
|
|
41
|
+
confirm = true; // update upper value
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
});
|
|
46
|
+
await alert.present();
|
|
47
|
+
await alert.onDidDismiss();
|
|
48
|
+
if (confirm)
|
|
49
|
+
return true; // = Do save and leave
|
|
50
|
+
if (cancel) {
|
|
51
|
+
// Stop the event
|
|
52
|
+
if (event)
|
|
53
|
+
event.preventDefault();
|
|
54
|
+
return undefined; // User cancelled
|
|
55
|
+
}
|
|
56
|
+
return false; // Leave without saving
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Ask the user to conform an action. If return undefined: user has cancelled
|
|
60
|
+
*
|
|
61
|
+
* @param alertCtrl
|
|
62
|
+
* @param translate
|
|
63
|
+
* @param immediate is action has an immediate effect ?
|
|
64
|
+
* @param event
|
|
65
|
+
* @param interpolateParams
|
|
66
|
+
*/
|
|
67
|
+
static async askActionConfirmation(alertCtrl, translate, immediate, event, interpolateParams) {
|
|
68
|
+
const messageKey = immediate === true ? 'CONFIRM.ACTION_IMMEDIATE' : 'CONFIRM.ACTION';
|
|
69
|
+
return Alerts.askConfirmation(messageKey, alertCtrl, translate, event, interpolateParams);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Ask the user to confirm. If return undefined: user has cancelled
|
|
73
|
+
*
|
|
74
|
+
* @pram messageKey i18n message key
|
|
75
|
+
* @param messageKey
|
|
76
|
+
* @param alertCtrl
|
|
77
|
+
* @param translate
|
|
78
|
+
* @param event
|
|
79
|
+
* @param interpolateParams
|
|
80
|
+
*/
|
|
81
|
+
static async askConfirmation(messageKey, alertCtrl, translate, event, interpolateParams) {
|
|
82
|
+
if (!alertCtrl || !translate)
|
|
83
|
+
throw new Error("Missing required argument 'alertCtrl' or 'translate'");
|
|
84
|
+
let confirm = false;
|
|
85
|
+
let cancel = false;
|
|
86
|
+
const translations = translate.instant(['COMMON.BTN_YES_CONTINUE', 'COMMON.BTN_CANCEL', messageKey, 'CONFIRM.ALERT_HEADER'], interpolateParams);
|
|
87
|
+
const alert = await alertCtrl.create({
|
|
88
|
+
header: translations['CONFIRM.ALERT_HEADER'],
|
|
89
|
+
message: translations[messageKey],
|
|
90
|
+
buttons: [
|
|
91
|
+
{
|
|
92
|
+
text: translations['COMMON.BTN_CANCEL'],
|
|
93
|
+
role: 'cancel',
|
|
94
|
+
cssClass: 'secondary',
|
|
95
|
+
handler: () => {
|
|
96
|
+
cancel = true;
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
text: translations['COMMON.BTN_YES_CONTINUE'],
|
|
101
|
+
handler: () => {
|
|
102
|
+
confirm = true; // update upper value
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
});
|
|
107
|
+
await alert.present();
|
|
108
|
+
await alert.onDidDismiss();
|
|
109
|
+
if (confirm)
|
|
110
|
+
return true; // = Do save and leave
|
|
111
|
+
if (cancel) {
|
|
112
|
+
// Stop the event
|
|
113
|
+
if (event)
|
|
114
|
+
event.preventDefault();
|
|
115
|
+
return undefined; // User cancelled
|
|
116
|
+
}
|
|
117
|
+
return false; // Leave without saving
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Ask the user to save before leaving. If return undefined: user has cancelled
|
|
121
|
+
*
|
|
122
|
+
* @param alertCtrl
|
|
123
|
+
* @param translate
|
|
124
|
+
* @param event
|
|
125
|
+
* @param interpolateParams
|
|
126
|
+
*/
|
|
127
|
+
static async askDeleteConfirmation(alertCtrl, translate, event, interpolateParams) {
|
|
128
|
+
let confirm = false;
|
|
129
|
+
let cancel = false;
|
|
130
|
+
const translations = translate.instant(['COMMON.BTN_YES_DELETE', 'COMMON.BTN_CANCEL', 'CONFIRM.DELETE', 'CONFIRM.ALERT_HEADER'], interpolateParams);
|
|
131
|
+
const alert = await alertCtrl.create({
|
|
132
|
+
header: translations['CONFIRM.ALERT_HEADER'],
|
|
133
|
+
message: translations['CONFIRM.DELETE'],
|
|
134
|
+
buttons: [
|
|
135
|
+
{
|
|
136
|
+
text: translations['COMMON.BTN_CANCEL'],
|
|
137
|
+
role: 'cancel',
|
|
138
|
+
cssClass: 'secondary',
|
|
139
|
+
handler: () => {
|
|
140
|
+
cancel = true;
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
text: translations['COMMON.BTN_YES_DELETE'],
|
|
145
|
+
handler: () => {
|
|
146
|
+
confirm = true; // update upper value
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
});
|
|
151
|
+
await alert.present();
|
|
152
|
+
await alert.onDidDismiss();
|
|
153
|
+
if (confirm)
|
|
154
|
+
return true; // = Do save and leave
|
|
155
|
+
if (cancel) {
|
|
156
|
+
// Stop the event
|
|
157
|
+
if (event)
|
|
158
|
+
event.preventDefault();
|
|
159
|
+
return undefined; // User cancelled
|
|
160
|
+
}
|
|
161
|
+
return false; // Leave without saving
|
|
162
|
+
}
|
|
163
|
+
static async askSaveBeforeAction(alertCtrl, translate, opts, interpolateParams) {
|
|
164
|
+
let save = false;
|
|
165
|
+
let confirmed = false;
|
|
166
|
+
let alert;
|
|
167
|
+
const validMessageI18n = opts?.validMessageI18n || 'CONFIRM.SAVE_BEFORE_CONTINUE';
|
|
168
|
+
const invalidMessageI18n = opts?.invalidMessageI18n || 'CONFIRM.CANCEL_CHANGES';
|
|
169
|
+
// Ask user before save
|
|
170
|
+
if (opts?.valid) {
|
|
171
|
+
const translations = translate.instant(['COMMON.BTN_CANCEL', 'COMMON.BTN_SAVE', 'COMMON.BTN_ABORT_CHANGES', 'CONFIRM.ALERT_HEADER', validMessageI18n], interpolateParams);
|
|
172
|
+
alert = await alertCtrl.create({
|
|
173
|
+
header: translations['CONFIRM.ALERT_HEADER'],
|
|
174
|
+
message: translations[validMessageI18n],
|
|
175
|
+
buttons: [
|
|
176
|
+
{
|
|
177
|
+
text: translations['COMMON.BTN_CANCEL'],
|
|
178
|
+
role: 'cancel',
|
|
179
|
+
cssClass: 'secondary',
|
|
180
|
+
handler: () => { },
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
text: translations['COMMON.BTN_ABORT_CHANGES'],
|
|
184
|
+
cssClass: 'secondary',
|
|
185
|
+
handler: () => {
|
|
186
|
+
confirmed = true;
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
text: translations['COMMON.BTN_SAVE'],
|
|
191
|
+
handler: () => {
|
|
192
|
+
save = true;
|
|
193
|
+
confirmed = true;
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
],
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
const translations = translate.instant(['COMMON.BTN_ABORT_CHANGES', 'COMMON.BTN_CANCEL', 'CONFIRM.ALERT_HEADER', invalidMessageI18n], interpolateParams);
|
|
201
|
+
alert = await alertCtrl.create({
|
|
202
|
+
header: translations['CONFIRM.ALERT_HEADER'],
|
|
203
|
+
message: translations[invalidMessageI18n],
|
|
204
|
+
buttons: [
|
|
205
|
+
{
|
|
206
|
+
text: translations['COMMON.BTN_ABORT_CHANGES'],
|
|
207
|
+
cssClass: 'secondary',
|
|
208
|
+
handler: () => {
|
|
209
|
+
confirmed = true;
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
text: translations['COMMON.BTN_CANCEL'],
|
|
214
|
+
role: 'cancel',
|
|
215
|
+
handler: () => { },
|
|
216
|
+
},
|
|
217
|
+
],
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
await alert.present();
|
|
221
|
+
await alert.onDidDismiss();
|
|
222
|
+
return { confirmed, save };
|
|
223
|
+
}
|
|
224
|
+
static async showError(messageKey, alertCtrl, translate, opts, interpolateParams) {
|
|
225
|
+
if (!messageKey || !alertCtrl || !translate)
|
|
226
|
+
throw new Error("Missing a required argument ('messageKey', 'alertCtrl' or 'translate')");
|
|
227
|
+
const titleKey = (opts && opts.titleKey) || 'ERROR.ALERT_HEADER';
|
|
228
|
+
const translations = translate.instant(['COMMON.BTN_OK', messageKey, titleKey], interpolateParams);
|
|
229
|
+
const alert = await alertCtrl.create({
|
|
230
|
+
header: translations[titleKey],
|
|
231
|
+
message: translations[messageKey],
|
|
232
|
+
buttons: [
|
|
233
|
+
{
|
|
234
|
+
text: translations['COMMON.BTN_OK'],
|
|
235
|
+
role: 'cancel',
|
|
236
|
+
},
|
|
237
|
+
],
|
|
238
|
+
});
|
|
239
|
+
await alert.present();
|
|
240
|
+
await alert.onDidDismiss();
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvYWxlcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxNQUFNO0lBQ2pCOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxTQUEwQixFQUFFLFNBQTJCLEVBQUUsS0FBYTtRQUNwRyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDckMsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQiwwQkFBMEI7WUFDMUIsY0FBYztZQUNkLHNCQUFzQjtTQUN2QixDQUFDLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDbkMsTUFBTSxFQUFFLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQztZQUM1QyxPQUFPLEVBQUUsWUFBWSxDQUFDLGNBQWMsQ0FBQztZQUNyQyxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQztvQkFDdkMsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLE9BQU8sRUFBRSxHQUFHLEVBQUU7d0JBQ1osTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDaEIsQ0FBQztpQkFDRjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsWUFBWSxDQUFDLDBCQUEwQixDQUFDO29CQUM5QyxRQUFRLEVBQUUsV0FBVztvQkFDckIsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7aUJBQ2xCO2dCQUNEO29CQUNFLElBQUksRUFBRSxZQUFZLENBQUMsaUJBQWlCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUU7d0JBQ1osT0FBTyxHQUFHLElB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U0FBMkIsRUFDM0IsSUFFQyxFQUNELGlCQUF1QjtRQUV2QixJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0VBQXdFLENBQUMsQ0FBQztRQUN2SSxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksb0JBQW9CLENBQUM7UUFDakUsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNuRyxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDbkMsTUFBTSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDOUIsT0FBTyxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUM7WUFDakMsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxZQUFZLENBQUMsZUFBZSxDQUFDO29CQUNuQyxJQUFJLEVBQUUsUUFBUTtpQkFDZjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEIsTUFBTSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQWxlcnRzIHtcbiAgLyoqXG4gICAqIEFzayB0aGUgdXNlciB0byBzYXZlIGJlZm9yZSBsZWF2aW5nLiBJZiByZXR1cm4gdW5kZWZpbmVkOiB1c2VyIGhhcyBjYW5jZWxsZWRcbiAgICogPHA+XG4gICAqICAgZnJvbSBhIHJvdXRlZCBwYWdlLCBwcmVmZXIgdXNpbmcgQ29tcG9uZW50RGlydHlHdWFyZFxuICAgKlxuICAgKiBAcGFyYW0gYWxlcnRDdHJsXG4gICAqIEBwYXJhbSB0cmFuc2xhdGVcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBzdGF0aWMgYXN5bmMgYXNrU2F2ZUJlZm9yZUxlYXZlKGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGV2ZW50PzogRXZlbnQpOiBQcm9taXNlPGJvb2xlYW4gfCB1bmRlZmluZWQ+IHtcbiAgICBsZXQgY29uZmlybSA9IGZhbHNlO1xuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSB0cmFuc2xhdGUuaW5zdGFudChbXG4gICAgICAnQ09NTU9OLkJUTl9TQVZFJyxcbiAgICAgICdDT01NT04uQlROX0NBTkNFTCcsXG4gICAgICAnQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJyxcbiAgICAgICdDT05GSVJNLlNBVkUnLFxuICAgICAgJ0NPTkZJUk0uQUxFUlRfSEVBREVSJyxcbiAgICBdKTtcbiAgICBjb25zdCBhbGVydCA9IGF3YWl0IGFsZXJ0Q3RybC5jcmVhdGUoe1xuICAgICAgaGVhZGVyOiB0cmFuc2xhdGlvbnNbJ0NPTkZJUk0uQUxFUlRfSEVBREVSJ10sXG4gICAgICBtZXNzYWdlOiB0cmFuc2xhdGlvbnNbJ0NPTkZJUk0uU0FWRSddLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX0NBTkNFTCddLFxuICAgICAgICAgIHJvbGU6ICdjYW5jZWwnLFxuICAgICAgICAgIGNzc0NsYXNzOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQUJPUlRfQ0hBTkdFUyddLFxuICAgICAgICAgIGNzc0NsYXNzOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7fSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IHRyYW5zbGF0aW9uc1snQ09NTU9OLkJUTl9TQVZFJ10sXG4gICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgY29uZmlybSA9IHRydWU7IC8vIHVwZGF0ZSB1cHBlciB2YWx1ZVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgICBhd2FpdCBhbGVydC5vbkRpZERpc21pc3MoKTtcblxuICAgIGlmIChjb25maXJtKSByZXR1cm4gdHJ1ZTsgLy8gPSBEbyBzYXZlIGFuZCBsZWF2ZVxuXG4gICAgaWYgKGNhbmNlbCkge1xuICAgICAgLy8gU3RvcCB0aGUgZXZlbnRcbiAgICAgIGlmIChldmVudCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gVXNlciBjYW5jZWxsZWRcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7IC8vIExlYXZlIHdpdGhvdXQgc2F2aW5nXG4gIH1cblxuICAvKipcbiAgICogQXNrIHRoZSB1c2VyIHRvIGNvbmZvcm0gYW4gYWN0aW9uLiBJZiByZXR1cm4gdW5kZWZpbmVkOiB1c2VyIGhhcyBjYW5jZWxsZWRcbiAgICpcbiAgICogQHBhcmFtIGFsZXJ0Q3RybFxuICAgKiBAcGFyYW0gdHJhbnNsYXRlXG4gICAqIEBwYXJhbSBpbW1lZGlhdGUgaXMgYWN0aW9uIGhhcyBhbiBpbW1lZGlhdGUgZWZmZWN0ID9cbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwYXJhbSBpbnRlcnBvbGF0ZVBhcmFtc1xuICAgKi9cbiAgc3RhdGljIGFzeW5jIGFza0FjdGlvbkNvbmZpcm1hdGlvbihcbiAgICBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgaW1tZWRpYXRlPzogYm9vbGVhbixcbiAgICBldmVudD86IEV2ZW50LFxuICAgIGludGVycG9sYXRlUGFyYW1zPzogYW55XG4gICk6IFByb21pc2U8Ym9vbGVhbiB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IG1lc3NhZ2VLZXkgPSBpbW1lZGlhdGUgPT09IHRydWUgPyAnQ09ORklSTS5BQ1RJT05fSU1NRURJQVRFJyA6ICdDT05GSVJNLkFDVElPTic7XG4gICAgcmV0dXJuIEFsZXJ0cy5hc2tDb25maXJtYXRpb24obWVzc2FnZUtleSwgYWxlcnRDdHJsLCB0cmFuc2xhdGUsIGV2ZW50LCBpbnRlcnBvbGF0ZVBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQXNrIHRoZSB1c2VyIHRvIGNvbmZpcm0uIElmIHJldHVybiB1bmRlZmluZWQ6IHVzZXIgaGFzIGNhbmNlbGxlZFxuICAgKlxuICAgKiBAcHJhbSBtZXNzYWdlS2V5IGkxOG4gbWVzc2FnZSBrZXlcbiAgICogQHBhcmFtIG1lc3NhZ2VLZXlcbiAgICogQHBhcmFtIGFsZXJ0Q3RybFxuICAgKiBAcGFyYW0gdHJhbnNsYXRlXG4gICAqIEBwYXJhbSBldmVudFxuICAgKiBAcGFyYW0gaW50ZXJwb2xhdGVQYXJhbXNcbiAgICovXG4gIHN0YXRpYyBhc3luYyBhc2tDb25maXJtYXRpb24oXG4gICAgbWVzc2FnZUtleTogc3RyaW5nLFxuICAgIGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBldmVudD86IEV2ZW50LFxuICAgIGludGVycG9sYXRlUGFyYW1zPzogYW55XG4gICk6IFByb21pc2U8Ym9vbGVhbiB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghYWxlcnRDdHJsIHx8ICF0cmFuc2xhdGUpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQgJ2FsZXJ0Q3RybCcgb3IgJ3RyYW5zbGF0ZSdcIik7XG4gICAgbGV0IGNvbmZpcm0gPSBmYWxzZTtcbiAgICBsZXQgY2FuY2VsID0gZmFsc2U7XG4gICAgY29uc3QgdHJhbnNsYXRpb25zID0gdHJhbnNsYXRlLmluc3RhbnQoWydDT01NT04uQlROX1lFU19DT05USU5VRScsICdDT01NT04uQlROX0NBTkNFTCcsIG1lc3NhZ2VLZXksICdDT05GSVJNLkFMRVJUX0hFQURFUiddLCBpbnRlcnBvbGF0ZVBhcmFtcyk7XG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCBhbGVydEN0cmwuY3JlYXRlKHtcbiAgICAgIGhlYWRlcjogdHJhbnNsYXRpb25zWydDT05GSVJNLkFMRVJUX0hFQURFUiddLFxuICAgICAgbWVzc2FnZTogdHJhbnNsYXRpb25zW21lc3NhZ2VLZXldLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX0NBTkNFTCddLFxuICAgICAgICAgIHJvbGU6ICdjYW5jZWwnLFxuICAgICAgICAgIGNzc0NsYXNzOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fWUVTX0NPTlRJTlVFJ10sXG4gICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgY29uZmlybSA9IHRydWU7IC8vIHVwZGF0ZSB1cHBlciB2YWx1ZVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgICBhd2FpdCBhbGVydC5vbkRpZERpc21pc3MoKTtcblxuICAgIGlmIChjb25maXJtKSByZXR1cm4gdHJ1ZTsgLy8gPSBEbyBzYXZlIGFuZCBsZWF2ZVxuXG4gICAgaWYgKGNhbmNlbCkge1xuICAgICAgLy8gU3RvcCB0aGUgZXZlbnRcbiAgICAgIGlmIChldmVudCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gVXNlciBjYW5jZWxsZWRcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7IC8vIExlYXZlIHdpdGhvdXQgc2F2aW5nXG4gIH1cblxuICAvKipcbiAgICogQXNrIHRoZSB1c2VyIHRvIHNhdmUgYmVmb3JlIGxlYXZpbmcuIElmIHJldHVybiB1bmRlZmluZWQ6IHVzZXIgaGFzIGNhbmNlbGxlZFxuICAgKlxuICAgKiBAcGFyYW0gYWxlcnRDdHJsXG4gICAqIEBwYXJhbSB0cmFuc2xhdGVcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwYXJhbSBpbnRlcnBvbGF0ZVBhcmFtc1xuICAgKi9cbiAgc3RhdGljIGFzeW5jIGFza0RlbGV0ZUNvbmZpcm1hdGlvbihcbiAgICBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgZXZlbnQ/OiBFdmVudCxcbiAgICBpbnRlcnBvbGF0ZVBhcmFtcz86IGFueVxuICApOiBQcm9taXNlPGJvb2xlYW4gfCB1bmRlZmluZWQ+IHtcbiAgICBsZXQgY29uZmlybSA9IGZhbHNlO1xuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSB0cmFuc2xhdGUuaW5zdGFudChcbiAgICAgIFsnQ09NTU9OLkJUTl9ZRVNfREVMRVRFJywgJ0NPTU1PTi5CVE5fQ0FOQ0VMJywgJ0NPTkZJUk0uREVMRVRFJywgJ0NPTkZJUk0uQUxFUlRfSEVBREVSJ10sXG4gICAgICBpbnRlcnBvbGF0ZVBhcmFtc1xuICAgICk7XG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCBhbGVydEN0cmwuY3JlYXRlKHtcbiAgICAgIGhlYWRlcjogdHJhbnNsYXRpb25zWydDT05GSVJNLkFMRVJUX0hFQURFUiddLFxuICAgICAgbWVzc2FnZTogdHJhbnNsYXRpb25zWydDT05GSVJNLkRFTEVURSddLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX0NBTkNFTCddLFxuICAgICAgICAgIHJvbGU6ICdjYW5jZWwnLFxuICAgICAgICAgIGNzc0NsYXNzOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fWUVTX0RFTEVURSddLFxuICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbmZpcm0gPSB0cnVlOyAvLyB1cGRhdGUgdXBwZXIgdmFsdWVcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICBhd2FpdCBhbGVydC5wcmVzZW50KCk7XG4gICAgYXdhaXQgYWxlcnQub25EaWREaXNtaXNzKCk7XG5cbiAgICBpZiAoY29uZmlybSkgcmV0dXJuIHRydWU7IC8vID0gRG8gc2F2ZSBhbmQgbGVhdmVcblxuICAgIGlmIChjYW5jZWwpIHtcbiAgICAgIC8vIFN0b3AgdGhlIGV2ZW50XG4gICAgICBpZiAoZXZlbnQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIFVzZXIgY2FuY2VsbGVkXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlOyAvLyBMZWF2ZSB3aXRob3V0IHNhdmluZ1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGFza1NhdmVCZWZvcmVBY3Rpb24oXG4gICAgYWxlcnRDdHJsOiBBbGVydENvbnRyb2xsZXIsXG4gICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIG9wdHM/OiB7IHZhbGlkPzogYm9vbGVhbjsgdmFsaWRNZXNzYWdlSTE4bj86IHN0cmluZzsgaW52YWxpZE1lc3NhZ2VJMThuPzogc3RyaW5nIH0sXG4gICAgaW50ZXJwb2xhdGVQYXJhbXM/OiBhbnlcbiAgKTogUHJvbWlzZTx7IGNvbmZpcm1lZDogYm9vbGVhbjsgc2F2ZTogYm9vbGVhbiB9IHwgdW5kZWZpbmVkPiB7XG4gICAgbGV0IHNhdmUgPSBmYWxzZTtcbiAgICBsZXQgY29uZmlybWVkID0gZmFsc2U7XG4gICAgbGV0IGFsZXJ0OiBIVE1MSW9uQWxlcnRFbGVtZW50O1xuICAgIGNvbnN0IHZhbGlkTWVzc2FnZUkxOG4gPSBvcHRzPy52YWxpZE1lc3NhZ2VJMThuIHx8ICdDT05GSVJNLlNBVkVfQkVGT1JFX0NPTlRJTlVFJztcbiAgICBjb25zdCBpbnZhbGlkTWVzc2FnZUkxOG4gPSBvcHRzPy5pbnZhbGlkTWVzc2FnZUkxOG4gfHwgJ0NPTkZJUk0uQ0FOQ0VMX0NIQU5HRVMnO1xuXG4gICAgLy8gQXNrIHVzZXIgYmVmb3JlIHNhdmVcbiAgICBpZiAob3B0cz8udmFsaWQpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9ucyA9IHRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICBbJ0NPTU1PTi5CVE5fQ0FOQ0VMJywgJ0NPTU1PTi5CVE5fU0FWRScsICdDT01NT04uQlROX0FCT1JUX0NIQU5HRVMnLCAnQ09ORklSTS5BTEVSVF9IRUFERVInLCB2YWxpZE1lc3NhZ2VJMThuXSxcbiAgICAgICAgaW50ZXJwb2xhdGVQYXJhbXNcbiAgICAgICk7XG4gICAgICBhbGVydCA9IGF3YWl0IGFsZXJ0Q3RybC5jcmVhdGUoe1xuICAgICAgICBoZWFkZXI6IHRyYW5zbGF0aW9uc1snQ09ORklSTS5BTEVSVF9IRUFERVInXSxcbiAgICAgICAgbWVzc2FnZTogdHJhbnNsYXRpb25zW3ZhbGlkTWVzc2FnZUkxOG5dLFxuICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX0NBTkNFTCddLFxuICAgICAgICAgICAgcm9sZTogJ2NhbmNlbCcsXG4gICAgICAgICAgICBjc3NDbGFzczogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7fSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6IHRyYW5zbGF0aW9uc1snQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJ10sXG4gICAgICAgICAgICBjc3NDbGFzczogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbmZpcm1lZCA9IHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX1NBVkUnXSxcbiAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgc2F2ZSA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbmZpcm1lZCA9IHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gdHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgIFsnQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJywgJ0NPTU1PTi5CVE5fQ0FOQ0VMJywgJ0NPTkZJUk0uQUxFUlRfSEVBREVSJywgaW52YWxpZE1lc3NhZ2VJMThuXSxcbiAgICAgICAgaW50ZXJwb2xhdGVQYXJhbXNcbiAgICAgICk7XG5cbiAgICAgIGFsZXJ0ID0gYXdhaXQgYWxlcnRDdHJsLmNyZWF0ZSh7XG4gICAgICAgIGhlYWRlcjogdHJhbnNsYXRpb25zWydDT05GSVJNLkFMRVJUX0hFQURFUiddLFxuICAgICAgICBtZXNzYWdlOiB0cmFuc2xhdGlvbnNbaW52YWxpZE1lc3NhZ2VJMThuXSxcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6IHRyYW5zbGF0aW9uc1snQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJ10sXG4gICAgICAgICAgICBjc3NDbGFzczogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbmZpcm1lZCA9IHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX0NBTkNFTCddLFxuICAgICAgICAgICAgcm9sZTogJ2NhbmNlbCcsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7fSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXdhaXQgYWxlcnQucHJlc2VudCgpO1xuICAgIGF3YWl0IGFsZXJ0Lm9uRGlkRGlzbWlzcygpO1xuXG4gICAgcmV0dXJuIHsgY29uZmlybWVkLCBzYXZlIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgc2hvd0Vycm9yKFxuICAgIG1lc3NhZ2VLZXk6IHN0cmluZyxcbiAgICBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgb3B0cz86IHtcbiAgICAgIHRpdGxlS2V5Pzogc3RyaW5nO1xuICAgIH0sXG4gICAgaW50ZXJwb2xhdGVQYXJhbXM/OiBhbnlcbiAgKSB7XG4gICAgaWYgKCFtZXNzYWdlS2V5IHx8ICFhbGVydEN0cmwgfHwgIXRyYW5zbGF0ZSkgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50ICgnbWVzc2FnZUtleScsICdhbGVydEN0cmwnIG9yICd0cmFuc2xhdGUnKVwiKTtcbiAgICBjb25zdCB0aXRsZUtleSA9IChvcHRzICYmIG9wdHMudGl0bGVLZXkpIHx8ICdFUlJPUi5BTEVSVF9IRUFERVInO1xuICAgIGNvbnN0IHRyYW5zbGF0aW9ucyA9IHRyYW5zbGF0ZS5pbnN0YW50KFsnQ09NTU9OLkJUTl9PSycsIG1lc3NhZ2VLZXksIHRpdGxlS2V5XSwgaW50ZXJwb2xhdGVQYXJhbXMpO1xuICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgYWxlcnRDdHJsLmNyZWF0ZSh7XG4gICAgICBoZWFkZXI6IHRyYW5zbGF0aW9uc1t0aXRsZUtleV0sXG4gICAgICBtZXNzYWdlOiB0cmFuc2xhdGlvbnNbbWVzc2FnZUtleV0sXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fT0snXSxcbiAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgYXdhaXQgYWxlcnQucHJlc2VudCgpO1xuICAgIGF3YWl0IGFsZXJ0Lm9uRGlkRGlzbWlzcygpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { AudioMode } from '@awesome-cordova-plugins/audio-management/ngx';
|
|
3
|
+
import { isNil, sleep, toBoolean } from '../functions';
|
|
4
|
+
import { StartableService } from '../services/startable-service.class';
|
|
5
|
+
import { Haptics } from '@capacitor/haptics';
|
|
6
|
+
import { NativeAudio } from '@capacitor-community/native-audio';
|
|
7
|
+
import { Capacitor } from '@capacitor/core';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@ionic/angular";
|
|
10
|
+
import * as i2 from "@awesome-cordova-plugins/audio-management/ngx";
|
|
11
|
+
const SYSTEM_SOUNDS = [
|
|
12
|
+
{ assetId: 'startup', assetPath: 'assets/audio/unfa-ping.mp3', vibration: [300, 250, 750] },
|
|
13
|
+
{ assetId: 'beep-confirm', assetPath: 'assets/audio/beep-confirm.mp3', vibration: 250 },
|
|
14
|
+
{ assetId: 'beep-error', assetPath: 'assets/audio/beep-error.mp3', vibration: 1000 },
|
|
15
|
+
{ assetId: 'beep-notification', assetPath: 'assets/audio/beep-notification.mp3', vibration: [450, 150, 450] },
|
|
16
|
+
];
|
|
17
|
+
const DEFAULT_AUDIO_MODE_RETURN = {
|
|
18
|
+
audioMode: AudioMode.NORMAL,
|
|
19
|
+
label: 'Normal',
|
|
20
|
+
};
|
|
21
|
+
function audioModeToString(mode) {
|
|
22
|
+
switch (mode) {
|
|
23
|
+
case AudioMode.SILENT:
|
|
24
|
+
return 'Silent';
|
|
25
|
+
case AudioMode.NORMAL:
|
|
26
|
+
return 'Normal';
|
|
27
|
+
case AudioMode.VIBRATE:
|
|
28
|
+
return 'Vibrate';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export class AudioProvider extends StartableService {
|
|
32
|
+
platform;
|
|
33
|
+
audioManagement;
|
|
34
|
+
_audioType;
|
|
35
|
+
_audioMode = AudioMode.NORMAL;
|
|
36
|
+
_enableAudioManagment = false;
|
|
37
|
+
_assetPathPrefix = '';
|
|
38
|
+
_preloadedSounds = {};
|
|
39
|
+
_htmlAudioCache = {};
|
|
40
|
+
constructor(platform, audioManagement) {
|
|
41
|
+
super(platform);
|
|
42
|
+
this.platform = platform;
|
|
43
|
+
this.audioManagement = audioManagement;
|
|
44
|
+
console.info(`[audio] Create audio provider`);
|
|
45
|
+
}
|
|
46
|
+
async ngOnStart() {
|
|
47
|
+
const cordova = this.platform.is('cordova');
|
|
48
|
+
this._assetPathPrefix = cordova ? 'public/' : '';
|
|
49
|
+
this._audioType = cordova && Capacitor.isPluginAvailable('NativeAudio') ? 'native' : 'html5';
|
|
50
|
+
this._enableAudioManagment = cordova && this.audioManagement && this.platform.is('android');
|
|
51
|
+
console.info(`[audio] Starting audio provider {type: ${this._audioType}, management: ${this._enableAudioManagment}}...`);
|
|
52
|
+
// Listen audio mode changed
|
|
53
|
+
if (this._enableAudioManagment) {
|
|
54
|
+
await this.readAudioMode();
|
|
55
|
+
}
|
|
56
|
+
// Pre-loading system sounds
|
|
57
|
+
console.debug('[audio] Preloading audio sounds...');
|
|
58
|
+
let errorCount = 0;
|
|
59
|
+
await Promise.all(SYSTEM_SOUNDS.map((s) => {
|
|
60
|
+
// Disable vibration in HTML 5 mode
|
|
61
|
+
if (this._audioType === 'html5')
|
|
62
|
+
s.vibration = undefined;
|
|
63
|
+
return this.preload(s).catch((_) => errorCount++);
|
|
64
|
+
}));
|
|
65
|
+
if (errorCount > 0) {
|
|
66
|
+
console.warn('[audio] Preloading audio sounds [OK] with ${errorCount} errors during preload.');
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
console.debug('[audio] Preloading audio sounds [OK]');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
playBeepConfirm() {
|
|
73
|
+
return this.play('beep-confirm', {
|
|
74
|
+
// Vibrate only if in vibration mode
|
|
75
|
+
vibrate: this._audioMode === AudioMode.VIBRATE,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
playBeepError() {
|
|
79
|
+
return this.play('beep-error', {
|
|
80
|
+
// Always vibrate (will skip vibration if silent mode)
|
|
81
|
+
vibrate: true,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
async playBeepNotification() {
|
|
85
|
+
await this.play('beep-notification', {
|
|
86
|
+
vibrate: this._audioMode === AudioMode.VIBRATE,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
async playStartupSound() {
|
|
90
|
+
return this.play('startup');
|
|
91
|
+
}
|
|
92
|
+
async preload(sound) {
|
|
93
|
+
if (!sound?.assetId)
|
|
94
|
+
return; // Skip
|
|
95
|
+
if (this._preloadedSounds[sound.assetId])
|
|
96
|
+
return; // Already preloaded
|
|
97
|
+
if (isNil(this._audioType))
|
|
98
|
+
await this.ready();
|
|
99
|
+
const assetPath = (this._assetPathPrefix || '') + sound.assetPath;
|
|
100
|
+
console.info(`[audio] Preloading sound '${sound.assetId}', from file '${assetPath}'...`);
|
|
101
|
+
try {
|
|
102
|
+
if (this._audioType === 'native') {
|
|
103
|
+
this._preloadedSounds[sound.assetId] = sound;
|
|
104
|
+
await NativeAudio.preload({
|
|
105
|
+
audioChannelNum: 1,
|
|
106
|
+
isUrl: false,
|
|
107
|
+
...sound,
|
|
108
|
+
assetPath,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
this._htmlAudioCache[sound.assetId] = new Audio(assetPath);
|
|
113
|
+
this._preloadedSounds[sound.assetId] = sound;
|
|
114
|
+
}
|
|
115
|
+
// Add to map
|
|
116
|
+
console.info(`[audio] Preloading sound '${sound.assetId}' [OK]`);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
const errorMsg = err?.message || err;
|
|
120
|
+
if (errorMsg === 'Audio Asset already exists') {
|
|
121
|
+
console.info(`[audio] Preloading sound '${sound.assetId}': Skipped (${errorMsg})`);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
this._preloadedSounds[sound.assetId] = null;
|
|
125
|
+
console.error(`[audio] Unable to preload sound '${sound.assetId}', from file '${assetPath}': ${errorMsg}\n${err?.originalStack || ''}`);
|
|
126
|
+
throw err;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
async play(assetId, opts) {
|
|
131
|
+
// Make sure provider is ready
|
|
132
|
+
if (!this.started)
|
|
133
|
+
await this.ready();
|
|
134
|
+
const sound = this._preloadedSounds[assetId];
|
|
135
|
+
if (!sound) {
|
|
136
|
+
throw Error(`Unable to find sound '${assetId}'. Please call preload() before playing a sound.`);
|
|
137
|
+
}
|
|
138
|
+
// If silent: skip
|
|
139
|
+
if (this._audioMode === AudioMode.SILENT)
|
|
140
|
+
return;
|
|
141
|
+
const promises = [];
|
|
142
|
+
// Normal mode = can play the sound
|
|
143
|
+
if (this._audioMode === AudioMode.NORMAL) {
|
|
144
|
+
// Use native audio
|
|
145
|
+
if (this._audioType === 'native') {
|
|
146
|
+
promises.push(NativeAudio.play({
|
|
147
|
+
assetId: sound.assetId,
|
|
148
|
+
time: sound.time || 0,
|
|
149
|
+
}));
|
|
150
|
+
}
|
|
151
|
+
// Or HTML 5 audio
|
|
152
|
+
else {
|
|
153
|
+
const audio = this._htmlAudioCache[assetId] || new Audio(sound.assetPath);
|
|
154
|
+
promises.push(audio.play());
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Vibrate mode: by default make vibration is enable
|
|
158
|
+
else if (isNil(sound.vibration) && isNil(opts && opts.vibrate)) {
|
|
159
|
+
opts = opts || {};
|
|
160
|
+
opts.vibrate = true;
|
|
161
|
+
}
|
|
162
|
+
// Do vibration (if sound as default vibration, or if user ask for it)
|
|
163
|
+
if (toBoolean(opts?.vibrate, !!sound.vibration)) {
|
|
164
|
+
promises.push(this.vibrate((opts && opts.vibration) || sound.vibration));
|
|
165
|
+
}
|
|
166
|
+
return (promises.length === 1 ? promises[0] : Promise.all(promises)).catch((err) => {
|
|
167
|
+
console.error(`[audio] Error while playing audio sound '${assetId}': ${(err && err.message) || err}`, err);
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
async unload(assetId) {
|
|
171
|
+
if (isNil(this._audioType))
|
|
172
|
+
await this.ready();
|
|
173
|
+
// Remove from map
|
|
174
|
+
this._preloadedSounds[assetId] = undefined;
|
|
175
|
+
// Native unload
|
|
176
|
+
if (this._audioType === 'native') {
|
|
177
|
+
try {
|
|
178
|
+
await NativeAudio.unload({ assetId });
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
console.error(`[audio] Unable to unload audio '${assetId}': ${(err && err.message) || err}`, err);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
// HTML5 audio unload
|
|
185
|
+
else {
|
|
186
|
+
this._htmlAudioCache[assetId].remove();
|
|
187
|
+
this._htmlAudioCache[assetId] = undefined;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
*
|
|
192
|
+
* @param duration Duration of the vibration in milliseconds.
|
|
193
|
+
*/
|
|
194
|
+
async vibrate(duration) {
|
|
195
|
+
if (!this.started)
|
|
196
|
+
await this.ready();
|
|
197
|
+
if (Array.isArray(duration)) {
|
|
198
|
+
if (this._debug)
|
|
199
|
+
console.debug('[audio] Vibrate: ' + JSON.stringify(duration));
|
|
200
|
+
for (let i = 0; i < duration.length; i++) {
|
|
201
|
+
const time = duration[i];
|
|
202
|
+
const silent = i % 2 !== 0;
|
|
203
|
+
if (silent) {
|
|
204
|
+
if (this._debug)
|
|
205
|
+
console.debug('[audio] silent during ' + time);
|
|
206
|
+
await sleep(time);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
if (this._debug)
|
|
210
|
+
console.debug('[audio] vibrate during ' + time);
|
|
211
|
+
await Promise.all([Haptics.vibrate({ duration: time }), sleep(time)]);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
if (this._debug)
|
|
217
|
+
console.debug('[audio] vibrate during ' + duration);
|
|
218
|
+
await Haptics.vibrate({ duration });
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
async setAudioMode(mode) {
|
|
222
|
+
if (!this._enableAudioManagment) {
|
|
223
|
+
console.debug(`[audio] Cannot change audio mode to {${audioModeToString(mode)}} - skipping`);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
try {
|
|
227
|
+
console.info(`[audio] Changing audio mode to {${audioModeToString(mode)}}`);
|
|
228
|
+
await this.audioManagement.setAudioMode(mode);
|
|
229
|
+
this._audioMode = mode;
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
console.error(`[audio] Error while changing audio mode to {${audioModeToString(mode)}}: ${err?.message || err}`, err);
|
|
233
|
+
// Continue
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/* -- protected methods -- */
|
|
237
|
+
async readAudioMode() {
|
|
238
|
+
let value = await this.audioManagement.getAudioMode();
|
|
239
|
+
value = {
|
|
240
|
+
...DEFAULT_AUDIO_MODE_RETURN,
|
|
241
|
+
...value,
|
|
242
|
+
};
|
|
243
|
+
console.debug(`[audio] Detected audio mode {label: '${value.label}', audioMode: ${value.audioMode}}`);
|
|
244
|
+
this._audioMode = value.audioMode;
|
|
245
|
+
}
|
|
246
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AudioProvider, deps: [{ token: i1.Platform }, { token: i2.AudioManagement, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
247
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AudioProvider, providedIn: 'root' });
|
|
248
|
+
}
|
|
249
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AudioProvider, decorators: [{
|
|
250
|
+
type: Injectable,
|
|
251
|
+
args: [{ providedIn: 'root' }]
|
|
252
|
+
}], ctorParameters: () => [{ type: i1.Platform }, { type: i2.AudioManagement, decorators: [{
|
|
253
|
+
type: Optional
|
|
254
|
+
}] }] });
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9hdWRpby9hdWRpby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQW1CLFNBQVMsRUFBbUIsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFhNUMsTUFBTSxhQUFhLEdBQVk7SUFDN0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSw0QkFBNEIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO0lBQzNGLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsK0JBQStCLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRTtJQUN2RixFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLDZCQUE2QixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUU7SUFDcEYsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLG9DQUFvQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUU7Q0FDOUcsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQW9CO0lBQ2pELFNBQVMsRUFBRSxTQUFTLENBQUMs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QUFDLENBQUM7WUFDdEgsV0FBVztRQUNiLENBQUM7SUFDSCxDQUFDO0lBRUQsOEJBQThCO0lBRXBCLEtBQUssQ0FBQyxhQUFhO1FBQzNCLElBQUksS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0RCxLQUFLLEdBQUc7WUFDTixHQUFHLHlCQUF5QjtZQUM1QixHQUFHLEtBQUs7U0FDVCxDQUFDO1FBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsS0FBSyxDQUFDLEtBQUssaUJBQWlCLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUNwQyxDQUFDO3dHQW5PVSxhQUFhOzRHQUFiLGFBQWEsY0FEQSxNQUFNOzs0RkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQVk3QixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgQXVkaW9NYW5hZ2VtZW50LCBBdWRpb01vZGUsIEF1ZGlvTW9kZVJldHVybiB9IGZyb20gJ0Bhd2Vzb21lLWNvcmRvdmEtcGx1Z2lucy9hdWRpby1tYW5hZ2VtZW50L25neCc7XG5pbXBvcnQgeyBpc05pbCwgc2xlZXAsIHRvQm9vbGVhbiB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBTdGFydGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgSGFwdGljcyB9IGZyb20gJ0BjYXBhY2l0b3IvaGFwdGljcyc7XG5pbXBvcnQgeyBOYXRpdmVBdWRpbyB9IGZyb20gJ0BjYXBhY2l0b3ItY29tbXVuaXR5L25hdGl2ZS1hdWRpbyc7XG5pbXBvcnQgeyBDYXBhY2l0b3IgfSBmcm9tICdAY2FwYWNpdG9yL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBBdWRpb1R5cGUgPSAnaHRtbDUnIHwgJ25hdGl2ZSc7XG5leHBvcnQgaW50ZXJmYWNlIFNvdW5kIHtcbiAgYXNzZXRJZDogc3RyaW5nOyAvLyB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZmlsZVxuICBhc3NldFBhdGg6IHN0cmluZzsgLy8gIHJlbGF0aXZlIHBhdGggb2YgdGhlIGZpbGUgb3IgYWJzb2x1dGUgdXJsIChmaWxlOi8vKVxuICB2b2x1bWU/OiBudW1iZXI7IC8vIFNvdW5kIHZvbHVtZVxuICBpc1VybD86IGJvb2xlYW47IC8vIHBhc3MgdHJ1ZSBpZiBhc3NldFBhdGggaXMgYSBgZmlsZTovL2AgdXJsXG4gIHRpbWU/OiBudW1iZXI7IC8vIHNvdW5kIHNlZWsgdGltZVxuICBhdWRpb0NoYW5uZWxOdW0/OiBudW1iZXI7IC8vIG51bWJlciBvZiBhdWRpbyBjaGFubmVsc1xuICB2aWJyYXRpb24/OiBudW1iZXIgfCBudW1iZXJbXTsgLy8gU2hvdWxkIHZpYnJhdGUgPyBzZXQgZHVyYXRpb25cbn1cblxuY29uc3QgU1lTVEVNX1NPVU5EUzogU291bmRbXSA9IFtcbiAgeyBhc3NldElkOiAnc3RhcnR1cCcsIGFzc2V0UGF0aDogJ2Fzc2V0cy9hdWRpby91bmZhLXBpbmcubXAzJywgdmlicmF0aW9uOiBbMzAwLCAyNTAsIDc1MF0gfSxcbiAgeyBhc3NldElkOiAnYmVlcC1jb25maXJtJywgYXNzZXRQYXRoOiAnYXNzZXRzL2F1ZGlvL2JlZXAtY29uZmlybS5tcDMnLCB2aWJyYXRpb246IDI1MCB9LFxuICB7IGFzc2V0SWQ6ICdiZWVwLWVycm9yJywgYXNzZXRQYXRoOiAnYXNzZXRzL2F1ZGlvL2JlZXAtZXJyb3IubXAzJywgdmlicmF0aW9uOiAxMDAwIH0sXG4gIHsgYXNzZXRJZDogJ2JlZXAtbm90aWZpY2F0aW9uJywgYXNzZXRQYXRoOiAnYXNzZXRzL2F1ZGlvL2JlZXAtbm90aWZpY2F0aW9uLm1wMycsIHZpYnJhdGlvbjogWzQ1MCwgMTUwLCA0NTBdIH0sXG5dO1xuXG5jb25zdCBERUZBVUxUX0FVRElPX01PREVfUkVUVVJOOiBBdWRpb01vZGVSZXR1cm4gPSB7XG4gIGF1ZGlvTW9kZTogQXVkaW9Nb2RlLk5PUk1BTCxcbiAgbGFiZWw6ICdOb3JtYWwnLFxufTtcblxuZnVuY3Rpb24gYXVkaW9Nb2RlVG9TdHJpbmcobW9kZTogQXVkaW9Nb2RlKSB7XG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgQXVkaW9Nb2RlLlNJTEVOVDpcbiAgICAgIHJldHVybiAnU2lsZW50JztcbiAgICBjYXNlIEF1ZGlvTW9kZS5OT1JNQUw6XG4gICAgICByZXR1cm4gJ05vcm1hbCc7XG4gICAgY2FzZSBBdWRpb01vZGUuVklCUkFURTpcbiAgICAgIHJldHVybiAnVmlicmF0ZSc7XG4gIH1cbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdWRpb1Byb3ZpZGVyIGV4dGVuZHMgU3RhcnRhYmxlU2VydmljZTx2b2lkPiB7XG4gIHByaXZhdGUgX2F1ZGlvVHlwZTogQXVkaW9UeXBlO1xuICBwcml2YXRlIF9hdWRpb01vZGU6IEF1ZGlvTW9kZSA9IEF1ZGlvTW9kZS5OT1JNQUw7XG4gIHByaXZhdGUgX2VuYWJsZUF1ZGlvTWFuYWdtZW50ID0gZmFsc2U7XG4gIHByaXZhdGUgX2Fzc2V0UGF0aFByZWZpeCA9ICcnO1xuXG4gIHByaXZhdGUgX3ByZWxvYWRlZFNvdW5kczogeyBbaWQ6IHN0cmluZ106IFNvdW5kIH0gPSB7fTtcbiAgcHJpdmF0ZSBfaHRtbEF1ZGlvQ2FjaGU6IHsgW2lkOiBzdHJpbmddOiBIVE1MQXVkaW9FbGVtZW50IH0gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgYXVkaW9NYW5hZ2VtZW50OiBBdWRpb01hbmFnZW1lbnRcbiAgKSB7XG4gICAgc3VwZXIocGxhdGZvcm0pO1xuICAgIGNvbnNvbGUuaW5mbyhgW2F1ZGlvXSBDcmVhdGUgYXVkaW8gcHJvdmlkZXJgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBuZ09uU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29yZG92YSA9IHRoaXMucGxhdGZvcm0uaXMoJ2NvcmRvdmEnKTtcbiAgICB0aGlzLl9hc3NldFBhdGhQcmVmaXggPSBjb3Jkb3ZhID8gJ3B1YmxpYy8nIDogJyc7XG4gICAgdGhpcy5fYXVkaW9UeXBlID0gY29yZG92YSAmJiBDYXBhY2l0b3IuaXNQbHVnaW5BdmFpbGFibGUoJ05hdGl2ZUF1ZGlvJykgPyAnbmF0aXZlJyA6ICdodG1sNSc7XG4gICAgdGhpcy5fZW5hYmxlQXVkaW9NYW5hZ21lbnQgPSBjb3Jkb3ZhICYmIHRoaXMuYXVkaW9NYW5hZ2VtZW50ICYmIHRoaXMucGxhdGZvcm0uaXMoJ2FuZHJvaWQnKTtcbiAgICBjb25zb2xlLmluZm8oYFthdWRpb10gU3RhcnRpbmcgYXVkaW8gcHJvdmlkZXIge3R5cGU6ICR7dGhpcy5fYXVkaW9UeXBlfSwgbWFuYWdlbWVudDogJHt0aGlzLl9lbmFibGVBdWRpb01hbmFnbWVudH19Li4uYCk7XG5cbiAgICAvLyBMaXN0ZW4gYXVkaW8gbW9kZSBjaGFuZ2VkXG4gICAgaWYgKHRoaXMuX2VuYWJsZUF1ZGlvTWFuYWdtZW50KSB7XG4gICAgICBhd2FpdCB0aGlzLnJlYWRBdWRpb01vZGUoKTtcbiAgICB9XG5cbiAgICAvLyBQcmUtbG9hZGluZyBzeXN0ZW0gc291bmRzXG4gICAgY29uc29sZS5kZWJ1ZygnW2F1ZGlvXSBQcmVsb2FkaW5nIGF1ZGlvIHNvdW5kcy4uLicpO1xuICAgIGxldCBlcnJvckNvdW50ID0gMDtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIFNZU1RFTV9TT1VORFMubWFwKChzKSA9PiB7XG4gICAgICAgIC8vIERpc2FibGUgdmlicmF0aW9uIGluIEhUTUwgNSBtb2RlXG4gICAgICAgIGlmICh0aGlzLl9hdWRpb1R5cGUgPT09ICdodG1sNScpIHMudmlicmF0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gdGhpcy5wcmVsb2FkKHMpLmNhdGNoKChfKSA9PiBlcnJvckNvdW50KyspO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgaWYgKGVycm9yQ291bnQgPiAwKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1thdWRpb10gUHJlbG9hZGluZyBhdWRpbyBzb3VuZHMgW09LXSB3aXRoICR7ZXJyb3JDb3VudH0gZXJyb3JzIGR1cmluZyBwcmVsb2FkLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbYXVkaW9dIFByZWxvYWRpbmcgYXVkaW8gc291bmRzIFtPS10nKTtcbiAgICB9XG4gIH1cblxuICBwbGF5QmVlcENvbmZpcm0oKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wbGF5KCdiZWVwLWNvbmZpcm0nLCB7XG4gICAgICAvLyBWaWJyYXRlIG9ubHkgaWYgaW4gdmlicmF0aW9uIG1vZGVcbiAgICAgIHZpYnJhdGU6IHRoaXMuX2F1ZGlvTW9kZSA9PT0gQXVkaW9Nb2RlLlZJQlJBVEUsXG4gICAgfSk7XG4gIH1cblxuICBwbGF5QmVlcEVycm9yKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucGxheSgnYmVlcC1lcnJvcicsIHtcbiAgICAgIC8vIEFsd2F5cyB2aWJyYXRlICh3aWxsIHNraXAgdmlicmF0aW9uIGlmIHNpbGVudCBtb2RlKVxuICAgICAgdmlicmF0ZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHBsYXlCZWVwTm90aWZpY2F0aW9uKCk6IFByb21pc2U8YW55PiB7XG4gICAgYXdhaXQgdGhpcy5wbGF5KCdiZWVwLW5vdGlmaWNhdGlvbicsIHtcbiAgICAgIHZpYnJhdGU6IHRoaXMuX2F1ZGlvTW9kZSA9PT0gQXVkaW9Nb2RlLlZJQlJBVEUsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBwbGF5U3RhcnR1cFNvdW5kKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucGxheSgnc3RhcnR1cCcpO1xuICB9XG5cbiAgYXN5bmMgcHJlbG9hZChzb3VuZDogU291bmQpIHtcbiAgICBpZiAoIXNvdW5kPy5hc3NldElkKSByZXR1cm47IC8vIFNraXBcbiAgICBpZiAodGhpcy5fcHJlbG9hZGVkU291bmRzW3NvdW5kLmFzc2V0SWRdKSByZXR1cm47IC8vIEFscmVhZHkgcHJlbG9hZGVkXG4gICAgaWYgKGlzTmlsKHRoaXMuX2F1ZGlvVHlwZSkpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIGNvbnN0IGFzc2V0UGF0aCA9ICh0aGlzLl9hc3NldFBhdGhQcmVmaXggfHwgJycpICsgc291bmQuYXNzZXRQYXRoO1xuICAgIGNvbnNvbGUuaW5mbyhgW2F1ZGlvXSBQcmVsb2FkaW5nIHNvdW5kICcke3NvdW5kLmFzc2V0SWR9JywgZnJvbSBmaWxlICcke2Fzc2V0UGF0aH0nLi4uYCk7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuX2F1ZGlvVHlwZSA9PT0gJ25hdGl2ZScpIHtcbiAgICAgICAgdGhpcy5fcHJlbG9hZGVkU291bmRzW3NvdW5kLmFzc2V0SWRdID0gc291bmQ7XG4gICAgICAgIGF3YWl0IE5hdGl2ZUF1ZGlvLnByZWxvYWQoe1xuICAgICAgICAgIGF1ZGlvQ2hhbm5lbE51bTogMSxcbiAgICAgICAgICBpc1VybDogZmFsc2UsXG4gICAgICAgICAgLi4uc291bmQsXG4gICAgICAgICAgYXNzZXRQYXRoLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2h0bWxBdWRpb0NhY2hlW3NvdW5kLmFzc2V0SWRdID0gbmV3IEF1ZGlvKGFzc2V0UGF0aCk7XG4gICAgICAgIHRoaXMuX3ByZWxvYWRlZFNvdW5kc1tzb3VuZC5hc3NldElkXSA9IHNvdW5kO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgdG8gbWFwXG4gICAgICBjb25zb2xlLmluZm8oYFthdWRpb10gUHJlbG9hZGluZyBzb3VuZCAnJHtzb3VuZC5hc3NldElkfScgW09LXWApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgZXJyb3JNc2cgPSBlcnI/Lm1lc3NhZ2UgfHwgZXJyO1xuICAgICAgaWYgKGVycm9yTXNnID09PSAnQXVkaW8gQXNzZXQgYWxyZWFkeSBleGlzdHMnKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhgW2F1ZGlvXSBQcmVsb2FkaW5nIHNvdW5kICcke3NvdW5kLmFzc2V0SWR9JzogU2tpcHBlZCAoJHtlcnJvck1zZ30pYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wcmVsb2FkZWRTb3VuZHNbc291bmQuYXNzZXRJZF0gPSBudWxsO1xuICAgICAgICBjb25zb2xlLmVycm9yKGBbYXVkaW9dIFVuYWJsZSB0byBwcmVsb2FkIHNvdW5kICcke3NvdW5kLmFzc2V0SWR9JywgZnJvbSBmaWxlICcke2Fzc2V0UGF0aH0nOiAke2Vycm9yTXNnfVxcbiR7ZXJyPy5vcmlnaW5hbFN0YWNrIHx8ICcnfWApO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcGxheShhc3NldElkOiBzdHJpbmcsIG9wdHM/OiB7IHZpYnJhdGU/OiBib29sZWFuOyB2aWJyYXRpb24/OiBudW1iZXIgfCBudW1iZXJbXSB9KSB7XG4gICAgLy8gTWFrZSBzdXJlIHByb3ZpZGVyIGlzIHJlYWR5XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIGNvbnN0IHNvdW5kID0gdGhpcy5fcHJlbG9hZGVkU291bmRzW2Fzc2V0SWRdO1xuICAgIGlmICghc291bmQpIHtcbiAgICAgIHRocm93IEVycm9yKGBVbmFibGUgdG8gZmluZCBzb3VuZCAnJHthc3NldElkfScuIFBsZWFzZSBjYWxsIHByZWxvYWQoKSBiZWZvcmUgcGxheWluZyBhIHNvdW5kLmApO1xuICAgIH1cblxuICAgIC8vIElmIHNpbGVudDogc2tpcFxuICAgIGlmICh0aGlzLl9hdWRpb01vZGUgPT09IEF1ZGlvTW9kZS5TSUxFTlQpIHJldHVybjtcblxuICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXG4gICAgLy8gTm9ybWFsIG1vZGUgPSBjYW4gcGxheSB0aGUgc291bmRcbiAgICBpZiAodGhpcy5fYXVkaW9Nb2RlID09PSBBdWRpb01vZGUuTk9STUFMKSB7XG4gICAgICAvLyBVc2UgbmF0aXZlIGF1ZGlvXG4gICAgICBpZiAodGhpcy5fYXVkaW9UeXBlID09PSAnbmF0aXZlJykge1xuICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgIE5hdGl2ZUF1ZGlvLnBsYXkoe1xuICAgICAgICAgICAgYXNzZXRJZDogc291bmQuYXNzZXRJZCxcbiAgICAgICAgICAgIHRpbWU6IHNvdW5kLnRpbWUgfHwgMCxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgLy8gT3IgSFRNTCA1IGF1ZGlvXG4gICAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgYXVkaW8gPSB0aGlzLl9odG1sQXVkaW9DYWNoZVthc3NldElkXSB8fCBuZXcgQXVkaW8oc291bmQuYXNzZXRQYXRoKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChhdWRpby5wbGF5KCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZpYnJhdGUgbW9kZTogYnkgZGVmYXVsdCBtYWtlIHZpYnJhdGlvbiBpcyBlbmFibGVcbiAgICBlbHNlIGlmIChpc05pbChzb3VuZC52aWJyYXRpb24pICYmIGlzTmlsKG9wdHMgJiYgb3B0cy52aWJyYXRlKSkge1xuICAgICAgb3B0cyA9IG9wdHMgfHwge307XG4gICAgICBvcHRzLnZpYnJhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIERvIHZpYnJhdGlvbiAoaWYgc291bmQgYXMgZGVmYXVsdCB2aWJyYXRpb24sIG9yIGlmIHVzZXIgYXNrIGZvciBpdClcbiAgICBpZiAodG9Cb29sZWFuKG9wdHM/LnZpYnJhdGUsICEhc291bmQudmlicmF0aW9uKSkge1xuICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLnZpYnJhdGUoKG9wdHMgJiYgb3B0cy52aWJyYXRpb24pIHx8IHNvdW5kLnZpYnJhdGlvbikpO1xuICAgIH1cblxuICAgIHJldHVybiAocHJvbWlzZXMubGVuZ3RoID09PSAxID8gcHJvbWlzZXNbMF0gOiBQcm9taXNlLmFsbChwcm9taXNlcykpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFthdWRpb10gRXJyb3Igd2hpbGUgcGxheWluZyBhdWRpbyBzb3VuZCAnJHthc3NldElkfSc6ICR7KGVyciAmJiBlcnIubWVzc2FnZSkgfHwgZXJyfWAsIGVycik7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoYXNzZXRJZDogc3RyaW5nKSB7XG4gICAgaWYgKGlzTmlsKHRoaXMuX2F1ZGlvVHlwZSkpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIC8vIFJlbW92ZSBmcm9tIG1hcFxuICAgIHRoaXMuX3ByZWxvYWRlZFNvdW5kc1thc3NldElkXSA9IHVuZGVmaW5lZDtcblxuICAgIC8vIE5hdGl2ZSB1bmxvYWRcbiAgICBpZiAodGhpcy5fYXVkaW9UeXBlID09PSAnbmF0aXZlJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgTmF0aXZlQXVkaW8udW5sb2FkKHsgYXNzZXRJZCB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBbYXVkaW9dIFVuYWJsZSB0byB1bmxvYWQgYXVkaW8gJyR7YXNzZXRJZH0nOiAkeyhlcnIgJiYgZXJyLm1lc3NhZ2UpIHx8IGVycn1gLCBlcnIpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBIVE1MNSBhdWRpbyB1bmxvYWRcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX2h0bWxBdWRpb0NhY2hlW2Fzc2V0SWRdLnJlbW92ZSgpO1xuICAgICAgdGhpcy5faHRtbEF1ZGlvQ2FjaGVbYXNzZXRJZF0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBkdXJhdGlvbiBEdXJhdGlvbiBvZiB0aGUgdmlicmF0aW9uIGluIG1pbGxpc2Vjb25kcy5cbiAgICovXG4gIGFzeW5jIHZpYnJhdGUoZHVyYXRpb24/OiBudW1iZXIgfCBudW1iZXJbXSkge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZHVyYXRpb24pKSB7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1thdWRpb10gVmlicmF0ZTogJyArIEpTT04uc3RyaW5naWZ5KGR1cmF0aW9uKSk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGR1cmF0aW9uLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBkdXJhdGlvbltpXTtcbiAgICAgICAgY29uc3Qgc2lsZW50ID0gaSAlIDIgIT09IDA7XG4gICAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1thdWRpb10gc2lsZW50IGR1cmluZyAnICsgdGltZSk7XG4gICAgICAgICAgYXdhaXQgc2xlZXAodGltZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbYXVkaW9dIHZpYnJhdGUgZHVyaW5nICcgKyB0aW1lKTtcbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbSGFwdGljcy52aWJyYXRlKHsgZHVyYXRpb246IHRpbWUgfSksIHNsZWVwKHRpbWUpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbYXVkaW9dIHZpYnJhdGUgZHVyaW5nICcgKyBkdXJhdGlvbik7XG4gICAgICBhd2FpdCBIYXB0aWNzLnZpYnJhdGUoeyBkdXJhdGlvbiB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzZXRBdWRpb01vZGUobW9kZTogQXVkaW9Nb2RlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9lbmFibGVBdWRpb01hbmFnbWVudCkge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW2F1ZGlvXSBDYW5ub3QgY2hhbmdlIGF1ZGlvIG1vZGUgdG8geyR7YXVkaW9Nb2RlVG9TdHJpbmcobW9kZSl9fSAtIHNraXBwaW5nYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnNvbGUuaW5mbyhgW2F1ZGlvXSBDaGFuZ2luZyBhdWRpbyBtb2RlIHRvIHske2F1ZGlvTW9kZVRvU3RyaW5nKG1vZGUpfX1gKTtcbiAgICAgIGF3YWl0IHRoaXMuYXVkaW9NYW5hZ2VtZW50LnNldEF1ZGlvTW9kZShtb2RlKTtcbiAgICAgIHRoaXMuX2F1ZGlvTW9kZSA9IG1vZGU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbYXVkaW9dIEVycm9yIHdoaWxlIGNoYW5naW5nIGF1ZGlvIG1vZGUgdG8geyR7YXVkaW9Nb2RlVG9TdHJpbmcobW9kZSl9fTogJHtlcnI/Lm1lc3NhZ2UgfHwgZXJyfWAsIGVycik7XG4gICAgICAvLyBDb250aW51ZVxuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzICAtLSAqL1xuXG4gIHByb3RlY3RlZCBhc3luYyByZWFkQXVkaW9Nb2RlKCkge1xuICAgIGxldCB2YWx1ZSA9IGF3YWl0IHRoaXMuYXVkaW9NYW5hZ2VtZW50LmdldEF1ZGlvTW9kZSgpO1xuICAgIHZhbHVlID0ge1xuICAgICAgLi4uREVGQVVMVF9BVURJT19NT0RFX1JFVFVSTixcbiAgICAgIC4uLnZhbHVlLFxuICAgIH07XG4gICAgY29uc29sZS5kZWJ1ZyhgW2F1ZGlvXSBEZXRlY3RlZCBhdWRpbyBtb2RlIHtsYWJlbDogJyR7dmFsdWUubGFiZWx9JywgYXVkaW9Nb2RlOiAke3ZhbHVlLmF1ZGlvTW9kZX19YCk7XG4gICAgdGhpcy5fYXVkaW9Nb2RlID0gdmFsdWUuYXVkaW9Nb2RlO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./audio";
|
|
4
|
+
import * as i2 from "@ionic/angular";
|
|
5
|
+
export class AudioTestingPage {
|
|
6
|
+
audio;
|
|
7
|
+
constructor(audio) {
|
|
8
|
+
this.audio = audio;
|
|
9
|
+
}
|
|
10
|
+
playBeepConfirm() {
|
|
11
|
+
return this.audio.playBeepConfirm();
|
|
12
|
+
}
|
|
13
|
+
playBeepError() {
|
|
14
|
+
return this.audio.playBeepError();
|
|
15
|
+
}
|
|
16
|
+
playStartupSound() {
|
|
17
|
+
return this.audio.playStartupSound();
|
|
18
|
+
}
|
|
19
|
+
playBeepNotification() {
|
|
20
|
+
return this.audio.playBeepNotification();
|
|
21
|
+
}
|
|
22
|
+
vibrate(duration) {
|
|
23
|
+
return this.audio.vibrate(duration || [1000, 500, 1000, 500, 1000]);
|
|
24
|
+
}
|
|
25
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AudioTestingPage, deps: [{ token: i1.AudioProvider }], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AudioTestingPage, selector: "audio-testing", ngImport: i0, template: "<ion-toolbar color=\"primary\">\n <ion-title>Toasts</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n <p>Toast examples:</p>\n\n <ion-button (click)=\"playStartupSound()\" color=\"dark\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Startup\n </ion-button>\n\n <ion-button (click)=\"playBeepConfirm()\" color=\"success\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Confirmation\n </ion-button>\n\n <ion-button (click)=\"playBeepNotification()\" color=\"tertiary\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Notification\n </ion-button>\n\n <ion-button (click)=\"playBeepError()\" color=\"accent\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Error\n </ion-button>\n\n <ion-button (click)=\"vibrate()\" color=\"accent\">Vibrate (many time)</ion-button>\n</ion-content>\n", dependencies: [{ kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }] });
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AudioTestingPage, decorators: [{
|
|
29
|
+
type: Component,
|
|
30
|
+
args: [{ selector: 'audio-testing', template: "<ion-toolbar color=\"primary\">\n <ion-title>Toasts</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n <p>Toast examples:</p>\n\n <ion-button (click)=\"playStartupSound()\" color=\"dark\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Startup\n </ion-button>\n\n <ion-button (click)=\"playBeepConfirm()\" color=\"success\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Confirmation\n </ion-button>\n\n <ion-button (click)=\"playBeepNotification()\" color=\"tertiary\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Notification\n </ion-button>\n\n <ion-button (click)=\"playBeepError()\" color=\"accent\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Error\n </ion-button>\n\n <ion-button (click)=\"vibrate()\" color=\"accent\">Vibrate (many time)</ion-button>\n</ion-content>\n" }]
|
|
31
|
+
}], ctorParameters: () => [{ type: i1.AudioProvider }] });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8udGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2F1ZGlvL2F1ZGlvLnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9hdWRpby9hdWRpby50ZXN0aW5nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU8xQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQ1A7SUFBcEIsWUFBb0IsS0FBb0I7UUFBcEIsVUFBSyxHQUFMLEtBQUssQ0FBZTtJQUFHLENBQUM7SUFFNUMsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUNELG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQTRCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQzt3R0FsQlUsZ0JBQWdCOzRGQUFoQixnQkFBZ0IscURDUDdCLHUyQkE2QkE7OzRGRHRCYSxnQkFBZ0I7a0JBSjVCLFNBQVM7K0JBQ0UsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXVkaW9Qcm92aWRlciB9IGZyb20gJy4vYXVkaW8nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWRpby10ZXN0aW5nJyxcbiAgdGVtcGxhdGVVcmw6ICdhdWRpby50ZXN0aW5nLmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBBdWRpb1Rlc3RpbmdQYWdlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdWRpbzogQXVkaW9Qcm92aWRlcikge31cblxuICBwbGF5QmVlcENvbmZpcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMuYXVkaW8ucGxheUJlZXBDb25maXJtKCk7XG4gIH1cbiAgcGxheUJlZXBFcnJvcigpIHtcbiAgICByZXR1cm4gdGhpcy5hdWRpby5wbGF5QmVlcEVycm9yKCk7XG4gIH1cbiAgcGxheVN0YXJ0dXBTb3VuZCgpIHtcbiAgICByZXR1cm4gdGhpcy5hdWRpby5wbGF5U3RhcnR1cFNvdW5kKCk7XG4gIH1cbiAgcGxheUJlZXBOb3RpZmljYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuYXVkaW8ucGxheUJlZXBOb3RpZmljYXRpb24oKTtcbiAgfVxuXG4gIHZpYnJhdGUoZHVyYXRpb24/OiBudW1iZXIgfCBudW1iZXJbXSkge1xuICAgIHJldHVybiB0aGlzLmF1ZGlvLnZpYnJhdGUoZHVyYXRpb24gfHwgWzEwMDAsIDUwMCwgMTAwMCwgNTAwLCAxMDAwXSk7XG4gIH1cbn1cbiIsIjxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgPGlvbi10aXRsZT5Ub2FzdHM8L2lvbi10aXRsZT5cbjwvaW9uLXRvb2xiYXI+XG5cbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gIDxwPlRvYXN0IGV4YW1wbGVzOjwvcD5cblxuICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicGxheVN0YXJ0dXBTb3VuZCgpXCIgY29sb3I9XCJkYXJrXCI+XG4gICAgPGlvbi1pY29uIG5hbWU9XCJwbGF5XCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cbiAgICBTdGFydHVwXG4gIDwvaW9uLWJ1dHRvbj5cblxuICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicGxheUJlZXBDb25maXJtKClcIiBjb2xvcj1cInN1Y2Nlc3NcIj5cbiAgICA8aW9uLWljb24gbmFtZT1cInBsYXlcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxuICAgIENvbmZpcm1hdGlvblxuICA8L2lvbi1idXR0b24+XG5cbiAgPGlvbi1idXR0b24gKGNsaWNrKT1cInBsYXlCZWVwTm90aWZpY2F0aW9uKClcIiBjb2xvcj1cInRlcnRpYXJ5XCI+XG4gICAgPGlvbi1pY29uIG5hbWU9XCJwbGF5XCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cbiAgICBOb3RpZmljYXRpb25cbiAgPC9pb24tYnV0dG9uPlxuXG4gIDxpb24tYnV0dG9uIChjbGljayk9XCJwbGF5QmVlcEVycm9yKClcIiBjb2xvcj1cImFjY2VudFwiPlxuICAgIDxpb24taWNvbiBuYW1lPVwicGxheVwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XG4gICAgRXJyb3JcbiAgPC9pb24tYnV0dG9uPlxuXG4gIDxpb24tYnV0dG9uIChjbGljayk9XCJ2aWJyYXRlKClcIiBjb2xvcj1cImFjY2VudFwiPlZpYnJhdGUgKG1hbnkgdGltZSk8L2lvbi1idXR0b24+XG48L2lvbi1jb250ZW50PlxuIl19
|