@planara/core 1.6.0 → 2.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 (63) hide show
  1. package/README.md +10 -2
  2. package/dist/core/editor-renderer.d.ts +30 -32
  3. package/dist/core/editor-renderer.d.ts.map +1 -1
  4. package/dist/core/preview-renderer.d.ts +1 -6
  5. package/dist/core/preview-renderer.d.ts.map +1 -1
  6. package/dist/core/renderer.d.ts +10 -27
  7. package/dist/core/renderer.d.ts.map +1 -1
  8. package/dist/events/editor-events.d.ts +9 -3
  9. package/dist/events/editor-events.d.ts.map +1 -1
  10. package/dist/events/event-bus.d.ts.map +1 -1
  11. package/dist/events/event-topics.d.ts +3 -1
  12. package/dist/events/event-topics.d.ts.map +1 -1
  13. package/dist/extensions/orbit-extension.d.ts +5 -5
  14. package/dist/extensions/orbit-extension.d.ts.map +1 -1
  15. package/dist/extensions/symmetric-axes-helper.d.ts +5 -0
  16. package/dist/extensions/symmetric-axes-helper.d.ts.map +1 -0
  17. package/dist/handlers/display/wireframe-handler.d.ts +6 -14
  18. package/dist/handlers/display/wireframe-handler.d.ts.map +1 -1
  19. package/dist/handlers/select/mesh-select-handler.d.ts +20 -12
  20. package/dist/handlers/select/mesh-select-handler.d.ts.map +1 -1
  21. package/dist/handlers/tool/base-tool-handler.d.ts +25 -0
  22. package/dist/handlers/tool/base-tool-handler.d.ts.map +1 -0
  23. package/dist/handlers/tool/rotate-tool-handler.d.ts +19 -0
  24. package/dist/handlers/tool/rotate-tool-handler.d.ts.map +1 -0
  25. package/dist/handlers/tool/scale-tool-handler.d.ts +19 -0
  26. package/dist/handlers/tool/scale-tool-handler.d.ts.map +1 -0
  27. package/dist/handlers/tool/translate-tool-handler.d.ts +19 -0
  28. package/dist/handlers/tool/translate-tool-handler.d.ts.map +1 -0
  29. package/dist/hub/editor-hub.d.ts +5 -2
  30. package/dist/hub/editor-hub.d.ts.map +1 -1
  31. package/dist/index.cjs.js +3833 -39
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.es.js +22571 -1515
  35. package/dist/index.full.d.ts +60 -82
  36. package/dist/index.public.d.ts +49 -61
  37. package/dist/index.umd.js +3833 -39
  38. package/dist/interfaces/api/mesh-api.d.ts +6 -6
  39. package/dist/interfaces/api/mesh-api.d.ts.map +1 -1
  40. package/dist/interfaces/api/transform-helpers-api.d.ts +25 -0
  41. package/dist/interfaces/api/transform-helpers-api.d.ts.map +1 -0
  42. package/dist/interfaces/handler/display-handler.d.ts +1 -0
  43. package/dist/interfaces/handler/display-handler.d.ts.map +1 -1
  44. package/dist/interfaces/handler/select-handler.d.ts +1 -0
  45. package/dist/interfaces/handler/select-handler.d.ts.map +1 -1
  46. package/dist/interfaces/handler/tool-handler.d.ts +14 -0
  47. package/dist/interfaces/handler/tool-handler.d.ts.map +1 -0
  48. package/dist/interfaces/manager/tool-manager.d.ts +8 -0
  49. package/dist/interfaces/manager/tool-manager.d.ts.map +1 -0
  50. package/dist/ioc/container.d.ts.map +1 -1
  51. package/dist/managers/display/display-manager.d.ts.map +1 -1
  52. package/dist/managers/select/select-manager.d.ts.map +1 -1
  53. package/dist/managers/tool/tool-manager.d.ts +18 -0
  54. package/dist/managers/tool/tool-manager.d.ts.map +1 -0
  55. package/dist/utils/renderer-api.d.ts +12 -11
  56. package/dist/utils/renderer-api.d.ts.map +1 -1
  57. package/package.json +5 -4
  58. package/dist/extensions/mesh-extension.d.ts +0 -12
  59. package/dist/extensions/mesh-extension.d.ts.map +0 -1
  60. package/dist/interfaces/api/renderer-api.d.ts +0 -27
  61. package/dist/interfaces/api/renderer-api.d.ts.map +0 -1
  62. package/dist/utils/program-settings.d.ts +0 -13
  63. package/dist/utils/program-settings.d.ts.map +0 -1
package/README.md CHANGED
@@ -3,13 +3,13 @@
3
3
 
4
4
  ## Planara Core
5
5
 
6
- 3D-библиотека на OGL для браузера, предназначенная для работы с `.obj` моделями и создания простого 3D-редактора.
6
+ 3D-библиотека на Three.js для браузера, предназначенная для работы с `.obj` моделями и создания простого 3D-редактора.
7
7
 
