@revideo/create 0.1.3 → 0.1.4-alpha.875

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -29,7 +29,7 @@ const PLUGINS = {
29
29
  ffmpeg: {
30
30
  package: '@revideo/ffmpeg',
31
31
  variable: 'ffmpeg',
32
- version: '^0.1.1',
32
+ version: '^0.1.5',
33
33
  },
34
34
  };
35
35
 
@@ -63,7 +63,7 @@ const PLUGINS = {
63
63
  type: 'text',
64
64
  name: 'name',
65
65
  message: 'Project name',
66
- initial: 'my-animation',
66
+ initial: 'my-video',
67
67
  validate: value =>
68
68
  isValidPackageName(value)
69
69
  ? true
@@ -95,75 +95,30 @@ const PLUGINS = {
95
95
  },
96
96
  format: value => path.resolve(value),
97
97
  },
98
- {
99
- type: 'select',
100
- name: 'language',
101
- message: 'Language',
102
- choices: [
103
- {
104
- title: 'TypeScript (Recommended)',
105
- value: 'ts',
106
- },
107
- {
108
- title: 'JavaScript',
109
- value: 'js',
110
- },
111
- ],
112
- },
113
- {
114
- type: 'multiselect',
115
- name: 'plugins',
116
- message: 'How would you like to render your animation?',
117
- choices: [
118
- {
119
- title: 'Image sequence',
120
- value: 'core',
121
- disabled: true,
122
- selected: true,
123
- },
124
- {
125
- title: 'Video (FFmpeg)',
126
- value: 'ffmpeg',
127
- selected: true,
128
- },
129
- ],
130
- warn: 'This option is always included.',
131
- onRender() {
132
- this.value[0].selected = true;
133
- },
134
- validate: value => {
135
- if (!Array.isArray(value)) {
136
- return '"plugins" option must be an array.';
137
- }
138
-
139
- if (!value.includes('core')) {
140
- return 'Image sequence is required.';
141
- }
142
-
143
- return true;
144
- },
145
- },
146
98
  ]);
147
99
 
