@sbb-esta/lyne-elements-dev 4.7.0-dev.1773737285 → 4.7.0-dev.1773743095

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.
Files changed (116) hide show
  1. package/calendar/calendar/calendar.component.js +1 -1
  2. package/calendar/calendar-day/calendar-day.component.js +1 -1
  3. package/calendar/calendar-day.js +1 -1
  4. package/calendar/calendar-month/calendar-month.component.js +84 -0
  5. package/calendar/calendar-month.js +4 -0
  6. package/calendar/calendar-weekday/calendar-weekday.component.js +54 -0
  7. package/calendar/calendar-weekday.js +4 -0
  8. package/calendar/calendar-weeknumber/calendar-weeknumber.component.js +56 -0
  9. package/calendar/calendar-weeknumber.js +4 -0
  10. package/calendar/calendar-year/calendar-year.component.js +80 -0
  11. package/calendar/calendar-year.js +4 -0
  12. package/calendar/calendar.js +1 -1
  13. package/calendar/common/calendar-cell-base-element.js +23 -0
  14. package/calendar/common.js +6 -0
  15. package/calendar-day.component-Iewo-vBR.js +109 -0
  16. package/{calendar.component-BgZDy-rX.js → calendar.component-Cz-OGQu6.js} +140 -224
  17. package/calendar.js +8 -4
  18. package/calendar.pure.js +7 -3
  19. package/carousel/carousel/carousel.component.js +1 -1
  20. package/carousel/carousel.js +1 -1
  21. package/carousel.js +1 -1
  22. package/carousel.pure.js +1 -1
  23. package/core/styles/core.scss +8 -0
  24. package/core.css +40 -0
  25. package/custom-elements.json +4304 -406
  26. package/development/calendar/calendar/calendar.component.d.ts +7 -9
  27. package/development/calendar/calendar/calendar.component.d.ts.map +1 -1
  28. package/development/calendar/calendar/calendar.component.js +1 -1
  29. package/development/calendar/calendar-day/calendar-day.component.d.ts +7 -21
  30. package/development/calendar/calendar-day/calendar-day.component.d.ts.map +1 -1
  31. package/development/calendar/calendar-day/calendar-day.component.js +1 -1
  32. package/development/calendar/calendar-day.js +1 -1
  33. package/development/calendar/calendar-month/calendar-month.component.d.ts +33 -0
  34. package/development/calendar/calendar-month/calendar-month.component.d.ts.map +1 -0
  35. package/development/calendar/calendar-month/calendar-month.component.js +112 -0
  36. package/development/calendar/calendar-month.d.ts +2 -0
  37. package/development/calendar/calendar-month.d.ts.map +1 -0
  38. package/development/calendar/calendar-month.js +10 -0
  39. package/development/calendar/calendar-weekday/calendar-weekday.component.d.ts +23 -0
  40. package/development/calendar/calendar-weekday/calendar-weekday.component.d.ts.map +1 -0
  41. package/development/calendar/calendar-weekday/calendar-weekday.component.js +67 -0
  42. package/development/calendar/calendar-weekday.d.ts +2 -0
  43. package/development/calendar/calendar-weekday.d.ts.map +1 -0
  44. package/development/calendar/calendar-weekday.js +10 -0
  45. package/development/calendar/calendar-weeknumber/calendar-weeknumber.component.d.ts +23 -0
  46. package/development/calendar/calendar-weeknumber/calendar-weeknumber.component.d.ts.map +1 -0
  47. package/development/calendar/calendar-weeknumber/calendar-weeknumber.component.js +70 -0
  48. package/development/calendar/calendar-weeknumber.d.ts +2 -0
  49. package/development/calendar/calendar-weeknumber.d.ts.map +1 -0
  50. package/development/calendar/calendar-weeknumber.js +10 -0
  51. package/development/calendar/calendar-year/calendar-year.component.d.ts +28 -0
  52. package/development/calendar/calendar-year/calendar-year.component.d.ts.map +1 -0
  53. package/development/calendar/calendar-year/calendar-year.component.js +103 -0
  54. package/development/calendar/calendar-year.d.ts +2 -0
  55. package/development/calendar/calendar-year.d.ts.map +1 -0
  56. package/development/calendar/calendar-year.js +10 -0
  57. package/development/calendar/calendar.js +1 -1
  58. package/development/calendar/common/calendar-cell-base-element.d.ts +24 -0
  59. package/development/calendar/common/calendar-cell-base-element.d.ts.map +1 -0
  60. package/development/calendar/common/calendar-cell-base-element.js +35 -0
  61. package/development/calendar/common.d.ts +3 -0
  62. package/development/calendar/common.d.ts.map +1 -0
  63. package/development/calendar/common.js +120 -0
  64. package/development/calendar-day.component-Brz0Wyai.js +178 -0
  65. package/development/calendar.component-0Pl7qEXL.js +2222 -0
  66. package/development/calendar.d.ts.map +1 -1
  67. package/development/calendar.js +12 -4
  68. package/development/calendar.pure.d.ts +4 -0
  69. package/development/calendar.pure.d.ts.map +1 -1
  70. package/development/calendar.pure.js +7 -3
  71. package/development/carousel/carousel/carousel.component.js +1 -1
  72. package/development/carousel/carousel.js +1 -1
  73. package/development/{carousel.component-b4C-hxkj.js → carousel.component-Cs0gWroH.js} +2 -2
  74. package/development/carousel.js +1 -1
  75. package/development/carousel.pure.js +1 -1
  76. package/development/mini-calendar/mini-calendar/mini-calendar.component.js +1 -1
  77. package/development/mini-calendar/mini-calendar-day/mini-calendar-day.component.js +1 -1
  78. package/development/mini-calendar/mini-calendar-day.js +1 -1
  79. package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +1 -1
  80. package/development/mini-calendar/mini-calendar-month.js +1 -1
  81. package/development/mini-calendar/mini-calendar.js +1 -1
  82. package/development/{mini-calendar-day.component-DLP7Pa6R.js → mini-calendar-day.component-DdjlUG0k.js} +2 -2
  83. package/development/{mini-calendar-month.component-C1jsGlJ2.js → mini-calendar-month.component-BjxmoYz6.js} +2 -2
  84. package/development/{mini-calendar.component-BzqjMchx.js → mini-calendar.component-B38J84Gg.js} +2 -2
  85. package/development/mini-calendar.js +3 -3
  86. package/development/mini-calendar.pure.js +3 -3
  87. package/development/popover/popover.component.d.ts.map +1 -1
  88. package/development/popover/popover.component.js +1 -1
  89. package/development/{popover.component-BpYi6btR.js → popover.component-BujfGgbD.js} +5 -4
  90. package/development/popover.js +1 -1
  91. package/development/popover.pure.js +1 -1
  92. package/index.d.ts +5 -1
  93. package/index.js +5 -1
  94. package/mini-calendar/mini-calendar/mini-calendar.component.js +1 -1
  95. package/mini-calendar/mini-calendar-day/mini-calendar-day.component.js +1 -1
  96. package/mini-calendar/mini-calendar-day.js +1 -1
  97. package/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +1 -1
  98. package/mini-calendar/mini-calendar-month.js +1 -1
  99. package/mini-calendar/mini-calendar.js +1 -1
  100. package/{mini-calendar.component-DpPMb47Y.js → mini-calendar.component-_YJbFi4P.js} +4 -4
  101. package/mini-calendar.js +3 -3
  102. package/mini-calendar.pure.js +3 -3
  103. package/off-brand-theme.css +40 -0
  104. package/package.json +27 -2
  105. package/popover/popover.component.js +1 -1
  106. package/{popover.component-D_nJwaqJ.js → popover.component-CktV5oiV.js} +3 -2
  107. package/popover.js +1 -1
  108. package/popover.pure.js +1 -1
  109. package/safety-theme.css +40 -0
  110. package/standard-theme.css +40 -0
  111. package/calendar-day.component-DqAXvoP3.js +0 -113
  112. package/development/calendar-day.component-De9Xn3-q.js +0 -283
  113. package/development/calendar.component-PHpgLc0z.js +0 -2458
  114. package/{carousel.component-Bd0iGUbf.js → carousel.component-BA0V2JHI.js} +1 -1
  115. package/{mini-calendar-day.component-cAawa9Gr.js → mini-calendar-day.component-D5HlCTH0.js} +1 -1
  116. package/{mini-calendar-month.component-DiYSVb-Y.js → mini-calendar-month.component-CGAOxDtz.js} +1 -1
