@vvfx/artis 0.0.1-alpha.0

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 (224) hide show
  1. package/LICENSE +22 -0
  2. package/dist/artis/artis.d.ts +44 -0
  3. package/dist/artis/base-artis.d.ts +520 -0
  4. package/dist/artis/canvas-layer-order.d.ts +19 -0
  5. package/dist/artis/create-info-to-schema.d.ts +21 -0
  6. package/dist/artis/index.d.ts +15 -0
  7. package/dist/artis/operations/index.d.ts +3 -0
  8. package/dist/artis/operations/operations.d.ts +362 -0
  9. package/dist/artis/operations/scene-operations.d.ts +26 -0
  10. package/dist/artis/operations/types.d.ts +39 -0
  11. package/dist/artis/scene-artis.d.ts +386 -0
  12. package/dist/artis/screenshot-service.d.ts +83 -0
  13. package/dist/artis/types.d.ts +130 -0
  14. package/dist/artis/wiring/index.d.ts +17 -0
  15. package/dist/artis/wiring/register-commands.d.ts +44 -0
  16. package/dist/artis/wiring/setup-commands.d.ts +5 -0
  17. package/dist/artis/wiring/setup-event-bindings.d.ts +16 -0
  18. package/dist/artis/wiring/setup-keybindings.d.ts +38 -0
  19. package/dist/artis/wiring/setup-plugins.d.ts +5 -0
  20. package/dist/artis/wiring/wiring-context.d.ts +34 -0
  21. package/dist/artis-sdk/artis-sdk.d.ts +1117 -0
  22. package/dist/artis-sdk/index.d.ts +1 -0
  23. package/dist/core/asset/asset-manager.d.ts +288 -0
  24. package/dist/core/asset/index.d.ts +3 -0
  25. package/dist/core/command/command-service.d.ts +315 -0
  26. package/dist/core/command/commands/composite-command.d.ts +45 -0
  27. package/dist/core/command/commands/frame-layout-command.d.ts +81 -0
  28. package/dist/core/command/commands/frame-layout-mode-command.d.ts +55 -0
  29. package/dist/core/command/commands/frame-move-in-command.d.ts +54 -0
  30. package/dist/core/command/commands/frame-move-out-command.d.ts +54 -0
  31. package/dist/core/command/commands/group-children-detach-command.d.ts +28 -0
  32. package/dist/core/command/commands/index.d.ts +98 -0
  33. package/dist/core/command/commands/item-align-command.d.ts +52 -0
  34. package/dist/core/command/commands/item-create-command.d.ts +66 -0
  35. package/dist/core/command/commands/item-delete-command.d.ts +40 -0
  36. package/dist/core/command/commands/item-distribute-command.d.ts +53 -0
  37. package/dist/core/command/commands/item-group-command.d.ts +41 -0
  38. package/dist/core/command/commands/item-reorder-command.d.ts +41 -0
  39. package/dist/core/command/commands/item-replace-source-command.d.ts +48 -0
  40. package/dist/core/command/commands/item-set-font-family-command.d.ts +46 -0
  41. package/dist/core/command/commands/item-set-generator-resource-command.d.ts +40 -0
  42. package/dist/core/command/commands/item-transform-command.d.ts +51 -0
  43. package/dist/core/command/commands/item-ungroup-command.d.ts +34 -0
  44. package/dist/core/command/commands/item-update-property-by-create-info-command.d.ts +41 -0
  45. package/dist/core/command/commands/item-update-property-command.d.ts +82 -0
  46. package/dist/core/command/commands/mask-commit-command.d.ts +53 -0
  47. package/dist/core/command/commands/page-auto-layout-command.d.ts +53 -0
  48. package/dist/core/command/commands/picture-cut-commit-command.d.ts +43 -0
  49. package/dist/core/command/commands/picture-expand-commit-command.d.ts +35 -0
  50. package/dist/core/command/commands/scene-switch-command.d.ts +35 -0
  51. package/dist/core/command/commands/selection-set-command.d.ts +38 -0
  52. package/dist/core/command/commands/sprite-image-command.d.ts +36 -0
  53. package/dist/core/command/commands/sprite-text-edit-commit-command.d.ts +43 -0
  54. package/dist/core/command/commands/state-hand-command.d.ts +14 -0
  55. package/dist/core/command/commands/state-image-cut-command.d.ts +14 -0
  56. package/dist/core/command/commands/state-image-expand-command.d.ts +14 -0
  57. package/dist/core/command/commands/state-image-mask-command.d.ts +15 -0
  58. package/dist/core/command/commands/state-image-text-edit-command.d.ts +14 -0
  59. package/dist/core/command/commands/state-item-create-command.d.ts +34 -0
  60. package/dist/core/command/commands/state-move-command.d.ts +14 -0
  61. package/dist/core/command/commands/state-switch-command-base.d.ts +41 -0
  62. package/dist/core/command/commands/text-move-command.d.ts +47 -0
  63. package/dist/core/command/commands/text-rotate-command.d.ts +52 -0
  64. package/dist/core/command/commands/text-scale-command.d.ts +56 -0
  65. package/dist/core/command/commands/text-update-content-command.d.ts +51 -0
  66. package/dist/core/command/commands/transform-move-command.d.ts +56 -0
  67. package/dist/core/command/commands/transform-move-with-frame-change-command.d.ts +80 -0
  68. package/dist/core/command/commands/transform-move-with-layout-command.d.ts +56 -0
  69. package/dist/core/command/commands/transform-rotate-command.d.ts +51 -0
  70. package/dist/core/command/commands/transform-scale-command.d.ts +54 -0
  71. package/dist/core/command/commands/video-play-command.d.ts +28 -0
  72. package/dist/core/command/commands/video-source-command.d.ts +39 -0
  73. package/dist/core/command/commands/viewport-fit-to-box-command.d.ts +37 -0
  74. package/dist/core/command/commands/viewport-fit-to-items-command.d.ts +43 -0
  75. package/dist/core/command/commands/viewport-move-command.d.ts +34 -0
  76. package/dist/core/command/commands/viewport-zoom-command.d.ts +35 -0
  77. package/dist/core/command/index.d.ts +5 -0
  78. package/dist/core/command/registry.d.ts +246 -0
  79. package/dist/core/command/types.d.ts +124 -0
  80. package/dist/core/element-registry/element-facade.d.ts +35 -0
  81. package/dist/core/element-registry/element-identity-strategy.d.ts +75 -0
  82. package/dist/core/element-registry/element-registry.d.ts +72 -0
  83. package/dist/core/element-registry/index.d.ts +5 -0
  84. package/dist/core/element-registry/types.d.ts +15 -0
  85. package/dist/core/gizmo/gizmo-bootstrap.d.ts +70 -0
  86. package/dist/core/gizmo/gizmo-command-binder.d.ts +55 -0
  87. package/dist/core/gizmo/gizmo-config-override.d.ts +24 -0
  88. package/dist/core/gizmo/gizmo-registry.d.ts +39 -0
  89. package/dist/core/gizmo/index.d.ts +19 -0
  90. package/dist/core/gizmo/register-gizmo-command-bindings.d.ts +20 -0
  91. package/dist/core/gizmo/state-gizmo-controller.d.ts +20 -0
  92. package/dist/core/history/history-manager.d.ts +174 -0
  93. package/dist/core/history/index.d.ts +1 -0
  94. package/dist/core/index.d.ts +25 -0
  95. package/dist/core/item/base-item.d.ts +154 -0
  96. package/dist/core/item/card-item.d.ts +91 -0
  97. package/dist/core/item/default-item-schema.d.ts +20 -0
  98. package/dist/core/item/effects-item.d.ts +99 -0
  99. package/dist/core/item/frame-item.d.ts +153 -0
  100. package/dist/core/item/generator-item.d.ts +114 -0
  101. package/dist/core/item/group-item.d.ts +51 -0
  102. package/dist/core/item/index.d.ts +25 -0
  103. package/dist/core/item/sprite-item.d.ts +80 -0
  104. package/dist/core/item/text-item.d.ts +171 -0
  105. package/dist/core/item/types.d.ts +158 -0
  106. package/dist/core/item/video-item.d.ts +120 -0
  107. package/dist/core/keybinding/index.d.ts +11 -0
  108. package/dist/core/keybinding/key-binding-controller.d.ts +44 -0
  109. package/dist/core/keybinding/key-binding-registry.d.ts +92 -0
  110. package/dist/core/keybinding/key-binding-store.d.ts +29 -0
  111. package/dist/core/keybinding/key-matcher.d.ts +24 -0
  112. package/dist/core/keybinding/types.d.ts +84 -0
  113. package/dist/core/plugin/index.d.ts +3 -0
  114. package/dist/core/plugin/io-plugin.d.ts +167 -0
  115. package/dist/core/plugin/plugin-system.d.ts +77 -0
  116. package/dist/core/predict/align-predict.d.ts +20 -0
  117. package/dist/core/predict/base/box-ops.d.ts +40 -0
  118. package/dist/core/predict/base/index.d.ts +14 -0
  119. package/dist/core/predict/base/parent-coord.d.ts +29 -0
  120. package/dist/core/predict/base/schema-box.d.ts +21 -0
  121. package/dist/core/predict/distribute-predict.d.ts +19 -0
  122. package/dist/core/predict/frame-layout-predict.d.ts +24 -0
  123. package/dist/core/predict/index.d.ts +12 -0
  124. package/dist/core/preferences/index.d.ts +2 -0
  125. package/dist/core/preferences/user-preferences-manager.d.ts +130 -0
  126. package/dist/core/quality/error-monitor/error-monitor-facade.d.ts +73 -0
  127. package/dist/core/quality/error-monitor/error-monitor.d.ts +106 -0
  128. package/dist/core/quality/error-monitor/index.d.ts +4 -0
  129. package/dist/core/quality/error-monitor/types.d.ts +198 -0
  130. package/dist/core/quality/index.d.ts +3 -0
  131. package/dist/core/quality/perf-monitor/index.d.ts +5 -0
  132. package/dist/core/quality/perf-monitor/perf-monitor-facade.d.ts +45 -0
  133. package/dist/core/quality/perf-monitor/perf-monitor.d.ts +60 -0
  134. package/dist/core/quality/perf-monitor/types.d.ts +66 -0
  135. package/dist/core/quality/stability-monitor/index.d.ts +5 -0
  136. package/dist/core/quality/stability-monitor/stability-monitor-facade.d.ts +50 -0
  137. package/dist/core/quality/stability-monitor/stability-monitor.d.ts +61 -0
  138. package/dist/core/quality/stability-monitor/types.d.ts +69 -0
  139. package/dist/core/renderer/background-controller.d.ts +56 -0
  140. package/dist/core/renderer/index.d.ts +5 -0
  141. package/dist/core/renderer/player-adapter.d.ts +129 -0
  142. package/dist/core/renderer/renderer.d.ts +134 -0
  143. package/dist/core/service/frame-service.d.ts +116 -0
  144. package/dist/core/service/index.d.ts +9 -0
  145. package/dist/core/service/interaction-providers.d.ts +20 -0
  146. package/dist/core/service/interaction-service.d.ts +211 -0
  147. package/dist/core/service/item-asset-service.d.ts +120 -0
  148. package/dist/core/service/item-creator-service.d.ts +211 -0
  149. package/dist/core/service/item-service.d.ts +641 -0
  150. package/dist/core/service/item-sync-service.d.ts +66 -0
  151. package/dist/core/service/json-scene-sync-service.d.ts +140 -0
  152. package/dist/core/service/refresh-animation-base-service.d.ts +1 -0
  153. package/dist/core/service/scene-data-assembler.d.ts +166 -0
  154. package/dist/core/service/view-service.d.ts +202 -0
  155. package/dist/core/state/base-state.d.ts +28 -0
  156. package/dist/core/state/index.d.ts +6 -0
  157. package/dist/core/state/presets.d.ts +25 -0
  158. package/dist/core/state/state-manager.d.ts +50 -0
  159. package/dist/core/state/types.d.ts +52 -0
  160. package/dist/core/store/index.d.ts +3 -0
  161. package/dist/core/store/scene-store.d.ts +194 -0
  162. package/dist/core/store/store.d.ts +36 -0
  163. package/dist/core/types/artis-config.d.ts +186 -0
  164. package/dist/core/types/artis-events.d.ts +101 -0
  165. package/dist/core/types/frame.d.ts +3 -0
  166. package/dist/core/types/generator.d.ts +28 -0
  167. package/dist/core/types/index.d.ts +15 -0
  168. package/dist/core/types/item-create-info.d.ts +205 -0
  169. package/dist/core/types/item-property.d.ts +149 -0
  170. package/dist/core/types/item-reorder.d.ts +12 -0
  171. package/dist/core/types/item-schema.d.ts +263 -0
  172. package/dist/core/types/item-set-property.d.ts +48 -0
  173. package/dist/core/types/page.d.ts +40 -0
  174. package/dist/core/types/sdk.d.ts +28 -0
  175. package/dist/core/types/view.d.ts +39 -0
  176. package/dist/helper/exporter/config.d.ts +18 -0
  177. package/dist/helper/exporter/const.d.ts +71 -0
  178. package/dist/helper/exporter/export-media.d.ts +189 -0
  179. package/dist/helper/exporter/exporter.d.ts +58 -0
  180. package/dist/helper/exporter/index.d.ts +2 -0
  181. package/dist/helper/exporter/types.d.ts +194 -0
  182. package/dist/helper/exporter/utils.d.ts +71 -0
  183. package/dist/helper/exporter/wav-audio.d.ts +35 -0
  184. package/dist/helper/html-overlay/anchor-navigation-runtime.d.ts +1 -0
  185. package/dist/helper/html-overlay/auto-height-layout.d.ts +16 -0
  186. package/dist/helper/html-overlay/auto-height-runtime.d.ts +40 -0
  187. package/dist/helper/html-overlay/document-runtime.d.ts +18 -0
  188. package/dist/helper/html-overlay/document-transform.d.ts +46 -0
  189. package/dist/helper/html-overlay/dom-order.d.ts +5 -0
  190. package/dist/helper/html-overlay/host-message-runtime.d.ts +15 -0
  191. package/dist/helper/html-overlay/html-capture-runtime.d.ts +12 -0
  192. package/dist/helper/html-overlay/html-card-service.d.ts +287 -0
  193. package/dist/helper/html-overlay/html-viewport-style.d.ts +6 -0
  194. package/dist/helper/html-overlay/index.d.ts +1 -0
  195. package/dist/helper/html-overlay/inline-script-json.d.ts +1 -0
  196. package/dist/helper/html-overlay/mime-utils.d.ts +13 -0
  197. package/dist/helper/html-overlay/overlay-transform.d.ts +30 -0
  198. package/dist/helper/html-overlay/path-utils.d.ts +34 -0
  199. package/dist/helper/html-overlay/runtime-context.d.ts +2 -0
  200. package/dist/helper/html-overlay/shell-runtime.d.ts +13 -0
  201. package/dist/helper/index.d.ts +5 -0
  202. package/dist/helper/scene-builder.d.ts +111 -0
  203. package/dist/helper/screen-shot.d.ts +51 -0
  204. package/dist/helper/size-adapt.d.ts +88 -0
  205. package/dist/index.cjs +69350 -0
  206. package/dist/index.cjs.map +1 -0
  207. package/dist/index.d.ts +19 -0
  208. package/dist/index.mjs +68963 -0
  209. package/dist/index.mjs.map +1 -0
  210. package/dist/shared/index.d.ts +1 -0
  211. package/dist/shared/player.d.ts +9 -0
  212. package/dist/utils/background-manager.d.ts +76 -0
  213. package/dist/utils/common-utils.d.ts +39 -0
  214. package/dist/utils/container-size.d.ts +7 -0
  215. package/dist/utils/find-player-item.d.ts +9 -0
  216. package/dist/utils/index.d.ts +11 -0
  217. package/dist/utils/json-data-utils.d.ts +198 -0
  218. package/dist/utils/layout-utils.d.ts +144 -0
  219. package/dist/utils/pixel-box-utils.d.ts +26 -0
  220. package/dist/utils/player-data-utils.d.ts +9 -0
  221. package/dist/utils/player-utils.d.ts +42 -0
  222. package/dist/utils/replay-utils.d.ts +22 -0
  223. package/dist/utils/types.d.ts +130 -0
  224. package/package.json +66 -0
