@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,120 +1,152 @@
1
- import { Figure } from '@planara/types';
2
1
  import { Disposable } from 'tsyringe';
2
+ import { IRendererCameraAccess } from '../interfaces/api/renderer/renderer-camera-access';
3
+ import { IRendererAccess } from '../interfaces/api/renderer/renderer-access';
4
+ import { IRendererDomAccess } from '../interfaces/api/renderer/renderer-dom-access';
5
+ import { IRendererSceneAccess } from '../interfaces/api/renderer/renderer-scene-access';
6
+ import { IRenderable } from '../interfaces/api/renderer/renderable';
3
7
  import * as THREE from 'three';
4
8
  /**
5
- * Абстрактный базовый класс рендерера для работы с WebGL через OGL.
6
- * Отвечает за инициализацию сцены, камеры и цикла рендеринга.
9
+ * Базовый класс рендерера для работы с WebGL через Three.js.
10
+ *
11
+ * @remarks
12
+ * Отвечает за инициализацию сцены, камеры, освещения и цикла рендеринга.
13
+ * Предоставляет низкоуровневый API для доступа к основным компонентам Three.js.
14
+ *
15
+ * **Не содержит логики управления камерой или выделения объектов** —
16
+ * это ответственность модулей (например, `ControlsModule`, `RaycasterModule`).
17
+ *
18
+ * Рендерер реализует интерфейсы нижнего API:
19
+ * - `IRendererAccess` — доступ к WebGLRenderer
20
+ * - `IRendererCameraAccess` — доступ к камере
21
+ * - `IRendererDomAccess` — доступ к DOM-элементам
22
+ * - `IRendererSceneAccess` — доступ к сцене
23
+ *
24
+ * @see {@link IRendererAccess} - доступ к WebGLRenderer
25
+ * @see {@link IRendererCameraAccess} - доступ к камере
26
+ * @see {@link IRendererDomAccess} - доступ к DOM
27
+ * @see {@link IRendererSceneAccess} - доступ к сцене
28
+ *
7
29
  * @public
30
+ * @class
8
31
  */
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);
25
- /**
26
- * Обновляет размер рендерера и камеры при изменении размеров canvas.
27
- */
28
- resize(): void;
29
- /**
30
- * Выполняет рендеринг сцены с текущей камерой.
31
- */
32
- protected render(): void;
32
+ export declare class Renderer implements IRendererAccess, IRendererCameraAccess, IRendererDomAccess, IRendererSceneAccess, IRenderable, Disposable {
33
33
  /**
34
- * Метод для обновления логики рендерера.
35
- */
36
- protected update(): void;
37
- /**
38
- * Запускает основной цикл рендеринга.
39
- */
40
- loop(): void;
41
- /**
42
- * Добавление фигуры на сцену.
43
- * @param figure - Данные фигуры: position, normal, uv
34
+ * Корневой объект сцены Three.js.
35
+ *
36
+ * @protected
37
+ * @member
44
38
  */
45
- addFigure(figure: Figure): THREE.Mesh;
39
+ protected scene: THREE.Scene;
46
40
  /**
47
- * Добавляет фигуру в сцену и сохраняет его во внутреннем массиве.
41
+ * Камера для сцены Three.js.
48
42
  *
49
- * @param mesh - Фигура для добавления в сцену.
50
- * @internal
43
+ * @protected
44
+ * @member
51
45
  */
52
- addMesh(mesh: THREE.Mesh): void;
46
+ protected camera: THREE.PerspectiveCamera;
53
47
  /**
54
- * Убирает фигуру со сцены
48
+ * Экземпляр Three.js WebGLRenderer.
55
49
  *
56
- * @param mesh - Фигура для удаления со сцены.
57
- * @internal
50
+ * @protected
51
+ * @member
58
52
  */
59
- removeMesh(mesh: THREE.Mesh): void;
53
+ protected renderer: THREE.WebGLRenderer;
60
54
  /**
61
- * Возвращает список всех фигур, находящихся в сцене.
55
+ * HTML-элемент canvas, на котором рендерится сцена.
62
56
  *
63
- * @returns Массив текущих фигур.
64
- * @internal
57
+ * @protected
58
+ * @member
65
59
  */
66
- getMeshes(): THREE.Mesh[];
60
+ protected canvas: HTMLCanvasElement;
67
61
  /**
68
- * Добавляет объект в сцену и (опционально) выставляет ему слой.
62
+ * Конструктор рендерера.
69
63
  *
70
- * @param obj - Объект, который нужно добавить в сцену.
71
- * @param layer - (Опц.) Номер слоя, который следует установить объекту перед добавлением.
64
+ * @param _canvas - HTMLCanvasElement для рендеринга
72
65
  *
73
66
  * @remarks
74
- * Если рендерер уже диспоузнут (scene отсутствует), метод тихо завершится.
75
- * Слой задаётся через `obj.layers.set(layer)`, после чего объект добавляется в `this.scene`.
67
+ * Инициализирует сцену с тёмным фоном, перспективную камеру
68
+ * (45° FOV, near 0.1, far 1000) и базовое освещение:
69
+ * - `AmbientLight` (0xffffff, 0.5) — общий свет
70
+ * - `DirectionalLight` (0xffffff, 1) — направленный свет
76
71
  *
77
72
  * @example
78
- * // Добавить оверлей на слой подсветок:
79
- * add(overlayLine, OVERLAY_LAYER);
73
+ * ```typescript
74
+ * const renderer = new Renderer(canvas);
75
+ * ```
80
76
  *
81
- * @internal
77
+ * @public
78
+ * @constructor
82
79
  */
83
- addObject(obj: THREE.Object3D, layer?: number): void;
80
+ constructor(_canvas: HTMLCanvasElement);
84
81
  /**
85
- * Удаляет объект из сцены (или из его родителя, если он есть).
86
- *
87
- * @param obj - Объект, который необходимо удалить.
82
+ * Обновляет размер рендерера и пропорции камеры.
88
83
  *
89
84
  * @remarks
90
- * Если у объекта есть `parent`, он будет удалён из родителя. Иначе — метод попытается
91
- * удалить его напрямую из `this.scene`. В рамках данного API метод не отвечает за
92
- * освобождение GPU-ресурсов; освобождайте геометрию/материалы отдельно при необходимости.
85
+ * Вызывается при изменении размеров canvas (например, при ресайзе окна браузера).
93
86
  *
94
87
  * @example
95
- * // Снять оверлей со сцены:
96
- * removeObject(overlayLine);
88
+ * ```typescript
89
+ * window.addEventListener('resize', () => renderer.resize());
90
+ * ```
97
91
  *
98
- * @internal
92
+ * @oublic
93
+ * @method
99
94
  */
100
- removeObject(obj: THREE.Object3D): void;
95
+ resize(): void;
101
96
  /**
102
- * Включает указанный слой у активной камеры.
97
+ * Выполняет рендеринг текущего кадра.
103
98
  *
104
- * @param layer - Номер слоя, который требуется сделать видимым для камеры.
99
+ * @remarks
100
+ * Рендерит сцену с текущей камерой.
101
+ * Вызывается автоматически в цикле `loop()`.
102
+ *
103
+ * @public
104
+ * @method
105
+ */
106
+ render(): void;
107
+ /**
108
+ * Обновляет состояние рендерера перед рендерингом.
105
109
  *
106
110
  * @remarks
107
- * Полезно для показа служебных оверлеев (например, подсветки) на отдельном слое.
108
- * Метод не изменяет слои Raycaster — ими должен управлять другой слой API (например, IRaycastAPI).
111
+ * Пустой метод, предназначен для переопределения в наследниках
112
+ * (например, для обновления контролов камеры).
113
+ *
114
+ * @protected
115
+ * @method
116
+ * @virtual
117
+ */
118
+ protected update(): void;
119
+ /**
120
+ * Запускает основной цикл рендеринга.
121
+ *
122
+ * @remarks
123
+ * Вызывает `update()` и `render()` каждый кадр с помощью `requestAnimationFrame`.
124
+ * **Важно:** вызывать метод только один раз.
109
125
  *
110
126
  * @example
111
- * // Убедиться, что камера видит слой оверлеев:
112
- * enableCameraLayer(OVERLAY_LAYER);
127
+ * ```typescript
128
+ * renderer.loop();
129
+ * ```
130
+ *
131
+ * @public
132
+ * @method
133
+ */
134
+ loop(): void;
135
+ getCamera(): THREE.Camera;
136
+ getRenderer(): THREE.WebGLRenderer;
137
+ getCanvas(): HTMLCanvasElement;
138
+ getDomElement(): HTMLElement;
139
+ getScene(): THREE.Scene;
140
+ /**
141
+ * Освобождает ресурсы рендерера.
142
+ *
143
+ * @remarks
144
+ * Удаляет ссылки на сцену, камеру и canvas, вызывает `dispose()` у WebGLRenderer.
145
+ * Вызывается при уничтожении редактора IOC-контейнером.
113
146
  *
114
- * @internal
147
+ * @public
148
+ * @method
115
149
  */
116
- enableCameraLayer(layer: number): void;
117
- /** Освобождает ресурсы рендерера, очищает внутренние данные. */
118
150
  dispose(): Promise<void> | void;
119
151
  }
