123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import LRU from '../../core/LRU.js';
- import { platformApi } from '../../core/platform.js';
- var globalImageCache = new LRU(50);
- export function findExistImage(newImageOrSrc) {
- if (typeof newImageOrSrc === 'string') {
- var cachedImgObj = globalImageCache.get(newImageOrSrc);
- return cachedImgObj && cachedImgObj.image;
- }
- else {
- return newImageOrSrc;
- }
- }
- export function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) {
- if (!newImageOrSrc) {
- return image;
- }
- else if (typeof newImageOrSrc === 'string') {
- if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) {
- return image;
- }
- var cachedImgObj = globalImageCache.get(newImageOrSrc);
- var pendingWrap = { hostEl: hostEl, cb: onload, cbPayload: cbPayload };
- if (cachedImgObj) {
- image = cachedImgObj.image;
- !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);
- }
- else {
- image = platformApi.loadImage(newImageOrSrc, imageOnLoad, imageOnLoad);
- image.__zrImageSrc = newImageOrSrc;
- globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {
- image: image,
- pending: [pendingWrap]
- });
- }
- return image;
- }
- else {
- return newImageOrSrc;
- }
- }
- function imageOnLoad() {
- var cachedImgObj = this.__cachedImgObj;
- this.onload = this.onerror = this.__cachedImgObj = null;
- for (var i = 0; i < cachedImgObj.pending.length; i++) {
- var pendingWrap = cachedImgObj.pending[i];
- var cb = pendingWrap.cb;
- cb && cb(this, pendingWrap.cbPayload);
- pendingWrap.hostEl.dirty();
- }
- cachedImgObj.pending.length = 0;
- }
- export function isImageReady(image) {
- return image && image.width && image.height;
- }
|