@planara/core 2.8.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 (283) hide show
  1. package/README.md +5 -0
  2. package/dist/api/modules/controls-state-api.d.ts +23 -0
  3. package/dist/api/modules/controls-state-api.d.ts.map +1 -0
  4. package/dist/api/modules/index.d.ts +5 -0
  5. package/dist/api/modules/index.d.ts.map +1 -0
  6. package/dist/api/modules/mesh-api.d.ts +30 -0
  7. package/dist/api/modules/mesh-api.d.ts.map +1 -0
  8. package/dist/api/modules/raycast-api.d.ts +28 -0
  9. package/dist/api/modules/raycast-api.d.ts.map +1 -0
  10. package/dist/api/modules/transform-api.d.ts +33 -0
  11. package/dist/api/modules/transform-api.d.ts.map +1 -0
  12. package/dist/api/renderer/camera-api.d.ts +26 -0
  13. package/dist/api/renderer/camera-api.d.ts.map +1 -0
  14. package/dist/api/renderer/dom-api.d.ts +24 -0
  15. package/dist/api/renderer/dom-api.d.ts.map +1 -0
  16. package/dist/api/renderer/index.d.ts +4 -0
  17. package/dist/api/renderer/index.d.ts.map +1 -0
  18. package/dist/api/renderer/scene-api.d.ts +26 -0
  19. package/dist/api/renderer/scene-api.d.ts.map +1 -0
  20. package/dist/constants/colors.d.ts +12 -0
  21. package/dist/constants/colors.d.ts.map +1 -1
  22. package/dist/constants/figure-geometries.d.ts +55 -4
  23. package/dist/constants/figure-geometries.d.ts.map +1 -1
  24. package/dist/constants/index.d.ts +6 -0
  25. package/dist/constants/index.d.ts.map +1 -0
  26. package/dist/constants/layers.d.ts +12 -0
  27. package/dist/constants/layers.d.ts.map +1 -1
  28. package/dist/constants/messages.d.ts +18 -0
  29. package/dist/constants/messages.d.ts.map +1 -0
  30. package/dist/constants/threshold.d.ts +42 -2
  31. package/dist/constants/threshold.d.ts.map +1 -1
  32. package/dist/controllers/index.d.ts +2 -0
  33. package/dist/controllers/index.d.ts.map +1 -0
  34. package/dist/controllers/renderer-controller.d.ts +72 -0
  35. package/dist/controllers/renderer-controller.d.ts.map +1 -0
  36. package/dist/core/index.d.ts +2 -0
  37. package/dist/core/index.d.ts.map +1 -0
  38. package/dist/core/renderer.d.ts +105 -78
  39. package/dist/core/renderer.d.ts.map +1 -1
  40. package/dist/decorators/index.d.ts +3 -0
  41. package/dist/decorators/index.d.ts.map +1 -0
  42. package/dist/decorators/use-policy.d.ts +5 -0
  43. package/dist/decorators/use-policy.d.ts.map +1 -0
  44. package/dist/decorators/use-validator.d.ts +5 -0
  45. package/dist/decorators/use-validator.d.ts.map +1 -0
  46. package/dist/errors/index.d.ts +3 -0
  47. package/dist/errors/index.d.ts.map +1 -0
  48. package/dist/errors/policy-error.d.ts +9 -0
  49. package/dist/errors/policy-error.d.ts.map +1 -0
  50. package/dist/errors/validation-error.d.ts +9 -0
  51. package/dist/errors/validation-error.d.ts.map +1 -0
  52. package/dist/events/editor-events.d.ts +3 -7
  53. package/dist/events/editor-events.d.ts.map +1 -1
  54. package/dist/events/event-bus.d.ts +103 -6
  55. package/dist/events/event-bus.d.ts.map +1 -1
  56. package/dist/events/event-topics.d.ts +3 -3
  57. package/dist/events/event-topics.d.ts.map +1 -1
  58. package/dist/events/index.d.ts +4 -0
  59. package/dist/events/index.d.ts.map +1 -0
  60. package/dist/handlers/display/index.d.ts +2 -0
  61. package/dist/handlers/display/index.d.ts.map +1 -0
  62. package/dist/handlers/display/wireframe-handler.d.ts +4 -2
  63. package/dist/handlers/display/wireframe-handler.d.ts.map +1 -1
  64. package/dist/handlers/scene/add-figure-scene-handler.d.ts +4 -2
  65. package/dist/handlers/scene/add-figure-scene-handler.d.ts.map +1 -1
  66. package/dist/handlers/scene/delete-figure-scene-handler.d.ts +4 -4
  67. package/dist/handlers/scene/delete-figure-scene-handler.d.ts.map +1 -1
  68. package/dist/handlers/scene/export-scene-handler.d.ts +23 -0
  69. package/dist/handlers/scene/export-scene-handler.d.ts.map +1 -0
  70. package/dist/handlers/scene/index.d.ts +6 -0
  71. package/dist/handlers/scene/index.d.ts.map +1 -0
  72. package/dist/handlers/scene/load-figure-scene-handler.d.ts +23 -0
  73. package/dist/handlers/scene/load-figure-scene-handler.d.ts.map +1 -0
  74. package/dist/handlers/scene/load-scene-handler.d.ts +23 -0
  75. package/dist/handlers/scene/load-scene-handler.d.ts.map +1 -0
  76. package/dist/handlers/select/edge-select-handler.d.ts +11 -8
  77. package/dist/handlers/select/edge-select-handler.d.ts.map +1 -1
  78. package/dist/handlers/select/face-select-handler.d.ts +11 -8
  79. package/dist/handlers/select/face-select-handler.d.ts.map +1 -1
  80. package/dist/handlers/select/index.d.ts +5 -0
  81. package/dist/handlers/select/index.d.ts.map +1 -0
  82. package/dist/handlers/select/mesh-select-handler.d.ts +8 -7
  83. package/dist/handlers/select/mesh-select-handler.d.ts.map +1 -1
  84. package/dist/handlers/select/vertex-select-handler.d.ts +11 -8
  85. package/dist/handlers/select/vertex-select-handler.d.ts.map +1 -1
  86. package/dist/handlers/tool/base-tool-handler.d.ts +10 -7
  87. package/dist/handlers/tool/base-tool-handler.d.ts.map +1 -1
  88. package/dist/handlers/tool/index.d.ts +4 -0
  89. package/dist/handlers/tool/index.d.ts.map +1 -0
  90. package/dist/handlers/tool/rotate-tool-handler.d.ts +4 -3
  91. package/dist/handlers/tool/rotate-tool-handler.d.ts.map +1 -1
  92. package/dist/handlers/tool/scale-tool-handler.d.ts +4 -3
  93. package/dist/handlers/tool/scale-tool-handler.d.ts.map +1 -1
  94. package/dist/handlers/tool/translate-tool-handler.d.ts +4 -3
  95. package/dist/handlers/tool/translate-tool-handler.d.ts.map +1 -1
  96. package/dist/hub/editor-hub.d.ts +26 -18
  97. package/dist/hub/editor-hub.d.ts.map +1 -1
  98. package/dist/hub/index.d.ts +26 -0
  99. package/dist/hub/index.d.ts.map +1 -0
  100. package/dist/hub/viewer-hub.d.ts +30 -0
  101. package/dist/hub/viewer-hub.d.ts.map +1 -0
  102. package/dist/index.cjs.js +20 -2
  103. package/dist/index.d.ts +16 -9
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.es.js +2615 -1627
  106. package/dist/index.full.d.ts +650 -245
  107. package/dist/index.public.d.ts +665 -160
  108. package/dist/index.umd.js +20 -2
  109. package/dist/interfaces/api/camera-api.d.ts +64 -0
  110. package/dist/interfaces/api/camera-api.d.ts.map +1 -0
  111. package/dist/interfaces/api/controls-state-api.d.ts +63 -0
  112. package/dist/interfaces/api/controls-state-api.d.ts.map +1 -0
  113. package/dist/interfaces/api/dom-api.d.ts +49 -0
  114. package/dist/interfaces/api/dom-api.d.ts.map +1 -0
  115. package/dist/interfaces/api/index.d.ts +9 -0
  116. package/dist/interfaces/api/index.d.ts.map +1 -0
  117. package/dist/interfaces/api/mesh-api.d.ts +93 -12
  118. package/dist/interfaces/api/mesh-api.d.ts.map +1 -1
  119. package/dist/interfaces/api/raycast-api.d.ts +6 -1
  120. package/dist/interfaces/api/raycast-api.d.ts.map +1 -1
  121. package/dist/interfaces/api/renderer/index.d.ts +6 -0
  122. package/dist/interfaces/api/renderer/index.d.ts.map +1 -0
  123. package/dist/interfaces/api/renderer/renderable.d.ts +45 -0
  124. package/dist/interfaces/api/renderer/renderable.d.ts.map +1 -0
  125. package/dist/interfaces/api/renderer/renderer-access.d.ts +34 -0
  126. package/dist/interfaces/api/renderer/renderer-access.d.ts.map +1 -0
  127. package/dist/interfaces/api/renderer/renderer-camera-access.d.ts +37 -0
  128. package/dist/interfaces/api/renderer/renderer-camera-access.d.ts.map +1 -0
  129. package/dist/interfaces/api/renderer/renderer-dom-access.d.ts +51 -0
  130. package/dist/interfaces/api/renderer/renderer-dom-access.d.ts.map +1 -0
  131. package/dist/interfaces/api/renderer/renderer-scene-access.d.ts +45 -0
  132. package/dist/interfaces/api/renderer/renderer-scene-access.d.ts.map +1 -0
  133. package/dist/interfaces/api/renderer-api.d.ts +35 -0
  134. package/dist/interfaces/api/renderer-api.d.ts.map +1 -0
  135. package/dist/interfaces/api/scene-api.d.ts +66 -26
  136. package/dist/interfaces/api/scene-api.d.ts.map +1 -1
  137. package/dist/interfaces/api/transform-api.d.ts +120 -0
  138. package/dist/interfaces/api/transform-api.d.ts.map +1 -0
  139. package/dist/interfaces/command/index.d.ts +9 -0
  140. package/dist/interfaces/command/index.d.ts.map +1 -0
  141. package/dist/interfaces/controller/index.d.ts +38 -0
  142. package/dist/interfaces/controller/index.d.ts.map +1 -0
  143. package/dist/interfaces/handler/display-handler.d.ts +9 -1
  144. package/dist/interfaces/handler/display-handler.d.ts.map +1 -1
  145. package/dist/interfaces/handler/handler.d.ts +2 -0
  146. package/dist/interfaces/handler/handler.d.ts.map +1 -1
  147. package/dist/interfaces/handler/index.d.ts +6 -0
  148. package/dist/interfaces/handler/index.d.ts.map +1 -0
  149. package/dist/interfaces/handler/scene-handler.d.ts +1 -0
  150. package/dist/interfaces/handler/scene-handler.d.ts.map +1 -1
  151. package/dist/interfaces/handler/select-handler.d.ts +1 -0
  152. package/dist/interfaces/handler/select-handler.d.ts.map +1 -1
  153. package/dist/interfaces/handler/tool-handler.d.ts +1 -0
  154. package/dist/interfaces/handler/tool-handler.d.ts.map +1 -1
  155. package/dist/interfaces/manager/display-manager.d.ts +3 -1
  156. package/dist/interfaces/manager/display-manager.d.ts.map +1 -1
  157. package/dist/interfaces/manager/index.d.ts +6 -0
  158. package/dist/interfaces/manager/index.d.ts.map +1 -0
  159. package/dist/interfaces/manager/manager.d.ts +12 -1
  160. package/dist/interfaces/manager/manager.d.ts.map +1 -1
  161. package/dist/interfaces/manager/scene-manager.d.ts +3 -1
  162. package/dist/interfaces/manager/scene-manager.d.ts.map +1 -1
  163. package/dist/interfaces/manager/select-manager.d.ts +3 -1
  164. package/dist/interfaces/manager/select-manager.d.ts.map +1 -1
  165. package/dist/interfaces/manager/tool-manager.d.ts +3 -1
  166. package/dist/interfaces/manager/tool-manager.d.ts.map +1 -1
  167. package/dist/interfaces/mediator/index.d.ts +51 -0
  168. package/dist/interfaces/mediator/index.d.ts.map +1 -0
  169. package/dist/interfaces/middleware/index.d.ts +50 -0
  170. package/dist/interfaces/middleware/index.d.ts.map +1 -0
  171. package/dist/interfaces/module/index.d.ts +4 -0
  172. package/dist/interfaces/module/index.d.ts.map +1 -0
  173. package/dist/interfaces/module/renderable-module.d.ts +27 -0
  174. package/dist/interfaces/module/renderable-module.d.ts.map +1 -0
  175. package/dist/interfaces/module/runtime-module.d.ts +54 -0
  176. package/dist/interfaces/module/runtime-module.d.ts.map +1 -0
  177. package/dist/interfaces/module/updatable-module.d.ts +48 -0
  178. package/dist/interfaces/module/updatable-module.d.ts.map +1 -0
  179. package/dist/interfaces/policy/index.d.ts +21 -0
  180. package/dist/interfaces/policy/index.d.ts.map +1 -0
  181. package/dist/interfaces/store/display-store.d.ts +21 -0
  182. package/dist/interfaces/store/display-store.d.ts.map +1 -0
  183. package/dist/interfaces/store/export-store.d.ts +8 -0
  184. package/dist/interfaces/store/export-store.d.ts.map +1 -0
  185. package/dist/interfaces/store/index.d.ts +6 -0
  186. package/dist/interfaces/store/index.d.ts.map +1 -0
  187. package/dist/interfaces/store/select-store.d.ts +44 -0
  188. package/dist/interfaces/store/select-store.d.ts.map +1 -0
  189. package/dist/interfaces/store/tool-store.d.ts +27 -0
  190. package/dist/interfaces/store/tool-store.d.ts.map +1 -0
  191. package/dist/interfaces/store/transform-store.d.ts +11 -0
  192. package/dist/interfaces/store/transform-store.d.ts.map +1 -0
  193. package/dist/interfaces/validator/index.d.ts +21 -0
  194. package/dist/interfaces/validator/index.d.ts.map +1 -0
  195. package/dist/ioc/container.d.ts +3 -1
  196. package/dist/ioc/container.d.ts.map +1 -1
  197. package/dist/managers/display/display-manager.d.ts +7 -4
  198. package/dist/managers/display/display-manager.d.ts.map +1 -1
  199. package/dist/managers/display/index.d.ts +2 -0
  200. package/dist/managers/display/index.d.ts.map +1 -0
  201. package/dist/managers/index.d.ts +5 -0
  202. package/dist/managers/index.d.ts.map +1 -0
  203. package/dist/managers/scene/index.d.ts +2 -0
  204. package/dist/managers/scene/index.d.ts.map +1 -0
  205. package/dist/managers/scene/scene-manager.d.ts +7 -4
  206. package/dist/managers/scene/scene-manager.d.ts.map +1 -1
  207. package/dist/managers/select/index.d.ts +2 -0
  208. package/dist/managers/select/index.d.ts.map +1 -0
  209. package/dist/managers/select/select-manager.d.ts +8 -5
  210. package/dist/managers/select/select-manager.d.ts.map +1 -1
  211. package/dist/managers/tool/index.d.ts +2 -0
  212. package/dist/managers/tool/index.d.ts.map +1 -0
  213. package/dist/managers/tool/tool-manager.d.ts +9 -6
  214. package/dist/managers/tool/tool-manager.d.ts.map +1 -1
  215. package/dist/mediator/index.d.ts +14 -0
  216. package/dist/mediator/index.d.ts.map +1 -0
  217. package/dist/middlewares/exception-middleware.d.ts +12 -0
  218. package/dist/middlewares/exception-middleware.d.ts.map +1 -0
  219. package/dist/middlewares/index.d.ts +2 -0
  220. package/dist/middlewares/index.d.ts.map +1 -0
  221. package/dist/modules/controls-module.d.ts +60 -0
  222. package/dist/modules/controls-module.d.ts.map +1 -0
  223. package/dist/modules/gizmo-module.d.ts +32 -0
  224. package/dist/modules/gizmo-module.d.ts.map +1 -0
  225. package/dist/modules/index.d.ts +6 -0
  226. package/dist/modules/index.d.ts.map +1 -0
  227. package/dist/modules/raycast-module.d.ts +87 -0
  228. package/dist/modules/raycast-module.d.ts.map +1 -0
  229. package/dist/modules/scene-module.d.ts +31 -0
  230. package/dist/modules/scene-module.d.ts.map +1 -0
  231. package/dist/modules/scene-preview-module.d.ts +26 -0
  232. package/dist/modules/scene-preview-module.d.ts.map +1 -0
  233. package/dist/policy/index.d.ts +2 -0
  234. package/dist/policy/index.d.ts.map +1 -0
  235. package/dist/policy/tool-policy.d.ts +18 -0
  236. package/dist/policy/tool-policy.d.ts.map +1 -0
  237. package/dist/store/editor-store.d.ts +33 -0
  238. package/dist/store/editor-store.d.ts.map +1 -0
  239. package/dist/store/export-store.d.ts +12 -0
  240. package/dist/store/export-store.d.ts.map +1 -0
  241. package/dist/store/index.d.ts +2 -45
  242. package/dist/store/index.d.ts.map +1 -1
  243. package/dist/types/camera/index.d.ts +2 -0
  244. package/dist/types/camera/index.d.ts.map +1 -0
  245. package/dist/types/event/index.d.ts +2 -0
  246. package/dist/types/event/index.d.ts.map +1 -0
  247. package/dist/types/feature/feature-type.d.ts +16 -0
  248. package/dist/types/feature/feature-type.d.ts.map +1 -0
  249. package/dist/types/feature/index.d.ts +2 -0
  250. package/dist/types/feature/index.d.ts.map +1 -0
  251. package/dist/types/listener/index.d.ts +3 -0
  252. package/dist/types/listener/index.d.ts.map +1 -0
  253. package/dist/types/select/index.d.ts +2 -0
  254. package/dist/types/select/index.d.ts.map +1 -0
  255. package/dist/utils/default-renderer-config.d.ts +9 -0
  256. package/dist/utils/default-renderer-config.d.ts.map +1 -0
  257. package/dist/utils/helpers.d.ts +14 -1
  258. package/dist/utils/helpers.d.ts.map +1 -1
  259. package/dist/utils/index.d.ts +3 -0
  260. package/dist/utils/index.d.ts.map +1 -0
  261. package/dist/validators/index.d.ts +2 -0
  262. package/dist/validators/index.d.ts.map +1 -0
  263. package/dist/validators/obj-validator.d.ts +12 -0
  264. package/dist/validators/obj-validator.d.ts.map +1 -0
  265. package/package.json +2 -2
  266. package/dist/core/editor-renderer.d.ts +0 -89
  267. package/dist/core/editor-renderer.d.ts.map +0 -1
  268. package/dist/core/preview-renderer.d.ts +0 -16
  269. package/dist/core/preview-renderer.d.ts.map +0 -1
  270. package/dist/hub/app-hub.d.ts +0 -13
  271. package/dist/hub/app-hub.d.ts.map +0 -1
  272. package/dist/interfaces/api/transform-helpers-api.d.ts +0 -26
  273. package/dist/interfaces/api/transform-helpers-api.d.ts.map +0 -1
  274. package/dist/interfaces/policy/tool-availability-policy.d.ts +0 -12
  275. package/dist/interfaces/policy/tool-availability-policy.d.ts.map +0 -1
  276. package/dist/interfaces/store/editor-store.d.ts +0 -52
  277. package/dist/interfaces/store/editor-store.d.ts.map +0 -1
  278. package/dist/policy/tool-availability-policy.d.ts +0 -13
  279. package/dist/policy/tool-availability-policy.d.ts.map +0 -1
  280. package/dist/types/api/editor-api.d.ts +0 -4
  281. package/dist/types/api/editor-api.d.ts.map +0 -1
  282. package/dist/utils/renderer-api.d.ts +0 -43
  283. package/dist/utils/renderer-api.d.ts.map +0 -1
