@planara/core 2.1.1 → 2.2.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.
- package/dist/constants/colors.d.ts +24 -0
- package/dist/constants/colors.d.ts.map +1 -0
- package/dist/constants/layers.d.ts +39 -0
- package/dist/constants/layers.d.ts.map +1 -0
- package/dist/constants/threshold.d.ts +5 -0
- package/dist/constants/threshold.d.ts.map +1 -0
- package/dist/core/editor-renderer.d.ts +8 -2
- package/dist/core/editor-renderer.d.ts.map +1 -1
- package/dist/core/preview-renderer.d.ts.map +1 -1
- package/dist/core/renderer.d.ts +55 -4
- package/dist/core/renderer.d.ts.map +1 -1
- package/dist/events/editor-events.d.ts +4 -4
- package/dist/events/editor-events.d.ts.map +1 -1
- package/dist/events/event-topics.d.ts +2 -2
- package/dist/events/event-topics.d.ts.map +1 -1
- package/dist/extensions/orbit-extension.d.ts +3 -2
- package/dist/extensions/orbit-extension.d.ts.map +1 -1
- package/dist/handlers/display/wireframe-handler.d.ts +2 -4
- package/dist/handlers/display/wireframe-handler.d.ts.map +1 -1
- package/dist/handlers/select/edge-select-handler.d.ts +46 -0
- package/dist/handlers/select/edge-select-handler.d.ts.map +1 -0
- package/dist/handlers/select/face-select-handler.d.ts +34 -0
- package/dist/handlers/select/face-select-handler.d.ts.map +1 -0
- package/dist/handlers/select/mesh-select-handler.d.ts +10 -5
- package/dist/handlers/select/mesh-select-handler.d.ts.map +1 -1
- package/dist/handlers/tool/base-tool-handler.d.ts +6 -4
- package/dist/handlers/tool/base-tool-handler.d.ts.map +1 -1
- package/dist/handlers/tool/rotate-tool-handler.d.ts +2 -1
- package/dist/handlers/tool/rotate-tool-handler.d.ts.map +1 -1
- package/dist/handlers/tool/scale-tool-handler.d.ts +2 -1
- package/dist/handlers/tool/scale-tool-handler.d.ts.map +1 -1
- package/dist/handlers/tool/translate-tool-handler.d.ts +2 -1
- package/dist/handlers/tool/translate-tool-handler.d.ts.map +1 -1
- package/dist/hub/editor-hub.d.ts +3 -2
- package/dist/hub/editor-hub.d.ts.map +1 -1
- package/dist/index.cjs.js +230 -201
- package/dist/index.es.js +9106 -5883
- package/dist/index.full.d.ts +71 -18
- package/dist/index.public.d.ts +20 -18
- package/dist/index.umd.js +197 -168
- package/dist/interfaces/api/raycast-api.d.ts +23 -0
- package/dist/interfaces/api/raycast-api.d.ts.map +1 -0
- package/dist/interfaces/api/scene-api.d.ts +50 -0
- package/dist/interfaces/api/scene-api.d.ts.map +1 -0
- package/dist/interfaces/handler/handler.d.ts +2 -5
- package/dist/interfaces/handler/handler.d.ts.map +1 -1
- package/dist/interfaces/manager/manager.d.ts +2 -5
- package/dist/interfaces/manager/manager.d.ts.map +1 -1
- package/dist/interfaces/store/editor-store.d.ts +44 -0
- package/dist/interfaces/store/editor-store.d.ts.map +1 -0
- package/dist/ioc/container.d.ts.map +1 -1
- package/dist/managers/display/display-manager.d.ts +6 -4
- package/dist/managers/display/display-manager.d.ts.map +1 -1
- package/dist/managers/select/select-manager.d.ts +11 -2
- package/dist/managers/select/select-manager.d.ts.map +1 -1
- package/dist/managers/tool/tool-manager.d.ts +6 -7
- package/dist/managers/tool/tool-manager.d.ts.map +1 -1
- package/dist/store/index.d.ts +37 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/types/api/editor-api.d.ts +4 -0
- package/dist/types/api/editor-api.d.ts.map +1 -0
- package/dist/types/listener/selected-listener.d.ts +3 -0
- package/dist/types/listener/selected-listener.d.ts.map +1 -0
- package/dist/utils/renderer-api.d.ts +20 -2
- package/dist/utils/renderer-api.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Цвет подсветки при наведении (hover).
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Используется для временной подсветки элемента под курсором.
|
|
6
|
+
* Обычно применяется к оверлею (`THREE.Line`) или к граням/рёбрам,
|
|
7
|
+
* и не должен конфликтовать с цветом выбранного элемента.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* (line.material as THREE.LineBasicMaterial).color.setHex(HOVER_COLOR);
|
|
11
|
+
*/
|
|
12
|
+
export declare const HOVER_COLOR = 16776960;
|
|
13
|
+
/**
|
|
14
|
+
* Цвет подсветки для выбранного элемента (select).
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* Применяется к постоянной подсветке выбранного ребра/грани до снятия выбора.
|
|
18
|
+
* Должен визуально отличаться от {@link HOVER_COLOR}, чтобы не путать состояния.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* (line.material as THREE.LineBasicMaterial).color.setHex(SELECT_COLOR);
|
|
22
|
+
*/
|
|
23
|
+
export declare const SELECT_COLOR = 16755200;
|
|
24
|
+
//# sourceMappingURL=colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/constants/colors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,WAAW,CAAC;AAEpC;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,WAAW,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Слой объектов-геометрий (`THREE.Mesh`).
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Используется для режима Mesh/Face. Камера и Raycaster должны «видеть» этот слой,
|
|
6
|
+
* когда активен соответствующий режим.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* camera.layers.enable(MESH_LAYER);
|
|
10
|
+
* raycaster.layers.set(MESH_LAYER);
|
|
11
|
+
*/
|
|
12
|
+
export declare const MESH_LAYER = 0;
|
|
13
|
+
/**
|
|
14
|
+
* Слой контуров (`THREE.LineSegments`) — внешние рёбра мешей.
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* По этому слою идёт попадание в режиме выбора рёбер (Edge). Камера должна
|
|
18
|
+
* видеть слой, а для Raycaster можно также настроить `params.Line.threshold`.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* camera.layers.enable(LINE_LAYER);
|
|
22
|
+
* raycaster.layers.set(LINE_LAYER);
|
|
23
|
+
* raycaster.params.Line.threshold = 0.03;
|
|
24
|
+
*/
|
|
25
|
+
export declare const LINE_LAYER = 1;
|
|
26
|
+
/**
|
|
27
|
+
* Слой оверлеев-подсветок (`THREE.Line`) — hover/select маркеры.
|
|
28
|
+
*
|
|
29
|
+
* @remarks
|
|
30
|
+
* Эти линии рендерятся поверх сцены (обычно с `depthTest=false`). Их лучше
|
|
31
|
+
* исключить из Raycaster (не включать этот слой для него), но включить для камеры.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* camera.layers.enable(OVERLAY_LAYER); // камера видит подсветку
|
|
35
|
+
* // Raycaster НЕ видит подсветку:
|
|
36
|
+
* // raycaster.layers.set(...) — без OVERLAY_LAYER
|
|
37
|
+
*/
|
|
38
|
+
export declare const OVERLAY_LAYER = 31;
|
|
39
|
+
//# sourceMappingURL=layers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../src/constants/layers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threshold.d.ts","sourceRoot":"","sources":["../../src/constants/threshold.ts"],"names":[],"mappings":"AACA,yBAAyB;AACzB,eAAO,MAAM,cAAc,OAAO,CAAC;AACnC,cAAc;AACd,eAAO,MAAM,gBAAgB,KAAK,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Renderer } from './renderer';
|
|
2
2
|
import { EventBus } from '../events/event-bus';
|
|
3
|
-
import { Figure, ToolType } from '@planara/types';
|
|
3
|
+
import { Figure, SelectMode, ToolType } from '@planara/types';
|
|
4
4
|
import * as THREE from 'three';
|
|
5
5
|
/**
|
|
6
6
|
* Рендерер для редактора.
|
|
@@ -17,7 +17,7 @@ export declare class EditorRenderer extends Renderer {
|
|
|
17
17
|
private _transform;
|
|
18
18
|
private readonly _transformHelper;
|
|
19
19
|
/** Raycast для получения событий наведения/клика по модели*/
|
|
20
|
-
private _raycaster;
|
|
20
|
+
private readonly _raycaster;
|
|
21
21
|
/** Курсор мыши */
|
|
22
22
|
private readonly _mouse;
|
|
23
23
|
/** Были ли инициализированы обработчики событий (hover/click) */
|
|
@@ -51,6 +51,12 @@ export declare class EditorRenderer extends Renderer {
|
|
|
51
51
|
* @internal
|
|
52
52
|
*/
|
|
53
53
|
detachTransformControls(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Настройка режимов для `Raycaster`.
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
58
|
+
setRaycastMode(mode: SelectMode): void;
|
|
59
|
+
dispose(): void;
|
|
54
60
|
/** Инициализация обработчиков событий на hover/click */
|
|
55
61
|
private _initMouseListeners;
|
|
56
62
|
/** Обработчик события для hover */
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAGnE;;;;;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,QAAQ,CAAC,UAAU,CAAmB;IAE9C,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;IAmC5C;;OAEG;IACH,SAAS,CAAC,MAAM;IAIhB,iCAAiC;IACjB,SAAS,CAAC,MAAM,EAAE,MAAM;IAsBxC;;;;OAIG;IACI,wBAAwB,CAAC,IAAI,EAAE,QAAQ;IAI9C;;;;OAIG;IACI,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ;IAIrD;;;OAGG;IACI,uBAAuB;IAI9B;;;OAGG;IACI,cAAc,CAAC,IAAI,EAAE,UAAU;IAsBtB,OAAO;IA6BvB,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;CAqC7B"}
|
|
@@ -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;AAItC;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAiB;
|
|
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;gBAEZ,MAAM,EAAE,iBAAiB;IAiB5C;;OAEG;IACH,SAAS,CAAC,MAAM;CAIjB"}
|
package/dist/core/renderer.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Figure } from '@planara/types';
|
|
2
|
+
import { Disposable } from 'tsyringe';
|
|
2
3
|
import * as THREE from 'three';
|
|
3
4
|
/**
|
|
4
5
|
* Абстрактный базовый класс рендерера для работы с WebGL через OGL.
|
|
5
6
|
* Отвечает за инициализацию сцены, камеры и цикла рендеринга.
|
|
6
7
|
* @public
|
|
7
8
|
*/
|
|
8
|
-
export declare abstract class Renderer {
|
|
9
|
+
export declare abstract class Renderer implements Disposable {
|
|
9
10
|
/** Корневой объект сцены */
|
|
10
11
|
protected scene: THREE.Scene;
|
|
11
12
|
/** Камера для сцены */
|
|
@@ -38,7 +39,7 @@ export declare abstract class Renderer {
|
|
|
38
39
|
*/
|
|
39
40
|
loop(): void;
|
|
40
41
|
/**
|
|
41
|
-
*
|
|
42
|
+
* Добавление фигуры на сцену.
|
|
42
43
|
* @param figure - Данные фигуры: position, normal, uv
|
|
43
44
|
*/
|
|
44
45
|
addFigure(figure: Figure): THREE.Mesh;
|
|
@@ -63,7 +64,57 @@ export declare abstract class Renderer {
|
|
|
63
64
|
* @internal
|
|
64
65
|
*/
|
|
65
66
|
getMeshes(): THREE.Mesh[];
|
|
66
|
-
/**
|
|
67
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Добавляет объект в сцену и (опционально) выставляет ему слой.
|
|
69
|
+
*
|
|
70
|
+
* @param obj - Объект, который нужно добавить в сцену.
|
|
71
|
+
* @param layer - (Опц.) Номер слоя, который следует установить объекту перед добавлением.
|
|
72
|
+
*
|
|
73
|
+
* @remarks
|
|
74
|
+
* Если рендерер уже диспоузнут (scene отсутствует), метод тихо завершится.
|
|
75
|
+
* Слой задаётся через `obj.layers.set(layer)`, после чего объект добавляется в `this.scene`.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* // Добавить оверлей на слой подсветок:
|
|
79
|
+
* add(overlayLine, OVERLAY_LAYER);
|
|
80
|
+
*
|
|
81
|
+
* @internal
|
|
82
|
+
*/
|
|
83
|
+
addObject(obj: THREE.Object3D, layer?: number): void;
|
|
84
|
+
/**
|
|
85
|
+
* Удаляет объект из сцены (или из его родителя, если он есть).
|
|
86
|
+
*
|
|
87
|
+
* @param obj - Объект, который необходимо удалить.
|
|
88
|
+
*
|
|
89
|
+
* @remarks
|
|
90
|
+
* Если у объекта есть `parent`, он будет удалён из родителя. Иначе — метод попытается
|
|
91
|
+
* удалить его напрямую из `this.scene`. В рамках данного API метод не отвечает за
|
|
92
|
+
* освобождение GPU-ресурсов; освобождайте геометрию/материалы отдельно при необходимости.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* // Снять оверлей со сцены:
|
|
96
|
+
* removeObject(overlayLine);
|
|
97
|
+
*
|
|
98
|
+
* @internal
|
|
99
|
+
*/
|
|
100
|
+
removeObject(obj: THREE.Object3D): void;
|
|
101
|
+
/**
|
|
102
|
+
* Включает указанный слой у активной камеры.
|
|
103
|
+
*
|
|
104
|
+
* @param layer - Номер слоя, который требуется сделать видимым для камеры.
|
|
105
|
+
*
|
|
106
|
+
* @remarks
|
|
107
|
+
* Полезно для показа служебных оверлеев (например, подсветки) на отдельном слое.
|
|
108
|
+
* Метод не изменяет слои Raycaster — ими должен управлять другой слой API (например, IRaycastAPI).
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* // Убедиться, что камера видит слой оверлеев:
|
|
112
|
+
* enableCameraLayer(OVERLAY_LAYER);
|
|
113
|
+
*
|
|
114
|
+
* @internal
|
|
115
|
+
*/
|
|
116
|
+
enableCameraLayer(layer: number): void;
|
|
117
|
+
/** Освобождает ресурсы рендерера, очищает внутренние данные. */
|
|
118
|
+
dispose(): Promise<void> | void;
|
|
68
119
|
}
|
|
69
120
|
//# 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;;;;GAIG;AACH,8BAAsB,
|
|
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;AAE3C;;;;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;IAgC5C;;;;;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"}
|
|
@@ -7,13 +7,13 @@ import * as THREE from 'three';
|
|
|
7
7
|
* @public
|
|
8
8
|
*/
|
|
9
9
|
export type EditorEvents = {
|
|
10
|
-
/** Событие наведения на объект (hover). Payload: объект с
|
|
10
|
+
/** Событие наведения на объект (hover). Payload: объект с пересечениями или null */
|
|
11
11
|
[EventTopics.SelectHover]: {
|
|
12
|
-
|
|
12
|
+
intersection: THREE.Intersection;
|
|
13
13
|
} | null;
|
|
14
|
-
/** Событие клика по объекту. Payload: объект с
|
|
14
|
+
/** Событие клика по объекту. Payload: объект с пересечениями или null */
|
|
15
15
|
[EventTopics.SelectClick]: {
|
|
16
|
-
|
|
16
|
+
intersection: THREE.Intersection;
|
|
17
17
|
} | null;
|
|
18
18
|
/** Событие выбора объекта для редактирования. Payload: выбранный режим выборки */
|
|
19
19
|
[EventTopics.ToolSelect]: {
|
|
@@ -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,
|
|
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"}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* @public
|
|
5
5
|
*/
|
|
6
6
|
export declare enum EventTopics {
|
|
7
|
-
/** Событие наведения на объект (hover). Payload:
|
|
7
|
+
/** Событие наведения на объект (hover). Payload: intersection: Intersection | null */
|
|
8
8
|
SelectHover = "select.hover",
|
|
9
|
-
/** Событие клика по объекту. Payload:
|
|
9
|
+
/** Событие клика по объекту. Payload: intersection: Intersection | null */
|
|
10
10
|
SelectClick = "select.click",
|
|
11
11
|
/** Событие выбора объекта для редактирования. Payload: mode: SelectMode, object: THREE.Object3D | null */
|
|
12
12
|
ToolSelect = "tool.select"
|
|
@@ -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,
|
|
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,14 +1,15 @@
|
|
|
1
1
|
import { Camera } from 'three';
|
|
2
2
|
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
|
|
3
|
+
import { Disposable } from 'tsyringe';
|
|
3
4
|
/**
|
|
4
5
|
* Расширение для OrbitControls с отслеживанием управления камерой
|
|
5
6
|
* @internal
|
|
6
7
|
*/
|
|
7
|
-
export declare class OrbitWithState extends OrbitControls {
|
|
8
|
+
export declare class OrbitWithState extends OrbitControls implements Disposable {
|
|
8
9
|
/** Используется ли Orbit-controls */
|
|
9
10
|
isInteracting: boolean;
|
|
10
11
|
constructor(camera: Camera, domElement?: HTMLElement | null);
|
|
11
12
|
/** Очистка новых обработчиков событий */
|
|
12
|
-
|
|
13
|
+
dispose(): Promise<void> | void;
|
|
13
14
|
}
|
|
14
15
|
//# sourceMappingURL=orbit-extension.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;GAGG;AACH,qBAAa,cAAe,SAAQ,aAAc,YAAW,UAAU;IACrE,qCAAqC;IAC9B,aAAa,EAAE,OAAO,CAAS;gBAE1B,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,IAAI;IAU3D,yCAAyC;IAClC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAMvC"}
|
|
@@ -21,9 +21,7 @@ export declare class WireframeHandler implements IDisplayHandler {
|
|
|
21
21
|
* Отключает wireframe-режим и возвращает оригинальные меши.
|
|
22
22
|
*/
|
|
23
23
|
rollback(): void;
|
|
24
|
-
/**
|
|
25
|
-
|
|
26
|
-
*/
|
|
27
|
-
destroy(): void;
|
|
24
|
+
/** Освобождает ресурсы хендлера, удаляет слушатели и очищает внутренние данные. */
|
|
25
|
+
dispose(): Promise<void> | void;
|
|
28
26
|
}
|
|
29
27
|
//# 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,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D;;;;GAIG;AACH,qBACa,gBAAiB,YAAW,eAAe;
|
|
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;IAOZ,OAAO,CAAC,IAAI;IANtD,wBAAwB;IACxB,SAAgB,IAAI,EAAE,WAAW,CAAyB;IAE1D,kDAAkD;IAClD,OAAO,CAAC,WAAW,CAA4B;gBAEG,IAAI,EAAE,QAAQ;IAEhE;;OAEG;IACI,MAAM,IAAI,IAAI;IAwCrB;;OAEG;IACI,QAAQ,IAAI,IAAI;IAoBvB,mFAAmF;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAOvC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { IEditorApi } from '../../types/api/editor-api';
|
|
2
|
+
import { ISelectHandler } from '../../interfaces/handler/select-handler';
|
|
3
|
+
import { IEditorStore } from '../../interfaces/store/editor-store';
|
|
4
|
+
import { SelectMode } from '@planara/types';
|
|
5
|
+
import { EditorEvents } from '../../events/editor-events';
|
|
6
|
+
import { EventTopics } from '../../events/event-topics';
|
|
7
|
+
import { SelectEventType } from '../../types/event/select-event-type';
|
|
8
|
+
/**
|
|
9
|
+
* Хендлер для выборки ребер.
|
|
10
|
+
* Управляет сценой через payload события рендерера.
|
|
11
|
+
* Обрабатывает hover и click.
|
|
12
|
+
* Меняет цвет грани конкретной модели из payload, в случае null возвращает исходное состояние.
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export declare class EdgeSelectHandler implements ISelectHandler {
|
|
16
|
+
private _api;
|
|
17
|
+
private _store;
|
|
18
|
+
/** Режим, которым управляет хендлер, нужен только менеджеру */
|
|
19
|
+
readonly mode: SelectMode;
|
|
20
|
+
/** Текущее наведённое ребро. */
|
|
21
|
+
private readonly _hoverLine;
|
|
22
|
+
/** Текущее выбранное ребро. */
|
|
23
|
+
private readonly _selectLine;
|
|
24
|
+
/** Текущее наведённое ребро из массива `LineSegments` модели. */
|
|
25
|
+
private _hovered;
|
|
26
|
+
/** Текущее выбранное ребро из массива `LineSegments` модели. */
|
|
27
|
+
private _selected;
|
|
28
|
+
/** Цвет ребра, на которое навелись */
|
|
29
|
+
private readonly _hoverColor;
|
|
30
|
+
/** Цвет выделенного ребра */
|
|
31
|
+
private readonly _selectColor;
|
|
32
|
+
constructor(_api: IEditorApi, _store: IEditorStore);
|
|
33
|
+
/** Обработка текущего режима выборки. */
|
|
34
|
+
handle(payload: EditorEvents[EventTopics.SelectHover] | EditorEvents[EventTopics.SelectClick], type: SelectEventType): void;
|
|
35
|
+
/** Откат текущего режима выборки */
|
|
36
|
+
rollback(): void;
|
|
37
|
+
/** Освобождает ресурсы хендлера, удаляет слушатели и очищает внутренние данные. */
|
|
38
|
+
dispose(): Promise<void> | void;
|
|
39
|
+
private _makeOverlayLine;
|
|
40
|
+
/** Локальные точки сегмента переводим в target (который висит на сцене) */
|
|
41
|
+
private _writeWorldSegment;
|
|
42
|
+
private _same;
|
|
43
|
+
/** Центрует `THREE.Line` на сегменте и ориентирует её вдоль ребра */
|
|
44
|
+
private _centerAndOrientLineOnSegment;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=edge-select-handler.d.ts.map
|
|
@@ -0,0 +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;AAKtE;;;;;;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;IA0DP,oCAAoC;IAC7B,QAAQ,IAAI,IAAI;IASvB,mFAAmF;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IActC,OAAO,CAAC,gBAAgB;IAyBxB,2EAA2E;IAC3E,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,KAAK;IAOb,qEAAqE;IACrE,OAAO,CAAC,6BAA6B;CAqCtC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ISelectHandler } from '../../interfaces/handler/select-handler';
|
|
2
|
+
import { IRaycastAPI } from '../../interfaces/api/raycast-api';
|
|
3
|
+
import { SelectMode } from '@planara/types';
|
|
4
|
+
import { EditorEvents } from '../../events/editor-events';
|
|
5
|
+
import { EventTopics } from '../../events/event-topics';
|
|
6
|
+
import { SelectEventType } from '../../types/event/select-event-type';
|
|
7
|
+
/**
|
|
8
|
+
* Хендлер для выборки граней (faces/triangles).
|
|
9
|
+
* Управляет сценой через payload события рендерера.
|
|
10
|
+
* Обрабатывает hover и click.
|
|
11
|
+
* Меняет цвет грани конкретной модели из payload, в случае null возвращает исходное состояние.
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export declare class FaceSelectHandler implements ISelectHandler {
|
|
15
|
+
private _api;
|
|
16
|
+
/** Режим, которым управляет хендлер, нужен только менеджеру */
|
|
17
|
+
readonly mode: SelectMode;
|
|
18
|
+
/** Текущая наведённая грань */
|
|
19
|
+
private _hovered;
|
|
20
|
+
/** Текущая выбранная грань */
|
|
21
|
+
private _selected;
|
|
22
|
+
/** Цвет грани, на которую навелись */
|
|
23
|
+
private readonly _hoverColor;
|
|
24
|
+
/** Цвет выделенной граней */
|
|
25
|
+
private readonly _selectColor;
|
|
26
|
+
/** Изначальный цвет граней у модели, перед наложением эффектов*/
|
|
27
|
+
private readonly _defaultColor;
|
|
28
|
+
constructor(_api: IRaycastAPI);
|
|
29
|
+
handle(payload: EditorEvents[EventTopics.SelectHover] | EditorEvents[EventTopics.SelectClick], type: SelectEventType): void;
|
|
30
|
+
rollback(): void;
|
|
31
|
+
/** Освобождает ресурсы хендлера, удаляет слушатели и очищает внутренние данные. */
|
|
32
|
+
dispose(): Promise<void> | void;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=face-select-handler.d.ts.map
|
|
@@ -0,0 +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,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;AAItE;;;;;;GAMG;AACH,qBACa,iBAAkB,YAAW,cAAc;IAiBZ,OAAO,CAAC,IAAI;IAhBtD,+DAA+D;IAC/D,SAAgB,IAAI,EAAE,UAAU,CAAmB;IAEnD,+BAA+B;IAC/B,OAAO,CAAC,QAAQ,CAAwD;IACxE,8BAA8B;IAC9B,OAAO,CAAC,SAAS,CAAwD;IAGzE,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,iEAAiE;IACjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAY;gBAEQ,IAAI,EAAE,WAAW;IAE5D,MAAM,CACX,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,EACtF,IAAI,EAAE,eAAe,GACpB,IAAI;IAWA,QAAQ,IAAI,IAAI;IAIvB,mFAAmF;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAGvC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { ISelectHandler } from '../../interfaces/handler/select-handler';
|
|
2
|
+
import { IEditorStore } from '../../interfaces/store/editor-store';
|
|
3
|
+
import { IRaycastAPI } from '../../interfaces/api/raycast-api';
|
|
2
4
|
import { SelectMode } from '@planara/types';
|
|
3
5
|
import { EditorEvents } from '../../events/editor-events';
|
|
4
6
|
import { EventTopics } from '../../events/event-topics';
|
|
@@ -11,22 +13,25 @@ import { SelectEventType } from '../../types/event/select-event-type';
|
|
|
11
13
|
* @internal
|
|
12
14
|
*/
|
|
13
15
|
export declare class MeshSelectHandler implements ISelectHandler {
|
|
16
|
+
private _api;
|
|
17
|
+
private _store;
|
|
14
18
|
/** Режим, которым управляет хендлер, нужен только менеджеру */
|
|
15
19
|
readonly mode: SelectMode;
|
|
16
20
|
/** Фигура, на которую навелись в данный момент */
|
|
17
21
|
private _hoveredMesh;
|
|
18
22
|
/** Фигура, которую выбрали в данный момент */
|
|
19
23
|
private _selectedMesh;
|
|
20
|
-
/** Цвет
|
|
24
|
+
/** Цвет ребер для фигуры, на которую навелись */
|
|
21
25
|
private readonly _hoverColor;
|
|
22
|
-
/** Цвет
|
|
26
|
+
/** Цвет ребер для выделенной фигуры */
|
|
23
27
|
private readonly _selectColor;
|
|
24
|
-
/** Изначальный цвет
|
|
28
|
+
/** Изначальный цвет ребер у модели, перед наложением эффектов*/
|
|
25
29
|
private readonly _defaultColor;
|
|
26
|
-
constructor();
|
|
30
|
+
constructor(_api: IRaycastAPI, _store: IEditorStore);
|
|
27
31
|
handle(payload: EditorEvents[EventTopics.SelectHover] | EditorEvents[EventTopics.SelectClick], type: SelectEventType): void;
|
|
28
32
|
rollback(): void;
|
|
29
|
-
|
|
33
|
+
/** Освобождает ресурсы хендлера, удаляет слушатели и очищает внутренние данные. */
|
|
34
|
+
dispose(): Promise<void> | void;
|
|
30
35
|
/** вспомогательный метод для изменения цвета ребер меша */
|
|
31
36
|
private _setEdgesColor;
|
|
32
37
|
}
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACxE,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;AAItE;;;;;;GAMG;AACH,qBACa,iBAAkB,YAAW,cAAc;IAkB7B,OAAO,CAAC,IAAI;IACX,OAAO,CAAC,MAAM;IAlBxC,+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,iDAAiD;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,uCAAuC;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAY;gBAGT,IAAI,EAAE,WAAW,EAChB,MAAM,EAAE,YAAY;IAG/C,MAAM,CACX,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,EACtF,IAAI,EAAE,eAAe,GACpB,IAAI;IAuDA,QAAQ,IAAI,IAAI;IASvB,mFAAmF;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAItC,2DAA2D;IAC3D,OAAO,CAAC,cAAc;CAQvB"}
|
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
import { ToolType } from '@planara/types';
|
|
2
2
|
import { ITransformHelpersApi } from '../../interfaces/api/transform-helpers-api';
|
|
3
3
|
import { IToolHandler } from '../../interfaces/handler/tool-handler';
|
|
4
|
-
import
|
|
4
|
+
import { IEditorStore } from '../../interfaces/store/editor-store';
|
|
5
5
|
/**
|
|
6
6
|
* Базовый класс для инструментов
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
9
9
|
export declare abstract class BaseToolHandler implements IToolHandler {
|
|
10
10
|
protected api: ITransformHelpersApi;
|
|
11
|
+
protected store: IEditorStore;
|
|
11
12
|
abstract readonly mode: ToolType;
|
|
12
|
-
protected constructor(api: ITransformHelpersApi);
|
|
13
|
+
protected constructor(api: ITransformHelpersApi, store: IEditorStore);
|
|
13
14
|
/**
|
|
14
15
|
* Обновляет состояние инструмента под текущее выделение.
|
|
15
16
|
*/
|
|
16
|
-
handle(
|
|
17
|
+
handle(): void;
|
|
17
18
|
/**
|
|
18
19
|
* Откатывает локальное состояние инструмента при смене инструмента.
|
|
19
20
|
*
|
|
20
21
|
* Вызывается менеджером перед активацией другого хендлера.
|
|
21
22
|
*/
|
|
22
23
|
rollback(): void;
|
|
23
|
-
|
|
24
|
+
/** Освобождение ресурсов хендлера. */
|
|
25
|
+
dispose(): Promise<void> | void;
|
|
24
26
|
}
|
|
25
27
|
//# sourceMappingURL=base-tool-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-tool-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/tool/base-tool-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"base-tool-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/tool/base-tool-handler.ts"],"names":[],"mappings":"AACA,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;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAExE;;;GAGG;AACH,8BAAsB,eAAgB,YAAW,YAAY;IAIzD,SAAS,CAAC,GAAG,EAAE,oBAAoB;IACnC,SAAS,CAAC,KAAK,EAAE,YAAY;IAJ/B,kBAAyB,IAAI,EAAE,QAAQ,CAAC;IAExC,SAAS,aACG,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY;IAG/B;;OAEG;IACI,MAAM,IAAI,IAAI;IAarB;;;;OAIG;IACI,QAAQ,IAAI,IAAI;IAIvB,sCAAsC;IAC/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAGvC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BaseToolHandler } from './base-tool-handler';
|
|
2
2
|
import { ITransformHelpersApi } from '../../interfaces/api/transform-helpers-api';
|
|
3
|
+
import { IEditorStore } from '../../interfaces/store/editor-store';
|
|
3
4
|
import { ToolType } from '@planara/types';
|
|
4
5
|
/**
|
|
5
6
|
* Хендлер инструмента «вращение».
|
|
@@ -14,6 +15,6 @@ import { ToolType } from '@planara/types';
|
|
|
14
15
|
export declare class RotateToolHandler extends BaseToolHandler {
|
|
15
16
|
/** Инструмент, которым управляет хендлер, нужен только менеджеру */
|
|
16
17
|
readonly mode: ToolType;
|
|
17
|
-
constructor(api: ITransformHelpersApi);
|
|
18
|
+
constructor(api: ITransformHelpersApi, store: IEditorStore);
|
|
18
19
|
}
|
|
19
20
|
//# sourceMappingURL=rotate-tool-handler.d.ts.map
|
|
@@ -1 +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;
|
|
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;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C;;;;;;;;;GASG;AACH,qBACa,iBAAkB,SAAQ,eAAe;IACpD,oEAAoE;IACpE,SAAgB,IAAI,EAAE,QAAQ,CAAmB;gBAGxB,GAAG,EAAE,oBAAoB,EACxB,KAAK,EAAE,YAAY;CAI9C"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BaseToolHandler } from './base-tool-handler';
|
|
2
2
|
import { ITransformHelpersApi } from '../../interfaces/api/transform-helpers-api';
|
|
3
|
+
import { IEditorStore } from '../../interfaces/store/editor-store';
|
|
3
4
|
import { ToolType } from '@planara/types';
|
|
4
5
|
/**
|
|
5
6
|
* Хендлер инструмента «масштабирование».
|
|
@@ -14,6 +15,6 @@ import { ToolType } from '@planara/types';
|
|
|
14
15
|
export declare class ScaleToolHandler extends BaseToolHandler {
|
|
15
16
|
/** Инструмент, которым управляет хендлер, нужен только менеджеру */
|
|
16
17
|
readonly mode: ToolType;
|
|
17
|
-
constructor(api: ITransformHelpersApi);
|
|
18
|
+
constructor(api: ITransformHelpersApi, store: IEditorStore);
|
|
18
19
|
}
|
|
19
20
|
//# sourceMappingURL=scale-tool-handler.d.ts.map
|
|
@@ -1 +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;
|
|
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;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C;;;;;;;;;GASG;AACH,qBACa,gBAAiB,SAAQ,eAAe;IACnD,oEAAoE;IACpE,SAAgB,IAAI,EAAE,QAAQ,CAAkB;gBAGvB,GAAG,EAAE,oBAAoB,EACxB,KAAK,EAAE,YAAY;CAI9C"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BaseToolHandler } from './base-tool-handler';
|
|
2
2
|
import { ITransformHelpersApi } from '../../interfaces/api/transform-helpers-api';
|
|
3
|
+
import { IEditorStore } from '../../interfaces/store/editor-store';
|
|
3
4
|
import { ToolType } from '@planara/types';
|
|
4
5
|
/**
|
|
5
6
|
* Хендлер инструмента «перемещение».
|
|
@@ -14,6 +15,6 @@ import { ToolType } from '@planara/types';
|
|
|
14
15
|
export declare class TranslateToolHandler extends BaseToolHandler {
|
|
15
16
|
/** Инструмент, которым управляет хендлер, нужен только менеджеру */
|
|
16
17
|
readonly mode: ToolType;
|
|
17
|
-
constructor(api: ITransformHelpersApi);
|
|
18
|
+
constructor(api: ITransformHelpersApi, store: IEditorStore);
|
|
18
19
|
}
|
|
19
20
|
//# sourceMappingURL=translate-tool-handler.d.ts.map
|
|
@@ -1 +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;
|
|
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;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C;;;;;;;;;GASG;AACH,qBACa,oBAAqB,SAAQ,eAAe;IACvD,oEAAoE;IACpE,SAAgB,IAAI,EAAE,QAAQ,CAAsB;gBAG3B,GAAG,EAAE,oBAAoB,EACxB,KAAK,EAAE,YAAY;CAI9C"}
|
package/dist/hub/editor-hub.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Disposable } from 'tsyringe';
|
|
1
2
|
import { DisplayMode, Figure, SelectMode, ToolType } from '@planara/types';
|
|
2
3
|
import { IDisplayManager } from '../interfaces/manager/display-manager';
|
|
3
4
|
import { ISelectManager } from '../interfaces/manager/select-manager';
|
|
@@ -7,7 +8,7 @@ import { IToolManager } from '../interfaces/manager/tool-manager';
|
|
|
7
8
|
* Хаб для управления редактированием
|
|
8
9
|
* @public
|
|
9
10
|
*/
|
|
10
|
-
export declare class EditorHub {
|
|
11
|
+
export declare class EditorHub implements Disposable {
|
|
11
12
|
private _displayManager;
|
|
12
13
|
private _selectManager;
|
|
13
14
|
private _toolManager;
|
|
@@ -19,6 +20,6 @@ export declare class EditorHub {
|
|
|
19
20
|
resizeRenderer(): void;
|
|
20
21
|
updateRenderer(): void;
|
|
21
22
|
addFigure(figure: Figure): void;
|
|
22
|
-
|
|
23
|
+
dispose(): Promise<void> | void;
|
|
23
24
|
}
|
|
24
25
|
//# sourceMappingURL=editor-hub.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-hub.d.ts","sourceRoot":"","sources":["../../src/hub/editor-hub.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"editor-hub.d.ts","sourceRoot":"","sources":["../../src/hub/editor-hub.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAsB,MAAM,UAAU,CAAC;AAE/D,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,SAAU,YAAW,UAAU;IAEb,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;IAMtD,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,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAKvC"}
|