@agorapulse/ui-components 18.1.10 → 20.0.0-beta.1
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/action-dropdown/index.d.ts +111 -3
- package/add-comment/index.d.ts +24 -5
- package/agorapulse-ui-components-20.0.0-beta.1.tgz +0 -0
- package/autocomplete/index.d.ts +43 -5
- package/avatar/index.d.ts +64 -5
- package/badge/index.d.ts +11 -5
- package/button/index.d.ts +54 -5
- package/checkbox/index.d.ts +54 -5
- package/close-button/index.d.ts +14 -5
- package/confirm-modal/index.d.ts +32 -5
- package/counter/index.d.ts +17 -5
- package/datepicker/index.d.ts +99 -5
- package/directives/index.d.ts +149 -3
- package/dot-stepper/index.d.ts +23 -5
- package/fesm2022/agorapulse-ui-components-action-dropdown.mjs +18 -18
- package/fesm2022/agorapulse-ui-components-action-dropdown.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-add-comment.mjs +5 -5
- package/fesm2022/agorapulse-ui-components-add-comment.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-autocomplete.mjs +8 -8
- package/fesm2022/agorapulse-ui-components-autocomplete.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-avatar.mjs +24 -24
- package/fesm2022/agorapulse-ui-components-avatar.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-badge.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-badge.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-button.mjs +5 -5
- package/fesm2022/agorapulse-ui-components-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-checkbox.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-checkbox.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-close-button.mjs +7 -7
- package/fesm2022/agorapulse-ui-components-close-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-confirm-modal.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-confirm-modal.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-counter.mjs +9 -9
- package/fesm2022/agorapulse-ui-components-counter.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-datepicker.mjs +6 -6
- package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-directives.mjs +26 -28
- package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-dot-stepper.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-dot-stepper.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-form-field.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-form-field.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-form-message.mjs +6 -6
- package/fesm2022/agorapulse-ui-components-form-message.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-icon-button.mjs +5 -5
- package/fesm2022/agorapulse-ui-components-icon-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-infobox.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-infobox.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-input-group.mjs +6 -6
- package/fesm2022/agorapulse-ui-components-input-group.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-input-search.mjs +13 -10
- package/fesm2022/agorapulse-ui-components-input-search.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-input.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-labels-selector.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-labels-selector.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-labels.mjs +8 -8
- package/fesm2022/agorapulse-ui-components-labels.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-legacy-input.mjs +5 -5
- package/fesm2022/agorapulse-ui-components-legacy-input.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-legacy-select.mjs +17 -17
- package/fesm2022/agorapulse-ui-components-legacy-select.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs +5 -5
- package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-modal.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-modal.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-nav-selector.mjs +151 -150
- package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs +8 -8
- package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-notification.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-notification.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-paginator.mjs +7 -7
- package/fesm2022/agorapulse-ui-components-paginator.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-password-input.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-password-input.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-phone-number-input.mjs +16 -16
- package/fesm2022/agorapulse-ui-components-phone-number-input.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-popmenu.mjs +11 -11
- package/fesm2022/agorapulse-ui-components-popmenu.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-radio.mjs +6 -6
- package/fesm2022/agorapulse-ui-components-radio.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-range-slider.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-range-slider.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-select.mjs +65 -65
- package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-slide-toggle.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-slide-toggle.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs +8 -8
- package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-social-button.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-social-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-split-button.mjs +5 -5
- package/fesm2022/agorapulse-ui-components-split-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-status-card.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-status-card.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-status.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-status.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-stepper.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-stepper.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-tag.mjs +9 -9
- package/fesm2022/agorapulse-ui-components-tag.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-text-measurement.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-textarea.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-toggle.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-toggle.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-tooltip.mjs +15 -15
- package/fesm2022/agorapulse-ui-components-tooltip.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components.mjs +4 -4
- package/fesm2022/agorapulse-ui-components.mjs.map +1 -1
- package/form-field/index.d.ts +8 -5
- package/form-message/index.d.ts +16 -5
- package/icon-button/index.d.ts +44 -5
- package/index.d.ts +50 -25
- package/infobox/index.d.ts +29 -5
- package/input/index.d.ts +10 -5
- package/input-group/index.d.ts +14 -5
- package/input-search/index.d.ts +35 -5
- package/labels/index.d.ts +59 -5
- package/labels-selector/index.d.ts +46 -5
- package/legacy/input/index.d.ts +64 -3
- package/legacy/select/index.d.ts +124 -3
- package/legacy/textarea/index.d.ts +54 -3
- package/media-display-overlay/index.d.ts +46 -5
- package/modal/index.d.ts +58 -5
- package/nav-selector/index.d.ts +361 -3
- package/neo-datepicker/index.d.ts +74 -5
- package/notification/index.d.ts +9 -5
- package/package.json +38 -138
- package/paginator/index.d.ts +57 -5
- package/password-input/index.d.ts +36 -5
- package/phone-number-input/index.d.ts +54 -5
- package/popmenu/index.d.ts +212 -3
- package/radio/index.d.ts +80 -5
- package/range-slider/index.d.ts +39 -5
- package/select/index.d.ts +214 -5
- package/slide-toggle/index.d.ts +23 -5
- package/snackbars-thread/index.d.ts +73 -3
- package/social-button/index.d.ts +34 -5
- package/split-button/index.d.ts +47 -5
- package/status/index.d.ts +13 -5
- package/status-card/index.d.ts +17 -5
- package/stepper/index.d.ts +26 -5
- package/tag/index.d.ts +28 -5
- package/text-measurement/index.d.ts +11 -5
- package/textarea/index.d.ts +14 -5
- package/toggle/index.d.ts +55 -5
- package/tooltip/index.d.ts +62 -5
- package/action-dropdown/action-dropdown-trigger.directive.d.ts +0 -17
- package/action-dropdown/action-dropdown.component.d.ts +0 -87
- package/action-dropdown/providers.d.ts +0 -8
- package/action-dropdown/public_api.d.ts +0 -3
- package/add-comment/add-comment.component.d.ts +0 -21
- package/add-comment/public_api.d.ts +0 -1
- package/agorapulse-ui-components-18.1.10.tgz +0 -0
- package/autocomplete/autocomplete.component.d.ts +0 -40
- package/autocomplete/public_api.d.ts +0 -1
- package/avatar/avatar.component.d.ts +0 -61
- package/avatar/public_api.d.ts +0 -1
- package/badge/badge.component.d.ts +0 -7
- package/badge/public_api.d.ts +0 -1
- package/button/button.component.d.ts +0 -52
- package/button/public_api.d.ts +0 -1
- package/checkbox/checkbox.component.d.ts +0 -51
- package/checkbox/public_api.d.ts +0 -1
- package/close-button/close-button.component.d.ts +0 -11
- package/close-button/public_api.d.ts +0 -1
- package/confirm-modal/confirm-modal-texts.model.d.ts +0 -8
- package/confirm-modal/confirm-modal.component.d.ts +0 -20
- package/confirm-modal/public_api.d.ts +0 -2
- package/counter/counter.component.d.ts +0 -13
- package/counter/public_api.d.ts +0 -1
- package/datepicker/datepicker.component.d.ts +0 -100
- package/datepicker/public_api.d.ts +0 -1
- package/directives/autosize-textarea.directive.d.ts +0 -12
- package/directives/base-button.directive.d.ts +0 -13
- package/directives/checkbox.directive.d.ts +0 -32
- package/directives/default-image.directive.d.ts +0 -8
- package/directives/ellipsis.directive.d.ts +0 -29
- package/directives/equal-validator.directive.d.ts +0 -13
- package/directives/frozen-gif.directive.d.ts +0 -30
- package/directives/multi-style-text.directive.d.ts +0 -16
- package/directives/public_api.d.ts +0 -8
- package/dot-stepper/dot-stepper.component.d.ts +0 -20
- package/dot-stepper/public_api.d.ts +0 -1
- package/esm2022/action-dropdown/action-dropdown-trigger.directive.mjs +0 -54
- package/esm2022/action-dropdown/action-dropdown.component.mjs +0 -272
- package/esm2022/action-dropdown/agorapulse-ui-components-action-dropdown.mjs +0 -5
- package/esm2022/action-dropdown/providers.mjs +0 -12
- package/esm2022/action-dropdown/public_api.mjs +0 -4
- package/esm2022/add-comment/add-comment.component.mjs +0 -72
- package/esm2022/add-comment/agorapulse-ui-components-add-comment.mjs +0 -5
- package/esm2022/add-comment/public_api.mjs +0 -2
- package/esm2022/agorapulse-ui-components.mjs +0 -5
- package/esm2022/autocomplete/agorapulse-ui-components-autocomplete.mjs +0 -5
- package/esm2022/autocomplete/autocomplete.component.mjs +0 -125
- package/esm2022/autocomplete/public_api.mjs +0 -2
- package/esm2022/avatar/agorapulse-ui-components-avatar.mjs +0 -5
- package/esm2022/avatar/avatar.component.mjs +0 -161
- package/esm2022/avatar/public_api.mjs +0 -2
- package/esm2022/badge/agorapulse-ui-components-badge.mjs +0 -5
- package/esm2022/badge/badge.component.mjs +0 -17
- package/esm2022/badge/public_api.mjs +0 -2
- package/esm2022/button/agorapulse-ui-components-button.mjs +0 -5
- package/esm2022/button/button.component.mjs +0 -105
- package/esm2022/button/public_api.mjs +0 -2
- package/esm2022/checkbox/agorapulse-ui-components-checkbox.mjs +0 -5
- package/esm2022/checkbox/checkbox.component.mjs +0 -177
- package/esm2022/checkbox/public_api.mjs +0 -2
- package/esm2022/close-button/agorapulse-ui-components-close-button.mjs +0 -5
- package/esm2022/close-button/close-button.component.mjs +0 -20
- package/esm2022/close-button/public_api.mjs +0 -2
- package/esm2022/confirm-modal/agorapulse-ui-components-confirm-modal.mjs +0 -5
- package/esm2022/confirm-modal/confirm-modal-texts.model.mjs +0 -2
- package/esm2022/confirm-modal/confirm-modal.component.mjs +0 -61
- package/esm2022/confirm-modal/public_api.mjs +0 -3
- package/esm2022/counter/agorapulse-ui-components-counter.mjs +0 -5
- package/esm2022/counter/counter.component.mjs +0 -32
- package/esm2022/counter/public_api.mjs +0 -2
- package/esm2022/datepicker/agorapulse-ui-components-datepicker.mjs +0 -5
- package/esm2022/datepicker/datepicker.component.mjs +0 -288
- package/esm2022/datepicker/public_api.mjs +0 -2
- package/esm2022/directives/agorapulse-ui-components-directives.mjs +0 -5
- package/esm2022/directives/autosize-textarea.directive.mjs +0 -45
- package/esm2022/directives/base-button.directive.mjs +0 -47
- package/esm2022/directives/checkbox.directive.mjs +0 -283
- package/esm2022/directives/default-image.directive.mjs +0 -37
- package/esm2022/directives/ellipsis.directive.mjs +0 -90
- package/esm2022/directives/equal-validator.directive.mjs +0 -73
- package/esm2022/directives/frozen-gif.directive.mjs +0 -125
- package/esm2022/directives/multi-style-text.directive.mjs +0 -61
- package/esm2022/directives/public_api.mjs +0 -9
- package/esm2022/dot-stepper/agorapulse-ui-components-dot-stepper.mjs +0 -5
- package/esm2022/dot-stepper/dot-stepper.component.mjs +0 -46
- package/esm2022/dot-stepper/public_api.mjs +0 -2
- package/esm2022/form-field/agorapulse-ui-components-form-field.mjs +0 -5
- package/esm2022/form-field/form-field.component.mjs +0 -11
- package/esm2022/form-field/public_api.mjs +0 -2
- package/esm2022/form-message/agorapulse-ui-components-form-message.mjs +0 -5
- package/esm2022/form-message/form-message.component.mjs +0 -34
- package/esm2022/form-message/public_api.mjs +0 -2
- package/esm2022/icon-button/agorapulse-ui-components-icon-button.mjs +0 -5
- package/esm2022/icon-button/icon-button.component.mjs +0 -123
- package/esm2022/icon-button/public_api.mjs +0 -2
- package/esm2022/index.mjs +0 -49
- package/esm2022/infobox/agorapulse-ui-components-infobox.mjs +0 -5
- package/esm2022/infobox/infobox.component.mjs +0 -72
- package/esm2022/infobox/public_api.mjs +0 -2
- package/esm2022/input/agorapulse-ui-components-input.mjs +0 -5
- package/esm2022/input/input.directive.mjs +0 -19
- package/esm2022/input/public_api.mjs +0 -2
- package/esm2022/input-group/agorapulse-ui-components-input-group.mjs +0 -5
- package/esm2022/input-group/input-group.component.mjs +0 -14
- package/esm2022/input-group/input-prefix/input-prefix.component.mjs +0 -11
- package/esm2022/input-group/public_api.mjs +0 -3
- package/esm2022/input-search/agorapulse-ui-components-input-search.mjs +0 -5
- package/esm2022/input-search/input-search.component.mjs +0 -78
- package/esm2022/input-search/public_api.mjs +0 -2
- package/esm2022/labels/agorapulse-ui-components-labels.mjs +0 -5
- package/esm2022/labels/label-list.component.mjs +0 -108
- package/esm2022/labels/label.component.mjs +0 -56
- package/esm2022/labels/public_api.mjs +0 -3
- package/esm2022/labels-selector/agorapulse-ui-components-labels-selector.mjs +0 -5
- package/esm2022/labels-selector/labels-selector.component.mjs +0 -122
- package/esm2022/labels-selector/public_api.mjs +0 -2
- package/esm2022/legacy/input/agorapulse-ui-components-legacy-input.mjs +0 -5
- package/esm2022/legacy/input/input.component.mjs +0 -189
- package/esm2022/legacy/input/public_api.mjs +0 -2
- package/esm2022/legacy/select/agorapulse-ui-components-legacy-select.mjs +0 -5
- package/esm2022/legacy/select/public_api.mjs +0 -2
- package/esm2022/legacy/select/select.component.mjs +0 -451
- package/esm2022/legacy/textarea/agorapulse-ui-components-legacy-textarea.mjs +0 -5
- package/esm2022/legacy/textarea/public_api.mjs +0 -2
- package/esm2022/legacy/textarea/textarea.component.mjs +0 -154
- package/esm2022/media-display-overlay/agorapulse-ui-components-media-display-overlay.mjs +0 -5
- package/esm2022/media-display-overlay/media-display-overlay-dialog.component.mjs +0 -122
- package/esm2022/media-display-overlay/public_api.mjs +0 -2
- package/esm2022/modal/agorapulse-ui-components-modal.mjs +0 -5
- package/esm2022/modal/modal.component.mjs +0 -116
- package/esm2022/modal/public_api.mjs +0 -2
- package/esm2022/nav-selector/agorapulse-ui-components-nav-selector.mjs +0 -5
- package/esm2022/nav-selector/directives/nav-selector-popover-trigger.directive.mjs +0 -71
- package/esm2022/nav-selector/directives/tree-node-accessibility.directive.mjs +0 -30
- package/esm2022/nav-selector/nav-selector-category/nav-selector-category.component.mjs +0 -129
- package/esm2022/nav-selector/nav-selector-category/nav-selector-category.presenter.mjs +0 -28
- package/esm2022/nav-selector/nav-selector-group/nav-selector-group.component.mjs +0 -174
- package/esm2022/nav-selector/nav-selector-group/nav-selector-group.presenter.mjs +0 -30
- package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.component.mjs +0 -242
- package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.mjs +0 -36
- package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.component.mjs +0 -43
- package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.mjs +0 -20
- package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.mjs +0 -95
- package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.presenter.mjs +0 -31
- package/esm2022/nav-selector/nav-selector-popover/nav-selector-popover-item.component.mjs +0 -65
- package/esm2022/nav-selector/nav-selector-popover/nav-selector-popover.component.mjs +0 -132
- package/esm2022/nav-selector/nav-selector.component.mjs +0 -200
- package/esm2022/nav-selector/nav-selector.mjs +0 -9
- package/esm2022/nav-selector/nav-selector.state.mjs +0 -209
- package/esm2022/nav-selector/public_api.mjs +0 -3
- package/esm2022/nav-selector/utils/leaf.utils.mjs +0 -44
- package/esm2022/nav-selector/utils/nav-selector.accessibility.mjs +0 -179
- package/esm2022/nav-selector/utils/nav-selector.builder.mjs +0 -271
- package/esm2022/nav-selector/utils/nav-selector.filter.mjs +0 -141
- package/esm2022/nav-selector/utils/nav-selector.folding.mjs +0 -284
- package/esm2022/nav-selector/utils/nav-selector.merger.mjs +0 -76
- package/esm2022/nav-selector/utils/nav-selector.minifying.mjs +0 -59
- package/esm2022/nav-selector/utils/nav-selector.multi-select.mjs +0 -208
- package/esm2022/nav-selector/utils/nav-selector.single-select.mjs +0 -113
- package/esm2022/nav-selector/utils/nav-selector.view-more.mjs +0 -98
- package/esm2022/neo-datepicker/agorapulse-ui-components-neo-datepicker.mjs +0 -5
- package/esm2022/neo-datepicker/day-detail.model.mjs +0 -2
- package/esm2022/neo-datepicker/day-disabled.pipe.mjs +0 -21
- package/esm2022/neo-datepicker/neo-datepicker.component.mjs +0 -241
- package/esm2022/neo-datepicker/public_api.mjs +0 -4
- package/esm2022/notification/agorapulse-ui-components-notification.mjs +0 -5
- package/esm2022/notification/notification.component.mjs +0 -15
- package/esm2022/notification/public_api.mjs +0 -2
- package/esm2022/paginator/agorapulse-ui-components-paginator.mjs +0 -5
- package/esm2022/paginator/paginator-button/paginator-button.component.mjs +0 -51
- package/esm2022/paginator/paginator.component.mjs +0 -114
- package/esm2022/paginator/public_api.mjs +0 -3
- package/esm2022/password-input/agorapulse-ui-components-password-input.mjs +0 -5
- package/esm2022/password-input/password-input.component.mjs +0 -78
- package/esm2022/password-input/public_api.mjs +0 -2
- package/esm2022/phone-number-input/agorapulse-ui-components-phone-number-input.mjs +0 -5
- package/esm2022/phone-number-input/phone-number-input.component.mjs +0 -195
- package/esm2022/phone-number-input/public_api.mjs +0 -2
- package/esm2022/popmenu/agorapulse-ui-components-popmenu.mjs +0 -5
- package/esm2022/popmenu/options.mjs +0 -17
- package/esm2022/popmenu/popmenu-options.interface.mjs +0 -2
- package/esm2022/popmenu/popmenu-options.service.mjs +0 -7
- package/esm2022/popmenu/popmenu.component.mjs +0 -383
- package/esm2022/popmenu/popmenu.directive.mjs +0 -296
- package/esm2022/popmenu/popmenu.module.mjs +0 -29
- package/esm2022/popmenu/public_api.mjs +0 -5
- package/esm2022/radio/agorapulse-ui-components-radio.mjs +0 -5
- package/esm2022/radio/public_api.mjs +0 -2
- package/esm2022/radio/radio.component.mjs +0 -319
- package/esm2022/range-slider/agorapulse-ui-components-range-slider.mjs +0 -5
- package/esm2022/range-slider/public_api.mjs +0 -2
- package/esm2022/range-slider/range-slider.component.mjs +0 -154
- package/esm2022/select/agorapulse-ui-components-select.mjs +0 -5
- package/esm2022/select/ap-select.module.mjs +0 -78
- package/esm2022/select/dropdown-group-item/dropdown-group-item.component.mjs +0 -51
- package/esm2022/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.mjs +0 -75
- package/esm2022/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.mjs +0 -79
- package/esm2022/select/dropdown-item-single-one-line/dropdown-item-single-one-line.component.mjs +0 -59
- package/esm2022/select/dropdown-item-single-two-lines/dropdown-item-single-two-lines.component.mjs +0 -60
- package/esm2022/select/dropdown-search-form/dropdown-search-form.component.mjs +0 -98
- package/esm2022/select/public_api.mjs +0 -13
- package/esm2022/select/select-base.directive.mjs +0 -69
- package/esm2022/select/select-label-multiple/select-label-multiple.component.mjs +0 -95
- package/esm2022/select/select-label-single/select-label-single.component.mjs +0 -33
- package/esm2022/select/select-multiple.directive.mjs +0 -35
- package/esm2022/select/select-single.directive.mjs +0 -34
- package/esm2022/slide-toggle/agorapulse-ui-components-slide-toggle.mjs +0 -5
- package/esm2022/slide-toggle/public_api.mjs +0 -2
- package/esm2022/slide-toggle/slide-toggle.component.mjs +0 -66
- package/esm2022/snackbars-thread/agorapulse-ui-components-snackbars-thread.mjs +0 -5
- package/esm2022/snackbars-thread/component/snackbars-thread.component.mjs +0 -93
- package/esm2022/snackbars-thread/model/snackbars-thread.model.mjs +0 -44
- package/esm2022/snackbars-thread/public_api.mjs +0 -4
- package/esm2022/snackbars-thread/service/snackbars-thread.service.mjs +0 -47
- package/esm2022/snackbars-thread/utils/const/snackbars-thread.const.mjs +0 -13
- package/esm2022/social-button/agorapulse-ui-components-social-button.mjs +0 -5
- package/esm2022/social-button/public_api.mjs +0 -2
- package/esm2022/social-button/social-button.component.mjs +0 -164
- package/esm2022/split-button/agorapulse-ui-components-split-button.mjs +0 -5
- package/esm2022/split-button/public_api.mjs +0 -2
- package/esm2022/split-button/split-button.component.mjs +0 -122
- package/esm2022/src/lib/agorapulse-ui-components.module.mjs +0 -200
- package/esm2022/status/agorapulse-ui-components-status.mjs +0 -5
- package/esm2022/status/public_api.mjs +0 -2
- package/esm2022/status/status.component.mjs +0 -21
- package/esm2022/status-card/agorapulse-ui-components-status-card.mjs +0 -5
- package/esm2022/status-card/public_api.mjs +0 -2
- package/esm2022/status-card/status-card.component.mjs +0 -23
- package/esm2022/stepper/agorapulse-ui-components-stepper.mjs +0 -5
- package/esm2022/stepper/public_api.mjs +0 -3
- package/esm2022/stepper/step.model.mjs +0 -2
- package/esm2022/stepper/stepper.component.mjs +0 -38
- package/esm2022/tag/agorapulse-ui-components-tag.mjs +0 -5
- package/esm2022/tag/public_api.mjs +0 -2
- package/esm2022/tag/tag.component.mjs +0 -35
- package/esm2022/text-measurement/agorapulse-ui-components-text-measurement.mjs +0 -5
- package/esm2022/text-measurement/public_api.mjs +0 -2
- package/esm2022/text-measurement/text-measurement.service.mjs +0 -29
- package/esm2022/textarea/agorapulse-ui-components-textarea.mjs +0 -5
- package/esm2022/textarea/public_api.mjs +0 -2
- package/esm2022/textarea/textarea.directive.mjs +0 -37
- package/esm2022/toggle/agorapulse-ui-components-toggle.mjs +0 -5
- package/esm2022/toggle/public_api.mjs +0 -2
- package/esm2022/toggle/toggle.component.mjs +0 -208
- package/esm2022/tooltip/agorapulse-ui-components-tooltip.mjs +0 -5
- package/esm2022/tooltip/public_api.mjs +0 -2
- package/esm2022/tooltip/tooltip.directive.mjs +0 -401
- package/esm2022/tooltip/tooltip.service.mjs +0 -29
- package/form-field/form-field.component.d.ts +0 -5
- package/form-field/public_api.d.ts +0 -1
- package/form-message/form-message.component.d.ts +0 -12
- package/form-message/public_api.d.ts +0 -1
- package/icon-button/icon-button.component.d.ts +0 -40
- package/icon-button/public_api.d.ts +0 -1
- package/infobox/infobox.component.d.ts +0 -26
- package/infobox/public_api.d.ts +0 -1
- package/input/input.directive.d.ts +0 -7
- package/input/public_api.d.ts +0 -1
- package/input-group/input-group.component.d.ts +0 -6
- package/input-group/input-prefix/input-prefix.component.d.ts +0 -5
- package/input-group/public_api.d.ts +0 -2
- package/input-search/input-search.component.d.ts +0 -32
- package/input-search/public_api.d.ts +0 -1
- package/labels/label-list.component.d.ts +0 -34
- package/labels/label.component.d.ts +0 -23
- package/labels/public_api.d.ts +0 -2
- package/labels-selector/labels-selector.component.d.ts +0 -42
- package/labels-selector/public_api.d.ts +0 -1
- package/legacy/input/input.component.d.ts +0 -64
- package/legacy/input/public_api.d.ts +0 -1
- package/legacy/select/public_api.d.ts +0 -1
- package/legacy/select/select.component.d.ts +0 -122
- package/legacy/textarea/public_api.d.ts +0 -1
- package/legacy/textarea/textarea.component.d.ts +0 -53
- package/media-display-overlay/media-display-overlay-dialog.component.d.ts +0 -42
- package/media-display-overlay/public_api.d.ts +0 -1
- package/modal/modal.component.d.ts +0 -54
- package/modal/public_api.d.ts +0 -1
- package/nav-selector/directives/nav-selector-popover-trigger.directive.d.ts +0 -25
- package/nav-selector/directives/tree-node-accessibility.directive.d.ts +0 -9
- package/nav-selector/nav-selector-category/nav-selector-category.component.d.ts +0 -28
- package/nav-selector/nav-selector-category/nav-selector-category.presenter.d.ts +0 -13
- package/nav-selector/nav-selector-group/nav-selector-group.component.d.ts +0 -37
- package/nav-selector/nav-selector-group/nav-selector-group.presenter.d.ts +0 -16
- package/nav-selector/nav-selector-leaf/nav-selector-leaf.component.d.ts +0 -48
- package/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.d.ts +0 -18
- package/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.component.d.ts +0 -13
- package/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.d.ts +0 -10
- package/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.d.ts +0 -24
- package/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.presenter.d.ts +0 -14
- package/nav-selector/nav-selector-popover/nav-selector-popover-item.component.d.ts +0 -14
- package/nav-selector/nav-selector-popover/nav-selector-popover.component.d.ts +0 -40
- package/nav-selector/nav-selector.component.d.ts +0 -39
- package/nav-selector/nav-selector.d.ts +0 -268
- package/nav-selector/nav-selector.state.d.ts +0 -48
- package/nav-selector/public_api.d.ts +0 -3
- package/nav-selector/utils/leaf.utils.d.ts +0 -20
- package/nav-selector/utils/nav-selector.accessibility.d.ts +0 -52
- package/nav-selector/utils/nav-selector.builder.d.ts +0 -32
- package/nav-selector/utils/nav-selector.filter.d.ts +0 -32
- package/nav-selector/utils/nav-selector.folding.d.ts +0 -73
- package/nav-selector/utils/nav-selector.merger.d.ts +0 -23
- package/nav-selector/utils/nav-selector.minifying.d.ts +0 -29
- package/nav-selector/utils/nav-selector.multi-select.d.ts +0 -54
- package/nav-selector/utils/nav-selector.single-select.d.ts +0 -17
- package/nav-selector/utils/nav-selector.view-more.d.ts +0 -30
- package/neo-datepicker/day-detail.model.d.ts +0 -9
- package/neo-datepicker/day-disabled.pipe.d.ts +0 -8
- package/neo-datepicker/neo-datepicker.component.d.ts +0 -61
- package/neo-datepicker/public_api.d.ts +0 -3
- package/notification/notification.component.d.ts +0 -6
- package/notification/public_api.d.ts +0 -1
- package/paginator/paginator-button/paginator-button.component.d.ts +0 -17
- package/paginator/paginator.component.d.ts +0 -38
- package/paginator/public_api.d.ts +0 -2
- package/password-input/password-input.component.d.ts +0 -33
- package/password-input/public_api.d.ts +0 -1
- package/phone-number-input/phone-number-input.component.d.ts +0 -50
- package/phone-number-input/public_api.d.ts +0 -1
- package/popmenu/options.d.ts +0 -16
- package/popmenu/popmenu-options.interface.d.ts +0 -48
- package/popmenu/popmenu-options.service.d.ts +0 -7
- package/popmenu/popmenu.component.d.ts +0 -66
- package/popmenu/popmenu.directive.d.ts +0 -90
- package/popmenu/popmenu.module.d.ts +0 -11
- package/popmenu/public_api.d.ts +0 -4
- package/radio/public_api.d.ts +0 -1
- package/radio/radio.component.d.ts +0 -77
- package/range-slider/public_api.d.ts +0 -1
- package/range-slider/range-slider.component.d.ts +0 -35
- package/select/ap-select.module.d.ts +0 -17
- package/select/dropdown-group-item/dropdown-group-item.component.d.ts +0 -16
- package/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.d.ts +0 -25
- package/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.d.ts +0 -26
- package/select/dropdown-item-single-one-line/dropdown-item-single-one-line.component.d.ts +0 -20
- package/select/dropdown-item-single-two-lines/dropdown-item-single-two-lines.component.d.ts +0 -20
- package/select/dropdown-search-form/dropdown-search-form.component.d.ts +0 -32
- package/select/public_api.d.ts +0 -12
- package/select/select-base.directive.d.ts +0 -18
- package/select/select-label-multiple/select-label-multiple.component.d.ts +0 -27
- package/select/select-label-single/select-label-single.component.d.ts +0 -12
- package/select/select-multiple.directive.d.ts +0 -10
- package/select/select-single.directive.d.ts +0 -10
- package/slide-toggle/public_api.d.ts +0 -1
- package/slide-toggle/slide-toggle.component.d.ts +0 -20
- package/snackbars-thread/component/snackbars-thread.component.d.ts +0 -24
- package/snackbars-thread/model/snackbars-thread.model.d.ts +0 -36
- package/snackbars-thread/public_api.d.ts +0 -3
- package/snackbars-thread/service/snackbars-thread.service.d.ts +0 -15
- package/snackbars-thread/utils/const/snackbars-thread.const.d.ts +0 -10
- package/social-button/public_api.d.ts +0 -1
- package/social-button/social-button.component.d.ts +0 -32
- package/split-button/public_api.d.ts +0 -1
- package/split-button/split-button.component.d.ts +0 -45
- package/src/lib/agorapulse-ui-components.module.d.ts +0 -29
- package/status/public_api.d.ts +0 -1
- package/status/status.component.d.ts +0 -9
- package/status-card/public_api.d.ts +0 -1
- package/status-card/status-card.component.d.ts +0 -13
- package/stepper/public_api.d.ts +0 -2
- package/stepper/step.model.d.ts +0 -6
- package/stepper/stepper.component.d.ts +0 -16
- package/tag/public_api.d.ts +0 -1
- package/tag/tag.component.d.ts +0 -24
- package/text-measurement/public_api.d.ts +0 -1
- package/text-measurement/text-measurement.service.d.ts +0 -8
- package/textarea/public_api.d.ts +0 -1
- package/textarea/textarea.directive.d.ts +0 -11
- package/toggle/public_api.d.ts +0 -1
- package/toggle/toggle.component.d.ts +0 -52
- package/tooltip/public_api.d.ts +0 -1
- package/tooltip/tooltip.directive.d.ts +0 -59
- package/tooltip/tooltip.service.d.ts +0 -11
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { isInternalNavSelectorEntryAGroup, isInternalNavSelectorEntryALeaf, isInternalNavSelectorEntryANode, } from '../nav-selector';
|
|
2
|
-
/**
|
|
3
|
-
* Create a Record of key/value pairs from an array of objects
|
|
4
|
-
* @param array
|
|
5
|
-
* @param key attribute of the object to use as key
|
|
6
|
-
*/
|
|
7
|
-
export const associateBy = (array, key) => array.reduce((previousValue, currentValue) => {
|
|
8
|
-
previousValue[`${currentValue[key]}`] = currentValue;
|
|
9
|
-
return previousValue;
|
|
10
|
-
}, {});
|
|
11
|
-
export const isInternalNavSelectorEntryALeafFocusable = (leaf, { parentFolded, multipleMode }) => {
|
|
12
|
-
if (parentFolded) {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
if (multipleMode) {
|
|
16
|
-
return !leaf.disabled && !leaf.displayTokenInvalid && !leaf.displayFeatureLocked;
|
|
17
|
-
}
|
|
18
|
-
return !leaf.disabled;
|
|
19
|
-
};
|
|
20
|
-
export const computeFolded = (entry, children) => {
|
|
21
|
-
// If the entry is not folded, we keep it unfolded
|
|
22
|
-
if (!entry.folded) {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
return !children.some(child => (isInternalNavSelectorEntryALeaf(child) && (child.selected || !child.folded)) ||
|
|
26
|
-
(isInternalNavSelectorEntryANode(child) && !child.folded) ||
|
|
27
|
-
(isInternalNavSelectorEntryAGroup(child) && child.undeterminedSelection));
|
|
28
|
-
};
|
|
29
|
-
export const computeNumberOfDisplayableChildrenOnUnfold = (entry) => {
|
|
30
|
-
if (isInternalNavSelectorEntryANode(entry)) {
|
|
31
|
-
const nbChildren = entry.children.length;
|
|
32
|
-
const nbDisplayableChildrenOfUnfoldedChild = entry.children
|
|
33
|
-
.filter(child => !child.folded)
|
|
34
|
-
.reduce((acc, child) => {
|
|
35
|
-
return acc + computeNumberOfDisplayableChildrenOnUnfold(child);
|
|
36
|
-
}, 0);
|
|
37
|
-
return nbDisplayableChildrenOfUnfoldedChild + nbChildren;
|
|
38
|
-
}
|
|
39
|
-
if (isInternalNavSelectorEntryALeaf(entry)) {
|
|
40
|
-
return entry.details.length;
|
|
41
|
-
}
|
|
42
|
-
return 0;
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhZi51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL3V0aWxzL2xlYWYudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtILGdDQUFnQyxFQUNoQywrQkFBK0IsRUFDL0IsK0JBQStCLEdBQ2xDLE1BQU0saUJBQWlCLENBQUM7QUFZekI7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFJLEtBQVUsRUFBRSxHQUF3QixFQUFxQixFQUFFLENBQ3RGLEtBQUssQ0FBQyxNQUFNLENBQ1IsQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLEVBQUU7SUFDNUIsYUFBYSxDQUFDLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUM7SUFDckQsT0FBTyxhQUFhLENBQUM7QUFDekIsQ0FBQyxFQUNELEVBQXVCLENBQzFCLENBQUM7QUFFTixNQUFNLENBQUMsTUFBTSx3Q0FBd0MsR0FBRyxDQUNwRCxJQUE2QixFQUM3QixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQW9ELEVBQ3pFLEVBQUU7SUFDVCxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2YsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELElBQUksWUFBWSxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNyRixDQUFDO0lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDMUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQ3pCLEtBQTZELEVBQzdELFFBQW9DLEVBQzdCLEVBQUU7SUFDVCxrREFBa0Q7SUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2pCLEtBQUssQ0FBQyxFQUFFLENBQ0osQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0UsQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDekQsQ0FBQyxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FDL0UsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUFHLENBQUMsS0FBK0IsRUFBVSxFQUFFO0lBQ2xHLElBQUksK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUN6QyxNQUFNLG9DQUFvQyxHQUFHLEtBQUssQ0FBQyxRQUFRO2FBQ3RELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQzthQUM5QixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxHQUFHLEdBQUcsMENBQTBDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ1YsT0FBTyxvQ0FBb0MsR0FBRyxVQUFVLENBQUM7SUFDN0QsQ0FBQztJQUNELElBQUksK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNiLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckNhdGVnb3J5LFxuICAgIEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSxcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXAsXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYsXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBR3JvdXAsXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZixcbiAgICBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFOb2RlLFxufSBmcm9tICcuLi9uYXYtc2VsZWN0b3InO1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBleHRyYWN0IGtleXMgb2YgYW4gb2JqZWN0IHRoYXQgYXJlIG9mIHR5cGUgc3RyaW5nLCBudW1iZXIgb3Igc3ltYm9sIHdoaWNoIGFyZSB0aGUgb25seSB0eXBlIGFsbG93ZWQgaW4gYSBSZWNvcmRcbiAqL1xudHlwZSBBbGxvd2VkS2V5PFQ+ID0gUGljazxcbiAgICBULFxuICAgIHtcbiAgICAgICAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wgPyBLIDogbmV2ZXI7XG4gICAgfVtrZXlvZiBUXVxuPjtcblxuLyoqXG4gKiBDcmVhdGUgYSBSZWNvcmQgb2Yga2V5L3ZhbHVlIHBhaXJzIGZyb20gYW4gYXJyYXkgb2Ygb2JqZWN0c1xuICogQHBhcmFtIGFycmF5XG4gKiBAcGFyYW0ga2V5IGF0dHJpYnV0ZSBvZiB0aGUgb2JqZWN0IHRvIHVzZSBhcyBrZXlcbiAqL1xuZXhwb3J0IGNvbnN0IGFzc29jaWF0ZUJ5ID0gPFQ+KGFycmF5OiBUW10sIGtleToga2V5b2YgQWxsb3dlZEtleTxUPik6IFJlY29yZDxzdHJpbmcsIFQ+ID0+XG4gICAgYXJyYXkucmVkdWNlKFxuICAgICAgICAocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlW2Ake2N1cnJlbnRWYWx1ZVtrZXldfWBdID0gY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIFQ+XG4gICAgKTtcblxuZXhwb3J0IGNvbnN0IGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWZGb2N1c2FibGUgPSAoXG4gICAgbGVhZjogSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYsXG4gICAgeyBwYXJlbnRGb2xkZWQsIG11bHRpcGxlTW9kZSB9OiB7IHBhcmVudEZvbGRlZDogYm9vbGVhbjsgbXVsdGlwbGVNb2RlOiBib29sZWFuIH1cbik6IGJvb2xlYW4gPT4ge1xuICAgIGlmIChwYXJlbnRGb2xkZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobXVsdGlwbGVNb2RlKSB7XG4gICAgICAgIHJldHVybiAhbGVhZi5kaXNhYmxlZCAmJiAhbGVhZi5kaXNwbGF5VG9rZW5JbnZhbGlkICYmICFsZWFmLmRpc3BsYXlGZWF0dXJlTG9ja2VkO1xuICAgIH1cbiAgICByZXR1cm4gIWxlYWYuZGlzYWJsZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgY29tcHV0ZUZvbGRlZCA9IChcbiAgICBlbnRyeTogSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwIHwgSW50ZXJuYWxOYXZTZWxlY3RvckNhdGVnb3J5LFxuICAgIGNoaWxkcmVuOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXVxuKTogYm9vbGVhbiA9PiB7XG4gICAgLy8gSWYgdGhlIGVudHJ5IGlzIG5vdCBmb2xkZWQsIHdlIGtlZXAgaXQgdW5mb2xkZWRcbiAgICBpZiAoIWVudHJ5LmZvbGRlZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAhY2hpbGRyZW4uc29tZShcbiAgICAgICAgY2hpbGQgPT5cbiAgICAgICAgICAgIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmKGNoaWxkKSAmJiAoY2hpbGQuc2VsZWN0ZWQgfHwgIWNoaWxkLmZvbGRlZCkpIHx8XG4gICAgICAgICAgICAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTm9kZShjaGlsZCkgJiYgIWNoaWxkLmZvbGRlZCkgfHxcbiAgICAgICAgICAgIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFHcm91cChjaGlsZCkgJiYgY2hpbGQudW5kZXRlcm1pbmVkU2VsZWN0aW9uKVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgY29tcHV0ZU51bWJlck9mRGlzcGxheWFibGVDaGlsZHJlbk9uVW5mb2xkID0gKGVudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkpOiBudW1iZXIgPT4ge1xuICAgIGlmIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFOb2RlKGVudHJ5KSkge1xuICAgICAgICBjb25zdCBuYkNoaWxkcmVuID0gZW50cnkuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgICBjb25zdCBuYkRpc3BsYXlhYmxlQ2hpbGRyZW5PZlVuZm9sZGVkQ2hpbGQgPSBlbnRyeS5jaGlsZHJlblxuICAgICAgICAgICAgLmZpbHRlcihjaGlsZCA9PiAhY2hpbGQuZm9sZGVkKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2MgKyBjb21wdXRlTnVtYmVyT2ZEaXNwbGF5YWJsZUNoaWxkcmVuT25VbmZvbGQoY2hpbGQpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIHJldHVybiBuYkRpc3BsYXlhYmxlQ2hpbGRyZW5PZlVuZm9sZGVkQ2hpbGQgKyBuYkNoaWxkcmVuO1xuICAgIH1cbiAgICBpZiAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZihlbnRyeSkpIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5LmRldGFpbHMubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn07XG4iXX0=
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import { isInternalNavSelectorEntryACategory, isInternalNavSelectorEntryAGroup, isInternalNavSelectorEntryALeaf, isInternalNavSelectorEntryALeafDetails, } from '../nav-selector';
|
|
2
|
-
/**
|
|
3
|
-
* NavSelectorAccessibility is a utility class that provides methods to manage the accessibility and the focusability of nav selector entries.
|
|
4
|
-
*/
|
|
5
|
-
export class NavSelectorAccessibility {
|
|
6
|
-
/**
|
|
7
|
-
* Set tabIndex to 0 for the first focusable entry and -1 for all other entries
|
|
8
|
-
* @param entries nav selector entries
|
|
9
|
-
*/
|
|
10
|
-
static resetFocus(entries) {
|
|
11
|
-
const flattenEntries = this.flatten(entries);
|
|
12
|
-
let alreadyFocused = false;
|
|
13
|
-
for (const entry of flattenEntries) {
|
|
14
|
-
if (alreadyFocused) {
|
|
15
|
-
entry.accessibility.tabIndex = -1;
|
|
16
|
-
}
|
|
17
|
-
else if (entry.focusable) {
|
|
18
|
-
alreadyFocused = true;
|
|
19
|
-
entry.accessibility.tabIndex = 0;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
entry.accessibility.tabIndex = -1;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return this.unflatten(flattenEntries);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Focus the given entry and set tabIndex to 0 for the given uid and -1 for all other entries
|
|
29
|
-
* @param entries nav selector entries
|
|
30
|
-
* @param uid the uid of the entry to focus
|
|
31
|
-
*/
|
|
32
|
-
static focus(entries, uid) {
|
|
33
|
-
return entries.map(entry => {
|
|
34
|
-
if (isInternalNavSelectorEntryAGroup(entry) || isInternalNavSelectorEntryACategory(entry)) {
|
|
35
|
-
return {
|
|
36
|
-
...this.focusAnEntry(entry, uid),
|
|
37
|
-
children: NavSelectorAccessibility.focus(entry.children, uid),
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
if (isInternalNavSelectorEntryALeaf(entry)) {
|
|
41
|
-
return {
|
|
42
|
-
...this.focusAnEntry(entry, uid),
|
|
43
|
-
details: entry.details.map(detail => this.focusAnEntry(detail, uid)),
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
return this.focusAnEntry(entry, uid);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Unfocus the given entry and set tabIndex to -1 for the given uid and 0 for all other entries
|
|
51
|
-
* @param entries nav selector entries
|
|
52
|
-
* @param uid the uid of the entry to unfocus
|
|
53
|
-
*/
|
|
54
|
-
static unfocus(entries, uid) {
|
|
55
|
-
return entries.map(entry => {
|
|
56
|
-
if (isInternalNavSelectorEntryAGroup(entry) || isInternalNavSelectorEntryACategory(entry)) {
|
|
57
|
-
return {
|
|
58
|
-
...this.unfocusAnEntry(entry, uid),
|
|
59
|
-
children: NavSelectorAccessibility.unfocus(entry.children, uid),
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
if (isInternalNavSelectorEntryALeaf(entry)) {
|
|
63
|
-
return {
|
|
64
|
-
...this.unfocusAnEntry(entry, uid),
|
|
65
|
-
details: entry.details.map(detail => this.unfocusAnEntry(detail, uid)),
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
return this.unfocusAnEntry(entry, uid);
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Focus the previous entry focusable and set tabIndex to 0 for the previous focusable entry and -1 for all other entries
|
|
73
|
-
*
|
|
74
|
-
* If not previous entries are focusable, entries will not be modified
|
|
75
|
-
*
|
|
76
|
-
* @param entries nav selector entries
|
|
77
|
-
*/
|
|
78
|
-
static focusPrevious(entries) {
|
|
79
|
-
const flattenEntries = this.flatten(entries);
|
|
80
|
-
const idxFocusedId = flattenEntries.findIndex(({ accessibility }) => accessibility.tabIndex === 0);
|
|
81
|
-
if (idxFocusedId === 0 || this.noPreviousEntryFocusable(flattenEntries, idxFocusedId)) {
|
|
82
|
-
return entries;
|
|
83
|
-
}
|
|
84
|
-
const focusedEntry = flattenEntries[idxFocusedId];
|
|
85
|
-
focusedEntry.accessibility.tabIndex = -1;
|
|
86
|
-
for (let i = idxFocusedId - 1; i >= 0; i--) {
|
|
87
|
-
const entry = flattenEntries[i];
|
|
88
|
-
if (entry.focusable) {
|
|
89
|
-
entry.accessibility.tabIndex = 0;
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return this.unflatten(flattenEntries);
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Focus the next entry focusable and set tabIndex to 0 for the next focusable entry and -1 for all other entries
|
|
97
|
-
*
|
|
98
|
-
* If not next entries are focusable, entries will not be modified
|
|
99
|
-
*
|
|
100
|
-
* @param entries nav selector entries
|
|
101
|
-
*/
|
|
102
|
-
static focusNext(entries) {
|
|
103
|
-
const flattenEntries = this.flatten(entries);
|
|
104
|
-
const focusableFlattenEntries = flattenEntries.filter(entry => entry.focusable);
|
|
105
|
-
const idxFocusedId = focusableFlattenEntries.findIndex(({ accessibility }) => accessibility.tabIndex === 0);
|
|
106
|
-
if (focusableFlattenEntries.length - 1 <= idxFocusedId) {
|
|
107
|
-
return entries;
|
|
108
|
-
}
|
|
109
|
-
focusableFlattenEntries[idxFocusedId].accessibility.tabIndex = -1;
|
|
110
|
-
focusableFlattenEntries[idxFocusedId + 1].accessibility.tabIndex = 0;
|
|
111
|
-
return this.unflatten(flattenEntries);
|
|
112
|
-
}
|
|
113
|
-
static noPreviousEntryFocusable(flattenEntries, idxFocusedId) {
|
|
114
|
-
for (let i = idxFocusedId - 1; i >= 0; i--) {
|
|
115
|
-
const entry = flattenEntries[i];
|
|
116
|
-
if (entry.focusable) {
|
|
117
|
-
return false;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return true;
|
|
121
|
-
}
|
|
122
|
-
static focusAnEntry(entry, uid) {
|
|
123
|
-
return { ...entry, accessibility: { ...entry.accessibility, tabIndex: entry.uid === uid ? 0 : -1 } };
|
|
124
|
-
}
|
|
125
|
-
static unfocusAnEntry(entry, uid) {
|
|
126
|
-
return { ...entry, accessibility: { ...entry.accessibility, tabIndex: entry.uid === uid ? -1 : entry.accessibility.tabIndex } };
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Flatten the nav selector entries. It is easier to work with flat entries for the focus management as we need to know which is the previous or the next entry
|
|
130
|
-
* @param entries nav selector entries
|
|
131
|
-
*/
|
|
132
|
-
static flatten(entries) {
|
|
133
|
-
return entries.flatMap(entry => {
|
|
134
|
-
if (isInternalNavSelectorEntryAGroup(entry) || isInternalNavSelectorEntryACategory(entry)) {
|
|
135
|
-
return [{ ...entry, children: [] }, ...this.flatten(entry.children)];
|
|
136
|
-
}
|
|
137
|
-
if (isInternalNavSelectorEntryALeaf(entry)) {
|
|
138
|
-
return [{ ...entry, details: [] }, ...entry.details.map(detail => ({ ...detail }))];
|
|
139
|
-
}
|
|
140
|
-
return [{ ...entry }];
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Unflatten the nav selector entries
|
|
145
|
-
* @param entries nav selector entries
|
|
146
|
-
*/
|
|
147
|
-
static unflatten(entries) {
|
|
148
|
-
return entries.reduceRight((acc, entry) => {
|
|
149
|
-
if (!acc.length) {
|
|
150
|
-
return [entry];
|
|
151
|
-
}
|
|
152
|
-
if (entry.accessibility.ariaLevel < acc[0].accessibility.ariaLevel) {
|
|
153
|
-
if (isInternalNavSelectorEntryALeaf(entry)) {
|
|
154
|
-
return [
|
|
155
|
-
{
|
|
156
|
-
...entry,
|
|
157
|
-
details: acc
|
|
158
|
-
.filter(it => isInternalNavSelectorEntryALeafDetails(it))
|
|
159
|
-
// Force destroying the reference to the original object else Angular will not detect the change
|
|
160
|
-
.map(it => ({ ...it })),
|
|
161
|
-
},
|
|
162
|
-
...acc.filter(it => !isInternalNavSelectorEntryALeafDetails(it)),
|
|
163
|
-
];
|
|
164
|
-
}
|
|
165
|
-
else if (isInternalNavSelectorEntryAGroup(entry) || isInternalNavSelectorEntryACategory(entry)) {
|
|
166
|
-
return [
|
|
167
|
-
{
|
|
168
|
-
...entry,
|
|
169
|
-
children: acc.filter(({ accessibility }) => accessibility.ariaLevel > entry.accessibility.ariaLevel),
|
|
170
|
-
},
|
|
171
|
-
...acc.filter(({ accessibility }) => accessibility.ariaLevel <= entry.accessibility.ariaLevel),
|
|
172
|
-
];
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
return [entry, ...acc];
|
|
176
|
-
}, []);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmFjY2Vzc2liaWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvbmF2LXNlbGVjdG9yL3NyYy91dGlscy9uYXYtc2VsZWN0b3IuYWNjZXNzaWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBS0gsbUNBQW1DLEVBQ25DLGdDQUFnQyxFQUNoQywrQkFBK0IsRUFDL0Isc0NBQXNDLEdBQ3pDLE1BQU0saUJBQWlCLENBQUM7QUFFekI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ2pDOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBbUM7UUFDakQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU3QyxJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFFM0IsS0FBSyxNQUFNLEtBQUssSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNqQyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0QyxDQUFDO2lCQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN6QixjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFDckMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBcUMsT0FBWSxFQUFFLEdBQVc7UUFDdEUsT0FBTyxPQUFP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QUNOLENBQUM7cUJBQU0sSUFBSSxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsSUFBSSxtQ0FBbUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUMvRixPQUFPO3dCQUNIOzRCQUNJLEdBQUcsS0FBSzs0QkFDUixRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FDaEIsQ0FBQyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUNwRDt5QkFDakM7d0JBQ0QsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztxQkFDakcsQ0FBQztnQkFDTixDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDLEVBQUUsRUFBZ0MsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5LFxuICAgIEludGVybmFsTmF2U2VsZWN0b3JHcm91cCxcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZixcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZkRldGFpbHMsXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBQ2F0ZWdvcnksXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBR3JvdXAsXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZixcbiAgICBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmRGV0YWlscyxcbn0gZnJvbSAnLi4vbmF2LXNlbGVjdG9yJztcblxuLyoqXG4gKiBOYXZTZWxlY3RvckFjY2Vzc2liaWxpdHkgaXMgYSB1dGlsaXR5IGNsYXNzIHRoYXQgcHJvdmlkZXMgbWV0aG9kcyB0byBtYW5hZ2UgdGhlIGFjY2Vzc2liaWxpdHkgYW5kIHRoZSBmb2N1c2FiaWxpdHkgb2YgbmF2IHNlbGVjdG9yIGVudHJpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYXZTZWxlY3RvckFjY2Vzc2liaWxpdHkge1xuICAgIC8qKlxuICAgICAqIFNldCB0YWJJbmRleCB0byAwIGZvciB0aGUgZmlyc3QgZm9jdXNhYmxlIGVudHJ5IGFuZCAtMSBmb3IgYWxsIG90aGVyIGVudHJpZXNcbiAgICAgKiBAcGFyYW0gZW50cmllcyBuYXYgc2VsZWN0b3IgZW50cmllc1xuICAgICAqL1xuICAgIHN0YXRpYyByZXNldEZvY3VzKGVudHJpZXM6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeVtdKTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10ge1xuICAgICAgICBjb25zdCBmbGF0dGVuRW50cmllcyA9IHRoaXMuZmxhdHRlbihlbnRyaWVzKTtcblxuICAgICAgICBsZXQgYWxyZWFkeUZvY3VzZWQgPSBmYWxzZTtcblxuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGZsYXR0ZW5FbnRyaWVzKSB7XG4gICAgICAgICAgICBpZiAoYWxyZWFkeUZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICBlbnRyeS5hY2Nlc3NpYmlsaXR5LnRhYkluZGV4ID0gLTE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LmZvY3VzYWJsZSkge1xuICAgICAgICAgICAgICAgIGFscmVhZHlGb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBlbnRyeS5hY2Nlc3NpYmlsaXR5LnRhYkluZGV4ID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZW50cnkuYWNjZXNzaWJpbGl0eS50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudW5mbGF0dGVuKGZsYXR0ZW5FbnRyaWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb2N1cyB0aGUgZ2l2ZW4gZW50cnkgYW5kIHNldCB0YWJJbmRleCB0byAwIGZvciB0aGUgZ2l2ZW4gdWlkIGFuZCAtMSBmb3IgYWxsIG90aGVyIGVudHJpZXNcbiAgICAgKiBAcGFyYW0gZW50cmllcyBuYXYgc2VsZWN0b3IgZW50cmllc1xuICAgICAqIEBwYXJhbSB1aWQgdGhlIHVpZCBvZiB0aGUgZW50cnkgdG8gZm9jdXNcbiAgICAgKi9cbiAgICBzdGF0aWMgZm9jdXM8VCBleHRlbmRzIEludGVybmFsTmF2U2VsZWN0b3JFbnRyeT4oZW50cmllczogVFtdLCB1aWQ6IHN0cmluZyk6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeVtdIHtcbiAgICAgICAgcmV0dXJuIGVudHJpZXMubWFwKGVudHJ5ID0+IHtcbiAgICAgICAgICAgIGlmIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFHcm91cChlbnRyeSkgfHwgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBQ2F0ZWdvcnkoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5mb2N1c0FuRW50cnkoZW50cnksIHVpZCksXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBOYXZTZWxlY3RvckFjY2Vzc2liaWxpdHkuZm9jdXMoZW50cnkuY2hpbGRyZW4sIHVpZCksXG4gICAgICAgICAgICAgICAgfSBhcyBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZihlbnRyeSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmZvY3VzQW5FbnRyeShlbnRyeSwgdWlkKSxcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsczogZW50cnkuZGV0YWlscy5tYXAoZGV0YWlsID0+IHRoaXMuZm9jdXNBbkVudHJ5KGRldGFpbCwgdWlkKSksXG4gICAgICAgICAgICAgICAgfSBhcyBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvY3VzQW5FbnRyeShlbnRyeSwgdWlkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVW5mb2N1cyB0aGUgZ2l2ZW4gZW50cnkgYW5kIHNldCB0YWJJbmRleCB0byAtMSBmb3IgdGhlIGdpdmVuIHVpZCBhbmQgMCBmb3IgYWxsIG90aGVyIGVudHJpZXNcbiAgICAgKiBAcGFyYW0gZW50cmllcyBuYXYgc2VsZWN0b3IgZW50cmllc1xuICAgICAqIEBwYXJhbSB1aWQgdGhlIHVpZCBvZiB0aGUgZW50cnkgdG8gdW5mb2N1c1xuICAgICAqL1xuICAgIHN0YXRpYyB1bmZvY3VzKGVudHJpZXM6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeVtdLCB1aWQ6IHN0cmluZyk6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeVtdIHtcbiAgICAgICAgcmV0dXJuIGVudHJpZXMubWFwKGVudHJ5ID0+IHtcbiAgICAgICAgICAgIGlmIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFHcm91cChlbnRyeSkgfHwgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBQ2F0ZWdvcnkoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy51bmZvY3VzQW5FbnRyeShlbnRyeSwgdWlkKSxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IE5hdlNlbGVjdG9yQWNjZXNzaWJpbGl0eS51bmZvY3VzKGVudHJ5LmNoaWxkcmVuLCB1aWQpLFxuICAgICAgICAgICAgICAgIH0gYXMgSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy51bmZvY3VzQW5FbnRyeShlbnRyeSwgdWlkKSxcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsczogZW50cnkuZGV0YWlscy5tYXAoZGV0YWlsID0+IHRoaXMudW5mb2N1c0FuRW50cnkoZGV0YWlsLCB1aWQpKSxcbiAgICAgICAgICAgICAgICB9IGFzIEludGVybmFsTmF2U2VsZWN0b3JMZWFmO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW5mb2N1c0FuRW50cnkoZW50cnksIHVpZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY3VzIHRoZSBwcmV2aW91cyBlbnRyeSBmb2N1c2FibGUgYW5kIHNldCB0YWJJbmRleCB0byAwIGZvciB0aGUgcHJldmlvdXMgZm9jdXNhYmxlIGVudHJ5IGFuZCAtMSBmb3IgYWxsIG90aGVyIGVudHJpZXNcbiAgICAgKlxuICAgICAqIElmIG5vdCBwcmV2aW91cyBlbnRyaWVzIGFyZSBmb2N1c2FibGUsIGVudHJpZXMgd2lsbCBub3QgYmUgbW9kaWZpZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbnRyaWVzIG5hdiBzZWxlY3RvciBlbnRyaWVzXG4gICAgICovXG4gICAgc3RhdGljIGZvY3VzUHJldmlvdXM8VCBleHRlbmRzIEludGVybmFsTmF2U2VsZWN0b3JFbnRyeT4oZW50cmllczogVFtdKTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10ge1xuICAgICAgICBjb25zdCBmbGF0dGVuRW50cmllcyA9IHRoaXMuZmxhdHRlbihlbnRyaWVzKTtcblxuICAgICAgICBjb25zdCBpZHhGb2N1c2VkSWQgPSBmbGF0dGVuRW50cmllcy5maW5kSW5kZXgoKHsgYWNjZXNzaWJpbGl0eSB9KSA9PiBhY2Nlc3NpYmlsaXR5LnRhYkluZGV4ID09PSAwKTtcblxuICAgICAgICBpZiAoaWR4Rm9jdXNlZElkID09PSAwIHx8IHRoaXMubm9QcmV2aW91c0VudHJ5Rm9jdXNhYmxlKGZsYXR0ZW5FbnRyaWVzLCBpZHhGb2N1c2VkSWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZW50cmllcztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvY3VzZWRFbnRyeSA9IGZsYXR0ZW5FbnRyaWVzW2lkeEZvY3VzZWRJZF07XG4gICAgICAgIGZvY3VzZWRFbnRyeS5hY2Nlc3NpYmlsaXR5LnRhYkluZGV4ID0gLTE7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGlkeEZvY3VzZWRJZCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IGZsYXR0ZW5FbnRyaWVzW2ldO1xuICAgICAgICAgICAgaWYgKGVudHJ5LmZvY3VzYWJsZSkge1xuICAgICAgICAgICAgICAgIGVudHJ5LmFjY2Vzc2liaWxpdHkudGFiSW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudW5mbGF0dGVuKGZsYXR0ZW5FbnRyaWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb2N1cyB0aGUgbmV4dCBlbnRyeSBmb2N1c2FibGUgYW5kIHNldCB0YWJJbmRleCB0byAwIGZvciB0aGUgbmV4dCBmb2N1c2FibGUgZW50cnkgYW5kIC0xIGZvciBhbGwgb3RoZXIgZW50cmllc1xuICAgICAqXG4gICAgICogSWYgbm90IG5leHQgZW50cmllcyBhcmUgZm9jdXNhYmxlLCBlbnRyaWVzIHdpbGwgbm90IGJlIG1vZGlmaWVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZW50cmllcyBuYXYgc2VsZWN0b3IgZW50cmllc1xuICAgICAqL1xuICAgIHN0YXRpYyBmb2N1c05leHQ8VCBleHRlbmRzIEludGVybmFsTmF2U2VsZWN0b3JFbnRyeT4oZW50cmllczogVFtdKTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10ge1xuICAgICAgICBjb25zdCBmbGF0dGVuRW50cmllcyA9IHRoaXMuZmxhdHRlbihlbnRyaWVzKTtcblxuICAgICAgICBjb25zdCBmb2N1c2FibGVGbGF0dGVuRW50cmllcyA9IGZsYXR0ZW5FbnRyaWVzLmZpbHRlcihlbnRyeSA9PiBlbnRyeS5mb2N1c2FibGUpO1xuXG4gICAgICAgIGNvbnN0IGlkeEZvY3VzZWRJZCA9IGZvY3VzYWJsZUZsYXR0ZW5FbnRyaWVzLmZpbmRJbmRleCgoeyBhY2Nlc3NpYmlsaXR5IH0pID0+IGFjY2Vzc2liaWxpdHkudGFiSW5kZXggPT09IDApO1xuXG4gICAgICAgIGlmIChmb2N1c2FibGVGbGF0dGVuRW50cmllcy5sZW5ndGggLSAxIDw9IGlkeEZvY3VzZWRJZCkge1xuICAgICAgICAgICAgcmV0dXJuIGVudHJpZXM7XG4gICAgICAgIH1cblxuICAgICAgICBmb2N1c2FibGVGbGF0dGVuRW50cmllc1tpZHhGb2N1c2VkSWRdLmFjY2Vzc2liaWxpdHkudGFiSW5kZXggPSAtMTtcblxuICAgICAgICBmb2N1c2FibGVGbGF0dGVuRW50cmllc1tpZHhGb2N1c2VkSWQgKyAxXS5hY2Nlc3NpYmlsaXR5LnRhYkluZGV4ID0gMDtcblxuICAgICAgICByZXR1cm4gdGhpcy51bmZsYXR0ZW4oZmxhdHRlbkVudHJpZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIG5vUHJldmlvdXNFbnRyeUZvY3VzYWJsZShmbGF0dGVuRW50cmllczogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10sIGlkeEZvY3VzZWRJZDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGZvciAobGV0IGkgPSBpZHhGb2N1c2VkSWQgLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSBmbGF0dGVuRW50cmllc1tpXTtcbiAgICAgICAgICAgIGlmIChlbnRyeS5mb2N1c2FibGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBmb2N1c0FuRW50cnkoZW50cnk6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSwgdWlkOiBzdHJpbmcpOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkge1xuICAgICAgICByZXR1cm4geyAuLi5lbnRyeSwgYWNjZXNzaWJpbGl0eTogeyAuLi5lbnRyeS5hY2Nlc3NpYmlsaXR5LCB0YWJJbmRleDogZW50cnkudWlkID09PSB1aWQgPyAwIDogLTEgfSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHVuZm9jdXNBbkVudHJ5KGVudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnksIHVpZDogc3RyaW5nKTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uZW50cnksIGFjY2Vzc2liaWxpdHk6IHsgLi4uZW50cnkuYWNjZXNzaWJpbGl0eSwgdGFiSW5kZXg6IGVudHJ5LnVpZCA9PT0gdWlkID8gLTEgOiBlbnRyeS5hY2Nlc3NpYmlsaXR5LnRhYkluZGV4IH0gfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGbGF0dGVuIHRoZSBuYXYgc2VsZWN0b3IgZW50cmllcy4gSXQgaXMgZWFzaWVyIHRvIHdvcmsgd2l0aCBmbGF0IGVudHJpZXMgZm9yIHRoZSBmb2N1cyBtYW5hZ2VtZW50IGFzIHdlIG5lZWQgdG8ga25vdyB3aGljaCBpcyB0aGUgcHJldmlvdXMgb3IgdGhlIG5leHQgZW50cnlcbiAgICAgKiBAcGFyYW0gZW50cmllcyBuYXYgc2VsZWN0b3IgZW50cmllc1xuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIGZsYXR0ZW4oZW50cmllczogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10pOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIHJldHVybiBlbnRyaWVzLmZsYXRNYXAoZW50cnkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUdyb3VwKGVudHJ5KSB8fCBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFDYXRlZ29yeShlbnRyeSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW3sgLi4uZW50cnksIGNoaWxkcmVuOiBbXSB9LCAuLi50aGlzLmZsYXR0ZW4oZW50cnkuY2hpbGRyZW4pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmKGVudHJ5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbeyAuLi5lbnRyeSwgZGV0YWlsczogW10gfSwgLi4uZW50cnkuZGV0YWlscy5tYXAoZGV0YWlsID0+ICh7IC4uLmRldGFpbCB9KSldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFt7IC4uLmVudHJ5IH1dO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbmZsYXR0ZW4gdGhlIG5hdiBzZWxlY3RvciBlbnRyaWVzXG4gICAgICogQHBhcmFtIGVudHJpZXMgbmF2IHNlbGVjdG9yIGVudHJpZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyB1bmZsYXR0ZW48VCBleHRlbmRzIEludGVybmFsTmF2U2VsZWN0b3JFbnRyeT4oZW50cmllczogVFtdKTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10ge1xuICAgICAgICByZXR1cm4gZW50cmllcy5yZWR1Y2VSaWdodCgoYWNjLCBlbnRyeSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFhY2MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtlbnRyeV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZW50cnkuYWNjZXNzaWJpbGl0eS5hcmlhTGV2ZWwgPCBhY2NbMF0uYWNjZXNzaWJpbGl0eS5hcmlhTGV2ZWwpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZihlbnRyeSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzOiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihpdCA9PiBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmRGV0YWlscyhpdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvcmNlIGRlc3Ryb3lpbmcgdGhlIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgb2JqZWN0IGVsc2UgQW5ndWxhciB3aWxsIG5vdCBkZXRlY3QgdGhlIGNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGl0ID0+ICh7IC4uLml0IH0pKSBhcyBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZkRldGFpbHNbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5hY2MuZmlsdGVyKGl0ID0+ICFpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmRGV0YWlscyhpdCkpLFxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBR3JvdXAoZW50cnkpIHx8IGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUNhdGVnb3J5KGVudHJ5KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmVudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBhY2MuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeyBhY2Nlc3NpYmlsaXR5IH0pID0+IGFjY2Vzc2liaWxpdHkuYXJpYUxldmVsID4gZW50cnkuYWNjZXNzaWJpbGl0eS5hcmlhTGV2ZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEludGVybmFsTmF2U2VsZWN0b3JMZWFmW10sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWNjLmZpbHRlcigoeyBhY2Nlc3NpYmlsaXR5IH0pID0+IGFjY2Vzc2liaWxpdHkuYXJpYUxldmVsIDw9IGVudHJ5LmFjY2Vzc2liaWxpdHkuYXJpYUxldmVsKSxcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW2VudHJ5LCAuLi5hY2NdO1xuICAgICAgICB9LCBbXSBhcyBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
import { isInternalNavSelectorEntryALeaf, isNavSelectorEntryACategory, isNavSelectorEntryAGroup, isNavSelectorEntryALeaf, } from '../nav-selector';
|
|
2
|
-
import { NavSelectorAccessibility } from '../utils/nav-selector.accessibility';
|
|
3
|
-
import { NavSelectorFolding } from '../utils/nav-selector.folding';
|
|
4
|
-
import { NavSelectorMultiSelect } from '../utils/nav-selector.multi-select';
|
|
5
|
-
import { NavSelectorSingleSelect } from './nav-selector.single-select';
|
|
6
|
-
const LeafLogics = {
|
|
7
|
-
DISABLED: 'DISABLED',
|
|
8
|
-
FEATURE_LOCKED: 'FEATURE_LOCKED',
|
|
9
|
-
TOKEN_INVALID: 'TOKEN_INVALID',
|
|
10
|
-
COUNTER: 'COUNTER',
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* NavSelectorBuilder is a utility class that builds the NavSelector entries for single and multiple select modes.
|
|
14
|
-
* It also checks the structure of the entries to ensure they are valid.
|
|
15
|
-
*/
|
|
16
|
-
export class NavSelectorBuilder {
|
|
17
|
-
// /!\/!\ Order of logics is important /!\/!\
|
|
18
|
-
static LEAF_LOGICS_PRIORITY = {
|
|
19
|
-
[LeafLogics.DISABLED]: (leaf) => leaf.disableReason !== null,
|
|
20
|
-
[LeafLogics.FEATURE_LOCKED]: (leaf) => leaf.featureLocked,
|
|
21
|
-
[LeafLogics.TOKEN_INVALID]: (leaf) => leaf.tokenInvalid,
|
|
22
|
-
[LeafLogics.COUNTER]: (leaf) => leaf.counter !== null,
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Builds the NavSelector entries for single select mode.
|
|
26
|
-
* @param entries nav selector entries
|
|
27
|
-
* @param selectedEntryUid selected entry uid
|
|
28
|
-
* @param detailsDisplayedLimit number of details displayed limit
|
|
29
|
-
*/
|
|
30
|
-
static build(entries, selectedEntryUid, detailsDisplayedLimit) {
|
|
31
|
-
this.structureChecker(entries);
|
|
32
|
-
let builtEntries = this.buildEntries(entries, false, 1, detailsDisplayedLimit);
|
|
33
|
-
if (selectedEntryUid) {
|
|
34
|
-
builtEntries = NavSelectorSingleSelect.select(builtEntries, selectedEntryUid);
|
|
35
|
-
builtEntries = NavSelectorFolding.unfoldParents(builtEntries, selectedEntryUid, { multipleMode: false, minified: false });
|
|
36
|
-
}
|
|
37
|
-
return builtEntries;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Builds the NavSelector entries for multiple select mode.
|
|
41
|
-
* @param entries nav selector entries
|
|
42
|
-
* @param selectedEntryUids selected entry uids
|
|
43
|
-
* @param detailsDisplayedLimit number of details displayed limit
|
|
44
|
-
*/
|
|
45
|
-
static buildInMultipleMode(entries, selectedEntryUids, detailsDisplayedLimit) {
|
|
46
|
-
this.structureChecker(entries, true);
|
|
47
|
-
let builtEntries = this.buildEntries(entries, true, 1, detailsDisplayedLimit);
|
|
48
|
-
if (selectedEntryUids) {
|
|
49
|
-
for (const selectedEntryUid of selectedEntryUids) {
|
|
50
|
-
builtEntries = NavSelectorMultiSelect.selectInMultipleMode(builtEntries, selectedEntryUid);
|
|
51
|
-
builtEntries = NavSelectorFolding.unfoldParents(builtEntries, selectedEntryUid, { multipleMode: false, minified: false });
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return builtEntries;
|
|
55
|
-
}
|
|
56
|
-
static structureChecker(entries, multipleModeEnabled = false) {
|
|
57
|
-
entries.forEach(entry => {
|
|
58
|
-
if (isNavSelectorEntryAGroup(entry) || isNavSelectorEntryACategory(entry)) {
|
|
59
|
-
this.structureChecker(entry.children, multipleModeEnabled);
|
|
60
|
-
}
|
|
61
|
-
else if (isNavSelectorEntryALeaf(entry)) {
|
|
62
|
-
if (entry.details.length && multipleModeEnabled) {
|
|
63
|
-
console.error(`NavSelectorBuilder: Leaf ${entry.uid} with details is not allowed in multiple mode`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
static buildEntries(entries, multipleModeEnabled, level = 1, detailsDisplayedLimit) {
|
|
69
|
-
const newEntries = entries
|
|
70
|
-
.map((entry, idx) => this.buildEntry(entry, { multipleModeEnabled, level, idx, totalNumberOfEntry: entries.length, detailsDisplayedLimit }))
|
|
71
|
-
.filter(it => it !== null);
|
|
72
|
-
return NavSelectorAccessibility.resetFocus(newEntries);
|
|
73
|
-
}
|
|
74
|
-
static buildEntry(entry, { multipleModeEnabled, level, idx, totalNumberOfEntry, detailsDisplayedLimit, }) {
|
|
75
|
-
if (isNavSelectorEntryALeaf(entry)) {
|
|
76
|
-
return this.buildLeaf(entry, {
|
|
77
|
-
multipleModeEnabled,
|
|
78
|
-
level,
|
|
79
|
-
idx,
|
|
80
|
-
totalNumberOfLeaf: totalNumberOfEntry,
|
|
81
|
-
focusable: true,
|
|
82
|
-
detailsDisplayedLimit,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
else if (isNavSelectorEntryACategory(entry)) {
|
|
86
|
-
return this.buildCategory(entry, {
|
|
87
|
-
multipleModeEnabled,
|
|
88
|
-
level,
|
|
89
|
-
idx,
|
|
90
|
-
totalNumberOfCategory: totalNumberOfEntry,
|
|
91
|
-
detailsDisplayedLimit,
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
return this.buildGroup(entry, {
|
|
96
|
-
multipleModeEnabled,
|
|
97
|
-
level,
|
|
98
|
-
idx,
|
|
99
|
-
totalNumberOfGroups: totalNumberOfEntry,
|
|
100
|
-
focusable: true,
|
|
101
|
-
detailsDisplayedLimit,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
static buildCategoryChildren(entry, { focusable, multipleModeEnabled, categoryLevel, detailsDisplayedLimit, }) {
|
|
106
|
-
return entry.children
|
|
107
|
-
.map((child, idx) => {
|
|
108
|
-
if (isNavSelectorEntryALeaf(child)) {
|
|
109
|
-
return this.buildLeaf(child, {
|
|
110
|
-
focusable,
|
|
111
|
-
multipleModeEnabled,
|
|
112
|
-
level: categoryLevel + 1,
|
|
113
|
-
idx,
|
|
114
|
-
totalNumberOfLeaf: entry.children.length,
|
|
115
|
-
detailsDisplayedLimit,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
return this.buildGroup(child, {
|
|
120
|
-
focusable,
|
|
121
|
-
multipleModeEnabled,
|
|
122
|
-
level: categoryLevel + 1,
|
|
123
|
-
idx,
|
|
124
|
-
totalNumberOfGroups: entry.children.length,
|
|
125
|
-
detailsDisplayedLimit,
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
})
|
|
129
|
-
.filter(it => it !== null);
|
|
130
|
-
}
|
|
131
|
-
static buildCategory(node, { multipleModeEnabled, level, idx, totalNumberOfCategory, detailsDisplayedLimit, }) {
|
|
132
|
-
const children = this.buildCategoryChildren(node, {
|
|
133
|
-
focusable: !node.folded,
|
|
134
|
-
multipleModeEnabled,
|
|
135
|
-
categoryLevel: level,
|
|
136
|
-
detailsDisplayedLimit,
|
|
137
|
-
});
|
|
138
|
-
return {
|
|
139
|
-
uid: node.uid,
|
|
140
|
-
alias: node.alias,
|
|
141
|
-
children,
|
|
142
|
-
hidden: false,
|
|
143
|
-
focusable: true,
|
|
144
|
-
accessibility: {
|
|
145
|
-
tabIndex: -1,
|
|
146
|
-
ariaLevel: level,
|
|
147
|
-
ariaPosinset: idx + 1,
|
|
148
|
-
ariaSetsize: totalNumberOfCategory,
|
|
149
|
-
},
|
|
150
|
-
folded: node.folded,
|
|
151
|
-
emptyStateTitle: node.emptyStateTitle,
|
|
152
|
-
type: node.type,
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
static buildGroupChildren(entry, { multipleModeEnabled, groupLevel, focusable, detailsDisplayedLimit, }) {
|
|
156
|
-
return entry.children
|
|
157
|
-
.map((child, idx) => this.buildLeaf(child, {
|
|
158
|
-
multipleModeEnabled,
|
|
159
|
-
level: groupLevel + 1,
|
|
160
|
-
idx,
|
|
161
|
-
totalNumberOfLeaf: entry.children.length,
|
|
162
|
-
focusable: focusable && !entry.folded,
|
|
163
|
-
detailsDisplayedLimit,
|
|
164
|
-
}))
|
|
165
|
-
.filter(it => it !== null);
|
|
166
|
-
}
|
|
167
|
-
static buildGroup(node, { focusable, multipleModeEnabled, level, idx, totalNumberOfGroups, detailsDisplayedLimit, }) {
|
|
168
|
-
const children = this.buildGroupChildren(node, { multipleModeEnabled, groupLevel: level, focusable, detailsDisplayedLimit });
|
|
169
|
-
const displayTokenInvalid = children.some(({ displayTokenInvalid }) => displayTokenInvalid);
|
|
170
|
-
const selectedChildrenCount = children.filter(({ selected }) => selected).length;
|
|
171
|
-
return {
|
|
172
|
-
uid: node.uid,
|
|
173
|
-
alias: node.alias,
|
|
174
|
-
children,
|
|
175
|
-
childrenPictureUrlSample: children
|
|
176
|
-
.map((child, idx) => isInternalNavSelectorEntryALeaf(child) && idx < 4 ? { url: child.pictureUrl, initial: child.alias[0] } : null)
|
|
177
|
-
.filter(it => it !== null),
|
|
178
|
-
hidden: false,
|
|
179
|
-
accessibility: {
|
|
180
|
-
tabIndex: -1,
|
|
181
|
-
ariaPosinset: idx + 1,
|
|
182
|
-
ariaLevel: level,
|
|
183
|
-
ariaSetsize: totalNumberOfGroups,
|
|
184
|
-
},
|
|
185
|
-
focusable,
|
|
186
|
-
displayCounter: node.folded && children.some(child => isInternalNavSelectorEntryALeaf(child) && child.counter !== 0),
|
|
187
|
-
counter: children.reduce((acc, { counter }) => acc + counter, 0),
|
|
188
|
-
displayTokenInvalid,
|
|
189
|
-
selected: false,
|
|
190
|
-
selectable: multipleModeEnabled && children.some(({ selectable }) => selectable),
|
|
191
|
-
undeterminedSelection: selectedChildrenCount !== children.length && selectedChildrenCount > 0,
|
|
192
|
-
folded: node.folded,
|
|
193
|
-
type: node.type,
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
static buildLeaf(leaf, { focusable, multipleModeEnabled, level, idx, totalNumberOfLeaf, detailsDisplayedLimit, }) {
|
|
197
|
-
if (leaf.missingPermission) {
|
|
198
|
-
return null;
|
|
199
|
-
}
|
|
200
|
-
const detailsDisplayable = this.isLeafLogicValid(leaf, LeafLogics.COUNTER) && !!leaf.details.length;
|
|
201
|
-
const foldable = !!leaf.details.length && detailsDisplayable;
|
|
202
|
-
const folded = true;
|
|
203
|
-
const counter = (leaf.details.reduce((acc, detail) => acc + (detail.counter ?? 0), 0) || leaf.counter) ?? 0;
|
|
204
|
-
const counterDisplayable = counter !== 0 && this.isLeafLogicValid(leaf, LeafLogics.COUNTER);
|
|
205
|
-
const disabled = leaf.disableReason !== null;
|
|
206
|
-
const viewMoreDisplayable = leaf.details.length > detailsDisplayedLimit;
|
|
207
|
-
return {
|
|
208
|
-
uid: leaf.uid,
|
|
209
|
-
alias: leaf.alias,
|
|
210
|
-
actions: leaf.actions,
|
|
211
|
-
pictureUrl: leaf.pictureUrl,
|
|
212
|
-
actionsDisplayable: !!leaf.actions.length && this.isLeafLogicValid(leaf, LeafLogics.COUNTER),
|
|
213
|
-
disabled,
|
|
214
|
-
disableReason: leaf.disableReason,
|
|
215
|
-
hidden: false,
|
|
216
|
-
focusable: focusable &&
|
|
217
|
-
((multipleModeEnabled && this.isLeafLogicValid(leaf, LeafLogics.COUNTER)) || (!multipleModeEnabled && !disabled)),
|
|
218
|
-
accessibility: {
|
|
219
|
-
tabIndex: -1,
|
|
220
|
-
ariaPosinset: idx + 1,
|
|
221
|
-
ariaLevel: level,
|
|
222
|
-
ariaSetsize: totalNumberOfLeaf,
|
|
223
|
-
},
|
|
224
|
-
foldable,
|
|
225
|
-
folded,
|
|
226
|
-
displayCounter: folded && counterDisplayable,
|
|
227
|
-
counterDisplayable,
|
|
228
|
-
counter,
|
|
229
|
-
network: leaf.network,
|
|
230
|
-
displayTokenInvalid: leaf.tokenInvalid && this.isLeafLogicValid(leaf, LeafLogics.TOKEN_INVALID, LeafLogics.COUNTER),
|
|
231
|
-
displayFeatureLocked: leaf.featureLocked && this.isLeafLogicValid(leaf, LeafLogics.FEATURE_LOCKED, LeafLogics.TOKEN_INVALID, LeafLogics.COUNTER),
|
|
232
|
-
selected: false,
|
|
233
|
-
selectable: multipleModeEnabled
|
|
234
|
-
? this.isLeafLogicValid(leaf, LeafLogics.COUNTER)
|
|
235
|
-
: this.isLeafLogicValid(leaf, LeafLogics.FEATURE_LOCKED, LeafLogics.TOKEN_INVALID, LeafLogics.COUNTER),
|
|
236
|
-
detailsDisplayable,
|
|
237
|
-
details: leaf.details.map(detail => this.buildLeafDetail(detail, level + 1, focusable && !folded)),
|
|
238
|
-
detailSelected: false,
|
|
239
|
-
type: 'LEAF',
|
|
240
|
-
viewMoreDisplayable,
|
|
241
|
-
viewMoreDisplayed: viewMoreDisplayable,
|
|
242
|
-
viewMoreDetailsDisplayedLimit: detailsDisplayedLimit,
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
static buildLeafDetail(detail, level, focusable) {
|
|
246
|
-
return {
|
|
247
|
-
uid: detail.uid,
|
|
248
|
-
counter: detail.counter ?? 0,
|
|
249
|
-
displayCounter: detail.counter !== null,
|
|
250
|
-
alias: detail.name,
|
|
251
|
-
hidden: false,
|
|
252
|
-
accessibility: {
|
|
253
|
-
tabIndex: -1,
|
|
254
|
-
ariaPosinset: 1,
|
|
255
|
-
ariaLevel: level,
|
|
256
|
-
ariaSetsize: 1,
|
|
257
|
-
},
|
|
258
|
-
focusable,
|
|
259
|
-
selected: false,
|
|
260
|
-
errorReason: detail.errorReason,
|
|
261
|
-
displayError: detail.errorReason !== null,
|
|
262
|
-
type: 'LEAF_DETAILS',
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
static isLeafLogicValid(leaf, ...excludes) {
|
|
266
|
-
return Object.entries(this.LEAF_LOGICS_PRIORITY)
|
|
267
|
-
.filter(([key]) => !excludes.includes(key))
|
|
268
|
-
.every(([, logic]) => !logic(leaf));
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvbmF2LXNlbGVjdG9yL3NyYy91dGlscy9uYXYtc2VsZWN0b3IuYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBTUgsK0JBQStCLEVBQy9CLDJCQUEyQixFQUMzQix3QkFBd0IsRUFDeEIsdUJBQXVCLEdBTTFCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFdkUsTUFBTSxVQUFVLEdBQUc7SUFDZixRQUFRLEVBQUUsVUFBVTtJQUNwQixjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLE9BQU8sRUFBRSxTQUFTO0NBQ1osQ0FBQztBQUdYOzs7R0FHRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsNkNBQTZDO0lBQ3JDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBMEQ7UUFDekYsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUk7UUFDN0UsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxJQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYTtRQUMxRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLElBQXFCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZO1FBQ3hFLENBQUMsVUFBVSxDQUFDLE9B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QUFFLFNBQWtCO1FBQzVGLE9BQU87WUFDSCxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7WUFDZixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDO1lBQzVCLGNBQWMsRUFBRSxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUk7WUFDdkMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2xCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsYUFBYSxFQUFFO2dCQUNYLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ1osWUFBWSxFQUFFLENBQUM7Z0JBQ2YsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLFdBQVcsRUFBRSxDQUFDO2FBQ2pCO1lBQ0QsU0FBUztZQUNULFFBQVEsRUFBRSxLQUFLO1lBQ2YsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLFlBQVksRUFBRSxNQUFNLENBQUMsV0FBVyxLQUFLLElBQUk7WUFDekMsSUFBSSxFQUFFLGNBQWM7U0FDdkIsQ0FBQztJQUNOLENBQUM7SUFFTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBcUIsRUFBRSxHQUFHLFFBQXNCO1FBQzVFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7YUFDM0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQWlCLENBQUMsQ0FBQzthQUN4RCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckNhdGVnb3J5LFxuICAgIEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSxcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXAsXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYsXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZEZXRhaWxzLFxuICAgIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYsXG4gICAgaXNOYXZTZWxlY3RvckVudHJ5QUNhdGVnb3J5LFxuICAgIGlzTmF2U2VsZWN0b3JFbnRyeUFHcm91cCxcbiAgICBpc05hdlNlbGVjdG9yRW50cnlBTGVhZixcbiAgICBOYXZTZWxlY3RvckNhdGVnb3J5LFxuICAgIE5hdlNlbGVjdG9yRW50cnksXG4gICAgTmF2U2VsZWN0b3JHcm91cCxcbiAgICBOYXZTZWxlY3RvckxlYWYsXG4gICAgTmF2U2VsZWN0b3JMZWFmRGV0YWlscyxcbn0gZnJvbSAnLi4vbmF2LXNlbGVjdG9yJztcbmltcG9ydCB7IE5hdlNlbGVjdG9yQWNjZXNzaWJpbGl0eSB9IGZyb20gJy4uL3V0aWxzL25hdi1zZWxlY3Rvci5hY2Nlc3NpYmlsaXR5JztcbmltcG9ydCB7IE5hdlNlbGVjdG9yRm9sZGluZyB9IGZyb20gJy4uL3V0aWxzL25hdi1zZWxlY3Rvci5mb2xkaW5nJztcbmltcG9ydCB7IE5hdlNlbGVjdG9yTXVsdGlTZWxlY3QgfSBmcm9tICcuLi91dGlscy9uYXYtc2VsZWN0b3IubXVsdGktc2VsZWN0JztcbmltcG9ydCB7IE5hdlNlbGVjdG9yU2luZ2xlU2VsZWN0IH0gZnJvbSAnLi9uYXYtc2VsZWN0b3Iuc2luZ2xlLXNlbGVjdCc7XG5cbmNvbnN0IExlYWZMb2dpY3MgPSB7XG4gICAgRElTQUJMRUQ6ICdESVNBQkxFRCcsXG4gICAgRkVBVFVSRV9MT0NLRUQ6ICdGRUFUVVJFX0xPQ0tFRCcsXG4gICAgVE9LRU5fSU5WQUxJRDogJ1RPS0VOX0lOVkFMSUQnLFxuICAgIENPVU5URVI6ICdDT1VOVEVSJyxcbn0gYXMgY29uc3Q7XG50eXBlIExlYWZMb2dpY3MgPSBrZXlvZiB0eXBlb2YgTGVhZkxvZ2ljcztcblxuLyoqXG4gKiBOYXZTZWxlY3RvckJ1aWxkZXIgaXMgYSB1dGlsaXR5IGNsYXNzIHRoYXQgYnVpbGRzIHRoZSBOYXZTZWxlY3RvciBlbnRyaWVzIGZvciBzaW5nbGUgYW5kIG11bHRpcGxlIHNlbGVjdCBtb2Rlcy5cbiAqIEl0IGFsc28gY2hlY2tzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGVudHJpZXMgdG8gZW5zdXJlIHRoZXkgYXJlIHZhbGlkLlxuICovXG5leHBvcnQgY2xhc3MgTmF2U2VsZWN0b3JCdWlsZGVyIHtcbiAgICAvLyAvIVxcLyFcXCBPcmRlciBvZiBsb2dpY3MgaXMgaW1wb3J0YW50IC8hXFwvIVxcXG4gICAgcHJpdmF0ZSBzdGF0aWMgTEVBRl9MT0dJQ1NfUFJJT1JJVFk6IFJlY29yZDxMZWFmTG9naWNzLCAobGVmOiBOYXZTZWxlY3RvckxlYWYpID0+IGJvb2xlYW4+ID0ge1xuICAgICAgICBbTGVhZkxvZ2ljcy5ESVNBQkxFRF06IChsZWFmOiBOYXZTZWxlY3RvckxlYWYpID0+IGxlYWYuZGlzYWJsZVJlYXNvbiAhPT0gbnVsbCxcbiAgICAgICAgW0xlYWZMb2dpY3MuRkVBVFVSRV9MT0NLRURdOiAobGVhZjogTmF2U2VsZWN0b3JMZWFmKSA9PiBsZWFmLmZlYXR1cmVMb2NrZWQsXG4gICAgICAgIFtMZWFmTG9naWNzLlRPS0VOX0lOVkFMSURdOiAobGVhZjogTmF2U2VsZWN0b3JMZWFmKSA9PiBsZWFmLnRva2VuSW52YWxpZCxcbiAgICAgICAgW0xlYWZMb2dpY3MuQ09VTlRFUl06IChsZWFmOiBOYXZTZWxlY3RvckxlYWYpID0+IGxlYWYuY291bnRlciAhPT0gbnVsbCxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQnVpbGRzIHRoZSBOYXZTZWxlY3RvciBlbnRyaWVzIGZvciBzaW5nbGUgc2VsZWN0IG1vZGUuXG4gICAgICogQHBhcmFtIGVudHJpZXMgbmF2IHNlbGVjdG9yIGVudHJpZXNcbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRFbnRyeVVpZCBzZWxlY3RlZCBlbnRyeSB1aWRcbiAgICAgKiBAcGFyYW0gZGV0YWlsc0Rpc3BsYXllZExpbWl0IG51bWJlciBvZiBkZXRhaWxzIGRpc3BsYXllZCBsaW1pdFxuICAgICAqL1xuICAgIHN0YXRpYyBidWlsZChlbnRyaWVzOiBOYXZTZWxlY3RvckVudHJ5W10sIHNlbGVjdGVkRW50cnlVaWQ6IHN0cmluZyB8IG51bGwsIGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyKTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10ge1xuICAgICAgICB0aGlzLnN0cnVjdHVyZUNoZWNrZXIoZW50cmllcyk7XG4gICAgICAgIGxldCBidWlsdEVudHJpZXMgPSB0aGlzLmJ1aWxkRW50cmllcyhlbnRyaWVzLCBmYWxzZSwgMSwgZGV0YWlsc0Rpc3BsYXllZExpbWl0KTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRW50cnlVaWQpIHtcbiAgICAgICAgICAgIGJ1aWx0RW50cmllcyA9IE5hdlNlbGVjdG9yU2luZ2xlU2VsZWN0LnNlbGVjdChidWlsdEVudHJpZXMsIHNlbGVjdGVkRW50cnlVaWQpO1xuICAgICAgICAgICAgYnVpbHRFbnRyaWVzID0gTmF2U2VsZWN0b3JGb2xkaW5nLnVuZm9sZFBhcmVudHMoYnVpbHRFbnRyaWVzLCBzZWxlY3RlZEVudHJ5VWlkLCB7IG11bHRpcGxlTW9kZTogZmFsc2UsIG1pbmlmaWVkOiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVpbHRFbnRyaWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyB0aGUgTmF2U2VsZWN0b3IgZW50cmllcyBmb3IgbXVsdGlwbGUgc2VsZWN0IG1vZGUuXG4gICAgICogQHBhcmFtIGVudHJpZXMgbmF2IHNlbGVjdG9yIGVudHJpZXNcbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRFbnRyeVVpZHMgc2VsZWN0ZWQgZW50cnkgdWlkc1xuICAgICAqIEBwYXJhbSBkZXRhaWxzRGlzcGxheWVkTGltaXQgbnVtYmVyIG9mIGRldGFpbHMgZGlzcGxheWVkIGxpbWl0XG4gICAgICovXG4gICAgc3RhdGljIGJ1aWxkSW5NdWx0aXBsZU1vZGUoXG4gICAgICAgIGVudHJpZXM6IE5hdlNlbGVjdG9yRW50cnlbXSxcbiAgICAgICAgc2VsZWN0ZWRFbnRyeVVpZHM6IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXJcbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIHRoaXMuc3RydWN0dXJlQ2hlY2tlcihlbnRyaWVzLCB0cnVlKTtcbiAgICAgICAgbGV0IGJ1aWx0RW50cmllcyA9IHRoaXMuYnVpbGRFbnRyaWVzKGVudHJpZXMsIHRydWUsIDEsIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEVudHJ5VWlkcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzZWxlY3RlZEVudHJ5VWlkIG9mIHNlbGVjdGVkRW50cnlVaWRzKSB7XG4gICAgICAgICAgICAgICAgYnVpbHRFbnRyaWVzID0gTmF2U2VsZWN0b3JNdWx0aVNlbGVjdC5zZWxlY3RJbk11bHRpcGxlTW9kZShidWlsdEVudHJpZXMsIHNlbGVjdGVkRW50cnlVaWQpO1xuICAgICAgICAgICAgICAgIGJ1aWx0RW50cmllcyA9IE5hdlNlbGVjdG9yRm9sZGluZy51bmZvbGRQYXJlbnRzKGJ1aWx0RW50cmllcywgc2VsZWN0ZWRFbnRyeVVpZCwgeyBtdWx0aXBsZU1vZGU6IGZhbHNlLCBtaW5pZmllZDogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1aWx0RW50cmllcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBzdHJ1Y3R1cmVDaGVja2VyKGVudHJpZXM6IE5hdlNlbGVjdG9yRW50cnlbXSwgbXVsdGlwbGVNb2RlRW5hYmxlZCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNOYXZTZWxlY3RvckVudHJ5QUdyb3VwKGVudHJ5KSB8fCBpc05hdlNlbGVjdG9yRW50cnlBQ2F0ZWdvcnkoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdHJ1Y3R1cmVDaGVja2VyKGVudHJ5LmNoaWxkcmVuLCBtdWx0aXBsZU1vZGVFbmFibGVkKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOYXZTZWxlY3RvckVudHJ5QUxlYWYoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5LmRldGFpbHMubGVuZ3RoICYmIG11bHRpcGxlTW9kZUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgTmF2U2VsZWN0b3JCdWlsZGVyOiBMZWFmICR7ZW50cnkudWlkfSB3aXRoIGRldGFpbHMgaXMgbm90IGFsbG93ZWQgaW4gbXVsdGlwbGUgbW9kZWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRFbnRyaWVzKFxuICAgICAgICBlbnRyaWVzOiBOYXZTZWxlY3RvckVudHJ5W10sXG4gICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQ6IGJvb2xlYW4sXG4gICAgICAgIGxldmVsID0gMSxcbiAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXJcbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIGNvbnN0IG5ld0VudHJpZXMgPSBlbnRyaWVzXG4gICAgICAgICAgICAubWFwKChlbnRyeSwgaWR4KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRFbnRyeShlbnRyeSwgeyBtdWx0aXBsZU1vZGVFbmFibGVkLCBsZXZlbCwgaWR4LCB0b3RhbE51bWJlck9mRW50cnk6IGVudHJpZXMubGVuZ3RoLCBkZXRhaWxzRGlzcGxheWVkTGltaXQgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maWx0ZXIoaXQgPT4gaXQgIT09IG51bGwpO1xuICAgICAgICByZXR1cm4gTmF2U2VsZWN0b3JBY2Nlc3NpYmlsaXR5LnJlc2V0Rm9jdXMobmV3RW50cmllcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRFbnRyeShcbiAgICAgICAgZW50cnk6IE5hdlNlbGVjdG9yRW50cnksXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZFbnRyeSxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfTogeyBtdWx0aXBsZU1vZGVFbmFibGVkOiBib29sZWFuOyBsZXZlbDogbnVtYmVyOyBpZHg6IG51bWJlcjsgdG90YWxOdW1iZXJPZkVudHJ5OiBudW1iZXI7IGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyIH1cbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkgfCBudWxsIHtcbiAgICAgICAgaWYgKGlzTmF2U2VsZWN0b3JFbnRyeUFMZWFmKGVudHJ5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRMZWFmKGVudHJ5LCB7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICAgICAgdG90YWxOdW1iZXJPZkxlYWY6IHRvdGFsTnVtYmVyT2ZFbnRyeSxcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOYXZTZWxlY3RvckVudHJ5QUNhdGVnb3J5KGVudHJ5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRDYXRlZ29yeShlbnRyeSwge1xuICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZDYXRlZ29yeTogdG90YWxOdW1iZXJPZkVudHJ5LFxuICAgICAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRHcm91cChlbnRyeSwge1xuICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZHcm91cHM6IHRvdGFsTnVtYmVyT2ZFbnRyeSxcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBidWlsZENhdGVnb3J5Q2hpbGRyZW4oXG4gICAgICAgIGVudHJ5OiBOYXZTZWxlY3RvckNhdGVnb3J5LFxuICAgICAgICB7XG4gICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgY2F0ZWdvcnlMZXZlbCxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfToge1xuICAgICAgICAgICAgZm9jdXNhYmxlOiBib29sZWFuO1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICAgIGNhdGVnb3J5TGV2ZWw6IG51bWJlcjtcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgKTogKEludGVybmFsTmF2U2VsZWN0b3JHcm91cCB8IEludGVybmFsTmF2U2VsZWN0b3JMZWFmKVtdIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5LmNoaWxkcmVuXG4gICAgICAgICAgICAubWFwKChjaGlsZCwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2U2VsZWN0b3JFbnRyeUFMZWFmKGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZExlYWYoY2hpbGQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDogY2F0ZWdvcnlMZXZlbCArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbE51bWJlck9mTGVhZjogZW50cnkuY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZEdyb3VwKGNoaWxkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGNhdGVnb3J5TGV2ZWwgKyAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxOdW1iZXJPZkdyb3VwczogZW50cnkuY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZpbHRlcihpdCA9PiBpdCAhPT0gbnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRDYXRlZ29yeShcbiAgICAgICAgbm9kZTogTmF2U2VsZWN0b3JDYXRlZ29yeSxcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgdG90YWxOdW1iZXJPZkNhdGVnb3J5LFxuICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICB9OiB7XG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgICAgbGV2ZWw6IG51bWJlcjtcbiAgICAgICAgICAgIGlkeDogbnVtYmVyO1xuICAgICAgICAgICAgdG90YWxOdW1iZXJPZkNhdGVnb3J5OiBudW1iZXI7XG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JDYXRlZ29yeSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5idWlsZENhdGVnb3J5Q2hpbGRyZW4obm9kZSwge1xuICAgICAgICAgICAgZm9jdXNhYmxlOiAhbm9kZS5mb2xkZWQsXG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgY2F0ZWdvcnlMZXZlbDogbGV2ZWwsXG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB1aWQ6IG5vZGUudWlkLFxuICAgICAgICAgICAgYWxpYXM6IG5vZGUuYWxpYXMsXG4gICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBmb2N1c2FibGU6IHRydWUsXG4gICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgICAgICAgIGFyaWFMZXZlbDogbGV2ZWwsXG4gICAgICAgICAgICAgICAgYXJpYVBvc2luc2V0OiBpZHggKyAxLFxuICAgICAgICAgICAgICAgIGFyaWFTZXRzaXplOiB0b3RhbE51bWJlck9mQ2F0ZWdvcnksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZm9sZGVkOiBub2RlLmZvbGRlZCxcbiAgICAgICAgICAgIGVtcHR5U3RhdGVUaXRsZTogbm9kZS5lbXB0eVN0YXRlVGl0bGUsXG4gICAgICAgICAgICB0eXBlOiBub2RlLnR5cGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRHcm91cENoaWxkcmVuKFxuICAgICAgICBlbnRyeTogTmF2U2VsZWN0b3JHcm91cCxcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgIGdyb3VwTGV2ZWwsXG4gICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgIH06IHsgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbjsgZ3JvdXBMZXZlbDogbnVtYmVyOyBmb2N1c2FibGU6IGJvb2xlYW47IGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyIH1cbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZltdIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5LmNoaWxkcmVuXG4gICAgICAgICAgICAubWFwKChjaGlsZCwgaWR4KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRMZWFmKGNoaWxkLCB7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBncm91cExldmVsICsgMSxcbiAgICAgICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgICAgICB0b3RhbE51bWJlck9mTGVhZjogZW50cnkuY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU6IGZvY3VzYWJsZSAmJiAhZW50cnkuZm9sZGVkLFxuICAgICAgICAgICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maWx0ZXIoaXQgPT4gaXQgIT09IG51bGwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJ1aWxkR3JvdXAoXG4gICAgICAgIG5vZGU6IE5hdlNlbGVjdG9yR3JvdXAsXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZHcm91cHMsXG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgIH06IHtcbiAgICAgICAgICAgIGZvY3VzYWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgICBsZXZlbDogbnVtYmVyO1xuICAgICAgICAgICAgaWR4OiBudW1iZXI7XG4gICAgICAgICAgICB0b3RhbE51bWJlck9mR3JvdXBzOiBudW1iZXI7XG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JHcm91cCB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5idWlsZEdyb3VwQ2hpbGRyZW4obm9kZSwgeyBtdWx0aXBsZU1vZGVFbmFibGVkLCBncm91cExldmVsOiBsZXZlbCwgZm9jdXNhYmxlLCBkZXRhaWxzRGlzcGxheWVkTGltaXQgfSk7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlUb2tlbkludmFsaWQgPSBjaGlsZHJlbi5zb21lKCh7IGRpc3BsYXlUb2tlbkludmFsaWQgfSkgPT4gZGlzcGxheVRva2VuSW52YWxpZCk7XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbkNvdW50ID0gY2hpbGRyZW4uZmlsdGVyKCh7IHNlbGVjdGVkIH0pID0+IHNlbGVjdGVkKS5sZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHVpZDogbm9kZS51aWQsXG4gICAgICAgICAgICBhbGlhczogbm9kZS5hbGlhcyxcbiAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgY2hpbGRyZW5QaWN0dXJlVXJsU2FtcGxlOiBjaGlsZHJlblxuICAgICAgICAgICAgICAgIC5tYXAoKGNoaWxkLCBpZHgpID0+XG4gICAgICAgICAgICAgICAgICAgIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYoY2hpbGQpICYmIGlkeCA8IDQgPyB7IHVybDogY2hpbGQucGljdHVyZVVybCwgaW5pdGlhbDogY2hpbGQuYWxpYXNbMF0gfSA6IG51bGxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZpbHRlcihpdCA9PiBpdCAhPT0gbnVsbCksXG4gICAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgICAgICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgICAgICAgICBhcmlhUG9zaW5zZXQ6IGlkeCArIDEsXG4gICAgICAgICAgICAgICAgYXJpYUxldmVsOiBsZXZlbCxcbiAgICAgICAgICAgICAgICBhcmlhU2V0c2l6ZTogdG90YWxOdW1iZXJPZkdyb3VwcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICBkaXNwbGF5Q291bnRlcjogbm9kZS5mb2xkZWQgJiYgY2hpbGRyZW4uc29tZShjaGlsZCA9PiBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmKGNoaWxkKSAmJiBjaGlsZC5jb3VudGVyICE9PSAwKSxcbiAgICAgICAgICAgIGNvdW50ZXI6IGNoaWxkcmVuLnJlZHVjZSgoYWNjLCB7IGNvdW50ZXIgfSkgPT4gYWNjICsgY291bnRlciwgMCksXG4gICAgICAgICAgICBkaXNwbGF5VG9rZW5JbnZhbGlkLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc2VsZWN0YWJsZTogbXVsdGlwbGVNb2RlRW5hYmxlZCAmJiBjaGlsZHJlbi5zb21lKCh7IHNlbGVjdGFibGUgfSkgPT4gc2VsZWN0YWJsZSksXG4gICAgICAgICAgICB1bmRldGVybWluZWRTZWxlY3Rpb246IHNlbGVjdGVkQ2hpbGRyZW5Db3VudCAhPT0gY2hpbGRyZW4ubGVuZ3RoICYmIHNlbGVjdGVkQ2hpbGRyZW5Db3VudCA+IDAsXG4gICAgICAgICAgICBmb2xkZWQ6IG5vZGUuZm9sZGVkLFxuICAgICAgICAgICAgdHlwZTogbm9kZS50eXBlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJ1aWxkTGVhZihcbiAgICAgICAgbGVhZjogTmF2U2VsZWN0b3JMZWFmLFxuICAgICAgICB7XG4gICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICB0b3RhbE51bWJlck9mTGVhZixcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfToge1xuICAgICAgICAgICAgZm9jdXNhYmxlOiBib29sZWFuO1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICAgIGxldmVsOiBudW1iZXI7XG4gICAgICAgICAgICBpZHg6IG51bWJlcjtcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZMZWFmOiBudW1iZXI7XG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmIHwgbnVsbCB7XG4gICAgICAgIGlmIChsZWFmLm1pc3NpbmdQZXJtaXNzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRldGFpbHNEaXNwbGF5YWJsZSA9IHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLkNPVU5URVIpICYmICEhbGVhZi5kZXRhaWxzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZm9sZGFibGUgPSAhIWxlYWYuZGV0YWlscy5sZW5ndGggJiYgZGV0YWlsc0Rpc3BsYXlhYmxlO1xuICAgICAgICBjb25zdCBmb2xkZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBjb3VudGVyID0gKGxlYWYuZGV0YWlscy5yZWR1Y2UoKGFjYywgZGV0YWlsKSA9PiBhY2MgKyAoZGV0YWlsLmNvdW50ZXIgPz8gMCksIDApIHx8IGxlYWYuY291bnRlcikgPz8gMDtcbiAgICAgICAgY29uc3QgY291bnRlckRpc3BsYXlhYmxlID0gY291bnRlciAhPT0gMCAmJiB0aGlzLmlzTGVhZkxvZ2ljVmFsaWQobGVhZiwgTGVhZkxvZ2ljcy5DT1VOVEVSKTtcblxuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGxlYWYuZGlzYWJsZVJlYXNvbiAhPT0gbnVsbDtcblxuICAgICAgICBjb25zdCB2aWV3TW9yZURpc3BsYXlhYmxlID0gbGVhZi5kZXRhaWxzLmxlbmd0aCA+IGRldGFpbHNEaXNwbGF5ZWRMaW1pdDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdWlkOiBsZWFmLnVpZCxcbiAgICAgICAgICAgIGFsaWFzOiBsZWFmLmFsaWFzLFxuICAgICAgICAgICAgYWN0aW9uczogbGVhZi5hY3Rpb25zLFxuICAgICAgICAgICAgcGljdHVyZVVybDogbGVhZi5waWN0dXJlVXJsLFxuICAgICAgICAgICAgYWN0aW9uc0Rpc3BsYXlhYmxlOiAhIWxlYWYuYWN0aW9ucy5sZW5ndGggJiYgdGhpcy5pc0xlYWZMb2dpY1ZhbGlkKGxlYWYsIExlYWZMb2dpY3MuQ09VTlRFUiksXG4gICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgIGRpc2FibGVSZWFzb246IGxlYWYuZGlzYWJsZVJlYXNvbixcbiAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBmb2N1c2FibGU6XG4gICAgICAgICAgICAgICAgZm9jdXNhYmxlICYmXG4gICAgICAgICAgICAgICAgKChtdWx0aXBsZU1vZGVFbmFibGVkICYmIHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLkNPVU5URVIpKSB8fCAoIW11bHRpcGxlTW9kZUVuYWJsZWQgJiYgIWRpc2FibGVkKSksXG4gICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgICAgICAgIGFyaWFQb3NpbnNldDogaWR4ICsgMSxcbiAgICAgICAgICAgICAgICBhcmlhTGV2ZWw6IGxldmVsLFxuICAgICAgICAgICAgICAgIGFyaWFTZXRzaXplOiB0b3RhbE51bWJlck9mTGVhZixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmb2xkYWJsZSxcbiAgICAgICAgICAgIGZvbGRlZCxcbiAgICAgICAgICAgIGRpc3BsYXlDb3VudGVyOiBmb2xkZWQgJiYgY291bnRlckRpc3BsYXlhYmxlLFxuICAgICAgICAgICAgY291bnRlckRpc3BsYXlhYmxlLFxuICAgICAgICAgICAgY291bnRlcixcbiAgICAgICAgICAgIG5ldHdvcms6IGxlYWYubmV0d29yayxcbiAgICAgICAgICAgIGRpc3BsYXlUb2tlbkludmFsaWQ6IGxlYWYudG9rZW5JbnZhbGlkICYmIHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLlRPS0VOX0lOVkFMSUQsIExlYWZMb2dpY3MuQ09VTlRFUiksXG4gICAgICAgICAgICBkaXNwbGF5RmVhdHVyZUxvY2tlZDpcbiAgICAgICAgICAgICAgICBsZWFmLmZlYXR1cmVMb2NrZWQgJiYgdGhpcy5pc0xlYWZMb2dpY1ZhbGlkKGxlYWYsIExlYWZMb2dpY3MuRkVBVFVSRV9MT0NLRUQsIExlYWZMb2dpY3MuVE9LRU5fSU5WQUxJRCwgTGVhZkxvZ2ljcy5DT1VOVEVSKSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IG11bHRpcGxlTW9kZUVuYWJsZWRcbiAgICAgICAgICAgICAgICA/IHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLkNPVU5URVIpXG4gICAgICAgICAgICAgICAgOiB0aGlzLmlzTGVhZkxvZ2ljVmFsaWQobGVhZiwgTGVhZkxvZ2ljcy5GRUFUVVJFX0xPQ0tFRCwgTGVhZkxvZ2ljcy5UT0tFTl9JTlZBTElELCBMZWFmTG9naWNzLkNPVU5URVIpLFxuICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXlhYmxlLFxuICAgICAgICAgICAgZGV0YWlsczogbGVhZi5kZXRhaWxzLm1hcChkZXRhaWwgPT4gdGhpcy5idWlsZExlYWZEZXRhaWwoZGV0YWlsLCBsZXZlbCArIDEsIGZvY3VzYWJsZSAmJiAhZm9sZGVkKSksXG4gICAgICAgICAgICBkZXRhaWxTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICB0eXBlOiAnTEVBRicsXG4gICAgICAgICAgICB2aWV3TW9yZURpc3BsYXlhYmxlLFxuICAgICAgICAgICAgdmlld01vcmVEaXNwbGF5ZWQ6IHZpZXdNb3JlRGlzcGxheWFibGUsXG4gICAgICAgICAgICB2aWV3TW9yZURldGFpbHNEaXNwbGF5ZWRMaW1pdDogZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJ1aWxkTGVhZkRldGFpbChkZXRhaWw6IE5hdlNlbGVjdG9yTGVhZkRldGFpbHMsIGxldmVsOiBudW1iZXIsIGZvY3VzYWJsZTogYm9vbGVhbik6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmRGV0YWlscyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB1aWQ6IGRldGFpbC51aWQsXG4gICAgICAgICAgICBjb3VudGVyOiBkZXRhaWwuY291bnRlciA/PyAwLFxuICAgICAgICAgICAgZGlzcGxheUNvdW50ZXI6IGRldGFpbC5jb3VudGVyICE9PSBudWxsLFxuICAgICAgICAgICAgYWxpYXM6IGRldGFpbC5uYW1lLFxuICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgIGFjY2Vzc2liaWxpdHk6IHtcbiAgICAgICAgICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgICAgICAgICAgYXJpYVBvc2luc2V0OiAxLFxuICAgICAgICAgICAgICAgIGFyaWFMZXZlbDogbGV2ZWwsXG4gICAgICAgICAgICAgICAgYXJpYVNldHNpemU6IDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZm9jdXNhYmxlLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3JSZWFzb246IGRldGFpbC5lcnJvclJlYXNvbixcbiAgICAgICAgICAgIGRpc3BsYXlFcnJvcjogZGV0YWlsLmVycm9yUmVhc29uICE9PSBudWxsLFxuICAgICAgICAgICAgdHlwZTogJ0xFQUZfREVUQUlMUycsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNMZWFmTG9naWNWYWxpZChsZWFmOiBOYXZTZWxlY3RvckxlYWYsIC4uLmV4Y2x1ZGVzOiBMZWFmTG9naWNzW10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuTEVBRl9MT0dJQ1NfUFJJT1JJVFkpXG4gICAgICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIWV4Y2x1ZGVzLmluY2x1ZGVzKGtleSBhcyBMZWFmTG9naWNzKSlcbiAgICAgICAgICAgIC5ldmVyeSgoWywgbG9naWNdKSA9PiAhbG9naWMobGVhZikpO1xuICAgIH1cbn1cbiJdfQ==
|