@planara/core 3.0.0 → 3.1.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 (208) hide show
  1. package/dist/api/modules/controls-state-api.d.ts +1 -1
  2. package/dist/api/modules/controls-state-api.d.ts.map +1 -1
  3. package/dist/api/modules/index.d.ts +5 -0
  4. package/dist/api/modules/index.d.ts.map +1 -0
  5. package/dist/api/modules/mesh-api.d.ts +1 -1
  6. package/dist/api/modules/mesh-api.d.ts.map +1 -1
  7. package/dist/api/modules/raycast-api.d.ts +1 -1
  8. package/dist/api/modules/raycast-api.d.ts.map +1 -1
  9. package/dist/api/modules/transform-api.d.ts +2 -2
  10. package/dist/api/modules/transform-api.d.ts.map +1 -1
  11. package/dist/api/renderer/camera-api.d.ts +2 -2
  12. package/dist/api/renderer/camera-api.d.ts.map +1 -1
  13. package/dist/api/renderer/dom-api.d.ts +2 -2
  14. package/dist/api/renderer/dom-api.d.ts.map +1 -1
  15. package/dist/api/renderer/index.d.ts +4 -0
  16. package/dist/api/renderer/index.d.ts.map +1 -0
  17. package/dist/api/renderer/scene-api.d.ts +2 -2
  18. package/dist/api/renderer/scene-api.d.ts.map +1 -1
  19. package/dist/constants/figure-geometries.d.ts.map +1 -1
  20. package/dist/constants/index.d.ts +6 -0
  21. package/dist/constants/index.d.ts.map +1 -0
  22. package/dist/controllers/index.d.ts +2 -0
  23. package/dist/controllers/index.d.ts.map +1 -0
  24. package/dist/controllers/renderer-controller.d.ts +7 -9
  25. package/dist/controllers/renderer-controller.d.ts.map +1 -1
  26. package/dist/core/index.d.ts +2 -0
  27. package/dist/core/index.d.ts.map +1 -0
  28. package/dist/core/renderer.d.ts +10 -15
  29. package/dist/core/renderer.d.ts.map +1 -1
  30. package/dist/decorators/index.d.ts +3 -0
  31. package/dist/decorators/index.d.ts.map +1 -0
  32. package/dist/decorators/use-policy.d.ts.map +1 -1
  33. package/dist/decorators/use-validator.d.ts +5 -0
  34. package/dist/decorators/use-validator.d.ts.map +1 -0
  35. package/dist/errors/index.d.ts +3 -0
  36. package/dist/errors/index.d.ts.map +1 -0
  37. package/dist/errors/policy-error.d.ts +1 -1
  38. package/dist/errors/policy-error.d.ts.map +1 -1
  39. package/dist/errors/validation-error.d.ts +9 -0
  40. package/dist/errors/validation-error.d.ts.map +1 -0
  41. package/dist/events/editor-events.d.ts +1 -1
  42. package/dist/events/editor-events.d.ts.map +1 -1
  43. package/dist/events/event-bus.d.ts +1 -1
  44. package/dist/events/event-bus.d.ts.map +1 -1
  45. package/dist/events/index.d.ts +4 -0
  46. package/dist/events/index.d.ts.map +1 -0
  47. package/dist/handlers/display/index.d.ts +2 -0
  48. package/dist/handlers/display/index.d.ts.map +1 -0
  49. package/dist/handlers/display/wireframe-handler.d.ts +2 -2
  50. package/dist/handlers/display/wireframe-handler.d.ts.map +1 -1
  51. package/dist/handlers/scene/add-figure-scene-handler.d.ts +2 -2
  52. package/dist/handlers/scene/add-figure-scene-handler.d.ts.map +1 -1
  53. package/dist/handlers/scene/delete-figure-scene-handler.d.ts +3 -3
  54. package/dist/handlers/scene/delete-figure-scene-handler.d.ts.map +1 -1
  55. package/dist/handlers/scene/export-scene-handler.d.ts +23 -0
  56. package/dist/handlers/scene/export-scene-handler.d.ts.map +1 -0
  57. package/dist/handlers/scene/index.d.ts +6 -0
  58. package/dist/handlers/scene/index.d.ts.map +1 -0
  59. package/dist/handlers/scene/load-figure-scene-handler.d.ts +23 -0
  60. package/dist/handlers/scene/load-figure-scene-handler.d.ts.map +1 -0
  61. package/dist/handlers/scene/load-scene-handler.d.ts +23 -0
  62. package/dist/handlers/scene/load-scene-handler.d.ts.map +1 -0
  63. package/dist/handlers/select/edge-select-handler.d.ts +5 -8
  64. package/dist/handlers/select/edge-select-handler.d.ts.map +1 -1
  65. package/dist/handlers/select/face-select-handler.d.ts +5 -8
  66. package/dist/handlers/select/face-select-handler.d.ts.map +1 -1
  67. package/dist/handlers/select/index.d.ts +5 -0
  68. package/dist/handlers/select/index.d.ts.map +1 -0
  69. package/dist/handlers/select/mesh-select-handler.d.ts +5 -6
  70. package/dist/handlers/select/mesh-select-handler.d.ts.map +1 -1
  71. package/dist/handlers/select/vertex-select-handler.d.ts +5 -8
  72. package/dist/handlers/select/vertex-select-handler.d.ts.map +1 -1
  73. package/dist/handlers/tool/base-tool-handler.d.ts +3 -3
  74. package/dist/handlers/tool/base-tool-handler.d.ts.map +1 -1
  75. package/dist/handlers/tool/index.d.ts +4 -0
  76. package/dist/handlers/tool/index.d.ts.map +1 -0
  77. package/dist/handlers/tool/rotate-tool-handler.d.ts +2 -2
  78. package/dist/handlers/tool/rotate-tool-handler.d.ts.map +1 -1
  79. package/dist/handlers/tool/scale-tool-handler.d.ts +2 -2
  80. package/dist/handlers/tool/scale-tool-handler.d.ts.map +1 -1
  81. package/dist/handlers/tool/translate-tool-handler.d.ts +2 -2
  82. package/dist/handlers/tool/translate-tool-handler.d.ts.map +1 -1
  83. package/dist/hub/editor-hub.d.ts +11 -8
  84. package/dist/hub/editor-hub.d.ts.map +1 -1
  85. package/dist/hub/index.d.ts +26 -0
  86. package/dist/hub/index.d.ts.map +1 -0
  87. package/dist/hub/viewer-hub.d.ts +30 -0
  88. package/dist/hub/viewer-hub.d.ts.map +1 -0
  89. package/dist/index.cjs.js +20 -2
  90. package/dist/index.d.ts +4 -4
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.es.js +2063 -1147
  93. package/dist/index.full.d.ts +67 -57
  94. package/dist/index.public.d.ts +67 -57
  95. package/dist/index.umd.js +20 -2
  96. package/dist/interfaces/api/index.d.ts +9 -0
  97. package/dist/interfaces/api/index.d.ts.map +1 -0
  98. package/dist/interfaces/api/renderer/index.d.ts +6 -0
  99. package/dist/interfaces/api/renderer/index.d.ts.map +1 -0
  100. package/dist/interfaces/api/transform-api.d.ts +1 -1
  101. package/dist/interfaces/api/transform-api.d.ts.map +1 -1
  102. package/dist/interfaces/command/index.d.ts +1 -1
  103. package/dist/interfaces/command/index.d.ts.map +1 -1
  104. package/dist/interfaces/controller/{controller.d.ts → index.d.ts} +1 -1
  105. package/dist/interfaces/controller/index.d.ts.map +1 -0
  106. package/dist/interfaces/handler/index.d.ts +6 -0
  107. package/dist/interfaces/handler/index.d.ts.map +1 -0
  108. package/dist/interfaces/manager/display-manager.d.ts.map +1 -1
  109. package/dist/interfaces/manager/index.d.ts +6 -0
  110. package/dist/interfaces/manager/index.d.ts.map +1 -0
  111. package/dist/interfaces/manager/manager.d.ts +1 -1
  112. package/dist/interfaces/manager/manager.d.ts.map +1 -1
  113. package/dist/interfaces/manager/select-manager.d.ts.map +1 -1
  114. package/dist/interfaces/manager/tool-manager.d.ts.map +1 -1
  115. package/dist/interfaces/mediator/index.d.ts +1 -1
  116. package/dist/interfaces/mediator/index.d.ts.map +1 -1
  117. package/dist/interfaces/middleware/index.d.ts +1 -1
  118. package/dist/interfaces/middleware/index.d.ts.map +1 -1
  119. package/dist/interfaces/module/index.d.ts +4 -0
  120. package/dist/interfaces/module/index.d.ts.map +1 -0
  121. package/dist/interfaces/module/renderable-module.d.ts +1 -1
  122. package/dist/interfaces/module/renderable-module.d.ts.map +1 -1
  123. package/dist/interfaces/store/export-store.d.ts +8 -0
  124. package/dist/interfaces/store/export-store.d.ts.map +1 -0
  125. package/dist/interfaces/store/index.d.ts +6 -0
  126. package/dist/interfaces/store/index.d.ts.map +1 -0
  127. package/dist/interfaces/store/select-store.d.ts +1 -1
  128. package/dist/interfaces/store/select-store.d.ts.map +1 -1
  129. package/dist/interfaces/store/tool-store.d.ts +1 -1
  130. package/dist/interfaces/store/tool-store.d.ts.map +1 -1
  131. package/dist/interfaces/validator/index.d.ts +21 -0
  132. package/dist/interfaces/validator/index.d.ts.map +1 -0
  133. package/dist/ioc/container.d.ts +3 -1
  134. package/dist/ioc/container.d.ts.map +1 -1
  135. package/dist/managers/display/display-manager.d.ts +4 -4
  136. package/dist/managers/display/display-manager.d.ts.map +1 -1
  137. package/dist/managers/display/index.d.ts +2 -0
  138. package/dist/managers/display/index.d.ts.map +1 -0
  139. package/dist/managers/index.d.ts +5 -0
  140. package/dist/managers/index.d.ts.map +1 -0
  141. package/dist/managers/scene/index.d.ts +2 -0
  142. package/dist/managers/scene/index.d.ts.map +1 -0
  143. package/dist/managers/scene/scene-manager.d.ts +5 -5
  144. package/dist/managers/scene/scene-manager.d.ts.map +1 -1
  145. package/dist/managers/select/index.d.ts +2 -0
  146. package/dist/managers/select/index.d.ts.map +1 -0
  147. package/dist/managers/select/select-manager.d.ts +5 -5
  148. package/dist/managers/select/select-manager.d.ts.map +1 -1
  149. package/dist/managers/tool/index.d.ts +2 -0
  150. package/dist/managers/tool/index.d.ts.map +1 -0
  151. package/dist/managers/tool/tool-manager.d.ts +4 -4
  152. package/dist/managers/tool/tool-manager.d.ts.map +1 -1
  153. package/dist/mediator/index.d.ts +2 -2
  154. package/dist/mediator/index.d.ts.map +1 -1
  155. package/dist/middlewares/exception-middleware.d.ts +7 -2
  156. package/dist/middlewares/exception-middleware.d.ts.map +1 -1
  157. package/dist/middlewares/index.d.ts +2 -0
  158. package/dist/middlewares/index.d.ts.map +1 -0
  159. package/dist/modules/controls-module.d.ts +11 -9
  160. package/dist/modules/controls-module.d.ts.map +1 -1
  161. package/dist/modules/gizmo-module.d.ts +2 -4
  162. package/dist/modules/gizmo-module.d.ts.map +1 -1
  163. package/dist/modules/index.d.ts +6 -0
  164. package/dist/modules/index.d.ts.map +1 -0
  165. package/dist/modules/raycast-module.d.ts +4 -8
  166. package/dist/modules/raycast-module.d.ts.map +1 -1
  167. package/dist/modules/scene-module.d.ts +2 -3
  168. package/dist/modules/scene-module.d.ts.map +1 -1
  169. package/dist/modules/scene-preview-module.d.ts +26 -0
  170. package/dist/modules/scene-preview-module.d.ts.map +1 -0
  171. package/dist/policy/index.d.ts +2 -0
  172. package/dist/policy/index.d.ts.map +1 -0
  173. package/dist/policy/tool-policy.d.ts +1 -1
  174. package/dist/policy/tool-policy.d.ts.map +1 -1
  175. package/dist/store/editor-store.d.ts +33 -0
  176. package/dist/store/editor-store.d.ts.map +1 -0
  177. package/dist/store/export-store.d.ts +12 -0
  178. package/dist/store/export-store.d.ts.map +1 -0
  179. package/dist/store/index.d.ts +2 -35
  180. package/dist/store/index.d.ts.map +1 -1
  181. package/dist/types/camera/index.d.ts +2 -0
  182. package/dist/types/camera/index.d.ts.map +1 -0
  183. package/dist/types/event/index.d.ts +2 -0
  184. package/dist/types/event/index.d.ts.map +1 -0
  185. package/dist/types/feature/index.d.ts +2 -0
  186. package/dist/types/feature/index.d.ts.map +1 -0
  187. package/dist/types/listener/index.d.ts +3 -0
  188. package/dist/types/listener/index.d.ts.map +1 -0
  189. package/dist/types/select/index.d.ts +2 -0
  190. package/dist/types/select/index.d.ts.map +1 -0
  191. package/dist/utils/default-renderer-config.d.ts +9 -0
  192. package/dist/utils/default-renderer-config.d.ts.map +1 -0
  193. package/dist/utils/helpers.d.ts +14 -1
  194. package/dist/utils/helpers.d.ts.map +1 -1
  195. package/dist/utils/index.d.ts +3 -0
  196. package/dist/utils/index.d.ts.map +1 -0
  197. package/dist/validators/index.d.ts +2 -0
  198. package/dist/validators/index.d.ts.map +1 -0
  199. package/dist/validators/obj-validator.d.ts +12 -0
  200. package/dist/validators/obj-validator.d.ts.map +1 -0
  201. package/package.json +2 -2
  202. package/dist/hub/app-hub.d.ts +0 -13
  203. package/dist/hub/app-hub.d.ts.map +0 -1
  204. package/dist/interfaces/controller/controller.d.ts.map +0 -1
  205. package/dist/interfaces/response/index.d.ts +0 -22
  206. package/dist/interfaces/response/index.d.ts.map +0 -1
  207. package/dist/types/response/response-type.d.ts +0 -19
  208. package/dist/types/response/response-type.d.ts.map +0 -1
