@smoove/core 0.1.4 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/engine/sequence.d.ts.map +1 -1
  2. package/dist/engine/sequence.js +2 -1
  3. package/dist/engine/sequence.js.map +1 -1
  4. package/dist/layout/text/font.d.ts +11 -1
  5. package/dist/layout/text/font.d.ts.map +1 -1
  6. package/dist/layout/text/font.js +14 -2
  7. package/dist/layout/text/font.js.map +1 -1
  8. package/package.json +1 -1
  9. package/dist/audio/asset.d.ts +0 -21
  10. package/dist/audio/asset.d.ts.map +0 -1
  11. package/dist/audio/asset.js +0 -2
  12. package/dist/audio/asset.js.map +0 -1
  13. package/dist/audio/audio-driver.d.ts +0 -34
  14. package/dist/audio/audio-driver.d.ts.map +0 -1
  15. package/dist/audio/audio-driver.js +0 -2
  16. package/dist/audio/audio-driver.js.map +0 -1
  17. package/dist/audio/audio-for-preview.d.ts +0 -12
  18. package/dist/audio/audio-for-preview.d.ts.map +0 -1
  19. package/dist/audio/audio-for-preview.js +0 -70
  20. package/dist/audio/audio-for-preview.js.map +0 -1
  21. package/dist/audio/audio-for-rendering.d.ts +0 -16
  22. package/dist/audio/audio-for-rendering.d.ts.map +0 -1
  23. package/dist/audio/audio-for-rendering.js +0 -32
  24. package/dist/audio/audio-for-rendering.js.map +0 -1
  25. package/dist/audio/audio-source-browser.d.ts +0 -30
  26. package/dist/audio/audio-source-browser.d.ts.map +0 -1
  27. package/dist/audio/audio-source-browser.js +0 -139
  28. package/dist/audio/audio-source-browser.js.map +0 -1
  29. package/dist/audio/audio-source.d.ts +0 -38
  30. package/dist/audio/audio-source.d.ts.map +0 -1
  31. package/dist/audio/audio-source.js +0 -2
  32. package/dist/audio/audio-source.js.map +0 -1
  33. package/dist/audio/index.d.ts +0 -45
  34. package/dist/audio/index.d.ts.map +0 -1
  35. package/dist/audio/index.js +0 -143
  36. package/dist/audio/index.js.map +0 -1
  37. package/dist/audio/mixer.d.ts +0 -43
  38. package/dist/audio/mixer.d.ts.map +0 -1
  39. package/dist/audio/mixer.js +0 -51
  40. package/dist/audio/mixer.js.map +0 -1
  41. package/dist/audio/types.d.ts +0 -31
  42. package/dist/audio/types.d.ts.map +0 -1
  43. package/dist/audio/types.js +0 -2
  44. package/dist/audio/types.js.map +0 -1
  45. package/dist/block.d.ts +0 -16
  46. package/dist/block.d.ts.map +0 -1
  47. package/dist/block.js +0 -173
  48. package/dist/block.js.map +0 -1
  49. package/dist/composition.d.ts.map +0 -1
  50. package/dist/composition.js.map +0 -1
  51. package/dist/easing.d.ts +0 -22
  52. package/dist/easing.d.ts.map +0 -1
  53. package/dist/easing.js +0 -59
  54. package/dist/easing.js.map +0 -1
  55. package/dist/emitter.d.ts +0 -7
  56. package/dist/emitter.d.ts.map +0 -1
  57. package/dist/emitter.js +0 -29
  58. package/dist/emitter.js.map +0 -1
  59. package/dist/environment.d.ts.map +0 -1
  60. package/dist/environment.js.map +0 -1
  61. package/dist/flex-engine.d.ts +0 -31
  62. package/dist/flex-engine.d.ts.map +0 -1
  63. package/dist/flex-engine.js +0 -186
  64. package/dist/flex-engine.js.map +0 -1
  65. package/dist/flex-types.d.ts +0 -165
  66. package/dist/flex-types.d.ts.map +0 -1
  67. package/dist/flex-types.js +0 -2
  68. package/dist/flex-types.js.map +0 -1
  69. package/dist/flex.d.ts +0 -26
  70. package/dist/flex.d.ts.map +0 -1
  71. package/dist/flex.js +0 -179
  72. package/dist/flex.js.map +0 -1
  73. package/dist/image.d.ts +0 -10
  74. package/dist/image.d.ts.map +0 -1
  75. package/dist/image.js +0 -156
  76. package/dist/image.js.map +0 -1
  77. package/dist/interpolate-colors.d.ts +0 -7
  78. package/dist/interpolate-colors.d.ts.map +0 -1
  79. package/dist/interpolate-colors.js +0 -240
  80. package/dist/interpolate-colors.js.map +0 -1
  81. package/dist/interpolate.d.ts +0 -12
  82. package/dist/interpolate.d.ts.map +0 -1
  83. package/dist/interpolate.js +0 -65
  84. package/dist/interpolate.js.map +0 -1
  85. package/dist/media-marker.d.ts +0 -19
  86. package/dist/media-marker.d.ts.map +0 -1
  87. package/dist/media-marker.js +0 -19
  88. package/dist/media-marker.js.map +0 -1
  89. package/dist/media-time.d.ts +0 -17
  90. package/dist/media-time.d.ts.map +0 -1
  91. package/dist/media-time.js +0 -17
  92. package/dist/media-time.js.map +0 -1
  93. package/dist/signal.d.ts +0 -10
  94. package/dist/signal.d.ts.map +0 -1
  95. package/dist/signal.js +0 -39
  96. package/dist/signal.js.map +0 -1
  97. package/dist/text.d.ts +0 -91
  98. package/dist/text.d.ts.map +0 -1
  99. package/dist/text.js +0 -704
  100. package/dist/text.js.map +0 -1
  101. package/dist/video/driver.d.ts +0 -31
  102. package/dist/video/driver.d.ts.map +0 -1
  103. package/dist/video/driver.js +0 -3
  104. package/dist/video/driver.js.map +0 -1
  105. package/dist/video/index.d.ts +0 -45
  106. package/dist/video/index.d.ts.map +0 -1
  107. package/dist/video/index.js +0 -276
  108. package/dist/video/index.js.map +0 -1
  109. package/dist/video/types.d.ts +0 -35
  110. package/dist/video/types.d.ts.map +0 -1
  111. package/dist/video/types.js +0 -2
  112. package/dist/video/types.js.map +0 -1
  113. package/dist/video/video-for-preview.d.ts +0 -12
  114. package/dist/video/video-for-preview.d.ts.map +0 -1
  115. package/dist/video/video-for-preview.js +0 -73
  116. package/dist/video/video-for-preview.js.map +0 -1
  117. package/dist/video/video-for-rendering.d.ts +0 -16
  118. package/dist/video/video-for-rendering.d.ts.map +0 -1
  119. package/dist/video/video-for-rendering.js +0 -45
  120. package/dist/video/video-for-rendering.js.map +0 -1
  121. package/dist/video/video-source-browser.d.ts +0 -37
  122. package/dist/video/video-source-browser.d.ts.map +0 -1
  123. package/dist/video/video-source-browser.js +0 -171
  124. package/dist/video/video-source-browser.js.map +0 -1
  125. package/dist/video/video-source.d.ts +0 -48
  126. package/dist/video/video-source.d.ts.map +0 -1
  127. package/dist/video/video-source.js +0 -2
  128. package/dist/video/video-source.js.map +0 -1
