@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.
Files changed (109) hide show
  1. package/dist/lib/av/EncodedAsset.cjs +561 -0
  2. package/dist/{editor/util/EncodedAsset/EncodedAsset.mjs → lib/av/EncodedAsset.js} +40 -33
  3. package/dist/lib/av/MP4File.cjs +182 -0
  4. package/dist/{editor/util/MP4File.mjs → lib/av/MP4File.js} +55 -51
  5. package/dist/lib/av/msToTimeCode.cjs +15 -0
  6. package/dist/lib/util/awaitMicrotask.cjs +8 -0
  7. package/dist/lib/util/memoize.cjs +14 -0
  8. package/dist/{util/memoize.mjs → lib/util/memoize.js} +1 -2
  9. package/dist/packages/elements/src/EF_FRAMEGEN.cjs +197 -0
  10. package/dist/packages/elements/src/EF_FRAMEGEN.d.ts +45 -0
  11. package/dist/packages/elements/src/EF_FRAMEGEN.js +197 -0
  12. package/dist/packages/elements/src/EF_INTERACTIVE.cjs +4 -0
  13. package/dist/packages/elements/src/EF_INTERACTIVE.d.ts +1 -0
  14. package/dist/packages/elements/src/elements/CrossUpdateController.cjs +16 -0
  15. package/dist/packages/elements/src/elements/CrossUpdateController.d.ts +9 -0
  16. package/dist/packages/elements/src/elements/EFAudio.cjs +53 -0
  17. package/dist/packages/elements/src/elements/EFAudio.d.ts +10 -0
  18. package/dist/{elements/src/elements/EFAudio.mjs → packages/elements/src/elements/EFAudio.js} +2 -5
  19. package/dist/packages/elements/src/elements/EFCaptions.cjs +171 -0
  20. package/dist/packages/elements/src/elements/EFCaptions.d.ts +39 -0
  21. package/dist/{elements/src/elements/EFCaptions.mjs → packages/elements/src/elements/EFCaptions.js} +18 -20
  22. package/dist/packages/elements/src/elements/EFImage.cjs +79 -0
  23. package/dist/packages/elements/src/elements/EFImage.d.ts +14 -0
  24. package/dist/{elements/src/elements/EFImage.mjs → packages/elements/src/elements/EFImage.js} +8 -7
  25. package/dist/packages/elements/src/elements/EFMedia.cjs +334 -0
  26. package/dist/packages/elements/src/elements/EFMedia.d.ts +61 -0
  27. package/dist/{elements/src/elements/EFMedia.mjs → packages/elements/src/elements/EFMedia.js} +40 -38
  28. package/dist/packages/elements/src/elements/EFSourceMixin.cjs +55 -0
  29. package/dist/packages/elements/src/elements/EFSourceMixin.d.ts +12 -0
  30. package/dist/{elements/src/elements/EFSourceMixin.mjs → packages/elements/src/elements/EFSourceMixin.js} +6 -8
  31. package/dist/packages/elements/src/elements/EFTemporal.cjs +198 -0
  32. package/dist/packages/elements/src/elements/EFTemporal.d.ts +36 -0
  33. package/dist/{elements/src/elements/EFTemporal.mjs → packages/elements/src/elements/EFTemporal.js} +6 -22
  34. package/dist/packages/elements/src/elements/EFTimegroup.browsertest.d.ts +12 -0
  35. package/{src/elements/EFTimegroup.ts → dist/packages/elements/src/elements/EFTimegroup.cjs} +162 -213
  36. package/dist/packages/elements/src/elements/EFTimegroup.d.ts +39 -0
  37. package/dist/{elements/src/elements/EFTimegroup.mjs → packages/elements/src/elements/EFTimegroup.js} +55 -65
  38. package/{src/elements/EFTimeline.ts → dist/packages/elements/src/elements/EFTimeline.cjs} +5 -3
  39. package/dist/packages/elements/src/elements/EFTimeline.d.ts +3 -0
  40. package/dist/{elements/src/elements/EFTimeline.mjs → packages/elements/src/elements/EFTimeline.js} +5 -2
  41. package/dist/packages/elements/src/elements/EFVideo.cjs +110 -0
  42. package/dist/packages/elements/src/elements/EFVideo.d.ts +14 -0
  43. package/dist/{elements/src/elements/EFVideo.mjs → packages/elements/src/elements/EFVideo.js} +10 -32
  44. package/dist/packages/elements/src/elements/EFWaveform.cjs +235 -0
  45. package/dist/packages/elements/src/elements/EFWaveform.d.ts +28 -0
  46. package/dist/{elements/src/elements/EFWaveform.mjs → packages/elements/src/elements/EFWaveform.js} +15 -16
  47. package/dist/packages/elements/src/elements/FetchMixin.cjs +28 -0
  48. package/dist/packages/elements/src/elements/FetchMixin.d.ts +8 -0
  49. package/dist/{elements/src/elements/FetchMixin.mjs → packages/elements/src/elements/FetchMixin.js} +5 -7
  50. package/dist/packages/elements/src/elements/TimegroupController.cjs +20 -0
  51. package/dist/packages/elements/src/elements/TimegroupController.d.ts +14 -0
  52. package/dist/packages/elements/src/elements/durationConverter.cjs +8 -0
  53. package/dist/packages/elements/src/elements/durationConverter.d.ts +4 -0
  54. package/dist/{elements/src/elements/durationConverter.mjs → packages/elements/src/elements/durationConverter.js} +1 -1
  55. package/dist/packages/elements/src/elements/parseTimeToMs.cjs +12 -0
  56. package/dist/packages/elements/src/elements/parseTimeToMs.d.ts +1 -0
  57. package/dist/packages/elements/src/elements/parseTimeToMs.js +12 -0
  58. package/dist/packages/elements/src/elements/util.cjs +11 -0
  59. package/dist/packages/elements/src/elements/util.d.ts +4 -0
  60. package/dist/{elements/src/elements/util.mjs → packages/elements/src/elements/util.js} +1 -1
  61. package/dist/packages/elements/src/gui/EFFilmstrip.cjs +675 -0
  62. package/dist/packages/elements/src/gui/EFFilmstrip.d.ts +138 -0
  63. package/dist/{elements/src/gui/EFFilmstrip.mjs → packages/elements/src/gui/EFFilmstrip.js} +57 -55
  64. package/dist/packages/elements/src/gui/EFWorkbench.cjs +199 -0
  65. package/dist/packages/elements/src/gui/EFWorkbench.d.ts +44 -0
  66. package/dist/{elements/src/gui/EFWorkbench.mjs → packages/elements/src/gui/EFWorkbench.js} +27 -49
  67. package/{src/gui/TWMixin.ts → dist/packages/elements/src/gui/TWMixin.cjs} +11 -10
  68. package/dist/packages/elements/src/gui/TWMixin.css.cjs +3 -0
  69. package/dist/packages/elements/src/gui/TWMixin.css.js +4 -0
  70. package/dist/packages/elements/src/gui/TWMixin.d.ts +3 -0
  71. package/dist/{elements/src/gui/TWMixin.mjs → packages/elements/src/gui/TWMixin.js} +4 -3
  72. package/dist/packages/elements/src/index.cjs +47 -0
  73. package/dist/packages/elements/src/index.d.ts +10 -0
  74. package/dist/packages/elements/src/index.js +23 -0
  75. package/dist/style.css +13 -4
  76. package/package.json +23 -4
  77. package/dist/elements/src/EF_FRAMEGEN.mjs +0 -130
  78. package/dist/elements/src/elements/parseTimeToMs.mjs +0 -13
  79. package/dist/elements/src/elements.mjs +0 -12
  80. package/dist/elements/src/gui/TWMixin.css.mjs +0 -4
  81. package/dist/util/awaitAnimationFrame.mjs +0 -11
  82. package/docker-compose.yaml +0 -17
  83. package/src/EF_FRAMEGEN.ts +0 -208
  84. package/src/EF_INTERACTIVE.ts +0 -2
  85. package/src/elements/CrossUpdateController.ts +0 -18
  86. package/src/elements/EFAudio.ts +0 -42
  87. package/src/elements/EFCaptions.ts +0 -202
  88. package/src/elements/EFImage.ts +0 -70
  89. package/src/elements/EFMedia.ts +0 -395
  90. package/src/elements/EFSourceMixin.ts +0 -57
  91. package/src/elements/EFTemporal.ts +0 -246
  92. package/src/elements/EFTimegroup.browsertest.ts +0 -360
  93. package/src/elements/EFVideo.ts +0 -114
  94. package/src/elements/EFWaveform.ts +0 -407
  95. package/src/elements/FetchMixin.ts +0 -18
  96. package/src/elements/TimegroupController.ts +0 -25
  97. package/src/elements/buildLitFixture.ts +0 -13
  98. package/src/elements/durationConverter.ts +0 -6
  99. package/src/elements/parseTimeToMs.ts +0 -10
  100. package/src/elements/util.ts +0 -24
  101. package/src/gui/EFFilmstrip.ts +0 -702
  102. package/src/gui/EFWorkbench.ts +0 -242
  103. package/src/gui/TWMixin.css +0 -3
  104. package/src/util.d.ts +0 -1
  105. /package/dist/{editor/msToTimeCode.mjs → lib/av/msToTimeCode.js} +0 -0
  106. /package/dist/{util/awaitMicrotask.mjs → lib/util/awaitMicrotask.js} +0 -0
  107. /package/dist/{elements/src/EF_INTERACTIVE.mjs → packages/elements/src/EF_INTERACTIVE.js} +0 -0
  108. /package/dist/{elements/src/elements/CrossUpdateController.mjs → packages/elements/src/elements/CrossUpdateController.js} +0 -0
  109. /package/dist/{elements/src/elements/TimegroupController.mjs → packages/elements/src/elements/TimegroupController.js} +0 -0
