@motion-script/code 0.2.0 → 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.
@@ -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
@@ -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"}
@@ -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
@@ -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
@@ -2,4 +2,5 @@ export * from './node';
2
2
  export * from './props';
3
3
  export { word, lines, range } from './code-range';
4
4
  export type { CodeRange } from './code-range';
5
+ export { loadCodeLanguage, initSyntaxHighlighter } from './highlight';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -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
@@ -1,4 +1,5 @@
1
1
  export * from './node';
2
2
  export * from './props';
3
3
  export { word, lines, range } from './code-range';
4
+ export { loadCodeLanguage, initSyntaxHighlighter } from './highlight';
4
5
  //# sourceMappingURL=index.js.map
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;
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
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 { createHighlighter } from "shiki";
8
- import { rangeToCharOffsets } from "./code-range";
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
- ensureHighlighter();
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.tokenized = !!globalHighlighter;
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
- storage.requestLoader(async () => ensureHighlighter([this.theme], [this.language]));
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 scope.measureText(content, this.fontSize, this.fontFamily, undefined, this.letterSpacing);
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 scope.measureText(' ', this.fontSize, this.fontFamily) * this.lineNumberGap;
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 = scope.measureText(sample, this.fontSize, this.fontFamily);
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
- measure(constraints, scope) {
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
- const stateById = this.resolveTokenStates();
110
- const lineHeightScales = this.resolveLineHeightScales();
111
- let measuredW = 0;
112
- let measuredH = 0;
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 lineW = 0;
134
+ let w = 0;
116
135
  for (const tok of line.tokens) {
117
136
  const ws = stateById.get(tok.id)?.widthScale ?? 1;
118
- lineW += this.tokenAdvance(scope, tok.content) * ws;
137
+ w += this.tokenAdvance(scope, tok.content) * ws;
119
138
  }
120
- if (lineW > measuredW)
121
- measuredW = lineW;
122
- measuredH += lineH * (lineHeightScales.get(line.id) ?? 1);
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
- measuredW += gutter;
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
- ? measuredW + pad.left + pad.right
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
- ? measuredH + pad.top + pad.bottom
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
- if (!this.tokenized && globalHighlighter) {
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 lineWidths = this.tokenLines.map(line => {
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 = draw.measureText(label, this.fontSize, this.fontFamily);
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
- const out = new Map();
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
- const out = new Map();
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: "JetBrains Mono" })
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: 4 })
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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"}
@@ -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.2.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,23 +28,23 @@
27
28
  ],
28
29
  "license": "Apache-2.0",
29
30
  "peerDependencies": {
30
- "@motion-script/core": "*"
31
+ "@motion-script/core": "1.0.0"
31
32
  },
32
33
  "dependencies": {
33
34
  "shiki": "^4.0.2"
34
35
  },
35
36
  "devDependencies": {
36
- "@motion-script/core": "*",
37
37
  "@types/node": "^25.6.2",
38
38
  "tsc-alias": "^1.8.16",
39
39
  "typescript": "^6.0.3",
40
- "vitest": "^4.1.5"
40
+ "vitest": "^4.1.5",
41
+ "@motion-script/core": "1.0.0"
41
42
  },
42
43
  "scripts": {
43
- "build": "tsc -b && tsc-alias",
44
- "dev": "tsc -b --watch & tsc-alias -w",
45
- "clean": "rimraf dist .turbo && tsc -b --clean",
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
  }