@editframe/elements 0.7.0-beta.11 → 0.7.0-beta.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,242 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const EFAudio = require("./EFAudio.cjs");
|
|
4
|
-
const lit = require("lit");
|
|
5
|
-
const decorators_js = require("lit/decorators.js");
|
|
6
|
-
const EFVideo = require("./EFVideo.cjs");
|
|
7
|
-
const EFTemporal = require("./EFTemporal.cjs");
|
|
8
|
-
const CrossUpdateController = require("./CrossUpdateController.cjs");
|
|
9
|
-
const TWMixin = require("../gui/TWMixin.cjs");
|
|
10
|
-
const task = require("@lit/task");
|
|
11
|
-
const d3 = require("d3");
|
|
12
|
-
const ref_js = require("lit/directives/ref.js");
|
|
13
|
-
const EF_INTERACTIVE = require("../EF_INTERACTIVE.cjs");
|
|
14
|
-
function _interopNamespaceDefault(e) {
|
|
15
|
-
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
16
|
-
if (e) {
|
|
17
|
-
for (const k in e) {
|
|
18
|
-
if (k !== "default") {
|
|
19
|
-
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
20
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
get: () => e[k]
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
n.default = e;
|
|
28
|
-
return Object.freeze(n);
|
|
29
|
-
}
|
|
30
|
-
const d3__namespace = /* @__PURE__ */ _interopNamespaceDefault(d3);
|
|
31
|
-
var __defProp = Object.defineProperty;
|
|
32
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
33
|
-
var __decorateClass = (decorators, target, key, kind) => {
|
|
34
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
35
|
-
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
36
|
-
if (decorator = decorators[i])
|
|
37
|
-
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
38
|
-
if (kind && result) __defProp(target, key, result);
|
|
39
|
-
return result;
|
|
40
|
-
};
|
|
41
|
-
exports.EFWaveform = class EFWaveform extends EFTemporal.EFTemporal(TWMixin.TWMixin(lit.LitElement)) {
|
|
42
|
-
constructor() {
|
|
43
|
-
super(...arguments);
|
|
44
|
-
this.svgRef = ref_js.createRef();
|
|
45
|
-
this.mode = "bars";
|
|
46
|
-
this.color = "currentColor";
|
|
47
|
-
this.targetSelector = "";
|
|
48
|
-
this.frameTask = new task.Task(this, {
|
|
49
|
-
autoRun: EF_INTERACTIVE.EF_INTERACTIVE,
|
|
50
|
-
args: () => [this.targetElement.audioBufferTask.status],
|
|
51
|
-
task: async () => {
|
|
52
|
-
await this.targetElement.audioBufferTask.taskComplete;
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
createRenderRoot() {
|
|
57
|
-
return this;
|
|
58
|
-
}
|
|
59
|
-
render() {
|
|
60
|
-
return lit.html` <svg ${ref_js.ref(this.svgRef)} class="h-full w-full" store></svg> `;
|
|
61
|
-
}
|
|
62
|
-
set target(value) {
|
|
63
|
-
this.targetSelector = value;
|
|
64
|
-
}
|
|
65
|
-
connectedCallback() {
|
|
66
|
-
super.connectedCallback();
|
|
67
|
-
if (this.targetElement) {
|
|
68
|
-
new CrossUpdateController.CrossUpdateController(this.targetElement, this);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
drawBars(svg, frequencyData) {
|
|
72
|
-
const waveWidth = svg.clientWidth * devicePixelRatio;
|
|
73
|
-
const waveHeight = svg.clientHeight;
|
|
74
|
-
const waveLeft = 0;
|
|
75
|
-
const waveRight = waveWidth;
|
|
76
|
-
const barX = d3__namespace.scaleBand().paddingInner(0.5).paddingOuter(0.01).domain(d3__namespace.range(frequencyData.length).map((n) => String(n))).rangeRound([waveLeft, waveRight]);
|
|
77
|
-
const height = d3__namespace.scaleLinear().domain([0, 255]).range([0, waveHeight / 2]);
|
|
78
|
-
const baseline = waveHeight / 2;
|
|
79
|
-
const bars = d3__namespace.select(svg).selectAll("rect").data(frequencyData);
|
|
80
|
-
const minBarHeight = 2;
|
|
81
|
-
bars.enter().append("rect").merge(bars).attr("x", (_, i) => barX(String(i)) || 0).attr("y", (value) => baseline - height(value)).attr("width", barX.bandwidth() / 1.2).attr("height", (value) => Math.max(height(value) * 2, minBarHeight));
|
|
82
|
-
bars.exit().remove();
|
|
83
|
-
}
|
|
84
|
-
drawBricks(svg, frequencyData) {
|
|
85
|
-
const waveWidth = svg.clientWidth * devicePixelRatio;
|
|
86
|
-
const waveHeight = svg.clientHeight * devicePixelRatio;
|
|
87
|
-
const brickWidth = waveWidth / frequencyData.length;
|
|
88
|
-
const brickHeightFactor = waveHeight / 255 / 2;
|
|
89
|
-
const brickPadding = 2;
|
|
90
|
-
const midHeight = waveHeight / 2;
|
|
91
|
-
d3__namespace.select(svg).selectAll("line.brickBaseLine").data([0]).join("line").attr("class", "brickBaseLine").attr("x1", 0).attr("x2", waveWidth).attr("y1", midHeight).attr("y2", midHeight).attr("stroke", "currentColor").attr("stroke-width", 4).attr("stroke-dasharray", "2");
|
|
92
|
-
d3__namespace.select(svg).selectAll("rect.brick").data(frequencyData).join("rect").attr("class", "brick").attr("x", (_d, i) => i * brickWidth).attr("y", (d) => midHeight - d * brickHeightFactor).attr("width", brickWidth - brickPadding).attr("height", (d) => d * brickHeightFactor * 2);
|
|
93
|
-
}
|
|
94
|
-
drawLine(svg, frequencyData) {
|
|
95
|
-
const waveWidth = svg.clientWidth * devicePixelRatio;
|
|
96
|
-
const waveHeight = svg.clientHeight * devicePixelRatio;
|
|
97
|
-
const xScale = d3__namespace.scaleLinear().domain([0, frequencyData.length - 1]).range([0, waveWidth]);
|
|
98
|
-
const yScale = d3__namespace.scaleLinear().domain([0, 255]).range([waveHeight, 0]);
|
|
99
|
-
const lineGenerator = d3__namespace.line().x((_, i) => xScale(i)).y((d) => yScale(d));
|
|
100
|
-
const pathData = lineGenerator(frequencyData);
|
|
101
|
-
d3__namespace.select(svg).selectAll("path.line").data([frequencyData]).join("path").attr("class", "line").attr("d", pathData).attr("fill", "none").attr("stroke", "currentColor").attr("stroke-width", 4);
|
|
102
|
-
}
|
|
103
|
-
drawRoundBars(svg, frequencyData) {
|
|
104
|
-
const waveWidth = svg.clientWidth * devicePixelRatio;
|
|
105
|
-
const waveHeight = svg.clientHeight;
|
|
106
|
-
const waveLeft = 0;
|
|
107
|
-
const waveRight = waveWidth;
|
|
108
|
-
const barX = d3__namespace.scaleBand().paddingInner(0.5).paddingOuter(0.01).domain(d3__namespace.range(frequencyData.length).map((n) => String(n))).rangeRound([waveLeft, waveRight]);
|
|
109
|
-
const height = d3__namespace.scaleLinear().domain([0, 255]).range([0, waveHeight / 2]);
|
|
110
|
-
const baseline = waveHeight / 2;
|
|
111
|
-
const bars = d3__namespace.select(svg).selectAll("rect").data(frequencyData);
|
|
112
|
-
const minBarHeight = 2;
|
|
113
|
-
bars.enter().append("rect").merge(bars).attr("x", (_, i) => barX(String(i)) || 0).attr("y", (value) => baseline - height(value)).attr("width", barX.bandwidth() / 1.2).attr("height", (value) => Math.max(height(value) * 2, minBarHeight)).attr("rx", barX.bandwidth()).attr("ry", barX.bandwidth());
|
|
114
|
-
bars.exit().remove();
|
|
115
|
-
}
|
|
116
|
-
drawEqualizer(svg, frequencyData) {
|
|
117
|
-
const waveWidth = svg.clientWidth * devicePixelRatio;
|
|
118
|
-
const waveHeight = svg.clientHeight * devicePixelRatio;
|
|
119
|
-
const barWidth = waveWidth / frequencyData.length;
|
|
120
|
-
const barPadding = 1;
|
|
121
|
-
const minHeight = 1;
|
|
122
|
-
const heightScale = d3__namespace.scaleLinear().domain([0, 255]).range([0, waveHeight / 2]);
|
|
123
|
-
d3__namespace.select(svg).selectAll("line.equalizerBaseLine").data([0]).join("line").attr("class", "equalizerBaseLine").attr("x1", 0).attr("x2", waveWidth).attr("y1", waveHeight / 2).attr("y2", waveHeight / 2).attr("stroke-width", 2);
|
|
124
|
-
d3__namespace.select(svg).selectAll("rect.equalizerBar").data(frequencyData).join("rect").attr("class", "equalizerBar").attr("x", (_d, i) => i * barWidth + barPadding / 2).attr(
|
|
125
|
-
"y",
|
|
126
|
-
(d) => waveHeight / 2 - Math.max(heightScale(d) / 2, minHeight)
|
|
127
|
-
).attr("width", barWidth - barPadding).attr("height", (d) => Math.max(heightScale(d), minHeight));
|
|
128
|
-
d3__namespace.select(svg).selectAll("rect.equalizerBar").transition().duration(100).attr(
|
|
129
|
-
"y",
|
|
130
|
-
(d) => waveHeight / 2 - Math.max(heightScale(Number(d)) / 2, minHeight)
|
|
131
|
-
).attr("height", (d) => Math.max(heightScale(Number(d)), minHeight));
|
|
132
|
-
}
|
|
133
|
-
drawCurve(svg, frequencyData) {
|
|
134
|
-
const waveWidth = svg.clientWidth * devicePixelRatio;
|
|
135
|
-
const waveHeight = svg.clientHeight * devicePixelRatio;
|
|
136
|
-
const xScale = d3__namespace.scaleLinear().domain([0, frequencyData.length]).range([0, waveWidth]);
|
|
137
|
-
const yScale = d3__namespace.scaleLinear().domain([0, 255]).range([waveHeight, 0]);
|
|
138
|
-
const curveGenerator = d3__namespace.line().x((_, i) => xScale(i)).y((d) => yScale(d)).curve(d3__namespace.curveNatural);
|
|
139
|
-
const pathData = curveGenerator(frequencyData);
|
|
140
|
-
d3__namespace.select(svg).selectAll("path.curve").data([frequencyData]).join("path").attr("class", "curve").attr("d", pathData).attr("fill", "none").attr("stroke", "currentColor").attr("stroke-width", 4);
|
|
141
|
-
}
|
|
142
|
-
drawPixel(svg, frequencyData) {
|
|
143
|
-
const waveWidth = svg.clientWidth * devicePixelRatio;
|
|
144
|
-
const waveHeight = svg.clientHeight;
|
|
145
|
-
const baseline = waveHeight / 2;
|
|
146
|
-
const barX = d3__namespace.scaleBand().domain(d3__namespace.range(frequencyData.length).map(String)).rangeRound([0, waveWidth]).paddingInner(0.03).paddingOuter(0.02);
|
|
147
|
-
const height = d3__namespace.scaleLinear().domain([0, 255]).range([0, baseline]);
|
|
148
|
-
const bars = d3__namespace.select(svg).selectAll("rect").data(frequencyData);
|
|
149
|
-
bars.enter().append("rect").merge(bars).attr("x", (_, i) => barX(String(i)) || 0).attr("y", (value) => baseline - height(value)).attr("width", barX.bandwidth()).attr("height", (value) => height(value) * 2);
|
|
150
|
-
bars.exit().remove();
|
|
151
|
-
}
|
|
152
|
-
drawWave(svg, frequencyData) {
|
|
153
|
-
const waveWidth = svg.clientWidth * devicePixelRatio;
|
|
154
|
-
const waveHeight = svg.clientHeight;
|
|
155
|
-
const barX = d3__namespace.scaleBand().domain(d3__namespace.range(frequencyData.length).map(String)).rangeRound([0, waveWidth]).paddingInner(0.03).paddingOuter(0.02);
|
|
156
|
-
const height = d3__namespace.scaleLinear().domain([0, 255]).range([0, waveHeight / 2]);
|
|
157
|
-
d3__namespace.select(svg).selectAll("line.baseline").data([0]).join("line").attr("class", "baseline").attr("x1", (_, i) => barX(String(i)) || 0).attr("x2", waveWidth).attr("y1", waveHeight / 2).attr("y2", waveHeight / 2).attr("stroke", "currentColor").attr("stroke-width", 2);
|
|
158
|
-
const bars = d3__namespace.select(svg).selectAll("rect").data(frequencyData);
|
|
159
|
-
bars.enter().append("rect").merge(bars).attr("x", (_, i) => barX(String(i)) || 0).attr("y", (value) => waveHeight / 2 - height(value)).attr("width", barX.bandwidth()).attr("height", (value) => height(value) * 2);
|
|
160
|
-
bars.exit().remove();
|
|
161
|
-
}
|
|
162
|
-
async updated() {
|
|
163
|
-
const svg = this.svgRef.value;
|
|
164
|
-
if (!svg) {
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
if (!this.targetElement.audioBufferTask.value) {
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
if (this.targetElement.ownCurrentTimeMs > 0) {
|
|
171
|
-
const audioContext = new OfflineAudioContext(2, 48e3 / 25, 48e3);
|
|
172
|
-
const audioBufferSource = audioContext.createBufferSource();
|
|
173
|
-
audioBufferSource.buffer = this.targetElement.audioBufferTask.value.buffer;
|
|
174
|
-
const analyser = audioContext.createAnalyser();
|
|
175
|
-
analyser.fftSize = 256;
|
|
176
|
-
audioBufferSource.connect(analyser);
|
|
177
|
-
audioBufferSource.start(
|
|
178
|
-
0,
|
|
179
|
-
Math.max(
|
|
180
|
-
0,
|
|
181
|
-
(this.targetElement.ownCurrentTimeMs - this.targetElement.audioBufferTask.value.startOffsetMs) / 1e3
|
|
182
|
-
),
|
|
183
|
-
48e3 / 1e3
|
|
184
|
-
);
|
|
185
|
-
await audioContext.startRendering();
|
|
186
|
-
const frequencyData = new Uint8Array(analyser.frequencyBinCount);
|
|
187
|
-
analyser.getByteFrequencyData(frequencyData);
|
|
188
|
-
const rect = this.getBoundingClientRect();
|
|
189
|
-
svg.setAttribute("width", (rect.width * devicePixelRatio).toString());
|
|
190
|
-
svg.setAttribute("height", (rect.height * devicePixelRatio).toString());
|
|
191
|
-
switch (this.mode) {
|
|
192
|
-
case "bars":
|
|
193
|
-
this.drawBars(svg, frequencyData);
|
|
194
|
-
break;
|
|
195
|
-
case "bricks":
|
|
196
|
-
this.drawBricks(svg, frequencyData);
|
|
197
|
-
break;
|
|
198
|
-
case "curve":
|
|
199
|
-
this.drawCurve(svg, frequencyData);
|
|
200
|
-
break;
|
|
201
|
-
case "line":
|
|
202
|
-
this.drawLine(svg, frequencyData);
|
|
203
|
-
break;
|
|
204
|
-
case "pixel":
|
|
205
|
-
this.drawPixel(svg, frequencyData);
|
|
206
|
-
break;
|
|
207
|
-
case "wave":
|
|
208
|
-
this.drawWave(svg, frequencyData);
|
|
209
|
-
break;
|
|
210
|
-
case "roundBars":
|
|
211
|
-
this.drawRoundBars(svg, frequencyData);
|
|
212
|
-
break;
|
|
213
|
-
case "equalizer":
|
|
214
|
-
this.drawEqualizer(svg, frequencyData);
|
|
215
|
-
break;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
get targetElement() {
|
|
220
|
-
const target = document.getElementById(this.targetSelector ?? "");
|
|
221
|
-
if (target instanceof EFAudio.EFAudio || target instanceof EFVideo.EFVideo) {
|
|
222
|
-
return target;
|
|
223
|
-
}
|
|
224
|
-
throw new Error("Invalid target, must be an EFAudio element");
|
|
225
|
-
}
|
|
226
|
-
};
|
|
227
|
-
exports.EFWaveform.styles = [];
|
|
228
|
-
__decorateClass([
|
|
229
|
-
decorators_js.property({
|
|
230
|
-
type: String,
|
|
231
|
-
attribute: "mode"
|
|
232
|
-
})
|
|
233
|
-
], exports.EFWaveform.prototype, "mode", 2);
|
|
234
|
-
__decorateClass([
|
|
235
|
-
decorators_js.property({ type: String })
|
|
236
|
-
], exports.EFWaveform.prototype, "color", 2);
|
|
237
|
-
__decorateClass([
|
|
238
|
-
decorators_js.property({ type: String, attribute: "target", reflect: true })
|
|
239
|
-
], exports.EFWaveform.prototype, "targetSelector", 2);
|
|
240
|
-
exports.EFWaveform = __decorateClass([
|
|
241
|
-
decorators_js.customElement("ef-waveform")
|
|
242
|
-
], exports.EFWaveform);
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const context = require("@lit/context");
|
|
4
|
-
const EFWorkbench = require("../gui/EFWorkbench.cjs");
|
|
5
|
-
const state_js = require("lit/decorators/state.js");
|
|
6
|
-
var __defProp = Object.defineProperty;
|
|
7
|
-
var __decorateClass = (decorators, target, key, kind) => {
|
|
8
|
-
var result = void 0;
|
|
9
|
-
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
10
|
-
if (decorator = decorators[i])
|
|
11
|
-
result = decorator(target, key, result) || result;
|
|
12
|
-
if (result) __defProp(target, key, result);
|
|
13
|
-
return result;
|
|
14
|
-
};
|
|
15
|
-
function FetchMixin(superClass) {
|
|
16
|
-
class FetchElement extends superClass {
|
|
17
|
-
constructor() {
|
|
18
|
-
super(...arguments);
|
|
19
|
-
this.fetch = fetch.bind(window);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
__decorateClass([
|
|
23
|
-
context.consume({ context: EFWorkbench.fetchContext, subscribe: true }),
|
|
24
|
-
state_js.state()
|
|
25
|
-
], FetchElement.prototype, "fetch");
|
|
26
|
-
return FetchElement;
|
|
27
|
-
}
|
|
28
|
-
exports.FetchMixin = FetchMixin;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
class TimegroupController {
|
|
4
|
-
constructor(host, child) {
|
|
5
|
-
this.host = host;
|
|
6
|
-
this.child = child;
|
|
7
|
-
this.host.addController(this);
|
|
8
|
-
}
|
|
9
|
-
remove() {
|
|
10
|
-
this.host.removeController(this);
|
|
11
|
-
}
|
|
12
|
-
hostDisconnected() {
|
|
13
|
-
this.host.removeController(this);
|
|
14
|
-
}
|
|
15
|
-
hostUpdated() {
|
|
16
|
-
this.child.requestUpdate();
|
|
17
|
-
this.child.currentTimeMs = this.host.currentTimeMs - (this.child.startTimeMs ?? 0);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
exports.TimegroupController = TimegroupController;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const parseTimeToMs = require("./parseTimeToMs.cjs");
|
|
4
|
-
const durationConverter = {
|
|
5
|
-
fromAttribute: (value) => parseTimeToMs.parseTimeToMs(value),
|
|
6
|
-
toAttribute: (value) => `${value}s`
|
|
7
|
-
};
|
|
8
|
-
exports.durationConverter = durationConverter;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const parseTimeToMs = (time) => {
|
|
4
|
-
if (time.endsWith("ms")) {
|
|
5
|
-
return Number.parseFloat(time);
|
|
6
|
-
}
|
|
7
|
-
if (time.endsWith("s")) {
|
|
8
|
-
return Number.parseFloat(time) * 1e3;
|
|
9
|
-
}
|
|
10
|
-
throw new Error("Time must be in milliseconds or seconds (10s, 10000ms)");
|
|
11
|
-
};
|
|
12
|
-
exports.parseTimeToMs = parseTimeToMs;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const EFTimegroup = require("./EFTimegroup.cjs");
|
|
4
|
-
const getStartTimeMs = (element) => {
|
|
5
|
-
const nearestTimeGroup = element.closest("ef-timegroup");
|
|
6
|
-
if (!(nearestTimeGroup instanceof EFTimegroup.EFTimegroup)) {
|
|
7
|
-
return 0;
|
|
8
|
-
}
|
|
9
|
-
return nearestTimeGroup.startTimeMs;
|
|
10
|
-
};
|
|
11
|
-
exports.getStartTimeMs = getStartTimeMs;
|