@gravitee/ui-particles-angular 9.6.0 → 10.0.0-fix-pre-angular-17-024e987
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/esm2022/lib/gio-asciidoctor/gio-asciidoctor.component.mjs +104 -0
- package/{esm2020 → esm2022}/lib/gio-asciidoctor/gio-asciidoctor.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-asciidoctor/gio-asciidoctor.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-avatar/gio-avatar.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-avatar/gio-avatar.module.mjs +5 -5
- package/esm2022/lib/gio-banner/gio-banner.component.mjs +118 -0
- package/{esm2020 → esm2022}/lib/gio-banner/gio-banner.module.mjs +17 -17
- package/{esm2020 → esm2022}/lib/gio-breadcrumb/gio-breadcrumb-item.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-breadcrumb/gio-breadcrumb.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-breadcrumb/gio-breadcrumb.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-card-empty-state/gio-card-empty-state.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-card-empty-state/gio-card-empty-state.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-clipboard/gio-clipboard-copy-icon.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/gio-clipboard/gio-clipboard-copy-wrapper.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/gio-clipboard/gio-clipboard.base.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-clipboard/gio-clipboard.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.harness.mjs +2 -2
- package/{esm2020 → esm2022}/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-confirm-dialog/gio-confirm-dialog.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-confirm-dialog/gio-confirm-dialog.harness.mjs +2 -2
- package/{esm2020 → esm2022}/lib/gio-confirm-dialog/gio-confirm-dialog.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-form-cron/gio-form-cron-hint.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-form-cron/gio-form-cron-label.component.mjs +4 -4
- package/esm2022/lib/gio-form-cron/gio-form-cron.component.mjs +208 -0
- package/esm2022/lib/gio-form-cron/gio-form-cron.harness.mjs +77 -0
- package/{esm2020 → esm2022}/lib/gio-form-cron/gio-form-cron.module.mjs +21 -21
- package/esm2022/lib/gio-form-file-picker/gio-form-file-picker-add-button/gio-form-file-picker-add-button.component.mjs +29 -0
- package/{esm2020 → esm2022}/lib/gio-form-file-picker/gio-form-file-picker-empty/gio-form-file-picker-empty.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-form-file-picker/gio-form-file-picker-label/gio-form-file-picker-label.component.mjs +4 -4
- package/esm2022/lib/gio-form-file-picker/gio-form-file-picker.component.harness.mjs +95 -0
- package/{esm2020 → esm2022}/lib/gio-form-file-picker/gio-form-file-picker.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-form-file-picker/gio-form-file-picker.module.mjs +11 -11
- package/{esm2020 → esm2022}/lib/gio-form-focus-first-invalid/gio-form-focus-first-invalid-ignore.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-form-focus-first-invalid/gio-form-focus-first-invalid.directive.mjs +10 -10
- package/{esm2020 → esm2022}/lib/gio-form-focus-first-invalid/gio-form-focus-first-invalid.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-form-headers/gio-form-headers-label.component.mjs +4 -4
- package/esm2022/lib/gio-form-headers/gio-form-headers.component.mjs +273 -0
- package/esm2022/lib/gio-form-headers/gio-form-headers.harness.mjs +73 -0
- package/{esm2020 → esm2022}/lib/gio-form-headers/gio-form-headers.module.mjs +19 -19
- package/{esm2020 → esm2022}/lib/gio-form-json-schema/gio-form-json-schema.component.mjs +5 -5
- package/esm2022/lib/gio-form-json-schema/gio-form-json-schema.module.mjs +203 -0
- package/{esm2020 → esm2022}/lib/gio-form-json-schema/gio-formly-json-schema.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-form-json-schema/type-component/array-type.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/gio-form-json-schema/type-component/code-editor-type.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/gio-form-json-schema/type-component/headers-type.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/gio-form-json-schema/type-component/multischema-type.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/gio-form-json-schema/type-component/null-type.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-form-json-schema/type-component/object-type.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/gio-form-json-schema/type-component/toggle-type.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/gio-form-json-schema/wrappers/gio-banner-wrapper.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-form-json-schema/wrappers/gio-password-eye.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/gio-form-slide-toggle/gio-form-label.directive.mjs +10 -10
- package/{esm2020 → esm2022}/lib/gio-form-slide-toggle/gio-form-slide-toggle.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-form-slide-toggle/gio-form-slide-toggle.module.mjs +5 -5
- package/esm2022/lib/gio-form-tags-input/gio-form-tags-input.component.mjs +314 -0
- package/esm2022/lib/gio-form-tags-input/gio-form-tags-input.harness.mjs +74 -0
- package/{esm2020 → esm2022}/lib/gio-form-tags-input/gio-form-tags-input.module.mjs +21 -21
- package/{esm2020 → esm2022}/lib/gio-icons/gio-icons.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-license/gio-license-dialog/gio-license-dialog.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-license/gio-license-dialog/gio-license-dialog.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-license/gio-license.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-license/gio-license.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-license/gio-license.service.mjs +4 -4
- package/esm2022/lib/gio-license/gio-license.testing.module.mjs +107 -0
- package/{esm2020 → esm2022}/lib/gio-license-expiration-notification/gio-license-expiration-notification.component.mjs +5 -5
- package/esm2022/lib/gio-license-expiration-notification/gio-license-expiration-notification.harness.mjs +44 -0
- package/{esm2020 → esm2022}/lib/gio-license-expiration-notification/gio-license-expiration-notification.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-loader/gio-loader.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-loader/gio-loader.module.mjs +5 -5
- package/esm2022/lib/gio-mat-config/gio-mat-config.module.mjs +30 -0
- package/esm2022/lib/gio-monaco-editor/gio-monaco-editor-form-field.directive.mjs +149 -0
- package/{esm2020 → esm2022}/lib/gio-monaco-editor/gio-monaco-editor.component.mjs +4 -4
- package/esm2022/lib/gio-monaco-editor/gio-monaco-editor.harness.mjs +70 -0
- package/esm2022/lib/gio-monaco-editor/gio-monaco-editor.module.mjs +58 -0
- package/{esm2020 → esm2022}/lib/gio-monaco-editor/gio-monaco-editor.testing.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-monaco-editor/services/gio-language-json.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-monaco-editor/services/gio-monaco-editor.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-pipe/gio.pipe.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/gio-pipe/safe.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-prismjs/gio-prismjs.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/gio-radio-button/gio-radio-button-content.component.mjs +11 -11
- package/{esm2020 → esm2022}/lib/gio-radio-button/gio-radio-button.module.mjs +5 -5
- package/esm2022/lib/gio-save-bar/gio-save-bar.component.mjs +135 -0
- package/esm2022/lib/gio-save-bar/gio-save-bar.harness.mjs +54 -0
- package/{esm2020 → esm2022}/lib/gio-save-bar/gio-save-bar.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oem-theme/gio-menu/gio-menu-footer/gio-menu-footer.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oem-theme/gio-menu/gio-menu-header/gio-menu-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/oem-theme/gio-menu/gio-menu-item/gio-menu-item.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oem-theme/gio-menu/gio-menu-license-expiration-notification/gio-menu-license-expiration-notification.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/oem-theme/gio-menu/gio-menu-list/gio-menu-list.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/oem-theme/gio-menu/gio-menu-search/gio-menu-search.component.mjs +5 -5
- package/esm2022/lib/oem-theme/gio-menu/gio-menu-search/gio-menu-search.harness.mjs +41 -0
- package/{esm2020 → esm2022}/lib/oem-theme/gio-menu/gio-menu-search/gio-menu-search.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/oem-theme/gio-menu/gio-menu-selector/gio-menu-selector.component.mjs +5 -5
- package/esm2022/lib/oem-theme/gio-menu/gio-menu-selector/gio-menu-selector.harness.mjs +41 -0
- package/{esm2020 → esm2022}/lib/oem-theme/gio-menu/gio-menu.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oem-theme/gio-menu/gio-menu.module.mjs +19 -19
- package/{esm2020 → esm2022}/lib/oem-theme/gio-menu/gio-menu.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/oem-theme/gio-submenu/gio-submenu-group/gio-submenu-group.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oem-theme/gio-submenu/gio-submenu-item/gio-submenu-item.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oem-theme/gio-submenu/gio-submenu.component.mjs +8 -8
- package/{esm2020 → esm2022}/lib/oem-theme/gio-submenu/gio-submenu.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oem-theme/gio-top-bar/gio-top-bar-content/gio-top-bar-content.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oem-theme/gio-top-bar/gio-top-bar-link/gio-top-bar-link.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oem-theme/gio-top-bar/gio-top-bar-link/gio-top-bar-link.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oem-theme/gio-top-bar/gio-top-bar-menu/gio-top-bar-menu.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oem-theme/gio-top-bar/gio-top-bar-menu/gio-top-bar-menu.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oem-theme/gio-top-bar/gio-top-bar.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oem-theme/gio-top-bar/gio-top-bar.module.mjs +5 -5
- package/esm2022/testing/harnesses/div.harness.mjs +45 -0
- package/esm2022/testing/harnesses/span.harness.mjs +42 -0
- package/{fesm2020 → fesm2022}/gravitee-ui-particles-angular-testing.mjs +2 -2
- package/{fesm2020 → fesm2022}/gravitee-ui-particles-angular-testing.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/gravitee-ui-particles-angular.mjs +660 -667
- package/fesm2022/gravitee-ui-particles-angular.mjs.map +1 -0
- package/lib/gio-asciidoctor/gio-asciidoctor.component.d.ts +1 -1
- package/lib/gio-avatar/gio-avatar.component.d.ts +1 -1
- package/lib/gio-banner/gio-banner.component.d.ts +1 -1
- package/lib/gio-card-empty-state/gio-card-empty-state.component.d.ts +1 -1
- package/lib/gio-clipboard/gio-clipboard.base.component.d.ts +1 -1
- package/lib/gio-form-file-picker/gio-form-file-picker.component.d.ts +1 -1
- package/lib/gio-form-headers/gio-form-headers.component.d.ts +1 -1
- package/lib/gio-form-json-schema/gio-form-json-schema.component.d.ts +1 -1
- package/lib/gio-form-slide-toggle/gio-form-slide-toggle.component.d.ts +1 -1
- package/lib/gio-form-tags-input/gio-form-tags-input.component.d.ts +1 -1
- package/lib/gio-license/gio-license.directive.d.ts +1 -1
- package/lib/gio-license-expiration-notification/gio-license-expiration-notification.component.d.ts +1 -1
- package/lib/gio-monaco-editor/gio-monaco-editor-form-field.directive.d.ts +1 -1
- package/lib/gio-monaco-editor/gio-monaco-editor.component.d.ts +1 -1
- package/lib/gio-radio-button/gio-radio-button-content.component.d.ts +1 -1
- package/lib/gio-save-bar/gio-save-bar.component.d.ts +1 -1
- package/lib/oem-theme/gio-menu/gio-menu-item/gio-menu-item.component.d.ts +1 -1
- package/lib/oem-theme/gio-menu/gio-menu-selector/gio-menu-selector.component.d.ts +1 -1
- package/lib/oem-theme/gio-menu/gio-menu.component.d.ts +1 -1
- package/lib/oem-theme/gio-submenu/gio-submenu-group/gio-submenu-group.component.d.ts +1 -1
- package/lib/oem-theme/gio-submenu/gio-submenu-item/gio-submenu-item.component.d.ts +1 -1
- package/lib/oem-theme/gio-submenu/gio-submenu.component.d.ts +1 -1
- package/lib/oem-theme/gio-top-bar/gio-top-bar-content/gio-top-bar-content.component.d.ts +1 -1
- package/lib/oem-theme/gio-top-bar/gio-top-bar-link/gio-top-bar-link.component.d.ts +1 -1
- package/lib/oem-theme/gio-top-bar/gio-top-bar.component.d.ts +1 -1
- package/package.json +15 -23
- package/src/lib/gio-radio-button/gio-radio-button.scss +0 -20
- package/src/scss/gio-mat-palettes.scss +68 -1
- package/src/scss/gio-mat-theme.scss +3 -30
- package/src/scss/index.scss +0 -1
- package/src/scss/mat-override/index.scss +0 -1
- package/src/scss/mat-override/mat-button.scss +0 -71
- package/src/scss/mat-override/mat-card.scss +0 -5
- package/src/scss/mat-override/mat-form-field.scss +0 -32
- package/src/scss/mat-override/mat-list.scss +0 -20
- package/src/scss/mat-override/mat-option.scss +0 -10
- package/src/scss/mat-override/mat-table.scss +0 -31
- package/esm2020/lib/gio-asciidoctor/gio-asciidoctor.component.mjs +0 -104
- package/esm2020/lib/gio-banner/gio-banner.component.mjs +0 -118
- package/esm2020/lib/gio-form-cron/gio-form-cron.component.mjs +0 -208
- package/esm2020/lib/gio-form-cron/gio-form-cron.harness.mjs +0 -77
- package/esm2020/lib/gio-form-file-picker/gio-form-file-picker-add-button/gio-form-file-picker-add-button.component.mjs +0 -29
- package/esm2020/lib/gio-form-file-picker/gio-form-file-picker.component.harness.mjs +0 -95
- package/esm2020/lib/gio-form-headers/gio-form-headers.component.mjs +0 -273
- package/esm2020/lib/gio-form-headers/gio-form-headers.harness.mjs +0 -73
- package/esm2020/lib/gio-form-json-schema/gio-form-json-schema.module.mjs +0 -203
- package/esm2020/lib/gio-form-tags-input/gio-form-tags-input.component.mjs +0 -314
- package/esm2020/lib/gio-form-tags-input/gio-form-tags-input.harness.mjs +0 -74
- package/esm2020/lib/gio-license/gio-license.testing.module.mjs +0 -107
- package/esm2020/lib/gio-license-expiration-notification/gio-license-expiration-notification.harness.mjs +0 -44
- package/esm2020/lib/gio-mat-config/gio-mat-config.module.mjs +0 -37
- package/esm2020/lib/gio-monaco-editor/gio-monaco-editor-form-field.directive.mjs +0 -149
- package/esm2020/lib/gio-monaco-editor/gio-monaco-editor.harness.mjs +0 -70
- package/esm2020/lib/gio-monaco-editor/gio-monaco-editor.module.mjs +0 -58
- package/esm2020/lib/gio-save-bar/gio-save-bar.component.mjs +0 -135
- package/esm2020/lib/gio-save-bar/gio-save-bar.harness.mjs +0 -54
- package/esm2020/lib/oem-theme/gio-menu/gio-menu-search/gio-menu-search.harness.mjs +0 -41
- package/esm2020/lib/oem-theme/gio-menu/gio-menu-selector/gio-menu-selector.harness.mjs +0 -41
- package/esm2020/testing/harnesses/div.harness.mjs +0 -45
- package/esm2020/testing/harnesses/span.harness.mjs +0 -42
- package/fesm2015/gravitee-ui-particles-angular-testing.mjs +0 -100
- package/fesm2015/gravitee-ui-particles-angular-testing.mjs.map +0 -1
- package/fesm2015/gravitee-ui-particles-angular.mjs +0 -7107
- package/fesm2015/gravitee-ui-particles-angular.mjs.map +0 -1
- package/fesm2020/gravitee-ui-particles-angular.mjs.map +0 -1
- package/src/scss/gio-mat-legacy-theme-variable.scss +0 -100
- package/src/scss/mat-override/mat-tabs.scss +0 -23
- /package/{esm2020 → esm2022}/gravitee-ui-particles-angular.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gio-avatar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gio-breadcrumb/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gio-card-empty-state/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gio-dialog/gio-dialog.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gio-form-cron/gio-form-cron.adapter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gio-form-file-picker/gio-form-file-picker.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gio-form-file-picker/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gio-form-json-schema/model/GioJsonSchema.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gio-form-json-schema/util/validation-message.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gio-form-json-schema/wrappers/gio-banner-extension.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gio-mat-config/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gio-monaco-editor/models/GioMonacoEditorConfig.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gio-monaco-editor/models/MonacoEditorTheme.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/oem-theme/gio-menu/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/oem-theme/gio-submenu/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/oem-theme/gio-top-bar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/oem-theme/oem-theme.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/oem-theme/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/gravitee-ui-particles-angular-testing.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/harnesses/index.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
|
|
17
|
-
import { MatButtonToggleGroupHarness } from '@angular/material/button-toggle/testing';
|
|
18
|
-
import { MatInputHarness } from '@angular/material/input/testing';
|
|
19
|
-
export class GioFormCronHarness extends ComponentHarness {
|
|
20
|
-
constructor() {
|
|
21
|
-
super(...arguments);
|
|
22
|
-
this.getModeToggleGroup = this.locatorFor(MatButtonToggleGroupHarness.with({ selector: '[formControlName="mode"]' }));
|
|
23
|
-
this.getCustomExpressionInput = this.locatorFor(MatInputHarness.with({ selector: '[formControlName="customExpression"]' }));
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Gets a `HarnessPredicate` that can be used to search for this harness.
|
|
27
|
-
*
|
|
28
|
-
* @param options Options for filtering which input instances are considered a match.
|
|
29
|
-
* @return a `HarnessPredicate` configured with the given options.
|
|
30
|
-
*/
|
|
31
|
-
static with(options = {}) {
|
|
32
|
-
return new HarnessPredicate(GioFormCronHarness, options);
|
|
33
|
-
}
|
|
34
|
-
async getMode() {
|
|
35
|
-
const mode = await this.getModeToggleGroup();
|
|
36
|
-
const selected = await (await mode.getToggles({ checked: true }))[0]?.getText();
|
|
37
|
-
if (!selected) {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
return selected;
|
|
41
|
-
}
|
|
42
|
-
async setMode(mode) {
|
|
43
|
-
const modeToggle = await this.getModeToggleGroup();
|
|
44
|
-
await (await modeToggle.getToggles({ text: mode }))[0]?.check();
|
|
45
|
-
}
|
|
46
|
-
async clear() {
|
|
47
|
-
const clearButton = await this.locatorForOptional('[aria-label="Clear"]')();
|
|
48
|
-
await clearButton?.click();
|
|
49
|
-
}
|
|
50
|
-
async getValue() {
|
|
51
|
-
if ((await this.getMode()) === 'Custom') {
|
|
52
|
-
const input = await this.getCustomExpressionInput();
|
|
53
|
-
return input.getValue();
|
|
54
|
-
}
|
|
55
|
-
const value = await this.locatorForOptional('.preview__value')();
|
|
56
|
-
return value?.text() ?? null;
|
|
57
|
-
}
|
|
58
|
-
async setCustomValue(value) {
|
|
59
|
-
if ((await this.getMode()) !== 'Custom') {
|
|
60
|
-
await this.setMode('Custom');
|
|
61
|
-
}
|
|
62
|
-
const input = await this.getCustomExpressionInput();
|
|
63
|
-
await input.setValue(value);
|
|
64
|
-
}
|
|
65
|
-
async isDisabled() {
|
|
66
|
-
const mode = await this.getModeToggleGroup();
|
|
67
|
-
return mode.isDisabled();
|
|
68
|
-
}
|
|
69
|
-
async hasError() {
|
|
70
|
-
const host = await this.host();
|
|
71
|
-
const attribute = await host.getAttribute('class');
|
|
72
|
-
const error = attribute?.includes('ng-invalid');
|
|
73
|
-
return error ?? false;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
GioFormCronHarness.hostSelector = 'gio-form-cron';
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tY3Jvbi5oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcGFydGljbGVzLWFuZ3VsYXIvc3JjL2xpYi9naW8tZm9ybS1jcm9uL2dpby1mb3JtLWNyb24uaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBc0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJbEUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGdCQUFnQjtJQUF4RDs7UUFHWSx1QkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSwwQkFBMEIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVqSCw2QkFBd0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsc0NBQXNDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUErRG5JLENBQUM7SUE5REM7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQXFDLEVBQUU7UUFDeEQsT0FBTyxJQUFJLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTztRQUNsQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTdDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBRWhGLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBWTtRQUMvQixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxNQUFNLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2xFLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNoQixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7UUFDNUUsTUFBTSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRO1FBQ25CLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUN2QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3BELE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3pCO1FBQ0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBRWpFLE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFhO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUN2QyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDOUI7UUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3BELE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVU7UUFDckIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVE7UUFDbkIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELE1BQU0sS0FBSyxHQUFHLFNBQVMsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFaEQsT0FBTyxLQUFLLElBQUksS0FBSyxDQUFDO0lBQ3hCLENBQUM7O0FBbEVhLCtCQUFZLEdBQUcsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQmFzZUhhcm5lc3NGaWx0ZXJzLCBDb21wb25lbnRIYXJuZXNzLCBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlR3JvdXBIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZS90ZXN0aW5nJztcbmltcG9ydCB7IE1hdElucHV0SGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0L3Rlc3RpbmcnO1xuXG5leHBvcnQgdHlwZSBHaW9Gb3JtQ3Jvbkhhcm5lc3NGaWx0ZXJzID0gQmFzZUhhcm5lc3NGaWx0ZXJzO1xuXG5leHBvcnQgY2xhc3MgR2lvRm9ybUNyb25IYXJuZXNzIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcyB7XG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ2dpby1mb3JtLWNyb24nO1xuXG4gIHByb3RlY3RlZCBnZXRNb2RlVG9nZ2xlR3JvdXAgPSB0aGlzLmxvY2F0b3JGb3IoTWF0QnV0dG9uVG9nZ2xlR3JvdXBIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogJ1tmb3JtQ29udHJvbE5hbWU9XCJtb2RlXCJdJyB9KSk7XG5cbiAgcHJvdGVjdGVkIGdldEN1c3RvbUV4cHJlc3Npb25JbnB1dCA9IHRoaXMubG9jYXRvckZvcihNYXRJbnB1dEhhcm5lc3Mud2l0aCh7IHNlbGVjdG9yOiAnW2Zvcm1Db250cm9sTmFtZT1cImN1c3RvbUV4cHJlc3Npb25cIl0nIH0pKTtcbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIHRoaXMgaGFybmVzcy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZmlsdGVyaW5nIHdoaWNoIGlucHV0IGluc3RhbmNlcyBhcmUgY29uc2lkZXJlZCBhIG1hdGNoLlxuICAgKiBAcmV0dXJuIGEgYEhhcm5lc3NQcmVkaWNhdGVgIGNvbmZpZ3VyZWQgd2l0aCB0aGUgZ2l2ZW4gb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChvcHRpb25zOiBHaW9Gb3JtQ3Jvbkhhcm5lc3NGaWx0ZXJzID0ge30pOiBIYXJuZXNzUHJlZGljYXRlPEdpb0Zvcm1Dcm9uSGFybmVzcz4ge1xuICAgIHJldHVybiBuZXcgSGFybmVzc1ByZWRpY2F0ZShHaW9Gb3JtQ3Jvbkhhcm5lc3MsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE1vZGUoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgbW9kZSA9IGF3YWl0IHRoaXMuZ2V0TW9kZVRvZ2dsZUdyb3VwKCk7XG5cbiAgICBjb25zdCBzZWxlY3RlZCA9IGF3YWl0IChhd2FpdCBtb2RlLmdldFRvZ2dsZXMoeyBjaGVja2VkOiB0cnVlIH0pKVswXT8uZ2V0VGV4dCgpO1xuXG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRNb2RlKG1vZGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG1vZGVUb2dnbGUgPSBhd2FpdCB0aGlzLmdldE1vZGVUb2dnbGVHcm91cCgpO1xuICAgIGF3YWl0IChhd2FpdCBtb2RlVG9nZ2xlLmdldFRvZ2dsZXMoeyB0ZXh0OiBtb2RlIH0pKVswXT8uY2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjbGVhcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjbGVhckJ1dHRvbiA9IGF3YWl0IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCdbYXJpYS1sYWJlbD1cIkNsZWFyXCJdJykoKTtcbiAgICBhd2FpdCBjbGVhckJ1dHRvbj8uY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRWYWx1ZSgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICBpZiAoKGF3YWl0IHRoaXMuZ2V0TW9kZSgpKSA9PT0gJ0N1c3RvbScpIHtcbiAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRDdXN0b21FeHByZXNzaW9uSW5wdXQoKTtcbiAgICAgIHJldHVybiBpbnB1dC5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCcucHJldmlld19fdmFsdWUnKSgpO1xuXG4gICAgcmV0dXJuIHZhbHVlPy50ZXh0KCkgPz8gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRDdXN0b21WYWx1ZSh2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKChhd2FpdCB0aGlzLmdldE1vZGUoKSkgIT09ICdDdXN0b20nKSB7XG4gICAgICBhd2FpdCB0aGlzLnNldE1vZGUoJ0N1c3RvbScpO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRDdXN0b21FeHByZXNzaW9uSW5wdXQoKTtcbiAgICBhd2FpdCBpbnB1dC5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaXNEaXNhYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBtb2RlID0gYXdhaXQgdGhpcy5nZXRNb2RlVG9nZ2xlR3JvdXAoKTtcbiAgICByZXR1cm4gbW9kZS5pc0Rpc2FibGVkKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGFzRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaG9zdCA9IGF3YWl0IHRoaXMuaG9zdCgpO1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGF3YWl0IGhvc3QuZ2V0QXR0cmlidXRlKCdjbGFzcycpO1xuICAgIGNvbnN0IGVycm9yID0gYXR0cmlidXRlPy5pbmNsdWRlcygnbmctaW52YWxpZCcpO1xuXG4gICAgcmV0dXJuIGVycm9yID8/IGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "@angular/common";
|
|
19
|
-
import * as i2 from "@angular/material/core";
|
|
20
|
-
import * as i3 from "@angular/material/icon";
|
|
21
|
-
export class GioFormFilePickerAddButtonComponent {
|
|
22
|
-
}
|
|
23
|
-
GioFormFilePickerAddButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GioFormFilePickerAddButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
24
|
-
GioFormFilePickerAddButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GioFormFilePickerAddButtonComponent, selector: "gio-form-file-picker-add-button", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"add-button\" matRipple>\n <div #content><ng-content></ng-content></div>\n <span *ngIf=\"!content.children.length\">\n <mat-icon class=\"add-button__image\" svgIcon=\"gio:upload\"></mat-icon>\n <span class=\"add-button__content\">Drag your file</span>\n </span>\n</div>\n", styles: [".gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;flex-direction:column}.file-picker{display:flex;flex:1 1 auto;flex-flow:row wrap;padding:4px}.file-picker__add-button{border:2px dashed #606274;border-radius:6px;margin:4px;cursor:pointer}.file-picker__add-button:hover,.file-picker__add-button.drag-hover{border:2px dashed #876fec;background-color:#0000000a}.file-picker__add-button.drag-hover{pointer-events:none}.file-picker__add-button.complete{padding:6px;border:none}.file-picker__add-button.error{border:2px dashed #ec4899}.file-picker__preview,.file-picker__preview-empty{position:relative;display:flex;min-width:130px;min-height:130px;flex:0 0 130px;flex-flow:column nowrap;justify-content:space-between;padding:6px;border:2px solid #606274;border-radius:6px;margin:4px;inline-size:-moz-fit-content;inline-size:fit-content}.file-picker__preview.drag-hover,.file-picker__preview-empty.drag-hover{pointer-events:none}.file-picker__preview__image,.file-picker__preview-empty__image{width:100%;height:100%;background-position-x:center;background-position-y:center;background-repeat:no-repeat;background-size:contain}.file-picker__preview__file,.file-picker__preview-empty__file{display:flex;flex:1 1 auto;flex-direction:column;align-content:center;align-items:center;justify-content:center;text-align:center;font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.file-picker__preview__file code,.file-picker__preview-empty__file code{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.file-picker__preview.disabled,.file-picker__preview-empty.disabled{border:2px solid rgba(0,0,0,.12)}.file-picker__preview.error{border:2px solid #ec4899}.file-picker__preview__delete{position:absolute;z-index:200;top:0;right:0;width:24px;height:24px;border-radius:3px;background-color:#f7f8fdb3;color:#100c27;cursor:pointer}.file-picker__preview__delete:hover{color:#fe733f}.file-picker__preview-empty__default{text-align:center}:host{display:block;width:130px;height:130px}.add-button{height:100%;padding:6px;text-align:center}.add-button__image{width:100%;height:54px}.add-button__content{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GioFormFilePickerAddButtonComponent, decorators: [{
|
|
26
|
-
type: Component,
|
|
27
|
-
args: [{ selector: 'gio-form-file-picker-add-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"add-button\" matRipple>\n <div #content><ng-content></ng-content></div>\n <span *ngIf=\"!content.children.length\">\n <mat-icon class=\"add-button__image\" svgIcon=\"gio:upload\"></mat-icon>\n <span class=\"add-button__content\">Drag your file</span>\n </span>\n</div>\n", styles: [".gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;flex-direction:column}.file-picker{display:flex;flex:1 1 auto;flex-flow:row wrap;padding:4px}.file-picker__add-button{border:2px dashed #606274;border-radius:6px;margin:4px;cursor:pointer}.file-picker__add-button:hover,.file-picker__add-button.drag-hover{border:2px dashed #876fec;background-color:#0000000a}.file-picker__add-button.drag-hover{pointer-events:none}.file-picker__add-button.complete{padding:6px;border:none}.file-picker__add-button.error{border:2px dashed #ec4899}.file-picker__preview,.file-picker__preview-empty{position:relative;display:flex;min-width:130px;min-height:130px;flex:0 0 130px;flex-flow:column nowrap;justify-content:space-between;padding:6px;border:2px solid #606274;border-radius:6px;margin:4px;inline-size:-moz-fit-content;inline-size:fit-content}.file-picker__preview.drag-hover,.file-picker__preview-empty.drag-hover{pointer-events:none}.file-picker__preview__image,.file-picker__preview-empty__image{width:100%;height:100%;background-position-x:center;background-position-y:center;background-repeat:no-repeat;background-size:contain}.file-picker__preview__file,.file-picker__preview-empty__file{display:flex;flex:1 1 auto;flex-direction:column;align-content:center;align-items:center;justify-content:center;text-align:center;font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.file-picker__preview__file code,.file-picker__preview-empty__file code{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.file-picker__preview.disabled,.file-picker__preview-empty.disabled{border:2px solid rgba(0,0,0,.12)}.file-picker__preview.error{border:2px solid #ec4899}.file-picker__preview__delete{position:absolute;z-index:200;top:0;right:0;width:24px;height:24px;border-radius:3px;background-color:#f7f8fdb3;color:#100c27;cursor:pointer}.file-picker__preview__delete:hover{color:#fe733f}.file-picker__preview-empty__default{text-align:center}:host{display:block;width:130px;height:130px}.add-button{height:100%;padding:6px;text-align:center}.add-button__image{width:100%;height:54px}.add-button__content{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}\n"] }]
|
|
28
|
-
}] });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tZmlsZS1waWNrZXItYWRkLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWZpbGUtcGlja2VyL2dpby1mb3JtLWZpbGUtcGlja2VyLWFkZC1idXR0b24vZ2lvLWZvcm0tZmlsZS1waWNrZXItYWRkLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWZpbGUtcGlja2VyL2dpby1mb3JtLWZpbGUtcGlja2VyLWFkZC1idXR0b24vZ2lvLWZvcm0tZmlsZS1waWNrZXItYWRkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUW5FLE1BQU0sT0FBTyxtQ0FBbUM7O2lJQUFuQyxtQ0FBbUM7cUhBQW5DLG1DQUFtQyx1RUN2QmhELHE4QkF3QkE7NEZERGEsbUNBQW1DO2tCQU4vQyxTQUFTOytCQUNFLGlDQUFpQyxtQkFHMUIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dpby1mb3JtLWZpbGUtcGlja2VyLWFkZC1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLWZvcm0tZmlsZS1waWNrZXItYWRkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1mb3JtLWZpbGUtcGlja2VyLWFkZC1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEdpb0Zvcm1GaWxlUGlja2VyQWRkQnV0dG9uQ29tcG9uZW50IHt9XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cbjxkaXYgY2xhc3M9XCJhZGQtYnV0dG9uXCIgbWF0UmlwcGxlPlxuICA8ZGl2ICNjb250ZW50PjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cbiAgPHNwYW4gKm5nSWY9XCIhY29udGVudC5jaGlsZHJlbi5sZW5ndGhcIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJhZGQtYnV0dG9uX19pbWFnZVwiIHN2Z0ljb249XCJnaW86dXBsb2FkXCI+PC9tYXQtaWNvbj5cbiAgICA8c3BhbiBjbGFzcz1cImFkZC1idXR0b25fX2NvbnRlbnRcIj5EcmFnIHlvdXIgZmlsZTwvc3Bhbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
|
|
17
|
-
export class GioFormFilePickerInputHarness extends ComponentHarness {
|
|
18
|
-
constructor() {
|
|
19
|
-
super(...arguments);
|
|
20
|
-
this._mainDiv = this.locatorFor('.file-picker__add-button');
|
|
21
|
-
this._hasErrorClass = this.locatorForOptional('[class="file-picker__add-button error"]');
|
|
22
|
-
this._inputFile = this.locatorFor('input[type="file"]');
|
|
23
|
-
this._getDisabledElement = this.locatorForOptional('.disabled');
|
|
24
|
-
}
|
|
25
|
-
static with(options) {
|
|
26
|
-
return new HarnessPredicate(GioFormFilePickerInputHarness, options).addOption('formControlName', options.formControlName, (harness, text) => HarnessPredicate.stringMatches(harness.getFormControlName(), text));
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Hack force onload on Image Object
|
|
30
|
-
* GioFormFilePickerComponent use a Image Object to check if the file is an image.
|
|
31
|
-
* This method allow to force onload event on the Image Object.
|
|
32
|
-
* @param excludeSrc call onerror instead of onload for this src
|
|
33
|
-
*/
|
|
34
|
-
static forceImageOnload(excludeSrc = []) {
|
|
35
|
-
Object.defineProperties(Image.prototype, {
|
|
36
|
-
src: {
|
|
37
|
-
get: function () {
|
|
38
|
-
return this._src;
|
|
39
|
-
},
|
|
40
|
-
set: function (src) {
|
|
41
|
-
this._src = src;
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
onload: {
|
|
45
|
-
get: function () {
|
|
46
|
-
return this._onload;
|
|
47
|
-
},
|
|
48
|
-
set: function (fn) {
|
|
49
|
-
this._onload = fn;
|
|
50
|
-
excludeSrc.includes(this._src) ? this.onerror() : this.onload();
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
async getFormControlName() {
|
|
56
|
-
const filePickerInputHarness = await this.host();
|
|
57
|
-
return filePickerInputHarness.getAttribute('formControlName');
|
|
58
|
-
}
|
|
59
|
-
async hasErrorClass() {
|
|
60
|
-
return !!(await this._hasErrorClass());
|
|
61
|
-
}
|
|
62
|
-
async clickInside() {
|
|
63
|
-
await (await this._mainDiv()).click();
|
|
64
|
-
}
|
|
65
|
-
async getInputFileAccept() {
|
|
66
|
-
return await (await this._inputFile()).getAttribute('accept');
|
|
67
|
-
}
|
|
68
|
-
async getPreviews() {
|
|
69
|
-
const previewImages = await this.locatorForAll('.file-picker__preview__image')();
|
|
70
|
-
const previewFiles = await this.locatorForAll('.file-picker__preview__file')();
|
|
71
|
-
return Promise.all([
|
|
72
|
-
...previewImages.map(previewImage => previewImage.getAttribute('style')),
|
|
73
|
-
...previewFiles.map(previewFile => previewFile.text()),
|
|
74
|
-
]);
|
|
75
|
-
}
|
|
76
|
-
async isAddButtonPresent() {
|
|
77
|
-
return (await this.locatorForOptional('gio-form-file-picker-add-button')()) !== null;
|
|
78
|
-
}
|
|
79
|
-
async isDisabled() {
|
|
80
|
-
return !!(await this._getDisabledElement());
|
|
81
|
-
}
|
|
82
|
-
async deleteFile(fileIndex = 0) {
|
|
83
|
-
const deleteButtons = await this.locatorForAll('.file-picker__preview__delete')();
|
|
84
|
-
return deleteButtons[fileIndex].click();
|
|
85
|
-
}
|
|
86
|
-
async dropFiles(files) {
|
|
87
|
-
const filePickerDropZone = await this.locatorFor('.file-picker')();
|
|
88
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
89
|
-
await filePickerDropZone.dispatchEvent('drop', { dataTransfer: { files } });
|
|
90
|
-
// Wait event is dispatched
|
|
91
|
-
await new Promise(resolve => setTimeout(resolve, 50));
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
GioFormFilePickerInputHarness.hostSelector = 'gio-form-file-picker';
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tZmlsZS1waWNrZXIuY29tcG9uZW50Lmhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWZpbGUtcGlja2VyL2dpby1mb3JtLWZpbGUtcGlja2VyLmNvbXBvbmVudC5oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBTzlGLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxnQkFBZ0I7SUFBbkU7O1FBd0NZLGFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDdkQsbUJBQWMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUNwRixlQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25ELHdCQUFtQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQW9EdkUsQ0FBQztJQTVGUSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQXdDO1FBQ3pELE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyw2QkFBNkIsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQzNFLGlCQUFpQixFQUNqQixPQUFPLENBQUMsZUFBZSxFQUN2QixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FDdEYsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxhQUF1QixFQUFFO1FBQ3RELE1BQU0sQ0FBQyxn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QkFBa0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQVMsQ0FBQyxDQUFDO1FBRW5GLDJCQUEyQjtRQUMzQixNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7O0FBN0ZhLDBDQUFZLEdBQUcsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQmFzZUhhcm5lc3NGaWx0ZXJzLCBDb21wb25lbnRIYXJuZXNzLCBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuXG5pbnRlcmZhY2UgR2lvRm9ybUZpbGVQaWNrZXJIYXJuZXNzRmlsdGVycyBleHRlbmRzIEJhc2VIYXJuZXNzRmlsdGVycyB7XG4gIC8qKiBGaWx0ZXJzIGJhc2VkIG9uIHRoZSBmb3JtQ29udHJvbE5hbWUgICovXG4gIGZvcm1Db250cm9sTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEdpb0Zvcm1GaWxlUGlja2VySW5wdXRIYXJuZXNzIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcyB7XG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ2dpby1mb3JtLWZpbGUtcGlja2VyJztcblxuICBwdWJsaWMgc3RhdGljIHdpdGgob3B0aW9uczogR2lvRm9ybUZpbGVQaWNrZXJIYXJuZXNzRmlsdGVycyk6IEhhcm5lc3NQcmVkaWNhdGU8R2lvRm9ybUZpbGVQaWNrZXJJbnB1dEhhcm5lc3M+IHtcbiAgICByZXR1cm4gbmV3IEhhcm5lc3NQcmVkaWNhdGUoR2lvRm9ybUZpbGVQaWNrZXJJbnB1dEhhcm5lc3MsIG9wdGlvbnMpLmFkZE9wdGlvbihcbiAgICAgICdmb3JtQ29udHJvbE5hbWUnLFxuICAgICAgb3B0aW9ucy5mb3JtQ29udHJvbE5hbWUsXG4gICAgICAoaGFybmVzcywgdGV4dCkgPT4gSGFybmVzc1ByZWRpY2F0ZS5zdHJpbmdNYXRjaGVzKGhhcm5lc3MuZ2V0Rm9ybUNvbnRyb2xOYW1lKCksIHRleHQpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSGFjayBmb3JjZSBvbmxvYWQgb24gSW1hZ2UgT2JqZWN0XG4gICAqIEdpb0Zvcm1GaWxlUGlja2VyQ29tcG9uZW50IHVzZSBhIEltYWdlIE9iamVjdCB0byBjaGVjayBpZiB0aGUgZmlsZSBpcyBhbiBpbWFnZS5cbiAgICogVGhpcyBtZXRob2QgYWxsb3cgdG8gZm9yY2Ugb25sb2FkIGV2ZW50IG9uIHRoZSBJbWFnZSBPYmplY3QuXG4gICAqIEBwYXJhbSBleGNsdWRlU3JjIGNhbGwgb25lcnJvciBpbnN0ZWFkIG9mIG9ubG9hZCBmb3IgdGhpcyBzcmNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yY2VJbWFnZU9ubG9hZChleGNsdWRlU3JjOiBzdHJpbmdbXSA9IFtdKTogdm9pZCB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoSW1hZ2UucHJvdG90eXBlLCB7XG4gICAgICBzcmM6IHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3NyYztcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoc3JjKSB7XG4gICAgICAgICAgdGhpcy5fc3JjID0gc3JjO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG9ubG9hZDoge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fb25sb2FkO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChmbikge1xuICAgICAgICAgIHRoaXMuX29ubG9hZCA9IGZuO1xuXG4gICAgICAgICAgZXhjbHVkZVNyYy5pbmNsdWRlcyh0aGlzLl9zcmMpID8gdGhpcy5vbmVycm9yKCkgOiB0aGlzLm9ubG9hZCgpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfbWFpbkRpdiA9IHRoaXMubG9jYXRvckZvcignLmZpbGUtcGlja2VyX19hZGQtYnV0dG9uJyk7XG4gIHByb3RlY3RlZCBfaGFzRXJyb3JDbGFzcyA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCdbY2xhc3M9XCJmaWxlLXBpY2tlcl9fYWRkLWJ1dHRvbiBlcnJvclwiXScpO1xuICBwcm90ZWN0ZWQgX2lucHV0RmlsZSA9IHRoaXMubG9jYXRvckZvcignaW5wdXRbdHlwZT1cImZpbGVcIl0nKTtcbiAgcHJvdGVjdGVkIF9nZXREaXNhYmxlZEVsZW1lbnQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnLmRpc2FibGVkJyk7XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRGb3JtQ29udHJvbE5hbWUoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgZmlsZVBpY2tlcklucHV0SGFybmVzcyA9IGF3YWl0IHRoaXMuaG9zdCgpO1xuICAgIHJldHVybiBmaWxlUGlja2VySW5wdXRIYXJuZXNzLmdldEF0dHJpYnV0ZSgnZm9ybUNvbnRyb2xOYW1lJyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGFzRXJyb3JDbGFzcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gISEoYXdhaXQgdGhpcy5faGFzRXJyb3JDbGFzcygpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjbGlja0luc2lkZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCAoYXdhaXQgdGhpcy5fbWFpbkRpdigpKS5jbGljaygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldElucHV0RmlsZUFjY2VwdCgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuX2lucHV0RmlsZSgpKS5nZXRBdHRyaWJ1dGUoJ2FjY2VwdCcpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByZXZpZXdzKCk6IFByb21pc2U8KHN0cmluZyB8IG51bGwpW10+IHtcbiAgICBjb25zdCBwcmV2aWV3SW1hZ2VzID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yQWxsKCcuZmlsZS1waWNrZXJfX3ByZXZpZXdfX2ltYWdlJykoKTtcbiAgICBjb25zdCBwcmV2aWV3RmlsZXMgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3JBbGwoJy5maWxlLXBpY2tlcl9fcHJldmlld19fZmlsZScpKCk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgLi4ucHJldmlld0ltYWdlcy5tYXAocHJldmlld0ltYWdlID0+IHByZXZpZXdJbWFnZS5nZXRBdHRyaWJ1dGUoJ3N0eWxlJykpLFxuICAgICAgLi4ucHJldmlld0ZpbGVzLm1hcChwcmV2aWV3RmlsZSA9PiBwcmV2aWV3RmlsZS50ZXh0KCkpLFxuICAgIF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGlzQWRkQnV0dG9uUHJlc2VudCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCdnaW8tZm9ybS1maWxlLXBpY2tlci1hZGQtYnV0dG9uJykoKSkgIT09IG51bGw7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaXNEaXNhYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gISEoYXdhaXQgdGhpcy5fZ2V0RGlzYWJsZWRFbGVtZW50KCkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZUZpbGUoZmlsZUluZGV4ID0gMCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRlbGV0ZUJ1dHRvbnMgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3JBbGwoJy5maWxlLXBpY2tlcl9fcHJldmlld19fZGVsZXRlJykoKTtcblxuICAgIHJldHVybiBkZWxldGVCdXR0b25zW2ZpbGVJbmRleF0uY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkcm9wRmlsZXMoZmlsZXM6IEZpbGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZpbGVQaWNrZXJEcm9wWm9uZSA9IGF3YWl0IHRoaXMubG9jYXRvckZvcignLmZpbGUtcGlja2VyJykoKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgYXdhaXQgZmlsZVBpY2tlckRyb3Bab25lLmRpc3BhdGNoRXZlbnQoJ2Ryb3AnLCB7IGRhdGFUcmFuc2ZlcjogeyBmaWxlcyB9IH0gYXMgYW55KTtcblxuICAgIC8vIFdhaXQgZXZlbnQgaXMgZGlzcGF0Y2hlZFxuICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MCkpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
import { Component, forwardRef, HostBinding, Input } from '@angular/core';
|
|
2
|
-
import { UntypedFormArray, UntypedFormControl, UntypedFormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validators, } from '@angular/forms';
|
|
3
|
-
import { dropRight, isEmpty } from 'lodash';
|
|
4
|
-
import { map, startWith, tap } from 'rxjs/operators';
|
|
5
|
-
import { of } from 'rxjs';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/cdk/a11y";
|
|
8
|
-
import * as i2 from "@angular/common";
|
|
9
|
-
import * as i3 from "@angular/material/input";
|
|
10
|
-
import * as i4 from "@angular/material/form-field";
|
|
11
|
-
import * as i5 from "@angular/cdk/text-field";
|
|
12
|
-
import * as i6 from "@angular/forms";
|
|
13
|
-
import * as i7 from "@angular/material/icon";
|
|
14
|
-
import * as i8 from "@angular/material/button";
|
|
15
|
-
import * as i9 from "@angular/material/autocomplete";
|
|
16
|
-
import * as i10 from "@angular/material/core";
|
|
17
|
-
const HEADER_NAMES = [
|
|
18
|
-
'Accept',
|
|
19
|
-
'Accept-Charset',
|
|
20
|
-
'Accept-Encoding',
|
|
21
|
-
'Accept-Language',
|
|
22
|
-
'Accept-Ranges',
|
|
23
|
-
'Access-Control-Allow-Credentials',
|
|
24
|
-
'Access-Control-Allow-Headers',
|
|
25
|
-
'Access-Control-Allow-Methods',
|
|
26
|
-
'Access-Control-Allow-Origin',
|
|
27
|
-
'Access-Control-Expose-Headers',
|
|
28
|
-
'Access-Control-Max-Age',
|
|
29
|
-
'Access-Control-Request-Headers',
|
|
30
|
-
'Access-Control-Request-Method',
|
|
31
|
-
'Age',
|
|
32
|
-
'Allow',
|
|
33
|
-
'Authorization',
|
|
34
|
-
'Cache-Control',
|
|
35
|
-
'Connection',
|
|
36
|
-
'Content-Disposition',
|
|
37
|
-
'Content-Encoding',
|
|
38
|
-
'Content-ID',
|
|
39
|
-
'Content-Language',
|
|
40
|
-
'Content-Length',
|
|
41
|
-
'Content-Location',
|
|
42
|
-
'Content-MD5',
|
|
43
|
-
'Content-Range',
|
|
44
|
-
'Content-Type',
|
|
45
|
-
'Cookie',
|
|
46
|
-
'Date',
|
|
47
|
-
'ETag',
|
|
48
|
-
'Expires',
|
|
49
|
-
'Expect',
|
|
50
|
-
'Forwarded',
|
|
51
|
-
'From',
|
|
52
|
-
'Host',
|
|
53
|
-
'If-Match',
|
|
54
|
-
'If-Modified-Since',
|
|
55
|
-
'If-None-Match',
|
|
56
|
-
'If-Unmodified-Since',
|
|
57
|
-
'Keep-Alive',
|
|
58
|
-
'Last-Modified',
|
|
59
|
-
'Location',
|
|
60
|
-
'Link',
|
|
61
|
-
'Max-Forwards',
|
|
62
|
-
'MIME-Version',
|
|
63
|
-
'Origin',
|
|
64
|
-
'Pragma',
|
|
65
|
-
'Proxy-Authenticate',
|
|
66
|
-
'Proxy-Authorization',
|
|
67
|
-
'Proxy-Connection',
|
|
68
|
-
'Range',
|
|
69
|
-
'Referer',
|
|
70
|
-
'Retry-After',
|
|
71
|
-
'Server',
|
|
72
|
-
'Set-Cookie',
|
|
73
|
-
'Set-Cookie2',
|
|
74
|
-
'TE',
|
|
75
|
-
'Trailer',
|
|
76
|
-
'Transfer-Encoding',
|
|
77
|
-
'Upgrade',
|
|
78
|
-
'User-Agent',
|
|
79
|
-
'Vary',
|
|
80
|
-
'Via',
|
|
81
|
-
'Warning',
|
|
82
|
-
'WWW-Authenticate',
|
|
83
|
-
'X-Forwarded-For',
|
|
84
|
-
'X-Forwarded-Proto',
|
|
85
|
-
'X-Forwarded-Server',
|
|
86
|
-
'X-Forwarded-Host',
|
|
87
|
-
'X-Forwarded-Port',
|
|
88
|
-
'X-Forwarded-Prefix',
|
|
89
|
-
];
|
|
90
|
-
export class GioFormHeadersComponent {
|
|
91
|
-
constructor(fm, elRef) {
|
|
92
|
-
this.fm = fm;
|
|
93
|
-
this.elRef = elRef;
|
|
94
|
-
this.headerFieldMapper = {
|
|
95
|
-
keyName: 'key',
|
|
96
|
-
valueName: 'value',
|
|
97
|
-
};
|
|
98
|
-
this.headersFormArray = new UntypedFormArray([
|
|
99
|
-
new UntypedFormGroup({
|
|
100
|
-
key: new UntypedFormControl('', Validators.pattern('^\\S*$')),
|
|
101
|
-
value: new UntypedFormControl(''),
|
|
102
|
-
}),
|
|
103
|
-
]);
|
|
104
|
-
this.disabled = false;
|
|
105
|
-
this.headers = [];
|
|
106
|
-
this._onChange = () => ({});
|
|
107
|
-
this._onTouched = () => ({});
|
|
108
|
-
this.filteredHeaderNames = [];
|
|
109
|
-
this.mainForm = new UntypedFormGroup({
|
|
110
|
-
headers: this.headersFormArray,
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
// From ControlValueAccessor interface
|
|
114
|
-
writeValue(value) {
|
|
115
|
-
if (!value) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
this.headers = [...(value ?? [])].map((header) => {
|
|
119
|
-
return {
|
|
120
|
-
key: header[this.headerFieldMapper.keyName],
|
|
121
|
-
value: header[this.headerFieldMapper.valueName],
|
|
122
|
-
};
|
|
123
|
-
});
|
|
124
|
-
this.initHeadersForm();
|
|
125
|
-
}
|
|
126
|
-
// From ControlValueAccessor interface
|
|
127
|
-
registerOnChange(fn) {
|
|
128
|
-
if (this.headerFieldMapper) {
|
|
129
|
-
this._onChange = (headers) => fn(this.toHeaders(headers));
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
this._onChange = fn;
|
|
133
|
-
}
|
|
134
|
-
toHeaders(headers) {
|
|
135
|
-
return [...(headers ?? [])].map(header => {
|
|
136
|
-
return {
|
|
137
|
-
[this.headerFieldMapper.keyName]: header.key,
|
|
138
|
-
[this.headerFieldMapper.valueName]: header.value,
|
|
139
|
-
};
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
// From ControlValueAccessor interface
|
|
143
|
-
registerOnTouched(fn) {
|
|
144
|
-
this._onTouched = fn;
|
|
145
|
-
}
|
|
146
|
-
// From ControlValueAccessor interface
|
|
147
|
-
setDisabledState(isDisabled) {
|
|
148
|
-
if (isDisabled === this.disabled) {
|
|
149
|
-
// do nothing if the disabled state is not changed
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
this.disabled = isDisabled;
|
|
153
|
-
if (isDisabled) {
|
|
154
|
-
this.headersFormArray.disable({ emitEvent: false });
|
|
155
|
-
this.removeLastHeader();
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
this.headersFormArray.enable({ emitEvent: false });
|
|
159
|
-
this.addEmptyHeader();
|
|
160
|
-
}
|
|
161
|
-
ngOnInit() {
|
|
162
|
-
// When user start to complete last header add new empty one a the end
|
|
163
|
-
this.headersFormArray?.valueChanges
|
|
164
|
-
.pipe(tap(headers => headers.length > 0 && this._onChange(removeLastEmptyHeader(headers))), tap((headers) => {
|
|
165
|
-
if (headers.length > 0 && (headers[headers.length - 1].key !== '' || headers[headers.length - 1].value !== '')) {
|
|
166
|
-
this.addEmptyHeader();
|
|
167
|
-
}
|
|
168
|
-
}))
|
|
169
|
-
.subscribe();
|
|
170
|
-
this.fm.monitor(this.elRef.nativeElement, true).subscribe(() => {
|
|
171
|
-
this._onTouched();
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
initHeadersForm() {
|
|
175
|
-
// Clear all previous headers
|
|
176
|
-
this.headersFormArray.clear();
|
|
177
|
-
// Populate headers array from headers
|
|
178
|
-
this.headers.forEach(({ key, value }, headerIndex) => {
|
|
179
|
-
this.headersFormArray.push(new UntypedFormGroup({
|
|
180
|
-
key: this.initKeyFormControl(key, headerIndex),
|
|
181
|
-
value: new UntypedFormControl({ value, disabled: this.disabled }),
|
|
182
|
-
}), {
|
|
183
|
-
emitEvent: false,
|
|
184
|
-
});
|
|
185
|
-
});
|
|
186
|
-
// add one empty header a the end
|
|
187
|
-
this.addEmptyHeader();
|
|
188
|
-
}
|
|
189
|
-
getFilteredHeaderNames(headerIndex, header) {
|
|
190
|
-
if (!this.filteredHeaderNames[headerIndex]) {
|
|
191
|
-
return this.filteredHeaderNames[headerIndex];
|
|
192
|
-
}
|
|
193
|
-
if (header.key != null && header.key != '') {
|
|
194
|
-
this.filteredHeaderNames[headerIndex] = of(header.key).pipe(map(value => this._filter(value)));
|
|
195
|
-
return this.filteredHeaderNames[headerIndex];
|
|
196
|
-
}
|
|
197
|
-
return of(HEADER_NAMES);
|
|
198
|
-
}
|
|
199
|
-
// From Validator interface
|
|
200
|
-
validate(_control) {
|
|
201
|
-
if (this.headersFormArray.invalid) {
|
|
202
|
-
return { invalid: true };
|
|
203
|
-
}
|
|
204
|
-
return null;
|
|
205
|
-
}
|
|
206
|
-
initKeyFormControl(key, headerIndex) {
|
|
207
|
-
const control = new UntypedFormControl({ value: key, disabled: this.disabled }, Validators.pattern('^\\S*$'));
|
|
208
|
-
const filteredKeys = control.valueChanges.pipe(startWith(''), map(value => this._filter(value)));
|
|
209
|
-
this.filteredHeaderNames.splice(headerIndex, 0, filteredKeys);
|
|
210
|
-
return control;
|
|
211
|
-
}
|
|
212
|
-
onDeleteHeader(headerIndex) {
|
|
213
|
-
this._onTouched();
|
|
214
|
-
this.headersFormArray.removeAt(headerIndex);
|
|
215
|
-
}
|
|
216
|
-
addEmptyHeader() {
|
|
217
|
-
if (this.disabled) {
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
this.headersFormArray.push(new UntypedFormGroup({
|
|
221
|
-
key: this.initKeyFormControl('', this.headersFormArray.length),
|
|
222
|
-
value: new UntypedFormControl(''),
|
|
223
|
-
}), { emitEvent: false });
|
|
224
|
-
}
|
|
225
|
-
removeLastHeader() {
|
|
226
|
-
this.headersFormArray.removeAt(this.headersFormArray.length - 1, { emitEvent: false });
|
|
227
|
-
}
|
|
228
|
-
_filter(value) {
|
|
229
|
-
const filterValue = value.toLowerCase();
|
|
230
|
-
return HEADER_NAMES.filter(option => option.toLowerCase().includes(filterValue));
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
GioFormHeadersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GioFormHeadersComponent, deps: [{ token: i1.FocusMonitor }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
234
|
-
GioFormHeadersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GioFormHeadersComponent, selector: "gio-form-headers", inputs: { headerFieldMapper: "headerFieldMapper" }, host: { properties: { "class.disabled": "this.disabled" } }, providers: [
|
|
235
|
-
{
|
|
236
|
-
provide: NG_VALUE_ACCESSOR,
|
|
237
|
-
useExisting: forwardRef(() => GioFormHeadersComponent),
|
|
238
|
-
multi: true,
|
|
239
|
-
},
|
|
240
|
-
{
|
|
241
|
-
provide: NG_VALIDATORS,
|
|
242
|
-
useExisting: forwardRef(() => GioFormHeadersComponent),
|
|
243
|
-
multi: true,
|
|
244
|
-
},
|
|
245
|
-
], ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"label\"><ng-content select=\"gio-form-headers-label\"></ng-content></div>\n<table class=\"gio-form-headers__table gio-table-light\" [class.disabled]=\"disabled\" [formGroup]=\"mainForm\">\n <thead>\n <tr>\n <th>KEY</th>\n <th>VALUE</th>\n </tr>\n </thead>\n <tbody formArrayName=\"headers\">\n <tr\n *ngFor=\"let control of headersFormArray.controls; index as headerIndex\"\n class=\"gio-form-headers__table__header-row\"\n [formGroupName]=\"headerIndex\"\n >\n <td class=\"gio-form-headers__table__header-row__td-key\">\n <div class=\"gio-form-headers__table__header-row__td-key__field\">\n <textarea\n formControlName=\"key\"\n matInput\n placeholder=\"Name...\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n [matAutocomplete]=\"headerNamesAutocomplete\"\n ></textarea>\n </div>\n <mat-error *ngIf=\"control.get('key')?.hasError('pattern')\">\n Header name must not contain spaces. (RegExp: {{ control.get('key')?.getError('pattern')?.requiredPattern }})\n </mat-error>\n <mat-autocomplete #headerNamesAutocomplete=\"matAutocomplete\">\n <mat-option *ngFor=\"let headerName of getFilteredHeaderNames(headerIndex, control.value) | async\" [value]=\"headerName\">{{\n headerName\n }}</mat-option>\n </mat-autocomplete>\n </td>\n <td class=\"gio-form-headers__table__header-row__td-value\">\n <div class=\"gio-form-headers__table__header-row__td-value__field\">\n <textarea formControlName=\"value\" matInput placeholder=\"Value...\" cdkTextareaAutosize cdkAutosizeMinRows=\"1\"></textarea>\n </div>\n <button\n class=\"gio-form-headers__table__header-row__td-value__button\"\n *ngIf=\"headersFormArray.controls.length - 1 !== headerIndex\"\n mat-icon-button\n aria-label=\"Delete\"\n (click)=\"onDeleteHeader(headerIndex)\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [".gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:block;overflow:hidden}.label{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-left:10px;color:#7a7b80}.label:empty{display:none}.gio-form-headers__table{width:100%}.gio-form-headers__table__header-row__td-key,.gio-form-headers__table__header-row__td-value{position:relative;width:50%}.gio-form-headers__table__header-row__td-key__field,.gio-form-headers__table__header-row__td-value__field{display:flex;overflow:hidden;width:100%;min-height:32px;flex-direction:column;justify-content:center;padding-bottom:0}.gio-form-headers__table__header-row__td-key__field textarea,.gio-form-headers__table__header-row__td-value__field textarea{overflow:auto;width:100%;height:16px;padding:0;border:none;background:transparent;box-shadow:none;outline:none;resize:none;font-size:14px;font-weight:400;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.gio-form-headers__table__header-row__td-key__field:focus-within,.gio-form-headers__table__header-row__td-value__field:focus-within{z-index:100;height:auto;background-color:#fff}.gio-form-headers__table__header-row__td-key__field:focus-within *,.gio-form-headers__table__header-row__td-value__field:focus-within *{max-height:none}.gio-form-headers__table__header-row__td-key__button,.gio-form-headers__table__header-row__td-value__button{position:absolute;top:3px;right:3px;display:none}.gio-form-headers__table__header-row__td-remove{width:32px;height:32px;padding:0}.gio-form-headers__table__header-row:hover .gio-form-headers__table__header-row__td-value__button{z-index:110;display:block;background-color:#fff;opacity:.9}:host(.disabled) .label{color:#d3d5dc}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i6.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i9.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
246
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GioFormHeadersComponent, decorators: [{
|
|
247
|
-
type: Component,
|
|
248
|
-
args: [{ selector: 'gio-form-headers', providers: [
|
|
249
|
-
{
|
|
250
|
-
provide: NG_VALUE_ACCESSOR,
|
|
251
|
-
useExisting: forwardRef(() => GioFormHeadersComponent),
|
|
252
|
-
multi: true,
|
|
253
|
-
},
|
|
254
|
-
{
|
|
255
|
-
provide: NG_VALIDATORS,
|
|
256
|
-
useExisting: forwardRef(() => GioFormHeadersComponent),
|
|
257
|
-
multi: true,
|
|
258
|
-
},
|
|
259
|
-
], template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"label\"><ng-content select=\"gio-form-headers-label\"></ng-content></div>\n<table class=\"gio-form-headers__table gio-table-light\" [class.disabled]=\"disabled\" [formGroup]=\"mainForm\">\n <thead>\n <tr>\n <th>KEY</th>\n <th>VALUE</th>\n </tr>\n </thead>\n <tbody formArrayName=\"headers\">\n <tr\n *ngFor=\"let control of headersFormArray.controls; index as headerIndex\"\n class=\"gio-form-headers__table__header-row\"\n [formGroupName]=\"headerIndex\"\n >\n <td class=\"gio-form-headers__table__header-row__td-key\">\n <div class=\"gio-form-headers__table__header-row__td-key__field\">\n <textarea\n formControlName=\"key\"\n matInput\n placeholder=\"Name...\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n [matAutocomplete]=\"headerNamesAutocomplete\"\n ></textarea>\n </div>\n <mat-error *ngIf=\"control.get('key')?.hasError('pattern')\">\n Header name must not contain spaces. (RegExp: {{ control.get('key')?.getError('pattern')?.requiredPattern }})\n </mat-error>\n <mat-autocomplete #headerNamesAutocomplete=\"matAutocomplete\">\n <mat-option *ngFor=\"let headerName of getFilteredHeaderNames(headerIndex, control.value) | async\" [value]=\"headerName\">{{\n headerName\n }}</mat-option>\n </mat-autocomplete>\n </td>\n <td class=\"gio-form-headers__table__header-row__td-value\">\n <div class=\"gio-form-headers__table__header-row__td-value__field\">\n <textarea formControlName=\"value\" matInput placeholder=\"Value...\" cdkTextareaAutosize cdkAutosizeMinRows=\"1\"></textarea>\n </div>\n <button\n class=\"gio-form-headers__table__header-row__td-value__button\"\n *ngIf=\"headersFormArray.controls.length - 1 !== headerIndex\"\n mat-icon-button\n aria-label=\"Delete\"\n (click)=\"onDeleteHeader(headerIndex)\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [".gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:block;overflow:hidden}.label{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-left:10px;color:#7a7b80}.label:empty{display:none}.gio-form-headers__table{width:100%}.gio-form-headers__table__header-row__td-key,.gio-form-headers__table__header-row__td-value{position:relative;width:50%}.gio-form-headers__table__header-row__td-key__field,.gio-form-headers__table__header-row__td-value__field{display:flex;overflow:hidden;width:100%;min-height:32px;flex-direction:column;justify-content:center;padding-bottom:0}.gio-form-headers__table__header-row__td-key__field textarea,.gio-form-headers__table__header-row__td-value__field textarea{overflow:auto;width:100%;height:16px;padding:0;border:none;background:transparent;box-shadow:none;outline:none;resize:none;font-size:14px;font-weight:400;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.gio-form-headers__table__header-row__td-key__field:focus-within,.gio-form-headers__table__header-row__td-value__field:focus-within{z-index:100;height:auto;background-color:#fff}.gio-form-headers__table__header-row__td-key__field:focus-within *,.gio-form-headers__table__header-row__td-value__field:focus-within *{max-height:none}.gio-form-headers__table__header-row__td-key__button,.gio-form-headers__table__header-row__td-value__button{position:absolute;top:3px;right:3px;display:none}.gio-form-headers__table__header-row__td-remove{width:32px;height:32px;padding:0}.gio-form-headers__table__header-row:hover .gio-form-headers__table__header-row__td-value__button{z-index:110;display:block;background-color:#fff;opacity:.9}:host(.disabled) .label{color:#d3d5dc}\n"] }]
|
|
260
|
-
}], ctorParameters: function () { return [{ type: i1.FocusMonitor }, { type: i0.ElementRef }]; }, propDecorators: { headerFieldMapper: [{
|
|
261
|
-
type: Input
|
|
262
|
-
}], disabled: [{
|
|
263
|
-
type: HostBinding,
|
|
264
|
-
args: ['class.disabled']
|
|
265
|
-
}] } });
|
|
266
|
-
const removeLastEmptyHeader = (headers) => {
|
|
267
|
-
const lastHeader = headers[headers.length - 1];
|
|
268
|
-
if (lastHeader && isEmpty(lastHeader.key) && isEmpty(lastHeader.value)) {
|
|
269
|
-
return dropRight(headers);
|
|
270
|
-
}
|
|
271
|
-
return headers;
|
|
272
|
-
};
|
|
273
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0taGVhZGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWhlYWRlcnMvZ2lvLWZvcm0taGVhZGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWhlYWRlcnMvZ2lvLWZvcm0taGVhZGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUFFLFNBQVMsRUFBYyxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBR0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGlCQUFpQixFQUdqQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7QUFTdEMsTUFBTSxZQUFZLEdBQUc7SUFDbkIsUUFBUTtJQUNSLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixrQ0FBa0M7SUFDbEMsOEJBQThCO0lBQzlCLDhCQUE4QjtJQUM5Qiw2QkFBNkI7SUFDN0IsK0JBQStCO0lBQy9CLHdCQUF3QjtJQUN4QixnQ0FBZ0M7SUFDaEMsK0JBQStCO0lBQy9CLEtBQUs7SUFDTCxPQUFPO0lBQ1AsZUFBZTtJQUNmLGVBQWU7SUFDZixZQUFZO0lBQ1oscUJBQXFCO0lB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Q0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDdEUsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDM0I7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBVbnR5cGVkRm9ybUFycmF5LFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFVudHlwZWRGb3JtR3JvdXAsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRyb3BSaWdodCwgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgSGVhZGVyID0geyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9O1xuXG5leHBvcnQgdHlwZSBGb3JtSGVhZGVyRmllbGRNYXBwZXIgPSB7XG4gIGtleU5hbWU6IHN0cmluZztcbiAgdmFsdWVOYW1lOiBzdHJpbmc7XG59O1xuXG5jb25zdCBIRUFERVJfTkFNRVMgPSBbXG4gICdBY2NlcHQnLFxuICAnQWNjZXB0LUNoYXJzZXQnLFxuICAnQWNjZXB0LUVuY29kaW5nJyxcbiAgJ0FjY2VwdC1MYW5ndWFnZScsXG4gICdBY2NlcHQtUmFuZ2VzJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLFxuICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcycsXG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLFxuICAnQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMnLFxuICAnQWNjZXNzLUNvbnRyb2wtTWF4LUFnZScsXG4gICdBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRlcnMnLFxuICAnQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1NZXRob2QnLFxuICAnQWdlJyxcbiAgJ0FsbG93JyxcbiAgJ0F1dGhvcml6YXRpb24nLFxuICAnQ2FjaGUtQ29udHJvbCcsXG4gICdDb25uZWN0aW9uJyxcbiAgJ0NvbnRlbnQtRGlzcG9zaXRpb24nLFxuICAnQ29udGVudC1FbmNvZGluZycsXG4gICdDb250ZW50LUlEJyxcbiAgJ0NvbnRlbnQtTGFuZ3VhZ2UnLFxuICAnQ29udGVudC1MZW5ndGgnLFxuICAnQ29udGVudC1Mb2NhdGlvbicsXG4gICdDb250ZW50LU1ENScsXG4gICdDb250ZW50LVJhbmdlJyxcbiAgJ0NvbnRlbnQtVHlwZScsXG4gICdDb29raWUnLFxuICAnRGF0ZScsXG4gICdFVGFnJyxcbiAgJ0V4cGlyZXMnLFxuICAnRXhwZWN0JyxcbiAgJ0ZvcndhcmRlZCcsXG4gICdGcm9tJyxcbiAgJ0hvc3QnLFxuICAnSWYtTWF0Y2gnLFxuICAnSWYtTW9kaWZpZWQtU2luY2UnLFxuICAnSWYtTm9uZS1NYXRjaCcsXG4gICdJZi1Vbm1vZGlmaWVkLVNpbmNlJyxcbiAgJ0tlZXAtQWxpdmUnLFxuICAnTGFzdC1Nb2RpZmllZCcsXG4gICdMb2NhdGlvbicsXG4gICdMaW5rJyxcbiAgJ01heC1Gb3J3YXJkcycsXG4gICdNSU1FLVZlcnNpb24nLFxuICAnT3JpZ2luJyxcbiAgJ1ByYWdtYScsXG4gICdQcm94eS1BdXRoZW50aWNhdGUnLFxuICAnUHJveHktQXV0aG9yaXphdGlvbicsXG4gICdQcm94eS1Db25uZWN0aW9uJyxcbiAgJ1JhbmdlJyxcbiAgJ1JlZmVyZXInLFxuICAnUmV0cnktQWZ0ZXInLFxuICAnU2VydmVyJyxcbiAgJ1NldC1Db29raWUnLFxuICAnU2V0LUNvb2tpZTInLFxuICAnVEUnLFxuICAnVHJhaWxlcicsXG4gICdUcmFuc2Zlci1FbmNvZGluZycsXG4gICdVcGdyYWRlJyxcbiAgJ1VzZXItQWdlbnQnLFxuICAnVmFyeScsXG4gICdWaWEnLFxuICAnV2FybmluZycsXG4gICdXV1ctQXV0aGVudGljYXRlJyxcbiAgJ1gtRm9yd2FyZGVkLUZvcicsXG4gICdYLUZvcndhcmRlZC1Qcm90bycsXG4gICdYLUZvcndhcmRlZC1TZXJ2ZXInLFxuICAnWC1Gb3J3YXJkZWQtSG9zdCcsXG4gICdYLUZvcndhcmRlZC1Qb3J0JyxcbiAgJ1gtRm9yd2FyZGVkLVByZWZpeCcsXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tZm9ybS1oZWFkZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1mb3JtLWhlYWRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tZm9ybS1oZWFkZXJzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR2lvRm9ybUhlYWRlcnNDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR2lvRm9ybUhlYWRlcnNDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvRm9ybUhlYWRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVhZGVyRmllbGRNYXBwZXI6IEZvcm1IZWFkZXJGaWVsZE1hcHBlciA9IHtcbiAgICBrZXlOYW1lOiAna2V5JyxcbiAgICB2YWx1ZU5hbWU6ICd2YWx1ZScsXG4gIH07XG5cbiAgcHVibGljIG1haW5Gb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBwdWJsaWMgaGVhZGVyc0Zvcm1BcnJheSA9IG5ldyBVbnR5cGVkRm9ybUFycmF5KFtcbiAgICBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICBrZXk6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucGF0dGVybignXlxcXFxTKiQnKSksXG4gICAgICB2YWx1ZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyksXG4gICAgfSksXG4gIF0pO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKVxuICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIGhlYWRlcnM6IEhlYWRlcltdID0gW107XG5cbiAgcHJpdmF0ZSBfb25DaGFuZ2U6IChfaGVhZGVyczogSGVhZGVyW10gfCBudWxsKSA9PiB2b2lkID0gKCkgPT4gKHt9KTtcblxuICBwcml2YXRlIF9vblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiAoe30pO1xuXG4gIHByaXZhdGUgZmlsdGVyZWRIZWFkZXJOYW1lczogT2JzZXJ2YWJsZTxzdHJpbmdbXT5bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZm06IEZvY3VzTW9uaXRvciwgcHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZikge1xuICAgIHRoaXMubWFpbkZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnNGb3JtQXJyYXksXG4gICAgfSk7XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPltdIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhlYWRlcnMgPSBbLi4uKHZhbHVlID8/IFtdKV0ubWFwKChoZWFkZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleTogaGVhZGVyW3RoaXMuaGVhZGVyRmllbGRNYXBwZXIua2V5TmFtZV0sXG4gICAgICAgIHZhbHVlOiBoZWFkZXJbdGhpcy5oZWFkZXJGaWVsZE1hcHBlci52YWx1ZU5hbWVdLFxuICAgICAgfTtcbiAgICB9KTtcbiAgICB0aGlzLmluaXRIZWFkZXJzRm9ybSgpO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChoZWFkZXJzOiB1bmtub3duKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGVhZGVyRmllbGRNYXBwZXIpIHtcbiAgICAgIHRoaXMuX29uQ2hhbmdlID0gKGhlYWRlcnM6IEhlYWRlcltdIHwgbnVsbCkgPT4gZm4odGhpcy50b0hlYWRlcnMoaGVhZGVycykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0hlYWRlcnMoaGVhZGVyczogSGVhZGVyW10gfCBudWxsKSB7XG4gICAgcmV0dXJuIFsuLi4oaGVhZGVycyA/PyBbXSldLm1hcChoZWFkZXIgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW3RoaXMuaGVhZGVyRmllbGRNYXBwZXIua2V5TmFtZV06IGhlYWRlci5rZXksXG4gICAgICAgIFt0aGlzLmhlYWRlckZpZWxkTWFwcGVyLnZhbHVlTmFtZV06IGhlYWRlci52YWx1ZSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNEaXNhYmxlZCA9PT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgLy8gZG8gbm90aGluZyBpZiB0aGUgZGlzYWJsZWQgc3RhdGUgaXMgbm90IGNoYW5nZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5oZWFkZXJzRm9ybUFycmF5LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5yZW1vdmVMYXN0SGVhZGVyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaGVhZGVyc0Zvcm1BcnJheS5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIHRoaXMuYWRkRW1wdHlIZWFkZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBXaGVuIHVzZXIgc3RhcnQgdG8gY29tcGxldGUgbGFzdCBoZWFkZXIgYWRkIG5ldyBlbXB0eSBvbmUgYSB0aGUgZW5kXG4gICAgdGhpcy5oZWFkZXJzRm9ybUFycmF5Py52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoaGVhZGVycyA9PiBoZWFkZXJzLmxlbmd0aCA+IDAgJiYgdGhpcy5fb25DaGFuZ2UocmVtb3ZlTGFzdEVtcHR5SGVhZGVyKGhlYWRlcnMpKSksXG4gICAgICAgIHRhcCgoaGVhZGVyczogSGVhZGVyW10pID0+IHtcbiAgICAgICAgICBpZiAoaGVhZGVycy5sZW5ndGggPiAwICYmIChoZWFkZXJzW2hlYWRlcnMubGVuZ3RoIC0gMV0ua2V5ICE9PSAnJyB8fCBoZWFkZXJzW2hlYWRlcnMubGVuZ3RoIC0gMV0udmFsdWUgIT09ICcnKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRFbXB0eUhlYWRlcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmZtLm1vbml0b3IodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0cnVlKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5pdEhlYWRlcnNGb3JtKCk6IHZvaWQge1xuICAgIC8vIENsZWFyIGFsbCBwcmV2aW91cyBoZWFkZXJzXG4gICAgdGhpcy5oZWFkZXJzRm9ybUFycmF5LmNsZWFyKCk7XG5cbiAgICAvLyBQb3B1bGF0ZSBoZWFkZXJzIGFycmF5IGZyb20gaGVhZGVyc1xuICAgIHRoaXMuaGVhZGVycy5mb3JFYWNoKCh7IGtleSwgdmFsdWUgfSwgaGVhZGVySW5kZXgpID0+IHtcbiAgICAgIHRoaXMuaGVhZGVyc0Zvcm1BcnJheS5wdXNoKFxuICAgICAgICBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICAgICAga2V5OiB0aGlzLmluaXRLZXlGb3JtQ29udHJvbChrZXksIGhlYWRlckluZGV4KSxcbiAgICAgICAgICB2YWx1ZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9KSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIGFkZCBvbmUgZW1wdHkgaGVhZGVyIGEgdGhlIGVuZFxuICAgIHRoaXMuYWRkRW1wdHlIZWFkZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWx0ZXJlZEhlYWRlck5hbWVzKGhlYWRlckluZGV4OiBudW1iZXIsIGhlYWRlcjogSGVhZGVyKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgIGlmICghdGhpcy5maWx0ZXJlZEhlYWRlck5hbWVzW2hlYWRlckluZGV4XSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRIZWFkZXJOYW1lc1toZWFkZXJJbmRleF07XG4gICAgfVxuICAgIGlmIChoZWFkZXIua2V5ICE9IG51bGwgJiYgaGVhZGVyLmtleSAhPSAnJykge1xuICAgICAgdGhpcy5maWx0ZXJlZEhlYWRlck5hbWVzW2hlYWRlckluZGV4XSA9IG9mKGhlYWRlci5rZXkpLnBpcGUobWFwKHZhbHVlID0+IHRoaXMuX2ZpbHRlcih2YWx1ZSkpKTtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcmVkSGVhZGVyTmFtZXNbaGVhZGVySW5kZXhdO1xuICAgIH1cbiAgICByZXR1cm4gb2YoSEVBREVSX05BTUVTKTtcbiAgfVxuXG4gIC8vIEZyb20gVmFsaWRhdG9yIGludGVyZmFjZVxuICBwdWJsaWMgdmFsaWRhdGUoX2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAodGhpcy5oZWFkZXJzRm9ybUFycmF5LmludmFsaWQpIHtcbiAgICAgIHJldHVybiB7IGludmFsaWQ6IHRydWUgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGluaXRLZXlGb3JtQ29udHJvbChrZXk6IHN0cmluZywgaGVhZGVySW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHsgdmFsdWU6IGtleSwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSwgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeXFxcXFMqJCcpKTtcbiAgICBjb25zdCBmaWx0ZXJlZEtleXMgPSBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLl9maWx0ZXIodmFsdWUpKSxcbiAgICApO1xuICAgIHRoaXMuZmlsdGVyZWRIZWFkZXJOYW1lcy5zcGxpY2UoaGVhZGVySW5kZXgsIDAsIGZpbHRlcmVkS2V5cyk7XG4gICAgcmV0dXJuIGNvbnRyb2w7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGVIZWFkZXIoaGVhZGVySW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgIHRoaXMuaGVhZGVyc0Zvcm1BcnJheS5yZW1vdmVBdChoZWFkZXJJbmRleCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEVtcHR5SGVhZGVyKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5oZWFkZXJzRm9ybUFycmF5LnB1c2goXG4gICAgICBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICAgIGtleTogdGhpcy5pbml0S2V5Rm9ybUNvbnRyb2woJycsIHRoaXMuaGVhZGVyc0Zvcm1BcnJheS5sZW5ndGgpLFxuICAgICAgICB2YWx1ZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyksXG4gICAgICB9KSxcbiAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxhc3RIZWFkZXIoKSB7XG4gICAgdGhpcy5oZWFkZXJzRm9ybUFycmF5LnJlbW92ZUF0KHRoaXMuaGVhZGVyc0Zvcm1BcnJheS5sZW5ndGggLSAxLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cblxuICBwcml2YXRlIF9maWx0ZXIodmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIEhFQURFUl9OQU1FUy5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSk7XG4gIH1cbn1cblxuY29uc3QgcmVtb3ZlTGFzdEVtcHR5SGVhZGVyID0gKGhlYWRlcnM6IEhlYWRlcltdKSA9PiB7XG4gIGNvbnN0IGxhc3RIZWFkZXIgPSBoZWFkZXJzW2hlYWRlcnMubGVuZ3RoIC0gMV07XG5cbiAgaWYgKGxhc3RIZWFkZXIgJiYgaXNFbXB0eShsYXN0SGVhZGVyLmtleSkgJiYgaXNFbXB0eShsYXN0SGVhZGVyLnZhbHVlKSkge1xuICAgIHJldHVybiBkcm9wUmlnaHQoaGVhZGVycyk7XG4gIH1cbiAgcmV0dXJuIGhlYWRlcnM7XG59O1xuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG48ZGl2IGNsYXNzPVwibGFiZWxcIj48bmctY29udGVudCBzZWxlY3Q9XCJnaW8tZm9ybS1oZWFkZXJzLWxhYmVsXCI+PC9uZy1jb250ZW50PjwvZGl2PlxuPHRhYmxlIGNsYXNzPVwiZ2lvLWZvcm0taGVhZGVyc19fdGFibGUgZ2lvLXRhYmxlLWxpZ2h0XCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCIgW2Zvcm1Hcm91cF09XCJtYWluRm9ybVwiPlxuICA8dGhlYWQ+XG4gICAgPHRyPlxuICAgICAgPHRoPktFWTwvdGg+XG4gICAgICA8dGg+VkFMVUU8L3RoPlxuICAgIDwvdHI+XG4gIDwvdGhlYWQ+XG4gIDx0Ym9keSBmb3JtQXJyYXlOYW1lPVwiaGVhZGVyc1wiPlxuICAgIDx0clxuICAgICAgKm5nRm9yPVwibGV0IGNvbnRyb2wgb2YgaGVhZGVyc0Zvcm1BcnJheS5jb250cm9sczsgaW5kZXggYXMgaGVhZGVySW5kZXhcIlxuICAgICAgY2xhc3M9XCJnaW8tZm9ybS1oZWFkZXJzX190YWJsZV9faGVhZGVyLXJvd1wiXG4gICAgICBbZm9ybUdyb3VwTmFtZV09XCJoZWFkZXJJbmRleFwiXG4gICAgPlxuICAgICAgPHRkIGNsYXNzPVwiZ2lvLWZvcm0taGVhZGVyc19fdGFibGVfX2hlYWRlci1yb3dfX3RkLWtleVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2lvLWZvcm0taGVhZGVyc19fdGFibGVfX2hlYWRlci1yb3dfX3RkLWtleV9fZmllbGRcIj5cbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImtleVwiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lLi4uXCJcbiAgICAgICAgICAgIGNka1RleHRhcmVhQXV0b3NpemVcbiAgICAgICAgICAgIGNka0F1dG9zaXplTWluUm93cz1cIjFcIlxuICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJoZWFkZXJOYW1lc0F1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiY29udHJvbC5nZXQoJ2tleScpPy5oYXNFcnJvcigncGF0dGVybicpXCI+XG4gICAgICAgICAgSGVhZGVyIG5hbWUgbXVzdCBub3QgY29udGFpbiBzcGFjZXMuIChSZWdFeHA6IHt7IGNvbnRyb2wuZ2V0KCdrZXknKT8uZ2V0RXJyb3IoJ3BhdHRlcm4nKT8ucmVxdWlyZWRQYXR0ZXJuIH19KVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2hlYWRlck5hbWVzQXV0b2NvbXBsZXRlPVwibWF0QXV0b2NvbXBsZXRlXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGhlYWRlck5hbWUgb2YgZ2V0RmlsdGVyZWRIZWFkZXJOYW1lcyhoZWFkZXJJbmRleCwgY29udHJvbC52YWx1ZSkgfCBhc3luY1wiIFt2YWx1ZV09XCJoZWFkZXJOYW1lXCI+e3tcbiAgICAgICAgICAgIGhlYWRlck5hbWVcbiAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgPC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cImdpby1mb3JtLWhlYWRlcnNfX3RhYmxlX19oZWFkZXItcm93X190ZC12YWx1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2lvLWZvcm0taGVhZGVyc19fdGFibGVfX2hlYWRlci1yb3dfX3RkLXZhbHVlX19maWVsZFwiPlxuICAgICAgICAgIDx0ZXh0YXJlYSBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiVmFsdWUuLi5cIiBjZGtUZXh0YXJlYUF1dG9zaXplIGNka0F1dG9zaXplTWluUm93cz1cIjFcIj48L3RleHRhcmVhPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiZ2lvLWZvcm0taGVhZGVyc19fdGFibGVfX2hlYWRlci1yb3dfX3RkLXZhbHVlX19idXR0b25cIlxuICAgICAgICAgICpuZ0lmPVwiaGVhZGVyc0Zvcm1BcnJheS5jb250cm9scy5sZW5ndGggLSAxICE9PSBoZWFkZXJJbmRleFwiXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkRlbGV0ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlSGVhZGVyKGhlYWRlckluZGV4KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpjYW5jZWxcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=
|