You're Invited:Meet the Socket Team at RSAC and BSidesSF 2026, March 23–26.RSVP
Socket
Book a DemoSign in
Socket

@antv/g-plugin-image-loader

Package Overview
Dependencies
Maintainers
70
Versions
171
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@antv/g-plugin-image-loader - npm Package Compare versions

Comparing version
2.1.26
to
2.2.0
+6
-10
dist/index.esm.js
/*!
* @antv/g-plugin-image-loader
* @description A G plugin for loading image
* @version 2.1.26
* @date 7/30/2025, 1:35:52 PM
* @version 2.2.0
* @date 10/13/2025, 7:02:12 AM
* @author AntVis

@@ -591,6 +591,4 @@ * @docs https://g.antv.antgroup.com/

}
// set dirty rectangle flag
object.renderable.dirty = true;
renderingService.dirtify();
object.dirty();
renderingService.dirty();
});

@@ -618,6 +616,4 @@ }

}
// set dirty rectangle flag
object.renderable.dirty = true;
renderingService.dirtify();
object.dirty();
renderingService.dirty();
})["catch"](function () {

@@ -624,0 +620,0 @@ //

@@ -1,1 +0,1 @@

{"version":3,"file":"index.esm.js","sources":["../src/RefCountCache.ts","../src/ImageSlicer.ts","../src/ImagePool.ts","../src/LoadImagePlugin.ts","../src/index.ts"],"sourcesContent":["import { DisplayObject } from '@antv/g-lite';\n\nexport class RefCountCache<CacheValue> {\n private cacheStore = new Map<\n string,\n { value: CacheValue; counter: Set<number> }\n >();\n\n onRefAdded(ref: DisplayObject) {}\n\n has(key: string) {\n return this.cacheStore.has(key);\n }\n\n put(key: string, item: CacheValue, ref: DisplayObject) {\n if (this.cacheStore.has(key)) {\n return false;\n }\n\n this.cacheStore.set(key, {\n value: item,\n counter: new Set([ref.entity]),\n });\n this.onRefAdded(ref);\n\n return true;\n }\n\n get(key: string, ref: DisplayObject) {\n const cacheItem = this.cacheStore.get(key);\n if (!cacheItem) {\n return null;\n }\n\n if (!cacheItem.counter.has(ref.entity)) {\n cacheItem.counter.add(ref.entity);\n this.onRefAdded(ref);\n }\n\n return cacheItem.value;\n }\n\n update(key: string, value: CacheValue, ref: DisplayObject) {\n const cacheItem = this.cacheStore.get(key);\n if (!cacheItem) {\n return false;\n }\n\n cacheItem.value = { ...cacheItem.value, ...value };\n if (!cacheItem.counter.has(ref.entity)) {\n cacheItem.counter.add(ref.entity);\n this.onRefAdded(ref);\n }\n\n return true;\n }\n\n release(key: string, ref: DisplayObject) {\n const cacheItem = this.cacheStore.get(key);\n if (!cacheItem) {\n return false;\n }\n\n cacheItem.counter.delete(ref.entity);\n\n if (cacheItem.counter.size <= 0) {\n this.cacheStore.delete(key);\n }\n\n return true;\n }\n\n releaseRef(ref: DisplayObject) {\n Array.from(this.cacheStore.keys()).forEach((key) => {\n this.release(key, ref);\n });\n }\n\n getSize() {\n return this.cacheStore.size;\n }\n\n clear() {\n this.cacheStore.clear();\n }\n}\n","const tasks: (() => void)[] = [];\nlet nextFrameTasks: (() => void)[] = [];\n\ninterface API {\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n createCanvas: () => HTMLCanvasElement | OffscreenCanvas;\n}\n\nexport interface SliceResult {\n tileSize: [number, number];\n /** [rows, cols] */\n gridSize: [number, number];\n /**\n * @example\n * ```\n * [\n * // tileY=0\n * [tileX=0, tileX=1, ...],\n * // tileY=1\n * [tileX=0, tileX=1, ...],\n * ]\n * ```\n */\n tiles: (null | {\n x: number;\n y: number;\n tileX: number;\n tileY: number;\n data: HTMLCanvasElement | OffscreenCanvas;\n })[][];\n}\n\nexport class ImageSlicer {\n static api: API;\n static TASK_NUM_PER_FRAME = 10;\n static rafId: ReturnType<typeof requestAnimationFrame>;\n\n static stop(api = ImageSlicer.api) {\n if (ImageSlicer.rafId) {\n api.cancelAnimationFrame(ImageSlicer.rafId);\n ImageSlicer.rafId = null;\n }\n }\n\n static executeTask(api = ImageSlicer.api) {\n if (tasks.length <= 0 && nextFrameTasks.length <= 0) {\n return;\n }\n\n nextFrameTasks.forEach((task) => task());\n nextFrameTasks = tasks.splice(0, ImageSlicer.TASK_NUM_PER_FRAME);\n\n ImageSlicer.rafId = api.requestAnimationFrame(() => {\n ImageSlicer.executeTask(api);\n });\n }\n\n static sliceImage(\n image: HTMLImageElement,\n sliceWidth: number,\n sliceHeight: number,\n rerender: () => void,\n overlap = 0,\n api = ImageSlicer.api,\n ) {\n const imageWidth = image.naturalWidth || image.width;\n const imageHeight = image.naturalHeight || image.height;\n\n // 计算步长(考虑重叠区域)\n const strideW = sliceWidth - overlap;\n const strideH = sliceHeight - overlap;\n\n // 计算网格尺寸\n const gridCols = Math.ceil(imageWidth / strideW);\n const gridRows = Math.ceil(imageHeight / strideH);\n\n const result: SliceResult = {\n tileSize: [sliceWidth, sliceHeight],\n gridSize: [gridRows, gridCols],\n tiles: Array(gridRows)\n .fill(null)\n .map(() => Array(gridCols).fill(null) as SliceResult['tiles'][number]),\n };\n\n // 遍历网格创建切片\n for (let row = 0; row < gridRows; row++) {\n for (let col = 0; col < gridCols; col++) {\n tasks.push(() => {\n // 计算当前切片的坐标\n const startX = col * strideW;\n const startY = row * strideH;\n\n // 处理最后一列/行的特殊情况\n const [tempSliceWidth, tempSliceHeight] = [\n Math.min(sliceWidth, imageWidth - startX),\n Math.min(sliceHeight, imageHeight - startY),\n ];\n\n // 创建切片canvas\n const sliceCanvas = api.createCanvas();\n sliceCanvas.width = sliceWidth;\n sliceCanvas.height = sliceHeight;\n const sliceCtx = sliceCanvas.getContext('2d');\n\n // 将图像部分绘制到切片canvas上\n sliceCtx.drawImage(\n image,\n startX,\n startY,\n tempSliceWidth,\n tempSliceHeight,\n 0,\n 0,\n tempSliceWidth,\n tempSliceHeight,\n );\n\n // 存储切片信息\n result.tiles[row][col] = {\n x: startX,\n y: startY,\n tileX: col,\n tileY: row,\n data: sliceCanvas,\n };\n\n rerender();\n });\n }\n }\n\n ImageSlicer.stop();\n ImageSlicer.executeTask();\n\n return result;\n }\n}\n","import {\n DisplayObject,\n GradientType,\n LinearGradient,\n Pattern,\n RadialGradient,\n Rect,\n Tuple3Number,\n UnitType,\n computeLinearGradient,\n computeRadialGradient,\n parseTransform,\n parsedTransformToMat4,\n Image,\n OffscreenCanvasCreator,\n ElementEvent,\n type CanvasContext,\n type GlobalRuntime,\n} from '@antv/g-lite';\nimport { isString } from '@antv/util';\nimport { mat4 } from 'gl-matrix';\nimport { RefCountCache } from './RefCountCache';\nimport { type SliceResult, ImageSlicer } from './ImageSlicer';\n\nexport interface ImageCache extends Partial<SliceResult> {\n img: HTMLImageElement;\n /** [width, height] */\n size: [number, number];\n downSampled?: ImageBitmap | HTMLImageElement;\n downSamplingRate?: number;\n}\n\nconst IMAGE_CACHE = new RefCountCache<ImageCache>();\nIMAGE_CACHE.onRefAdded = function onRefAdded(\n this: RefCountCache<ImageCache>,\n ref,\n) {\n ref.addEventListener(\n ElementEvent.DESTROY,\n () => {\n this.releaseRef(ref);\n },\n { once: true },\n );\n};\n\nexport type GradientParams = (LinearGradient & RadialGradient) & {\n width: number;\n height: number;\n /**\n * Top-left corner\n */\n min: [number, number];\n type: GradientType;\n};\n\nexport class ImagePool {\n static isSupportTile = !!OffscreenCanvasCreator.createCanvas();\n private gradientCache: Record<string, CanvasGradient> = {};\n private patternCache: Record<string, CanvasPattern> = {};\n\n constructor(\n public context: CanvasContext,\n private runtime: GlobalRuntime,\n ) {}\n\n getImageSync(\n src: Image['attributes']['src'],\n ref: DisplayObject,\n callback?: (cache: ImageCache) => void,\n ): ImageCache | null {\n const imageSource = isString(src) ? src : src.src;\n\n if (IMAGE_CACHE.has(imageSource)) {\n const imageCache = IMAGE_CACHE.get(imageSource, ref);\n\n if (imageCache.img.complete) {\n callback?.(imageCache);\n\n return imageCache;\n }\n }\n\n this.getOrCreateImage(src, ref)\n .then((cache) => {\n callback?.(cache);\n })\n .catch((reason) => {\n console.error(reason);\n });\n\n return null;\n }\n\n getOrCreateImage(\n src: Image['attributes']['src'],\n ref: DisplayObject,\n ): Promise<ImageCache> {\n const imageSource = isString(src) ? src : src.src;\n\n if (!isString(src) && !IMAGE_CACHE.has(imageSource)) {\n const imageCache: ImageCache = {\n img: src,\n size: [src.naturalWidth || src.width, src.naturalHeight || src.height],\n tileSize: calculateImageTileSize(src),\n };\n\n IMAGE_CACHE.put(imageSource, imageCache, ref);\n }\n\n if (IMAGE_CACHE.has(imageSource)) {\n const imageCache = IMAGE_CACHE.get(imageSource, ref);\n\n if (imageCache.img.complete) {\n return Promise.resolve(imageCache);\n }\n\n return new Promise((resolve, reject) => {\n imageCache.img.addEventListener('load', () => {\n imageCache.size = [\n imageCache.img.naturalWidth || imageCache.img.width,\n imageCache.img.naturalHeight || imageCache.img.height,\n ];\n imageCache.tileSize = calculateImageTileSize(imageCache.img);\n resolve(imageCache);\n });\n\n imageCache.img.addEventListener('error', (ev) => {\n reject(ev);\n });\n });\n }\n\n return new Promise((resolve, reject) => {\n // @see https://github.com/antvis/g/issues/938\n const image = this.context.config.createImage();\n\n if (image) {\n const imageCache: ImageCache = {\n img: image,\n size: [0, 0],\n tileSize: calculateImageTileSize(image),\n };\n\n IMAGE_CACHE.put(imageSource, imageCache, ref);\n\n image.onload = () => {\n imageCache.size = [\n image.naturalWidth || image.width,\n image.naturalHeight || image.height,\n ];\n imageCache.tileSize = calculateImageTileSize(imageCache.img);\n resolve(imageCache);\n };\n image.onerror = (ev) => {\n reject(ev);\n };\n image.crossOrigin = 'Anonymous';\n image.src = imageSource;\n }\n });\n }\n\n async createDownSampledImage(\n src: Image['attributes']['src'],\n ref: DisplayObject,\n ): Promise<ImageCache> {\n const imageCache = await this.getOrCreateImage(src, ref);\n if (typeof imageCache.downSamplingRate !== 'undefined') {\n return imageCache;\n }\n\n const { enableLargeImageOptimization } = this.context.config;\n const { maxDownSampledImageSize = 2048, downSamplingRateThreshold = 0.5 } =\n typeof enableLargeImageOptimization === 'boolean'\n ? {}\n : enableLargeImageOptimization;\n const createImageBitmapFunc = this.runtime.globalThis\n .createImageBitmap as typeof createImageBitmap;\n const [originWidth, originHeight] = imageCache.size;\n let resizedImage: ImageCache['downSampled'] = imageCache.img;\n let downSamplingRate = Math.min(\n (maxDownSampledImageSize + maxDownSampledImageSize) /\n (originWidth + originHeight),\n Math.max(0.01, Math.min(downSamplingRateThreshold, 0.5)),\n );\n\n let updateCache: ImageCache = {\n ...imageCache,\n downSamplingRate,\n };\n\n IMAGE_CACHE.update(imageCache.img.src, updateCache, ref);\n\n if (createImageBitmapFunc) {\n try {\n resizedImage = await createImageBitmapFunc(imageCache.img, {\n resizeWidth: originWidth * downSamplingRate,\n resizeHeight: originHeight * downSamplingRate,\n });\n } catch {\n downSamplingRate = 1;\n }\n } else {\n downSamplingRate = 1;\n }\n\n updateCache = {\n ...this.getImageSync(src, ref),\n downSampled: resizedImage,\n downSamplingRate,\n };\n\n IMAGE_CACHE.update(imageCache.img.src, updateCache, ref);\n\n return updateCache;\n }\n\n async createImageTiles(\n src: Image['attributes']['src'],\n tiles: [number, number][],\n rerender: () => void,\n ref: DisplayObject,\n ): Promise<ImageCache> {\n const imageCache = await this.getOrCreateImage(src, ref);\n const { requestAnimationFrame, cancelAnimationFrame } =\n ref.ownerDocument.defaultView;\n\n ImageSlicer.api = {\n requestAnimationFrame,\n cancelAnimationFrame,\n createCanvas: () => OffscreenCanvasCreator.createCanvas(),\n };\n\n const updateCache: ImageCache = {\n ...imageCache,\n ...ImageSlicer.sliceImage(\n imageCache.img,\n imageCache.tileSize[0],\n imageCache.tileSize[0],\n rerender,\n ),\n };\n\n IMAGE_CACHE.update(imageCache.img.src, updateCache, ref);\n\n return updateCache;\n }\n\n releaseImage(src: Image['attributes']['src'], ref: DisplayObject) {\n IMAGE_CACHE.release(isString(src) ? src : src.src, ref);\n }\n\n releaseImageRef(ref: DisplayObject) {\n IMAGE_CACHE.releaseRef(ref);\n }\n\n getOrCreatePatternSync(\n object: DisplayObject,\n pattern: Pattern,\n context: CanvasRenderingContext2D,\n $offscreenCanvas: HTMLCanvasElement,\n dpr: number,\n min: Tuple3Number,\n callback: () => void,\n ) {\n const patternKey = this.generatePatternKey(pattern);\n if (patternKey && this.patternCache[patternKey]) {\n return this.patternCache[patternKey];\n }\n\n const { image, repetition, transform } = pattern;\n let src: CanvasImageSource;\n let needScaleWithDPR = false;\n // Image URL\n if (isString(image)) {\n const imageCache = this.getImageSync(image, object, callback);\n src = imageCache?.img;\n } else if ($offscreenCanvas) {\n src = $offscreenCanvas;\n needScaleWithDPR = true;\n } else {\n src = image as CanvasImageSource;\n }\n\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createPattern\n const canvasPattern = src && context.createPattern(src, repetition);\n\n if (canvasPattern) {\n let mat: mat4;\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasPattern/setTransform\n if (transform) {\n mat = parsedTransformToMat4(\n parseTransform(transform),\n new DisplayObject({}),\n );\n } else {\n mat = mat4.identity(mat4.create());\n }\n\n if (needScaleWithDPR) {\n mat4.scale(mat, mat, [1 / dpr, 1 / dpr, 1]);\n }\n\n canvasPattern.setTransform({\n a: mat[0],\n b: mat[1],\n c: mat[4],\n d: mat[5],\n e: mat[12] + min[0],\n f: mat[13] + min[1],\n });\n }\n\n if (patternKey && canvasPattern) {\n this.patternCache[patternKey] = canvasPattern;\n }\n\n return canvasPattern;\n }\n\n getOrCreateGradient(\n params: GradientParams,\n context: CanvasRenderingContext2D,\n ) {\n const key = this.generateGradientKey(params);\n const { type, steps, min, width, height, angle, cx, cy, size } = params;\n\n if (this.gradientCache[key]) {\n return this.gradientCache[key];\n }\n\n let gradient: CanvasGradient | null = null;\n if (type === GradientType.LinearGradient) {\n const { x1, y1, x2, y2 } = computeLinearGradient(\n min,\n width,\n height,\n angle,\n );\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createLinearGradient\n gradient = context.createLinearGradient(x1, y1, x2, y2);\n } else if (type === GradientType.RadialGradient) {\n const { x, y, r } = computeRadialGradient(\n min,\n width,\n height,\n cx,\n cy,\n size,\n );\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createRadialGradient\n gradient = context.createRadialGradient(x, y, 0, x, y, r);\n }\n\n if (gradient) {\n steps.forEach(({ offset, color }) => {\n if (offset.unit === UnitType.kPercentage) {\n gradient?.addColorStop(offset.value / 100, color.toString());\n }\n });\n\n this.gradientCache[key] = gradient;\n }\n\n return this.gradientCache[key];\n }\n\n private generateGradientKey(params: GradientParams): string {\n const { type, min, width, height, steps, angle, cx, cy, size } = params;\n return `gradient-${type}-${angle?.toString() || 0}-${cx?.toString() || 0}-${\n cy?.toString() || 0\n }-${size?.toString() || 0}-${min[0]}-${min[1]}-${width}-${height}-${steps\n .map(({ offset, color }) => `${offset}${color}`)\n .join('-')}`;\n }\n\n private generatePatternKey(pattern: Pattern) {\n const { image, repetition } = pattern;\n // only generate cache for Image\n if (isString(image)) {\n return `pattern-${image}-${repetition}`;\n }\n if ((image as Rect).nodeName === 'rect') {\n return `pattern-${(image as Rect).entity}-${repetition}`;\n }\n }\n}\n\nfunction calculateImageTileSize(img: HTMLImageElement): [number, number] {\n if (!img.complete) {\n return [0, 0];\n }\n\n const [width, height] = [\n img.naturalWidth || img.width,\n img.naturalHeight || img.height,\n ];\n\n let tileSize = 256;\n\n [256, 512].forEach((size) => {\n const rows = Math.ceil(height / size);\n const cols = Math.ceil(width / size);\n\n if (rows * cols < 1e3) {\n tileSize = size;\n }\n });\n\n return [tileSize, tileSize];\n}\n","import type {\n FederatedEvent,\n Image,\n MutationEvent,\n RenderingPlugin,\n RenderingPluginContext,\n DisplayObject,\n} from '@antv/g-lite';\nimport { ElementEvent, Shape } from '@antv/g-lite';\nimport { isString } from '@antv/util';\nimport { ImagePool } from './ImagePool';\n\nexport class LoadImagePlugin implements RenderingPlugin {\n static tag = 'LoadImage';\n\n apply(context: RenderingPluginContext & { imagePool: ImagePool }) {\n const { renderingService, renderingContext, imagePool } = context;\n const canvas = renderingContext.root.ownerDocument.defaultView;\n\n const calculateWithAspectRatio = (\n object: Image,\n imageWidth: number,\n imageHeight: number,\n ) => {\n const { width, height } = object.parsedStyle;\n if (width && !height) {\n object.setAttribute('height', (imageHeight / imageWidth) * width);\n } else if (!width && height) {\n object.setAttribute('width', (imageWidth / imageHeight) * height);\n }\n };\n\n const handleMounted = (e: FederatedEvent) => {\n const object = e.target as Image;\n const { nodeName, attributes } = object;\n if (nodeName === Shape.IMAGE) {\n const { src, keepAspectRatio } = attributes;\n\n imagePool.getImageSync(\n src,\n object as DisplayObject,\n ({ img: { width, height } }) => {\n if (keepAspectRatio) {\n calculateWithAspectRatio(object, width, height);\n }\n\n // set dirty rectangle flag\n object.renderable.dirty = true;\n renderingService.dirtify();\n },\n );\n }\n };\n\n const handleAttributeChanged = (e: MutationEvent) => {\n const object = e.target as Image;\n const { attrName, prevValue, newValue } = e;\n\n if (object.nodeName !== Shape.IMAGE || attrName !== 'src') {\n return;\n }\n\n if (prevValue !== newValue) {\n imagePool.releaseImage(\n prevValue as Image['attributes']['src'],\n object as DisplayObject,\n );\n }\n\n if (isString(newValue)) {\n imagePool\n .getOrCreateImage(newValue, object as DisplayObject)\n .then(({ img: { width, height } }) => {\n if (object.attributes.keepAspectRatio) {\n calculateWithAspectRatio(object, width, height);\n }\n\n // set dirty rectangle flag\n object.renderable.dirty = true;\n renderingService.dirtify();\n })\n .catch(() => {\n //\n });\n }\n };\n\n renderingService.hooks.init.tap(LoadImagePlugin.tag, () => {\n canvas.addEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.addEventListener(\n ElementEvent.ATTR_MODIFIED,\n handleAttributeChanged,\n );\n });\n\n renderingService.hooks.destroy.tap(LoadImagePlugin.tag, () => {\n canvas.removeEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.removeEventListener(\n ElementEvent.ATTR_MODIFIED,\n handleAttributeChanged,\n );\n });\n }\n}\n","import { AbstractRendererPlugin, type GlobalRuntime } from '@antv/g-lite';\nimport { ImagePool, type ImageCache } from './ImagePool';\nimport { LoadImagePlugin } from './LoadImagePlugin';\n\nexport { ImagePool, type ImageCache };\n\nexport class Plugin extends AbstractRendererPlugin {\n name = 'image-loader';\n init(runtime: GlobalRuntime): void {\n // @ts-ignore\n this.context.imagePool = new ImagePool(this.context, runtime);\n this.addRenderingPlugin(new LoadImagePlugin());\n }\n destroy(): void {\n this.removeAllRenderingPlugins();\n }\n}\n"],"names":["RefCountCache","_classCallCheck","cacheStore","Map","_createClass","key","value","onRefAdded","ref","has","put","item","set","counter","Set","entity","get","cacheItem","add","update","_objectSpread","release","size","releaseRef","_this","Array","from","keys","forEach","getSize","clear","tasks","nextFrameTasks","ImageSlicer","stop","api","arguments","length","undefined","rafId","cancelAnimationFrame","executeTask","task","splice","TASK_NUM_PER_FRAME","requestAnimationFrame","sliceImage","image","sliceWidth","sliceHeight","rerender","overlap","imageWidth","naturalWidth","width","imageHeight","naturalHeight","height","strideW","strideH","gridCols","Math","ceil","gridRows","result","tileSize","gridSize","tiles","fill","map","_loop","row","_loop2","col","push","startX","startY","_ref","min","tempSliceWidth","tempSliceHeight","sliceCanvas","createCanvas","sliceCtx","getContext","drawImage","x","y","tileX","tileY","data","IMAGE_CACHE","addEventListener","ElementEvent","DESTROY","once","ImagePool","context","runtime","gradientCache","patternCache","getImageSync","src","callback","imageSource","isString","imageCache","img","complete","getOrCreateImage","then","cache","reason","console","error","_this2","calculateImageTileSize","Promise","resolve","reject","ev","config","createImage","onload","onerror","crossOrigin","_createDownSampledImage","_asyncToGenerator","_regeneratorRuntime","mark","_callee","enableLargeImageOptimization","_ref$maxDownSampledIm","maxDownSampledImageSize","_ref$downSamplingRate","downSamplingRateThreshold","createImageBitmapFunc","_imageCache$size","originWidth","originHeight","resizedImage","downSamplingRate","updateCache","wrap","_context","prev","next","sent","abrupt","globalThis","createImageBitmap","_slicedToArray","max","resizeWidth","resizeHeight","_t","downSampled","createDownSampledImage","_x","_x2","apply","_createImageTiles","_callee2","_ref$ownerDocument$de","_context2","ownerDocument","defaultView","OffscreenCanvasCreator","createImageTiles","_x3","_x4","_x5","_x6","releaseImage","releaseImageRef","getOrCreatePatternSync","object","pattern","$offscreenCanvas","dpr","patternKey","generatePatternKey","repetition","transform","needScaleWithDPR","canvasPattern","createPattern","mat","parsedTransformToMat4","parseTransform","DisplayObject","mat4","identity","create","scale","setTransform","a","b","c","d","e","f","getOrCreateGradient","params","generateGradientKey","type","steps","angle","cx","cy","gradient","GradientType","LinearGradient","_computeLinearGradien","computeLinearGradient","x1","y1","x2","y2","createLinearGradient","RadialGradient","_computeRadialGradien","computeRadialGradient","r","createRadialGradient","_ref2","offset","color","unit","UnitType","kPercentage","_gradient","addColorStop","toString","concat","_ref3","join","nodeName","isSupportTile","rows","cols","LoadImagePlugin","renderingService","renderingContext","imagePool","canvas","root","calculateWithAspectRatio","_object$parsedStyle","parsedStyle","setAttribute","handleMounted","target","attributes","Shape","IMAGE","keepAspectRatio","_ref$img","renderable","dirty","dirtify","handleAttributeChanged","attrName","prevValue","newValue","_ref2$img","hooks","init","tap","tag","MOUNTED","ATTR_MODIFIED","destroy","removeEventListener","Plugin","_AbstractRendererPlug","_len","args","_key","_callSuper","name","_inherits","addRenderingPlugin","removeAllRenderingPlugins","AbstractRendererPlugin"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,IAAaA,aAAa,gBAAA,YAAA;AAAA,EAAA,SAAAA,aAAA,GAAA;AAAAC,IAAAA,eAAA,OAAAD,aAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CAChBE,UAAU,GAAG,IAAIC,GAAG,EAGzB,CAAA;AAAA,GAAA;EAAA,OAAAC,YAAA,CAAAJ,aAAA,EAAA,CAAA;IAAAK,GAAA,EAAA,YAAA;AAAAC,IAAAA,KAAA,EAEH,SAAAC,UAAUA,CAACC,GAAkB,EAAE,EAAC;AAAC,GAAA,EAAA;IAAAH,GAAA,EAAA,KAAA;AAAAC,IAAAA,KAAA,EAEjC,SAAAG,GAAGA,CAACJ,GAAW,EAAE;AACf,MAAA,OAAO,IAAI,CAACH,UAAU,CAACO,GAAG,CAACJ,GAAG,CAAC,CAAA;AACjC,KAAA;AAAC,GAAA,EAAA;IAAAA,GAAA,EAAA,KAAA;IAAAC,KAAA,EAED,SAAAI,GAAGA,CAACL,GAAW,EAAEM,IAAgB,EAAEH,GAAkB,EAAE;MACrD,IAAI,IAAI,CAACN,UAAU,CAACO,GAAG,CAACJ,GAAG,CAAC,EAAE;AAC5B,QAAA,OAAO,KAAK,CAAA;AACd,OAAA;AAEA,MAAA,IAAI,CAACH,UAAU,CAACU,GAAG,CAACP,GAAG,EAAE;AACvBC,QAAAA,KAAK,EAAEK,IAAI;QACXE,OAAO,EAAE,IAAIC,GAAG,CAAC,CAACN,GAAG,CAACO,MAAM,CAAC,CAAA;AAC/B,OAAC,CAAC,CAAA;AACF,MAAA,IAAI,CAACR,UAAU,CAACC,GAAG,CAAC,CAAA;AAEpB,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAAC,GAAA,EAAA;IAAAH,GAAA,EAAA,KAAA;AAAAC,IAAAA,KAAA,EAED,SAAAU,GAAGA,CAACX,GAAW,EAAEG,GAAkB,EAAE;MACnC,IAAMS,SAAS,GAAG,IAAI,CAACf,UAAU,CAACc,GAAG,CAACX,GAAG,CAAC,CAAA;MAC1C,IAAI,CAACY,SAAS,EAAE;AACd,QAAA,OAAO,IAAI,CAAA;AACb,OAAA;MAEA,IAAI,CAACA,SAAS,CAACJ,OAAO,CAACJ,GAAG,CAACD,GAAG,CAACO,MAAM,CAAC,EAAE;QACtCE,SAAS,CAACJ,OAAO,CAACK,GAAG,CAACV,GAAG,CAACO,MAAM,CAAC,CAAA;AACjC,QAAA,IAAI,CAACR,UAAU,CAACC,GAAG,CAAC,CAAA;AACtB,OAAA;MAEA,OAAOS,SAAS,CAACX,KAAK,CAAA;AACxB,KAAA;AAAC,GAAA,EAAA;IAAAD,GAAA,EAAA,QAAA;IAAAC,KAAA,EAED,SAAAa,MAAMA,CAACd,GAAW,EAAEC,KAAiB,EAAEE,GAAkB,EAAE;MACzD,IAAMS,SAAS,GAAG,IAAI,CAACf,UAAU,CAACc,GAAG,CAACX,GAAG,CAAC,CAAA;MAC1C,IAAI,CAACY,SAAS,EAAE;AACd,QAAA,OAAO,KAAK,CAAA;AACd,OAAA;AAEAA,MAAAA,SAAS,CAACX,KAAK,GAAAc,aAAA,CAAAA,aAAA,CAAQH,EAAAA,EAAAA,SAAS,CAACX,KAAK,CAAKA,EAAAA,KAAK,CAAE,CAAA;MAClD,IAAI,CAACW,SAAS,CAACJ,OAAO,CAACJ,GAAG,CAACD,GAAG,CAACO,MAAM,CAAC,EAAE;QACtCE,SAAS,CAACJ,OAAO,CAACK,GAAG,CAACV,GAAG,CAACO,MAAM,CAAC,CAAA;AACjC,QAAA,IAAI,CAACR,UAAU,CAACC,GAAG,CAAC,CAAA;AACtB,OAAA;AAEA,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAAC,GAAA,EAAA;IAAAH,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAED,SAAAe,OAAOA,CAAChB,GAAW,EAAEG,GAAkB,EAAE;MACvC,IAAMS,SAAS,GAAG,IAAI,CAACf,UAAU,CAACc,GAAG,CAACX,GAAG,CAAC,CAAA;MAC1C,IAAI,CAACY,SAAS,EAAE;AACd,QAAA,OAAO,KAAK,CAAA;AACd,OAAA;AAEAA,MAAAA,SAAS,CAACJ,OAAO,CAAA,QAAA,CAAO,CAACL,GAAG,CAACO,MAAM,CAAC,CAAA;AAEpC,MAAA,IAAIE,SAAS,CAACJ,OAAO,CAACS,IAAI,IAAI,CAAC,EAAE;AAC/B,QAAA,IAAI,CAACpB,UAAU,CAAO,QAAA,CAAA,CAACG,GAAG,CAAC,CAAA;AAC7B,OAAA;AAEA,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAAC,GAAA,EAAA;IAAAA,GAAA,EAAA,YAAA;AAAAC,IAAAA,KAAA,EAED,SAAAiB,UAAUA,CAACf,GAAkB,EAAE;AAAA,MAAA,IAAAgB,KAAA,GAAA,IAAA,CAAA;AAC7BC,MAAAA,KAAK,CAACC,IAAI,CAAC,IAAI,CAACxB,UAAU,CAACyB,IAAI,EAAE,CAAC,CAACC,OAAO,CAAC,UAACvB,GAAG,EAAK;AAClDmB,QAAAA,KAAI,CAACH,OAAO,CAAChB,GAAG,EAAEG,GAAG,CAAC,CAAA;AACxB,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAH,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAED,SAAAuB,OAAOA,GAAG;AACR,MAAA,OAAO,IAAI,CAAC3B,UAAU,CAACoB,IAAI,CAAA;AAC7B,KAAA;AAAC,GAAA,EAAA;IAAAjB,GAAA,EAAA,OAAA;AAAAC,IAAAA,KAAA,EAED,SAAAwB,KAAKA,GAAG;AACN,MAAA,IAAI,CAAC5B,UAAU,CAAC4B,KAAK,EAAE,CAAA;AACzB,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,EAAA;;ACpFH,IAAMC,KAAqB,GAAG,EAAE,CAAA;AAChC,IAAIC,cAA8B,GAAG,EAAE,CAAA;AAgCvC,IAAaC,WAAW,gBAAA,YAAA;AAAA,EAAA,SAAAA,WAAA,GAAA;AAAAhC,IAAAA,eAAA,OAAAgC,WAAA,CAAA,CAAA;AAAA,GAAA;EAAA,OAAA7B,YAAA,CAAA6B,WAAA,EAAA,IAAA,EAAA,CAAA;IAAA5B,GAAA,EAAA,MAAA;AAAAC,IAAAA,KAAA,EAKtB,SAAO4B,IAAIA,GAAwB;AAAA,MAAA,IAAvBC,GAAG,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAGH,CAAAA,CAAAA,GAAAA,WAAW,CAACE,GAAG,CAAA;MAC/B,IAAIF,WAAW,CAACM,KAAK,EAAE;AACrBJ,QAAAA,GAAG,CAACK,oBAAoB,CAACP,WAAW,CAACM,KAAK,CAAC,CAAA;QAC3CN,WAAW,CAACM,KAAK,GAAG,IAAI,CAAA;AAC1B,OAAA;AACF,KAAA;AAAC,GAAA,EAAA;IAAAlC,GAAA,EAAA,aAAA;AAAAC,IAAAA,KAAA,EAED,SAAOmC,WAAWA,GAAwB;AAAA,MAAA,IAAvBN,GAAG,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAGH,CAAAA,CAAAA,GAAAA,WAAW,CAACE,GAAG,CAAA;MACtC,IAAIJ,KAAK,CAACM,MAAM,IAAI,CAAC,IAAIL,cAAc,CAACK,MAAM,IAAI,CAAC,EAAE;AACnD,QAAA,OAAA;AACF,OAAA;AAEAL,MAAAA,cAAc,CAACJ,OAAO,CAAC,UAACc,IAAI,EAAA;QAAA,OAAKA,IAAI,EAAE,CAAA;OAAC,CAAA,CAAA;MACxCV,cAAc,GAAGD,KAAK,CAACY,MAAM,CAAC,CAAC,EAAEV,WAAW,CAACW,kBAAkB,CAAC,CAAA;AAEhEX,MAAAA,WAAW,CAACM,KAAK,GAAGJ,GAAG,CAACU,qBAAqB,CAAC,YAAM;AAClDZ,QAAAA,WAAW,CAACQ,WAAW,CAACN,GAAG,CAAC,CAAA;AAC9B,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAA9B,GAAA,EAAA,YAAA;IAAAC,KAAA,EAED,SAAOwC,UAAUA,CACfC,KAAuB,EACvBC,UAAkB,EAClBC,WAAmB,EACnBC,QAAoB,EAGpB;AAAA,MAAA,IAFAC,OAAO,GAAAf,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC,CAAA;AAAA,MAAA,IACXD,GAAG,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAGH,CAAAA,CAAAA,GAAAA,WAAW,CAACE,GAAG,CAAA;MAErB,IAAMiB,UAAU,GAAGL,KAAK,CAACM,YAAY,IAAIN,KAAK,CAACO,KAAK,CAAA;MACpD,IAAMC,WAAW,GAAGR,KAAK,CAACS,aAAa,IAAIT,KAAK,CAACU,MAAM,CAAA;;AAEvD;AACA,MAAA,IAAMC,OAAO,GAAGV,UAAU,GAAGG,OAAO,CAAA;AACpC,MAAA,IAAMQ,OAAO,GAAGV,WAAW,GAAGE,OAAO,CAAA;;AAErC;MACA,IAAMS,QAAQ,GAAGC,IAAI,CAACC,IAAI,CAACV,UAAU,GAAGM,OAAO,CAAC,CAAA;MAChD,IAAMK,QAAQ,GAAGF,IAAI,CAACC,IAAI,CAACP,WAAW,GAAGI,OAAO,CAAC,CAAA;AAEjD,MAAA,IAAMK,MAAmB,GAAG;AAC1BC,QAAAA,QAAQ,EAAE,CAACjB,UAAU,EAAEC,WAAW,CAAC;AACnCiB,QAAAA,QAAQ,EAAE,CAACH,QAAQ,EAAEH,QAAQ,CAAC;AAC9BO,QAAAA,KAAK,EAAE1C,KAAK,CAACsC,QAAQ,CAAC,CACnBK,IAAI,CAAC,IAAI,CAAC,CACVC,GAAG,CAAC,YAAA;UAAA,OAAM5C,KAAK,CAACmC,QAAQ,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC,CAAA;SAAgC,CAAA;OACxE,CAAA;;AAED;AAAA,MAAA,IAAAE,KAAA,GAAA,SAAAA,KAAAC,CAAAA,GAAA,EACyC;AAAA,QAAA,IAAAC,MAAA,GAAA,SAAAA,MAAAC,CAAAA,GAAA,EACE;UACvC1C,KAAK,CAAC2C,IAAI,CAAC,YAAM;AACf;AACA,YAAA,IAAMC,MAAM,GAAGF,GAAG,GAAGf,OAAO,CAAA;AAC5B,YAAA,IAAMkB,MAAM,GAAGL,GAAG,GAAGZ,OAAO,CAAA;;AAE5B;YACA,IAAAkB,IAAA,GAA0C,CACxChB,IAAI,CAACiB,GAAG,CAAC9B,UAAU,EAAEI,UAAU,GAAGuB,MAAM,CAAC,EACzCd,IAAI,CAACiB,GAAG,CAAC7B,WAAW,EAAEM,WAAW,GAAGqB,MAAM,CAAC,CAC5C;AAHMG,cAAAA,cAAc,GAAAF,IAAA,CAAA,CAAA,CAAA;AAAEG,cAAAA,eAAe,GAAAH,IAAA,CAAA,CAAA,CAAA,CAAA;;AAKtC;AACA,YAAA,IAAMI,WAAW,GAAG9C,GAAG,CAAC+C,YAAY,EAAE,CAAA;YACtCD,WAAW,CAAC3B,KAAK,GAAGN,UAAU,CAAA;YAC9BiC,WAAW,CAACxB,MAAM,GAAGR,WAAW,CAAA;AAChC,YAAA,IAAMkC,QAAQ,GAAGF,WAAW,CAACG,UAAU,CAAC,IAAI,CAAC,CAAA;;AAE7C;YACAD,QAAQ,CAACE,SAAS,CAChBtC,KAAK,EACL4B,MAAM,EACNC,MAAM,EACNG,cAAc,EACdC,eAAe,EACf,CAAC,EACD,CAAC,EACDD,cAAc,EACdC,eACF,CAAC,CAAA;;AAED;YACAhB,MAAM,CAACG,KAAK,CAACI,GAAG,CAAC,CAACE,GAAG,CAAC,GAAG;AACvBa,cAAAA,CAAC,EAAEX,MAAM;AACTY,cAAAA,CAAC,EAAEX,MAAM;AACTY,cAAAA,KAAK,EAAEf,GAAG;AACVgB,cAAAA,KAAK,EAAElB,GAAG;AACVmB,cAAAA,IAAI,EAAET,WAAAA;aACP,CAAA;AAED/B,YAAAA,QAAQ,EAAE,CAAA;AACZ,WAAC,CAAC,CAAA;SACH,CAAA;QA1CD,KAAK,IAAIuB,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGb,QAAQ,EAAEa,GAAG,EAAE,EAAA;AAAAD,UAAAA,MAAA,CAAAC,GAAA,CAAA,CAAA;AAAA,SAAA;OA2CxC,CAAA;MA5CD,KAAK,IAAIF,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGR,QAAQ,EAAEQ,GAAG,EAAE,EAAA;AAAAD,QAAAA,KAAA,CAAAC,GAAA,CAAA,CAAA;AAAA,OAAA;MA8CvCtC,WAAW,CAACC,IAAI,EAAE,CAAA;MAClBD,WAAW,CAACQ,WAAW,EAAE,CAAA;AAEzB,MAAA,OAAOuB,MAAM,CAAA;AACf,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,EAAA,CAAA;AAvGU/B,WAAW,CAEfW,kBAAkB,GAAG,EAAE;;ACHhC,IAAM+C,WAAW,GAAG,IAAI3F,aAAa,EAAc,CAAA;AACnD2F,WAAW,CAACpF,UAAU,GAAG,SAASA,UAAUA,CAE1CC,GAAG,EACH;AAAA,EAAA,IAAAgB,KAAA,GAAA,IAAA,CAAA;AACAhB,EAAAA,GAAG,CAACoF,gBAAgB,CAClBC,YAAY,CAACC,OAAO,EACpB,YAAM;AACJtE,IAAAA,KAAI,CAACD,UAAU,CAACf,GAAG,CAAC,CAAA;AACtB,GAAC,EACD;AAAEuF,IAAAA,IAAI,EAAE,IAAA;AAAK,GACf,CAAC,CAAA;AACH,CAAC,CAAA;AAYD,IAAaC,SAAS,gBAAA,YAAA;AAKpB,EAAA,SAAAA,SACSC,CAAAA,OAAsB,EACrBC,OAAsB,EAC9B;AAAAjG,IAAAA,eAAA,OAAA+F,SAAA,CAAA,CAAA;IAAA,IANMG,CAAAA,aAAa,GAAmC,EAAE,CAAA;IAAA,IAClDC,CAAAA,YAAY,GAAkC,EAAE,CAAA;IAAA,IAG/CH,CAAAA,OAAsB,GAAtBA,OAAsB,CAAA;IAAA,IACrBC,CAAAA,OAAsB,GAAtBA,OAAsB,CAAA;AAC7B,GAAA;EAAC,OAAA9F,YAAA,CAAA4F,SAAA,EAAA,CAAA;IAAA3F,GAAA,EAAA,cAAA;IAAAC,KAAA,EAEJ,SAAA+F,YAAYA,CACVC,GAA+B,EAC/B9F,GAAkB,EAClB+F,QAAsC,EACnB;MACnB,IAAMC,WAAW,GAAGC,QAAQ,CAACH,GAAG,CAAC,GAAGA,GAAG,GAAGA,GAAG,CAACA,GAAG,CAAA;AAEjD,MAAA,IAAIX,WAAW,CAAClF,GAAG,CAAC+F,WAAW,CAAC,EAAE;QAChC,IAAME,UAAU,GAAGf,WAAW,CAAC3E,GAAG,CAACwF,WAAW,EAAEhG,GAAG,CAAC,CAAA;AAEpD,QAAA,IAAIkG,UAAU,CAACC,GAAG,CAACC,QAAQ,EAAE;AAC3BL,UAAAA,QAAQ,aAARA,QAAQ,KAAA,KAAA,CAAA,IAARA,QAAQ,CAAGG,UAAU,CAAC,CAAA;AAEtB,UAAA,OAAOA,UAAU,CAAA;AACnB,SAAA;AACF,OAAA;AAEA,MAAA,IAAI,CAACG,gBAAgB,CAACP,GAAG,EAAE9F,GAAG,CAAC,CAC5BsG,IAAI,CAAC,UAACC,KAAK,EAAK;AACfR,QAAAA,QAAQ,aAARA,QAAQ,KAAA,KAAA,CAAA,IAARA,QAAQ,CAAGQ,KAAK,CAAC,CAAA;AACnB,OAAC,CAAC,CAAA,OAAA,CACI,CAAC,UAACC,MAAM,EAAK;AACjBC,QAAAA,OAAO,CAACC,KAAK,CAACF,MAAM,CAAC,CAAA;AACvB,OAAC,CAAC,CAAA;AAEJ,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAAC,GAAA,EAAA;IAAA3G,GAAA,EAAA,kBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAuG,gBAAgBA,CACdP,GAA+B,EAC/B9F,GAAkB,EACG;AAAA,MAAA,IAAA2G,MAAA,GAAA,IAAA,CAAA;MACrB,IAAMX,WAAW,GAAGC,QAAQ,CAACH,GAAG,CAAC,GAAGA,GAAG,GAAGA,GAAG,CAACA,GAAG,CAAA;AAEjD,MAAA,IAAI,CAACG,QAAQ,CAACH,GAAG,CAAC,IAAI,CAACX,WAAW,CAAClF,GAAG,CAAC+F,WAAW,CAAC,EAAE;AACnD,QAAA,IAAME,UAAsB,GAAG;AAC7BC,UAAAA,GAAG,EAAEL,GAAG;AACRhF,UAAAA,IAAI,EAAE,CAACgF,GAAG,CAACjD,YAAY,IAAIiD,GAAG,CAAChD,KAAK,EAAEgD,GAAG,CAAC9C,aAAa,IAAI8C,GAAG,CAAC7C,MAAM,CAAC;UACtEQ,QAAQ,EAAEmD,sBAAsB,CAACd,GAAG,CAAA;SACrC,CAAA;QAEDX,WAAW,CAACjF,GAAG,CAAC8F,WAAW,EAAEE,UAAU,EAAElG,GAAG,CAAC,CAAA;AAC/C,OAAA;AAEA,MAAA,IAAImF,WAAW,CAAClF,GAAG,CAAC+F,WAAW,CAAC,EAAE;QAChC,IAAME,WAAU,GAAGf,WAAW,CAAC3E,GAAG,CAACwF,WAAW,EAAEhG,GAAG,CAAC,CAAA;AAEpD,QAAA,IAAIkG,WAAU,CAACC,GAAG,CAACC,QAAQ,EAAE;AAC3B,UAAA,OAAOS,OAAO,CAACC,OAAO,CAACZ,WAAU,CAAC,CAAA;AACpC,SAAA;AAEA,QAAA,OAAO,IAAIW,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;AACtCb,UAAAA,WAAU,CAACC,GAAG,CAACf,gBAAgB,CAAC,MAAM,EAAE,YAAM;YAC5Cc,WAAU,CAACpF,IAAI,GAAG,CAChBoF,WAAU,CAACC,GAAG,CAACtD,YAAY,IAAIqD,WAAU,CAACC,GAAG,CAACrD,KAAK,EACnDoD,WAAU,CAACC,GAAG,CAACnD,aAAa,IAAIkD,WAAU,CAACC,GAAG,CAAClD,MAAM,CACtD,CAAA;YACDiD,WAAU,CAACzC,QAAQ,GAAGmD,sBAAsB,CAACV,WAAU,CAACC,GAAG,CAAC,CAAA;YAC5DW,OAAO,CAACZ,WAAU,CAAC,CAAA;AACrB,WAAC,CAAC,CAAA;UAEFA,WAAU,CAACC,GAAG,CAACf,gBAAgB,CAAC,OAAO,EAAE,UAAC4B,EAAE,EAAK;YAC/CD,MAAM,CAACC,EAAE,CAAC,CAAA;AACZ,WAAC,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;AACJ,OAAA;AAEA,MAAA,OAAO,IAAIH,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;AACtC;QACA,IAAMxE,KAAK,GAAGoE,MAAI,CAAClB,OAAO,CAACwB,MAAM,CAACC,WAAW,EAAE,CAAA;AAE/C,QAAA,IAAI3E,KAAK,EAAE;AACT,UAAA,IAAM2D,YAAsB,GAAG;AAC7BC,YAAAA,GAAG,EAAE5D,KAAK;AACVzB,YAAAA,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACZ2C,QAAQ,EAAEmD,sBAAsB,CAACrE,KAAK,CAAA;WACvC,CAAA;UAED4C,WAAW,CAACjF,GAAG,CAAC8F,WAAW,EAAEE,YAAU,EAAElG,GAAG,CAAC,CAAA;UAE7CuC,KAAK,CAAC4E,MAAM,GAAG,YAAM;AACnBjB,YAAAA,YAAU,CAACpF,IAAI,GAAG,CAChByB,KAAK,CAACM,YAAY,IAAIN,KAAK,CAACO,KAAK,EACjCP,KAAK,CAACS,aAAa,IAAIT,KAAK,CAACU,MAAM,CACpC,CAAA;YACDiD,YAAU,CAACzC,QAAQ,GAAGmD,sBAAsB,CAACV,YAAU,CAACC,GAAG,CAAC,CAAA;YAC5DW,OAAO,CAACZ,YAAU,CAAC,CAAA;WACpB,CAAA;AACD3D,UAAAA,KAAK,CAAC6E,OAAO,GAAG,UAACJ,EAAE,EAAK;YACtBD,MAAM,CAACC,EAAE,CAAC,CAAA;WACX,CAAA;UACDzE,KAAK,CAAC8E,WAAW,GAAG,WAAW,CAAA;UAC/B9E,KAAK,CAACuD,GAAG,GAAGE,WAAW,CAAA;AACzB,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAnG,GAAA,EAAA,wBAAA;IAAAC,KAAA,EAAA,YAAA;AAAA,MAAA,IAAAwH,uBAAA,GAAAC,iBAAA,cAAAC,mBAAA,EAAA,CAAAC,IAAA,CAED,SAAAC,OAAAA,CACE5B,GAA+B,EAC/B9F,GAAkB,EAAA;AAAA,QAAA,IAAAkG,UAAA,CAAA,CAAAyB,4BAAA,CAAA,CAAAtD,IAAA,CAAA,CAAAuD,qBAAA,CAAA,CAAAC,uBAAA,CAAA,CAAAC,qBAAA,CAAA,CAAAC,yBAAA,CAAA,CAAAC,qBAAA,CAAA,CAAAC,gBAAA,CAAA,CAAAC,WAAA,CAAA,CAAAC,YAAA,CAAA,CAAAC,YAAA,CAAA,CAAAC,gBAAA,CAAA,CAAAC,WAAA,CAAA;AAAA,QAAA,OAAAd,mBAAA,EAAA,CAAAe,IAAA,CAAA,UAAAC,QAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OAEO,IAAI,CAACrC,gBAAgB,CAACP,GAAG,EAAE9F,GAAG,CAAC,CAAA;AAAA,YAAA,KAAA,CAAA;cAAlDkG,UAAU,GAAAsC,QAAA,CAAAG,IAAA,CAAA;AAAA,cAAA,IAAA,EACZ,OAAOzC,UAAU,CAACmC,gBAAgB,KAAK,WAAW,CAAA,EAAA;AAAAG,gBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;AAAA,cAAA,OAAAF,QAAA,CAAAI,MAAA,CAAA,QAAA,EAC7C1C,UAAU,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA;AAGXyB,cAAAA,4BAA4B,GAAK,IAAI,CAAClC,OAAO,CAACwB,MAAM,CAApDU,4BAA4B,CAAA;AAAAtD,cAAAA,IAAA,GAElC,OAAOsD,4BAA4B,KAAK,SAAS,GAC7C,EAAE,GACFA,4BAA4B,EAAAC,qBAAA,GAAAvD,IAAA,CAH1BwD,uBAAuB,EAAvBA,uBAAuB,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA,EAAAE,qBAAA,GAAAzD,IAAA,CAAE0D,yBAAyB,EAAzBA,yBAAyB,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,GAAG,GAAAA,qBAAA,CAAA;AAIjEE,cAAAA,qBAAqB,GAAG,IAAI,CAACtC,OAAO,CAACmD,UAAU,CAClDC,iBAAiB,CAAA;AAAAb,cAAAA,gBAAA,GAAAc,cAAA,CACgB7C,UAAU,CAACpF,IAAI,EAA5CoH,CAAAA,CAAAA,EAAAA,WAAW,GAAAD,gBAAA,CAAEE,CAAAA,CAAAA,EAAAA,YAAY,GAAAF,gBAAA,CAAA,CAAA,CAAA,CAAA;cAC5BG,YAAuC,GAAGlC,UAAU,CAACC,GAAG,CAAA;AACxDkC,cAAAA,gBAAgB,GAAGhF,IAAI,CAACiB,GAAG,CAC7B,CAACuD,uBAAuB,GAAGA,uBAAuB,KAC/CK,WAAW,GAAGC,YAAY,CAAC,EAC9B9E,IAAI,CAAC2F,GAAG,CAAC,IAAI,EAAE3F,IAAI,CAACiB,GAAG,CAACyD,yBAAyB,EAAE,GAAG,CAAC,CACzD,CAAC,CAAA;AAEGO,cAAAA,WAAuB,GAAA1H,aAAA,CAAAA,aAAA,KACtBsF,UAAU,CAAA,EAAA,EAAA,EAAA;AACbmC,gBAAAA,gBAAgB,EAAhBA,gBAAAA;AAAgB,eAAA,CAAA,CAAA;AAGlBlD,cAAAA,WAAW,CAACxE,MAAM,CAACuF,UAAU,CAACC,GAAG,CAACL,GAAG,EAAEwC,WAAW,EAAEtI,GAAG,CAAC,CAAA;AAAC,cAAA,IAAA,CAErDgI,qBAAqB,EAAA;AAAAQ,gBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;AAAAF,cAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAAD,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OAEAV,qBAAqB,CAAC9B,UAAU,CAACC,GAAG,EAAE;gBACzD8C,WAAW,EAAEf,WAAW,GAAGG,gBAAgB;gBAC3Ca,YAAY,EAAEf,YAAY,GAAGE,gBAAAA;AAC/B,eAAC,CAAC,CAAA;AAAA,YAAA,KAAA,CAAA;cAHFD,YAAY,GAAAI,QAAA,CAAAG,IAAA,CAAA;AAAAH,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,MAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAAU,cAAAX,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAKZH,cAAAA,gBAAgB,GAAG,CAAC,CAAA;AAAC,YAAA,KAAA,CAAA;AAAAG,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,MAAA;AAAA,YAAA,KAAA,CAAA;AAGvBL,cAAAA,gBAAgB,GAAG,CAAC,CAAA;AAAC,YAAA,KAAA,CAAA;AAGvBC,cAAAA,WAAW,GAAA1H,aAAA,CAAAA,aAAA,CACN,EAAA,EAAA,IAAI,CAACiF,YAAY,CAACC,GAAG,EAAE9F,GAAG,CAAC,CAAA,EAAA,EAAA,EAAA;AAC9BoJ,gBAAAA,WAAW,EAAEhB,YAAY;AACzBC,gBAAAA,gBAAgB,EAAhBA,gBAAAA;eACD,CAAA,CAAA;AAEDlD,cAAAA,WAAW,CAACxE,MAAM,CAACuF,UAAU,CAACC,GAAG,CAACL,GAAG,EAAEwC,WAAW,EAAEtI,GAAG,CAAC,CAAA;AAAC,cAAA,OAAAwI,QAAA,CAAAI,MAAA,CAAA,QAAA,EAElDN,WAAW,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAE,QAAA,CAAA9G,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAgG,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;OACnB,CAAA,CAAA,CAAA;AAAA,MAAA,SArDK2B,sBAAsBA,CAAAC,EAAA,EAAAC,GAAA,EAAA;AAAA,QAAA,OAAAjC,uBAAA,CAAAkC,KAAA,CAAA,IAAA,EAAA5H,SAAA,CAAA,CAAA;AAAA,OAAA;AAAA,MAAA,OAAtByH,sBAAsB,CAAA;AAAA,KAAA,EAAA;AAAA,GAAA,EAAA;IAAAxJ,GAAA,EAAA,kBAAA;IAAAC,KAAA,EAAA,YAAA;AAAA,MAAA,IAAA2J,iBAAA,GAAAlC,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAuD5B,SAAAiC,QAAAA,CACE5D,GAA+B,EAC/BnC,KAAyB,EACzBjB,QAAoB,EACpB1C,GAAkB,EAAA;QAAA,IAAAkG,UAAA,EAAAyD,qBAAA,EAAAtH,qBAAA,EAAAL,oBAAA,EAAAsG,WAAA,CAAA;AAAA,QAAA,OAAAd,mBAAA,EAAA,CAAAe,IAAA,CAAA,UAAAqB,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAnB,IAAA,GAAAmB,SAAA,CAAAlB,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAkB,cAAAA,SAAA,CAAAlB,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OAEO,IAAI,CAACrC,gBAAgB,CAACP,GAAG,EAAE9F,GAAG,CAAC,CAAA;AAAA,YAAA,KAAA,CAAA;cAAlDkG,UAAU,GAAA0D,SAAA,CAAAjB,IAAA,CAAA;AAAAgB,cAAAA,qBAAA,GAEd3J,GAAG,CAAC6J,aAAa,CAACC,WAAW,EADvBzH,qBAAqB,GAAAsH,qBAAA,CAArBtH,qBAAqB,EAAEL,oBAAoB,GAAA2H,qBAAA,CAApB3H,oBAAoB,CAAA;cAGnDP,WAAW,CAACE,GAAG,GAAG;AAChBU,gBAAAA,qBAAqB,EAArBA,qBAAqB;AACrBL,gBAAAA,oBAAoB,EAApBA,oBAAoB;gBACpB0C,YAAY,EAAE,SAAdA,YAAYA,GAAA;AAAA,kBAAA,OAAQqF,sBAAsB,CAACrF,YAAY,EAAE,CAAA;AAAA,iBAAA;eAC1D,CAAA;AAEK4D,cAAAA,WAAuB,GAAA1H,aAAA,CAAAA,aAAA,CACxBsF,EAAAA,EAAAA,UAAU,CACVzE,EAAAA,WAAW,CAACa,UAAU,CACvB4D,UAAU,CAACC,GAAG,EACdD,UAAU,CAACzC,QAAQ,CAAC,CAAC,CAAC,EACtByC,UAAU,CAACzC,QAAQ,CAAC,CAAC,CAAC,EACtBf,QACF,CAAC,CAAA,CAAA;AAGHyC,cAAAA,WAAW,CAACxE,MAAM,CAACuF,UAAU,CAACC,GAAG,CAACL,GAAG,EAAEwC,WAAW,EAAEtI,GAAG,CAAC,CAAA;AAAC,cAAA,OAAA4J,SAAA,CAAAhB,MAAA,CAAA,QAAA,EAElDN,WAAW,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAsB,SAAA,CAAAlI,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAgI,QAAA,EAAA,IAAA,CAAA,CAAA;OACnB,CAAA,CAAA,CAAA;MAAA,SA7BKM,gBAAgBA,CAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,QAAA,OAAAX,iBAAA,CAAAD,KAAA,CAAA,IAAA,EAAA5H,SAAA,CAAA,CAAA;AAAA,OAAA;AAAA,MAAA,OAAhBoI,gBAAgB,CAAA;AAAA,KAAA,EAAA;AAAA,GAAA,EAAA;IAAAnK,GAAA,EAAA,cAAA;AAAAC,IAAAA,KAAA,EA+BtB,SAAAuK,YAAYA,CAACvE,GAA+B,EAAE9F,GAAkB,EAAE;AAChEmF,MAAAA,WAAW,CAACtE,OAAO,CAACoF,QAAQ,CAACH,GAAG,CAAC,GAAGA,GAAG,GAAGA,GAAG,CAACA,GAAG,EAAE9F,GAAG,CAAC,CAAA;AACzD,KAAA;AAAC,GAAA,EAAA;IAAAH,GAAA,EAAA,iBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAwK,eAAeA,CAACtK,GAAkB,EAAE;AAClCmF,MAAAA,WAAW,CAACpE,UAAU,CAACf,GAAG,CAAC,CAAA;AAC7B,KAAA;AAAC,GAAA,EAAA;IAAAH,GAAA,EAAA,wBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAyK,sBAAsBA,CACpBC,MAAqB,EACrBC,OAAgB,EAChBhF,OAAiC,EACjCiF,gBAAmC,EACnCC,GAAW,EACXrG,GAAiB,EACjByB,QAAoB,EACpB;AACA,MAAA,IAAM6E,UAAU,GAAG,IAAI,CAACC,kBAAkB,CAACJ,OAAO,CAAC,CAAA;MACnD,IAAIG,UAAU,IAAI,IAAI,CAAChF,YAAY,CAACgF,UAAU,CAAC,EAAE;AAC/C,QAAA,OAAO,IAAI,CAAChF,YAAY,CAACgF,UAAU,CAAC,CAAA;AACtC,OAAA;AAEA,MAAA,IAAQrI,KAAK,GAA4BkI,OAAO,CAAxClI,KAAK;QAAEuI,UAAU,GAAgBL,OAAO,CAAjCK,UAAU;QAAEC,SAAS,GAAKN,OAAO,CAArBM,SAAS,CAAA;AACpC,MAAA,IAAIjF,GAAsB,CAAA;MAC1B,IAAIkF,gBAAgB,GAAG,KAAK,CAAA;AAC5B;AACA,MAAA,IAAI/E,QAAQ,CAAC1D,KAAK,CAAC,EAAE;QACnB,IAAM2D,UAAU,GAAG,IAAI,CAACL,YAAY,CAACtD,KAAK,EAAEiI,MAAM,EAAEzE,QAAQ,CAAC,CAAA;AAC7DD,QAAAA,GAAG,GAAGI,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAVA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAU,CAAEC,GAAG,CAAA;OACtB,MAAM,IAAIuE,gBAAgB,EAAE;AAC3B5E,QAAAA,GAAG,GAAG4E,gBAAgB,CAAA;AACtBM,QAAAA,gBAAgB,GAAG,IAAI,CAAA;AACzB,OAAC,MAAM;AACLlF,QAAAA,GAAG,GAAGvD,KAA0B,CAAA;AAClC,OAAA;;AAEA;MACA,IAAM0I,aAAa,GAAGnF,GAAG,IAAIL,OAAO,CAACyF,aAAa,CAACpF,GAAG,EAAEgF,UAAU,CAAC,CAAA;AAEnE,MAAA,IAAIG,aAAa,EAAE;AACjB,QAAA,IAAIE,GAAS,CAAA;AACb;AACA,QAAA,IAAIJ,SAAS,EAAE;AACbI,UAAAA,GAAG,GAAGC,qBAAqB,CACzBC,cAAc,CAACN,SAAS,CAAC,EACzB,IAAIO,aAAa,CAAC,EAAE,CACtB,CAAC,CAAA;AACH,SAAC,MAAM;UACLH,GAAG,GAAGI,IAAI,CAACC,QAAQ,CAACD,IAAI,CAACE,MAAM,EAAE,CAAC,CAAA;AACpC,SAAA;AAEA,QAAA,IAAIT,gBAAgB,EAAE;AACpBO,UAAAA,IAAI,CAACG,KAAK,CAACP,GAAG,EAAEA,GAAG,EAAE,CAAC,CAAC,GAAGR,GAAG,EAAE,CAAC,GAAGA,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;AAC7C,SAAA;QAEAM,aAAa,CAACU,YAAY,CAAC;AACzBC,UAAAA,CAAC,EAAET,GAAG,CAAC,CAAC,CAAC;AACTU,UAAAA,CAAC,EAAEV,GAAG,CAAC,CAAC,CAAC;AACTW,UAAAA,CAAC,EAAEX,GAAG,CAAC,CAAC,CAAC;AACTY,UAAAA,CAAC,EAAEZ,GAAG,CAAC,CAAC,CAAC;UACTa,CAAC,EAAEb,GAAG,CAAC,EAAE,CAAC,GAAG7G,GAAG,CAAC,CAAC,CAAC;UACnB2H,CAAC,EAAEd,GAAG,CAAC,EAAE,CAAC,GAAG7G,GAAG,CAAC,CAAC,CAAA;AACpB,SAAC,CAAC,CAAA;AACJ,OAAA;MAEA,IAAIsG,UAAU,IAAIK,aAAa,EAAE;AAC/B,QAAA,IAAI,CAACrF,YAAY,CAACgF,UAAU,CAAC,GAAGK,aAAa,CAAA;AAC/C,OAAA;AAEA,MAAA,OAAOA,aAAa,CAAA;AACtB,KAAA;AAAC,GAAA,EAAA;IAAApL,GAAA,EAAA,qBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAoM,mBAAmBA,CACjBC,MAAsB,EACtB1G,OAAiC,EACjC;AACA,MAAA,IAAM5F,GAAG,GAAG,IAAI,CAACuM,mBAAmB,CAACD,MAAM,CAAC,CAAA;AAC5C,MAAA,IAAQE,IAAI,GAAqDF,MAAM,CAA/DE,IAAI;QAAEC,KAAK,GAA8CH,MAAM,CAAzDG,KAAK;QAAEhI,GAAG,GAAyC6H,MAAM,CAAlD7H,GAAG;QAAExB,KAAK,GAAkCqJ,MAAM,CAA7CrJ,KAAK;QAAEG,MAAM,GAA0BkJ,MAAM,CAAtClJ,MAAM;QAAEsJ,KAAK,GAAmBJ,MAAM,CAA9BI,KAAK;QAAEC,EAAE,GAAeL,MAAM,CAAvBK,EAAE;QAAEC,EAAE,GAAWN,MAAM,CAAnBM,EAAE;QAAE3L,IAAI,GAAKqL,MAAM,CAAfrL,IAAI,CAAA;AAE5D,MAAA,IAAI,IAAI,CAAC6E,aAAa,CAAC9F,GAAG,CAAC,EAAE;AAC3B,QAAA,OAAO,IAAI,CAAC8F,aAAa,CAAC9F,GAAG,CAAC,CAAA;AAChC,OAAA;MAEA,IAAI6M,QAA+B,GAAG,IAAI,CAAA;AAC1C,MAAA,IAAIL,IAAI,KAAKM,YAAY,CAACC,cAAc,EAAE;QACxC,IAAAC,qBAAA,GAA2BC,qBAAqB,CAC9CxI,GAAG,EACHxB,KAAK,EACLG,MAAM,EACNsJ,KACF,CAAC;UALOQ,EAAE,GAAAF,qBAAA,CAAFE,EAAE;UAAEC,EAAE,GAAAH,qBAAA,CAAFG,EAAE;UAAEC,EAAE,GAAAJ,qBAAA,CAAFI,EAAE;UAAEC,EAAE,GAAAL,qBAAA,CAAFK,EAAE,CAAA;AAMtB;AACAR,QAAAA,QAAQ,GAAGjH,OAAO,CAAC0H,oBAAoB,CAACJ,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,CAAA;AACzD,OAAC,MAAM,IAAIb,IAAI,KAAKM,YAAY,CAACS,cAAc,EAAE;AAC/C,QAAA,IAAAC,qBAAA,GAAoBC,qBAAqB,CACvChJ,GAAG,EACHxB,KAAK,EACLG,MAAM,EACNuJ,EAAE,EACFC,EAAE,EACF3L,IACF,CAAC;UAPOgE,CAAC,GAAAuI,qBAAA,CAADvI,CAAC;UAAEC,CAAC,GAAAsI,qBAAA,CAADtI,CAAC;UAAEwI,CAAC,GAAAF,qBAAA,CAADE,CAAC,CAAA;AAQf;AACAb,QAAAA,QAAQ,GAAGjH,OAAO,CAAC+H,oBAAoB,CAAC1I,CAAC,EAAEC,CAAC,EAAE,CAAC,EAAED,CAAC,EAAEC,CAAC,EAAEwI,CAAC,CAAC,CAAA;AAC3D,OAAA;AAEA,MAAA,IAAIb,QAAQ,EAAE;AACZJ,QAAAA,KAAK,CAAClL,OAAO,CAAC,UAAAqM,KAAA,EAAuB;AAAA,UAAA,IAApBC,MAAM,GAAAD,KAAA,CAANC,MAAM;YAAEC,KAAK,GAAAF,KAAA,CAALE,KAAK,CAAA;AAC5B,UAAA,IAAID,MAAM,CAACE,IAAI,KAAKC,QAAQ,CAACC,WAAW,EAAE;AAAA,YAAA,IAAAC,SAAA,CAAA;YACxC,CAAAA,SAAA,GAAArB,QAAQ,MAAA,IAAA,IAAAqB,SAAA,KAARA,KAAAA,CAAAA,IAAAA,SAAA,CAAUC,YAAY,CAACN,MAAM,CAAC5N,KAAK,GAAG,GAAG,EAAE6N,KAAK,CAACM,QAAQ,EAAE,CAAC,CAAA;AAC9D,WAAA;AACF,SAAC,CAAC,CAAA;AAEF,QAAA,IAAI,CAACtI,aAAa,CAAC9F,GAAG,CAAC,GAAG6M,QAAQ,CAAA;AACpC,OAAA;AAEA,MAAA,OAAO,IAAI,CAAC/G,aAAa,CAAC9F,GAAG,CAAC,CAAA;AAChC,KAAA;AAAC,GAAA,EAAA;IAAAA,GAAA,EAAA,qBAAA;AAAAC,IAAAA,KAAA,EAED,SAAQsM,mBAAmBA,CAACD,MAAsB,EAAU;AAC1D,MAAA,IAAQE,IAAI,GAAqDF,MAAM,CAA/DE,IAAI;QAAE/H,GAAG,GAAgD6H,MAAM,CAAzD7H,GAAG;QAAExB,KAAK,GAAyCqJ,MAAM,CAApDrJ,KAAK;QAAEG,MAAM,GAAiCkJ,MAAM,CAA7ClJ,MAAM;QAAEqJ,KAAK,GAA0BH,MAAM,CAArCG,KAAK;QAAEC,KAAK,GAAmBJ,MAAM,CAA9BI,KAAK;QAAEC,EAAE,GAAeL,MAAM,CAAvBK,EAAE;QAAEC,EAAE,GAAWN,MAAM,CAAnBM,EAAE;QAAE3L,IAAI,GAAKqL,MAAM,CAAfrL,IAAI,CAAA;MAC5D,OAAAoN,WAAAA,CAAAA,MAAA,CAAmB7B,IAAI,EAAA,GAAA,CAAA,CAAA6B,MAAA,CAAI,CAAA3B,KAAK,KAALA,IAAAA,IAAAA,KAAK,uBAALA,KAAK,CAAE0B,QAAQ,EAAE,KAAI,CAAC,EAAA,GAAA,CAAA,CAAAC,MAAA,CAAI,CAAA1B,EAAE,KAAFA,IAAAA,IAAAA,EAAE,uBAAFA,EAAE,CAAEyB,QAAQ,EAAE,KAAI,CAAC,EAAA,GAAA,CAAA,CAAAC,MAAA,CACtE,CAAAzB,EAAE,KAAFA,IAAAA,IAAAA,EAAE,uBAAFA,EAAE,CAAEwB,QAAQ,EAAE,KAAI,CAAC,EAAA,GAAA,CAAA,CAAAC,MAAA,CACjB,CAAApN,IAAI,KAAJA,IAAAA,IAAAA,IAAI,uBAAJA,IAAI,CAAEmN,QAAQ,EAAE,KAAI,CAAC,EAAA,GAAA,CAAA,CAAAC,MAAA,CAAI5J,GAAG,CAAC,CAAC,CAAC,OAAA4J,MAAA,CAAI5J,GAAG,CAAC,CAAC,CAAC,EAAA4J,GAAAA,CAAAA,CAAAA,MAAA,CAAIpL,KAAK,EAAA,GAAA,CAAA,CAAAoL,MAAA,CAAIjL,MAAM,OAAAiL,MAAA,CAAI5B,KAAK,CACtEzI,GAAG,CAAC,UAAAsK,KAAA,EAAA;AAAA,QAAA,IAAGT,MAAM,GAAAS,KAAA,CAANT,MAAM;UAAEC,KAAK,GAAAQ,KAAA,CAALR,KAAK,CAAA;AAAA,QAAA,OAAA,EAAA,CAAAO,MAAA,CAAUR,MAAM,CAAAQ,CAAAA,MAAA,CAAGP,KAAK,CAAA,CAAA;AAAA,OAAE,CAAC,CAC/CS,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA;AACd,KAAA;AAAC,GAAA,EAAA;IAAAvO,GAAA,EAAA,oBAAA;AAAAC,IAAAA,KAAA,EAED,SAAQ+K,kBAAkBA,CAACJ,OAAgB,EAAE;AAC3C,MAAA,IAAQlI,KAAK,GAAiBkI,OAAO,CAA7BlI,KAAK;QAAEuI,UAAU,GAAKL,OAAO,CAAtBK,UAAU,CAAA;AACzB;AACA,MAAA,IAAI7E,QAAQ,CAAC1D,KAAK,CAAC,EAAE;AACnB,QAAA,OAAA,UAAA,CAAA2L,MAAA,CAAkB3L,KAAK,EAAA2L,GAAAA,CAAAA,CAAAA,MAAA,CAAIpD,UAAU,CAAA,CAAA;AACvC,OAAA;AACA,MAAA,IAAKvI,KAAK,CAAU8L,QAAQ,KAAK,MAAM,EAAE;QACvC,OAAAH,UAAAA,CAAAA,MAAA,CAAmB3L,KAAK,CAAUhC,MAAM,EAAA2N,GAAAA,CAAAA,CAAAA,MAAA,CAAIpD,UAAU,CAAA,CAAA;AACxD,OAAA;AACF,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,GAAA;AA1UUtF,SAAS,CACb8I,aAAa,GAAG,CAAC,CAACvE,sBAAsB,CAACrF,YAAY,EAAE,CAAA;AA4UhE,SAASkC,sBAAsBA,CAACT,GAAqB,EAAoB;AACvE,EAAA,IAAI,CAACA,GAAG,CAACC,QAAQ,EAAE;AACjB,IAAA,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACf,GAAA;EAEA,IAAOtD,KAAK,GACVqD,GAAG,CAACtD,YAAY,IAAIsD,GAAG,CAACrD,KAAK;AADjBG,IAAAA,MAAM,GAElBkD,GAAG,CAACnD,aAAa,IAAImD,GAAG,CAAClD,MAAM,CAAA;EAGjC,IAAIQ,QAAQ,GAAG,GAAG,CAAA;EAElB,CAAC,GAAG,EAAE,GAAG,CAAC,CAACrC,OAAO,CAAC,UAACN,IAAI,EAAK;IAC3B,IAAMyN,IAAI,GAAGlL,IAAI,CAACC,IAAI,CAACL,MAAM,GAAGnC,IAAI,CAAC,CAAA;IACrC,IAAM0N,IAAI,GAAGnL,IAAI,CAACC,IAAI,CAACR,KAAK,GAAGhC,IAAI,CAAC,CAAA;AAEpC,IAAA,IAAIyN,IAAI,GAAGC,IAAI,GAAG,GAAG,EAAE;AACrB/K,MAAAA,QAAQ,GAAG3C,IAAI,CAAA;AACjB,KAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,OAAO,CAAC2C,QAAQ,EAAEA,QAAQ,CAAC,CAAA;AAC7B;;AC/YA,IAAagL,eAAe,gBAAA,YAAA;AAAA,EAAA,SAAAA,eAAA,GAAA;AAAAhP,IAAAA,eAAA,OAAAgP,eAAA,CAAA,CAAA;AAAA,GAAA;EAAA,OAAA7O,YAAA,CAAA6O,eAAA,EAAA,CAAA;IAAA5O,GAAA,EAAA,OAAA;AAAAC,IAAAA,KAAA,EAG1B,SAAA0J,KAAKA,CAAC/D,OAA0D,EAAE;AAChE,MAAA,IAAQiJ,gBAAgB,GAAkCjJ,OAAO,CAAzDiJ,gBAAgB;QAAEC,gBAAgB,GAAgBlJ,OAAO,CAAvCkJ,gBAAgB;QAAEC,SAAS,GAAKnJ,OAAO,CAArBmJ,SAAS,CAAA;MACrD,IAAMC,MAAM,GAAGF,gBAAgB,CAACG,IAAI,CAACjF,aAAa,CAACC,WAAW,CAAA;MAE9D,IAAMiF,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAC5BvE,MAAa,EACb5H,UAAkB,EAClBG,WAAmB,EAChB;AACH,QAAA,IAAAiM,mBAAA,GAA0BxE,MAAM,CAACyE,WAAW;UAApCnM,KAAK,GAAAkM,mBAAA,CAALlM,KAAK;UAAEG,MAAM,GAAA+L,mBAAA,CAAN/L,MAAM,CAAA;AACrB,QAAA,IAAIH,KAAK,IAAI,CAACG,MAAM,EAAE;UACpBuH,MAAM,CAAC0E,YAAY,CAAC,QAAQ,EAAGnM,WAAW,GAAGH,UAAU,GAAIE,KAAK,CAAC,CAAA;AACnE,SAAC,MAAM,IAAI,CAACA,KAAK,IAAIG,MAAM,EAAE;UAC3BuH,MAAM,CAAC0E,YAAY,CAAC,OAAO,EAAGtM,UAAU,GAAGG,WAAW,GAAIE,MAAM,CAAC,CAAA;AACnE,SAAA;OACD,CAAA;AAED,MAAA,IAAMkM,aAAa,GAAG,SAAhBA,aAAaA,CAAInD,CAAiB,EAAK;AAC3C,QAAA,IAAMxB,MAAM,GAAGwB,CAAC,CAACoD,MAAe,CAAA;AAChC,QAAA,IAAQf,QAAQ,GAAiB7D,MAAM,CAA/B6D,QAAQ;UAAEgB,UAAU,GAAK7E,MAAM,CAArB6E,UAAU,CAAA;AAC5B,QAAA,IAAIhB,QAAQ,KAAKiB,KAAK,CAACC,KAAK,EAAE;AAC5B,UAAA,IAAQzJ,GAAG,GAAsBuJ,UAAU,CAAnCvJ,GAAG;YAAE0J,eAAe,GAAKH,UAAU,CAA9BG,eAAe,CAAA;UAE5BZ,SAAS,CAAC/I,YAAY,CACpBC,GAAG,EACH0E,MAAM,EACN,UAAAnG,IAAA,EAAgC;AAAA,YAAA,IAAAoL,QAAA,GAAApL,IAAA,CAA7B8B,GAAG;cAAIrD,KAAK,GAAA2M,QAAA,CAAL3M,KAAK;cAAEG,MAAM,GAAAwM,QAAA,CAANxM,MAAM,CAAA;AACrB,YAAA,IAAIuM,eAAe,EAAE;AACnBT,cAAAA,wBAAwB,CAACvE,MAAM,EAAE1H,KAAK,EAAEG,MAAM,CAAC,CAAA;AACjD,aAAA;;AAEA;AACAuH,YAAAA,MAAM,CAACkF,UAAU,CAACC,KAAK,GAAG,IAAI,CAAA;YAC9BjB,gBAAgB,CAACkB,OAAO,EAAE,CAAA;AAC5B,WACF,CAAC,CAAA;AACH,SAAA;OACD,CAAA;AAED,MAAA,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAI7D,CAAgB,EAAK;AACnD,QAAA,IAAMxB,MAAM,GAAGwB,CAAC,CAACoD,MAAe,CAAA;AAChC,QAAA,IAAQU,QAAQ,GAA0B9D,CAAC,CAAnC8D,QAAQ;UAAEC,SAAS,GAAe/D,CAAC,CAAzB+D,SAAS;UAAEC,QAAQ,GAAKhE,CAAC,CAAdgE,QAAQ,CAAA;QAErC,IAAIxF,MAAM,CAAC6D,QAAQ,KAAKiB,KAAK,CAACC,KAAK,IAAIO,QAAQ,KAAK,KAAK,EAAE;AACzD,UAAA,OAAA;AACF,SAAA;QAEA,IAAIC,SAAS,KAAKC,QAAQ,EAAE;AAC1BpB,UAAAA,SAAS,CAACvE,YAAY,CACpB0F,SAAS,EACTvF,MACF,CAAC,CAAA;AACH,SAAA;AAEA,QAAA,IAAIvE,QAAQ,CAAC+J,QAAQ,CAAC,EAAE;AACtBpB,UAAAA,SAAS,CACNvI,gBAAgB,CAAC2J,QAAQ,EAAExF,MAAuB,CAAC,CACnDlE,IAAI,CAAC,UAAAmH,KAAA,EAAgC;AAAA,YAAA,IAAAwC,SAAA,GAAAxC,KAAA,CAA7BtH,GAAG;cAAIrD,KAAK,GAAAmN,SAAA,CAALnN,KAAK;cAAEG,MAAM,GAAAgN,SAAA,CAANhN,MAAM,CAAA;AAC3B,YAAA,IAAIuH,MAAM,CAAC6E,UAAU,CAACG,eAAe,EAAE;AACrCT,cAAAA,wBAAwB,CAACvE,MAAM,EAAE1H,KAAK,EAAEG,MAAM,CAAC,CAAA;AACjD,aAAA;;AAEA;AACAuH,YAAAA,MAAM,CAACkF,UAAU,CAACC,KAAK,GAAG,IAAI,CAAA;YAC9BjB,gBAAgB,CAACkB,OAAO,EAAE,CAAA;WAC3B,CAAC,CACI,OAAA,CAAA,CAAC,YAAM;AACX;AAAA,WACD,CAAC,CAAA;AACN,SAAA;OACD,CAAA;MAEDlB,gBAAgB,CAACwB,KAAK,CAACC,IAAI,CAACC,GAAG,CAAC3B,eAAe,CAAC4B,GAAG,EAAE,YAAM;QACzDxB,MAAM,CAACzJ,gBAAgB,CAACC,YAAY,CAACiL,OAAO,EAAEnB,aAAa,CAAC,CAAA;QAC5DN,MAAM,CAACzJ,gBAAgB,CACrBC,YAAY,CAACkL,aAAa,EAC1BV,sBACF,CAAC,CAAA;AACH,OAAC,CAAC,CAAA;MAEFnB,gBAAgB,CAACwB,KAAK,CAACM,OAAO,CAACJ,GAAG,CAAC3B,eAAe,CAAC4B,GAAG,EAAE,YAAM;QAC5DxB,MAAM,CAAC4B,mBAAmB,CAACpL,YAAY,CAACiL,OAAO,EAAEnB,aAAa,CAAC,CAAA;QAC/DN,MAAM,CAAC4B,mBAAmB,CACxBpL,YAAY,CAACkL,aAAa,EAC1BV,sBACF,CAAC,CAAA;AACH,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,EAAA,CAAA;AA1FUpB,eAAe,CACnB4B,GAAG,GAAG,WAAW;;ACPbK,IAAAA,MAAM,0BAAAC,qBAAA,EAAA;AAAA,EAAA,SAAAD,MAAA,GAAA;AAAA,IAAA,IAAA1P,KAAA,CAAA;AAAAvB,IAAAA,eAAA,OAAAiR,MAAA,CAAA,CAAA;AAAA,IAAA,KAAA,IAAAE,IAAA,GAAAhP,SAAA,CAAAC,MAAA,EAAAgP,IAAA,GAAA5P,IAAAA,KAAA,CAAA2P,IAAA,GAAAE,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA,EAAA,EAAA;AAAAD,MAAAA,IAAA,CAAAC,IAAA,CAAAlP,GAAAA,SAAA,CAAAkP,IAAA,CAAA,CAAA;AAAA,KAAA;AAAA9P,IAAAA,KAAA,GAAA+P,UAAA,CAAA,IAAA,EAAAL,MAAA,EAAAxC,EAAAA,CAAAA,MAAA,CAAA2C,IAAA,CAAA,CAAA,CAAA;IAAA7P,KAAA,CACjBgQ,IAAI,GAAG,cAAc,CAAA;AAAA,IAAA,OAAAhQ,KAAA,CAAA;AAAA,GAAA;EAAAiQ,SAAA,CAAAP,MAAA,EAAAC,qBAAA,CAAA,CAAA;EAAA,OAAA/Q,YAAA,CAAA8Q,MAAA,EAAA,CAAA;IAAA7Q,GAAA,EAAA,MAAA;AAAAC,IAAAA,KAAA,EACrB,SAAAqQ,IAAIA,CAACzK,OAAsB,EAAQ;AACjC;AACA,MAAA,IAAI,CAACD,OAAO,CAACmJ,SAAS,GAAG,IAAIpJ,SAAS,CAAC,IAAI,CAACC,OAAO,EAAEC,OAAO,CAAC,CAAA;AAC7D,MAAA,IAAI,CAACwL,kBAAkB,CAAC,IAAIzC,eAAe,EAAE,CAAC,CAAA;AAChD,KAAA;AAAC,GAAA,EAAA;IAAA5O,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EACD,SAAA0Q,OAAOA,GAAS;MACd,IAAI,CAACW,yBAAyB,EAAE,CAAA;AAClC,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CATyBC,sBAAsB;;;;"}
{"version":3,"file":"index.esm.js","sources":["../src/RefCountCache.ts","../src/ImageSlicer.ts","../src/ImagePool.ts","../src/LoadImagePlugin.ts","../src/index.ts"],"sourcesContent":["import { DisplayObject } from '@antv/g-lite';\n\nexport class RefCountCache<CacheValue> {\n private cacheStore = new Map<\n string,\n { value: CacheValue; counter: Set<number> }\n >();\n\n onRefAdded(ref: DisplayObject) {}\n\n has(key: string) {\n return this.cacheStore.has(key);\n }\n\n put(key: string, item: CacheValue, ref: DisplayObject) {\n if (this.cacheStore.has(key)) {\n return false;\n }\n\n this.cacheStore.set(key, {\n value: item,\n counter: new Set([ref.entity]),\n });\n this.onRefAdded(ref);\n\n return true;\n }\n\n get(key: string, ref: DisplayObject) {\n const cacheItem = this.cacheStore.get(key);\n if (!cacheItem) {\n return null;\n }\n\n if (!cacheItem.counter.has(ref.entity)) {\n cacheItem.counter.add(ref.entity);\n this.onRefAdded(ref);\n }\n\n return cacheItem.value;\n }\n\n update(key: string, value: CacheValue, ref: DisplayObject) {\n const cacheItem = this.cacheStore.get(key);\n if (!cacheItem) {\n return false;\n }\n\n cacheItem.value = { ...cacheItem.value, ...value };\n if (!cacheItem.counter.has(ref.entity)) {\n cacheItem.counter.add(ref.entity);\n this.onRefAdded(ref);\n }\n\n return true;\n }\n\n release(key: string, ref: DisplayObject) {\n const cacheItem = this.cacheStore.get(key);\n if (!cacheItem) {\n return false;\n }\n\n cacheItem.counter.delete(ref.entity);\n\n if (cacheItem.counter.size <= 0) {\n this.cacheStore.delete(key);\n }\n\n return true;\n }\n\n releaseRef(ref: DisplayObject) {\n Array.from(this.cacheStore.keys()).forEach((key) => {\n this.release(key, ref);\n });\n }\n\n getSize() {\n return this.cacheStore.size;\n }\n\n clear() {\n this.cacheStore.clear();\n }\n}\n","const tasks: (() => void)[] = [];\nlet nextFrameTasks: (() => void)[] = [];\n\ninterface API {\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n createCanvas: () => HTMLCanvasElement | OffscreenCanvas;\n}\n\nexport interface SliceResult {\n tileSize: [number, number];\n /** [rows, cols] */\n gridSize: [number, number];\n /**\n * @example\n * ```\n * [\n * // tileY=0\n * [tileX=0, tileX=1, ...],\n * // tileY=1\n * [tileX=0, tileX=1, ...],\n * ]\n * ```\n */\n tiles: (null | {\n x: number;\n y: number;\n tileX: number;\n tileY: number;\n data: HTMLCanvasElement | OffscreenCanvas;\n })[][];\n}\n\nexport class ImageSlicer {\n static api: API;\n static TASK_NUM_PER_FRAME = 10;\n static rafId: ReturnType<typeof requestAnimationFrame>;\n\n static stop(api = ImageSlicer.api) {\n if (ImageSlicer.rafId) {\n api.cancelAnimationFrame(ImageSlicer.rafId);\n ImageSlicer.rafId = null;\n }\n }\n\n static executeTask(api = ImageSlicer.api) {\n if (tasks.length <= 0 && nextFrameTasks.length <= 0) {\n return;\n }\n\n nextFrameTasks.forEach((task) => task());\n nextFrameTasks = tasks.splice(0, ImageSlicer.TASK_NUM_PER_FRAME);\n\n ImageSlicer.rafId = api.requestAnimationFrame(() => {\n ImageSlicer.executeTask(api);\n });\n }\n\n static sliceImage(\n image: HTMLImageElement,\n sliceWidth: number,\n sliceHeight: number,\n rerender: () => void,\n overlap = 0,\n api = ImageSlicer.api,\n ) {\n const imageWidth = image.naturalWidth || image.width;\n const imageHeight = image.naturalHeight || image.height;\n\n // 计算步长(考虑重叠区域)\n const strideW = sliceWidth - overlap;\n const strideH = sliceHeight - overlap;\n\n // 计算网格尺寸\n const gridCols = Math.ceil(imageWidth / strideW);\n const gridRows = Math.ceil(imageHeight / strideH);\n\n const result: SliceResult = {\n tileSize: [sliceWidth, sliceHeight],\n gridSize: [gridRows, gridCols],\n tiles: Array(gridRows)\n .fill(null)\n .map(() => Array(gridCols).fill(null) as SliceResult['tiles'][number]),\n };\n\n // 遍历网格创建切片\n for (let row = 0; row < gridRows; row++) {\n for (let col = 0; col < gridCols; col++) {\n tasks.push(() => {\n // 计算当前切片的坐标\n const startX = col * strideW;\n const startY = row * strideH;\n\n // 处理最后一列/行的特殊情况\n const [tempSliceWidth, tempSliceHeight] = [\n Math.min(sliceWidth, imageWidth - startX),\n Math.min(sliceHeight, imageHeight - startY),\n ];\n\n // 创建切片canvas\n const sliceCanvas = api.createCanvas();\n sliceCanvas.width = sliceWidth;\n sliceCanvas.height = sliceHeight;\n const sliceCtx = sliceCanvas.getContext('2d');\n\n // 将图像部分绘制到切片canvas上\n sliceCtx.drawImage(\n image,\n startX,\n startY,\n tempSliceWidth,\n tempSliceHeight,\n 0,\n 0,\n tempSliceWidth,\n tempSliceHeight,\n );\n\n // 存储切片信息\n result.tiles[row][col] = {\n x: startX,\n y: startY,\n tileX: col,\n tileY: row,\n data: sliceCanvas,\n };\n\n rerender();\n });\n }\n }\n\n ImageSlicer.stop();\n ImageSlicer.executeTask();\n\n return result;\n }\n}\n","import {\n DisplayObject,\n GradientType,\n LinearGradient,\n Pattern,\n RadialGradient,\n Rect,\n Tuple3Number,\n UnitType,\n computeLinearGradient,\n computeRadialGradient,\n parseTransform,\n parsedTransformToMat4,\n Image,\n OffscreenCanvasCreator,\n ElementEvent,\n type CanvasContext,\n type GlobalRuntime,\n} from '@antv/g-lite';\nimport { isString } from '@antv/util';\nimport { mat4 } from 'gl-matrix';\nimport { RefCountCache } from './RefCountCache';\nimport { type SliceResult, ImageSlicer } from './ImageSlicer';\n\nexport interface ImageCache extends Partial<SliceResult> {\n img: HTMLImageElement;\n /** [width, height] */\n size: [number, number];\n downSampled?: ImageBitmap | HTMLImageElement;\n downSamplingRate?: number;\n}\n\nconst IMAGE_CACHE = new RefCountCache<ImageCache>();\nIMAGE_CACHE.onRefAdded = function onRefAdded(\n this: RefCountCache<ImageCache>,\n ref,\n) {\n ref.addEventListener(\n ElementEvent.DESTROY,\n () => {\n this.releaseRef(ref);\n },\n { once: true },\n );\n};\n\nexport type GradientParams = (LinearGradient & RadialGradient) & {\n width: number;\n height: number;\n /**\n * Top-left corner\n */\n min: [number, number];\n type: GradientType;\n};\n\nexport class ImagePool {\n static isSupportTile = !!OffscreenCanvasCreator.createCanvas();\n private gradientCache: Record<string, CanvasGradient> = {};\n private patternCache: Record<string, CanvasPattern> = {};\n\n constructor(\n public context: CanvasContext,\n private runtime: GlobalRuntime,\n ) {}\n\n getImageSync(\n src: Image['attributes']['src'],\n ref: DisplayObject,\n callback?: (cache: ImageCache) => void,\n ): ImageCache | null {\n const imageSource = isString(src) ? src : src.src;\n\n if (IMAGE_CACHE.has(imageSource)) {\n const imageCache = IMAGE_CACHE.get(imageSource, ref);\n\n if (imageCache.img.complete) {\n callback?.(imageCache);\n\n return imageCache;\n }\n }\n\n this.getOrCreateImage(src, ref)\n .then((cache) => {\n callback?.(cache);\n })\n .catch((reason) => {\n console.error(reason);\n });\n\n return null;\n }\n\n getOrCreateImage(\n src: Image['attributes']['src'],\n ref: DisplayObject,\n ): Promise<ImageCache> {\n const imageSource = isString(src) ? src : src.src;\n\n if (!isString(src) && !IMAGE_CACHE.has(imageSource)) {\n const imageCache: ImageCache = {\n img: src,\n size: [src.naturalWidth || src.width, src.naturalHeight || src.height],\n tileSize: calculateImageTileSize(src),\n };\n\n IMAGE_CACHE.put(imageSource, imageCache, ref);\n }\n\n if (IMAGE_CACHE.has(imageSource)) {\n const imageCache = IMAGE_CACHE.get(imageSource, ref);\n\n if (imageCache.img.complete) {\n return Promise.resolve(imageCache);\n }\n\n return new Promise((resolve, reject) => {\n imageCache.img.addEventListener('load', () => {\n imageCache.size = [\n imageCache.img.naturalWidth || imageCache.img.width,\n imageCache.img.naturalHeight || imageCache.img.height,\n ];\n imageCache.tileSize = calculateImageTileSize(imageCache.img);\n resolve(imageCache);\n });\n\n imageCache.img.addEventListener('error', (ev) => {\n reject(ev);\n });\n });\n }\n\n return new Promise((resolve, reject) => {\n // @see https://github.com/antvis/g/issues/938\n const image = this.context.config.createImage();\n\n if (image) {\n const imageCache: ImageCache = {\n img: image,\n size: [0, 0],\n tileSize: calculateImageTileSize(image),\n };\n\n IMAGE_CACHE.put(imageSource, imageCache, ref);\n\n image.onload = () => {\n imageCache.size = [\n image.naturalWidth || image.width,\n image.naturalHeight || image.height,\n ];\n imageCache.tileSize = calculateImageTileSize(imageCache.img);\n resolve(imageCache);\n };\n image.onerror = (ev) => {\n reject(ev);\n };\n image.crossOrigin = 'Anonymous';\n image.src = imageSource;\n }\n });\n }\n\n async createDownSampledImage(\n src: Image['attributes']['src'],\n ref: DisplayObject,\n ): Promise<ImageCache> {\n const imageCache = await this.getOrCreateImage(src, ref);\n if (typeof imageCache.downSamplingRate !== 'undefined') {\n return imageCache;\n }\n\n const { enableLargeImageOptimization } = this.context.config;\n const { maxDownSampledImageSize = 2048, downSamplingRateThreshold = 0.5 } =\n typeof enableLargeImageOptimization === 'boolean'\n ? {}\n : enableLargeImageOptimization;\n const createImageBitmapFunc = this.runtime.globalThis\n .createImageBitmap as typeof createImageBitmap;\n const [originWidth, originHeight] = imageCache.size;\n let resizedImage: ImageCache['downSampled'] = imageCache.img;\n let downSamplingRate = Math.min(\n (maxDownSampledImageSize + maxDownSampledImageSize) /\n (originWidth + originHeight),\n Math.max(0.01, Math.min(downSamplingRateThreshold, 0.5)),\n );\n\n let updateCache: ImageCache = {\n ...imageCache,\n downSamplingRate,\n };\n\n IMAGE_CACHE.update(imageCache.img.src, updateCache, ref);\n\n if (createImageBitmapFunc) {\n try {\n resizedImage = await createImageBitmapFunc(imageCache.img, {\n resizeWidth: originWidth * downSamplingRate,\n resizeHeight: originHeight * downSamplingRate,\n });\n } catch {\n downSamplingRate = 1;\n }\n } else {\n downSamplingRate = 1;\n }\n\n updateCache = {\n ...this.getImageSync(src, ref),\n downSampled: resizedImage,\n downSamplingRate,\n };\n\n IMAGE_CACHE.update(imageCache.img.src, updateCache, ref);\n\n return updateCache;\n }\n\n async createImageTiles(\n src: Image['attributes']['src'],\n tiles: [number, number][],\n rerender: () => void,\n ref: DisplayObject,\n ): Promise<ImageCache> {\n const imageCache = await this.getOrCreateImage(src, ref);\n const { requestAnimationFrame, cancelAnimationFrame } =\n ref.ownerDocument.defaultView;\n\n ImageSlicer.api = {\n requestAnimationFrame,\n cancelAnimationFrame,\n createCanvas: () => OffscreenCanvasCreator.createCanvas(),\n };\n\n const updateCache: ImageCache = {\n ...imageCache,\n ...ImageSlicer.sliceImage(\n imageCache.img,\n imageCache.tileSize[0],\n imageCache.tileSize[0],\n rerender,\n ),\n };\n\n IMAGE_CACHE.update(imageCache.img.src, updateCache, ref);\n\n return updateCache;\n }\n\n releaseImage(src: Image['attributes']['src'], ref: DisplayObject) {\n IMAGE_CACHE.release(isString(src) ? src : src.src, ref);\n }\n\n releaseImageRef(ref: DisplayObject) {\n IMAGE_CACHE.releaseRef(ref);\n }\n\n getOrCreatePatternSync(\n object: DisplayObject,\n pattern: Pattern,\n context: CanvasRenderingContext2D,\n $offscreenCanvas: HTMLCanvasElement,\n dpr: number,\n min: Tuple3Number,\n callback: () => void,\n ) {\n const patternKey = this.generatePatternKey(pattern);\n if (patternKey && this.patternCache[patternKey]) {\n return this.patternCache[patternKey];\n }\n\n const { image, repetition, transform } = pattern;\n let src: CanvasImageSource;\n let needScaleWithDPR = false;\n // Image URL\n if (isString(image)) {\n const imageCache = this.getImageSync(image, object, callback);\n src = imageCache?.img;\n } else if ($offscreenCanvas) {\n src = $offscreenCanvas;\n needScaleWithDPR = true;\n } else {\n src = image as CanvasImageSource;\n }\n\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createPattern\n const canvasPattern = src && context.createPattern(src, repetition);\n\n if (canvasPattern) {\n let mat: mat4;\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasPattern/setTransform\n if (transform) {\n mat = parsedTransformToMat4(\n parseTransform(transform),\n new DisplayObject({}),\n );\n } else {\n mat = mat4.identity(mat4.create());\n }\n\n if (needScaleWithDPR) {\n mat4.scale(mat, mat, [1 / dpr, 1 / dpr, 1]);\n }\n\n canvasPattern.setTransform({\n a: mat[0],\n b: mat[1],\n c: mat[4],\n d: mat[5],\n e: mat[12] + min[0],\n f: mat[13] + min[1],\n });\n }\n\n if (patternKey && canvasPattern) {\n this.patternCache[patternKey] = canvasPattern;\n }\n\n return canvasPattern;\n }\n\n getOrCreateGradient(\n params: GradientParams,\n context: CanvasRenderingContext2D,\n ) {\n const key = this.generateGradientKey(params);\n const { type, steps, min, width, height, angle, cx, cy, size } = params;\n\n if (this.gradientCache[key]) {\n return this.gradientCache[key];\n }\n\n let gradient: CanvasGradient | null = null;\n if (type === GradientType.LinearGradient) {\n const { x1, y1, x2, y2 } = computeLinearGradient(\n min,\n width,\n height,\n angle,\n );\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createLinearGradient\n gradient = context.createLinearGradient(x1, y1, x2, y2);\n } else if (type === GradientType.RadialGradient) {\n const { x, y, r } = computeRadialGradient(\n min,\n width,\n height,\n cx,\n cy,\n size,\n );\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createRadialGradient\n gradient = context.createRadialGradient(x, y, 0, x, y, r);\n }\n\n if (gradient) {\n steps.forEach(({ offset, color }) => {\n if (offset.unit === UnitType.kPercentage) {\n gradient?.addColorStop(offset.value / 100, color.toString());\n }\n });\n\n this.gradientCache[key] = gradient;\n }\n\n return this.gradientCache[key];\n }\n\n private generateGradientKey(params: GradientParams): string {\n const { type, min, width, height, steps, angle, cx, cy, size } = params;\n return `gradient-${type}-${angle?.toString() || 0}-${cx?.toString() || 0}-${\n cy?.toString() || 0\n }-${size?.toString() || 0}-${min[0]}-${min[1]}-${width}-${height}-${steps\n .map(({ offset, color }) => `${offset}${color}`)\n .join('-')}`;\n }\n\n private generatePatternKey(pattern: Pattern) {\n const { image, repetition } = pattern;\n // only generate cache for Image\n if (isString(image)) {\n return `pattern-${image}-${repetition}`;\n }\n if ((image as Rect).nodeName === 'rect') {\n return `pattern-${(image as Rect).entity}-${repetition}`;\n }\n }\n}\n\nfunction calculateImageTileSize(img: HTMLImageElement): [number, number] {\n if (!img.complete) {\n return [0, 0];\n }\n\n const [width, height] = [\n img.naturalWidth || img.width,\n img.naturalHeight || img.height,\n ];\n\n let tileSize = 256;\n\n [256, 512].forEach((size) => {\n const rows = Math.ceil(height / size);\n const cols = Math.ceil(width / size);\n\n if (rows * cols < 1e3) {\n tileSize = size;\n }\n });\n\n return [tileSize, tileSize];\n}\n","import type {\n FederatedEvent,\n Image,\n MutationEvent,\n RenderingPlugin,\n RenderingPluginContext,\n DisplayObject,\n} from '@antv/g-lite';\nimport { ElementEvent, Shape } from '@antv/g-lite';\nimport { isString } from '@antv/util';\nimport { ImagePool } from './ImagePool';\n\nexport class LoadImagePlugin implements RenderingPlugin {\n static tag = 'LoadImage';\n\n apply(context: RenderingPluginContext & { imagePool: ImagePool }) {\n const { renderingService, renderingContext, imagePool } = context;\n const canvas = renderingContext.root.ownerDocument.defaultView;\n\n const calculateWithAspectRatio = (\n object: Image,\n imageWidth: number,\n imageHeight: number,\n ) => {\n const { width, height } = object.parsedStyle;\n if (width && !height) {\n object.setAttribute('height', (imageHeight / imageWidth) * width);\n } else if (!width && height) {\n object.setAttribute('width', (imageWidth / imageHeight) * height);\n }\n };\n\n const handleMounted = (e: FederatedEvent) => {\n const object = e.target as Image;\n const { nodeName, attributes } = object;\n if (nodeName === Shape.IMAGE) {\n const { src, keepAspectRatio } = attributes;\n\n imagePool.getImageSync(\n src,\n object as DisplayObject,\n ({ img: { width, height } }) => {\n if (keepAspectRatio) {\n calculateWithAspectRatio(object, width, height);\n }\n\n object.dirty();\n renderingService.dirty();\n },\n );\n }\n };\n\n const handleAttributeChanged = (e: MutationEvent) => {\n const object = e.target as Image;\n const { attrName, prevValue, newValue } = e;\n\n if (object.nodeName !== Shape.IMAGE || attrName !== 'src') {\n return;\n }\n\n if (prevValue !== newValue) {\n imagePool.releaseImage(\n prevValue as Image['attributes']['src'],\n object as DisplayObject,\n );\n }\n\n if (isString(newValue)) {\n imagePool\n .getOrCreateImage(newValue, object as DisplayObject)\n .then(({ img: { width, height } }) => {\n if (object.attributes.keepAspectRatio) {\n calculateWithAspectRatio(object, width, height);\n }\n\n object.dirty();\n renderingService.dirty();\n })\n .catch(() => {\n //\n });\n }\n };\n\n renderingService.hooks.init.tap(LoadImagePlugin.tag, () => {\n canvas.addEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.addEventListener(\n ElementEvent.ATTR_MODIFIED,\n handleAttributeChanged,\n );\n });\n\n renderingService.hooks.destroy.tap(LoadImagePlugin.tag, () => {\n canvas.removeEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.removeEventListener(\n ElementEvent.ATTR_MODIFIED,\n handleAttributeChanged,\n );\n });\n }\n}\n","import { AbstractRendererPlugin, type GlobalRuntime } from '@antv/g-lite';\nimport { ImagePool, type ImageCache } from './ImagePool';\nimport { LoadImagePlugin } from './LoadImagePlugin';\n\nexport { ImagePool, type ImageCache };\n\nexport class Plugin extends AbstractRendererPlugin {\n name = 'image-loader';\n init(runtime: GlobalRuntime): void {\n // @ts-ignore\n this.context.imagePool = new ImagePool(this.context, runtime);\n this.addRenderingPlugin(new LoadImagePlugin());\n }\n destroy(): void {\n this.removeAllRenderingPlugins();\n }\n}\n"],"names":["RefCountCache","_classCallCheck","cacheStore","Map","_createClass","key","value","onRefAdded","ref","has","put","item","set","counter","Set","entity","get","cacheItem","add","update","_objectSpread","release","size","releaseRef","_this","Array","from","keys","forEach","getSize","clear","tasks","nextFrameTasks","ImageSlicer","stop","api","arguments","length","undefined","rafId","cancelAnimationFrame","executeTask","task","splice","TASK_NUM_PER_FRAME","requestAnimationFrame","sliceImage","image","sliceWidth","sliceHeight","rerender","overlap","imageWidth","naturalWidth","width","imageHeight","naturalHeight","height","strideW","strideH","gridCols","Math","ceil","gridRows","result","tileSize","gridSize","tiles","fill","map","_loop","row","_loop2","col","push","startX","startY","_ref","min","tempSliceWidth","tempSliceHeight","sliceCanvas","createCanvas","sliceCtx","getContext","drawImage","x","y","tileX","tileY","data","IMAGE_CACHE","addEventListener","ElementEvent","DESTROY","once","ImagePool","context","runtime","gradientCache","patternCache","getImageSync","src","callback","imageSource","isString","imageCache","img","complete","getOrCreateImage","then","cache","reason","console","error","_this2","calculateImageTileSize","Promise","resolve","reject","ev","config","createImage","onload","onerror","crossOrigin","_createDownSampledImage","_asyncToGenerator","_regeneratorRuntime","mark","_callee","enableLargeImageOptimization","_ref$maxDownSampledIm","maxDownSampledImageSize","_ref$downSamplingRate","downSamplingRateThreshold","createImageBitmapFunc","_imageCache$size","originWidth","originHeight","resizedImage","downSamplingRate","updateCache","wrap","_context","prev","next","sent","abrupt","globalThis","createImageBitmap","_slicedToArray","max","resizeWidth","resizeHeight","_t","downSampled","createDownSampledImage","_x","_x2","apply","_createImageTiles","_callee2","_ref$ownerDocument$de","_context2","ownerDocument","defaultView","OffscreenCanvasCreator","createImageTiles","_x3","_x4","_x5","_x6","releaseImage","releaseImageRef","getOrCreatePatternSync","object","pattern","$offscreenCanvas","dpr","patternKey","generatePatternKey","repetition","transform","needScaleWithDPR","canvasPattern","createPattern","mat","parsedTransformToMat4","parseTransform","DisplayObject","mat4","identity","create","scale","setTransform","a","b","c","d","e","f","getOrCreateGradient","params","generateGradientKey","type","steps","angle","cx","cy","gradient","GradientType","LinearGradient","_computeLinearGradien","computeLinearGradient","x1","y1","x2","y2","createLinearGradient","RadialGradient","_computeRadialGradien","computeRadialGradient","r","createRadialGradient","_ref2","offset","color","unit","UnitType","kPercentage","_gradient","addColorStop","toString","concat","_ref3","join","nodeName","isSupportTile","rows","cols","LoadImagePlugin","renderingService","renderingContext","imagePool","canvas","root","calculateWithAspectRatio","_object$parsedStyle","parsedStyle","setAttribute","handleMounted","target","attributes","Shape","IMAGE","keepAspectRatio","_ref$img","dirty","handleAttributeChanged","attrName","prevValue","newValue","_ref2$img","hooks","init","tap","tag","MOUNTED","ATTR_MODIFIED","destroy","removeEventListener","Plugin","_AbstractRendererPlug","_len","args","_key","_callSuper","name","_inherits","addRenderingPlugin","removeAllRenderingPlugins","AbstractRendererPlugin"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,IAAaA,aAAa,gBAAA,YAAA;AAAA,EAAA,SAAAA,aAAA,GAAA;AAAAC,IAAAA,eAAA,OAAAD,aAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CAChBE,UAAU,GAAG,IAAIC,GAAG,EAGzB,CAAA;AAAA,GAAA;EAAA,OAAAC,YAAA,CAAAJ,aAAA,EAAA,CAAA;IAAAK,GAAA,EAAA,YAAA;AAAAC,IAAAA,KAAA,EAEH,SAAAC,UAAUA,CAACC,GAAkB,EAAE,EAAC;AAAC,GAAA,EAAA;IAAAH,GAAA,EAAA,KAAA;AAAAC,IAAAA,KAAA,EAEjC,SAAAG,GAAGA,CAACJ,GAAW,EAAE;AACf,MAAA,OAAO,IAAI,CAACH,UAAU,CAACO,GAAG,CAACJ,GAAG,CAAC,CAAA;AACjC,KAAA;AAAC,GAAA,EAAA;IAAAA,GAAA,EAAA,KAAA;IAAAC,KAAA,EAED,SAAAI,GAAGA,CAACL,GAAW,EAAEM,IAAgB,EAAEH,GAAkB,EAAE;MACrD,IAAI,IAAI,CAACN,UAAU,CAACO,GAAG,CAACJ,GAAG,CAAC,EAAE;AAC5B,QAAA,OAAO,KAAK,CAAA;AACd,OAAA;AAEA,MAAA,IAAI,CAACH,UAAU,CAACU,GAAG,CAACP,GAAG,EAAE;AACvBC,QAAAA,KAAK,EAAEK,IAAI;QACXE,OAAO,EAAE,IAAIC,GAAG,CAAC,CAACN,GAAG,CAACO,MAAM,CAAC,CAAA;AAC/B,OAAC,CAAC,CAAA;AACF,MAAA,IAAI,CAACR,UAAU,CAACC,GAAG,CAAC,CAAA;AAEpB,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAAC,GAAA,EAAA;IAAAH,GAAA,EAAA,KAAA;AAAAC,IAAAA,KAAA,EAED,SAAAU,GAAGA,CAACX,GAAW,EAAEG,GAAkB,EAAE;MACnC,IAAMS,SAAS,GAAG,IAAI,CAACf,UAAU,CAACc,GAAG,CAACX,GAAG,CAAC,CAAA;MAC1C,IAAI,CAACY,SAAS,EAAE;AACd,QAAA,OAAO,IAAI,CAAA;AACb,OAAA;MAEA,IAAI,CAACA,SAAS,CAACJ,OAAO,CAACJ,GAAG,CAACD,GAAG,CAACO,MAAM,CAAC,EAAE;QACtCE,SAAS,CAACJ,OAAO,CAACK,GAAG,CAACV,GAAG,CAACO,MAAM,CAAC,CAAA;AACjC,QAAA,IAAI,CAACR,UAAU,CAACC,GAAG,CAAC,CAAA;AACtB,OAAA;MAEA,OAAOS,SAAS,CAACX,KAAK,CAAA;AACxB,KAAA;AAAC,GAAA,EAAA;IAAAD,GAAA,EAAA,QAAA;IAAAC,KAAA,EAED,SAAAa,MAAMA,CAACd,GAAW,EAAEC,KAAiB,EAAEE,GAAkB,EAAE;MACzD,IAAMS,SAAS,GAAG,IAAI,CAACf,UAAU,CAACc,GAAG,CAACX,GAAG,CAAC,CAAA;MAC1C,IAAI,CAACY,SAAS,EAAE;AACd,QAAA,OAAO,KAAK,CAAA;AACd,OAAA;AAEAA,MAAAA,SAAS,CAACX,KAAK,GAAAc,aAAA,CAAAA,aAAA,CAAQH,EAAAA,EAAAA,SAAS,CAACX,KAAK,CAAKA,EAAAA,KAAK,CAAE,CAAA;MAClD,IAAI,CAACW,SAAS,CAACJ,OAAO,CAACJ,GAAG,CAACD,GAAG,CAACO,MAAM,CAAC,EAAE;QACtCE,SAAS,CAACJ,OAAO,CAACK,GAAG,CAACV,GAAG,CAACO,MAAM,CAAC,CAAA;AACjC,QAAA,IAAI,CAACR,UAAU,CAACC,GAAG,CAAC,CAAA;AACtB,OAAA;AAEA,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAAC,GAAA,EAAA;IAAAH,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAED,SAAAe,OAAOA,CAAChB,GAAW,EAAEG,GAAkB,EAAE;MACvC,IAAMS,SAAS,GAAG,IAAI,CAACf,UAAU,CAACc,GAAG,CAACX,GAAG,CAAC,CAAA;MAC1C,IAAI,CAACY,SAAS,EAAE;AACd,QAAA,OAAO,KAAK,CAAA;AACd,OAAA;AAEAA,MAAAA,SAAS,CAACJ,OAAO,CAAA,QAAA,CAAO,CAACL,GAAG,CAACO,MAAM,CAAC,CAAA;AAEpC,MAAA,IAAIE,SAAS,CAACJ,OAAO,CAACS,IAAI,IAAI,CAAC,EAAE;AAC/B,QAAA,IAAI,CAACpB,UAAU,CAAO,QAAA,CAAA,CAACG,GAAG,CAAC,CAAA;AAC7B,OAAA;AAEA,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAAC,GAAA,EAAA;IAAAA,GAAA,EAAA,YAAA;AAAAC,IAAAA,KAAA,EAED,SAAAiB,UAAUA,CAACf,GAAkB,EAAE;AAAA,MAAA,IAAAgB,KAAA,GAAA,IAAA,CAAA;AAC7BC,MAAAA,KAAK,CAACC,IAAI,CAAC,IAAI,CAACxB,UAAU,CAACyB,IAAI,EAAE,CAAC,CAACC,OAAO,CAAC,UAACvB,GAAG,EAAK;AAClDmB,QAAAA,KAAI,CAACH,OAAO,CAAChB,GAAG,EAAEG,GAAG,CAAC,CAAA;AACxB,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAH,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAED,SAAAuB,OAAOA,GAAG;AACR,MAAA,OAAO,IAAI,CAAC3B,UAAU,CAACoB,IAAI,CAAA;AAC7B,KAAA;AAAC,GAAA,EAAA;IAAAjB,GAAA,EAAA,OAAA;AAAAC,IAAAA,KAAA,EAED,SAAAwB,KAAKA,GAAG;AACN,MAAA,IAAI,CAAC5B,UAAU,CAAC4B,KAAK,EAAE,CAAA;AACzB,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,EAAA;;ACpFH,IAAMC,KAAqB,GAAG,EAAE,CAAA;AAChC,IAAIC,cAA8B,GAAG,EAAE,CAAA;AAgCvC,IAAaC,WAAW,gBAAA,YAAA;AAAA,EAAA,SAAAA,WAAA,GAAA;AAAAhC,IAAAA,eAAA,OAAAgC,WAAA,CAAA,CAAA;AAAA,GAAA;EAAA,OAAA7B,YAAA,CAAA6B,WAAA,EAAA,IAAA,EAAA,CAAA;IAAA5B,GAAA,EAAA,MAAA;AAAAC,IAAAA,KAAA,EAKtB,SAAO4B,IAAIA,GAAwB;AAAA,MAAA,IAAvBC,GAAG,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAGH,CAAAA,CAAAA,GAAAA,WAAW,CAACE,GAAG,CAAA;MAC/B,IAAIF,WAAW,CAACM,KAAK,EAAE;AACrBJ,QAAAA,GAAG,CAACK,oBAAoB,CAACP,WAAW,CAACM,KAAK,CAAC,CAAA;QAC3CN,WAAW,CAACM,KAAK,GAAG,IAAI,CAAA;AAC1B,OAAA;AACF,KAAA;AAAC,GAAA,EAAA;IAAAlC,GAAA,EAAA,aAAA;AAAAC,IAAAA,KAAA,EAED,SAAOmC,WAAWA,GAAwB;AAAA,MAAA,IAAvBN,GAAG,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAGH,CAAAA,CAAAA,GAAAA,WAAW,CAACE,GAAG,CAAA;MACtC,IAAIJ,KAAK,CAACM,MAAM,IAAI,CAAC,IAAIL,cAAc,CAACK,MAAM,IAAI,CAAC,EAAE;AACnD,QAAA,OAAA;AACF,OAAA;AAEAL,MAAAA,cAAc,CAACJ,OAAO,CAAC,UAACc,IAAI,EAAA;QAAA,OAAKA,IAAI,EAAE,CAAA;OAAC,CAAA,CAAA;MACxCV,cAAc,GAAGD,KAAK,CAACY,MAAM,CAAC,CAAC,EAAEV,WAAW,CAACW,kBAAkB,CAAC,CAAA;AAEhEX,MAAAA,WAAW,CAACM,KAAK,GAAGJ,GAAG,CAACU,qBAAqB,CAAC,YAAM;AAClDZ,QAAAA,WAAW,CAACQ,WAAW,CAACN,GAAG,CAAC,CAAA;AAC9B,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAA9B,GAAA,EAAA,YAAA;IAAAC,KAAA,EAED,SAAOwC,UAAUA,CACfC,KAAuB,EACvBC,UAAkB,EAClBC,WAAmB,EACnBC,QAAoB,EAGpB;AAAA,MAAA,IAFAC,OAAO,GAAAf,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC,CAAA;AAAA,MAAA,IACXD,GAAG,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAGH,CAAAA,CAAAA,GAAAA,WAAW,CAACE,GAAG,CAAA;MAErB,IAAMiB,UAAU,GAAGL,KAAK,CAACM,YAAY,IAAIN,KAAK,CAACO,KAAK,CAAA;MACpD,IAAMC,WAAW,GAAGR,KAAK,CAACS,aAAa,IAAIT,KAAK,CAACU,MAAM,CAAA;;AAEvD;AACA,MAAA,IAAMC,OAAO,GAAGV,UAAU,GAAGG,OAAO,CAAA;AACpC,MAAA,IAAMQ,OAAO,GAAGV,WAAW,GAAGE,OAAO,CAAA;;AAErC;MACA,IAAMS,QAAQ,GAAGC,IAAI,CAACC,IAAI,CAACV,UAAU,GAAGM,OAAO,CAAC,CAAA;MAChD,IAAMK,QAAQ,GAAGF,IAAI,CAACC,IAAI,CAACP,WAAW,GAAGI,OAAO,CAAC,CAAA;AAEjD,MAAA,IAAMK,MAAmB,GAAG;AAC1BC,QAAAA,QAAQ,EAAE,CAACjB,UAAU,EAAEC,WAAW,CAAC;AACnCiB,QAAAA,QAAQ,EAAE,CAACH,QAAQ,EAAEH,QAAQ,CAAC;AAC9BO,QAAAA,KAAK,EAAE1C,KAAK,CAACsC,QAAQ,CAAC,CACnBK,IAAI,CAAC,IAAI,CAAC,CACVC,GAAG,CAAC,YAAA;UAAA,OAAM5C,KAAK,CAACmC,QAAQ,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC,CAAA;SAAgC,CAAA;OACxE,CAAA;;AAED;AAAA,MAAA,IAAAE,KAAA,GAAA,SAAAA,KAAAC,CAAAA,GAAA,EACyC;AAAA,QAAA,IAAAC,MAAA,GAAA,SAAAA,MAAAC,CAAAA,GAAA,EACE;UACvC1C,KAAK,CAAC2C,IAAI,CAAC,YAAM;AACf;AACA,YAAA,IAAMC,MAAM,GAAGF,GAAG,GAAGf,OAAO,CAAA;AAC5B,YAAA,IAAMkB,MAAM,GAAGL,GAAG,GAAGZ,OAAO,CAAA;;AAE5B;YACA,IAAAkB,IAAA,GAA0C,CACxChB,IAAI,CAACiB,GAAG,CAAC9B,UAAU,EAAEI,UAAU,GAAGuB,MAAM,CAAC,EACzCd,IAAI,CAACiB,GAAG,CAAC7B,WAAW,EAAEM,WAAW,GAAGqB,MAAM,CAAC,CAC5C;AAHMG,cAAAA,cAAc,GAAAF,IAAA,CAAA,CAAA,CAAA;AAAEG,cAAAA,eAAe,GAAAH,IAAA,CAAA,CAAA,CAAA,CAAA;;AAKtC;AACA,YAAA,IAAMI,WAAW,GAAG9C,GAAG,CAAC+C,YAAY,EAAE,CAAA;YACtCD,WAAW,CAAC3B,KAAK,GAAGN,UAAU,CAAA;YAC9BiC,WAAW,CAACxB,MAAM,GAAGR,WAAW,CAAA;AAChC,YAAA,IAAMkC,QAAQ,GAAGF,WAAW,CAACG,UAAU,CAAC,IAAI,CAAC,CAAA;;AAE7C;YACAD,QAAQ,CAACE,SAAS,CAChBtC,KAAK,EACL4B,MAAM,EACNC,MAAM,EACNG,cAAc,EACdC,eAAe,EACf,CAAC,EACD,CAAC,EACDD,cAAc,EACdC,eACF,CAAC,CAAA;;AAED;YACAhB,MAAM,CAACG,KAAK,CAACI,GAAG,CAAC,CAACE,GAAG,CAAC,GAAG;AACvBa,cAAAA,CAAC,EAAEX,MAAM;AACTY,cAAAA,CAAC,EAAEX,MAAM;AACTY,cAAAA,KAAK,EAAEf,GAAG;AACVgB,cAAAA,KAAK,EAAElB,GAAG;AACVmB,cAAAA,IAAI,EAAET,WAAAA;aACP,CAAA;AAED/B,YAAAA,QAAQ,EAAE,CAAA;AACZ,WAAC,CAAC,CAAA;SACH,CAAA;QA1CD,KAAK,IAAIuB,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGb,QAAQ,EAAEa,GAAG,EAAE,EAAA;AAAAD,UAAAA,MAAA,CAAAC,GAAA,CAAA,CAAA;AAAA,SAAA;OA2CxC,CAAA;MA5CD,KAAK,IAAIF,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGR,QAAQ,EAAEQ,GAAG,EAAE,EAAA;AAAAD,QAAAA,KAAA,CAAAC,GAAA,CAAA,CAAA;AAAA,OAAA;MA8CvCtC,WAAW,CAACC,IAAI,EAAE,CAAA;MAClBD,WAAW,CAACQ,WAAW,EAAE,CAAA;AAEzB,MAAA,OAAOuB,MAAM,CAAA;AACf,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,EAAA,CAAA;AAvGU/B,WAAW,CAEfW,kBAAkB,GAAG,EAAE;;ACHhC,IAAM+C,WAAW,GAAG,IAAI3F,aAAa,EAAc,CAAA;AACnD2F,WAAW,CAACpF,UAAU,GAAG,SAASA,UAAUA,CAE1CC,GAAG,EACH;AAAA,EAAA,IAAAgB,KAAA,GAAA,IAAA,CAAA;AACAhB,EAAAA,GAAG,CAACoF,gBAAgB,CAClBC,YAAY,CAACC,OAAO,EACpB,YAAM;AACJtE,IAAAA,KAAI,CAACD,UAAU,CAACf,GAAG,CAAC,CAAA;AACtB,GAAC,EACD;AAAEuF,IAAAA,IAAI,EAAE,IAAA;AAAK,GACf,CAAC,CAAA;AACH,CAAC,CAAA;AAYD,IAAaC,SAAS,gBAAA,YAAA;AAKpB,EAAA,SAAAA,SACSC,CAAAA,OAAsB,EACrBC,OAAsB,EAC9B;AAAAjG,IAAAA,eAAA,OAAA+F,SAAA,CAAA,CAAA;IAAA,IANMG,CAAAA,aAAa,GAAmC,EAAE,CAAA;IAAA,IAClDC,CAAAA,YAAY,GAAkC,EAAE,CAAA;IAAA,IAG/CH,CAAAA,OAAsB,GAAtBA,OAAsB,CAAA;IAAA,IACrBC,CAAAA,OAAsB,GAAtBA,OAAsB,CAAA;AAC7B,GAAA;EAAC,OAAA9F,YAAA,CAAA4F,SAAA,EAAA,CAAA;IAAA3F,GAAA,EAAA,cAAA;IAAAC,KAAA,EAEJ,SAAA+F,YAAYA,CACVC,GAA+B,EAC/B9F,GAAkB,EAClB+F,QAAsC,EACnB;MACnB,IAAMC,WAAW,GAAGC,QAAQ,CAACH,GAAG,CAAC,GAAGA,GAAG,GAAGA,GAAG,CAACA,GAAG,CAAA;AAEjD,MAAA,IAAIX,WAAW,CAAClF,GAAG,CAAC+F,WAAW,CAAC,EAAE;QAChC,IAAME,UAAU,GAAGf,WAAW,CAAC3E,GAAG,CAACwF,WAAW,EAAEhG,GAAG,CAAC,CAAA;AAEpD,QAAA,IAAIkG,UAAU,CAACC,GAAG,CAACC,QAAQ,EAAE;AAC3BL,UAAAA,QAAQ,aAARA,QAAQ,KAAA,KAAA,CAAA,IAARA,QAAQ,CAAGG,UAAU,CAAC,CAAA;AAEtB,UAAA,OAAOA,UAAU,CAAA;AACnB,SAAA;AACF,OAAA;AAEA,MAAA,IAAI,CAACG,gBAAgB,CAACP,GAAG,EAAE9F,GAAG,CAAC,CAC5BsG,IAAI,CAAC,UAACC,KAAK,EAAK;AACfR,QAAAA,QAAQ,aAARA,QAAQ,KAAA,KAAA,CAAA,IAARA,QAAQ,CAAGQ,KAAK,CAAC,CAAA;AACnB,OAAC,CAAC,CAAA,OAAA,CACI,CAAC,UAACC,MAAM,EAAK;AACjBC,QAAAA,OAAO,CAACC,KAAK,CAACF,MAAM,CAAC,CAAA;AACvB,OAAC,CAAC,CAAA;AAEJ,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAAC,GAAA,EAAA;IAAA3G,GAAA,EAAA,kBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAuG,gBAAgBA,CACdP,GAA+B,EAC/B9F,GAAkB,EACG;AAAA,MAAA,IAAA2G,MAAA,GAAA,IAAA,CAAA;MACrB,IAAMX,WAAW,GAAGC,QAAQ,CAACH,GAAG,CAAC,GAAGA,GAAG,GAAGA,GAAG,CAACA,GAAG,CAAA;AAEjD,MAAA,IAAI,CAACG,QAAQ,CAACH,GAAG,CAAC,IAAI,CAACX,WAAW,CAAClF,GAAG,CAAC+F,WAAW,CAAC,EAAE;AACnD,QAAA,IAAME,UAAsB,GAAG;AAC7BC,UAAAA,GAAG,EAAEL,GAAG;AACRhF,UAAAA,IAAI,EAAE,CAACgF,GAAG,CAACjD,YAAY,IAAIiD,GAAG,CAAChD,KAAK,EAAEgD,GAAG,CAAC9C,aAAa,IAAI8C,GAAG,CAAC7C,MAAM,CAAC;UACtEQ,QAAQ,EAAEmD,sBAAsB,CAACd,GAAG,CAAA;SACrC,CAAA;QAEDX,WAAW,CAACjF,GAAG,CAAC8F,WAAW,EAAEE,UAAU,EAAElG,GAAG,CAAC,CAAA;AAC/C,OAAA;AAEA,MAAA,IAAImF,WAAW,CAAClF,GAAG,CAAC+F,WAAW,CAAC,EAAE;QAChC,IAAME,WAAU,GAAGf,WAAW,CAAC3E,GAAG,CAACwF,WAAW,EAAEhG,GAAG,CAAC,CAAA;AAEpD,QAAA,IAAIkG,WAAU,CAACC,GAAG,CAACC,QAAQ,EAAE;AAC3B,UAAA,OAAOS,OAAO,CAACC,OAAO,CAACZ,WAAU,CAAC,CAAA;AACpC,SAAA;AAEA,QAAA,OAAO,IAAIW,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;AACtCb,UAAAA,WAAU,CAACC,GAAG,CAACf,gBAAgB,CAAC,MAAM,EAAE,YAAM;YAC5Cc,WAAU,CAACpF,IAAI,GAAG,CAChBoF,WAAU,CAACC,GAAG,CAACtD,YAAY,IAAIqD,WAAU,CAACC,GAAG,CAACrD,KAAK,EACnDoD,WAAU,CAACC,GAAG,CAACnD,aAAa,IAAIkD,WAAU,CAACC,GAAG,CAAClD,MAAM,CACtD,CAAA;YACDiD,WAAU,CAACzC,QAAQ,GAAGmD,sBAAsB,CAACV,WAAU,CAACC,GAAG,CAAC,CAAA;YAC5DW,OAAO,CAACZ,WAAU,CAAC,CAAA;AACrB,WAAC,CAAC,CAAA;UAEFA,WAAU,CAACC,GAAG,CAACf,gBAAgB,CAAC,OAAO,EAAE,UAAC4B,EAAE,EAAK;YAC/CD,MAAM,CAACC,EAAE,CAAC,CAAA;AACZ,WAAC,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;AACJ,OAAA;AAEA,MAAA,OAAO,IAAIH,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;AACtC;QACA,IAAMxE,KAAK,GAAGoE,MAAI,CAAClB,OAAO,CAACwB,MAAM,CAACC,WAAW,EAAE,CAAA;AAE/C,QAAA,IAAI3E,KAAK,EAAE;AACT,UAAA,IAAM2D,YAAsB,GAAG;AAC7BC,YAAAA,GAAG,EAAE5D,KAAK;AACVzB,YAAAA,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACZ2C,QAAQ,EAAEmD,sBAAsB,CAACrE,KAAK,CAAA;WACvC,CAAA;UAED4C,WAAW,CAACjF,GAAG,CAAC8F,WAAW,EAAEE,YAAU,EAAElG,GAAG,CAAC,CAAA;UAE7CuC,KAAK,CAAC4E,MAAM,GAAG,YAAM;AACnBjB,YAAAA,YAAU,CAACpF,IAAI,GAAG,CAChByB,KAAK,CAACM,YAAY,IAAIN,KAAK,CAACO,KAAK,EACjCP,KAAK,CAACS,aAAa,IAAIT,KAAK,CAACU,MAAM,CACpC,CAAA;YACDiD,YAAU,CAACzC,QAAQ,GAAGmD,sBAAsB,CAACV,YAAU,CAACC,GAAG,CAAC,CAAA;YAC5DW,OAAO,CAACZ,YAAU,CAAC,CAAA;WACpB,CAAA;AACD3D,UAAAA,KAAK,CAAC6E,OAAO,GAAG,UAACJ,EAAE,EAAK;YACtBD,MAAM,CAACC,EAAE,CAAC,CAAA;WACX,CAAA;UACDzE,KAAK,CAAC8E,WAAW,GAAG,WAAW,CAAA;UAC/B9E,KAAK,CAACuD,GAAG,GAAGE,WAAW,CAAA;AACzB,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,EAAA;IAAAnG,GAAA,EAAA,wBAAA;IAAAC,KAAA,EAAA,YAAA;AAAA,MAAA,IAAAwH,uBAAA,GAAAC,iBAAA,cAAAC,mBAAA,EAAA,CAAAC,IAAA,CAED,SAAAC,OAAAA,CACE5B,GAA+B,EAC/B9F,GAAkB,EAAA;AAAA,QAAA,IAAAkG,UAAA,CAAA,CAAAyB,4BAAA,CAAA,CAAAtD,IAAA,CAAA,CAAAuD,qBAAA,CAAA,CAAAC,uBAAA,CAAA,CAAAC,qBAAA,CAAA,CAAAC,yBAAA,CAAA,CAAAC,qBAAA,CAAA,CAAAC,gBAAA,CAAA,CAAAC,WAAA,CAAA,CAAAC,YAAA,CAAA,CAAAC,YAAA,CAAA,CAAAC,gBAAA,CAAA,CAAAC,WAAA,CAAA;AAAA,QAAA,OAAAd,mBAAA,EAAA,CAAAe,IAAA,CAAA,UAAAC,QAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OAEO,IAAI,CAACrC,gBAAgB,CAACP,GAAG,EAAE9F,GAAG,CAAC,CAAA;AAAA,YAAA,KAAA,CAAA;cAAlDkG,UAAU,GAAAsC,QAAA,CAAAG,IAAA,CAAA;AAAA,cAAA,IAAA,EACZ,OAAOzC,UAAU,CAACmC,gBAAgB,KAAK,WAAW,CAAA,EAAA;AAAAG,gBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;AAAA,cAAA,OAAAF,QAAA,CAAAI,MAAA,CAAA,QAAA,EAC7C1C,UAAU,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA;AAGXyB,cAAAA,4BAA4B,GAAK,IAAI,CAAClC,OAAO,CAACwB,MAAM,CAApDU,4BAA4B,CAAA;AAAAtD,cAAAA,IAAA,GAElC,OAAOsD,4BAA4B,KAAK,SAAS,GAC7C,EAAE,GACFA,4BAA4B,EAAAC,qBAAA,GAAAvD,IAAA,CAH1BwD,uBAAuB,EAAvBA,uBAAuB,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA,EAAAE,qBAAA,GAAAzD,IAAA,CAAE0D,yBAAyB,EAAzBA,yBAAyB,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,GAAG,GAAAA,qBAAA,CAAA;AAIjEE,cAAAA,qBAAqB,GAAG,IAAI,CAACtC,OAAO,CAACmD,UAAU,CAClDC,iBAAiB,CAAA;AAAAb,cAAAA,gBAAA,GAAAc,cAAA,CACgB7C,UAAU,CAACpF,IAAI,EAA5CoH,CAAAA,CAAAA,EAAAA,WAAW,GAAAD,gBAAA,CAAEE,CAAAA,CAAAA,EAAAA,YAAY,GAAAF,gBAAA,CAAA,CAAA,CAAA,CAAA;cAC5BG,YAAuC,GAAGlC,UAAU,CAACC,GAAG,CAAA;AACxDkC,cAAAA,gBAAgB,GAAGhF,IAAI,CAACiB,GAAG,CAC7B,CAACuD,uBAAuB,GAAGA,uBAAuB,KAC/CK,WAAW,GAAGC,YAAY,CAAC,EAC9B9E,IAAI,CAAC2F,GAAG,CAAC,IAAI,EAAE3F,IAAI,CAACiB,GAAG,CAACyD,yBAAyB,EAAE,GAAG,CAAC,CACzD,CAAC,CAAA;AAEGO,cAAAA,WAAuB,GAAA1H,aAAA,CAAAA,aAAA,KACtBsF,UAAU,CAAA,EAAA,EAAA,EAAA;AACbmC,gBAAAA,gBAAgB,EAAhBA,gBAAAA;AAAgB,eAAA,CAAA,CAAA;AAGlBlD,cAAAA,WAAW,CAACxE,MAAM,CAACuF,UAAU,CAACC,GAAG,CAACL,GAAG,EAAEwC,WAAW,EAAEtI,GAAG,CAAC,CAAA;AAAC,cAAA,IAAA,CAErDgI,qBAAqB,EAAA;AAAAQ,gBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;AAAAF,cAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAAD,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OAEAV,qBAAqB,CAAC9B,UAAU,CAACC,GAAG,EAAE;gBACzD8C,WAAW,EAAEf,WAAW,GAAGG,gBAAgB;gBAC3Ca,YAAY,EAAEf,YAAY,GAAGE,gBAAAA;AAC/B,eAAC,CAAC,CAAA;AAAA,YAAA,KAAA,CAAA;cAHFD,YAAY,GAAAI,QAAA,CAAAG,IAAA,CAAA;AAAAH,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,MAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAAU,cAAAX,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAKZH,cAAAA,gBAAgB,GAAG,CAAC,CAAA;AAAC,YAAA,KAAA,CAAA;AAAAG,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,MAAA;AAAA,YAAA,KAAA,CAAA;AAGvBL,cAAAA,gBAAgB,GAAG,CAAC,CAAA;AAAC,YAAA,KAAA,CAAA;AAGvBC,cAAAA,WAAW,GAAA1H,aAAA,CAAAA,aAAA,CACN,EAAA,EAAA,IAAI,CAACiF,YAAY,CAACC,GAAG,EAAE9F,GAAG,CAAC,CAAA,EAAA,EAAA,EAAA;AAC9BoJ,gBAAAA,WAAW,EAAEhB,YAAY;AACzBC,gBAAAA,gBAAgB,EAAhBA,gBAAAA;eACD,CAAA,CAAA;AAEDlD,cAAAA,WAAW,CAACxE,MAAM,CAACuF,UAAU,CAACC,GAAG,CAACL,GAAG,EAAEwC,WAAW,EAAEtI,GAAG,CAAC,CAAA;AAAC,cAAA,OAAAwI,QAAA,CAAAI,MAAA,CAAA,QAAA,EAElDN,WAAW,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAE,QAAA,CAAA9G,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAgG,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;OACnB,CAAA,CAAA,CAAA;AAAA,MAAA,SArDK2B,sBAAsBA,CAAAC,EAAA,EAAAC,GAAA,EAAA;AAAA,QAAA,OAAAjC,uBAAA,CAAAkC,KAAA,CAAA,IAAA,EAAA5H,SAAA,CAAA,CAAA;AAAA,OAAA;AAAA,MAAA,OAAtByH,sBAAsB,CAAA;AAAA,KAAA,EAAA;AAAA,GAAA,EAAA;IAAAxJ,GAAA,EAAA,kBAAA;IAAAC,KAAA,EAAA,YAAA;AAAA,MAAA,IAAA2J,iBAAA,GAAAlC,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAuD5B,SAAAiC,QAAAA,CACE5D,GAA+B,EAC/BnC,KAAyB,EACzBjB,QAAoB,EACpB1C,GAAkB,EAAA;QAAA,IAAAkG,UAAA,EAAAyD,qBAAA,EAAAtH,qBAAA,EAAAL,oBAAA,EAAAsG,WAAA,CAAA;AAAA,QAAA,OAAAd,mBAAA,EAAA,CAAAe,IAAA,CAAA,UAAAqB,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAnB,IAAA,GAAAmB,SAAA,CAAAlB,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAkB,cAAAA,SAAA,CAAAlB,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OAEO,IAAI,CAACrC,gBAAgB,CAACP,GAAG,EAAE9F,GAAG,CAAC,CAAA;AAAA,YAAA,KAAA,CAAA;cAAlDkG,UAAU,GAAA0D,SAAA,CAAAjB,IAAA,CAAA;AAAAgB,cAAAA,qBAAA,GAEd3J,GAAG,CAAC6J,aAAa,CAACC,WAAW,EADvBzH,qBAAqB,GAAAsH,qBAAA,CAArBtH,qBAAqB,EAAEL,oBAAoB,GAAA2H,qBAAA,CAApB3H,oBAAoB,CAAA;cAGnDP,WAAW,CAACE,GAAG,GAAG;AAChBU,gBAAAA,qBAAqB,EAArBA,qBAAqB;AACrBL,gBAAAA,oBAAoB,EAApBA,oBAAoB;gBACpB0C,YAAY,EAAE,SAAdA,YAAYA,GAAA;AAAA,kBAAA,OAAQqF,sBAAsB,CAACrF,YAAY,EAAE,CAAA;AAAA,iBAAA;eAC1D,CAAA;AAEK4D,cAAAA,WAAuB,GAAA1H,aAAA,CAAAA,aAAA,CACxBsF,EAAAA,EAAAA,UAAU,CACVzE,EAAAA,WAAW,CAACa,UAAU,CACvB4D,UAAU,CAACC,GAAG,EACdD,UAAU,CAACzC,QAAQ,CAAC,CAAC,CAAC,EACtByC,UAAU,CAACzC,QAAQ,CAAC,CAAC,CAAC,EACtBf,QACF,CAAC,CAAA,CAAA;AAGHyC,cAAAA,WAAW,CAACxE,MAAM,CAACuF,UAAU,CAACC,GAAG,CAACL,GAAG,EAAEwC,WAAW,EAAEtI,GAAG,CAAC,CAAA;AAAC,cAAA,OAAA4J,SAAA,CAAAhB,MAAA,CAAA,QAAA,EAElDN,WAAW,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAsB,SAAA,CAAAlI,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAgI,QAAA,EAAA,IAAA,CAAA,CAAA;OACnB,CAAA,CAAA,CAAA;MAAA,SA7BKM,gBAAgBA,CAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,QAAA,OAAAX,iBAAA,CAAAD,KAAA,CAAA,IAAA,EAAA5H,SAAA,CAAA,CAAA;AAAA,OAAA;AAAA,MAAA,OAAhBoI,gBAAgB,CAAA;AAAA,KAAA,EAAA;AAAA,GAAA,EAAA;IAAAnK,GAAA,EAAA,cAAA;AAAAC,IAAAA,KAAA,EA+BtB,SAAAuK,YAAYA,CAACvE,GAA+B,EAAE9F,GAAkB,EAAE;AAChEmF,MAAAA,WAAW,CAACtE,OAAO,CAACoF,QAAQ,CAACH,GAAG,CAAC,GAAGA,GAAG,GAAGA,GAAG,CAACA,GAAG,EAAE9F,GAAG,CAAC,CAAA;AACzD,KAAA;AAAC,GAAA,EAAA;IAAAH,GAAA,EAAA,iBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAwK,eAAeA,CAACtK,GAAkB,EAAE;AAClCmF,MAAAA,WAAW,CAACpE,UAAU,CAACf,GAAG,CAAC,CAAA;AAC7B,KAAA;AAAC,GAAA,EAAA;IAAAH,GAAA,EAAA,wBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAyK,sBAAsBA,CACpBC,MAAqB,EACrBC,OAAgB,EAChBhF,OAAiC,EACjCiF,gBAAmC,EACnCC,GAAW,EACXrG,GAAiB,EACjByB,QAAoB,EACpB;AACA,MAAA,IAAM6E,UAAU,GAAG,IAAI,CAACC,kBAAkB,CAACJ,OAAO,CAAC,CAAA;MACnD,IAAIG,UAAU,IAAI,IAAI,CAAChF,YAAY,CAACgF,UAAU,CAAC,EAAE;AAC/C,QAAA,OAAO,IAAI,CAAChF,YAAY,CAACgF,UAAU,CAAC,CAAA;AACtC,OAAA;AAEA,MAAA,IAAQrI,KAAK,GAA4BkI,OAAO,CAAxClI,KAAK;QAAEuI,UAAU,GAAgBL,OAAO,CAAjCK,UAAU;QAAEC,SAAS,GAAKN,OAAO,CAArBM,SAAS,CAAA;AACpC,MAAA,IAAIjF,GAAsB,CAAA;MAC1B,IAAIkF,gBAAgB,GAAG,KAAK,CAAA;AAC5B;AACA,MAAA,IAAI/E,QAAQ,CAAC1D,KAAK,CAAC,EAAE;QACnB,IAAM2D,UAAU,GAAG,IAAI,CAACL,YAAY,CAACtD,KAAK,EAAEiI,MAAM,EAAEzE,QAAQ,CAAC,CAAA;AAC7DD,QAAAA,GAAG,GAAGI,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAVA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAU,CAAEC,GAAG,CAAA;OACtB,MAAM,IAAIuE,gBAAgB,EAAE;AAC3B5E,QAAAA,GAAG,GAAG4E,gBAAgB,CAAA;AACtBM,QAAAA,gBAAgB,GAAG,IAAI,CAAA;AACzB,OAAC,MAAM;AACLlF,QAAAA,GAAG,GAAGvD,KAA0B,CAAA;AAClC,OAAA;;AAEA;MACA,IAAM0I,aAAa,GAAGnF,GAAG,IAAIL,OAAO,CAACyF,aAAa,CAACpF,GAAG,EAAEgF,UAAU,CAAC,CAAA;AAEnE,MAAA,IAAIG,aAAa,EAAE;AACjB,QAAA,IAAIE,GAAS,CAAA;AACb;AACA,QAAA,IAAIJ,SAAS,EAAE;AACbI,UAAAA,GAAG,GAAGC,qBAAqB,CACzBC,cAAc,CAACN,SAAS,CAAC,EACzB,IAAIO,aAAa,CAAC,EAAE,CACtB,CAAC,CAAA;AACH,SAAC,MAAM;UACLH,GAAG,GAAGI,IAAI,CAACC,QAAQ,CAACD,IAAI,CAACE,MAAM,EAAE,CAAC,CAAA;AACpC,SAAA;AAEA,QAAA,IAAIT,gBAAgB,EAAE;AACpBO,UAAAA,IAAI,CAACG,KAAK,CAACP,GAAG,EAAEA,GAAG,EAAE,CAAC,CAAC,GAAGR,GAAG,EAAE,CAAC,GAAGA,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;AAC7C,SAAA;QAEAM,aAAa,CAACU,YAAY,CAAC;AACzBC,UAAAA,CAAC,EAAET,GAAG,CAAC,CAAC,CAAC;AACTU,UAAAA,CAAC,EAAEV,GAAG,CAAC,CAAC,CAAC;AACTW,UAAAA,CAAC,EAAEX,GAAG,CAAC,CAAC,CAAC;AACTY,UAAAA,CAAC,EAAEZ,GAAG,CAAC,CAAC,CAAC;UACTa,CAAC,EAAEb,GAAG,CAAC,EAAE,CAAC,GAAG7G,GAAG,CAAC,CAAC,CAAC;UACnB2H,CAAC,EAAEd,GAAG,CAAC,EAAE,CAAC,GAAG7G,GAAG,CAAC,CAAC,CAAA;AACpB,SAAC,CAAC,CAAA;AACJ,OAAA;MAEA,IAAIsG,UAAU,IAAIK,aAAa,EAAE;AAC/B,QAAA,IAAI,CAACrF,YAAY,CAACgF,UAAU,CAAC,GAAGK,aAAa,CAAA;AAC/C,OAAA;AAEA,MAAA,OAAOA,aAAa,CAAA;AACtB,KAAA;AAAC,GAAA,EAAA;IAAApL,GAAA,EAAA,qBAAA;AAAAC,IAAAA,KAAA,EAED,SAAAoM,mBAAmBA,CACjBC,MAAsB,EACtB1G,OAAiC,EACjC;AACA,MAAA,IAAM5F,GAAG,GAAG,IAAI,CAACuM,mBAAmB,CAACD,MAAM,CAAC,CAAA;AAC5C,MAAA,IAAQE,IAAI,GAAqDF,MAAM,CAA/DE,IAAI;QAAEC,KAAK,GAA8CH,MAAM,CAAzDG,KAAK;QAAEhI,GAAG,GAAyC6H,MAAM,CAAlD7H,GAAG;QAAExB,KAAK,GAAkCqJ,MAAM,CAA7CrJ,KAAK;QAAEG,MAAM,GAA0BkJ,MAAM,CAAtClJ,MAAM;QAAEsJ,KAAK,GAAmBJ,MAAM,CAA9BI,KAAK;QAAEC,EAAE,GAAeL,MAAM,CAAvBK,EAAE;QAAEC,EAAE,GAAWN,MAAM,CAAnBM,EAAE;QAAE3L,IAAI,GAAKqL,MAAM,CAAfrL,IAAI,CAAA;AAE5D,MAAA,IAAI,IAAI,CAAC6E,aAAa,CAAC9F,GAAG,CAAC,EAAE;AAC3B,QAAA,OAAO,IAAI,CAAC8F,aAAa,CAAC9F,GAAG,CAAC,CAAA;AAChC,OAAA;MAEA,IAAI6M,QAA+B,GAAG,IAAI,CAAA;AAC1C,MAAA,IAAIL,IAAI,KAAKM,YAAY,CAACC,cAAc,EAAE;QACxC,IAAAC,qBAAA,GAA2BC,qBAAqB,CAC9CxI,GAAG,EACHxB,KAAK,EACLG,MAAM,EACNsJ,KACF,CAAC;UALOQ,EAAE,GAAAF,qBAAA,CAAFE,EAAE;UAAEC,EAAE,GAAAH,qBAAA,CAAFG,EAAE;UAAEC,EAAE,GAAAJ,qBAAA,CAAFI,EAAE;UAAEC,EAAE,GAAAL,qBAAA,CAAFK,EAAE,CAAA;AAMtB;AACAR,QAAAA,QAAQ,GAAGjH,OAAO,CAAC0H,oBAAoB,CAACJ,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,CAAA;AACzD,OAAC,MAAM,IAAIb,IAAI,KAAKM,YAAY,CAACS,cAAc,EAAE;AAC/C,QAAA,IAAAC,qBAAA,GAAoBC,qBAAqB,CACvChJ,GAAG,EACHxB,KAAK,EACLG,MAAM,EACNuJ,EAAE,EACFC,EAAE,EACF3L,IACF,CAAC;UAPOgE,CAAC,GAAAuI,qBAAA,CAADvI,CAAC;UAAEC,CAAC,GAAAsI,qBAAA,CAADtI,CAAC;UAAEwI,CAAC,GAAAF,qBAAA,CAADE,CAAC,CAAA;AAQf;AACAb,QAAAA,QAAQ,GAAGjH,OAAO,CAAC+H,oBAAoB,CAAC1I,CAAC,EAAEC,CAAC,EAAE,CAAC,EAAED,CAAC,EAAEC,CAAC,EAAEwI,CAAC,CAAC,CAAA;AAC3D,OAAA;AAEA,MAAA,IAAIb,QAAQ,EAAE;AACZJ,QAAAA,KAAK,CAAClL,OAAO,CAAC,UAAAqM,KAAA,EAAuB;AAAA,UAAA,IAApBC,MAAM,GAAAD,KAAA,CAANC,MAAM;YAAEC,KAAK,GAAAF,KAAA,CAALE,KAAK,CAAA;AAC5B,UAAA,IAAID,MAAM,CAACE,IAAI,KAAKC,QAAQ,CAACC,WAAW,EAAE;AAAA,YAAA,IAAAC,SAAA,CAAA;YACxC,CAAAA,SAAA,GAAArB,QAAQ,MAAA,IAAA,IAAAqB,SAAA,KAARA,KAAAA,CAAAA,IAAAA,SAAA,CAAUC,YAAY,CAACN,MAAM,CAAC5N,KAAK,GAAG,GAAG,EAAE6N,KAAK,CAACM,QAAQ,EAAE,CAAC,CAAA;AAC9D,WAAA;AACF,SAAC,CAAC,CAAA;AAEF,QAAA,IAAI,CAACtI,aAAa,CAAC9F,GAAG,CAAC,GAAG6M,QAAQ,CAAA;AACpC,OAAA;AAEA,MAAA,OAAO,IAAI,CAAC/G,aAAa,CAAC9F,GAAG,CAAC,CAAA;AAChC,KAAA;AAAC,GAAA,EAAA;IAAAA,GAAA,EAAA,qBAAA;AAAAC,IAAAA,KAAA,EAED,SAAQsM,mBAAmBA,CAACD,MAAsB,EAAU;AAC1D,MAAA,IAAQE,IAAI,GAAqDF,MAAM,CAA/DE,IAAI;QAAE/H,GAAG,GAAgD6H,MAAM,CAAzD7H,GAAG;QAAExB,KAAK,GAAyCqJ,MAAM,CAApDrJ,KAAK;QAAEG,MAAM,GAAiCkJ,MAAM,CAA7ClJ,MAAM;QAAEqJ,KAAK,GAA0BH,MAAM,CAArCG,KAAK;QAAEC,KAAK,GAAmBJ,MAAM,CAA9BI,KAAK;QAAEC,EAAE,GAAeL,MAAM,CAAvBK,EAAE;QAAEC,EAAE,GAAWN,MAAM,CAAnBM,EAAE;QAAE3L,IAAI,GAAKqL,MAAM,CAAfrL,IAAI,CAAA;MAC5D,OAAAoN,WAAAA,CAAAA,MAAA,CAAmB7B,IAAI,EAAA,GAAA,CAAA,CAAA6B,MAAA,CAAI,CAAA3B,KAAK,KAALA,IAAAA,IAAAA,KAAK,uBAALA,KAAK,CAAE0B,QAAQ,EAAE,KAAI,CAAC,EAAA,GAAA,CAAA,CAAAC,MAAA,CAAI,CAAA1B,EAAE,KAAFA,IAAAA,IAAAA,EAAE,uBAAFA,EAAE,CAAEyB,QAAQ,EAAE,KAAI,CAAC,EAAA,GAAA,CAAA,CAAAC,MAAA,CACtE,CAAAzB,EAAE,KAAFA,IAAAA,IAAAA,EAAE,uBAAFA,EAAE,CAAEwB,QAAQ,EAAE,KAAI,CAAC,EAAA,GAAA,CAAA,CAAAC,MAAA,CACjB,CAAApN,IAAI,KAAJA,IAAAA,IAAAA,IAAI,uBAAJA,IAAI,CAAEmN,QAAQ,EAAE,KAAI,CAAC,EAAA,GAAA,CAAA,CAAAC,MAAA,CAAI5J,GAAG,CAAC,CAAC,CAAC,OAAA4J,MAAA,CAAI5J,GAAG,CAAC,CAAC,CAAC,EAAA4J,GAAAA,CAAAA,CAAAA,MAAA,CAAIpL,KAAK,EAAA,GAAA,CAAA,CAAAoL,MAAA,CAAIjL,MAAM,OAAAiL,MAAA,CAAI5B,KAAK,CACtEzI,GAAG,CAAC,UAAAsK,KAAA,EAAA;AAAA,QAAA,IAAGT,MAAM,GAAAS,KAAA,CAANT,MAAM;UAAEC,KAAK,GAAAQ,KAAA,CAALR,KAAK,CAAA;AAAA,QAAA,OAAA,EAAA,CAAAO,MAAA,CAAUR,MAAM,CAAAQ,CAAAA,MAAA,CAAGP,KAAK,CAAA,CAAA;AAAA,OAAE,CAAC,CAC/CS,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA;AACd,KAAA;AAAC,GAAA,EAAA;IAAAvO,GAAA,EAAA,oBAAA;AAAAC,IAAAA,KAAA,EAED,SAAQ+K,kBAAkBA,CAACJ,OAAgB,EAAE;AAC3C,MAAA,IAAQlI,KAAK,GAAiBkI,OAAO,CAA7BlI,KAAK;QAAEuI,UAAU,GAAKL,OAAO,CAAtBK,UAAU,CAAA;AACzB;AACA,MAAA,IAAI7E,QAAQ,CAAC1D,KAAK,CAAC,EAAE;AACnB,QAAA,OAAA,UAAA,CAAA2L,MAAA,CAAkB3L,KAAK,EAAA2L,GAAAA,CAAAA,CAAAA,MAAA,CAAIpD,UAAU,CAAA,CAAA;AACvC,OAAA;AACA,MAAA,IAAKvI,KAAK,CAAU8L,QAAQ,KAAK,MAAM,EAAE;QACvC,OAAAH,UAAAA,CAAAA,MAAA,CAAmB3L,KAAK,CAAUhC,MAAM,EAAA2N,GAAAA,CAAAA,CAAAA,MAAA,CAAIpD,UAAU,CAAA,CAAA;AACxD,OAAA;AACF,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,GAAA;AA1UUtF,SAAS,CACb8I,aAAa,GAAG,CAAC,CAACvE,sBAAsB,CAACrF,YAAY,EAAE,CAAA;AA4UhE,SAASkC,sBAAsBA,CAACT,GAAqB,EAAoB;AACvE,EAAA,IAAI,CAACA,GAAG,CAACC,QAAQ,EAAE;AACjB,IAAA,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACf,GAAA;EAEA,IAAOtD,KAAK,GACVqD,GAAG,CAACtD,YAAY,IAAIsD,GAAG,CAACrD,KAAK;AADjBG,IAAAA,MAAM,GAElBkD,GAAG,CAACnD,aAAa,IAAImD,GAAG,CAAClD,MAAM,CAAA;EAGjC,IAAIQ,QAAQ,GAAG,GAAG,CAAA;EAElB,CAAC,GAAG,EAAE,GAAG,CAAC,CAACrC,OAAO,CAAC,UAACN,IAAI,EAAK;IAC3B,IAAMyN,IAAI,GAAGlL,IAAI,CAACC,IAAI,CAACL,MAAM,GAAGnC,IAAI,CAAC,CAAA;IACrC,IAAM0N,IAAI,GAAGnL,IAAI,CAACC,IAAI,CAACR,KAAK,GAAGhC,IAAI,CAAC,CAAA;AAEpC,IAAA,IAAIyN,IAAI,GAAGC,IAAI,GAAG,GAAG,EAAE;AACrB/K,MAAAA,QAAQ,GAAG3C,IAAI,CAAA;AACjB,KAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,OAAO,CAAC2C,QAAQ,EAAEA,QAAQ,CAAC,CAAA;AAC7B;;AC/YA,IAAagL,eAAe,gBAAA,YAAA;AAAA,EAAA,SAAAA,eAAA,GAAA;AAAAhP,IAAAA,eAAA,OAAAgP,eAAA,CAAA,CAAA;AAAA,GAAA;EAAA,OAAA7O,YAAA,CAAA6O,eAAA,EAAA,CAAA;IAAA5O,GAAA,EAAA,OAAA;AAAAC,IAAAA,KAAA,EAG1B,SAAA0J,KAAKA,CAAC/D,OAA0D,EAAE;AAChE,MAAA,IAAQiJ,gBAAgB,GAAkCjJ,OAAO,CAAzDiJ,gBAAgB;QAAEC,gBAAgB,GAAgBlJ,OAAO,CAAvCkJ,gBAAgB;QAAEC,SAAS,GAAKnJ,OAAO,CAArBmJ,SAAS,CAAA;MACrD,IAAMC,MAAM,GAAGF,gBAAgB,CAACG,IAAI,CAACjF,aAAa,CAACC,WAAW,CAAA;MAE9D,IAAMiF,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAC5BvE,MAAa,EACb5H,UAAkB,EAClBG,WAAmB,EAChB;AACH,QAAA,IAAAiM,mBAAA,GAA0BxE,MAAM,CAACyE,WAAW;UAApCnM,KAAK,GAAAkM,mBAAA,CAALlM,KAAK;UAAEG,MAAM,GAAA+L,mBAAA,CAAN/L,MAAM,CAAA;AACrB,QAAA,IAAIH,KAAK,IAAI,CAACG,MAAM,EAAE;UACpBuH,MAAM,CAAC0E,YAAY,CAAC,QAAQ,EAAGnM,WAAW,GAAGH,UAAU,GAAIE,KAAK,CAAC,CAAA;AACnE,SAAC,MAAM,IAAI,CAACA,KAAK,IAAIG,MAAM,EAAE;UAC3BuH,MAAM,CAAC0E,YAAY,CAAC,OAAO,EAAGtM,UAAU,GAAGG,WAAW,GAAIE,MAAM,CAAC,CAAA;AACnE,SAAA;OACD,CAAA;AAED,MAAA,IAAMkM,aAAa,GAAG,SAAhBA,aAAaA,CAAInD,CAAiB,EAAK;AAC3C,QAAA,IAAMxB,MAAM,GAAGwB,CAAC,CAACoD,MAAe,CAAA;AAChC,QAAA,IAAQf,QAAQ,GAAiB7D,MAAM,CAA/B6D,QAAQ;UAAEgB,UAAU,GAAK7E,MAAM,CAArB6E,UAAU,CAAA;AAC5B,QAAA,IAAIhB,QAAQ,KAAKiB,KAAK,CAACC,KAAK,EAAE;AAC5B,UAAA,IAAQzJ,GAAG,GAAsBuJ,UAAU,CAAnCvJ,GAAG;YAAE0J,eAAe,GAAKH,UAAU,CAA9BG,eAAe,CAAA;UAE5BZ,SAAS,CAAC/I,YAAY,CACpBC,GAAG,EACH0E,MAAM,EACN,UAAAnG,IAAA,EAAgC;AAAA,YAAA,IAAAoL,QAAA,GAAApL,IAAA,CAA7B8B,GAAG;cAAIrD,KAAK,GAAA2M,QAAA,CAAL3M,KAAK;cAAEG,MAAM,GAAAwM,QAAA,CAANxM,MAAM,CAAA;AACrB,YAAA,IAAIuM,eAAe,EAAE;AACnBT,cAAAA,wBAAwB,CAACvE,MAAM,EAAE1H,KAAK,EAAEG,MAAM,CAAC,CAAA;AACjD,aAAA;YAEAuH,MAAM,CAACkF,KAAK,EAAE,CAAA;YACdhB,gBAAgB,CAACgB,KAAK,EAAE,CAAA;AAC1B,WACF,CAAC,CAAA;AACH,SAAA;OACD,CAAA;AAED,MAAA,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAI3D,CAAgB,EAAK;AACnD,QAAA,IAAMxB,MAAM,GAAGwB,CAAC,CAACoD,MAAe,CAAA;AAChC,QAAA,IAAQQ,QAAQ,GAA0B5D,CAAC,CAAnC4D,QAAQ;UAAEC,SAAS,GAAe7D,CAAC,CAAzB6D,SAAS;UAAEC,QAAQ,GAAK9D,CAAC,CAAd8D,QAAQ,CAAA;QAErC,IAAItF,MAAM,CAAC6D,QAAQ,KAAKiB,KAAK,CAACC,KAAK,IAAIK,QAAQ,KAAK,KAAK,EAAE;AACzD,UAAA,OAAA;AACF,SAAA;QAEA,IAAIC,SAAS,KAAKC,QAAQ,EAAE;AAC1BlB,UAAAA,SAAS,CAACvE,YAAY,CACpBwF,SAAS,EACTrF,MACF,CAAC,CAAA;AACH,SAAA;AAEA,QAAA,IAAIvE,QAAQ,CAAC6J,QAAQ,CAAC,EAAE;AACtBlB,UAAAA,SAAS,CACNvI,gBAAgB,CAACyJ,QAAQ,EAAEtF,MAAuB,CAAC,CACnDlE,IAAI,CAAC,UAAAmH,KAAA,EAAgC;AAAA,YAAA,IAAAsC,SAAA,GAAAtC,KAAA,CAA7BtH,GAAG;cAAIrD,KAAK,GAAAiN,SAAA,CAALjN,KAAK;cAAEG,MAAM,GAAA8M,SAAA,CAAN9M,MAAM,CAAA;AAC3B,YAAA,IAAIuH,MAAM,CAAC6E,UAAU,CAACG,eAAe,EAAE;AACrCT,cAAAA,wBAAwB,CAACvE,MAAM,EAAE1H,KAAK,EAAEG,MAAM,CAAC,CAAA;AACjD,aAAA;YAEAuH,MAAM,CAACkF,KAAK,EAAE,CAAA;YACdhB,gBAAgB,CAACgB,KAAK,EAAE,CAAA;WACzB,CAAC,CACI,OAAA,CAAA,CAAC,YAAM;AACX;AAAA,WACD,CAAC,CAAA;AACN,SAAA;OACD,CAAA;MAEDhB,gBAAgB,CAACsB,KAAK,CAACC,IAAI,CAACC,GAAG,CAACzB,eAAe,CAAC0B,GAAG,EAAE,YAAM;QACzDtB,MAAM,CAACzJ,gBAAgB,CAACC,YAAY,CAAC+K,OAAO,EAAEjB,aAAa,CAAC,CAAA;QAC5DN,MAAM,CAACzJ,gBAAgB,CACrBC,YAAY,CAACgL,aAAa,EAC1BV,sBACF,CAAC,CAAA;AACH,OAAC,CAAC,CAAA;MAEFjB,gBAAgB,CAACsB,KAAK,CAACM,OAAO,CAACJ,GAAG,CAACzB,eAAe,CAAC0B,GAAG,EAAE,YAAM;QAC5DtB,MAAM,CAAC0B,mBAAmB,CAAClL,YAAY,CAAC+K,OAAO,EAAEjB,aAAa,CAAC,CAAA;QAC/DN,MAAM,CAAC0B,mBAAmB,CACxBlL,YAAY,CAACgL,aAAa,EAC1BV,sBACF,CAAC,CAAA;AACH,OAAC,CAAC,CAAA;AACJ,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,EAAA,CAAA;AAxFUlB,eAAe,CACnB0B,GAAG,GAAG,WAAW;;ACPbK,IAAAA,MAAM,0BAAAC,qBAAA,EAAA;AAAA,EAAA,SAAAD,MAAA,GAAA;AAAA,IAAA,IAAAxP,KAAA,CAAA;AAAAvB,IAAAA,eAAA,OAAA+Q,MAAA,CAAA,CAAA;AAAA,IAAA,KAAA,IAAAE,IAAA,GAAA9O,SAAA,CAAAC,MAAA,EAAA8O,IAAA,GAAA1P,IAAAA,KAAA,CAAAyP,IAAA,GAAAE,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA,EAAA,EAAA;AAAAD,MAAAA,IAAA,CAAAC,IAAA,CAAAhP,GAAAA,SAAA,CAAAgP,IAAA,CAAA,CAAA;AAAA,KAAA;AAAA5P,IAAAA,KAAA,GAAA6P,UAAA,CAAA,IAAA,EAAAL,MAAA,EAAAtC,EAAAA,CAAAA,MAAA,CAAAyC,IAAA,CAAA,CAAA,CAAA;IAAA3P,KAAA,CACjB8P,IAAI,GAAG,cAAc,CAAA;AAAA,IAAA,OAAA9P,KAAA,CAAA;AAAA,GAAA;EAAA+P,SAAA,CAAAP,MAAA,EAAAC,qBAAA,CAAA,CAAA;EAAA,OAAA7Q,YAAA,CAAA4Q,MAAA,EAAA,CAAA;IAAA3Q,GAAA,EAAA,MAAA;AAAAC,IAAAA,KAAA,EACrB,SAAAmQ,IAAIA,CAACvK,OAAsB,EAAQ;AACjC;AACA,MAAA,IAAI,CAACD,OAAO,CAACmJ,SAAS,GAAG,IAAIpJ,SAAS,CAAC,IAAI,CAACC,OAAO,EAAEC,OAAO,CAAC,CAAA;AAC7D,MAAA,IAAI,CAACsL,kBAAkB,CAAC,IAAIvC,eAAe,EAAE,CAAC,CAAA;AAChD,KAAA;AAAC,GAAA,EAAA;IAAA5O,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EACD,SAAAwQ,OAAOA,GAAS;MACd,IAAI,CAACW,yBAAyB,EAAE,CAAA;AAClC,KAAA;AAAC,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CATyBC,sBAAsB;;;;"}
/*!
* @antv/g-plugin-image-loader
* @description A G plugin for loading image
* @version 2.1.26
* @date 7/30/2025, 1:35:52 PM
* @version 2.2.0
* @date 10/13/2025, 7:02:12 AM
* @author AntVis

@@ -593,6 +593,4 @@ * @docs https://g.antv.antgroup.com/

}
// set dirty rectangle flag
object.renderable.dirty = true;
renderingService.dirtify();
object.dirty();
renderingService.dirty();
});

@@ -620,6 +618,4 @@ }

}
// set dirty rectangle flag
object.renderable.dirty = true;
renderingService.dirtify();
object.dirty();
renderingService.dirty();
})["catch"](function () {

@@ -626,0 +622,0 @@ //

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sources":["../src/RefCountCache.ts","../src/ImageSlicer.ts","../src/ImagePool.ts","../src/LoadImagePlugin.ts","../src/index.ts"],"sourcesContent":["import { DisplayObject } from '@antv/g-lite';\n\nexport class RefCountCache<CacheValue> {\n private cacheStore = new Map<\n string,\n { value: CacheValue; counter: Set<number> }\n >();\n\n onRefAdded(ref: DisplayObject) {}\n\n has(key: string) {\n return this.cacheStore.has(key);\n }\n\n put(key: string, item: CacheValue, ref: DisplayObject) {\n if (this.cacheStore.has(key)) {\n return false;\n }\n\n this.cacheStore.set(key, {\n value: item,\n counter: new Set([ref.entity]),\n });\n this.onRefAdded(ref);\n\n return true;\n }\n\n get(key: string, ref: DisplayObject) {\n const cacheItem = this.cacheStore.get(key);\n if (!cacheItem) {\n return null;\n }\n\n if (!cacheItem.counter.has(ref.entity)) {\n cacheItem.counter.add(ref.entity);\n this.onRefAdded(ref);\n }\n\n return cacheItem.value;\n }\n\n update(key: string, value: CacheValue, ref: DisplayObject) {\n const cacheItem = this.cacheStore.get(key);\n if (!cacheItem) {\n return false;\n }\n\n cacheItem.value = { ...cacheItem.value, ...value };\n if (!cacheItem.counter.has(ref.entity)) {\n cacheItem.counter.add(ref.entity);\n this.onRefAdded(ref);\n }\n\n return true;\n }\n\n release(key: string, ref: DisplayObject) {\n const cacheItem = this.cacheStore.get(key);\n if (!cacheItem) {\n return false;\n }\n\n cacheItem.counter.delete(ref.entity);\n\n if (cacheItem.counter.size <= 0) {\n this.cacheStore.delete(key);\n }\n\n return true;\n }\n\n releaseRef(ref: DisplayObject) {\n Array.from(this.cacheStore.keys()).forEach((key) => {\n this.release(key, ref);\n });\n }\n\n getSize() {\n return this.cacheStore.size;\n }\n\n clear() {\n this.cacheStore.clear();\n }\n}\n","const tasks: (() => void)[] = [];\nlet nextFrameTasks: (() => void)[] = [];\n\ninterface API {\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n createCanvas: () => HTMLCanvasElement | OffscreenCanvas;\n}\n\nexport interface SliceResult {\n tileSize: [number, number];\n /** [rows, cols] */\n gridSize: [number, number];\n /**\n * @example\n * ```\n * [\n * // tileY=0\n * [tileX=0, tileX=1, ...],\n * // tileY=1\n * [tileX=0, tileX=1, ...],\n * ]\n * ```\n */\n tiles: (null | {\n x: number;\n y: number;\n tileX: number;\n tileY: number;\n data: HTMLCanvasElement | OffscreenCanvas;\n })[][];\n}\n\nexport class ImageSlicer {\n static api: API;\n static TASK_NUM_PER_FRAME = 10;\n static rafId: ReturnType<typeof requestAnimationFrame>;\n\n static stop(api = ImageSlicer.api) {\n if (ImageSlicer.rafId) {\n api.cancelAnimationFrame(ImageSlicer.rafId);\n ImageSlicer.rafId = null;\n }\n }\n\n static executeTask(api = ImageSlicer.api) {\n if (tasks.length <= 0 && nextFrameTasks.length <= 0) {\n return;\n }\n\n nextFrameTasks.forEach((task) => task());\n nextFrameTasks = tasks.splice(0, ImageSlicer.TASK_NUM_PER_FRAME);\n\n ImageSlicer.rafId = api.requestAnimationFrame(() => {\n ImageSlicer.executeTask(api);\n });\n }\n\n static sliceImage(\n image: HTMLImageElement,\n sliceWidth: number,\n sliceHeight: number,\n rerender: () => void,\n overlap = 0,\n api = ImageSlicer.api,\n ) {\n const imageWidth = image.naturalWidth || image.width;\n const imageHeight = image.naturalHeight || image.height;\n\n // 计算步长(考虑重叠区域)\n const strideW = sliceWidth - overlap;\n const strideH = sliceHeight - overlap;\n\n // 计算网格尺寸\n const gridCols = Math.ceil(imageWidth / strideW);\n const gridRows = Math.ceil(imageHeight / strideH);\n\n const result: SliceResult = {\n tileSize: [sliceWidth, sliceHeight],\n gridSize: [gridRows, gridCols],\n tiles: Array(gridRows)\n .fill(null)\n .map(() => Array(gridCols).fill(null) as SliceResult['tiles'][number]),\n };\n\n // 遍历网格创建切片\n for (let row = 0; row < gridRows; row++) {\n for (let col = 0; col < gridCols; col++) {\n tasks.push(() => {\n // 计算当前切片的坐标\n const startX = col * strideW;\n const startY = row * strideH;\n\n // 处理最后一列/行的特殊情况\n const [tempSliceWidth, tempSliceHeight] = [\n Math.min(sliceWidth, imageWidth - startX),\n Math.min(sliceHeight, imageHeight - startY),\n ];\n\n // 创建切片canvas\n const sliceCanvas = api.createCanvas();\n sliceCanvas.width = sliceWidth;\n sliceCanvas.height = sliceHeight;\n const sliceCtx = sliceCanvas.getContext('2d');\n\n // 将图像部分绘制到切片canvas上\n sliceCtx.drawImage(\n image,\n startX,\n startY,\n tempSliceWidth,\n tempSliceHeight,\n 0,\n 0,\n tempSliceWidth,\n tempSliceHeight,\n );\n\n // 存储切片信息\n result.tiles[row][col] = {\n x: startX,\n y: startY,\n tileX: col,\n tileY: row,\n data: sliceCanvas,\n };\n\n rerender();\n });\n }\n }\n\n ImageSlicer.stop();\n ImageSlicer.executeTask();\n\n return result;\n }\n}\n","import {\n DisplayObject,\n GradientType,\n LinearGradient,\n Pattern,\n RadialGradient,\n Rect,\n Tuple3Number,\n UnitType,\n computeLinearGradient,\n computeRadialGradient,\n parseTransform,\n parsedTransformToMat4,\n Image,\n OffscreenCanvasCreator,\n ElementEvent,\n type CanvasContext,\n type GlobalRuntime,\n} from '@antv/g-lite';\nimport { isString } from '@antv/util';\nimport { mat4 } from 'gl-matrix';\nimport { RefCountCache } from './RefCountCache';\nimport { type SliceResult, ImageSlicer } from './ImageSlicer';\n\nexport interface ImageCache extends Partial<SliceResult> {\n img: HTMLImageElement;\n /** [width, height] */\n size: [number, number];\n downSampled?: ImageBitmap | HTMLImageElement;\n downSamplingRate?: number;\n}\n\nconst IMAGE_CACHE = new RefCountCache<ImageCache>();\nIMAGE_CACHE.onRefAdded = function onRefAdded(\n this: RefCountCache<ImageCache>,\n ref,\n) {\n ref.addEventListener(\n ElementEvent.DESTROY,\n () => {\n this.releaseRef(ref);\n },\n { once: true },\n );\n};\n\nexport type GradientParams = (LinearGradient & RadialGradient) & {\n width: number;\n height: number;\n /**\n * Top-left corner\n */\n min: [number, number];\n type: GradientType;\n};\n\nexport class ImagePool {\n static isSupportTile = !!OffscreenCanvasCreator.createCanvas();\n private gradientCache: Record<string, CanvasGradient> = {};\n private patternCache: Record<string, CanvasPattern> = {};\n\n constructor(\n public context: CanvasContext,\n private runtime: GlobalRuntime,\n ) {}\n\n getImageSync(\n src: Image['attributes']['src'],\n ref: DisplayObject,\n callback?: (cache: ImageCache) => void,\n ): ImageCache | null {\n const imageSource = isString(src) ? src : src.src;\n\n if (IMAGE_CACHE.has(imageSource)) {\n const imageCache = IMAGE_CACHE.get(imageSource, ref);\n\n if (imageCache.img.complete) {\n callback?.(imageCache);\n\n return imageCache;\n }\n }\n\n this.getOrCreateImage(src, ref)\n .then((cache) => {\n callback?.(cache);\n })\n .catch((reason) => {\n console.error(reason);\n });\n\n return null;\n }\n\n getOrCreateImage(\n src: Image['attributes']['src'],\n ref: DisplayObject,\n ): Promise<ImageCache> {\n const imageSource = isString(src) ? src : src.src;\n\n if (!isString(src) && !IMAGE_CACHE.has(imageSource)) {\n const imageCache: ImageCache = {\n img: src,\n size: [src.naturalWidth || src.width, src.naturalHeight || src.height],\n tileSize: calculateImageTileSize(src),\n };\n\n IMAGE_CACHE.put(imageSource, imageCache, ref);\n }\n\n if (IMAGE_CACHE.has(imageSource)) {\n const imageCache = IMAGE_CACHE.get(imageSource, ref);\n\n if (imageCache.img.complete) {\n return Promise.resolve(imageCache);\n }\n\n return new Promise((resolve, reject) => {\n imageCache.img.addEventListener('load', () => {\n imageCache.size = [\n imageCache.img.naturalWidth || imageCache.img.width,\n imageCache.img.naturalHeight || imageCache.img.height,\n ];\n imageCache.tileSize = calculateImageTileSize(imageCache.img);\n resolve(imageCache);\n });\n\n imageCache.img.addEventListener('error', (ev) => {\n reject(ev);\n });\n });\n }\n\n return new Promise((resolve, reject) => {\n // @see https://github.com/antvis/g/issues/938\n const image = this.context.config.createImage();\n\n if (image) {\n const imageCache: ImageCache = {\n img: image,\n size: [0, 0],\n tileSize: calculateImageTileSize(image),\n };\n\n IMAGE_CACHE.put(imageSource, imageCache, ref);\n\n image.onload = () => {\n imageCache.size = [\n image.naturalWidth || image.width,\n image.naturalHeight || image.height,\n ];\n imageCache.tileSize = calculateImageTileSize(imageCache.img);\n resolve(imageCache);\n };\n image.onerror = (ev) => {\n reject(ev);\n };\n image.crossOrigin = 'Anonymous';\n image.src = imageSource;\n }\n });\n }\n\n async createDownSampledImage(\n src: Image['attributes']['src'],\n ref: DisplayObject,\n ): Promise<ImageCache> {\n const imageCache = await this.getOrCreateImage(src, ref);\n if (typeof imageCache.downSamplingRate !== 'undefined') {\n return imageCache;\n }\n\n const { enableLargeImageOptimization } = this.context.config;\n const { maxDownSampledImageSize = 2048, downSamplingRateThreshold = 0.5 } =\n typeof enableLargeImageOptimization === 'boolean'\n ? {}\n : enableLargeImageOptimization;\n const createImageBitmapFunc = this.runtime.globalThis\n .createImageBitmap as typeof createImageBitmap;\n const [originWidth, originHeight] = imageCache.size;\n let resizedImage: ImageCache['downSampled'] = imageCache.img;\n let downSamplingRate = Math.min(\n (maxDownSampledImageSize + maxDownSampledImageSize) /\n (originWidth + originHeight),\n Math.max(0.01, Math.min(downSamplingRateThreshold, 0.5)),\n );\n\n let updateCache: ImageCache = {\n ...imageCache,\n downSamplingRate,\n };\n\n IMAGE_CACHE.update(imageCache.img.src, updateCache, ref);\n\n if (createImageBitmapFunc) {\n try {\n resizedImage = await createImageBitmapFunc(imageCache.img, {\n resizeWidth: originWidth * downSamplingRate,\n resizeHeight: originHeight * downSamplingRate,\n });\n } catch {\n downSamplingRate = 1;\n }\n } else {\n downSamplingRate = 1;\n }\n\n updateCache = {\n ...this.getImageSync(src, ref),\n downSampled: resizedImage,\n downSamplingRate,\n };\n\n IMAGE_CACHE.update(imageCache.img.src, updateCache, ref);\n\n return updateCache;\n }\n\n async createImageTiles(\n src: Image['attributes']['src'],\n tiles: [number, number][],\n rerender: () => void,\n ref: DisplayObject,\n ): Promise<ImageCache> {\n const imageCache = await this.getOrCreateImage(src, ref);\n const { requestAnimationFrame, cancelAnimationFrame } =\n ref.ownerDocument.defaultView;\n\n ImageSlicer.api = {\n requestAnimationFrame,\n cancelAnimationFrame,\n createCanvas: () => OffscreenCanvasCreator.createCanvas(),\n };\n\n const updateCache: ImageCache = {\n ...imageCache,\n ...ImageSlicer.sliceImage(\n imageCache.img,\n imageCache.tileSize[0],\n imageCache.tileSize[0],\n rerender,\n ),\n };\n\n IMAGE_CACHE.update(imageCache.img.src, updateCache, ref);\n\n return updateCache;\n }\n\n releaseImage(src: Image['attributes']['src'], ref: DisplayObject) {\n IMAGE_CACHE.release(isString(src) ? src : src.src, ref);\n }\n\n releaseImageRef(ref: DisplayObject) {\n IMAGE_CACHE.releaseRef(ref);\n }\n\n getOrCreatePatternSync(\n object: DisplayObject,\n pattern: Pattern,\n context: CanvasRenderingContext2D,\n $offscreenCanvas: HTMLCanvasElement,\n dpr: number,\n min: Tuple3Number,\n callback: () => void,\n ) {\n const patternKey = this.generatePatternKey(pattern);\n if (patternKey && this.patternCache[patternKey]) {\n return this.patternCache[patternKey];\n }\n\n const { image, repetition, transform } = pattern;\n let src: CanvasImageSource;\n let needScaleWithDPR = false;\n // Image URL\n if (isString(image)) {\n const imageCache = this.getImageSync(image, object, callback);\n src = imageCache?.img;\n } else if ($offscreenCanvas) {\n src = $offscreenCanvas;\n needScaleWithDPR = true;\n } else {\n src = image as CanvasImageSource;\n }\n\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createPattern\n const canvasPattern = src && context.createPattern(src, repetition);\n\n if (canvasPattern) {\n let mat: mat4;\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasPattern/setTransform\n if (transform) {\n mat = parsedTransformToMat4(\n parseTransform(transform),\n new DisplayObject({}),\n );\n } else {\n mat = mat4.identity(mat4.create());\n }\n\n if (needScaleWithDPR) {\n mat4.scale(mat, mat, [1 / dpr, 1 / dpr, 1]);\n }\n\n canvasPattern.setTransform({\n a: mat[0],\n b: mat[1],\n c: mat[4],\n d: mat[5],\n e: mat[12] + min[0],\n f: mat[13] + min[1],\n });\n }\n\n if (patternKey && canvasPattern) {\n this.patternCache[patternKey] = canvasPattern;\n }\n\n return canvasPattern;\n }\n\n getOrCreateGradient(\n params: GradientParams,\n context: CanvasRenderingContext2D,\n ) {\n const key = this.generateGradientKey(params);\n const { type, steps, min, width, height, angle, cx, cy, size } = params;\n\n if (this.gradientCache[key]) {\n return this.gradientCache[key];\n }\n\n let gradient: CanvasGradient | null = null;\n if (type === GradientType.LinearGradient) {\n const { x1, y1, x2, y2 } = computeLinearGradient(\n min,\n width,\n height,\n angle,\n );\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createLinearGradient\n gradient = context.createLinearGradient(x1, y1, x2, y2);\n } else if (type === GradientType.RadialGradient) {\n const { x, y, r } = computeRadialGradient(\n min,\n width,\n height,\n cx,\n cy,\n size,\n );\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createRadialGradient\n gradient = context.createRadialGradient(x, y, 0, x, y, r);\n }\n\n if (gradient) {\n steps.forEach(({ offset, color }) => {\n if (offset.unit === UnitType.kPercentage) {\n gradient?.addColorStop(offset.value / 100, color.toString());\n }\n });\n\n this.gradientCache[key] = gradient;\n }\n\n return this.gradientCache[key];\n }\n\n private generateGradientKey(params: GradientParams): string {\n const { type, min, width, height, steps, angle, cx, cy, size } = params;\n return `gradient-${type}-${angle?.toString() || 0}-${cx?.toString() || 0}-${\n cy?.toString() || 0\n }-${size?.toString() || 0}-${min[0]}-${min[1]}-${width}-${height}-${steps\n .map(({ offset, color }) => `${offset}${color}`)\n .join('-')}`;\n }\n\n private generatePatternKey(pattern: Pattern) {\n const { image, repetition } = pattern;\n // only generate cache for Image\n if (isString(image)) {\n return `pattern-${image}-${repetition}`;\n }\n if ((image as Rect).nodeName === 'rect') {\n return `pattern-${(image as Rect).entity}-${repetition}`;\n }\n }\n}\n\nfunction calculateImageTileSize(img: HTMLImageElement): [number, number] {\n if (!img.complete) {\n return [0, 0];\n }\n\n const [width, height] = [\n img.naturalWidth || img.width,\n img.naturalHeight || img.height,\n ];\n\n let tileSize = 256;\n\n [256, 512].forEach((size) => {\n const rows = Math.ceil(height / size);\n const cols = Math.ceil(width / size);\n\n if (rows * cols < 1e3) {\n tileSize = size;\n }\n });\n\n return [tileSize, tileSize];\n}\n","import type {\n FederatedEvent,\n Image,\n MutationEvent,\n RenderingPlugin,\n RenderingPluginContext,\n DisplayObject,\n} from '@antv/g-lite';\nimport { ElementEvent, Shape } from '@antv/g-lite';\nimport { isString } from '@antv/util';\nimport { ImagePool } from './ImagePool';\n\nexport class LoadImagePlugin implements RenderingPlugin {\n static tag = 'LoadImage';\n\n apply(context: RenderingPluginContext & { imagePool: ImagePool }) {\n const { renderingService, renderingContext, imagePool } = context;\n const canvas = renderingContext.root.ownerDocument.defaultView;\n\n const calculateWithAspectRatio = (\n object: Image,\n imageWidth: number,\n imageHeight: number,\n ) => {\n const { width, height } = object.parsedStyle;\n if (width && !height) {\n object.setAttribute('height', (imageHeight / imageWidth) * width);\n } else if (!width && height) {\n object.setAttribute('width', (imageWidth / imageHeight) * height);\n }\n };\n\n const handleMounted = (e: FederatedEvent) => {\n const object = e.target as Image;\n const { nodeName, attributes } = object;\n if (nodeName === Shape.IMAGE) {\n const { src, keepAspectRatio } = attributes;\n\n imagePool.getImageSync(\n src,\n object as DisplayObject,\n ({ img: { width, height } }) => {\n if (keepAspectRatio) {\n calculateWithAspectRatio(object, width, height);\n }\n\n // set dirty rectangle flag\n object.renderable.dirty = true;\n renderingService.dirtify();\n },\n );\n }\n };\n\n const handleAttributeChanged = (e: MutationEvent) => {\n const object = e.target as Image;\n const { attrName, prevValue, newValue } = e;\n\n if (object.nodeName !== Shape.IMAGE || attrName !== 'src') {\n return;\n }\n\n if (prevValue !== newValue) {\n imagePool.releaseImage(\n prevValue as Image['attributes']['src'],\n object as DisplayObject,\n );\n }\n\n if (isString(newValue)) {\n imagePool\n .getOrCreateImage(newValue, object as DisplayObject)\n .then(({ img: { width, height } }) => {\n if (object.attributes.keepAspectRatio) {\n calculateWithAspectRatio(object, width, height);\n }\n\n // set dirty rectangle flag\n object.renderable.dirty = true;\n renderingService.dirtify();\n })\n .catch(() => {\n //\n });\n }\n };\n\n renderingService.hooks.init.tap(LoadImagePlugin.tag, () => {\n canvas.addEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.addEventListener(\n ElementEvent.ATTR_MODIFIED,\n handleAttributeChanged,\n );\n });\n\n renderingService.hooks.destroy.tap(LoadImagePlugin.tag, () => {\n canvas.removeEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.removeEventListener(\n ElementEvent.ATTR_MODIFIED,\n handleAttributeChanged,\n );\n });\n }\n}\n","import { AbstractRendererPlugin, type GlobalRuntime } from '@antv/g-lite';\nimport { ImagePool, type ImageCache } from './ImagePool';\nimport { LoadImagePlugin } from './LoadImagePlugin';\n\nexport { ImagePool, type ImageCache };\n\nexport class Plugin extends AbstractRendererPlugin {\n name = 'image-loader';\n init(runtime: GlobalRuntime): void {\n // @ts-ignore\n this.context.imagePool = new ImagePool(this.context, runtime);\n this.addRenderingPlugin(new LoadImagePlugin());\n }\n destroy(): void {\n this.removeAllRenderingPlugins();\n }\n}\n"],"names":["RefCountCache","_classCallCheck","cacheStore","Map","_createClass","key","value","onRefAdded","ref","has","put","item","set","counter","Set","entity","get","cacheItem","add","update","_objectSpread","release","size","releaseRef","_this","Array","from","keys","forEach","getSize","clear","tasks","nextFrameTasks","ImageSlicer","stop","api","arguments","length","undefined","rafId","cancelAnimationFrame","executeTask","task","splice","TASK_NUM_PER_FRAME","requestAnimationFrame","sliceImage","image","sliceWidth","sliceHeight","rerender","overlap","imageWidth","naturalWidth","width","imageHeight","naturalHeight","height","strideW","strideH","gridCols","Math","ceil","gridRows","result","tileSize","gridSize","tiles","fill","map","_loop","row","_loop2","col","push","startX","startY","_ref","min","tempSliceWidth","tempSliceHeight","sliceCanvas","createCanvas","sliceCtx","getContext","drawImage","x","y","tileX","tileY","data","IMAGE_CACHE","addEventListener","ElementEvent","DESTROY","once","ImagePool","context","runtime","gradientCache","patternCache","getImageSync","src","callback","imageSource","isString","imageCache","img","complete","getOrCreateImage","then","cache","reason","console","error","_this2","calculateImageTileSize","Promise","resolve","reject","ev","config","createImage","onload","onerror","crossOrigin","_createDownSampledImage","_asyncToGenerator","_regeneratorRuntime","mark","_callee","enableLargeImageOptimization","_ref$maxDownSampledIm","maxDownSampledImageSize","_ref$downSamplingRate","downSamplingRateThreshold","createImageBitmapFunc","_imageCache$size","originWidth","originHeight","resizedImage","downSamplingRate","updateCache","wrap","_context","prev","next","sent","abrupt","globalThis","createImageBitmap","_slicedToArray","max","resizeWidth","resizeHeight","_t","downSampled","createDownSampledImage","_x","_x2","apply","_createImageTiles","_callee2","_ref$ownerDocument$de","_context2","ownerDocument","defaultView","OffscreenCanvasCreator","createImageTiles","_x3","_x4","_x5","_x6","releaseImage","releaseImageRef","getOrCreatePatternSync","object","pattern","$offscreenCanvas","dpr","patternKey","generatePatternKey","repetition","transform","needScaleWithDPR","canvasPattern","createPattern","mat","parsedTransformToMat4","parseTransform","DisplayObject","mat4","identity","create","scale","setTransform","a","b","c","d","e","f","getOrCreateGradient","params","generateGradientKey","type","steps","angle","cx","cy","gradient","GradientType","LinearGradient","_computeLinearGradien","computeLinearGradient","x1","y1","x2","y2","createLinearGradient","RadialGradient","_computeRadialGradien","computeRadialGradient","r","createRadialGradient","_ref2","offset","color","unit","UnitType","kPercentage","_gradient","addColorStop","toString","concat","_ref3","join","nodeName","isSupportTile","rows","cols","LoadImagePlugin","renderingService","renderingContext","imagePool","canvas","root","calculateWithAspectRatio","_object$parsedStyle","parsedStyle","setAttribute","handleMounted","target","attributes","Shape","IMAGE","keepAspectRatio","_ref$img","renderable","dirty","dirtify","handleAttributeChanged","attrName","prevValue","newValue","_ref2$img","hooks","init","tap","tag","MOUNTED","ATTR_MODIFIED","destroy","removeEventListener","Plugin","_AbstractRendererPlug","_len","args","_key","_callSuper","name","_inherits","addRenderingPlugin","removeAllRenderingPlugins","AbstractRendererPlugin"],"mappings":"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"}
{"version":3,"file":"index.js","sources":["../src/RefCountCache.ts","../src/ImageSlicer.ts","../src/ImagePool.ts","../src/LoadImagePlugin.ts","../src/index.ts"],"sourcesContent":["import { DisplayObject } from '@antv/g-lite';\n\nexport class RefCountCache<CacheValue> {\n private cacheStore = new Map<\n string,\n { value: CacheValue; counter: Set<number> }\n >();\n\n onRefAdded(ref: DisplayObject) {}\n\n has(key: string) {\n return this.cacheStore.has(key);\n }\n\n put(key: string, item: CacheValue, ref: DisplayObject) {\n if (this.cacheStore.has(key)) {\n return false;\n }\n\n this.cacheStore.set(key, {\n value: item,\n counter: new Set([ref.entity]),\n });\n this.onRefAdded(ref);\n\n return true;\n }\n\n get(key: string, ref: DisplayObject) {\n const cacheItem = this.cacheStore.get(key);\n if (!cacheItem) {\n return null;\n }\n\n if (!cacheItem.counter.has(ref.entity)) {\n cacheItem.counter.add(ref.entity);\n this.onRefAdded(ref);\n }\n\n return cacheItem.value;\n }\n\n update(key: string, value: CacheValue, ref: DisplayObject) {\n const cacheItem = this.cacheStore.get(key);\n if (!cacheItem) {\n return false;\n }\n\n cacheItem.value = { ...cacheItem.value, ...value };\n if (!cacheItem.counter.has(ref.entity)) {\n cacheItem.counter.add(ref.entity);\n this.onRefAdded(ref);\n }\n\n return true;\n }\n\n release(key: string, ref: DisplayObject) {\n const cacheItem = this.cacheStore.get(key);\n if (!cacheItem) {\n return false;\n }\n\n cacheItem.counter.delete(ref.entity);\n\n if (cacheItem.counter.size <= 0) {\n this.cacheStore.delete(key);\n }\n\n return true;\n }\n\n releaseRef(ref: DisplayObject) {\n Array.from(this.cacheStore.keys()).forEach((key) => {\n this.release(key, ref);\n });\n }\n\n getSize() {\n return this.cacheStore.size;\n }\n\n clear() {\n this.cacheStore.clear();\n }\n}\n","const tasks: (() => void)[] = [];\nlet nextFrameTasks: (() => void)[] = [];\n\ninterface API {\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n createCanvas: () => HTMLCanvasElement | OffscreenCanvas;\n}\n\nexport interface SliceResult {\n tileSize: [number, number];\n /** [rows, cols] */\n gridSize: [number, number];\n /**\n * @example\n * ```\n * [\n * // tileY=0\n * [tileX=0, tileX=1, ...],\n * // tileY=1\n * [tileX=0, tileX=1, ...],\n * ]\n * ```\n */\n tiles: (null | {\n x: number;\n y: number;\n tileX: number;\n tileY: number;\n data: HTMLCanvasElement | OffscreenCanvas;\n })[][];\n}\n\nexport class ImageSlicer {\n static api: API;\n static TASK_NUM_PER_FRAME = 10;\n static rafId: ReturnType<typeof requestAnimationFrame>;\n\n static stop(api = ImageSlicer.api) {\n if (ImageSlicer.rafId) {\n api.cancelAnimationFrame(ImageSlicer.rafId);\n ImageSlicer.rafId = null;\n }\n }\n\n static executeTask(api = ImageSlicer.api) {\n if (tasks.length <= 0 && nextFrameTasks.length <= 0) {\n return;\n }\n\n nextFrameTasks.forEach((task) => task());\n nextFrameTasks = tasks.splice(0, ImageSlicer.TASK_NUM_PER_FRAME);\n\n ImageSlicer.rafId = api.requestAnimationFrame(() => {\n ImageSlicer.executeTask(api);\n });\n }\n\n static sliceImage(\n image: HTMLImageElement,\n sliceWidth: number,\n sliceHeight: number,\n rerender: () => void,\n overlap = 0,\n api = ImageSlicer.api,\n ) {\n const imageWidth = image.naturalWidth || image.width;\n const imageHeight = image.naturalHeight || image.height;\n\n // 计算步长(考虑重叠区域)\n const strideW = sliceWidth - overlap;\n const strideH = sliceHeight - overlap;\n\n // 计算网格尺寸\n const gridCols = Math.ceil(imageWidth / strideW);\n const gridRows = Math.ceil(imageHeight / strideH);\n\n const result: SliceResult = {\n tileSize: [sliceWidth, sliceHeight],\n gridSize: [gridRows, gridCols],\n tiles: Array(gridRows)\n .fill(null)\n .map(() => Array(gridCols).fill(null) as SliceResult['tiles'][number]),\n };\n\n // 遍历网格创建切片\n for (let row = 0; row < gridRows; row++) {\n for (let col = 0; col < gridCols; col++) {\n tasks.push(() => {\n // 计算当前切片的坐标\n const startX = col * strideW;\n const startY = row * strideH;\n\n // 处理最后一列/行的特殊情况\n const [tempSliceWidth, tempSliceHeight] = [\n Math.min(sliceWidth, imageWidth - startX),\n Math.min(sliceHeight, imageHeight - startY),\n ];\n\n // 创建切片canvas\n const sliceCanvas = api.createCanvas();\n sliceCanvas.width = sliceWidth;\n sliceCanvas.height = sliceHeight;\n const sliceCtx = sliceCanvas.getContext('2d');\n\n // 将图像部分绘制到切片canvas上\n sliceCtx.drawImage(\n image,\n startX,\n startY,\n tempSliceWidth,\n tempSliceHeight,\n 0,\n 0,\n tempSliceWidth,\n tempSliceHeight,\n );\n\n // 存储切片信息\n result.tiles[row][col] = {\n x: startX,\n y: startY,\n tileX: col,\n tileY: row,\n data: sliceCanvas,\n };\n\n rerender();\n });\n }\n }\n\n ImageSlicer.stop();\n ImageSlicer.executeTask();\n\n return result;\n }\n}\n","import {\n DisplayObject,\n GradientType,\n LinearGradient,\n Pattern,\n RadialGradient,\n Rect,\n Tuple3Number,\n UnitType,\n computeLinearGradient,\n computeRadialGradient,\n parseTransform,\n parsedTransformToMat4,\n Image,\n OffscreenCanvasCreator,\n ElementEvent,\n type CanvasContext,\n type GlobalRuntime,\n} from '@antv/g-lite';\nimport { isString } from '@antv/util';\nimport { mat4 } from 'gl-matrix';\nimport { RefCountCache } from './RefCountCache';\nimport { type SliceResult, ImageSlicer } from './ImageSlicer';\n\nexport interface ImageCache extends Partial<SliceResult> {\n img: HTMLImageElement;\n /** [width, height] */\n size: [number, number];\n downSampled?: ImageBitmap | HTMLImageElement;\n downSamplingRate?: number;\n}\n\nconst IMAGE_CACHE = new RefCountCache<ImageCache>();\nIMAGE_CACHE.onRefAdded = function onRefAdded(\n this: RefCountCache<ImageCache>,\n ref,\n) {\n ref.addEventListener(\n ElementEvent.DESTROY,\n () => {\n this.releaseRef(ref);\n },\n { once: true },\n );\n};\n\nexport type GradientParams = (LinearGradient & RadialGradient) & {\n width: number;\n height: number;\n /**\n * Top-left corner\n */\n min: [number, number];\n type: GradientType;\n};\n\nexport class ImagePool {\n static isSupportTile = !!OffscreenCanvasCreator.createCanvas();\n private gradientCache: Record<string, CanvasGradient> = {};\n private patternCache: Record<string, CanvasPattern> = {};\n\n constructor(\n public context: CanvasContext,\n private runtime: GlobalRuntime,\n ) {}\n\n getImageSync(\n src: Image['attributes']['src'],\n ref: DisplayObject,\n callback?: (cache: ImageCache) => void,\n ): ImageCache | null {\n const imageSource = isString(src) ? src : src.src;\n\n if (IMAGE_CACHE.has(imageSource)) {\n const imageCache = IMAGE_CACHE.get(imageSource, ref);\n\n if (imageCache.img.complete) {\n callback?.(imageCache);\n\n return imageCache;\n }\n }\n\n this.getOrCreateImage(src, ref)\n .then((cache) => {\n callback?.(cache);\n })\n .catch((reason) => {\n console.error(reason);\n });\n\n return null;\n }\n\n getOrCreateImage(\n src: Image['attributes']['src'],\n ref: DisplayObject,\n ): Promise<ImageCache> {\n const imageSource = isString(src) ? src : src.src;\n\n if (!isString(src) && !IMAGE_CACHE.has(imageSource)) {\n const imageCache: ImageCache = {\n img: src,\n size: [src.naturalWidth || src.width, src.naturalHeight || src.height],\n tileSize: calculateImageTileSize(src),\n };\n\n IMAGE_CACHE.put(imageSource, imageCache, ref);\n }\n\n if (IMAGE_CACHE.has(imageSource)) {\n const imageCache = IMAGE_CACHE.get(imageSource, ref);\n\n if (imageCache.img.complete) {\n return Promise.resolve(imageCache);\n }\n\n return new Promise((resolve, reject) => {\n imageCache.img.addEventListener('load', () => {\n imageCache.size = [\n imageCache.img.naturalWidth || imageCache.img.width,\n imageCache.img.naturalHeight || imageCache.img.height,\n ];\n imageCache.tileSize = calculateImageTileSize(imageCache.img);\n resolve(imageCache);\n });\n\n imageCache.img.addEventListener('error', (ev) => {\n reject(ev);\n });\n });\n }\n\n return new Promise((resolve, reject) => {\n // @see https://github.com/antvis/g/issues/938\n const image = this.context.config.createImage();\n\n if (image) {\n const imageCache: ImageCache = {\n img: image,\n size: [0, 0],\n tileSize: calculateImageTileSize(image),\n };\n\n IMAGE_CACHE.put(imageSource, imageCache, ref);\n\n image.onload = () => {\n imageCache.size = [\n image.naturalWidth || image.width,\n image.naturalHeight || image.height,\n ];\n imageCache.tileSize = calculateImageTileSize(imageCache.img);\n resolve(imageCache);\n };\n image.onerror = (ev) => {\n reject(ev);\n };\n image.crossOrigin = 'Anonymous';\n image.src = imageSource;\n }\n });\n }\n\n async createDownSampledImage(\n src: Image['attributes']['src'],\n ref: DisplayObject,\n ): Promise<ImageCache> {\n const imageCache = await this.getOrCreateImage(src, ref);\n if (typeof imageCache.downSamplingRate !== 'undefined') {\n return imageCache;\n }\n\n const { enableLargeImageOptimization } = this.context.config;\n const { maxDownSampledImageSize = 2048, downSamplingRateThreshold = 0.5 } =\n typeof enableLargeImageOptimization === 'boolean'\n ? {}\n : enableLargeImageOptimization;\n const createImageBitmapFunc = this.runtime.globalThis\n .createImageBitmap as typeof createImageBitmap;\n const [originWidth, originHeight] = imageCache.size;\n let resizedImage: ImageCache['downSampled'] = imageCache.img;\n let downSamplingRate = Math.min(\n (maxDownSampledImageSize + maxDownSampledImageSize) /\n (originWidth + originHeight),\n Math.max(0.01, Math.min(downSamplingRateThreshold, 0.5)),\n );\n\n let updateCache: ImageCache = {\n ...imageCache,\n downSamplingRate,\n };\n\n IMAGE_CACHE.update(imageCache.img.src, updateCache, ref);\n\n if (createImageBitmapFunc) {\n try {\n resizedImage = await createImageBitmapFunc(imageCache.img, {\n resizeWidth: originWidth * downSamplingRate,\n resizeHeight: originHeight * downSamplingRate,\n });\n } catch {\n downSamplingRate = 1;\n }\n } else {\n downSamplingRate = 1;\n }\n\n updateCache = {\n ...this.getImageSync(src, ref),\n downSampled: resizedImage,\n downSamplingRate,\n };\n\n IMAGE_CACHE.update(imageCache.img.src, updateCache, ref);\n\n return updateCache;\n }\n\n async createImageTiles(\n src: Image['attributes']['src'],\n tiles: [number, number][],\n rerender: () => void,\n ref: DisplayObject,\n ): Promise<ImageCache> {\n const imageCache = await this.getOrCreateImage(src, ref);\n const { requestAnimationFrame, cancelAnimationFrame } =\n ref.ownerDocument.defaultView;\n\n ImageSlicer.api = {\n requestAnimationFrame,\n cancelAnimationFrame,\n createCanvas: () => OffscreenCanvasCreator.createCanvas(),\n };\n\n const updateCache: ImageCache = {\n ...imageCache,\n ...ImageSlicer.sliceImage(\n imageCache.img,\n imageCache.tileSize[0],\n imageCache.tileSize[0],\n rerender,\n ),\n };\n\n IMAGE_CACHE.update(imageCache.img.src, updateCache, ref);\n\n return updateCache;\n }\n\n releaseImage(src: Image['attributes']['src'], ref: DisplayObject) {\n IMAGE_CACHE.release(isString(src) ? src : src.src, ref);\n }\n\n releaseImageRef(ref: DisplayObject) {\n IMAGE_CACHE.releaseRef(ref);\n }\n\n getOrCreatePatternSync(\n object: DisplayObject,\n pattern: Pattern,\n context: CanvasRenderingContext2D,\n $offscreenCanvas: HTMLCanvasElement,\n dpr: number,\n min: Tuple3Number,\n callback: () => void,\n ) {\n const patternKey = this.generatePatternKey(pattern);\n if (patternKey && this.patternCache[patternKey]) {\n return this.patternCache[patternKey];\n }\n\n const { image, repetition, transform } = pattern;\n let src: CanvasImageSource;\n let needScaleWithDPR = false;\n // Image URL\n if (isString(image)) {\n const imageCache = this.getImageSync(image, object, callback);\n src = imageCache?.img;\n } else if ($offscreenCanvas) {\n src = $offscreenCanvas;\n needScaleWithDPR = true;\n } else {\n src = image as CanvasImageSource;\n }\n\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createPattern\n const canvasPattern = src && context.createPattern(src, repetition);\n\n if (canvasPattern) {\n let mat: mat4;\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasPattern/setTransform\n if (transform) {\n mat = parsedTransformToMat4(\n parseTransform(transform),\n new DisplayObject({}),\n );\n } else {\n mat = mat4.identity(mat4.create());\n }\n\n if (needScaleWithDPR) {\n mat4.scale(mat, mat, [1 / dpr, 1 / dpr, 1]);\n }\n\n canvasPattern.setTransform({\n a: mat[0],\n b: mat[1],\n c: mat[4],\n d: mat[5],\n e: mat[12] + min[0],\n f: mat[13] + min[1],\n });\n }\n\n if (patternKey && canvasPattern) {\n this.patternCache[patternKey] = canvasPattern;\n }\n\n return canvasPattern;\n }\n\n getOrCreateGradient(\n params: GradientParams,\n context: CanvasRenderingContext2D,\n ) {\n const key = this.generateGradientKey(params);\n const { type, steps, min, width, height, angle, cx, cy, size } = params;\n\n if (this.gradientCache[key]) {\n return this.gradientCache[key];\n }\n\n let gradient: CanvasGradient | null = null;\n if (type === GradientType.LinearGradient) {\n const { x1, y1, x2, y2 } = computeLinearGradient(\n min,\n width,\n height,\n angle,\n );\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createLinearGradient\n gradient = context.createLinearGradient(x1, y1, x2, y2);\n } else if (type === GradientType.RadialGradient) {\n const { x, y, r } = computeRadialGradient(\n min,\n width,\n height,\n cx,\n cy,\n size,\n );\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createRadialGradient\n gradient = context.createRadialGradient(x, y, 0, x, y, r);\n }\n\n if (gradient) {\n steps.forEach(({ offset, color }) => {\n if (offset.unit === UnitType.kPercentage) {\n gradient?.addColorStop(offset.value / 100, color.toString());\n }\n });\n\n this.gradientCache[key] = gradient;\n }\n\n return this.gradientCache[key];\n }\n\n private generateGradientKey(params: GradientParams): string {\n const { type, min, width, height, steps, angle, cx, cy, size } = params;\n return `gradient-${type}-${angle?.toString() || 0}-${cx?.toString() || 0}-${\n cy?.toString() || 0\n }-${size?.toString() || 0}-${min[0]}-${min[1]}-${width}-${height}-${steps\n .map(({ offset, color }) => `${offset}${color}`)\n .join('-')}`;\n }\n\n private generatePatternKey(pattern: Pattern) {\n const { image, repetition } = pattern;\n // only generate cache for Image\n if (isString(image)) {\n return `pattern-${image}-${repetition}`;\n }\n if ((image as Rect).nodeName === 'rect') {\n return `pattern-${(image as Rect).entity}-${repetition}`;\n }\n }\n}\n\nfunction calculateImageTileSize(img: HTMLImageElement): [number, number] {\n if (!img.complete) {\n return [0, 0];\n }\n\n const [width, height] = [\n img.naturalWidth || img.width,\n img.naturalHeight || img.height,\n ];\n\n let tileSize = 256;\n\n [256, 512].forEach((size) => {\n const rows = Math.ceil(height / size);\n const cols = Math.ceil(width / size);\n\n if (rows * cols < 1e3) {\n tileSize = size;\n }\n });\n\n return [tileSize, tileSize];\n}\n","import type {\n FederatedEvent,\n Image,\n MutationEvent,\n RenderingPlugin,\n RenderingPluginContext,\n DisplayObject,\n} from '@antv/g-lite';\nimport { ElementEvent, Shape } from '@antv/g-lite';\nimport { isString } from '@antv/util';\nimport { ImagePool } from './ImagePool';\n\nexport class LoadImagePlugin implements RenderingPlugin {\n static tag = 'LoadImage';\n\n apply(context: RenderingPluginContext & { imagePool: ImagePool }) {\n const { renderingService, renderingContext, imagePool } = context;\n const canvas = renderingContext.root.ownerDocument.defaultView;\n\n const calculateWithAspectRatio = (\n object: Image,\n imageWidth: number,\n imageHeight: number,\n ) => {\n const { width, height } = object.parsedStyle;\n if (width && !height) {\n object.setAttribute('height', (imageHeight / imageWidth) * width);\n } else if (!width && height) {\n object.setAttribute('width', (imageWidth / imageHeight) * height);\n }\n };\n\n const handleMounted = (e: FederatedEvent) => {\n const object = e.target as Image;\n const { nodeName, attributes } = object;\n if (nodeName === Shape.IMAGE) {\n const { src, keepAspectRatio } = attributes;\n\n imagePool.getImageSync(\n src,\n object as DisplayObject,\n ({ img: { width, height } }) => {\n if (keepAspectRatio) {\n calculateWithAspectRatio(object, width, height);\n }\n\n object.dirty();\n renderingService.dirty();\n },\n );\n }\n };\n\n const handleAttributeChanged = (e: MutationEvent) => {\n const object = e.target as Image;\n const { attrName, prevValue, newValue } = e;\n\n if (object.nodeName !== Shape.IMAGE || attrName !== 'src') {\n return;\n }\n\n if (prevValue !== newValue) {\n imagePool.releaseImage(\n prevValue as Image['attributes']['src'],\n object as DisplayObject,\n );\n }\n\n if (isString(newValue)) {\n imagePool\n .getOrCreateImage(newValue, object as DisplayObject)\n .then(({ img: { width, height } }) => {\n if (object.attributes.keepAspectRatio) {\n calculateWithAspectRatio(object, width, height);\n }\n\n object.dirty();\n renderingService.dirty();\n })\n .catch(() => {\n //\n });\n }\n };\n\n renderingService.hooks.init.tap(LoadImagePlugin.tag, () => {\n canvas.addEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.addEventListener(\n ElementEvent.ATTR_MODIFIED,\n handleAttributeChanged,\n );\n });\n\n renderingService.hooks.destroy.tap(LoadImagePlugin.tag, () => {\n canvas.removeEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.removeEventListener(\n ElementEvent.ATTR_MODIFIED,\n handleAttributeChanged,\n );\n });\n }\n}\n","import { AbstractRendererPlugin, type GlobalRuntime } from '@antv/g-lite';\nimport { ImagePool, type ImageCache } from './ImagePool';\nimport { LoadImagePlugin } from './LoadImagePlugin';\n\nexport { ImagePool, type ImageCache };\n\nexport class Plugin extends AbstractRendererPlugin {\n name = 'image-loader';\n init(runtime: GlobalRuntime): void {\n // @ts-ignore\n this.context.imagePool = new ImagePool(this.context, runtime);\n this.addRenderingPlugin(new LoadImagePlugin());\n }\n destroy(): void {\n this.removeAllRenderingPlugins();\n }\n}\n"],"names":["RefCountCache","_classCallCheck","cacheStore","Map","_createClass","key","value","onRefAdded","ref","has","put","item","set","counter","Set","entity","get","cacheItem","add","update","_objectSpread","release","size","releaseRef","_this","Array","from","keys","forEach","getSize","clear","tasks","nextFrameTasks","ImageSlicer","stop","api","arguments","length","undefined","rafId","cancelAnimationFrame","executeTask","task","splice","TASK_NUM_PER_FRAME","requestAnimationFrame","sliceImage","image","sliceWidth","sliceHeight","rerender","overlap","imageWidth","naturalWidth","width","imageHeight","naturalHeight","height","strideW","strideH","gridCols","Math","ceil","gridRows","result","tileSize","gridSize","tiles","fill","map","_loop","row","_loop2","col","push","startX","startY","_ref","min","tempSliceWidth","tempSliceHeight","sliceCanvas","createCanvas","sliceCtx","getContext","drawImage","x","y","tileX","tileY","data","IMAGE_CACHE","addEventListener","ElementEvent","DESTROY","once","ImagePool","context","runtime","gradientCache","patternCache","getImageSync","src","callback","imageSource","isString","imageCache","img","complete","getOrCreateImage","then","cache","reason","console","error","_this2","calculateImageTileSize","Promise","resolve","reject","ev","config","createImage","onload","onerror","crossOrigin","_createDownSampledImage","_asyncToGenerator","_regeneratorRuntime","mark","_callee","enableLargeImageOptimization","_ref$maxDownSampledIm","maxDownSampledImageSize","_ref$downSamplingRate","downSamplingRateThreshold","createImageBitmapFunc","_imageCache$size","originWidth","originHeight","resizedImage","downSamplingRate","updateCache","wrap","_context","prev","next","sent","abrupt","globalThis","createImageBitmap","_slicedToArray","max","resizeWidth","resizeHeight","_t","downSampled","createDownSampledImage","_x","_x2","apply","_createImageTiles","_callee2","_ref$ownerDocument$de","_context2","ownerDocument","defaultView","OffscreenCanvasCreator","createImageTiles","_x3","_x4","_x5","_x6","releaseImage","releaseImageRef","getOrCreatePatternSync","object","pattern","$offscreenCanvas","dpr","patternKey","generatePatternKey","repetition","transform","needScaleWithDPR","canvasPattern","createPattern","mat","parsedTransformToMat4","parseTransform","DisplayObject","mat4","identity","create","scale","setTransform","a","b","c","d","e","f","getOrCreateGradient","params","generateGradientKey","type","steps","angle","cx","cy","gradient","GradientType","LinearGradient","_computeLinearGradien","computeLinearGradient","x1","y1","x2","y2","createLinearGradient","RadialGradient","_computeRadialGradien","computeRadialGradient","r","createRadialGradient","_ref2","offset","color","unit","UnitType","kPercentage","_gradient","addColorStop","toString","concat","_ref3","join","nodeName","isSupportTile","rows","cols","LoadImagePlugin","renderingService","renderingContext","imagePool","canvas","root","calculateWithAspectRatio","_object$parsedStyle","parsedStyle","setAttribute","handleMounted","target","attributes","Shape","IMAGE","keepAspectRatio","_ref$img","dirty","handleAttributeChanged","attrName","prevValue","newValue","_ref2$img","hooks","init","tap","tag","MOUNTED","ATTR_MODIFIED","destroy","removeEventListener","Plugin","_AbstractRendererPlug","_len","args","_key","_callSuper","name","_inherits","addRenderingPlugin","removeAllRenderingPlugins","AbstractRendererPlugin"],"mappings":"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"}
/*!
* @antv/g-plugin-image-loader
* @description A G plugin for loading image
* @version 2.1.26
* @date 7/30/2025, 1:35:52 PM
* @version 2.2.0
* @date 10/13/2025, 7:02:12 AM
* @author AntVis

@@ -11,3 +11,3 @@ * @docs https://g.antv.antgroup.com/

/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function o(n,r,i,o){var c=Object.create((r&&r.prototype instanceof u?r:u).prototype);return h(c,"_invoke",function(n,r,i){var o,u,c,f=0,l=i||[],s=!1,h={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,n){return o=t,u=0,c=e,h.n=n,a}};function p(n,r){for(u=n,c=r,t=0;!s&&f&&!i&&l.length>t;t++){var i,o=l[t],p=h.p,v=o[2];n>3?(i=v===r)&&(c=o[(u=o[4])?5:(u=3,3)],o[4]=o[5]=e):p>=o[0]&&((i=2>n&&o[1]>p)?(u=0,h.v=r,h.n=o[1]):v>p&&(i=3>n||o[0]>r||r>v)&&(o[4]=n,o[5]=r,h.n=v,u=0))}if(i||n>1)return a;throw s=!0,r}return function(i,l,v){if(f>1)throw TypeError("Generator is already running");for(s&&1===l&&p(l,v),u=l,c=v;(t=2>u?e:c)||!s;){o||(u?3>u?(u>1&&(h.n=-1),p(u,c)):h.n=c:h.v=c);try{if(f=2,o){if(u||(i="next"),t=o[i]){if(!(t=t.call(o,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,2>u&&(u=0)}else 1===u&&(t=o.return)&&t.call(o),2>u&&(c=TypeError("The iterator does not provide a '"+i+"' method"),u=1);o=e}else if((t=(s=0>h.n)?c:n.call(r,h))!==a)break}catch(t){o=e,u=1,c=t}finally{f=1}}return{value:t,done:s}}}(n,i,o),!0),c}var a={};function u(){}function c(){}function f(){}t=Object.getPrototypeOf;var l=[][r]?t(t([][r]())):(h(t={},r,function(){return this}),t),s=f.prototype=u.prototype=Object.create(l);function v(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,h(e,i,"GeneratorFunction")),e.prototype=Object.create(s),e}return c.prototype=f,h(s,"constructor",f),h(f,"constructor",c),c.displayName="GeneratorFunction",h(f,i,"GeneratorFunction"),h(s),h(s,i,"Generator"),h(s,r,function(){return this}),h(s,"toString",function(){return"[object Generator]"}),(p=function(){return{w:o,m:v}})()}function v(e,t){function n(r,i,o,a){try{var u=e[r](i),c=u.value;return c instanceof s?t.resolve(c.v).then(function(e){n("next",e,o,a)},function(e){n("throw",e,o,a)}):t.resolve(c).then(function(e){u.value=e,o(u)},function(e){return n("throw",e,o,a)})}catch(e){a(e)}}var r;this.next||(h(v.prototype),h(v.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),h(this,"_invoke",function(e,i,o){function a(){return new t(function(t,r){n(e,o,t,r)})}return r=r?r.then(a,a):a()},!0)}function d(e,t,n,r,i){return new v(p().w(e,t,n,r),i||Promise)}function y(e,t,n,r,i){var o=d(e,t,n,r,i);return o.next().then(function(e){return e.done?e.value:o.next()})}function g(e){var t=Object(e),n=[];for(var r in t)n.unshift(r);return function e(){for(;n.length;)if((r=n.pop())in t)return e.value=r,e.done=!1,e;return e.done=!0,e}}function m(e){if(null!=e){var t=e["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],n=0;if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}throw new TypeError(r(e)+" is not iterable")}function b(){var e=p(),t=e.m(b),n=(Object.getPrototypeOf?Object.getPrototypeOf(t):t.__proto__).constructor;function r(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===n||"GeneratorFunction"===(t.displayName||t.name))}var i={throw:1,return:2,break:3,continue:3};function o(e){var t,n;return function(r){t||(t={stop:function(){return n(r.a,2)},catch:function(){return r.v},abrupt:function(e,t){return n(r.a,i[e],t)},delegateYield:function(e,i,o){return t.resultName=i,n(r.d,m(e),o)},finish:function(e){return n(r.f,e)}},n=function(e,n,i){r.p=t.prev,r.n=t.next;try{return e(n,i)}finally{t.next=r.n}}),t.resultName&&(t[t.resultName]=r.v,t.resultName=void 0),t.sent=r.v,t.next=r.n;try{return e.call(this,t)}finally{r.p=t.prev,r.n=t.next}}}return(b=function(){return{wrap:function(t,n,r,i){return e.w(o(t),n,r,i&&i.reverse())},isGeneratorFunction:r,mark:e.m,awrap:function(e,t){return new s(e,t)},AsyncIterator:v,async:function(e,t,n,i,a){return(r(t)?d:y)(o(e),t,n,i,a)},keys:g,values:m}})()}function w(e,t,n){return(t=i(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function S(e){for(var t=1;arguments.length>t;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?O(Object(n),!0).forEach(function(t){w(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):O(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);t>n;n++)r[n]=e[n];return r}function x(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,u=[],c=!0,f=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(u.push(r.value),u.length!==t);c=!0);}catch(e){f=!0,i=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(f)throw i}}return u}}(e,t)||function(e,t){if(e){if("string"==typeof e)return k(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?k(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(e,t,n,r,i,o,a){try{var u=e[o](a),c=u.value}catch(e){return void n(e)}u.done?t(c):Promise.resolve(c).then(r,i)}function j(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function a(e){P(o,r,i,a,u,"next",e)}function u(e){P(o,r,i,a,u,"throw",e)}a(void 0)})}}function E(e){return"string"==typeof e}var A="undefined"!=typeof Float32Array?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var I=function(){return a(function e(){n(this,e),this.cacheStore=new Map},[{key:"onRefAdded",value:function(e){}},{key:"has",value:function(e){return this.cacheStore.has(e)}},{key:"put",value:function(e,t,n){return!this.cacheStore.has(e)&&(this.cacheStore.set(e,{value:t,counter:new Set([n.entity])}),this.onRefAdded(n),!0)}},{key:"get",value:function(e,t){var n=this.cacheStore.get(e);return n?(n.counter.has(t.entity)||(n.counter.add(t.entity),this.onRefAdded(t)),n.value):null}},{key:"update",value:function(e,t,n){var r=this.cacheStore.get(e);return!!r&&(r.value=S(S({},r.value),t),r.counter.has(n.entity)||(r.counter.add(n.entity),this.onRefAdded(n)),!0)}},{key:"release",value:function(e,t){var n=this.cacheStore.get(e);return!!n&&(n.counter.delete(t.entity),n.counter.size>0||this.cacheStore.delete(e),!0)}},{key:"releaseRef",value:function(e){var t=this;Array.from(this.cacheStore.keys()).forEach(function(n){t.release(n,e)})}},{key:"getSize",value:function(){return this.cacheStore.size}},{key:"clear",value:function(){this.cacheStore.clear()}}])}(),T=[],R=[],C=function(){function e(){n(this,e)}return a(e,null,[{key:"stop",value:function(){e.rafId&&((arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.api).cancelAnimationFrame(e.rafId),e.rafId=null)}},{key:"executeTask",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.api;(T.length>0||R.length>0)&&(R.forEach(function(e){return e()}),R=T.splice(0,e.TASK_NUM_PER_FRAME),e.rafId=t.requestAnimationFrame(function(){e.executeTask(t)}))}},{key:"sliceImage",value:function(t,n,r,i){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:e.api,u=t.naturalWidth||t.width,c=t.naturalHeight||t.height,f=n-o,l=r-o,s=Math.ceil(u/f),h=Math.ceil(c/l),p={tileSize:[n,r],gridSize:[h,s],tiles:Array(h).fill(null).map(function(){return Array(s).fill(null)})},v=function(e){for(var o=function(o){T.push(function(){var s=o*f,h=e*l,v=[Math.min(n,u-s),Math.min(r,c-h)],d=v[0],y=v[1],g=a.createCanvas();g.width=n,g.height=r,g.getContext("2d").drawImage(t,s,h,d,y,0,0,d,y),p.tiles[e][o]={x:s,y:h,tileX:o,tileY:e,data:g},i()})},h=0;s>h;h++)o(h)},d=0;h>d;d++)v(d);return e.stop(),e.executeTask(),p}}])}();C.TASK_NUM_PER_FRAME=10;var _=new I;_.onRefAdded=function(e){var n=this;e.addEventListener(t.ElementEvent.DESTROY,function(){n.releaseRef(e)},{once:!0})};var G=function(){return a(function e(t,r){n(this,e),this.gradientCache={},this.patternCache={},this.context=t,this.runtime=r},[{key:"getImageSync",value:function(e,t,n){var r=E(e)?e:e.src;if(_.has(r)){var i=_.get(r,t);if(i.img.complete)return null==n||n(i),i}return this.getOrCreateImage(e,t).then(function(e){null==n||n(e)}).catch(function(e){console.error(e)}),null}},{key:"getOrCreateImage",value:function(e,t){var n=this,r=E(e)?e:e.src;if(!E(e)&&!_.has(r)){var i={img:e,size:[e.naturalWidth||e.width,e.naturalHeight||e.height],tileSize:M(e)};_.put(r,i,t)}if(_.has(r)){var o=_.get(r,t);return o.img.complete?Promise.resolve(o):new Promise(function(e,t){o.img.addEventListener("load",function(){o.size=[o.img.naturalWidth||o.img.width,o.img.naturalHeight||o.img.height],o.tileSize=M(o.img),e(o)}),o.img.addEventListener("error",function(e){t(e)})})}return new Promise(function(e,i){var o=n.context.config.createImage();if(o){var a={img:o,size:[0,0],tileSize:M(o)};_.put(r,a,t),o.onload=function(){a.size=[o.naturalWidth||o.width,o.naturalHeight||o.height],a.tileSize=M(a.img),e(a)},o.onerror=function(e){i(e)},o.crossOrigin="Anonymous",o.src=r}})}},{key:"createDownSampledImage",value:(r=j(b().mark(function e(t,n){var r,i,o,a,u,c,f,l,s,h,p,v,d,y;return b().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=1,this.getOrCreateImage(t,n);case 1:if(void 0===(r=e.sent).downSamplingRate){e.next=2;break}return e.abrupt("return",r);case 2:if(u=void 0===(a=(o="boolean"==typeof(i=this.context.config.enableLargeImageOptimization)?{}:i).maxDownSampledImageSize)?2048:a,f=void 0===(c=o.downSamplingRateThreshold)?.5:c,l=this.runtime.globalThis.createImageBitmap,s=x(r.size,2),v=r.img,d=Math.min((u+u)/((h=s[0])+(p=s[1])),Math.max(.01,Math.min(f,.5))),y=S(S({},r),{},{downSamplingRate:d}),_.update(r.img.src,y,n),!l){e.next=7;break}return e.prev=3,e.next=4,l(r.img,{resizeWidth:h*d,resizeHeight:p*d});case 4:v=e.sent,e.next=6;break;case 5:e.prev=5,e.catch(3),d=1;case 6:e.next=8;break;case 7:d=1;case 8:return y=S(S({},this.getImageSync(t,n)),{},{downSampled:v,downSamplingRate:d}),_.update(r.img.src,y,n),e.abrupt("return",y);case 9:case"end":return e.stop()}},e,this,[[3,5]])})),function(e,t){return r.apply(this,arguments)})},{key:"createImageTiles",value:(e=j(b().mark(function e(n,r,i,o){var a,u,c;return b().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=1,this.getOrCreateImage(n,o);case 1:return a=e.sent,C.api={requestAnimationFrame:(u=o.ownerDocument.defaultView).requestAnimationFrame,cancelAnimationFrame:u.cancelAnimationFrame,createCanvas:function(){return t.OffscreenCanvasCreator.createCanvas()}},c=S(S({},a),C.sliceImage(a.img,a.tileSize[0],a.tileSize[0],i)),_.update(a.img.src,c,o),e.abrupt("return",c);case 2:case"end":return e.stop()}},e,this)})),function(t,n,r,i){return e.apply(this,arguments)})},{key:"releaseImage",value:function(e,t){_.release(E(e)?e:e.src,t)}},{key:"releaseImageRef",value:function(e){_.releaseRef(e)}},{key:"getOrCreatePatternSync",value:function(e,n,r,i,o,a,u){var c=this.generatePatternKey(n);if(c&&this.patternCache[c])return this.patternCache[c];var f,l=n.image,s=n.repetition,h=n.transform,p=!1;if(E(l)){var v=this.getImageSync(l,e,u);f=null==v?void 0:v.img}else i?(f=i,p=!0):f=l;var d,y,g=f&&r.createPattern(f,s);g&&(d=h?t.parsedTransformToMat4(t.parseTransform(h),new t.DisplayObject({})):function(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}((y=new A(16),A!=Float32Array&&(y[1]=0,y[2]=0,y[3]=0,y[4]=0,y[6]=0,y[7]=0,y[8]=0,y[9]=0,y[11]=0,y[12]=0,y[13]=0,y[14]=0),y[0]=1,y[5]=1,y[10]=1,y[15]=1,y)),p&&function(e,t,n){var r=n[0],i=n[1],o=n[2];e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*o,e[9]=t[9]*o,e[10]=t[10]*o,e[11]=t[11]*o,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]}(d,d,[1/o,1/o,1]),g.setTransform({a:d[0],b:d[1],c:d[4],d:d[5],e:d[12]+a[0],f:d[13]+a[1]}));return c&&g&&(this.patternCache[c]=g),g}},{key:"getOrCreateGradient",value:function(e,n){var r=this.generateGradientKey(e),i=e.type,o=e.steps,a=e.min,u=e.width,c=e.height,f=e.cx,l=e.cy,s=e.size;if(this.gradientCache[r])return this.gradientCache[r];var h=null;if(i===t.GradientType.LinearGradient){var p=t.computeLinearGradient(a,u,c,e.angle);h=n.createLinearGradient(p.x1,p.y1,p.x2,p.y2)}else if(i===t.GradientType.RadialGradient){var v=t.computeRadialGradient(a,u,c,f,l,s),d=v.x,y=v.y;h=n.createRadialGradient(d,y,0,d,y,v.r)}return h&&(o.forEach(function(e){var n,r=e.offset;r.unit===t.UnitType.kPercentage&&(null===(n=h)||void 0===n||n.addColorStop(r.value/100,""+e.color))}),this.gradientCache[r]=h),this.gradientCache[r]}},{key:"generateGradientKey",value:function(e){var t=e.min,n=e.width,r=e.height,i=e.steps,o=e.angle,a=e.cx,u=e.cy,c=e.size;return"gradient-".concat(e.type,"-").concat((null==o?void 0:""+o)||0,"-").concat((null==a?void 0:""+a)||0,"-").concat((null==u?void 0:""+u)||0,"-").concat((null==c?void 0:""+c)||0,"-").concat(t[0],"-").concat(t[1],"-").concat(n,"-").concat(r,"-").concat(i.map(function(e){var t=e.color;return"".concat(e.offset).concat(t)}).join("-"))}},{key:"generatePatternKey",value:function(e){var t=e.image,n=e.repetition;return E(t)?"pattern-".concat(t,"-").concat(n):"rect"===t.nodeName?"pattern-".concat(t.entity,"-").concat(n):void 0}}]);var e,r}();function M(e){if(!e.complete)return[0,0];var t=e.naturalWidth||e.width,n=e.naturalHeight||e.height,r=256;return[256,512].forEach(function(e){1e3>Math.ceil(n/e)*Math.ceil(t/e)&&(r=e)}),[r,r]}G.isSupportTile=!!t.OffscreenCanvasCreator.createCanvas();var z=function(){function e(){n(this,e)}return a(e,[{key:"apply",value:function(n){var r=n.renderingService,i=n.imagePool,o=n.renderingContext.root.ownerDocument.defaultView,a=function(e,t,n){var r=e.parsedStyle,i=r.width,o=r.height;i&&!o?e.setAttribute("height",n/t*i):!i&&o&&e.setAttribute("width",t/n*o)},u=function(e){var n=e.target,o=n.attributes;if(n.nodeName===t.Shape.IMAGE){var u=o.keepAspectRatio;i.getImageSync(o.src,n,function(e){var t=e.img;u&&a(n,t.width,t.height),n.renderable.dirty=!0,r.dirtify()})}},c=function(e){var n=e.target,o=e.prevValue,u=e.newValue;n.nodeName===t.Shape.IMAGE&&"src"===e.attrName&&(o!==u&&i.releaseImage(o,n),E(u)&&i.getOrCreateImage(u,n).then(function(e){var t=e.img;n.attributes.keepAspectRatio&&a(n,t.width,t.height),n.renderable.dirty=!0,r.dirtify()}).catch(function(){}))};r.hooks.init.tap(e.tag,function(){o.addEventListener(t.ElementEvent.MOUNTED,u),o.addEventListener(t.ElementEvent.ATTR_MODIFIED,c)}),r.hooks.destroy.tap(e.tag,function(){o.removeEventListener(t.ElementEvent.MOUNTED,u),o.removeEventListener(t.ElementEvent.ATTR_MODIFIED,c)})}}])}();z.tag="LoadImage";var F=function(e){function t(){var e,r,i,o;n(this,t);for(var a=arguments.length,l=Array(a),s=0;a>s;s++)l[s]=arguments[s];return r=this,i=t,o=[].concat(l),i=u(i),(e=f(r,c()?Reflect.construct(i,o||[],u(r).constructor):i.apply(r,o))).name="image-loader",e}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&l(e,t)}(t,e),a(t,[{key:"init",value:function(e){this.context.imagePool=new G(this.context,e),this.addRenderingPlugin(new z)}},{key:"destroy",value:function(){this.removeAllRenderingPlugins()}}])}(t.AbstractRendererPlugin);e.ImagePool=G,e.Plugin=F});
var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function o(n,r,i,o){var c=Object.create((r&&r.prototype instanceof u?r:u).prototype);return h(c,"_invoke",function(n,r,i){var o,u,c,f=0,l=i||[],s=!1,h={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,n){return o=t,u=0,c=e,h.n=n,a}};function p(n,r){for(u=n,c=r,t=0;!s&&f&&!i&&l.length>t;t++){var i,o=l[t],p=h.p,v=o[2];n>3?(i=v===r)&&(c=o[(u=o[4])?5:(u=3,3)],o[4]=o[5]=e):p>=o[0]&&((i=2>n&&o[1]>p)?(u=0,h.v=r,h.n=o[1]):v>p&&(i=3>n||o[0]>r||r>v)&&(o[4]=n,o[5]=r,h.n=v,u=0))}if(i||n>1)return a;throw s=!0,r}return function(i,l,v){if(f>1)throw TypeError("Generator is already running");for(s&&1===l&&p(l,v),u=l,c=v;(t=2>u?e:c)||!s;){o||(u?3>u?(u>1&&(h.n=-1),p(u,c)):h.n=c:h.v=c);try{if(f=2,o){if(u||(i="next"),t=o[i]){if(!(t=t.call(o,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,2>u&&(u=0)}else 1===u&&(t=o.return)&&t.call(o),2>u&&(c=TypeError("The iterator does not provide a '"+i+"' method"),u=1);o=e}else if((t=(s=0>h.n)?c:n.call(r,h))!==a)break}catch(t){o=e,u=1,c=t}finally{f=1}}return{value:t,done:s}}}(n,i,o),!0),c}var a={};function u(){}function c(){}function f(){}t=Object.getPrototypeOf;var l=[][r]?t(t([][r]())):(h(t={},r,function(){return this}),t),s=f.prototype=u.prototype=Object.create(l);function v(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,h(e,i,"GeneratorFunction")),e.prototype=Object.create(s),e}return c.prototype=f,h(s,"constructor",f),h(f,"constructor",c),c.displayName="GeneratorFunction",h(f,i,"GeneratorFunction"),h(s),h(s,i,"Generator"),h(s,r,function(){return this}),h(s,"toString",function(){return"[object Generator]"}),(p=function(){return{w:o,m:v}})()}function v(e,t){function n(r,i,o,a){try{var u=e[r](i),c=u.value;return c instanceof s?t.resolve(c.v).then(function(e){n("next",e,o,a)},function(e){n("throw",e,o,a)}):t.resolve(c).then(function(e){u.value=e,o(u)},function(e){return n("throw",e,o,a)})}catch(e){a(e)}}var r;this.next||(h(v.prototype),h(v.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),h(this,"_invoke",function(e,i,o){function a(){return new t(function(t,r){n(e,o,t,r)})}return r=r?r.then(a,a):a()},!0)}function d(e,t,n,r,i){return new v(p().w(e,t,n,r),i||Promise)}function y(e,t,n,r,i){var o=d(e,t,n,r,i);return o.next().then(function(e){return e.done?e.value:o.next()})}function g(e){var t=Object(e),n=[];for(var r in t)n.unshift(r);return function e(){for(;n.length;)if((r=n.pop())in t)return e.value=r,e.done=!1,e;return e.done=!0,e}}function m(e){if(null!=e){var t=e["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],n=0;if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}throw new TypeError(r(e)+" is not iterable")}function b(){var e=p(),t=e.m(b),n=(Object.getPrototypeOf?Object.getPrototypeOf(t):t.__proto__).constructor;function r(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===n||"GeneratorFunction"===(t.displayName||t.name))}var i={throw:1,return:2,break:3,continue:3};function o(e){var t,n;return function(r){t||(t={stop:function(){return n(r.a,2)},catch:function(){return r.v},abrupt:function(e,t){return n(r.a,i[e],t)},delegateYield:function(e,i,o){return t.resultName=i,n(r.d,m(e),o)},finish:function(e){return n(r.f,e)}},n=function(e,n,i){r.p=t.prev,r.n=t.next;try{return e(n,i)}finally{t.next=r.n}}),t.resultName&&(t[t.resultName]=r.v,t.resultName=void 0),t.sent=r.v,t.next=r.n;try{return e.call(this,t)}finally{r.p=t.prev,r.n=t.next}}}return(b=function(){return{wrap:function(t,n,r,i){return e.w(o(t),n,r,i&&i.reverse())},isGeneratorFunction:r,mark:e.m,awrap:function(e,t){return new s(e,t)},AsyncIterator:v,async:function(e,t,n,i,a){return(r(t)?d:y)(o(e),t,n,i,a)},keys:g,values:m}})()}function w(e,t,n){return(t=i(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function S(e){for(var t=1;arguments.length>t;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?O(Object(n),!0).forEach(function(t){w(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):O(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);t>n;n++)r[n]=e[n];return r}function x(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,u=[],c=!0,f=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(u.push(r.value),u.length!==t);c=!0);}catch(e){f=!0,i=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(f)throw i}}return u}}(e,t)||function(e,t){if(e){if("string"==typeof e)return k(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?k(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(e,t,n,r,i,o,a){try{var u=e[o](a),c=u.value}catch(e){return void n(e)}u.done?t(c):Promise.resolve(c).then(r,i)}function j(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function a(e){P(o,r,i,a,u,"next",e)}function u(e){P(o,r,i,a,u,"throw",e)}a(void 0)})}}function E(e){return"string"==typeof e}var A="undefined"!=typeof Float32Array?Float32Array:Array;var I=function(){return a(function e(){n(this,e),this.cacheStore=new Map},[{key:"onRefAdded",value:function(e){}},{key:"has",value:function(e){return this.cacheStore.has(e)}},{key:"put",value:function(e,t,n){return!this.cacheStore.has(e)&&(this.cacheStore.set(e,{value:t,counter:new Set([n.entity])}),this.onRefAdded(n),!0)}},{key:"get",value:function(e,t){var n=this.cacheStore.get(e);return n?(n.counter.has(t.entity)||(n.counter.add(t.entity),this.onRefAdded(t)),n.value):null}},{key:"update",value:function(e,t,n){var r=this.cacheStore.get(e);return!!r&&(r.value=S(S({},r.value),t),r.counter.has(n.entity)||(r.counter.add(n.entity),this.onRefAdded(n)),!0)}},{key:"release",value:function(e,t){var n=this.cacheStore.get(e);return!!n&&(n.counter.delete(t.entity),n.counter.size>0||this.cacheStore.delete(e),!0)}},{key:"releaseRef",value:function(e){var t=this;Array.from(this.cacheStore.keys()).forEach(function(n){t.release(n,e)})}},{key:"getSize",value:function(){return this.cacheStore.size}},{key:"clear",value:function(){this.cacheStore.clear()}}])}(),T=[],R=[],C=function(){function e(){n(this,e)}return a(e,null,[{key:"stop",value:function(){e.rafId&&((arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.api).cancelAnimationFrame(e.rafId),e.rafId=null)}},{key:"executeTask",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.api;(T.length>0||R.length>0)&&(R.forEach(function(e){return e()}),R=T.splice(0,e.TASK_NUM_PER_FRAME),e.rafId=t.requestAnimationFrame(function(){e.executeTask(t)}))}},{key:"sliceImage",value:function(t,n,r,i){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:e.api,u=t.naturalWidth||t.width,c=t.naturalHeight||t.height,f=n-o,l=r-o,s=Math.ceil(u/f),h=Math.ceil(c/l),p={tileSize:[n,r],gridSize:[h,s],tiles:Array(h).fill(null).map(function(){return Array(s).fill(null)})},v=function(e){for(var o=function(o){T.push(function(){var s=o*f,h=e*l,v=[Math.min(n,u-s),Math.min(r,c-h)],d=v[0],y=v[1],g=a.createCanvas();g.width=n,g.height=r,g.getContext("2d").drawImage(t,s,h,d,y,0,0,d,y),p.tiles[e][o]={x:s,y:h,tileX:o,tileY:e,data:g},i()})},h=0;s>h;h++)o(h)},d=0;h>d;d++)v(d);return e.stop(),e.executeTask(),p}}])}();C.TASK_NUM_PER_FRAME=10;var _=new I;_.onRefAdded=function(e){var n=this;e.addEventListener(t.ElementEvent.DESTROY,function(){n.releaseRef(e)},{once:!0})};var G=function(){return a(function e(t,r){n(this,e),this.gradientCache={},this.patternCache={},this.context=t,this.runtime=r},[{key:"getImageSync",value:function(e,t,n){var r=E(e)?e:e.src;if(_.has(r)){var i=_.get(r,t);if(i.img.complete)return null==n||n(i),i}return this.getOrCreateImage(e,t).then(function(e){null==n||n(e)}).catch(function(e){console.error(e)}),null}},{key:"getOrCreateImage",value:function(e,t){var n=this,r=E(e)?e:e.src;if(!E(e)&&!_.has(r)){var i={img:e,size:[e.naturalWidth||e.width,e.naturalHeight||e.height],tileSize:z(e)};_.put(r,i,t)}if(_.has(r)){var o=_.get(r,t);return o.img.complete?Promise.resolve(o):new Promise(function(e,t){o.img.addEventListener("load",function(){o.size=[o.img.naturalWidth||o.img.width,o.img.naturalHeight||o.img.height],o.tileSize=z(o.img),e(o)}),o.img.addEventListener("error",function(e){t(e)})})}return new Promise(function(e,i){var o=n.context.config.createImage();if(o){var a={img:o,size:[0,0],tileSize:z(o)};_.put(r,a,t),o.onload=function(){a.size=[o.naturalWidth||o.width,o.naturalHeight||o.height],a.tileSize=z(a.img),e(a)},o.onerror=function(e){i(e)},o.crossOrigin="Anonymous",o.src=r}})}},{key:"createDownSampledImage",value:(r=j(b().mark(function e(t,n){var r,i,o,a,u,c,f,l,s,h,p,v,d,y;return b().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=1,this.getOrCreateImage(t,n);case 1:if(void 0===(r=e.sent).downSamplingRate){e.next=2;break}return e.abrupt("return",r);case 2:if(u=void 0===(a=(o="boolean"==typeof(i=this.context.config.enableLargeImageOptimization)?{}:i).maxDownSampledImageSize)?2048:a,f=void 0===(c=o.downSamplingRateThreshold)?.5:c,l=this.runtime.globalThis.createImageBitmap,s=x(r.size,2),v=r.img,d=Math.min((u+u)/((h=s[0])+(p=s[1])),Math.max(.01,Math.min(f,.5))),y=S(S({},r),{},{downSamplingRate:d}),_.update(r.img.src,y,n),!l){e.next=7;break}return e.prev=3,e.next=4,l(r.img,{resizeWidth:h*d,resizeHeight:p*d});case 4:v=e.sent,e.next=6;break;case 5:e.prev=5,e.catch(3),d=1;case 6:e.next=8;break;case 7:d=1;case 8:return y=S(S({},this.getImageSync(t,n)),{},{downSampled:v,downSamplingRate:d}),_.update(r.img.src,y,n),e.abrupt("return",y);case 9:case"end":return e.stop()}},e,this,[[3,5]])})),function(e,t){return r.apply(this,arguments)})},{key:"createImageTiles",value:(e=j(b().mark(function e(n,r,i,o){var a,u,c;return b().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=1,this.getOrCreateImage(n,o);case 1:return a=e.sent,C.api={requestAnimationFrame:(u=o.ownerDocument.defaultView).requestAnimationFrame,cancelAnimationFrame:u.cancelAnimationFrame,createCanvas:function(){return t.OffscreenCanvasCreator.createCanvas()}},c=S(S({},a),C.sliceImage(a.img,a.tileSize[0],a.tileSize[0],i)),_.update(a.img.src,c,o),e.abrupt("return",c);case 2:case"end":return e.stop()}},e,this)})),function(t,n,r,i){return e.apply(this,arguments)})},{key:"releaseImage",value:function(e,t){_.release(E(e)?e:e.src,t)}},{key:"releaseImageRef",value:function(e){_.releaseRef(e)}},{key:"getOrCreatePatternSync",value:function(e,n,r,i,o,a,u){var c=this.generatePatternKey(n);if(c&&this.patternCache[c])return this.patternCache[c];var f,l=n.image,s=n.repetition,h=n.transform,p=!1;if(E(l)){var v=this.getImageSync(l,e,u);f=null==v?void 0:v.img}else i?(f=i,p=!0):f=l;var d,y,g=f&&r.createPattern(f,s);g&&(d=h?t.parsedTransformToMat4(t.parseTransform(h),new t.DisplayObject({})):function(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}((y=new A(16),A!=Float32Array&&(y[1]=0,y[2]=0,y[3]=0,y[4]=0,y[6]=0,y[7]=0,y[8]=0,y[9]=0,y[11]=0,y[12]=0,y[13]=0,y[14]=0),y[0]=1,y[5]=1,y[10]=1,y[15]=1,y)),p&&function(e,t,n){var r=n[0],i=n[1],o=n[2];e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*o,e[9]=t[9]*o,e[10]=t[10]*o,e[11]=t[11]*o,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]}(d,d,[1/o,1/o,1]),g.setTransform({a:d[0],b:d[1],c:d[4],d:d[5],e:d[12]+a[0],f:d[13]+a[1]}));return c&&g&&(this.patternCache[c]=g),g}},{key:"getOrCreateGradient",value:function(e,n){var r=this.generateGradientKey(e),i=e.type,o=e.steps,a=e.min,u=e.width,c=e.height,f=e.cx,l=e.cy,s=e.size;if(this.gradientCache[r])return this.gradientCache[r];var h=null;if(i===t.GradientType.LinearGradient){var p=t.computeLinearGradient(a,u,c,e.angle);h=n.createLinearGradient(p.x1,p.y1,p.x2,p.y2)}else if(i===t.GradientType.RadialGradient){var v=t.computeRadialGradient(a,u,c,f,l,s),d=v.x,y=v.y;h=n.createRadialGradient(d,y,0,d,y,v.r)}return h&&(o.forEach(function(e){var n,r=e.offset;r.unit===t.UnitType.kPercentage&&(null===(n=h)||void 0===n||n.addColorStop(r.value/100,""+e.color))}),this.gradientCache[r]=h),this.gradientCache[r]}},{key:"generateGradientKey",value:function(e){var t=e.min,n=e.width,r=e.height,i=e.steps,o=e.angle,a=e.cx,u=e.cy,c=e.size;return"gradient-".concat(e.type,"-").concat((null==o?void 0:""+o)||0,"-").concat((null==a?void 0:""+a)||0,"-").concat((null==u?void 0:""+u)||0,"-").concat((null==c?void 0:""+c)||0,"-").concat(t[0],"-").concat(t[1],"-").concat(n,"-").concat(r,"-").concat(i.map(function(e){var t=e.color;return"".concat(e.offset).concat(t)}).join("-"))}},{key:"generatePatternKey",value:function(e){var t=e.image,n=e.repetition;return E(t)?"pattern-".concat(t,"-").concat(n):"rect"===t.nodeName?"pattern-".concat(t.entity,"-").concat(n):void 0}}]);var e,r}();function z(e){if(!e.complete)return[0,0];var t=e.naturalWidth||e.width,n=e.naturalHeight||e.height,r=256;return[256,512].forEach(function(e){1e3>Math.ceil(n/e)*Math.ceil(t/e)&&(r=e)}),[r,r]}G.isSupportTile=!!t.OffscreenCanvasCreator.createCanvas();var M=function(){function e(){n(this,e)}return a(e,[{key:"apply",value:function(n){var r=n.renderingService,i=n.imagePool,o=n.renderingContext.root.ownerDocument.defaultView,a=function(e,t,n){var r=e.parsedStyle,i=r.width,o=r.height;i&&!o?e.setAttribute("height",n/t*i):!i&&o&&e.setAttribute("width",t/n*o)},u=function(e){var n=e.target,o=n.attributes;if(n.nodeName===t.Shape.IMAGE){var u=o.keepAspectRatio;i.getImageSync(o.src,n,function(e){var t=e.img;u&&a(n,t.width,t.height),n.dirty(),r.dirty()})}},c=function(e){var n=e.target,o=e.prevValue,u=e.newValue;n.nodeName===t.Shape.IMAGE&&"src"===e.attrName&&(o!==u&&i.releaseImage(o,n),E(u)&&i.getOrCreateImage(u,n).then(function(e){var t=e.img;n.attributes.keepAspectRatio&&a(n,t.width,t.height),n.dirty(),r.dirty()}).catch(function(){}))};r.hooks.init.tap(e.tag,function(){o.addEventListener(t.ElementEvent.MOUNTED,u),o.addEventListener(t.ElementEvent.ATTR_MODIFIED,c)}),r.hooks.destroy.tap(e.tag,function(){o.removeEventListener(t.ElementEvent.MOUNTED,u),o.removeEventListener(t.ElementEvent.ATTR_MODIFIED,c)})}}])}();M.tag="LoadImage";var F=function(e){function t(){var e,r,i,o;n(this,t);for(var a=arguments.length,l=Array(a),s=0;a>s;s++)l[s]=arguments[s];return r=this,i=t,o=[].concat(l),i=u(i),(e=f(r,c()?Reflect.construct(i,o||[],u(r).constructor):i.apply(r,o))).name="image-loader",e}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&l(e,t)}(t,e),a(t,[{key:"init",value:function(e){this.context.imagePool=new G(this.context,e),this.addRenderingPlugin(new M)}},{key:"destroy",value:function(){this.removeAllRenderingPlugins()}}])}(t.AbstractRendererPlugin);e.ImagePool=G,e.Plugin=F});
//# sourceMappingURL=index.umd.min.js.map
{
"name": "@antv/g-plugin-image-loader",
"version": "2.1.26",
"version": "2.2.0",
"description": "A G plugin for loading image",

@@ -40,3 +40,3 @@ "keywords": [

"tslib": "^2.5.3",
"@antv/g-lite": "2.3.2"
"@antv/g-lite": "2.4.0"
},

@@ -43,0 +43,0 @@ "publishConfig": {

@@ -1,1 +0,1 @@

{"version":3,"file":"LoadImagePlugin.d.ts","sourceRoot":"","sources":["../src/LoadImagePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,eAAe,EACf,sBAAsB,EAEvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,eAAgB,YAAW,eAAe;IACrD,MAAM,CAAC,GAAG,SAAe;IAEzB,KAAK,CAAC,OAAO,EAAE,sBAAsB,GAAG;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE;CAwFjE"}
{"version":3,"file":"LoadImagePlugin.d.ts","sourceRoot":"","sources":["../src/LoadImagePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,eAAe,EACf,sBAAsB,EAEvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,eAAgB,YAAW,eAAe;IACrD,MAAM,CAAC,GAAG,SAAe;IAEzB,KAAK,CAAC,OAAO,EAAE,sBAAsB,GAAG;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE;CAsFjE"}

Sorry, the diff of this file is too big to display