leafer-draw 1.11.2 → 1.12.1

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.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.recycledList.push(image);
4065
+ }
4066
+ }
4060
4067
  });
4061
4068
  },
4062
- clearRecycled() {
4069
+ recyclePaint(paint) {
4070
+ I.recycle(paint.image);
4071
+ },
4072
+ clearRecycled(force) {
4063
4073
  const list = I.recycledList;
4064
- if (list.length > I.maxRecycled) {
4065
- list.forEach(image => !image.use && image.url && Resource.remove(image.url));
4074
+ if (list.length > I.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.isFormat(item, config));
4071
4082
  },
@@ -4080,7 +4091,7 @@ const ImageManager = {
4080
4091
  return false;
4081
4092
  },
4082
4093
  destroy() {
4083
- I.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
  }
@@ -4936,10 +4951,53 @@ const BranchHelper = {
4936
4951
  if (exclude && exclude === branch) continue;
4937
4952
  updateBounds$3(branch);
4938
4953
  }
4954
+ },
4955
+ move(branch, x, y) {
4956
+ let w;
4957
+ const {children: children} = branch;
4958
+ for (let i = 0, len = children.length; i < len; i++) {
4959
+ branch = children[i];
4960
+ w = branch.__world;
4961
+ w.e += x;
4962
+ w.f += y;
4963
+ w.x += x;
4964
+ w.y += y;
4965
+ if (branch.isBranch) move$3(branch, x, y);
4966
+ }
4967
+ },
4968
+ scale(branch, x, y, scaleX, scaleY, a, b) {
4969
+ let w;
4970
+ const {children: children} = branch;
4971
+ const changeScaleX = scaleX - 1;
4972
+ const changeScaleY = scaleY - 1;
4973
+ for (let i = 0, len = children.length; i < len; i++) {
4974
+ branch = children[i];
4975
+ w = branch.__world;
4976
+ w.a *= scaleX;
4977
+ w.d *= scaleY;
4978
+ if (w.b || w.c) {
4979
+ w.b *= scaleX;
4980
+ w.c *= scaleY;
4981
+ }
4982
+ if (w.e === w.x && w.f === w.y) {
4983
+ w.x = w.e += (w.e - a) * changeScaleX + x;
4984
+ w.y = w.f += (w.f - b) * changeScaleY + y;
4985
+ } else {
4986
+ w.e += (w.e - a) * changeScaleX + x;
4987
+ w.f += (w.f - b) * changeScaleY + y;
4988
+ w.x += (w.x - a) * changeScaleX + x;
4989
+ w.y += (w.y - b) * changeScaleY + y;
4990
+ }
4991
+ w.width *= scaleX;
4992
+ w.height *= scaleY;
4993
+ w.scaleX *= scaleX;
4994
+ w.scaleY *= scaleY;
4995
+ if (branch.isBranch) scale$1(branch, x, y, scaleX, scaleY, a, b);
4996
+ }
4939
4997
  }
4940
4998
  };
4941
4999
 
4942
- const {pushAllChildBranch: pushAllChildBranch$1, pushAllBranchStack: pushAllBranchStack, updateBoundsByBranchStack: updateBoundsByBranchStack} = BranchHelper;
5000
+ const {pushAllChildBranch: pushAllChildBranch$1, pushAllBranchStack: pushAllBranchStack, updateBoundsByBranchStack: updateBoundsByBranchStack, move: move$3, scale: scale$1} = BranchHelper;
4943
5001
 
