@mlightcad/cad-simple-viewer 1.7.8 → 1.8.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +204 -190
  3. package/dist/cad-simple-viewer-AcUiFileOpenSession-BCcqBAH9.js +2427 -0
  4. package/dist/cad-simple-viewer-AcUiFileOpenSession-drptdOYc.js +324 -0
  5. package/dist/cad-simple-viewer-file-open-panel.js +32 -0
  6. package/dist/cad-simple-viewer-file-open-panel.umd.cjs +1 -0
  7. package/dist/cad-simple-viewer.js +7938 -9803
  8. package/dist/cad-simple-viewer.umd.cjs +122 -444
  9. package/file-open-panel.ts +6 -0
  10. package/find.ts +7 -7
  11. package/icons.ts +7 -7
  12. package/lib/app/AcApOpenDatabaseOptions.d.ts +1 -1
  13. package/lib/app/AcApOpenDatabaseOptions.d.ts.map +1 -1
  14. package/lib/app/dataSource/AcApDataSourceIds.d.ts +5 -0
  15. package/lib/app/dataSource/AcApDataSourceIds.d.ts.map +1 -0
  16. package/lib/app/dataSource/AcApDataSourceIds.js +5 -0
  17. package/lib/app/dataSource/AcApDataSourceIds.js.map +1 -0
  18. package/lib/app/dataSource/AcApLocalDataSource.d.ts +1 -2
  19. package/lib/app/dataSource/AcApLocalDataSource.d.ts.map +1 -1
  20. package/lib/app/dataSource/AcApLocalDataSource.js +2 -2
  21. package/lib/app/dataSource/AcApLocalDataSource.js.map +1 -1
  22. package/lib/app/dataSource/AcApUrlDataSource.d.ts +1 -2
  23. package/lib/app/dataSource/AcApUrlDataSource.d.ts.map +1 -1
  24. package/lib/app/dataSource/AcApUrlDataSource.js +2 -2
  25. package/lib/app/dataSource/AcApUrlDataSource.js.map +1 -1
  26. package/lib/app/dataSource/acapBuildDataSourceMenu.js +1 -1
  27. package/lib/app/dataSource/acapBuildDataSourceMenu.js.map +1 -1
  28. package/lib/app/dataSource/index.d.ts +3 -2
  29. package/lib/app/dataSource/index.d.ts.map +1 -1
  30. package/lib/app/dataSource/index.js +3 -2
  31. package/lib/app/dataSource/index.js.map +1 -1
  32. package/lib/editor/input/handler/AcEdInputHandler.d.ts +7 -2
  33. package/lib/editor/input/handler/AcEdInputHandler.d.ts.map +1 -1
  34. package/lib/editor/input/handler/AcEdPointHandler.d.ts +8 -7
  35. package/lib/editor/input/handler/AcEdPointHandler.d.ts.map +1 -1
  36. package/lib/editor/input/handler/AcEdPointHandler.js +126 -30
  37. package/lib/editor/input/handler/AcEdPointHandler.js.map +1 -1
  38. package/lib/editor/input/ui/AcEdCommandLine.d.ts +28 -3
  39. package/lib/editor/input/ui/AcEdCommandLine.d.ts.map +1 -1
  40. package/lib/editor/input/ui/AcEdCommandLine.js +92 -26
  41. package/lib/editor/input/ui/AcEdCommandLine.js.map +1 -1
  42. package/lib/editor/input/ui/AcEdFloatingInput.d.ts +6 -0
  43. package/lib/editor/input/ui/AcEdFloatingInput.d.ts.map +1 -1
  44. package/lib/editor/input/ui/AcEdFloatingInput.js +32 -6
  45. package/lib/editor/input/ui/AcEdFloatingInput.js.map +1 -1
  46. package/lib/editor/input/ui/AcEdFloatingInputBoxes.d.ts +19 -2
  47. package/lib/editor/input/ui/AcEdFloatingInputBoxes.d.ts.map +1 -1
  48. package/lib/editor/input/ui/AcEdFloatingInputBoxes.js +23 -5
  49. package/lib/editor/input/ui/AcEdFloatingInputBoxes.js.map +1 -1
  50. package/lib/editor/input/ui/AcEdFloatingInputTypes.d.ts +18 -0
  51. package/lib/editor/input/ui/AcEdFloatingInputTypes.d.ts.map +1 -1
  52. package/lib/editor/input/ui/AcEdInputManager.d.ts +22 -0
  53. package/lib/editor/input/ui/AcEdInputManager.d.ts.map +1 -1
  54. package/lib/editor/input/ui/AcEdInputManager.js +56 -5
  55. package/lib/editor/input/ui/AcEdInputManager.js.map +1 -1
  56. package/lib/editor/input/ui/AcEdKeyboardUtil.d.ts +28 -0
  57. package/lib/editor/input/ui/AcEdKeyboardUtil.d.ts.map +1 -0
  58. package/lib/editor/input/ui/AcEdKeyboardUtil.js +59 -0
  59. package/lib/editor/input/ui/AcEdKeyboardUtil.js.map +1 -0
  60. package/lib/file-open-panel.d.ts +15 -0
  61. package/lib/file-open-panel.d.ts.map +1 -0
  62. package/lib/file-open-panel.js +33 -0
  63. package/lib/file-open-panel.js.map +1 -0
  64. package/lib/i18n/AcApI18n.d.ts.map +1 -1
  65. package/lib/i18n/AcApI18n.js +18 -9
  66. package/lib/i18n/AcApI18n.js.map +1 -1
  67. package/lib/i18n/ar/jig.d.ts +11 -0
  68. package/lib/i18n/ar/jig.d.ts.map +1 -1
  69. package/lib/i18n/ar/jig.js +9 -1
  70. package/lib/i18n/ar/jig.js.map +1 -1
  71. package/lib/i18n/cs/jig.d.ts +11 -0
  72. package/lib/i18n/cs/jig.d.ts.map +1 -1
  73. package/lib/i18n/cs/jig.js +11 -0
  74. package/lib/i18n/cs/jig.js.map +1 -1
  75. package/lib/i18n/en/jig.d.ts +11 -0
  76. package/lib/i18n/en/jig.d.ts.map +1 -1
  77. package/lib/i18n/en/jig.js +11 -0
  78. package/lib/i18n/en/jig.js.map +1 -1
  79. package/lib/i18n/tr/jig.d.ts +11 -0
  80. package/lib/i18n/tr/jig.d.ts.map +1 -1
  81. package/lib/i18n/tr/jig.js +11 -0
  82. package/lib/i18n/tr/jig.js.map +1 -1
  83. package/lib/i18n/zh/jig.d.ts +11 -0
  84. package/lib/i18n/zh/jig.d.ts.map +1 -1
  85. package/lib/i18n/zh/jig.js +11 -0
  86. package/lib/i18n/zh/jig.js.map +1 -1
  87. package/lib/ui/AcUiFileOpenLanding.d.ts +131 -0
  88. package/lib/ui/AcUiFileOpenLanding.d.ts.map +1 -0
  89. package/lib/ui/AcUiFileOpenLanding.js +248 -0
  90. package/lib/ui/AcUiFileOpenLanding.js.map +1 -0
  91. package/lib/ui/AcUiFileOpenPanel.d.ts +25 -5
  92. package/lib/ui/AcUiFileOpenPanel.d.ts.map +1 -1
  93. package/lib/ui/AcUiFileOpenPanel.js +25 -13
  94. package/lib/ui/AcUiFileOpenPanel.js.map +1 -1
  95. package/lib/ui/AcUiFileOpenSession.d.ts +119 -0
  96. package/lib/ui/AcUiFileOpenSession.d.ts.map +1 -0
  97. package/lib/ui/AcUiFileOpenSession.js +294 -0
  98. package/lib/ui/AcUiFileOpenSession.js.map +1 -0
  99. package/lib/ui/index.d.ts +2 -0
  100. package/lib/ui/index.d.ts.map +1 -1
  101. package/lib/ui/index.js +2 -0
  102. package/lib/ui/index.js.map +1 -1
  103. package/lib/view/AcEdViewKeyHandler.d.ts +17 -0
  104. package/lib/view/AcEdViewKeyHandler.d.ts.map +1 -1
  105. package/lib/view/AcEdViewKeyHandler.js +44 -1
  106. package/lib/view/AcEdViewKeyHandler.js.map +1 -1
  107. package/package.json +15 -5
  108. package/src/file-open-panel.ts +89 -0
  109. package/src/find/AcApFindNavigator.ts +190 -190
  110. package/src/find/findDrawing.ts +211 -211
  111. package/src/find/findText.ts +624 -624
  112. package/src/find/index.ts +2 -2
  113. package/src/ui/icons.ts +411 -411
