@sbb-esta/lyne-elements-dev 4.11.0-dev.1776867495 → 4.11.0-dev.1776928413
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/autocomplete/autocomplete-base-element.js +1 -1
- package/autocomplete/autocomplete.component.js +1 -1
- package/{autocomplete-base-element-BryH362a.js → autocomplete-base-element-DNoAdA1R.js} +1 -1
- package/autocomplete.js +1 -1
- package/autocomplete.pure.js +1 -1
- package/{block-link-common-BwXob5QE.js → block-link-common-1kRa_czx.js} +1 -1
- package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
- package/breadcrumb/breadcrumb-group.js +1 -1
- package/{breadcrumb-group.component-F3-JZkfO.js → breadcrumb-group.component-CKNsaUqs.js} +1 -1
- package/breadcrumb.js +1 -1
- package/breadcrumb.pure.js +1 -1
- package/button/common/button-common.js +1 -1
- package/button/common.js +1 -1
- package/button-common-BMEhm-dn.js +87 -0
- package/button.js +1 -1
- package/button.pure.js +1 -1
- package/calendar/calendar/calendar.component.js +1 -1
- package/calendar/calendar.js +1 -1
- package/{calendar.component-Cq0m3E48.js → calendar.component-C1jk_uE0.js} +1 -1
- package/calendar.js +1 -1
- package/calendar.pure.js +1 -1
- package/card/card-badge/card-badge.component.js +1 -1
- package/card/card-badge.js +1 -1
- package/{card-badge.component-BSOEYrN4.js → card-badge.component-D0r2iixU.js} +1 -1
- package/card.js +1 -1
- package/card.pure.js +1 -1
- package/checkbox/checkbox.component.js +1 -1
- package/checkbox/checkbox.js +1 -1
- package/checkbox/common/checkbox-common.js +1 -1
- package/checkbox/common.js +1 -1
- package/{checkbox-common-DdieysTG.js → checkbox-common-BpW4_bbi.js} +1 -1
- package/{checkbox.component-ROzxEnPh.js → checkbox.component-DS48CA_v.js} +1 -1
- package/checkbox.js +2 -2
- package/checkbox.pure.js +2 -2
- package/chip/chip-group/chip-group.component.js +1 -1
- package/chip/chip-group.js +1 -1
- package/{chip-group.component-DJzUToem.js → chip-group.component-BqBYzfXA.js} +1 -1
- package/chip.js +1 -1
- package/chip.pure.js +1 -1
- package/{compact-paginator.component-Cyi-t_YD.js → compact-paginator.component-BIAPutro.js} +1 -1
- package/core/styles/core.scss +17 -73
- package/core/styles/mixins/typo.scss +2 -2
- package/core.css +67 -65
- package/custom-elements.json +1723 -1723
- package/development/autocomplete/autocomplete-base-element.js +1 -1
- package/development/autocomplete/autocomplete.component.js +1 -1
- package/development/autocomplete-base-element-BR5zqYyY.js +692 -0
- package/development/autocomplete.js +1 -1
- package/development/autocomplete.pure.js +1 -1
- package/development/{block-link-common-Dh1NOKxB.js → block-link-common-COY1RI1I.js} +2 -2
- package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
- package/development/breadcrumb/breadcrumb-group.js +1 -1
- package/development/breadcrumb-group.component-DZslNBlB.js +195 -0
- package/development/breadcrumb.js +1 -1
- package/development/breadcrumb.pure.js +1 -1
- package/development/button/common/button-common.js +1 -1
- package/development/button/common.js +1 -1
- package/development/{button-common-CAu09Yim.js → button-common-7dmrUx4A.js} +3 -3
- package/development/button.js +1 -1
- package/development/button.pure.js +1 -1
- package/development/calendar/calendar/calendar.component.js +1 -1
- package/development/calendar/calendar.js +1 -1
- package/development/calendar.component-Dg3D2A7k.js +1453 -0
- package/development/calendar.js +1 -1
- package/development/calendar.pure.js +1 -1
- package/development/card/card-badge/card-badge.component.js +1 -1
- package/development/card/card-badge.js +1 -1
- package/development/card-badge.component-CUZIoVbL.js +84 -0
- package/development/card.js +1 -1
- package/development/card.pure.js +1 -1
- package/development/checkbox/checkbox.component.js +1 -1
- package/development/checkbox/checkbox.js +1 -1
- package/development/checkbox/common/checkbox-common.js +1 -1
- package/development/checkbox/common.js +1 -1
- package/development/checkbox-common-Dd5uup8K.js +86 -0
- package/development/{checkbox.component-D3_FFSys.js → checkbox.component-CFZrwUTA.js} +2 -2
- package/development/checkbox.js +2 -2
- package/development/checkbox.pure.js +2 -2
- package/development/chip/chip-group/chip-group.component.js +1 -1
- package/development/chip/chip-group.js +1 -1
- package/development/chip-group.component-BVfHWX2-.js +409 -0
- package/development/chip.js +1 -1
- package/development/chip.pure.js +1 -1
- package/development/compact-paginator.component-5_Q2Reul.js +51 -0
- package/development/error.component-OBpWoVRL.js +55 -0
- package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
- package/development/expansion-panel/expansion-panel-header.js +1 -1
- package/development/expansion-panel-header.component-BEAabEE0.js +85 -0
- package/development/expansion-panel.js +1 -1
- package/development/expansion-panel.pure.js +1 -1
- package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
- package/development/file-selector/file-selector-dropzone.js +1 -1
- package/development/{file-selector-dropzone.component-B-cBO4bf.js → file-selector-dropzone.component-xfkQt0VX.js} +2 -2
- package/development/file-selector.js +1 -1
- package/development/file-selector.pure.js +1 -1
- package/development/footer/footer.component.js +1 -1
- package/development/footer.component-BmDkxYW9.js +172 -0
- package/development/footer.js +1 -1
- package/development/footer.pure.js +1 -1
- package/development/form-field/error/error.component.js +1 -1
- package/development/form-field/error.js +1 -1
- package/development/form-field/form-field/form-field.component.js +1 -1
- package/development/form-field/form-field.js +1 -1
- package/development/form-field/hint/hint.component.js +1 -1
- package/development/form-field.component-BU3Sv2mD.js +707 -0
- package/development/form-field.js +3 -3
- package/development/form-field.pure.js +3 -3
- package/development/header/header/header.component.js +1 -1
- package/development/header/header.js +1 -1
- package/development/header.component-CWJ36jF0.js +340 -0
- package/development/header.js +1 -1
- package/development/header.pure.js +1 -1
- package/development/hint.component-DUtL0RS3.js +38 -0
- package/development/link/common/block-link-common.js +1 -1
- package/development/link/common.js +1 -1
- package/development/link.js +1 -1
- package/development/link.pure.js +1 -1
- package/development/message/message.component.js +1 -1
- package/development/message.component-Dlf5V5ba.js +44 -0
- package/development/message.js +1 -1
- package/development/message.pure.js +1 -1
- package/development/navigation/common/navigation-action-common.js +1 -1
- package/development/navigation/common.js +1 -1
- package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
- package/development/navigation/navigation-marker.js +1 -1
- package/development/navigation/navigation-section/navigation-section.component.js +1 -1
- package/development/navigation/navigation-section.js +1 -1
- package/development/{navigation-action-common-DpBp7-eZ.js → navigation-action-common-Hjr4dI9J.js} +2 -2
- package/development/{navigation-marker.component-BpZdT4xz.js → navigation-marker.component-GOv42emC.js} +2 -2
- package/development/{navigation-section.component-CtZtuacK.js → navigation-section.component-CnVrRETN.js} +2 -2
- package/development/navigation.js +3 -3
- package/development/navigation.pure.js +3 -3
- package/development/notification/notification.component.js +1 -1
- package/development/notification.component-Cvq_uViC.js +274 -0
- package/development/notification.js +1 -1
- package/development/notification.pure.js +1 -1
- package/development/paginator/compact-paginator/compact-paginator.component.js +1 -1
- package/development/paginator/compact-paginator.js +1 -1
- package/development/paginator/paginator/paginator.component.js +1 -1
- package/development/paginator/paginator.js +1 -1
- package/development/paginator.component-Bn5tK0FK.js +259 -0
- package/development/paginator.js +2 -2
- package/development/paginator.pure.js +2 -2
- package/development/radio-button/common/radio-button-common.js +1 -1
- package/development/radio-button/common.js +1 -1
- package/development/radio-button/radio-button.component.js +1 -1
- package/development/radio-button/radio-button.js +1 -1
- package/development/radio-button-common--d3WX-ZM.js +126 -0
- package/development/{radio-button.component-BrQF2FfA.js → radio-button.component-BauLEeCV.js} +2 -2
- package/development/radio-button.js +2 -2
- package/development/radio-button.pure.js +2 -2
- package/development/select/select.component.js +1 -1
- package/development/select.component-CkwuT_xi.js +812 -0
- package/development/select.js +1 -1
- package/development/select.pure.js +1 -1
- package/development/status/status.component.js +1 -1
- package/development/status.component-CPi1cPN0.js +111 -0
- package/development/status.js +1 -1
- package/development/status.pure.js +1 -1
- package/development/step-label.component-BJ9eainz.js +131 -0
- package/development/stepper/step-label/step-label.component.js +1 -1
- package/development/stepper/step-label.js +1 -1
- package/development/stepper.js +1 -1
- package/development/stepper.pure.js +1 -1
- package/development/styles-Jlhoev1S.js +14 -0
- package/development/{tab-label.component-14j2eh4Z.js → tab-label.component-B9e9kgVf.js} +2 -2
- package/development/tabs/common/styles.js +1 -1
- package/development/tabs/common.js +1 -1
- package/development/tabs/tab-label/tab-label.component.js +1 -1
- package/development/tabs/tab-label.js +1 -1
- package/development/tabs.js +2 -2
- package/development/tabs.pure.js +2 -2
- package/development/tag/tag/tag.component.js +1 -1
- package/development/tag/tag.js +1 -1
- package/development/tag.component-Bl1nlIXQ.js +245 -0
- package/development/tag.js +1 -1
- package/development/tag.pure.js +1 -1
- package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
- package/development/{timetable-occupancy.component-dhpPJEaI.js → timetable-occupancy.component-BBcznUh0.js} +2 -2
- package/development/timetable-occupancy.js +1 -1
- package/development/timetable-occupancy.pure.js +1 -1
- package/development/title/title-base.js +1 -1
- package/development/title/title.component.js +1 -1
- package/development/{title-base-CBE_2Hkb.js → title-base-BdYKwj3-.js} +2 -2
- package/development/{title.component-Dk23JVct.js → title.component-DSXVkddh.js} +2 -2
- package/development/title.js +2 -2
- package/development/title.pure.js +2 -2
- package/development/toast/toast.component.js +1 -1
- package/development/{toast.component-Cuvs3VnH.js → toast.component-Cgr5ZGOr.js} +2 -2
- package/development/toast.js +1 -1
- package/development/toast.pure.js +1 -1
- package/development/toggle/toggle/toggle.component.js +1 -1
- package/development/toggle/toggle.js +1 -1
- package/development/toggle.component-BJpD1b9H.js +249 -0
- package/development/toggle.js +1 -1
- package/development/toggle.pure.js +1 -1
- package/development/tooltip/tooltip.component.js +1 -1
- package/development/tooltip.component-YaUQA-Id.js +378 -0
- package/development/tooltip.js +1 -1
- package/development/tooltip.pure.js +1 -1
- package/development/train/train-wagon/train-wagon.component.js +1 -1
- package/development/train/train-wagon.js +1 -1
- package/development/{train-wagon.component-BzA8-S_6.js → train-wagon.component-CNxkffOO.js} +2 -2
- package/development/train.js +1 -1
- package/development/train.pure.js +1 -1
- package/{error.component-B_D8WUP5.js → error.component-DH9Obd7a.js} +1 -1
- package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
- package/expansion-panel/expansion-panel-header.js +1 -1
- package/{expansion-panel-header.component-B_dQ3ZWT.js → expansion-panel-header.component-FPoEEoZR.js} +1 -1
- package/expansion-panel.js +1 -1
- package/expansion-panel.pure.js +1 -1
- package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
- package/file-selector/file-selector-dropzone.js +1 -1
- package/{file-selector-dropzone.component-CBKsZsC2.js → file-selector-dropzone.component-DSmBp7xN.js} +1 -1
- package/file-selector.js +1 -1
- package/file-selector.pure.js +1 -1
- package/footer/footer.component.js +1 -1
- package/{footer.component-BM91Utiz.js → footer.component-b2docCY_.js} +1 -1
- package/footer.js +1 -1
- package/footer.pure.js +1 -1
- package/form-field/error/error.component.js +1 -1
- package/form-field/error.js +1 -1
- package/form-field/form-field/form-field.component.js +1 -1
- package/form-field/form-field.js +1 -1
- package/form-field/hint/hint.component.js +1 -1
- package/{form-field.component-Cc_siKrq.js → form-field.component-BwZDRKbQ.js} +1 -1
- package/form-field.js +3 -3
- package/form-field.pure.js +3 -3
- package/header/header/header.component.js +1 -1
- package/header/header.js +1 -1
- package/{header.component-hZqs06Yh.js → header.component-UQUFcMOD.js} +1 -1
- package/header.js +1 -1
- package/header.pure.js +1 -1
- package/{hint.component-BVUUrSSu.js → hint.component-CE2D2TLU.js} +1 -1
- package/link/common/block-link-common.js +1 -1
- package/link/common.js +1 -1
- package/link.js +1 -1
- package/link.pure.js +1 -1
- package/message/message.component.js +1 -1
- package/message.component-DhN-aFms.js +27 -0
- package/message.js +1 -1
- package/message.pure.js +1 -1
- package/navigation/common/navigation-action-common.js +1 -1
- package/navigation/common.js +1 -1
- package/navigation/navigation-marker/navigation-marker.component.js +1 -1
- package/navigation/navigation-marker.js +1 -1
- package/navigation/navigation-section/navigation-section.component.js +1 -1
- package/navigation/navigation-section.js +1 -1
- package/{navigation-action-common-2ix0xrBs.js → navigation-action-common-AzRltwrb.js} +1 -1
- package/{navigation-marker.component-DKxK16IU.js → navigation-marker.component-BzbbKlfT.js} +1 -1
- package/{navigation-section.component-CvjXVn5r.js → navigation-section.component-DQxCi3O_.js} +1 -1
- package/navigation.js +3 -3
- package/navigation.pure.js +3 -3
- package/notification/notification.component.js +1 -1
- package/{notification.component-DjXJFh1G.js → notification.component-D80Wl5xM.js} +1 -1
- package/notification.js +1 -1
- package/notification.pure.js +1 -1
- package/off-brand-theme.css +67 -65
- package/package.json +2 -2
- package/paginator/compact-paginator/compact-paginator.component.js +1 -1
- package/paginator/compact-paginator.js +1 -1
- package/paginator/paginator/paginator.component.js +1 -1
- package/paginator/paginator.js +1 -1
- package/{paginator.component-CZt7Epaf.js → paginator.component-BEr0qU0m.js} +1 -1
- package/paginator.js +2 -2
- package/paginator.pure.js +2 -2
- package/radio-button/common/radio-button-common.js +1 -1
- package/radio-button/common.js +1 -1
- package/radio-button/radio-button.component.js +1 -1
- package/radio-button/radio-button.js +1 -1
- package/{radio-button-common-DP4Izwwf.js → radio-button-common-C1mIf9KY.js} +1 -1
- package/{radio-button.component-BiGeOI5L.js → radio-button.component-Bae-yK_U.js} +1 -1
- package/radio-button.js +2 -2
- package/radio-button.pure.js +2 -2
- package/safety-theme.css +67 -65
- package/select/select.component.js +1 -1
- package/{select.component-DWLdApt_.js → select.component-ByO4itj5.js} +1 -1
- package/select.js +1 -1
- package/select.pure.js +1 -1
- package/standard-theme.css +67 -65
- package/status/status.component.js +1 -1
- package/{status.component-BFyXTFXH.js → status.component-lw_WDs7W.js} +1 -1
- package/status.js +1 -1
- package/status.pure.js +1 -1
- package/{step-label.component-dzcNc12A.js → step-label.component-Dqis4FAN.js} +1 -1
- package/stepper/step-label/step-label.component.js +1 -1
- package/stepper/step-label.js +1 -1
- package/stepper.js +1 -1
- package/stepper.pure.js +1 -1
- package/styles-BNu0Fjw5.js +5 -0
- package/{tab-label.component-CD56RH1Z.js → tab-label.component-CpdUyfiq.js} +1 -1
- package/tabs/common/styles.js +1 -1
- package/tabs/common.js +1 -1
- package/tabs/tab-label/tab-label.component.js +1 -1
- package/tabs/tab-label.js +1 -1
- package/tabs.js +2 -2
- package/tabs.pure.js +2 -2
- package/tag/tag/tag.component.js +1 -1
- package/tag/tag.js +1 -1
- package/{tag.component-CzYJZuFT.js → tag.component-CsNszQvB.js} +1 -1
- package/tag.js +1 -1
- package/tag.pure.js +1 -1
- package/timetable-occupancy/timetable-occupancy.component.js +1 -1
- package/{timetable-occupancy.component-BDmxFVKK.js → timetable-occupancy.component-BCXPxz68.js} +1 -1
- package/timetable-occupancy.js +1 -1
- package/timetable-occupancy.pure.js +1 -1
- package/title/title-base.js +1 -1
- package/title/title.component.js +1 -1
- package/{title-base-D72Xo2SW.js → title-base-DV0qhfG9.js} +1 -1
- package/{title.component-CoMa84Sz.js → title.component-DAGyXwDm.js} +1 -1
- package/title.js +2 -2
- package/title.pure.js +2 -2
- package/toast/toast.component.js +1 -1
- package/{toast.component-CkNywQOZ.js → toast.component-CGVqkd0_.js} +1 -1
- package/toast.js +1 -1
- package/toast.pure.js +1 -1
- package/toggle/toggle/toggle.component.js +1 -1
- package/toggle/toggle.js +1 -1
- package/{toggle.component-Cwc-TJ-a.js → toggle.component-B20xAw1V.js} +1 -1
- package/toggle.js +1 -1
- package/toggle.pure.js +1 -1
- package/tooltip/tooltip.component.js +1 -1
- package/{tooltip.component-B3XLLpLg.js → tooltip.component-ocVpJogs.js} +1 -1
- package/tooltip.js +1 -1
- package/tooltip.pure.js +1 -1
- package/train/train-wagon/train-wagon.component.js +1 -1
- package/train/train-wagon.js +1 -1
- package/{train-wagon.component-BwCcF4GD.js → train-wagon.component-BT4Xnzxr.js} +1 -1
- package/train.js +1 -1
- package/train.pure.js +1 -1
- package/button-common-yFVzAoGy.js +0 -87
- package/development/autocomplete-base-element-BNfirRyP.js +0 -692
- package/development/breadcrumb-group.component-HBWRdDpS.js +0 -195
- package/development/calendar.component-Dto81mQ8.js +0 -1453
- package/development/card-badge.component-D4Mes-Gw.js +0 -84
- package/development/checkbox-common-DiTlHvFJ.js +0 -86
- package/development/chip-group.component-CvpUdzu1.js +0 -409
- package/development/compact-paginator.component-TfDVt_ST.js +0 -51
- package/development/error.component-xD_c9IBA.js +0 -55
- package/development/expansion-panel-header.component-Bw4uROTe.js +0 -85
- package/development/footer.component-BblB5218.js +0 -172
- package/development/form-field.component-CWVzymTX.js +0 -707
- package/development/header.component-Cg0ZcA1s.js +0 -340
- package/development/hint.component-BsIzdUOV.js +0 -38
- package/development/message.component-CeJhYXSC.js +0 -44
- package/development/notification.component-Co9QChXc.js +0 -274
- package/development/paginator.component-DAdS2mMm.js +0 -259
- package/development/radio-button-common-C3-xuY78.js +0 -126
- package/development/select.component-CGNEhqzl.js +0 -812
- package/development/status.component-CHC2pBa-.js +0 -111
- package/development/step-label.component-DjA-3IGs.js +0 -131
- package/development/styles-DCQBzC2C.js +0 -14
- package/development/tag.component-CnNPL6aI.js +0 -245
- package/development/toggle.component-CKug5pF7.js +0 -249
- package/development/tooltip.component-epXOY5vO.js +0 -378
- package/message.component-BQjnZ5Z3.js +0 -27
- package/styles-BUpK1iP2.js +0 -5
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { html, nothing, unsafeCSS } from "lit";
|
|
3
|
-
import { property } from "lit/decorators.js";
|
|
4
|
-
import { SbbElement } from "./core/base-elements.js";
|
|
5
|
-
import { forceType } from "./core/decorators.js";
|
|
6
|
-
import { boxSizingStyles } from "./core/styles.js";
|
|
7
|
-
import { i18nItemsPerPage, i18nPage } from "./core/i18n.js";
|
|
8
|
-
import { sbbInputModalityDetector } from "./core/a11y.js";
|
|
9
|
-
import "./screen-reader-only.js";
|
|
10
|
-
import { SbbPaginatorCommonElementMixin } from "./paginator/common/paginator-common.js";
|
|
11
|
-
import { repeat } from "lit/directives/repeat.js";
|
|
12
|
-
import "./form-field.js";
|
|
13
|
-
import "./select.js";
|
|
14
|
-
import "./option.js";
|
|
15
|
-
//#region src/elements/paginator/paginator/paginator.scss?inline
|
|
16
|
-
var paginator_default = ":host {\n --sbb-paginator-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-2x)\n );\n display: block;\n}\n\n:host([size=s]) {\n --sbb-paginator-height: var(--sbb-size-element-xs);\n}\n\n:host([size=m]) {\n --sbb-paginator-height: var(--sbb-size-element-m);\n}\n\n:host([negative]) {\n --sbb-paginator-page-color: var(--sbb-color-5);\n --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);\n}\n\n:host([pager-position=end]) {\n --sbb-paginator-justify-content: end;\n --sbb-paginator-wrapping-group-wrap: wrap;\n --sbb-paginator-wrap: wrap-reverse;\n}\n\n.sbb-paginator,\n.sbb-paginator__wrapping-group {\n display: flex;\n gap: var(--sbb-spacing-fixed-3x) var(--sbb-spacing-fixed-6x);\n justify-content: var(--sbb-paginator-justify-content, start);\n}\n\n.sbb-paginator {\n flex-wrap: var(--sbb-paginator-wrap, wrap);\n min-height: var(--sbb-paginator-height);\n}\n\n.sbb-paginator__wrapping-group {\n flex-wrap: var(--sbb-paginator-wrapping-group-wrap, wrap-reverse);\n}\n\n.sbb-paginator__page-size-options {\n display: flex;\n align-items: center;\n gap: var(--sbb-spacing-fixed-2x);\n white-space: nowrap;\n color: var(--sbb-paginator-page-color);\n font-size: var(--sbb-paginator-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n}\n.sbb-paginator__page-size-options sbb-select {\n color: var(--sbb-form-field-text-color);\n font-size: var(--sbb-form-field-input-text-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n padding-inline-end: var(--sbb-form-field-select-inline-padding-end);\n}\n\n.sbb-paginator__pages {\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: inherit;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--sbb-spacing-fixed-1x);\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.sbb-paginator__page--ellipsis,\n.sbb-paginator__page--number {\n position: relative;\n font-size: var(--sbb-paginator-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n color: var(--sbb-paginator-page-color);\n}\n\n.sbb-paginator__page--ellipsis-item,\n.sbb-paginator__page--number-item {\n display: flex;\n justify-content: center;\n align-items: center;\n width: var(--sbb-size-element-xxs);\n height: var(--sbb-size-element-xxs);\n}\n\n.sbb-paginator__page--number-item {\n appearance: none;\n box-sizing: border-box;\n margin: 0;\n outline: none;\n border: none;\n border-radius: 0;\n padding: 0;\n background: none;\n -webkit-tap-highlight-color: transparent;\n color: inherit;\n --sbb-text-font-size: var(--sbb-paginator-font-size);\n font-family: var(--sbb-typo-font-family);\n font-weight: normal;\n line-height: var(--sbb-typo-line-height-text);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n font-size: var(--sbb-text-font-size);\n position: relative;\n cursor: var(--sbb-paginator-page-cursor);\n outline: none !important;\n color: var(--sbb-paginator-page-color);\n transition: color var(--sbb-paginator-animation-duration) var(--sbb-paginator-animation-easing);\n}\n.sbb-paginator__page--number-item::before {\n content: \"\";\n position: absolute;\n background-color: var(--sbb-paginator-page-background-color, transparent);\n border: var(--sbb-paginator-page-border-width) var(--sbb-paginator-page-border-style, none) var(--sbb-paginator-page-border-color, none);\n border-radius: var(--sbb-border-radius-infinity);\n inset: var(--sbb-paginator-page-inset, 0);\n transition-property: background-color, border, inset;\n transition-duration: var(--sbb-paginator-animation-duration);\n transition-timing-function: var(--sbb-paginator-animation-easing);\n}\n.sbb-paginator__page--number-item:focus-visible::before {\n outline-offset: var(--sbb-focus-outline-offset);\n outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);\n outline-offset: var(--sbb-border-width-2x);\n}\n.sbb-paginator__page--number-item[data-selected] {\n font-weight: bold;\n --sbb-paginator-page-color: var(--sbb-color-3);\n --sbb-paginator-page-border-width: var(--sbb-border-width-2x);\n --sbb-paginator-page-border-style: solid;\n --sbb-paginator-page-border-color: var(--sbb-border-color-2);\n}\n:host([negative]) .sbb-paginator__page--number-item[data-selected] {\n --sbb-paginator-page-color: var(--sbb-color-3-negative);\n --sbb-paginator-page-border-color: var(--sbb-border-color-2-negative);\n}\n@media (forced-colors: active) {\n .sbb-paginator__page--number-item[data-selected] {\n --sbb-paginator-page-border-color: Highlight !important;\n }\n}\n.sbb-paginator__page--number-item:disabled {\n --sbb-paginator-page-color: var(--sbb-color-5);\n --sbb-paginator-page-border-style: dashed;\n --sbb-paginator-page-border-color: var(--sbb-border-color-5);\n --sbb-paginator-page-background-color: var(--sbb-background-color-3);\n --sbb-paginator-page-cursor: var(--sbb-cursor-default);\n}\n.sbb-paginator__page--number-item:disabled:not([data-selected]) {\n --sbb-paginator-page-border-width: var(--sbb-border-width-1x);\n}\n:host([negative]) .sbb-paginator__page--number-item:disabled {\n --sbb-paginator-page-color: var(--sbb-color-5);\n --sbb-paginator-page-background-color: var(--sbb-background-color-3-negative);\n}\n@media (forced-colors: active) {\n .sbb-paginator__page--number-item:disabled {\n --sbb-paginator-page-border-color: GrayText;\n --sbb-paginator-page-color: GrayText;\n --sbb-paginator-page-background-color: Canvas;\n }\n}\n@media (any-hover: hover) {\n .sbb-paginator__page--number-item:not(:disabled):hover {\n --sbb-paginator-page-background-color: var(--sbb-background-color-3);\n --sbb-paginator-page-inset: calc(var(--sbb-border-width-2x) * -1);\n --sbb-paginator-translate-y-content-hover: -0.0625rem;\n }\n :host([negative]) .sbb-paginator__page--number-item:not(:disabled):hover {\n --sbb-paginator-page-background-color: var(--sbb-background-color-3-negative);\n }\n}\n@media (any-hover: hover) and (forced-colors: active) {\n .sbb-paginator__page--number-item:not(:disabled):hover {\n --sbb-paginator-page-background-color: Highlight !important;\n }\n}\n.sbb-paginator__page--number-item:not(:disabled):active {\n --sbb-paginator-page-color: var(--sbb-color-3);\n --sbb-paginator-page-background-color: var(--sbb-background-color-4);\n --sbb-paginator-page-inset: 0;\n --sbb-paginator-translate-y-content-hover: 0;\n}\n:host([negative]) .sbb-paginator__page--number-item:not(:disabled):active {\n --sbb-paginator-page-color: var(--sbb-color-3-negative);\n --sbb-paginator-page-background-color: var(--sbb-background-color-4-negative);\n}\n@media (forced-colors: active) {\n .sbb-paginator__page--number-item:not(:disabled):active {\n --sbb-paginator-page-background-color: Highlight !important;\n }\n}\n\n.sbb-paginator__page--number-item-label {\n transition: transform var(--sbb-paginator-animation-duration) var(--sbb-paginator-animation-easing);\n transform: translateY(var(--sbb-paginator-translate-y-content-hover, 0rem));\n}\n\n.sbb-screen-reader-only {\n border: 0;\n clip-path: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}";
|
|
17
|
-
//#endregion
|
|
18
|
-
//#region src/elements/paginator/paginator/paginator.component.ts
|
|
19
|
-
var MAX_PAGE_NUMBERS_DISPLAYED = 3;
|
|
20
|
-
/**
|
|
21
|
-
* It displays a paginator component.
|
|
22
|
-
*/
|
|
23
|
-
var SbbPaginatorElement = (() => {
|
|
24
|
-
let _classSuper = SbbPaginatorCommonElementMixin(SbbElement);
|
|
25
|
-
let _pageSizeOptions_decorators;
|
|
26
|
-
let _pageSizeOptions_initializers = [];
|
|
27
|
-
let _pageSizeOptions_extraInitializers = [];
|
|
28
|
-
let _pagerPosition_decorators;
|
|
29
|
-
let _pagerPosition_initializers = [];
|
|
30
|
-
let _pagerPosition_extraInitializers = [];
|
|
31
|
-
let _accessibilityItemsPerPageLabel_decorators;
|
|
32
|
-
let _accessibilityItemsPerPageLabel_initializers = [];
|
|
33
|
-
let _accessibilityItemsPerPageLabel_extraInitializers = [];
|
|
34
|
-
return class SbbPaginatorElement extends _classSuper {
|
|
35
|
-
constructor() {
|
|
36
|
-
super(...arguments);
|
|
37
|
-
this.#pageSizeOptions_accessor_storage = __runInitializers(this, _pageSizeOptions_initializers, []);
|
|
38
|
-
this.#pagerPosition_accessor_storage = (__runInitializers(this, _pageSizeOptions_extraInitializers), __runInitializers(this, _pagerPosition_initializers, "start"));
|
|
39
|
-
this.#accessibilityItemsPerPageLabel_accessor_storage = (__runInitializers(this, _pagerPosition_extraInitializers), __runInitializers(this, _accessibilityItemsPerPageLabel_initializers, ""));
|
|
40
|
-
this._markForFocus = (__runInitializers(this, _accessibilityItemsPerPageLabel_extraInitializers), false);
|
|
41
|
-
}
|
|
42
|
-
static {
|
|
43
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
44
|
-
_pageSizeOptions_decorators = [property({
|
|
45
|
-
attribute: "page-size-options",
|
|
46
|
-
type: Array
|
|
47
|
-
})];
|
|
48
|
-
_pagerPosition_decorators = [property({
|
|
49
|
-
attribute: "pager-position",
|
|
50
|
-
reflect: true
|
|
51
|
-
})];
|
|
52
|
-
_accessibilityItemsPerPageLabel_decorators = [forceType(), property({ attribute: "accessibility-items-per-page-label" })];
|
|
53
|
-
__esDecorate(this, null, _pageSizeOptions_decorators, {
|
|
54
|
-
kind: "accessor",
|
|
55
|
-
name: "pageSizeOptions",
|
|
56
|
-
static: false,
|
|
57
|
-
private: false,
|
|
58
|
-
access: {
|
|
59
|
-
has: (obj) => "pageSizeOptions" in obj,
|
|
60
|
-
get: (obj) => obj.pageSizeOptions,
|
|
61
|
-
set: (obj, value) => {
|
|
62
|
-
obj.pageSizeOptions = value;
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
metadata: _metadata
|
|
66
|
-
}, _pageSizeOptions_initializers, _pageSizeOptions_extraInitializers);
|
|
67
|
-
__esDecorate(this, null, _pagerPosition_decorators, {
|
|
68
|
-
kind: "accessor",
|
|
69
|
-
name: "pagerPosition",
|
|
70
|
-
static: false,
|
|
71
|
-
private: false,
|
|
72
|
-
access: {
|
|
73
|
-
has: (obj) => "pagerPosition" in obj,
|
|
74
|
-
get: (obj) => obj.pagerPosition,
|
|
75
|
-
set: (obj, value) => {
|
|
76
|
-
obj.pagerPosition = value;
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
metadata: _metadata
|
|
80
|
-
}, _pagerPosition_initializers, _pagerPosition_extraInitializers);
|
|
81
|
-
__esDecorate(this, null, _accessibilityItemsPerPageLabel_decorators, {
|
|
82
|
-
kind: "accessor",
|
|
83
|
-
name: "accessibilityItemsPerPageLabel",
|
|
84
|
-
static: false,
|
|
85
|
-
private: false,
|
|
86
|
-
access: {
|
|
87
|
-
has: (obj) => "accessibilityItemsPerPageLabel" in obj,
|
|
88
|
-
get: (obj) => obj.accessibilityItemsPerPageLabel,
|
|
89
|
-
set: (obj, value) => {
|
|
90
|
-
obj.accessibilityItemsPerPageLabel = value;
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
metadata: _metadata
|
|
94
|
-
}, _accessibilityItemsPerPageLabel_initializers, _accessibilityItemsPerPageLabel_extraInitializers);
|
|
95
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
96
|
-
enumerable: true,
|
|
97
|
-
configurable: true,
|
|
98
|
-
writable: true,
|
|
99
|
-
value: _metadata
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
static {
|
|
103
|
-
this.elementName = "sbb-paginator";
|
|
104
|
-
}
|
|
105
|
-
static {
|
|
106
|
-
this.styles = [boxSizingStyles, unsafeCSS(paginator_default)];
|
|
107
|
-
}
|
|
108
|
-
static {
|
|
109
|
-
this.events = { page: "page" };
|
|
110
|
-
}
|
|
111
|
-
#pageSizeOptions_accessor_storage;
|
|
112
|
-
/** The available `pageSize` choices. */
|
|
113
|
-
get pageSizeOptions() {
|
|
114
|
-
return this.#pageSizeOptions_accessor_storage;
|
|
115
|
-
}
|
|
116
|
-
set pageSizeOptions(value) {
|
|
117
|
-
this.#pageSizeOptions_accessor_storage = value;
|
|
118
|
-
}
|
|
119
|
-
#pagerPosition_accessor_storage;
|
|
120
|
-
/**
|
|
121
|
-
* Position of the prev/next buttons: if `pageSizeOptions` is set,
|
|
122
|
-
* the sbb-select for the pageSize change will be positioned oppositely, with the page numbers always in the center.
|
|
123
|
-
*/
|
|
124
|
-
get pagerPosition() {
|
|
125
|
-
return this.#pagerPosition_accessor_storage;
|
|
126
|
-
}
|
|
127
|
-
set pagerPosition(value) {
|
|
128
|
-
this.#pagerPosition_accessor_storage = value;
|
|
129
|
-
}
|
|
130
|
-
#accessibilityItemsPerPageLabel_accessor_storage;
|
|
131
|
-
/**
|
|
132
|
-
* Accessibility label for the items per page. Defaults to `Items per page.`.
|
|
133
|
-
* Can be set for cases like a carousel, where `slide` or `image` fits better.
|
|
134
|
-
*/
|
|
135
|
-
get accessibilityItemsPerPageLabel() {
|
|
136
|
-
return this.#accessibilityItemsPerPageLabel_accessor_storage;
|
|
137
|
-
}
|
|
138
|
-
set accessibilityItemsPerPageLabel(value) {
|
|
139
|
-
this.#accessibilityItemsPerPageLabel_accessor_storage = value;
|
|
140
|
-
}
|
|
141
|
-
updated(changedProperties) {
|
|
142
|
-
super.updated(changedProperties);
|
|
143
|
-
/** Tab navigation can force a rerender when ellipsis elements need to be displayed; the focus must stay on the correct element. */
|
|
144
|
-
if (this._markForFocus) {
|
|
145
|
-
const focusElement = this._getVisiblePages().find((e) => this.pageIndex === +e.getAttribute("data-index"));
|
|
146
|
-
if (focusElement) focusElement.focus();
|
|
147
|
-
this._markForFocus = false;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
/** Returns the displayed page elements. */
|
|
151
|
-
_getVisiblePages() {
|
|
152
|
-
return Array.from(this.shadowRoot.querySelectorAll(".sbb-paginator__page--number-item"));
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Calculate the pages set based on the following rules:
|
|
156
|
-
* - the first page must always be visible;
|
|
157
|
-
* - the last page must always be visible;
|
|
158
|
-
* - if there are more than `MAX_PAGE_NUMBERS_DISPLAYED` other pages, ellipsis button must be used.
|
|
159
|
-
*/
|
|
160
|
-
_getVisiblePagesIndex() {
|
|
161
|
-
const totalPages = this.numberOfPages();
|
|
162
|
-
const currentPageIndex = this.pageIndex;
|
|
163
|
-
if (totalPages <= MAX_PAGE_NUMBERS_DISPLAYED + 2) return this._range(totalPages);
|
|
164
|
-
else if (currentPageIndex < MAX_PAGE_NUMBERS_DISPLAYED) return [
|
|
165
|
-
...this._range(MAX_PAGE_NUMBERS_DISPLAYED + 1),
|
|
166
|
-
"ellipsis",
|
|
167
|
-
totalPages - 1
|
|
168
|
-
];
|
|
169
|
-
else if (currentPageIndex >= totalPages - MAX_PAGE_NUMBERS_DISPLAYED) return [
|
|
170
|
-
0,
|
|
171
|
-
"ellipsis",
|
|
172
|
-
...this._range(MAX_PAGE_NUMBERS_DISPLAYED + 1, totalPages - 1 - MAX_PAGE_NUMBERS_DISPLAYED)
|
|
173
|
-
];
|
|
174
|
-
else return [
|
|
175
|
-
0,
|
|
176
|
-
"ellipsis",
|
|
177
|
-
currentPageIndex - 1,
|
|
178
|
-
currentPageIndex,
|
|
179
|
-
currentPageIndex + 1,
|
|
180
|
-
"ellipsis",
|
|
181
|
-
totalPages - 1
|
|
182
|
-
];
|
|
183
|
-
}
|
|
184
|
-
/** Creates an array of consecutive numbers given the length and the starting value. */
|
|
185
|
-
_range(length, offset = 0) {
|
|
186
|
-
return Array.from({ length }, (_, k) => k + offset);
|
|
187
|
-
}
|
|
188
|
-
_onPageNumberClick(index) {
|
|
189
|
-
this.selectPage(index);
|
|
190
|
-
this._markForFocus = sbbInputModalityDetector.mostRecentModality === "keyboard";
|
|
191
|
-
}
|
|
192
|
-
_renderItemPerPageTemplate() {
|
|
193
|
-
return this.pageSizeOptions && this.pageSizeOptions.length > 0 ? html`
|
|
194
|
-
<div class="sbb-paginator__page-size-options">
|
|
195
|
-
<label for="select"
|
|
196
|
-
>${this.accessibilityItemsPerPageLabel ? this.accessibilityItemsPerPageLabel : i18nItemsPerPage[this.language.current]}</label
|
|
197
|
-
>
|
|
198
|
-
<sbb-form-field
|
|
199
|
-
borderless
|
|
200
|
-
width="collapse"
|
|
201
|
-
?negative=${this.negative}
|
|
202
|
-
size=${this.size || nothing}
|
|
203
|
-
>
|
|
204
|
-
<sbb-select
|
|
205
|
-
id="select"
|
|
206
|
-
?disabled=${this.disabled}
|
|
207
|
-
value=${this.pageSizeOptions?.find((e) => e === this.pageSize) ?? this.pageSizeOptions[0]}
|
|
208
|
-
@change=${(e) => this.pageSize = +e.target.value}
|
|
209
|
-
>
|
|
210
|
-
${repeat(this.pageSizeOptions, (element) => html`<sbb-option value=${element}>${element}</sbb-option>`)}
|
|
211
|
-
</sbb-select>
|
|
212
|
-
</sbb-form-field>
|
|
213
|
-
</div>
|
|
214
|
-
` : nothing;
|
|
215
|
-
}
|
|
216
|
-
_renderPageNumbers() {
|
|
217
|
-
return html`
|
|
218
|
-
<ul class="sbb-paginator__pages">
|
|
219
|
-
${repeat(this._getVisiblePagesIndex(), (item) => item === "ellipsis" ? html`
|
|
220
|
-
<li class="sbb-paginator__page--ellipsis">
|
|
221
|
-
<span class="sbb-paginator__page--ellipsis-item">…</span>
|
|
222
|
-
</li>
|
|
223
|
-
` : html`
|
|
224
|
-
<li class="sbb-paginator__page--number">
|
|
225
|
-
<button
|
|
226
|
-
?data-selected=${this.pageIndex === item}
|
|
227
|
-
?disabled=${this.disabled}
|
|
228
|
-
class="sbb-paginator__page--number-item"
|
|
229
|
-
data-index=${item}
|
|
230
|
-
aria-label="${this.accessibilityPageLabel ? this.accessibilityPageLabel : i18nPage[this.language.current]} ${item + 1}"
|
|
231
|
-
aria-current=${this.pageIndex === item ? "true" : nothing}
|
|
232
|
-
@click=${() => this._onPageNumberClick(item)}
|
|
233
|
-
>
|
|
234
|
-
<span class="sbb-paginator__page--number-item-label">${item + 1}</span>
|
|
235
|
-
</button>
|
|
236
|
-
</li>
|
|
237
|
-
`)}
|
|
238
|
-
</ul>
|
|
239
|
-
`;
|
|
240
|
-
}
|
|
241
|
-
renderPaginator() {
|
|
242
|
-
return html`
|
|
243
|
-
<div class="sbb-paginator">
|
|
244
|
-
${this.pagerPosition === "start" ? html`<span class="sbb-paginator__wrapping-group">
|
|
245
|
-
${this.renderPrevNextButtons()} ${this._renderPageNumbers()}
|
|
246
|
-
</span>
|
|
247
|
-
${this._renderItemPerPageTemplate()}` : html`${this._renderItemPerPageTemplate()}
|
|
248
|
-
<span class="sbb-paginator__wrapping-group">
|
|
249
|
-
${this._renderPageNumbers()} ${this.renderPrevNextButtons()}
|
|
250
|
-
</span>`}</span>
|
|
251
|
-
</div>
|
|
252
|
-
`;
|
|
253
|
-
}
|
|
254
|
-
};
|
|
255
|
-
})();
|
|
256
|
-
//#endregion
|
|
257
|
-
export { SbbPaginatorElement as t };
|
|
258
|
-
|
|
259
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC1EQWRTMm1NbS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvcGFnaW5hdG9yL3BhZ2luYXRvci9wYWdpbmF0b3Iuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvcGFnaW5hdG9yL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItcGFnaW5hdG9yLWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKFxuICAgIC0tc2JiLWRpc2FibGUtYW5pbWF0aW9uLWR1cmF0aW9uLFxuICAgIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tMngpXG4gICk7XG5cbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbjpob3N0KFtzaXplPSdzJ10pIHtcbiAgLS1zYmItcGFnaW5hdG9yLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC14cyk7XG59XG5cbjpob3N0KFtzaXplPSdtJ10pIHtcbiAgLS1zYmItcGFnaW5hdG9yLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC1tKTtcbn1cblxuOmhvc3QoW25lZ2F0aXZlXSkge1xuICAtLXNiYi1wYWdpbmF0b3ItcGFnZS1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xuICAtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yOiB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKTtcbn1cblxuOmhvc3QoW3BhZ2VyLXBvc2l0aW9uPSdlbmQnXSkge1xuICAtLXNiYi1wYWdpbmF0b3ItanVzdGlmeS1jb250ZW50OiBlbmQ7XG4gIC0tc2JiLXBhZ2luYXRvci13cmFwcGluZy1ncm91cC13cmFwOiB3cmFwO1xuICAtLXNiYi1wYWdpbmF0b3Itd3JhcDogd3JhcC1yZXZlcnNlO1xufVxuXG4uc2JiLXBhZ2luYXRvcixcbi5zYmItcGFnaW5hdG9yX193cmFwcGluZy1ncm91cCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtM3gpIHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTZ4KTtcbiAganVzdGlmeS1jb250ZW50OiB2YXIoLS1zYmItcGFnaW5hdG9yLWp1c3RpZnktY29udGVudCwgc3RhcnQpO1xufVxuXG4uc2JiLXBhZ2luYXRvciB7XG4gIGZsZXgtd3JhcDogdmFyKC0tc2JiLXBhZ2luYXRvci13cmFwLCB3cmFwKTtcbiAgbWluLWhlaWdodDogdmFyKC0tc2JiLXBhZ2luYXRvci1oZWlnaHQpO1xufVxuXG4uc2JiLXBhZ2luYXRvcl9fd3JhcHBpbmctZ3JvdXAge1xuICBmbGV4LXdyYXA6IHZhcigtLXNiYi1wYWdpbmF0b3Itd3JhcHBpbmctZ3JvdXAtd3JhcCwgd3JhcC1yZXZlcnNlKTtcbn1cblxuLnNiYi1wYWdpbmF0b3JfX3BhZ2Utc2l6ZS1vcHRpb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0yeCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGNvbG9yOiB2YXIoLS1zYmItcGFnaW5hdG9yLXBhZ2UtY29sb3IpO1xuICBmb250LXNpemU6IHZhcigtLXNiYi1wYWdpbmF0b3ItZm9udC1zaXplKTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXNiYi10eXBvLWxldHRlci1zcGFjaW5nLXRleHQpO1xuXG4gIC8vIFJlYXBwbHkgcGFydCBvZiB0aGUgZ2xvYmFsIGZvcm0tZmllbGQgY3NzIHRoYXQgZG9lcyBub3QgcGllcmNlIHRoZSBzaGFkb3cgRE9NLlxuICBzYmItc2VsZWN0IHtcbiAgICBjb2xvcjogdmFyKC0tc2JiLWZvcm0tZmllbGQtdGV4dC1jb2xvcik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zYmItZm9ybS1maWVsZC1pbnB1dC10ZXh0LXNpemUpO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zYmItdHlwby1sZXR0ZXItc3BhY2luZy10ZXh0KTtcbiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLXNiYi1mb3JtLWZpZWxkLXNlbGVjdC1pbmxpbmUtcGFkZGluZy1lbmQpO1xuICB9XG59XG5cbi5zYmItcGFnaW5hdG9yX19wYWdlcyB7XG4gIEBpbmNsdWRlIHNiYi5saXN0LXJlc2V0O1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTF4KTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5zYmItcGFnaW5hdG9yX19wYWdlLS1lbGxpcHNpcyxcbi5zYmItcGFnaW5hdG9yX19wYWdlLS1udW1iZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2JiLXBhZ2luYXRvci1mb250LXNpemUpO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc2JiLXR5cG8tbGV0dGVyLXNwYWNpbmctdGV4dCk7XG4gIGNvbG9yOiB2YXIoLS1zYmItcGFnaW5hdG9yLXBhZ2UtY29sb3IpO1xufVxuXG4uc2JiLXBhZ2luYXRvcl9fcGFnZS0tZWxsaXBzaXMtaXRlbSxcbi5zYmItcGFnaW5hdG9yX19wYWdlLS1udW1iZXItaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC14eHMpO1xuICBoZWlnaHQ6IHZhcigtLXNiYi1zaXplLWVsZW1lbnQteHhzKTtcbn1cblxuLnNiYi1wYWdpbmF0b3JfX3BhZ2UtLW51bWJlci1pdGVtIHtcbiAgQGluY2x1ZGUgc2JiLmJ1dHRvbi1yZXNldDtcblxuICAvLyBUaGUgdGV4dCBtaXhpbiBpcyBuZWVkZWQgdG8gb3ZlcnJpZGUgdGhlIGJ1dHRvbiBiYXNlIHN0eWxlXG4gIC0tc2JiLXRleHQtZm9udC1zaXplOiB2YXIoLS1zYmItcGFnaW5hdG9yLWZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHNiYi50ZXh0O1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY3Vyc29yOiB2YXIoLS1zYmItcGFnaW5hdG9yLXBhZ2UtY3Vyc29yKTtcbiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tc2JiLXBhZ2luYXRvci1wYWdlLWNvbG9yKTtcbiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc2JiLXBhZ2luYXRvci1hbmltYXRpb24tZHVyYXRpb24pIHZhcigtLXNiYi1wYWdpbmF0b3ItYW5pbWF0aW9uLWVhc2luZyk7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLXBhZ2luYXRvci1wYWdlLWJhY2tncm91bmQtY29sb3IsIHRyYW5zcGFyZW50KTtcbiAgICBib3JkZXI6IHZhcigtLXNiYi1wYWdpbmF0b3ItcGFnZS1ib3JkZXItd2lkdGgpIHZhcigtLXNiYi1wYWdpbmF0b3ItcGFnZS1ib3JkZXItc3R5bGUsIG5vbmUpXG4gICAgICB2YXIoLS1zYmItcGFnaW5hdG9yLXBhZ2UtYm9yZGVyLWNvbG9yLCBub25lKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItYm9yZGVyLXJhZGl1cy1pbmZpbml0eSk7XG4gICAgaW5zZXQ6IHZhcigtLXNiYi1wYWdpbmF0b3ItcGFnZS1pbnNldCwgMCk7XG4gICAgdHJhbnNpdGlvbjoge1xuICAgICAgcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlciwgaW5zZXQ7XG4gICAgICBkdXJhdGlvbjogdmFyKC0tc2JiLXBhZ2luYXRvci1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItcGFnaW5hdG9yLWFuaW1hdGlvbi1lYXNpbmcpO1xuICAgIH1cbiAgfVxuXG4gICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIHNiYi5mb2N1cy1vdXRsaW5lO1xuXG4gICAgICBvdXRsaW5lLW9mZnNldDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0yeCk7XG4gICAgfVxuICB9XG5cbiAgJltkYXRhLXNlbGVjdGVkXSB7XG4gICAgQGluY2x1ZGUgc2JiLnRleHQtLWJvbGQ7XG5cbiAgICAtLXNiYi1wYWdpbmF0b3ItcGFnZS1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTMpO1xuICAgIC0tc2JiLXBhZ2luYXRvci1wYWdlLWJvcmRlci13aWR0aDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0yeCk7XG4gICAgLS1zYmItcGFnaW5hdG9yLXBhZ2UtYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAtLXNiYi1wYWdpbmF0b3ItcGFnZS1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItMik7XG5cbiAgICA6aG9zdChbbmVnYXRpdmVdKSAmIHtcbiAgICAgIC0tc2JiLXBhZ2luYXRvci1wYWdlLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMy1uZWdhdGl2ZSk7XG4gICAgICAtLXNiYi1wYWdpbmF0b3ItcGFnZS1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItMi1uZWdhdGl2ZSk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgICAgLS1zYmItcGFnaW5hdG9yLXBhZ2UtYm9yZGVyLWNvbG9yOiBIaWdobGlnaHQgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICAtLXNiYi1wYWdpbmF0b3ItcGFnZS1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xuICAgIC0tc2JiLXBhZ2luYXRvci1wYWdlLWJvcmRlci1zdHlsZTogZGFzaGVkO1xuICAgIC0tc2JiLXBhZ2luYXRvci1wYWdlLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLWJvcmRlci1jb2xvci01KTtcbiAgICAtLXNiYi1wYWdpbmF0b3ItcGFnZS1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zKTtcbiAgICAtLXNiYi1wYWdpbmF0b3ItcGFnZS1jdXJzb3I6IHZhcigtLXNiYi1jdXJzb3ItZGVmYXVsdCk7XG5cbiAgICAmOm5vdChbZGF0YS1zZWxlY3RlZF0pIHtcbiAgICAgIC0tc2JiLXBhZ2luYXRvci1wYWdlLWJvcmRlci13aWR0aDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCk7XG4gICAgfVxuXG4gICAgOmhvc3QoW25lZ2F0aXZlXSkgJiB7XG4gICAgICAtLXNiYi1wYWdpbmF0b3ItcGFnZS1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xuICAgICAgLS1zYmItcGFnaW5hdG9yLXBhZ2UtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMy1uZWdhdGl2ZSk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgICAgLS1zYmItcGFnaW5hdG9yLXBhZ2UtYm9yZGVyLWNvbG9yOiBHcmF5VGV4dDtcbiAgICAgIC0tc2JiLXBhZ2luYXRvci1wYWdlLWNvbG9yOiBHcmF5VGV4dDtcbiAgICAgIC0tc2JiLXBhZ2luYXRvci1wYWdlLWJhY2tncm91bmQtY29sb3I6IENhbnZhcztcbiAgICB9XG4gIH1cblxuICAmOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBAaW5jbHVkZSBzYmIuaG92ZXItbXEoJGhvdmVyOiB0cnVlKSB7XG4gICAgICAtLXNiYi1wYWdpbmF0b3ItcGFnZS1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zKTtcbiAgICAgIC0tc2JiLXBhZ2luYXRvci1wYWdlLWluc2V0OiBjYWxjKHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMngpICogLTEpO1xuICAgICAgLS1zYmItcGFnaW5hdG9yLXRyYW5zbGF0ZS15LWNvbnRlbnQtaG92ZXI6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgtMSl9O1xuXG4gICAgICA6aG9zdChbbmVnYXRpdmVdKSAmIHtcbiAgICAgICAgLS1zYmItcGFnaW5hdG9yLXBhZ2UtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMy1uZWdhdGl2ZSk7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAgICAgLS1zYmItcGFnaW5hdG9yLXBhZ2UtYmFja2dyb3VuZC1jb2xvcjogSGlnaGxpZ2h0ICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpub3QoOmRpc2FibGVkKTphY3RpdmUge1xuICAgIC0tc2JiLXBhZ2luYXRvci1wYWdlLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMyk7XG4gICAgLS1zYmItcGFnaW5hdG9yLXBhZ2UtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItNCk7XG4gICAgLS1zYmItcGFnaW5hdG9yLXBhZ2UtaW5zZXQ6IDA7XG4gICAgLS1zYmItcGFnaW5hdG9yLXRyYW5zbGF0ZS15LWNvbnRlbnQtaG92ZXI6IDA7XG5cbiAgICA6aG9zdChbbmVnYXRpdmVdKSAmIHtcbiAgICAgIC0tc2JiLXBhZ2luYXRvci1wYWdlLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMy1uZWdhdGl2ZSk7XG4gICAgICAtLXNiYi1wYWdpbmF0b3ItcGFnZS1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci00LW5lZ2F0aXZlKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgICAtLXNiYi1wYWdpbmF0b3ItcGFnZS1iYWNrZ3JvdW5kLWNvbG9yOiBIaWdobGlnaHQgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuLnNiYi1wYWdpbmF0b3JfX3BhZ2UtLW51bWJlci1pdGVtLWxhYmVsIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXNiYi1wYWdpbmF0b3ItYW5pbWF0aW9uLWR1cmF0aW9uKVxuICAgIHZhcigtLXNiYi1wYWdpbmF0b3ItYW5pbWF0aW9uLWVhc2luZyk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1zYmItcGFnaW5hdG9yLXRyYW5zbGF0ZS15LWNvbnRlbnQtaG92ZXIsICN7c2JiLnB4LXRvLXJlbS1idWlsZCgwKX0pKTtcbn1cblxuLy8gTmVlZGVkIGZvciB0aGUgc2JiLXNlbGVjdFxuLnNiYi1zY3JlZW4tcmVhZGVyLW9ubHkge1xuICBAaW5jbHVkZSBzYmIuc2NyZWVuLXJlYWRlci1vbmx5O1xufVxuIiwiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbiAgdW5zYWZlQ1NTLFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZXBlYXQgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZXBlYXQuanMnO1xuXG5pbXBvcnQgeyBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgU2JiRWxlbWVudCB9IGZyb20gJy4uLy4uL2NvcmUvYmFzZS1lbGVtZW50cy50cyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgaTE4bkl0ZW1zUGVyUGFnZSwgaTE4blBhZ2UgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4udHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJTZWxlY3RFbGVtZW50IH0gZnJvbSAnLi4vLi4vc2VsZWN0LnRzJztcbmltcG9ydCB7IFNiYlBhZ2luYXRvckNvbW1vbkVsZW1lbnRNaXhpbiB9IGZyb20gJy4uL2NvbW1vbi9wYWdpbmF0b3ItY29tbW9uLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vcGFnaW5hdG9yLnNjc3M/aW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9mb3JtLWZpZWxkLnRzJztcbmltcG9ydCAnLi4vLi4vc2VsZWN0LnRzJztcbmltcG9ydCAnLi4vLi4vb3B0aW9uLnRzJztcbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LnRzJztcblxuY29uc3QgTUFYX1BBR0VfTlVNQkVSU19ESVNQTEFZRUQgPSAzO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgcGFnaW5hdG9yIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlBhZ2luYXRvckVsZW1lbnQgZXh0ZW5kcyBTYmJQYWdpbmF0b3JDb21tb25FbGVtZW50TWl4aW4oU2JiRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLXBhZ2luYXRvcic7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBwYWdlOiAncGFnZScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIFRoZSBhdmFpbGFibGUgYHBhZ2VTaXplYCBjaG9pY2VzLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdwYWdlLXNpemUtb3B0aW9ucycsIHR5cGU6IEFycmF5IH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gW107XG5cbiAgLyoqXG4gICAqIFBvc2l0aW9uIG9mIHRoZSBwcmV2L25leHQgYnV0dG9uczogaWYgYHBhZ2VTaXplT3B0aW9uc2AgaXMgc2V0LFxuICAgKiB0aGUgc2JiLXNlbGVjdCBmb3IgdGhlIHBhZ2VTaXplIGNoYW5nZSB3aWxsIGJlIHBvc2l0aW9uZWQgb3Bwb3NpdGVseSwgd2l0aCB0aGUgcGFnZSBudW1iZXJzIGFsd2F5cyBpbiB0aGUgY2VudGVyLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncGFnZXItcG9zaXRpb24nLCByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBwYWdlclBvc2l0aW9uOlxuICAgIHwgJ3N0YXJ0J1xuICAgIHwgJ2VuZCcgPSAnc3RhcnQnO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3NpYmlsaXR5IGxhYmVsIGZvciB0aGUgaXRlbXMgcGVyIHBhZ2UuIERlZmF1bHRzIHRvIGBJdGVtcyBwZXIgcGFnZS5gLlxuICAgKiBDYW4gYmUgc2V0IGZvciBjYXNlcyBsaWtlIGEgY2Fyb3VzZWwsIHdoZXJlIGBzbGlkZWAgb3IgYGltYWdlYCBmaXRzIGJldHRlci5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWl0ZW1zLXBlci1wYWdlLWxhYmVsJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUl0ZW1zUGVyUGFnZUxhYmVsOiBzdHJpbmcgPSAnJztcblxuICBwcml2YXRlIF9tYXJrRm9yRm9jdXMgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci51cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIC8qKiBUYWIgbmF2aWdhdGlvbiBjYW4gZm9yY2UgYSByZXJlbmRlciB3aGVuIGVsbGlwc2lzIGVsZW1lbnRzIG5lZWQgdG8gYmUgZGlzcGxheWVkOyB0aGUgZm9jdXMgbXVzdCBzdGF5IG9uIHRoZSBjb3JyZWN0IGVsZW1lbnQuICovXG4gICAgaWYgKHRoaXMuX21hcmtGb3JGb2N1cykge1xuICAgICAgY29uc3QgZm9jdXNFbGVtZW50ID0gdGhpcy5fZ2V0VmlzaWJsZVBhZ2VzKCkuZmluZChcbiAgICAgICAgKGUpID0+IHRoaXMucGFnZUluZGV4ID09PSArZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaW5kZXgnKSEsXG4gICAgICApO1xuICAgICAgaWYgKGZvY3VzRWxlbWVudCkge1xuICAgICAgICAoZm9jdXNFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5mb2N1cygpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbWFya0ZvckZvY3VzID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGRpc3BsYXllZCBwYWdlIGVsZW1lbnRzLiAqL1xuICBwcml2YXRlIF9nZXRWaXNpYmxlUGFnZXMoKTogRWxlbWVudFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zYmItcGFnaW5hdG9yX19wYWdlLS1udW1iZXItaXRlbScpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIHBhZ2VzIHNldCBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIHJ1bGVzOlxuICAgKiAgLSB0aGUgZmlyc3QgcGFnZSBtdXN0IGFsd2F5cyBiZSB2aXNpYmxlO1xuICAgKiAgLSB0aGUgbGFzdCBwYWdlIG11c3QgYWx3YXlzIGJlIHZpc2libGU7XG4gICAqICAtIGlmIHRoZXJlIGFyZSBtb3JlIHRoYW4gYE1BWF9QQUdFX05VTUJFUlNfRElTUExBWUVEYCBvdGhlciBwYWdlcywgZWxsaXBzaXMgYnV0dG9uIG11c3QgYmUgdXNlZC5cbiAgICovXG4gIHByaXZhdGUgX2dldFZpc2libGVQYWdlc0luZGV4KCk6IChudW1iZXIgfCAnZWxsaXBzaXMnKVtdIHtcbiAgICBjb25zdCB0b3RhbFBhZ2VzOiBudW1iZXIgPSB0aGlzLm51bWJlck9mUGFnZXMoKTtcbiAgICBjb25zdCBjdXJyZW50UGFnZUluZGV4OiBudW1iZXIgPSB0aGlzLnBhZ2VJbmRleDtcblxuICAgIGlmICh0b3RhbFBhZ2VzIDw9IE1BWF9QQUdFX05VTUJFUlNfRElTUExBWUVEICsgMikge1xuICAgICAgcmV0dXJuIHRoaXMuX3JhbmdlKHRvdGFsUGFnZXMpO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudFBhZ2VJbmRleCA8IE1BWF9QQUdFX05VTUJFUlNfRElTUExBWUVEKSB7XG4gICAgICByZXR1cm4gWy4uLnRoaXMuX3JhbmdlKE1BWF9QQUdFX05VTUJFUlNfRElTUExBWUVEICsgMSksICdlbGxpcHNpcycsIHRvdGFsUGFnZXMgLSAxXTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRQYWdlSW5kZXggPj0gdG90YWxQYWdlcyAtIE1BWF9QQUdFX05VTUJFUlNfRElTUExBWUVEKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAwLFxuICAgICAgICAnZWxsaXBzaXMnLFxuICAgICAgICAuLi50aGlzLl9yYW5nZShNQVhfUEFHRV9OVU1CRVJTX0RJU1BMQVlFRCArIDEsIHRvdGFsUGFnZXMgLSAxIC0gTUFYX1BBR0VfTlVNQkVSU19ESVNQTEFZRUQpLFxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgMCxcbiAgICAgICAgJ2VsbGlwc2lzJyxcbiAgICAgICAgY3VycmVudFBhZ2VJbmRleCAtIDEsXG4gICAgICAgIGN1cnJlbnRQYWdlSW5kZXgsXG4gICAgICAgIGN1cnJlbnRQYWdlSW5kZXggKyAxLFxuICAgICAgICAnZWxsaXBzaXMnLFxuICAgICAgICB0b3RhbFBhZ2VzIC0gMSxcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgLyoqIENyZWF0ZXMgYW4gYXJyYXkgb2YgY29uc2VjdXRpdmUgbnVtYmVycyBnaXZlbiB0aGUgbGVuZ3RoIGFuZCB0aGUgc3RhcnRpbmcgdmFsdWUuICovXG4gIHByaXZhdGUgX3JhbmdlKGxlbmd0aDogbnVtYmVyLCBvZmZzZXQ6IG51bWJlciA9IDApOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGggfSwgKF8sIGspID0+IGsgKyBvZmZzZXQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25QYWdlTnVtYmVyQ2xpY2soaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0UGFnZShpbmRleCk7XG5cbiAgICAvLyBXaGVuIHRoZSBwYWdlIGlzIGNoYW5nZWQsIHRoZSBuZXcgY3VycmVudCBwYWdlIG1pZ2h0IGNoYW5nZSBpdHMgcG9zaXRpb24uXG4gICAgLy8gQWZ0ZXIgdGhlIHJlbmRlciwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgZm9jdXMgc3RheXMgb24gdGhlIHNlbGVjdGVkIHBhZ2UuXG4gICAgdGhpcy5fbWFya0ZvckZvY3VzID0gc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLm1vc3RSZWNlbnRNb2RhbGl0eSA9PT0gJ2tleWJvYXJkJztcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlckl0ZW1QZXJQYWdlVGVtcGxhdGUoKTogVGVtcGxhdGVSZXN1bHQgfCB0eXBlb2Ygbm90aGluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFnZVNpemVPcHRpb25zICYmIHRoaXMucGFnZVNpemVPcHRpb25zLmxlbmd0aCA+IDBcbiAgICAgID8gaHRtbGBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXBhZ2luYXRvcl9fcGFnZS1zaXplLW9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzZWxlY3RcIlxuICAgICAgICAgICAgICA+JHt0aGlzLmFjY2Vzc2liaWxpdHlJdGVtc1BlclBhZ2VMYWJlbFxuICAgICAgICAgICAgICAgID8gdGhpcy5hY2Nlc3NpYmlsaXR5SXRlbXNQZXJQYWdlTGFiZWxcbiAgICAgICAgICAgICAgICA6IGkxOG5JdGVtc1BlclBhZ2VbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX08L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c2JiLWZvcm0tZmllbGRcbiAgICAgICAgICAgICAgYm9yZGVybGVzc1xuICAgICAgICAgICAgICB3aWR0aD1cImNvbGxhcHNlXCJcbiAgICAgICAgICAgICAgP25lZ2F0aXZlPSR7dGhpcy5uZWdhdGl2ZX1cbiAgICAgICAgICAgICAgc2l6ZT0ke3RoaXMuc2l6ZSB8fCBub3RoaW5nfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c2JiLXNlbGVjdFxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0XCJcbiAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgIHZhbHVlPSR7dGhpcy5wYWdlU2l6ZU9wdGlvbnM/LmZpbmQoKGUpID0+IGUgPT09IHRoaXMucGFnZVNpemUpID8/XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlU2l6ZU9wdGlvbnMhWzBdfVxuICAgICAgICAgICAgICAgIEBjaGFuZ2U9JHsoZTogRXZlbnQpID0+XG4gICAgICAgICAgICAgICAgICAodGhpcy5wYWdlU2l6ZSA9ICsoKGUudGFyZ2V0IGFzIFNiYlNlbGVjdEVsZW1lbnQpLnZhbHVlIGFzIHN0cmluZykpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgJHtyZXBlYXQoXG4gICAgICAgICAgICAgICAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucyEsXG4gICAgICAgICAgICAgICAgICAoZWxlbWVudCkgPT4gaHRtbGA8c2JiLW9wdGlvbiB2YWx1ZT0ke2VsZW1lbnR9PiR7ZWxlbWVudH08L3NiYi1vcHRpb24+YCxcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L3NiYi1zZWxlY3Q+XG4gICAgICAgICAgICA8L3NiYi1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICBgXG4gICAgICA6IG5vdGhpbmc7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJQYWdlTnVtYmVycygpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8dWwgY2xhc3M9XCJzYmItcGFnaW5hdG9yX19wYWdlc1wiPlxuICAgICAgICAke3JlcGVhdChcbiAgICAgICAgICB0aGlzLl9nZXRWaXNpYmxlUGFnZXNJbmRleCgpLFxuICAgICAgICAgIChpdGVtOiBudW1iZXIgfCAnZWxsaXBzaXMnKTogVGVtcGxhdGVSZXN1bHQgPT5cbiAgICAgICAgICAgIGl0ZW0gPT09ICdlbGxpcHNpcydcbiAgICAgICAgICAgICAgPyBodG1sYFxuICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwic2JiLXBhZ2luYXRvcl9fcGFnZS0tZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItcGFnaW5hdG9yX19wYWdlLS1lbGxpcHNpcy1pdGVtXCI+4oCmPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICBgXG4gICAgICAgICAgICAgIDogaHRtbGBcbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInNiYi1wYWdpbmF0b3JfX3BhZ2UtLW51bWJlclwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgP2RhdGEtc2VsZWN0ZWQ9JHt0aGlzLnBhZ2VJbmRleCA9PT0gaXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLXBhZ2luYXRvcl9fcGFnZS0tbnVtYmVyLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaW5kZXg9JHtpdGVtfVxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCIke3RoaXMuYWNjZXNzaWJpbGl0eVBhZ2VMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmFjY2Vzc2liaWxpdHlQYWdlTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaTE4blBhZ2VbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX0gJHtpdGVtICsgMX1cIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY3VycmVudD0ke3RoaXMucGFnZUluZGV4ID09PSBpdGVtID8gJ3RydWUnIDogbm90aGluZ31cbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9vblBhZ2VOdW1iZXJDbGljayhpdGVtKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXBhZ2luYXRvcl9fcGFnZS0tbnVtYmVyLWl0ZW0tbGFiZWxcIj4ke2l0ZW0gKyAxfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIGAsXG4gICAgICAgICl9XG4gICAgICA8L3VsPlxuICAgIGA7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyUGFnaW5hdG9yKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItcGFnaW5hdG9yXCI+XG4gICAgICAgICR7XG4gICAgICAgICAgdGhpcy5wYWdlclBvc2l0aW9uID09PSAnc3RhcnQnXG4gICAgICAgICAgICA/IGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItcGFnaW5hdG9yX193cmFwcGluZy1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgJHt0aGlzLnJlbmRlclByZXZOZXh0QnV0dG9ucygpfSAke3RoaXMuX3JlbmRlclBhZ2VOdW1iZXJzKCl9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICR7dGhpcy5fcmVuZGVySXRlbVBlclBhZ2VUZW1wbGF0ZSgpfWBcbiAgICAgICAgICAgIDogaHRtbGAke3RoaXMuX3JlbmRlckl0ZW1QZXJQYWdlVGVtcGxhdGUoKX1cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1wYWdpbmF0b3JfX3dyYXBwaW5nLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAke3RoaXMuX3JlbmRlclBhZ2VOdW1iZXJzKCl9ICR7dGhpcy5yZW5kZXJQcmV2TmV4dEJ1dHRvbnMoKX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICB9PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXBhZ2luYXRvcic6IFNiYlBhZ2luYXRvckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMEJBLElBQU0sNkJBQTZCOzs7O0lBS3RCLDZCQUFtQjttQkFBUywrQkFBK0IsV0FBVzs7Ozs7Ozs7OztjQUF0RSw0QkFBNEIsWUFBMEM7OztBQVNqRSxTQUFBLG1DQUFBLGtCQUFBLE1BQUEsK0JBQTRCLEVBQUUsQ0FBQTtBQU1xQyxTQUFBLGtDQUFBLGtCQUFBLE1BQUEsbUNBQUEsRUFBQSxrQkFBQSxNQUFBLDZCQUV2RSxRQUFPO0FBUUgsU0FBQSxtREFBQSxrQkFBQSxNQUFBLGlDQUFBLEVBQUEsa0JBQUEsTUFBQSw4Q0FBeUMsR0FBRTtBQUVuRCxRQUFBLGlCQUFhLGtCQUFBLE1BQUEsa0RBQUEsRUFBRzs7OztrQ0FuQnZCLFNBQVM7SUFBRSxXQUFXO0lBQXFCLE1BQU07SUFBTyxDQUFDLENBQUE7Z0NBT3pELFNBQVM7SUFBRSxXQUFXO0lBQWtCLFNBQVM7SUFBTSxD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
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { unsafeCSS } from "lit";
|
|
3
|
-
import { property } from "lit/decorators.js";
|
|
4
|
-
import "./core/base-elements.js";
|
|
5
|
-
import { SbbFormAssociatedRadioButtonMixin } from "./core/mixins.js";
|
|
6
|
-
//#endregion
|
|
7
|
-
//#region src/elements/radio-button/common/radio-button-common.ts
|
|
8
|
-
var radioButtonCommonStyle = unsafeCSS(":host {\n --sbb-radio-button-inner-circle-color: var(--sbb-radio-button-background-color);\n --sbb-radio-button-background-fake-border-width: calc(var(--sbb-radio-button-dimension) / 2);\n --sbb-radio-button-icon-align: calc(\n (1em * var(--sbb-typo-line-height-text) - var(--sbb-radio-button-dimension)) / 2\n );\n}\n\n:host(:is(:state(checked),[state--checked])) {\n --sbb-radio-button-inner-circle-color: var(--sbb-color-primary);\n --sbb-radio-button-background-fake-border-width: calc(\n (var(--sbb-radio-button-dimension) - var(--sbb-radio-button-inner-circle-dimension)) / 2\n );\n}\n@media (forced-colors: active) {\n :host(:is(:state(checked),[state--checked])) {\n --sbb-radio-button-inner-circle-color: Highlight;\n --sbb-radio-button-border-color: Highlight;\n }\n}\n\n:host(:disabled) {\n --sbb-radio-button-label-color: var(--sbb-color-granite);\n --sbb-radio-button-label-color: light-dark(var(--sbb-color-granite), var(--sbb-color-aluminium));\n --sbb-radio-button-background-color: var(--sbb-background-color-3);\n --sbb-radio-button-border-style: dashed;\n --sbb-radio-button-inner-circle-color: var(--sbb-radio-button-background-color);\n --sbb-radio-button-cursor: var(--sbb-cursor-default);\n}\n@media (forced-colors: active) {\n :host(:disabled) {\n --sbb-radio-button-background-color: Canvas;\n --sbb-radio-button-inner-circle-color: GrayText;\n --sbb-radio-button-border-color: GrayText;\n --sbb-radio-button-border-style: solid;\n }\n}\n\n:host(:disabled:is(:state(checked),[state--checked])) {\n --sbb-radio-button-inner-circle-color: var(--sbb-background-color-2-inverted);\n}\n\n:host([size=xs]) {\n --sbb-radio-button-font-size: var(--sbb-text-font-size-xs);\n --sbb-radio-button-dimension: var(--sbb-radio-button-dimension-xs);\n}\n\n:host([size=s]) {\n --sbb-radio-button-font-size: var(--sbb-text-font-size-s);\n --sbb-radio-button-dimension: var(--sbb-radio-button-dimension-s);\n}\n\n:host([size=m]) {\n --sbb-radio-button-font-size: var(--sbb-text-font-size-m);\n --sbb-radio-button-dimension: var(--sbb-radio-button-dimension-m);\n}\n\n.sbb-screen-reader-only {\n border: 0;\n clip-path: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n\n.sbb-radio-button {\n font-size: var(--sbb-radio-button-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n display: block;\n cursor: var(--sbb-radio-button-cursor);\n user-select: none;\n position: relative;\n color: var(--sbb-radio-button-label-color);\n -webkit-tap-highlight-color: transparent;\n}\n\n.sbb-radio-button__label-slot {\n display: flex;\n align-items: flex-start;\n overflow: hidden;\n min-height: calc(var(--sbb-radio-button-font-size) * var(--sbb-typo-line-height-text));\n}\n.sbb-radio-button__label-slot::before, .sbb-radio-button__label-slot::after {\n content: \"\";\n flex-shrink: 0;\n width: var(--sbb-radio-button-dimension);\n height: var(--sbb-radio-button-dimension);\n border-radius: 50%;\n margin-block-start: var(--sbb-radio-button-icon-align);\n transition-duration: var(--sbb-disable-animation-duration, var(--sbb-animation-duration-4x));\n transition-timing-function: ease;\n transition-property: background-color, border;\n}\n@media (forced-colors: active) {\n .sbb-radio-button__label-slot::before, .sbb-radio-button__label-slot::after {\n transition: none;\n }\n}\n.sbb-radio-button__label-slot::before {\n background: var(--sbb-radio-button-inner-circle-color);\n border: var(--sbb-radio-button-background-fake-border-width) solid var(--sbb-radio-button-background-color);\n margin-inline-end: var(--sbb-radio-button-label-gap);\n}\n.sbb-radio-button__label-slot::after {\n position: absolute;\n border: var(--sbb-radio-button-border-width) var(--sbb-radio-button-border-style) var(--sbb-radio-button-border-color);\n}");
|
|
9
|
-
var SbbRadioButtonCommonElementMixin = (superClass) => {
|
|
10
|
-
return (() => {
|
|
11
|
-
let _classSuper = SbbFormAssociatedRadioButtonMixin(superClass);
|
|
12
|
-
let _instanceExtraInitializers = [];
|
|
13
|
-
let _set_allowEmptySelection_decorators;
|
|
14
|
-
return class SbbRadioButtonCommonElement extends _classSuper {
|
|
15
|
-
static {
|
|
16
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
17
|
-
_set_allowEmptySelection_decorators = [property({
|
|
18
|
-
attribute: "allow-empty-selection",
|
|
19
|
-
type: Boolean
|
|
20
|
-
})];
|
|
21
|
-
__esDecorate(this, null, _set_allowEmptySelection_decorators, {
|
|
22
|
-
kind: "setter",
|
|
23
|
-
name: "allowEmptySelection",
|
|
24
|
-
static: false,
|
|
25
|
-
private: false,
|
|
26
|
-
access: {
|
|
27
|
-
has: (obj) => "allowEmptySelection" in obj,
|
|
28
|
-
set: (obj, value) => {
|
|
29
|
-
obj.allowEmptySelection = value;
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
metadata: _metadata
|
|
33
|
-
}, null, _instanceExtraInitializers);
|
|
34
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
35
|
-
enumerable: true,
|
|
36
|
-
configurable: true,
|
|
37
|
-
writable: true,
|
|
38
|
-
value: _metadata
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
static {
|
|
42
|
-
this.events = {
|
|
43
|
-
change: "change",
|
|
44
|
-
input: "input"
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Whether the radio can be deselected.
|
|
49
|
-
*/
|
|
50
|
-
set allowEmptySelection(value) {
|
|
51
|
-
this._allowEmptySelection = Boolean(value);
|
|
52
|
-
}
|
|
53
|
-
get allowEmptySelection() {
|
|
54
|
-
return this._allowEmptySelection || (this.group?.allowEmptySelection ?? false);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Reference to the connected radio button group.
|
|
58
|
-
*/
|
|
59
|
-
get group() {
|
|
60
|
-
return this._group;
|
|
61
|
-
}
|
|
62
|
-
constructor() {
|
|
63
|
-
super();
|
|
64
|
-
this._allowEmptySelection = (__runInitializers(this, _instanceExtraInitializers), false);
|
|
65
|
-
this._group = null;
|
|
66
|
-
this.addEventListener?.("click", (e) => this._handleClick(e));
|
|
67
|
-
this.addEventListener?.("keydown", (e) => this._handleKeyDown(e));
|
|
68
|
-
}
|
|
69
|
-
connectedCallback() {
|
|
70
|
-
super.connectedCallback();
|
|
71
|
-
this._group = this.closest("sbb-radio-button-group");
|
|
72
|
-
[
|
|
73
|
-
"disabled",
|
|
74
|
-
"required",
|
|
75
|
-
"size"
|
|
76
|
-
].forEach((p) => this.requestUpdate(p));
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Set the radio-button as 'checked'; if 'allowEmptySelection', toggle the checked property.
|
|
80
|
-
* In both cases it emits the change events.
|
|
81
|
-
*/
|
|
82
|
-
select() {
|
|
83
|
-
if (this.disabled || this.formDisabled) return;
|
|
84
|
-
if (this.allowEmptySelection) {
|
|
85
|
-
this.checked = !this.checked;
|
|
86
|
-
this.emitChangeEvents();
|
|
87
|
-
} else if (!this.checked) {
|
|
88
|
-
this.checked = true;
|
|
89
|
-
this.emitChangeEvents();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
willUpdate(changedProperties) {
|
|
93
|
-
super.willUpdate(changedProperties);
|
|
94
|
-
if (changedProperties.has("value"))
|
|
95
|
-
/** @internal */
|
|
96
|
-
this.dispatchEvent(new Event("ɵradiobuttonvaluechange", { bubbles: true }));
|
|
97
|
-
}
|
|
98
|
-
isDisabledExternally() {
|
|
99
|
-
return this.group?.disabled ?? false;
|
|
100
|
-
}
|
|
101
|
-
isRequiredExternally() {
|
|
102
|
-
return this.group?.required ?? false;
|
|
103
|
-
}
|
|
104
|
-
async _handleClick(event) {
|
|
105
|
-
event.preventDefault();
|
|
106
|
-
this.select();
|
|
107
|
-
/**
|
|
108
|
-
* Since only a single radio of a group is focusable at any time, it is possible that the one clicked does not have 'tabindex=0'.
|
|
109
|
-
* To cover that, we await the next render (which will make the 'checked' radio focusable) and focus the clicked radio
|
|
110
|
-
*/
|
|
111
|
-
await this.updateComplete;
|
|
112
|
-
this.focus();
|
|
113
|
-
}
|
|
114
|
-
_handleKeyDown(evt) {
|
|
115
|
-
if (evt.code === "Space") {
|
|
116
|
-
evt.preventDefault();
|
|
117
|
-
this.select();
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
})();
|
|
122
|
-
};
|
|
123
|
-
//#endregion
|
|
124
|
-
export { radioButtonCommonStyle as n, SbbRadioButtonCommonElementMixin as t };
|
|
125
|
-
|
|
126
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLWNvbW1vbi1DMy14dVk3OC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvcmFkaW8tYnV0dG9uL2NvbW1vbi9yYWRpby1idXR0b24tY29tbW9uLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3JhZGlvLWJ1dHRvbi9jb21tb24vcmFkaW8tYnV0dG9uLWNvbW1vbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tc2JiLXJhZGlvLWJ1dHRvbi1pbm5lci1jaXJjbGUtY29sb3I6IHZhcigtLXNiYi1yYWRpby1idXR0b24tYmFja2dyb3VuZC1jb2xvcik7XG5cbiAgLy8gVGhlIGJvcmRlciBpbiB1bmNoZWNrZWQgc3RhdGUgc2hvdWxkIGZpbGwgdGhlIGNpcmNsZS5cbiAgLS1zYmItcmFkaW8tYnV0dG9uLWJhY2tncm91bmQtZmFrZS1ib3JkZXItd2lkdGg6IGNhbGModmFyKC0tc2JiLXJhZGlvLWJ1dHRvbi1kaW1lbnNpb24pIC8gMik7XG5cbiAgLy8gQWxpZ24gcmFkaW8gYnV0dG9uIHRvIHRoZSBmaXJzdCByb3cgb2YgdGhlIGxhYmVsIGJhc2VkIG9uIHRoZSBsaW5lLWhlaWdodCBzbyB0aGF0IGl0J3MgdmVydGljYWxseVxuICAvLyBhbGlnbmVkIHRvIHRoZSBsYWJlbCBhbmQgc3RpY2tzIHRvIHRoZSB0b3AgaWYgdGhlIGxhYmVsIGJyZWFrcyBpbnRvIG11bHRpcGxlIGxpbmVzXG4gIC0tc2JiLXJhZGlvLWJ1dHRvbi1pY29uLWFsaWduOiBjYWxjKFxuICAgICgxZW0gKiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KSAtIHZhcigtLXNiYi1yYWRpby1idXR0b24tZGltZW5zaW9uKSkgLyAyXG4gICk7XG59XG5cbjpob3N0KDpzdGF0ZShjaGVja2VkKSkge1xuICAtLXNiYi1yYWRpby1idXR0b24taW5uZXItY2lyY2xlLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItcHJpbWFyeSk7XG4gIC0tc2JiLXJhZGlvLWJ1dHRvbi1iYWNrZ3JvdW5kLWZha2UtYm9yZGVyLXdpZHRoOiBjYWxjKFxuICAgICh2YXIoLS1zYmItcmFkaW8tYnV0dG9uLWRpbWVuc2lvbikgLSB2YXIoLS1zYmItcmFkaW8tYnV0dG9uLWlubmVyLWNpcmNsZS1kaW1lbnNpb24pKSAvIDJcbiAgKTtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItcmFkaW8tYnV0dG9uLWlubmVyLWNpcmNsZS1jb2xvcjogSGlnaGxpZ2h0O1xuICAgIC0tc2JiLXJhZGlvLWJ1dHRvbi1ib3JkZXItY29sb3I6IEhpZ2hsaWdodDtcbiAgfVxufVxuXG4vLyBEaXNhYmxlZCBkZWZpbml0aW9ucyBoYXZlIHRvIGJlIGFmdGVyIGNoZWNrZWQgZGVmaW5pdGlvbnNcbjpob3N0KDpkaXNhYmxlZCkge1xuICAtLXNiYi1yYWRpby1idXR0b24tbGFiZWwtY29sb3I6IGxpZ2h0LWRhcmsodmFyKC0tc2JiLWNvbG9yLWdyYW5pdGUpLCB2YXIoLS1zYmItY29sb3ItYWx1bWluaXVtKSk7XG4gIC0tc2JiLXJhZGlvLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zKTtcbiAgLS1zYmItcmFkaW8tYnV0dG9uLWJvcmRlci1zdHlsZTogZGFzaGVkO1xuICAtLXNiYi1yYWRpby1idXR0b24taW5uZXItY2lyY2xlLWNvbG9yOiB2YXIoLS1zYmItcmFkaW8tYnV0dG9uLWJhY2tncm91bmQtY29sb3IpO1xuICAtLXNiYi1yYWRpby1idXR0b24tY3Vyc29yOiB2YXIoLS1zYmItY3Vyc29yLWRlZmF1bHQpO1xuXG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAtLXNiYi1yYWRpby1idXR0b24tYmFja2dyb3VuZC1jb2xvcjogQ2FudmFzO1xuICAgIC0tc2JiLXJhZGlvLWJ1dHRvbi1pbm5lci1jaXJjbGUtY29sb3I6IEdyYXlUZXh0O1xuICAgIC0tc2JiLXJhZGlvLWJ1dHRvbi1ib3JkZXItY29sb3I6IEdyYXlUZXh0O1xuICAgIC0tc2JiLXJhZGlvLWJ1dHRvbi1ib3JkZXItc3R5bGU6IHNvbGlkO1xuICB9XG59XG5cbi8vIERpc2FibGVkIGRlZmluaXRpb25zIGhhdmUgdG8gYmUgYWZ0ZXIgY2hlY2tlZCBkZWZpbml0aW9uc1xuOmhvc3QoOmRpc2FibGVkOnN0YXRlKGNoZWNrZWQpKSB7XG4gIC0tc2JiLXJhZGlvLWJ1dHRvbi1pbm5lci1jaXJjbGUtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTItaW52ZXJ0ZWQpO1xufVxuXG46aG9zdChbc2l6ZT0neHMnXSkge1xuICAtLXNiYi1yYWRpby1idXR0b24tZm9udC1zaXplOiB2YXIoLS1zYmItdGV4dC1mb250LXNpemUteHMpO1xuICAtLXNiYi1yYWRpby1idXR0b24tZGltZW5zaW9uOiB2YXIoLS1zYmItcmFkaW8tYnV0dG9uLWRpbWVuc2lvbi14cyk7XG59XG5cbjpob3N0KFtzaXplPSdzJ10pIHtcbiAgLS1zYmItcmFkaW8tYnV0dG9uLWZvbnQtc2l6ZTogdmFyKC0tc2JiLXRleHQtZm9udC1zaXplLXMpO1xuICAtLXNiYi1yYWRpby1idXR0b24tZGltZW5zaW9uOiB2YXIoLS1zYmItcmFkaW8tYnV0dG9uLWRpbWVuc2lvbi1zKTtcbn1cblxuOmhvc3QoW3NpemU9J20nXSkge1xuICAtLXNiYi1yYWRpby1idXR0b24tZm9udC1zaXplOiB2YXIoLS1zYmItdGV4dC1mb250LXNpemUtbSk7XG4gIC0tc2JiLXJhZGlvLWJ1dHRvbi1kaW1lbnNpb246IHZhcigtLXNiYi1yYWRpby1idXR0b24tZGltZW5zaW9uLW0pO1xufVxuXG4uc2JiLXNjcmVlbi1yZWFkZXItb25seSB7XG4gIEBpbmNsdWRlIHNiYi5zY3JlZW4tcmVhZGVyLW9ubHk7XG59XG5cbi5zYmItcmFkaW8tYnV0dG9uIHtcbiAgZm9udC1zaXplOiB2YXIoLS1zYmItcmFkaW8tYnV0dG9uLWZvbnQtc2l6ZSk7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zYmItdHlwby1sZXR0ZXItc3BhY2luZy10ZXh0KTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGN1cnNvcjogdmFyKC0tc2JiLXJhZGlvLWJ1dHRvbi1jdXJzb3IpO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjb2xvcjogdmFyKC0tc2JiLXJhZGlvLWJ1dHRvbi1sYWJlbC1jb2xvcik7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5zYmItcmFkaW8tYnV0dG9uX19sYWJlbC1zbG90IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tc2JiLXJhZGlvLWJ1dHRvbi1mb250LXNpemUpICogdmFyKC0tc2JiLXR5cG8tbGluZS1oZWlnaHQtdGV4dCkpO1xuXG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHdpZHRoOiB2YXIoLS1zYmItcmFkaW8tYnV0dG9uLWRpbWVuc2lvbik7XG4gICAgaGVpZ2h0OiB2YXIoLS1zYmItcmFkaW8tYnV0dG9uLWRpbWVuc2lvbik7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tc2JiLXJhZGlvLWJ1dHRvbi1pY29uLWFsaWduKTtcblxuICAgIHRyYW5zaXRpb246IHtcbiAgICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tNHgpKTtcbiAgICAgIHRpbWluZy1mdW5jdGlvbjogZWFzZTtcbiAgICAgIHByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXI7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG4gIH1cblxuICAvLyBVbmNoZWNrZWQgc3R5bGVcbiAgJjo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zYmItcmFkaW8tYnV0dG9uLWlubmVyLWNpcmNsZS1jb2xvcik7XG5cbiAgICAvLyBUaGUgYm9yZGVyIHdhcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBhbmltYXRpb24gb2YgdGhlIHJhZGlvLWJ1dHRvblxuICAgIC8vIFRoZSBib3JkZXIgY29sb3IgYWN0cyBhcyBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgIGJvcmRlcjogdmFyKC0tc2JiLXJhZGlvLWJ1dHRvbi1iYWNrZ3JvdW5kLWZha2UtYm9yZGVyLXdpZHRoKSBzb2xpZFxuICAgICAgdmFyKC0tc2JiLXJhZGlvLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICBtYXJnaW4taW5saW5lLWVuZDogdmFyKC0tc2JiLXJhZGlvLWJ1dHRvbi1sYWJlbC1nYXApO1xuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3JkZXI6IHZhcigtLXNiYi1yYWRpby1idXR0b24tYm9yZGVyLXdpZHRoKSB2YXIoLS1zYmItcmFkaW8tYnV0dG9uLWJvcmRlci1zdHlsZSlcbiAgICAgIHZhcigtLXNiYi1yYWRpby1idXR0b24tYm9yZGVyLWNvbG9yKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgdW5zYWZlQ1NTLCB0eXBlIFByb3BlcnR5VmFsdWVzIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7XG4gIHR5cGUgQWJzdHJhY3RDb25zdHJ1Y3RvcixcbiAgdHlwZSBDb25zdHJ1Y3RvcixcbiAgU2JiRm9ybUFzc29jaWF0ZWRSYWRpb0J1dHRvbk1peGluLFxufSBmcm9tICcuLi8uLi9jb3JlL21peGlucy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlJhZGlvQnV0dG9uR3JvdXBFbGVtZW50IH0gZnJvbSAnLi4vLi4vcmFkaW8tYnV0dG9uLWdyb3VwLnRzJztcblxuaW1wb3J0IHJhZGlvQnV0dG9uQ29tbW9uU3R5bGVTdHJpbmcgZnJvbSAnLi9yYWRpby1idXR0b24tY29tbW9uLnNjc3M/aW5saW5lJztcblxuZXhwb3J0IGNvbnN0IHJhZGlvQnV0dG9uQ29tbW9uU3R5bGUgPSB1bnNhZmVDU1MocmFkaW9CdXR0b25Db21tb25TdHlsZVN0cmluZyk7XG5cbmV4cG9ydCB0eXBlIFNiYlJhZGlvQnV0dG9uU2l6ZSA9ICd4cycgfCAncycgfCAnbSc7XG5cbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIFNiYlJhZGlvQnV0dG9uQ29tbW9uRWxlbWVudE1peGluVHlwZSBleHRlbmRzIFNiYkZvcm1Bc3NvY2lhdGVkUmFkaW9CdXR0b25NaXhpbihcbiAgU2JiRWxlbWVudCxcbikge1xuICBwdWJsaWMgZ2V0IGFsbG93RW1wdHlTZWxlY3Rpb24oKTogYm9vbGVhbjtcbiAgcHVibGljIHNldCBhbGxvd0VtcHR5U2VsZWN0aW9uKGJvb2xlYW4pO1xuICBwdWJsaWMgZ2V0IGdyb3VwKCk6IFNiYlJhZGlvQnV0dG9uR3JvdXBFbGVtZW50IHwgbnVsbDtcbiAgcHVibGljIHNlbGVjdCgpOiB2b2lkO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiUmFkaW9CdXR0b25Db21tb25FbGVtZW50TWl4aW4gPSA8VCBleHRlbmRzIENvbnN0cnVjdG9yPFNiYkVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiUmFkaW9CdXR0b25Db21tb25FbGVtZW50TWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJSYWRpb0J1dHRvbkNvbW1vbkVsZW1lbnRcbiAgICBleHRlbmRzIFNiYkZvcm1Bc3NvY2lhdGVkUmFkaW9CdXR0b25NaXhpbihzdXBlckNsYXNzKVxuICAgIGltcGxlbWVudHMgUGFydGlhbDxTYmJSYWRpb0J1dHRvbkNvbW1vbkVsZW1lbnRNaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICAgIGNoYW5nZTogJ2NoYW5nZScsXG4gICAgICBpbnB1dDogJ2lucHV0JyxcbiAgICB9IGFzIGNvbnN0O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgcmFkaW8gY2FuIGJlIGRlc2VsZWN0ZWQuXG4gICAgICovXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWxsb3ctZW1wdHktc2VsZWN0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICAgIHB1YmxpYyBzZXQgYWxsb3dFbXB0eVNlbGVjdGlvbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgdGhpcy5fYWxsb3dFbXB0eVNlbGVjdGlvbiA9IEJvb2xlYW4odmFsdWUpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGFsbG93RW1wdHlTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWxsb3dFbXB0eVNlbGVjdGlvbiB8fCAodGhpcy5ncm91cD8uYWxsb3dFbXB0eVNlbGVjdGlvbiA/PyBmYWxzZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2FsbG93RW1wdHlTZWxlY3Rpb24gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byB0aGUgY29ubmVjdGVkIHJhZGlvIGJ1dHRvbiBncm91cC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGdyb3VwKCk6IFNiYlJhZGlvQnV0dG9uR3JvdXBFbGVtZW50IHwgbnVsbCB7XG4gICAgICByZXR1cm4gdGhpcy5fZ3JvdXA7XG4gICAgfVxuICAgIHByaXZhdGUgX2dyb3VwOiBTYmJSYWRpb0J1dHRvbkdyb3VwRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgc3VwZXIoKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdjbGljaycsIChlKSA9PiB0aGlzLl9oYW5kbGVDbGljayhlKSk7XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgICAgdGhpcy5fZ3JvdXAgPSB0aGlzLmNsb3Nlc3QoJ3NiYi1yYWRpby1idXR0b24tZ3JvdXAnKSBhcyBTYmJSYWRpb0J1dHRvbkdyb3VwRWxlbWVudDtcblxuICAgICAgLy8gV2UgbmVlZCB0byBjYWxsIHJlcXVlc3RVcGRhdGUgdG8gdXBkYXRlIHRoZSByZWZsZWN0ZWQgYXR0cmlidXRlc1xuICAgICAgWydkaXNhYmxlZCcsICdyZXF1aXJlZCcsICdzaXplJ10uZm9yRWFjaCgocCkgPT4gdGhpcy5yZXF1ZXN0VXBkYXRlKHApKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHJhZGlvLWJ1dHRvbiBhcyAnY2hlY2tlZCc7IGlmICdhbGxvd0VtcHR5U2VsZWN0aW9uJywgdG9nZ2xlIHRoZSBjaGVja2VkIHByb3BlcnR5LlxuICAgICAqIEluIGJvdGggY2FzZXMgaXQgZW1pdHMgdGhlIGNoYW5nZSBldmVudHMuXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdCgpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuZm9ybURpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYWxsb3dFbXB0eVNlbGVjdGlvbikge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudHMoKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY2hlY2tlZCkge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudHMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd2YWx1ZScpKSB7XG4gICAgICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnybVyYWRpb2J1dHRvbnZhbHVlY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaXNEaXNhYmxlZEV4dGVybmFsbHkoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5ncm91cD8uZGlzYWJsZWQgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzUmVxdWlyZWRFeHRlcm5hbGx5KCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXA/LnJlcXVpcmVkID8/IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2hhbmRsZUNsaWNrKGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2VsZWN0KCk7XG5cbiAgICAgIC8qKlxuICAgICAgICogU2luY2Ugb25seSBhIHNpbmdsZSByYWRpbyBvZiBhIGdyb3VwIGlzIGZvY3VzYWJsZSBhdCBhbnkgdGltZSwgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgb25lIGNsaWNrZWQgZG9lcyBub3QgaGF2ZSAndGFiaW5kZXg9MCcuXG4gICAgICAgKiBUbyBjb3ZlciB0aGF0LCB3ZSBhd2FpdCB0aGUgbmV4dCByZW5kZXIgKHdoaWNoIHdpbGwgbWFrZSB0aGUgJ2NoZWNrZWQnIHJhZGlvIGZvY3VzYWJsZSkgYW5kIGZvY3VzIHRoZSBjbGlja2VkIHJhZGlvXG4gICAgICAgKi9cbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGU7IC8vIFdhaXQgZm9yICd0YWJpbmRleCcgdG8gYmUgdXBkYXRlZFxuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2hhbmRsZUtleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICBpZiAoZXZ0LmNvZGUgPT09ICdTcGFjZScpIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFNiYlJhZGlvQnV0dG9uQ29tbW9uRWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiUmFkaW9CdXR0b25Db21tb25FbGVtZW50TWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUNhQSxJQUFhLHlCQUF5Qix5MkhBQXVDO0FBYzdFLElBQWEsb0NBQ1gsZUFDaUU7QUFtR2pFLGVBbEcwQztvQkFDaEMsa0NBQWtDLFdBQVc7OztlQUR4QyxvQ0FDTCxZQUE2Qzs7OzJDQVdwRCxTQUFTO0tBQUUsV0FBVztLQUF5QixNQUFNO0tBQVMsQ0FBQyxDQUFBO0FBQ2hFLGlCQUFBLE1BQUEsTUFBQSxxQ0FBQTtLQUFBLE1BQUE7S0FBQSxNQUFBO0tBQUEsUUFBQTtLQUFBLFNBQUE7S0FBQSxRQUFBO01BQUEsTUFBQSxRQUFBLHlCQUFBO01BQUEsTUFBQSxLQUFBLFVBQUE7QUFBQSxXQUFXLHNCQUFtQjs7TUFBQTtLQUFBLFVBQUE7S0FBQSxFQUFBLE1BQUEsMkJBQUE7Ozs7Ozs7OztBQVRQLFNBQUEsU0FBUztLQUM5QixRQUFRO0tBQ1IsT0FBTztLQUNDOzs7OztHQU1WLElBQVcsb0JBQW9CLE9BQWM7QUFDM0MsU0FBSyx1QkFBdUIsUUFBUSxNQUFNOztHQUU1QyxJQUFXLHNCQUFtQjtBQUM1QixXQUFPLEtBQUsseUJBQXlCLEtBQUssT0FBTyx1QkFBdUI7Ozs7O0dBTzFFLElBQVcsUUFBSztBQUNkLFdBQU8sS0FBSzs7R0FJZCxjQUFBO0FBQ0UsV0FBTztBQVhELFNBQUEsd0JBbkJLLGtCQUFBLE1BQUEsMkJBQTJCLEVBbUJUO0FBUXZCLFNBQUEsU0FBNEM7QUFJbEQsU0FBSyxtQkFBbUIsVUFBVSxNQUFNLEtBQUssYUFBYSxFQUFFLENBQUM7QUFDN0QsU0FBSyxtQkFBbUIsWUFBWSxNQUFNLEtBQUssZUFBZSxFQUFFLENBQUM7O0dBR25ELG9CQUFpQjtBQUMvQixVQUFNLG1CQUFtQjtBQUN6QixTQUFLLFNBQVMsS0FBSyxRQUFRLHlCQUF1RDtBQUdsRjtLQUFDO0tBQVk7S0FBWTtLQUFPLENBQUMsU0FBUyxNQUFNLEtBQUssY0FBYyxFQUFFLENBQUM7Ozs7OztHQU9qRSxTQUFNO0FBQ1gsUUFBSSxLQUFLLFlBQVksS0FBSyxhQUN4QjtBQUdGLFFBQUksS0FBSyxxQkFBcUI7QUFDNUIsVUFBSyxVQUFVLENBQUMsS0FBSztBQUNyQixVQUFLLGtCQUFrQjtlQUNkLENBQUMsS0FBSyxTQUFTO0FBQ3hCLFVBQUssVUFBVTtBQUNmLFVBQUssa0JBQWtCOzs7R0FJUixXQUFXLG1CQUF1QztBQUNuRSxVQUFNLFdBQVcsa0JBQWtCO0FBRW5DLFFBQUksa0JBQWtCLElBQUksUUFBUTs7QUFFaEMsU0FBSyxjQUFjLElBQUksTUFBTSwyQkFBMkIsRUFBRSxTQUFTLE1BQU0sQ0FBQyxDQUFDOztHQUk1RCx1QkFBb0I7QUFDckMsV0FBTyxLQUFLLE9BQU8sWUFBWTs7R0FHZCx1QkFBb0I7QUFDckMsV0FBTyxLQUFLLE9BQU8sWUFBWTs7R0FHekIsTUFBTSxhQUFhLE9BQVk7QUFDckMsVUFBTSxnQkFBZ0I7QUFDdEIsU0FBSyxRQUFROzs7OztBQU1iLFVBQU0sS0FBSztBQUNYLFNBQUssT0FBTzs7R0FHTixlQUFlLEtBQWtCO0FBQ3ZDLFFBQUksSUFBSSxTQUFTLFNBQVM7QUFDeEIsU0FBSSxnQkFBZ0I7QUFDcEIsVUFBSyxRQUFRIn0=
|