@spectrum-web-components/base 0.31.1-react.3 → 0.32.1-overlay.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/base",
3
- "version": "0.31.1-react.3+886f51591",
3
+ "version": "0.32.1-overlay.33+8b9227d00",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -107,5 +107,5 @@
107
107
  "sideEffects": [
108
108
  "./**/*.dev.js"
109
109
  ],
110
- "gitHead": "886f515919ca0e8a1cec52a00babb1d4a195ae01"
110
+ "gitHead": "8b9227d00900eacee1c6d194064f10062f27ab3e"
111
111
  }
@@ -23,14 +23,17 @@ declare class StreamingListenerDirective extends AsyncDirective {
23
23
  end: ListenerConfig;
24
24
  streamOutside: ListenerConfig;
25
25
  state: 'off' | 'on';
26
+ stream?: number;
26
27
  render(_configGroup: ListenerConfigGroup): typeof nothing;
27
28
  update(part: Part, [{ start, end, streamInside, streamOutside, },]: Parameters<this['render']>): void;
28
29
  addListeners(state?: 'on' | 'off'): void;
29
30
  callHandler(value: (event: Event) => void | EventListenerObject, event: Event): void;
31
+ handleStream(value: (event: Event) => void | EventListenerObject, event: Event): void;
32
+ clearStream(): void;
30
33
  handleStart: (event: Event) => void;
31
- handleStream: (event: Event) => void;
34
+ handleInside: (event: Event) => void;
32
35
  handleEnd: (event: Event) => void;
33
- handleBetween: (event: Event) => void;
36
+ handleOutside: (event: Event) => void;
34
37
  addListener(type: string | string[], fn: (event: Event) => void): void;
35
38
  removeListener(type: string | string[], fn: (event: Event) => void): void;
36
39
  removeListeners(): void;
@@ -16,6 +16,7 @@ class StreamingListenerDirective extends AsyncDirective {
16
16
  this.streamOutside = defaultListener;
17
17
  this.state = "off";
18
18
  this.handleStart = (event) => {
19
+ this.clearStream();
19
20
  this.callHandler(this.start[1], event);
20
21
  if (event.defaultPrevented) {
21
22
  return;
@@ -23,16 +24,17 @@ class StreamingListenerDirective extends AsyncDirective {
23
24
  this.removeListeners();
24
25
  this.addListeners("on");
25
26
  };
26
- this.handleStream = (event) => {
27
- this.callHandler(this.streamInside[1], event);
27
+ this.handleInside = (event) => {
28
+ this.handleStream(this.streamInside[1], event);
28
29
  };
29
30
  this.handleEnd = (event) => {
31
+ this.clearStream();
30
32
  this.callHandler(this.end[1], event);
31
33
  this.removeListeners();
32
34
  this.addListeners("off");
33
35
  };
34
- this.handleBetween = (event) => {
35
- this.callHandler(this.streamOutside[1], event);
36
+ this.handleOutside = (event) => {
37
+ this.handleStream(this.streamOutside[1], event);
36
38
  };
37
39
  }
38
40
  /* c8 ignore next 4 */
@@ -63,10 +65,10 @@ class StreamingListenerDirective extends AsyncDirective {
63
65
  addListeners(state) {
64
66
  this.state = state || this.state;
65
67
  if (this.state === "off") {
66
- this.addListener(this.streamOutside[0], this.handleBetween);
68
+ this.addListener(this.streamOutside[0], this.handleOutside);
67
69
  this.addListener(this.start[0], this.handleStart);
68
70
  } else if (this.state === "on") {
69
- this.addListener(this.streamInside[0], this.handleStream);
71
+ this.addListener(this.streamInside[0], this.handleInside);
70
72
  this.addListener(this.end[0], this.handleEnd);
71
73
  }
72
74
  }
@@ -77,6 +79,21 @@ class StreamingListenerDirective extends AsyncDirective {
77
79
  value.handleEvent(event);
78
80
  }
79
81
  }
82
+ handleStream(value, event) {
83
+ if (this.stream) {
84
+ return;
85
+ }
86
+ this.callHandler(value, event);
87
+ this.stream = requestAnimationFrame(() => {
88
+ this.stream = void 0;
89
+ });
90
+ }
91
+ clearStream() {
92
+ if (this.stream != null) {
93
+ cancelAnimationFrame(this.stream);
94
+ this.stream = void 0;
95
+ }
96
+ }
80
97
  addListener(type, fn) {
81
98
  if (Array.isArray(type)) {
82
99
  type.map((eventName) => {
@@ -97,9 +114,9 @@ class StreamingListenerDirective extends AsyncDirective {
97
114
  }
98
115
  removeListeners() {
99
116
  this.removeListener(this.start[0], this.handleStart);
100
- this.removeListener(this.streamInside[0], this.handleStream);
117
+ this.removeListener(this.streamInside[0], this.handleInside);
101
118
  this.removeListener(this.end[0], this.handleEnd);
102
- this.removeListener(this.streamOutside[0], this.handleBetween);
119
+ this.removeListener(this.streamOutside[0], this.handleOutside);
103
120
  }
104
121
  disconnected() {
105
122
  this.removeListeners();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["streaming-listener.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\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 { ElementPart, nothing, Part } from 'lit';\nimport { AsyncDirective, directive } from 'lit/async-directive.js';\nimport type { DirectiveResult } from 'lit/directive.js';\n\ntype ListenerConfig = [string | string[], (event?: any) => void];\ntype ListenerConfigGroup = {\n start: ListenerConfig;\n end: ListenerConfig;\n streamInside?: ListenerConfig;\n streamOutside?: ListenerConfig;\n};\n\n/* c8 ignore next 6 */\nconst defaultListener: ListenerConfig = [\n '',\n (): void => {\n return;\n },\n];\n\n/**\n * Performantly manage listening to event in a series, like:\n * - `input[type=\"range\"]`: input, input, etc. => change\n * - `sp-color-area`: pointerdown => pointermove, pointermove, etc. => pointerup\n * Lazily bind events to the specific part of the series while\n * throttling streamed events to 1/frame.\n */\nclass StreamingListenerDirective extends AsyncDirective {\n host!: EventTarget | Record<string, unknown> | Element;\n element!: Element;\n\n start: ListenerConfig = defaultListener;\n streamInside: ListenerConfig = defaultListener;\n end: ListenerConfig = defaultListener;\n streamOutside: ListenerConfig = defaultListener;\n\n state: 'off' | 'on' = 'off';\n\n /* c8 ignore next 4 */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n render(_configGroup: ListenerConfigGroup): typeof nothing {\n return nothing;\n }\n\n override update(\n part: Part,\n [\n {\n start,\n end,\n streamInside = defaultListener,\n streamOutside = defaultListener,\n },\n ]: Parameters<this['render']>\n ): void {\n if (this.element !== (part as ElementPart).element) {\n this.element = (part as ElementPart).element;\n this.removeListeners();\n }\n this.host =\n (part.options?.host as Record<string, unknown>) || this.element;\n this.start = start;\n this.end = end;\n this.streamInside = streamInside;\n this.streamOutside = streamOutside;\n this.addListeners();\n }\n\n addListeners(state?: 'on' | 'off'): void {\n this.state = state || this.state;\n if (this.state === 'off') {\n this.addListener(this.streamOutside[0], this.handleBetween);\n this.addListener(this.start[0], this.handleStart);\n } else if (this.state === 'on') {\n this.addListener(this.streamInside[0], this.handleStream);\n this.addListener(this.end[0], this.handleEnd);\n }\n }\n\n callHandler(\n value: (event: Event) => void | EventListenerObject,\n event: Event\n ): void {\n if (typeof value === 'function') {\n (value as (event: Event) => void).call(this.host, event);\n } else {\n (value as EventListenerObject).handleEvent(event);\n }\n }\n\n handleStart = (event: Event): void => {\n this.callHandler(this.start[1], event);\n if (event.defaultPrevented) {\n return;\n }\n this.removeListeners();\n this.addListeners('on');\n };\n\n handleStream = (event: Event): void => {\n this.callHandler(this.streamInside[1], event);\n };\n\n handleEnd = (event: Event): void => {\n this.callHandler(this.end[1], event);\n this.removeListeners();\n this.addListeners('off');\n };\n\n handleBetween = (event: Event): void => {\n this.callHandler(this.streamOutside[1], event);\n };\n\n addListener(type: string | string[], fn: (event: Event) => void): void {\n if (Array.isArray(type)) {\n type.map((eventName) => {\n this.element.addEventListener(eventName, fn);\n });\n } else {\n this.element.addEventListener(type, fn);\n }\n }\n\n removeListener(type: string | string[], fn: (event: Event) => void): void {\n if (Array.isArray(type)) {\n type.map((eventName) => {\n this.element.removeEventListener(eventName, fn);\n });\n } else {\n this.element.removeEventListener(type, fn);\n }\n }\n\n removeListeners(): void {\n this.removeListener(this.start[0], this.handleStart);\n this.removeListener(this.streamInside[0], this.handleStream);\n this.removeListener(this.end[0], this.handleEnd);\n this.removeListener(this.streamOutside[0], this.handleBetween);\n }\n\n override disconnected(): void {\n this.removeListeners();\n }\n\n /* c8 ignore next 3 */\n override reconnected(): void {\n this.addListeners();\n }\n}\n\nexport const streamingListener: (\n _configGroup: ListenerConfigGroup\n) => DirectiveResult<typeof StreamingListenerDirective> = directive(\n StreamingListenerDirective\n);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type { StreamingListenerDirective };\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\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 { ElementPart, nothing, Part } from 'lit';\nimport { AsyncDirective, directive } from 'lit/async-directive.js';\nimport type { DirectiveResult } from 'lit/directive.js';\n\ntype ListenerConfig = [string | string[], (event?: any) => void];\ntype ListenerConfigGroup = {\n start: ListenerConfig;\n end: ListenerConfig;\n streamInside?: ListenerConfig;\n streamOutside?: ListenerConfig;\n};\n\n/* c8 ignore next 6 */\nconst defaultListener: ListenerConfig = [\n '',\n (): void => {\n return;\n },\n];\n\n/**\n * Performantly manage listening to event in a series, like:\n * - `input[type=\"range\"]`: input, input, etc. => change\n * - `sp-color-area`: pointerdown => pointermove, pointermove, etc. => pointerup\n * Lazily bind events to the specific part of the series while\n * throttling streamed events to 1/frame.\n */\nclass StreamingListenerDirective extends AsyncDirective {\n host!: EventTarget | Record<string, unknown> | Element;\n element!: Element;\n\n start: ListenerConfig = defaultListener;\n streamInside: ListenerConfig = defaultListener;\n end: ListenerConfig = defaultListener;\n streamOutside: ListenerConfig = defaultListener;\n\n state: 'off' | 'on' = 'off';\n // Animation frame that will unlock the next \"stream\" event if/when it is dispatched.\n stream?: number;\n\n /* c8 ignore next 4 */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n render(_configGroup: ListenerConfigGroup): typeof nothing {\n return nothing;\n }\n\n override update(\n part: Part,\n [\n {\n start,\n end,\n streamInside = defaultListener,\n streamOutside = defaultListener,\n },\n ]: Parameters<this['render']>\n ): void {\n if (this.element !== (part as ElementPart).element) {\n this.element = (part as ElementPart).element;\n this.removeListeners();\n }\n this.host =\n (part.options?.host as Record<string, unknown>) || this.element;\n this.start = start;\n this.end = end;\n this.streamInside = streamInside;\n this.streamOutside = streamOutside;\n this.addListeners();\n }\n\n addListeners(state?: 'on' | 'off'): void {\n this.state = state || this.state;\n if (this.state === 'off') {\n this.addListener(this.streamOutside[0], this.handleOutside);\n this.addListener(this.start[0], this.handleStart);\n } else if (this.state === 'on') {\n this.addListener(this.streamInside[0], this.handleInside);\n this.addListener(this.end[0], this.handleEnd);\n }\n }\n\n callHandler(\n value: (event: Event) => void | EventListenerObject,\n event: Event\n ): void {\n if (typeof value === 'function') {\n (value as (event: Event) => void).call(this.host, event);\n } else {\n (value as EventListenerObject).handleEvent(event);\n }\n }\n\n handleStream(\n value: (event: Event) => void | EventListenerObject,\n event: Event\n ): void {\n if (this.stream) {\n return;\n }\n this.callHandler(value, event);\n this.stream = requestAnimationFrame(() => {\n this.stream = undefined;\n });\n }\n\n clearStream(): void {\n if (this.stream != null) {\n // Ensure steam events NEVER go after a start or event event.\n cancelAnimationFrame(this.stream);\n this.stream = undefined;\n }\n }\n\n handleStart = (event: Event): void => {\n this.clearStream();\n this.callHandler(this.start[1], event);\n if (event.defaultPrevented) {\n return;\n }\n this.removeListeners();\n this.addListeners('on');\n };\n\n handleInside = (event: Event): void => {\n this.handleStream(this.streamInside[1], event);\n };\n\n handleEnd = (event: Event): void => {\n this.clearStream();\n this.callHandler(this.end[1], event);\n this.removeListeners();\n this.addListeners('off');\n };\n\n handleOutside = (event: Event): void => {\n this.handleStream(this.streamOutside[1], event);\n };\n\n addListener(type: string | string[], fn: (event: Event) => void): void {\n if (Array.isArray(type)) {\n type.map((eventName) => {\n this.element.addEventListener(eventName, fn);\n });\n } else {\n this.element.addEventListener(type, fn);\n }\n }\n\n removeListener(type: string | string[], fn: (event: Event) => void): void {\n if (Array.isArray(type)) {\n type.map((eventName) => {\n this.element.removeEventListener(eventName, fn);\n });\n } else {\n this.element.removeEventListener(type, fn);\n }\n }\n\n removeListeners(): void {\n this.removeListener(this.start[0], this.handleStart);\n this.removeListener(this.streamInside[0], this.handleInside);\n this.removeListener(this.end[0], this.handleEnd);\n this.removeListener(this.streamOutside[0], this.handleOutside);\n }\n\n override disconnected(): void {\n this.removeListeners();\n }\n\n /* c8 ignore next 3 */\n override reconnected(): void {\n this.addListeners();\n }\n}\n\nexport const streamingListener: (\n _configGroup: ListenerConfigGroup\n) => DirectiveResult<typeof StreamingListenerDirective> = directive(\n StreamingListenerDirective\n);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type { StreamingListenerDirective };\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";import{nothing as o}from"lit";import{AsyncDirective as a,directive as h}from"lit/async-directive.js";const i=["",()=>{}];class v extends a{constructor(){super(...arguments);this.start=i;this.streamInside=i;this.end=i;this.streamOutside=i;this.state="off";this.handleStart=e=>{this.callHandler(this.start[1],e),!e.defaultPrevented&&(this.removeListeners(),this.addListeners("on"))};this.handleStream=e=>{this.callHandler(this.streamInside[1],e)};this.handleEnd=e=>{this.callHandler(this.end[1],e),this.removeListeners(),this.addListeners("off")};this.handleBetween=e=>{this.callHandler(this.streamOutside[1],e)}}render(e){return o}update(e,[{start:t,end:s,streamInside:r=i,streamOutside:d=i}]){var n;this.element!==e.element&&(this.element=e.element,this.removeListeners()),this.host=((n=e.options)==null?void 0:n.host)||this.element,this.start=t,this.end=s,this.streamInside=r,this.streamOutside=d,this.addListeners()}addListeners(e){this.state=e||this.state,this.state==="off"?(this.addListener(this.streamOutside[0],this.handleBetween),this.addListener(this.start[0],this.handleStart)):this.state==="on"&&(this.addListener(this.streamInside[0],this.handleStream),this.addListener(this.end[0],this.handleEnd))}callHandler(e,t){typeof e=="function"?e.call(this.host,t):e.handleEvent(t)}addListener(e,t){Array.isArray(e)?e.map(s=>{this.element.addEventListener(s,t)}):this.element.addEventListener(e,t)}removeListener(e,t){Array.isArray(e)?e.map(s=>{this.element.removeEventListener(s,t)}):this.element.removeEventListener(e,t)}removeListeners(){this.removeListener(this.start[0],this.handleStart),this.removeListener(this.streamInside[0],this.handleStream),this.removeListener(this.end[0],this.handleEnd),this.removeListener(this.streamOutside[0],this.handleBetween)}disconnected(){this.removeListeners()}reconnected(){this.addListeners()}}export const streamingListener=h(v);
1
+ "use strict";import{nothing as a}from"lit";import{AsyncDirective as o,directive as h}from"lit/async-directive.js";const i=["",()=>{}];class m extends o{constructor(){super(...arguments);this.start=i;this.streamInside=i;this.end=i;this.streamOutside=i;this.state="off";this.handleStart=e=>{this.clearStream(),this.callHandler(this.start[1],e),!e.defaultPrevented&&(this.removeListeners(),this.addListeners("on"))};this.handleInside=e=>{this.handleStream(this.streamInside[1],e)};this.handleEnd=e=>{this.clearStream(),this.callHandler(this.end[1],e),this.removeListeners(),this.addListeners("off")};this.handleOutside=e=>{this.handleStream(this.streamOutside[1],e)}}render(e){return a}update(e,[{start:t,end:s,streamInside:r=i,streamOutside:d=i}]){var n;this.element!==e.element&&(this.element=e.element,this.removeListeners()),this.host=((n=e.options)==null?void 0:n.host)||this.element,this.start=t,this.end=s,this.streamInside=r,this.streamOutside=d,this.addListeners()}addListeners(e){this.state=e||this.state,this.state==="off"?(this.addListener(this.streamOutside[0],this.handleOutside),this.addListener(this.start[0],this.handleStart)):this.state==="on"&&(this.addListener(this.streamInside[0],this.handleInside),this.addListener(this.end[0],this.handleEnd))}callHandler(e,t){typeof e=="function"?e.call(this.host,t):e.handleEvent(t)}handleStream(e,t){this.stream||(this.callHandler(e,t),this.stream=requestAnimationFrame(()=>{this.stream=void 0}))}clearStream(){this.stream!=null&&(cancelAnimationFrame(this.stream),this.stream=void 0)}addListener(e,t){Array.isArray(e)?e.map(s=>{this.element.addEventListener(s,t)}):this.element.addEventListener(e,t)}removeListener(e,t){Array.isArray(e)?e.map(s=>{this.element.removeEventListener(s,t)}):this.element.removeEventListener(e,t)}removeListeners(){this.removeListener(this.start[0],this.handleStart),this.removeListener(this.streamInside[0],this.handleInside),this.removeListener(this.end[0],this.handleEnd),this.removeListener(this.streamOutside[0],this.handleOutside)}disconnected(){this.removeListeners()}reconnected(){this.addListeners()}}export const streamingListener=h(m);
2
2
  //# sourceMappingURL=streaming-listener.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["streaming-listener.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\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 { ElementPart, nothing, Part } from 'lit';\nimport { AsyncDirective, directive } from 'lit/async-directive.js';\nimport type { DirectiveResult } from 'lit/directive.js';\n\ntype ListenerConfig = [string | string[], (event?: any) => void];\ntype ListenerConfigGroup = {\n start: ListenerConfig;\n end: ListenerConfig;\n streamInside?: ListenerConfig;\n streamOutside?: ListenerConfig;\n};\n\n/* c8 ignore next 6 */\nconst defaultListener: ListenerConfig = [\n '',\n (): void => {\n return;\n },\n];\n\n/**\n * Performantly manage listening to event in a series, like:\n * - `input[type=\"range\"]`: input, input, etc. => change\n * - `sp-color-area`: pointerdown => pointermove, pointermove, etc. => pointerup\n * Lazily bind events to the specific part of the series while\n * throttling streamed events to 1/frame.\n */\nclass StreamingListenerDirective extends AsyncDirective {\n host!: EventTarget | Record<string, unknown> | Element;\n element!: Element;\n\n start: ListenerConfig = defaultListener;\n streamInside: ListenerConfig = defaultListener;\n end: ListenerConfig = defaultListener;\n streamOutside: ListenerConfig = defaultListener;\n\n state: 'off' | 'on' = 'off';\n\n /* c8 ignore next 4 */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n render(_configGroup: ListenerConfigGroup): typeof nothing {\n return nothing;\n }\n\n override update(\n part: Part,\n [\n {\n start,\n end,\n streamInside = defaultListener,\n streamOutside = defaultListener,\n },\n ]: Parameters<this['render']>\n ): void {\n if (this.element !== (part as ElementPart).element) {\n this.element = (part as ElementPart).element;\n this.removeListeners();\n }\n this.host =\n (part.options?.host as Record<string, unknown>) || this.element;\n this.start = start;\n this.end = end;\n this.streamInside = streamInside;\n this.streamOutside = streamOutside;\n this.addListeners();\n }\n\n addListeners(state?: 'on' | 'off'): void {\n this.state = state || this.state;\n if (this.state === 'off') {\n this.addListener(this.streamOutside[0], this.handleBetween);\n this.addListener(this.start[0], this.handleStart);\n } else if (this.state === 'on') {\n this.addListener(this.streamInside[0], this.handleStream);\n this.addListener(this.end[0], this.handleEnd);\n }\n }\n\n callHandler(\n value: (event: Event) => void | EventListenerObject,\n event: Event\n ): void {\n if (typeof value === 'function') {\n (value as (event: Event) => void).call(this.host, event);\n } else {\n (value as EventListenerObject).handleEvent(event);\n }\n }\n\n handleStart = (event: Event): void => {\n this.callHandler(this.start[1], event);\n if (event.defaultPrevented) {\n return;\n }\n this.removeListeners();\n this.addListeners('on');\n };\n\n handleStream = (event: Event): void => {\n this.callHandler(this.streamInside[1], event);\n };\n\n handleEnd = (event: Event): void => {\n this.callHandler(this.end[1], event);\n this.removeListeners();\n this.addListeners('off');\n };\n\n handleBetween = (event: Event): void => {\n this.callHandler(this.streamOutside[1], event);\n };\n\n addListener(type: string | string[], fn: (event: Event) => void): void {\n if (Array.isArray(type)) {\n type.map((eventName) => {\n this.element.addEventListener(eventName, fn);\n });\n } else {\n this.element.addEventListener(type, fn);\n }\n }\n\n removeListener(type: string | string[], fn: (event: Event) => void): void {\n if (Array.isArray(type)) {\n type.map((eventName) => {\n this.element.removeEventListener(eventName, fn);\n });\n } else {\n this.element.removeEventListener(type, fn);\n }\n }\n\n removeListeners(): void {\n this.removeListener(this.start[0], this.handleStart);\n this.removeListener(this.streamInside[0], this.handleStream);\n this.removeListener(this.end[0], this.handleEnd);\n this.removeListener(this.streamOutside[0], this.handleBetween);\n }\n\n override disconnected(): void {\n this.removeListeners();\n }\n\n /* c8 ignore next 3 */\n override reconnected(): void {\n this.addListeners();\n }\n}\n\nexport const streamingListener: (\n _configGroup: ListenerConfigGroup\n) => DirectiveResult<typeof StreamingListenerDirective> = directive(\n StreamingListenerDirective\n);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type { StreamingListenerDirective };\n"],
5
- "mappings": "aAYA,OAAsB,WAAAA,MAAqB,MAC3C,OAAS,kBAAAC,EAAgB,aAAAC,MAAiB,yBAY1C,MAAMC,EAAkC,CACpC,GACA,IAAY,CAEZ,CACJ,EASA,MAAMC,UAAmCH,CAAe,CAAxD,kCAII,WAAwBE,EACxB,kBAA+BA,EAC/B,SAAsBA,EACtB,mBAAgCA,EAEhC,WAAsB,MAsDtB,iBAAeE,GAAuB,CAClC,KAAK,YAAY,KAAK,MAAM,CAAC,EAAGA,CAAK,EACjC,CAAAA,EAAM,mBAGV,KAAK,gBAAgB,EACrB,KAAK,aAAa,IAAI,EAC1B,EAEA,kBAAgBA,GAAuB,CACnC,KAAK,YAAY,KAAK,aAAa,CAAC,EAAGA,CAAK,CAChD,EAEA,eAAaA,GAAuB,CAChC,KAAK,YAAY,KAAK,IAAI,CAAC,EAAGA,CAAK,EACnC,KAAK,gBAAgB,EACrB,KAAK,aAAa,KAAK,CAC3B,EAEA,mBAAiBA,GAAuB,CACpC,KAAK,YAAY,KAAK,cAAc,CAAC,EAAGA,CAAK,CACjD,EAvEA,OAAOC,EAAmD,CACtD,OAAON,CACX,CAES,OACLO,EACA,CACI,CACI,MAAAC,EACA,IAAAC,EACA,aAAAC,EAAeP,EACf,cAAAQ,EAAgBR,CACpB,CACJ,EACI,CAlEZ,IAAAS,EAmEY,KAAK,UAAaL,EAAqB,UACvC,KAAK,QAAWA,EAAqB,QACrC,KAAK,gBAAgB,GAEzB,KAAK,OACAK,EAAAL,EAAK,UAAL,YAAAK,EAAc,OAAoC,KAAK,QAC5D,KAAK,MAAQJ,EACb,KAAK,IAAMC,EACX,KAAK,aAAeC,EACpB,KAAK,cAAgBC,EACrB,KAAK,aAAa,CACtB,CAEA,aAAaE,EAA4B,CACrC,KAAK,MAAQA,GAAS,KAAK,MACvB,KAAK,QAAU,OACf,KAAK,YAAY,KAAK,cAAc,CAAC,EAAG,KAAK,aAAa,EAC1D,KAAK,YAAY,KAAK,MAAM,CAAC,EAAG,KAAK,WAAW,GACzC,KAAK,QAAU,OACtB,KAAK,YAAY,KAAK,aAAa,CAAC,EAAG,KAAK,YAAY,EACxD,KAAK,YAAY,KAAK,IAAI,CAAC,EAAG,KAAK,SAAS,EAEpD,CAEA,YACIC,EACAT,EACI,CACA,OAAOS,GAAU,WAChBA,EAAiC,KAAK,KAAK,KAAMT,CAAK,EAEtDS,EAA8B,YAAYT,CAAK,CAExD,CAyBA,YAAYU,EAAyBC,EAAkC,CAC/D,MAAM,QAAQD,CAAI,EAClBA,EAAK,IAAKE,GAAc,CACpB,KAAK,QAAQ,iBAAiBA,EAAWD,CAAE,CAC/C,CAAC,EAED,KAAK,QAAQ,iBAAiBD,EAAMC,CAAE,CAE9C,CAEA,eAAeD,EAAyBC,EAAkC,CAClE,MAAM,QAAQD,CAAI,EAClBA,EAAK,IAAKE,GAAc,CACpB,KAAK,QAAQ,oBAAoBA,EAAWD,CAAE,CAClD,CAAC,EAED,KAAK,QAAQ,oBAAoBD,EAAMC,CAAE,CAEjD,CAEA,iBAAwB,CACpB,KAAK,eAAe,KAAK,MAAM,CAAC,EAAG,KAAK,WAAW,EACnD,KAAK,eAAe,KAAK,aAAa,CAAC,EAAG,KAAK,YAAY,EAC3D,KAAK,eAAe,KAAK,IAAI,CAAC,EAAG,KAAK,SAAS,EAC/C,KAAK,eAAe,KAAK,cAAc,CAAC,EAAG,KAAK,aAAa,CACjE,CAES,cAAqB,CAC1B,KAAK,gBAAgB,CACzB,CAGS,aAAoB,CACzB,KAAK,aAAa,CACtB,CACJ,CAEO,aAAM,kBAE6Cd,EACtDE,CACJ",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\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 { ElementPart, nothing, Part } from 'lit';\nimport { AsyncDirective, directive } from 'lit/async-directive.js';\nimport type { DirectiveResult } from 'lit/directive.js';\n\ntype ListenerConfig = [string | string[], (event?: any) => void];\ntype ListenerConfigGroup = {\n start: ListenerConfig;\n end: ListenerConfig;\n streamInside?: ListenerConfig;\n streamOutside?: ListenerConfig;\n};\n\n/* c8 ignore next 6 */\nconst defaultListener: ListenerConfig = [\n '',\n (): void => {\n return;\n },\n];\n\n/**\n * Performantly manage listening to event in a series, like:\n * - `input[type=\"range\"]`: input, input, etc. => change\n * - `sp-color-area`: pointerdown => pointermove, pointermove, etc. => pointerup\n * Lazily bind events to the specific part of the series while\n * throttling streamed events to 1/frame.\n */\nclass StreamingListenerDirective extends AsyncDirective {\n host!: EventTarget | Record<string, unknown> | Element;\n element!: Element;\n\n start: ListenerConfig = defaultListener;\n streamInside: ListenerConfig = defaultListener;\n end: ListenerConfig = defaultListener;\n streamOutside: ListenerConfig = defaultListener;\n\n state: 'off' | 'on' = 'off';\n // Animation frame that will unlock the next \"stream\" event if/when it is dispatched.\n stream?: number;\n\n /* c8 ignore next 4 */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n render(_configGroup: ListenerConfigGroup): typeof nothing {\n return nothing;\n }\n\n override update(\n part: Part,\n [\n {\n start,\n end,\n streamInside = defaultListener,\n streamOutside = defaultListener,\n },\n ]: Parameters<this['render']>\n ): void {\n if (this.element !== (part as ElementPart).element) {\n this.element = (part as ElementPart).element;\n this.removeListeners();\n }\n this.host =\n (part.options?.host as Record<string, unknown>) || this.element;\n this.start = start;\n this.end = end;\n this.streamInside = streamInside;\n this.streamOutside = streamOutside;\n this.addListeners();\n }\n\n addListeners(state?: 'on' | 'off'): void {\n this.state = state || this.state;\n if (this.state === 'off') {\n this.addListener(this.streamOutside[0], this.handleOutside);\n this.addListener(this.start[0], this.handleStart);\n } else if (this.state === 'on') {\n this.addListener(this.streamInside[0], this.handleInside);\n this.addListener(this.end[0], this.handleEnd);\n }\n }\n\n callHandler(\n value: (event: Event) => void | EventListenerObject,\n event: Event\n ): void {\n if (typeof value === 'function') {\n (value as (event: Event) => void).call(this.host, event);\n } else {\n (value as EventListenerObject).handleEvent(event);\n }\n }\n\n handleStream(\n value: (event: Event) => void | EventListenerObject,\n event: Event\n ): void {\n if (this.stream) {\n return;\n }\n this.callHandler(value, event);\n this.stream = requestAnimationFrame(() => {\n this.stream = undefined;\n });\n }\n\n clearStream(): void {\n if (this.stream != null) {\n // Ensure steam events NEVER go after a start or event event.\n cancelAnimationFrame(this.stream);\n this.stream = undefined;\n }\n }\n\n handleStart = (event: Event): void => {\n this.clearStream();\n this.callHandler(this.start[1], event);\n if (event.defaultPrevented) {\n return;\n }\n this.removeListeners();\n this.addListeners('on');\n };\n\n handleInside = (event: Event): void => {\n this.handleStream(this.streamInside[1], event);\n };\n\n handleEnd = (event: Event): void => {\n this.clearStream();\n this.callHandler(this.end[1], event);\n this.removeListeners();\n this.addListeners('off');\n };\n\n handleOutside = (event: Event): void => {\n this.handleStream(this.streamOutside[1], event);\n };\n\n addListener(type: string | string[], fn: (event: Event) => void): void {\n if (Array.isArray(type)) {\n type.map((eventName) => {\n this.element.addEventListener(eventName, fn);\n });\n } else {\n this.element.addEventListener(type, fn);\n }\n }\n\n removeListener(type: string | string[], fn: (event: Event) => void): void {\n if (Array.isArray(type)) {\n type.map((eventName) => {\n this.element.removeEventListener(eventName, fn);\n });\n } else {\n this.element.removeEventListener(type, fn);\n }\n }\n\n removeListeners(): void {\n this.removeListener(this.start[0], this.handleStart);\n this.removeListener(this.streamInside[0], this.handleInside);\n this.removeListener(this.end[0], this.handleEnd);\n this.removeListener(this.streamOutside[0], this.handleOutside);\n }\n\n override disconnected(): void {\n this.removeListeners();\n }\n\n /* c8 ignore next 3 */\n override reconnected(): void {\n this.addListeners();\n }\n}\n\nexport const streamingListener: (\n _configGroup: ListenerConfigGroup\n) => DirectiveResult<typeof StreamingListenerDirective> = directive(\n StreamingListenerDirective\n);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type { StreamingListenerDirective };\n"],
5
+ "mappings": "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",
6
6
  "names": ["nothing", "AsyncDirective", "directive", "defaultListener", "StreamingListenerDirective", "event", "_configGroup", "part", "start", "end", "streamInside", "streamOutside", "_a", "state", "value", "type", "fn", "eventName"]
7
7
  }
@@ -9,9 +9,9 @@ describe("Base", () => {
9
9
  expect(consoleWarnStub.called).to.be.true;
10
10
  const spyCall = consoleWarnStub.getCall(0);
11
11
  expect(
12
- spyCall.args.at(0).includes("dev mode"),
12
+ spyCall.args.at(0),
13
13
  'confirm "dev mode"-centric message'
14
- ).to.be.true;
14
+ ).to.include("dev mode");
15
15
  expect(spyCall.args.at(-1), "confirm `data` shape").to.deep.equal({
16
16
  data: {
17
17
  localName: "base",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["base-devmode.test.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\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 { expect } from '@open-wc/testing';\nimport { stub } from 'sinon';\n\ndescribe('Base', () => {\n it('warns in Dev Mode when no attributes', async () => {\n const consoleWarnStub = stub(console, 'warn');\n const { SpectrumElement } = await import(\n '@spectrum-web-components/base'\n );\n expect(SpectrumElement).to.not.be.undefined;\n\n expect(consoleWarnStub.called).to.be.true;\n const spyCall = consoleWarnStub.getCall(0);\n expect(\n spyCall.args.at(0).includes('dev mode'),\n 'confirm \"dev mode\"-centric message'\n ).to.be.true;\n expect(spyCall.args.at(-1), 'confirm `data` shape').to.deep.equal({\n data: {\n localName: 'base',\n type: 'default',\n level: 'default',\n },\n });\n consoleWarnStub.restore();\n });\n});\n"],
5
- "mappings": ";AAUA,SAAS,cAAc;AACvB,SAAS,YAAY;AAErB,SAAS,QAAQ,MAAM;AACnB,KAAG,wCAAwC,YAAY;AACnD,UAAM,kBAAkB,KAAK,SAAS,MAAM;AAC5C,UAAM,EAAE,gBAAgB,IAAI,MAAM,OAC9B,+BACJ;AACA,WAAO,eAAe,EAAE,GAAG,IAAI,GAAG;AAElC,WAAO,gBAAgB,MAAM,EAAE,GAAG,GAAG;AACrC,UAAM,UAAU,gBAAgB,QAAQ,CAAC;AACzC;AAAA,MACI,QAAQ,KAAK,GAAG,CAAC,EAAE,SAAS,UAAU;AAAA,MACtC;AAAA,IACJ,EAAE,GAAG,GAAG;AACR,WAAO,QAAQ,KAAK,GAAG,EAAE,GAAG,sBAAsB,EAAE,GAAG,KAAK,MAAM;AAAA,MAC9D,MAAM;AAAA,QACF,WAAW;AAAA,QACX,MAAM;AAAA,QACN,OAAO;AAAA,MACX;AAAA,IACJ,CAAC;AACD,oBAAgB,QAAQ;AAAA,EAC5B,CAAC;AACL,CAAC;",
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\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 { expect } from '@open-wc/testing';\nimport { stub } from 'sinon';\n\ndescribe('Base', () => {\n it('warns in Dev Mode when no attributes', async () => {\n const consoleWarnStub = stub(console, 'warn');\n const { SpectrumElement } = await import(\n '@spectrum-web-components/base'\n );\n expect(SpectrumElement).to.not.be.undefined;\n\n expect(consoleWarnStub.called).to.be.true;\n const spyCall = consoleWarnStub.getCall(0);\n expect(\n spyCall.args.at(0) as string,\n 'confirm \"dev mode\"-centric message'\n ).to.include('dev mode');\n expect(spyCall.args.at(-1), 'confirm `data` shape').to.deep.equal({\n data: {\n localName: 'base',\n type: 'default',\n level: 'default',\n },\n });\n consoleWarnStub.restore();\n });\n});\n"],
5
+ "mappings": ";AAUA,SAAS,cAAc;AACvB,SAAS,YAAY;AAErB,SAAS,QAAQ,MAAM;AACnB,KAAG,wCAAwC,YAAY;AACnD,UAAM,kBAAkB,KAAK,SAAS,MAAM;AAC5C,UAAM,EAAE,gBAAgB,IAAI,MAAM,OAC9B,+BACJ;AACA,WAAO,eAAe,EAAE,GAAG,IAAI,GAAG;AAElC,WAAO,gBAAgB,MAAM,EAAE,GAAG,GAAG;AACrC,UAAM,UAAU,gBAAgB,QAAQ,CAAC;AACzC;AAAA,MACI,QAAQ,KAAK,GAAG,CAAC;AAAA,MACjB;AAAA,IACJ,EAAE,GAAG,QAAQ,UAAU;AACvB,WAAO,QAAQ,KAAK,GAAG,EAAE,GAAG,sBAAsB,EAAE,GAAG,KAAK,MAAM;AAAA,MAC9D,MAAM;AAAA,QACF,WAAW;AAAA,QACX,MAAM;AAAA,QACN,OAAO;AAAA,MACX;AAAA,IACJ,CAAC;AACD,oBAAgB,QAAQ;AAAA,EAC5B,CAAC;AACL,CAAC;",
6
6
  "names": []
7
7
  }
@@ -45,7 +45,7 @@ const elements = {
45
45
  "sp-menu-item": () => import("@spectrum-web-components/menu/sp-menu-item.js"),
46
46
  "sp-menu": () => import("@spectrum-web-components/menu/sp-menu.js"),
47
47
  "overlay-trigger": () => import("@spectrum-web-components/overlay/overlay-trigger.js"),
48
- "active-overlay": () => import("@spectrum-web-components/overlay/active-overlay.js"),
48
+ "sp-overlay": () => import("@spectrum-web-components/overlay/sp-overlay.js"),
49
49
  "sp-picker": () => import("@spectrum-web-components/picker/sp-picker.js"),
50
50
  "sp-picker-button": () => import("@spectrum-web-components/picker-button/sp-picker-button.js"),
51
51
  "sp-popover": () => import("@spectrum-web-components/popover/sp-popover.js"),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["define-element.test.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 { expect } from '@open-wc/testing';\nimport { stub } from 'sinon';\nimport {\n isFirefox,\n isWebKit,\n} from '@spectrum-web-components/shared/src/platform.js';\n\n// for window.__swc\nimport '@spectrum-web-components/base';\n\n// mostly alphabetical,\n// but reordered to put dependents above dependencies,\n// in order to avoid transitive dependency conflicts (eg card -> asset)\nconst elements = {\n 'sp-accordion-item': () =>\n import('@spectrum-web-components/accordion/sp-accordion-item.js'),\n 'sp-accordion': () =>\n import('@spectrum-web-components/accordion/sp-accordion.js'),\n 'sp-action-bar': () =>\n import('@spectrum-web-components/action-bar/sp-action-bar.js'),\n 'sp-action-menu': () =>\n import('@spectrum-web-components/action-menu/sp-action-menu.js'),\n 'sp-action-button': () =>\n import('@spectrum-web-components/action-button/sp-action-button.js'),\n 'sp-action-group': () =>\n import('@spectrum-web-components/action-group/sp-action-group.js'),\n 'sp-card': () => import('@spectrum-web-components/card/sp-card.js'),\n 'sp-asset': () => import('@spectrum-web-components/asset/sp-asset.js'),\n 'sp-avatar': () => import('@spectrum-web-components/avatar/sp-avatar.js'),\n 'sp-badge': () => import('@spectrum-web-components/badge/sp-badge.js'),\n 'sp-banner': () => import('@spectrum-web-components/banner/sp-banner.js'),\n 'sp-dialog-wrapper': () =>\n import('@spectrum-web-components/dialog/sp-dialog-wrapper.js'),\n 'sp-dialog': () => import('@spectrum-web-components/dialog/sp-dialog.js'),\n 'sp-dialog-base': () =>\n import('@spectrum-web-components/dialog/sp-dialog-base.js'),\n 'sp-button': () => import('@spectrum-web-components/button/sp-button.js'),\n 'sp-button-group': () =>\n import('@spectrum-web-components/button-group/sp-button-group.js'),\n 'sp-checkbox': () =>\n import('@spectrum-web-components/checkbox/sp-checkbox.js'),\n 'sp-coachmark': () =>\n import('@spectrum-web-components/coachmark/sp-coachmark.js'),\n 'sp-color-area': () =>\n import('@spectrum-web-components/color-area/sp-color-area.js'),\n 'sp-color-handle': () =>\n import('@spectrum-web-components/color-handle/sp-color-handle.js'),\n 'sp-color-loupe': () =>\n import('@spectrum-web-components/color-loupe/sp-color-loupe.js'),\n 'sp-color-slider': () =>\n import('@spectrum-web-components/color-slider/sp-color-slider.js'),\n 'sp-color-wheel': () =>\n import('@spectrum-web-components/color-wheel/sp-color-wheel.js'),\n 'sp-divider': () =>\n import('@spectrum-web-components/divider/sp-divider.js'),\n 'sp-dropzone': () =>\n import('@spectrum-web-components/dropzone/sp-dropzone.js'),\n 'sp-meter': () => import('@spectrum-web-components/meter/sp-meter.js'),\n 'sp-field-group': () =>\n import('@spectrum-web-components/field-group/sp-field-group.js'),\n 'sp-field-label': () =>\n import('@spectrum-web-components/field-label/sp-field-label.js'),\n 'sp-help-text': () =>\n import('@spectrum-web-components/help-text/sp-help-text.js'),\n 'sp-icon': () => import('@spectrum-web-components/icon/sp-icon.js'),\n 'sp-icons-medium': () =>\n import('@spectrum-web-components/icons/sp-icons-medium.js'),\n 'sp-icons-large': () =>\n import('@spectrum-web-components/icons/sp-icons-large.js'),\n 'sp-illustrated-message': () =>\n import(\n '@spectrum-web-components/illustrated-message/sp-illustrated-message.js'\n ),\n 'sp-link': () => import('@spectrum-web-components/link/sp-link.js'),\n 'sp-menu-group': () =>\n import('@spectrum-web-components/menu/sp-menu-group.js'),\n 'sp-menu-item': () =>\n import('@spectrum-web-components/menu/sp-menu-item.js'),\n 'sp-menu': () => import('@spectrum-web-components/menu/sp-menu.js'),\n 'overlay-trigger': () =>\n import('@spectrum-web-components/overlay/overlay-trigger.js'),\n 'active-overlay': () =>\n import('@spectrum-web-components/overlay/active-overlay.js'),\n 'sp-picker': () => import('@spectrum-web-components/picker/sp-picker.js'),\n 'sp-picker-button': () =>\n import('@spectrum-web-components/picker-button/sp-picker-button.js'),\n 'sp-popover': () =>\n import('@spectrum-web-components/popover/sp-popover.js'),\n 'sp-progress-bar': () =>\n import('@spectrum-web-components/progress-bar/sp-progress-bar.js'),\n 'sp-progress-circle': () =>\n import(\n '@spectrum-web-components/progress-circle/sp-progress-circle.js'\n ),\n 'sp-quick-actions': () =>\n import('@spectrum-web-components/quick-actions/sp-quick-actions.js'),\n 'sp-radio-group': () =>\n import('@spectrum-web-components/radio/sp-radio-group.js'),\n 'sp-radio': () => import('@spectrum-web-components/radio/sp-radio.js'),\n 'sp-search': () => import('@spectrum-web-components/search/sp-search.js'),\n 'sp-sidenav-item': () =>\n import('@spectrum-web-components/sidenav/sp-sidenav-item.js'),\n 'sp-sidenav': () =>\n import('@spectrum-web-components/sidenav/sp-sidenav.js'),\n 'sp-slider': () => import('@spectrum-web-components/slider/sp-slider.js'),\n 'sp-slider-handle': () =>\n import('@spectrum-web-components/slider/sp-slider-handle.js'),\n 'sp-split-button': () =>\n import('@spectrum-web-components/split-button/sp-split-button.js'),\n 'sp-split-view': () =>\n import('@spectrum-web-components/split-view/sp-split-view.js'),\n 'sp-status-light': () =>\n import('@spectrum-web-components/status-light/sp-status-light.js'),\n 'sp-swatch-group': () =>\n import('@spectrum-web-components/swatch/sp-swatch-group.js'),\n 'sp-swatch': () => import('@spectrum-web-components/swatch/sp-swatch.js'),\n 'sp-switch': () => import('@spectrum-web-components/switch/sp-switch.js'),\n 'sp-table': () => import('@spectrum-web-components/table/sp-table.js'),\n 'sp-table-body': () =>\n import('@spectrum-web-components/table/sp-table-body.js'),\n 'sp-table-cell': () =>\n import('@spectrum-web-components/table/sp-table-cell.js'),\n 'sp-table-head': () =>\n import('@spectrum-web-components/table/sp-table-head.js'),\n 'sp-table-checkbox-cell': () =>\n import('@spectrum-web-components/table/sp-table-checkbox-cell.js'),\n 'sp-table-head-cell': () =>\n import('@spectrum-web-components/table/sp-table-head-cell.js'),\n 'sp-table-row': () =>\n import('@spectrum-web-components/table/sp-table-row.js'),\n 'sp-tab': () => import('@spectrum-web-components/tabs/sp-tab.js'),\n 'sp-tabs': () => import('@spectrum-web-components/tabs/sp-tabs.js'),\n 'sp-tabs-overflow': () =>\n import('@spectrum-web-components/tabs/sp-tabs-overflow.js'),\n 'sp-tag': () => import('@spectrum-web-components/tags/sp-tag.js'),\n 'sp-tags': () => import('@spectrum-web-components/tags/sp-tags.js'),\n 'sp-textfield': () =>\n import('@spectrum-web-components/textfield/sp-textfield.js'),\n 'sp-thumbnail': () =>\n import('@spectrum-web-components/thumbnail/sp-thumbnail.js'),\n 'sp-toast': () => import('@spectrum-web-components/toast/sp-toast.js'),\n 'sp-tooltip': () =>\n import('@spectrum-web-components/tooltip/sp-tooltip.js'),\n 'sp-top-nav': () =>\n import('@spectrum-web-components/top-nav/sp-top-nav.js'),\n 'sp-tray': () => import('@spectrum-web-components/tray/sp-tray.js'),\n 'sp-underlay': () =>\n import('@spectrum-web-components/underlay/sp-underlay.js'),\n};\n\nconst browser: 'webkit' | 'firefox' | 'chromium' = isWebKit()\n ? 'webkit'\n : isFirefox()\n ? 'firefox'\n : 'chromium';\n\ndescribe('define-element', function () {\n // registrations are globally-unique, so retries will always fail\n this.retries(0);\n\n beforeEach(function () {\n window.__swc.verbose = true;\n this.warn = stub(console, 'warn');\n });\n\n afterEach(function () {\n this.warn.resetHistory();\n window.__swc.verbose = false;\n this.warn.restore();\n });\n\n Object.entries(elements).forEach(([name, register]) =>\n it(`'${name}' warns on redefinition`, async function () {\n // classes already-defined via transitive dependencies can't be tested this way\n if (customElements.get(name)) {\n this.skip();\n }\n const error = {\n webkit: 'Cannot define multiple custom elements with the same tag name',\n firefox: `'${name}' has already been defined`,\n chromium: `\"${name}\" has already been used with this registry`,\n }[browser];\n let caughtError: Error | undefined;\n\n customElements.define(name, class extends HTMLElement {});\n try {\n await register();\n } catch (error) {\n caughtError = error as Error;\n }\n\n expect(caughtError?.message ?? '').to.include(error);\n expect(this.warn.called, 'should call console.warn()').to.be.true;\n const spyCall = this.warn.getCall(0);\n expect(\n (spyCall.args.at(0) as string).includes('redefine'),\n 'message should warn about redefining an element'\n ).to.be.true;\n })\n );\n});\n"],
5
- "mappings": "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",
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 { expect } from '@open-wc/testing';\nimport { stub } from 'sinon';\nimport {\n isFirefox,\n isWebKit,\n} from '@spectrum-web-components/shared/src/platform.js';\n\n// for window.__swc\nimport '@spectrum-web-components/base';\n\n// mostly alphabetical,\n// but reordered to put dependents above dependencies,\n// in order to avoid transitive dependency conflicts (eg card -> asset)\nconst elements = {\n 'sp-accordion-item': () =>\n import('@spectrum-web-components/accordion/sp-accordion-item.js'),\n 'sp-accordion': () =>\n import('@spectrum-web-components/accordion/sp-accordion.js'),\n 'sp-action-bar': () =>\n import('@spectrum-web-components/action-bar/sp-action-bar.js'),\n 'sp-action-menu': () =>\n import('@spectrum-web-components/action-menu/sp-action-menu.js'),\n 'sp-action-button': () =>\n import('@spectrum-web-components/action-button/sp-action-button.js'),\n 'sp-action-group': () =>\n import('@spectrum-web-components/action-group/sp-action-group.js'),\n 'sp-card': () => import('@spectrum-web-components/card/sp-card.js'),\n 'sp-asset': () => import('@spectrum-web-components/asset/sp-asset.js'),\n 'sp-avatar': () => import('@spectrum-web-components/avatar/sp-avatar.js'),\n 'sp-badge': () => import('@spectrum-web-components/badge/sp-badge.js'),\n 'sp-banner': () => import('@spectrum-web-components/banner/sp-banner.js'),\n 'sp-dialog-wrapper': () =>\n import('@spectrum-web-components/dialog/sp-dialog-wrapper.js'),\n 'sp-dialog': () => import('@spectrum-web-components/dialog/sp-dialog.js'),\n 'sp-dialog-base': () =>\n import('@spectrum-web-components/dialog/sp-dialog-base.js'),\n 'sp-button': () => import('@spectrum-web-components/button/sp-button.js'),\n 'sp-button-group': () =>\n import('@spectrum-web-components/button-group/sp-button-group.js'),\n 'sp-checkbox': () =>\n import('@spectrum-web-components/checkbox/sp-checkbox.js'),\n 'sp-coachmark': () =>\n import('@spectrum-web-components/coachmark/sp-coachmark.js'),\n 'sp-color-area': () =>\n import('@spectrum-web-components/color-area/sp-color-area.js'),\n 'sp-color-handle': () =>\n import('@spectrum-web-components/color-handle/sp-color-handle.js'),\n 'sp-color-loupe': () =>\n import('@spectrum-web-components/color-loupe/sp-color-loupe.js'),\n 'sp-color-slider': () =>\n import('@spectrum-web-components/color-slider/sp-color-slider.js'),\n 'sp-color-wheel': () =>\n import('@spectrum-web-components/color-wheel/sp-color-wheel.js'),\n 'sp-divider': () =>\n import('@spectrum-web-components/divider/sp-divider.js'),\n 'sp-dropzone': () =>\n import('@spectrum-web-components/dropzone/sp-dropzone.js'),\n 'sp-meter': () => import('@spectrum-web-components/meter/sp-meter.js'),\n 'sp-field-group': () =>\n import('@spectrum-web-components/field-group/sp-field-group.js'),\n 'sp-field-label': () =>\n import('@spectrum-web-components/field-label/sp-field-label.js'),\n 'sp-help-text': () =>\n import('@spectrum-web-components/help-text/sp-help-text.js'),\n 'sp-icon': () => import('@spectrum-web-components/icon/sp-icon.js'),\n 'sp-icons-medium': () =>\n import('@spectrum-web-components/icons/sp-icons-medium.js'),\n 'sp-icons-large': () =>\n import('@spectrum-web-components/icons/sp-icons-large.js'),\n 'sp-illustrated-message': () =>\n import(\n '@spectrum-web-components/illustrated-message/sp-illustrated-message.js'\n ),\n 'sp-link': () => import('@spectrum-web-components/link/sp-link.js'),\n 'sp-menu-group': () =>\n import('@spectrum-web-components/menu/sp-menu-group.js'),\n 'sp-menu-item': () =>\n import('@spectrum-web-components/menu/sp-menu-item.js'),\n 'sp-menu': () => import('@spectrum-web-components/menu/sp-menu.js'),\n 'overlay-trigger': () =>\n import('@spectrum-web-components/overlay/overlay-trigger.js'),\n 'sp-overlay': () =>\n import('@spectrum-web-components/overlay/sp-overlay.js'),\n 'sp-picker': () => import('@spectrum-web-components/picker/sp-picker.js'),\n 'sp-picker-button': () =>\n import('@spectrum-web-components/picker-button/sp-picker-button.js'),\n 'sp-popover': () =>\n import('@spectrum-web-components/popover/sp-popover.js'),\n 'sp-progress-bar': () =>\n import('@spectrum-web-components/progress-bar/sp-progress-bar.js'),\n 'sp-progress-circle': () =>\n import(\n '@spectrum-web-components/progress-circle/sp-progress-circle.js'\n ),\n 'sp-quick-actions': () =>\n import('@spectrum-web-components/quick-actions/sp-quick-actions.js'),\n 'sp-radio-group': () =>\n import('@spectrum-web-components/radio/sp-radio-group.js'),\n 'sp-radio': () => import('@spectrum-web-components/radio/sp-radio.js'),\n 'sp-search': () => import('@spectrum-web-components/search/sp-search.js'),\n 'sp-sidenav-item': () =>\n import('@spectrum-web-components/sidenav/sp-sidenav-item.js'),\n 'sp-sidenav': () =>\n import('@spectrum-web-components/sidenav/sp-sidenav.js'),\n 'sp-slider': () => import('@spectrum-web-components/slider/sp-slider.js'),\n 'sp-slider-handle': () =>\n import('@spectrum-web-components/slider/sp-slider-handle.js'),\n 'sp-split-button': () =>\n import('@spectrum-web-components/split-button/sp-split-button.js'),\n 'sp-split-view': () =>\n import('@spectrum-web-components/split-view/sp-split-view.js'),\n 'sp-status-light': () =>\n import('@spectrum-web-components/status-light/sp-status-light.js'),\n 'sp-swatch-group': () =>\n import('@spectrum-web-components/swatch/sp-swatch-group.js'),\n 'sp-swatch': () => import('@spectrum-web-components/swatch/sp-swatch.js'),\n 'sp-switch': () => import('@spectrum-web-components/switch/sp-switch.js'),\n 'sp-table': () => import('@spectrum-web-components/table/sp-table.js'),\n 'sp-table-body': () =>\n import('@spectrum-web-components/table/sp-table-body.js'),\n 'sp-table-cell': () =>\n import('@spectrum-web-components/table/sp-table-cell.js'),\n 'sp-table-head': () =>\n import('@spectrum-web-components/table/sp-table-head.js'),\n 'sp-table-checkbox-cell': () =>\n import('@spectrum-web-components/table/sp-table-checkbox-cell.js'),\n 'sp-table-head-cell': () =>\n import('@spectrum-web-components/table/sp-table-head-cell.js'),\n 'sp-table-row': () =>\n import('@spectrum-web-components/table/sp-table-row.js'),\n 'sp-tab': () => import('@spectrum-web-components/tabs/sp-tab.js'),\n 'sp-tabs': () => import('@spectrum-web-components/tabs/sp-tabs.js'),\n 'sp-tabs-overflow': () =>\n import('@spectrum-web-components/tabs/sp-tabs-overflow.js'),\n 'sp-tag': () => import('@spectrum-web-components/tags/sp-tag.js'),\n 'sp-tags': () => import('@spectrum-web-components/tags/sp-tags.js'),\n 'sp-textfield': () =>\n import('@spectrum-web-components/textfield/sp-textfield.js'),\n 'sp-thumbnail': () =>\n import('@spectrum-web-components/thumbnail/sp-thumbnail.js'),\n 'sp-toast': () => import('@spectrum-web-components/toast/sp-toast.js'),\n 'sp-tooltip': () =>\n import('@spectrum-web-components/tooltip/sp-tooltip.js'),\n 'sp-top-nav': () =>\n import('@spectrum-web-components/top-nav/sp-top-nav.js'),\n 'sp-tray': () => import('@spectrum-web-components/tray/sp-tray.js'),\n 'sp-underlay': () =>\n import('@spectrum-web-components/underlay/sp-underlay.js'),\n};\n\nconst browser: 'webkit' | 'firefox' | 'chromium' = isWebKit()\n ? 'webkit'\n : isFirefox()\n ? 'firefox'\n : 'chromium';\n\ndescribe('define-element', function () {\n // registrations are globally-unique, so retries will always fail\n this.retries(0);\n\n beforeEach(function () {\n window.__swc.verbose = true;\n this.warn = stub(console, 'warn');\n });\n\n afterEach(function () {\n this.warn.resetHistory();\n window.__swc.verbose = false;\n this.warn.restore();\n });\n\n Object.entries(elements).forEach(([name, register]) =>\n it(`'${name}' warns on redefinition`, async function () {\n // classes already-defined via transitive dependencies can't be tested this way\n if (customElements.get(name)) {\n this.skip();\n }\n const error = {\n webkit: 'Cannot define multiple custom elements with the same tag name',\n firefox: `'${name}' has already been defined`,\n chromium: `\"${name}\" has already been used with this registry`,\n }[browser];\n let caughtError: Error | undefined;\n\n customElements.define(name, class extends HTMLElement {});\n try {\n await register();\n } catch (error) {\n caughtError = error as Error;\n }\n\n expect(caughtError?.message ?? '').to.include(error);\n expect(this.warn.called, 'should call console.warn()').to.be.true;\n const spyCall = this.warn.getCall(0);\n expect(\n (spyCall.args.at(0) as string).includes('redefine'),\n 'message should warn about redefining an element'\n ).to.be.true;\n })\n );\n});\n"],
5
+ "mappings": ";AAYA,SAAS,cAAc;AACvB,SAAS,YAAY;AACrB;AAAA,EACI;AAAA,EACA;AAAA,OACG;AAGP,OAAO;AAKP,MAAM,WAAW;AAAA,EACb,qBAAqB,MACjB,OAAO,yDAAyD;AAAA,EACpE,gBAAgB,MACZ,OAAO,oDAAoD;AAAA,EAC/D,iBAAiB,MACb,OAAO,sDAAsD;AAAA,EACjE,kBAAkB,MACd,OAAO,wDAAwD;AAAA,EACnE,oBAAoB,MAChB,OAAO,4DAA4D;AAAA,EACvE,mBAAmB,MACf,OAAO,0DAA0D;AAAA,EACrE,WAAW,MAAM,OAAO,0CAA0C;AAAA,EAClE,YAAY,MAAM,OAAO,4CAA4C;AAAA,EACrE,aAAa,MAAM,OAAO,8CAA8C;AAAA,EACxE,YAAY,MAAM,OAAO,4CAA4C;AAAA,EACrE,aAAa,MAAM,OAAO,8CAA8C;AAAA,EACxE,qBAAqB,MACjB,OAAO,sDAAsD;AAAA,EACjE,aAAa,MAAM,OAAO,8CAA8C;AAAA,EACxE,kBAAkB,MACd,OAAO,mDAAmD;AAAA,EAC9D,aAAa,MAAM,OAAO,8CAA8C;AAAA,EACxE,mBAAmB,MACf,OAAO,0DAA0D;AAAA,EACrE,eAAe,MACX,OAAO,kDAAkD;AAAA,EAC7D,gBAAgB,MACZ,OAAO,oDAAoD;AAAA,EAC/D,iBAAiB,MACb,OAAO,sDAAsD;AAAA,EACjE,mBAAmB,MACf,OAAO,0DAA0D;AAAA,EACrE,kBAAkB,MACd,OAAO,wDAAwD;AAAA,EACnE,mBAAmB,MACf,OAAO,0DAA0D;AAAA,EACrE,kBAAkB,MACd,OAAO,wDAAwD;AAAA,EACnE,cAAc,MACV,OAAO,gDAAgD;AAAA,EAC3D,eAAe,MACX,OAAO,kDAAkD;AAAA,EAC7D,YAAY,MAAM,OAAO,4CAA4C;AAAA,EACrE,kBAAkB,MACd,OAAO,wDAAwD;AAAA,EACnE,kBAAkB,MACd,OAAO,wDAAwD;AAAA,EACnE,gBAAgB,MACZ,OAAO,oDAAoD;AAAA,EAC/D,WAAW,MAAM,OAAO,0CAA0C;AAAA,EAClE,mBAAmB,MACf,OAAO,mDAAmD;AAAA,EAC9D,kBAAkB,MACd,OAAO,kDAAkD;AAAA,EAC7D,0BAA0B,MACtB,OACI,wEACJ;AAAA,EACJ,WAAW,MAAM,OAAO,0CAA0C;AAAA,EAClE,iBAAiB,MACb,OAAO,gDAAgD;AAAA,EAC3D,gBAAgB,MACZ,OAAO,+CAA+C;AAAA,EAC1D,WAAW,MAAM,OAAO,0CAA0C;AAAA,EAClE,mBAAmB,MACf,OAAO,qDAAqD;AAAA,EAChE,cAAc,MACV,OAAO,gDAAgD;AAAA,EAC3D,aAAa,MAAM,OAAO,8CAA8C;AAAA,EACxE,oBAAoB,MAChB,OAAO,4DAA4D;AAAA,EACvE,cAAc,MACV,OAAO,gDAAgD;AAAA,EAC3D,mBAAmB,MACf,OAAO,0DAA0D;AAAA,EACrE,sBAAsB,MAClB,OACI,gEACJ;AAAA,EACJ,oBAAoB,MAChB,OAAO,4DAA4D;AAAA,EACvE,kBAAkB,MACd,OAAO,kDAAkD;AAAA,EAC7D,YAAY,MAAM,OAAO,4CAA4C;AAAA,EACrE,aAAa,MAAM,OAAO,8CAA8C;AAAA,EACxE,mBAAmB,MACf,OAAO,qDAAqD;AAAA,EAChE,cAAc,MACV,OAAO,gDAAgD;AAAA,EAC3D,aAAa,MAAM,OAAO,8CAA8C;AAAA,EACxE,oBAAoB,MAChB,OAAO,qDAAqD;AAAA,EAChE,mBAAmB,MACf,OAAO,0DAA0D;AAAA,EACrE,iBAAiB,MACb,OAAO,sDAAsD;AAAA,EACjE,mBAAmB,MACf,OAAO,0DAA0D;AAAA,EACrE,mBAAmB,MACf,OAAO,oDAAoD;AAAA,EAC/D,aAAa,MAAM,OAAO,8CAA8C;AAAA,EACxE,aAAa,MAAM,OAAO,8CAA8C;AAAA,EACxE,YAAY,MAAM,OAAO,4CAA4C;AAAA,EACrE,iBAAiB,MACb,OAAO,iDAAiD;AAAA,EAC5D,iBAAiB,MACb,OAAO,iDAAiD;AAAA,EAC5D,iBAAiB,MACb,OAAO,iDAAiD;AAAA,EAC5D,0BAA0B,MACtB,OAAO,0DAA0D;AAAA,EACrE,sBAAsB,MAClB,OAAO,sDAAsD;AAAA,EACjE,gBAAgB,MACZ,OAAO,gDAAgD;AAAA,EAC3D,UAAU,MAAM,OAAO,yCAAyC;AAAA,EAChE,WAAW,MAAM,OAAO,0CAA0C;AAAA,EAClE,oBAAoB,MAChB,OAAO,mDAAmD;AAAA,EAC9D,UAAU,MAAM,OAAO,yCAAyC;AAAA,EAChE,WAAW,MAAM,OAAO,0CAA0C;AAAA,EAClE,gBAAgB,MACZ,OAAO,oDAAoD;AAAA,EAC/D,gBAAgB,MACZ,OAAO,oDAAoD;AAAA,EAC/D,YAAY,MAAM,OAAO,4CAA4C;AAAA,EACrE,cAAc,MACV,OAAO,gDAAgD;AAAA,EAC3D,cAAc,MACV,OAAO,gDAAgD;AAAA,EAC3D,WAAW,MAAM,OAAO,0CAA0C;AAAA,EAClE,eAAe,MACX,OAAO,kDAAkD;AACjE;AAEA,MAAM,UAA6C,SAAS,IACtD,WACA,UAAU,IACV,YACA;AAEN,SAAS,kBAAkB,WAAY;AAEnC,OAAK,QAAQ,CAAC;AAEd,aAAW,WAAY;AACnB,WAAO,MAAM,UAAU;AACvB,SAAK,OAAO,KAAK,SAAS,MAAM;AAAA,EACpC,CAAC;AAED,YAAU,WAAY;AAClB,SAAK,KAAK,aAAa;AACvB,WAAO,MAAM,UAAU;AACvB,SAAK,KAAK,QAAQ;AAAA,EACtB,CAAC;AAED,SAAO,QAAQ,QAAQ,EAAE;AAAA,IAAQ,CAAC,CAAC,MAAM,QAAQ,MAC7C,GAAG,IAAI,+BAA+B,iBAAkB;AAxLhE;AA0LY,UAAI,eAAe,IAAI,IAAI,GAAG;AAC1B,aAAK,KAAK;AAAA,MACd;AACA,YAAM,QAAQ;AAAA,QACV,QAAQ;AAAA,QACR,SAAS,IAAI;AAAA,QACb,UAAU,IAAI;AAAA,MAClB,EAAE,OAAO;AACT,UAAI;AAEJ,qBAAe,OAAO,MAAM,cAAc,YAAY;AAAA,MAAC,CAAC;AACxD,UAAI;AACA,cAAM,SAAS;AAAA,MACnB,SAASA,QAAP;AACE,sBAAcA;AAAA,MAClB;AAEA,cAAO,gDAAa,YAAb,YAAwB,EAAE,EAAE,GAAG,QAAQ,KAAK;AACnD,aAAO,KAAK,KAAK,QAAQ,4BAA4B,EAAE,GAAG,GAAG;AAC7D,YAAM,UAAU,KAAK,KAAK,QAAQ,CAAC;AACnC;AAAA,QACK,QAAQ,KAAK,GAAG,CAAC,EAAa,SAAS,UAAU;AAAA,QAClD;AAAA,MACJ,EAAE,GAAG,GAAG;AAAA,IACZ,CAAC;AAAA,EACL;AACJ,CAAC;",
6
6
  "names": ["error"]
7
7
  }