@@ -0,0 +1,119 @@
1
+ import type { AcApDataSource } from '../app/dataSource/AcApDataSource';
2
+ import type { AcApDataSourceManager } from '../app/dataSource/AcApDataSourceManager';
3
+ import type { AcEdUiTheme } from '../editor/global/AcEdUiTheme';
4
+ import { AcUiFileOpenLanding, type AcUiFileOpenLandingOptions, type AcUiFileOpenRequest } from './AcUiFileOpenLanding';
5
+ /**
6
+ * Minimal DocManager surface needed by {@link AcUiFileOpenSession}.
7
+ *
8
+ * Hosts typically return `AcApDocManager.instance` after a dynamic import of
9
+ * `@mlightcad/cad-simple-viewer`. Keeping this structural avoids pulling the
10
+ * viewer into the `/file-open-panel` entry graph.
11
+ */
12
+ export interface AcUiFileOpenDocManager {
13
+ readonly dataSourceManager: AcApDataSourceManager;
14
+ openDocument(fileName: string, content: ArrayBuffer, options?: unknown): Promise<boolean>;
15
+ openUrl(url: string, options?: unknown): Promise<boolean>;
16
+ newDocument(options?: unknown): Promise<boolean>;
17
+ }
18
+ /** Outcome of {@link AcUiFileOpenSession.open}. */
19
+ export type AcUiFileOpenSessionResult = {
20
+ ok: true;
21
+ } | {
22
+ ok: false;
23
+ error?: unknown;
24
+ };
25
+ export type AcUiFileOpenSessionOptions = Omit<AcUiFileOpenLandingOptions, 'onOpen'> & {
26
+ /**
27
+ * Lazily creates (or returns) the viewer DocManager.
28
+ * Called once on the first open; subsequent opens reuse the instance.
29
+ */
30
+ createDocManager: () => Promise<AcUiFileOpenDocManager>;
31
+ /** Optional options object passed to openDocument / openUrl / newDocument. */
32
+ getOpenOptions?: () => unknown;
33
+ /** Runs before ensure/open (e.g. show a loading indicator). */
34
+ onBeforeOpen?: (request: AcUiFileOpenRequest) => void | Promise<void>;
35
+ /**
36
+ * Runs after DocManager is ready and sources are attached, immediately
37
+ * before `openDocument` / `openUrl` / `newDocument` (e.g. set OPENPROF).
38
+ */
39
+ onPrepareOpen?: (request: AcUiFileOpenRequest, docManager: AcUiFileOpenDocManager) => void | Promise<void>;
40
+ /** Runs after open settles (success or failure). */
41
+ onAfterOpen?: (request: AcUiFileOpenRequest, result: AcUiFileOpenSessionResult) => void | Promise<void>;
42
+ };
43
+ /**
44
+ * Landing + lazy DocManager session.
45
+ *
46
+ * On each open request the session:
47
+ * 1. Calls {@link AcUiFileOpenSessionOptions.createDocManager} once
48
+ * 2. Attaches landing cloud sources onto the DocManager registry
49
+ * 3. Runs `openDocument` / `openUrl` / `newDocument`
50
+ *
51
+ * The `/file-open-panel` entry stays light — the host supplies DocManager via
52
+ * dynamic `import('@mlightcad/cad-simple-viewer')` inside `createDocManager`.
53
+ */
54
+ export declare class AcUiFileOpenSession {
55
+ readonly landing: AcUiFileOpenLanding;
56
+ private readonly options;
57
+ private docManager;
58
+ private ensurePromise;
59
+ /** Bumped on {@link dispose} so in-flight `createDocManager` results are dropped. */
60
+ private ensureGeneration;
61
+ /** Chains {@link open} calls so overlapping picks do not interleave. */
62
+ private openTail;
63
+ private disposed;
64
+ constructor(options: AcUiFileOpenSessionOptions);
65
+ /** Landing data-source registry. */
66
+ get manager(): AcApDataSourceManager;
67
+ /** Effective card theme. */
68
+ get theme(): AcEdUiTheme;
69
+ /** Cached DocManager after the first successful {@link ensureDocManager}. */
70
+ get docManagerInstance(): AcUiFileOpenDocManager | null;
71
+ /**
72
+ * Registers a cloud (or custom) data source on the landing registry.
73
+ *
74
+ * When DocManager already exists, the same instance is attached there too
75
+ * so late async plugin registration still reaches in-viewer File → Open.
76
+ *
77
+ * @param source - Source to register
78
+ */
79
+ registerSource(source: AcApDataSource): void;
80
+ /**
81
+ * Removes a data source from the landing registry (and DocManager when ready).
82
+ *
83
+ * @param id - Source id
84
+ */
85
+ unregisterSource(id: string): void;
86
+ setTheme(theme: AcEdUiTheme | undefined): void;
87
+ refreshSourceButtons(): void;
88
+ /**
89
+ * Ensures DocManager exists and landing sources are attached.
90
+ *
91
+ * @returns The DocManager instance
92
+ */
93
+ ensureDocManager(): Promise<AcUiFileOpenDocManager>;
94
+ /**
95
+ * Opens a normalized landing request (also used by the panel `onOpen` path).
96
+ *
97
+ * Concurrent calls are serialized so overlapping picks do not interleave
98
+ * against the same DocManager.
99
+ *
100
+ * @param request - File / URL / new drawing intent
101
+ */
102
+ open(request: AcUiFileOpenRequest): Promise<AcUiFileOpenSessionResult>;
103
+ private openExclusive;
104
+ /**
105
+ * Disposes the landing panel.
106
+ *
107
+ * In-flight {@link ensureDocManager} / {@link open} calls observe disposal and
108
+ * stop attaching sources or opening; the host still owns any DocManager that
109
+ * `createDocManager` already constructed.
110
+ */
111
+ dispose(): void;
112
+ }
113
+ /**
114
+ * Creates a landing + lazy DocManager session.
115
+ *
116
+ * @param options - Session options including {@link createDocManager}
117
+ */
118
+ export declare function acuiCreateFileOpenSession(options: AcUiFileOpenSessionOptions): AcUiFileOpenSession;
119
+ //# sourceMappingURL=AcUiFileOpenSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcUiFileOpenSession.d.ts","sourceRoot":"","sources":["../../src/ui/AcUiFileOpenSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAA;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAA;AAE9B;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,iBAAiB,EAAE,qBAAqB,CAAA;IACjD,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,CAAC,CAAA;IACnB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACzD,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACjD;AAED,mDAAmD;AACnD,MAAM,MAAM,yBAAyB,GACjC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAElC,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,0BAA0B,EAC1B,QAAQ,CACT,GAAG;IACF;;;OAGG;IACH,gBAAgB,EAAE,MAAM,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACvD,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,OAAO,CAAA;IAC9B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE;;;OAGG;IACH,aAAa,CAAC,EAAE,CACd,OAAO,EAAE,mBAAmB,EAC5B,UAAU,EAAE,sBAAsB,KAC/B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,oDAAoD;IACpD,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,yBAAyB,KAC9B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B,CAAA;AAED;;;;;;;;;;GAUG;AACH,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;IAErC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,UAAU,CAAsC;IACxD,OAAO,CAAC,aAAa,CAA+C;IACpE,qFAAqF;IACrF,OAAO,CAAC,gBAAgB,CAAI;IAC5B,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,OAAO,EAAE,0BAA0B;IAmB/C,oCAAoC;IACpC,IAAI,OAAO,IAAI,qBAAqB,CAEnC;IAED,4BAA4B;IAC5B,IAAI,KAAK,IAAI,WAAW,CAEvB;IAED,6EAA6E;IAC7E,IAAI,kBAAkB,IAAI,sBAAsB,GAAG,IAAI,CAEtD;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAS5C;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMlC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI;IAI9C,oBAAoB,IAAI,IAAI;IAI5B;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC,sBAAsB,CAAC;IA0BzD;;;;;;;OAOG;IACG,IAAI,CACR,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,yBAAyB,CAAC;YAUvB,aAAa;IA8C3B;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;CAOhB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,0BAA0B,GAClC,mBAAmB,CAErB"}
@@ -0,0 +1,294 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ 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);
23
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ 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;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ var __rest = (this && this.__rest) || function (s, e) {
49
+ var t = {};
50
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
51
+ t[p] = s[p];
52
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
53
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
54
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
55
+ t[p[i]] = s[p[i]];
56
+ }
57
+ return t;
58
+ };
59
+ import { AcUiFileOpenLanding } from './AcUiFileOpenLanding';
60
+ /**
61
+ * Landing + lazy DocManager session.
62
+ *
63
+ * On each open request the session:
64
+ * 1. Calls {@link AcUiFileOpenSessionOptions.createDocManager} once
65
+ * 2. Attaches landing cloud sources onto the DocManager registry
66
+ * 3. Runs `openDocument` / `openUrl` / `newDocument`
67
+ *
68
+ * The `/file-open-panel` entry stays light — the host supplies DocManager via
69
+ * dynamic `import('@mlightcad/cad-simple-viewer')` inside `createDocManager`.
70
+ */
71
+ var AcUiFileOpenSession = /** @class */ (function () {
72
+ function AcUiFileOpenSession(options) {
73
+ var _this = this;
74
+ this.docManager = null;
75
+ this.ensurePromise = null;
76
+ /** Bumped on {@link dispose} so in-flight `createDocManager` results are dropped. */
77
+ this.ensureGeneration = 0;
78
+ /** Chains {@link open} calls so overlapping picks do not interleave. */
79
+ this.openTail = Promise.resolve();
80
+ this.disposed = false;
81
+ this.options = options;
82
+ var _createDocManager = options.createDocManager, _getOpenOptions = options.getOpenOptions, _onBeforeOpen = options.onBeforeOpen, _onPrepareOpen = options.onPrepareOpen, _onAfterOpen = options.onAfterOpen, landingOptions = __rest(options, ["createDocManager", "getOpenOptions", "onBeforeOpen", "onPrepareOpen", "onAfterOpen"]);
83
+ this.landing = new AcUiFileOpenLanding(__assign(__assign({}, landingOptions), { onOpen: function (request) {
84
+ void _this.open(request);
85
+ } }));
86
+ }
87
+ Object.defineProperty(AcUiFileOpenSession.prototype, "manager", {
88
+ /** Landing data-source registry. */
89
+ get: function () {
90
+ return this.landing.manager;
91
+ },
92
+ enumerable: false,
93
+ configurable: true
94
+ });
95
+ Object.defineProperty(AcUiFileOpenSession.prototype, "theme", {
96
+ /** Effective card theme. */
97
+ get: function () {
98
+ return this.landing.theme;
99
+ },
100
+ enumerable: false,
101
+ configurable: true
102
+ });
103
+ Object.defineProperty(AcUiFileOpenSession.prototype, "docManagerInstance", {
104
+ /** Cached DocManager after the first successful {@link ensureDocManager}. */
105
+ get: function () {
106
+ return this.docManager;
107
+ },
108
+ enumerable: false,
109
+ configurable: true
110
+ });
111
+ /**
112
+ * Registers a cloud (or custom) data source on the landing registry.
113
+ *
114
+ * When DocManager already exists, the same instance is attached there too
115
+ * so late async plugin registration still reaches in-viewer File → Open.
116
+ *
117
+ * @param source - Source to register
118
+ */
119
+ AcUiFileOpenSession.prototype.registerSource = function (source) {
120
+ if (this.disposed)
121
+ return;
122
+ this.landing.registerSource(source);
123
+ if (this.docManager) {
124
+ this.landing.attachSourcesTo(this.docManager.dataSourceManager);
125
+ this.landing.refreshSourceButtons();
126
+ }
127
+ };
128
+ /**
129
+ * Removes a data source from the landing registry (and DocManager when ready).
130
+ *
131
+ * @param id - Source id
132
+ */
133
+ AcUiFileOpenSession.prototype.unregisterSource = function (id) {
134
+ var _a;
135
+ if (this.disposed)
136
+ return;
137
+ this.landing.unregisterSource(id);
138
+ (_a = this.docManager) === null || _a === void 0 ? void 0 : _a.dataSourceManager.unregister(id);
139
+ };
140
+ AcUiFileOpenSession.prototype.setTheme = function (theme) {
141
+ this.landing.setTheme(theme);
142
+ };
143
+ AcUiFileOpenSession.prototype.refreshSourceButtons = function () {
144
+ this.landing.refreshSourceButtons();
145
+ };
146
+ /**
147
+ * Ensures DocManager exists and landing sources are attached.
148
+ *
149
+ * @returns The DocManager instance
150
+ */
151
+ AcUiFileOpenSession.prototype.ensureDocManager = function () {
152
+ return __awaiter(this, void 0, void 0, function () {
153
+ var generation_1;
154
+ var _this = this;
155
+ return __generator(this, function (_a) {
156
+ if (this.disposed) {
157
+ throw new Error('AcUiFileOpenSession is disposed');
158
+ }
159
+ if (this.docManager)
160
+ return [2 /*return*/, this.docManager];
161
+ if (!this.ensurePromise) {
162
+ generation_1 = this.ensureGeneration;
163
+ this.ensurePromise = this.options
164
+ .createDocManager()
165
+ .then(function (dm) {
166
+ if (_this.disposed || generation_1 !== _this.ensureGeneration) {
167
+ throw new Error('AcUiFileOpenSession is disposed');
168
+ }
169
+ _this.docManager = dm;
170
+ _this.landing.attachSourcesTo(dm.dataSourceManager);
171
+ _this.landing.refreshSourceButtons();
172
+ return dm;
173
+ })
174
+ .catch(function (error) {
175
+ _this.ensurePromise = null;
176
+ throw error;
177
+ });
178
+ }
179
+ return [2 /*return*/, this.ensurePromise];
180
+ });
181
+ });
182
+ };
183
+ /**
184
+ * Opens a normalized landing request (also used by the panel `onOpen` path).
185
+ *
186
+ * Concurrent calls are serialized so overlapping picks do not interleave
187
+ * against the same DocManager.
188
+ *
189
+ * @param request - File / URL / new drawing intent
190
+ */
191
+ AcUiFileOpenSession.prototype.open = function (request) {
192
+ return __awaiter(this, void 0, void 0, function () {
193
+ var run, resultPromise;
194
+ var _this = this;
195
+ return __generator(this, function (_a) {
196
+ run = function () { return _this.openExclusive(request); };
197
+ resultPromise = this.openTail.then(run, run);
198
+ this.openTail = resultPromise.then(function () { return undefined; }, function () { return undefined; });
199
+ return [2 /*return*/, resultPromise];
200
+ });
201
+ });
202
+ };
203
+ AcUiFileOpenSession.prototype.openExclusive = function (request) {
204
+ return __awaiter(this, void 0, void 0, function () {
205
+ var result, dm, openOptions, success, content, error_1;
206
+ var _a, _b, _c, _d, _e, _f, _g, _h;
207
+ return __generator(this, function (_j) {
208
+ switch (_j.label) {
209
+ case 0:
210
+ if (this.disposed) {
211
+ return [2 /*return*/, { ok: false, error: new Error('AcUiFileOpenSession is disposed') }];
212
+ }
213
+ return [4 /*yield*/, ((_b = (_a = this.options).onBeforeOpen) === null || _b === void 0 ? void 0 : _b.call(_a, request))];
214
+ case 1:
215
+ _j.sent();
216
+ _j.label = 2;
217
+ case 2:
218
+ _j.trys.push([2, 12, , 13]);
219
+ return [4 /*yield*/, this.ensureDocManager()];
220
+ case 3:
221
+ dm = _j.sent();
222
+ if (this.disposed) {
223
+ return [2 /*return*/, {
224
+ ok: false,
225
+ error: new Error('AcUiFileOpenSession is disposed')
226
+ }];
227
+ }
228
+ return [4 /*yield*/, ((_d = (_c = this.options).onPrepareOpen) === null || _d === void 0 ? void 0 : _d.call(_c, request, dm))];
229
+ case 4:
230
+ _j.sent();
231
+ openOptions = (_f = (_e = this.options).getOpenOptions) === null || _f === void 0 ? void 0 : _f.call(_e);
232
+ success = false;
233
+ if (!(request.kind === 'file')) return [3 /*break*/, 7];
234
+ return [4 /*yield*/, request.file.arrayBuffer()];
235
+ case 5:
236
+ content = _j.sent();
237
+ return [4 /*yield*/, dm.openDocument(request.file.name, content, openOptions)];
238
+ case 6:
239
+ success = _j.sent();
240
+ return [3 /*break*/, 11];
241
+ case 7:
242
+ if (!(request.kind === 'url')) return [3 /*break*/, 9];
243
+ return [4 /*yield*/, dm.openUrl(request.url, openOptions)];
244
+ case 8:
245
+ success = _j.sent();
246
+ return [3 /*break*/, 11];
247
+ case 9: return [4 /*yield*/, dm.newDocument(openOptions)];
248
+ case 10:
249
+ success = _j.sent();
250
+ _j.label = 11;
251
+ case 11:
252
+ // `false` usually means the viewer already reported via event bus
253
+ // (`failed-to-open-file`); avoid inventing a duplicate error here.
254
+ result = success ? { ok: true } : { ok: false };
255
+ return [3 /*break*/, 13];
256
+ case 12:
257
+ error_1 = _j.sent();
258
+ result = { ok: false, error: error_1 };
259
+ return [3 /*break*/, 13];
260
+ case 13: return [4 /*yield*/, ((_h = (_g = this.options).onAfterOpen) === null || _h === void 0 ? void 0 : _h.call(_g, request, result))];
261
+ case 14:
262
+ _j.sent();
263
+ return [2 /*return*/, result];
264
+ }
265
+ });
266
+ });
267
+ };
268
+ /**
269
+ * Disposes the landing panel.
270
+ *
271
+ * In-flight {@link ensureDocManager} / {@link open} calls observe disposal and
272
+ * stop attaching sources or opening; the host still owns any DocManager that
273
+ * `createDocManager` already constructed.
274
+ */
275
+ AcUiFileOpenSession.prototype.dispose = function () {
276
+ if (this.disposed)
277
+ return;
278
+ this.disposed = true;
279
+ this.ensureGeneration += 1;
280
+ this.ensurePromise = null;
281
+ this.landing.dispose();
282
+ };
283
+ return AcUiFileOpenSession;
284
+ }());
285
+ export { AcUiFileOpenSession };
286
+ /**
287
+ * Creates a landing + lazy DocManager session.
288
+ *
289
+ * @param options - Session options including {@link createDocManager}
290
+ */
291
+ export function acuiCreateFileOpenSession(options) {
292
+ return new AcUiFileOpenSession(options);
293
+ }
294
+ //# sourceMappingURL=AcUiFileOpenSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcUiFileOpenSession.js","sourceRoot":"","sources":["../../src/ui/AcUiFileOpenSession.ts"],"names":[],"mappings":"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"}
package/lib/ui/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export * from './AcUiDialog';
2
+ export * from './AcUiFileOpenLanding';
2
3
  export * from './AcUiFileOpenPanel';
