@tylertech/forge 2.15.0 → 2.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/custom-elements.json +240 -86
  2. package/dist/esm/accordion/index.js +1 -1
  3. package/dist/esm/app-bar/help-button/index.js +1 -1
  4. package/dist/esm/app-bar/index.js +1 -1
  5. package/dist/esm/autocomplete/index.js +1 -1
  6. package/dist/esm/chip-field/index.js +1 -1
  7. package/dist/esm/chunks/{chunk.YBEBD4CN.js → chunk.22OZJNVS.js} +2 -2
  8. package/dist/esm/chunks/chunk.26XTVQKW.js +7 -0
  9. package/dist/esm/chunks/chunk.26XTVQKW.js.map +7 -0
  10. package/dist/esm/chunks/{chunk.X5LGVZGO.js → chunk.27TSALYN.js} +2 -2
  11. package/dist/esm/chunks/chunk.27TSALYN.js.map +7 -0
  12. package/dist/esm/chunks/{chunk.7HQCLSUK.js → chunk.6LMDKS5P.js} +2 -2
  13. package/dist/esm/chunks/{chunk.7HQCLSUK.js.map → chunk.6LMDKS5P.js.map} +1 -1
  14. package/dist/esm/chunks/{chunk.J2H5RXTX.js → chunk.7BESNUTG.js} +2 -2
  15. package/dist/esm/chunks/chunk.7LI25R6R.js +7 -0
  16. package/dist/esm/chunks/chunk.7LI25R6R.js.map +7 -0
  17. package/dist/esm/chunks/chunk.A47X5VG3.js +7 -0
  18. package/dist/esm/chunks/chunk.A47X5VG3.js.map +7 -0
  19. package/dist/esm/chunks/{chunk.MXTDW27J.js → chunk.BUCIIOGE.js} +2 -2
  20. package/dist/esm/chunks/chunk.EE25TGNW.js +7 -0
  21. package/dist/esm/chunks/chunk.EE25TGNW.js.map +7 -0
  22. package/dist/esm/chunks/chunk.GCR7QZRO.js +7 -0
  23. package/dist/esm/chunks/chunk.GCR7QZRO.js.map +7 -0
  24. package/dist/esm/chunks/{chunk.XHV3GQ7L.js → chunk.HI2DQJZG.js} +2 -2
  25. package/dist/esm/chunks/{chunk.44IJE5UL.js → chunk.HMCOY5WC.js} +2 -2
  26. package/dist/esm/chunks/chunk.HMCOY5WC.js.map +7 -0
  27. package/dist/esm/chunks/{chunk.E6CYXNS2.js → chunk.IJW7Z6YD.js} +2 -2
  28. package/dist/esm/chunks/{chunk.RHFNK6EE.js → chunk.K4DGAJOM.js} +2 -2
  29. package/dist/esm/chunks/{chunk.JE7CPIR4.js → chunk.K4M53T3A.js} +2 -2
  30. package/dist/esm/chunks/{chunk.ESR2NHOS.js → chunk.KKMKGN2I.js} +2 -2
  31. package/dist/esm/chunks/{chunk.MHOS3IHQ.js → chunk.MUEXD4SD.js} +2 -2
  32. package/dist/esm/chunks/{chunk.O73S5LF3.js → chunk.P4EW5GAS.js} +2 -2
  33. package/dist/esm/chunks/{chunk.OZ5BPXNV.js → chunk.REH25ELY.js} +2 -2
  34. package/dist/esm/chunks/chunk.TQCGXWZF.js +7 -0
  35. package/dist/esm/chunks/chunk.TQCGXWZF.js.map +7 -0
  36. package/dist/esm/chunks/{chunk.HU27X3IT.js → chunk.UDAWTDPV.js} +2 -2
  37. package/dist/esm/chunks/chunk.VPH7GX4C.js +7 -0
  38. package/dist/esm/chunks/chunk.VPH7GX4C.js.map +7 -0
  39. package/dist/esm/chunks/chunk.XZOIRI4V.js +7 -0
  40. package/dist/esm/chunks/chunk.XZOIRI4V.js.map +7 -0
  41. package/dist/esm/chunks/chunk.Y5A7RQ5M.js +7 -0
  42. package/dist/esm/chunks/chunk.Y5A7RQ5M.js.map +7 -0
  43. package/dist/esm/chunks/{chunk.DFJUCHEO.js → chunk.YUCLBBES.js} +2 -2
  44. package/dist/esm/chunks/chunk.YWVKDJXZ.js +7 -0
  45. package/dist/esm/chunks/chunk.YWVKDJXZ.js.map +7 -0
  46. package/dist/esm/date-picker/index.js +1 -1
  47. package/dist/esm/date-range-picker/index.js +1 -1
  48. package/dist/esm/expansion-panel/index.js +1 -1
  49. package/dist/esm/index.js +1 -1
  50. package/dist/esm/list-dropdown/index.js +1 -1
  51. package/dist/esm/menu/index.js +1 -1
  52. package/dist/esm/paginator/index.js +1 -1
  53. package/dist/esm/select/core/index.js +1 -1
  54. package/dist/esm/select/index.js +1 -1
  55. package/dist/esm/select/select/index.js +1 -1
  56. package/dist/esm/select/select-dropdown/index.js +1 -1
  57. package/dist/esm/split-view/index.js +1 -1
  58. package/dist/esm/split-view/split-view/index.js +1 -1
  59. package/dist/esm/split-view/split-view-panel/index.js +1 -1
  60. package/dist/esm/stack/index.js +1 -1
  61. package/dist/esm/stepper/index.js +1 -1
  62. package/dist/esm/stepper/step/index.js +1 -1
  63. package/dist/esm/stepper/stepper/index.js +1 -1
  64. package/dist/esm/table/index.js +1 -1
  65. package/dist/esm/text-field/index.js +1 -1
  66. package/dist/esm/time-picker/index.js +1 -1
  67. package/esm/autocomplete/autocomplete-constants.d.ts +1 -0
  68. package/esm/autocomplete/autocomplete-constants.js +1 -0
  69. package/esm/autocomplete/autocomplete-foundation.d.ts +5 -0
  70. package/esm/autocomplete/autocomplete-foundation.js +19 -2
  71. package/esm/autocomplete/autocomplete.d.ts +3 -0
  72. package/esm/autocomplete/autocomplete.js +7 -0
  73. package/esm/chip-field/chip-field-foundation.d.ts +1 -1
  74. package/esm/date-picker/base/base-date-picker-adapter.d.ts +2 -2
  75. package/esm/date-picker/base/base-date-picker-foundation.d.ts +2 -2
  76. package/esm/date-picker/base/base-date-picker-foundation.js +8 -5
  77. package/esm/date-picker/date-picker-adapter.js +5 -7
  78. package/esm/date-range-picker/date-range-picker-adapter.d.ts +4 -2
  79. package/esm/date-range-picker/date-range-picker-adapter.js +20 -18
  80. package/esm/date-range-picker/date-range-picker-foundation.d.ts +4 -1
  81. package/esm/date-range-picker/date-range-picker-foundation.js +48 -14
  82. package/esm/expansion-panel/expansion-panel-constants.d.ts +2 -0
  83. package/esm/expansion-panel/expansion-panel-constants.js +3 -1
  84. package/esm/expansion-panel/expansion-panel-foundation.js +4 -1
  85. package/esm/expansion-panel/expansion-panel.js +1 -1
  86. package/esm/field/field-adapter.d.ts +4 -2
  87. package/esm/field/field-adapter.js +5 -2
  88. package/esm/field/field-foundation.d.ts +2 -2
  89. package/esm/field/field-foundation.js +7 -9
  90. package/esm/select/core/base-select-foundation.js +8 -3
  91. package/esm/split-view/split-view/split-view-adapter.js +3 -1
  92. package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
  93. package/esm/stack/stack-constants.d.ts +2 -0
  94. package/esm/stack/stack-constants.js +1 -0
  95. package/esm/stack/stack-foundation.d.ts +4 -4
  96. package/esm/stack/stack-foundation.js +2 -2
  97. package/esm/stack/stack.d.ts +3 -3
  98. package/esm/stack/stack.js +1 -1
  99. package/esm/text-field/text-field-adapter.d.ts +1 -1
  100. package/esm/text-field/text-field-adapter.js +4 -3
  101. package/esm/time-picker/time-picker-adapter.js +4 -7
  102. package/esm/time-picker/time-picker-foundation.js +9 -6
  103. package/package.json +1 -1
  104. package/styles/stack/_mixins.scss +1 -1
  105. package/styles/stack/stack.scss +4 -3
  106. package/dist/esm/chunks/chunk.44IJE5UL.js.map +0 -7
  107. package/dist/esm/chunks/chunk.DQJPIDVW.js +0 -7
  108. package/dist/esm/chunks/chunk.DQJPIDVW.js.map +0 -7
  109. package/dist/esm/chunks/chunk.HV6SPRC4.js +0 -7
  110. package/dist/esm/chunks/chunk.HV6SPRC4.js.map +0 -7
  111. package/dist/esm/chunks/chunk.II4Q4QKJ.js +0 -7
  112. package/dist/esm/chunks/chunk.II4Q4QKJ.js.map +0 -7
  113. package/dist/esm/chunks/chunk.LDN4HLF7.js +0 -7
  114. package/dist/esm/chunks/chunk.LDN4HLF7.js.map +0 -7
  115. package/dist/esm/chunks/chunk.LFLREB3C.js +0 -7
  116. package/dist/esm/chunks/chunk.LFLREB3C.js.map +0 -7
  117. package/dist/esm/chunks/chunk.NW7NV2A2.js +0 -7
  118. package/dist/esm/chunks/chunk.NW7NV2A2.js.map +0 -7
  119. package/dist/esm/chunks/chunk.SAQVWOVK.js +0 -7
  120. package/dist/esm/chunks/chunk.SAQVWOVK.js.map +0 -7
  121. package/dist/esm/chunks/chunk.SN5XYZZP.js +0 -7
  122. package/dist/esm/chunks/chunk.SN5XYZZP.js.map +0 -7
  123. package/dist/esm/chunks/chunk.UF43SSFY.js +0 -7
  124. package/dist/esm/chunks/chunk.UF43SSFY.js.map +0 -7
  125. package/dist/esm/chunks/chunk.ULIFS3UR.js +0 -7
  126. package/dist/esm/chunks/chunk.ULIFS3UR.js.map +0 -7
  127. package/dist/esm/chunks/chunk.X5LGVZGO.js.map +0 -7
  128. /package/dist/esm/chunks/{chunk.YBEBD4CN.js.map → chunk.22OZJNVS.js.map} +0 -0
  129. /package/dist/esm/chunks/{chunk.J2H5RXTX.js.map → chunk.7BESNUTG.js.map} +0 -0
  130. /package/dist/esm/chunks/{chunk.MXTDW27J.js.map → chunk.BUCIIOGE.js.map} +0 -0
  131. /package/dist/esm/chunks/{chunk.XHV3GQ7L.js.map → chunk.HI2DQJZG.js.map} +0 -0
  132. /package/dist/esm/chunks/{chunk.E6CYXNS2.js.map → chunk.IJW7Z6YD.js.map} +0 -0
  133. /package/dist/esm/chunks/{chunk.RHFNK6EE.js.map → chunk.K4DGAJOM.js.map} +0 -0
  134. /package/dist/esm/chunks/{chunk.JE7CPIR4.js.map → chunk.K4M53T3A.js.map} +0 -0
  135. /package/dist/esm/chunks/{chunk.ESR2NHOS.js.map → chunk.KKMKGN2I.js.map} +0 -0
  136. /package/dist/esm/chunks/{chunk.MHOS3IHQ.js.map → chunk.MUEXD4SD.js.map} +0 -0
  137. /package/dist/esm/chunks/{chunk.O73S5LF3.js.map → chunk.P4EW5GAS.js.map} +0 -0
  138. /package/dist/esm/chunks/{chunk.OZ5BPXNV.js.map → chunk.REH25ELY.js.map} +0 -0
  139. /package/dist/esm/chunks/{chunk.HU27X3IT.js.map → chunk.UDAWTDPV.js.map} +0 -0
  140. /package/dist/esm/chunks/{chunk.DFJUCHEO.js.map → chunk.YUCLBBES.js.map} +0 -0