120
152
  //# 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,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBACa,QACX,YACE,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,UAAU;IAEZ;;;;;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;;;;;;;;;;;;;;;;;;OAkBG;gBACkC,OAAO,EAAE,iBAAiB;IA+B/D;;;;;;;;;;;;;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,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":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,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,9 @@
1
+ import { ResponseType } from '../types/response/response-type';
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":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,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"}
@@ -1,10 +1,11 @@
1
1
  import { EventTopics } from './event-topics';
2
- import { SelectMode } from '@planara/types';
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,gBAAgB,CAAC;AAE7C;;;;;;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
1
  import { EditorEvents } from './editor-events';
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,iBAAiB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;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"}
@@ -1,10 +1,12 @@
1
1
  import { IDisplayHandler } from '../../interfaces/handler/display-handler';
2
- import { DisplayMode } from '@planara/types';
3
2
  import { IMeshApi } from '../../interfaces/api/mesh-api';
3
+ import { DisplayMode } from '@planara/types';
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,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D,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"}
@@ -4,7 +4,9 @@ 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,wCAAwC,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,KAAK,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAS5D;;;;;;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
1
  import { ISceneHandler } from '../../interfaces/handler/scene-handler';
2
2
  import { IMeshApi } from '../../interfaces/api/mesh-api';
