@cliquify.me/transitions 0.11.18 → 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.
- package/LICENSE +46 -0
- package/dist/index.es.js +239 -244
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +2 -2
- package/dist/index.umd.js.map +1 -1
- package/package.json +10 -10
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/timings/linear-timing.ts","../src/timings/spring-timing.ts","../../../node_modules/.pnpm/remotion@4.0.506_react-dom@19.2.8_react@19.2.8/node_modules/remotion/dist/esm/no-react.mjs","../src/context.tsx","../src/flatten-children.ts","../src/presentations/slide.tsx","../src/validate.ts","../src/transition-series.tsx","../src/use-transition-progress.ts","../src/presentations/circle.tsx","../src/presentations/rectangle.tsx","../src/presentations/star.tsx","../src/presentations/sliding-doors.tsx","../../../node_modules/.pnpm/@remotion+transitions@4.0.506_react-dom@19.2.8_react@19.2.8/node_modules/@remotion/transitions/dist/esm/fade.mjs","../../../node_modules/.pnpm/@remotion+transitions@4.0.506_react-dom@19.2.8_react@19.2.8/node_modules/@remotion/transitions/dist/esm/slide.mjs","../../../node_modules/.pnpm/@remotion+transitions@4.0.506_react-dom@19.2.8_react@19.2.8/node_modules/@remotion/transitions/dist/esm/wipe.mjs","../../../node_modules/.pnpm/@remotion+transitions@4.0.506_react-dom@19.2.8_react@19.2.8/node_modules/@remotion/transitions/dist/esm/flip.mjs","../../../node_modules/.pnpm/@remotion+transitions@4.0.506_react-dom@19.2.8_react@19.2.8/node_modules/@remotion/transitions/dist/esm/clock-wipe.mjs","../src/transition-presentations.tsx"],"sourcesContent":["import { interpolate } from \"remotion\";\nimport type { TransitionTiming } from \"../types\";\n\n/**\n * Creates a linear timing object for managing animations in frame units.\n * @description Provides a mechanism to handle frame-based transitions linearly, optionally incorporating easing functions.\n * @see [Documentation](https://remotion.dev/docs/transitions/timings/lineartiming)\n * @param {Object} fieldsToFetch Configuration options for the linear timing\n * @param {number} fieldsToFetch.durationInFrames Specifies the total duration of the transition in frames\n * @param {((input: number) => number)=} fieldsToFetch.easing Optional easing function to modify the interpolation of values\n * @returns {TransitionTiming} An object representing the timing of the transition, including methods to get duration and progress\n */\nexport const linearTiming = (options: {\n durationInFrames: number;\n easing?: ((input: number) => number) | undefined;\n}): TransitionTiming => {\n return {\n getDurationInFrames: () => {\n return options.durationInFrames;\n },\n getProgress: ({ frame }) => {\n return interpolate(frame, [0, options.durationInFrames], [0, 1], {\n easing: options.easing,\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\"\n });\n }\n };\n};\n","import type { SpringConfig } from \"remotion\";\nimport { measureSpring, spring } from \"remotion\";\nimport type { TransitionTiming } from \"../types\";\n\nexport const springTiming = (\n options: {\n config?: Partial<SpringConfig>;\n durationInFrames?: number;\n durationRestThreshold?: number;\n reverse?: boolean;\n } = {}\n): TransitionTiming => {\n return {\n getDurationInFrames: ({ fps }) => {\n if (options.durationInFrames) {\n return options.durationInFrames;\n }\n\n return measureSpring({\n config: options.config,\n threshold: options.durationRestThreshold,\n fps\n });\n },\n getProgress: ({ fps, frame }) => {\n const to = options.reverse ? 0 : 1;\n const from = options.reverse ? 1 : 0;\n return spring({\n fps,\n frame,\n to,\n from,\n config: options.config,\n durationInFrames: options.durationInFrames,\n durationRestThreshold: options.durationRestThreshold,\n reverse: options.reverse\n });\n }\n };\n};\n","// src/normalize-number.ts\nvar normalizeNumber = (value) => {\n return Math.round(value * 1e6) / 1e6;\n};\n\n// src/interpolate.ts\nvar angleUnits = new Set([\"deg\", \"rad\", \"grad\", \"turn\"]);\nvar lengthUnits = new Set([\n \"%\",\n \"cap\",\n \"ch\",\n \"cm\",\n \"cqb\",\n \"cqh\",\n \"cqi\",\n \"cqmax\",\n \"cqmin\",\n \"cqw\",\n \"dvh\",\n \"dvw\",\n \"em\",\n \"ex\",\n \"ic\",\n \"in\",\n \"lh\",\n \"lvh\",\n \"lvw\",\n \"mm\",\n \"pc\",\n \"pt\",\n \"px\",\n \"q\",\n \"rem\",\n \"rlh\",\n \"svh\",\n \"svw\",\n \"vb\",\n \"vh\",\n \"vi\",\n \"vmax\",\n \"vmin\",\n \"vw\"\n]);\nvar cssNumberRegex = /^([+-]?(?:\\d+\\.?\\d*|\\.\\d+))([a-zA-Z%]+)?$/;\nvar transformOriginKeywords = new Set([\n \"left\",\n \"center\",\n \"right\",\n \"top\",\n \"bottom\"\n]);\nvar transformOriginKeywordOptions = (keyword) => {\n if (keyword === \"left\") {\n return [{ axis: \"x\", value: { value: 0, unit: \"%\" } }];\n }\n if (keyword === \"right\") {\n return [{ axis: \"x\", value: { value: 100, unit: \"%\" } }];\n }\n if (keyword === \"top\") {\n return [{ axis: \"y\", value: { value: 0, unit: \"%\" } }];\n }\n if (keyword === \"bottom\") {\n return [{ axis: \"y\", value: { value: 100, unit: \"%\" } }];\n }\n return [\n { axis: \"x\", value: { value: 50, unit: \"%\" } },\n { axis: \"y\", value: { value: 50, unit: \"%\" } }\n ];\n};\nvar transformOriginCenter = { value: 50, unit: \"%\" };\nvar stringifyNumber = (value) => {\n return String(normalizeNumber(value));\n};\nvar parseStringInterpolationComponent = (component, value) => {\n const match = cssNumberRegex.exec(component);\n if (match === null) {\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${component}\" is not a supported scale, translate, or rotate value`);\n }\n const unit = match[2] ?? null;\n const numberValue = Number(match[1]);\n if (!Number.isFinite(numberValue)) {\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${component}\" is not finite`);\n }\n if (unit === null) {\n return { kind: \"scale\", value: numberValue, unit: null };\n }\n if (angleUnits.has(unit)) {\n return { kind: \"rotate\", value: numberValue, unit };\n }\n if (lengthUnits.has(unit)) {\n return { kind: \"translate\", value: numberValue, unit };\n }\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${unit}\" is not a supported translate or rotate unit`);\n};\nvar parseTransformOriginLengthPercentage = ({\n component,\n value,\n allowPercentage\n}) => {\n const match = cssNumberRegex.exec(component);\n if (match === null) {\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${component}\" is not a supported transform-origin ${allowPercentage ? \"length-percentage\" : \"z length\"}`);\n }\n const unit = match[2] ?? null;\n const numberValue = Number(match[1]);\n if (!Number.isFinite(numberValue)) {\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${component}\" is not finite`);\n }\n if (unit === null || !lengthUnits.has(unit) || !allowPercentage && unit === \"%\") {\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${component}\" is not a supported transform-origin ${allowPercentage ? \"length-percentage\" : \"z length\"}`);\n }\n return { value: numberValue, unit };\n};\nvar parseTransformOriginToken = (component, value) => {\n const lower = component.toLowerCase();\n if (transformOriginKeywords.has(lower)) {\n return { type: \"keyword\", keyword: lower };\n }\n return {\n type: \"length-percentage\",\n parsed: parseTransformOriginLengthPercentage({\n component,\n value,\n allowPercentage: true\n })\n };\n};\nvar parseTwoTransformOriginKeywords = (first, second, value) => {\n const candidates = [];\n for (const firstOption of transformOriginKeywordOptions(first)) {\n for (const secondOption of transformOriginKeywordOptions(second)) {\n if (firstOption.axis === secondOption.axis) {\n continue;\n }\n candidates.push(firstOption.axis === \"x\" ? [firstOption.value, secondOption.value] : [secondOption.value, firstOption.value]);\n }\n }\n if (candidates.length === 0) {\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${first} ${second}\" is not a valid transform-origin keyword pair`);\n }\n return candidates[0];\n};\nvar parseTransformOriginXY = (parts, value) => {\n if (parts.length === 1) {\n const token = parseTransformOriginToken(parts[0], value);\n if (token.type === \"length-percentage\") {\n return [token.parsed, transformOriginCenter];\n }\n if (token.keyword === \"top\" || token.keyword === \"bottom\") {\n return [\n transformOriginCenter,\n transformOriginKeywordOptions(token.keyword)[0].value\n ];\n }\n return [\n transformOriginKeywordOptions(token.keyword)[0].value,\n transformOriginCenter\n ];\n }\n const first = parseTransformOriginToken(parts[0], value);\n const second = parseTransformOriginToken(parts[1], value);\n if (first.type === \"length-percentage\" && second.type === \"length-percentage\") {\n return [first.parsed, second.parsed];\n }\n if (first.type === \"keyword\" && second.type === \"keyword\") {\n return parseTwoTransformOriginKeywords(first.keyword, second.keyword, value);\n }\n const keyword = first.type === \"keyword\" ? first : second.type === \"keyword\" ? second : null;\n const length = first.type === \"length-percentage\" ? first.parsed : second.type === \"length-percentage\" ? second.parsed : null;\n if (keyword === null || length === null) {\n throw new Error(\"Expected a keyword and a length-percentage value\");\n }\n const keywordIsFirst = first.type === \"keyword\";\n if (keyword.keyword === \"left\" || keyword.keyword === \"right\") {\n if (!keywordIsFirst) {\n throw new TypeError(`Cannot interpolate \"${value}\" because horizontal transform-origin keywords must come before a length-percentage value`);\n }\n return [transformOriginKeywordOptions(keyword.keyword)[0].value, length];\n }\n if (keyword.keyword === \"top\" || keyword.keyword === \"bottom\") {\n return [length, transformOriginKeywordOptions(keyword.keyword)[0].value];\n }\n return keywordIsFirst ? [transformOriginCenter, length] : [length, transformOriginCenter];\n};\nvar parseTransformOriginValue = (output, parts) => {\n const [x, y] = parseTransformOriginXY(parts.slice(0, 2), output);\n const z = parts[2] === undefined ? { value: 0, unit: null } : parseTransformOriginLengthPercentage({\n component: parts[2],\n value: output,\n allowPercentage: false\n });\n return {\n kind: \"translate\",\n values: [x.value, y.value, z.value],\n units: [x.unit, y.unit, z.unit],\n dimensions: parts[2] === undefined ? 2 : 3\n };\n};\nvar parseStringInterpolationValue = (output) => {\n if (typeof output === \"number\") {\n if (!Number.isFinite(output)) {\n throw new Error(`outputRange must contain only finite numbers, but got [${output}]`);\n }\n return {\n kind: \"scale\",\n values: [output, output, 1],\n units: [null, null, null],\n dimensions: 1\n };\n }\n const parts = output.trim().split(/\\s+/);\n if (parts.length < 1 || parts.length > 3 || parts[0] === \"\") {\n throw new TypeError(`String outputRange values must contain 1 to 3 components, but got \"${output}\"`);\n }\n if (parts.some((part) => transformOriginKeywords.has(part.toLowerCase()))) {\n return parseTransformOriginValue(output, parts);\n }\n const parsed = parts.map((part) => parseStringInterpolationComponent(part, output));\n const [{ kind }] = parsed;\n for (const part of parsed) {\n if (part.kind !== kind) {\n throw new TypeError(`Cannot interpolate \"${output}\" because it mixes ${kind} and ${part.kind} values`);\n }\n }\n if (kind === \"scale\") {\n const x = parsed[0].value;\n const y = parsed[1]?.value ?? x;\n const z = parsed[2]?.value ?? 1;\n return {\n kind,\n values: [x, y, z],\n units: [null, null, null],\n dimensions: parsed.length\n };\n }\n return {\n kind,\n values: [parsed[0].value, parsed[1]?.value ?? 0, parsed[2]?.value ?? 0],\n units: [parsed[0].unit, parsed[1]?.unit ?? null, parsed[2]?.unit ?? null],\n dimensions: parsed.length\n };\n};\nvar serializeStringInterpolationValue = ({\n kind,\n values,\n units,\n dimensions\n}) => {\n if (kind === \"scale\") {\n return values.slice(0, dimensions).map((value) => stringifyNumber(value)).join(\" \");\n }\n return values.slice(0, dimensions).map((value, index) => `${stringifyNumber(value)}${units[index]}`).join(\" \");\n};\nvar toSignedArea = (scale) => {\n if (scale === 0) {\n return 0;\n }\n return Math.sign(scale) * scale * scale;\n};\nvar fromSignedArea = (area) => {\n if (area === 0) {\n return 0;\n }\n return Math.sign(area) * Math.sqrt(Math.abs(area));\n};\nfunction interpolateFunction(input, inputRange, outputRange, options) {\n const { extrapolateLeft, extrapolateRight, easing, output } = options;\n let result = input;\n const [inputMin, inputMax] = inputRange;\n const [outputMin, outputMax] = outputRange;\n if (result < inputMin) {\n if (extrapolateLeft === \"identity\") {\n return result;\n }\n if (extrapolateLeft === \"clamp\") {\n result = inputMin;\n } else if (extrapolateLeft === \"wrap\") {\n const range = inputMax - inputMin;\n result = ((result - inputMin) % range + range) % range + inputMin;\n } else if (extrapolateLeft === \"extend\") {}\n }\n if (result > inputMax) {\n if (extrapolateRight === \"identity\") {\n return result;\n }\n if (extrapolateRight === \"clamp\") {\n result = inputMax;\n } else if (extrapolateRight === \"wrap\") {\n const range = inputMax - inputMin;\n result = ((result - inputMin) % range + range) % range + inputMin;\n } else if (extrapolateRight === \"extend\") {}\n }\n if (outputMin === outputMax) {\n return outputMin;\n }\n result = (result - inputMin) / (inputMax - inputMin);\n result = easing(result);\n if (output === \"perceptual-scale\") {\n const signedAreaMin = toSignedArea(outputMin);\n const signedAreaMax = toSignedArea(outputMax);\n result = fromSignedArea(result * (signedAreaMax - signedAreaMin) + signedAreaMin);\n } else {\n result = result * (outputMax - outputMin) + outputMin;\n }\n return result;\n}\nfunction findRange(input, inputRange) {\n let i;\n for (i = 1;i < inputRange.length - 1; ++i) {\n if (inputRange[i] >= input) {\n break;\n }\n }\n return i - 1;\n}\nvar defaultEasing = (num) => num;\nvar resolveOutputOption = (output) => {\n return output ?? \"linear\";\n};\nvar shouldExtendRightForEasing = (easing) => {\n return easing.remotionShouldExtendRight === true;\n};\nvar resolveEasingForSegment = ({\n easing,\n segmentIndex\n}) => {\n if (easing === undefined) {\n return defaultEasing;\n }\n if (typeof easing === \"function\") {\n return easing;\n }\n return easing[segmentIndex];\n};\nvar interpolateSegment = ({\n input,\n inputRange,\n outputRange,\n easing,\n extrapolateLeft,\n extrapolateRight,\n output\n}) => {\n return interpolateFunction(input, inputRange, outputRange, {\n easing,\n extrapolateLeft,\n extrapolateRight: input > inputRange[1] && extrapolateRight === \"clamp\" && shouldExtendRightForEasing(easing) ? \"extend\" : extrapolateRight,\n output\n });\n};\nvar interpolateNumber = ({\n input,\n inputRange,\n outputRange,\n options\n}) => {\n const output = resolveOutputOption(options?.output);\n if (inputRange.length === 1) {\n return outputRange[0];\n }\n const easingOption = options?.easing;\n let extrapolateLeft = \"extend\";\n if (options?.extrapolateLeft !== undefined) {\n extrapolateLeft = options.extrapolateLeft;\n }\n let extrapolateRight = \"extend\";\n if (options?.extrapolateRight !== undefined) {\n extrapolateRight = options.extrapolateRight;\n }\n const posterizedInput = options?.posterize === undefined ? input : Math.floor(input / options.posterize) * options.posterize;\n const range = findRange(posterizedInput, inputRange);\n const easing = resolveEasingForSegment({\n easing: easingOption,\n segmentIndex: range\n });\n let result = interpolateSegment({\n input: posterizedInput,\n inputRange: [inputRange[range], inputRange[range + 1]],\n outputRange: [outputRange[range], outputRange[range + 1]],\n easing,\n extrapolateLeft,\n extrapolateRight,\n output\n });\n for (let segmentIndex = 0;segmentIndex < range; segmentIndex++) {\n const previousEasing = resolveEasingForSegment({\n easing: easingOption,\n segmentIndex\n });\n if (!shouldExtendRightForEasing(previousEasing)) {\n continue;\n }\n const previousSegmentEnd = inputRange[segmentIndex + 1];\n if (posterizedInput <= previousSegmentEnd) {\n continue;\n }\n const continuedSegmentValue = interpolateSegment({\n input: posterizedInput,\n inputRange: [inputRange[segmentIndex], previousSegmentEnd],\n outputRange: [outputRange[segmentIndex], outputRange[segmentIndex + 1]],\n easing: previousEasing,\n extrapolateLeft,\n extrapolateRight: \"extend\",\n output\n });\n result += continuedSegmentValue - outputRange[segmentIndex + 1];\n }\n return result;\n};\nvar interpolateString = ({\n input,\n inputRange,\n outputRange,\n options\n}) => {\n const parsedOutputRange = outputRange.map(parseStringInterpolationValue);\n const kind = parsedOutputRange[0]?.kind;\n if (kind === undefined) {\n throw new Error(\"outputRange must have at least 1 element\");\n }\n for (const parsed of parsedOutputRange) {\n if (parsed.kind !== kind) {\n throw new TypeError(`Cannot interpolate ${kind} values with ${parsed.kind} values`);\n }\n }\n const dimensions = Math.max(...parsedOutputRange.map((parsed) => parsed.dimensions));\n const units = [\n null,\n null,\n null\n ];\n if (kind !== \"scale\") {\n for (let axis = 0;axis < dimensions; axis++) {\n for (const parsed of parsedOutputRange) {\n const unit = parsed.units[axis];\n if (unit === null) {\n continue;\n }\n if (units[axis] === null) {\n units[axis] = unit;\n continue;\n }\n if (units[axis] !== unit) {\n throw new TypeError(`Cannot interpolate ${kind} values with different units on axis ${axis + 1}: ${units[axis]} and ${unit}`);\n }\n }\n if (units[axis] === null) {\n throw new TypeError(`Cannot interpolate ${kind} values because axis ${axis + 1} has no unit`);\n }\n }\n }\n const values = [0, 0, 0];\n for (let axis = 0;axis < dimensions; axis++) {\n values[axis] = interpolateNumber({\n input,\n inputRange,\n outputRange: parsedOutputRange.map((parsed) => parsed.values[axis]),\n options\n });\n }\n return serializeStringInterpolationValue({\n kind,\n values,\n units,\n dimensions\n });\n};\nvar validateTupleOutputRange = (outputRange) => {\n const dimensions = outputRange[0]?.length;\n if (dimensions === undefined) {\n throw new Error(\"outputRange must have at least 1 element\");\n }\n if (dimensions === 0) {\n throw new TypeError(\"outputRange tuples must contain at least 1 number\");\n }\n for (const output of outputRange) {\n if (output.length !== dimensions) {\n throw new TypeError(`outputRange tuples must all have the same length, but got ${dimensions} and ${output.length}`);\n }\n for (const value of output) {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n throw new TypeError(`outputRange tuples must contain only finite numbers, but got [${output.join(\",\")}]`);\n }\n }\n }\n return dimensions;\n};\nvar interpolateTuple = ({\n input,\n inputRange,\n outputRange,\n options\n}) => {\n const dimensions = validateTupleOutputRange(outputRange);\n return new Array(dimensions).fill(true).map((_, axis) => interpolateNumber({\n input,\n inputRange,\n outputRange: outputRange.map((output) => output[axis]),\n options\n }));\n};\nfunction checkValidInputRange(arr) {\n for (let i = 1;i < arr.length; ++i) {\n if (!(arr[i] > arr[i - 1])) {\n throw new Error(`inputRange must be strictly monotonically increasing but got [${arr.join(\",\")}]`);\n }\n }\n}\nfunction checkInfiniteRange(name, arr) {\n if (arr.length < 1) {\n throw new Error(name + \" must have at least 1 element\");\n }\n for (const element of arr) {\n if (typeof element !== \"number\") {\n throw new Error(`${name} must contain only numbers`);\n }\n if (!Number.isFinite(element)) {\n throw new Error(`${name} must contain only finite numbers, but got [${arr.join(\",\")}]`);\n }\n }\n}\nfunction assertValidInterpolateEasingOption(easing, inputRangeLength) {\n if (easing === undefined) {\n return;\n }\n if (typeof easing === \"function\") {\n return;\n }\n const expectedLength = inputRangeLength - 1;\n if (easing.length !== expectedLength) {\n throw new Error(`When easing is an array, it must have one entry per segment between keyframes (length inputRange.length - 1 = ${expectedLength}), but got length ${easing.length}`);\n }\n for (let i = 0;i < easing.length; i++) {\n if (typeof easing[i] !== \"function\") {\n throw new Error(`easing[${i}] must be a function`);\n }\n }\n}\nfunction assertValidInterpolatePosterizeOption(posterize) {\n if (posterize === undefined) {\n return;\n }\n if (typeof posterize !== \"number\" || !Number.isFinite(posterize) || posterize <= 0) {\n throw new Error(`posterize must be a positive finite number, but got ${posterize}`);\n }\n}\nfunction assertValidInterpolateOutputOption(output) {\n if (output === undefined || output === \"linear\" || output === \"perceptual-scale\") {\n return;\n }\n throw new Error(`output must be \"linear\" or \"perceptual-scale\", but got ${String(output)}`);\n}\nfunction interpolate(input, inputRange, outputRange, options) {\n if (typeof input === \"undefined\") {\n throw new Error(\"input can not be undefined\");\n }\n if (typeof inputRange === \"undefined\") {\n throw new Error(\"inputRange can not be undefined\");\n }\n if (typeof outputRange === \"undefined\") {\n throw new Error(\"outputRange can not be undefined\");\n }\n if (inputRange.length !== outputRange.length) {\n throw new Error(\"inputRange (\" + inputRange.length + \") and outputRange (\" + outputRange.length + \") must have the same length\");\n }\n checkInfiniteRange(\"inputRange\", inputRange);\n checkValidInputRange(inputRange);\n assertValidInterpolateEasingOption(options?.easing, inputRange.length);\n assertValidInterpolatePosterizeOption(options?.posterize);\n assertValidInterpolateOutputOption(options?.output);\n if (typeof input !== \"number\") {\n throw new TypeError(\"Cannot interpolate an input which is not a number\");\n }\n if (!Array.isArray(outputRange)) {\n throw new Error(\"outputRange must contain only numbers\");\n }\n const hasStringOutput = outputRange.some((output) => typeof output === \"string\");\n if (hasStringOutput) {\n if (!outputRange.every((output) => typeof output === \"string\" || typeof output === \"number\")) {\n throw new TypeError(\"outputRange must contain only numbers, or supported scale, translate, and rotate strings\");\n }\n return interpolateString({ input, inputRange, outputRange, options });\n }\n if (outputRange.every((output) => Array.isArray(output))) {\n return interpolateTuple({ input, inputRange, outputRange, options });\n }\n if (!outputRange.every((output) => typeof output === \"number\")) {\n throw new TypeError(\"outputRange must contain only numbers, numeric tuples, or supported scale, translate, and rotate strings\");\n }\n checkInfiniteRange(\"outputRange\", outputRange);\n return interpolateNumber({ input, inputRange, outputRange, options });\n}\n// src/random.ts\nfunction mulberry32(a) {\n let t = a + 1831565813;\n t = Math.imul(t ^ t >>> 15, t | 1);\n t ^= t + Math.imul(t ^ t >>> 7, t | 61);\n return ((t ^ t >>> 14) >>> 0) / 4294967296;\n}\nfunction hashCode(str) {\n let i = 0;\n let chr = 0;\n let hash = 0;\n for (i = 0;i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n return hash;\n}\nvar random = (seed, dummy) => {\n if (dummy !== undefined) {\n throw new TypeError(\"random() takes only one argument\");\n }\n if (seed === null) {\n return Math.random();\n }\n if (typeof seed === \"string\") {\n return mulberry32(hashCode(seed));\n }\n if (typeof seed === \"number\") {\n return mulberry32(seed * 10000000000);\n }\n throw new Error(\"random() argument must be a number or a string\");\n};\n// src/truthy.ts\nfunction truthy(value) {\n return Boolean(value);\n}\n\n// src/delay-render.ts\nif (typeof window !== \"undefined\") {\n window.remotion_renderReady = false;\n if (!window.remotion_delayRenderTimeouts) {\n window.remotion_delayRenderTimeouts = {};\n }\n window.remotion_delayRenderHandles = [];\n}\nvar DELAY_RENDER_CALLSTACK_TOKEN = \"The delayRender was called:\";\nvar DELAY_RENDER_RETRIES_LEFT = \"Retries left: \";\nvar DELAY_RENDER_RETRY_TOKEN = \"- Rendering the frame will be retried.\";\nvar DELAY_RENDER_CLEAR_TOKEN = \"handle was cleared after\";\n\n// src/find-props-to-delete.ts\nvar findPropsToDelete = ({\n schema,\n key,\n value\n}) => {\n const fieldSchema = schema[key];\n if (!fieldSchema) {\n throw new Error(\"Key \" + JSON.stringify(key) + \" not found in schema\");\n }\n if (typeof value !== \"string\") {\n throw new Error(\"Value must be a string, but is \" + JSON.stringify(value));\n }\n if (fieldSchema.type !== \"enum\") {\n throw new Error(\"Key \" + JSON.stringify(key) + \" is not an enum\");\n }\n const currentVariant = fieldSchema.variants[value];\n if (!currentVariant) {\n throw new Error(\"Value for \" + JSON.stringify(key) + \" must be one of \" + Object.keys(fieldSchema.variants).map((v) => JSON.stringify(v)).join(\", \") + \", got \" + JSON.stringify(value));\n }\n const otherVariants = Object.keys(fieldSchema.variants).filter((v) => v !== value);\n const otherKeys = new Set;\n for (const variant of otherVariants) {\n const otherVariant = fieldSchema.variants[variant];\n const keys = Object.keys(otherVariant);\n for (const k of keys) {\n otherKeys.add(k);\n }\n }\n return [...otherKeys];\n};\n\n// src/input-props-serialization.ts\nvar DATE_TOKEN = \"remotion-date:\";\nvar FILE_TOKEN = \"remotion-file:\";\nvar serializeJSONWithSpecialTypes = ({\n data,\n indent,\n staticBase\n}) => {\n let customDateUsed = false;\n let customFileUsed = false;\n let mapUsed = false;\n let setUsed = false;\n try {\n const serializedString = JSON.stringify(data, function(key, value) {\n const item = this[key];\n if (item instanceof Date) {\n customDateUsed = true;\n return `${DATE_TOKEN}${item.toISOString()}`;\n }\n if (item instanceof Map) {\n mapUsed = true;\n return value;\n }\n if (item instanceof Set) {\n setUsed = true;\n return value;\n }\n if (typeof item === \"string\" && staticBase !== null && item.startsWith(staticBase)) {\n customFileUsed = true;\n return `${FILE_TOKEN}${item.replace(staticBase + \"/\", \"\")}`;\n }\n return value;\n }, indent);\n return { serializedString, customDateUsed, customFileUsed, mapUsed, setUsed };\n } catch (err) {\n throw new Error(\"Could not serialize the passed input props to JSON: \" + err.message);\n }\n};\nvar deserializeJSONWithSpecialTypes = (data) => {\n return JSON.parse(data, (_, value) => {\n if (typeof value === \"string\" && value.startsWith(DATE_TOKEN)) {\n return new Date(value.replace(DATE_TOKEN, \"\"));\n }\n if (typeof value === \"string\" && value.startsWith(FILE_TOKEN)) {\n return `${window.remotion_staticBase}/${value.replace(FILE_TOKEN, \"\")}`;\n }\n return value;\n });\n};\n\n// src/interactivity-schema.ts\nvar transformSchema = {\n \"style.transformOrigin\": {\n type: \"transform-origin\",\n step: 1,\n default: \"50% 50%\",\n description: \"Transform origin\"\n },\n \"style.translate\": {\n type: \"translate\",\n step: 1,\n default: \"0px 0px\",\n description: \"Offset\"\n },\n \"style.scale\": {\n type: \"scale\",\n max: 100,\n step: 0.01,\n default: 1,\n description: \"Scale\",\n defaultKeyframeOutput: \"perceptual-scale\"\n },\n \"style.rotate\": {\n type: \"rotation-css\",\n step: 1,\n default: \"0deg\",\n description: \"Rotation\"\n },\n \"style.opacity\": {\n type: \"number\",\n min: 0,\n max: 1,\n step: 0.01,\n default: 1,\n description: \"Opacity\",\n hiddenFromList: false\n }\n};\nvar borderSchema = {\n \"style.borderWidth\": {\n type: \"number\",\n default: undefined,\n min: 0,\n step: 1,\n description: \"Border width\",\n hiddenFromList: false\n },\n \"style.borderStyle\": {\n type: \"enum\",\n default: \"none\",\n description: \"Border style\",\n variants: {\n none: {},\n hidden: {},\n solid: {},\n dashed: {},\n dotted: {},\n double: {},\n groove: {},\n ridge: {},\n inset: {},\n outset: {}\n }\n },\n \"style.borderColor\": {\n type: \"color\",\n default: undefined,\n description: \"Border color\"\n }\n};\nvar borderRadiusSchema = {\n \"style.borderRadius\": {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n description: \"Border radius\",\n hiddenFromList: false,\n keyframable: true\n },\n \"style.borderTopLeftRadius\": {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n description: \"Top left radius\",\n hiddenFromList: false\n },\n \"style.borderTopRightRadius\": {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n description: \"Top right radius\",\n hiddenFromList: false\n },\n \"style.borderBottomRightRadius\": {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n description: \"Bottom right radius\",\n hiddenFromList: false\n },\n \"style.borderBottomLeftRadius\": {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n description: \"Bottom left radius\",\n hiddenFromList: false\n }\n};\nvar backgroundSchema = {\n \"style.backgroundColor\": {\n type: \"color\",\n default: \"transparent\",\n description: \"Color\"\n }\n};\nvar svgStrokeSchema = {\n stroke: {\n type: \"color\",\n default: \"none\",\n description: \"Stroke\"\n },\n strokeWidth: {\n type: \"number\",\n default: 1,\n description: \"Stroke width\",\n min: 0,\n step: 1,\n hiddenFromList: false\n }\n};\nvar svgPaintSchema = {\n fill: {\n type: \"color\",\n default: undefined,\n description: \"Fill\"\n },\n ...svgStrokeSchema\n};\nvar premountSchema = {\n premountFor: {\n type: \"number\",\n default: 0,\n description: \"Premount For\",\n min: 0,\n step: 1,\n hiddenFromList: false,\n keyframable: false\n },\n postmountFor: {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n hiddenFromList: true,\n keyframable: false\n }\n};\nvar sequencePremountSchema = {\n ...premountSchema\n};\nvar cropSchema = {\n cropLeft: {\n type: \"number\",\n default: 0,\n description: \"Crop left\",\n min: 0,\n max: 1,\n step: 0.01,\n hiddenFromList: false,\n keyframable: true\n },\n cropRight: {\n type: \"number\",\n default: 0,\n description: \"Crop right\",\n min: 0,\n max: 1,\n step: 0.01,\n hiddenFromList: false,\n keyframable: true\n },\n cropTop: {\n type: \"number\",\n default: 0,\n description: \"Crop top\",\n min: 0,\n max: 1,\n step: 0.01,\n hiddenFromList: false,\n keyframable: true\n },\n cropBottom: {\n type: \"number\",\n default: 0,\n description: \"Crop bottom\",\n min: 0,\n max: 1,\n step: 0.01,\n hiddenFromList: false,\n keyframable: true\n }\n};\nvar sequenceCropSchema = cropSchema;\nvar sequenceStyleSchema = {\n ...sequenceCropSchema,\n ...transformSchema,\n ...backgroundSchema,\n ...borderSchema,\n ...borderRadiusSchema,\n ...sequencePremountSchema\n};\nvar hiddenField = {\n type: \"boolean\",\n default: false,\n description: \"Hidden\"\n};\nvar showInTimelineField = {\n type: \"hidden\"\n};\nvar sequenceNameField = {\n type: \"hidden\"\n};\nvar durationInFramesField = {\n type: \"number\",\n default: undefined,\n min: 1,\n step: 1,\n hiddenFromList: true\n};\nvar fromField = {\n type: \"number\",\n default: 0,\n step: 1,\n hiddenFromList: true\n};\nvar trimBeforeField = {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n hiddenFromList: true\n};\nvar freezeField = {\n type: \"number\",\n default: null,\n step: 1,\n hiddenFromList: true\n};\nvar baseSchema = {\n durationInFrames: durationInFramesField,\n from: fromField,\n trimBefore: trimBeforeField,\n freeze: freezeField,\n hidden: hiddenField,\n name: sequenceNameField,\n showInTimeline: showInTimelineField\n};\nvar sequenceSchema = {\n ...baseSchema,\n layout: {\n type: \"enum\",\n default: \"absolute-fill\",\n description: \"Layout\",\n variants: {\n \"absolute-fill\": sequenceStyleSchema,\n none: {}\n }\n }\n};\nvar baseSchemaWithoutFrom = {\n durationInFrames: durationInFramesField,\n trimBefore: trimBeforeField,\n freeze: freezeField,\n hidden: hiddenField,\n name: sequenceNameField,\n showInTimeline: showInTimelineField\n};\nvar sequenceSchemaWithoutFrom = {\n ...baseSchemaWithoutFrom,\n layout: sequenceSchema.layout\n};\nvar sequenceSchemaDefaultLayoutNone = {\n ...sequenceSchema,\n layout: {\n ...sequenceSchema.layout,\n default: \"none\"\n }\n};\n\n// src/interpolate-colors.ts\nvar NUMBER = \"[-+]?\\\\d*\\\\.?\\\\d+\";\nvar PERCENTAGE = NUMBER + \"%\";\nfunction call(...args) {\n return \"\\\\(\\\\s*(\" + args.join(\")\\\\s*,\\\\s*(\") + \")\\\\s*\\\\)\";\n}\nvar MODERN_VALUE = \"(?:none|[-+]?\\\\d*\\\\.?\\\\d+(?:%|deg|rad|grad|turn)?)\";\nfunction modernColorCall(name) {\n return new RegExp(name + \"\\\\(\\\\s*(\" + MODERN_VALUE + \")\\\\s+(\" + MODERN_VALUE + \")\\\\s+(\" + MODERN_VALUE + \")(?:\\\\s*\\\\/\\\\s*(\" + MODERN_VALUE + \"))?\\\\s*\\\\)\");\n}\nfunction getMatchers() {\n const cachedMatchers = {\n rgb: undefined,\n rgba: undefined,\n hsl: undefined,\n hsla: undefined,\n hex3: undefined,\n hex4: undefined,\n hex5: undefined,\n hex6: undefined,\n hex8: undefined,\n oklch: undefined,\n oklab: undefined,\n lab: undefined,\n lch: undefined,\n hwb: undefined\n };\n if (cachedMatchers.rgb === undefined) {\n cachedMatchers.rgb = new RegExp(\"rgb\" + call(NUMBER, NUMBER, NUMBER));\n cachedMatchers.rgba = new RegExp(\"rgba\" + call(NUMBER, NUMBER, NUMBER, NUMBER));\n cachedMatchers.hsl = new RegExp(\"hsl\" + call(NUMBER, PERCENTAGE, PERCENTAGE));\n cachedMatchers.hsla = new RegExp(\"hsla\" + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\n cachedMatchers.hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\n cachedMatchers.hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\n cachedMatchers.hex6 = /^#([0-9a-fA-F]{6})$/;\n cachedMatchers.hex8 = /^#([0-9a-fA-F]{8})$/;\n cachedMatchers.oklch = modernColorCall(\"oklch\");\n cachedMatchers.oklab = modernColorCall(\"oklab\");\n cachedMatchers.lab = modernColorCall(\"lab\");\n cachedMatchers.lch = modernColorCall(\"lch\");\n cachedMatchers.hwb = modernColorCall(\"hwb\");\n }\n return cachedMatchers;\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\nfunction hslToRgb(h, s, l) {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\nfunction parse255(str) {\n const int = Number.parseInt(str, 10);\n if (int < 0) {\n return 0;\n }\n if (int > 255) {\n return 255;\n }\n return int;\n}\nfunction parse360(str) {\n const int = Number.parseFloat(str);\n return (int % 360 + 360) % 360 / 360;\n}\nfunction parse1(str) {\n const num = Number.parseFloat(str);\n if (num < 0) {\n return 0;\n }\n if (num > 1) {\n return 255;\n }\n return Math.round(num * 255);\n}\nfunction parsePercentage(str) {\n const int = Number.parseFloat(str);\n if (int < 0) {\n return 0;\n }\n if (int > 100) {\n return 1;\n }\n return int / 100;\n}\nfunction parseModernComponent(str, percentScale) {\n if (str === \"none\")\n return 0;\n if (str.endsWith(\"%\")) {\n return Number.parseFloat(str) / 100 * percentScale;\n }\n return Number.parseFloat(str);\n}\nfunction parseHueAngle(str) {\n if (str === \"none\")\n return 0;\n if (str.endsWith(\"rad\")) {\n return Number.parseFloat(str) * 180 / Math.PI;\n }\n if (str.endsWith(\"grad\"))\n return Number.parseFloat(str) * 0.9;\n if (str.endsWith(\"turn\"))\n return Number.parseFloat(str) * 360;\n return Number.parseFloat(str);\n}\nfunction parseModernAlpha(str) {\n if (str === undefined || str === \"none\")\n return 1;\n if (str.endsWith(\"%\")) {\n return Math.max(0, Math.min(1, Number.parseFloat(str) / 100));\n }\n return Math.max(0, Math.min(1, Number.parseFloat(str)));\n}\nfunction linearToSrgb(c) {\n if (c <= 0.0031308)\n return 12.92 * c;\n return 1.055 * c ** (1 / 2.4) - 0.055;\n}\nfunction clamp01(v) {\n return Math.max(0, Math.min(1, v));\n}\nfunction rgbFloatToInt(r, g, b, alpha) {\n const ri = Math.round(clamp01(r) * 255);\n const gi = Math.round(clamp01(g) * 255);\n const bi = Math.round(clamp01(b) * 255);\n const ai = Math.round(clamp01(alpha) * 255);\n return (ri << 24 | gi << 16 | bi << 8 | ai) >>> 0;\n}\nfunction oklabToSrgb(L, a, b) {\n const l_ = L + 0.3963377774 * a + 0.2158037573 * b;\n const m_ = L - 0.1055613458 * a - 0.0638541728 * b;\n const s_ = L - 0.0894841775 * a - 1.291485548 * b;\n const l = l_ * l_ * l_;\n const m = m_ * m_ * m_;\n const s = s_ * s_ * s_;\n const rLin = 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s;\n const gLin = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s;\n const bLin = -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s;\n return [linearToSrgb(rLin), linearToSrgb(gLin), linearToSrgb(bLin)];\n}\nfunction labToSrgb(L, a, b) {\n const epsilon = 216 / 24389;\n const kappa = 24389 / 27;\n const Xn = 0.95047;\n const Yn = 1;\n const Zn = 1.08883;\n const fy = (L + 16) / 116;\n const fx = a / 500 + fy;\n const fz = fy - b / 200;\n const fx3 = fx * fx * fx;\n const fz3 = fz * fz * fz;\n const xr = fx3 > epsilon ? fx3 : (116 * fx - 16) / kappa;\n const yr = L > kappa * epsilon ? ((L + 16) / 116) ** 3 : L / kappa;\n const zr = fz3 > epsilon ? fz3 : (116 * fz - 16) / kappa;\n const X = xr * Xn;\n const Y = yr * Yn;\n const Z = zr * Zn;\n const rLin = 3.2404542 * X - 1.5371385 * Y - 0.4985314 * Z;\n const gLin = -0.969266 * X + 1.8760108 * Y + 0.041556 * Z;\n const bLin = 0.0556434 * X - 0.2040259 * Y + 1.0572252 * Z;\n return [linearToSrgb(rLin), linearToSrgb(gLin), linearToSrgb(bLin)];\n}\nfunction hwbToSrgb(h, w, bk) {\n if (w + bk >= 1) {\n const gray = w / (w + bk);\n return [gray, gray, gray];\n }\n const q = 1;\n const p = 0;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const bl = hue2rgb(p, q, h - 1 / 3);\n const factor = 1 - w - bk;\n return [r * factor + w, g * factor + w, bl * factor + w];\n}\nvar colorNames = {\n transparent: 0,\n aliceblue: 4042850303,\n antiquewhite: 4209760255,\n aqua: 16777215,\n aquamarine: 2147472639,\n azure: 4043309055,\n beige: 4126530815,\n bisque: 4293182719,\n black: 255,\n blanchedalmond: 4293643775,\n blue: 65535,\n blueviolet: 2318131967,\n brown: 2771004159,\n burlywood: 3736635391,\n burntsienna: 3934150143,\n cadetblue: 1604231423,\n chartreuse: 2147418367,\n chocolate: 3530104575,\n coral: 4286533887,\n cornflowerblue: 1687547391,\n cornsilk: 4294499583,\n crimson: 3692313855,\n cyan: 16777215,\n darkblue: 35839,\n darkcyan: 9145343,\n darkgoldenrod: 3095792639,\n darkgray: 2846468607,\n darkgreen: 6553855,\n darkgrey: 2846468607,\n darkkhaki: 3182914559,\n darkmagenta: 2332068863,\n darkolivegreen: 1433087999,\n darkorange: 4287365375,\n darkorchid: 2570243327,\n darkred: 2332033279,\n darksalmon: 3918953215,\n darkseagreen: 2411499519,\n darkslateblue: 1211993087,\n darkslategray: 793726975,\n darkslategrey: 793726975,\n darkturquoise: 13554175,\n darkviolet: 2483082239,\n deeppink: 4279538687,\n deepskyblue: 12582911,\n dimgray: 1768516095,\n dimgrey: 1768516095,\n dodgerblue: 512819199,\n firebrick: 2988581631,\n floralwhite: 4294635775,\n forestgreen: 579543807,\n fuchsia: 4278255615,\n gainsboro: 3705462015,\n ghostwhite: 4177068031,\n gold: 4292280575,\n goldenrod: 3668254975,\n gray: 2155905279,\n green: 8388863,\n greenyellow: 2919182335,\n grey: 2155905279,\n honeydew: 4043305215,\n hotpink: 4285117695,\n indianred: 3445382399,\n indigo: 1258324735,\n ivory: 4294963455,\n khaki: 4041641215,\n lavender: 3873897215,\n lavenderblush: 4293981695,\n lawngreen: 2096890111,\n lemonchiffon: 4294626815,\n lightblue: 2916673279,\n lightcoral: 4034953471,\n lightcyan: 3774873599,\n lightgoldenrodyellow: 4210742015,\n lightgray: 3553874943,\n lightgreen: 2431553791,\n lightgrey: 3553874943,\n lightpink: 4290167295,\n lightsalmon: 4288707327,\n lightseagreen: 548580095,\n lightskyblue: 2278488831,\n lightslategray: 2005441023,\n lightslategrey: 2005441023,\n lightsteelblue: 2965692159,\n lightyellow: 4294959359,\n lime: 16711935,\n limegreen: 852308735,\n linen: 4210091775,\n magenta: 4278255615,\n maroon: 2147483903,\n mediumaquamarine: 1724754687,\n mediumblue: 52735,\n mediumorchid: 3126187007,\n mediumpurple: 2473647103,\n mediumseagreen: 1018393087,\n mediumslateblue: 2070474495,\n mediumspringgreen: 16423679,\n mediumturquoise: 1221709055,\n mediumvioletred: 3340076543,\n midnightblue: 421097727,\n mintcream: 4127193855,\n mistyrose: 4293190143,\n moccasin: 4293178879,\n navajowhite: 4292783615,\n navy: 33023,\n oldlace: 4260751103,\n olive: 2155872511,\n olivedrab: 1804477439,\n orange: 4289003775,\n orangered: 4282712319,\n orchid: 3664828159,\n palegoldenrod: 4008225535,\n palegreen: 2566625535,\n paleturquoise: 2951671551,\n palevioletred: 3681588223,\n papayawhip: 4293907967,\n peachpuff: 4292524543,\n peru: 3448061951,\n pink: 4290825215,\n plum: 3718307327,\n powderblue: 2967529215,\n purple: 2147516671,\n rebeccapurple: 1714657791,\n red: 4278190335,\n rosybrown: 3163525119,\n royalblue: 1097458175,\n saddlebrown: 2336560127,\n salmon: 4202722047,\n sandybrown: 4104413439,\n seagreen: 780883967,\n seashell: 4294307583,\n sienna: 2689740287,\n silver: 3233857791,\n skyblue: 2278484991,\n slateblue: 1784335871,\n slategray: 1887473919,\n slategrey: 1887473919,\n snow: 4294638335,\n springgreen: 16744447,\n steelblue: 1182971135,\n tan: 3535047935,\n teal: 8421631,\n thistle: 3636451583,\n tomato: 4284696575,\n turquoise: 1088475391,\n violet: 4001558271,\n wheat: 4125012991,\n white: 4294967295,\n whitesmoke: 4126537215,\n yellow: 4294902015,\n yellowgreen: 2597139199\n};\nfunction normalizeColor(color) {\n const matchers = getMatchers();\n let match;\n if (matchers.hex6) {\n if (match = matchers.hex6.exec(color)) {\n return Number.parseInt(match[1] + \"ff\", 16) >>> 0;\n }\n }\n if (colorNames[color] !== undefined) {\n return colorNames[color];\n }\n if (matchers.rgb) {\n if (match = matchers.rgb.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | 255) >>> 0;\n }\n }\n if (matchers.rgba) {\n if (match = matchers.rgba.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | parse1(match[4])) >>> 0;\n }\n }\n if (matchers.hex3) {\n if (match = matchers.hex3.exec(color)) {\n return Number.parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + \"ff\", 16) >>> 0;\n }\n }\n if (matchers.hex8) {\n if (match = matchers.hex8.exec(color)) {\n return Number.parseInt(match[1], 16) >>> 0;\n }\n }\n if (matchers.hex4) {\n if (match = matchers.hex4.exec(color)) {\n return Number.parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + match[4] + match[4], 16) >>> 0;\n }\n }\n if (matchers.hsl) {\n if (match = matchers.hsl.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | 255) >>> 0;\n }\n }\n if (matchers.hsla) {\n if (match = matchers.hsla.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | parse1(match[4])) >>> 0;\n }\n }\n if (matchers.oklch) {\n if (match = matchers.oklch.exec(color)) {\n const L = parseModernComponent(match[1], 1);\n const C = parseModernComponent(match[2], 0.4);\n const H = parseHueAngle(match[3]);\n const alpha = parseModernAlpha(match[4]);\n const hRad = H * Math.PI / 180;\n const [r, g, b] = oklabToSrgb(L, C * Math.cos(hRad), C * Math.sin(hRad));\n return rgbFloatToInt(r, g, b, alpha);\n }\n }\n if (matchers.oklab) {\n if (match = matchers.oklab.exec(color)) {\n const L = parseModernComponent(match[1], 1);\n const a = parseModernComponent(match[2], 0.4);\n const b = parseModernComponent(match[3], 0.4);\n const alpha = parseModernAlpha(match[4]);\n const [r, g, bl] = oklabToSrgb(L, a, b);\n return rgbFloatToInt(r, g, bl, alpha);\n }\n }\n if (matchers.lab) {\n if (match = matchers.lab.exec(color)) {\n const L = parseModernComponent(match[1], 100);\n const a = parseModernComponent(match[2], 125);\n const b = parseModernComponent(match[3], 125);\n const alpha = parseModernAlpha(match[4]);\n const [r, g, bl] = labToSrgb(L, a, b);\n return rgbFloatToInt(r, g, bl, alpha);\n }\n }\n if (matchers.lch) {\n if (match = matchers.lch.exec(color)) {\n const L = parseModernComponent(match[1], 100);\n const C = parseModernComponent(match[2], 150);\n const H = parseHueAngle(match[3]);\n const alpha = parseModernAlpha(match[4]);\n const hRad = H * Math.PI / 180;\n const [r, g, bl] = labToSrgb(L, C * Math.cos(hRad), C * Math.sin(hRad));\n return rgbFloatToInt(r, g, bl, alpha);\n }\n }\n if (matchers.hwb) {\n if (match = matchers.hwb.exec(color)) {\n const H = parseHueAngle(match[1]);\n const W = parseModernComponent(match[2], 1);\n const B = parseModernComponent(match[3], 1);\n const alpha = parseModernAlpha(match[4]);\n const [r, g, bl] = hwbToSrgb(H / 360, W, B);\n return rgbFloatToInt(r, g, bl, alpha);\n }\n }\n throw new Error(`invalid color string ${color} provided`);\n}\nfunction processColor(color) {\n const normalizedColor = normalizeColor(color);\n return (normalizedColor << 24 | normalizedColor >>> 8) >>> 0;\n}\n\n// src/prores-profile.ts\nvar proResProfileOptions = [\n \"4444-xq\",\n \"4444\",\n \"hq\",\n \"standard\",\n \"light\",\n \"proxy\"\n];\n\n// src/scale-value.ts\nvar defaultScaleValue = [1, 1, 1];\nvar parseScaleString = (value) => {\n const parts = value.trim().split(/\\s+/);\n if (parts.length < 1 || parts.length > 3 || parts[0] === \"\") {\n return null;\n }\n const parsed = parts.map((part) => Number(part));\n if (!parsed.every((part) => Number.isFinite(part))) {\n return null;\n }\n const x = parsed[0];\n const y = parsed[1] ?? x;\n const z = parsed[2] ?? 1;\n return [x, y, z];\n};\nvar parseValidScaleValue = (value) => {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? [value, value, 1] : null;\n }\n if (typeof value === \"string\") {\n return parseScaleString(value);\n }\n return null;\n};\nvar parseScaleValue = (value) => {\n return parseValidScaleValue(value) ?? defaultScaleValue;\n};\nvar serializeScaleValue = ([x, y, z]) => {\n const normalizedX = normalizeNumber(x);\n const normalizedY = normalizeNumber(y);\n const normalizedZ = normalizeNumber(z);\n if (normalizedX === normalizedY && normalizedZ === 1) {\n return normalizedX;\n }\n if (normalizedZ === 1) {\n return `${normalizedX} ${normalizedY}`;\n }\n return `${normalizedX} ${normalizedY} ${normalizedZ}`;\n};\n\n// src/v5-flag.ts\nvar ENABLE_V5_BREAKING_CHANGES = false;\n\n// src/validate-frame.ts\nvar validateFrame = ({\n allowFloats,\n durationInFrames,\n frame\n}) => {\n if (typeof frame === \"undefined\") {\n throw new TypeError(`Argument missing for parameter \"frame\"`);\n }\n if (typeof frame !== \"number\") {\n throw new TypeError(`Argument passed for \"frame\" is not a number: ${frame}`);\n }\n if (!Number.isFinite(frame)) {\n throw new RangeError(`Frame ${frame} is not finite`);\n }\n if (frame % 1 !== 0 && !allowFloats) {\n throw new RangeError(`Argument for frame must be an integer, but got ${frame}`);\n }\n if (frame < 0 && frame < -durationInFrames) {\n throw new RangeError(`Cannot use frame ${frame}: Duration of composition is ${durationInFrames}, therefore the lowest frame that can be rendered is ${-durationInFrames}`);\n }\n if (frame > durationInFrames - 1) {\n throw new RangeError(`Cannot use frame ${frame}: Duration of composition is ${durationInFrames}, therefore the highest frame that can be rendered is ${durationInFrames - 1}`);\n }\n};\n\n// src/codec.ts\nvar validCodecs = [\n \"h264\",\n \"h265\",\n \"vp8\",\n \"vp9\",\n \"av1\",\n \"mp3\",\n \"aac\",\n \"wav\",\n \"prores\",\n \"h264-mkv\",\n \"h264-ts\",\n \"gif\"\n];\n\n// src/validation/validate-default-codec.ts\nfunction validateCodec(defaultCodec, location, name) {\n if (typeof defaultCodec === \"undefined\") {\n return;\n }\n if (typeof defaultCodec !== \"string\") {\n throw new TypeError(`The \"${name}\" prop ${location} must be a string, but you passed a value of type ${typeof defaultCodec}.`);\n }\n if (!validCodecs.includes(defaultCodec)) {\n throw new Error(`The \"${name}\" prop ${location} must be one of ${validCodecs.join(\", \")}, but you passed ${defaultCodec}.`);\n }\n}\n\n// src/validation/validate-default-props.ts\nvar validateDefaultAndInputProps = (defaultProps, name, compositionId) => {\n if (!defaultProps) {\n return;\n }\n if (typeof defaultProps !== \"object\") {\n throw new Error(`\"${name}\" must be an object, but you passed a value of type ${typeof defaultProps}`);\n }\n if (Array.isArray(defaultProps)) {\n throw new Error(`\"${name}\" must be an object, an array was passed ${compositionId ? `for composition \"${compositionId}\"` : \"\"}`);\n }\n};\n\n// src/validation/validate-dimensions.ts\nfunction validateDimension(amount, nameOfProp, location) {\n if (typeof amount !== \"number\") {\n throw new Error(`The \"${nameOfProp}\" prop ${location} must be a number, but you passed a value of type ${typeof amount}`);\n }\n if (isNaN(amount)) {\n throw new TypeError(`The \"${nameOfProp}\" prop ${location} must not be NaN, but is NaN.`);\n }\n if (!Number.isFinite(amount)) {\n throw new TypeError(`The \"${nameOfProp}\" prop ${location} must be finite, but is ${amount}.`);\n }\n if (amount % 1 !== 0) {\n throw new TypeError(`The \"${nameOfProp}\" prop ${location} must be an integer, but is ${amount}.`);\n }\n if (amount <= 0) {\n throw new TypeError(`The \"${nameOfProp}\" prop ${location} must be positive, but got ${amount}.`);\n }\n}\n\n// src/validation/validate-duration-in-frames.ts\nfunction validateDurationInFrames(durationInFrames, options) {\n const { allowFloats, component } = options;\n if (typeof durationInFrames === \"undefined\") {\n throw new Error(`The \"durationInFrames\" prop ${component} is missing.`);\n }\n if (typeof durationInFrames !== \"number\") {\n throw new Error(`The \"durationInFrames\" prop ${component} must be a number, but you passed a value of type ${typeof durationInFrames}`);\n }\n if (durationInFrames <= 0) {\n throw new TypeError(`The \"durationInFrames\" prop ${component} must be positive, but got ${durationInFrames}.`);\n }\n if (!allowFloats && durationInFrames % 1 !== 0) {\n throw new TypeError(`The \"durationInFrames\" prop ${component} must be an integer, but got ${durationInFrames}.`);\n }\n if (!Number.isFinite(durationInFrames)) {\n throw new TypeError(`The \"durationInFrames\" prop ${component} must be finite, but got ${durationInFrames}.`);\n }\n}\n\n// src/validation/validate-fps.ts\nfunction validateFps(fps, location, isGif) {\n if (typeof fps !== \"number\") {\n throw new Error(`\"fps\" must be a number, but you passed a value of type ${typeof fps} ${location}`);\n }\n if (!Number.isFinite(fps)) {\n throw new Error(`\"fps\" must be a finite, but you passed ${fps} ${location}`);\n }\n if (isNaN(fps)) {\n throw new Error(`\"fps\" must not be NaN, but got ${fps} ${location}`);\n }\n if (fps <= 0) {\n throw new TypeError(`\"fps\" must be positive, but got ${fps} ${location}`);\n }\n if (isGif && fps > 50) {\n throw new TypeError(`The FPS for a GIF cannot be higher than 50. Use the --every-nth-frame option to lower the FPS: https://remotion.dev/docs/render-as-gif`);\n }\n}\n\n// src/video/get-current-time.ts\nvar getExpectedMediaFrameUncorrected = ({\n frame,\n playbackRate,\n startFrom\n}) => {\n return interpolate(frame, [-1, startFrom, startFrom + 1], [-1, startFrom, startFrom + playbackRate]);\n};\n\n// src/absolute-src.ts\nvar getAbsoluteSrc = (relativeSrc) => {\n if (typeof window === \"undefined\") {\n return relativeSrc;\n }\n if (relativeSrc.startsWith(\"http://\") || relativeSrc.startsWith(\"https://\") || relativeSrc.startsWith(\"file://\") || relativeSrc.startsWith(\"blob:\") || relativeSrc.startsWith(\"data:\")) {\n return relativeSrc;\n }\n return new URL(relativeSrc, window.origin).href;\n};\n\n// src/video/offthread-video-source.ts\nvar getOffthreadVideoSource = ({\n src,\n transparent,\n currentTime,\n toneMapped\n}) => {\n return `http://localhost:${window.remotion_proxyPort}/proxy?src=${encodeURIComponent(getAbsoluteSrc(src))}&time=${encodeURIComponent(Math.max(0, currentTime))}&transparent=${String(transparent)}&toneMapped=${String(toneMapped)}`;\n};\n\n// src/no-react.ts\nvar NoReactInternals = {\n processColor,\n truthy,\n validateFps,\n validateDimension,\n validateDurationInFrames,\n validateDefaultAndInputProps,\n validateFrame,\n serializeJSONWithSpecialTypes,\n bundleName: \"bundle.js\",\n bundleMapName: \"bundle.js.map\",\n deserializeJSONWithSpecialTypes,\n DELAY_RENDER_CALLSTACK_TOKEN,\n DELAY_RENDER_RETRY_TOKEN,\n DELAY_RENDER_CLEAR_TOKEN,\n DELAY_RENDER_ATTEMPT_TOKEN: DELAY_RENDER_RETRIES_LEFT,\n getOffthreadVideoSource,\n getExpectedMediaFrameUncorrected,\n ENABLE_V5_BREAKING_CHANGES,\n MIN_NODE_VERSION: ENABLE_V5_BREAKING_CHANGES ? 22 : 16,\n MIN_BUN_VERSION: ENABLE_V5_BREAKING_CHANGES ? \"1.1.3\" : \"1.0.3\",\n MIN_ESLINT_VERSION: ENABLE_V5_BREAKING_CHANGES ? \"8.57.0\" : \"7.15.0\",\n colorNames,\n DATE_TOKEN,\n FILE_TOKEN,\n validateCodec,\n proResProfileOptions,\n findPropsToDelete,\n sequenceSchema,\n parseScaleValue,\n serializeScaleValue\n};\nexport {\n random,\n interpolate,\n assertValidInterpolatePosterizeOption,\n assertValidInterpolateEasingOption,\n NoReactInternals\n};\n","import React, { useMemo } from \"react\";\n\ntype EnteringState = {\n enteringProgress: number;\n};\n\ntype ExitingState = {\n exitingProgress: number;\n};\n\nexport const EnteringContext = React.createContext<EnteringState | null>(null);\nexport const ExitingContext = React.createContext<ExitingState | null>(null);\n\nexport const WrapInEnteringProgressContext: React.FC<{\n readonly presentationProgress: number;\n readonly children: React.ReactNode;\n}> = ({ presentationProgress, children }) => {\n const value: EnteringState = useMemo(() => {\n return {\n enteringProgress: presentationProgress\n };\n }, [presentationProgress]);\n\n return (\n <EnteringContext.Provider value={value}>\n {children}\n </EnteringContext.Provider>\n );\n};\n\nexport const WrapInExitingProgressContext: React.FC<{\n readonly presentationProgress: number;\n readonly children: React.ReactNode;\n}> = ({ presentationProgress, children }) => {\n const value: ExitingState = useMemo(() => {\n return {\n exitingProgress: presentationProgress\n };\n }, [presentationProgress]);\n\n return (\n <ExitingContext.Provider value={value}>{children}</ExitingContext.Provider>\n );\n};\n","import type { PropsWithChildren } from \"react\";\nimport React from \"react\";\n\ntype ReactChildArray = ReturnType<typeof React.Children.toArray>;\n\nexport const flattenChildren = (children: React.ReactNode): ReactChildArray => {\n const childrenArray = React.Children.toArray(children);\n return childrenArray.reduce((flatChildren: ReactChildArray, child) => {\n if ((child as React.ReactElement<unknown>).type === React.Fragment) {\n return flatChildren.concat(\n flattenChildren(\n (child as React.ReactElement<PropsWithChildren<unknown>>).props\n .children\n )\n );\n }\n\n flatChildren.push(child);\n return flatChildren;\n }, []);\n};\n","import React, { useMemo } from \"react\";\nimport { AbsoluteFill } from \"remotion\";\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps\n} from \"../types\";\n\nexport type SlideDirection =\n \"from-left\" | \"from-top\" | \"from-right\" | \"from-bottom\";\n\nexport type SlideProps = {\n direction?: SlideDirection;\n exitStyle?: React.CSSProperties;\n enterStyle?: React.CSSProperties;\n};\n\nconst epsilon = 0.01;\n\nconst SlidePresentation: React.FC<\n TransitionPresentationComponentProps<SlideProps>\n> = ({\n children,\n presentationProgress,\n presentationDirection,\n passedProps: { direction = \"from-left\", enterStyle, exitStyle }\n}) => {\n const directionStyle = useMemo((): React.CSSProperties => {\n // Overlay the two slides barely to avoid a white line between them\n // Remove the correction once the presentation progress is 1\n const presentationProgressWithEpsilonCorrection =\n presentationProgress === 1\n ? presentationProgress * 100\n : presentationProgress * 100 - epsilon;\n\n if (presentationDirection === \"exiting\") {\n switch (direction) {\n case \"from-left\":\n return {\n transform: `translateX(${presentationProgressWithEpsilonCorrection}%)`\n };\n case \"from-right\":\n return {\n transform: `translateX(${-presentationProgress * 100}%)`\n };\n case \"from-top\":\n return {\n transform: `translateY(${presentationProgressWithEpsilonCorrection}%)`\n };\n case \"from-bottom\":\n return {\n transform: `translateY(${-presentationProgress * 100}%)`\n };\n default:\n throw new Error(`Invalid direction: ${direction}`);\n }\n }\n\n switch (direction) {\n case \"from-left\":\n return {\n transform: `translateX(${-100 + presentationProgress * 100}%)`\n };\n case \"from-right\":\n return {\n transform: `translateX(${\n 100 - presentationProgressWithEpsilonCorrection\n }%)`\n };\n case \"from-top\":\n return {\n transform: `translateY(${-100 + presentationProgress * 100}%)`\n };\n case \"from-bottom\":\n return {\n transform: `translateY(${\n 100 - presentationProgressWithEpsilonCorrection\n }%)`\n };\n default:\n throw new Error(`Invalid direction: ${direction}`);\n }\n }, [presentationDirection, presentationProgress, direction]);\n\n const style: React.CSSProperties = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n ...directionStyle,\n ...(presentationDirection === \"entering\" ? enterStyle : exitStyle)\n };\n }, [directionStyle, enterStyle, exitStyle, presentationDirection]);\n\n return <AbsoluteFill style={style}>{children}</AbsoluteFill>;\n};\n\n/**\n * Implements a sliding transition for presentation components where the entering slide pushes out the exiting slide based on the specified direction.\n * @see [Documentation](https://remotion.dev/docs/transitions/presentations/slide)\n * @param {SlideProps} [props] Configuration options for the slide transition: includes direction, enterStyle, and exitStyle.\n * @returns {TransitionPresentation<SlideProps>} Returns a transition configuration object including the component and its props.\n */\nexport const slide = (\n props?: SlideProps\n): TransitionPresentation<SlideProps> => {\n return {\n component: SlidePresentation,\n props: props ?? {}\n };\n};\n","/* eslint-disable prefer-destructuring */\nimport { NoReactInternals } from \"remotion/no-react\";\n\nexport const validateDurationInFrames: typeof NoReactInternals.validateDurationInFrames =\n NoReactInternals.validateDurationInFrames;\n","import type { FC, PropsWithChildren } from \"react\";\nimport { Children, useMemo } from \"react\";\nimport type {\n AbsoluteFillLayout,\n LayoutAndStyle,\n SequencePropsWithoutDuration\n} from \"remotion\";\nimport {\n Freeze,\n Internals,\n Sequence,\n useCurrentFrame,\n useVideoConfig\n} from \"remotion\";\n\n// Type assertions to resolve React 19 compatibility issues\nimport { NoReactInternals } from \"remotion/no-react\";\nimport {\n WrapInEnteringProgressContext,\n WrapInExitingProgressContext\n} from \"./context\";\nimport { flattenChildren } from \"./flatten-children\";\nimport { slide } from \"./presentations/slide\";\nimport type { TransitionSeriesTransitionProps } from \"./types\";\nimport { validateDurationInFrames } from \"./validate\";\n\n// eslint-disable-next-line react/function-component-definition\nconst TransitionSeriesTransition = function <\n PresentationProps extends Record<string, unknown>\n>(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _props: TransitionSeriesTransitionProps<PresentationProps>\n) {\n return null;\n};\n(TransitionSeriesTransition as unknown as { isTransitionSeriesTransition: boolean }).isTransitionSeriesTransition = true;\n\ntype LayoutBasedProps =\n true extends typeof NoReactInternals.ENABLE_V5_BREAKING_CHANGES\n ? AbsoluteFillLayout\n : LayoutAndStyle;\n\ntype SeriesSequenceProps = PropsWithChildren<\n {\n readonly durationInFrames: number;\n readonly offset?: number;\n readonly className?: string;\n /**\n * @deprecated For internal use only\n */\n readonly stack?: string;\n } & LayoutBasedProps &\n Pick<SequencePropsWithoutDuration, \"name\">\n>;\n\nconst SeriesSequence = ({ children }: SeriesSequenceProps) => {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children}</>;\n};\n(SeriesSequence as unknown as { isSeriesSequence: boolean }).isSeriesSequence = true;\n\ntype TransitionType<PresentationProps extends Record<string, unknown>> = {\n props: TransitionSeriesTransitionProps<PresentationProps>;\n type: typeof TransitionSeriesTransition;\n};\n\ntype TypeChild<PresentationProps extends Record<string, unknown>> =\n | {\n props: SeriesSequenceProps;\n type: typeof SeriesSequence;\n }\n | TransitionType<PresentationProps>\n | string;\n\nconst TransitionSeriesChildren: FC<{ readonly children: React.ReactNode }> = ({\n children\n}) => {\n const { fps } = useVideoConfig();\n const frame = useCurrentFrame();\n const childrenValue = useMemo(() => {\n let transitionOffsets = 0;\n let startFrame = 0;\n const flattedChildren = flattenChildren(children);\n\n return Children.map(flattedChildren, (child, i) => {\n const current = child as unknown as TypeChild<Record<string, unknown>>;\n if (typeof current === \"string\") {\n // Don't throw if it's just some accidential whitespace\n if (current.trim() === \"\") {\n return null;\n }\n\n throw new TypeError(\n `The <TransitionSeries /> component only accepts a list of <TransitionSeries.Sequence /> components as its children, but you passed a string \"${current}\"`\n );\n }\n\n const hasPrev = flattedChildren[i - 1] as TypeChild<\n Record<string, unknown>\n >;\n const nextPrev = flattedChildren[i + 1] as TypeChild<\n Record<string, unknown>\n >;\n\n const isTransitionComponent =\n (typeof hasPrev !== \"string\" &&\n typeof hasPrev !== \"undefined\" &&\n (hasPrev.type === TransitionSeriesTransition ||\n (hasPrev.type as unknown as { isTransitionSeriesTransition?: boolean })?.isTransitionSeriesTransition ||\n (hasPrev.type as unknown as { name?: string })?.name === \"TransitionSeriesTransition\"));\n\n const prev: TransitionType<Record<string, unknown>> | null =\n typeof hasPrev === \"string\" || typeof hasPrev === \"undefined\"\n ? null\n : isTransitionComponent\n ? (hasPrev as TransitionType<Record<string, unknown>>)\n : null;\n\n const isNextTransitionComponent =\n (typeof nextPrev !== \"string\" &&\n typeof nextPrev !== \"undefined\" &&\n (nextPrev.type === TransitionSeriesTransition ||\n (nextPrev.type as unknown as { isTransitionSeriesTransition?: boolean })?.isTransitionSeriesTransition ||\n (nextPrev.type as unknown as { name?: string })?.name === \"TransitionSeriesTransition\"));\n\n const next: TransitionType<Record<string, unknown>> | null =\n typeof nextPrev === \"string\" || typeof nextPrev === \"undefined\"\n ? null\n : isNextTransitionComponent\n ? (nextPrev as TransitionType<Record<string, unknown>>)\n : null;\n\n const prevIsTransition = isTransitionComponent;\n\n const isCurrentTransition =\n current.type === TransitionSeriesTransition ||\n (current.type as unknown as { isTransitionSeriesTransition?: boolean })?.isTransitionSeriesTransition ||\n (current.type as unknown as { name?: string })?.name === \"TransitionSeriesTransition\";\n\n if (isCurrentTransition) {\n if (prevIsTransition) {\n throw new TypeError(\n `A <TransitionSeries.Transition /> component must not be followed by another <TransitionSeries.Transition /> component (nth children = ${\n i - 1\n } and ${i})`\n );\n }\n\n return null;\n }\n\n const isCurrentSequence =\n current.type === SeriesSequence ||\n (current.type as unknown as { isSeriesSequence?: boolean })?.isSeriesSequence ||\n (current.type as unknown as { name?: string })?.name === \"SeriesSequence\";\n\n if (!isCurrentSequence) {\n throw new TypeError(\n `The <TransitionSeries /> component only accepts a list of <TransitionSeries.Sequence /> and <TransitionSeries.Transition /> components as its children, but got ${current} instead`\n );\n }\n\n const castedChildAgain = current as {\n props: SeriesSequenceProps;\n type: typeof SeriesSequence;\n };\n\n const debugInfo = `index = ${i}, duration = ${castedChildAgain.props.durationInFrames}`;\n\n if (!castedChildAgain?.props.children) {\n throw new TypeError(\n `A <TransitionSeries.Sequence /> component (${debugInfo}) was detected to not have any children. Delete it to fix this error.`\n );\n }\n\n const durationInFramesProp = castedChildAgain.props.durationInFrames;\n const {\n durationInFrames,\n children: _children,\n ...passedProps\n } = castedChildAgain.props;\n validateDurationInFrames(durationInFramesProp, {\n component: `of a <TransitionSeries.Sequence /> component`,\n allowFloats: true\n });\n const offset = castedChildAgain.props.offset ?? 0;\n if (Number.isNaN(offset)) {\n throw new TypeError(\n `The \"offset\" property of a <TransitionSeries.Sequence /> must not be NaN, but got NaN (${debugInfo}).`\n );\n }\n\n if (!Number.isFinite(offset)) {\n throw new TypeError(\n `The \"offset\" property of a <TransitionSeries.Sequence /> must be finite, but got ${offset} (${debugInfo}).`\n );\n }\n\n if (offset % 1 !== 0) {\n throw new TypeError(\n `The \"offset\" property of a <TransitionSeries.Sequence /> must be finite, but got ${offset} (${debugInfo}).`\n );\n }\n const currentStartFrame = startFrame + offset;\n let duration = 0;\n\n if (prev) {\n duration = prev.props.timing.getDurationInFrames({\n fps\n });\n transitionOffsets -= duration / 2;\n }\n\n let actualStartFrame = currentStartFrame - duration / 2;\n\n startFrame += durationInFramesProp + offset;\n\n // Handle the case where the first item is a transition\n if (actualStartFrame < 0) {\n // startFrame -= actualStartFrame;\n actualStartFrame = 0;\n }\n\n const nextProgress = next\n ? next.props.timing.getProgress({\n frame:\n frame -\n actualStartFrame -\n durationInFrames +\n next.props.timing.getDurationInFrames({ fps }) / 2 +\n transitionOffsets,\n fps\n })\n : null;\n\n const prevProgress = prev\n ? prev.props.timing.getProgress({\n frame: frame - actualStartFrame,\n fps\n })\n : null;\n\n const nextProgressIn = prev\n ? prev.props.timing.getProgress({\n frame: frame - (actualStartFrame + durationInFrames),\n fps\n })\n : null;\n\n if (\n next &&\n durationInFramesProp <\n next.props.timing.getDurationInFrames({ fps }) / 2\n ) {\n throw new Error(\n `The duration of a <TransitionSeries.Sequence /> must not be shorter than the duration of the next <TransitionSeries.Transition />. The transition is ${next.props.timing.getDurationInFrames(\n { fps }\n )} frames long, but the sequence is only ${durationInFramesProp} frames long (${debugInfo})`\n );\n }\n\n if (\n prev &&\n durationInFramesProp <\n prev.props.timing.getDurationInFrames({ fps }) / 2\n ) {\n throw new Error(\n `The duration of a <TransitionSeries.Sequence /> must not be shorter than the duration of the previous <TransitionSeries.Transition />. The transition is ${prev.props.timing.getDurationInFrames(\n { fps }\n )} frames long, but the sequence is only ${durationInFramesProp} frames long (${debugInfo})`\n );\n }\n\n if (next && prev && nextProgressIn !== null && prevProgress !== null) {\n const nextPresentation = next.props.presentation ?? slide();\n const prevPresentation = prev.props.presentation ?? slide();\n\n const prevTransitionDuration = prev.props.timing.getDurationInFrames({\n fps\n });\n const nextTransitionDuration = next.props.timing.getDurationInFrames({\n fps\n });\n const UppercaseNextPresentation = nextPresentation.component;\n const UppercasePrevPresentation = prevPresentation.component;\n\n const isStartFreeze =\n frame < +Math.floor(actualStartFrame) + prevTransitionDuration / 2;\n\n const isEndFreeze =\n frame >\n Math.floor(actualStartFrame) +\n Math.floor(durationInFrames) +\n prevTransitionDuration / 2;\n\n const freezeFrame = isEndFreeze\n ? Math.floor(actualStartFrame) +\n Math.floor(durationInFrames) +\n Math.floor(nextTransitionDuration / 2)\n : Math.floor(actualStartFrame);\n\n const fromTemp = isStartFreeze\n ? Math.floor(actualStartFrame)\n : Math.floor(actualStartFrame) + prevTransitionDuration / 2;\n\n const nextProgres = next.props.timing.getProgress({\n frame:\n frame - (fromTemp + durationInFrames - nextTransitionDuration / 2),\n fps\n });\n\n const isAfterSequenceStart = frame > actualStartFrame;\n const isBeforeSequenceEnd =\n frame <\n actualStartFrame +\n durationInFrames +\n nextTransitionDuration / 2 +\n prevTransitionDuration / 2;\n\n return (\n <Freeze\n key={i}\n active={\n isBeforeSequenceEnd &&\n isAfterSequenceStart &&\n (isStartFreeze || isEndFreeze)\n }\n frame={freezeFrame}\n >\n <Sequence\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n from={fromTemp}\n durationInFrames={\n durationInFramesProp + nextTransitionDuration / 2\n }\n {...passedProps}\n name={passedProps.name || \"<TS.Sequence>\"}\n >\n <UppercaseNextPresentation\n passedProps={nextPresentation.props ?? {}}\n presentationDirection=\"exiting\"\n presentationProgress={nextProgres}\n presentationDurationInFrames={next.props.timing.getDurationInFrames(\n { fps }\n )}\n onElementImage={() => {}}\n onUnmount={() => {}}\n bothEnteringAndExiting={false}\n >\n <WrapInExitingProgressContext\n presentationProgress={nextProgres}\n >\n <UppercasePrevPresentation\n passedProps={prevPresentation.props ?? {}}\n presentationDirection=\"entering\"\n presentationProgress={prevProgress}\n presentationDurationInFrames={prev.props.timing.getDurationInFrames(\n { fps }\n )}\n onElementImage={() => {}}\n onUnmount={() => {}}\n bothEnteringAndExiting={false}\n >\n <WrapInEnteringProgressContext\n presentationProgress={prevProgress}\n >\n {child}\n </WrapInEnteringProgressContext>\n </UppercasePrevPresentation>\n </WrapInExitingProgressContext>\n </UppercaseNextPresentation>\n </Sequence>\n </Freeze>\n );\n }\n\n if (prevProgress !== null && prev) {\n const partialDuration =\n prev.props.timing.getDurationInFrames({ fps }) / 2;\n const prevPresentation = prev.props.presentation ?? slide();\n const UppercasePrevPresentation = prevPresentation.component;\n const isActiveFreeze = frame < actualStartFrame + partialDuration;\n const startFrame = isActiveFreeze\n ? Math.floor(actualStartFrame)\n : Math.floor(actualStartFrame) + partialDuration;\n const isAfterTransitionStart = frame > startFrame;\n\n return (\n <Freeze\n key={i}\n active={isAfterTransitionStart && isActiveFreeze}\n frame={startFrame}\n >\n <Sequence\n key={i}\n from={startFrame}\n durationInFrames={durationInFramesProp}\n {...passedProps}\n name={passedProps.name || \"<TS.Sequence>\"}\n >\n <UppercasePrevPresentation\n passedProps={prevPresentation.props ?? {}}\n presentationDirection=\"entering\"\n presentationProgress={prevProgress}\n presentationDurationInFrames={prev.props.timing.getDurationInFrames(\n { fps }\n )}\n onElementImage={() => {}}\n onUnmount={() => {}}\n bothEnteringAndExiting={false}\n >\n <WrapInEnteringProgressContext\n presentationProgress={prevProgress}\n >\n {child}\n </WrapInEnteringProgressContext>\n </UppercasePrevPresentation>\n </Sequence>\n </Freeze>\n );\n }\n\n if (nextProgress !== null && next) {\n const partialDuration =\n next.props.timing.getDurationInFrames({ fps }) / 2;\n\n const nextPresentation = next.props.presentation ?? slide();\n\n const UppercaseNextPresentation = nextPresentation.component;\n const isActiveFreeze =\n frame > Math.floor(durationInFrames) + Math.floor(actualStartFrame);\n\n const isBeforeSequenceEnd =\n frame <\n Math.floor(durationInFrames) +\n Math.floor(actualStartFrame) +\n partialDuration;\n\n return (\n <Freeze\n key={i}\n active={isBeforeSequenceEnd && isActiveFreeze}\n frame={Math.floor(durationInFrames)}\n >\n <Sequence\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n from={Math.floor(actualStartFrame)}\n durationInFrames={durationInFramesProp + partialDuration}\n {...passedProps}\n name={passedProps.name || \"<TS.Sequence>\"}\n >\n <UppercaseNextPresentation\n passedProps={nextPresentation.props ?? {}}\n presentationDirection=\"exiting\"\n presentationProgress={nextProgress}\n presentationDurationInFrames={next.props.timing.getDurationInFrames(\n { fps }\n )}\n onElementImage={() => {}}\n onUnmount={() => {}}\n bothEnteringAndExiting={false}\n >\n <WrapInExitingProgressContext\n presentationProgress={nextProgress}\n >\n {child}\n </WrapInExitingProgressContext>\n </UppercaseNextPresentation>\n </Sequence>\n </Freeze>\n );\n }\n\n return (\n <Sequence\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n from={Math.floor(actualStartFrame)}\n durationInFrames={durationInFramesProp}\n {...passedProps}\n name={passedProps.name || \"<TS.Sequence>\"}\n >\n {child}\n </Sequence>\n );\n });\n }, [children, fps, frame]);\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{childrenValue}</>;\n};\n\n/*\n * @description Manages a series of transitions and sequences for advanced animation controls in Remotion projects, handling cases with varying timings and presentations.\n * @see [Documentation](https://www.remotion.dev/docs/transitions/transitionseries)\n */\nexport const TransitionSeries: FC<SequencePropsWithoutDuration> & {\n Sequence: typeof SeriesSequence;\n Transition: typeof TransitionSeriesTransition;\n} = ({ children, name, layout: passedLayout, ...otherProps }) => {\n const displayName = name ?? \"<TransitionSeries>\";\n const layout = passedLayout ?? \"absolute-fill\";\n if (\n NoReactInternals.ENABLE_V5_BREAKING_CHANGES &&\n layout !== \"absolute-fill\"\n ) {\n throw new TypeError(\n `The \"layout\" prop of <TransitionSeries /> is not supported anymore in v5. TransitionSeries' must be absolutely positioned.`\n );\n }\n\n return (\n <Sequence name={displayName} layout={layout} {...otherProps}>\n <TransitionSeriesChildren>{children}</TransitionSeriesChildren>\n </Sequence>\n );\n};\n\nTransitionSeries.Sequence = SeriesSequence;\nTransitionSeries.Transition = TransitionSeriesTransition;\n\nInternals.addSequenceStackTraces(TransitionSeries);\nInternals.addSequenceStackTraces(SeriesSequence);\n","import React from \"react\";\nimport { EnteringContext, ExitingContext } from \"./context\";\n\nexport type TransitionState = {\n entering: number;\n exiting: number;\n isInTransitionSeries: boolean;\n};\n\n/**\n * Gets the progress and direction of a transition with a context() presentation.\n */\nexport const useTransitionProgress = (): TransitionState => {\n const entering = React.useContext(EnteringContext);\n const exiting = React.useContext(ExitingContext);\n\n if (!entering && !exiting) {\n return {\n isInTransitionSeries: false,\n entering: 1,\n exiting: 0\n };\n }\n\n return {\n isInTransitionSeries: true,\n entering: entering?.enteringProgress ?? 1,\n exiting: exiting?.exitingProgress ?? 0\n };\n};\n","import React, { useMemo, useState } from \"react\";\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps\n} from \"../types\";\nimport { AbsoluteFill, random } from \"remotion\";\n\nexport type CustomPresentationProps = {\n width: number;\n height: number;\n};\n\nconst CirclePresentation: React.FC<\n TransitionPresentationComponentProps<CustomPresentationProps>\n> = ({\n children,\n presentationDirection,\n presentationProgress,\n passedProps\n}) => {\n const finishedRadius =\n Math.sqrt(passedProps.width ** 2 + passedProps.height ** 2) / 2;\n const radius = finishedRadius * presentationProgress;\n\n const circlePath = makeCirclePath(\n passedProps.width / 2,\n passedProps.height / 2,\n radius\n );\n\n const [clipId] = useState(() => String(random(null)));\n const style: React.CSSProperties = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n clipPath:\n presentationDirection === \"exiting\" ? undefined : `url(#${clipId})`\n };\n }, [clipId, presentationDirection]);\n\n return (\n <AbsoluteFill>\n <AbsoluteFill style={style}>{children}</AbsoluteFill>\n {presentationDirection === \"exiting\" ? null : (\n <AbsoluteFill>\n <svg width={passedProps.width} height={passedProps.height}>\n <defs>\n <clipPath id={clipId}>\n <path d={circlePath} fill=\"black\" />\n </clipPath>\n </defs>\n </svg>\n </AbsoluteFill>\n )}\n </AbsoluteFill>\n );\n};\n\nexport const circle = (\n props: CustomPresentationProps\n): TransitionPresentation<CustomPresentationProps> => {\n return { component: CirclePresentation, props };\n};\n\n// Esta función crea un path de círculo\nconst makeCirclePath = (cx: number, cy: number, radius: number): string => {\n return `M ${cx}, ${cy}\n m -${radius}, 0\n a ${radius},${radius} 0 1,0 ${radius * 2},0\n a ${radius},${radius} 0 1,0 -${radius * 2},0`;\n};\n","import {\n TransitionPresentation,\n TransitionPresentationComponentProps\n} from \"../types\";\nimport React, { useMemo, useState } from \"react\";\nimport { AbsoluteFill, random } from \"remotion\";\n\nexport type CustomPresentationProps = {\n width: number;\n height: number;\n};\n\nconst WindowTransitionPresentation: React.FC<\n TransitionPresentationComponentProps<CustomPresentationProps>\n> = ({\n children,\n presentationDirection,\n presentationProgress,\n passedProps\n}) => {\n const { width, height } = passedProps;\n\n // Calculamos el tamaño de la ventana en función del progreso de la transición\n const windowWidth = width * presentationProgress;\n const windowHeight = height * presentationProgress;\n\n // Calculamos las coordenadas para la ventana que cubrirá la mitad de la pantalla\n const windowX = width / 2 - windowWidth / 2;\n const windowY = height / 2 - windowHeight / 2;\n\n // Creamos un clipPath único para esta transición\n const [clipId] = useState(() => String(random(null)));\n\n // Establecemos el clipPath para el elemento que queremos animar\n const style: React.CSSProperties = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n clipPath:\n presentationDirection === \"exiting\" ? undefined : `url(#${clipId})`\n };\n }, [clipId, presentationDirection]);\n\n return (\n <AbsoluteFill>\n <AbsoluteFill style={style}>{children}</AbsoluteFill>\n {presentationDirection === \"exiting\" ? null : (\n <AbsoluteFill>\n <svg>\n <defs>\n <clipPath id={clipId}>\n <rect\n x={windowX}\n y={windowY}\n width={windowWidth}\n height={windowHeight}\n fill=\"black\"\n />\n </clipPath>\n </defs>\n </svg>\n </AbsoluteFill>\n )}\n </AbsoluteFill>\n );\n};\n\nexport const rectangle = (\n props: CustomPresentationProps\n): TransitionPresentation<CustomPresentationProps> => {\n return { component: WindowTransitionPresentation, props };\n};\n","import { getBoundingBox, translatePath } from \"@remotion/paths\";\nimport { makeStar } from \"@remotion/shapes\";\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps\n} from \"../types\";\nimport React, { useMemo, useState } from \"react\";\nimport { AbsoluteFill, random } from \"remotion\";\nexport type CustomPresentationProps = {\n width: number;\n height: number;\n};\nconst StarPresentation: React.FC<\n TransitionPresentationComponentProps<CustomPresentationProps>\n> = ({\n children,\n presentationDirection,\n presentationProgress,\n passedProps\n}) => {\n const finishedRadius =\n Math.sqrt(passedProps.width ** 2 + passedProps.height ** 2) / 2;\n const innerRadius = finishedRadius * presentationProgress;\n const outerRadius = finishedRadius * 2 * presentationProgress;\n const { path } = makeStar({\n innerRadius,\n outerRadius,\n points: 5\n });\n const boundingBox = getBoundingBox(path);\n const translatedPath = translatePath(\n path,\n passedProps.width / 2 - boundingBox.width / 2,\n passedProps.height / 2 - boundingBox.height / 2\n );\n const [clipId] = useState(() => String(random(null)));\n const style: React.CSSProperties = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n clipPath:\n presentationDirection === \"exiting\" ? undefined : `url(#${clipId})`\n };\n }, [clipId, presentationDirection]);\n return (\n <AbsoluteFill>\n <AbsoluteFill style={style}>{children}</AbsoluteFill>\n {presentationDirection === \"exiting\" ? null : (\n <AbsoluteFill>\n <svg>\n <defs>\n <clipPath id={clipId}>\n <path d={translatedPath} fill=\"black\" />\n </clipPath>\n </defs>\n </svg>\n </AbsoluteFill>\n )}\n </AbsoluteFill>\n );\n};\n\nexport const star = (\n props: CustomPresentationProps\n): TransitionPresentation<CustomPresentationProps> => {\n return { component: StarPresentation, props };\n};\n","import {\n TransitionPresentation,\n TransitionPresentationComponentProps\n} from \"../types\";\nimport React, { useMemo, useState } from \"react\";\nimport { AbsoluteFill, random } from \"remotion\";\n\nexport type CustomPresentationProps = {\n width: number;\n height: number;\n};\n\nconst WindowTransitionPresentation: React.FC<\n TransitionPresentationComponentProps<CustomPresentationProps>\n> = ({\n children,\n presentationDirection,\n presentationProgress,\n passedProps\n}) => {\n const { width, height } = passedProps;\n\n // Calculamos el tamaño de la ventana en función del progreso de la transición\n const windowWidth = width * presentationProgress;\n\n // Calculamos las coordenadas para la ventana que cubrirá la mitad de la pantalla\n const windowX = width / 2 - windowWidth / 2;\n\n // Creamos un clipPath único para esta transición\n const [clipId] = useState(() => String(random(null)));\n\n // Establecemos el clipPath para el elemento que queremos animar\n const style: React.CSSProperties = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n clipPath:\n presentationDirection === \"exiting\" ? undefined : `url(#${clipId})`\n };\n }, [clipId, presentationDirection]);\n\n return (\n <AbsoluteFill>\n <AbsoluteFill style={style}>{children}</AbsoluteFill>\n {presentationDirection === \"exiting\" ? null : (\n <AbsoluteFill>\n <svg>\n <defs>\n <clipPath id={clipId}>\n <rect\n x={windowX}\n y={0}\n width={windowWidth}\n height={height}\n fill=\"black\"\n />\n </clipPath>\n </defs>\n </svg>\n </AbsoluteFill>\n )}\n </AbsoluteFill>\n );\n};\n\nexport const slidingDoors = (\n props: CustomPresentationProps\n): TransitionPresentation<CustomPresentationProps> => {\n return { component: WindowTransitionPresentation, props };\n};\n","// src/presentations/fade.tsx\nimport { useMemo } from \"react\";\nimport { AbsoluteFill } from \"remotion\";\nimport { jsx } from \"react/jsx-runtime\";\nvar FadePresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const isEntering = presentationDirection === \"entering\";\n const style = useMemo(() => {\n return {\n opacity: isEntering ? presentationProgress : passedProps.shouldFadeOutExitingScene ? 1 - presentationProgress : 1,\n ...presentationDirection === \"entering\" ? passedProps.enterStyle : passedProps.exitStyle\n };\n }, [\n isEntering,\n passedProps.enterStyle,\n passedProps.exitStyle,\n passedProps.shouldFadeOutExitingScene,\n presentationDirection,\n presentationProgress\n ]);\n return /* @__PURE__ */ jsx(AbsoluteFill, {\n style,\n children\n });\n};\nvar fade = (props) => {\n return {\n component: FadePresentation,\n props: props ?? {}\n };\n};\nexport {\n fade\n};\n","// src/presentations/slide.tsx\nimport { useMemo } from \"react\";\nimport { AbsoluteFill } from \"remotion\";\nimport { jsx } from \"react/jsx-runtime\";\nvar epsilon = 0.01;\nvar SlidePresentation = ({\n children,\n presentationProgress,\n presentationDirection,\n passedProps: { direction = \"from-left\", enterStyle, exitStyle }\n}) => {\n const directionStyle = useMemo(() => {\n const presentationProgressWithEpsilonCorrection = presentationProgress === 1 ? presentationProgress * 100 : presentationProgress * 100 - epsilon;\n if (presentationDirection === \"exiting\") {\n switch (direction) {\n case \"from-left\":\n return {\n transform: `translateX(${presentationProgressWithEpsilonCorrection}%)`\n };\n case \"from-right\":\n return {\n transform: `translateX(${-presentationProgress * 100}%)`\n };\n case \"from-top\":\n return {\n transform: `translateY(${presentationProgressWithEpsilonCorrection}%)`\n };\n case \"from-bottom\":\n return {\n transform: `translateY(${-presentationProgress * 100}%)`\n };\n default:\n throw new Error(`Invalid direction: ${direction}`);\n }\n }\n switch (direction) {\n case \"from-left\":\n return {\n transform: `translateX(${-100 + presentationProgress * 100}%)`\n };\n case \"from-right\":\n return {\n transform: `translateX(${100 - presentationProgressWithEpsilonCorrection}%)`\n };\n case \"from-top\":\n return {\n transform: `translateY(${-100 + presentationProgress * 100}%)`\n };\n case \"from-bottom\":\n return {\n transform: `translateY(${100 - presentationProgressWithEpsilonCorrection}%)`\n };\n default:\n throw new Error(`Invalid direction: ${direction}`);\n }\n }, [presentationDirection, presentationProgress, direction]);\n const style = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n ...directionStyle,\n ...presentationDirection === \"entering\" ? enterStyle : exitStyle\n };\n }, [directionStyle, enterStyle, exitStyle, presentationDirection]);\n return /* @__PURE__ */ jsx(AbsoluteFill, {\n style,\n children\n });\n};\nvar slide = (props) => {\n return {\n component: SlidePresentation,\n props: props ?? {}\n };\n};\nexport {\n slide\n};\n","// src/presentations/wipe.tsx\nimport { useMemo } from \"react\";\nimport { AbsoluteFill } from \"remotion\";\nimport { jsx } from \"react/jsx-runtime\";\nvar makePolygonIn = (progress, direction) => {\n const p = progress * 100;\n switch (direction) {\n case \"from-left\":\n return `polygon(0% 0%, ${p}% 0%, ${p}% 100%, 0% 100%)`;\n case \"from-top-left\":\n return `polygon(0% 0%, ${p * 2}% 0%, 0% ${p * 2}%)`;\n case \"from-top\":\n return `polygon(0% 0%, 100% 0%, 100% ${p}%, 0% ${p}%)`;\n case \"from-top-right\":\n return `polygon(100% 0%, ${100 - p * 2}% 0%, 100% ${p * 2}%)`;\n case \"from-right\":\n return `polygon(100% 0%, 100% 100%, ${100 - p}% 100%, ${100 - p}% 0%)`;\n case \"from-bottom-right\":\n return `polygon(100% 100%, ${100 - p * 2}% 100%, 100% ${100 - p * 2}%)`;\n case \"from-bottom\":\n return `polygon(0% 100%, 100% 100%, 100% ${100 - p}%, 0% ${100 - p}%)`;\n case \"from-bottom-left\":\n return `polygon(0% 100%, 0% ${100 - p * 2}%, ${p * 2}% 100%)`;\n default:\n throw new Error(`Unknown direction ${JSON.stringify(direction)}`);\n }\n};\nvar makePolygonOut = (progress, direction) => {\n const p = progress * 100;\n switch (direction) {\n case \"from-left\":\n return `polygon(100% 100%, ${100 - p}% 100%, ${100 - p}% 0%, 100% 0%)`;\n case \"from-top-left\":\n return `polygon(100% 100%, ${100 - p * 2}% 100%, 100% ${100 - p * 2}%)`;\n case \"from-top\":\n return `polygon(100% 100%, 0% 100%, 0% ${100 - p}%, 100% ${100 - p}%)`;\n case \"from-top-right\":\n return `polygon(0% 100%, ${p * 2}% 100%, 0% ${100 - p * 2}%)`;\n case \"from-right\":\n return `polygon(0% 0%, ${p}% 0%, ${p}% 100%, 0% 100%)`;\n case \"from-bottom-right\":\n return `polygon(0% 0%, ${p * 2}% 0%, 0% ${p * 2}%)`;\n case \"from-bottom\":\n return `polygon(100% 0%, 0% 0%, 0% ${p}%, 100% ${p}%)`;\n case \"from-bottom-left\":\n return `polygon(100% 0%, ${100 - p * 2}% 0%, 100% ${p * 2}%)`;\n default:\n throw new Error(`Unknown direction ${JSON.stringify(direction)}`);\n }\n};\nvar WipePresentation = ({\n children,\n presentationProgress,\n presentationDirection,\n passedProps: {\n direction = \"from-left\",\n innerEnterStyle,\n innerExitStyle,\n outerEnterStyle,\n outerExitStyle\n }\n}) => {\n const progressInDirection = presentationDirection === \"entering\" ? presentationProgress : 1 - presentationProgress;\n const clipPath = presentationDirection === \"entering\" ? makePolygonIn(progressInDirection, direction) : makePolygonOut(progressInDirection, direction);\n const style = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n clipPath,\n ...presentationDirection === \"entering\" ? innerEnterStyle : innerExitStyle\n };\n }, [clipPath, innerEnterStyle, innerExitStyle, presentationDirection]);\n const outerStyle = useMemo(() => {\n return presentationDirection === \"entering\" ? outerEnterStyle : outerExitStyle;\n }, [outerEnterStyle, outerExitStyle, presentationDirection]);\n return /* @__PURE__ */ jsx(AbsoluteFill, {\n style: outerStyle,\n children: /* @__PURE__ */ jsx(AbsoluteFill, {\n style,\n children\n })\n });\n};\nvar wipe = (props) => {\n return {\n component: WipePresentation,\n props: props ?? {}\n };\n};\nexport {\n wipe\n};\n","// src/presentations/flip.tsx\nimport { useMemo } from \"react\";\nimport { AbsoluteFill, interpolate } from \"remotion\";\nimport { jsx } from \"react/jsx-runtime\";\nvar Flip = ({\n children,\n presentationDirection,\n presentationProgress,\n passedProps: {\n direction = \"from-left\",\n perspective = 1000,\n innerEnterStyle,\n innerExitStyle,\n outerEnterStyle,\n outerExitStyle\n }\n}) => {\n const style = useMemo(() => {\n const startRotationEntering = direction === \"from-right\" || direction === \"from-top\" ? 180 : -180;\n const endRotationEntering = direction === \"from-right\" || direction === \"from-top\" ? -180 : 180;\n const rotation = presentationDirection === \"entering\" ? interpolate(presentationProgress, [0, 1], [startRotationEntering, 0]) : interpolate(presentationProgress, [0, 1], [0, endRotationEntering]);\n const rotateProperty = direction === \"from-top\" || direction === \"from-bottom\" ? \"rotateX\" : \"rotateY\";\n return {\n width: \"100%\",\n height: \"100%\",\n transform: `${rotateProperty}(${rotation}deg)`,\n backfaceVisibility: \"hidden\",\n WebkitBackfaceVisibility: \"hidden\",\n ...presentationDirection === \"entering\" ? innerEnterStyle : innerExitStyle\n };\n }, [\n direction,\n innerEnterStyle,\n innerExitStyle,\n presentationDirection,\n presentationProgress\n ]);\n const outer = useMemo(() => {\n return {\n perspective,\n transformStyle: \"preserve-3d\",\n ...presentationDirection === \"entering\" ? outerEnterStyle : outerExitStyle\n };\n }, [outerEnterStyle, outerExitStyle, perspective, presentationDirection]);\n return /* @__PURE__ */ jsx(AbsoluteFill, {\n style: outer,\n children: /* @__PURE__ */ jsx(AbsoluteFill, {\n style,\n children\n })\n });\n};\nvar flip = (props) => {\n return { component: Flip, props: props ?? {} };\n};\nexport {\n flip\n};\n","// src/presentations/clock-wipe.tsx\nimport { translatePath } from \"@remotion/paths\";\nimport { makePie } from \"@remotion/shapes\";\nimport { useMemo } from \"react\";\nimport { AbsoluteFill } from \"remotion\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ClockWipePresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const finishedRadius = Math.sqrt(passedProps.width ** 2 + passedProps.height ** 2) / 2;\n const { path } = makePie({\n radius: finishedRadius,\n progress: presentationProgress\n });\n const translatedPath = translatePath(path, -(finishedRadius * 2 - passedProps.width) / 2, -(finishedRadius * 2 - passedProps.height) / 2);\n const style = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n clipPath: presentationDirection === \"exiting\" ? undefined : `path(\"${translatedPath}\")`,\n ...presentationDirection === \"entering\" ? passedProps.innerEnterStyle : passedProps.innerExitStyle\n };\n }, [\n translatedPath,\n passedProps.innerEnterStyle,\n passedProps.innerExitStyle,\n presentationDirection\n ]);\n const outerStyle = useMemo(() => {\n return presentationDirection === \"entering\" ? passedProps.outerEnterStyle : passedProps.outerExitStyle;\n }, [\n passedProps.outerEnterStyle,\n passedProps.outerExitStyle,\n presentationDirection\n ]);\n return /* @__PURE__ */ jsx(AbsoluteFill, {\n style: outerStyle,\n children: /* @__PURE__ */ jsx(AbsoluteFill, {\n style,\n children\n })\n });\n};\nvar clockWipe = (props) => {\n return { component: ClockWipePresentation, props: props ?? {} };\n};\nexport {\n clockWipe\n};\n","import { JSX } from \"react\";\nimport {\n SlideDirection,\n circle,\n clockWipe,\n fade,\n flip,\n linearTiming,\n rectangle,\n slide,\n slidingDoors,\n star,\n wipe\n} from \"./presentations\";\nimport { TransitionSeries } from \"./transition-series\";\n\ninterface TransitionOptions {\n width: number;\n height: number;\n durationInFrames: number;\n id: string;\n direction?: SlideDirection;\n}\n\nexport const Transitions: Record<\n string,\n (options: TransitionOptions) => JSX.Element\n> = {\n none: ({ id }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={fade()}\n timing={linearTiming({ durationInFrames: 1 })}\n />\n ),\n fade: ({ durationInFrames, id }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={fade()}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n slide: ({ durationInFrames, id, direction }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={slide({ direction: direction })}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n wipe: ({ durationInFrames, id, direction }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={wipe({ direction: direction })}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n flip: ({ durationInFrames, id }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={flip()}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n\n clockWipe: ({ width, height, durationInFrames, id }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={clockWipe({ width, height })}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n star: ({ width, height, durationInFrames, id }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={star({ width, height })}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n circle: ({ width, height, durationInFrames, id }: TransitionOptions) => {\n return (\n <TransitionSeries.Transition\n key={id}\n presentation={circle({ width, height })}\n timing={linearTiming({ durationInFrames })}\n />\n );\n },\n rectangle: ({ width, height, durationInFrames, id }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={rectangle({ width, height })}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n slidingDoors: ({\n width,\n height,\n durationInFrames,\n id\n }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={slidingDoors({ width, height })}\n timing={linearTiming({ durationInFrames })}\n />\n )\n};\n"],"names":["linearTiming","options","frame","interpolate","springTiming","fps","measureSpring","to","from","spring","transformSchema","borderSchema","borderRadiusSchema","backgroundSchema","premountSchema","sequencePremountSchema","cropSchema","sequenceCropSchema","sequenceStyleSchema","sequenceSchema","validateDurationInFrames","durationInFrames","allowFloats","component","NoReactInternals","EnteringContext","React","ExitingContext","WrapInEnteringProgressContext","presentationProgress","children","value","useMemo","jsx","WrapInExitingProgressContext","flattenChildren","flatChildren","child","epsilon","SlidePresentation","presentationDirection","direction","enterStyle","exitStyle","directionStyle","presentationProgressWithEpsilonCorrection","style","AbsoluteFill","slide","props","TransitionSeriesTransition","_props","SeriesSequence","TransitionSeriesChildren","useVideoConfig","useCurrentFrame","childrenValue","transitionOffsets","startFrame","flattedChildren","Children","current","hasPrev","nextPrev","isTransitionComponent","_a","_b","prev","isNextTransitionComponent","_c","_d","next","prevIsTransition","_e","_f","_g","_h","castedChildAgain","debugInfo","durationInFramesProp","_children","passedProps","offset","currentStartFrame","duration","actualStartFrame","nextProgress","prevProgress","nextProgressIn","nextPresentation","prevPresentation","prevTransitionDuration","nextTransitionDuration","UppercaseNextPresentation","UppercasePrevPresentation","isStartFreeze","isEndFreeze","freezeFrame","fromTemp","nextProgres","isAfterSequenceStart","isBeforeSequenceEnd","Freeze","Sequence","partialDuration","isActiveFreeze","isAfterTransitionStart","TransitionSeries","name","passedLayout","otherProps","Internals","useTransitionProgress","entering","exiting","CirclePresentation","radius","circlePath","makeCirclePath","clipId","useState","random","circle","cx","cy","WindowTransitionPresentation","width","height","windowWidth","windowHeight","windowX","windowY","rectangle","StarPresentation","finishedRadius","innerRadius","outerRadius","path","makeStar","boundingBox","getBoundingBox","translatedPath","translatePath","star","slidingDoors","FadePresentation","isEntering","fade","makePolygonIn","progress","p","makePolygonOut","WipePresentation","innerEnterStyle","innerExitStyle","outerEnterStyle","outerExitStyle","progressInDirection","clipPath","outerStyle","wipe","Flip","perspective","rotation","outer","flip","ClockWipePresentation","makePie","clockWipe","Transitions","id"],"mappings":"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","x_google_ignoreList":[2,13,14,15,16,17]}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/timings/linear-timing.ts","../src/timings/spring-timing.ts","../../../node_modules/.pnpm/remotion@4.0.506_react-dom@19.2.8_react@19.2.8/node_modules/remotion/dist/esm/no-react.mjs","../src/context.tsx","../src/flatten-children.ts","../src/presentations/slide.tsx","../src/validate.ts","../src/transition-series.tsx","../src/use-transition-progress.ts","../src/presentations/circle.tsx","../src/presentations/rectangle.tsx","../src/presentations/star.tsx","../src/presentations/sliding-doors.tsx","../../../node_modules/.pnpm/@remotion+transitions@4.0.506_react-dom@19.2.8_react@19.2.8/node_modules/@remotion/transitions/dist/esm/fade.mjs","../../../node_modules/.pnpm/@remotion+transitions@4.0.506_react-dom@19.2.8_react@19.2.8/node_modules/@remotion/transitions/dist/esm/slide.mjs","../../../node_modules/.pnpm/@remotion+transitions@4.0.506_react-dom@19.2.8_react@19.2.8/node_modules/@remotion/transitions/dist/esm/wipe.mjs","../../../node_modules/.pnpm/@remotion+transitions@4.0.506_react-dom@19.2.8_react@19.2.8/node_modules/@remotion/transitions/dist/esm/flip.mjs","../../../node_modules/.pnpm/@remotion+transitions@4.0.506_react-dom@19.2.8_react@19.2.8/node_modules/@remotion/transitions/dist/esm/clock-wipe.mjs","../src/transition-presentations.tsx"],"sourcesContent":["import { interpolate } from \"remotion\";\nimport type { TransitionTiming } from \"../types\";\n\n/**\n * Creates a linear timing object for managing animations in frame units.\n * @description Provides a mechanism to handle frame-based transitions linearly, optionally incorporating easing functions.\n * @see [Documentation](https://remotion.dev/docs/transitions/timings/lineartiming)\n * @param {Object} fieldsToFetch Configuration options for the linear timing\n * @param {number} fieldsToFetch.durationInFrames Specifies the total duration of the transition in frames\n * @param {((input: number) => number)=} fieldsToFetch.easing Optional easing function to modify the interpolation of values\n * @returns {TransitionTiming} An object representing the timing of the transition, including methods to get duration and progress\n */\nexport const linearTiming = (options: {\n durationInFrames: number;\n easing?: ((input: number) => number) | undefined;\n}): TransitionTiming => {\n return {\n getDurationInFrames: () => {\n return options.durationInFrames;\n },\n getProgress: ({ frame }) => {\n return interpolate(frame, [0, options.durationInFrames], [0, 1], {\n easing: options.easing,\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\"\n });\n }\n };\n};\n","import type { SpringConfig } from \"remotion\";\nimport { measureSpring, spring } from \"remotion\";\nimport type { TransitionTiming } from \"../types\";\n\nexport const springTiming = (\n options: {\n config?: Partial<SpringConfig>;\n durationInFrames?: number;\n durationRestThreshold?: number;\n reverse?: boolean;\n } = {}\n): TransitionTiming => {\n return {\n getDurationInFrames: ({ fps }) => {\n if (options.durationInFrames) {\n return options.durationInFrames;\n }\n\n return measureSpring({\n config: options.config,\n threshold: options.durationRestThreshold,\n fps\n });\n },\n getProgress: ({ fps, frame }) => {\n const to = options.reverse ? 0 : 1;\n const from = options.reverse ? 1 : 0;\n return spring({\n fps,\n frame,\n to,\n from,\n config: options.config,\n durationInFrames: options.durationInFrames,\n durationRestThreshold: options.durationRestThreshold,\n reverse: options.reverse\n });\n }\n };\n};\n","// src/normalize-number.ts\nvar normalizeNumber = (value) => {\n return Math.round(value * 1e6) / 1e6;\n};\n\n// src/interpolate.ts\nvar angleUnits = new Set([\"deg\", \"rad\", \"grad\", \"turn\"]);\nvar lengthUnits = new Set([\n \"%\",\n \"cap\",\n \"ch\",\n \"cm\",\n \"cqb\",\n \"cqh\",\n \"cqi\",\n \"cqmax\",\n \"cqmin\",\n \"cqw\",\n \"dvh\",\n \"dvw\",\n \"em\",\n \"ex\",\n \"ic\",\n \"in\",\n \"lh\",\n \"lvh\",\n \"lvw\",\n \"mm\",\n \"pc\",\n \"pt\",\n \"px\",\n \"q\",\n \"rem\",\n \"rlh\",\n \"svh\",\n \"svw\",\n \"vb\",\n \"vh\",\n \"vi\",\n \"vmax\",\n \"vmin\",\n \"vw\"\n]);\nvar cssNumberRegex = /^([+-]?(?:\\d+\\.?\\d*|\\.\\d+))([a-zA-Z%]+)?$/;\nvar transformOriginKeywords = new Set([\n \"left\",\n \"center\",\n \"right\",\n \"top\",\n \"bottom\"\n]);\nvar transformOriginKeywordOptions = (keyword) => {\n if (keyword === \"left\") {\n return [{ axis: \"x\", value: { value: 0, unit: \"%\" } }];\n }\n if (keyword === \"right\") {\n return [{ axis: \"x\", value: { value: 100, unit: \"%\" } }];\n }\n if (keyword === \"top\") {\n return [{ axis: \"y\", value: { value: 0, unit: \"%\" } }];\n }\n if (keyword === \"bottom\") {\n return [{ axis: \"y\", value: { value: 100, unit: \"%\" } }];\n }\n return [\n { axis: \"x\", value: { value: 50, unit: \"%\" } },\n { axis: \"y\", value: { value: 50, unit: \"%\" } }\n ];\n};\nvar transformOriginCenter = { value: 50, unit: \"%\" };\nvar stringifyNumber = (value) => {\n return String(normalizeNumber(value));\n};\nvar parseStringInterpolationComponent = (component, value) => {\n const match = cssNumberRegex.exec(component);\n if (match === null) {\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${component}\" is not a supported scale, translate, or rotate value`);\n }\n const unit = match[2] ?? null;\n const numberValue = Number(match[1]);\n if (!Number.isFinite(numberValue)) {\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${component}\" is not finite`);\n }\n if (unit === null) {\n return { kind: \"scale\", value: numberValue, unit: null };\n }\n if (angleUnits.has(unit)) {\n return { kind: \"rotate\", value: numberValue, unit };\n }\n if (lengthUnits.has(unit)) {\n return { kind: \"translate\", value: numberValue, unit };\n }\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${unit}\" is not a supported translate or rotate unit`);\n};\nvar parseTransformOriginLengthPercentage = ({\n component,\n value,\n allowPercentage\n}) => {\n const match = cssNumberRegex.exec(component);\n if (match === null) {\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${component}\" is not a supported transform-origin ${allowPercentage ? \"length-percentage\" : \"z length\"}`);\n }\n const unit = match[2] ?? null;\n const numberValue = Number(match[1]);\n if (!Number.isFinite(numberValue)) {\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${component}\" is not finite`);\n }\n if (unit === null || !lengthUnits.has(unit) || !allowPercentage && unit === \"%\") {\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${component}\" is not a supported transform-origin ${allowPercentage ? \"length-percentage\" : \"z length\"}`);\n }\n return { value: numberValue, unit };\n};\nvar parseTransformOriginToken = (component, value) => {\n const lower = component.toLowerCase();\n if (transformOriginKeywords.has(lower)) {\n return { type: \"keyword\", keyword: lower };\n }\n return {\n type: \"length-percentage\",\n parsed: parseTransformOriginLengthPercentage({\n component,\n value,\n allowPercentage: true\n })\n };\n};\nvar parseTwoTransformOriginKeywords = (first, second, value) => {\n const candidates = [];\n for (const firstOption of transformOriginKeywordOptions(first)) {\n for (const secondOption of transformOriginKeywordOptions(second)) {\n if (firstOption.axis === secondOption.axis) {\n continue;\n }\n candidates.push(firstOption.axis === \"x\" ? [firstOption.value, secondOption.value] : [secondOption.value, firstOption.value]);\n }\n }\n if (candidates.length === 0) {\n throw new TypeError(`Cannot interpolate \"${value}\" because \"${first} ${second}\" is not a valid transform-origin keyword pair`);\n }\n return candidates[0];\n};\nvar parseTransformOriginXY = (parts, value) => {\n if (parts.length === 1) {\n const token = parseTransformOriginToken(parts[0], value);\n if (token.type === \"length-percentage\") {\n return [token.parsed, transformOriginCenter];\n }\n if (token.keyword === \"top\" || token.keyword === \"bottom\") {\n return [\n transformOriginCenter,\n transformOriginKeywordOptions(token.keyword)[0].value\n ];\n }\n return [\n transformOriginKeywordOptions(token.keyword)[0].value,\n transformOriginCenter\n ];\n }\n const first = parseTransformOriginToken(parts[0], value);\n const second = parseTransformOriginToken(parts[1], value);\n if (first.type === \"length-percentage\" && second.type === \"length-percentage\") {\n return [first.parsed, second.parsed];\n }\n if (first.type === \"keyword\" && second.type === \"keyword\") {\n return parseTwoTransformOriginKeywords(first.keyword, second.keyword, value);\n }\n const keyword = first.type === \"keyword\" ? first : second.type === \"keyword\" ? second : null;\n const length = first.type === \"length-percentage\" ? first.parsed : second.type === \"length-percentage\" ? second.parsed : null;\n if (keyword === null || length === null) {\n throw new Error(\"Expected a keyword and a length-percentage value\");\n }\n const keywordIsFirst = first.type === \"keyword\";\n if (keyword.keyword === \"left\" || keyword.keyword === \"right\") {\n if (!keywordIsFirst) {\n throw new TypeError(`Cannot interpolate \"${value}\" because horizontal transform-origin keywords must come before a length-percentage value`);\n }\n return [transformOriginKeywordOptions(keyword.keyword)[0].value, length];\n }\n if (keyword.keyword === \"top\" || keyword.keyword === \"bottom\") {\n return [length, transformOriginKeywordOptions(keyword.keyword)[0].value];\n }\n return keywordIsFirst ? [transformOriginCenter, length] : [length, transformOriginCenter];\n};\nvar parseTransformOriginValue = (output, parts) => {\n const [x, y] = parseTransformOriginXY(parts.slice(0, 2), output);\n const z = parts[2] === undefined ? { value: 0, unit: null } : parseTransformOriginLengthPercentage({\n component: parts[2],\n value: output,\n allowPercentage: false\n });\n return {\n kind: \"translate\",\n values: [x.value, y.value, z.value],\n units: [x.unit, y.unit, z.unit],\n dimensions: parts[2] === undefined ? 2 : 3\n };\n};\nvar parseStringInterpolationValue = (output) => {\n if (typeof output === \"number\") {\n if (!Number.isFinite(output)) {\n throw new Error(`outputRange must contain only finite numbers, but got [${output}]`);\n }\n return {\n kind: \"scale\",\n values: [output, output, 1],\n units: [null, null, null],\n dimensions: 1\n };\n }\n const parts = output.trim().split(/\\s+/);\n if (parts.length < 1 || parts.length > 3 || parts[0] === \"\") {\n throw new TypeError(`String outputRange values must contain 1 to 3 components, but got \"${output}\"`);\n }\n if (parts.some((part) => transformOriginKeywords.has(part.toLowerCase()))) {\n return parseTransformOriginValue(output, parts);\n }\n const parsed = parts.map((part) => parseStringInterpolationComponent(part, output));\n const [{ kind }] = parsed;\n for (const part of parsed) {\n if (part.kind !== kind) {\n throw new TypeError(`Cannot interpolate \"${output}\" because it mixes ${kind} and ${part.kind} values`);\n }\n }\n if (kind === \"scale\") {\n const x = parsed[0].value;\n const y = parsed[1]?.value ?? x;\n const z = parsed[2]?.value ?? 1;\n return {\n kind,\n values: [x, y, z],\n units: [null, null, null],\n dimensions: parsed.length\n };\n }\n return {\n kind,\n values: [parsed[0].value, parsed[1]?.value ?? 0, parsed[2]?.value ?? 0],\n units: [parsed[0].unit, parsed[1]?.unit ?? null, parsed[2]?.unit ?? null],\n dimensions: parsed.length\n };\n};\nvar serializeStringInterpolationValue = ({\n kind,\n values,\n units,\n dimensions\n}) => {\n if (kind === \"scale\") {\n return values.slice(0, dimensions).map((value) => stringifyNumber(value)).join(\" \");\n }\n return values.slice(0, dimensions).map((value, index) => `${stringifyNumber(value)}${units[index]}`).join(\" \");\n};\nvar toSignedArea = (scale) => {\n if (scale === 0) {\n return 0;\n }\n return Math.sign(scale) * scale * scale;\n};\nvar fromSignedArea = (area) => {\n if (area === 0) {\n return 0;\n }\n return Math.sign(area) * Math.sqrt(Math.abs(area));\n};\nfunction interpolateFunction(input, inputRange, outputRange, options) {\n const { extrapolateLeft, extrapolateRight, easing, output } = options;\n let result = input;\n const [inputMin, inputMax] = inputRange;\n const [outputMin, outputMax] = outputRange;\n if (result < inputMin) {\n if (extrapolateLeft === \"identity\") {\n return result;\n }\n if (extrapolateLeft === \"clamp\") {\n result = inputMin;\n } else if (extrapolateLeft === \"wrap\") {\n const range = inputMax - inputMin;\n result = ((result - inputMin) % range + range) % range + inputMin;\n } else if (extrapolateLeft === \"extend\") {}\n }\n if (result > inputMax) {\n if (extrapolateRight === \"identity\") {\n return result;\n }\n if (extrapolateRight === \"clamp\") {\n result = inputMax;\n } else if (extrapolateRight === \"wrap\") {\n const range = inputMax - inputMin;\n result = ((result - inputMin) % range + range) % range + inputMin;\n } else if (extrapolateRight === \"extend\") {}\n }\n if (outputMin === outputMax) {\n return outputMin;\n }\n result = (result - inputMin) / (inputMax - inputMin);\n result = easing(result);\n if (output === \"perceptual-scale\") {\n const signedAreaMin = toSignedArea(outputMin);\n const signedAreaMax = toSignedArea(outputMax);\n result = fromSignedArea(result * (signedAreaMax - signedAreaMin) + signedAreaMin);\n } else {\n result = result * (outputMax - outputMin) + outputMin;\n }\n return result;\n}\nfunction findRange(input, inputRange) {\n let i;\n for (i = 1;i < inputRange.length - 1; ++i) {\n if (inputRange[i] >= input) {\n break;\n }\n }\n return i - 1;\n}\nvar defaultEasing = (num) => num;\nvar resolveOutputOption = (output) => {\n return output ?? \"linear\";\n};\nvar shouldExtendRightForEasing = (easing) => {\n return easing.remotionShouldExtendRight === true;\n};\nvar resolveEasingForSegment = ({\n easing,\n segmentIndex\n}) => {\n if (easing === undefined) {\n return defaultEasing;\n }\n if (typeof easing === \"function\") {\n return easing;\n }\n return easing[segmentIndex];\n};\nvar interpolateSegment = ({\n input,\n inputRange,\n outputRange,\n easing,\n extrapolateLeft,\n extrapolateRight,\n output\n}) => {\n return interpolateFunction(input, inputRange, outputRange, {\n easing,\n extrapolateLeft,\n extrapolateRight: input > inputRange[1] && extrapolateRight === \"clamp\" && shouldExtendRightForEasing(easing) ? \"extend\" : extrapolateRight,\n output\n });\n};\nvar interpolateNumber = ({\n input,\n inputRange,\n outputRange,\n options\n}) => {\n const output = resolveOutputOption(options?.output);\n if (inputRange.length === 1) {\n return outputRange[0];\n }\n const easingOption = options?.easing;\n let extrapolateLeft = \"extend\";\n if (options?.extrapolateLeft !== undefined) {\n extrapolateLeft = options.extrapolateLeft;\n }\n let extrapolateRight = \"extend\";\n if (options?.extrapolateRight !== undefined) {\n extrapolateRight = options.extrapolateRight;\n }\n const posterizedInput = options?.posterize === undefined ? input : Math.floor(input / options.posterize) * options.posterize;\n const range = findRange(posterizedInput, inputRange);\n const easing = resolveEasingForSegment({\n easing: easingOption,\n segmentIndex: range\n });\n let result = interpolateSegment({\n input: posterizedInput,\n inputRange: [inputRange[range], inputRange[range + 1]],\n outputRange: [outputRange[range], outputRange[range + 1]],\n easing,\n extrapolateLeft,\n extrapolateRight,\n output\n });\n for (let segmentIndex = 0;segmentIndex < range; segmentIndex++) {\n const previousEasing = resolveEasingForSegment({\n easing: easingOption,\n segmentIndex\n });\n if (!shouldExtendRightForEasing(previousEasing)) {\n continue;\n }\n const previousSegmentEnd = inputRange[segmentIndex + 1];\n if (posterizedInput <= previousSegmentEnd) {\n continue;\n }\n const continuedSegmentValue = interpolateSegment({\n input: posterizedInput,\n inputRange: [inputRange[segmentIndex], previousSegmentEnd],\n outputRange: [outputRange[segmentIndex], outputRange[segmentIndex + 1]],\n easing: previousEasing,\n extrapolateLeft,\n extrapolateRight: \"extend\",\n output\n });\n result += continuedSegmentValue - outputRange[segmentIndex + 1];\n }\n return result;\n};\nvar interpolateString = ({\n input,\n inputRange,\n outputRange,\n options\n}) => {\n const parsedOutputRange = outputRange.map(parseStringInterpolationValue);\n const kind = parsedOutputRange[0]?.kind;\n if (kind === undefined) {\n throw new Error(\"outputRange must have at least 1 element\");\n }\n for (const parsed of parsedOutputRange) {\n if (parsed.kind !== kind) {\n throw new TypeError(`Cannot interpolate ${kind} values with ${parsed.kind} values`);\n }\n }\n const dimensions = Math.max(...parsedOutputRange.map((parsed) => parsed.dimensions));\n const units = [\n null,\n null,\n null\n ];\n if (kind !== \"scale\") {\n for (let axis = 0;axis < dimensions; axis++) {\n for (const parsed of parsedOutputRange) {\n const unit = parsed.units[axis];\n if (unit === null) {\n continue;\n }\n if (units[axis] === null) {\n units[axis] = unit;\n continue;\n }\n if (units[axis] !== unit) {\n throw new TypeError(`Cannot interpolate ${kind} values with different units on axis ${axis + 1}: ${units[axis]} and ${unit}`);\n }\n }\n if (units[axis] === null) {\n throw new TypeError(`Cannot interpolate ${kind} values because axis ${axis + 1} has no unit`);\n }\n }\n }\n const values = [0, 0, 0];\n for (let axis = 0;axis < dimensions; axis++) {\n values[axis] = interpolateNumber({\n input,\n inputRange,\n outputRange: parsedOutputRange.map((parsed) => parsed.values[axis]),\n options\n });\n }\n return serializeStringInterpolationValue({\n kind,\n values,\n units,\n dimensions\n });\n};\nvar validateTupleOutputRange = (outputRange) => {\n const dimensions = outputRange[0]?.length;\n if (dimensions === undefined) {\n throw new Error(\"outputRange must have at least 1 element\");\n }\n if (dimensions === 0) {\n throw new TypeError(\"outputRange tuples must contain at least 1 number\");\n }\n for (const output of outputRange) {\n if (output.length !== dimensions) {\n throw new TypeError(`outputRange tuples must all have the same length, but got ${dimensions} and ${output.length}`);\n }\n for (const value of output) {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n throw new TypeError(`outputRange tuples must contain only finite numbers, but got [${output.join(\",\")}]`);\n }\n }\n }\n return dimensions;\n};\nvar interpolateTuple = ({\n input,\n inputRange,\n outputRange,\n options\n}) => {\n const dimensions = validateTupleOutputRange(outputRange);\n return new Array(dimensions).fill(true).map((_, axis) => interpolateNumber({\n input,\n inputRange,\n outputRange: outputRange.map((output) => output[axis]),\n options\n }));\n};\nfunction checkValidInputRange(arr) {\n for (let i = 1;i < arr.length; ++i) {\n if (!(arr[i] > arr[i - 1])) {\n throw new Error(`inputRange must be strictly monotonically increasing but got [${arr.join(\",\")}]`);\n }\n }\n}\nfunction checkInfiniteRange(name, arr) {\n if (arr.length < 1) {\n throw new Error(name + \" must have at least 1 element\");\n }\n for (const element of arr) {\n if (typeof element !== \"number\") {\n throw new Error(`${name} must contain only numbers`);\n }\n if (!Number.isFinite(element)) {\n throw new Error(`${name} must contain only finite numbers, but got [${arr.join(\",\")}]`);\n }\n }\n}\nfunction assertValidInterpolateEasingOption(easing, inputRangeLength) {\n if (easing === undefined) {\n return;\n }\n if (typeof easing === \"function\") {\n return;\n }\n const expectedLength = inputRangeLength - 1;\n if (easing.length !== expectedLength) {\n throw new Error(`When easing is an array, it must have one entry per segment between keyframes (length inputRange.length - 1 = ${expectedLength}), but got length ${easing.length}`);\n }\n for (let i = 0;i < easing.length; i++) {\n if (typeof easing[i] !== \"function\") {\n throw new Error(`easing[${i}] must be a function`);\n }\n }\n}\nfunction assertValidInterpolatePosterizeOption(posterize) {\n if (posterize === undefined) {\n return;\n }\n if (typeof posterize !== \"number\" || !Number.isFinite(posterize) || posterize <= 0) {\n throw new Error(`posterize must be a positive finite number, but got ${posterize}`);\n }\n}\nfunction assertValidInterpolateOutputOption(output) {\n if (output === undefined || output === \"linear\" || output === \"perceptual-scale\") {\n return;\n }\n throw new Error(`output must be \"linear\" or \"perceptual-scale\", but got ${String(output)}`);\n}\nfunction interpolate(input, inputRange, outputRange, options) {\n if (typeof input === \"undefined\") {\n throw new Error(\"input can not be undefined\");\n }\n if (typeof inputRange === \"undefined\") {\n throw new Error(\"inputRange can not be undefined\");\n }\n if (typeof outputRange === \"undefined\") {\n throw new Error(\"outputRange can not be undefined\");\n }\n if (inputRange.length !== outputRange.length) {\n throw new Error(\"inputRange (\" + inputRange.length + \") and outputRange (\" + outputRange.length + \") must have the same length\");\n }\n checkInfiniteRange(\"inputRange\", inputRange);\n checkValidInputRange(inputRange);\n assertValidInterpolateEasingOption(options?.easing, inputRange.length);\n assertValidInterpolatePosterizeOption(options?.posterize);\n assertValidInterpolateOutputOption(options?.output);\n if (typeof input !== \"number\") {\n throw new TypeError(\"Cannot interpolate an input which is not a number\");\n }\n if (!Array.isArray(outputRange)) {\n throw new Error(\"outputRange must contain only numbers\");\n }\n const hasStringOutput = outputRange.some((output) => typeof output === \"string\");\n if (hasStringOutput) {\n if (!outputRange.every((output) => typeof output === \"string\" || typeof output === \"number\")) {\n throw new TypeError(\"outputRange must contain only numbers, or supported scale, translate, and rotate strings\");\n }\n return interpolateString({ input, inputRange, outputRange, options });\n }\n if (outputRange.every((output) => Array.isArray(output))) {\n return interpolateTuple({ input, inputRange, outputRange, options });\n }\n if (!outputRange.every((output) => typeof output === \"number\")) {\n throw new TypeError(\"outputRange must contain only numbers, numeric tuples, or supported scale, translate, and rotate strings\");\n }\n checkInfiniteRange(\"outputRange\", outputRange);\n return interpolateNumber({ input, inputRange, outputRange, options });\n}\n// src/random.ts\nfunction mulberry32(a) {\n let t = a + 1831565813;\n t = Math.imul(t ^ t >>> 15, t | 1);\n t ^= t + Math.imul(t ^ t >>> 7, t | 61);\n return ((t ^ t >>> 14) >>> 0) / 4294967296;\n}\nfunction hashCode(str) {\n let i = 0;\n let chr = 0;\n let hash = 0;\n for (i = 0;i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n return hash;\n}\nvar random = (seed, dummy) => {\n if (dummy !== undefined) {\n throw new TypeError(\"random() takes only one argument\");\n }\n if (seed === null) {\n return Math.random();\n }\n if (typeof seed === \"string\") {\n return mulberry32(hashCode(seed));\n }\n if (typeof seed === \"number\") {\n return mulberry32(seed * 10000000000);\n }\n throw new Error(\"random() argument must be a number or a string\");\n};\n// src/truthy.ts\nfunction truthy(value) {\n return Boolean(value);\n}\n\n// src/delay-render.ts\nif (typeof window !== \"undefined\") {\n window.remotion_renderReady = false;\n if (!window.remotion_delayRenderTimeouts) {\n window.remotion_delayRenderTimeouts = {};\n }\n window.remotion_delayRenderHandles = [];\n}\nvar DELAY_RENDER_CALLSTACK_TOKEN = \"The delayRender was called:\";\nvar DELAY_RENDER_RETRIES_LEFT = \"Retries left: \";\nvar DELAY_RENDER_RETRY_TOKEN = \"- Rendering the frame will be retried.\";\nvar DELAY_RENDER_CLEAR_TOKEN = \"handle was cleared after\";\n\n// src/find-props-to-delete.ts\nvar findPropsToDelete = ({\n schema,\n key,\n value\n}) => {\n const fieldSchema = schema[key];\n if (!fieldSchema) {\n throw new Error(\"Key \" + JSON.stringify(key) + \" not found in schema\");\n }\n if (typeof value !== \"string\") {\n throw new Error(\"Value must be a string, but is \" + JSON.stringify(value));\n }\n if (fieldSchema.type !== \"enum\") {\n throw new Error(\"Key \" + JSON.stringify(key) + \" is not an enum\");\n }\n const currentVariant = fieldSchema.variants[value];\n if (!currentVariant) {\n throw new Error(\"Value for \" + JSON.stringify(key) + \" must be one of \" + Object.keys(fieldSchema.variants).map((v) => JSON.stringify(v)).join(\", \") + \", got \" + JSON.stringify(value));\n }\n const otherVariants = Object.keys(fieldSchema.variants).filter((v) => v !== value);\n const otherKeys = new Set;\n for (const variant of otherVariants) {\n const otherVariant = fieldSchema.variants[variant];\n const keys = Object.keys(otherVariant);\n for (const k of keys) {\n otherKeys.add(k);\n }\n }\n return [...otherKeys];\n};\n\n// src/input-props-serialization.ts\nvar DATE_TOKEN = \"remotion-date:\";\nvar FILE_TOKEN = \"remotion-file:\";\nvar serializeJSONWithSpecialTypes = ({\n data,\n indent,\n staticBase\n}) => {\n let customDateUsed = false;\n let customFileUsed = false;\n let mapUsed = false;\n let setUsed = false;\n try {\n const serializedString = JSON.stringify(data, function(key, value) {\n const item = this[key];\n if (item instanceof Date) {\n customDateUsed = true;\n return `${DATE_TOKEN}${item.toISOString()}`;\n }\n if (item instanceof Map) {\n mapUsed = true;\n return value;\n }\n if (item instanceof Set) {\n setUsed = true;\n return value;\n }\n if (typeof item === \"string\" && staticBase !== null && item.startsWith(staticBase)) {\n customFileUsed = true;\n return `${FILE_TOKEN}${item.replace(staticBase + \"/\", \"\")}`;\n }\n return value;\n }, indent);\n return { serializedString, customDateUsed, customFileUsed, mapUsed, setUsed };\n } catch (err) {\n throw new Error(\"Could not serialize the passed input props to JSON: \" + err.message);\n }\n};\nvar deserializeJSONWithSpecialTypes = (data) => {\n return JSON.parse(data, (_, value) => {\n if (typeof value === \"string\" && value.startsWith(DATE_TOKEN)) {\n return new Date(value.replace(DATE_TOKEN, \"\"));\n }\n if (typeof value === \"string\" && value.startsWith(FILE_TOKEN)) {\n return `${window.remotion_staticBase}/${value.replace(FILE_TOKEN, \"\")}`;\n }\n return value;\n });\n};\n\n// src/interactivity-schema.ts\nvar transformSchema = {\n \"style.transformOrigin\": {\n type: \"transform-origin\",\n step: 1,\n default: \"50% 50%\",\n description: \"Transform origin\"\n },\n \"style.translate\": {\n type: \"translate\",\n step: 1,\n default: \"0px 0px\",\n description: \"Offset\"\n },\n \"style.scale\": {\n type: \"scale\",\n max: 100,\n step: 0.01,\n default: 1,\n description: \"Scale\",\n defaultKeyframeOutput: \"perceptual-scale\"\n },\n \"style.rotate\": {\n type: \"rotation-css\",\n step: 1,\n default: \"0deg\",\n description: \"Rotation\"\n },\n \"style.opacity\": {\n type: \"number\",\n min: 0,\n max: 1,\n step: 0.01,\n default: 1,\n description: \"Opacity\",\n hiddenFromList: false\n }\n};\nvar borderSchema = {\n \"style.borderWidth\": {\n type: \"number\",\n default: undefined,\n min: 0,\n step: 1,\n description: \"Border width\",\n hiddenFromList: false\n },\n \"style.borderStyle\": {\n type: \"enum\",\n default: \"none\",\n description: \"Border style\",\n variants: {\n none: {},\n hidden: {},\n solid: {},\n dashed: {},\n dotted: {},\n double: {},\n groove: {},\n ridge: {},\n inset: {},\n outset: {}\n }\n },\n \"style.borderColor\": {\n type: \"color\",\n default: undefined,\n description: \"Border color\"\n }\n};\nvar borderRadiusSchema = {\n \"style.borderRadius\": {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n description: \"Border radius\",\n hiddenFromList: false,\n keyframable: true\n },\n \"style.borderTopLeftRadius\": {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n description: \"Top left radius\",\n hiddenFromList: false\n },\n \"style.borderTopRightRadius\": {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n description: \"Top right radius\",\n hiddenFromList: false\n },\n \"style.borderBottomRightRadius\": {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n description: \"Bottom right radius\",\n hiddenFromList: false\n },\n \"style.borderBottomLeftRadius\": {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n description: \"Bottom left radius\",\n hiddenFromList: false\n }\n};\nvar backgroundSchema = {\n \"style.backgroundColor\": {\n type: \"color\",\n default: \"transparent\",\n description: \"Color\"\n }\n};\nvar svgStrokeSchema = {\n stroke: {\n type: \"color\",\n default: \"none\",\n description: \"Stroke\"\n },\n strokeWidth: {\n type: \"number\",\n default: 1,\n description: \"Stroke width\",\n min: 0,\n step: 1,\n hiddenFromList: false\n }\n};\nvar svgPaintSchema = {\n fill: {\n type: \"color\",\n default: undefined,\n description: \"Fill\"\n },\n ...svgStrokeSchema\n};\nvar premountSchema = {\n premountFor: {\n type: \"number\",\n default: 0,\n description: \"Premount For\",\n min: 0,\n step: 1,\n hiddenFromList: false,\n keyframable: false\n },\n postmountFor: {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n hiddenFromList: true,\n keyframable: false\n }\n};\nvar sequencePremountSchema = {\n ...premountSchema\n};\nvar cropSchema = {\n cropLeft: {\n type: \"number\",\n default: 0,\n description: \"Crop left\",\n min: 0,\n max: 1,\n step: 0.01,\n hiddenFromList: false,\n keyframable: true\n },\n cropRight: {\n type: \"number\",\n default: 0,\n description: \"Crop right\",\n min: 0,\n max: 1,\n step: 0.01,\n hiddenFromList: false,\n keyframable: true\n },\n cropTop: {\n type: \"number\",\n default: 0,\n description: \"Crop top\",\n min: 0,\n max: 1,\n step: 0.01,\n hiddenFromList: false,\n keyframable: true\n },\n cropBottom: {\n type: \"number\",\n default: 0,\n description: \"Crop bottom\",\n min: 0,\n max: 1,\n step: 0.01,\n hiddenFromList: false,\n keyframable: true\n }\n};\nvar sequenceCropSchema = cropSchema;\nvar sequenceStyleSchema = {\n ...sequenceCropSchema,\n ...transformSchema,\n ...backgroundSchema,\n ...borderSchema,\n ...borderRadiusSchema,\n ...sequencePremountSchema\n};\nvar hiddenField = {\n type: \"boolean\",\n default: false,\n description: \"Hidden\"\n};\nvar showInTimelineField = {\n type: \"hidden\"\n};\nvar sequenceNameField = {\n type: \"hidden\"\n};\nvar durationInFramesField = {\n type: \"number\",\n default: undefined,\n min: 1,\n step: 1,\n hiddenFromList: true\n};\nvar fromField = {\n type: \"number\",\n default: 0,\n step: 1,\n hiddenFromList: true\n};\nvar trimBeforeField = {\n type: \"number\",\n default: 0,\n min: 0,\n step: 1,\n hiddenFromList: true\n};\nvar freezeField = {\n type: \"number\",\n default: null,\n step: 1,\n hiddenFromList: true\n};\nvar baseSchema = {\n durationInFrames: durationInFramesField,\n from: fromField,\n trimBefore: trimBeforeField,\n freeze: freezeField,\n hidden: hiddenField,\n name: sequenceNameField,\n showInTimeline: showInTimelineField\n};\nvar sequenceSchema = {\n ...baseSchema,\n layout: {\n type: \"enum\",\n default: \"absolute-fill\",\n description: \"Layout\",\n variants: {\n \"absolute-fill\": sequenceStyleSchema,\n none: {}\n }\n }\n};\nvar baseSchemaWithoutFrom = {\n durationInFrames: durationInFramesField,\n trimBefore: trimBeforeField,\n freeze: freezeField,\n hidden: hiddenField,\n name: sequenceNameField,\n showInTimeline: showInTimelineField\n};\nvar sequenceSchemaWithoutFrom = {\n ...baseSchemaWithoutFrom,\n layout: sequenceSchema.layout\n};\nvar sequenceSchemaDefaultLayoutNone = {\n ...sequenceSchema,\n layout: {\n ...sequenceSchema.layout,\n default: \"none\"\n }\n};\n\n// src/interpolate-colors.ts\nvar NUMBER = \"[-+]?\\\\d*\\\\.?\\\\d+\";\nvar PERCENTAGE = NUMBER + \"%\";\nfunction call(...args) {\n return \"\\\\(\\\\s*(\" + args.join(\")\\\\s*,\\\\s*(\") + \")\\\\s*\\\\)\";\n}\nvar MODERN_VALUE = \"(?:none|[-+]?\\\\d*\\\\.?\\\\d+(?:%|deg|rad|grad|turn)?)\";\nfunction modernColorCall(name) {\n return new RegExp(name + \"\\\\(\\\\s*(\" + MODERN_VALUE + \")\\\\s+(\" + MODERN_VALUE + \")\\\\s+(\" + MODERN_VALUE + \")(?:\\\\s*\\\\/\\\\s*(\" + MODERN_VALUE + \"))?\\\\s*\\\\)\");\n}\nfunction getMatchers() {\n const cachedMatchers = {\n rgb: undefined,\n rgba: undefined,\n hsl: undefined,\n hsla: undefined,\n hex3: undefined,\n hex4: undefined,\n hex5: undefined,\n hex6: undefined,\n hex8: undefined,\n oklch: undefined,\n oklab: undefined,\n lab: undefined,\n lch: undefined,\n hwb: undefined\n };\n if (cachedMatchers.rgb === undefined) {\n cachedMatchers.rgb = new RegExp(\"rgb\" + call(NUMBER, NUMBER, NUMBER));\n cachedMatchers.rgba = new RegExp(\"rgba\" + call(NUMBER, NUMBER, NUMBER, NUMBER));\n cachedMatchers.hsl = new RegExp(\"hsl\" + call(NUMBER, PERCENTAGE, PERCENTAGE));\n cachedMatchers.hsla = new RegExp(\"hsla\" + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\n cachedMatchers.hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\n cachedMatchers.hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\n cachedMatchers.hex6 = /^#([0-9a-fA-F]{6})$/;\n cachedMatchers.hex8 = /^#([0-9a-fA-F]{8})$/;\n cachedMatchers.oklch = modernColorCall(\"oklch\");\n cachedMatchers.oklab = modernColorCall(\"oklab\");\n cachedMatchers.lab = modernColorCall(\"lab\");\n cachedMatchers.lch = modernColorCall(\"lch\");\n cachedMatchers.hwb = modernColorCall(\"hwb\");\n }\n return cachedMatchers;\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\nfunction hslToRgb(h, s, l) {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\nfunction parse255(str) {\n const int = Number.parseInt(str, 10);\n if (int < 0) {\n return 0;\n }\n if (int > 255) {\n return 255;\n }\n return int;\n}\nfunction parse360(str) {\n const int = Number.parseFloat(str);\n return (int % 360 + 360) % 360 / 360;\n}\nfunction parse1(str) {\n const num = Number.parseFloat(str);\n if (num < 0) {\n return 0;\n }\n if (num > 1) {\n return 255;\n }\n return Math.round(num * 255);\n}\nfunction parsePercentage(str) {\n const int = Number.parseFloat(str);\n if (int < 0) {\n return 0;\n }\n if (int > 100) {\n return 1;\n }\n return int / 100;\n}\nfunction parseModernComponent(str, percentScale) {\n if (str === \"none\")\n return 0;\n if (str.endsWith(\"%\")) {\n return Number.parseFloat(str) / 100 * percentScale;\n }\n return Number.parseFloat(str);\n}\nfunction parseHueAngle(str) {\n if (str === \"none\")\n return 0;\n if (str.endsWith(\"rad\")) {\n return Number.parseFloat(str) * 180 / Math.PI;\n }\n if (str.endsWith(\"grad\"))\n return Number.parseFloat(str) * 0.9;\n if (str.endsWith(\"turn\"))\n return Number.parseFloat(str) * 360;\n return Number.parseFloat(str);\n}\nfunction parseModernAlpha(str) {\n if (str === undefined || str === \"none\")\n return 1;\n if (str.endsWith(\"%\")) {\n return Math.max(0, Math.min(1, Number.parseFloat(str) / 100));\n }\n return Math.max(0, Math.min(1, Number.parseFloat(str)));\n}\nfunction linearToSrgb(c) {\n if (c <= 0.0031308)\n return 12.92 * c;\n return 1.055 * c ** (1 / 2.4) - 0.055;\n}\nfunction clamp01(v) {\n return Math.max(0, Math.min(1, v));\n}\nfunction rgbFloatToInt(r, g, b, alpha) {\n const ri = Math.round(clamp01(r) * 255);\n const gi = Math.round(clamp01(g) * 255);\n const bi = Math.round(clamp01(b) * 255);\n const ai = Math.round(clamp01(alpha) * 255);\n return (ri << 24 | gi << 16 | bi << 8 | ai) >>> 0;\n}\nfunction oklabToSrgb(L, a, b) {\n const l_ = L + 0.3963377774 * a + 0.2158037573 * b;\n const m_ = L - 0.1055613458 * a - 0.0638541728 * b;\n const s_ = L - 0.0894841775 * a - 1.291485548 * b;\n const l = l_ * l_ * l_;\n const m = m_ * m_ * m_;\n const s = s_ * s_ * s_;\n const rLin = 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s;\n const gLin = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s;\n const bLin = -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s;\n return [linearToSrgb(rLin), linearToSrgb(gLin), linearToSrgb(bLin)];\n}\nfunction labToSrgb(L, a, b) {\n const epsilon = 216 / 24389;\n const kappa = 24389 / 27;\n const Xn = 0.95047;\n const Yn = 1;\n const Zn = 1.08883;\n const fy = (L + 16) / 116;\n const fx = a / 500 + fy;\n const fz = fy - b / 200;\n const fx3 = fx * fx * fx;\n const fz3 = fz * fz * fz;\n const xr = fx3 > epsilon ? fx3 : (116 * fx - 16) / kappa;\n const yr = L > kappa * epsilon ? ((L + 16) / 116) ** 3 : L / kappa;\n const zr = fz3 > epsilon ? fz3 : (116 * fz - 16) / kappa;\n const X = xr * Xn;\n const Y = yr * Yn;\n const Z = zr * Zn;\n const rLin = 3.2404542 * X - 1.5371385 * Y - 0.4985314 * Z;\n const gLin = -0.969266 * X + 1.8760108 * Y + 0.041556 * Z;\n const bLin = 0.0556434 * X - 0.2040259 * Y + 1.0572252 * Z;\n return [linearToSrgb(rLin), linearToSrgb(gLin), linearToSrgb(bLin)];\n}\nfunction hwbToSrgb(h, w, bk) {\n if (w + bk >= 1) {\n const gray = w / (w + bk);\n return [gray, gray, gray];\n }\n const q = 1;\n const p = 0;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const bl = hue2rgb(p, q, h - 1 / 3);\n const factor = 1 - w - bk;\n return [r * factor + w, g * factor + w, bl * factor + w];\n}\nvar colorNames = {\n transparent: 0,\n aliceblue: 4042850303,\n antiquewhite: 4209760255,\n aqua: 16777215,\n aquamarine: 2147472639,\n azure: 4043309055,\n beige: 4126530815,\n bisque: 4293182719,\n black: 255,\n blanchedalmond: 4293643775,\n blue: 65535,\n blueviolet: 2318131967,\n brown: 2771004159,\n burlywood: 3736635391,\n burntsienna: 3934150143,\n cadetblue: 1604231423,\n chartreuse: 2147418367,\n chocolate: 3530104575,\n coral: 4286533887,\n cornflowerblue: 1687547391,\n cornsilk: 4294499583,\n crimson: 3692313855,\n cyan: 16777215,\n darkblue: 35839,\n darkcyan: 9145343,\n darkgoldenrod: 3095792639,\n darkgray: 2846468607,\n darkgreen: 6553855,\n darkgrey: 2846468607,\n darkkhaki: 3182914559,\n darkmagenta: 2332068863,\n darkolivegreen: 1433087999,\n darkorange: 4287365375,\n darkorchid: 2570243327,\n darkred: 2332033279,\n darksalmon: 3918953215,\n darkseagreen: 2411499519,\n darkslateblue: 1211993087,\n darkslategray: 793726975,\n darkslategrey: 793726975,\n darkturquoise: 13554175,\n darkviolet: 2483082239,\n deeppink: 4279538687,\n deepskyblue: 12582911,\n dimgray: 1768516095,\n dimgrey: 1768516095,\n dodgerblue: 512819199,\n firebrick: 2988581631,\n floralwhite: 4294635775,\n forestgreen: 579543807,\n fuchsia: 4278255615,\n gainsboro: 3705462015,\n ghostwhite: 4177068031,\n gold: 4292280575,\n goldenrod: 3668254975,\n gray: 2155905279,\n green: 8388863,\n greenyellow: 2919182335,\n grey: 2155905279,\n honeydew: 4043305215,\n hotpink: 4285117695,\n indianred: 3445382399,\n indigo: 1258324735,\n ivory: 4294963455,\n khaki: 4041641215,\n lavender: 3873897215,\n lavenderblush: 4293981695,\n lawngreen: 2096890111,\n lemonchiffon: 4294626815,\n lightblue: 2916673279,\n lightcoral: 4034953471,\n lightcyan: 3774873599,\n lightgoldenrodyellow: 4210742015,\n lightgray: 3553874943,\n lightgreen: 2431553791,\n lightgrey: 3553874943,\n lightpink: 4290167295,\n lightsalmon: 4288707327,\n lightseagreen: 548580095,\n lightskyblue: 2278488831,\n lightslategray: 2005441023,\n lightslategrey: 2005441023,\n lightsteelblue: 2965692159,\n lightyellow: 4294959359,\n lime: 16711935,\n limegreen: 852308735,\n linen: 4210091775,\n magenta: 4278255615,\n maroon: 2147483903,\n mediumaquamarine: 1724754687,\n mediumblue: 52735,\n mediumorchid: 3126187007,\n mediumpurple: 2473647103,\n mediumseagreen: 1018393087,\n mediumslateblue: 2070474495,\n mediumspringgreen: 16423679,\n mediumturquoise: 1221709055,\n mediumvioletred: 3340076543,\n midnightblue: 421097727,\n mintcream: 4127193855,\n mistyrose: 4293190143,\n moccasin: 4293178879,\n navajowhite: 4292783615,\n navy: 33023,\n oldlace: 4260751103,\n olive: 2155872511,\n olivedrab: 1804477439,\n orange: 4289003775,\n orangered: 4282712319,\n orchid: 3664828159,\n palegoldenrod: 4008225535,\n palegreen: 2566625535,\n paleturquoise: 2951671551,\n palevioletred: 3681588223,\n papayawhip: 4293907967,\n peachpuff: 4292524543,\n peru: 3448061951,\n pink: 4290825215,\n plum: 3718307327,\n powderblue: 2967529215,\n purple: 2147516671,\n rebeccapurple: 1714657791,\n red: 4278190335,\n rosybrown: 3163525119,\n royalblue: 1097458175,\n saddlebrown: 2336560127,\n salmon: 4202722047,\n sandybrown: 4104413439,\n seagreen: 780883967,\n seashell: 4294307583,\n sienna: 2689740287,\n silver: 3233857791,\n skyblue: 2278484991,\n slateblue: 1784335871,\n slategray: 1887473919,\n slategrey: 1887473919,\n snow: 4294638335,\n springgreen: 16744447,\n steelblue: 1182971135,\n tan: 3535047935,\n teal: 8421631,\n thistle: 3636451583,\n tomato: 4284696575,\n turquoise: 1088475391,\n violet: 4001558271,\n wheat: 4125012991,\n white: 4294967295,\n whitesmoke: 4126537215,\n yellow: 4294902015,\n yellowgreen: 2597139199\n};\nfunction normalizeColor(color) {\n const matchers = getMatchers();\n let match;\n if (matchers.hex6) {\n if (match = matchers.hex6.exec(color)) {\n return Number.parseInt(match[1] + \"ff\", 16) >>> 0;\n }\n }\n if (colorNames[color] !== undefined) {\n return colorNames[color];\n }\n if (matchers.rgb) {\n if (match = matchers.rgb.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | 255) >>> 0;\n }\n }\n if (matchers.rgba) {\n if (match = matchers.rgba.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | parse1(match[4])) >>> 0;\n }\n }\n if (matchers.hex3) {\n if (match = matchers.hex3.exec(color)) {\n return Number.parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + \"ff\", 16) >>> 0;\n }\n }\n if (matchers.hex8) {\n if (match = matchers.hex8.exec(color)) {\n return Number.parseInt(match[1], 16) >>> 0;\n }\n }\n if (matchers.hex4) {\n if (match = matchers.hex4.exec(color)) {\n return Number.parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + match[4] + match[4], 16) >>> 0;\n }\n }\n if (matchers.hsl) {\n if (match = matchers.hsl.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | 255) >>> 0;\n }\n }\n if (matchers.hsla) {\n if (match = matchers.hsla.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | parse1(match[4])) >>> 0;\n }\n }\n if (matchers.oklch) {\n if (match = matchers.oklch.exec(color)) {\n const L = parseModernComponent(match[1], 1);\n const C = parseModernComponent(match[2], 0.4);\n const H = parseHueAngle(match[3]);\n const alpha = parseModernAlpha(match[4]);\n const hRad = H * Math.PI / 180;\n const [r, g, b] = oklabToSrgb(L, C * Math.cos(hRad), C * Math.sin(hRad));\n return rgbFloatToInt(r, g, b, alpha);\n }\n }\n if (matchers.oklab) {\n if (match = matchers.oklab.exec(color)) {\n const L = parseModernComponent(match[1], 1);\n const a = parseModernComponent(match[2], 0.4);\n const b = parseModernComponent(match[3], 0.4);\n const alpha = parseModernAlpha(match[4]);\n const [r, g, bl] = oklabToSrgb(L, a, b);\n return rgbFloatToInt(r, g, bl, alpha);\n }\n }\n if (matchers.lab) {\n if (match = matchers.lab.exec(color)) {\n const L = parseModernComponent(match[1], 100);\n const a = parseModernComponent(match[2], 125);\n const b = parseModernComponent(match[3], 125);\n const alpha = parseModernAlpha(match[4]);\n const [r, g, bl] = labToSrgb(L, a, b);\n return rgbFloatToInt(r, g, bl, alpha);\n }\n }\n if (matchers.lch) {\n if (match = matchers.lch.exec(color)) {\n const L = parseModernComponent(match[1], 100);\n const C = parseModernComponent(match[2], 150);\n const H = parseHueAngle(match[3]);\n const alpha = parseModernAlpha(match[4]);\n const hRad = H * Math.PI / 180;\n const [r, g, bl] = labToSrgb(L, C * Math.cos(hRad), C * Math.sin(hRad));\n return rgbFloatToInt(r, g, bl, alpha);\n }\n }\n if (matchers.hwb) {\n if (match = matchers.hwb.exec(color)) {\n const H = parseHueAngle(match[1]);\n const W = parseModernComponent(match[2], 1);\n const B = parseModernComponent(match[3], 1);\n const alpha = parseModernAlpha(match[4]);\n const [r, g, bl] = hwbToSrgb(H / 360, W, B);\n return rgbFloatToInt(r, g, bl, alpha);\n }\n }\n throw new Error(`invalid color string ${color} provided`);\n}\nfunction processColor(color) {\n const normalizedColor = normalizeColor(color);\n return (normalizedColor << 24 | normalizedColor >>> 8) >>> 0;\n}\n\n// src/prores-profile.ts\nvar proResProfileOptions = [\n \"4444-xq\",\n \"4444\",\n \"hq\",\n \"standard\",\n \"light\",\n \"proxy\"\n];\n\n// src/scale-value.ts\nvar defaultScaleValue = [1, 1, 1];\nvar parseScaleString = (value) => {\n const parts = value.trim().split(/\\s+/);\n if (parts.length < 1 || parts.length > 3 || parts[0] === \"\") {\n return null;\n }\n const parsed = parts.map((part) => Number(part));\n if (!parsed.every((part) => Number.isFinite(part))) {\n return null;\n }\n const x = parsed[0];\n const y = parsed[1] ?? x;\n const z = parsed[2] ?? 1;\n return [x, y, z];\n};\nvar parseValidScaleValue = (value) => {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? [value, value, 1] : null;\n }\n if (typeof value === \"string\") {\n return parseScaleString(value);\n }\n return null;\n};\nvar parseScaleValue = (value) => {\n return parseValidScaleValue(value) ?? defaultScaleValue;\n};\nvar serializeScaleValue = ([x, y, z]) => {\n const normalizedX = normalizeNumber(x);\n const normalizedY = normalizeNumber(y);\n const normalizedZ = normalizeNumber(z);\n if (normalizedX === normalizedY && normalizedZ === 1) {\n return normalizedX;\n }\n if (normalizedZ === 1) {\n return `${normalizedX} ${normalizedY}`;\n }\n return `${normalizedX} ${normalizedY} ${normalizedZ}`;\n};\n\n// src/v5-flag.ts\nvar ENABLE_V5_BREAKING_CHANGES = false;\n\n// src/validate-frame.ts\nvar validateFrame = ({\n allowFloats,\n durationInFrames,\n frame\n}) => {\n if (typeof frame === \"undefined\") {\n throw new TypeError(`Argument missing for parameter \"frame\"`);\n }\n if (typeof frame !== \"number\") {\n throw new TypeError(`Argument passed for \"frame\" is not a number: ${frame}`);\n }\n if (!Number.isFinite(frame)) {\n throw new RangeError(`Frame ${frame} is not finite`);\n }\n if (frame % 1 !== 0 && !allowFloats) {\n throw new RangeError(`Argument for frame must be an integer, but got ${frame}`);\n }\n if (frame < 0 && frame < -durationInFrames) {\n throw new RangeError(`Cannot use frame ${frame}: Duration of composition is ${durationInFrames}, therefore the lowest frame that can be rendered is ${-durationInFrames}`);\n }\n if (frame > durationInFrames - 1) {\n throw new RangeError(`Cannot use frame ${frame}: Duration of composition is ${durationInFrames}, therefore the highest frame that can be rendered is ${durationInFrames - 1}`);\n }\n};\n\n// src/codec.ts\nvar validCodecs = [\n \"h264\",\n \"h265\",\n \"vp8\",\n \"vp9\",\n \"av1\",\n \"mp3\",\n \"aac\",\n \"wav\",\n \"prores\",\n \"h264-mkv\",\n \"h264-ts\",\n \"gif\"\n];\n\n// src/validation/validate-default-codec.ts\nfunction validateCodec(defaultCodec, location, name) {\n if (typeof defaultCodec === \"undefined\") {\n return;\n }\n if (typeof defaultCodec !== \"string\") {\n throw new TypeError(`The \"${name}\" prop ${location} must be a string, but you passed a value of type ${typeof defaultCodec}.`);\n }\n if (!validCodecs.includes(defaultCodec)) {\n throw new Error(`The \"${name}\" prop ${location} must be one of ${validCodecs.join(\", \")}, but you passed ${defaultCodec}.`);\n }\n}\n\n// src/validation/validate-default-props.ts\nvar validateDefaultAndInputProps = (defaultProps, name, compositionId) => {\n if (!defaultProps) {\n return;\n }\n if (typeof defaultProps !== \"object\") {\n throw new Error(`\"${name}\" must be an object, but you passed a value of type ${typeof defaultProps}`);\n }\n if (Array.isArray(defaultProps)) {\n throw new Error(`\"${name}\" must be an object, an array was passed ${compositionId ? `for composition \"${compositionId}\"` : \"\"}`);\n }\n};\n\n// src/validation/validate-dimensions.ts\nfunction validateDimension(amount, nameOfProp, location) {\n if (typeof amount !== \"number\") {\n throw new Error(`The \"${nameOfProp}\" prop ${location} must be a number, but you passed a value of type ${typeof amount}`);\n }\n if (isNaN(amount)) {\n throw new TypeError(`The \"${nameOfProp}\" prop ${location} must not be NaN, but is NaN.`);\n }\n if (!Number.isFinite(amount)) {\n throw new TypeError(`The \"${nameOfProp}\" prop ${location} must be finite, but is ${amount}.`);\n }\n if (amount % 1 !== 0) {\n throw new TypeError(`The \"${nameOfProp}\" prop ${location} must be an integer, but is ${amount}.`);\n }\n if (amount <= 0) {\n throw new TypeError(`The \"${nameOfProp}\" prop ${location} must be positive, but got ${amount}.`);\n }\n}\n\n// src/validation/validate-duration-in-frames.ts\nfunction validateDurationInFrames(durationInFrames, options) {\n const { allowFloats, component } = options;\n if (typeof durationInFrames === \"undefined\") {\n throw new Error(`The \"durationInFrames\" prop ${component} is missing.`);\n }\n if (typeof durationInFrames !== \"number\") {\n throw new Error(`The \"durationInFrames\" prop ${component} must be a number, but you passed a value of type ${typeof durationInFrames}`);\n }\n if (durationInFrames <= 0) {\n throw new TypeError(`The \"durationInFrames\" prop ${component} must be positive, but got ${durationInFrames}.`);\n }\n if (!allowFloats && durationInFrames % 1 !== 0) {\n throw new TypeError(`The \"durationInFrames\" prop ${component} must be an integer, but got ${durationInFrames}.`);\n }\n if (!Number.isFinite(durationInFrames)) {\n throw new TypeError(`The \"durationInFrames\" prop ${component} must be finite, but got ${durationInFrames}.`);\n }\n}\n\n// src/validation/validate-fps.ts\nfunction validateFps(fps, location, isGif) {\n if (typeof fps !== \"number\") {\n throw new Error(`\"fps\" must be a number, but you passed a value of type ${typeof fps} ${location}`);\n }\n if (!Number.isFinite(fps)) {\n throw new Error(`\"fps\" must be a finite, but you passed ${fps} ${location}`);\n }\n if (isNaN(fps)) {\n throw new Error(`\"fps\" must not be NaN, but got ${fps} ${location}`);\n }\n if (fps <= 0) {\n throw new TypeError(`\"fps\" must be positive, but got ${fps} ${location}`);\n }\n if (isGif && fps > 50) {\n throw new TypeError(`The FPS for a GIF cannot be higher than 50. Use the --every-nth-frame option to lower the FPS: https://remotion.dev/docs/render-as-gif`);\n }\n}\n\n// src/video/get-current-time.ts\nvar getExpectedMediaFrameUncorrected = ({\n frame,\n playbackRate,\n startFrom\n}) => {\n return interpolate(frame, [-1, startFrom, startFrom + 1], [-1, startFrom, startFrom + playbackRate]);\n};\n\n// src/absolute-src.ts\nvar getAbsoluteSrc = (relativeSrc) => {\n if (typeof window === \"undefined\") {\n return relativeSrc;\n }\n if (relativeSrc.startsWith(\"http://\") || relativeSrc.startsWith(\"https://\") || relativeSrc.startsWith(\"file://\") || relativeSrc.startsWith(\"blob:\") || relativeSrc.startsWith(\"data:\")) {\n return relativeSrc;\n }\n return new URL(relativeSrc, window.origin).href;\n};\n\n// src/video/offthread-video-source.ts\nvar getOffthreadVideoSource = ({\n src,\n transparent,\n currentTime,\n toneMapped\n}) => {\n return `http://localhost:${window.remotion_proxyPort}/proxy?src=${encodeURIComponent(getAbsoluteSrc(src))}&time=${encodeURIComponent(Math.max(0, currentTime))}&transparent=${String(transparent)}&toneMapped=${String(toneMapped)}`;\n};\n\n// src/no-react.ts\nvar NoReactInternals = {\n processColor,\n truthy,\n validateFps,\n validateDimension,\n validateDurationInFrames,\n validateDefaultAndInputProps,\n validateFrame,\n serializeJSONWithSpecialTypes,\n bundleName: \"bundle.js\",\n bundleMapName: \"bundle.js.map\",\n deserializeJSONWithSpecialTypes,\n DELAY_RENDER_CALLSTACK_TOKEN,\n DELAY_RENDER_RETRY_TOKEN,\n DELAY_RENDER_CLEAR_TOKEN,\n DELAY_RENDER_ATTEMPT_TOKEN: DELAY_RENDER_RETRIES_LEFT,\n getOffthreadVideoSource,\n getExpectedMediaFrameUncorrected,\n ENABLE_V5_BREAKING_CHANGES,\n MIN_NODE_VERSION: ENABLE_V5_BREAKING_CHANGES ? 22 : 16,\n MIN_BUN_VERSION: ENABLE_V5_BREAKING_CHANGES ? \"1.1.3\" : \"1.0.3\",\n MIN_ESLINT_VERSION: ENABLE_V5_BREAKING_CHANGES ? \"8.57.0\" : \"7.15.0\",\n colorNames,\n DATE_TOKEN,\n FILE_TOKEN,\n validateCodec,\n proResProfileOptions,\n findPropsToDelete,\n sequenceSchema,\n parseScaleValue,\n serializeScaleValue\n};\nexport {\n random,\n interpolate,\n assertValidInterpolatePosterizeOption,\n assertValidInterpolateEasingOption,\n NoReactInternals\n};\n","import React, { useMemo } from \"react\";\n\ntype EnteringState = {\n enteringProgress: number;\n};\n\ntype ExitingState = {\n exitingProgress: number;\n};\n\nexport const EnteringContext = React.createContext<EnteringState | null>(null);\nexport const ExitingContext = React.createContext<ExitingState | null>(null);\n\nexport const WrapInEnteringProgressContext: React.FC<{\n readonly presentationProgress: number;\n readonly children: React.ReactNode;\n}> = ({ presentationProgress, children }) => {\n const value: EnteringState = useMemo(() => {\n return {\n enteringProgress: presentationProgress\n };\n }, [presentationProgress]);\n\n return (\n <EnteringContext.Provider value={value}>\n {children}\n </EnteringContext.Provider>\n );\n};\n\nexport const WrapInExitingProgressContext: React.FC<{\n readonly presentationProgress: number;\n readonly children: React.ReactNode;\n}> = ({ presentationProgress, children }) => {\n const value: ExitingState = useMemo(() => {\n return {\n exitingProgress: presentationProgress\n };\n }, [presentationProgress]);\n\n return (\n <ExitingContext.Provider value={value}>{children}</ExitingContext.Provider>\n );\n};\n","import type { PropsWithChildren } from \"react\";\nimport React from \"react\";\n\ntype ReactChildArray = ReturnType<typeof React.Children.toArray>;\n\nexport const flattenChildren = (children: React.ReactNode): ReactChildArray => {\n const childrenArray = React.Children.toArray(children);\n return childrenArray.reduce((flatChildren: ReactChildArray, child) => {\n if ((child as React.ReactElement<unknown>).type === React.Fragment) {\n return flatChildren.concat(\n flattenChildren(\n (child as React.ReactElement<PropsWithChildren<unknown>>).props\n .children\n )\n );\n }\n\n flatChildren.push(child);\n return flatChildren;\n }, []);\n};\n","import React, { useMemo } from \"react\";\nimport { AbsoluteFill } from \"remotion\";\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps\n} from \"../types\";\n\nexport type SlideDirection =\n \"from-left\" | \"from-top\" | \"from-right\" | \"from-bottom\";\n\nexport type SlideProps = {\n direction?: SlideDirection;\n exitStyle?: React.CSSProperties;\n enterStyle?: React.CSSProperties;\n};\n\nconst epsilon = 0.01;\n\nconst SlidePresentation: React.FC<\n TransitionPresentationComponentProps<SlideProps>\n> = ({\n children,\n presentationProgress,\n presentationDirection,\n passedProps: { direction = \"from-left\", enterStyle, exitStyle }\n}) => {\n const directionStyle = useMemo((): React.CSSProperties => {\n // Overlay the two slides barely to avoid a white line between them\n // Remove the correction once the presentation progress is 1\n const presentationProgressWithEpsilonCorrection =\n presentationProgress === 1\n ? presentationProgress * 100\n : presentationProgress * 100 - epsilon;\n\n if (presentationDirection === \"exiting\") {\n switch (direction) {\n case \"from-left\":\n return {\n transform: `translateX(${presentationProgressWithEpsilonCorrection}%)`\n };\n case \"from-right\":\n return {\n transform: `translateX(${-presentationProgress * 100}%)`\n };\n case \"from-top\":\n return {\n transform: `translateY(${presentationProgressWithEpsilonCorrection}%)`\n };\n case \"from-bottom\":\n return {\n transform: `translateY(${-presentationProgress * 100}%)`\n };\n default:\n throw new Error(`Invalid direction: ${direction}`);\n }\n }\n\n switch (direction) {\n case \"from-left\":\n return {\n transform: `translateX(${-100 + presentationProgress * 100}%)`\n };\n case \"from-right\":\n return {\n transform: `translateX(${\n 100 - presentationProgressWithEpsilonCorrection\n }%)`\n };\n case \"from-top\":\n return {\n transform: `translateY(${-100 + presentationProgress * 100}%)`\n };\n case \"from-bottom\":\n return {\n transform: `translateY(${\n 100 - presentationProgressWithEpsilonCorrection\n }%)`\n };\n default:\n throw new Error(`Invalid direction: ${direction}`);\n }\n }, [presentationDirection, presentationProgress, direction]);\n\n const style: React.CSSProperties = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n ...directionStyle,\n ...(presentationDirection === \"entering\" ? enterStyle : exitStyle)\n };\n }, [directionStyle, enterStyle, exitStyle, presentationDirection]);\n\n return <AbsoluteFill style={style}>{children}</AbsoluteFill>;\n};\n\n/**\n * Implements a sliding transition for presentation components where the entering slide pushes out the exiting slide based on the specified direction.\n * @see [Documentation](https://remotion.dev/docs/transitions/presentations/slide)\n * @param {SlideProps} [props] Configuration options for the slide transition: includes direction, enterStyle, and exitStyle.\n * @returns {TransitionPresentation<SlideProps>} Returns a transition configuration object including the component and its props.\n */\nexport const slide = (\n props?: SlideProps\n): TransitionPresentation<SlideProps> => {\n return {\n component: SlidePresentation,\n props: props ?? {}\n };\n};\n","/* eslint-disable prefer-destructuring */\nimport { NoReactInternals } from \"remotion/no-react\";\n\nexport const validateDurationInFrames: typeof NoReactInternals.validateDurationInFrames =\n NoReactInternals.validateDurationInFrames;\n","import type { FC, PropsWithChildren } from \"react\";\nimport { Children, useMemo } from \"react\";\nimport type {\n AbsoluteFillLayout,\n LayoutAndStyle,\n SequencePropsWithoutDuration\n} from \"remotion\";\nimport {\n Freeze,\n Internals,\n Sequence,\n useCurrentFrame,\n useVideoConfig\n} from \"remotion\";\n\n// Type assertions to resolve React 19 compatibility issues\nimport { NoReactInternals } from \"remotion/no-react\";\nimport {\n WrapInEnteringProgressContext,\n WrapInExitingProgressContext\n} from \"./context\";\nimport { flattenChildren } from \"./flatten-children\";\nimport { slide } from \"./presentations/slide\";\nimport type { TransitionSeriesTransitionProps } from \"./types\";\nimport { validateDurationInFrames } from \"./validate\";\n\n// eslint-disable-next-line react/function-component-definition\nconst TransitionSeriesTransition = function <\n PresentationProps extends Record<string, unknown>\n>(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _props: TransitionSeriesTransitionProps<PresentationProps>\n) {\n return null;\n};\n\ntype LayoutBasedProps =\n true extends typeof NoReactInternals.ENABLE_V5_BREAKING_CHANGES\n ? AbsoluteFillLayout\n : LayoutAndStyle;\n\ntype SeriesSequenceProps = PropsWithChildren<\n {\n readonly durationInFrames: number;\n readonly offset?: number;\n readonly className?: string;\n /**\n * @deprecated For internal use only\n */\n readonly stack?: string;\n } & LayoutBasedProps &\n Pick<SequencePropsWithoutDuration, \"name\">\n>;\n\nconst SeriesSequence = ({ children }: SeriesSequenceProps) => {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children}</>;\n};\n\ntype TransitionType<PresentationProps extends Record<string, unknown>> = {\n props: TransitionSeriesTransitionProps<PresentationProps>;\n type: typeof TransitionSeriesTransition;\n};\n\ntype TypeChild<PresentationProps extends Record<string, unknown>> =\n | {\n props: SeriesSequenceProps;\n type: typeof SeriesSequence;\n }\n | TransitionType<PresentationProps>\n | string;\n\nconst TransitionSeriesChildren: FC<{ readonly children: React.ReactNode }> = ({\n children\n}) => {\n const { fps } = useVideoConfig();\n const frame = useCurrentFrame();\n const childrenValue = useMemo(() => {\n let transitionOffsets = 0;\n let startFrame = 0;\n const flattedChildren = flattenChildren(children);\n\n return Children.map(flattedChildren, (child, i) => {\n const current = child as unknown as TypeChild<Record<string, unknown>>;\n if (typeof current === \"string\") {\n // Don't throw if it's just some accidential whitespace\n if (current.trim() === \"\") {\n return null;\n }\n\n throw new TypeError(\n `The <TransitionSeries /> component only accepts a list of <TransitionSeries.Sequence /> components as its children, but you passed a string \"${current}\"`\n );\n }\n\n const hasPrev = flattedChildren[i - 1] as TypeChild<\n Record<string, unknown>\n >;\n const nextPrev = flattedChildren[i + 1] as TypeChild<\n Record<string, unknown>\n >;\n\n const prev: TransitionType<Record<string, unknown>> | null =\n typeof hasPrev === \"string\" || typeof hasPrev === \"undefined\"\n ? null\n : hasPrev.type === TransitionSeriesTransition\n ? (hasPrev as TransitionType<Record<string, unknown>>)\n : null;\n\n const next: TransitionType<Record<string, unknown>> | null =\n typeof nextPrev === \"string\" || typeof nextPrev === \"undefined\"\n ? null\n : nextPrev.type === TransitionSeriesTransition\n ? (nextPrev as TransitionType<Record<string, unknown>>)\n : null;\n\n const prevIsTransition =\n typeof hasPrev === \"string\" || typeof hasPrev === \"undefined\"\n ? false\n : hasPrev.type === TransitionSeriesTransition;\n\n if (current.type === TransitionSeriesTransition) {\n if (prevIsTransition) {\n throw new TypeError(\n `A <TransitionSeries.Transition /> component must not be followed by another <TransitionSeries.Transition /> component (nth children = ${\n i - 1\n } and ${i})`\n );\n }\n\n return null;\n }\n\n if (current.type !== SeriesSequence) {\n throw new TypeError(\n `The <TransitionSeries /> component only accepts a list of <TransitionSeries.Sequence /> and <TransitionSeries.Transition /> components as its children, but got ${current} instead`\n );\n }\n\n const castedChildAgain = current as {\n props: SeriesSequenceProps;\n type: typeof SeriesSequence;\n };\n\n const debugInfo = `index = ${i}, duration = ${castedChildAgain.props.durationInFrames}`;\n\n if (!castedChildAgain?.props.children) {\n throw new TypeError(\n `A <TransitionSeries.Sequence /> component (${debugInfo}) was detected to not have any children. Delete it to fix this error.`\n );\n }\n\n const durationInFramesProp = castedChildAgain.props.durationInFrames;\n const {\n durationInFrames,\n children: _children,\n ...passedProps\n } = castedChildAgain.props;\n validateDurationInFrames(durationInFramesProp, {\n component: `of a <TransitionSeries.Sequence /> component`,\n allowFloats: true\n });\n const offset = castedChildAgain.props.offset ?? 0;\n if (Number.isNaN(offset)) {\n throw new TypeError(\n `The \"offset\" property of a <TransitionSeries.Sequence /> must not be NaN, but got NaN (${debugInfo}).`\n );\n }\n\n if (!Number.isFinite(offset)) {\n throw new TypeError(\n `The \"offset\" property of a <TransitionSeries.Sequence /> must be finite, but got ${offset} (${debugInfo}).`\n );\n }\n\n if (offset % 1 !== 0) {\n throw new TypeError(\n `The \"offset\" property of a <TransitionSeries.Sequence /> must be finite, but got ${offset} (${debugInfo}).`\n );\n }\n const currentStartFrame = startFrame + offset;\n let duration = 0;\n\n if (prev) {\n duration = prev.props.timing.getDurationInFrames({\n fps\n });\n transitionOffsets -= duration / 2;\n }\n\n let actualStartFrame = currentStartFrame - duration / 2;\n\n startFrame += durationInFramesProp + offset;\n\n // Handle the case where the first item is a transition\n if (actualStartFrame < 0) {\n // startFrame -= actualStartFrame;\n actualStartFrame = 0;\n }\n\n const nextProgress = next\n ? next.props.timing.getProgress({\n frame:\n frame -\n actualStartFrame -\n durationInFrames +\n next.props.timing.getDurationInFrames({ fps }) / 2 +\n transitionOffsets,\n fps\n })\n : null;\n\n const prevProgress = prev\n ? prev.props.timing.getProgress({\n frame: frame - actualStartFrame,\n fps\n })\n : null;\n\n const nextProgressIn = prev\n ? prev.props.timing.getProgress({\n frame: frame - (actualStartFrame + durationInFrames),\n fps\n })\n : null;\n\n if (\n next &&\n durationInFramesProp <\n next.props.timing.getDurationInFrames({ fps }) / 2\n ) {\n throw new Error(\n `The duration of a <TransitionSeries.Sequence /> must not be shorter than the duration of the next <TransitionSeries.Transition />. The transition is ${next.props.timing.getDurationInFrames(\n { fps }\n )} frames long, but the sequence is only ${durationInFramesProp} frames long (${debugInfo})`\n );\n }\n\n if (\n prev &&\n durationInFramesProp <\n prev.props.timing.getDurationInFrames({ fps }) / 2\n ) {\n throw new Error(\n `The duration of a <TransitionSeries.Sequence /> must not be shorter than the duration of the previous <TransitionSeries.Transition />. The transition is ${prev.props.timing.getDurationInFrames(\n { fps }\n )} frames long, but the sequence is only ${durationInFramesProp} frames long (${debugInfo})`\n );\n }\n\n if (next && prev && nextProgressIn !== null && prevProgress !== null) {\n const nextPresentation = next.props.presentation ?? slide();\n const prevPresentation = prev.props.presentation ?? slide();\n\n const prevTransitionDuration = prev.props.timing.getDurationInFrames({\n fps\n });\n const nextTransitionDuration = next.props.timing.getDurationInFrames({\n fps\n });\n const UppercaseNextPresentation = nextPresentation.component;\n const UppercasePrevPresentation = prevPresentation.component;\n\n const isStartFreeze =\n frame < +Math.floor(actualStartFrame) + prevTransitionDuration / 2;\n\n const isEndFreeze =\n frame >\n Math.floor(actualStartFrame) +\n Math.floor(durationInFrames) +\n prevTransitionDuration / 2;\n\n const freezeFrame = isEndFreeze\n ? Math.floor(actualStartFrame) +\n Math.floor(durationInFrames) +\n Math.floor(nextTransitionDuration / 2)\n : Math.floor(actualStartFrame);\n\n const fromTemp = isStartFreeze\n ? Math.floor(actualStartFrame)\n : Math.floor(actualStartFrame) + prevTransitionDuration / 2;\n\n const nextProgres = next.props.timing.getProgress({\n frame:\n frame - (fromTemp + durationInFrames - nextTransitionDuration / 2),\n fps\n });\n\n const isAfterSequenceStart = frame > actualStartFrame;\n const isBeforeSequenceEnd =\n frame <\n actualStartFrame +\n durationInFrames +\n nextTransitionDuration / 2 +\n prevTransitionDuration / 2;\n\n return (\n <Freeze\n key={i}\n active={\n isBeforeSequenceEnd &&\n isAfterSequenceStart &&\n (isStartFreeze || isEndFreeze)\n }\n frame={freezeFrame}\n >\n <Sequence\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n from={fromTemp}\n durationInFrames={\n durationInFramesProp + nextTransitionDuration / 2\n }\n {...passedProps}\n name={passedProps.name || \"<TS.Sequence>\"}\n >\n <UppercaseNextPresentation\n passedProps={nextPresentation.props ?? {}}\n presentationDirection=\"exiting\"\n presentationProgress={nextProgres}\n presentationDurationInFrames={next.props.timing.getDurationInFrames(\n { fps }\n )}\n onElementImage={() => {}}\n onUnmount={() => {}}\n bothEnteringAndExiting={false}\n >\n <WrapInExitingProgressContext\n presentationProgress={nextProgres}\n >\n <UppercasePrevPresentation\n passedProps={prevPresentation.props ?? {}}\n presentationDirection=\"entering\"\n presentationProgress={prevProgress}\n presentationDurationInFrames={prev.props.timing.getDurationInFrames(\n { fps }\n )}\n onElementImage={() => {}}\n onUnmount={() => {}}\n bothEnteringAndExiting={false}\n >\n <WrapInEnteringProgressContext\n presentationProgress={prevProgress}\n >\n {child}\n </WrapInEnteringProgressContext>\n </UppercasePrevPresentation>\n </WrapInExitingProgressContext>\n </UppercaseNextPresentation>\n </Sequence>\n </Freeze>\n );\n }\n\n if (prevProgress !== null && prev) {\n const partialDuration =\n prev.props.timing.getDurationInFrames({ fps }) / 2;\n const prevPresentation = prev.props.presentation ?? slide();\n const UppercasePrevPresentation = prevPresentation.component;\n const isActiveFreeze = frame < actualStartFrame + partialDuration;\n const startFrame = isActiveFreeze\n ? Math.floor(actualStartFrame)\n : Math.floor(actualStartFrame) + partialDuration;\n const isAfterTransitionStart = frame > startFrame;\n\n return (\n <Freeze\n key={i}\n active={isAfterTransitionStart && isActiveFreeze}\n frame={startFrame}\n >\n <Sequence\n key={i}\n from={startFrame}\n durationInFrames={durationInFramesProp}\n {...passedProps}\n name={passedProps.name || \"<TS.Sequence>\"}\n >\n <UppercasePrevPresentation\n passedProps={prevPresentation.props ?? {}}\n presentationDirection=\"entering\"\n presentationProgress={prevProgress}\n presentationDurationInFrames={prev.props.timing.getDurationInFrames(\n { fps }\n )}\n onElementImage={() => {}}\n onUnmount={() => {}}\n bothEnteringAndExiting={false}\n >\n <WrapInEnteringProgressContext\n presentationProgress={prevProgress}\n >\n {child}\n </WrapInEnteringProgressContext>\n </UppercasePrevPresentation>\n </Sequence>\n </Freeze>\n );\n }\n\n if (nextProgress !== null && next) {\n const partialDuration =\n next.props.timing.getDurationInFrames({ fps }) / 2;\n\n const nextPresentation = next.props.presentation ?? slide();\n\n const UppercaseNextPresentation = nextPresentation.component;\n const isActiveFreeze =\n frame > Math.floor(durationInFrames) + Math.floor(actualStartFrame);\n\n const isBeforeSequenceEnd =\n frame <\n Math.floor(durationInFrames) +\n Math.floor(actualStartFrame) +\n partialDuration;\n\n return (\n <Freeze\n key={i}\n active={isBeforeSequenceEnd && isActiveFreeze}\n frame={Math.floor(durationInFrames)}\n >\n <Sequence\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n from={Math.floor(actualStartFrame)}\n durationInFrames={durationInFramesProp + partialDuration}\n {...passedProps}\n name={passedProps.name || \"<TS.Sequence>\"}\n >\n <UppercaseNextPresentation\n passedProps={nextPresentation.props ?? {}}\n presentationDirection=\"exiting\"\n presentationProgress={nextProgress}\n presentationDurationInFrames={next.props.timing.getDurationInFrames(\n { fps }\n )}\n onElementImage={() => {}}\n onUnmount={() => {}}\n bothEnteringAndExiting={false}\n >\n <WrapInExitingProgressContext\n presentationProgress={nextProgress}\n >\n {child}\n </WrapInExitingProgressContext>\n </UppercaseNextPresentation>\n </Sequence>\n </Freeze>\n );\n }\n\n return (\n <Sequence\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n from={Math.floor(actualStartFrame)}\n durationInFrames={durationInFramesProp}\n {...passedProps}\n name={passedProps.name || \"<TS.Sequence>\"}\n >\n {child}\n </Sequence>\n );\n });\n }, [children, fps, frame]);\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{childrenValue}</>;\n};\n\n/*\n * @description Manages a series of transitions and sequences for advanced animation controls in Remotion projects, handling cases with varying timings and presentations.\n * @see [Documentation](https://www.remotion.dev/docs/transitions/transitionseries)\n */\nexport const TransitionSeries: FC<SequencePropsWithoutDuration> & {\n Sequence: typeof SeriesSequence;\n Transition: typeof TransitionSeriesTransition;\n} = ({ children, name, layout: passedLayout, ...otherProps }) => {\n const displayName = name ?? \"<TransitionSeries>\";\n const layout = passedLayout ?? \"absolute-fill\";\n if (\n NoReactInternals.ENABLE_V5_BREAKING_CHANGES &&\n layout !== \"absolute-fill\"\n ) {\n throw new TypeError(\n `The \"layout\" prop of <TransitionSeries /> is not supported anymore in v5. TransitionSeries' must be absolutely positioned.`\n );\n }\n\n return (\n <Sequence name={displayName} layout={layout} {...otherProps}>\n <TransitionSeriesChildren>{children}</TransitionSeriesChildren>\n </Sequence>\n );\n};\n\nTransitionSeries.Sequence = SeriesSequence;\nTransitionSeries.Transition = TransitionSeriesTransition;\n\nInternals.addSequenceStackTraces(TransitionSeries);\nInternals.addSequenceStackTraces(SeriesSequence);\n","import React from \"react\";\nimport { EnteringContext, ExitingContext } from \"./context\";\n\nexport type TransitionState = {\n entering: number;\n exiting: number;\n isInTransitionSeries: boolean;\n};\n\n/**\n * Gets the progress and direction of a transition with a context() presentation.\n */\nexport const useTransitionProgress = (): TransitionState => {\n const entering = React.useContext(EnteringContext);\n const exiting = React.useContext(ExitingContext);\n\n if (!entering && !exiting) {\n return {\n isInTransitionSeries: false,\n entering: 1,\n exiting: 0\n };\n }\n\n return {\n isInTransitionSeries: true,\n entering: entering?.enteringProgress ?? 1,\n exiting: exiting?.exitingProgress ?? 0\n };\n};\n","import React, { useMemo, useState } from \"react\";\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps\n} from \"../types\";\nimport { AbsoluteFill, random } from \"remotion\";\n\nexport type CustomPresentationProps = {\n width: number;\n height: number;\n};\n\nconst CirclePresentation: React.FC<\n TransitionPresentationComponentProps<CustomPresentationProps>\n> = ({\n children,\n presentationDirection,\n presentationProgress,\n passedProps\n}) => {\n const finishedRadius =\n Math.sqrt(passedProps.width ** 2 + passedProps.height ** 2) / 2;\n const radius = finishedRadius * presentationProgress;\n\n const circlePath = makeCirclePath(\n passedProps.width / 2,\n passedProps.height / 2,\n radius\n );\n\n const [clipId] = useState(() => String(random(null)));\n const style: React.CSSProperties = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n clipPath:\n presentationDirection === \"exiting\" ? undefined : `url(#${clipId})`\n };\n }, [clipId, presentationDirection]);\n\n return (\n <AbsoluteFill>\n <AbsoluteFill style={style}>{children}</AbsoluteFill>\n {presentationDirection === \"exiting\" ? null : (\n <AbsoluteFill>\n <svg width={passedProps.width} height={passedProps.height}>\n <defs>\n <clipPath id={clipId}>\n <path d={circlePath} fill=\"black\" />\n </clipPath>\n </defs>\n </svg>\n </AbsoluteFill>\n )}\n </AbsoluteFill>\n );\n};\n\nexport const circle = (\n props: CustomPresentationProps\n): TransitionPresentation<CustomPresentationProps> => {\n return { component: CirclePresentation, props };\n};\n\n// Esta función crea un path de círculo\nconst makeCirclePath = (cx: number, cy: number, radius: number): string => {\n return `M ${cx}, ${cy}\n m -${radius}, 0\n a ${radius},${radius} 0 1,0 ${radius * 2},0\n a ${radius},${radius} 0 1,0 -${radius * 2},0`;\n};\n","import {\n TransitionPresentation,\n TransitionPresentationComponentProps\n} from \"../types\";\nimport React, { useMemo, useState } from \"react\";\nimport { AbsoluteFill, random } from \"remotion\";\n\nexport type CustomPresentationProps = {\n width: number;\n height: number;\n};\n\nconst WindowTransitionPresentation: React.FC<\n TransitionPresentationComponentProps<CustomPresentationProps>\n> = ({\n children,\n presentationDirection,\n presentationProgress,\n passedProps\n}) => {\n const { width, height } = passedProps;\n\n // Calculamos el tamaño de la ventana en función del progreso de la transición\n const windowWidth = width * presentationProgress;\n const windowHeight = height * presentationProgress;\n\n // Calculamos las coordenadas para la ventana que cubrirá la mitad de la pantalla\n const windowX = width / 2 - windowWidth / 2;\n const windowY = height / 2 - windowHeight / 2;\n\n // Creamos un clipPath único para esta transición\n const [clipId] = useState(() => String(random(null)));\n\n // Establecemos el clipPath para el elemento que queremos animar\n const style: React.CSSProperties = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n clipPath:\n presentationDirection === \"exiting\" ? undefined : `url(#${clipId})`\n };\n }, [clipId, presentationDirection]);\n\n return (\n <AbsoluteFill>\n <AbsoluteFill style={style}>{children}</AbsoluteFill>\n {presentationDirection === \"exiting\" ? null : (\n <AbsoluteFill>\n <svg>\n <defs>\n <clipPath id={clipId}>\n <rect\n x={windowX}\n y={windowY}\n width={windowWidth}\n height={windowHeight}\n fill=\"black\"\n />\n </clipPath>\n </defs>\n </svg>\n </AbsoluteFill>\n )}\n </AbsoluteFill>\n );\n};\n\nexport const rectangle = (\n props: CustomPresentationProps\n): TransitionPresentation<CustomPresentationProps> => {\n return { component: WindowTransitionPresentation, props };\n};\n","import { getBoundingBox, translatePath } from \"@remotion/paths\";\nimport { makeStar } from \"@remotion/shapes\";\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps\n} from \"../types\";\nimport React, { useMemo, useState } from \"react\";\nimport { AbsoluteFill, random } from \"remotion\";\nexport type CustomPresentationProps = {\n width: number;\n height: number;\n};\nconst StarPresentation: React.FC<\n TransitionPresentationComponentProps<CustomPresentationProps>\n> = ({\n children,\n presentationDirection,\n presentationProgress,\n passedProps\n}) => {\n const finishedRadius =\n Math.sqrt(passedProps.width ** 2 + passedProps.height ** 2) / 2;\n const innerRadius = finishedRadius * presentationProgress;\n const outerRadius = finishedRadius * 2 * presentationProgress;\n const { path } = makeStar({\n innerRadius,\n outerRadius,\n points: 5\n });\n const boundingBox = getBoundingBox(path);\n const translatedPath = translatePath(\n path,\n passedProps.width / 2 - boundingBox.width / 2,\n passedProps.height / 2 - boundingBox.height / 2\n );\n const [clipId] = useState(() => String(random(null)));\n const style: React.CSSProperties = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n clipPath:\n presentationDirection === \"exiting\" ? undefined : `url(#${clipId})`\n };\n }, [clipId, presentationDirection]);\n return (\n <AbsoluteFill>\n <AbsoluteFill style={style}>{children}</AbsoluteFill>\n {presentationDirection === \"exiting\" ? null : (\n <AbsoluteFill>\n <svg>\n <defs>\n <clipPath id={clipId}>\n <path d={translatedPath} fill=\"black\" />\n </clipPath>\n </defs>\n </svg>\n </AbsoluteFill>\n )}\n </AbsoluteFill>\n );\n};\n\nexport const star = (\n props: CustomPresentationProps\n): TransitionPresentation<CustomPresentationProps> => {\n return { component: StarPresentation, props };\n};\n","import {\n TransitionPresentation,\n TransitionPresentationComponentProps\n} from \"../types\";\nimport React, { useMemo, useState } from \"react\";\nimport { AbsoluteFill, random } from \"remotion\";\n\nexport type CustomPresentationProps = {\n width: number;\n height: number;\n};\n\nconst WindowTransitionPresentation: React.FC<\n TransitionPresentationComponentProps<CustomPresentationProps>\n> = ({\n children,\n presentationDirection,\n presentationProgress,\n passedProps\n}) => {\n const { width, height } = passedProps;\n\n // Calculamos el tamaño de la ventana en función del progreso de la transición\n const windowWidth = width * presentationProgress;\n\n // Calculamos las coordenadas para la ventana que cubrirá la mitad de la pantalla\n const windowX = width / 2 - windowWidth / 2;\n\n // Creamos un clipPath único para esta transición\n const [clipId] = useState(() => String(random(null)));\n\n // Establecemos el clipPath para el elemento que queremos animar\n const style: React.CSSProperties = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n clipPath:\n presentationDirection === \"exiting\" ? undefined : `url(#${clipId})`\n };\n }, [clipId, presentationDirection]);\n\n return (\n <AbsoluteFill>\n <AbsoluteFill style={style}>{children}</AbsoluteFill>\n {presentationDirection === \"exiting\" ? null : (\n <AbsoluteFill>\n <svg>\n <defs>\n <clipPath id={clipId}>\n <rect\n x={windowX}\n y={0}\n width={windowWidth}\n height={height}\n fill=\"black\"\n />\n </clipPath>\n </defs>\n </svg>\n </AbsoluteFill>\n )}\n </AbsoluteFill>\n );\n};\n\nexport const slidingDoors = (\n props: CustomPresentationProps\n): TransitionPresentation<CustomPresentationProps> => {\n return { component: WindowTransitionPresentation, props };\n};\n","// src/presentations/fade.tsx\nimport { useMemo } from \"react\";\nimport { AbsoluteFill } from \"remotion\";\nimport { jsx } from \"react/jsx-runtime\";\nvar FadePresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const isEntering = presentationDirection === \"entering\";\n const style = useMemo(() => {\n return {\n opacity: isEntering ? presentationProgress : passedProps.shouldFadeOutExitingScene ? 1 - presentationProgress : 1,\n ...presentationDirection === \"entering\" ? passedProps.enterStyle : passedProps.exitStyle\n };\n }, [\n isEntering,\n passedProps.enterStyle,\n passedProps.exitStyle,\n passedProps.shouldFadeOutExitingScene,\n presentationDirection,\n presentationProgress\n ]);\n return /* @__PURE__ */ jsx(AbsoluteFill, {\n style,\n children\n });\n};\nvar fade = (props) => {\n return {\n component: FadePresentation,\n props: props ?? {}\n };\n};\nexport {\n fade\n};\n","// src/presentations/slide.tsx\nimport { useMemo } from \"react\";\nimport { AbsoluteFill } from \"remotion\";\nimport { jsx } from \"react/jsx-runtime\";\nvar epsilon = 0.01;\nvar SlidePresentation = ({\n children,\n presentationProgress,\n presentationDirection,\n passedProps: { direction = \"from-left\", enterStyle, exitStyle }\n}) => {\n const directionStyle = useMemo(() => {\n const presentationProgressWithEpsilonCorrection = presentationProgress === 1 ? presentationProgress * 100 : presentationProgress * 100 - epsilon;\n if (presentationDirection === \"exiting\") {\n switch (direction) {\n case \"from-left\":\n return {\n transform: `translateX(${presentationProgressWithEpsilonCorrection}%)`\n };\n case \"from-right\":\n return {\n transform: `translateX(${-presentationProgress * 100}%)`\n };\n case \"from-top\":\n return {\n transform: `translateY(${presentationProgressWithEpsilonCorrection}%)`\n };\n case \"from-bottom\":\n return {\n transform: `translateY(${-presentationProgress * 100}%)`\n };\n default:\n throw new Error(`Invalid direction: ${direction}`);\n }\n }\n switch (direction) {\n case \"from-left\":\n return {\n transform: `translateX(${-100 + presentationProgress * 100}%)`\n };\n case \"from-right\":\n return {\n transform: `translateX(${100 - presentationProgressWithEpsilonCorrection}%)`\n };\n case \"from-top\":\n return {\n transform: `translateY(${-100 + presentationProgress * 100}%)`\n };\n case \"from-bottom\":\n return {\n transform: `translateY(${100 - presentationProgressWithEpsilonCorrection}%)`\n };\n default:\n throw new Error(`Invalid direction: ${direction}`);\n }\n }, [presentationDirection, presentationProgress, direction]);\n const style = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n ...directionStyle,\n ...presentationDirection === \"entering\" ? enterStyle : exitStyle\n };\n }, [directionStyle, enterStyle, exitStyle, presentationDirection]);\n return /* @__PURE__ */ jsx(AbsoluteFill, {\n style,\n children\n });\n};\nvar slide = (props) => {\n return {\n component: SlidePresentation,\n props: props ?? {}\n };\n};\nexport {\n slide\n};\n","// src/presentations/wipe.tsx\nimport { useMemo } from \"react\";\nimport { AbsoluteFill } from \"remotion\";\nimport { jsx } from \"react/jsx-runtime\";\nvar makePolygonIn = (progress, direction) => {\n const p = progress * 100;\n switch (direction) {\n case \"from-left\":\n return `polygon(0% 0%, ${p}% 0%, ${p}% 100%, 0% 100%)`;\n case \"from-top-left\":\n return `polygon(0% 0%, ${p * 2}% 0%, 0% ${p * 2}%)`;\n case \"from-top\":\n return `polygon(0% 0%, 100% 0%, 100% ${p}%, 0% ${p}%)`;\n case \"from-top-right\":\n return `polygon(100% 0%, ${100 - p * 2}% 0%, 100% ${p * 2}%)`;\n case \"from-right\":\n return `polygon(100% 0%, 100% 100%, ${100 - p}% 100%, ${100 - p}% 0%)`;\n case \"from-bottom-right\":\n return `polygon(100% 100%, ${100 - p * 2}% 100%, 100% ${100 - p * 2}%)`;\n case \"from-bottom\":\n return `polygon(0% 100%, 100% 100%, 100% ${100 - p}%, 0% ${100 - p}%)`;\n case \"from-bottom-left\":\n return `polygon(0% 100%, 0% ${100 - p * 2}%, ${p * 2}% 100%)`;\n default:\n throw new Error(`Unknown direction ${JSON.stringify(direction)}`);\n }\n};\nvar makePolygonOut = (progress, direction) => {\n const p = progress * 100;\n switch (direction) {\n case \"from-left\":\n return `polygon(100% 100%, ${100 - p}% 100%, ${100 - p}% 0%, 100% 0%)`;\n case \"from-top-left\":\n return `polygon(100% 100%, ${100 - p * 2}% 100%, 100% ${100 - p * 2}%)`;\n case \"from-top\":\n return `polygon(100% 100%, 0% 100%, 0% ${100 - p}%, 100% ${100 - p}%)`;\n case \"from-top-right\":\n return `polygon(0% 100%, ${p * 2}% 100%, 0% ${100 - p * 2}%)`;\n case \"from-right\":\n return `polygon(0% 0%, ${p}% 0%, ${p}% 100%, 0% 100%)`;\n case \"from-bottom-right\":\n return `polygon(0% 0%, ${p * 2}% 0%, 0% ${p * 2}%)`;\n case \"from-bottom\":\n return `polygon(100% 0%, 0% 0%, 0% ${p}%, 100% ${p}%)`;\n case \"from-bottom-left\":\n return `polygon(100% 0%, ${100 - p * 2}% 0%, 100% ${p * 2}%)`;\n default:\n throw new Error(`Unknown direction ${JSON.stringify(direction)}`);\n }\n};\nvar WipePresentation = ({\n children,\n presentationProgress,\n presentationDirection,\n passedProps: {\n direction = \"from-left\",\n innerEnterStyle,\n innerExitStyle,\n outerEnterStyle,\n outerExitStyle\n }\n}) => {\n const progressInDirection = presentationDirection === \"entering\" ? presentationProgress : 1 - presentationProgress;\n const clipPath = presentationDirection === \"entering\" ? makePolygonIn(progressInDirection, direction) : makePolygonOut(progressInDirection, direction);\n const style = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n clipPath,\n ...presentationDirection === \"entering\" ? innerEnterStyle : innerExitStyle\n };\n }, [clipPath, innerEnterStyle, innerExitStyle, presentationDirection]);\n const outerStyle = useMemo(() => {\n return presentationDirection === \"entering\" ? outerEnterStyle : outerExitStyle;\n }, [outerEnterStyle, outerExitStyle, presentationDirection]);\n return /* @__PURE__ */ jsx(AbsoluteFill, {\n style: outerStyle,\n children: /* @__PURE__ */ jsx(AbsoluteFill, {\n style,\n children\n })\n });\n};\nvar wipe = (props) => {\n return {\n component: WipePresentation,\n props: props ?? {}\n };\n};\nexport {\n wipe\n};\n","// src/presentations/flip.tsx\nimport { useMemo } from \"react\";\nimport { AbsoluteFill, interpolate } from \"remotion\";\nimport { jsx } from \"react/jsx-runtime\";\nvar Flip = ({\n children,\n presentationDirection,\n presentationProgress,\n passedProps: {\n direction = \"from-left\",\n perspective = 1000,\n innerEnterStyle,\n innerExitStyle,\n outerEnterStyle,\n outerExitStyle\n }\n}) => {\n const style = useMemo(() => {\n const startRotationEntering = direction === \"from-right\" || direction === \"from-top\" ? 180 : -180;\n const endRotationEntering = direction === \"from-right\" || direction === \"from-top\" ? -180 : 180;\n const rotation = presentationDirection === \"entering\" ? interpolate(presentationProgress, [0, 1], [startRotationEntering, 0]) : interpolate(presentationProgress, [0, 1], [0, endRotationEntering]);\n const rotateProperty = direction === \"from-top\" || direction === \"from-bottom\" ? \"rotateX\" : \"rotateY\";\n return {\n width: \"100%\",\n height: \"100%\",\n transform: `${rotateProperty}(${rotation}deg)`,\n backfaceVisibility: \"hidden\",\n WebkitBackfaceVisibility: \"hidden\",\n ...presentationDirection === \"entering\" ? innerEnterStyle : innerExitStyle\n };\n }, [\n direction,\n innerEnterStyle,\n innerExitStyle,\n presentationDirection,\n presentationProgress\n ]);\n const outer = useMemo(() => {\n return {\n perspective,\n transformStyle: \"preserve-3d\",\n ...presentationDirection === \"entering\" ? outerEnterStyle : outerExitStyle\n };\n }, [outerEnterStyle, outerExitStyle, perspective, presentationDirection]);\n return /* @__PURE__ */ jsx(AbsoluteFill, {\n style: outer,\n children: /* @__PURE__ */ jsx(AbsoluteFill, {\n style,\n children\n })\n });\n};\nvar flip = (props) => {\n return { component: Flip, props: props ?? {} };\n};\nexport {\n flip\n};\n","// src/presentations/clock-wipe.tsx\nimport { translatePath } from \"@remotion/paths\";\nimport { makePie } from \"@remotion/shapes\";\nimport { useMemo } from \"react\";\nimport { AbsoluteFill } from \"remotion\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ClockWipePresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const finishedRadius = Math.sqrt(passedProps.width ** 2 + passedProps.height ** 2) / 2;\n const { path } = makePie({\n radius: finishedRadius,\n progress: presentationProgress\n });\n const translatedPath = translatePath(path, -(finishedRadius * 2 - passedProps.width) / 2, -(finishedRadius * 2 - passedProps.height) / 2);\n const style = useMemo(() => {\n return {\n width: \"100%\",\n height: \"100%\",\n clipPath: presentationDirection === \"exiting\" ? undefined : `path(\"${translatedPath}\")`,\n ...presentationDirection === \"entering\" ? passedProps.innerEnterStyle : passedProps.innerExitStyle\n };\n }, [\n translatedPath,\n passedProps.innerEnterStyle,\n passedProps.innerExitStyle,\n presentationDirection\n ]);\n const outerStyle = useMemo(() => {\n return presentationDirection === \"entering\" ? passedProps.outerEnterStyle : passedProps.outerExitStyle;\n }, [\n passedProps.outerEnterStyle,\n passedProps.outerExitStyle,\n presentationDirection\n ]);\n return /* @__PURE__ */ jsx(AbsoluteFill, {\n style: outerStyle,\n children: /* @__PURE__ */ jsx(AbsoluteFill, {\n style,\n children\n })\n });\n};\nvar clockWipe = (props) => {\n return { component: ClockWipePresentation, props: props ?? {} };\n};\nexport {\n clockWipe\n};\n","import { JSX } from \"react\";\nimport {\n SlideDirection,\n circle,\n clockWipe,\n fade,\n flip,\n linearTiming,\n rectangle,\n slide,\n slidingDoors,\n star,\n wipe\n} from \"./presentations\";\nimport { TransitionSeries } from \"./transition-series\";\n\ninterface TransitionOptions {\n width: number;\n height: number;\n durationInFrames: number;\n id: string;\n direction?: SlideDirection;\n}\n\nexport const Transitions: Record<\n string,\n (options: TransitionOptions) => JSX.Element\n> = {\n none: ({ id }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={fade()}\n timing={linearTiming({ durationInFrames: 1 })}\n />\n ),\n fade: ({ durationInFrames, id }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={fade()}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n slide: ({ durationInFrames, id, direction }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={slide({ direction: direction })}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n wipe: ({ durationInFrames, id, direction }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={wipe({ direction: direction })}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n flip: ({ durationInFrames, id }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={flip()}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n\n clockWipe: ({ width, height, durationInFrames, id }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={clockWipe({ width, height })}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n star: ({ width, height, durationInFrames, id }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={star({ width, height })}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n circle: ({ width, height, durationInFrames, id }: TransitionOptions) => {\n return (\n <TransitionSeries.Transition\n key={id}\n presentation={circle({ width, height })}\n timing={linearTiming({ durationInFrames })}\n />\n );\n },\n rectangle: ({ width, height, durationInFrames, id }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={rectangle({ width, height })}\n timing={linearTiming({ durationInFrames })}\n />\n ),\n slidingDoors: ({\n width,\n height,\n durationInFrames,\n id\n }: TransitionOptions) => (\n <TransitionSeries.Transition\n key={id}\n presentation={slidingDoors({ width, height })}\n timing={linearTiming({ durationInFrames })}\n />\n )\n};\n"],"names":["linearTiming","options","frame","interpolate","springTiming","fps","measureSpring","to","from","spring","transformSchema","borderSchema","borderRadiusSchema","backgroundSchema","premountSchema","sequencePremountSchema","cropSchema","sequenceCropSchema","sequenceStyleSchema","sequenceSchema","validateDurationInFrames","durationInFrames","allowFloats","component","NoReactInternals","EnteringContext","React","ExitingContext","WrapInEnteringProgressContext","presentationProgress","children","value","useMemo","jsx","WrapInExitingProgressContext","flattenChildren","flatChildren","child","epsilon","SlidePresentation","presentationDirection","direction","enterStyle","exitStyle","directionStyle","presentationProgressWithEpsilonCorrection","style","AbsoluteFill","slide","props","TransitionSeriesTransition","_props","SeriesSequence","TransitionSeriesChildren","useVideoConfig","useCurrentFrame","childrenValue","transitionOffsets","startFrame","flattedChildren","Children","current","hasPrev","nextPrev","prev","next","prevIsTransition","castedChildAgain","debugInfo","durationInFramesProp","_children","passedProps","offset","currentStartFrame","duration","actualStartFrame","nextProgress","prevProgress","nextProgressIn","nextPresentation","prevPresentation","prevTransitionDuration","nextTransitionDuration","UppercaseNextPresentation","UppercasePrevPresentation","isStartFreeze","isEndFreeze","freezeFrame","fromTemp","nextProgres","isAfterSequenceStart","isBeforeSequenceEnd","Freeze","Sequence","partialDuration","isActiveFreeze","isAfterTransitionStart","TransitionSeries","name","passedLayout","otherProps","Internals","useTransitionProgress","entering","exiting","CirclePresentation","radius","circlePath","makeCirclePath","clipId","useState","random","circle","cx","cy","WindowTransitionPresentation","width","height","windowWidth","windowHeight","windowX","windowY","rectangle","StarPresentation","finishedRadius","innerRadius","outerRadius","path","makeStar","boundingBox","getBoundingBox","translatedPath","translatePath","star","slidingDoors","FadePresentation","isEntering","fade","makePolygonIn","progress","p","makePolygonOut","WipePresentation","innerEnterStyle","innerExitStyle","outerEnterStyle","outerExitStyle","progressInDirection","clipPath","outerStyle","wipe","Flip","perspective","rotation","outer","flip","ClockWipePresentation","makePie","clockWipe","Transitions","id"],"mappings":"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","x_google_ignoreList":[2,13,14,15,16,17]}
|