UNPKG

@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
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