@@ -1,65 +0,0 @@
1
- const findRange = (input, inputRange) => {
2
- let i = 1;
3
- for (; i < inputRange.length - 1; i++) {
4
- if (inputRange[i] >= input)
5
- break;
6
- }
7
- return i - 1;
8
- };
9
- const interpolateSegment = (input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight) => {
10
- let result = input;
11
- if (result < inputMin) {
12
- if (extrapolateLeft === "identity")
13
- return result;
14
- if (extrapolateLeft === "clamp")
15
- result = inputMin;
16
- else if (extrapolateLeft === "wrap") {
17
- const range = inputMax - inputMin;
18
- result = ((((result - inputMin) % range) + range) % range) + inputMin;
19
- }
20
- }
21
- if (result > inputMax) {
22
- if (extrapolateRight === "identity")
23
- return result;
24
- if (extrapolateRight === "clamp")
25
- result = inputMax;
26
- else if (extrapolateRight === "wrap") {
27
- const range = inputMax - inputMin;
28
- result = ((((result - inputMin) % range) + range) % range) + inputMin;
29
- }
30
- }
31
- if (outputMin === outputMax)
32
- return outputMin;
33
- // Normalize and ease.
34
- let t = (result - inputMin) / (inputMax - inputMin);
35
- t = easing(t);
36
- return outputMin + t * (outputMax - outputMin);
37
- };
38
- /**
39
- * Maps `input` from `inputRange` onto `outputRange`. API-compatible with
40
- * Remotion's `interpolate`.
41
- */
42
- export const interpolate = (input, inputRange, outputRange, options) => {
43
- if (typeof input !== "number") {
44
- throw new TypeError("interpolate(): input must be a number");
45
- }
46
- if (inputRange.length < 2 || outputRange.length < 2) {
47
- throw new Error("interpolate(): inputRange and outputRange must have at least 2 elements");
48
- }
49
- if (inputRange.length !== outputRange.length) {
50
- throw new Error("interpolate(): inputRange and outputRange must have the same length");
51
- }
52
- for (let i = 1; i < inputRange.length; i++) {
53
- if (!(inputRange[i] > inputRange[i - 1])) {
54
- throw new Error("interpolate(): inputRange must be strictly monotonically increasing");
55
- }
56
- }
57
- if (Number.isNaN(input))
58
- return input;
59
- const easing = options?.easing ?? ((n) => n);
60
- const extrapolateLeft = options?.extrapolateLeft ?? "extend";
61
- const extrapolateRight = options?.extrapolateRight ?? "extend";
62
- const i = findRange(input, inputRange);
63
- return interpolateSegment(input, inputRange[i], inputRange[i + 1], outputRange[i], outputRange[i + 1], easing, extrapolateLeft, extrapolateRight);
64
- };
65
- //# sourceMappingURL=interpolate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interpolate.js","sourceRoot":"","sources":["../src/interpolate.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Marker attrs stamped on media nodes ({@link Video}, {@link Audio}) and
3
- * inspected by `Sequence`/`Composition`. Kept in a dependency-free leaf so
4
- * `composition.ts` can discover media by string without importing `video/` or
5
- * `audio/` (which would create an import cycle).
6
- */
7
- /** Set by every tickable media node — drives Sequence discovery + mixer registration. */
8
- export declare const MEDIA_MARK = "__kmIsMedia";
9
- /** Additionally set by {@link Video} — backs `isVideoNode`. */
10
- export declare const VIDEO_MARK = "__kmIsVideo";
11
- /** Additionally set by {@link Audio} — backs `isAudioNode`. */
12
- export declare const AUDIO_MARK = "__kmIsAudio";
13
- /**
14
- * Set by non-media nodes that still want a per-frame `_kmTick` callback (e.g.
15
- * {@link Text}'s typewriter). Discovered by `Sequence` alongside media, but
16
- * NOT registered with the audio mixer.
17
- */
18
- export declare const TICK_MARK = "__kmIsTick";
19
- //# sourceMappingURL=media-marker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-marker.d.ts","sourceRoot":"","sources":["../src/media-marker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yFAAyF;AACzF,eAAO,MAAM,UAAU,gBAAgB,CAAC;AACxC,+DAA+D;AAC/D,eAAO,MAAM,UAAU,gBAAgB,CAAC;AACxC,+DAA+D;AAC/D,eAAO,MAAM,UAAU,gBAAgB,CAAC;AACxC;;;;GAIG;AACH,eAAO,MAAM,SAAS,eAAe,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Marker attrs stamped on media nodes ({@link Video}, {@link Audio}) and
3
- * inspected by `Sequence`/`Composition`. Kept in a dependency-free leaf so
4
- * `composition.ts` can discover media by string without importing `video/` or
5
- * `audio/` (which would create an import cycle).
6
- */
7
- /** Set by every tickable media node — drives Sequence discovery + mixer registration. */
8
- export const MEDIA_MARK = "__kmIsMedia";
9
- /** Additionally set by {@link Video} — backs `isVideoNode`. */
10
- export const VIDEO_MARK = "__kmIsVideo";
11
- /** Additionally set by {@link Audio} — backs `isAudioNode`. */
12
- export const AUDIO_MARK = "__kmIsAudio";
13
- /**
14
- * Set by non-media nodes that still want a per-frame `_kmTick` callback (e.g.
15
- * {@link Text}'s typewriter). Discovered by `Sequence` alongside media, but
16
- * NOT registered with the audio mixer.
17
- */
18
- export const TICK_MARK = "__kmIsTick";
19
- //# sourceMappingURL=media-marker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-marker.js","sourceRoot":"","sources":["../src/media-marker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yFAAyF;AACzF,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC;AACxC,+DAA+D;AAC/D,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC;AACxC,+DAA+D;AAC/D,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC;AACxC;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC"}
@@ -1,17 +0,0 @@
1
- /** Resolved per-clip timing, derived from a media config + composition fps. */
2
- export type MediaTiming = {
3
- fps: number;
4
- /** Frames trimmed from the start of the media. */
5
- trimBefore: number;
6
- /** Exclusive frame bound, or undefined to play to the media's natural end. */
7
- trimAfter?: number;
8
- loop: boolean;
9
- playbackRate: number;
10
- };
11
- /**
12
- * Convert a local frame to a media time in seconds — Remotion's `getMediaTime`,
13
- * extended with `loop` wrap-around. Without `loop`, the media freezes on its
14
- * last in-range frame (Remotion's default behavior). Shared by video and audio.
15
- */
16
- export declare function getMediaTime(localFrame: number, timing: MediaTiming): number;
17
- //# sourceMappingURL=media-time.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-time.d.ts","sourceRoot":"","sources":["../src/media-time.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CAU5E"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Convert a local frame to a media time in seconds — Remotion's `getMediaTime`,
3
- * extended with `loop` wrap-around. Without `loop`, the media freezes on its
4
- * last in-range frame (Remotion's default behavior). Shared by video and audio.
5
- */
6
- export function getMediaTime(localFrame, timing) {
7
- const { fps, trimBefore, trimAfter, loop, playbackRate } = timing;
8
- const advanced = localFrame * playbackRate;
9
- if (trimAfter === undefined) {
10
- // No explicit end bound: play forward; loop has no length to wrap to.
11
- return (trimBefore + advanced) / fps;
12
- }
13
- const loopLen = Math.max(1, trimAfter - trimBefore);
14
- const eff = loop ? ((advanced % loopLen) + loopLen) % loopLen : Math.min(advanced, loopLen - 1);
15
- return (trimBefore + eff) / fps;
16
- }
17
- //# sourceMappingURL=media-time.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-time.js","sourceRoot":"","sources":["../src/media-time.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,UAAkB,EAAE,MAAmB;IAClE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAClE,MAAM,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;IAC3C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,sEAAsE;QACtE,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC;IACvC,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAChG,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAClC,CAAC"}
package/dist/signal.d.ts DELETED
@@ -1,10 +0,0 @@
1
- export type ReadonlySignal<T> = {
2
- get(): T;
3
- subscribe(listener: (value: T) => void): () => void;
4
- };
5
- export type Signal<T> = ReadonlySignal<T> & {
6
- set(value: T): void;
7
- };
8
- export declare function createSignal<T>(initial: T): Signal<T>;
9
- export declare function derived<T>(sources: ReadonlySignal<unknown>[], compute: () => T): ReadonlySignal<T>;
10
- //# sourceMappingURL=signal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../src/signal.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,GAAG,IAAI,CAAC,CAAC;IACT,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG;IAC1C,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAerD;AAED,wBAAgB,OAAO,CAAC,CAAC,EACvB,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,EAClC,OAAO,EAAE,MAAM,CAAC,GACf,cAAc,CAAC,CAAC,CAAC,CAiBnB"}
package/dist/signal.js DELETED
@@ -1,39 +0,0 @@
1
- export function createSignal(initial) {
2
- let value = initial;
3
- const listeners = new Set();
4
- return {
5
- get: () => value,
6
- set(next) {
7
- if (Object.is(next, value))
8
- return;
9
- value = next;
10
- for (const fn of listeners)
11
- fn(value);
12
- },
13
- subscribe(listener) {
14
- listeners.add(listener);
15
- return () => listeners.delete(listener);
16
- },
17
- };
18
- }
19
- export function derived(sources, compute) {
20
- return {
21
- get: compute,
22
- subscribe(listener) {
23
- let last = compute();
24
- const fire = () => {
25
- const next = compute();
26
- if (Object.is(next, last))
27
- return;
28
- last = next;
29
- listener(next);
30
- };
31
- const unsubs = sources.map((s) => s.subscribe(fire));
32
- return () => {
33
- for (const u of unsubs)
34
- u();
35
- };
36
- },
37
- };
38
- }
39
- //# sourceMappingURL=signal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signal.js","sourceRoot":"","sources":["../src/signal.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,YAAY,CAAI,OAAU;IACxC,IAAI,KAAK,GAAG,OAAO,CAAC;IACpB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAsB,CAAC;IAChD,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK;QAChB,GAAG,CAAC,IAAO;YACT,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;gBAAE,OAAO;YACnC,KAAK,GAAG,IAAI,CAAC;YACb,KAAK,MAAM,EAAE,IAAI,SAAS;gBAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,SAAS,CAAC,QAAQ;YAChB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,OAAkC,EAClC,OAAgB;IAEhB,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,SAAS,CAAC,QAAQ;YAChB,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,GAAG,EAAE;gBAChB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;gBACvB,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;oBAAE,OAAO;gBAClC,IAAI,GAAG,IAAI,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,CAAC;YACF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,OAAO,GAAG,EAAE;gBACV,KAAK,MAAM,CAAC,IAAI,MAAM;oBAAE,CAAC,EAAE,CAAC;YAC9B,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/text.d.ts DELETED
@@ -1,91 +0,0 @@
1
- import Konva from "konva";
2
- import type { TextConfig } from "./flex-types.js";
3
- /**
4
- * Timeline-aware text node. Wraps a {@link Konva.Text} and layers on CSS-like
5
- * fitting (maxWidth/maxHeight/fitText/maxLines, ellipsis + word/letter trim), a
6
- * built-in typewriter reveal, and per-range highlighter marks. Like the other
7
- * layout primitives it `extends Konva.Group`, exposing intrinsic text size to
8
- * the flex engine via {@link _measureForFlex}.
9
- */
10
- export declare class Text extends Konva.Group {
11
- private readonly _text;
12
- /** Clipping wrapper around `_text` — reveals a char range without re-wrapping. */
13
- private readonly _textClip;
14
- private readonly _hl;
15
- private readonly _hlText;
16
- private readonly _fade;
17
- private _cursor;
18
- private _fullText;
19
- private _fullChars;
20
- /** char index marking the end of each word (== start of the next), for word-mode reveal. */
21
- private _wordEnds;
22
- /** word index each char belongs to, for word-mode timing. */
23
- private _charWord;
24
- private _resolvedFontSize;
25
- private _localFrame;
26
- private _geo;
27
- private _inLayout;
28
- constructor(config: TextConfig);
29
- /** Replace the text content. Re-runs fit + clamp + layout. */
30
- setText(text: string): this;
31
- /**
32
- * @internal Intrinsic size for the flex engine. Lays out the FULL text at the
33
- * given available width (honoring fitText / maxWidth / maxHeight / maxLines).
34
- * Height is the full text height when reserving, else the height of just the
35
- * lines revealed so far — so a `reserveHeight: false` typewriter grows the box
36
- * one line at a time and pushes siblings down.
37
- */
38
- _measureForFlex(avail: number): {
39
- width: number;
40
- height: number;
41
- };
42
- /** @internal Re-layout glyphs, highlights, cursor and fade for the current frame. */
43
- _layoutText(): void;
44
- private _relayout;
45
- /** Number of wrapped lines that contain at least one revealed char. */
46
- private _visibleLines;
47
- /** Set the reveal clip on `_textClip` (covers char range [0, end), null = all). */
48
- private _setReveal;
49
- /** @internal Called by Sequence each frame. */
50
- _kmTick(localFrame: number): void;
51
- /** @internal Called by Sequence when the sequence leaves range. */
52
- _kmDeactivate(): void;
53
- /** How many chars are revealed at `frame` (full length when no typewriter). */
54
- private _revealCount;
55
- /** Frame at which the unit owning char `k` first appears (for fade ramps). */
56
- private _unitRevealFrame;
57
- private _boxWidth;
58
- private _boxHeight;
59
- /** Binary-search the largest font size in [min,max] for which the FULL text fits. */
60
- private _applyFit;
61
- /** Trim the visible text + add an ellipsis to satisfy wrap:none / maxLines / maxHeight. */
62
- private _clamp;
63
- /** Largest n in [0,max] satisfying the monotone predicate. */
64
- private _largest;
65
- private _charWidth;
66
- /** Run Konva's wrapping for the current text at `boxW`, returning line metrics. */
67
- private _measure;
68
- /** Map Konva's wrapped lines back to char offsets in the displayed text. */
69
- private _buildGeometry;
70
- /** Left offset of a line within the text area, per alignment (matches Konva). */
71
- private _alignOffset;
72
- /** Per-line rectangles covering the global char range [lo,hi). */
73
- private _segmentRects;
74
- private _layoutHighlights;
75
- private _fillColor;
76
- /**
77
- * A clipped, non-interactive copy of `_text` (different fill/opacity). Shapes
78
- * can't clip, so the clone lives inside a clipping Group.
79
- */
80
- private _clippedClone;
81
- /**
82
- * Reveal `[0, reveal)` by clipping `_text` (no re-wrapping). With fade on, the
83
- * solid clip stops at `commit` and the `[commit, reveal)` window is drawn as
84
- * per-char overlays ramping their opacity.
85
- */
86
- private _layoutReveal;
87
- private _layoutCursor;
88
- /** Pixel position of the caret sitting just after char `idx`. */
89
- private _caretPos;
90
- }
91
- //# sourceMappingURL=text.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAKV,UAAU,EAEX,MAAM,iBAAiB,CAAC;AA+DzB;;;;;;GAMG;AACH,qBAAa,IAAK,SAAQ,KAAK,CAAC,KAAK;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAW;IAC7B,4FAA4F;IAC5F,OAAO,CAAC,SAAS,CAAW;IAC5B,6DAA6D;IAC7D,OAAO,CAAC,SAAS,CAAW;IAE5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,UAAU;IA8D9B,8DAA8D;IAC9D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAY3B;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAuBjE,qFAAqF;IACrF,WAAW,IAAI,IAAI;IAUnB,OAAO,CAAC,SAAS;IAoCjB,uEAAuE;IACvE,OAAO,CAAC,aAAa;IAUrB,mFAAmF;IACnF,OAAO,CAAC,UAAU;IAgBlB,+CAA+C;IAC/C,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKjC,mEAAmE;IACnE,aAAa,IAAI,IAAI;IAMrB,+EAA+E;IAC/E,OAAO,CAAC,YAAY;IAsBpB,8EAA8E;IAC9E,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,UAAU;IAQlB,qFAAqF;IACrF,OAAO,CAAC,SAAS;IA+CjB,2FAA2F;IAC3F,OAAO,CAAC,MAAM;IAgDd,8DAA8D;IAC9D,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,UAAU;IAYlB,mFAAmF;IACnF,OAAO,CAAC,QAAQ;IAahB,4EAA4E;IAC5E,OAAO,CAAC,cAAc;IA+BtB,iFAAiF;IACjF,OAAO,CAAC,YAAY;IAMpB,kEAAkE;IAClE,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,iBAAiB;IAwDzB,OAAO,CAAC,UAAU;IAKlB;;;OAGG;IACH,OAAO,CAAC,aAAa;IA6BrB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAqCrB,OAAO,CAAC,aAAa;IAsCrB,iEAAiE;IACjE,OAAO,CAAC,SAAS;CAkBlB"}