148
- if (!response.plugins) {
100
+ if (!response.path) {
149
101
  console.log(kleur.red('× Scaffolding aborted by the user.\n'));
150
102
  return;
151
103
  }
152
104
 
105
+ const plugins = ['core', 'ffmpeg'];
106
+ const language = 'ts';
107
+
153
108
  const templateDir = path.resolve(
154
109
  fileURLToPath(import.meta.url),
155
110
  '..',
156
- `template-2d-${response.language}`,
111
+ `template-2d-${language}`,
157
112
  );
158
113
  copyDirectory(templateDir, response.path);
159
- createConfig(response);
114
+ createConfig(response, plugins, language);
160
115
 
161
116
  const manifest = JSON.parse(
162
117
  fs.readFileSync(path.join(templateDir, `package.json`), 'utf-8'),
163
118
  );
164
119
  manifest.name = response.name;
165
120
  manifest.dependencies ??= {};
166
- for (const plugin of response.plugins) {
121
+ for (const plugin of plugins) {
167
122
  const data = PLUGINS[plugin];
168
123
  if (data.version) {
169
124
  manifest.dependencies[data.package] = data.version;
@@ -226,19 +181,15 @@ function copy(src, dest) {
226
181
  }
227
182
  }
228
183
 
229
- function createConfig(response) {
184
+ function createConfig(response, plugins, language) {
230
185
  const imports = [];
231
- const plugins = [];
232
- for (const plugin of response.plugins) {
186
+ for (const plugin of plugins) {
233
187
  const data = PLUGINS[plugin];
234
188
  imports.push(`import ${data.variable} from '${data.package}';\n`);
235
189
  plugins.push(`${data.variable}(${data.options?.(response) ?? ''}),`);
236
190
  }
237
191
 
238
- const configFile = path.resolve(
239
- response.path,
240
- `vite.config.${response.language}`,
241
- );
192
+ const configFile = path.resolve(response.path, `vite.config.${language}`);
242
193
 
243
194
  fs.writeFileSync(
244
195
  configFile,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revideo/create",
3
- "version": "0.1.3",
3
+ "version": "0.1.4-alpha.875+4ebe905",
4
4
  "description": "Quickly scaffold revideo projects",
5
5
  "main": "index.js",
6
6
  "author": "revideo",
@@ -29,5 +29,5 @@
29
29
  "minimist": "^1.2.8",
30
30
  "prompts": "^2.4.2"
31
31
  },
32
- "gitHead": "a8acd169704d28fbad73940026e77bbd8dd977b3"
32
+ "gitHead": "4ebe9050d130e79de7e08d1c57616f2ca741ff65"
33
33
  }
@@ -5,7 +5,8 @@
5
5
  "scripts": {
6
6
  "start": "vite",
7
7
  "serve": "vite",
8
- "build": "tsc && vite build"
8
+ "build": "tsc && vite build",
9
+ "render": "tsc && node dist/render.js"
9
10
  },
10
11
  "dependencies": {
11
12
  "@revideo/core": "*",
@@ -17,4 +18,4 @@
17
18
  "typescript": "^5.2.2",
18
19
  "vite": "^4.5"
19
20
  }
20
- }
21
+ }
@@ -0,0 +1,3 @@
1
+ import {renderVideo} from '@revideo/renderer';
2
+
3
+ renderVideo('./vite.config.ts');
@@ -1,12 +1,58 @@
1
- import {Circle, makeScene2D} from '@revideo/2d';
2
- import {createRef} from '@revideo/core';
1
+ import {Audio, Img, Layout, Rect, Txt, Video, makeScene2D} from '@revideo/2d';
2
+ import {all, chain, createRef, waitFor} from '@revideo/core';
3
3
 
4
4
  export default makeScene2D(function* (view) {
5
- // Create your animations here
5
+ const upperBox = createRef<Rect>();
6
+ const logoRef = createRef<Img>();
6
7
 
7
- const circle = createRef<Circle>();
8
+ view.add(
9
+ <>
10
+ <Layout direction={'column'} size={[1024, 1792]} layout={true}>
11
+ <Rect
12
+ fill={'#FFFFFF'}
13
+ size={['100%', '40%']}
14
+ direction={'column'}
15
+ gap={'20%'}
16
+ ref={upperBox}
17
+ justifyContent={'center'}
18
+ alignItems={'center'}
19
+ layout={true}
20
+ />
21
+ <Video
22
+ src={
23
+ 'https://revideo-example-assets.s3.amazonaws.com/aurora-borealis.mp4'
24
+ }
25
+ size={['100%', '60%']}
26
+ play={true}
27
+ />
28
+ </Layout>
29
+ <Audio
30
+ src={
31
+ 'https://revideo-example-assets.s3.amazonaws.com/heart-on-my-sleeve.mp3'
32
+ }
33
+ play={true}
34
+ time={6.6}
35
+ />
36
+ </>,
37
+ );
8
38
 
9
- view.add(<Circle ref={circle} size={320} fill={'lightseagreen'} />);
39
+ yield* waitFor(0.5);
10
40
 
11
- yield* circle().scale(2, 2).to(1, 2);
41
+ upperBox().add(
42
+ <Txt fontWeight={700} fontSize={70}>
43
+ Hello! Welcome to
44
+ </Txt>,
45
+ );
46
+ upperBox().add(
47
+ <Img
48
+ width={'1%'}
49
+ ref={logoRef}
50
+ src={'https://revideo-example-assets.s3.amazonaws.com/revideo-banner.png'}
51
+ />,
52
+ );
53
+
54
+ yield* chain(
55
+ all(logoRef().scale(30, 2), logoRef().rotation(360, 2)),
56
+ logoRef().scale(40, 2),
57
+ );
12
58
  });
@@ -1,4 +1,8 @@
1
1
  {
2
2
  "extends": "@revideo/2d/tsconfig.project.json",
3
- "include": ["src"]
3
+ "include": ["src"],
4
+ "compilerOptions": {
5
+ "noEmit": false,
6
+ "outDir": "dist"
7
+ }
4
8
  }
@@ -1,15 +0,0 @@
1
- # Generated files
2
- node_modules
3
- output
4
- dist
5
-
6
- # Editor directories and files
7
- .vscode/*
8
- !.vscode/extensions.json
9
- .idea
10
- .DS_Store
11
- *.suo
12
- *.ntvs*
13
- *.njsproj
14
- *.sln
15
- *.sw?
@@ -1,19 +0,0 @@
1
- {
2
- "name": "2d-starter",
3
- "private": true,
4
- "version": "0.0.0",
5
- "scripts": {
6
- "start": "vite",
7
- "serve": "vite",
8
- "build": "vite build"
9
- },
10
- "dependencies": {
11
- "@revideo/core": "*",
12
- "@revideo/2d": "*"
13
- },
14
- "devDependencies": {
15
- "@revideo/ui": "*",
16
- "@revideo/vite-plugin": "*",
17
- "vite": "^4.5"
18
- }
19
- }
File without changes
@@ -1,7 +0,0 @@
1
- import {makeProject} from '@revideo/core';
2
-
3
- import example from './scenes/example?scene';
4
-
5
- export default makeProject({
6
- scenes: [example],
7
- });
@@ -1,12 +0,0 @@
1
- import {Circle, makeScene2D} from '@revideo/2d';
2
- import {createRef} from '@revideo/core';
3
-
4
- export default makeScene2D(function* (view) {
5
- // Create your animations here
6
-
7
- const circle = createRef();
8
-
9
- view.add(<Circle ref={circle} size={320} fill={'lightseagreen'} />);
10
-
11
- yield* circle().scale(2, 2).to(1, 2);
12
- });