@ecodev/natural 41.3.0 → 42.0.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/ecodev-natural.d.ts +1 -9
- package/esm2020/ecodev-natural.mjs +5 -0
- package/esm2020/lib/classes/abstract-controller.mjs +30 -0
- package/esm2020/lib/classes/abstract-detail.mjs +152 -0
- package/esm2020/lib/classes/abstract-editable-list.mjs +96 -0
- package/esm2020/lib/classes/abstract-list.mjs +406 -0
- package/esm2020/lib/classes/abstract-navigable-list.mjs +126 -0
- package/{esm2015/lib/classes/apollo-utils.js → esm2020/lib/classes/apollo-utils.mjs} +0 -0
- package/esm2020/lib/classes/data-source.mjs +76 -0
- package/{esm2015/lib/classes/query-variable-manager-utils.js → esm2020/lib/classes/query-variable-manager-utils.mjs} +0 -0
- package/esm2020/lib/classes/query-variable-manager.mjs +161 -0
- package/{esm2015/lib/classes/rxjs.js → esm2020/lib/classes/rxjs.mjs} +0 -0
- package/{esm2015/lib/classes/tld.js → esm2020/lib/classes/tld.mjs} +0 -0
- package/{esm2015/lib/classes/utility.js → esm2020/lib/classes/utility.mjs} +0 -0
- package/esm2020/lib/classes/validators.mjs +179 -0
- package/esm2020/lib/directives/http-prefix.directive.mjs +50 -0
- package/esm2020/lib/modules/alert/alert.module.mjs +20 -0
- package/esm2020/lib/modules/alert/alert.service.mjs +55 -0
- package/esm2020/lib/modules/alert/confirm.component.mjs +20 -0
- package/{esm2015/lib/modules/alert/public-api.js → esm2020/lib/modules/alert/public-api.mjs} +0 -0
- package/esm2020/lib/modules/avatar/avatar.module.mjs +19 -0
- package/esm2020/lib/modules/avatar/component/avatar.component.mjs +187 -0
- package/{esm2015/lib/modules/avatar/public-api.js → esm2020/lib/modules/avatar/public-api.mjs} +0 -0
- package/esm2020/lib/modules/avatar/service/avatar.service.mjs +66 -0
- package/esm2020/lib/modules/avatar/sources/gravatar.mjs +29 -0
- package/{esm2015/lib/modules/avatar/sources/image.js → esm2020/lib/modules/avatar/sources/image.mjs} +0 -0
- package/{esm2015/lib/modules/avatar/sources/initials.js → esm2020/lib/modules/avatar/sources/initials.mjs} +0 -0
- package/{esm2015/lib/modules/avatar/sources/source.js → esm2020/lib/modules/avatar/sources/source.mjs} +1 -1
- package/esm2020/lib/modules/columns-picker/columns-picker-column.directive.mjs +43 -0
- package/esm2020/lib/modules/columns-picker/columns-picker.component.mjs +84 -0
- package/esm2020/lib/modules/columns-picker/columns-picker.module.mjs +47 -0
- package/{esm2015/lib/modules/columns-picker/public-api.js → esm2020/lib/modules/columns-picker/public-api.mjs} +0 -0
- package/esm2020/lib/modules/common/common-module.mjs +54 -0
- package/esm2020/lib/modules/common/directives/linkable-tab.directive.mjs +79 -0
- package/esm2020/lib/modules/common/directives/reactive-asterisk.directive.mjs +33 -0
- package/esm2020/lib/modules/common/directives/src-density.directive.mjs +62 -0
- package/esm2020/lib/modules/common/pipes/capitalize.pipe.mjs +18 -0
- package/esm2020/lib/modules/common/pipes/ellipsis.pipe.mjs +14 -0
- package/esm2020/lib/modules/common/pipes/enum.pipe.mjs +25 -0
- package/esm2020/lib/modules/common/pipes/swiss-date.pipe.mjs +20 -0
- package/{esm2015/lib/modules/common/public-api.js → esm2020/lib/modules/common/public-api.mjs} +0 -0
- package/esm2020/lib/modules/common/services/memory-storage.mjs +112 -0
- package/esm2020/lib/modules/common/services/seo.service.mjs +114 -0
- package/esm2020/lib/modules/detail-header/detail-header.component.mjs +76 -0
- package/esm2020/lib/modules/detail-header/detail-header.module.mjs +21 -0
- package/{esm2015/lib/modules/detail-header/public-api.js → esm2020/lib/modules/detail-header/public-api.mjs} +0 -0
- package/esm2020/lib/modules/dialog-trigger/dialog-trigger.component.mjs +69 -0
- package/esm2020/lib/modules/dialog-trigger/dialog-trigger.module.mjs +19 -0
- package/{esm2015/lib/modules/dialog-trigger/public-api.js → esm2020/lib/modules/dialog-trigger/public-api.mjs} +0 -0
- package/esm2020/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +98 -0
- package/esm2020/lib/modules/dropdown-components/natural-dropdown-components.module.mjs +92 -0
- package/{esm2015/lib/modules/dropdown-components/public-api.js → esm2020/lib/modules/dropdown-components/public-api.mjs} +0 -0
- package/esm2020/lib/modules/dropdown-components/type-date/type-date.component.mjs +133 -0
- package/esm2020/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +137 -0
- package/esm2020/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +69 -0
- package/esm2020/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +38 -0
- package/esm2020/lib/modules/dropdown-components/type-number/type-number.component.mjs +104 -0
- package/esm2020/lib/modules/dropdown-components/type-select/type-select.component.mjs +169 -0
- package/esm2020/lib/modules/dropdown-components/type-text/type-text.component.mjs +57 -0
- package/{esm2015/lib/modules/dropdown-components/types.js → esm2020/lib/modules/dropdown-components/types.mjs} +0 -0
- package/{esm2015/lib/modules/dropdown-components/utils.js → esm2020/lib/modules/dropdown-components/utils.mjs} +0 -0
- package/esm2020/lib/modules/file/abstract-file.mjs +231 -0
- package/esm2020/lib/modules/file/component/file.component.mjs +143 -0
- package/esm2020/lib/modules/file/file-drop.directive.mjs +110 -0
- package/esm2020/lib/modules/file/file-select.directive.mjs +28 -0
- package/esm2020/lib/modules/file/file.module.mjs +24 -0
- package/esm2020/lib/modules/file/file.service.mjs +48 -0
- package/{esm2015/lib/modules/file/public-api.js → esm2020/lib/modules/file/public-api.mjs} +0 -0
- package/{esm2015/lib/modules/file/types.js → esm2020/lib/modules/file/types.mjs} +0 -0
- package/{esm2015/lib/modules/file/utils.js → esm2020/lib/modules/file/utils.mjs} +3 -4
- package/esm2020/lib/modules/fixed-button/fixed-button.component.mjs +27 -0
- package/esm2020/lib/modules/fixed-button/fixed-button.module.mjs +21 -0
- package/{esm2015/lib/modules/fixed-button/public-api.js → esm2020/lib/modules/fixed-button/public-api.mjs} +0 -0
- package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +36 -0
- package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.module.mjs +20 -0
- package/{esm2015/lib/modules/fixed-button-detail/public-api.js → esm2020/lib/modules/fixed-button-detail/public-api.mjs} +0 -0
- package/{esm2015/lib/modules/hierarchic-selector/classes/flat-node.js → esm2020/lib/modules/hierarchic-selector/classes/flat-node.mjs} +1 -1
- package/{esm2015/lib/modules/hierarchic-selector/classes/hierarchic-configuration.js → esm2020/lib/modules/hierarchic-selector/classes/hierarchic-configuration.mjs} +0 -0
- package/{esm2015/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.js → esm2020/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.mjs} +0 -0
- package/{esm2015/lib/modules/hierarchic-selector/classes/model-node.js → esm2020/lib/modules/hierarchic-selector/classes/model-node.mjs} +1 -1
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +364 -0
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +258 -0
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +31 -0
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +23 -0
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector.module.mjs +81 -0
- package/{esm2015/lib/modules/hierarchic-selector/public-api.js → esm2020/lib/modules/hierarchic-selector/public-api.mjs} +0 -0
- package/esm2020/lib/modules/icon/icon.component.mjs +92 -0
- package/esm2020/lib/modules/icon/icon.module.mjs +30 -0
- package/{esm2015/lib/modules/icon/public-api.js → esm2020/lib/modules/icon/public-api.mjs} +0 -0
- package/esm2020/lib/modules/matomo/matomo-module.module.mjs +12 -0
- package/esm2020/lib/modules/matomo/matomo.service.mjs +105 -0
- package/{esm2015/lib/modules/matomo/public-api.js → esm2020/lib/modules/matomo/public-api.mjs} +0 -0
- package/esm2020/lib/modules/panels/abstract-panel.mjs +56 -0
- package/{esm2015/lib/modules/panels/fallback-if-no-opened-panels.urlmatcher.js → esm2020/lib/modules/panels/fallback-if-no-opened-panels.urlmatcher.mjs} +0 -0
- package/esm2020/lib/modules/panels/panels.component.mjs +26 -0
- package/esm2020/lib/modules/panels/panels.module.mjs +33 -0
- package/esm2020/lib/modules/panels/panels.service.mjs +325 -0
- package/{esm2015/lib/modules/panels/panels.urlmatcher.js → esm2020/lib/modules/panels/panels.urlmatcher.mjs} +0 -0
- package/{esm2015/lib/modules/panels/public-api.js → esm2020/lib/modules/panels/public-api.mjs} +0 -0
- package/{esm2015/lib/modules/panels/types.js → esm2020/lib/modules/panels/types.mjs} +0 -0
- package/{esm2015/lib/modules/relations/public-api.js → esm2020/lib/modules/relations/public-api.mjs} +0 -0
- package/esm2020/lib/modules/relations/relations.component.mjs +198 -0
- package/esm2020/lib/modules/relations/relations.module.mjs +58 -0
- package/{esm2015/lib/modules/search/classes/graphql-doctrine.js → esm2020/lib/modules/search/classes/graphql-doctrine.mjs} +0 -0
- package/{esm2015/lib/modules/search/classes/graphql-doctrine.types.js → esm2020/lib/modules/search/classes/graphql-doctrine.types.mjs} +0 -0
- package/{esm2015/lib/modules/search/classes/transformers.js → esm2020/lib/modules/search/classes/transformers.mjs} +0 -0
- package/{esm2015/lib/modules/search/classes/url.js → esm2020/lib/modules/search/classes/url.mjs} +0 -0
- package/{esm2015/lib/modules/search/classes/utils.js → esm2020/lib/modules/search/classes/utils.mjs} +0 -0
- package/{esm2015/lib/modules/search/dropdown-container/dropdown-container-animations.js → esm2020/lib/modules/search/dropdown-container/dropdown-container-animations.mjs} +0 -0
- package/esm2020/lib/modules/search/dropdown-container/dropdown-container.component.mjs +88 -0
- package/{esm2015/lib/modules/search/dropdown-container/dropdown-ref.js → esm2020/lib/modules/search/dropdown-container/dropdown-ref.mjs} +1 -1
- package/esm2020/lib/modules/search/dropdown-container/dropdown.service.mjs +93 -0
- package/esm2020/lib/modules/search/facet-selector/facet-selector.component.mjs +50 -0
- package/esm2020/lib/modules/search/group/group.component.mjs +45 -0
- package/esm2020/lib/modules/search/input/input.component.mjs +328 -0
- package/{esm2015/lib/modules/search/public-api.js → esm2020/lib/modules/search/public-api.mjs} +0 -0
- package/esm2020/lib/modules/search/search/search.component.mjs +78 -0
- package/esm2020/lib/modules/search/search.module.mjs +84 -0
- package/{esm2015/lib/modules/search/types/dropdown-component.js → esm2020/lib/modules/search/types/dropdown-component.mjs} +0 -0
- package/{esm2015/lib/modules/search/types/facet.js → esm2020/lib/modules/search/types/facet.mjs} +0 -0
- package/{esm2015/lib/modules/search/types/values.js → esm2020/lib/modules/search/types/values.mjs} +0 -0
- package/esm2020/lib/modules/select/abstract-select.component.mjs +186 -0
- package/{esm2015/lib/modules/select/public-api.js → esm2020/lib/modules/select/public-api.mjs} +0 -0
- package/esm2020/lib/modules/select/select/select.component.mjs +208 -0
- package/esm2020/lib/modules/select/select-enum/select-enum.component.mjs +42 -0
- package/esm2020/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +128 -0
- package/esm2020/lib/modules/select/select.module.mjs +68 -0
- package/{esm2015/lib/modules/sidenav/public-api.js → esm2020/lib/modules/sidenav/public-api.mjs} +0 -0
- package/esm2020/lib/modules/sidenav/sidenav/sidenav.component.mjs +15 -0
- package/esm2020/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +87 -0
- package/esm2020/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +12 -0
- package/esm2020/lib/modules/sidenav/sidenav-stack.service.mjs +52 -0
- package/esm2020/lib/modules/sidenav/sidenav.module.mjs +25 -0
- package/esm2020/lib/modules/sidenav/sidenav.service.mjs +195 -0
- package/{esm2015/lib/modules/stamp/public-api.js → esm2020/lib/modules/stamp/public-api.mjs} +0 -0
- package/esm2020/lib/modules/stamp/stamp-module.module.mjs +18 -0
- package/esm2020/lib/modules/stamp/stamp.component.mjs +14 -0
- package/{esm2015/lib/modules/table-button/public-api.js → esm2020/lib/modules/table-button/public-api.mjs} +0 -0
- package/esm2020/lib/modules/table-button/table-button.component.mjs +48 -0
- package/esm2020/lib/modules/table-button/table-button.module.mjs +21 -0
- package/esm2020/lib/services/abstract-model.service.mjs +509 -0
- package/esm2020/lib/services/enum.service.mjs +67 -0
- package/esm2020/lib/services/link-mutation.service.mjs +153 -0
- package/esm2020/lib/services/persistence.service.mjs +113 -0
- package/esm2020/lib/services/swiss-parsing-date-adapter.service.mjs +55 -0
- package/{esm2015/lib/types/types.js → esm2020/lib/types/types.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{ecodev-natural.js → ecodev-natural.mjs} +2791 -2361
- package/fesm2015/ecodev-natural.mjs.map +1 -0
- package/fesm2020/ecodev-natural.mjs +10506 -0
- package/fesm2020/ecodev-natural.mjs.map +1 -0
- package/lib/classes/abstract-controller.d.ts +3 -0
- package/lib/classes/abstract-detail.d.ts +3 -0
- package/lib/classes/abstract-editable-list.d.ts +3 -0
- package/lib/classes/abstract-list.d.ts +3 -0
- package/lib/classes/abstract-navigable-list.d.ts +3 -0
- package/lib/directives/http-prefix.directive.d.ts +3 -0
- package/lib/modules/alert/alert.module.d.ts +9 -0
- package/lib/modules/alert/alert.service.d.ts +3 -0
- package/lib/modules/alert/confirm.component.d.ts +3 -0
- package/lib/modules/avatar/avatar.module.d.ts +6 -0
- package/lib/modules/avatar/component/avatar.component.d.ts +3 -0
- package/lib/modules/avatar/service/avatar.service.d.ts +3 -0
- package/lib/modules/columns-picker/columns-picker-column.directive.d.ts +3 -0
- package/lib/modules/columns-picker/columns-picker.component.d.ts +3 -0
- package/lib/modules/columns-picker/columns-picker.module.d.ts +13 -0
- package/lib/modules/common/common-module.d.ts +16 -0
- package/lib/modules/common/directives/linkable-tab.directive.d.ts +3 -0
- package/lib/modules/common/directives/reactive-asterisk.directive.d.ts +3 -0
- package/lib/modules/common/directives/src-density.directive.d.ts +3 -0
- package/lib/modules/common/pipes/capitalize.pipe.d.ts +3 -0
- package/lib/modules/common/pipes/ellipsis.pipe.d.ts +3 -0
- package/lib/modules/common/pipes/enum.pipe.d.ts +3 -0
- package/lib/modules/common/pipes/swiss-date.pipe.d.ts +3 -0
- package/lib/modules/common/services/memory-storage.d.ts +3 -0
- package/lib/modules/common/services/seo.service.d.ts +3 -0
- package/lib/modules/detail-header/detail-header.component.d.ts +3 -0
- package/lib/modules/detail-header/detail-header.module.d.ts +9 -0
- package/lib/modules/dialog-trigger/dialog-trigger.component.d.ts +3 -0
- package/lib/modules/dialog-trigger/dialog-trigger.module.d.ts +7 -0
- package/lib/modules/dropdown-components/abstract-association-select-component.directive.d.ts +3 -0
- package/lib/modules/dropdown-components/natural-dropdown-components.module.d.ts +22 -0
- package/lib/modules/dropdown-components/type-date/type-date.component.d.ts +3 -0
- package/lib/modules/dropdown-components/type-date-range/type-date-range.component.d.ts +3 -0
- package/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.d.ts +3 -0
- package/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.d.ts +3 -0
- package/lib/modules/dropdown-components/type-number/type-number.component.d.ts +3 -0
- package/lib/modules/dropdown-components/type-select/type-select.component.d.ts +3 -0
- package/lib/modules/dropdown-components/type-text/type-text.component.d.ts +3 -0
- package/lib/modules/file/abstract-file.d.ts +3 -0
- package/lib/modules/file/component/file.component.d.ts +3 -0
- package/lib/modules/file/file-drop.directive.d.ts +3 -0
- package/lib/modules/file/file-select.directive.d.ts +3 -0
- package/lib/modules/file/file.module.d.ts +11 -0
- package/lib/modules/file/file.service.d.ts +3 -0
- package/lib/modules/fixed-button/fixed-button.component.d.ts +3 -0
- package/lib/modules/fixed-button/fixed-button.module.d.ts +9 -0
- package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +3 -0
- package/lib/modules/fixed-button-detail/fixed-button-detail.module.d.ts +8 -0
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +3 -0
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.d.ts +3 -0
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.d.ts +3 -0
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.d.ts +3 -0
- package/lib/modules/hierarchic-selector/hierarchic-selector.module.d.ts +21 -0
- package/lib/modules/icon/icon.component.d.ts +3 -0
- package/lib/modules/icon/icon.module.d.ts +7 -0
- package/lib/modules/matomo/matomo-module.module.d.ts +4 -0
- package/lib/modules/matomo/matomo.service.d.ts +3 -0
- package/lib/modules/panels/abstract-panel.d.ts +3 -0
- package/lib/modules/panels/panels.component.d.ts +3 -0
- package/lib/modules/panels/panels.module.d.ts +8 -0
- package/lib/modules/panels/panels.service.d.ts +3 -0
- package/lib/modules/relations/relations.component.d.ts +3 -0
- package/lib/modules/relations/relations.module.d.ts +15 -0
- package/lib/modules/search/dropdown-container/dropdown-container.component.d.ts +3 -0
- package/lib/modules/search/dropdown-container/dropdown-ref.d.ts +1 -1
- package/lib/modules/search/dropdown-container/dropdown.service.d.ts +3 -0
- package/lib/modules/search/facet-selector/facet-selector.component.d.ts +3 -0
- package/lib/modules/search/group/group.component.d.ts +3 -0
- package/lib/modules/search/input/input.component.d.ts +3 -0
- package/lib/modules/search/search/search.component.d.ts +3 -0
- package/lib/modules/search/search.module.d.ts +19 -0
- package/lib/modules/select/abstract-select.component.d.ts +4 -1
- package/lib/modules/select/select/select.component.d.ts +3 -0
- package/lib/modules/select/select-enum/select-enum.component.d.ts +3 -0
- package/lib/modules/select/select-hierarchic/select-hierarchic.component.d.ts +3 -0
- package/lib/modules/select/select.module.d.ts +19 -0
- package/lib/modules/sidenav/sidenav/sidenav.component.d.ts +3 -0
- package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +3 -0
- package/lib/modules/sidenav/sidenav-content/sidenav-content.component.d.ts +3 -0
- package/lib/modules/sidenav/sidenav-stack.service.d.ts +4 -1
- package/lib/modules/sidenav/sidenav.module.d.ts +11 -0
- package/lib/modules/sidenav/sidenav.service.d.ts +3 -0
- package/lib/modules/stamp/stamp-module.module.d.ts +6 -0
- package/lib/modules/stamp/stamp.component.d.ts +3 -0
- package/lib/modules/table-button/table-button.component.d.ts +3 -0
- package/lib/modules/table-button/table-button.module.d.ts +9 -0
- package/lib/services/enum.service.d.ts +3 -0
- package/lib/services/link-mutation.service.d.ts +3 -0
- package/lib/services/persistence.service.d.ts +3 -0
- package/lib/services/swiss-parsing-date-adapter.service.d.ts +4 -1
- package/package.json +25 -12
- package/src/lib/modules/alert/_alert.theme.scss +1 -1
- package/src/lib/modules/file/component/_file.theme.scss +1 -1
- package/src/lib/modules/icon/_icon.theme.scss +1 -1
- package/src/lib/modules/search/dropdown-container/_dropdown-container.theme.scss +1 -1
- package/src/lib/modules/table-button/_table-button.theme.scss +1 -1
- package/src/lib/styles/_table.scss +1 -1
- package/theming/_natural.theme.scss +1 -1
- package/bundles/ecodev-natural.umd.js +0 -11318
- package/bundles/ecodev-natural.umd.js.map +0 -1
- package/ecodev-natural.metadata.json +0 -1
- package/esm2015/ecodev-natural.js +0 -14
- package/esm2015/lib/classes/abstract-controller.js +0 -29
- package/esm2015/lib/classes/abstract-detail.js +0 -157
- package/esm2015/lib/classes/abstract-editable-list.js +0 -97
- package/esm2015/lib/classes/abstract-list.js +0 -409
- package/esm2015/lib/classes/abstract-navigable-list.js +0 -126
- package/esm2015/lib/classes/data-source.js +0 -76
- package/esm2015/lib/classes/query-variable-manager.js +0 -161
- package/esm2015/lib/classes/validators.js +0 -176
- package/esm2015/lib/directives/http-prefix.directive.js +0 -46
- package/esm2015/lib/modules/alert/alert.module.js +0 -15
- package/esm2015/lib/modules/alert/alert.service.js +0 -59
- package/esm2015/lib/modules/alert/confirm.component.js +0 -17
- package/esm2015/lib/modules/avatar/avatar.module.js +0 -14
- package/esm2015/lib/modules/avatar/component/avatar.component.js +0 -158
- package/esm2015/lib/modules/avatar/service/avatar.service.js +0 -65
- package/esm2015/lib/modules/avatar/sources/gravatar.js +0 -29
- package/esm2015/lib/modules/columns-picker/columns-picker-column.directive.js +0 -41
- package/esm2015/lib/modules/columns-picker/columns-picker.component.js +0 -82
- package/esm2015/lib/modules/columns-picker/columns-picker.module.js +0 -28
- package/esm2015/lib/modules/common/common-module.js +0 -35
- package/esm2015/lib/modules/common/directives/linkable-tab.directive.js +0 -82
- package/esm2015/lib/modules/common/directives/reactive-asterisk.directive.js +0 -31
- package/esm2015/lib/modules/common/directives/src-density.directive.js +0 -63
- package/esm2015/lib/modules/common/pipes/capitalize.pipe.js +0 -14
- package/esm2015/lib/modules/common/pipes/ellipsis.pipe.js +0 -10
- package/esm2015/lib/modules/common/pipes/enum.pipe.js +0 -24
- package/esm2015/lib/modules/common/pipes/swiss-date.pipe.js +0 -16
- package/esm2015/lib/modules/common/services/memory-storage.js +0 -110
- package/esm2015/lib/modules/common/services/seo.service.js +0 -120
- package/esm2015/lib/modules/detail-header/detail-header.component.js +0 -63
- package/esm2015/lib/modules/detail-header/detail-header.module.js +0 -16
- package/esm2015/lib/modules/dialog-trigger/dialog-trigger.component.js +0 -68
- package/esm2015/lib/modules/dialog-trigger/dialog-trigger.module.js +0 -14
- package/esm2015/lib/modules/dropdown-components/abstract-association-select-component.directive.js +0 -96
- package/esm2015/lib/modules/dropdown-components/natural-dropdown-components.module.js +0 -51
- package/esm2015/lib/modules/dropdown-components/type-date/type-date.component.js +0 -123
- package/esm2015/lib/modules/dropdown-components/type-date-range/type-date-range.component.js +0 -128
- package/esm2015/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.js +0 -63
- package/esm2015/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.js +0 -31
- package/esm2015/lib/modules/dropdown-components/type-number/type-number.component.js +0 -99
- package/esm2015/lib/modules/dropdown-components/type-select/type-select.component.js +0 -161
- package/esm2015/lib/modules/dropdown-components/type-text/type-text.component.js +0 -53
- package/esm2015/lib/modules/file/abstract-file.js +0 -223
- package/esm2015/lib/modules/file/component/file.component.js +0 -133
- package/esm2015/lib/modules/file/file-drop.directive.js +0 -99
- package/esm2015/lib/modules/file/file-select.directive.js +0 -25
- package/esm2015/lib/modules/file/file.module.js +0 -19
- package/esm2015/lib/modules/file/file.service.js +0 -47
- package/esm2015/lib/modules/fixed-button/fixed-button.component.js +0 -23
- package/esm2015/lib/modules/fixed-button/fixed-button.module.js +0 -16
- package/esm2015/lib/modules/fixed-button-detail/fixed-button-detail.component.js +0 -31
- package/esm2015/lib/modules/fixed-button-detail/fixed-button-detail.module.js +0 -15
- package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.js +0 -351
- package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.js +0 -258
- package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.js +0 -28
- package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.js +0 -23
- package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector.module.js +0 -46
- package/esm2015/lib/modules/icon/icon.component.js +0 -78
- package/esm2015/lib/modules/icon/icon.module.js +0 -25
- package/esm2015/lib/modules/matomo/matomo-module.module.js +0 -7
- package/esm2015/lib/modules/matomo/matomo.service.js +0 -106
- package/esm2015/lib/modules/panels/abstract-panel.js +0 -50
- package/esm2015/lib/modules/panels/panels.component.js +0 -26
- package/esm2015/lib/modules/panels/panels.module.js +0 -28
- package/esm2015/lib/modules/panels/panels.service.js +0 -331
- package/esm2015/lib/modules/relations/relations.component.js +0 -181
- package/esm2015/lib/modules/relations/relations.module.js +0 -33
- package/esm2015/lib/modules/search/dropdown-container/dropdown-container.component.js +0 -87
- package/esm2015/lib/modules/search/dropdown-container/dropdown.service.js +0 -95
- package/esm2015/lib/modules/search/facet-selector/facet-selector.component.js +0 -47
- package/esm2015/lib/modules/search/group/group.component.js +0 -39
- package/esm2015/lib/modules/search/input/input.component.js +0 -316
- package/esm2015/lib/modules/search/search/search.component.js +0 -71
- package/esm2015/lib/modules/search/search.module.js +0 -52
- package/esm2015/lib/modules/select/abstract-select.component.js +0 -176
- package/esm2015/lib/modules/select/select/select.component.js +0 -190
- package/esm2015/lib/modules/select/select-enum/select-enum.component.js +0 -34
- package/esm2015/lib/modules/select/select-hierarchic/select-hierarchic.component.js +0 -120
- package/esm2015/lib/modules/select/select.module.js +0 -39
- package/esm2015/lib/modules/sidenav/sidenav/sidenav.component.js +0 -12
- package/esm2015/lib/modules/sidenav/sidenav-container/sidenav-container.component.js +0 -79
- package/esm2015/lib/modules/sidenav/sidenav-content/sidenav-content.component.js +0 -13
- package/esm2015/lib/modules/sidenav/sidenav-stack.service.js +0 -50
- package/esm2015/lib/modules/sidenav/sidenav.module.js +0 -20
- package/esm2015/lib/modules/sidenav/sidenav.service.js +0 -199
- package/esm2015/lib/modules/stamp/stamp-module.module.js +0 -13
- package/esm2015/lib/modules/stamp/stamp.component.js +0 -13
- package/esm2015/lib/modules/table-button/table-button.component.js +0 -38
- package/esm2015/lib/modules/table-button/table-button.module.js +0 -16
- package/esm2015/lib/services/abstract-model.service.js +0 -509
- package/esm2015/lib/services/enum.service.js +0 -68
- package/esm2015/lib/services/link-mutation.service.js +0 -155
- package/esm2015/lib/services/persistence.service.js +0 -114
- package/esm2015/lib/services/swiss-parsing-date-adapter.service.js +0 -55
- package/fesm2015/ecodev-natural.js.map +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { NaturalFixedButtonModule } from '../fixed-button/fixed-button.module';
|
|
4
|
+
import { NaturalFixedButtonDetailComponent } from './fixed-button-detail.component';
|
|
5
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class NaturalFixedButtonDetailModule {
|
|
8
|
+
}
|
|
9
|
+
NaturalFixedButtonDetailModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NaturalFixedButtonDetailModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
NaturalFixedButtonDetailModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NaturalFixedButtonDetailModule, declarations: [NaturalFixedButtonDetailComponent], imports: [CommonModule, NaturalFixedButtonModule, MatTooltipModule], exports: [NaturalFixedButtonDetailComponent] });
|
|
11
|
+
NaturalFixedButtonDetailModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NaturalFixedButtonDetailModule, imports: [[CommonModule, NaturalFixedButtonModule, MatTooltipModule]] });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NaturalFixedButtonDetailModule, decorators: [{
|
|
13
|
+
type: NgModule,
|
|
14
|
+
args: [{
|
|
15
|
+
declarations: [NaturalFixedButtonDetailComponent],
|
|
16
|
+
imports: [CommonModule, NaturalFixedButtonModule, MatTooltipModule],
|
|
17
|
+
exports: [NaturalFixedButtonDetailComponent],
|
|
18
|
+
}]
|
|
19
|
+
}] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtYnV0dG9uLWRldGFpbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9maXhlZC1idXR0b24tZGV0YWlsL2ZpeGVkLWJ1dHRvbi1kZXRhaWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDOztBQU8zRCxNQUFNLE9BQU8sOEJBQThCOzsySEFBOUIsOEJBQThCOzRIQUE5Qiw4QkFBOEIsaUJBSnhCLGlDQUFpQyxhQUN0QyxZQUFZLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLGFBQ3hELGlDQUFpQzs0SEFFbEMsOEJBQThCLFlBSDlCLENBQUMsWUFBWSxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixDQUFDOzJGQUcxRCw4QkFBOEI7a0JBTDFDLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsaUNBQWlDLENBQUM7b0JBQ2pELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSx3QkFBd0IsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDbkUsT0FBTyxFQUFFLENBQUMsaUNBQWlDLENBQUM7aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF0dXJhbEZpeGVkQnV0dG9uTW9kdWxlfSBmcm9tICcuLi9maXhlZC1idXR0b24vZml4ZWQtYnV0dG9uLm1vZHVsZSc7XG5pbXBvcnQge05hdHVyYWxGaXhlZEJ1dHRvbkRldGFpbENvbXBvbmVudH0gZnJvbSAnLi9maXhlZC1idXR0b24tZGV0YWlsLmNvbXBvbmVudCc7XG5pbXBvcnQge01hdFRvb2x0aXBNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW05hdHVyYWxGaXhlZEJ1dHRvbkRldGFpbENvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmF0dXJhbEZpeGVkQnV0dG9uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbTmF0dXJhbEZpeGVkQnV0dG9uRGV0YWlsQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbEZpeGVkQnV0dG9uRGV0YWlsTW9kdWxlIHt9XG4iXX0=
|
|
File without changes
|
|
@@ -9,4 +9,4 @@ export class HierarchicFlatNode {
|
|
|
9
9
|
this.loading = false;
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdC1ub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvaGllcmFyY2hpYy1zZWxlY3Rvci9jbGFzc2VzL2ZsYXQtbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sa0JBQWtCO0lBRzNCLFlBQ29CLElBQXlCLEVBQ3pCLElBQVksRUFDWixRQUFnQixDQUFDLEVBQzFCLGFBQXNCLEtBQUssRUFDbEIsYUFBc0IsSUFBSSxFQUNuQyxlQUF3QixJQUFJO1FBTG5CLFNBQUksR0FBSixJQUFJLENBQXFCO1FBQ3pCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQWlCO1FBQ2xCLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQ25DLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQVJoQyxZQUFPLEdBQUcsS0FBSyxDQUFDO0lBU3BCLENBQUM7Q0FDUCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SGllcmFyY2hpY01vZGVsTm9kZX0gZnJvbSAnLi9tb2RlbC1ub2RlJztcblxuZXhwb3J0IGNsYXNzIEhpZXJhcmNoaWNGbGF0Tm9kZSB7XG4gICAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IG5vZGU6IEhpZXJhcmNoaWNNb2RlbE5vZGUsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBsZXZlbDogbnVtYmVyID0gMCxcbiAgICAgICAgcHVibGljIGV4cGFuZGFibGU6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGFibGU6IGJvb2xlYW4gPSB0cnVlLFxuICAgICAgICBwdWJsaWMgZGVzZWxlY3RhYmxlOiBib29sZWFuID0gdHJ1ZSxcbiAgICApIHt9XG59XG4iXX0=
|
|
File without changes
|
|
File without changes
|
|
@@ -9,4 +9,4 @@ export class HierarchicModelNode {
|
|
|
9
9
|
return this.childrenChange.value;
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2hpZXJhcmNoaWMtc2VsZWN0b3IvY2xhc3Nlcy9tb2RlbC1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFNckMsTUFBTSxPQUFPLG1CQUFtQjtJQUc1QixZQUNvQixLQUFzQixFQUN0QixNQUFzQztRQUR0QyxVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFnQztRQUpuRCxtQkFBYyxHQUEyQyxJQUFJLGVBQWUsQ0FBd0IsRUFBRSxDQUFDLENBQUM7SUFLNUcsQ0FBQztJQUVKLElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFDckMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb259IGZyb20gJy4vaGllcmFyY2hpYy1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7TmFtZU9yRnVsbE5hbWV9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgSGllcmFyY2hpY01vZGVsID0ge2lkOiBzdHJpbmc7IF9fdHlwZW5hbWU6IHN0cmluZ30gJiBOYW1lT3JGdWxsTmFtZTtcblxuZXhwb3J0IGNsYXNzIEhpZXJhcmNoaWNNb2RlbE5vZGUge1xuICAgIHB1YmxpYyBjaGlsZHJlbkNoYW5nZTogQmVoYXZpb3JTdWJqZWN0PEhpZXJhcmNoaWNNb2RlbE5vZGVbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhpZXJhcmNoaWNNb2RlbE5vZGVbXT4oW10pO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgbW9kZWw6IEhpZXJhcmNoaWNNb2RlbCxcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uLFxuICAgICkge31cblxuICAgIHB1YmxpYyBnZXQgY2hpbGRyZW4oKTogSGllcmFyY2hpY01vZGVsTm9kZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW5DaGFuZ2UudmFsdWU7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
import { SelectionModel } from '@angular/cdk/collections';
|
|
2
|
+
import { FlatTreeControl } from '@angular/cdk/tree';
|
|
3
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
4
|
+
import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';
|
|
5
|
+
import { finalize, takeUntil } from 'rxjs/operators';
|
|
6
|
+
import { NaturalAbstractController } from '../../../classes/abstract-controller';
|
|
7
|
+
import { toGraphQLDoctrineFilter } from '../../search/classes/graphql-doctrine';
|
|
8
|
+
import { HierarchicFlatNode } from '../classes/flat-node';
|
|
9
|
+
import { NaturalHierarchicSelectorService } from './hierarchic-selector.service';
|
|
10
|
+
import { replaceObjectKeepingReference } from '../../../classes/utility';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "./hierarchic-selector.service";
|
|
13
|
+
import * as i2 from "../../search/search/search.component";
|
|
14
|
+
import * as i3 from "@angular/material/progress-spinner";
|
|
15
|
+
import * as i4 from "@angular/material/tree";
|
|
16
|
+
import * as i5 from "@angular/material/button";
|
|
17
|
+
import * as i6 from "../../icon/icon.component";
|
|
18
|
+
import * as i7 from "@angular/material/checkbox";
|
|
19
|
+
import * as i8 from "@angular/material/chips";
|
|
20
|
+
import * as i9 from "@angular/common";
|
|
21
|
+
export class NaturalHierarchicSelectorComponent extends NaturalAbstractController {
|
|
22
|
+
constructor(hierarchicSelectorService) {
|
|
23
|
+
super();
|
|
24
|
+
this.hierarchicSelectorService = hierarchicSelectorService;
|
|
25
|
+
/**
|
|
26
|
+
* If multiple or single item selection
|
|
27
|
+
*/
|
|
28
|
+
this.multiple = false;
|
|
29
|
+
/**
|
|
30
|
+
* Selected items
|
|
31
|
+
* Organized by key, containing each an array of selected items of same type
|
|
32
|
+
*/
|
|
33
|
+
this.selected = {};
|
|
34
|
+
/**
|
|
35
|
+
* Wherever if selectable elements can be unselected
|
|
36
|
+
*/
|
|
37
|
+
this.allowUnselect = true;
|
|
38
|
+
/**
|
|
39
|
+
* Search facets
|
|
40
|
+
*/
|
|
41
|
+
this.searchFacets = [];
|
|
42
|
+
/**
|
|
43
|
+
* Selections to apply on natural-search on component initialisation
|
|
44
|
+
*/
|
|
45
|
+
this.searchSelections = [];
|
|
46
|
+
/**
|
|
47
|
+
* Emits when natural-search selections change
|
|
48
|
+
*/
|
|
49
|
+
this.searchSelectionChange = new EventEmitter();
|
|
50
|
+
/**
|
|
51
|
+
* Inner representation of selected @Input() to allow flat listing as mat-chip.
|
|
52
|
+
*/
|
|
53
|
+
this.selectedNodes = [];
|
|
54
|
+
/**
|
|
55
|
+
* Emits selection change
|
|
56
|
+
* Returns a Literal where selected models are organized by key
|
|
57
|
+
*/
|
|
58
|
+
this.selectionChange = new EventEmitter();
|
|
59
|
+
this.loading = false;
|
|
60
|
+
/**
|
|
61
|
+
* Cache for transformed nodes
|
|
62
|
+
*/
|
|
63
|
+
this.flatNodeMap = new Map();
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Angular OnInit implementation
|
|
67
|
+
*/
|
|
68
|
+
ngOnInit() {
|
|
69
|
+
// Init tree checkbox selectors
|
|
70
|
+
this.flatNodesSelection = new SelectionModel(this.multiple);
|
|
71
|
+
// Tree controllers and manipulators
|
|
72
|
+
this.treeFlattener = new MatTreeFlattener(this.transformer(), this.getLevel(), this.isExpandable(), this.getChildren());
|
|
73
|
+
this.treeControl = new FlatTreeControl(this.getLevel(), this.isExpandable());
|
|
74
|
+
// The dataSource contains a nested ModelNodes list. Each ModelNode has a child attribute that returns an observable.
|
|
75
|
+
// The dataSource contains a flat representation of the nested ModelNodes that is generated by the treeFlattener related functions
|
|
76
|
+
this.dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener);
|
|
77
|
+
// Update dataSource when receiving new list -> we assign the whole tree
|
|
78
|
+
// The treeControl and treeFlattener will generate the displayed tree
|
|
79
|
+
this.hierarchicSelectorService.dataChange
|
|
80
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
81
|
+
.subscribe(data => (this.dataSource.data = data));
|
|
82
|
+
// Prevent empty screen on first load and init NaturalHierarchicSelectorService with inputted configuration
|
|
83
|
+
let variables;
|
|
84
|
+
if (this.searchSelections.some(s => s.length)) {
|
|
85
|
+
variables = { filter: toGraphQLDoctrineFilter(this.searchFacets, this.searchSelections) };
|
|
86
|
+
}
|
|
87
|
+
this.loadRoots(variables);
|
|
88
|
+
// OrganizedSelection into list usable by template
|
|
89
|
+
this.updateInnerSelection(this.selected);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Angular OnChange implementation
|
|
93
|
+
*/
|
|
94
|
+
ngOnChanges(changes) {
|
|
95
|
+
if (changes.selected && !changes.selected.firstChange) {
|
|
96
|
+
this.updateInnerSelection(this.selected);
|
|
97
|
+
}
|
|
98
|
+
if (changes.filters && !changes.filters.firstChange) {
|
|
99
|
+
this.loadRoots();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Toggle selection of a FlatNode, considering if multiple selection is activated or not
|
|
104
|
+
*/
|
|
105
|
+
toggleFlatNode(flatNode) {
|
|
106
|
+
if (this.multiple) {
|
|
107
|
+
// Is multiple allowed, just toggle element
|
|
108
|
+
if (this.flatNodesSelection.isSelected(flatNode)) {
|
|
109
|
+
this.unselectFlatNode(flatNode);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
this.selectFlatNode(flatNode);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else if (!this.multiple) {
|
|
116
|
+
if (this.flatNodesSelection.isSelected(flatNode)) {
|
|
117
|
+
this.unselectSingleFlatNode(flatNode);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
// If not multiple, and we want to select an element, unselect everything before to keep a single selection
|
|
121
|
+
this.selectSingleFlatNode(flatNode);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* When unselecting an element from the mat-chips, it can be deep in the hierarchy, and the tree element may not exist...
|
|
127
|
+
* ... but we still need to remove the element from the mat-chips list.
|
|
128
|
+
*/
|
|
129
|
+
unselectModelNode(node) {
|
|
130
|
+
const flatNode = this.getFlatNode(node);
|
|
131
|
+
if (flatNode) {
|
|
132
|
+
this.unselectFlatNode(flatNode);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// Remove from chips list only if no flatNode, because unselectFlatNode() already deals with it.
|
|
136
|
+
this.removeModelNode(node);
|
|
137
|
+
this.updateSelection(this.selectedNodes);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
isNodeTogglable(flatNode) {
|
|
141
|
+
if (this.isNodeSelected(flatNode.node)) {
|
|
142
|
+
return flatNode.deselectable;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
return flatNode.selectable;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
getDisplayFn(config) {
|
|
149
|
+
if (config.displayWith) {
|
|
150
|
+
return config.displayWith;
|
|
151
|
+
}
|
|
152
|
+
if (this.displayWith) {
|
|
153
|
+
return this.displayWith;
|
|
154
|
+
}
|
|
155
|
+
return item => (item ? item.fullName || item.name : '');
|
|
156
|
+
}
|
|
157
|
+
loadChildren(flatNode) {
|
|
158
|
+
if (this.treeControl.isExpanded(flatNode)) {
|
|
159
|
+
this.hierarchicSelectorService.loadChildren(flatNode, this.filters);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Created to collapse all children when closing a parent, but not sure it's good.
|
|
164
|
+
*/
|
|
165
|
+
// public loadChildren(flatNode: HierarchicFlatNode) {
|
|
166
|
+
// if (this.treeControl.isExpanded(flatNode)) {
|
|
167
|
+
//
|
|
168
|
+
// const cachedFlatNode = this.getFlatNode(flatNode.node);
|
|
169
|
+
// if (cachedFlatNode) {
|
|
170
|
+
// this.hierarchicSelectorService.loadChildren(cachedFlatNode, this.filters);
|
|
171
|
+
//
|
|
172
|
+
// // Close children
|
|
173
|
+
// cachedFlatNode.node.children.forEach(child => {
|
|
174
|
+
// const childNode = this.getFlatNode(child);
|
|
175
|
+
// if (childNode) {
|
|
176
|
+
// this.treeControl.collapse(childNode);
|
|
177
|
+
// }
|
|
178
|
+
// });
|
|
179
|
+
// }
|
|
180
|
+
// }
|
|
181
|
+
// }
|
|
182
|
+
getChildren() {
|
|
183
|
+
return (node) => {
|
|
184
|
+
return node.childrenChange;
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Transforms a HierarchicModelNode into a FlatNode
|
|
189
|
+
*/
|
|
190
|
+
transformer() {
|
|
191
|
+
return (node, level) => {
|
|
192
|
+
return this.getOrCreateFlatNode(node, level);
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Return deep of the node in the tree
|
|
197
|
+
*/
|
|
198
|
+
getLevel() {
|
|
199
|
+
return (node) => {
|
|
200
|
+
return node.level;
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Is always expandable because we load on demand, we don't know if there are children yet
|
|
205
|
+
*/
|
|
206
|
+
isExpandable() {
|
|
207
|
+
return (node) => {
|
|
208
|
+
return node.expandable;
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
getOrCreateFlatNode(node, level) {
|
|
212
|
+
// Return FlatNode if exists
|
|
213
|
+
const flatNode = this.getFlatNode(node);
|
|
214
|
+
if (flatNode) {
|
|
215
|
+
return flatNode;
|
|
216
|
+
}
|
|
217
|
+
// Return new FlatNode
|
|
218
|
+
return this.createFlatNode(node, level);
|
|
219
|
+
}
|
|
220
|
+
search(selections) {
|
|
221
|
+
this.searchSelectionChange.emit(selections);
|
|
222
|
+
if (selections.some(s => s.length)) {
|
|
223
|
+
const variables = { filter: toGraphQLDoctrineFilter(this.searchFacets, selections) };
|
|
224
|
+
this.hierarchicSelectorService.search(variables, this.filters);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
this.loadRoots();
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
loadRoots(searchVariables) {
|
|
231
|
+
this.loading = true;
|
|
232
|
+
this.flatNodeMap = new Map();
|
|
233
|
+
this.hierarchicSelectorService
|
|
234
|
+
.init(this.config, this.filters, searchVariables || null)
|
|
235
|
+
.pipe(finalize(() => (this.loading = false)))
|
|
236
|
+
.subscribe();
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Sync inner selection (tree and mat-chips) according to selected input attribute
|
|
240
|
+
*/
|
|
241
|
+
updateInnerSelection(selected) {
|
|
242
|
+
// Transform an OrganizedModelSelection into a ModelNode list that is used in the selected zone of the component (see template)
|
|
243
|
+
this.selectedNodes = this.hierarchicSelectorService.fromOrganizedSelection(selected);
|
|
244
|
+
this.flatNodesSelection.clear();
|
|
245
|
+
for (const node of this.selectedNodes) {
|
|
246
|
+
const flatNode = this.getFlatNode(node);
|
|
247
|
+
if (flatNode) {
|
|
248
|
+
this.flatNodesSelection.select(flatNode);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Unselect a node, keeping the rest of the selected untouched
|
|
254
|
+
*/
|
|
255
|
+
unselectFlatNode(flatNode) {
|
|
256
|
+
this.flatNodesSelection.deselect(flatNode);
|
|
257
|
+
this.removeModelNode(flatNode.node);
|
|
258
|
+
this.updateSelection(this.selectedNodes);
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Remove a node from chip lists
|
|
262
|
+
*/
|
|
263
|
+
removeModelNode(node) {
|
|
264
|
+
const key = this.getMapKey(node.model);
|
|
265
|
+
const selectionIndex = this.selectedNodes.findIndex(n => this.getMapKey(n.model) === key);
|
|
266
|
+
this.selectedNodes.splice(selectionIndex, 1);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Select a node, keeping th rest of the selected untouched
|
|
270
|
+
*/
|
|
271
|
+
selectFlatNode(flatNode) {
|
|
272
|
+
this.flatNodesSelection.select(flatNode);
|
|
273
|
+
this.selectedNodes.push(flatNode.node);
|
|
274
|
+
this.updateSelection(this.selectedNodes);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Clear all selected and select the given node
|
|
278
|
+
*/
|
|
279
|
+
selectSingleFlatNode(flatNode) {
|
|
280
|
+
this.flatNodesSelection.clear();
|
|
281
|
+
this.flatNodesSelection.select(flatNode);
|
|
282
|
+
this.selectedNodes = [flatNode.node];
|
|
283
|
+
this.updateSelection(this.selectedNodes);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Clear all selected and select the given node
|
|
287
|
+
*/
|
|
288
|
+
unselectSingleFlatNode(flatNode) {
|
|
289
|
+
this.flatNodesSelection.clear();
|
|
290
|
+
this.selectedNodes = [];
|
|
291
|
+
this.updateSelection(this.selectedNodes);
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Transform the given elements into the organized selection that is emitted to output
|
|
295
|
+
*/
|
|
296
|
+
updateSelection(selected) {
|
|
297
|
+
const organizedFlatNodesSelection = this.hierarchicSelectorService.toOrganizedSelection(selected);
|
|
298
|
+
replaceObjectKeepingReference(this.selected, organizedFlatNodesSelection);
|
|
299
|
+
this.selectionChange.emit(organizedFlatNodesSelection);
|
|
300
|
+
}
|
|
301
|
+
isNodeSelected(node) {
|
|
302
|
+
const key = this.getMapKey(node.model);
|
|
303
|
+
return this.selectedNodes.some(n => this.getMapKey(n.model) === key);
|
|
304
|
+
}
|
|
305
|
+
getFlatNode(node) {
|
|
306
|
+
const key = this.getMapKey(node.model);
|
|
307
|
+
return this.flatNodeMap.get(key) || null;
|
|
308
|
+
}
|
|
309
|
+
createFlatNode(node, level) {
|
|
310
|
+
const key = this.getMapKey(node.model);
|
|
311
|
+
const name = this.getDisplayFn(node.config)(node.model);
|
|
312
|
+
const expandable = false;
|
|
313
|
+
const isCustomSelectable = node.config.isSelectableCallback
|
|
314
|
+
? node.config.isSelectableCallback(node.model)
|
|
315
|
+
: true;
|
|
316
|
+
const isSelectable = !!node.config.selectableAtKey && isCustomSelectable;
|
|
317
|
+
const flatNode = new HierarchicFlatNode(node, name, level, expandable, isSelectable);
|
|
318
|
+
this.hierarchicSelectorService.countItems(flatNode, this.filters);
|
|
319
|
+
// Mark node as selected if needed (checks the selected processed input)
|
|
320
|
+
if (this.isNodeSelected(node)) {
|
|
321
|
+
if (!this.allowUnselect) {
|
|
322
|
+
flatNode.deselectable = false;
|
|
323
|
+
}
|
|
324
|
+
this.flatNodesSelection.select(flatNode);
|
|
325
|
+
}
|
|
326
|
+
// Cache FlatNode
|
|
327
|
+
this.flatNodeMap.set(key, flatNode);
|
|
328
|
+
return flatNode;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Returns an identifier key for map cache
|
|
332
|
+
* As many object types can be used, this function considers typename and ID to return something like document-123
|
|
333
|
+
*/
|
|
334
|
+
getMapKey(model) {
|
|
335
|
+
return model.__typename + '-' + model.id;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
NaturalHierarchicSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NaturalHierarchicSelectorComponent, deps: [{ token: i1.NaturalHierarchicSelectorService }], target: i0.ɵɵFactoryTarget.Component });
|
|
339
|
+
NaturalHierarchicSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: NaturalHierarchicSelectorComponent, selector: "natural-hierarchic-selector", inputs: { displayWith: "displayWith", config: "config", multiple: "multiple", selected: "selected", allowUnselect: "allowUnselect", filters: "filters", searchFacets: "searchFacets", searchSelections: "searchSelections" }, outputs: { searchSelectionChange: "searchSelectionChange", selectionChange: "selectionChange" }, providers: [NaturalHierarchicSelectorService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [style.margin-bottom.px]=\"20\">\n <natural-search\n (selectionChange)=\"search($event)\"\n [facets]=\"searchFacets\"\n [selections]=\"searchSelections\"\n ></natural-search>\n</div>\n\n<div class=\"body\">\n <mat-progress-spinner\n *ngIf=\"loading\"\n [diameter]=\"36\"\n mode=\"indeterminate\"\n style=\"margin: 10px\"\n ></mat-progress-spinner>\n\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <mat-tree-node *matTreeNodeDef=\"let node\" [ngClass]=\"{leaf: !node.expandable}\" matTreeNodePadding>\n <button\n (click)=\"loadChildren(node)\"\n *ngIf=\"node.expandable\"\n [attr.aria-label]=\"'toggle ' + node.name\"\n mat-icon-button\n matTreeNodeToggle\n >\n <mat-progress-spinner\n *ngIf=\"node.loading\"\n [diameter]=\"24\"\n [strokeWidth]=\"5\"\n mode=\"indeterminate\"\n style=\"margin: 8px\"\n ></mat-progress-spinner>\n\n <natural-icon\n *ngIf=\"!node.loading\"\n [name]=\"treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'\"\n >\n </natural-icon>\n </button>\n\n <mat-checkbox\n (change)=\"toggleFlatNode(node)\"\n [checked]=\"flatNodesSelection.isSelected(node)\"\n [disabled]=\"!isNodeTogglable(node)\"\n style=\"margin-right: 10px\"\n >\n <natural-icon\n *ngIf=\"node.node.config.icon\"\n [name]=\"node.node.config.icon\"\n style=\"margin-right: 10px\"\n ></natural-icon>\n <span>{{ node.name }}</span>\n </mat-checkbox>\n </mat-tree-node>\n </mat-tree>\n\n <mat-chip-list aria-orientation=\"vertical\" class=\"mat-chip-list-stacked\">\n <mat-chip\n (removed)=\"unselectModelNode(node)\"\n *ngFor=\"let node of selectedNodes\"\n [removable]=\"true\"\n [selectable]=\"false\"\n >\n <natural-icon *ngIf=\"node.config.icon\" [name]=\"node.config.icon\"></natural-icon>\n <div class=\"mat-body chip-label\">{{ node.model.name || node.model.fullName }}</div>\n <natural-icon matChipRemove name=\"cancel\"></natural-icon>\n </mat-chip>\n </mat-chip-list>\n</div>\n\n<div *ngIf=\"!loading && !dataSource.data.length\" class=\"margin-v\" i18n>Aucun r\u00E9sultat</div>\n", styles: [":host{display:block}:host ul,:host li{-webkit-margin-before:0;-webkit-margin-after:0;list-style-type:none}:host natural-icon{width:18px;height:18px;font-size:18px;margin-right:5px}:host .mat-tree-node.leaf{margin-left:40px}:host .body{display:flex;flex-direction:row;justify-content:space-between}:host .body mat-tree{flex:66}:host .body mat-chip-list{flex:33}:host mat-tree{flex-shrink:0}:host mat-chip-list{margin-left:10px}:host mat-chip{display:flex;flex-direction:row;height:auto!important}:host mat-chip .chip-label{flex:1}\n"], components: [{ type: i2.NaturalSearchComponent, selector: "natural-search", inputs: ["placeholder", "facets", "multipleGroups", "selections"], outputs: ["selectionChange"] }, { type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { type: i4.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.NaturalIconComponent, selector: "natural-icon", inputs: ["label", "labelColor", "labelPosition", "name", "size"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i8.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { type: i4.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { type: i4.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i8.MatChipRemove, selector: "[matChipRemove]" }] });
|
|
340
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NaturalHierarchicSelectorComponent, decorators: [{
|
|
341
|
+
type: Component,
|
|
342
|
+
args: [{ selector: 'natural-hierarchic-selector', providers: [NaturalHierarchicSelectorService], template: "<div [style.margin-bottom.px]=\"20\">\n <natural-search\n (selectionChange)=\"search($event)\"\n [facets]=\"searchFacets\"\n [selections]=\"searchSelections\"\n ></natural-search>\n</div>\n\n<div class=\"body\">\n <mat-progress-spinner\n *ngIf=\"loading\"\n [diameter]=\"36\"\n mode=\"indeterminate\"\n style=\"margin: 10px\"\n ></mat-progress-spinner>\n\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <mat-tree-node *matTreeNodeDef=\"let node\" [ngClass]=\"{leaf: !node.expandable}\" matTreeNodePadding>\n <button\n (click)=\"loadChildren(node)\"\n *ngIf=\"node.expandable\"\n [attr.aria-label]=\"'toggle ' + node.name\"\n mat-icon-button\n matTreeNodeToggle\n >\n <mat-progress-spinner\n *ngIf=\"node.loading\"\n [diameter]=\"24\"\n [strokeWidth]=\"5\"\n mode=\"indeterminate\"\n style=\"margin: 8px\"\n ></mat-progress-spinner>\n\n <natural-icon\n *ngIf=\"!node.loading\"\n [name]=\"treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'\"\n >\n </natural-icon>\n </button>\n\n <mat-checkbox\n (change)=\"toggleFlatNode(node)\"\n [checked]=\"flatNodesSelection.isSelected(node)\"\n [disabled]=\"!isNodeTogglable(node)\"\n style=\"margin-right: 10px\"\n >\n <natural-icon\n *ngIf=\"node.node.config.icon\"\n [name]=\"node.node.config.icon\"\n style=\"margin-right: 10px\"\n ></natural-icon>\n <span>{{ node.name }}</span>\n </mat-checkbox>\n </mat-tree-node>\n </mat-tree>\n\n <mat-chip-list aria-orientation=\"vertical\" class=\"mat-chip-list-stacked\">\n <mat-chip\n (removed)=\"unselectModelNode(node)\"\n *ngFor=\"let node of selectedNodes\"\n [removable]=\"true\"\n [selectable]=\"false\"\n >\n <natural-icon *ngIf=\"node.config.icon\" [name]=\"node.config.icon\"></natural-icon>\n <div class=\"mat-body chip-label\">{{ node.model.name || node.model.fullName }}</div>\n <natural-icon matChipRemove name=\"cancel\"></natural-icon>\n </mat-chip>\n </mat-chip-list>\n</div>\n\n<div *ngIf=\"!loading && !dataSource.data.length\" class=\"margin-v\" i18n>Aucun r\u00E9sultat</div>\n", styles: [":host{display:block}:host ul,:host li{-webkit-margin-before:0;-webkit-margin-after:0;list-style-type:none}:host natural-icon{width:18px;height:18px;font-size:18px;margin-right:5px}:host .mat-tree-node.leaf{margin-left:40px}:host .body{display:flex;flex-direction:row;justify-content:space-between}:host .body mat-tree{flex:66}:host .body mat-chip-list{flex:33}:host mat-tree{flex-shrink:0}:host mat-chip-list{margin-left:10px}:host mat-chip{display:flex;flex-direction:row;height:auto!important}:host mat-chip .chip-label{flex:1}\n"] }]
|
|
343
|
+
}], ctorParameters: function () { return [{ type: i1.NaturalHierarchicSelectorService }]; }, propDecorators: { displayWith: [{
|
|
344
|
+
type: Input
|
|
345
|
+
}], config: [{
|
|
346
|
+
type: Input
|
|
347
|
+
}], multiple: [{
|
|
348
|
+
type: Input
|
|
349
|
+
}], selected: [{
|
|
350
|
+
type: Input
|
|
351
|
+
}], allowUnselect: [{
|
|
352
|
+
type: Input
|
|
353
|
+
}], filters: [{
|
|
354
|
+
type: Input
|
|
355
|
+
}], searchFacets: [{
|
|
356
|
+
type: Input
|
|
357
|
+
}], searchSelections: [{
|
|
358
|
+
type: Input
|
|
359
|
+
}], searchSelectionChange: [{
|
|
360
|
+
type: Output
|
|
361
|
+
}], selectionChange: [{
|
|
362
|
+
type: Output
|
|
363
|
+
}] } });
|
|
364
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2hpYy1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3IvaGllcmFyY2hpYy1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3IvaGllcmFyY2hpYy1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUMscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUUvRSxPQUFPLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRy9FLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRzlFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBSXhELE9BQU8sRUFBQyxnQ0FBZ0MsRUFBMEIsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RyxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7QUFRdkUsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLHlC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LEtBQUs7Z0JBS1UsT0FBTztzQkFBdEIsS0FBSztnQkFLVSxZQUFZO3NCQUEzQixLQUFLO2dCQUtVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFLb0IscUJBQXFCO3NCQUE5QyxNQUFNO2dCQVdtQixlQUFlO3NCQUF4QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZWxlY3Rpb25Nb2RlbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7RmxhdFRyZWVDb250cm9sfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdFRyZWVGbGF0RGF0YVNvdXJjZSwgTWF0VHJlZUZsYXR0ZW5lcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaW5hbGl6ZSwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXJ9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYWJzdHJhY3QtY29udHJvbGxlcic7XG5pbXBvcnQge1F1ZXJ5VmFyaWFibGVzfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL3F1ZXJ5LXZhcmlhYmxlLW1hbmFnZXInO1xuaW1wb3J0IHtMaXRlcmFsfSBmcm9tICcuLi8uLi8uLi90eXBlcy90eXBlcyc7XG5pbXBvcnQge3RvR3JhcGhRTERvY3RyaW5lRmlsdGVyfSBmcm9tICcuLi8uLi9zZWFyY2gvY2xhc3Nlcy9ncmFwaHFsLWRvY3RyaW5lJztcbmltcG9ydCB7TmF0dXJhbFNlYXJjaEZhY2V0c30gZnJvbSAnLi4vLi4vc2VhcmNoL3R5cGVzL2ZhY2V0JztcbmltcG9ydCB7TmF0dXJhbFNlYXJjaFNlbGVjdGlvbnN9IGZyb20gJy4uLy4uL3NlYXJjaC90eXBlcy92YWx1ZXMnO1xuaW1wb3J0IHtIaWVyYXJjaGljRmxhdE5vZGV9IGZyb20gJy4uL2NsYXNzZXMvZmxhdC1ub2RlJztcbmltcG9ydCB7TmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9ufSBmcm9tICcuLi9jbGFzc2VzL2hpZXJhcmNoaWMtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge0hpZXJhcmNoaWNGaWx0ZXJzQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vY2xhc3Nlcy9oaWVyYXJjaGljLWZpbHRlcnMtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge0hpZXJhcmNoaWNNb2RlbE5vZGV9IGZyb20gJy4uL2NsYXNzZXMvbW9kZWwtbm9kZSc7XG5pbXBvcnQge05hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JTZXJ2aWNlLCBPcmdhbml6ZWRNb2RlbFNlbGVjdGlvbn0gZnJvbSAnLi9oaWVyYXJjaGljLXNlbGVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtyZXBsYWNlT2JqZWN0S2VlcGluZ1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy91dGlsaXR5JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYXR1cmFsLWhpZXJhcmNoaWMtc2VsZWN0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9oaWVyYXJjaGljLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9oaWVyYXJjaGljLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvclNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yQ29tcG9uZW50IGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0Q29udHJvbGxlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGEgbW9kZWwgYW5kIHJldHVybnMgYSBzdHJpbmcgZm9yIGRpc3BsYXkgdmFsdWVcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzcGxheVdpdGg/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDb25maWcgZm9yIGl0ZW1zIGFuZCByZWxhdGlvbnMgYXJyYW5nZW1lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgY29uZmlnITogTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uW107XG5cbiAgICAvKipcbiAgICAgKiBJZiBtdWx0aXBsZSBvciBzaW5nbGUgaXRlbSBzZWxlY3Rpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdGVkIGl0ZW1zXG4gICAgICogT3JnYW5pemVkIGJ5IGtleSwgY29udGFpbmluZyBlYWNoIGFuIGFycmF5IG9mIHNlbGVjdGVkIGl0ZW1zIG9mIHNhbWUgdHlwZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZDogT3JnYW5pemVkTW9kZWxTZWxlY3Rpb24gPSB7fTtcblxuICAgIC8qKlxuICAgICAqIFdoZXJldmVyIGlmIHNlbGVjdGFibGUgZWxlbWVudHMgY2FuIGJlIHVuc2VsZWN0ZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgYWxsb3dVbnNlbGVjdCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXJzIHRoYXQgYXBwbHkgdG8gZWFjaCBxdWVyeVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmaWx0ZXJzPzogSGllcmFyY2hpY0ZpbHRlcnNDb25maWd1cmF0aW9uIHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFNlYXJjaCBmYWNldHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgc2VhcmNoRmFjZXRzOiBOYXR1cmFsU2VhcmNoRmFjZXRzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3Rpb25zIHRvIGFwcGx5IG9uIG5hdHVyYWwtc2VhcmNoIG9uIGNvbXBvbmVudCBpbml0aWFsaXNhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hTZWxlY3Rpb25zOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9ucyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiBuYXR1cmFsLXNlYXJjaCBzZWxlY3Rpb25zIGNoYW5nZVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoU2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOYXR1cmFsU2VhcmNoU2VsZWN0aW9ucz4oKTtcblxuICAgIC8qKlxuICAgICAqIElubmVyIHJlcHJlc2VudGF0aW9uIG9mIHNlbGVjdGVkIEBJbnB1dCgpIHRvIGFsbG93IGZsYXQgbGlzdGluZyBhcyBtYXQtY2hpcC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0ZWROb2RlczogSGllcmFyY2hpY01vZGVsTm9kZVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBzZWxlY3Rpb24gY2hhbmdlXG4gICAgICogUmV0dXJucyBhIExpdGVyYWwgd2hlcmUgc2VsZWN0ZWQgbW9kZWxzIGFyZSBvcmdhbml6ZWQgYnkga2V5XG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE9yZ2FuaXplZE1vZGVsU2VsZWN0aW9uPigpO1xuXG4gICAgLyoqXG4gICAgICogQ29udHJvbGxlciBmb3Igbm9kZXMgc2VsZWN0aW9uXG4gICAgICovXG4gICAgcHVibGljIGZsYXROb2Rlc1NlbGVjdGlvbiE6IFNlbGVjdGlvbk1vZGVsPEhpZXJhcmNoaWNGbGF0Tm9kZT47XG5cbiAgICBwdWJsaWMgdHJlZUNvbnRyb2whOiBGbGF0VHJlZUNvbnRyb2w8SGllcmFyY2hpY0ZsYXROb2RlPjtcbiAgICBwdWJsaWMgdHJlZUZsYXR0ZW5lciE6IE1hdFRyZWVGbGF0dGVuZXI8SGllcmFyY2hpY01vZGVsTm9kZSwgSGllcmFyY2hpY0ZsYXROb2RlPjtcbiAgICBwdWJsaWMgZGF0YVNvdXJjZSE6IE1hdFRyZWVGbGF0RGF0YVNvdXJjZTxIaWVyYXJjaGljTW9kZWxOb2RlLCBIaWVyYXJjaGljRmxhdE5vZGU+O1xuXG4gICAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENhY2hlIGZvciB0cmFuc2Zvcm1lZCBub2Rlc1xuICAgICAqL1xuICAgIHByaXZhdGUgZmxhdE5vZGVNYXA6IE1hcDxzdHJpbmcsIEhpZXJhcmNoaWNGbGF0Tm9kZT4gPSBuZXcgTWFwPHN0cmluZywgSGllcmFyY2hpY0ZsYXROb2RlPigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaGllcmFyY2hpY1NlbGVjdG9yU2VydmljZTogTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvclNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbmd1bGFyIE9uSW5pdCBpbXBsZW1lbnRhdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gSW5pdCB0cmVlIGNoZWNrYm94IHNlbGVjdG9yc1xuICAgICAgICB0aGlzLmZsYXROb2Rlc1NlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRoaXMubXVsdGlwbGUpO1xuXG4gICAgICAgIC8vIFRyZWUgY29udHJvbGxlcnMgYW5kIG1hbmlwdWxhdG9yc1xuICAgICAgICB0aGlzLnRyZWVGbGF0dGVuZXIgPSBuZXcgTWF0VHJlZUZsYXR0ZW5lcihcbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtZXIoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0TGV2ZWwoKSxcbiAgICAgICAgICAgIHRoaXMuaXNFeHBhbmRhYmxlKCksXG4gICAgICAgICAgICB0aGlzLmdldENoaWxkcmVuKCksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPEhpZXJhcmNoaWNGbGF0Tm9kZT4odGhpcy5nZXRMZXZlbCgpLCB0aGlzLmlzRXhwYW5kYWJsZSgpKTtcblxuICAgICAgICAvLyBUaGUgZGF0YVNvdXJjZSBjb250YWlucyBhIG5lc3RlZCBNb2RlbE5vZGVzIGxpc3QuIEVhY2ggTW9kZWxOb2RlIGhhcyBhIGNoaWxkIGF0dHJpYnV0ZSB0aGF0IHJldHVybnMgYW4gb2JzZXJ2YWJsZS5cbiAgICAgICAgLy8gVGhlIGRhdGFTb3VyY2UgY29udGFpbnMgYSBmbGF0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuZXN0ZWQgTW9kZWxOb2RlcyB0aGF0IGlzIGdlbmVyYXRlZCBieSB0aGUgdHJlZUZsYXR0ZW5lciByZWxhdGVkIGZ1bmN0aW9uc1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZUZsYXREYXRhU291cmNlKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMudHJlZUZsYXR0ZW5lcik7XG5cbiAgICAgICAgLy8gVXBkYXRlIGRhdGFTb3VyY2Ugd2hlbiByZWNlaXZpbmcgbmV3IGxpc3QgLT4gd2UgYXNzaWduIHRoZSB3aG9sZSB0cmVlXG4gICAgICAgIC8vIFRoZSB0cmVlQ29udHJvbCBhbmQgdHJlZUZsYXR0ZW5lciB3aWxsIGdlbmVyYXRlIHRoZSBkaXNwbGF5ZWQgdHJlZVxuICAgICAgICB0aGlzLmhpZXJhcmNoaWNTZWxlY3RvclNlcnZpY2UuZGF0YUNoYW5nZVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGRhdGEgPT4gKHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YSkpO1xuXG4gICAgICAgIC8vIFByZXZlbnQgZW1wdHkgc2NyZWVuIG9uIGZpcnN0IGxvYWQgYW5kIGluaXQgTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvclNlcnZpY2Ugd2l0aCBpbnB1dHRlZCBjb25maWd1cmF0aW9uXG4gICAgICAgIGxldCB2YXJpYWJsZXM7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFNlbGVjdGlvbnMuc29tZShzID0+IHMubGVuZ3RoKSkge1xuICAgICAgICAgICAgdmFyaWFibGVzID0ge2ZpbHRlcjogdG9HcmFwaFFMRG9jdHJpbmVGaWx0ZXIodGhpcy5zZWFyY2hGYWNldHMsIHRoaXMuc2VhcmNoU2VsZWN0aW9ucyl9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZFJvb3RzKHZhcmlhYmxlcyk7XG5cbiAgICAgICAgLy8gT3JnYW5pemVkU2VsZWN0aW9uIGludG8gbGlzdCB1c2FibGUgYnkgdGVtcGxhdGVcbiAgICAgICAgdGhpcy51cGRhdGVJbm5lclNlbGVjdGlvbih0aGlzLnNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbmd1bGFyIE9uQ2hhbmdlIGltcGxlbWVudGF0aW9uXG4gICAgICovXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuc2VsZWN0ZWQgJiYgIWNoYW5nZXMuc2VsZWN0ZWQuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSW5uZXJTZWxlY3Rpb24odGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5maWx0ZXJzICYmICFjaGFuZ2VzLmZpbHRlcnMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZFJvb3RzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGUgc2VsZWN0aW9uIG9mIGEgRmxhdE5vZGUsIGNvbnNpZGVyaW5nIGlmIG11bHRpcGxlIHNlbGVjdGlvbiBpcyBhY3RpdmF0ZWQgb3Igbm90XG4gICAgICovXG4gICAgcHVibGljIHRvZ2dsZUZsYXROb2RlKGZsYXROb2RlOiBIaWVyYXJjaGljRmxhdE5vZGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIC8vIElzIG11bHRpcGxlIGFsbG93ZWQsIGp1c3QgdG9nZ2xlIGVsZW1lbnRcbiAgICAgICAgICAgIGlmICh0aGlzLmZsYXROb2Rlc1NlbGVjdGlvbi5pc1NlbGVjdGVkKGZsYXROb2RlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudW5zZWxlY3RGbGF0Tm9kZShmbGF0Tm9kZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RmxhdE5vZGUoZmxhdE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5mbGF0Tm9kZXNTZWxlY3Rpb24uaXNTZWxlY3RlZChmbGF0Tm9kZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuc2VsZWN0U2luZ2xlRmxhdE5vZGUoZmxhdE5vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBub3QgbXVsdGlwbGUsIGFuZCB3ZSB3YW50IHRvIHNlbGVjdCBhbiBlbGVtZW50LCB1bnNlbGVjdCBldmVyeXRoaW5nIGJlZm9yZSB0byBrZWVwIGEgc2luZ2xlIHNlbGVjdGlvblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U2luZ2xlRmxhdE5vZGUoZmxhdE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hlbiB1bnNlbGVjdGluZyBhbiBlbGVtZW50IGZyb20gdGhlIG1hdC1jaGlwcywgaXQgY2FuIGJlIGRlZXAgaW4gdGhlIGhpZXJhcmNoeSwgYW5kIHRoZSB0cmVlIGVsZW1lbnQgbWF5IG5vdCBleGlzdC4uLlxuICAgICAqIC4uLiBidXQgd2Ugc3RpbGwgbmVlZCB0byByZW1vdmUgdGhlIGVsZW1lbnQgZnJvbSB0aGUgbWF0LWNoaXBzIGxpc3QuXG4gICAgICovXG4gICAgcHVibGljIHVuc2VsZWN0TW9kZWxOb2RlKG5vZGU6IEhpZXJhcmNoaWNNb2RlbE5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmxhdE5vZGUgPSB0aGlzLmdldEZsYXROb2RlKG5vZGUpO1xuICAgICAgICBpZiAoZmxhdE5vZGUpIHtcbiAgICAgICAgICAgIHRoaXMudW5zZWxlY3RGbGF0Tm9kZShmbGF0Tm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBSZW1vdmUgZnJvbSBjaGlwcyBsaXN0IG9ubHkgaWYgbm8gZmxhdE5vZGUsIGJlY2F1c2UgdW5zZWxlY3RGbGF0Tm9kZSgpIGFscmVhZHkgZGVhbHMgd2l0aCBpdC5cbiAgICAgICAgICAgIHRoaXMucmVtb3ZlTW9kZWxOb2RlKG5vZGUpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24odGhpcy5zZWxlY3RlZE5vZGVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc05vZGVUb2dnbGFibGUoZmxhdE5vZGU6IEhpZXJhcmNoaWNGbGF0Tm9kZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pc05vZGVTZWxlY3RlZChmbGF0Tm9kZS5ub2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZsYXROb2RlLmRlc2VsZWN0YWJsZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmbGF0Tm9kZS5zZWxlY3RhYmxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREaXNwbGF5Rm4oY29uZmlnOiBOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb24pOiAoaXRlbTogYW55KSA9PiBzdHJpbmcge1xuICAgICAgICBpZiAoY29uZmlnLmRpc3BsYXlXaXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnLmRpc3BsYXlXaXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheVdpdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlXaXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW0gPT4gKGl0ZW0gPyBpdGVtLmZ1bGxOYW1lIHx8IGl0ZW0ubmFtZSA6ICcnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZENoaWxkcmVuKGZsYXROb2RlOiBIaWVyYXJjaGljRmxhdE5vZGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChmbGF0Tm9kZSkpIHtcbiAgICAgICAgICAgIHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yU2VydmljZS5sb2FkQ2hpbGRyZW4oZmxhdE5vZGUsIHRoaXMuZmlsdGVycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVkIHRvIGNvbGxhcHNlIGFsbCBjaGlsZHJlbiB3aGVuIGNsb3NpbmcgYSBwYXJlbnQsIGJ1dCBub3Qgc3VyZSBpdCdzIGdvb2QuXG4gICAgICovXG4gICAgLy8gcHVibGljIGxvYWRDaGlsZHJlbihmbGF0Tm9kZTogSGllcmFyY2hpY0ZsYXROb2RlKSB7XG4gICAgLy8gICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQoZmxhdE5vZGUpKSB7XG4gICAgLy9cbiAgICAvLyAgICAgICAgIGNvbnN0IGNhY2hlZEZsYXROb2RlID0gdGhpcy5nZXRGbGF0Tm9kZShmbGF0Tm9kZS5ub2RlKTtcbiAgICAvLyAgICAgICAgIGlmIChjYWNoZWRGbGF0Tm9kZSkge1xuICAgIC8vICAgICAgICAgICAgIHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yU2VydmljZS5sb2FkQ2hpbGRyZW4oY2FjaGVkRmxhdE5vZGUsIHRoaXMuZmlsdGVycyk7XG4gICAgLy9cbiAgICAvLyAgICAgICAgICAgICAvLyBDbG9zZSBjaGlsZHJlblxuICAgIC8vICAgICAgICAgICAgIGNhY2hlZEZsYXROb2RlLm5vZGUuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgLy8gICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IHRoaXMuZ2V0RmxhdE5vZGUoY2hpbGQpO1xuICAgIC8vICAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlKSB7XG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmNvbGxhcHNlKGNoaWxkTm9kZSk7XG4gICAgLy8gICAgICAgICAgICAgICAgIH1cbiAgICAvLyAgICAgICAgICAgICB9KTtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgfVxuICAgIC8vIH1cblxuICAgIHB1YmxpYyBnZXRDaGlsZHJlbigpOiAobm9kZTogSGllcmFyY2hpY01vZGVsTm9kZSkgPT4gT2JzZXJ2YWJsZTxIaWVyYXJjaGljTW9kZWxOb2RlW10+IHtcbiAgICAgICAgcmV0dXJuIChub2RlOiBIaWVyYXJjaGljTW9kZWxOb2RlKTogT2JzZXJ2YWJsZTxIaWVyYXJjaGljTW9kZWxOb2RlW10+ID0+IHtcbiAgICAgICAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuQ2hhbmdlO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybXMgYSBIaWVyYXJjaGljTW9kZWxOb2RlIGludG8gYSBGbGF0Tm9kZVxuICAgICAqL1xuICAgIHB1YmxpYyB0cmFuc2Zvcm1lcigpOiAobm9kZTogSGllcmFyY2hpY01vZGVsTm9kZSwgbGV2ZWw6IG51bWJlcikgPT4gSGllcmFyY2hpY0ZsYXROb2RlIHtcbiAgICAgICAgcmV0dXJuIChub2RlOiBIaWVyYXJjaGljTW9kZWxOb2RlLCBsZXZlbDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRPckNyZWF0ZUZsYXROb2RlKG5vZGUsIGxldmVsKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gZGVlcCBvZiB0aGUgbm9kZSBpbiB0aGUgdHJlZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRMZXZlbCgpOiAobm9kZTogSGllcmFyY2hpY0ZsYXROb2RlKSA9PiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKG5vZGU6IEhpZXJhcmNoaWNGbGF0Tm9kZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGUubGV2ZWw7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgYWx3YXlzIGV4cGFuZGFibGUgYmVjYXVzZSB3ZSBsb2FkIG9uIGRlbWFuZCwgd2UgZG9uJ3Qga25vdyBpZiB0aGVyZSBhcmUgY2hpbGRyZW4geWV0XG4gICAgICovXG4gICAgcHVibGljIGlzRXhwYW5kYWJsZSgpOiAobm9kZTogSGllcmFyY2hpY0ZsYXROb2RlKSA9PiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChub2RlOiBIaWVyYXJjaGljRmxhdE5vZGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBub2RlLmV4cGFuZGFibGU7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9yQ3JlYXRlRmxhdE5vZGUobm9kZTogSGllcmFyY2hpY01vZGVsTm9kZSwgbGV2ZWw6IG51bWJlcik6IEhpZXJhcmNoaWNGbGF0Tm9kZSB7XG4gICAgICAgIC8vIFJldHVybiBGbGF0Tm9kZSBpZiBleGlzdHNcbiAgICAgICAgY29uc3QgZmxhdE5vZGUgPSB0aGlzLmdldEZsYXROb2RlKG5vZGUpO1xuICAgICAgICBpZiAoZmxhdE5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmbGF0Tm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJldHVybiBuZXcgRmxhdE5vZGVcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmxhdE5vZGUobm9kZSwgbGV2ZWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2goc2VsZWN0aW9uczogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hTZWxlY3Rpb25DaGFuZ2UuZW1pdChzZWxlY3Rpb25zKTtcbiAgICAgICAgaWYgKHNlbGVjdGlvbnMuc29tZShzID0+IHMubGVuZ3RoKSkge1xuICAgICAgICAgICAgY29uc3QgdmFyaWFibGVzID0ge2ZpbHRlcjogdG9HcmFwaFFMRG9jdHJpbmVGaWx0ZXIodGhpcy5zZWFyY2hGYWNldHMsIHNlbGVjdGlvbnMpfTtcbiAgICAgICAgICAgIHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yU2VydmljZS5zZWFyY2godmFyaWFibGVzLCB0aGlzLmZpbHRlcnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2FkUm9vdHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFJvb3RzKHNlYXJjaFZhcmlhYmxlcz86IFF1ZXJ5VmFyaWFibGVzKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuZmxhdE5vZGVNYXAgPSBuZXcgTWFwPHN0cmluZywgSGllcmFyY2hpY0ZsYXROb2RlPigpO1xuICAgICAgICB0aGlzLmhpZXJhcmNoaWNTZWxlY3RvclNlcnZpY2VcbiAgICAgICAgICAgIC5pbml0KHRoaXMuY29uZmlnLCB0aGlzLmZpbHRlcnMsIHNlYXJjaFZhcmlhYmxlcyB8fCBudWxsKVxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMubG9hZGluZyA9IGZhbHNlKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3luYyBpbm5lciBzZWxlY3Rpb24gKHRyZWUgYW5kIG1hdC1jaGlwcykgYWNjb3JkaW5nIHRvIHNlbGVjdGVkIGlucHV0IGF0dHJpYnV0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlSW5uZXJTZWxlY3Rpb24oc2VsZWN0ZWQ6IE9yZ2FuaXplZE1vZGVsU2VsZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIC8vIFRyYW5zZm9ybSBhbiBPcmdhbml6ZWRNb2RlbFNlbGVjdGlvbiBpbnRvIGEgTW9kZWxOb2RlIGxpc3QgdGhhdCBpcyB1c2VkIGluIHRoZSBzZWxlY3RlZCB6b25lIG9mIHRoZSBjb21wb25lbnQgKHNlZSB0ZW1wbGF0ZSlcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JTZXJ2aWNlLmZyb21Pcmdhbml6ZWRTZWxlY3Rpb24oc2VsZWN0ZWQpO1xuXG4gICAgICAgIHRoaXMuZmxhdE5vZGVzU2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzLnNlbGVjdGVkTm9kZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXROb2RlID0gdGhpcy5nZXRGbGF0Tm9kZShub2RlKTtcbiAgICAgICAgICAgIGlmIChmbGF0Tm9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmxhdE5vZGVzU2VsZWN0aW9uLnNlbGVjdChmbGF0Tm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbnNlbGVjdCBhIG5vZGUsIGtlZXBpbmcgdGhlIHJlc3Qgb2YgdGhlIHNlbGVjdGVkIHVudG91Y2hlZFxuICAgICAqL1xuICAgIHByaXZhdGUgdW5zZWxlY3RGbGF0Tm9kZShmbGF0Tm9kZTogSGllcmFyY2hpY0ZsYXROb2RlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmxhdE5vZGVzU2VsZWN0aW9uLmRlc2VsZWN0KGZsYXROb2RlKTtcbiAgICAgICAgdGhpcy5yZW1vdmVNb2RlbE5vZGUoZmxhdE5vZGUubm9kZSk7XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKHRoaXMuc2VsZWN0ZWROb2Rlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGEgbm9kZSBmcm9tIGNoaXAgbGlzdHNcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlbW92ZU1vZGVsTm9kZShub2RlOiBIaWVyYXJjaGljTW9kZWxOb2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0TWFwS2V5KG5vZGUubW9kZWwpO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25JbmRleCA9IHRoaXMuc2VsZWN0ZWROb2Rlcy5maW5kSW5kZXgobiA9PiB0aGlzLmdldE1hcEtleShuLm1vZGVsKSA9PT0ga2V5KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzLnNwbGljZShzZWxlY3Rpb25JbmRleCwgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGEgbm9kZSwga2VlcGluZyB0aCByZXN0IG9mIHRoZSBzZWxlY3RlZCB1bnRvdWNoZWRcbiAgICAgKi9cbiAgICBwcml2YXRlIHNlbGVjdEZsYXROb2RlKGZsYXROb2RlOiBIaWVyYXJjaGljRmxhdE5vZGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mbGF0Tm9kZXNTZWxlY3Rpb24uc2VsZWN0KGZsYXROb2RlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzLnB1c2goZmxhdE5vZGUubm9kZSk7XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKHRoaXMuc2VsZWN0ZWROb2Rlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgYWxsIHNlbGVjdGVkIGFuZCBzZWxlY3QgdGhlIGdpdmVuIG5vZGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHNlbGVjdFNpbmdsZUZsYXROb2RlKGZsYXROb2RlOiBIaWVyYXJjaGljRmxhdE5vZGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mbGF0Tm9kZXNTZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgdGhpcy5mbGF0Tm9kZXNTZWxlY3Rpb24uc2VsZWN0KGZsYXROb2RlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gW2ZsYXROb2RlLm5vZGVdO1xuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbih0aGlzLnNlbGVjdGVkTm9kZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFyIGFsbCBzZWxlY3RlZCBhbmQgc2VsZWN0IHRoZSBnaXZlbiBub2RlXG4gICAgICovXG4gICAgcHJpdmF0ZSB1bnNlbGVjdFNpbmdsZUZsYXROb2RlKGZsYXROb2RlOiBIaWVyYXJjaGljRmxhdE5vZGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mbGF0Tm9kZXNTZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gW107XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKHRoaXMuc2VsZWN0ZWROb2Rlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtIHRoZSBnaXZlbiBlbGVtZW50cyBpbnRvIHRoZSBvcmdhbml6ZWQgc2VsZWN0aW9uIHRoYXQgaXMgZW1pdHRlZCB0byBvdXRwdXRcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZVNlbGVjdGlvbihzZWxlY3RlZDogSGllcmFyY2hpY01vZGVsTm9kZVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9yZ2FuaXplZEZsYXROb2Rlc1NlbGVjdGlvbiA9IHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yU2VydmljZS50b09yZ2FuaXplZFNlbGVjdGlvbihzZWxlY3RlZCk7XG4gICAgICAgIHJlcGxhY2VPYmplY3RLZWVwaW5nUmVmZXJlbmNlKHRoaXMuc2VsZWN0ZWQsIG9yZ2FuaXplZEZsYXROb2Rlc1NlbGVjdGlvbik7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQob3JnYW5pemVkRmxhdE5vZGVzU2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTm9kZVNlbGVjdGVkKG5vZGU6IEhpZXJhcmNoaWNNb2RlbE5vZGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXRNYXBLZXkobm9kZS5tb2RlbCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWROb2Rlcy5zb21lKG4gPT4gdGhpcy5nZXRNYXBLZXkobi5tb2RlbCkgPT09IGtleSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGbGF0Tm9kZShub2RlOiBIaWVyYXJjaGljTW9kZWxOb2RlKTogSGllcmFyY2hpY0ZsYXROb2RlIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0TWFwS2V5KG5vZGUubW9kZWwpO1xuICAgICAgICByZXR1cm4gdGhpcy5mbGF0Tm9kZU1hcC5nZXQoa2V5KSB8fCBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRmxhdE5vZGUobm9kZTogSGllcmFyY2hpY01vZGVsTm9kZSwgbGV2ZWw6IG51bWJlcik6IEhpZXJhcmNoaWNGbGF0Tm9kZSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0TWFwS2V5KG5vZGUubW9kZWwpO1xuICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5nZXREaXNwbGF5Rm4obm9kZS5jb25maWcpKG5vZGUubW9kZWwpO1xuICAgICAgICBjb25zdCBleHBhbmRhYmxlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGlzQ3VzdG9tU2VsZWN0YWJsZSA9IG5vZGUuY29uZmlnLmlzU2VsZWN0YWJsZUNhbGxiYWNrXG4gICAgICAgICAgICA/IG5vZGUuY29uZmlnLmlzU2VsZWN0YWJsZUNhbGxiYWNrKG5vZGUubW9kZWwpXG4gICAgICAgICAgICA6IHRydWU7XG4gICAgICAgIGNvbnN0IGlzU2VsZWN0YWJsZSA9ICEhbm9kZS5jb25maWcuc2VsZWN0YWJsZUF0S2V5ICYmIGlzQ3VzdG9tU2VsZWN0YWJsZTtcblxuICAgICAgICBjb25zdCBmbGF0Tm9kZSA9IG5ldyBIaWVyYXJjaGljRmxhdE5vZGUobm9kZSwgbmFtZSwgbGV2ZWwsIGV4cGFuZGFibGUsIGlzU2VsZWN0YWJsZSk7XG5cbiAgICAgICAgdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JTZXJ2aWNlLmNvdW50SXRlbXMoZmxhdE5vZGUsIHRoaXMuZmlsdGVycyk7XG5cbiAgICAgICAgLy8gTWFyayBub2RlIGFzIHNlbGVjdGVkIGlmIG5lZWRlZCAoY2hlY2tzIHRoZSBzZWxlY3RlZCBwcm9jZXNzZWQgaW5wdXQpXG4gICAgICAgIGlmICh0aGlzLmlzTm9kZVNlbGVjdGVkKG5vZGUpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYWxsb3dVbnNlbGVjdCkge1xuICAgICAgICAgICAgICAgIGZsYXROb2RlLmRlc2VsZWN0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5mbGF0Tm9kZXNTZWxlY3Rpb24uc2VsZWN0KGZsYXROb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhY2hlIEZsYXROb2RlXG4gICAgICAgIHRoaXMuZmxhdE5vZGVNYXAuc2V0KGtleSwgZmxhdE5vZGUpO1xuXG4gICAgICAgIHJldHVybiBmbGF0Tm9kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGlkZW50aWZpZXIga2V5IGZvciBtYXAgY2FjaGVcbiAgICAgKiBBcyBtYW55IG9iamVjdCB0eXBlcyBjYW4gYmUgdXNlZCwgdGhpcyBmdW5jdGlvbiBjb25zaWRlcnMgdHlwZW5hbWUgYW5kIElEIHRvIHJldHVybiBzb21ldGhpbmcgbGlrZSBkb2N1bWVudC0xMjNcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE1hcEtleShtb2RlbDogTGl0ZXJhbCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBtb2RlbC5fX3R5cGVuYW1lICsgJy0nICsgbW9kZWwuaWQ7XG4gICAgfVxufVxuIiwiPGRpdiBbc3R5bGUubWFyZ2luLWJvdHRvbS5weF09XCIyMFwiPlxuICAgIDxuYXR1cmFsLXNlYXJjaFxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgW2ZhY2V0c109XCJzZWFyY2hGYWNldHNcIlxuICAgICAgICBbc2VsZWN0aW9uc109XCJzZWFyY2hTZWxlY3Rpb25zXCJcbiAgICA+PC9uYXR1cmFsLXNlYXJjaD5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiYm9keVwiPlxuICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxuICAgICAgICAqbmdJZj1cImxvYWRpbmdcIlxuICAgICAgICBbZGlhbWV0ZXJdPVwiMzZcIlxuICAgICAgICBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgIHN0eWxlPVwibWFyZ2luOiAxMHB4XCJcbiAgICA+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cblxuICAgIDxtYXQtdHJlZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sXCI+XG4gICAgICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlXCIgW25nQ2xhc3NdPVwie2xlYWY6ICFub2RlLmV4cGFuZGFibGV9XCIgbWF0VHJlZU5vZGVQYWRkaW5nPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJsb2FkQ2hpbGRyZW4obm9kZSlcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwibm9kZS5leHBhbmRhYmxlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIid0b2dnbGUgJyArIG5vZGUubmFtZVwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub2RlLmxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICBbZGlhbWV0ZXJdPVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICBbc3Ryb2tlV2lkdGhdPVwiNVwiXG4gICAgICAgICAgICAgICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW46IDhweFwiXG4gICAgICAgICAgICAgICAgPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG5cbiAgICAgICAgICAgICAgICA8bmF0dXJhbC1pY29uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIW5vZGUubG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnZXhwYW5kX21vcmUnIDogJ2NoZXZyb25fcmlnaHQnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9uYXR1cmFsLWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlRmxhdE5vZGUobm9kZSlcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImZsYXROb2Rlc1NlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzTm9kZVRvZ2dsYWJsZShub2RlKVwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuYXR1cmFsLWljb25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub2RlLm5vZGUuY29uZmlnLmljb25cIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJub2RlLm5vZGUuY29uZmlnLmljb25cIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTBweFwiXG4gICAgICAgICAgICAgICAgPjwvbmF0dXJhbC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IG5vZGUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L21hdC10cmVlLW5vZGU+XG4gICAgPC9tYXQtdHJlZT5cblxuICAgIDxtYXQtY2hpcC1saXN0IGFyaWEtb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiIGNsYXNzPVwibWF0LWNoaXAtbGlzdC1zdGFja2VkXCI+XG4gICAgICAgIDxtYXQtY2hpcFxuICAgICAgICAgICAgKHJlbW92ZWQpPVwidW5zZWxlY3RNb2RlbE5vZGUobm9kZSlcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG5vZGUgb2Ygc2VsZWN0ZWROb2Rlc1wiXG4gICAgICAgICAgICBbcmVtb3ZhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW3NlbGVjdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmF0dXJhbC1pY29uICpuZ0lmPVwibm9kZS5jb25maWcuaWNvblwiIFtuYW1lXT1cIm5vZGUuY29uZmlnLmljb25cIj48L25hdHVyYWwtaWNvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtYm9keSBjaGlwLWxhYmVsXCI+e3sgbm9kZS5tb2RlbC5uYW1lIHx8IG5vZGUubW9kZWwuZnVsbE5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxuYXR1cmFsLWljb24gbWF0Q2hpcFJlbW92ZSBuYW1lPVwiY2FuY2VsXCI+PC9uYXR1cmFsLWljb24+XG4gICAgICAgIDwvbWF0LWNoaXA+XG4gICAgPC9tYXQtY2hpcC1saXN0PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhZGF0YVNvdXJjZS5kYXRhLmxlbmd0aFwiIGNsYXNzPVwibWFyZ2luLXZcIiBpMThuPkF1Y3VuIHLDqXN1bHRhdDwvZGl2PlxuIl19
|