@pixerate/flair 0.25.0 → 0.26.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.
Files changed (32) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +1 -0
  3. package/dist/catalog/index.js +1 -1
  4. package/dist/{chunk-WAMA45G3.js → chunk-5USSDEQL.js} +77 -21
  5. package/dist/chunk-5USSDEQL.js.map +1 -0
  6. package/dist/{chunk-GTIAOYOK.js → chunk-74ZLCZOG.js} +13 -10
  7. package/dist/chunk-74ZLCZOG.js.map +1 -0
  8. package/dist/{chunk-O44ZJTGG.js → chunk-CK6EV37I.js} +15 -11
  9. package/dist/chunk-CK6EV37I.js.map +1 -0
  10. package/dist/{chunk-OKYMKSXK.js → chunk-G2B5L234.js} +3 -3
  11. package/dist/{chunk-PYDN5G2P.js → chunk-HVXWNGTW.js} +79 -2
  12. package/dist/{chunk-PYDN5G2P.js.map → chunk-HVXWNGTW.js.map} +1 -1
  13. package/dist/{chunk-S2RGHHKZ.js → chunk-UCZ43ARE.js} +2 -2
  14. package/dist/cli.js +9 -9
  15. package/dist/editor/index.js +1 -1
  16. package/dist/{effect-26CPF5HS.js → effect-GGH3OSOT.js} +4 -4
  17. package/dist/embed/index.js +2 -2
  18. package/dist/{export-DH2HMACO.js → export-QVW474KM.js} +3 -3
  19. package/dist/index.d.ts +42 -2
  20. package/dist/index.js +18 -4
  21. package/dist/index.js.map +1 -1
  22. package/dist/node.js +3 -3
  23. package/dist/react/index.js +2 -2
  24. package/dist/svelte/index.js +2 -2
  25. package/package.json +1 -1
  26. package/dist/chunk-GTIAOYOK.js.map +0 -1
  27. package/dist/chunk-O44ZJTGG.js.map +0 -1
  28. package/dist/chunk-WAMA45G3.js.map +0 -1
  29. /package/dist/{chunk-OKYMKSXK.js.map → chunk-G2B5L234.js.map} +0 -0
  30. /package/dist/{chunk-S2RGHHKZ.js.map → chunk-UCZ43ARE.js.map} +0 -0
  31. /package/dist/{effect-26CPF5HS.js.map → effect-GGH3OSOT.js.map} +0 -0
  32. /package/dist/{export-DH2HMACO.js.map → export-QVW474KM.js.map} +0 -0
@@ -11,7 +11,7 @@ import {
11
11
  getEffect,
12
12
  renderVectorEffect,
13
13
  textImage
14
- } from "./chunk-PYDN5G2P.js";
14
+ } from "./chunk-HVXWNGTW.js";
15
15
  import {
16
16
  parseColor
17
17
  } from "./chunk-VYOMXE6I.js";
@@ -899,4 +899,4 @@ export {
899
899
  subjectValues,
900
900
  mountEffect
901
901
  };
902
- //# sourceMappingURL=chunk-S2RGHHKZ.js.map
902
+ //# sourceMappingURL=chunk-UCZ43ARE.js.map
package/dist/cli.js CHANGED
@@ -3,10 +3,10 @@ import {
3
3
  standaloneHtml,
4
4
  standaloneSceneHtml,
5
5
  validateScene
6
- } from "./chunk-O44ZJTGG.js";
6
+ } from "./chunk-CK6EV37I.js";
7
7
  import {
8
8
  simulateScene
9
- } from "./chunk-WAMA45G3.js";
9
+ } from "./chunk-5USSDEQL.js";
10
10
  import "./chunk-DBTLCXKY.js";
11
11
  import "./chunk-H6VDFBIO.js";
12
12
  import "./chunk-RDU63CDO.js";
@@ -94,7 +94,7 @@ program.command("export <targetOrShader> [extraPath] [outputPath]").description(
94
94
  }
