@spectrum-web-components/tags 0.8.14 → 0.8.15

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 (52) hide show
  1. package/custom-elements.json +6 -6
  2. package/package.json +32 -12
  3. package/sp-tag.dev.js +3 -0
  4. package/sp-tag.dev.js.map +7 -0
  5. package/sp-tag.js +3 -14
  6. package/sp-tag.js.map +7 -1
  7. package/sp-tags.dev.js +3 -0
  8. package/sp-tags.dev.js.map +7 -0
  9. package/sp-tags.js +3 -14
  10. package/sp-tags.js.map +7 -1
  11. package/src/Tag.dev.js +126 -0
  12. package/src/Tag.dev.js.map +7 -0
  13. package/src/Tag.js +104 -113
  14. package/src/Tag.js.map +7 -1
  15. package/src/Tags.dev.js +94 -0
  16. package/src/Tags.dev.js.map +7 -0
  17. package/src/Tags.js +87 -90
  18. package/src/Tags.js.map +7 -1
  19. package/src/index.dev.js +3 -0
  20. package/src/index.dev.js.map +7 -0
  21. package/src/index.js +3 -14
  22. package/src/index.js.map +7 -1
  23. package/src/spectrum-tag.css.dev.js +292 -0
  24. package/src/spectrum-tag.css.dev.js.map +7 -0
  25. package/src/spectrum-tag.css.js +3 -14
  26. package/src/spectrum-tag.css.js.map +7 -1
  27. package/src/spectrum-tags.css.dev.js +18 -0
  28. package/src/spectrum-tags.css.dev.js.map +7 -0
  29. package/src/spectrum-tags.css.js +3 -14
  30. package/src/spectrum-tags.css.js.map +7 -1
  31. package/src/tag.css.dev.js +334 -0
  32. package/src/tag.css.dev.js.map +7 -0
  33. package/src/tag.css.js +3 -14
  34. package/src/tag.css.js.map +7 -1
  35. package/src/tags.css.dev.js +12 -0
  36. package/src/tags.css.dev.js.map +7 -0
  37. package/src/tags.css.js +3 -14
  38. package/src/tags.css.js.map +7 -1
  39. package/stories/tags-sizes.stories.js +15 -24
  40. package/stories/tags-sizes.stories.js.map +7 -1
  41. package/stories/tags.stories.js +14 -25
  42. package/stories/tags.stories.js.map +7 -1
  43. package/test/benchmark/basic-test.js +6 -17
  44. package/test/benchmark/basic-test.js.map +7 -1
  45. package/test/tag.test.js +93 -94
  46. package/test/tag.test.js.map +7 -1
  47. package/test/tags-sizes.test-vrt.js +4 -15
  48. package/test/tags-sizes.test-vrt.js.map +7 -1
  49. package/test/tags.test-vrt.js +4 -15
  50. package/test/tags.test-vrt.js.map +7 -1
  51. package/test/tags.test.js +173 -166
  52. package/test/tags.test.js.map +7 -1