@@ -0,0 +1,69 @@
1
+ /**
2
+ * 稳定性信号
3
+ *
4
+ * - CONTEXT_LOST WebGL 上下文丢失(P0 瞬态):engine opt-in 自恢复,降权后随 reportContextRestored 恢复
5
+ * - ERROR_RATE 出错率超阈值(错误/分钟)
6
+ * - ERROR_CLUSTER 同因反复(同 errorKey 1 分钟窗口内 ≥N 次)
7
+ * - MEMORY_GROWTH 可选:内存增长(Chrome performance.memory 受限,尽力而为,初版不实现)
8
+ * - FPS_DROP 可选:持续掉帧(rAF 采样,初版不实现)
9
+ */
10
+ export declare enum StabilitySignal {
11
+ CONTEXT_LOST = "context-lost",
12
+ ERROR_RATE = "error-rate",
13
+ ERROR_CLUSTER = "error-cluster",
14
+ MEMORY_GROWTH = "memory-growth",
15
+ FPS_DROP = "fps-drop"
16
+ }
17
+ /**
18
+ * 稳定性信号标识:枚举常量 + 容纳外部自定义信号
19
+ *
20
+ * 用 `Enum | (string & {})` 形式:保留 IDE 补全 + 允许业务方扩展自有信号。
21
+ */
22
+ export type StabilitySignalToken = StabilitySignal | (string & {});
23
+ /** 健康度:0 完全崩坏 ~ 1 健康 */
24
+ export type HealthState = {
25
+ /** 0~1,1 为完全健康 */
26
+ score: number;
27
+ /** 当前触发的信号列表 */
28
+ signals: StabilitySignal[];
29
+ /** 触发原因摘要,供宿主展示 */
30
+ reasons: string[];
31
+ /** 墙钟时间戳(Date.now) */
32
+ timestamp: number;
33
+ /**
34
+ * 建议动作:context-lost→'recreate';其余缺省 'none'。
35
+ * 宿主据此无歧义决策恢复(取代靠 signals 字符串硬判)。
36
+ */
37
+ recommendedAction?: RecommendedActionToken;
38
+ };
39
+ /**
40
+ * 稳定性建议动作:随健康度外达,告诉宿主建议如何恢复。
41
+ *
42
+ * - recreate context-lost 标记的建议动作。当前 effects Player 已 opt-in 自恢复(doNotHandleContextLost:false),
43
+ * engine 在 webglcontextrestored 上就地重建 GPU 资源——context-lost 为瞬态抖动、随 reportContextRestored 恢复,
44
+ * 上层 enableAutoRecreate 自动走轻同步而非重建。'recreate' 仅供宿主在自恢复失败时手动调 artis.recreate() 兜底。
45
+ * - reload 资源/页面级刷新(SDK 不内建,提示宿主)
46
+ * - none 无需动作(restore 后 reportContextRestored 重算得出)
47
+ */
48
+ export type RecommendedAction = 'recreate' | 'reload' | 'none';
49
+ /** 建议动作标识:枚举值 + 容纳外部自定义(开放扩展点) */
50
+ export type RecommendedActionToken = RecommendedAction | (string & {});
51
+ /** 稳定性上报信息(即一次健康度变化快照) */
52
+ export type StabilityReport = HealthState;
53
+ /** 健康度变化回调 */
54
+ export type StabilityMonitorCallback = (state: HealthState) => void;
55
+ /**
56
+ * StabilityMonitor 依赖注入接口
57
+ *
58
+ * - now:时间源,生产用 () => Date.now()
59
+ * - onError:可选,订阅 error-monitor 节流前原始错误流;缺省时 error 类信号不工作
60
+ * 返回取消订阅函数
61
+ */
62
+ export type StabilityMonitorDeps = {
63
+ now: () => number;
64
+ onError?: (cb: (info: {
65
+ errorKey: string;
66
+ timestamp: number;
67
+ phase: string;
68
+ }) => void) => () => void;
69
+ };
@@ -0,0 +1,56 @@
1
+ import type { ArtisBackgroundConfig, Disposable } from '../types';
2
+ import type { ViewportState } from '../service';
3
+ /**
4
+ * BackgroundController - 背景控制器
5
+ *
6
+ * 职责:
7
+ * 1. 封装 BackgroundManager
8
+ * 2. 接收 ArtisBackgroundConfig(联合类型),自动映射为对应操作
9
+ * 3. 跟随 ViewportManager 的 transform 更新背景位置
10
+ */
11
+ export declare class BackgroundController implements Disposable {
12
+ private _manager;
13
+ private _currentConfig;
14
+ /**
15
+ * 创建 BackgroundController 实例,内部初始化 BackgroundManager
16
+ */
17
+ constructor();
18
+ /**
19
+ * 绑定容器
20
+ *
21
+ * @param container 背景挂载的 DOM 容器
22
+ */
23
+ attach(container: HTMLElement): void;
24
+ /**
25
+ * 解绑容器
26
+ */
27
+ detach(): void;
28
+ /**
29
+ * 获取当前背景配置
30
+ */
31
+ get currentConfig(): ArtisBackgroundConfig | undefined;
32
+ /**
33
+ * 应用背景配置(根据联合类型自动分发)
34
+ *
35
+ * @param config 背景配置(颜色/图片/棋盘/点阵)
36
+ */
37
+ applyConfig(config: ArtisBackgroundConfig): void;
38
+ /**
39
+ * 跟随视口变换更新背景位置
40
+ *
41
+ * @param state 视口状态(缩放、平移、内容缩放)
42
+ * @param shift 背景位移量
43
+ */
44
+ updateTransform(state: ViewportState, shift: {
45
+ x: number;
46
+ y: number;
47
+ }): void;
48
+ /**
49
+ * 重置背景位置
50
+ */
51
+ reset(): void;
52
+ /**
53
+ * 销毁
54
+ */
55
+ dispose(): void;
56
+ }
@@ -0,0 +1,5 @@
1
+ export { Renderer } from './renderer';
2
+ export type { RendererOptions } from './renderer';
3
+ export { PlayerAdapter } from './player-adapter';
4
+ export type { PlayerAdapterEventMap, PlayerAdapterOptions } from './player-adapter';
5
+ export { BackgroundController } from './background-controller';
@@ -0,0 +1,129 @@
1
+ import { Composition, EventEmitter, Player, spec } from '../../shared';
2
+ import type { Disposable } from '../types';
3
+ /**
4
+ * PlayerAdapter 事件类型
5
+ */
6
+ export type PlayerAdapterEventMap = {
7
+ 'sceneLoaded': [composition: Composition];
8
+ 'progress': [info: {
9
+ duration: number;
10
+ time: number;
11
+ end: boolean;
12
+ paused: boolean;
13
+ }];
14
+ 'contextLost': [];
15
+ 'contextRestored': [];
16
+ };
17
+ /**
18
+ * PlayerAdapter 初始化选项
19
+ */
20
+ export type PlayerAdapterOptions = {
21
+ width: number;
22
+ height: number;
23
+ pixelRatio?: number;
24
+ };
25
+ /**
26
+ * PlayerAdapter - Player 封装层
27
+ *
28
+ * 职责:
29
+ * 1. 创建 playerContainer DOM 子元素
30
+ * 2. 初始化 GE Player 实例
31
+ * 3. 管理 Player 生命周期(resize / dispose)
32
+ * 4. 提供 loadScene / switchScene 方法
33
+ * 5. 监听 Player update 事件,向外分发 progress
34
+ *
35
+ * context-lost:构造传 `doNotHandleContextLost:false`,GE engine 在 webglcontextrestored 上
36
+ * 就地重建全部 GPU 资源(含 artis 自建 Texture.fromImage 纹理),Player/composition 存活,
37
+ * 本层只向外 emit contextLost/contextRestored,由上层做轻同步(见 BaseArtis._onContextRestored)。
38
+ */
39
+ export declare class PlayerAdapter extends EventEmitter<PlayerAdapterEventMap> implements Disposable {
40
+ player: Player;
41
+ playerContainer: HTMLElement;
42
+ /** 容器尺寸缓存(_buildPlayerContainer 复用) */
43
+ private _containerWidth;
44
+ private _containerHeight;
45
+ /** 像素比缓存(Player 构造复用) */
46
+ private readonly _pixelRatio;
47
+ private _currentScene;
48
+ /** 当前业务场景合成;Player 中还可能存在 Gizmo 等宿主自建 overlay 合成。 */
49
+ private _sceneComposition;
50
+ private _playing;
51
+ private _disposed;
52
+ private _time;
53
+ /** Player 构造参数(构造期缓存,仅 new Player 用;context-lost 不再重建故无复用场景) */
54
+ private _playerOptions;
55
+ /**
56
+ * 创建 PlayerAdapter,构建 playerContainer 并初始化 GE Player 实例
57
+ *
58
+ * @param parentContainer 外层父容器,playerContainer 将挂载其下
59
+ * @param options 初始化选项(宽高、像素比)
60
+ */
61
+ constructor(parentContainer: HTMLElement, options: PlayerAdapterOptions);
62
+ /**
63
+ * 构造 playerContainer DOM 节点(样式固定)。
64
+ */
65
+ private _buildPlayerContainer;
66
+ /**
67
+ * 仅销毁底层 Player 实例(不动 playerContainer DOM)。供 dispose 复用。
68
+ */
69
+ private _disposePlayerOnly;
70
+ /** 当前场景 */
71
+ get currentScene(): spec.JSONScene | undefined;
72
+ /** 是否正在播放 */
73
+ get playing(): boolean;
74
+ /**
75
+ * 设置播放状态标记
76
+ *
77
+ * @param value 是否播放
78
+ */
79
+ set playing(value: boolean);
80
+ /** 当前播放时间 */
81
+ get time(): number;
82
+ /**
83
+ * 设置当前播放时间
84
+ *
85
+ * @param value 时间值
86
+ */
87
+ set time(value: number);
88
+ /**
89
+ * 加载场景并播放
90
+ *
91
+ * 加载前仅释放旧业务 composition runtime(VFXItem/component/object 树),避免切场景累积;
92
+ * Player 中由宿主创建的 Gizmo 等 overlay composition 保持存活。
93
+ * @param scene 待加载的场景 JSON
94
+ */
95
+ loadScene(scene: spec.JSONScene): Promise<void>;
96
+ /**
97
+ * 切换场景(暂停旧场景 → 卸载 → 加载新场景)
98
+ * @param scene 待切换的目标场景 JSON
99
+ */
100
+ switchScene(scene: spec.JSONScene): Promise<void>;
101
+ /**
102
+ * 暂停播放
103
+ */
104
+ pause(): void;
105
+ /**
106
+ * 恢复播放
107
+ */
108
+ resume(): void;
109
+ /**
110
+ * 设置播放进度
111
+ * @param time 目标时间
112
+ */
113
+ seek(time: number): void;
114
+ /**
115
+ * 适配容器尺寸变化
116
+ * @param width 目标宽度
117
+ * @param height 目标高度
118
+ */
119
+ resize(width: number, height: number): void;
120
+ /**
121
+ * 销毁
122
+ */
123
+ dispose(): void;
124
+ /**
125
+ * 绑定 Player 的 update / webglcontextlost / webglcontextrestored 事件
126
+ * 向外分发进度与上下文丢失/恢复(doNotHandleContextLost:false 下 engine 自重建 GPU 资源)。
127
+ */
128
+ private setupPlayerEvents;
129
+ }
@@ -0,0 +1,134 @@
1
+ import { Player, spec } from '../../shared';
2
+ import { Vector2 } from '@vvfx/gizmo';
3
+ import { PlayerAdapter } from './player-adapter';
4
+ import { BackgroundController } from './background-controller';
5
+ import { type ArtisBackgroundConfig, type Disposable, type PagePreferences } from '../types';
6
+ import { type ViewportState } from '../service';
7
+ /**
8
+ * Renderer 初始化选项
9
+ */
10
+ export type RendererOptions = {
11
+ /** 背景配置 */
12
+ background?: ArtisBackgroundConfig;
13
+ /** Player 像素比 */
14
+ pixelRatio?: number;
15
+ /** 页面配置 */
16
+ pagePreferences?: PagePreferences;
17
+ /**
18
+ * 编辑后 goto 的 playing 策略:true=gotoAndPlay(Artis 默认,编辑后继续播放),
19
+ * false=gotoAndStop(SceneArtis 默认,保 stop 态可编辑)。作为「编辑后刷新渲染」的
20
+ * 统一播放策略真源;服务层经 {@link Renderer#gotoEdit} 调用,不再各自持有副本。
21
+ */
22
+ editGotoPlaying?: boolean;
23
+ };
24
+ /**
25
+ * Renderer - 渲染管线编排
26
+ *
27
+ * 职责:
28
+ * 1. 协调 PlayerAdapter + BackgroundController 的调用顺序
29
+ * 2. 提供 run() 方法作为入口(加载场景 + 初始渲染)
30
+ * 3. 暴露 applyViewportToPlayer 供 ViewService 驱动视口变换
31
+ */
32
+ export declare class Renderer implements Disposable {
33
+ readonly playerAdapter: PlayerAdapter;
34
+ readonly background: BackgroundController;
35
+ private _container;
36
+ private _disposed;
37
+ /** 编辑后 goto 的 playing 策略(gotoEdit 用)。Artis 默认 true,SceneArtis 默认 false。 */
38
+ private readonly _editGotoPlaying;
39
+ /**
40
+ * 创建 Renderer 实例,初始化 Player 适配器与背景控制器并应用初始背景
41
+ *
42
+ * @param container 渲染挂载的 DOM 容器
43
+ * @param options 渲染初始化选项(背景、像素比、页面配置)
44
+ */
45
+ constructor(container: HTMLElement, options?: RendererOptions);
46
+ /**
47
+ * 加载场景数据并启动渲染
48
+ *
49
+ * @param input 场景数据或场景 JSON 的 URL,缺省时使用内置基础场景
50
+ * @param containerSize 容器尺寸,缺省时取当前容器实际尺寸
51
+ */
52
+ run(input?: spec.JSONScene | string, containerSize?: spec.vec2): Promise<void>;
53
+ /** 底层 Player 实例 */
54
+ get player(): Player;
55
+ /** 当前是否处于播放状态 */
56
+ get playing(): boolean;
57
+ /**
58
+ * 设置播放状态并跳转到当前时间
59
+ *
60
+ * @param value 是否播放
61
+ */
62
+ set playing(value: boolean);
63
+ /** 当前播放时间 */
64
+ get time(): number;
65
+ /**
66
+ * 设置当前播放时间
67
+ *
68
+ * @param value 时间值
69
+ */
70
+ set time(value: number);
71
+ /**
72
+ * 销毁
73
+ */
74
+ dispose(): void;
75
+ /**
76
+ * 将视口状态应用到 Player 相机(由 ViewService 的 change 事件驱动)
77
+ *
78
+ * @param state 视口状态(缩放、平移、内容缩放)
79
+ * @param containerSize 容器像素尺寸,用于 NDC 换算
80
+ */
81
+ applyViewportToPlayer(state: ViewportState, containerSize: Vector2): void;
82
+ /**
83
+ * 解析场景输入,字符串按 URL 拉取 JSON,对象直接返回
84
+ *
85
+ * @param sceneInput 场景数据或场景 JSON 的 URL
86
+ * @returns 解析后的场景数据
87
+ */
88
+ private resolveScene;
89
+ /**
90
+ * 跳转到指定时间
91
+ *
92
+ * @param time 目标时间
93
+ * @param playing 是否继续播放(true=gotoAndPlay, false=gotoAndStop)
94
+ * @param ignoreMediaPlayState 是否忽略视频/特效元素的播放状态,默认 false。
95
+ * 当为 true 时,goto 后保持视频和特效元素原有的播放/暂停状态不变。
96
+ */
97
+ goto(time: number, playing?: boolean, ignoreMediaPlayState?: boolean): void;
98
+ /**
99
+ * 编辑后刷新渲染:按 {@link RendererOptions.editGotoPlaying} 策略 goto 当前/指定时间。
100
+ *
101
+ * 作为「编辑后渲染刷新」的统一入口,取代此前 ItemService/Frame/Asset/Sync 各自持有
102
+ * `_editGotoPlaying` 副本再 `goto(time, _editGotoPlaying)` 的分散写法(播放策略单一真源)。
103
+ *
104
+ * @param time 目标时间,缺省取当前 `renderer.time`
105
+ */
106
+ gotoEdit(time?: number): void;
107
+ /**
108
+ * 捕获所有视频和特效元素的播放状态
109
+ *
110
+ * @param player Effects Player 实例
111
+ * @returns 元素实例 ID → 是否正在播放 的映射
112
+ */
113
+ private captureMediaPlayStates;
114
+ /**
115
+ * 恢复视频和特效元素的播放状态
116
+ *
117
+ * @param player Effects Player 实例
118
+ * @param states 元素实例 ID → 是否正在播放 的映射
119
+ */
120
+ private restoreMediaPlayStates;
121
+ /**
122
+ * 递归遍历所有 VFXItem
123
+ *
124
+ * @param items 待遍历的元素列表
125
+ * @param callback 每个元素的回调
126
+ */
127
+ private traverseItems;
128
+ /**
129
+ * 适配容器尺寸变化并通知 Player 重排
130
+ *
131
+ * @param size 新的容器尺寸,缺省时取当前容器实际尺寸
132
+ */
133
+ resize(size?: Vector2): void;
134
+ }
@@ -0,0 +1,116 @@
1
+ import { FrameManager } from '@vvfx/gizmo';
2
+ import { type LayoutInfo } from '../types';
3
+ import { type Store } from '../store';
4
+ import { type Renderer } from '../renderer';
5
+ import { type ItemService } from './item-service';
6
+ import { type ViewService } from './view-service';
7
+ /**
8
+ * FrameService - 画板(Frame)关系与布局服务
9
+ *
10
+ * 职责:管理画板子元素的移入/移出、自动布局(Shelf 算法)、布局模式切换、尺寸刷新等。
11
+ * 采用组合模式:持有 ItemService 引用,复用其 getArtisItem / findPlayerItemById /
12
+ * collectItemsWithChildren 等公共方法与基础设施(Store / Renderer 由构造注入)。
13
+ *
14
+ * 画板「创建」相关逻辑(createFrameItemInternal / loadFrameAsset)仍留在 ItemService,
15
+ * 因其与 createItem 异步资源加载链路强耦合。
16
+ */
17
+ export declare class FrameService {
18
+ private _itemService;
19
+ private _store;
20
+ private _renderer;
21
+ private _viewService;
22
+ private _frameManager;
23
+ /**
24
+ * 注入 ItemService 与基础设施依赖
25
+ * @param itemService 元素门面服务
26
+ * @param store 数据存储
27
+ * @param renderer 渲染管线
28
+ * @param viewService 视口服务
29
+ * @param frameManager Frame 运行时模块
30
+ */
31
+ constructor(itemService: ItemService, store: Store, renderer: Renderer, viewService: ViewService, frameManager: FrameManager);
32
+ /**
33
+ * 修改画板布局模式,刷新背景色;切到 auto 时立即执行一次自动布局
34
+ * @param id 画板 ID
35
+ * @param layoutMode 布局模式 'auto' | 'free'
36
+ */
37
+ updateFrameLayoutMode(id: string, layoutMode: 'auto' | 'free'): void;
38
+ /**
39
+ * 计算「单元素行列变更」后的完整 layoutInfos(纯计算,不修改任何数据)
40
+ *
41
+ * 拖拽单个元素改变行列时,会联动调整同行/同列其它元素的列号。
42
+ * 此方法基于当前 Frame.layoutInfos 克隆出一份新的完整 layoutInfos 并返回,
43
+ * 供 FrameLayoutCommand 作为整份快照入参使用。
44
+ *
45
+ * @param frameId 画板 ID
46
+ * @param draggedItemId 被拖拽元素 ID
47
+ * @param fromRow 起始行
48
+ * @param fromColumn 起始列
49
+ * @param toRow 目标行
50
+ * @param toColumn 目标列
51
+ * @returns 完整的新 layoutInfos;Frame 或被拖拽元素不存在时返回 undefined
52
+ */
53
+ computeLayoutInfosAfterReorder(frameId: string, draggedItemId: string, fromRow: number, fromColumn: number, toRow: number, toColumn: number): Record<string, LayoutInfo> | undefined;
54
+ /**
55
+ * 调整 Frame 内元素行列顺序:写回新 layoutInfos 并基于其重新自动排布
56
+ * @param frameId 画板 ID
57
+ * @param draggedItemId 被拖拽元素 ID
58
+ * @param fromRow 起始行
59
+ * @param fromColumn 起始列
60
+ * @param toRow 目标行
61
+ * @param toColumn 目标列
62
+ */
63
+ adjustFrameLayoutOrder(frameId: string, draggedItemId: string, fromRow: number, fromColumn: number, toRow: number, toColumn: number): void;
64
+ /**
65
+ * 修改画板子元素
66
+ * @param id 画板 ID
67
+ * @param children 子元素 ID 列表
68
+ */
69
+ updateFrameChildren(id: string, children: string[]): void;
70
+ /**
71
+ * 将元素移动到 Frame 中(数据层 + Player 层 + transform 补偿一体化)。
72
+ *
73
+ * 统一处理批量移入语义(需求 3.a):
74
+ * - 仅记**顶层**成员到 `Frame.children`;组整体移入时其内部子元素**不**被改(修问题 1)。
75
+ * - 「父在批次内」的元素跳过(3.a.ⅱ:由其父组携带移动,当前元素不变)。
76
+ * - 「父是不在批次内的 Group」的元素:先从该 Group.children 移除(取消认父),再认父为画板(3.a.ⅰ)。
77
+ * - 所有 Player 层 reparent 均用 `getItemTransformUnderParent` 做世界 transform 烘焙,保持画布位置不变。
78
+ *
79
+ * @param itemIds 要移动的元素ID列表(elementId)
80
+ * @param frameId 目标 Frame ID(elementId)
81
+ */
82
+ moveItemsToFrame(itemIds: string[], frameId: string): void;
83
+ /**
84
+ * 将元素从 Frame 移出到主场景根节点
85
+ *
86
+ * 父子关系保留规则:
87
+ * - Group 整组移出:只改 Group.parentId = undefined,内部子元素 parentId 保持不变
88
+ * - 单个元素脱离 Group 后移出:先从 Group.children 中移除,再移到根节点
89
+ * - Player 层只对顶层元素 setParent(子元素在场景图中自动跟随)
90
+ *
91
+ * @param itemIds 要移出的元素 ID 列表
92
+ */
93
+ moveItemsOutOfFrame(itemIds: string[]): void;
94
+ /**
95
+ * 对 Frame 内子元素应用 FrameManager 计算出的自动布局结果。
96
+ * @param frameId 画板 ID
97
+ */
98
+ applyFrameAutoLayout(frameId: string): void;
99
+ /**
100
+ * 修改画板元素大小(仅 Player + ArtisItem,不涉及 JSON 层)
101
+ *
102
+ * 同步更新:
103
+ * 1. ArtisItem.property.width/height
104
+ * 2. Player 层 Frame 控制器(空节点)的 transform.size
105
+ * 3. 底层预合成(subCompositionItem)的 scale —— 按新世界尺寸重新计算 cameraScale
106
+ *
107
+ * @param id Frame 元素 ID
108
+ * @param size 目标大小 [width, height](像素)
109
+ */
110
+ updateFrameItemSize(id: string, size: [number, number]): void;
111
+ /**
112
+ * 刷新 Frame 子元素列表:从 Player 层父子关系反向同步到 Frame.property.children
113
+ * @param frameId 画板 ID
114
+ */
115
+ refreshFrameChildren(frameId: string): void;
116
+ }
@@ -0,0 +1,9 @@
1
+ export { ItemService } from './item-service';
2
+ export { InteractionService } from './interaction-service';
3
+ export { createViewportProvider, createCameraProvider, createItemTransformProvider, } from './interaction-providers';
4
+ export type { ViewportProvider, CameraProvider, ItemTransformProvider, InteractionConfig, } from './interaction-service';
5
+ export { ViewService } from './view-service';
6
+ export type { ViewportState, ViewServiceEventMap, ViewServiceOptions } from './view-service';
7
+ export { SceneDataAssembler } from './scene-data-assembler';
8
+ export type { SceneDataAssemblerDeps, ArtisItemTypeTable } from './scene-data-assembler';
9
+ export { JsonSceneSyncService, serializeArtisItemToJSON } from './json-scene-sync-service';
@@ -0,0 +1,20 @@
1
+ import type { ViewportProvider, CameraProvider, ItemTransformProvider } from './interaction-service';
2
+ import type { ViewService } from './view-service';
3
+ import type { Renderer } from '../renderer';
4
+ /**
5
+ * 视口数据提供者:返回容器尺寸 + 当前 zoom / translation。
6
+ *
7
+ * @param container 画布 DOM 容器(offsetWidth/Height 取真实布局尺寸)
8
+ * @param viewService 视口服务(提供 effectiveZoom 与 translation)
9
+ */
10
+ export declare function createViewportProvider(container: HTMLElement, viewService: ViewService): ViewportProvider;
11
+ /**
12
+ * 相机数据提供者:从激活组合的 camera 取 VP / 逆 VP / View 矩阵。
13
+ * 无激活组合或相机时返回 undefined。
14
+ */
15
+ export declare function createCameraProvider(renderer: Renderer): CameraProvider;
16
+ /**
17
+ * 元素变换提供者:按 instanceId 在组合树中查找节点,返回其世界矩阵。
18
+ * 节点缺失或无 transform 时返回 undefined。
19
+ */
20
+ export declare function createItemTransformProvider(renderer: Renderer): ItemTransformProvider;