@yuuvis/client-framework 0.6.5
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/README.md +62 -0
- package/actions/README.md +3 -0
- package/actions/index.d.ts +6 -0
- package/actions/lib/actions/copy-action/copy-action.d.ts +17 -0
- package/actions/lib/actions/cut-action/cut-action.d.ts +17 -0
- package/actions/lib/actions/delete-action/delete/delete.component.d.ts +22 -0
- package/actions/lib/actions/delete-action/delete-action.d.ts +17 -0
- package/actions/lib/actions/download-action/download-action.d.ts +17 -0
- package/actions/lib/actions.icon.d.ts +7 -0
- package/actions/lib/actions.interface.d.ts +86 -0
- package/actions/lib/actions.module.d.ts +8 -0
- package/actions/lib/actions.service.d.ts +38 -0
- package/actions/lib/components/contextmenu/contextmenu.component.d.ts +11 -0
- package/app-bar/README.md +3 -0
- package/app-bar/index.d.ts +1 -0
- package/app-bar/lib/app-bar.component.d.ts +47 -0
- package/clipboard/README.md +3 -0
- package/clipboard/index.d.ts +1 -0
- package/clipboard/lib/clipboard.component.d.ts +16 -0
- package/common/README.md +3 -0
- package/common/index.d.ts +5 -0
- package/common/lib/components/focus-indicator/focus-indicator.component.d.ts +7 -0
- package/common/lib/components/token-input/token-input.component.d.ts +55 -0
- package/common/lib/components/token-input/token-input.interface.d.ts +8 -0
- package/common/lib/directives/busy-overlay.directive.d.ts +25 -0
- package/common/lib/directives/click-double.directive.d.ts +17 -0
- package/common/lib/directives/container-size.directive.d.ts +30 -0
- package/common/lib/directives/drag-select.directive.d.ts +21 -0
- package/common/lib/directives/file-drop-zone/file-drop-zone.directive.d.ts +18 -0
- package/common/lib/directives/file-drop-zone/file-drop-zone.interface.d.ts +5 -0
- package/common/lib/directives/focus-within.directive.d.ts +36 -0
- package/common/lib/directives/index.d.ts +8 -0
- package/common/lib/directives/light-dismiss.directive.d.ts +19 -0
- package/common/lib/directives/longpress.directive.d.ts +13 -0
- package/common/lib/directives/noop-value-accessor.directive.d.ts +10 -0
- package/esm2022/actions/index.mjs +7 -0
- package/esm2022/actions/lib/actions/copy-action/copy-action.mjs +31 -0
- package/esm2022/actions/lib/actions/cut-action/cut-action.mjs +30 -0
- package/esm2022/actions/lib/actions/delete-action/delete/delete.component.mjs +67 -0
- package/esm2022/actions/lib/actions/delete-action/delete-action.mjs +44 -0
- package/esm2022/actions/lib/actions/download-action/download-action.mjs +33 -0
- package/esm2022/actions/lib/actions.icon.mjs +8 -0
- package/esm2022/actions/lib/actions.interface.mjs +19 -0
- package/esm2022/actions/lib/actions.module.mjs +16 -0
- package/esm2022/actions/lib/actions.service.mjs +89 -0
- package/esm2022/actions/lib/components/contextmenu/contextmenu.component.mjs +27 -0
- package/esm2022/actions/yuuvis-client-framework-actions.mjs +5 -0
- package/esm2022/app-bar/index.mjs +2 -0
- package/esm2022/app-bar/lib/app-bar.component.mjs +89 -0
- package/esm2022/app-bar/yuuvis-client-framework-app-bar.mjs +5 -0
- package/esm2022/clipboard/index.mjs +2 -0
- package/esm2022/clipboard/lib/clipboard.component.mjs +48 -0
- package/esm2022/clipboard/yuuvis-client-framework-clipboard.mjs +5 -0
- package/esm2022/common/index.mjs +6 -0
- package/esm2022/common/lib/components/focus-indicator/focus-indicator.component.mjs +41 -0
- package/esm2022/common/lib/components/token-input/token-input.component.mjs +324 -0
- package/esm2022/common/lib/components/token-input/token-input.interface.mjs +2 -0
- package/esm2022/common/lib/directives/busy-overlay.directive.mjs +88 -0
- package/esm2022/common/lib/directives/click-double.directive.mjs +61 -0
- package/esm2022/common/lib/directives/container-size.directive.mjs +56 -0
- package/esm2022/common/lib/directives/drag-select.directive.mjs +114 -0
- package/esm2022/common/lib/directives/file-drop-zone/file-drop-zone.directive.mjs +153 -0
- package/esm2022/common/lib/directives/file-drop-zone/file-drop-zone.interface.mjs +2 -0
- package/esm2022/common/lib/directives/focus-within.directive.mjs +81 -0
- package/esm2022/common/lib/directives/index.mjs +9 -0
- package/esm2022/common/lib/directives/light-dismiss.directive.mjs +44 -0
- package/esm2022/common/lib/directives/longpress.directive.mjs +36 -0
- package/esm2022/common/lib/directives/noop-value-accessor.directive.mjs +42 -0
- package/esm2022/common/yuuvis-client-framework-common.mjs +5 -0
- package/esm2022/forms/index.mjs +19 -0
- package/esm2022/forms/lib/elements/catalog/catalog.component.mjs +118 -0
- package/esm2022/forms/lib/elements/datetime/datetime.component.mjs +82 -0
- package/esm2022/forms/lib/elements/datetime-range/datetime-range.component.mjs +166 -0
- package/esm2022/forms/lib/elements/number/number.component.mjs +195 -0
- package/esm2022/forms/lib/elements/number-range/number-range.component.mjs +176 -0
- package/esm2022/forms/lib/elements/organization/organization.component.mjs +268 -0
- package/esm2022/forms/lib/elements/string/string.component.mjs +254 -0
- package/esm2022/forms/lib/form-input/form-input.component.mjs +88 -0
- package/esm2022/forms/lib/forms.module.mjs +58 -0
- package/esm2022/forms/yuuvis-client-framework-forms.mjs +5 -0
- package/esm2022/icons/index.mjs +4 -0
- package/esm2022/icons/lib/icon.service.mjs +59 -0
- package/esm2022/icons/lib/icons.mjs +31 -0
- package/esm2022/icons/lib/object-type-icon/object-type-icon.component.mjs +29 -0
- package/esm2022/icons/yuuvis-client-framework-icons.mjs +5 -0
- package/esm2022/index.mjs +2 -0
- package/esm2022/lib/yuuvis-client-framework.module.mjs +15 -0
- package/esm2022/list/index.mjs +3 -0
- package/esm2022/list/lib/list-item.directive.mjs +72 -0
- package/esm2022/list/lib/list.component.mjs +133 -0
- package/esm2022/list/yuuvis-client-framework-list.mjs +5 -0
- package/esm2022/metadata-form/index.mjs +4 -0
- package/esm2022/metadata-form/lib/metadata-default-templates/metadata-default-templates.component.mjs +31 -0
- package/esm2022/metadata-form/lib/metadata-form-element-registry.service.mjs +99 -0
- package/esm2022/metadata-form/lib/metadata-form-field/metadata-form-field.component.mjs +126 -0
- package/esm2022/metadata-form/lib/object-metadata-element-template.directive.mjs +52 -0
- package/esm2022/metadata-form/yuuvis-client-framework-metadata-form.mjs +5 -0
- package/esm2022/object-details/index.mjs +7 -0
- package/esm2022/object-details/lib/object-audit/object-audit.component.mjs +195 -0
- package/esm2022/object-details/lib/object-details-shell/object-details-shell.component.mjs +127 -0
- package/esm2022/object-details/lib/object-details.component.mjs +61 -0
- package/esm2022/object-details/lib/object-metadata/form-section-group.pipe.mjs +17 -0
- package/esm2022/object-details/lib/object-metadata/object-metadata.component.mjs +201 -0
- package/esm2022/object-details/lib/object-metadata/object-metadata.interface.mjs +2 -0
- package/esm2022/object-details/yuuvis-client-framework-object-details.mjs +5 -0
- package/esm2022/object-flavor/index.mjs +6 -0
- package/esm2022/object-flavor/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.mjs +25 -0
- package/esm2022/object-flavor/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.mjs +21 -0
- package/esm2022/object-flavor/lib/flavor-chip/flavor-chip.component.mjs +35 -0
- package/esm2022/object-flavor/lib/object-flavor/object-flavor.component.mjs +93 -0
- package/esm2022/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.mjs +43 -0
- package/esm2022/object-flavor/yuuvis-client-framework-object-flavor.mjs +5 -0
- package/esm2022/object-form/index.mjs +5 -0
- package/esm2022/object-form/lib/form-scripting.api.interface.mjs +2 -0
- package/esm2022/object-form/lib/form-scripting.service.mjs +160 -0
- package/esm2022/object-form/lib/object-form-element/object-form-element.component.mjs +87 -0
- package/esm2022/object-form/lib/object-form-extension.interface.mjs +36 -0
- package/esm2022/object-form/lib/object-form-group/object-form-group.component.mjs +85 -0
- package/esm2022/object-form/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.mjs +23 -0
- package/esm2022/object-form/lib/object-form-script/object-form-script.service.mjs +115 -0
- package/esm2022/object-form/lib/object-form-script/object-form-scripting-scope.mjs +251 -0
- package/esm2022/object-form/lib/object-form-translate.service.mjs +73 -0
- package/esm2022/object-form/lib/object-form.component.mjs +627 -0
- package/esm2022/object-form/lib/object-form.interface.mjs +9 -0
- package/esm2022/object-form/lib/object-form.model.mjs +20 -0
- package/esm2022/object-form/lib/object-form.service.mjs +127 -0
- package/esm2022/object-form/lib/object-form.utils.mjs +55 -0
- package/esm2022/object-form/lib/object-form.validation.mjs +48 -0
- package/esm2022/object-form/yuuvis-client-framework-object-form.mjs +5 -0
- package/esm2022/object-preview/index.mjs +3 -0
- package/esm2022/object-preview/lib/components/index.mjs +3 -0
- package/esm2022/object-preview/lib/components/object-email-preview/object-email-preview.component.mjs +45 -0
- package/esm2022/object-preview/lib/components/object-preview/object-preview.component.mjs +78 -0
- package/esm2022/object-preview/lib/services/object-preview.service.mjs +92 -0
- package/esm2022/object-preview/yuuvis-client-framework-object-preview.mjs +5 -0
- package/esm2022/object-summary/index.mjs +5 -0
- package/esm2022/object-summary/lib/multi-object-summary/multi-object-summary.component.mjs +33 -0
- package/esm2022/object-summary/lib/object-summary/object-summary.component.mjs +273 -0
- package/esm2022/object-summary/lib/object-summary-data/object-summary-data.component.mjs +80 -0
- package/esm2022/object-summary/lib/object-summary.module.mjs +15 -0
- package/esm2022/object-summary/yuuvis-client-framework-object-summary.mjs +5 -0
- package/esm2022/pagination/index.mjs +3 -0
- package/esm2022/pagination/lib/pagination.component.mjs +48 -0
- package/esm2022/pagination/lib/pagination.interface.mjs +2 -0
- package/esm2022/pagination/yuuvis-client-framework-pagination.mjs +5 -0
- package/esm2022/panel/index.mjs +2 -0
- package/esm2022/panel/lib/panel.component.mjs +20 -0
- package/esm2022/panel/yuuvis-client-framework-panel.mjs +5 -0
- package/esm2022/renderer/index.mjs +11 -0
- package/esm2022/renderer/lib/property-renderer/abstract.renderer.mjs +29 -0
- package/esm2022/renderer/lib/property-renderer/datetime.renderer.mjs +13 -0
- package/esm2022/renderer/lib/property-renderer/decimal.renderer.component.mjs +12 -0
- package/esm2022/renderer/lib/property-renderer/filesize.renderer.component.mjs +28 -0
- package/esm2022/renderer/lib/property-renderer/icon.renderer.component.mjs +23 -0
- package/esm2022/renderer/lib/property-renderer/integer.renderer.component.mjs +12 -0
- package/esm2022/renderer/lib/property-renderer/organization.renderer.mjs +19 -0
- package/esm2022/renderer/lib/property-renderer/string.renderer.component.mjs +12 -0
- package/esm2022/renderer/lib/property-renderer/unknown.renderer.mjs +12 -0
- package/esm2022/renderer/lib/renderer.directive.mjs +51 -0
- package/esm2022/renderer/lib/services/renderer/renderer.interface.mjs +2 -0
- package/esm2022/renderer/lib/services/renderer/renderer.service.mjs +84 -0
- package/esm2022/renderer/yuuvis-client-framework-renderer.mjs +5 -0
- package/esm2022/sequence-list/index.mjs +6 -0
- package/esm2022/sequence-list/lib/due-date-picker/due-date-picker.component.mjs +99 -0
- package/esm2022/sequence-list/lib/sequence-list-template-manage/sequence-list-template-manage.component.mjs +183 -0
- package/esm2022/sequence-list/lib/sequence-list-templates/sequence-list-templates.component.mjs +114 -0
- package/esm2022/sequence-list/lib/sequence-list.component.mjs +146 -0
- package/esm2022/sequence-list/lib/sequence-list.interface.mjs +2 -0
- package/esm2022/sequence-list/yuuvis-client-framework-sequence-list.mjs +5 -0
- package/esm2022/simple-search/index.mjs +3 -0
- package/esm2022/simple-search/lib/simple-search/simple-search.component.mjs +111 -0
- package/esm2022/simple-search/lib/simple-search/simple-search.interface.mjs +2 -0
- package/esm2022/simple-search/yuuvis-client-framework-simple-search.mjs +5 -0
- package/esm2022/tile-list/index.mjs +11 -0
- package/esm2022/tile-list/lib/tile/tile.component.mjs +53 -0
- package/esm2022/tile-list/lib/tile-config/action-select/action-select.component.mjs +22 -0
- package/esm2022/tile-list/lib/tile-config/icon-select/icon-select.component.mjs +33 -0
- package/esm2022/tile-list/lib/tile-config/property-select/property-select.component.mjs +91 -0
- package/esm2022/tile-list/lib/tile-config/tile-config-tile/tile-config-tile.component.mjs +66 -0
- package/esm2022/tile-list/lib/tile-config/tile-config-trigger/tile-config-trigger.component.mjs +46 -0
- package/esm2022/tile-list/lib/tile-config/tile-config.component.mjs +156 -0
- package/esm2022/tile-list/lib/tile-extension/directive/tile-extension.directive.mjs +37 -0
- package/esm2022/tile-list/lib/tile-extension/extensions/email.extension.mjs +42 -0
- package/esm2022/tile-list/lib/tile-extension/tile-extension.service.mjs +35 -0
- package/esm2022/tile-list/lib/tile-list/tile-list.component.mjs +510 -0
- package/esm2022/tile-list/lib/tile-list/tile-list.interface.mjs +2 -0
- package/esm2022/tile-list/yuuvis-client-framework-tile-list.mjs +5 -0
- package/esm2022/token-search/index.mjs +3 -0
- package/esm2022/token-search/token-search.component.mjs +78 -0
- package/esm2022/token-search/token-search.interface.mjs +2 -0
- package/esm2022/token-search/yuuvis-client-framework-token-search.mjs +5 -0
- package/esm2022/tree/index.mjs +3 -0
- package/esm2022/tree/lib/tree-node/tree-node.component.mjs +65 -0
- package/esm2022/tree/lib/tree.component.mjs +148 -0
- package/esm2022/tree/lib/tree.interface.mjs +2 -0
- package/esm2022/tree/lib/tree.service.mjs +95 -0
- package/esm2022/tree/yuuvis-client-framework-tree.mjs +5 -0
- package/esm2022/upload-progress/index.mjs +2 -0
- package/esm2022/upload-progress/lib/upload-progress/upload-progress-overlay/upload-progress-overlay.component.mjs +49 -0
- package/esm2022/upload-progress/lib/upload-progress/upload-progress.component.mjs +37 -0
- package/esm2022/upload-progress/yuuvis-client-framework-upload-progress.mjs +5 -0
- package/esm2022/user-avatar/index.mjs +3 -0
- package/esm2022/user-avatar/lib/user-avatar.component.mjs +69 -0
- package/esm2022/user-avatar/lib/user-avatar.module.mjs +24 -0
- package/esm2022/user-avatar/yuuvis-client-framework-user-avatar.mjs +5 -0
- package/esm2022/yuuvis-client-framework.mjs +5 -0
- package/fesm2022/yuuvis-client-framework-actions.mjs +333 -0
- package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-app-bar.mjs +96 -0
- package/fesm2022/yuuvis-client-framework-app-bar.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-clipboard.mjs +55 -0
- package/fesm2022/yuuvis-client-framework-clipboard.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-common.mjs +1020 -0
- package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-forms.mjs +1355 -0
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-icons.mjs +123 -0
- package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-list.mjs +209 -0
- package/fesm2022/yuuvis-client-framework-list.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs +302 -0
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-object-details.mjs +583 -0
- package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs +200 -0
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-object-form.mjs +1664 -0
- package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-object-preview.mjs +213 -0
- package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-object-summary.mjs +397 -0
- package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-pagination.mjs +55 -0
- package/fesm2022/yuuvis-client-framework-pagination.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-panel.mjs +27 -0
- package/fesm2022/yuuvis-client-framework-panel.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-renderer.mjs +262 -0
- package/fesm2022/yuuvis-client-framework-renderer.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs +519 -0
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-simple-search.mjs +118 -0
- package/fesm2022/yuuvis-client-framework-simple-search.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-tile-list.mjs +1036 -0
- package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-token-search.mjs +85 -0
- package/fesm2022/yuuvis-client-framework-token-search.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-tree.mjs +307 -0
- package/fesm2022/yuuvis-client-framework-tree.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-upload-progress.mjs +84 -0
- package/fesm2022/yuuvis-client-framework-upload-progress.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-user-avatar.mjs +96 -0
- package/fesm2022/yuuvis-client-framework-user-avatar.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework.mjs +22 -0
- package/fesm2022/yuuvis-client-framework.mjs.map +1 -0
- package/forms/README.md +3 -0
- package/forms/index.d.ts +9 -0
- package/forms/lib/elements/catalog/catalog.component.d.ts +68 -0
- package/forms/lib/elements/datetime/datetime.component.d.ts +32 -0
- package/forms/lib/elements/datetime-range/datetime-range.component.d.ts +51 -0
- package/forms/lib/elements/number/number.component.d.ts +77 -0
- package/forms/lib/elements/number-range/number-range.component.d.ts +66 -0
- package/forms/lib/elements/organization/organization.component.d.ts +93 -0
- package/forms/lib/elements/string/string.component.d.ts +104 -0
- package/forms/lib/form-input/form-input.component.d.ts +48 -0
- package/forms/lib/forms.module.d.ts +16 -0
- package/icons/README.md +5 -0
- package/icons/index.d.ts +3 -0
- package/icons/lib/icon.service.d.ts +38 -0
- package/icons/lib/icons.d.ts +1 -0
- package/icons/lib/object-type-icon/object-type-icon.component.d.ts +11 -0
- package/index.d.ts +1 -0
- package/lib/yuuvis-client-framework.module.d.ts +7 -0
- package/list/README.md +3 -0
- package/list/index.d.ts +2 -0
- package/list/lib/list-item.directive.d.ts +15 -0
- package/list/lib/list.component.d.ts +36 -0
- package/metadata-form/README.md +21 -0
- package/metadata-form/index.d.ts +3 -0
- package/metadata-form/lib/metadata-default-templates/metadata-default-templates.component.d.ts +5 -0
- package/metadata-form/lib/metadata-form-element-registry.service.d.ts +47 -0
- package/metadata-form/lib/metadata-form-field/metadata-form-field.component.d.ts +31 -0
- package/metadata-form/lib/object-metadata-element-template.directive.d.ts +27 -0
- package/object-details/README.md +28 -0
- package/object-details/index.d.ts +6 -0
- package/object-details/lib/object-audit/object-audit.component.d.ts +59 -0
- package/object-details/lib/object-details-shell/object-details-shell.component.d.ts +51 -0
- package/object-details/lib/object-details.component.d.ts +36 -0
- package/object-details/lib/object-metadata/form-section-group.pipe.d.ts +8 -0
- package/object-details/lib/object-metadata/object-metadata.component.d.ts +48 -0
- package/object-details/lib/object-metadata/object-metadata.interface.d.ts +26 -0
- package/object-flavor/README.md +3 -0
- package/object-flavor/index.d.ts +5 -0
- package/object-flavor/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.d.ts +12 -0
- package/object-flavor/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.d.ts +12 -0
- package/object-flavor/lib/flavor-chip/flavor-chip.component.d.ts +17 -0
- package/object-flavor/lib/object-flavor/object-flavor.component.d.ts +26 -0
- package/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.d.ts +10 -0
- package/object-form/README.md +3 -0
- package/object-form/index.d.ts +4 -0
- package/object-form/lib/form-scripting.api.interface.d.ts +131 -0
- package/object-form/lib/form-scripting.service.d.ts +30 -0
- package/object-form/lib/object-form-element/object-form-element.component.d.ts +22 -0
- package/object-form/lib/object-form-extension.interface.d.ts +22 -0
- package/object-form/lib/object-form-group/object-form-group.component.d.ts +22 -0
- package/object-form/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.d.ts +10 -0
- package/object-form/lib/object-form-script/object-form-script.service.d.ts +45 -0
- package/object-form/lib/object-form-script/object-form-scripting-scope.d.ts +50 -0
- package/object-form/lib/object-form-translate.service.d.ts +15 -0
- package/object-form/lib/object-form.component.d.ts +60 -0
- package/object-form/lib/object-form.interface.d.ts +113 -0
- package/object-form/lib/object-form.model.d.ts +18 -0
- package/object-form/lib/object-form.service.d.ts +39 -0
- package/object-form/lib/object-form.utils.d.ts +20 -0
- package/object-form/lib/object-form.validation.d.ts +21 -0
- package/object-preview/README.md +3 -0
- package/object-preview/index.d.ts +2 -0
- package/object-preview/lib/components/index.d.ts +2 -0
- package/object-preview/lib/components/object-email-preview/object-email-preview.component.d.ts +16 -0
- package/object-preview/lib/components/object-preview/object-preview.component.d.ts +13 -0
- package/object-preview/lib/services/object-preview.service.d.ts +37 -0
- package/object-summary/README.md +3 -0
- package/object-summary/index.d.ts +4 -0
- package/object-summary/lib/multi-object-summary/multi-object-summary.component.d.ts +7 -0
- package/object-summary/lib/object-summary/object-summary.component.d.ts +73 -0
- package/object-summary/lib/object-summary-data/object-summary-data.component.d.ts +11 -0
- package/object-summary/lib/object-summary.module.d.ts +7 -0
- package/package.json +173 -0
- package/pagination/README.md +3 -0
- package/pagination/index.d.ts +2 -0
- package/pagination/lib/pagination.component.d.ts +18 -0
- package/pagination/lib/pagination.interface.d.ts +5 -0
- package/panel/README.md +3 -0
- package/panel/index.d.ts +1 -0
- package/panel/lib/panel.component.d.ts +12 -0
- package/renderer/README.md +5 -0
- package/renderer/index.d.ts +10 -0
- package/renderer/lib/property-renderer/abstract.renderer.d.ts +14 -0
- package/renderer/lib/property-renderer/datetime.renderer.d.ts +6 -0
- package/renderer/lib/property-renderer/decimal.renderer.component.d.ts +6 -0
- package/renderer/lib/property-renderer/filesize.renderer.component.d.ts +7 -0
- package/renderer/lib/property-renderer/icon.renderer.component.d.ts +6 -0
- package/renderer/lib/property-renderer/integer.renderer.component.d.ts +6 -0
- package/renderer/lib/property-renderer/organization.renderer.d.ts +7 -0
- package/renderer/lib/property-renderer/string.renderer.component.d.ts +6 -0
- package/renderer/lib/property-renderer/unknown.renderer.d.ts +6 -0
- package/renderer/lib/renderer.directive.d.ts +17 -0
- package/renderer/lib/services/renderer/renderer.interface.d.ts +8 -0
- package/renderer/lib/services/renderer/renderer.service.d.ts +35 -0
- package/sequence-list/README.md +3 -0
- package/sequence-list/index.d.ts +5 -0
- package/sequence-list/lib/due-date-picker/due-date-picker.component.d.ts +28 -0
- package/sequence-list/lib/sequence-list-template-manage/sequence-list-template-manage.component.d.ts +52 -0
- package/sequence-list/lib/sequence-list-templates/sequence-list-templates.component.d.ts +36 -0
- package/sequence-list/lib/sequence-list.component.d.ts +43 -0
- package/sequence-list/lib/sequence-list.interface.d.ts +16 -0
- package/simple-search/README.md +3 -0
- package/simple-search/index.d.ts +2 -0
- package/simple-search/lib/simple-search/simple-search.component.d.ts +55 -0
- package/simple-search/lib/simple-search/simple-search.interface.d.ts +4 -0
- package/styles/client-framework.scss +27 -0
- package/tile-list/README.md +3 -0
- package/tile-list/index.d.ts +10 -0
- package/tile-list/lib/tile/tile.component.d.ts +22 -0
- package/tile-list/lib/tile-config/action-select/action-select.component.d.ts +13 -0
- package/tile-list/lib/tile-config/icon-select/icon-select.component.d.ts +11 -0
- package/tile-list/lib/tile-config/property-select/property-select.component.d.ts +25 -0
- package/tile-list/lib/tile-config/tile-config-tile/tile-config-tile.component.d.ts +20 -0
- package/tile-list/lib/tile-config/tile-config-trigger/tile-config-trigger.component.d.ts +17 -0
- package/tile-list/lib/tile-config/tile-config.component.d.ts +47 -0
- package/tile-list/lib/tile-extension/directive/tile-extension.directive.d.ts +11 -0
- package/tile-list/lib/tile-extension/extensions/email.extension.d.ts +10 -0
- package/tile-list/lib/tile-extension/tile-extension.service.d.ts +16 -0
- package/tile-list/lib/tile-list/tile-list.component.d.ts +116 -0
- package/tile-list/lib/tile-list/tile-list.interface.d.ts +18 -0
- package/token-search/README.md +3 -0
- package/token-search/index.d.ts +2 -0
- package/token-search/token-search.component.d.ts +22 -0
- package/token-search/token-search.interface.d.ts +4 -0
- package/tree/README.md +3 -0
- package/tree/index.d.ts +2 -0
- package/tree/lib/tree-node/tree-node.component.d.ts +21 -0
- package/tree/lib/tree.component.d.ts +53 -0
- package/tree/lib/tree.interface.d.ts +11 -0
- package/tree/lib/tree.service.d.ts +35 -0
- package/upload-progress/README.md +3 -0
- package/upload-progress/index.d.ts +1 -0
- package/upload-progress/lib/upload-progress/upload-progress-overlay/upload-progress-overlay.component.d.ts +17 -0
- package/upload-progress/lib/upload-progress/upload-progress.component.d.ts +16 -0
- package/user-avatar/README.md +3 -0
- package/user-avatar/index.d.ts +2 -0
- package/user-avatar/lib/user-avatar.component.d.ts +44 -0
- package/user-avatar/lib/user-avatar.module.d.ts +8 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, forwardRef, HostBinding, HostListener, inject, input, Input, Output, ViewChild } from '@angular/core';
|
|
3
|
+
import { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { Classification, SystemService, TranslateModule, UserService, YuvUser } from '@yuuvis/client-core';
|
|
5
|
+
import { YUV_ICONS } from '@yuuvis/client-framework/icons';
|
|
6
|
+
import { AutoComplete, YvcAutocompleteModule } from '@yuuvis/components/autocomplete';
|
|
7
|
+
import { YvcIconModule } from '@yuuvis/components/icon';
|
|
8
|
+
import { forkJoin, of } from 'rxjs';
|
|
9
|
+
import { catchError } from 'rxjs/operators';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/forms";
|
|
12
|
+
import * as i2 from "@yuuvis/components/autocomplete";
|
|
13
|
+
import * as i3 from "@yuuvis/components/icon";
|
|
14
|
+
import * as i4 from "@yuuvis/client-core";
|
|
15
|
+
/**
|
|
16
|
+
* Creates form input for organisation values.
|
|
17
|
+
* Implements `ControlValueAccessor` so it can be used within Angular forms.
|
|
18
|
+
*
|
|
19
|
+
* [Screenshot](../assets/images/yuv-organization.gif)
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* <yuv-organization [multiselect]="true"></yuv-organization>
|
|
23
|
+
*/
|
|
24
|
+
export class OrganizationComponent {
|
|
25
|
+
constructor() {
|
|
26
|
+
this.system = inject(SystemService);
|
|
27
|
+
this.userService = inject(UserService);
|
|
28
|
+
this.minLength = 2;
|
|
29
|
+
this.icons = {
|
|
30
|
+
organizationMulti: YUV_ICONS['group'],
|
|
31
|
+
organization: YUV_ICONS['user']
|
|
32
|
+
};
|
|
33
|
+
this.isValidInput = true;
|
|
34
|
+
this.value = null;
|
|
35
|
+
this._innerValue = [];
|
|
36
|
+
this.autocompleteRes = [];
|
|
37
|
+
this.filterRoles = [];
|
|
38
|
+
/**
|
|
39
|
+
* Indicator that multiple strings could be inserted, they will be rendered as chips (default: false).
|
|
40
|
+
*/
|
|
41
|
+
this.multiselect = false;
|
|
42
|
+
/**
|
|
43
|
+
* Will prevent the input from being changed (default: false)
|
|
44
|
+
*/
|
|
45
|
+
this.readonly = false;
|
|
46
|
+
/**
|
|
47
|
+
* Set this to true and the component will try to gain focus once it has been rendered.
|
|
48
|
+
* Notice that this is not reliable. If there are any other components that are rendered
|
|
49
|
+
* later and also try to be focused, they will 'win', because there can only be one focus.
|
|
50
|
+
*/
|
|
51
|
+
this.autofocus = false;
|
|
52
|
+
/**
|
|
53
|
+
* Will attch the overlay to this HTMLelement
|
|
54
|
+
*/
|
|
55
|
+
this.appendTo = null;
|
|
56
|
+
/**
|
|
57
|
+
* Whether or not to exclude the current user from autocomplete result
|
|
58
|
+
*/
|
|
59
|
+
this.excludeMe = false;
|
|
60
|
+
/**
|
|
61
|
+
* Whether or not the emitted value should be an object containing id and title
|
|
62
|
+
* or, if set to false only the ID
|
|
63
|
+
*/
|
|
64
|
+
this.withMetadata = input(false);
|
|
65
|
+
this.userSelect = new EventEmitter();
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
67
|
+
this.propagateChange = (_) => { };
|
|
68
|
+
}
|
|
69
|
+
set innerValue(iv) {
|
|
70
|
+
this._innerValue = iv || [];
|
|
71
|
+
this.userSelect.emit(this._innerValue);
|
|
72
|
+
}
|
|
73
|
+
get innerValue() {
|
|
74
|
+
return this._innerValue;
|
|
75
|
+
}
|
|
76
|
+
// prevent ENTER from being propagated, because the component could be located
|
|
77
|
+
// inside some other component that also relys on ENTER
|
|
78
|
+
onKeydownHandler(event) {
|
|
79
|
+
event.stopPropagation();
|
|
80
|
+
}
|
|
81
|
+
get _inputDisabled() {
|
|
82
|
+
return !this.multiselect && this.innerValue?.length === 1;
|
|
83
|
+
}
|
|
84
|
+
set classifications(c) {
|
|
85
|
+
this._classifications = c;
|
|
86
|
+
if (c?.length) {
|
|
87
|
+
const classifications = this.system.getClassifications(c);
|
|
88
|
+
if (classifications.has(Classification.STRING_ORGANIZATION)) {
|
|
89
|
+
const options = classifications.get(Classification.STRING_ORGANIZATION).options;
|
|
90
|
+
this.filterRoles = options;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.filterRoles = [];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
get classifications() {
|
|
98
|
+
return this._classifications;
|
|
99
|
+
}
|
|
100
|
+
writeValue(value) {
|
|
101
|
+
if (value) {
|
|
102
|
+
this.value = value;
|
|
103
|
+
this.resolveFn(value);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
this.value = null;
|
|
107
|
+
this.innerValue = [];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
registerOnChange(fn) {
|
|
111
|
+
this.propagateChange = fn;
|
|
112
|
+
}
|
|
113
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
114
|
+
registerOnTouched(fn) { }
|
|
115
|
+
propagate() {
|
|
116
|
+
this.propagateChange(this.#getPropagateValue());
|
|
117
|
+
}
|
|
118
|
+
#getPropagateValue() {
|
|
119
|
+
return this.multiselect
|
|
120
|
+
? this.withMetadata()
|
|
121
|
+
? this.value
|
|
122
|
+
? this._innerValue.map((v) => ({
|
|
123
|
+
id: v.id,
|
|
124
|
+
title: v.title
|
|
125
|
+
}))
|
|
126
|
+
: this.value
|
|
127
|
+
: this.value
|
|
128
|
+
: this.withMetadata()
|
|
129
|
+
? this.value
|
|
130
|
+
? {
|
|
131
|
+
id: this._innerValue[0].id,
|
|
132
|
+
title: this._innerValue[0].title
|
|
133
|
+
}
|
|
134
|
+
: this.value
|
|
135
|
+
: this.value;
|
|
136
|
+
}
|
|
137
|
+
focusInput() {
|
|
138
|
+
this.autoCompleteInput.focusInput();
|
|
139
|
+
}
|
|
140
|
+
resolveFn(value) {
|
|
141
|
+
const map = (value instanceof Array ? value : [value]).map((v) => {
|
|
142
|
+
const match = this.innerValue.find((iv) => iv.id === v);
|
|
143
|
+
return match
|
|
144
|
+
? of(match)
|
|
145
|
+
: this.userService.getUserById(v).pipe(catchError(() => of(new YuvUser({
|
|
146
|
+
id: v,
|
|
147
|
+
title: v,
|
|
148
|
+
image: null
|
|
149
|
+
}, undefined))));
|
|
150
|
+
});
|
|
151
|
+
return forkJoin(map).subscribe((data) => {
|
|
152
|
+
this.innerValue = data;
|
|
153
|
+
// setTimeout(() => this.autoCompleteInput.cd.markForCheck());
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
autocompleteFn(query) {
|
|
157
|
+
if (query.length >= this.minLength) {
|
|
158
|
+
this.userService.queryUser(query, this.excludeMe, this.filterRoles).subscribe({
|
|
159
|
+
next: (users) => {
|
|
160
|
+
this.autocompleteRes = users.filter((user) => !this.innerValue.some((value) => value.id === user.id));
|
|
161
|
+
this.propagateValidity(this.autocompleteRes.length > 0);
|
|
162
|
+
},
|
|
163
|
+
error: () => {
|
|
164
|
+
this.autocompleteRes = [];
|
|
165
|
+
this.propagateValidity(this.autocompleteRes.length > 0);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
this.autocompleteRes = [];
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// returns null when valid else the validation object
|
|
174
|
+
validate() {
|
|
175
|
+
return this.isValidInput ? null : { empty: { valid: false } };
|
|
176
|
+
}
|
|
177
|
+
propagateValidity(valid = true) {
|
|
178
|
+
if (this.isValidInput !== valid) {
|
|
179
|
+
this.isValidInput = valid;
|
|
180
|
+
this.propagate();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// handle selection changes to the model
|
|
184
|
+
onSelect() {
|
|
185
|
+
if (this.multiselect) {
|
|
186
|
+
this.value = this.innerValue.map((v) => v.id);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
// internal autocomplete control is always set to multiselect
|
|
190
|
+
// so the resolved value is always an array
|
|
191
|
+
this.innerValue = this.innerValue.slice(-1);
|
|
192
|
+
this.value = this.innerValue[0].id;
|
|
193
|
+
}
|
|
194
|
+
this.propagate();
|
|
195
|
+
}
|
|
196
|
+
// handle selection changes to the model
|
|
197
|
+
onUnselect(value) {
|
|
198
|
+
this.innerValue = this.innerValue.filter((v) => v.id !== value.id);
|
|
199
|
+
const _value = this.innerValue.map((v) => v.id);
|
|
200
|
+
this.value = this.multiselect ? _value : null;
|
|
201
|
+
if (!this.multiselect) {
|
|
202
|
+
this.clearInnerInput();
|
|
203
|
+
}
|
|
204
|
+
this.propagate();
|
|
205
|
+
}
|
|
206
|
+
onAutoCompleteBlur() {
|
|
207
|
+
this.clearInnerInput();
|
|
208
|
+
}
|
|
209
|
+
clearInnerInput() {
|
|
210
|
+
this.autoCompleteInput.clearInput();
|
|
211
|
+
}
|
|
212
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
213
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: OrganizationComponent, isStandalone: true, selector: "yuv-organization", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, situation: { classPropertyName: "situation", publicName: "situation", isSignal: false, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: "multiselect", publicName: "multiselect", isSignal: false, isRequired: false, transformFunction: null }, classifications: { classPropertyName: "classifications", publicName: "classifications", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: false, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: false, isRequired: false, transformFunction: null }, excludeMe: { classPropertyName: "excludeMe", publicName: "excludeMe", isSignal: false, isRequired: false, transformFunction: null }, withMetadata: { classPropertyName: "withMetadata", publicName: "withMetadata", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { userSelect: "userSelect" }, host: { listeners: { "keydown.enter": "onKeydownHandler($event)" }, properties: { "class.inputDisabled": "this._inputDisabled" } }, providers: [
|
|
214
|
+
{
|
|
215
|
+
provide: NG_VALUE_ACCESSOR,
|
|
216
|
+
useExisting: forwardRef(() => OrganizationComponent),
|
|
217
|
+
multi: true
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
provide: NG_VALIDATORS,
|
|
221
|
+
useExisting: forwardRef(() => OrganizationComponent),
|
|
222
|
+
multi: true
|
|
223
|
+
}
|
|
224
|
+
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<yvc-autocomplete\n [(ngModel)]=\"innerValue\"\n #autocomplete\n (suggestionSelect)=\"onSelect()\"\n [placeholder]=\"placeholder\"\n (suggestionUnselect)=\"onUnselect($event)\"\n (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\"\n [autocompleteValues]=\"autocompleteRes\"\n field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"true\"\n>\n <!-- template for item inside the dropdown -->\n <ng-template #autocompleteOptionTemplate let-item>\n <span class=\"chip\">{{ item.title }}</span>\n </ng-template>\n \n <!-- template for chip -->\n <ng-template #chipTemplate let-item>\n <span class=\"chip\">{{ item.title }}</span>\n </ng-template>\n</yvc-autocomplete>\n\n<yvc-icon\n class=\"classify\"\n [title]=\"'yuv.form.element.organization.classify.icon.title' | translate\"\n [svg]=\"multiselect ? icons.organizationMulti : icons.organization\"\n (click)=\"focusInput()\"\n></yvc-icon>\n", styles: [":host{display:flex;align-items:center}:host ::ng-deep .chip{--yvc-form-element-border-color: var(--text-color-hint)}:host yvc-autocomplete{flex:1;--yvc-form-element-focus-border-color: transparent;--yvc-form-element-focus-outline-color: transparent}:host yvc-icon.classify{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 8);color:var(--text-color-hint)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: YvcAutocompleteModule }, { kind: "component", type: i2.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i3.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
225
|
+
}
|
|
226
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationComponent, decorators: [{
|
|
227
|
+
type: Component,
|
|
228
|
+
args: [{ selector: 'yuv-organization', standalone: true, imports: [CommonModule, FormsModule, YvcAutocompleteModule, YvcIconModule, TranslateModule], providers: [
|
|
229
|
+
{
|
|
230
|
+
provide: NG_VALUE_ACCESSOR,
|
|
231
|
+
useExisting: forwardRef(() => OrganizationComponent),
|
|
232
|
+
multi: true
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
provide: NG_VALIDATORS,
|
|
236
|
+
useExisting: forwardRef(() => OrganizationComponent),
|
|
237
|
+
multi: true
|
|
238
|
+
}
|
|
239
|
+
], template: "<yvc-autocomplete\n [(ngModel)]=\"innerValue\"\n #autocomplete\n (suggestionSelect)=\"onSelect()\"\n [placeholder]=\"placeholder\"\n (suggestionUnselect)=\"onUnselect($event)\"\n (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\"\n [autocompleteValues]=\"autocompleteRes\"\n field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"true\"\n>\n <!-- template for item inside the dropdown -->\n <ng-template #autocompleteOptionTemplate let-item>\n <span class=\"chip\">{{ item.title }}</span>\n </ng-template>\n \n <!-- template for chip -->\n <ng-template #chipTemplate let-item>\n <span class=\"chip\">{{ item.title }}</span>\n </ng-template>\n</yvc-autocomplete>\n\n<yvc-icon\n class=\"classify\"\n [title]=\"'yuv.form.element.organization.classify.icon.title' | translate\"\n [svg]=\"multiselect ? icons.organizationMulti : icons.organization\"\n (click)=\"focusInput()\"\n></yvc-icon>\n", styles: [":host{display:flex;align-items:center}:host ::ng-deep .chip{--yvc-form-element-border-color: var(--text-color-hint)}:host yvc-autocomplete{flex:1;--yvc-form-element-focus-border-color: transparent;--yvc-form-element-focus-outline-color: transparent}:host yvc-icon.classify{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 8);color:var(--text-color-hint)}\n"] }]
|
|
240
|
+
}], propDecorators: { autoCompleteInput: [{
|
|
241
|
+
type: ViewChild,
|
|
242
|
+
args: ['autocomplete']
|
|
243
|
+
}], onKeydownHandler: [{
|
|
244
|
+
type: HostListener,
|
|
245
|
+
args: ['keydown.enter', ['$event']]
|
|
246
|
+
}], _inputDisabled: [{
|
|
247
|
+
type: HostBinding,
|
|
248
|
+
args: ['class.inputDisabled']
|
|
249
|
+
}], placeholder: [{
|
|
250
|
+
type: Input
|
|
251
|
+
}], situation: [{
|
|
252
|
+
type: Input
|
|
253
|
+
}], multiselect: [{
|
|
254
|
+
type: Input
|
|
255
|
+
}], classifications: [{
|
|
256
|
+
type: Input
|
|
257
|
+
}], readonly: [{
|
|
258
|
+
type: Input
|
|
259
|
+
}], autofocus: [{
|
|
260
|
+
type: Input
|
|
261
|
+
}], appendTo: [{
|
|
262
|
+
type: Input
|
|
263
|
+
}], excludeMe: [{
|
|
264
|
+
type: Input
|
|
265
|
+
}], userSelect: [{
|
|
266
|
+
type: Output
|
|
267
|
+
}] } });
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9vcmdhbml6YXRpb24vb3JnYW5pemF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9vcmdhbml6YXRpb24vb3JnYW5pemF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7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S0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtPLGVBQWU7c0JBQTNCLEtBQUs7Z0JBbUJHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBUUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBpbnB1dCwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDbGFzc2lmaWNhdGlvbiwgU3lzdGVtU2VydmljZSwgVHJhbnNsYXRlTW9kdWxlLCBVc2VyU2VydmljZSwgWXV2VXNlciB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgWVVWX0lDT05TIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtZnJhbWV3b3JrL2ljb25zJztcbmltcG9ydCB7IEF1dG9Db21wbGV0ZSwgWXZjQXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBZdmNJY29uTW9kdWxlIH0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgZm9ya0pvaW4sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIENyZWF0ZXMgZm9ybSBpbnB1dCBmb3Igb3JnYW5pc2F0aW9uIHZhbHVlcy5cbiAqIEltcGxlbWVudHMgYENvbnRyb2xWYWx1ZUFjY2Vzc29yYCBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoaW4gQW5ndWxhciBmb3Jtcy5cbiAqXG4gKiBbU2NyZWVuc2hvdF0oLi4vYXNzZXRzL2ltYWdlcy95dXYtb3JnYW5pemF0aW9uLmdpZilcbiAqXG4gKiBAZXhhbXBsZVxuICogPHl1di1vcmdhbml6YXRpb24gW211bHRpc2VsZWN0XT1cInRydWVcIj48L3l1di1vcmdhbml6YXRpb24+XG4gKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LW9yZ2FuaXphdGlvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBZdmNBdXRvY29tcGxldGVNb2R1bGUsIFl2Y0ljb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9vcmdhbml6YXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vcmdhbml6YXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcmdhbml6YXRpb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcmdhbml6YXRpb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIHByaXZhdGUgc3lzdGVtID0gaW5qZWN0KFN5c3RlbVNlcnZpY2UpO1xuICBwcml2YXRlIHVzZXJTZXJ2aWNlID0gaW5qZWN0KFVzZXJTZXJ2aWNlKTtcblxuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGUnKSBhdXRvQ29tcGxldGVJbnB1dCE6IEF1dG9Db21wbGV0ZTtcbiAgbWluTGVuZ3RoID0gMjtcblxuICBpY29ucyA9IHtcbiAgICBvcmdhbml6YXRpb25NdWx0aTogWVVWX0lDT05TWydncm91cCddLFxuICAgIG9yZ2FuaXphdGlvbjogWVVWX0lDT05TWyd1c2VyJ11cbiAgfTtcblxuICBwcml2YXRlIGlzVmFsaWRJbnB1dCA9IHRydWU7XG4gIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xuICBfaW5uZXJWYWx1ZTogWXV2VXNlcltdID0gW107XG4gIHNldCBpbm5lclZhbHVlKGl2OiBZdXZVc2VyW10pIHtcbiAgICB0aGlzLl9pbm5lclZhbHVlID0gaXYgfHwgW107XG4gICAgdGhpcy51c2VyU2VsZWN0LmVtaXQodGhpcy5faW5uZXJWYWx1ZSk7XG4gIH1cbiAgZ2V0IGlubmVyVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lubmVyVmFsdWU7XG4gIH1cbiAgYXV0b2NvbXBsZXRlUmVzOiBZdXZVc2VyW10gPSBbXTtcbiAgcHJpdmF0ZSBmaWx0ZXJSb2xlczogc3RyaW5nW10gPSBbXTtcblxuICAvLyBwcmV2ZW50IEVOVEVSIGZyb20gYmVpbmcgcHJvcGFnYXRlZCwgYmVjYXVzZSB0aGUgY29tcG9uZW50IGNvdWxkIGJlIGxvY2F0ZWRcbiAgLy8gaW5zaWRlIHNvbWUgb3RoZXIgY29tcG9uZW50IHRoYXQgYWxzbyByZWx5cyBvbiBFTlRFUlxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSlcbiAgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbnB1dERpc2FibGVkJykgZ2V0IF9pbnB1dERpc2FibGVkKCkge1xuICAgIHJldHVybiAhdGhpcy5tdWx0aXNlbGVjdCAmJiB0aGlzLmlubmVyVmFsdWU/Lmxlbmd0aCA9PT0gMTtcbiAgfVxuICAvLyBASG9zdEJpbmRpbmcoJ2NsYXNzLmlucHV0RGlydHknKSBnZXQgX2lucHV0RGlydHkoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlSW5wdXQ/Lm11bHRpSW5wdXRFTD8ubmF0aXZlRWxlbWVudD8udmFsdWU7XG4gIC8vIH1cblxuICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIFBvc3NpYmxlcyB2YWx1ZXMgYXJlIGBFRElUYCAoZGVmYXVsdCksYFNFQVJDSGAsYENSRUFURWAuIEluIHNlYXJjaCBzaXR1YXRpb24gdmFsaWRhdGlvbiBvZiB0aGUgZm9ybSBlbGVtZW50IHdpbGwgYmUgdHVybmVkIG9mZiwgc28geW91IGFyZSBhYmxlIHRvIGVudGVyIHNlYXJjaCB0ZXJtcyB0aGF0IGRvIG5vdCBtZWV0IHRoZSBlbGVtZW50cyB2YWxpZGF0b3JzLlxuICAgKi9cbiAgQElucHV0KCkgc2l0dWF0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogSW5kaWNhdG9yIHRoYXQgbXVsdGlwbGUgc3RyaW5ncyBjb3VsZCBiZSBpbnNlcnRlZCwgdGhleSB3aWxsIGJlIHJlbmRlcmVkIGFzIGNoaXBzIChkZWZhdWx0OiBmYWxzZSkuXG4gICAqL1xuICBASW5wdXQoKSBtdWx0aXNlbGVjdCA9IGZhbHNlO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBzZW1hbnRpY3MgZm9yIHRoZSBmb3JtIGVsZW1lbnQuXG4gICAqL1xuICBwcml2YXRlIF9jbGFzc2lmaWNhdGlvbnM/OiBzdHJpbmdbXTtcbiAgQElucHV0KCkgc2V0IGNsYXNzaWZpY2F0aW9ucyhjOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2NsYXNzaWZpY2F0aW9ucyA9IGM7XG4gICAgaWYgKGM/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgY2xhc3NpZmljYXRpb25zID0gdGhpcy5zeXN0ZW0uZ2V0Q2xhc3NpZmljYXRpb25zKGMpO1xuICAgICAgaWYgKGNsYXNzaWZpY2F0aW9ucy5oYXMoQ2xhc3NpZmljYXRpb24uU1RSSU5HX09SR0FOSVpBVElPTikpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGNsYXNzaWZpY2F0aW9ucy5nZXQoQ2xhc3NpZmljYXRpb24uU1RSSU5HX09SR0FOSVpBVElPTikhLm9wdGlvbnM7XG4gICAgICAgIHRoaXMuZmlsdGVyUm9sZXMgPSBvcHRpb25zO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlclJvbGVzID0gW107XG4gICAgfVxuICB9XG4gIGdldCBjbGFzc2lmaWNhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsYXNzaWZpY2F0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIHByZXZlbnQgdGhlIGlucHV0IGZyb20gYmVpbmcgY2hhbmdlZCAoZGVmYXVsdDogZmFsc2UpXG4gICAqL1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSBhbmQgdGhlIGNvbXBvbmVudCB3aWxsIHRyeSB0byBnYWluIGZvY3VzIG9uY2UgaXQgaGFzIGJlZW4gcmVuZGVyZWQuXG4gICAqIE5vdGljZSB0aGF0IHRoaXMgaXMgbm90IHJlbGlhYmxlLiBJZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVuZGVyZWRcbiAgICogbGF0ZXIgYW5kIGFsc28gdHJ5IHRvIGJlIGZvY3VzZWQsIHRoZXkgd2lsbCAnd2luJywgYmVjYXVzZSB0aGVyZSBjYW4gb25seSBiZSBvbmUgZm9jdXMuXG4gICAqL1xuICBASW5wdXQoKSBhdXRvZm9jdXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2lsbCBhdHRjaCB0aGUgb3ZlcmxheSB0byB0aGlzIEhUTUxlbGVtZW50XG4gICAqL1xuICBASW5wdXQoKSBhcHBlbmRUbyA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGV4Y2x1ZGUgdGhlIGN1cnJlbnQgdXNlciBmcm9tIGF1dG9jb21wbGV0ZSByZXN1bHRcbiAgICovXG4gIEBJbnB1dCgpIGV4Y2x1ZGVNZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZW1pdHRlZCB2YWx1ZSBzaG91bGQgYmUgYW4gb2JqZWN0IGNvbnRhaW5pbmcgaWQgYW5kIHRpdGxlXG4gICAqIG9yLCBpZiBzZXQgdG8gZmFsc2Ugb25seSB0aGUgSURcbiAgICovXG4gIHdpdGhNZXRhZGF0YSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBAT3V0cHV0KCkgdXNlclNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8WXV2VXNlcltdPigpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLnJlc29sdmVGbih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5pbm5lclZhbHVlID0gW107XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge31cblxuICBwcml2YXRlIHByb3BhZ2F0ZSgpIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLiNnZXRQcm9wYWdhdGVWYWx1ZSgpKTtcbiAgfVxuXG4gICNnZXRQcm9wYWdhdGVWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWx0aXNlbGVjdFxuICAgICAgPyB0aGlzLndpdGhNZXRhZGF0YSgpXG4gICAgICAgID8gdGhpcy52YWx1ZVxuICAgICAgICAgID8gdGhpcy5faW5uZXJWYWx1ZS5tYXAoKHYpID0+ICh7XG4gICAgICAgICAgICAgIGlkOiB2LmlkLFxuICAgICAgICAgICAgICB0aXRsZTogdi50aXRsZVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgOiB0aGlzLnZhbHVlXG4gICAgICAgIDogdGhpcy52YWx1ZVxuICAgICAgOiB0aGlzLndpdGhNZXRhZGF0YSgpXG4gICAgICAgID8gdGhpcy52YWx1ZVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBpZDogdGhpcy5faW5uZXJWYWx1ZVswXS5pZCxcbiAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuX2lubmVyVmFsdWVbMF0udGl0bGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHRoaXMudmFsdWVcbiAgICAgICAgOiB0aGlzLnZhbHVlO1xuICB9XG5cbiAgZm9jdXNJbnB1dCgpIHtcbiAgICB0aGlzLmF1dG9Db21wbGV0ZUlucHV0LmZvY3VzSW5wdXQoKTtcbiAgfVxuXG4gIHJlc29sdmVGbih2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgbWFwID0gKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkgPyB2YWx1ZSA6IFt2YWx1ZV0pLm1hcCgodikgPT4ge1xuICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmlubmVyVmFsdWUuZmluZCgoaXYpID0+IGl2LmlkID09PSB2KTtcbiAgICAgIHJldHVybiBtYXRjaFxuICAgICAgICA/IG9mKG1hdGNoKVxuICAgICAgICA6IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckJ5SWQodikucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT5cbiAgICAgICAgICAgICAgb2YoXG4gICAgICAgICAgICAgICAgbmV3IFl1dlVzZXIoXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB2LFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdixcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IG51bGxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiBmb3JrSm9pbihtYXApLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5pbm5lclZhbHVlID0gZGF0YTtcbiAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5jZC5tYXJrRm9yQ2hlY2soKSk7XG4gICAgfSk7XG4gIH1cblxuICBhdXRvY29tcGxldGVGbihxdWVyeTogc3RyaW5nKSB7XG4gICAgaWYgKHF1ZXJ5Lmxlbmd0aCA+PSB0aGlzLm1pbkxlbmd0aCkge1xuICAgICAgdGhpcy51c2VyU2VydmljZS5xdWVyeVVzZXIocXVlcnksIHRoaXMuZXhjbHVkZU1lLCB0aGlzLmZpbHRlclJvbGVzKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodXNlcnM6IFl1dlVzZXJbXSkgPT4ge1xuICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gdXNlcnMuZmlsdGVyKCh1c2VyKSA9PiAhdGhpcy5pbm5lclZhbHVlLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZS5pZCA9PT0gdXNlci5pZCkpO1xuICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsaWRpdHkodGhpcy5hdXRvY29tcGxldGVSZXMubGVuZ3RoID4gMCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVSZXMgPSBbXTtcbiAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbGlkaXR5KHRoaXMuYXV0b2NvbXBsZXRlUmVzLmxlbmd0aCA+IDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVSZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICAvLyByZXR1cm5zIG51bGwgd2hlbiB2YWxpZCBlbHNlIHRoZSB2YWxpZGF0aW9uIG9iamVjdFxuICBwdWJsaWMgdmFsaWRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZElucHV0ID8gbnVsbCA6IHsgZW1wdHk6IHsgdmFsaWQ6IGZhbHNlIH0gfTtcbiAgfVxuXG4gIHByb3BhZ2F0ZVZhbGlkaXR5KHZhbGlkID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLmlzVmFsaWRJbnB1dCAhPT0gdmFsaWQpIHtcbiAgICAgIHRoaXMuaXNWYWxpZElucHV0ID0gdmFsaWQ7XG4gICAgICB0aGlzLnByb3BhZ2F0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGhhbmRsZSBzZWxlY3Rpb24gY2hhbmdlcyB0byB0aGUgbW9kZWxcbiAgb25TZWxlY3QoKSB7XG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmlubmVyVmFsdWUubWFwKCh2KSA9PiB2LmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW50ZXJuYWwgYXV0b2NvbXBsZXRlIGNvbnRyb2wgaXMgYWx3YXlzIHNldCB0byBtdWx0aXNlbGVjdFxuICAgICAgLy8gc28gdGhlIHJlc29sdmVkIHZhbHVlIGlzIGFsd2F5cyBhbiBhcnJheVxuICAgICAgdGhpcy5pbm5lclZhbHVlID0gdGhpcy5pbm5lclZhbHVlLnNsaWNlKC0xKTtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmlubmVyVmFsdWVbMF0uaWQ7XG4gICAgfVxuICAgIHRoaXMucHJvcGFnYXRlKCk7XG4gIH1cblxuICAvLyBoYW5kbGUgc2VsZWN0aW9uIGNoYW5nZXMgdG8gdGhlIG1vZGVsXG4gIG9uVW5zZWxlY3QodmFsdWU6IGFueSkge1xuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5maWx0ZXIoKHYpID0+IHYuaWQgIT09IHZhbHVlLmlkKTtcbiAgICBjb25zdCBfdmFsdWUgPSB0aGlzLmlubmVyVmFsdWUubWFwKCh2KSA9PiB2LmlkKTtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5tdWx0aXNlbGVjdCA/IF92YWx1ZSA6IG51bGw7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLmNsZWFySW5uZXJJbnB1dCgpO1xuICAgIH1cbiAgICB0aGlzLnByb3BhZ2F0ZSgpO1xuICB9XG5cbiAgb25BdXRvQ29tcGxldGVCbHVyKCkge1xuICAgIHRoaXMuY2xlYXJJbm5lcklucHV0KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFySW5uZXJJbnB1dCgpIHtcbiAgICB0aGlzLmF1dG9Db21wbGV0ZUlucHV0LmNsZWFySW5wdXQoKTtcbiAgfVxufVxuIiwiPHl2Yy1hdXRvY29tcGxldGVcbiAgWyhuZ01vZGVsKV09XCJpbm5lclZhbHVlXCJcbiAgI2F1dG9jb21wbGV0ZVxuICAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvblNlbGVjdCgpXCJcbiAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgKHN1Z2dlc3Rpb25VbnNlbGVjdCk9XCJvblVuc2VsZWN0KCRldmVudClcIlxuICAoYmx1cik9XCJvbkF1dG9Db21wbGV0ZUJsdXIoKVwiXG4gIFtkaXNhYmxlZF09XCJyZWFkb25seVwiXG4gIFthdXRvY29tcGxldGVWYWx1ZXNdPVwiYXV0b2NvbXBsZXRlUmVzXCJcbiAgZmllbGQ9XCJpZFwiXG4gIFtmb3JjZVNlbGVjdGlvbl09XCJ0cnVlXCJcbiAgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCJcbiAgW211bHRpcGxlXT1cInRydWVcIlxuPlxuICA8IS0tIHRlbXBsYXRlIGZvciBpdGVtIGluc2lkZSB0aGUgZHJvcGRvd24gLS0+XG4gIDxuZy10ZW1wbGF0ZSAjYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgXG4gIDwhLS0gdGVtcGxhdGUgZm9yIGNoaXAgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjY2hpcFRlbXBsYXRlIGxldC1pdGVtPlxuICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPnt7IGl0ZW0udGl0bGUgfX08L3NwYW4+XG4gIDwvbmctdGVtcGxhdGU+XG48L3l2Yy1hdXRvY29tcGxldGU+XG5cbjx5dmMtaWNvblxuICBjbGFzcz1cImNsYXNzaWZ5XCJcbiAgW3RpdGxlXT1cIid5dXYuZm9ybS5lbGVtZW50Lm9yZ2FuaXphdGlvbi5jbGFzc2lmeS5pY29uLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gIFtzdmddPVwibXVsdGlzZWxlY3QgPyBpY29ucy5vcmdhbml6YXRpb25NdWx0aSA6IGljb25zLm9yZ2FuaXphdGlvblwiXG4gIChjbGljayk9XCJmb2N1c0lucHV0KClcIlxuPjwveXZjLWljb24+XG4iXX0=
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, ElementRef, forwardRef, HostBinding, inject, Input } from '@angular/core';
|
|
3
|
+
import { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { Classification, ClassificationPrefix, Situation, Utils } from '@yuuvis/client-core';
|
|
5
|
+
import { IconService } from '@yuuvis/client-framework/icons';
|
|
6
|
+
import { YvcChipsModule } from '@yuuvis/components/chips';
|
|
7
|
+
import { YvcIconModule } from '@yuuvis/components/icon';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common";
|
|
10
|
+
import * as i2 from "@yuuvis/components/chips";
|
|
11
|
+
import * as i3 from "@yuuvis/components/icon";
|
|
12
|
+
import * as i4 from "@angular/forms";
|
|
13
|
+
/**
|
|
14
|
+
* Creates form input for strings. Based on the input values different kinds of inputs will be generated.
|
|
15
|
+
*
|
|
16
|
+
* Implements `ControlValueAccessor` so it can be used within Angular forms.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* <!-- string input validating input to be between 5 and 10 characters -->
|
|
20
|
+
* <yuv-string [minLength]="5" [maxLength]="10"></yuv-string>
|
|
21
|
+
*
|
|
22
|
+
* <!-- string input that only allow digits -->
|
|
23
|
+
* <yuv-string [regex]="[0-9]*"></yuv-string>
|
|
24
|
+
*
|
|
25
|
+
* <!-- string input rendering a large textarea -->
|
|
26
|
+
* <yuv-string [rows]="10"></yuv-string>
|
|
27
|
+
*
|
|
28
|
+
*/
|
|
29
|
+
export class StringComponent {
|
|
30
|
+
constructor() {
|
|
31
|
+
this.iconsService = inject(IconService);
|
|
32
|
+
this.elementRef = inject(ElementRef);
|
|
33
|
+
this.classifiytionIcons = {
|
|
34
|
+
email: this.iconsService.getIcon(ClassificationPrefix.EMAIL_ICON) || '',
|
|
35
|
+
url: this.iconsService.getIcon(ClassificationPrefix.URL_ICON) || '',
|
|
36
|
+
phone: this.iconsService.getIcon(ClassificationPrefix.PHONE_ICON) || ''
|
|
37
|
+
};
|
|
38
|
+
// provides all css variables defined by |yuuvis/comonents
|
|
39
|
+
this.fe = true;
|
|
40
|
+
/**
|
|
41
|
+
* Indicator that multiple strings could be inserted, they will be rendered as chips (default: false).
|
|
42
|
+
*/
|
|
43
|
+
this.multiselect = false;
|
|
44
|
+
/**
|
|
45
|
+
* Will prevent the input from being changed (default: false)
|
|
46
|
+
*/
|
|
47
|
+
this.readonly = false;
|
|
48
|
+
/**
|
|
49
|
+
* Enable autofucus for the input (default: false)
|
|
50
|
+
*/
|
|
51
|
+
this.autofocus = false;
|
|
52
|
+
this.valid = false;
|
|
53
|
+
this.validationErrors = [];
|
|
54
|
+
this._classifications = [];
|
|
55
|
+
this.propagateChange = (_) => { };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Additional semantics for the form element. Possible values are
|
|
59
|
+
* `email` (validates and creates a link to send an email once there
|
|
60
|
+
* is a valid email address) and `url` (validates and creates a link
|
|
61
|
+
* to an URL typed into the form element).
|
|
62
|
+
*/
|
|
63
|
+
set classifications(c) {
|
|
64
|
+
this._classifications = c;
|
|
65
|
+
if (c && c.length) {
|
|
66
|
+
if (c.includes(Classification.STRING_EMAIL)) {
|
|
67
|
+
this.classify = {
|
|
68
|
+
hrefPrefix: ClassificationPrefix.EMAIL,
|
|
69
|
+
icon: this.classifiytionIcons.email
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
else if (c.includes(Classification.STRING_URL)) {
|
|
73
|
+
this.classify = {
|
|
74
|
+
hrefPrefix: ClassificationPrefix.URL,
|
|
75
|
+
icon: this.classifiytionIcons.url
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
else if (c.includes(Classification.STRING_PHONE)) {
|
|
79
|
+
this.classify = {
|
|
80
|
+
hrefPrefix: ClassificationPrefix.PHONE,
|
|
81
|
+
icon: this.classifiytionIcons.phone
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
get classifications() {
|
|
87
|
+
return this._classifications;
|
|
88
|
+
}
|
|
89
|
+
propagate() {
|
|
90
|
+
this.propagateChange(this.value);
|
|
91
|
+
}
|
|
92
|
+
writeValue(value) {
|
|
93
|
+
this.formatedValue = Utils.formatMailTo(value, this.classify?.hrefPrefix === ClassificationPrefix.EMAIL);
|
|
94
|
+
this.value = value || null;
|
|
95
|
+
}
|
|
96
|
+
registerOnChange(fn) {
|
|
97
|
+
this.propagateChange = fn;
|
|
98
|
+
}
|
|
99
|
+
registerOnTouched() { }
|
|
100
|
+
onValueChange(val) {
|
|
101
|
+
this.maxEntryCountIfInvalid = undefined;
|
|
102
|
+
this.validationErrors = [];
|
|
103
|
+
if (Utils.isEmpty(val)) {
|
|
104
|
+
this.value = null;
|
|
105
|
+
this.propagate();
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const multiCheck = (check) => !!(this.multiselect ? val : [val]).find((v) => check(v));
|
|
109
|
+
// validate regular expression
|
|
110
|
+
if (this.regex && multiCheck((v) => !RegExp(this.regex).test(v))) {
|
|
111
|
+
this.validationErrors.push({ key: 'regex' });
|
|
112
|
+
}
|
|
113
|
+
// validate classification settings
|
|
114
|
+
if (this.classifications && this.classifications.length) {
|
|
115
|
+
this.classifications.forEach((c) => {
|
|
116
|
+
if (multiCheck((v) => !this.validateClassification(v, c))) {
|
|
117
|
+
this.validationErrors.push({ key: 'classification' + c });
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// validate min length
|
|
122
|
+
if (!Utils.isEmpty(this.minLength) && multiCheck((v) => v.length < this.minLength)) {
|
|
123
|
+
this.validationErrors.push({ key: 'minlength', params: { minLength: this.minLength } });
|
|
124
|
+
}
|
|
125
|
+
// validate max length
|
|
126
|
+
if (!Utils.isEmpty(this.maxLength) && multiCheck((v) => v.length > this.maxLength)) {
|
|
127
|
+
this.validationErrors.push({ key: 'maxlength', params: { maxLength: this.maxLength } });
|
|
128
|
+
}
|
|
129
|
+
// validate invalid if only whitespaces
|
|
130
|
+
if (multiCheck((v) => v.length > 0 && !v.trim().length)) {
|
|
131
|
+
this.validationErrors.push({ key: 'onlyWhitespaces' });
|
|
132
|
+
}
|
|
133
|
+
if (this.validationErrors.length && this.multiselect && this.value) {
|
|
134
|
+
// Setting maxEntryCountIfInvalid to the actual length of the value array to prevent the user to add more entries.
|
|
135
|
+
this.maxEntryCountIfInvalid = this.value.length;
|
|
136
|
+
}
|
|
137
|
+
this.formatedValue = Utils.formatMailTo(val, this.classify?.hrefPrefix === ClassificationPrefix.EMAIL);
|
|
138
|
+
this.propagate();
|
|
139
|
+
}
|
|
140
|
+
onBlur() {
|
|
141
|
+
if (this.trimValue()) {
|
|
142
|
+
this.propagate();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Trims the current value and returns wether or not it has been trimmed
|
|
147
|
+
*/
|
|
148
|
+
trimValue() {
|
|
149
|
+
if (this.value) {
|
|
150
|
+
if (this.multiselect) {
|
|
151
|
+
const lengthBefore = this.value.join('').length;
|
|
152
|
+
this.value = this.value.map((v) => v.trim());
|
|
153
|
+
return this.value.join('').length !== lengthBefore;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
const lengthBefore = this.value.length;
|
|
157
|
+
this.value = this.value.trim();
|
|
158
|
+
return this.value.length !== lengthBefore;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
validateClassification(string, classification) {
|
|
164
|
+
if (this.situation === Situation.SEARCH) {
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
let pattern;
|
|
169
|
+
if (classification === Classification.STRING_EMAIL) {
|
|
170
|
+
pattern =
|
|
171
|
+
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
172
|
+
}
|
|
173
|
+
else if (classification === Classification.STRING_URL) {
|
|
174
|
+
pattern = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)?([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/;
|
|
175
|
+
}
|
|
176
|
+
else if (classification === Classification.STRING_PHONE) {
|
|
177
|
+
pattern = /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-x\s\./0-9]*$/g;
|
|
178
|
+
}
|
|
179
|
+
return pattern ? pattern.test(string) : true;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* returns null when valid else the validation object
|
|
184
|
+
*/
|
|
185
|
+
validate() {
|
|
186
|
+
if (this.validationErrors.length) {
|
|
187
|
+
this.valid = false;
|
|
188
|
+
return Utils.arrayToObject(this.validationErrors, 'key', (err) => ({ valid: false, ...err }));
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
this.valid = true;
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
ngAfterViewInit() {
|
|
196
|
+
if (this.autofocus) {
|
|
197
|
+
if (!this.multiselect) {
|
|
198
|
+
const el = this.elementRef.nativeElement.querySelector(this.rows && this.rows > 1 ? 'textarea' : 'input');
|
|
199
|
+
if (el)
|
|
200
|
+
el.focus();
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StringComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
205
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: StringComponent, isStandalone: true, selector: "yuv-string", inputs: { multiselect: "multiselect", rows: "rows", readonly: "readonly", autofocus: "autofocus", classifications: "classifications", situation: "situation", regex: "regex", minLength: "minLength", maxLength: "maxLength" }, host: { properties: { "class.yvc-form-element": "this.fe" } }, providers: [
|
|
206
|
+
{
|
|
207
|
+
provide: NG_VALUE_ACCESSOR,
|
|
208
|
+
useExisting: forwardRef(() => StringComponent),
|
|
209
|
+
multi: true
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
provide: NG_VALIDATORS,
|
|
213
|
+
useExisting: forwardRef(() => StringComponent),
|
|
214
|
+
multi: true
|
|
215
|
+
}
|
|
216
|
+
], ngImport: i0, template: "@if ((!rows || rows <= 1) && !multiselect) {\n <input type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n}\n@else if ((!rows || rows <= 1) && multiselect) {\n <!-- single line input with multiselect-->\n <yvc-chips\n [(ngModel)]=\"value\"\n [disabled]=\"readonly\"\n [max]=\"maxEntryCountIfInvalid\"\n (onBlur)=\"onBlur()\"\n (ngModelChange)=\"onValueChange($event)\"\n [ngClass]=\"{ invalid: validationErrors.length }\"\n >\n <ng-template let-item #chipTemplate>\n <span class=\"p-autocomplete-token-label\">\n @if (classify && !validationErrors.length) {\n <div class=\"classify inchip\">\n <a href=\"{{ classify.hrefPrefix + item }}\">\n <yvc-icon [svg]=\"classify.icon!\"></yvc-icon>\n </a>\n </div>\n }\n <div class=\"label\">\n {{ item }}\n </div>\n </span>\n </ng-template>\n </yvc-chips>\n} @else if (rows && rows > 1) {\n <!-- multi line text inputs -->\n <textarea\n class=\"input-textarea\"\n pInputTextarea\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n [rows]=\"rows\"\n [readonly]=\"readonly\"\n (ngModelChange)=\"onValueChange($event)\"\n ></textarea>\n}\n\n@if (classify) {\n <div class=\"classify\">\n @if (value && !validationErrors.length && (classify.hrefPrefix !== '' || !multiselect || value.length <= 1)) {\n <a href=\"{{ classify.hrefPrefix + formatedValue }}\">\n <yvc-icon [svg]=\"classify.icon!\"></yvc-icon>\n </a>\n } @else {\n <yvc-icon [svg]=\"classify.icon!\"></yvc-icon>\n }\n </div>\n}\n", styles: [":host{font-family:Roboto;display:flex;flex-flow:row nowrap;align-items:center}:host .p-autocomplete-token-label{display:flex;align-items:center;-webkit-user-select:text;user-select:text}:host .p-autocomplete-token-label .label{padding:0 calc(var(--app-pane-padding) / 4);word-break:break-word}:host .classify{color:var(--text-color-hint)}:host .classify a{color:var(--text-color-hint);display:block;border-radius:2px}:host .classify a:hover,:host .classify a:focus{background-color:var(--color-accent);color:#fff}:host .classify yvc-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 8)}:host textarea.input-textarea{width:100%;resize:vertical;background-color:transparent;color:var(--text-color-body);border:1px solid var(--yvc-form-element-border-color)}:host yvc-chips{width:100%}:host input{color:var(--text-color-body);padding:0;border:1px solid var(--yvc-form-element-border-color);display:flex;flex-wrap:wrap;align-items:center;width:100%;background:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: YvcChipsModule }, { kind: "component", type: i2.Chips, selector: "yvc-chips", inputs: ["field", "placeholder", "max", "disabled"] }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i3.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
217
|
+
}
|
|
218
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StringComponent, decorators: [{
|
|
219
|
+
type: Component,
|
|
220
|
+
args: [{ selector: 'yuv-string', standalone: true, imports: [CommonModule, YvcChipsModule, YvcIconModule, FormsModule], providers: [
|
|
221
|
+
{
|
|
222
|
+
provide: NG_VALUE_ACCESSOR,
|
|
223
|
+
useExisting: forwardRef(() => StringComponent),
|
|
224
|
+
multi: true
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
provide: NG_VALIDATORS,
|
|
228
|
+
useExisting: forwardRef(() => StringComponent),
|
|
229
|
+
multi: true
|
|
230
|
+
}
|
|
231
|
+
], template: "@if ((!rows || rows <= 1) && !multiselect) {\n <input type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n}\n@else if ((!rows || rows <= 1) && multiselect) {\n <!-- single line input with multiselect-->\n <yvc-chips\n [(ngModel)]=\"value\"\n [disabled]=\"readonly\"\n [max]=\"maxEntryCountIfInvalid\"\n (onBlur)=\"onBlur()\"\n (ngModelChange)=\"onValueChange($event)\"\n [ngClass]=\"{ invalid: validationErrors.length }\"\n >\n <ng-template let-item #chipTemplate>\n <span class=\"p-autocomplete-token-label\">\n @if (classify && !validationErrors.length) {\n <div class=\"classify inchip\">\n <a href=\"{{ classify.hrefPrefix + item }}\">\n <yvc-icon [svg]=\"classify.icon!\"></yvc-icon>\n </a>\n </div>\n }\n <div class=\"label\">\n {{ item }}\n </div>\n </span>\n </ng-template>\n </yvc-chips>\n} @else if (rows && rows > 1) {\n <!-- multi line text inputs -->\n <textarea\n class=\"input-textarea\"\n pInputTextarea\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n [rows]=\"rows\"\n [readonly]=\"readonly\"\n (ngModelChange)=\"onValueChange($event)\"\n ></textarea>\n}\n\n@if (classify) {\n <div class=\"classify\">\n @if (value && !validationErrors.length && (classify.hrefPrefix !== '' || !multiselect || value.length <= 1)) {\n <a href=\"{{ classify.hrefPrefix + formatedValue }}\">\n <yvc-icon [svg]=\"classify.icon!\"></yvc-icon>\n </a>\n } @else {\n <yvc-icon [svg]=\"classify.icon!\"></yvc-icon>\n }\n </div>\n}\n", styles: [":host{font-family:Roboto;display:flex;flex-flow:row nowrap;align-items:center}:host .p-autocomplete-token-label{display:flex;align-items:center;-webkit-user-select:text;user-select:text}:host .p-autocomplete-token-label .label{padding:0 calc(var(--app-pane-padding) / 4);word-break:break-word}:host .classify{color:var(--text-color-hint)}:host .classify a{color:var(--text-color-hint);display:block;border-radius:2px}:host .classify a:hover,:host .classify a:focus{background-color:var(--color-accent);color:#fff}:host .classify yvc-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 8)}:host textarea.input-textarea{width:100%;resize:vertical;background-color:transparent;color:var(--text-color-body);border:1px solid var(--yvc-form-element-border-color)}:host yvc-chips{width:100%}:host input{color:var(--text-color-body);padding:0;border:1px solid var(--yvc-form-element-border-color);display:flex;flex-wrap:wrap;align-items:center;width:100%;background:transparent}\n"] }]
|
|
232
|
+
}], propDecorators: { fe: [{
|
|
233
|
+
type: HostBinding,
|
|
234
|
+
args: ['class.yvc-form-element']
|
|
235
|
+
}], multiselect: [{
|
|
236
|
+
type: Input
|
|
237
|
+
}], rows: [{
|
|
238
|
+
type: Input
|
|
239
|
+
}], readonly: [{
|
|
240
|
+
type: Input
|
|
241
|
+
}], autofocus: [{
|
|
242
|
+
type: Input
|
|
243
|
+
}], classifications: [{
|
|
244
|
+
type: Input
|
|
245
|
+
}], situation: [{
|
|
246
|
+
type: Input
|
|
247
|
+
}], regex: [{
|
|
248
|
+
type: Input
|
|
249
|
+
}], minLength: [{
|
|
250
|
+
type: Input
|
|
251
|
+
}], maxLength: [{
|
|
252
|
+
type: Input
|
|
253
|
+
}] } });
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9zdHJpbmcvc3RyaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9zdHJpbmcvc3RyaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBbUQsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0SixPQUFPLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFtQixTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7OztBQUV4RDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFvQkgsTUFBTSxPQUFPLGVBQWU7SUFuQjVCO1FBb0JVLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEMsdUJBQWtCLEdBQUc7WUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDdkUsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDbkUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7U0FDeEUsQ0FBQztRQUdGLDBEQUEwRDtRQUNuQixPQUFFLEdBQUcsSUFBSSxDQUFDO1FBRWpEOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFNN0I7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzFCOztXQUVHO1FBQ00sY0FBUyxHQUFHLEtBQUssQ0FBQztRQXNEM0IsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLHFCQUFnQixHQUE2QixFQUFFLENBQUM7UUFFeEMscUJBQWdCLEdBQWEsRUFBRSxDQUFDO1FBRXhDLG9CQUFlLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztLQWlJbEM7SUEzTEM7Ozs7O09BS0c7SUFDSCxJQUNJLGVBQWUsQ0FBQyxDQUFXO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRztvQkFDZCxVQUFVLEVBQUUsb0JBQW9CLENBQUMsS0FBSztvQkFDdEMsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLO2lCQUNwQyxDQUFDO1lBQ0osQ0FBQztpQkFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUc7b0JBQ2QsVUFBVSxFQUFFLG9CQUFvQixDQUFDLEdBQUc7b0JBQ3BDLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRztpQkFDbEMsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHO29CQUNkLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxLQUFLO29CQUN0QyxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUs7aUJBQ3BDLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQTZCTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLEtBQUssb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxpQkFBaUIsS0FBVSxDQUFDO0lBRTVCLGFBQWEsQ0FBQyxHQUFRO1FBQ3BCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxTQUFTLENBQUM7UUFDeEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUUzQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFakIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQTZCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkgsOEJBQThCO1FBQzlCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsbUNBQW1DO1FBQ25DLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUMxRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzVELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBVSxDQUFDLEVBQUUsQ0FBQztZQUNwRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBRUQsc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVUsQ0FBQyxFQUFFLENBQUM7WUFDcEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25FLGtIQUFrSDtZQUNsSCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDbEQsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLEtBQUssb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLFNBQVM7UUFDZixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUM7WUFDckQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDO1lBQzVDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sc0JBQXNCLENBQUMsTUFBYyxFQUFFLGNBQXNCO1FBQ25FLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksT0FBTyxDQUFDO1lBQ1osSUFBSSxjQUFjLEtBQUssY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNuRCxPQUFPO29CQUNMLHdKQUF3SixDQUFDO1lBQzdKLENBQUM7aUJBQU0sSUFBSSxjQUFjLEtBQUssY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN4RCxPQUFPLEdBQUcsdUZBQXVGLENBQUM7WUFDcEcsQ0FBQztpQkFBTSxJQUFJLGNBQWMsS0FBSyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFELE9BQU8sR0FBRyxnREFBZ0QsQ0FBQztZQUM3RCxDQUFDO1lBQ0QsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFHLElBQUksRUFBRTtvQkFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOytHQXpOVSxlQUFlO21HQUFmLGVBQWUsd1ZBYmY7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDOUMsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDOUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDBCQ3pDSCxxcERBb0RBLG9oQ0R6QlksWUFBWSw0SEFBRSxjQUFjLGlKQUFFLGFBQWEsOEhBQUUsV0FBVzs7NEZBZ0J2RCxlQUFlO2tCQW5CM0IsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLGFBR3hEO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQWNzQyxFQUFFO3NCQUF4QyxXQUFXO3VCQUFDLHdCQUF3QjtnQkFLNUIsV0FBVztzQkFBbkIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQVFGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBNkJHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENsYXNzaWZpY2F0aW9uLCBDbGFzc2lmaWNhdGlvblByZWZpeCwgRm9ybWF0dGVkTWFpbFRvLCBTaXR1YXRpb24sIFV0aWxzIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay9pY29ucyc7XG5pbXBvcnQgeyBZdmNDaGlwc01vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9jaGlwcyc7XG5pbXBvcnQgeyBZdmNJY29uTW9kdWxlIH0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2ljb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgZm9ybSBpbnB1dCBmb3Igc3RyaW5ncy4gQmFzZWQgb24gdGhlIGlucHV0IHZhbHVlcyBkaWZmZXJlbnQga2luZHMgb2YgaW5wdXRzIHdpbGwgYmUgZ2VuZXJhdGVkLlxuICpcbiAqIEltcGxlbWVudHMgYENvbnRyb2xWYWx1ZUFjY2Vzc29yYCBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoaW4gQW5ndWxhciBmb3Jtcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPCEtLSBzdHJpbmcgaW5wdXQgdmFsaWRhdGluZyBpbnB1dCB0byBiZSBiZXR3ZWVuIDUgYW5kIDEwIGNoYXJhY3RlcnMgLS0+XG4gKiA8eXV2LXN0cmluZyBbbWluTGVuZ3RoXT1cIjVcIiBbbWF4TGVuZ3RoXT1cIjEwXCI+PC95dXYtc3RyaW5nPlxuICpcbiAqIDwhLS0gc3RyaW5nIGlucHV0IHRoYXQgb25seSBhbGxvdyBkaWdpdHMgLS0+XG4gKiA8eXV2LXN0cmluZyAgW3JlZ2V4XT1cIlswLTldKlwiPjwveXV2LXN0cmluZz5cbiAqXG4gKiA8IS0tIHN0cmluZyBpbnB1dCByZW5kZXJpbmcgYSBsYXJnZSB0ZXh0YXJlYSAtLT5cbiAqIDx5dXYtc3RyaW5nIFtyb3dzXT1cIjEwXCI+PC95dXYtc3RyaW5nPlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LXN0cmluZycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFl2Y0NoaXBzTW9kdWxlLCBZdmNJY29uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zdHJpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHJpbmcuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTdHJpbmdDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTdHJpbmdDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU3RyaW5nQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgaWNvbnNTZXJ2aWNlID0gaW5qZWN0KEljb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIGNsYXNzaWZpeXRpb25JY29ucyA9IHtcbiAgICBlbWFpbDogdGhpcy5pY29uc1NlcnZpY2UuZ2V0SWNvbihDbGFzc2lmaWNhdGlvblByZWZpeC5FTUFJTF9JQ09OKSB8fCAnJyxcbiAgICB1cmw6IHRoaXMuaWNvbnNTZXJ2aWNlLmdldEljb24oQ2xhc3NpZmljYXRpb25QcmVmaXguVVJMX0lDT04pIHx8ICcnLFxuICAgIHBob25lOiB0aGlzLmljb25zU2VydmljZS5nZXRJY29uKENsYXNzaWZpY2F0aW9uUHJlZml4LlBIT05FX0lDT04pIHx8ICcnXG4gIH07XG4gIG1heEVudHJ5Q291bnRJZkludmFsaWQ/OiBudW1iZXI7XG5cbiAgLy8gcHJvdmlkZXMgYWxsIGNzcyB2YXJpYWJsZXMgZGVmaW5lZCBieSB8eXV1dmlzL2NvbW9uZW50c1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnl2Yy1mb3JtLWVsZW1lbnQnKSBmZSA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRvciB0aGF0IG11bHRpcGxlIHN0cmluZ3MgY291bGQgYmUgaW5zZXJ0ZWQsIHRoZXkgd2lsbCBiZSByZW5kZXJlZCBhcyBjaGlwcyAoZGVmYXVsdDogZmFsc2UpLlxuICAgKi9cbiAgQElucHV0KCkgbXVsdGlzZWxlY3QgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFNldHRpbmcgcm93cyB0byBtb3JlIHRoYW4gMSB3aWxsIGdlbmVyYXRlIGEgdGV4dGFyZWEgaW5zdGVhZCBvZiBhbiBpbnB1dCB0YWdcbiAgICogYW5kIGFwcGx5IHRoZSByb3dzIHByb3BlcnR5IHRvIGl0XG4gICAqL1xuICBASW5wdXQoKSByb3dzPzogbnVtYmVyO1xuICAvKipcbiAgICogV2lsbCBwcmV2ZW50IHRoZSBpbnB1dCBmcm9tIGJlaW5nIGNoYW5nZWQgKGRlZmF1bHQ6IGZhbHNlKVxuICAgKi9cbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEVuYWJsZSBhdXRvZnVjdXMgZm9yIHRoZSBpbnB1dCAoZGVmYXVsdDogZmFsc2UpXG4gICAqL1xuICBASW5wdXQoKSBhdXRvZm9jdXMgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgc2VtYW50aWNzIGZvciB0aGUgZm9ybSBlbGVtZW50LiBQb3NzaWJsZSB2YWx1ZXMgYXJlXG4gICAqIGBlbWFpbGAgKHZhbGlkYXRlcyBhbmQgY3JlYXRlcyBhIGxpbmsgdG8gc2VuZCBhbiBlbWFpbCBvbmNlIHRoZXJlXG4gICAqIGlzIGEgdmFsaWQgZW1haWwgYWRkcmVzcykgYW5kIGB1cmxgICh2YWxpZGF0ZXMgYW5kIGNyZWF0ZXMgYSBsaW5rXG4gICAqIHRvIGFuIFVSTCB0eXBlZCBpbnRvIHRoZSBmb3JtIGVsZW1lbnQpLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGNsYXNzaWZpY2F0aW9ucyhjOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2NsYXNzaWZpY2F0aW9ucyA9IGM7XG4gICAgaWYgKGMgJiYgYy5sZW5ndGgpIHtcbiAgICAgIGlmIChjLmluY2x1ZGVzKENsYXNzaWZpY2F0aW9uLlNUUklOR19FTUFJTCkpIHtcbiAgICAgICAgdGhpcy5jbGFzc2lmeSA9IHtcbiAgICAgICAgICBocmVmUHJlZml4OiBDbGFzc2lmaWNhdGlvblByZWZpeC5FTUFJTCxcbiAgICAgICAgICBpY29uOiB0aGlzLmNsYXNzaWZpeXRpb25JY29ucy5lbWFpbFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChjLmluY2x1ZGVzKENsYXNzaWZpY2F0aW9uLlNUUklOR19VUkwpKSB7XG4gICAgICAgIHRoaXMuY2xhc3NpZnkgPSB7XG4gICAgICAgICAgaHJlZlByZWZpeDogQ2xhc3NpZmljYXRpb25QcmVmaXguVVJMLFxuICAgICAgICAgIGljb246IHRoaXMuY2xhc3NpZml5dGlvbkljb25zLnVybFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChjLmluY2x1ZGVzKENsYXNzaWZpY2F0aW9uLlNUUklOR19QSE9ORSkpIHtcbiAgICAgICAgdGhpcy5jbGFzc2lmeSA9IHtcbiAgICAgICAgICBocmVmUHJlZml4OiBDbGFzc2lmaWNhdGlvblByZWZpeC5QSE9ORSxcbiAgICAgICAgICBpY29uOiB0aGlzLmNsYXNzaWZpeXRpb25JY29ucy5waG9uZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBjbGFzc2lmaWNhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsYXNzaWZpY2F0aW9ucztcbiAgfVxuICAvKipcbiAgICogUG9zc2libGVzIHZhbHVlcyBhcmUgYEVESVRgIChkZWZhdWx0KSxgU0VBUkNIYCxgQ1JFQVRFYC4gSW4gc2VhcmNoIHNpdHVhdGlvbiB2YWxpZGF0aW9uIG9mIHRoZSBmb3JtIGVsZW1lbnQgd2lsbCBiZSB0dXJuZWQgb2ZmLCBzbyB5b3UgYXJlIGFibGUgdG8gZW50ZXIgc2VhcmNoIHRlcm1zIHRoYXQgZG8gbm90IG1lZXQgdGhlIGVsZW1lbnRzIHZhbGlkYXRvcnMuXG4gICAqL1xuICBASW5wdXQoKSBzaXR1YXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB0byB2YWxpZGF0ZSB0aGUgaW5wdXQgdmFsdWUgYWdhaW5zdFxuICAgKi9cbiAgQElucHV0KCkgcmVnZXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNaW5pbWFsIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAqL1xuICBASW5wdXQoKSBtaW5MZW5ndGg/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAqL1xuICBASW5wdXQoKSBtYXhMZW5ndGg/OiBudW1iZXI7XG5cbiAgLy8gbW9kZWwgdmFsdWVcbiAgdmFsdWU6IGFueTtcbiAgZm9ybWF0ZWRWYWx1ZT86IEZvcm1hdHRlZE1haWxUbztcbiAgdmFsaWQgPSBmYWxzZTtcbiAgdmFsaWRhdGlvbkVycm9yczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdID0gW107XG4gIGNsYXNzaWZ5PzogeyBocmVmUHJlZml4OiBzdHJpbmc7IGljb246IHN0cmluZyB8IHVuZGVmaW5lZCB9O1xuICBwcml2YXRlIF9jbGFzc2lmaWNhdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG5cbiAgcHJpdmF0ZSBwcm9wYWdhdGUoKSB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1hdGVkVmFsdWUgPSBVdGlscy5mb3JtYXRNYWlsVG8odmFsdWUsIHRoaXMuY2xhc3NpZnk/LmhyZWZQcmVmaXggPT09IENsYXNzaWZpY2F0aW9uUHJlZml4LkVNQUlMKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgbnVsbDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZCgpOiB2b2lkIHt9XG5cbiAgb25WYWx1ZUNoYW5nZSh2YWw6IGFueSkge1xuICAgIHRoaXMubWF4RW50cnlDb3VudElmSW52YWxpZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMgPSBbXTtcblxuICAgIGlmIChVdGlscy5pc0VtcHR5KHZhbCkpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5wcm9wYWdhdGUoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG11bHRpQ2hlY2sgPSAoY2hlY2s6IChzOiBzdHJpbmcpID0+IGJvb2xlYW4pID0+ICEhKHRoaXMubXVsdGlzZWxlY3QgPyB2YWwgOiBbdmFsXSkuZmluZCgodjogc3RyaW5nKSA9PiBjaGVjayh2KSk7XG5cbiAgICAvLyB2YWxpZGF0ZSByZWd1bGFyIGV4cHJlc3Npb25cbiAgICBpZiAodGhpcy5yZWdleCAmJiBtdWx0aUNoZWNrKCh2OiBzdHJpbmcpID0+ICFSZWdFeHAodGhpcy5yZWdleCEpLnRlc3QodikpKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaCh7IGtleTogJ3JlZ2V4JyB9KTtcbiAgICB9XG5cbiAgICAvLyB2YWxpZGF0ZSBjbGFzc2lmaWNhdGlvbiBzZXR0aW5nc1xuICAgIGlmICh0aGlzLmNsYXNzaWZpY2F0aW9ucyAmJiB0aGlzLmNsYXNzaWZpY2F0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY2xhc3NpZmljYXRpb25zLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgaWYgKG11bHRpQ2hlY2soKHYpID0+ICF0aGlzLnZhbGlkYXRlQ2xhc3NpZmljYXRpb24odiwgYykpKSB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goeyBrZXk6ICdjbGFzc2lmaWNhdGlvbicgKyBjIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gdmFsaWRhdGUgbWluIGxlbmd0aFxuICAgIGlmICghVXRpbHMuaXNFbXB0eSh0aGlzLm1pbkxlbmd0aCkgJiYgbXVsdGlDaGVjaygodikgPT4gdi5sZW5ndGggPCB0aGlzLm1pbkxlbmd0aCEpKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaCh7IGtleTogJ21pbmxlbmd0aCcsIHBhcmFtczogeyBtaW5MZW5ndGg6IHRoaXMubWluTGVuZ3RoIH0gfSk7XG4gICAgfVxuXG4gICAgLy8gdmFsaWRhdGUgbWF4IGxlbmd0aFxuICAgIGlmICghVXRpbHMuaXNFbXB0eSh0aGlzLm1heExlbmd0aCkgJiYgbXVsdGlDaGVjaygodikgPT4gdi5sZW5ndGggPiB0aGlzLm1heExlbmd0aCEpKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaCh7IGtleTogJ21heGxlbmd0aCcsIHBhcmFtczogeyBtYXhMZW5ndGg6IHRoaXMubWF4TGVuZ3RoIH0gfSk7XG4gICAgfVxuXG4gICAgLy8gdmFsaWRhdGUgaW52YWxpZCBpZiBvbmx5IHdoaXRlc3BhY2VzXG4gICAgaWYgKG11bHRpQ2hlY2soKHYpID0+IHYubGVuZ3RoID4gMCAmJiAhdi50cmltKCkubGVuZ3RoKSkge1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goeyBrZXk6ICdvbmx5V2hpdGVzcGFjZXMnIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZhbGlkYXRpb25FcnJvcnMubGVuZ3RoICYmIHRoaXMubXVsdGlzZWxlY3QgJiYgdGhpcy52YWx1ZSkge1xuICAgICAgLy8gU2V0dGluZyBtYXhFbnRyeUNvdW50SWZJbnZhbGlkIHRvIHRoZSBhY3R1YWwgbGVuZ3RoIG9mIHRoZSB2YWx1ZSBhcnJheSB0byBwcmV2ZW50IHRoZSB1c2VyIHRvIGFkZCBtb3JlIGVudHJpZXMuXG4gICAgICB0aGlzLm1heEVudHJ5Q291bnRJZkludmFsaWQgPSB0aGlzLnZhbHVlLmxlbmd0aDtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm1hdGVkVmFsdWUgPSBVdGlscy5mb3JtYXRNYWlsVG8odmFsLCB0aGlzLmNsYXNzaWZ5Py5ocmVmUHJlZml4ID09PSBDbGFzc2lmaWNhdGlvblByZWZpeC5FTUFJTCk7XG4gICAgdGhpcy5wcm9wYWdhdGUoKTtcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICBpZiAodGhpcy50cmltVmFsdWUoKSkge1xuICAgICAgdGhpcy5wcm9wYWdhdGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpbXMgdGhlIGN1cnJlbnQgdmFsdWUgYW5kIHJldHVybnMgd2V0aGVyIG9yIG5vdCBpdCBoYXMgYmVlbiB0cmltbWVkXG4gICAqL1xuICBwcml2YXRlIHRyaW1WYWx1ZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoQmVmb3JlID0gdGhpcy52YWx1ZS5qb2luKCcnKS5sZW5ndGg7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmpvaW4oJycpLmxlbmd0aCAhPT0gbGVuZ3RoQmVmb3JlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoQmVmb3JlID0gdGhpcy52YWx1ZS5sZW5ndGg7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnRyaW0oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubGVuZ3RoICE9PSBsZW5ndGhCZWZvcmU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVDbGFzc2lmaWNhdGlvbihzdHJpbmc6IHN0cmluZywgY2xhc3NpZmljYXRpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gU2l0dWF0aW9uLlNFQVJDSCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBwYXR0ZXJuO1xuICAgICAgaWYgKGNsYXNzaWZpY2F0aW9uID09PSBDbGFzc2lmaWNhdGlvbi5TVFJJTkdfRU1BSUwpIHtcbiAgICAgICAgcGF0dGVybiA9XG4gICAgICAgICAgL14oKFtePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XSl8KChbYS16QS1aXFwtMC05XStcXC4pK1thLXpBLVpdezIsfSkpJC87XG4gICAgICB9IGVsc2UgaWYgKGNsYXNzaWZpY2F0aW9uID09PSBDbGFzc2lmaWNhdGlvbi5TVFJJTkdfVVJMKSB7XG4gICAgICAgIHBhdHRlcm4gPSAvKGh0dHB8ZnRwfGh0dHBzKTpcXC9cXC9bXFx3LV0rKFxcLltcXHctXSspPyhbXFx3LixAP149JSZhbXA7OlxcL34rIy1dKltcXHdAP149JSZhbXA7XFwvfisjLV0pPy87XG4gICAgICB9IGVsc2UgaWYgKGNsYXNzaWZpY2F0aW9uID09PSBDbGFzc2lmaWNhdGlvbi5TVFJJTkdfUEhPTkUpIHtcbiAgICAgICAgcGF0dGVybiA9IC9eWytdKlsoXXswLDF9WzAtOV17MSw0fVspXXswLDF9Wy14XFxzXFwuLzAtOV0qJC9nO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhdHRlcm4gPyBwYXR0ZXJuLnRlc3Qoc3RyaW5nKSA6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybnMgbnVsbCB3aGVuIHZhbGlkIGVsc2UgdGhlIHZhbGlkYXRpb24gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgdmFsaWRhdGUoKSB7XG4gICAgaWYgKHRoaXMudmFsaWRhdGlvbkVycm9ycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudmFsaWQgPSBmYWxzZTtcbiAgICAgIHJldHVybiBVdGlscy5hcnJheVRvT2JqZWN0KHRoaXMudmFsaWRhdGlvbkVycm9ycywgJ2tleScsIChlcnIpID0+ICh7IHZhbGlkOiBmYWxzZSwgLi4uZXJyIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b2ZvY3VzKSB7XG4gICAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKHRoaXMucm93cyAmJiB0aGlzLnJvd3MgPiAxID8gJ3RleHRhcmVhJyA6ICdpbnB1dCcpO1xuICAgICAgICBpZiAoZWwpIGVsLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAaWYgKCghcm93cyB8fCByb3dzIDw9IDEpICYmICFtdWx0aXNlbGVjdCkge1xuICA8aW5wdXQgdHlwZT1cInRleHRcIiAoYmx1cik9XCJvbkJsdXIoKVwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFsobmdNb2RlbCldPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIiAvPlxufVxuQGVsc2UgaWYgKCghcm93cyB8fCByb3dzIDw9IDEpICYmIG11bHRpc2VsZWN0KSB7XG4gIDwhLS0gc2luZ2xlIGxpbmUgaW5wdXQgd2l0aCBtdWx0aXNlbGVjdC0tPlxuICA8eXZjLWNoaXBzXG4gICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgICBbbWF4XT1cIm1heEVudHJ5Q291bnRJZkludmFsaWRcIlxuICAgIChvbkJsdXIpPVwib25CbHVyKClcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW25nQ2xhc3NdPVwieyBpbnZhbGlkOiB2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCB9XCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSAjY2hpcFRlbXBsYXRlPlxuICAgICAgPHNwYW4gY2xhc3M9XCJwLWF1dG9jb21wbGV0ZS10b2tlbi1sYWJlbFwiPlxuICAgICAgICBAaWYgKGNsYXNzaWZ5ICYmICF2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGFzc2lmeSBpbmNoaXBcIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJ7eyBjbGFzc2lmeS5ocmVmUHJlZml4ICsgaXRlbSB9fVwiPlxuICAgICAgICAgICAgICA8eXZjLWljb24gW3N2Z109XCJjbGFzc2lmeS5pY29uIVwiPjwveXZjLWljb24+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+XG4gICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3l2Yy1jaGlwcz5cbn0gQGVsc2UgaWYgKHJvd3MgJiYgcm93cyA+IDEpIHtcbiAgPCEtLSBtdWx0aSBsaW5lIHRleHQgaW5wdXRzIC0tPlxuICA8dGV4dGFyZWFcbiAgICBjbGFzcz1cImlucHV0LXRleHRhcmVhXCJcbiAgICBwSW5wdXRUZXh0YXJlYVxuICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICBbcm93c109XCJyb3dzXCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gID48L3RleHRhcmVhPlxufVxuXG5AaWYgKGNsYXNzaWZ5KSB7XG4gIDxkaXYgY2xhc3M9XCJjbGFzc2lmeVwiPlxuICAgIEBpZiAodmFsdWUgJiYgIXZhbGlkYXRpb25FcnJvcnMubGVuZ3RoICYmIChjbGFzc2lmeS5ocmVmUHJlZml4ICE9PSAnJyB8fCAhbXVsdGlzZWxlY3QgfHwgdmFsdWUubGVuZ3RoIDw9IDEpKSB7XG4gICAgICA8YSBocmVmPVwie3sgY2xhc3NpZnkuaHJlZlByZWZpeCArIGZvcm1hdGVkVmFsdWUgfX1cIj5cbiAgICAgICAgPHl2Yy1pY29uIFtzdmddPVwiY2xhc3NpZnkuaWNvbiFcIj48L3l2Yy1pY29uPlxuICAgICAgPC9hPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPHl2Yy1pY29uIFtzdmddPVwiY2xhc3NpZnkuaWNvbiFcIj48L3l2Yy1pY29uPlxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=
|