@vvfx/sdk 0.0.0-alpha.10

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.
@@ -0,0 +1,507 @@
1
+ import * as _galacean_effects from '@galacean/effects';
2
+ import { spec, Player } from '@galacean/effects';
3
+ export { spec } from '@galacean/effects';
4
+
5
+ type ViewItemTypedProperty = {
6
+ [K in keyof PageFormTypeAndPropertyReference]: {
7
+ /**
8
+ * @description 元素类型
9
+ */
10
+ type: K;
11
+ /**
12
+ * @description 元素属性
13
+ */
14
+ property: PageFormTypeAndPropertyReference[K];
15
+ };
16
+ }[keyof PageFormTypeAndPropertyReference];
17
+ type PageFormTypedProperty = {
18
+ [K in keyof PageFormTypeAndPropertyReference]: {
19
+ type: K;
20
+ property: PageFormTypeAndPropertyReference[K];
21
+ onPropertyValueChange: <N extends keyof PageFormTypeAndPropertyReference[K]>(propertyName: N, propertyValue: PageFormTypeAndPropertyReference[K][N]) => void;
22
+ };
23
+ }[keyof PageFormTypeAndPropertyReference];
24
+ type GetItemPropertyValueParam<T extends keyof PageFormTypeAndPropertyReference, N extends keyof PageFormTypeAndPropertyReference[T]> = {
25
+ itemId: string;
26
+ type: T;
27
+ propertyName: N;
28
+ };
29
+ type GetItemPropertyValueResult<T extends keyof PageFormTypeAndPropertyReference, N extends keyof PageFormTypeAndPropertyReference[T]> = PageFormTypeAndPropertyReference[T][N];
30
+ type GetItemPropertyParam<T extends keyof PageFormTypeAndPropertyReference> = {
31
+ itemId: string;
32
+ type: T;
33
+ };
34
+ type GetItemPropertyResult<T extends keyof PageFormTypeAndPropertyReference> = {
35
+ type: T;
36
+ property: PageFormTypeAndPropertyReference[T];
37
+ };
38
+ type SetItemPropertyValueParam = {
39
+ [T in keyof PageFormTypeAndPropertyReference]: {
40
+ [N in keyof PageFormTypeAndPropertyReference[T]]: {
41
+ itemId: string;
42
+ type: T;
43
+ propertyName: N;
44
+ propertyValue: PageFormTypeAndPropertyReference[T][N];
45
+ };
46
+ }[keyof PageFormTypeAndPropertyReference[T]];
47
+ }[keyof PageFormTypeAndPropertyReference];
48
+
49
+ declare global {
50
+ interface Window {
51
+ /**
52
+ * @description 创建 WebP Core 实例
53
+ */
54
+ createWebPCore: (config: any) => Promise<Img2WebPCore>;
55
+ }
56
+ }
57
+ type FS = {
58
+ writeFile: (path: string, data: Uint8Array | string) => void;
59
+ readFile(path: string, opts: {
60
+ encoding: 'binary';
61
+ flags?: string | undefined;
62
+ }): Uint8Array;
63
+ readFile(path: string, opts: {
64
+ encoding: 'utf8';
65
+ flags?: string | undefined;
66
+ }): string;
67
+ readFile(path: string, opts?: {
68
+ flags?: string | undefined;
69
+ }): Uint8Array;
70
+ unlink: (path: string) => void;
71
+ quit: () => void;
72
+ };
73
+ type Pointer = number;
74
+ type Img2WebPCore = {
75
+ FS: FS;
76
+ run: (...args: string[]) => number;
77
+ cwrap: (ident: string, returnType: string, argTypes: string[]) => ((argc: number, argv: Pointer) => number);
78
+ _malloc: (size: number) => Pointer;
79
+ writeAsciiToMemory: (str: string, buffer: number, dontAddNull?: boolean) => void;
80
+ setValue: (ptr: number, value: any, type: string, noSafe?: boolean) => void;
81
+ };
82
+
83
+ type BaseFormProperty = {
84
+ position: [number, number, number];
85
+ rotation: [number, number, number];
86
+ scale: [number, number, number];
87
+ keyPropertyEditing: boolean;
88
+ };
89
+ type SpriteFormProperty = BaseFormProperty & {
90
+ image: string;
91
+ };
92
+ type TextFormProperty = BaseFormProperty & {
93
+ font: string;
94
+ color: [number, number, number, number];
95
+ weight: spec.TextWeight;
96
+ text: string;
97
+ alignment: spec.TextAlignment;
98
+ };
99
+ /**
100
+ * @description 页面表单类型和属性引用
101
+ */
102
+ type PageFormTypeAndPropertyReference = {
103
+ [spec.ItemType.base]: BaseFormProperty;
104
+ [spec.ItemType.sprite]: SpriteFormProperty;
105
+ [spec.ItemType.particle]: BaseFormProperty;
106
+ [spec.ItemType.null]: BaseFormProperty;
107
+ [spec.ItemType.interact]: BaseFormProperty;
108
+ [spec.ItemType.plugin]: BaseFormProperty;
109
+ [spec.ItemType.camera]: BaseFormProperty;
110
+ [spec.ItemType.composition]: BaseFormProperty;
111
+ [spec.ItemType.spine]: BaseFormProperty;
112
+ [spec.ItemType.mesh]: BaseFormProperty;
113
+ [spec.ItemType.tree]: BaseFormProperty;
114
+ [spec.ItemType.text]: TextFormProperty;
115
+ [spec.ItemType.light]: BaseFormProperty;
116
+ [spec.ItemType.skybox]: BaseFormProperty;
117
+ [spec.ItemType.effect]: BaseFormProperty;
118
+ [spec.ItemType.shape]: BaseFormProperty;
119
+ [spec.ItemType.postProcessVolume]: BaseFormProperty;
120
+ [spec.ItemType.node]: BaseFormProperty;
121
+ [spec.ItemType.video]: BaseFormProperty;
122
+ [spec.ItemType.audio]: BaseFormProperty;
123
+ [spec.ItemType.richtext]: TextFormProperty;
124
+ };
125
+ type SpecificPageFormProps<T extends keyof PageFormTypeAndPropertyReference> = {
126
+ type: T;
127
+ property: PageFormTypeAndPropertyReference[T];
128
+ onPropertyValueChange: <N extends keyof PageFormTypeAndPropertyReference[T]>(propertyName: N, propertyValue: PageFormTypeAndPropertyReference[T][N]) => void;
129
+ };
130
+ /**
131
+ * @description SDK入参
132
+ */
133
+ type SDKInputParam = {
134
+ /**
135
+ * @description JSON地址
136
+ */
137
+ scene: string | spec.JSONScene;
138
+ /**
139
+ * @description 视图参数
140
+ */
141
+ viewParams: ViewParam[];
142
+ /**
143
+ * @description 页面属性
144
+ */
145
+ options: PageOptions;
146
+ /**
147
+ * @description 是否开启出血区强制变换
148
+ */
149
+ keepSafe?: boolean;
150
+ /**
151
+ * @description 是否开启静态预览功能 - 第一个合成仅支持播放,不可编辑
152
+ */
153
+ staticPreview?: boolean;
154
+ };
155
+ /**
156
+ * @description 页面属性
157
+ */
158
+ type PageOptions = {
159
+ /**
160
+ * @description 同步模式开关
161
+ */
162
+ asyncMode: boolean;
163
+ /**
164
+ * @description 安全区展示开关
165
+ */
166
+ safeAreaPreview: boolean;
167
+ /**
168
+ * @description 吸附开关
169
+ */
170
+ adsorption: boolean;
171
+ };
172
+ /**
173
+ * @description 页面数据
174
+ */
175
+ type PageData = {
176
+ /**
177
+ * @description 页面属性
178
+ */
179
+ property: PageProperty;
180
+ /**
181
+ * @description 视图属性
182
+ */
183
+ viewProperties: ViewProperty[];
184
+ /**
185
+ * @description 活跃数据
186
+ */
187
+ activeData: ActiveData;
188
+ /**
189
+ * @description 元素数据
190
+ */
191
+ items: ViewItem[];
192
+ /**
193
+ * @description 视图当前时间
194
+ */
195
+ time: number;
196
+ /**
197
+ * @description 是否处于播放态
198
+ */
199
+ playing: boolean;
200
+ };
201
+ /**
202
+ * @description 页面配置
203
+ */
204
+ type PageConfig = {
205
+ /**
206
+ * @description 出血区域展示开关
207
+ */
208
+ safeAreaPreview: boolean;
209
+ /**
210
+ * @description 缩放值
211
+ */
212
+ zoom: number;
213
+ /**
214
+ * @description 吸附开关
215
+ */
216
+ adsorption: boolean;
217
+ /**
218
+ * @description 同步开关
219
+ */
220
+ asyncMode: boolean;
221
+ };
222
+ /**
223
+ * @description 页面属性
224
+ */
225
+ type PageProperty = {
226
+ /**
227
+ * @description 出血区域展示开关
228
+ */
229
+ safeAreaPreview: boolean;
230
+ /**
231
+ * @description 缩放值
232
+ */
233
+ zoom: number;
234
+ /**
235
+ * @description 偏移值
236
+ */
237
+ translation: [number, number];
238
+ /**
239
+ * @description 吸附开关
240
+ */
241
+ adsorption: boolean;
242
+ /**
243
+ * @description 同步开关
244
+ */
245
+ asyncMode: boolean;
246
+ };
247
+ /**
248
+ * @description 视图创建参数
249
+ */
250
+ type ViewParam = {
251
+ /**
252
+ * @description 页面尺寸
253
+ */
254
+ size: [number, number];
255
+ /**
256
+ * @description 出血区参数
257
+ */
258
+ safeArea: [number, number, number, number];
259
+ /**
260
+ * @description 自定义出血区 - 用于展示
261
+ */
262
+ previewSafeAreas?: PreviewSafeAreaParam[];
263
+ /**
264
+ * @description 导出参数
265
+ */
266
+ export: ExportParam;
267
+ };
268
+ /**
269
+ * @description 导出参数
270
+ */
271
+ type ExportParam = {
272
+ /**
273
+ * @description 导出视频时长
274
+ */
275
+ time: number;
276
+ /**
277
+ * @description 导出大小上限 - 单位kb
278
+ */
279
+ fileSizeLimit: number;
280
+ /**
281
+ * @description 是否开启音轨
282
+ */
283
+ audioEnable: boolean;
284
+ /**
285
+ * @description 视频fps - 默认 30
286
+ */
287
+ fps?: number;
288
+ /**
289
+ * @description 导出视频类型 - 预留参数
290
+ */
291
+ type?: string;
292
+ /**
293
+ * @description 视频名称
294
+ */
295
+ name?: string;
296
+ };
297
+ /**
298
+ * @description 视图属性
299
+ */
300
+ type ViewProperty = {
301
+ /**
302
+ * @description 视图ID
303
+ */
304
+ id: number;
305
+ /**
306
+ * @description 视图宽高
307
+ */
308
+ size: [number, number];
309
+ /**
310
+ * @description 出血区数据
311
+ */
312
+ safeArea: [number, number, number, number];
313
+ /**
314
+ * @description 自定义出血区数据
315
+ */
316
+ previewSafeAreas: PreviewSafeAreaParam[];
317
+ /**
318
+ * @description 视图场景数据
319
+ */
320
+ scene: spec.JSONScene;
321
+ /**
322
+ * @description 预览图数据
323
+ */
324
+ thumbnail: string;
325
+ /**
326
+ * @description 导出参数
327
+ */
328
+ export: ExportParam;
329
+ /**
330
+ * @description 忽略交互 - 仅供展示
331
+ */
332
+ ignoreInteraction: boolean;
333
+ };
334
+ /**
335
+ * @description 自定义出血区数据
336
+ */
337
+ type PreviewSafeAreaParam = {
338
+ /**
339
+ * @description 出血区包围盒 [left top width height]
340
+ */
341
+ box: [number, number, number, number];
342
+ /**
343
+ * @description 出血区色块颜色 默认为 [255, 255, 255, 0.3]
344
+ */
345
+ color?: [number, number, number, number];
346
+ };
347
+ /**
348
+ * @description 页面活跃数据
349
+ */
350
+ type ActiveData = {
351
+ /**
352
+ * @description 视图ID
353
+ */
354
+ view?: number;
355
+ /**
356
+ * @description 选中元素
357
+ */
358
+ selectedItems: string[];
359
+ /**
360
+ * @description 预选中元素
361
+ */
362
+ preSelectedItem?: string;
363
+ };
364
+ /**
365
+ * @description 视图元素
366
+ */
367
+ type ViewItem = {
368
+ /**
369
+ * @description 元素ID
370
+ */
371
+ id: string;
372
+ /**
373
+ * @description 元素名称
374
+ */
375
+ name: string;
376
+ /**
377
+ * @description 元素父节点ID
378
+ */
379
+ parentId?: string;
380
+ /**
381
+ * @description 子元素
382
+ */
383
+ children: string[];
384
+ /**
385
+ * @description 元素生命周期
386
+ */
387
+ duration: number;
388
+ /**
389
+ * @description 元素生命周期延时
390
+ */
391
+ delay: number;
392
+ /**
393
+ * @description 元素结束行为
394
+ */
395
+ endBehavior: spec.EndBehavior;
396
+ } & ViewItemTypedProperty;
397
+
398
+ declare const ExportStatusMap: {
399
+ readonly DEFAULT: "default";
400
+ readonly EXPORTING: "exporting";
401
+ readonly SUCCESS: "success";
402
+ readonly ERROR: "error";
403
+ };
404
+ type ExportStatus = typeof ExportStatusMap[keyof typeof ExportStatusMap];
405
+ type SDKEvents = {
406
+ 'selectedItemChange': [id: string[]];
407
+ 'preSelectedItemChange': [id: string | undefined];
408
+ 'selectedViewChange': [id: number];
409
+ 'pageDataChange': [pageData: PageData];
410
+ 'zoomChange': [zoom: number];
411
+ 'progress': [{
412
+ duration: number;
413
+ time: number;
414
+ end: boolean;
415
+ paused: boolean;
416
+ }];
417
+ 'itemPropertyChange': [{
418
+ id: string;
419
+ property: string;
420
+ }];
421
+ 'exportProgress': [progress?: number];
422
+ 'exportComplete': [success: boolean];
423
+ };
424
+ declare class SDK {
425
+ private _eventEmitter;
426
+ private _pageData;
427
+ private _screenShotContainer;
428
+ private _screenShotPlayer;
429
+ private _SDKUtils;
430
+ private _ExportVideo;
431
+ private _gestureHandler;
432
+ private _playerContainer;
433
+ private _exportStatus;
434
+ private disposables;
435
+ player: Player;
436
+ constructor(container: HTMLElement);
437
+ get pageData(): PageData | undefined;
438
+ get exportStatus(): ExportStatus;
439
+ private get exportOptions();
440
+ dispose(): void;
441
+ on: <E extends "progress" | "selectedItemChange" | "preSelectedItemChange" | "selectedViewChange" | "pageDataChange" | "zoomChange" | "itemPropertyChange" | "exportProgress" | "exportComplete">(eventName: E, listener: _galacean_effects.EventEmitterListener<SDKEvents[E]>, options?: _galacean_effects.EventEmitterOptions) => () => void;
442
+ private getInitParam;
443
+ private initSDK;
444
+ run(param: SDKInputParam): Promise<void>;
445
+ getPageData(): PageData;
446
+ getActiveItems(): string[];
447
+ setPreSelectedItem(id: string): void;
448
+ getPreSelectedItem(): string;
449
+ setSelectedItems(itemIds: string[]): void;
450
+ /**
451
+ * @description 获取目标元素的所有属性
452
+ * @param param 元素ID、类型
453
+ * @returns 元素属性
454
+ */
455
+ getItemProperty<T extends keyof PageFormTypeAndPropertyReference>(param: GetItemPropertyParam<T>): GetItemPropertyResult<T> | undefined;
456
+ /**
457
+ * @description 获取目标元素的指定属性
458
+ * @param param 元素ID、类型、属性名
459
+ * @returns 元素属性值
460
+ */
461
+ getItemPropertyValue<T extends keyof PageFormTypeAndPropertyReference, N extends keyof PageFormTypeAndPropertyReference[T]>(param: GetItemPropertyValueParam<T, N>): GetItemPropertyValueResult<T, N> | undefined;
462
+ setItemPropertyValue(param: SetItemPropertyValueParam): Promise<void>;
463
+ generateScreenShot(id: number, size?: [number, number], tick?: number): Promise<string>;
464
+ /**
465
+ * @description 切换场景
466
+ * @param index 场景索引
467
+ */
468
+ switchScene(index: number): Promise<void>;
469
+ /**
470
+ * @description 获取页面的 safeAreaPreview、zoom、adsorption 值
471
+ * @returns 页面的 safeAreaPreview、zoom、adsorption 值
472
+ */
473
+ getConfig(): PageConfig;
474
+ /**
475
+ * 设置页面的 safeAreaPreview、zoom、adsorption 值
476
+ * @param pageProperty 设置
477
+ */
478
+ setConfig(pageConfig: PageConfig): void;
479
+ /**
480
+ * @description 设置播放进度
481
+ * @param progress 播放进度 0-100
482
+ */
483
+ setPlayProgress(progress: number): Promise<void>;
484
+ getViewItems(): ViewItem[];
485
+ setPlayState(playState: 'play' | 'pause'): Promise<void>;
486
+ /**
487
+ * @description 获取场景预览图
488
+ * @returns 视图预览图
489
+ */
490
+ getViewThumbnail(): {
491
+ id: number;
492
+ thumbnail: string;
493
+ }[];
494
+ private destroyCompositions;
495
+ private onExportProgress;
496
+ private onExportFinish;
497
+ private onExportError;
498
+ /**
499
+ * @description 导出视频
500
+ */
501
+ exportAllVideos(): void;
502
+ cancelExportAllVideos(): void;
503
+ loadPageData(data: PageData): Promise<void>;
504
+ runByPageData(data: PageData): Promise<void>;
505
+ }
506
+
507
+ export { type ActiveData, type BaseFormProperty, type ExportStatus, ExportStatusMap, type PageData, type PageFormTypedProperty, type PageProperty, SDK, type SDKEvents, type SDKInputParam, type SpecificPageFormProps, type SpriteFormProperty, type TextFormProperty, type ViewItem, type ViewParam, type ViewProperty };