@mlightcad/cad-simple-viewer 1.7.4 → 1.7.5
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/README.md +5 -0
- package/dist/cad-simple-viewer.js +8578 -7149
- package/dist/cad-simple-viewer.umd.cjs +429 -85
- package/lib/app/AcApDocManager.d.ts +44 -1
- package/lib/app/AcApDocManager.d.ts.map +1 -1
- package/lib/app/AcApDocManager.js +126 -1
- package/lib/app/AcApDocManager.js.map +1 -1
- package/lib/app/AcApOpenDatabaseOptions.d.ts +27 -0
- package/lib/app/AcApOpenDatabaseOptions.d.ts.map +1 -1
- package/lib/app/AcApOpenFileDialog.d.ts +1 -1
- package/lib/app/AcApOpenFileDialog.d.ts.map +1 -1
- package/lib/app/AcApOpenFileDialog.js +22 -92
- package/lib/app/AcApOpenFileDialog.js.map +1 -1
- package/lib/app/AcApOpenFileProfiler.d.ts +14 -0
- package/lib/app/AcApOpenFileProfiler.d.ts.map +1 -1
- package/lib/app/AcApOpenFileProfiler.js +25 -3
- package/lib/app/AcApOpenFileProfiler.js.map +1 -1
- package/lib/app/dataSource/AcApDataSource.d.ts +97 -0
- package/lib/app/dataSource/AcApDataSource.d.ts.map +1 -0
- package/lib/app/dataSource/AcApDataSource.js +2 -0
- package/lib/app/dataSource/AcApDataSource.js.map +1 -0
- package/lib/app/dataSource/AcApDataSourceManager.d.ts +70 -0
- package/lib/app/dataSource/AcApDataSourceManager.d.ts.map +1 -0
- package/lib/app/dataSource/AcApDataSourceManager.js +84 -0
- package/lib/app/dataSource/AcApDataSourceManager.js.map +1 -0
- package/lib/app/dataSource/AcApLocalDataSource.d.ts +25 -0
- package/lib/app/dataSource/AcApLocalDataSource.d.ts.map +1 -0
- package/lib/app/dataSource/AcApLocalDataSource.js +153 -0
- package/lib/app/dataSource/AcApLocalDataSource.js.map +1 -0
- package/lib/app/dataSource/AcApUrlDataSource.d.ts +17 -0
- package/lib/app/dataSource/AcApUrlDataSource.d.ts.map +1 -0
- package/lib/app/dataSource/AcApUrlDataSource.js +214 -0
- package/lib/app/dataSource/AcApUrlDataSource.js.map +1 -0
- package/lib/app/dataSource/acapBuildDataSourceMenu.d.ts +42 -0
- package/lib/app/dataSource/acapBuildDataSourceMenu.d.ts.map +1 -0
- package/lib/app/dataSource/acapBuildDataSourceMenu.js +121 -0
- package/lib/app/dataSource/acapBuildDataSourceMenu.js.map +1 -0
- package/lib/app/dataSource/acapInvokeDataSourceMenuAction.d.ts +17 -0
- package/lib/app/dataSource/acapInvokeDataSourceMenuAction.d.ts.map +1 -0
- package/lib/app/dataSource/acapInvokeDataSourceMenuAction.js +74 -0
- package/lib/app/dataSource/acapInvokeDataSourceMenuAction.js.map +1 -0
- package/lib/app/dataSource/acapOpenCenteredPopup.d.ts +13 -0
- package/lib/app/dataSource/acapOpenCenteredPopup.d.ts.map +1 -0
- package/lib/app/dataSource/acapOpenCenteredPopup.js +35 -0
- package/lib/app/dataSource/acapOpenCenteredPopup.js.map +1 -0
- package/lib/app/dataSource/acapOpenDataSourceResult.d.ts +13 -0
- package/lib/app/dataSource/acapOpenDataSourceResult.d.ts.map +1 -0
- package/lib/app/dataSource/acapOpenDataSourceResult.js +90 -0
- package/lib/app/dataSource/acapOpenDataSourceResult.js.map +1 -0
- package/lib/app/dataSource/acapRunDataSourceMenuAction.d.ts +15 -0
- package/lib/app/dataSource/acapRunDataSourceMenuAction.d.ts.map +1 -0
- package/lib/app/dataSource/acapRunDataSourceMenuAction.js +74 -0
- package/lib/app/dataSource/acapRunDataSourceMenuAction.js.map +1 -0
- package/lib/app/dataSource/acapWithDataSourceBusy.d.ts +12 -0
- package/lib/app/dataSource/acapWithDataSourceBusy.d.ts.map +1 -0
- package/lib/app/dataSource/acapWithDataSourceBusy.js +88 -0
- package/lib/app/dataSource/acapWithDataSourceBusy.js.map +1 -0
- package/lib/app/dataSource/index.d.ts +11 -0
- package/lib/app/dataSource/index.d.ts.map +1 -0
- package/lib/app/dataSource/index.js +10 -0
- package/lib/app/dataSource/index.js.map +1 -0
- package/lib/app/index.d.ts +1 -0
- package/lib/app/index.d.ts.map +1 -1
- package/lib/app/index.js +1 -0
- package/lib/app/index.js.map +1 -1
- package/lib/editor/global/AcEdUiTheme.d.ts +10 -1
- package/lib/editor/global/AcEdUiTheme.d.ts.map +1 -1
- package/lib/editor/global/AcEdUiTheme.js +35 -2
- package/lib/editor/global/AcEdUiTheme.js.map +1 -1
- package/lib/editor/input/ui/AcEdCommandLine.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdCommandLine.js +7 -7
- package/lib/editor/input/ui/AcEdCommandLine.js.map +1 -1
- package/lib/i18n/ar/main.d.ts +26 -0
- package/lib/i18n/ar/main.d.ts.map +1 -1
- package/lib/i18n/ar/main.js +26 -0
- package/lib/i18n/ar/main.js.map +1 -1
- package/lib/i18n/cs/main.d.ts +26 -0
- package/lib/i18n/cs/main.d.ts.map +1 -1
- package/lib/i18n/cs/main.js +26 -0
- package/lib/i18n/cs/main.js.map +1 -1
- package/lib/i18n/en/main.d.ts +26 -0
- package/lib/i18n/en/main.d.ts.map +1 -1
- package/lib/i18n/en/main.js +26 -0
- package/lib/i18n/en/main.js.map +1 -1
- package/lib/i18n/tr/main.d.ts +26 -0
- package/lib/i18n/tr/main.d.ts.map +1 -1
- package/lib/i18n/tr/main.js +26 -0
- package/lib/i18n/tr/main.js.map +1 -1
- package/lib/i18n/zh/main.d.ts +26 -0
- package/lib/i18n/zh/main.d.ts.map +1 -1
- package/lib/i18n/zh/main.js +26 -0
- package/lib/i18n/zh/main.js.map +1 -1
- package/lib/ui/AcUiFileOpenPanel.d.ts +156 -0
- package/lib/ui/AcUiFileOpenPanel.d.ts.map +1 -0
- package/lib/ui/AcUiFileOpenPanel.js +695 -0
- package/lib/ui/AcUiFileOpenPanel.js.map +1 -0
- package/lib/ui/icons.d.ts +2 -0
- package/lib/ui/icons.d.ts.map +1 -1
- package/lib/ui/icons.js +2 -0
- package/lib/ui/icons.js.map +1 -1
- package/lib/ui/index.d.ts +1 -0
- package/lib/ui/index.d.ts.map +1 -1
- package/lib/ui/index.js +1 -0
- package/lib/ui/index.js.map +1 -1
- package/lib/util/AcApTextStyleFontPreload.d.ts +42 -0
- package/lib/util/AcApTextStyleFontPreload.d.ts.map +1 -0
- package/lib/util/AcApTextStyleFontPreload.js +149 -0
- package/lib/util/AcApTextStyleFontPreload.js.map +1 -0
- package/lib/util/index.d.ts +1 -0
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +1 -0
- package/lib/util/index.js.map +1 -1
- package/lib/view/AcTrLayout.d.ts +5 -0
- package/lib/view/AcTrLayout.d.ts.map +1 -1
- package/lib/view/AcTrLayout.js +11 -0
- package/lib/view/AcTrLayout.js.map +1 -1
- package/lib/view/AcTrScene.d.ts +7 -0
- package/lib/view/AcTrScene.d.ts.map +1 -1
- package/lib/view/AcTrScene.js +78 -48
- package/lib/view/AcTrScene.js.map +1 -1
- package/lib/view/AcTrView2d.d.ts +68 -1
- package/lib/view/AcTrView2d.d.ts.map +1 -1
- package/lib/view/AcTrView2d.js +311 -124
- package/lib/view/AcTrView2d.js.map +1 -1
- package/package.json +8 -8
- package/src/ui/icons.ts +4 -0
|
@@ -0,0 +1,153 @@
|
|
|
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
|
+
import { log } from '@mlightcad/data-model';
|
|
38
|
+
/** File extensions accepted by the local data source. */
|
|
39
|
+
var SUPPORTED_EXTENSIONS = ['.dxf', '.dwg'];
|
|
40
|
+
/** Built-in local-file data source id. */
|
|
41
|
+
export var ACAP_LOCAL_DATA_SOURCE_ID = 'local';
|
|
42
|
+
var fileInput;
|
|
43
|
+
var isSupportedCadFile = function (fileName) {
|
|
44
|
+
var lowerName = fileName.toLowerCase();
|
|
45
|
+
return SUPPORTED_EXTENSIONS.some(function (ext) { return lowerName.endsWith(ext); });
|
|
46
|
+
};
|
|
47
|
+
var readFileAsArrayBuffer = function (file) {
|
|
48
|
+
return new Promise(function (resolve, reject) {
|
|
49
|
+
var reader = new FileReader();
|
|
50
|
+
reader.onload = function () { return resolve(reader.result); };
|
|
51
|
+
reader.onerror = function () { var _a; return reject((_a = reader.error) !== null && _a !== void 0 ? _a : new Error('Failed to read file')); };
|
|
52
|
+
reader.readAsArrayBuffer(file);
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
var ensureFileInput = function () {
|
|
56
|
+
if (!fileInput) {
|
|
57
|
+
fileInput = document.createElement('input');
|
|
58
|
+
fileInput.type = 'file';
|
|
59
|
+
fileInput.accept = SUPPORTED_EXTENSIONS.join(',');
|
|
60
|
+
fileInput.style.display = 'none';
|
|
61
|
+
document.body.appendChild(fileInput);
|
|
62
|
+
}
|
|
63
|
+
return fileInput;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Opens the browser file picker and returns the selected CAD file.
|
|
67
|
+
*
|
|
68
|
+
* Shared by {@link AcApLocalDataSource} and the built-in OPEN dialog.
|
|
69
|
+
*
|
|
70
|
+
* @returns Chosen file, or `null` when the user cancels or the type is unsupported
|
|
71
|
+
*/
|
|
72
|
+
export function acapPickLocalCadFile() {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
74
|
+
var input;
|
|
75
|
+
var _this = this;
|
|
76
|
+
return __generator(this, function (_a) {
|
|
77
|
+
input = ensureFileInput();
|
|
78
|
+
return [2 /*return*/, new Promise(function (resolve) {
|
|
79
|
+
var onChange = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
80
|
+
var file, content, error_1;
|
|
81
|
+
var _a;
|
|
82
|
+
return __generator(this, function (_b) {
|
|
83
|
+
switch (_b.label) {
|
|
84
|
+
case 0:
|
|
85
|
+
input.removeEventListener('change', onChange);
|
|
86
|
+
file = (_a = input.files) === null || _a === void 0 ? void 0 : _a[0];
|
|
87
|
+
input.value = '';
|
|
88
|
+
if (!file) {
|
|
89
|
+
resolve(null);
|
|
90
|
+
return [2 /*return*/];
|
|
91
|
+
}
|
|
92
|
+
if (!isSupportedCadFile(file.name)) {
|
|
93
|
+
log.warn("Unsupported file type: ".concat(file.name));
|
|
94
|
+
resolve(null);
|
|
95
|
+
return [2 /*return*/];
|
|
96
|
+
}
|
|
97
|
+
_b.label = 1;
|
|
98
|
+
case 1:
|
|
99
|
+
_b.trys.push([1, 3, , 4]);
|
|
100
|
+
return [4 /*yield*/, readFileAsArrayBuffer(file)];
|
|
101
|
+
case 2:
|
|
102
|
+
content = _b.sent();
|
|
103
|
+
resolve({ name: file.name, content: content });
|
|
104
|
+
return [3 /*break*/, 4];
|
|
105
|
+
case 3:
|
|
106
|
+
error_1 = _b.sent();
|
|
107
|
+
log.error('Failed to read selected file:', error_1);
|
|
108
|
+
resolve(null);
|
|
109
|
+
return [3 /*break*/, 4];
|
|
110
|
+
case 4: return [2 /*return*/];
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}); };
|
|
114
|
+
input.addEventListener('change', onChange);
|
|
115
|
+
input.click();
|
|
116
|
+
})];
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Built-in data source that opens a local `.dwg` / `.dxf` via `<input type="file">`.
|
|
122
|
+
*/
|
|
123
|
+
var AcApLocalDataSource = /** @class */ (function () {
|
|
124
|
+
function AcApLocalDataSource() {
|
|
125
|
+
this.id = ACAP_LOCAL_DATA_SOURCE_ID;
|
|
126
|
+
this.labelKey = 'main.dataSource.local';
|
|
127
|
+
this.requiresAuth = false;
|
|
128
|
+
this.requiresUserGesture = false;
|
|
129
|
+
}
|
|
130
|
+
AcApLocalDataSource.prototype.getAuthState = function () {
|
|
131
|
+
return 'none';
|
|
132
|
+
};
|
|
133
|
+
AcApLocalDataSource.prototype.signIn = function () {
|
|
134
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
135
|
+
return __generator(this, function (_a) {
|
|
136
|
+
return [2 /*return*/];
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
AcApLocalDataSource.prototype.signOut = function () {
|
|
141
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
142
|
+
return __generator(this, function (_a) {
|
|
143
|
+
return [2 /*return*/];
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
AcApLocalDataSource.prototype.pick = function () {
|
|
148
|
+
return acapPickLocalCadFile();
|
|
149
|
+
};
|
|
150
|
+
return AcApLocalDataSource;
|
|
151
|
+
}());
|
|
152
|
+
export { AcApLocalDataSource };
|
|
153
|
+
//# sourceMappingURL=AcApLocalDataSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcApLocalDataSource.js","sourceRoot":"","sources":["../../../src/app/dataSource/AcApLocalDataSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AcApDataSource, AcApDataSourceAuthState, AcApDataSourceFile } from './AcApDataSource';
|
|
2
|
+
/** Built-in URL data source id. */
|
|
3
|
+
export declare const ACAP_URL_DATA_SOURCE_ID = "url";
|
|
4
|
+
/**
|
|
5
|
+
* Built-in data source that opens a drawing from an HTTP(S) URL.
|
|
6
|
+
*/
|
|
7
|
+
export declare class AcApUrlDataSource implements AcApDataSource {
|
|
8
|
+
readonly id = "url";
|
|
9
|
+
readonly labelKey = "main.dataSource.url";
|
|
10
|
+
readonly requiresAuth = false;
|
|
11
|
+
readonly requiresUserGesture = false;
|
|
12
|
+
getAuthState(): AcApDataSourceAuthState;
|
|
13
|
+
signIn(): Promise<void>;
|
|
14
|
+
signOut(): Promise<void>;
|
|
15
|
+
pick(): Promise<AcApDataSourceFile | null>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=AcApUrlDataSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcApUrlDataSource.d.ts","sourceRoot":"","sources":["../../../src/app/dataSource/AcApUrlDataSource.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,kBAAkB,CAAA;AAEzB,mCAAmC;AACnC,eAAO,MAAM,uBAAuB,QAAQ,CAAA;AAmI5C;;GAEG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,QAAQ,CAAC,EAAE,SAA0B;IACrC,QAAQ,CAAC,QAAQ,yBAAwB;IACzC,QAAQ,CAAC,YAAY,SAAQ;IAC7B,QAAQ,CAAC,mBAAmB,SAAQ;IAEpC,YAAY,IAAI,uBAAuB;IAIjC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,IAAI,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;CAMjD"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
17
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
18
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
19
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
20
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
21
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
22
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
26
|
+
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);
|
|
27
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
28
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
29
|
+
function step(op) {
|
|
30
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
31
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
32
|
+
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;
|
|
33
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
34
|
+
switch (op[0]) {
|
|
35
|
+
case 0: case 1: t = op; break;
|
|
36
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
37
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
38
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
39
|
+
default:
|
|
40
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
41
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
42
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
43
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
44
|
+
if (t[2]) _.ops.pop();
|
|
45
|
+
_.trys.pop(); continue;
|
|
46
|
+
}
|
|
47
|
+
op = body.call(thisArg, _);
|
|
48
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
49
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
import { AcApI18n } from '../../i18n/AcApI18n';
|
|
53
|
+
import { AcUiDialog } from '../../ui/AcUiDialog';
|
|
54
|
+
/** Built-in URL data source id. */
|
|
55
|
+
export var ACAP_URL_DATA_SOURCE_ID = 'url';
|
|
56
|
+
/**
|
|
57
|
+
* Compact dialog that asks the user for a drawing file URL.
|
|
58
|
+
*/
|
|
59
|
+
var AcApUrlOpenDialog = /** @class */ (function (_super) {
|
|
60
|
+
__extends(AcApUrlOpenDialog, _super);
|
|
61
|
+
function AcApUrlOpenDialog(host) {
|
|
62
|
+
var _this = _super.call(this, {
|
|
63
|
+
host: host,
|
|
64
|
+
title: AcApI18n.t('main.dataSource.urlDialogTitle'),
|
|
65
|
+
closeLabel: AcApI18n.t('main.dataSource.cancel'),
|
|
66
|
+
titleId: 'ml-ui-url-open-title',
|
|
67
|
+
dialogClassName: 'ml-ui-url-open-dialog',
|
|
68
|
+
layoutWidth: false
|
|
69
|
+
}) || this;
|
|
70
|
+
_this.resolveFn = null;
|
|
71
|
+
var hint = document.createElement('p');
|
|
72
|
+
hint.className = 'ml-ui-url-open-hint';
|
|
73
|
+
hint.textContent = AcApI18n.t('main.dataSource.urlDialogHint');
|
|
74
|
+
_this.bodyEl.appendChild(hint);
|
|
75
|
+
_this.input = document.createElement('input');
|
|
76
|
+
_this.input.type = 'url';
|
|
77
|
+
_this.input.className = 'ml-ui-url-open-input';
|
|
78
|
+
_this.input.placeholder = AcApI18n.t('main.dataSource.urlPlaceholder');
|
|
79
|
+
_this.input.autocomplete = 'off';
|
|
80
|
+
_this.input.spellcheck = false;
|
|
81
|
+
_this.bodyEl.appendChild(_this.input);
|
|
82
|
+
var cancelBtn = document.createElement('button');
|
|
83
|
+
cancelBtn.type = 'button';
|
|
84
|
+
cancelBtn.className = 'ml-ui-dialog-btn ml-ui-dialog-btn-secondary';
|
|
85
|
+
cancelBtn.textContent = AcApI18n.t('main.dataSource.cancel');
|
|
86
|
+
cancelBtn.addEventListener('click', function () { return _this.finish(null); });
|
|
87
|
+
var okBtn = document.createElement('button');
|
|
88
|
+
okBtn.type = 'button';
|
|
89
|
+
okBtn.className = 'ml-ui-dialog-btn';
|
|
90
|
+
okBtn.textContent = AcApI18n.t('main.dataSource.open');
|
|
91
|
+
okBtn.addEventListener('click', function () { return _this.submit(); });
|
|
92
|
+
_this.footerEl.appendChild(cancelBtn);
|
|
93
|
+
_this.footerEl.appendChild(okBtn);
|
|
94
|
+
_this.input.addEventListener('keydown', function (e) {
|
|
95
|
+
if (e.key === 'Enter') {
|
|
96
|
+
e.preventDefault();
|
|
97
|
+
_this.submit();
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
AcApUrlOpenDialog.ensureUrlStyles();
|
|
101
|
+
return _this;
|
|
102
|
+
}
|
|
103
|
+
AcApUrlOpenDialog.open = function (host) {
|
|
104
|
+
var _a;
|
|
105
|
+
if (host === void 0) { host = document.body; }
|
|
106
|
+
(_a = AcApUrlOpenDialog.openInstance) === null || _a === void 0 ? void 0 : _a.finish(null);
|
|
107
|
+
var dialog = new AcApUrlOpenDialog(host);
|
|
108
|
+
AcApUrlOpenDialog.openInstance = dialog;
|
|
109
|
+
return new Promise(function (resolve) {
|
|
110
|
+
dialog.resolveFn = resolve;
|
|
111
|
+
void dialog.show().then(function () {
|
|
112
|
+
dialog.input.focus();
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
AcApUrlOpenDialog.prototype.close = function () {
|
|
117
|
+
this.finish(null);
|
|
118
|
+
};
|
|
119
|
+
AcApUrlOpenDialog.prototype.submit = function () {
|
|
120
|
+
var value = this.input.value.trim();
|
|
121
|
+
if (!value) {
|
|
122
|
+
this.input.focus();
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
this.finish(value);
|
|
126
|
+
};
|
|
127
|
+
AcApUrlOpenDialog.prototype.finish = function (url) {
|
|
128
|
+
if (AcApUrlOpenDialog.openInstance === this) {
|
|
129
|
+
AcApUrlOpenDialog.openInstance = null;
|
|
130
|
+
}
|
|
131
|
+
var resolve = this.resolveFn;
|
|
132
|
+
this.resolveFn = null;
|
|
133
|
+
_super.prototype.close.call(this);
|
|
134
|
+
resolve === null || resolve === void 0 ? void 0 : resolve(url);
|
|
135
|
+
};
|
|
136
|
+
AcApUrlOpenDialog.ensureUrlStyles = function () {
|
|
137
|
+
if (AcApUrlOpenDialog.stylesInjected)
|
|
138
|
+
return;
|
|
139
|
+
if (typeof document === 'undefined')
|
|
140
|
+
return;
|
|
141
|
+
if (document.getElementById('ml-ui-url-open-dialog-styles')) {
|
|
142
|
+
AcApUrlOpenDialog.stylesInjected = true;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
var style = document.createElement('style');
|
|
146
|
+
style.id = 'ml-ui-url-open-dialog-styles';
|
|
147
|
+
style.textContent = "\n.ml-ui-url-open-hint {\n margin: 0 0 12px;\n font-size: 13px;\n opacity: 0.85;\n line-height: 1.4;\n}\n.ml-ui-url-open-input {\n width: 100%;\n box-sizing: border-box;\n padding: 8px 10px;\n border: 1px solid var(--ml-ui-border, #c0c4cc);\n border-radius: 4px;\n background: var(--ml-ui-surface, #fff);\n color: inherit;\n font-size: 14px;\n}\n.ml-ui-url-open-input:focus {\n outline: 2px solid var(--ml-ui-accent, #409eff);\n outline-offset: 1px;\n}\n";
|
|
148
|
+
document.head.appendChild(style);
|
|
149
|
+
AcApUrlOpenDialog.stylesInjected = true;
|
|
150
|
+
};
|
|
151
|
+
AcApUrlOpenDialog.openInstance = null;
|
|
152
|
+
AcApUrlOpenDialog.stylesInjected = false;
|
|
153
|
+
return AcApUrlOpenDialog;
|
|
154
|
+
}(AcUiDialog));
|
|
155
|
+
/**
|
|
156
|
+
* Built-in data source that opens a drawing from an HTTP(S) URL.
|
|
157
|
+
*/
|
|
158
|
+
var AcApUrlDataSource = /** @class */ (function () {
|
|
159
|
+
function AcApUrlDataSource() {
|
|
160
|
+
this.id = ACAP_URL_DATA_SOURCE_ID;
|
|
161
|
+
this.labelKey = 'main.dataSource.url';
|
|
162
|
+
this.requiresAuth = false;
|
|
163
|
+
this.requiresUserGesture = false;
|
|
164
|
+
}
|
|
165
|
+
AcApUrlDataSource.prototype.getAuthState = function () {
|
|
166
|
+
return 'none';
|
|
167
|
+
};
|
|
168
|
+
AcApUrlDataSource.prototype.signIn = function () {
|
|
169
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
170
|
+
return __generator(this, function (_a) {
|
|
171
|
+
return [2 /*return*/];
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
AcApUrlDataSource.prototype.signOut = function () {
|
|
176
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
177
|
+
return __generator(this, function (_a) {
|
|
178
|
+
return [2 /*return*/];
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
};
|
|
182
|
+
AcApUrlDataSource.prototype.pick = function () {
|
|
183
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
184
|
+
var url, name;
|
|
185
|
+
return __generator(this, function (_a) {
|
|
186
|
+
switch (_a.label) {
|
|
187
|
+
case 0: return [4 /*yield*/, AcApUrlOpenDialog.open()];
|
|
188
|
+
case 1:
|
|
189
|
+
url = _a.sent();
|
|
190
|
+
if (!url)
|
|
191
|
+
return [2 /*return*/, null];
|
|
192
|
+
name = fileNameFromUrl(url);
|
|
193
|
+
return [2 /*return*/, { name: name, url: url }];
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
};
|
|
198
|
+
return AcApUrlDataSource;
|
|
199
|
+
}());
|
|
200
|
+
export { AcApUrlDataSource };
|
|
201
|
+
function fileNameFromUrl(url) {
|
|
202
|
+
try {
|
|
203
|
+
var pathname = new URL(url, window.location.href).pathname;
|
|
204
|
+
var segment = pathname.split('/').filter(Boolean).pop();
|
|
205
|
+
if (segment && /\.(dwg|dxf)$/i.test(segment)) {
|
|
206
|
+
return decodeURIComponent(segment);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
catch (_a) {
|
|
210
|
+
// fall through
|
|
211
|
+
}
|
|
212
|
+
return 'drawing.dxf';
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=AcApUrlDataSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcApUrlDataSource.js","sourceRoot":"","sources":["../../../src/app/dataSource/AcApUrlDataSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { AcApDataSource } from './AcApDataSource';
|
|
2
|
+
/** Action triggered when a data-source menu item is clicked. */
|
|
3
|
+
export type AcApDataSourceMenuAction = 'pick' | 'sign-in' | 'sign-out';
|
|
4
|
+
/**
|
|
5
|
+
* A single menu entry derived from registered data sources.
|
|
6
|
+
*
|
|
7
|
+
* Hosts (ribbon, toolbar, landing page) render these items and run
|
|
8
|
+
* {@link acapRunDataSourceMenuAction} on click.
|
|
9
|
+
*/
|
|
10
|
+
export interface AcApDataSourceMenuItem {
|
|
11
|
+
/** Stable menu item id (unique across the built menu). */
|
|
12
|
+
id: string;
|
|
13
|
+
/** Data source id this item acts on. */
|
|
14
|
+
sourceId: string;
|
|
15
|
+
/** Action to run when clicked. */
|
|
16
|
+
action: AcApDataSourceMenuAction;
|
|
17
|
+
/** i18n key for the label. */
|
|
18
|
+
labelKey: string;
|
|
19
|
+
/** Interpolation params for {@link labelKey}. */
|
|
20
|
+
labelParams?: Record<string, string>;
|
|
21
|
+
/** Already-resolved display label. */
|
|
22
|
+
label: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Builds Open-menu items from the current data-source registry.
|
|
26
|
+
*
|
|
27
|
+
* Rules (popup-blocker safe):
|
|
28
|
+
* - No auth → one **pick** item
|
|
29
|
+
* - Signed out → one **sign-in** item only (never chain into pick)
|
|
30
|
+
* - Signed in → **pick** + **sign-out**
|
|
31
|
+
*
|
|
32
|
+
* @param sources - Registered sources (usually `dataSourceManager.list()`)
|
|
33
|
+
*/
|
|
34
|
+
export declare function acapBuildDataSourceMenu(sources: AcApDataSource[]): AcApDataSourceMenuItem[];
|
|
35
|
+
/**
|
|
36
|
+
* Whether the Open UI should collapse to a single "Open" action
|
|
37
|
+
* (only the built-in local source, no auth).
|
|
38
|
+
*
|
|
39
|
+
* @param sources - Registered sources
|
|
40
|
+
*/
|
|
41
|
+
export declare function acapIsSingleLocalOpen(sources: AcApDataSource[]): boolean;
|
|
42
|
+
//# sourceMappingURL=acapBuildDataSourceMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acapBuildDataSourceMenu.d.ts","sourceRoot":"","sources":["../../../src/app/dataSource/acapBuildDataSourceMenu.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGtD,gEAAgE;AAChE,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAA;AAEtE;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAA;IACV,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,MAAM,EAAE,wBAAwB,CAAA;IAChC,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;CACd;AAcD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,EAAE,GACxB,sBAAsB,EAAE,CA4C1B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAMxE"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
var __values = (this && this.__values) || function(o) {
|
|
2
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
3
|
+
if (m) return m.call(o);
|
|
4
|
+
if (o && typeof o.length === "number") return {
|
|
5
|
+
next: function () {
|
|
6
|
+
if (o && i >= o.length) o = void 0;
|
|
7
|
+
return { value: o && o[i++], done: !o };
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
11
|
+
};
|
|
12
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
13
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
14
|
+
if (!m) return o;
|
|
15
|
+
var i = m.call(o), r, ar = [], e;
|
|
16
|
+
try {
|
|
17
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
18
|
+
}
|
|
19
|
+
catch (error) { e = { error: error }; }
|
|
20
|
+
finally {
|
|
21
|
+
try {
|
|
22
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
23
|
+
}
|
|
24
|
+
finally { if (e) throw e.error; }
|
|
25
|
+
}
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
import { AcApI18n } from '../../i18n/AcApI18n';
|
|
29
|
+
import { ACAP_LOCAL_DATA_SOURCE_ID } from './AcApLocalDataSource';
|
|
30
|
+
function applyTemplateParams(template, params) {
|
|
31
|
+
var e_1, _a;
|
|
32
|
+
if (!params)
|
|
33
|
+
return template;
|
|
34
|
+
var text = template;
|
|
35
|
+
try {
|
|
36
|
+
for (var _b = __values(Object.entries(params)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
37
|
+
var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
|
|
38
|
+
text = text.split("{".concat(key, "}")).join(value);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
42
|
+
finally {
|
|
43
|
+
try {
|
|
44
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
45
|
+
}
|
|
46
|
+
finally { if (e_1) throw e_1.error; }
|
|
47
|
+
}
|
|
48
|
+
return text;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Builds Open-menu items from the current data-source registry.
|
|
52
|
+
*
|
|
53
|
+
* Rules (popup-blocker safe):
|
|
54
|
+
* - No auth → one **pick** item
|
|
55
|
+
* - Signed out → one **sign-in** item only (never chain into pick)
|
|
56
|
+
* - Signed in → **pick** + **sign-out**
|
|
57
|
+
*
|
|
58
|
+
* @param sources - Registered sources (usually `dataSourceManager.list()`)
|
|
59
|
+
*/
|
|
60
|
+
export function acapBuildDataSourceMenu(sources) {
|
|
61
|
+
var e_2, _a;
|
|
62
|
+
var _b;
|
|
63
|
+
var items = [];
|
|
64
|
+
try {
|
|
65
|
+
for (var sources_1 = __values(sources), sources_1_1 = sources_1.next(); !sources_1_1.done; sources_1_1 = sources_1.next()) {
|
|
66
|
+
var source = sources_1_1.value;
|
|
67
|
+
var sourceLabel = AcApI18n.t(source.labelKey);
|
|
68
|
+
var auth = source.getAuthState();
|
|
69
|
+
if (!source.requiresAuth || auth === 'none') {
|
|
70
|
+
// Built-in sources use their own short label (Local / From URL).
|
|
71
|
+
items.push(createItem(source, 'pick', source.labelKey, undefined, sourceLabel));
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (auth === 'signed-out') {
|
|
75
|
+
items.push(createItem(source, 'sign-in', 'main.dataSource.signInTo', {
|
|
76
|
+
name: sourceLabel
|
|
77
|
+
}));
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
// signed-in
|
|
81
|
+
items.push(createItem(source, 'pick', 'main.dataSource.openFrom', {
|
|
82
|
+
name: sourceLabel
|
|
83
|
+
}));
|
|
84
|
+
var account = (_b = source.getAccountLabel) === null || _b === void 0 ? void 0 : _b.call(source);
|
|
85
|
+
items.push(createItem(source, 'sign-out', account
|
|
86
|
+
? 'main.dataSource.signOutOfAccount'
|
|
87
|
+
: 'main.dataSource.signOutOf', account ? { name: sourceLabel, account: account } : { name: sourceLabel }));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
91
|
+
finally {
|
|
92
|
+
try {
|
|
93
|
+
if (sources_1_1 && !sources_1_1.done && (_a = sources_1.return)) _a.call(sources_1);
|
|
94
|
+
}
|
|
95
|
+
finally { if (e_2) throw e_2.error; }
|
|
96
|
+
}
|
|
97
|
+
return items;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Whether the Open UI should collapse to a single "Open" action
|
|
101
|
+
* (only the built-in local source, no auth).
|
|
102
|
+
*
|
|
103
|
+
* @param sources - Registered sources
|
|
104
|
+
*/
|
|
105
|
+
export function acapIsSingleLocalOpen(sources) {
|
|
106
|
+
var _a;
|
|
107
|
+
return (sources.length === 1 &&
|
|
108
|
+
((_a = sources[0]) === null || _a === void 0 ? void 0 : _a.id) === ACAP_LOCAL_DATA_SOURCE_ID &&
|
|
109
|
+
!sources[0].requiresAuth);
|
|
110
|
+
}
|
|
111
|
+
function createItem(source, action, labelKey, labelParams, labelOverride) {
|
|
112
|
+
return {
|
|
113
|
+
id: "".concat(source.id, ":").concat(action),
|
|
114
|
+
sourceId: source.id,
|
|
115
|
+
action: action,
|
|
116
|
+
labelKey: labelKey,
|
|
117
|
+
labelParams: labelParams,
|
|
118
|
+
label: labelOverride !== null && labelOverride !== void 0 ? labelOverride : applyTemplateParams(AcApI18n.t(labelKey), labelParams)
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=acapBuildDataSourceMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acapBuildDataSourceMenu.js","sourceRoot":"","sources":["../../../src/app/dataSource/acapBuildDataSourceMenu.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AcApDataSourceMenuItem } from './acapBuildDataSourceMenu';
|
|
2
|
+
import type { AcApDataSource, AcApDataSourceFile } from './AcApDataSource';
|
|
3
|
+
/**
|
|
4
|
+
* Runs a menu action against an already-resolved {@link AcApDataSource}.
|
|
5
|
+
*
|
|
6
|
+
* Prefer this on landing pages that own a {@link AcApDataSourceManager} before
|
|
7
|
+
* {@link AcApDocManager} exists. For in-viewer Open menus, use
|
|
8
|
+
* {@link acapRunDataSourceMenuAction} which also opens the returned file.
|
|
9
|
+
*
|
|
10
|
+
* Never chains sign-in into pick.
|
|
11
|
+
*
|
|
12
|
+
* @param source - Data source that owns {@link AcApDataSourceMenuItem.sourceId}
|
|
13
|
+
* @param item - Menu item from {@link acapBuildDataSourceMenu}
|
|
14
|
+
* @returns Picked file for `pick`; `undefined` for sign-in / sign-out
|
|
15
|
+
*/
|
|
16
|
+
export declare function acapInvokeDataSourceMenuAction(source: AcApDataSource, item: AcApDataSourceMenuItem): Promise<AcApDataSourceFile | null | undefined>;
|
|
17
|
+
//# sourceMappingURL=acapInvokeDataSourceMenuAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acapInvokeDataSourceMenuAction.d.ts","sourceRoot":"","sources":["../../../src/app/dataSource/acapInvokeDataSourceMenuAction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1E;;;;;;;;;;;;GAYG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAAC,CAgBhD"}
|