@rendiv/studio 0.1.1 → 0.1.3

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/LICENSE CHANGED
@@ -176,7 +176,7 @@
176
176
 
177
177
  END OF TERMS AND CONDITIONS
178
178
 
179
- Copyright 2025 Rendiv Contributors
179
+ Copyright 2026 Rendiv Contributors
180
180
 
181
181
  Licensed under the Apache License, Version 2.0 (the "License");
182
182
  you may not use this file except in compliance with the License.
@@ -0,0 +1,32 @@
1
+ interface TimelineOverride {
2
+ from: number;
3
+ durationInFrames: number;
4
+ trackIndex?: number;
5
+ }
6
+ interface AppliedChange {
7
+ namePath: string;
8
+ file: string;
9
+ line: number;
10
+ changes: string[];
11
+ }
12
+ interface SkippedOverride {
13
+ namePath: string;
14
+ reason: string;
15
+ values: {
16
+ from: number;
17
+ durationInFrames: number;
18
+ };
19
+ }
20
+ export interface ApplyResult {
21
+ applied: AppliedChange[];
22
+ skipped: SkippedOverride[];
23
+ }
24
+ /**
25
+ * Apply timeline overrides to source code files.
26
+ *
27
+ * Parses .tsx/.jsx files using TypeScript compiler API, finds matching
28
+ * Sequence / Series.Sequence elements, and updates their props.
29
+ */
30
+ export declare function applyOverridesToSource(root: string, overrides: Record<string, TimelineOverride>): Promise<ApplyResult>;
31
+ export {};
32
+ //# sourceMappingURL=apply-overrides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-overrides.d.ts","sourceRoot":"","sources":["../src/apply-overrides.ts"],"names":[],"mappings":"AAGA,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAgQD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAC1C,OAAO,CAAC,WAAW,CAAC,CAoJtB"}
@@ -0,0 +1,388 @@
1
+ import { readFile, writeFile, readdir } from 'node:fs/promises';
2
+ import { join, extname, relative } from 'node:path';
3
+ function parseNamePath(namePath) {
4
+ const parts = namePath.split('/');
5
+ if (parts.length < 2)
6
+ return null;
7
+ const compositionId = parts[0];
8
+ const segments = [];
9
+ for (let i = 1; i < parts.length; i++) {
10
+ const match = parts[i].match(/^(.+)\[(\d+)\]$/);
11
+ if (!match)
12
+ return null;
13
+ segments.push({ name: match[1], from: Number(match[2]) });
14
+ }
15
+ return { compositionId, segments };
16
+ }
17
+ // Recursively collect .tsx/.jsx source files, skipping common non-source dirs
18
+ async function collectSourceFiles(root) {
19
+ const skip = new Set(['node_modules', 'dist', '.studio', '.git', '.next', 'build', 'coverage']);
20
+ const results = [];
21
+ async function walk(dir) {
22
+ const entries = await readdir(dir, { withFileTypes: true });
23
+ for (const entry of entries) {
24
+ if (skip.has(entry.name))
25
+ continue;
26
+ const full = join(dir, entry.name);
27
+ if (entry.isDirectory()) {
28
+ await walk(full);
29
+ }
30
+ else {
31
+ const ext = extname(entry.name);
32
+ if (ext === '.tsx' || ext === '.jsx') {
33
+ results.push(full);
34
+ }
35
+ }
36
+ }
37
+ }
38
+ await walk(root);
39
+ return results;
40
+ }
41
+ /**
42
+ * Use TypeScript compiler to find Sequence JSX elements and build
43
+ * a mapping of namePaths to source locations + prop positions.
44
+ */
45
+ async function findSequencesInFile(filePath, content) {
46
+ // Dynamic import — TypeScript is a devDependency
47
+ const ts = await import('typescript');
48
+ const sf = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
49
+ const results = new Map();
50
+ // Helper: extract numeric literal value from a JSX attribute
51
+ function getNumericValue(attr) {
52
+ const init = attr.initializer;
53
+ if (!init)
54
+ return null;
55
+ // name={60}
56
+ if (ts.isJsxExpression(init) && init.expression) {
57
+ const expr = init.expression;
58
+ if (ts.isNumericLiteral(expr)) {
59
+ return Number(expr.text);
60
+ }
61
+ // Handle negative/positive prefix: name={-60} or name={+60}
62
+ if (ts.isPrefixUnaryExpression(expr) && ts.isNumericLiteral(expr.operand)) {
63
+ const value = Number(expr.operand.text);
64
+ if (expr.operator === ts.SyntaxKind.MinusToken)
65
+ return -value;
66
+ if (expr.operator === ts.SyntaxKind.PlusToken)
67
+ return value;
68
+ }
69
+ }
70
+ return null;
71
+ }
72
+ // Helper: extract string literal value from a JSX attribute
73
+ function getStringValue(attr) {
74
+ const init = attr.initializer;
75
+ if (!init)
76
+ return null;
77
+ // name="Foo"
78
+ if (ts.isStringLiteral(init))
79
+ return init.text;
80
+ // name={"Foo"}
81
+ if (ts.isJsxExpression(init) && init.expression && ts.isStringLiteral(init.expression)) {
82
+ return init.expression.text;
83
+ }
84
+ return null;
85
+ }
86
+ function getPropRange(attr) {
87
+ return {
88
+ attrStart: attr.getStart(sf),
89
+ attrEnd: attr.getEnd(),
90
+ valueStart: attr.initializer.getStart(sf),
91
+ valueEnd: attr.initializer.getEnd(),
92
+ };
93
+ }
94
+ // Walk the AST looking for Series-like containers with Sequence children
95
+ function visit(node) {
96
+ // Match: <Series> / <TransitionSeries> containing .Sequence children
97
+ if (ts.isJsxElement(node)) {
98
+ const tag = node.openingElement.tagName;
99
+ const tagText = tag.getText(sf);
100
+ // Check for Series / TransitionSeries containers
101
+ if (tagText === 'Series' || tagText === 'TransitionSeries') {
102
+ // Walk children to find .Sequence elements and compute accumulated from
103
+ let accumulatedFrom = 0;
104
+ for (const child of node.children) {
105
+ if (!ts.isJsxElement(child) && !ts.isJsxSelfClosingElement(child))
106
+ continue;
107
+ const childOpen = ts.isJsxElement(child) ? child.openingElement : child;
108
+ const childTag = childOpen.tagName.getText(sf);
109
+ // Check if this is a .Sequence child (Series.Sequence or TransitionSeries.Sequence)
110
+ if (!childTag.endsWith('.Sequence')) {
111
+ // Might be a .Transition — check for timing to extract overlap duration
112
+ if (childTag.endsWith('.Transition')) {
113
+ // Transitions reduce accumulatedFrom by their duration.
114
+ // Parse timing prop to extract duration.
115
+ const timingAttr = findAttr(childOpen, 'timing');
116
+ if (timingAttr) {
117
+ const timingText = timingAttr.initializer?.getText(sf) ?? '';
118
+ // Match linearTiming({ durationInFrames: N }) pattern
119
+ const durMatch = timingText.match(/durationInFrames\s*:\s*(\d+)/);
120
+ if (durMatch) {
121
+ accumulatedFrom -= Number(durMatch[1]);
122
+ }
123
+ }
124
+ }
125
+ continue;
126
+ }
127
+ const attrs = childOpen.attributes;
128
+ let durationValue = null;
129
+ let offsetValue = null;
130
+ let nameValue = null;
131
+ let durationProp;
132
+ let offsetProp;
133
+ let trackIndexProp;
134
+ let lastPropEnd = childOpen.attributes.getEnd();
135
+ for (const attr of attrs.properties) {
136
+ if (!ts.isJsxAttribute(attr))
137
+ continue;
138
+ const attrName = attr.name.getText(sf);
139
+ if (attrName === 'durationInFrames') {
140
+ durationValue = getNumericValue(attr);
141
+ if (durationValue !== null)
142
+ durationProp = getPropRange(attr);
143
+ }
144
+ else if (attrName === 'offset') {
145
+ offsetValue = getNumericValue(attr);
146
+ if (offsetValue !== null)
147
+ offsetProp = getPropRange(attr);
148
+ }
149
+ else if (attrName === 'trackIndex') {
150
+ if (getNumericValue(attr) !== null)
151
+ trackIndexProp = getPropRange(attr);
152
+ }
153
+ else if (attrName === 'name') {
154
+ nameValue = getStringValue(attr);
155
+ }
156
+ const end = attr.getEnd();
157
+ if (end > lastPropEnd)
158
+ lastPropEnd = end;
159
+ }
160
+ if (durationValue === null)
161
+ continue;
162
+ // Derive name from first child component if not explicit
163
+ let derivedName = nameValue;
164
+ if (!derivedName && ts.isJsxElement(child)) {
165
+ for (const grandChild of child.children) {
166
+ if (ts.isJsxElement(grandChild) || ts.isJsxSelfClosingElement(grandChild)) {
167
+ const gcTag = (ts.isJsxElement(grandChild) ? grandChild.openingElement : grandChild).tagName;
168
+ derivedName = gcTag.getText(sf);
169
+ break;
170
+ }
171
+ }
172
+ }
173
+ const seqFrom = accumulatedFrom + (offsetValue ?? 0);
174
+ const displayName = derivedName ?? 'Sequence';
175
+ // We don't know the composition ID from static analysis, so use a partial key
176
+ const partialKey = `${displayName}[${seqFrom}]`;
177
+ const line = sf.getLineAndCharacterOfPosition(childOpen.getStart(sf)).line + 1;
178
+ results.set(partialKey, { line, baseFrom: accumulatedFrom, durationProp, offsetProp, trackIndexProp, lastPropEnd });
179
+ accumulatedFrom = seqFrom + durationValue;
180
+ }
181
+ }
182
+ }
183
+ // Also match bare <Sequence from={N} durationInFrames={M}>
184
+ const openEl = ts.isJsxElement(node) ? node.openingElement :
185
+ ts.isJsxSelfClosingElement(node) ? node : null;
186
+ if (openEl) {
187
+ const tagText = openEl.tagName.getText(sf);
188
+ if (tagText === 'Sequence') {
189
+ let fromValue = null;
190
+ let durationValue = null;
191
+ let nameValue = null;
192
+ let fromProp;
193
+ let durationProp;
194
+ let trackIndexProp;
195
+ let lastPropEnd = openEl.attributes.getEnd();
196
+ for (const attr of openEl.attributes.properties) {
197
+ if (!ts.isJsxAttribute(attr))
198
+ continue;
199
+ const attrName = attr.name.getText(sf);
200
+ if (attrName === 'from') {
201
+ fromValue = getNumericValue(attr);
202
+ if (fromValue !== null)
203
+ fromProp = getPropRange(attr);
204
+ }
205
+ else if (attrName === 'durationInFrames') {
206
+ durationValue = getNumericValue(attr);
207
+ if (durationValue !== null)
208
+ durationProp = getPropRange(attr);
209
+ }
210
+ else if (attrName === 'trackIndex') {
211
+ if (getNumericValue(attr) !== null)
212
+ trackIndexProp = getPropRange(attr);
213
+ }
214
+ else if (attrName === 'name') {
215
+ nameValue = getStringValue(attr);
216
+ }
217
+ const end = attr.getEnd();
218
+ if (end > lastPropEnd)
219
+ lastPropEnd = end;
220
+ }
221
+ const seqFrom = fromValue ?? 0;
222
+ const displayName = nameValue ?? 'Sequence';
223
+ const partialKey = `${displayName}[${seqFrom}]`;
224
+ const line = sf.getLineAndCharacterOfPosition(openEl.getStart(sf)).line + 1;
225
+ results.set(partialKey, { line, baseFrom: seqFrom, fromProp, durationProp, trackIndexProp, lastPropEnd });
226
+ }
227
+ }
228
+ ts.forEachChild(node, visit);
229
+ }
230
+ function findAttr(element, name) {
231
+ for (const attr of element.attributes.properties) {
232
+ if (ts.isJsxAttribute(attr) && attr.name.getText(sf) === name)
233
+ return attr;
234
+ }
235
+ return null;
236
+ }
237
+ visit(sf);
238
+ return results;
239
+ }
240
+ /**
241
+ * Apply timeline overrides to source code files.
242
+ *
243
+ * Parses .tsx/.jsx files using TypeScript compiler API, finds matching
244
+ * Sequence / Series.Sequence elements, and updates their props.
245
+ */
246
+ export async function applyOverridesToSource(root, overrides) {
247
+ const result = { applied: [], skipped: [] };
248
+ // Group overrides by composition ID
249
+ const byComposition = new Map();
250
+ for (const [namePath, override] of Object.entries(overrides)) {
251
+ const parsed = parseNamePath(namePath);
252
+ if (!parsed) {
253
+ result.skipped.push({ namePath, reason: 'Could not parse namePath', values: { from: override.from, durationInFrames: override.durationInFrames } });
254
+ continue;
255
+ }
256
+ // Build the leaf segment key (matches what we'll find in source)
257
+ const leaf = parsed.segments[parsed.segments.length - 1];
258
+ const leafKey = `${leaf.name}[${leaf.from}]`;
259
+ const nested = parsed.segments.length > 1;
260
+ if (!byComposition.has(parsed.compositionId))
261
+ byComposition.set(parsed.compositionId, []);
262
+ byComposition.get(parsed.compositionId).push({ namePath, leafKey, override, nested });
263
+ }
264
+ // Collect source files
265
+ const srcFiles = await collectSourceFiles(root);
266
+ // For each file, look for matching sequences
267
+ for (const file of srcFiles) {
268
+ const content = await readFile(file, 'utf-8');
269
+ // Quick check: does the file contain any relevant keywords?
270
+ if (!content.includes('Sequence') && !content.includes('Series'))
271
+ continue;
272
+ const sequences = await findSequencesInFile(file, content);
273
+ if (sequences.size === 0)
274
+ continue;
275
+ const replacements = [];
276
+ const relPath = relative(root, file);
277
+ // Try to match overrides against found sequences
278
+ for (const [, entries] of byComposition) {
279
+ for (const entry of entries) {
280
+ const match = sequences.get(entry.leafKey);
281
+ if (!match)
282
+ continue;
283
+ const changes = [];
284
+ // Update durationInFrames if changed and prop exists
285
+ if (match.durationProp) {
286
+ const currentDurText = content.slice(match.durationProp.valueStart, match.durationProp.valueEnd);
287
+ const newDurText = `{${entry.override.durationInFrames}}`;
288
+ if (currentDurText !== newDurText) {
289
+ replacements.push({ start: match.durationProp.valueStart, end: match.durationProp.valueEnd, newText: newDurText });
290
+ changes.push(`durationInFrames → ${entry.override.durationInFrames}`);
291
+ }
292
+ }
293
+ // Update from if changed and prop exists (bare Sequence only)
294
+ if (match.fromProp) {
295
+ const currentFromText = content.slice(match.fromProp.valueStart, match.fromProp.valueEnd);
296
+ const newFromText = `{${entry.override.from}}`;
297
+ if (currentFromText !== newFromText) {
298
+ replacements.push({ start: match.fromProp.valueStart, end: match.fromProp.valueEnd, newText: newFromText });
299
+ changes.push(`from → ${entry.override.from}`);
300
+ }
301
+ }
302
+ // For Series.Sequence: handle from change via offset prop
303
+ if (!match.fromProp && match.durationProp) {
304
+ // This is likely a Series.Sequence — compute offset relative to the
305
+ // base accumulated position (the position before any offset is applied).
306
+ const neededOffset = entry.override.from - match.baseFrom;
307
+ if (neededOffset !== 0) {
308
+ if (match.offsetProp) {
309
+ // Update existing offset prop
310
+ const newOffsetText = `{${neededOffset}}`;
311
+ replacements.push({ start: match.offsetProp.valueStart, end: match.offsetProp.valueEnd, newText: newOffsetText });
312
+ changes.push(`offset → ${neededOffset}`);
313
+ }
314
+ else {
315
+ // Insert offset prop after durationInFrames
316
+ const insertPos = match.durationProp.attrEnd;
317
+ replacements.push({ start: insertPos, end: insertPos, newText: ` offset={${neededOffset}}` });
318
+ changes.push(`offset={${neededOffset}} (added)`);
319
+ }
320
+ }
321
+ else if (match.offsetProp) {
322
+ // Offset is 0 — remove the existing offset prop (+ preceding space)
323
+ let removeStart = match.offsetProp.attrStart;
324
+ if (removeStart > 0 && content[removeStart - 1] === ' ')
325
+ removeStart--;
326
+ replacements.push({ start: removeStart, end: match.offsetProp.attrEnd, newText: '' });
327
+ changes.push(`offset removed`);
328
+ }
329
+ }
330
+ // Handle trackIndex prop
331
+ if (entry.override.trackIndex !== undefined) {
332
+ const newTrackText = `{${entry.override.trackIndex}}`;
333
+ if (match.trackIndexProp) {
334
+ // Update existing trackIndex prop
335
+ const currentText = content.slice(match.trackIndexProp.valueStart, match.trackIndexProp.valueEnd);
336
+ if (currentText !== newTrackText) {
337
+ replacements.push({ start: match.trackIndexProp.valueStart, end: match.trackIndexProp.valueEnd, newText: newTrackText });
338
+ changes.push(`trackIndex → ${entry.override.trackIndex}`);
339
+ }
340
+ }
341
+ else {
342
+ // Insert trackIndex prop after last existing prop
343
+ const insertPos = match.lastPropEnd;
344
+ replacements.push({ start: insertPos, end: insertPos, newText: ` trackIndex={${entry.override.trackIndex}}` });
345
+ changes.push(`trackIndex={${entry.override.trackIndex}} (added)`);
346
+ }
347
+ }
348
+ else if (match.trackIndexProp) {
349
+ // No trackIndex in override — remove existing prop (+ preceding space)
350
+ let removeStart = match.trackIndexProp.attrStart;
351
+ if (removeStart > 0 && content[removeStart - 1] === ' ')
352
+ removeStart--;
353
+ replacements.push({ start: removeStart, end: match.trackIndexProp.attrEnd, newText: '' });
354
+ changes.push(`trackIndex removed`);
355
+ }
356
+ if (changes.length > 0) {
357
+ result.applied.push({ namePath: entry.namePath, file: relPath, line: match.line, changes });
358
+ // Mark as applied by removing from entries
359
+ const idx = entries.indexOf(entry);
360
+ entries.splice(idx, 1);
361
+ }
362
+ }
363
+ }
364
+ // Write modified file if there are replacements
365
+ if (replacements.length > 0) {
366
+ replacements.sort((a, b) => b.start - a.start); // reverse order
367
+ let modified = content;
368
+ for (const r of replacements) {
369
+ modified = modified.slice(0, r.start) + r.newText + modified.slice(r.end);
370
+ }
371
+ await writeFile(file, modified, 'utf-8');
372
+ }
373
+ }
374
+ // Collect unapplied overrides
375
+ for (const [, entries] of byComposition) {
376
+ for (const entry of entries) {
377
+ result.skipped.push({
378
+ namePath: entry.namePath,
379
+ reason: entry.nested
380
+ ? 'Nested sequence — could not match in source'
381
+ : 'Could not find matching Sequence with literal props',
382
+ values: { from: entry.override.from, durationInFrames: entry.override.durationInFrames },
383
+ });
384
+ }
385
+ }
386
+ return result;
387
+ }
388
+ //# sourceMappingURL=apply-overrides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-overrides.js","sourceRoot":"","sources":["../src/apply-overrides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAgCpD,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED,8EAA8E;AAC9E,KAAK,UAAU,kBAAkB,CAAC,IAAY;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAChG,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,UAAU,IAAI,CAAC,GAAW;QAC7B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACrC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,OAAO,OAAO,CAAC;AACjB,CAAC;AAYD;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAChC,QAAgB,EAChB,OAAe;IAEf,iDAAiD;IACjD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAEtC,MAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACnG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuK,CAAC;IAE/L,6DAA6D;IAC7D,SAAS,eAAe,CAAC,IAAS;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,YAAY;QACZ,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7B,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YACD,4DAA4D;YAC5D,IAAI,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE,CAAC,UAAU,CAAC,UAAU;oBAAE,OAAO,CAAC,KAAK,CAAC;gBAC9D,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE,CAAC,UAAU,CAAC,SAAS;oBAAE,OAAO,KAAK,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4DAA4D;IAC5D,SAAS,cAAc,CAAC,IAAS;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,aAAa;QACb,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC;QAC/C,eAAe;QACf,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACvF,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,YAAY,CAAC,IAAS;QAC7B,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;YACtB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,SAAS,KAAK,CAAC,IAAS;QACtB,qEAAqE;QACrE,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YACxC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAEhC,iDAAiD;YACjD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,kBAAkB,EAAE,CAAC;gBAC3D,wEAAwE;gBACxE,IAAI,eAAe,GAAG,CAAC,CAAC;gBACxB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC;wBAAE,SAAS;oBAC5E,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;oBACxE,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAE/C,oFAAoF;oBACpF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBACpC,wEAAwE;wBACxE,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;4BACrC,wDAAwD;4BACxD,yCAAyC;4BACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;4BACjD,IAAI,UAAU,EAAE,CAAC;gCACf,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gCAC7D,sDAAsD;gCACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;gCAClE,IAAI,QAAQ,EAAE,CAAC;oCACb,eAAe,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gCACzC,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,SAAS;oBACX,CAAC;oBAED,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC;oBACnC,IAAI,aAAa,GAAkB,IAAI,CAAC;oBACxC,IAAI,WAAW,GAAkB,IAAI,CAAC;oBACtC,IAAI,SAAS,GAAkB,IAAI,CAAC;oBACpC,IAAI,YAAmC,CAAC;oBACxC,IAAI,UAAiC,CAAC;oBACtC,IAAI,cAAqC,CAAC;oBAC1C,IAAI,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;oBAEhD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;wBACpC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC;4BAAE,SAAS;wBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACvC,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;4BACpC,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;4BACtC,IAAI,aAAa,KAAK,IAAI;gCAAE,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;wBAChE,CAAC;6BAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;4BACjC,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;4BACpC,IAAI,WAAW,KAAK,IAAI;gCAAE,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;wBAC5D,CAAC;6BAAM,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;4BACrC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI;gCAAE,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;wBAC1E,CAAC;6BAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;4BAC/B,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;wBACnC,CAAC;wBACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;wBAC1B,IAAI,GAAG,GAAG,WAAW;4BAAE,WAAW,GAAG,GAAG,CAAC;oBAC3C,CAAC;oBAED,IAAI,aAAa,KAAK,IAAI;wBAAE,SAAS;oBAErC,yDAAyD;oBACzD,IAAI,WAAW,GAAG,SAAS,CAAC;oBAC5B,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC3C,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;4BACxC,IAAI,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,CAAC;gCAC1E,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gCAC7F,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gCAChC,MAAM;4BACR,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,MAAM,OAAO,GAAG,eAAe,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;oBACrD,MAAM,WAAW,GAAG,WAAW,IAAI,UAAU,CAAC;oBAC9C,8EAA8E;oBAC9E,MAAM,UAAU,GAAG,GAAG,WAAW,IAAI,OAAO,GAAG,CAAC;oBAChD,MAAM,IAAI,GAAG,EAAE,CAAC,6BAA6B,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;oBAE/E,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;oBAEpH,eAAe,GAAG,OAAO,GAAG,aAAa,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;QAED,2DAA2D;QAC3D,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC7C,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3B,IAAI,SAAS,GAAkB,IAAI,CAAC;gBACpC,IAAI,aAAa,GAAkB,IAAI,CAAC;gBACxC,IAAI,SAAS,GAAkB,IAAI,CAAC;gBACpC,IAAI,QAA+B,CAAC;gBACpC,IAAI,YAAmC,CAAC;gBACxC,IAAI,cAAqC,CAAC;gBAC1C,IAAI,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBAE7C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;oBAChD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC;wBAAE,SAAS;oBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACvC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;wBACxB,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;wBAClC,IAAI,SAAS,KAAK,IAAI;4BAAE,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;oBACxD,CAAC;yBAAM,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;wBAC3C,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;wBACtC,IAAI,aAAa,KAAK,IAAI;4BAAE,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;oBAChE,CAAC;yBAAM,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;wBACrC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI;4BAAE,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;oBAC1E,CAAC;yBAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;wBAC/B,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;oBACnC,CAAC;oBACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC1B,IAAI,GAAG,GAAG,WAAW;wBAAE,WAAW,GAAG,GAAG,CAAC;gBAC3C,CAAC;gBAED,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,CAAC;gBAC/B,MAAM,WAAW,GAAG,SAAS,IAAI,UAAU,CAAC;gBAC5C,MAAM,UAAU,GAAG,GAAG,WAAW,IAAI,OAAO,GAAG,CAAC;gBAChD,MAAM,IAAI,GAAG,EAAE,CAAC,6BAA6B,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBAE5E,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;YAC5G,CAAC;QACH,CAAC;QAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS,QAAQ,CAAC,OAAY,EAAE,IAAY;QAC1C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YACjD,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;QAC7E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAY,EACZ,SAA2C;IAE3C,MAAM,MAAM,GAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAEzD,oCAAoC;IACpC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAgG,CAAC;IAC9H,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YACpJ,SAAS;QACX,CAAC;QACD,iEAAiE;QACjE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAE1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;YAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC1F,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,uBAAuB;IACvB,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEhD,6CAA6C;IAC7C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE9C,4DAA4D;QAC5D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,SAAS;QAE3E,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3D,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;YAAE,SAAS;QAEnC,MAAM,YAAY,GAAsD,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAErC,iDAAiD;QACjD,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;YACxC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC3C,IAAI,CAAC,KAAK;oBAAE,SAAS;gBAErB,MAAM,OAAO,GAAa,EAAE,CAAC;gBAE7B,qDAAqD;gBACrD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;oBACvB,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;oBACjG,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,GAAG,CAAC;oBAC1D,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;wBAClC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;wBACnH,OAAO,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC;gBAED,8DAA8D;gBAC9D,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnB,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC1F,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;oBAC/C,IAAI,eAAe,KAAK,WAAW,EAAE,CAAC;wBACpC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;wBAC5G,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;gBAED,0DAA0D;gBAC1D,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;oBAC1C,oEAAoE;oBACpE,yEAAyE;oBACzE,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;oBAC1D,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;wBACvB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;4BACrB,8BAA8B;4BAC9B,MAAM,aAAa,GAAG,IAAI,YAAY,GAAG,CAAC;4BAC1C,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;4BAClH,OAAO,CAAC,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC,CAAC;wBAC3C,CAAC;6BAAM,CAAC;4BACN,4CAA4C;4BAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;4BAC7C,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,YAAY,GAAG,EAAE,CAAC,CAAC;4BAC9F,OAAO,CAAC,IAAI,CAAC,WAAW,YAAY,WAAW,CAAC,CAAC;wBACnD,CAAC;oBACH,CAAC;yBAAM,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;wBAC5B,oEAAoE;wBACpE,IAAI,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;wBAC7C,IAAI,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,GAAG;4BAAE,WAAW,EAAE,CAAC;wBACvE,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;wBACtF,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC;gBAED,yBAAyB;gBACzB,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC5C,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC;oBACtD,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;wBACzB,kCAAkC;wBAClC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;wBAClG,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;4BACjC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;4BACzH,OAAO,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;wBAC5D,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,kDAAkD;wBAClD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC;wBACpC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;wBAC/G,OAAO,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,QAAQ,CAAC,UAAU,WAAW,CAAC,CAAC;oBACpE,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;oBAChC,uEAAuE;oBACvE,IAAI,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC;oBACjD,IAAI,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,GAAG;wBAAE,WAAW,EAAE,CAAC;oBACvE,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC1F,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACrC,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;oBAC5F,2CAA2C;oBAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACnC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB;YAChE,IAAI,QAAQ,GAAG,OAAO,CAAC;YACvB,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC7B,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5E,CAAC;YACD,MAAM,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;QACxC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE,KAAK,CAAC,MAAM;oBAClB,CAAC,CAAC,6CAA6C;oBAC/C,CAAC,CAAC,qDAAqD;gBACzD,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE;aACzF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin-studio.d.ts","sourceRoot":"","sources":["../src/vite-plugin-studio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AA4HD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAmFvE"}
1
+ {"version":3,"file":"vite-plugin-studio.d.ts","sourceRoot":"","sources":["../src/vite-plugin-studio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAMnC,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AA4HD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAyKvE"}
@@ -1,3 +1,6 @@
1
+ import { readFile, writeFile, unlink } from 'node:fs/promises';
2
+ import { watch } from 'node:fs';
3
+ import { join } from 'node:path';
1
4
  let renderJobs = [];
2
5
  let nextJobId = 1;
3
6
  let activeJobId = null;
@@ -96,9 +99,87 @@ function jsonResponse(res, data, status = 200) {
96
99
  }
97
100
  export function rendivStudioPlugin(options) {
98
101
  const { studioHtmlFileName, entryPoint } = options;
102
+ // Timeline overrides persistence — stored at project root so they survive server restarts
103
+ const overridesFile = join(process.cwd(), 'timeline-overrides.json');
104
+ async function readOverrides() {
105
+ try {
106
+ const raw = await readFile(overridesFile, 'utf-8');
107
+ return JSON.parse(raw);
108
+ }
109
+ catch {
110
+ return {};
111
+ }
112
+ }
113
+ // Track when the server itself writes overrides so the file watcher can ignore self-writes
114
+ let lastSelfWriteTime = 0;
115
+ async function writeOverrides(data) {
116
+ lastSelfWriteTime = Date.now();
117
+ await writeFile(overridesFile, JSON.stringify(data, null, 2));
118
+ }
99
119
  return {
100
120
  name: 'rendiv-studio',
101
121
  configureServer(server) {
122
+ // Timeline override API endpoints
123
+ server.middlewares.use((req, res, next) => {
124
+ // GET /timeline/overrides — read all overrides
125
+ if (req.method === 'GET' && req.url === '/__rendiv_api__/timeline/overrides') {
126
+ readOverrides().then((overrides) => {
127
+ jsonResponse(res, { overrides });
128
+ }).catch(() => {
129
+ jsonResponse(res, { overrides: {} });
130
+ });
131
+ return;
132
+ }
133
+ // PUT /timeline/overrides — write all overrides
134
+ if (req.method === 'PUT' && req.url === '/__rendiv_api__/timeline/overrides') {
135
+ readBody(req).then(async (raw) => {
136
+ const body = JSON.parse(raw);
137
+ await writeOverrides(body.overrides ?? {});
138
+ jsonResponse(res, { ok: true });
139
+ }).catch((err) => {
140
+ jsonResponse(res, { error: String(err) }, 500);
141
+ });
142
+ return;
143
+ }
144
+ // DELETE /timeline/overrides — clear all overrides
145
+ if (req.method === 'DELETE' && req.url === '/__rendiv_api__/timeline/overrides') {
146
+ unlink(overridesFile).catch(() => { }).then(() => {
147
+ jsonResponse(res, { ok: true });
148
+ });
149
+ return;
150
+ }
151
+ next();
152
+ });
153
+ // Watch timeline-overrides.json for external edits and push updates to clients
154
+ let overridesWatcher;
155
+ let watchDebounce;
156
+ try {
157
+ overridesWatcher = watch(overridesFile, () => {
158
+ // Ignore changes caused by our own writes (within 500ms)
159
+ if (Date.now() - lastSelfWriteTime < 500)
160
+ return;
161
+ if (watchDebounce)
162
+ clearTimeout(watchDebounce);
163
+ watchDebounce = setTimeout(() => {
164
+ readOverrides()
165
+ .then((overrides) => {
166
+ server.ws.send({
167
+ type: 'custom',
168
+ event: 'rendiv:overrides-update',
169
+ data: { overrides },
170
+ });
171
+ })
172
+ .catch(() => { });
173
+ }, 100);
174
+ });
175
+ }
176
+ catch {
177
+ // File doesn't exist yet — that's fine, watch will be set up when it's first created
178
+ }
179
+ // Clean up watcher when server closes
180
+ server.httpServer?.on('close', () => {
181
+ overridesWatcher?.close();
182
+ });
102
183
  // Render queue API endpoints
103
184
  server.middlewares.use((req, res, next) => {
104
185
  // GET /queue — return all jobs
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin-studio.js","sourceRoot":"","sources":["../src/vite-plugin-studio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite-plugin-studio.js","sourceRoot":"","sources":["../src/vite-plugin-studio.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAkB,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAyBjC,IAAI,UAAU,GAAsB,EAAE,CAAC;AACvC,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,WAAW,GAAkB,IAAI,CAAC;AACtC,IAAI,qBAAqB,GAA2B,IAAI,CAAC;AAEzD,SAAS,QAAQ,CAAC,GAAoB;IACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC/D,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,UAAkB;IACtC,IAAI,WAAW;QAAE,OAAO;IAExB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IAC9D,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC;IACzB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,qBAAqB,GAAG,eAAe,CAAC;IAExC,MAAM,SAAS,GAAG,CAAC,OAAiC,EAAE,EAAE;QACtD,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;QACzD,IAAI,GAAG;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,CAAC,KAAK,IAAI,EAAE;QACV,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAE/C,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACnD,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAE1F,iBAAiB;YACjB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC;gBAC9B,UAAU;gBACV,UAAU,EAAE,CAAC,CAAS,EAAE,EAAE;oBACxB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7B,CAAC;aACF,CAAC,CAAC;YAEH,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,mCAAmC;YACnC,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAEnG,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,iBAAiB;YACjB,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,gBAAgB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9G,MAAM,WAAW,CAAC;gBAChB,WAAW;gBACX,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,cAAc,EAAE,OAAO,CAAC,UAAU;gBAClC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAqE,EAAE,EAAE;oBAC3H,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;wBACnB,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC5E,CAAC;yBAAM,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;wBACxB,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;oBACpC,CAAC;gBACH,CAAC;gBACD,YAAY,EAAE,eAAe,CAAC,MAAM;aACrC,CAAC,CAAC;YAEH,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,YAAY,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC;gBACH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAC1D,MAAM,YAAY,EAAE,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,WAAW,GAAG,IAAI,CAAC;YACnB,qBAAqB,GAAG,IAAI,CAAC;YAC7B,YAAY,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAED,SAAS,YAAY,CAAC,GAAmB,EAAE,IAAa,EAAE,MAAM,GAAG,GAAG;IACpE,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAC7D,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAEnD,0FAA0F;IAC1F,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,yBAAyB,CAAC,CAAC;IAErE,KAAK,UAAU,aAAa;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,2FAA2F;IAC3F,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,KAAK,UAAU,cAAc,CAAC,IAAgE;QAC5F,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,eAAe,CAAC,MAAM;YACpB,kCAAkC;YAClC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBACxC,+CAA+C;gBAC/C,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,oCAAoC,EAAE,CAAC;oBAC7E,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;wBACjC,YAAY,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;oBACnC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBACZ,YAAY,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;oBACvC,CAAC,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,gDAAgD;gBAChD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,oCAAoC,EAAE,CAAC;oBAC7E,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;wBAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC7B,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;wBAC3C,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBAClC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;wBACf,YAAY,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,mDAAmD;gBACnD,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,oCAAoC,EAAE,CAAC;oBAChF,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBAC9C,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBAClC,CAAC,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,CAAC;YAEH,+EAA+E;YAC/E,IAAI,gBAAuC,CAAC;YAC5C,IAAI,aAAwD,CAAC;YAE7D,IAAI,CAAC;gBACH,gBAAgB,GAAG,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;oBAC3C,yDAAyD;oBACzD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,GAAG,GAAG;wBAAE,OAAO;oBAEjD,IAAI,aAAa;wBAAE,YAAY,CAAC,aAAa,CAAC,CAAC;oBAC/C,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;wBAC9B,aAAa,EAAE;6BACZ,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;4BAClB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;gCACb,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,yBAAyB;gCAChC,IAAI,EAAE,EAAE,SAAS,EAAE;6BACpB,CAAC,CAAC;wBACL,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBACrB,CAAC,EAAE,GAAG,CAAC,CAAC;gBACV,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,qFAAqF;YACvF,CAAC;YAED,sCAAsC;YACtC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAClC,gBAAgB,EAAE,KAAK,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,6BAA6B;YAC7B,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBACxC,+BAA+B;gBAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,8BAA8B,EAAE,CAAC;oBACvE,YAAY,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;oBACxC,OAAO;gBACT,CAAC;gBAED,4EAA4E;gBAC5E,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,oCAAoC,EAAE,CAAC;oBAC9E,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACnC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CACxE,CAAC;oBACF,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBAChC,OAAO;gBACT,CAAC;gBAED,8BAA8B;gBAC9B,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,8BAA8B,EAAE,CAAC;oBACxE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;wBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC7B,MAAM,GAAG,GAAoB;4BAC3B,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;4BACvB,aAAa,EAAE,IAAI,CAAC,aAAa;4BACjC,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa;4BAC3D,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK;4BAC1B,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;4BACjC,MAAM,EAAE,QAAQ;4BAChB,QAAQ,EAAE,CAAC;4BACX,cAAc,EAAE,CAAC;4BACjB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;yBACnC,CAAC;wBACF,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACrB,YAAY,CAAC,UAAU,CAAC,CAAC;wBACzB,YAAY,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC7B,CAAC,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,iDAAiD;gBACjD,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACzF,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,EAAE,CAAC;oBACzC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;oBACnD,IAAI,GAAG,EAAE,CAAC;wBACR,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;4BAC5B,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC;wBAC3B,CAAC;6BAAM,IAAI,WAAW,KAAK,KAAK,IAAI,qBAAqB,EAAE,CAAC;4BAC1D,qBAAqB,CAAC,KAAK,EAAE,CAAC;wBAChC,CAAC;oBACH,CAAC;oBACD,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBAChC,OAAO;gBACT,CAAC;gBAED,4CAA4C;gBAC5C,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,4CAA4C,CAAC,CAAC;gBACjF,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,WAAW,EAAE,CAAC;oBAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC7B,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;oBACtD,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBAChC,OAAO;gBACT,CAAC;gBAED,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,CAAC;YAEH,kFAAkF;YAClF,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;gBACzC,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,aAAa,EAAE,CAAC;oBACjD,GAAG,CAAC,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBACrC,CAAC;gBACD,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rendiv/studio",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -18,8 +18,8 @@
18
18
  "dependencies": {
19
19
  "@vitejs/plugin-react": "^4.3.0",
20
20
  "vite": "^6.0.0",
21
- "@rendiv/renderer": "0.1.1",
22
- "@rendiv/bundler": "0.1.1"
21
+ "@rendiv/bundler": "0.1.3",
22
+ "@rendiv/renderer": "0.1.3"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "^22.0.0",
package/ui/Preview.tsx CHANGED
@@ -203,6 +203,7 @@ export const Preview: React.FC<PreviewProps> = ({
203
203
  key={composition.id}
204
204
  ref={playerRef}
205
205
  component={composition.component}
206
+ compositionId={composition.id}
206
207
  durationInFrames={composition.durationInFrames}
207
208
  fps={composition.fps}
208
209
  compositionWidth={composition.width}