3
3
  import { SceneMode } from '@planara/types';
4
- import { IEditorStore } from '../../interfaces/store/editor-store';
4
+ import { ISelectStore } from '../../interfaces/store/select-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,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;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"}
@@ -1,6 +1,8 @@
1
- import { IEditorApi } from '../../types/api/editor-api';
2
1
  import { ISelectHandler } from '../../interfaces/handler/select-handler';
3
- import { IEditorStore } from '../../interfaces/store/editor-store';
2
+ import { ISelectStore } from '../../interfaces/store/select-store';
3
+ import { ISceneApi } from '../../interfaces/api/scene-api';
4
+ import { ICameraApi } from '../../interfaces/api/camera-api';
5
+ import { IRaycastApi } from '../../interfaces/api/raycast-api';
4
6
  import { SelectMode } from '@planara/types';
5
7
  import { EditorEvents } from '../../events/editor-events';
6
8
  import { EventTopics } from '../../events/event-topics';
@@ -10,10 +12,14 @@ import { SelectEventType } from '../../types/event/select-event-type';
10
12
  * Управляет сценой через payload события рендерера.
11
13
  * Обрабатывает hover и click.
12
14
  * Меняет цвет грани конкретной модели из payload, в случае null возвращает исходное состояние.
15
+ *
13
16
  * @internal
17
+ * @class
14
18
  */