@@ -4,7 +4,7 @@
4
4
  "modules": [
5
5
  {
6
6
  "kind": "javascript-module",
7
- "path": "sp-tag.ts",
7
+ "path": "sp-tag.js",
8
8
  "declarations": [],
9
9
  "exports": [
10
10
  {
@@ -19,7 +19,7 @@
19
19
  },
20
20
  {
21
21
  "kind": "javascript-module",
22
- "path": "sp-tags.ts",
22
+ "path": "sp-tags.js",
23
23
  "declarations": [],
24
24
  "exports": [
25
25
  {
@@ -34,7 +34,7 @@
34
34
  },
35
35
  {
36
36
  "kind": "javascript-module",
37
- "path": "src/Tag.ts",
37
+ "path": "src/Tag.js",
38
38
  "declarations": [
39
39
  {
40
40
  "kind": "class",
@@ -184,14 +184,14 @@
184
184
  "name": "Tag",
185
185
  "declaration": {
186
186
  "name": "Tag",
187
- "module": "src/Tag.ts"
187
+ "module": "src/Tag.js"
188
188
  }
189
189
  }
190
190
  ]
191
191
  },
192
192
  {
193
193
  "kind": "javascript-module",
194
- "path": "src/Tags.ts",
194
+ "path": "src/Tags.js",
195
195
  "declarations": [
196
196
  {
197
197
  "kind": "class",
@@ -281,7 +281,7 @@
281
281
  "name": "Tags",
282
282
  "declaration": {
283
283
  "name": "Tags",
284
- "module": "src/Tags.ts"
284
+ "module": "src/Tags.js"
285
285
  }
286
286
  }
287
287
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/tags",
3
- "version": "0.8.14",
3
+ "version": "0.8.15",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -20,13 +20,33 @@
20
20
  "module": "./src/index.js",
21
21
  "type": "module",
22
22
  "exports": {
23
- ".": "./src/index.js",
24
- "./src/*": "./src/*",
23
+ ".": {
24
+ "development": "./src/index.dev.js",
25
+ "default": "./src/index.js"
26
+ },
25
27
  "./package.json": "./package.json",
26
- "./sp-tags": "./sp-tags.js",
27
- "./sp-tags.js": "./sp-tags.js",
28
- "./sp-tag": "./sp-tag.js",
29
- "./sp-tag.js": "./sp-tag.js"
28
+ "./src/Tag.js": {
29
+ "development": "./src/Tag.dev.js",
30
+ "default": "./src/Tag.js"
31
+ },
32
+ "./src/Tags.js": {
33
+ "development": "./src/Tags.dev.js",
34
+ "default": "./src/Tags.js"
35
+ },
36
+ "./src/index.js": {
37
+ "development": "./src/index.dev.js",
38
+ "default": "./src/index.js"
39
+ },
40
+ "./src/tag.css.js": "./src/tag.css.js",
41
+ "./src/tags.css.js": "./src/tags.css.js",
42
+ "./sp-tags.js": {
43
+ "development": "./sp-tags.dev.js",
44
+ "default": "./sp-tags.js"
45
+ },
46
+ "./sp-tag.js": {
47
+ "development": "./sp-tag.dev.js",
48
+ "default": "./sp-tag.js"
49
+ }
30
50
  },
31
51
  "scripts": {
32
52
  "test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
@@ -46,10 +66,10 @@
46
66
  "lit-html"
47
67
  ],
48
68
  "dependencies": {
49
- "@spectrum-web-components/base": "^0.5.8",
50
- "@spectrum-web-components/button": "^0.18.0",
51
- "@spectrum-web-components/reactive-controllers": "^0.2.4",
52
- "@spectrum-web-components/shared": "^0.14.4",
69
+ "@spectrum-web-components/base": "^0.6.0",
70
+ "@spectrum-web-components/button": "^0.18.1",
71
+ "@spectrum-web-components/reactive-controllers": "^0.2.5",
72
+ "@spectrum-web-components/shared": "^0.14.5",
53
73
  "tslib": "^2.0.0"
54
74
  },
55
75
  "devDependencies": {
@@ -61,5 +81,5 @@
61
81
  "sideEffects": [
62
82
  "./sp-*.js"
63
83
  ],
64
- "gitHead": "3be62133721efba844cd7032566a2c49ed6d9875"
84
+ "gitHead": "50cac779bbb0d6735c2061f1eceb86b9daf9b22b"
65
85
  }
package/sp-tag.dev.js ADDED
@@ -0,0 +1,3 @@
1
+ import { Tag } from "./src/Tag.dev.js";
2
+ customElements.define("sp-tag", Tag);
3
+ //# sourceMappingURL=sp-tag.dev.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["sp-tag.ts"],
4
+ "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { Tag } from './src/Tag.dev.js'\n\ncustomElements.define('sp-tag', Tag);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-tag': Tag;\n }\n}\n"],
5
+ "mappings": "AAWA;AAEA,eAAe,OAAO,UAAU,GAAG;",
6
+ "names": []
7
+ }
package/sp-tag.js CHANGED
@@ -1,14 +1,3 @@
1
- /*
2
- Copyright 2020 Adobe. All rights reserved.
3
- This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
- you may not use this file except in compliance with the License. You may obtain a copy
5
- of the License at http://www.apache.org/licenses/LICENSE-2.0
6
-
7
- Unless required by applicable law or agreed to in writing, software distributed under
8
- the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
- OF ANY KIND, either express or implied. See the License for the specific language
10
- governing permissions and limitations under the License.
11
- */
12
- import { Tag } from './src/Tag.js';
13
- customElements.define('sp-tag', Tag);
14
- //# sourceMappingURL=sp-tag.js.map
1
+ import { Tag } from "./src/Tag.js";
2
+ customElements.define("sp-tag", Tag);
3
+ //# sourceMappingURL=sp-tag.js.map
package/sp-tag.js.map CHANGED
@@ -1 +1,7 @@
1
- {"version":3,"file":"sp-tag.js","sourceRoot":"","sources":["sp-tag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;EAUE;AACF,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC","sourcesContent":["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { Tag } from './src/Tag.js';\n\ncustomElements.define('sp-tag', Tag);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-tag': Tag;\n }\n}\n"]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["sp-tag.ts"],
4
+ "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { Tag } from './src/Tag.js';\n\ncustomElements.define('sp-tag', Tag);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-tag': Tag;\n }\n}\n"],
5
+ "mappings": "AAWA;AAEA,eAAe,OAAO,UAAU,GAAG;",
6
+ "names": []
7
+ }
package/sp-tags.dev.js ADDED
@@ -0,0 +1,3 @@
1
+ import { Tags } from "./src/Tags.dev.js";
2
+ customElements.define("sp-tags", Tags);
3
+ //# sourceMappingURL=sp-tags.dev.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["sp-tags.ts"],
4
+ "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { Tags } from './src/Tags.dev.js'\n\ncustomElements.define('sp-tags', Tags);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-tags': Tags;\n }\n}\n"],
5
+ "mappings": "AAWA;AAEA,eAAe,OAAO,WAAW,IAAI;",
6
+ "names": []
7
+ }
package/sp-tags.js CHANGED
@@ -1,14 +1,3 @@
1
- /*
2
- Copyright 2020 Adobe. All rights reserved.
3
- This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
- you may not use this file except in compliance with the License. You may obtain a copy
5
- of the License at http://www.apache.org/licenses/LICENSE-2.0
6
-
7
- Unless required by applicable law or agreed to in writing, software distributed under
8
- the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
- OF ANY KIND, either express or implied. See the License for the specific language
10
- governing permissions and limitations under the License.
11
- */
12
- import { Tags } from './src/Tags.js';
13
- customElements.define('sp-tags', Tags);
14
- //# sourceMappingURL=sp-tags.js.map
1
+ import { Tags } from "./src/Tags.js";
2
+ customElements.define("sp-tags", Tags);
3
+ //# sourceMappingURL=sp-tags.js.map
package/sp-tags.js.map CHANGED
@@ -1 +1,7 @@
1
- {"version":3,"file":"sp-tags.js","sourceRoot":"","sources":["sp-tags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;EAUE;AACF,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC","sourcesContent":["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { Tags } from './src/Tags.js';\n\ncustomElements.define('sp-tags', Tags);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-tags': Tags;\n }\n}\n"]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["sp-tags.ts"],
4
+ "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { Tags } from './src/Tags.js';\n\ncustomElements.define('sp-tags', Tags);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-tags': Tags;\n }\n}\n"],
5
+ "mappings": "AAWA;AAEA,eAAe,OAAO,WAAW,IAAI;",
6
+ "names": []
7
+ }
package/src/Tag.dev.js ADDED
@@ -0,0 +1,126 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __decorateClass = (decorators, target, key, kind) => {
4
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
+ if (decorator = decorators[i])
7
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
+ if (kind && result)
9
+ __defProp(target, key, result);
10
+ return result;
11
+ };
12
+ import {
13
+ html,
14
+ SizedMixin,
15
+ SpectrumElement
16
+ } from "@spectrum-web-components/base";
17
+ import { property } from "@spectrum-web-components/base/src/decorators.js";
18
+ import "@spectrum-web-components/button/sp-clear-button.js";
19
+ import styles from "./tag.css.js";
20
+ export class Tag extends SizedMixin(SpectrumElement, {
21
+ validSizes: ["s", "m", "l"]
22
+ }) {
23
+ constructor() {
24
+ super();
25
+ this.deletable = false;
26
+ this.disabled = false;
27
+ this.readonly = false;
28
+ this.handleFocusin = () => {
29
+ this.addEventListener("focusout", this.handleFocusout);
30
+ this.addEventListener("keydown", this.handleKeydown);
31
+ };
32
+ this.handleFocusout = () => {
33
+ this.removeEventListener("keydown", this.handleKeydown);
34
+ this.removeEventListener("focusout", this.handleFocusout);
35
+ };
36
+ this.handleKeydown = (event) => {
37
+ if (!this.deletable) {
38
+ return;
39
+ }
40
+ const { code } = event;
41
+ switch (code) {
42
+ case "Backspace":
43
+ case "Space":
44
+ case "Delete":
45
+ this.delete();
46
+ return;
47
+ default:
48
+ return;
49
+ }
50
+ };
51
+ this.addEventListener("focusin", this.handleFocusin);
52
+ }
53
+ static get styles() {
54
+ return [styles];
55
+ }
56
+ get hasIcon() {
57
+ return !!this.querySelector('[slot="icon"]');
58
+ }
59
+ get hasAvatar() {
60
+ return !!this.querySelector('[slot="avatar"]');
61
+ }
62
+ delete() {
63
+ if (this.readonly) {
64
+ return;
65
+ }
66
+ this.dispatchEvent(new Event("delete", {
67
+ bubbles: true
68
+ }));
69
+ }
70
+ render() {
71
+ const slots = [];
72
+ if (this.hasAvatar) {
73
+ slots.push(html`
74
+ <slot name="avatar"></slot>
75
+ `);
76
+ }
77
+ if (this.hasIcon) {
78
+ slots.push(html`
79
+ <slot name="icon"></slot>
80
+ `);
81
+ }
82
+ return html`
83
+ ${slots}
84
+ <span class="label"><slot></slot></span>
85
+ ${this.deletable ? html`
86
+ <sp-clear-button
87
+ class="clear-button"
88
+ ?disabled=${this.disabled}
89
+ label="Remove"
90
+ size="s"
91
+ tabindex="-1"
92
+ @click=${this.delete}
93
+ ></sp-clear-button>
94
+ ` : html``}
95
+ `;
96
+ }
97
+ firstUpdated(changes) {
98
+ super.firstUpdated(changes);
99
+ if (!this.hasAttribute("role")) {
100
+ this.setAttribute("role", "listitem");
101
+ }
102
+ if (this.deletable) {
103
+ this.setAttribute("tabindex", !this.disabled && this.matches(":first-of-type:not([disabled])") ? "0" : "-1");
104
+ }
105
+ }
106
+ updated(changes) {
107
+ super.updated(changes);
108
+ if (changes.has("disabled")) {
109
+ if (this.disabled) {
110
+ this.setAttribute("aria-disabled", "true");
111
+ } else {
112
+ this.removeAttribute("aria-disabled");
113
+ }
114
+ }
115
+ }
116
+ }
117
+ __decorateClass([
118
+ property({ type: Boolean, reflect: true })
119
+ ], Tag.prototype, "deletable", 2);
120
+ __decorateClass([
121
+ property({ type: Boolean, reflect: true })
122
+ ], Tag.prototype, "disabled", 2);
123
+ __decorateClass([
124
+ property({ type: Boolean, reflect: true })
125
+ ], Tag.prototype, "readonly", 2);
126
+ //# sourceMappingURL=Tag.dev.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["Tag.ts"],
4
+ "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SizedMixin,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\nimport '@spectrum-web-components/button/sp-clear-button.js';\n\nimport styles from './tag.css.js';\n\n/**\n * @element sp-tag\n *\n * @slot - text content for labeling the tag\n * @slot avatar - an avatar element to display within the Tag\n * @slot icon - an icon element to display within the Tag\n */\nexport class Tag extends SizedMixin(SpectrumElement, {\n validSizes: ['s', 'm', 'l'],\n}) {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ type: Boolean, reflect: true })\n public deletable = false;\n\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n @property({ type: Boolean, reflect: true })\n public readonly = false;\n\n private get hasIcon(): boolean {\n return !!this.querySelector('[slot=\"icon\"]');\n }\n\n private get hasAvatar(): boolean {\n return !!this.querySelector('[slot=\"avatar\"]');\n }\n\n constructor() {\n super();\n this.addEventListener('focusin', this.handleFocusin);\n }\n\n private handleFocusin = (): void => {\n this.addEventListener('focusout', this.handleFocusout);\n this.addEventListener('keydown', this.handleKeydown);\n };\n\n private handleFocusout = (): void => {\n this.removeEventListener('keydown', this.handleKeydown);\n this.removeEventListener('focusout', this.handleFocusout);\n };\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (!this.deletable) {\n return;\n }\n const { code } = event;\n switch (code) {\n case 'Backspace':\n case 'Space':\n case 'Delete':\n this.delete();\n return;\n default:\n return;\n }\n };\n\n private delete(): void {\n if (this.readonly) {\n return;\n }\n this.dispatchEvent(\n new Event('delete', {\n bubbles: true,\n })\n );\n }\n\n protected override render(): TemplateResult {\n const slots: TemplateResult[] = [];\n if (this.hasAvatar) {\n slots.push(\n html`\n <slot name=\"avatar\"></slot>\n `\n );\n }\n if (this.hasIcon) {\n slots.push(\n html`\n <slot name=\"icon\"></slot>\n `\n );\n }\n return html`\n ${slots}\n <span class=\"label\"><slot></slot></span>\n ${this.deletable\n ? html`\n <sp-clear-button\n class=\"clear-button\"\n ?disabled=${this.disabled}\n label=\"Remove\"\n size=\"s\"\n tabindex=\"-1\"\n @click=${this.delete}\n ></sp-clear-button>\n `\n : html``}\n `;\n }\n\n protected override firstUpdated(changes: PropertyValues): void {\n super.firstUpdated(changes);\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'listitem');\n }\n if (this.deletable) {\n this.setAttribute(\n 'tabindex',\n !this.disabled && this.matches(':first-of-type:not([disabled])')\n ? '0'\n : '-1'\n );\n }\n }\n\n protected override updated(changes: PropertyValues): void {\n super.updated(changes);\n if (changes.has('disabled')) {\n if (this.disabled) {\n this.setAttribute('aria-disabled', 'true');\n } else {\n this.removeAttribute('aria-disabled');\n }\n }\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;AAYA;AAAA;AAAA;AAAA;AAAA;AAQA;AAEA;AAEA;AASO,aAAM,YAAY,WAAW,iBAAiB;AAAA,EACjD,YAAY,CAAC,KAAK,KAAK,GAAG;AAC9B,CAAC,EAAE;AAAA,EAsBC,cAAc;AACV,UAAM;AAjBH,qBAAY;AAGZ,oBAAW;AAGX,oBAAW;AAeV,yBAAgB,MAAY;AAChC,WAAK,iBAAiB,YAAY,KAAK,cAAc;AACrD,WAAK,iBAAiB,WAAW,KAAK,aAAa;AAAA,IACvD;AAEQ,0BAAiB,MAAY;AACjC,WAAK,oBAAoB,WAAW,KAAK,aAAa;AACtD,WAAK,oBAAoB,YAAY,KAAK,cAAc;AAAA,IAC5D;AAEQ,yBAAgB,CAAC,UAA+B;AACpD,UAAI,CAAC,KAAK,WAAW;AACjB;AAAA,MACJ;AACA,YAAM,EAAE,SAAS;AACjB,cAAQ;AAAA,aACC;AAAA,aACA;AAAA,aACA;AACD,eAAK,OAAO;AACZ;AAAA;AAEA;AAAA;AAAA,IAEZ;AA3BI,SAAK,iBAAiB,WAAW,KAAK,aAAa;AAAA,EACvD;AAAA,aAxB2B,SAAyB;AAChD,WAAO,CAAC,MAAM;AAAA,EAClB;AAAA,MAWY,UAAmB;AAC3B,WAAO,CAAC,CAAC,KAAK,cAAc,eAAe;AAAA,EAC/C;AAAA,MAEY,YAAqB;AAC7B,WAAO,CAAC,CAAC,KAAK,cAAc,iBAAiB;AAAA,EACjD;AAAA,EAiCQ,SAAe;AACnB,QAAI,KAAK,UAAU;AACf;AAAA,IACJ;AACA,SAAK,cACD,IAAI,MAAM,UAAU;AAAA,MAChB,SAAS;AAAA,IACb,CAAC,CACL;AAAA,EACJ;AAAA,EAEmB,SAAyB;AACxC,UAAM,QAA0B,CAAC;AACjC,QAAI,KAAK,WAAW;AAChB,YAAM,KACF;AAAA;AAAA,iBAGJ;AAAA,IACJ;AACA,QAAI,KAAK,SAAS;AACd,YAAM,KACF;AAAA;AAAA,iBAGJ;AAAA,IACJ;AACA,WAAO;AAAA,cACD;AAAA;AAAA,cAEA,KAAK,YACD;AAAA;AAAA;AAAA,sCAGoB,KAAK;AAAA;AAAA;AAAA;AAAA,mCAIR,KAAK;AAAA;AAAA,sBAGtB;AAAA;AAAA,EAEd;AAAA,EAEmB,aAAa,SAA+B;AAC3D,UAAM,aAAa,OAAO;AAC1B,QAAI,CAAC,KAAK,aAAa,MAAM,GAAG;AAC5B,WAAK,aAAa,QAAQ,UAAU;AAAA,IACxC;AACA,QAAI,KAAK,WAAW;AAChB,WAAK,aACD,YACA,CAAC,KAAK,YAAY,KAAK,QAAQ,gCAAgC,IACzD,MACA,IACV;AAAA,IACJ;AAAA,EACJ;AAAA,EAEmB,QAAQ,SAA+B;AACtD,UAAM,QAAQ,OAAO;AACrB,QAAI,QAAQ,IAAI,UAAU,GAAG;AACzB,UAAI,KAAK,UAAU;AACf,aAAK,aAAa,iBAAiB,MAAM;AAAA,MAC7C,OAAO;AACH,aAAK,gBAAgB,eAAe;AAAA,MACxC;AAAA,IACJ;AAAA,EACJ;AACJ;AArHW;AAAA,EADP,AAAC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GACnC,AARJ,IAQI;AAGA;AAAA,EADP,AAAC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GACnC,AAXJ,IAWI;AAGA;AAAA,EADP,AAAC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GACnC,AAdJ,IAcI;",
6
+ "names": []
7
+ }
package/src/Tag.js CHANGED
@@ -1,93 +1,88 @@
1
- /*
2
- Copyright 2020 Adobe. All rights reserved.
3
- This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
- you may not use this file except in compliance with the License. You may obtain a copy
5
- of the License at http://www.apache.org/licenses/LICENSE-2.0
6
-
7
- Unless required by applicable law or agreed to in writing, software distributed under
8
- the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
- OF ANY KIND, either express or implied. See the License for the specific language
10
- governing permissions and limitations under the License.
11
- */
12
- import { __decorate } from "tslib";
13
- import { html, SizedMixin, SpectrumElement, } from '@spectrum-web-components/base';
14
- import { property } from '@spectrum-web-components/base/src/decorators.js';
15
- import '@spectrum-web-components/button/sp-clear-button.js';
16
- import styles from './tag.css.js';
17
- /**
18
- * @element sp-tag
19
- *
20
- * @slot - text content for labeling the tag
21
- * @slot avatar - an avatar element to display within the Tag
22
- * @slot icon - an icon element to display within the Tag
23
- */
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __decorateClass = (decorators, target, key, kind) => {
4
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
+ if (decorator = decorators[i])
7
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
+ if (kind && result)
9
+ __defProp(target, key, result);
10
+ return result;
11
+ };
12
+ import {
13
+ html,
14
+ SizedMixin,
15
+ SpectrumElement
16
+ } from "@spectrum-web-components/base";
17
+ import { property } from "@spectrum-web-components/base/src/decorators.js";
18
+ import "@spectrum-web-components/button/sp-clear-button.js";
19
+ import styles from "./tag.css.js";
24
20
  export class Tag extends SizedMixin(SpectrumElement, {
25
- validSizes: ['s', 'm', 'l'],
21
+ validSizes: ["s", "m", "l"]
26
22
  }) {
27
- constructor() {
28
- super();
29
- this.deletable = false;
30
- this.disabled = false;
31
- this.readonly = false;
32
- this.handleFocusin = () => {
33
- this.addEventListener('focusout', this.handleFocusout);
34
- this.addEventListener('keydown', this.handleKeydown);
35
- };
36
- this.handleFocusout = () => {
37
- this.removeEventListener('keydown', this.handleKeydown);
38
- this.removeEventListener('focusout', this.handleFocusout);
39
- };
40
- this.handleKeydown = (event) => {
41
- if (!this.deletable) {
42
- return;
43
- }
44
- const { code } = event;
45
- switch (code) {
46
- case 'Backspace':
47
- case 'Space':
48
- case 'Delete':
49
- this.delete();
50
- return;
51
- default:
52
- return;
53
- }
54
- };
55
- this.addEventListener('focusin', this.handleFocusin);
23
+ constructor() {
24
+ super();
25
+ this.deletable = false;
26
+ this.disabled = false;
27
+ this.readonly = false;
28
+ this.handleFocusin = () => {
29
+ this.addEventListener("focusout", this.handleFocusout);
30
+ this.addEventListener("keydown", this.handleKeydown);
31
+ };
32
+ this.handleFocusout = () => {
33
+ this.removeEventListener("keydown", this.handleKeydown);
34
+ this.removeEventListener("focusout", this.handleFocusout);
35
+ };
36
+ this.handleKeydown = (event) => {
37
+ if (!this.deletable) {
38
+ return;
39
+ }
40
+ const { code } = event;
41
+ switch (code) {
42
+ case "Backspace":
43
+ case "Space":
44
+ case "Delete":
45
+ this.delete();
46
+ return;
47
+ default:
48
+ return;
49
+ }
50
+ };
51
+ this.addEventListener("focusin", this.handleFocusin);
52
+ }
53
+ static get styles() {
54
+ return [styles];
55
+ }
56
+ get hasIcon() {
57
+ return !!this.querySelector('[slot="icon"]');
58
+ }
59
+ get hasAvatar() {
60
+ return !!this.querySelector('[slot="avatar"]');
61
+ }
62
+ delete() {
63
+ if (this.readonly) {
64
+ return;
56
65
  }
57
- static get styles() {
58
- return [styles];
59
- }
60
- get hasIcon() {
61
- return !!this.querySelector('[slot="icon"]');
62
- }
63
- get hasAvatar() {
64
- return !!this.querySelector('[slot="avatar"]');
65
- }
66
- delete() {
67
- if (this.readonly) {
68
- return;
69
- }
70
- this.dispatchEvent(new Event('delete', {
71
- bubbles: true,
72
- }));
73
- }
74
- render() {
75
- const slots = [];
76
- if (this.hasAvatar) {
77
- slots.push(html `
66
+ this.dispatchEvent(new Event("delete", {
67
+ bubbles: true
68
+ }));
69
+ }
70
+ render() {
71
+ const slots = [];
72
+ if (this.hasAvatar) {
73
+ slots.push(html`
78
74
  <slot name="avatar"></slot>
79
75
  `);
80
- }
81
- if (this.hasIcon) {
82
- slots.push(html `
76
+ }
77
+ if (this.hasIcon) {
78
+ slots.push(html`
83
79
  <slot name="icon"></slot>
84
80
  `);
85
- }
86
- return html `
81
+ }
82
+ return html`
87
83
  ${slots}
88
84
  <span class="label"><slot></slot></span>
89
- ${this.deletable
90
- ? html `
85
+ ${this.deletable ? html`
91
86
  <sp-clear-button
92
87
  class="clear-button"
93
88
  ?disabled=${this.disabled}
@@ -96,40 +91,36 @@ export class Tag extends SizedMixin(SpectrumElement, {
96
91
  tabindex="-1"
97
92
  @click=${this.delete}
98
93
  ></sp-clear-button>
99
- `
100
- : html ``}
94
+ ` : html``}
101
95
  `;
96
+ }
97
+ firstUpdated(changes) {
98
+ super.firstUpdated(changes);
99
+ if (!this.hasAttribute("role")) {
100
+ this.setAttribute("role", "listitem");
102
101
  }
103
- firstUpdated(changes) {
104
- super.firstUpdated(changes);
105
- if (!this.hasAttribute('role')) {
106
- this.setAttribute('role', 'listitem');
107
- }
108
- if (this.deletable) {
109
- this.setAttribute('tabindex', !this.disabled && this.matches(':first-of-type:not([disabled])')
110
- ? '0'
111
- : '-1');
112
- }
102
+ if (this.deletable) {
103
+ this.setAttribute("tabindex", !this.disabled && this.matches(":first-of-type:not([disabled])") ? "0" : "-1");
113
104
  }
114
- updated(changes) {
115
- super.updated(changes);
116
- if (changes.has('disabled')) {
117
- if (this.disabled) {
118
- this.setAttribute('aria-disabled', 'true');
119
- }
120
- else {
121
- this.removeAttribute('aria-disabled');
122
- }
123
- }
105
+ }
106
+ updated(changes) {
107
+ super.updated(changes);
108
+ if (changes.has("disabled")) {
109
+ if (this.disabled) {
110
+ this.setAttribute("aria-disabled", "true");
111
+ } else {
112
+ this.removeAttribute("aria-disabled");
113
+ }
124
114
  }
115
+ }
125
116
  }
126
- __decorate([
127
- property({ type: Boolean, reflect: true })
128
- ], Tag.prototype, "deletable", void 0);
129
- __decorate([
130
- property({ type: Boolean, reflect: true })
131
- ], Tag.prototype, "disabled", void 0);
132
- __decorate([
133
- property({ type: Boolean, reflect: true })
134
- ], Tag.prototype, "readonly", void 0);
135
- //# sourceMappingURL=Tag.js.map
117
+ __decorateClass([
118
+ property({ type: Boolean, reflect: true })
119
+ ], Tag.prototype, "deletable", 2);
120
+ __decorateClass([
121
+ property({ type: Boolean, reflect: true })
122
+ ], Tag.prototype, "disabled", 2);
123
+ __decorateClass([
124
+ property({ type: Boolean, reflect: true })
125
+ ], Tag.prototype, "readonly", 2);
126
+ //# sourceMappingURL=Tag.js.map
package/src/Tag.js.map CHANGED
@@ -1 +1,7 @@
1
- {"version":3,"file":"Tag.js","sourceRoot":"","sources":["Tag.ts"],"names":[],"mappings":"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","sourcesContent":["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SizedMixin,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\nimport '@spectrum-web-components/button/sp-clear-button.js';\n\nimport styles from './tag.css.js';\n\n/**\n * @element sp-tag\n *\n * @slot - text content for labeling the tag\n * @slot avatar - an avatar element to display within the Tag\n * @slot icon - an icon element to display within the Tag\n */\nexport class Tag extends SizedMixin(SpectrumElement, {\n validSizes: ['s', 'm', 'l'],\n}) {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ type: Boolean, reflect: true })\n public deletable = false;\n\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n @property({ type: Boolean, reflect: true })\n public readonly = false;\n\n private get hasIcon(): boolean {\n return !!this.querySelector('[slot=\"icon\"]');\n }\n\n private get hasAvatar(): boolean {\n return !!this.querySelector('[slot=\"avatar\"]');\n }\n\n constructor() {\n super();\n this.addEventListener('focusin', this.handleFocusin);\n }\n\n private handleFocusin = (): void => {\n this.addEventListener('focusout', this.handleFocusout);\n this.addEventListener('keydown', this.handleKeydown);\n };\n\n private handleFocusout = (): void => {\n this.removeEventListener('keydown', this.handleKeydown);\n this.removeEventListener('focusout', this.handleFocusout);\n };\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (!this.deletable) {\n return;\n }\n const { code } = event;\n switch (code) {\n case 'Backspace':\n case 'Space':\n case 'Delete':\n this.delete();\n return;\n default:\n return;\n }\n };\n\n private delete(): void {\n if (this.readonly) {\n return;\n }\n this.dispatchEvent(\n new Event('delete', {\n bubbles: true,\n })\n );\n }\n\n protected override render(): TemplateResult {\n const slots: TemplateResult[] = [];\n if (this.hasAvatar) {\n slots.push(\n html`\n <slot name=\"avatar\"></slot>\n `\n );\n }\n if (this.hasIcon) {\n slots.push(\n html`\n <slot name=\"icon\"></slot>\n `\n );\n }\n return html`\n ${slots}\n <span class=\"label\"><slot></slot></span>\n ${this.deletable\n ? html`\n <sp-clear-button\n class=\"clear-button\"\n ?disabled=${this.disabled}\n label=\"Remove\"\n size=\"s\"\n tabindex=\"-1\"\n @click=${this.delete}\n ></sp-clear-button>\n `\n : html``}\n `;\n }\n\n protected override firstUpdated(changes: PropertyValues): void {\n super.firstUpdated(changes);\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'listitem');\n }\n if (this.deletable) {\n this.setAttribute(\n 'tabindex',\n !this.disabled && this.matches(':first-of-type:not([disabled])')\n ? '0'\n : '-1'\n );\n }\n }\n\n protected override updated(changes: PropertyValues): void {\n super.updated(changes);\n if (changes.has('disabled')) {\n if (this.disabled) {\n this.setAttribute('aria-disabled', 'true');\n } else {\n this.removeAttribute('aria-disabled');\n }\n }\n }\n}\n"]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["Tag.ts"],
4
+ "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SizedMixin,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\nimport '@spectrum-web-components/button/sp-clear-button.js';\n\nimport styles from './tag.css.js';\n\n/**\n * @element sp-tag\n *\n * @slot - text content for labeling the tag\n * @slot avatar - an avatar element to display within the Tag\n * @slot icon - an icon element to display within the Tag\n */\nexport class Tag extends SizedMixin(SpectrumElement, {\n validSizes: ['s', 'm', 'l'],\n}) {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ type: Boolean, reflect: true })\n public deletable = false;\n\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n @property({ type: Boolean, reflect: true })\n public readonly = false;\n\n private get hasIcon(): boolean {\n return !!this.querySelector('[slot=\"icon\"]');\n }\n\n private get hasAvatar(): boolean {\n return !!this.querySelector('[slot=\"avatar\"]');\n }\n\n constructor() {\n super();\n this.addEventListener('focusin', this.handleFocusin);\n }\n\n private handleFocusin = (): void => {\n this.addEventListener('focusout', this.handleFocusout);\n this.addEventListener('keydown', this.handleKeydown);\n };\n\n private handleFocusout = (): void => {\n this.removeEventListener('keydown', this.handleKeydown);\n this.removeEventListener('focusout', this.handleFocusout);\n };\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (!this.deletable) {\n return;\n }\n const { code } = event;\n switch (code) {\n case 'Backspace':\n case 'Space':\n case 'Delete':\n this.delete();\n return;\n default:\n return;\n }\n };\n\n private delete(): void {\n if (this.readonly) {\n return;\n }\n this.dispatchEvent(\n new Event('delete', {\n bubbles: true,\n })\n );\n }\n\n protected override render(): TemplateResult {\n const slots: TemplateResult[] = [];\n if (this.hasAvatar) {\n slots.push(\n html`\n <slot name=\"avatar\"></slot>\n `\n );\n }\n if (this.hasIcon) {\n slots.push(\n html`\n <slot name=\"icon\"></slot>\n `\n );\n }\n return html`\n ${slots}\n <span class=\"label\"><slot></slot></span>\n ${this.deletable\n ? html`\n <sp-clear-button\n class=\"clear-button\"\n ?disabled=${this.disabled}\n label=\"Remove\"\n size=\"s\"\n tabindex=\"-1\"\n @click=${this.delete}\n ></sp-clear-button>\n `\n : html``}\n `;\n }\n\n protected override firstUpdated(changes: PropertyValues): void {\n super.firstUpdated(changes);\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'listitem');\n }\n if (this.deletable) {\n this.setAttribute(\n 'tabindex',\n !this.disabled && this.matches(':first-of-type:not([disabled])')\n ? '0'\n : '-1'\n );\n }\n }\n\n protected override updated(changes: PropertyValues): void {\n super.updated(changes);\n if (changes.has('disabled')) {\n if (this.disabled) {\n this.setAttribute('aria-disabled', 'true');\n } else {\n this.removeAttribute('aria-disabled');\n }\n }\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;AAYA;AAAA;AAAA;AAAA;AAAA;AAQA;AAEA;AAEA;AASO,aAAM,YAAY,WAAW,iBAAiB;AAAA,EACjD,YAAY,CAAC,KAAK,KAAK,GAAG;AAC9B,CAAC,EAAE;AAAA,EAsBC,cAAc;AACV,UAAM;AAjBH,qBAAY;AAGZ,oBAAW;AAGX,oBAAW;AAeV,yBAAgB,MAAY;AAChC,WAAK,iBAAiB,YAAY,KAAK,cAAc;AACrD,WAAK,iBAAiB,WAAW,KAAK,aAAa;AAAA,IACvD;AAEQ,0BAAiB,MAAY;AACjC,WAAK,oBAAoB,WAAW,KAAK,aAAa;AACtD,WAAK,oBAAoB,YAAY,KAAK,cAAc;AAAA,IAC5D;AAEQ,yBAAgB,CAAC,UAA+B;AACpD,UAAI,CAAC,KAAK,WAAW;AACjB;AAAA,MACJ;AACA,YAAM,EAAE,SAAS;AACjB,cAAQ;AAAA,aACC;AAAA,aACA;AAAA,aACA;AACD,eAAK,OAAO;AACZ;AAAA;AAEA;AAAA;AAAA,IAEZ;AA3BI,SAAK,iBAAiB,WAAW,KAAK,aAAa;AAAA,EACvD;AAAA,aAxB2B,SAAyB;AAChD,WAAO,CAAC,MAAM;AAAA,EAClB;AAAA,MAWY,UAAmB;AAC3B,WAAO,CAAC,CAAC,KAAK,cAAc,eAAe;AAAA,EAC/C;AAAA,MAEY,YAAqB;AAC7B,WAAO,CAAC,CAAC,KAAK,cAAc,iBAAiB;AAAA,EACjD;AAAA,EAiCQ,SAAe;AACnB,QAAI,KAAK,UAAU;AACf;AAAA,IACJ;AACA,SAAK,cACD,IAAI,MAAM,UAAU;AAAA,MAChB,SAAS;AAAA,IACb,CAAC,CACL;AAAA,EACJ;AAAA,EAEmB,SAAyB;AACxC,UAAM,QAA0B,CAAC;AACjC,QAAI,KAAK,WAAW;AAChB,YAAM,KACF;AAAA;AAAA,iBAGJ;AAAA,IACJ;AACA,QAAI,KAAK,SAAS;AACd,YAAM,KACF;AAAA;AAAA,iBAGJ;AAAA,IACJ;AACA,WAAO;AAAA,cACD;AAAA;AAAA,cAEA,KAAK,YACD;AAAA;AAAA;AAAA,sCAGoB,KAAK;AAAA;AAAA;AAAA;AAAA,mCAIR,KAAK;AAAA;AAAA,sBAGtB;AAAA;AAAA,EAEd;AAAA,EAEmB,aAAa,SAA+B;AAC3D,UAAM,aAAa,OAAO;AAC1B,QAAI,CAAC,KAAK,aAAa,MAAM,GAAG;AAC5B,WAAK,aAAa,QAAQ,UAAU;AAAA,IACxC;AACA,QAAI,KAAK,WAAW;AAChB,WAAK,aACD,YACA,CAAC,KAAK,YAAY,KAAK,QAAQ,gCAAgC,IACzD,MACA,IACV;AAAA,IACJ;AAAA,EACJ;AAAA,EAEmB,QAAQ,SAA+B;AACtD,UAAM,QAAQ,OAAO;AACrB,QAAI,QAAQ,IAAI,UAAU,GAAG;AACzB,UAAI,KAAK,UAAU;AACf,aAAK,aAAa,iBAAiB,MAAM;AAAA,MAC7C,OAAO;AACH,aAAK,gBAAgB,eAAe;AAAA,MACxC;AAAA,IACJ;AAAA,EACJ;AACJ;AArHW;AAAA,EADP,AAAC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GACnC,AARJ,IAQI;AAGA;AAAA,EADP,AAAC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GACnC,AAXJ,IAWI;AAGA;AAAA,EADP,AAAC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GACnC,AAdJ,IAcI;",
6
+ "names": []
7
+ }