@volcengine/amk-editor 0.0.5-beta.1 → 0.0.5

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.
@@ -88,6 +88,10 @@ export interface VeVeditorOptions<TMaterialOptions = VeVeditorMaterialOptions, T
88
88
  /** 埋点账号 ID;上报时写入事件 params.AccountID(对齐 master)。 */
89
89
  accountId?: string;
90
90
  theme?: VeVeditorTheme;
91
+ /** 项目加载页配置;默认展示 SDK 内置 loading,设为 false 后由宿主自行渲染。 */
92
+ loading?: {
93
+ show?: boolean;
94
+ };
91
95
  material?: TMaterialOptions;
92
96
  i18n?: TI18nOptions;
93
97
  decode?: VeVeditorDecodeOptions;
@@ -15,5 +15,20 @@ export declare function resolveMaterialId(material: Pick<MaterialItem, 'material
15
15
  /** 业务侧 / Editing API 主键:source_material_id */
16
16
  export declare function resolveSourceMaterialId(material: MaterialItem | MaterialPlayInfoPatch | Record<string, unknown>): string;
17
17
  export declare function mergePlayInfoOverrides(materials: MaterialItem[], overrides: MaterialPlayInfoPatch | MaterialPlayInfoPatch[]): MaterialItem[];
18
+ /**
19
+ * 将异步播放信息刷新结果变基到最新素材列表。
20
+ * 刷新期间新写入的 sprite/poster 等字段会被保留;只有相对刷新前快照
21
+ * 确实发生变化的字段才会覆盖最新值,保证后完成的刷新不会回滚并发更新。
22
+ */
23
+ export declare function mergeRefreshedPlayInfoIntoLatest(latestMaterials: MaterialItem[], baseMaterials: MaterialItem[], refreshedTargets: MaterialPlayInfoPatch | MaterialPlayInfoPatch[]): MaterialItem[];
18
24
  /** 从当前素材库按 material_id 选出待刷新列表;未传则全量有 material_id 的素材。 */
19
25
  export declare function pickMaterialsForRefresh(materials: MaterialItem[], materialIdOrIds?: string | string[]): MaterialItem[];
26
+ /**
27
+ * 初始化刷新分组:轨道实际引用的素材进入首屏关键路径,其余素材留到
28
+ * 编辑器挂载后刷新。两个分组都保持素材库原有顺序,且忽略无 material_id
29
+ * 的条目(它们本身无法参与播放信息刷新)。
30
+ */
31
+ export declare function partitionMaterialsByTrack(materials: MaterialItem[], track: unknown): {
32
+ trackMaterials: MaterialItem[];
33
+ remainingMaterials: MaterialItem[];
34
+ };
@@ -0,0 +1,29 @@
1
+ export declare const REMOTE_MEDIA_SPEED_MIN = 0.1;
2
+ export declare const REMOTE_MEDIA_SPEED_MAX = 4;
3
+ export declare const REMOTE_MEDIA_SPEED_DEFAULT = 1;
4
+ export declare const REMOTE_MEDIA_VOLUME_MIN = 0;
5
+ export declare const REMOTE_MEDIA_VOLUME_MAX = 4;
6
+ export declare const REMOTE_TRANSFORM_ALPHA_MIN = 0;
7
+ export declare const REMOTE_TRANSFORM_ALPHA_MAX = 1;
8
+ export declare const REMOTE_COLOR_ADJUSTMENT_MIN = 0;
9
+ export declare const REMOTE_COLOR_ADJUSTMENT_MAX = 1;
10
+ export declare const REMOTE_MEDIA_FADE_MIN_MS = 0;
11
+ export declare const REMOTE_MEDIA_FADE_MAX_MS = 2000;
12
+ export type RemoteEditParamSchemaIssue = {
13
+ path: string;
14
+ rule: 'media_speed' | 'media_volume' | 'transform_alpha' | 'color_adjustment' | 'media_fade';
15
+ reason: 'invalid_number' | 'coerced_number' | 'below_minimum' | 'above_maximum';
16
+ received: unknown;
17
+ normalized: number;
18
+ };
19
+ export type RemoteEditParamSchemaResult = {
20
+ value: Record<string, unknown>;
21
+ issues: RemoteEditParamSchemaIssue[];
22
+ };
23
+ /**
24
+ * 远端 editor document 进入 SDK 前的统一 schema 边界。
25
+ *
26
+ * 规则采用兼容式清洗:保留未知字段,只修正已声明且会影响 SDK 稳定性的字段。
27
+ * 新规则应加入 REMOTE_EDIT_PARAM_SCHEMA_RULES,禁止散落到本地编辑/保存链路。
28
+ */
29
+ export declare function parseRemoteEditParam(input: unknown): RemoteEditParamSchemaResult;
@@ -25,7 +25,12 @@ interface UploadFilesToTosOptions {
25
25
  projectId: string;
26
26
  storage: AmkEditorStorageConfig;
27
27
  createClient?: (credentials: AmkEditorUploadSTSCredentials, region: string) => TosClientLike;
28
+ /** 单个文件完成 TOS 上传后回调;批量 Promise 会等待该文件的回调完成。 */
29
+ onFileUploaded?: (material: MaterialItem, index: number) => void | Promise<void>;
28
30
  }
31
+ type UploadFileToTosOptions = Omit<UploadFilesToTosOptions, 'files' | 'onFileUploaded'> & {
32
+ file: File;
33
+ };
29
34
  interface RefreshTosMaterialUrlsOptions {
30
35
  materials: MaterialItem[];
31
36
  storage: AmkEditorStorageConfig;
@@ -36,8 +41,15 @@ export declare function parseTosResourceUrl(value: unknown): {
36
41
  bucket: string;
37
42
  key: string;
38
43
  } | null;
44
+ /** 与素材 TOS 上传保持一致,保留配置的产物存储目录。 */
45
+ export declare function resolveTosOutputDestination(destination: string | undefined): string | undefined;
39
46
  /** 使用宿主下发的临时 STS 将本地文件直传客户 TOS,并转换为编辑器素材。 */
40
47
  export declare function uploadFilesToTos(options: UploadFilesToTosOptions): Promise<MaterialItem[]>;
48
+ /**
49
+ * 内置 TOS 的单文件上传实现。本地多选时仍由上层 SDK 调度,
50
+ * 使 TOS 和业务自定义 onUploadFile 共用同一条逐项回写链路。
51
+ */
52
+ export declare function uploadFileToTos(options: UploadFileToTosOptions): Promise<MaterialItem>;
41
53
  /** 为已持久化的私有 TOS 素材重新生成播放签名,供初始化和按需刷新使用。 */
42
54
  export declare function refreshTosMaterialUrls(options: RefreshTosMaterialUrlsOptions): Promise<Array<Partial<MaterialItem> & {
43
55
  material_id: string;
package/dist/types.d.ts CHANGED
@@ -45,11 +45,27 @@ export interface PersistExtractUrlsResult {
45
45
  export interface MaterialConfig {
46
46
  emptyIcon?: string;
47
47
  uploadAccept?: string;
48
+ /** Fires when any material import flow enters or leaves its uploading phase. */
49
+ onUploadStatusChange?: (uploading: boolean) => void;
50
+ /**
51
+ * 上传单个本地文件并返回一条待入库素材。
52
+ * 多文件选择时由 SDK 并发调用;每个文件完成后会立即入库并替换对应占位卡。
53
+ * 单项失败不会回滚已成功的其他文件。
54
+ * 视频缺 duration / width / height、音频缺 duration、图片缺 width / height 时,
55
+ * SDK 会在入库前使用返回素材中的 HTTP(S) 地址自动探测并补齐。
56
+ */
57
+ onUploadFile?: (file: File) => Promise<MaterialItem> | MaterialItem;
58
+ /**
59
+ * @deprecated 请使用 onUploadFile。旧回调仍可用,但只能在整批返回后统一入库。
60
+ * 返回素材缺少必需元信息时,SDK 同样会在入库前自动探测并补齐。
61
+ */
48
62
  onUploadMaterial?: (files: File[]) => Promise<MaterialItem[]> | MaterialItem[];
63
+ /** 返回素材缺少必需元信息时,SDK 会在入库前按媒体类型自动探测并补齐。 */
49
64
  onUploadUrlMaterial?: (urls: string[]) => Promise<MaterialItem[]> | MaterialItem[];
50
65
  /**
51
66
  * 从业务资产库选择素材。业务方自行实现弹窗、列表查询与勾选,只返回选中数组。
52
67
  * `tos://bucket/key` 条目会由 SDK 用 storage.getUploadSTS 自动签名和补齐元信息。
68
+ * 非 TOS 条目缺少必需元信息时,也会使用其 HTTP(S) 地址自动探测并补齐。
53
69
  * 返回 `undefined` / `null` / `[]` 视为取消或未选择,不提示失败。
54
70
  */
55
71
  onUploadFromSystem?: () => Promise<SystemMaterialItem[] | undefined | null> | SystemMaterialItem[] | undefined | null;
@@ -106,6 +122,8 @@ export interface AmkEditorExportConfig {
106
122
  * 默认 false(不展示);设为 true 后用户可在弹窗内开关增强。
107
123
  */
108
124
  qualityEnhancement?: boolean;
125
+ /** 每次导出任务成功创建后触发。 */
126
+ onTaskCreated?: (event: AmkExportTaskCreatedEvent) => void | Promise<void>;
109
127
  }
110
128
  /** 浏览器直传 TOS 使用的临时凭证;字段可直接用于初始化 TOS Browser SDK。 */
111
129
  export interface AmkEditorUploadSTSCredentials {
@@ -124,6 +142,7 @@ export interface AmkEditorUploadSTSCredentials {
124
142
  export interface AmkEditorStorageConfig {
125
143
  /**
126
144
  * 处理产物存储目标。支持 `vod://<空间名>` 或 `tos://<桶名>/<可选子目录>`。
145
+ * TOS 本地上传及自动封面/雪碧图产物使用配置的目录,不自动追加项目 ID。
127
146
  * 配置后任务结果中的 url 为对应资源地址,而不是临时下载链;当返回
128
147
  * `tos://bucket/key` 且同时配置 getUploadSTS 时,SDK 会自动签成 HTTP 播放地址。
129
148
  */
@@ -131,7 +150,7 @@ export interface AmkEditorStorageConfig {
131
150
  /**
132
151
  * 配置后,本地上传会优先使用 TOS Browser SDK 直传
133
152
  * `media_output_destination` 指定的 TOS Bucket;未配置时沿用
134
- * `material.onUploadMaterial`。业务服务端应返回最小权限、短有效期凭证,
153
+ * `material.onUploadFile` / `material.onUploadMaterial`。业务服务端应返回最小权限、短有效期凭证,
135
154
  * 浏览器端不得保存客户长期 AK/SK。
136
155
  */
137
156
  getUploadSTS?: () => AmkEditorUploadSTSCredentials | Promise<AmkEditorUploadSTSCredentials>;
@@ -165,6 +184,16 @@ export interface VeVeditorInstance {
165
184
  on?: (eventName: string, handler: (...args: any[]) => void) => void;
166
185
  off?: (eventName: string, handler: (...args: any[]) => void) => void;
167
186
  getTrack?: () => any[];
187
+ /** 获取当前合成画布的 data URL;未初始化时返回 null,native 渲染模式下抛错。 */
188
+ getFrame?: (options?: {
189
+ type?: string;
190
+ quality?: number;
191
+ }) => string | null;
192
+ setCanvas?: (canvas: {
193
+ Width: number;
194
+ Height: number;
195
+ BackgroundColor?: string;
196
+ }) => Promise<void>;
168
197
  setTrack?: (track: any[], options?: {
169
198
  recordHistory?: boolean;
170
199
  }) => Promise<void>;
@@ -225,7 +254,7 @@ export interface AmkEditorOptions extends AmkInheritedVeVeditorOptions {
225
254
  getHeaders?: AmkEditorGetHeaders;
226
255
  header?: AmkEditorHeaderConfig;
227
256
  export?: AmkEditorExportConfig;
228
- /** 每次导出任务成功创建后触发。 */
257
+ /** @deprecated 请改用 export.onTaskCreated。 */
229
258
  onExportTaskCreated?: (event: AmkExportTaskCreatedEvent) => void | Promise<void>;
230
259
  getLicenseUrl?: string | (() => string | Promise<string>);
231
260
  decode?: AmkEditorDecodeOptions;
@@ -1,4 +1,20 @@
1
1
  import type { MaterialItem } from '../types';
2
+ export declare const VIDEO_POSTER_EXTRACT_PARAMS: {
3
+ readonly snapshot_type: "SpecifiedFrames";
4
+ readonly specified_frames: readonly [0];
5
+ readonly scale_long: 1280;
6
+ readonly scale_short: 720;
7
+ };
8
+ export declare function resolveSpriteTimeInterval(duration: unknown): number;
9
+ export declare function buildSpriteExtractParams(duration: unknown): {
10
+ snapshot_type: string;
11
+ time_interval: number;
12
+ snapshot_limit: number;
13
+ scale_long: number;
14
+ enable_sprite: boolean;
15
+ sprite_rows: number;
16
+ sprite_cols: number;
17
+ };
2
18
  export type SpriteState = {
3
19
  ready: boolean;
4
20
  pendingTaskId?: string;