4944
5002
  const WaitHelper = {
4945
5003
  run(wait) {
@@ -5966,6 +6024,7 @@ const LeafBounds = {
5966
6024
  const LeafRender = {
5967
6025
  __render(canvas, options) {
5968
6026
  if (options.shape) return this.__renderShape(canvas, options);
6027
+ if (options.cellList && !options.cellList.has(this)) return;
5969
6028
  if (this.__worldOpacity) {
5970
6029
  const data = this.__;
5971
6030
  if (data.bright && !options.topRendering) return options.topList.add(this);
@@ -6502,10 +6561,10 @@ let Leaf = class Leaf {
6502
6561
  hit(_world, _hitRadius) {
6503
6562
  return true;
6504
6563
  }
6505
- __hitWorld(_point) {
6564
+ __hitWorld(_point, _forceHitFill) {
6506
6565
  return true;
6507
6566
  }
6508
- __hit(_local) {
6567
+ __hit(_local, _forceHitFill) {
6509
6568
  return true;
6510
6569
  }
6511
6570
  __hitFill(_inner) {
@@ -6864,7 +6923,7 @@ class LeafLevelList {
6864
6923
  }
6865
6924
  }
6866
6925
 
6867
- const version = "1.11.2";
6926
+ const version = "1.12.1";
6868
6927
 
6869
6928
  const debug$4 = Debug.get("LeaferCanvas");
6870
6929
 
@@ -7187,7 +7246,7 @@ class Watcher {
7187
7246
  return this.hasAdd || this.hasRemove || this.hasVisible;
7188
7247
  }
7189
7248
  get updatedList() {
7190
- if (this.hasRemove) {
7249
+ if (this.hasRemove && this.config.usePartLayout) {
7191
7250
  const updatedList = new LeafList;
7192
7251
  this.__updatedList.list.forEach(item => {
7193
7252
  if (item.leafer) updatedList.add(item);
@@ -7222,16 +7281,18 @@ class Watcher {
7222
7281
  if (this.running) this.target.emit(RenderEvent.REQUEST);
7223
7282
  }
7224
7283
  __onAttrChange(event) {
7225
- this.__updatedList.add(event.target);
7284
+ if (this.config.usePartLayout) this.__updatedList.add(event.target);
7226
7285
  this.update();
7227
7286
  }
7228
7287
  __onChildEvent(event) {
7229
- if (event.type === ChildEvent.ADD) {
7230
- this.hasAdd = true;
7231
- this.__pushChild(event.child);
7232
- } else {
7233
- this.hasRemove = true;
7234
- this.__updatedList.add(event.parent);
7288
+ if (this.config.usePartLayout) {
7289
+ if (event.type === ChildEvent.ADD) {
7290
+ this.hasAdd = true;
7291
+ this.__pushChild(event.child);
7292
+ } else {
7293
+ this.hasRemove = true;
7294
+ this.__updatedList.add(event.parent);
7295
+ }
7235
7296
  }
7236
7297
  this.update();
7237
7298
  }
@@ -7348,7 +7409,9 @@ const debug$3 = Debug.get("Layouter");
7348
7409
  class Layouter {
7349
7410
  constructor(target, userConfig) {
7350
7411
  this.totalTimes = 0;
7351
- this.config = {};
7412
+ this.config = {
7413
+ usePartLayout: true
7414
+ };
7352
7415
  this.__levelList = new LeafLevelList;
7353
7416
  this.target = target;
7354
7417
  if (userConfig) this.config = DataHelper.default(userConfig, this.config);
@@ -7393,7 +7456,7 @@ class Layouter {
7393
7456
  this.totalTimes++;
7394
7457
  this.layouting = true;
7395
7458
  this.target.emit(WatchEvent.REQUEST);
7396
- if (this.totalTimes > 1) {
7459
+ if (this.totalTimes > 1 && this.config.usePartLayout) {
7397
7460
  this.partLayout();
7398
7461
  } else {
7399
7462
  this.fullLayout();
@@ -7510,7 +7573,7 @@ class Renderer {
7510
7573
  }
7511
7574
  update(change = true) {
7512
7575
  if (!this.changed) this.changed = change;
7513
- this.__requestRender();
7576
+ if (!this.requestTime) this.__requestRender();
7514
7577
  }
7515
7578
  requestLayout() {
7516
7579
  this.target.emit(LayoutEvent.REQUEST);
@@ -7617,7 +7680,7 @@ class Renderer {
7617
7680
  Run.end(t);
7618
7681
  }
7619
7682
  __render(bounds, realBounds) {
7620
- const {canvas: canvas} = this, includes = bounds.includes(this.target.__world), options = includes ? {
7683
+ const {canvas: canvas, target: target} = this, includes = bounds.includes(target.__world), options = includes ? {
7621
7684
  includes: includes
7622
7685
  } : {
7623
7686
  bounds: bounds,
@@ -7625,12 +7688,16 @@ class Renderer {
7625
7688
  };
7626
7689
  if (this.needFill) canvas.fillWorld(bounds, this.config.fill);
7627
7690
  if (Debug.showRepaint) Debug.drawRepaint(canvas, bounds);
7628
- Platform.render(this.target, canvas, options);
7691
+ if (this.config.useCellRender) options.cellList = this.getCellList();
7692
+ Platform.render(target, canvas, options);
7629
7693
  this.renderBounds = realBounds = realBounds || bounds;
7630
7694
  this.renderOptions = options;
7631
7695
  this.totalBounds.isEmpty() ? this.totalBounds = realBounds : this.totalBounds.add(realBounds);
7632
7696
  canvas.updateRender(realBounds);
7633
7697
  }
7698
+ getCellList() {
7699
+ return undefined;
7700
+ }
7634
7701
  addBlock(block) {
7635
7702
  if (!this.updateBlocks) this.updateBlocks = [];
7636
7703
  this.updateBlocks.push(block);
@@ -8091,6 +8158,11 @@ class TextData extends UIData {
8091
8158
  }
8092
8159
  this._boxStyle = value;
8093
8160
  }
8161
+ __getInputData(names, options) {
8162
+ const data = super.__getInputData(names, options);
8163
+ if (data.textEditing) delete data.textEditing;
8164
+ return data;
8165
+ }
8094
8166
  }
8095
8167
 
8096
8168
  class ImageData extends RectData {
@@ -9937,6 +10009,7 @@ function getLeafPaint(attrName, paint, ui) {
9937
10009
  const {boxBounds: boxBounds} = ui.__layout;
9938
10010
  switch (paint.type) {
9939
10011
  case "image":
10012
+ if (!paint.url) return undefined;
9940
10013
  leafPaint = PaintImage.image(ui, attrName, paint, boxBounds, !recycleMap || !recycleMap[paint.url]);
9941
10014
  break;
9942
10015
 
@@ -10341,7 +10414,7 @@ function checkImage(paint, drawImage, ui, canvas, renderOptions) {
10341
10414
  if (data.repeat) {
10342
10415
  drawImage = false;
10343
10416
  } else if (!(originPaint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || exporting)) {
10344
- drawImage = Platform.image.isLarge(image, scaleX, scaleY);
10417
+ drawImage = Platform.image.isLarge(image, scaleX, scaleY) || image.width * scaleX > 8096 || image.height * scaleY > 8096;
10345
10418
  }
10346
10419
  }
10347
10420
  if (drawImage) {
@@ -10400,7 +10473,7 @@ function recycleImage(attrName, data) {
10400
10473
  if (url) {
10401
10474
  if (!recycleMap) recycleMap = {};
10402
10475
  recycleMap[url] = true;
10403
- ImageManager.recycle(image);
10476
+ ImageManager.recyclePaint(paint);
10404
10477
  if (image.loading) {
10405
10478
  if (!input) {
10406
10479
  input = data.__input && data.__input[attrName] || [];