leafer-draw 1.12.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -216,57 +216,6 @@ class LeafData {
216
216
  }
217
217
  }
218
218
 
219
- const {floor: floor$2, max: max$4} = Math;
220
-
221
- const Platform = {
222
- toURL(text, fileType) {
223
- let url = encodeURIComponent(text);
224
- if (fileType === "text") url = "data:text/plain;charset=utf-8," + url; else if (fileType === "svg") url = "data:image/svg+xml," + url;
225
- return url;
226
- },
227
- image: {
228
- hitCanvasSize: 100,
229
- maxCacheSize: 2560 * 1600,
230
- maxPatternSize: 4096 * 2160,
231
- crossOrigin: "anonymous",
232
- isLarge(size, scaleX, scaleY, largeSize) {
233
- return size.width * size.height * (scaleX ? scaleX * scaleY : 1) > (largeSize || image$1.maxCacheSize);
234
- },
235
- isSuperLarge(size, scaleX, scaleY) {
236
- return image$1.isLarge(size, scaleX, scaleY, image$1.maxPatternSize);
237
- },
238
- getRealURL(url) {
239
- const {prefix: prefix, suffix: suffix} = Platform.image;
240
- if (suffix && !url.startsWith("data:") && !url.startsWith("blob:")) url += (url.includes("?") ? "&" : "?") + suffix;
241
- if (prefix && url[0] === "/") url = prefix + url;
242
- return url;
243
- },
244
- resize(image, width, height, xGap, yGap, clip, smooth, opacity, _filters) {
245
- const canvas = Platform.origin.createCanvas(max$4(floor$2(width + (xGap || 0)), 1), max$4(floor$2(height + (yGap || 0)), 1));
246
- const ctx = canvas.getContext("2d");
247
- if (opacity) ctx.globalAlpha = opacity;
248
- ctx.imageSmoothingEnabled = smooth === false ? false : true;
249
- if (clip) {
250
- const scaleX = width / clip.width, scaleY = height / clip.height;
251
- ctx.setTransform(scaleX, 0, 0, scaleY, -clip.x * scaleX, -clip.y * scaleY);
252
- ctx.drawImage(image, 0, 0, image.width, image.height);
253
- } else ctx.drawImage(image, 0, 0, width, height);
254
- return canvas;
255
- },
256
- setPatternTransform(pattern, transform, paint) {
257
- try {
258
- if (transform && pattern.setTransform) {
259
- pattern.setTransform(transform);
260
- transform = undefined;
261
- }
262
- } catch (_a) {}
263
- if (paint) DataHelper.stintSet(paint, "transform", transform);
264
- }
265
- }
266
- };
267
-
268
- const {image: image$1} = Platform;
269
-
270
219
  const IncrementId = {
271
220
  RUNTIME: "runtime",
272
221
  LEAF: "leaf",
@@ -289,7 +238,7 @@ const I$1 = IncrementId;
289
238
 
290
239
  let tempA, tempB, tempTo;
291
240
 
292
- const {max: max$3} = Math, tempFour = [ 0, 0, 0, 0 ];
241
+ const {max: max$4} = Math, tempFour = [ 0, 0, 0, 0 ];
293
242
 
294
243
  const FourNumberHelper = {
295
244
  zero: [ ...tempFour ],
@@ -341,9 +290,9 @@ const FourNumberHelper = {
341
290
  return data;
342
291
  },
343
292
  max(t, other, change) {
344
- if (isNumber(t) && isNumber(other)) return max$3(t, other);
293
+ if (isNumber(t) && isNumber(other)) return max$4(t, other);
345
294
  toTempAB(t, other, change);
346
- return set$2(tempTo, max$3(tempA[0], tempB[0]), max$3(tempA[1], tempB[1]), max$3(tempA[2], tempB[2]), max$3(tempA[3], tempB[3]));
295
+ return set$2(tempTo, max$4(tempA[0], tempB[0]), max$4(tempA[1], tempB[1]), max$4(tempA[2], tempB[2]), max$4(tempA[3], tempB[3]));
347
296
  },
348
297
  add(t, other, change) {
349
298
  if (isNumber(t) && isNumber(other)) return t + other;
@@ -360,7 +309,7 @@ const FourNumberHelper = {
360
309
 
361
310
  const {set: set$2, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumberHelper;
362
311
 
363
- const {round: round$3, pow: pow$1, max: max$2, floor: floor$1, PI: PI$3} = Math;
312
+ const {round: round$3, pow: pow$1, max: max$3, floor: floor$2, PI: PI$3} = Math;
364
313
 
365
314
  const MathHelper = {
366
315
  within(value, min, max) {
@@ -414,7 +363,7 @@ const MathHelper = {
414
363
  }
415
364
  },
416
365
  getFloorScale(num, min = 1) {
417
- return max$2(floor$1(num), min) / num;
366
+ return max$3(floor$2(num), min) / num;
418
367
  },
419
368
  randInt: randInt,
420
369
  randColor(opacity) {
@@ -1259,7 +1208,7 @@ const {toOuterPoint: toOuterPoint$2} = MatrixHelper;
1259
1208
 
1260
1209
  const {float: float, fourNumber: fourNumber} = MathHelper;
1261
1210
 
1262
- const {floor: floor, ceil: ceil$1} = Math;
1211
+ const {floor: floor$1, ceil: ceil$1} = Math;
1263
1212
 
1264
1213
  let right$1, bottom$1, boundsRight, boundsBottom;
1265
1214
 
@@ -1416,8 +1365,8 @@ const BoundsHelper = {
1416
1365
  },
1417
1366
  ceil(t) {
1418
1367
  const {x: x, y: y} = t;
1419
- t.x = floor(t.x);
1420
- t.y = floor(t.y);
1368
+ t.x = floor$1(t.x);
1369
+ t.y = floor$1(t.y);
1421
1370
  t.width = x > t.x ? ceil$1(t.width + x - t.x) : ceil$1(t.width);
1422
1371
  t.height = y > t.y ? ceil$1(t.height + y - t.y) : ceil$1(t.height);
1423
1372
  },
@@ -1549,6 +1498,9 @@ const BoundsHelper = {
1549
1498
  isEmpty(t) {
1550
1499
  return t.x === 0 && t.y === 0 && t.width === 0 && t.height === 0;
1551
1500
  },
1501
+ hasSize(t) {
1502
+ return t.width && t.height;
1503
+ },
1552
1504
  reset(t) {
1553
1505
  B.set(t);
1554
1506
  }
@@ -1725,6 +1677,12 @@ class AutoBounds {
1725
1677
  }
1726
1678
  }
1727
1679
 
1680
+ const UnitConvertHelper = {
1681
+ number(value, percentRefer) {
1682
+ return isObject(value) ? value.type === "percent" ? value.value * percentRefer : value.value : value;
1683
+ }
1684
+ };
1685
+
1728
1686
  const StringNumberMap = {
1729
1687
  0: 1,
1730
1688
  1: 1,
@@ -1741,6 +1699,69 @@ const StringNumberMap = {
1741
1699
  E: 1
1742
1700
  };
1743
1701
 
1702
+ const {floor: floor, max: max$2} = Math;
1703
+
1704
+ const Platform = {
1705
+ toURL(text, fileType) {
1706
+ let url = encodeURIComponent(text);
1707
+ if (fileType === "text") url = "data:text/plain;charset=utf-8," + url; else if (fileType === "svg") url = "data:image/svg+xml," + url;
1708
+ return url;
1709
+ },
1710
+ image: {
1711
+ hitCanvasSize: 100,
1712
+ maxCacheSize: 2560 * 1600,
1713
+ maxPatternSize: 4096 * 2160,
1714
+ crossOrigin: "anonymous",
1715
+ isLarge(size, scaleX, scaleY, largeSize) {
1716
+ return size.width * size.height * (scaleX ? scaleX * scaleY : 1) > (largeSize || image$1.maxCacheSize);
1717
+ },
1718
+ isSuperLarge(size, scaleX, scaleY) {
1719
+ return image$1.isLarge(size, scaleX, scaleY, image$1.maxPatternSize);
1720
+ },
1721
+ getRealURL(url) {
1722
+ const {prefix: prefix, suffix: suffix} = image$1;
1723
+ if (suffix && !url.startsWith("data:") && !url.startsWith("blob:")) url += (url.includes("?") ? "&" : "?") + suffix;
1724
+ if (prefix && url[0] === "/") url = prefix + url;
1725
+ return url;
1726
+ },
1727
+ resize(view, width, height, xGap, yGap, clip, smooth, opacity, _filters, interlace) {
1728
+ const realWidth = max$2(floor(width + (xGap || 0)), 1), realHeight = max$2(floor(height + (yGap || 0)), 1);
1729
+ let interlaceX, interlaceY, interlaceOffset;
1730
+ if (interlace && (interlaceOffset = UnitConvertHelper.number(interlace.offset, (interlaceX = interlace.type === "x") ? width : height))) interlaceX || (interlaceY = true);
1731
+ const canvas = Platform.origin.createCanvas(interlaceY ? realWidth * 2 : realWidth, interlaceX ? realHeight * 2 : realHeight);
1732
+ const ctx = canvas.getContext("2d");
1733
+ if (opacity) ctx.globalAlpha = opacity;
1734
+ ctx.imageSmoothingEnabled = smooth === false ? false : true;
1735
+ if (image$1.canUse(view)) {
1736
+ if (clip) {
1737
+ const scaleX = width / clip.width, scaleY = height / clip.height;
1738
+ ctx.setTransform(scaleX, 0, 0, scaleY, -clip.x * scaleX, -clip.y * scaleY);
1739
+ ctx.drawImage(view, 0, 0, view.width, view.height);
1740
+ } else ctx.drawImage(view, 0, 0, width, height);
1741
+ if (interlaceOffset) {
1742
+ ctx.drawImage(canvas, 0, 0, realWidth, realHeight, interlaceX ? interlaceOffset - realWidth : realWidth, interlaceX ? realHeight : interlaceOffset - realHeight, realWidth, realHeight);
1743
+ ctx.drawImage(canvas, 0, 0, realWidth, realHeight, interlaceX ? interlaceOffset : realWidth, interlaceX ? realHeight : interlaceOffset, realWidth, realHeight);
1744
+ }
1745
+ }
1746
+ return canvas;
1747
+ },
1748
+ canUse(view) {
1749
+ return view && view.width && !view.__closed;
1750
+ },
1751
+ setPatternTransform(pattern, transform, paint) {
1752
+ try {
1753
+ if (transform && pattern.setTransform) {
1754
+ pattern.setTransform(transform);
1755
+ transform = undefined;
1756
+ }
1757
+ } catch (_a) {}
1758
+ if (paint) DataHelper.stintSet(paint, "transform", transform);
1759
+ }
1760
+ }
1761
+ };
1762
+
1763
+ const {image: image$1} = Platform;
1764
+
1744
1765
  const {randColor: randColor} = MathHelper;
1745
1766
 
1746
1767
  class Debug {
@@ -3783,9 +3804,10 @@ class TaskItem {
3783
3804
  run() {
3784
3805
  return __awaiter(this, void 0, void 0, function*() {
3785
3806
  try {
3786
- if (this.isComplete) return;
3807
+ if (this.isComplete || this.runing) return;
3808
+ this.runing = true;
3787
3809
  if (this.canUse && !this.canUse()) return this.cancel();
3788
- if (this.task && this.parent.running) yield this.task();
3810
+ if (this.task) yield this.task();
3789
3811
  } catch (error) {
3790
3812
  debug$9.error(error);
3791
3813
  }
@@ -3901,7 +3923,7 @@ class TaskProcessor {
3901
3923
  stop() {
3902
3924
  this.isComplete = true;
3903
3925
  this.list.forEach(task => {
3904
- if (!task.isComplete) task.cancel();
3926
+ if (!task.isComplete) task.run();
3905
3927
  });
3906
3928
  this.pause();
3907
3929
  this.empty();
@@ -4191,7 +4213,7 @@ class LeaferImage {
4191
4213
  getFull(_filters) {
4192
4214
  return this.view;
4193
4215
  }
4194
- getCanvas(width, height, opacity, filters, xGap, yGap, smooth) {
4216
+ getCanvas(width, height, opacity, filters, xGap, yGap, smooth, interlace) {
4195
4217
  width || (width = this.width);
4196
4218
  height || (height = this.height);
4197
4219
  if (this.cache) {
@@ -4204,7 +4226,7 @@ class LeaferImage {
4204
4226
  }
4205
4227
  if (data) return data;
4206
4228
  }
4207
- const canvas = Platform.image.resize(this.view, width, height, xGap, yGap, undefined, smooth, opacity, filters);
4229
+ const canvas = Platform.image.resize(this.view, width, height, xGap, yGap, undefined, smooth, opacity, filters, interlace);
4208
4230
  this.cache = this.use > 1 ? {
4209
4231
  data: canvas,
4210
4232
  params: arguments
@@ -4220,13 +4242,13 @@ class LeaferImage {
4220
4242
  return this.url;
4221
4243
  }
4222
4244
  setThumbView(_view) {}
4223
- getThumbSize() {
4245
+ getThumbSize(_lod) {
4224
4246
  return undefined;
4225
4247
  }
4226
4248
  getMinLevel() {
4227
4249
  return undefined;
4228
4250
  }
4229
- getLevelData(_level) {
4251
+ getLevelData(_level, _width, _height) {
4230
4252
  return undefined;
4231
4253
  }
4232
4254
  clearLevels(_checkUse) {}
@@ -6096,7 +6118,7 @@ const LeafRender = {
6096
6118
  }
6097
6119
  };
6098
6120
 
6099
- const {excludeRenderBounds: excludeRenderBounds$1} = LeafBoundsHelper;
6121
+ const {excludeRenderBounds: excludeRenderBounds$1} = LeafBoundsHelper, {hasSize: hasSize} = BoundsHelper;
6100
6122
 
6101
6123
  const BranchRender = {
6102
6124
  __updateChange() {
@@ -6108,8 +6130,8 @@ const BranchRender = {
6108
6130
  this.__.__checkSingle();
6109
6131
  },
6110
6132
  __render(canvas, options) {
6111
- this.__nowWorld = this.__getNowWorld(options);
6112
- if (this.__worldOpacity) {
6133
+ const nowWorld = this.__nowWorld = this.__getNowWorld(options);
6134
+ if (this.__worldOpacity && hasSize(nowWorld)) {
6113
6135
  const data = this.__;
6114
6136
  if (data.__useDim) {
6115
6137
  if (data.dim) options.dimOpacity = data.dim === true ? .2 : data.dim; else if (data.bright && !options.topRendering) return options.topList.add(this); else if (data.dimskip) options.dimOpacity && (options.dimOpacity = 0);
@@ -6118,7 +6140,6 @@ const BranchRender = {
6118
6140
  if (data.eraser === "path") return this.__renderEraser(canvas, options);
6119
6141
  const tempCanvas = canvas.getSameCanvas(false, true);
6120
6142
  this.__renderBranch(tempCanvas, options);
6121
- const nowWorld = this.__nowWorld;
6122
6143
  canvas.opacity = options.dimOpacity ? data.opacity * options.dimOpacity : data.opacity;
6123
6144
  canvas.copyWorldByReset(tempCanvas, nowWorld, nowWorld, data.__blendMode, true);
6124
6145
  tempCanvas.recycle(nowWorld);
@@ -6958,7 +6979,7 @@ class LeafLevelList {
6958
6979
  }
6959
6980
  }
6960
6981
 
6961
- const version = "1.12.3";
6982
+ const version = "2.0.0";
6962
6983
 
6963
6984
  const debug$4 = Debug.get("LeaferCanvas");
6964
6985
 
@@ -7582,6 +7603,7 @@ class Renderer {
7582
7603
  this.times = 0;
7583
7604
  this.config = {
7584
7605
  usePartRender: true,
7606
+ ceilPartPixel: true,
7585
7607
  maxFPS: 120
7586
7608
  };
7587
7609
  this.frames = [];
@@ -7690,8 +7712,9 @@ class Renderer {
7690
7712
  const {canvas: canvas} = this, bounds = block.getIntersect(canvas.bounds), realBounds = new Bounds(bounds);
7691
7713
  canvas.save();
7692
7714
  bounds.spread(Renderer.clipSpread).ceil();
7693
- canvas.clearWorld(bounds);
7694
- canvas.clipWorld(bounds);
7715
+ const {ceilPartPixel: ceilPartPixel} = this.config;
7716
+ canvas.clipWorld(bounds, ceilPartPixel);
7717
+ canvas.clearWorld(bounds, ceilPartPixel);
7695
7718
  this.__render(bounds, realBounds);
7696
7719
  canvas.restore();
7697
7720
  Run.end(t);
@@ -7890,11 +7913,7 @@ const ColorConvert = {
7890
7913
  hasTransparent: hasTransparent$3
7891
7914
  };
7892
7915
 
7893
- const UnitConvert = {
7894
- number(value, percentRefer) {
7895
- return isObject(value) ? value.type === "percent" ? value.value * percentRefer : value.value : value;
7896
- }
7897
- };
7916
+ const UnitConvert = UnitConvertHelper;
7898
7917
 
7899
7918
  const PathArrow = {};
7900
7919
 
@@ -9264,9 +9283,10 @@ let Ellipse = class Ellipse extends UI {
9264
9283
  const {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} = this.__;
9265
9284
  const rx = width / 2, ry = height / 2;
9266
9285
  const path = this.__.path = [];
9286
+ let open;
9267
9287
  if (innerRadius) {
9268
9288
  if (startAngle || endAngle) {
9269
- if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false);
9289
+ if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false); else open = true;
9270
9290
  ellipse(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
9271
9291
  } else {
9272
9292
  if (innerRadius < 1) {
@@ -9283,7 +9303,7 @@ let Ellipse = class Ellipse extends UI {
9283
9303
  ellipse(path, rx, ry, rx, ry);
9284
9304
  }
9285
9305
  }
9286
- closePath$2(path);
9306
+ if (!open) closePath$2(path);
9287
9307
  if (Platform.ellipseToCurve) this.__.path = this.getPath(true);
9288
9308
  }
9289
9309
  };
@@ -10145,7 +10165,7 @@ function image(ui, attrName, paint, boxBounds, firstUse) {
10145
10165
  ignoreRender(ui, false);
10146
10166
  onLoadError(ui, event, error);
10147
10167
  leafPaint.loadId = undefined;
10148
- }, paint.lod && image.getThumbSize());
10168
+ }, paint.lod && image.getThumbSize(paint.lod));
10149
10169
  if (ui.placeholderColor) {
10150
10170
  if (!ui.placeholderDelay) image.isPlacehold = true; else setTimeout(() => {
10151
10171
  if (!image.ready) {
@@ -10215,7 +10235,7 @@ function getPatternData(paint, box, image) {
10215
10235
  if (paint.padding) box = tempBox.set(box).shrink(paint.padding);
10216
10236
  if (paint.mode === "strench") paint.mode = "stretch";
10217
10237
  const {width: width, height: height} = image;
10218
- const {opacity: opacity, mode: mode, align: align, offset: offset, scale: scale, size: size, rotation: rotation, skew: skew, clipSize: clipSize, repeat: repeat, gap: gap, filters: filters} = paint;
10238
+ const {opacity: opacity, mode: mode, align: align, offset: offset, scale: scale, size: size, rotation: rotation, skew: skew, clipSize: clipSize, repeat: repeat, gap: gap, filters: filters, interlace: interlace} = paint;
10219
10239
  const sameBox = box.width === width && box.height === height;
10220
10240
  const data = {
10221
10241
  mode: mode
@@ -10281,6 +10301,10 @@ function getPatternData(paint, box, image) {
10281
10301
  if (opacity && opacity < 1) data.opacity = opacity;
10282
10302
  if (filters) data.filters = filters;
10283
10303
  if (repeat) data.repeat = isString(repeat) ? repeat === "x" ? "repeat-x" : "repeat-y" : "repeat";
10304
+ if (interlace) data.interlace = isNumber(interlace) || interlace.type === "percent" ? {
10305
+ type: "x",
10306
+ offset: interlace
10307
+ } : interlace;
10284
10308
  return data;
10285
10309
  }
10286
10310
 
@@ -10414,7 +10438,7 @@ function createPattern(paint, ui, canvas, renderOptions) {
10414
10438
  if (transform) copy$1(imageMatrix, transform);
10415
10439
  scale(imageMatrix, 1 / scaleX, 1 / scaleY);
10416
10440
  }
10417
- const imageCanvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth);
10441
+ const imageCanvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth, data.interlace);
10418
10442
  const pattern = image.getPattern(imageCanvas, data.repeat || (Platform.origin.noRepeat || "no-repeat"), imageMatrix, paint);
10419
10443
  paint.style = pattern;
10420
10444
  paint.patternId = id;
@@ -10436,8 +10460,8 @@ function getPatternFixScale(paint, imageScaleX, imageScaleY) {
10436
10460
 
10437
10461
  function checkImage(paint, drawImage, ui, canvas, renderOptions) {
10438
10462
  const {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions);
10439
- const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting} = renderOptions;
10440
- if (!data || paint.patternId === scaleX + "-" + scaleY && !exporting) {
10463
+ const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting, snapshot: snapshot} = renderOptions;
10464
+ if (!data || paint.patternId === scaleX + "-" + scaleY && !exporting || snapshot) {
10441
10465
  return false;
10442
10466
  } else {
10443
10467
  if (drawImage) {
@@ -11111,7 +11135,7 @@ const TextMode = 2;
11111
11135
 
11112
11136
  function layoutChar(drawData, style, width, _height) {
11113
11137
  const {rows: rows} = drawData;
11114
- const {textAlign: textAlign, paraIndent: paraIndent, letterSpacing: letterSpacing} = style;
11138
+ const {textAlign: textAlign, paraIndent: paraIndent, __letterSpacing: __letterSpacing} = style;
11115
11139
  const justifyLast = width && textAlign.includes("both");
11116
11140
  const justify = justifyLast || width && textAlign.includes("justify");
11117
11141
  const justifyLetter = justify && textAlign.includes("letter");
@@ -11124,8 +11148,8 @@ function layoutChar(drawData, style, width, _height) {
11124
11148
  remainingWidth = width - row.width - indentWidth;
11125
11149
  if (justifyLetter) addLetterWidth = remainingWidth / (row.words.reduce((total, item) => total + item.data.length, 0) - 1); else addWordWidth = wordsLength > 1 ? remainingWidth / (wordsLength - 1) : 0;
11126
11150
  }
11127
- mode = letterSpacing || row.isOverflow || justifyLetter ? CharMode : addWordWidth ? WordMode : TextMode;
11128
- if (row.isOverflow && !letterSpacing) row.textMode = true;
11151
+ mode = __letterSpacing || row.isOverflow || justifyLetter ? CharMode : addWordWidth ? WordMode : TextMode;
11152
+ if (row.isOverflow && !__letterSpacing) row.textMode = true;
11129
11153
  if (mode === TextMode) {
11130
11154
  row.x += indentWidth;
11131
11155
  toTextChar$1(row);
@@ -11413,4 +11437,4 @@ Object.assign(Effect, EffectModule);
11413
11437
 
11414
11438
  useCanvas();
11415
11439
 
11416
- export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MyImage, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Platform, Plugin, Point, PointHelper, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Run, Star, StarData, State, StringNumberMap, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, effectType, emptyData, eraserType, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
11440
+ export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MyImage, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Platform, Plugin, Point, PointHelper, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Run, Star, StarData, State, StringNumberMap, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, effectType, emptyData, eraserType, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };