codeboard-studio 0.2.1

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 (208) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +23 -0
  3. package/README.md +54 -0
  4. package/dist/src/animation/camera-plane.d.ts +8 -0
  5. package/dist/src/animation/camera-plane.d.ts.map +1 -0
  6. package/dist/src/animation/camera-plane.js +16 -0
  7. package/dist/src/animation/camera-plane.js.map +1 -0
  8. package/dist/src/animation/drawing-neighbors.d.ts +4 -0
  9. package/dist/src/animation/drawing-neighbors.d.ts.map +1 -0
  10. package/dist/src/animation/drawing-neighbors.js +38 -0
  11. package/dist/src/animation/drawing-neighbors.js.map +1 -0
  12. package/dist/src/animation/evaluate.d.ts +17 -0
  13. package/dist/src/animation/evaluate.d.ts.map +1 -0
  14. package/dist/src/animation/evaluate.js +70 -0
  15. package/dist/src/animation/evaluate.js.map +1 -0
  16. package/dist/src/animation/frame.d.ts +8 -0
  17. package/dist/src/animation/frame.d.ts.map +1 -0
  18. package/dist/src/animation/frame.js +16 -0
  19. package/dist/src/animation/frame.js.map +1 -0
  20. package/dist/src/animation/ik.d.ts +26 -0
  21. package/dist/src/animation/ik.d.ts.map +1 -0
  22. package/dist/src/animation/ik.js +47 -0
  23. package/dist/src/animation/ik.js.map +1 -0
  24. package/dist/src/animation/retime.d.ts +4 -0
  25. package/dist/src/animation/retime.d.ts.map +1 -0
  26. package/dist/src/animation/retime.js +116 -0
  27. package/dist/src/animation/retime.js.map +1 -0
  28. package/dist/src/audio/wav.d.ts +11 -0
  29. package/dist/src/audio/wav.d.ts.map +1 -0
  30. package/dist/src/audio/wav.js +58 -0
  31. package/dist/src/audio/wav.js.map +1 -0
  32. package/dist/src/authoring-runner.d.ts +2 -0
  33. package/dist/src/authoring-runner.d.ts.map +1 -0
  34. package/dist/src/authoring-runner.js +24 -0
  35. package/dist/src/authoring-runner.js.map +1 -0
  36. package/dist/src/cli.d.ts +3 -0
  37. package/dist/src/cli.d.ts.map +1 -0
  38. package/dist/src/cli.js +127 -0
  39. package/dist/src/cli.js.map +1 -0
  40. package/dist/src/core/coordinates.d.ts +16 -0
  41. package/dist/src/core/coordinates.d.ts.map +1 -0
  42. package/dist/src/core/coordinates.js +48 -0
  43. package/dist/src/core/coordinates.js.map +1 -0
  44. package/dist/src/core/handles.d.ts +93 -0
  45. package/dist/src/core/handles.d.ts.map +1 -0
  46. package/dist/src/core/handles.js +190 -0
  47. package/dist/src/core/handles.js.map +1 -0
  48. package/dist/src/core/history.d.ts +14 -0
  49. package/dist/src/core/history.d.ts.map +1 -0
  50. package/dist/src/core/history.js +80 -0
  51. package/dist/src/core/history.js.map +1 -0
  52. package/dist/src/core/inspection.d.ts +51 -0
  53. package/dist/src/core/inspection.d.ts.map +1 -0
  54. package/dist/src/core/inspection.js +72 -0
  55. package/dist/src/core/inspection.js.map +1 -0
  56. package/dist/src/core/production.d.ts +208 -0
  57. package/dist/src/core/production.d.ts.map +1 -0
  58. package/dist/src/core/production.js +894 -0
  59. package/dist/src/core/production.js.map +1 -0
  60. package/dist/src/core/project.d.ts +146 -0
  61. package/dist/src/core/project.d.ts.map +1 -0
  62. package/dist/src/core/project.js +700 -0
  63. package/dist/src/core/project.js.map +1 -0
  64. package/dist/src/drawing/brush-authoring.d.ts +6 -0
  65. package/dist/src/drawing/brush-authoring.d.ts.map +1 -0
  66. package/dist/src/drawing/brush-authoring.js +12 -0
  67. package/dist/src/drawing/brush-authoring.js.map +1 -0
  68. package/dist/src/drawing/brushes.d.ts +157 -0
  69. package/dist/src/drawing/brushes.d.ts.map +1 -0
  70. package/dist/src/drawing/brushes.js +50 -0
  71. package/dist/src/drawing/brushes.js.map +1 -0
  72. package/dist/src/drawing/color.d.ts +5 -0
  73. package/dist/src/drawing/color.d.ts.map +1 -0
  74. package/dist/src/drawing/color.js +63 -0
  75. package/dist/src/drawing/color.js.map +1 -0
  76. package/dist/src/drawing/curves.d.ts +27 -0
  77. package/dist/src/drawing/curves.d.ts.map +1 -0
  78. package/dist/src/drawing/curves.js +170 -0
  79. package/dist/src/drawing/curves.js.map +1 -0
  80. package/dist/src/drawing/math.d.ts +10 -0
  81. package/dist/src/drawing/math.d.ts.map +1 -0
  82. package/dist/src/drawing/math.js +40 -0
  83. package/dist/src/drawing/math.js.map +1 -0
  84. package/dist/src/drawing/path-geometry.d.ts +18 -0
  85. package/dist/src/drawing/path-geometry.d.ts.map +1 -0
  86. package/dist/src/drawing/path-geometry.js +115 -0
  87. package/dist/src/drawing/path-geometry.js.map +1 -0
  88. package/dist/src/drawing/path-sampling.d.ts +10 -0
  89. package/dist/src/drawing/path-sampling.d.ts.map +1 -0
  90. package/dist/src/drawing/path-sampling.js +64 -0
  91. package/dist/src/drawing/path-sampling.js.map +1 -0
  92. package/dist/src/drawing/path.d.ts +4 -0
  93. package/dist/src/drawing/path.d.ts.map +1 -0
  94. package/dist/src/drawing/path.js +27 -0
  95. package/dist/src/drawing/path.js.map +1 -0
  96. package/dist/src/drawing/pen-input.d.ts +5 -0
  97. package/dist/src/drawing/pen-input.d.ts.map +1 -0
  98. package/dist/src/drawing/pen-input.js +30 -0
  99. package/dist/src/drawing/pen-input.js.map +1 -0
  100. package/dist/src/drawing/pixel-selection.d.ts +23 -0
  101. package/dist/src/drawing/pixel-selection.d.ts.map +1 -0
  102. package/dist/src/drawing/pixel-selection.js +142 -0
  103. package/dist/src/drawing/pixel-selection.js.map +1 -0
  104. package/dist/src/drawing/pixels.d.ts +22 -0
  105. package/dist/src/drawing/pixels.d.ts.map +1 -0
  106. package/dist/src/drawing/pixels.js +79 -0
  107. package/dist/src/drawing/pixels.js.map +1 -0
  108. package/dist/src/drawing/resource-binary.d.ts +23 -0
  109. package/dist/src/drawing/resource-binary.d.ts.map +1 -0
  110. package/dist/src/drawing/resource-binary.js +135 -0
  111. package/dist/src/drawing/resource-binary.js.map +1 -0
  112. package/dist/src/drawing/resources.d.ts +51 -0
  113. package/dist/src/drawing/resources.d.ts.map +1 -0
  114. package/dist/src/drawing/resources.js +239 -0
  115. package/dist/src/drawing/resources.js.map +1 -0
  116. package/dist/src/drawing/stroke-outline.d.ts +5 -0
  117. package/dist/src/drawing/stroke-outline.d.ts.map +1 -0
  118. package/dist/src/drawing/stroke-outline.js +53 -0
  119. package/dist/src/drawing/stroke-outline.js.map +1 -0
  120. package/dist/src/drawing/swatch.d.ts +6 -0
  121. package/dist/src/drawing/swatch.d.ts.map +1 -0
  122. package/dist/src/drawing/swatch.js +15 -0
  123. package/dist/src/drawing/swatch.js.map +1 -0
  124. package/dist/src/export/animatic-export.d.ts +11 -0
  125. package/dist/src/export/animatic-export.d.ts.map +1 -0
  126. package/dist/src/export/animatic-export.js +52 -0
  127. package/dist/src/export/animatic-export.js.map +1 -0
  128. package/dist/src/export/movie-export.d.ts +16 -0
  129. package/dist/src/export/movie-export.d.ts.map +1 -0
  130. package/dist/src/export/movie-export.js +108 -0
  131. package/dist/src/export/movie-export.js.map +1 -0
  132. package/dist/src/export/sheet-layout.d.ts +27 -0
  133. package/dist/src/export/sheet-layout.d.ts.map +1 -0
  134. package/dist/src/export/sheet-layout.js +72 -0
  135. package/dist/src/export/sheet-layout.js.map +1 -0
  136. package/dist/src/export/storyboard-export.d.ts +8 -0
  137. package/dist/src/export/storyboard-export.d.ts.map +1 -0
  138. package/dist/src/export/storyboard-export.js +76 -0
  139. package/dist/src/export/storyboard-export.js.map +1 -0
  140. package/dist/src/index.d.ts +36 -0
  141. package/dist/src/index.d.ts.map +1 -0
  142. package/dist/src/index.js +27 -0
  143. package/dist/src/index.js.map +1 -0
  144. package/dist/src/model/query.d.ts +6 -0
  145. package/dist/src/model/query.d.ts.map +1 -0
  146. package/dist/src/model/query.js +7 -0
  147. package/dist/src/model/query.js.map +1 -0
  148. package/dist/src/model/schema.d.ts +754 -0
  149. package/dist/src/model/schema.d.ts.map +1 -0
  150. package/dist/src/model/schema.js +205 -0
  151. package/dist/src/model/schema.js.map +1 -0
  152. package/dist/src/model/types.d.ts +537 -0
  153. package/dist/src/model/types.d.ts.map +1 -0
  154. package/dist/src/model/types.js +8 -0
  155. package/dist/src/model/types.js.map +1 -0
  156. package/dist/src/model/validate.d.ts +12 -0
  157. package/dist/src/model/validate.d.ts.map +1 -0
  158. package/dist/src/model/validate.js +183 -0
  159. package/dist/src/model/validate.js.map +1 -0
  160. package/dist/src/preview/server.d.ts +6 -0
  161. package/dist/src/preview/server.d.ts.map +1 -0
  162. package/dist/src/preview/server.js +71 -0
  163. package/dist/src/preview/server.js.map +1 -0
  164. package/dist/src/render/annotations.d.ts +4 -0
  165. package/dist/src/render/annotations.d.ts.map +1 -0
  166. package/dist/src/render/annotations.js +27 -0
  167. package/dist/src/render/annotations.js.map +1 -0
  168. package/dist/src/render/brush-engine.d.ts +14 -0
  169. package/dist/src/render/brush-engine.d.ts.map +1 -0
  170. package/dist/src/render/brush-engine.js +230 -0
  171. package/dist/src/render/brush-engine.js.map +1 -0
  172. package/dist/src/render/layer-compositor.d.ts +33 -0
  173. package/dist/src/render/layer-compositor.d.ts.map +1 -0
  174. package/dist/src/render/layer-compositor.js +296 -0
  175. package/dist/src/render/layer-compositor.js.map +1 -0
  176. package/dist/src/render/panel-renderer.d.ts +33 -0
  177. package/dist/src/render/panel-renderer.d.ts.map +1 -0
  178. package/dist/src/render/panel-renderer.js +118 -0
  179. package/dist/src/render/panel-renderer.js.map +1 -0
  180. package/dist/src/render/png.d.ts +4 -0
  181. package/dist/src/render/png.d.ts.map +1 -0
  182. package/dist/src/render/png.js +10 -0
  183. package/dist/src/render/png.js.map +1 -0
  184. package/dist/src/render/review.d.ts +42 -0
  185. package/dist/src/render/review.d.ts.map +1 -0
  186. package/dist/src/render/review.js +192 -0
  187. package/dist/src/render/review.js.map +1 -0
  188. package/dist/src/render/vector-renderer.d.ts +5 -0
  189. package/dist/src/render/vector-renderer.d.ts.map +1 -0
  190. package/dist/src/render/vector-renderer.js +98 -0
  191. package/dist/src/render/vector-renderer.js.map +1 -0
  192. package/dist/src/starter.d.ts +2 -0
  193. package/dist/src/starter.d.ts.map +1 -0
  194. package/dist/src/starter.js +23 -0
  195. package/dist/src/starter.js.map +1 -0
  196. package/dist/src/storage/codec.d.ts +20 -0
  197. package/dist/src/storage/codec.d.ts.map +1 -0
  198. package/dist/src/storage/codec.js +203 -0
  199. package/dist/src/storage/codec.js.map +1 -0
  200. package/dist/src/storage/store.d.ts +89 -0
  201. package/dist/src/storage/store.d.ts.map +1 -0
  202. package/dist/src/storage/store.js +392 -0
  203. package/dist/src/storage/store.js.map +1 -0
  204. package/dist/src/updates.d.ts +10 -0
  205. package/dist/src/updates.d.ts.map +1 -0
  206. package/dist/src/updates.js +134 -0
  207. package/dist/src/updates.js.map +1 -0
  208. package/package.json +84 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/model/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAC,aAAa,EAAC,cAAc,EAAY,MAAM,YAAY,CAAC;AAsBxE,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BhB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAwB,CAAC;AAkD1D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAa7B,CAAC;AAEJ,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAW9B,CAAC;AACJ,eAAO,MAAM,eAAe;;;;;;;;;;iBAI1B,CAAC;AACH,eAAO,MAAM,cAAc;;;kBAE8F,CAAC;AAC1H,eAAO,MAAM,gBAAgB;;;;;;;;iBAAmH,CAAC;AACjJ,eAAO,MAAM,qBAAqB;;;mBAC6F,CAAC;AAUhI,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;kBAE6C,CAAC;AAC7E,eAAO,MAAM,gBAAgB;;;;kBAA2G,CAAC;AAMzI,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;iBAA8G,CAAC;AAC5I,eAAO,MAAM,uBAAuB;;;;kBAA6E,CAAC;AAElH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmC3B,CAAC"}