@@ -1,242 +0,0 @@
1
- import { createContext, provide } from "@lit/context";
2
- import { LitElement, html, css, PropertyValueMap } from "lit";
3
- import { TaskStatus } from "@lit/task";
4
- import {
5
- customElement,
6
- eventOptions,
7
- property,
8
- state,
9
- } from "lit/decorators.js";
10
- import { ref, createRef } from "lit/directives/ref.js";
11
- import { styleMap } from "lit/directives/style-map.js";
12
-
13
- import { awaitMicrotask } from "@/util/awaitMicrotask";
14
- import {
15
- deepGetTemporalElements,
16
- shallowGetTimegroups,
17
- } from "../elements/EFTemporal";
18
- import { TWMixin } from "./TWMixin";
19
-
20
- export interface FocusContext {
21
- focusedElement: HTMLElement | null;
22
- }
23
- export const focusContext = createContext<FocusContext>(null);
24
-
25
- export const focusedElement = createContext<HTMLElement | null>(null);
26
-
27
- export const fetchContext = createContext<typeof fetch>(fetch);
28
-
29
- export const apiHostContext = createContext<string>(null);
30
-
31
- @customElement("ef-workbench")
32
- export class EFWorkbench extends TWMixin(LitElement) {
33
- static styles = [
34
- css`
35
- :host {
36
- display: block;
37
- width: 100%;
38
- height: 100%;
39
- }
40
- `,
41
- ];
42
- stageRef = createRef<HTMLDivElement>();
43
- canvasRef = createRef<HTMLSlotElement>();
44
-
45
- resizeObserver = new ResizeObserver(() => {
46
- if (this.isConnected && !this.rendering) {
47
- const canvasElement = this.canvasRef.value;
48
- const stageElement = this.stageRef.value;
49
- if (stageElement && canvasElement) {
50
- // Determine the appropriate scale factor to make the canvas fit into
51
- // it's parent element.
52
- const stageWidth = stageElement.clientWidth;
53
- const stageHeight = stageElement.clientHeight;
54
- const canvasWidth = canvasElement.clientWidth;
55
- const canvasHeight = canvasElement.clientHeight;
56
- const stageRatio = stageWidth / stageHeight;
57
- const canvasRatio = canvasWidth / canvasHeight;
58
- if (stageRatio > canvasRatio) {
59
- const scale = stageHeight / canvasHeight;
60
- canvasElement.style.transform = `scale(${scale})`;
61
- } else {
62
- const scale = stageWidth / canvasWidth;
63
- canvasElement.style.transform = `scale(${scale})`;
64
- }
65
- }
66
- }
67
- });
68
-
69
- connectedCallback(): void {
70
- super.connectedCallback();
71
- this.resizeObserver.observe(this);
72
- }
73
-
74
- disconnectedCallback(): void {
75
- super.disconnectedCallback();
76
- this.resizeObserver.unobserve(this);
77
- }
78
-
79
- @eventOptions({ passive: false, capture: true })
80
- handleStageWheel(event: WheelEvent) {
81
- event.preventDefault();
82
- }
83
-
84
- @provide({ context: focusContext })
85
- focusContext = this;
86
-
87
- @provide({ context: focusedElement })
88
- @state()
89
- focusedElement: HTMLElement | null = null;
90
-
91
- @provide({ context: fetchContext })
92
- fetch = (path: URL | RequestInfo, init: RequestInit = {}) => {
93
- init.headers ||= {};
94
- Object.assign(init.headers, {
95
- "Content-Type": "application/json",
96
- });
97
-
98
- const bearerToken = this.apiToken;
99
- if (bearerToken) {
100
- Object.assign(init.headers, {
101
- Authorization: `Bearer ${bearerToken}`,
102
- });
103
- }
104
-
105
- return fetch(path, init);
106
- };
107
-
108
- @property({ type: String })
109
- apiToken?: string;
110
-
111
- @provide({ context: apiHostContext })
112
- @property({ type: String })
113
- apiHost = "";
114
-
115
- @property({ type: Boolean })
116
- rendering = false;
117
-
118
- focusOverlay = createRef<HTMLDivElement>();
119
-
120
- protected update(
121
- changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>,
122
- ): void {
123
- super.update(changedProperties);
124
-
125
- if (changedProperties.has("focusedElement")) {
126
- this.drawOverlays();
127
- }
128
- }
129
-
130
- drawOverlays = () => {
131
- const focusOverlay = this.focusOverlay.value;
132
- if (focusOverlay) {
133
- if (this.focusedElement) {
134
- focusOverlay.style.display = "block";
135
- const rect = this.focusedElement.getBoundingClientRect();
136
- Object.assign(focusOverlay.style, {
137
- position: "absolute",
138
- top: `${rect.top}px`,
139
- left: `${rect.left}px`,
140
- width: `${rect.width}px`,
141
- height: `${rect.height}px`,
142
- });
143
- requestAnimationFrame(this.drawOverlays);
144
- } else {
145
- focusOverlay.style.display = "none";
146
- }
147
- }
148
- };
149
-
150
- render() {
151
- if (this.rendering) {
152
- return html`
153
- <slot
154
- ${ref(this.canvasRef)}
155
- class="fixed inset-0 h-full w-full"
156
- name="canvas"
157
- ></slot>
158
- `;
159
- } else {
160
- return html`
161
- <div
162
- class="grid h-full w-full"
163
- style="gridTemplateRows: 1fr 200px; gridTemplateColumns: 100%;"
164
- >
165
- <div
166
- ${ref(this.stageRef)}
167
- class="relative grid h-full w-full place-content-center place-items-center overflow-hidden"
168
- @wheel=${this.handleStageWheel}
169
- >
170
- <slot
171
- ${ref(this.canvasRef)}
172
- class="inline-block"
173
- name="canvas"
174
- ></slot>
175
- <div
176
- class="border border-blue-500 bg-blue-200 bg-opacity-20"
177
- ${ref(this.focusOverlay)}
178
- ></div>
179
- </div>
180
-
181
- <slot class="overflow" name="timeline"></slot>
182
- </div>
183
- `;
184
- }
185
- }
186
-
187
- get requiredAssets() {
188
- const assets: Record<string, Set<string>> = {};
189
- Array.from(
190
- document.querySelectorAll(
191
- "ef-audio, ef-video, ef-image, ef-captions, ef-waveform",
192
- ),
193
- ).forEach((el) => {
194
- Object.entries((el as any).requiredAssets ?? {}).forEach(
195
- ([key, value]) => {
196
- if (assets[key]) {
197
- for (const v of value) {
198
- assets[key].add(v);
199
- }
200
- } else {
201
- assets[key] = new Set(value);
202
- }
203
- },
204
- );
205
- });
206
- return assets;
207
- }
208
-
209
- async stepThrough() {
210
- const stepDurationMs = 1000 / 30;
211
- const timegroups = shallowGetTimegroups(this);
212
- const firstGroup = timegroups[0];
213
- if (!firstGroup) {
214
- throw new Error("No temporal elements found");
215
- }
216
- firstGroup.currentTimeMs = 0;
217
-
218
- const temporals = deepGetTemporalElements(this);
219
-
220
- const busyTasks = temporals
221
- .filter((temporal) => temporal.frameTask.status < TaskStatus.COMPLETE)
222
- .map((temporal) => temporal.frameTask);
223
-
224
- await Promise.all(busyTasks.map((task) => task.taskComplete));
225
-
226
- while (firstGroup.currentTimeMs < firstGroup.durationMs) {
227
- firstGroup.currentTimeMs += stepDurationMs;
228
- await awaitMicrotask();
229
- const busyTasks = temporals
230
- .filter((temporal) => temporal.frameTask.status < TaskStatus.COMPLETE)
231
- .map((temporal) => temporal.frameTask);
232
-
233
- await Promise.all(busyTasks.map((task) => task.taskComplete));
234
- }
235
- }
236
- }
237
-
238
- declare global {
239
- interface HTMLElementTagNameMap {
240
- "ef-workbench": EFWorkbench;
241
- }
242
- }
@@ -1,3 +0,0 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
package/src/util.d.ts DELETED
@@ -1 +0,0 @@
1
- type Constructor<T = {}> = new (...args: any[]) => T;