@@ -3,7 +3,7 @@
3
3
  * Copyright 2023 Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
- import { STACK_CONSTANTS, StackAlignMode } from './stack-constants';
6
+ import { STACK_CONSTANTS } from './stack-constants';
7
7
  export class StackFoundation {
8
8
  constructor(_adapter) {
9
9
  this._adapter = _adapter;
@@ -11,7 +11,7 @@ export class StackFoundation {
11
11
  this._wrap = false;
12
12
  this._stretch = false;
13
13
  this._gap = STACK_CONSTANTS.strings.DEFAULT_GAP;
14
- this._alignment = StackAlignMode.Start;
14
+ this._alignment = 'start';
15
15
  }
16
16
  /** Controls the direction of the stack. */
17
17
  get inline() {
@@ -4,14 +4,14 @@
4
4
  * License: Apache-2.0
5
5
  */
6
6
  import { ICustomElement } from '@tylertech/forge-core';
7
- import { StackAlignMode } from './stack-constants';
7
+ import { StackAlignMode, StackAlignment } from './stack-constants';
8
8
  import { BaseComponent } from '../core/base/base-component';
9
9
  export interface IStackComponent extends ICustomElement {
10
10
  inline: boolean;
11
11
  wrap: boolean;
12
12
  stretch: boolean;
13
13
  gap: string;
14
- alignment: StackAlignMode;
14
+ alignment: StackAlignMode | StackAlignment;
15
15
  }
16
16
  declare global {
17
17
  interface HTMLElementTagNameMap {
@@ -37,5 +37,5 @@ export declare class StackComponent extends BaseComponent implements IStackCompo
37
37
  /** Controls the gap between the children within the stack */
38
38
  gap: string;
39
39
  /** Controls if stack items are at the end of the row or column */
40
- alignment: StackAlignMode;
40
+ alignment: StackAlignMode | StackAlignment;
41
41
  }
@@ -10,7 +10,7 @@ import { StackFoundation } from './stack-foundation';
10
10
  import { STACK_CONSTANTS } from './stack-constants';
11
11
  import { BaseComponent } from '../core/base/base-component';
12
12
  const template = '<template><div class=\"forge-stack\" part=\"root\"><slot></slot></div></template>';
13
- const styles = '.forge-stack{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;width:100%;gap:16px;gap:var(--forge-stack-gap,16px);height:100%;height:var(--forge-stack-height,100%)}.forge-stack ::slotted(*){-webkit-box-flex:var(--forge-stack-stretch,0);flex-grow:var(--forge-stack-stretch,0)}:host{display:block;height:100%}:host([inline]){height:auto}:host([inline]) .forge-stack{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;--forge-stack-height:auto}:host([inline][wrap]) .forge-stack{flex-wrap:wrap}:host([stretch]){--forge-stack-stretch:1}:host([alignment=start]) .forge-stack{-webkit-box-pack:start;justify-content:start}:host([alignment=center]) .forge-stack{-webkit-box-pack:center;justify-content:center}:host([alignment=end]) .forge-stack{-webkit-box-pack:end;justify-content:end}';
13
+ const styles = '.forge-stack{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;width:100%;gap:16px;gap:var(--forge-stack-gap,16px);height:100%;height:var(--forge-stack-height,100%)}.forge-stack ::slotted(*){-webkit-box-flex:var(--forge-stack-stretch,initial);flex:var(--forge-stack-stretch,initial)}:host{display:block}:host([inline]) .forge-stack{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;--forge-stack-height:auto}:host([inline][wrap]) .forge-stack{flex-wrap:wrap}:host([stretch]:not([inline])){height:100%}:host([stretch]){--forge-stack-stretch:1}:host([alignment=start]) .forge-stack{-webkit-box-pack:start;justify-content:start}:host([alignment=center]) .forge-stack{-webkit-box-pack:center;justify-content:center}:host([alignment=end]) .forge-stack{-webkit-box-pack:end;justify-content:end}';
14
14
  /**
15
15
  * The custom element class behind the `<forge-stack>` component.
16
16
  *
@@ -21,7 +21,7 @@ export declare class TextFieldAdapter extends FieldAdapter implements ITextField
21
21
  setValueChangedListener(context: any, listener: (value: any) => void): void;
22
22
  inputHasValue(): boolean;
23
23
  hasPlaceholder(): boolean;
24
- inputHasFocus(): boolean;
24
+ inputHasFocus(target?: EventTarget | null): boolean;
25
25
  setInputClass(className: string): void;
26
26
  removeInputClass(className: string): void;
27
27
  setInputAttributeObserver(listener: (name: string, value: string) => void): void;
@@ -10,6 +10,7 @@ import { FIELD_CONSTANTS } from '../field/field-constants';
10
10
  export class TextFieldAdapter extends FieldAdapter {
11
11
  constructor(component) {
12
12
  super(component);
13
+ this._inputElements = [];
13
14
  this._inputMutationObserverInstances = [];
14
15
  }
15
16
  initialize() {
@@ -64,8 +65,8 @@ export class TextFieldAdapter extends FieldAdapter {
64
65
  hasPlaceholder() {
65
66
  return this._inputsSome(input => input.placeholder ? input.placeholder.trim().length > 0 : false);
66
67
  }
67
- inputHasFocus() {
68
- return this._inputsSome(input => input === getActiveElement());
68
+ inputHasFocus(target) {
69
+ return this._inputsSome(input => input === target || input === getActiveElement());
69
70
  }
70
71
  setInputClass(className) {
71
72
  this._applyToInputs(input => input.classList.add(className));
@@ -94,7 +95,7 @@ export class TextFieldAdapter extends FieldAdapter {
94
95
  _handleMultiInputs() {
95
96
  addClass(TEXT_FIELD_CONSTANTS.classes.MULTI_INPUT, this._rootElement);
96
97
  this._applyToInputs((input, index) => {
97
- input.setAttribute(`${TEXT_FIELD_CONSTANTS.attributes.MULTI_INPUT}-${index.toString()}`, '');
98
+ input.setAttribute(`${TEXT_FIELD_CONSTANTS.attributes.MULTI_INPUT}-${index}`, '');
98
99
  if (index % 2 !== 1) {
99
100
  Promise.resolve().then(() => input.insertAdjacentElement('afterend', this._createSeperatorElement()));
100
101
  }
@@ -19,9 +19,7 @@ export class TimePickerAdapter extends BaseAdapter {
19
19
  this._inputElement = this._component.querySelector(TIME_PICKER_CONSTANTS.selectors.INPUT);
20
20
  }
21
21
  initializeMask(options) {
22
- if (this._inputMask) {
23
- this._inputMask.destroy();
24
- }
22
+ this.destroyMask();
25
23
  this._inputMask = new TimeInputMask(this._inputElement, options);
26
24
  }
27
25
  destroy() {
@@ -30,10 +28,9 @@ export class TimePickerAdapter extends BaseAdapter {
30
28
  this._inputElement = undefined;
31
29
  }
32
30
  destroyMask() {
33
- if (this._inputMask) {
34
- this._inputMask.destroy();
35
- this._inputMask = undefined;
36
- }
31
+ var _a;
32
+ (_a = this._inputMask) === null || _a === void 0 ? void 0 : _a.destroy();
33
+ this._inputMask = undefined;
37
34
  }
38
35
  initializeAccessibility(identifier) {
39
36
  this._inputElement.setAttribute('autocomplete', 'off');
@@ -223,8 +223,14 @@ export class TimePickerFoundation {
223
223
  if (this._allowInput) {
224
224
  this._adapter.selectInputText();
225
225
  }
226
+ if (this.masked && this._showMaskFormat) {
227
+ this._applyMask();
228
+ }
226
229
  }
227
230
  _onInputBlur(evt) {
231
+ if (this.masked && this._showMaskFormat) {
232
+ this._applyMask();
233
+ }
228
234
  this._formatInputValue();
229
235
  if (this._open && !this._adapter.isInputFocused()) {
230
236
  this._closeDropdown(true);
@@ -242,8 +248,9 @@ export class TimePickerFoundation {
242
248
  }
243
249
  _applyMask() {
244
250
  if (this._masked && this._allowInput) {
251
+ this._adapter.destroyMask();
245
252
  const options = {
246
- showMaskFormat: this._showMaskFormat,
253
+ showMaskFormat: this._showMaskFormat && this._adapter.isInputFocused(),
247
254
  use24HourTime: this._use24HourTime,
248
255
  showSeconds: this._allowSeconds,
249
256
  prepareCallback: this._prepareMaskCallback,
@@ -635,9 +642,6 @@ export class TimePickerFoundation {
635
642
  set showMaskFormat(value) {
636
643
  if (this._showMaskFormat !== value) {
637
644
  this._showMaskFormat = value;
638
- if (this._isInitialized) {
639
- this._applyMask();
640
- }
641
645
  }
642
646
  }
643
647
  get allowSeconds() {
@@ -661,9 +665,8 @@ export class TimePickerFoundation {
661
665
  if (this._use24HourTime !== value) {
662
666
  this._use24HourTime = !!value;
663
667
  if (this._isInitialized) {
664
- this._adapter.destroyMask();
665
- this._formatInputValue();
666
668
  this._applyMask();
669
+ this._formatInputValue();
667
670
  }
668
671
  this._adapter.setHostAttribute(TIME_PICKER_CONSTANTS.attributes.USE_24_HOUR_TIME, `${!!value}`);
669
672
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tylertech/forge",
3
3
  "description": "Tyler Forge™ Web Components library",
4
- "version": "2.15.0",
4
+ "version": "2.16.1",
5
5
  "author": "Tyler Technologies, Inc.",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
@@ -32,7 +32,7 @@
32
32
 
33
33
  @mixin stretch() {
34
34
  ::slotted(*) {
35
- flex-grow: var(--forge-stack-stretch, 0);
35
+ flex: var(--forge-stack-stretch, initial);
36
36
  }
37
37
  }
38
38
 
@@ -8,12 +8,9 @@
8
8
 
9
9
  :host {
10
10
  display: block;
11
- height: 100%;
12
11
  }
13
12
 
14
13
  :host([inline]) {
15
- height: auto;
16
-
17
14
  .forge-stack {
18
15
  @include mixins.inline;
19
16
  }
@@ -25,6 +22,10 @@
25
22
  }
26
23
  }
27
24
 
25
+ :host([stretch]:not([inline])) {
26
+ height: 100%;
27
+ }
28
+
28
29
  :host([stretch]) {
29
30
  --forge-stack-stretch: 1;
30
31
  }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/chip-field/chip-field-constants.ts", "../../src/chip-field/chip-field-adapter.ts", "../../src/chip-field/chip-field-foundation.ts", "../../src/chip-field/chip-field.ts", "../../src/chip-field/chip-field-component-delegate.ts", "../../src/chip-field/index.ts"],
4
- "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}chip-field`;\n\nconst classes = {\n ROOT: 'forge-chip-field'\n};\n\nconst slots = {\n LABEL: 'label',\n HELPER_TEXT: 'helper-text',\n MEMBER: 'member'\n};\n\nconst selectors = {\n ROOT: `.${classes.ROOT}`,\n INPUT_CONTAINER: '.forge-field__input-container',\n INPUT: 'input',\n LABEL: `[slot=${slots.LABEL}]`,\n HELPER_TEXT: `[slot=${slots.HELPER_TEXT}]`,\n MEMBER: `[slot=${slots.MEMBER}]`,\n LABEL_SLOT: `slot[name=${slots.LABEL}]`,\n MEMBER_SLOT: `slot[name=${slots.MEMBER}]`\n};\n\nconst events = {\n MEMBER_ADDED: `${elementName}-member-added`,\n MEMBER_REMOVED: `${elementName}-member-removed`\n};\n\nexport const CHIP_FIELD_CONSTANTS = {\n elementName,\n classes,\n slots,\n selectors,\n events\n};\n\nexport {\n type FieldDensityType as ChipFieldDensityType,\n type FieldFloatLabelType as ChipFieldFloatLabelType,\n type FieldShapeType as ChipFieldShapeType\n} from '../field/field-constants';\n", "import { IChipFieldComponent } from './chip-field';\nimport { getShadowElement } from '@tylertech/forge-core';\nimport { CHIP_FIELD_CONSTANTS } from './chip-field-constants';\nimport { FieldAdapter, IFieldAdapter } from '../field/field-adapter';\n\nexport interface IChipFieldAdapter extends IFieldAdapter {\n // root\n addRootListener(type: string, callback: (event: Event) => void): void;\n removeRootListener(type: string, callback: (event: Event) => void): void;\n\n // member\n addMemberSlotListener(listener: (evt: Event) => void): void;\n removeMemberSlotListener(listener: (evt: Event) => void): void;\n\n addInputContainerListener(type: string, callback: (event: Event) => void): void;\n removeInputContainerListener(type: string, callback: (event: Event) => void): void;\n\n // state selectors\n getSlottedMemberElements(): NodeListOf<HTMLElement>;\n\n // state actions\n focusInput(): void;\n tryPropagateClick(target: EventTarget | null): void;\n}\n\nexport class ChipFieldAdapter extends FieldAdapter implements IChipFieldAdapter {\n protected _memberSlot: HTMLSlotElement;\n protected _inputContainerElement: HTMLElement;\n\n constructor(component: IChipFieldComponent) {\n super(component);\n }\n\n public initialize(): void {\n super.initialize(CHIP_FIELD_CONSTANTS.selectors.ROOT);\n this._memberSlot = getShadowElement(this._component, CHIP_FIELD_CONSTANTS.selectors.MEMBER_SLOT) as HTMLSlotElement;\n this._inputContainerElement = getShadowElement(this._component, CHIP_FIELD_CONSTANTS.selectors.INPUT_CONTAINER) as HTMLElement;\n }\n\n public addRootListener(type: string, callback: (event: Event) => void): void {\n this._rootElement.addEventListener(type, callback);\n }\n\n public removeRootListener(type: string, callback: (event: Event) => void): void {\n this._rootElement.removeEventListener(type, callback);\n }\n\n public addMemberSlotListener(listener: (evt: Event) => void): void {\n this._memberSlot.addEventListener('slotchange', listener);\n }\n\n public removeMemberSlotListener(listener: (evt: Event) => void): void {\n if (this._memberSlot) {\n this._memberSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addInputContainerListener(type: string, callback: (event: Event) => void): void {\n this._inputContainerElement.addEventListener(type, callback);\n }\n\n public removeInputContainerListener(type: string, callback: (event: Event) => void): void {\n this._inputContainerElement.removeEventListener(type, callback);\n }\n\n public override fieldHasValue(): boolean {\n const aMemberExists = !!this._component.querySelector(CHIP_FIELD_CONSTANTS.selectors.MEMBER);\n return aMemberExists || super.inputHasValue();\n }\n\n public focusInput(): void {\n this._inputElement?.focus();\n }\n \n public tryPropagateClick(target: EventTarget | null): void {\n // We only propagate the click to the input if it originated from our internal input container\n if (target instanceof HTMLElement && target.matches(CHIP_FIELD_CONSTANTS.selectors.INPUT_CONTAINER)) {\n this._inputElement?.dispatchEvent(new MouseEvent('click'));\n }\n }\n\n public getSlottedMemberElements(): NodeListOf<HTMLElement> {\n return this._component.querySelectorAll<HTMLElement>(CHIP_FIELD_CONSTANTS.selectors.MEMBER);\n }\n}\n", "import { getActiveElement } from '@tylertech/forge-core';\nimport { IChipFieldAdapter } from './chip-field-adapter';\nimport { CHIP_FIELD_CONSTANTS } from './chip-field-constants';\nimport { IFieldFoundation, FieldFoundation } from '../field/field-foundation';\n\nexport interface IChipFieldFoundation extends IFieldFoundation {}\n\nexport class ChipFieldFoundation extends FieldFoundation implements IChipFieldFoundation {\n private _memberSlotListener: () => void;\n private _inputContainerMouseDownListener: (evt: MouseEvent) => void;\n private _handleRootKeyDown: (event: KeyboardEvent) => void;\n private _handleKeyDown: (event: KeyboardEvent) => void;\n\n constructor(protected _adapter: IChipFieldAdapter) {\n super(_adapter);\n this._memberSlotListener = () => this._onMemberSlotChanged();\n this._inputContainerMouseDownListener = evt => this._onInputContainerMouseDown(evt);\n this._handleRootKeyDown = evt => this._onRootKeyDown(evt);\n this._handleKeyDown = evt => this._onKeyDown(evt);\n }\n\n public initialize(): void {\n super.initialize();\n this._adapter.addMemberSlotListener(this._memberSlotListener);\n this._adapter.addInputContainerListener('mousedown', this._inputContainerMouseDownListener);\n this._adapter.addRootListener('keydown', this._handleRootKeyDown);\n this._adapter.addInputListener('keydown', this._handleKeyDown);\n }\n\n public disconnect(): void {\n super.disconnect();\n this._adapter.removeMemberSlotListener(this._memberSlotListener);\n this._adapter.removeInputContainerListener('mousedown', this._inputContainerMouseDownListener);\n this._adapter.removeRootListener('keydown', this._handleRootKeyDown);\n this._adapter.removeInputListener('keydown', this._handleKeyDown);\n }\n\n private _onInputContainerMouseDown(evt: MouseEvent): void {\n evt.preventDefault();\n this._adapter.focusInput();\n this._adapter.tryPropagateClick(evt.target);\n }\n\n protected _onBlur(event: Event): void {\n const input = event.target as HTMLInputElement;\n input.value = '';\n super._onBlur(event);\n }\n\n private _onRootKeyDown(event: KeyboardEvent): void {\n if (this._adapter.inputHasValue()) {\n return;\n }\n\n switch (event.key) {\n case 'Right':\n case 'ArrowRight':\n this._focusNextMember();\n break;\n case 'Left':\n case 'ArrowLeft':\n this._focusPreviousMember();\n break;\n case 'Backspace':\n case 'Delete':\n case 'Del':\n this._removeMember();\n break;\n default:\n break;\n }\n }\n\n private _onKeyDown(event: KeyboardEvent): void {\n const input = event.target as HTMLInputElement;\n switch (event.key) {\n case 'Enter':\n this._addMember(input);\n break;\n case 'Esc':\n case 'Escape':\n case 'Tab':\n input.value = '';\n break;\n default:\n break;\n }\n }\n\n private _focusNextMember(): void {\n const members = this._adapter.getSlottedMemberElements();\n if (members.length < 1 || this._adapter.inputHasFocus()) {\n return;\n }\n\n for (let i = 0; i < members.length; i++) {\n const member = members.item(i);\n const nextMember = members.item(i + 1);\n\n if (this._memberIsActive(member)) {\n if (nextMember) {\n nextMember.focus();\n break;\n } else {\n this._adapter.focusInput();\n }\n }\n }\n }\n\n private _focusPreviousMember(): void {\n const members = this._adapter.getSlottedMemberElements();\n if (members.length < 1) {\n return;\n }\n\n if (this._adapter.inputHasFocus()) {\n members[members.length - 1].focus();\n return;\n }\n\n for (let i = 0; i < members.length; i++) {\n const previousMember = members.item(i - 1);\n const member = members.item(i);\n\n if (this._memberIsActive(member) && previousMember) {\n previousMember.focus();\n break;\n }\n }\n }\n\n private _memberIsActive(ele: HTMLElement): boolean {\n return getActiveElement() === ele || ele.hasAttribute('focused');\n }\n\n private _getActiveMember(): HTMLElement | null {\n const members = this._adapter.getSlottedMemberElements();\n\n for (let i = 0; i < members.length; i++) {\n const member = members.item(i);\n if (this._memberIsActive(member)) {\n return member;\n }\n }\n\n return null;\n }\n\n private _addMember(input: HTMLInputElement): void {\n const cleanInputValue = input.value.trim();\n if (cleanInputValue && cleanInputValue.length > 0) {\n this._adapter.emitHostEvent(CHIP_FIELD_CONSTANTS.events.MEMBER_ADDED, cleanInputValue);\n }\n\n input.value = '';\n }\n\n private _removeMember(): void {\n let memberToRemove = this._getActiveMember();\n if (!memberToRemove) {\n const members = this._adapter.getSlottedMemberElements();\n memberToRemove = members.item(members.length - 1);\n }\n\n if (!memberToRemove) {\n return;\n }\n\n this._focusNextMember();\n this._adapter.emitHostEvent(CHIP_FIELD_CONSTANTS.events.MEMBER_REMOVED, memberToRemove);\n }\n\n private _onMemberSlotChanged(): void {\n this.floatLabel(this._adapter.fieldHasValue() || this._adapter.inputHasFocus());\n this._adapter.getSlottedMemberElements().forEach(x => x.tabIndex = -1);\n }\n}\n", "import { CustomElement, attachShadowTemplate } from '@tylertech/forge-core';\nimport { ChipFieldAdapter } from './chip-field-adapter';\nimport { ChipFieldFoundation } from './chip-field-foundation';\nimport { CHIP_FIELD_CONSTANTS } from './chip-field-constants';\nimport { ChipComponent } from '../chips';\nimport { FieldComponent, IFieldComponent } from '../field/field';\n\nconst template = '<template><div class=\\\"forge-chip-field__wrapper\\\" part=\\\"root\\\"><div class=\\\"forge-chip-field forge-field\\\" part=\\\"container\\\"><slot name=\\\"leading\\\"></slot><div class=\\\"forge-field__label-input-container\\\" part=\\\"label-input-container\\\"><slot name=\\\"label\\\"></slot><div class=\\\"forge-field__input-container\\\" part=\\\"input-container\\\"><slot name=\\\"member\\\"></slot><slot></slot></div></div><slot name=\\\"trailing\\\"></slot><div class=\\\"forge-field__addon-end-container\\\" part=\\\"addon-end-container\\\"><slot name=\\\"addon-end\\\"></slot></div></div><slot name=\\\"helper-text\\\"></slot></div></template>';\nconst styles = '.forge-field::before{content:\\\"\\\";display:-webkit-box;display:flex;position:absolute;top:0;right:0;left:0;z-index:-1;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:100%;height:100%;pointer-events:none;border-style:solid;border-style:var(--forge-chip-field-border-style,solid);border-width:1px;-webkit-transition:border-color .2s 0s cubic-bezier(0, 0, .2, 1);transition:border-color .2s 0s cubic-bezier(0, 0, .2, 1);background-color:transparent;background-color:var(--forge-chip-field-theme-background,transparent);text-align:left}.forge-field[dir=rtl]::before,[dir=rtl] .forge-field::before{text-align:right}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid):not(.forge-field--focused)::before{border-color:rgba(0,0,0,.38);border-color:var(--mdc-theme-text-icon-on-background,rgba(0,0,0,.38))}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid):not(.forge-field--focused):hover::before{border-color:rgba(0,0,0,.87);border-color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled)::before{border-color:#3f51b5;border-color:var(--mdc-theme-primary,#3f51b5)}.forge-field--invalid:not(.forge-field--disabled)::before{border-color:#b00020;border-color:var(--mdc-theme-error,#b00020)}.forge-field--invalid:not(.forge-field--disabled):not(.forge-field--focused):hover::before{border-color:#db8a98;border-color:var(--forge-theme-error-hover,#db8a98)}.forge-field--disabled::before{border-color:rgba(0,0,0,.12);border-color:var(--mdc-theme-text-disabled-on-background,rgba(0,0,0,.12))}.forge-field:not(.forge-field--shape-rounded){border-radius:4px}.forge-field:not(.forge-field--shape-rounded)::before{border-radius:4px}.forge-field--shape-rounded{border-radius:28px}.forge-field--shape-rounded::before{border-radius:28px}.forge-field--disabled::before{background-color:#f5f5f5;background-color:var(--forge-theme-form-field-disabled-on-background,#f5f5f5)}.forge-field--focused::before{border-color:#3f51b5;border-color:var(--mdc-theme-primary,#3f51b5);border-width:2px}.forge-field__label-input-container{position:relative;-webkit-box-flex:1;flex:1 1 0.0001px;height:100%;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center;min-width:0}.forge-field ::slotted(label){color:rgba(0,0,0,.65);color:var(--forge-theme-form-field-label-on-background,rgba(0,0,0,.65));pointer-events:none;right:0;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight,400);letter-spacing:.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration,inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform,inherit);font-size:var(--mdc-typography-subtitle1-font-size, 1rem);position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.1rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform;-webkit-transition:color 150ms cubic-bezier(.4, 0, .2, 1),-webkit-transform 150ms cubic-bezier(.4, 0, .2, 1);transition:color 150ms cubic-bezier(.4, 0, .2, 1),-webkit-transform 150ms cubic-bezier(.4, 0, .2, 1);transition:transform 150ms cubic-bezier(.4, 0, .2, 1),color 150ms cubic-bezier(.4, 0, .2, 1);transition:transform 150ms cubic-bezier(.4, 0, .2, 1),color 150ms cubic-bezier(.4, 0, .2, 1),-webkit-transform 150ms cubic-bezier(.4, 0, .2, 1)}.forge-field ::slotted(label[dir=rtl]),[dir=rtl] .forge-field ::slotted(label){right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.forge-field--dense:not(.forge-field--roomy) ::slotted(label){display:none}.forge-field--required ::slotted(label)::after{content:none}.forge-field--required ::slotted(label)::before{color:#b00020;color:var(--mdc-theme-error,#b00020);content:\\\"*\\\";margin-right:4px}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label){font-size:1rem}.forge-field--roomy:not(.forge-field--dense) ::slotted(label){font-size:1rem}.forge-field--disabled ::slotted(label){color:rgba(0,0,0,.38);color:var(--forge-theme-label-disabled-on-background,rgba(0,0,0,.38))}.forge-field--invalid:not(.forge-field--disabled) ::slotted(label){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled) ::slotted(label){color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label){top:1rem}.forge-field--roomy:not(.forge-field--dense) ::slotted(label){top:1.285rem}.forge-field:not(.forge-field--shape-rounded):not(.forge-field--leading) ::slotted(label){left:12px!important}.forge-field--shape-rounded:not(.forge-field--leading) ::slotted(label){left:32px!important}.forge-field:not(.forge-field--trailing):not(.forge-field--addon-end):not(.forge-field--shape-rounded) ::slotted(label){padding-right:12px}.forge-field:not(.forge-field--trailing):not(.forge-field--addon-end).forge-field--shape-rounded ::slotted(label){padding-right:32px}.forge-field ::slotted(label.forge-floating-label--float-above){color:rgba(0,0,0,.65);color:var(--forge-theme-form-field-label-on-background,rgba(0,0,0,.65))}.forge-field--disabled ::slotted(label.forge-floating-label--float-above){color:rgba(0,0,0,.6);color:var(--forge-theme-form-field-text-disabled-on-background,rgba(0,0,0,.6))}.forge-field--invalid:not(.forge-field--disabled) ::slotted(label.forge-floating-label--float-above){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled) ::slotted(label.forge-floating-label--float-above){color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label.forge-floating-label--float-above){-webkit-transform:translateY(-.54rem) scale(.8125);transform:translateY(-.54rem) scale(.8125);cursor:auto}.forge-field--roomy:not(.forge-field--dense) ::slotted(label.forge-floating-label--float-above){-webkit-transform:translateY(-.72rem) scale(.8125);transform:translateY(-.72rem) scale(.8125);cursor:auto}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label.forge-floating-label--float-above.forge-floating-label--float-above-end-keyframe){-webkit-transition:none;transition:none;font-size:.8125rem;-webkit-transform:translateY(-.62rem) scale(1);transform:translateY(-.62rem) scale(1);cursor:auto}.forge-field--roomy:not(.forge-field--dense) ::slotted(label.forge-floating-label--float-above.forge-floating-label--float-above-end-keyframe){-webkit-transition:none;transition:none;font-size:.8125rem;-webkit-transform:translateY(-.8rem) scale(1);transform:translateY(-.8rem) scale(1);cursor:auto}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label.forge-floating-label--unfloat-above-start-keyframe){-webkit-transition:none;transition:none;font-size:1rem;-webkit-transform:translateY(-.62rem) scale(.8125);transform:translateY(-.62rem) scale(.8125);cursor:auto}.forge-field--roomy:not(.forge-field--dense) ::slotted(label.forge-floating-label--unfloat-above-start-keyframe){-webkit-transition:none;transition:none;font-size:1rem;-webkit-transform:translateY(-.8rem) scale(.8125);transform:translateY(-.8rem) scale(.8125);cursor:auto}.forge-field~::slotted([slot=helper-text]){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);display:block;min-height:1.5rem;line-height:normal;padding-top:4px;-webkit-box-sizing:border-box;box-sizing:border-box}.forge-field:not(.forge-field--dense):not(.forge-field--roomy)~::slotted([slot=helper-text]){font-size:.75rem}.forge-field--roomy:not(.forge-field--dense)~::slotted([slot=helper-text]){font-size:.875rem}.forge-field--dense:not(.forge-field--roomy)~::slotted([slot=helper-text]){font-size:.75rem}.forge-field~::slotted([slot=helper-text]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled)~::slotted([slot=helper-text]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field:not(.forge-field--shape-rounded)~::slotted([slot=helper-text]){margin-left:12px}.forge-field--shape-rounded~::slotted([slot=helper-text]){margin-left:32px}.forge-field ::slotted([slot=leading]){display:-webkit-box;display:flex;align-self:center}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid) ::slotted([slot=leading]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled) ::slotted([slot=leading]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--disabled ::slotted([slot=leading]){color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38));cursor:not-allowed;pointer-events:none}.forge-field ::slotted([slot=leading]){margin:0 4px}.forge-field ::slotted([slot=leading]:not(forge-icon-button)){padding:6px}.forge-field ::slotted([slot=trailing]){align-self:center}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid) ::slotted([slot=trailing]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled) ::slotted([slot=trailing]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--disabled ::slotted([slot=trailing]){color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38));cursor:not-allowed;pointer-events:none}.forge-field ::slotted([slot=trailing]){margin:0 4px}.forge-field ::slotted([slot=trailing]:not(forge-icon-button)){padding:6px}.forge-field__addon-end-container{display:none}.forge-field--addon-end .forge-field__addon-end-container{height:100%;width:auto;display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;padding:0 4px;border-left-width:1px;border-left-style:solid;-webkit-transition:border-left-color .2s 0s cubic-bezier(0, 0, .2, 1);transition:border-left-color .2s 0s cubic-bezier(0, 0, .2, 1)}.forge-field:not(.forge-field--disabled):not(.forge-field--focused):not(.forge-field--invalid) .forge-field__addon-end-container{border-left-color:rgba(0,0,0,.54);border-left-color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field:not(.forge-field--disabled):not(.forge-field--focused):not(.forge-field--invalid) .forge-field__addon-end-container:hover{border-left-color:rgba(0,0,0,.87);border-left-color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-field.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled) .forge-field__addon-end-container{border-left-color:#3f51b5;border-left-color:var(--mdc-theme-primary,#3f51b5)}.forge-field.forge-field--invalid:not(.forge-field--disabled) .forge-field__addon-end-container{border-left-color:#b00020;border-left-color:var(--mdc-theme-error,#b00020)}.forge-field.forge-field--invalid:not(.forge-field--focused):not(.forge-field--disabled) .forge-field__addon-end-container:hover{border-left-color:#db8a98;border-left-color:var(--forge-theme-error-hover,#db8a98)}.forge-field.forge-field--disabled .forge-field__addon-end-container{border-left-color:rgba(0,0,0,.12);border-left-color:var(--mdc-theme-text-disabled-on-background,rgba(0,0,0,.12))}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid) ::slotted([slot=addon-end]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled) ::slotted([slot=addon-end]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--disabled ::slotted([slot=addon-end]){color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38));cursor:not-allowed;pointer-events:none}.forge-chip-field{-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;position:relative;z-index:1;z-index:var(--forge-z-index-surface,1);margin-top:0;margin-top:var(--forge-chip-field-margin-top,0);display:grid;grid-template-columns:[leading] -webkit-min-content [input] 1fr [trailing] -webkit-min-content [addon-end] -webkit-min-content [end];grid-template-columns:[leading] min-content [input] 1fr [trailing] min-content [addon-end] min-content [end]}.forge-chip-field.forge-field--disabled{background-color:#f5f5f5;background-color:var(--forge-theme-form-field-disabled-on-background,#f5f5f5);cursor:not-allowed}.forge-chip-field:not(.forge-field--dense):not(.forge-field--roomy){height:auto;min-height:46px;min-height:var(--forge-chip-field-height,46px)}.forge-chip-field.forge-field--roomy:not(.forge-field--dense){height:auto;min-height:3.5rem;min-height:var(--forge-chip-field-height,3.5rem)}.forge-chip-field.forge-field--dense:not(.forge-field--roomy){height:auto;min-height:1.5rem;min-height:var(--forge-chip-field-height,1.5rem)}.forge-field__label-input-container{grid-column-start:input;grid-column-end:trailing}.forge-field__input-container{-webkit-box-flex:1;flex:1 1 0.0001px;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;flex-wrap:wrap;-webkit-box-align:start;align-items:flex-start;-webkit-box-sizing:border-box;box-sizing:border-box}.forge-field__input-container{padding:2px 12px}.forge-field--label .forge-field__input-container{padding-top:22px}.forge-field--roomy.forge-field--label .forge-field__input-container{padding-top:22px}.forge-field--shape-rounded:not(.forge-field--leading) .forge-field__input-container{padding-left:32px}.forge-field--leading:not(.forge-field--shape-rounded) .forge-field__input-container{padding-left:0}.forge-field--shape-rounded.forge-field--leading .forge-field__input-container{padding-left:0}.forge-field--label .forge-field__input-container{padding-bottom:2px}.forge-field--roomy.forge-field--label .forge-field__input-container{padding-bottom:2px}.forge-field--shape-rounded:not(.forge-field--trailing):not(.forge-field--addon-end) .forge-field__input-container{padding-right:32px}.forge-field--addon-end:not(.forge-field--shape-rounded) .forge-field__input-container,.forge-field--trailing:not(.forge-field--shape-rounded) .forge-field__input-container{padding-right:0}.forge-field--shape-rounded.forge-field--addon-end .forge-field__input-container,.forge-field--shape-rounded.forge-field--trailing .forge-field__input-container{padding-right:0}.forge-field ::slotted([slot=member]){display:block}.forge-field--disabled ::slotted([slot=member]){--mdc-theme-primary:rgba(0, 0, 0, 0.38);--mdc-theme-primary:var(--mdc-theme-text-disabled-on-light, rgba(0, 0, 0, 0.38));cursor:not-allowed;pointer-events:none}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted([slot=member]){margin:2px 8px 2px 0}.forge-field--roomy:not(.forge-field--dense) ::slotted([slot=member]){margin:6px 12px 6px 0}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=member]){margin:2px 6px 2px 0}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted([slot=member]){--forge-chip-min-height:20px}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=member]){--forge-chip-min-height:16px}.forge-field ::slotted(input){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-weight:400;font-weight:var(--mdc-typography-body1-font-weight,400);letter-spacing:.03125em;letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body1-text-transform,inherit);align-self:flex-end;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;-webkit-transition:opacity 150ms 0s cubic-bezier(.4, 0, .2, 1);transition:opacity 150ms 0s cubic-bezier(.4, 0, .2, 1);border:none;background:0 0;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:0;line-height:normal;min-width:0}.forge-field ::slotted(input)::-webkit-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input)::-moz-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input):-ms-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input)::-ms-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input)::placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input):invalid{-webkit-box-shadow:none;box-shadow:none}.forge-field ::slotted(input):-webkit-autofill{z-index:auto!important}.forge-field:not(.forge-field--disabled) ::slotted(input){color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-field--disabled ::slotted(input){color:rgba(0,0,0,.6);color:var(--forge-theme-form-field-text-disabled-on-background,rgba(0,0,0,.6));cursor:not-allowed}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(input){font-size:1rem;font-size:var(--forge-chip-field-font-size, 1rem)}.forge-field--roomy:not(.forge-field--dense) ::slotted(input){font-size:1rem;font-size:var(--forge-chip-field-font-size, 1rem)}.forge-field--dense:not(.forge-field--roomy) ::slotted(input){font-size:.875rem;font-size:var(--forge-chip-field-font-size, .875rem)}.forge-field ::slotted(input){-webkit-box-flex:1;flex:1 1 0.0001px;min-width:40px;display:block;align-self:flex-start;padding:0}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(input){margin:4px 0}.forge-field--roomy:not(.forge-field--dense) ::slotted(input){margin:6px 0}.forge-field--dense:not(.forge-field--roomy) ::slotted(input){margin:2px 0}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(input){height:1rem;line-height:1rem}.forge-field--roomy:not(.forge-field--dense) ::slotted(input){height:1.25rem;line-height:1.25rem}.forge-field--dense:not(.forge-field--roomy) ::slotted(input){height:1rem;line-height:1rem}.forge-field ::slotted([slot=leading]){grid-column-start:leading;grid-column-end:input;align-self:flex-start}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted([slot=leading]){margin-top:5px;margin-bottom:5px}.forge-field--roomy:not(.forge-field--dense) ::slotted([slot=leading]){margin-top:10px;margin-bottom:10px}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=leading]){margin-top:0;margin-bottom:0}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=leading]){padding-top:0;padding-bottom:0}.forge-field ::slotted([slot=trailing]){grid-column-start:trailing;grid-column-end:addon-end;display:-webkit-box;display:flex;-webkit-box-align:start;align-items:flex-start;align-self:flex-start}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted([slot=trailing]){margin-top:5px;margin-bottom:5px}.forge-field--roomy:not(.forge-field--dense) ::slotted([slot=trailing]){margin-top:10px;margin-bottom:10px}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=trailing]){margin-top:0;margin-bottom:0}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=trailing]){padding-top:0;padding-bottom:0}.forge-field--addon-end .forge-field__addon-end-container{grid-column-start:addon-end;grid-column-end:end;display:-webkit-box;display:flex;-webkit-box-align:start;align-items:flex-start;align-self:flex-start}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted([slot=addon-end]){margin-top:5px;margin-bottom:5px}.forge-field--roomy:not(.forge-field--dense) ::slotted([slot=addon-end]){margin-top:10px;margin-bottom:10px}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=addon-end]){margin-top:0;margin-bottom:0}.forge-field ::slotted(forge-icon-button){display:-webkit-inline-box!important;display:inline-flex!important}:host{display:block;contain:layout}:host([hidden]){display:none}';\n\nexport interface IChipFieldComponent extends IFieldComponent { }\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-chip-field': IChipFieldComponent;\n }\n\n interface HTMLElementEventMap {\n 'forge-chip-field-member-added': CustomEvent<string>;\n 'forge-chip-field-member-removed': CustomEvent<HTMLElement>;\n }\n}\n\n/**\n * The web component class behind the `<forge-chip-field>` custom element.\n * \n * @tag forge-chip-field\n */\n@CustomElement({\n name: CHIP_FIELD_CONSTANTS.elementName,\n dependencies: [ChipComponent]\n})\nexport class ChipFieldComponent extends FieldComponent<ChipFieldFoundation> implements IChipFieldComponent {\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new ChipFieldFoundation(new ChipFieldAdapter(this));\n }\n}\n", "import { IBaseComponentDelegateConfig } from '../core/delegates/base-component-delegate';\nimport { FormFieldComponentDelegate, IFormFieldComponentDelegateOptions } from '../core/delegates/form-field-component-delegate';\nimport { IChipFieldComponent } from './chip-field';\nimport { CHIP_FIELD_CONSTANTS } from './chip-field-constants';\n\nexport type ChipFieldComponentDelegateProps = Partial<IChipFieldComponent>;\nexport interface IChipFieldComponentDelegateOptions extends IFormFieldComponentDelegateOptions {\n id?: string;\n label?: string;\n type?: string;\n value?: string;\n helperText?: string;\n placeholder?: string;\n leadingElement?: HTMLElement;\n trailingElement?: HTMLElement;\n}\nexport interface IChipFieldComponentDelegateConfig extends IBaseComponentDelegateConfig<IChipFieldComponent, IChipFieldComponentDelegateOptions> {}\n\nexport class ChipFieldComponentDelegate extends FormFieldComponentDelegate<IChipFieldComponent, IChipFieldComponentDelegateOptions> {\n private _inputElement: HTMLInputElement;\n private _labelElement: HTMLLabelElement | undefined;\n private _helperTextElement: HTMLSpanElement | undefined;\n\n constructor(config?: IChipFieldComponentDelegateConfig) {\n super(config);\n }\n\n protected _build(): IChipFieldComponent {\n const chipField = document.createElement(CHIP_FIELD_CONSTANTS.elementName);\n\n this._inputElement = this._buildInputElement(chipField);\n\n if (this._config.options?.leadingElement) {\n this._config.options.leadingElement.slot = 'leading';\n chipField.appendChild(this._config.options.leadingElement);\n }\n if (this._config.options?.trailingElement) {\n this._config.options.trailingElement.slot = 'trailing';\n chipField.appendChild(this._config.options.trailingElement);\n }\n\n chipField.appendChild(this._inputElement);\n return chipField;\n }\n\n protected override _configure(): void {\n if (this._config.options?.helperText) {\n this.setHelperText(this._config.options.helperText);\n }\n if (typeof this._config.options?.label === 'string') {\n this._createLabel(this._config.options.label);\n }\n }\n\n public get value(): string {\n return this._inputElement.value;\n }\n public set value(value: string) {\n this._inputElement.value = value;\n }\n\n public get disabled(): boolean {\n return this._inputElement.disabled;\n }\n public set disabled(value: boolean) {\n this._inputElement.disabled = value;\n }\n\n public get invalid(): boolean {\n return this._element.invalid || false;\n }\n public set invalid(value: boolean) {\n this._element.invalid = value;\n }\n\n public get inputElement(): HTMLInputElement {\n return this._inputElement;\n }\n\n public get labelElement(): HTMLLabelElement | undefined {\n return this._labelElement;\n }\n\n public onChange(listener: (value: string) => void): void {\n this._inputElement.addEventListener('input', evt => listener((evt.target as HTMLInputElement).value));\n }\n\n public onFocus(listener: (evt: Event) => void): void {\n this._inputElement.addEventListener('focus', evt => listener(evt));\n }\n\n public onBlur(listener: (evt: Event) => void): void {\n this._inputElement.addEventListener('blur', evt => listener(evt));\n }\n\n public setLabel(text: string | null): void {\n if (text) {\n if (this._labelElement) {\n this._labelElement.textContent = text;\n } else {\n this._createLabel(text);\n }\n } else if (this._labelElement) {\n this._element.removeChild(this._labelElement);\n this._labelElement = undefined;\n }\n }\n\n public setHelperText(text: string | null): void {\n if (text) {\n if (!this._helperTextElement) {\n this._helperTextElement = document.createElement('span');\n this._helperTextElement.slot = 'helper-text';\n this._element.appendChild(this._helperTextElement);\n }\n this._helperTextElement.textContent = text;\n } else if (this._helperTextElement) {\n this._element.removeChild(this._helperTextElement);\n this._helperTextElement = undefined;\n }\n }\n\n public floatLabel(value: boolean): void {\n this._element.floatLabel(value);\n }\n\n private _createLabel(text: string): void {\n this._labelElement = document.createElement('label');\n this._labelElement.textContent = text;\n if (this._config.options?.id) {\n this._labelElement.setAttribute('for', this._config.options.id);\n }\n this._element.appendChild(this._labelElement);\n }\n\n private _buildInputElement(chipField: IChipFieldComponent): HTMLInputElement {\n const inputElement = document.createElement('input');\n inputElement.type = this._config.options?.type || 'text';\n\n if (this._config.options?.value !== undefined) {\n inputElement.value = this._config.options.value;\n }\n if (this._config.options?.id) {\n inputElement.id = this._config.options.id;\n }\n if (typeof this._config.options?.placeholder === 'string') {\n inputElement.placeholder = this._config.options?.placeholder;\n }\n\n chipField.appendChild(inputElement);\n return inputElement;\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { ChipFieldComponent } from './chip-field';\n\nexport * from './chip-field-adapter';\nexport * from './chip-field-component-delegate';\nexport * from './chip-field-constants';\nexport * from './chip-field-foundation';\nexport * from './chip-field';\n\nexport function defineChipFieldComponent(): void {\n defineCustomElement(ChipFieldComponent);\n}\n"],
5
- "mappings": "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",
6
- "names": ["elementName", "COMPONENT_NAME_PREFIX", "classes", "slots", "selectors", "events", "CHIP_FIELD_CONSTANTS", "ChipFieldAdapter", "FieldAdapter", "component", "CHIP_FIELD_CONSTANTS", "getShadowElement", "type", "callback", "listener", "_a", "target", "ChipFieldFoundation", "FieldFoundation", "_adapter", "evt", "event", "input", "members", "i", "member", "nextMember", "previousMember", "ele", "getActiveElement", "cleanInputValue", "CHIP_FIELD_CONSTANTS", "memberToRemove", "x", "template", "styles", "ChipFieldComponent", "FieldComponent", "attachShadowTemplate", "ChipFieldFoundation", "ChipFieldAdapter", "__decorateClass", "CustomElement", "CHIP_FIELD_CONSTANTS", "ChipComponent", "ChipFieldComponentDelegate", "FormFieldComponentDelegate", "config", "_a", "_b", "chipField", "CHIP_FIELD_CONSTANTS", "value", "listener", "evt", "text", "_c", "_d", "_e", "inputElement", "defineChipFieldComponent", "defineCustomElement", "ChipFieldComponent"]
7
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2023 Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- import{c as le}from"./chunk.NW7NV2A2.js";import{a as re,b as pe}from"./chunk.MLV25D2G.js";import{b as Q}from"./chunk.UT7QUGAO.js";import{a as x}from"./chunk.44IJE5UL.js";import{a as se}from"./chunk.GO5A4GKZ.js";import{a as ie}from"./chunk.MHOS3IHQ.js";import{h as ae,i as ue}from"./chunk.ESR2NHOS.js";import{b as ne}from"./chunk.KU5CXXGS.js";import{c as te}from"./chunk.KE6GOYAB.js";import{e as ee}from"./chunk.RG6CDWEX.js";import{b as Z}from"./chunk.VAKNDCLP.js";import{a as y,e as oe}from"./chunk.V7WKXEZC.js";import{c as V,g as q,h as z}from"./chunk.MZLPUI6R.js";import{a as L}from"./chunk.YI4JTY4T.js";import{d as X,l as J,m as j}from"./chunk.JHBCYICS.js";import{a as $}from"./chunk.ARJ3EVVO.js";import{a as Y}from"./chunk.Y66GSZJB.js";import{a as G}from"./chunk.G5MGGEFP.js";import{a}from"./chunk.KTGSZEAG.js";import{a as R,b as K,c as W}from"./chunk.BE7PZANN.js";import{a as U,e as H,g as C}from"./chunk.Y4GKBJGI.js";import{m as M,r as N,s as k,u as A}from"./chunk.PN26D52V.js";import{a as S,b as h,c as F,j as w,k as g,l as P,n as D,o as B}from"./chunk.J2M2MXP2.js";import{a as T,f as p}from"./chunk.MCIQXNKY.js";var O=`${K}autocomplete`,fe={MODE:"mode",MULTIPLE:"multiple",DEBOUNCE:"debounce",FILTER_ON_FOCUS:"filter-on-focus",ALLOW_UNMATCHED:"allow-unmatched",POPUP_TARGET:"popup-target",POPUP_CLASSES:"popup-classes",OPTION_LIMIT:"option-limit",OBSERVE_SCROLL:"observe-scroll",OBSERVE_SCROLL_THRESHOLD:"observe-scroll-threshold",SYNC_POPUP_WIDTH:"sync-popup-width",OPEN:"open",MATCH_KEY:"match-key",FILTER_TEXT:"filter-text",DROPDOWN_ICON_OPEN:"data-forge-dropdown-icon-open"},ve={INPUT:se.selectors.INPUT,DROPDOWN_ICON:"[data-forge-dropdown-icon],[data-forge-dropdown-icon],[forge-dropdown-icon],.forge-dropdown-icon",CLEAR_BUTTON:"[data-forge-autocomplete-clear],[forge-autocomplete-clear]"},ge={DEFAULT_DEBOUNCE_TIME:500,NUM_SKELETON_ITEMS:3},be={CHANGE:`${O}-change`,SELECT:`${O}-select`,SCROLLED_BOTTOM:`${O}-scrolled-bottom`},o={elementName:O,attributes:fe,selectors:ve,numbers:ge,events:be},de=(e=>(e.Default="default",e.Stateless="stateless",e))(de||{});var I=class extends G{constructor(e){super(e);this.setInputElement()}setInputElement(){let e=N(this._component,o.selectors.INPUT,!1);return e.length&&(this._inputElement=e[0]),this._inputElement}setInputAttribute(e,t){this._inputElement.setAttribute(e,t)}addInputListener(e,t){this._inputElement.addEventListener(e,t)}removeInputListener(e,t){this._inputElement.removeEventListener(e,t)}initializeInputAccessibility(e){this._inputElement.setAttribute("autocomplete","off"),this._inputElement.setAttribute("role","combobox"),this._inputElement.setAttribute("aria-live","polite"),this._inputElement.setAttribute("aria-atomic","true"),this._inputElement.setAttribute("aria-haspopup","true"),this._inputElement.setAttribute("aria-expanded","false"),this._inputElement.setAttribute("aria-autocomplete","list")}isWrappingChipField(){return!!this._component.querySelector(x.elementName)}show(e,t){this._targetElement=this._getTargetElement(t),this._targetElement&&(this._listDropdown=new ae(this._targetElement,e),this._listDropdown.open(),this._inputElement.setAttribute("aria-expanded","true"),this._inputElement.setAttribute("aria-controls",`list-dropdown-popup-${e.id}`),this._tryToggleDropdownIconRotation(!0))}hide(e){if(!this._listDropdown)return;let{targetElement:t}=this._listDropdown.dropdownElement;t.removeEventListener(y.events.BLUR,e),this.setBusyVisibility(!1),this._tryToggleDropdownIconRotation(!1),this._inputElement.removeAttribute("aria-activedescendant"),this._inputElement.removeAttribute("aria-controls"),this._inputElement.setAttribute("aria-expanded","false"),this._listDropdown.close(),this._listDropdown=void 0}setBusyVisibility(e){var t;(t=this._listDropdown)==null||t.setBusyVisibility(e)}toggleOptionMultiple(e,t){var i;(i=this._listDropdown)==null||i.toggleOptionMultiple(e,t)}setDismissListener(e){if(!this._listDropdown||!this._listDropdown.dropdownElement)return;let t=this._listDropdown.dropdownElement;t.targetElement&&t.targetElement.addEventListener(y.events.BLUR,e)}focus(){window.requestAnimationFrame(()=>this._inputElement.focus())}setOptions(e){var t;(t=this._listDropdown)==null||t.setOptions(e)}appendOptions(e){var t;(t=this._listDropdown)==null||t.appendOptions(e)}setSelectedText(e){this._inputElement.value=e}getInputValue(){return this._inputElement.value}setInputValue(e){this._inputElement.value=e}selectInputValue(){window.requestAnimationFrame(()=>this._inputElement.select())}isFocusWithinPopup(e){return!this._listDropdown||!this._listDropdown.dropdownElement?!1:this._listDropdown.dropdownElement.contains(e)}hasFocus(){let e=k();return e===this._inputElement||this.isFocusWithinPopup(e)}hasInputElement(){return!!this._inputElement}setDropdownIconListener(e,t){window.requestAnimationFrame(()=>{let i=this._component.querySelector(o.selectors.DROPDOWN_ICON);i&&i.addEventListener(e,t)})}removeDropdownIconListener(e,t){let i=this._component.querySelector(o.selectors.DROPDOWN_ICON);i&&i.removeEventListener(e,t)}setClearButtonListener(e,t){window.requestAnimationFrame(()=>{let i=this._component.querySelector(o.selectors.CLEAR_BUTTON);i&&i.addEventListener(e,t)})}removeClearButtonListener(e,t){let i=this._component.querySelector(o.selectors.CLEAR_BUTTON);i&&i.removeEventListener(e,t)}propagateKey(e){var t;(t=this._listDropdown)==null||t.handleKey(e)}updateActiveDescendant(e){!this._targetElement||A(this._inputElement,!!e,"aria-activedescendant",e)}getTargetElementWidth(e){return this._targetElement||(this._targetElement=this._getTargetElement(e)),this._targetElement.getBoundingClientRect().width}getPopupElement(){var e,t;return(t=(e=this._listDropdown)==null?void 0:e.dropdownElement)!=null?t:null}activateFirstOption(){var e;(e=this._listDropdown)==null||e.activateFirstOption()}activateSelectedOption(){var e;(e=this._listDropdown)==null||e.activateSelectedOption()}activateOptionByIndex(e){var t;(t=this._listDropdown)==null||t.activateOption(e)}getActiveOptionIndex(){var e,t;return(t=(e=this._listDropdown)==null?void 0:e.getActiveOptionIndex())!=null?t:null}clearActiveOption(){var e;(e=this._listDropdown)==null||e.clearActiveOption()}setSelectedOptions(e){if(this._listDropdown){let t=e.map(i=>i.value);this._listDropdown.setSelectedValues(t)}}queueDropdownPositionUpdate(){!this.getPopupElement()||window.requestAnimationFrame(()=>{let e=this.getPopupElement();e==null||e.position()})}_getTargetElement(e){return e?this._component.querySelector(e)||this._getDefaultTargetElement():this._getDefaultTargetElement()}_getDefaultTargetElement(){let e=this._component.querySelector("forge-text-field");if(e&&e.shadowRoot){let i=C(e,re.selectors.ROOT);if(i)return i}let t=this._component.querySelector("forge-chip-field");if(t&&t.shadowRoot){let i=C(t,x.selectors.ROOT);if(i)return i}return this._component.querySelector("input")||this._component}_tryToggleDropdownIconRotation(e){let t=this._component.querySelector(o.selectors.DROPDOWN_ICON);t&&A(t,e,o.attributes.DROPDOWN_ICON_OPEN)}};var ce=(e=>(e[e.Option=0]="Option",e[e.Group=1]="Group",e))(ce||{});function b(u,d){let e=u.some(i=>h(i)&&w(i)&&i.hasOwnProperty("options")&&(i.hasOwnProperty("text")||i.hasOwnProperty("builder"))),t=u.some(i=>h(i)&&w(i)&&i.hasOwnProperty("label")&&i.hasOwnProperty("value"));return e&&d===1||t&&d===0}function he(u,d){return u.find(e=>e.value===d)}function v(u,d,e=null){return e?!(e in u.value)||!(e in d)?!1:D(u.value[e],d[e]):D(u.value,d)}var E=class extends ue{constructor(e){super();this._adapter=e;this._isInitialized=!1;this._isDropdownOpen=!1;this._mode="default";this._multiple=!1;this._debounce=o.numbers.DEFAULT_DEBOUNCE_TIME;this._allowUnmatched=!1;this._filterOnFocus=!0;this._options=[];this._filterText="";this._selectedOptions=[];this._values=[];this._pendingFilterPromises=[];this._matchKey=null;this._clickListener=t=>this._onClick(t),this._focusListener=()=>this._onFocus(),this._blurListener=t=>this._onBlur(t),this._keydownListener=t=>this._onKeydown(t),this._dropdownIconClickListener=t=>this._onDropdownIconClick(t),this._dropdownScrollEndListener=()=>this._onDropdownScrollEnd(),this._dropdownIconMouseDownListener=t=>this._onDropdownIconMouseDown(t),this._clearButtonListener=t=>this._onClear(t),this._dismissListener=()=>this._onDismiss(),this._activeChangeListener=t=>this._adapter.updateActiveDescendant(t),this._targetWidthCallback=()=>this._adapter.getTargetElementWidth(this._popupTarget),this._identifier=S()}async initialize(){if(!this._adapter.hasInputElement()&&!this._adapter.setInputElement())throw new Error("An input element is required as a child of the autocomplete component.");if(this._setInputListener(),this._setFilterCallback(),this._attachListeners(),this._initializeAccessibility(),this._values.length){if(!this._selectedOptions.length){try{await this._executeFilter()}catch(e){console.error(e)}this._updateSelectedOptions(this._values)}this._adapter.setSelectedText(this._getSelectedText())}this._isInitialized=!0}disconnect(){this._isInitialized&&(this._detachListeners(),this._isInitialized=!1),this._isDropdownOpen&&this._closeDropdown()}_attachListeners(){this._adapter.addInputListener("click",this._clickListener),this._adapter.addInputListener("focus",this._focusListener),this._adapter.addInputListener("blur",this._blurListener),this._adapter.addInputListener("input",this._inputListener),this._adapter.addInputListener("keydown",this._keydownListener),this._adapter.setDropdownIconListener("click",this._dropdownIconClickListener),this._adapter.setDropdownIconListener("mousedown",this._dropdownIconMouseDownListener),this._adapter.setClearButtonListener("click",this._clearButtonListener)}_detachListeners(){this._adapter.removeInputListener("click",this._clickListener),this._adapter.removeInputListener("focus",this._focusListener),this._adapter.removeInputListener("blur",this._blurListener),this._adapter.removeInputListener("input",this._inputListener),this._adapter.removeInputListener("keydown",this._keydownListener),this._adapter.removeDropdownIconListener("click",this._dropdownIconClickListener),this._adapter.removeDropdownIconListener("mousedown",this._dropdownIconMouseDownListener),this._adapter.removeClearButtonListener("click",this._clearButtonListener)}_setInputListener(){this._inputListener=e=>this._onInput(e)}_setFilterCallback(){this._filterFn=h(this._debounce)&&this._debounce>0?B(this._debounceFilter,this._debounce,!1):this._debounceFilter}_initializeAccessibility(){this._adapter.initializeInputAccessibility(this._identifier)}get _flatOptions(){return b(this._options,1)?this._options.reduce((e,t)=>e.concat(t.options),[]):this._options}_onClick(e){!this._isDropdownOpen&&this._filterOnFocus&&this._showDropdown()}_onDropdownIconMouseDown(e){e.preventDefault()}_onDropdownIconClick(e){this._isDropdownOpen?this._closeDropdown():(this._adapter.focus(),window.requestAnimationFrame(()=>this._showDropdown()))}_onClear(e){this._clearValue(),this._adapter.setSelectedText(this._getSelectedText())}_onDropdownScrollEnd(){this._adapter.emitHostEvent(o.events.SCROLLED_BOTTOM)}_onFocus(){!this._isDropdownOpen&&this._adapter.getInputValue()&&!L.isMobile&&this._adapter.selectInputValue()}_onBlur(e){this._adapter.isFocusWithinPopup(e.relatedTarget)||this._applyBlur()}_applyBlur(){this._isDropdownOpen&&this._closeDropdown(),this._mode!=="stateless"&&(this._selectedOptions.length?this._adapter.setSelectedText(this._getSelectedText()):this._allowUnmatched||(this._filterText="",this._adapter.setSelectedText("")))}_onInput(e){this._selectedOptions.length&&!this._multiple&&(!this._adapter.getInputValue()||this._allowUnmatched)&&!this._adapter.isWrappingChipField()&&(this._selectedOptions=[],this._values=[],this._emitChangeEvent()),this._filterText=this._adapter.getInputValue(),this._filterFn()}async _debounceFilter({checkFocus:e=!0}={}){if(!e&&!this._adapter.hasFocus()){this._pendingFilterPromises=[],this._isDropdownOpen&&this._closeDropdown();return}let t=this._filterText,i=this._executeFilter();this._pendingFilterPromises.push(i),this._isDropdownOpen?this._adapter.setBusyVisibility(!0):this._showDropdown({filter:!1});try{await i}catch(n){this._pendingFilterPromises=[],this._isDropdownOpen&&this._closeDropdown();return}if(t===this._filterText)this._pendingFilterPromises=[],this._onFilterComplete();else{let n=this._pendingFilterPromises.indexOf(i);n!==-1&&this._pendingFilterPromises.splice(n,1)}}_onKeydown(e){switch(e.key){case"Tab":this._isDropdownOpen&&!this._multiple&&this._selectActiveOption(!1);break;case"Esc":case"Escape":this._isDropdownOpen&&(e.preventDefault(),e.stopPropagation(),this._closeDropdown());break;case"Down":case"ArrowDown":e.preventDefault(),this._isDropdownOpen?this._adapter.propagateKey(e.key):this._showDropdown({activateFirst:!0,activateSelected:!0});break;case"Up":case"ArrowUp":e.preventDefault(),this._isDropdownOpen&&this._adapter.propagateKey(e.key);break;case"Enter":case"Home":case"End":this._isDropdownOpen&&(e.key==="Enter"&&e.stopPropagation(),e.preventDefault(),this._adapter.propagateKey(e.key));break;case"Backspace":case"Delete":let t=e.target,i=this._adapter.getInputValue(),n=t.value.substring(t.selectionStart,t.selectionEnd)===t.value,l=i.length===1&&t.selectionEnd===1,c=i.length===1&&t.selectionEnd===0,_=!i||n||l||c;!this._adapter.isWrappingChipField()&&_&&!this._multiple&&this._values.length&&this._clearValue();break}}_executeFilter(e=!0,t=!1){if(!this._filter||typeof this._filter!="function")throw new Error('A filter callback must be provided. Did you set the "filter" property?');let i=this._filter,n=e?this._filterText:"",l=t?this._getValue():null;return new Promise((c,_)=>Promise.resolve(i(n,l)).then(s=>{this._options=s,c(this._options)}).catch(s=>_(`An unexpected error occurred while filtering: ${s}`)))}_onFilterComplete(){if(!this._adapter.hasFocus()){this._isDropdownOpen&&this._closeDropdown();return}if(this._options.length){let e=this._allowUnmatched&&!this._selectedOptions.length;this._dropdownReady({userTriggered:e}),this._filterText&&this._adapter.activateFirstOption()}else this._closeDropdown()}_clearValue(){this._selectedOptions=[],this._values=[],this._isDropdownOpen&&(this._adapter.setSelectedOptions([]),this._adapter.clearActiveOption()),this._emitChangeEvent()}async _showDropdown({filter:e=!0,userTriggered:t=!0,activateFirst:i=!1,activateSelected:n=!1}={}){let l=this._allowUnmatched&&!this._selectedOptions.length;this._isDropdownOpen=!0;let c;if(this._optionBuilder){let s=this._optionBuilder;c=(m,f)=>s(m,this._filterText,f)}let _={options:this._options,multiple:this._multiple,selectedValues:[...this._values],id:`forge-autocomplete-${this._identifier}`,asyncStyle:"skeleton",optionLimit:this._optionLimit,popupClasses:this._popupClasses,headerBuilder:this._popupHeaderBuilder,footerBuilder:this._popupFooterBuilder,transform:s=>{if(this._filterText){let m=Y(s,this._filterText);if(m)return m}return s},allowBusy:!0,optionBuilder:c,syncWidth:this._syncPopupWidth,observeScroll:this._observeScroll,observeScrollThreshold:this._observeScrollThreshold,scrollEndListener:this._dropdownScrollEndListener,activeChangeCallback:this._activeChangeListener,targetWidthCallback:this._targetWidthCallback,selectCallback:s=>this._onSelect(s),closeCallback:()=>this._closeDropdown()};if(this._adapter.show(_,this._popupTarget),this._adapter.toggleHostAttribute(o.attributes.OPEN,this._isDropdownOpen),e){this._options.length&&this._adapter.setBusyVisibility(!0);try{await this._executeFilter(l)}catch(s){console.error(s)}this._updateSelectedOptions(this._values)}this._pendingFilterPromises.length||this._dropdownReady({userTriggered:t,activateFirst:i,activateSelected:n})}_dropdownReady({userTriggered:e=!0,activateFirst:t=!1,activateSelected:i=!1}={}){if(!this._isDropdownOpen||!this._options.length||e&&!this._adapter.hasFocus()){this._closeDropdown();return}this._sortSelectedOptions(),this._adapter.setBusyVisibility(!1),this._adapter.setOptions(this._options),this._adapter.setSelectedOptions(this._selectedOptions),this._adapter.setDismissListener(this._dismissListener),i&&this._selectedOptions.length?this._adapter.activateSelectedOption():t&&this._adapter.activateFirstOption()}_closeDropdown(){this._multiple&&(this._filterText=""),this._isDropdownOpen=!1,this._adapter.hide(this._dismissListener),this._sortSelectedOptions(),this._adapter.toggleHostAttribute(o.attributes.OPEN,this._isDropdownOpen)}_sortSelectedOptions(){if(this._multiple&&this._selectedOptions.length&&b(this._options,0)){let e=[],t=[];this._options.forEach(i=>{this._selectedOptions.find(n=>v(n,i.value,this._matchKey))?e.push(i):t.push(i)}),this._options=[...e,...t]}}async _onSelect(e,t=!0){if(this._valueChanging)return;if(this._mode==="stateless"){let n={value:e};this._adapter.emitHostEvent(o.events.SELECT,n,!0,!0)&&(this._filterText="",this._multiple||this._closeDropdown());return}let i=()=>{let n=this._flatOptions,l=n.find(s=>v(s,e,this._matchKey)),c=l?l.value:"",_=l?l.label:"";if(this._multiple){let s=n.findIndex(f=>v(f,e,this._matchKey));if(s>=0){let f=this._selectedOptions.some(me=>v(me,e,this._matchKey));this._adapter.toggleOptionMultiple(s,f)}let m=he(this._selectedOptions,c);if(m){let f=this._selectedOptions.indexOf(m);this._selectedOptions.splice(f,1)}else this._selectedOptions.push(l)}else h(c)?(this._selectedOptions[0]=l,this._filterText=_):(this._selectedOptions=[],this._filterText="");if(this._isDropdownOpen&&this._adapter.setSelectedOptions(this._selectedOptions),this._values=this._selectedOptions.map(s=>s.value),this._adapter.setSelectedText(this._getSelectedText()),!L.isMobile&&t&&this._adapter.selectInputValue(),this._multiple){let s=n.findIndex(f=>v(f,e,this._matchKey)),m=this._values.includes(e);this._adapter.toggleOptionMultiple(s,m)}this._emitChangeEvent(),this._tryUpdateDropdownPosition()};this._isDropdownOpen&&!this._multiple&&this._closeDropdown(),typeof this._beforeValueChange=="function"?(this._valueChanging=Promise.resolve(this._beforeValueChange.call(null,e,this._matchKey)),await this._valueChanging?i():this._tryUpdateDropdownPosition(),this._valueChanging=void 0):i()}_selectActiveOption(e=!0){let t=this._adapter.getActiveOptionIndex();if(typeof t=="number"&&t>=0){let i=this._flatOptions[t];i&&this._onSelect(i.value,e)}}_emitChangeEvent(){this._adapter.emitHostEvent(o.events.CHANGE,this._getValue(),!0)}_tryUpdateDropdownPosition(){this._isDropdownOpen&&this._adapter.queueDropdownPositionUpdate()}_getValue(){return this._values?this._values.length?this._multiple?[...this._values]:this._values[0]:this._multiple?[]:null:null}_getSelectedText(){return this._adapter.isWrappingChipField()?"":this._selectedTextBuilder?this._selectedTextBuilder(this._selectedOptions):this._multiple?this._values.length?`${this._values.length} ${this._values.length===1?"option":"options"} selected`:"":this._selectedOptions.filter(e=>e&&e.label).map(e=>e.label).join(" ").trim()}_onDismiss(){this._closeDropdown()}async _applyValue(e){let t=[];this._selectedOptions=[],Array.isArray(e)?t=e:t=h(e)?[e]:[],!this._multiple&&t.length>1&&(t=[t[0]]),b(t,0)?(this._values=t.map(n=>n.value),this._selectedOptions=t):this._values=t;let i=this._flatOptions;if(t.length&&i.length&&this._updateSelectedOptions(t),this._values.length&&!this._selectedOptions.length&&!!this._filter&&this._isInitialized){try{await this._executeFilter(!1,!0)}catch(n){console.error(n)}this._updateSelectedOptions(this._values)}this._multiple?this._filterText="":this._filterText=this._selectedOptions.length?this._selectedOptions[0].label:"",this._isInitialized&&this._adapter.setSelectedText(this._getSelectedText()),this._isDropdownOpen&&this._adapter.setSelectedOptions(this._selectedOptions)}_updateSelectedOptions(e){let t=[...this._flatOptions,...this._selectedOptions];if(this._selectedOptions.length&&(this._selectedOptions=[]),b(e,0))for(let i of e){let n=t.find(l=>v(l,i.value,this._matchKey));n?this._selectedOptions.push(n):this._selectedOptions.push(i)}else for(let i of e){let n=t.find(l=>v(l,i,this._matchKey));n?this._selectedOptions.push(n):this._allowUnmatched&&this._selectedOptions.push({label:i,value:i})}}get mode(){return this._mode}set mode(e){this._mode!==e&&(this._mode=e,this._mode==="stateless"&&(this._selectedOptions=[],this._isDropdownOpen&&this._closeDropdown()),this._adapter.setHostAttribute(o.attributes.MODE,this._mode))}get multiple(){return this._multiple}set multiple(e){this._multiple!==e&&(this._multiple=e,this._adapter.setHostAttribute(o.attributes.MULTIPLE,h(this._multiple)?this._multiple.toString():""))}get value(){return this._getValue()}set value(e){let t=[];e==null?t=[]:Array.isArray(e)?t=JSON.parse(JSON.stringify(e)):F(e)?t=[e]:t=[JSON.parse(JSON.stringify(e))],(t.length!==this._values.length||t.some(n=>!this._values.includes(n)))&&this._applyValue(e)}get filterOnFocus(){return this._filterOnFocus}set filterOnFocus(e){this._filterOnFocus!==e&&(this._filterOnFocus=e,this._adapter.setHostAttribute(o.attributes.FILTER_ON_FOCUS,h(this._filterOnFocus)?this._filterOnFocus.toString():""))}get allowUnmatched(){return this._allowUnmatched}set allowUnmatched(e){this._allowUnmatched!==e&&(this._allowUnmatched=e,h(this._allowUnmatched)&&this._adapter.setHostAttribute(o.attributes.ALLOW_UNMATCHED,this._allowUnmatched.toString()))}get matchKey(){return this._matchKey}set matchKey(e){this._matchKey!==e&&(this._matchKey=e)}get popupTarget(){return this._popupTarget}set popupTarget(e){this._popupTarget!==e&&(this._popupTarget=e)}get filterText(){return this._filterText}set filterText(e){this._filterText!==e&&(this._filterText=this._allowUnmatched?e:"",this._isInitialized&&this._allowUnmatched&&(this._adapter.setInputValue(this._filterText),this._isDropdownOpen&&this._debounceFilter({checkFocus:!1})))}get popupClasses(){return Array.isArray(this._popupClasses)?[...this._popupClasses]:[this._popupClasses]}set popupClasses(e){this._popupClasses!==e&&(this._popupClasses=Array.isArray(e)?[...e]:[e])}set popupHeaderBuilder(e){this._popupHeaderBuilder=e}set popupFooterBuilder(e){this._popupFooterBuilder=e}get syncPopupWidth(){return this._syncPopupWidth}set syncPopupWidth(e){this._syncPopupWidth!==e&&(this._syncPopupWidth=e)}get optionLimit(){return this._optionLimit}set optionLimit(e){this._optionLimit!==e&&(this._optionLimit=e)}get debounce(){return this._debounce}set debounce(e){this._debounce!==e&&(this._debounce=e,this._isInitialized&&this._setFilterCallback(),this._adapter.setHostAttribute(o.attributes.DEBOUNCE,h(this._debounce)?this._debounce.toString():""))}get optionBuilder(){return this._optionBuilder}set optionBuilder(e){this._optionBuilder=e}get filter(){return this._filter}set filter(e){this._filter!==e&&(this._filter=e,this._isInitialized&&this._values.length&&!this._flatOptions.length&&!!this._filter&&this._executeFilter().then(()=>{this._updateSelectedOptions(this._values),this._adapter.setSelectedText(this._getSelectedText())}))}get selectedTextBuilder(){return this._selectedTextBuilder}set selectedTextBuilder(e){this._selectedTextBuilder=e,this._selectedOptions.length&&this._adapter.setSelectedText(this._getSelectedText())}get observeScroll(){return this._observeScroll}set observeScroll(e){this._observeScroll=e}get observeScrollThreshold(){return this._observeScrollThreshold}set observeScrollThreshold(e){this._observeScrollThreshold=e}appendOptions(e){!this._isDropdownOpen||(this._options=[...this._options,...e],this._adapter.appendOptions(e))}get isInitialized(){return this._isInitialized}get open(){return this._isDropdownOpen}set open(e){this._isDropdownOpen!==e&&(e?this._showDropdown({userTriggered:!1}):this._closeDropdown())}get beforeValueChange(){return this._beforeValueChange}set beforeValueChange(e){e!==this._beforeValueChange&&(this._beforeValueChange=e)}get popupElement(){return this._adapter.getPopupElement()}};var Oe="<template><slot></slot></template>",Ie=":host{display:block}:host([hidden]){display:none}",r=class extends ie{constructor(){super();X.define([V,z,q]),H(this,Oe,Ie),this._foundation=new E(new I(this))}static get observedAttributes(){return[o.attributes.MODE,o.attributes.MULTIPLE,o.attributes.DEBOUNCE,o.attributes.FILTER_ON_FOCUS,o.attributes.ALLOW_UNMATCHED,o.attributes.POPUP_TARGET,o.attributes.POPUP_CLASSES,o.attributes.OBSERVE_SCROLL,o.attributes.OBSERVE_SCROLL_THRESHOLD,o.attributes.OPTION_LIMIT,o.attributes.SYNC_POPUP_WIDTH,o.attributes.OPEN,o.attributes.MATCH_KEY,o.attributes.FILTER_TEXT]}connectedCallback(){this.querySelector(o.selectors.INPUT)?this._foundation.initialize():M(this,o.selectors.INPUT).then(()=>this._foundation.initialize())}disconnectedCallback(){this._foundation.disconnect()}attributeChangedCallback(e,t,i){switch(super.attributeChangedCallback(e,t,i),e){case o.attributes.MODE:this.mode=i;break;case o.attributes.MULTIPLE:this.multiple=g(i);break;case o.attributes.DEBOUNCE:this.debounce=P(i);break;case o.attributes.FILTER_ON_FOCUS:this.filterOnFocus=g(i);break;case o.attributes.ALLOW_UNMATCHED:this.allowUnmatched=g(i);break;case o.attributes.POPUP_TARGET:this.popupTarget=i;break;case o.attributes.OPEN:this.open=g(i);break;case o.attributes.MATCH_KEY:this.matchKey=i;break;case o.attributes.FILTER_TEXT:this.filterText=i;break}}appendOptions(e){this._foundation.appendOptions(e)}openDropdown(){this.open=!0}closeDropdown(){this.open=!1}};p([a()],r.prototype,"mode",2),p([a()],r.prototype,"multiple",2),p([a()],r.prototype,"value",2),p([a()],r.prototype,"debounce",2),p([a()],r.prototype,"filterOnFocus",2),p([a()],r.prototype,"allowUnmatched",2),p([a()],r.prototype,"popupTarget",2),p([a()],r.prototype,"filterText",2),p([a()],r.prototype,"optionBuilder",2),p([a()],r.prototype,"filter",2),p([a()],r.prototype,"selectedTextBuilder",2),p([a()],r.prototype,"open",2),p([a()],r.prototype,"matchKey",2),p([a({set:!1})],r.prototype,"isInitialized",2),p([a({set:!1})],r.prototype,"popupElement",2),p([a()],r.prototype,"beforeValueChange",2),r=p([R({name:o.elementName,dependencies:[le,oe,te,ee,Q,ne,Z,J]})],r);var _e=class extends ${constructor(e){super(e)}_build(){let e=document.createElement(o.elementName);return this._attachTextField(e),e}get textFieldDelegate(){return this._textFieldDelegate}get value(){return this._element.value}set value(e){this._element.value=e}get disabled(){return this._textFieldDelegate.inputElement.disabled}set disabled(e){this._textFieldDelegate.inputElement.disabled=e}get invalid(){return this._textFieldDelegate.invalid||!1}set invalid(e){this._textFieldDelegate.invalid=e}onChange(e){this._element.addEventListener(o.events.CHANGE,t=>e(t.detail))}onFocus(e){this._textFieldDelegate.inputElement.addEventListener("focus",t=>e(t))}onBlur(e){this._textFieldDelegate.inputElement.addEventListener("blur",t=>e(t))}_attachTextField(e){var i,n,l,c,_,s;let t={props:T({},(n=(i=this._config.options)==null?void 0:i.textFieldDelegateConfig)==null?void 0:n.props),options:T({},(c=(l=this._config.options)==null?void 0:l.textFieldDelegateConfig)==null?void 0:c.options)};t.options||(t.options={}),((_=this._config.options)==null?void 0:_.useDropdownIcon)!==!1&&!((s=t.options)!=null&&s.trailingElement)&&(t.options.trailingElement=this._createDropdownIconElement()),this._textFieldDelegate=new pe(t),e.appendChild(this._textFieldDelegate.element)}_createDropdownIconElement(){let e={props:{slot:"trailing",name:"arrow_drop_down"},options:{attributes:{"forge-dropdown-icon":""}}};return new j(e).element}};function Rt(){U(r)}export{o as a,de as b,I as c,ce as d,b as e,he as f,v as g,E as h,r as i,_e as j,Rt as k};
7
- //# sourceMappingURL=chunk.DQJPIDVW.js.map