@wcardinal/wcardinal-geditor
Version:
WebGL-based graphic editor, tester and viewer for supervisory systems
88 lines • 3.34 kB
JavaScript
import { createGroupUploaded, EShapeCapabilities, EShapeDeserializers, EShapeOnDeserializeds, EShapeRuntimes, EShapeUploadeds } from "@wcardinal/wcardinal-ui";
var toIconName = function (index) {
return "extension_icon_".concat(index);
};
var EShapeExtensions = /** @class */ (function () {
function EShapeExtensions() {
}
EShapeExtensions.add = function (extension) {
var _a, _b;
if ("type" in extension) {
var type = extension.type;
// Name
((_a = this._typeToExtension) !== null && _a !== void 0 ? _a : (this._typeToExtension = new Map())).set(type, extension);
// Deserializer
var deserializer = extension.deserializer;
if (deserializer != null) {
EShapeDeserializers[type] = deserializer;
}
// OnDeserialized
var onDeserialized = extension.onDeserialized;
if (onDeserialized != null) {
EShapeOnDeserializeds[type] = onDeserialized;
}
// Runtime
var runtime = extension.runtime;
if (runtime) {
EShapeRuntimes[type] = runtime;
}
// Capability
var capability = extension.capability;
if (capability != null) {
EShapeCapabilities.set(type, capability);
}
// Uploaded
var uploaded = extension.uploaded;
if (uploaded != null) {
EShapeUploadeds[type] = uploaded;
}
else {
if (EShapeUploadeds[type] == null) {
EShapeUploadeds[type] = createGroupUploaded;
}
}
}
((_b = this._extensions) !== null && _b !== void 0 ? _b : (this._extensions = [])).push(extension);
};
EShapeExtensions.get = function (type) {
var typeToExtension = this._typeToExtension;
if (typeToExtension != null) {
return typeToExtension.get(type);
}
};
EShapeExtensions.each = function (iteratee) {
var extensions = this._extensions;
if (extensions != null) {
for (var i = 0, imax = extensions.length; i < imax; ++i) {
var extension = extensions[i];
iteratee(extension);
}
}
};
EShapeExtensions.merge = function (iconBuilder) {
var extensions = this._extensions;
if (extensions != null) {
for (var i = 0, imax = extensions.length; i < imax; ++i) {
var extension = extensions[i];
if ("icon" in extension) {
var icon = extension.icon;
iconBuilder.add(toIconName(i), icon.width, icon.height, icon.svg);
}
}
}
};
EShapeExtensions.build = function (icons) {
var extensions = this._extensions;
if (extensions != null) {
for (var i = 0, imax = extensions.length; i < imax; ++i) {
var extension = extensions[i];
if ("icon" in extension) {
extension.icon.texture = icons[toIconName(i)];
}
}
}
};
return EShapeExtensions;
}());
export { EShapeExtensions };
//# sourceMappingURL=e-shape-extensions.js.map