@aurigma/design-atoms
Version:
Design Atoms is a part of Customer's Canvas SDK which allows for manipulating individual design elements through your code.
107 lines • 5.46 kB
JavaScript
import { ImageContainer } from "../ItemHandlers/ImageContainer";
import { RectangleF } from "@aurigma/design-atoms-model/Math/RectangleF";
import { EventWithSenderArg } from "@aurigma/design-atoms-model/EventObject";
var ItemHandlerImageLoaderService = /** @class */ (function () {
function ItemHandlerImageLoaderService(_serviceEndpoint) {
this._serviceEndpoint = _serviceEndpoint;
this._imageContainers = new Map();
this._fileCacheIdToCombined = {};
this._locks = new Map();
this._rectangles = {};
this._imageContainerLoadedEvent = new EventWithSenderArg();
}
ItemHandlerImageLoaderService.prototype.loadCombinedImage = function (combinedImageDescription) {
var _this = this;
var _a;
if (combinedImageDescription == null)
return;
if (combinedImageDescription.fileCacheId) {
var imageContainer = new ImageContainer(function () { return _this._raiseImageLoadedEvent(); });
this._imageContainers.set(combinedImageDescription.fileCacheId, imageContainer);
imageContainer.updateUrl(this._getImageUrl(combinedImageDescription.fileCacheId));
for (var key in combinedImageDescription.itemsRectangles) {
this._fileCacheIdToCombined[key] = combinedImageDescription.fileCacheId;
this._rectangles[key] = RectangleF.fromString(combinedImageDescription.itemsRectangles[key]);
}
}
if (((_a = combinedImageDescription.largeImagesIds) === null || _a === void 0 ? void 0 : _a.length) > 0) {
combinedImageDescription.largeImagesIds.forEach(function (largeImageId) {
var imageContainer = new ImageContainer(function () { return _this._raiseImageLoadedEvent(); });
_this._imageContainers.set(largeImageId, imageContainer);
imageContainer.updateUrl(_this._getImageUrl(largeImageId));
_this._fileCacheIdToCombined[largeImageId] = largeImageId;
});
}
};
ItemHandlerImageLoaderService.prototype.getImageContainerFor = function (cacheFileId) {
if (!this.hasImageContainerFor(cacheFileId))
return null;
var combinedCacheId = this._fileCacheIdToCombined[cacheFileId];
return this._imageContainers.get(combinedCacheId);
};
ItemHandlerImageLoaderService.prototype.hasImageContainerFor = function (cacheFileId) {
if (cacheFileId == null || cacheFileId === undefined || cacheFileId.length === 0)
return false;
return cacheFileId in this._fileCacheIdToCombined;
};
ItemHandlerImageLoaderService.prototype.lockImageContainerFor = function (cacheFileId, lockObjectId) {
if (!this._fileCacheIdToCombined[cacheFileId])
return;
if (!this._locks.has(cacheFileId))
this._locks.set(cacheFileId, []);
var lockArray = this._locks.get(cacheFileId);
if (!lockArray.includes(lockObjectId))
lockArray.push(lockObjectId);
};
ItemHandlerImageLoaderService.prototype.releaseImageContainerFor = function (cacheFileId, lockObjectId) {
if (!this._locks.has(cacheFileId))
return;
var lockArray = this._locks.get(cacheFileId);
if (!lockArray.includes(lockObjectId)) {
console.error("no lock found for cacheFileId " + cacheFileId + " and lockObjectId " + lockObjectId);
return;
}
var index = lockArray.indexOf(lockObjectId);
lockArray.splice(index, 1);
if (lockArray.length == 0) {
this._locks.delete(cacheFileId);
this._releaseCacheId(cacheFileId);
}
};
ItemHandlerImageLoaderService.prototype._releaseCacheId = function (cacheFileId) {
var combinedCacheId = this._fileCacheIdToCombined[cacheFileId];
if (!combinedCacheId) {
console.error("_releaseCacheId combined not found for " + cacheFileId);
return;
}
delete this._fileCacheIdToCombined[cacheFileId];
var found = false;
for (var id in this._fileCacheIdToCombined) {
var combined = this._fileCacheIdToCombined[id];
if (combinedCacheId === combined) {
found = true;
break;
}
}
if (!found)
this._imageContainers.delete(combinedCacheId);
};
ItemHandlerImageLoaderService.prototype.getImageContainerRectangleFor = function (cacheFileId) {
return this._rectangles[cacheFileId];
};
ItemHandlerImageLoaderService.prototype.addImageContainerLoaded = function (handler) {
this._imageContainerLoadedEvent.add(handler);
};
ItemHandlerImageLoaderService.prototype.removeImageContainerLoaded = function (handler) {
this._imageContainerLoadedEvent.remove(handler);
};
ItemHandlerImageLoaderService.prototype._getImageUrl = function (fileCacheId) {
return this._serviceEndpoint + "/txt?" + "f=" + encodeURIComponent(fileCacheId);
};
ItemHandlerImageLoaderService.prototype._raiseImageLoadedEvent = function () {
this._imageContainerLoadedEvent.notify(this);
};
return ItemHandlerImageLoaderService;
}());
export { ItemHandlerImageLoaderService };
//# sourceMappingURL=ItemHandlerImageLoaderService.js.map