95
95
  try {
96
96
  const scene = JSON.parse(fs.readFileSync(fullPath2, "utf-8"));
97
- const { exportMotn, exportLottie, exportFcp7Xml, exportCmx3600Edl } = await import("./export-DH2HMACO.js");
97
+ const { exportMotn, exportLottie, exportFcp7Xml, exportCmx3600Edl } = await import("./export-QVW474KM.js");
98
98
  const fps2 = parseInt(options.fps, 10);
99
99
  let content;
100
100
  let ext;
@@ -183,7 +183,7 @@ var collect = (value, previous) => [...previous, value];
183
183
  program.command("effects").description("List catalog effects with what they take (image, video, svg, text, mask, path) and how they answer the pointer").option("--accepts <inputs>", "Only effects that take all of these (image, video, svg, text, mask, path; comma-separated or repeated)", collect, []).option("--interaction <ways>", "Only effects that answer the pointer in one of these ways (hover, press, click, trail, pointer)", collect, []).option("--category <category>", "Only this category").option("--kind <kind>", "shader or vector").option("--search <words>", "Words to look for in the id, name, description and tags").option("--json", "Output JSON (id, name, kind, category, description, inputs, presets)", false).action(async (options) => {
184
184
  try {
185
185
  const { findEffects, effectInputs } = await import("./catalog/index.js");
186
- const { effectQueryFromFlags, describeEffect } = await import("./effect-26CPF5HS.js");
186
+ const { effectQueryFromFlags, describeEffect } = await import("./effect-GGH3OSOT.js");
187
187
  const effects = findEffects(effectQueryFromFlags(options));
188
188
  if (options.json) {
189
189
  console.log(JSON.stringify(effects.map((e) => ({ id: e.id, name: e.name, kind: e.kind, category: e.category, description: e.description, inputs: effectInputs(e), presets: e.presets?.map((p) => p.name) ?? [] })), null, 2));
@@ -204,7 +204,7 @@ ${effects.length} effect${effects.length === 1 ? "" : "s"}. Render one with: fla
204
204
  program.command("render <effect>").description("Render a catalog effect, applied to a subject, to .mp4, .webm, .mov, .gif, .svg (vector effects) or .png frames").option("--image <path>", "A picture (file path or URL); repeat for effects that take two", collect, []).option("--svg <path>", "An SVG (file path, URL or markup)", collect, []).option("--text <text>", "Words, for a text effect or a text mask", collect, []).option("--font <family>", "CSS font family for --text drawn into a shader").option("--weight <weight>", "Font weight for --text drawn into a shader").option("--path <d>", "SVG path data, for a shape control", collect, []).option("--video <path>", "A video file, decoded to frames with ffmpeg", collect, []).option("--preset <name>", "A preset by name").option("--set <name=value>", "A control value (repeatable): --set uSpeed=2 --set uTint=#ff0080", collect, []).option("--size <WxH>", "Pixels, like 1280x720").option("--fps <fps>", "Frames per second", "30").option("--duration <seconds>", "Seconds (default: the effect's loop or play-through)").option("--alpha", "Keep transparency (webm, mov, gif, png, svg)", false).option("--background <css>", "Colour under transparent pixels without --alpha").option("--no-pointer", "Leave the pointer still (interactive effects otherwise get a scripted pointer)").option("-o, --out <outputPath>", "Output: .mp4, .webm, .mov, .gif, .svg, a .png pattern (out_%04d.png) or a folder").action(async (effectId, options) => {
205
205
  try {
206
206
  if (!options.out) throw new Error("Say where to write it: -o out.mp4 (or .webm, .mov, .gif, .svg, out_%04d.png, a folder/).");
207
- const { exportEffect, parseSets, parseSize, resolveEffect, subjectsFromFlags } = await import("./effect-26CPF5HS.js");
207
+ const { exportEffect, parseSets, parseSize, resolveEffect, subjectsFromFlags } = await import("./effect-GGH3OSOT.js");
208
208
  const effect = resolveEffect(effectId);
209
209
  const subjects = subjectsFromFlags(options);
210
210
  const size = options.size ? parseSize(options.size) : void 0;
@@ -308,7 +308,7 @@ sceneCmd.command("motn <sceneFile> [outFile]").description("Export scene to Appl
308
308
  }
309
309
  try {
310
310
  const scene = JSON.parse(fs.readFileSync(fullPath, "utf-8"));
311
- const { exportMotn } = await import("./export-DH2HMACO.js");
311
+ const { exportMotn } = await import("./export-QVW474KM.js");
312
312
  const xml = exportMotn(scene, { frameRate: parseInt(options.fps, 10) });
313
313
  const destination = path.resolve(
314
314
  process.cwd(),
@@ -330,7 +330,7 @@ sceneCmd.command("lottie <sceneFile> [outFile]").description("Export scene vecto
330
330
  }
331
331
  try {
332
332
  const scene = JSON.parse(fs.readFileSync(fullPath, "utf-8"));
333
- const { exportLottie } = await import("./export-DH2HMACO.js");
333
+ const { exportLottie } = await import("./export-QVW474KM.js");
334
334
  const animation = exportLottie(scene, { frameRate: parseInt(options.fps, 10) });
335
335
  const destination = path.resolve(
336
336
  process.cwd(),
@@ -352,7 +352,7 @@ sceneCmd.command("fcp7 <sceneFile> [outFile]").description("Export scene timelin
352
352
  }
353
353
  try {
354
354
  const scene = JSON.parse(fs.readFileSync(fullPath, "utf-8"));
355
- const { exportFcp7Xml } = await import("./export-DH2HMACO.js");
355
+ const { exportFcp7Xml } = await import("./export-QVW474KM.js");
356
356
  const xml = exportFcp7Xml(scene, { frameRate: parseInt(options.fps, 10) });
357
357
  const destination = path.resolve(
358
358
  process.cwd(),
@@ -374,7 +374,7 @@ sceneCmd.command("edl <sceneFile> [outFile]").description("Export scene edit dec
374
374
  }
375
375
  try {
376
376
  const scene = JSON.parse(fs.readFileSync(fullPath, "utf-8"));
377
- const { exportCmx3600Edl } = await import("./export-DH2HMACO.js");
377
+ const { exportCmx3600Edl } = await import("./export-QVW474KM.js");
378
378
  const edl = exportCmx3600Edl(scene, {
379
379
  frameRate: parseInt(options.fps, 10),
380
380
  reel: options.reel
@@ -15,7 +15,7 @@ import {
15
15
  renderVectorEffect,
16
16
  vectorControlIssues,
17
17
  vectorEffectControls
18
- } from "../chunk-PYDN5G2P.js";
18
+ } from "../chunk-HVXWNGTW.js";
19
19
  import "../chunk-EHDJ3CPJ.js";
20
20
  import {
21
21
  checkControlValue,
@@ -14,14 +14,14 @@ import {
14
14
  subjectsFromFlags,
15
15
  vectorTimeline,
16
16
  videoSeconds
17
- } from "./chunk-OKYMKSXK.js";
17
+ } from "./chunk-G2B5L234.js";
18
18
  import "./chunk-JL6TI6II.js";
19
19
  import "./chunk-YBGRXVAE.js";
20
20
  import "./chunk-STKEKXCK.js";
21
- import "./chunk-S2RGHHKZ.js";
21
+ import "./chunk-UCZ43ARE.js";
22
22
  import "./chunk-H6VDFBIO.js";
23
23
  import "./chunk-RDU63CDO.js";
24
- import "./chunk-PYDN5G2P.js";
24
+ import "./chunk-HVXWNGTW.js";
25
25
  import "./chunk-EHDJ3CPJ.js";
26
26
  import "./chunk-VYOMXE6I.js";
27
27
  import "./chunk-PFGGPIMT.js";
@@ -44,4 +44,4 @@ export {
44
44
  vectorTimeline,
45
45
  videoSeconds
46
46
  };
47
- //# sourceMappingURL=effect-26CPF5HS.js.map
47
+ //# sourceMappingURL=effect-GGH3OSOT.js.map
@@ -3,10 +3,10 @@ import {
3
3
  recordEffect,
4
4
  recordingPlan,
5
5
  subjectValues
6
- } from "../chunk-S2RGHHKZ.js";
6
+ } from "../chunk-UCZ43ARE.js";
7
7
  import "../chunk-H6VDFBIO.js";
8
8
  import "../chunk-RDU63CDO.js";
9
- import "../chunk-PYDN5G2P.js";
9
+ import "../chunk-HVXWNGTW.js";
10
10
  import "../chunk-EHDJ3CPJ.js";
11
11
  import "../chunk-VYOMXE6I.js";
12
12
  import "../chunk-PFGGPIMT.js";
@@ -7,8 +7,8 @@ import {
7
7
  exportMotn,
8
8
  framesToTimecode,
9
9
  timecodeToFrames
10
- } from "./chunk-GTIAOYOK.js";
11
- import "./chunk-WAMA45G3.js";
10
+ } from "./chunk-74ZLCZOG.js";
11
+ import "./chunk-5USSDEQL.js";
12
12
  import "./chunk-WMZQCUFJ.js";
13
13
  export {
14
14
  calculateShotTimings,
@@ -20,4 +20,4 @@ export {
20
20
  framesToTimecode,
21
21
  timecodeToFrames
22
22
  };
23
- //# sourceMappingURL=export-DH2HMACO.js.map
23
+ //# sourceMappingURL=export-QVW474KM.js.map
package/dist/index.d.ts CHANGED
@@ -702,6 +702,32 @@ declare function motionBlur(from: View, to: View, stage: Stage, strength: number
702
702
  declare function motionBlurAngle(from: View, to: View, stage: Stage): number | undefined;
703
703
  /** The blur fields of a step of a camera move with this strength: `{ blur, blurAngle }`, or nothing when still. */
704
704
  declare function moveBlur(from: View, to: View, stage: Stage, strength: number): Pick<View, 'blur' | 'blurAngle'>;
705
+ /**
706
+ * How the camera gets into a shot (`ShotCamera.transition`):
707
+ * - `move` (the default) eases from the last framing to the new one.
708
+ * - `whip` whips off the last framing toward the new one in a streak of
709
+ * motion blur and whips in onto it, cutting at the blurriest moment.
710
+ * - `zoom` punches into the last framing, blurring every way, and settles
711
+ * out of a punched-in new one, cutting halfway.
712
+ * - `cut` jumps straight to the new framing, taking no time.
713
+ */
714
+ type CameraTransition = 'move' | 'whip' | 'zoom' | 'cut';
715
+ declare const CAMERA_TRANSITIONS: readonly CameraTransition[];
716
+ /** The motion blur a whip or zoom uses when the shot does not set `motionBlur`. */
717
+ declare const TRANSITION_BLUR = 2;
718
+ /** The blur strength a transition plays with: the shot's `motionBlur`, or {@link TRANSITION_BLUR} for a whip or zoom without one. */
719
+ declare function transitionStrength(kind: CameraTransition, motionBlur: number | undefined): number;
720
+ /** The steps a camera move is played in; its blur is measured over one. */
721
+ declare const CAMERA_STEPS = 15;
722
+ /**
723
+ * The camera `u` (0 to 1) of the way through a transition from one view to
724
+ * another (see {@link CameraTransition}), with its motion blur measured over
725
+ * the step before (1/{@link CAMERA_STEPS} of the move). `strength` is the
726
+ * blur (`ShotCamera.motionBlur`; see {@link transitionStrength}) and, for a
727
+ * zoom, how far it punches in: to (1 + strength) × at the cut. Settled on
728
+ * `to`, with no blur, from `u` = 1 (and at once for a cut).
729
+ */
730
+ declare function transitionView(kind: CameraTransition, from: View, to: View, u: number, stage: Stage, strength: number): View;
705
731
  /** The part of the scene the camera currently shows. */
706
732
  declare function visibleRect(view: View, stage: Stage): Rect;
707
733
  /** Smooth cubic ease in / ease out. */
@@ -986,6 +1012,14 @@ interface CameraLens extends CameraAngle {
986
1012
  * speed, so it peaks mid-move and is gone when the camera settles.
987
1013
  */
988
1014
  motionBlur?: number;
1015
+ /**
1016
+ * How the camera gets into this shot: `move` (the default) eases across,
1017
+ * `whip` whip-pans off the last framing and onto this one, `zoom` punches
1018
+ * in and cuts to this one settling out, and `cut` jumps straight here
1019
+ * (see `CameraTransition`). A whip or zoom blurs at `motionBlur` 2 unless
1020
+ * the shot sets one; a zoom punches in to (1 + motionBlur) ×.
1021
+ */
1022
+ transition?: CameraTransition;
989
1023
  }
990
1024
  /**
991
1025
  * Where the camera goes for a shot: a framing box, a dynamic framing, or
@@ -1039,11 +1073,15 @@ interface CameraShot {
1039
1073
  holdMs: number;
1040
1074
  from: View;
1041
1075
  to: View;
1042
- /** The shot's `camera.motionBlur` (0 for none). */
1076
+ /** How the camera gets into the shot (`camera.transition`, `move` by default). */
1077
+ transition: CameraTransition;
1078
+ /** The blur strength the move plays with: `camera.motionBlur`, or 2 for a whip or zoom without one (0 for none). */
1043
1079
  motionBlur: number;
1044
1080
  /** The elements on stage once the shot's commands have run. */
1045
1081
  elements: SceneElement[];
1046
1082
  }
1083
+ /** How long the camera moves at the start of a shot, in ms: none for the first shot, a shot without a camera, or a cut. */
1084
+ declare function shotMoveMs(shot: Shot, index: number): number;
1047
1085
  /** The scene's stage with defaults filled in. */
1048
1086
  declare function sceneStage(scene: Scene): Stage;
1049
1087
  /**
@@ -1059,6 +1097,8 @@ declare const CAMERA_STEP_MS: number;
1059
1097
  * motion blur) or settled.
1060
1098
  */
1061
1099
  declare function cameraAt(entry: CameraShot, ms: number, stage: Stage): View;
1100
+ /** Whether the shot's move jumps from one framing to the other halfway (a whip or zoom). */
1101
+ declare const cutsHalfway: (entry: CameraShot) => boolean;
1062
1102
  /** The camera at one frame of a scene's timeline. */
1063
1103
  interface CameraSample {
1064
1104
  frame: number;
@@ -1569,4 +1609,4 @@ declare function exportFcp7Xml(scene: Scene, options?: Fcp7ExportOptions): strin
1569
1609
  */
1570
1610
  declare function exportCmx3600Edl(scene: Scene, options?: EdlExportOptions): string;
1571
1611
 
1572
- export { ALL_BLEND_MODES, ALL_TRANSITION_TYPES, type AgentToolDefinition, type AscCdl, type BatchCommand, type BatchExecutionResult, type BatchExecutionStepResult, type Behavior, type BehaviorBase, type BlendMode, type BlockDissolveOptions, type BlurEffect, type BurstEffect, CAMERA_MS, CAMERA_STEP_MS, COMMON_FRAME_RATES, type CameraAngle, type CameraLens, type CameraSample, type CameraShot, type ClearCommand, Clock, type ColorRGB, type ColorRGBA, type ColorRgba, type ColorSpace, ControlValue, type CounterEffect, type CrossZoomOptions, type CustomCommand, DEFAULT_PERSPECTIVE, DEFAULT_STAGE, type DeleteCommand, type DynamicFraming, EASY_EASE, EFFECT_FADE_MS, EFFECT_TYPES, type EasingCurve, type EdlExportOptions, type Effect, type EffectBase, type ElementCommand, FLAIR_AGENT_TOOLS, type Fcp7ExportOptions, type FlowEffect, type FramingOptions, type GifOptions, type GlassWipeOptions, type GlowEffect, type GradientEffect, type GridWipeOptions, type HighlightEffect, type KeyframeEase, type LiftGammaGain, type LightLeakOptions, type LinearWipeOptions, type LottieAnimatable, type LottieAnimation, type LottieExportOptions, type LottieKeyframe, type LottieLayer, type LottieShapeItem, type LottieTransform, MAX_TILT, type MediaEffect, MemorySceneBoard, type MotnExportOptions, NO_CHECK, type OscillateBehavior, type OvershootBehavior, type PathWaypoint, type PlayOptions, type PlayResult, type Point, type PopupWidget, type RadialIrisOptions, type RampBehavior, type RateBehavior, type RationalFrameRate, type Rect, type ReplicatorConfig, type ReplicatorPattern, type ReplicatorSequence, type Review, type ReviewOptions, type RigWidget, type RippleEffect, type RunningEffect, SMALL_TEXT_PX, type SMPTEFields, type Scene, type SceneBoard, type SceneCommand, type SceneElement, type SceneIssue, type SceneMedia, type SceneOutline, type SceneOutlineShot, type SceneRig, type SceneToolResult, type ShimmerEffect, type Shot, type ShotCamera, type ShotCheck, type ShotLog, type ShotTiming, type SliderSnapshot, type SliderWidget, type SpatialMotionPath, type SpatialPathSample, type SpotlightEffect, type Stage, type StandaloneOptions, type StandardFrameRateKey, type ThrowBehavior, type ThumbnailHandle, ThumbnailPool, type ThumbnailPoolOptions, type TimerEffect, type ToggleWidget, type TransitionOptions, type TransitionSample, type TransitionType, type TwisterOptions, type UpdateCommand, type Vec2, type Vec3, type View, type WriggleBehavior, applyAscCdl, applyLiftGammaGain, applyRig, applySceneBatch, applySceneTool, applyVibrance, areaOf, between, bez1d, bez1dDerivative, blendRgba, blendTransitionPixel, boardHeight, boundsOf, calculateFramingRect, calculateShotTimings, cameraAngle, cameraAt, cameraBlur, cameraFilter, cameraSamples, cameraTrack, cameraTransform, centreOf, checkShot, convertColorSpace, createFrameRate, createLottieEase, createMotionPath, easeInOutCubic, easeProgress, effectGone, effectOpacity, evaluateBehavior, evaluateKeyframeSegment, expandReplicator, exportCmx3600Edl, exportFcp7Xml, exportLottie, exportMotn, formatTimecode, fractalWiggle, frame, framesToSMPTE, framesToTimecode, getColorGradingGLSL, getDropFrameCount, getGlslBlendFunction, getOklabGLSL, getTimecodeBase, getTransitionGLSL, getWhiteBalanceGains, hash64, holdTime, interpolateOklab, interpolateOklch, isAngled, isDeleteCommand, isElementCommand, isUpdateCommand, linearRgbToSrgb, linearSrgbToOklab, linearToSrgb, loopTime, mixSeeds, motionBlur, motionBlurAngle, moveBlur, noise1d, noise3d, oklabToLinearSrgb, oklabToOklch, oklabToSrgb, oklchToOklab, overlapArea, parseTimecode, pingPongTime, playScene, projectPoint, quinticFade, recordGif, registerThumbnail, reviewScene, sampleMotionPath, sampleMotionPathAtTime, sampleTransition, sceneStage, screenBox, setRigWidget, sharedThumbnailPool, shotView, simulateScene, smpteToFrames, solveBezierU, speedRampTime, srgbToLinear, srgbToLinearRgb, srgbToOklab, standaloneHtml, standaloneSceneHtml, strobeTime, substituteVariables, supportsDropFrame, timecodeToFrames, titleBox, touchedIds, unitFloat, validateScene, viewAt, visibleRect };
1612
+ export { ALL_BLEND_MODES, ALL_TRANSITION_TYPES, type AgentToolDefinition, type AscCdl, type BatchCommand, type BatchExecutionResult, type BatchExecutionStepResult, type Behavior, type BehaviorBase, type BlendMode, type BlockDissolveOptions, type BlurEffect, type BurstEffect, CAMERA_MS, CAMERA_STEPS, CAMERA_STEP_MS, CAMERA_TRANSITIONS, COMMON_FRAME_RATES, type CameraAngle, type CameraLens, type CameraSample, type CameraShot, type CameraTransition, type ClearCommand, Clock, type ColorRGB, type ColorRGBA, type ColorRgba, type ColorSpace, ControlValue, type CounterEffect, type CrossZoomOptions, type CustomCommand, DEFAULT_PERSPECTIVE, DEFAULT_STAGE, type DeleteCommand, type DynamicFraming, EASY_EASE, EFFECT_FADE_MS, EFFECT_TYPES, type EasingCurve, type EdlExportOptions, type Effect, type EffectBase, type ElementCommand, FLAIR_AGENT_TOOLS, type Fcp7ExportOptions, type FlowEffect, type FramingOptions, type GifOptions, type GlassWipeOptions, type GlowEffect, type GradientEffect, type GridWipeOptions, type HighlightEffect, type KeyframeEase, type LiftGammaGain, type LightLeakOptions, type LinearWipeOptions, type LottieAnimatable, type LottieAnimation, type LottieExportOptions, type LottieKeyframe, type LottieLayer, type LottieShapeItem, type LottieTransform, MAX_TILT, type MediaEffect, MemorySceneBoard, type MotnExportOptions, NO_CHECK, type OscillateBehavior, type OvershootBehavior, type PathWaypoint, type PlayOptions, type PlayResult, type Point, type PopupWidget, type RadialIrisOptions, type RampBehavior, type RateBehavior, type RationalFrameRate, type Rect, type ReplicatorConfig, type ReplicatorPattern, type ReplicatorSequence, type Review, type ReviewOptions, type RigWidget, type RippleEffect, type RunningEffect, SMALL_TEXT_PX, type SMPTEFields, type Scene, type SceneBoard, type SceneCommand, type SceneElement, type SceneIssue, type SceneMedia, type SceneOutline, type SceneOutlineShot, type SceneRig, type SceneToolResult, type ShimmerEffect, type Shot, type ShotCamera, type ShotCheck, type ShotLog, type ShotTiming, type SliderSnapshot, type SliderWidget, type SpatialMotionPath, type SpatialPathSample, type SpotlightEffect, type Stage, type StandaloneOptions, type StandardFrameRateKey, TRANSITION_BLUR, type ThrowBehavior, type ThumbnailHandle, ThumbnailPool, type ThumbnailPoolOptions, type TimerEffect, type ToggleWidget, type TransitionOptions, type TransitionSample, type TransitionType, type TwisterOptions, type UpdateCommand, type Vec2, type Vec3, type View, type WriggleBehavior, applyAscCdl, applyLiftGammaGain, applyRig, applySceneBatch, applySceneTool, applyVibrance, areaOf, between, bez1d, bez1dDerivative, blendRgba, blendTransitionPixel, boardHeight, boundsOf, calculateFramingRect, calculateShotTimings, cameraAngle, cameraAt, cameraBlur, cameraFilter, cameraSamples, cameraTrack, cameraTransform, centreOf, checkShot, convertColorSpace, createFrameRate, createLottieEase, createMotionPath, cutsHalfway, easeInOutCubic, easeProgress, effectGone, effectOpacity, evaluateBehavior, evaluateKeyframeSegment, expandReplicator, exportCmx3600Edl, exportFcp7Xml, exportLottie, exportMotn, formatTimecode, fractalWiggle, frame, framesToSMPTE, framesToTimecode, getColorGradingGLSL, getDropFrameCount, getGlslBlendFunction, getOklabGLSL, getTimecodeBase, getTransitionGLSL, getWhiteBalanceGains, hash64, holdTime, interpolateOklab, interpolateOklch, isAngled, isDeleteCommand, isElementCommand, isUpdateCommand, linearRgbToSrgb, linearSrgbToOklab, linearToSrgb, loopTime, mixSeeds, motionBlur, motionBlurAngle, moveBlur, noise1d, noise3d, oklabToLinearSrgb, oklabToOklch, oklabToSrgb, oklchToOklab, overlapArea, parseTimecode, pingPongTime, playScene, projectPoint, quinticFade, recordGif, registerThumbnail, reviewScene, sampleMotionPath, sampleMotionPathAtTime, sampleTransition, sceneStage, screenBox, setRigWidget, sharedThumbnailPool, shotMoveMs, shotView, simulateScene, smpteToFrames, solveBezierU, speedRampTime, srgbToLinear, srgbToLinearRgb, srgbToOklab, standaloneHtml, standaloneSceneHtml, strobeTime, substituteVariables, supportsDropFrame, timecodeToFrames, titleBox, touchedIds, transitionStrength, transitionView, unitFloat, validateScene, viewAt, visibleRect };
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  standaloneHtml,
10
10
  standaloneSceneHtml,
11
11
  validateScene
12
- } from "./chunk-O44ZJTGG.js";
12
+ } from "./chunk-CK6EV37I.js";
13
13
  import {
14
14
  calculateShotTimings,
15
15
  createLottieEase,
@@ -19,10 +19,12 @@ import {
19
19
  exportMotn,
20
20
  framesToTimecode,
21
21
  timecodeToFrames
22
- } from "./chunk-GTIAOYOK.js";
22
+ } from "./chunk-74ZLCZOG.js";
23
23
  import {
24
24
  CAMERA_MS,
25
+ CAMERA_STEPS,
25
26
  CAMERA_STEP_MS,
27
+ CAMERA_TRANSITIONS,
26
28
  DEFAULT_PERSPECTIVE,
27
29
  DEFAULT_STAGE,
28
30
  EFFECT_FADE_MS,
@@ -31,6 +33,7 @@ import {
31
33
  MemorySceneBoard,
32
34
  NO_CHECK,
33
35
  SMALL_TEXT_PX,
36
+ TRANSITION_BLUR,
34
37
  areaOf,
35
38
  between,
36
39
  boardHeight,
@@ -45,6 +48,7 @@ import {
45
48
  cameraTransform,
46
49
  centreOf,
47
50
  checkShot,
51
+ cutsHalfway,
48
52
  easeInOutCubic,
49
53
  effectGone,
50
54
  effectOpacity,
@@ -69,14 +73,17 @@ import {
69
73
  reviewScene,
70
74
  sceneStage,
71
75
  screenBox,
76
+ shotMoveMs,
72
77
  shotView,
73
78
  simulateScene,
74
79
  titleBox,
75
80
  touchedIds,
81
+ transitionStrength,
82
+ transitionView,
76
83
  unitFloat,
77
84
  viewAt,
78
85
  visibleRect
79
- } from "./chunk-WAMA45G3.js";
86
+ } from "./chunk-5USSDEQL.js";
80
87
  import {
81
88
  applyAscCdl,
82
89
  applyLiftGammaGain,
@@ -874,7 +881,7 @@ var FLAIR_AGENT_TOOLS = [
874
881
  properties: {
875
882
  scene: {
876
883
  type: "object",
877
- description: "Full Scene object with name, stage, media, and shots. A shot camera frames a box {x, y, width, height} or elements {frame: [ids]}, and may add tilt, turn, roll (degrees, tilt/turn up to 75), perspective (default 1.2) and motionBlur (0-3, 1 natural); angles persist until changed."
884
+ description: 'Full Scene object with name, stage, media, and shots. A shot camera frames a box {x, y, width, height} or elements {frame: [ids]}, and may add tilt, turn, roll (degrees, tilt/turn up to 75), perspective (default 1.2), motionBlur (0-3, 1 natural) and transition ("move" eases across, the default; "whip" whip-pans in; "zoom" punches through; "cut" jumps); angles persist until changed.'
878
885
  }
879
886
  },
880
887
  required: ["scene"],
@@ -1184,7 +1191,9 @@ export {
1184
1191
  ALL_TRANSITION_TYPES,
1185
1192
  BUILTIN_UNIFORMS,
1186
1193
  CAMERA_MS,
1194
+ CAMERA_STEPS,
1187
1195
  CAMERA_STEP_MS,
1196
+ CAMERA_TRANSITIONS,
1188
1197
  COMMON_FRAME_RATES,
1189
1198
  DEFAULT_PERSPECTIVE,
1190
1199
  DEFAULT_STAGE,
@@ -1212,6 +1221,7 @@ export {
1212
1221
  ShaderRenderer,
1213
1222
  SvgPlayer,
1214
1223
  TRAIL_SECONDS,
1224
+ TRANSITION_BLUR,
1215
1225
  TextureCache,
1216
1226
  ThumbnailPool,
1217
1227
  VERTEX_SOURCE,
@@ -1254,6 +1264,7 @@ export {
1254
1264
  createFrameRate,
1255
1265
  createLottieEase,
1256
1266
  createMotionPath,
1267
+ cutsHalfway,
1257
1268
  defaultDataKey,
1258
1269
  describeValue,
1259
1270
  drawFrame,
@@ -1346,6 +1357,7 @@ export {
1346
1357
  seekVideo,
1347
1358
  setRigWidget,
1348
1359
  sharedThumbnailPool,
1360
+ shotMoveMs,
1349
1361
  shotView,
1350
1362
  simulateScene,
1351
1363
  sizeSvg,
@@ -1377,6 +1389,8 @@ export {
1377
1389
  titleBox,
1378
1390
  touchedIds,
1379
1391
  trailUniform,
1392
+ transitionStrength,
1393
+ transitionView,
1380
1394
  unitFloat,
1381
1395
  validateScene,
1382
1396
  viewAt,