@@ -1,9 +1,13 @@
1
1
  import { DisplayMode } from '@planara/types';
2
2
  import { Disposable as Disposable_2 } from 'tsyringe';
3
+ import { ExportResult } from '@planara/types';
4
+ import { ExportSceneResult } from '@planara/types';
3
5
  import { Figure } from '@planara/types';
4
6
  import { FigureTransform } from '@planara/types';
5
7
  import { FigureType } from '@planara/types';
6
- import { SceneMode } from '@planara/types';
8
+ import { IResponse } from '@planara/types';
9
+ import { RendererConfig } from '@planara/types';
10
+ import { RendererConfigInput } from '@planara/types';
7
11
  import { SelectMode } from '@planara/types';
8
12
  import * as THREE from 'three';
9
13
  import { ToolType } from '@planara/types';
@@ -23,7 +27,14 @@ export declare type CameraPosition = {
23
27
  * Вызывать один раз при старте (когда есть canvas).
24
28
  * @public
25
29
  */
26
- export declare const createAppHub: (canvas: HTMLCanvasElement) => EditorHub;
30
+ export declare const createEditorHub: (canvas: HTMLCanvasElement, rendererConfig?: RendererConfigInput) => EditorHub;
31
+
32
+ /**
33
+ * Инициализирует вьювер и возвращает хаб.
34
+ * Вызывать один раз при старте (когда есть canvas).
35
+ * @public
36
+ */
37
+ export declare const createViewerHub: (canvas: HTMLCanvasElement, rendererConfig?: RendererConfigInput) => ViewerHub;
27
38
 
28
39
  /**
29
40
  * Типы событий редактора.
@@ -51,13 +62,17 @@ export declare class EditorHub implements Disposable_2 {
51
62
  private _renderer;
52
63
  private _mediator;
53
64
  private _store;
65
+ private _exportStore;
54
66
  private _controller;
55
- constructor(_renderer: Renderer, _mediator: IMediator, _store: ITransformStore, _controller: IController);
67
+ constructor(_renderer: Renderer, _mediator: IMediator, _store: ITransformStore, _exportStore: IExportStore, _controller: IController);
56
68
  setDisplayMode(mode: DisplayMode): IResponse | null;
57
- setSceneMode(mode: SceneMode): IResponse | null;
58
69
  setSelectMode(mode: SelectMode): IResponse | null;
59
70
  setToolMode(mode: ToolType): IResponse | null;
60
- addFigure(mode: SceneMode, figure: FigureType): IResponse | null;
71
+ addFigure(figure: FigureType): IResponse | null;
72
+ deleteFigure(): IResponse | null;
73
+ loadFigure(content: string): IResponse | null;
74
+ loadScene(content: string): IResponse | null;
75
+ exportScene(): ExportSceneResult;
61
76
  resizeRenderer(): void;
62
77
  /**
63
78
  * Запускает редактор.
@@ -220,7 +235,13 @@ export declare enum FeatureType {
220
235
  * Возвращает уже созданный хаб, если редактор инициализирован.
221
236
  * @public
222
237
  */
223
- export declare const getAppHub: () => EditorHub;
238
+ export declare const getEditorHub: () => EditorHub;
239
+
240
+ /**
241
+ * Возвращает уже созданный хаб, если редактор инициализирован.
242
+ * @public
243
+ */
244
+ export declare const getViewerHub: () => ViewerHub;
224
245
 
225
246
  /**
226
247
  * @public
@@ -287,6 +308,13 @@ export declare interface IDisplayStore {
287
308
  setDisplayMode(mode: DisplayMode): void;
288
309
  }
289
310
 
311
+ /** @public */
312
+ export declare interface IExportStore {
313
+ setResult(result: ExportResult): void;
314
+ getResult(): ExportResult | null;
315
+ clearResult(): void;
316
+ }
317
+
290
318
  /**
291
319
  * Интерфейс медиатора команд редактора.
292
320
  *
@@ -544,27 +572,6 @@ export declare interface IRendererSceneAccess {
544
572
  getScene(): THREE.Scene;
545
573
  }
546
574
 
547
- /**
548
- * Тип ответа от менеджеров или политик редактора.
549
- *
550
- * @remarks
551
- * Используется для единого API на уровне Hub.
552
- * Все менеджеры возвращают `Response`, чтобы клиент знал статус вызова.
553
- *
554
- * @public
555
- * @interface
556
- */
557
- export declare interface IResponse {
558
- /** Тип ответа (enum ResponseType) */
559
- type: ResponseType_2;
560
- /** Читаемое сообщение для отображения или логирования */
561
- message: string;
562
- /** Строковый код для логов или интеграций (опционально) */
563
- code?: string;
564
- /** Флаг блокировки действия (true, если вызов запрещён) */
565
- blocked?: boolean;
566
- }
567
-
568
575
  /**
569
576
  * Интерфейс store для менеджеров и хендлеров, которые позволяют работать с Select фичей,
570
577
  * необходим для корректного взаимодействия между группами фичей.
@@ -687,6 +694,7 @@ export declare class ObjLoader {
687
694
  * @class
688
695
  */
689
696
  export declare class Renderer implements IRendererAccess, IRendererCameraAccess, IRendererDomAccess, IRendererSceneAccess, IRenderable, Disposable_2 {
697
+ private readonly _config;
690
698
  /**
691
699
  * Корневой объект сцены Three.js.
692
700
  *
@@ -719,22 +727,19 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
719
727
  * Конструктор рендерера.
720
728
  *
721
729
  * @param _canvas - HTMLCanvasElement для рендеринга
730
+ * @param _config - Конфиг для настройки рендерера
722
731
  *
723
732
  * @remarks
724
- * Инициализирует сцену с тёмным фоном, перспективную камеру
725
- * (45° FOV, near 0.1, far 1000) и базовое освещение:
726
- * - `AmbientLight` (0xffffff, 0.5) — общий свет
727
- * - `DirectionalLight` (0xffffff, 1) — направленный свет
733
+ * Инициализирует сцену, камеру, WebGLRenderer и базовое освещение
734
+ * на основе переданного `RendererConfig`.
728
735
  *
729
- * @example
730
- * ```typescript
731
- * const renderer = new Renderer(canvas);
732
- * ```
736
+ * По умолчанию используется тёмный фон, перспективная камера
737
+ * и два источника света: AmbientLight и DirectionalLight.
733
738
  *
734
739
  * @public
735
740
  * @constructor
736
741
  */
737
- constructor(_canvas: HTMLCanvasElement);
742
+ constructor(_canvas: HTMLCanvasElement, _config: RendererConfig);
738
743
  /**
739
744
  * Обновляет размер рендерера и пропорции камеры.
740
745
  *
@@ -746,7 +751,7 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
746
751
  * window.addEventListener('resize', () => renderer.resize());
747
752
  * ```
748
753
  *
749
- * @oublic
754
+ * @public
750
755
  * @method
751
756
  */
752
757
  resize(): void;
@@ -807,30 +812,35 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
807
812
  dispose(): Promise<void> | void;
808
813
  }
809
814
 
810
- /**
811
- * Enum типов ответа от менеджеров и политик.
812
- *
813
- * @remarks
814
- * Используется в `IResponse.type`.
815
- *
816
- * @public
817
- * @enum
818
- */
819
- declare enum ResponseType_2 {
820
- /** Действие заблокировано, инструмент недоступен */
821
- ToolNotAllowed = "TOOL_NOT_ALLOWED",
822
- /** Действие выполнено успешно */
823
- Success = "SUCCESS",
824
- /** Действие не выполнено, потому что нет изменений */
825
- NoChange = "NO_CHANGE",
826
- Error = "ERROR"
827
- }
828
- export { ResponseType_2 as ResponseType }
829
-
830
815
  /** @public */
831
816
  export declare type SelectedListener = (obj: THREE.Object3D | null) => void;
832
817
 
833
818
  /** @public */
834
819
  export declare type TransformListener = () => void;
835
820
 
821
+ /**
822
+ * Хаб для управления вьювером
823
+ * @public
824
+ */
825
+ export declare class ViewerHub implements Disposable_2 {
826
+ private _renderer;
827
+ private _mediator;
828
+ private _controller;
829
+ constructor(_renderer: Renderer, _mediator: IMediator, _controller: IController);
830
+ addFigure(figure: FigureType): IResponse | null;
831
+ loadFigure(content: string): IResponse | null;
832
+ loadScene(content: string): IResponse | null;
833
+ resizeRenderer(): void;
834
+ /**
835
+ * Запускает вьювер.
836
+ * Вызывается после создания хаба.
837
+ */
838
+ start(): void;
839
+ /**
840
+ * Останавливает вьювер.
841
+ */
842
+ stop(): void;
843
+ dispose(): Promise<void> | void;
844
+ }
845
+
836
846
  export { }
@@ -1,9 +1,13 @@
1
1
  import { DisplayMode } from '@planara/types';
2
2
  import { Disposable as Disposable_2 } from 'tsyringe';
3
+ import { ExportResult } from '@planara/types';
4
+ import { ExportSceneResult } from '@planara/types';
3
5
  import { Figure } from '@planara/types';
4
6
  import { FigureTransform } from '@planara/types';
5
7
  import { FigureType } from '@planara/types';
6
- import { SceneMode } from '@planara/types';
8
+ import { IResponse } from '@planara/types';
9
+ import { RendererConfig } from '@planara/types';
10
+ import { RendererConfigInput } from '@planara/types';
7
11
  import { SelectMode } from '@planara/types';
8
12
  import * as THREE from 'three';
9
13
  import { ToolType } from '@planara/types';
@@ -23,7 +27,14 @@ export declare type CameraPosition = {
23
27
  * Вызывать один раз при старте (когда есть canvas).
24
28
  * @public
25
29
  */
26
- export declare const createAppHub: (canvas: HTMLCanvasElement) => EditorHub;
30
+ export declare const createEditorHub: (canvas: HTMLCanvasElement, rendererConfig?: RendererConfigInput) => EditorHub;
31
+
32
+ /**
33
+ * Инициализирует вьювер и возвращает хаб.
34
+ * Вызывать один раз при старте (когда есть canvas).
35
+ * @public
36
+ */
37
+ export declare const createViewerHub: (canvas: HTMLCanvasElement, rendererConfig?: RendererConfigInput) => ViewerHub;
27
38
 
28
39
  /**
29
40
  * Типы событий редактора.
@@ -51,13 +62,17 @@ export declare class EditorHub implements Disposable_2 {
51
62
  private _renderer;
52
63
  private _mediator;
53
64
  private _store;
65
+ private _exportStore;
54
66
  private _controller;
55
- constructor(_renderer: Renderer, _mediator: IMediator, _store: ITransformStore, _controller: IController);
67
+ constructor(_renderer: Renderer, _mediator: IMediator, _store: ITransformStore, _exportStore: IExportStore, _controller: IController);
56
68
  setDisplayMode(mode: DisplayMode): IResponse | null;
57
- setSceneMode(mode: SceneMode): IResponse | null;
58
69
  setSelectMode(mode: SelectMode): IResponse | null;
59
70
  setToolMode(mode: ToolType): IResponse | null;
60
- addFigure(mode: SceneMode, figure: FigureType): IResponse | null;
71
+ addFigure(figure: FigureType): IResponse | null;
72
+ deleteFigure(): IResponse | null;
73
+ loadFigure(content: string): IResponse | null;
74
+ loadScene(content: string): IResponse | null;
75
+ exportScene(): ExportSceneResult;
61
76
  resizeRenderer(): void;
62
77
  /**
63
78
  * Запускает редактор.
@@ -220,7 +235,13 @@ export declare enum FeatureType {
220
235
  * Возвращает уже созданный хаб, если редактор инициализирован.
221
236
  * @public
222
237
  */
223
- export declare const getAppHub: () => EditorHub;
238
+ export declare const getEditorHub: () => EditorHub;
239
+
240
+ /**
241
+ * Возвращает уже созданный хаб, если редактор инициализирован.
242
+ * @public
243
+ */
244
+ export declare const getViewerHub: () => ViewerHub;
224
245
 
225
246
  /**
226
247
  * @public
@@ -287,6 +308,13 @@ export declare interface IDisplayStore {
287
308
  setDisplayMode(mode: DisplayMode): void;
288
309
  }
289
310
 
311
+ /** @public */
312
+ export declare interface IExportStore {
313
+ setResult(result: ExportResult): void;
314
+ getResult(): ExportResult | null;
315
+ clearResult(): void;
316
+ }
317
+
290
318
  /**
291
319
  * Интерфейс медиатора команд редактора.
292
320
  *
@@ -544,27 +572,6 @@ export declare interface IRendererSceneAccess {
544
572
  getScene(): THREE.Scene;
545
573
  }
546
574
 
547
- /**
548
- * Тип ответа от менеджеров или политик редактора.
549
- *
550
- * @remarks
551
- * Используется для единого API на уровне Hub.
552
- * Все менеджеры возвращают `Response`, чтобы клиент знал статус вызова.
553
- *
554
- * @public
555
- * @interface
556
- */
557
- export declare interface IResponse {
558
- /** Тип ответа (enum ResponseType) */
559
- type: ResponseType_2;
560
- /** Читаемое сообщение для отображения или логирования */
561
- message: string;
562
- /** Строковый код для логов или интеграций (опционально) */
563
- code?: string;
564
- /** Флаг блокировки действия (true, если вызов запрещён) */
565
- blocked?: boolean;
566
- }
567
-
568
575
  /**
569
576
  * Интерфейс store для менеджеров и хендлеров, которые позволяют работать с Select фичей,
570
577
  * необходим для корректного взаимодействия между группами фичей.
@@ -687,6 +694,7 @@ export declare class ObjLoader {
687
694
  * @class
688
695
  */
689
696
  export declare class Renderer implements IRendererAccess, IRendererCameraAccess, IRendererDomAccess, IRendererSceneAccess, IRenderable, Disposable_2 {
697
+ private readonly _config;
690
698
  /**
691
699
  * Корневой объект сцены Three.js.
692
700
  *
@@ -719,22 +727,19 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
719
727
  * Конструктор рендерера.
720
728
  *
721
729
  * @param _canvas - HTMLCanvasElement для рендеринга
730
+ * @param _config - Конфиг для настройки рендерера
722
731
  *
723
732
  * @remarks
724
- * Инициализирует сцену с тёмным фоном, перспективную камеру
725
- * (45° FOV, near 0.1, far 1000) и базовое освещение:
726
- * - `AmbientLight` (0xffffff, 0.5) — общий свет
727
- * - `DirectionalLight` (0xffffff, 1) — направленный свет
733
+ * Инициализирует сцену, камеру, WebGLRenderer и базовое освещение
734
+ * на основе переданного `RendererConfig`.
728
735
  *
729
- * @example
730
- * ```typescript
731
- * const renderer = new Renderer(canvas);
732
- * ```
736
+ * По умолчанию используется тёмный фон, перспективная камера
737
+ * и два источника света: AmbientLight и DirectionalLight.
733
738
  *
734
739
  * @public
735
740
  * @constructor
736
741
  */
737
- constructor(_canvas: HTMLCanvasElement);
742
+ constructor(_canvas: HTMLCanvasElement, _config: RendererConfig);
738
743
  /**
739
744
  * Обновляет размер рендерера и пропорции камеры.
740
745
  *
@@ -746,7 +751,7 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
746
751
  * window.addEventListener('resize', () => renderer.resize());
747
752
  * ```
748
753
  *
749
- * @oublic
754
+ * @public
750
755
  * @method
751
756
  */
752
757
  resize(): void;
@@ -807,30 +812,35 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
807
812
  dispose(): Promise<void> | void;
808
813
  }
809
814
 
810
- /**
811
- * Enum типов ответа от менеджеров и политик.
812
- *
813
- * @remarks
814
- * Используется в `IResponse.type`.
815
- *
816
- * @public
817
- * @enum
818
- */
819
- declare enum ResponseType_2 {
820
- /** Действие заблокировано, инструмент недоступен */
821
- ToolNotAllowed = "TOOL_NOT_ALLOWED",
822
- /** Действие выполнено успешно */
823
- Success = "SUCCESS",
824
- /** Действие не выполнено, потому что нет изменений */
825
- NoChange = "NO_CHANGE",
826
- Error = "ERROR"
827
- }
828
- export { ResponseType_2 as ResponseType }
829
-
830
815
  /** @public */
831
816
  export declare type SelectedListener = (obj: THREE.Object3D | null) => void;
832
817
 
833
818
  /** @public */
834
819
  export declare type TransformListener = () => void;
835
820
 
821
+ /**
822
+ * Хаб для управления вьювером
823
+ * @public
824
+ */
825
+ export declare class ViewerHub implements Disposable_2 {
826
+ private _renderer;
827
+ private _mediator;
828
+ private _controller;
829
+ constructor(_renderer: Renderer, _mediator: IMediator, _controller: IController);
830
+ addFigure(figure: FigureType): IResponse | null;
831
+ loadFigure(content: string): IResponse | null;
832
+ loadScene(content: string): IResponse | null;
833
+ resizeRenderer(): void;
834
+ /**
835
+ * Запускает вьювер.
836
+ * Вызывается после создания хаба.
837
+ */
838
+ start(): void;
839
+ /**
840
+ * Останавливает вьювер.
841
+ */
842
+ stop(): void;
843
+ dispose(): Promise<void> | void;
844
+ }
845
+
836
846
  export { }