4
+ export * from './AcUiFileOpenSession';
3
5
  export * from './AcUiAboutDialog';
4
6
  export * from './AcUiAciPaletteUi';
5
7
  export * from './AcUiAciColorDialog';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iCAAiC,CAAA;AAC/C,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,wBAAwB,CAAA;AACtC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wBAAwB,CAAA;AACtC,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iCAAiC,CAAA;AAC/C,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,wBAAwB,CAAA;AACtC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wBAAwB,CAAA;AACtC,cAAc,SAAS,CAAA"}
package/lib/ui/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  export * from './AcUiDialog';
2
+ export * from './AcUiFileOpenLanding';
2
3
  export * from './AcUiFileOpenPanel';
4
+ export * from './AcUiFileOpenSession';
3
5
  export * from './AcUiAboutDialog';
4
6
  export * from './AcUiAciPaletteUi';
5
7
  export * from './AcUiAciColorDialog';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iCAAiC,CAAA;AAC/C,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,wBAAwB,CAAA;AACtC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wBAAwB,CAAA;AACtC,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iCAAiC,CAAA;AAC/C,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,wBAAwB,CAAA;AACtC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wBAAwB,CAAA;AACtC,cAAc,SAAS,CAAA"}
@@ -14,6 +14,10 @@ export type AcEdUndoRedoShortcut = 'undo' | 'redo';
14
14
  * Shortcuts are suppressed while the user is typing in editable fields, during
