@editframe/elements 0.7.0-beta.10 → 0.7.0-beta.12
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/dist/EF_INTERACTIVE.d.ts +1 -0
- package/dist/{lib/av → assets/dist}/EncodedAsset.js +1 -1
- package/dist/{packages/elements/src/elements → elements}/EFAudio.d.ts +2 -2
- package/dist/{packages/elements/src/elements → elements}/EFCaptions.d.ts +4 -4
- package/dist/{packages/elements/src/elements → elements}/EFImage.d.ts +3 -3
- package/dist/{packages/elements/src/elements → elements}/EFMedia.d.ts +3 -3
- package/dist/{packages/elements/src/elements → elements}/EFTemporal.d.ts +1 -1
- package/dist/{packages/elements/src/elements → elements}/EFTimegroup.browsertest.d.ts +1 -1
- package/dist/{packages/elements/src/elements → elements}/EFTimegroup.d.ts +3 -3
- package/dist/{packages/elements/src/elements → elements}/EFVideo.d.ts +3 -3
- package/dist/{packages/elements/src/elements → elements}/EFWaveform.d.ts +3 -3
- package/dist/{packages/elements/src/elements → elements}/TimegroupController.d.ts +1 -1
- package/dist/{packages/elements → elements}/src/EF_FRAMEGEN.js +4 -3
- package/dist/elements/src/EF_INTERACTIVE.js +7 -0
- package/dist/{packages/elements → elements}/src/elements/EFMedia.js +2 -2
- package/dist/{packages/elements → elements}/src/elements/EFTemporal.js +37 -2
- package/dist/{packages/elements → elements}/src/gui/EFFilmstrip.js +3 -3
- package/dist/{packages/elements → elements}/src/gui/EFWorkbench.js +1 -2
- package/dist/{packages/elements → elements}/src/gui/TWMixin.js +10 -2
- package/dist/{packages/elements → elements}/src/index.js +3 -1
- package/dist/{packages/elements/src/elements → elements}/util.d.ts +1 -1
- package/dist/{packages/elements/src/gui → gui}/EFFilmstrip.d.ts +10 -10
- package/dist/{packages/elements/src/gui → gui}/EFWorkbench.d.ts +3 -3
- package/dist/index.d.ts +10 -0
- package/dist/msToTimeCode.d.ts +1 -0
- package/dist/style.css +9 -0
- package/package.json +6 -9
- package/src/elements/EFAudio.ts +1 -1
- package/src/elements/EFCaptions.ts +7 -7
- package/src/elements/EFImage.ts +3 -3
- package/src/elements/EFMedia.ts +8 -8
- package/src/elements/EFSourceMixin.ts +1 -1
- package/src/elements/EFTemporal.ts +42 -5
- package/src/elements/EFTimegroup.browsertest.ts +3 -3
- package/src/elements/EFTimegroup.ts +4 -4
- package/src/elements/EFVideo.ts +2 -2
- package/src/elements/EFWaveform.ts +6 -6
- package/src/elements/FetchMixin.ts +1 -1
- package/src/elements/TimegroupController.ts +1 -1
- package/src/elements/durationConverter.ts +1 -1
- package/src/elements/util.ts +1 -1
- package/src/gui/EFFilmstrip.ts +17 -13
- package/src/gui/EFWorkbench.ts +4 -5
- package/src/gui/TWMixin.ts +10 -3
- package/dist/lib/av/EncodedAsset.cjs +0 -577
- package/dist/lib/av/MP4File.cjs +0 -187
- package/dist/lib/av/msToTimeCode.cjs +0 -15
- package/dist/lib/util/awaitMicrotask.cjs +0 -4
- package/dist/lib/util/awaitMicrotask.js +0 -4
- package/dist/lib/util/memoize.cjs +0 -14
- package/dist/packages/elements/src/EF_FRAMEGEN.cjs +0 -197
- package/dist/packages/elements/src/EF_INTERACTIVE.cjs +0 -4
- package/dist/packages/elements/src/EF_INTERACTIVE.d.ts +0 -1
- package/dist/packages/elements/src/EF_INTERACTIVE.js +0 -4
- package/dist/packages/elements/src/elements/CrossUpdateController.cjs +0 -16
- package/dist/packages/elements/src/elements/EFAudio.cjs +0 -53
- package/dist/packages/elements/src/elements/EFCaptions.cjs +0 -164
- package/dist/packages/elements/src/elements/EFImage.cjs +0 -79
- package/dist/packages/elements/src/elements/EFMedia.cjs +0 -336
- package/dist/packages/elements/src/elements/EFSourceMixin.cjs +0 -55
- package/dist/packages/elements/src/elements/EFTemporal.cjs +0 -199
- package/dist/packages/elements/src/elements/EFTimegroup.cjs +0 -352
- package/dist/packages/elements/src/elements/EFVideo.cjs +0 -109
- package/dist/packages/elements/src/elements/EFWaveform.cjs +0 -242
- package/dist/packages/elements/src/elements/FetchMixin.cjs +0 -28
- package/dist/packages/elements/src/elements/TimegroupController.cjs +0 -20
- package/dist/packages/elements/src/elements/durationConverter.cjs +0 -8
- package/dist/packages/elements/src/elements/parseTimeToMs.cjs +0 -12
- package/dist/packages/elements/src/elements/util.cjs +0 -11
- package/dist/packages/elements/src/gui/EFFilmstrip.cjs +0 -825
- package/dist/packages/elements/src/gui/EFWorkbench.cjs +0 -214
- package/dist/packages/elements/src/gui/TWMixin.cjs +0 -28
- package/dist/packages/elements/src/gui/TWMixin.css.cjs +0 -3
- package/dist/packages/elements/src/index.cjs +0 -50
- package/dist/packages/elements/src/index.d.ts +0 -10
- package/dist/{packages/elements/src/EF_FRAMEGEN.d.ts → EF_FRAMEGEN.d.ts} +0 -0
- package/dist/{lib/av → assets/dist}/MP4File.js +0 -0
- package/dist/{lib/util → assets/dist}/memoize.js +0 -0
- package/dist/{packages/elements/src/elements → elements}/CrossUpdateController.d.ts +0 -0
- package/dist/{packages/elements/src/elements → elements}/EFSourceMixin.d.ts +0 -0
- package/dist/{packages/elements/src/elements → elements}/FetchMixin.d.ts +0 -0
- package/dist/{packages/elements/src/elements → elements}/durationConverter.d.ts +0 -0
- package/dist/{packages/elements/src/elements → elements}/parseTimeToMs.d.ts +0 -0
- package/dist/{packages/elements → elements}/src/elements/CrossUpdateController.js +0 -0
- package/dist/{packages/elements → elements}/src/elements/EFAudio.js +0 -0
- package/dist/{packages/elements → elements}/src/elements/EFCaptions.js +1 -1
- /package/dist/{packages/elements → elements}/src/elements/EFImage.js +0 -0
- /package/dist/{packages/elements → elements}/src/elements/EFSourceMixin.js +0 -0
- /package/dist/{packages/elements → elements}/src/elements/EFTimegroup.js +0 -0
- /package/dist/{packages/elements → elements}/src/elements/EFVideo.js +0 -0
- /package/dist/{packages/elements → elements}/src/elements/EFWaveform.js +0 -0
- /package/dist/{packages/elements → elements}/src/elements/FetchMixin.js +0 -0
- /package/dist/{packages/elements → elements}/src/elements/TimegroupController.js +0 -0
- /package/dist/{packages/elements → elements}/src/elements/durationConverter.js +0 -0
- /package/dist/{packages/elements → elements}/src/elements/parseTimeToMs.js +0 -0
- /package/dist/{packages/elements → elements}/src/elements/util.js +0 -0
- /package/dist/{packages/elements → elements}/src/gui/TWMixin.css.js +0 -0
- /package/dist/{lib/av → elements/src}/msToTimeCode.js +0 -0
- /package/dist/{packages/elements/src/gui → gui}/TWMixin.d.ts +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { LitElement, ReactiveController } from "lit";
|
|
2
2
|
import { consume, createContext } from "@lit/context";
|
|
3
3
|
import { property, state } from "lit/decorators.js";
|
|
4
|
-
import type { EFTimegroup } from "./EFTimegroup";
|
|
4
|
+
import type { EFTimegroup } from "./EFTimegroup.ts";
|
|
5
5
|
|
|
6
|
-
import { durationConverter } from "./durationConverter";
|
|
6
|
+
import { durationConverter } from "./durationConverter.ts";
|
|
7
7
|
import { Task } from "@lit/task";
|
|
8
|
-
import { EF_INTERACTIVE } from "../EF_INTERACTIVE";
|
|
8
|
+
import { EF_INTERACTIVE } from "../EF_INTERACTIVE.ts";
|
|
9
9
|
|
|
10
10
|
export const timegroupContext = createContext<EFTimegroup>(
|
|
11
11
|
Symbol("timeGroupContext"),
|
|
@@ -59,10 +59,23 @@ export const deepGetElementsWithFrameTasks = (
|
|
|
59
59
|
return elements;
|
|
60
60
|
};
|
|
61
61
|
|
|
62
|
+
let temporalCache: Map<Element, TemporalMixinInterface[]>;
|
|
63
|
+
const resetTemporalCache = () => {
|
|
64
|
+
temporalCache = new Map();
|
|
65
|
+
if (typeof requestAnimationFrame !== "undefined") {
|
|
66
|
+
requestAnimationFrame(resetTemporalCache);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
resetTemporalCache();
|
|
70
|
+
|
|
62
71
|
export const shallowGetTemporalElements = (
|
|
63
72
|
element: Element,
|
|
64
73
|
temporals: TemporalMixinInterface[] = [],
|
|
65
74
|
) => {
|
|
75
|
+
const cachedResult = temporalCache.get(element);
|
|
76
|
+
if (cachedResult) {
|
|
77
|
+
return cachedResult;
|
|
78
|
+
}
|
|
66
79
|
for (const child of element.children) {
|
|
67
80
|
if (isEFTemporal(child)) {
|
|
68
81
|
temporals.push(child);
|
|
@@ -70,6 +83,7 @@ export const shallowGetTemporalElements = (
|
|
|
70
83
|
shallowGetTemporalElements(child, temporals);
|
|
71
84
|
}
|
|
72
85
|
}
|
|
86
|
+
temporalCache.set(element, temporals);
|
|
73
87
|
return temporals;
|
|
74
88
|
};
|
|
75
89
|
|
|
@@ -92,6 +106,15 @@ export class OwnCurrentTimeController implements ReactiveController {
|
|
|
92
106
|
|
|
93
107
|
type Constructor<T = {}> = new (...args: any[]) => T;
|
|
94
108
|
|
|
109
|
+
let startTimeMsCache = new WeakMap<Element, number>();
|
|
110
|
+
const resetStartTimeMsCache = () => {
|
|
111
|
+
startTimeMsCache = new WeakMap();
|
|
112
|
+
if (typeof requestAnimationFrame !== "undefined") {
|
|
113
|
+
requestAnimationFrame(resetStartTimeMsCache);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
resetStartTimeMsCache();
|
|
117
|
+
|
|
95
118
|
export const EFTemporal = <T extends Constructor<LitElement>>(
|
|
96
119
|
superClass: T,
|
|
97
120
|
) => {
|
|
@@ -172,27 +195,41 @@ export const EFTemporal = <T extends Constructor<LitElement>>(
|
|
|
172
195
|
}
|
|
173
196
|
|
|
174
197
|
get startTimeMs(): number {
|
|
198
|
+
const cachedStartTime = startTimeMsCache.get(this);
|
|
199
|
+
if (cachedStartTime !== undefined) {
|
|
200
|
+
return cachedStartTime;
|
|
201
|
+
}
|
|
175
202
|
const parentTimegroup = this.parentTimegroup;
|
|
176
203
|
if (!parentTimegroup) {
|
|
204
|
+
startTimeMsCache.set(this, 0);
|
|
177
205
|
return 0;
|
|
178
206
|
}
|
|
179
207
|
switch (parentTimegroup.mode) {
|
|
180
208
|
case "sequence": {
|
|
181
209
|
const siblingTemorals = shallowGetTemporalElements(parentTimegroup);
|
|
182
|
-
const ownIndex = siblingTemorals
|
|
210
|
+
const ownIndex = siblingTemorals?.indexOf(
|
|
183
211
|
this as InstanceType<Constructor<TemporalMixinInterface> & T>,
|
|
184
212
|
);
|
|
185
213
|
if (ownIndex === 0) {
|
|
214
|
+
startTimeMsCache.set(this, parentTimegroup.startTimeMs);
|
|
186
215
|
return parentTimegroup.startTimeMs;
|
|
187
216
|
}
|
|
188
|
-
const previous = siblingTemorals[ownIndex - 1];
|
|
217
|
+
const previous = siblingTemorals?.[(ownIndex ?? 0) - 1];
|
|
189
218
|
if (!previous) {
|
|
190
219
|
throw new Error("Previous temporal element not found");
|
|
191
220
|
}
|
|
221
|
+
startTimeMsCache.set(
|
|
222
|
+
this,
|
|
223
|
+
previous.startTimeMs + previous.durationMs,
|
|
224
|
+
);
|
|
192
225
|
return previous.startTimeMs + previous.durationMs;
|
|
193
226
|
}
|
|
194
227
|
case "contain":
|
|
195
228
|
case "fixed":
|
|
229
|
+
startTimeMsCache.set(
|
|
230
|
+
this,
|
|
231
|
+
parentTimegroup.startTimeMs + this.offsetMs,
|
|
232
|
+
);
|
|
196
233
|
return parentTimegroup.startTimeMs + this.offsetMs;
|
|
197
234
|
default:
|
|
198
235
|
throw new Error(`Invalid time mode: ${parentTimegroup.mode}`);
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
html,
|
|
6
6
|
render as litRender,
|
|
7
7
|
} from "lit";
|
|
8
|
-
import { EFTimegroup } from "./EFTimegroup";
|
|
9
|
-
import "./EFTimegroup";
|
|
8
|
+
import { EFTimegroup } from "./EFTimegroup.ts";
|
|
9
|
+
import "./EFTimegroup.ts";
|
|
10
10
|
import { customElement } from "lit/decorators/custom-element.js";
|
|
11
|
-
import { EFTemporal } from "./EFTemporal";
|
|
11
|
+
import { EFTemporal } from "./EFTemporal.ts";
|
|
12
12
|
|
|
13
13
|
beforeEach(() => {
|
|
14
14
|
for (let i = 0; i < localStorage.length; i++) {
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
isEFTemporal,
|
|
10
10
|
shallowGetTemporalElements,
|
|
11
11
|
timegroupContext,
|
|
12
|
-
} from "./EFTemporal";
|
|
13
|
-
import { TimegroupController } from "./TimegroupController";
|
|
14
|
-
import { EF_INTERACTIVE } from "../EF_INTERACTIVE";
|
|
15
|
-
import { deepGetMediaElements } from "./EFMedia";
|
|
12
|
+
} from "./EFTemporal.ts";
|
|
13
|
+
import { TimegroupController } from "./TimegroupController.ts";
|
|
14
|
+
import { EF_INTERACTIVE } from "../EF_INTERACTIVE.ts";
|
|
15
|
+
import { deepGetMediaElements } from "./EFMedia.ts";
|
|
16
16
|
|
|
17
17
|
const log = debug("ef:elements:EFTimegroup");
|
|
18
18
|
|
package/src/elements/EFVideo.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { Task } from "@lit/task";
|
|
|
3
3
|
import { createRef, ref } from "lit/directives/ref.js";
|
|
4
4
|
import { customElement } from "lit/decorators.js";
|
|
5
5
|
|
|
6
|
-
import { EFMedia } from "./EFMedia";
|
|
7
|
-
import { TWMixin } from "../gui/TWMixin";
|
|
6
|
+
import { EFMedia } from "./EFMedia.ts";
|
|
7
|
+
import { TWMixin } from "../gui/TWMixin.ts";
|
|
8
8
|
|
|
9
9
|
@customElement("ef-video")
|
|
10
10
|
export class EFVideo extends TWMixin(EFMedia) {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { EFAudio } from "./EFAudio";
|
|
1
|
+
import { EFAudio } from "./EFAudio.ts";
|
|
2
2
|
|
|
3
3
|
import { LitElement, html } from "lit";
|
|
4
4
|
import { customElement, property } from "lit/decorators.js";
|
|
5
|
-
import { EFVideo } from "./EFVideo";
|
|
6
|
-
import { EFTemporal } from "./EFTemporal";
|
|
7
|
-
import { CrossUpdateController } from "./CrossUpdateController";
|
|
8
|
-
import { TWMixin } from "../gui/TWMixin";
|
|
5
|
+
import { EFVideo } from "./EFVideo.ts";
|
|
6
|
+
import { EFTemporal } from "./EFTemporal.ts";
|
|
7
|
+
import { CrossUpdateController } from "./CrossUpdateController.ts";
|
|
8
|
+
import { TWMixin } from "../gui/TWMixin.ts";
|
|
9
9
|
import { Task } from "@lit/task";
|
|
10
10
|
import * as d3 from "d3";
|
|
11
11
|
import { type Ref, createRef, ref } from "lit/directives/ref.js";
|
|
12
|
-
import { EF_INTERACTIVE } from "../EF_INTERACTIVE";
|
|
12
|
+
import { EF_INTERACTIVE } from "../EF_INTERACTIVE.ts";
|
|
13
13
|
|
|
14
14
|
@customElement("ef-waveform")
|
|
15
15
|
export class EFWaveform extends EFTemporal(TWMixin(LitElement)) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { consume } from "@lit/context";
|
|
2
2
|
import type { LitElement } from "lit";
|
|
3
|
-
import { fetchContext } from "../gui/EFWorkbench";
|
|
3
|
+
import { fetchContext } from "../gui/EFWorkbench.ts";
|
|
4
4
|
import { state } from "lit/decorators/state.js";
|
|
5
5
|
|
|
6
6
|
export declare class FetchMixinInterface {
|
package/src/elements/util.ts
CHANGED
package/src/gui/EFFilmstrip.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EFTimegroup } from "../elements/EFTimegroup";
|
|
1
|
+
import { EFTimegroup } from "../elements/EFTimegroup.ts";
|
|
2
2
|
import {
|
|
3
3
|
LitElement,
|
|
4
4
|
html,
|
|
@@ -16,17 +16,21 @@ import {
|
|
|
16
16
|
} from "lit/decorators.js";
|
|
17
17
|
import { styleMap } from "lit/directives/style-map.js";
|
|
18
18
|
import { ref, createRef } from "lit/directives/ref.js";
|
|
19
|
-
import { EFImage } from "../elements/EFImage";
|
|
20
|
-
import { EFAudio } from "../elements/EFAudio";
|
|
21
|
-
import { EFVideo } from "../elements/EFVideo";
|
|
22
|
-
import { EFCaptions, EFCaptionsActiveWord } from "../elements/EFCaptions";
|
|
23
|
-
import { EFWaveform } from "../elements/EFWaveform";
|
|
24
|
-
import type { TemporalMixinInterface } from "../elements/EFTemporal";
|
|
25
|
-
import { TimegroupController } from "../elements/TimegroupController";
|
|
19
|
+
import { EFImage } from "../elements/EFImage.ts";
|
|
20
|
+
import { EFAudio } from "../elements/EFAudio.ts";
|
|
21
|
+
import { EFVideo } from "../elements/EFVideo.ts";
|
|
22
|
+
import { EFCaptions, EFCaptionsActiveWord } from "../elements/EFCaptions.ts";
|
|
23
|
+
import { EFWaveform } from "../elements/EFWaveform.ts";
|
|
24
|
+
import type { TemporalMixinInterface } from "../elements/EFTemporal.ts";
|
|
25
|
+
import { TimegroupController } from "../elements/TimegroupController.ts";
|
|
26
26
|
import { consume } from "@lit/context";
|
|
27
|
-
import {
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
import {
|
|
28
|
+
type FocusContext,
|
|
29
|
+
focusContext,
|
|
30
|
+
focusedElement,
|
|
31
|
+
} from "./EFWorkbench.ts";
|
|
32
|
+
import { TWMixin } from "./TWMixin.ts";
|
|
33
|
+
import { msToTimeCode } from "../msToTimeCode.ts";
|
|
30
34
|
|
|
31
35
|
class ElementFilmstripController implements ReactiveController {
|
|
32
36
|
constructor(
|
|
@@ -75,7 +79,7 @@ class FilmstripItem extends TWMixin(LitElement) {
|
|
|
75
79
|
return this.element && this.focusContext?.focusedElement === this.element;
|
|
76
80
|
}
|
|
77
81
|
|
|
78
|
-
@property({ type:
|
|
82
|
+
@property({ type: Object, attribute: false })
|
|
79
83
|
element: TemporalMixinInterface & LitElement = new EFTimegroup();
|
|
80
84
|
|
|
81
85
|
@property({ type: Number })
|
|
@@ -254,7 +258,7 @@ export class EFHTMLFilmstrip extends FilmstripItem {
|
|
|
254
258
|
class EFHierarchyItem<
|
|
255
259
|
ElementType extends HTMLElement = HTMLElement,
|
|
256
260
|
> extends TWMixin(LitElement) {
|
|
257
|
-
@property({ type:
|
|
261
|
+
@property({ type: Object, attribute: false })
|
|
258
262
|
// @ts-expect-error This could be initialzed with any HTMLElement
|
|
259
263
|
element: ElementType = new EFTimegroup();
|
|
260
264
|
|
package/src/gui/EFWorkbench.ts
CHANGED
|
@@ -9,10 +9,9 @@ import {
|
|
|
9
9
|
} from "lit/decorators.js";
|
|
10
10
|
import { ref, createRef } from "lit/directives/ref.js";
|
|
11
11
|
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { shallowGetTimegroups } from "../elements/EFTimegroup";
|
|
12
|
+
import { deepGetTemporalElements } from "../elements/EFTemporal.ts";
|
|
13
|
+
import { TWMixin } from "./TWMixin.ts";
|
|
14
|
+
import { shallowGetTimegroups } from "../elements/EFTimegroup.ts";
|
|
16
15
|
|
|
17
16
|
export interface FocusContext {
|
|
18
17
|
focusedElement: HTMLElement | null;
|
|
@@ -215,7 +214,7 @@ export class EFWorkbench extends TWMixin(LitElement) {
|
|
|
215
214
|
|
|
216
215
|
for (let i = 0; i < frameCount; i++) {
|
|
217
216
|
firstGroup.currentTimeMs = i * stepDurationMs;
|
|
218
|
-
await
|
|
217
|
+
await new Promise<void>(queueMicrotask);
|
|
219
218
|
const busyTasks = temporals
|
|
220
219
|
.filter((temporal) => temporal.frameTask.status < TaskStatus.COMPLETE)
|
|
221
220
|
.map((temporal) => temporal.frameTask);
|
package/src/gui/TWMixin.ts
CHANGED
|
@@ -2,8 +2,11 @@ import type { LitElement } from "lit";
|
|
|
2
2
|
// @ts-expect-error cannot figure out how to declare this module as a string
|
|
3
3
|
import twStyle from "./TWMixin.css?inline";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
let twSheet: CSSStyleSheet | null = null;
|
|
6
|
+
if (typeof window !== "undefined") {
|
|
7
|
+
twSheet = new CSSStyleSheet();
|
|
8
|
+
twSheet.replaceSync(twStyle);
|
|
9
|
+
}
|
|
7
10
|
export function TWMixin<T extends new (...args: any[]) => LitElement>(Base: T) {
|
|
8
11
|
class TWElement extends Base {
|
|
9
12
|
createRenderRoot() {
|
|
@@ -13,7 +16,11 @@ export function TWMixin<T extends new (...args: any[]) => LitElement>(Base: T) {
|
|
|
13
16
|
"TWMixin can only be applied to elements with shadow roots",
|
|
14
17
|
);
|
|
15
18
|
}
|
|
16
|
-
|
|
19
|
+
if (!twSheet) {
|
|
20
|
+
throw new Error(
|
|
21
|
+
"twSheet not found. Probable cause: CSSStyleSheet not supported in this environment",
|
|
22
|
+
);
|
|
23
|
+
}
|
|
17
24
|
if (renderRoot?.adoptedStyleSheets) {
|
|
18
25
|
renderRoot.adoptedStyleSheets = [
|
|
19
26
|
twSheet,
|