@editframe/elements 0.5.0-beta.8 → 0.6.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/av/EncodedAsset.cjs +561 -0
- package/dist/{editor/util/EncodedAsset/EncodedAsset.mjs → lib/av/EncodedAsset.js} +40 -33
- package/dist/lib/av/MP4File.cjs +182 -0
- package/dist/{editor/util/MP4File.mjs → lib/av/MP4File.js} +55 -51
- package/dist/lib/av/msToTimeCode.cjs +15 -0
- package/dist/lib/util/awaitMicrotask.cjs +8 -0
- package/dist/lib/util/memoize.cjs +14 -0
- package/dist/{util/memoize.mjs → lib/util/memoize.js} +1 -2
- package/dist/packages/elements/src/EF_FRAMEGEN.cjs +197 -0
- package/dist/packages/elements/src/EF_FRAMEGEN.d.ts +45 -0
- package/dist/packages/elements/src/EF_FRAMEGEN.js +197 -0
- package/dist/packages/elements/src/EF_INTERACTIVE.cjs +4 -0
- package/dist/packages/elements/src/EF_INTERACTIVE.d.ts +1 -0
- package/dist/packages/elements/src/elements/CrossUpdateController.cjs +16 -0
- package/dist/packages/elements/src/elements/CrossUpdateController.d.ts +9 -0
- package/dist/packages/elements/src/elements/EFAudio.cjs +53 -0
- package/dist/packages/elements/src/elements/EFAudio.d.ts +10 -0
- package/dist/{elements/src/elements/EFAudio.mjs → packages/elements/src/elements/EFAudio.js} +2 -5
- package/dist/packages/elements/src/elements/EFCaptions.cjs +171 -0
- package/dist/packages/elements/src/elements/EFCaptions.d.ts +39 -0
- package/dist/{elements/src/elements/EFCaptions.mjs → packages/elements/src/elements/EFCaptions.js} +18 -20
- package/dist/packages/elements/src/elements/EFImage.cjs +79 -0
- package/dist/packages/elements/src/elements/EFImage.d.ts +14 -0
- package/dist/{elements/src/elements/EFImage.mjs → packages/elements/src/elements/EFImage.js} +8 -7
- package/dist/packages/elements/src/elements/EFMedia.cjs +334 -0
- package/dist/packages/elements/src/elements/EFMedia.d.ts +61 -0
- package/dist/{elements/src/elements/EFMedia.mjs → packages/elements/src/elements/EFMedia.js} +40 -38
- package/dist/packages/elements/src/elements/EFSourceMixin.cjs +55 -0
- package/dist/packages/elements/src/elements/EFSourceMixin.d.ts +12 -0
- package/dist/{elements/src/elements/EFSourceMixin.mjs → packages/elements/src/elements/EFSourceMixin.js} +6 -8
- package/dist/packages/elements/src/elements/EFTemporal.cjs +198 -0
- package/dist/packages/elements/src/elements/EFTemporal.d.ts +36 -0
- package/dist/{elements/src/elements/EFTemporal.mjs → packages/elements/src/elements/EFTemporal.js} +6 -22
- package/dist/packages/elements/src/elements/EFTimegroup.browsertest.d.ts +12 -0
- package/{src/elements/EFTimegroup.ts → dist/packages/elements/src/elements/EFTimegroup.cjs} +162 -213
- package/dist/packages/elements/src/elements/EFTimegroup.d.ts +39 -0
- package/dist/{elements/src/elements/EFTimegroup.mjs → packages/elements/src/elements/EFTimegroup.js} +55 -65
- package/{src/elements/EFTimeline.ts → dist/packages/elements/src/elements/EFTimeline.cjs} +5 -3
- package/dist/packages/elements/src/elements/EFTimeline.d.ts +3 -0
- package/dist/{elements/src/elements/EFTimeline.mjs → packages/elements/src/elements/EFTimeline.js} +5 -2
- package/dist/packages/elements/src/elements/EFVideo.cjs +110 -0
- package/dist/packages/elements/src/elements/EFVideo.d.ts +14 -0
- package/dist/{elements/src/elements/EFVideo.mjs → packages/elements/src/elements/EFVideo.js} +10 -32
- package/dist/packages/elements/src/elements/EFWaveform.cjs +235 -0
- package/dist/packages/elements/src/elements/EFWaveform.d.ts +28 -0
- package/dist/{elements/src/elements/EFWaveform.mjs → packages/elements/src/elements/EFWaveform.js} +15 -16
- package/dist/packages/elements/src/elements/FetchMixin.cjs +28 -0
- package/dist/packages/elements/src/elements/FetchMixin.d.ts +8 -0
- package/dist/{elements/src/elements/FetchMixin.mjs → packages/elements/src/elements/FetchMixin.js} +5 -7
- package/dist/packages/elements/src/elements/TimegroupController.cjs +20 -0
- package/dist/packages/elements/src/elements/TimegroupController.d.ts +14 -0
- package/dist/packages/elements/src/elements/durationConverter.cjs +8 -0
- package/dist/packages/elements/src/elements/durationConverter.d.ts +4 -0
- package/dist/{elements/src/elements/durationConverter.mjs → packages/elements/src/elements/durationConverter.js} +1 -1
- package/dist/packages/elements/src/elements/parseTimeToMs.cjs +12 -0
- package/dist/packages/elements/src/elements/parseTimeToMs.d.ts +1 -0
- package/dist/packages/elements/src/elements/parseTimeToMs.js +12 -0
- package/dist/packages/elements/src/elements/util.cjs +11 -0
- package/dist/packages/elements/src/elements/util.d.ts +4 -0
- package/dist/{elements/src/elements/util.mjs → packages/elements/src/elements/util.js} +1 -1
- package/dist/packages/elements/src/gui/EFFilmstrip.cjs +675 -0
- package/dist/packages/elements/src/gui/EFFilmstrip.d.ts +138 -0
- package/dist/{elements/src/gui/EFFilmstrip.mjs → packages/elements/src/gui/EFFilmstrip.js} +57 -55
- package/dist/packages/elements/src/gui/EFWorkbench.cjs +199 -0
- package/dist/packages/elements/src/gui/EFWorkbench.d.ts +44 -0
- package/dist/{elements/src/gui/EFWorkbench.mjs → packages/elements/src/gui/EFWorkbench.js} +27 -49
- package/{src/gui/TWMixin.ts → dist/packages/elements/src/gui/TWMixin.cjs} +11 -10
- package/dist/packages/elements/src/gui/TWMixin.css.cjs +3 -0
- package/dist/packages/elements/src/gui/TWMixin.css.js +4 -0
- package/dist/packages/elements/src/gui/TWMixin.d.ts +3 -0
- package/dist/{elements/src/gui/TWMixin.mjs → packages/elements/src/gui/TWMixin.js} +4 -3
- package/dist/packages/elements/src/index.cjs +47 -0
- package/dist/packages/elements/src/index.d.ts +10 -0
- package/dist/packages/elements/src/index.js +23 -0
- package/dist/style.css +13 -4
- package/package.json +23 -4
- package/dist/elements/src/EF_FRAMEGEN.mjs +0 -130
- package/dist/elements/src/elements/parseTimeToMs.mjs +0 -13
- package/dist/elements/src/elements.mjs +0 -12
- package/dist/elements/src/gui/TWMixin.css.mjs +0 -4
- package/dist/util/awaitAnimationFrame.mjs +0 -11
- package/docker-compose.yaml +0 -17
- package/src/EF_FRAMEGEN.ts +0 -208
- package/src/EF_INTERACTIVE.ts +0 -2
- package/src/elements/CrossUpdateController.ts +0 -18
- package/src/elements/EFAudio.ts +0 -42
- package/src/elements/EFCaptions.ts +0 -202
- package/src/elements/EFImage.ts +0 -70
- package/src/elements/EFMedia.ts +0 -395
- package/src/elements/EFSourceMixin.ts +0 -57
- package/src/elements/EFTemporal.ts +0 -246
- package/src/elements/EFTimegroup.browsertest.ts +0 -360
- package/src/elements/EFVideo.ts +0 -114
- package/src/elements/EFWaveform.ts +0 -407
- package/src/elements/FetchMixin.ts +0 -18
- package/src/elements/TimegroupController.ts +0 -25
- package/src/elements/buildLitFixture.ts +0 -13
- package/src/elements/durationConverter.ts +0 -6
- package/src/elements/parseTimeToMs.ts +0 -10
- package/src/elements/util.ts +0 -24
- package/src/gui/EFFilmstrip.ts +0 -702
- package/src/gui/EFWorkbench.ts +0 -242
- package/src/gui/TWMixin.css +0 -3
- package/src/util.d.ts +0 -1
- /package/dist/{editor/msToTimeCode.mjs → lib/av/msToTimeCode.js} +0 -0
- /package/dist/{util/awaitMicrotask.mjs → lib/util/awaitMicrotask.js} +0 -0
- /package/dist/{elements/src/EF_INTERACTIVE.mjs → packages/elements/src/EF_INTERACTIVE.js} +0 -0
- /package/dist/{elements/src/elements/CrossUpdateController.mjs → packages/elements/src/elements/CrossUpdateController.js} +0 -0
- /package/dist/{elements/src/elements/TimegroupController.mjs → packages/elements/src/elements/TimegroupController.js} +0 -0
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { consume } from "@lit/context";
|
|
2
|
-
import { apiHostContext } from "../gui/EFWorkbench.
|
|
2
|
+
import { apiHostContext } from "../gui/EFWorkbench.js";
|
|
3
3
|
import { state } from "lit/decorators/state.js";
|
|
4
4
|
import { Task } from "@lit/task";
|
|
5
5
|
import { property } from "lit/decorators/property.js";
|
|
6
6
|
var __defProp = Object.defineProperty;
|
|
7
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
8
7
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
9
|
-
var result =
|
|
8
|
+
var result = void 0;
|
|
10
9
|
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
11
10
|
if (decorator = decorators[i])
|
|
12
|
-
result =
|
|
13
|
-
if (
|
|
14
|
-
__defProp(target, key, result);
|
|
11
|
+
result = decorator(target, key, result) || result;
|
|
12
|
+
if (result) __defProp(target, key, result);
|
|
15
13
|
return result;
|
|
16
14
|
};
|
|
17
15
|
function EFSourceMixin(superClass, options) {
|
|
@@ -46,10 +44,10 @@ function EFSourceMixin(superClass, options) {
|
|
|
46
44
|
__decorateClass([
|
|
47
45
|
consume({ context: apiHostContext, subscribe: true }),
|
|
48
46
|
state()
|
|
49
|
-
], EFSourceElement.prototype, "efHost"
|
|
47
|
+
], EFSourceElement.prototype, "efHost");
|
|
50
48
|
__decorateClass([
|
|
51
49
|
property({ type: String })
|
|
52
|
-
], EFSourceElement.prototype, "src"
|
|
50
|
+
], EFSourceElement.prototype, "src");
|
|
53
51
|
return EFSourceElement;
|
|
54
52
|
}
|
|
55
53
|
export {
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const context = require("@lit/context");
|
|
4
|
+
const decorators_js = require("lit/decorators.js");
|
|
5
|
+
const durationConverter = require("./durationConverter.cjs");
|
|
6
|
+
const task = require("@lit/task");
|
|
7
|
+
const EF_INTERACTIVE = require("../EF_INTERACTIVE.cjs");
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
11
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
12
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
13
|
+
if (decorator = decorators[i])
|
|
14
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
15
|
+
if (kind && result) __defProp(target, key, result);
|
|
16
|
+
return result;
|
|
17
|
+
};
|
|
18
|
+
const timegroupContext = context.createContext(
|
|
19
|
+
Symbol("timeGroupContext")
|
|
20
|
+
);
|
|
21
|
+
const isEFTemporal = (obj) => obj[EF_TEMPORAL];
|
|
22
|
+
const EF_TEMPORAL = Symbol("EF_TEMPORAL");
|
|
23
|
+
const deepGetTemporalElements = (element, temporals = []) => {
|
|
24
|
+
for (const child of element.children) {
|
|
25
|
+
if (isEFTemporal(child)) {
|
|
26
|
+
temporals.push(child);
|
|
27
|
+
}
|
|
28
|
+
deepGetTemporalElements(child, temporals);
|
|
29
|
+
}
|
|
30
|
+
return temporals;
|
|
31
|
+
};
|
|
32
|
+
const deepGetElementsWithFrameTasks = (element, elements = []) => {
|
|
33
|
+
for (const child of element.children) {
|
|
34
|
+
if ("frameTask" in child && child.frameTask instanceof task.Task) {
|
|
35
|
+
elements.push(child);
|
|
36
|
+
}
|
|
37
|
+
deepGetElementsWithFrameTasks(child, elements);
|
|
38
|
+
}
|
|
39
|
+
return elements;
|
|
40
|
+
};
|
|
41
|
+
const shallowGetTemporalElements = (element, temporals = []) => {
|
|
42
|
+
for (const child of element.children) {
|
|
43
|
+
if (isEFTemporal(child)) {
|
|
44
|
+
temporals.push(child);
|
|
45
|
+
} else {
|
|
46
|
+
shallowGetTemporalElements(child, temporals);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return temporals;
|
|
50
|
+
};
|
|
51
|
+
class OwnCurrentTimeController {
|
|
52
|
+
constructor(host, temporal) {
|
|
53
|
+
this.host = host;
|
|
54
|
+
this.temporal = temporal;
|
|
55
|
+
host.addController(this);
|
|
56
|
+
}
|
|
57
|
+
hostUpdated() {
|
|
58
|
+
this.temporal.requestUpdate("ownCurrentTimeMs");
|
|
59
|
+
}
|
|
60
|
+
remove() {
|
|
61
|
+
this.host.removeController(this);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const EFTemporal = (superClass) => {
|
|
65
|
+
class TemporalMixinClass extends superClass {
|
|
66
|
+
constructor() {
|
|
67
|
+
super(...arguments);
|
|
68
|
+
this._offsetMs = 0;
|
|
69
|
+
this.rootTimegroup = this.getRootTimegroup();
|
|
70
|
+
this.frameTask = new task.Task(this, {
|
|
71
|
+
autoRun: EF_INTERACTIVE.EF_INTERACTIVE,
|
|
72
|
+
args: () => [this.ownCurrentTimeMs],
|
|
73
|
+
task: async ([], { signal: _signal }) => {
|
|
74
|
+
let fullyUpdated = await this.updateComplete;
|
|
75
|
+
while (!fullyUpdated) {
|
|
76
|
+
fullyUpdated = await this.updateComplete;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
#parentTimegroup;
|
|
82
|
+
set parentTimegroup(value) {
|
|
83
|
+
this.#parentTimegroup = value;
|
|
84
|
+
this.ownCurrentTimeController?.remove();
|
|
85
|
+
this.rootTimegroup = this.getRootTimegroup();
|
|
86
|
+
if (this.rootTimegroup) {
|
|
87
|
+
this.ownCurrentTimeController = new OwnCurrentTimeController(
|
|
88
|
+
this.rootTimegroup,
|
|
89
|
+
this
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
get parentTimegroup() {
|
|
94
|
+
return this.#parentTimegroup;
|
|
95
|
+
}
|
|
96
|
+
getRootTimegroup() {
|
|
97
|
+
let parent = this.tagName === "EF-TIMEGROUP" ? this : this.parentTimegroup;
|
|
98
|
+
while (parent?.parentTimegroup) {
|
|
99
|
+
parent = parent.parentTimegroup;
|
|
100
|
+
}
|
|
101
|
+
return parent;
|
|
102
|
+
}
|
|
103
|
+
get hasOwnDuration() {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
// Defining this as a getter to a private property allows us to
|
|
107
|
+
// override it classes that include this mixin.
|
|
108
|
+
get durationMs() {
|
|
109
|
+
const durationMs = this._durationMs || this.parentTimegroup?.durationMs || 0;
|
|
110
|
+
return durationMs || 0;
|
|
111
|
+
}
|
|
112
|
+
get offsetMs() {
|
|
113
|
+
return this._offsetMs || 0;
|
|
114
|
+
}
|
|
115
|
+
get parentTemporal() {
|
|
116
|
+
let parent = this.parentElement;
|
|
117
|
+
while (parent && !isEFTemporal(parent)) {
|
|
118
|
+
parent = parent.parentElement;
|
|
119
|
+
}
|
|
120
|
+
return parent;
|
|
121
|
+
}
|
|
122
|
+
get startTimeWithinParentMs() {
|
|
123
|
+
if (!this.parentTemporal) {
|
|
124
|
+
return 0;
|
|
125
|
+
}
|
|
126
|
+
return this.startTimeMs - this.parentTemporal.startTimeMs;
|
|
127
|
+
}
|
|
128
|
+
get startTimeMs() {
|
|
129
|
+
const parentTimegroup = this.parentTimegroup;
|
|
130
|
+
if (!parentTimegroup) {
|
|
131
|
+
return 0;
|
|
132
|
+
}
|
|
133
|
+
switch (parentTimegroup.mode) {
|
|
134
|
+
case "sequence": {
|
|
135
|
+
const siblingTemorals = shallowGetTemporalElements(parentTimegroup);
|
|
136
|
+
const ownIndex = siblingTemorals.indexOf(this);
|
|
137
|
+
if (ownIndex === 0) {
|
|
138
|
+
return parentTimegroup.startTimeMs;
|
|
139
|
+
}
|
|
140
|
+
const previous = siblingTemorals[ownIndex - 1];
|
|
141
|
+
if (!previous) {
|
|
142
|
+
throw new Error("Previous temporal element not found");
|
|
143
|
+
}
|
|
144
|
+
return previous.startTimeMs + previous.durationMs;
|
|
145
|
+
}
|
|
146
|
+
case "contain":
|
|
147
|
+
case "fixed":
|
|
148
|
+
return parentTimegroup.startTimeMs + this.offsetMs;
|
|
149
|
+
default:
|
|
150
|
+
throw new Error(`Invalid time mode: ${parentTimegroup.mode}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
get endTimeMs() {
|
|
154
|
+
return this.startTimeMs + this.durationMs;
|
|
155
|
+
}
|
|
156
|
+
get ownCurrentTimeMs() {
|
|
157
|
+
if (this.rootTimegroup) {
|
|
158
|
+
return Math.min(
|
|
159
|
+
Math.max(0, this.rootTimegroup.currentTimeMs - this.startTimeMs),
|
|
160
|
+
this.durationMs
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
return 0;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
__decorateClass([
|
|
167
|
+
context.consume({ context: timegroupContext, subscribe: true }),
|
|
168
|
+
decorators_js.property({ attribute: false })
|
|
169
|
+
], TemporalMixinClass.prototype, "parentTimegroup", 1);
|
|
170
|
+
__decorateClass([
|
|
171
|
+
decorators_js.property({
|
|
172
|
+
type: String,
|
|
173
|
+
attribute: "offset",
|
|
174
|
+
converter: durationConverter.durationConverter
|
|
175
|
+
})
|
|
176
|
+
], TemporalMixinClass.prototype, "_offsetMs", 2);
|
|
177
|
+
__decorateClass([
|
|
178
|
+
decorators_js.property({
|
|
179
|
+
type: Number,
|
|
180
|
+
attribute: "duration",
|
|
181
|
+
converter: durationConverter.durationConverter
|
|
182
|
+
})
|
|
183
|
+
], TemporalMixinClass.prototype, "_durationMs", 2);
|
|
184
|
+
__decorateClass([
|
|
185
|
+
decorators_js.state()
|
|
186
|
+
], TemporalMixinClass.prototype, "rootTimegroup", 2);
|
|
187
|
+
Object.defineProperty(TemporalMixinClass.prototype, EF_TEMPORAL, {
|
|
188
|
+
value: true
|
|
189
|
+
});
|
|
190
|
+
return TemporalMixinClass;
|
|
191
|
+
};
|
|
192
|
+
exports.EFTemporal = EFTemporal;
|
|
193
|
+
exports.OwnCurrentTimeController = OwnCurrentTimeController;
|
|
194
|
+
exports.deepGetElementsWithFrameTasks = deepGetElementsWithFrameTasks;
|
|
195
|
+
exports.deepGetTemporalElements = deepGetTemporalElements;
|
|
196
|
+
exports.isEFTemporal = isEFTemporal;
|
|
197
|
+
exports.shallowGetTemporalElements = shallowGetTemporalElements;
|
|
198
|
+
exports.timegroupContext = timegroupContext;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { LitElement, ReactiveController } from 'lit';
|
|
2
|
+
import { EFTimegroup } from './EFTimegroup';
|
|
3
|
+
import { Task } from '@lit/task';
|
|
4
|
+
|
|
5
|
+
export declare const timegroupContext: {
|
|
6
|
+
__context__: EFTimegroup;
|
|
7
|
+
};
|
|
8
|
+
export declare class TemporalMixinInterface {
|
|
9
|
+
get hasOwnDuration(): boolean;
|
|
10
|
+
get durationMs(): number;
|
|
11
|
+
get startTimeMs(): number;
|
|
12
|
+
get startTimeWithinParentMs(): number;
|
|
13
|
+
get endTimeMs(): number;
|
|
14
|
+
get ownCurrentTimeMs(): number;
|
|
15
|
+
parentTimegroup?: EFTimegroup;
|
|
16
|
+
rootTimegroup?: EFTimegroup;
|
|
17
|
+
frameTask: Task<readonly unknown[], unknown>;
|
|
18
|
+
}
|
|
19
|
+
export declare const isEFTemporal: (obj: any) => obj is TemporalMixinInterface;
|
|
20
|
+
export declare const deepGetTemporalElements: (element: Element, temporals?: TemporalMixinInterface[]) => TemporalMixinInterface[];
|
|
21
|
+
export declare const deepGetElementsWithFrameTasks: (element: Element, elements?: {
|
|
22
|
+
frameTask: Task;
|
|
23
|
+
}[]) => {
|
|
24
|
+
frameTask: Task;
|
|
25
|
+
}[];
|
|
26
|
+
export declare const shallowGetTemporalElements: (element: Element, temporals?: TemporalMixinInterface[]) => TemporalMixinInterface[];
|
|
27
|
+
export declare class OwnCurrentTimeController implements ReactiveController {
|
|
28
|
+
private host;
|
|
29
|
+
private temporal;
|
|
30
|
+
constructor(host: EFTimegroup, temporal: TemporalMixinInterface & LitElement);
|
|
31
|
+
hostUpdated(): void;
|
|
32
|
+
remove(): void;
|
|
33
|
+
}
|
|
34
|
+
type Constructor<T = {}> = new (...args: any[]) => T;
|
|
35
|
+
export declare const EFTemporal: <T extends Constructor<LitElement>>(superClass: T) => Constructor<TemporalMixinInterface> & T;
|
|
36
|
+
export {};
|
package/dist/{elements/src/elements/EFTemporal.mjs → packages/elements/src/elements/EFTemporal.js}
RENAMED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { createContext, consume } from "@lit/context";
|
|
2
2
|
import { property, state } from "lit/decorators.js";
|
|
3
|
-
import {
|
|
4
|
-
import { durationConverter } from "./durationConverter.mjs";
|
|
3
|
+
import { durationConverter } from "./durationConverter.js";
|
|
5
4
|
import { Task } from "@lit/task";
|
|
6
|
-
import { EF_INTERACTIVE } from "../EF_INTERACTIVE.
|
|
5
|
+
import { EF_INTERACTIVE } from "../EF_INTERACTIVE.js";
|
|
7
6
|
var __defProp = Object.defineProperty;
|
|
8
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
8
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
@@ -11,8 +10,7 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
11
10
|
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
12
11
|
if (decorator = decorators[i])
|
|
13
12
|
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
14
|
-
if (kind && result)
|
|
15
|
-
__defProp(target, key, result);
|
|
13
|
+
if (kind && result) __defProp(target, key, result);
|
|
16
14
|
return result;
|
|
17
15
|
};
|
|
18
16
|
const timegroupContext = createContext(
|
|
@@ -48,16 +46,6 @@ const shallowGetTemporalElements = (element, temporals = []) => {
|
|
|
48
46
|
}
|
|
49
47
|
return temporals;
|
|
50
48
|
};
|
|
51
|
-
const shallowGetTimegroups = (element, groups = []) => {
|
|
52
|
-
for (const child of element.children) {
|
|
53
|
-
if (child instanceof EFTimegroup) {
|
|
54
|
-
groups.push(child);
|
|
55
|
-
} else {
|
|
56
|
-
shallowGetTimegroups(child, groups);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return groups;
|
|
60
|
-
};
|
|
61
49
|
class OwnCurrentTimeController {
|
|
62
50
|
constructor(host, temporal) {
|
|
63
51
|
this.host = host;
|
|
@@ -80,7 +68,7 @@ const EFTemporal = (superClass) => {
|
|
|
80
68
|
this.frameTask = new Task(this, {
|
|
81
69
|
autoRun: EF_INTERACTIVE,
|
|
82
70
|
args: () => [this.ownCurrentTimeMs],
|
|
83
|
-
task: async ([], { signal }) => {
|
|
71
|
+
task: async ([], { signal: _signal }) => {
|
|
84
72
|
let fullyUpdated = await this.updateComplete;
|
|
85
73
|
while (!fullyUpdated) {
|
|
86
74
|
fullyUpdated = await this.updateComplete;
|
|
@@ -103,11 +91,8 @@ const EFTemporal = (superClass) => {
|
|
|
103
91
|
get parentTimegroup() {
|
|
104
92
|
return this.#parentTimegroup;
|
|
105
93
|
}
|
|
106
|
-
get offsetAppliesToDuration() {
|
|
107
|
-
return !(this.parentTimegroup?.mode === "sequence");
|
|
108
|
-
}
|
|
109
94
|
getRootTimegroup() {
|
|
110
|
-
let parent = this
|
|
95
|
+
let parent = this.tagName === "EF-TIMEGROUP" ? this : this.parentTimegroup;
|
|
111
96
|
while (parent?.parentTimegroup) {
|
|
112
97
|
parent = parent.parentTimegroup;
|
|
113
98
|
}
|
|
@@ -119,7 +104,7 @@ const EFTemporal = (superClass) => {
|
|
|
119
104
|
// Defining this as a getter to a private property allows us to
|
|
120
105
|
// override it classes that include this mixin.
|
|
121
106
|
get durationMs() {
|
|
122
|
-
|
|
107
|
+
const durationMs = this._durationMs || this.parentTimegroup?.durationMs || 0;
|
|
123
108
|
return durationMs || 0;
|
|
124
109
|
}
|
|
125
110
|
get offsetMs() {
|
|
@@ -209,6 +194,5 @@ export {
|
|
|
209
194
|
deepGetTemporalElements,
|
|
210
195
|
isEFTemporal,
|
|
211
196
|
shallowGetTemporalElements,
|
|
212
|
-
shallowGetTimegroups,
|
|
213
197
|
timegroupContext
|
|
214
198
|
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
|
|
3
|
+
declare const TestTemporal_base: (new (...args: any[]) => import('./EFTemporal').TemporalMixinInterface) & typeof LitElement;
|
|
4
|
+
declare class TestTemporal extends TestTemporal_base {
|
|
5
|
+
get hasOwnDuration(): boolean;
|
|
6
|
+
}
|
|
7
|
+
declare global {
|
|
8
|
+
interface HTMLElementTagNameMap {
|
|
9
|
+
"test-temporal": TestTemporal;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export {};
|