@leafer/worker 1.11.2 → 1.12.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.
@@ -4056,16 +4056,27 @@ const ImageManager = {
4056
4056
  recycle(image) {
4057
4057
  image.use--;
4058
4058
  setTimeout(() => {
4059
- if (!image.use) I$1.recycledList.push(image);
4059
+ if (!image.use) {
4060
+ if (Platform.image.isLarge(image)) {
4061
+ if (image.url) Resource.remove(image.url);
4062
+ } else {
4063
+ image.clearLevels();
4064
+ I$1.recycledList.push(image);
4065
+ }
4066
+ }
4060
4067
  });
4061
4068
  },
4062
- clearRecycled() {
4069
+ recyclePaint(paint) {
4070
+ I$1.recycle(paint.image);
4071
+ },
4072
+ clearRecycled(force) {
4063
4073
  const list = I$1.recycledList;
4064
- if (list.length > I$1.maxRecycled) {
4065
- list.forEach(image => !image.use && image.url && Resource.remove(image.url));
4074
+ if (list.length > I$1.maxRecycled || force) {
4075
+ list.forEach(image => (!image.use || force) && image.url && Resource.remove(image.url));
4066
4076
  list.length = 0;
4067
4077
  }
4068
4078
  },
4079
+ clearLevels() {},
4069
4080
  hasAlphaPixel(config) {
4070
4081
  return FileHelper.alphaPixelTypes.some(item => I$1.isFormat(item, config));
4071
4082
  },
@@ -4080,7 +4091,7 @@ const ImageManager = {
4080
4091
  return false;
4081
4092
  },
4082
4093
  destroy() {
4083
- I$1.recycledList = [];
4094
+ this.clearRecycled(true);
4084
4095
  }
4085
4096
  };
4086
4097
 
@@ -4183,11 +4194,15 @@ class LeaferImage {
4183
4194
  Platform.image.setPatternTransform(pattern, transform, paint);
4184
4195
  return pattern;
4185
4196
  }
4197
+ clearLevels(_checkUse) {}
4186
4198
  destroy() {
4199
+ this.clearLevels();
4200
+ const {view: view} = this;
4201
+ if (view && view.close) view.close();
4187
4202
  this.config = {
4188
4203
  url: ""
4189
4204
  };
4190
- this.cache = null;
4205
+ this.cache = this.view = null;
4191
4206
  this.waitComplete.length = 0;
4192
4207
  }
4193
4208
  }
@@ -5966,6 +5981,7 @@ const LeafBounds = {
5966
5981
  const LeafRender = {
5967
5982
  __render(canvas, options) {
5968
5983
  if (options.shape) return this.__renderShape(canvas, options);
5984
+ if (options.cellList && !options.cellList.has(this)) return;
5969
5985
  if (this.__worldOpacity) {
5970
5986
  const data = this.__;
5971
5987
  if (data.bright && !options.topRendering) return options.topList.add(this);
@@ -6864,7 +6880,7 @@ class LeafLevelList {
6864
6880
  }
6865
6881
  }
6866
6882
 
6867
- const version = "1.11.2";
6883
+ const version = "1.12.0";
6868
6884
 
6869
6885
  class LeaferCanvas extends LeaferCanvasBase {
6870
6886
  get allowBackgroundColor() {
@@ -6981,7 +6997,7 @@ class Watcher {
6981
6997
  return this.hasAdd || this.hasRemove || this.hasVisible;
6982
6998
  }
6983
6999
  get updatedList() {
6984
- if (this.hasRemove) {
7000
+ if (this.hasRemove && this.config.usePartLayout) {
6985
7001
  const updatedList = new LeafList;
6986
7002
  this.__updatedList.list.forEach(item => {
6987
7003
  if (item.leafer) updatedList.add(item);
@@ -7016,16 +7032,18 @@ class Watcher {
7016
7032
  if (this.running) this.target.emit(RenderEvent.REQUEST);
7017
7033
  }
7018
7034
  __onAttrChange(event) {
7019
- this.__updatedList.add(event.target);
7035
+ if (this.config.usePartLayout) this.__updatedList.add(event.target);
7020
7036
  this.update();
7021
7037
  }
7022
7038
  __onChildEvent(event) {
7023
- if (event.type === ChildEvent.ADD) {
7024
- this.hasAdd = true;
7025
- this.__pushChild(event.child);
7026
- } else {
7027
- this.hasRemove = true;
7028
- this.__updatedList.add(event.parent);
7039
+ if (this.config.usePartLayout) {
7040
+ if (event.type === ChildEvent.ADD) {
7041
+ this.hasAdd = true;
7042
+ this.__pushChild(event.child);
7043
+ } else {
7044
+ this.hasRemove = true;
7045
+ this.__updatedList.add(event.parent);
7046
+ }
7029
7047
  }
7030
7048
  this.update();
7031
7049
  }
@@ -7142,7 +7160,9 @@ const debug$7 = Debug.get("Layouter");
7142
7160
  class Layouter {
7143
7161
  constructor(target, userConfig) {
7144
7162
  this.totalTimes = 0;
7145
- this.config = {};
7163
+ this.config = {
7164
+ usePartLayout: true
7165
+ };
7146
7166
  this.__levelList = new LeafLevelList;
7147
7167
  this.target = target;
7148
7168
  if (userConfig) this.config = DataHelper.default(userConfig, this.config);
@@ -7187,7 +7207,7 @@ class Layouter {
7187
7207
  this.totalTimes++;
7188
7208
  this.layouting = true;
7189
7209
  this.target.emit(WatchEvent.REQUEST);
7190
- if (this.totalTimes > 1) {
7210
+ if (this.totalTimes > 1 && this.config.usePartLayout) {
7191
7211
  this.partLayout();
7192
7212
  } else {
7193
7213
  this.fullLayout();
@@ -7304,7 +7324,7 @@ class Renderer {
7304
7324
  }
7305
7325
  update(change = true) {
7306
7326
  if (!this.changed) this.changed = change;
7307
- this.__requestRender();
7327
+ if (!this.requestTime) this.__requestRender();
7308
7328
  }
7309
7329
  requestLayout() {
7310
7330
  this.target.emit(LayoutEvent.REQUEST);
@@ -7411,7 +7431,7 @@ class Renderer {
7411
7431
  Run.end(t);
7412
7432
  }
7413
7433
  __render(bounds, realBounds) {
7414
- const {canvas: canvas} = this, includes = bounds.includes(this.target.__world), options = includes ? {
7434
+ const {canvas: canvas, target: target} = this, includes = bounds.includes(target.__world), options = includes ? {
7415
7435
  includes: includes
7416
7436
  } : {
7417
7437
  bounds: bounds,
@@ -7419,12 +7439,16 @@ class Renderer {
7419
7439
  };
7420
7440
  if (this.needFill) canvas.fillWorld(bounds, this.config.fill);
7421
7441
  if (Debug.showRepaint) Debug.drawRepaint(canvas, bounds);
7422
- Platform.render(this.target, canvas, options);
7442
+ if (this.config.useCellRender) options.cellList = this.getCellList();
7443
+ Platform.render(target, canvas, options);
7423
7444
  this.renderBounds = realBounds = realBounds || bounds;
7424
7445
  this.renderOptions = options;
7425
7446
  this.totalBounds.isEmpty() ? this.totalBounds = realBounds : this.totalBounds.add(realBounds);
7426
7447
  canvas.updateRender(realBounds);
7427
7448
  }
7449
+ getCellList() {
7450
+ return undefined;
7451
+ }
7428
7452
  addBlock(block) {
7429
7453
  if (!this.updateBlocks) this.updateBlocks = [];
7430
7454
  this.updateBlocks.push(block);
@@ -8081,6 +8105,11 @@ class TextData extends UIData {
8081
8105
  }
8082
8106
  this._boxStyle = value;
8083
8107
  }
8108
+ __getInputData(names, options) {
8109
+ const data = super.__getInputData(names, options);
8110
+ if (data.textEditing) delete data.textEditing;
8111
+ return data;
8112
+ }
8084
8113
  }
8085
8114
 
8086
8115
  class ImageData extends RectData {
@@ -11420,6 +11449,7 @@ function getLeafPaint(attrName, paint, ui) {
11420
11449
  const {boxBounds: boxBounds} = ui.__layout;
11421
11450
  switch (paint.type) {
11422
11451
  case "image":
11452
+ if (!paint.url) return undefined;
11423
11453
  leafPaint = PaintImage.image(ui, attrName, paint, boxBounds, !recycleMap || !recycleMap[paint.url]);
11424
11454
  break;
11425
11455
 
@@ -11760,7 +11790,7 @@ function layout$3(transform, box, x, y, scaleX, scaleY, rotation, skew) {
11760
11790
  translate(transform, box.x + x, box.y + y);
11761
11791
  }
11762
11792
 
11763
- const {get: get$1, scale: scale$2, copy: copy$4} = MatrixHelper;
11793
+ const {get: get$1, scale: scale$1, copy: copy$4} = MatrixHelper;
11764
11794
 
11765
11795
  const {getFloorScale: getFloorScale} = MathHelper, {abs: abs$6} = Math;
11766
11796
 
@@ -11792,7 +11822,7 @@ function createPattern(paint, ui, canvas, renderOptions) {
11792
11822
  scaleY *= getFloorScale(height + (yGap || 0));
11793
11823
  imageMatrix = get$1();
11794
11824
  if (transform) copy$4(imageMatrix, transform);
11795
- scale$2(imageMatrix, 1 / scaleX, 1 / scaleY);
11825
+ scale$1(imageMatrix, 1 / scaleX, 1 / scaleY);
11796
11826
  }
11797
11827
  const imageCanvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth);
11798
11828
  const pattern = image.getPattern(imageCanvas, data.repeat || (Platform.origin.noRepeat || "no-repeat"), imageMatrix, paint);
@@ -11824,7 +11854,7 @@ function checkImage(paint, drawImage, ui, canvas, renderOptions) {
11824
11854
  if (data.repeat) {
11825
11855
  drawImage = false;
11826
11856
  } else if (!(originPaint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || exporting)) {
11827
- drawImage = Platform.image.isLarge(image, scaleX, scaleY);
11857
+ drawImage = Platform.image.isLarge(image, scaleX, scaleY) || image.width * scaleX > 8096 || image.height * scaleY > 8096;
11828
11858
  }
11829
11859
  }
11830
11860
  if (drawImage) {
@@ -11883,7 +11913,7 @@ function recycleImage(attrName, data) {
11883
11913
  if (url) {
11884
11914
  if (!recycleMap) recycleMap = {};
11885
11915
  recycleMap[url] = true;
11886
- ImageManager.recycle(image);
11916
+ ImageManager.recyclePaint(paint);
11887
11917
  if (image.loading) {
11888
11918
  if (!input) {
11889
11919
  input = data.__input && data.__input[attrName] || [];
@@ -12901,7 +12931,7 @@ function mergeConfigAttr() {
12901
12931
 
12902
12932
  const {abs: abs$4} = Math;
12903
12933
 
12904
- const {copy: copy$2, scale: scale$1} = MatrixHelper;
12934
+ const {copy: copy$2} = MatrixHelper;
12905
12935
 
12906
12936
  const {setListWithFn: setListWithFn} = BoundsHelper;
12907
12937
 
@@ -12945,19 +12975,10 @@ class Stroker extends UI {
12945
12975
  const aScaleX = abs$4(worldTransform.scaleX), aScaleY = abs$4(worldTransform.scaleY);
12946
12976
  copy$2(matrix$1, worldTransform);
12947
12977
  matrix$1.half = strokeWidth % 2;
12948
- if (aScaleX !== aScaleY) {
12949
- scale$1(matrix$1, 1 / aScaleX, 1 / aScaleY);
12950
- canvas.setWorld(matrix$1, options.matrix);
12951
- canvas.beginPath();
12952
- data.strokeWidth = strokeWidth;
12953
- const {x: x, y: y, width: width, height: height} = leaf.__layout.boxBounds;
12954
- canvas.rect(x * aScaleX, y * aScaleY, width * aScaleX, height * aScaleY);
12955
- } else {
12956
- canvas.setWorld(matrix$1, options.matrix);
12957
- canvas.beginPath();
12958
- if (leaf.__.__useArrow) leaf.__drawPath(canvas); else leaf.__.__pathForRender ? leaf.__drawRenderPath(canvas) : leaf.__drawPathByBox(canvas);
12959
- data.strokeWidth = strokeWidth / abs$4(worldTransform.scaleX);
12960
- }
12978
+ canvas.setWorld(matrix$1, options.matrix);
12979
+ canvas.beginPath();
12980
+ if (leaf.__.__useArrow) leaf.__drawPath(canvas); else leaf.__.__pathForRender ? leaf.__drawRenderPath(canvas) : leaf.__drawPathByBox(canvas);
12981
+ data.strokeWidth = strokeWidth / Math.max(aScaleX, aScaleY);
12961
12982
  if (stroke) isString(stroke) ? Paint.stroke(stroke, this, canvas, options) : Paint.strokes(stroke, this, canvas, options);
12962
12983
  if (fill) isString(fill) ? Paint.fill(fill, this, canvas, options) : Paint.fills(fill, this, canvas, options);
12963
12984
  }