@motion-script/code 0.2.5 → 1.0.0
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/code-range.d.ts +5 -0
- package/dist/code-range.d.ts.map +1 -1
- package/dist/code-range.js +25 -0
- package/dist/code-range.js.map +1 -1
- package/dist/highlight.d.ts +29 -0
- package/dist/highlight.d.ts.map +1 -0
- package/dist/highlight.js +93 -0
- package/dist/highlight.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/measure-cache.d.ts +38 -0
- package/dist/measure-cache.d.ts.map +1 -0
- package/dist/measure-cache.js +0 -0
- package/dist/measure-cache.js.map +1 -0
- package/dist/node.d.ts +6 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +139 -190
- package/dist/node.js.map +1 -1
- package/dist/tokens.d.ts +23 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +50 -0
- package/dist/tokens.js.map +1 -0
- package/dist/transitions.d.ts +52 -0
- package/dist/transitions.d.ts.map +1 -0
- package/dist/transitions.js +77 -0
- package/dist/transitions.js.map +1 -0
- package/package.json +9 -8
package/dist/code-range.d.ts
CHANGED
|
@@ -41,4 +41,9 @@ export declare function rangeToCharOffsets(r: CodeRange, lineLengths: number[]):
|
|
|
41
41
|
start: number;
|
|
42
42
|
end: number;
|
|
43
43
|
};
|
|
44
|
+
/**
|
|
45
|
+
* Convert [start, end) character offsets in joined source to a CodeRange.
|
|
46
|
+
* Lines/cols in the returned range are 1-indexed.
|
|
47
|
+
*/
|
|
48
|
+
export declare function charOffsetsToRange(start: number, end: number, lineLengths: number[]): CodeRange;
|
|
44
49
|
//# sourceMappingURL=code-range.d.ts.map
|
package/dist/code-range.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-range.d.ts","sourceRoot":"","sources":["../src/code-range.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAO1E;AAED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAO1D;AAED;;GAEG;AACH,wBAAgB,KAAK,CACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACf,SAAS,CAEX;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAC9B,CAAC,EAAE,SAAS,EACZ,WAAW,EAAE,MAAM,EAAE,GACtB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CA8BhC"}
|
|
1
|
+
{"version":3,"file":"code-range.d.ts","sourceRoot":"","sources":["../src/code-range.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAO1E;AAED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAO1D;AAED;;GAEG;AACH,wBAAgB,KAAK,CACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACf,SAAS,CAEX;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAC9B,CAAC,EAAE,SAAS,EACZ,WAAW,EAAE,MAAM,EAAE,GACtB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CA8BhC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EAAE,GACtB,SAAS,CAoBX"}
|
package/dist/code-range.js
CHANGED
|
@@ -67,4 +67,29 @@ export function rangeToCharOffsets(r, lineLengths) {
|
|
|
67
67
|
const end = Math.min(docEnd, lineStart[eLine] + eCol);
|
|
68
68
|
return { start: Math.min(start, end), end: Math.max(start, end) };
|
|
69
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Convert [start, end) character offsets in joined source to a CodeRange.
|
|
72
|
+
* Lines/cols in the returned range are 1-indexed.
|
|
73
|
+
*/
|
|
74
|
+
export function charOffsetsToRange(start, end, lineLengths) {
|
|
75
|
+
let off = 0;
|
|
76
|
+
let startLine = 1, startCol = 1, endLine = 1, endCol = 1;
|
|
77
|
+
let foundStart = false;
|
|
78
|
+
for (let li = 0; li < lineLengths.length; li++) {
|
|
79
|
+
const lineStart = off;
|
|
80
|
+
const lineEnd = off + lineLengths[li];
|
|
81
|
+
if (!foundStart && start >= lineStart && start <= lineEnd) {
|
|
82
|
+
startLine = li + 1;
|
|
83
|
+
startCol = (start - lineStart) + 1;
|
|
84
|
+
foundStart = true;
|
|
85
|
+
}
|
|
86
|
+
if (end >= lineStart && end <= lineEnd) {
|
|
87
|
+
endLine = li + 1;
|
|
88
|
+
endCol = (end - lineStart) + 1;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
off = lineEnd + 1;
|
|
92
|
+
}
|
|
93
|
+
return { startLine, startCol, endLine, endCol };
|
|
94
|
+
}
|
|
70
95
|
//# sourceMappingURL=code-range.js.map
|
package/dist/code-range.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-range.js","sourceRoot":"","sources":["../src/code-range.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"code-range.js","sourceRoot":"","sources":["../src/code-range.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Highlighter } from "shiki";
|
|
2
|
+
export declare const DEFAULT_THEMES: string[];
|
|
3
|
+
export declare const DEFAULT_LANGS: string[];
|
|
4
|
+
/**
|
|
5
|
+
* Resolve a highlighter that has `themes` and `langs` loaded. Creates the global
|
|
6
|
+
* highlighter on first call; on later calls it *incrementally* loads any missing
|
|
7
|
+
* language/theme onto the existing highlighter (Shiki ignores constructor langs
|
|
8
|
+
* once created), deduping concurrent loads. Resolves only once every requested
|
|
9
|
+
* language and theme is available.
|
|
10
|
+
*/
|
|
11
|
+
export declare function ensureHighlighter(themes?: string[], langs?: string[]): Promise<Highlighter>;
|
|
12
|
+
/**
|
|
13
|
+
* Load a syntax-highlight language (and theme) into the shared highlighter.
|
|
14
|
+
* Exposed so a Code node's asset loader can run it on the timeline, and so apps
|
|
15
|
+
* can preload languages explicitly. Returns once the language is ready to use.
|
|
16
|
+
*/
|
|
17
|
+
export declare function loadCodeLanguage(language: string, theme?: string): Promise<void>;
|
|
18
|
+
export declare function initSyntaxHighlighter(themes?: string[], langs?: string[]): Promise<void>;
|
|
19
|
+
/** True once the highlighter can tokenize `language` with `theme` without throwing. */
|
|
20
|
+
export declare function canHighlight(language: string, theme: string): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Tokenize `code` with the loaded highlighter. Callers must have checked
|
|
23
|
+
* {@link canHighlight} first; this throws if the language/theme isn't loaded.
|
|
24
|
+
*/
|
|
25
|
+
export declare function highlightToTokens(code: string, language: string, theme: string): {
|
|
26
|
+
content: string;
|
|
27
|
+
color?: string;
|
|
28
|
+
}[][];
|
|
29
|
+
//# sourceMappingURL=highlight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../src/highlight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,WAAW,EAAE,MAAM,OAAO,CAAC;AAmBvD,eAAO,MAAM,cAAc,UAAkB,CAAC;AAC9C,eAAO,MAAM,aAAa,UAAiD,CAAC;AAY5E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,GAAE,MAAM,EAAmB,EACjC,KAAK,GAAE,MAAM,EAAkB,GAChC,OAAO,CAAC,WAAW,CAAC,CAqCtB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzG;AAED,wBAAsB,qBAAqB,CACvC,MAAM,GAAE,MAAM,EAAmB,EACjC,KAAK,GAAE,MAAM,EAAkB,iBAGlC;AAED,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACd;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,CAGzC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { createHighlighter } from "shiki";
|
|
2
|
+
/**
|
|
3
|
+
* Shared Shiki highlighter wiring for the Code component.
|
|
4
|
+
*
|
|
5
|
+
* A single global highlighter is created lazily and incrementally loaded with
|
|
6
|
+
* languages/themes as Code nodes request them, deduping concurrent loads. The
|
|
7
|
+
* `globalHighlighter` instance stays private to this module; callers tokenize
|
|
8
|
+
* through {@link highlightToTokens} and gate on {@link canHighlight}.
|
|
9
|
+
*/
|
|
10
|
+
let globalHighlighter = null;
|
|
11
|
+
let highlighterPromise = null;
|
|
12
|
+
// In-flight per-language and per-theme loads on an existing highlighter, keyed
|
|
13
|
+
// by id, so concurrent Code nodes requesting the same language don't trigger a
|
|
14
|
+
// duplicate Shiki load.
|
|
15
|
+
const inFlightLangs = new Map();
|
|
16
|
+
const inFlightThemes = new Map();
|
|
17
|
+
export const DEFAULT_THEMES = ['github-dark'];
|
|
18
|
+
export const DEFAULT_LANGS = ['typescript', 'javascript', 'json', 'python'];
|
|
19
|
+
/** Has `lang` been loaded into the (existing) global highlighter? */
|
|
20
|
+
function isLanguageLoaded(lang) {
|
|
21
|
+
return !!globalHighlighter && globalHighlighter.getLoadedLanguages().includes(lang);
|
|
22
|
+
}
|
|
23
|
+
/** Has `theme` been loaded into the (existing) global highlighter? */
|
|
24
|
+
function isThemeLoaded(theme) {
|
|
25
|
+
return !!globalHighlighter && globalHighlighter.getLoadedThemes().includes(theme);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Resolve a highlighter that has `themes` and `langs` loaded. Creates the global
|
|
29
|
+
* highlighter on first call; on later calls it *incrementally* loads any missing
|
|
30
|
+
* language/theme onto the existing highlighter (Shiki ignores constructor langs
|
|
31
|
+
* once created), deduping concurrent loads. Resolves only once every requested
|
|
32
|
+
* language and theme is available.
|
|
33
|
+
*/
|
|
34
|
+
export function ensureHighlighter(themes = DEFAULT_THEMES, langs = DEFAULT_LANGS) {
|
|
35
|
+
if (!globalHighlighter) {
|
|
36
|
+
if (!highlighterPromise) {
|
|
37
|
+
highlighterPromise = createHighlighter({ themes, langs }).then(h => {
|
|
38
|
+
globalHighlighter = h;
|
|
39
|
+
return h;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
// The first creation may not include everything a later caller wants;
|
|
43
|
+
// chain through ensureHighlighter again so missing langs/themes load.
|
|
44
|
+
return highlighterPromise.then(() => ensureHighlighter(themes, langs));
|
|
45
|
+
}
|
|
46
|
+
const h = globalHighlighter;
|
|
47
|
+
const jobs = [];
|
|
48
|
+
for (const lang of langs) {
|
|
49
|
+
if (isLanguageLoaded(lang))
|
|
50
|
+
continue;
|
|
51
|
+
let job = inFlightLangs.get(lang);
|
|
52
|
+
if (!job) {
|
|
53
|
+
job = h.loadLanguage(lang).finally(() => inFlightLangs.delete(lang));
|
|
54
|
+
inFlightLangs.set(lang, job);
|
|
55
|
+
}
|
|
56
|
+
jobs.push(job);
|
|
57
|
+
}
|
|
58
|
+
for (const theme of themes) {
|
|
59
|
+
if (isThemeLoaded(theme))
|
|
60
|
+
continue;
|
|
61
|
+
let job = inFlightThemes.get(theme);
|
|
62
|
+
if (!job) {
|
|
63
|
+
job = h.loadTheme(theme).finally(() => inFlightThemes.delete(theme));
|
|
64
|
+
inFlightThemes.set(theme, job);
|
|
65
|
+
}
|
|
66
|
+
jobs.push(job);
|
|
67
|
+
}
|
|
68
|
+
return jobs.length === 0 ? Promise.resolve(h) : Promise.all(jobs).then(() => h);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Load a syntax-highlight language (and theme) into the shared highlighter.
|
|
72
|
+
* Exposed so a Code node's asset loader can run it on the timeline, and so apps
|
|
73
|
+
* can preload languages explicitly. Returns once the language is ready to use.
|
|
74
|
+
*/
|
|
75
|
+
export async function loadCodeLanguage(language, theme = DEFAULT_THEMES[0]) {
|
|
76
|
+
await ensureHighlighter([theme], [language]);
|
|
77
|
+
}
|
|
78
|
+
export async function initSyntaxHighlighter(themes = DEFAULT_THEMES, langs = DEFAULT_LANGS) {
|
|
79
|
+
globalHighlighter = await ensureHighlighter(themes, langs);
|
|
80
|
+
}
|
|
81
|
+
/** True once the highlighter can tokenize `language` with `theme` without throwing. */
|
|
82
|
+
export function canHighlight(language, theme) {
|
|
83
|
+
return isLanguageLoaded(language) && isThemeLoaded(theme);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Tokenize `code` with the loaded highlighter. Callers must have checked
|
|
87
|
+
* {@link canHighlight} first; this throws if the language/theme isn't loaded.
|
|
88
|
+
*/
|
|
89
|
+
export function highlightToTokens(code, language, theme) {
|
|
90
|
+
const result = globalHighlighter.codeToTokens(code, { lang: language, theme: theme });
|
|
91
|
+
return result.tokens.map(line => line.map(tok => ({ content: tok.content, color: tok.color })));
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=highlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../src/highlight.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { MeasureScope, RenderContext } from "@motion-script/core";
|
|
2
|
+
/**
|
|
3
|
+
* Memoizes text-advance measurements for the Code node.
|
|
4
|
+
*
|
|
5
|
+
* `scope.measureText` runs a full CanvasKit/Skia paragraph layout (shaping plus
|
|
6
|
+
* font object alloc/free) on every call — far too expensive to repeat for every
|
|
7
|
+
* token on every frame. A token's advance only depends on (content, fontSize,
|
|
8
|
+
* fontFamily, letterSpacing); content changes only at edit time and the font
|
|
9
|
+
* inputs only change via props, so the same string measures to the same width
|
|
10
|
+
* across the many static frames the player renders.
|
|
11
|
+
*
|
|
12
|
+
* fontSize + fontFamily fold into a `signature` checked once per frame: when it
|
|
13
|
+
* changes the cache clears. letterSpacing folds into the per-entry key so the
|
|
14
|
+
* letter-spaced token advances and the unspaced gutter advances coexist in one
|
|
15
|
+
* map. The signature check (not the node's `set()`) is the invalidation point on
|
|
16
|
+
* purpose — animated/bound font props (`to({ fontSize })`, `fontSize={() => …}`)
|
|
17
|
+
* bypass `set()` but still flow through the per-frame signature comparison.
|
|
18
|
+
*
|
|
19
|
+
* NOTE: the two `measureText` implementations in packages/web/src
|
|
20
|
+
* (measure-scope.ts and render-context.ts) are uncached and shape+free fonts on
|
|
21
|
+
* every call. A shared cache there would speed up all text nodes, but it touches
|
|
22
|
+
* shared infra and cross-font correctness, so it's intentionally left out here.
|
|
23
|
+
*/
|
|
24
|
+
export declare class TokenAdvanceCache {
|
|
25
|
+
private cache;
|
|
26
|
+
private sig;
|
|
27
|
+
/** Signature of the font inputs that, when changed, invalidate every entry. */
|
|
28
|
+
signature(fontSize: number, fontFamily: string): string;
|
|
29
|
+
/** Clear the cache if the font signature changed since the last frame. */
|
|
30
|
+
sync(sig: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* Advance width of `content`, measured once per unique (content,
|
|
33
|
+
* letterSpacing) pair under the current font signature. Call `sync()` first
|
|
34
|
+
* each frame so a font change is reflected.
|
|
35
|
+
*/
|
|
36
|
+
advance(scope: MeasureScope | RenderContext, content: string, fontSize: number, fontFamily: string, letterSpacing: number): number;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=measure-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure-cache.d.ts","sourceRoot":"","sources":["../src/measure-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,GAAG,CAAM;IAEjB,+EAA+E;IAC/E,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAIvD,0EAA0E;IAC1E,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOvB;;;;OAIG;IACH,OAAO,CACH,KAAK,EAAE,YAAY,GAAG,aAAa,EACnC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACtB,MAAM;CASZ"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure-cache.js","sourceRoot":"","sources":["../src/measure-cache.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,iBAAiB;IAClB,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClC,GAAG,GAAG,EAAE,CAAC;IAEjB,+EAA+E;IAC/E,SAAS,CAAC,QAAgB,EAAE,UAAkB;QAC1C,OAAO,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,0EAA0E;IAC1E,IAAI,CAAC,GAAW;QACZ,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACnB,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,OAAO,CACH,KAAmC,EACnC,OAAe,EACf,QAAgB,EAChB,UAAkB,EAClB,aAAqB;QAErB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,aAAa,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC;QAClC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QACrF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvB,OAAO,CAAC,CAAC;IACb,CAAC;CACJ"}
|
package/dist/node.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { CodeProps } from "./props";
|
|
2
2
|
import { CodeRange } from "./code-range";
|
|
3
3
|
import { RenderContext, EaseFunction, FrameGenerator, NodeConfig, Size2D, SizeConstraints, Node, MeasureScope, AssetTracker, PaddingResolved } from "@motion-script/core";
|
|
4
|
-
export declare function initSyntaxHighlighter(themes?: string[], langs?: string[]): Promise<void>;
|
|
5
4
|
export declare class Code extends Node<CodeProps> {
|
|
6
5
|
readonly code: string;
|
|
7
6
|
readonly language: string;
|
|
@@ -16,6 +15,11 @@ export declare class Code extends Node<CodeProps> {
|
|
|
16
15
|
private tokenLines;
|
|
17
16
|
private tokenized;
|
|
18
17
|
private transitions;
|
|
18
|
+
private advanceCache;
|
|
19
|
+
private structureVersion;
|
|
20
|
+
private layoutCacheKey;
|
|
21
|
+
private layoutCache;
|
|
22
|
+
private bumpStructure;
|
|
19
23
|
private highlightDimOpacity;
|
|
20
24
|
private highlightedIds;
|
|
21
25
|
constructor(props: NodeConfig<Code, CodeProps>);
|
|
@@ -27,6 +31,7 @@ export declare class Code extends Node<CodeProps> {
|
|
|
27
31
|
private tokenAdvance;
|
|
28
32
|
private gutterGap;
|
|
29
33
|
private gutterWidth;
|
|
34
|
+
private computeGeometry;
|
|
30
35
|
measure(constraints: SizeConstraints, scope: MeasureScope): Partial<Size2D>;
|
|
31
36
|
onRender(ctx: RenderContext): void;
|
|
32
37
|
append(code: string, duration: number, easing?: EaseFunction): FrameGenerator;
|
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
package/dist/node.js
CHANGED
|
@@ -4,58 +4,34 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { rangeToCharOffsets, charOffsetsToRange } from "./code-range";
|
|
8
|
+
import { TokenAdvanceCache } from "./measure-cache";
|
|
9
|
+
import { makeIdToken, makeIdLine, tokenizeCodeToIdLines, splitTokensAt, } from "./tokens";
|
|
10
|
+
import { makeAnim, resolveTokenStates, resolveLineHeightScales, } from "./transitions";
|
|
11
|
+
import { canHighlight, ensureHighlighter } from "./highlight";
|
|
9
12
|
import { parseColor, Node, tween, property, resolvePadding, lerpEdgeInset } from "@motion-script/core";
|
|
10
|
-
let globalHighlighter = null;
|
|
11
|
-
let highlighterPromise = null;
|
|
12
|
-
function ensureHighlighter(themes = ['github-dark'], langs = ['typescript', 'javascript', 'json', 'python']) {
|
|
13
|
-
if (globalHighlighter)
|
|
14
|
-
return Promise.resolve(globalHighlighter);
|
|
15
|
-
if (!highlighterPromise) {
|
|
16
|
-
highlighterPromise = createHighlighter({ themes, langs }).then(h => {
|
|
17
|
-
globalHighlighter = h;
|
|
18
|
-
return h;
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
return highlighterPromise;
|
|
22
|
-
}
|
|
23
|
-
export async function initSyntaxHighlighter(themes = ['github-dark'], langs = ['typescript', 'javascript', 'json', 'python']) {
|
|
24
|
-
globalHighlighter = await ensureHighlighter(themes, langs);
|
|
25
|
-
}
|
|
26
|
-
let nextTokenId = 1;
|
|
27
|
-
let nextLineId = 1;
|
|
28
|
-
function makeIdToken(content, color) {
|
|
29
|
-
return { id: nextTokenId++, content, color };
|
|
30
|
-
}
|
|
31
|
-
function makeIdLine(tokens) {
|
|
32
|
-
return { id: nextLineId++, tokens };
|
|
33
|
-
}
|
|
34
|
-
function tokenizeCodeToIdLines(code, language, theme) {
|
|
35
|
-
if (!globalHighlighter) {
|
|
36
|
-
return code.split('\n').map(line => makeIdLine([makeIdToken(line, '#d1d5db')]));
|
|
37
|
-
}
|
|
38
|
-
const result = globalHighlighter.codeToTokens(code, { lang: language, theme: theme });
|
|
39
|
-
return result.tokens.map(line => makeIdLine(line.map(tok => makeIdToken(tok.content, tok.color))));
|
|
40
|
-
}
|
|
41
|
-
function sampleCurve(keys, values, p) {
|
|
42
|
-
if (p <= keys[0])
|
|
43
|
-
return values[0];
|
|
44
|
-
if (p >= keys[keys.length - 1])
|
|
45
|
-
return values[values.length - 1];
|
|
46
|
-
for (let i = 0; i < keys.length - 1; i++) {
|
|
47
|
-
if (p <= keys[i + 1]) {
|
|
48
|
-
const span = keys[i + 1] - keys[i];
|
|
49
|
-
const local = span === 0 ? 0 : (p - keys[i]) / span;
|
|
50
|
-
return values[i] + (values[i + 1] - values[i]) * local;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return values[values.length - 1];
|
|
54
|
-
}
|
|
55
13
|
export class Code extends Node {
|
|
56
14
|
tokenLines = [];
|
|
57
15
|
tokenized = false;
|
|
58
16
|
transitions = [];
|
|
17
|
+
// Caches expensive scope.measureText() calls; cleared when the font
|
|
18
|
+
// signature (fontSize|fontFamily) changes. See TokenAdvanceCache.
|
|
19
|
+
advanceCache = new TokenAdvanceCache();
|
|
20
|
+
// Per-frame layout geometry cache. Bumped whenever tokenLines structure
|
|
21
|
+
// changes (see bumpStructure), so a cache hit only happens when content is
|
|
22
|
+
// identical. Only populated on static frames (no active transitions), where
|
|
23
|
+
// widthScale/lineHeightScale are all 1 and the geometry is frame-invariant.
|
|
24
|
+
structureVersion = 0;
|
|
25
|
+
layoutCacheKey = null;
|
|
26
|
+
layoutCache = null;
|
|
27
|
+
// Bump the structure version so the next computeGeometry() recomputes rather
|
|
28
|
+
// than reusing a cached layout. Called wherever tokenLines / a line's tokens
|
|
29
|
+
// are reassigned (tokenize/append/prepend/replace/insert/remove).
|
|
30
|
+
bumpStructure() {
|
|
31
|
+
this.structureVersion++;
|
|
32
|
+
this.layoutCache = null;
|
|
33
|
+
this.layoutCacheKey = null;
|
|
34
|
+
}
|
|
59
35
|
// Persistent dim state set by highlight() — applied during render to all
|
|
60
36
|
// tokens whose id is NOT in the highlight set. null means "not highlighting".
|
|
61
37
|
highlightDimOpacity = null;
|
|
@@ -64,7 +40,12 @@ export class Code extends Node {
|
|
|
64
40
|
super(props);
|
|
65
41
|
this.applyProp("width", props.width ?? "hug");
|
|
66
42
|
this.applyProp("height", props.height ?? "hug");
|
|
67
|
-
|
|
43
|
+
// Best-effort: kick off loading this node's actual language/theme so a
|
|
44
|
+
// highlighter rendered outside the asset pipeline still upgrades to full
|
|
45
|
+
// highlighting. The authoritative load runs on the timeline via prepare().
|
|
46
|
+
// We deliberately don't await — tokenize() falls back to plain text until
|
|
47
|
+
// the language is ready, and onRender re-tokenizes once it loads.
|
|
48
|
+
ensureHighlighter([this.theme], [this.language]).catch(() => { });
|
|
68
49
|
this.tokenize();
|
|
69
50
|
}
|
|
70
51
|
set(props) {
|
|
@@ -75,68 +56,144 @@ export class Code extends Node {
|
|
|
75
56
|
}
|
|
76
57
|
tokenize() {
|
|
77
58
|
this.tokenLines = tokenizeCodeToIdLines(this.code, this.language, this.theme);
|
|
78
|
-
this.
|
|
59
|
+
this.bumpStructure();
|
|
60
|
+
// Only consider ourselves tokenized once we actually highlighted; while
|
|
61
|
+
// the language is still loading we keep retrying on each render.
|
|
62
|
+
this.tokenized = canHighlight(this.language, this.theme);
|
|
79
63
|
}
|
|
80
64
|
prepare(storage) {
|
|
81
|
-
|
|
65
|
+
// Request the typeface so CanvasKit actually loads it; otherwise the
|
|
66
|
+
// family resolves to a fallback face. We measure and draw with a single
|
|
67
|
+
// fontFamily and no per-token weight, so weight 400 matches what we use.
|
|
68
|
+
storage.requestFont(this.fontFamily, '400');
|
|
69
|
+
// Track the language as a timeline asset: the AssetManager runs this load
|
|
70
|
+
// when the frame window opens (before the scene renders) and disposes it
|
|
71
|
+
// when the window closes. Keyed by language+theme so every frame and every
|
|
72
|
+
// Code node sharing them collapses to one load. Re-tokenizing on the next
|
|
73
|
+
// render is handled by onRender's guard, so the disposer is a no-op
|
|
74
|
+
// (Shiki languages are cheap to keep resident).
|
|
75
|
+
storage.requestLoader(`code:lang:${this.language}|${this.theme}`, async () => {
|
|
76
|
+
await ensureHighlighter([this.theme], [this.language]);
|
|
77
|
+
this.tokenized = false;
|
|
78
|
+
return () => { };
|
|
79
|
+
});
|
|
82
80
|
}
|
|
83
81
|
// A token's advance width, honoring letterSpacing. The renderer applies the
|
|
84
82
|
// same letterSpacing when drawing (see drawSelf), so measure and draw stay
|
|
85
83
|
// in lockstep. fontWeight is left default; letterSpacing is the 5th arg.
|
|
86
84
|
tokenAdvance(scope, content) {
|
|
87
|
-
return
|
|
85
|
+
return this.advanceCache.advance(scope, content, this.fontSize, this.fontFamily, this.letterSpacing);
|
|
88
86
|
}
|
|
89
87
|
// Horizontal gap between the line-number column and the code text. Kept in
|
|
90
88
|
// one place so gutterWidth() and the line-number x in drawSelf() agree.
|
|
91
89
|
// Sized in space-widths via the lineNumberGap prop so it scales with font.
|
|
90
|
+
// Measured with letterSpacing 0 — line numbers and the gap don't carry the
|
|
91
|
+
// code's letter-spacing.
|
|
92
92
|
gutterGap(scope) {
|
|
93
|
-
return
|
|
93
|
+
return this.advanceCache.advance(scope, ' ', this.fontSize, this.fontFamily, 0) * this.lineNumberGap;
|
|
94
94
|
}
|
|
95
95
|
gutterWidth(scope) {
|
|
96
96
|
if (!this.showLineNumbers)
|
|
97
97
|
return 0;
|
|
98
98
|
const maxLine = Math.max(1, this.tokenLines.length);
|
|
99
99
|
const sample = String(maxLine);
|
|
100
|
-
const digitW =
|
|
100
|
+
const digitW = this.advanceCache.advance(scope, sample, this.fontSize, this.fontFamily, 0);
|
|
101
101
|
// digit column + the gap that separates the number from the code text.
|
|
102
102
|
return digitW + this.gutterGap(scope);
|
|
103
103
|
}
|
|
104
|
-
|
|
104
|
+
// Compute (and, on static frames, cache) all layout geometry. Both measure()
|
|
105
|
+
// and drawSelf() go through here so their sizing can never diverge. The
|
|
106
|
+
// expensive part — per-token advance measurement — is already memoized by
|
|
107
|
+
// advanceCache; this additionally skips the whole loop on static frames where
|
|
108
|
+
// the geometry is identical to the previous frame.
|
|
109
|
+
computeGeometry(scope, stateById, lineHeightScales) {
|
|
105
110
|
const pad = this.padding;
|
|
106
|
-
const wm = this.width;
|
|
107
|
-
const hm = this.height;
|
|
108
111
|
const lineH = this.fontSize * this.lineHeight;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
112
|
+
// A frame is static (geometry-cacheable) when no transition is mid-flight.
|
|
113
|
+
// A persistent highlight dim (highlightDimOpacity) only touches opacity,
|
|
114
|
+
// never widthScale/heightScale, so held-highlight waits stay cacheable.
|
|
115
|
+
const isStatic = this.transitions.length === 0;
|
|
116
|
+
const key = [
|
|
117
|
+
this.structureVersion,
|
|
118
|
+
this.advanceCache.signature(this.fontSize, this.fontFamily),
|
|
119
|
+
pad.left, pad.right, pad.top, pad.bottom,
|
|
120
|
+
this.showLineNumbers ? 1 : 0,
|
|
121
|
+
this.lineNumberGap,
|
|
122
|
+
this.lineHeight,
|
|
123
|
+
this.tokenLines.length,
|
|
124
|
+
].join("|");
|
|
125
|
+
if (isStatic && this.layoutCache && this.layoutCacheKey === key) {
|
|
126
|
+
return this.layoutCache;
|
|
127
|
+
}
|
|
113
128
|
const gutter = this.gutterWidth(scope);
|
|
129
|
+
const lineWidths = [];
|
|
130
|
+
const lineHeights = [];
|
|
131
|
+
let maxLineWidth = 0;
|
|
132
|
+
let measuredInnerH = 0;
|
|
114
133
|
for (const line of this.tokenLines) {
|
|
115
|
-
let
|
|
134
|
+
let w = 0;
|
|
116
135
|
for (const tok of line.tokens) {
|
|
117
136
|
const ws = stateById.get(tok.id)?.widthScale ?? 1;
|
|
118
|
-
|
|
137
|
+
w += this.tokenAdvance(scope, tok.content) * ws;
|
|
119
138
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
139
|
+
lineWidths.push(w);
|
|
140
|
+
if (w > maxLineWidth)
|
|
141
|
+
maxLineWidth = w;
|
|
142
|
+
const h = lineH * (lineHeightScales.get(line.id) ?? 1);
|
|
143
|
+
lineHeights.push(h);
|
|
144
|
+
measuredInnerH += h;
|
|
145
|
+
}
|
|
146
|
+
const measuredInnerW = maxLineWidth + gutter;
|
|
147
|
+
const blockWidth = measuredInnerW + pad.left + pad.right;
|
|
148
|
+
const blockHeight = measuredInnerH + pad.top + pad.bottom;
|
|
149
|
+
const geometry = {
|
|
150
|
+
lineWidths,
|
|
151
|
+
lineHeights,
|
|
152
|
+
maxLineWidth,
|
|
153
|
+
gutter,
|
|
154
|
+
measuredInnerW,
|
|
155
|
+
measuredInnerH,
|
|
156
|
+
blockWidth,
|
|
157
|
+
blockHeight,
|
|
158
|
+
startX: -blockWidth / 2 + pad.left + gutter,
|
|
159
|
+
startY: -blockHeight / 2 + pad.top,
|
|
160
|
+
};
|
|
161
|
+
// Only persist on static frames: a geometry computed mid-transition must
|
|
162
|
+
// never be reused once the transition ends.
|
|
163
|
+
if (isStatic) {
|
|
164
|
+
this.layoutCache = geometry;
|
|
165
|
+
this.layoutCacheKey = key;
|
|
123
166
|
}
|
|
124
|
-
|
|
167
|
+
else {
|
|
168
|
+
this.layoutCache = null;
|
|
169
|
+
this.layoutCacheKey = null;
|
|
170
|
+
}
|
|
171
|
+
return geometry;
|
|
172
|
+
}
|
|
173
|
+
measure(constraints, scope) {
|
|
174
|
+
this.advanceCache.sync(this.advanceCache.signature(this.fontSize, this.fontFamily));
|
|
175
|
+
const wm = this.width;
|
|
176
|
+
const hm = this.height;
|
|
177
|
+
const geo = this.computeGeometry(scope, this.resolveTokenStates(), this.resolveLineHeightScales());
|
|
125
178
|
const resolvedW = typeof wm === "number"
|
|
126
179
|
? wm
|
|
127
180
|
: wm === "hug"
|
|
128
|
-
?
|
|
181
|
+
? geo.measuredInnerW + this.padding.left + this.padding.right
|
|
129
182
|
: constraints.maxWidth ?? 0;
|
|
130
183
|
const resolvedH = typeof hm === "number"
|
|
131
184
|
? hm
|
|
132
185
|
: hm === "hug"
|
|
133
|
-
?
|
|
186
|
+
? geo.measuredInnerH + this.padding.top + this.padding.bottom
|
|
134
187
|
: constraints.maxHeight ?? 0;
|
|
135
188
|
return { width: resolvedW, height: resolvedH };
|
|
136
189
|
}
|
|
137
190
|
onRender(ctx) {
|
|
138
191
|
super.onRender(ctx);
|
|
139
|
-
|
|
192
|
+
// Keep retrying until the language+theme have actually loaded, so a frame
|
|
193
|
+
// that rendered as plain text upgrades to full highlighting the moment the
|
|
194
|
+
// asset loader resolves. canHighlight gates tokenize from being a no-op
|
|
195
|
+
// re-run every frame once we're done.
|
|
196
|
+
if (!this.tokenized && canHighlight(this.language, this.theme)) {
|
|
140
197
|
this.tokenize();
|
|
141
198
|
}
|
|
142
199
|
this.drawSelf(ctx);
|
|
@@ -144,6 +201,7 @@ export class Code extends Node {
|
|
|
144
201
|
*append(code, duration, easing) {
|
|
145
202
|
const newLines = tokenizeCodeToIdLines(code, this.language, this.theme);
|
|
146
203
|
this.tokenLines = [...this.tokenLines, ...newLines];
|
|
204
|
+
this.bumpStructure();
|
|
147
205
|
const animTokens = [];
|
|
148
206
|
const lineHeightScales = new Map();
|
|
149
207
|
const introducedIds = new Set();
|
|
@@ -161,6 +219,7 @@ export class Code extends Node {
|
|
|
161
219
|
*prepend(code, duration, easing) {
|
|
162
220
|
const newLines = tokenizeCodeToIdLines(code, this.language, this.theme);
|
|
163
221
|
this.tokenLines = [...newLines, ...this.tokenLines];
|
|
222
|
+
this.bumpStructure();
|
|
164
223
|
const animTokens = [];
|
|
165
224
|
const lineHeightScales = new Map();
|
|
166
225
|
const introducedIds = new Set();
|
|
@@ -284,6 +343,7 @@ export class Code extends Node {
|
|
|
284
343
|
const before = this.tokenLines.slice(0, span.fromLine);
|
|
285
344
|
const after = this.tokenLines.slice(span.toLine + 1);
|
|
286
345
|
this.tokenLines = [...before, mergedLine, ...after];
|
|
346
|
+
this.bumpStructure();
|
|
287
347
|
const oldIds = new Set(oldTokens.map(t => t.id));
|
|
288
348
|
const animTokens = [];
|
|
289
349
|
const introducedIds = new Set();
|
|
@@ -307,6 +367,7 @@ export class Code extends Node {
|
|
|
307
367
|
for (const line of this.tokenLines) {
|
|
308
368
|
line.tokens = line.tokens.filter(tok => !oldIds.has(tok.id));
|
|
309
369
|
}
|
|
370
|
+
this.bumpStructure();
|
|
310
371
|
}
|
|
311
372
|
}
|
|
312
373
|
/**
|
|
@@ -415,6 +476,7 @@ export class Code extends Node {
|
|
|
415
476
|
...newLines,
|
|
416
477
|
...this.tokenLines.slice(lineIdx + 1),
|
|
417
478
|
];
|
|
479
|
+
this.bumpStructure();
|
|
418
480
|
yield* this.runTransition({ tokens: animTokens, lineHeightScales, introducedIds }, duration, easing);
|
|
419
481
|
}
|
|
420
482
|
/**
|
|
@@ -489,6 +551,7 @@ export class Code extends Node {
|
|
|
489
551
|
remaining.push(line);
|
|
490
552
|
}
|
|
491
553
|
this.tokenLines = remaining;
|
|
554
|
+
this.bumpStructure();
|
|
492
555
|
// Clean up highlight state pointing at removed tokens.
|
|
493
556
|
for (const id of removedTokenIds)
|
|
494
557
|
this.highlightedIds.delete(id);
|
|
@@ -619,26 +682,11 @@ export class Code extends Node {
|
|
|
619
682
|
return { fromLine, fromIdx, toLine, toIdx };
|
|
620
683
|
}
|
|
621
684
|
drawSelf(draw) {
|
|
685
|
+
this.advanceCache.sync(this.advanceCache.signature(this.fontSize, this.fontFamily));
|
|
622
686
|
const pad = this.padding;
|
|
623
|
-
const lineH = this.fontSize * this.lineHeight;
|
|
624
687
|
const stateById = this.resolveTokenStates();
|
|
625
688
|
const lineHeightScales = this.resolveLineHeightScales();
|
|
626
|
-
const
|
|
627
|
-
let w = 0;
|
|
628
|
-
for (const tok of line.tokens) {
|
|
629
|
-
const ws = stateById.get(tok.id)?.widthScale ?? 1;
|
|
630
|
-
w += this.tokenAdvance(draw, tok.content) * ws;
|
|
631
|
-
}
|
|
632
|
-
return w;
|
|
633
|
-
});
|
|
634
|
-
const maxLineWidth = Math.max(...lineWidths, 0);
|
|
635
|
-
const gutter = this.gutterWidth(draw);
|
|
636
|
-
const blockWidth = maxLineWidth + gutter + pad.left + pad.right;
|
|
637
|
-
const lineHeights = this.tokenLines.map(line => lineH * (lineHeightScales.get(line.id) ?? 1));
|
|
638
|
-
const totalContentHeight = lineHeights.reduce((a, b) => a + b, 0);
|
|
639
|
-
const blockHeight = totalContentHeight + pad.top + pad.bottom;
|
|
640
|
-
const startX = -blockWidth / 2 + pad.left + gutter;
|
|
641
|
-
const startY = -blockHeight / 2 + pad.top;
|
|
689
|
+
const { lineHeights, gutter, blockWidth, startX, startY } = this.computeGeometry(draw, stateById, lineHeightScales);
|
|
642
690
|
// Gutter line-number color: a muted version of the standard text color.
|
|
643
691
|
const lineNumColor = [0.45, 0.5, 0.55, 1];
|
|
644
692
|
let yCursor = startY;
|
|
@@ -662,7 +710,7 @@ export class Code extends Node {
|
|
|
662
710
|
const centerY = yCursor + lineHeights[lineIdx] / 2;
|
|
663
711
|
if (this.showLineNumbers) {
|
|
664
712
|
const label = String(lineIdx + 1);
|
|
665
|
-
const labelW =
|
|
713
|
+
const labelW = this.advanceCache.advance(draw, label, this.fontSize, this.fontFamily, 0);
|
|
666
714
|
// Right-align the number so its right edge sits one gutterGap to
|
|
667
715
|
// the left of where the code text begins.
|
|
668
716
|
const gx = -blockWidth / 2 + pad.left + (gutter - labelW) - this.gutterGap(draw);
|
|
@@ -744,42 +792,10 @@ export class Code extends Node {
|
|
|
744
792
|
return min;
|
|
745
793
|
}
|
|
746
794
|
resolveTokenStates() {
|
|
747
|
-
|
|
748
|
-
if (this.highlightDimOpacity !== null) {
|
|
749
|
-
const dim = this.highlightDimOpacity;
|
|
750
|
-
for (const line of this.tokenLines) {
|
|
751
|
-
for (const tok of line.tokens) {
|
|
752
|
-
const isHighlighted = this.highlightedIds.has(tok.id);
|
|
753
|
-
out.set(tok.id, { opacity: isHighlighted ? 1 : dim, offsetY: 0, widthScale: 1 });
|
|
754
|
-
}
|
|
755
|
-
}
|
|
756
|
-
}
|
|
757
|
-
for (const tr of this.transitions) {
|
|
758
|
-
const t = tr.progress;
|
|
759
|
-
for (const at of tr.tokens) {
|
|
760
|
-
const op = sampleCurve(at.opacityKeys, at.opacity, t);
|
|
761
|
-
const oy = sampleCurve(at.offsetYKeys, at.offsetY, t);
|
|
762
|
-
const ws = sampleCurve(at.widthScaleKeys, at.widthScale, t);
|
|
763
|
-
const prev = out.get(at.id);
|
|
764
|
-
out.set(at.id, {
|
|
765
|
-
opacity: op,
|
|
766
|
-
offsetY: oy,
|
|
767
|
-
widthScale: prev ? prev.widthScale * ws : ws,
|
|
768
|
-
});
|
|
769
|
-
}
|
|
770
|
-
}
|
|
771
|
-
return out;
|
|
795
|
+
return resolveTokenStates(this.tokenLines, this.transitions, this.highlightDimOpacity, this.highlightedIds);
|
|
772
796
|
}
|
|
773
797
|
resolveLineHeightScales() {
|
|
774
|
-
|
|
775
|
-
for (const tr of this.transitions) {
|
|
776
|
-
const t = tr.progress;
|
|
777
|
-
for (const [lineId, curve] of tr.lineHeightScales) {
|
|
778
|
-
const v = sampleCurve(curve.keys, curve.values, t);
|
|
779
|
-
out.set(lineId, (out.get(lineId) ?? 1) * v);
|
|
780
|
-
}
|
|
781
|
-
}
|
|
782
|
-
return out;
|
|
798
|
+
return resolveLineHeightScales(this.transitions);
|
|
783
799
|
}
|
|
784
800
|
}
|
|
785
801
|
__decorate([
|
|
@@ -789,7 +805,7 @@ __decorate([
|
|
|
789
805
|
property({ default: "typescript" })
|
|
790
806
|
], Code.prototype, "language", void 0);
|
|
791
807
|
__decorate([
|
|
792
|
-
property({ default: "
|
|
808
|
+
property({ default: "Fira Mono" })
|
|
793
809
|
], Code.prototype, "fontFamily", void 0);
|
|
794
810
|
__decorate([
|
|
795
811
|
property({ default: "github-dark" })
|
|
@@ -807,76 +823,9 @@ __decorate([
|
|
|
807
823
|
property({ default: false })
|
|
808
824
|
], Code.prototype, "showLineNumbers", void 0);
|
|
809
825
|
__decorate([
|
|
810
|
-
property({ default:
|
|
826
|
+
property({ default: 2 })
|
|
811
827
|
], Code.prototype, "lineNumberGap", void 0);
|
|
812
828
|
__decorate([
|
|
813
829
|
property({ default: 0, mapper: resolvePadding, tween: lerpEdgeInset })
|
|
814
830
|
], Code.prototype, "padding", void 0);
|
|
815
|
-
function makeAnim(id, curves) {
|
|
816
|
-
const op = curves.opacity ?? { keys: [0, 1], values: [1, 1] };
|
|
817
|
-
const oy = curves.offsetY ?? { keys: [0, 1], values: [0, 0] };
|
|
818
|
-
const ws = curves.widthScale ?? { keys: [0, 1], values: [1, 1] };
|
|
819
|
-
return {
|
|
820
|
-
id,
|
|
821
|
-
opacity: op.values,
|
|
822
|
-
opacityKeys: op.keys,
|
|
823
|
-
offsetY: oy.values,
|
|
824
|
-
offsetYKeys: oy.keys,
|
|
825
|
-
widthScale: ws.values,
|
|
826
|
-
widthScaleKeys: ws.keys,
|
|
827
|
-
};
|
|
828
|
-
}
|
|
829
|
-
/**
|
|
830
|
-
* Split `tokens` at character offset `col` (relative to the joined content of
|
|
831
|
-
* the tokens). If `col` falls inside a token, that token is split into two new
|
|
832
|
-
* tokens with fresh ids (the original id is discarded — it didn't exist as a
|
|
833
|
-
* single unit on either side of the cut).
|
|
834
|
-
*/
|
|
835
|
-
function splitTokensAt(tokens, col) {
|
|
836
|
-
const before = [];
|
|
837
|
-
const after = [];
|
|
838
|
-
let off = 0;
|
|
839
|
-
for (const tok of tokens) {
|
|
840
|
-
const tStart = off;
|
|
841
|
-
const tEnd = off + tok.content.length;
|
|
842
|
-
if (tEnd <= col) {
|
|
843
|
-
before.push(tok);
|
|
844
|
-
}
|
|
845
|
-
else if (tStart >= col) {
|
|
846
|
-
after.push(tok);
|
|
847
|
-
}
|
|
848
|
-
else {
|
|
849
|
-
const cut = col - tStart;
|
|
850
|
-
before.push(makeIdToken(tok.content.slice(0, cut), tok.color));
|
|
851
|
-
after.push(makeIdToken(tok.content.slice(cut), tok.color));
|
|
852
|
-
}
|
|
853
|
-
off = tEnd;
|
|
854
|
-
}
|
|
855
|
-
return { before, after };
|
|
856
|
-
}
|
|
857
|
-
/**
|
|
858
|
-
* Convert [start, end) character offsets in joined source to a CodeRange.
|
|
859
|
-
* Lines/cols in the returned range are 1-indexed.
|
|
860
|
-
*/
|
|
861
|
-
function charOffsetsToRange(start, end, lineLengths) {
|
|
862
|
-
let off = 0;
|
|
863
|
-
let startLine = 1, startCol = 1, endLine = 1, endCol = 1;
|
|
864
|
-
let foundStart = false;
|
|
865
|
-
for (let li = 0; li < lineLengths.length; li++) {
|
|
866
|
-
const lineStart = off;
|
|
867
|
-
const lineEnd = off + lineLengths[li];
|
|
868
|
-
if (!foundStart && start >= lineStart && start <= lineEnd) {
|
|
869
|
-
startLine = li + 1;
|
|
870
|
-
startCol = (start - lineStart) + 1;
|
|
871
|
-
foundStart = true;
|
|
872
|
-
}
|
|
873
|
-
if (end >= lineStart && end <= lineEnd) {
|
|
874
|
-
endLine = li + 1;
|
|
875
|
-
endCol = (end - lineStart) + 1;
|
|
876
|
-
break;
|
|
877
|
-
}
|
|
878
|
-
off = lineEnd + 1;
|
|
879
|
-
}
|
|
880
|
-
return { startLine, startCol, endLine, endCol };
|
|
881
|
-
}
|
|
882
831
|
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
package/dist/tokens.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface IdToken {
|
|
2
|
+
id: number;
|
|
3
|
+
content: string;
|
|
4
|
+
color?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface IdLine {
|
|
7
|
+
id: number;
|
|
8
|
+
tokens: IdToken[];
|
|
9
|
+
}
|
|
10
|
+
export declare function makeIdToken(content: string, color?: string): IdToken;
|
|
11
|
+
export declare function makeIdLine(tokens: IdToken[]): IdLine;
|
|
12
|
+
export declare function tokenizeCodeToIdLines(code: string, language: string, theme: string): IdLine[];
|
|
13
|
+
/**
|
|
14
|
+
* Split `tokens` at character offset `col` (relative to the joined content of
|
|
15
|
+
* the tokens). If `col` falls inside a token, that token is split into two new
|
|
16
|
+
* tokens with fresh ids (the original id is discarded — it didn't exist as a
|
|
17
|
+
* single unit on either side of the cut).
|
|
18
|
+
*/
|
|
19
|
+
export declare function splitTokensAt(tokens: IdToken[], col: number): {
|
|
20
|
+
before: IdToken[];
|
|
21
|
+
after: IdToken[];
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,WAAW,MAAM;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,EAAE,CAAC;CACrB;AAQD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAEpD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAU7F;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CACzB,MAAM,EAAE,OAAO,EAAE,EACjB,GAAG,EAAE,MAAM,GACZ;IAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,CAmBzC"}
|
package/dist/tokens.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { canHighlight, highlightToTokens } from "./highlight";
|
|
2
|
+
// Module-global, monotonic id counters shared across all Code nodes — ids only
|
|
3
|
+
// need to be unique within a node, but a global counter is the simplest way to
|
|
4
|
+
// guarantee that and never collides.
|
|
5
|
+
let nextTokenId = 1;
|
|
6
|
+
let nextLineId = 1;
|
|
7
|
+
export function makeIdToken(content, color) {
|
|
8
|
+
return { id: nextTokenId++, content, color };
|
|
9
|
+
}
|
|
10
|
+
export function makeIdLine(tokens) {
|
|
11
|
+
return { id: nextLineId++, tokens };
|
|
12
|
+
}
|
|
13
|
+
export function tokenizeCodeToIdLines(code, language, theme) {
|
|
14
|
+
// Until the language+theme have loaded (they stream in via the asset loader),
|
|
15
|
+
// fall back to flat, uncolored lines instead of letting Shiki throw
|
|
16
|
+
// "Language `x` not found". The node re-tokenizes once the load completes.
|
|
17
|
+
if (!canHighlight(language, theme)) {
|
|
18
|
+
return code.split('\n').map(line => makeIdLine([makeIdToken(line, '#d1d5db')]));
|
|
19
|
+
}
|
|
20
|
+
return highlightToTokens(code, language, theme).map(line => makeIdLine(line.map(tok => makeIdToken(tok.content, tok.color))));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Split `tokens` at character offset `col` (relative to the joined content of
|
|
24
|
+
* the tokens). If `col` falls inside a token, that token is split into two new
|
|
25
|
+
* tokens with fresh ids (the original id is discarded — it didn't exist as a
|
|
26
|
+
* single unit on either side of the cut).
|
|
27
|
+
*/
|
|
28
|
+
export function splitTokensAt(tokens, col) {
|
|
29
|
+
const before = [];
|
|
30
|
+
const after = [];
|
|
31
|
+
let off = 0;
|
|
32
|
+
for (const tok of tokens) {
|
|
33
|
+
const tStart = off;
|
|
34
|
+
const tEnd = off + tok.content.length;
|
|
35
|
+
if (tEnd <= col) {
|
|
36
|
+
before.push(tok);
|
|
37
|
+
}
|
|
38
|
+
else if (tStart >= col) {
|
|
39
|
+
after.push(tok);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
const cut = col - tStart;
|
|
43
|
+
before.push(makeIdToken(tok.content.slice(0, cut), tok.color));
|
|
44
|
+
after.push(makeIdToken(tok.content.slice(cut), tok.color));
|
|
45
|
+
}
|
|
46
|
+
off = tEnd;
|
|
47
|
+
}
|
|
48
|
+
return { before, after };
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAmB9D,+EAA+E;AAC/E,+EAA+E;AAC/E,qCAAqC;AACrC,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,IAAI,UAAU,GAAG,CAAC,CAAC;AAEnB,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,KAAc;IACvD,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAiB;IACxC,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,QAAgB,EAAE,KAAa;IAC/E,8EAA8E;IAC9E,oEAAoE;IACpE,2EAA2E;IAC3E,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACvD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CACnE,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CACzB,MAAiB,EACjB,GAAW;IAEX,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC;QACnB,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QACtC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,GAAG,GAAG,IAAI,CAAC;IACf,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { IdLine } from "./tokens";
|
|
2
|
+
export interface AnimToken {
|
|
3
|
+
id: number;
|
|
4
|
+
opacity: number[];
|
|
5
|
+
opacityKeys: number[];
|
|
6
|
+
offsetY: number[];
|
|
7
|
+
offsetYKeys: number[];
|
|
8
|
+
widthScale: number[];
|
|
9
|
+
widthScaleKeys: number[];
|
|
10
|
+
}
|
|
11
|
+
export interface Transition {
|
|
12
|
+
tokens: AnimToken[];
|
|
13
|
+
lineHeightScales: Map<number, {
|
|
14
|
+
values: number[];
|
|
15
|
+
keys: number[];
|
|
16
|
+
}>;
|
|
17
|
+
progress: number;
|
|
18
|
+
introducedIds: Set<number>;
|
|
19
|
+
}
|
|
20
|
+
export interface TokenState {
|
|
21
|
+
opacity: number;
|
|
22
|
+
offsetY: number;
|
|
23
|
+
widthScale: number;
|
|
24
|
+
}
|
|
25
|
+
/** Sample a piecewise-linear curve (keys → values) at progress `p` in [0, 1]. */
|
|
26
|
+
export declare function sampleCurve(keys: number[], values: number[], p: number): number;
|
|
27
|
+
export declare function makeAnim(id: number, curves: {
|
|
28
|
+
opacity?: {
|
|
29
|
+
keys: number[];
|
|
30
|
+
values: number[];
|
|
31
|
+
};
|
|
32
|
+
offsetY?: {
|
|
33
|
+
keys: number[];
|
|
34
|
+
values: number[];
|
|
35
|
+
};
|
|
36
|
+
widthScale?: {
|
|
37
|
+
keys: number[];
|
|
38
|
+
values: number[];
|
|
39
|
+
};
|
|
40
|
+
}): AnimToken;
|
|
41
|
+
/**
|
|
42
|
+
* Resolve the per-token visual state (opacity/offsetY/widthScale) for the
|
|
43
|
+
* current frame from the persistent highlight dim plus every active transition.
|
|
44
|
+
* Overlapping transitions stack multiplicatively on widthScale.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveTokenStates(tokenLines: IdLine[], transitions: Transition[], highlightDimOpacity: number | null, highlightedIds: Set<number>): Map<number, TokenState>;
|
|
47
|
+
/**
|
|
48
|
+
* Resolve the per-line height scale for the current frame from every active
|
|
49
|
+
* transition. Overlapping line-height animations stack multiplicatively.
|
|
50
|
+
*/
|
|
51
|
+
export declare function resolveLineHeightScales(transitions: Transition[]): Map<number, number>;
|
|
52
|
+
//# sourceMappingURL=transitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../src/transitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AASlC,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC5B;AAID,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAW/E;AAED,wBAAgB,QAAQ,CACpB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE;IACJ,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC/C,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC/C,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACrD,GACF,SAAS,CAaX;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,EAAE,UAAU,EAAE,EACzB,mBAAmB,EAAE,MAAM,GAAG,IAAI,EAClC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CA6BzB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAUtF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/** Sample a piecewise-linear curve (keys → values) at progress `p` in [0, 1]. */
|
|
2
|
+
export function sampleCurve(keys, values, p) {
|
|
3
|
+
if (p <= keys[0])
|
|
4
|
+
return values[0];
|
|
5
|
+
if (p >= keys[keys.length - 1])
|
|
6
|
+
return values[values.length - 1];
|
|
7
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
8
|
+
if (p <= keys[i + 1]) {
|
|
9
|
+
const span = keys[i + 1] - keys[i];
|
|
10
|
+
const local = span === 0 ? 0 : (p - keys[i]) / span;
|
|
11
|
+
return values[i] + (values[i + 1] - values[i]) * local;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return values[values.length - 1];
|
|
15
|
+
}
|
|
16
|
+
export function makeAnim(id, curves) {
|
|
17
|
+
const op = curves.opacity ?? { keys: [0, 1], values: [1, 1] };
|
|
18
|
+
const oy = curves.offsetY ?? { keys: [0, 1], values: [0, 0] };
|
|
19
|
+
const ws = curves.widthScale ?? { keys: [0, 1], values: [1, 1] };
|
|
20
|
+
return {
|
|
21
|
+
id,
|
|
22
|
+
opacity: op.values,
|
|
23
|
+
opacityKeys: op.keys,
|
|
24
|
+
offsetY: oy.values,
|
|
25
|
+
offsetYKeys: oy.keys,
|
|
26
|
+
widthScale: ws.values,
|
|
27
|
+
widthScaleKeys: ws.keys,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Resolve the per-token visual state (opacity/offsetY/widthScale) for the
|
|
32
|
+
* current frame from the persistent highlight dim plus every active transition.
|
|
33
|
+
* Overlapping transitions stack multiplicatively on widthScale.
|
|
34
|
+
*/
|
|
35
|
+
export function resolveTokenStates(tokenLines, transitions, highlightDimOpacity, highlightedIds) {
|
|
36
|
+
const out = new Map();
|
|
37
|
+
if (highlightDimOpacity !== null) {
|
|
38
|
+
const dim = highlightDimOpacity;
|
|
39
|
+
for (const line of tokenLines) {
|
|
40
|
+
for (const tok of line.tokens) {
|
|
41
|
+
const isHighlighted = highlightedIds.has(tok.id);
|
|
42
|
+
out.set(tok.id, { opacity: isHighlighted ? 1 : dim, offsetY: 0, widthScale: 1 });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
for (const tr of transitions) {
|
|
47
|
+
const t = tr.progress;
|
|
48
|
+
for (const at of tr.tokens) {
|
|
49
|
+
const op = sampleCurve(at.opacityKeys, at.opacity, t);
|
|
50
|
+
const oy = sampleCurve(at.offsetYKeys, at.offsetY, t);
|
|
51
|
+
const ws = sampleCurve(at.widthScaleKeys, at.widthScale, t);
|
|
52
|
+
const prev = out.get(at.id);
|
|
53
|
+
out.set(at.id, {
|
|
54
|
+
opacity: op,
|
|
55
|
+
offsetY: oy,
|
|
56
|
+
widthScale: prev ? prev.widthScale * ws : ws,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Resolve the per-line height scale for the current frame from every active
|
|
64
|
+
* transition. Overlapping line-height animations stack multiplicatively.
|
|
65
|
+
*/
|
|
66
|
+
export function resolveLineHeightScales(transitions) {
|
|
67
|
+
const out = new Map();
|
|
68
|
+
for (const tr of transitions) {
|
|
69
|
+
const t = tr.progress;
|
|
70
|
+
for (const [lineId, curve] of tr.lineHeightScales) {
|
|
71
|
+
const v = sampleCurve(curve.keys, curve.values, t);
|
|
72
|
+
out.set(lineId, (out.get(lineId) ?? 1) * v);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=transitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transitions.js","sourceRoot":"","sources":["../src/transitions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@motion-script/code",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Animated, syntax-highlighted code blocks for Motion Script, with token-level append, insert, remove, replace, and highlight transitions.",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"sideEffects": false,
|
|
9
9
|
"files": [
|
|
10
|
-
"dist"
|
|
10
|
+
"dist",
|
|
11
|
+
"!dist/**/*.tsbuildinfo"
|
|
11
12
|
],
|
|
12
13
|
"publishConfig": {
|
|
13
14
|
"access": "public"
|
|
@@ -27,7 +28,7 @@
|
|
|
27
28
|
],
|
|
28
29
|
"license": "Apache-2.0",
|
|
29
30
|
"peerDependencies": {
|
|
30
|
-
"@motion-script/core": "0.
|
|
31
|
+
"@motion-script/core": "1.0.0"
|
|
31
32
|
},
|
|
32
33
|
"dependencies": {
|
|
33
34
|
"shiki": "^4.0.2"
|
|
@@ -37,13 +38,13 @@
|
|
|
37
38
|
"tsc-alias": "^1.8.16",
|
|
38
39
|
"typescript": "^6.0.3",
|
|
39
40
|
"vitest": "^4.1.5",
|
|
40
|
-
"@motion-script/core": "0.
|
|
41
|
+
"@motion-script/core": "1.0.0"
|
|
41
42
|
},
|
|
42
43
|
"scripts": {
|
|
43
|
-
"build": "tsc -
|
|
44
|
-
"dev": "tsc -
|
|
45
|
-
"clean": "rimraf dist .turbo
|
|
44
|
+
"build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",
|
|
45
|
+
"dev": "tsc -p tsconfig.build.json --watch & tsc-alias -p tsconfig.build.json -w",
|
|
46
|
+
"clean": "rimraf --glob dist .turbo *.tsbuildinfo",
|
|
46
47
|
"test": "vitest",
|
|
47
|
-
"typecheck": "tsc --noEmit"
|
|
48
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
48
49
|
}
|
|
49
50
|
}
|