@sumaris-net/ngx-components 18.10.29 → 18.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +24 -0
- package/.eslintrc.json +95 -0
- package/.gitattribute +1 -0
- package/.github/CONTRIBUTING.md +10 -0
- package/.github/ISSUE_TEMPLATE.md +6 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +10 -0
- package/.github/github_disclaimer.md +14 -0
- package/.gitlab-ci.yml +46 -0
- package/.graphqlconfig +15 -0
- package/.prettierignore +9 -0
- package/.prettierrc.json +17 -0
- package/angular.json +236 -0
- package/capacitor.config.ts +49 -0
- package/doc/changelog.md +4 -0
- package/graphql.config.yml +13 -0
- package/ionic.config.json +7 -0
- package/karma.conf.js +38 -0
- package/ng-package.json +21 -0
- package/ngcc.config.js +9 -0
- package/package.json +132 -19
- package/public_api.ts +426 -0
- package/resources/README.md +7 -0
- package/resources/icon/TODO.md +11 -0
- package/resources/icon.png +0 -0
- package/resources/icon.png.md5 +1 -0
- package/resources/icon.xcf +0 -0
- package/resources/ios/icon/icon-1024.png +0 -0
- package/resources/ios/icon/icon-108@2x.png +0 -0
- package/resources/ios/icon/icon-20.png +0 -0
- package/resources/ios/icon/icon-20@2x.png +0 -0
- package/resources/ios/icon/icon-20@3x.png +0 -0
- package/resources/ios/icon/icon-24@2x.png +0 -0
- package/resources/ios/icon/icon-27.5@2x.png +0 -0
- package/resources/ios/icon/icon-29.png +0 -0
- package/resources/ios/icon/icon-29@2x.png +0 -0
- package/resources/ios/icon/icon-29@3x.png +0 -0
- package/resources/ios/icon/icon-40.png +0 -0
- package/resources/ios/icon/icon-40@2x.png +0 -0
- package/resources/ios/icon/icon-40@3x.png +0 -0
- package/resources/ios/icon/icon-44@2x.png +0 -0
- package/resources/ios/icon/icon-50.png +0 -0
- package/resources/ios/icon/icon-50@2x.png +0 -0
- package/resources/ios/icon/icon-60.png +0 -0
- package/resources/ios/icon/icon-60@2x.png +0 -0
- package/resources/ios/icon/icon-60@3x.png +0 -0
- package/resources/ios/icon/icon-72.png +0 -0
- package/resources/ios/icon/icon-72@2x.png +0 -0
- package/resources/ios/icon/icon-76.png +0 -0
- package/resources/ios/icon/icon-76@2x.png +0 -0
- package/resources/ios/icon/icon-83.5@2x.png +0 -0
- package/resources/ios/icon/icon-86@2x.png +0 -0
- package/resources/ios/icon/icon-98@2x.png +0 -0
- package/resources/ios/icon/icon-small.png +0 -0
- package/resources/ios/icon/icon-small@2x.png +0 -0
- package/resources/ios/icon/icon-small@3x.png +0 -0
- package/resources/ios/icon/icon.png +0 -0
- package/resources/ios/icon/icon@2x.png +0 -0
- package/resources/ios/splash/Default-1792h~iphone.png +0 -0
- package/resources/ios/splash/Default-2436h.png +0 -0
- package/resources/ios/splash/Default-2688h~iphone.png +0 -0
- package/resources/ios/splash/Default-568h@2x~iphone.png +0 -0
- package/resources/ios/splash/Default-667h.png +0 -0
- package/resources/ios/splash/Default-736h.png +0 -0
- package/resources/ios/splash/Default-Landscape-1792h~iphone.png +0 -0
- package/resources/ios/splash/Default-Landscape-2436h.png +0 -0
- package/resources/ios/splash/Default-Landscape-2688h~iphone.png +0 -0
- package/resources/ios/splash/Default-Landscape-736h.png +0 -0
- package/resources/ios/splash/Default-Landscape@2x~ipad.png +0 -0
- package/resources/ios/splash/Default-Landscape@~ipadpro.png +0 -0
- package/resources/ios/splash/Default-Landscape~ipad.png +0 -0
- package/resources/ios/splash/Default-Portrait@2x~ipad.png +0 -0
- package/resources/ios/splash/Default-Portrait@~ipadpro.png +0 -0
- package/resources/ios/splash/Default-Portrait~ipad.png +0 -0
- package/resources/ios/splash/Default@2x~iphone.png +0 -0
- package/resources/ios/splash/Default@2x~universal~anyany.png +0 -0
- package/resources/ios/splash/Default~iphone.png +0 -0
- package/resources/splash.png +0 -0
- package/resources/splash.png.md5 +1 -0
- package/scripts/build-android.sh +18 -0
- package/scripts/docker-start.sh +6 -0
- package/scripts/emulate-android.sh +17 -0
- package/scripts/env-android.sh +83 -0
- package/scripts/env-clean.sh +23 -0
- package/scripts/env-global.sh +154 -0
- package/scripts/install-android-sdk-tools.sh +73 -0
- package/scripts/ionic-update.sh +24 -0
- package/scripts/node/build-i18n.js +37 -0
- package/scripts/node/playground.ts +9 -0
- package/scripts/node/resources.js +108 -0
- package/scripts/release.sh +162 -0
- package/scripts/run-android.sh +59 -0
- package/scripts/test.sh +19 -0
- package/src/app/admin/admin-routing.module.ts +26 -0
- package/src/app/admin/admin.module.ts +20 -0
- package/src/app/admin/services/filter/person.filter.ts +86 -0
- package/src/app/admin/services/person.service.ts +244 -0
- package/src/app/admin/services/validator/person.validator.ts +86 -0
- package/src/app/admin/users/users.html +613 -0
- package/src/app/admin/users/users.module.ts +32 -0
- package/src/app/admin/users/users.scss +80 -0
- package/src/app/admin/users/users.ts +387 -0
- package/src/app/app-routing.module.ts +165 -0
- package/src/app/app.component.html +14 -0
- package/src/app/app.component.scss +4 -0
- package/src/app/app.component.ts +252 -0
- package/src/app/app.module.ts +355 -0
- package/src/app/core/about/about.modal.html +145 -0
- package/src/app/core/about/about.modal.scss +22 -0
- package/src/app/core/about/about.modal.ts +69 -0
- package/src/app/core/about/about.module.ts +14 -0
- package/src/app/core/account/account.module.ts +43 -0
- package/src/app/core/account/account.page.html +329 -0
- package/src/app/core/account/account.page.scss +20 -0
- package/src/app/core/account/account.page.ts +389 -0
- package/src/app/core/account/new-token.form.html +90 -0
- package/src/app/core/account/new-token.form.ts +99 -0
- package/src/app/core/account/new-token.modal.html +52 -0
- package/src/app/core/account/new-token.modal.ts +68 -0
- package/src/app/core/account/password/change-password.form.html +62 -0
- package/src/app/core/account/password/change-password.form.scss +0 -0
- package/src/app/core/account/password/change-password.form.ts +58 -0
- package/src/app/core/account/password/change-password.module.ts +14 -0
- package/src/app/core/account/password/change-password.page.html +41 -0
- package/src/app/core/account/password/change-password.page.scss +49 -0
- package/src/app/core/account/password/change-password.page.ts +158 -0
- package/src/app/core/account/token.table.html +160 -0
- package/src/app/core/account/token.table.scss +7 -0
- package/src/app/core/account/token.table.ts +160 -0
- package/src/app/core/auth/auth.form.html +108 -0
- package/src/app/core/auth/auth.form.scss +0 -0
- package/src/app/core/auth/auth.form.ts +165 -0
- package/src/app/core/auth/auth.modal.html +50 -0
- package/src/app/core/auth/auth.modal.scss +0 -0
- package/src/app/core/auth/auth.modal.ts +78 -0
- package/src/app/core/auth/auth.module.ts +35 -0
- package/src/app/core/auth/reset-password.modal.html +59 -0
- package/src/app/core/auth/reset-password.modal.ts +83 -0
- package/src/app/core/core.module.ts +72 -0
- package/src/app/core/core.testing.module.ts +80 -0
- package/src/app/core/form/array/form-array.ts +409 -0
- package/src/app/core/form/array/testing/form-array-test.module.ts +15 -0
- package/src/app/core/form/array/testing/form-array.test.html +196 -0
- package/src/app/core/form/array/testing/form-array.test.ts +119 -0
- package/src/app/core/form/buttons/form-buttons-bar.component.html +82 -0
- package/src/app/core/form/buttons/form-buttons-bar.component.scss +19 -0
- package/src/app/core/form/buttons/form-buttons-bar.component.ts +89 -0
- package/src/app/core/form/buttons/form-buttons-bar.module.ts +20 -0
- package/src/app/core/form/entity/editor.class.ts +295 -0
- package/src/app/core/form/entity/entity-editor-modal.class.ts +494 -0
- package/src/app/core/form/entity/entity-editor.class.ts +894 -0
- package/src/app/core/form/entity/entity-metadata.component.html +57 -0
- package/src/app/core/form/entity/entity-metadata.component.scss +40 -0
- package/src/app/core/form/entity/entity-metadata.component.ts +18 -0
- package/src/app/core/form/entity/entity.module.ts +20 -0
- package/src/app/core/form/entity/tab-editor.class.ts +224 -0
- package/src/app/core/form/form-container.class.ts +380 -0
- package/src/app/core/form/form.class.ts +377 -0
- package/src/app/core/form/form.module.ts +38 -0
- package/src/app/core/form/form.utils.ts +305 -0
- package/src/app/core/form/list/list.form.html +68 -0
- package/src/app/core/form/list/list.form.scss +40 -0
- package/src/app/core/form/list/list.form.ts +266 -0
- package/src/app/core/form/list/list.module.ts +20 -0
- package/src/app/core/form/properties/properties.form.html +160 -0
- package/src/app/core/form/properties/properties.form.scss +21 -0
- package/src/app/core/form/properties/properties.form.ts +331 -0
- package/src/app/core/form/properties/properties.module.ts +24 -0
- package/src/app/core/form/properties/properties.table.html +228 -0
- package/src/app/core/form/properties/properties.table.scss +0 -0
- package/src/app/core/form/properties/properties.table.ts +275 -0
- package/src/app/core/form/properties/properties.utils.ts +391 -0
- package/src/app/core/form/properties/property.validator.ts +82 -0
- package/src/app/core/form/properties/testing/properties-form.test.html +23 -0
- package/src/app/core/form/properties/testing/properties-form.test.ts +109 -0
- package/src/app/core/form/properties/testing/properties-form.testing.module.ts +14 -0
- package/src/app/core/form/text-popover/testing/text-popover.testing.html +50 -0
- package/src/app/core/form/text-popover/testing/text-popover.testing.module.ts +21 -0
- package/src/app/core/form/text-popover/testing/text-popover.testing.ts +76 -0
- package/src/app/core/form/text-popover/text-popover.component.html +89 -0
- package/src/app/core/form/text-popover/text-popover.component.scss +7 -0
- package/src/app/core/form/text-popover/text-popover.component.ts +176 -0
- package/src/app/core/form/text-popover/text-popover.module.ts +19 -0
- package/src/app/core/form/username/username.form.html +27 -0
- package/src/app/core/form/username/username.form.ts +44 -0
- package/src/app/core/form/username/username.module.ts +12 -0
- package/src/app/core/graphql/graphql.module.ts +7 -0
- package/src/app/core/graphql/graphql.service.ts +962 -0
- package/src/app/core/graphql/graphql.utils.ts +166 -0
- package/src/app/core/home/home.html +295 -0
- package/src/app/core/home/home.module.ts +27 -0
- package/src/app/core/home/home.scss +279 -0
- package/src/app/core/home/home.ts +422 -0
- package/src/app/core/icon/icon.component.html +19 -0
- package/src/app/core/icon/icon.component.ts +22 -0
- package/src/app/core/icon/icon.module.ts +13 -0
- package/src/app/core/install/install-upgrade-card.component.html +144 -0
- package/src/app/core/install/install-upgrade-card.component.scss +3 -0
- package/src/app/core/install/install-upgrade-card.component.ts +445 -0
- package/src/app/core/install/install-upgrade-card.module.ts +18 -0
- package/src/app/core/menu/menu.component.html +219 -0
- package/src/app/core/menu/menu.component.scss +304 -0
- package/src/app/core/menu/menu.component.ts +251 -0
- package/src/app/core/menu/menu.filter.ts +28 -0
- package/src/app/core/menu/menu.model.ts +356 -0
- package/src/app/core/menu/menu.module.ts +27 -0
- package/src/app/core/menu/menu.service.ts +727 -0
- package/src/app/core/menu/sub-menu-tab.directive.ts +99 -0
- package/src/app/core/menu/testing/menu-other.testing.ts +57 -0
- package/src/app/core/menu/testing/menu.testing.html +143 -0
- package/src/app/core/menu/testing/menu.testing.module.ts +52 -0
- package/src/app/core/menu/testing/menu.testing.scss +5 -0
- package/src/app/core/menu/testing/menu.testing.ts +175 -0
- package/src/app/core/offline/update-offline-mode-card.component.html +39 -0
- package/src/app/core/offline/update-offline-mode-card.component.scss +3 -0
- package/src/app/core/offline/update-offline-mode-card.component.ts +23 -0
- package/src/app/core/offline/update-offline-mode-card.module.ts +20 -0
- package/src/app/core/peer/select-peer.modal.html +317 -0
- package/src/app/core/peer/select-peer.modal.scss +41 -0
- package/src/app/core/peer/select-peer.modal.ts +366 -0
- package/src/app/core/peer/select-peer.module.ts +23 -0
- package/src/app/core/register/register-confirm.page.html +51 -0
- package/src/app/core/register/register-confirm.page.scss +56 -0
- package/src/app/core/register/register-confirm.page.ts +90 -0
- package/src/app/core/register/register.form.html +143 -0
- package/src/app/core/register/register.form.scss +10 -0
- package/src/app/core/register/register.form.ts +218 -0
- package/src/app/core/register/register.modal.html +66 -0
- package/src/app/core/register/register.modal.ts +50 -0
- package/src/app/core/register/register.module.ts +15 -0
- package/src/app/core/services/account.service.ts +1567 -0
- package/src/app/core/services/auth-guard.service.ts +70 -0
- package/src/app/core/services/base-entity-service.class.ts +659 -0
- package/src/app/core/services/base-graphql-service.class.ts +319 -0
- package/src/app/core/services/base58.ts +90 -0
- package/src/app/core/services/config/core.config.ts +263 -0
- package/src/app/core/services/config.service.ts +425 -0
- package/src/app/core/services/crypto.service.ts +126 -0
- package/src/app/core/services/errors.ts +80 -0
- package/src/app/core/services/local-settings.service.spec.ts +39 -0
- package/src/app/core/services/local-settings.service.ts +605 -0
- package/src/app/core/services/model/account.model.ts +188 -0
- package/src/app/core/services/model/config.model.ts +116 -0
- package/src/app/core/services/model/department.model.ts +34 -0
- package/src/app/core/services/model/entity.decorators.ts +110 -0
- package/src/app/core/services/model/entity.model.ts +409 -0
- package/src/app/core/services/model/filter.model.ts +127 -0
- package/src/app/core/services/model/history.model.ts +25 -0
- package/src/app/core/services/model/model.enum.ts +10 -0
- package/src/app/core/services/model/node-feature.model.ts +31 -0
- package/src/app/core/services/model/peer.model.ts +119 -0
- package/src/app/core/services/model/person.model.ts +122 -0
- package/src/app/core/services/model/referential.model.ts +253 -0
- package/src/app/core/services/model/settings.model.ts +37 -0
- package/src/app/core/services/model/token.model.ts +60 -0
- package/src/app/core/services/model/tree-item-entity.model.ts +230 -0
- package/src/app/core/services/network.service.spec.ts +47 -0
- package/src/app/core/services/network.service.ts +761 -0
- package/src/app/core/services/network.types.ts +7 -0
- package/src/app/core/services/network.utils.ts +83 -0
- package/src/app/core/services/pipes/account.pipes.ts +22 -0
- package/src/app/core/services/pipes/department-to-string.pipe.ts +13 -0
- package/src/app/core/services/pipes/person-to-string.pipe.ts +13 -0
- package/src/app/core/services/pipes/pipes.module.ts +30 -0
- package/src/app/core/services/pipes/referential-to-string.pipe.ts +18 -0
- package/src/app/core/services/pipes/usage-mode.pipes.ts +23 -0
- package/src/app/core/services/platform.service.spec.ts +50 -0
- package/src/app/core/services/platform.service.ts +694 -0
- package/src/app/core/services/storage/entities-storage.service.ts +557 -0
- package/src/app/core/services/storage/entity-store.class.ts +589 -0
- package/src/app/core/services/testing/local-settings.config.ts +35 -0
- package/src/app/core/services/testing/referential-filter.model.ts +28 -0
- package/src/app/core/services/testing/referential.validator.ts +58 -0
- package/src/app/core/services/testing/user-settings.config.ts +77 -0
- package/src/app/core/services/validator/account.validator.ts +50 -0
- package/src/app/core/services/validator/base.validator.class.ts +51 -0
- package/src/app/core/services/validator/local-settings.validator.ts +59 -0
- package/src/app/core/services/validator/user-settings.validator.ts +22 -0
- package/src/app/core/services/validator/user-token.validator.ts +54 -0
- package/src/app/core/settings/settings.module.ts +15 -0
- package/src/app/core/settings/settings.page.html +300 -0
- package/src/app/core/settings/settings.page.ts +455 -0
- package/src/app/core/table/async-table.class.ts +2019 -0
- package/src/app/core/table/column/actions-column.component.html +219 -0
- package/src/app/core/table/column/actions-column.component.scss +17 -0
- package/src/app/core/table/column/actions-column.component.ts +83 -0
- package/src/app/core/table/column/nav-actions-column.component.html +119 -0
- package/src/app/core/table/column/nav-actions-column.component.ts +108 -0
- package/src/app/core/table/column/row-field.component.html +43 -0
- package/src/app/core/table/column/row-field.component.scss +0 -0
- package/src/app/core/table/column/row-field.component.ts +63 -0
- package/src/app/core/table/entities-async-table-datasource.class.ts +501 -0
- package/src/app/core/table/entities-table-datasource.class.ts +499 -0
- package/src/app/core/table/memory-table.class.ts +56 -0
- package/src/app/core/table/table-select-columns.component.html +56 -0
- package/src/app/core/table/table-select-columns.component.ts +49 -0
- package/src/app/core/table/table.class.ts +2080 -0
- package/src/app/core/table/table.model.ts +39 -0
- package/src/app/core/table/table.module.ts +28 -0
- package/src/app/core/table/table.pipes.ts +87 -0
- package/src/app/core/table/table.utils.ts +42 -0
- package/src/app/core/table/testing/multi-table.testing.html +456 -0
- package/src/app/core/table/testing/multi-table.testing.ts +263 -0
- package/src/app/core/table/testing/table-validator.service.ts +29 -0
- package/src/app/core/table/testing/table.testing.html +556 -0
- package/src/app/core/table/testing/table.testing.module.ts +16 -0
- package/src/app/core/table/testing/table.testing.scss +32 -0
- package/src/app/core/table/testing/table.testing.ts +329 -0
- package/src/app/core/table/testing/table2-validator.service.ts +19 -0
- package/src/app/core/table/testing/table2.testing.html +470 -0
- package/src/app/core/table/testing/table2.testing.scss +25 -0
- package/src/app/core/table/testing/table2.testing.ts +274 -0
- package/src/app/shared/alerts.ts +296 -0
- package/src/app/shared/audio/audio.testing.html +29 -0
- package/src/app/shared/audio/audio.testing.module.ts +21 -0
- package/src/app/shared/audio/audio.testing.ts +27 -0
- package/src/app/shared/audio/audio.ts +273 -0
- package/src/app/shared/base64.utils.ts +66 -0
- package/src/app/shared/capacitor/keyboard.ts +38 -0
- package/src/app/shared/capacitor/plugins.ts +12 -0
- package/src/app/shared/constants.ts +19 -0
- package/src/app/shared/dates.ts +206 -0
- package/src/app/shared/debug/debug-service.class.ts +7 -0
- package/src/app/shared/debug/debug.component.html +13 -0
- package/src/app/shared/debug/debug.component.scss +21 -0
- package/src/app/shared/debug/debug.component.spec.ts +24 -0
- package/src/app/shared/debug/debug.component.ts +25 -0
- package/src/app/shared/debug/debug.module.ts +14 -0
- package/src/app/shared/directives/autofocus.directive.ts +93 -0
- package/src/app/shared/directives/autoresize.directive.ts +67 -0
- package/src/app/shared/directives/autotitle.directive.ts +17 -0
- package/src/app/shared/directives/directives.module.ts +16 -0
- package/src/app/shared/directives/drag-and-drop.directive.ts +46 -0
- package/src/app/shared/directives/ng-var.directive.ts +31 -0
- package/src/app/shared/directives/resizable/resizable.component.ts +48 -0
- package/src/app/shared/directives/resizable/resizable.directive.ts +43 -0
- package/src/app/shared/directives/resizable/resizable.module.ts +9 -0
- package/src/app/shared/directives/resizable/resizable.style.scss +37 -0
- package/src/app/shared/directives/resizable/resizable.template.html +6 -0
- package/src/app/shared/directives/throttled-click.directive.ts +36 -0
- package/src/app/shared/events.ts +93 -0
- package/src/app/shared/file/csv.utils.ts +123 -0
- package/src/app/shared/file/file.service.ts +129 -0
- package/src/app/shared/file/file.utils.ts +142 -0
- package/src/app/shared/file/images.utils.ts +214 -0
- package/src/app/shared/file/json.utils.ts +82 -0
- package/src/app/shared/file/uri.utils.ts +31 -0
- package/src/app/shared/file/url.utils.ts +163 -0
- package/src/app/shared/focusable.ts +8 -0
- package/src/app/shared/form/field.component.html +380 -0
- package/src/app/shared/form/field.component.scss +7 -0
- package/src/app/shared/form/field.component.ts +344 -0
- package/src/app/shared/form/field.model.ts +158 -0
- package/src/app/shared/form/loading-spinner.ts +16 -0
- package/src/app/shared/forms.ts +577 -0
- package/src/app/shared/functions.spec.ts +197 -0
- package/src/app/shared/functions.ts +694 -0
- package/src/app/shared/geolocation/geolocation.utils.ts +105 -0
- package/src/app/shared/gesture/gesture-config.ts +43 -0
- package/src/app/shared/gesture/hammer.utils.ts +14 -0
- package/src/app/shared/graph/colors.utils.ts +69 -0
- package/src/app/shared/graph/graph-colors.ts +270 -0
- package/src/app/shared/guard/component-dirty.guard.ts +67 -0
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.html +11 -0
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.scss +37 -0
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.ts +14 -0
- package/src/app/shared/hotkeys/hotkeys.service.ts +165 -0
- package/src/app/shared/hotkeys/shared-hotkeys.module.ts +15 -0
- package/src/app/shared/http/http.utils.ts +95 -0
- package/src/app/shared/image/gallery/image-gallery.component.html +282 -0
- package/src/app/shared/image/gallery/image-gallery.component.scss +218 -0
- package/src/app/shared/image/gallery/image-gallery.component.ts +434 -0
- package/src/app/shared/image/gallery/image-gallery.module.ts +35 -0
- package/src/app/shared/image/gallery/testing/gallegry.model.testing.ts +23 -0
- package/src/app/shared/image/gallery/testing/gallery.service.testing.ts +99 -0
- package/src/app/shared/image/gallery/testing/gallery.testing.html +27 -0
- package/src/app/shared/image/gallery/testing/gallery.testing.module.ts +39 -0
- package/src/app/shared/image/gallery/testing/gallery.testing.ts +34 -0
- package/src/app/shared/image/image.model.ts +8 -0
- package/src/app/shared/image/image.module.ts +12 -0
- package/src/app/shared/image/image.service.ts +111 -0
- package/src/app/shared/image/image.testing.module.ts +16 -0
- package/src/app/shared/inputs.ts +330 -0
- package/src/app/shared/interceptors/progess.interceptor.ts +24 -0
- package/src/app/shared/logging/log-level.model.ts +53 -0
- package/src/app/shared/logging/logger.model.ts +117 -0
- package/src/app/shared/logging/logging-service.class.ts +131 -0
- package/src/app/shared/logging/logging-service.config.ts +29 -0
- package/src/app/shared/logging/logging-service.module.ts +19 -0
- package/src/app/shared/markdown/markdown.component.html +55 -0
- package/src/app/shared/markdown/markdown.component.scss +75 -0
- package/src/app/shared/markdown/markdown.component.ts +350 -0
- package/src/app/shared/markdown/markdown.directive.ts +28 -0
- package/src/app/shared/markdown/markdown.modal.html +42 -0
- package/src/app/shared/markdown/markdown.modal.ts +91 -0
- package/src/app/shared/markdown/markdown.module.ts +65 -0
- package/src/app/shared/markdown/markdown.service.ts +234 -0
- package/src/app/shared/markdown/markdown.utils.ts +90 -0
- package/src/app/shared/markdown/testing/markdown.test.html +50 -0
- package/src/app/shared/markdown/testing/markdown.test.ts +49 -0
- package/src/app/shared/markdown/testing/markdown.testing.module.ts +22 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.config.ts +127 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.html +400 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.module.ts +41 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.scss +54 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.ts +1375 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.utils.ts +21 -0
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.html +1164 -0
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.spec.ts +33 -0
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.ts +272 -0
- package/src/app/shared/material/badge/badge.directive.ts +217 -0
- package/src/app/shared/material/badge/badge.module.ts +12 -0
- package/src/app/shared/material/badge/badge.test.html +275 -0
- package/src/app/shared/material/badge/badge.test.ts +34 -0
- package/src/app/shared/material/boolean/boolean.module.ts +36 -0
- package/src/app/shared/material/boolean/material.boolean.html +271 -0
- package/src/app/shared/material/boolean/material.boolean.scss +27 -0
- package/src/app/shared/material/boolean/material.boolean.ts +343 -0
- package/src/app/shared/material/boolean/testing/boolean.test.page.html +469 -0
- package/src/app/shared/material/boolean/testing/boolean.test.page.ts +66 -0
- package/src/app/shared/material/chips/chips.module.ts +38 -0
- package/src/app/shared/material/chips/material.chips.html +233 -0
- package/src/app/shared/material/chips/material.chips.scss +67 -0
- package/src/app/shared/material/chips/material.chips.ts +834 -0
- package/src/app/shared/material/chips/testing/chips.test.html +207 -0
- package/src/app/shared/material/chips/testing/chips.test.ts +169 -0
- package/src/app/shared/material/datetime/datetime.module.ts +42 -0
- package/src/app/shared/material/datetime/material.date.html +186 -0
- package/src/app/shared/material/datetime/material.date.scss +17 -0
- package/src/app/shared/material/datetime/material.date.ts +512 -0
- package/src/app/shared/material/datetime/material.dateshort.html +194 -0
- package/src/app/shared/material/datetime/material.dateshort.scss +23 -0
- package/src/app/shared/material/datetime/material.dateshort.ts +497 -0
- package/src/app/shared/material/datetime/material.datetime.html +325 -0
- package/src/app/shared/material/datetime/material.datetime.scss +87 -0
- package/src/app/shared/material/datetime/material.datetime.ts +758 -0
- package/src/app/shared/material/datetime/testing/mat-date-time.test.html +794 -0
- package/src/app/shared/material/datetime/testing/mat-date-time.test.ts +155 -0
- package/src/app/shared/material/datetime/testing/mat-date.test.html +564 -0
- package/src/app/shared/material/datetime/testing/mat-date.test.ts +145 -0
- package/src/app/shared/material/datetime/testing/mat-dateshort.test.html +530 -0
- package/src/app/shared/material/datetime/testing/mat-dateshort.test.ts +133 -0
- package/src/app/shared/material/duration/duration.module.ts +33 -0
- package/src/app/shared/material/duration/duration.utils.ts +18 -0
- package/src/app/shared/material/duration/material.duration.html +116 -0
- package/src/app/shared/material/duration/material.duration.scss +28 -0
- package/src/app/shared/material/duration/material.duration.ts +308 -0
- package/src/app/shared/material/duration/testing/mat-duration.test.html +170 -0
- package/src/app/shared/material/duration/testing/mat-duration.test.ts +88 -0
- package/src/app/shared/material/latlong/latlong.utils.ts +376 -0
- package/src/app/shared/material/latlong/material.latlong-input.html +95 -0
- package/src/app/shared/material/latlong/material.latlong-input.scss +66 -0
- package/src/app/shared/material/latlong/material.latlong-input.ts +445 -0
- package/src/app/shared/material/latlong/material.latlong.html +90 -0
- package/src/app/shared/material/latlong/material.latlong.module.ts +37 -0
- package/src/app/shared/material/latlong/material.latlong.scss +0 -0
- package/src/app/shared/material/latlong/material.latlong.ts +203 -0
- package/src/app/shared/material/latlong/testing/latlong.test.html +1008 -0
- package/src/app/shared/material/latlong/testing/latlong.test.ts +144 -0
- package/src/app/shared/material/material.animations.ts +269 -0
- package/src/app/shared/material/material.config.ts +5 -0
- package/src/app/shared/material/material.module.ts +94 -0
- package/src/app/shared/material/material.testing.module.ts +192 -0
- package/src/app/shared/material/memory/memory.utils.ts +57 -0
- package/src/app/shared/material/numpad/numpad.animation.ts +1 -0
- package/src/app/shared/material/numpad/numpad.append-to-input.directive.ts +110 -0
- package/src/app/shared/material/numpad/numpad.component.ts +73 -0
- package/src/app/shared/material/numpad/numpad.container.html +37 -0
- package/src/app/shared/material/numpad/numpad.container.scss +55 -0
- package/src/app/shared/material/numpad/numpad.container.ts +152 -0
- package/src/app/shared/material/numpad/numpad.content.html +13 -0
- package/src/app/shared/material/numpad/numpad.content.ts +10 -0
- package/src/app/shared/material/numpad/numpad.directive.ts +159 -0
- package/src/app/shared/material/numpad/numpad.dom-service.ts +35 -0
- package/src/app/shared/material/numpad/numpad.model.ts +53 -0
- package/src/app/shared/material/numpad/numpad.module.ts +18 -0
- package/src/app/shared/material/numpad/testing/numpad.test.html +146 -0
- package/src/app/shared/material/numpad/testing/numpad.test.ts +44 -0
- package/src/app/shared/material/paginator/material.paginator-i18n.ts +47 -0
- package/src/app/shared/material/stepper/material.stepper-i18n.ts +17 -0
- package/src/app/shared/material/swipe/material.swipe.html +85 -0
- package/src/app/shared/material/swipe/material.swipe.scss +55 -0
- package/src/app/shared/material/swipe/material.swipe.ts +366 -0
- package/src/app/shared/material/swipe/swipe.module.ts +29 -0
- package/src/app/shared/material/swipe/testing/swipe.test.html +112 -0
- package/src/app/shared/material/swipe/testing/swipe.test.ts +74 -0
- package/src/app/shared/material/test/test-component.css +22 -0
- package/src/app/shared/material/test/test-component.html +40 -0
- package/src/app/shared/material/test/test-component.ts +295 -0
- package/src/app/shared/material/testing/common.test.html +227 -0
- package/src/app/shared/material/testing/common.test.ts +126 -0
- package/src/app/shared/material/text/testing/text-form.testing.html +213 -0
- package/src/app/shared/material/text/testing/text-form.testing.ts +30 -0
- package/src/app/shared/material/text/text-form.component.html +63 -0
- package/src/app/shared/material/text/text-form.component.scss +8 -0
- package/src/app/shared/material/text/text-form.component.ts +177 -0
- package/src/app/shared/material/text/text-form.module.ts +36 -0
- package/src/app/shared/modules.ts +12 -0
- package/src/app/shared/named-filter/named-filter-selector.component.html +77 -0
- package/src/app/shared/named-filter/named-filter-selector.component.scss +3 -0
- package/src/app/shared/named-filter/named-filter-selector.component.ts +287 -0
- package/src/app/shared/named-filter/named-filter.model.ts +64 -0
- package/src/app/shared/named-filter/named-filter.module.ts +15 -0
- package/src/app/shared/named-filter/named-filter.service.ts +100 -0
- package/src/app/shared/named-filter/testing/named-filter-selector.testing.html +61 -0
- package/src/app/shared/named-filter/testing/named-filter-selector.testing.ts +80 -0
- package/src/app/shared/named-filter/testing/named-filter.testing.module.ts +20 -0
- package/src/app/shared/named-filter/testing/named-filter.testing.service.ts +83 -0
- package/src/app/shared/observables.ts +139 -0
- package/src/app/shared/pipes/arrays.pipe.ts +153 -0
- package/src/app/shared/pipes/badge.pipes.ts +17 -0
- package/src/app/shared/pipes/colors.pipe.ts +24 -0
- package/src/app/shared/pipes/date-diff-duration.pipe.ts +53 -0
- package/src/app/shared/pipes/date-format.pipe.ts +73 -0
- package/src/app/shared/pipes/date-from-now.pipe.ts +17 -0
- package/src/app/shared/pipes/dates.pipe.ts +13 -0
- package/src/app/shared/pipes/display-with.pipe.ts +13 -0
- package/src/app/shared/pipes/duration.pipe.spec.ts +41 -0
- package/src/app/shared/pipes/duration.pipe.ts +28 -0
- package/src/app/shared/pipes/file-size.pipe.ts +50 -0
- package/src/app/shared/pipes/form.pipes.ts +209 -0
- package/src/app/shared/pipes/highlight.pipe.ts +41 -0
- package/src/app/shared/pipes/html.pipes.ts +49 -0
- package/src/app/shared/pipes/latlong-format.pipe.ts +28 -0
- package/src/app/shared/pipes/maps.pipe.ts +41 -0
- package/src/app/shared/pipes/maskito.pipe.ts +68 -0
- package/src/app/shared/pipes/math.pipes.ts +46 -0
- package/src/app/shared/pipes/ng-init.pipe.ts +13 -0
- package/src/app/shared/pipes/number-format.pipe.ts +11 -0
- package/src/app/shared/pipes/observable.pipes.ts +45 -0
- package/src/app/shared/pipes/pipes.module.ts +162 -0
- package/src/app/shared/pipes/property.pipes.ts +115 -0
- package/src/app/shared/pipes/selection.pipes.ts +165 -0
- package/src/app/shared/pipes/string.pipes.ts +128 -0
- package/src/app/shared/pipes/translate-context.pipe.ts +27 -0
- package/src/app/shared/pipes/types.pipes.ts +52 -0
- package/src/app/shared/pipes/url.pipes.ts +36 -0
- package/src/app/shared/platforms.ts +99 -0
- package/src/app/shared/print/print.service.ts +337 -0
- package/src/app/shared/regexps.ts +112 -0
- package/src/app/shared/rx-state/rx-state.decorators.ts +281 -0
- package/src/app/shared/rx-state/rx-state.module.ts +11 -0
- package/src/app/shared/rx-state/rx-state.types.ts +5 -0
- package/src/app/shared/services/entity-service.class.ts +120 -0
- package/src/app/shared/services/job.utils.ts +124 -0
- package/src/app/shared/services/memory-entity-service.class.ts +435 -0
- package/src/app/shared/services/progress-bar.service.ts +40 -0
- package/src/app/shared/services/startable-observable-service.class.ts +129 -0
- package/src/app/shared/services/startable-service.class.ts +120 -0
- package/src/app/shared/services/storage.utils.ts +53 -0
- package/src/app/shared/services/translate-context.service.ts +112 -0
- package/src/app/shared/services/validator-service.class.ts +13 -0
- package/src/app/shared/services.ts +134 -0
- package/src/app/shared/shared-routing.module.ts +69 -0
- package/src/app/shared/shared.module.spec.ts +13 -0
- package/src/app/shared/shared.module.ts +168 -0
- package/src/app/shared/shared.testing.module.ts +61 -0
- package/src/app/shared/storage/storage-explorer.component.html +160 -0
- package/src/app/shared/storage/storage-explorer.component.scss +37 -0
- package/src/app/shared/storage/storage-explorer.component.spec.ts +24 -0
- package/src/app/shared/storage/storage-explorer.component.ts +268 -0
- package/src/app/shared/storage/storage-explorer.module.ts +24 -0
- package/src/app/shared/storage/storage-explorer.testing-routing.module.ts +19 -0
- package/src/app/shared/storage/storage-explorer.testing.module.ts +19 -0
- package/src/app/shared/storage/storage.service.ts +131 -0
- package/src/app/shared/storage/storage.utils.ts +25 -0
- package/src/app/shared/testing/maskito.test.html +40 -0
- package/src/app/shared/testing/maskito.test.ts +33 -0
- package/src/app/shared/testing/observable.test.html +53 -0
- package/src/app/shared/testing/observable.test.scss +3 -0
- package/src/app/shared/testing/observable.test.ts +101 -0
- package/src/app/shared/testing/tests.page.html +22 -0
- package/src/app/shared/testing/tests.page.ts +32 -0
- package/src/app/shared/toast/toast.testing.html +50 -0
- package/src/app/shared/toast/toast.testing.module.ts +22 -0
- package/src/app/shared/toast/toast.testing.ts +52 -0
- package/src/app/shared/toast/toasts.ts +161 -0
- package/src/app/shared/toolbar/modal-toolbar.html +30 -0
- package/src/app/shared/toolbar/modal-toolbar.scss +0 -0
- package/src/app/shared/toolbar/modal-toolbar.ts +64 -0
- package/src/app/shared/toolbar/toolbar.html +68 -0
- package/src/app/shared/toolbar/toolbar.module.ts +18 -0
- package/src/app/shared/toolbar/toolbar.scss +0 -0
- package/src/app/shared/toolbar/toolbar.ts +262 -0
- package/src/app/shared/types.ts +44 -0
- package/src/app/shared/upload-file/testing/upload-file.testing.html +30 -0
- package/src/app/shared/upload-file/testing/upload-file.testing.module.ts +21 -0
- package/src/app/shared/upload-file/testing/upload-file.testing.ts +65 -0
- package/src/app/shared/upload-file/upload-file-popover.component.html +46 -0
- package/src/app/shared/upload-file/upload-file-popover.component.scss +6 -0
- package/src/app/shared/upload-file/upload-file-popover.component.ts +115 -0
- package/src/app/shared/upload-file/upload-file.component.html +57 -0
- package/src/app/shared/upload-file/upload-file.component.scss +60 -0
- package/src/app/shared/upload-file/upload-file.component.ts +222 -0
- package/src/app/shared/upload-file/upload-file.model.ts +40 -0
- package/src/app/shared/validator/form-error-adapter.class.ts +136 -0
- package/src/app/shared/validator/validators.ts +725 -0
- package/src/app/shared/version/versions.ts +89 -0
- package/src/app/social/job/job.module.ts +14 -0
- package/src/app/social/job/progression/job-progression.component.html +19 -0
- package/src/app/social/job/progression/job-progression.component.scss +15 -0
- package/src/app/social/job/progression/job-progression.component.ts +39 -0
- package/src/app/social/job/progression/job-progression.icon.html +30 -0
- package/src/app/social/job/progression/job-progression.icon.scss +7 -0
- package/src/app/social/job/progression/job-progression.icon.ts +276 -0
- package/src/app/social/job/progression/job-progression.list.html +25 -0
- package/src/app/social/job/progression/job-progression.list.scss +17 -0
- package/src/app/social/job/progression/job-progression.list.ts +40 -0
- package/src/app/social/job/progression/job-progression.model.ts +26 -0
- package/src/app/social/job/progression/job-progression.service.ts +97 -0
- package/src/app/social/job/testing/job-progression.testing.html +11 -0
- package/src/app/social/job/testing/job-progression.testing.service.ts +33 -0
- package/src/app/social/job/testing/job-progression.testing.ts +28 -0
- package/src/app/social/job/testing/job.testing.module.ts +13 -0
- package/src/app/social/message/message.form.html +71 -0
- package/src/app/social/message/message.form.scss +6 -0
- package/src/app/social/message/message.form.ts +128 -0
- package/src/app/social/message/message.modal.html +68 -0
- package/src/app/social/message/message.modal.ts +117 -0
- package/src/app/social/message/message.model.ts +78 -0
- package/src/app/social/message/message.module.ts +14 -0
- package/src/app/social/message/message.service.ts +104 -0
- package/src/app/social/social.errors.ts +10 -0
- package/src/app/social/social.module.ts +23 -0
- package/src/app/social/social.testing.module.ts +33 -0
- package/src/app/social/user-event/notification/user-event-notification.icon.html +17 -0
- package/src/app/social/user-event/notification/user-event-notification.icon.ts +112 -0
- package/src/app/social/user-event/notification/user-event-notification.list.html +142 -0
- package/src/app/social/user-event/notification/user-event-notification.list.scss +73 -0
- package/src/app/social/user-event/notification/user-event-notification.list.ts +270 -0
- package/src/app/social/user-event/testing/user-event.testing.html +26 -0
- package/src/app/social/user-event/testing/user-event.testing.model.ts +142 -0
- package/src/app/social/user-event/testing/user-event.testing.module.ts +13 -0
- package/src/app/social/user-event/testing/user-event.testing.service.ts +161 -0
- package/src/app/social/user-event/testing/user-event.testing.ts +282 -0
- package/src/app/social/user-event/user-event.model.ts +55 -0
- package/src/app/social/user-event/user-event.module.ts +15 -0
- package/src/app/social/user-event/user-event.service.ts +686 -0
- package/src/assets/manifest.json +1 -1
- package/src/browserslist +9 -0
- package/src/environments/environment.class.ts +106 -0
- package/src/environments/environment.loader.ts +90 -0
- package/src/environments/environment.prod.ts +49 -0
- package/src/environments/environment.test.ts +92 -0
- package/src/environments/environment.ts +126 -0
- package/src/favicon.ico +0 -0
- package/src/global.scss +13 -0
- package/src/index.html +76 -0
- package/src/main.ts +18 -0
- package/src/polyfills.ts +34 -0
- package/src/schema.graphql +4381 -0
- package/src/service-worker.js +31 -0
- package/src/test.ts +30 -0
- package/tsconfig.app.json +15 -0
- package/tsconfig.json +47 -0
- package/tsconfig.spec.json +18 -0
- package/esm2022/public_api.mjs +0 -380
- package/esm2022/src/app/admin/admin-routing.module.mjs +0 -34
- package/esm2022/src/app/admin/admin.module.mjs +0 -32
- package/esm2022/src/app/admin/services/filter/person.filter.mjs +0 -76
- package/esm2022/src/app/admin/services/person.service.mjs +0 -184
- package/esm2022/src/app/admin/services/validator/person.validator.mjs +0 -72
- package/esm2022/src/app/admin/users/users.mjs +0 -379
- package/esm2022/src/app/admin/users/users.module.mjs +0 -56
- package/esm2022/src/app/core/about/about.modal.mjs +0 -86
- package/esm2022/src/app/core/about/about.module.mjs +0 -22
- package/esm2022/src/app/core/account/account.module.mjs +0 -75
- package/esm2022/src/app/core/account/account.page.mjs +0 -364
- package/esm2022/src/app/core/account/new-token.form.mjs +0 -106
- package/esm2022/src/app/core/account/new-token.modal.mjs +0 -66
- package/esm2022/src/app/core/account/password/change-password.form.mjs +0 -63
- package/esm2022/src/app/core/account/password/change-password.module.mjs +0 -22
- package/esm2022/src/app/core/account/password/change-password.page.mjs +0 -150
- package/esm2022/src/app/core/account/token.table.mjs +0 -157
- package/esm2022/src/app/core/auth/auth.form.mjs +0 -159
- package/esm2022/src/app/core/auth/auth.modal.mjs +0 -76
- package/esm2022/src/app/core/auth/auth.module.mjs +0 -56
- package/esm2022/src/app/core/auth/reset-password.modal.mjs +0 -89
- package/esm2022/src/app/core/core.module.mjs +0 -151
- package/esm2022/src/app/core/core.testing.module.mjs +0 -107
- package/esm2022/src/app/core/form/array/form-array.mjs +0 -328
- package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +0 -23
- package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +0 -94
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +0 -108
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +0 -31
- package/esm2022/src/app/core/form/entity/editor.class.mjs +0 -268
- package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +0 -420
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +0 -741
- package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +0 -24
- package/esm2022/src/app/core/form/entity/entity.module.mjs +0 -32
- package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +0 -190
- package/esm2022/src/app/core/form/form-container.class.mjs +0 -340
- package/esm2022/src/app/core/form/form.class.mjs +0 -337
- package/esm2022/src/app/core/form/form.module.mjs +0 -70
- package/esm2022/src/app/core/form/form.utils.mjs +0 -205
- package/esm2022/src/app/core/form/list/list.form.mjs +0 -235
- package/esm2022/src/app/core/form/list/list.module.mjs +0 -31
- package/esm2022/src/app/core/form/properties/properties.form.mjs +0 -317
- package/esm2022/src/app/core/form/properties/properties.module.mjs +0 -37
- package/esm2022/src/app/core/form/properties/properties.table.mjs +0 -264
- package/esm2022/src/app/core/form/properties/properties.utils.mjs +0 -304
- package/esm2022/src/app/core/form/properties/property.validator.mjs +0 -70
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +0 -104
- package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +0 -23
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +0 -73
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +0 -30
- package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +0 -161
- package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +0 -31
- package/esm2022/src/app/core/form/username/username.form.mjs +0 -55
- package/esm2022/src/app/core/form/username/username.module.mjs +0 -20
- package/esm2022/src/app/core/graphql/graphql.module.mjs +0 -14
- package/esm2022/src/app/core/graphql/graphql.service.mjs +0 -781
- package/esm2022/src/app/core/graphql/graphql.utils.mjs +0 -119
- package/esm2022/src/app/core/home/home.mjs +0 -382
- package/esm2022/src/app/core/home/home.module.mjs +0 -46
- package/esm2022/src/app/core/icon/icon.component.mjs +0 -40
- package/esm2022/src/app/core/icon/icon.module.mjs +0 -20
- package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +0 -394
- package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +0 -31
- package/esm2022/src/app/core/menu/menu.component.mjs +0 -258
- package/esm2022/src/app/core/menu/menu.model.mjs +0 -272
- package/esm2022/src/app/core/menu/menu.module.mjs +0 -47
- package/esm2022/src/app/core/menu/menu.service.mjs +0 -666
- package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +0 -109
- package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +0 -50
- package/esm2022/src/app/core/menu/testing/menu.testing.mjs +0 -158
- package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +0 -60
- package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +0 -28
- package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +0 -31
- package/esm2022/src/app/core/peer/select-peer.modal.mjs +0 -344
- package/esm2022/src/app/core/peer/select-peer.module.mjs +0 -36
- package/esm2022/src/app/core/register/register-confirm.page.mjs +0 -90
- package/esm2022/src/app/core/register/register.form.mjs +0 -194
- package/esm2022/src/app/core/register/register.modal.mjs +0 -55
- package/esm2022/src/app/core/register/register.module.mjs +0 -23
- package/esm2022/src/app/core/services/account.service.mjs +0 -1358
- package/esm2022/src/app/core/services/auth-guard.service.mjs +0 -74
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +0 -485
- package/esm2022/src/app/core/services/base-graphql-service.class.mjs +0 -230
- package/esm2022/src/app/core/services/base58.mjs +0 -83
- package/esm2022/src/app/core/services/config/core.config.mjs +0 -258
- package/esm2022/src/app/core/services/config.service.mjs +0 -384
- package/esm2022/src/app/core/services/crypto.service.mjs +0 -107
- package/esm2022/src/app/core/services/errors.mjs +0 -54
- package/esm2022/src/app/core/services/local-settings.service.mjs +0 -516
- package/esm2022/src/app/core/services/model/account.model.mjs +0 -178
- package/esm2022/src/app/core/services/model/config.model.mjs +0 -107
- package/esm2022/src/app/core/services/model/department.model.mjs +0 -35
- package/esm2022/src/app/core/services/model/entity.decorators.mjs +0 -97
- package/esm2022/src/app/core/services/model/entity.model.mjs +0 -274
- package/esm2022/src/app/core/services/model/filter.model.mjs +0 -93
- package/esm2022/src/app/core/services/model/history.model.mjs +0 -2
- package/esm2022/src/app/core/services/model/model.enum.mjs +0 -11
- package/esm2022/src/app/core/services/model/node-feature.model.mjs +0 -31
- package/esm2022/src/app/core/services/model/peer.model.mjs +0 -113
- package/esm2022/src/app/core/services/model/person.model.mjs +0 -114
- package/esm2022/src/app/core/services/model/referential.model.mjs +0 -205
- package/esm2022/src/app/core/services/model/settings.model.mjs +0 -6
- package/esm2022/src/app/core/services/model/token.model.mjs +0 -57
- package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +0 -195
- package/esm2022/src/app/core/services/network.service.mjs +0 -638
- package/esm2022/src/app/core/services/network.types.mjs +0 -2
- package/esm2022/src/app/core/services/network.utils.mjs +0 -35
- package/esm2022/src/app/core/services/pipes/account.pipes.mjs +0 -38
- package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +0 -23
- package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +0 -23
- package/esm2022/src/app/core/services/pipes/pipes.module.mjs +0 -54
- package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +0 -21
- package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +0 -37
- package/esm2022/src/app/core/services/platform.service.mjs +0 -627
- package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +0 -427
- package/esm2022/src/app/core/services/storage/entity-store.class.mjs +0 -450
- package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +0 -25
- package/esm2022/src/app/core/services/testing/referential.validator.mjs +0 -46
- package/esm2022/src/app/core/services/validator/account.validator.mjs +0 -45
- package/esm2022/src/app/core/services/validator/base.validator.class.mjs +0 -49
- package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +0 -57
- package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +0 -27
- package/esm2022/src/app/core/services/validator/user-token.validator.mjs +0 -55
- package/esm2022/src/app/core/settings/settings.module.mjs +0 -23
- package/esm2022/src/app/core/settings/settings.page.mjs +0 -403
- package/esm2022/src/app/core/table/async-table.class.mjs +0 -1811
- package/esm2022/src/app/core/table/column/actions-column.component.mjs +0 -130
- package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +0 -117
- package/esm2022/src/app/core/table/column/row-field.component.mjs +0 -116
- package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +0 -404
- package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +0 -405
- package/esm2022/src/app/core/table/memory-table.class.mjs +0 -57
- package/esm2022/src/app/core/table/table-select-columns.component.mjs +0 -46
- package/esm2022/src/app/core/table/table.class.mjs +0 -1867
- package/esm2022/src/app/core/table/table.model.mjs +0 -21
- package/esm2022/src/app/core/table/table.module.mjs +0 -51
- package/esm2022/src/app/core/table/table.pipes.mjs +0 -77
- package/esm2022/src/app/core/table/table.utils.mjs +0 -34
- package/esm2022/src/app/core/table/testing/table-validator.service.mjs +0 -32
- package/esm2022/src/app/core/table/testing/table.testing.mjs +0 -329
- package/esm2022/src/app/core/table/testing/table.testing.module.mjs +0 -25
- package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +0 -25
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +0 -273
- package/esm2022/src/app/shared/alerts.mjs +0 -243
- package/esm2022/src/app/shared/audio/audio.mjs +0 -255
- package/esm2022/src/app/shared/audio/audio.testing.mjs +0 -32
- package/esm2022/src/app/shared/audio/audio.testing.module.mjs +0 -30
- package/esm2022/src/app/shared/capacitor/keyboard.mjs +0 -42
- package/esm2022/src/app/shared/capacitor/plugins.mjs +0 -9
- package/esm2022/src/app/shared/constants.mjs +0 -16
- package/esm2022/src/app/shared/dates.mjs +0 -180
- package/esm2022/src/app/shared/debug/debug-service.class.mjs +0 -3
- package/esm2022/src/app/shared/debug/debug.component.mjs +0 -44
- package/esm2022/src/app/shared/debug/debug.module.mjs +0 -23
- package/esm2022/src/app/shared/directives/autofocus.directive.mjs +0 -91
- package/esm2022/src/app/shared/directives/autoresize.directive.mjs +0 -75
- package/esm2022/src/app/shared/directives/autotitle.directive.mjs +0 -30
- package/esm2022/src/app/shared/directives/directives.module.mjs +0 -24
- package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +0 -52
- package/esm2022/src/app/shared/directives/ng-var.directive.mjs +0 -33
- package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +0 -62
- package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +0 -45
- package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +0 -17
- package/esm2022/src/app/shared/directives/throttled-click.directive.mjs +0 -43
- package/esm2022/src/app/shared/events.mjs +0 -64
- package/esm2022/src/app/shared/file/csv.utils.mjs +0 -97
- package/esm2022/src/app/shared/file/file.service.mjs +0 -118
- package/esm2022/src/app/shared/file/file.utils.mjs +0 -117
- package/esm2022/src/app/shared/file/images.utils.mjs +0 -186
- package/esm2022/src/app/shared/file/json.utils.mjs +0 -58
- package/esm2022/src/app/shared/file/uri.utils.mjs +0 -29
- package/esm2022/src/app/shared/file/url.utils.mjs +0 -164
- package/esm2022/src/app/shared/focusable.mjs +0 -6
- package/esm2022/src/app/shared/form/field.component.mjs +0 -393
- package/esm2022/src/app/shared/form/field.model.mjs +0 -82
- package/esm2022/src/app/shared/form/loading-spinner.mjs +0 -35
- package/esm2022/src/app/shared/forms.mjs +0 -510
- package/esm2022/src/app/shared/functions.mjs +0 -672
- package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +0 -86
- package/esm2022/src/app/shared/gesture/gesture-config.mjs +0 -46
- package/esm2022/src/app/shared/gesture/hammer.utils.mjs +0 -2
- package/esm2022/src/app/shared/graph/colors.utils.mjs +0 -60
- package/esm2022/src/app/shared/graph/graph-colors.mjs +0 -214
- package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +0 -65
- package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +0 -23
- package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +0 -147
- package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +0 -24
- package/esm2022/src/app/shared/http/http.utils.mjs +0 -56
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +0 -443
- package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +0 -62
- package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +0 -26
- package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +0 -87
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +0 -37
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +0 -59
- package/esm2022/src/app/shared/image/image.model.mjs +0 -2
- package/esm2022/src/app/shared/image/image.module.mjs +0 -24
- package/esm2022/src/app/shared/image/image.service.mjs +0 -109
- package/esm2022/src/app/shared/inputs.mjs +0 -275
- package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +0 -27
- package/esm2022/src/app/shared/logging/log-level.model.mjs +0 -48
- package/esm2022/src/app/shared/logging/logger.model.mjs +0 -47
- package/esm2022/src/app/shared/logging/logging-service.class.mjs +0 -125
- package/esm2022/src/app/shared/logging/logging-service.config.mjs +0 -2
- package/esm2022/src/app/shared/logging/logging-service.module.mjs +0 -30
- package/esm2022/src/app/shared/markdown/markdown.component.mjs +0 -321
- package/esm2022/src/app/shared/markdown/markdown.directive.mjs +0 -34
- package/esm2022/src/app/shared/markdown/markdown.modal.mjs +0 -99
- package/esm2022/src/app/shared/markdown/markdown.module.mjs +0 -87
- package/esm2022/src/app/shared/markdown/markdown.service.mjs +0 -204
- package/esm2022/src/app/shared/markdown/markdown.utils.mjs +0 -87
- package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +0 -55
- package/esm2022/src/app/shared/markdown/testing/markdown.testing.module.mjs +0 -30
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +0 -46
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +0 -1313
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +0 -79
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +0 -18
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +0 -242
- package/esm2022/src/app/shared/material/badge/badge.directive.mjs +0 -251
- package/esm2022/src/app/shared/material/badge/badge.module.mjs +0 -20
- package/esm2022/src/app/shared/material/badge/badge.test.mjs +0 -42
- package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +0 -67
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +0 -371
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +0 -72
- package/esm2022/src/app/shared/material/chips/chips.module.mjs +0 -71
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +0 -836
- package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +0 -151
- package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +0 -76
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +0 -471
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +0 -457
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +0 -693
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +0 -136
- package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +0 -127
- package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +0 -118
- package/esm2022/src/app/shared/material/duration/duration.module.mjs +0 -61
- package/esm2022/src/app/shared/material/duration/duration.utils.mjs +0 -16
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +0 -283
- package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +0 -85
- package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +0 -319
- package/esm2022/src/app/shared/material/latlong/material.latlong-input.mjs +0 -432
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +0 -231
- package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +0 -68
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +0 -137
- package/esm2022/src/app/shared/material/material.animations.mjs +0 -200
- package/esm2022/src/app/shared/material/material.config.mjs +0 -3
- package/esm2022/src/app/shared/material/material.module.mjs +0 -229
- package/esm2022/src/app/shared/material/material.testing.module.mjs +0 -245
- package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +0 -51
- package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +0 -23
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +0 -379
- package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +0 -52
- package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +0 -67
- package/esm2022/src/app/shared/material/test/test-component.mjs +0 -264
- package/esm2022/src/app/shared/material/testing/common.test.mjs +0 -111
- package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +0 -42
- package/esm2022/src/app/shared/material/text/text-form.component.mjs +0 -205
- package/esm2022/src/app/shared/material/text/text-form.module.mjs +0 -63
- package/esm2022/src/app/shared/modules.mjs +0 -12
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +0 -303
- package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +0 -49
- package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +0 -24
- package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +0 -69
- package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +0 -74
- package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +0 -28
- package/esm2022/src/app/shared/observables.mjs +0 -100
- package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +0 -217
- package/esm2022/src/app/shared/pipes/badge.pipes.mjs +0 -24
- package/esm2022/src/app/shared/pipes/colors.pipe.mjs +0 -29
- package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +0 -50
- package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +0 -72
- package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +0 -28
- package/esm2022/src/app/shared/pipes/dates.pipe.mjs +0 -18
- package/esm2022/src/app/shared/pipes/display-with.pipe.mjs +0 -23
- package/esm2022/src/app/shared/pipes/duration.pipe.mjs +0 -34
- package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +0 -53
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +0 -219
- package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +0 -50
- package/esm2022/src/app/shared/pipes/html.pipes.mjs +0 -69
- package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +0 -42
- package/esm2022/src/app/shared/pipes/maps.pipe.mjs +0 -65
- package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +0 -67
- package/esm2022/src/app/shared/pipes/math.pipes.mjs +0 -77
- package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +0 -19
- package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +0 -17
- package/esm2022/src/app/shared/pipes/observable.pipes.mjs +0 -61
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +0 -285
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +0 -135
- package/esm2022/src/app/shared/pipes/selection.pipes.mjs +0 -179
- package/esm2022/src/app/shared/pipes/string.pipes.mjs +0 -183
- package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +0 -44
- package/esm2022/src/app/shared/pipes/types.pipes.mjs +0 -74
- package/esm2022/src/app/shared/pipes/url.pipes.mjs +0 -43
- package/esm2022/src/app/shared/platforms.mjs +0 -81
- package/esm2022/src/app/shared/print/print.service.mjs +0 -305
- package/esm2022/src/app/shared/regexps.mjs +0 -96
- package/esm2022/src/app/shared/rx-state/rx-state.decorators.mjs +0 -71
- package/esm2022/src/app/shared/rx-state/rx-state.module.mjs +0 -19
- package/esm2022/src/app/shared/rx-state/rx-state.types.mjs +0 -2
- package/esm2022/src/app/shared/services/entity-service.class.mjs +0 -10
- package/esm2022/src/app/shared/services/job.utils.mjs +0 -92
- package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +0 -353
- package/esm2022/src/app/shared/services/progress-bar.service.mjs +0 -31
- package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +0 -118
- package/esm2022/src/app/shared/services/startable-service.class.mjs +0 -107
- package/esm2022/src/app/shared/services/translate-context.service.mjs +0 -107
- package/esm2022/src/app/shared/services/validator-service.class.mjs +0 -2
- package/esm2022/src/app/shared/services.mjs +0 -85
- package/esm2022/src/app/shared/shared-routing.module.mjs +0 -72
- package/esm2022/src/app/shared/shared.module.mjs +0 -229
- package/esm2022/src/app/shared/shared.testing.module.mjs +0 -108
- package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +0 -279
- package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +0 -42
- package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +0 -27
- package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +0 -25
- package/esm2022/src/app/shared/storage/storage.service.mjs +0 -134
- package/esm2022/src/app/shared/storage/storage.utils.mjs +0 -13
- package/esm2022/src/app/shared/testing/maskito.test.mjs +0 -41
- package/esm2022/src/app/shared/testing/observable.test.mjs +0 -94
- package/esm2022/src/app/shared/testing/tests.page.mjs +0 -37
- package/esm2022/src/app/shared/toast/toast.testing.mjs +0 -54
- package/esm2022/src/app/shared/toast/toast.testing.module.mjs +0 -31
- package/esm2022/src/app/shared/toast/toasts.mjs +0 -134
- package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +0 -62
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +0 -267
- package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +0 -26
- package/esm2022/src/app/shared/types.mjs +0 -2
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +0 -59
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +0 -30
- package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +0 -109
- package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +0 -216
- package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +0 -26
- package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +0 -114
- package/esm2022/src/app/shared/validator/validators.mjs +0 -621
- package/esm2022/src/app/shared/version/versions.mjs +0 -81
- package/esm2022/src/app/social/job/job.module.mjs +0 -23
- package/esm2022/src/app/social/job/progression/job-progression.component.mjs +0 -35
- package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +0 -235
- package/esm2022/src/app/social/job/progression/job-progression.list.mjs +0 -47
- package/esm2022/src/app/social/job/progression/job-progression.model.mjs +0 -29
- package/esm2022/src/app/social/job/progression/job-progression.service.mjs +0 -91
- package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +0 -38
- package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +0 -34
- package/esm2022/src/app/social/job/testing/job.testing.module.mjs +0 -22
- package/esm2022/src/app/social/message/message.form.mjs +0 -141
- package/esm2022/src/app/social/message/message.modal.mjs +0 -110
- package/esm2022/src/app/social/message/message.model.mjs +0 -75
- package/esm2022/src/app/social/message/message.module.mjs +0 -22
- package/esm2022/src/app/social/message/message.service.mjs +0 -110
- package/esm2022/src/app/social/social.errors.mjs +0 -10
- package/esm2022/src/app/social/social.module.mjs +0 -22
- package/esm2022/src/app/social/social.testing.module.mjs +0 -40
- package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +0 -127
- package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +0 -260
- package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +0 -257
- package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +0 -129
- package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +0 -22
- package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +0 -128
- package/esm2022/src/app/social/user-event/user-event.model.mjs +0 -2
- package/esm2022/src/app/social/user-event/user-event.module.mjs +0 -23
- package/esm2022/src/app/social/user-event/user-event.service.mjs +0 -512
- package/esm2022/src/environments/environment.class.mjs +0 -65
- package/esm2022/src/environments/environment.loader.mjs +0 -77
- package/esm2022/src/environments/environment.mjs +0 -109
- package/esm2022/sumaris-net.ngx-components.mjs +0 -5
- package/fesm2022/sumaris-net.ngx-components.mjs +0 -48529
- package/fesm2022/sumaris-net.ngx-components.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/public_api.d.ts +0 -344
- package/src/app/admin/admin-routing.module.d.ts +0 -9
- package/src/app/admin/admin.module.d.ts +0 -10
- package/src/app/admin/services/filter/person.filter.d.ts +0 -22
- package/src/app/admin/services/person.service.d.ts +0 -37
- package/src/app/admin/services/validator/person.validator.d.ts +0 -23
- package/src/app/admin/users/users.d.ts +0 -61
- package/src/app/admin/users/users.module.d.ts +0 -14
- package/src/app/core/about/about.modal.d.ts +0 -32
- package/src/app/core/about/about.module.d.ts +0 -11
- package/src/app/core/account/account.module.d.ts +0 -18
- package/src/app/core/account/account.page.d.ts +0 -83
- package/src/app/core/account/new-token.form.d.ts +0 -29
- package/src/app/core/account/new-token.modal.d.ts +0 -29
- package/src/app/core/account/password/change-password.form.d.ts +0 -19
- package/src/app/core/account/password/change-password.module.d.ts +0 -11
- package/src/app/core/account/password/change-password.page.d.ts +0 -36
- package/src/app/core/account/token.table.d.ts +0 -27
- package/src/app/core/auth/auth.form.d.ts +0 -38
- package/src/app/core/auth/auth.modal.d.ts +0 -24
- package/src/app/core/auth/auth.module.d.ts +0 -13
- package/src/app/core/auth/reset-password.modal.d.ts +0 -29
- package/src/app/core/core.module.d.ts +0 -28
- package/src/app/core/core.testing.module.d.ts +0 -15
- package/src/app/core/form/array/form-array.d.ts +0 -137
- package/src/app/core/form/array/testing/form-array-test.module.d.ts +0 -12
- package/src/app/core/form/array/testing/form-array.test.d.ts +0 -26
- package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +0 -37
- package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +0 -9
- package/src/app/core/form/entity/editor.class.d.ts +0 -84
- package/src/app/core/form/entity/entity-editor-modal.class.d.ts +0 -126
- package/src/app/core/form/entity/entity-editor.class.d.ts +0 -204
- package/src/app/core/form/entity/entity-metadata.component.d.ts +0 -13
- package/src/app/core/form/entity/entity.module.d.ts +0 -10
- package/src/app/core/form/entity/tab-editor.class.d.ts +0 -66
- package/src/app/core/form/form-container.class.d.ts +0 -127
- package/src/app/core/form/form.class.d.ts +0 -144
- package/src/app/core/form/form.module.d.ts +0 -14
- package/src/app/core/form/form.utils.d.ts +0 -260
- package/src/app/core/form/list/list.form.d.ts +0 -81
- package/src/app/core/form/list/list.module.d.ts +0 -9
- package/src/app/core/form/properties/properties.form.d.ts +0 -92
- package/src/app/core/form/properties/properties.module.d.ts +0 -11
- package/src/app/core/form/properties/properties.table.d.ts +0 -72
- package/src/app/core/form/properties/properties.utils.d.ts +0 -59
- package/src/app/core/form/properties/property.validator.d.ts +0 -27
- package/src/app/core/form/properties/testing/properties-form.test.d.ts +0 -22
- package/src/app/core/form/properties/testing/properties-form.testing.module.d.ts +0 -12
- package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +0 -16
- package/src/app/core/form/text-popover/testing/text-popover.testing.module.d.ts +0 -11
- package/src/app/core/form/text-popover/text-popover.component.d.ts +0 -80
- package/src/app/core/form/text-popover/text-popover.module.d.ts +0 -9
- package/src/app/core/form/username/username.form.d.ts +0 -19
- package/src/app/core/form/username/username.module.d.ts +0 -9
- package/src/app/core/graphql/graphql.module.d.ts +0 -7
- package/src/app/core/graphql/graphql.service.d.ts +0 -142
- package/src/app/core/graphql/graphql.utils.d.ts +0 -47
- package/src/app/core/home/home.d.ts +0 -109
- package/src/app/core/home/home.module.d.ts +0 -14
- package/src/app/core/icon/icon.component.d.ts +0 -13
- package/src/app/core/icon/icon.module.d.ts +0 -9
- package/src/app/core/install/install-upgrade-card.component.d.ts +0 -63
- package/src/app/core/install/install-upgrade-card.module.d.ts +0 -9
- package/src/app/core/menu/menu.component.d.ts +0 -66
- package/src/app/core/menu/menu.model.d.ts +0 -144
- package/src/app/core/menu/menu.module.d.ts +0 -12
- package/src/app/core/menu/menu.service.d.ts +0 -93
- package/src/app/core/menu/sub-menu-tab.directive.d.ts +0 -29
- package/src/app/core/menu/testing/menu-other.testing.d.ts +0 -15
- package/src/app/core/menu/testing/menu.testing.d.ts +0 -51
- package/src/app/core/menu/testing/menu.testing.module.d.ts +0 -12
- package/src/app/core/offline/update-offline-mode-card.component.d.ts +0 -11
- package/src/app/core/offline/update-offline-mode-card.module.d.ts +0 -9
- package/src/app/core/peer/select-peer.modal.d.ts +0 -101
- package/src/app/core/peer/select-peer.module.d.ts +0 -12
- package/src/app/core/register/register-confirm.page.d.ts +0 -24
- package/src/app/core/register/register.form.d.ts +0 -49
- package/src/app/core/register/register.modal.d.ts +0 -14
- package/src/app/core/register/register.module.d.ts +0 -12
- package/src/app/core/services/account.service.d.ts +0 -207
- package/src/app/core/services/auth-guard.service.d.ts +0 -17
- package/src/app/core/services/base-entity-service.class.d.ts +0 -135
- package/src/app/core/services/base-graphql-service.class.d.ts +0 -77
- package/src/app/core/services/base58.d.ts +0 -7
- package/src/app/core/services/config/core.config.d.ts +0 -46
- package/src/app/core/services/config.service.d.ts +0 -63
- package/src/app/core/services/crypto.service.d.ts +0 -44
- package/src/app/core/services/errors.d.ts +0 -65
- package/src/app/core/services/local-settings.service.d.ts +0 -99
- package/src/app/core/services/model/account.model.d.ts +0 -56
- package/src/app/core/services/model/config.model.d.ts +0 -36
- package/src/app/core/services/model/department.model.d.ts +0 -11
- package/src/app/core/services/model/entity.decorators.d.ts +0 -17
- package/src/app/core/services/model/entity.model.d.ts +0 -110
- package/src/app/core/services/model/filter.model.d.ts +0 -37
- package/src/app/core/services/model/history.model.d.ts +0 -20
- package/src/app/core/services/model/model.enum.d.ts +0 -7
- package/src/app/core/services/model/node-feature.model.d.ts +0 -14
- package/src/app/core/services/model/peer.model.d.ts +0 -35
- package/src/app/core/services/model/person.model.d.ts +0 -37
- package/src/app/core/services/model/referential.model.d.ts +0 -84
- package/src/app/core/services/model/settings.model.d.ts +0 -29
- package/src/app/core/services/model/token.model.d.ts +0 -22
- package/src/app/core/services/model/tree-item-entity.model.d.ts +0 -53
- package/src/app/core/services/network.service.d.ts +0 -159
- package/src/app/core/services/network.types.d.ts +0 -4
- package/src/app/core/services/network.utils.d.ts +0 -38
- package/src/app/core/services/pipes/account.pipes.d.ts +0 -15
- package/src/app/core/services/pipes/department-to-string.pipe.d.ts +0 -9
- package/src/app/core/services/pipes/person-to-string.pipe.d.ts +0 -11
- package/src/app/core/services/pipes/pipes.module.d.ts +0 -11
- package/src/app/core/services/pipes/referential-to-string.pipe.d.ts +0 -13
- package/src/app/core/services/pipes/usage-mode.pipes.d.ts +0 -15
- package/src/app/core/services/platform.service.d.ts +0 -110
- package/src/app/core/services/storage/entities-storage.service.d.ts +0 -108
- package/src/app/core/services/storage/entity-store.class.d.ts +0 -113
- package/src/app/core/services/testing/referential-filter.model.d.ts +0 -9
- package/src/app/core/services/testing/referential.validator.d.ts +0 -22
- package/src/app/core/services/validator/account.validator.d.ts +0 -24
- package/src/app/core/services/validator/base.validator.class.d.ts +0 -21
- package/src/app/core/services/validator/local-settings.validator.d.ts +0 -18
- package/src/app/core/services/validator/user-settings.validator.d.ts +0 -10
- package/src/app/core/services/validator/user-token.validator.d.ts +0 -13
- package/src/app/core/settings/settings.module.d.ts +0 -12
- package/src/app/core/settings/settings.page.d.ts +0 -88
- package/src/app/core/table/async-table.class.d.ts +0 -395
- package/src/app/core/table/column/actions-column.component.d.ts +0 -62
- package/src/app/core/table/column/nav-actions-column.component.d.ts +0 -46
- package/src/app/core/table/column/row-field.component.d.ts +0 -40
- package/src/app/core/table/entities-async-table-datasource.class.d.ts +0 -100
- package/src/app/core/table/entities-table-datasource.class.d.ts +0 -103
- package/src/app/core/table/memory-table.class.d.ts +0 -25
- package/src/app/core/table/table-select-columns.component.d.ts +0 -22
- package/src/app/core/table/table.class.d.ts +0 -400
- package/src/app/core/table/table.model.d.ts +0 -31
- package/src/app/core/table/table.module.d.ts +0 -14
- package/src/app/core/table/table.pipes.d.ts +0 -29
- package/src/app/core/table/table.utils.d.ts +0 -13
- package/src/app/core/table/testing/table-validator.service.d.ts +0 -17
- package/src/app/core/table/testing/table.testing.d.ts +0 -54
- package/src/app/core/table/testing/table.testing.module.d.ts +0 -14
- package/src/app/core/table/testing/table2-validator.service.d.ts +0 -15
- package/src/app/core/table/testing/table2.testing.d.ts +0 -48
- package/src/app/shared/alerts.d.ts +0 -55
- package/src/app/shared/audio/audio.d.ts +0 -45
- package/src/app/shared/audio/audio.testing.d.ts +0 -13
- package/src/app/shared/audio/audio.testing.module.d.ts +0 -11
- package/src/app/shared/capacitor/keyboard.d.ts +0 -16
- package/src/app/shared/capacitor/plugins.d.ts +0 -7
- package/src/app/shared/constants.d.ts +0 -13
- package/src/app/shared/dates.d.ts +0 -61
- package/src/app/shared/debug/debug-service.class.d.ts +0 -5
- package/src/app/shared/debug/debug.component.d.ts +0 -14
- package/src/app/shared/debug/debug.module.d.ts +0 -12
- package/src/app/shared/directives/autofocus.directive.d.ts +0 -18
- package/src/app/shared/directives/autoresize.directive.d.ts +0 -20
- package/src/app/shared/directives/autotitle.directive.d.ts +0 -11
- package/src/app/shared/directives/directives.module.d.ts +0 -14
- package/src/app/shared/directives/drag-and-drop.directive.d.ts +0 -17
- package/src/app/shared/directives/ng-var.directive.d.ts +0 -12
- package/src/app/shared/directives/resizable/resizable.component.d.ts +0 -21
- package/src/app/shared/directives/resizable/resizable.directive.d.ts +0 -12
- package/src/app/shared/directives/resizable/resizable.module.d.ts +0 -8
- package/src/app/shared/directives/throttled-click.directive.d.ts +0 -16
- package/src/app/shared/events.d.ts +0 -29
- package/src/app/shared/file/csv.utils.d.ts +0 -30
- package/src/app/shared/file/file.service.d.ts +0 -23
- package/src/app/shared/file/file.utils.d.ts +0 -20
- package/src/app/shared/file/images.utils.d.ts +0 -36
- package/src/app/shared/file/json.utils.d.ts +0 -19
- package/src/app/shared/file/uri.utils.d.ts +0 -8
- package/src/app/shared/file/url.utils.d.ts +0 -77
- package/src/app/shared/focusable.d.ts +0 -4
- package/src/app/shared/form/field.component.d.ts +0 -85
- package/src/app/shared/form/field.model.d.ts +0 -82
- package/src/app/shared/form/loading-spinner.d.ts +0 -8
- package/src/app/shared/forms.d.ts +0 -135
- package/src/app/shared/functions.d.ts +0 -206
- package/src/app/shared/geolocation/geolocation.utils.d.ts +0 -19
- package/src/app/shared/gesture/gesture-config.d.ts +0 -15
- package/src/app/shared/gesture/hammer.utils.d.ts +0 -16
- package/src/app/shared/graph/colors.utils.d.ts +0 -17
- package/src/app/shared/graph/graph-colors.d.ts +0 -63
- package/src/app/shared/guard/component-dirty.guard.d.ts +0 -14
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +0 -8
- package/src/app/shared/hotkeys/hotkeys.service.d.ts +0 -48
- package/src/app/shared/hotkeys/shared-hotkeys.module.d.ts +0 -11
- package/src/app/shared/http/http.utils.d.ts +0 -28
- package/src/app/shared/image/gallery/image-gallery.component.d.ts +0 -137
- package/src/app/shared/image/gallery/image-gallery.module.d.ts +0 -15
- package/src/app/shared/image/gallery/testing/gallegry.model.testing.d.ts +0 -12
- package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +0 -33
- package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +0 -16
- package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +0 -13
- package/src/app/shared/image/image.model.d.ts +0 -7
- package/src/app/shared/image/image.module.d.ts +0 -8
- package/src/app/shared/image/image.service.d.ts +0 -36
- package/src/app/shared/inputs.d.ts +0 -35
- package/src/app/shared/interceptors/progess.interceptor.d.ts +0 -8
- package/src/app/shared/logging/log-level.model.d.ts +0 -38
- package/src/app/shared/logging/logger.model.d.ts +0 -68
- package/src/app/shared/logging/logging-service.class.d.ts +0 -39
- package/src/app/shared/logging/logging-service.config.d.ts +0 -25
- package/src/app/shared/logging/logging-service.module.d.ts +0 -9
- package/src/app/shared/markdown/markdown.component.d.ts +0 -86
- package/src/app/shared/markdown/markdown.directive.d.ts +0 -13
- package/src/app/shared/markdown/markdown.modal.d.ts +0 -49
- package/src/app/shared/markdown/markdown.module.d.ts +0 -17
- package/src/app/shared/markdown/markdown.service.d.ts +0 -37
- package/src/app/shared/markdown/markdown.utils.d.ts +0 -26
- package/src/app/shared/markdown/testing/markdown.test.d.ts +0 -18
- package/src/app/shared/markdown/testing/markdown.testing.module.d.ts +0 -12
- package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +0 -74
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +0 -211
- package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +0 -22
- package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +0 -5
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +0 -48
- package/src/app/shared/material/badge/badge.directive.d.ts +0 -43
- package/src/app/shared/material/badge/badge.module.d.ts +0 -10
- package/src/app/shared/material/badge/badge.test.d.ts +0 -21
- package/src/app/shared/material/boolean/boolean.module.d.ts +0 -20
- package/src/app/shared/material/boolean/material.boolean.d.ts +0 -93
- package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +0 -26
- package/src/app/shared/material/chips/chips.module.d.ts +0 -21
- package/src/app/shared/material/chips/material.chips.d.ts +0 -164
- package/src/app/shared/material/chips/testing/chips.test.d.ts +0 -32
- package/src/app/shared/material/datetime/datetime.module.d.ts +0 -24
- package/src/app/shared/material/datetime/material.date.d.ts +0 -90
- package/src/app/shared/material/datetime/material.dateshort.d.ts +0 -89
- package/src/app/shared/material/datetime/material.datetime.d.ts +0 -116
- package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +0 -37
- package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +0 -32
- package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +0 -31
- package/src/app/shared/material/duration/duration.module.d.ts +0 -18
- package/src/app/shared/material/duration/duration.utils.d.ts +0 -2
- package/src/app/shared/material/duration/material.duration.d.ts +0 -64
- package/src/app/shared/material/duration/testing/mat-duration.test.d.ts +0 -23
- package/src/app/shared/material/latlong/latlong.utils.d.ts +0 -59
- package/src/app/shared/material/latlong/material.latlong-input.d.ts +0 -85
- package/src/app/shared/material/latlong/material.latlong.d.ts +0 -90
- package/src/app/shared/material/latlong/material.latlong.module.d.ts +0 -21
- package/src/app/shared/material/latlong/testing/latlong.test.d.ts +0 -28
- package/src/app/shared/material/material.animations.d.ts +0 -8
- package/src/app/shared/material/material.config.d.ts +0 -3
- package/src/app/shared/material/material.module.d.ts +0 -45
- package/src/app/shared/material/material.testing.module.d.ts +0 -32
- package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +0 -12
- package/src/app/shared/material/stepper/material.stepper-i18n.d.ts +0 -10
- package/src/app/shared/material/swipe/material.swipe.d.ts +0 -89
- package/src/app/shared/material/swipe/swipe.module.d.ts +0 -16
- package/src/app/shared/material/swipe/testing/swipe.test.d.ts +0 -22
- package/src/app/shared/material/test/test-component.d.ts +0 -75
- package/src/app/shared/material/testing/common.test.d.ts +0 -25
- package/src/app/shared/material/text/testing/text-form.testing.d.ts +0 -19
- package/src/app/shared/material/text/text-form.component.d.ts +0 -66
- package/src/app/shared/material/text/text-form.module.d.ts +0 -16
- package/src/app/shared/modules.d.ts +0 -9
- package/src/app/shared/named-filter/named-filter-selector.component.d.ts +0 -62
- package/src/app/shared/named-filter/named-filter.model.d.ts +0 -32
- package/src/app/shared/named-filter/named-filter.module.d.ts +0 -13
- package/src/app/shared/named-filter/named-filter.service.d.ts +0 -32
- package/src/app/shared/named-filter/testing/named-filter-selector.testing.d.ts +0 -34
- package/src/app/shared/named-filter/testing/named-filter.testing.module.d.ts +0 -10
- package/src/app/shared/observables.d.ts +0 -30
- package/src/app/shared/pipes/arrays.pipe.d.ts +0 -82
- package/src/app/shared/pipes/badge.pipes.d.ts +0 -7
- package/src/app/shared/pipes/colors.pipe.d.ts +0 -9
- package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +0 -25
- package/src/app/shared/pipes/date-format.pipe.d.ts +0 -35
- package/src/app/shared/pipes/date-from-now.pipe.d.ts +0 -12
- package/src/app/shared/pipes/dates.pipe.d.ts +0 -10
- package/src/app/shared/pipes/display-with.pipe.d.ts +0 -8
- package/src/app/shared/pipes/duration.pipe.d.ts +0 -23
- package/src/app/shared/pipes/file-size.pipe.d.ts +0 -30
- package/src/app/shared/pipes/form.pipes.d.ts +0 -69
- package/src/app/shared/pipes/highlight.pipe.d.ts +0 -11
- package/src/app/shared/pipes/html.pipes.d.ts +0 -22
- package/src/app/shared/pipes/latlong-format.pipe.d.ts +0 -20
- package/src/app/shared/pipes/maps.pipe.d.ts +0 -23
- package/src/app/shared/pipes/maskito.pipe.d.ts +0 -14
- package/src/app/shared/pipes/math.pipes.d.ts +0 -26
- package/src/app/shared/pipes/ng-init.pipe.d.ts +0 -8
- package/src/app/shared/pipes/number-format.pipe.d.ts +0 -9
- package/src/app/shared/pipes/observable.pipes.d.ts +0 -25
- package/src/app/shared/pipes/pipes.module.d.ts +0 -35
- package/src/app/shared/pipes/property.pipes.d.ts +0 -41
- package/src/app/shared/pipes/selection.pipes.d.ts +0 -62
- package/src/app/shared/pipes/string.pipes.d.ts +0 -68
- package/src/app/shared/pipes/translate-context.pipe.d.ts +0 -17
- package/src/app/shared/pipes/types.pipes.d.ts +0 -30
- package/src/app/shared/pipes/url.pipes.d.ts +0 -27
- package/src/app/shared/platforms.d.ts +0 -16
- package/src/app/shared/print/print.service.d.ts +0 -94
- package/src/app/shared/regexps.d.ts +0 -32
- package/src/app/shared/rx-state/rx-state.decorators.d.ts +0 -7
- package/src/app/shared/rx-state/rx-state.module.d.ts +0 -10
- package/src/app/shared/rx-state/rx-state.types.d.ts +0 -4
- package/src/app/shared/services/entity-service.class.d.ts +0 -75
- package/src/app/shared/services/job.utils.d.ts +0 -20
- package/src/app/shared/services/memory-entity-service.class.d.ts +0 -79
- package/src/app/shared/services/progress-bar.service.d.ts +0 -20
- package/src/app/shared/services/startable-observable-service.class.d.ts +0 -36
- package/src/app/shared/services/startable-service.class.d.ts +0 -37
- package/src/app/shared/services/translate-context.service.d.ts +0 -29
- package/src/app/shared/services/validator-service.class.d.ts +0 -11
- package/src/app/shared/services.d.ts +0 -17
- package/src/app/shared/shared-routing.module.d.ts +0 -23
- package/src/app/shared/shared.module.d.ts +0 -33
- package/src/app/shared/shared.testing.module.d.ts +0 -20
- package/src/app/shared/storage/storage-explorer.component.d.ts +0 -59
- package/src/app/shared/storage/storage-explorer.module.d.ts +0 -13
- package/src/app/shared/storage/storage-explorer.testing-routing.module.d.ts +0 -9
- package/src/app/shared/storage/storage-explorer.testing.module.d.ts +0 -10
- package/src/app/shared/storage/storage.service.d.ts +0 -22
- package/src/app/shared/storage/storage.utils.d.ts +0 -19
- package/src/app/shared/testing/maskito.test.d.ts +0 -10
- package/src/app/shared/testing/observable.test.d.ts +0 -25
- package/src/app/shared/testing/tests.page.d.ts +0 -20
- package/src/app/shared/toast/toast.testing.d.ts +0 -15
- package/src/app/shared/toast/toast.testing.module.d.ts +0 -12
- package/src/app/shared/toast/toasts.d.ts +0 -16
- package/src/app/shared/toolbar/modal-toolbar.d.ts +0 -21
- package/src/app/shared/toolbar/toolbar.d.ts +0 -70
- package/src/app/shared/toolbar/toolbar.module.d.ts +0 -16
- package/src/app/shared/types.d.ts +0 -36
- package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +0 -21
- package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +0 -11
- package/src/app/shared/upload-file/upload-file-popover.component.d.ts +0 -41
- package/src/app/shared/upload-file/upload-file.component.d.ts +0 -50
- package/src/app/shared/upload-file/upload-file.model.d.ts +0 -30
- package/src/app/shared/validator/form-error-adapter.class.d.ts +0 -33
- package/src/app/shared/validator/validators.d.ts +0 -139
- package/src/app/shared/version/versions.d.ts +0 -26
- package/src/app/social/job/job.module.d.ts +0 -12
- package/src/app/social/job/progression/job-progression.component.d.ts +0 -23
- package/src/app/social/job/progression/job-progression.icon.d.ts +0 -62
- package/src/app/social/job/progression/job-progression.list.d.ts +0 -19
- package/src/app/social/job/progression/job-progression.model.d.ts +0 -10
- package/src/app/social/job/progression/job-progression.service.d.ts +0 -33
- package/src/app/social/job/testing/job-progression.testing.d.ts +0 -13
- package/src/app/social/job/testing/job-progression.testing.service.d.ts +0 -9
- package/src/app/social/job/testing/job.testing.module.d.ts +0 -11
- package/src/app/social/message/message.form.d.ts +0 -36
- package/src/app/social/message/message.modal.d.ts +0 -43
- package/src/app/social/message/message.model.d.ts +0 -33
- package/src/app/social/message/message.module.d.ts +0 -12
- package/src/app/social/message/message.service.d.ts +0 -32
- package/src/app/social/social.errors.d.ts +0 -9
- package/src/app/social/social.module.d.ts +0 -20
- package/src/app/social/social.testing.module.d.ts +0 -13
- package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +0 -32
- package/src/app/social/user-event/notification/user-event-notification.list.d.ts +0 -71
- package/src/app/social/user-event/testing/user-event.testing.d.ts +0 -35
- package/src/app/social/user-event/testing/user-event.testing.model.d.ts +0 -42
- package/src/app/social/user-event/testing/user-event.testing.module.d.ts +0 -11
- package/src/app/social/user-event/testing/user-event.testing.service.d.ts +0 -42
- package/src/app/social/user-event/user-event.model.d.ts +0 -44
- package/src/app/social/user-event/user-event.module.d.ts +0 -13
- package/src/app/social/user-event/user-event.service.d.ts +0 -124
- package/src/environments/environment.class.d.ts +0 -75
- package/src/environments/environment.d.ts +0 -2
- package/src/environments/environment.loader.d.ts +0 -24
|
@@ -1,305 +0,0 @@
|
|
|
1
|
-
import { Toasts } from '../toast/toasts';
|
|
2
|
-
import { Inject, Injectable } from '@angular/core';
|
|
3
|
-
import { DOCUMENT } from '@angular/common';
|
|
4
|
-
import { isNil, isNilOrBlank, isNotNil, isNotNilOrBlank } from '../functions';
|
|
5
|
-
import { waitForTrue } from '../observables';
|
|
6
|
-
import { mergeMap, timer } from 'rxjs';
|
|
7
|
-
import { isChrome } from '../platforms';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@ionic/angular";
|
|
10
|
-
import * as i2 from "@ngx-translate/core";
|
|
11
|
-
import * as i3 from "../storage/storage.service";
|
|
12
|
-
export const PRINT_LOADING_STORAGE_KEY_PREFIX = 'print-loading-';
|
|
13
|
-
export const PRINT_ID_QUERY_PARAM = 'print-id';
|
|
14
|
-
export class PrintService {
|
|
15
|
-
toastController;
|
|
16
|
-
translate;
|
|
17
|
-
storage;
|
|
18
|
-
document;
|
|
19
|
-
_printId = 0;
|
|
20
|
-
constructor(toastController, translate, storage, document) {
|
|
21
|
-
this.toastController = toastController;
|
|
22
|
-
this.translate = translate;
|
|
23
|
-
this.storage = storage;
|
|
24
|
-
this.document = document;
|
|
25
|
-
}
|
|
26
|
-
nextJobId() {
|
|
27
|
-
return ++this._printId;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Extracts and returns the job ID from a given URL.
|
|
31
|
-
*
|
|
32
|
-
* @param {string} [url] - The URL from which to extract the job ID. If not provided, `window.location.href` will be used.
|
|
33
|
-
* @return {number | undefined} The extracted job ID as a number, or `undefined` if the job ID is not present or invalid.
|
|
34
|
-
*/
|
|
35
|
-
getJobId(url) {
|
|
36
|
-
url = url || window.location.href;
|
|
37
|
-
const matches = url.match(/print-id=(\d+)/);
|
|
38
|
-
return matches?.[1] || undefined;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Determines whether the provided URL or the current page's URL contains
|
|
42
|
-
* a specific query parameter, indicating it's a printing-related URL.
|
|
43
|
-
*
|
|
44
|
-
* @param {string} [url] - The optional URL to check. If not provided, the current page's URL is used.
|
|
45
|
-
* @param {string} [queryParam='print-id'] - The query parameter to look for, defaulting to 'print-id'.
|
|
46
|
-
* @return {boolean} Returns true if the query parameter is found in the URL; otherwise, false.
|
|
47
|
-
*/
|
|
48
|
-
isPrintingUrl(url, queryParam = 'print-id') {
|
|
49
|
-
let query;
|
|
50
|
-
if (isNotNilOrBlank(url))
|
|
51
|
-
query = new URL(url).search;
|
|
52
|
-
query = query || window.location.search || '?';
|
|
53
|
-
return query.indexOf(queryParam) !== -1;
|
|
54
|
-
}
|
|
55
|
-
async printElement(element, opts) {
|
|
56
|
-
if (!element)
|
|
57
|
-
throw new Error("Missing required 'element' argument");
|
|
58
|
-
return this.printHTML(element.innerHTML, opts);
|
|
59
|
-
}
|
|
60
|
-
async printHTML(html, opts) {
|
|
61
|
-
if (!html)
|
|
62
|
-
throw new Error("Missing required 'html' argument");
|
|
63
|
-
// Create iframe
|
|
64
|
-
const iframe = this.createPrintIframeByHtml(html, opts);
|
|
65
|
-
return this.printIframe(iframe, opts);
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Prints the content of a URL by rendering it in an iframe.
|
|
69
|
-
*
|
|
70
|
-
* @param {string} url The URL of the content to print. This parameter is required.
|
|
71
|
-
* @param {Omit<PrintOptions, 'style'>} [opts] Optional settings for printing, excluding the 'style' option.
|
|
72
|
-
* @return {Promise<number>} A promise that resolves to the ID of the print job.
|
|
73
|
-
*/
|
|
74
|
-
async printUrl(url, opts) {
|
|
75
|
-
if (isNilOrBlank(url))
|
|
76
|
-
throw new Error("Missing required 'url' argument");
|
|
77
|
-
const jobId = opts?.id ?? this.nextJobId();
|
|
78
|
-
// Create iframe
|
|
79
|
-
const iframe = this.createPrintIframeByUrl(url, { id: jobId });
|
|
80
|
-
// Launch the print job
|
|
81
|
-
return this.printIframe(iframe, opts);
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Prints the content of the specified iframe element.
|
|
85
|
-
*
|
|
86
|
-
* @param {HTMLIFrameElement} iframe - The iframe element whose content needs to be printed. Must be a valid and loaded iframe element.
|
|
87
|
-
* @param {PrintOptions} [opts] - Optional parameters for the print operation, which may include options for toast messages and job configuration.
|
|
88
|
-
* @return {Promise<number>} A promise that resolves to the unique ID of the print job.
|
|
89
|
-
* @throws Will throw an error if the required 'iframe' argument is missing or invalid.
|
|
90
|
-
*/
|
|
91
|
-
async printIframe(iframe, opts) {
|
|
92
|
-
if (!iframe)
|
|
93
|
-
throw new Error("Missing required 'iframe' argument");
|
|
94
|
-
const jobId = opts?.id ?? this.nextJobId();
|
|
95
|
-
const toastId = `printing-${jobId}`;
|
|
96
|
-
const showLoadingToast = opts?.showToast !== false;
|
|
97
|
-
if (showLoadingToast)
|
|
98
|
-
await this.showToast({
|
|
99
|
-
id: toastId,
|
|
100
|
-
message: opts?.toastMessage || 'COMMON.PLEASE_WAIT',
|
|
101
|
-
duration: 0,
|
|
102
|
-
});
|
|
103
|
-
try {
|
|
104
|
-
// Wait end of iframe load
|
|
105
|
-
await this.waitIdle(iframe, { id: jobId });
|
|
106
|
-
// Print (and wait end of print)
|
|
107
|
-
await this.print(iframe);
|
|
108
|
-
return jobId;
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
console.error('[print-service] Failed to create hidden iframe', err);
|
|
112
|
-
}
|
|
113
|
-
finally {
|
|
114
|
-
iframe.remove();
|
|
115
|
-
if (showLoadingToast)
|
|
116
|
-
await this.toastController.dismiss(null, null, toastId);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
async markAsLoading(id) {
|
|
120
|
-
console.debug(`[print-service] Mark print job #${id} as loading`);
|
|
121
|
-
await this.storage.set(PRINT_LOADING_STORAGE_KEY_PREFIX + id, '1');
|
|
122
|
-
}
|
|
123
|
-
async markAsLoaded(id) {
|
|
124
|
-
console.debug(`[print-service] Mark print job #${id} as loaded`);
|
|
125
|
-
await this.storage.remove(PRINT_LOADING_STORAGE_KEY_PREFIX + id);
|
|
126
|
-
}
|
|
127
|
-
async isLoaded(id) {
|
|
128
|
-
const result = await this.storage.get(PRINT_LOADING_STORAGE_KEY_PREFIX + id);
|
|
129
|
-
return isNil(result);
|
|
130
|
-
}
|
|
131
|
-
async isLoading(id) {
|
|
132
|
-
return !(await this.isLoaded(id));
|
|
133
|
-
}
|
|
134
|
-
/* -- protected functions -- */
|
|
135
|
-
createPrintIframeByUrl(url, opts) {
|
|
136
|
-
// Make sure to add the job id inside the URL (e.g. to allow getJobIdFromUrl() to retrieve it)
|
|
137
|
-
if (isNotNil(opts?.id)) {
|
|
138
|
-
const newUrl = new URL(url);
|
|
139
|
-
newUrl.searchParams.set(PRINT_ID_QUERY_PARAM, '' + opts.id);
|
|
140
|
-
url = newUrl.href;
|
|
141
|
-
}
|
|
142
|
-
// Create a iframe with the given url
|
|
143
|
-
const iframe = this.document.createElement('iframe');
|
|
144
|
-
iframe.classList.add('cdk-visually-hidden');
|
|
145
|
-
iframe.style.width = '100%';
|
|
146
|
-
iframe.style.height = '100%';
|
|
147
|
-
this.document.body.appendChild(iframe);
|
|
148
|
-
iframe.src = url;
|
|
149
|
-
return iframe;
|
|
150
|
-
}
|
|
151
|
-
createPrintIframeByHtml(html, opts) {
|
|
152
|
-
if (!html)
|
|
153
|
-
throw new Error("Missing required 'html' argument");
|
|
154
|
-
const lang = this.document.documentElement?.lang || 'en';
|
|
155
|
-
// Create an empty iframe
|
|
156
|
-
const iframe = this.document.createElement('iframe');
|
|
157
|
-
iframe.classList.add('cdk-visually-hidden');
|
|
158
|
-
iframe.style.width = '100%';
|
|
159
|
-
iframe.style.height = '100%';
|
|
160
|
-
this.document.body.appendChild(iframe);
|
|
161
|
-
// Write iframe content
|
|
162
|
-
const iframeDocument = iframe.contentDocument || iframe.contentWindow?.document;
|
|
163
|
-
if (iframeDocument) {
|
|
164
|
-
iframeDocument.open();
|
|
165
|
-
iframeDocument.write(`
|
|
166
|
-
<!DOCTYPE html>
|
|
167
|
-
<html lang="${lang}" class="print-pdf">
|
|
168
|
-
<head>
|
|
169
|
-
<title>${opts?.title || ''}</title>
|
|
170
|
-
<style>
|
|
171
|
-
@media print {
|
|
172
|
-
body {
|
|
173
|
-
font-family: 'Roboto', Helvetica, Arial, sans-serif;
|
|
174
|
-
margin: 0;
|
|
175
|
-
padding: 0;
|
|
176
|
-
overflow: hidden;
|
|
177
|
-
}
|
|
178
|
-
img {
|
|
179
|
-
max-width: 100%;
|
|
180
|
-
height: auto;
|
|
181
|
-
page-break-inside: avoid;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
${opts?.inlineStyle || ''}
|
|
185
|
-
</style>
|
|
186
|
-
</head>
|
|
187
|
-
<body>
|
|
188
|
-
${html}
|
|
189
|
-
</body>
|
|
190
|
-
</html>
|
|
191
|
-
`);
|
|
192
|
-
iframeDocument.close();
|
|
193
|
-
}
|
|
194
|
-
// Set iframe style
|
|
195
|
-
// FIXME - Ignore style injection, because it failed in Firefox (e.g. on user manual) and Chrome (e.g. in privacy policy)
|
|
196
|
-
// Nothing appear in the print dialog
|
|
197
|
-
//this.applyDocumentStyleToIframe(iframe);
|
|
198
|
-
return iframe;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Applies the styles from the provided document, including external stylesheets and inline styles,
|
|
202
|
-
* to the specified iframe's document.
|
|
203
|
-
*
|
|
204
|
-
* @param {HTMLIFrameElement} iframe - The iframe to which the styles are applied.
|
|
205
|
-
* @return {void} Does not return a value.
|
|
206
|
-
*/
|
|
207
|
-
applyDocumentStyleToIframe(iframe) {
|
|
208
|
-
const iframeDocument = iframe.contentDocument || iframe.contentWindow?.document;
|
|
209
|
-
if (iframeDocument) {
|
|
210
|
-
// Récupérer tous les styles (liens CSS)
|
|
211
|
-
const links = Array.from(this.document.querySelectorAll('style,link[rel="stylesheet"]'));
|
|
212
|
-
links.forEach((element) => {
|
|
213
|
-
// Insert inline style
|
|
214
|
-
if (element.tagName === 'STYLE') {
|
|
215
|
-
const newStyle = iframeDocument.createElement('style');
|
|
216
|
-
newStyle.innerHTML = element.innerHTML;
|
|
217
|
-
iframeDocument.head.appendChild(newStyle);
|
|
218
|
-
console.debug('[print-service] Add style to iframe', newStyle);
|
|
219
|
-
}
|
|
220
|
-
// Insert link to stylesheet file
|
|
221
|
-
else if (element.tagName === 'LINK' && element.getAttribute('href')) {
|
|
222
|
-
const newLink = iframeDocument.createElement('link');
|
|
223
|
-
newLink.rel = 'stylesheet';
|
|
224
|
-
newLink.href = element.getAttribute('href');
|
|
225
|
-
iframeDocument.head.appendChild(newLink);
|
|
226
|
-
console.debug('[print-service] Add stylesheet to iframe: ', newLink.href);
|
|
227
|
-
}
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
async waitIdle(iframe, opts) {
|
|
232
|
-
// Wait job finished
|
|
233
|
-
const printId = opts?.id ?? this._printId;
|
|
234
|
-
await waitForTrue(timer(500, 500).pipe(mergeMap(() => this.isLoaded(printId))), { timeout: opts?.timeout });
|
|
235
|
-
// Wait end of iframe load
|
|
236
|
-
await new Promise((resolve, reject) => {
|
|
237
|
-
const iframeWindow = iframe.contentWindow?.window || iframe.contentWindow;
|
|
238
|
-
if (iframeWindow.document.readyState === 'complete') {
|
|
239
|
-
resolve();
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
// Stop if timeout reached
|
|
243
|
-
if (opts?.timeout > 0) {
|
|
244
|
-
setTimeout(() => reject('timeout'), opts.timeout);
|
|
245
|
-
}
|
|
246
|
-
const readyListener = () => {
|
|
247
|
-
if (iframeWindow.document.readyState === 'complete') {
|
|
248
|
-
resolve();
|
|
249
|
-
iframeWindow.document.removeEventListener('readystatechange', readyListener);
|
|
250
|
-
}
|
|
251
|
-
};
|
|
252
|
-
iframeWindow.document.addEventListener('readystatechange', readyListener);
|
|
253
|
-
}
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* Triggers the print functionality of the given iframe and resolves or rejects based on the print completion or timeout.
|
|
258
|
-
*
|
|
259
|
-
* @param {HTMLIFrameElement} iframe - The iframe element to be printed.
|
|
260
|
-
* @param {{timeout?: number}} [opts] - An optional configuration object.
|
|
261
|
-
* @param {number} [opts.timeout] - The maximum time in milliseconds to wait for the print to complete before rejecting the promise.
|
|
262
|
-
* @return {Promise<void>} A promise that resolves after the print is completed or rejects if a timeout occurs.
|
|
263
|
-
*/
|
|
264
|
-
print(iframe, opts) {
|
|
265
|
-
return new Promise((resolve, reject) => {
|
|
266
|
-
const iframeWindow = iframe.contentWindow?.window || iframe.contentWindow;
|
|
267
|
-
// Stop if timeout reached
|
|
268
|
-
if (opts?.timeout > 0) {
|
|
269
|
-
setTimeout(() => reject('timeout'), opts.timeout);
|
|
270
|
-
}
|
|
271
|
-
// On Chrome
|
|
272
|
-
if (isChrome(window)) {
|
|
273
|
-
// Wait after print event, to resolve the promise
|
|
274
|
-
const afterPrintListener = () => {
|
|
275
|
-
console.debug('[print-service] After print');
|
|
276
|
-
resolve();
|
|
277
|
-
// Remove the listener
|
|
278
|
-
iframeWindow.removeEventListener('afterprint', afterPrintListener);
|
|
279
|
-
};
|
|
280
|
-
iframeWindow.addEventListener('afterprint', afterPrintListener);
|
|
281
|
-
iframe.contentWindow.window.print();
|
|
282
|
-
}
|
|
283
|
-
// Otherwise (e.g. Firefox)
|
|
284
|
-
else {
|
|
285
|
-
iframe.contentWindow.window.print();
|
|
286
|
-
resolve();
|
|
287
|
-
}
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
async showToast(opts) {
|
|
291
|
-
if (!this.toastController)
|
|
292
|
-
throw new Error("Missing toastController in component's constructor");
|
|
293
|
-
return await Toasts.show(this.toastController, this.translate, opts);
|
|
294
|
-
}
|
|
295
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PrintService, deps: [{ token: i1.ToastController }, { token: i2.TranslateService }, { token: i3.StorageService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
296
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PrintService, providedIn: 'root' });
|
|
297
|
-
}
|
|
298
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PrintService, decorators: [{
|
|
299
|
-
type: Injectable,
|
|
300
|
-
args: [{ providedIn: 'root' }]
|
|
301
|
-
}], ctorParameters: () => [{ type: i1.ToastController }, { type: i2.TranslateService }, { type: i3.StorageService }, { type: Document, decorators: [{
|
|
302
|
-
type: Inject,
|
|
303
|
-
args: [DOCUMENT]
|
|
304
|
-
}] }] });
|
|
305
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3ByaW50L3ByaW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUkzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7QUFVeEMsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsZ0JBQWdCLENBQUM7QUFDakUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDO0FBRy9DLE1BQU0sT0FBTyxZQUFZO0lBSVg7SUFDQTtJQUNBO0lBQ2tCO0lBTnRCLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFckIsWUFDWSxlQUFnQyxFQUNoQyxTQUEyQixFQUMzQixPQUF1QixFQUNMLFFBQWtCO1FBSHBDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNMLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDN0MsQ0FBQztJQUVKLFNBQVM7UUFDUCxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFR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UUFDakcsT0FBTyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7d0dBdlRVLFlBQVksK0dBT2IsUUFBUTs0R0FQUCxZQUFZLGNBREMsTUFBTTs7NEZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFRN0IsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hvd1RvYXN0T3B0aW9ucywgVG9hc3RzIH0gZnJvbSAnLi4vdG9hc3QvdG9hc3RzJztcbmltcG9ydCB7IE92ZXJsYXlFdmVudERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IFRvYXN0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yYWdlL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBpc05pbCwgaXNOaWxPckJsYW5rLCBpc05vdE5pbCwgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IHdhaXRGb3JUcnVlIH0gZnJvbSAnLi4vb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHsgbWVyZ2VNYXAsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc0Nocm9tZSB9IGZyb20gJy4uL3BsYXRmb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpbnRPcHRpb25zIHtcbiAgaWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBzaG93VG9hc3Q/OiBib29sZWFuO1xuICB0b2FzdE1lc3NhZ2U/OiBzdHJpbmc7XG4gIHN0eWxlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgUFJJTlRfTE9BRElOR19TVE9SQUdFX0tFWV9QUkVGSVggPSAncHJpbnQtbG9hZGluZy0nO1xuZXhwb3J0IGNvbnN0IFBSSU5UX0lEX1FVRVJZX1BBUkFNID0gJ3ByaW50LWlkJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQcmludFNlcnZpY2Uge1xuICBwcml2YXRlIF9wcmludElkID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdG9hc3RDb250cm9sbGVyOiBUb2FzdENvbnRyb2xsZXIsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc3RvcmFnZTogU3RvcmFnZVNlcnZpY2UsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJvdGVjdGVkIGRvY3VtZW50OiBEb2N1bWVudFxuICApIHt9XG5cbiAgbmV4dEpvYklkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICsrdGhpcy5fcHJpbnRJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyBhbmQgcmV0dXJucyB0aGUgam9iIElEIGZyb20gYSBnaXZlbiBVUkwuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbdXJsXSAtIFRoZSBVUkwgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBqb2IgSUQuIElmIG5vdCBwcm92aWRlZCwgYHdpbmRvdy5sb2NhdGlvbi5ocmVmYCB3aWxsIGJlIHVzZWQuXG4gICAqIEByZXR1cm4ge251bWJlciB8IHVuZGVmaW5lZH0gVGhlIGV4dHJhY3RlZCBqb2IgSUQgYXMgYSBudW1iZXIsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBqb2IgSUQgaXMgbm90IHByZXNlbnQgb3IgaW52YWxpZC5cbiAgICovXG4gIGdldEpvYklkKHVybD86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgdXJsID0gdXJsIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIGNvbnN0IG1hdGNoZXMgPSB1cmwubWF0Y2goL3ByaW50LWlkPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaGVzPy5bMV0gfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgcHJvdmlkZWQgVVJMIG9yIHRoZSBjdXJyZW50IHBhZ2UncyBVUkwgY29udGFpbnNcbiAgICogYSBzcGVjaWZpYyBxdWVyeSBwYXJhbWV0ZXIsIGluZGljYXRpbmcgaXQncyBhIHByaW50aW5nLXJlbGF0ZWQgVVJMLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3VybF0gLSBUaGUgb3B0aW9uYWwgVVJMIHRvIGNoZWNrLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IHBhZ2UncyBVUkwgaXMgdXNlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtxdWVyeVBhcmFtPSdwcmludC1pZCddIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlciB0byBsb29rIGZvciwgZGVmYXVsdGluZyB0byAncHJpbnQtaWQnLlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBSZXR1cm5zIHRydWUgaWYgdGhlIHF1ZXJ5IHBhcmFtZXRlciBpcyBmb3VuZCBpbiB0aGUgVVJMOyBvdGhlcndpc2UsIGZhbHNlLlxuICAgKi9cbiAgaXNQcmludGluZ1VybCh1cmw/OiBzdHJpbmcsIHF1ZXJ5UGFyYW06IHN0cmluZyA9ICdwcmludC1pZCcpOiBib29sZWFuIHtcbiAgICBsZXQgcXVlcnk6IHN0cmluZztcbiAgICBpZiAoaXNOb3ROaWxPckJsYW5rKHVybCkpIHF1ZXJ5ID0gbmV3IFVSTCh1cmwpLnNlYXJjaDtcbiAgICBxdWVyeSA9IHF1ZXJ5IHx8IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggfHwgJz8nO1xuICAgIHJldHVybiBxdWVyeS5pbmRleE9mKHF1ZXJ5UGFyYW0pICE9PSAtMTtcbiAgfVxuXG4gIGFzeW5jIHByaW50RWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCwgb3B0cz86IFByaW50T3B0aW9ucyk6IFByb21pc2U8bnVtYmVyIHwgc3RyaW5nPiB7XG4gICAgaWYgKCFlbGVtZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHJlcXVpcmVkICdlbGVtZW50JyBhcmd1bWVudFwiKTtcblxuICAgIHJldHVybiB0aGlzLnByaW50SFRNTChlbGVtZW50LmlubmVySFRNTCwgb3B0cyk7XG4gIH1cblxuICBhc3luYyBwcmludEhUTUwoaHRtbDogc3RyaW5nLCBvcHRzPzogUHJpbnRPcHRpb25zKTogUHJvbWlzZTxudW1iZXIgfCBzdHJpbmc+IHtcbiAgICBpZiAoIWh0bWwpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgJ2h0bWwnIGFyZ3VtZW50XCIpO1xuXG4gICAgLy8gQ3JlYXRlIGlmcmFtZVxuICAgIGNvbnN0IGlmcmFtZSA9IHRoaXMuY3JlYXRlUHJpbnRJZnJhbWVCeUh0bWwoaHRtbCwgb3B0cyk7XG5cbiAgICByZXR1cm4gdGhpcy5wcmludElmcmFtZShpZnJhbWUsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaW50cyB0aGUgY29udGVudCBvZiBhIFVSTCBieSByZW5kZXJpbmcgaXQgaW4gYW4gaWZyYW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgb2YgdGhlIGNvbnRlbnQgdG8gcHJpbnQuIFRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkLlxuICAgKiBAcGFyYW0ge09taXQ8UHJpbnRPcHRpb25zLCAnc3R5bGUnPn0gW29wdHNdIE9wdGlvbmFsIHNldHRpbmdzIGZvciBwcmludGluZywgZXhjbHVkaW5nIHRoZSAnc3R5bGUnIG9wdGlvbi5cbiAgICogQHJldHVybiB7UHJvbWlzZTxudW1iZXI+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgSUQgb2YgdGhlIHByaW50IGpvYi5cbiAgICovXG4gIGFzeW5jIHByaW50VXJsKHVybDogc3RyaW5nLCBvcHRzPzogT21pdDxQcmludE9wdGlvbnMsICdzdHlsZSc+KTogUHJvbWlzZTxudW1iZXIgfCBzdHJpbmc+IHtcbiAgICBpZiAoaXNOaWxPckJsYW5rKHVybCkpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgJ3VybCcgYXJndW1lbnRcIik7XG5cbiAgICBjb25zdCBqb2JJZCA9IG9wdHM/LmlkID8/IHRoaXMubmV4dEpvYklkKCk7XG5cbiAgICAvLyBDcmVhdGUgaWZyYW1lXG4gICAgY29uc3QgaWZyYW1lID0gdGhpcy5jcmVhdGVQcmludElmcmFtZUJ5VXJsKHVybCwgeyBpZDogam9iSWQgfSk7XG5cbiAgICAvLyBMYXVuY2ggdGhlIHByaW50IGpvYlxuICAgIHJldHVybiB0aGlzLnByaW50SWZyYW1lKGlmcmFtZSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogUHJpbnRzIHRoZSBjb250ZW50IG9mIHRoZSBzcGVjaWZpZWQgaWZyYW1lIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7SFRNTElGcmFtZUVsZW1lbnR9IGlmcmFtZSAtIFRoZSBpZnJhbWUgZWxlbWVudCB3aG9zZSBjb250ZW50IG5lZWRzIHRvIGJlIHByaW50ZWQuIE11c3QgYmUgYSB2YWxpZCBhbmQgbG9hZGVkIGlmcmFtZSBlbGVtZW50LlxuICAgKiBAcGFyYW0ge1ByaW50T3B0aW9uc30gW29wdHNdIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIHByaW50IG9wZXJhdGlvbiwgd2hpY2ggbWF5IGluY2x1ZGUgb3B0aW9ucyBmb3IgdG9hc3QgbWVzc2FnZXMgYW5kIGpvYiBjb25maWd1cmF0aW9uLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPG51bWJlcj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSB1bmlxdWUgSUQgb2YgdGhlIHByaW50IGpvYi5cbiAgICogQHRocm93cyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSByZXF1aXJlZCAnaWZyYW1lJyBhcmd1bWVudCBpcyBtaXNzaW5nIG9yIGludmFsaWQuXG4gICAqL1xuICBhc3luYyBwcmludElmcmFtZShpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50LCBvcHRzPzogUHJpbnRPcHRpb25zKTogUHJvbWlzZTxudW1iZXIgfCBzdHJpbmc+IHtcbiAgICBpZiAoIWlmcmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyByZXF1aXJlZCAnaWZyYW1lJyBhcmd1bWVudFwiKTtcblxuICAgIGNvbnN0IGpvYklkID0gb3B0cz8uaWQgPz8gdGhpcy5uZXh0Sm9iSWQoKTtcbiAgICBjb25zdCB0b2FzdElkID0gYHByaW50aW5nLSR7am9iSWR9YDtcbiAgICBjb25zdCBzaG93TG9hZGluZ1RvYXN0ID0gb3B0cz8uc2hvd1RvYXN0ICE9PSBmYWxzZTtcbiAgICBpZiAoc2hvd0xvYWRpbmdUb2FzdClcbiAgICAgIGF3YWl0IHRoaXMuc2hvd1RvYXN0KHtcbiAgICAgICAgaWQ6IHRvYXN0SWQsXG4gICAgICAgIG1lc3NhZ2U6IG9wdHM/LnRvYXN0TWVzc2FnZSB8fCAnQ09NTU9OLlBMRUFTRV9XQUlUJyxcbiAgICAgICAgZHVyYXRpb246IDAsXG4gICAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBXYWl0IGVuZCBvZiBpZnJhbWUgbG9hZFxuICAgICAgYXdhaXQgdGhpcy53YWl0SWRsZShpZnJhbWUsIHsgaWQ6IGpvYklkIH0pO1xuXG4gICAgICAvLyBQcmludCAoYW5kIHdhaXQgZW5kIG9mIHByaW50KVxuICAgICAgYXdhaXQgdGhpcy5wcmludChpZnJhbWUpO1xuXG4gICAgICByZXR1cm4gam9iSWQ7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbcHJpbnQtc2VydmljZV0gRmFpbGVkIHRvIGNyZWF0ZSBoaWRkZW4gaWZyYW1lJywgZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWZyYW1lLnJlbW92ZSgpO1xuICAgICAgaWYgKHNob3dMb2FkaW5nVG9hc3QpIGF3YWl0IHRoaXMudG9hc3RDb250cm9sbGVyLmRpc21pc3MobnVsbCwgbnVsbCwgdG9hc3RJZCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbWFya0FzTG9hZGluZyhpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgY29uc29sZS5kZWJ1ZyhgW3ByaW50LXNlcnZpY2VdIE1hcmsgcHJpbnQgam9iICMke2lkfSBhcyBsb2FkaW5nYCk7XG4gICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChQUklOVF9MT0FESU5HX1NUT1JBR0VfS0VZX1BSRUZJWCArIGlkLCAnMScpO1xuICB9XG5cbiAgYXN5bmMgbWFya0FzTG9hZGVkKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBjb25zb2xlLmRlYnVnKGBbcHJpbnQtc2VydmljZV0gTWFyayBwcmludCBqb2IgIyR7aWR9IGFzIGxvYWRlZGApO1xuICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5yZW1vdmUoUFJJTlRfTE9BRElOR19TVE9SQUdFX0tFWV9QUkVGSVggKyBpZCk7XG4gIH1cblxuICBhc3luYyBpc0xvYWRlZChpZDogc3RyaW5nIHwgbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldChQUklOVF9MT0FESU5HX1NUT1JBR0VfS0VZX1BSRUZJWCArIGlkKTtcbiAgICByZXR1cm4gaXNOaWwocmVzdWx0KTtcbiAgfVxuXG4gIGFzeW5jIGlzTG9hZGluZyhpZDogc3RyaW5nIHwgbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuICEoYXdhaXQgdGhpcy5pc0xvYWRlZChpZCkpO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIGZ1bmN0aW9ucyAtLSAqL1xuXG4gIHByb3RlY3RlZCBjcmVhdGVQcmludElmcmFtZUJ5VXJsKHVybDogc3RyaW5nLCBvcHRzPzogeyBpZD86IG51bWJlciB8IHN0cmluZyB9KTogSFRNTElGcmFtZUVsZW1lbnQge1xuICAgIC8vIE1ha2Ugc3VyZSB0byBhZGQgdGhlIGpvYiBpZCBpbnNpZGUgdGhlIFVSTCAoZS5nLiB0byBhbGxvdyBnZXRKb2JJZEZyb21VcmwoKSB0byByZXRyaWV2ZSBpdClcbiAgICBpZiAoaXNOb3ROaWwob3B0cz8uaWQpKSB7XG4gICAgICBjb25zdCBuZXdVcmwgPSBuZXcgVVJMKHVybCk7XG4gICAgICBuZXdVcmwuc2VhcmNoUGFyYW1zLnNldChQUklOVF9JRF9RVUVSWV9QQVJBTSwgJycgKyBvcHRzLmlkKTtcbiAgICAgIHVybCA9IG5ld1VybC5ocmVmO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhIGlmcmFtZSB3aXRoIHRoZSBnaXZlbiB1cmxcbiAgICBjb25zdCBpZnJhbWUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZS5jbGFzc0xpc3QuYWRkKCdjZGstdmlzdWFsbHktaGlkZGVuJyk7XG4gICAgaWZyYW1lLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIGlmcmFtZS5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gICAgaWZyYW1lLnNyYyA9IHVybDtcbiAgICByZXR1cm4gaWZyYW1lO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVByaW50SWZyYW1lQnlIdG1sKGh0bWw6IHN0cmluZywgb3B0cz86IHsgdGl0bGU/OiBzdHJpbmc7IGlubGluZVN0eWxlPzogc3RyaW5nIH0pOiBIVE1MSUZyYW1lRWxlbWVudCB7XG4gICAgaWYgKCFodG1sKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHJlcXVpcmVkICdodG1sJyBhcmd1bWVudFwiKTtcblxuICAgIGNvbnN0IGxhbmcgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudD8ubGFuZyB8fCAnZW4nO1xuXG4gICAgLy8gQ3JlYXRlIGFuIGVtcHR5IGlmcmFtZVxuICAgIGNvbnN0IGlmcmFtZSA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgaWZyYW1lLmNsYXNzTGlzdC5hZGQoJ2Nkay12aXN1YWxseS1oaWRkZW4nKTtcbiAgICBpZnJhbWUuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgaWZyYW1lLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcblxuICAgIC8vIFdyaXRlIGlmcmFtZSBjb250ZW50XG4gICAgY29uc3QgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudERvY3VtZW50IHx8IGlmcmFtZS5jb250ZW50V2luZG93Py5kb2N1bWVudDtcbiAgICBpZiAoaWZyYW1lRG9jdW1lbnQpIHtcbiAgICAgIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgICAgIGlmcmFtZURvY3VtZW50LndyaXRlKGBcbiAgICAgICAgPCFET0NUWVBFIGh0bWw+XG4gICAgICAgIDxodG1sIGxhbmc9XCIke2xhbmd9XCIgY2xhc3M9XCJwcmludC1wZGZcIj5cbiAgICAgICAgICA8aGVhZD5cbiAgICAgICAgICAgIDx0aXRsZT4ke29wdHM/LnRpdGxlIHx8ICcnfTwvdGl0bGU+XG4gICAgICAgICAgICA8c3R5bGU+XG4gICAgICAgICAgICBAbWVkaWEgcHJpbnQge1xuICAgICAgICAgICAgICBib2R5IHtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJ1JvYm90bycsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAke29wdHM/LmlubGluZVN0eWxlIHx8ICcnfVxuICAgICAgICAgIDwvc3R5bGU+XG4gICAgICAgICAgPC9oZWFkPlxuICAgICAgICAgIDxib2R5PlxuICAgICAgICAgICAgJHtodG1sfVxuICAgICAgICAgIDwvYm9keT5cbiAgICAgICAgPC9odG1sPlxuICAgICAgYCk7XG4gICAgICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8vIFNldCBpZnJhbWUgc3R5bGVcbiAgICAvLyBGSVhNRSAtIElnbm9yZSBzdHlsZSBpbmplY3Rpb24sIGJlY2F1c2UgaXQgZmFpbGVkIGluIEZpcmVmb3ggKGUuZy4gb24gdXNlciBtYW51YWwpIGFuZCBDaHJvbWUgKGUuZy4gaW4gcHJpdmFjeSBwb2xpY3kpXG4gICAgLy8gICAgICAgICBOb3RoaW5nIGFwcGVhciBpbiB0aGUgcHJpbnQgZGlhbG9nXG4gICAgLy90aGlzLmFwcGx5RG9jdW1lbnRTdHlsZVRvSWZyYW1lKGlmcmFtZSk7XG5cbiAgICByZXR1cm4gaWZyYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIHN0eWxlcyBmcm9tIHRoZSBwcm92aWRlZCBkb2N1bWVudCwgaW5jbHVkaW5nIGV4dGVybmFsIHN0eWxlc2hlZXRzIGFuZCBpbmxpbmUgc3R5bGVzLFxuICAgKiB0byB0aGUgc3BlY2lmaWVkIGlmcmFtZSdzIGRvY3VtZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge0hUTUxJRnJhbWVFbGVtZW50fSBpZnJhbWUgLSBUaGUgaWZyYW1lIHRvIHdoaWNoIHRoZSBzdHlsZXMgYXJlIGFwcGxpZWQuXG4gICAqIEByZXR1cm4ge3ZvaWR9IERvZXMgbm90IHJldHVybiBhIHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFwcGx5RG9jdW1lbnRTdHlsZVRvSWZyYW1lKGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50RG9jdW1lbnQgfHwgaWZyYW1lLmNvbnRlbnRXaW5kb3c/LmRvY3VtZW50O1xuICAgIGlmIChpZnJhbWVEb2N1bWVudCkge1xuICAgICAgLy8gUsOpY3Vww6lyZXIgdG91cyBsZXMgc3R5bGVzIChsaWVucyBDU1MpXG4gICAgICBjb25zdCBsaW5rcyA9IEFycmF5LmZyb20odGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzdHlsZSxsaW5rW3JlbD1cInN0eWxlc2hlZXRcIl0nKSk7XG4gICAgICBsaW5rcy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIC8vIEluc2VydCBpbmxpbmUgc3R5bGVcbiAgICAgICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gJ1NUWUxFJykge1xuICAgICAgICAgIGNvbnN0IG5ld1N0eWxlID0gaWZyYW1lRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgICBuZXdTdHlsZS5pbm5lckhUTUwgPSBlbGVtZW50LmlubmVySFRNTDtcbiAgICAgICAgICBpZnJhbWVEb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG5ld1N0eWxlKTtcblxuICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1twcmludC1zZXJ2aWNlXSBBZGQgc3R5bGUgdG8gaWZyYW1lJywgbmV3U3R5bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5zZXJ0IGxpbmsgdG8gc3R5bGVzaGVldCBmaWxlXG4gICAgICAgIGVsc2UgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gJ0xJTksnICYmIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdocmVmJykpIHtcbiAgICAgICAgICBjb25zdCBuZXdMaW5rID0gaWZyYW1lRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgICAgICAgIG5ld0xpbmsucmVsID0gJ3N0eWxlc2hlZXQnO1xuICAgICAgICAgIG5ld0xpbmsuaHJlZiA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdocmVmJyk7XG4gICAgICAgICAgaWZyYW1lRG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChuZXdMaW5rKTtcblxuICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1twcmludC1zZXJ2aWNlXSBBZGQgc3R5bGVzaGVldCB0byBpZnJhbWU6ICcsIG5ld0xpbmsuaHJlZik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyB3YWl0SWRsZShpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50LCBvcHRzPzogeyBpZD86IG51bWJlciB8IHN0cmluZzsgdGltZW91dD86IG51bWJlciB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gV2FpdCBqb2IgZmluaXNoZWRcbiAgICBjb25zdCBwcmludElkID0gb3B0cz8uaWQgPz8gdGhpcy5fcHJpbnRJZDtcbiAgICBhd2FpdCB3YWl0Rm9yVHJ1ZSh0aW1lcig1MDAsIDUwMCkucGlwZShtZXJnZU1hcCgoKSA9PiB0aGlzLmlzTG9hZGVkKHByaW50SWQpKSksIHsgdGltZW91dDogb3B0cz8udGltZW91dCB9KTtcblxuICAgIC8vIFdhaXQgZW5kIG9mIGlmcmFtZSBsb2FkXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgaWZyYW1lV2luZG93ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c/LndpbmRvdyB8fCBpZnJhbWUuY29udGVudFdpbmRvdztcbiAgICAgIGlmIChpZnJhbWVXaW5kb3cuZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTdG9wIGlmIHRpbWVvdXQgcmVhY2hlZFxuICAgICAgICBpZiAob3B0cz8udGltZW91dCA+IDApIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgndGltZW91dCcpLCBvcHRzLnRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVhZHlMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgICAgICBpZiAoaWZyYW1lV2luZG93LmRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICAgICAgaWZyYW1lV2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3JlYWR5c3RhdGVjaGFuZ2UnLCByZWFkeUxpc3RlbmVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGlmcmFtZVdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgcmVhZHlMaXN0ZW5lcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcnMgdGhlIHByaW50IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGdpdmVuIGlmcmFtZSBhbmQgcmVzb2x2ZXMgb3IgcmVqZWN0cyBiYXNlZCBvbiB0aGUgcHJpbnQgY29tcGxldGlvbiBvciB0aW1lb3V0LlxuICAgKlxuICAgKiBAcGFyYW0ge0hUTUxJRnJhbWVFbGVtZW50fSBpZnJhbWUgLSBUaGUgaWZyYW1lIGVsZW1lbnQgdG8gYmUgcHJpbnRlZC5cbiAgICogQHBhcmFtIHt7dGltZW91dD86IG51bWJlcn19IFtvcHRzXSAtIEFuIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW29wdHMudGltZW91dF0gLSBUaGUgbWF4aW11bSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciB0aGUgcHJpbnQgdG8gY29tcGxldGUgYmVmb3JlIHJlamVjdGluZyB0aGUgcHJvbWlzZS5cbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgYWZ0ZXIgdGhlIHByaW50IGlzIGNvbXBsZXRlZCBvciByZWplY3RzIGlmIGEgdGltZW91dCBvY2N1cnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcHJpbnQoaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCwgb3B0cz86IHsgdGltZW91dD86IG51bWJlciB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGlmcmFtZVdpbmRvdyA9IGlmcmFtZS5jb250ZW50V2luZG93Py53aW5kb3cgfHwgaWZyYW1lLmNvbnRlbnRXaW5kb3c7XG5cbiAgICAgIC8vIFN0b3AgaWYgdGltZW91dCByZWFjaGVkXG4gICAgICBpZiAob3B0cz8udGltZW91dCA+IDApIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoJ3RpbWVvdXQnKSwgb3B0cy50aW1lb3V0KTtcbiAgICAgIH1cblxuICAgICAgLy8gT24gQ2hyb21lXG4gICAgICBpZiAoaXNDaHJvbWUod2luZG93KSkge1xuICAgICAgICAvLyBXYWl0IGFmdGVyIHByaW50IGV2ZW50LCB0byByZXNvbHZlIHRoZSBwcm9taXNlXG4gICAgICAgIGNvbnN0IGFmdGVyUHJpbnRMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKCdbcHJpbnQtc2VydmljZV0gQWZ0ZXIgcHJpbnQnKTtcblxuICAgICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICAgIC8vIFJlbW92ZSB0aGUgbGlzdGVuZXJcbiAgICAgICAgICBpZnJhbWVXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWZ0ZXJwcmludCcsIGFmdGVyUHJpbnRMaXN0ZW5lcik7XG4gICAgICAgIH07XG4gICAgICAgIGlmcmFtZVdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdhZnRlcnByaW50JywgYWZ0ZXJQcmludExpc3RlbmVyKTtcbiAgICAgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cud2luZG93LnByaW50KCk7XG4gICAgICB9XG5cbiAgICAgIC8vIE90aGVyd2lzZSAoZS5nLiBGaXJlZm94KVxuICAgICAgZWxzZSB7XG4gICAgICAgIGlmcmFtZS5jb250ZW50V2luZG93LndpbmRvdy5wcmludCgpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dUb2FzdDxUID0gYW55PihvcHRzOiBTaG93VG9hc3RPcHRpb25zKTogUHJvbWlzZTxPdmVybGF5RXZlbnREZXRhaWw8VD4+IHtcbiAgICBpZiAoIXRoaXMudG9hc3RDb250cm9sbGVyKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHRvYXN0Q29udHJvbGxlciBpbiBjb21wb25lbnQncyBjb25zdHJ1Y3RvclwiKTtcbiAgICByZXR1cm4gYXdhaXQgVG9hc3RzLnNob3codGhpcy50b2FzdENvbnRyb2xsZXIsIHRoaXMudHJhbnNsYXRlLCBvcHRzKTtcbiAgfVxufVxuIl19
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
export class RegExpUtils {
|
|
2
|
-
static _cachedSearchRegexps = {};
|
|
3
|
-
static _cachedSearchTexts = [];
|
|
4
|
-
static MAX_CACHE_SIZE = 100;
|
|
5
|
-
static SPECIAL_CHARACTERS_REGEXP = /[.\[\](){}\\$^|+*?]/g;
|
|
6
|
-
static SPECIAL_CHARACTERS_REPLACEMENT_MAP = {
|
|
7
|
-
// Escape some characters
|
|
8
|
-
'.': '[.]', // Escape point
|
|
9
|
-
'(': '\\(', // Escape parenthesis
|
|
10
|
-
')': '\\)', // Escape parenthesis
|
|
11
|
-
'[': '\\[', // Escape character class opening bracket
|
|
12
|
-
']': '\\]', // Escape character class closing bracket
|
|
13
|
-
'{': '\\{', // Escape quantifier opening brace
|
|
14
|
-
'}': '\\}', // Escape quantifier closing brace
|
|
15
|
-
'\\': '\\\\', // Escape backslash itself
|
|
16
|
-
$: '\\$', // Escape dollar sign
|
|
17
|
-
'^': '\\^', // Escape caret
|
|
18
|
-
'|': '\\|', // Escape pipe (alternation)
|
|
19
|
-
'+': '\\+', // Escape plus
|
|
20
|
-
// Transform wildcard characters to regexp
|
|
21
|
-
'?': '.', // Exactly one character
|
|
22
|
-
'*': '.*', // Zero or more character
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Cleans the provided search text by trimming whitespace and removing or condensing
|
|
26
|
-
* wildcard characters based on the specified options.
|
|
27
|
-
* (e.g. 'a**' becomes 'a', '*' becomes '', etc.)
|
|
28
|
-
*
|
|
29
|
-
* @param {string} searchText - The search text to be cleaned.
|
|
30
|
-
* @param {Object} [opts] - Optional settings for cleaning the search text.
|
|
31
|
-
* @param {boolean} [opts.anySearch] - If true, the search text is cleaned for any match. If false, search as a prefix
|
|
32
|
-
* @return {string} - The cleaned search text.
|
|
33
|
-
*/
|
|
34
|
-
static cleanSearchText(searchText, opts = { trim: true }) {
|
|
35
|
-
if (!searchText?.length)
|
|
36
|
-
return searchText;
|
|
37
|
-
// DEBUG
|
|
38
|
-
//console.debug(`[regexp-utils] Cleaning searchText '${searchText}'`);
|
|
39
|
-
searchText = searchText.replace(/[*]{2,}/g, '*'); // Replace many '*' into only one
|
|
40
|
-
// Trim whitespace
|
|
41
|
-
if (opts?.trim !== false) {
|
|
42
|
-
searchText = searchText.trim();
|
|
43
|
-
}
|
|
44
|
-
// Remove trailing wildcard characters
|
|
45
|
-
searchText = searchText.replace(/^[*]+$/g, '');
|
|
46
|
-
// Clean any match expression
|
|
47
|
-
if (searchText === '*')
|
|
48
|
-
return '';
|
|
49
|
-
return searchText;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Compiles a regular expression from the provided search text, using a static cache to store
|
|
53
|
-
* previously compiled regular expressions for faster retrieval.
|
|
54
|
-
*
|
|
55
|
-
* @param {string} searchText - The text to compile into a regular expression.
|
|
56
|
-
* @param flags
|
|
57
|
-
* @return {RegExp} - The compiled regular expression.
|
|
58
|
-
*/
|
|
59
|
-
static compileSearchRegexp(searchText, flags = 'gi') {
|
|
60
|
-
if (!searchText?.length)
|
|
61
|
-
return null;
|
|
62
|
-
// Use cached regexp if exists
|
|
63
|
-
const cacheKey = searchText + '|' + flags;
|
|
64
|
-
const cachedRegexp = this._cachedSearchRegexps[cacheKey];
|
|
65
|
-
if (cachedRegexp)
|
|
66
|
-
return cachedRegexp;
|
|
67
|
-
const searchRegexpText = searchText.replace(this.SPECIAL_CHARACTERS_REGEXP, (match) => this.SPECIAL_CHARACTERS_REPLACEMENT_MAP[match] || match);
|
|
68
|
-
// DEBUG
|
|
69
|
-
//console.debug(`[regexp-utils] Computing new regexp '${searchRegexpText}' from searchText '${searchText}'`);
|
|
70
|
-
const regexp = new RegExp(`[ ]*${searchRegexpText}`, flags);
|
|
71
|
-
// If cache is full: remove older cache element
|
|
72
|
-
if (this._cachedSearchTexts.length >= this.MAX_CACHE_SIZE) {
|
|
73
|
-
// DEBUG
|
|
74
|
-
//console.debug('[regexp-utils] Removing older cached regexp');
|
|
75
|
-
// Clear half cache's elements
|
|
76
|
-
while (this._cachedSearchTexts.length > this.MAX_CACHE_SIZE / 2) {
|
|
77
|
-
const cacheKeyToEvict = this._cachedSearchTexts.shift();
|
|
78
|
-
delete this._cachedSearchRegexps[cacheKeyToEvict];
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
// Add to static cache
|
|
82
|
-
this._cachedSearchRegexps[cacheKey] = regexp;
|
|
83
|
-
this._cachedSearchTexts.push(cacheKey);
|
|
84
|
-
return regexp;
|
|
85
|
-
}
|
|
86
|
-
static match(input, regexp) {
|
|
87
|
-
return !!input?.match(regexp) || false;
|
|
88
|
-
}
|
|
89
|
-
static matchUpperCase(input, regexp) {
|
|
90
|
-
return !!input?.toUpperCase().match(regexp) || false;
|
|
91
|
-
}
|
|
92
|
-
static hasWildcardCharacter(input) {
|
|
93
|
-
return (input && (input.includes('*') || input.includes('?'))) || false;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXhwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3JlZ2V4cHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQixXQUFXO0lBQ3ZCLE1BQU0sQ0FBQyxvQkFBb0IsR0FBOEIsRUFBRSxDQUFDO0lBQzVELE1BQU0sQ0FBQyxrQkFBa0IsR0FBYSxFQUFFLENBQUM7SUFFekMsTUFBTSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUM7SUFDNUIsTUFBTSxDQUFDLHlCQUF5QixHQUFHLHNCQUFzQixDQUFDO0lBQzFELE1BQU0sQ0FBQyxrQ0FBa0MsR0FBRztRQUNsRCx5QkFBeUI7UUFDekIsR0FBRyxFQUFFLEtBQUssRUFBRSxlQUFlO1FBQzNCLEdBQUcsRUFBRSxLQUFLLEVBQUUscUJBQXFCO1FBQ2pDLEdBQUcsRUFBRSxLQUFLLEVBQUUscUJBQXFCO1FBQ2pDLEdBQUcsRUFBRSxLQUFLLEVBQUUseUNBQXlDO1FBQ3JELEdBQUcsRUFBRSxLQUFLLEVBQUUseUNBQXlDO1FBQ3JELEdBQUcsRUFBRSxLQUFLLEVBQUUsa0NBQWtDO1FBQzlDLEdBQUcsRUFBRSxLQUFLLEVBQUUsa0NBQWtDO1FBQzlDLElBQUksRUFBRSxNQUFNLEVBQUUsMEJBQTBCO1FBQ3hDLENBQUMsRUFBRSxLQUFLLEVBQUUscUJBQXFCO1FBQy9CLEdBQUcsRUFBRSxLQUFLLEVBQUUsZUFBZTtRQUMzQixHQUFHLEVBQUUsS0FBSyxFQUFFLDRCQUE0QjtRQUN4QyxHQUFHLEVBQUUsS0FBSyxFQUFFLGNBQWM7UUFFMUIsMENBQTBDO1FBQzFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsd0JBQXdCO1FBQ2xDLEdBQUcsRUFBRSxJQUFJLEVBQUUseUJBQXlCO0tBQ3JDLENBQUM7SUFFRjs7Ozs7Ozs7O09BU0c7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQWtCLEVBQUUsT0FBMkIsRUFBRSxJQUFJLEVBQUUsSUFB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QUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUMxRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlZ0V4cFV0aWxzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlZFNlYXJjaFJlZ2V4cHM6IHsgW2tleTogc3RyaW5nXTogUmVnRXhwIH0gPSB7fTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlZFNlYXJjaFRleHRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHByaXZhdGUgc3RhdGljIE1BWF9DQUNIRV9TSVpFID0gMTAwO1xuICBwcml2YXRlIHN0YXRpYyBTUEVDSUFMX0NIQVJBQ1RFUlNfUkVHRVhQID0gL1suXFxbXFxdKCl7fVxcXFwkXnwrKj9dL2c7XG4gIHByaXZhdGUgc3RhdGljIFNQRUNJQUxfQ0hBUkFDVEVSU19SRVBMQUNFTUVOVF9NQVAgPSB7XG4gICAgLy8gRXNjYXBlIHNvbWUgY2hhcmFjdGVyc1xuICAgICcuJzogJ1suXScsIC8vIEVzY2FwZSBwb2ludFxuICAgICcoJzogJ1xcXFwoJywgLy8gRXNjYXBlIHBhcmVudGhlc2lzXG4gICAgJyknOiAnXFxcXCknLCAvLyBFc2NhcGUgcGFyZW50aGVzaXNcbiAgICAnWyc6ICdcXFxcWycsIC8vIEVzY2FwZSBjaGFyYWN0ZXIgY2xhc3Mgb3BlbmluZyBicmFja2V0XG4gICAgJ10nOiAnXFxcXF0nLCAvLyBFc2NhcGUgY2hhcmFjdGVyIGNsYXNzIGNsb3NpbmcgYnJhY2tldFxuICAgICd7JzogJ1xcXFx7JywgLy8gRXNjYXBlIHF1YW50aWZpZXIgb3BlbmluZyBicmFjZVxuICAgICd9JzogJ1xcXFx9JywgLy8gRXNjYXBlIHF1YW50aWZpZXIgY2xvc2luZyBicmFjZVxuICAgICdcXFxcJzogJ1xcXFxcXFxcJywgLy8gRXNjYXBlIGJhY2tzbGFzaCBpdHNlbGZcbiAgICAkOiAnXFxcXCQnLCAvLyBFc2NhcGUgZG9sbGFyIHNpZ25cbiAgICAnXic6ICdcXFxcXicsIC8vIEVzY2FwZSBjYXJldFxuICAgICd8JzogJ1xcXFx8JywgLy8gRXNjYXBlIHBpcGUgKGFsdGVybmF0aW9uKVxuICAgICcrJzogJ1xcXFwrJywgLy8gRXNjYXBlIHBsdXNcblxuICAgIC8vIFRyYW5zZm9ybSB3aWxkY2FyZCBjaGFyYWN0ZXJzIHRvIHJlZ2V4cFxuICAgICc/JzogJy4nLCAvLyBFeGFjdGx5IG9uZSBjaGFyYWN0ZXJcbiAgICAnKic6ICcuKicsIC8vIFplcm8gb3IgbW9yZSBjaGFyYWN0ZXJcbiAgfTtcblxuICAvKipcbiAgICogQ2xlYW5zIHRoZSBwcm92aWRlZCBzZWFyY2ggdGV4dCBieSB0cmltbWluZyB3aGl0ZXNwYWNlIGFuZCByZW1vdmluZyBvciBjb25kZW5zaW5nXG4gICAqIHdpbGRjYXJkIGNoYXJhY3RlcnMgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBvcHRpb25zLlxuICAgKiAoZS5nLiAnYSoqJyBiZWNvbWVzICdhJywgJyonIGJlY29tZXMgJycsIGV0Yy4pXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hUZXh0IC0gVGhlIHNlYXJjaCB0ZXh0IHRvIGJlIGNsZWFuZWQuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBPcHRpb25hbCBzZXR0aW5ncyBmb3IgY2xlYW5pbmcgdGhlIHNlYXJjaCB0ZXh0LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmFueVNlYXJjaF0gLSBJZiB0cnVlLCB0aGUgc2VhcmNoIHRleHQgaXMgY2xlYW5lZCBmb3IgYW55IG1hdGNoLiBJZiBmYWxzZSwgc2VhcmNoIGFzIGEgcHJlZml4XG4gICAqIEByZXR1cm4ge3N0cmluZ30gLSBUaGUgY2xlYW5lZCBzZWFyY2ggdGV4dC5cbiAgICovXG4gIHN0YXRpYyBjbGVhblNlYXJjaFRleHQoc2VhcmNoVGV4dDogc3RyaW5nLCBvcHRzOiB7IHRyaW0/OiBib29sZWFuIH0gPSB7IHRyaW06IHRydWUgfSk6IHN0cmluZyB7XG4gICAgaWYgKCFzZWFyY2hUZXh0Py5sZW5ndGgpIHJldHVybiBzZWFyY2hUZXh0O1xuXG4gICAgLy8gREVCVUdcbiAgICAvL2NvbnNvbGUuZGVidWcoYFtyZWdleHAtdXRpbHNdIENsZWFuaW5nIHNlYXJjaFRleHQgJyR7c2VhcmNoVGV4dH0nYCk7XG5cbiAgICBzZWFyY2hUZXh0ID0gc2VhcmNoVGV4dC5yZXBsYWNlKC9bKl17Mix9L2csICcqJyk7IC8vIFJlcGxhY2UgbWFueSAnKicgaW50byBvbmx5IG9uZVxuXG4gICAgLy8gVHJpbSB3aGl0ZXNwYWNlXG4gICAgaWYgKG9wdHM/LnRyaW0gIT09IGZhbHNlKSB7XG4gICAgICBzZWFyY2hUZXh0ID0gc2VhcmNoVGV4dC50cmltKCk7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHdpbGRjYXJkIGNoYXJhY3RlcnNcbiAgICBzZWFyY2hUZXh0ID0gc2VhcmNoVGV4dC5yZXBsYWNlKC9eWypdKyQvZywgJycpO1xuXG4gICAgLy8gQ2xlYW4gYW55IG1hdGNoIGV4cHJlc3Npb25cbiAgICBpZiAoc2VhcmNoVGV4dCA9PT0gJyonKSByZXR1cm4gJyc7XG5cbiAgICByZXR1cm4gc2VhcmNoVGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21waWxlcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBmcm9tIHRoZSBwcm92aWRlZCBzZWFyY2ggdGV4dCwgdXNpbmcgYSBzdGF0aWMgY2FjaGUgdG8gc3RvcmVcbiAgICogcHJldmlvdXNseSBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb25zIGZvciBmYXN0ZXIgcmV0cmlldmFsLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoVGV4dCAtIFRoZSB0ZXh0IHRvIGNvbXBpbGUgaW50byBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAgICogQHBhcmFtIGZsYWdzXG4gICAqIEByZXR1cm4ge1JlZ0V4cH0gLSBUaGUgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uLlxuICAgKi9cbiAgc3RhdGljIGNvbXBpbGVTZWFyY2hSZWdleHAoc2VhcmNoVGV4dDogc3RyaW5nLCBmbGFncyA9ICdnaScpOiBSZWdFeHAge1xuICAgIGlmICghc2VhcmNoVGV4dD8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICAgIC8vIFVzZSBjYWNoZWQgcmVnZXhwIGlmIGV4aXN0c1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gc2VhcmNoVGV4dCArICd8JyArIGZsYWdzO1xuICAgIGNvbnN0IGNhY2hlZFJlZ2V4cCA9IHRoaXMuX2NhY2hlZFNlYXJjaFJlZ2V4cHNbY2FjaGVLZXldO1xuICAgIGlmIChjYWNoZWRSZWdleHApIHJldHVybiBjYWNoZWRSZWdleHA7XG5cbiAgICBjb25zdCBzZWFyY2hSZWdleHBUZXh0ID0gc2VhcmNoVGV4dC5yZXBsYWNlKHRoaXMuU1BFQ0lBTF9DSEFSQUNURVJTX1JFR0VYUCwgKG1hdGNoKSA9PiB0aGlzLlNQRUNJQUxfQ0hBUkFDVEVSU19SRVBMQUNFTUVOVF9NQVBbbWF0Y2hdIHx8IG1hdGNoKTtcblxuICAgIC8vIERFQlVHXG4gICAgLy9jb25zb2xlLmRlYnVnKGBbcmVnZXhwLXV0aWxzXSBDb21wdXRpbmcgbmV3IHJlZ2V4cCAnJHtzZWFyY2hSZWdleHBUZXh0fScgZnJvbSBzZWFyY2hUZXh0ICcke3NlYXJjaFRleHR9J2ApO1xuXG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChgWyBdKiR7c2VhcmNoUmVnZXhwVGV4dH1gLCBmbGFncyk7XG5cbiAgICAvLyBJZiBjYWNoZSBpcyBmdWxsOiByZW1vdmUgb2xkZXIgY2FjaGUgZWxlbWVudFxuICAgIGlmICh0aGlzLl9jYWNoZWRTZWFyY2hUZXh0cy5sZW5ndGggPj0gdGhpcy5NQVhfQ0FDSEVfU0laRSkge1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vY29uc29sZS5kZWJ1ZygnW3JlZ2V4cC11dGlsc10gUmVtb3Zpbmcgb2xkZXIgY2FjaGVkIHJlZ2V4cCcpO1xuXG4gICAgICAvLyBDbGVhciBoYWxmIGNhY2hlJ3MgZWxlbWVudHNcbiAgICAgIHdoaWxlICh0aGlzLl9jYWNoZWRTZWFyY2hUZXh0cy5sZW5ndGggPiB0aGlzLk1BWF9DQUNIRV9TSVpFIC8gMikge1xuICAgICAgICBjb25zdCBjYWNoZUtleVRvRXZpY3QgPSB0aGlzLl9jYWNoZWRTZWFyY2hUZXh0cy5zaGlmdCgpO1xuICAgICAgICBkZWxldGUgdGhpcy5fY2FjaGVkU2VhcmNoUmVnZXhwc1tjYWNoZUtleVRvRXZpY3RdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCB0byBzdGF0aWMgY2FjaGVcbiAgICB0aGlzLl9jYWNoZWRTZWFyY2hSZWdleHBzW2NhY2hlS2V5XSA9IHJlZ2V4cDtcbiAgICB0aGlzLl9jYWNoZWRTZWFyY2hUZXh0cy5wdXNoKGNhY2hlS2V5KTtcblxuICAgIHJldHVybiByZWdleHA7XG4gIH1cblxuICBzdGF0aWMgbWF0Y2goaW5wdXQ6IHN0cmluZywgcmVnZXhwOiBzdHJpbmcgfCBSZWdFeHApOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFpbnB1dD8ubWF0Y2gocmVnZXhwKSB8fCBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBtYXRjaFVwcGVyQ2FzZShpbnB1dDogc3RyaW5nLCByZWdleHA6IHN0cmluZyB8IFJlZ0V4cCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWlucHV0Py50b1VwcGVyQ2FzZSgpLm1hdGNoKHJlZ2V4cCkgfHwgZmFsc2U7XG4gIH1cblxuICBzdGF0aWMgaGFzV2lsZGNhcmRDaGFyYWN0ZXIoaW5wdXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoaW5wdXQgJiYgKGlucHV0LmluY2x1ZGVzKCcqJykgfHwgaW5wdXQuaW5jbHVkZXMoJz8nKSkpIHx8IGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { RxState } from '@rx-angular/state';
|
|
2
|
-
const STATE_VAR_NAME_KEY = '__stateName';
|
|
3
|
-
const DEFAULT_STATE_VAR_NAME = '_state';
|
|
4
|
-
let production = false;
|
|
5
|
-
export function enableRxStateProdMode() {
|
|
6
|
-
production = true;
|
|
7
|
-
}
|
|
8
|
-
export function RxStateRegister() {
|
|
9
|
-
return function (target, key) {
|
|
10
|
-
// DEBUG
|
|
11
|
-
//console.debug(`${target.constructor?.name} @State() ${key}`);
|
|
12
|
-
if (target[STATE_VAR_NAME_KEY])
|
|
13
|
-
throw new Error('Cannot define more than one @State() in class hierarchy');
|
|
14
|
-
Object.defineProperty(target, STATE_VAR_NAME_KEY, {
|
|
15
|
-
value: key,
|
|
16
|
-
writable: false,
|
|
17
|
-
enumerable: false,
|
|
18
|
-
configurable: false,
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
export function RxStateProperty(statePropertyName, projectValueReducer) {
|
|
23
|
-
return function (target, key) {
|
|
24
|
-
// DEBUG
|
|
25
|
-
//console.debug(`${target.constructor?.name} @StateProperty() ${key}`);
|
|
26
|
-
statePropertyName = statePropertyName || key;
|
|
27
|
-
const state = target instanceof RxState ? null : target[STATE_VAR_NAME_KEY] || DEFAULT_STATE_VAR_NAME;
|
|
28
|
-
const stateObj = state ? `this.${state}` : `this`;
|
|
29
|
-
// property getter
|
|
30
|
-
const getMethodName = '_get' + key.charAt(0).toUpperCase() + key.slice(1);
|
|
31
|
-
const setMethodName = '_set' + key.charAt(0).toUpperCase() + key.slice(1);
|
|
32
|
-
const reducerMethodName = '_reduce' + key.charAt(0).toUpperCase() + key.slice(1);
|
|
33
|
-
const checkStateExists = stateObj !== 'this' && !production
|
|
34
|
-
? `\n if (!${stateObj}) throw new Error('Missing state! Please add a RxState in class: ' + this.constructor.name);`
|
|
35
|
-
: '';
|
|
36
|
-
const reducer = projectValueReducer ? `(state) => this.${reducerMethodName}(state, value)` : '() => value';
|
|
37
|
-
const getter = new Function(`return function ${getMethodName}(){\n return ${stateObj}.get('${statePropertyName}');\n}`)();
|
|
38
|
-
const setter = new Function(`return function ${setMethodName}(value){${checkStateExists}\n ${stateObj}.set('${statePropertyName}', ${reducer});\n}`)();
|
|
39
|
-
target[getMethodName] = getter;
|
|
40
|
-
target[setMethodName] = setter;
|
|
41
|
-
if (projectValueReducer)
|
|
42
|
-
target[reducerMethodName] = projectValueReducer;
|
|
43
|
-
Object.defineProperty(target, key, {
|
|
44
|
-
get: getter,
|
|
45
|
-
set: setter,
|
|
46
|
-
enumerable: true,
|
|
47
|
-
configurable: true,
|
|
48
|
-
});
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
export function RxStateSelect(statePropertyName, opts) {
|
|
52
|
-
return function (target, key) {
|
|
53
|
-
// DEBUG
|
|
54
|
-
//console.debug(`${target.constructor?.name} @RxStateSelect() ${key}`);
|
|
55
|
-
statePropertyName = statePropertyName || key.replace(/\$?$/, '');
|
|
56
|
-
const state = target instanceof RxState ? null : target[STATE_VAR_NAME_KEY] || opts?.stateName || DEFAULT_STATE_VAR_NAME;
|
|
57
|
-
const stateObj = state ? `this.${state}` : `this`;
|
|
58
|
-
const _key = '_' + key;
|
|
59
|
-
// property getter
|
|
60
|
-
const getMethodName = '_get' + statePropertyName.charAt(0).toUpperCase() + (statePropertyName.length > 1 ? statePropertyName.slice(1) : '') + '$';
|
|
61
|
-
const observableObj = statePropertyName === '$' ? `${stateObj}.$` : `${stateObj}.select('${statePropertyName.split('.').join("', '")}')`;
|
|
62
|
-
const getter = new Function(`return function ${getMethodName}(){\n if (!this.${_key}) this.${_key} = ${observableObj};\n return this.${_key};\n}`)();
|
|
63
|
-
target[getMethodName] = getter;
|
|
64
|
-
Object.defineProperty(target, key, {
|
|
65
|
-
get: getter,
|
|
66
|
-
enumerable: true,
|
|
67
|
-
configurable: false,
|
|
68
|
-
});
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtc3RhdGUuZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3J4LXN0YXRlL3J4LXN0YXRlLmRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRSxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztBQUN6QyxNQUFNLHNCQUFzQixHQUFHLFFBQVEsQ0FBQztBQUV4QyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7QUFDdkIsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZTtJQUM3QixPQUFPLFVBQVUsTUFBbUIsRUFBRSxHQUFXO1FBQy9DLFFBQVE7UUFDUiwrREFBK0Q7UUFFL0QsSUFBSSxNQUFNLENBQUMsa0JBQWtCLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7UUFFM0csTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7WUFDaEQsS0FBSyxFQUFFLEdBQUc7WUFDVixRQUFRLEVBQUUsS0FBSztZQUNmLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixpQkFBOEIsRUFDOUIsbUJBQWtEO0lBRWxELE9BQU8sVUFBVSxNQUFtQixFQUFFLEdBQVc7UUFDL0MsUUFBUTtRQUNSLHVFQUF1RTtRQUV2RSxpQkFBaUIsR0FBSSxpQkFBNEIsSUFBSSxHQUFHLENBQUM7UUFDekQsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFN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QUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUVsSixNQUFNLGFBQWEsR0FBRyxpQkFBaUIsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxZQUFZLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6SSxNQUFNLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FDekIsbUJBQW1CLGFBQWEsbUJBQW1CLElBQUksVUFBVSxJQUFJLE1BQU0sYUFBYSxvQkFBb0IsSUFBSSxNQUFNLENBQ3ZILEVBQUUsQ0FBQztRQUVKLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxNQUFNLENBQUM7UUFFL0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ2pDLEdBQUcsRUFBRSxNQUFNO1lBQ1gsVUFBVSxFQUFFLElBQUk7WUFDaEIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2plY3RWYWx1ZVJlZHVjZXIsIFJ4U3RhdGUgfSBmcm9tICdAcngtYW5ndWxhci9zdGF0ZSc7XG5cbmRlY2xhcmUgdHlwZSBDb25zdHJ1Y3RvciA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueTtcbmNvbnN0IFNUQVRFX1ZBUl9OQU1FX0tFWSA9ICdfX3N0YXRlTmFtZSc7XG5jb25zdCBERUZBVUxUX1NUQVRFX1ZBUl9OQU1FID0gJ19zdGF0ZSc7XG5cbmxldCBwcm9kdWN0aW9uID0gZmFsc2U7XG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlUnhTdGF0ZVByb2RNb2RlKCkge1xuICBwcm9kdWN0aW9uID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVSZWdpc3RlcigpOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBDb25zdHJ1Y3Rvciwga2V5OiBzdHJpbmcpIHtcbiAgICAvLyBERUJVR1xuICAgIC8vY29uc29sZS5kZWJ1ZyhgJHt0YXJnZXQuY29uc3RydWN0b3I/Lm5hbWV9IEBTdGF0ZSgpICR7a2V5fWApO1xuXG4gICAgaWYgKHRhcmdldFtTVEFURV9WQVJfTkFNRV9LRVldKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZpbmUgbW9yZSB0aGFuIG9uZSBAU3RhdGUoKSBpbiBjbGFzcyBoaWVyYXJjaHknKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIFNUQVRFX1ZBUl9OQU1FX0tFWSwge1xuICAgICAgdmFsdWU6IGtleSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVQcm9wZXJ0eTxUID0gYW55LCBLIGV4dGVuZHMga2V5b2YgVCA9IGFueSwgViBleHRlbmRzIFRbS10gPSBhbnk+KFxuICBzdGF0ZVByb3BlcnR5TmFtZT86IHN0cmluZyB8IEssXG4gIHByb2plY3RWYWx1ZVJlZHVjZXI/OiBQcm9qZWN0VmFsdWVSZWR1Y2VyPFQsIEssIFY+XG4pOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBDb25zdHJ1Y3Rvciwga2V5OiBzdHJpbmcpIHtcbiAgICAvLyBERUJVR1xuICAgIC8vY29uc29sZS5kZWJ1ZyhgJHt0YXJnZXQuY29uc3RydWN0b3I/Lm5hbWV9IEBTdGF0ZVByb3BlcnR5KCkgJHtrZXl9YCk7XG5cbiAgICBzdGF0ZVByb3BlcnR5TmFtZSA9IChzdGF0ZVByb3BlcnR5TmFtZSBhcyBzdHJpbmcpIHx8IGtleTtcbiAgICBjb25zdCBzdGF0ZSA9IHRhcmdldCBpbnN0YW5jZW9mIFJ4U3RhdGUgPyBudWxsIDogdGFyZ2V0W1NUQVRFX1ZBUl9OQU1FX0tFWV0gfHwgREVGQVVMVF9TVEFURV9WQVJfTkFNRTtcbiAgICBjb25zdCBzdGF0ZU9iaiA9IHN0YXRlID8gYHRoaXMuJHtzdGF0ZX1gIDogYHRoaXNgO1xuXG4gICAgLy8gcHJvcGVydHkgZ2V0dGVyXG4gICAgY29uc3QgZ2V0TWV0aG9kTmFtZSA9ICdfZ2V0JyArIGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKTtcbiAgICBjb25zdCBzZXRNZXRob2ROYW1lID0gJ19zZXQnICsga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xuICAgIGNvbnN0IHJlZHVjZXJNZXRob2ROYW1lID0gJ19yZWR1Y2UnICsga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xuXG4gICAgY29uc3QgY2hlY2tTdGF0ZUV4aXN0cyA9XG4gICAgICBzdGF0ZU9iaiAhPT0gJ3RoaXMnICYmICFwcm9kdWN0aW9uXG4gICAgICAgID8gYFxcbiAgaWYgKCEke3N0YXRlT2JqfSkgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHN0YXRlISBQbGVhc2UgYWRkIGEgUnhTdGF0ZSBpbiBjbGFzczogJyArIHRoaXMuY29uc3RydWN0b3IubmFtZSk7YFxuICAgICAgICA6ICcnO1xuXG4gICAgY29uc3QgcmVkdWNlciA9IHByb2plY3RWYWx1ZVJlZHVjZXIgPyBgKHN0YXRlKSA9PiB0aGlzLiR7cmVkdWNlck1ldGhvZE5hbWV9KHN0YXRlLCB2YWx1ZSlgIDogJygpID0+IHZhbHVlJztcbiAgICBjb25zdCBnZXR0ZXIgPSBuZXcgRnVuY3Rpb24oYHJldHVybiBmdW5jdGlvbiAke2dldE1ldGhvZE5hbWV9KCl7XFxuICByZXR1cm4gJHtzdGF0ZU9ian0uZ2V0KCcke3N0YXRlUHJvcGVydHlOYW1lfScpO1xcbn1gKSgpO1xuICAgIGNvbnN0IHNldHRlciA9IG5ldyBGdW5jdGlvbihcbiAgICAgIGByZXR1cm4gZnVuY3Rpb24gJHtzZXRNZXRob2ROYW1lfSh2YWx1ZSl7JHtjaGVja1N0YXRlRXhpc3RzfVxcbiAgJHtzdGF0ZU9ian0uc2V0KCcke3N0YXRlUHJvcGVydHlOYW1lfScsICR7cmVkdWNlcn0pO1xcbn1gXG4gICAgKSgpO1xuXG4gICAgdGFyZ2V0W2dldE1ldGhvZE5hbWVdID0gZ2V0dGVyO1xuICAgIHRhcmdldFtzZXRNZXRob2ROYW1lXSA9IHNldHRlcjtcbiAgICBpZiAocHJvamVjdFZhbHVlUmVkdWNlcikgdGFyZ2V0W3JlZHVjZXJNZXRob2ROYW1lXSA9IHByb2plY3RWYWx1ZVJlZHVjZXI7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGdldDogZ2V0dGVyLFxuICAgICAgc2V0OiBzZXR0ZXIsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUnhTdGF0ZVNlbGVjdDxUID0gYW55PihzdGF0ZVByb3BlcnR5TmFtZT86IHN0cmluZyB8IGtleW9mIFQgfCAnJCcsIG9wdHM/OiB7IHN0YXRlTmFtZT86IHN0cmluZyB9KTogUHJvcGVydHlEZWNvcmF0b3Ige1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogQ29uc3RydWN0b3IsIGtleTogc3RyaW5nKSB7XG4gICAgLy8gREVCVUdcbiAgICAvL2NvbnNvbGUuZGVidWcoYCR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfSBAUnhTdGF0ZVNlbGVjdCgpICR7a2V5fWApO1xuXG4gICAgc3RhdGVQcm9wZXJ0eU5hbWUgPSAoc3RhdGVQcm9wZXJ0eU5hbWUgYXMgc3RyaW5nKSB8fCBrZXkucmVwbGFjZSgvXFwkPyQvLCAnJyk7XG4gICAgY29uc3Qgc3RhdGUgPSB0YXJnZXQgaW5zdGFuY2VvZiBSeFN0YXRlID8gbnVsbCA6IHRhcmdldFtTVEFURV9WQVJfTkFNRV9LRVldIHx8IG9wdHM/LnN0YXRlTmFtZSB8fCBERUZBVUxUX1NUQVRFX1ZBUl9OQU1FO1xuICAgIGNvbnN0IHN0YXRlT2JqID0gc3RhdGUgPyBgdGhpcy4ke3N0YXRlfWAgOiBgdGhpc2A7XG5cbiAgICBjb25zdCBfa2V5ID0gJ18nICsga2V5O1xuXG4gICAgLy8gcHJvcGVydHkgZ2V0dGVyXG4gICAgY29uc3QgZ2V0TWV0aG9kTmFtZSA9ICdfZ2V0JyArIHN0YXRlUHJvcGVydHlOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgKHN0YXRlUHJvcGVydHlOYW1lLmxlbmd0aCA+IDEgPyBzdGF0ZVByb3BlcnR5TmFtZS5zbGljZSgxKSA6ICcnKSArICckJztcblxuICAgIGNvbnN0IG9ic2VydmFibGVPYmogPSBzdGF0ZVByb3BlcnR5TmFtZSA9PT0gJyQnID8gYCR7c3RhdGVPYmp9LiRgIDogYCR7c3RhdGVPYmp9LnNlbGVjdCgnJHtzdGF0ZVByb3BlcnR5TmFtZS5zcGxpdCgnLicpLmpvaW4oXCInLCAnXCIpfScpYDtcbiAgICBjb25zdCBnZXR0ZXIgPSBuZXcgRnVuY3Rpb24oXG4gICAgICBgcmV0dXJuIGZ1bmN0aW9uICR7Z2V0TWV0aG9kTmFtZX0oKXtcXG4gaWYgKCF0aGlzLiR7X2tleX0pIHRoaXMuJHtfa2V5fSA9ICR7b2JzZXJ2YWJsZU9ian07XFxuICByZXR1cm4gdGhpcy4ke19rZXl9O1xcbn1gXG4gICAgKSgpO1xuXG4gICAgdGFyZ2V0W2dldE1ldGhvZE5hbWVdID0gZ2V0dGVyO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBnZXQ6IGdldHRlcixcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgIH0pO1xuICB9O1xufVxuIl19
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { RxFor } from '@rx-angular/template/for';
|
|
3
|
-
import { RxIf } from '@rx-angular/template/if';
|
|
4
|
-
import { RxPush } from '@rx-angular/template/push';
|
|
5
|
-
import { RxLet } from '@rx-angular/template/let';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class RxStateModule {
|
|
8
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RxStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: RxStateModule, imports: [RxPush, RxFor, RxIf, RxLet], exports: [RxPush, RxFor, RxIf, RxLet] });
|
|
10
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RxStateModule });
|
|
11
|
-
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RxStateModule, decorators: [{
|
|
13
|
-
type: NgModule,
|
|
14
|
-
args: [{
|
|
15
|
-
imports: [RxPush, RxFor, RxIf, RxLet],
|
|
16
|
-
exports: [RxPush, RxFor, RxIf, RxLet],
|
|
17
|
-
}]
|
|
18
|
-
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtc3RhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcngtc3RhdGUvcngtc3RhdGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU1qRCxNQUFNLE9BQU8sYUFBYTt3R0FBYixhQUFhO3lHQUFiLGFBQWEsWUFIZCxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLGFBQzFCLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7eUdBRXpCLGFBQWE7OzRGQUFiLGFBQWE7a0JBSnpCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJ4Rm9yIH0gZnJvbSAnQHJ4LWFuZ3VsYXIvdGVtcGxhdGUvZm9yJztcbmltcG9ydCB7IFJ4SWYgfSBmcm9tICdAcngtYW5ndWxhci90ZW1wbGF0ZS9pZic7XG5pbXBvcnQgeyBSeFB1c2ggfSBmcm9tICdAcngtYW5ndWxhci90ZW1wbGF0ZS9wdXNoJztcbmltcG9ydCB7IFJ4TGV0IH0gZnJvbSAnQHJ4LWFuZ3VsYXIvdGVtcGxhdGUvbGV0JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1J4UHVzaCwgUnhGb3IsIFJ4SWYsIFJ4TGV0XSxcbiAgZXhwb3J0czogW1J4UHVzaCwgUnhGb3IsIFJ4SWYsIFJ4TGV0XSxcbn0pXG5leHBvcnQgY2xhc3MgUnhTdGF0ZU1vZHVsZSB7fVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtc3RhdGUudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yeC1zdGF0ZS9yeC1zdGF0ZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBPYnNlcnZlZDxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVCBhcyBgJHtzdHJpbmcgJiBLfSRgXTogT2JzZXJ2YWJsZTxUW0tdPjtcbn07XG4iXX0=
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export function mergeLoadResult(res1, res2) {
|
|
2
|
-
return {
|
|
3
|
-
data: (res1.data || []).concat(...res2.data),
|
|
4
|
-
total: (res1.total || res1.data?.length || 0) + (res2.total || res2.data?.length || 0),
|
|
5
|
-
};
|
|
6
|
-
}
|
|
7
|
-
export function isEntityService(service) {
|
|
8
|
-
return service && service.load && service.save && service.delete;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXNlcnZpY2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4R0EsTUFBTSxVQUFVLGVBQWUsQ0FBSSxJQUFtQixFQUFFLElBQW1CO0lBQ3pFLE9BQU87UUFDTCxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO0tBQ3ZGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBUSxPQUFZO0lBQ2pELE9BQU8sT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGZXRjaFBvbGljeSwgV2F0Y2hRdWVyeUZldGNoUG9saWN5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBFbXB0eU9iamVjdCB9IGZyb20gJy4uLy4uL2NvcmUvZ3JhcGhxbC9ncmFwaHFsLnV0aWxzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFBhZ2Uge1xuICBvZmZzZXQ6IG51bWJlcjtcbiAgc2l6ZTogbnVtYmVyO1xuICBzb3J0Qnk/OiBzdHJpbmc7XG4gIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uO1xufVxuXG5leHBvcnQgZGVjbGFyZSB0eXBlIEZldGNoTW9yZUZuPFIsIFYgPSBFbXB0eU9iamVjdD4gPSAodmFyaWFibGVzPzogVikgPT4gUHJvbWlzZTxSPjtcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIExvYWRSZXN1bHQ8VD4ge1xuICBkYXRhOiBUW107XG4gIHRvdGFsPzogbnVtYmVyO1xuICBlcnJvcnM/OiBhbnlbXTtcbiAgZmV0Y2hNb3JlPzogRmV0Y2hNb3JlRm48TG9hZFJlc3VsdDxUPj47XG59XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgU3VnZ2VzdEZuPFQsIEY+ID0gKFxuICB2YWx1ZTogYW55LFxuICBmaWx0ZXI/OiBGLFxuICBzb3J0Qnk/OiBzdHJpbmcgfCBrZXlvZiBULFxuICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbixcbiAgb3B0cz86IHtcbiAgICBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5O1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgICBzaXplPzogbnVtYmVyO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfVxuKSA9PiBQcm9taXNlPFRbXSB8IExvYWRSZXN1bHQ8VD4+O1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgU3VnZ2VzdFNlcnZpY2U8VCwgRj4ge1xuICBzdWdnZXN0OiBTdWdnZXN0Rm48VCwgRj47XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnM8RSA9IGFueT4ge1xuICBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5O1xuICB0cmFzaD86IGJvb2xlYW47XG4gIHRvRW50aXR5PzogYm9vbGVhbiB8ICgoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpID0+IEUpO1xuICBxdWVyeT86IGFueTtcbiAgdmFyaWFibGVzPzogYW55O1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBFbnRpdHlTZXJ2aWNlV2F0Y2hPcHRpb25zPFQgPSBhbnk+IHtcbiAgZmV0Y2hQb2xpY3k/OiBXYXRjaFF1ZXJ5RmV0Y2hQb2xpY3k7XG4gIHRyYXNoPzogYm9vbGVhbjtcbiAgdG9FbnRpdHk/OiBib29sZWFuIHwgKChzb3VyY2U6IGFueSwgb3B0cz86IGFueSkgPT4gVCk7XG4gIHF1ZXJ5PzogYW55O1xuICB2YXJpYWJsZXM/OiBhbnk7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBFbnRpdHlTZXJ2aWNlTGlzdGVuQ2hhbmdlc09wdGlvbnM8VCA9IGFueT4ge1xuICBpbnRlcnZhbD86IG51bWJlcjtcbiAgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeTtcbiAgdG9FbnRpdHk/OiBib29sZWFuIHwgKChzb3VyY2U6IGFueSkgPT4gVCk7XG4gIHF1ZXJ5PzogYW55O1xuICB2YXJpYWJsZXM/OiBhbnk7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElFbnRpdHlTZXJ2aWNlPFQsIElEID0gYW55LCBMTyA9IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9uczxUPj4ge1xuICBsb2FkKGlkOiBJRCwgb3B0cz86IExPKTogUHJvbWlzZTxUPjtcblxuICBjYW5Vc2VyV3JpdGUoZGF0YTogVCwgb3B0cz86IGFueSk6IGJvb2xlYW47XG5cbiAgc2F2ZShkYXRhOiBULCBvcHRzPzogYW55KTogUHJvbWlzZTxUPjtcblxuICBkZWxldGUoZGF0YTogVCwgb3B0cz86IGFueSk6IFByb21pc2U8YW55PjtcblxuICBsaXN0ZW5DaGFuZ2VzKGlkOiBJRCwgb3B0cz86IGFueSk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9uczxUID0gYW55PiBleHRlbmRzIEVudGl0eVNlcnZpY2VMb2FkT3B0aW9uczxUPiB7XG4gIHdpdGhUb3RhbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnM8VCA9IGFueT4gZXh0ZW5kcyBFbnRpdHlTZXJ2aWNlV2F0Y2hPcHRpb25zPFQ+IHtcbiAgd2l0aFRvdGFsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElFbnRpdGllc1NlcnZpY2U8VCwgRiwgTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9uczxUPj4ge1xuICAvLyBUT0RPIGNoYW5nZSB0byByZXF1aXJlZCAoaW4gYSBmdXR1cmUgdmVyc2lvbilcbiAgcmVhZG9ubHkgZGVmYXVsdEZldGNoUG9saWN5PzogV2F0Y2hRdWVyeUZldGNoUG9saWN5O1xuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLCBzaXplOiBudW1iZXIsIHNvcnRCeT86IHN0cmluZywgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sIGZpbHRlcj86IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiBPKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PFQ+PjtcblxuICAvLyBUT0RPXG4gIC8qd2F0Y2hQYWdlKFxuICAgIHBhZ2U6IFBhZ2U8VD4sXG4gICAgZmlsdGVyPzogRixcbiAgICBvcHRpb25zPzogT1xuICApOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+OyovXG5cbiAgc2F2ZUFsbChkYXRhOiBUW10sIG9wdHM/OiBhbnkpOiBQcm9taXNlPFRbXT47XG5cbiAgZGVsZXRlQWxsKGRhdGE6IFRbXSwgb3B0cz86IGFueSk6IFByb21pc2U8YW55PjtcblxuICBhc0ZpbHRlcihmaWx0ZXI6IFBhcnRpYWw8Rj4pOiBGO1xufVxuXG5leHBvcnQgZGVjbGFyZSB0eXBlIExvYWRSZXN1bHRCeVBhZ2VGbjxUPiA9IChvZmZzZXQ6IG51bWJlciwgc2l6ZTogbnVtYmVyKSA9PiBQcm9taXNlPExvYWRSZXN1bHQ8VD4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbnRpdHlGdWxsU2VydmljZTxULCBJRCwgRiwgTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyAmIEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucz5cbiAgZXh0ZW5kcyBJRW50aXR5U2VydmljZTxULCBJRCwgTz4sXG4gICAgSUVudGl0aWVzU2VydmljZTxULCBGLCBPPiB7fVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VMb2FkUmVzdWx0PFQ+KHJlczE6IExvYWRSZXN1bHQ8VD4sIHJlczI6IExvYWRSZXN1bHQ8VD4pOiBMb2FkUmVzdWx0PFQ+IHtcbiAgcmV0dXJuIHtcbiAgICBkYXRhOiAocmVzMS5kYXRhIHx8IFtdKS5jb25jYXQoLi4ucmVzMi5kYXRhKSxcbiAgICB0b3RhbDogKHJlczEudG90YWwgfHwgcmVzMS5kYXRhPy5sZW5ndGggfHwgMCkgKyAocmVzMi50b3RhbCB8fCByZXMyLmRhdGE/Lmxlbmd0aCB8fCAwKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW50aXR5U2VydmljZTxULCBJRD4oc2VydmljZTogYW55KTogc2VydmljZSBpcyBJRW50aXR5U2VydmljZTxULCBJRD4ge1xuICByZXR1cm4gc2VydmljZSAmJiBzZXJ2aWNlLmxvYWQgJiYgc2VydmljZS5zYXZlICYmIHNlcnZpY2UuZGVsZXRlO1xufVxuIl19
|