@sumaris-net/ngx-components 1.23.44 → 2.0.0-rc3
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/build.md +2 -2
- package/doc/changelog.md +8 -0
- package/esm2020/public_api.mjs +278 -0
- package/esm2020/public_test_api.mjs +46 -0
- package/esm2020/src/app/admin/admin-routing.module.mjs +41 -0
- package/esm2020/src/app/admin/admin.module.mjs +34 -0
- package/esm2020/src/app/admin/services/filter/person.filter.mjs +59 -0
- package/esm2020/src/app/admin/services/person.service.mjs +161 -0
- package/esm2020/src/app/admin/services/validator/person.validator.mjs +34 -0
- package/esm2020/src/app/admin/users/list/users.mjs +233 -0
- package/esm2020/src/app/admin/users/list/users.module.mjs +58 -0
- package/esm2020/src/app/core/about/modal-about.mjs +71 -0
- package/esm2020/src/app/core/account/account.mjs +230 -0
- package/esm2020/src/app/core/auth/form/form-auth.mjs +131 -0
- package/esm2020/src/app/core/auth/modal/modal-auth.mjs +72 -0
- package/esm2020/src/app/core/core.module.mjs +223 -0
- package/esm2020/src/app/core/core.testing.module.mjs +86 -0
- package/esm2020/src/app/core/form/editor.class.mjs +672 -0
- package/esm2020/src/app/core/form/entity-editor-modal.class.mjs +407 -0
- package/esm2020/src/app/core/form/entity-editor.class.mjs +646 -0
- package/esm2020/src/app/core/form/entity-metadata.component.mjs +25 -0
- package/esm2020/src/app/core/form/form-buttons-bar.component.mjs +71 -0
- package/esm2020/src/app/core/form/form.class.mjs +337 -0
- package/esm2020/src/app/core/form/form.utils.mjs +299 -0
- package/esm2020/src/app/core/form/list.form.mjs +222 -0
- package/esm2020/src/app/core/form/properties/properties.form.mjs +129 -0
- package/esm2020/src/app/core/form/properties/property.validator.mjs +23 -0
- package/esm2020/src/app/core/form/properties/testing/properties-form.test.mjs +90 -0
- package/esm2020/src/app/core/form/properties/testing/properties-form.testing.module.mjs +39 -0
- package/esm2020/src/app/core/graphql/graphql.module.mjs +22 -0
- package/esm2020/src/app/core/graphql/graphql.service.mjs +730 -0
- package/esm2020/src/app/core/graphql/graphql.utils.mjs +117 -0
- package/esm2020/src/app/core/home/home.mjs +257 -0
- package/esm2020/src/app/core/icon/icon.component.mjs +41 -0
- package/esm2020/src/app/core/icon/icon.module.mjs +29 -0
- package/esm2020/src/app/core/install/install-upgrade-card.component.mjs +337 -0
- package/esm2020/src/app/core/install/install-upgrade-card.module.mjs +33 -0
- package/esm2020/src/app/core/menu/menu.component.mjs +317 -0
- package/{esm2015/src/app/core/menu/menu.model.js → esm2020/src/app/core/menu/menu.model.mjs} +0 -0
- package/esm2020/src/app/core/menu/menu.module.mjs +45 -0
- package/{esm2015/src/app/core/menu/menu.service.js → esm2020/src/app/core/menu/menu.service.mjs} +9 -7
- package/esm2020/src/app/core/offline/update-offline-mode-card.component.mjs +27 -0
- package/esm2020/src/app/core/peer/select-peer.modal.mjs +130 -0
- package/esm2020/src/app/core/peer/select-peer.module.mjs +35 -0
- package/esm2020/src/app/core/register/confirm/confirm.mjs +81 -0
- package/esm2020/src/app/core/register/form/form-register.mjs +181 -0
- package/esm2020/src/app/core/register/modal/modal-register.mjs +52 -0
- package/esm2020/src/app/core/register/register.module.mjs +42 -0
- package/esm2020/src/app/core/services/account.service.mjs +1112 -0
- package/esm2020/src/app/core/services/auth-guard.service.mjs +71 -0
- package/esm2020/src/app/core/services/base-entity-service.class.mjs +432 -0
- package/esm2020/src/app/core/services/base-graphql-service.class.mjs +219 -0
- package/{esm2015/src/app/core/services/base58.js → esm2020/src/app/core/services/base58.mjs} +0 -0
- package/{esm2015/src/app/core/services/config/core.config.js → esm2020/src/app/core/services/config/core.config.mjs} +0 -0
- package/esm2020/src/app/core/services/config.service.mjs +354 -0
- package/{esm2015/src/app/core/services/crypto.service.js → esm2020/src/app/core/services/crypto.service.mjs} +7 -5
- package/{esm2015/src/app/core/services/errors.js → esm2020/src/app/core/services/errors.mjs} +0 -0
- package/esm2020/src/app/core/services/local-settings.service.mjs +442 -0
- package/esm2020/src/app/core/services/model/account.model.mjs +50 -0
- package/esm2020/src/app/core/services/model/config.model.mjs +89 -0
- package/esm2020/src/app/core/services/model/department.model.mjs +30 -0
- package/esm2020/src/app/core/services/model/entity.decorators.mjs +107 -0
- package/esm2020/src/app/core/services/model/entity.model.mjs +242 -0
- package/{esm2015/src/app/core/services/model/filter.model.js → esm2020/src/app/core/services/model/filter.model.mjs} +0 -0
- package/{esm2015/src/app/core/services/model/history.model.js → esm2020/src/app/core/services/model/history.model.mjs} +0 -0
- package/{esm2015/src/app/core/services/model/model.enum.js → esm2020/src/app/core/services/model/model.enum.mjs} +0 -0
- package/esm2020/src/app/core/services/model/peer.model.mjs +68 -0
- package/esm2020/src/app/core/services/model/person.model.mjs +83 -0
- package/esm2020/src/app/core/services/model/referential.model.mjs +145 -0
- package/esm2020/src/app/core/services/model/settings.model.mjs +75 -0
- package/esm2020/src/app/core/services/network.service.mjs +595 -0
- package/esm2020/src/app/core/services/network.utils.mjs +16 -0
- package/esm2020/src/app/core/services/pipes/account.pipes.mjs +38 -0
- package/esm2020/src/app/core/services/pipes/department-to-string.pipe.mjs +23 -0
- package/esm2020/src/app/core/services/pipes/person-to-string.pipe.mjs +23 -0
- package/esm2020/src/app/core/services/pipes/usage-mode.pipes.mjs +37 -0
- package/esm2020/src/app/core/services/platform.service.mjs +476 -0
- package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +422 -0
- package/esm2020/src/app/core/services/storage/entity-store.class.mjs +449 -0
- package/esm2020/src/app/core/services/testing/referential-filter.model.mjs +23 -0
- package/esm2020/src/app/core/services/testing/referential.validator.mjs +45 -0
- package/esm2020/src/app/core/services/validator/account.validator.mjs +52 -0
- package/esm2020/src/app/core/services/validator/base.validator.class.mjs +47 -0
- package/esm2020/src/app/core/services/validator/local-settings.validator.mjs +66 -0
- package/esm2020/src/app/core/services/validator/user-settings.validator.mjs +29 -0
- package/esm2020/src/app/core/settings/settings.page.mjs +290 -0
- package/esm2020/src/app/core/table/actions-column.component.mjs +96 -0
- package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +394 -0
- package/esm2020/src/app/core/table/memory-table.class.mjs +53 -0
- package/esm2020/src/app/core/table/table-select-columns.component.mjs +43 -0
- package/esm2020/src/app/core/table/table.class.mjs +1666 -0
- package/esm2020/src/app/core/table/table.utils.mjs +13 -0
- package/esm2020/src/app/core/table/testing/table.testing.mjs +264 -0
- package/esm2020/src/app/core/table/testing/table.testing.module.mjs +38 -0
- package/esm2020/src/app/core/text-popover/testing/text-popover.testing.mjs +37 -0
- package/esm2020/src/app/core/text-popover/testing/text-popover.testing.module.mjs +45 -0
- package/esm2020/src/app/core/text-popover/text-form.component.mjs +84 -0
- package/esm2020/src/app/core/text-popover/text-popover.component.mjs +92 -0
- package/esm2020/src/app/shared/alerts.mjs +238 -0
- package/esm2020/src/app/shared/audio/audio.mjs +201 -0
- package/esm2020/src/app/shared/audio/audio.testing.mjs +31 -0
- package/esm2020/src/app/shared/audio/audio.testing.module.mjs +45 -0
- package/esm2020/src/app/shared/capacitor/keyboard.mjs +40 -0
- package/esm2020/src/app/shared/capacitor/plugins.mjs +9 -0
- package/{esm2015/src/app/shared/constants.js → esm2020/src/app/shared/constants.mjs} +2 -1
- package/esm2020/src/app/shared/dates.mjs +134 -0
- package/esm2020/src/app/shared/debug/debug.component.mjs +39 -0
- package/esm2020/src/app/shared/debug/debug.module.mjs +44 -0
- package/esm2020/src/app/shared/directives/autofocus.directive.mjs +92 -0
- package/esm2020/src/app/shared/directives/autotitle.directive.mjs +30 -0
- package/esm2020/src/app/shared/directives/directives.module.mjs +43 -0
- package/esm2020/src/app/shared/directives/drag-and-drop.directive.mjs +53 -0
- package/esm2020/src/app/shared/directives/ng-var.directive.mjs +31 -0
- package/esm2020/src/app/shared/directives/resizable/resizable.component.mjs +59 -0
- package/esm2020/src/app/shared/directives/resizable/resizable.directive.mjs +40 -0
- package/esm2020/src/app/shared/directives/resizable/resizable.module.mjs +17 -0
- package/esm2020/src/app/shared/events.mjs +64 -0
- package/esm2020/src/app/shared/file/csv.utils.mjs +74 -0
- package/esm2020/src/app/shared/file/file.service.mjs +117 -0
- package/esm2020/src/app/shared/file/file.utils.mjs +113 -0
- package/esm2020/src/app/shared/file/images.utils.mjs +161 -0
- package/{esm2015/src/app/shared/file/uri.utils.js → esm2020/src/app/shared/file/uri.utils.mjs} +0 -0
- package/{esm2015/src/app/shared/focusable.js → esm2020/src/app/shared/focusable.mjs} +0 -0
- package/esm2020/src/app/shared/form/field.component.mjs +244 -0
- package/{esm2015/src/app/shared/form/field.model.js → esm2020/src/app/shared/form/field.model.mjs} +1 -1
- package/esm2020/src/app/shared/form/loading-spinner.mjs +36 -0
- package/esm2020/src/app/shared/forms.mjs +374 -0
- package/esm2020/src/app/shared/functions.mjs +430 -0
- package/{esm2015/src/app/shared/gesture/gesture-config.js → esm2020/src/app/shared/gesture/gesture-config.mjs} +7 -5
- package/esm2020/src/app/shared/gesture/hammer.utils.mjs +2 -0
- package/{esm2015/src/app/shared/graph/colors.utils.js → esm2020/src/app/shared/graph/colors.utils.mjs} +0 -0
- package/esm2020/src/app/shared/graph/graph-colors.mjs +254 -0
- package/esm2020/src/app/shared/guard/component-dirty.guard.mjs +57 -0
- package/esm2020/src/app/shared/help/help.modal.mjs +53 -0
- package/esm2020/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +23 -0
- package/esm2020/src/app/shared/hotkeys/hotkeys.service.mjs +84 -0
- package/esm2020/src/app/shared/hotkeys/shared-hotkeys.module.mjs +42 -0
- package/esm2020/src/app/shared/http/http.utils.mjs +52 -0
- package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +279 -0
- package/esm2020/src/app/shared/image/gallery/image-gallery.module.mjs +46 -0
- package/esm2020/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +27 -0
- package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +89 -0
- package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.mjs +33 -0
- package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +56 -0
- package/esm2020/src/app/shared/image/image.model.mjs +2 -0
- package/esm2020/src/app/shared/image/image.module.mjs +29 -0
- package/esm2020/src/app/shared/image/image.service.mjs +99 -0
- package/{esm2015/src/app/shared/inputs.js → esm2020/src/app/shared/inputs.mjs} +4 -4
- package/{esm2015/src/app/shared/interceptors/progess.interceptor.js → esm2020/src/app/shared/interceptors/progess.interceptor.mjs} +0 -0
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +47 -0
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +836 -0
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +78 -0
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +19 -0
- package/esm2020/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +205 -0
- package/esm2020/src/app/shared/material/badge/badge.directive.mjs +157 -0
- package/esm2020/src/app/shared/material/badge/badge.module.mjs +32 -0
- package/esm2020/src/app/shared/material/badge/badge.test.mjs +26 -0
- package/esm2020/src/app/shared/material/boolean/boolean.module.mjs +68 -0
- package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +253 -0
- package/esm2020/src/app/shared/material/chips/chips.module.mjs +76 -0
- package/esm2020/src/app/shared/material/chips/material.chips.mjs +691 -0
- package/esm2020/src/app/shared/material/chips/testing/chips.test.mjs +136 -0
- package/esm2020/src/app/shared/material/datetime/datetime.module.mjs +91 -0
- package/esm2020/src/app/shared/material/datetime/material.date.mjs +388 -0
- package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +327 -0
- package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +434 -0
- package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +110 -0
- package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +111 -0
- package/esm2020/src/app/shared/material/duration/duration.module.mjs +67 -0
- package/{esm2015/src/app/shared/material/duration/duration.utils.js → esm2020/src/app/shared/material/duration/duration.utils.mjs} +0 -0
- package/esm2020/src/app/shared/material/duration/material.duration.mjs +257 -0
- package/esm2020/src/app/shared/material/latlong/latlong.utils.mjs +266 -0
- package/esm2020/src/app/shared/material/latlong/material.latlong.mjs +381 -0
- package/esm2020/src/app/shared/material/latlong/material.latlong.module.mjs +67 -0
- package/esm2020/src/app/shared/material/latlong/testing/latlong.test.mjs +74 -0
- package/{esm2015/src/app/shared/material/material.animations.js → esm2020/src/app/shared/material/material.animations.mjs} +0 -0
- package/esm2020/src/app/shared/material/material.module.mjs +224 -0
- package/esm2020/src/app/shared/material/material.testing.module.mjs +145 -0
- package/esm2020/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +98 -0
- package/esm2020/src/app/shared/material/numpad/numpad.component.mjs +80 -0
- package/esm2020/src/app/shared/material/numpad/numpad.container.mjs +190 -0
- package/esm2020/src/app/shared/material/numpad/numpad.content.mjs +17 -0
- package/esm2020/src/app/shared/material/numpad/numpad.directive.mjs +162 -0
- package/esm2020/src/app/shared/material/numpad/numpad.dom-service.mjs +37 -0
- package/{esm2015/src/app/shared/material/numpad/numpad.model.js → esm2020/src/app/shared/material/numpad/numpad.model.mjs} +1 -1
- package/esm2020/src/app/shared/material/numpad/numpad.module.mjs +60 -0
- package/esm2020/src/app/shared/material/numpad/testing/numpad.test.mjs +46 -0
- package/esm2020/src/app/shared/material/paginator/material.paginator-i18n.mjs +42 -0
- package/esm2020/src/app/shared/material/stepper/material.stepper-i18n.mjs +22 -0
- package/esm2020/src/app/shared/material/swipe/material.swipe.mjs +334 -0
- package/esm2020/src/app/shared/material/swipe/swipe.module.mjs +51 -0
- package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +65 -0
- package/esm2020/src/app/shared/observables.mjs +96 -0
- package/esm2020/src/app/shared/pipes/arrays.pipe.mjs +135 -0
- package/esm2020/src/app/shared/pipes/colors.pipe.mjs +23 -0
- package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +49 -0
- package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +42 -0
- package/{esm2015/src/app/shared/pipes/date-from-now.pipe.js → esm2020/src/app/shared/pipes/date-from-now.pipe.mjs} +13 -12
- package/{esm2015/src/app/shared/pipes/duration.pipe.js → esm2020/src/app/shared/pipes/duration.pipe.mjs} +13 -12
- package/esm2020/src/app/shared/pipes/file-size.pipe.mjs +62 -0
- package/esm2020/src/app/shared/pipes/form.pipes.mjs +187 -0
- package/esm2020/src/app/shared/pipes/highlight.pipe.mjs +48 -0
- package/esm2020/src/app/shared/pipes/latlong-format.pipe.mjs +46 -0
- package/esm2020/src/app/shared/pipes/maps.pipe.mjs +63 -0
- package/esm2020/src/app/shared/pipes/math.pipes.mjs +59 -0
- package/esm2020/src/app/shared/pipes/ng-init.pipe.mjs +21 -0
- package/{esm2015/src/app/shared/pipes/number-format.pipe.js → esm2020/src/app/shared/pipes/number-format.pipe.mjs} +14 -9
- package/esm2020/src/app/shared/pipes/pipes.module.mjs +210 -0
- package/esm2020/src/app/shared/pipes/property.pipes.mjs +96 -0
- package/esm2020/src/app/shared/pipes/string.pipes.mjs +69 -0
- package/esm2020/src/app/shared/pipes/translate-context.pipe.mjs +43 -0
- package/esm2020/src/app/shared/platforms.mjs +49 -0
- package/esm2020/src/app/shared/services/entity-service.class.mjs +7 -0
- package/esm2020/src/app/shared/services/job.utils.mjs +92 -0
- package/esm2020/src/app/shared/services/memory-entity-service.class.mjs +331 -0
- package/esm2020/src/app/shared/services/progress-bar.service.mjs +32 -0
- package/esm2020/src/app/shared/services/startable-observable-service.class.mjs +119 -0
- package/esm2020/src/app/shared/services/startable-service.class.mjs +105 -0
- package/esm2020/src/app/shared/services/storage/storage.service.mjs +132 -0
- package/esm2020/src/app/shared/services/storage/storage.utils.mjs +13 -0
- package/esm2020/src/app/shared/services/translate-context.service.mjs +81 -0
- package/esm2020/src/app/shared/services/validator-service.class.mjs +2 -0
- package/esm2020/src/app/shared/services.mjs +62 -0
- package/esm2020/src/app/shared/shared-routing.module.mjs +63 -0
- package/esm2020/src/app/shared/shared.module.mjs +208 -0
- package/esm2020/src/app/shared/shared.testing.module.mjs +76 -0
- package/esm2020/src/app/shared/testing/tests.page.mjs +33 -0
- package/esm2020/src/app/shared/toast/toast.testing.mjs +51 -0
- package/esm2020/src/app/shared/toast/toast.testing.module.mjs +45 -0
- package/esm2020/src/app/shared/toast/toasts.mjs +144 -0
- package/esm2020/src/app/shared/toolbar/modal-toolbar.mjs +58 -0
- package/esm2020/src/app/shared/toolbar/toolbar.mjs +226 -0
- package/esm2020/src/app/shared/toolbar/toolbar.module.mjs +53 -0
- package/{esm2015/src/app/shared/types.js → esm2020/src/app/shared/types.mjs} +0 -0
- package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.mjs +57 -0
- package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +45 -0
- package/esm2020/src/app/shared/upload-file/upload-file-popover.component.mjs +97 -0
- package/esm2020/src/app/shared/upload-file/upload-file.component.mjs +204 -0
- package/esm2020/src/app/shared/upload-file/upload-file.model.mjs +20 -0
- package/esm2020/src/app/shared/validator/form-error-adapter.class.mjs +104 -0
- package/esm2020/src/app/shared/validator/validators.mjs +544 -0
- package/{esm2015/src/app/shared/version/versions.js → esm2020/src/app/shared/version/versions.mjs} +0 -0
- package/esm2020/src/app/social/job/job.model.mjs +26 -0
- package/esm2020/src/app/social/job/job.module.mjs +35 -0
- package/esm2020/src/app/social/job/job.service.mjs +71 -0
- package/esm2020/src/app/social/job/progression/job-progression.icon.mjs +210 -0
- package/esm2020/src/app/social/job/progression/job-progression.list.mjs +22 -0
- package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +53 -0
- package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +55 -0
- package/esm2020/src/app/social/job/testing/job.testing.module.mjs +35 -0
- package/esm2020/src/app/social/message/message.form.mjs +81 -0
- package/esm2020/src/app/social/message/message.modal.mjs +93 -0
- package/esm2020/src/app/social/message/message.model.mjs +65 -0
- package/esm2020/src/app/social/message/message.module.mjs +35 -0
- package/esm2020/src/app/social/message/message.service.mjs +84 -0
- package/{esm2015/src/app/social/social.errors.js → esm2020/src/app/social/social.errors.mjs} +0 -0
- package/esm2020/src/app/social/social.module.mjs +47 -0
- package/esm2020/src/app/social/social.testing.module.mjs +51 -0
- package/esm2020/src/app/social/user-event/notification/user-event-notification.icon.mjs +108 -0
- package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +212 -0
- package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +228 -0
- package/esm2020/src/app/social/user-event/testing/user-event.testing.model.mjs +107 -0
- package/esm2020/src/app/social/user-event/testing/user-event.testing.module.mjs +35 -0
- package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +111 -0
- package/esm2020/src/app/social/user-event/user-event.model.mjs +2 -0
- package/esm2020/src/app/social/user-event/user-event.module.mjs +39 -0
- package/esm2020/src/app/social/user-event/user-event.service.mjs +486 -0
- package/{esm2015/src/app/vendor.js → esm2020/src/app/vendor.mjs} +3 -3
- package/esm2020/src/environments/environment.class.mjs +5 -0
- package/esm2020/src/environments/environment.mjs +86 -0
- package/esm2020/sumaris-net.ngx-components.mjs +5 -0
- package/fesm2015/sumaris-net.ngx-components.mjs +33173 -0
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -0
- package/fesm2020/sumaris-net.ngx-components.mjs +32440 -0
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/package.json +27 -32
- package/public_api.d.ts +29 -31
- package/public_test_api.d.ts +37 -0
- package/resources/README.md +8 -0
- package/src/app/admin/admin-routing.module.d.ts +7 -0
- package/src/app/admin/admin.module.d.ts +7 -0
- package/src/app/admin/services/person.service.d.ts +3 -0
- package/src/app/admin/services/validator/person.validator.d.ts +8 -5
- package/src/app/admin/users/list/users.d.ts +11 -7
- package/src/app/admin/users/list/users.module.d.ts +14 -0
- package/src/app/core/about/modal-about.d.ts +3 -0
- package/src/app/core/account/account.d.ts +11 -8
- package/src/app/core/auth/form/form-auth.d.ts +6 -3
- package/src/app/core/auth/modal/modal-auth.d.ts +3 -0
- package/src/app/core/core.module.d.ts +36 -0
- package/src/app/core/core.testing.module.d.ts +10 -0
- package/src/app/core/form/editor.class.d.ts +6 -1
- package/src/app/core/form/entity-editor-modal.class.d.ts +7 -4
- package/src/app/core/form/entity-editor.class.d.ts +4 -1
- package/src/app/core/form/entity-metadata.component.d.ts +3 -0
- package/src/app/core/form/form-buttons-bar.component.d.ts +3 -0
- package/src/app/core/form/form.class.d.ts +12 -9
- package/src/app/core/form/form.utils.d.ts +5 -5
- package/src/app/core/form/list.form.d.ts +10 -7
- package/src/app/core/form/properties/properties.form.d.ts +43 -0
- package/src/app/core/form/properties/property.validator.d.ts +13 -0
- package/src/app/core/form/properties/testing/properties-form.test.d.ts +19 -0
- package/src/app/core/form/properties/testing/properties-form.testing.module.d.ts +12 -0
- package/src/app/core/graphql/graphql.module.d.ts +5 -0
- package/src/app/core/graphql/graphql.service.d.ts +9 -2
- package/src/app/core/graphql/graphql.utils.d.ts +8 -0
- package/src/app/core/home/home.d.ts +4 -1
- package/src/app/core/icon/icon.component.d.ts +5 -2
- package/src/app/core/icon/icon.module.d.ts +7 -0
- package/src/app/core/install/install-upgrade-card.component.d.ts +5 -2
- package/src/app/core/install/install-upgrade-card.module.d.ts +10 -0
- package/src/app/core/menu/menu.component.d.ts +7 -5
- package/src/app/core/menu/menu.module.d.ts +8 -0
- package/src/app/core/menu/menu.service.d.ts +3 -0
- package/src/app/core/offline/update-offline-mode-card.component.d.ts +3 -0
- package/src/app/core/peer/select-peer.modal.d.ts +7 -4
- package/src/app/core/peer/select-peer.module.d.ts +9 -0
- package/src/app/core/register/confirm/confirm.d.ts +3 -0
- package/src/app/core/register/form/form-register.d.ts +10 -7
- package/src/app/core/register/modal/modal-register.d.ts +3 -0
- package/src/app/core/register/register.module.d.ts +12 -0
- package/src/app/core/services/account.service.d.ts +5 -2
- package/src/app/core/services/auth-guard.service.d.ts +3 -0
- package/src/app/core/services/base-entity-service.class.d.ts +3 -0
- package/src/app/core/services/base-graphql-service.class.d.ts +3 -0
- package/src/app/core/services/config.service.d.ts +4 -1
- package/src/app/core/services/crypto.service.d.ts +3 -0
- package/src/app/core/services/local-settings.service.d.ts +5 -1
- package/src/app/core/services/model/referential.model.d.ts +1 -1
- package/src/app/core/services/network.service.d.ts +6 -5
- package/src/app/core/services/pipes/account.pipes.d.ts +7 -0
- package/src/app/core/services/pipes/department-to-string.pipe.d.ts +4 -0
- package/src/app/core/services/pipes/person-to-string.pipe.d.ts +4 -0
- package/src/app/core/services/pipes/usage-mode.pipes.d.ts +7 -0
- package/src/app/core/services/platform.service.d.ts +22 -21
- package/src/app/core/services/storage/entities-storage.service.d.ts +5 -2
- package/src/app/core/services/storage/entity-store.class.d.ts +3 -3
- package/src/app/core/services/testing/referential.validator.d.ts +8 -5
- package/src/app/core/services/validator/account.validator.d.ts +6 -3
- package/src/app/core/services/validator/base.validator.class.d.ts +8 -5
- package/src/app/core/services/validator/local-settings.validator.d.ts +8 -5
- package/src/app/core/services/validator/user-settings.validator.d.ts +6 -3
- package/src/app/core/settings/settings.page.d.ts +8 -5
- package/src/app/core/table/actions-column.component.d.ts +3 -0
- package/src/app/core/table/entities-table-datasource.class.d.ts +16 -15
- package/src/app/core/table/memory-table.class.d.ts +3 -0
- package/src/app/core/table/table-select-columns.component.d.ts +4 -5
- package/src/app/core/table/table.class.d.ts +52 -34
- package/src/app/core/table/table.utils.d.ts +2 -1
- package/src/app/core/table/testing/table.testing.d.ts +13 -15
- package/src/app/core/table/testing/table.testing.module.d.ts +9 -0
- package/src/app/core/text-popover/testing/text-popover.testing.d.ts +4 -1
- package/src/app/core/text-popover/testing/text-popover.testing.module.d.ts +9 -0
- package/src/app/core/text-popover/text-form.component.d.ts +7 -4
- package/src/app/core/text-popover/text-popover.component.d.ts +3 -0
- package/src/app/shared/alerts.d.ts +4 -4
- package/src/app/shared/audio/audio.d.ts +20 -11
- 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 +1 -0
- package/src/app/shared/debug/debug.component.d.ts +13 -0
- package/src/app/shared/debug/debug.module.d.ts +12 -0
- package/src/app/shared/directives/autofocus.directive.d.ts +9 -7
- package/src/app/shared/directives/autotitle.directive.d.ts +3 -0
- package/src/app/shared/directives/directives.module.d.ts +10 -0
- package/src/app/shared/directives/drag-and-drop.directive.d.ts +3 -0
- package/src/app/shared/directives/ng-var.directive.d.ts +3 -0
- package/src/app/shared/directives/resizable/resizable.component.d.ts +3 -0
- package/src/app/shared/directives/resizable/resizable.directive.d.ts +3 -0
- package/src/app/shared/directives/resizable/resizable.module.d.ts +6 -0
- package/src/app/shared/file/file.service.d.ts +3 -0
- package/src/app/shared/file/file.utils.d.ts +1 -1
- package/src/app/shared/form/field.component.d.ts +12 -3
- package/src/app/shared/form/field.model.d.ts +2 -2
- package/src/app/shared/form/loading-spinner.d.ts +3 -0
- package/src/app/shared/forms.d.ts +13 -13
- package/src/app/shared/gesture/gesture-config.d.ts +3 -0
- package/src/app/shared/gesture/hammer.utils.d.ts +11 -11
- package/src/app/shared/graph/graph-colors.d.ts +8 -7
- package/src/app/shared/guard/component-dirty.guard.d.ts +3 -0
- package/src/app/shared/help/help.modal.d.ts +4 -1
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +3 -0
- package/src/app/shared/hotkeys/hotkeys.service.d.ts +4 -1
- package/src/app/shared/hotkeys/shared-hotkeys.module.d.ts +9 -0
- package/src/app/shared/image/gallery/image-gallery.component.d.ts +77 -0
- package/src/app/shared/image/gallery/image-gallery.module.d.ts +12 -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 +15 -0
- package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +12 -0
- package/src/app/shared/image/image.model.d.ts +5 -0
- package/src/app/shared/image/image.module.d.ts +8 -0
- package/src/app/shared/image/image.service.d.ts +32 -0
- package/src/app/shared/inputs.d.ts +3 -3
- package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +36 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +11 -40
- package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +19 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +4 -0
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +12 -9
- package/src/app/shared/material/badge/badge.directive.d.ts +28 -0
- package/src/app/shared/material/badge/badge.module.d.ts +10 -0
- package/src/app/shared/material/badge/badge.test.d.ts +12 -0
- package/src/app/shared/material/boolean/boolean.module.d.ts +17 -0
- package/src/app/shared/material/boolean/material.boolean.d.ts +7 -4
- package/src/app/shared/material/chips/chips.module.d.ts +19 -0
- package/src/app/shared/material/chips/material.chips.d.ts +11 -8
- package/src/app/shared/material/chips/testing/chips.test.d.ts +8 -5
- package/src/app/shared/material/datetime/datetime.module.d.ts +22 -0
- package/src/app/shared/material/datetime/material.date.d.ts +19 -18
- package/src/app/shared/material/datetime/material.dateshort.d.ts +10 -9
- package/src/app/shared/material/datetime/material.datetime.d.ts +21 -20
- package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +11 -9
- package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +11 -9
- package/src/app/shared/material/duration/duration.module.d.ts +16 -0
- package/src/app/shared/material/duration/material.duration.d.ts +8 -5
- package/src/app/shared/material/latlong/material.latlong.d.ts +8 -5
- package/src/app/shared/material/latlong/material.latlong.module.d.ts +17 -0
- package/src/app/shared/material/latlong/testing/latlong.test.d.ts +10 -7
- package/src/app/shared/material/material.module.d.ts +43 -0
- package/src/app/shared/material/material.testing.module.d.ts +19 -0
- package/src/app/shared/material/numpad/numpad.append-to-input.directive.d.ts +3 -0
- package/src/app/shared/material/numpad/numpad.component.d.ts +4 -1
- package/src/app/shared/material/numpad/numpad.container.d.ts +5 -2
- package/src/app/shared/material/numpad/numpad.content.d.ts +3 -0
- package/src/app/shared/material/numpad/numpad.directive.d.ts +4 -1
- package/src/app/shared/material/numpad/numpad.dom-service.d.ts +3 -0
- package/src/app/shared/material/numpad/numpad.model.d.ts +1 -1
- package/src/app/shared/material/numpad/numpad.module.d.ts +14 -0
- package/src/app/shared/material/numpad/testing/numpad.test.d.ts +7 -4
- package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +3 -0
- package/src/app/shared/material/stepper/material.stepper-i18n.d.ts +3 -0
- package/src/app/shared/material/swipe/material.swipe.d.ts +6 -3
- package/src/app/shared/material/swipe/swipe.module.d.ts +13 -0
- package/src/app/shared/material/swipe/testing/swipe.test.d.ts +7 -4
- package/src/app/shared/pipes/arrays.pipe.d.ts +17 -0
- package/src/app/shared/pipes/colors.pipe.d.ts +9 -0
- package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +4 -0
- package/src/app/shared/pipes/date-format.pipe.d.ts +4 -0
- package/src/app/shared/pipes/date-from-now.pipe.d.ts +4 -0
- package/src/app/shared/pipes/duration.pipe.d.ts +4 -0
- package/src/app/shared/pipes/file-size.pipe.d.ts +3 -0
- package/src/app/shared/pipes/form.pipes.d.ts +18 -5
- package/src/app/shared/pipes/highlight.pipe.d.ts +4 -0
- package/src/app/shared/pipes/latlong-format.pipe.d.ts +7 -0
- package/src/app/shared/pipes/maps.pipe.d.ts +10 -0
- package/src/app/shared/pipes/math.pipes.d.ts +10 -0
- package/src/app/shared/pipes/ng-init.pipe.d.ts +3 -0
- package/src/app/shared/pipes/number-format.pipe.d.ts +4 -0
- package/src/app/shared/pipes/pipes.module.d.ts +24 -0
- package/src/app/shared/pipes/property.pipes.d.ts +6 -0
- package/src/app/shared/pipes/string.pipes.d.ts +11 -0
- package/src/app/shared/pipes/translate-context.pipe.d.ts +7 -0
- package/src/app/shared/platforms.d.ts +1 -0
- package/src/app/shared/services/memory-entity-service.class.d.ts +3 -0
- package/src/app/shared/services/progress-bar.service.d.ts +4 -1
- package/src/app/shared/services/startable-observable-service.class.d.ts +1 -1
- package/src/app/shared/services/startable-service.class.d.ts +1 -1
- package/src/app/shared/services/storage/storage.service.d.ts +23 -0
- package/src/app/shared/services/storage/storage.utils.d.ts +19 -0
- package/src/app/shared/services/translate-context.service.d.ts +3 -0
- package/src/app/shared/services/validator-service.class.d.ts +2 -2
- package/src/app/shared/shared-routing.module.d.ts +7 -0
- package/src/app/shared/shared.module.d.ts +23 -0
- package/src/app/shared/shared.testing.module.d.ts +12 -0
- package/src/app/shared/testing/tests.page.d.ts +3 -0
- package/src/app/shared/toast/toast.testing.d.ts +6 -5
- package/src/app/shared/toast/toast.testing.module.d.ts +9 -0
- package/src/app/shared/toast/toasts.d.ts +5 -2
- package/src/app/shared/toolbar/modal-toolbar.d.ts +5 -2
- package/src/app/shared/toolbar/toolbar.d.ts +9 -5
- package/src/app/shared/toolbar/toolbar.module.d.ts +15 -0
- package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +4 -1
- package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +9 -0
- package/src/app/shared/upload-file/upload-file-popover.component.d.ts +3 -0
- package/src/app/shared/upload-file/upload-file.component.d.ts +3 -0
- package/src/app/shared/validator/form-error-adapter.class.d.ts +3 -0
- package/src/app/shared/validator/validators.d.ts +9 -9
- package/src/app/social/job/job.module.d.ts +9 -0
- package/src/app/social/job/job.service.d.ts +3 -0
- package/src/app/social/job/progression/job-progression.icon.d.ts +4 -1
- package/src/app/social/job/progression/job-progression.list.d.ts +3 -0
- package/src/app/social/job/testing/job-progression.testing.d.ts +3 -0
- package/src/app/social/job/testing/job-progression.testing.service.d.ts +3 -0
- package/src/app/social/job/testing/job.testing.module.d.ts +9 -0
- package/src/app/social/message/message.form.d.ts +5 -2
- package/src/app/social/message/message.modal.d.ts +5 -2
- package/src/app/social/message/message.module.d.ts +9 -0
- package/src/app/social/message/message.service.d.ts +3 -0
- package/src/app/social/social.module.d.ts +10 -0
- package/src/app/social/social.testing.module.d.ts +9 -0
- package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +4 -1
- package/src/app/social/user-event/notification/user-event-notification.list.d.ts +7 -4
- package/src/app/social/user-event/testing/user-event.testing.d.ts +3 -0
- package/src/app/social/user-event/testing/user-event.testing.model.d.ts +1 -0
- package/src/app/social/user-event/testing/user-event.testing.module.d.ts +9 -0
- package/src/app/social/user-event/testing/user-event.testing.service.d.ts +5 -1
- package/src/app/social/user-event/user-event.model.d.ts +3 -2
- package/src/app/social/user-event/user-event.module.d.ts +10 -0
- package/src/app/social/user-event/user-event.service.d.ts +16 -11
- package/src/assets/audio/beep-notification.mp3 +0 -0
- package/src/assets/i18n/fr.json +9 -2
- package/src/environments/environment.class.d.ts +2 -0
- package/src/environments/environment.d.ts +1 -1
- package/src/theme/_icons.scss +1 -1
- package/src/theme/_material.globals.scss +29 -31
- package/src/theme/_material.scss +32 -6
- package/src/theme/_mixins.scss +4 -4
- package/src/theme/_ngx-components.scss +27 -0
- package/src/theme/_print.scss +24 -0
- package/bundles/sumaris-net.ngx-components.umd.js +0 -35755
- package/bundles/sumaris-net.ngx-components.umd.js.map +0 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +0 -25
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +0 -1
- package/esm2015/public_api.js +0 -245
- package/esm2015/src/app/admin/admin-routing.module.js +0 -34
- package/esm2015/src/app/admin/admin.module.js +0 -34
- package/esm2015/src/app/admin/services/filter/person.filter.js +0 -59
- package/esm2015/src/app/admin/services/person.service.js +0 -175
- package/esm2015/src/app/admin/services/validator/person.validator.js +0 -37
- package/esm2015/src/app/admin/users/list/users.js +0 -216
- package/esm2015/src/app/core/about/modal-about.js +0 -63
- package/esm2015/src/app/core/account/account.js +0 -240
- package/esm2015/src/app/core/auth/form/form-auth.js +0 -134
- package/esm2015/src/app/core/auth/modal/modal-auth.js +0 -78
- package/esm2015/src/app/core/core.module.js +0 -127
- package/esm2015/src/app/core/core.testing.module.js +0 -51
- package/esm2015/src/app/core/form/editor.class.js +0 -698
- package/esm2015/src/app/core/form/entity-editor-modal.class.js +0 -422
- package/esm2015/src/app/core/form/entity-editor.class.js +0 -676
- package/esm2015/src/app/core/form/entity-metadata.component.js +0 -22
- package/esm2015/src/app/core/form/form-buttons-bar.component.js +0 -63
- package/esm2015/src/app/core/form/form.class.js +0 -342
- package/esm2015/src/app/core/form/form.utils.js +0 -299
- package/esm2015/src/app/core/form/list.form.js +0 -219
- package/esm2015/src/app/core/form/properties.form.js +0 -119
- package/esm2015/src/app/core/graphql/graphql.module.js +0 -18
- package/esm2015/src/app/core/graphql/graphql.service.js +0 -734
- package/esm2015/src/app/core/graphql/graphql.utils.js +0 -106
- package/esm2015/src/app/core/home/home.js +0 -265
- package/esm2015/src/app/core/icon/icon.component.js +0 -32
- package/esm2015/src/app/core/icon/icon.module.js +0 -26
- package/esm2015/src/app/core/install/install-upgrade-card.component.js +0 -358
- package/esm2015/src/app/core/menu/menu.component.js +0 -329
- package/esm2015/src/app/core/menu/menu.module.js +0 -28
- package/esm2015/src/app/core/offline/update-offline-mode-card.component.js +0 -26
- package/esm2015/src/app/core/peer/select-peer.modal.js +0 -134
- package/esm2015/src/app/core/register/confirm/confirm.js +0 -86
- package/esm2015/src/app/core/register/form/form-register.js +0 -172
- package/esm2015/src/app/core/register/modal/modal-register.js +0 -55
- package/esm2015/src/app/core/services/account.service.js +0 -1165
- package/esm2015/src/app/core/services/auth-guard.service.js +0 -77
- package/esm2015/src/app/core/services/base-entity-service.class.js +0 -454
- package/esm2015/src/app/core/services/base-graphql-service.class.js +0 -221
- package/esm2015/src/app/core/services/config.service.js +0 -385
- package/esm2015/src/app/core/services/local-settings.service.js +0 -460
- package/esm2015/src/app/core/services/model/account.model.js +0 -50
- package/esm2015/src/app/core/services/model/config.model.js +0 -89
- package/esm2015/src/app/core/services/model/department.model.js +0 -30
- package/esm2015/src/app/core/services/model/entity.decorators.js +0 -104
- package/esm2015/src/app/core/services/model/entity.model.js +0 -245
- package/esm2015/src/app/core/services/model/peer.model.js +0 -68
- package/esm2015/src/app/core/services/model/person.model.js +0 -83
- package/esm2015/src/app/core/services/model/referential.model.js +0 -147
- package/esm2015/src/app/core/services/model/settings.model.js +0 -75
- package/esm2015/src/app/core/services/network.service.js +0 -631
- package/esm2015/src/app/core/services/network.utils.js +0 -19
- package/esm2015/src/app/core/services/pipes/account.pipes.js +0 -28
- package/esm2015/src/app/core/services/pipes/department-to-string.pipe.js +0 -18
- package/esm2015/src/app/core/services/pipes/person-to-string.pipe.js +0 -18
- package/esm2015/src/app/core/services/pipes/usage-mode.pipes.js +0 -27
- package/esm2015/src/app/core/services/platform.service.js +0 -549
- package/esm2015/src/app/core/services/storage/entities-storage.service.js +0 -452
- package/esm2015/src/app/core/services/storage/entity-store.class.js +0 -461
- package/esm2015/src/app/core/services/testing/referential-filter.model.js +0 -23
- package/esm2015/src/app/core/services/testing/referential.validator.js +0 -44
- package/esm2015/src/app/core/services/validator/account.validator.js +0 -55
- package/esm2015/src/app/core/services/validator/base.validator.class.js +0 -48
- package/esm2015/src/app/core/services/validator/local-settings.validator.js +0 -72
- package/esm2015/src/app/core/services/validator/user-settings.validator.js +0 -30
- package/esm2015/src/app/core/settings/settings.page.js +0 -305
- package/esm2015/src/app/core/table/actions-column.component.js +0 -74
- package/esm2015/src/app/core/table/entities-table-datasource.class.js +0 -405
- package/esm2015/src/app/core/table/memory-table.class.js +0 -59
- package/esm2015/src/app/core/table/table-select-columns.component.js +0 -44
- package/esm2015/src/app/core/table/table.class.js +0 -1677
- package/esm2015/src/app/core/table/table.utils.js +0 -13
- package/esm2015/src/app/core/table/testing/table.testing.js +0 -242
- package/esm2015/src/app/core/table/testing/table.testing.module.js +0 -26
- package/esm2015/src/app/core/text-popover/testing/text-popover.testing.js +0 -37
- package/esm2015/src/app/core/text-popover/testing/text-popover.testing.module.js +0 -33
- package/esm2015/src/app/core/text-popover/text-form.component.js +0 -72
- package/esm2015/src/app/core/text-popover/text-popover.component.js +0 -90
- package/esm2015/src/app/shared/alerts.js +0 -251
- package/esm2015/src/app/shared/audio/audio.js +0 -178
- package/esm2015/src/app/shared/dates.js +0 -134
- package/esm2015/src/app/shared/directives/autofocus.directive.js +0 -90
- package/esm2015/src/app/shared/directives/autotitle.directive.js +0 -27
- package/esm2015/src/app/shared/directives/directives.module.js +0 -30
- package/esm2015/src/app/shared/directives/drag-and-drop.directive.js +0 -43
- package/esm2015/src/app/shared/directives/ng-var.directive.js +0 -32
- package/esm2015/src/app/shared/directives/resizable/resizable.component.js +0 -54
- package/esm2015/src/app/shared/directives/resizable/resizable.directive.js +0 -34
- package/esm2015/src/app/shared/directives/resizable/resizable.module.js +0 -12
- package/esm2015/src/app/shared/events.js +0 -61
- package/esm2015/src/app/shared/file/csv.utils.js +0 -70
- package/esm2015/src/app/shared/file/file.service.js +0 -120
- package/esm2015/src/app/shared/file/file.utils.js +0 -116
- package/esm2015/src/app/shared/file/images.utils.js +0 -166
- package/esm2015/src/app/shared/form/field.component.js +0 -206
- package/esm2015/src/app/shared/form/loading-spinner.js +0 -24
- package/esm2015/src/app/shared/forms.js +0 -358
- package/esm2015/src/app/shared/functions.js +0 -431
- package/esm2015/src/app/shared/gesture/hammer.utils.js +0 -2
- package/esm2015/src/app/shared/graph/graph-colors.js +0 -205
- package/esm2015/src/app/shared/guard/component-dirty.guard.js +0 -61
- package/esm2015/src/app/shared/help/help.modal.js +0 -56
- package/esm2015/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.js +0 -20
- package/esm2015/src/app/shared/hotkeys/hotkeys.service.js +0 -91
- package/esm2015/src/app/shared/hotkeys/shared-hotkeys.module.js +0 -29
- package/esm2015/src/app/shared/http/http.utils.js +0 -57
- package/esm2015/src/app/shared/material/autocomplete/material.autocomplete.js +0 -825
- package/esm2015/src/app/shared/material/autocomplete/material.autocomplete.module.js +0 -46
- package/esm2015/src/app/shared/material/autocomplete/testing/autocomplete.test.js +0 -200
- package/esm2015/src/app/shared/material/badge/badge-icon.directive.js +0 -135
- package/esm2015/src/app/shared/material/badge/badge-icon.module.js +0 -23
- package/esm2015/src/app/shared/material/badge/badge-icon.test.js +0 -17
- package/esm2015/src/app/shared/material/boolean/boolean.module.js +0 -41
- package/esm2015/src/app/shared/material/boolean/material.boolean.js +0 -223
- package/esm2015/src/app/shared/material/chips/chips.module.js +0 -45
- package/esm2015/src/app/shared/material/chips/material.chips.js +0 -636
- package/esm2015/src/app/shared/material/chips/testing/chips.test.js +0 -138
- package/esm2015/src/app/shared/material/datetime/datetime.module.js +0 -54
- package/esm2015/src/app/shared/material/datetime/material.date.js +0 -375
- package/esm2015/src/app/shared/material/datetime/material.dateshort.js +0 -316
- package/esm2015/src/app/shared/material/datetime/material.datetime.js +0 -398
- package/esm2015/src/app/shared/material/datetime/testing/mat-date-time.test.js +0 -110
- package/esm2015/src/app/shared/material/datetime/testing/mat-date.test.js +0 -108
- package/esm2015/src/app/shared/material/duration/duration.module.js +0 -40
- package/esm2015/src/app/shared/material/duration/material.duration.js +0 -246
- package/esm2015/src/app/shared/material/latlong/latlong.utils.js +0 -249
- package/esm2015/src/app/shared/material/latlong/material.latlong.js +0 -350
- package/esm2015/src/app/shared/material/latlong/material.latlong.module.js +0 -41
- package/esm2015/src/app/shared/material/latlong/testing/latlong.test.js +0 -70
- package/esm2015/src/app/shared/material/material.module.js +0 -93
- package/esm2015/src/app/shared/material/material.testing.module.js +0 -111
- package/esm2015/src/app/shared/material/numpad/numpad.append-to-input.directive.js +0 -96
- package/esm2015/src/app/shared/material/numpad/numpad.component.js +0 -73
- package/esm2015/src/app/shared/material/numpad/numpad.container.js +0 -149
- package/esm2015/src/app/shared/material/numpad/numpad.content.js +0 -14
- package/esm2015/src/app/shared/material/numpad/numpad.directive.js +0 -148
- package/esm2015/src/app/shared/material/numpad/numpad.dom-service.js +0 -37
- package/esm2015/src/app/shared/material/numpad/numpad.module.js +0 -39
- package/esm2015/src/app/shared/material/numpad/testing/numpad.test.js +0 -44
- package/esm2015/src/app/shared/material/paginator/material.paginator-i18n.js +0 -44
- package/esm2015/src/app/shared/material/stepper/material.stepper-i18n.js +0 -24
- package/esm2015/src/app/shared/material/swipe/material.swipe.js +0 -308
- package/esm2015/src/app/shared/material/swipe/swipe.module.js +0 -33
- package/esm2015/src/app/shared/material/swipe/testing/swipe.test.js +0 -68
- package/esm2015/src/app/shared/observables.js +0 -99
- package/esm2015/src/app/shared/pipes/arrays.pipe.js +0 -110
- package/esm2015/src/app/shared/pipes/date-diff-duration.pipe.js +0 -50
- package/esm2015/src/app/shared/pipes/date-format.pipe.js +0 -43
- package/esm2015/src/app/shared/pipes/file-size.pipe.js +0 -58
- package/esm2015/src/app/shared/pipes/form.pipes.js +0 -177
- package/esm2015/src/app/shared/pipes/highlight.pipe.js +0 -43
- package/esm2015/src/app/shared/pipes/latlong-format.pipe.js +0 -36
- package/esm2015/src/app/shared/pipes/maps.pipe.js +0 -48
- package/esm2015/src/app/shared/pipes/math.pipes.js +0 -44
- package/esm2015/src/app/shared/pipes/ng-init.pipe.js +0 -18
- package/esm2015/src/app/shared/pipes/pipes.module.js +0 -117
- package/esm2015/src/app/shared/pipes/property.pipes.js +0 -98
- package/esm2015/src/app/shared/pipes/string.pipes.js +0 -53
- package/esm2015/src/app/shared/pipes/translate-context.pipe.js +0 -36
- package/esm2015/src/app/shared/platforms.js +0 -45
- package/esm2015/src/app/shared/services/entity-service.class.js +0 -8
- package/esm2015/src/app/shared/services/job.utils.js +0 -96
- package/esm2015/src/app/shared/services/memory-entity-service.class.js +0 -342
- package/esm2015/src/app/shared/services/progress-bar.service.js +0 -30
- package/esm2015/src/app/shared/services/startable-observable-service.class.js +0 -124
- package/esm2015/src/app/shared/services/startable-service.class.js +0 -110
- package/esm2015/src/app/shared/services/storage.utils.js +0 -41
- package/esm2015/src/app/shared/services/translate-context.service.js +0 -83
- package/esm2015/src/app/shared/services/validator-service.class.js +0 -2
- package/esm2015/src/app/shared/services.js +0 -61
- package/esm2015/src/app/shared/shared-routing.module.js +0 -54
- package/esm2015/src/app/shared/shared.module.js +0 -135
- package/esm2015/src/app/shared/shared.testing.module.js +0 -33
- package/esm2015/src/app/shared/testing/tests.page.js +0 -34
- package/esm2015/src/app/shared/toast/toast.testing.js +0 -39
- package/esm2015/src/app/shared/toast/toast.testing.module.js +0 -33
- package/esm2015/src/app/shared/toast/toasts.js +0 -119
- package/esm2015/src/app/shared/toolbar/modal-toolbar.js +0 -53
- package/esm2015/src/app/shared/toolbar/toolbar.js +0 -213
- package/esm2015/src/app/shared/upload-file/testing/upload-file.testing.js +0 -59
- package/esm2015/src/app/shared/upload-file/testing/upload-file.testing.module.js +0 -33
- package/esm2015/src/app/shared/upload-file/upload-file-popover.component.js +0 -98
- package/esm2015/src/app/shared/upload-file/upload-file.component.js +0 -202
- package/esm2015/src/app/shared/upload-file/upload-file.model.js +0 -20
- package/esm2015/src/app/shared/validator/form-error-adapter.class.js +0 -99
- package/esm2015/src/app/shared/validator/validators.js +0 -537
- package/esm2015/src/app/social/job/job.model.js +0 -26
- package/esm2015/src/app/social/job/job.module.js +0 -25
- package/esm2015/src/app/social/job/job.service.js +0 -66
- package/esm2015/src/app/social/job/progression/job-progression.icon.js +0 -208
- package/esm2015/src/app/social/job/progression/job-progression.list.js +0 -20
- package/esm2015/src/app/social/job/testing/job-progression.testing.js +0 -49
- package/esm2015/src/app/social/job/testing/job-progression.testing.service.js +0 -52
- package/esm2015/src/app/social/job/testing/job.testing.module.js +0 -25
- package/esm2015/src/app/social/message/message.form.js +0 -73
- package/esm2015/src/app/social/message/message.modal.js +0 -96
- package/esm2015/src/app/social/message/message.model.js +0 -65
- package/esm2015/src/app/social/message/message.module.js +0 -25
- package/esm2015/src/app/social/message/message.service.js +0 -87
- package/esm2015/src/app/social/social.module.js +0 -28
- package/esm2015/src/app/social/social.testing.module.js +0 -39
- package/esm2015/src/app/social/user-event/notification/user-event-notification.icon.js +0 -106
- package/esm2015/src/app/social/user-event/notification/user-event-notification.list.js +0 -203
- package/esm2015/src/app/social/user-event/testing/user-event.testing.js +0 -230
- package/esm2015/src/app/social/user-event/testing/user-event.testing.model.js +0 -103
- package/esm2015/src/app/social/user-event/testing/user-event.testing.module.js +0 -25
- package/esm2015/src/app/social/user-event/testing/user-event.testing.service.js +0 -117
- package/esm2015/src/app/social/user-event/user-event.model.js +0 -2
- package/esm2015/src/app/social/user-event/user-event.module.js +0 -27
- package/esm2015/src/app/social/user-event/user-event.service.js +0 -509
- package/esm2015/src/environments/environment.class.js +0 -5
- package/esm2015/src/environments/environment.js +0 -81
- package/esm2015/sumaris-net.ngx-components.js +0 -21
- package/fesm2015/sumaris-net.ngx-components.js +0 -30297
- package/fesm2015/sumaris-net.ngx-components.js.map +0 -1
- package/src/app/core/form/properties.form.d.ts +0 -40
- package/src/app/shared/material/badge/badge-icon.directive.d.ts +0 -28
- package/src/app/shared/material/badge/badge-icon.module.d.ts +0 -2
- package/src/app/shared/material/badge/badge-icon.test.d.ts +0 -9
- package/src/app/shared/services/storage.utils.d.ts +0 -13
- package/sumaris-net.ngx-components.d.ts +0 -20
- package/sumaris-net.ngx-components.metadata.json +0 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import { BehaviorSubject } from 'rxjs';
|
|
5
|
+
import { StartableService } from '../../../services/startable-service.class';
|
|
6
|
+
import { isNil, isNotNil } from '../../../functions';
|
|
7
|
+
import { Entity, EntityUtils } from '../../../../core/services/model/entity.model';
|
|
8
|
+
import { EntityClass } from '../../../../core/services/model/entity.decorators';
|
|
9
|
+
import { EntityFilter } from '../../../../core/services/model/filter.model';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@ionic/angular";
|
|
12
|
+
// @dynamic
|
|
13
|
+
let ImageAttachment = class ImageAttachment extends Entity {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.dataUrl = null;
|
|
17
|
+
this.url = null;
|
|
18
|
+
this.title = null;
|
|
19
|
+
}
|
|
20
|
+
fromObject(source, opts) {
|
|
21
|
+
super.fromObject(source, opts);
|
|
22
|
+
this.url = source.url;
|
|
23
|
+
this.dataUrl = source.dataUrl;
|
|
24
|
+
this.title = source.title;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
ImageAttachment = __decorate([
|
|
28
|
+
EntityClass({ typename: 'ImageAttachmentVO' })
|
|
29
|
+
], ImageAttachment);
|
|
30
|
+
export { ImageAttachment };
|
|
31
|
+
// @dynamic
|
|
32
|
+
let ImageAttachmentFilter = class ImageAttachmentFilter extends EntityFilter {
|
|
33
|
+
};
|
|
34
|
+
ImageAttachmentFilter = __decorate([
|
|
35
|
+
EntityClass({ typename: 'ImageAttachmentFilterVO' })
|
|
36
|
+
], ImageAttachmentFilter);
|
|
37
|
+
export { ImageAttachmentFilter };
|
|
38
|
+
export class ImageAttachmentService extends StartableService {
|
|
39
|
+
constructor(platform) {
|
|
40
|
+
super(platform);
|
|
41
|
+
this.platform = platform;
|
|
42
|
+
this.$images = new BehaviorSubject([
|
|
43
|
+
{ id: 0, url: 'https://test.sumaris.net/assets/img/bg/ray-1.jpg', title: 'ray #1' },
|
|
44
|
+
{ id: 1, url: 'https://test.sumaris.net/assets/img/bg/ray-2.jpg', title: 'ray #2' }
|
|
45
|
+
]);
|
|
46
|
+
console.debug('[gallery-testing-service] Create service');
|
|
47
|
+
}
|
|
48
|
+
ngOnStart() {
|
|
49
|
+
return Promise.resolve(undefined);
|
|
50
|
+
}
|
|
51
|
+
watchAll(offset, size, sortBy, sortDirection, filter, opts) {
|
|
52
|
+
console.debug('[gallery-testing-service] Watching images...');
|
|
53
|
+
return this.$images
|
|
54
|
+
.pipe(map(images => {
|
|
55
|
+
let data = (images || []).map(ImageAttachment.fromObject);
|
|
56
|
+
data = EntityUtils.sort(data, sortBy, sortDirection);
|
|
57
|
+
console.debug(`[gallery-testing-service] Loaded ${data.length} images...`);
|
|
58
|
+
return { data, total: data.length };
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
async saveAll(entities, opts) {
|
|
62
|
+
console.debug('[gallery-service-testing] Saving images...' + JSON.stringify(entities));
|
|
63
|
+
if (!entities)
|
|
64
|
+
return [];
|
|
65
|
+
let currentId = this.$images.value.reduce((res, image) => Math.max(res, +image?.id || 0), 0);
|
|
66
|
+
entities.filter(item => isNil(item.id))
|
|
67
|
+
.forEach(item => {
|
|
68
|
+
item.id = ++currentId;
|
|
69
|
+
});
|
|
70
|
+
this.$images.next([
|
|
71
|
+
...this.$images.value,
|
|
72
|
+
...entities
|
|
73
|
+
]);
|
|
74
|
+
}
|
|
75
|
+
async deleteAll(entities, opts) {
|
|
76
|
+
const deletedIds = (entities || []).map(item => item.id).filter(isNotNil);
|
|
77
|
+
const filteredData = (this.$images.value).filter(item => !deletedIds.includes(item.id));
|
|
78
|
+
this.$images.next(filteredData);
|
|
79
|
+
}
|
|
80
|
+
asFilter(filter) {
|
|
81
|
+
return ImageAttachmentFilter.fromObject(filter);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
ImageAttachmentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ImageAttachmentService, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
85
|
+
ImageAttachmentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ImageAttachmentService });
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ImageAttachmentService, decorators: [{
|
|
87
|
+
type: Injectable
|
|
88
|
+
}], ctorParameters: function () { return [{ type: i1.Platform }]; } });
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS5zZXJ2aWNlLnRlc3RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9pbWFnZS9nYWxsZXJ5L3Rlc3RpbmcvZ2FsbGVyeS5zZXJ2aWNlLnRlc3RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFHM0UsT0FBTyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsTUFBTSxFQUFFLFdBQVcsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUU5RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOENBQThDLENBQUM7OztBQUcxRSxXQUFXO0FBRVgsSUFBYSxlQUFlLEdBQTVCLE1BQWEsZUFBZ0IsU0FBUSxNQUF1QjtJQUE1RDs7UUFJRSxZQUFPLEdBQVcsSUFBSSxDQUFDO1FBQ3ZCLFFBQUcsR0FBVyxJQUFJLENBQUM7UUFDbkIsVUFBSyxHQUFXLElBQUksQ0FBQztJQVF2QixDQUFDO0lBTkMsVUFBVSxDQUFDLE1BQVcsRUFBRSxJQUFVO1FBQ2hDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FB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LEdBQUcsUUFBUTtTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQTJCLEVBQUUsSUFBVTtRQUNyRCxNQUFNLFVBQVUsR0FBRyxDQUFDLFFBQVEsSUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFXO1FBQ2xCLE9BQU8scUJBQXFCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELENBQUM7O21IQXpEVSxzQkFBc0I7dUhBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtTb3J0RGlyZWN0aW9ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1N0YXJ0YWJsZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0YXJ0YWJsZS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7RW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zLCBJRW50aXRpZXNTZXJ2aWNlLCBMb2FkUmVzdWx0fSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge2lzTmlsLCBpc05vdE5pbH0gZnJvbSAnLi4vLi4vLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7RW50aXR5LCBFbnRpdHlVdGlsc30gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtFbnRpdHlDbGFzc30gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkuZGVjb3JhdG9ycyc7XG5pbXBvcnQge0ltYWdlfSBmcm9tICcuLi8uLi9pbWFnZS5tb2RlbCc7XG5pbXBvcnQge0VudGl0eUZpbHRlcn0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9maWx0ZXIubW9kZWwnO1xuXG5cbi8vIEBkeW5hbWljXG5ARW50aXR5Q2xhc3MoeyB0eXBlbmFtZTogJ0ltYWdlQXR0YWNobWVudFZPJyB9KVxuZXhwb3J0IGNsYXNzIEltYWdlQXR0YWNobWVudCBleHRlbmRzIEVudGl0eTxJbWFnZUF0dGFjaG1lbnQ+IGltcGxlbWVudHMgSW1hZ2Uge1xuXG4gIHN0YXRpYyBmcm9tT2JqZWN0OiAoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpID0+IEltYWdlQXR0YWNobWVudDtcblxuICBkYXRhVXJsOiBzdHJpbmcgPSBudWxsO1xuICB1cmw6IHN0cmluZyA9IG51bGw7XG4gIHRpdGxlOiBzdHJpbmcgPSBudWxsO1xuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpIHtcbiAgICBzdXBlci5mcm9tT2JqZWN0KHNvdXJjZSwgb3B0cyk7XG4gICAgdGhpcy51cmwgPSBzb3VyY2UudXJsO1xuICAgIHRoaXMuZGF0YVVybCA9IHNvdXJjZS5kYXRhVXJsO1xuICAgIHRoaXMudGl0bGUgPSBzb3VyY2UudGl0bGU7XG4gIH1cbn1cblxuLy8gQGR5bmFtaWNcbkBFbnRpdHlDbGFzcyh7IHR5cGVuYW1lOiAnSW1hZ2VBdHRhY2htZW50RmlsdGVyVk8nIH0pXG5leHBvcnQgY2xhc3MgSW1hZ2VBdHRhY2htZW50RmlsdGVyIGV4dGVuZHMgRW50aXR5RmlsdGVyPEltYWdlQXR0YWNobWVudEZpbHRlciwgSW1hZ2VBdHRhY2htZW50PiB7XG5cbiAgc3RhdGljIGZyb21PYmplY3Q6IChzb3VyY2U6IGFueSwgb3B0cz86IGFueSkgPT4gSW1hZ2VBdHRhY2htZW50RmlsdGVyO1xuXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbWFnZUF0dGFjaG1lbnRTZXJ2aWNlIGV4dGVuZHMgU3RhcnRhYmxlU2VydmljZVxuICBpbXBsZW1lbnRzIElFbnRpdGllc1NlcnZpY2U8SW1hZ2VBdHRhY2htZW50LCBJbWFnZUF0dGFjaG1lbnRGaWx0ZXI+IHtcblxuICAkaW1hZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYXJ0aWFsPEltYWdlQXR0YWNobWVudD5bXT4oW1xuICAgIHtpZDogMCwgdXJsOiAnaHR0cHM6Ly90ZXN0LnN1bWFyaXMubmV0L2Fzc2V0cy9pbWcvYmcvcmF5LTEuanBnJywgdGl0bGU6ICdyYXkgIzEnfSxcbiAgICB7aWQ6IDEsIHVybDogJ2h0dHBzOi8vdGVzdC5zdW1hcmlzLm5ldC9hc3NldHMvaW1nL2JnL3JheS0yLmpwZycsIHRpdGxlOiAncmF5ICMyJ31cbiAgXSk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHBsYXRmb3JtOiBQbGF0Zm9ybVxuICApIHtcbiAgICBzdXBlcihwbGF0Zm9ybSk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2dhbGxlcnktdGVzdGluZy1zZXJ2aWNlXSBDcmVhdGUgc2VydmljZScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5nT25TdGFydCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLCBzaXplOiBudW1iZXIsIHNvcnRCeT86IHN0cmluZywgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sIGZpbHRlcj86IEltYWdlQXR0YWNobWVudEZpbHRlciwgb3B0cz86IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyAmIHsgcXVlcnk/OiBhbnkgfSk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxJbWFnZUF0dGFjaG1lbnQ+PiB7XG4gICAgY29uc29sZS5kZWJ1ZygnW2dhbGxlcnktdGVzdGluZy1zZXJ2aWNlXSBXYXRjaGluZyBpbWFnZXMuLi4nKTtcbiAgICByZXR1cm4gdGhpcy4kaW1hZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKGltYWdlcyA9PiB7XG4gICAgICAgICAgbGV0IGRhdGEgPSAoaW1hZ2VzIHx8IFtdKS5tYXAoSW1hZ2VBdHRhY2htZW50LmZyb21PYmplY3QpO1xuXG4gICAgICAgICAgZGF0YSA9IEVudGl0eVV0aWxzLnNvcnQoZGF0YSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uKTtcblxuICAgICAgICAgIGNvbnNvbGUuZGVidWcoYFtnYWxsZXJ5LXRlc3Rpbmctc2VydmljZV0gTG9hZGVkICR7ZGF0YS5sZW5ndGh9IGltYWdlcy4uLmApO1xuXG4gICAgICAgICAgcmV0dXJuIHtkYXRhLCB0b3RhbDogZGF0YS5sZW5ndGh9O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVBbGwoZW50aXRpZXM6IEltYWdlQXR0YWNobWVudFtdLCBvcHRzPzogYW55KTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGNvbnNvbGUuZGVidWcoJ1tnYWxsZXJ5LXNlcnZpY2UtdGVzdGluZ10gU2F2aW5nIGltYWdlcy4uLicgKyBKU09OLnN0cmluZ2lmeShlbnRpdGllcykpO1xuICAgIGlmICghZW50aXRpZXMpIHJldHVybiBbXTtcblxuICAgIGxldCBjdXJyZW50SWQgPSB0aGlzLiRpbWFnZXMudmFsdWUucmVkdWNlKChyZXMsIGltYWdlKSA9PiBNYXRoLm1heChyZXMsICtpbWFnZT8uaWQgfHwgMCksIDApO1xuICAgIGVudGl0aWVzLmZpbHRlcihpdGVtID0+IGlzTmlsKGl0ZW0uaWQpKVxuICAgICAgLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGl0ZW0uaWQgPSArK2N1cnJlbnRJZDtcbiAgICB9KTtcbiAgICB0aGlzLiRpbWFnZXMubmV4dChbXG4gICAgICAuLi50aGlzLiRpbWFnZXMudmFsdWUsXG4gICAgICAuLi5lbnRpdGllc1xuICAgIF0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQWxsKGVudGl0aWVzOiBJbWFnZUF0dGFjaG1lbnRbXSwgb3B0cz86IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgZGVsZXRlZElkcyA9IChlbnRpdGllc3x8W10pLm1hcChpdGVtID0+IGl0ZW0uaWQpLmZpbHRlcihpc05vdE5pbCk7XG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gKHRoaXMuJGltYWdlcy52YWx1ZSkuZmlsdGVyKGl0ZW0gPT4gIWRlbGV0ZWRJZHMuaW5jbHVkZXMoaXRlbS5pZCkpO1xuICAgIHRoaXMuJGltYWdlcy5uZXh0KGZpbHRlcmVkRGF0YSk7XG4gIH1cblxuICBhc0ZpbHRlcihmaWx0ZXI6IGFueSkge1xuICAgIHJldHVybiBJbWFnZUF0dGFjaG1lbnRGaWx0ZXIuZnJvbU9iamVjdChmaWx0ZXIpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { ImageAttachment, ImageAttachmentService, } from './gallery.service.testing';
|
|
3
|
+
import { EntitiesTableDataSource } from '../../../../core/table/entities-table-datasource.class';
|
|
4
|
+
import { Subscription } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./gallery.service.testing";
|
|
7
|
+
import * as i2 from "@ionic/angular";
|
|
8
|
+
import * as i3 from "../image-gallery.component";
|
|
9
|
+
export class GalleryTestPage {
|
|
10
|
+
constructor(dataService) {
|
|
11
|
+
this.dataService = dataService;
|
|
12
|
+
this._subscription = new Subscription();
|
|
13
|
+
this.dataSource = new EntitiesTableDataSource(ImageAttachment, this.dataService);
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
this._subscription.add(this.dataSource.watchAll(0, 100, null, null, null)
|
|
17
|
+
.subscribe());
|
|
18
|
+
}
|
|
19
|
+
ngOnDestroy() {
|
|
20
|
+
this._subscription.unsubscribe();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
GalleryTestPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: GalleryTestPage, deps: [{ token: i1.ImageAttachmentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
24
|
+
GalleryTestPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: GalleryTestPage, selector: "app-gallery-test-page", providers: [
|
|
25
|
+
{ provide: ImageAttachmentService, useClass: ImageAttachmentService }
|
|
26
|
+
], ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Image gallery</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <app-image-gallery [dataSource]=\"dataSource\">\n </app-image-gallery>\n</ion-content>\n", dependencies: [{ kind: "component", type: i2.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i2.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { kind: "component", type: i3.AppImageGalleryComponent, selector: "app-image-gallery", inputs: ["debug", "readOnly", "disabled", "showToolbar", "mobile", "mode", "confirmBeforeDelete", "dataSource"] }] });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: GalleryTestPage, decorators: [{
|
|
28
|
+
type: Component,
|
|
29
|
+
args: [{ selector: 'app-gallery-test-page', providers: [
|
|
30
|
+
{ provide: ImageAttachmentService, useClass: ImageAttachmentService }
|
|
31
|
+
], template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Image gallery</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <app-image-gallery [dataSource]=\"dataSource\">\n </app-image-gallery>\n</ion-content>\n" }]
|
|
32
|
+
}], ctorParameters: function () { return [{ type: i1.ImageAttachmentService }]; } });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvaW1hZ2UvZ2FsbGVyeS90ZXN0aW5nL2dhbGxlcnkudGVzdGluZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2ltYWdlL2dhbGxlcnkvdGVzdGluZy9nYWxsZXJ5LnRlc3RpbmcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZUFBZSxFQUFFLHNCQUFzQixHQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFDL0YsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFVbEMsTUFBTSxPQUFPLGVBQWU7SUFLMUIsWUFBc0IsV0FBbUM7UUFBbkMsZ0JBQVcsR0FBWCxXQUFXLENBQXdCO1FBSGpELGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxlQUFVLEdBQUcsSUFBSSx1QkFBdUIsQ0FBeUMsZUFBZSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUc3SCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7YUFDckUsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7NEdBZlUsZUFBZTtnR0FBZixlQUFlLGdEQUpmO1FBQ1QsRUFBQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFDO0tBQ3BFLDBCQ1hILCtVQWVBOzJGREZhLGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0UsdUJBQXVCLGFBRXRCO3dCQUNULEVBQUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBQztxQkFDcEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJbWFnZUF0dGFjaG1lbnQsIEltYWdlQXR0YWNobWVudFNlcnZpY2UsfSBmcm9tICcuL2dhbGxlcnkuc2VydmljZS50ZXN0aW5nJztcbmltcG9ydCB7RW50aXRpZXNUYWJsZURhdGFTb3VyY2V9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdGFibGUvZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZS5jbGFzcyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ltYWdlQXR0YWNobWVudEZpbHRlcn0gZnJvbSAnLi9nYWxsZWdyeS5tb2RlbC50ZXN0aW5nJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWdhbGxlcnktdGVzdC1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dhbGxlcnkudGVzdGluZy5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge3Byb3ZpZGU6IEltYWdlQXR0YWNobWVudFNlcnZpY2UsIHVzZUNsYXNzOiBJbWFnZUF0dGFjaG1lbnRTZXJ2aWNlfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEdhbGxlcnlUZXN0UGFnZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHJlYWRvbmx5IGRhdGFTb3VyY2UgPSBuZXcgRW50aXRpZXNUYWJsZURhdGFTb3VyY2U8SW1hZ2VBdHRhY2htZW50LCBJbWFnZUF0dGFjaG1lbnRGaWx0ZXI+KEltYWdlQXR0YWNobWVudCwgdGhpcy5kYXRhU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBJbWFnZUF0dGFjaG1lbnRTZXJ2aWNlKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHRoaXMuZGF0YVNvdXJjZS53YXRjaEFsbCgwLDEwMCwgbnVsbCwgbnVsbCwgbnVsbClcbiAgICAgIC5zdWJzY3JpYmUoKSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJwcmltYXJ5XCI+XG5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlPkltYWdlIGdhbGxlcnk8L2lvbi10aXRsZT5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50PlxuICA8YXBwLWltYWdlLWdhbGxlcnkgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiPlxuICA8L2FwcC1pbWFnZS1nYWxsZXJ5PlxuPC9pb24tY29udGVudD5cbiJdfQ==
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
3
|
+
import { RouterModule } from '@angular/router';
|
|
4
|
+
import { GalleryTestPage } from './gallery.testing';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
import { IonicModule } from '@ionic/angular';
|
|
7
|
+
import { ImageGalleryModule } from '../image-gallery.module';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@ngx-translate/core";
|
|
10
|
+
import * as i2 from "@angular/router";
|
|
11
|
+
const routes = [
|
|
12
|
+
{
|
|
13
|
+
path: 'gallery',
|
|
14
|
+
pathMatch: 'full',
|
|
15
|
+
component: GalleryTestPage
|
|
16
|
+
},
|
|
17
|
+
];
|
|
18
|
+
export class ImageGalleryTestingModule {
|
|
19
|
+
}
|
|
20
|
+
ImageGalleryTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ImageGalleryTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
21
|
+
ImageGalleryTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.6", ngImport: i0, type: ImageGalleryTestingModule, declarations: [
|
|
22
|
+
// Components
|
|
23
|
+
GalleryTestPage], imports: [CommonModule,
|
|
24
|
+
IonicModule,
|
|
25
|
+
ImageGalleryModule, i1.TranslateModule, i2.RouterModule, i1.TranslateModule], exports: [RouterModule,
|
|
26
|
+
// Components
|
|
27
|
+
GalleryTestPage] });
|
|
28
|
+
ImageGalleryTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ImageGalleryTestingModule, imports: [CommonModule,
|
|
29
|
+
IonicModule,
|
|
30
|
+
ImageGalleryModule,
|
|
31
|
+
TranslateModule.forChild(),
|
|
32
|
+
RouterModule.forChild(routes),
|
|
33
|
+
TranslateModule.forChild(), RouterModule] });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ImageGalleryTestingModule, decorators: [{
|
|
35
|
+
type: NgModule,
|
|
36
|
+
args: [{
|
|
37
|
+
imports: [
|
|
38
|
+
CommonModule,
|
|
39
|
+
IonicModule,
|
|
40
|
+
ImageGalleryModule,
|
|
41
|
+
TranslateModule.forChild(),
|
|
42
|
+
RouterModule.forChild(routes),
|
|
43
|
+
TranslateModule.forChild(),
|
|
44
|
+
],
|
|
45
|
+
declarations: [
|
|
46
|
+
// Components
|
|
47
|
+
GalleryTestPage
|
|
48
|
+
],
|
|
49
|
+
exports: [
|
|
50
|
+
RouterModule,
|
|
51
|
+
// Components
|
|
52
|
+
GalleryTestPage
|
|
53
|
+
]
|
|
54
|
+
}]
|
|
55
|
+
}] });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS50ZXN0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2ltYWdlL2dhbGxlcnkvdGVzdGluZy9nYWxsZXJ5LnRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUUzRCxNQUFNLE1BQU0sR0FBVztJQUNyQjtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLGVBQWU7S0FDM0I7Q0FDRixDQUFBO0FBc0JELE1BQU0sT0FBTyx5QkFBeUI7O3NIQUF6Qix5QkFBeUI7dUhBQXpCLHlCQUF5QjtRQVZsQyxhQUFhO1FBQ2IsZUFBZSxhQVRmLFlBQVk7UUFDWixXQUFXO1FBQ1gsa0JBQWtCLHNFQVVsQixZQUFZO1FBRVosYUFBYTtRQUNiLGVBQWU7dUhBR04seUJBQXlCLFlBbEJsQyxZQUFZO1FBQ1osV0FBVztRQUNYLGtCQUFrQjtRQUNsQixlQUFlLENBQUMsUUFBUSxFQUFFO1FBQzFCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzdCLGVBQWUsQ0FBQyxRQUFRLEVBQUUsRUFPMUIsWUFBWTsyRkFNSCx5QkFBeUI7a0JBcEJyQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixlQUFlLENBQUMsUUFBUSxFQUFFO3dCQUMxQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzt3QkFDN0IsZUFBZSxDQUFDLFFBQVEsRUFBRTtxQkFDM0I7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGFBQWE7d0JBQ2IsZUFBZTtxQkFDaEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBRVosYUFBYTt3QkFDYixlQUFlO3FCQUNoQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGUsIFJvdXRlc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7R2FsbGVyeVRlc3RQYWdlfSBmcm9tICcuL2dhbGxlcnkudGVzdGluZyc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7SW9uaWNNb2R1bGV9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7SW1hZ2VHYWxsZXJ5TW9kdWxlfSBmcm9tICcuLi9pbWFnZS1nYWxsZXJ5Lm1vZHVsZSc7XG5cbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICB7XG4gICAgcGF0aDogJ2dhbGxlcnknLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogR2FsbGVyeVRlc3RQYWdlXG4gIH0sXG5dXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgSW1hZ2VHYWxsZXJ5TW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpLFxuICAgIFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICAvLyBDb21wb25lbnRzXG4gICAgR2FsbGVyeVRlc3RQYWdlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBSb3V0ZXJNb2R1bGUsXG5cbiAgICAvLyBDb21wb25lbnRzXG4gICAgR2FsbGVyeVRlc3RQYWdlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VHYWxsZXJ5VGVzdGluZ01vZHVsZSB7XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9pbWFnZS9pbWFnZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJbWFnZSB7XG4gIGRhdGFVcmw6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xufVxuXG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ImageGalleryModule } from './gallery/image-gallery.module';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ImageModule {
|
|
6
|
+
}
|
|
7
|
+
ImageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ImageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
ImageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.6", ngImport: i0, type: ImageModule, imports: [CommonModule,
|
|
9
|
+
ImageGalleryModule], exports: [
|
|
10
|
+
// Sub module
|
|
11
|
+
ImageGalleryModule] });
|
|
12
|
+
ImageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ImageModule, imports: [CommonModule,
|
|
13
|
+
ImageGalleryModule,
|
|
14
|
+
// Sub module
|
|
15
|
+
ImageGalleryModule] });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ImageModule, decorators: [{
|
|
17
|
+
type: NgModule,
|
|
18
|
+
args: [{
|
|
19
|
+
imports: [
|
|
20
|
+
CommonModule,
|
|
21
|
+
ImageGalleryModule
|
|
22
|
+
],
|
|
23
|
+
exports: [
|
|
24
|
+
// Sub module
|
|
25
|
+
ImageGalleryModule
|
|
26
|
+
]
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvaW1hZ2UvaW1hZ2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFhcEUsTUFBTSxPQUFPLFdBQVc7O3dHQUFYLFdBQVc7eUdBQVgsV0FBVyxZQVJwQixZQUFZO1FBQ1osa0JBQWtCO1FBR2xCLGFBQWE7UUFDYixrQkFBa0I7eUdBR1QsV0FBVyxZQVJwQixZQUFZO1FBQ1osa0JBQWtCO1FBR2xCLGFBQWE7UUFDYixrQkFBa0I7MkZBR1QsV0FBVztrQkFWdkIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUCxhQUFhO3dCQUNiLGtCQUFrQjtxQkFDbkI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEltYWdlR2FsbGVyeU1vZHVsZSB9IGZyb20gJy4vZ2FsbGVyeS9pbWFnZS1nYWxsZXJ5Lm1vZHVsZSc7XG5pbXBvcnQgeyBJbWFnZVNlcnZpY2UgfSBmcm9tICcuL2ltYWdlLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEltYWdlR2FsbGVyeU1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgLy8gU3ViIG1vZHVsZVxuICAgIEltYWdlR2FsbGVyeU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEltYWdlTW9kdWxlIHtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { StartableService } from '../services/startable-service.class';
|
|
3
|
+
import { ENVIRONMENT } from '../../../environments/environment.class';
|
|
4
|
+
import { FilesUtils } from '../file/file.utils';
|
|
5
|
+
import { ImagesUtils } from '../file/images.utils';
|
|
6
|
+
import { isEmptyArray } from '../functions';
|
|
7
|
+
import { Capacitor } from '@capacitor/core';
|
|
8
|
+
import { Camera, CameraResultType } from '@capacitor/camera';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../../core/services/platform.service";
|
|
11
|
+
import * as i2 from "../../core/services/local-settings.service";
|
|
12
|
+
import * as i3 from "@ngx-translate/core";
|
|
13
|
+
import * as i4 from "@ionic/angular";
|
|
14
|
+
import * as i5 from "../../../environments/environment.class";
|
|
15
|
+
//import {Camera, DestinationType, EncodingType, MediaType, PictureSourceType} from '@awesome-cordova-plugins/camera/ngx';
|
|
16
|
+
export class ImageService extends StartableService {
|
|
17
|
+
constructor(platform, settings, translate, popoverController,
|
|
18
|
+
// protected camera: Camera,
|
|
19
|
+
actionSheetController, environment) {
|
|
20
|
+
super(platform);
|
|
21
|
+
this.platform = platform;
|
|
22
|
+
this.settings = settings;
|
|
23
|
+
this.translate = translate;
|
|
24
|
+
this.popoverController = popoverController;
|
|
25
|
+
this.actionSheetController = actionSheetController;
|
|
26
|
+
this.environment = environment;
|
|
27
|
+
this.defaultMaxHeight = 1024;
|
|
28
|
+
this.defaultMaxWidth = 1024;
|
|
29
|
+
this._debug = !environment.production;
|
|
30
|
+
if (this._debug)
|
|
31
|
+
console.debug(`[image] Creating service`);
|
|
32
|
+
}
|
|
33
|
+
async ngOnStart() {
|
|
34
|
+
try {
|
|
35
|
+
const camera = Capacitor.isPluginAvailable('Camera');
|
|
36
|
+
console.info(`[image] Starting... {camera: ${camera}}`);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
console.error('Cannot check Camera plugin: ' + (err?.message || err));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async add(event, opts) {
|
|
43
|
+
if (!this.started)
|
|
44
|
+
await this.ready();
|
|
45
|
+
// If desktop: open upload popover
|
|
46
|
+
if (!this.platform.isCordova()) {
|
|
47
|
+
return this.addUploadedImages(event, opts);
|
|
48
|
+
}
|
|
49
|
+
console.info(`[image-service] Adding image...`);
|
|
50
|
+
try {
|
|
51
|
+
const data = await Camera.getPhoto({
|
|
52
|
+
height: this.defaultMaxHeight,
|
|
53
|
+
width: this.defaultMaxWidth,
|
|
54
|
+
promptLabelCancel: this.translate.instant('COMMON.BTN_CANCEL'),
|
|
55
|
+
promptLabelPicture: this.translate.instant('IMAGE.BTN_CAMERA_SOURCE'),
|
|
56
|
+
resultType: CameraResultType.DataUrl,
|
|
57
|
+
...opts
|
|
58
|
+
});
|
|
59
|
+
if (!data)
|
|
60
|
+
return undefined;
|
|
61
|
+
return [{
|
|
62
|
+
dataUrl: data.dataUrl
|
|
63
|
+
}];
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
console.info(`[image-service] Error while adding image: ${err?.message || err} -> ${err?.originalStack || ''}`);
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async addUploadedImages(event, opts) {
|
|
71
|
+
const { data } = await FilesUtils.showUploadPopover(this.popoverController, event, {
|
|
72
|
+
uniqueFile: true,
|
|
73
|
+
fileExtension: '.png, .jpg',
|
|
74
|
+
instantUpload: true,
|
|
75
|
+
uploadFn: (file) => ImagesUtils.readAsDataURL(file, {
|
|
76
|
+
maxWidth: this.defaultMaxWidth,
|
|
77
|
+
maxHeight: this.defaultMaxHeight,
|
|
78
|
+
...opts
|
|
79
|
+
})
|
|
80
|
+
});
|
|
81
|
+
if (isEmptyArray(data))
|
|
82
|
+
return; // No files uploaded: skip
|
|
83
|
+
return (data || [])
|
|
84
|
+
.map(file => file.response.body) // Get response body = data as base64
|
|
85
|
+
.map(dataUrl => ({ dataUrl }));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
ImageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ImageService, deps: [{ token: i1.PlatformService }, { token: i2.LocalSettingsService }, { token: i3.TranslateService }, { token: i4.PopoverController }, { token: i4.ActionSheetController }, { token: ENVIRONMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
89
|
+
ImageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ImageService, providedIn: 'root' });
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ImageService, decorators: [{
|
|
91
|
+
type: Injectable,
|
|
92
|
+
args: [{ providedIn: 'root' }]
|
|
93
|
+
}], ctorParameters: function () { return [{ type: i1.PlatformService }, { type: i2.LocalSettingsService }, { type: i3.TranslateService }, { type: i4.PopoverController }, { type: i4.ActionSheetController }, { type: i5.Environment, decorators: [{
|
|
94
|
+
type: Inject,
|
|
95
|
+
args: [ENVIRONMENT]
|
|
96
|
+
}, {
|
|
97
|
+
type: Optional
|
|
98
|
+
}] }]; } });
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2ltYWdlL2ltYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBSTNELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxXQUFXLEVBQWMsTUFBTSx5Q0FBeUMsQ0FBQztBQUdqRixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHMUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7OztBQUV6RSwwSEFBMEg7QUFJMUgsTUFBTSxPQUFPLFlBQWEsU0FBUSxnQkFBZ0I7SUFLaEQsWUFBc0IsUUFBeUIsRUFDekIsUUFBOEIsRUFDOUIsU0FBMkIsRUFDM0IsaUJBQW9DO0lBQzVELHlDQUF5QztJQUNqQixxQkFBNEMsRUFDWCxXQUF5QjtRQUU5RSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFSSSxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQUM5QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRXBDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDWCxnQkFBVyxHQUFYLFdBQVcsQ0FBYztRQVR4RSxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIs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LENBQUMscUNBQXFDO2FBQ3JFLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQU8sRUFBQyxPQUFPLEVBQUMsQ0FBQSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7eUdBMUVVLFlBQVksMkxBV0gsV0FBVzs2R0FYcEIsWUFBWSxjQURBLE1BQU07MkZBQ2xCLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzswQkFZakIsTUFBTTsyQkFBQyxXQUFXOzswQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aW9uU2hlZXRCdXR0b24sIEFjdGlvblNoZWV0Q29udHJvbGxlciwgUG9wb3ZlckNvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7U3RhcnRhYmxlU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtFTlZJUk9OTUVOVCwgRW52aXJvbm1lbnR9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQge1BsYXRmb3JtU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9wbGF0Zm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7TG9jYWxTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQge0ZpbGVzVXRpbHN9IGZyb20gJy4uL2ZpbGUvZmlsZS51dGlscyc7XG5pbXBvcnQge0ltYWdlc1V0aWxzfSBmcm9tICcuLi9maWxlL2ltYWdlcy51dGlscyc7XG5pbXBvcnQge2lzRW1wdHlBcnJheX0gZnJvbSAnLi4vZnVuY3Rpb25zJztcblxuaW1wb3J0IHtJbWFnZX0gZnJvbSAnLi9pbWFnZS5tb2RlbCc7XG5pbXBvcnQge0NhcGFjaXRvcn0gZnJvbSAnQGNhcGFjaXRvci9jb3JlJztcbmltcG9ydCB7Q2FtZXJhLCBDYW1lcmFSZXN1bHRUeXBlLCBJbWFnZU9wdGlvbnN9IGZyb20gJ0BjYXBhY2l0b3IvY2FtZXJhJztcblxuLy9pbXBvcnQge0NhbWVyYSwgRGVzdGluYXRpb25UeXBlLCBFbmNvZGluZ1R5cGUsIE1lZGlhVHlwZSwgUGljdHVyZVNvdXJjZVR5cGV9IGZyb20gJ0Bhd2Vzb21lLWNvcmRvdmEtcGx1Z2lucy9jYW1lcmEvbmd4JztcblxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBJbWFnZVNlcnZpY2UgZXh0ZW5kcyBTdGFydGFibGVTZXJ2aWNlIHtcblxuICBwcml2YXRlIGRlZmF1bHRNYXhIZWlnaHQgPSAxMDI0O1xuICBwcml2YXRlIGRlZmF1bHRNYXhXaWR0aCA9IDEwMjQ7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHBsYXRmb3JtOiBQbGF0Zm9ybVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBzZXR0aW5nczogTG9jYWxTZXR0aW5nc1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBwb3BvdmVyQ29udHJvbGxlcjogUG9wb3ZlckNvbnRyb2xsZXIsXG4vLyAgICAgICAgICAgICAgcHJvdGVjdGVkIGNhbWVyYTogQ2FtZXJhLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgYWN0aW9uU2hlZXRDb250cm9sbGVyOiBBY3Rpb25TaGVldENvbnRyb2xsZXIsXG4gICAgICAgICAgICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIEBPcHRpb25hbCgpIHByb3RlY3RlZCBlbnZpcm9ubWVudD86IEVudmlyb25tZW50XG4gICkge1xuICAgIHN1cGVyKHBsYXRmb3JtKTtcbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2ltYWdlXSBDcmVhdGluZyBzZXJ2aWNlYCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0YXJ0KCk6IFByb21pc2U8YW55PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNhbWVyYSA9IENhcGFjaXRvci5pc1BsdWdpbkF2YWlsYWJsZSgnQ2FtZXJhJyk7XG4gICAgICBjb25zb2xlLmluZm8oYFtpbWFnZV0gU3RhcnRpbmcuLi4ge2NhbWVyYTogJHtjYW1lcmF9fWApO1xuICAgIH0gY2F0Y2goZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDYW5ub3QgY2hlY2sgQ2FtZXJhIHBsdWdpbjogJyArIChlcnI/Lm1lc3NhZ2UgfHwgZXJyKSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYWRkKGV2ZW50PzogRXZlbnQsIG9wdHM/OiB7bWF4SGVpZ2h0PzogbnVtYmVyOyBtYXdXaWR0aD86IG51bWJlcjsgcXVhbGl0eT86IG51bWJlcn0pOiBQcm9taXNlPEltYWdlW118dW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIC8vIElmIGRlc2t0b3A6IG9wZW4gdXBsb2FkIHBvcG92ZXJcbiAgICBpZiAoIXRoaXMucGxhdGZvcm0uaXNDb3Jkb3ZhKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmFkZFVwbG9hZGVkSW1hZ2VzKGV2ZW50LCBvcHRzKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmluZm8oYFtpbWFnZS1zZXJ2aWNlXSBBZGRpbmcgaW1hZ2UuLi5gKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgQ2FtZXJhLmdldFBob3RvKHtcbiAgICAgICAgaGVpZ2h0OiB0aGlzLmRlZmF1bHRNYXhIZWlnaHQsXG4gICAgICAgIHdpZHRoOiB0aGlzLmRlZmF1bHRNYXhXaWR0aCxcbiAgICAgICAgcHJvbXB0TGFiZWxDYW5jZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0NPTU1PTi5CVE5fQ0FOQ0VMJyksXG4gICAgICAgIHByb21wdExhYmVsUGljdHVyZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnSU1BR0UuQlROX0NBTUVSQV9TT1VSQ0UnKSxcbiAgICAgICAgcmVzdWx0VHlwZTogQ2FtZXJhUmVzdWx0VHlwZS5EYXRhVXJsLFxuICAgICAgICAuLi5vcHRzXG4gICAgICB9KTtcbiAgICAgIGlmICghZGF0YSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIFs8SW1hZ2U+e1xuICAgICAgICBkYXRhVXJsOiBkYXRhLmRhdGFVcmxcbiAgICAgIH1dO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmluZm8oYFtpbWFnZS1zZXJ2aWNlXSBFcnJvciB3aGlsZSBhZGRpbmcgaW1hZ2U6ICR7ZXJyPy5tZXNzYWdlIHx8IGVycn0gLT4gJHtlcnI/Lm9yaWdpbmFsU3RhY2sgfHwgJyd9YCk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBhZGRVcGxvYWRlZEltYWdlcyhldmVudD86IEV2ZW50LCBvcHRzPzoge21heEhlaWdodD86IG51bWJlcjsgbWF3V2lkdGg/OiBudW1iZXI7IHF1YWxpdHk/OiBudW1iZXJ9KTogUHJvbWlzZTxJbWFnZVtdfHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgRmlsZXNVdGlscy5zaG93VXBsb2FkUG9wb3Zlcih0aGlzLnBvcG92ZXJDb250cm9sbGVyLCBldmVudCwge1xuICAgICAgdW5pcXVlRmlsZTogdHJ1ZSxcbiAgICAgIGZpbGVFeHRlbnNpb246ICcucG5nLCAuanBnJyxcbiAgICAgIGluc3RhbnRVcGxvYWQ6IHRydWUsXG4gICAgICB1cGxvYWRGbjogKGZpbGUpID0+IEltYWdlc1V0aWxzLnJlYWRBc0RhdGFVUkwoZmlsZSwge1xuICAgICAgICBtYXhXaWR0aDogdGhpcy5kZWZhdWx0TWF4V2lkdGgsXG4gICAgICAgIG1heEhlaWdodDogdGhpcy5kZWZhdWx0TWF4SGVpZ2h0LFxuICAgICAgICAuLi5vcHRzXG4gICAgICB9KVxuICAgIH0pO1xuXG4gICAgaWYgKGlzRW1wdHlBcnJheShkYXRhKSkgcmV0dXJuOyAvLyBObyBmaWxlcyB1cGxvYWRlZDogc2tpcFxuICAgIHJldHVybiAoZGF0YSB8fCBbXSlcbiAgICAgIC5tYXAoZmlsZSA9PiBmaWxlLnJlc3BvbnNlLmJvZHkpIC8vIEdldCByZXNwb25zZSBib2R5ID0gZGF0YSBhcyBiYXNlNjRcbiAgICAgIC5tYXAoZGF0YVVybCA9PiA8SW1hZ2U+e2RhdGFVcmx9KTtcbiAgfVxufVxuIl19
|
|
@@ -176,7 +176,7 @@ export function canHaveFocus(input, opts) {
|
|
|
176
176
|
&& (!opts.excludeEmptyInput || isNilOrBlank(input.value));
|
|
177
177
|
}
|
|
178
178
|
export function getFocusableInputElements(elements, opts) {
|
|
179
|
-
opts =
|
|
179
|
+
opts = { sortByTabIndex: false, excludeEmptyInput: false, ...opts };
|
|
180
180
|
// Focus to first input
|
|
181
181
|
const filteredElements = elements
|
|
182
182
|
// Transform to input
|
|
@@ -203,7 +203,7 @@ export function focusNextInput(event, elements, opts) {
|
|
|
203
203
|
// Get current index
|
|
204
204
|
const minTabindex = event && isInputElement(event.target) ? (event.target.tabIndex || event.target.tabindex) : undefined;
|
|
205
205
|
// Get focusable input elements
|
|
206
|
-
const focusableInputs = getFocusableInputElements(elements,
|
|
206
|
+
const focusableInputs = getFocusableInputElements(elements, { minTabindex, ...opts });
|
|
207
207
|
if (isNotEmptyArray(focusableInputs)) {
|
|
208
208
|
// Focus on first inputs
|
|
209
209
|
focusableInputs[0].focus();
|
|
@@ -220,7 +220,7 @@ export function focusPreviousInput(event, elements, opts) {
|
|
|
220
220
|
// Get current index
|
|
221
221
|
const maxTabindex = event && isInputElement(event.target) ? (event.target.tabIndex || event.target.tabindex) : undefined;
|
|
222
222
|
// Get focusable input elements
|
|
223
|
-
const focusableInputs = getFocusableInputElements(elements,
|
|
223
|
+
const focusableInputs = getFocusableInputElements(elements, { maxTabindex, ...opts });
|
|
224
224
|
if (isNotEmptyArray(focusableInputs)) {
|
|
225
225
|
// Focus on last inputs
|
|
226
226
|
focusableInputs[focusableInputs.length - 1].focus();
|
|
@@ -228,4 +228,4 @@ export function focusPreviousInput(event, elements, opts) {
|
|
|
228
228
|
}
|
|
229
229
|
return false;
|
|
230
230
|
}
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvaW5wdXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBbUIsa0JBQWtCLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBS2hHLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFjO0lBQy9DLElBQUksS0FBSyxDQUFDLGdCQUFnQjtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3pDLE1BQU0sS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUFjLENBQUM7SUFDcEMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLElBQUksQ0FBQztJQUV4QixvQkFBb0I7SUFDcEIsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRTVDLElBQUksT0FBTyxLQUFLLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRTtRQUMzQyxJQUFJO1lBQ0YsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7S0FDRjtJQUVELElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUU7UUFDL0MsSUFBSTtZQUNGLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDckUsT0FBTyxLQUFLLENBQUM7U0FDZDtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQVUsRUFBRSxVQUFrQixFQUFFLFFBQWlCO0lBQ2hGLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLGlCQUFpQixLQUFLLFVBQVUsRUFBRTtRQUUxRCxhQUFhO1FBQ2IsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRTVDLElBQUk7WUFDRixLQUFLLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNqRjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNuRCxPQUFPLEtBQUssQ0FBQztTQUNkO0tBQ0Y7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBVTtJQUN6QyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFO1FBQ2pDLE9BQU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDL0IsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7S0FDaEg7SUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxLQUFvQixFQUFFLFNBQWlCLEVBQUUsT0FBaUI7SUFDbEcsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdkQsTUFBTSxLQUFLLEdBQUksS0FBSyxDQUFDLE1BQWMsQ0FBQztJQUNwQyxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRXhCLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTlDLFFBQVE7SUFDUixpREFBaUQ7SUFFakQsSUFBSSxhQUFhLEtBQUssQ0FBQyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyw0QkFBNEI7SUFFbkUsa0JBQWtCO0lBQ2xCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFlLENBQUM7SUFFcEMsbUJBQW1CO0lBQ25CLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRXRDLElBQUk7UUFHRixJQUFJLEtBQUssSUFBSSxhQUFhLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUMxQyxRQUFRO1lBQ1IsNkNBQTZDO1lBQzdDLDhDQUE4QztZQUM5QyxvRUFBb0U7WUFDcEUsZ0ZBQWdGO1lBRWhGLE9BQU8sR0FBRyxPQUFPLEtBQUssS0FBSyxDQUFDO1lBRTVCLE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUN6SCxJQUFJLGNBQWMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLGNBQWMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQzttQkFDdkUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUU7b0JBQzNCLGdDQUFnQztvQkFDaEMsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsY0FBYyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDaEUsMEJBQTBCO3dCQUMxQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7d0JBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztxQkFDekI7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0Y7SUFBQyxPQUFPLEdBQUcsRUFBRTtRQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0QsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFvQixFQUFFLGFBQXNCLEVBQUUsZ0JBQXlCO0lBQ3ZHLHlFQUF5RTtJQUN6RSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQUU7UUFDeEYscUdBQXFHO1FBQ3JHLEtBQUs7S0FDTjtJQUNELG9CQUFvQjtTQUNmLElBQUksYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztXQUNyRixDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxFQUFFO1FBQzFELGtFQUFrRTtRQUNsRSxLQUFLO0tBQ047U0FBTTtRQUNMLGlIQUFpSDtRQUNqSCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRTtZQUN4SSxzR0FBc0c7WUFDdEcsS0FBSztTQUNOO1FBQ0QsK0JBQStCO2FBQzFCO1lBQ0gsNkhBQTZIO1lBQzdILEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN4QjtLQUNGO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBbUI7SUFDNUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLElBQUksWUFBWTtRQUNkLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNsQjtRQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDM0Q7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUFtQixFQUFFLFFBQWdCO0lBQy9ELElBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzFCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0tBQzdCO1NBQ0ksSUFBSSxPQUFPLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRTtRQUN6RCxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7S0FDM0M7U0FDSTtRQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsNENBQTRDLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDckU7QUFDSCxDQUFDO0FBU0QsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFXO0lBQ3hDLE9BQU8sa0JBQWtCLENBQUMsTUFBTSxDQUFDO1dBQzVCLENBQUMsT0FBTyxJQUFJLE1BQU07WUFDbkIseUZBQXlGO2VBQ3RGLENBQUMsVUFBVSxJQUFJLE1BQU0sSUFBSSxVQUFVLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFrQjtJQUMvQyxJQUFJLE1BQU0sRUFBRTtRQUNWLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sTUFBTSxDQUFDO1FBQzFDLElBQUksTUFBTSxDQUFDLGFBQWEsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztZQUFFLE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQztLQUMvRjtJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsQ0FBZSxFQUFFLENBQWU7SUFDakUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUN4QyxPQUFPLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQWFELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBbUIsRUFBRSxJQUEwQjtJQUMxRSxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLDJCQUEyQjtJQUMzQixPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO1FBQ3RDLHlCQUF5QjtXQUN0QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztRQUNsQyx5Q0FBeUM7V0FDdEMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzNGLHlDQUF5QztXQUN0QyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDM0YsMEJBQTBCO1dBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsUUFBK0IsRUFBRSxJQUErQjtJQUN4RyxJQUFJLG1CQUFJLGNBQWMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxJQUFLLElBQUksQ0FBQyxDQUFDO0lBRWxFLHVCQUF1QjtJQUN2QixNQUFNLGdCQUFnQixHQUFtQixRQUFRO1FBRS9DLHFCQUFxQjtTQUNwQixHQUFHLENBQUMsY0FBYyxDQUFDO1NBRW5CLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNkLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0MsUUFBUTtRQUNSLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsUUFBUSxlQUFlLEtBQUssQ0FBQyxRQUFRLElBQUUsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9JLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUwsbUJBQW1CO0lBQ25CLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtRQUN2QixPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBQ2xEO0lBRUQsT0FBTyxnQkFBZ0IsQ0FBQztBQUUxQixDQUFDO0FBR0QsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUF3QixFQUFFLFFBQStCLEVBQUUsSUFBK0I7SUFFdkgseURBQXlEO0lBQ3pELElBQUksS0FBSyxFQUFFO1FBQ1QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztLQUN6QjtJQUVELG9CQUFvQjtJQUNwQixNQUFNLFdBQVcsR0FBRyxLQUFLLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFekgsK0JBQStCO0lBQy9CLE1BQU0sZUFBZSxHQUFtQix5QkFBeUIsQ0FBQyxRQUFRLGtCQUFHLFdBQVcsSUFBSyxJQUFJLEVBQUUsQ0FBQztJQUVwRyxJQUFJLGVBQWUsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUNwQyx3QkFBd0I7UUFDeEIsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBd0IsRUFBRSxRQUErQixFQUFFLElBQStCO0lBRTNILHlEQUF5RDtJQUN6RCxJQUFJLEtBQUssRUFBRTtRQUNULEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7S0FDekI7SUFFRCxvQkFBb0I7SUFDcEIsTUFBTSxXQUFXLEdBQUcsS0FBSyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRXpILCtCQUErQjtJQUMvQixNQUFNLGVBQWUsR0FBbUIseUJBQXlCLENBQUMsUUFBUSxrQkFBRyxXQUFXLElBQUssSUFBSSxFQUFFLENBQUM7SUFFcEcsSUFBSSxlQUFlLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDcEMsdUJBQXVCO1FBQ3ZCLGVBQWUsQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VsZW1lbnRSZWYsIFF1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0ZvY3VzYWJsZUVsZW1lbnQsIGlzRm9jdXNhYmxlRWxlbWVudH0gZnJvbSAnLi9mb2N1c2FibGUnO1xuaW1wb3J0IHtpc05pbCwgaXNOaWxPckJsYW5rLCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsLCB0b0Jvb2xlYW4sIHRvTnVtYmVyfSBmcm9tICcuL2Z1bmN0aW9ucyc7XG5cblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RJbnB1dENvbnRlbnQoZXZlbnQ6IFVJRXZlbnQpIHtcbiAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgaW5wdXQgPSAoZXZlbnQudGFyZ2V0IGFzIGFueSk7XG4gIGlmICghaW5wdXQpIHJldHVybiB0cnVlO1xuXG4gIC8vIE5vdGhpbmcgdG8gc2VsZWN0XG4gIGlmIChpc05pbE9yQmxhbmsoaW5wdXQudmFsdWUpKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHR5cGVvZiBpbnB1dC5zZWxlY3RSYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICBpbnB1dC5zZWxlY3RSYW5nZShpbnB1dC52YWx1ZS5sZW5ndGgsIDApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3Qgc2VsZWN0IGlucHV0IGNvbnRlbnQsIHVzaW5nIHNlbGVjdFJhbmdlKCknLCBlcnIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQuc2VsZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3Qgc2VsZWN0IGlucHV0IGNvbnRlbnQsIHVzaW5nIHNlbGVjdCgpJywgZXJyKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RJbnB1dFJhbmdlKGlucHV0OiBhbnksIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg/OiBudW1iZXIpIHtcbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuXG4gICAgLy8gTm8gY29udGVudFxuICAgIGlmIChpc05pbE9yQmxhbmsoaW5wdXQudmFsdWUpKSByZXR1cm4gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnRJbmRleCwgaXNOb3ROaWwoZW5kSW5kZXgpID8gZW5kSW5kZXggOiBzdGFydEluZGV4KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBzZWxlY3QgaW5wdXQgcmFuZ2UnLCBlcnIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENhcmV0UG9zaXRpb24oaW5wdXQ6IGFueSk6IG51bWJlciB7XG4gIGlmIChpbnB1dCAmJiBpbnB1dC5zZWxlY3Rpb25TdGFydCkge1xuICAgIHJldHVybiBpbnB1dC5zZWxlY3Rpb25EaXJlY3Rpb24gP1xuICAgICAgKGlucHV0LnNlbGVjdGlvbkRpcmVjdGlvbiA9PT0gJ2JhY2t3YXJkJyA/IGlucHV0LnNlbGVjdGlvblN0YXJ0IDogaW5wdXQuc2VsZWN0aW9uRW5kKSA6IGlucHV0LnNlbGVjdGlvblN0YXJ0O1xuICB9XG4gIHJldHVybiAtMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdmVJbnB1dENhcmV0VG9TZXBhcmF0b3IoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHNlcGFyYXRvcjogc3RyaW5nLCBmb3J3YXJkPzogYm9vbGVhbikge1xuICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fCAhc2VwYXJhdG9yKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IGlucHV0ID0gKGV2ZW50LnRhcmdldCBhcyBhbnkpO1xuICBpZiAoIWlucHV0KSByZXR1cm4gdHJ1ZTtcblxuICBjb25zdCBjYXJldFBvc2l0aW9uID0gZ2V0Q2FyZXRQb3NpdGlvbihpbnB1dCk7XG5cbiAgLy8gREVCVUdcbiAgLy9jb25zb2xlLmRlYnVnKCdjYXJldFBvc2l0aW9uPScsIGNhcmV0UG9zaXRpb24pO1xuXG4gIGlmIChjYXJldFBvc2l0aW9uID09PSAtMSkgcmV0dXJuIHRydWU7IC8vIENhcmV0IHBvcyBub3QgZm91bmQ6IHNraXBcblxuICAvLyBHZXQgaW5wdXQgdmFsdWVcbiAgY29uc3QgdmFsdWUgPSBpbnB1dC52YWx1ZSBhcyBzdHJpbmc7XG5cbiAgLy8gTm8gY29udGVudDogc2tpcFxuICBpZiAoaXNOaWxPckJsYW5rKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuXG4gIHRyeSB7XG5cblxuICAgIGlmICh2YWx1ZSAmJiBjYXJldFBvc2l0aW9uIDw9IHZhbHVlLmxlbmd0aCkge1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIklucHV0IHRleHQgdmFsdWU6IFwiLCB2YWx1ZSk7XG4gICAgICAvL2NvbnNvbGUuZGVidWcoXCJDdXJzb3IgYXQ6IFwiLCBjYXJldFBvc2l0aW9uKTtcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIlRleHQgYWZ0ZXIgY3Vyc29yOiBcIiwgdmFsdWUuc3Vic3RyKGNhcmV0UG9zaXRpb24pKTtcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIk5leHQgc2VwYXJhdG9yIGF0OiBcIiwgdmFsdWUuaW5kZXhPZihzZXBhcmF0b3IsIGNhcmV0UG9zaXRpb24pKTtcblxuICAgICAgZm9yd2FyZCA9IGZvcndhcmQgIT09IGZhbHNlO1xuXG4gICAgICBjb25zdCBzZXBhcmF0b3JJbmRleCA9IChmb3J3YXJkID8gdmFsdWUuaW5kZXhPZihzZXBhcmF0b3IsIGNhcmV0UG9zaXRpb24pIDogdmFsdWUubGFzdEluZGV4T2Yoc2VwYXJhdG9yLCBjYXJldFBvc2l0aW9uKSk7XG4gICAgICBpZiAoc2VwYXJhdG9ySW5kZXggIT09IC0xICYmICgoZm9yd2FyZCAmJiBzZXBhcmF0b3JJbmRleCArIDEgPCB2YWx1ZS5sZW5ndGgpXG4gICAgICAgIHx8ICghZm9yd2FyZCAmJiBzZXBhcmF0b3JJbmRleCA+IDApKSkge1xuICAgICAgICBpZiAoaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UpIHtcbiAgICAgICAgICAvLyBNb3ZlIGFmdGVyIHRoZSBuZXh0IHNlcGFyYXRvclxuICAgICAgICAgIGlmIChzZWxlY3RJbnB1dFJhbmdlKGlucHV0LCBzZXBhcmF0b3JJbmRleCArIChmb3J3YXJkID8gMSA6IC0xKSkpIHtcbiAgICAgICAgICAgIC8vIFN0b3AgdGhlIGtleWJvYXJkIGV2ZW50XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgbW92ZSBjYXJldCB0byBuZXh0IHNlcGFyYXRvcicsIGVycik7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyTnVtYmVySW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGFsbG93RGVjaW1hbHM6IGJvb2xlYW4sIGRlY2ltYWxTZXBhcmF0b3I/OiBzdHJpbmcpIHtcbiAgLy9pbnB1dCBudW1iZXIgZW50ZXJlZCBvciBvbmUgb2YgdGhlIDQgZGlyZWN0aW9uIHVwLCBkb3duLCBsZWZ0IGFuZCByaWdodFxuICBpZiAoKGV2ZW50LndoaWNoID49IDQ4ICYmIGV2ZW50LndoaWNoIDw9IDU3KSB8fCAoZXZlbnQud2hpY2ggPj0gMzcgJiYgZXZlbnQud2hpY2ggPD0gNDApKSB7XG4gICAgLy9jb25zb2xlLmRlYnVnKCdpbnB1dCBudW1iZXIgZW50ZXJlZCA6JyArIGV2ZW50LndoaWNoICsgJyAnICsgZXZlbnQua2V5Q29kZSArICcgJyArIGV2ZW50LmNoYXJDb2RlKTtcbiAgICAvLyBPS1xuICB9XG4gIC8vIERlY2ltYWwgc2VwYXJhdG9yXG4gIGVsc2UgaWYgKGFsbG93RGVjaW1hbHMgJiYgKCghZGVjaW1hbFNlcGFyYXRvciAmJiAoZXZlbnQua2V5ID09PSAnLicgfHwgZXZlbnQua2V5ID09PSAnLCcpKVxuICAgIHx8IChkZWNpbWFsU2VwYXJhdG9yICYmIGV2ZW50LmtleSA9PT0gZGVjaW1hbFNlcGFyYXRvcikpKSB7XG4gICAgLy9jb25zb2xlLmRlYnVnKCdpbnB1dCBkZWNpbWFsIHNlcGFyYXRvciBlbnRlcmVkIDonICsgZXZlbnQuY29kZSk7XG4gICAgLy8gT0tcbiAgfSBlbHNlIHtcbiAgICAvL2lucHV0IGNvbW1hbmQgZW50ZXJlZCBvZiBkZWxldGUsIGJhY2tzcGFjZSBvciBvbmUgb2YgdGhlIDQgZGlyZWN0aW9uIHVwLCBkb3duLCBsZWZ0IGFuZCByaWdodCwgb3IgbmVnYXRpdmUgc2lnblxuICAgIGlmICgoZXZlbnQua2V5Q29kZSA+PSAzNyAmJiBldmVudC5rZXlDb2RlIDw9IDQwKSB8fCBldmVudC5rZXlDb2RlID09IDQ2IHx8IGV2ZW50LndoaWNoID09IDggfHwgZXZlbnQua2V5Q29kZSA9PSA5IHx8IGV2ZW50LmtleUNvZGUgPT0gNDUpIHtcbiAgICAgIC8vY29uc29sZS5kZWJ1ZygnaW5wdXQgY29tbWFuZCBlbnRlcmVkIDonICsgZXZlbnQud2hpY2ggKyAnICcgKyBldmVudC5rZXlDb2RlICsgJyAnICsgZXZlbnQuY2hhckNvZGUpO1xuICAgICAgLy8gT0tcbiAgICB9XG4gICAgLy8gQ2FuY2VsIG90aGVyIGtleWJvYXJkIGV2ZW50c1xuICAgIGVsc2Uge1xuICAgICAgLy9jb25zb2xlLmRlYnVnKCdpbnB1dCBub3QgbnVtYmVyIGVudGVyZWQgOicgKyBldmVudC53aGljaCArICcgJyArIGV2ZW50LmtleUNvZGUgKyAnICcgKyBldmVudC5jaGFyQ29kZSArICcgJyArIGV2ZW50LmNvZGUgKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb2N1c0lucHV0KGVsZW1lbnQ6IEVsZW1lbnRSZWYpIHtcbiAgY29uc3QgaW5wdXRFbGVtZW50ID0gYXNJbnB1dEVsZW1lbnQoZWxlbWVudCk7XG4gIGlmIChpbnB1dEVsZW1lbnQpXG4gICAgaW5wdXRFbGVtZW50LmZvY3VzKCk7XG4gIGVsc2Uge1xuICAgIGNvbnNvbGUud2FybignVHJ5aW5nIHRvIGZvY3VzIG9uIHRoaXMgZWxlbWVudDonLCBlbGVtZW50KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VGFiSW5kZXgoZWxlbWVudDogRWxlbWVudFJlZiwgdGFiSW5kZXg6IG51bWJlcikge1xuICBpZihpc0lucHV0RWxlbWVudChlbGVtZW50KSkge1xuICAgIGVsZW1lbnQudGFiaW5kZXggPSB0YWJJbmRleDtcbiAgfVxuICBlbHNlIGlmIChlbGVtZW50ICYmIGlzSW5wdXRFbGVtZW50KGVsZW1lbnQubmF0aXZlRWxlbWVudCkpIHtcbiAgICBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSB0YWJJbmRleDtcbiAgfVxuICBlbHNlIHtcbiAgICBjb25zb2xlLndhcm4oJ1RyeWluZyB0byBjaGFuZ2UgdGFiaW5kZXggb24gdGhpcyBlbGVtZW50OicsIGVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRFbGVtZW50IGV4dGVuZHMgRm9jdXNhYmxlRWxlbWVudCB7XG4gIHRhYmluZGV4PzogbnVtYmVyO1xuICB0YWJJbmRleD86IG51bWJlcjtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB2YWx1ZTogYW55O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5wdXRFbGVtZW50KG9iamVjdDogYW55KTogb2JqZWN0IGlzIElucHV0RWxlbWVudCB7XG4gIHJldHVybiBpc0ZvY3VzYWJsZUVsZW1lbnQob2JqZWN0KVxuICAgICYmICgndmFsdWUnIGluIG9iamVjdFxuICAgICAgLy8gaGFzIHZhbHVlIGlzIG5vdCBhbHdheXMgc2V0IChuZWl0aGVyIHRhYmluZGV4KSBjaGVjayBvbiAyIHByb3BlcnRpZXMgd2l0aCBhIGxvZ2ljYWwgT1JcbiAgICAgIHx8ICgndGFiaW5kZXgnIGluIG9iamVjdCB8fCAndGFiSW5kZXgnIGluIG9iamVjdCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNJbnB1dEVsZW1lbnQob2JqZWN0OiBFbGVtZW50UmVmKTogSW5wdXRFbGVtZW50fHVuZGVmaW5lZCB7XG4gIGlmIChvYmplY3QpIHtcbiAgICBpZiAoaXNJbnB1dEVsZW1lbnQob2JqZWN0KSkgcmV0dXJuIG9iamVjdDtcbiAgICBpZiAob2JqZWN0Lm5hdGl2ZUVsZW1lbnQgJiYgaXNJbnB1dEVsZW1lbnQob2JqZWN0Lm5hdGl2ZUVsZW1lbnQpKSByZXR1cm4gb2JqZWN0Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmluZGV4Q29tcGFyYXRvcihhOiBJbnB1dEVsZW1lbnQsIGI6IElucHV0RWxlbWVudCkge1xuICBjb25zdCB2YWx1ZUEgPSBhLnRhYmluZGV4IHx8IGEudGFiSW5kZXg7XG4gIGNvbnN0IHZhbHVlQiA9IGIudGFiaW5kZXggfHwgYi50YWJJbmRleDtcbiAgcmV0dXJuIHZhbHVlQSA9PT0gdmFsdWVCID8gMCA6ICh2YWx1ZUEgPiB2YWx1ZUIgPyAxIDogLTEpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbkdhaW5Gb2N1c09wdGlvbnMge1xuICBtaW5UYWJpbmRleD86IG51bWJlcjtcbiAgbWF4VGFiaW5kZXg/OiBudW1iZXI7XG4gIGV4Y2x1ZGVFbXB0eUlucHV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRGb2N1c2FibGVJbnB1dE9wdGlvbnMgZXh0ZW5kcyBDYW5HYWluRm9jdXNPcHRpb25zIHtcbiAgc29ydEJ5VGFiSW5kZXg/OiBib29sZWFuO1xuICBkZWJ1Zz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5IYXZlRm9jdXMoaW5wdXQ6IElucHV0RWxlbWVudCwgb3B0cz86IENhbkdhaW5Gb2N1c09wdGlvbnMpOiBib29sZWFuIHtcbiAgaWYgKCFpbnB1dCkgcmV0dXJuIGZhbHNlO1xuICAvLyBFeGNsdWRlIGRpc2FibGVkIGVsZW1lbnRcbiAgcmV0dXJuICF0b0Jvb2xlYW4oaW5wdXQuZGlzYWJsZWQsIGZhbHNlKVxuICAgIC8vIEV4Y2x1ZGUgaGlkZGVuIGVsZW1lbnRcbiAgICAmJiAhdG9Cb29sZWFuKGlucHV0LmhpZGRlbiwgZmFsc2UpXG4gICAgLy8gRXhjbHVkZSBtaW5UYWJJbmRleCA8IGVsZW1lbnQudGFiSW5kZXhcbiAgICAmJiAoaXNOaWwob3B0cy5taW5UYWJpbmRleCkgfHwgdG9OdW1iZXIoaW5wdXQudGFiSW5kZXgsIGlucHV0LnRhYmluZGV4KSA+IG9wdHMubWluVGFiaW5kZXgpXG4gICAgLy8gRXhjbHVkZSBtYXhUYWJJbmRleCA+IGVsZW1lbnQudGFiSW5kZXhcbiAgICAmJiAoaXNOaWwob3B0cy5tYXhUYWJpbmRleCkgfHwgdG9OdW1iZXIoaW5wdXQudGFiSW5kZXgsIGlucHV0LnRhYmluZGV4KSA8IG9wdHMubWF4VGFiaW5kZXgpXG4gICAgLy8gRXhjbHVkZSBuaWwgaW5wdXQgdmFsdWVcbiAgICAmJiAoIW9wdHMuZXhjbHVkZUVtcHR5SW5wdXQgfHwgaXNOaWxPckJsYW5rKGlucHV0LnZhbHVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2N1c2FibGVJbnB1dEVsZW1lbnRzKGVsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4sIG9wdHM/OiBHZXRGb2N1c2FibGVJbnB1dE9wdGlvbnMpOiBJbnB1dEVsZW1lbnRbXSB7XG4gIG9wdHMgPSB7c29ydEJ5VGFiSW5kZXg6IGZhbHNlLCBleGNsdWRlRW1wdHlJbnB1dDogZmFsc2UsIC4uLm9wdHN9O1xuXG4gIC8vIEZvY3VzIHRvIGZpcnN0IGlucHV0XG4gIGNvbnN0IGZpbHRlcmVkRWxlbWVudHM6IElucHV0RWxlbWVudFtdID0gZWxlbWVudHNcblxuICAgIC8vIFRyYW5zZm9ybSB0byBpbnB1dFxuICAgIC5tYXAoYXNJbnB1dEVsZW1lbnQpXG5cbiAgICAuZmlsdGVyKGlucHV0ID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVkID0gY2FuSGF2ZUZvY3VzKGlucHV0LCBvcHRzKTtcbiAgICAgIC8vIERFQlVHXG4gICAgICBpZiAoaW5wdXQgJiYgb3B0cy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2lucHV0c10gRm9jdXNhYmxlIGlucHV0IHtjYW5Gb2N1czogJHtpbmNsdWRlZH0sIHRhYkluZGV4OiAke2lucHV0LnRhYkluZGV4fHxpbnB1dC50YWJpbmRleH19YCwgaW5wdXQpO1xuICAgICAgcmV0dXJuIGluY2x1ZGVkO1xuICAgIH0pO1xuXG4gIC8vIFNvcnQgYnkgdGFiSW5kZXhcbiAgaWYgKG9wdHMuc29ydEJ5VGFiSW5kZXgpIHtcbiAgICByZXR1cm4gZmlsdGVyZWRFbGVtZW50cy5zb3J0KHRhYmluZGV4Q29tcGFyYXRvcik7XG4gIH1cblxuICByZXR1cm4gZmlsdGVyZWRFbGVtZW50cztcblxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBmb2N1c05leHRJbnB1dChldmVudDogVUlFdmVudHx1bmRlZmluZWQsIGVsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4sIG9wdHM/OiBHZXRGb2N1c2FibGVJbnB1dE9wdGlvbnMpOiBib29sZWFuIHtcblxuICAvLyBDYW5jZWxsaW5nIGV2ZW50IChlLmcuIHdoZW4gZW1pdHRlZCBieSAoa2V5ZG93bi50YWIpIClcbiAgaWYgKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8vIEdldCBjdXJyZW50IGluZGV4XG4gIGNvbnN0IG1pblRhYmluZGV4ID0gZXZlbnQgJiYgaXNJbnB1dEVsZW1lbnQoZXZlbnQudGFyZ2V0KSA/IChldmVudC50YXJnZXQudGFiSW5kZXggfHwgZXZlbnQudGFyZ2V0LnRhYmluZGV4KSA6IHVuZGVmaW5lZDtcblxuICAvLyBHZXQgZm9jdXNhYmxlIGlucHV0IGVsZW1lbnRzXG4gIGNvbnN0IGZvY3VzYWJsZUlucHV0czogSW5wdXRFbGVtZW50W10gPSBnZXRGb2N1c2FibGVJbnB1dEVsZW1lbnRzKGVsZW1lbnRzLCB7bWluVGFiaW5kZXgsIC4uLm9wdHN9KTtcblxuICBpZiAoaXNOb3RFbXB0eUFycmF5KGZvY3VzYWJsZUlucHV0cykpIHtcbiAgICAvLyBGb2N1cyBvbiBmaXJzdCBpbnB1dHNcbiAgICBmb2N1c2FibGVJbnB1dHNbMF0uZm9jdXMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvY3VzUHJldmlvdXNJbnB1dChldmVudDogVUlFdmVudHx1bmRlZmluZWQsIGVsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4sIG9wdHM/OiBHZXRGb2N1c2FibGVJbnB1dE9wdGlvbnMpOiBib29sZWFuIHtcblxuICAvLyBDYW5jZWxsaW5nIGV2ZW50IChlLmcuIHdoZW4gZW1pdHRlZCBieSAoa2V5ZG93bi50YWIpIClcbiAgaWYgKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8vIEdldCBjdXJyZW50IGluZGV4XG4gIGNvbnN0IG1heFRhYmluZGV4ID0gZXZlbnQgJiYgaXNJbnB1dEVsZW1lbnQoZXZlbnQudGFyZ2V0KSA/IChldmVudC50YXJnZXQudGFiSW5kZXggfHwgZXZlbnQudGFyZ2V0LnRhYmluZGV4KSA6IHVuZGVmaW5lZDtcblxuICAvLyBHZXQgZm9jdXNhYmxlIGlucHV0IGVsZW1lbnRzXG4gIGNvbnN0IGZvY3VzYWJsZUlucHV0czogSW5wdXRFbGVtZW50W10gPSBnZXRGb2N1c2FibGVJbnB1dEVsZW1lbnRzKGVsZW1lbnRzLCB7bWF4VGFiaW5kZXgsIC4uLm9wdHN9KTtcblxuICBpZiAoaXNOb3RFbXB0eUFycmF5KGZvY3VzYWJsZUlucHV0cykpIHtcbiAgICAvLyBGb2N1cyBvbiBsYXN0IGlucHV0c1xuICAgIGZvY3VzYWJsZUlucHV0c1tmb2N1c2FibGVJbnB1dHMubGVuZ3RoIC0xXS5mb2N1cygpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4iXX0=
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvaW5wdXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBbUIsa0JBQWtCLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBS2hHLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFZO0lBQzdDLElBQUksS0FBSyxDQUFDLGdCQUFnQjtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3pDLE1BQU0sS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUFjLENBQUM7SUFDcEMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLElBQUksQ0FBQztJQUV4QixvQkFBb0I7SUFDcEIsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRTVDLElBQUksT0FBTyxLQUFLLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRTtRQUMzQyxJQUFJO1lBQ0YsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7S0FDRjtJQUVELElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUU7UUFDL0MsSUFBSTtZQUNGLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE9B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ZUFBZSxHQUFtQix5QkFBeUIsQ0FBQyxRQUFRLEVBQUUsRUFBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBRXBHLElBQUksZUFBZSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1FBQ3BDLHVCQUF1QjtRQUN2QixlQUFlLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFbGVtZW50UmVmLCBRdWVyeUxpc3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb2N1c2FibGVFbGVtZW50LCBpc0ZvY3VzYWJsZUVsZW1lbnR9IGZyb20gJy4vZm9jdXNhYmxlJztcbmltcG9ydCB7aXNOaWwsIGlzTmlsT3JCbGFuaywgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCwgdG9Cb29sZWFuLCB0b051bWJlcn0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuXG5cblxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0SW5wdXRDb250ZW50KGV2ZW50OiBFdmVudCkge1xuICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBpbnB1dCA9IChldmVudC50YXJnZXQgYXMgYW55KTtcbiAgaWYgKCFpbnB1dCkgcmV0dXJuIHRydWU7XG5cbiAgLy8gTm90aGluZyB0byBzZWxlY3RcbiAgaWYgKGlzTmlsT3JCbGFuayhpbnB1dC52YWx1ZSkpIHJldHVybiBmYWxzZTtcblxuICBpZiAodHlwZW9mIGlucHV0LnNlbGVjdFJhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlucHV0LnNlbGVjdFJhbmdlKGlucHV0LnZhbHVlLmxlbmd0aCwgMCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBzZWxlY3QgaW5wdXQgY29udGVudCwgdXNpbmcgc2VsZWN0UmFuZ2UoKScsIGVycik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dC5zZWxlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgaW5wdXQuc2VsZWN0KCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBzZWxlY3QgaW5wdXQgY29udGVudCwgdXNpbmcgc2VsZWN0KCknLCBlcnIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdElucHV0UmFuZ2UoaW5wdXQ6IGFueSwgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleD86IG51bWJlcikge1xuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0LnNldFNlbGVjdGlvblJhbmdlID09PSAnZnVuY3Rpb24nKSB7XG5cbiAgICAvLyBObyBjb250ZW50XG4gICAgaWYgKGlzTmlsT3JCbGFuayhpbnB1dC52YWx1ZSkpIHJldHVybiBmYWxzZTtcblxuICAgIHRyeSB7XG4gICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydEluZGV4LCBpc05vdE5pbChlbmRJbmRleCkgPyBlbmRJbmRleCA6IHN0YXJ0SW5kZXgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IHNlbGVjdCBpbnB1dCByYW5nZScsIGVycik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FyZXRQb3NpdGlvbihpbnB1dDogYW55KTogbnVtYmVyIHtcbiAgaWYgKGlucHV0ICYmIGlucHV0LnNlbGVjdGlvblN0YXJ0KSB7XG4gICAgcmV0dXJuIGlucHV0LnNlbGVjdGlvbkRpcmVjdGlvbiA/XG4gICAgICAoaW5wdXQuc2VsZWN0aW9uRGlyZWN0aW9uID09PSAnYmFja3dhcmQnID8gaW5wdXQuc2VsZWN0aW9uU3RhcnQgOiBpbnB1dC5zZWxlY3Rpb25FbmQpIDogaW5wdXQuc2VsZWN0aW9uU3RhcnQ7XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW92ZUlucHV0Q2FyZXRUb1NlcGFyYXRvcihldmVudDogS2V5Ym9hcmRFdmVudCwgc2VwYXJhdG9yOiBzdHJpbmcsIGZvcndhcmQ/OiBib29sZWFuKSB7XG4gIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkIHx8ICFzZXBhcmF0b3IpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgaW5wdXQgPSAoZXZlbnQudGFyZ2V0IGFzIGFueSk7XG4gIGlmICghaW5wdXQpIHJldHVybiB0cnVlO1xuXG4gIGNvbnN0IGNhcmV0UG9zaXRpb24gPSBnZXRDYXJldFBvc2l0aW9uKGlucHV0KTtcblxuICAvLyBERUJVR1xuICAvL2NvbnNvbGUuZGVidWcoJ2NhcmV0UG9zaXRpb249JywgY2FyZXRQb3NpdGlvbik7XG5cbiAgaWYgKGNhcmV0UG9zaXRpb24gPT09IC0xKSByZXR1cm4gdHJ1ZTsgLy8gQ2FyZXQgcG9zIG5vdCBmb3VuZDogc2tpcFxuXG4gIC8vIEdldCBpbnB1dCB2YWx1ZVxuICBjb25zdCB2YWx1ZSA9IGlucHV0LnZhbHVlIGFzIHN0cmluZztcblxuICAvLyBObyBjb250ZW50OiBza2lwXG4gIGlmIChpc05pbE9yQmxhbmsodmFsdWUpKSByZXR1cm4gZmFsc2U7XG5cbiAgdHJ5IHtcblxuXG4gICAgaWYgKHZhbHVlICYmIGNhcmV0UG9zaXRpb24gPD0gdmFsdWUubGVuZ3RoKSB7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy9jb25zb2xlLmRlYnVnKFwiSW5wdXQgdGV4dCB2YWx1ZTogXCIsIHZhbHVlKTtcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkN1cnNvciBhdDogXCIsIGNhcmV0UG9zaXRpb24pO1xuICAgICAgLy9jb25zb2xlLmRlYnVnKFwiVGV4dCBhZnRlciBjdXJzb3I6IFwiLCB2YWx1ZS5zdWJzdHIoY2FyZXRQb3NpdGlvbikpO1xuICAgICAgLy9jb25zb2xlLmRlYnVnKFwiTmV4dCBzZXBhcmF0b3IgYXQ6IFwiLCB2YWx1ZS5pbmRleE9mKHNlcGFyYXRvciwgY2FyZXRQb3NpdGlvbikpO1xuXG4gICAgICBmb3J3YXJkID0gZm9yd2FyZCAhPT0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IHNlcGFyYXRvckluZGV4ID0gKGZvcndhcmQgPyB2YWx1ZS5pbmRleE9mKHNlcGFyYXRvciwgY2FyZXRQb3NpdGlvbikgOiB2YWx1ZS5sYXN0SW5kZXhPZihzZXBhcmF0b3IsIGNhcmV0UG9zaXRpb24pKTtcbiAgICAgIGlmIChzZXBhcmF0b3JJbmRleCAhPT0gLTEgJiYgKChmb3J3YXJkICYmIHNlcGFyYXRvckluZGV4ICsgMSA8IHZhbHVlLmxlbmd0aClcbiAgICAgICAgfHwgKCFmb3J3YXJkICYmIHNlcGFyYXRvckluZGV4ID4gMCkpKSB7XG4gICAgICAgIGlmIChpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSkge1xuICAgICAgICAgIC8vIE1vdmUgYWZ0ZXIgdGhlIG5leHQgc2VwYXJhdG9yXG4gICAgICAgICAgaWYgKHNlbGVjdElucHV0UmFuZ2UoaW5wdXQsIHNlcGFyYXRvckluZGV4ICsgKGZvcndhcmQgPyAxIDogLTEpKSkge1xuICAgICAgICAgICAgLy8gU3RvcCB0aGUga2V5Ym9hcmQgZXZlbnRcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBtb3ZlIGNhcmV0IHRvIG5leHQgc2VwYXJhdG9yJywgZXJyKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJOdW1iZXJJbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCwgYWxsb3dEZWNpbWFsczogYm9vbGVhbiwgZGVjaW1hbFNlcGFyYXRvcj86IHN0cmluZykge1xuICAvL2lucHV0IG51bWJlciBlbnRlcmVkIG9yIG9uZSBvZiB0aGUgNCBkaXJlY3Rpb24gdXAsIGRvd24sIGxlZnQgYW5kIHJpZ2h0XG4gIGlmICgoZXZlbnQud2hpY2ggPj0gNDggJiYgZXZlbnQud2hpY2ggPD0gNTcpIHx8IChldmVudC53aGljaCA+PSAzNyAmJiBldmVudC53aGljaCA8PSA0MCkpIHtcbiAgICAvL2NvbnNvbGUuZGVidWcoJ2lucHV0IG51bWJlciBlbnRlcmVkIDonICsgZXZlbnQud2hpY2ggKyAnICcgKyBldmVudC5rZXlDb2RlICsgJyAnICsgZXZlbnQuY2hhckNvZGUpO1xuICAgIC8vIE9LXG4gIH1cbiAgLy8gRGVjaW1hbCBzZXBhcmF0b3JcbiAgZWxzZSBpZiAoYWxsb3dEZWNpbWFscyAmJiAoKCFkZWNpbWFsU2VwYXJhdG9yICYmIChldmVudC5rZXkgPT09ICcuJyB8fCBldmVudC5rZXkgPT09ICcsJykpXG4gICAgfHwgKGRlY2ltYWxTZXBhcmF0b3IgJiYgZXZlbnQua2V5ID09PSBkZWNpbWFsU2VwYXJhdG9yKSkpIHtcbiAgICAvL2NvbnNvbGUuZGVidWcoJ2lucHV0IGRlY2ltYWwgc2VwYXJhdG9yIGVudGVyZWQgOicgKyBldmVudC5jb2RlKTtcbiAgICAvLyBPS1xuICB9IGVsc2Uge1xuICAgIC8vaW5wdXQgY29tbWFuZCBlbnRlcmVkIG9mIGRlbGV0ZSwgYmFja3NwYWNlIG9yIG9uZSBvZiB0aGUgNCBkaXJlY3Rpb24gdXAsIGRvd24sIGxlZnQgYW5kIHJpZ2h0LCBvciBuZWdhdGl2ZSBzaWduXG4gICAgaWYgKChldmVudC5rZXlDb2RlID49IDM3ICYmIGV2ZW50LmtleUNvZGUgPD0gNDApIHx8IGV2ZW50LmtleUNvZGUgPT0gNDYgfHwgZXZlbnQud2hpY2ggPT0gOCB8fCBldmVudC5rZXlDb2RlID09IDkgfHwgZXZlbnQua2V5Q29kZSA9PSA0NSkge1xuICAgICAgLy9jb25zb2xlLmRlYnVnKCdpbnB1dCBjb21tYW5kIGVudGVyZWQgOicgKyBldmVudC53aGljaCArICcgJyArIGV2ZW50LmtleUNvZGUgKyAnICcgKyBldmVudC5jaGFyQ29kZSk7XG4gICAgICAvLyBPS1xuICAgIH1cbiAgICAvLyBDYW5jZWwgb3RoZXIga2V5Ym9hcmQgZXZlbnRzXG4gICAgZWxzZSB7XG4gICAgICAvL2NvbnNvbGUuZGVidWcoJ2lucHV0IG5vdCBudW1iZXIgZW50ZXJlZCA6JyArIGV2ZW50LndoaWNoICsgJyAnICsgZXZlbnQua2V5Q29kZSArICcgJyArIGV2ZW50LmNoYXJDb2RlICsgJyAnICsgZXZlbnQuY29kZSApO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvY3VzSW5wdXQoZWxlbWVudDogRWxlbWVudFJlZikge1xuICBjb25zdCBpbnB1dEVsZW1lbnQgPSBhc0lucHV0RWxlbWVudChlbGVtZW50KTtcbiAgaWYgKGlucHV0RWxlbWVudClcbiAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgZWxzZSB7XG4gICAgY29uc29sZS53YXJuKCdUcnlpbmcgdG8gZm9jdXMgb24gdGhpcyBlbGVtZW50OicsIGVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRUYWJJbmRleChlbGVtZW50OiBFbGVtZW50UmVmLCB0YWJJbmRleDogbnVtYmVyKSB7XG4gIGlmKGlzSW5wdXRFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgZWxlbWVudC50YWJpbmRleCA9IHRhYkluZGV4O1xuICB9XG4gIGVsc2UgaWYgKGVsZW1lbnQgJiYgaXNJbnB1dEVsZW1lbnQoZWxlbWVudC5uYXRpdmVFbGVtZW50KSkge1xuICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRhYkluZGV4O1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnNvbGUud2FybignVHJ5aW5nIHRvIGNoYW5nZSB0YWJpbmRleCBvbiB0aGlzIGVsZW1lbnQ6JywgZWxlbWVudCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dEVsZW1lbnQgZXh0ZW5kcyBGb2N1c2FibGVFbGVtZW50IHtcbiAgdGFiaW5kZXg/OiBudW1iZXI7XG4gIHRhYkluZGV4PzogbnVtYmVyO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHZhbHVlOiBhbnk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNJbnB1dEVsZW1lbnQob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgSW5wdXRFbGVtZW50IHtcbiAgcmV0dXJuIGlzRm9jdXNhYmxlRWxlbWVudChvYmplY3QpXG4gICAgJiYgKCd2YWx1ZScgaW4gb2JqZWN0XG4gICAgICAvLyBoYXMgdmFsdWUgaXMgbm90IGFsd2F5cyBzZXQgKG5laXRoZXIgdGFiaW5kZXgpIGNoZWNrIG9uIDIgcHJvcGVydGllcyB3aXRoIGEgbG9naWNhbCBPUlxuICAgICAgfHwgKCd0YWJpbmRleCcgaW4gb2JqZWN0IHx8ICd0YWJJbmRleCcgaW4gb2JqZWN0KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc0lucHV0RWxlbWVudChvYmplY3Q6IEVsZW1lbnRSZWYpOiBJbnB1dEVsZW1lbnR8dW5kZWZpbmVkIHtcbiAgaWYgKG9iamVjdCkge1xuICAgIGlmIChpc0lucHV0RWxlbWVudChvYmplY3QpKSByZXR1cm4gb2JqZWN0O1xuICAgIGlmIChvYmplY3QubmF0aXZlRWxlbWVudCAmJiBpc0lucHV0RWxlbWVudChvYmplY3QubmF0aXZlRWxlbWVudCkpIHJldHVybiBvYmplY3QubmF0aXZlRWxlbWVudDtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFiaW5kZXhDb21wYXJhdG9yKGE6IElucHV0RWxlbWVudCwgYjogSW5wdXRFbGVtZW50KSB7XG4gIGNvbnN0IHZhbHVlQSA9IGEudGFiaW5kZXggfHwgYS50YWJJbmRleDtcbiAgY29uc3QgdmFsdWVCID0gYi50YWJpbmRleCB8fCBiLnRhYkluZGV4O1xuICByZXR1cm4gdmFsdWVBID09PSB2YWx1ZUIgPyAwIDogKHZhbHVlQSA+IHZhbHVlQiA/IDEgOiAtMSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuR2FpbkZvY3VzT3B0aW9ucyB7XG4gIG1pblRhYmluZGV4PzogbnVtYmVyO1xuICBtYXhUYWJpbmRleD86IG51bWJlcjtcbiAgZXhjbHVkZUVtcHR5SW5wdXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldEZvY3VzYWJsZUlucHV0T3B0aW9ucyBleHRlbmRzIENhbkdhaW5Gb2N1c09wdGlvbnMge1xuICBzb3J0QnlUYWJJbmRleD86IGJvb2xlYW47XG4gIGRlYnVnPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbkhhdmVGb2N1cyhpbnB1dDogSW5wdXRFbGVtZW50LCBvcHRzPzogQ2FuR2FpbkZvY3VzT3B0aW9ucyk6IGJvb2xlYW4ge1xuICBpZiAoIWlucHV0KSByZXR1cm4gZmFsc2U7XG4gIC8vIEV4Y2x1ZGUgZGlzYWJsZWQgZWxlbWVudFxuICByZXR1cm4gIXRvQm9vbGVhbihpbnB1dC5kaXNhYmxlZCwgZmFsc2UpXG4gICAgLy8gRXhjbHVkZSBoaWRkZW4gZWxlbWVudFxuICAgICYmICF0b0Jvb2xlYW4oaW5wdXQuaGlkZGVuLCBmYWxzZSlcbiAgICAvLyBFeGNsdWRlIG1pblRhYkluZGV4IDwgZWxlbWVudC50YWJJbmRleFxuICAgICYmIChpc05pbChvcHRzLm1pblRhYmluZGV4KSB8fCB0b051bWJlcihpbnB1dC50YWJJbmRleCwgaW5wdXQudGFiaW5kZXgpID4gb3B0cy5taW5UYWJpbmRleClcbiAgICAvLyBFeGNsdWRlIG1heFRhYkluZGV4ID4gZWxlbWVudC50YWJJbmRleFxuICAgICYmIChpc05pbChvcHRzLm1heFRhYmluZGV4KSB8fCB0b051bWJlcihpbnB1dC50YWJJbmRleCwgaW5wdXQudGFiaW5kZXgpIDwgb3B0cy5tYXhUYWJpbmRleClcbiAgICAvLyBFeGNsdWRlIG5pbCBpbnB1dCB2YWx1ZVxuICAgICYmICghb3B0cy5leGNsdWRlRW1wdHlJbnB1dCB8fCBpc05pbE9yQmxhbmsoaW5wdXQudmFsdWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvY3VzYWJsZUlucHV0RWxlbWVudHMoZWxlbWVudHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPiwgb3B0cz86IEdldEZvY3VzYWJsZUlucHV0T3B0aW9ucyk6IElucHV0RWxlbWVudFtdIHtcbiAgb3B0cyA9IHtzb3J0QnlUYWJJbmRleDogZmFsc2UsIGV4Y2x1ZGVFbXB0eUlucHV0OiBmYWxzZSwgLi4ub3B0c307XG5cbiAgLy8gRm9jdXMgdG8gZmlyc3QgaW5wdXRcbiAgY29uc3QgZmlsdGVyZWRFbGVtZW50czogSW5wdXRFbGVtZW50W10gPSBlbGVtZW50c1xuXG4gICAgLy8gVHJhbnNmb3JtIHRvIGlucHV0XG4gICAgLm1hcChhc0lucHV0RWxlbWVudClcblxuICAgIC5maWx0ZXIoaW5wdXQgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZWQgPSBjYW5IYXZlRm9jdXMoaW5wdXQsIG9wdHMpO1xuICAgICAgLy8gREVCVUdcbiAgICAgIGlmIChpbnB1dCAmJiBvcHRzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGBbaW5wdXRzXSBGb2N1c2FibGUgaW5wdXQge2NhbkZvY3VzOiAke2luY2x1ZGVkfSwgdGFiSW5kZXg6ICR7aW5wdXQudGFiSW5kZXh8fGlucHV0LnRhYmluZGV4fX1gLCBpbnB1dCk7XG4gICAgICByZXR1cm4gaW5jbHVkZWQ7XG4gICAgfSk7XG5cbiAgLy8gU29ydCBieSB0YWJJbmRleFxuICBpZiAob3B0cy5zb3J0QnlUYWJJbmRleCkge1xuICAgIHJldHVybiBmaWx0ZXJlZEVsZW1lbnRzLnNvcnQodGFiaW5kZXhDb21wYXJhdG9yKTtcbiAgfVxuXG4gIHJldHVybiBmaWx0ZXJlZEVsZW1lbnRzO1xuXG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGZvY3VzTmV4dElucHV0KGV2ZW50OiBFdmVudHx1bmRlZmluZWQsIGVsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4sIG9wdHM/OiBHZXRGb2N1c2FibGVJbnB1dE9wdGlvbnMpOiBib29sZWFuIHtcblxuICAvLyBDYW5jZWxsaW5nIGV2ZW50IChlLmcuIHdoZW4gZW1pdHRlZCBieSAoa2V5ZG93bi50YWIpIClcbiAgaWYgKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8vIEdldCBjdXJyZW50IGluZGV4XG4gIGNvbnN0IG1pblRhYmluZGV4ID0gZXZlbnQgJiYgaXNJbnB1dEVsZW1lbnQoZXZlbnQudGFyZ2V0KSA/IChldmVudC50YXJnZXQudGFiSW5kZXggfHwgZXZlbnQudGFyZ2V0LnRhYmluZGV4KSA6IHVuZGVmaW5lZDtcblxuICAvLyBHZXQgZm9jdXNhYmxlIGlucHV0IGVsZW1lbnRzXG4gIGNvbnN0IGZvY3VzYWJsZUlucHV0czogSW5wdXRFbGVtZW50W10gPSBnZXRGb2N1c2FibGVJbnB1dEVsZW1lbnRzKGVsZW1lbnRzLCB7bWluVGFiaW5kZXgsIC4uLm9wdHN9KTtcblxuICBpZiAoaXNOb3RFbXB0eUFycmF5KGZvY3VzYWJsZUlucHV0cykpIHtcbiAgICAvLyBGb2N1cyBvbiBmaXJzdCBpbnB1dHNcbiAgICBmb2N1c2FibGVJbnB1dHNbMF0uZm9jdXMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvY3VzUHJldmlvdXNJbnB1dChldmVudDogRXZlbnR8dW5kZWZpbmVkLCBlbGVtZW50czogUXVlcnlMaXN0PEVsZW1lbnRSZWY+LCBvcHRzPzogR2V0Rm9jdXNhYmxlSW5wdXRPcHRpb25zKTogYm9vbGVhbiB7XG5cbiAgLy8gQ2FuY2VsbGluZyBldmVudCAoZS5nLiB3aGVuIGVtaXR0ZWQgYnkgKGtleWRvd24udGFiKSApXG4gIGlmIChldmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICAvLyBHZXQgY3VycmVudCBpbmRleFxuICBjb25zdCBtYXhUYWJpbmRleCA9IGV2ZW50ICYmIGlzSW5wdXRFbGVtZW50KGV2ZW50LnRhcmdldCkgPyAoZXZlbnQudGFyZ2V0LnRhYkluZGV4IHx8IGV2ZW50LnRhcmdldC50YWJpbmRleCkgOiB1bmRlZmluZWQ7XG5cbiAgLy8gR2V0IGZvY3VzYWJsZSBpbnB1dCBlbGVtZW50c1xuICBjb25zdCBmb2N1c2FibGVJbnB1dHM6IElucHV0RWxlbWVudFtdID0gZ2V0Rm9jdXNhYmxlSW5wdXRFbGVtZW50cyhlbGVtZW50cywge21heFRhYmluZGV4LCAuLi5vcHRzfSk7XG5cbiAgaWYgKGlzTm90RW1wdHlBcnJheShmb2N1c2FibGVJbnB1dHMpKSB7XG4gICAgLy8gRm9jdXMgb24gbGFzdCBpbnB1dHNcbiAgICBmb2N1c2FibGVJbnB1dHNbZm9jdXNhYmxlSW5wdXRzLmxlbmd0aCAtMV0uZm9jdXMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuIl19
|
|
File without changes
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { MatAutocompleteFieldUtils } from './material.autocomplete.utils';
|
|
2
|
+
export class MatAutocompleteConfigHolder {
|
|
3
|
+
constructor(options) {
|
|
4
|
+
this.options = options;
|
|
5
|
+
this.fields = {};
|
|
6
|
+
// Store the function from options (e.g. get from user settings)
|
|
7
|
+
// or create a default function
|
|
8
|
+
this.getUserAttributes = options?.getUserAttributes ||
|
|
9
|
+
((fieldName, defaultAttributes) => defaultAttributes || ['label', 'name']);
|
|
10
|
+
}
|
|
11
|
+
add(fieldName, options) {
|
|
12
|
+
if (!fieldName) {
|
|
13
|
+
throw new Error('Unable to add config, with name: ' + (fieldName || 'undefined'));
|
|
14
|
+
}
|
|
15
|
+
options = options || {};
|
|
16
|
+
const suggestFn = options.suggestFn
|
|
17
|
+
|| (options.service && ((v, f) => options.service.suggest(v, f)))
|
|
18
|
+
|| undefined;
|
|
19
|
+
const attributes = (this.getUserAttributes(fieldName, options.attributes) || ['label', 'name']);
|
|
20
|
+
// Keep original the function from options, when exists
|
|
21
|
+
const attributesOrFn = attributes.map((a, index) => typeof a === 'function' && options.attributes[index] || a);
|
|
22
|
+
const filter = {
|
|
23
|
+
searchAttribute: attributes.length === 1 ? attributes[0] : undefined,
|
|
24
|
+
searchAttributes: attributes.length > 1 ? attributes : undefined,
|
|
25
|
+
...options.filter
|
|
26
|
+
};
|
|
27
|
+
const displayWith = options.displayWith || MatAutocompleteFieldUtils.createDisplayFn(attributes, options.multiple);
|
|
28
|
+
const equals = options.equals || MatAutocompleteFieldUtils.defaultEquals;
|
|
29
|
+
const config = {
|
|
30
|
+
...options,
|
|
31
|
+
attributes: attributesOrFn,
|
|
32
|
+
suggestFn,
|
|
33
|
+
filter,
|
|
34
|
+
displayWith,
|
|
35
|
+
equals
|
|
36
|
+
};
|
|
37
|
+
this.fields[fieldName] = config;
|
|
38
|
+
return config;
|
|
39
|
+
}
|
|
40
|
+
get(fieldName) {
|
|
41
|
+
if (!fieldName) {
|
|
42
|
+
throw new Error('Unable to add config, with name: ' + (fieldName || 'undefined'));
|
|
43
|
+
}
|
|
44
|
+
return this.fields[fieldName] || this.add(fieldName);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuYXV0b2NvbXBsZXRlLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9tYXRlcmlhbC5hdXRvY29tcGxldGUuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBMkJ4RSxNQUFNLE9BQU8sMkJBQTJCO0lBT3RDLFlBQW9CLE9BRW5CO1FBRm1CLFlBQU8sR0FBUCxPQUFPLENBRTFCO1FBUkQsV0FBTSxHQUVGLEVBQUUsQ0FBQztRQU9MLGdFQUFnRTtRQUNoRSwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sRUFBRSxpQkFBaUI7WUFDakQsQ0FBQyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLENBQUMsaUJBQWlCLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsR0FBRyxDQUFtQixTQUFpQixFQUFFLE9BQThDO1FBQ3JGLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxHQUFHLENBQUMsU0FBUyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDbkY7UUFDRCxPQUFPLEdBQUcsT0FBTyxJQUFvQyxFQUFFLENBQUM7UUFDeEQsTUFBTSxTQUFTLEdBQW9CLE9BQU8sQ0FBQyxTQUFTO2VBQy9DLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7ZUFDOUQsU0FBUyxDQUFDO1FBQ2YsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLHVEQUF1RDtRQUN2RCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDL0csTUFBTSxNQUFNLEdBQWU7WUFDekIsZUFBZSxFQUFFLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDcEUsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNoRSxHQUFHLE9BQU8sQ0FBQyxNQUFNO1NBQ2xCLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLHlCQUF5QixDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ILE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUkseUJBQXlCLENBQUMsYUFBYSxDQUFDO1FBRXpFLE1BQU0sTUFBTSxHQUErQjtZQUN6QyxHQUFHLE9BQU87WUFDVixVQUFVLEVBQUUsY0FBYztZQUMxQixTQUFTO1lBQ1QsTUFBTTtZQUNOLFdBQVc7WUFDWCxNQUFNO1NBQ1AsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ2hDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxHQUFHLENBQVUsU0FBaUI7UUFDNUIsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLEdBQUcsQ0FBQyxTQUFTLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQztTQUNuRjtRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBa0MsQ0FBQztJQUN4RixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xvYWRSZXN1bHQsIFN1Z2dlc3RGbiwgU3VnZ2VzdFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlRmllbGRVdGlsc30gZnJvbSAnLi9tYXRlcmlhbC5hdXRvY29tcGxldGUudXRpbHMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7RGlzcGxheUZuLCBFcXVhbHNGbn0gZnJvbSAnLi4vLi4vZm9ybS9maWVsZC5tb2RlbCc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZzxUID0gYW55LCBGID0gYW55PiB7XG4gIGF0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICBzdWdnZXN0Rm4/OiAodmFsdWU6IGFueSwgb3B0aW9ucz86IGFueSkgPT4gUHJvbWlzZTxUW10gfCBMb2FkUmVzdWx0PFQ+PjtcbiAgZmlsdGVyPzogUGFydGlhbDxGPjtcbiAgaXRlbXM/OiBPYnNlcnZhYmxlPFRbXT4gfCBUW107XG4gIGNvbHVtblNpemVzPzogKG51bWJlciB8ICdhdXRvJyB8IHVuZGVmaW5lZClbXTtcbiAgY29sdW1uTmFtZXM/OiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIGRpc3BsYXlXaXRoPzogRGlzcGxheUZuO1xuICBlcXVhbHM/OiBFcXVhbHNGbjsgLy8gVXNlZCBieSA8bWF0LWNoaXBzLWZpZWxkPlxuICBzaG93QWxsT25Gb2N1cz86IGJvb2xlYW47XG4gIHNob3dQYW5lbE9uRm9jdXM/OiBib29sZWFuO1xuICBjbGFzcz86IHN0cmluZztcbiAgbW9iaWxlPzogYm9vbGVhbjtcbiAgZGVib3VuY2VUaW1lPzogbnVtYmVyO1xuICBzdWdnZXN0TGVuZ3RoVGhyZXNob2xkPzogbnVtYmVyO1xuICBoaWdobGlnaHRBY2NlbnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWF0QXV0b2NvbXBsZXRlRmllbGRBZGRPcHRpb25zPFQgPSBhbnksIEYgPSBhbnk+IGV4dGVuZHMgUGFydGlhbDxNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZzxULCBGPj4ge1xuICBzZXJ2aWNlPzogU3VnZ2VzdFNlcnZpY2U8VCwgRj47XG59XG5cbmV4cG9ydCBjbGFzcyBNYXRBdXRvY29tcGxldGVDb25maWdIb2xkZXIge1xuICBmaWVsZHM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZztcbiAgfSA9IHt9O1xuXG4gIGdldFVzZXJBdHRyaWJ1dGVzOiAoZmllbGROYW1lOiBzdHJpbmcsIGRlZmF1bHRBdHRyaWJ1dGVzPzogc3RyaW5nW10pID0+IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3B0aW9ucz86IHtcbiAgICBnZXRVc2VyQXR0cmlidXRlczogKGZpZWxkTmFtZTogc3RyaW5nLCBkZWZhdWx0QXR0cmlidXRlcz86IHN0cmluZ1tdKSA9PiBzdHJpbmdbXTtcbiAgfSkge1xuICAgIC8vIFN0b3JlIHRoZSBmdW5jdGlvbiBmcm9tIG9wdGlvbnMgKGUuZy4gZ2V0IGZyb20gdXNlciBzZXR0aW5ncylcbiAgICAvLyBvciBjcmVhdGUgYSBkZWZhdWx0IGZ1bmN0aW9uXG4gICAgdGhpcy5nZXRVc2VyQXR0cmlidXRlcyA9IG9wdGlvbnM/LmdldFVzZXJBdHRyaWJ1dGVzIHx8XG4gICAgICAoKGZpZWxkTmFtZSwgZGVmYXVsdEF0dHJpYnV0ZXMpID0+IGRlZmF1bHRBdHRyaWJ1dGVzIHx8IFsnbGFiZWwnLCAnbmFtZSddKTtcbiAgfVxuXG4gIGFkZDxUID0gYW55LCBGID0gYW55PihmaWVsZE5hbWU6IHN0cmluZywgb3B0aW9ucz86IE1hdEF1dG9jb21wbGV0ZUZpZWxkQWRkT3B0aW9uczxULCBGPik6IE1hdEF1dG9jb21wbGV0ZUZpZWxkQ29uZmlnPFQsIEY+IHtcbiAgICBpZiAoIWZpZWxkTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gYWRkIGNvbmZpZywgd2l0aCBuYW1lOiAnICsgKGZpZWxkTmFtZSB8fCAndW5kZWZpbmVkJykpO1xuICAgIH1cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCA8TWF0QXV0b2NvbXBsZXRlRmllbGRBZGRPcHRpb25zPnt9O1xuICAgIGNvbnN0IHN1Z2dlc3RGbjogU3VnZ2VzdEZuPFQsIEY+ID0gb3B0aW9ucy5zdWdnZXN0Rm5cbiAgICAgIHx8IChvcHRpb25zLnNlcnZpY2UgJiYgKCh2LCBmKSA9PiBvcHRpb25zLnNlcnZpY2Uuc3VnZ2VzdCh2LCBmKSkpXG4gICAgICB8fCB1bmRlZmluZWQ7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9ICh0aGlzLmdldFVzZXJBdHRyaWJ1dGVzKGZpZWxkTmFtZSwgb3B0aW9ucy5hdHRyaWJ1dGVzKSB8fCBbJ2xhYmVsJywgJ25hbWUnXSk7XG4gICAgLy8gS2VlcCBvcmlnaW5hbCB0aGUgZnVuY3Rpb24gZnJvbSBvcHRpb25zLCB3aGVuIGV4aXN0c1xuICAgIGNvbnN0IGF0dHJpYnV0ZXNPckZuID0gYXR0cmlidXRlcy5tYXAoKGEsIGluZGV4KSA9PiB0eXBlb2YgYSA9PT0gJ2Z1bmN0aW9uJyAmJiBvcHRpb25zLmF0dHJpYnV0ZXNbaW5kZXhdIHx8IGEpO1xuICAgIGNvbnN0IGZpbHRlcjogUGFydGlhbDxGPiA9IHtcbiAgICAgIHNlYXJjaEF0dHJpYnV0ZTogYXR0cmlidXRlcy5sZW5ndGggPT09IDEgPyBhdHRyaWJ1dGVzWzBdIDogdW5kZWZpbmVkLFxuICAgICAgc2VhcmNoQXR0cmlidXRlczogYXR0cmlidXRlcy5sZW5ndGggPiAxID8gYXR0cmlidXRlcyA6IHVuZGVmaW5lZCxcbiAgICAgIC4uLm9wdGlvbnMuZmlsdGVyXG4gICAgfTtcbiAgICBjb25zdCBkaXNwbGF5V2l0aCA9IG9wdGlvbnMuZGlzcGxheVdpdGggfHwgTWF0QXV0b2NvbXBsZXRlRmllbGRVdGlscy5jcmVhdGVEaXNwbGF5Rm4oYXR0cmlidXRlcywgb3B0aW9ucy5tdWx0aXBsZSk7XG4gICAgY29uc3QgZXF1YWxzID0gb3B0aW9ucy5lcXVhbHMgfHwgTWF0QXV0b2NvbXBsZXRlRmllbGRVdGlscy5kZWZhdWx0RXF1YWxzO1xuXG4gICAgY29uc3QgY29uZmlnOiBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzT3JGbixcbiAgICAgIHN1Z2dlc3RGbixcbiAgICAgIGZpbHRlcixcbiAgICAgIGRpc3BsYXlXaXRoLFxuICAgICAgZXF1YWxzXG4gICAgfTtcblxuICAgIHRoaXMuZmllbGRzW2ZpZWxkTmFtZV0gPSBjb25maWc7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIGdldDxUID0gYW55PihmaWVsZE5hbWU6IHN0cmluZyk6IE1hdEF1dG9jb21wbGV0ZUZpZWxkQ29uZmlnPFQ+IHtcbiAgICBpZiAoIWZpZWxkTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gYWRkIGNvbmZpZywgd2l0aCBuYW1lOiAnICsgKGZpZWxkTmFtZSB8fCAndW5kZWZpbmVkJykpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5maWVsZHNbZmllbGROYW1lXSB8fCB0aGlzLmFkZChmaWVsZE5hbWUpIGFzIE1hdEF1dG9jb21wbGV0ZUZpZWxkQ29uZmlnPFQ+O1xuICB9XG59XG4iXX0=
|