@spectrum-web-components/base 0.7.3 → 0.7.4
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 +2 -2
- package/src/Base.dev.js +34 -6
- package/src/Base.dev.js.map +2 -2
- package/src/Base.js +1 -1
- package/src/Base.js.map +1 -1
- package/src/streaming-listener.dev.js +3 -0
- package/src/streaming-listener.dev.js.map +1 -1
- package/src/streaming-listener.js.map +1 -1
- package/test/base-devmode.test.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spectrum-web-components/base",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.4",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -103,5 +103,5 @@
|
|
|
103
103
|
"sideEffects": [
|
|
104
104
|
"./**/*.dev.js"
|
|
105
105
|
],
|
|
106
|
-
"gitHead": "
|
|
106
|
+
"gitHead": "6b88f4e9d596e410c2f9ed2272bc7d8d961eed1e"
|
|
107
107
|
}
|
package/src/Base.dev.js
CHANGED
|
@@ -10,6 +10,7 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
10
10
|
__defProp(target, key, result);
|
|
11
11
|
return result;
|
|
12
12
|
};
|
|
13
|
+
var _a, _b, _c;
|
|
13
14
|
import { LitElement } from "lit";
|
|
14
15
|
import { property } from "lit/decorators.js";
|
|
15
16
|
const observedForElements = /* @__PURE__ */ new Set();
|
|
@@ -31,6 +32,9 @@ export function SpectrumMixin(constructor) {
|
|
|
31
32
|
super(...arguments);
|
|
32
33
|
this.dir = "ltr";
|
|
33
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
34
38
|
get isLTR() {
|
|
35
39
|
return this.dir === "ltr";
|
|
36
40
|
}
|
|
@@ -51,7 +55,9 @@ export function SpectrumMixin(constructor) {
|
|
|
51
55
|
while (dirParent !== document.documentElement && !canManageContentDirection(
|
|
52
56
|
dirParent
|
|
53
57
|
)) {
|
|
54
|
-
dirParent = dirParent.assignedSlot ||
|
|
58
|
+
dirParent = dirParent.assignedSlot || // step into the shadow DOM of the parent of a slotted node
|
|
59
|
+
dirParent.parentNode || // DOM Element detected
|
|
60
|
+
dirParent.host;
|
|
55
61
|
}
|
|
56
62
|
const oldDir = this.dir;
|
|
57
63
|
this.dir = dirParent.dir === "rtl" ? dirParent.dir : this.dir || "ltr";
|
|
@@ -98,22 +104,44 @@ export function SpectrumMixin(constructor) {
|
|
|
98
104
|
export class SpectrumElement extends SpectrumMixin(LitElement) {
|
|
99
105
|
}
|
|
100
106
|
if (true) {
|
|
107
|
+
const ignoreWarningTypes = {
|
|
108
|
+
default: false,
|
|
109
|
+
accessibility: false,
|
|
110
|
+
api: false
|
|
111
|
+
};
|
|
112
|
+
const ignoreWarningLevels = {
|
|
113
|
+
default: false,
|
|
114
|
+
low: false,
|
|
115
|
+
medium: false,
|
|
116
|
+
high: false,
|
|
117
|
+
deprecation: false
|
|
118
|
+
};
|
|
101
119
|
window.__swc = {
|
|
102
120
|
...window.__swc,
|
|
121
|
+
ignoreWarningLocalNames: {
|
|
122
|
+
...((_a = window.__swc) == null ? void 0 : _a.ignoreWarningLocalNames) || {}
|
|
123
|
+
},
|
|
124
|
+
ignoreWarningTypes: {
|
|
125
|
+
...ignoreWarningTypes,
|
|
126
|
+
...((_b = window.__swc) == null ? void 0 : _b.ignoreWarningTypes) || {}
|
|
127
|
+
},
|
|
128
|
+
ignoreWarningLevels: {
|
|
129
|
+
...ignoreWarningLevels,
|
|
130
|
+
...((_c = window.__swc) == null ? void 0 : _c.ignoreWarningLevels) || {}
|
|
131
|
+
},
|
|
103
132
|
issuedWarnings: /* @__PURE__ */ new Set(),
|
|
104
133
|
warn: (element, message, url, { type = "api", level = "default", issues } = {}) => {
|
|
105
|
-
var _a, _b, _c;
|
|
106
134
|
const { localName = "base" } = element || {};
|
|
107
135
|
const id = `${localName}:${type}:${level}`;
|
|
108
136
|
if (!window.__swc.verbose && window.__swc.issuedWarnings.has(id))
|
|
109
137
|
return;
|
|
110
|
-
window.__swc.
|
|
111
|
-
if ((_a = window.__swc.ignoreWarningLocalNames) == null ? void 0 : _a[localName])
|
|
138
|
+
if (window.__swc.ignoreWarningLocalNames[localName])
|
|
112
139
|
return;
|
|
113
|
-
if (
|
|
140
|
+
if (window.__swc.ignoreWarningTypes[type])
|
|
114
141
|
return;
|
|
115
|
-
if (
|
|
142
|
+
if (window.__swc.ignoreWarningLevels[level])
|
|
116
143
|
return;
|
|
144
|
+
window.__swc.issuedWarnings.add(id);
|
|
117
145
|
let listedIssues = "";
|
|
118
146
|
if (issues && issues.length) {
|
|
119
147
|
issues.unshift("");
|
package/src/Base.dev.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["Base.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 { LitElement, ReactiveElement } from 'lit';\nimport { property } from 'lit/decorators.js';\ntype ThemeRoot = HTMLElement & {\n startManagingContentDirection: (el: HTMLElement) => void;\n stopManagingContentDirection: (el: HTMLElement) => void;\n};\n\ntype Constructor<T = Record<string, unknown>> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n prototype: T;\n};\n\nexport interface SpectrumInterface {\n shadowRoot: ShadowRoot;\n isLTR: boolean;\n hasVisibleFocusInTree(): boolean;\n dir: 'ltr' | 'rtl';\n}\n\nconst observedForElements: Set<HTMLElement> = new Set();\n\nconst updateRTL = (): void => {\n const dir =\n document.documentElement.dir === 'rtl'\n ? document.documentElement.dir\n : 'ltr';\n observedForElements.forEach((el) => {\n el.setAttribute('dir', dir);\n });\n};\n\nconst rtlObserver = new MutationObserver(updateRTL);\n\nrtlObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['dir'],\n});\n\ntype ContentDirectionManager = HTMLElement & {\n startManagingContentDirection?(): void;\n};\n\nconst canManageContentDirection = (el: ContentDirectionManager): boolean =>\n typeof el.startManagingContentDirection !== 'undefined' ||\n el.tagName === 'SP-THEME';\n\nexport function SpectrumMixin<T extends Constructor<ReactiveElement>>(\n constructor: T\n): T & Constructor<SpectrumInterface> {\n class SlotTextObservingElement extends constructor {\n /**\n * @private\n */\n public override shadowRoot!: ShadowRoot;\n private _dirParent?: HTMLElement;\n\n /**\n * @private\n */\n @property({ reflect: true })\n public override dir: 'ltr' | 'rtl' = 'ltr';\n\n /**\n * @private\n */\n public get isLTR(): boolean {\n return this.dir === 'ltr';\n }\n\n public hasVisibleFocusInTree(): boolean {\n const activeElement = (this.getRootNode() as Document)\n .activeElement as HTMLElement;\n if (!activeElement) {\n return false;\n }\n // Browsers without support for the `:focus-visible`\n // selector will throw on the following test (Safari, older things).\n // Some won't throw, but will be focusing item rather than the menu and\n // will rely on the polyfill to know whether focus is \"visible\" or not.\n try {\n return (\n activeElement.matches(':focus-visible') ||\n activeElement.matches('.focus-visible')\n );\n /* c8 ignore next 3 */\n } catch (error) {\n return activeElement.matches('.focus-visible');\n }\n }\n\n public override connectedCallback(): void {\n if (!this.hasAttribute('dir')) {\n let dirParent = ((this as HTMLElement).assignedSlot ||\n this.parentNode) as HTMLElement;\n while (\n dirParent !== document.documentElement &&\n !canManageContentDirection(\n dirParent as ContentDirectionManager\n )\n ) {\n dirParent = ((dirParent as HTMLElement).assignedSlot || // step into the shadow DOM of the parent of a slotted node\n dirParent.parentNode || // DOM Element detected\n (dirParent as unknown as ShadowRoot)\n .host) as HTMLElement;\n }\n const oldDir = this.dir;\n this.dir =\n dirParent.dir === 'rtl' ? dirParent.dir : this.dir || 'ltr';\n if (oldDir === this.dir) {\n this.setAttribute('dir', this.dir);\n }\n if (dirParent === document.documentElement) {\n observedForElements.add(this);\n } else {\n const { localName } = dirParent;\n if (\n localName.search('-') > -1 &&\n !customElements.get(localName)\n ) {\n customElements.whenDefined(localName).then(() => {\n (\n dirParent as ThemeRoot\n ).startManagingContentDirection(this);\n });\n } else {\n (dirParent as ThemeRoot).startManagingContentDirection(\n this\n );\n }\n }\n this._dirParent = dirParent as HTMLElement;\n }\n super.connectedCallback();\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this._dirParent) {\n if (this._dirParent === document.documentElement) {\n observedForElements.delete(this);\n } else {\n (this._dirParent as ThemeRoot).stopManagingContentDirection(\n this\n );\n }\n this.removeAttribute('dir');\n }\n }\n }\n return SlotTextObservingElement;\n}\n\nexport class SpectrumElement extends SpectrumMixin(LitElement) {}\n\nif (window.__swc.DEBUG) {\n window.__swc = {\n ...window.__swc,\n issuedWarnings: new Set(),\n warn: (\n element,\n message,\n url,\n { type = 'api', level = 'default', issues } = {}\n ): void => {\n const { localName = 'base' } = element || {};\n const id = `${localName}:${type}:${level}` as BrandedSWCWarningID;\n if (!window.__swc.verbose && window.__swc.issuedWarnings.has(id))\n return;\n
|
|
5
|
-
"mappings": ";;;;;;;;;;;;AAYA,SAAS,kBAAmC;AAC5C,SAAS,gBAAgB;AAmBzB,MAAM,sBAAwC,oBAAI,IAAI;AAEtD,MAAM,YAAY,MAAY;AAC1B,QAAM,MACF,SAAS,gBAAgB,QAAQ,QAC3B,SAAS,gBAAgB,MACzB;AACV,sBAAoB,QAAQ,CAAC,OAAO;AAChC,OAAG,aAAa,OAAO,GAAG;AAAA,EAC9B,CAAC;AACL;AAEA,MAAM,cAAc,IAAI,iBAAiB,SAAS;AAElD,YAAY,QAAQ,SAAS,iBAAiB;AAAA,EAC1C,YAAY;AAAA,EACZ,iBAAiB,CAAC,KAAK;AAC3B,CAAC;AAMD,MAAM,4BAA4B,CAAC,OAC/B,OAAO,GAAG,kCAAkC,eAC5C,GAAG,YAAY;AAEZ,gBAAS,cACZ,aACkC;AAClC,QAAM,iCAAiC,YAAY;AAAA,IAAnD;AAAA;AAWI,WAAgB,MAAqB;AAAA;AAAA,IAKrC,IAAW,QAAiB;AACxB,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IAEO,wBAAiC;AACpC,YAAM,gBAAiB,KAAK,YAAY,EACnC;AACL,UAAI,CAAC,eAAe;AAChB,eAAO;AAAA,MACX;AAKA,UAAI;AACA,eACI,cAAc,QAAQ,gBAAgB,KACtC,cAAc,QAAQ,gBAAgB;AAAA,MAG9C,SAAS,OAAP;AACE,eAAO,cAAc,QAAQ,gBAAgB;AAAA,MACjD;AAAA,IACJ;AAAA,IAEgB,oBAA0B;AACtC,UAAI,CAAC,KAAK,aAAa,KAAK,GAAG;AAC3B,YAAI,YAAc,KAAqB,gBACnC,KAAK;AACT,eACI,cAAc,SAAS,mBACvB,CAAC;AAAA,UACG;AAAA,QACJ,GACF;AACE,sBAAc,UAA0B,
|
|
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 { LitElement, ReactiveElement } from 'lit';\nimport { property } from 'lit/decorators.js';\ntype ThemeRoot = HTMLElement & {\n startManagingContentDirection: (el: HTMLElement) => void;\n stopManagingContentDirection: (el: HTMLElement) => void;\n};\n\ntype Constructor<T = Record<string, unknown>> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n prototype: T;\n};\n\nexport interface SpectrumInterface {\n shadowRoot: ShadowRoot;\n isLTR: boolean;\n hasVisibleFocusInTree(): boolean;\n dir: 'ltr' | 'rtl';\n}\n\nconst observedForElements: Set<HTMLElement> = new Set();\n\nconst updateRTL = (): void => {\n const dir =\n document.documentElement.dir === 'rtl'\n ? document.documentElement.dir\n : 'ltr';\n observedForElements.forEach((el) => {\n el.setAttribute('dir', dir);\n });\n};\n\nconst rtlObserver = new MutationObserver(updateRTL);\n\nrtlObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['dir'],\n});\n\ntype ContentDirectionManager = HTMLElement & {\n startManagingContentDirection?(): void;\n};\n\nconst canManageContentDirection = (el: ContentDirectionManager): boolean =>\n typeof el.startManagingContentDirection !== 'undefined' ||\n el.tagName === 'SP-THEME';\n\nexport function SpectrumMixin<T extends Constructor<ReactiveElement>>(\n constructor: T\n): T & Constructor<SpectrumInterface> {\n class SlotTextObservingElement extends constructor {\n /**\n * @private\n */\n public override shadowRoot!: ShadowRoot;\n private _dirParent?: HTMLElement;\n\n /**\n * @private\n */\n @property({ reflect: true })\n public override dir: 'ltr' | 'rtl' = 'ltr';\n\n /**\n * @private\n */\n public get isLTR(): boolean {\n return this.dir === 'ltr';\n }\n\n public hasVisibleFocusInTree(): boolean {\n const activeElement = (this.getRootNode() as Document)\n .activeElement as HTMLElement;\n if (!activeElement) {\n return false;\n }\n // Browsers without support for the `:focus-visible`\n // selector will throw on the following test (Safari, older things).\n // Some won't throw, but will be focusing item rather than the menu and\n // will rely on the polyfill to know whether focus is \"visible\" or not.\n try {\n return (\n activeElement.matches(':focus-visible') ||\n activeElement.matches('.focus-visible')\n );\n /* c8 ignore next 3 */\n } catch (error) {\n return activeElement.matches('.focus-visible');\n }\n }\n\n public override connectedCallback(): void {\n if (!this.hasAttribute('dir')) {\n let dirParent = ((this as HTMLElement).assignedSlot ||\n this.parentNode) as HTMLElement;\n while (\n dirParent !== document.documentElement &&\n !canManageContentDirection(\n dirParent as ContentDirectionManager\n )\n ) {\n dirParent = ((dirParent as HTMLElement).assignedSlot || // step into the shadow DOM of the parent of a slotted node\n dirParent.parentNode || // DOM Element detected\n (dirParent as unknown as ShadowRoot)\n .host) as HTMLElement;\n }\n const oldDir = this.dir;\n this.dir =\n dirParent.dir === 'rtl' ? dirParent.dir : this.dir || 'ltr';\n if (oldDir === this.dir) {\n this.setAttribute('dir', this.dir);\n }\n if (dirParent === document.documentElement) {\n observedForElements.add(this);\n } else {\n const { localName } = dirParent;\n if (\n localName.search('-') > -1 &&\n !customElements.get(localName)\n ) {\n customElements.whenDefined(localName).then(() => {\n (\n dirParent as ThemeRoot\n ).startManagingContentDirection(this);\n });\n } else {\n (dirParent as ThemeRoot).startManagingContentDirection(\n this\n );\n }\n }\n this._dirParent = dirParent as HTMLElement;\n }\n super.connectedCallback();\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this._dirParent) {\n if (this._dirParent === document.documentElement) {\n observedForElements.delete(this);\n } else {\n (this._dirParent as ThemeRoot).stopManagingContentDirection(\n this\n );\n }\n this.removeAttribute('dir');\n }\n }\n }\n return SlotTextObservingElement;\n}\n\nexport class SpectrumElement extends SpectrumMixin(LitElement) {}\n\nif (window.__swc.DEBUG) {\n const ignoreWarningTypes = {\n default: false,\n accessibility: false,\n api: false,\n };\n const ignoreWarningLevels = {\n default: false,\n low: false,\n medium: false,\n high: false,\n deprecation: false,\n };\n window.__swc = {\n ...window.__swc,\n ignoreWarningLocalNames: {\n ...(window.__swc?.ignoreWarningLocalNames || {}),\n },\n ignoreWarningTypes: {\n ...ignoreWarningTypes,\n ...(window.__swc?.ignoreWarningTypes || {}),\n },\n ignoreWarningLevels: {\n ...ignoreWarningLevels,\n ...(window.__swc?.ignoreWarningLevels || {}),\n },\n issuedWarnings: new Set(),\n warn: (\n element,\n message,\n url,\n { type = 'api', level = 'default', issues } = {}\n ): void => {\n const { localName = 'base' } = element || {};\n const id = `${localName}:${type}:${level}` as BrandedSWCWarningID;\n if (!window.__swc.verbose && window.__swc.issuedWarnings.has(id))\n return;\n /* c8 ignore next 3 */\n if (window.__swc.ignoreWarningLocalNames[localName]) return;\n if (window.__swc.ignoreWarningTypes[type]) return;\n if (window.__swc.ignoreWarningLevels[level]) return;\n window.__swc.issuedWarnings.add(id);\n let listedIssues = '';\n if (issues && issues.length) {\n issues.unshift('');\n listedIssues = issues.join('\\n - ') + '\\n';\n }\n const intro = level === 'deprecation' ? 'DEPRECATION NOTICE: ' : '';\n const inspectElement = element\n ? '\\nInspect this issue in the follow element:'\n : '';\n const displayURL = (element ? '\\n\\n' : '\\n') + url + '\\n';\n const messages: unknown[] = [];\n messages.push(\n intro + message + '\\n' + listedIssues + inspectElement\n );\n if (element) {\n messages.push(element);\n }\n messages.push(displayURL, {\n data: {\n localName,\n type,\n level,\n },\n });\n console.warn(...messages);\n },\n };\n\n window.__swc.warn(\n undefined,\n 'Spectrum Web Components is in dev mode. Not recommended for production!',\n 'https://opensource.adobe.com/spectrum-web-components/dev-mode/',\n { type: 'default' }\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/src/Base.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var c=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var l=(t,n,r,o)=>{for(var e=o>1?void 0:o?d(n,r):n,i=t.length-1,s;i>=0;i--)(s=t[i])&&(e=(o?s(n,r,e):s(e))||e);return o&&e&&c(n,r,e),e};import{LitElement as m}from"lit";import{property as u}from"lit/decorators.js";const a=new Set,
|
|
1
|
+
"use strict";var c=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var l=(t,n,r,o)=>{for(var e=o>1?void 0:o?d(n,r):n,i=t.length-1,s;i>=0;i--)(s=t[i])&&(e=(o?s(n,r,e):s(e))||e);return o&&e&&c(n,r,e),e};import{LitElement as m}from"lit";import{property as u}from"lit/decorators.js";const a=new Set,g=()=>{const t=document.documentElement.dir==="rtl"?document.documentElement.dir:"ltr";a.forEach(n=>{n.setAttribute("dir",t)})},p=new MutationObserver(g);p.observe(document.documentElement,{attributes:!0,attributeFilter:["dir"]});const w=t=>typeof t.startManagingContentDirection!="undefined"||t.tagName==="SP-THEME";export function SpectrumMixin(t){class n extends t{constructor(){super(...arguments);this.dir="ltr"}get isLTR(){return this.dir==="ltr"}hasVisibleFocusInTree(){const e=this.getRootNode().activeElement;if(!e)return!1;try{return e.matches(":focus-visible")||e.matches(".focus-visible")}catch(i){return e.matches(".focus-visible")}}connectedCallback(){if(!this.hasAttribute("dir")){let e=this.assignedSlot||this.parentNode;for(;e!==document.documentElement&&!w(e);)e=e.assignedSlot||e.parentNode||e.host;const i=this.dir;if(this.dir=e.dir==="rtl"?e.dir:this.dir||"ltr",i===this.dir&&this.setAttribute("dir",this.dir),e===document.documentElement)a.add(this);else{const{localName:s}=e;s.search("-")>-1&&!customElements.get(s)?customElements.whenDefined(s).then(()=>{e.startManagingContentDirection(this)}):e.startManagingContentDirection(this)}this._dirParent=e}super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback(),this._dirParent&&(this._dirParent===document.documentElement?a.delete(this):this._dirParent.stopManagingContentDirection(this),this.removeAttribute("dir"))}}return l([u({reflect:!0})],n.prototype,"dir",2),n}export class SpectrumElement extends SpectrumMixin(m){}
|
|
2
2
|
//# sourceMappingURL=Base.js.map
|
package/src/Base.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["Base.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 { LitElement, ReactiveElement } from 'lit';\nimport { property } from 'lit/decorators.js';\ntype ThemeRoot = HTMLElement & {\n startManagingContentDirection: (el: HTMLElement) => void;\n stopManagingContentDirection: (el: HTMLElement) => void;\n};\n\ntype Constructor<T = Record<string, unknown>> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n prototype: T;\n};\n\nexport interface SpectrumInterface {\n shadowRoot: ShadowRoot;\n isLTR: boolean;\n hasVisibleFocusInTree(): boolean;\n dir: 'ltr' | 'rtl';\n}\n\nconst observedForElements: Set<HTMLElement> = new Set();\n\nconst updateRTL = (): void => {\n const dir =\n document.documentElement.dir === 'rtl'\n ? document.documentElement.dir\n : 'ltr';\n observedForElements.forEach((el) => {\n el.setAttribute('dir', dir);\n });\n};\n\nconst rtlObserver = new MutationObserver(updateRTL);\n\nrtlObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['dir'],\n});\n\ntype ContentDirectionManager = HTMLElement & {\n startManagingContentDirection?(): void;\n};\n\nconst canManageContentDirection = (el: ContentDirectionManager): boolean =>\n typeof el.startManagingContentDirection !== 'undefined' ||\n el.tagName === 'SP-THEME';\n\nexport function SpectrumMixin<T extends Constructor<ReactiveElement>>(\n constructor: T\n): T & Constructor<SpectrumInterface> {\n class SlotTextObservingElement extends constructor {\n /**\n * @private\n */\n public override shadowRoot!: ShadowRoot;\n private _dirParent?: HTMLElement;\n\n /**\n * @private\n */\n @property({ reflect: true })\n public override dir: 'ltr' | 'rtl' = 'ltr';\n\n /**\n * @private\n */\n public get isLTR(): boolean {\n return this.dir === 'ltr';\n }\n\n public hasVisibleFocusInTree(): boolean {\n const activeElement = (this.getRootNode() as Document)\n .activeElement as HTMLElement;\n if (!activeElement) {\n return false;\n }\n // Browsers without support for the `:focus-visible`\n // selector will throw on the following test (Safari, older things).\n // Some won't throw, but will be focusing item rather than the menu and\n // will rely on the polyfill to know whether focus is \"visible\" or not.\n try {\n return (\n activeElement.matches(':focus-visible') ||\n activeElement.matches('.focus-visible')\n );\n /* c8 ignore next 3 */\n } catch (error) {\n return activeElement.matches('.focus-visible');\n }\n }\n\n public override connectedCallback(): void {\n if (!this.hasAttribute('dir')) {\n let dirParent = ((this as HTMLElement).assignedSlot ||\n this.parentNode) as HTMLElement;\n while (\n dirParent !== document.documentElement &&\n !canManageContentDirection(\n dirParent as ContentDirectionManager\n )\n ) {\n dirParent = ((dirParent as HTMLElement).assignedSlot || // step into the shadow DOM of the parent of a slotted node\n dirParent.parentNode || // DOM Element detected\n (dirParent as unknown as ShadowRoot)\n .host) as HTMLElement;\n }\n const oldDir = this.dir;\n this.dir =\n dirParent.dir === 'rtl' ? dirParent.dir : this.dir || 'ltr';\n if (oldDir === this.dir) {\n this.setAttribute('dir', this.dir);\n }\n if (dirParent === document.documentElement) {\n observedForElements.add(this);\n } else {\n const { localName } = dirParent;\n if (\n localName.search('-') > -1 &&\n !customElements.get(localName)\n ) {\n customElements.whenDefined(localName).then(() => {\n (\n dirParent as ThemeRoot\n ).startManagingContentDirection(this);\n });\n } else {\n (dirParent as ThemeRoot).startManagingContentDirection(\n this\n );\n }\n }\n this._dirParent = dirParent as HTMLElement;\n }\n super.connectedCallback();\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this._dirParent) {\n if (this._dirParent === document.documentElement) {\n observedForElements.delete(this);\n } else {\n (this._dirParent as ThemeRoot).stopManagingContentDirection(\n this\n );\n }\n this.removeAttribute('dir');\n }\n }\n }\n return SlotTextObservingElement;\n}\n\nexport class SpectrumElement extends SpectrumMixin(LitElement) {}\n\nif (window.__swc.DEBUG) {\n window.__swc = {\n ...window.__swc,\n issuedWarnings: new Set(),\n warn: (\n element,\n message,\n url,\n { type = 'api', level = 'default', issues } = {}\n ): void => {\n const { localName = 'base' } = element || {};\n const id = `${localName}:${type}:${level}` as BrandedSWCWarningID;\n if (!window.__swc.verbose && window.__swc.issuedWarnings.has(id))\n return;\n
|
|
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 { LitElement, ReactiveElement } from 'lit';\nimport { property } from 'lit/decorators.js';\ntype ThemeRoot = HTMLElement & {\n startManagingContentDirection: (el: HTMLElement) => void;\n stopManagingContentDirection: (el: HTMLElement) => void;\n};\n\ntype Constructor<T = Record<string, unknown>> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n prototype: T;\n};\n\nexport interface SpectrumInterface {\n shadowRoot: ShadowRoot;\n isLTR: boolean;\n hasVisibleFocusInTree(): boolean;\n dir: 'ltr' | 'rtl';\n}\n\nconst observedForElements: Set<HTMLElement> = new Set();\n\nconst updateRTL = (): void => {\n const dir =\n document.documentElement.dir === 'rtl'\n ? document.documentElement.dir\n : 'ltr';\n observedForElements.forEach((el) => {\n el.setAttribute('dir', dir);\n });\n};\n\nconst rtlObserver = new MutationObserver(updateRTL);\n\nrtlObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['dir'],\n});\n\ntype ContentDirectionManager = HTMLElement & {\n startManagingContentDirection?(): void;\n};\n\nconst canManageContentDirection = (el: ContentDirectionManager): boolean =>\n typeof el.startManagingContentDirection !== 'undefined' ||\n el.tagName === 'SP-THEME';\n\nexport function SpectrumMixin<T extends Constructor<ReactiveElement>>(\n constructor: T\n): T & Constructor<SpectrumInterface> {\n class SlotTextObservingElement extends constructor {\n /**\n * @private\n */\n public override shadowRoot!: ShadowRoot;\n private _dirParent?: HTMLElement;\n\n /**\n * @private\n */\n @property({ reflect: true })\n public override dir: 'ltr' | 'rtl' = 'ltr';\n\n /**\n * @private\n */\n public get isLTR(): boolean {\n return this.dir === 'ltr';\n }\n\n public hasVisibleFocusInTree(): boolean {\n const activeElement = (this.getRootNode() as Document)\n .activeElement as HTMLElement;\n if (!activeElement) {\n return false;\n }\n // Browsers without support for the `:focus-visible`\n // selector will throw on the following test (Safari, older things).\n // Some won't throw, but will be focusing item rather than the menu and\n // will rely on the polyfill to know whether focus is \"visible\" or not.\n try {\n return (\n activeElement.matches(':focus-visible') ||\n activeElement.matches('.focus-visible')\n );\n /* c8 ignore next 3 */\n } catch (error) {\n return activeElement.matches('.focus-visible');\n }\n }\n\n public override connectedCallback(): void {\n if (!this.hasAttribute('dir')) {\n let dirParent = ((this as HTMLElement).assignedSlot ||\n this.parentNode) as HTMLElement;\n while (\n dirParent !== document.documentElement &&\n !canManageContentDirection(\n dirParent as ContentDirectionManager\n )\n ) {\n dirParent = ((dirParent as HTMLElement).assignedSlot || // step into the shadow DOM of the parent of a slotted node\n dirParent.parentNode || // DOM Element detected\n (dirParent as unknown as ShadowRoot)\n .host) as HTMLElement;\n }\n const oldDir = this.dir;\n this.dir =\n dirParent.dir === 'rtl' ? dirParent.dir : this.dir || 'ltr';\n if (oldDir === this.dir) {\n this.setAttribute('dir', this.dir);\n }\n if (dirParent === document.documentElement) {\n observedForElements.add(this);\n } else {\n const { localName } = dirParent;\n if (\n localName.search('-') > -1 &&\n !customElements.get(localName)\n ) {\n customElements.whenDefined(localName).then(() => {\n (\n dirParent as ThemeRoot\n ).startManagingContentDirection(this);\n });\n } else {\n (dirParent as ThemeRoot).startManagingContentDirection(\n this\n );\n }\n }\n this._dirParent = dirParent as HTMLElement;\n }\n super.connectedCallback();\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this._dirParent) {\n if (this._dirParent === document.documentElement) {\n observedForElements.delete(this);\n } else {\n (this._dirParent as ThemeRoot).stopManagingContentDirection(\n this\n );\n }\n this.removeAttribute('dir');\n }\n }\n }\n return SlotTextObservingElement;\n}\n\nexport class SpectrumElement extends SpectrumMixin(LitElement) {}\n\nif (window.__swc.DEBUG) {\n const ignoreWarningTypes = {\n default: false,\n accessibility: false,\n api: false,\n };\n const ignoreWarningLevels = {\n default: false,\n low: false,\n medium: false,\n high: false,\n deprecation: false,\n };\n window.__swc = {\n ...window.__swc,\n ignoreWarningLocalNames: {\n ...(window.__swc?.ignoreWarningLocalNames || {}),\n },\n ignoreWarningTypes: {\n ...ignoreWarningTypes,\n ...(window.__swc?.ignoreWarningTypes || {}),\n },\n ignoreWarningLevels: {\n ...ignoreWarningLevels,\n ...(window.__swc?.ignoreWarningLevels || {}),\n },\n issuedWarnings: new Set(),\n warn: (\n element,\n message,\n url,\n { type = 'api', level = 'default', issues } = {}\n ): void => {\n const { localName = 'base' } = element || {};\n const id = `${localName}:${type}:${level}` as BrandedSWCWarningID;\n if (!window.__swc.verbose && window.__swc.issuedWarnings.has(id))\n return;\n /* c8 ignore next 3 */\n if (window.__swc.ignoreWarningLocalNames[localName]) return;\n if (window.__swc.ignoreWarningTypes[type]) return;\n if (window.__swc.ignoreWarningLevels[level]) return;\n window.__swc.issuedWarnings.add(id);\n let listedIssues = '';\n if (issues && issues.length) {\n issues.unshift('');\n listedIssues = issues.join('\\n - ') + '\\n';\n }\n const intro = level === 'deprecation' ? 'DEPRECATION NOTICE: ' : '';\n const inspectElement = element\n ? '\\nInspect this issue in the follow element:'\n : '';\n const displayURL = (element ? '\\n\\n' : '\\n') + url + '\\n';\n const messages: unknown[] = [];\n messages.push(\n intro + message + '\\n' + listedIssues + inspectElement\n );\n if (element) {\n messages.push(element);\n }\n messages.push(displayURL, {\n data: {\n localName,\n type,\n level,\n },\n });\n console.warn(...messages);\n },\n };\n\n window.__swc.warn(\n undefined,\n 'Spectrum Web Components is in dev mode. Not recommended for production!',\n 'https://opensource.adobe.com/spectrum-web-components/dev-mode/',\n { type: 'default' }\n );\n}\n"],
|
|
5
5
|
"mappings": "qNAYA,OAAS,cAAAA,MAAmC,MAC5C,OAAS,YAAAC,MAAgB,oBAmBzB,MAAMC,EAAwC,IAAI,IAE5CC,EAAY,IAAY,CAC1B,MAAMC,EACF,SAAS,gBAAgB,MAAQ,MAC3B,SAAS,gBAAgB,IACzB,MACVF,EAAoB,QAASG,GAAO,CAChCA,EAAG,aAAa,MAAOD,CAAG,CAC9B,CAAC,CACL,EAEME,EAAc,IAAI,iBAAiBH,CAAS,EAElDG,EAAY,QAAQ,SAAS,gBAAiB,CAC1C,WAAY,GACZ,gBAAiB,CAAC,KAAK,CAC3B,CAAC,EAMD,MAAMC,EAA6BF,GAC/B,OAAOA,EAAG,+BAAkC,aAC5CA,EAAG,UAAY,WAEZ,gBAAS,cACZG,EACkC,CAClC,MAAMC,UAAiCD,CAAY,CAAnD,kCAWI,KAAgB,IAAqB,MAKrC,IAAW,OAAiB,CACxB,OAAO,KAAK,MAAQ,KACxB,CAEO,uBAAiC,CACpC,MAAME,EAAiB,KAAK,YAAY,EACnC,cACL,GAAI,CAACA,EACD,MAAO,GAMX,GAAI,CACA,OACIA,EAAc,QAAQ,gBAAgB,GACtCA,EAAc,QAAQ,gBAAgB,CAG9C,OAASC,EAAP,CACE,OAAOD,EAAc,QAAQ,gBAAgB,CACjD,CACJ,CAEgB,mBAA0B,CACtC,GAAI,CAAC,KAAK,aAAa,KAAK,EAAG,CAC3B,IAAIE,EAAc,KAAqB,cACnC,KAAK,WACT,KACIA,IAAc,SAAS,iBACvB,CAACL,EACGK,CACJ,GAEAA,EAAcA,EAA0B,cACpCA,EAAU,YACTA,EACI,KAEb,MAAMC,EAAS,KAAK,IAMpB,GALA,KAAK,IACDD,EAAU,MAAQ,MAAQA,EAAU,IAAM,KAAK,KAAO,MACtDC,IAAW,KAAK,KAChB,KAAK,aAAa,MAAO,KAAK,GAAG,EAEjCD,IAAc,SAAS,gBACvBV,EAAoB,IAAI,IAAI,MACzB,CACH,KAAM,CAAE,UAAAY,CAAU,EAAIF,EAElBE,EAAU,OAAO,GAAG,EAAI,IACxB,CAAC,eAAe,IAAIA,CAAS,EAE7B,eAAe,YAAYA,CAAS,EAAE,KAAK,IAAM,CAEzCF,EACF,8BAA8B,IAAI,CACxC,CAAC,EAEAA,EAAwB,8BACrB,IACJ,CAER,CACA,KAAK,WAAaA,CACtB,CACA,MAAM,kBAAkB,CAC5B,CAEgB,sBAA6B,CACzC,MAAM,qBAAqB,EACvB,KAAK,aACD,KAAK,aAAe,SAAS,gBAC7BV,EAAoB,OAAO,IAAI,EAE9B,KAAK,WAAyB,6BAC3B,IACJ,EAEJ,KAAK,gBAAgB,KAAK,EAElC,CACJ,CAxFoB,OAAAa,EAAA,CADfd,EAAS,CAAE,QAAS,EAAK,CAAC,GAVzBQ,EAWc,mBAyFbA,CACX,CAEO,aAAM,wBAAwB,cAAcT,CAAU,CAAE,CAAC",
|
|
6
6
|
"names": ["LitElement", "property", "observedForElements", "updateRTL", "dir", "el", "rtlObserver", "canManageContentDirection", "constructor", "SlotTextObservingElement", "activeElement", "error", "dirParent", "oldDir", "localName", "__decorateClass"]
|
|
7
7
|
}
|
|
@@ -35,6 +35,8 @@ class StreamingListenerDirective extends AsyncDirective {
|
|
|
35
35
|
this.callHandler(this.streamOutside[1], event);
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
|
+
/* c8 ignore next 4 */
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
38
40
|
render(_configGroup) {
|
|
39
41
|
return nothing;
|
|
40
42
|
}
|
|
@@ -102,6 +104,7 @@ class StreamingListenerDirective extends AsyncDirective {
|
|
|
102
104
|
disconnected() {
|
|
103
105
|
this.removeListeners();
|
|
104
106
|
}
|
|
107
|
+
/* c8 ignore next 3 */
|
|
105
108
|
reconnected() {
|
|
106
109
|
this.addListeners();
|
|
107
110
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["streaming-listener.ts"],
|
|
4
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,SAAsB,eAAqB;AAC3C,SAAS,gBAAgB,iBAAiB;AAY1C,MAAM,kBAAkC;AAAA,EACpC;AAAA,EACA,MAAY;AACR;AAAA,EACJ;AACJ;AASA,MAAM,mCAAmC,eAAe;AAAA,EAAxD;AAAA;AAII,iBAAwB;AACxB,wBAA+B;AAC/B,eAAsB;AACtB,yBAAgC;AAEhC,iBAAsB;AAsDtB,uBAAc,CAAC,UAAuB;AAClC,WAAK,YAAY,KAAK,MAAM,
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["streaming-listener.ts"],
|
|
4
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,
|
|
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",
|
|
6
6
|
"names": ["nothing", "AsyncDirective", "directive", "defaultListener", "StreamingListenerDirective", "event", "_configGroup", "part", "start", "end", "streamInside", "streamOutside", "_a", "state", "value", "type", "fn", "eventName"]
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["base-devmode.test.ts"],
|
|
4
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;
|
|
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;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|