@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
@@ -1,120 +1,147 @@
1
- import { Figure } from '@planara/types';
2
1
  import { Disposable } from 'tsyringe';
2
+ import { IRendererCameraAccess, IRendererAccess, IRendererDomAccess, IRendererSceneAccess, IRenderable } from '../interfaces/api/renderer';
3
+ import { RendererConfig } from '@planara/types';
3
4
  import * as THREE from 'three';
4
5
  /**
5
- * Абстрактный базовый класс рендерера для работы с WebGL через OGL.
6
- * Отвечает за инициализацию сцены, камеры и цикла рендеринга.
6
+ * Базовый класс рендерера для работы с WebGL через Three.js.
7
+ *
8
+ * @remarks
9
+ * Отвечает за инициализацию сцены, камеры, освещения и цикла рендеринга.
10
+ * Предоставляет низкоуровневый API для доступа к основным компонентам Three.js.
11
+ *
12
+ * **Не содержит логики управления камерой или выделения объектов** —
13
+ * это ответственность модулей (например, `ControlsModule`, `RaycasterModule`).
14
+ *
15
+ * Рендерер реализует интерфейсы нижнего API:
16
+ * - `IRendererAccess` — доступ к WebGLRenderer
17
+ * - `IRendererCameraAccess` — доступ к камере
18
+ * - `IRendererDomAccess` — доступ к DOM-элементам
19
+ * - `IRendererSceneAccess` — доступ к сцене
20
+ *
21
+ * @see {@link IRendererAccess} - доступ к WebGLRenderer
22
+ * @see {@link IRendererCameraAccess} - доступ к камере
23
+ * @see {@link IRendererDomAccess} - доступ к DOM
24
+ * @see {@link IRendererSceneAccess} - доступ к сцене
25
+ *
7
26
  * @public
27
+ * @class
8
28
  */
