@planara/core 2.8.0 → 3.0.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 (187) 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/mesh-api.d.ts +30 -0
  5. package/dist/api/modules/mesh-api.d.ts.map +1 -0
  6. package/dist/api/modules/raycast-api.d.ts +28 -0
  7. package/dist/api/modules/raycast-api.d.ts.map +1 -0
  8. package/dist/api/modules/transform-api.d.ts +33 -0
  9. package/dist/api/modules/transform-api.d.ts.map +1 -0
  10. package/dist/api/renderer/camera-api.d.ts +26 -0
  11. package/dist/api/renderer/camera-api.d.ts.map +1 -0
  12. package/dist/api/renderer/dom-api.d.ts +24 -0
  13. package/dist/api/renderer/dom-api.d.ts.map +1 -0
  14. package/dist/api/renderer/scene-api.d.ts +26 -0
  15. package/dist/api/renderer/scene-api.d.ts.map +1 -0
  16. package/dist/constants/colors.d.ts +12 -0
  17. package/dist/constants/colors.d.ts.map +1 -1
  18. package/dist/constants/figure-geometries.d.ts +55 -4
  19. package/dist/constants/figure-geometries.d.ts.map +1 -1
  20. package/dist/constants/layers.d.ts +12 -0
  21. package/dist/constants/layers.d.ts.map +1 -1
  22. package/dist/constants/messages.d.ts +18 -0
  23. package/dist/constants/messages.d.ts.map +1 -0
  24. package/dist/constants/threshold.d.ts +42 -2
  25. package/dist/constants/threshold.d.ts.map +1 -1
  26. package/dist/controllers/renderer-controller.d.ts +74 -0
  27. package/dist/controllers/renderer-controller.d.ts.map +1 -0
  28. package/dist/core/renderer.d.ts +110 -78
  29. package/dist/core/renderer.d.ts.map +1 -1
  30. package/dist/decorators/use-policy.d.ts +5 -0
  31. package/dist/decorators/use-policy.d.ts.map +1 -0
  32. package/dist/errors/policy-error.d.ts +9 -0
  33. package/dist/errors/policy-error.d.ts.map +1 -0
  34. package/dist/events/editor-events.d.ts +2 -6
  35. package/dist/events/editor-events.d.ts.map +1 -1
  36. package/dist/events/event-bus.d.ts +102 -5
  37. package/dist/events/event-bus.d.ts.map +1 -1
  38. package/dist/events/event-topics.d.ts +3 -3
  39. package/dist/events/event-topics.d.ts.map +1 -1
  40. package/dist/handlers/display/wireframe-handler.d.ts +3 -1
  41. package/dist/handlers/display/wireframe-handler.d.ts.map +1 -1
  42. package/dist/handlers/scene/add-figure-scene-handler.d.ts +2 -0
  43. package/dist/handlers/scene/add-figure-scene-handler.d.ts.map +1 -1
  44. package/dist/handlers/scene/delete-figure-scene-handler.d.ts +2 -2
  45. package/dist/handlers/scene/delete-figure-scene-handler.d.ts.map +1 -1
  46. package/dist/handlers/select/edge-select-handler.d.ts +10 -4
  47. package/dist/handlers/select/edge-select-handler.d.ts.map +1 -1
  48. package/dist/handlers/select/face-select-handler.d.ts +10 -4
  49. package/dist/handlers/select/face-select-handler.d.ts.map +1 -1
  50. package/dist/handlers/select/mesh-select-handler.d.ts +5 -3
  51. package/dist/handlers/select/mesh-select-handler.d.ts.map +1 -1
  52. package/dist/handlers/select/vertex-select-handler.d.ts +10 -4
  53. package/dist/handlers/select/vertex-select-handler.d.ts.map +1 -1
  54. package/dist/handlers/tool/base-tool-handler.d.ts +9 -6
  55. package/dist/handlers/tool/base-tool-handler.d.ts.map +1 -1
  56. package/dist/handlers/tool/rotate-tool-handler.d.ts +4 -3
  57. package/dist/handlers/tool/rotate-tool-handler.d.ts.map +1 -1
  58. package/dist/handlers/tool/scale-tool-handler.d.ts +4 -3
  59. package/dist/handlers/tool/scale-tool-handler.d.ts.map +1 -1
  60. package/dist/handlers/tool/translate-tool-handler.d.ts +4 -3
  61. package/dist/handlers/tool/translate-tool-handler.d.ts.map +1 -1
  62. package/dist/hub/editor-hub.d.ts +22 -17
  63. package/dist/hub/editor-hub.d.ts.map +1 -1
  64. package/dist/index.cjs.js +2 -2
  65. package/dist/index.d.ts +15 -8
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.es.js +1635 -1563
  68. package/dist/index.full.d.ts +637 -242
  69. package/dist/index.public.d.ts +652 -157
  70. package/dist/index.umd.js +2 -2
  71. package/dist/interfaces/api/camera-api.d.ts +64 -0
  72. package/dist/interfaces/api/camera-api.d.ts.map +1 -0
  73. package/dist/interfaces/api/controls-state-api.d.ts +63 -0
  74. package/dist/interfaces/api/controls-state-api.d.ts.map +1 -0
  75. package/dist/interfaces/api/dom-api.d.ts +49 -0
  76. package/dist/interfaces/api/dom-api.d.ts.map +1 -0
  77. package/dist/interfaces/api/mesh-api.d.ts +93 -12
  78. package/dist/interfaces/api/mesh-api.d.ts.map +1 -1
  79. package/dist/interfaces/api/raycast-api.d.ts +6 -1
  80. package/dist/interfaces/api/raycast-api.d.ts.map +1 -1
  81. package/dist/interfaces/api/renderer/renderable.d.ts +45 -0
  82. package/dist/interfaces/api/renderer/renderable.d.ts.map +1 -0
  83. package/dist/interfaces/api/renderer/renderer-access.d.ts +34 -0
  84. package/dist/interfaces/api/renderer/renderer-access.d.ts.map +1 -0
  85. package/dist/interfaces/api/renderer/renderer-camera-access.d.ts +37 -0
  86. package/dist/interfaces/api/renderer/renderer-camera-access.d.ts.map +1 -0
  87. package/dist/interfaces/api/renderer/renderer-dom-access.d.ts +51 -0
  88. package/dist/interfaces/api/renderer/renderer-dom-access.d.ts.map +1 -0
  89. package/dist/interfaces/api/renderer/renderer-scene-access.d.ts +45 -0
  90. package/dist/interfaces/api/renderer/renderer-scene-access.d.ts.map +1 -0
  91. package/dist/interfaces/api/renderer-api.d.ts +35 -0
  92. package/dist/interfaces/api/renderer-api.d.ts.map +1 -0
  93. package/dist/interfaces/api/scene-api.d.ts +66 -26
  94. package/dist/interfaces/api/scene-api.d.ts.map +1 -1
  95. package/dist/interfaces/api/transform-api.d.ts +120 -0
  96. package/dist/interfaces/api/transform-api.d.ts.map +1 -0
  97. package/dist/interfaces/command/index.d.ts +9 -0
  98. package/dist/interfaces/command/index.d.ts.map +1 -0
  99. package/dist/interfaces/controller/controller.d.ts +38 -0
  100. package/dist/interfaces/controller/controller.d.ts.map +1 -0
  101. package/dist/interfaces/handler/display-handler.d.ts +9 -1
  102. package/dist/interfaces/handler/display-handler.d.ts.map +1 -1
  103. package/dist/interfaces/handler/handler.d.ts +2 -0
  104. package/dist/interfaces/handler/handler.d.ts.map +1 -1
  105. package/dist/interfaces/handler/scene-handler.d.ts +1 -0
  106. package/dist/interfaces/handler/scene-handler.d.ts.map +1 -1
  107. package/dist/interfaces/handler/select-handler.d.ts +1 -0
  108. package/dist/interfaces/handler/select-handler.d.ts.map +1 -1
  109. package/dist/interfaces/handler/tool-handler.d.ts +1 -0
  110. package/dist/interfaces/handler/tool-handler.d.ts.map +1 -1
  111. package/dist/interfaces/manager/display-manager.d.ts +3 -1
  112. package/dist/interfaces/manager/display-manager.d.ts.map +1 -1
  113. package/dist/interfaces/manager/manager.d.ts +12 -1
  114. package/dist/interfaces/manager/manager.d.ts.map +1 -1
  115. package/dist/interfaces/manager/scene-manager.d.ts +3 -1
  116. package/dist/interfaces/manager/scene-manager.d.ts.map +1 -1
  117. package/dist/interfaces/manager/select-manager.d.ts +3 -1
  118. package/dist/interfaces/manager/select-manager.d.ts.map +1 -1
  119. package/dist/interfaces/manager/tool-manager.d.ts +3 -1
  120. package/dist/interfaces/manager/tool-manager.d.ts.map +1 -1
  121. package/dist/interfaces/mediator/index.d.ts +51 -0
  122. package/dist/interfaces/mediator/index.d.ts.map +1 -0
  123. package/dist/interfaces/middleware/index.d.ts +50 -0
  124. package/dist/interfaces/middleware/index.d.ts.map +1 -0
  125. package/dist/interfaces/module/renderable-module.d.ts +27 -0
  126. package/dist/interfaces/module/renderable-module.d.ts.map +1 -0
  127. package/dist/interfaces/module/runtime-module.d.ts +54 -0
  128. package/dist/interfaces/module/runtime-module.d.ts.map +1 -0
  129. package/dist/interfaces/module/updatable-module.d.ts +48 -0
  130. package/dist/interfaces/module/updatable-module.d.ts.map +1 -0
  131. package/dist/interfaces/policy/index.d.ts +21 -0
  132. package/dist/interfaces/policy/index.d.ts.map +1 -0
  133. package/dist/interfaces/response/index.d.ts +22 -0
  134. package/dist/interfaces/response/index.d.ts.map +1 -0
  135. package/dist/interfaces/store/display-store.d.ts +21 -0
  136. package/dist/interfaces/store/display-store.d.ts.map +1 -0
  137. package/dist/interfaces/store/{editor-store.d.ts → select-store.d.ts} +16 -24
  138. package/dist/interfaces/store/select-store.d.ts.map +1 -0
  139. package/dist/interfaces/store/tool-store.d.ts +27 -0
  140. package/dist/interfaces/store/tool-store.d.ts.map +1 -0
  141. package/dist/interfaces/store/transform-store.d.ts +11 -0
  142. package/dist/interfaces/store/transform-store.d.ts.map +1 -0
  143. package/dist/ioc/container.d.ts.map +1 -1
  144. package/dist/managers/display/display-manager.d.ts +5 -2
  145. package/dist/managers/display/display-manager.d.ts.map +1 -1
  146. package/dist/managers/scene/scene-manager.d.ts +3 -0
  147. package/dist/managers/scene/scene-manager.d.ts.map +1 -1
  148. package/dist/managers/select/select-manager.d.ts +5 -2
  149. package/dist/managers/select/select-manager.d.ts.map +1 -1
  150. package/dist/managers/tool/tool-manager.d.ts +7 -4
  151. package/dist/managers/tool/tool-manager.d.ts.map +1 -1
  152. package/dist/mediator/index.d.ts +14 -0
  153. package/dist/mediator/index.d.ts.map +1 -0
  154. package/dist/middlewares/exception-middleware.d.ts +7 -0
  155. package/dist/middlewares/exception-middleware.d.ts.map +1 -0
  156. package/dist/modules/controls-module.d.ts +58 -0
  157. package/dist/modules/controls-module.d.ts.map +1 -0
  158. package/dist/modules/gizmo-module.d.ts +34 -0
  159. package/dist/modules/gizmo-module.d.ts.map +1 -0
  160. package/dist/modules/raycast-module.d.ts +91 -0
  161. package/dist/modules/raycast-module.d.ts.map +1 -0
  162. package/dist/modules/scene-module.d.ts +32 -0
  163. package/dist/modules/scene-module.d.ts.map +1 -0
  164. package/dist/policy/tool-policy.d.ts +18 -0
  165. package/dist/policy/tool-policy.d.ts.map +1 -0
  166. package/dist/store/index.d.ts +4 -14
  167. package/dist/store/index.d.ts.map +1 -1
  168. package/dist/types/feature/feature-type.d.ts +16 -0
  169. package/dist/types/feature/feature-type.d.ts.map +1 -0
  170. package/dist/types/response/response-type.d.ts +19 -0
  171. package/dist/types/response/response-type.d.ts.map +1 -0
  172. package/package.json +1 -1
  173. package/dist/core/editor-renderer.d.ts +0 -89
  174. package/dist/core/editor-renderer.d.ts.map +0 -1
  175. package/dist/core/preview-renderer.d.ts +0 -16
  176. package/dist/core/preview-renderer.d.ts.map +0 -1
  177. package/dist/interfaces/api/transform-helpers-api.d.ts +0 -26
  178. package/dist/interfaces/api/transform-helpers-api.d.ts.map +0 -1
  179. package/dist/interfaces/policy/tool-availability-policy.d.ts +0 -12
  180. package/dist/interfaces/policy/tool-availability-policy.d.ts.map +0 -1
  181. package/dist/interfaces/store/editor-store.d.ts.map +0 -1
  182. package/dist/policy/tool-availability-policy.d.ts +0 -13
  183. package/dist/policy/tool-availability-policy.d.ts.map +0 -1
  184. package/dist/types/api/editor-api.d.ts +0 -4
  185. package/dist/types/api/editor-api.d.ts.map +0 -1
  186. package/dist/utils/renderer-api.d.ts +0 -43
  187. package/dist/utils/renderer-api.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"raycast-api.d.ts","sourceRoot":"","sources":["../../../src/interfaces/api/raycast-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;OAQG;IACH,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CACxC"}
