@remotion/lottie 4.0.142 → 4.0.144

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/LICENSE.md +4 -0
  2. package/bundle.ts +22 -0
  3. package/dist/cjs/test/get-lottie-metadata.test.js +5 -5
  4. package/dist/cjs/test/utils.test.js +22 -22
  5. package/dist/esm/index.mjs +168 -155
  6. package/package.json +5 -8
  7. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/Lottie.d.ts +0 -6
  8. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/Lottie.js +0 -113
  9. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/get-lottie-metadata.d.ts +0 -14
  10. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/get-lottie-metadata.js +0 -20
  11. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/index.d.ts +0 -3
  12. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/index.js +0 -2
  13. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/test/get-lottie-metadata.test.d.ts +0 -1
  14. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/test/get-lottie-metadata.test.js +0 -19
  15. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/test/utils.test.d.ts +0 -1
  16. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/test/utils.test.js +0 -54
  17. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/types.d.ts +0 -49
  18. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/types.js +0 -1
  19. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/utils.d.ts +0 -7
  20. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/utils.js +0 -9
  21. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/validate-loop.d.ts +0 -1
  22. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/validate-loop.js +0 -8
  23. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/validate-playbackrate.d.ts +0 -1
  24. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/esm/validate-playbackrate.js +0 -14
  25. package/.rollup.cache/Users/jonathanburger/remotion/packages/lottie/dist/tsconfig-esm.tsbuildinfo +0 -1
  26. package/dist/esm/Lottie.d.ts +0 -6
  27. package/dist/esm/get-lottie-metadata.d.ts +0 -14
  28. package/dist/esm/index.d.ts +0 -3
  29. package/dist/esm/test/get-lottie-metadata.test.d.ts +0 -1
  30. package/dist/esm/test/utils.test.d.ts +0 -1
  31. package/dist/esm/types.d.ts +0 -49
  32. package/dist/esm/utils.d.ts +0 -7
  33. package/dist/esm/validate-loop.d.ts +0 -1
  34. package/dist/esm/validate-playbackrate.d.ts +0 -1
package/LICENSE.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Remotion License
2
2
 