@@ -0,0 +1,120 @@
1
+ import { ToolType } from '@planara/types';
2
+ import { TransformListener } from '../../types/listener';
3
+ import * as THREE from 'three';
4
+ /**
5
+ * API для взаимодействия и настройки элементов управления сценой.
6
+ *
7
+ * @remarks
8
+ * Предоставляет методы для работы с TransformControls:
9
+ * - прикрепление/открепление контролов к объектам
10
+ * - смена режима трансформации (перемещение, вращение, масштабирование)
11
+ * - подписка на события изменения трансформации
12
+ *
13
+ * Используется хендлерами инструментов (Translate, Rotate, Scale)
14
+ * для управления гизмо и отслеживания изменений.
15
+ *
16
+ * @see {@link ControlsModule} - реализация этого интерфейса
17
+ * @see {@link TransformListener} - тип слушателя событий трансформации
18
+ *
19
+ * @internal
20
+ * @interface
21
+ */
22
+ export interface ITransformApi {
23
+ /**
24
+ * Прикрепляет Transform Controls к объекту сцены.
25
+ *
26
+ * @param object - объект Three.js, к которому нужно прикрепить контролы
27
+ *
28
+ * @remarks
29
+ * После вызова этого метода на объекте появляется гизмо
30
+ * (стрелки, дуги, квадраты), с помощью которого можно
31
+ * перемещать, вращать или масштабировать объект.
32
+ *
33
+ * Если контролы уже прикреплены к другому объекту,
34
+ * они автоматически переключатся на новый.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const mesh = sceneApi.getSelectedMesh();
39
+ * controlsApi.attachTransform(mesh);
40
+ * ```
41
+ *
42
+ * @internal
43
+ * @method
44
+ */
45
+ attachTransform(object: THREE.Object3D): void;
46
+ /**
47
+ * Открепляет Transform Controls от текущего объекта.
48
+ *
49
+ * @remarks
50
+ * Гизмо исчезает, объект перестаёт быть доступным для
51
+ * интерактивной трансформации.
52
+ *
53
+ * Обычно вызывается при смене инструмента или при снятии выделения.
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * // При смене инструмента
58
+ * public rollback(): void {
59
+ * this.controlsApi.detachTransform();
60
+ * }
61
+ * ```
62
+ *
63
+ * @internal
64
+ * @method
65
+ */
66
+ detachTransform(): void;
67
+ /**
68
+ * Изменяет режим трансформации гизмо.
69
+ *
70
+ * @param mode - режим трансформации (Translate, Rotate, Scale)
71
+ *
72
+ * @remarks
73
+ * В зависимости от режима, гизмо отображает разные контролы:
74
+ * - `Translate` - стрелки для перемещения
75
+ * - `Rotate` - дуги для вращения
76
+ * - `Scale` - квадраты для масштабирования
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * // Переключение на режим вращения
81
+ * controlsApi.setTransformMode(ToolType.Rotate);
82
+ * ```
83
+ *
84
+ * @internal
85
+ */
86
+ setTransformMode(mode: ToolType): void;
87
+ /**
88
+ * Подписывает слушателя на события изменения трансформации.
89
+ *
90
+ * @param callback - функция, которая будет вызвана при изменении
91
+ * @returns функция для отписки от события
92
+ *
93
+ * @remarks
94
+ * Событие генерируется в процессе взаимодействия пользователя с гизмо
95
+ * (перемещение, вращение, масштабирование).
96
+ *
97
+ * Возвращаемая функция позволяет отписаться от события:
98
+ * ```typescript
99
+ * const unsubscribe = controlsApi.onTransformChange(() => {
100
+ * console.log('Object transformed');
101
+ * });
102
+ *
103
+ * // позже
104
+ * unsubscribe();
105
+ * ```
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * // Подписка на изменение трансформации
110
+ * this.unsubscribe = this.controlsApi.onTransformChange(() => {
111
+ * this.store.notifySelectedTransformChange();
112
+ * });
113
+ * ```
114
+ *
115
+ * @internal
116
+ * @method
117
+ */
118
+ onTransformChange(callback: TransformListener): () => void;
119
+ }
120
+ //# sourceMappingURL=transform-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-api.d.ts","sourceRoot":"","sources":["../../../src/interfaces/api/transform-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IAE9C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,IAAI,IAAI,CAAC;IAExB;;;;;;;;;;;;;;;;;;OAkBG;IACH,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAC;CAC5D"}
@@ -0,0 +1,9 @@
1
+ import { FeatureType } from '../../types/feature';
2
+ /**
3
+ * @public
4
+ */
5
+ export interface ICommand {
6
+ type: FeatureType;
7
+ payload: unknown[];
8
+ }
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/command/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB"}
@@ -0,0 +1,38 @@
1
+ import { Disposable } from 'tsyringe';
2
+ /**
3
+ * Интерфейс для контроллера, управляющего жизненным циклом модулей.
4
+ *
5
+ * @remarks
6
+ * Контроллер отвечает за:
7
+ * - инициализацию модулей (`IRuntimeModule`)
8
+ * - запуск цикла рендеринга
9
+ * - обновление модулей каждый кадр (`IUpdatableModule`)
10
+ * - рендеринг модулей (`IRenderableModule`)
11
+ * - остановку и очистку ресурсов
12
+ *
13
+ * @public
14
+ * @interface
15
+ */
16
+ export interface IController extends Disposable {
17
+ /**
18
+ * Запускает контроллер.
19
+ *
20
+ * @remarks
21
+ * Инициализирует все модули и запускает цикл рендеринга.
22
+ *
23
+ * @public
24
+ * @method
25
+ */
26
+ start(): void;
27
+ /**
28
+ * Останавливает контроллер.
29
+ *
30
+ * @remarks
31
+ * Останавливает цикл рендеринга и освобождает ресурсы.
32
+ *
33
+ * @public
34
+ * @method
35
+ */
36
+ stop(): void;
37
+ }
38
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/controller/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C;;;;;;;;OAQG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;;;;;;;OAQG;IACH,IAAI,IAAI,IAAI,CAAC;CACd"}
@@ -4,11 +4,19 @@ import { DisplayMode } from '@planara/types';
4
4
  * Маркерный интерфейс для всех Display-хендлеров.
5
5
  * Используется только для DI.
6
6
  *
7
+ * @remarks
7
8
  * Расширяет {@link IHandler} и добавляет поле `mode`
9
+ *
8
10
  * @internal
11
+ * @interface
9
12
  */
10
13
  export interface IDisplayHandler extends IHandler {
11
- /** Режим отображения, за который отвечает хендлер */
14
+ /**
15
+ * Режим отображения, за который отвечает хендлер.
16
+ *
17
+ * @internal
18
+ * @member
19
+ */
12
20
  mode: DisplayMode;
13
21
  }
14
22
  //# sourceMappingURL=display-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"display-handler.d.ts","sourceRoot":"","sources":["../../../src/interfaces/handler/display-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C,qDAAqD;IACrD,IAAI,EAAE,WAAW,CAAC;CACnB"}
1
+ {"version":3,"file":"display-handler.d.ts","sourceRoot":"","sources":["../../../src/interfaces/handler/display-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C;;;;;OAKG;IACH,IAAI,EAAE,WAAW,CAAC;CACnB"}
@@ -3,7 +3,9 @@ import { Disposable } from 'tsyringe';
3
3
  * Общий интерфейс для всех хендлеров.
4
4
  * Хендлеры выполняют действия по настройке рендерера,
5
5
  * управляют состоянием сцены или конкретных режимов отображения.
6
+ *
6
7
  * @internal
8
+ * @interface
7
9
  */
8
10
  export interface IHandler extends Disposable {
9
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/interfaces/handler/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,QAAS,SAAQ,UAAU;IAC1C;;;OAGG;IACH,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEjC;;;OAGG;IACH,QAAQ,IAAI,IAAI,CAAC;CAClB"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/interfaces/handler/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,WAAW,QAAS,SAAQ,UAAU;IAC1C;;;OAGG;IACH,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEjC;;;OAGG;IACH,QAAQ,IAAI,IAAI,CAAC;CAClB"}
@@ -0,0 +1,6 @@
1
+ export * from './display-handler';
2
+ export * from './handler';
3
+ export * from './scene-handler';
4
+ export * from './select-handler';
5
+ export * from './tool-handler';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/handler/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
@@ -6,6 +6,7 @@ import { SceneMode } from '@planara/types';
6
6
  *
7
7
  * Расширяет {@link IHandler} и добавляет поле `mode`
8
8
  * @internal
9
+ * @interface
9
10
  */
10
11
  export interface ISceneHandler extends IHandler {
11
12
  /** Режим редактирования сцены, за который отвечает хендлер */
@@ -1 +1 @@
1
- {"version":3,"file":"scene-handler.d.ts","sourceRoot":"","sources":["../../../src/interfaces/handler/scene-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,8DAA8D;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB"}
1
+ {"version":3,"file":"scene-handler.d.ts","sourceRoot":"","sources":["../../../src/interfaces/handler/scene-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,8DAA8D;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB"}
@@ -6,6 +6,7 @@ import { SelectMode } from '@planara/types';
6
6
  *
7
7
  * Расширяет {@link IHandler} и добавляет поле `mode`
8
8
  * @internal
9
+ * @interface
9
10
  */
10
11
  export interface ISelectHandler extends IHandler {
11
12
  /** Режим выборки, за который отвечает хендлер */
@@ -1 +1 @@
1
- {"version":3,"file":"select-handler.d.ts","sourceRoot":"","sources":["../../../src/interfaces/handler/select-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,iDAAiD;IACjD,IAAI,EAAE,UAAU,CAAC;CAClB"}
1
+ {"version":3,"file":"select-handler.d.ts","sourceRoot":"","sources":["../../../src/interfaces/handler/select-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,iDAAiD;IACjD,IAAI,EAAE,UAAU,CAAC;CAClB"}
@@ -6,6 +6,7 @@ import { ToolType } from '@planara/types';
6
6
  *
7
7
  * Расширяет {@link IHandler} и добавляет поле `mode`
8
8
  * @internal
9
+ * @interface
9
10
  */
10
11
  export interface IToolHandler extends IHandler {
11
12
  /** Инструмент, за который отвечает хендлер */
@@ -1 +1 @@
1
- {"version":3,"file":"tool-handler.d.ts","sourceRoot":"","sources":["../../../src/interfaces/handler/tool-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,8CAA8C;IAC9C,IAAI,EAAE,QAAQ,CAAC;CAChB"}
1
+ {"version":3,"file":"tool-handler.d.ts","sourceRoot":"","sources":["../../../src/interfaces/handler/tool-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,8CAA8C;IAC9C,IAAI,EAAE,QAAQ,CAAC;CAChB"}
@@ -1,7 +1,9 @@
1
1
  import { IManager } from './manager';
2
2
  /**
3
3
  * Маркерный интерфейс для менеджера отображения.
4
- * @public
4
+ *
5
+ * @internal
6
+ * @interface
5
7
  */
6
8
  export interface IDisplayManager extends IManager {
7
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"display-manager.d.ts","sourceRoot":"","sources":["../../../src/interfaces/manager/display-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,QAAQ;CAAG"}
1
+ {"version":3,"file":"display-manager.d.ts","sourceRoot":"","sources":["../../../src/interfaces/manager/display-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,WAAW,eAAgB,SAAQ,QAAQ;CAAG"}
@@ -0,0 +1,6 @@
1
+ export * from './display-manager';
2
+ export * from './manager';
3
+ export * from './scene-manager';
4
+ export * from './select-manager';
5
+ export * from './tool-manager';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
@@ -1,12 +1,23 @@
1
1
  import { Disposable } from 'tsyringe';
2
+ import { FeatureType } from '../../types/feature';
2
3
  /**
3
4
  * Общий интерфейс для всех менеджеров в хабе.
4
5
  * Каждый менеджер отвечает за одну фичу.
5
- * @public
6
+ *
7
+ * @internal
8
+ * @interface
6
9
  */
7
10
  export interface IManager extends Disposable {
11
+ /**
12
+ * Тип фичи, за которую отвечает менеджер.
13
+ *
14
+ * @member
15
+ */
16
+ type: FeatureType;
8
17
  /**
9
18
  * Выполняет основное действие менеджера.
19
+ *
20
+ * @method
10
21
  */
11
22
  manage(...args: unknown[]): void;
12
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/interfaces/manager/manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;GAIG;AACH,MAAM,WAAW,QAAS,SAAQ,UAAU;IAC1C;;OAEG;IACH,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAClC"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/interfaces/manager/manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,WAAW,QAAS,SAAQ,UAAU;IAC1C;;;;OAIG;IACH,IAAI,EAAE,WAAW,CAAC;IAElB;;;;OAIG;IACH,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAClC"}
@@ -1,7 +1,9 @@
1
1
  import { IManager } from './manager';
2
2
  /**
3
3
  * Маркерный интерфейс для менеджера сцены.
4
- * @public
4
+ *
5
+ * @internal
6
+ * @interface
5
7
  */
6
8
  export interface ISceneManager extends IManager {
7
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scene-manager.d.ts","sourceRoot":"","sources":["../../../src/interfaces/manager/scene-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,aAAc,SAAQ,QAAQ;CAAG"}
1
+ {"version":3,"file":"scene-manager.d.ts","sourceRoot":"","sources":["../../../src/interfaces/manager/scene-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,WAAW,aAAc,SAAQ,QAAQ;CAAG"}
@@ -1,7 +1,9 @@
1
1
  import { IManager } from './manager';
2
2
  /**
3
3
  * Маркерный интерфейс для менеджера выборки.
4
- * @public
4
+ *
5
+ * @internal
6
+ * @interface
5
7
  */
6
8
  export interface ISelectManager extends IManager {
7
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"select-manager.d.ts","sourceRoot":"","sources":["../../../src/interfaces/manager/select-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,QAAQ;CAAG"}
1
+ {"version":3,"file":"select-manager.d.ts","sourceRoot":"","sources":["../../../src/interfaces/manager/select-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,WAAW,cAAe,SAAQ,QAAQ;CAAG"}
@@ -1,7 +1,9 @@
1
1
  import { IManager } from './manager';
2
2
  /**
3
3
  * Маркерный интерфейс для менеджера инструментов.
4
- * @public
4
+ *
5
+ * @internal
6
+ * @interface
5
7
  */
6
8
  export interface IToolManager extends IManager {
7
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../../src/interfaces/manager/tool-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,QAAQ;CAAG"}
1
+ {"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../../src/interfaces/manager/tool-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,WAAW,YAAa,SAAQ,QAAQ;CAAG"}
@@ -0,0 +1,51 @@
1
+ import { ICommand } from '../command';
2
+ import { IResponse } from '@planara/types';
3
+ import { Disposable } from 'tsyringe';
4
+ /**
5
+ * Интерфейс медиатора команд редактора.
6
+ *
7
+ * @remarks
8
+ * Медиатор выступает промежуточным слоем между публичным API хаба
9
+ * и менеджерами конкретных функциональных областей редактора.
10
+ *
11
+ * Основные задачи медиатора:
12
+ * - принять команду от верхнего уровня
13
+ * - определить менеджер, отвечающий за указанную фичу
14
+ * - передать вызов в pipeline middleware
15
+ * - вернуть итоговый ответ выполнения команды
16
+ *
17
+ * В штатном сценарии успешное выполнение команды может не формировать явный ответ и возвращать `null`.
18
+ * Если в процессе обработки возникает исключение, например ошибка политики,
19
+ * оно может быть преобразовано middleware в объект `IResponse`.
20
+ *
21
+ * @public
22
+ * @interface
23
+ */
24
+ export interface IMediator extends Disposable {
25
+ /**
26
+ * Отправляет команду на выполнение через middleware pipeline в соответствующий менеджер редактора.
27
+ *
28
+ * @param command - команда, содержащая тип фичи и аргументы вызова
29
+ *
30
+ * @returns результат выполнения команды:
31
+ * - `null`, если команда выполнена успешно и не требует явного ответа
32
+ * - `IResponse`, если в ходе обработки был сформирован ответ, например при ошибке или блокировке действия
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const response = mediator.send({
37
+ * type: FeatureType.Tool,
38
+ * payload: [ToolType.Rotate],
39
+ * });
40
+ *
41
+ * if (response?.blocked) {
42
+ * console.warn(response.message);
43
+ * }
44
+ * ```
45
+ *
46
+ * @public
47
+ * @method
48
+ */
49
+ send(command: ICommand): IResponse | null;
50
+ }
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/mediator/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;CAC3C"}
@@ -0,0 +1,50 @@
1
+ import { IResponse } from '@planara/types';
2
+ /**
3
+ * Интерфейс middleware в pipeline обработки команд редактора.
4
+ *
5
+ * @remarks
6
+ * Middleware позволяет внедрять сквозную логику поверх вызова менеджера,
7
+ * не изменяя реализацию самих менеджеров.
8
+ *
9
+ * Middleware образуют цепочку вызовов, в которой каждый элемент
10
+ * получает функцию `next` для передачи управления следующему шагу pipeline.
11
+ *
12
+ * Возвращаемое значение:
13
+ * - `null`, если выполнение завершилось без необходимости формировать ответ
14
+ * - `IResponse`, если middleware сформировал ответ самостоятельно, например при перехвате исключения
15
+ *
16
+ * @internal
17
+ * @interface
18
+ */
19
+ export interface IMiddleware {
20
+ /**
21
+ * Выполняет шаг middleware и передаёт управление следующему
22
+ * обработчику в pipeline.
23
+ *
24
+ * @param next - функция вызова следующего шага pipeline
25
+ *
26
+ * @returns результат выполнения текущего шага pipeline:
27
+ * - `null`, если явный ответ не был сформирован
28
+ * - `IResponse`, если middleware сформировал ответ самостоятельно
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * public async handle(next: () => Promise<IResponse | null>): Promise<IResponse | null> {
33
+ * try {
34
+ * return await next();
35
+ * } catch {
36
+ * return {
37
+ * type: ResponseType.Error,
38
+ * message: 'Unexpected error',
39
+ * blocked: true,
40
+ * };
41
+ * }
42
+ * }
43
+ * ```
44
+ *
45
+ * @public
46
+ * @method
47
+ */
48
+ handle(next: () => IResponse | null): IResponse | null;
49
+ }
50
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/middleware/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;CACxD"}
@@ -0,0 +1,4 @@
1
+ export * from './renderable-module';
2
+ export * from './runtime-module';
3
+ export * from './updatable-module';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/module/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { IRuntimeModule } from './runtime-module';
2
+ import { IRenderable } from '../api/renderer';
3
+ /**
4
+ * Интерфейс для модулей, требующих кастомного рендеринга.
5
+ *
6
+ * @remarks
7
+ * Некоторые модули должны рендерить дополнительную графику поверх основной сцены:
8
+ * - `GizmoModule` — отображение осей координат (CameraAxesGizmo)
9
+ * - оверлеи, подсказки, вспомогательные элементы
10
+ *
11
+ * В отличие от {@link IUpdatableModule}, который обновляет состояние,
12
+ * `IRenderableModule` отвечает именно за отрисовку дополнительных элементов
13
+ * **после** основного рендера сцены.
14
+ *
15
+ * Оркестрацией вызовов `render()` занимается `EditorRenderer`,
16
+ * который получает все модули через `@injectAll('IRenderableModule')`.
17
+ *
18
+ * @see {@link IRuntimeModule} - для одноразовой инициализации
19
+ * @see {@link IUpdatableModule} - для модулей с периодическим обновлением
20
+ * @see {@link GizmoModule} - пример реализации
21
+ *
22
+ * @internal
23
+ * @interface
24
+ */
25
+ export interface IRenderableModule extends IRuntimeModule, IRenderable {
26
+ }
27
+ //# sourceMappingURL=renderable-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderable-module.d.ts","sourceRoot":"","sources":["../../../src/interfaces/module/renderable-module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,iBAAkB,SAAQ,cAAc,EAAE,WAAW;CAAG"}
@@ -0,0 +1,54 @@
1
+ import { Disposable } from 'tsyringe';
2
+ /**
3
+ * Базовый интерфейс для всех runtime-модулей редактора.
4
+ *
5
+ * @remarks
6
+ * Модули — это независимые компоненты, которые управляют определёнными аспектами редактора:
7
+ * - управление камерой и контролами (`ControlsModule`)
8
+ * - управление сценой и объектами (`SceneModule`)
9
+ * - обработка выделения (`RaycasterModule`)
10
+ * - отображение вспомогательных элементов (`GizmoModule`)
11
+ *
12
+ * Все модули проходят единый жизненный цикл:
13
+ * 1. `init()` — инициализация модуля (подписки, создание объектов)
14
+ * 2. `dispose()` — освобождение ресурсов (отписки, очистка)
15
+ *
16
+ * Оркестрацией модулей занимается {@link EditorHub}.
17
+ *
18
+ * @see {@link ControlsModule} - пример реализации
19
+ * @see {@link SceneModule} - пример реализации
20
+ * @see {@link RaycastModule} - пример реализации
21
+ *
22
+ * @internal
23
+ * @interface
24
+ */
25
+ export interface IRuntimeModule extends Disposable {
26
+ /**
27
+ * Инициализирует модуль.
28
+ *
29
+ * @remarks
30
+ * Вызывается один раз при старте редактора.
31
+ * Здесь модуль должен:
32
+ * - создавать необходимые объекты
33
+ * - подписываться на события
34
+ * - регистрировать обработчики
35
+ *
36
+ * Порядок инициализации модулей не важен, так как модули
37
+ * не должны зависеть друг от друга на этапе `init()`.
38
+ * Взаимодействие происходит через API и EventBus после инициализации.
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * public init(): void {
43
+ * // Создание контролов
44
+ * this._orbit = new OrbitControls(...);
45
+ * // Подписка на события
46
+ * this._eventBus.on(EventTopics.SelectClick, this._onClick);
47
+ * }
48
+ * ```
49
+ *
50
+ * @internal
51
+ */
52
+ init(): void;
53
+ }
54
+ //# sourceMappingURL=runtime-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-module.d.ts","sourceRoot":"","sources":["../../../src/interfaces/module/runtime-module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,IAAI,IAAI,IAAI,CAAC;CACd"}