8
8
  Библиотека предоставляет базовые инструменты для визуализации, редактирования, добавления объектов и покраски.
9
9
 
10
10
  ### Возможности
11
11
 
12
- - Рендеринг 3D сцены через `OGL` (WebGL2).
12
+ - Рендеринг 3D сцены через `Three.js` (WebGL2).
13
13
 
14
14
  - Базовая камера с Orbit-controls (вращение, зум).
15
15
 
@@ -22,3 +22,11 @@
22
22
  - Покраска объектов (через материалы или vertex colors).
23
23
 
24
24
  - Отображение сетки и осей (Grid и Axes Helper).
25
+
26
+ ### Установка
27
+
28
+ Установка в проект осуществляется командой
29
+
30
+ ```bash
31
+ npm i @planara/core
32
+ ```
@@ -1,8 +1,7 @@
1
1
  import { Renderer } from './renderer';
2
- import { MeshRenderCallback, Mesh } from 'ogl';
3
- import { Figure } from '@planara/types';
4
- import { EditorMesh } from '../extensions/mesh-extension';
5
2
  import { EventBus } from '../events/event-bus';
3
+ import { Figure, ToolType } from '@planara/types';
4
+ import * as THREE from 'three';
6
5
  /**
7
6
  * Рендерер для редактора.
8
7
  * Добавляет сетку, оси координат и поддержку Orbit для управления камерой.
@@ -14,52 +13,51 @@ export declare class EditorRenderer extends Renderer {
14
13
  private _bus;
15
14
  /** Orbit-контроллер для управления камерой */
16
15
  private _orbit;
17
- /** Raycast для подсветки моделей при наведении */
18
- private _raycast;
19
- /** Курсор мыши для остлеживания наведения на 3D-модель */
20
- private _mouse;
21
- /** Были ли зарегистрированы обработчики событий для мыши */
16
+ /** Transform-контроллер для редактирования */
17
+ private _transform;
18
+ private readonly _transformHelper;
19
+ /** Raycast для получения событий наведения/клика по модели*/
20
+ private _raycaster;
21
+ /** Курсор мыши */
22
+ private readonly _mouse;
23
+ /** Были ли инициализированы обработчики событий (hover/click) */
22
24
  private _isEventListenersAdded;
23
25
  /**
24
- * Инициализация сцены редактора.
25
- * Создает сетку, оси координат и orbit-контроллер.
26
+ * Последняя модель на которую наводились,
27
+ * необходима для отправки только уникальных событий в event bus
26
28
  */
29
+ private _lastHovered;
27
30
  constructor(_canvas: HTMLCanvasElement, _bus: EventBus);
28
31
  /**
29
32
  * Обновление состояния рендерера.
30
33
  */
31
34
  protected update(): void;
35
+ /** Добавление фигуры на сцену */
36
+ addFigure(figure: Figure): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
32
37
  /**
33
- * Метод для добавления фигуры.
34
- * Настройка raycast.
35
- * @param figure - Данные фигуры: position, normal, uv
36
- */
37
- addFigure(figure: Figure): EditorMesh;
38
- /**
39
- * Устанавливает callback, который будет вызываться перед рендером конкретного меша.
40
- *
41
- * @param mesh - Меш, для которого нужно задать callback.
42
- * @param f - Функция обратного вызова, выполняемая перед рендером меша.
38
+ * Смена отображения `TransformControls` в зависимости от типа инструмента.
39
+ * @param mode - тип инструмента для отображения `TransformControls`.
43
40
  * @internal
44
41
  */
45
- setMeshBeforeRender(mesh: Mesh, f: MeshRenderCallback): void;
42
+ setTransformControlsMode(mode: ToolType): void;
46
43
  /**
47
- * Инициализация обработчиков мыши для raycast
44
+ * Добавление `TransformControls` к объекту.
45
+ * @param object - объект, к которому добавляются `TransformControls`.
46
+ * @internal
48
47
  */
49
- private initMouseListeners;
48
+ attachTransformControls(object: THREE.Object3D): void;
50
49
  /**
51
- * Обработчик движения мыши
50
+ * Удаление `TransformControls` с последнего выбранного объекта.
51
+ * @internal
52
52
  */
53
+ detachTransformControls(): void;
54
+ /** Инициализация обработчиков событий на hover/click */
55
+ private _initMouseListeners;
56
+ /** Обработчик события для hover */
53
57
  private _handleMouseMove;
54
- /**
55
- * Обработчик клика мыши
56
- */
58
+ /** Обработчик события на click */
57
59
  private _handleMouseClick;
58
- /**
59
- * Универсальная логика raycast-события
60
- */
60
+ /** Вспомогательный метод для получения модели, которую выбрали и отправки события в event bus */
61
61
  private _processRaycastEvent;
62
- /** Деструктор */
63
- destroy(): void;
64
62
  }