9
- export declare abstract class Renderer implements Disposable {
10
- /** Корневой объект сцены */
11
- protected scene: THREE.Scene;
12
- /** Камера для сцены */
13
- protected camera: THREE.PerspectiveCamera;
14
- /** Экземпляр рендерера Three.js */
15
- protected renderer: THREE.WebGLRenderer;
16
- /** HTML-элемент canvas, на котором рендерится сцена */
17
- protected canvas: HTMLCanvasElement;
18
- /** Массив моделей на сцене */
19
- protected meshes: THREE.Mesh[];
20
- /**
21
- * Конструктор рендерера
22
- * @param canvas - HTMLCanvasElement для рендеринга
23
- */
24
- protected constructor(canvas: HTMLCanvasElement);
29
+ export declare class Renderer implements IRendererAccess, IRendererCameraAccess, IRendererDomAccess, IRendererSceneAccess, IRenderable, Disposable {
30
+ private readonly _config;
25
31
  /**
26
- * Обновляет размер рендерера и камеры при изменении размеров canvas.
27
- */
28
- resize(): void;
29
- /**
30
- * Выполняет рендеринг сцены с текущей камерой.
32
+ * Корневой объект сцены Three.js.
33
+ *
34
+ * @protected
35
+ * @member
31
36
  */
32
- protected render(): void;
37
+ protected scene: THREE.Scene;
33
38
  /**
34
- * Метод для обновления логики рендерера.
39
+ * Камера для сцены Three.js.
40
+ *
41
+ * @protected
42
+ * @member
35
43
  */
36
- protected update(): void;
44
+ protected camera: THREE.PerspectiveCamera;
37
45
  /**
38
- * Запускает основной цикл рендеринга.
46
+ * Экземпляр Three.js WebGLRenderer.
47
+ *
48
+ * @protected
49
+ * @member
39
50
  */
40
- loop(): void;
51
+ protected renderer: THREE.WebGLRenderer;
41
52
  /**
42
- * Добавление фигуры на сцену.
43
- * @param figure - Данные фигуры: position, normal, uv
53
+ * HTML-элемент canvas, на котором рендерится сцена.
54
+ *
55
+ * @protected
56
+ * @member
44
57
  */
45
- addFigure(figure: Figure): THREE.Mesh;
58
+ protected canvas: HTMLCanvasElement;
46
59
  /**
47
- * Добавляет фигуру в сцену и сохраняет его во внутреннем массиве.
60
+ * Конструктор рендерера.
61
+ *
62
+ * @param _canvas - HTMLCanvasElement для рендеринга
63
+ * @param _config - Конфиг для настройки рендерера
48
64
  *
49
- * @param mesh - Фигура для добавления в сцену.
50
- * @internal
65
+ * @remarks
66
+ * Инициализирует сцену, камеру, WebGLRenderer и базовое освещение
67
+ * на основе переданного `RendererConfig`.
68
+ *
69
+ * По умолчанию используется тёмный фон, перспективная камера
70
+ * и два источника света: AmbientLight и DirectionalLight.
71
+ *
72
+ * @public
73
+ * @constructor
51
74
  */
52
- addMesh(mesh: THREE.Mesh): void;
75
+ constructor(_canvas: HTMLCanvasElement, _config: RendererConfig);
53
76
  /**
54
- * Убирает фигуру со сцены
77
+ * Обновляет размер рендерера и пропорции камеры.
78
+ *
79
+ * @remarks
80
+ * Вызывается при изменении размеров canvas (например, при ресайзе окна браузера).
55
81
  *
56
- * @param mesh - Фигура для удаления со сцены.
57
- * @internal
82
+ * @example
83
+ * ```typescript
84
+ * window.addEventListener('resize', () => renderer.resize());
85
+ * ```
86
+ *
87
+ * @public
88
+ * @method
58
89
  */
59
- removeMesh(mesh: THREE.Mesh): void;
90
+ resize(): void;
60
91
  /**
61
- * Возвращает список всех фигур, находящихся в сцене.
92
+ * Выполняет рендеринг текущего кадра.
93
+ *
94
+ * @remarks
95
+ * Рендерит сцену с текущей камерой.
96
+ * Вызывается автоматически в цикле `loop()`.
62
97
  *
63
- * @returns Массив текущих фигур.
64
- * @internal
98
+ * @public
99
+ * @method
65
100
  */
66
- getMeshes(): THREE.Mesh[];
101
+ render(): void;
67
102
  /**
68
- * Добавляет объект в сцену и (опционально) выставляет ему слой.
69
- *
70
- * @param obj - Объект, который нужно добавить в сцену.
71
- * @param layer - (Опц.) Номер слоя, который следует установить объекту перед добавлением.
103
+ * Обновляет состояние рендерера перед рендерингом.
72
104
  *
73
105
  * @remarks
74
- * Если рендерер уже диспоузнут (scene отсутствует), метод тихо завершится.
75
- * Слой задаётся через `obj.layers.set(layer)`, после чего объект добавляется в `this.scene`.
76
- *
77
- * @example
78
- * // Добавить оверлей на слой подсветок:
79
- * add(overlayLine, OVERLAY_LAYER);
106
+ * Пустой метод, предназначен для переопределения в наследниках
107
+ * (например, для обновления контролов камеры).
80
108
  *
81
- * @internal
109
+ * @protected
110
+ * @method
111
+ * @virtual
82
112
  */
83
- addObject(obj: THREE.Object3D, layer?: number): void;
113
+ protected update(): void;
84
114
  /**
85
- * Удаляет объект из сцены (или из его родителя, если он есть).
86
- *
87
- * @param obj - Объект, который необходимо удалить.
115
+ * Запускает основной цикл рендеринга.
88
116
  *
89
117
  * @remarks
90
- * Если у объекта есть `parent`, он будет удалён из родителя. Иначе — метод попытается
91
- * удалить его напрямую из `this.scene`. В рамках данного API метод не отвечает за
92
- * освобождение GPU-ресурсов; освобождайте геометрию/материалы отдельно при необходимости.
118
+ * Вызывает `update()` и `render()` каждый кадр с помощью `requestAnimationFrame`.
119
+ * **Важно:** вызывать метод только один раз.
93
120
  *
94
121
  * @example
95
- * // Снять оверлей со сцены:
96
- * removeObject(overlayLine);
122
+ * ```typescript
123
+ * renderer.loop();
124
+ * ```
97
125
  *
98
- * @internal
126
+ * @public
127
+ * @method
99
128
  */
100
- removeObject(obj: THREE.Object3D): void;
129
+ loop(): void;
130
+ getCamera(): THREE.Camera;
131
+ getRenderer(): THREE.WebGLRenderer;
132
+ getCanvas(): HTMLCanvasElement;
133
+ getDomElement(): HTMLElement;
134
+ getScene(): THREE.Scene;
101
135
  /**
102
- * Включает указанный слой у активной камеры.
103
- *
104
- * @param layer - Номер слоя, который требуется сделать видимым для камеры.
136
+ * Освобождает ресурсы рендерера.
105
137
  *
106
138
  * @remarks
107
- * Полезно для показа служебных оверлеев (например, подсветки) на отдельном слое.
108
- * Метод не изменяет слои Raycaster — ими должен управлять другой слой API (например, IRaycastAPI).
109
- *
110
- * @example
111
- * // Убедиться, что камера видит слой оверлеев:
112
- * enableCameraLayer(OVERLAY_LAYER);
139
+ * Удаляет ссылки на сцену, камеру и canvas, вызывает `dispose()` у WebGLRenderer.
140
+ * Вызывается при уничтожении редактора IOC-контейнером.
113
141
  *
114
- * @internal
142
+ * @public
143
+ * @method
115
144
  */
116
- enableCameraLayer(layer: number): void;
117
- /** Освобождает ресурсы рендерера, очищает внутренние данные. */
118
145
  dispose(): Promise<void> | void;
119
146
  }
120
147
  //# sourceMappingURL=renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/core/renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C;;;;GAIG;AACH,8BAAsB,QAAS,YAAW,UAAU;IAClD,4BAA4B;IAC5B,SAAS,CAAC,KAAK,EAAG,KAAK,CAAC,KAAK,CAAC;IAE9B,uBAAuB;IACvB,SAAS,CAAC,MAAM,EAAG,KAAK,CAAC,iBAAiB,CAAC;IAE3C,mCAAmC;IACnC,SAAS,CAAC,QAAQ,EAAG,KAAK,CAAC,aAAa,CAAC;IAEzC,uDAAuD;IACvD,SAAS,CAAC,MAAM,EAAG,iBAAiB,CAAC;IAErC,8BAA8B;IAC9B,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAM;IAEpC;;;OAGG;IACH,SAAS,aAAa,MAAM,EAAE,iBAAiB;IA+B/C;;OAEG;IACI,MAAM;IAMb;;OAEG;IACH,SAAS,CAAC,MAAM;IAIhB;;OAEG;IACH,SAAS,CAAC,MAAM,IAAI,IAAI;IAExB;;OAEG;IACI,IAAI;IAMX;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,IAAI;IAyB5C;;;;;OAKG;IACI,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;IAO/B;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;IAOlC;;;;;OAKG;IACI,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE;IAIhC;;;;;;;;;;;;;;;OAeG;IACI,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAS3D;;;;;;;;;;;;;;;OAeG;IACI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI;IAW9C;;;;;;;;;;;;;;OAcG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7C,gEAAgE;IACzD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAavC"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/core/renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,KAAK,UAAU,EAAsB,MAAM,UAAU,CAAC;AAE/D,OAAO,KAAK,EACV,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIrD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBACa,QACX,YACE,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,UAAU;IAoDgB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAlDpD;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAG,KAAK,CAAC,KAAK,CAAC;IAE9B;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAG,KAAK,CAAC,iBAAiB,CAAC;IAE3C;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAG,KAAK,CAAC,aAAa,CAAC;IAEzC;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAG,iBAAiB,CAAC;IAErC;;;;;;;;;;;;;;;OAeG;gBAEiB,OAAO,EAAE,iBAAiB,EACD,OAAO,EAAE,cAAc;IAoEpE;;;;;;;;;;;;;OAaG;IACI,MAAM;IAMb;;;;;;;;;OASG;IACI,MAAM;IAIb;;;;;;;;;;OAUG;IACH,SAAS,CAAC,MAAM,IAAI,IAAI;IAExB;;;;;;;;;;;;;;OAcG;IACI,IAAI;IAMJ,SAAS,IAAI,KAAK,CAAC,MAAM;IAIzB,WAAW,IAAI,KAAK,CAAC,aAAa;IAIlC,SAAS,IAAI,iBAAiB;IAI9B,aAAa,IAAI,WAAW;IAI5B,QAAQ,IAAI,KAAK,CAAC,KAAK;IAI9B;;;;;;;;;OASG;IACI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAQvC"}
@@ -0,0 +1,3 @@
1
+ export * from './use-policy';
2
+ export * from './use-validator';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { IPolicy } from '../interfaces/policy';
2
+ type PolicyAccessor<TThis> = (self: TThis) => IPolicy;
3
+ export declare const usePolicy: <TThis extends object>(accessor: PolicyAccessor<TThis>) => <T extends (...args: any[]) => any>(_target: TThis, _propertyKey: string, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T>;
4
+ export {};
5
+ //# sourceMappingURL=use-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-policy.d.ts","sourceRoot":"","sources":["../../src/decorators/use-policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,KAAK,cAAc,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC;AAEtD,eAAO,MAAM,SAAS,GACnB,KAAK,SAAS,MAAM,EAAE,UAAU,cAAc,CAAC,KAAK,CAAC,MACrD,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAChC,SAAS,KAAK,EACd,cAAc,MAAM,EACpB,YAAY,uBAAuB,CAAC,CAAC,CAAC,+BAiBvC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { IValidator } from '../interfaces/validator';
2
+ type ValidatorAccessor<TThis> = (self: TThis) => IValidator;
3
+ export declare const useValidator: <TThis extends object>(accessor: ValidatorAccessor<TThis>) => <T extends (...args: any[]) => any>(_target: TThis, _propertyKey: string, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T>;
4
+ export {};
5
+ //# sourceMappingURL=use-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-validator.d.ts","sourceRoot":"","sources":["../../src/decorators/use-validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,KAAK,iBAAiB,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,UAAU,CAAC;AAE5D,eAAO,MAAM,YAAY,GACtB,KAAK,SAAS,MAAM,EAAE,UAAU,iBAAiB,CAAC,KAAK,CAAC,MACxD,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAChC,SAAS,KAAK,EACd,cAAc,MAAM,EACpB,YAAY,uBAAuB,CAAC,CAAC,CAAC,+BAiBvC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './policy-error';
2
+ export * from './validation-error';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ResponseType } from '@planara/types';
2
+ export declare class PolicyError extends Error {
3
+ readonly type: ResponseType;
4
+ readonly code?: string | undefined;
5
+ readonly meta?: unknown | undefined;
6
+ private readonly _name;
7
+ constructor(type: ResponseType, message: string, code?: string | undefined, meta?: unknown | undefined);
8
+ }
9
+ //# sourceMappingURL=policy-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-error.d.ts","sourceRoot":"","sources":["../../src/errors/policy-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,KAAK;aAIlB,IAAI,EAAE,YAAY;aAElB,IAAI,CAAC,EAAE,MAAM;aACb,IAAI,CAAC,EAAE,OAAO;IANhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;gBAGjC,IAAI,EAAE,YAAY,EAClC,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,IAAI,CAAC,EAAE,OAAO,YAAA;CAKjC"}
@@ -0,0 +1,9 @@
1
+ import { ResponseType } from '@planara/types';
2
+ export declare class ValidationError extends Error {
3
+ readonly type: ResponseType;
4
+ readonly code?: string | undefined;
5
+ readonly meta?: unknown | undefined;
6
+ private readonly _name;
7
+ constructor(type: ResponseType, message: string, code?: string | undefined, meta?: unknown | undefined);
8
+ }
9
+ //# sourceMappingURL=validation-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-error.d.ts","sourceRoot":"","sources":["../../src/errors/validation-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,qBAAa,eAAgB,SAAQ,KAAK;aAItB,IAAI,EAAE,YAAY;aAElB,IAAI,CAAC,EAAE,MAAM;aACb,IAAI,CAAC,EAAE,OAAO;IANhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;gBAGrC,IAAI,EAAE,YAAY,EAClC,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,IAAI,CAAC,EAAE,OAAO,YAAA;CAKjC"}
@@ -1,10 +1,11 @@
1
- import { EventTopics } from './event-topics';
2
- import { SelectMode } from '@planara/types';
1
+ import { EventTopics } from '.';
3
2
  import * as THREE from 'three';
4
3
  /**
5
4
  * Типы событий редактора.
6
5
  * Используются в EventEmitter для типизированной публикации и подписки на события.
6
+ *
7
7
  * @public
8
+ * @type
8
9
  */
9
10
  export type EditorEvents = {
10
11
  /** Событие наведения на объект (hover). Payload: объект с пересечениями или null */
@@ -15,10 +16,5 @@ export type EditorEvents = {
15
16
  [EventTopics.SelectClick]: {
16
17
  intersection: THREE.Intersection;
17
18
  } | null;
18
- /** Событие выбора объекта для редактирования. Payload: выбранный режим выборки */
19
- [EventTopics.ToolSelect]: {
20
- mode: SelectMode;
21
- mesh: THREE.Object3D | null;
22
- };
23
19
  };
24
20
  //# sourceMappingURL=editor-events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor-events.d.ts","sourceRoot":"","sources":["../../src/events/editor-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,oFAAoF;IACpF,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;QAAE,YAAY,EAAE,KAAK,CAAC,YAAY,CAAA;KAAE,GAAG,IAAI,CAAC;IAEvE,yEAAyE;IACzE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;QAAE,YAAY,EAAE,KAAK,CAAC,YAAY,CAAA;KAAE,GAAG,IAAI,CAAC;IAEvE,kFAAkF;IAClF,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAA;KAAE,CAAC;CAC7E,CAAC"}
1
+ {"version":3,"file":"editor-events.d.ts","sourceRoot":"","sources":["../../src/events/editor-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,oFAAoF;IACpF,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;QAAE,YAAY,EAAE,KAAK,CAAC,YAAY,CAAA;KAAE,GAAG,IAAI,CAAC;IAEvE,yEAAyE;IACzE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;QAAE,YAAY,EAAE,KAAK,CAAC,YAAY,CAAA;KAAE,GAAG,IAAI,CAAC;CACxE,CAAC"}
@@ -1,17 +1,114 @@
1
- import { EditorEvents } from './editor-events';
1
+ import { EditorEvents } from '.';
2
2
  /**
3
- * Событийная шина редактора с топиками.
4
- * Используется для publish/subscribe без прямых зависимостей.
3
+ * Событийная шина редактора с типизированными топиками.
4
+ *
5
+ * @remarks
6
+ * Реализует паттерн Publish/Subscribe для слабой связи между компонентами.
7
+ *
8
+ * **Особенности:**
9
+ * - Полная типобезопасность через дженерики (`EditorEvents`)
10
+ * - Отсутствие прямых зависимостей между отправителем и получателем
11
+ * - Централизованное управление событиями
12
+ *
13
+ * **Где используется:**
14
+ * - `RaycasterModule` — публикует события выделения (`SelectHover`, `SelectClick`)
15
+ * - `SelectManager` — подписывается на события выделения
16
+ *
17
+ * @see {@link EditorEvents} - типы событий
18
+ * @see {@link EventTopics} - доступные топики
19
+ *
5
20
  * @public
21
+ * @class
6
22
  */
7
23
  export declare class EventBus {
24
+ /**
25
+ * Внутренний эмиттер событий Node.js.
26
+ *
27
+ * @private
28
+ * @member
29
+ */
8
30
  private _emitter;
31
+ /** @constructor */
9
32
  constructor();
10
- /** Публикация события */
33
+ /**
34
+ * Публикует событие в шину.
35
+ *
36
+ * @param event - название события (из `EventTopics`)
37
+ * @param payload - данные события (тип зависит от события)
38
+ *
39
+ * @typeParam K - ключ события из `EditorEvents`
40
+ *
41
+ * @remarks
42
+ * Все подписчики, зарегистрированные на это событие, получат payload.
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * // Публикация события клика
47
+ * eventBus.emit(EventTopics.SelectClick, { intersection: hit });
48
+ *
49
+ * // Публикация события сброса выделения
50
+ * eventBus.emit(EventTopics.SelectClick, null);
51
+ * ```
52
+ *
53
+ * @public
54
+ * @method
55
+ */
11
56
  emit<K extends keyof EditorEvents>(event: K, payload: EditorEvents[K]): void;
12
- /** Подписка на событие */
57
+ /**
58
+ * Подписывается на событие.
59
+ *
60
+ * @param event - название события (из `EventTopics`)
61
+ * @param listener - функция-обработчик, получающая payload
62
+ *
63
+ * @typeParam K - ключ события из `EditorEvents`
64
+ *
65
+ * @remarks
66
+ * **Важно:** для предотвращения утечек памяти необходимо отписываться от событий
67
+ * в `dispose()` методах компонентов.
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * // Подписка на событие hover
72
+ * this._eventBus.on(EventTopics.SelectHover, (payload) => {
73
+ * if (payload) {
74
+ * this._handleHover(payload.intersection);
75
+ * } else {
76
+ * this._clearHover();
77
+ * }
78
+ * });
79
+ * ```
80
+ *
81
+ * @public
82
+ * @method
83
+ */
13
84
  on<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
14
- /** Отписка от события */
85
+ /**
86
+ * Отписывается от события.
87
+ *
88
+ * @param event - название события (из `EventTopics`)
89
+ * @param listener - функция-обработчик, которую нужно отписать
90
+ *
91
+ * @typeParam K - ключ события из `EditorEvents`
92
+ *
93
+ * @remarks
94
+ * Для корректной отписки необходимо передать ту же самую функцию,
95
+ * которая использовалась при подписке.
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * // Сохранение ссылки на обработчик
100
+ * private _handleClick = (payload) => { ... };
101
+ *
102
+ * // Подписка
103
+ * eventBus.on(EventTopics.SelectClick, this._handleClick);
104
+ *
105
+ * // Отписка (в dispose)
106
+ * eventBus.off(EventTopics.SelectClick, this._handleClick);
107
+ * ```
108
+ *
109
+ * @public
110
+ * @method
111
+ */
15
112
  off<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
16
113
  }
17
114
  //# sourceMappingURL=event-bus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;GAIG;AACH,qBACa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAgB;;IAMhC,yBAAyB;IACzB,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAI5E,0BAA0B;IAC1B,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAI9F,yBAAyB;IACzB,GAAG,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;CAGhG"}
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,QAAQ;IACnB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAgB;IAEhC,mBAAmB;;IAKnB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACI,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAInF;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACI,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EACpC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAC3C,IAAI;IAIP;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACI,GAAG,CAAC,CAAC,SAAS,MAAM,YAAY,EACrC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAC3C,IAAI;CAGR"}
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * Топики событий редактора.
3
3
  * Используются для подписки/публикации через EventEmitter.
4
+ *
4
5
  * @public
6
+ * @enum
5
7
  */
6
8
  export declare enum EventTopics {
7
9
  /** Событие наведения на объект (hover). Payload: intersection: Intersection | null */
8
10
  SelectHover = "select.hover",
9
11
  /** Событие клика по объекту. Payload: intersection: Intersection | null */
10
- SelectClick = "select.click",
11
- /** Событие выбора объекта для редактирования. Payload: mode: SelectMode, object: THREE.Object3D | null */
12
- ToolSelect = "tool.select"
12
+ SelectClick = "select.click"
13
13
  }
14
14
  //# sourceMappingURL=event-topics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-topics.d.ts","sourceRoot":"","sources":["../../src/events/event-topics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oBAAY,WAAW;IACrB,sFAAsF;IACtF,WAAW,iBAAiB;IAE5B,2EAA2E;IAC3E,WAAW,iBAAiB;IAE5B,0GAA0G;IAC1G,UAAU,gBAAgB;CAC3B"}
1
+ {"version":3,"file":"event-topics.d.ts","sourceRoot":"","sources":["../../src/events/event-topics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,oBAAY,WAAW;IACrB,sFAAsF;IACtF,WAAW,iBAAiB;IAE5B,2EAA2E;IAC3E,WAAW,iBAAiB;CAC7B"}
@@ -0,0 +1,4 @@
1
+ export * from './editor-events';
2
+ export * from './event-bus';
3
+ export * from './event-topics';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './wireframe-handler';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/handlers/display/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -1,10 +1,12 @@
1
- import { IDisplayHandler } from '../../interfaces/handler/display-handler';
1
+ import { IDisplayHandler } from '../../interfaces/handler';
2
+ import { IMeshApi } from '../../interfaces/api';
2
3
  import { DisplayMode } from '@planara/types';
3
- import { IMeshApi } from '../../interfaces/api/mesh-api';
4
4
  /**
5
5
  * Хендлер для включения wireframe-режима.
6
6
  * Управляет сценой через RendererApi.
7
+ *
7
8
  * @internal
9
+ * @class
8
10
  */
9
11
  export declare class WireframeHandler implements IDisplayHandler {
10
12
  private _api;
@@ -1 +1 @@
1
- {"version":3,"file":"wireframe-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/display/wireframe-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D;;;;GAIG;AACH,qBACa,gBAAiB,YAAW,eAAe;IAcZ,OAAO,CAAC,IAAI;IAbtD,yBAAyB;IACzB,SAAgB,IAAI,EAAE,WAAW,CAAyB;IAE1D,0DAA0D;IAC1D,OAAO,CAAC,cAAc,CAAsC;IAE5D,qDAAqD;IACrD,OAAO,CAAC,cAAc,CAA0C;IAChE,OAAO,CAAC,eAAe,CAAmD;IAE1E,uCAAuC;IACvC,OAAO,CAAC,UAAU,CAA6B;gBAEG,IAAI,EAAE,QAAQ;IAEhE,yCAAyC;IAClC,MAAM,IAAI,IAAI;IAwBrB,gEAAgE;IACzD,QAAQ,IAAI,IAAI;IAuBvB,mFAAmF;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAItC,mEAAmE;IACnE,OAAO,CAAC,0BAA0B;CAgBnC"}
1
+ {"version":3,"file":"wireframe-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/display/wireframe-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;;;GAMG;AACH,qBACa,gBAAiB,YAAW,eAAe;IAcf,OAAO,CAAC,IAAI;IAbnD,yBAAyB;IACzB,SAAgB,IAAI,EAAE,WAAW,CAAyB;IAE1D,0DAA0D;IAC1D,OAAO,CAAC,cAAc,CAAsC;IAE5D,qDAAqD;IACrD,OAAO,CAAC,cAAc,CAA0C;IAChE,OAAO,CAAC,eAAe,CAAmD;IAE1E,uCAAuC;IACvC,OAAO,CAAC,UAAU,CAA6B;gBAEA,IAAI,EAAE,QAAQ;IAE7D,yCAAyC;IAClC,MAAM,IAAI,IAAI;IAwBrB,gEAAgE;IACzD,QAAQ,IAAI,IAAI;IAuBvB,mFAAmF;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAItC,mEAAmE;IACnE,OAAO,CAAC,0BAA0B;CAgBnC"}
@@ -1,10 +1,12 @@
1
- import { ISceneHandler } from '../../interfaces/handler/scene-handler';
2
- import { IMeshApi } from '../../interfaces/api/mesh-api';
1
+ import { ISceneHandler } from '../../interfaces/handler';
2
+ import { IMeshApi } from '../../interfaces/api';
3
3
  import { FigureType, SceneMode } from '@planara/types';
4
4
  /**
5
5
  * Хендлер для добавления базовых фигур на сцену.
6
6
  * Управляет сценой через RendererApi.
7
+ *
7
8
  * @internal
9
+ * @class
8
10
  */
9
11
  export declare class AddFigureSceneHandler implements ISceneHandler {
10
12
  private _api;
@@ -1 +1 @@
1
- {"version":3,"file":"add-figure-scene-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/scene/add-figure-scene-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,KAAK,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAS5D;;;;GAIG;AACH,qBACa,qBAAsB,YAAW,aAAa;IAOf,OAAO,CAAC,IAAI;IANtD,iCAAiC;IACjC,SAAgB,IAAI,EAAE,SAAS,CAAuB;IAEtD,uEAAuE;IACvE,OAAO,CAAC,cAAc,CAA2B;gBAEC,IAAI,EAAE,QAAQ;IAEhE,2EAA2E;IACpE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAyBvC,wCAAwC;IACjC,QAAQ,IAAI,IAAI;IASvB,oCAAoC;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAIvC"}
1
+ {"version":3,"file":"add-figure-scene-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/scene/add-figure-scene-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,KAAK,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAQ5D;;;;;;GAMG;AACH,qBACa,qBAAsB,YAAW,aAAa;IAOlB,OAAO,CAAC,IAAI;IANnD,iCAAiC;IACjC,SAAgB,IAAI,EAAE,SAAS,CAAuB;IAEtD,uEAAuE;IACvE,OAAO,CAAC,cAAc,CAA2B;gBAEF,IAAI,EAAE,QAAQ;IAE7D,2EAA2E;IACpE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IA8BvC,wCAAwC;IACjC,QAAQ,IAAI,IAAI;IASvB,oCAAoC;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAIvC"}
@@ -1,7 +1,7 @@
1
- import { ISceneHandler } from '../../interfaces/handler/scene-handler';
2
- import { IMeshApi } from '../../interfaces/api/mesh-api';
1
+ import { ISceneHandler } from '../../interfaces/handler';
2
+ import { IMeshApi } from '../../interfaces/api';
3
+ import { ISelectStore } from '../../interfaces/store';
3
4
  import { SceneMode } from '@planara/types';
4
- import { IEditorStore } from '../../interfaces/store/editor-store';
5
5
  /**
6
6
  * Хендлер для удаления фигур со сцены.
7
7
  * Управляет сценой через RendererApi.
@@ -14,7 +14,7 @@ export declare class DeleteFigureSceneHandler implements ISceneHandler {
14
14
  readonly mode: SceneMode;
15
15
  /** Последняя удаленная фигура, сохраняем для отката через `ctrl + z` */
16
16
  private _lastDeletedMesh;
17
- constructor(_api: IMeshApi, _store: IEditorStore);
17
+ constructor(_api: IMeshApi, _store: ISelectStore);
18
18
  handle(): void;
19
19
  /** Срабатывает только на `ctrl + z`. */
20
20
  rollback(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"delete-figure-scene-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/scene/delete-figure-scene-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAIxE;;;;GAIG;AACH,qBACa,wBAAyB,YAAW,aAAa;IAQnC,OAAO,CAAC,IAAI;IACX,OAAO,CAAC,MAAM;IARxC,iCAAiC;IACjC,SAAgB,IAAI,EAAE,SAAS,CAA0B;IAEzD,wEAAwE;IACxE,OAAO,CAAC,gBAAgB,CAA2B;gBAGlB,IAAI,EAAE,QAAQ,EACb,MAAM,EAAE,YAAY;IAG/C,MAAM,IAAI,IAAI;IAerB,wCAAwC;IACjC,QAAQ,IAAI,IAAI;IASvB,oCAAoC;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAIvC"}
1
+ {"version":3,"file":"delete-figure-scene-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/scene/delete-figure-scene-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAM3C;;;;GAIG;AACH,qBACa,wBAAyB,YAAW,aAAa;IAQtC,OAAO,CAAC,IAAI;IACT,OAAO,CAAC,MAAM;IARvC,iCAAiC;IACjC,SAAgB,IAAI,EAAE,SAAS,CAA0B;IAEzD,wEAAwE;IACxE,OAAO,CAAC,gBAAgB,CAA2B;gBAGrB,IAAI,EAAE,QAAQ,EACX,MAAM,EAAE,YAAY;IAG9C,MAAM,IAAI,IAAI;IAerB,wCAAwC;IACjC,QAAQ,IAAI,IAAI;IASvB,oCAAoC;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAIvC"}
@@ -0,0 +1,23 @@
1
+ import { ISceneHandler } from '../../interfaces/handler';
2
+ import { ISceneApi } from '../../interfaces/api';
3
+ import { IExportStore } from '../../interfaces/store';
4
+ import { SceneMode } from '@planara/types';
5
+ /**
6
+ * Хендлер для экспорта сцены в виде файла.
7
+ *
8
+ * @internal
9
+ * @class
10
+ */
11
+ export declare class ExportSceneHandler implements ISceneHandler {
12
+ private _api;
13
+ private readonly _exportStore;
14
+ /** Режим редактирования сцены */
15
+ readonly mode: SceneMode;
16
+ constructor(_api: ISceneApi, _exportStore: IExportStore);
17
+ /** Экспорт всей сцены в ExportStore для последующей загрузки в виде файла. */
18
+ handle(): void;
19
+ rollback(): void;
20
+ /** Освобождает ресурсы хендлера. */
21
+ dispose(): Promise<void> | void;
22
+ }
23
+ //# sourceMappingURL=export-scene-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-scene-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/scene/export-scene-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAM3C;;;;;GAKG;AACH,qBACa,kBAAmB,YAAW,aAAa;IAK/B,OAAO,CAAC,IAAI;IACV,OAAO,CAAC,QAAQ,CAAC,YAAY;IALtD,iCAAiC;IACjC,SAAgB,IAAI,EAAE,SAAS,CAAoB;gBAGpB,IAAI,EAAE,SAAS,EACJ,YAAY,EAAE,YAAY;IAGpE,8EAA8E;IACvE,MAAM,IAAI,IAAI;IAmBd,QAAQ,IAAI,IAAI;IAEvB,oCAAoC;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAGvC"}
@@ -0,0 +1,6 @@
1
+ export * from './add-figure-scene-handler';
2
+ export * from './delete-figure-scene-handler';
3
+ export * from './export-scene-handler';
4
+ export * from './load-scene-handler';
5
+ export * from './load-figure-scene-handler';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/handlers/scene/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC"}