1
+ {"version":3,"file":"raycast-api.d.ts","sourceRoot":"","sources":["../../../src/interfaces/api/raycast-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CACxC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Интерфейс для объектов, которые могут быть отрисованы.
3
+ *
4
+ * @remarks
5
+ * Предназначен для модулей, которым требуется кастомный рендеринг
6
+ * поверх основной сцены (например, `GizmoModule`).
7
+ *
8
+ * **Отличие от `IUpdatableModule`:**
9
+ * - `render()` вызывается **после** основного рендера сцены
10
+ * - `render()` предназначен для отрисовки дополнительных элементов
11
+ * (осей координат, отладочной информации, оверлеев)
12
+ *
13
+ * **Жизненный цикл:**
14
+ * 1. `init()` (из `IRuntimeModule`) — создание ресурсов
15
+ * 2. `render()` — отрисовка (вызывается каждый кадр)
16
+ * 3. `dispose()` (из `IRuntimeModule`) — освобождение ресурсов
17
+ *
18
+ * @public
19
+ * @interface
20
+ */
21
+ export interface IRenderable {
22
+ /**
23
+ * Выполняет кастомный рендеринг объекта.
24
+ *
25
+ * @remarks
26
+ * Вызывается каждый кадр **после** основного рендера сцены.
27
+ *
28
+ * **Важно:** метод не должен выполнять тяжёлые операции,
29
+ * чтобы не снижать производительность.
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * public render(): void {
34
+ * const canvas = this._domApi.getCanvas();
35
+ * this._gizmo?.render(canvas.width, canvas.height);
36
+ * this._drawFPS();
37
+ * }
38
+ * ```
39
+ *
40
+ * @public
41
+ * @method
42
+ */
43
+ render(): void;
44
+ }
45
+ //# sourceMappingURL=renderable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderable.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/api/renderer/renderable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,IAAI,IAAI,CAAC;CAChB"}
@@ -0,0 +1,34 @@
1
+ import * as THREE from 'three';
2
+ /**
3
+ * Низкоуровневый доступ к WebGLRenderer.
4
+ *
5
+ * @remarks
6
+ * Этот интерфейс **реализуется самим рендерером** (`Renderer`).
7
+ * Предоставляет прямой доступ к WebGLRenderer Three.js.
8
+ *
9
+ * Используется **только внутренними API-слоями** (например, `RendererApi`),
10
+ * но не модулями напрямую.
11
+ *
12
+ * @see {@link Renderer} - класс, реализующий этот интерфейс
13
+ *
14
+ * @public
15
+ * @interface
16
+ */
17
+ export interface IRendererAccess {
18
+ /**
19
+ * Возвращает WebGLRenderer.
20
+ *
21
+ * @returns THREE.WebGLRenderer - рендерер Three.js
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // Использование в RendererApi
26
+ * const renderer = this._rendererAccess.getRenderer();
27
+ * ```
28
+ *
29
+ * @public
30
+ * @method
31
+ */
32
+ getRenderer(): THREE.WebGLRenderer;
33
+ }
34
+ //# sourceMappingURL=renderer-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer-access.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/api/renderer/renderer-access.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;;;;;OAaG;IACH,WAAW,IAAI,KAAK,CAAC,aAAa,CAAC;CACpC"}
@@ -0,0 +1,37 @@
1
+ import * as THREE from 'three';
2
+ /**
3
+ * Предоставляет низкоуровневый доступ к камере рендерера.
4
+ *
5
+ * Этот интерфейс используется внутренними модулями (например, `CameraApi`) для
6
+ * получения прямого доступа к камере `Three.js`. Он не содержит логики управления
7
+ * камерой — только доступ к объекту.
8
+ *
9
+ * @remarks
10
+ * В отличие от `ICameraApi`, который предоставляет высокоуровневые операции
11
+ * (включение слоёв, настройка параметров), этот интерфейс нужен только для
12
+ * чтения камеры.
13
+ *
14
+ * @see {@link Renderer} - класс, который реализует этот интерфейс
15
+ *
16
+ * @public
17
+ * @interface
18
+ */
19
+ export interface IRendererCameraAccess {
20
+ /**
21
+ * Возвращает камеру рендерера.
22
+ *
23
+ * @returns Камера Three.js.
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const camera = cameraAccess.getCamera();
28
+ * camera.position.set(5, 5, 5);
29
+ * camera.lookAt(0, 0, 0);
30
+ * ```
31
+ *
32
+ * @public
33
+ * @method
34
+ */
35
+ getCamera(): THREE.Camera;
36
+ }
37
+ //# sourceMappingURL=renderer-camera-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer-camera-access.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/api/renderer/renderer-camera-access.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;;;;;;OAcG;IACH,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC;CAC3B"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Низкоуровневый доступ к DOM-элементам рендерера.
3
+ *
4
+ * @remarks
5
+ * Этот интерфейс предоставляет доступ к canvas и DOM-элементу рендерера.
6
+ * Используется внутренними API-слоями (например, `DomApi`)
7
+ * для получения доступа к DOM без необходимости знать конкретную реализацию рендерера.
8
+ *
9
+ * @see {@link Renderer} - класс, реализующий этот интерфейс
10
+ *
11
+ * @public
12
+ * @interface
13
+ */
14
+ export interface IRendererDomAccess {
15
+ /**
16
+ * Возвращает canvas-элемент редактора.
17
+ *
18
+ * @remarks
19
+ * Canvas используется для рендеринга 3D-сцены.
20
+ *
21
+ * @returns HTMLCanvasElement - canvas элемент
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const canvas = domAccess.getCanvas();
26
+ * ```
27
+ *
28
+ * @public
29
+ */
30
+ getCanvas(): HTMLCanvasElement;
31
+ /**
32
+ * Возвращает DOM-элемент рендерера.
33
+ *
34
+ * @remarks
35
+ * Обычно это тот же canvas, но в некоторых случаях может быть
36
+ * другим элементом (например, div-обёрткой). Используется для
37
+ * подписки на события ввода (mousemove, click, dblclick и т.д.).
38
+ *
39
+ * @returns HTMLElement - DOM-элемент для подписки на события
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * const domElement = domAccess.getDomElement();
44
+ * ```
45
+ *
46
+ * @public
47
+ * @method
48
+ */
49
+ getDomElement(): HTMLElement;
50
+ }
51
+ //# sourceMappingURL=renderer-dom-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer-dom-access.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/api/renderer/renderer-dom-access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;;;OAcG;IACH,SAAS,IAAI,iBAAiB,CAAC;IAE/B;;;;;;;;;;;;;;;;;OAiBG;IACH,aAAa,IAAI,WAAW,CAAC;CAC9B"}
@@ -0,0 +1,45 @@
1
+ import * as THREE from 'three';
2
+ /**
3
+ * Низкоуровневый доступ к сцене рендерера.
4
+ *
5
+ * @remarks
6
+ * Этот интерфейс предоставляет доступ к сцене Three.js.
7
+ * Используется внутренними API-слоями (например, `SceneApi`)
8
+ * для получения доступа к сцене без необходимости знать конкретную
9
+ * реализацию рендерера.
10
+ *
11
+ * @see {@link Renderer} - класс, реализующий этот интерфейс
12
+ *
13
+ * @public
14
+ * @interface
15
+ */
16
+ export interface IRendererSceneAccess {
17
+ /**
18
+ * Возвращает сцену рендерера.
19
+ *
20
+ * @returns THREE.Scene - сцена Three.js
21
+ *
22
+ * @remarks
23
+ * Сцена содержит все объекты, которые рендерятся на экране.
24
+ * Через неё можно добавлять, удалять и модифицировать объекты.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const scene = sceneAccess.getScene();
29
+ *
30
+ * // Добавление объекта
31
+ * scene.add(myMesh);
32
+ *
33
+ * // Поиск объекта по имени
34
+ * const obj = scene.getObjectByName('myObject');
35
+ *
36
+ * // Удаление объекта
37
+ * scene.remove(obj);
38
+ * ```
39
+ *
40
+ * @public
41
+ * @method
42
+ */
43
+ getScene(): THREE.Scene;
44
+ }
45
+ //# sourceMappingURL=renderer-scene-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer-scene-access.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/api/renderer/renderer-scene-access.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC;CACzB"}
@@ -0,0 +1,35 @@
1
+ import * as THREE from 'three';
2
+ /**
3
+ * API для доступа к WebGLRenderer.
4
+ *
5
+ * @remarks
6
+ * Этот интерфейс **реализуется прослойкой** (`RendererApi`), а не самим рендерером.
7
+ * Предоставляет тот же функционал, но через верхнеуровневый API.
8
+ *
9
+ * Используется **модулями** (например, `GizmoModule`), которым нужен доступ
10
+ * к WebGLRenderer, но которые не должны знать о конкретной реализации рендерера.
11
+ *
12
+ * @see {@link RendererApi} - реализация этого интерфейса
13
+ * @see {@link IRendererAccess} - нижнеуровневый доступ (реализуется рендерером)
14
+ *
15
+ * @internal
16
+ * @interface
17
+ */
18
+ export interface IRendererApi {
19
+ /**
20
+ * Возвращает WebGLRenderer.
21
+ *
22
+ * @returns THREE.WebGLRenderer - рендерер Three.js
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const renderer = rendererApi.getRenderer();
27
+ * renderer.setSize(width, height);
28
+ * ```
29
+ *
30
+ * @internal
31
+ * @method
32
+ */
33
+ getRenderer(): THREE.WebGLRenderer;
34
+ }
35
+ //# sourceMappingURL=renderer-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer-api.d.ts","sourceRoot":"","sources":["../../../src/interfaces/api/renderer-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;;;;;OAaG;IACH,WAAW,IAAI,KAAK,CAAC,aAAa,CAAC;CACpC"}
@@ -1,50 +1,90 @@
1
1
  import * as THREE from 'three';
2
2
  /**
3
- * Мини-API для взаимодействия со сценой и слоями камеры.
3
+ * Высокоуровневое API для управления сценой.
4
4
  *
5
5
  * @remarks
6
- * Абстрагирует прямой доступ к `THREE.Scene`/`THREE.Camera`, позволяя
7
- * хендлерам добавлять/удалять объекты и управлять видимостью слоёв.
8
- * Рекомендуется использовать совместно с константами слоёв
9
- * (например, `MESH_LAYER`, `LINE_LAYER`, `OVERLAY_LAYER`).
6
+ * Предоставляет базовые операции для работы со сценой Three.js:
7
+ * - получение сцены
8
+ * - добавление объектов на сцену
9
+ * - удаление объектов со сцены
10
10
  *
11
- * @example
12
- * // Добавить оверлей на слой подсветок и убедиться, что камера его видит:
13
- * sceneApi.add(overlayLine, OVERLAY_LAYER);
14
- * sceneApi.enableCameraLayer(OVERLAY_LAYER);
11
+ * Используется модулями и хендлерами, которым нужно управлять
12
+ * объектами на сцене (например, добавление мешей, света, вспомогательных элементов).
13
+ *
14
+ * @see {@link SceneApi} - реализация этого интерфейса
15
+ * @see {@link IRendererSceneAccess} - низкоуровневый доступ к сцене (internal)
16
+ *
17
+ * @internal
18
+ * @interface
15
19
  */
16
20
  export interface ISceneApi {
17
21
  /**
18
- * Добавляет объект в сцену.
22
+ * Возвращает сцену рендерера.
19
23
  *
20
- * @param obj - Объект для добавления (`THREE.Object3D`).
21
- * @param layer - (Опц.) Слой, который следует выставить объекту перед добавлением.
24
+ * @returns THREE.Scene - сцена Three.js
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const scene = sceneApi.getScene();
29
+ * ```
30
+ *
31
+ * @internal
32
+ * @method
33
+ */
34
+ getScene(): THREE.Scene;
35
+ /**
36
+ * Добавляет объект на сцену.
37
+ *
38
+ * @param object - объект Three.js для добавления (Mesh, Light, Group и т.д.)
22
39
  *
23
40
  * @remarks
24
- * Если `layer` указан, реализация должна вызвать `obj.layers.set(layer)` или
25
- * эквивалентную логику, прежде чем поместить объект в сцену.
41
+ * Объект будет виден на сцене после вызова этого метода.
42
+ * Если объект уже добавлен, он не будет продублирован.
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const mesh = new THREE.Mesh(geometry, material);
47
+ * sceneApi.addToScene(mesh);
48
+ * ```
49
+ *
50
+ * @internal
51
+ * @method
26
52
  */
27
- addObject(obj: THREE.Object3D, layer?: number): void;
53
+ addToScene(object: THREE.Object3D): void;
28
54
  /**
29
- * Удаляет объект из сцены.
55
+ * Удаляет объект со сцены.
30
56
  *
31
- * @param obj - Объект для удаления.
57
+ * @param object - объект Three.js для удаления
32
58
  *
33
59
  * @remarks
34
- * Реализация может дополнительно освобождать ресурсы (материалы, геометрию)
35
- * по соглашению, но это не обязательно для интерфейса.
60
+ * Объект перестаёт отображаться на сцене.
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * sceneApi.removeFromScene(mesh);
65
+ * ```
66
+ *
67
+ * @internal
68
+ * @method
36
69
  */
37
- removeObject(obj: THREE.Object3D): void;
70
+ removeFromScene(object: THREE.Object3D): void;
38
71
  /**
39
- * Включает указанный слой для активной камеры,
40
- * чтобы объекты на этом слое были видимы.
72
+ * Добавляет объект в сцену и (опционально) выставляет ему слой.
73
+ *
74
+ * @param object - Объект, который нужно добавить в сцену.
75
+ * @param layer - (Опц.) Номер слоя, который следует установить объекту перед добавлением.
41
76
  *
42
- * @param layer - Номер слоя, который требуется включить.
77
+ * @remarks
78
+ * Если рендерер уже диспоузнут (scene отсутствует), метод тихо завершится.
79
+ * Слой задаётся через `obj.layers.set(layer)`, после чего объект добавляется в `this.scene`.
43
80
  *
44
81
  * @example
45
- * // Показать оверлеи подсветки:
46
- * sceneApi.enableCameraLayer(OVERLAY_LAYER);
82
+ * // Добавить оверлей на слой подсветок:
83
+ * add(overlayLine, OVERLAY_LAYER);
84
+ *
85
+ * @internal
86
+ * @method
47
87
  */
48
- enableCameraLayer(layer: number): void;
88
+ addObject(object: THREE.Object3D, layer?: number): void;
49
89
  }
50
90
  //# sourceMappingURL=scene-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scene-api.d.ts","sourceRoot":"","sources":["../../../src/interfaces/api/scene-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;;;OASG;IACH,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErD;;;;;;;;OAQG;IACH,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IAExC;;;;;;;;;OASG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC"}
1
+ {"version":3,"file":"scene-api.d.ts","sourceRoot":"","sources":["../../../src/interfaces/api/scene-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;;;;;;OAYG;IACH,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC;IAExB;;;;;;;;;;;;;;;;;OAiBG;IACH,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IAEzC;;;;;;;;;;;;;;;OAeG;IACH,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IAE9C;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzD"}
@@ -0,0 +1,120 @@
1
+ import { ToolType } from '@planara/types';
2
+ import { TransformListener } from '../../types/listener/transform-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,yCAAyC,CAAC;AAEjF;;;;;;;;;;;;;;;;;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/feature-type';
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,kCAAkC,CAAC;AAEpE;;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=controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/interfaces/controller/controller.ts"],"names":[],"mappings":"AAAA,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"}
@@ -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"}