@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,50 @@
1
+ import { EventEmitter } from '@galacean/effects';
2
+ import { BaseState } from './base-state';
3
+ import type { StateId, StateManagerEventMap, StateNavigator, StateTransitionRuntime } from './types';
4
+ import type { GizmoRegistrationId, GizmoRegistry, RegisteredGizmoFactory } from '../gizmo/gizmo-registry';
5
+ export type StateManagerOptions = {
6
+ readonly runtime?: StateTransitionRuntime;
7
+ readonly gizmos?: GizmoRegistry;
8
+ readonly prepareState?: (state: BaseState) => (() => void) | undefined;
9
+ };
10
+ export type StateBundleRegistration = {
11
+ readonly gizmos?: readonly (readonly [GizmoRegistrationId, RegisteredGizmoFactory])[];
12
+ readonly states: readonly BaseState[];
13
+ };
14
+ export type StateBundleHandle = {
15
+ dispose(): void;
16
+ };
17
+ /** Public State registry and navigator. Raw storage mutations stay private. */
18
+ export declare class StateManager extends EventEmitter<StateManagerEventMap> implements StateNavigator {
19
+ private readonly _states;
20
+ private readonly _stateStack;
21
+ private readonly _stateCleanups;
22
+ private readonly _runtime;
23
+ private readonly _gizmos;
24
+ private readonly _prepareState;
25
+ private _activeState;
26
+ private _transitioning;
27
+ constructor(options?: StateManagerOptions);
28
+ get activeState(): BaseState;
29
+ get hasSuspendedState(): boolean;
30
+ get(stateId: StateId): BaseState | undefined;
31
+ getAll(): readonly BaseState[];
32
+ register(state: BaseState): void;
33
+ registerBundle(registration: StateBundleRegistration): StateBundleHandle;
34
+ replace(state: BaseState, source?: any): void;
35
+ unregister(stateId: StateId): boolean;
36
+ activate(stateId: StateId, source?: any): void;
37
+ push(stateId: StateId, source?: any): void;
38
+ pop(source?: any): void;
39
+ reapply(): void;
40
+ private _runTransition;
41
+ private _beginTransition;
42
+ private _invoke;
43
+ private _emitStateChange;
44
+ private _reportTransitionError;
45
+ private _emitRegistryEvent;
46
+ private _prepareAndStore;
47
+ private _replaceStoredState;
48
+ private _removeStoredState;
49
+ dispose(): void;
50
+ }
@@ -0,0 +1,52 @@
1
+ import type { BaseState } from './base-state';
2
+ import type { StateGizmoBinding } from '../gizmo/gizmo-registry';
3
+ import type { GizmoOwner, GizmoTool } from '@vvfx/gizmo';
4
+ export type StateId = OfficialStateId | (string & {});
5
+ export declare enum OfficialStateId {
6
+ MOVE = "move",
7
+ HAND = "hand",
8
+ IMAGE_CUT = "imageCut",
9
+ IMAGE_EXPAND = "imageExpand",
10
+ IMAGE_TEXT_EDIT = "imageTextEdit",
11
+ IMAGE_MASK = "imageMask",
12
+ ITEM_CREATE = "itemCreate"
13
+ }
14
+ export type StateInteractionDefinition = {
15
+ readonly gizmos: readonly StateGizmoBinding[];
16
+ };
17
+ export type StateGizmoToolConstructor = new (owner: GizmoOwner) => GizmoTool;
18
+ export type StateChangeEvent = {
19
+ previousState: BaseState | undefined;
20
+ currentState: BaseState;
21
+ transition: StateTransition;
22
+ /** 触发本次切换的业务入参,由状态入口原样透传。 */
23
+ source?: any;
24
+ };
25
+ export type StateTransition = 'set' | 'push' | 'pop' | 'replace';
26
+ export type StateManagerEventMap = {
27
+ stateChange: [event: StateChangeEvent];
28
+ stateRegistered: [stateId: StateId];
29
+ stateUnregistered: [stateId: StateId];
30
+ stateReplaced: [stateId: StateId];
31
+ transitionError: [error: unknown, stateId: StateId, phase: StateLifecyclePhase];
32
+ };
33
+ export type StateLifecyclePhase = 'exit' | 'enter' | 'suspend' | 'resume' | 'ready' | 'notify';
34
+ export type StateTransitionRuntime = {
35
+ apply(state: BaseState): void;
36
+ reapply(state: BaseState): void;
37
+ registerState(state: BaseState): void;
38
+ unregisterState(state: BaseState): void;
39
+ };
40
+ export type StateNavigator = {
41
+ readonly activeState: BaseState;
42
+ get(stateId: StateId): BaseState | undefined;
43
+ activate(stateId: StateId, source?: any): void;
44
+ push(stateId: StateId, source?: any): void;
45
+ pop(source?: any): void;
46
+ };
47
+ export type BaseStateEventMap = {
48
+ enter: [];
49
+ exit: [];
50
+ suspend: [];
51
+ resume: [];
52
+ };
@@ -0,0 +1,3 @@
1
+ export { Store } from './store';
2
+ export { SceneStore } from './scene-store';
3
+ export type { SceneEntry, SceneEntrySnapshot, SceneStoreEventMap, AdaptConfig } from './scene-store';
@@ -0,0 +1,194 @@
1
+ import { EventEmitter, type spec } from '../../shared';
2
+ import { type ArtisItem } from '../item';
3
+ /**
4
+ * 自适应配置:由一个原始 JSONScene 生成场景变体的参数
5
+ */
6
+ export type AdaptConfig = {
7
+ /** 目标适配视口尺寸 */
8
+ viewSize: [number, number];
9
+ /** 安全区 [top, bottom, left, right] */
10
+ safeArea: [number, number, number, number];
11
+ /** 适配方向 */
12
+ direction?: 'x' | 'y';
13
+ /** 采样帧(gotoAndStop 冻结帧) */
14
+ tick?: number;
15
+ };
16
+ /**
17
+ * 单个场景条目
18
+ *
19
+ * 数据区元素:每个场景的纯持久数据 + 编辑模型数据。
20
+ * - scene 是持久真源(自适应后已落定的 JSON,受编辑回写)
21
+ * - items 是由 runtime 组装的编辑模型数据(带行为/引用的领域对象)
22
+ */
23
+ export type SceneEntry = {
24
+ /** 稳定标识(JSON 的 compositionId 或 generateGUID)—— activeSceneId 用它而非 index,避免增删场景漂移 */
25
+ id: string;
26
+ /** 场景 JSON 数据(GE JSONScene),自适应后已落定的持久真源(受编辑回写) */
27
+ scene: spec.JSONScene;
28
+ /** 原始 JSON 副本(重做自适应 / 对比用,无则等于 scene 本身) */
29
+ originScene?: spec.JSONScene;
30
+ /** 该场景下的 ArtisItem 列表(编辑模型数据,由 SceneDataAssembler 从 runtime 组装) */
31
+ items: ArtisItem[];
32
+ /** 产生本场景的自适应配置(无则 origin) */
33
+ adapt?: AdaptConfig;
34
+ /** 场景来源 */
35
+ source: 'origin' | 'adapted' | 'external-json';
36
+ /** 内容尺寸 [width, height] */
37
+ contentSize: [number, number];
38
+ /** 只读标记:true 时仅支持播放 + 选中查看,不可编辑(展示标准产物场景) */
39
+ readonly?: boolean;
40
+ };
41
+ /**
42
+ * SceneEntry 的 JSON-safe 快照投影(供错误上报序列化、复现页精确重建)。
43
+ *
44
+ * 与 {@link SceneEntry} 的差异:items 不持久化(runtime 复现时直接重新 assemble),
45
+ * 其余结构字段(id/scene/originScene/adapt/source/contentSize/readonly)全量保留,
46
+ * 使复现页能绕过 SceneBuilder 重新自适应、按快照原样灌入 entries 保真重建。
47
+ */
48
+ export type SceneEntrySnapshot = {
49
+ id: string;
50
+ /** 场景 JSONScene 深克隆(已含编辑回写) */
51
+ scene: spec.JSONScene;
52
+ /** 原 JSONScene 深克隆(sizeAdapt 还原用,无则等于 scene 本身) */
53
+ originScene?: spec.JSONScene;
54
+ /** 产生本场景的自适应配置(无则 origin) */
55
+ adapt?: AdaptConfig;
56
+ /** 场景来源 */
57
+ source: 'origin' | 'adapted' | 'external-json';
58
+ /** 内容尺寸 [width, height] */
59
+ contentSize: [number, number];
60
+ /** 只读标记(含此则复现页还原只读态) */
61
+ readonly?: boolean;
62
+ };
63
+ /**
64
+ * SceneStore 事件
65
+ *
66
+ * - sceneChange / activeSceneChange:当前激活场景变化
67
+ * - scenesUpdate:场景库增删
68
+ * - sceneDataMutate:场景数据变更(items / scene 数据被修改),替代缺失的 artisDataChange
69
+ */
70
+ export type SceneStoreEventMap = {
71
+ 'sceneChange': [info: {
72
+ prevIndex: number;
73
+ nextIndex: number;
74
+ }];
75
+ 'activeSceneChange': [info: {
76
+ prevId: string | undefined;
77
+ nextId: string | undefined;
78
+ }];
79
+ 'scenesUpdate': [];
80
+ 'sceneDataMutate': [info: {
81
+ sceneId: string;
82
+ fields: ('items' | 'scene')[];
83
+ }];
84
+ };
85
+ /**
86
+ * SceneStore - 多场景数据管理器
87
+ *
88
+ * 贯彻「Store 只存数据」原则,内分两区:
89
+ * - **数据区**:场景库 SceneEntry[],每场景存持久 JSON(真源)+ 编辑模型 items + 自适应配置
90
+ * - **会话区**:当前工作台状态——activeSceneId(当前渲染场景 id)/ time(播放游标)/ playing(播放态)
91
+ *
92
+ * 元素选择不在此处,由独立 SelectionManager 承担。
93
+ * 实际副作用(Player 重载、ViewService 更新等)由外部使用者处理。
94
+ */
95
+ export declare class SceneStore extends EventEmitter<SceneStoreEventMap> {
96
+ private _scenes;
97
+ private _activeIndex;
98
+ /** 会话区:当前播放/编辑游标 */
99
+ private _time;
100
+ /** 会话区:播放态 */
101
+ private _playing;
102
+ /** 场景库(只读视图,外部不应通过返回值修改内部结构) */
103
+ get scenes(): readonly SceneEntry[];
104
+ /** 当前激活场景的索引(-1 表示无激活场景) */
105
+ get activeIndex(): number;
106
+ /** 当前激活的场景条目(无激活场景时为 undefined) */
107
+ get activeScene(): SceneEntry | undefined;
108
+ /** 场景库中场景的数量 */
109
+ get sceneCount(): number;
110
+ /** 当前渲染/编辑场景 id(用 id 而非 index,避免增删场景漂移) */
111
+ get activeSceneId(): string | undefined;
112
+ /** 当前播放/编辑游标(会话级,不再落在 entry 内) */
113
+ get time(): number;
114
+ /** 设置当前播放/编辑游标值
115
+ * @param value 游标时间值 */
116
+ set time(value: number);
117
+ /** 播放态 */
118
+ get playing(): boolean;
119
+ /** 设置播放态
120
+ * @param value 是否处于播放态 */
121
+ set playing(value: boolean);
122
+ /**
123
+ * 添加场景,返回新场景的索引
124
+ * @param entry 场景条目
125
+ * @returns 新场景的索引
126
+ */
127
+ addScene(entry: SceneEntry): number;
128
+ /**
129
+ * 清空全部场景并重置激活/游标状态,供 run/reproduce 重建前重置。
130
+ *
131
+ * addScene 不按 id 去重,重复 run/reproduce 会累积重复场景;故重建路径在灌入前先清空。
132
+ * 与 {@link dispose} 的区别:本方法仅重置数据、保留实例可用,dispose 用于生命周期终结。
133
+ */
134
+ clearScenes(): void;
135
+ /**
136
+ * 按 id 取场景条目
137
+ * @param id 场景 id
138
+ * @returns 场景条目(无匹配时为 undefined)
139
+ */
140
+ getEntry(id: string): SceneEntry | undefined;
141
+ /**
142
+ * 移除场景,返回被移除的条目
143
+ * @param index 场景索引
144
+ * @returns 被移除的场景条目(索引越界时为 undefined)
145
+ */
146
+ removeScene(index: number): SceneEntry | undefined;
147
+ /**
148
+ * 以 id 激活场景(推荐入口,避免增删场景导致的 index 漂移)。
149
+ * 仅修改激活态,不执行副作用(Player 重载等由外部使用者负责)。
150
+ * activeSceneChange 事件由 setActiveIndex 统一发出。
151
+ * @param id 待激活场景 id
152
+ */
153
+ setActiveScene(id: string): void;
154
+ /**
155
+ * 切换活跃场景索引(仅修改索引,不执行副作用)
156
+ * 副作用由外部使用者的场景切换逻辑负责。
157
+ * 优先使用 setActiveScene(id);此方法保留以兼容 index-based 调用。
158
+ * @param index 目标场景索引
159
+ */
160
+ setActiveIndex(index: number): void;
161
+ /**
162
+ * 保存当前活跃场景的 items 快照,并发出 sceneDataMutate 事件
163
+ * @param items 最新的元素列表
164
+ */
165
+ saveCurrentItems(items: ArtisItem[]): void;
166
+ /**
167
+ * 标记激活场景的 scene(JSON)已被回写修改,发出 sceneDataMutate 事件
168
+ * @param sceneId 被修改的场景 id
169
+ */
170
+ markSceneMutated(sceneId: string): void;
171
+ /**
172
+ * 导出指定场景 JSONScene(深克隆保护,避免外部修改污染 Store)。
173
+ * @param id 场景 id,缺省=当前激活场景
174
+ * @returns 克隆后的 JSONScene;场景不存在时返回 undefined
175
+ */
176
+ exportEntry(id?: string): spec.JSONScene | undefined;
177
+ /**
178
+ * 导出全部场景 JSONScene(每个深克隆)
179
+ * @returns 全部场景克隆后的 JSONScene 数组
180
+ */
181
+ exportAll(): spec.JSONScene[];
182
+ /**
183
+ * 导出全部场景的 JSON-safe 快照(SceneEntrySnapshot[],深克隆保护)。
184
+ *
185
+ * 与 {@link exportAll} 的差异:回带 SceneEntry 全部结构字段(id/adapt/source/contentSize/readonly/originScene),
186
+ * 供错误上报快照和复现页精确重建多场景结构。items 不纳入快照(复现时 runtime 直接重新 assemble)。
187
+ * @returns 全部场景的快照数组(深克隆,外部可自由修改)
188
+ */
189
+ exportEntries(): SceneEntrySnapshot[];
190
+ /**
191
+ * 销毁,清空所有数据
192
+ */
193
+ dispose(): void;
194
+ }
@@ -0,0 +1,36 @@
1
+ import type { ArtisData } from '../types';
2
+ import type { ArtisItem } from '../item';
3
+ /**
4
+ * Store - 编辑器核心数据仓库
5
+ *
6
+ * 持有当前场景的 ArtisData(构造时以默认空数据初始化,unbind 重置),
7
+ * 通过 getter/setter 提供结构化访问(items 等)。
8
+ *
9
+ * 注:Store 本身不 extends EventEmitter,数据变更需由 CommandService 的 afterExecute
10
+ * 回调驱动刷新(与 Gizmo / SelectionManager / ViewService 的事件模式不同)。
11
+ *
12
+ * 使用方式:
13
+ * 1. 通过 store.items 直接读写元素列表
14
+ * 2. 数据变更的一致性刷新由 CommandService.afterExecute 统一编排
15
+ */
16
+ export declare class Store {
17
+ private _data;
18
+ constructor();
19
+ /**
20
+ * 解绑数据源
21
+ */
22
+ unbind(): void;
23
+ /** 当前场景下的全部 ArtisItem 列表 */
24
+ get items(): ArtisItem[];
25
+ /**
26
+ * 设置 items 列表
27
+ * @param value 新的 ArtisItem 列表
28
+ */
29
+ set items(value: ArtisItem[]);
30
+ /**
31
+ * 获取绑定的 ArtisData 引用
32
+ * 用于需要传递完整 ArtisData 的旧接口
33
+ * @returns 当前绑定数据的深拷贝(不影响内部 _data 引用)
34
+ */
35
+ toArtisData(): ArtisData;
36
+ }
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Artis 通用配置 / 运行时类型(由 artis/types.ts 下移至此)
3
+ *
4
+ * 下移目的:消除 core → artis 的 type-only 反向依赖。这些类型本属 core 数据契约
5
+ * 且零外部依赖,原定义在 artis/types.ts 导致 core/renderer、core/asset、core/plugin、
6
+ * core/service 等模块反向 `import type ... from '../../artis/types'`。下移后 artis/types.ts
7
+ * 反向 re-export 以保持对外公共 API 不变。
8
+ *
9
+ */
10
+ import type { spec } from '../../shared';
11
+ /**
12
+ * 页面功能配置
13
+ */
14
+ export type PagePreferences = {
15
+ /** 静态预览功能开关 */
16
+ staticPreview: boolean;
17
+ /** 静态预览视图名称 */
18
+ staticPreviewName: string;
19
+ /** 需过滤的元素名称 */
20
+ filterItemNames: string[];
21
+ /** 需忽略交互的元素名称(仍渲染可见;不可选中/不可更改/不计入公共 items,保留在导出 JSON) */
22
+ ignoredInteractionNames: string[];
23
+ /** 成组操作元素显隐 */
24
+ groupVisible: boolean;
25
+ /** 缩放最大值 */
26
+ maxZoom: number;
27
+ /** 缩放最小值 */
28
+ minZoom: number;
29
+ };
30
+ /**
31
+ * 用户偏好设置
32
+ *
33
+ * 按功能模块划分(终端用户个人偏好:功能开关 / 功能配置):
34
+ * - page: 页面功能配置
35
+ * - item: 元素配置
36
+ * - export: 导出功能
37
+ * - screenshot: 截图功能
38
+ * - sizeAdapt: 尺寸自适应
39
+ * - asyncLoad: 异步加载
40
+ *
41
+ * 注意:Gizmo 配置(线宽/颜色/笔刷/遮罩开关等)是「平台开发一次性产品配置」,不属于终端用户
42
+ */
43
+ export type UserPreferences = {
44
+ /** 页面功能配置 */
45
+ page: PagePreferences;
46
+ /** 元素配置 */
47
+ item: ItemPreferences;
48
+ /** 导出功能配置 */
49
+ export: ExportPreferences;
50
+ /** 截图功能配置 */
51
+ screenshot: ScreenshotPreferences;
52
+ /** 尺寸自适应功能配置 */
53
+ sizeAdapt: SizeAdaptPreferences;
54
+ /** 异步加载功能配置 */
55
+ asyncLoad: AsyncLoadPreferences;
56
+ };
57
+ /**
58
+ * 元素配置
59
+ */
60
+ export type ItemPreferences = {
61
+ /** 画板配置 */
62
+ frame: FrameItemPreferences;
63
+ /** 卡片配置 */
64
+ card: CardItemPreferences;
65
+ };
66
+ /**
67
+ * 画板元素配置
68
+ */
69
+ export type FrameItemPreferences = {
70
+ /** 自由布局下画板内边距(≥0,负值行为未定义) */
71
+ layoutPadding: number;
72
+ /** 自动布局下画板元素间距(≥0,负值行为未定义) */
73
+ layoutGap: number;
74
+ /** 新建画板默认宽度(>0,非正值会生成无效画板) */
75
+ defaultWidth: number;
76
+ /** 新建画板默认高度(>0,非正值会生成无效画板) */
77
+ defaultHeight: number;
78
+ /** 自由布局画板背景色 */
79
+ freeLayoutBackgroundColor: spec.vec4;
80
+ /** 自动布局画板背景色 */
81
+ autoLayoutBackgroundColor: spec.vec4;
82
+ };
83
+ /**
84
+ * 卡片元素配置
85
+ */
86
+ export type CardItemPreferences = {
87
+ /** 卡片元素背景色 [r, g, b, a] */
88
+ backgroundColor: [number, number, number, number];
89
+ };
90
+ /**
91
+ * 导出功能配置
92
+ */
93
+ export type ExportPreferences = {
94
+ /** 是否启用导出功能 */
95
+ enabled: boolean;
96
+ };
97
+ /**
98
+ * 截图功能配置
99
+ */
100
+ export type ScreenshotPreferences = {
101
+ /** 是否启用截图功能 */
102
+ enabled: boolean;
103
+ /** 截图默认背景色 [r, g, b, a] */
104
+ defaultBackgroundColor: [number, number, number, number];
105
+ };
106
+ /**
107
+ * 尺寸自适应功能配置
108
+ */
109
+ export type SizeAdaptPreferences = {
110
+ /** 是否启用尺寸自适应 */
111
+ enabled: boolean;
112
+ };
113
+ /**
114
+ * 异步加载功能配置
115
+ */
116
+ export type AsyncLoadPreferences = {
117
+ /** 是否启用异步加载 */
118
+ enabled: boolean;
119
+ /** 异步加载时显示的过渡纹理 URL */
120
+ loadingTextureUrl: string;
121
+ };
122
+ /**
123
+ * 背景配置(联合类型,通过 type 区分具体模式)
124
+ */
125
+ export type ArtisBackgroundConfig = ColorBackground | ImageBackground | ChessBoardBackground | DotBoardBackground;
126
+ /**
127
+ * 纯色背景
128
+ */
129
+ export type ColorBackground = {
130
+ type: 'color';
131
+ /** CSS 颜色值,如 '#ffffff'、'rgba(0,0,0,0.5)' */
132
+ color: string;
133
+ };
134
+ /**
135
+ * 图片背景
136
+ */
137
+ export type ImageBackground = {
138
+ type: 'image';
139
+ /** 图片 URL */
140
+ url: string;
141
+ /** 底色(图片加载前或透明区域的底色) */
142
+ fallbackColor?: string;
143
+ };
144
+ /**
145
+ * 棋盘格背景
146
+ */
147
+ export type ChessBoardBackground = {
148
+ type: 'chess-board';
149
+ /** 格子大小(像素),默认 16 */
150
+ gridSize?: number;
151
+ /** 格子颜色 A,默认 '#FFFFFF' */
152
+ colorA?: string;
153
+ /** 格子颜色 B,默认 '#CCCCCC' */
154
+ colorB?: string;
155
+ };
156
+ /**
157
+ * 点阵背景
158
+ */
159
+ export type DotBoardBackground = {
160
+ type: 'dot-board';
161
+ /** 底色,默认 '#F5F5F5' */
162
+ backgroundColor?: string;
163
+ /** 点颜色,默认 '#BBBBBB' */
164
+ dotColor?: string;
165
+ /** 点间距(像素),默认 16 */
166
+ spacing?: number;
167
+ /** 点半径(像素),默认 1 */
168
+ dotRadius?: number;
169
+ };
170
+ /**
171
+ * Disposable 接口
172
+ */
173
+ export type Disposable = {
174
+ dispose(): void;
175
+ };
176
+ /**
177
+ * 资源加载结果
178
+ */
179
+ export type AssetLoadResult = {
180
+ /** 是否加载成功 */
181
+ success: boolean;
182
+ /** 加载成功后的资源 id */
183
+ assetId?: string;
184
+ /** 加载失败时的错误信息 */
185
+ error?: Error;
186
+ };
@@ -0,0 +1,101 @@
1
+ import type { ItemCreateType } from '@vvfx/gizmo';
2
+ import type { spec } from '../../shared';
3
+ import type { HistoryOperation } from '../command/types';
4
+ import type { ArtisData } from './page';
5
+ import type { AnyArtisErrorInfo } from '../quality/error-monitor/types';
6
+ /**
7
+ * Artis warning 事件载荷(通用结构)。
8
+ *
9
+ * 不绑死某具体场景字段,所有 warning 来源复用同一套:尺寸 0 兜底、viewport resize
10
+ * 跳过比例更新、未来其它降级场景皆走此类型,仅 code 不同。
11
+ *
12
+ * - params:触发 warning 的原始入参快照(各场景自填键名),供复现/排查"给了什么"。
13
+ * - result:warning 是「已兜底继续执行」语义,此字段带回本次操作实际生效的结果,
14
+ * 让宿主无需重新查询即知 warning 后真实状态。
15
+ */
16
+ export type ArtisWarningEventInfo = {
17
+ /** warning 场景标识,按来源枚举:'zero-size-fallback' | 'viewport-resize-skipped' | ... */
18
+ code: string;
19
+ /** 人可读描述 */
20
+ message: string;
21
+ /** 相关元素 id(有则填,无则缺省) */
22
+ itemId?: string;
23
+ /** 原始入参快照(兼容参数名称,各场景自填键名) */
24
+ params?: Record<string, unknown>;
25
+ /** 已执行/已落盘的结果数据(warning 后实际生效状态) */
26
+ result?: Record<string, unknown>;
27
+ timestamp: number;
28
+ };
29
+ /**
30
+ * BaseArtis 公共事件类型。
31
+ *
32
+ * 这里只声明所有 Artis 变体共有的稳定事件。具体 Artis 的编辑态事件在
33
+ * `artis/types.ts` 中通过 ArtisStateEvents 扩展,避免 BaseArtis 与 SceneArtis 被迫暴露。
34
+ *
35
+ * 依赖面:@vvfx/gizmo(BaseState/ItemCreateType)、shared(spec)、core/command(HistoryOperation)、
36
+ * core/types/page(ArtisData)、core/quality/error-monitor(AnyArtisErrorInfo)——均为 core 已有合法依赖方向,无新增反向引用。
37
+ *
38
+ * error 事件:真失败场景(Command execute/undo/redo、资源加载失败、异步场景切换、
39
+ * interactionService 运算抛错被 catch 等),载荷复用
40
+ * ErrorMonitor 的 AnyArtisErrorInfo(含场景快照 + 最近 5 条 Command,供复现/调试)。
41
+ * error 事件作业务出口,不依赖 enableErrorMonitor 回调;emit 时经 captureSnapshot 产出载荷。
42
+ *
43
+ * warning 事件:可降级场景(尺寸 0 兜底、resize 跳过比例更新等),载荷为通用
44
+ * ArtisWarningEventInfo(见上)。
45
+ */
46
+ export type BaseArtisEvents = {
47
+ 'artis.init': [];
48
+ 'artis.ready': [];
49
+ 'artis.dispose': [];
50
+ 'scene.loaded': [];
51
+ 'renderer.contextlost': [];
52
+ 'renderer.contextrestored': [info: {
53
+ syncFailures: string[];
54
+ }];
55
+ 'recovery.rebuilding': [info: {
56
+ attempt: number;
57
+ }];
58
+ 'recovery.failed': [info: {
59
+ reason: string;
60
+ }];
61
+ 'scene.datachange': [pageData: ArtisData];
62
+ 'selection.change': [ids: string[]];
63
+ 'selection.preselectchange': [id: string | undefined];
64
+ 'loading.change': [ids: string[]];
65
+ 'item.propertychange': [info: {
66
+ id: string;
67
+ propertyKeys: string[];
68
+ }];
69
+ 'view.transform': [transform: {
70
+ zoom: number;
71
+ translation: [number, number];
72
+ }];
73
+ 'item.dragstart': [type: string];
74
+ 'item.drag': [type: string];
75
+ 'item.dragend': [type: string];
76
+ 'item.create': [info: {
77
+ type: ItemCreateType;
78
+ position: spec.vec2;
79
+ id: string;
80
+ width?: number;
81
+ }];
82
+ 'video.play': [info: {
83
+ id: string;
84
+ time: number;
85
+ }];
86
+ 'spritetext.click': [info: {
87
+ id: string;
88
+ index: number;
89
+ text: string;
90
+ } | undefined];
91
+ 'history.change': [operation: HistoryOperation];
92
+ 'text.input': [info: {
93
+ itemId: string;
94
+ text: string;
95
+ fontFamily: string;
96
+ }];
97
+ /** 真失败场景:载荷为场景快照 + 最近 5 条 Command(AnyArtisErrorInfo),供宿主复现/调试/决策 */
98
+ 'artis.error': [info: AnyArtisErrorInfo];
99
+ /** 可降级场景:载荷为通用 ArtisWarningEventInfo(code + params + result) */
100
+ 'artis.warning': [info: ArtisWarningEventInfo];
101
+ };
@@ -0,0 +1,3 @@
1
+ /** Frame domain types are owned by @vvfx/gizmo's FrameManager. */
2
+ export { FrameLayoutMode } from '@vvfx/gizmo';
3
+ export type { AutoLayoutConfig, LayoutInfo } from '@vvfx/gizmo';
@@ -0,0 +1,28 @@
1
+ import type { spec } from '../../shared';
2
+ export type GeneratorExtension = {
3
+ type: 'generator';
4
+ generatorType: 'sprite' | 'video';
5
+ fillColor: [number, number, number, number];
6
+ iconUrl: string;
7
+ };
8
+ export type SpriteGeneratorResource = {
9
+ url: string;
10
+ size?: spec.vec2;
11
+ itemId: string;
12
+ extension?: Record<string, any>;
13
+ };
14
+ export type VideoGeneratorResource = {
15
+ url: string;
16
+ size?: spec.vec2;
17
+ muted?: boolean;
18
+ transparent?: boolean;
19
+ playbackRate?: number;
20
+ volume?: number;
21
+ itemId: string;
22
+ extension?: Record<string, any>;
23
+ };
24
+ export type GeneratorResource = SpriteGeneratorResource | VideoGeneratorResource;
25
+ export type GeneratorStyleConfig = {
26
+ fillColor?: spec.vec4;
27
+ iconUrl?: string;
28
+ };
@@ -0,0 +1,15 @@
1
+ export { FrameLayoutMode } from './frame';
2
+ export type { AutoLayoutConfig, LayoutInfo } from './frame';
3
+ export type { PagePreferences, UserPreferences, ItemPreferences, FrameItemPreferences, CardItemPreferences, ExportPreferences, ScreenshotPreferences, SizeAdaptPreferences, AsyncLoadPreferences, ArtisBackgroundConfig, ColorBackground, ImageBackground, ChessBoardBackground, DotBoardBackground, Disposable, AssetLoadResult, } from './artis-config';
4
+ export type { BaseArtisEvents, ArtisWarningEventInfo } from './artis-events';
5
+ export type { BaseItemProperty, SpriteItemProperty, GroupItemProperty, TextItemProperty, VideoItemProperty, GeneratorItemProperty, EffectsItemProperty, CardItemProperty, FrameItemProperty, CardHTML, CardHTMLContent, CardHTMLInlineContent, CardHTMLDOMRendererContent, CardHTMLDocumentContent, CardHTMLDocumentMessage, CardHTMLWindowEventMessage, CardHTMLShellContent, CardHTMLShellRenderer, CardHTMLShellRendererContext, CardHTMLShellRendererResult, CardHTMLRenderCleanup, CardHTMLContentCleanup, CardHTMLDOMRenderer, CardHTMLPatchContext, CardHTMLPatchHandler, CardHTMLRootConfig, CardHTMLRootStyle } from './item-property';
6
+ export type { SpriteCreateInfo, GroupCreateInfo, TextCreateInfo, VideoCreateInfo, CardCreateInfo, CardType, GeneratorCreateInfo, EffectsCreateInfo, FrameCreateInfo, AsyncSpriteCreateInfo, AsyncVideoCreateInfo, ItemCreateInfo, AsyncItemCreateInfo, SceneCreateInfo, CardTypeConfig } from './item-create-info';
7
+ export { GeneratorType } from './item-create-info';
8
+ export type { SpriteItemSchema, TextItemSchema, VideoItemSchema, GroupItemSchema, GeneratorItemSchema, EffectsItemSchema, FrameItemSchema, CardItemSchema, ItemSchema } from './item-schema';
9
+ export { createInfoToItemSchema } from './item-schema';
10
+ export type { BaseItemPropertyKey, BaseItemPropertyValueMap, ItemPropertyMap, SetSingleItemSinglePropertyParam, SetSingleItemMultiplePropertiesParam, SetItemPropertyParam } from './item-set-property';
11
+ export type { PageOptions, ArtisData, InitArtisData, PageAutoLayoutParam, ArtisPageConfig, PageProperty, ActiveData } from './page';
12
+ export type { ViewportFitShiftParam, ExportParam, PreviewSafeAreaParam, ViewParam, ViewProperty } from './view';
13
+ export type { GeneratorExtension, SpriteGeneratorResource, VideoGeneratorResource, GeneratorResource, GeneratorStyleConfig } from './generator';
14
+ export type { SDKBackgroundType, SDKOptions, SDKTemplateInputParam, SDKEditorInputParam, SDKInputParam, SDKInitParam } from './sdk';
15
+ export { ItemOrderAction } from './item-reorder';