@aurigma/design-atoms
Version:
Design Atoms is a part of Customer's Canvas SDK which allows for manipulating individual design elements through your code.
500 lines • 24.7 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
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;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
import * as Ajax from "./../Utils/Ajax";
import * as Utils from "@aurigma/design-atoms-model/Utils/Utils";
import { ImageMetaData } from "@aurigma/design-atoms-model/Product/Items/ImageMetaData";
import { Exception } from "@aurigma/design-atoms-model/Exception";
import { RectangleF } from "@aurigma/design-atoms-model/Math";
import { EventWithSenderArg } from "@aurigma/design-atoms-model";
import { Deferred } from "../Utils/Deferred";
import { JsonColorParser } from "../Serialization/JsonColorParser";
var ServiceError = /** @class */ (function () {
function ServiceError(_timeout, _message, _stacktrace, _type, _data) {
this._timeout = _timeout;
this._message = _message;
this._stacktrace = _stacktrace;
this._type = _type;
this._data = _data;
}
return ServiceError;
}());
export { ServiceError };
var loadingImageDefaultUrl = "/resource?image=waitclock";
var authHeader = "Authorization";
var DesignAtomsApiClient = /** @class */ (function () {
function DesignAtomsApiClient(timeout) {
if (timeout === void 0) { timeout = 60000; }
this._setBackendUrl = new Deferred();
this._backendUrl = "";
this._timeout = 60000;
this._loadingImageUrl = null;
this._authorizationToken = null;
this._timeout = timeout;
this._loadingImageUrlChanged = new EventWithSenderArg();
this._authorizationToken = null;
}
Object.defineProperty(DesignAtomsApiClient.prototype, "backendUrl", {
get: function () {
return this._backendUrl;
},
set: function (value) {
this._backendUrl = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(DesignAtomsApiClient.prototype, "loadingImageUrl", {
get: function () {
var _a;
return (_a = this._loadingImageUrl) !== null && _a !== void 0 ? _a : Utils.urlCombine(this._backendUrl, "api/ccviewer", loadingImageDefaultUrl);
},
set: function (value) {
if (typeof value === "string" && this._loadingImageUrl !== value) {
this._loadingImageUrl = value;
this._loadingImageUrlChanged.notify(this, {});
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(DesignAtomsApiClient.prototype, "loadingImageUrlChanged", {
get: function () {
return this._loadingImageUrlChanged;
},
enumerable: true,
configurable: true
});
Object.defineProperty(DesignAtomsApiClient.prototype, "serviceEndpoint", {
get: function () {
return Utils.urlCombine(this._backendUrl, "api/ccviewer");
},
enumerable: true,
configurable: true
});
DesignAtomsApiClient.prototype.setAuthorizationToken = function (authorizationToken) {
this._authorizationToken = authorizationToken;
};
DesignAtomsApiClient.prototype.getColorPreviews = function (colors, colorSettings) {
return __awaiter(this, void 0, void 0, function () {
var request, response, colorJsonArray, result, ex_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
request = { colorData: colors.map(function (x) { return x.getData(); }), colorSettings: colorSettings };
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, Ajax.request({
url: Utils.urlCombine(this.backendUrl, "/api/ccviewer/GetColorPreviews"),
type: Ajax.RequestType.post,
headers: this._getHeaders(),
data: JSON.stringify(request)
})];
case 2:
response = _a.sent();
colorJsonArray = JSON.parse(response.value).previews;
result = colorJsonArray.map(function (x) { return JsonColorParser.parseRgbColor(x); });
return [2 /*return*/, result];
case 3:
ex_1 = _a.sent();
console.error("Unable to get ColorPreview. Reason: " + ex_1);
throw ex_1;
case 4: return [2 /*return*/];
}
});
});
};
DesignAtomsApiClient.prototype.getColorPreview = function (color, colorSettings) {
return __awaiter(this, void 0, void 0, function () {
var request, response, ex_2;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
request = { colorData: color.getData(), colorSettings: colorSettings };
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, Ajax.request({
url: Utils.urlCombine(this.backendUrl, "/api/ccviewer/GetColorPreview"),
type: Ajax.RequestType.post,
headers: this._getHeaders(),
data: JSON.stringify(request)
})];
case 2:
response = _a.sent();
return [2 /*return*/, JsonColorParser.parseRgbColor(JSON.parse(response.value).preview)];
case 3:
ex_2 = _a.sent();
console.error("Unable to get ColorPreview. Reason: " + ex_2);
return [2 /*return*/, ex_2];
case 4: return [2 /*return*/];
}
});
});
};
DesignAtomsApiClient.prototype.getFontsCSS = function (requestedFonts, advancedMode) {
return __awaiter(this, void 0, void 0, function () {
var data, ex_3;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, Ajax.request({
url: Utils.urlCombine(this.backendUrl, "/api/ccviewer/cssFonts"),
type: Ajax.RequestType.post,
headers: this._getHeaders(),
data: JSON.stringify({
requestedFontsByPsName: requestedFonts,
advancedMode: advancedMode,
baseUrl: this.backendUrl + "/api/ccviewer",
})
})];
case 1:
data = _a.sent();
return [2 /*return*/, Utils.createCssDataUri(data.value)];
case 2:
ex_3 = _a.sent();
console.error("Unable to get FontsCss. Reason: " + ex_3);
return [2 /*return*/, ex_3];
case 3: return [2 /*return*/];
}
});
});
};
DesignAtomsApiClient.prototype.getFallbackFonts = function () {
return __awaiter(this, void 0, void 0, function () {
var data, ex_4;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this._setBackendUrl.promise];
case 1:
_a.sent();
_a.label = 2;
case 2:
_a.trys.push([2, 4, , 5]);
return [4 /*yield*/, Ajax.request({
url: Utils.urlCombine(this.backendUrl, "/api/ccviewer/GetFallbackFonts"),
type: Ajax.RequestType.get,
headers: this._getHeaders(),
data: JSON.stringify({
baseUrl: this.backendUrl + "/api/ccviewer"
})
})];
case 3:
data = _a.sent();
return [2 /*return*/, JSON.parse(data.value)];
case 4:
ex_4 = _a.sent();
console.error("Unable to get FallbackFonts. Reason: " + ex_4);
return [2 /*return*/, ex_4];
case 5: return [2 /*return*/];
}
});
});
};
DesignAtomsApiClient.prototype.getFontsByteArray = function (psName) {
return __awaiter(this, void 0, void 0, function () {
var data, arrayBuffer, ex_5;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, Ajax.request({
type: Ajax.RequestType.get,
url: Utils.urlCombine(this.backendUrl, "/api/ccviewer/fonts/" + psName),
responseType: "arraybuffer",
headers: this._getHeaders(false)
})];
case 1:
data = _a.sent();
arrayBuffer = data.xhr.response;
if (arrayBuffer) {
return [2 /*return*/, new Uint8Array(arrayBuffer)];
}
return [3 /*break*/, 3];
case 2:
ex_5 = _a.sent();
console.error("Unable to get FontsCss. Reason: " + ex_5);
return [2 /*return*/, ex_5];
case 3: return [2 /*return*/];
}
});
});
};
DesignAtomsApiClient.prototype.getContentPath = function (originalPathId) {
return __awaiter(this, void 0, void 0, function () {
var data, ex_6;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, Ajax.request({
type: Ajax.RequestType.get,
url: Utils.urlCombine(this.backendUrl, "/api/ccviewer/pth?f=" + originalPathId),
headers: this._getHeaders()
})];
case 1:
data = _a.sent();
return [2 /*return*/, data.value];
case 2:
ex_6 = _a.sent();
console.error("Unable to get content path. Reason: " + ex_6);
return [2 /*return*/, ex_6];
case 3: return [2 /*return*/];
}
});
});
};
DesignAtomsApiClient.prototype.getImageMetaDataFromRemoteUrl = function (remoteUrl, appDomainUrl) {
if (appDomainUrl === void 0) { appDomainUrl = this._backendUrl; }
return __awaiter(this, void 0, void 0, function () {
var imageData, ex_7;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, Ajax.request({
url: Utils.urlCombine(appDomainUrl, "/api/ImagePicker/GetWebImageMeta"),
type: Ajax.RequestType.post,
headers: this._getHeaders(),
data: JSON.stringify({ "url": remoteUrl })
})];
case 1:
imageData = _a.sent();
return [2 /*return*/, this._parseImageMetadata(imageData.value)];
case 2:
ex_7 = _a.sent();
console.error("Unable to get Image From Remote Url. Reason: " + ex_7);
return [2 /*return*/, ex_7];
case 3: return [2 /*return*/];
}
});
});
};
DesignAtomsApiClient.prototype.getImageMetaDataFromFile = function (filePath, userId) {
if (userId === void 0) { userId = null; }
return __awaiter(this, void 0, void 0, function () {
var requestData, response, error_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
requestData = { filePath: filePath, userId: userId };
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, Ajax.request({
url: Utils.urlCombine(this._backendUrl, "/api/ImagePicker/GetFileMetadata"),
type: Ajax.RequestType.post,
headers: this._getHeaders(),
data: JSON.stringify(requestData)
})];
case 2:
response = _a.sent();
return [2 /*return*/, this._parseImageMetadata(response.value)];
case 3:
error_1 = _a.sent();
throw new Exception(JSON.parse(error_1.toJSON().message).ExceptionMessage);
case 4: return [2 /*return*/];
}
});
});
};
DesignAtomsApiClient.prototype.getImageMetaDataFromDesignImage = function (designImageName) {
return __awaiter(this, void 0, void 0, function () {
var requestData, response, error_2;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
requestData = { "designImageName": designImageName };
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, Ajax.request({
url: Utils.urlCombine(this._backendUrl, "/api/ImagePicker/GetDesignImageMeta"),
type: Ajax.RequestType.post,
headers: this._getHeaders(),
data: JSON.stringify(requestData)
})];
case 2:
response = _a.sent();
return [3 /*break*/, 4];
case 3:
error_2 = _a.sent();
throw new Exception(JSON.parse(error_2.toJSON().message).ExceptionMessage);
case 4: return [2 /*return*/, this._parseImageMetadata(response.value)];
}
});
});
};
DesignAtomsApiClient.prototype.getImageMetadataFromRemoteFile = function (url) {
return __awaiter(this, void 0, void 0, function () {
var request, response, error_3;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
request = { url: url };
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, Ajax.request({
url: Utils.urlCombine(this._backendUrl, "/api/ImagePicker/GetWebImageMeta"),
type: Ajax.RequestType.post,
headers: this._getHeaders(),
data: JSON.stringify(request)
})];
case 2:
response = _a.sent();
return [3 /*break*/, 4];
case 3:
error_3 = _a.sent();
throw new Exception(JSON.parse(error_3.toJSON().message).ExceptionMessage);
case 4: return [2 /*return*/, this._parseImageMetadata(response.value)];
}
});
});
};
DesignAtomsApiClient.prototype.getLicenseAsync = function () {
return __awaiter(this, void 0, void 0, function () {
var response, raw, license;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, Ajax.getJson(Utils.urlCombine(this._backendUrl, "api/ccviewer/license"))];
case 1:
response = _a.sent();
if (response.status !== Ajax.StatusCode.Ok)
throw new Exception("Cannot get license from server");
raw = JSON.parse(response.value);
license = {
isDeveloper: raw.isDeveloper,
isTrial: raw.isTrial,
isDesktopOnly: raw.isDesktopOnly,
isEnterprise: raw.isEnterprise,
expirationDate: new Date(raw.expirationDate)
};
return [2 /*return*/, license];
}
});
});
};
DesignAtomsApiClient.prototype.getPathBoundsFromServer = function (path) {
return __awaiter(this, void 0, void 0, function () {
var result, ex_8;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, Ajax.request({
type: Ajax.RequestType.post,
url: this.backendUrl + "/api/ccviewer/GetShapeBounds",
headers: this._getHeaders(),
data: JSON.stringify({ path: path.toString() }),
})];
case 1:
result = _a.sent();
return [2 /*return*/, RectangleF.FromObject(JSON.parse(result.value))];
case 2:
ex_8 = _a.sent();
console.error("Unable to load shape bounds. Reason: " + ex_8);
return [3 /*break*/, 3];
case 3: return [2 /*return*/];
}
});
});
};
DesignAtomsApiClient.prototype.sendRequest = function (methodName, data, resolve, failure, returnRawResponse) {
if (returnRawResponse === void 0) { returnRawResponse = false; }
var xmlhttp = new XMLHttpRequest();
var serviceEndpoint = Utils.urlCombine(this.backendUrl, "/api/ccviewer");
xmlhttp.open("POST", serviceEndpoint + "/" + methodName);
if (returnRawResponse)
xmlhttp.responseType = "arraybuffer";
xmlhttp.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
if (this._isAuthHeaderRequired())
xmlhttp.setRequestHeader(authHeader, this._getAuthHeaderValue());
xmlhttp.timeout = this._timeout;
xmlhttp.onload = function (ev) {
if (xmlhttp.status === 200) {
if (returnRawResponse) {
resolve(xmlhttp.response, xmlhttp);
}
else
resolve(JSON.parse(xmlhttp.response));
}
else {
var error = new ServiceError(false, xmlhttp.statusText, xmlhttp.response);
failure(error, null, methodName);
}
};
xmlhttp.onerror = function (ev) {
failure("error", null, methodName);
};
xmlhttp.ontimeout = function (ev) {
var error = new ServiceError(true, xmlhttp.statusText, xmlhttp.response);
failure(error, null, methodName);
};
var stringData = JSON.stringify(data);
xmlhttp.send(stringData);
};
DesignAtomsApiClient.prototype._parseImageMetadata = function (json) {
var data = JSON.parse(json);
var result = new ImageMetaData();
result.storageId = data["storageId"];
result.name = data["name"];
result.size.width = data["width"];
result.size.height = data["height"];
result.isVector = data["isVector"];
return result;
};
DesignAtomsApiClient.prototype._getHeaders = function (includeContentTypeJson) {
if (includeContentTypeJson === void 0) { includeContentTypeJson = true; }
var result = [];
if (includeContentTypeJson)
result.push(Ajax.ContentType.json);
if (this._isAuthHeaderRequired())
result.push({ name: authHeader, value: this._getAuthHeaderValue() });
return result;
};
DesignAtomsApiClient.prototype._getAuthHeaderValue = function () {
return "Bearer " + this._authorizationToken;
};
DesignAtomsApiClient.prototype._isAuthHeaderRequired = function () {
return this._authorizationToken != null;
};
return DesignAtomsApiClient;
}());
export { DesignAtomsApiClient };
//# sourceMappingURL=DesignAtomsApiClient.js.map