3 Commits

Author SHA1 Message Date
Doruk Kavcioglu bc7c207a5a text-to-lottie: require a:1 for keyframed text slots
Native text slots authored as slots[id].p = { a:0, k:[{t,s}] } (or with a
missing a) render blank in Skottie: it treats the keyframe array as a static
value and resolves empty text. Document the a:1 requirement in the player
contract, correct the canonical test fixture to the render-safe shape, and add
a local structural invariant test that flags keyframed text slots missing a:1.
2026-07-03 17:27:26 +03:00
Doruk Kavcioglu 42794345ad Preserve Unicode text slots during Lottie saves
CanvasKit's getTextSlot mangles non-ASCII text (mojibake on save), so
read text slot values from the source JSON plus an in-memory overrides
map instead of off the animation. Edits now write to both the slot
document and its bound layer fallback.

- canvas.tsx: track text edits in a textOverrides signal, derive slots
  from sourceDoc + overrides, reset overrides when the scene reloads,
  and bail out of save on a failed HTTP response
- lottie.ts: add readTextSlotValue/writeTextSlotValue and export
  LottieDoc; cover slot document and bound-layer shapes
- add scripts/text-slot-unicode.test.mjs and a check:text-slots script
2026-06-30 23:30:17 +03:00
konstantin-paulus 9b5f21bbab Initialize lottie-experiments project with Vite, React, and TypeScript setup. Add essential files including package.json, tsconfig, and README. Implement Lottie animation player using CanvasKit, along with UI components for playback controls. Include styles with Tailwind CSS and setup build configurations. 2026-06-03 16:01:43 +02:00