@shapediver/viewer.session-engine.session-engine 3.14.6 → 3.14.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/implementation/SessionEngine.d.ts.map +1 -1
- package/dist/implementation/SessionEngine.js +5 -4
- package/dist/implementation/SessionEngine.js.map +1 -1
- package/dist/implementation/SessionEngineCore.d.ts +145 -0
- package/dist/implementation/SessionEngineCore.d.ts.map +1 -0
- package/dist/implementation/SessionEngineCore.js +544 -0
- package/dist/implementation/SessionEngineCore.js.map +1 -0
- package/dist/implementation/SessionEngineFacade.d.ts +101 -0
- package/dist/implementation/SessionEngineFacade.d.ts.map +1 -0
- package/dist/implementation/SessionEngineFacade.js +190 -0
- package/dist/implementation/SessionEngineFacade.js.map +1 -0
- package/dist/implementation/managers/CustomizationManager.d.ts +32 -0
- package/dist/implementation/managers/CustomizationManager.d.ts.map +1 -0
- package/dist/implementation/managers/CustomizationManager.js +266 -0
- package/dist/implementation/managers/CustomizationManager.js.map +1 -0
- package/dist/implementation/managers/ExportManager.d.ts +31 -0
- package/dist/implementation/managers/ExportManager.d.ts.map +1 -0
- package/dist/implementation/managers/ExportManager.js +150 -0
- package/dist/implementation/managers/ExportManager.js.map +1 -0
- package/dist/implementation/managers/FileUploadManager.d.ts +36 -0
- package/dist/implementation/managers/FileUploadManager.d.ts.map +1 -0
- package/dist/implementation/managers/FileUploadManager.js +178 -0
- package/dist/implementation/managers/FileUploadManager.js.map +1 -0
- package/dist/implementation/managers/ModelStateManager.d.ts +16 -0
- package/dist/implementation/managers/ModelStateManager.d.ts.map +1 -0
- package/dist/implementation/managers/ModelStateManager.js +130 -0
- package/dist/implementation/managers/ModelStateManager.js.map +1 -0
- package/dist/implementation/managers/OutputManager.d.ts +61 -0
- package/dist/implementation/managers/OutputManager.d.ts.map +1 -0
- package/dist/implementation/managers/OutputManager.js +358 -0
- package/dist/implementation/managers/OutputManager.js.map +1 -0
- package/dist/implementation/managers/ParameterManager.d.ts +28 -0
- package/dist/implementation/managers/ParameterManager.d.ts.map +1 -0
- package/dist/implementation/managers/ParameterManager.js +84 -0
- package/dist/implementation/managers/ParameterManager.js.map +1 -0
- package/dist/implementation/managers/SettingsManager.d.ts +55 -0
- package/dist/implementation/managers/SettingsManager.d.ts.map +1 -0
- package/dist/implementation/managers/SettingsManager.js +456 -0
- package/dist/implementation/managers/SettingsManager.js.map +1 -0
- package/dist/implementation/managers/UtilsManager.d.ts +65 -0
- package/dist/implementation/managers/UtilsManager.d.ts.map +1 -0
- package/dist/implementation/managers/UtilsManager.js +345 -0
- package/dist/implementation/managers/UtilsManager.js.map +1 -0
- package/package.json +8 -8
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ReqCustomization, ReqExport, ResBase, ResExport } from "@shapediver/sdk.geometry-api-sdk-v2";
|
|
2
|
+
import { SessionEngineCore } from "../SessionEngineCore";
|
|
3
|
+
export declare class ExportManager {
|
|
4
|
+
private readonly _sessionEngineCore;
|
|
5
|
+
private readonly _utilsManager;
|
|
6
|
+
private readonly _uuidGenerator;
|
|
7
|
+
private readonly _eventEngine;
|
|
8
|
+
constructor(sessionEngineCore: SessionEngineCore);
|
|
9
|
+
requestExport(exportId: string, parameters: {
|
|
10
|
+
[key: string]: unknown;
|
|
11
|
+
}, maxWaitTime: number, retry?: boolean): Promise<ResExport>;
|
|
12
|
+
requestExports(body: ReqExport, loadOutputs?: boolean, maxWaitMsec?: number, retry?: boolean): Promise<ResBase>;
|
|
13
|
+
cleanExportParameters(parameters: {
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}): ReqCustomization;
|
|
16
|
+
/**
|
|
17
|
+
* Save the export properties for displayname, order, tooltip and hidden
|
|
18
|
+
*
|
|
19
|
+
* @param exports
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
saveExportProperties(exports: {
|
|
23
|
+
[key: string]: {
|
|
24
|
+
displayname: string;
|
|
25
|
+
hidden: boolean;
|
|
26
|
+
order: number;
|
|
27
|
+
tooltip: string;
|
|
28
|
+
};
|
|
29
|
+
}, retry?: boolean): Promise<boolean>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=ExportManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExportManager.d.ts","sourceRoot":"","sources":["../../../src/implementation/managers/ExportManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,SAAS,EAET,MAAM,qCAAqC,CAAC;AAO7C,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAGvD,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAE7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IACzD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;gBAEzC,iBAAiB,EAAE,iBAAiB;IAKnC,aAAa,CACzB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,EACpC,WAAW,EAAE,MAAM,EACnB,KAAK,UAAQ,GACX,OAAO,CAAC,SAAS,CAAC;IA4BR,cAAc,CAC1B,IAAI,EAAE,SAAS,EACf,WAAW,GAAE,OAAe,EAC5B,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,UAAQ,GACX,OAAO,CAAC,OAAO,CAAC;IAoHZ,qBAAqB,CAAC,UAAU,EAAE;QACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACvB,GAAG,gBAAgB;IAwCpB;;;;;OAKG;IACU,oBAAoB,CAChC,OAAO,EAAE;QACR,CAAC,GAAG,EAAE,MAAM,GAAG;YACd,WAAW,EAAE,MAAM,CAAC;YACpB,MAAM,EAAE,OAAO,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,EAAE,MAAM,CAAC;SAChB,CAAC;KACF,EACD,KAAK,UAAQ,GACX,OAAO,CAAC,OAAO,CAAC;CAenB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ExportManager = void 0;
|
|
13
|
+
const sdk_geometry_api_sdk_v2_1 = require("@shapediver/sdk.geometry-api-sdk-v2");
|
|
14
|
+
const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
|
|
15
|
+
const viewer_shared_types_1 = require("@shapediver/viewer.shared.types");
|
|
16
|
+
class ExportManager {
|
|
17
|
+
constructor(sessionEngineCore) {
|
|
18
|
+
this._uuidGenerator = viewer_shared_services_1.UuidGenerator.instance;
|
|
19
|
+
this._eventEngine = viewer_shared_services_1.EventEngine.instance;
|
|
20
|
+
this._sessionEngineCore = sessionEngineCore;
|
|
21
|
+
this._utilsManager = this._sessionEngineCore.utilsManager;
|
|
22
|
+
}
|
|
23
|
+
requestExport(exportId, parameters, maxWaitTime, retry = false) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
this._utilsManager.checkAvailability("export");
|
|
26
|
+
try {
|
|
27
|
+
yield this._sessionEngineCore.fileUploadManager.uploadFileParameters(parameters);
|
|
28
|
+
const requestParameterSet = this.cleanExportParameters(parameters);
|
|
29
|
+
const responseDto = yield new sdk_geometry_api_sdk_v2_1.UtilsApi(this._sessionEngineCore.sdkConfig).submitAndWaitForExport(this._sessionEngineCore.sessionId, { exports: [exportId], parameters: requestParameterSet }, maxWaitTime, this._sessionEngineCore.ignoreUnknownParams);
|
|
30
|
+
this._sessionEngineCore.updateResponseDto(responseDto);
|
|
31
|
+
return this._sessionEngineCore.exports[exportId];
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
yield this._utilsManager.handleError(e, retry);
|
|
35
|
+
return yield this.requestExport(exportId, parameters, maxWaitTime, true);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
requestExports(body, loadOutputs = false, maxWaitMsec, retry = false) {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
let processId;
|
|
42
|
+
const eventId = this._uuidGenerator.create();
|
|
43
|
+
// if the outputs are loaded, we treat this as a customization by sending the same events
|
|
44
|
+
const treatInternallyAsCustomization = loadOutputs === true &&
|
|
45
|
+
this._sessionEngineCore.allowOutputLoading === true;
|
|
46
|
+
const eventInfo = {
|
|
47
|
+
type: viewer_shared_types_1.TASK_TYPE.SESSION_CUSTOMIZATION,
|
|
48
|
+
category: viewer_shared_types_1.TASK_CATEGORY.SESSION_CUSTOMIZATION.CUSTOMIZE_VIA_EXPORTS,
|
|
49
|
+
id: eventId,
|
|
50
|
+
data: { sessionId: this._sessionEngineCore.id },
|
|
51
|
+
};
|
|
52
|
+
this._utilsManager.checkAvailability("export");
|
|
53
|
+
try {
|
|
54
|
+
if (treatInternallyAsCustomization) {
|
|
55
|
+
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_START, Object.assign(Object.assign({}, eventInfo), { progress: 0, status: "Customizing session" }));
|
|
56
|
+
}
|
|
57
|
+
// activate the busy mode if outputs are loaded
|
|
58
|
+
if (loadOutputs === true &&
|
|
59
|
+
this._sessionEngineCore.allowOutputLoading === true &&
|
|
60
|
+
body.outputs &&
|
|
61
|
+
Object.keys(body.outputs).length > 0) {
|
|
62
|
+
processId = this._uuidGenerator.create();
|
|
63
|
+
this._utilsManager.addBusyMode(processId);
|
|
64
|
+
}
|
|
65
|
+
if (treatInternallyAsCustomization) {
|
|
66
|
+
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_PROCESS, Object.assign(Object.assign({}, eventInfo), { progress: 0.1, status: "Uploading file parameters" }));
|
|
67
|
+
}
|
|
68
|
+
yield this._sessionEngineCore.fileUploadManager.uploadFileParameters(body.parameters);
|
|
69
|
+
const requestParameterSet = this.cleanExportParameters(body.parameters);
|
|
70
|
+
if (treatInternallyAsCustomization) {
|
|
71
|
+
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_PROCESS, Object.assign(Object.assign({}, eventInfo), { progress: 0.1, status: "Sending customization request" }));
|
|
72
|
+
}
|
|
73
|
+
const responseDto = yield new sdk_geometry_api_sdk_v2_1.UtilsApi(this._sessionEngineCore.sdkConfig).submitAndWaitForExport(this._sessionEngineCore.sessionId, {
|
|
74
|
+
exports: body.exports,
|
|
75
|
+
parameters: requestParameterSet,
|
|
76
|
+
outputs: body.outputs,
|
|
77
|
+
max_wait_time: body.max_wait_time,
|
|
78
|
+
}, maxWaitMsec, this._sessionEngineCore.ignoreUnknownParams);
|
|
79
|
+
this._sessionEngineCore.updateResponseDto(responseDto);
|
|
80
|
+
if (treatInternallyAsCustomization) {
|
|
81
|
+
yield this._sessionEngineCore.outputManager.updateOutputs(Object.assign(Object.assign({}, eventInfo), { progressRange: {
|
|
82
|
+
min: 0.1,
|
|
83
|
+
max: 0.9,
|
|
84
|
+
} }));
|
|
85
|
+
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.SESSION.SESSION_CUSTOMIZED, { sessionId: this._sessionEngineCore.id });
|
|
86
|
+
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_END, Object.assign(Object.assign({}, eventInfo), { progress: 1, status: "Session customized" }));
|
|
87
|
+
}
|
|
88
|
+
if (processId)
|
|
89
|
+
this._utilsManager.removeBusyMode(processId);
|
|
90
|
+
return responseDto;
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
if (treatInternallyAsCustomization) {
|
|
94
|
+
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_CANCEL, Object.assign(Object.assign({}, eventInfo), { progress: 1, status: "Session customization failed" }));
|
|
95
|
+
}
|
|
96
|
+
if (processId)
|
|
97
|
+
this._utilsManager.removeBusyMode(processId);
|
|
98
|
+
yield this._utilsManager.handleError(e, retry);
|
|
99
|
+
return yield this.requestExports(body, loadOutputs, maxWaitMsec, true);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
cleanExportParameters(parameters) {
|
|
104
|
+
const requestParameterSet = {};
|
|
105
|
+
// first step, we convert all our names and displaynames to ids
|
|
106
|
+
for (const parameterIdOrName in parameters) {
|
|
107
|
+
// we prioritize id, then name and then displayname
|
|
108
|
+
// if there are two parameters with the same name or displayname, we take the one that is found first (no way for us to evaluate which one the user meant)
|
|
109
|
+
const parameterObject = Object.values(this._sessionEngineCore.parameters).find((p) => p.id === parameterIdOrName ||
|
|
110
|
+
p.name === parameterIdOrName ||
|
|
111
|
+
p.displayname === parameterIdOrName);
|
|
112
|
+
// in case the key of the key value pair was neither the id, name or displayname, skip
|
|
113
|
+
if (!parameterObject)
|
|
114
|
+
continue;
|
|
115
|
+
// copy into new dictionary
|
|
116
|
+
requestParameterSet[parameterObject.id] = (" " + parameterObject.stringify(parameters[parameterIdOrName])).slice(1);
|
|
117
|
+
}
|
|
118
|
+
// seconds step, fill all other parameter values that are currently not set
|
|
119
|
+
const currentParameters = this._sessionEngineCore.parameterValues;
|
|
120
|
+
for (const parameterId in currentParameters) {
|
|
121
|
+
// if already set by input values, skip
|
|
122
|
+
if (requestParameterSet[parameterId] !== undefined)
|
|
123
|
+
continue;
|
|
124
|
+
// deep copy into new dictionary
|
|
125
|
+
requestParameterSet[parameterId] = (" " + currentParameters[parameterId]).slice(1);
|
|
126
|
+
}
|
|
127
|
+
return requestParameterSet;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Save the export properties for displayname, order, tooltip and hidden
|
|
131
|
+
*
|
|
132
|
+
* @param exports
|
|
133
|
+
* @returns
|
|
134
|
+
*/
|
|
135
|
+
saveExportProperties(exports, retry = false) {
|
|
136
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
+
this._utilsManager.checkAvailability("export-definition", true);
|
|
138
|
+
try {
|
|
139
|
+
yield new sdk_geometry_api_sdk_v2_1.ExportApi(this._sessionEngineCore.sdkConfig).updateExportDefinitions(this._sessionEngineCore.modelId, exports);
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
yield this._utilsManager.handleError(e, retry);
|
|
144
|
+
return yield this.saveExportProperties(exports, true);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.ExportManager = ExportManager;
|
|
150
|
+
//# sourceMappingURL=ExportManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExportManager.js","sourceRoot":"","sources":["../../../src/implementation/managers/ExportManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { QueryGltfConversion, ResAssetDefinition, ResBase, ResFileInfo } from "@shapediver/sdk.geometry-api-sdk-v2";
|
|
2
|
+
import { SessionEngineCore } from "../SessionEngineCore";
|
|
3
|
+
export declare class FileUploadManager {
|
|
4
|
+
private readonly _sessionEngineCore;
|
|
5
|
+
private readonly _utilsManager;
|
|
6
|
+
constructor(sessionEngineCore: SessionEngineCore);
|
|
7
|
+
getFileInfo(parameterId: string, fileId: string, retry?: boolean): Promise<ResFileInfo>;
|
|
8
|
+
uploadGLTF(blob: Blob, conversion?: QueryGltfConversion, retry?: boolean): Promise<ResBase>;
|
|
9
|
+
/**
|
|
10
|
+
* Get all file parameters from the parameter set.
|
|
11
|
+
* If the parameter is not set in the parameter set, the value from the parameter object is used.
|
|
12
|
+
*
|
|
13
|
+
* @param parameters
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
getFileParameterSet(parameters: {
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
}): {
|
|
19
|
+
[key: string]: string | File | Blob;
|
|
20
|
+
};
|
|
21
|
+
uploadSDTF(arrayBuffers: ArrayBuffer[], retry?: boolean): Promise<ResAssetDefinition[]>;
|
|
22
|
+
uploadFile(parameterId: string, data: File, type: string, retry?: boolean): Promise<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Uploads all file parameters and returns the file parameter values.
|
|
25
|
+
* If parameterValues is provided, the file parameter values are added to it.
|
|
26
|
+
*
|
|
27
|
+
* @param parameterValues
|
|
28
|
+
* @returns
|
|
29
|
+
*/
|
|
30
|
+
uploadFileParameters(parameterValues?: {
|
|
31
|
+
[key: string]: unknown;
|
|
32
|
+
}): Promise<{
|
|
33
|
+
[key: string]: string;
|
|
34
|
+
}>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=FileUploadManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUploadManager.d.ts","sourceRoot":"","sources":["../../../src/implementation/managers/FileUploadManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,mBAAmB,EAEnB,kBAAkB,EAClB,OAAO,EACP,WAAW,EAGX,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAGvD,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;gBAEjC,iBAAiB,EAAE,iBAAiB;IAKnC,WAAW,CACvB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,UAAQ,GACX,OAAO,CAAC,WAAW,CAAC;IAwBV,UAAU,CACtB,IAAI,EAAE,IAAI,EACV,UAAU,GAAE,mBAA8C,EAC1D,KAAK,UAAQ,GACX,OAAO,CAAC,OAAO,CAAC;IAuBnB;;;;;;OAMG;IACI,mBAAmB,CAAC,UAAU,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG;QACjE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;KACpC;IAoBY,UAAU,CACtB,YAAY,EAAE,WAAW,EAAE,EAC3B,KAAK,UAAQ,GACX,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA0CnB,UAAU,CACtB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,KAAK,UAAQ,GACX,OAAO,CAAC,MAAM,CAAC;IAyClB;;;;;;OAMG;IACU,oBAAoB,CAAC,eAAe,CAAC,EAAE;QACnD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACvB,GAAG,OAAO,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAC;CA+CpC"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.FileUploadManager = void 0;
|
|
13
|
+
const sdk_geometry_api_sdk_v2_1 = require("@shapediver/sdk.geometry-api-sdk-v2");
|
|
14
|
+
const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
|
|
15
|
+
const FileParameter_1 = require("../dto/FileParameter");
|
|
16
|
+
class FileUploadManager {
|
|
17
|
+
constructor(sessionEngineCore) {
|
|
18
|
+
this._sessionEngineCore = sessionEngineCore;
|
|
19
|
+
this._utilsManager = this._sessionEngineCore.utilsManager;
|
|
20
|
+
}
|
|
21
|
+
getFileInfo(parameterId, fileId, retry = false) {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
this._utilsManager.checkAvailability();
|
|
24
|
+
try {
|
|
25
|
+
const response = yield new sdk_geometry_api_sdk_v2_1.FileApi(this._sessionEngineCore.sdkConfig).getFileMetadata(this._sessionEngineCore.sessionId, parameterId, fileId);
|
|
26
|
+
const { size, filename } = (0, sdk_geometry_api_sdk_v2_1.extractFileInfo)(response.headers);
|
|
27
|
+
return {
|
|
28
|
+
parameterId: parameterId,
|
|
29
|
+
id: fileId,
|
|
30
|
+
size: size,
|
|
31
|
+
filename: filename,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
yield this._utilsManager.handleError(e, retry);
|
|
36
|
+
return yield this.getFileInfo(parameterId, fileId, true);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
uploadGLTF(blob, conversion = sdk_geometry_api_sdk_v2_1.QueryGltfConversion.NONE, retry = false) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
this._utilsManager.checkAvailability("gltf-upload");
|
|
43
|
+
try {
|
|
44
|
+
const responseDto = (yield new sdk_geometry_api_sdk_v2_1.GltfApi(this._sessionEngineCore.sdkConfig).uploadGltf(this._sessionEngineCore.sessionId, new File([blob], "model.gltf", {
|
|
45
|
+
type: "model/gltf-binary",
|
|
46
|
+
}), conversion)).data;
|
|
47
|
+
if (!responseDto || !responseDto.gltf || !responseDto.gltf.href)
|
|
48
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError("Session.uploadGLTF: Upload reply has not the required format.");
|
|
49
|
+
return responseDto;
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
yield this._utilsManager.handleError(e, retry);
|
|
53
|
+
return yield this.uploadGLTF(blob, conversion, true);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get all file parameters from the parameter set.
|
|
59
|
+
* If the parameter is not set in the parameter set, the value from the parameter object is used.
|
|
60
|
+
*
|
|
61
|
+
* @param parameters
|
|
62
|
+
* @returns
|
|
63
|
+
*/
|
|
64
|
+
getFileParameterSet(parameters) {
|
|
65
|
+
const fileParameterSet = {};
|
|
66
|
+
for (const parameterId in this._sessionEngineCore.parameters) {
|
|
67
|
+
if (this._sessionEngineCore.parameters[parameterId] instanceof
|
|
68
|
+
FileParameter_1.FileParameter) {
|
|
69
|
+
fileParameterSet[parameterId] =
|
|
70
|
+
parameters[parameterId] !== undefined
|
|
71
|
+
? parameters[parameterId]
|
|
72
|
+
: this._sessionEngineCore.parameters[parameterId].value;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return fileParameterSet;
|
|
76
|
+
}
|
|
77
|
+
uploadSDTF(arrayBuffers, retry = false) {
|
|
78
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
+
this._utilsManager.checkAvailability("file-upload");
|
|
80
|
+
try {
|
|
81
|
+
const responseDto = (yield new sdk_geometry_api_sdk_v2_1.SdtfApi(this._sessionEngineCore.sdkConfig).uploadSdtf(this._sessionEngineCore.sessionId, arrayBuffers.map((arrayBuffer) => {
|
|
82
|
+
return {
|
|
83
|
+
namespace: "pub",
|
|
84
|
+
content_length: arrayBuffer.byteLength,
|
|
85
|
+
content_type: sdk_geometry_api_sdk_v2_1.ReqSdtfType.MODEL_SDTF,
|
|
86
|
+
};
|
|
87
|
+
}))).data;
|
|
88
|
+
if (!responseDto ||
|
|
89
|
+
!responseDto.asset ||
|
|
90
|
+
!responseDto.asset.sdtf ||
|
|
91
|
+
responseDto.asset.sdtf.length !== arrayBuffers.length)
|
|
92
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError("Session.uploadSDTF: Upload reply has not the required format.");
|
|
93
|
+
const promises = arrayBuffers.map((buffer, index) => {
|
|
94
|
+
const url = responseDto.asset.sdtf[index].href;
|
|
95
|
+
return new sdk_geometry_api_sdk_v2_1.UtilsApi(this._sessionEngineCore.sdkConfig).upload(url, buffer, sdk_geometry_api_sdk_v2_1.ReqSdtfType.MODEL_SDTF);
|
|
96
|
+
});
|
|
97
|
+
yield Promise.all(promises);
|
|
98
|
+
return responseDto.asset.sdtf;
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
yield this._utilsManager.handleError(e, retry);
|
|
102
|
+
return yield this.uploadSDTF(arrayBuffers, true);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
uploadFile(parameterId, data, type, retry = false) {
|
|
107
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
108
|
+
this._utilsManager.checkAvailability("file-upload");
|
|
109
|
+
try {
|
|
110
|
+
const result = (yield new sdk_geometry_api_sdk_v2_1.FileApi(this._sessionEngineCore.sdkConfig).uploadFile(this._sessionEngineCore.sessionId, {
|
|
111
|
+
[parameterId]: {
|
|
112
|
+
size: data.size,
|
|
113
|
+
format: type,
|
|
114
|
+
filename: data.name === "" ? undefined : data.name,
|
|
115
|
+
},
|
|
116
|
+
})).data;
|
|
117
|
+
if (result &&
|
|
118
|
+
result.asset &&
|
|
119
|
+
result.asset.file &&
|
|
120
|
+
result.asset.file[parameterId]) {
|
|
121
|
+
const fileAsset = result.asset.file[parameterId];
|
|
122
|
+
yield new sdk_geometry_api_sdk_v2_1.UtilsApi(this._sessionEngineCore.sdkConfig).uploadAsset(fileAsset.href, yield data.arrayBuffer(), fileAsset.headers);
|
|
123
|
+
return fileAsset.id;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError("Session.uploadFile: Upload reply has not the required format.");
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch (e) {
|
|
130
|
+
yield this._utilsManager.handleError(e, retry);
|
|
131
|
+
return yield this.uploadFile(parameterId, data, type, true);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Uploads all file parameters and returns the file parameter values.
|
|
137
|
+
* If parameterValues is provided, the file parameter values are added to it.
|
|
138
|
+
*
|
|
139
|
+
* @param parameterValues
|
|
140
|
+
* @returns
|
|
141
|
+
*/
|
|
142
|
+
uploadFileParameters(parameterValues) {
|
|
143
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
144
|
+
const parameterValueSet = parameterValues !== undefined
|
|
145
|
+
? this.getFileParameterSet(parameterValues)
|
|
146
|
+
: undefined;
|
|
147
|
+
const fileParameterValues = {};
|
|
148
|
+
// load file parameter first
|
|
149
|
+
for (const parameterId in this._sessionEngineCore.parameters) {
|
|
150
|
+
if (this._sessionEngineCore.parameters[parameterId] instanceof
|
|
151
|
+
FileParameter_1.FileParameter) {
|
|
152
|
+
fileParameterValues[parameterId] = yield (this._sessionEngineCore.parameters[parameterId]).upload(parameterValueSet
|
|
153
|
+
? parameterValueSet[parameterId]
|
|
154
|
+
: undefined);
|
|
155
|
+
if (parameterValues &&
|
|
156
|
+
parameterValues[parameterId] !== undefined) {
|
|
157
|
+
// if a value was provided, we replace it with the returned id
|
|
158
|
+
parameterValues[parameterId] =
|
|
159
|
+
fileParameterValues[parameterId];
|
|
160
|
+
// if the parameter value of the file parameter was used, set the value to the parameter
|
|
161
|
+
if (this._sessionEngineCore.parameters[parameterId]
|
|
162
|
+
.value !== fileParameterValues[parameterId])
|
|
163
|
+
this._sessionEngineCore.parameters[parameterId].value =
|
|
164
|
+
fileParameterValues[parameterId];
|
|
165
|
+
}
|
|
166
|
+
else if (this._sessionEngineCore.parameters[parameterId].value !==
|
|
167
|
+
fileParameterValues[parameterId]) {
|
|
168
|
+
this._sessionEngineCore.parameters[parameterId].value =
|
|
169
|
+
fileParameterValues[parameterId];
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return fileParameterValues;
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
exports.FileUploadManager = FileUploadManager;
|
|
178
|
+
//# sourceMappingURL=FileUploadManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUploadManager.js","sourceRoot":"","sources":["../../../src/implementation/managers/FileUploadManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ResGetModelState } from "@shapediver/sdk.geometry-api-sdk-v2";
|
|
2
|
+
import { ITreeNode } from "@shapediver/viewer.shared.node-tree";
|
|
3
|
+
import { SessionEngineCore } from "../SessionEngineCore";
|
|
4
|
+
export declare class ModelStateManager {
|
|
5
|
+
private readonly _sessionEngineCore;
|
|
6
|
+
private readonly _utilsManager;
|
|
7
|
+
private readonly _converter;
|
|
8
|
+
private readonly _httpClient;
|
|
9
|
+
constructor(sessionEngineCore: SessionEngineCore);
|
|
10
|
+
getModelState(modelStateId?: string): Promise<ResGetModelState>;
|
|
11
|
+
createModelState(parameterValues?: {
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}, omitSessionParameterValues?: boolean, image?: (() => string) | (() => Promise<string>) | string | Promise<string> | Blob | File, data?: Record<string, any>, arScene?: (() => Promise<ArrayBuffer>) | ArrayBuffer | (() => Promise<Blob>) | Blob | File, retry?: boolean): Promise<string>;
|
|
14
|
+
customizeWithModelState(modelState: string | ResGetModelState, retry?: boolean): Promise<ITreeNode>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=ModelStateManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelStateManager.d.ts","sourceRoot":"","sources":["../../../src/implementation/managers/ModelStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,gBAAgB,EAEhB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAW,MAAM,qCAAqC,CAAC;AAMxE,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAGvD,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;gBAEvC,iBAAiB,EAAE,iBAAiB;IAKnC,aAAa,CACzB,YAAY,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAoBf,gBAAgB,CAC5B,eAAe,GAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAM,EAC9C,0BAA0B,GAAE,OAAe,EAC3C,KAAK,CAAC,EACH,CAAC,MAAM,MAAM,CAAC,GACd,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,GACvB,MAAM,GACN,OAAO,CAAC,MAAM,CAAC,GACf,IAAI,GACJ,IAAI,EACP,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,OAAO,CAAC,EACL,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,GAC5B,WAAW,GACX,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GACrB,IAAI,GACJ,IAAI,EACP,KAAK,UAAQ,GACX,OAAO,CAAC,MAAM,CAAC;IA8GL,uBAAuB,CACnC,UAAU,EAAE,MAAM,GAAG,gBAAgB,EACrC,KAAK,UAAQ,GACX,OAAO,CAAC,SAAS,CAAC;CA6BrB"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ModelStateManager = void 0;
|
|
13
|
+
const sdk_geometry_api_sdk_v2_1 = require("@shapediver/sdk.geometry-api-sdk-v2");
|
|
14
|
+
const viewer_shared_node_tree_1 = require("@shapediver/viewer.shared.node-tree");
|
|
15
|
+
const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
|
|
16
|
+
class ModelStateManager {
|
|
17
|
+
constructor(sessionEngineCore) {
|
|
18
|
+
this._converter = viewer_shared_services_1.Converter.instance;
|
|
19
|
+
this._httpClient = viewer_shared_services_1.HttpClient.instance;
|
|
20
|
+
this._sessionEngineCore = sessionEngineCore;
|
|
21
|
+
this._utilsManager = sessionEngineCore.utilsManager;
|
|
22
|
+
}
|
|
23
|
+
getModelState(modelStateId) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
this._utilsManager.checkAvailability();
|
|
26
|
+
try {
|
|
27
|
+
const id = modelStateId || this._sessionEngineCore.modelStateId;
|
|
28
|
+
if (!id)
|
|
29
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError("Session.getModelState: No model state id available.");
|
|
30
|
+
const response = (yield new sdk_geometry_api_sdk_v2_1.ModelStateApi(this._sessionEngineCore.sdkConfig).getModelState(id)).data;
|
|
31
|
+
return response;
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
throw this._httpClient.convertError(e);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
createModelState(parameterValues = {}, omitSessionParameterValues = false, image, data, arScene, retry = false) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
this._utilsManager.checkAvailability();
|
|
41
|
+
try {
|
|
42
|
+
const promises = [];
|
|
43
|
+
// process the parameters
|
|
44
|
+
const parameterSet = {};
|
|
45
|
+
promises.push(this._sessionEngineCore.fileUploadManager
|
|
46
|
+
.uploadFileParameters(parameterValues)
|
|
47
|
+
.then(() => {
|
|
48
|
+
// create a set of the current validated parameter values
|
|
49
|
+
for (const parameterId in this._sessionEngineCore
|
|
50
|
+
.parameters) {
|
|
51
|
+
// if the parameter has not been set, we do not include it in the parameter set if the omitSessionParameterValues flag is set
|
|
52
|
+
if (!(omitSessionParameterValues === true &&
|
|
53
|
+
parameterValues[parameterId] === undefined)) {
|
|
54
|
+
parameterSet[parameterId] = (" " +
|
|
55
|
+
this._sessionEngineCore.parameters[parameterId].stringify(parameterValues[parameterId])).slice(1);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}));
|
|
59
|
+
// process the image input
|
|
60
|
+
let imageData;
|
|
61
|
+
let imageArrayBuffer;
|
|
62
|
+
if (image) {
|
|
63
|
+
promises.push(this._utilsManager
|
|
64
|
+
.processImageInput(image)
|
|
65
|
+
.then((result) => {
|
|
66
|
+
imageData = result === null || result === void 0 ? void 0 : result.imageData;
|
|
67
|
+
imageArrayBuffer = result === null || result === void 0 ? void 0 : result.arrayBuffer;
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
// process the arScene input
|
|
71
|
+
let arSceneId;
|
|
72
|
+
if (arScene) {
|
|
73
|
+
promises.push(this._converter
|
|
74
|
+
.convertToBlob(arScene)
|
|
75
|
+
.then((arSceneBlob) => new sdk_geometry_api_sdk_v2_1.GltfApi(this._sessionEngineCore.sdkConfig).uploadGltf(this._sessionEngineCore.sessionId, new File([arSceneBlob], "arScene.gltf", {
|
|
76
|
+
type: "model/gltf-binary",
|
|
77
|
+
}), sdk_geometry_api_sdk_v2_1.QueryGltfConversion.SCENE))
|
|
78
|
+
.then((arSceneResponseDto) => {
|
|
79
|
+
var _a;
|
|
80
|
+
arSceneId = (_a = arSceneResponseDto.data.gltf) === null || _a === void 0 ? void 0 : _a.sceneId;
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
// wait for all promises to resolve
|
|
84
|
+
yield Promise.all(promises);
|
|
85
|
+
// create the model state
|
|
86
|
+
const response = (yield new sdk_geometry_api_sdk_v2_1.ModelStateApi(this._sessionEngineCore.sdkConfig).createModelState(this._sessionEngineCore.sessionId, {
|
|
87
|
+
parameters: parameterSet,
|
|
88
|
+
data: data,
|
|
89
|
+
image: imageData,
|
|
90
|
+
arSceneId: arSceneId,
|
|
91
|
+
})).data;
|
|
92
|
+
if (imageData && imageArrayBuffer)
|
|
93
|
+
yield new sdk_geometry_api_sdk_v2_1.UtilsApi(this._sessionEngineCore.sdkConfig).uploadAsset(response.asset.modelState.href, imageArrayBuffer, response.asset.modelState.headers);
|
|
94
|
+
return response.modelState.id;
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
yield this._utilsManager.handleError(e, retry);
|
|
98
|
+
return yield this.createModelState(parameterValues, omitSessionParameterValues, image, data, arScene, true);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
customizeWithModelState(modelState, retry = false) {
|
|
103
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
this._utilsManager.checkAvailability();
|
|
105
|
+
try {
|
|
106
|
+
// get the model state if it is not already a response
|
|
107
|
+
let response;
|
|
108
|
+
if (typeof modelState === "string") {
|
|
109
|
+
response = (yield new sdk_geometry_api_sdk_v2_1.ModelStateApi(this._sessionEngineCore.sdkConfig).getModelState(modelState)).data;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
response = modelState;
|
|
113
|
+
}
|
|
114
|
+
if (!response.modelState)
|
|
115
|
+
return new viewer_shared_node_tree_1.TreeNode();
|
|
116
|
+
// read out the parameter values from the model state
|
|
117
|
+
for (const parameterId in response.modelState.parameters)
|
|
118
|
+
this._sessionEngineCore.parameters[parameterId].value =
|
|
119
|
+
response.modelState.parameters[parameterId];
|
|
120
|
+
return this._sessionEngineCore.customizationManager.customize();
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
yield this._utilsManager.handleError(e, retry);
|
|
124
|
+
return yield this.customizeWithModelState(modelState, true);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.ModelStateManager = ModelStateManager;
|
|
130
|
+
//# sourceMappingURL=ModelStateManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelStateManager.js","sourceRoot":"","sources":["../../../src/implementation/managers/ModelStateManager.ts"],"names":[],"mappings":"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"}
|