@hyperframes/core 0.6.113 → 0.6.114
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/generated/runtime-inline.js +1 -1
- package/dist/generated/runtime-inline.js.map +1 -1
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +23 -23
- package/dist/hyperframe.runtime.mjs +23 -23
- package/dist/lint/rules/slideshow.d.ts.map +1 -1
- package/dist/lint/rules/slideshow.js +16 -16
- package/dist/lint/rules/slideshow.js.map +1 -1
- package/dist/slideshow/parseSlideshow.d.ts +9 -0
- package/dist/slideshow/parseSlideshow.d.ts.map +1 -1
- package/dist/slideshow/parseSlideshow.js +58 -7
- package/dist/slideshow/parseSlideshow.js.map +1 -1
- package/dist/slideshow/sceneId.d.ts +8 -0
- package/dist/slideshow/sceneId.d.ts.map +1 -0
- package/dist/slideshow/sceneId.js +18 -0
- package/dist/slideshow/sceneId.js.map +1 -0
- package/dist/slideshow/slideshow.types.d.ts +5 -0
- package/dist/slideshow/slideshow.types.d.ts.map +1 -1
- package/dist/slideshow/slideshow.types.js +3 -1
- package/dist/slideshow/slideshow.types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slideshow.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/slideshow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slideshow.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/slideshow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAyB,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AA6CzC,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,EAmCjD,CAAC"}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import { readAttr } from "../utils";
|
|
2
2
|
import { parseSlideshowManifest, resolveSlideshow } from "../../slideshow/parseSlideshow";
|
|
3
|
-
|
|
4
|
-
function isSceneLikeCompositionId(compositionId) {
|
|
5
|
-
const normalized = compositionId.trim().toLowerCase();
|
|
6
|
-
if (!normalized || normalized === "main")
|
|
7
|
-
return false;
|
|
8
|
-
if (normalized.includes("caption"))
|
|
9
|
-
return false;
|
|
10
|
-
if (normalized.includes("ambient"))
|
|
11
|
-
return false;
|
|
12
|
-
return true;
|
|
13
|
-
}
|
|
3
|
+
import { isSceneLikeCompositionId } from "../../slideshow/sceneId";
|
|
14
4
|
function parseTiming(raw) {
|
|
15
5
|
const startStr = readAttr(raw, "data-start");
|
|
16
|
-
|
|
17
|
-
if (startStr === null || durationStr === null)
|
|
6
|
+
if (startStr === null)
|
|
18
7
|
return null;
|
|
19
8
|
const start = Number(startStr);
|
|
20
|
-
|
|
21
|
-
if (!Number.isFinite(start) || !Number.isFinite(duration))
|
|
9
|
+
if (!Number.isFinite(start))
|
|
22
10
|
return null;
|
|
23
|
-
|
|
11
|
+
const durationStr = readAttr(raw, "data-duration");
|
|
12
|
+
if (durationStr !== null) {
|
|
13
|
+
const duration = Number(durationStr);
|
|
14
|
+
if (Number.isFinite(duration))
|
|
15
|
+
return { start, duration };
|
|
16
|
+
}
|
|
17
|
+
const endStr = readAttr(raw, "data-end") ?? readAttr(raw, "data-hf-authored-end");
|
|
18
|
+
if (endStr !== null) {
|
|
19
|
+
const end = Number(endStr);
|
|
20
|
+
if (Number.isFinite(end) && end > start)
|
|
21
|
+
return { start, duration: end - start };
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
24
|
}
|
|
25
25
|
function collectCompositionIdScenes(ctx, seen, out) {
|
|
26
26
|
for (const tag of ctx.tags) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slideshow.js","sourceRoot":"","sources":["../../../src/lint/rules/slideshow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slideshow.js","sourceRoot":"","sources":["../../../src/lint/rules/slideshow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import type { SlideshowManifest, ResolvedSlideshow } from "./slideshow.types";
|
|
2
|
+
export declare const SLIDESHOW_ISLAND_TYPE = "application/hyperframes-slideshow+json";
|
|
3
|
+
/**
|
|
4
|
+
* Builds the island <script> matcher. Capture group 1 = inner JSON.
|
|
5
|
+
*
|
|
6
|
+
* Factory (fresh RegExp per call) on purpose: a RegExp with the `g` flag carries
|
|
7
|
+
* a mutable `lastIndex`, so callers that need `g` must call this each time rather
|
|
8
|
+
* than caching a shared instance.
|
|
9
|
+
*/
|
|
10
|
+
export declare function slideshowIslandRegex(flags?: string): RegExp;
|
|
2
11
|
interface SceneRange {
|
|
3
12
|
id: string;
|
|
4
13
|
start: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseSlideshow.d.ts","sourceRoot":"","sources":["../../src/slideshow/parseSlideshow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EAGjB,iBAAiB,EAElB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"parseSlideshow.d.ts","sourceRoot":"","sources":["../../src/slideshow/parseSlideshow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EAGjB,iBAAiB,EAElB,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,qBAAqB,2CAA2C,CAAC;AAE9E;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,SAAM,GAAG,MAAM,CAKxD;AAED,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAY7E;AA2GD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,UAAU,EAAE,GACnB;IAAE,QAAQ,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA2CnD"}
|
|
@@ -1,8 +1,21 @@
|
|
|
1
|
-
const
|
|
1
|
+
export const SLIDESHOW_ISLAND_TYPE = "application/hyperframes-slideshow+json";
|
|
2
|
+
/**
|
|
3
|
+
* Builds the island <script> matcher. Capture group 1 = inner JSON.
|
|
4
|
+
*
|
|
5
|
+
* Factory (fresh RegExp per call) on purpose: a RegExp with the `g` flag carries
|
|
6
|
+
* a mutable `lastIndex`, so callers that need `g` must call this each time rather
|
|
7
|
+
* than caching a shared instance.
|
|
8
|
+
*/
|
|
9
|
+
export function slideshowIslandRegex(flags = "i") {
|
|
10
|
+
// Escape ALL regex metacharacters in the constant (CodeQL flags the incomplete
|
|
11
|
+
// `\` escape). The constant has none today, but a complete escape is correct.
|
|
12
|
+
const escaped = SLIDESHOW_ISLAND_TYPE.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
13
|
+
return new RegExp(`<script[^>]*type=["']${escaped}["'][^>]*>([\\s\\S]*?)<\\/script>`, flags);
|
|
14
|
+
}
|
|
2
15
|
/** Extract the JSON island from composition HTML. Returns null if absent. */
|
|
3
16
|
export function parseSlideshowManifest(html) {
|
|
4
17
|
// Match <script type="application/hyperframes-slideshow+json"> ... </script>
|
|
5
|
-
const re =
|
|
18
|
+
const re = slideshowIslandRegex("i");
|
|
6
19
|
const match = re.exec(html);
|
|
7
20
|
if (!match || match[1] === undefined)
|
|
8
21
|
return null;
|
|
@@ -15,12 +28,39 @@ export function parseSlideshowManifest(html) {
|
|
|
15
28
|
}
|
|
16
29
|
return parsed;
|
|
17
30
|
}
|
|
18
|
-
function
|
|
31
|
+
function isSlideRef(v) {
|
|
19
32
|
if (typeof v !== "object" || v === null)
|
|
20
33
|
return false;
|
|
21
|
-
|
|
34
|
+
const r = v;
|
|
35
|
+
if (typeof r["sceneId"] !== "string")
|
|
36
|
+
return false;
|
|
37
|
+
if (r["fragments"] !== undefined &&
|
|
38
|
+
!(Array.isArray(r["fragments"]) && r["fragments"].every((n) => typeof n === "number")))
|
|
39
|
+
return false;
|
|
40
|
+
if (r["hotspots"] !== undefined && !Array.isArray(r["hotspots"]))
|
|
22
41
|
return false;
|
|
23
|
-
return
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
function isSlideSequence(v) {
|
|
45
|
+
if (typeof v !== "object" || v === null)
|
|
46
|
+
return false;
|
|
47
|
+
const s = v;
|
|
48
|
+
return (typeof s["id"] === "string" &&
|
|
49
|
+
typeof s["label"] === "string" &&
|
|
50
|
+
Array.isArray(s["slides"]) &&
|
|
51
|
+
s["slides"].every(isSlideRef));
|
|
52
|
+
}
|
|
53
|
+
function isManifest(v) {
|
|
54
|
+
if (typeof v !== "object" || v === null || Array.isArray(v))
|
|
55
|
+
return false;
|
|
56
|
+
const o = v;
|
|
57
|
+
if (!Array.isArray(o["slides"]) || !o["slides"].every(isSlideRef))
|
|
58
|
+
return false;
|
|
59
|
+
if (o["slideSequences"] !== undefined) {
|
|
60
|
+
if (!Array.isArray(o["slideSequences"]) || !o["slideSequences"].every(isSlideSequence))
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
return true;
|
|
24
64
|
}
|
|
25
65
|
function missingBoundError(sceneId, missing) {
|
|
26
66
|
const present = missing === "startTime" ? "endTime" : "startTime";
|
|
@@ -63,7 +103,10 @@ function validateFragments(sceneId, fragments, start, end, errors) {
|
|
|
63
103
|
function resolveSlide(ref, sceneById, errors) {
|
|
64
104
|
const scene = sceneById.get(ref.sceneId);
|
|
65
105
|
const { start, end } = resolveTimeRange(ref, scene, errors);
|
|
66
|
-
|
|
106
|
+
if (ref.startTime !== undefined && ref.endTime !== undefined && end <= start) {
|
|
107
|
+
errors.push(`slide "${ref.sceneId}" has endTime (${end}) <= startTime (${start})`);
|
|
108
|
+
}
|
|
109
|
+
const fragments = [...new Set(ref.fragments ?? [])].sort((a, b) => a - b);
|
|
67
110
|
validateFragments(ref.sceneId, fragments, start, end, errors);
|
|
68
111
|
return { ...ref, start, end, fragments, hotspots: ref.hotspots ?? [] };
|
|
69
112
|
}
|
|
@@ -72,6 +115,10 @@ export function resolveSlideshow(manifest, scenes) {
|
|
|
72
115
|
const sceneById = new Map(scenes.map((s) => [s.id, s]));
|
|
73
116
|
const sequences = {};
|
|
74
117
|
for (const seq of manifest.slideSequences ?? []) {
|
|
118
|
+
// Flag duplicate sequence ids rather than silently overwriting the earlier one.
|
|
119
|
+
if (Object.prototype.hasOwnProperty.call(sequences, seq.id)) {
|
|
120
|
+
errors.push(`duplicate slideSequence id "${seq.id}" — only the last definition is kept`);
|
|
121
|
+
}
|
|
75
122
|
sequences[seq.id] = {
|
|
76
123
|
id: seq.id,
|
|
77
124
|
label: seq.label,
|
|
@@ -83,9 +130,13 @@ export function resolveSlideshow(manifest, scenes) {
|
|
|
83
130
|
const allSlides = [...slides, ...Object.values(sequences).flatMap((s) => s.slides)];
|
|
84
131
|
for (const slide of allSlides) {
|
|
85
132
|
for (const h of slide.hotspots) {
|
|
86
|
-
|
|
133
|
+
const seq = sequences[h.target];
|
|
134
|
+
if (!seq) {
|
|
87
135
|
errors.push(`hotspot "${h.id}" targets unknown sequence "${h.target}"`);
|
|
88
136
|
}
|
|
137
|
+
else if (seq.slides.length === 0) {
|
|
138
|
+
errors.push(`hotspot "${h.id}" targets empty sequence "${h.target}"`);
|
|
139
|
+
}
|
|
89
140
|
}
|
|
90
141
|
}
|
|
91
142
|
// Validate no main-line overlap (sorted by start; adjacent compare).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseSlideshow.js","sourceRoot":"","sources":["../../src/slideshow/parseSlideshow.ts"],"names":[],"mappings":"AASA,MAAM,
|
|
1
|
+
{"version":3,"file":"parseSlideshow.js","sourceRoot":"","sources":["../../src/slideshow/parseSlideshow.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,qBAAqB,GAAG,wCAAwC,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAK,GAAG,GAAG;IAC9C,+EAA+E;IAC/E,8EAA8E;IAC9E,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC7E,OAAO,IAAI,MAAM,CAAC,wBAAwB,OAAO,mCAAmC,EAAE,KAAK,CAAC,CAAC;AAC/F,CAAC;AAQD,6EAA6E;AAC7E,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,6EAA6E;IAC7E,MAAM,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,CAAU;IAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACnD,IACE,CAAC,CAAC,WAAW,CAAC,KAAK,SAAS;QAC5B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;QAEtF,OAAO,KAAK,CAAC;IACf,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,CAAU;IACjC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,CACL,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ;QAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ;QAC9B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,CAAU;IAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1E,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAChF,IAAI,CAAC,CAAC,gBAAgB,CAAC,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;YACpF,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,OAAgC;IAC1E,MAAM,OAAO,GAAG,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IAClE,OAAO,UAAU,OAAO,UAAU,OAAO,QAAQ,OAAO,kCAAkC,OAAO,IAAI,CAAC;AACxG,CAAC;AAED,qCAAqC;AACrC,SAAS,gBAAgB,CACvB,GAAa,EACb,KAA6B,EAC7B,MAAgB;IAEhB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAE5C,sDAAsD;IACtD,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;IAED,8CAA8C;IAC9C,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACrD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,wCAAwC,OAAO,GAAG,CAAC,CAAC;YAChE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACnE,CAAC;IAED,yEAAyE;IACzE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,SAAS,IAAI,OAAO,IAAI,CAAC,CAAC;QACxC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,SAAS,IAAI,KAAK,CAAC,KAAK;QAC/B,GAAG,EAAE,OAAO,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ;KAC7C,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,OAAe,EACf,SAAmB,EACnB,KAAa,EACb,GAAW,EACX,MAAgB;IAEhB,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,UAAU,OAAO,cAAc,CAAC,sBAAsB,KAAK,KAAK,GAAG,GAAG,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,GAAa,EACb,SAAkC,EAClC,MAAgB;IAEhB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5D,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,kBAAkB,GAAG,mBAAmB,KAAK,GAAG,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9D,OAAO,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAA2B,EAC3B,MAAoB;IAEpB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAExD,MAAM,SAAS,GAA0C,EAAE,CAAC;IAC5D,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;QAChD,gFAAgF;QAChF,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,+BAA+B,GAAG,CAAC,EAAE,sCAAsC,CAAC,CAAC;QAC3F,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;YAClB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;SAClE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAE9E,4BAA4B;IAC5B,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACpF,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1E,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,OAAO,UAAU,IAAI,CAAC,OAAO,WAAW,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a composition id names a "scene-like" composition — i.e. a real slide
|
|
3
|
+
* scene, not the root timeline (`main`) or a non-scene overlay (captions, ambient
|
|
4
|
+
* layers). Shared by the runtime scene-window computation and the slideshow lint
|
|
5
|
+
* rule so the two can never drift.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isSceneLikeCompositionId(compositionId: string): boolean;
|
|
8
|
+
//# sourceMappingURL=sceneId.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sceneId.d.ts","sourceRoot":"","sources":["../../src/slideshow/sceneId.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAMvE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// packages/core/src/slideshow/sceneId.ts
|
|
2
|
+
/**
|
|
3
|
+
* Whether a composition id names a "scene-like" composition — i.e. a real slide
|
|
4
|
+
* scene, not the root timeline (`main`) or a non-scene overlay (captions, ambient
|
|
5
|
+
* layers). Shared by the runtime scene-window computation and the slideshow lint
|
|
6
|
+
* rule so the two can never drift.
|
|
7
|
+
*/
|
|
8
|
+
export function isSceneLikeCompositionId(compositionId) {
|
|
9
|
+
const normalized = compositionId.trim().toLowerCase();
|
|
10
|
+
if (!normalized || normalized === "main")
|
|
11
|
+
return false;
|
|
12
|
+
if (normalized.includes("caption"))
|
|
13
|
+
return false;
|
|
14
|
+
if (normalized.includes("ambient"))
|
|
15
|
+
return false;
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=sceneId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sceneId.js","sourceRoot":"","sources":["../../src/slideshow/sceneId.ts"],"names":[],"mappings":"AAAA,yCAAyC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC5D,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACvD,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
/** Current manifest schema version. Stamped on persist so future schema
|
|
2
|
+
* changes can detect and migrate older islands. */
|
|
3
|
+
export declare const SLIDESHOW_MANIFEST_VERSION = 1;
|
|
1
4
|
/** Raw author-facing shapes parsed from the JSON island. */
|
|
2
5
|
export interface SlideshowManifest {
|
|
6
|
+
/** Schema version (absent on pre-versioning islands → treat as 1). */
|
|
7
|
+
version?: number;
|
|
3
8
|
slides: SlideRef[];
|
|
4
9
|
slideSequences?: SlideSequence[];
|
|
5
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slideshow.types.d.ts","sourceRoot":"","sources":["../../src/slideshow/slideshow.types.ts"],"names":[],"mappings":"AAEA,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAE1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,oEAAoE;AACpE,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAClD"}
|
|
1
|
+
{"version":3,"file":"slideshow.types.d.ts","sourceRoot":"","sources":["../../src/slideshow/slideshow.types.ts"],"names":[],"mappings":"AAEA;oDACoD;AACpD,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAE1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,oEAAoE;AACpE,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAClD"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
// packages/core/src/slideshow/slideshow.types.ts
|
|
2
|
-
|
|
2
|
+
/** Current manifest schema version. Stamped on persist so future schema
|
|
3
|
+
* changes can detect and migrate older islands. */
|
|
4
|
+
export const SLIDESHOW_MANIFEST_VERSION = 1;
|
|
3
5
|
//# sourceMappingURL=slideshow.types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slideshow.types.js","sourceRoot":"","sources":["../../src/slideshow/slideshow.types.ts"],"names":[],"mappings":"AAAA,iDAAiD"}
|
|
1
|
+
{"version":3,"file":"slideshow.types.js","sourceRoot":"","sources":["../../src/slideshow/slideshow.types.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD;oDACoD;AACpD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC"}
|