@seniorsistemas/data-seniorx-core 2.3.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/constants/autocomplete.const.d.ts +4 -0
- package/core/constants/context-selector.const.d.ts +1 -0
- package/core/constants/gantt.const.d.ts +7 -0
- package/core/constants/hyperlink.const.d.ts +1 -0
- package/core/constants/inline-edit.const.d.ts +4 -0
- package/core/constants/kanban.const.d.ts +2 -0
- package/core/constants/pin-code-field.const.d.ts +5 -0
- package/core/constants/rating-scale.const.d.ts +1 -0
- package/core/constants/spotlight.const.d.ts +8 -0
- package/core/constants/star-rating.const.d.ts +4 -0
- package/core/constants/stepper.const.d.ts +1 -0
- package/core/constants/tiered-menu.const.d.ts +3 -0
- package/core/types/autocomplete.type.d.ts +9 -0
- package/core/types/chat.type.d.ts +12 -0
- package/core/types/checkbox-list.type.d.ts +12 -0
- package/core/types/gantt.type.d.ts +22 -0
- package/core/types/grid-menu.type.d.ts +13 -0
- package/core/types/hyperlink.type.d.ts +1 -0
- package/core/types/image-cropper.type.d.ts +20 -0
- package/core/types/inline-edit.type.d.ts +26 -0
- package/core/types/kanban.type.d.ts +36 -0
- package/core/types/panel.type.d.ts +16 -0
- package/core/types/profile-picture-picker.type.d.ts +9 -0
- package/core/types/rating-scale.type.d.ts +5 -0
- package/core/types/select-button.type.d.ts +1 -0
- package/core/types/spotlight.type.d.ts +34 -0
- package/core/types/star-rating.type.d.ts +1 -0
- package/core/types/stepper.type.d.ts +20 -0
- package/core/types/table-column.type.d.ts +3 -1
- package/core/types/table-options.type.d.ts +8 -2
- package/core/types/table.type.d.ts +1 -1
- package/core/types/tiered-menu.type.d.ts +16 -0
- package/core/types/tree.type.d.ts +25 -0
- package/core/types/workspace-switch.type.d.ts +6 -0
- package/core/utils/body-scroll.util.d.ts +2 -0
- package/core/utils/roving-focus.util.d.ts +2 -0
- package/core/utils/selection.util.d.ts +3 -0
- package/core/utils/tree.util.d.ts +4 -0
- package/esm2022/core/constants/autocomplete.const.mjs +5 -0
- package/esm2022/core/constants/context-selector.const.mjs +2 -0
- package/esm2022/core/constants/gantt.const.mjs +7 -0
- package/esm2022/core/constants/hyperlink.const.mjs +2 -1
- package/esm2022/core/constants/inline-edit.const.mjs +5 -0
- package/esm2022/core/constants/kanban.const.mjs +3 -0
- package/esm2022/core/constants/pin-code-field.const.mjs +6 -0
- package/esm2022/core/constants/rating-scale.const.mjs +2 -0
- package/esm2022/core/constants/spotlight.const.mjs +9 -0
- package/esm2022/core/constants/star-rating.const.mjs +5 -0
- package/esm2022/core/constants/stepper.const.mjs +2 -0
- package/esm2022/core/constants/table.const.mjs +2 -2
- package/esm2022/core/constants/tiered-menu.const.mjs +4 -0
- package/esm2022/core/types/autocomplete.type.mjs +2 -0
- package/esm2022/core/types/chat.type.mjs +2 -0
- package/esm2022/core/types/checkbox-list.type.mjs +2 -0
- package/esm2022/core/types/gantt.type.mjs +2 -0
- package/esm2022/core/types/grid-menu.type.mjs +2 -0
- package/esm2022/core/types/hyperlink.type.mjs +1 -1
- package/esm2022/core/types/image-cropper.type.mjs +2 -0
- package/esm2022/core/types/inline-edit.type.mjs +2 -0
- package/esm2022/core/types/kanban.type.mjs +2 -0
- package/esm2022/core/types/panel.type.mjs +9 -0
- package/esm2022/core/types/profile-picture-picker.type.mjs +2 -0
- package/esm2022/core/types/rating-scale.type.mjs +2 -0
- package/esm2022/core/types/select-button.type.mjs +1 -1
- package/esm2022/core/types/spotlight.type.mjs +2 -0
- package/esm2022/core/types/star-rating.type.mjs +2 -0
- package/esm2022/core/types/stepper.type.mjs +7 -0
- package/esm2022/core/types/table-column.type.mjs +1 -1
- package/esm2022/core/types/table-options.type.mjs +1 -1
- package/esm2022/core/types/table.type.mjs +1 -1
- package/esm2022/core/types/tiered-menu.type.mjs +2 -0
- package/esm2022/core/types/tree.type.mjs +2 -0
- package/esm2022/core/types/workspace-switch.type.mjs +2 -0
- package/esm2022/core/utils/body-scroll.util.mjs +19 -0
- package/esm2022/core/utils/combobox.util.mjs +3 -2
- package/esm2022/core/utils/roving-focus.util.mjs +20 -0
- package/esm2022/core/utils/selection.util.mjs +13 -0
- package/esm2022/core/utils/string.util.mjs +8 -3
- package/esm2022/core/utils/tree.util.mjs +23 -0
- package/esm2022/features/accordion/accordion.component.mjs +2 -2
- package/esm2022/features/accordion/{accordion-item.component.mjs → components/accordion-item/accordion-item.component.mjs} +7 -7
- package/esm2022/features/autocomplete/autocomplete.component.mjs +501 -0
- package/esm2022/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +30 -0
- package/esm2022/features/breadcrumb/breadcrumb.component.mjs +2 -2
- package/esm2022/features/card-list/card/card.component.mjs +63 -99
- package/esm2022/features/chat/chat.component.mjs +126 -0
- package/esm2022/features/checkbox-list/checkbox-list.component.mjs +125 -0
- package/esm2022/features/combobox/combobox.component.mjs +20 -8
- package/esm2022/features/context-selector/context-selector.component.mjs +198 -0
- package/esm2022/features/filters/filters.component.mjs +1 -1
- package/esm2022/features/gantt/components/gantt-side-table/gantt-side-table.component.mjs +17 -0
- package/esm2022/features/gantt/gantt-date.utils.mjs +97 -0
- package/esm2022/features/gantt/gantt.component.mjs +89 -0
- package/esm2022/features/gantt/gantt.engine.mjs +662 -0
- package/esm2022/features/grid-menu/grid-menu.component.mjs +104 -0
- package/esm2022/features/hyperlink/hyperlink.component.mjs +7 -4
- package/esm2022/features/icon-picker/icon-picker.component.mjs +3 -3
- package/esm2022/features/image-cropper/image-cropper.component.mjs +218 -0
- package/esm2022/features/image-cropper/services/image-cropper.service.mjs +50 -0
- package/esm2022/features/infinite-scroll/infinite-scroll.directive.mjs +89 -0
- package/esm2022/features/info-sign/info-sign.component.mjs +3 -3
- package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +38 -0
- package/esm2022/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +29 -0
- package/esm2022/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.mjs +29 -0
- package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +131 -0
- package/esm2022/features/inline-edit/fields/inline-edit-field.mjs +17 -0
- package/esm2022/features/inline-edit/fields/inline-edit-number-field.mjs +15 -0
- package/esm2022/features/inline-edit/fields/inline-edit-text-field.mjs +11 -0
- package/esm2022/features/inline-edit/fields/inline-edit-textarea-field.mjs +15 -0
- package/esm2022/features/inline-edit/inline-edit.component.mjs +27 -0
- package/esm2022/features/interactive-content/interactive-content.directive.mjs +140 -0
- package/esm2022/features/kanban/components/kanban-column/kanban-column.component.mjs +88 -0
- package/esm2022/features/kanban/components/kanban-item/kanban-item.component.mjs +72 -0
- package/esm2022/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +19 -0
- package/esm2022/features/kanban/directives/kanban-template.directive.mjs +22 -0
- package/esm2022/features/kanban/kanban.component.mjs +198 -0
- package/esm2022/features/kanban/services/kanban-event.service.mjs +27 -0
- package/esm2022/features/loading-state/loading-state.component.mjs +3 -62
- package/esm2022/features/mouse-events/directives/double-click.directive.mjs +34 -0
- package/esm2022/features/mouse-events/directives/long-press.directive.mjs +61 -0
- package/esm2022/features/paginator/paginator.component.mjs +8 -3
- package/esm2022/features/panel/panel.component.mjs +43 -11
- package/esm2022/features/pin-code-field/pin-code-field.component.mjs +234 -0
- package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +330 -0
- package/esm2022/features/rating-scale/rating-scale.component.mjs +86 -0
- package/esm2022/features/row-card-list/row-card/row-card.component.mjs +3 -3
- package/esm2022/features/scaffold/scaffold.component.mjs +4 -6
- package/esm2022/features/select-button/select-button.component.mjs +7 -4
- package/esm2022/features/speech-recognition/services/speech-recognition.service.mjs +148 -0
- package/esm2022/features/speech-recognition/services/text-to-speech.service.mjs +88 -0
- package/esm2022/features/speech-recognition/speech-recognition.component.mjs +243 -0
- package/esm2022/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.mjs +521 -0
- package/esm2022/features/spotlight/directives/spotlight-step.directive.mjs +38 -0
- package/esm2022/features/spotlight/services/spotlight-tour.service.mjs +179 -0
- package/esm2022/features/spotlight/spotlight.component.mjs +160 -0
- package/esm2022/features/star-rating/star-rating.component.mjs +95 -0
- package/esm2022/features/stepper/stepper.component.mjs +86 -0
- package/esm2022/features/switch/switch.component.mjs +12 -8
- package/esm2022/features/tab/{tab-item.component.mjs → components/tab-item/tab-item.component.mjs} +1 -1
- package/esm2022/features/tab/tab.component.mjs +4 -4
- package/esm2022/features/table/components/table-cell-content.component.mjs +14 -5
- package/esm2022/features/table/table.component.mjs +220 -29
- package/esm2022/features/table/utils/table-data.util.mjs +71 -8
- package/esm2022/features/table/utils/table-layout.util.mjs +21 -1
- package/esm2022/features/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +367 -0
- package/esm2022/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +11 -0
- package/esm2022/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +97 -0
- package/esm2022/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +181 -0
- package/esm2022/features/tiered-menu/directives/tiered-menu.directive.mjs +246 -0
- package/esm2022/features/tiered-menu/services/tiered-menu.event.service.mjs +16 -0
- package/esm2022/features/tiered-menu/services/tiered-menu.global.service.mjs +12 -0
- package/esm2022/features/tiered-menu/services/tiered-menu.service.mjs +49 -0
- package/esm2022/features/tree/components/tree-node-item/tree-node-item.component.mjs +169 -0
- package/esm2022/features/tree/tree.component.mjs +211 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.mjs +41 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.mjs +38 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.mjs +29 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.mjs +29 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.mjs +35 -0
- package/esm2022/features/visual-sql-editor/services/visual-sql-editor-flow.service.mjs +106 -0
- package/esm2022/features/visual-sql-editor/services/visual-sql-editor-state.service.mjs +230 -0
- package/esm2022/features/visual-sql-editor/types/visual-sql-editor.types.mjs +2 -0
- package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.mjs +72 -0
- package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sql.util.mjs +281 -0
- package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-text.util.mjs +37 -0
- package/esm2022/features/visual-sql-editor/utils/visual-sql-editor.constants.mjs +89 -0
- package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +172 -630
- package/esm2022/locales/en.json +351 -3
- package/esm2022/locales/es-CO.json +351 -3
- package/esm2022/locales/pt.json +351 -3
- package/esm2022/providers/features.provider.mjs +40 -4
- package/esm2022/public-api.mjs +56 -3
- package/features/accordion/accordion.component.d.ts +1 -1
- package/features/accordion/{accordion-item.component.d.ts → components/accordion-item/accordion-item.component.d.ts} +1 -1
- package/features/autocomplete/autocomplete.component.d.ts +102 -0
- package/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +11 -0
- package/features/card-list/card/card.component.d.ts +14 -34
- package/features/chat/chat.component.d.ts +31 -0
- package/features/checkbox-list/checkbox-list.component.d.ts +26 -0
- package/features/combobox/combobox.component.d.ts +2 -1
- package/features/context-selector/context-selector.component.d.ts +37 -0
- package/features/gantt/components/gantt-side-table/gantt-side-table.component.d.ts +8 -0
- package/features/gantt/gantt-date.utils.d.ts +36 -0
- package/features/gantt/gantt.component.d.ts +24 -0
- package/features/gantt/gantt.engine.d.ts +52 -0
- package/features/grid-menu/grid-menu.component.d.ts +29 -0
- package/features/hyperlink/hyperlink.component.d.ts +2 -1
- package/features/image-cropper/image-cropper.component.d.ts +43 -0
- package/features/image-cropper/services/image-cropper.service.d.ts +13 -0
- package/features/infinite-scroll/infinite-scroll.directive.d.ts +25 -0
- package/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +13 -0
- package/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.d.ts +13 -0
- package/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.d.ts +13 -0
- package/features/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +37 -0
- package/features/inline-edit/fields/inline-edit-field.d.ts +12 -0
- package/features/inline-edit/fields/inline-edit-number-field.d.ts +9 -0
- package/features/inline-edit/fields/inline-edit-text-field.d.ts +7 -0
- package/features/inline-edit/fields/inline-edit-textarea-field.d.ts +9 -0
- package/features/inline-edit/inline-edit.component.d.ts +13 -0
- package/features/interactive-content/interactive-content.directive.d.ts +31 -0
- package/features/kanban/components/kanban-column/kanban-column.component.d.ts +22 -0
- package/features/kanban/components/kanban-item/kanban-item.component.d.ts +23 -0
- package/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +8 -0
- package/features/kanban/directives/kanban-template.directive.d.ts +10 -0
- package/features/kanban/kanban.component.d.ts +32 -0
- package/features/kanban/services/kanban-event.service.d.ts +15 -0
- package/features/loading-state/loading-state.component.d.ts +0 -2
- package/features/mouse-events/directives/double-click.directive.d.ts +11 -0
- package/features/mouse-events/directives/long-press.directive.d.ts +14 -0
- package/features/panel/panel.component.d.ts +12 -3
- package/features/pin-code-field/pin-code-field.component.d.ts +44 -0
- package/features/profile-picture-picker/profile-picture-picker.component.d.ts +77 -0
- package/features/rating-scale/rating-scale.component.d.ts +24 -0
- package/features/select-button/select-button.component.d.ts +2 -1
- package/features/speech-recognition/services/speech-recognition.service.d.ts +29 -0
- package/features/speech-recognition/services/text-to-speech.service.d.ts +24 -0
- package/features/speech-recognition/speech-recognition.component.d.ts +50 -0
- package/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.d.ts +59 -0
- package/features/spotlight/directives/spotlight-step.directive.d.ts +13 -0
- package/features/spotlight/services/spotlight-tour.service.d.ts +46 -0
- package/features/spotlight/spotlight.component.d.ts +59 -0
- package/features/star-rating/star-rating.component.d.ts +26 -0
- package/features/stepper/stepper.component.d.ts +23 -0
- package/features/switch/switch.component.d.ts +2 -1
- package/features/tab/tab.component.d.ts +1 -1
- package/features/table/components/table-cell-content.component.d.ts +4 -3
- package/features/table/table.component.d.ts +40 -5
- package/features/table/utils/table-data.util.d.ts +1 -0
- package/features/table/utils/table-layout.util.d.ts +1 -0
- package/features/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +49 -0
- package/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.d.ts +5 -0
- package/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +19 -0
- package/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +26 -0
- package/features/tiered-menu/directives/tiered-menu.directive.d.ts +44 -0
- package/features/tiered-menu/services/tiered-menu.event.service.d.ts +13 -0
- package/features/tiered-menu/services/tiered-menu.global.service.d.ts +7 -0
- package/features/tiered-menu/services/tiered-menu.service.d.ts +14 -0
- package/features/tree/components/tree-node-item/tree-node-item.component.d.ts +37 -0
- package/features/tree/tree.component.d.ts +37 -0
- package/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.d.ts +18 -0
- package/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.d.ts +17 -0
- package/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.d.ts +13 -0
- package/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.d.ts +13 -0
- package/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.d.ts +15 -0
- package/features/visual-sql-editor/services/visual-sql-editor-flow.service.d.ts +26 -0
- package/features/visual-sql-editor/services/visual-sql-editor-state.service.d.ts +72 -0
- package/features/visual-sql-editor/types/visual-sql-editor.types.d.ts +182 -0
- package/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.d.ts +14 -0
- package/features/visual-sql-editor/utils/visual-sql-editor-sql.util.d.ts +81 -0
- package/features/visual-sql-editor/utils/visual-sql-editor-text.util.d.ts +15 -0
- package/features/visual-sql-editor/utils/visual-sql-editor.constants.d.ts +36 -0
- package/features/visual-sql-editor/visual-sql-editor.component.d.ts +37 -199
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs +14883 -6353
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
- package/package.json +8 -8
- package/public-api.d.ts +72 -2
- package/src/locales/en.json +353 -15
- package/src/locales/es-CO.json +352 -14
- package/src/locales/pt.json +352 -14
- package/styles/sdc-global-variables.scss +1 -1
- package/styles.css +1 -1
- /package/features/tab/{tab-item.component.d.ts → components/tab-item/tab-item.component.d.ts} +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { EnumSeverity } from '@seniorsistemas/angular-components/shared';
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
4
3
|
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
+
import { nextSequentialId } from '../../core/utils/id.util';
|
|
5
|
+
import { EnumSeverity } from '../../core/types/panel.type';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@
|
|
7
|
-
import * as i2 from "@
|
|
8
|
-
import * as i3 from "@ngx-translate/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@ngx-translate/core";
|
|
9
9
|
export class PanelComponent {
|
|
10
|
+
contentId = nextSequentialId('sdc-panel-content');
|
|
10
11
|
header = '';
|
|
11
12
|
toggleable = false;
|
|
12
13
|
set collapsed(value) {
|
|
@@ -16,20 +17,51 @@ export class PanelComponent {
|
|
|
16
17
|
return this.$collapsed;
|
|
17
18
|
}
|
|
18
19
|
collapsedChange = new EventEmitter();
|
|
19
|
-
$collapsed = false;
|
|
20
20
|
severity = EnumSeverity.Default;
|
|
21
21
|
borderButtonOptions;
|
|
22
22
|
panelClass = '';
|
|
23
|
-
// Accessibility inputs - permite
|
|
23
|
+
// Accessibility inputs - permite customizacao ou usa defaults com i18n
|
|
24
24
|
ariaLabel;
|
|
25
25
|
ariaLabelledBy;
|
|
26
|
+
$collapsed = false;
|
|
26
27
|
onCollapsedChanged(v) {
|
|
27
28
|
this.$collapsed = v;
|
|
28
29
|
this.collapsedChange.emit(v);
|
|
29
30
|
}
|
|
31
|
+
toggleCollapsed() {
|
|
32
|
+
if (!this.toggleable) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this.onCollapsedChanged(!this.collapsed);
|
|
36
|
+
}
|
|
37
|
+
onBorderButtonClick(event) {
|
|
38
|
+
event.stopPropagation();
|
|
39
|
+
if (this.borderButtonDisabled) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this.borderButtonOptions?.onClick?.(this.severity);
|
|
43
|
+
}
|
|
30
44
|
get panelClasses() {
|
|
31
45
|
return ['sdc-panel', this.panelClass].filter(Boolean).join(' ');
|
|
32
46
|
}
|
|
47
|
+
get severityClass() {
|
|
48
|
+
return `sdc-panel--${this.severity}`;
|
|
49
|
+
}
|
|
50
|
+
get showBorderButton() {
|
|
51
|
+
return this.borderButtonOptions?.visible?.(this.severity) ?? false;
|
|
52
|
+
}
|
|
53
|
+
get borderButtonLabel() {
|
|
54
|
+
return this.borderButtonOptions?.label?.(this.severity) ?? 'platform.datacore.accessibility.panel_toggle';
|
|
55
|
+
}
|
|
56
|
+
get borderButtonTooltip() {
|
|
57
|
+
return this.borderButtonOptions?.tooltip?.(this.severity) ?? null;
|
|
58
|
+
}
|
|
59
|
+
get borderButtonIcon() {
|
|
60
|
+
return this.borderButtonOptions?.icon?.(this.severity) ?? null;
|
|
61
|
+
}
|
|
62
|
+
get borderButtonDisabled() {
|
|
63
|
+
return this.borderButtonOptions?.disabled?.(this.severity) ?? false;
|
|
64
|
+
}
|
|
33
65
|
getToggleAriaLabel() {
|
|
34
66
|
if (this.collapsed) {
|
|
35
67
|
return 'platform.datacore.accessibility.panel_expand';
|
|
@@ -37,11 +69,11 @@ export class PanelComponent {
|
|
|
37
69
|
return 'platform.datacore.accessibility.panel_collapse';
|
|
38
70
|
}
|
|
39
71
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
72
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PanelComponent, isStandalone: true, selector: "sdc-panel", inputs: { header: "header", toggleable: "toggleable", collapsed: "collapsed", severity: "severity", borderButtonOptions: "borderButtonOptions", panelClass: ["class", "panelClass"], ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy" }, outputs: { collapsedChange: "collapsedChange" }, ngImport: i0, template: "<section\n [class]=\"panelClasses\"\n [class.sdc-panel--collapsed]=\"collapsed\"\n [class.sdc-panel--toggleable]=\"toggleable\"\n [class.sdc-panel--with-border-button]=\"showBorderButton\"\n [ngClass]=\"severityClass\"\n [attr.aria-label]=\"(ariaLabel || header) | translate\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-expanded]=\"toggleable ? !collapsed : null\"\n>\n @if (showBorderButton) {\n <button\n type=\"button\"\n class=\"sdc-panel__border-button\"\n [disabled]=\"borderButtonDisabled\"\n [attr.aria-label]=\"borderButtonLabel | translate\"\n [attr.title]=\"borderButtonTooltip ? (borderButtonTooltip | translate) : null\"\n (click)=\"onBorderButtonClick($event)\"\n >\n @if (borderButtonIcon) {\n <i [class]=\"borderButtonIcon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-panel__sr-only\">{{ borderButtonLabel | translate }}</span>\n } @else {\n <span>{{ borderButtonLabel | translate }}</span>\n }\n </button>\n }\n\n @if (header || toggleable) {\n <div class=\"sdc-panel__header\">\n <div class=\"sdc-panel__header-content\">\n @if (header) {\n <span class=\"sdc-panel__title\">{{ header | translate }}</span>\n }\n </div>\n\n @if (toggleable) {\n <button\n type=\"button\"\n class=\"sdc-panel__toggle fas\"\n [ngClass]=\"collapsed ? 'fa-plus' : 'fa-minus'\"\n [attr.aria-controls]=\"contentId\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-label]=\"getToggleAriaLabel() | translate\"\n (click)=\"toggleCollapsed()\"\n >\n <span class=\"sdc-panel__sr-only\">{{ getToggleAriaLabel() | translate }}</span>\n </button>\n }\n </div>\n }\n\n @if (!toggleable || !collapsed) {\n <div\n [id]=\"contentId\"\n class=\"sdc-panel__content\"\n [attr.aria-label]=\"'platform.datacore.accessibility.panel_content' | translate\"\n >\n <div class=\"sdc-panel__body\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"sdc-panel__footer\">\n <ng-content select=\"[sdcFooter]\"></ng-content>\n </div>\n </div>\n }\n</section>\n", styles: [":host{display:block}.sdc-panel{position:relative;display:block;overflow:hidden;background-color:var(--sdc-panel-bg, var(--sdc-surface-bg, #ffffff));border:var(--sdc-panel-border, var(--sdc-surface-border, 1px solid #dedce5));border-radius:var(--sdc-panel-radius, var(--sdc-surface-radius, 4px));box-shadow:var(--sdc-panel-shadow, var(--sdc-surface-shadow, none));padding:var(--sdc-panel-padding, var(--sdc-surface-padding, 22px 22px 20px));transition:var(--sdc-panel-transition, var(--sdc-surface-transition, border-color .25s ease))}.sdc-panel.sdc-panel--success{border-left:4px solid var(--sdc-panel-success, #1f9d55)}.sdc-panel.sdc-panel--info{border-left:4px solid var(--sdc-panel-info, #2563eb)}.sdc-panel.sdc-panel--warn{border-left:4px solid var(--sdc-panel-warn, #d97706)}.sdc-panel.sdc-panel--error{border-left:4px solid var(--sdc-panel-error, #dc2626)}.sdc-panel__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:var(--sdc-panel-header-min-height, var(--sdc-surface-header-min-height, 34px));padding-bottom:var(--sdc-panel-header-padding-bottom, var(--sdc-surface-header-padding-bottom, 20px));border-bottom:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5));color:var(--sdc-panel-title-color, var(--sdc-surface-title-color, #212533))}.sdc-panel--collapsed .sdc-panel__header{padding-bottom:0;border-bottom:none}.sdc-panel__header-content{display:flex;align-items:center;min-width:0}.sdc-panel__title{color:inherit;font-size:var(--sdc-panel-title-font-size, var(--sdc-surface-title-font-size, 14px));font-weight:var(--sdc-panel-title-font-weight, var(--sdc-surface-title-font-weight, 400));line-height:var(--sdc-panel-title-line-height, var(--sdc-surface-title-line-height, 20px))}.sdc-panel__toggle,.sdc-panel__border-button{display:inline-flex;align-items:center;justify-content:center;min-width:var(--sdc-panel-action-size, 24px);min-height:var(--sdc-panel-action-size, 24px);border:none;background:transparent;color:inherit;cursor:pointer}.sdc-panel__toggle{flex:0 0 auto;border-radius:999px}.sdc-panel__toggle:focus-visible{outline:2px solid currentColor;outline-offset:2px}.sdc-panel__border-button{position:absolute;inset-block-start:1rem;inset-inline-start:0;z-index:1;padding:.5rem;border-radius:999px;background:var(--sdc-panel-border-button-bg, #ffffff);box-shadow:0 10px 20px #0f172a1f;transform:translate(-40%)}.sdc-panel__border-button:focus-visible{outline:2px solid currentColor;outline-offset:2px}.sdc-panel__border-button:disabled{cursor:not-allowed;opacity:.56}.sdc-panel__content{padding-top:var(--sdc-panel-content-padding-top, 15px)}.sdc-panel__body{padding:var(--sdc-panel-content-padding, var(--sdc-surface-content-padding, 0))}.sdc-panel__footer{margin-top:var(--sdc-panel-footer-margin-top, var(--sdc-surface-footer-margin-top, 15px));padding-top:var(--sdc-panel-footer-padding-top, var(--sdc-surface-footer-padding-top, 15px));border-top:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5))}.sdc-panel__footer:empty{display:none}.sdc-panel__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
41
73
|
}
|
|
42
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PanelComponent, decorators: [{
|
|
43
75
|
type: Component,
|
|
44
|
-
args: [{ imports: [
|
|
76
|
+
args: [{ imports: [CommonModule, TranslateModule], standalone: true, selector: 'sdc-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<section\n [class]=\"panelClasses\"\n [class.sdc-panel--collapsed]=\"collapsed\"\n [class.sdc-panel--toggleable]=\"toggleable\"\n [class.sdc-panel--with-border-button]=\"showBorderButton\"\n [ngClass]=\"severityClass\"\n [attr.aria-label]=\"(ariaLabel || header) | translate\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-expanded]=\"toggleable ? !collapsed : null\"\n>\n @if (showBorderButton) {\n <button\n type=\"button\"\n class=\"sdc-panel__border-button\"\n [disabled]=\"borderButtonDisabled\"\n [attr.aria-label]=\"borderButtonLabel | translate\"\n [attr.title]=\"borderButtonTooltip ? (borderButtonTooltip | translate) : null\"\n (click)=\"onBorderButtonClick($event)\"\n >\n @if (borderButtonIcon) {\n <i [class]=\"borderButtonIcon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-panel__sr-only\">{{ borderButtonLabel | translate }}</span>\n } @else {\n <span>{{ borderButtonLabel | translate }}</span>\n }\n </button>\n }\n\n @if (header || toggleable) {\n <div class=\"sdc-panel__header\">\n <div class=\"sdc-panel__header-content\">\n @if (header) {\n <span class=\"sdc-panel__title\">{{ header | translate }}</span>\n }\n </div>\n\n @if (toggleable) {\n <button\n type=\"button\"\n class=\"sdc-panel__toggle fas\"\n [ngClass]=\"collapsed ? 'fa-plus' : 'fa-minus'\"\n [attr.aria-controls]=\"contentId\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-label]=\"getToggleAriaLabel() | translate\"\n (click)=\"toggleCollapsed()\"\n >\n <span class=\"sdc-panel__sr-only\">{{ getToggleAriaLabel() | translate }}</span>\n </button>\n }\n </div>\n }\n\n @if (!toggleable || !collapsed) {\n <div\n [id]=\"contentId\"\n class=\"sdc-panel__content\"\n [attr.aria-label]=\"'platform.datacore.accessibility.panel_content' | translate\"\n >\n <div class=\"sdc-panel__body\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"sdc-panel__footer\">\n <ng-content select=\"[sdcFooter]\"></ng-content>\n </div>\n </div>\n }\n</section>\n", styles: [":host{display:block}.sdc-panel{position:relative;display:block;overflow:hidden;background-color:var(--sdc-panel-bg, var(--sdc-surface-bg, #ffffff));border:var(--sdc-panel-border, var(--sdc-surface-border, 1px solid #dedce5));border-radius:var(--sdc-panel-radius, var(--sdc-surface-radius, 4px));box-shadow:var(--sdc-panel-shadow, var(--sdc-surface-shadow, none));padding:var(--sdc-panel-padding, var(--sdc-surface-padding, 22px 22px 20px));transition:var(--sdc-panel-transition, var(--sdc-surface-transition, border-color .25s ease))}.sdc-panel.sdc-panel--success{border-left:4px solid var(--sdc-panel-success, #1f9d55)}.sdc-panel.sdc-panel--info{border-left:4px solid var(--sdc-panel-info, #2563eb)}.sdc-panel.sdc-panel--warn{border-left:4px solid var(--sdc-panel-warn, #d97706)}.sdc-panel.sdc-panel--error{border-left:4px solid var(--sdc-panel-error, #dc2626)}.sdc-panel__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:var(--sdc-panel-header-min-height, var(--sdc-surface-header-min-height, 34px));padding-bottom:var(--sdc-panel-header-padding-bottom, var(--sdc-surface-header-padding-bottom, 20px));border-bottom:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5));color:var(--sdc-panel-title-color, var(--sdc-surface-title-color, #212533))}.sdc-panel--collapsed .sdc-panel__header{padding-bottom:0;border-bottom:none}.sdc-panel__header-content{display:flex;align-items:center;min-width:0}.sdc-panel__title{color:inherit;font-size:var(--sdc-panel-title-font-size, var(--sdc-surface-title-font-size, 14px));font-weight:var(--sdc-panel-title-font-weight, var(--sdc-surface-title-font-weight, 400));line-height:var(--sdc-panel-title-line-height, var(--sdc-surface-title-line-height, 20px))}.sdc-panel__toggle,.sdc-panel__border-button{display:inline-flex;align-items:center;justify-content:center;min-width:var(--sdc-panel-action-size, 24px);min-height:var(--sdc-panel-action-size, 24px);border:none;background:transparent;color:inherit;cursor:pointer}.sdc-panel__toggle{flex:0 0 auto;border-radius:999px}.sdc-panel__toggle:focus-visible{outline:2px solid currentColor;outline-offset:2px}.sdc-panel__border-button{position:absolute;inset-block-start:1rem;inset-inline-start:0;z-index:1;padding:.5rem;border-radius:999px;background:var(--sdc-panel-border-button-bg, #ffffff);box-shadow:0 10px 20px #0f172a1f;transform:translate(-40%)}.sdc-panel__border-button:focus-visible{outline:2px solid currentColor;outline-offset:2px}.sdc-panel__border-button:disabled{cursor:not-allowed;opacity:.56}.sdc-panel__content{padding-top:var(--sdc-panel-content-padding-top, 15px)}.sdc-panel__body{padding:var(--sdc-panel-content-padding, var(--sdc-surface-content-padding, 0))}.sdc-panel__footer{margin-top:var(--sdc-panel-footer-margin-top, var(--sdc-surface-footer-margin-top, 15px));padding-top:var(--sdc-panel-footer-padding-top, var(--sdc-surface-footer-padding-top, 15px));border-top:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5))}.sdc-panel__footer:empty{display:none}.sdc-panel__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n"] }]
|
|
45
77
|
}], propDecorators: { header: [{
|
|
46
78
|
type: Input
|
|
47
79
|
}], toggleable: [{
|
|
@@ -62,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
62
94
|
}], ariaLabelledBy: [{
|
|
63
95
|
type: Input
|
|
64
96
|
}] } });
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9wYW5lbC9wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3BhbmVsL3BhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLFdBQVcsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzVGLE9BQU8sRUFBdUIsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDOUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQVd0RCxNQUFNLE9BQU8sY0FBYztJQUNoQixNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ1osVUFBVSxHQUFHLEtBQUssQ0FBQztJQUU1QixJQUFhLFNBQVMsQ0FBQyxLQUFjO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNTLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQ2hELFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbEIsUUFBUSxHQUFpQixZQUFZLENBQUMsT0FBTyxDQUFDO0lBQzlDLG1CQUFtQixDQUF1QjtJQUVuQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBRWhDLHVFQUF1RTtJQUM5RCxTQUFTLENBQVU7SUFDbkIsY0FBYyxDQUFVO0lBRWpDLGtCQUFrQixDQUFDLENBQVU7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixPQUFPLDhDQUE4QyxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPLGdEQUFnRCxDQUFDO0lBQzFELENBQUM7d0dBcENVLGNBQWM7NEZBQWQsY0FBYyx1V0NkM0Isd3VCQWNBLCs1RkRSWSxpQkFBaUIsK1RBQUUsZUFBZTs7NEZBUWpDLGNBQWM7a0JBVDFCLFNBQVM7OEJBQ0MsQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLENBQUMsY0FDakMsSUFBSSxZQUNOLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUTs4QkFHaEMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRU8sU0FBUztzQkFBckIsS0FBSztnQkFNSSxlQUFlO3NCQUF4QixNQUFNO2dCQUdFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVVLFVBQVU7c0JBQXpCLEtBQUs7dUJBQUMsT0FBTztnQkFHTCxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYW5lbE1vZHVsZSBhcyBTZW5pb3JQYW5lbE1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvcGFuZWwnO1xuaW1wb3J0IHsgQm9yZGVyQnV0dG9uT3B0aW9ucywgRW51bVNldmVyaXR5IH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbU2VuaW9yUGFuZWxNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnc2RjLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3BhbmVsLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIFBhbmVsQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaGVhZGVyID0gJyc7XG4gIEBJbnB1dCgpIHRvZ2dsZWFibGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgY29sbGFwc2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4kY29sbGFwc2VkID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGNvbGxhcHNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4kY29sbGFwc2VkO1xuICB9XG4gIEBPdXRwdXQoKSBjb2xsYXBzZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgJGNvbGxhcHNlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNldmVyaXR5OiBFbnVtU2V2ZXJpdHkgPSBFbnVtU2V2ZXJpdHkuRGVmYXVsdDtcbiAgQElucHV0KCkgYm9yZGVyQnV0dG9uT3B0aW9ucz86IEJvcmRlckJ1dHRvbk9wdGlvbnM7XG5cbiAgQElucHV0KCdjbGFzcycpIHBhbmVsQ2xhc3MgPSAnJztcblxuICAvLyBBY2Nlc3NpYmlsaXR5IGlucHV0cyAtIHBlcm1pdGUgY3VzdG9taXphw6fDo28gb3UgdXNhIGRlZmF1bHRzIGNvbSBpMThuXG4gIEBJbnB1dCgpIGFyaWFMYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk/OiBzdHJpbmc7XG5cbiAgb25Db2xsYXBzZWRDaGFuZ2VkKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLiRjb2xsYXBzZWQgPSB2O1xuICAgIHRoaXMuY29sbGFwc2VkQ2hhbmdlLmVtaXQodik7XG4gIH1cblxuICBnZXQgcGFuZWxDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFsnc2RjLXBhbmVsJywgdGhpcy5wYW5lbENsYXNzXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICB9XG5cbiAgZ2V0VG9nZ2xlQXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICByZXR1cm4gJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucGFuZWxfZXhwYW5kJztcbiAgICB9XG4gICAgcmV0dXJuICdwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5LnBhbmVsX2NvbGxhcHNlJztcbiAgfVxufVxuIiwiPHMtcGFuZWwgWyhjb2xsYXBzZWQpXT1cImNvbGxhcHNlZFwiIFtoZWFkZXJdPVwiaGVhZGVyIHwgdHJhbnNsYXRlXCIgW3RvZ2dsZWFibGVdPVwidG9nZ2xlYWJsZVwiIFtzZXZlcml0eV09XCJzZXZlcml0eVwiXG4gIFtib3JkZXJCdXR0b25PcHRpb25zXT1cImJvcmRlckJ1dHRvbk9wdGlvbnNcIiBbY2xhc3NdPVwicGFuZWxDbGFzc2VzXCIgKGNvbGxhcHNlZENoYW5nZSk9XCJvbkNvbGxhcHNlZENoYW5nZWQoJGV2ZW50KVwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiKGFyaWFMYWJlbCB8fCBoZWFkZXIpIHwgdHJhbnNsYXRlXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJ0b2dnbGVhYmxlID8gIWNvbGxhcHNlZCA6IG51bGxcIj5cbiAgPGRpdiBjbGFzcz1cInNkYy1wYW5lbC1jb250ZW50XCIgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5wYW5lbF9jb250ZW50JyB8IHRyYW5zbGF0ZVwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlIHNUZW1wbGF0ZT1cImZvb3RlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZGMtcGFuZWwtZm9vdGVyXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2RjRm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvcy1wYW5lbD5cbiJdfQ==
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9wYW5lbC9wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3BhbmVsL3BhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQXVCLFlBQVksRUFBbUIsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQVdqRyxNQUFNLE9BQU8sY0FBYztJQUNoQixTQUFTLEdBQUcsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUVsRCxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ1osVUFBVSxHQUFHLEtBQUssQ0FBQztJQUU1QixJQUFhLFNBQVMsQ0FBQyxLQUFjO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVTLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBRS9DLFFBQVEsR0FBZSxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQzVDLG1CQUFtQixDQUF1QjtJQUNuQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBRWhDLHVFQUF1RTtJQUM5RCxTQUFTLENBQVU7SUFDbkIsY0FBYyxDQUFVO0lBRXpCLFVB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bW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgbmV4dFNlcXVlbnRpYWxJZCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvaWQudXRpbCc7XG5pbXBvcnQgeyBCb3JkZXJCdXR0b25PcHRpb25zLCBFbnVtU2V2ZXJpdHksIHR5cGUgU2V2ZXJpdGllcyB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvcGFuZWwudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3NkYy1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wYW5lbC5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZFxufSlcbmV4cG9ydCBjbGFzcyBQYW5lbENvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGNvbnRlbnRJZCA9IG5leHRTZXF1ZW50aWFsSWQoJ3NkYy1wYW5lbC1jb250ZW50Jyk7XG5cbiAgQElucHV0KCkgaGVhZGVyID0gJyc7XG4gIEBJbnB1dCgpIHRvZ2dsZWFibGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgY29sbGFwc2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4kY29sbGFwc2VkID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGNvbGxhcHNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4kY29sbGFwc2VkO1xuICB9XG5cbiAgQE91dHB1dCgpIGNvbGxhcHNlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBASW5wdXQoKSBzZXZlcml0eTogU2V2ZXJpdGllcyA9IEVudW1TZXZlcml0eS5EZWZhdWx0O1xuICBASW5wdXQoKSBib3JkZXJCdXR0b25PcHRpb25zPzogQm9yZGVyQnV0dG9uT3B0aW9ucztcbiAgQElucHV0KCdjbGFzcycpIHBhbmVsQ2xhc3MgPSAnJztcblxuICAvLyBBY2Nlc3NpYmlsaXR5IGlucHV0cyAtIHBlcm1pdGUgY3VzdG9taXphY2FvIG91IHVzYSBkZWZhdWx0cyBjb20gaTE4blxuICBASW5wdXQoKSBhcmlhTGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5Pzogc3RyaW5nO1xuXG4gIHByaXZhdGUgJGNvbGxhcHNlZCA9IGZhbHNlO1xuXG4gIG9uQ29sbGFwc2VkQ2hhbmdlZCh2OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy4kY29sbGFwc2VkID0gdjtcbiAgICB0aGlzLmNvbGxhcHNlZENoYW5nZS5lbWl0KHYpO1xuICB9XG5cbiAgdG9nZ2xlQ29sbGFwc2VkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50b2dnbGVhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbkNvbGxhcHNlZENoYW5nZWQoIXRoaXMuY29sbGFwc2VkKTtcbiAgfVxuXG4gIG9uQm9yZGVyQnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5ib3JkZXJCdXR0b25EaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYm9yZGVyQnV0dG9uT3B0aW9ucz8ub25DbGljaz8uKHRoaXMuc2V2ZXJpdHkpO1xuICB9XG5cbiAgZ2V0IHBhbmVsQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBbJ3NkYy1wYW5lbCcsIHRoaXMucGFuZWxDbGFzc10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKTtcbiAgfVxuXG4gIGdldCBzZXZlcml0eUNsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBzZGMtcGFuZWwtLSR7dGhpcy5zZXZlcml0eX1gO1xuICB9XG5cbiAgZ2V0IHNob3dCb3JkZXJCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYm9yZGVyQnV0dG9uT3B0aW9ucz8udmlzaWJsZT8uKHRoaXMuc2V2ZXJpdHkpID8/IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGJvcmRlckJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYm9yZGVyQnV0dG9uT3B0aW9ucz8ubGFiZWw/Lih0aGlzLnNldmVyaXR5KSA/PyAncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5wYW5lbF90b2dnbGUnO1xuICB9XG5cbiAgZ2V0IGJvcmRlckJ1dHRvblRvb2x0aXAoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuYm9yZGVyQnV0dG9uT3B0aW9ucz8udG9vbHRpcD8uKHRoaXMuc2V2ZXJpdHkpID8/IG51bGw7XG4gIH1cblxuICBnZXQgYm9yZGVyQnV0dG9uSWNvbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5ib3JkZXJCdXR0b25PcHRpb25zPy5pY29uPy4odGhpcy5zZXZlcml0eSkgPz8gbnVsbDtcbiAgfVxuXG4gIGdldCBib3JkZXJCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ib3JkZXJCdXR0b25PcHRpb25zPy5kaXNhYmxlZD8uKHRoaXMuc2V2ZXJpdHkpID8/IGZhbHNlO1xuICB9XG5cbiAgZ2V0VG9nZ2xlQXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICByZXR1cm4gJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucGFuZWxfZXhwYW5kJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucGFuZWxfY29sbGFwc2UnO1xuICB9XG59XG4iLCI8c2VjdGlvblxuICBbY2xhc3NdPVwicGFuZWxDbGFzc2VzXCJcbiAgW2NsYXNzLnNkYy1wYW5lbC0tY29sbGFwc2VkXT1cImNvbGxhcHNlZFwiXG4gIFtjbGFzcy5zZGMtcGFuZWwtLXRvZ2dsZWFibGVdPVwidG9nZ2xlYWJsZVwiXG4gIFtjbGFzcy5zZGMtcGFuZWwtLXdpdGgtYm9yZGVyLWJ1dHRvbl09XCJzaG93Qm9yZGVyQnV0dG9uXCJcbiAgW25nQ2xhc3NdPVwic2V2ZXJpdHlDbGFzc1wiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiKGFyaWFMYWJlbCB8fCBoZWFkZXIpIHwgdHJhbnNsYXRlXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJ0b2dnbGVhYmxlID8gIWNvbGxhcHNlZCA6IG51bGxcIlxuPlxuICBAaWYgKHNob3dCb3JkZXJCdXR0b24pIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic2RjLXBhbmVsX19ib3JkZXItYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJib3JkZXJCdXR0b25EaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJvcmRlckJ1dHRvbkxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgIFthdHRyLnRpdGxlXT1cImJvcmRlckJ1dHRvblRvb2x0aXAgPyAoYm9yZGVyQnV0dG9uVG9vbHRpcCB8IHRyYW5zbGF0ZSkgOiBudWxsXCJcbiAgICAgIChjbGljayk9XCJvbkJvcmRlckJ1dHRvbkNsaWNrKCRldmVudClcIlxuICAgID5cbiAgICAgIEBpZiAoYm9yZGVyQnV0dG9uSWNvbikge1xuICAgICAgICA8aSBbY2xhc3NdPVwiYm9yZGVyQnV0dG9uSWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtcGFuZWxfX3NyLW9ubHlcIj57eyBib3JkZXJCdXR0b25MYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c3Bhbj57eyBib3JkZXJCdXR0b25MYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2J1dHRvbj5cbiAgfVxuXG4gIEBpZiAoaGVhZGVyIHx8IHRvZ2dsZWFibGUpIHtcbiAgICA8ZGl2IGNsYXNzPVwic2RjLXBhbmVsX19oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtcGFuZWxfX2hlYWRlci1jb250ZW50XCI+XG4gICAgICAgIEBpZiAoaGVhZGVyKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtcGFuZWxfX3RpdGxlXCI+e3sgaGVhZGVyIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmICh0b2dnbGVhYmxlKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cInNkYy1wYW5lbF9fdG9nZ2xlIGZhc1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiY29sbGFwc2VkID8gJ2ZhLXBsdXMnIDogJ2ZhLW1pbnVzJ1wiXG4gICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJjb250ZW50SWRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIWNvbGxhcHNlZFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRUb2dnbGVBcmlhTGFiZWwoKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlZCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXBhbmVsX19zci1vbmx5XCI+e3sgZ2V0VG9nZ2xlQXJpYUxhYmVsKCkgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG5cbiAgQGlmICghdG9nZ2xlYWJsZSB8fCAhY29sbGFwc2VkKSB7XG4gICAgPGRpdlxuICAgICAgW2lkXT1cImNvbnRlbnRJZFwiXG4gICAgICBjbGFzcz1cInNkYy1wYW5lbF9fY29udGVudFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5LnBhbmVsX2NvbnRlbnQnIHwgdHJhbnNsYXRlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic2RjLXBhbmVsX19ib2R5XCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwic2RjLXBhbmVsX19mb290ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NkY0Zvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9zZWN0aW9uPlxuIl19
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChildren, ViewEncapsulation, forwardRef } from '@angular/core';
|
|
3
|
+
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
5
|
+
import { PIN_CODE_FIELD_CHARACTER_ARIA_LABEL_KEY, PIN_CODE_FIELD_DEFAULT_ALPHANUMERIC, PIN_CODE_FIELD_DEFAULT_LENGTH, PIN_CODE_FIELD_DIGIT_ARIA_LABEL_KEY, PIN_CODE_FIELD_GROUP_ARIA_LABEL_KEY } from '../../core/constants/pin-code-field.const';
|
|
6
|
+
import { nextSequentialId } from '../../core/utils/id.util';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@ngx-translate/core";
|
|
9
|
+
export class PinCodeFieldComponent {
|
|
10
|
+
cdr;
|
|
11
|
+
id = nextSequentialId('sdc-pin');
|
|
12
|
+
length = PIN_CODE_FIELD_DEFAULT_LENGTH;
|
|
13
|
+
alphanumeric = PIN_CODE_FIELD_DEFAULT_ALPHANUMERIC;
|
|
14
|
+
helpText = '';
|
|
15
|
+
invalid = false;
|
|
16
|
+
disabled = false;
|
|
17
|
+
codeFilled = new EventEmitter();
|
|
18
|
+
pinInputs;
|
|
19
|
+
groupAriaLabelKey = PIN_CODE_FIELD_GROUP_ARIA_LABEL_KEY;
|
|
20
|
+
digitAriaLabelKey = PIN_CODE_FIELD_DIGIT_ARIA_LABEL_KEY;
|
|
21
|
+
characterAriaLabelKey = PIN_CODE_FIELD_CHARACTER_ARIA_LABEL_KEY;
|
|
22
|
+
inputs = [];
|
|
23
|
+
touched = false;
|
|
24
|
+
_onChange;
|
|
25
|
+
_onTouched;
|
|
26
|
+
constructor(cdr) {
|
|
27
|
+
this.cdr = cdr;
|
|
28
|
+
this.inputs = Array(this.length).fill('');
|
|
29
|
+
}
|
|
30
|
+
get currentValue() {
|
|
31
|
+
return this.inputs.join('');
|
|
32
|
+
}
|
|
33
|
+
get isComplete() {
|
|
34
|
+
return this.inputs.every(v => v.length === 1);
|
|
35
|
+
}
|
|
36
|
+
get hasError() {
|
|
37
|
+
return this.invalid;
|
|
38
|
+
}
|
|
39
|
+
ngOnChanges(changes) {
|
|
40
|
+
if (changes['length']) {
|
|
41
|
+
const newLength = changes['length'].currentValue;
|
|
42
|
+
const oldInputs = this.inputs.slice();
|
|
43
|
+
this.inputs = Array(newLength).fill('').map((_, i) => oldInputs[i] ?? '');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// ControlValueAccessor
|
|
47
|
+
writeValue(value) {
|
|
48
|
+
const str = value ?? '';
|
|
49
|
+
this.inputs = Array(this.length).fill('').map((_, i) => str[i] ?? '');
|
|
50
|
+
this.cdr.markForCheck();
|
|
51
|
+
}
|
|
52
|
+
registerOnChange(fn) {
|
|
53
|
+
this._onChange = fn;
|
|
54
|
+
}
|
|
55
|
+
registerOnTouched(fn) {
|
|
56
|
+
this._onTouched = fn;
|
|
57
|
+
}
|
|
58
|
+
setDisabledState(isDisabled) {
|
|
59
|
+
this.disabled = isDisabled;
|
|
60
|
+
this.cdr.markForCheck();
|
|
61
|
+
}
|
|
62
|
+
// Keyboard & input handlers
|
|
63
|
+
onFocus(event) {
|
|
64
|
+
const input = event.target;
|
|
65
|
+
input.select();
|
|
66
|
+
}
|
|
67
|
+
onInput(event, index) {
|
|
68
|
+
if (this.disabled) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const input = event.target;
|
|
72
|
+
const raw = input.value;
|
|
73
|
+
const validChar = this.extractValidChar(raw);
|
|
74
|
+
if (validChar) {
|
|
75
|
+
this.inputs[index] = validChar;
|
|
76
|
+
input.value = validChar;
|
|
77
|
+
this.notifyChange();
|
|
78
|
+
this.advanceFocus(index);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this.inputs[index] = '';
|
|
82
|
+
input.value = '';
|
|
83
|
+
this.notifyChange();
|
|
84
|
+
}
|
|
85
|
+
this.cdr.markForCheck();
|
|
86
|
+
}
|
|
87
|
+
onKeydown(event, index) {
|
|
88
|
+
if (this.disabled) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const { key } = event;
|
|
92
|
+
if (key === 'Backspace') {
|
|
93
|
+
event.preventDefault();
|
|
94
|
+
if (this.inputs[index]) {
|
|
95
|
+
this.inputs[index] = '';
|
|
96
|
+
const inputEl = this.getInputEl(index);
|
|
97
|
+
if (inputEl) {
|
|
98
|
+
inputEl.value = '';
|
|
99
|
+
}
|
|
100
|
+
this.notifyChange();
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
this.moveFocus(index - 1);
|
|
104
|
+
}
|
|
105
|
+
this.cdr.markForCheck();
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (key === 'ArrowRight') {
|
|
109
|
+
event.preventDefault();
|
|
110
|
+
this.moveFocus(index + 1);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (key === 'ArrowLeft') {
|
|
114
|
+
event.preventDefault();
|
|
115
|
+
this.moveFocus(index - 1);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Keep branch explicit for static-analysis rule requiring else/default handling.
|
|
119
|
+
if (key) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
onPaste(event, startIndex) {
|
|
124
|
+
if (this.disabled) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
event.preventDefault();
|
|
128
|
+
const pasted = event.clipboardData?.getData('text') ?? '';
|
|
129
|
+
const validChars = this.extractValidCharsFromString(pasted);
|
|
130
|
+
let cursor = startIndex;
|
|
131
|
+
for (const char of validChars) {
|
|
132
|
+
if (cursor >= this.length) {
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
this.inputs[cursor] = char;
|
|
136
|
+
const inputEl = this.getInputEl(cursor);
|
|
137
|
+
if (inputEl) {
|
|
138
|
+
inputEl.value = char;
|
|
139
|
+
}
|
|
140
|
+
cursor = cursor + 1;
|
|
141
|
+
}
|
|
142
|
+
this.notifyChange();
|
|
143
|
+
const focusTarget = Math.min(cursor, this.length - 1);
|
|
144
|
+
this.moveFocus(focusTarget);
|
|
145
|
+
this.cdr.markForCheck();
|
|
146
|
+
}
|
|
147
|
+
onBlur(index) {
|
|
148
|
+
if (index === this.length - 1) {
|
|
149
|
+
this.touched = true;
|
|
150
|
+
this._onTouched?.();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Private helpers
|
|
154
|
+
extractValidChar(raw) {
|
|
155
|
+
if (!raw) {
|
|
156
|
+
return '';
|
|
157
|
+
}
|
|
158
|
+
const chars = raw.split('');
|
|
159
|
+
for (const char of chars) {
|
|
160
|
+
if (this.isValidChar(char)) {
|
|
161
|
+
return char;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return '';
|
|
165
|
+
}
|
|
166
|
+
extractValidCharsFromString(str) {
|
|
167
|
+
return str.split('').filter(c => this.isValidChar(c));
|
|
168
|
+
}
|
|
169
|
+
isValidChar(char) {
|
|
170
|
+
if (this.alphanumeric) {
|
|
171
|
+
return char.trim().length === 1;
|
|
172
|
+
}
|
|
173
|
+
return /\d/.test(char);
|
|
174
|
+
}
|
|
175
|
+
advanceFocus(index) {
|
|
176
|
+
this.moveFocus(index + 1);
|
|
177
|
+
}
|
|
178
|
+
moveFocus(index) {
|
|
179
|
+
if (index < 0 || index >= this.length) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const inputEl = this.getInputEl(index);
|
|
183
|
+
inputEl?.focus();
|
|
184
|
+
}
|
|
185
|
+
getInputEl(index) {
|
|
186
|
+
const list = this.pinInputs?.toArray();
|
|
187
|
+
if (!list || index < 0 || index >= list.length) {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
return list[index]?.nativeElement ?? null;
|
|
191
|
+
}
|
|
192
|
+
notifyChange() {
|
|
193
|
+
this._onChange?.(this.currentValue);
|
|
194
|
+
if (this.isComplete) {
|
|
195
|
+
this.codeFilled.emit(this.currentValue);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PinCodeFieldComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
199
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PinCodeFieldComponent, isStandalone: true, selector: "sdc-pin-code-field", inputs: { id: "id", length: "length", alphanumeric: "alphanumeric", helpText: "helpText", invalid: "invalid", disabled: "disabled" }, outputs: { codeFilled: "codeFilled" }, providers: [
|
|
200
|
+
{
|
|
201
|
+
provide: NG_VALUE_ACCESSOR,
|
|
202
|
+
useExisting: forwardRef(() => PinCodeFieldComponent),
|
|
203
|
+
multi: true
|
|
204
|
+
}
|
|
205
|
+
], viewQueries: [{ propertyName: "pinInputs", predicate: ["pinInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"sdc-pin-code-field\">\n <div\n class=\"sdc-pin-code-field__inputs\"\n [attr.aria-label]=\"groupAriaLabelKey | translate\"\n [attr.aria-describedby]=\"helpText ? 'pin-help-' + id : null\"\n >\n @for (value of inputs; track $index) {\n <input\n #pinInput\n type=\"text\"\n class=\"sdc-pin-code-field__input\"\n [class.sdc-pin-code-field__input--error]=\"hasError\"\n [class.sdc-pin-code-field__input--disabled]=\"disabled\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"\n (alphanumeric ? characterAriaLabelKey : digitAriaLabelKey)\n | translate : { n: $index + 1, total: length }\n \"\n [attr.aria-describedby]=\"helpText ? 'pin-help-' + id : null\"\n [attr.aria-required]=\"true\"\n [attr.aria-invalid]=\"hasError\"\n [attr.inputmode]=\"alphanumeric ? 'text' : 'numeric'\"\n [attr.maxlength]=\"1\"\n autocomplete=\"off\"\n (focus)=\"onFocus($event)\"\n (input)=\"onInput($event, $index)\"\n (keydown)=\"onKeydown($event, $index)\"\n (paste)=\"onPaste($event, $index)\"\n (blur)=\"onBlur($index)\"\n />\n }\n </div>\n\n @if (helpText) {\n <div\n [id]=\"'pin-help-' + id\"\n class=\"sdc-pin-code-field__help\"\n >{{ helpText }}</div>\n }\n</div>\n", styles: [":host{display:block}.sdc-pin-code-field{--sdc-pin-code-field-input-size: 3rem;--sdc-pin-code-field-gap: .5rem;--sdc-pin-code-field-border: var(--sdc-color-border, #dedce5);--sdc-pin-code-field-border-focus: var(--sdc-color-primary, #428bca);--sdc-pin-code-field-border-error: var(--sdc-color-danger, #c13018);--sdc-pin-code-field-bg: #fff;--sdc-pin-code-field-bg-disabled: #f5f5f5;--sdc-pin-code-field-text: #212533;--sdc-pin-code-field-text-disabled: #697882;--sdc-pin-code-field-radius: .375rem;--sdc-pin-code-field-font-size: 1.125rem;--sdc-pin-code-field-help-color: #697882;display:flex;flex-direction:column;gap:.375rem}.sdc-pin-code-field__inputs{display:flex;flex-direction:row;gap:var(--sdc-pin-code-field-gap);align-items:center}.sdc-pin-code-field__input{width:var(--sdc-pin-code-field-input-size);height:var(--sdc-pin-code-field-input-size);border:1px solid var(--sdc-pin-code-field-border);border-radius:var(--sdc-pin-code-field-radius);background-color:var(--sdc-pin-code-field-bg);color:var(--sdc-pin-code-field-text);font-size:var(--sdc-pin-code-field-font-size);font-family:var(--sdc-font-family, \"Open Sans\", sans-serif);text-align:center;outline:none;padding:0;transition:border-color .15s ease,box-shadow .15s ease;appearance:none;-moz-appearance:textfield}.sdc-pin-code-field__input::-webkit-outer-spin-button,.sdc-pin-code-field__input::-webkit-inner-spin-button{appearance:none;margin:0}.sdc-pin-code-field__input:focus{border-color:var(--sdc-pin-code-field-border-focus);box-shadow:0 0 0 3px #428bca33}.sdc-pin-code-field__input--error{border-color:var(--sdc-pin-code-field-border-error)}.sdc-pin-code-field__input--error:focus{border-color:var(--sdc-pin-code-field-border-error);box-shadow:0 0 0 3px #c1301833}.sdc-pin-code-field__input--disabled,.sdc-pin-code-field__input:disabled{background-color:var(--sdc-pin-code-field-bg-disabled);color:var(--sdc-pin-code-field-text-disabled);cursor:not-allowed;border-color:var(--sdc-pin-code-field-border)}.sdc-pin-code-field__help{font-size:.75rem;color:var(--sdc-pin-code-field-help-color);font-family:var(--sdc-font-family, \"Open Sans\", sans-serif);line-height:1.4}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
206
|
+
}
|
|
207
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PinCodeFieldComponent, decorators: [{
|
|
208
|
+
type: Component,
|
|
209
|
+
args: [{ selector: 'sdc-pin-code-field', standalone: true, imports: [CommonModule, TranslateModule, FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, providers: [
|
|
210
|
+
{
|
|
211
|
+
provide: NG_VALUE_ACCESSOR,
|
|
212
|
+
useExisting: forwardRef(() => PinCodeFieldComponent),
|
|
213
|
+
multi: true
|
|
214
|
+
}
|
|
215
|
+
], template: "<div class=\"sdc-pin-code-field\">\n <div\n class=\"sdc-pin-code-field__inputs\"\n [attr.aria-label]=\"groupAriaLabelKey | translate\"\n [attr.aria-describedby]=\"helpText ? 'pin-help-' + id : null\"\n >\n @for (value of inputs; track $index) {\n <input\n #pinInput\n type=\"text\"\n class=\"sdc-pin-code-field__input\"\n [class.sdc-pin-code-field__input--error]=\"hasError\"\n [class.sdc-pin-code-field__input--disabled]=\"disabled\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"\n (alphanumeric ? characterAriaLabelKey : digitAriaLabelKey)\n | translate : { n: $index + 1, total: length }\n \"\n [attr.aria-describedby]=\"helpText ? 'pin-help-' + id : null\"\n [attr.aria-required]=\"true\"\n [attr.aria-invalid]=\"hasError\"\n [attr.inputmode]=\"alphanumeric ? 'text' : 'numeric'\"\n [attr.maxlength]=\"1\"\n autocomplete=\"off\"\n (focus)=\"onFocus($event)\"\n (input)=\"onInput($event, $index)\"\n (keydown)=\"onKeydown($event, $index)\"\n (paste)=\"onPaste($event, $index)\"\n (blur)=\"onBlur($index)\"\n />\n }\n </div>\n\n @if (helpText) {\n <div\n [id]=\"'pin-help-' + id\"\n class=\"sdc-pin-code-field__help\"\n >{{ helpText }}</div>\n }\n</div>\n", styles: [":host{display:block}.sdc-pin-code-field{--sdc-pin-code-field-input-size: 3rem;--sdc-pin-code-field-gap: .5rem;--sdc-pin-code-field-border: var(--sdc-color-border, #dedce5);--sdc-pin-code-field-border-focus: var(--sdc-color-primary, #428bca);--sdc-pin-code-field-border-error: var(--sdc-color-danger, #c13018);--sdc-pin-code-field-bg: #fff;--sdc-pin-code-field-bg-disabled: #f5f5f5;--sdc-pin-code-field-text: #212533;--sdc-pin-code-field-text-disabled: #697882;--sdc-pin-code-field-radius: .375rem;--sdc-pin-code-field-font-size: 1.125rem;--sdc-pin-code-field-help-color: #697882;display:flex;flex-direction:column;gap:.375rem}.sdc-pin-code-field__inputs{display:flex;flex-direction:row;gap:var(--sdc-pin-code-field-gap);align-items:center}.sdc-pin-code-field__input{width:var(--sdc-pin-code-field-input-size);height:var(--sdc-pin-code-field-input-size);border:1px solid var(--sdc-pin-code-field-border);border-radius:var(--sdc-pin-code-field-radius);background-color:var(--sdc-pin-code-field-bg);color:var(--sdc-pin-code-field-text);font-size:var(--sdc-pin-code-field-font-size);font-family:var(--sdc-font-family, \"Open Sans\", sans-serif);text-align:center;outline:none;padding:0;transition:border-color .15s ease,box-shadow .15s ease;appearance:none;-moz-appearance:textfield}.sdc-pin-code-field__input::-webkit-outer-spin-button,.sdc-pin-code-field__input::-webkit-inner-spin-button{appearance:none;margin:0}.sdc-pin-code-field__input:focus{border-color:var(--sdc-pin-code-field-border-focus);box-shadow:0 0 0 3px #428bca33}.sdc-pin-code-field__input--error{border-color:var(--sdc-pin-code-field-border-error)}.sdc-pin-code-field__input--error:focus{border-color:var(--sdc-pin-code-field-border-error);box-shadow:0 0 0 3px #c1301833}.sdc-pin-code-field__input--disabled,.sdc-pin-code-field__input:disabled{background-color:var(--sdc-pin-code-field-bg-disabled);color:var(--sdc-pin-code-field-text-disabled);cursor:not-allowed;border-color:var(--sdc-pin-code-field-border)}.sdc-pin-code-field__help{font-size:.75rem;color:var(--sdc-pin-code-field-help-color);font-family:var(--sdc-font-family, \"Open Sans\", sans-serif);line-height:1.4}\n"] }]
|
|
216
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { id: [{
|
|
217
|
+
type: Input
|
|
218
|
+
}], length: [{
|
|
219
|
+
type: Input
|
|
220
|
+
}], alphanumeric: [{
|
|
221
|
+
type: Input
|
|
222
|
+
}], helpText: [{
|
|
223
|
+
type: Input
|
|
224
|
+
}], invalid: [{
|
|
225
|
+
type: Input
|
|
226
|
+
}], disabled: [{
|
|
227
|
+
type: Input
|
|
228
|
+
}], codeFilled: [{
|
|
229
|
+
type: Output
|
|
230
|
+
}], pinInputs: [{
|
|
231
|
+
type: ViewChildren,
|
|
232
|
+
args: ['pinInput']
|
|
233
|
+
}] } });
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWNvZGUtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9waW4tY29kZS1maWVsZC9waW4tY29kZS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3Bpbi1jb2RlLWZpZWxkL3Bpbi1jb2RlLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFHTixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQ0wsdUNBQXVDLEVBQ3ZDLG1DQUFtQyxFQUNuQyw2QkFBNkIsRUFDN0IsbUNBQW1DLEVBQ25DLG1DQUFtQyxFQUNwQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFrQjVELE1BQU0sT0FBTyxxQkFBcUI7SUFzQkg7SUFyQnBCLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqQyxNQUFNLEdBQUcsNkJBQTZCLENBQUM7SUFDdkMsWUFBWSxHQUFHLG1DQUFtQyxDQUFDO0lBQ25ELFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDZCxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFaEIsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENB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QUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7d0dBNU9VLHFCQUFxQjs0RkFBckIscUJBQXFCLDhPQVJyQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBQ3BELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRix5SUMxQ0gsNDJDQXlDQSx1cEVEVlksWUFBWSw4QkFBRSxlQUFlLDJGQUFFLFdBQVc7OzRGQWF6QyxxQkFBcUI7a0JBaEJqQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxtQkFHcEMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUSxhQUM5Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7c0ZBR1EsRUFBRTtzQkFBVixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFFbUIsU0FBUztzQkFBbEMsWUFBWTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQge1xuICBQSU5fQ09ERV9GSUVMRF9DSEFSQUNURVJfQVJJQV9MQUJFTF9LRVksXG4gIFBJTl9DT0RFX0ZJRUxEX0RFRkFVTFRfQUxQSEFOVU1FUklDLFxuICBQSU5fQ09ERV9GSUVMRF9ERUZBVUxUX0xFTkdUSCxcbiAgUElOX0NPREVfRklFTERfRElHSVRfQVJJQV9MQUJFTF9LRVksXG4gIFBJTl9DT0RFX0ZJRUxEX0dST1VQX0FSSUFfTEFCRUxfS0VZXG59IGZyb20gJy4uLy4uL2NvcmUvY29uc3RhbnRzL3Bpbi1jb2RlLWZpZWxkLmNvbnN0JztcbmltcG9ydCB7IG5leHRTZXF1ZW50aWFsSWQgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL2lkLnV0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtcGluLWNvZGUtZmllbGQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Bpbi1jb2RlLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Bpbi1jb2RlLWZpZWxkLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBpbkNvZGVGaWVsZENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQaW5Db2RlRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgaWQgPSBuZXh0U2VxdWVudGlhbElkKCdzZGMtcGluJyk7XG4gIEBJbnB1dCgpIGxlbmd0aCA9IFBJTl9DT0RFX0ZJRUxEX0RFRkFVTFRfTEVOR1RIO1xuICBASW5wdXQoKSBhbHBoYW51bWVyaWMgPSBQSU5fQ09ERV9GSUVMRF9ERUZBVUxUX0FMUEhBTlVNRVJJQztcbiAgQElucHV0KCkgaGVscFRleHQgPSAnJztcbiAgQElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjb2RlRmlsbGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZHJlbigncGluSW5wdXQnKSBwaW5JbnB1dHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj47XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGdyb3VwQXJpYUxhYmVsS2V5ID0gUElOX0NPREVfRklFTERfR1JPVVBfQVJJQV9MQUJFTF9LRVk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkaWdpdEFyaWFMYWJlbEtleSA9IFBJTl9DT0RFX0ZJRUxEX0RJR0lUX0FSSUFfTEFCRUxfS0VZO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhcmFjdGVyQXJpYUxhYmVsS2V5ID0gUElOX0NPREVfRklFTERfQ0hBUkFDVEVSX0FSSUFfTEFCRUxfS0VZO1xuXG4gIHByb3RlY3RlZCBpbnB1dHM6IHN0cmluZ1tdID0gW107XG4gIHByb3RlY3RlZCB0b3VjaGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfb25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLmlucHV0cyA9IEFycmF5KHRoaXMubGVuZ3RoKS5maWxsKCcnKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dHMuam9pbignJyk7XG4gIH1cblxuICBnZXQgaXNDb21wbGV0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dHMuZXZlcnkodiA9PiB2Lmxlbmd0aCA9PT0gMSk7XG4gIH1cblxuICBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snbGVuZ3RoJ10pIHtcbiAgICAgIGNvbnN0IG5ld0xlbmd0aCA9IGNoYW5nZXNbJ2xlbmd0aCddLmN1cnJlbnRWYWx1ZSBhcyBudW1iZXI7XG4gICAgICBjb25zdCBvbGRJbnB1dHMgPSB0aGlzLmlucHV0cy5zbGljZSgpO1xuICAgICAgdGhpcy5pbnB1dHMgPSBBcnJheShuZXdMZW5ndGgpLmZpbGwoJycpLm1hcCgoXywgaSkgPT4gb2xkSW5wdXRzW2ldID8/ICcnKTtcbiAgICB9XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvclxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBzdHIgPSB2YWx1ZSA/PyAnJztcbiAgICB0aGlzLmlucHV0cyA9IEFycmF5KHRoaXMubGVuZ3RoKS5maWxsKCcnKS5tYXAoKF8sIGkpID0+IHN0cltpXSA/PyAnJyk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvLyBLZXlib2FyZCAmIGlucHV0IGhhbmRsZXJzXG5cbiAgb25Gb2N1cyhldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaW5wdXQuc2VsZWN0KCk7XG4gIH1cblxuICBvbklucHV0KGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCByYXcgPSBpbnB1dC52YWx1ZTtcbiAgICBjb25zdCB2YWxpZENoYXIgPSB0aGlzLmV4dHJhY3RWYWxpZENoYXIocmF3KTtcblxuICAgIGlmICh2YWxpZENoYXIpIHtcbiAgICAgIHRoaXMuaW5wdXRzW2luZGV4XSA9IHZhbGlkQ2hhcjtcbiAgICAgIGlucHV0LnZhbHVlID0gdmFsaWRDaGFyO1xuICAgICAgdGhpcy5ub3RpZnlDaGFuZ2UoKTtcbiAgICAgIHRoaXMuYWR2YW5jZUZvY3VzKGluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnB1dHNbaW5kZXhdID0gJyc7XG4gICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgdGhpcy5ub3RpZnlDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50O1xuXG4gICAgaWYgKGtleSA9PT0gJ0JhY2tzcGFjZScpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIGlmICh0aGlzLmlucHV0c1tpbmRleF0pIHtcbiAgICAgICAgdGhpcy5pbnB1dHNbaW5kZXhdID0gJyc7XG4gICAgICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLmdldElucHV0RWwoaW5kZXgpO1xuICAgICAgICBpZiAoaW5wdXRFbCkge1xuICAgICAgICAgIGlucHV0RWwudmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vdGlmeUNoYW5nZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb3ZlRm9jdXMoaW5kZXggLSAxKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ0Fycm93UmlnaHQnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5tb3ZlRm9jdXMoaW5kZXggKyAxKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMubW92ZUZvY3VzKGluZGV4IC0gMSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gS2VlcCBicmFuY2ggZXhwbGljaXQgZm9yIHN0YXRpYy1hbmFseXNpcyBydWxlIHJlcXVpcmluZyBlbHNlL2RlZmF1bHQgaGFuZGxpbmcuXG4gICAgaWYgKGtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50LCBzdGFydEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgcGFzdGVkID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpID8/ICcnO1xuICAgIGNvbnN0IHZhbGlkQ2hhcnMgPSB0aGlzLmV4dHJhY3RWYWxpZENoYXJzRnJvbVN0cmluZyhwYXN0ZWQpO1xuICAgIGxldCBjdXJzb3IgPSBzdGFydEluZGV4O1xuXG4gICAgZm9yIChjb25zdCBjaGFyIG9mIHZhbGlkQ2hhcnMpIHtcbiAgICAgIGlmIChjdXJzb3IgPj0gdGhpcy5sZW5ndGgpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLmlucHV0c1tjdXJzb3JdID0gY2hhcjtcbiAgICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLmdldElucHV0RWwoY3Vyc29yKTtcbiAgICAgIGlmIChpbnB1dEVsKSB7XG4gICAgICAgIGlucHV0RWwudmFsdWUgPSBjaGFyO1xuICAgICAgfVxuICAgICAgY3Vyc29yID0gY3Vyc29yICsgMTtcbiAgICB9XG5cbiAgICB0aGlzLm5vdGlmeUNoYW5nZSgpO1xuXG4gICAgY29uc3QgZm9jdXNUYXJnZXQgPSBNYXRoLm1pbihjdXJzb3IsIHRoaXMubGVuZ3RoIC0gMSk7XG4gICAgdGhpcy5tb3ZlRm9jdXMoZm9jdXNUYXJnZXQpO1xuXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkJsdXIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpbmRleCA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkPy4oKTtcbiAgICB9XG4gIH1cblxuICAvLyBQcml2YXRlIGhlbHBlcnNcblxuICBwcml2YXRlIGV4dHJhY3RWYWxpZENoYXIocmF3OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghcmF3KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgY2hhcnMgPSByYXcuc3BsaXQoJycpO1xuXG4gICAgZm9yIChjb25zdCBjaGFyIG9mIGNoYXJzKSB7XG4gICAgICBpZiAodGhpcy5pc1ZhbGlkQ2hhcihjaGFyKSkge1xuICAgICAgICByZXR1cm4gY2hhcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RWYWxpZENoYXJzRnJvbVN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gc3RyLnNwbGl0KCcnKS5maWx0ZXIoYyA9PiB0aGlzLmlzVmFsaWRDaGFyKGMpKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNWYWxpZENoYXIoY2hhcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuYWxwaGFudW1lcmljKSB7XG4gICAgICByZXR1cm4gY2hhci50cmltKCkubGVuZ3RoID09PSAxO1xuICAgIH1cblxuICAgIHJldHVybiAvXFxkLy50ZXN0KGNoYXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZHZhbmNlRm9jdXMoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubW92ZUZvY3VzKGluZGV4ICsgMSk7XG4gIH1cblxuICBwcml2YXRlIG1vdmVGb2N1cyhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLmdldElucHV0RWwoaW5kZXgpO1xuICAgIGlucHV0RWw/LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIGdldElucHV0RWwoaW5kZXg6IG51bWJlcik6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5waW5JbnB1dHM/LnRvQXJyYXkoKTtcblxuICAgIGlmICghbGlzdCB8fCBpbmRleCA8IDAgfHwgaW5kZXggPj0gbGlzdC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBsaXN0W2luZGV4XT8ubmF0aXZlRWxlbWVudCA/PyBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBub3RpZnlDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2U/Lih0aGlzLmN1cnJlbnRWYWx1ZSk7XG5cbiAgICBpZiAodGhpcy5pc0NvbXBsZXRlKSB7XG4gICAgICB0aGlzLmNvZGVGaWxsZWQuZW1pdCh0aGlzLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2RjLXBpbi1jb2RlLWZpZWxkXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNkYy1waW4tY29kZS1maWVsZF9faW5wdXRzXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdyb3VwQXJpYUxhYmVsS2V5IHwgdHJhbnNsYXRlXCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImhlbHBUZXh0ID8gJ3Bpbi1oZWxwLScgKyBpZCA6IG51bGxcIlxuICA+XG4gICAgQGZvciAodmFsdWUgb2YgaW5wdXRzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIDxpbnB1dFxuICAgICAgICAjcGluSW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBjbGFzcz1cInNkYy1waW4tY29kZS1maWVsZF9faW5wdXRcIlxuICAgICAgICBbY2xhc3Muc2RjLXBpbi1jb2RlLWZpZWxkX19pbnB1dC0tZXJyb3JdPVwiaGFzRXJyb3JcIlxuICAgICAgICBbY2xhc3Muc2RjLXBpbi1jb2RlLWZpZWxkX19pbnB1dC0tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgIChhbHBoYW51bWVyaWMgPyBjaGFyYWN0ZXJBcmlhTGFiZWxLZXkgOiBkaWdpdEFyaWFMYWJlbEtleSlcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlIDogeyBuOiAkaW5kZXggKyAxLCB0b3RhbDogbGVuZ3RoIH1cbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJoZWxwVGV4dCA/ICdwaW4taGVscC0nICsgaWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yXCJcbiAgICAgICAgW2F0dHIuaW5wdXRtb2RlXT1cImFscGhhbnVtZXJpYyA/ICd0ZXh0JyA6ICdudW1lcmljJ1wiXG4gICAgICAgIFthdHRyLm1heGxlbmd0aF09XCIxXCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudCwgJGluZGV4KVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQsICRpbmRleClcIlxuICAgICAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQsICRpbmRleClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGluZGV4KVwiXG4gICAgICAvPlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgQGlmIChoZWxwVGV4dCkge1xuICAgIDxkaXZcbiAgICAgIFtpZF09XCIncGluLWhlbHAtJyArIGlkXCJcbiAgICAgIGNsYXNzPVwic2RjLXBpbi1jb2RlLWZpZWxkX19oZWxwXCJcbiAgICA+e3sgaGVscFRleHQgfX08L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
|