15
19
  export declare class EdgeSelectHandler implements ISelectHandler {
16
- private _api;
20
+ private _sceneApi;
21
+ private _cameraApi;
22
+ private _raycastApi;
17
23
  private _store;
18
24
  /** Режим, которым управляет хендлер, нужен только менеджеру */
19
25
  readonly mode: SelectMode;
@@ -29,7 +35,7 @@ export declare class EdgeSelectHandler implements ISelectHandler {
29
35
  private readonly _hoverColor;
30
36
  /** Цвет выделенного ребра */
31
37
  private readonly _selectColor;
32
- constructor(_api: IEditorApi, _store: IEditorStore);
38
+ constructor(_sceneApi: ISceneApi, _cameraApi: ICameraApi, _raycastApi: IRaycastApi, _store: ISelectStore);
33
39
  /** Обработка текущего режима выборки. */
34
40
  handle(payload: EditorEvents[EventTopics.SelectHover] | EditorEvents[EventTopics.SelectClick], type: SelectEventType): void;
35
41
  /** Откат текущего режима выборки */
@@ -1 +1 @@
1
- {"version":3,"file":"edge-select-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/select/edge-select-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAOtE;;;;;;GAMG;AACH,qBACa,iBAAkB,YAAW,cAAc;IAqB7B,OAAO,CAAC,IAAI;IACX,OAAO,CAAC,MAAM;IArBxC,+DAA+D;IAC/D,SAAgB,IAAI,EAAE,UAAU,CAAmB;IAEnD,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,+BAA+B;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC,iEAAiE;IACjE,OAAO,CAAC,QAAQ,CAA2D;IAC3E,gEAAgE;IAChE,OAAO,CAAC,SAAS,CAA2D;IAG5E,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;gBAGZ,IAAI,EAAE,UAAU,EACf,MAAM,EAAE,YAAY;IActD,yCAAyC;IAClC,MAAM,CACX,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,EACtF,IAAI,EAAE,eAAe,GACpB,IAAI;IAoEP,oCAAoC;IAC7B,QAAQ,IAAI,IAAI;IAUvB,mFAAmF;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IActC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAyBxB,2EAA2E;IAC3E,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,KAAK;IAOb,qEAAqE;IACrE,OAAO,CAAC,6BAA6B;IAsCrC,wEAAwE;IACxE,OAAO,CAAC,oBAAoB;CA2E7B"}
1
+ {"version":3,"file":"edge-select-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/select/edge-select-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAOtE;;;;;;;;GAQG;AACH,qBACa,iBAAkB,YAAW,cAAc;IAqB/B,OAAO,CAAC,SAAS;IAChB,OAAO,CAAC,UAAU;IACjB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IAvBvC,+DAA+D;IAC/D,SAAgB,IAAI,EAAE,UAAU,CAAmB;IAEnD,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,+BAA+B;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC,iEAAiE;IACjE,OAAO,CAAC,QAAQ,CAA2D;IAC3E,gEAAgE;IAChE,OAAO,CAAC,SAAS,CAA2D;IAG5E,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;gBAGd,SAAS,EAAE,SAAS,EACnB,UAAU,EAAE,UAAU,EACrB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,YAAY;IAcrD,yCAAyC;IAClC,MAAM,CACX,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,EACtF,IAAI,EAAE,eAAe,GACpB,IAAI;IAoEP,oCAAoC;IAC7B,QAAQ,IAAI,IAAI;IAUvB,mFAAmF;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IActC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAyBxB,2EAA2E;IAC3E,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,KAAK;IAOb,qEAAqE;IACrE,OAAO,CAAC,6BAA6B;IAsCrC,wEAAwE;IACxE,OAAO,CAAC,oBAAoB;CA2E7B"}
@@ -1,6 +1,8 @@
1
1
  import { ISelectHandler } from '../../interfaces/handler/select-handler';
2
- import { IEditorStore } from '../../interfaces/store/editor-store';
3
- import { IEditorApi } from '../../types/api/editor-api';
2
+ import { ISelectStore } from '../../interfaces/store/select-store';
3
+ import { ICameraApi } from '../../interfaces/api/camera-api';
4
+ import { ISceneApi } from '../../interfaces/api/scene-api';
5
+ import { IRaycastApi } from '../../interfaces/api/raycast-api';
4
6
  import { SelectMode } from '@planara/types';
5
7
  import { EditorEvents } from '../../events/editor-events';
6
8
  import { EventTopics } from '../../events/event-topics';
@@ -10,10 +12,14 @@ import { SelectEventType } from '../../types/event/select-event-type';
10
12
  * Управляет сценой через payload события рендерера.
11
13
  * Обрабатывает hover и click.
12
14
  * Меняет цвет грани конкретной модели из payload, в случае null возвращает исходное состояние.
15
+ *
13
16
  * @internal
17
+ * @class
14
18
  */
15
19
  export declare class FaceSelectHandler implements ISelectHandler {
16
- private _api;
20
+ private _cameraApi;
21
+ private _sceneApi;
22
+ private _raycastApi;
17
23
  private _store;
18
24
  /** Режим, которым управляет хендлер, нужен только менеджеру */
19
25
  readonly mode: SelectMode;
@@ -33,7 +39,7 @@ export declare class FaceSelectHandler implements ISelectHandler {
33
39
  private readonly _normalEps;
34
40
  /** Погрешность на принадлежность одной плоскости */
35
41
  private readonly _planeEps;
36
- constructor(_api: IEditorApi, _store: IEditorStore);
42
+ constructor(_cameraApi: ICameraApi, _sceneApi: ISceneApi, _raycastApi: IRaycastApi, _store: ISelectStore);
37
43
  /** Обработка текущего режима выборки. */
38
44
  handle(payload: EditorEvents[EventTopics.SelectHover] | EditorEvents[EventTopics.SelectClick], type: SelectEventType): void;
39
45
  /** Откат текущего режима выборки */
@@ -1 +1 @@
1
- {"version":3,"file":"face-select-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/select/face-select-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAyBtE;;;;;;GAMG;AACH,qBACa,iBAAkB,YAAW,cAAc;IA+B7B,OAAO,CAAC,IAAI;IACX,OAAO,CAAC,MAAM;IA/BxC,+DAA+D;IAC/D,SAAgB,IAAI,EAAE,UAAU,CAAmB;IAEnD,+BAA+B;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,8BAA8B;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAMzC,wDAAwD;IACxD,OAAO,CAAC,QAAQ,CAA0B;IAC1C,uDAAuD;IACvD,OAAO,CAAC,SAAS,CAA0B;IAG3C,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAG7C,wCAAwC;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,oDAAoD;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBAGD,IAAI,EAAE,UAAU,EACf,MAAM,EAAE,YAAY;IActD,yCAAyC;IAClC,MAAM,CACX,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,EACtF,IAAI,EAAE,eAAe,GACpB,IAAI;IAyEP,oCAAoC;IAC7B,QAAQ,IAAI,IAAI;IAWvB,mFAAmF;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAatC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAuGzB,6EAA6E;IAC7E,OAAO,CAAC,oBAAoB;IA8C5B,uCAAuC;IACvC,OAAO,CAAC,KAAK;IAUb,6DAA6D;IAC7D,OAAO,CAAC,oBAAoB;IAgB5B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA8BxB,iDAAiD;IACjD,OAAO,CAAC,SAAS;IAQjB,0DAA0D;IAC1D,OAAO,CAAC,uBAAuB;IA6C/B,kDAAkD;IAClD,OAAO,CAAC,mBAAmB;IAO3B,+DAA+D;IAC/D,OAAO,CAAC,WAAW;IAInB,0CAA0C;IAC1C,OAAO,CAAC,UAAU;IAOlB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IA0BrB,wCAAwC;IACxC,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,sBAAsB;IAqE9B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,sBAAsB;CAiC/B"}
1
+ {"version":3,"file":"face-select-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/select/face-select-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAWtE;;;;;;;;GAQG;AACH,qBACa,iBAAkB,YAAW,cAAc;IA+B9B,OAAO,CAAC,UAAU;IACnB,OAAO,CAAC,SAAS;IACf,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IAjCvC,+DAA+D;IAC/D,SAAgB,IAAI,EAAE,UAAU,CAAmB;IAEnD,+BAA+B;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,8BAA8B;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAMzC,wDAAwD;IACxD,OAAO,CAAC,QAAQ,CAA0B;IAC1C,uDAAuD;IACvD,OAAO,CAAC,SAAS,CAA0B;IAG3C,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAG7C,wCAAwC;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,oDAAoD;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBAGF,UAAU,EAAE,UAAU,EACvB,SAAS,EAAE,SAAS,EAClB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,YAAY;IAcrD,yCAAyC;IAClC,MAAM,CACX,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,EACtF,IAAI,EAAE,eAAe,GACpB,IAAI;IAyEP,oCAAoC;IAC7B,QAAQ,IAAI,IAAI;IAWvB,mFAAmF;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAatC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAuGzB,6EAA6E;IAC7E,OAAO,CAAC,oBAAoB;IA8C5B,uCAAuC;IACvC,OAAO,CAAC,KAAK;IAUb,6DAA6D;IAC7D,OAAO,CAAC,oBAAoB;IAgB5B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA8BxB,iDAAiD;IACjD,OAAO,CAAC,SAAS;IAQjB,0DAA0D;IAC1D,OAAO,CAAC,uBAAuB;IA6C/B,kDAAkD;IAClD,OAAO,CAAC,mBAAmB;IAO3B,+DAA+D;IAC/D,OAAO,CAAC,WAAW;IAInB,0CAA0C;IAC1C,OAAO,CAAC,UAAU;IAOlB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IA0BrB,wCAAwC;IACxC,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,sBAAsB;IAqE9B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,sBAAsB;CAiC/B"}