@leafer-draw/miniapp 1.4.1 → 1.5.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.
@@ -3635,7 +3635,12 @@ const Resource = {
3635
3635
  return R.map[key];
3636
3636
  },
3637
3637
  remove(key) {
3638
- delete R.map[key];
3638
+ const r = R.map[key];
3639
+ if (r) {
3640
+ if (r.destroy)
3641
+ r.destroy();
3642
+ delete R.map[key];
3643
+ }
3639
3644
  },
3640
3645
  loadImage(key, format) {
3641
3646
  return new Promise((resolve, reject) => {
@@ -3661,6 +3666,7 @@ const Resource = {
3661
3666
  const R = Resource;
3662
3667
 
3663
3668
  const ImageManager = {
3669
+ maxRecycled: 100,
3664
3670
  recycledList: [],
3665
3671
  patternTasker: new TaskProcessor(),
3666
3672
  get(config) {
@@ -3677,13 +3683,8 @@ const ImageManager = {
3677
3683
  },
3678
3684
  clearRecycled() {
3679
3685
  const list = I.recycledList;
3680
- if (list.length > 100) {
3681
- list.forEach(image => {
3682
- if (!image.use && image.url) {
3683
- Resource.remove(image.url);
3684
- image.destroy();
3685
- }
3686
- });
3686
+ if (list.length > I.maxRecycled) {
3687
+ list.forEach(image => (!image.use && image.url) && Resource.remove(image.url));
3687
3688
  list.length = 0;
3688
3689
  }
3689
3690
  },
@@ -4069,12 +4070,11 @@ function defineDataProcessor(target, key, defaultValue) {
4069
4070
  if (defaultValue === undefined) {
4070
4071
  property.get = function () { return this[computedKey]; };
4071
4072
  }
4072
- else if (typeof defaultValue === 'object') {
4073
- const { clone } = DataHelper;
4073
+ else if (typeof defaultValue === 'function') {
4074
4074
  property.get = function () {
4075
4075
  let v = this[computedKey];
4076
4076
  if (v === undefined)
4077
- this[computedKey] = v = clone(defaultValue);
4077
+ this[computedKey] = v = defaultValue(this.__leaf);
4078
4078
  return v;
4079
4079
  };
4080
4080
  }
@@ -5721,10 +5721,10 @@ let Leaf = class Leaf {
5721
5721
  static changeAttr(attrName, defaultValue, fn) {
5722
5722
  fn ? this.addAttr(attrName, defaultValue, fn) : defineDataProcessor(this.prototype, attrName, defaultValue);
5723
5723
  }
5724
- static addAttr(attrName, defaultValue, fn) {
5724
+ static addAttr(attrName, defaultValue, fn, helpValue) {
5725
5725
  if (!fn)
5726
5726
  fn = boundsType;
5727
- fn(defaultValue)(this.prototype, attrName);
5727
+ fn(defaultValue, helpValue)(this.prototype, attrName);
5728
5728
  }
5729
5729
  __emitLifeEvent(type) {
5730
5730
  if (this.hasEvent(type))
@@ -6051,7 +6051,7 @@ class LeafLevelList {
6051
6051
  }
6052
6052
  }
6053
6053
 
6054
- const version = "1.4.1";
6054
+ const version = "1.5.0";
6055
6055
 
6056
6056
  class LeaferCanvas extends LeaferCanvasBase {
6057
6057
  get allowBackgroundColor() { return false; }
@@ -6920,7 +6920,11 @@ const State = {
6920
6920
  setStyleName() { return Plugin.need('state'); },
6921
6921
  set() { return Plugin.need('state'); }
6922
6922
  };
6923
- const Transition = {};
6923
+ const Transition = {
6924
+ list: {},
6925
+ register(attrName, fn) { Transition.list[attrName] = fn; },
6926
+ get(attrName) { return Transition.list[attrName]; }
6927
+ };
6924
6928
 
6925
6929
  const { parse, objectToCanvasData } = PathConvert;
6926
6930
  const emptyPaint = {};
@@ -7344,9 +7348,6 @@ let UI = UI_1 = class UI extends Leaf {
7344
7348
  this.__drawPathByBox(pen);
7345
7349
  return pen;
7346
7350
  }
7347
- get editConfig() { return undefined; }
7348
- get editOuter() { return ''; }
7349
- get editInner() { return ''; }
7350
7351
  constructor(data) {
7351
7352
  super(data);
7352
7353
  }
@@ -7428,8 +7429,11 @@ let UI = UI_1 = class UI extends Leaf {
7428
7429
  export(_filename, _options) {
7429
7430
  return Plugin.need('export');
7430
7431
  }
7432
+ syncExport(_filename, _options) {
7433
+ return Plugin.need('export');
7434
+ }
7431
7435
  clone(data) {
7432
- const json = this.toJSON();
7436
+ const json = DataHelper.clone(this.toJSON());
7433
7437
  if (data)
7434
7438
  Object.assign(json, data);
7435
7439
  return UI_1.one(json);
@@ -7728,7 +7732,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7728
7732
  get layoutLocked() { return !this.layouter.running; }
7729
7733
  get FPS() { return this.renderer ? this.renderer.FPS : 60; }
7730
7734
  get cursorPoint() { return (this.interaction && this.interaction.hoverData) || { x: this.width / 2, y: this.height / 2 }; }
7731
- get clientBounds() { return this.canvas && this.canvas.getClientBounds(); }
7735
+ get clientBounds() { return (this.canvas && this.canvas.getClientBounds(true)) || getBoundsData(); }
7732
7736
  constructor(userConfig, data) {
7733
7737
  super(data);
7734
7738
  this.config = {
@@ -8030,6 +8034,10 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8030
8034
  getPagePointByClient(clientPoint, updateClient) {
8031
8035
  return this.getPagePoint(this.getWorldPointByClient(clientPoint, updateClient));
8032
8036
  }
8037
+ getClientPointByWorld(worldPoint) {
8038
+ const { x, y } = this.clientBounds;
8039
+ return { x: x + worldPoint.x, y: y + worldPoint.y };
8040
+ }
8033
8041
  updateClientBounds() {
8034
8042
  this.canvas && this.canvas.updateClientBounds();
8035
8043
  }
@@ -10065,13 +10073,14 @@ function toChar(data, charX, rowData, isOverflow) {
10065
10073
  }
10066
10074
 
10067
10075
  function layoutText(drawData, style) {
10068
- const { rows, bounds } = drawData;
10076
+ const { rows, bounds } = drawData, countRows = rows.length;
10069
10077
  const { __lineHeight, __baseLine, __letterSpacing, __clipText, textAlign, verticalAlign, paraSpacing, autoSizeAlign } = style;
10070
- let { x, y, width, height } = bounds, realHeight = __lineHeight * rows.length + (paraSpacing ? paraSpacing * (drawData.paraNumber - 1) : 0);
10078
+ let { x, y, width, height } = bounds, realHeight = __lineHeight * countRows + (paraSpacing ? paraSpacing * (drawData.paraNumber - 1) : 0);
10071
10079
  let starY = __baseLine;
10072
10080
  if (__clipText && realHeight > height) {
10073
10081
  realHeight = Math.max(height, __lineHeight);
10074
- drawData.overflow = rows.length;
10082
+ if (countRows > 1)
10083
+ drawData.overflow = countRows;
10075
10084
  }
10076
10085
  else if (height || autoSizeAlign) {
10077
10086
  switch (verticalAlign) {
@@ -10083,7 +10092,7 @@ function layoutText(drawData, style) {
10083
10092
  }
10084
10093
  starY += y;
10085
10094
  let row, rowX, rowWidth, layoutWidth = (width || autoSizeAlign) ? width : drawData.maxWidth;
10086
- for (let i = 0, len = rows.length; i < len; i++) {
10095
+ for (let i = 0, len = countRows; i < len; i++) {
10087
10096
  row = rows[i];
10088
10097
  row.x = x;
10089
10098
  if (row.width < width || (row.width > width && !__clipText)) {
@@ -10152,7 +10161,7 @@ function clipText(drawData, style, x, width) {
10152
10161
  if (i === end && charRight < right) {
10153
10162
  break;
10154
10163
  }
10155
- else if (charRight < right && char.char !== ' ') {
10164
+ else if ((charRight < right && char.char !== ' ') || !i) {
10156
10165
  row.data.splice(i + 1);
10157
10166
  row.width -= char.width;
10158
10167
  break;