@@ -0,0 +1,205 @@
1
+ import { z } from "zod";
2
+ import { validatePixels } from "../drawing/pixels.js";
3
+ import { isDrawingColor, isVectorFill } from "../drawing/color.js";
4
+ const finite = z.number().finite();
5
+ const color = z.string().refine(isDrawingColor, "Invalid drawing color; use a supported CSS color or transparent");
6
+ const point = z.object({
7
+ x: finite,
8
+ y: finite,
9
+ pressure: finite.min(0).max(1).optional(),
10
+ time: finite.min(0).optional(),
11
+ tiltX: finite.min(-90).max(90).optional(),
12
+ tiltY: finite.min(-90).max(90).optional(),
13
+ rotation: finite.optional(),
14
+ });
15
+ const transform = z.object({
16
+ x: finite,
17
+ y: finite,
18
+ scaleX: finite,
19
+ scaleY: finite,
20
+ rotation: finite,
21
+ });
22
+ export const brush = z.object({
23
+ provenance: z.object({ source: z.string(), author: z.string().optional(), license: z.string(), redistribution: z.enum(["allowed", "unknown", "forbidden"]), resourceChecksum: z.string() }).optional(),
24
+ paperTexture: z.object({ width: z.number().int().min(1).max(512), height: z.number().int().min(1).max(512), alpha: z.array(finite.min(0).max(1)).max(262144), scale: finite.positive(), strength: finite.min(0).max(1) }).optional(),
25
+ id: z.string().min(1),
26
+ name: z.string().min(1),
27
+ version: z.number().int().positive(),
28
+ tip: z.discriminatedUnion("kind", [
29
+ z.object({ kind: z.enum(["round", "ellipse", "chisel", "rake"]), aspect: finite.min(0.05).max(1), angle: finite, rotationMode: z.enum(["fixed", "stroke", "stylus"]) }),
30
+ z.object({ kind: z.literal("bitmap"), width: z.number().int().min(1).max(512), height: z.number().int().min(1).max(512), alpha: z.array(finite.min(0).max(1)).max(262144), angle: finite, rotationMode: z.enum(["fixed", "stroke", "stylus"]), sourceAssetId: z.string().optional() }),
31
+ ]),
32
+ size: finite.positive(),
33
+ opacity: finite.min(0).max(1),
34
+ flow: finite.min(0).max(1),
35
+ hardness: finite.min(0.01).max(1),
36
+ spacing: finite.min(0.02).max(4),
37
+ taperStart: finite.min(0).max(1),
38
+ taperEnd: finite.min(0).max(1),
39
+ texture: z.enum(["none", "graphite", "charcoal", "dry-brush"]),
40
+ textureStrength: finite.min(0).max(1),
41
+ dynamics: z.object({
42
+ pressureSize: finite.min(0).max(1),
43
+ pressureOpacity: finite.min(0).max(1),
44
+ speedSize: finite.min(-1).max(1),
45
+ speedOpacity: finite.min(-1).max(1),
46
+ tiltShape: finite.min(0).max(1),
47
+ pressureSpacing: finite.min(-1).max(1),
48
+ pressureHardness: finite.min(-1).max(1),
49
+ rotationJitter: finite.min(0).max(1),
50
+ }),
51
+ });
52
+ export const brushParameterSchema = z.toJSONSchema(brush);
53
+ const elementMatrix = z.tuple([finite, finite, finite, finite, finite, finite]);
54
+ const rasterStroke = z.object({
55
+ matrix: elementMatrix.optional(),
56
+ reveal: z.object({ startFrame: z.number().int().nonnegative(), endFrame: z.number().int().nonnegative() })
57
+ .refine(r => r.endFrame > r.startFrame, "Reveal end must follow start").optional(),
58
+ kind: z.literal("raster-stroke"), id: z.string(), name: z.string().optional(),
59
+ points: z.array(point).min(1), brush, color, opacity: finite.min(0).max(1),
60
+ erase: z.boolean(), seed: z.number().int(), visible: z.boolean(),
61
+ });
62
+ const vectorStroke = z.object({
63
+ matrix: elementMatrix.optional(),
64
+ kind: z.literal("vector-stroke"), id: z.string(), name: z.string().optional(),
65
+ points: z.array(point).min(1), color, width: finite.positive(),
66
+ opacity: finite.min(0).max(1), taperStart: finite.min(0).max(1),
67
+ taperEnd: finite.min(0).max(1), pressureSize: finite.min(0).max(1),
68
+ closed: z.boolean(), fill: color.optional(), visible: z.boolean(),
69
+ });
70
+ const pathCommand = z.discriminatedUnion("op", [
71
+ z.object({ op: z.literal("M"), x: finite, y: finite }),
72
+ z.object({ op: z.literal("L"), x: finite, y: finite }),
73
+ z.object({ op: z.literal("C"), x1: finite, y1: finite, x2: finite, y2: finite, x: finite, y: finite }),
74
+ z.object({ op: z.literal("Q"), x1: finite, y1: finite, x: finite, y: finite }),
75
+ z.object({ op: z.literal("Z") }),
76
+ ]);
77
+ const vectorPath = z.object({
78
+ matrix: elementMatrix.optional(),
79
+ kind: z.literal("vector-path"), id: z.string(), name: z.string().optional(),
80
+ commands: z.array(pathCommand), fill: z.custom(isVectorFill, "Invalid drawing color or vector fill: check gradient coordinates and ordered color stops").transform(value => structuredClone(value)).optional(), stroke: color.optional(),
81
+ strokeWidth: finite.nonnegative(), opacity: finite.min(0).max(1), visible: z.boolean(),
82
+ });
83
+ const textElement = z.object({
84
+ matrix: elementMatrix.optional(),
85
+ kind: z.literal("text"), id: z.string(), name: z.string().optional(), x: finite, y: finite,
86
+ text: z.string(), color, font: z.string(), align: z.enum(["left", "center", "right"]),
87
+ opacity: finite.min(0).max(1), visible: z.boolean(),
88
+ });
89
+ const rasterSurface = z.object({
90
+ kind: z.literal("raster-surface"), id: z.string(), name: z.string().optional(),
91
+ width: finite.int().positive(), height: finite.int().positive(),
92
+ pixels: z.instanceof(Uint8Array).transform(bytes => new Uint8Array(bytes)),
93
+ matrix: elementMatrix,
94
+ opacity: finite.min(0).max(1), visible: z.boolean(),
95
+ }).superRefine((value, ctx) => { try {
96
+ validatePixels(value);
97
+ }
98
+ catch (error) {
99
+ ctx.addIssue({ code: "custom", message: error.message });
100
+ } });
101
+ const element = z.discriminatedUnion("kind", [rasterStroke, rasterSurface, vectorStroke, vectorPath, textElement]);
102
+ const unitInterval = finite.min(0).max(1);
103
+ const easingSchema = z.union([z.enum(["linear", "ease-in-out", "hold"]), z.object({
104
+ type: z.literal("cubic-bezier"), x1: unitInterval, y1: unitInterval, x2: unitInterval, y2: unitInterval,
105
+ }).strict()]);
106
+ export const layerKeyframeSchema = z.object({
107
+ id: z.string(), frame: z.number().int().nonnegative(), transform: transform.partial().strict(),
108
+ opacity: finite.min(0).max(1).optional(), depth: finite.positive().optional(), easing: easingSchema,
109
+ channelEasing: z.object(Object.fromEntries(["x", "y", "scaleX", "scaleY", "rotation", "opacity", "depth"].map(key => [key, easingSchema.optional()]))).strict().optional(),
110
+ }).superRefine((key, ctx) => {
111
+ if (key.opacity === undefined && key.depth === undefined && !Object.values(key.transform).some(value => value !== undefined))
112
+ ctx.addIssue({ code: "custom", message: "Layer keyframe must author at least one property" });
113
+ for (const [channel, easing] of Object.entries(key.channelEasing ?? {}))
114
+ if (easing !== undefined && (channel === "opacity" || channel === "depth" ? key[channel] : key.transform[channel]) === undefined)
115
+ ctx.addIssue({ code: "custom", message: `Easing requires a keyed property: ${channel}` });
116
+ }).transform((key) => ({
117
+ id: key.id, frame: key.frame, easing: key.easing,
118
+ transform: Object.fromEntries(Object.entries(key.transform).filter(([, value]) => value !== undefined)),
119
+ ...(key.opacity === undefined ? {} : { opacity: key.opacity }),
120
+ ...(key.depth === undefined ? {} : { depth: key.depth }),
121
+ ...(key.channelEasing ? { channelEasing: Object.fromEntries(Object.entries(key.channelEasing).filter(([, value]) => value !== undefined)) } : {}),
122
+ }));
123
+ const cameraChannels = ["x", "y", "zoom", "rotation"];
124
+ export const cameraKeyframeSchema = z.object({
125
+ id: z.string(), frame: z.number().int().nonnegative(), x: finite.optional(), y: finite.optional(),
126
+ zoom: finite.positive().optional(), rotation: finite.optional(), easing: easingSchema,
127
+ channelEasing: z.object({ x: easingSchema.optional(), y: easingSchema.optional(), zoom: easingSchema.optional(), rotation: easingSchema.optional() }).strict().optional(),
128
+ }).strict().superRefine((key, ctx) => {
129
+ if (!cameraChannels.some(channel => key[channel] !== undefined))
130
+ ctx.addIssue({ code: "custom", message: "Camera keyframe must author at least one property" });
131
+ for (const channel of cameraChannels)
132
+ if (key.channelEasing?.[channel] !== undefined && key[channel] === undefined)
133
+ ctx.addIssue({ code: "custom", message: `Easing requires a keyed property: ${channel}` });
134
+ }).transform((key) => ({
135
+ id: key.id, frame: key.frame, easing: key.easing,
136
+ ...Object.fromEntries(cameraChannels.filter(channel => key[channel] !== undefined).map(channel => [channel, key[channel]])),
137
+ ...(key.channelEasing ? { channelEasing: Object.fromEntries(Object.entries(key.channelEasing).filter(([, value]) => value !== undefined)) } : {}),
138
+ }));
139
+ export const audioClipSchema = z.object({
140
+ id: z.string(), assetId: z.string(), name: z.string(), startFrame: z.number().int().nonnegative(),
141
+ sourceInFrame: z.number().int().nonnegative(), durationFrames: z.number().int().positive(),
142
+ volume: finite.min(0).max(2), fadeInFrames: z.number().int().nonnegative(), fadeOutFrames: z.number().int().nonnegative(),
143
+ });
144
+ export const exposureSchema = z.object({
145
+ startFrame: z.number().int().nonnegative(), endFrame: z.number().int().positive(),
146
+ }).refine(value => value.endFrame > value.startFrame, { message: "Exposure end must follow start", path: ["endFrame"] }).nullable();
147
+ export const transitionSchema = z.object({ type: z.enum(["cut", "dissolve", "wipe-left", "wipe-right"]), durationFrames: z.number().int().nonnegative() });
148
+ export const drawingSequenceSchema = z.array(z.object({ frame: z.number().int().nonnegative(), drawingId: z.string().min(1).nullable() }).strict())
149
+ .refine(keys => keys.every((key, i) => i === 0 || key.frame > keys[i - 1].frame), "Drawing exposure frames must be unique and increasing");
150
+ const layerBase = {
151
+ pivot: z.object({ x: finite, y: finite }).strict().optional(),
152
+ componentSource: z.object({ id: z.string(), version: z.number().int().positive() }).optional(),
153
+ depth: finite.positive(), exposure: exposureSchema,
154
+ id: z.string().min(1), name: z.string(), visible: z.boolean(), opacity: finite.min(0).max(1),
155
+ blendMode: z.enum(["source-over", "multiply", "screen", "overlay", "darken", "lighten"]),
156
+ transform, maskLayerId: z.string().optional(), clipToBelow: z.boolean(),
157
+ keyframes: z.array(layerKeyframeSchema),
158
+ };
159
+ export const layerChangesSchema = z.object(layerBase).pick({
160
+ name: true, visible: true, opacity: true, blendMode: true, transform: true, clipToBelow: true, pivot: true,
161
+ }).partial().extend({ maskLayerId: z.string().nullable().optional() }).strict();
162
+ export const twoBoneRigSchema = z.object({ elbowId: z.string().min(1), upperLength: finite.positive(), lowerLength: finite.positive() }).strict();
163
+ const layer = z.lazy(() => z.discriminatedUnion("kind", [
164
+ z.object({ ...layerBase, kind: z.enum(["raster", "vector"]), elements: z.array(element) }),
165
+ z.object({ ...layerBase, kind: z.literal("group"), children: z.array(layer), drawingSequence: drawingSequenceSchema.optional(), twoBoneRig: twoBoneRigSchema.optional() }),
166
+ ]));
167
+ export const audioTrackSchema = z.object({ id: z.string(), name: z.string(), muted: z.boolean(), locked: z.boolean(), clips: z.array(audioClipSchema) });
168
+ export const audioTrackChangesSchema = audioTrackSchema.pick({ name: true, muted: true, locked: true }).partial().strict();
169
+ export const storyboardSchema = z.object({
170
+ components: z.array(z.object({ id: z.string(), name: z.string(), version: z.number().int().positive(), layers: z.array(layer) })),
171
+ schemaVersion: z.literal(3), version: z.number().int().nonnegative(), id: z.string().min(1), title: z.string().min(1), author: z.string().optional(),
172
+ createdAt: z.string(), updatedAt: z.string(),
173
+ canvas: z.object({ width: finite.int().min(1).max(8192), height: finite.int().min(1).max(8192), background: color }),
174
+ seed: z.number().int(), frameRate: finite.positive(), idCounter: z.number().int().nonnegative(),
175
+ sequences: z.array(z.object({ id: z.string(), name: z.string(), sceneIds: z.array(z.string()) })),
176
+ scenes: z.array(z.object({ id: z.string(), sequenceId: z.string(), name: z.string(), shotIds: z.array(z.string()) })),
177
+ shots: z.array(z.object({
178
+ id: z.string(), sceneId: z.string(), name: z.string(), panelIds: z.array(z.string()),
179
+ cameraKeyframes: z.array(cameraKeyframeSchema),
180
+ })),
181
+ panels: z.array(z.object({
182
+ id: z.string(), shotId: z.string(), number: z.string(), title: z.string(),
183
+ width: finite.positive(), height: finite.positive(), durationFrames: z.number().int().positive(),
184
+ startFrame: z.number().int().nonnegative(), transition: transitionSchema,
185
+ status: z.enum(["working", "review", "approved"]),
186
+ action: z.string(), dialogue: z.string(), camera: z.string(), notes: z.string(),
187
+ layers: z.array(layer), motion: z.array(z.object({ id: z.string(), label: z.string(), from: point, to: point, color })),
188
+ revision: z.number().int().nonnegative(),
189
+ })),
190
+ brushes: z.array(brush),
191
+ assets: z.array(z.object({
192
+ id: z.string(), kind: z.enum(["image", "audio"]), name: z.string(), path: z.string(), mimeType: z.string(),
193
+ source: z.enum(["linked", "managed"]), checksum: z.string().optional(),
194
+ })),
195
+ audioTracks: z.array(audioTrackSchema),
196
+ comments: z.array(z.object({
197
+ id: z.string(), author: z.string(), body: z.string(), status: z.enum(["open", "resolved"]),
198
+ anchor: z.object({ panelId: z.string().optional(), layerId: z.string().optional(), elementId: z.string().optional(), frame: z.number().int().nonnegative().optional(), x: finite.optional(), y: finite.optional() }),
199
+ createdAt: z.string(), resolvedAt: z.string().optional(),
200
+ })),
201
+ locks: z.array(z.object({ id: z.string(), targetType: z.enum(["project", "panel", "layer"]), targetId: z.string(), owner: z.string(), reason: z.string(), createdAt: z.string() })),
202
+ changes: z.array(z.object({ id: z.string(), version: z.number().int().nonnegative(), actor: z.string(), operation: z.string(), targetIds: z.array(z.string()), timestamp: z.string() })),
203
+ metadata: z.record(z.string(), z.string()),
204
+ });
205
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/model/schema.ts"],"names":[],"mappings":"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"}