@mlightcad/cad-simple-viewer 1.7.8 → 1.8.0-preview.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/LICENSE +21 -21
- package/README.md +190 -190
- package/dist/cad-simple-viewer.js +5535 -5280
- package/dist/cad-simple-viewer.umd.cjs +72 -72
- package/find.ts +7 -7
- package/icons.ts +7 -7
- package/lib/editor/input/handler/AcEdInputHandler.d.ts +7 -2
- package/lib/editor/input/handler/AcEdInputHandler.d.ts.map +1 -1
- package/lib/editor/input/handler/AcEdPointHandler.d.ts +8 -7
- package/lib/editor/input/handler/AcEdPointHandler.d.ts.map +1 -1
- package/lib/editor/input/handler/AcEdPointHandler.js +126 -30
- package/lib/editor/input/handler/AcEdPointHandler.js.map +1 -1
- package/lib/editor/input/ui/AcEdCommandLine.d.ts +28 -3
- package/lib/editor/input/ui/AcEdCommandLine.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdCommandLine.js +92 -26
- package/lib/editor/input/ui/AcEdCommandLine.js.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingInput.d.ts +6 -0
- package/lib/editor/input/ui/AcEdFloatingInput.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingInput.js +32 -6
- package/lib/editor/input/ui/AcEdFloatingInput.js.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingInputBoxes.d.ts +19 -2
- package/lib/editor/input/ui/AcEdFloatingInputBoxes.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingInputBoxes.js +23 -5
- package/lib/editor/input/ui/AcEdFloatingInputBoxes.js.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingInputTypes.d.ts +18 -0
- package/lib/editor/input/ui/AcEdFloatingInputTypes.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdInputManager.d.ts +22 -0
- package/lib/editor/input/ui/AcEdInputManager.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdInputManager.js +56 -5
- package/lib/editor/input/ui/AcEdInputManager.js.map +1 -1
- package/lib/editor/input/ui/AcEdKeyboardUtil.d.ts +28 -0
- package/lib/editor/input/ui/AcEdKeyboardUtil.d.ts.map +1 -0
- package/lib/editor/input/ui/AcEdKeyboardUtil.js +59 -0
- package/lib/editor/input/ui/AcEdKeyboardUtil.js.map +1 -0
- package/lib/i18n/ar/jig.d.ts +11 -0
- package/lib/i18n/ar/jig.d.ts.map +1 -1
- package/lib/i18n/ar/jig.js +9 -1
- package/lib/i18n/ar/jig.js.map +1 -1
- package/lib/i18n/cs/jig.d.ts +11 -0
- package/lib/i18n/cs/jig.d.ts.map +1 -1
- package/lib/i18n/cs/jig.js +11 -0
- package/lib/i18n/cs/jig.js.map +1 -1
- package/lib/i18n/en/jig.d.ts +11 -0
- package/lib/i18n/en/jig.d.ts.map +1 -1
- package/lib/i18n/en/jig.js +11 -0
- package/lib/i18n/en/jig.js.map +1 -1
- package/lib/i18n/tr/jig.d.ts +11 -0
- package/lib/i18n/tr/jig.d.ts.map +1 -1
- package/lib/i18n/tr/jig.js +11 -0
- package/lib/i18n/tr/jig.js.map +1 -1
- package/lib/i18n/zh/jig.d.ts +11 -0
- package/lib/i18n/zh/jig.d.ts.map +1 -1
- package/lib/i18n/zh/jig.js +11 -0
- package/lib/i18n/zh/jig.js.map +1 -1
- package/lib/view/AcEdViewKeyHandler.d.ts +17 -0
- package/lib/view/AcEdViewKeyHandler.d.ts.map +1 -1
- package/lib/view/AcEdViewKeyHandler.js +44 -1
- package/lib/view/AcEdViewKeyHandler.js.map +1 -1
- package/package.json +5 -5
- package/src/find/AcApFindNavigator.ts +190 -190
- package/src/find/findDrawing.ts +211 -211
- package/src/find/findText.ts +624 -624
- package/src/find/index.ts +2 -2
- package/src/ui/icons.ts +411 -411
package/find.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Subpath entry for `@mlightcad/cad-simple-viewer/find`.
|
|
3
|
-
*
|
|
4
|
-
* Pure (DOM-free, renderer-free) text search shared by every UI, importable
|
|
5
|
-
* without loading the rest of the viewer.
|
|
6
|
-
*/
|
|
7
|
-
export * from './src/find'
|
|
1
|
+
/**
|
|
2
|
+
* Subpath entry for `@mlightcad/cad-simple-viewer/find`.
|
|
3
|
+
*
|
|
4
|
+
* Pure (DOM-free, renderer-free) text search shared by every UI, importable
|
|
5
|
+
* without loading the rest of the viewer.
|
|
6
|
+
*/
|
|
7
|
+
export * from './src/find'
|
package/icons.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Subpath entry for `@mlightcad/cad-simple-viewer/icons`.
|
|
3
|
-
*
|
|
4
|
-
* Lets Node10 module resolution and the HTML viewer IIFE import icon
|
|
5
|
-
* strings without loading the rest of the viewer.
|
|
6
|
-
*/
|
|
7
|
-
export * from './src/ui/icons'
|
|
1
|
+
/**
|
|
2
|
+
* Subpath entry for `@mlightcad/cad-simple-viewer/icons`.
|
|
3
|
+
*
|
|
4
|
+
* Lets Node10 module resolution and the HTML viewer IIFE import icon
|
|
5
|
+
* strings without loading the rest of the viewer.
|
|
6
|
+
*/
|
|
7
|
+
export * from './src/ui/icons'
|
|
@@ -3,8 +3,13 @@ import { AcGePoint2dLike } from '@mlightcad/data-model';
|
|
|
3
3
|
* Optional context for AutoCAD-style command-line point entry.
|
|
4
4
|
*/
|
|
5
5
|
export interface AcEdPointInputContext {
|
|
6
|
-
/**
|
|
7
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Last picked point or prompt base point for relative (`@`) entry.
|
|
8
|
+
* Optional `z` participates in relative Cartesian / cylindrical Z offsets.
|
|
9
|
+
*/
|
|
10
|
+
referencePoint?: (AcGePoint2dLike & {
|
|
11
|
+
z?: number;
|
|
12
|
+
}) | null;
|
|
8
13
|
/**
|
|
9
14
|
* Current cursor position in WCS. Required to interpret a lone distance value
|
|
10
15
|
* as a point along the active rubber-band direction.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcEdInputHandler.d.ts","sourceRoot":"","sources":["../../../../src/editor/input/handler/AcEdInputHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC
|
|
1
|
+
{"version":3,"file":"AcEdInputHandler.d.ts","sourceRoot":"","sources":["../../../../src/editor/input/handler/AcEdInputHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,eAAe,GAAG;QAAE,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAA;IAC1D;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC;;;;;OAKG;IACH,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAA;IAEtC;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,CAAC,GAAG,IAAI,CAAA;CAC3E"}
|
|
@@ -16,17 +16,18 @@ export declare class AcEdPointHandler implements AcEdInputHandler<AcGePoint3dLik
|
|
|
16
16
|
* Parses an AutoCAD-style point token from the command line.
|
|
17
17
|
*
|
|
18
18
|
* Supported forms:
|
|
19
|
-
* - Absolute Cartesian: `X,Y` or `X Y`
|
|
20
|
-
* - Relative Cartesian: `@X,Y`
|
|
19
|
+
* - Absolute Cartesian: `X,Y` / `X,Y,Z` or `X Y` / `X Y Z`
|
|
20
|
+
* - Relative Cartesian: `@X,Y` / `@X,Y,Z`
|
|
21
21
|
* - Absolute polar: `distance<angle`
|
|
22
22
|
* - Relative polar: `@distance<angle`
|
|
23
|
+
* - Cylindrical: `distance<angle,Z` (and `@` / `#` variants)
|
|
24
|
+
* - Spherical: `distance<angle<angle` (XY projection kept; Z stored)
|
|
25
|
+
* - Absolute override: `#…` (dynamic-input absolute prefix)
|
|
26
|
+
* - WCS force: `*…` / `@*…` / `#*…` (parsed; same as UCS while no UCS transform)
|
|
23
27
|
* - Rubber-band distance: plain number when a reference point and cursor
|
|
24
28
|
* position are available
|
|
25
29
|
*/
|
|
26
|
-
parseCommandLine(token: string, context?: AcEdPointInputContext):
|
|
27
|
-
|
|
28
|
-
y: number;
|
|
29
|
-
z: number;
|
|
30
|
-
} | null;
|
|
30
|
+
parseCommandLine(token: string, context?: AcEdPointInputContext): import("@mlightcad/data-model").AcGeVector3dLike | null;
|
|
31
|
+
private resolvePoint;
|
|
31
32
|
}
|
|
32
33
|
//# sourceMappingURL=AcEdPointHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcEdPointHandler.d.ts","sourceRoot":"","sources":["../../../../src/editor/input/handler/AcEdPointHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"AcEdPointHandler.d.ts","sourceRoot":"","sources":["../../../../src/editor/input/handler/AcEdPointHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAoG5E;;GAEG;AACH,qBAAa,gBAAiB,YAAW,gBAAgB,CAAC,eAAe,CAAC;IACxE,SAAS,CAAC,OAAO,EAAE,sBAAsB,CAAA;gBAE7B,OAAO,EAAE,sBAAsB;IAI3C,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM;;;;;IAW3B;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB;IA4G/D,OAAO,CAAC,YAAY;CAkBrB"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
var NUMERIC_TOKEN = /^-?(?:\d+\.?\d*|\.\d+)$/;
|
|
2
2
|
/**
|
|
3
|
-
* Splits a Cartesian point token into x/y components.
|
|
3
|
+
* Splits a Cartesian point token into x/y/(optional z) components.
|
|
4
4
|
*
|
|
5
|
-
* Accepts comma-separated (`50,30`
|
|
6
|
-
*
|
|
5
|
+
* Accepts comma-separated (`50,30` / `50,30,10`) or whitespace-separated
|
|
6
|
+
* (`50 30` / `50 30 10`) forms.
|
|
7
7
|
*/
|
|
8
8
|
function splitCartesianPointToken(token) {
|
|
9
9
|
var trimmed = token.trim();
|
|
@@ -13,14 +13,72 @@ function splitCartesianPointToken(token) {
|
|
|
13
13
|
var parts_1 = trimmed.split(',').map(function (v) { return v.trim(); });
|
|
14
14
|
if (parts_1.length !== 2 && parts_1.length !== 3)
|
|
15
15
|
return undefined;
|
|
16
|
-
if (parts_1.
|
|
16
|
+
if (parts_1.some(function (part) { return part === '' || Number.isNaN(Number(part)); })) {
|
|
17
17
|
return undefined;
|
|
18
|
-
|
|
18
|
+
}
|
|
19
|
+
return parts_1.length === 3
|
|
20
|
+
? { x: parts_1[0], y: parts_1[1], z: parts_1[2] }
|
|
21
|
+
: { x: parts_1[0], y: parts_1[1] };
|
|
19
22
|
}
|
|
20
23
|
var parts = trimmed.split(/\s+/);
|
|
21
|
-
if (parts.length < 2)
|
|
24
|
+
if (parts.length < 2 || parts.length > 3)
|
|
25
|
+
return undefined;
|
|
26
|
+
if (parts.some(function (part) { return part === '' || Number.isNaN(Number(part)); })) {
|
|
22
27
|
return undefined;
|
|
23
|
-
|
|
28
|
+
}
|
|
29
|
+
return parts.length === 3
|
|
30
|
+
? { x: parts[0], y: parts[1], z: parts[2] }
|
|
31
|
+
: { x: parts[0], y: parts[1] };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Strips AutoCAD coordinate prefixes from a command-line token.
|
|
35
|
+
*
|
|
36
|
+
* Supported prefixes (any order, typically `@`/`#` then `*`):
|
|
37
|
+
* - `#` — force absolute (dynamic-input absolute override)
|
|
38
|
+
* - `@` — relative to the last / reference point
|
|
39
|
+
* - `*` — interpret in WCS (UCS and WCS are currently the same frame)
|
|
40
|
+
*/
|
|
41
|
+
function stripCoordinatePrefixes(token) {
|
|
42
|
+
var body = token.trim();
|
|
43
|
+
var forceAbsolute = false;
|
|
44
|
+
var isRelative = false;
|
|
45
|
+
var useWcs = false;
|
|
46
|
+
while (body.length > 0) {
|
|
47
|
+
var first = body[0];
|
|
48
|
+
if (first === '#') {
|
|
49
|
+
forceAbsolute = true;
|
|
50
|
+
isRelative = false;
|
|
51
|
+
body = body.slice(1).trim();
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (first === '@') {
|
|
55
|
+
if (!forceAbsolute)
|
|
56
|
+
isRelative = true;
|
|
57
|
+
body = body.slice(1).trim();
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (first === '*') {
|
|
61
|
+
useWcs = true;
|
|
62
|
+
body = body.slice(1).trim();
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
return { body: body, isRelative: isRelative, useWcs: useWcs };
|
|
68
|
+
}
|
|
69
|
+
function degToRad(degrees) {
|
|
70
|
+
return (degrees * Math.PI) / 180;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Parses a required numeric token. Empty strings must fail — `Number('')`
|
|
74
|
+
* is `0`, which would silently accept incomplete forms like `10<` or `<90`.
|
|
75
|
+
*/
|
|
76
|
+
function parseNumberToken(token) {
|
|
77
|
+
var trimmed = token.trim();
|
|
78
|
+
if (!trimmed)
|
|
79
|
+
return null;
|
|
80
|
+
var value = Number(trimmed);
|
|
81
|
+
return Number.isNaN(value) ? null : value;
|
|
24
82
|
}
|
|
25
83
|
/**
|
|
26
84
|
* Handles validation and parsing of point user input.
|
|
@@ -41,10 +99,14 @@ var AcEdPointHandler = /** @class */ (function () {
|
|
|
41
99
|
* Parses an AutoCAD-style point token from the command line.
|
|
42
100
|
*
|
|
43
101
|
* Supported forms:
|
|
44
|
-
* - Absolute Cartesian: `X,Y` or `X Y`
|
|
45
|
-
* - Relative Cartesian: `@X,Y`
|
|
102
|
+
* - Absolute Cartesian: `X,Y` / `X,Y,Z` or `X Y` / `X Y Z`
|
|
103
|
+
* - Relative Cartesian: `@X,Y` / `@X,Y,Z`
|
|
46
104
|
* - Absolute polar: `distance<angle`
|
|
47
105
|
* - Relative polar: `@distance<angle`
|
|
106
|
+
* - Cylindrical: `distance<angle,Z` (and `@` / `#` variants)
|
|
107
|
+
* - Spherical: `distance<angle<angle` (XY projection kept; Z stored)
|
|
108
|
+
* - Absolute override: `#…` (dynamic-input absolute prefix)
|
|
109
|
+
* - WCS force: `*…` / `@*…` / `#*…` (parsed; same as UCS while no UCS transform)
|
|
48
110
|
* - Rubber-band distance: plain number when a reference point and cursor
|
|
49
111
|
* position are available
|
|
50
112
|
*/
|
|
@@ -53,43 +115,63 @@ var AcEdPointHandler = /** @class */ (function () {
|
|
|
53
115
|
var trimmed = token.trim();
|
|
54
116
|
if (!trimmed)
|
|
55
117
|
return null;
|
|
56
|
-
|
|
57
|
-
|
|
118
|
+
// useWcs is reserved for a future UCS→WCS transform; prefixes are still
|
|
119
|
+
// stripped so `*3,4` / `@*2,0` parse while UCS equals WCS.
|
|
120
|
+
var _b = stripCoordinatePrefixes(trimmed), body = _b.body, isRelative = _b.isRelative, _useWcs = _b.useWcs;
|
|
58
121
|
if (!body)
|
|
59
122
|
return null;
|
|
60
123
|
var reference = (_a = context === null || context === void 0 ? void 0 : context.referencePoint) !== null && _a !== void 0 ? _a : undefined;
|
|
61
124
|
var ltIndex = body.indexOf('<');
|
|
62
125
|
if (ltIndex >= 0) {
|
|
63
|
-
var
|
|
64
|
-
var
|
|
65
|
-
|
|
66
|
-
var angleDeg = Number(angleStr);
|
|
67
|
-
if (Number.isNaN(dist) || Number.isNaN(angleDeg))
|
|
126
|
+
var dist = parseNumberToken(body.slice(0, ltIndex));
|
|
127
|
+
var rest = body.slice(ltIndex + 1).trim();
|
|
128
|
+
if (dist == null)
|
|
68
129
|
return null;
|
|
69
|
-
var
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
130
|
+
var secondLt = rest.indexOf('<');
|
|
131
|
+
if (secondLt >= 0) {
|
|
132
|
+
// Spherical: distance < azimuth < elevation
|
|
133
|
+
var azimDeg = parseNumberToken(rest.slice(0, secondLt));
|
|
134
|
+
var elevDeg = parseNumberToken(rest.slice(secondLt + 1));
|
|
135
|
+
if (azimDeg == null || elevDeg == null)
|
|
74
136
|
return null;
|
|
75
|
-
|
|
137
|
+
var azimRad = degToRad(azimDeg);
|
|
138
|
+
var elevRad = degToRad(elevDeg);
|
|
139
|
+
var xyDist = dist * Math.cos(elevRad);
|
|
140
|
+
return this.resolvePoint(isRelative, reference, xyDist * Math.cos(azimRad), xyDist * Math.sin(azimRad), dist * Math.sin(elevRad));
|
|
76
141
|
}
|
|
77
|
-
|
|
142
|
+
// Polar or cylindrical: distance < angle[, Z]
|
|
143
|
+
var angleStr = rest;
|
|
144
|
+
var z = 0;
|
|
145
|
+
var comma = rest.indexOf(',');
|
|
146
|
+
if (comma >= 0) {
|
|
147
|
+
angleStr = rest.slice(0, comma);
|
|
148
|
+
var parsedZ = parseNumberToken(rest.slice(comma + 1));
|
|
149
|
+
if (parsedZ == null)
|
|
150
|
+
return null;
|
|
151
|
+
z = parsedZ;
|
|
152
|
+
}
|
|
153
|
+
var angleDeg = parseNumberToken(angleStr);
|
|
154
|
+
if (angleDeg == null)
|
|
155
|
+
return null;
|
|
156
|
+
var angleRad = degToRad(angleDeg);
|
|
157
|
+
return this.resolvePoint(isRelative, reference, dist * Math.cos(angleRad), dist * Math.sin(angleRad), z);
|
|
78
158
|
}
|
|
79
159
|
var cartesian = splitCartesianPointToken(body);
|
|
80
160
|
if (cartesian) {
|
|
81
161
|
var offsetX = Number(cartesian.x);
|
|
82
162
|
var offsetY = Number(cartesian.y);
|
|
83
|
-
|
|
163
|
+
var offsetZ = cartesian.z != null ? Number(cartesian.z) : 0;
|
|
164
|
+
if (Number.isNaN(offsetX) ||
|
|
165
|
+
Number.isNaN(offsetY) ||
|
|
166
|
+
Number.isNaN(offsetZ)) {
|
|
84
167
|
return null;
|
|
85
|
-
if (isRelative) {
|
|
86
|
-
if (!reference)
|
|
87
|
-
return null;
|
|
88
|
-
return this.parse(String(reference.x + offsetX), String(reference.y + offsetY));
|
|
89
168
|
}
|
|
90
|
-
return this.
|
|
169
|
+
return this.resolvePoint(isRelative, reference, offsetX, offsetY, offsetZ);
|
|
91
170
|
}
|
|
92
171
|
if (NUMERIC_TOKEN.test(body)) {
|
|
172
|
+
// Direct-distance entry is a bare number only (`10`), never `#10` / `@10`.
|
|
173
|
+
if (trimmed !== body)
|
|
174
|
+
return null;
|
|
93
175
|
var distance = Number(body);
|
|
94
176
|
var cursor = context === null || context === void 0 ? void 0 : context.cursorPoint;
|
|
95
177
|
if (!reference || !cursor || Number.isNaN(distance))
|
|
@@ -98,10 +180,24 @@ var AcEdPointHandler = /** @class */ (function () {
|
|
|
98
180
|
var dy = cursor.y - reference.y;
|
|
99
181
|
var len = Math.hypot(dx, dy);
|
|
100
182
|
var angleRad = len > 1e-10 ? Math.atan2(dy, dx) : 0;
|
|
101
|
-
return this.
|
|
183
|
+
return this.resolvePoint(true, reference, distance * Math.cos(angleRad), distance * Math.sin(angleRad), 0);
|
|
102
184
|
}
|
|
103
185
|
return null;
|
|
104
186
|
};
|
|
187
|
+
AcEdPointHandler.prototype.resolvePoint = function (isRelative, reference, offsetX, offsetY, offsetZ) {
|
|
188
|
+
var _a;
|
|
189
|
+
if (isRelative) {
|
|
190
|
+
if (!reference)
|
|
191
|
+
return null;
|
|
192
|
+
return {
|
|
193
|
+
x: reference.x + offsetX,
|
|
194
|
+
y: reference.y + offsetY,
|
|
195
|
+
// AutoCAD relative `@x,y,z` / `@dist<ang,z` offsets Z from the last point.
|
|
196
|
+
z: ((_a = reference.z) !== null && _a !== void 0 ? _a : 0) + offsetZ
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
return { x: offsetX, y: offsetY, z: offsetZ };
|
|
200
|
+
};
|
|
105
201
|
return AcEdPointHandler;
|
|
106
202
|
}());
|
|
107
203
|
export { AcEdPointHandler };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcEdPointHandler.js","sourceRoot":"","sources":["../../../../src/editor/input/handler/AcEdPointHandler.ts"],"names":[],"mappings":"AAKA,IAAM,aAAa,GAAG,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"AcEdPointHandler.js","sourceRoot":"","sources":["../../../../src/editor/input/handler/AcEdPointHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,9 @@ import { AcEdMessageType } from './AcEdMessageType';
|
|
|
8
8
|
* - Floating command bar with left terminal glyph + down toggle and right up toggle
|
|
9
9
|
* - Command history popup
|
|
10
10
|
* - Message panel above the bar
|
|
11
|
-
* - Enter repeats last command if input empty
|
|
12
|
-
* -
|
|
11
|
+
* - Enter or Space repeats last command if input empty
|
|
12
|
+
* - Space confirms like Enter unless the active prompt accepts spaces
|
|
13
|
+
* - Esc cancels current command and returns focus to the view
|
|
13
14
|
* - Inline clickable options
|
|
14
15
|
* - Keyboard navigation
|
|
15
16
|
* - Promise-based execution for async command handling
|
|
@@ -41,6 +42,8 @@ export declare class AcEdCommandLine {
|
|
|
41
42
|
private activeSession?;
|
|
42
43
|
private resizeObserver?;
|
|
43
44
|
private isPromptActive;
|
|
45
|
+
/** Whether the active prompt takes Space as literal text instead of Enter. */
|
|
46
|
+
private spaceInsertsText;
|
|
44
47
|
private readonly recentMessages;
|
|
45
48
|
private recentHideTimer?;
|
|
46
49
|
private isCommandLifecycleBound;
|
|
@@ -66,6 +69,18 @@ export declare class AcEdCommandLine {
|
|
|
66
69
|
clearInput(): void;
|
|
67
70
|
focusInput(): void;
|
|
68
71
|
setInputReadOnly(readOnly: boolean): void;
|
|
72
|
+
/** Whether a prompt session currently owns the command line input. */
|
|
73
|
+
get hasActiveSession(): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Types a character that was pressed outside the command line input (for
|
|
76
|
+
* example on the canvas) so a command can be started without clicking the
|
|
77
|
+
* command line first.
|
|
78
|
+
*
|
|
79
|
+
* @param char - Single printable character to insert at the caret
|
|
80
|
+
* @returns `true` when the character was inserted; `false` when the command
|
|
81
|
+
* line is hidden or read-only
|
|
82
|
+
*/
|
|
83
|
+
typeText(char: string): boolean;
|
|
69
84
|
/**
|
|
70
85
|
* Displays a message in the command line history panel.
|
|
71
86
|
*
|
|
@@ -84,6 +99,8 @@ export declare class AcEdCommandLine {
|
|
|
84
99
|
mode: AcEdPromptInputMode;
|
|
85
100
|
allowNone: boolean;
|
|
86
101
|
allowTyping?: boolean;
|
|
102
|
+
/** Treat Space as literal text instead of Enter (string prompts). */
|
|
103
|
+
spaceInsertsText?: boolean;
|
|
87
104
|
}): Promise<AcEdPromptInputResult<T>>;
|
|
88
105
|
/**
|
|
89
106
|
* Localize a text key using AcApI18n.t().
|
|
@@ -111,8 +128,16 @@ export declare class AcEdCommandLine {
|
|
|
111
128
|
private createUI;
|
|
112
129
|
/** Bind event listeners */
|
|
113
130
|
private bindEvents;
|
|
114
|
-
/** Handle Enter/Escape keys */
|
|
131
|
+
/** Handle Enter/Space/Escape keys */
|
|
115
132
|
private handleKeyDown;
|
|
133
|
+
/** Submits the input to the active prompt, or runs it as a command. */
|
|
134
|
+
private confirmInput;
|
|
135
|
+
/**
|
|
136
|
+
* Moves keyboard focus from the input back to the host view so view
|
|
137
|
+
* shortcuts (Delete, Ctrl+Z, type-to-command), which are scoped to focus
|
|
138
|
+
* inside the view container, keep working after Esc.
|
|
139
|
+
*/
|
|
140
|
+
private returnFocusToView;
|
|
116
141
|
/** Handle input change to show auto-complete */
|
|
117
142
|
private handleInputChange;
|
|
118
143
|
/** Navigate auto-complete list with arrow keys */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcEdCommandLine.d.ts","sourceRoot":"","sources":["../../../../src/editor/input/ui/AcEdCommandLine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAGL,mBAAmB,EACnB,qBAAqB,EAEtB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD
|
|
1
|
+
{"version":3,"file":"AcEdCommandLine.d.ts","sourceRoot":"","sources":["../../../../src/editor/input/ui/AcEdCommandLine.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,8 +44,9 @@ import { AcEdKeywordSession, AcEdPromptInputSession } from '../session';
|
|
|
44
44
|
* - Floating command bar with left terminal glyph + down toggle and right up toggle
|
|
45
45
|
* - Command history popup
|
|
46
46
|
* - Message panel above the bar
|
|
47
|
-
* - Enter repeats last command if input empty
|
|
48
|
-
* -
|
|
47
|
+
* - Enter or Space repeats last command if input empty
|
|
48
|
+
* - Space confirms like Enter unless the active prompt accepts spaces
|
|
49
|
+
* - Esc cancels current command and returns focus to the view
|
|
49
50
|
* - Inline clickable options
|
|
50
51
|
* - Keyboard navigation
|
|
51
52
|
* - Promise-based execution for async command handling
|
|
@@ -56,6 +57,8 @@ var AcEdCommandLine = /** @class */ (function () {
|
|
|
56
57
|
if (container === void 0) { container = document.body; }
|
|
57
58
|
var _this = this;
|
|
58
59
|
this.isPromptActive = false;
|
|
60
|
+
/** Whether the active prompt takes Space as literal text instead of Enter. */
|
|
61
|
+
this.spaceInsertsText = false;
|
|
59
62
|
this.recentMessages = [];
|
|
60
63
|
this.isCommandLifecycleBound = false;
|
|
61
64
|
/** Aborts document/window listeners registered in the constructor. */
|
|
@@ -153,6 +156,37 @@ var AcEdCommandLine = /** @class */ (function () {
|
|
|
153
156
|
AcEdCommandLine.prototype.setInputReadOnly = function (readOnly) {
|
|
154
157
|
this.textInput.readOnly = readOnly;
|
|
155
158
|
};
|
|
159
|
+
Object.defineProperty(AcEdCommandLine.prototype, "hasActiveSession", {
|
|
160
|
+
/** Whether a prompt session currently owns the command line input. */
|
|
161
|
+
get: function () {
|
|
162
|
+
return this.activeSession != null;
|
|
163
|
+
},
|
|
164
|
+
enumerable: false,
|
|
165
|
+
configurable: true
|
|
166
|
+
});
|
|
167
|
+
/**
|
|
168
|
+
* Types a character that was pressed outside the command line input (for
|
|
169
|
+
* example on the canvas) so a command can be started without clicking the
|
|
170
|
+
* command line first.
|
|
171
|
+
*
|
|
172
|
+
* @param char - Single printable character to insert at the caret
|
|
173
|
+
* @returns `true` when the character was inserted; `false` when the command
|
|
174
|
+
* line is hidden or read-only
|
|
175
|
+
*/
|
|
176
|
+
AcEdCommandLine.prototype.typeText = function (char) {
|
|
177
|
+
var _a, _b;
|
|
178
|
+
if (!char || !this.visible || this.textInput.readOnly)
|
|
179
|
+
return false;
|
|
180
|
+
var input = this.textInput;
|
|
181
|
+
input.focus();
|
|
182
|
+
var start = (_a = input.selectionStart) !== null && _a !== void 0 ? _a : input.value.length;
|
|
183
|
+
var end = (_b = input.selectionEnd) !== null && _b !== void 0 ? _b : start;
|
|
184
|
+
input.value = input.value.slice(0, start) + char + input.value.slice(end);
|
|
185
|
+
var caret = start + char.length;
|
|
186
|
+
input.setSelectionRange(caret, caret);
|
|
187
|
+
this.handleInputChange();
|
|
188
|
+
return true;
|
|
189
|
+
};
|
|
156
190
|
/**
|
|
157
191
|
* Displays a message in the command line history panel.
|
|
158
192
|
*
|
|
@@ -179,6 +213,7 @@ var AcEdCommandLine = /** @class */ (function () {
|
|
|
179
213
|
case 0:
|
|
180
214
|
session = new AcEdKeywordSession(this, options, allowTyping);
|
|
181
215
|
this.activeSession = session;
|
|
216
|
+
this.spaceInsertsText = false;
|
|
182
217
|
_a.label = 1;
|
|
183
218
|
case 1:
|
|
184
219
|
_a.trys.push([1, , 3, 4]);
|
|
@@ -199,17 +234,18 @@ var AcEdCommandLine = /** @class */ (function () {
|
|
|
199
234
|
AcEdCommandLine.prototype.getPromptInput = function (options, parseValue, config) {
|
|
200
235
|
return __awaiter(this, void 0, void 0, function () {
|
|
201
236
|
var session;
|
|
202
|
-
var _a;
|
|
203
|
-
return __generator(this, function (
|
|
204
|
-
switch (
|
|
237
|
+
var _a, _b;
|
|
238
|
+
return __generator(this, function (_c) {
|
|
239
|
+
switch (_c.label) {
|
|
205
240
|
case 0:
|
|
206
241
|
session = new AcEdPromptInputSession(this, options, parseValue, config.mode, config.allowNone, (_a = config.allowTyping) !== null && _a !== void 0 ? _a : true);
|
|
207
242
|
this.activeSession = session;
|
|
208
|
-
|
|
243
|
+
this.spaceInsertsText = (_b = config.spaceInsertsText) !== null && _b !== void 0 ? _b : false;
|
|
244
|
+
_c.label = 1;
|
|
209
245
|
case 1:
|
|
210
|
-
|
|
246
|
+
_c.trys.push([1, , 3, 4]);
|
|
211
247
|
return [4 /*yield*/, session.start()];
|
|
212
|
-
case 2: return [2 /*return*/,
|
|
248
|
+
case 2: return [2 /*return*/, _c.sent()];
|
|
213
249
|
case 3:
|
|
214
250
|
this.activeSession = undefined;
|
|
215
251
|
return [7 /*endfinally*/];
|
|
@@ -392,8 +428,12 @@ var AcEdCommandLine = /** @class */ (function () {
|
|
|
392
428
|
_this.updatePopups({ showCmd: false, showMsg: false });
|
|
393
429
|
}
|
|
394
430
|
}, { signal: domSignal });
|
|
395
|
-
this.textInput.addEventListener('keydown', function (e) { return _this.handleKeyDown(e); }, {
|
|
396
|
-
|
|
431
|
+
this.textInput.addEventListener('keydown', function (e) { return _this.handleKeyDown(e); }, {
|
|
432
|
+
signal: domSignal
|
|
433
|
+
});
|
|
434
|
+
this.textInput.addEventListener('input', function () { return _this.handleInputChange(); }, {
|
|
435
|
+
signal: domSignal
|
|
436
|
+
});
|
|
397
437
|
this.centerEl.addEventListener('focus', function () { return _this.updatePopups({ showCmd: false, showMsg: false }); }, { signal: domSignal });
|
|
398
438
|
this.cmdPopup.addEventListener('click', function (e) {
|
|
399
439
|
var item = e.target.closest('.item');
|
|
@@ -404,25 +444,22 @@ var AcEdCommandLine = /** @class */ (function () {
|
|
|
404
444
|
}
|
|
405
445
|
}, { signal: domSignal });
|
|
406
446
|
};
|
|
407
|
-
/** Handle Enter/Escape keys */
|
|
447
|
+
/** Handle Enter/Space/Escape keys */
|
|
408
448
|
AcEdCommandLine.prototype.handleKeyDown = function (e) {
|
|
409
449
|
// IME / composition safety (important!)
|
|
410
450
|
if (e.isComposing)
|
|
411
451
|
return;
|
|
412
452
|
switch (e.key) {
|
|
413
|
-
case 'Enter':
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
if (!handled) {
|
|
419
|
-
this.showMessage(this.localize('main.commandLine.invalidInput', 'Invalid input.'), 'warning');
|
|
420
|
-
}
|
|
453
|
+
case 'Enter':
|
|
454
|
+
case ' ': {
|
|
455
|
+
// Space confirms like Enter (AutoCAD) unless the prompt value may
|
|
456
|
+
// itself contain spaces.
|
|
457
|
+
if (e.key === ' ' && this.activeSession && this.spaceInsertsText) {
|
|
421
458
|
return;
|
|
422
459
|
}
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
this.
|
|
460
|
+
e.preventDefault();
|
|
461
|
+
e.stopImmediatePropagation();
|
|
462
|
+
this.confirmInput();
|
|
426
463
|
return;
|
|
427
464
|
}
|
|
428
465
|
case 'Escape': {
|
|
@@ -431,11 +468,13 @@ var AcEdCommandLine = /** @class */ (function () {
|
|
|
431
468
|
if (this.activeSession) {
|
|
432
469
|
this.activeSession.handleEscape();
|
|
433
470
|
this.activeSession = undefined;
|
|
434
|
-
return;
|
|
435
471
|
}
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
472
|
+
else {
|
|
473
|
+
this.clear();
|
|
474
|
+
this.showMessage(this.localize('main.commandLine.canceled'));
|
|
475
|
+
this.updatePopups({ showCmd: false, showMsg: false });
|
|
476
|
+
}
|
|
477
|
+
this.returnFocusToView();
|
|
439
478
|
return;
|
|
440
479
|
}
|
|
441
480
|
case 'ArrowUp': {
|
|
@@ -464,6 +503,33 @@ var AcEdCommandLine = /** @class */ (function () {
|
|
|
464
503
|
}
|
|
465
504
|
}
|
|
466
505
|
};
|
|
506
|
+
/** Submits the input to the active prompt, or runs it as a command. */
|
|
507
|
+
AcEdCommandLine.prototype.confirmInput = function () {
|
|
508
|
+
if (this.activeSession) {
|
|
509
|
+
var handled = this.activeSession.handleEnter(this.getInputText());
|
|
510
|
+
if (!handled) {
|
|
511
|
+
this.showMessage(this.localize('main.commandLine.invalidInput', 'Invalid input.'), 'warning');
|
|
512
|
+
}
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
this.executeCommand(this.getInputText());
|
|
516
|
+
this.historyIndex = this.history.length;
|
|
517
|
+
this.updatePopups({ showCmd: false, showMsg: false });
|
|
518
|
+
};
|
|
519
|
+
/**
|
|
520
|
+
* Moves keyboard focus from the input back to the host view so view
|
|
521
|
+
* shortcuts (Delete, Ctrl+Z, type-to-command), which are scoped to focus
|
|
522
|
+
* inside the view container, keep working after Esc.
|
|
523
|
+
*/
|
|
524
|
+
AcEdCommandLine.prototype.returnFocusToView = function () {
|
|
525
|
+
if (document.activeElement !== this.textInput)
|
|
526
|
+
return;
|
|
527
|
+
if (this.container !== document.body) {
|
|
528
|
+
this.container.focus({ preventScroll: true });
|
|
529
|
+
}
|
|
530
|
+
if (document.activeElement === this.textInput)
|
|
531
|
+
this.textInput.blur();
|
|
532
|
+
};
|
|
467
533
|
/** Handle input change to show auto-complete */
|
|
468
534
|
AcEdCommandLine.prototype.handleInputChange = function () {
|
|
469
535
|
var _this = this;
|