@leafer-ui/miniapp 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$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
  }
@@ -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
  class LeaferCanvas extends LeaferCanvasBase {
6870
6929
  get allowBackgroundColor() {
@@ -7134,7 +7193,7 @@ class Watcher {
7134
7193
  return this.hasAdd || this.hasRemove || this.hasVisible;
7135
7194
  }
7136
7195
  get updatedList() {
7137
- if (this.hasRemove) {
7196
+ if (this.hasRemove && this.config.usePartLayout) {
7138
7197
  const updatedList = new LeafList;
7139
7198
  this.__updatedList.list.forEach(item => {
7140
7199
  if (item.leafer) updatedList.add(item);
@@ -7169,16 +7228,18 @@ class Watcher {
7169
7228
  if (this.running) this.target.emit(RenderEvent.REQUEST);
7170
7229
  }
7171
7230
  __onAttrChange(event) {
7172
- this.__updatedList.add(event.target);
7231
+ if (this.config.usePartLayout) this.__updatedList.add(event.target);
7173
7232
  this.update();
7174
7233
  }
7175
7234
  __onChildEvent(event) {
7176
- if (event.type === ChildEvent.ADD) {
7177
- this.hasAdd = true;
7178
- this.__pushChild(event.child);
7179
- } else {
7180
- this.hasRemove = true;
7181
- this.__updatedList.add(event.parent);
7235
+ if (this.config.usePartLayout) {
7236
+ if (event.type === ChildEvent.ADD) {
7237
+ this.hasAdd = true;
7238
+ this.__pushChild(event.child);
7239
+ } else {
7240
+ this.hasRemove = true;
7241
+ this.__updatedList.add(event.parent);
7242
+ }
7182
7243
  }
7183
7244
  this.update();
7184
7245
  }
@@ -7295,7 +7356,9 @@ const debug$4 = Debug.get("Layouter");
7295
7356
  class Layouter {
7296
7357
  constructor(target, userConfig) {
7297
7358
  this.totalTimes = 0;
7298
- this.config = {};
7359
+ this.config = {
7360
+ usePartLayout: true
7361
+ };
7299
7362
  this.__levelList = new LeafLevelList;
7300
7363
  this.target = target;
7301
7364
  if (userConfig) this.config = DataHelper.default(userConfig, this.config);
@@ -7340,7 +7403,7 @@ class Layouter {
7340
7403
  this.totalTimes++;
7341
7404
  this.layouting = true;
7342
7405
  this.target.emit(WatchEvent.REQUEST);
7343
- if (this.totalTimes > 1) {
7406
+ if (this.totalTimes > 1 && this.config.usePartLayout) {
7344
7407
  this.partLayout();
7345
7408
  } else {
7346
7409
  this.fullLayout();
@@ -7457,7 +7520,7 @@ class Renderer {
7457
7520
  }
7458
7521
  update(change = true) {
7459
7522
  if (!this.changed) this.changed = change;
7460
- this.__requestRender();
7523
+ if (!this.requestTime) this.__requestRender();
7461
7524
  }
7462
7525
  requestLayout() {
7463
7526
  this.target.emit(LayoutEvent.REQUEST);
@@ -7564,7 +7627,7 @@ class Renderer {
7564
7627
  Run.end(t);
7565
7628
  }
7566
7629
  __render(bounds, realBounds) {
7567
- const {canvas: canvas} = this, includes = bounds.includes(this.target.__world), options = includes ? {
7630
+ const {canvas: canvas, target: target} = this, includes = bounds.includes(target.__world), options = includes ? {
7568
7631
  includes: includes
7569
7632
  } : {
7570
7633
  bounds: bounds,
@@ -7572,12 +7635,16 @@ class Renderer {
7572
7635
  };
7573
7636
  if (this.needFill) canvas.fillWorld(bounds, this.config.fill);
7574
7637
  if (Debug.showRepaint) Debug.drawRepaint(canvas, bounds);
7575
- Platform.render(this.target, canvas, options);
7638
+ if (this.config.useCellRender) options.cellList = this.getCellList();
7639
+ Platform.render(target, canvas, options);
7576
7640
  this.renderBounds = realBounds = realBounds || bounds;
7577
7641
  this.renderOptions = options;
7578
7642
  this.totalBounds.isEmpty() ? this.totalBounds = realBounds : this.totalBounds.add(realBounds);
7579
7643
  canvas.updateRender(realBounds);
7580
7644
  }
7645
+ getCellList() {
7646
+ return undefined;
7647
+ }
7581
7648
  addBlock(block) {
7582
7649
  if (!this.updateBlocks) this.updateBlocks = [];
7583
7650
  this.updateBlocks.push(block);
@@ -7792,7 +7859,7 @@ class Picker {
7792
7859
  hit = child.__.hitRadius ? true : hitRadiusPoint$1(child.__world, point);
7793
7860
  if (child.isBranch) {
7794
7861
  if (hit || child.__ignoreHitWorld) {
7795
- if (child.isBranchLeaf && child.__.__clipAfterFill && !child.__hitWorld(point)) continue;
7862
+ if (child.isBranchLeaf && child.__.__clipAfterFill && !child.__hitWorld(point, true)) continue;
7796
7863
  if (child.topChildren) this.eachFind(child.topChildren, false);
7797
7864
  this.eachFind(child.children, child.__onlyHitMask);
7798
7865
  if (child.isBranchLeaf) this.hitChild(child, point);
@@ -8234,6 +8301,11 @@ class TextData extends UIData {
8234
8301
  }
8235
8302
  this._boxStyle = value;
8236
8303
  }
8304
+ __getInputData(names, options) {
8305
+ const data = super.__getInputData(names, options);
8306
+ if (data.textEditing) delete data.textEditing;
8307
+ return data;
8308
+ }
8237
8309
  }
8238
8310
 
8239
8311
  class ImageData extends RectData {
@@ -11106,7 +11178,7 @@ leaf.hit = function(worldPoint, hitRadius = 0) {
11106
11178
  }) : this.__hitWorld(worldRadiusPoint);
11107
11179
  };
11108
11180
 
11109
- leaf.__hitWorld = function(point) {
11181
+ leaf.__hitWorld = function(point, forceHitFill) {
11110
11182
  const data = this.__;
11111
11183
  if (!data.hitSelf) return false;
11112
11184
  const world = this.__world, layout = this.__layout;
@@ -11124,7 +11196,7 @@ leaf.__hitWorld = function(point) {
11124
11196
  this.__updateHitCanvas();
11125
11197
  if (!layout.boundsChanged) layout.hitCanvasChanged = false;
11126
11198
  }
11127
- return this.__hit(inner);
11199
+ return this.__hit(inner, forceHitFill);
11128
11200
  };
11129
11201
 
11130
11202
  leaf.__hitFill = function(inner) {
@@ -11191,12 +11263,12 @@ ui$1.__updateHitCanvas = function() {
11191
11263
  h.setStrokeOptions(data);
11192
11264
  };
11193
11265
 
11194
- ui$1.__hit = function(inner) {
11266
+ ui$1.__hit = function(inner, forceHitFill) {
11195
11267
  if (this.__box && this.__box.__hit(inner)) return true;
11196
11268
  const data = this.__;
11197
11269
  if (data.__isHitPixel && this.__hitPixel(inner)) return true;
11198
11270
  const {hitFill: hitFill} = data;
11199
- const needHitFillPath = (data.fill || data.__isCanvas) && (hitFill === "path" || hitFill === "pixel" && !(data.__isAlphaPixelFill || data.__isCanvas)) || hitFill === "all";
11271
+ const needHitFillPath = (data.fill || data.__isCanvas) && (hitFill === "path" || hitFill === "pixel" && !(data.__isAlphaPixelFill || data.__isCanvas)) || hitFill === "all" || forceHitFill;
11200
11272
  if (needHitFillPath && this.__hitFill(inner)) return true;
11201
11273
  const {hitStroke: hitStroke, __maxStrokeWidth: strokeWidth} = data;
11202
11274
  const needHitStrokePath = data.stroke && (hitStroke === "path" || hitStroke === "pixel" && !data.__isAlphaPixelStroke) || hitStroke === "all";
@@ -11685,6 +11757,7 @@ function getLeafPaint(attrName, paint, ui) {
11685
11757
  const {boxBounds: boxBounds} = ui.__layout;
11686
11758
  switch (paint.type) {
11687
11759
  case "image":
11760
+ if (!paint.url) return undefined;
11688
11761
  leafPaint = PaintImage.image(ui, attrName, paint, boxBounds, !recycleMap || !recycleMap[paint.url]);
11689
11762
  break;
11690
11763
 
@@ -12089,7 +12162,7 @@ function checkImage(paint, drawImage, ui, canvas, renderOptions) {
12089
12162
  if (data.repeat) {
12090
12163
  drawImage = false;
12091
12164
  } else if (!(originPaint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || exporting)) {
12092
- drawImage = Platform.image.isLarge(image, scaleX, scaleY);
12165
+ drawImage = Platform.image.isLarge(image, scaleX, scaleY) || image.width * scaleX > 8096 || image.height * scaleY > 8096;
12093
12166
  }
12094
12167
  }
12095
12168
  if (drawImage) {
@@ -12148,7 +12221,7 @@ function recycleImage(attrName, data) {
12148
12221
  if (url) {
12149
12222
  if (!recycleMap) recycleMap = {};
12150
12223
  recycleMap[url] = true;
12151
- ImageManager.recycle(image);
12224
+ ImageManager.recyclePaint(paint);
12152
12225
  if (image.loading) {
12153
12226
  if (!input) {
12154
12227
  input = data.__input && data.__input[attrName] || [];