3
+ In Remotion 5.0, the license will slightly change. [View the changes here](https://github.com/remotion-dev/remotion/pull/3750).
4
+
5
+ ---
6
+
3
7
  Depending on the type of your legal entity, you are granted permission to use Remotion for your project. Individuals and small companies are allowed to use Remotion to create videos for free (even commercial), while a company license is required for for-profit organizations of a certain size. This two-tier system was designed to ensure funding for this project while still allowing the source code to be available and the program to be free for most. Read below for the exact terms of use.
4
8
 
5
9
  - [Free license](#free-license)
package/bundle.ts ADDED
@@ -0,0 +1,22 @@
1
+ import {build} from 'bun';
2
+
3
+ const output = await build({
4
+ entrypoints: ['src/index.ts'],
5
+ naming: '[name].mjs',
6
+ external: [
7
+ 'react/jsx-runtime',
8
+ 'react',
9
+ 'remotion',
10
+ 'remotion/no-react',
11
+ 'lottie-web',
12
+ ],
13
+ });
14
+
15
+ const [file] = output.outputs;
16
+ const text = (await file.text())
17
+ .replace(/jsxDEV/g, 'jsx')
18
+ .replace(/react\/jsx-dev-runtime/g, 'react/jsx-runtime');
19
+
20
+ await Bun.write('dist/esm/index.mjs', text);
21
+
22
+ export {};
@@ -3,14 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const bun_test_1 = require("bun:test");
6
7
  const node_fs_1 = __importDefault(require("node:fs"));
7
8
  const node_path_1 = __importDefault(require("node:path"));
8
- const vitest_1 = require("vitest");
9
9
  const get_lottie_metadata_1 = require("../get-lottie-metadata");
10
- (0, vitest_1.test)('Should be able to get Lottie metadata', () => {
10
+ (0, bun_test_1.test)('Should be able to get Lottie metadata', () => {
11
11
  const file = node_fs_1.default.readFileSync(node_path_1.default.join(__dirname, 'example.json'), 'utf-8');
12
12
  const parsed = JSON.parse(file);
13
- (0, vitest_1.expect)((0, get_lottie_metadata_1.getLottieMetadata)(parsed)).toEqual({
13
+ (0, bun_test_1.expect)((0, get_lottie_metadata_1.getLottieMetadata)(parsed)).toEqual({
14
14
  durationInFrames: 90,
15
15
  durationInSeconds: 3.0030030030030037,
16
16
  fps: 29.9700012207031,
@@ -18,7 +18,7 @@ const get_lottie_metadata_1 = require("../get-lottie-metadata");
18
18
  width: 1920,
19
19
  });
20
20
  });
21
- (0, vitest_1.test)('Should return null if invalid Lottie file', () => {
21
+ (0, bun_test_1.test)('Should return null if invalid Lottie file', () => {
22
22
  // @ts-expect-error
23
- (0, vitest_1.expect)((0, get_lottie_metadata_1.getLottieMetadata)({})).toEqual(null);
23
+ (0, bun_test_1.expect)((0, get_lottie_metadata_1.getLottieMetadata)({})).toEqual(null);
24
24
  });
@@ -1,51 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
3
+ const bun_test_1 = require("bun:test");
4
4
  const utils_1 = require("../utils");
5
- (0, vitest_1.describe)('getNextFrame', () => {
6
- (0, vitest_1.describe)('when loop is falsy', () => {
7
- (0, vitest_1.it)('returns the current frame if smaller than total frames', () => {
8
- (0, vitest_1.expect)((0, utils_1.getLottieFrame)({ currentFrame: 23, totalFrames: 56 })).toBe(23);
5
+ (0, bun_test_1.describe)('getNextFrame', () => {
6
+ (0, bun_test_1.describe)('when loop is falsy', () => {
7
+ (0, bun_test_1.it)('returns the current frame if smaller than total frames', () => {
8
+ (0, bun_test_1.expect)((0, utils_1.getLottieFrame)({ currentFrame: 23, totalFrames: 56 })).toBe(23);
9
9
  });
10
- (0, vitest_1.it)('returns the last frame if current frame is bigger than total frames', () => {
11
- (0, vitest_1.expect)((0, utils_1.getLottieFrame)({ currentFrame: 23, totalFrames: 20 })).toBe(20);
10
+ (0, bun_test_1.it)('returns the last frame if current frame is bigger than total frames', () => {
11
+ (0, bun_test_1.expect)((0, utils_1.getLottieFrame)({ currentFrame: 23, totalFrames: 20 })).toBe(20);
12
12
  });
13
13
  });
14
- (0, vitest_1.describe)('when loop is truthy', () => {
15
- (0, vitest_1.it)('returns the current frame if smaller than total frames', () => {
16
- (0, vitest_1.expect)((0, utils_1.getLottieFrame)({ currentFrame: 23, totalFrames: 56, loop: true })).toBe(23);
14
+ (0, bun_test_1.describe)('when loop is truthy', () => {
15
+ (0, bun_test_1.it)('returns the current frame if smaller than total frames', () => {
16
+ (0, bun_test_1.expect)((0, utils_1.getLottieFrame)({ currentFrame: 23, totalFrames: 56, loop: true })).toBe(23);
17
17
  });
18
- (0, vitest_1.it)('returns the modulo if current frame is bigger than total frames', () => {
19
- (0, vitest_1.expect)((0, utils_1.getLottieFrame)({ currentFrame: 23, totalFrames: 20, loop: true })).toBe(3);
18
+ (0, bun_test_1.it)('returns the modulo if current frame is bigger than total frames', () => {
19
+ (0, bun_test_1.expect)((0, utils_1.getLottieFrame)({ currentFrame: 23, totalFrames: 20, loop: true })).toBe(3);
20
20
  });
21
21
  });
22
- (0, vitest_1.describe)('when direction is reverse and loop is falsy', () => {
23
- (0, vitest_1.it)('returns the correct frame if current frame is smaller than total frames', () => {
24
- (0, vitest_1.expect)((0, utils_1.getLottieFrame)({
22
+ (0, bun_test_1.describe)('when direction is reverse and loop is falsy', () => {
23
+ (0, bun_test_1.it)('returns the correct frame if current frame is smaller than total frames', () => {
24
+ (0, bun_test_1.expect)((0, utils_1.getLottieFrame)({
25
25
  currentFrame: 15,
26
26
  totalFrames: 20,
27
27
  direction: 'backward',
28
28
  })).toBe(5);
29
29
  });
30
- (0, vitest_1.it)('returns frame zero if current frame is bigger than total frames', () => {
31
- (0, vitest_1.expect)((0, utils_1.getLottieFrame)({
30
+ (0, bun_test_1.it)('returns frame zero if current frame is bigger than total frames', () => {
31
+ (0, bun_test_1.expect)((0, utils_1.getLottieFrame)({
32
32
  currentFrame: 23,
33
33
  totalFrames: 20,
34
34
  direction: 'backward',
35
35
  })).toBe(0);
36
36
  });
37
37
  });
38
- (0, vitest_1.describe)('when direction is reverse and loop is truthy', () => {
39
- (0, vitest_1.it)('returns the correct frame if current frame is smaller than total frames', () => {
40
- (0, vitest_1.expect)((0, utils_1.getLottieFrame)({
38
+ (0, bun_test_1.describe)('when direction is reverse and loop is truthy', () => {
39
+ (0, bun_test_1.it)('returns the correct frame if current frame is smaller than total frames', () => {
40
+ (0, bun_test_1.expect)((0, utils_1.getLottieFrame)({
41
41
  currentFrame: 15,
42
42
  totalFrames: 20,
43
43
  direction: 'backward',
44
44
  loop: true,
45
45
  })).toBe(5);
46
46
  });
47
- (0, vitest_1.it)('returns (total-overflow) if current frame is bigger than total frames', () => {
48
- (0, vitest_1.expect)((0, utils_1.getLottieFrame)({
47
+ (0, bun_test_1.it)('returns (total-overflow) if current frame is bigger than total frames', () => {
48
+ (0, bun_test_1.expect)((0, utils_1.getLottieFrame)({
49
49
  currentFrame: 23,
50
50
  totalFrames: 20,
51
51
  direction: 'backward',
@@ -1,168 +1,181 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import lottie from 'lottie-web';
3
- import { useRef, useState, useEffect } from 'react';
4
- import { delayRender, useCurrentFrame, continueRender } from 'remotion';
1
+ // src/Lottie.tsx
2
+ import lottie from "lottie-web";
3
+ import {useEffect, useRef, useState} from "react";
4
+ import {continueRender, delayRender, useCurrentFrame} from "remotion";
5
5
 
6
- const getLottieFrame = ({ currentFrame, direction, loop, totalFrames, }) => {
7
- const nextFrame = loop
8
- ? currentFrame % totalFrames
9
- : Math.min(currentFrame, totalFrames);
10
- if (direction === 'backward') {
11
- return totalFrames - nextFrame;
12
- }
13
- return nextFrame;
6
+ // src/utils.ts
7
+ var getLottieFrame = ({
8
+ currentFrame,
9
+ direction,
10
+ loop,
11
+ totalFrames
12
+ }) => {
13
+ const nextFrame = loop ? currentFrame % totalFrames : Math.min(currentFrame, totalFrames);
14
+ if (direction === "backward") {
15
+ return totalFrames - nextFrame;
16
+ }
17
+ return nextFrame;
14
18
  };
15
19
 
16
- const validateLoop = (loop) => {
17
- if (typeof loop === 'undefined') {
18
- return;
19
- }
20
- if (typeof loop !== 'boolean') {
21
- throw new TypeError(`The "loop" prop must be a boolean or undefined, but is "${JSON.stringify(loop)}"`);
22
- }
20
+ // src/validate-loop.ts
21
+ var validateLoop = (loop) => {
22
+ if (typeof loop === "undefined") {
23
+ return;
24
+ }
25
+ if (typeof loop !== "boolean") {
26
+ throw new TypeError(`The "loop" prop must be a boolean or undefined, but is "${JSON.stringify(loop)}"`);
27
+ }
23
28
  };
24
29
 
25
- const validatePlaybackRate = (playbackRate) => {
26
- if (typeof playbackRate === 'undefined') {
27
- return;
28
- }
29
- if (typeof playbackRate !== 'number') {
30
- throw new TypeError(`The "playbackRate" prop must be a number or undefined, but is ${JSON.stringify(playbackRate)}`);
31
- }
32
- if (Number.isNaN(playbackRate) || !Number.isFinite(playbackRate)) {
33
- throw new TypeError(`The "playbackRate" props must be a real number, but is ${playbackRate}`);
34
- }
35
- if (playbackRate <= 0) {
36
- throw new TypeError(`The "playbackRate" props must be positive, but is ${playbackRate}`);
37
- }
30
+ // src/validate-playbackrate.ts
31
+ var validatePlaybackRate = (playbackRate) => {
32
+ if (typeof playbackRate === "undefined") {
33
+ return;
34
+ }
35
+ if (typeof playbackRate !== "number") {
36
+ throw new TypeError(`The "playbackRate" prop must be a number or undefined, but is ${JSON.stringify(playbackRate)}`);
37
+ }
38
+ if (Number.isNaN(playbackRate) || !Number.isFinite(playbackRate)) {
39
+ throw new TypeError(`The "playbackRate" props must be a real number, but is ${playbackRate}`);
40
+ }
41
+ if (playbackRate <= 0) {
42
+ throw new TypeError(`The "playbackRate" props must be positive, but is ${playbackRate}`);
43
+ }
38
44
  };
39
45
 
40
- /**
41
- * @description Part of the @remotion/lottie package.
42
- * @see [Documentation](https://www.remotion.dev/docs/lottie/lottie)
43
- */
44
- const Lottie = ({ animationData, className, direction, loop, playbackRate, style, onAnimationLoaded, renderer, preserveAspectRatio, assetsPath, }) => {
45
- if (typeof animationData !== 'object') {
46
- throw new Error('animationData should be provided as an object. If you only have the path to the JSON file, load it and pass it as animationData. See https://remotion.dev/docs/lottie/lottie#example for more information.');
46
+ // src/Lottie.tsx
47
+ import {
48
+ jsx
49
+ } from "react/jsx-runtime";
50
+ var Lottie = ({
51
+ animationData,
52
+ className,
53
+ direction,
54
+ loop,
55
+ playbackRate,
56
+ style,
57
+ onAnimationLoaded,
58
+ renderer,
59
+ preserveAspectRatio,
60
+ assetsPath
61
+ }) => {
62
+ if (typeof animationData !== "object") {
63
+ throw new Error("animationData should be provided as an object. If you only have the path to the JSON file, load it and pass it as animationData. See https://remotion.dev/docs/lottie/lottie#example for more information.");
64
+ }
65
+ validatePlaybackRate(playbackRate);
66
+ validateLoop(loop);
67
+ const animationRef = useRef();
68
+ const currentFrameRef = useRef(null);
69
+ const containerRef = useRef(null);
70
+ const onAnimationLoadedRef = useRef();
71
+ onAnimationLoadedRef.current = onAnimationLoaded;
72
+ const [handle] = useState(() => delayRender("Waiting for Lottie animation to load"));
73
+ const frame = useCurrentFrame();
74
+ currentFrameRef.current = frame;
75
+ useEffect(() => {
76
+ if (!containerRef.current) {
77
+ return;
47
78
  }
48
- validatePlaybackRate(playbackRate);
49
- validateLoop(loop);
50
- const animationRef = useRef();
51
- const currentFrameRef = useRef(null);
52
- const containerRef = useRef(null);
53
- const onAnimationLoadedRef = useRef();
54
- onAnimationLoadedRef.current = onAnimationLoaded;
55
- const [handle] = useState(() => delayRender('Waiting for Lottie animation to load'));
56
- const frame = useCurrentFrame();
57
- currentFrameRef.current = frame;
58
- useEffect(() => {
59
- var _a;
60
- if (!containerRef.current) {
61
- return;
62
- }
63
- animationRef.current = lottie.loadAnimation({
64
- container: containerRef.current,
65
- autoplay: false,
66
- animationData,
67
- assetsPath: assetsPath !== null && assetsPath !== void 0 ? assetsPath : undefined,
68
- renderer: renderer !== null && renderer !== void 0 ? renderer : 'svg',
69
- rendererSettings: {
70
- preserveAspectRatio: preserveAspectRatio !== null && preserveAspectRatio !== void 0 ? preserveAspectRatio : undefined,
71
- },
72
- });
73
- const { current: animation } = animationRef;
74
- const onComplete = () => {
75
- var _a, _b;
76
- // Seek frame twice to avoid Lottie initialization bug:
77
- // See LottieInitializationBugfix composition in the example project for a repro.
78
- // We can work around it by seeking twice, initially.
79
- if (currentFrameRef.current) {
80
- const frameToSet = getLottieFrame({
81
- currentFrame: currentFrameRef.current * (playbackRate !== null && playbackRate !== void 0 ? playbackRate : 1),
82
- direction,
83
- loop,
84
- totalFrames: animation.totalFrames,
85
- });
86
- (_a = animationRef.current) === null || _a === void 0 ? void 0 : _a.goToAndStop(Math.max(0, frameToSet - 1), true);
87
- (_b = animationRef.current) === null || _b === void 0 ? void 0 : _b.goToAndStop(frameToSet, true);
88
- }
89
- continueRender(handle);
90
- };
91
- animation.addEventListener('DOMLoaded', onComplete);
92
- (_a = onAnimationLoadedRef.current) === null || _a === void 0 ? void 0 : _a.call(onAnimationLoadedRef, animation);
93
- return () => {
94
- animation.removeEventListener('DOMLoaded', onComplete);
95
- animation.destroy();
96
- };
97
- }, [
98
- animationData,
99
- assetsPath,
100
- direction,
101
- handle,
102
- loop,
103
- playbackRate,
104
- preserveAspectRatio,
105
- renderer,
106
- ]);
107
- useEffect(() => {
108
- if (animationRef.current && direction) {
109
- animationRef.current.setDirection(direction === 'backward' ? -1 : 1);
110
- }
111
- }, [direction]);
112
- useEffect(() => {
113
- if (animationRef.current && playbackRate) {
114
- animationRef.current.setSpeed(playbackRate);
115
- }
116
- }, [playbackRate]);
117
- useEffect(() => {
118
- var _a;
119
- if (!animationRef.current) {
120
- return;
121
- }
122
- const { totalFrames } = animationRef.current;
79
+ animationRef.current = lottie.loadAnimation({
80
+ container: containerRef.current,
81
+ autoplay: false,
82
+ animationData,
83
+ assetsPath: assetsPath ?? undefined,
84
+ renderer: renderer ?? "svg",
85
+ rendererSettings: {
86
+ preserveAspectRatio: preserveAspectRatio ?? undefined
87
+ }
88
+ });
89
+ const { current: animation } = animationRef;
90
+ const onComplete = () => {
91
+ if (currentFrameRef.current) {
123
92
  const frameToSet = getLottieFrame({
124
- currentFrame: frame * (playbackRate !== null && playbackRate !== void 0 ? playbackRate : 1),
125
- direction,
126
- loop,
127
- totalFrames,
128
- });
129
- animationRef.current.goToAndStop(frameToSet, true);
130
- const images = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('image');
131
- images.forEach((img) => {
132
- const currentHref = img.getAttributeNS('http://www.w3.org/1999/xlink', 'href');
133
- if (currentHref && currentHref === img.href.baseVal) {
134
- return;
135
- }
136
- const imgHandle = delayRender(`Waiting for lottie image with src="${img.href.baseVal}" to load`);
137
- // https://stackoverflow.com/a/46839799
138
- img.addEventListener('load', () => {
139
- continueRender(imgHandle);
140
- }, { once: true });
141
- img.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', img.href.baseVal);
93
+ currentFrame: currentFrameRef.current * (playbackRate ?? 1),
94
+ direction,
95
+ loop,
96
+ totalFrames: animation.totalFrames
142
97
  });
143
- }, [direction, frame, loop, playbackRate]);
144
- return jsx("div", { ref: containerRef, className: className, style: style });
145
- };
146
-
147
- /**
148
- * @description Get the basic metadata such as dimensions, duration and framerate of a Lottie animation.
149
- * @see [Documentation](https://www.remotion.dev/docs/lottie/getlottiemetadata)
150
- */
151
- const getLottieMetadata = (animationData) => {
152
- const width = animationData.w;
153
- const height = animationData.h;
154
- const framerate = animationData.fr;
155
- const durationInFrames = animationData.op;
156
- if (![width, height, framerate, durationInFrames].every(Boolean)) {
157
- return null;
158
- }
159
- return {
160
- durationInFrames: Math.floor(durationInFrames),
161
- durationInSeconds: durationInFrames / framerate,
162
- fps: framerate,
163
- height,
164
- width,
98
+ animationRef.current?.goToAndStop(Math.max(0, frameToSet - 1), true);
99
+ animationRef.current?.goToAndStop(frameToSet, true);
100
+ }
101
+ continueRender(handle);
165
102
  };
103
+ animation.addEventListener("DOMLoaded", onComplete);
104
+ onAnimationLoadedRef.current?.(animation);
105
+ return () => {
106
+ animation.removeEventListener("DOMLoaded", onComplete);
107
+ animation.destroy();
108
+ };
109
+ }, [
110
+ animationData,
111
+ assetsPath,
112
+ direction,
113
+ handle,
114
+ loop,
115
+ playbackRate,
116
+ preserveAspectRatio,
117
+ renderer
118
+ ]);
119
+ useEffect(() => {
120
+ if (animationRef.current && direction) {
121
+ animationRef.current.setDirection(direction === "backward" ? -1 : 1);
122
+ }
123
+ }, [direction]);
124
+ useEffect(() => {
125
+ if (animationRef.current && playbackRate) {
126
+ animationRef.current.setSpeed(playbackRate);
127
+ }
128
+ }, [playbackRate]);
129
+ useEffect(() => {
130
+ if (!animationRef.current) {
131
+ return;
132
+ }
133
+ const { totalFrames } = animationRef.current;
134
+ const frameToSet = getLottieFrame({
135
+ currentFrame: frame * (playbackRate ?? 1),
136
+ direction,
137
+ loop,
138
+ totalFrames
139
+ });
140
+ animationRef.current.goToAndStop(frameToSet, true);
141
+ const images = containerRef.current?.querySelectorAll("image");
142
+ images.forEach((img) => {
143
+ const currentHref = img.getAttributeNS("http://www.w3.org/1999/xlink", "href");
144
+ if (currentHref && currentHref === img.href.baseVal) {
145
+ return;
146
+ }
147
+ const imgHandle = delayRender(`Waiting for lottie image with src="${img.href.baseVal}" to load`);
148
+ img.addEventListener("load", () => {
149
+ continueRender(imgHandle);
150
+ }, { once: true });
151
+ img.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", img.href.baseVal);
152
+ });
153
+ }, [direction, frame, loop, playbackRate]);
154
+ return jsx("div", {
155
+ ref: containerRef,
156
+ className,
157
+ style
158
+ }, undefined, false, undefined, this);
166
159
  };
167
160
 
168
- export { Lottie, getLottieMetadata };
161
+ // src/get-lottie-metadata.ts
162
+ var getLottieMetadata = (animationData) => {
163
+ const width = animationData.w;
164
+ const height = animationData.h;
165
+ const framerate = animationData.fr;
166
+ const durationInFrames = animationData.op;
167
+ if (![width, height, framerate, durationInFrames].every(Boolean)) {
168
+ return null;
169
+ }
170
+ return {
171
+ durationInFrames: Math.floor(durationInFrames),
172
+ durationInSeconds: durationInFrames / framerate,
173
+ fps: framerate,
174
+ height,
175
+ width
176
+ };
177
+ };
178
+ export {
179
+ getLottieMetadata,
180
+ Lottie
181
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/lottie",
3
- "version": "4.0.142",
3
+ "version": "4.0.144",
4
4
  "description": "Remotion Lottie",
5
5
  "main": "dist/cjs/index.js",
6
6
  "types": "dist/cjs/index.d.ts",
@@ -19,7 +19,7 @@
19
19
  ],
20
20
  "license": "SEE LICENSE IN LICENSE.md",
21
21
  "dependencies": {
22
- "remotion": "4.0.142"
22
+ "remotion": "4.0.144"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "lottie-web": "^5",
@@ -37,7 +37,6 @@
37
37
  },
38
38
  "devDependencies": {
39
39
  "@jonny/eslint-config": "3.0.281",
40
- "@rollup/plugin-typescript": "^8.2.0",
41
40
  "@types/node": "18.14.6",
42
41
  "@types/react": "18.2.48",
43
42
  "@types/react-dom": "18.2.18",
@@ -45,9 +44,7 @@
45
44
  "prettier": "3.2.5",
46
45
  "prettier-plugin-organize-imports": "3.2.4",
47
46
  "react": "18.2.0",
48
- "react-dom": "18.2.0",
49
- "rollup": "^2.70.1",
50
- "vitest": "0.31.1"
47
+ "react-dom": "18.2.0"
51
48
  },
52
49
  "keywords": [
53
50
  "remotion",
@@ -63,8 +60,8 @@
63
60
  "scripts": {
64
61
  "formatting": "prettier src --check",
65
62
  "lint": "eslint src --ext ts,tsx",
66
- "test": "vitest --run",
67
- "build": "rollup --config rollup.config.js && tsc -d",
63
+ "test": "bun test src",
64
+ "build": "bun bundle.ts && tsc -d",
68
65
  "watch": "tsc -w"
69
66
  }
70
67
  }
@@ -1,6 +0,0 @@
1
- import type { LottieProps } from './types';
2
- /**
3
- * @description Part of the @remotion/lottie package.
4
- * @see [Documentation](https://www.remotion.dev/docs/lottie/lottie)
5
- */
6
- export declare const Lottie: ({ animationData, className, direction, loop, playbackRate, style, onAnimationLoaded, renderer, preserveAspectRatio, assetsPath, }: LottieProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,113 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import lottie from 'lottie-web';
3
- import { useEffect, useRef, useState } from 'react';
4
- import { continueRender, delayRender, useCurrentFrame } from 'remotion';
5
- import { getLottieFrame } from './utils';
6
- import { validateLoop } from './validate-loop';
7
- import { validatePlaybackRate } from './validate-playbackrate';
8
- /**
9
- * @description Part of the @remotion/lottie package.
10
- * @see [Documentation](https://www.remotion.dev/docs/lottie/lottie)
11
- */
12
- export const Lottie = ({ animationData, className, direction, loop, playbackRate, style, onAnimationLoaded, renderer, preserveAspectRatio, assetsPath, }) => {
13
- if (typeof animationData !== 'object') {
14
- throw new Error('animationData should be provided as an object. If you only have the path to the JSON file, load it and pass it as animationData. See https://remotion.dev/docs/lottie/lottie#example for more information.');
15
- }
16
- validatePlaybackRate(playbackRate);
17
- validateLoop(loop);
18
- const animationRef = useRef();
19
- const currentFrameRef = useRef(null);
20
- const containerRef = useRef(null);
21
- const onAnimationLoadedRef = useRef();
22
- onAnimationLoadedRef.current = onAnimationLoaded;
23
- const [handle] = useState(() => delayRender('Waiting for Lottie animation to load'));
24
- const frame = useCurrentFrame();
25
- currentFrameRef.current = frame;
26
- useEffect(() => {
27
- var _a;
28
- if (!containerRef.current) {
29
- return;
30
- }
31
- animationRef.current = lottie.loadAnimation({
32
- container: containerRef.current,
33
- autoplay: false,
34
- animationData,
35
- assetsPath: assetsPath !== null && assetsPath !== void 0 ? assetsPath : undefined,
36
- renderer: renderer !== null && renderer !== void 0 ? renderer : 'svg',
37
- rendererSettings: {
38
- preserveAspectRatio: preserveAspectRatio !== null && preserveAspectRatio !== void 0 ? preserveAspectRatio : undefined,
39
- },
40
- });
41
- const { current: animation } = animationRef;
42
- const onComplete = () => {
43
- var _a, _b;
44
- // Seek frame twice to avoid Lottie initialization bug:
45
- // See LottieInitializationBugfix composition in the example project for a repro.
46
- // We can work around it by seeking twice, initially.
47
- if (currentFrameRef.current) {
48
- const frameToSet = getLottieFrame({
49
- currentFrame: currentFrameRef.current * (playbackRate !== null && playbackRate !== void 0 ? playbackRate : 1),
50
- direction,
51
- loop,
52
- totalFrames: animation.totalFrames,
53
- });
54
- (_a = animationRef.current) === null || _a === void 0 ? void 0 : _a.goToAndStop(Math.max(0, frameToSet - 1), true);
55
- (_b = animationRef.current) === null || _b === void 0 ? void 0 : _b.goToAndStop(frameToSet, true);
56
- }
57
- continueRender(handle);
58
- };
59
- animation.addEventListener('DOMLoaded', onComplete);
60
- (_a = onAnimationLoadedRef.current) === null || _a === void 0 ? void 0 : _a.call(onAnimationLoadedRef, animation);
61
- return () => {
62
- animation.removeEventListener('DOMLoaded', onComplete);
63
- animation.destroy();
64
- };
65
- }, [
66
- animationData,
67
- assetsPath,
68
- direction,
69
- handle,
70
- loop,
71
- playbackRate,
72
- preserveAspectRatio,
73
- renderer,
74
- ]);
75
- useEffect(() => {
76
- if (animationRef.current && direction) {
77
- animationRef.current.setDirection(direction === 'backward' ? -1 : 1);
78
- }
79
- }, [direction]);
80
- useEffect(() => {
81
- if (animationRef.current && playbackRate) {
82
- animationRef.current.setSpeed(playbackRate);
83
- }
84
- }, [playbackRate]);
85
- useEffect(() => {
86
- var _a;
87
- if (!animationRef.current) {
88
- return;
89
- }
90
- const { totalFrames } = animationRef.current;
91
- const frameToSet = getLottieFrame({
92
- currentFrame: frame * (playbackRate !== null && playbackRate !== void 0 ? playbackRate : 1),
93
- direction,
94
- loop,
95
- totalFrames,
96
- });
97
- animationRef.current.goToAndStop(frameToSet, true);
98
- const images = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('image');
99
- images.forEach((img) => {
100
- const currentHref = img.getAttributeNS('http://www.w3.org/1999/xlink', 'href');
101
- if (currentHref && currentHref === img.href.baseVal) {
102
- return;
103
- }
104
- const imgHandle = delayRender(`Waiting for lottie image with src="${img.href.baseVal}" to load`);
105
- // https://stackoverflow.com/a/46839799
106
- img.addEventListener('load', () => {
107
- continueRender(imgHandle);
108
- }, { once: true });
109
- img.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', img.href.baseVal);
110
- });
111
- }, [direction, frame, loop, playbackRate]);
112
- return _jsx("div", { ref: containerRef, className: className, style: style });
113
- };
@@ -1,14 +0,0 @@
1
- import type { LottieAnimationData } from './types';
2
- type LottieMetadata = {
3
- fps: number;
4
- durationInSeconds: number;
5
- durationInFrames: number;
6
- width: number;
7
- height: number;
8
- };
9
- /**
10
- * @description Get the basic metadata such as dimensions, duration and framerate of a Lottie animation.
11
- * @see [Documentation](https://www.remotion.dev/docs/lottie/getlottiemetadata)
12
- */
13
- export declare const getLottieMetadata: (animationData: LottieAnimationData) => LottieMetadata | null;
14
- export {};
@@ -1,20 +0,0 @@
1
- /**
2
- * @description Get the basic metadata such as dimensions, duration and framerate of a Lottie animation.
3
- * @see [Documentation](https://www.remotion.dev/docs/lottie/getlottiemetadata)
4
- */
5
- export const getLottieMetadata = (animationData) => {
6
- const width = animationData.w;
7
- const height = animationData.h;
8
- const framerate = animationData.fr;
9
- const durationInFrames = animationData.op;
10
- if (![width, height, framerate, durationInFrames].every(Boolean)) {
11
- return null;
12
- }
13
- return {
14
- durationInFrames: Math.floor(durationInFrames),
15
- durationInSeconds: durationInFrames / framerate,
16
- fps: framerate,
17
- height,
18
- width,
19
- };
20
- };
@@ -1,3 +0,0 @@
1
- export { Lottie } from './Lottie';
2
- export { getLottieMetadata } from './get-lottie-metadata';
3
- export type { LottieAnimationData, LottieProps } from './types';
@@ -1,2 +0,0 @@
1
- export { Lottie } from './Lottie';
2
- export { getLottieMetadata } from './get-lottie-metadata';
@@ -1,19 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { expect, test } from 'vitest';
4
- import { getLottieMetadata } from '../get-lottie-metadata';
5
- test('Should be able to get Lottie metadata', () => {
6
- const file = fs.readFileSync(path.join(__dirname, 'example.json'), 'utf-8');
7
- const parsed = JSON.parse(file);
8
- expect(getLottieMetadata(parsed)).toEqual({
9
- durationInFrames: 90,
10
- durationInSeconds: 3.0030030030030037,
11
- fps: 29.9700012207031,
12
- height: 1080,
13
- width: 1920,
14
- });
15
- });
16
- test('Should return null if invalid Lottie file', () => {
17
- // @ts-expect-error
18
- expect(getLottieMetadata({})).toEqual(null);
19
- });
@@ -1,54 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { getLottieFrame } from '../utils';
3
- describe('getNextFrame', () => {
4
- describe('when loop is falsy', () => {
5
- it('returns the current frame if smaller than total frames', () => {
6
- expect(getLottieFrame({ currentFrame: 23, totalFrames: 56 })).toBe(23);
7
- });
8
- it('returns the last frame if current frame is bigger than total frames', () => {
9
- expect(getLottieFrame({ currentFrame: 23, totalFrames: 20 })).toBe(20);
10
- });
11
- });
12
- describe('when loop is truthy', () => {
13
- it('returns the current frame if smaller than total frames', () => {
14
- expect(getLottieFrame({ currentFrame: 23, totalFrames: 56, loop: true })).toBe(23);
15
- });
16
- it('returns the modulo if current frame is bigger than total frames', () => {
17
- expect(getLottieFrame({ currentFrame: 23, totalFrames: 20, loop: true })).toBe(3);
18
- });
19
- });
20
- describe('when direction is reverse and loop is falsy', () => {
21
- it('returns the correct frame if current frame is smaller than total frames', () => {
22
- expect(getLottieFrame({
23
- currentFrame: 15,
24
- totalFrames: 20,
25
- direction: 'backward',
26
- })).toBe(5);
27
- });
28
- it('returns frame zero if current frame is bigger than total frames', () => {
29
- expect(getLottieFrame({
30
- currentFrame: 23,
31
- totalFrames: 20,
32
- direction: 'backward',
33
- })).toBe(0);
34
- });
35
- });
36
- describe('when direction is reverse and loop is truthy', () => {
37
- it('returns the correct frame if current frame is smaller than total frames', () => {
38
- expect(getLottieFrame({
39
- currentFrame: 15,
40
- totalFrames: 20,
41
- direction: 'backward',
42
- loop: true,
43
- })).toBe(5);
44
- });
45
- it('returns (total-overflow) if current frame is bigger than total frames', () => {
46
- expect(getLottieFrame({
47
- currentFrame: 23,
48
- totalFrames: 20,
49
- direction: 'backward',
50
- loop: true,
51
- })).toBe(17);
52
- });
53
- });
54
- });
@@ -1,49 +0,0 @@
1
- import type { AnimationItem } from 'lottie-web';
2
- import type { CSSProperties } from 'react';
3
- export type LottieAnimationData = {
4
- fr: number;
5
- w: number;
6
- h: number;
7
- op: number;
8
- } & Record<string | number | symbol, unknown>;
9
- export type AspectRatioConstraint = 'none' | 'xMinYMin' | 'xMidYMin' | 'xMaxYMin' | 'xMinYMid' | 'xMidYMid' | 'xMaxYMid' | 'xMinYMax' | 'xMidYMax';
10
- export type LottieProps = {
11
- /**
12
- * JSON object with the animation data.
13
- * */
14
- animationData: LottieAnimationData;
15
- /**
16
- * CSS classes to apply on the container of the animation.
17
- */
18
- className?: string;
19
- /**
20
- * The direction of the animation. Defaults to forward.
21
- */
22
- direction?: 'forward' | 'backward';
23
- /**
24
- * If the animation should loop after its end.
25
- */
26
- loop?: boolean;
27
- /**
28
- * The speed of the animation. Defaults to 1.
29
- */
30
- playbackRate?: number;
31
- /**
32
- * CSS properties to apply to the container of the animation.
33
- */
34
- style?: CSSProperties;
35
- /**
36
- * The render engine of the Lotti files.
37
- */
38
- renderer?: 'svg' | 'canvas' | 'html';
39
- /**
40
- * for svg and canvas renderer it simulates the behavior of the preserveAspectRatio property on svgs.
41
- * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/preserveAspectRatio
42
- */
43
- preserveAspectRatio?: AspectRatioConstraint | `${AspectRatioConstraint} ${'slice' | 'meet'}`;
44
- assetsPath?: string;
45
- /**
46
- * Callback that gets invoked when new animation data has been initialized
47
- */
48
- onAnimationLoaded?: (animation: AnimationItem) => void;
49
- };
@@ -1,7 +0,0 @@
1
- import type { LottieProps } from './types';
2
- type Params = Pick<LottieProps, 'direction' | 'loop'> & {
3
- currentFrame: number;
4
- totalFrames: number;
5
- };
6
- export declare const getLottieFrame: ({ currentFrame, direction, loop, totalFrames, }: Params) => number;
7
- export {};
@@ -1,9 +0,0 @@
1
- export const getLottieFrame = ({ currentFrame, direction, loop, totalFrames, }) => {
2
- const nextFrame = loop
3
- ? currentFrame % totalFrames
4
- : Math.min(currentFrame, totalFrames);
5
- if (direction === 'backward') {
6
- return totalFrames - nextFrame;
7
- }
8
- return nextFrame;
9
- };
@@ -1 +0,0 @@
1
- export declare const validateLoop: (loop: unknown) => void;
@@ -1,8 +0,0 @@
1
- export const validateLoop = (loop) => {
2
- if (typeof loop === 'undefined') {
3
- return;
4
- }
5
- if (typeof loop !== 'boolean') {
6
- throw new TypeError(`The "loop" prop must be a boolean or undefined, but is "${JSON.stringify(loop)}"`);
7
- }
8
- };
@@ -1 +0,0 @@
1
- export declare const validatePlaybackRate: (playbackRate: unknown) => void;
@@ -1,14 +0,0 @@
1
- export const validatePlaybackRate = (playbackRate) => {
2
- if (typeof playbackRate === 'undefined') {
3
- return;
4
- }
5
- if (typeof playbackRate !== 'number') {
6
- throw new TypeError(`The "playbackRate" prop must be a number or undefined, but is ${JSON.stringify(playbackRate)}`);
7
- }
8
- if (Number.isNaN(playbackRate) || !Number.isFinite(playbackRate)) {
9
- throw new TypeError(`The "playbackRate" props must be a real number, but is ${playbackRate}`);
10
- }
11
- if (playbackRate <= 0) {
12
- throw new TypeError(`The "playbackRate" props must be positive, but is ${playbackRate}`);
13
- }
14
- };
@@ -1 +0,0 @@
1
- {"program":{"fileNames":["../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/@types+react@18.2.48/node_modules/@types/react/global.d.ts","../../../node_modules/.pnpm/csstype@3.1.1/node_modules/csstype/index.d.ts","../../../node_modules/.pnpm/@types+prop-types@15.7.4/node_modules/@types/prop-types/index.d.ts","../../../node_modules/.pnpm/@types+scheduler@0.16.2/node_modules/@types/scheduler/tracing.d.ts","../../../node_modules/.pnpm/@types+react@18.2.48/node_modules/@types/react/index.d.ts","../../../node_modules/.pnpm/@types+react@18.2.48/node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/.pnpm/lottie-web@5.12.2/node_modules/lottie-web/index.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/dom-events.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/globals.global.d.ts","../../../node_modules/.pnpm/@types+node@18.14.6/node_modules/@types/node/index.d.ts","../../core/dist/cjs/asset-types.d.ts","../../core/dist/cjs/codec.d.ts","../../../node_modules/.pnpm/zod@3.22.3/node_modules/zod/lib/helpers/typealiases.d.ts","../../../node_modules/.pnpm/zod@3.22.3/node_modules/zod/lib/helpers/util.d.ts","../../../node_modules/.pnpm/zod@3.22.3/node_modules/zod/lib/zoderror.d.ts","../../../node_modules/.pnpm/zod@3.22.3/node_modules/zod/lib/locales/en.d.ts","../../../node_modules/.pnpm/zod@3.22.3/node_modules/zod/lib/errors.d.ts","../../../node_modules/.pnpm/zod@3.22.3/node_modules/zod/lib/helpers/parseutil.d.ts","../../../node_modules/.pnpm/zod@3.22.3/node_modules/zod/lib/helpers/enumutil.d.ts","../../../node_modules/.pnpm/zod@3.22.3/node_modules/zod/lib/helpers/errorutil.d.ts","../../../node_modules/.pnpm/zod@3.22.3/node_modules/zod/lib/helpers/partialutil.d.ts","../../../node_modules/.pnpm/zod@3.22.3/node_modules/zod/lib/types.d.ts","../../../node_modules/.pnpm/zod@3.22.3/node_modules/zod/lib/external.d.ts","../../../node_modules/.pnpm/zod@3.22.3/node_modules/zod/lib/index.d.ts","../../../node_modules/.pnpm/zod@3.22.3/node_modules/zod/index.d.ts","../../core/dist/cjs/props-if-has-props.d.ts","../../core/dist/cjs/composition.d.ts","../../core/dist/cjs/compositionmanager.d.ts","../../core/dist/cjs/get-static-files.d.ts","../../core/dist/cjs/nativelayers.d.ts","../../core/dist/cjs/video-config.d.ts","../../core/dist/cjs/absolutefill.d.ts","../../core/dist/cjs/volume-prop.d.ts","../../core/dist/cjs/audio/props.d.ts","../../core/dist/cjs/audio/audio.d.ts","../../core/dist/cjs/audio/index.d.ts","../../core/dist/cjs/cancel-render.d.ts","../../core/dist/cjs/folder.d.ts","../../core/dist/cjs/compositionmanagercontext.d.ts","../../core/dist/cjs/config/input-props.d.ts","../../core/dist/cjs/delay-render.d.ts","../../core/dist/cjs/easing.d.ts","../../core/dist/cjs/freeze.d.ts","../../core/dist/cjs/get-remotion-environment.d.ts","../../core/dist/cjs/iframe.d.ts","../../core/dist/cjs/img.d.ts","../../core/dist/cjs/default-css.d.ts","../../core/dist/cjs/input-props-serialization.d.ts","../../core/dist/cjs/timeline-position-state.d.ts","../../core/dist/cjs/truthy.d.ts","../../core/dist/cjs/volume-position-state.d.ts","../../core/dist/cjs/watch-static-file.d.ts","../../core/dist/cjs/sequencecontext.d.ts","../../core/dist/cjs/nonce.d.ts","../../core/dist/cjs/renderassetmanager.d.ts","../../core/dist/cjs/sequencemanager.d.ts","../../core/dist/cjs/wrap-remotion-context.d.ts","../../core/dist/cjs/editorprops.d.ts","../../core/dist/cjs/use-current-scale.d.ts","../../core/dist/cjs/internals.d.ts","../../core/dist/cjs/interpolate-colors.d.ts","../../core/dist/cjs/sequence.d.ts","../../core/dist/cjs/loop/index.d.ts","../../core/dist/cjs/interpolate.d.ts","../../core/dist/cjs/random.d.ts","../../core/dist/cjs/validation/validate-dimensions.d.ts","../../core/dist/cjs/validation/validate-duration-in-frames.d.ts","../../core/dist/cjs/validation/validate-fps.d.ts","../../core/dist/cjs/no-react.d.ts","../../core/dist/cjs/prefetch.d.ts","../../core/dist/cjs/register-root.d.ts","../../core/dist/cjs/series/index.d.ts","../../core/dist/cjs/spring/spring-utils.d.ts","../../core/dist/cjs/spring/measure-spring.d.ts","../../core/dist/cjs/spring/index.d.ts","../../core/dist/cjs/static-file.d.ts","../../core/dist/cjs/still.d.ts","../../core/dist/cjs/use-buffer-state.d.ts","../../core/dist/cjs/use-current-frame.d.ts","../../core/dist/cjs/use-video-config.d.ts","../../core/dist/cjs/version.d.ts","../../core/dist/cjs/video/props.d.ts","../../core/dist/cjs/video/offthreadvideo.d.ts","../../core/dist/cjs/video/video.d.ts","../../core/dist/cjs/video/index.d.ts","../../core/dist/cjs/index.d.ts","../src/types.ts","../src/utils.ts","../src/validate-loop.ts","../src/validate-playbackrate.ts","../src/lottie.tsx","../src/get-lottie-metadata.ts","../src/index.ts","../../../node_modules/.pnpm/@vitest+utils@0.31.1/node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@0.31.1/node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/.pnpm/pretty-format@27.5.1/node_modules/pretty-format/build/types.d.ts","../../../node_modules/.pnpm/pretty-format@27.5.1/node_modules/pretty-format/build/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@0.31.1/node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@0.31.1/node_modules/@vitest/runner/dist/tasks-891047e7.d.ts","../../../node_modules/.pnpm/@vitest+runner@0.31.1/node_modules/@vitest/runner/dist/runner-a2cd0770.d.ts","../../../node_modules/.pnpm/@vitest+runner@0.31.1/node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@0.31.1/node_modules/@vitest/snapshot/dist/environment-38cdead3.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@0.31.1/node_modules/@vitest/snapshot/dist/index-6461367c.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@0.31.1/node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/.pnpm/@types+chai@4.3.11/node_modules/@types/chai/index.d.ts","../../../node_modules/.pnpm/@vitest+expect@0.31.1/node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/.pnpm/esbuild@0.18.20/node_modules/esbuild/lib/main.d.ts","../../../node_modules/.pnpm/vite@4.5.2_@types+node@18.14.6/node_modules/vite/types/metadata.d.ts","../../../node_modules/.pnpm/vite@4.5.2_@types+node@18.14.6/node_modules/vite/types/hmrpayload.d.ts","../../../node_modules/.pnpm/vite@4.5.2_@types+node@18.14.6/node_modules/vite/types/customevent.d.ts","../../../node_modules/.pnpm/rollup@3.29.4/node_modules/rollup/dist/rollup.d.ts","../../../node_modules/.pnpm/vite@4.5.2_@types+node@18.14.6/node_modules/vite/types/importglob.d.ts","../../../node_modules/.pnpm/source-map-js@1.0.2/node_modules/source-map-js/source-map.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/previous-map.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/input.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/css-syntax-error.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/declaration.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/root.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/warning.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/lazy-result.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/no-work-result.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/processor.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/result.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/document.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/rule.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/node.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/comment.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/container.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/at-rule.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/list.d.ts","../../../node_modules/.pnpm/postcss@8.4.33/node_modules/postcss/lib/postcss.d.ts","../../../node_modules/.pnpm/vite@4.5.2_@types+node@18.14.6/node_modules/vite/dist/node/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@0.31.1/node_modules/@vitest/runner/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+runner@0.31.1/node_modules/@vitest/runner/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@0.31.1/node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/.pnpm/@vitest+utils@0.31.1/node_modules/@vitest/utils/diff.d.ts","../../../node_modules/.pnpm/@vitest+runner@0.31.1/node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/.pnpm/@vitest+runner@0.31.1/node_modules/@vitest/runner/utils.d.ts","../../../node_modules/.pnpm/tinybench@2.6.0/node_modules/tinybench/dist/index.d.ts","../../../node_modules/.pnpm/vite-node@0.31.1_@types+node@18.14.6/node_modules/vite-node/dist/types.d-7442d07f.d.ts","../../../node_modules/.pnpm/vite@4.5.3_@types+node@18.14.6/node_modules/vite/types/hmrpayload.d.ts","../../../node_modules/.pnpm/vite@4.5.3_@types+node@18.14.6/node_modules/vite/types/customevent.d.ts","../../../node_modules/.pnpm/vite@4.5.3_@types+node@18.14.6/node_modules/vite/types/hot.d.ts","../../../node_modules/.pnpm/vite-node@0.31.1_@types+node@18.14.6/node_modules/vite-node/dist/types-557128db.d.ts","../../../node_modules/.pnpm/vite-node@0.31.1_@types+node@18.14.6/node_modules/vite-node/dist/client.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@0.31.1/node_modules/@vitest/snapshot/dist/manager.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@0.31.1/node_modules/@vitest/snapshot/manager.d.ts","../../../node_modules/.pnpm/vite@4.5.3_@types+node@18.14.6/node_modules/vite/types/metadata.d.ts","../../../node_modules/.pnpm/vite@4.5.3_@types+node@18.14.6/node_modules/vite/types/importglob.d.ts","../../../node_modules/.pnpm/vite@4.5.3_@types+node@18.14.6/node_modules/vite/dist/node/index.d.ts","../../../node_modules/.pnpm/vite-node@0.31.1_@types+node@18.14.6/node_modules/vite-node/dist/server.d.ts","../../../node_modules/.pnpm/vite-node@0.31.1_@types+node@18.14.6/node_modules/vite-node/dist/index.d.ts","../../../node_modules/.pnpm/vitest@0.31.1_jsdom@20.0.1/node_modules/vitest/dist/types-ad1c3f45.d.ts","../../../node_modules/.pnpm/tinyspy@2.2.0/node_modules/tinyspy/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+spy@0.31.1/node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@0.31.1/node_modules/@vitest/snapshot/dist/environment.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@0.31.1/node_modules/@vitest/snapshot/environment.d.ts","../../../node_modules/.pnpm/vitest@0.31.1_jsdom@20.0.1/node_modules/vitest/dist/config.d.ts","../../../node_modules/.pnpm/vitest@0.31.1_jsdom@20.0.1/node_modules/vitest/dist/index.d.ts","../src/test/get-lottie-metadata.test.ts","../src/test/utils.test.ts","../../../node_modules/.pnpm/@types+react-dom@18.2.18/node_modules/@types/react-dom/index.d.ts","../../../node_modules/.pnpm/@types+eslint@7.28.0/node_modules/@types/eslint/helpers.d.ts","../../../node_modules/.pnpm/@types+eslint@7.28.0/node_modules/@types/eslint/lib/rules/index.d.ts","../../../node_modules/.pnpm/@types+json-schema@7.0.13/node_modules/@types/json-schema/index.d.ts","../../../node_modules/.pnpm/@types+estree@1.0.0/node_modules/@types/estree/index.d.ts","../../../node_modules/.pnpm/@types+eslint@7.28.0/node_modules/@types/eslint/index.d.ts","../../../node_modules/.pnpm/@types+eslint-scope@3.7.3/node_modules/@types/eslint-scope/index.d.ts"],"fileInfos":[{"version":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"acae90d417bee324b1372813b5a00829d31c7eb670d299cd7f8f9a648ac05688","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"0bd5e7096c7bc02bf70b2cc017fc45ef489cb19bd2f32a71af39ff5787f1b56a","affectsGlobalScope":true},"1c29793071152b207c01ea1954e343be9a44d85234447b2b236acae9e709a383","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"e6f3077b1780226627f76085397d10c77a4d851c7154fd4b3f1eb114f4c2e56d","affectsGlobalScope":true},"2879a055439b6c0c0132a1467120a0f85b56b5d735c973ad235acd958b1b5345","e0cf974515cf71dd5b2d27db12b9fa9b37c1bf5670ac926e67265858bd7de1f2","7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"ca72190df0eb9b09d4b600821c8c7b6c9747b75a1c700c4d57dc0bb72abc074c","affectsGlobalScope":true},"11e2d554398d2bd460e7d06b2fa5827a297c8acfbe00b4f894a224ac0862857f",{"version":"fc811ced095f38ad4438bb94a8d665c63bf4943e58a71ada16627add5ad93226","affectsGlobalScope":true},"374ca798f244e464346f14301dc2a8b4b111af1a83b49fffef5906c338a1f922","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","5eb881ed2a0d5b17ea36df5cd4c4be500e460c412f270c3170e906bec65580ac","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","489532ff54b714f0e0939947a1c560e516d3ae93d51d639ab02e907a0e950114","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"816ad2e607a96de5bcac7d437f843f5afd8957f1fa5eefa6bba8e4ed7ca8fd84","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","d903fafe96674bc0b2ac38a5be4a8fc07b14c2548d1cdb165a80ea24c44c0c54","5eec82ac21f84d83586c59a16b9b8502d34505d1393393556682fe7e7fde9ef2","04eb6578a588d6a46f50299b55f30e3a04ef27d0c5a46c57d8fcc211cd530faa","8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e630e5528e899219ae319e83bef54bf3bcb91b01d76861ecf881e8e614b167f0","affectsGlobalScope":true},"bcebb922784739bdb34c18ee51095d25a92b560c78ccd2eaacd6bd00f7443d83","7ee6ed878c4528215c82b664fe0cfe80e8b4da6c0d4cc80869367868774db8b1","b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30",{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true},{"version":"b3624aed92dab6da8484280d3cb3e2f4130ec3f4ef3f8201c95144ae9e898bb6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","fd93cee2621ff42dabe57b7be402783fd1aa69ece755bcba1e0290547ae60513","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","09326ae5f7e3d49be5cd9ea00eb814770e71870a438faa2efd8bdd9b4db21320",{"version":"3c4ba1dd9b12ffa284b565063108f2f031d150ea15b8fafbdc17f5d2a07251f3","affectsGlobalScope":true},"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","c4577fb855ca259bdbf3ea663ca73988ce5f84251a92b4aef80a1f4122b6f98e","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"f0900cd5d00fe1263ff41201fb8073dbeb984397e4af3b8002a5c207a30bdc33","affectsGlobalScope":true},{"version":"ff07a9a03c65732ccc59b3c65bc584173da093bd563a6565411c01f5703bd3cb","affectsGlobalScope":true},"06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa",{"version":"da26af7362f53d122283bc69fed862b9a9fe27e01bc6a69d1d682e0e5a4df3e6","affectsGlobalScope":true},"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"ed2a670a77a1b80653c5bde2d813b0ab2e92872cc9b2b611ce11050b95139be6","117554f1f5046af1916d12ee4302f90855dea0440fb3d757c78fc6bd3c69d76e","4462e74506879287aa697e645a14ac69ecf91cc720bbb80f17affa9b6ed63731","5487b97cfa28b26b4a9ef0770f872bdbebd4c46124858de00f242c3eed7519f4","7a01f546ace66019156e4232a1bee2fabc2f8eabeb052473d926ee1693956265","fb53b1c6a6c799b7e3cc2de3fb5c9a1c04a1c60d4380a37792d84c5f8b33933b","8485b6da53ec35637d072e516631d25dae53984500de70a6989058f24354666f","ebe80346928736532e4a822154eb77f57ef3389dbe2b3ba4e571366a15448ef2","c2cb3c8ff388781258ea9ddbcd8a947f751bddd6886e1d3b3ea09ddaa895df80","f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","98a9cc18f661d28e6bd31c436e1984f3980f35e0f0aa9cf795c54f8ccb667ffe","c76b0c5727302341d0bdfa2cc2cee4b19ff185b554edb6e8543f0661d8487116","d6a6e6fcd382a05f787a81a157e66f54f360f81a405015bf07f77a622139ed90","f5ef066942e4f0bd98200aa6a6694b831e73200c9b3ade77ad0aa2409e8fe1b1","b9e99cd94f4166a245f5158f7286c05406e2a4c694619bceb7a4f3519d1d768e","5568d7c32e5cf5f35e092649f4e5e168c3114c800b1d7545b7ae5e0415704802","c3f30466c80f93c4b75c84381c4437d9a4d05d7854acd84597f3eae5caebb908","d46e87de1f4a4350a3c0fcc39e6dd7a5565fb3f8efb80e2baa45c307fe835149","55e3c9d36b19ce9446d5391bf7e95eafec525ef7e5ad592e8a987ef78a974ebc","0988919669d5cb074a592d262349d346774b0c5db49ac31265debb1ccfd73d85","897e6749846bc87348ef23667d5306a63efaed38a636a8074ea75116196fc951","92ae0eb521843f61c7b5253f9e0cbc04840364f0844a2334c22c7f24b9e55ce7","f5f3799b69a6ba2957e37336fa1aa779f39abb95873e439aec00ad3c988b0861","7d48277dc6d97d91c54e32401124b1e29a7cbc2201cf2e4d1f19a4a375157f2a","e2d230358f14ecd607ac9df70eb2b12585eefd5603961ffac160dbe72cec546b","35d0cc05b071584409fd3b975c560d24e3d42ed5b71be2169b7f883180640131","736eea59824b87cc7afe7157a53e720956f900ac4f5f01b54047ed927af8fec7","9ec6e0bc0c492b9107c49baf1e78769540ea2a3c593f8631a9437a582af57f39","e79b3586dfa1d8c65ca29e0f3cf8dc5aa2f3dbb01266aa86e590d6664efe7a49","a58a3a8fd66523c1e2f0b5702877812ae867c571f42e0568064d93ee13e47061","2aca60d18b2664e0e90332ef82aaede514979b9069886e691c503ee5b1175016","16bfef6b7587c218a81106ecf4cdf425bf91c13e8825c5ea6ec7e8aa20d09c48","93dd4f7113bcc5ef507ddf75163ef1885317e4871e677a173166922f354603ff","2cc2215a8bbfd2075624bcf2c9feadee6a46b335353f8318f0e05be0c2017d95","5c0c6ee555463ebfe0a009319d21a6b9db12f79b291fbe18816ed014ec6445d1","dd4fcd6f7c6bdf164d2ea7f506fb5fa6dce2a39a04526a7b828cf75c7a173adc","7e478932fbb478efeee7c3e005f781c4ba7bd9e5bbe2db5574e02501af2a97e0","bde4bb646eba9524dede275e59d032494af2e889b5e2c05bdb37af3961ec5434","1a3457f594699440a82f05f9062bb41686cc9aa8d8531e84b1b3d74675d84ec7","701ac7b25d0537623122955efe1fcfceffa7a9881dd63802bde17d298ea0aa45","aff8958e4486632e42eea2d4554c6da3a31c79ae8be75eac54fa15a1961304b6","3f4ec0e70cd2936aee92d41060e4a54c60d4821e0cef2a3238e4949ebcb8f067","f6f8675aeb12872d93e8a553af86cd0a2dda669c68d25e9abbf59d24aea8e7f8","62eb3bdc6b77fe92dbe5906b9dc71b4a03e1fe783c3e4ecfa2b32fe4ea86159f","23108504dc28892892ffd40cfc590ab191c4f8e19697197e2d90ed54c2489b39","d304a536de89b806da07e329b027f9e501d6b5bb84c8ec637865ca3e2b9d7562","3eb22e53fa9c366383f6609c9ac0792af4bf942c389fdb95783ba103417be79a","1d891b2f756feff42876e673d05e407d11f13cbf94007640219951ec3a806cc5","bb5a65be67610de5485a7fb58c109e70688a37c612707bb3dd05e0a68fb7d157","e59b4c863398a4c9a0818552c47acf7420834a2033c6879dd57a6ef42e2ec0e3","b69239d1b52d87ad85b14f27125c0e8f36ef407049bbde1813459b1300fde954","444081b4c6a10bb745d0f8763a4c686e923148e9fbadaaea52028d8c7ca7d675","4b8c3cb0a7728e4319f799fffdc88d537d4195cc49eae97348f8f92d87481602","ca3042da412cd2ea6dd944f7d0e5f9083ae4b56ab7e53faace981b574a34f433","5b864a4f68a6ef615a523d19d32fae353e35e735fa19143bac0e45bb7ca30530","ffe314014b5e91809d1d61abdecc37be235bae403e27fd28baea775f2a67c13d","0313aec30fab57bbfae65c1ba766841aecfb26815bd6f0cf0fd2da8de079d6ba","82b03ee52c16e2bcc7f459869ab73661b2944239bab796070a067b80283a829b","6f624e1db03808be42a44c9409b94d253a0d57b091c0104e96e44e0519299896","00ac01a271f4447bc3757ca2a1b3767af56c3ac5a4066da610cc584bd4869f44","fd6da2741e4e04313c29ac2ef5b222762e3cd88047dc80f5a2b50644be6dce46","27f3902bb2aa0d593f94e4d954253b009e4d025ad888090ca42bef6eeb6f7786","1d6095d40b0cbb89fd6c42c23363d91501d4789f7e6f6b1c15c3187703b7282b","efffd45b4d7ecc07090f6ac1d8741a187744ddff488caaaac55bff143afc99f5","cfd14e9d6ed98d28ea83a80e5bcac0b5a4b095b215b9447999392b2f9ce5ccac","95b40df9c1ba743e858b6571d74213c7b97c423b453d8c0016b506dd777442a4","54c0de6bb313ec3d993b7f82b4c5310840857bdf09f53fe9c0e03e775eab1db7","19ef6ed007bbd35d8a7aa0352bb2701a24089a4a5cd3a764a478b9162fbc0b61","2fa60584bf54722bcf706899e8da738af1df6f3ffadcbf41d509ba0db96ac4ad","8761f74baf198ac04b6adb9e313df91b814046d31cec231c0fcede87417e24ff","bebe9f83f9f67515b46698c69b2120fe46a6763ba63445d6448e4e2273a5f9ec","01c2f09692544e07f934bc374c8de35951afb24bb34a742ee5dcc2031ca42a7b","b1532d5277b34cad555efe4eccae061d7b43ac93409d6a44f60461b50880f2c5","cec9a146fc3b701fc4c6e275d4c51eba9c7e95ba7c7b3507c1c8c89e464e35fa","b4407b101c12e8548acef8f027d6496db198c0d707f3738097b3e872e426ac21","16957f6e2bc0171ed79eac7c881416d97535548afc4bbbed06444e2d1b5d86ff",{"version":"7ee65fc829436bd942b3aeaa0cf9fe1a44448ed4b3400b069dc11ad56aa26641","affectsGlobalScope":true},{"version":"ab9d2116c480f49c2e416556cf20bdd884a286a4a403b06783b24b8cd1fe5565","signature":"a2f70bfe3dc3877e9c0ee3e4a4b8f6dc1546fd4de6ddea7ec985526fccba8047"},{"version":"b3a6bee68229e3bf556bdb52f4b27a61962a5151860457cf347bf8cbe3abcfdb","signature":"af7a2006317332086a366e4c5040ce06a9e4924cbd5d276680735c3d354a5d78"},{"version":"57568ede85f323620b74e86813af04a08943ada65ffed426a42454baff38c2f7","signature":"99d31eba1f3ddf29e657f44d3b89611deeef5e1e647e200b0a1e95f4637861f5"},{"version":"74c4696e0c3a62c214f325c5d02fca3dd7f76c0cd3072f97db9838500116a58b","signature":"ffb853e159f2bd6cc35a07505a30dc51456966bb927377e0a566023f353360fd"},{"version":"cd9a7f3f9dd133062fc794d98a7bcd28e2b402ba7505ea422f04475807163492","signature":"2a776396a8ac31b51543632fadaa601105102b4bbb519df0404b0ae82e48524d"},{"version":"155716d1cc46f0ed6d62b42480f00b12972e4dfcebac030f6cd15969ed2ff0ac","signature":"d40e24f407eb23c3d8be51c1d6eea64e922995fe82049e0419260ff8a7332cad"},{"version":"bc1b6b4980ed2ae55a02e2820f4654d781f4b7b8e55051989756dc202ab7e5cd","signature":"318dfae5df300f26614f5c3a39dc429b7db088da2d3e7e8cfd693d05fcb4d1e7"},"19ce9ec982b542ef6d04d29ce678aad2fa52a67d8087e9c6cd95a4d6d98784c8","4af47b2f19621ce8f638167a32f141a3a2c0e71ce8ebf51384393ca1c2654e60","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","0beeeb5964025d8564c03cb0bf1a4b60dc40c01f065ad1a4e9030415f5bc7bc2","967cd29c50869f018eee4afe332a10766eb7306a415362fdd7587a0a71deee0b","085b5adcc1ac71d22ad44100349095f52168715fc494c9631d7656588145d748","0ef52e1ddb48a3a63b9c293cb9103bd98948b3732d2da0a72bdeb83508a97b9b","73b67d2e87ac7d7baaca64ca33fd1523c0b3c850cb7db5b9c014f1be7996bed1","5d5ae61fce1581fd6424269790a9071e3f8e69b029f5d0fcb46ce618c5dbc565","38a0ccc7106312a9f60e034e7cd8ac218774d8aa65f832cee3363a7e65f99325",{"version":"4a2c144ea6f441e9616ec77fe9b1009b0cdf6db0cd9727b8d99623975cd6c693","affectsGlobalScope":true},{"version":"5067a3dba2527a6158fc803a233b66f8eeea2f9795d959670858c588cda85387","affectsGlobalScope":true},"850040826cfa77593d44f44487133af21917f4f21507258bd4269501b80d32f0","8f07f2b6514744ac96e51d7cb8518c0f4de319471237ea10cf688b8d0e9d0225","bcb6ea18f23dae2c48459d7b86d3adccd6898f824fcbf9da08b935f559896580","1363ba7d52f2353d0c4306d0ecdaf171bf4509c0148842f9fd8d3986c098a2eb","3a24f4a428f24cad90b83fab329a620c4adbace083a8eda62c63365065b79e73","739c2c46edc112421fc023c24b4898b1f413f792bb6a02b40ba182c648e56c2f","858d0d831826c6eb563df02f7db71c90e26deadd0938652096bea3cc14899700","8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","18c04c22baee54d13b505fa6e8bcd4223f8ba32beee80ec70e6cac972d1cc9a6","5e92a2e8ba5cbcdfd9e51428f94f7bd0ab6e45c9805b1c9552b64abaffad3ce3","53ca39fe70232633759dd3006fc5f467ecda540252c0c819ab53e9f6ad97b226","e7174a839d4732630d904a8b488f22380e5bcf1d6405d1f59614e10795eca17d","7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","b9261ac3e9944d3d72c5ee4cf888ad35d9743a5563405c6963c4e43ee3708ca4","c84fd54e8400def0d1ef1569cafd02e9f39a622df9fa69b57ccc82128856b916","c7a38c1ef8d6ae4bf252be67bd9a8b012b2cdea65bd6225a3d1a726c4f0d52b6","e773630f8772a06e82d97046fc92da59ada8414c61689894fff0155dd08f102c","74f2815d9e1b8530120dcad409ed5f706df8513c4d93e99fc6213997aa4dd60e","9d1f36ccd354f2e286b909bf01d626a3a28dd6590770303a18afa7796fe50db9","c4bc6a572f9d763ac7fa0d839be3de80273a67660e2002e3225e00ef716b4f37","106e607866d6c3e9a497a696ac949c3e2ec46b6e7dda35aabe76100bf740833b","8a6c755dc994d16c4e072bba010830fa2500d98ff322c442c7c91488d160a10d","d4514d11e7d11c53da7d43b948654d6e608a3d93d666a36f8d01e18ece04c9bd","3d65182eff7bbb16de1a69e17651c51083f740af11a1a92359be6dab939e8bcf","670ddaf1f1b881abaa1cc28236430d86b691affbeaefd66b3ee1db31fdfb8dba","77b411edffb8d1fa25c07b5c3232e214f5f54b1fbb5e3e9eefcc9fd915bea582","16c0723ade1375295aef2b1da3615e0c2860fc4416dcec5a6a2493cf2299b088","1c53e1884dc6550ce179c68e9e3086f54af258fff39eb70274ea9294eb7ce6df","2d57bdaafc7cd0ebc006f0e77c869d6fe6148809c08e8b5677aef4150cf4a7c7","05c7aef6a4e496b93c2e682cced8903c0dfe6340d04f3fe616176e2782193435","65217b6b82afa9cbf7ba178b22409ee26c97288565d54c9353f31222ca285d43","e666e31d323fef5642f87db0da48a83e58f0aaf9e3823e87eabd8ec7e0441a36","18dcd65d0bfc1d862affd8b8598f6c59d669a7b16fe975e68fdf7b8c24e8cb69","d12ab69ace581804d4f264eabc71094ca8dadfa70ae2bf5ccd54a8d6105ab84b","bcb6ea18f23dae2c48459d7b86d3adccd6898f824fcbf9da08b935f559896580","1363ba7d52f2353d0c4306d0ecdaf171bf4509c0148842f9fd8d3986c098a2eb","4d5fb5d6b35f731b2ae4d9d7c592d48e91d6de531dd130628edf4eba16add893","a46573cb1296a8fa0f53f555f759e918c741f1369a306e5baefd437dd3f6c947","e4bd1ced7784095d09d56914c05cc4182c70912f37c40aa24d6f902dd60bf3bb","e72396ce544667ab49df38ffb91cb3f80ff17d2ad3df903ec30b1d2ca8ea68de","b7e28e06011460436d5c2ec2996846ac0c451e135357fc5a7269e5665a32fbd7","8f07f2b6514744ac96e51d7cb8518c0f4de319471237ea10cf688b8d0e9d0225","739c2c46edc112421fc023c24b4898b1f413f792bb6a02b40ba182c648e56c2f","77b411edffb8d1fa25c07b5c3232e214f5f54b1fbb5e3e9eefcc9fd915bea582","5336b42272d7dce354e9e9b14e11b8d033c586457c44118f53b7dfe9c18b2d89","47f8a36d81229ae685e37cb1c815a953b9e8ae75a7893f69813aad59527fbda9","901578873b6d861bbfd1d54ec68a93120724e3b911ef8cc80169875927a6635e","3fa571018b674c0cdc74584b04f32c421829c409236e1332af4a87ad904b504d","2d37a18dbc84466a72a4b00d0293ecfe3170fc664ca32126db0b7eace05824d5","f63e23230f3960b712450cf08f0f31e56acdae3ce65e0bf31bfdd6442b29d115","f2d1a59a658165341b0e2b7879aa2e19ea6a709146b2d3f70ee8a07159d3d08e","9476d5e5d1103b5683c13cace7df637a617a9dbc1fa4770456482df196304d7c","1c6d335c2b842c518f055898191502f58f61fd9ac242321967f3b32a954138d2",{"version":"3c678cfced7e12fed88175d2e9010d8f4eee8e7765ba8f0c51d34681750034e7","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"28584ccd504ab8fbe73f2f4f167830a001562bd1446dec4c3520a21a4fc487fe","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"7ac7ef12f7ece6464d83d2d56fea727260fb954fdd51a967e94f97b8595b714b",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"0133ebdd17a823ae56861948870cde4dac18dd8818ab641039c85bbb720429e0","dd89872dd0647dfd63665f3d525c06d114310a2f7a5a9277e5982a152b31be2b","946bd1737d9412395a8f24414c70f18660b84a75a12b0b448e6eb1a2161d06dd","e300bf65972ac08167a72787e19d1b43c285c5424707194d0ba64422f6b02c77","dc33ce27fbeaf0ea3da556c80a6cc8af9d13eb443088c8f25cdc39fca8e756f6"],"root":[[183,189],256,257],"options":{"composite":true,"declaration":true,"declarationMap":false,"emitDeclarationOnly":false,"esModuleInterop":true,"importHelpers":true,"jsx":4,"module":99,"noEmitHelpers":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./esm","rootDir":"../src","skipLibCheck":true,"sourceMap":false,"strict":true,"target":5},"fileIdsList":[[99],[99,262,263],[99,259,260,261,262],[99,263],[53,99],[56,99],[57,62,90,99],[58,69,70,77,87,98,99],[58,59,69,77,99],[60,99],[61,62,70,78,99],[62,87,95,99],[63,65,69,77,99],[64,99],[65,66,99],[69,99],[67,69,99],[69,70,71,87,98,99],[69,70,71,84,87,90,99],[99,103],[65,72,77,87,98,99],[69,70,72,73,77,87,95,98,99],[72,74,87,95,98,99],[53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105],[69,75,99],[76,98,99],[65,69,77,87,99],[78,99],[79,99],[56,80,99],[81,97,99,103],[82,99],[83,99],[69,84,85,99],[84,86,99,101],[57,69,87,88,89,90,99],[57,87,89,99],[87,88,99],[90,99],[91,99],[69,93,94,99],[93,94,99],[62,77,87,95,99],[96,99],[77,97,99],[57,72,83,98,99],[62,99],[87,99,100],[99,101],[99,102],[57,62,69,71,80,87,98,99,101,103],[87,99,104],[50,99],[46,47,48,49,99],[99,194,201],[99,194,195,196],[99,195],[99,194],[99,194,195,232],[99,229],[99,233],[99,198],[99,193,198],[99,193,198,199],[99,252],[99,242],[99,250],[99,231],[99,190],[99,190,191,193],[99,224],[99,222,224],[99,213,221,222,223,225],[99,211],[99,214,219,224,227],[99,210,227],[99,214,215,218,219,220,227],[99,214,215,216,218,219,227],[99,211,212,213,214,215,219,220,221,223,224,225,227],[99,209,211,212,213,214,215,216,218,219,220,221,222,223,224,225,226],[99,209,227],[99,214,216,217,219,220,227],[99,218,227],[99,219,220,224,227],[99,212,222],[99,192],[99,209],[99,236,239,240],[99,236,239,240,246],[99,236,239],[69,70,72,74,77,87,95,98,99,104,106,203,204,205,206,207,208,227,244],[99,205],[99,207,244],[69,70,72,74,77,87,95,98,99,104,106,203,204,207,227,237,238,244,245],[99,237],[99,238],[99,204,207],[70,99,103,194,197,200,201,202,228,230,234,235,241,243,247,248,249],[70,99,103,194,197,200,201,202,228,230,234,235,241,243,247,248,249,251,253,254],[99,120],[99,111,112],[99,109,110,111,113,114,118],[99,110,111],[99,119],[99,111],[99,109,110,111,114,115,116,117],[99,109,110,120],[50,99,129,130],[99,130,131],[50,99,129],[50,99,108,121,122],[50,99,121,122,123],[50,99,121,124,127,134],[50,99,106,108,123,124,125,126,127,128,132,133,134,135,136,137,138,139,140,141,142,145,148,155,156,157,158,159,165,166,167,168,171,172,173,174,175,176,177,181],[50,51,99,121,123,124,127,135,140,143,144,145,146,147,148,149,150,151,152,153,154,155,182],[50,99,158],[99,124,126,127,144,146,157,160,161,162,163,164],[99,121],[50,99,124],[99,169,170],[99,169],[50,99,121,123],[99,127],[99,108],[99,178,179,180],[50,99,178],[50,99,129,178],[99,125],[50,51,99,126,127,135,145,149,150,151,152],[51,99,183],[51,99,183,187,188],[50,51,52,99,182,183,184,185,186],[51,70,79,99,188,255],[51,99,184,255],[50,51,52,99],[51,99],[183],[183,187,188],[51,183],[50,52]],"referencedMap":[[201,1],[264,2],[259,1],[263,3],[260,4],[262,1],[261,1],[53,5],[54,5],[56,6],[57,7],[58,8],[59,9],[60,10],[61,11],[62,12],[63,13],[64,14],[65,15],[66,15],[68,16],[67,17],[69,16],[70,18],[71,19],[55,20],[105,1],[72,21],[73,22],[74,23],[106,24],[75,25],[76,26],[77,27],[78,28],[79,29],[80,30],[81,31],[82,32],[83,33],[84,34],[85,34],[86,35],[87,36],[89,37],[88,38],[90,39],[91,40],[92,1],[93,41],[94,42],[95,43],[96,44],[97,45],[98,46],[99,47],[100,48],[101,49],[102,50],[103,51],[104,52],[48,1],[258,53],[46,1],[50,54],[51,53],[49,1],[202,55],[197,56],[196,57],[195,58],[229,56],[233,59],[230,60],[234,61],[198,1],[252,62],[199,63],[200,64],[242,64],[253,65],[243,66],[251,67],[232,68],[231,1],[191,69],[194,70],[190,1],[47,1],[203,1],[52,1],[225,71],[223,72],[224,73],[212,74],[213,72],[220,75],[211,76],[216,77],[226,1],[217,78],[222,79],[227,80],[210,81],[218,82],[219,83],[214,84],[221,71],[215,85],[193,86],[192,1],[207,1],[209,87],[235,1],[250,1],[44,1],[45,1],[8,1],[10,1],[9,1],[2,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[3,1],[4,1],[19,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[34,1],[31,1],[32,1],[33,1],[35,1],[7,1],[36,1],[41,1],[42,1],[37,1],[38,1],[39,1],[40,1],[1,1],[43,1],[241,88],[248,88],[247,89],[240,90],[236,1],[228,91],[206,92],[205,1],[208,1],[204,93],[246,94],[238,95],[237,1],[239,96],[245,1],[244,97],[254,98],[255,99],[249,98],[121,100],[113,101],[119,102],[115,1],[116,1],[114,103],[117,100],[109,1],[110,1],[120,104],[112,105],[118,106],[111,107],[128,53],[107,1],[131,108],[132,109],[130,110],[133,1],[108,1],[123,111],[124,112],[135,113],[136,1],[143,1],[137,1],[138,1],[154,53],[134,53],[139,53],[140,1],[125,1],[141,53],[142,53],[182,114],[144,1],[156,115],[157,1],[160,1],[159,116],[126,53],[165,117],[150,53],[166,1],[122,118],[161,1],[167,53],[151,119],[158,119],[149,53],[152,119],[168,116],[171,120],[170,121],[169,1],[172,1],[173,122],[145,53],[146,1],[174,1],[175,1],[155,53],[176,123],[162,1],[163,1],[164,1],[177,1],[127,124],[181,125],[179,126],[178,110],[180,127],[147,53],[129,1],[148,128],[153,129],[188,130],[189,131],[187,132],[256,133],[257,134],[183,135],[184,130],[185,136],[186,136]],"exportedModulesMap":[[201,1],[264,2],[259,1],[263,3],[260,4],[262,1],[261,1],[53,5],[54,5],[56,6],[57,7],[58,8],[59,9],[60,10],[61,11],[62,12],[63,13],[64,14],[65,15],[66,15],[68,16],[67,17],[69,16],[70,18],[71,19],[55,20],[105,1],[72,21],[73,22],[74,23],[106,24],[75,25],[76,26],[77,27],[78,28],[79,29],[80,30],[81,31],[82,32],[83,33],[84,34],[85,34],[86,35],[87,36],[89,37],[88,38],[90,39],[91,40],[92,1],[93,41],[94,42],[95,43],[96,44],[97,45],[98,46],[99,47],[100,48],[101,49],[102,50],[103,51],[104,52],[48,1],[258,53],[46,1],[50,54],[51,53],[49,1],[202,55],[197,56],[196,57],[195,58],[229,56],[233,59],[230,60],[234,61],[198,1],[252,62],[199,63],[200,64],[242,64],[253,65],[243,66],[251,67],[232,68],[231,1],[191,69],[194,70],[190,1],[47,1],[203,1],[52,1],[225,71],[223,72],[224,73],[212,74],[213,72],[220,75],[211,76],[216,77],[226,1],[217,78],[222,79],[227,80],[210,81],[218,82],[219,83],[214,84],[221,71],[215,85],[193,86],[192,1],[207,1],[209,87],[235,1],[250,1],[44,1],[45,1],[8,1],[10,1],[9,1],[2,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[3,1],[4,1],[19,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[34,1],[31,1],[32,1],[33,1],[35,1],[7,1],[36,1],[41,1],[42,1],[37,1],[38,1],[39,1],[40,1],[1,1],[43,1],[241,88],[248,88],[247,89],[240,90],[236,1],[228,91],[206,92],[205,1],[208,1],[204,93],[246,94],[238,95],[237,1],[239,96],[245,1],[244,97],[254,98],[255,99],[249,98],[121,100],[113,101],[119,102],[115,1],[116,1],[114,103],[117,100],[109,1],[110,1],[120,104],[112,105],[118,106],[111,107],[128,53],[107,1],[131,108],[132,109],[130,110],[133,1],[108,1],[123,111],[124,112],[135,113],[136,1],[143,1],[137,1],[138,1],[154,53],[134,53],[139,53],[140,1],[125,1],[141,53],[142,53],[182,114],[144,1],[156,115],[157,1],[160,1],[159,116],[126,53],[165,117],[150,53],[166,1],[122,118],[161,1],[167,53],[151,119],[158,119],[149,53],[152,119],[168,116],[171,120],[170,121],[169,1],[172,1],[173,122],[145,53],[146,1],[174,1],[175,1],[155,53],[176,123],[162,1],[163,1],[164,1],[177,1],[127,124],[181,125],[179,126],[178,110],[180,127],[147,53],[129,1],[148,128],[153,129],[188,137],[189,138],[187,139],[183,140],[184,137]],"semanticDiagnosticsPerFile":[201,264,259,263,260,262,261,53,54,56,57,58,59,60,61,62,63,64,65,66,68,67,69,70,71,55,105,72,73,74,106,75,76,77,78,79,80,81,82,83,84,85,86,87,89,88,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,48,258,46,50,51,49,202,197,196,195,229,233,230,234,198,252,199,200,242,253,243,251,232,231,191,194,190,47,203,52,225,223,224,212,213,220,211,216,226,217,222,227,210,218,219,214,221,215,193,192,207,209,235,250,44,45,8,10,9,2,11,12,13,14,15,16,17,18,3,4,19,23,20,21,22,24,25,26,5,27,28,29,30,6,34,31,32,33,35,7,36,41,42,37,38,39,40,1,43,241,248,247,240,236,228,206,205,208,204,246,238,237,239,245,244,254,255,249,121,113,119,115,116,114,117,109,110,120,112,118,111,128,107,131,132,130,133,108,123,124,135,136,143,137,138,154,134,139,140,125,141,142,182,144,156,157,160,159,126,165,150,166,122,161,167,151,158,149,152,168,171,170,169,172,173,145,146,174,175,155,176,162,163,164,177,127,181,179,178,180,147,129,148,153,188,189,187,256,257,183,184,185,186],"latestChangedDtsFile":"./esm/test/utils.test.d.ts"},"version":"5.3.3"}
@@ -1,6 +0,0 @@
1
- import type { LottieProps } from './types';
2
- /**
3
- * @description Part of the @remotion/lottie package.
4
- * @see [Documentation](https://www.remotion.dev/docs/lottie/lottie)
5
- */
6
- export declare const Lottie: ({ animationData, className, direction, loop, playbackRate, style, onAnimationLoaded, renderer, preserveAspectRatio, assetsPath, }: LottieProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,14 +0,0 @@
1
- import type { LottieAnimationData } from './types';
2
- type LottieMetadata = {
3
- fps: number;
4
- durationInSeconds: number;
5
- durationInFrames: number;
6
- width: number;
7
- height: number;
8
- };
9
- /**
10
- * @description Get the basic metadata such as dimensions, duration and framerate of a Lottie animation.
11
- * @see [Documentation](https://www.remotion.dev/docs/lottie/getlottiemetadata)
12
- */
13
- export declare const getLottieMetadata: (animationData: LottieAnimationData) => LottieMetadata | null;
14
- export {};
@@ -1,3 +0,0 @@
1
- export { Lottie } from './Lottie';
2
- export { getLottieMetadata } from './get-lottie-metadata';
3
- export type { LottieAnimationData, LottieProps } from './types';
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,49 +0,0 @@
1
- import type { AnimationItem } from 'lottie-web';
2
- import type { CSSProperties } from 'react';
3
- export type LottieAnimationData = {
4
- fr: number;
5
- w: number;
6
- h: number;
7
- op: number;
8
- } & Record<string | number | symbol, unknown>;
9
- export type AspectRatioConstraint = 'none' | 'xMinYMin' | 'xMidYMin' | 'xMaxYMin' | 'xMinYMid' | 'xMidYMid' | 'xMaxYMid' | 'xMinYMax' | 'xMidYMax';
10
- export type LottieProps = {
11
- /**
12
- * JSON object with the animation data.
13
- * */
14
- animationData: LottieAnimationData;
15
- /**
16
- * CSS classes to apply on the container of the animation.
17
- */
18
- className?: string;
19
- /**
20
- * The direction of the animation. Defaults to forward.
21
- */
22
- direction?: 'forward' | 'backward';
23
- /**
24
- * If the animation should loop after its end.
25
- */
26
- loop?: boolean;
27
- /**
28
- * The speed of the animation. Defaults to 1.
29
- */
30
- playbackRate?: number;
31
- /**
32
- * CSS properties to apply to the container of the animation.
33
- */
34
- style?: CSSProperties;
35
- /**
36
- * The render engine of the Lotti files.
37
- */
38
- renderer?: 'svg' | 'canvas' | 'html';
39
- /**
40
- * for svg and canvas renderer it simulates the behavior of the preserveAspectRatio property on svgs.
41
- * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/preserveAspectRatio
42
- */
43
- preserveAspectRatio?: AspectRatioConstraint | `${AspectRatioConstraint} ${'slice' | 'meet'}`;
44
- assetsPath?: string;
45
- /**
46
- * Callback that gets invoked when new animation data has been initialized
47
- */
48
- onAnimationLoaded?: (animation: AnimationItem) => void;
49
- };
@@ -1,7 +0,0 @@
1
- import type { LottieProps } from './types';
2
- type Params = Pick<LottieProps, 'direction' | 'loop'> & {
3
- currentFrame: number;
4
- totalFrames: number;
5
- };
6
- export declare const getLottieFrame: ({ currentFrame, direction, loop, totalFrames, }: Params) => number;
7
- export {};
@@ -1 +0,0 @@
1
- export declare const validateLoop: (loop: unknown) => void;
@@ -1 +0,0 @@
1
- export declare const validatePlaybackRate: (playbackRate: unknown) => void;