@@ -1418,6 +1418,46 @@ summary {
1418
1418
  --sbb-mini-button-group-padding-inline: var(--sbb-spacing-fixed-3x);
1419
1419
  --sbb-mini-button-group-divider-height: var(--sbb-size-icon-ui-small);
1420
1420
  --sbb-mini-button-group-divider-padding: var(--sbb-spacing-fixed-1x);
1421
+ --sbb-calendar-cell-background-color: transparent;
1422
+ --sbb-calendar-cell-background-color-hover: var(--sbb-background-color-3);
1423
+ --sbb-calendar-cell-background-color-active: var(--sbb-background-color-4);
1424
+ --sbb-calendar-cell-padding: 0.125rem;
1425
+ --sbb-calendar-cell-border-width: var(--sbb-border-width-2x);
1426
+ --sbb-calendar-cell-disabled-height: 0.09375rem;
1427
+ --sbb-calendar-cell-disabled-width: 1.59375rem;
1428
+ --sbb-calendar-cell-disabled-color: var(--sbb-color-granite);
1429
+ --sbb-calendar-cell-disabled-color: light-dark(var(--sbb-color-granite), var(--sbb-color-smoke));
1430
+ --sbb-calendar-cell-transition-easing-function: var(--sbb-animation-easing);
1431
+ --sbb-calendar-control-gap: var(--sbb-spacing-fixed-2x);
1432
+ --sbb-calendar-control-margin-block-end: var(--sbb-spacing-fixed-4x);
1433
+ --sbb-calendar-control-view-change-height: 2.75rem;
1434
+ --sbb-calendar-control-view-change-color: var(--sbb-color-3);
1435
+ --sbb-calendar-control-view-change-background: var(--sbb-background-color-1);
1436
+ --sbb-calendar-control-view-change-padding-inline: var(--sbb-spacing-fixed-5x)
1437
+ var(--sbb-spacing-fixed-2x);
1438
+ --sbb-calendar-header-color: var(--sbb-color-granite);
1439
+ --sbb-calendar-header-color: light-dark(var(--sbb-color-granite), var(--sbb-color-smoke));
1440
+ --sbb-calendar-table-animation-shift: 0.00625rem;
1441
+ --sbb-calendar-table-column-spaces: 12;
1442
+ --sbb-calendar-tables-gap: var(--sbb-spacing-fixed-10x);
1443
+ --sbb-calendar-table-animation-duration: 0.1ms;
1444
+ --sbb-calendar-cell-border: var(--sbb-calendar-cell-border-width) solid
1445
+ var(--sbb-border-color-1-inverted);
1446
+ --sbb-calendar-cell-color: var(--sbb-color-2);
1447
+ --sbb-calendar-cell-cursor: var(--sbb-cursor-pointer);
1448
+ --sbb-calendar-cell-justify-content: normal;
1449
+ --sbb-calendar-cell-inset: 0.0625rem;
1450
+ --sbb-calendar-cell-font-size: var(--sbb-text-font-size-s);
1451
+ --sbb-calendar-cell-font-weight: unset;
1452
+ --sbb-calendar-cell-transition-easing-function: var(--sbb-animation-easing);
1453
+ --sbb-calendar-cell-year-month-width: 4.8125rem;
1454
+ --sbb-calendar-cell-year-month-height: 2.75rem;
1455
+ --sbb-calendar-day-width: 2.75rem;
1456
+ --sbb-calendar-day-height: 3rem;
1457
+ --sbb-calendar-day-extra-display: block;
1458
+ --sbb-calendar-day-extra-height: var(--sbb-spacing-fixed-4x);
1459
+ --sbb-calendar-day-crossed-out-top: 33%;
1460
+ --sbb-calendar-day-crossed-out-translate: translate(-50%, -33%) rotate(-45deg);
1421
1461
  --sbb-card-background-color: var(--sbb-background-color-1);
1422
1462
  --sbb-card-border-color: transparent;
1423
1463
  --sbb-card-border-radius: var(--sbb-border-radius-4x);
@@ -1,113 +0,0 @@
1
- import { __esDecorate as e, __runInitializers as t } from "tslib";
2
- import { css as n, html as r } from "lit";
3
- import { property as i, state as a } from "lit/decorators.js";
4
- import { SbbButtonLikeBaseElement as o } from "./core/base-elements.js";
5
- import { SbbDisabledMixin as s } from "./core/mixins.js";
6
- import { boxSizingStyles as c } from "./core/styles.js";
7
- import { SbbPropertyWatcherController as l } from "./core/controllers.js";
8
- import { readConfig as u } from "./core/config/config.js";
9
- import { defaultDateAdapter as d } from "./core/datetime/native-date-adapter.js";
10
- //#region src/elements/calendar/calendar-day/calendar-day.scss?lit&inline
11
- var f = n`:host{--sbb-calendar-day-width:2.75rem;--sbb-calendar-day-height:3rem;--sbb-calendar-day-cell-background-color:var(--sbb-calendar-cell-background-color);--sbb-calendar-day-selected-border:none;--sbb-calendar-day-transition-duration:var(--sbb-disable-animation-duration,var(--sbb-animation-duration-2x));--sbb-calendar-day-transition-easing-function:var(--sbb-animation-easing);--sbb-calendar-day-cursor:var(--sbb-cursor-pointer);--sbb-calendar-day-border-radius:var(--sbb-border-radius-4x);--sbb-calendar-day-flex-direction:column;--sbb-calendar-day-justify-content:initial;--sbb-calendar-day-align-items:initial;--sbb-calendar-day-value-height:var(--sbb-spacing-fixed-6x);--sbb-calendar-day-extra-display:block;--sbb-calendar-day-extra-height:var(--sbb-spacing-fixed-4x);--sbb-calendar-day-crossed-out-top:33%;--sbb-calendar-day-crossed-out-translate:translate(-50%, -33%) rotate(-45deg);display:block}:host(:is(:state(selected),[state--selected])){--sbb-calendar-day-selected-border:var(--sbb-border-width-2x) solid var(--sbb-border-color-2)}:host(:disabled){--sbb-calendar-cell-color:var(--sbb-calendar-cell-disabled-color);--sbb-calendar-day-cursor:unset}:host(:focus-visible){outline:0}:host(:not(:disabled):active){--sbb-calendar-day-cell-background-color:var(--sbb-calendar-cell-background-color-active)}.sbb-calendar-day{--sbb-text-font-size:var(--sbb-text-font-size-s);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-text);letter-spacing:var(--sbb-typo-letter-spacing-text);font-size:var(--sbb-text-font-size);flex-direction:var(--sbb-calendar-day-flex-direction);justify-content:var(--sbb-calendar-day-justify-content);align-items:var(--sbb-calendar-day-align-items);height:var(--sbb-calendar-day-height);width:var(--sbb-calendar-day-width);padding:var(--sbb-calendar-cell-padding);color:var(--sbb-calendar-cell-color);cursor:var(--sbb-calendar-day-cursor);z-index:0;margin:auto;padding-block-end:var(--sbb-calendar-day-cell-padding-hover,var(--sbb-calendar-cell-padding));display:flex;position:relative}.sbb-calendar-day:before{content:"";background-color:var(--sbb-calendar-day-cell-background-color);border:var(--sbb-calendar-day-selected-border);border-radius:var(--sbb-calendar-day-border-radius);z-index:-1;transition-duration:var(--sbb-calendar-day-transition-duration);transition-timing-function:var(--sbb-calendar-day-transition-easing-function);transition-property:background-color;position:absolute;inset:0}:host(:focus-visible) .sbb-calendar-day:before{outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) var(--sbb-focus-outline-style,solid) var(--sbb-focus-outline-width)}@media (forced-colors:active){:host(:not(:disabled):active) .sbb-calendar-day:before{outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) var(--sbb-focus-outline-style,solid) var(--sbb-focus-outline-width);--sbb-focus-outline-style:initial}}@media (any-hover:hover){:host(:not(:active,:disabled):hover) .sbb-calendar-day{--sbb-calendar-day-cell-background-color:var(--sbb-calendar-cell-background-color-hover);--sbb-calendar-day-cell-padding-hover:calc(.0625rem + var(--sbb-calendar-cell-padding))}}@media (any-hover:hover) and (forced-colors:active){:host(:not(:active,:disabled):hover) .sbb-calendar-day:before{outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) var(--sbb-focus-outline-style,solid) var(--sbb-focus-outline-width);--sbb-focus-outline-style:initial}}.sbb-calendar-day__value{height:var(--sbb-calendar-day-value-height)}:host(:is(:state(current),[state--current])) .sbb-calendar-day__value{font-weight:700}:host(:is(:state(crossed-out),[state--crossed-out])) .sbb-calendar-day__value:after{content:"";height:var(--sbb-calendar-cell-disabled-height);width:var(--sbb-calendar-cell-disabled-width);background-color:var(--sbb-calendar-cell-disabled-color);transform:var(--sbb-calendar-day-crossed-out-translate);position:absolute;inset-block-start:var(--sbb-calendar-day-crossed-out-top);inset-inline-start:50%}.sbb-calendar-day__extra{display:var(--sbb-calendar-day-extra-display);height:var(--sbb-calendar-day-extra-height);padding:var(--sbb-calendar-cell-padding)}::slotted(*){height:1rem}`, p = (() => {
12
- let n = s(o), p = [], m, h;
13
- return class extends n {
14
- static {
15
- let t = typeof Symbol == "function" && Symbol.metadata ? Object.create(n[Symbol.metadata] ?? null) : void 0;
16
- m = [i()], h = [a()], e(this, null, m, {
17
- kind: "setter",
18
- name: "slot",
19
- static: !1,
20
- private: !1,
21
- access: {
22
- has: (e) => "slot" in e,
23
- set: (e, t) => {
24
- e.slot = t;
25
- }
26
- },
27
- metadata: t
28
- }, null, p), e(this, null, h, {
29
- kind: "setter",
30
- name: "value",
31
- static: !1,
32
- private: !1,
33
- access: {
34
- has: (e) => "value" in e,
35
- set: (e, t) => {
36
- e.value = t;
37
- }
38
- },
39
- metadata: t
40
- }, null, p), t && Object.defineProperty(this, Symbol.metadata, {
41
- enumerable: !0,
42
- configurable: !0,
43
- writable: !0,
44
- value: t
45
- });
46
- }
47
- static {
48
- this.elementName = "sbb-calendar-day";
49
- }
50
- static {
51
- this.styles = [c, f];
52
- }
53
- set slot(e) {
54
- super.slot = e, this.value = this.dateAdapter.deserialize(e);
55
- }
56
- get slot() {
57
- return super.slot;
58
- }
59
- set value(e) {
60
- let t = this.dateAdapter.getValidDateOrNull(this.dateAdapter.deserialize(e));
61
- if (t) {
62
- this._value = t;
63
- let e = this.dateAdapter.sameDate(t, this.dateAdapter.today());
64
- this.toggleState("current", e), this.internals.ariaCurrent = e ? "date" : null, this.internals.ariaLabel = this.dateAdapter.getAccessibilityFormatDate(t);
65
- let n = this._getParent();
66
- n && (this._setDisabledFilteredState(n), this._setSelectedState(n));
67
- }
68
- }
69
- get value() {
70
- return this._value;
71
- }
72
- constructor() {
73
- super(), this.dateAdapter = (t(this, p), u().datetime?.dateAdapter ?? d), this._value = null, this.addController(new l(this, () => this._getParent(), {
74
- dateFilter: (e) => this._setDisabledFilteredState(e),
75
- min: (e) => this._setDisabledFilteredState(e),
76
- max: (e) => this._setDisabledFilteredState(e),
77
- selected: (e) => this._setSelectedState(e)
78
- }));
79
- }
80
- formResetCallback() {}
81
- formStateRestoreCallback(e, t) {}
82
- connectedCallback() {
83
- super.connectedCallback(), this.tabIndex = -1;
84
- }
85
- _getParent() {
86
- return this.closest?.("sbb-calendar") ?? this.getRootNode?.()?.host?.closest("sbb-calendar");
87
- }
88
- _setSelectedState(e) {
89
- let t = e.multiple ? e.selected.some((e) => this.dateAdapter.sameDate(this.value, e)) : !!e.selected && this.dateAdapter.compareDate(this.value, e.selected) === 0;
90
- this.toggleState("selected", t), this.internals.ariaPressed = String(t);
91
- }
92
- _setDisabledFilteredState(e) {
93
- let t = !this._isActiveDate(e.dateFilter), n = !this._isDayInRange(e.min, e.max);
94
- this.disabled = t || n, this.internals.ariaDisabled = String(this.disabled), this.toggleState("crossed-out", t && !n);
95
- }
96
- _isActiveDate(e) {
97
- return e?.(this.value) ?? !0;
98
- }
99
- _isDayInRange(e, t) {
100
- return !e && !t ? !0 : this.dateAdapter.sameDate(this.value, this.dateAdapter.clampDate(this.value, e, t));
101
- }
102
- renderTemplate() {
103
- return r` <span class="sbb-calendar-day__value" aria-hidden="true">
104
- ${this.dateAdapter.getDate(this.value)}
105
- </span>
106
- <span class="sbb-calendar-day__extra">
107
- <slot></slot>
108
- </span>`;
109
- }
110
- };
111
- })();
112
- //#endregion
113
- export { p as t };
@@ -1,283 +0,0 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
2
- import { css, html } from "lit";
3
- import { property, state } from "lit/decorators.js";
4
- import { SbbButtonLikeBaseElement } from "./core/base-elements.js";
5
- import { SbbDisabledMixin } from "./core/mixins.js";
6
- import { boxSizingStyles } from "./core/styles.js";
7
- import { SbbPropertyWatcherController } from "./core/controllers.js";
8
- import { readConfig } from "./core/config/config.js";
9
- import { defaultDateAdapter } from "./core/datetime/native-date-adapter.js";
10
- //#region src/elements/calendar/calendar-day/calendar-day.scss?lit&inline
11
- var calendar_day_default = css`:host {
12
- display: block;
13
- --sbb-calendar-day-width: 2.75rem;
14
- --sbb-calendar-day-height: 3rem;
15
- --sbb-calendar-day-cell-background-color: var(--sbb-calendar-cell-background-color);
16
- --sbb-calendar-day-selected-border: none;
17
- --sbb-calendar-day-transition-duration: var(
18
- --sbb-disable-animation-duration,
19
- var(--sbb-animation-duration-2x)
20
- );
21
- --sbb-calendar-day-transition-easing-function: var(--sbb-animation-easing);
22
- --sbb-calendar-day-cursor: var(--sbb-cursor-pointer);
23
- --sbb-calendar-day-border-radius: var(--sbb-border-radius-4x);
24
- --sbb-calendar-day-flex-direction: column;
25
- --sbb-calendar-day-justify-content: initial;
26
- --sbb-calendar-day-align-items: initial;
27
- --sbb-calendar-day-value-height: var(--sbb-spacing-fixed-6x);
28
- --sbb-calendar-day-extra-display: block;
29
- --sbb-calendar-day-extra-height: var(--sbb-spacing-fixed-4x);
30
- --sbb-calendar-day-crossed-out-top: 33%;
31
- --sbb-calendar-day-crossed-out-translate: translate(-50%, -33%) rotate(-45deg);
32
- }
33
-
34
- :host(:is(:state(selected),[state--selected])) {
35
- --sbb-calendar-day-selected-border: var(--sbb-border-width-2x) solid var(--sbb-border-color-2);
36
- }
37
-
38
- :host(:disabled) {
39
- --sbb-calendar-cell-color: var(--sbb-calendar-cell-disabled-color);
40
- --sbb-calendar-day-cursor: unset;
41
- }
42
-
43
- :host(:focus-visible) {
44
- outline: 0;
45
- }
46
-
47
- :host(:not(:disabled):active) {
48
- --sbb-calendar-day-cell-background-color: var(--sbb-calendar-cell-background-color-active);
49
- }
50
-
51
- .sbb-calendar-day {
52
- --sbb-text-font-size: var(--sbb-text-font-size-s);
53
- font-family: var(--sbb-typo-font-family);
54
- font-weight: normal;
55
- line-height: var(--sbb-typo-line-height-text);
56
- letter-spacing: var(--sbb-typo-letter-spacing-text);
57
- font-size: var(--sbb-text-font-size);
58
- display: flex;
59
- flex-direction: var(--sbb-calendar-day-flex-direction);
60
- justify-content: var(--sbb-calendar-day-justify-content);
61
- align-items: var(--sbb-calendar-day-align-items);
62
- height: var(--sbb-calendar-day-height);
63
- width: var(--sbb-calendar-day-width);
64
- padding: var(--sbb-calendar-cell-padding);
65
- padding-block-end: var(--sbb-calendar-day-cell-padding-hover, var(--sbb-calendar-cell-padding));
66
- margin: auto;
67
- color: var(--sbb-calendar-cell-color);
68
- cursor: var(--sbb-calendar-day-cursor);
69
- position: relative;
70
- z-index: 0;
71
- }
72
- .sbb-calendar-day::before {
73
- content: "";
74
- position: absolute;
75
- inset: 0;
76
- background-color: var(--sbb-calendar-day-cell-background-color);
77
- border: var(--sbb-calendar-day-selected-border);
78
- border-radius: var(--sbb-calendar-day-border-radius);
79
- z-index: -1;
80
- transition-duration: var(--sbb-calendar-day-transition-duration);
81
- transition-timing-function: var(--sbb-calendar-day-transition-easing-function);
82
- transition-property: background-color;
83
- }
84
- :host(:focus-visible) .sbb-calendar-day::before {
85
- outline-offset: var(--sbb-focus-outline-offset);
86
- outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
87
- }
88
- @media (forced-colors: active) {
89
- :host(:not(:disabled):active) .sbb-calendar-day::before {
90
- outline-offset: var(--sbb-focus-outline-offset);
91
- outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
92
- --sbb-focus-outline-style: initial;
93
- }
94
- }
95
- @media (any-hover: hover) {
96
- :host(:not(:active, :disabled):hover) .sbb-calendar-day {
97
- --sbb-calendar-day-cell-background-color: var(--sbb-calendar-cell-background-color-hover);
98
- --sbb-calendar-day-cell-padding-hover: calc(
99
- 0.0625rem + var(--sbb-calendar-cell-padding)
100
- );
101
- }
102
- }
103
- @media (any-hover: hover) and (forced-colors: active) {
104
- :host(:not(:active, :disabled):hover) .sbb-calendar-day::before {
105
- outline-offset: var(--sbb-focus-outline-offset);
106
- outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
107
- --sbb-focus-outline-style: initial;
108
- }
109
- }
110
-
111
- .sbb-calendar-day__value {
112
- height: var(--sbb-calendar-day-value-height);
113
- }
114
- :host(:is(:state(current),[state--current])) .sbb-calendar-day__value {
115
- font-weight: bold;
116
- }
117
- :host(:is(:state(crossed-out),[state--crossed-out])) .sbb-calendar-day__value::after {
118
- content: "";
119
- height: var(--sbb-calendar-cell-disabled-height);
120
- width: var(--sbb-calendar-cell-disabled-width);
121
- position: absolute;
122
- background-color: var(--sbb-calendar-cell-disabled-color);
123
- inset-block-start: var(--sbb-calendar-day-crossed-out-top);
124
- inset-inline-start: 50%;
125
- transform: var(--sbb-calendar-day-crossed-out-translate);
126
- }
127
-
128
- .sbb-calendar-day__extra {
129
- display: var(--sbb-calendar-day-extra-display);
130
- height: var(--sbb-calendar-day-extra-height);
131
- padding: var(--sbb-calendar-cell-padding);
132
- }
133
-
134
- ::slotted(*) {
135
- height: 1rem;
136
- }`;
137
- //#endregion
138
- //#region src/elements/calendar/calendar-day/calendar-day.component.ts
139
- /**
140
- * It displays a single day cell in the `sbb-calendar` component.
141
- *
142
- * @slot - Use the unnamed slot to add some custom content to the day.
143
- */
144
- var SbbCalendarDayElement = (() => {
145
- let _classSuper = SbbDisabledMixin(SbbButtonLikeBaseElement);
146
- let _instanceExtraInitializers = [];
147
- let _set_slot_decorators;
148
- let _set_value_decorators;
149
- return class SbbCalendarDayElement extends _classSuper {
150
- static {
151
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
152
- _set_slot_decorators = [property()];
153
- _set_value_decorators = [state()];
154
- __esDecorate(this, null, _set_slot_decorators, {
155
- kind: "setter",
156
- name: "slot",
157
- static: false,
158
- private: false,
159
- access: {
160
- has: (obj) => "slot" in obj,
161
- set: (obj, value) => {
162
- obj.slot = value;
163
- }
164
- },
165
- metadata: _metadata
166
- }, null, _instanceExtraInitializers);
167
- __esDecorate(this, null, _set_value_decorators, {
168
- kind: "setter",
169
- name: "value",
170
- static: false,
171
- private: false,
172
- access: {
173
- has: (obj) => "value" in obj,
174
- set: (obj, value) => {
175
- obj.value = value;
176
- }
177
- },
178
- metadata: _metadata
179
- }, null, _instanceExtraInitializers);
180
- if (_metadata) Object.defineProperty(this, Symbol.metadata, {
181
- enumerable: true,
182
- configurable: true,
183
- writable: true,
184
- value: _metadata
185
- });
186
- }
187
- static {
188
- this.elementName = "sbb-calendar-day";
189
- }
190
- static {
191
- this.styles = [boxSizingStyles, calendar_day_default];
192
- }
193
- set slot(value) {
194
- super.slot = value;
195
- this.value = this.dateAdapter.deserialize(value);
196
- }
197
- get slot() {
198
- return super.slot;
199
- }
200
- /** Value of the calendar-day element. */
201
- set value(value) {
202
- const date = this.dateAdapter.getValidDateOrNull(this.dateAdapter.deserialize(value));
203
- if (date) {
204
- this._value = date;
205
- const isToday = this.dateAdapter.sameDate(date, this.dateAdapter.today());
206
- this.toggleState("current", isToday);
207
- this.internals.ariaCurrent = isToday ? "date" : null;
208
- this.internals.ariaLabel = this.dateAdapter.getAccessibilityFormatDate(date);
209
- const parent = this._getParent();
210
- if (parent) {
211
- this._setDisabledFilteredState(parent);
212
- this._setSelectedState(parent);
213
- }
214
- }
215
- }
216
- get value() {
217
- return this._value;
218
- }
219
- constructor() {
220
- super();
221
- this.dateAdapter = (__runInitializers(this, _instanceExtraInitializers), readConfig().datetime?.dateAdapter ?? defaultDateAdapter);
222
- this._value = null;
223
- this.addController(new SbbPropertyWatcherController(this, () => this._getParent(), {
224
- dateFilter: (component) => this._setDisabledFilteredState(component),
225
- min: (component) => this._setDisabledFilteredState(component),
226
- max: (component) => this._setDisabledFilteredState(component),
227
- selected: (component) => this._setSelectedState(component)
228
- }));
229
- }
230
- /**
231
- * Intentionally empty, as buttons are not targeted by form reset.
232
- * @internal
233
- */
234
- formResetCallback() {}
235
- /**
236
- * Intentionally empty, as buttons are not targeted by form restore.
237
- * @internal
238
- */
239
- formStateRestoreCallback(_state, _reason) {}
240
- connectedCallback() {
241
- super.connectedCallback();
242
- this.tabIndex = -1;
243
- }
244
- /**
245
- * The component is used as the default day cell within the `sbb-calendar`,
246
- * or, if extra content is needed, it can be slotted.
247
- */
248
- _getParent() {
249
- return this.closest?.("sbb-calendar") ?? this.getRootNode?.()?.host?.closest("sbb-calendar");
250
- }
251
- _setSelectedState(component) {
252
- const selected = component.multiple ? component.selected.some((selDay) => this.dateAdapter.sameDate(this.value, selDay)) : !!component.selected && this.dateAdapter.compareDate(this.value, component.selected) === 0;
253
- this.toggleState("selected", selected);
254
- this.internals.ariaPressed = String(selected);
255
- }
256
- _setDisabledFilteredState(component) {
257
- const isFilteredOut = !this._isActiveDate(component.dateFilter);
258
- const isOutOfRange = !this._isDayInRange(component.min, component.max);
259
- this.disabled = isFilteredOut || isOutOfRange;
260
- this.internals.ariaDisabled = String(this.disabled);
261
- this.toggleState("crossed-out", isFilteredOut && !isOutOfRange);
262
- }
263
- _isActiveDate(dateFilter) {
264
- return dateFilter?.(this.value) ?? true;
265
- }
266
- _isDayInRange(min, max) {
267
- if (!min && !max) return true;
268
- return this.dateAdapter.sameDate(this.value, this.dateAdapter.clampDate(this.value, min, max));
269
- }
270
- renderTemplate() {
271
- return html` <span class="sbb-calendar-day__value" aria-hidden="true">
272
- ${this.dateAdapter.getDate(this.value)}
273
- </span>
274
- <span class="sbb-calendar-day__extra">
275
- <slot></slot>
276
- </span>`;
277
- }
278
- };
279
- })();
280
- //#endregion
281
- export { SbbCalendarDayElement as t };
282
-
283
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZGF5LmNvbXBvbmVudC1EZTlYbjMtcS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2FsZW5kYXIvY2FsZW5kYXItZGF5L2NhbGVuZGFyLWRheS5zY3NzP2xpdCZpbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2FsZW5kYXIvY2FsZW5kYXItZGF5L2NhbGVuZGFyLWRheS5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vY29yZS9zdHlsZXMvaW5kZXgnIGFzIHNiYjtcblxuOmhvc3Qge1xuICBkaXNwbGF5OiBibG9jaztcblxuICAtLXNiYi1jYWxlbmRhci1kYXktd2lkdGg6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCg0NCl9O1xuICAtLXNiYi1jYWxlbmRhci1kYXktaGVpZ2h0OiAje3NiYi5weC10by1yZW0tYnVpbGQoNDgpfTtcbiAgLS1zYmItY2FsZW5kYXItZGF5LWNlbGwtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtYmFja2dyb3VuZC1jb2xvcik7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1zZWxlY3RlZC1ib3JkZXI6IG5vbmU7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoXG4gICAgLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sXG4gICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi0yeClcbiAgKTtcbiAgLS1zYmItY2FsZW5kYXItZGF5LXRyYW5zaXRpb24tZWFzaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1jdXJzb3I6IHZhcigtLXNiYi1jdXJzb3ItcG9pbnRlcik7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1ib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItYm9yZGVyLXJhZGl1cy00eCk7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAtLXNiYi1jYWxlbmRhci1kYXktanVzdGlmeS1jb250ZW50OiBpbml0aWFsO1xuICAtLXNiYi1jYWxlbmRhci1kYXktYWxpZ24taXRlbXM6IGluaXRpYWw7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS12YWx1ZS1oZWlnaHQ6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTZ4KTtcbiAgLS1zYmItY2FsZW5kYXItZGF5LWV4dHJhLWRpc3BsYXk6IGJsb2NrO1xuICAtLXNiYi1jYWxlbmRhci1kYXktZXh0cmEtaGVpZ2h0OiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC00eCk7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1jcm9zc2VkLW91dC10b3A6IDMzJTtcbiAgLS1zYmItY2FsZW5kYXItZGF5LWNyb3NzZWQtb3V0LXRyYW5zbGF0ZTogdHJhbnNsYXRlKC01MCUsIC0zMyUpIHJvdGF0ZSgtNDVkZWcpO1xufVxuXG46aG9zdCg6c3RhdGUoc2VsZWN0ZWQpKSB7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1zZWxlY3RlZC1ib3JkZXI6IHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMngpIHNvbGlkIHZhcigtLXNiYi1ib3JkZXItY29sb3ItMik7XG59XG5cbjpob3N0KDpkaXNhYmxlZCkge1xuICAtLXNiYi1jYWxlbmRhci1jZWxsLWNvbG9yOiB2YXIoLS1zYmItY2FsZW5kYXItY2VsbC1kaXNhYmxlZC1jb2xvcik7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1jdXJzb3I6IHVuc2V0O1xufVxuXG46aG9zdCg6Zm9jdXMtdmlzaWJsZSkge1xuICBvdXRsaW5lOiAwO1xufVxuXG46aG9zdCg6bm90KDpkaXNhYmxlZCk6YWN0aXZlKSB7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1jZWxsLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1jYWxlbmRhci1jZWxsLWJhY2tncm91bmQtY29sb3ItYWN0aXZlKTtcbn1cblxuLy8gRklYTUU6IGNoZWNrIHdoZXRoZXIgaXMgcG9zc2libGUgdG8gYXZvaWQgdXNpbmcgei1pbmRleCBydWxlc1xuLnNiYi1jYWxlbmRhci1kYXkge1xuICBAaW5jbHVkZSBzYmIudGV4dC1zLS1yZWd1bGFyO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LWZsZXgtZGlyZWN0aW9uKTtcbiAganVzdGlmeS1jb250ZW50OiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LWp1c3RpZnktY29udGVudCk7XG4gIGFsaWduLWl0ZW1zOiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LWFsaWduLWl0ZW1zKTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LWhlaWdodCk7XG4gIHdpZHRoOiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LXdpZHRoKTtcbiAgcGFkZGluZzogdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtcGFkZGluZyk7XG4gIHBhZGRpbmctYmxvY2stZW5kOiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LWNlbGwtcGFkZGluZy1ob3ZlciwgdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtcGFkZGluZykpO1xuICBtYXJnaW46IGF1dG87XG4gIGNvbG9yOiB2YXIoLS1zYmItY2FsZW5kYXItY2VsbC1jb2xvcik7XG4gIGN1cnNvcjogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS1jdXJzb3IpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDA7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS1jZWxsLWJhY2tncm91bmQtY29sb3IpO1xuICAgIGJvcmRlcjogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS1zZWxlY3RlZC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1jYWxlbmRhci1kYXktYm9yZGVyLXJhZGl1cyk7XG4gICAgei1pbmRleDogLTE7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS10cmFuc2l0aW9uLWR1cmF0aW9uKTtcbiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS10cmFuc2l0aW9uLWVhc2luZy1mdW5jdGlvbik7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvcjtcblxuICAgIDpob3N0KDpmb2N1cy12aXNpYmxlKSAmIHtcbiAgICAgIEBpbmNsdWRlIHNiYi5mb2N1cy1vdXRsaW5lO1xuICAgIH1cblxuICAgIDpob3N0KDpub3QoOmRpc2FibGVkKTphY3RpdmUpICYge1xuICAgICAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgICAgICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcblxuICAgICAgICAvLyBCYXNpY2FsbHkgdGhlIGZvY3VzLW91dGxpbmUgbWl4aW4gaXMgbWFkZSBmb3IgdXNlIHdpdGggZm9jdXMtdmlzaWJsZS5cbiAgICAgICAgLy8gQXMgd2UgdXNlIGl0IGhlcmUgd2l0aCA6YWN0aXZlLCB3ZSBoYXZlIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRsaW5lIGlzIG5vdCBvdmVycmlkZGVuIHdoZW4gbW91c2Ugb3IgdG91Y2ggaXMgaW4gdXNlLlxuICAgICAgICAtLXNiYi1mb2N1cy1vdXRsaW5lLXN0eWxlOiBpbml0aWFsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIDpob3N0KDpub3QoOmFjdGl2ZSwgOmRpc2FibGVkKTpob3ZlcikgJiB7XG4gICAgQGluY2x1ZGUgc2JiLmhvdmVyLW1xKCRob3ZlcjogdHJ1ZSkge1xuICAgICAgLS1zYmItY2FsZW5kYXItZGF5LWNlbGwtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtYmFja2dyb3VuZC1jb2xvci1ob3Zlcik7XG4gICAgICAtLXNiYi1jYWxlbmRhci1kYXktY2VsbC1wYWRkaW5nLWhvdmVyOiBjYWxjKFxuICAgICAgICAje3NiYi5weC10by1yZW0tYnVpbGQoMSl9ICsgdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtcGFkZGluZylcbiAgICAgICk7XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAgICAgICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcblxuICAgICAgICAgIC8vIEJhc2ljYWxseSB0aGUgZm9jdXMtb3V0bGluZSBtaXhpbiBpcyBtYWRlIGZvciB1c2Ugd2l0aCBmb2N1cy12aXNpYmxlLlxuICAgICAgICAgIC8vIEFzIHdlIHVzZSBpdCBoZXJlIHdpdGggaG92ZXIsIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgdGhlIG91dGxpbmUgaXMgbm90IG92ZXJyaWRkZW4gd2hlbiBtb3VzZSBvciB0b3VjaCBpcyBpbiB1c2UuXG4gICAgICAgICAgLS1zYmItZm9jdXMtb3V0bGluZS1zdHlsZTogaW5pdGlhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uc2JiLWNhbGVuZGFyLWRheV9fdmFsdWUge1xuICBoZWlnaHQ6IHZhcigtLXNiYi1jYWxlbmRhci1kYXktdmFsdWUtaGVpZ2h0KTtcblxuICA6aG9zdCg6c3RhdGUoY3VycmVudCkpICYge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG5cbiAgOmhvc3QoOnN0YXRlKGNyb3NzZWQtb3V0KSkgJiB7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBoZWlnaHQ6IHZhcigtLXNiYi1jYWxlbmRhci1jZWxsLWRpc2FibGVkLWhlaWdodCk7XG4gICAgICB3aWR0aDogdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtZGlzYWJsZWQtd2lkdGgpO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtZGlzYWJsZWQtY29sb3IpO1xuICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IHZhcigtLXNiYi1jYWxlbmRhci1kYXktY3Jvc3NlZC1vdXQtdG9wKTtcbiAgICAgIGluc2V0LWlubGluZS1zdGFydDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LWNyb3NzZWQtb3V0LXRyYW5zbGF0ZSk7XG4gICAgfVxuICB9XG59XG5cbi5zYmItY2FsZW5kYXItZGF5X19leHRyYSB7XG4gIGRpc3BsYXk6IHZhcigtLXNiYi1jYWxlbmRhci1kYXktZXh0cmEtZGlzcGxheSk7XG4gIGhlaWdodDogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS1leHRyYS1oZWlnaHQpO1xuICBwYWRkaW5nOiB2YXIoLS1zYmItY2FsZW5kYXItY2VsbC1wYWRkaW5nKTtcbn1cblxuOjpzbG90dGVkKCopIHtcbiAgaGVpZ2h0OiAje3NiYi5weC10by1yZW0tYnVpbGQoMTYpfTtcbn1cbiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJCdXR0b25MaWtlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlnL2NvbmZpZy50cyc7XG5pbXBvcnQgeyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRldGltZS9kYXRlLWFkYXB0ZXIudHMnO1xuaW1wb3J0IHsgZGVmYXVsdERhdGVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRldGltZS9uYXRpdmUtZGF0ZS1hZGFwdGVyLnRzJztcbmltcG9ydCB7XG4gIHR5cGUgRm9ybVJlc3RvcmVSZWFzb24sXG4gIHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSxcbiAgU2JiRGlzYWJsZWRNaXhpbixcbn0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMudHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJDYWxlbmRhckVsZW1lbnQgfSBmcm9tICcuLi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9jYWxlbmRhci1kYXkuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIHNpbmdsZSBkYXkgY2VsbCBpbiB0aGUgYHNiYi1jYWxlbmRhcmAgY29tcG9uZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIHNvbWUgY3VzdG9tIGNvbnRlbnQgdG8gdGhlIGRheS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkNhbGVuZGFyRGF5RWxlbWVudDxUID0gRGF0ZT4gZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKFNiYkJ1dHRvbkxpa2VCYXNlRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLWNhbGVuZGFyLWRheSc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHN0eWxlXTtcbiAgcHJvdGVjdGVkIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlciA9IHJlYWRDb25maWcoKS5kYXRldGltZT8uZGF0ZUFkYXB0ZXIgPz8gZGVmYXVsdERhdGVBZGFwdGVyO1xuXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBvdmVycmlkZSBzZXQgc2xvdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIuc2xvdCA9IHZhbHVlO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmRhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHNsb3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3VwZXIuc2xvdDtcbiAgfVxuXG4gIC8qKiBWYWx1ZSBvZiB0aGUgY2FsZW5kYXItZGF5IGVsZW1lbnQuICovXG4gIEBzdGF0ZSgpXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFQgfCBudWxsKSB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBkYXRlO1xuICAgICAgY29uc3QgaXNUb2RheSA9IHRoaXMuZGF0ZUFkYXB0ZXIuc2FtZURhdGUoZGF0ZSwgdGhpcy5kYXRlQWRhcHRlci50b2RheSgpKTtcbiAgICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2N1cnJlbnQnLCBpc1RvZGF5KTtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFDdXJyZW50ID0gaXNUb2RheSA/ICdkYXRlJyA6IG51bGw7XG4gICAgICB0aGlzLmludGVybmFscy5hcmlhTGFiZWwgPSB0aGlzLmRhdGVBZGFwdGVyLmdldEFjY2Vzc2liaWxpdHlGb3JtYXREYXRlKGRhdGUpO1xuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fZ2V0UGFyZW50KCk7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHRoaXMuX3NldERpc2FibGVkRmlsdGVyZWRTdGF0ZShwYXJlbnQpO1xuICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZFN0YXRlKHBhcmVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBwcml2YXRlIF92YWx1ZTogVCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyKHRoaXMsICgpID0+IHRoaXMuX2dldFBhcmVudCgpLCB7XG4gICAgICAgIGRhdGVGaWx0ZXI6IChjb21wb25lbnQpID0+IHRoaXMuX3NldERpc2FibGVkRmlsdGVyZWRTdGF0ZShjb21wb25lbnQpLFxuICAgICAgICBtaW46IChjb21wb25lbnQpID0+IHRoaXMuX3NldERpc2FibGVkRmlsdGVyZWRTdGF0ZShjb21wb25lbnQpLFxuICAgICAgICBtYXg6IChjb21wb25lbnQpID0+IHRoaXMuX3NldERpc2FibGVkRmlsdGVyZWRTdGF0ZShjb21wb25lbnQpLFxuICAgICAgICBzZWxlY3RlZDogKGNvbXBvbmVudCkgPT4gdGhpcy5fc2V0U2VsZWN0ZWRTdGF0ZShjb21wb25lbnQpLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlbnRpb25hbGx5IGVtcHR5LCBhcyBidXR0b25zIGFyZSBub3QgdGFyZ2V0ZWQgYnkgZm9ybSByZXNldC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBJbnRlbnRpb25hbGx5IGVtcHR5LCBhcyBidXR0b25zIGFyZSBub3QgdGFyZ2V0ZWQgYnkgZm9ybSByZXN0b3JlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgX3N0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICBfcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgKTogdm9pZCB7fVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMudGFiSW5kZXggPSAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQgZGF5IGNlbGwgd2l0aGluIHRoZSBgc2JiLWNhbGVuZGFyYCxcbiAgICogb3IsIGlmIGV4dHJhIGNvbnRlbnQgaXMgbmVlZGVkLCBpdCBjYW4gYmUgc2xvdHRlZC5cbiAgICovXG4gIHByaXZhdGUgX2dldFBhcmVudCgpOiBTYmJDYWxlbmRhckVsZW1lbnQ8VD4gfCBudWxsIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jbG9zZXN0Py48U2JiQ2FsZW5kYXJFbGVtZW50PFQ+Pignc2JiLWNhbGVuZGFyJykgPz9cbiAgICAgICh0aGlzLmdldFJvb3ROb2RlPy4oKSBhcyBTaGFkb3dSb290KT8uaG9zdD8uY2xvc2VzdDxTYmJDYWxlbmRhckVsZW1lbnQ8VD4+KCdzYmItY2FsZW5kYXInKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRTZWxlY3RlZFN0YXRlKGNvbXBvbmVudDogU2JiQ2FsZW5kYXJFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBjb21wb25lbnQubXVsdGlwbGVcbiAgICAgID8gKGNvbXBvbmVudC5zZWxlY3RlZCBhcyBEYXRlW10pLnNvbWUoKHNlbERheSkgPT5cbiAgICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLnNhbWVEYXRlKHRoaXMudmFsdWUsIHNlbERheSksXG4gICAgICAgIClcbiAgICAgIDogISFjb21wb25lbnQuc2VsZWN0ZWQgJiYgdGhpcy5kYXRlQWRhcHRlci5jb21wYXJlRGF0ZSh0aGlzLnZhbHVlLCBjb21wb25lbnQuc2VsZWN0ZWQpID09PSAwO1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3NlbGVjdGVkJywgc2VsZWN0ZWQpO1xuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFQcmVzc2VkID0gU3RyaW5nKHNlbGVjdGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldERpc2FibGVkRmlsdGVyZWRTdGF0ZShjb21wb25lbnQ6IFNiYkNhbGVuZGFyRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGNvbnN0IGlzRmlsdGVyZWRPdXQgPSAhdGhpcy5faXNBY3RpdmVEYXRlKGNvbXBvbmVudC5kYXRlRmlsdGVyKTtcbiAgICBjb25zdCBpc091dE9mUmFuZ2UgPSAhdGhpcy5faXNEYXlJblJhbmdlKGNvbXBvbmVudC5taW4sIGNvbXBvbmVudC5tYXgpO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0ZpbHRlcmVkT3V0IHx8IGlzT3V0T2ZSYW5nZTtcbiAgICB0aGlzLmludGVybmFscy5hcmlhRGlzYWJsZWQgPSBTdHJpbmcodGhpcy5kaXNhYmxlZCk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnY3Jvc3NlZC1vdXQnLCBpc0ZpbHRlcmVkT3V0ICYmICFpc091dE9mUmFuZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNBY3RpdmVEYXRlKGRhdGVGaWx0ZXI6ICgoZGF0ZTogVCB8IG51bGwpID0+IGJvb2xlYW4pIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkYXRlRmlsdGVyPy4odGhpcy52YWx1ZSkgPz8gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzRGF5SW5SYW5nZShtaW46IFQgfCBudWxsLCBtYXg6IFQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKCFtaW4gJiYgIW1heCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRhdGVBZGFwdGVyLnNhbWVEYXRlKHRoaXMudmFsdWUsIHRoaXMuZGF0ZUFkYXB0ZXIuY2xhbXBEYXRlKHRoaXMudmFsdWUsIG1pbiwgbWF4KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYCA8c3BhbiBjbGFzcz1cInNiYi1jYWxlbmRhci1kYXlfX3ZhbHVlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICR7dGhpcy5kYXRlQWRhcHRlci5nZXREYXRlKHRoaXMudmFsdWUpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzYmItY2FsZW5kYXItZGF5X19leHRyYVwiPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICA8L3NwYW4+YDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWNhbGVuZGFyLWRheSc6IFNiYkNhbGVuZGFyRGF5RWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3dCYSwrQkFBcUI7bUJBQW1CLGlCQUFpQix5QkFBeUI7Ozs7Y0FBbEYsOEJBQXdDLFlBQTBDOzs7MkJBSzVGLFVBQVUsQ0FBQTs0QkFVVixPQUFPLENBQUE7QUFUUixnQkFBQSxNQUFBLE1BQUEsc0JBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxVQUFBO0tBQUEsTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFvQixPQUFJOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsTUFBQSwyQkFBQTtBQVV4QixnQkFBQSxNQUFBLE1BQUEsdUJBQUE7SUFBQSxNQUFBO0lBQUEsTUFB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