UNPKG

5.37 kBJavaScriptView Raw
1"use strict";
2var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3 if (k2 === undefined) k2 = k;
4 Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5}) : (function(o, m, k, k2) {
6 if (k2 === undefined) k2 = k;
7 o[k2] = m[k];
8}));
9var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10 Object.defineProperty(o, "default", { enumerable: true, value: v });
11}) : function(o, v) {
12 o["default"] = v;
13});
14var __importStar = (this && this.__importStar) || function (mod) {
15 if (mod && mod.__esModule) return mod;
16 var result = {};
17 if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18 __setModuleDefault(result, mod);
19 return result;
20};
21Object.defineProperty(exports, "__esModule", { value: true });
22exports.CompositionManagerProvider = exports.compositionsRef = exports.CompositionManager = void 0;
23const jsx_runtime_1 = require("react/jsx-runtime");
24const react_1 = __importStar(require("react"));
25exports.CompositionManager = (0, react_1.createContext)({
26 compositions: [],
27 registerComposition: () => undefined,
28 unregisterComposition: () => undefined,
29 registerFolder: () => undefined,
30 unregisterFolder: () => undefined,
31 currentComposition: null,
32 setCurrentComposition: () => undefined,
33 registerSequence: () => undefined,
34 unregisterSequence: () => undefined,
35 registerAsset: () => undefined,
36 unregisterAsset: () => undefined,
37 sequences: [],
38 assets: [],
39 folders: [],
40});
41exports.compositionsRef = react_1.default.createRef();
42const CompositionManagerProvider = ({ children }) => {
43 // Wontfix, expected to have
44 // eslint-disable-next-line @typescript-eslint/no-explicit-any
45 const [compositions, setCompositions] = (0, react_1.useState)([]);
46 const [currentComposition, setCurrentComposition] = (0, react_1.useState)(null);
47 const [assets, setAssets] = (0, react_1.useState)([]);
48 const [folders, setFolders] = (0, react_1.useState)([]);
49 const [sequences, setSequences] = (0, react_1.useState)([]);
50 const registerComposition = (0, react_1.useCallback)((comp) => {
51 setCompositions((comps) => {
52 if (comps.find((c) => c.id === comp.id)) {
53 throw new Error(`Multiple composition with id ${comp.id} are registered.`);
54 }
55 return [...comps, comp].slice().sort((a, b) => a.nonce - b.nonce);
56 });
57 }, []);
58 const registerSequence = (0, react_1.useCallback)((seq) => {
59 setSequences((seqs) => {
60 return [...seqs, seq];
61 });
62 }, []);
63 const unregisterComposition = (0, react_1.useCallback)((id) => {
64 setCompositions((comps) => {
65 return comps.filter((c) => c.id !== id);
66 });
67 }, []);
68 const unregisterSequence = (0, react_1.useCallback)((seq) => {
69 setSequences((seqs) => seqs.filter((s) => s.id !== seq));
70 }, []);
71 const registerAsset = (0, react_1.useCallback)((asset) => {
72 setAssets((assts) => {
73 return [...assts, asset];
74 });
75 }, []);
76 const unregisterAsset = (0, react_1.useCallback)((id) => {
77 setAssets((assts) => {
78 return assts.filter((a) => a.id !== id);
79 });
80 }, []);
81 const registerFolder = (0, react_1.useCallback)((name, parent) => {
82 setFolders((prevFolders) => {
83 return [
84 ...prevFolders,
85 {
86 name,
87 parent,
88 },
89 ];
90 });
91 }, []);
92 const unregisterFolder = (0, react_1.useCallback)((name, parent) => {
93 setFolders((prevFolders) => {
94 return prevFolders.filter((p) => !(p.name === name && p.parent === parent));
95 });
96 }, []);
97 (0, react_1.useLayoutEffect)(() => {
98 if (typeof window !== 'undefined') {
99 window.remotion_collectAssets = () => {
100 setAssets([]); // clear assets at next render
101 return assets;
102 };
103 }
104 }, [assets]);
105 (0, react_1.useImperativeHandle)(exports.compositionsRef, () => {
106 return {
107 getCompositions: () => compositions,
108 };
109 }, [compositions]);
110 const contextValue = (0, react_1.useMemo)(() => {
111 return {
112 compositions,
113 registerComposition,
114 unregisterComposition,
115 currentComposition,
116 setCurrentComposition,
117 registerSequence,
118 unregisterSequence,
119 registerAsset,
120 unregisterAsset,
121 sequences,
122 assets,
123 folders,
124 registerFolder,
125 unregisterFolder,
126 };
127 }, [
128 compositions,
129 currentComposition,
130 registerComposition,
131 registerSequence,
132 unregisterComposition,
133 unregisterSequence,
134 registerAsset,
135 unregisterAsset,
136 sequences,
137 assets,
138 registerFolder,
139 unregisterFolder,
140 folders,
141 ]);
142 return ((0, jsx_runtime_1.jsx)(exports.CompositionManager.Provider, { value: contextValue, children: children }, void 0));
143};
144exports.CompositionManagerProvider = CompositionManagerProvider;