@mlightcad/cad-simple-viewer 1.2.2 → 1.2.3
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/__vite-browser-external-l0sNRNKZ-l0sNRNKZ.js +1 -0
- package/dist/index.js +40205 -0
- package/dist/index.umd.cjs +333 -0
- package/dist/libredwg-parser-worker.js +15458 -0
- package/dist/mtext-renderer-worker.js +29930 -0
- package/lib/app/AcApContext.d.ts +57 -0
- package/lib/app/AcApContext.d.ts.map +1 -0
- package/lib/app/AcApContext.js +106 -0
- package/lib/app/AcApContext.js.map +1 -0
- package/lib/app/AcApDocManager.d.ts +291 -0
- package/lib/app/AcApDocManager.d.ts.map +1 -0
- package/lib/app/AcApDocManager.js +498 -0
- package/lib/app/AcApDocManager.js.map +1 -0
- package/lib/app/AcApDocument.d.ts +101 -0
- package/lib/app/AcApDocument.d.ts.map +1 -0
- package/lib/app/AcApDocument.js +237 -0
- package/lib/app/AcApDocument.js.map +1 -0
- package/lib/app/AcApFontLoader.d.ts +54 -0
- package/lib/app/AcApFontLoader.d.ts.map +1 -0
- package/lib/app/AcApFontLoader.js +151 -0
- package/lib/app/AcApFontLoader.js.map +1 -0
- package/lib/app/AcApGlobalFunc.d.ts +26 -0
- package/lib/app/AcApGlobalFunc.d.ts.map +1 -0
- package/lib/app/AcApGlobalFunc.js +66 -0
- package/lib/app/AcApGlobalFunc.js.map +1 -0
- package/lib/app/AcApSettingManager.d.ts +232 -0
- package/lib/app/AcApSettingManager.d.ts.map +1 -0
- package/lib/app/AcApSettingManager.js +283 -0
- package/lib/app/AcApSettingManager.js.map +1 -0
- package/lib/app/index.d.ts +6 -0
- package/lib/app/index.d.ts.map +1 -0
- package/lib/app/index.js +6 -0
- package/lib/app/index.js.map +1 -0
- package/lib/command/AcApConvertToSvgCmd.d.ts +32 -0
- package/lib/command/AcApConvertToSvgCmd.d.ts.map +1 -0
- package/lib/command/AcApConvertToSvgCmd.js +56 -0
- package/lib/command/AcApConvertToSvgCmd.js.map +1 -0
- package/lib/command/AcApOpenCmd.d.ts +37 -0
- package/lib/command/AcApOpenCmd.d.ts.map +1 -0
- package/lib/command/AcApOpenCmd.js +60 -0
- package/lib/command/AcApOpenCmd.js.map +1 -0
- package/lib/command/AcApPanCmd.d.ts +31 -0
- package/lib/command/AcApPanCmd.d.ts.map +1 -0
- package/lib/command/AcApPanCmd.js +55 -0
- package/lib/command/AcApPanCmd.js.map +1 -0
- package/lib/command/AcApQNewCmd.d.ts +32 -0
- package/lib/command/AcApQNewCmd.d.ts.map +1 -0
- package/lib/command/AcApQNewCmd.js +56 -0
- package/lib/command/AcApQNewCmd.js.map +1 -0
- package/lib/command/AcApRegenCmd.d.ts +21 -0
- package/lib/command/AcApRegenCmd.d.ts.map +1 -0
- package/lib/command/AcApRegenCmd.js +45 -0
- package/lib/command/AcApRegenCmd.js.map +1 -0
- package/lib/command/AcApSelectCmd.d.ts +32 -0
- package/lib/command/AcApSelectCmd.d.ts.map +1 -0
- package/lib/command/AcApSelectCmd.js +56 -0
- package/lib/command/AcApSelectCmd.js.map +1 -0
- package/lib/command/AcApSvgConvertor.d.ts +53 -0
- package/lib/command/AcApSvgConvertor.d.ts.map +1 -0
- package/lib/command/AcApSvgConvertor.js +103 -0
- package/lib/command/AcApSvgConvertor.js.map +1 -0
- package/lib/command/AcApZoomCmd.d.ts +35 -0
- package/lib/command/AcApZoomCmd.d.ts.map +1 -0
- package/lib/command/AcApZoomCmd.js +57 -0
- package/lib/command/AcApZoomCmd.js.map +1 -0
- package/lib/command/AcApZoomToBoxCmd.d.ts +68 -0
- package/lib/command/AcApZoomToBoxCmd.d.ts.map +1 -0
- package/lib/command/AcApZoomToBoxCmd.js +158 -0
- package/lib/command/AcApZoomToBoxCmd.js.map +1 -0
- package/lib/command/index.d.ts +11 -0
- package/lib/command/index.d.ts.map +1 -0
- package/lib/command/index.js +11 -0
- package/lib/command/index.js.map +1 -0
- package/lib/editor/command/AcEdCommand.d.ts +151 -0
- package/lib/editor/command/AcEdCommand.d.ts.map +1 -0
- package/lib/editor/command/AcEdCommand.js +164 -0
- package/lib/editor/command/AcEdCommand.js.map +1 -0
- package/lib/editor/command/AcEdCommandIterator.d.ts +36 -0
- package/lib/editor/command/AcEdCommandIterator.d.ts.map +1 -0
- package/lib/editor/command/AcEdCommandIterator.js +65 -0
- package/lib/editor/command/AcEdCommandIterator.js.map +1 -0
- package/lib/editor/command/AcEdCommandStack.d.ts +120 -0
- package/lib/editor/command/AcEdCommandStack.d.ts.map +1 -0
- package/lib/editor/command/AcEdCommandStack.js +235 -0
- package/lib/editor/command/AcEdCommandStack.js.map +1 -0
- package/lib/editor/command/index.d.ts +3 -0
- package/lib/editor/command/index.d.ts.map +1 -0
- package/lib/editor/command/index.js +3 -0
- package/lib/editor/command/index.js.map +1 -0
- package/lib/editor/global/AcEdConditionWaiter.d.ts +51 -0
- package/lib/editor/global/AcEdConditionWaiter.d.ts.map +1 -0
- package/lib/editor/global/AcEdConditionWaiter.js +87 -0
- package/lib/editor/global/AcEdConditionWaiter.js.map +1 -0
- package/lib/editor/global/AcEdGlobalFunc.d.ts +8 -0
- package/lib/editor/global/AcEdGlobalFunc.d.ts.map +1 -0
- package/lib/editor/global/AcEdGlobalFunc.js +14 -0
- package/lib/editor/global/AcEdGlobalFunc.js.map +1 -0
- package/lib/editor/global/AcEdMessage.d.ts +5 -0
- package/lib/editor/global/AcEdMessage.d.ts.map +1 -0
- package/lib/editor/global/AcEdMessage.js +6 -0
- package/lib/editor/global/AcEdMessage.js.map +1 -0
- package/lib/editor/global/eventBus.d.ts +103 -0
- package/lib/editor/global/eventBus.d.ts.map +1 -0
- package/lib/editor/global/eventBus.js +41 -0
- package/lib/editor/global/eventBus.js.map +1 -0
- package/lib/editor/global/index.d.ts +4 -0
- package/lib/editor/global/index.d.ts.map +1 -0
- package/lib/editor/global/index.js +4 -0
- package/lib/editor/global/index.js.map +1 -0
- package/lib/editor/index.d.ts +5 -0
- package/lib/editor/index.d.ts.map +1 -0
- package/lib/editor/index.js +5 -0
- package/lib/editor/index.js.map +1 -0
- package/lib/editor/input/AcEdBaseInput.d.ts +89 -0
- package/lib/editor/input/AcEdBaseInput.d.ts.map +1 -0
- package/lib/editor/input/AcEdBaseInput.js +166 -0
- package/lib/editor/input/AcEdBaseInput.js.map +1 -0
- package/lib/editor/input/AcEdBoxSelector.d.ts +108 -0
- package/lib/editor/input/AcEdBoxSelector.d.ts.map +1 -0
- package/lib/editor/input/AcEdBoxSelector.js +220 -0
- package/lib/editor/input/AcEdBoxSelector.js.map +1 -0
- package/lib/editor/input/AcEdCursorManager.d.ts +130 -0
- package/lib/editor/input/AcEdCursorManager.d.ts.map +1 -0
- package/lib/editor/input/AcEdCursorManager.js +155 -0
- package/lib/editor/input/AcEdCursorManager.js.map +1 -0
- package/lib/editor/input/AcEdInputPoint.d.ts +51 -0
- package/lib/editor/input/AcEdInputPoint.d.ts.map +1 -0
- package/lib/editor/input/AcEdInputPoint.js +78 -0
- package/lib/editor/input/AcEdInputPoint.js.map +1 -0
- package/lib/editor/input/AcEdJig.d.ts +180 -0
- package/lib/editor/input/AcEdJig.d.ts.map +1 -0
- package/lib/editor/input/AcEdJig.js +256 -0
- package/lib/editor/input/AcEdJig.js.map +1 -0
- package/lib/editor/input/AcEdJigLoop.d.ts +63 -0
- package/lib/editor/input/AcEdJigLoop.d.ts.map +1 -0
- package/lib/editor/input/AcEdJigLoop.js +91 -0
- package/lib/editor/input/AcEdJigLoop.js.map +1 -0
- package/lib/editor/input/AcEdSelectionSet.d.ts +146 -0
- package/lib/editor/input/AcEdSelectionSet.d.ts.map +1 -0
- package/lib/editor/input/AcEdSelectionSet.js +179 -0
- package/lib/editor/input/AcEdSelectionSet.js.map +1 -0
- package/lib/editor/input/AcEditor.d.ts +111 -0
- package/lib/editor/input/AcEditor.d.ts.map +1 -0
- package/lib/editor/input/AcEditor.js +183 -0
- package/lib/editor/input/AcEditor.js.map +1 -0
- package/lib/editor/input/index.d.ts +5 -0
- package/lib/editor/input/index.d.ts.map +1 -0
- package/lib/editor/input/index.js +5 -0
- package/lib/editor/input/index.js.map +1 -0
- package/lib/editor/view/AcEdBaseView.d.ts +457 -0
- package/lib/editor/view/AcEdBaseView.d.ts.map +1 -0
- package/lib/editor/view/AcEdBaseView.js +349 -0
- package/lib/editor/view/AcEdBaseView.js.map +1 -0
- package/lib/editor/view/AcEdLayerInfo.d.ts +21 -0
- package/lib/editor/view/AcEdLayerInfo.d.ts.map +1 -0
- package/lib/editor/view/AcEdLayerInfo.js +2 -0
- package/lib/editor/view/AcEdLayerInfo.js.map +1 -0
- package/lib/editor/view/index.d.ts +3 -0
- package/lib/editor/view/index.d.ts.map +1 -0
- package/lib/editor/view/index.js +3 -0
- package/lib/editor/view/index.js.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +5 -0
- package/lib/index.js.map +1 -0
- package/lib/util/AcTrGeometryUtil.d.ts +92 -0
- package/lib/util/AcTrGeometryUtil.d.ts.map +1 -0
- package/lib/util/AcTrGeometryUtil.js +109 -0
- package/lib/util/AcTrGeometryUtil.js.map +1 -0
- package/lib/util/index.d.ts +2 -0
- package/lib/util/index.d.ts.map +1 -0
- package/lib/util/index.js +2 -0
- package/lib/util/index.js.map +1 -0
- package/lib/view/AcTrLayer.d.ts +132 -0
- package/lib/view/AcTrLayer.d.ts.map +1 -0
- package/lib/view/AcTrLayer.js +199 -0
- package/lib/view/AcTrLayer.js.map +1 -0
- package/lib/view/AcTrLayout.d.ts +218 -0
- package/lib/view/AcTrLayout.d.ts.map +1 -0
- package/lib/view/AcTrLayout.js +437 -0
- package/lib/view/AcTrLayout.js.map +1 -0
- package/lib/view/AcTrLayoutView.d.ts +115 -0
- package/lib/view/AcTrLayoutView.d.ts.map +1 -0
- package/lib/view/AcTrLayoutView.js +200 -0
- package/lib/view/AcTrLayoutView.js.map +1 -0
- package/lib/view/AcTrLayoutViewManager.d.ts +89 -0
- package/lib/view/AcTrLayoutViewManager.d.ts.map +1 -0
- package/lib/view/AcTrLayoutViewManager.js +118 -0
- package/lib/view/AcTrLayoutViewManager.js.map +1 -0
- package/lib/view/AcTrScene.d.ts +162 -0
- package/lib/view/AcTrScene.d.ts.map +1 -0
- package/lib/view/AcTrScene.js +370 -0
- package/lib/view/AcTrScene.js.map +1 -0
- package/lib/view/AcTrView2d.d.ts +262 -0
- package/lib/view/AcTrView2d.d.ts.map +1 -0
- package/lib/view/AcTrView2d.js +772 -0
- package/lib/view/AcTrView2d.js.map +1 -0
- package/lib/view/index.d.ts +2 -0
- package/lib/view/index.d.ts.map +1 -0
- package/lib/view/index.js +2 -0
- package/lib/view/index.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { eventBus } from './eventBus';
|
|
2
|
+
/**
|
|
3
|
+
* Display an error or warning message. In order to decouple UI from this module,
|
|
4
|
+
* this function justs trigger one 'message' event through event bus instead of
|
|
5
|
+
* showing one message directly. It is UI module's resposiblity to listen this event
|
|
6
|
+
* and show message.
|
|
7
|
+
*/
|
|
8
|
+
export function acedAlert(message) {
|
|
9
|
+
eventBus.emit('message', {
|
|
10
|
+
message: message,
|
|
11
|
+
type: 'warning'
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=AcEdGlobalFunc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcEdGlobalFunc.js","sourceRoot":"","sources":["../../../src/editor/global/AcEdGlobalFunc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE;QACvB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,SAAS;KAChB,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcEdMessage.d.ts","sourceRoot":"","sources":["../../../src/editor/global/AcEdMessage.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcEdMessage.js","sourceRoot":"","sources":["../../../src/editor/global/AcEdMessage.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { AcDbProgressdEventArgs } from '@mlightcad/data-model';
|
|
2
|
+
import { type Emitter } from 'mitt';
|
|
3
|
+
/**
|
|
4
|
+
* Message severity type for user notifications.
|
|
5
|
+
*
|
|
6
|
+
* Used to categorize messages shown to users with appropriate visual styling.
|
|
7
|
+
*/
|
|
8
|
+
export type AcEdMessageType = 'success' | 'warning' | 'info' | 'error';
|
|
9
|
+
export interface AcEdFontNotLoadedInfo {
|
|
10
|
+
/** Font name */
|
|
11
|
+
fontName: string;
|
|
12
|
+
/** URL where the font was attempted to be loaded from */
|
|
13
|
+
url: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Type definition for all events that can be emitted through the global event bus.
|
|
17
|
+
*
|
|
18
|
+
* This type maps event names to their corresponding payload types, providing
|
|
19
|
+
* type safety for event emission and listening throughout the application.
|
|
20
|
+
*
|
|
21
|
+
* ## Event Categories
|
|
22
|
+
* - **File Operations**: `open-file`, `open-file-progress`, `failed-to-open-file`
|
|
23
|
+
* - **Font Management**: `fonts-not-loaded`, `failed-to-get-avaiable-fonts`, `font-not-found`
|
|
24
|
+
* - **User Messages**: `message`
|
|
25
|
+
*/
|
|
26
|
+
export type AcEdEvents = {
|
|
27
|
+
/** Emitted to request opening a file dialog */
|
|
28
|
+
'open-file': {};
|
|
29
|
+
/** Emitted during file opening to report progress */
|
|
30
|
+
'open-file-progress': AcDbProgressdEventArgs;
|
|
31
|
+
/** Emitted to display a message to the user */
|
|
32
|
+
message: {
|
|
33
|
+
/** The message text to display */
|
|
34
|
+
message: string;
|
|
35
|
+
/** The severity/type of the message */
|
|
36
|
+
type: AcEdMessageType;
|
|
37
|
+
};
|
|
38
|
+
/** Emitted when some fonts can not be found in font repository */
|
|
39
|
+
'fonts-not-found': {
|
|
40
|
+
fonts: string[];
|
|
41
|
+
};
|
|
42
|
+
/** Emitted when some fonts fails to load */
|
|
43
|
+
'fonts-not-loaded': {
|
|
44
|
+
fonts: AcEdFontNotLoadedInfo[];
|
|
45
|
+
};
|
|
46
|
+
/** Emitted when the available fonts list cannot be retrieved */
|
|
47
|
+
'failed-to-get-avaiable-fonts': {
|
|
48
|
+
/** URL where the fonts list was attempted to be retrieved from */
|
|
49
|
+
url: string;
|
|
50
|
+
};
|
|
51
|
+
/** Emitted when a file fails to open */
|
|
52
|
+
'failed-to-open-file': {
|
|
53
|
+
/** Name/path of the file that failed to open */
|
|
54
|
+
fileName: string;
|
|
55
|
+
};
|
|
56
|
+
/** Emitted when a required font is not found */
|
|
57
|
+
'font-not-found': {
|
|
58
|
+
/** Name of the missing font */
|
|
59
|
+
fontName: string;
|
|
60
|
+
/** Number of entities that require this font */
|
|
61
|
+
count: number;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Global event bus for application-wide communication.
|
|
66
|
+
*
|
|
67
|
+
* This event bus enables decoupled communication between different parts of the
|
|
68
|
+
* CAD viewer application. Components can emit events to notify about state changes
|
|
69
|
+
* or request actions, while other components can listen for these events to respond
|
|
70
|
+
* appropriately.
|
|
71
|
+
*
|
|
72
|
+
* The event bus is particularly useful for:
|
|
73
|
+
* - File operation status updates
|
|
74
|
+
* - Error and warning notifications
|
|
75
|
+
* - Font loading status
|
|
76
|
+
* - Cross-component communication
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* import { eventBus } from './eventBus';
|
|
81
|
+
*
|
|
82
|
+
* // Listen for file opening events
|
|
83
|
+
* eventBus.on('open-file', () => {
|
|
84
|
+
* console.log('File open requested');
|
|
85
|
+
* });
|
|
86
|
+
*
|
|
87
|
+
* // Emit a progress update
|
|
88
|
+
* eventBus.emit('open-file-progress', {
|
|
89
|
+
* percentage: 50,
|
|
90
|
+
* stage: 'CONVERSION'
|
|
91
|
+
* subStage: AcDbConversionStage.Parsing,
|
|
92
|
+
* stageStatus: AcDbConversionStageStatus.InProgress
|
|
93
|
+
* });
|
|
94
|
+
*
|
|
95
|
+
* // Display a message to the user
|
|
96
|
+
* eventBus.emit('message', {
|
|
97
|
+
* message: 'File opened successfully',
|
|
98
|
+
* type: 'success'
|
|
99
|
+
* });
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare const eventBus: Emitter<AcEdEvents>;
|
|
103
|
+
//# sourceMappingURL=eventBus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventBus.d.ts","sourceRoot":"","sources":["../../../src/editor/global/eventBus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAa,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM,CAAA;AAEzC;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAA;AAEtE,MAAM,WAAW,qBAAqB;IACpC,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,+CAA+C;IAC/C,WAAW,EAAE,EAAE,CAAA;IACf,qDAAqD;IACrD,oBAAoB,EAAE,sBAAsB,CAAA;IAC5C,+CAA+C;IAC/C,OAAO,EAAE;QACP,kCAAkC;QAClC,OAAO,EAAE,MAAM,CAAA;QACf,uCAAuC;QACvC,IAAI,EAAE,eAAe,CAAA;KACtB,CAAA;IACD,kEAAkE;IAClE,iBAAiB,EAAE;QACjB,KAAK,EAAE,MAAM,EAAE,CAAA;KAChB,CAAA;IACD,4CAA4C;IAC5C,kBAAkB,EAAE;QAClB,KAAK,EAAE,qBAAqB,EAAE,CAAA;KAC/B,CAAA;IACD,gEAAgE;IAChE,8BAA8B,EAAE;QAC9B,kEAAkE;QAClE,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,wCAAwC;IACxC,qBAAqB,EAAE;QACrB,gDAAgD;QAChD,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,gDAAgD;IAChD,gBAAgB,EAAE;QAChB,+BAA+B;QAC/B,QAAQ,EAAE,MAAM,CAAA;QAChB,gDAAgD;QAChD,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAsB,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import mitt from 'mitt';
|
|
2
|
+
/**
|
|
3
|
+
* Global event bus for application-wide communication.
|
|
4
|
+
*
|
|
5
|
+
* This event bus enables decoupled communication between different parts of the
|
|
6
|
+
* CAD viewer application. Components can emit events to notify about state changes
|
|
7
|
+
* or request actions, while other components can listen for these events to respond
|
|
8
|
+
* appropriately.
|
|
9
|
+
*
|
|
10
|
+
* The event bus is particularly useful for:
|
|
11
|
+
* - File operation status updates
|
|
12
|
+
* - Error and warning notifications
|
|
13
|
+
* - Font loading status
|
|
14
|
+
* - Cross-component communication
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { eventBus } from './eventBus';
|
|
19
|
+
*
|
|
20
|
+
* // Listen for file opening events
|
|
21
|
+
* eventBus.on('open-file', () => {
|
|
22
|
+
* console.log('File open requested');
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Emit a progress update
|
|
26
|
+
* eventBus.emit('open-file-progress', {
|
|
27
|
+
* percentage: 50,
|
|
28
|
+
* stage: 'CONVERSION'
|
|
29
|
+
* subStage: AcDbConversionStage.Parsing,
|
|
30
|
+
* stageStatus: AcDbConversionStageStatus.InProgress
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* // Display a message to the user
|
|
34
|
+
* eventBus.emit('message', {
|
|
35
|
+
* message: 'File opened successfully',
|
|
36
|
+
* type: 'success'
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export var eventBus = mitt();
|
|
41
|
+
//# sourceMappingURL=eventBus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventBus.js","sourceRoot":"","sources":["../../../src/editor/global/eventBus.ts"],"names":[],"mappings":"AACA,OAAO,IAAsB,MAAM,MAAM,CAAA;AAkEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,CAAC,IAAM,QAAQ,GAAwB,IAAI,EAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/editor/global/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/editor/global/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/editor/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/editor/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { AcEdBaseView } from '../view/AcEdBaseView';
|
|
2
|
+
/**
|
|
3
|
+
* The base class for all of classes to get user inputs such as string, angle, number, point, selection,
|
|
4
|
+
* and so on.
|
|
5
|
+
*
|
|
6
|
+
* This abstract class provides a common framework for handling user input operations in the CAD editor.
|
|
7
|
+
* It manages the input lifecycle including activation, deactivation, and promise-based resolution.
|
|
8
|
+
* Subclasses must implement specific input behaviors while this base class handles common functionality
|
|
9
|
+
* like keyboard event handling and promise management.
|
|
10
|
+
*
|
|
11
|
+
* @template TResult - The type of result that this input operation will return
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* class MyInput extends AcEdBaseInput<string> {
|
|
16
|
+
* // Implement specific input behavior
|
|
17
|
+
* }
|
|
18
|
+
* const input = new MyInput(view);
|
|
19
|
+
* const result = await input.start();
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare abstract class AcEdBaseInput<TResult> {
|
|
25
|
+
/** The view associated with this input operation */
|
|
26
|
+
protected view: AcEdBaseView;
|
|
27
|
+
/** Whether this input is currently active */
|
|
28
|
+
protected active: boolean;
|
|
29
|
+
/** Flag to prevent multiple resolutions of the same promise */
|
|
30
|
+
protected isResolvedOrRejected: boolean;
|
|
31
|
+
/** Promise resolve function for completing the input operation */
|
|
32
|
+
private _resolve?;
|
|
33
|
+
/** Promise reject function for canceling the input operation */
|
|
34
|
+
private _reject?;
|
|
35
|
+
/**
|
|
36
|
+
* Creates a new base input instance.
|
|
37
|
+
*
|
|
38
|
+
* @param view - The view that will handle this input operation
|
|
39
|
+
*/
|
|
40
|
+
constructor(view: AcEdBaseView);
|
|
41
|
+
/**
|
|
42
|
+
* Gets whether this input is currently active.
|
|
43
|
+
*
|
|
44
|
+
* @returns True if the input is active, false otherwise
|
|
45
|
+
*/
|
|
46
|
+
get isActive(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Activates this input operation.
|
|
49
|
+
* Sets up event listeners and marks the input as active.
|
|
50
|
+
* Subclasses should call super.activate() when overriding.
|
|
51
|
+
*/
|
|
52
|
+
activate(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Deactivates this input operation.
|
|
55
|
+
* Removes event listeners and marks the input as inactive.
|
|
56
|
+
* Subclasses should call super.deactivate() when overriding.
|
|
57
|
+
*/
|
|
58
|
+
deactivate(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Resolves the input operation with the specified result.
|
|
61
|
+
* Automatically deactivates the input and prevents multiple resolutions.
|
|
62
|
+
*
|
|
63
|
+
* @param result - The result to resolve the promise with
|
|
64
|
+
*/
|
|
65
|
+
resolve(result: TResult): void;
|
|
66
|
+
/**
|
|
67
|
+
* Rejects the input operation with the specified reason.
|
|
68
|
+
* Automatically deactivates the input and prevents multiple rejections.
|
|
69
|
+
*
|
|
70
|
+
* @param reason - The reason for rejecting the input operation
|
|
71
|
+
*/
|
|
72
|
+
reject(reason: string): void;
|
|
73
|
+
/**
|
|
74
|
+
* Handles keyboard events for the input operation.
|
|
75
|
+
* By default, cancels the operation when Escape is pressed.
|
|
76
|
+
*
|
|
77
|
+
* @param e - The keyboard event
|
|
78
|
+
*/
|
|
79
|
+
private onKeyDown;
|
|
80
|
+
/**
|
|
81
|
+
* Starts the input operation and returns a promise that resolves with the result.
|
|
82
|
+
* This method activates the input and returns a promise that will be resolved
|
|
83
|
+
* when the user completes the input operation.
|
|
84
|
+
*
|
|
85
|
+
* @returns A promise that resolves with the input result
|
|
86
|
+
*/
|
|
87
|
+
start(): Promise<TResult>;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=AcEdBaseInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcEdBaseInput.d.ts","sourceRoot":"","sources":["../../../src/editor/input/AcEdBaseInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,8BAAsB,aAAa,CAAC,OAAO;IACzC,oDAAoD;IACpD,SAAS,CAAC,IAAI,EAAE,YAAY,CAAA;IAC5B,6CAA6C;IAC7C,SAAS,CAAC,MAAM,UAAQ;IACxB,+DAA+D;IAC/D,SAAS,CAAC,oBAAoB,UAAQ;IAEtC,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAC,CAA0B;IAC3C,gEAAgE;IAChE,OAAO,CAAC,OAAO,CAAC,CAA0B;IAE1C;;;;OAIG;gBACS,IAAI,EAAE,YAAY;IAI9B;;;;OAIG;IACH,IAAI,QAAQ,YAEX;IAED;;;;OAIG;IACH,QAAQ;IAQR;;;;OAIG;IACH,UAAU;IAKV;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO;IAQvB;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM;IAQrB;;;;;OAKG;IACH,OAAO,CAAC,SAAS,CAIhB;IAED;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;CAQhC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* The base class for all of classes to get user inputs such as string, angle, number, point, selection,
|
|
39
|
+
* and so on.
|
|
40
|
+
*
|
|
41
|
+
* This abstract class provides a common framework for handling user input operations in the CAD editor.
|
|
42
|
+
* It manages the input lifecycle including activation, deactivation, and promise-based resolution.
|
|
43
|
+
* Subclasses must implement specific input behaviors while this base class handles common functionality
|
|
44
|
+
* like keyboard event handling and promise management.
|
|
45
|
+
*
|
|
46
|
+
* @template TResult - The type of result that this input operation will return
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* class MyInput extends AcEdBaseInput<string> {
|
|
51
|
+
* // Implement specific input behavior
|
|
52
|
+
* }
|
|
53
|
+
* const input = new MyInput(view);
|
|
54
|
+
* const result = await input.start();
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
var AcEdBaseInput = /** @class */ (function () {
|
|
60
|
+
/**
|
|
61
|
+
* Creates a new base input instance.
|
|
62
|
+
*
|
|
63
|
+
* @param view - The view that will handle this input operation
|
|
64
|
+
*/
|
|
65
|
+
function AcEdBaseInput(view) {
|
|
66
|
+
var _this = this;
|
|
67
|
+
/** Whether this input is currently active */
|
|
68
|
+
this.active = false;
|
|
69
|
+
/** Flag to prevent multiple resolutions of the same promise */
|
|
70
|
+
this.isResolvedOrRejected = false;
|
|
71
|
+
/**
|
|
72
|
+
* Handles keyboard events for the input operation.
|
|
73
|
+
* By default, cancels the operation when Escape is pressed.
|
|
74
|
+
*
|
|
75
|
+
* @param e - The keyboard event
|
|
76
|
+
*/
|
|
77
|
+
this.onKeyDown = function (e) {
|
|
78
|
+
if (e.code === 'Escape') {
|
|
79
|
+
_this.reject('Canceled by user!');
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
this.view = view;
|
|
83
|
+
}
|
|
84
|
+
Object.defineProperty(AcEdBaseInput.prototype, "isActive", {
|
|
85
|
+
/**
|
|
86
|
+
* Gets whether this input is currently active.
|
|
87
|
+
*
|
|
88
|
+
* @returns True if the input is active, false otherwise
|
|
89
|
+
*/
|
|
90
|
+
get: function () {
|
|
91
|
+
return this.active;
|
|
92
|
+
},
|
|
93
|
+
enumerable: false,
|
|
94
|
+
configurable: true
|
|
95
|
+
});
|
|
96
|
+
/**
|
|
97
|
+
* Activates this input operation.
|
|
98
|
+
* Sets up event listeners and marks the input as active.
|
|
99
|
+
* Subclasses should call super.activate() when overriding.
|
|
100
|
+
*/
|
|
101
|
+
AcEdBaseInput.prototype.activate = function () {
|
|
102
|
+
if (this.isActive) {
|
|
103
|
+
console.warn('Something wrong here!');
|
|
104
|
+
}
|
|
105
|
+
this.active = true;
|
|
106
|
+
this.view.canvas.addEventListener('keydown', this.onKeyDown);
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Deactivates this input operation.
|
|
110
|
+
* Removes event listeners and marks the input as inactive.
|
|
111
|
+
* Subclasses should call super.deactivate() when overriding.
|
|
112
|
+
*/
|
|
113
|
+
AcEdBaseInput.prototype.deactivate = function () {
|
|
114
|
+
this.active = false;
|
|
115
|
+
this.view.canvas.removeEventListener('keydown', this.onKeyDown);
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Resolves the input operation with the specified result.
|
|
119
|
+
* Automatically deactivates the input and prevents multiple resolutions.
|
|
120
|
+
*
|
|
121
|
+
* @param result - The result to resolve the promise with
|
|
122
|
+
*/
|
|
123
|
+
AcEdBaseInput.prototype.resolve = function (result) {
|
|
124
|
+
this.deactivate();
|
|
125
|
+
if (this._resolve && !this.isResolvedOrRejected) {
|
|
126
|
+
this._resolve(result);
|
|
127
|
+
this.isResolvedOrRejected = true;
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Rejects the input operation with the specified reason.
|
|
132
|
+
* Automatically deactivates the input and prevents multiple rejections.
|
|
133
|
+
*
|
|
134
|
+
* @param reason - The reason for rejecting the input operation
|
|
135
|
+
*/
|
|
136
|
+
AcEdBaseInput.prototype.reject = function (reason) {
|
|
137
|
+
this.deactivate();
|
|
138
|
+
if (this._reject && !this.isResolvedOrRejected) {
|
|
139
|
+
this._reject(reason);
|
|
140
|
+
this.isResolvedOrRejected = true;
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Starts the input operation and returns a promise that resolves with the result.
|
|
145
|
+
* This method activates the input and returns a promise that will be resolved
|
|
146
|
+
* when the user completes the input operation.
|
|
147
|
+
*
|
|
148
|
+
* @returns A promise that resolves with the input result
|
|
149
|
+
*/
|
|
150
|
+
AcEdBaseInput.prototype.start = function () {
|
|
151
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
152
|
+
var _this = this;
|
|
153
|
+
return __generator(this, function (_a) {
|
|
154
|
+
this.isResolvedOrRejected = false;
|
|
155
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
156
|
+
_this._resolve = resolve;
|
|
157
|
+
_this._reject = reject;
|
|
158
|
+
_this.activate();
|
|
159
|
+
})];
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
return AcEdBaseInput;
|
|
164
|
+
}());
|
|
165
|
+
export { AcEdBaseInput };
|
|
166
|
+
//# sourceMappingURL=AcEdBaseInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcEdBaseInput.js","sourceRoot":"","sources":["../../../src/editor/input/AcEdBaseInput.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IAaE;;;;OAIG;IACH,uBAAY,IAAkB;QAA9B,iBAEC;QAjBD,6CAA6C;QACnC,WAAM,GAAG,KAAK,CAAA;QACxB,+DAA+D;QACrD,yBAAoB,GAAG,KAAK,CAAA;QA4EtC;;;;;WAKG;QACK,cAAS,GAAG,UAAC,CAAgB;YACnC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxB,KAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;YAClC,CAAC;QACH,CAAC,CAAA;QAzEC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAOD,sBAAI,mCAAQ;QALZ;;;;WAIG;aACH;YACE,OAAO,IAAI,CAAC,MAAM,CAAA;QACpB,CAAC;;;OAAA;IAED;;;;OAIG;IACH,gCAAQ,GAAR;QACE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QACvC,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAC9D,CAAC;IAED;;;;OAIG;IACH,kCAAU,GAAV;QACE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IACjE,CAAC;IAED;;;;;OAKG;IACH,+BAAO,GAAP,UAAQ,MAAe;QACrB,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YACrB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAA;QAClC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,8BAAM,GAAN,UAAO,MAAc;QACnB,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACpB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAA;QAClC,CAAC;IACH,CAAC;IAcD;;;;;;OAMG;IACG,6BAAK,GAAX;;;;gBACE,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAA;gBACjC,sBAAO,IAAI,OAAO,CAAU,UAAC,OAAO,EAAE,MAAM;wBAC1C,KAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;wBACvB,KAAI,CAAC,OAAO,GAAG,MAAM,CAAA;wBACrB,KAAI,CAAC,QAAQ,EAAE,CAAA;oBACjB,CAAC,CAAC,EAAA;;;KACH;IACH,oBAAC;AAAD,CAAC,AA7GD,IA6GC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { AcGeBox2d } from '@mlightcad/data-model';
|
|
2
|
+
import { AcEdBaseView } from '../view';
|
|
3
|
+
import { AcEdBaseInput } from './AcEdBaseInput';
|
|
4
|
+
/**
|
|
5
|
+
* Selector used to select entities by a box.
|
|
6
|
+
*
|
|
7
|
+
* This class provides interactive box selection functionality for the CAD editor.
|
|
8
|
+
* Users can click and drag to create a selection rectangle, which is then converted
|
|
9
|
+
* to world coordinates for entity selection operations.
|
|
10
|
+
*
|
|
11
|
+
* The selector handles mouse events to track the selection area and provides visual
|
|
12
|
+
* feedback through a DOM overlay showing the selection bounds.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const boxSelector = new AcEdBoxSelector(view);
|
|
17
|
+
* const selectionBox = await boxSelector.start();
|
|
18
|
+
* // Use selectionBox to select entities
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
export declare class AcEdBoxSelector extends AcEdBaseInput<AcGeBox2d> {
|
|
24
|
+
/** Whether the mouse button is currently pressed */
|
|
25
|
+
private mouseDown;
|
|
26
|
+
/** Whether the mouse has moved since being pressed */
|
|
27
|
+
private mouseMove;
|
|
28
|
+
/** X coordinate where mouse was initially pressed (-1 indicates invalid) */
|
|
29
|
+
private mouseDownPositionX;
|
|
30
|
+
/** Y coordinate where mouse was initially pressed (-1 indicates invalid) */
|
|
31
|
+
private mouseDownPositionY;
|
|
32
|
+
/** DOM element used to draw the selection box */
|
|
33
|
+
private boxDom?;
|
|
34
|
+
/** Selection box border color */
|
|
35
|
+
color: number;
|
|
36
|
+
/** The container element for the selection box */
|
|
37
|
+
private container;
|
|
38
|
+
/**
|
|
39
|
+
* Creates a new box selector instance.
|
|
40
|
+
*
|
|
41
|
+
* @param view - The view that will handle this box selection operation
|
|
42
|
+
*/
|
|
43
|
+
constructor(view: AcEdBaseView);
|
|
44
|
+
/**
|
|
45
|
+
* Activates the box selector.
|
|
46
|
+
* Sets up mouse event listeners for tracking selection area.
|
|
47
|
+
* Overrides the base class to add mouse event handling.
|
|
48
|
+
*/
|
|
49
|
+
activate(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Deactivates the box selector.
|
|
52
|
+
* Removes mouse event listeners and hides the selection box.
|
|
53
|
+
* Overrides the base class to clean up mouse event handling.
|
|
54
|
+
*/
|
|
55
|
+
deactivate(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Rejects the box selection operation.
|
|
58
|
+
* Cleans up the selection box DOM element.
|
|
59
|
+
*
|
|
60
|
+
* @param reason - The reason for rejecting the selection operation
|
|
61
|
+
*/
|
|
62
|
+
reject(reason: string): void;
|
|
63
|
+
/**
|
|
64
|
+
* Handles mouse down events to start box selection.
|
|
65
|
+
* Records the initial mouse position for the selection area.
|
|
66
|
+
*
|
|
67
|
+
* @param e - The mouse event
|
|
68
|
+
*/
|
|
69
|
+
private mousedown;
|
|
70
|
+
/**
|
|
71
|
+
* Handles mouse move events to update the selection box.
|
|
72
|
+
* Creates and updates the visual selection rectangle as the user drags.
|
|
73
|
+
*
|
|
74
|
+
* @param e - The mouse event
|
|
75
|
+
*/
|
|
76
|
+
private mousemove;
|
|
77
|
+
/**
|
|
78
|
+
* Handles mouse up events to complete box selection.
|
|
79
|
+
* Calculates the final selection area and resolves the promise with the result.
|
|
80
|
+
*
|
|
81
|
+
* @param e - The mouse event
|
|
82
|
+
*/
|
|
83
|
+
private mouseup;
|
|
84
|
+
/**
|
|
85
|
+
* Draws the selection rectangle on screen.
|
|
86
|
+
* Creates or updates the DOM element representing the selection box.
|
|
87
|
+
*
|
|
88
|
+
* @param leftTop - The top-left corner of the selection rectangle
|
|
89
|
+
* @param rightBottom - The bottom-right corner of the selection rectangle
|
|
90
|
+
*/
|
|
91
|
+
private drawRect;
|
|
92
|
+
/**
|
|
93
|
+
* Sets the visibility of the selection rectangle DOM element.
|
|
94
|
+
*
|
|
95
|
+
* @param visible - Whether the selection rectangle should be visible
|
|
96
|
+
*/
|
|
97
|
+
private setRectDomVisible;
|
|
98
|
+
/**
|
|
99
|
+
* Converts a screen coordinate box to world coordinate system.
|
|
100
|
+
* Transforms the selection box from screen coordinates to world coordinates
|
|
101
|
+
* for use in entity selection operations.
|
|
102
|
+
*
|
|
103
|
+
* @param box - The selection box in screen coordinates
|
|
104
|
+
* @returns The selection box in world coordinates
|
|
105
|
+
*/
|
|
106
|
+
private toWcs;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=AcEdBoxSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcEdBoxSelector.d.ts","sourceRoot":"","sources":["../../../src/editor/input/AcEdBoxSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAe,MAAM,uBAAuB,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAO/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,eAAgB,SAAQ,aAAa,CAAC,SAAS,CAAC;IAC3D,oDAAoD;IACpD,OAAO,CAAC,SAAS,CAAQ;IACzB,sDAAsD;IACtD,OAAO,CAAC,SAAS,CAAQ;IACzB,4EAA4E;IAC5E,OAAO,CAAC,kBAAkB,CAAK;IAC/B,4EAA4E;IAC5E,OAAO,CAAC,kBAAkB,CAAK;IAE/B,iDAAiD;IACjD,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,iCAAiC;IAC1B,KAAK,EAAE,MAAM,CAAA;IACpB,kDAAkD;IAClD,OAAO,CAAC,SAAS,CAAa;IAE9B;;;;OAIG;gBACS,IAAI,EAAE,YAAY;IAM9B;;;;OAIG;IACH,QAAQ;IAQR;;;;OAIG;IACH,UAAU;IAQV;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM;IAMrB;;;;;OAKG;IACH,OAAO,CAAC,SAAS,CAOhB;IAED;;;;;OAKG;IACH,OAAO,CAAC,SAAS,CAuBhB;IAED;;;;;OAKG;IACH,OAAO,CAAC,OAAO,CAmBd;IAED;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;IAiChB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK;CAQd"}
|