15
15
  * IME composition, while a command is acquiring input, or while MText is being
16
16
  * edited inline.
17
+ *
18
+ * Printable keys pressed on the view are typed into the command line so a
19
+ * command can be started without clicking it first, and Space on an idle view
20
+ * repeats the last command (AutoCAD behavior).
17
21
  */
18
22
  export declare class AcEdViewKeyHandler {
19
23
  private readonly view;
@@ -25,6 +29,19 @@ export declare class AcEdViewKeyHandler {
25
29
  * @returns `true` when the event was consumed and default action prevented.
26
30
  */
27
31
  handleKeyDown(e: KeyboardEvent): boolean;
32
+ /**
33
+ * Routes a printable key pressed on the view to the command line.
34
+ *
35
+ * Space repeats the last command when no prompt is active; prompts handle
36
+ * Space themselves (as Enter). Other characters start typing in the command
37
+ * line, which also covers keywords of the active prompt.
38
+ */
39
+ private handleTypedKey;
40
+ /**
41
+ * Whether a modal dialog is showing; its controls own the keyboard even when
42
+ * the dialog is mounted inside the view container.
43
+ */
44
+ private isModalDialogOpen;
28
45
  private resolveUndoRedoShortcut;
29
46
  private shouldIgnoreEditableTargetShortcut;
30
47
  private shouldHandleUndoRedoShortcut;
@@ -1 +1 @@
1
- {"version":3,"file":"AcEdViewKeyHandler.d.ts","sourceRoot":"","sources":["../../src/view/AcEdViewKeyHandler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAgB;gBAEnC,IAAI,EAAE,UAAU;IAE7C;;;;OAIG;IACH,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO;IA6ExC,OAAO,CAAC,uBAAuB;IAkB/B,OAAO,CAAC,kCAAkC;IAmB1C,OAAO,CAAC,4BAA4B;CA4BrC"}
1
+ {"version":3,"file":"AcEdViewKeyHandler.d.ts","sourceRoot":"","sources":["../../src/view/AcEdViewKeyHandler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD;;;;;;;;;;GAUG;AACH,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAgB;gBAEnC,IAAI,EAAE,UAAU;IAE7C;;;;OAIG;IACH,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO;IA6ExC;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAuBtB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,uBAAuB;IAkB/B,OAAO,CAAC,kCAAkC;IAmB1C,OAAO,CAAC,4BAA4B;CA4BrC"}
@@ -13,6 +13,7 @@ import { AcApDocManager } from '../app';
13
13
  import { runMarkupEdit } from '../command/markup/AcApMarkupHistory';
14
14
  import { runMeasurementEdit } from '../command/measure/AcApMeasurementHistory';
15
15
  import { MEASUREMENT_LAYER } from '../command/measure/AcApMeasurementStore';
16
+ import { acedIsSpaceActivatedTarget } from '../editor/input/ui/AcEdKeyboardUtil';
16
17
  import { AcEdMTextEditor } from '../editor/input/ui/AcEdMTextEditor';
17
18
  /**
18
19
  * Handles global keyboard shortcuts for a CAD view.
@@ -20,6 +21,10 @@ import { AcEdMTextEditor } from '../editor/input/ui/AcEdMTextEditor';
20
21
  * Shortcuts are suppressed while the user is typing in editable fields, during
21
22
  * IME composition, while a command is acquiring input, or while MText is being
22
23
  * edited inline.
24
+ *
25
+ * Printable keys pressed on the view are typed into the command line so a
26
+ * command can be started without clicking it first, and Space on an idle view
27
+ * repeats the last command (AutoCAD behavior).
23
28
  */
24
29
  var AcEdViewKeyHandler = /** @class */ (function () {
25
30
  function AcEdViewKeyHandler(view) {
@@ -105,7 +110,45 @@ var AcEdViewKeyHandler = /** @class */ (function () {
105
110
  }
106
111
  return false;
107
112
  }
108
- return false;
113
+ return this.handleTypedKey(e);
114
+ };
115
+ /**
116
+ * Routes a printable key pressed on the view to the command line.
117
+ *
118
+ * Space repeats the last command when no prompt is active; prompts handle
119
+ * Space themselves (as Enter). Other characters start typing in the command
120
+ * line, which also covers keywords of the active prompt.
121
+ */
122
+ AcEdViewKeyHandler.prototype.handleTypedKey = function (e) {
123
+ if (e.ctrlKey || e.metaKey || e.altKey)
124
+ return false;
125
+ if (typeof e.key !== 'string' || e.key.length !== 1)
126
+ return false;
127
+ if (AcEdMTextEditor.getActiveInputBox() || this.isModalDialogOpen()) {
128
+ return false;
129
+ }
130
+ var editor = this.view.editor;
131
+ if (e.key === ' ') {
132
+ // A held Space must not relaunch the command on every auto-repeat.
133
+ if (e.repeat || editor.isActive || acedIsSpaceActivatedTarget(e.target)) {
134
+ return false;
135
+ }
136
+ editor.inputManager.repeatLastCommand();
137
+ e.preventDefault();
138
+ return true;
139
+ }
140
+ if (!editor.inputManager.typeIntoCommandLine(e.key))
141
+ return false;
142
+ e.preventDefault();
143
+ return true;
144
+ };
145
+ /**
146
+ * Whether a modal dialog is showing; its controls own the keyboard even when
147
+ * the dialog is mounted inside the view container.
148
+ */
149
+ AcEdViewKeyHandler.prototype.isModalDialogOpen = function () {
150
+ var candidates = document.querySelectorAll('.ml-ui-dialog-backdrop, [aria-modal="true"]');
151
+ return Array.from(candidates).some(function (el) { return el.getClientRects().length > 0; });
109
152
  };
110
153
  AcEdViewKeyHandler.prototype.resolveUndoRedoShortcut = function (e) {
111
154
  if (!e.ctrlKey && !e.metaKey) {
@@ -1 +1 @@
1
- {"version":3,"file":"AcEdViewKeyHandler.js","sourceRoot":"","sources":["../../src/view/AcEdViewKeyHandler.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAapE;;;;;;GAMG;AACH;IAGE,4BAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD;;;;OAIG;IACH,0CAAa,GAAb,UAAc,CAAgB;QAC5B,IAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAA;QACxD,IAAM,oBAAoB,GAAG,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAA;QAEvE,IAAI,oBAAoB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,gBAAgB,EAAE,CAAC;YACrB,IACE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBACrC,eAAe,CAAC,iBAAiB,EAAE;gBACnC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EACzB,CAAC;gBACD,OAAO,KAAK,CAAA;YACd,CAAC;YAED,cAAc,CAAC,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;YAC7D,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,QAAQ;gBACX,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;gBAC9B,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAA;gBAC5C,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBAC5B,OAAO,KAAK,CAAA;YAEd,KAAK,QAAQ,CAAC;YACd,KAAK,WAAW;gBACd,2DAA2D;gBAC3D,iEAAiE;gBACjE,8DAA8D;gBAC9D,8DAA8D;gBAC9D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAC/B,IAAI,SAAO,GAAG,KAAK,CAAA;oBACnB,IAAM,IAAE,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAA;oBACzC,IAAI,IAAE,CAAC,YAAY,EAAE,EAAE,CAAC;wBACtB,IAAM,QAAQ,GAAG,IAAE,CAAC,iBAAiB,EAAE,CAAA;wBACvC,IAAM,cAAY,GAAG,QAAQ,CAAC,MAAM,CAClC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,KAAK,KAAK,iBAAiB,EAAjC,CAAiC,CAC3C,CAAA;wBACD,IAAI,cAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC5B,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,EAAE;;;oCAClD,KAAoB,IAAA,iBAAA,SAAA,cAAY,CAAA,0CAAA,oEAAE,CAAC;wCAA9B,IAAM,KAAK,yBAAA;wCACd,IAAI,IAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;4CAAE,SAAO,GAAG,IAAI,CAAA;oCACzC,CAAC;;;;;;;;;4BACH,CAAC,CAAC,CAAA;wBACJ,CAAC;wBACD,IAAM,kBAAkB,GACtB,QAAQ,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,KAAK,KAAK,iBAAiB,EAAjC,CAAiC,CAAC;4BACzD,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAE,CAAC,YAAY,EAAE,CAAC,CAAA;wBAC9C,IAAI,kBAAkB,EAAE,CAAC;4BACvB,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE;gCACxC,SAAO,GAAG,IAAE,CAAC,cAAc,EAAE,IAAI,SAAO,CAAA;4BAC1C,CAAC,CAAC,CAAA;wBACJ,CAAC;oBACH,CAAC;oBACD,IAAI,SAAO,EAAE,CAAC;wBACZ,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;wBAC5B,CAAC,CAAC,cAAc,EAAE,CAAA;wBAClB,OAAO,IAAI,CAAA;oBACb,CAAC;oBACD,kEAAkE;oBAClE,4DAA4D;oBAC5D,0DAA0D;oBAC1D,IAAI,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;wBACrD,cAAc,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;oBACtD,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAA;QAChB,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,oDAAuB,GAA/B,UACE,CAAmE;QAEnE,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;QACrC,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,+DAAkC,GAA1C,UACE,CAA4D;QAE5D,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;YACvC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAM,MAAM,GAAG,CAAC,CAAC,MAA4B,CAAA;QAC7C,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,MAAK,UAAU,EAAE,CAAC;YACnC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,iBAAiB,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,MAAK,OAAO,CAAA;IACpC,CAAC;IAEO,yDAA4B,GAApC,UACE,CAA4D;QAE5D,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;YACvC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAM,MAAM,GAAG,CAAC,CAAC,MAA4B,CAAA;QAC7C,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,MAAK,UAAU,EAAE,CAAC;YACnC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,iBAAiB,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,MAAK,OAAO,EAAE,CAAC;YAChC,IAAM,KAAK,GAAG,MAA0B,CAAA;YACxC,IACE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,EACrE,CAAC;gBACD,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;YACrD,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAtJuB,2CAAwB,GAAG,aAAa,CAAA;IAuJlE,yBAAC;CAAA,AAxJD,IAwJC;SAxJY,kBAAkB"}
1
+ {"version":3,"file":"AcEdViewKeyHandler.js","sourceRoot":"","sources":["../../src/view/AcEdViewKeyHandler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mlightcad/cad-simple-viewer",
3
- "version": "1.7.8",
3
+ "version": "1.8.0-preview.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "repository": {
@@ -23,8 +23,10 @@
23
23
  "lib",
24
24
  "icons.ts",
25
25
  "find.ts",
26
+ "file-open-panel.ts",
26
27
  "src/ui/icons.ts",
27
28
  "src/find",
29
+ "src/file-open-panel.ts",
28
30
  "README.md",
29
31
  "package.json"
30
32
  ],
@@ -37,6 +39,14 @@
37
39
  "import": "./dist/cad-simple-viewer.js",
38
40
  "require": "./dist/cad-simple-viewer.umd.cjs"
39
41
  },
42
+ "./file-open-panel": {
43
+ "types": "./lib/file-open-panel.d.ts",
44
+ "import": {
45
+ "development": "./src/file-open-panel.ts",
46
+ "default": "./dist/cad-simple-viewer-file-open-panel.js"
47
+ },
48
+ "default": "./dist/cad-simple-viewer-file-open-panel.js"
49
+ },
40
50
  "./icons": {
41
51
  "types": "./src/ui/icons.ts",
42
52
  "import": "./src/ui/icons.ts",
@@ -49,7 +59,7 @@
49
59
  }
50
60
  },
51
61
  "devDependencies": {
52
- "@mlightcad/data-model": "1.15.21",
62
+ "@mlightcad/data-model": "1.15.22",
53
63
  "@mlightcad/mtext-input-box": "0.3.7",
54
64
  "@mlightcad/mtext-parser": "1.5.7",
55
65
  "@mlightcad/mtext-renderer": "0.13.7",
@@ -61,15 +71,15 @@
61
71
  "mitt": "^3.0.1",
62
72
  "rbush": "^4.0.1",
63
73
  "three": "^0.186.1",
64
- "@mlightcad/three-renderer": "1.7.8"
74
+ "@mlightcad/three-renderer": "1.8.0-preview.1"
65
75
  },
66
76
  "peerDependencies": {
67
- "@mlightcad/data-model": "1.15.21",
77
+ "@mlightcad/data-model": "1.15.22",
68
78
  "@mlightcad/mtext-parser": "1.5.7",
69
79
  "@mlightcad/mtext-renderer": "0.13.7",
70
80
  "lodash-es": "4.17.21",
71
81
  "three": "^0.186.1",
72
- "@mlightcad/three-renderer": "1.7.8"
82
+ "@mlightcad/three-renderer": "^1.8.0-preview.1"
73
83
  },
74
84
  "scripts": {
75
85
  "clean": "rimraf dist lib tsconfig.tsbuildinfo",