65
63
  //# sourceMappingURL=editor-renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor-renderer.d.ts","sourceRoot":"","sources":["../../src/core/editor-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAyC,KAAK,kBAAkB,EAAE,KAAK,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAI/D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;;;;GAKG;AACH,qBACa,cAAe,SAAQ,QAAQ;IAkBtB,OAAO,CAAC,OAAO;IACb,OAAO,CAAC,IAAI;IAlBlC,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAkB;IAEhC,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAW;IAE3B,0DAA0D;IAC1D,OAAO,CAAC,MAAM,CAAQ;IAEtB,4DAA4D;IAC5D,OAAO,CAAC,sBAAsB,CAAW;IAEzC;;;OAGG;gBAEyB,OAAO,EAAE,iBAAiB,EACxB,IAAI,EAAE,QAAQ;IA0B5C;;OAEG;IACH,SAAS,CAAC,MAAM;IAKhB;;;;OAIG;IACa,SAAS,CAAC,MAAM,EAAE,MAAM;IAmBxC;;;;;;OAMG;IACI,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,kBAAkB;IAI5D;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAEtB;IAEF;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAEvB;IAEF;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgC5B,iBAAiB;IACV,OAAO;CAef"}
1
+ {"version":3,"file":"editor-renderer.d.ts","sourceRoot":"","sources":["../../src/core/editor-renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,OAAO,EAAE,KAAK,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;;;;GAKG;AACH,qBACa,cAAe,SAAQ,QAAQ;IAwBtB,OAAO,CAAC,OAAO;IACb,OAAO,CAAC,IAAI;IAxBlC,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAkB;IAEhC,8CAA8C;IAC9C,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IAEnD,6DAA6D;IAC7D,OAAO,CAAC,UAAU,CAAmB;IAErC,kBAAkB;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,iEAAiE;IACjE,OAAO,CAAC,sBAAsB,CAAS;IAEvC;;;OAGG;IACH,OAAO,CAAC,YAAY,CAA+B;gBAGvB,OAAO,EAAE,iBAAiB,EACxB,IAAI,EAAE,QAAQ;IA+B5C;;OAEG;IACH,SAAS,CAAC,MAAM;IAIhB,iCAAiC;IACjB,SAAS,CAAC,MAAM,EAAE,MAAM;IAkBxC;;;;OAIG;IACI,wBAAwB,CAAC,IAAI,EAAE,QAAQ;IAI9C;;;;OAIG;IACI,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ;IAIrD;;;OAGG;IACI,uBAAuB;IAI9B,wDAAwD;IACxD,OAAO,CAAC,mBAAmB;IAiB3B,mCAAmC;IACnC,OAAO,CAAC,gBAAgB,CAEtB;IAEF,kCAAkC;IAClC,OAAO,CAAC,iBAAiB,CAEvB;IAEF,iGAAiG;IACjG,OAAO,CAAC,oBAAoB;CAoC7B"}
@@ -1,17 +1,12 @@
1
1
  import { Renderer } from './renderer';
2
2
  /**
3
3
  * Рендерер для предпросмотра 3D-модели.
4
- * Настраивает сцену, камеру и орбитальную навигацию (по горизонтали).
5
- * Наследуется от базового Renderer.
4
+ * Настраивает сцену, камеру и орбитальную навигацию по горизонтали.
6
5
  * @alpha
7
6
  */
8
7
  export declare class PreviewRenderer extends Renderer {
9
8
  /** Orbit-контроллер для управления камерой */
10
9
  private _orbit;
11
- /**
12
- * Инициализация сцены предпросмотра.
13
- * @param canvas - HTMLCanvasElement для рендеринга
14
- */
15
10
  constructor(canvas: HTMLCanvasElement);
16
11
  /**
17
12
  * Обновление состояния рендерера.
@@ -1 +1 @@
1
- {"version":3,"file":"preview-renderer.d.ts","sourceRoot":"","sources":["../../src/core/preview-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAS;IAEvB;;;OAGG;gBACS,MAAM,EAAE,iBAAiB;IAerC;;OAEG;IACH,SAAS,CAAC,MAAM;CAIjB"}
1
+ {"version":3,"file":"preview-renderer.d.ts","sourceRoot":"","sources":["../../src/core/preview-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,iBAAiB;IAiBrC;;OAEG;IACH,SAAS,CAAC,MAAM;CAIjB"}
@@ -1,24 +1,21 @@
1
- import { Renderer as OGLRenderer, Camera, Transform, Program, OGLRenderingContext, Mesh } from 'ogl';
2
1
  import { Figure } from '@planara/types';
3
- import { EditorMesh } from '../extensions/mesh-extension';
2
+ import * as THREE from 'three';
4
3
  /**
5
4
  * Абстрактный базовый класс рендерера для работы с WebGL через OGL.
6
5
  * Отвечает за инициализацию сцены, камеры и цикла рендеринга.
7
6
  * @public
8
7
  */
9
8
  export declare abstract class Renderer {
10
- /** Экземпляр рендерера OGL */
11
- protected gl: OGLRenderer;
12
9
  /** Корневой объект сцены */
13
- protected scene: Transform;
10
+ protected scene: THREE.Scene;
14
11
  /** Камера для сцены */
15
- protected camera: Camera;
12
+ protected camera: THREE.PerspectiveCamera;
13
+ /** Экземпляр рендерера Three.js */
14
+ protected renderer: THREE.WebGLRenderer;
16
15
  /** HTML-элемент canvas, на котором рендерится сцена */
17
16
  protected canvas: HTMLCanvasElement;
18
- /** Program для настройки рендеринга моделей */
19
- protected program: Program;
20
17
  /** Массив моделей на сцене */
21
- protected meshes: Mesh[];
18
+ protected meshes: THREE.Mesh[];
22
19
  /**
23
20
  * Конструктор рендерера
24
21
  * @param canvas - HTMLCanvasElement для рендеринга
@@ -44,42 +41,28 @@ export declare abstract class Renderer {
44
41
  * Публичный метод для добавления фигуры.
45
42
  * @param figure - Данные фигуры: position, normal, uv
46
43
  */
47
- addFigure(figure: Figure): EditorMesh;
44
+ addFigure(figure: Figure): THREE.Mesh;
48
45
  /**
49
46
  * Добавляет фигуру в сцену и сохраняет его во внутреннем массиве.
50
47
  *
51
48
  * @param mesh - Фигура для добавления в сцену.
52
49
  * @internal
53
50
  */
54
- addMesh(mesh: Mesh): void;
55
- /**
56
- * Возвращает WebGL контекст рендерера.
57
- *
58
- * @returns Контекст WebGL (OGLRenderingContext) текущей сцены.
59
- * @internal
60
- */
61
- getContext(): OGLRenderingContext;
51
+ addMesh(mesh: THREE.Mesh): void;
62
52
  /**
63
53
  * Убирает фигуру со сцены
64
54
  *
65
55
  * @param mesh - Фигура для удаления со сцены.
66
56
  * @internal
67
57
  */
68
- removeMesh(mesh: Mesh): void;
58
+ removeMesh(mesh: THREE.Mesh): void;
69
59
  /**
70
60
  * Возвращает список всех фигур, находящихся в сцене.
71
61
  *
72
62
  * @returns Массив текущих фигур.
73
63
  * @internal
74
64
  */
75
- getMeshes(): Mesh[];
76
- /**
77
- * Возвращает настройку для рендеринга.
78
- *
79
- * @returns Program для настройки рендеринга моделей.
80
- * @internal
81
- */
82
- getProgram(): Program;
65
+ getMeshes(): THREE.Mesh[];
83
66
  /** Деструктор */
84
67
  destroy(): void;
85
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/core/renderer.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,IAAI,WAAW,EACvB,MAAM,EACN,SAAS,EAET,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACxB,KAAK,IAAI,EACV,MAAM,KAAK,CAAC;AAIb,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D;;;;GAIG;AACH,8BAAsB,QAAQ;IAC5B,8BAA8B;IAC9B,SAAS,CAAC,EAAE,EAAG,WAAW,CAAC;IAE3B,4BAA4B;IAC5B,SAAS,CAAC,KAAK,EAAG,SAAS,CAAC;IAE5B,uBAAuB;IACvB,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;IAE1B,uDAAuD;IACvD,SAAS,CAAC,MAAM,EAAG,iBAAiB,CAAC;IAErC,+CAA+C;IAC/C,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC;IAE5B,8BAA8B;IAC9B,SAAS,CAAC,MAAM,EAAG,IAAI,EAAE,CAAC;IAE1B;;;OAGG;IACH,SAAS,aAAa,MAAM,EAAE,iBAAiB;IA4B/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;IAsB/B;;;;;OAKG;IACI,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIhC;;;;;OAKG;IACI,UAAU,IAAI,mBAAmB;IAIxC;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAInC;;;;;OAKG;IACI,SAAS,IAAI,IAAI,EAAE;IAI1B;;;;;OAKG;IACI,UAAU,IAAI,OAAO;IAI5B,iBAAiB;IACV,OAAO;CAef"}
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;;;;GAIG;AACH,8BAAsB,QAAQ;IAC5B,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;IAgC5C;;;;;OAKG;IACI,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;IAK/B;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;IAKlC;;;;;OAKG;IACI,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE;IAIhC,iBAAiB;IACV,OAAO;CAaf"}
@@ -1,5 +1,6 @@
1
- import { Mesh } from 'ogl';
2
1
  import { EventTopics } from './event-topics';
2
+ import { SelectMode } from '@planara/types';
3
+ import * as THREE from 'three';
3
4
  /**
4
5
  * Типы событий редактора.
5
6
  * Используются в EventEmitter для типизированной публикации и подписки на события.
@@ -8,11 +9,16 @@ import { EventTopics } from './event-topics';
8
9
  export type EditorEvents = {
9
10
  /** Событие наведения на объект (hover). Payload: объект с mesh или null */
10
11
  [EventTopics.SelectHover]: {
11
- mesh: Mesh;
12
+ mesh: THREE.Object3D;
12
13
  } | null;
13
14
  /** Событие клика по объекту. Payload: объект с mesh или null */
14
15
  [EventTopics.SelectClick]: {
15
- mesh: Mesh;
16
+ mesh: THREE.Object3D;
16
17
  } | null;
18
+ /** Событие выбора объекта для редактирования. Payload: выбранный режим выборки */
19
+ [EventTopics.ToolSelect]: {
20
+ mode: SelectMode;
21
+ mesh: THREE.Object3D | null;
22
+ };
17
23
  };
18
24
  //# 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,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,2EAA2E;IAC3E,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAEjD,gEAAgE;IAChE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CAClD,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,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,2EAA2E;IAC3E,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IAE3D,gEAAgE;IAChE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IAE3D,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 +1 @@
1
- {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"AAEA,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;;;;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"}
@@ -7,6 +7,8 @@ export declare enum EventTopics {
7
7
  /** Событие наведения на объект (hover). Payload: mesh: Mesh | null */
8
8
  SelectHover = "select.hover",
9
9
  /** Событие клика по объекту. Payload: mesh: Mesh | null */
10
- SelectClick = "select.click"
10
+ SelectClick = "select.click",
11
+ /** Событие выбора объекта для редактирования. Payload: mode: SelectMode, object: THREE.Object3D | null */
12
+ ToolSelect = "tool.select"
11
13
  }
12
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,sEAAsE;IACtE,WAAW,iBAAiB;IAE5B,2DAA2D;IAC3D,WAAW,iBAAiB;CAC7B"}
1
+ {"version":3,"file":"event-topics.d.ts","sourceRoot":"","sources":["../../src/events/event-topics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oBAAY,WAAW;IACrB,sEAAsE;IACtE,WAAW,iBAAiB;IAE5B,2DAA2D;IAC3D,WAAW,iBAAiB;IAE5B,0GAA0G;IAC1G,UAAU,gBAAgB;CAC3B"}
@@ -1,13 +1,13 @@
1
- import { Orbit } from 'ogl';
1
+ import { Camera } from 'three';
2
+ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
2
3
  /**
3
- * Расширение для Orbit с отслеживанием управления камерой
4
+ * Расширение для OrbitControls с отслеживанием управления камерой
4
5
  * @internal
5
6
  */
6
- export declare class OrbitWithState extends Orbit {
7
+ export declare class OrbitWithState extends OrbitControls {
7
8
  /** Используется ли Orbit-controls */
8
9
  isInteracting: boolean;
9
- private readonly _element;
10
- constructor(object: any, options?: any);
10
+ constructor(camera: Camera, domElement?: HTMLElement | null);
11
11
  /** Очистка новых обработчиков событий */
12
12
  destroy(): void;
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"orbit-extension.d.ts","sourceRoot":"","sources":["../../src/extensions/orbit-extension.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAE5B;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,qCAAqC;IAC9B,aAAa,EAAE,OAAO,CAAS;IAEtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAEd,MAAM,EAAE,GAAG,EAAE,OAAO,GAAE,GAAQ;IAY1C,yCAAyC;IAClC,OAAO;CAMf"}
1
+ {"version":3,"file":"orbit-extension.d.ts","sourceRoot":"","sources":["../../src/extensions/orbit-extension.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAEvE;;;GAGG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,qCAAqC;IAC9B,aAAa,EAAE,OAAO,CAAS;gBAE1B,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,IAAI;IAU3D,yCAAyC;IAClC,OAAO;CAMf"}
@@ -0,0 +1,5 @@
1
+ import * as THREE from 'three';
2
+ export declare class SymmetricAxesHelper extends THREE.Group {
3
+ constructor(size?: number);
4
+ }
5
+ //# sourceMappingURL=symmetric-axes-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symmetric-axes-helper.d.ts","sourceRoot":"","sources":["../../src/extensions/symmetric-axes-helper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,qBAAa,mBAAoB,SAAQ,KAAK,CAAC,KAAK;gBACtC,IAAI,SAAI;CAsBrB"}
@@ -1,6 +1,6 @@
1
1
  import { IDisplayHandler } from '../../interfaces/handler/display-handler';
2
- import { RendererApi } from '../../utils/renderer-api';
3
2
  import { DisplayMode } from '@planara/types';
3
+ import { IMeshApi } from '../../interfaces/api/mesh-api';
4
4
  /**
5
5
  * Хендлер для включения wireframe-режима.
6
6
  * Управляет сценой через RendererApi.
@@ -10,28 +10,20 @@ export declare class WireframeHandler implements IDisplayHandler {
10
10
  private _api;
11
11
  /** Режим отображения */
12
12
  readonly mode: DisplayMode;
13
- /** Wireframe-модели для добавленных на сцену объектов */
14
- private _wireMeshes;
15
- /** Настройки рендеринга для режима wireframe */
16
- private readonly _wireMeshProgram;
17
- /** WebGl контекст */
18
- private readonly _context;
19
- constructor(_api: RendererApi);
13
+ /** Список wireframe-объектов для текущих мешей */
14
+ private _wireframes;
15
+ constructor(_api: IMeshApi);
20
16
  /**
21
17
  * Применяет wireframe-режим к сцене.
22
18
  */
23
19
  handle(): void;
24
20
  /**
25
- * Отменяет wireframe-режим у сцены.
21
+ * Отключает wireframe-режим и возвращает оригинальные меши.
26
22
  */
27
23
  rollback(): void;
28
24
  /**
29
- * Освобождает ресурсы хендлера, удаляет wireframe-модели со сцены.
25
+ * Очистка ресурсов.
30
26
  */
31
27
  destroy(): void;
32
- /**
33
- * Создание wireframe-моделей для фигур на сцене.
34
- */
35
- private createWireMeshes;
36
28
  }
37
29
  //# sourceMappingURL=wireframe-handler.d.ts.map
@@ -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,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,qBACa,gBAAiB,YAAW,eAAe;IAanB,OAAO,CAAC,IAAI;IAZ/C,wBAAwB;IACxB,SAAgB,IAAI,EAAE,WAAW,CAAyB;IAE1D,yDAAyD;IACzD,OAAO,CAAC,WAAW,CAAc;IAEjC,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAElD,qBAAqB;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;gBAEL,IAAI,EAAE,WAAW;IAW5D;;OAEG;IACI,MAAM;IAab;;OAEG;IACH,QAAQ,IAAI,IAAI;IAUhB;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAWzB"}
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;IAOnB,OAAO,CAAC,IAAI;IAN/C,wBAAwB;IACxB,SAAgB,IAAI,EAAE,WAAW,CAAyB;IAE1D,kDAAkD;IAClD,OAAO,CAAC,WAAW,CAA4B;gBAEJ,IAAI,EAAE,QAAQ;IAEzD;;OAEG;IACI,MAAM,IAAI,IAAI;IAwCrB;;OAEG;IACI,QAAQ,IAAI,IAAI;IAoBvB;;OAEG;IACI,OAAO,IAAI,IAAI;CAOvB"}
@@ -1,25 +1,33 @@
1
1
  import { ISelectHandler } from '../../interfaces/handler/select-handler';
2
2
  import { SelectMode } from '@planara/types';
3
- import { RendererApi } from '../../utils/renderer-api';
4
3
  import { EditorEvents } from '../../events/editor-events';
5
4
  import { EventTopics } from '../../events/event-topics';
6
5
  import { SelectEventType } from '../../types/event/select-event-type';
6
+ /**
7
+ * Хендлер для выборки моделей.
8
+ * Управляет сценой через payload события рендерера.
9
+ * Обрабатывает hover и click.
10
+ * Меняет цвет ребер конкретной модели из payload, в случае null возвращает исходное состояние.
11
+ * @internal
12
+ */
7
13
  export declare class MeshSelectHandler implements ISelectHandler {
8
- private _api;
9
- /** Режим выборки */
14
+ /** Режим, которым управляет хендлер, нужен только менеджеру */
10
15
  readonly mode: SelectMode;
11
- /** Текущая программа для рендеринга фигуры*/
12
- private readonly _program;
13
- /** Выбранная фигура */
16
+ /** Фигура, на которую навелись в данный момент */
17
+ private _hoveredMesh;
18
+ /** Фигура, которую выбрали в данный момент */
14
19
  private _selectedMesh;
15
- constructor(_api: RendererApi);
20
+ /** Цвет граней для фигуры, на которую навелись */
21
+ private readonly _hoverColor;
22
+ /** Цвет граней для выделенной фигуры */
23
+ private readonly _selectColor;
24
+ /** Изначальный цвет граней у модели, перед наложением эффектов*/
25
+ private readonly _defaultColor;
26
+ constructor();
16
27
  handle(payload: EditorEvents[EventTopics.SelectHover] | EditorEvents[EventTopics.SelectClick], type: SelectEventType): void;
17
- /** Обработчик события при наведении курсора мыши на модель */
18
- private _onHover;
19
- /** Обработчик события при клике на модель */
20
- private _onClick;
21
- /** Выключение подсветки у моделей */
22
28
  rollback(): void;
23
29
  destroy(): void;
30
+ /** вспомогательный метод для изменения цвета ребер меша */
31
+ private _setEdgesColor;
24
32
  }
25
33
  //# sourceMappingURL=mesh-select-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mesh-select-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/select/mesh-select-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAEtE,qBACa,iBAAkB,YAAW,cAAc;IAUnB,OAAO,CAAC,IAAI;IAT/C,oBAAoB;IACpB,SAAgB,IAAI,EAAE,UAAU,CAAmB;IAEnD,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IAEnC,uBAAuB;IACvB,OAAO,CAAC,aAAa,CAAoB;gBAEE,IAAI,EAAE,WAAW;IAQ5D,MAAM,CACJ,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,EACtF,IAAI,EAAE,eAAe,GACpB,IAAI;IAcP,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAEd;IAEF,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAad;IAEF,qCAAqC;IACrC,QAAQ,IAAI,IAAI;IAIhB,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"mesh-select-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/select/mesh-select-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E,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;AAEtE;;;;;;GAMG;AACH,qBACa,iBAAkB,YAAW,cAAc;IACtD,+DAA+D;IAC/D,SAAgB,IAAI,EAAE,UAAU,CAAmB;IAEnD,kDAAkD;IAClD,OAAO,CAAC,YAAY,CAA2B;IAC/C,8CAA8C;IAC9C,OAAO,CAAC,aAAa,CAA2B;IAGhD,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAY;IACxC,wCAAwC;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAY;IACzC,iEAAiE;IACjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAY;;IAI1C,MAAM,CACJ,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,EACtF,IAAI,EAAE,eAAe,GACpB,IAAI;IA+CP,QAAQ,IAAI,IAAI;IAUhB,OAAO,IAAI,IAAI;IAIf,2DAA2D;IAC3D,OAAO,CAAC,cAAc;CAQvB"}
@@ -0,0 +1,25 @@
1
+ import { ToolType } from '@planara/types';
2
+ import { ITransformHelpersApi } from '../../interfaces/api/transform-helpers-api';
3
+ import { IToolHandler } from '../../interfaces/handler/tool-handler';
4
+ import * as THREE from 'three';
5
+ /**
6
+ * Базовый класс для инструментов
7
+ * @internal
8
+ */
9
+ export declare abstract class BaseToolHandler implements IToolHandler {
10
+ protected api: ITransformHelpersApi;
11
+ abstract readonly mode: ToolType;
12
+ protected constructor(api: ITransformHelpersApi);
13
+ /**
14
+ * Обновляет состояние инструмента под текущее выделение.
15
+ */
16
+ handle(target: THREE.Object3D | null): void;
17
+ /**
18
+ * Откатывает локальное состояние инструмента при смене инструмента.
19
+ *
20
+ * Вызывается менеджером перед активацией другого хендлера.
21
+ */
22
+ rollback(): void;
23
+ destroy(): void;
24
+ }
25
+ //# sourceMappingURL=base-tool-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-tool-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/tool/base-tool-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAE1E;;;GAGG;AACH,8BAAsB,eAAgB,YAAW,YAAY;IAGrC,SAAS,CAAC,GAAG,EAAE,oBAAoB;IAFzD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAEjC,SAAS,aAAuB,GAAG,EAAE,oBAAoB;IAEzD;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI;IAM3C;;;;OAIG;IACH,QAAQ,IAAI,IAAI;IAIhB,OAAO,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,19 @@
1
+ import { BaseToolHandler } from './base-tool-handler';
2
+ import { ITransformHelpersApi } from '../../interfaces/api/transform-helpers-api';
3
+ import { ToolType } from '@planara/types';
4
+ /**
5
+ * Хендлер инструмента «вращение».
6
+ *
7
+ * Отвечает только за управление общими TransformControls через Renderer API:
8
+ * - выставляет режим гизмо;
9
+ * - прикрепляет к текущему объекту или отцепляет его.
10
+ *
11
+ * @internal
12
+ * @extends BaseToolHandler
13
+ */
14
+ export declare class RotateToolHandler extends BaseToolHandler {
15
+ /** Инструмент, которым управляет хендлер, нужен только менеджеру */
16
+ readonly mode: ToolType;
17
+ constructor(api: ITransformHelpersApi);
18
+ }
19
+ //# sourceMappingURL=rotate-tool-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotate-tool-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/tool/rotate-tool-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAEvF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C;;;;;;;;;GASG;AACH,qBACa,iBAAkB,SAAQ,eAAe;IACpD,oEAAoE;IACpE,SAAgB,IAAI,EAAE,QAAQ,CAAmB;gBAEP,GAAG,EAAE,oBAAoB;CAGpE"}
@@ -0,0 +1,19 @@
1
+ import { BaseToolHandler } from './base-tool-handler';
2
+ import { ITransformHelpersApi } from '../../interfaces/api/transform-helpers-api';
3
+ import { ToolType } from '@planara/types';
4
+ /**
5
+ * Хендлер инструмента «масштабирование».
6
+ *
7
+ * Отвечает только за управление общими TransformControls через Renderer API:
8
+ * - выставляет режим гизмо;
9
+ * - прикрепляет к текущему объекту или отцепляет его.
10
+ *
11
+ * @internal
12
+ * @extends BaseToolHandler
13
+ */
14
+ export declare class ScaleToolHandler extends BaseToolHandler {
15
+ /** Инструмент, которым управляет хендлер, нужен только менеджеру */
16
+ readonly mode: ToolType;
17
+ constructor(api: ITransformHelpersApi);
18
+ }
19
+ //# sourceMappingURL=scale-tool-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scale-tool-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/tool/scale-tool-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAEvF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C;;;;;;;;;GASG;AACH,qBACa,gBAAiB,SAAQ,eAAe;IACnD,oEAAoE;IACpE,SAAgB,IAAI,EAAE,QAAQ,CAAkB;gBAEN,GAAG,EAAE,oBAAoB;CAGpE"}
@@ -0,0 +1,19 @@
1
+ import { BaseToolHandler } from './base-tool-handler';
2
+ import { ITransformHelpersApi } from '../../interfaces/api/transform-helpers-api';
3
+ import { ToolType } from '@planara/types';
4
+ /**
5
+ * Хендлер инструмента «перемещение».
6
+ *
7
+ * Отвечает только за управление общими TransformControls через Renderer API:
8
+ * - выставляет режим гизмо;
9
+ * - прикрепляет к текущему объекту или отцепляет его.
10
+ *
11
+ * @internal
12
+ * @extends BaseToolHandler
13
+ */
14
+ export declare class TranslateToolHandler extends BaseToolHandler {
15
+ /** Инструмент, которым управляет хендлер, нужен только менеджеру */
16
+ readonly mode: ToolType;
17
+ constructor(api: ITransformHelpersApi);
18
+ }
19
+ //# sourceMappingURL=translate-tool-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translate-tool-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/tool/translate-tool-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAEvF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C;;;;;;;;;GASG;AACH,qBACa,oBAAqB,SAAQ,eAAe;IACvD,oEAAoE;IACpE,SAAgB,IAAI,EAAE,QAAQ,CAAsB;gBAEV,GAAG,EAAE,oBAAoB;CAGpE"}
@@ -1,7 +1,8 @@
1
- import { DisplayMode, Figure, SelectMode } from '@planara/types';
1
+ import { DisplayMode, Figure, SelectMode, ToolType } from '@planara/types';
2
2
  import { IDisplayManager } from '../interfaces/manager/display-manager';
3
3
  import { ISelectManager } from '../interfaces/manager/select-manager';
4
4
  import { EditorRenderer } from '../core/editor-renderer';
5
+ import { IToolManager } from '../interfaces/manager/tool-manager';
5
6
  /**
6
7
  * Хаб для управления редактированием
7
8
  * @public
@@ -9,10 +10,12 @@ import { EditorRenderer } from '../core/editor-renderer';
9
10
  export declare class EditorHub {
10
11
  private _displayManager;
11
12
  private _selectManager;
13
+ private _toolManager;
12
14
  private _renderer;
13
- constructor(_displayManager: IDisplayManager, _selectManager: ISelectManager, _renderer: EditorRenderer);
15
+ constructor(_displayManager: IDisplayManager, _selectManager: ISelectManager, _toolManager: IToolManager, _renderer: EditorRenderer);
14
16
  setDisplayMode(mode: DisplayMode): void;
15
17
  setSelectMode(mode: SelectMode): void;
18
+ setToolMode(mode: ToolType): void;
16
19
  resizeRenderer(): void;
17
20
  updateRenderer(): void;
18
21
  addFigure(figure: Figure): void;
@@ -1 +1 @@
1
- {"version":3,"file":"editor-hub.d.ts","sourceRoot":"","sources":["../../src/hub/editor-hub.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;;GAGG;AACH,qBACa,SAAS;IAES,OAAO,CAAC,eAAe;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;gBAFR,eAAe,EAAE,eAAe,EACjC,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,cAAc;IAK7D,cAAc,CAAC,IAAI,EAAE,WAAW;IAIhC,aAAa,CAAC,IAAI,EAAE,UAAU;IAI9B,cAAc;IAId,cAAc;IAId,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,OAAO;CAKR"}
1
+ {"version":3,"file":"editor-hub.d.ts","sourceRoot":"","sources":["../../src/hub/editor-hub.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAErF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE;;;GAGG;AACH,qBACa,SAAS;IAES,OAAO,CAAC,eAAe;IACxB,OAAO,CAAC,cAAc;IACxB,OAAO,CAAC,YAAY;IAClB,OAAO,CAAC,SAAS;gBAHR,eAAe,EAAE,eAAe,EACjC,cAAc,EAAE,cAAc,EAChC,YAAY,EAAE,YAAY,EACxB,SAAS,EAAE,cAAc;IAM7D,cAAc,CAAC,IAAI,EAAE,WAAW;IAIhC,aAAa,CAAC,IAAI,EAAE,UAAU;IAI9B,WAAW,CAAC,IAAI,EAAE,QAAQ;IAI1B,cAAc;IAId,cAAc;IAId,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,OAAO;CAKR"}