@leafer-draw/miniapp 1.1.0 → 1.1.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.
@@ -1374,7 +1374,7 @@ function getNameList(name) {
1374
1374
  }
1375
1375
  const D$4 = Debug;
1376
1376
 
1377
- const debug$d = Debug.get('RunTime');
1377
+ const debug$e = Debug.get('RunTime');
1378
1378
  const Run = {
1379
1379
  currentId: 0,
1380
1380
  currentName: '',
@@ -1392,7 +1392,7 @@ const Run = {
1392
1392
  const time = R.idMap[id], name = R.nameMap[id];
1393
1393
  const duration = microsecond ? (performance.now() - time) / 1000 : Date.now() - time;
1394
1394
  R.idMap[id] = R.nameMap[id] = R.nameToIdMap[name] = undefined;
1395
- debug$d.log(name, duration, 'ms');
1395
+ debug$e.log(name, duration, 'ms');
1396
1396
  },
1397
1397
  endOfName(name, microsecond) {
1398
1398
  const id = R.nameToIdMap[name];
@@ -1406,18 +1406,18 @@ function needPlugin(name) {
1406
1406
  console.error('need plugin: @leafer-in/' + name);
1407
1407
  }
1408
1408
 
1409
- const debug$c = Debug.get('UICreator');
1409
+ const debug$d = Debug.get('UICreator');
1410
1410
  const UICreator = {
1411
1411
  list: {},
1412
1412
  register(UI) {
1413
1413
  const { __tag: tag } = UI.prototype;
1414
1414
  if (list$1[tag])
1415
- debug$c.repeat(tag);
1415
+ debug$d.repeat(tag);
1416
1416
  list$1[tag] = UI;
1417
1417
  },
1418
1418
  get(tag, data, x, y, width, height) {
1419
1419
  if (!list$1[tag])
1420
- debug$c.error('not register ' + tag);
1420
+ debug$d.error('not register ' + tag);
1421
1421
  const ui = new list$1[tag](data);
1422
1422
  if (x !== undefined) {
1423
1423
  ui.x = x;
@@ -1433,7 +1433,7 @@ const UICreator = {
1433
1433
  };
1434
1434
  const { list: list$1 } = UICreator;
1435
1435
 
1436
- const debug$b = Debug.get('EventCreator');
1436
+ const debug$c = Debug.get('EventCreator');
1437
1437
  const EventCreator = {
1438
1438
  nameList: {},
1439
1439
  register(Event) {
@@ -1441,7 +1441,7 @@ const EventCreator = {
1441
1441
  Object.keys(Event).forEach(key => {
1442
1442
  name = Event[key];
1443
1443
  if (typeof name === 'string')
1444
- nameList[name] && debug$b.repeat(name), nameList[name] = Event;
1444
+ nameList[name] && debug$c.repeat(name), nameList[name] = Event;
1445
1445
  });
1446
1446
  },
1447
1447
  changeName(oldName, newName) {
@@ -1513,17 +1513,19 @@ const DataHelper = {
1513
1513
  assign(t, defaultData);
1514
1514
  return t;
1515
1515
  },
1516
- assign(t, merge) {
1516
+ assign(t, merge, exclude) {
1517
1517
  let value;
1518
1518
  Object.keys(merge).forEach(key => {
1519
- var _a;
1519
+ var _a, _b;
1520
1520
  value = merge[key];
1521
- if ((value === null || value === void 0 ? void 0 : value.constructor) === Object) {
1522
- (((_a = t[key]) === null || _a === void 0 ? void 0 : _a.constructor) === Object) ? assign(t[key], merge[key]) : t[key] = merge[key];
1523
- }
1524
- else {
1525
- t[key] = merge[key];
1521
+ if ((value === null || value === void 0 ? void 0 : value.constructor) === Object && ((_a = t[key]) === null || _a === void 0 ? void 0 : _a.constructor) === Object)
1522
+ return assign(t[key], merge[key], exclude && exclude[key]);
1523
+ if (exclude && (key in exclude)) {
1524
+ if (((_b = exclude[key]) === null || _b === void 0 ? void 0 : _b.constructor) === Object)
1525
+ assign(t[key] = {}, merge[key], exclude[key]);
1526
+ return;
1526
1527
  }
1528
+ t[key] = merge[key];
1527
1529
  });
1528
1530
  },
1529
1531
  copyAttrs(t, from, include) {
@@ -2595,7 +2597,7 @@ const EllipseHelper = {
2595
2597
  const { M: M$4, m, L: L$5, l, H, h, V, v, C: C$4, c, S, s, Q: Q$3, q, T, t, A, a, Z: Z$4, z, N: N$3, D: D$3, X: X$3, G: G$3, F: F$4, O: O$3, P: P$3, U: U$3 } = PathCommandMap;
2596
2598
  const { rect: rect$2, roundRect: roundRect$2, arcTo: arcTo$3, arc: arc$3, ellipse: ellipse$4, quadraticCurveTo: quadraticCurveTo$1 } = BezierHelper;
2597
2599
  const { ellipticalArc } = EllipseHelper;
2598
- const debug$a = Debug.get('PathConvert');
2600
+ const debug$b = Debug.get('PathConvert');
2599
2601
  const setEndPoint$1 = {};
2600
2602
  const PathConvert = {
2601
2603
  current: { dot: 0 },
@@ -2836,7 +2838,7 @@ const PathConvert = {
2836
2838
  i += 6;
2837
2839
  break;
2838
2840
  default:
2839
- debug$a.error(`command: ${command} [index:${i}]`, old);
2841
+ debug$b.error(`command: ${command} [index:${i}]`, old);
2840
2842
  return data;
2841
2843
  }
2842
2844
  lastCommand = command;
@@ -3061,7 +3063,7 @@ class PathCreator {
3061
3063
  }
3062
3064
 
3063
3065
  const { M: M$2, L: L$3, C: C$2, Q: Q$1, Z: Z$2, N: N$1, D: D$1, X: X$1, G: G$1, F: F$2, O: O$1, P: P$1, U: U$1 } = PathCommandMap;
3064
- const debug$9 = Debug.get('PathDrawer');
3066
+ const debug$a = Debug.get('PathDrawer');
3065
3067
  const PathDrawer = {
3066
3068
  drawPathByData(drawer, data) {
3067
3069
  if (!data)
@@ -3124,7 +3126,7 @@ const PathDrawer = {
3124
3126
  i += 6;
3125
3127
  break;
3126
3128
  default:
3127
- debug$9.error(`command: ${command} [index:${i}]`, data);
3129
+ debug$a.error(`command: ${command} [index:${i}]`, data);
3128
3130
  return;
3129
3131
  }
3130
3132
  }
@@ -3134,7 +3136,7 @@ const PathDrawer = {
3134
3136
  const { M: M$1, L: L$2, C: C$1, Q, Z: Z$1, N, D, X, G, F: F$1, O, P, U } = PathCommandMap;
3135
3137
  const { toTwoPointBounds, toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$1, arc, ellipse: ellipse$1 } = BezierHelper;
3136
3138
  const { addPointBounds, copy: copy$7, addPoint: addPoint$1, setPoint: setPoint$1, addBounds, toBounds: toBounds$3 } = TwoPointBoundsHelper;
3137
- const debug$8 = Debug.get('PathBounds');
3139
+ const debug$9 = Debug.get('PathBounds');
3138
3140
  let radius, radiusX, radiusY;
3139
3141
  const tempPointBounds = {};
3140
3142
  const setPointBounds = {};
@@ -3242,7 +3244,7 @@ const PathBounds = {
3242
3244
  i += 6;
3243
3245
  break;
3244
3246
  default:
3245
- debug$8.error(`command: ${command} [index:${i}]`, data);
3247
+ debug$9.error(`command: ${command} [index:${i}]`, data);
3246
3248
  return;
3247
3249
  }
3248
3250
  }
@@ -3358,7 +3360,7 @@ const FileHelper = {
3358
3360
  const F = FileHelper;
3359
3361
  F.opacityTypes.forEach(type => F.upperCaseTypeMap[type] = type.toUpperCase());
3360
3362
 
3361
- const debug$7 = Debug.get('TaskProcessor');
3363
+ const debug$8 = Debug.get('TaskProcessor');
3362
3364
  class TaskItem {
3363
3365
  constructor(task) {
3364
3366
  this.parallel = true;
@@ -3373,7 +3375,7 @@ class TaskItem {
3373
3375
  yield this.task();
3374
3376
  }
3375
3377
  catch (error) {
3376
- debug$7.error(error);
3378
+ debug$8.error(error);
3377
3379
  }
3378
3380
  });
3379
3381
  }
@@ -3891,6 +3893,8 @@ function opacityType(defaultValue) {
3891
3893
  return decorateLeafAttr(defaultValue, (key) => attr({
3892
3894
  set(value) {
3893
3895
  this.__setAttr(key, value) && (this.__layout.opacityChanged || this.__layout.opacityChange());
3896
+ if (this.mask)
3897
+ checkMask(this);
3894
3898
  }
3895
3899
  }));
3896
3900
  }
@@ -3907,9 +3911,20 @@ function visibleType(defaultValue) {
3907
3911
  this.__runAnimation('in');
3908
3912
  }
3909
3913
  doVisible(this, key, value, oldValue);
3914
+ if (this.mask)
3915
+ checkMask(this);
3910
3916
  }
3911
3917
  }));
3912
3918
  }
3919
+ function checkMask(leaf) {
3920
+ const { parent } = leaf;
3921
+ if (parent) {
3922
+ const { __hasMask } = parent;
3923
+ parent.__updateMask();
3924
+ if (__hasMask !== parent.__hasMask)
3925
+ parent.forceUpdate();
3926
+ }
3927
+ }
3913
3928
  function doVisible(leaf, key, value, oldValue) {
3914
3929
  if (leaf.__setAttr(key, value)) {
3915
3930
  leaf.__layout.opacityChanged || leaf.__layout.opacityChange();
@@ -4047,7 +4062,7 @@ function defineDataProcessor(target, key, defaultValue) {
4047
4062
  defineKey(data, key, property);
4048
4063
  }
4049
4064
 
4050
- const debug$6 = new Debug('rewrite');
4065
+ const debug$7 = new Debug('rewrite');
4051
4066
  const list = [];
4052
4067
  const excludeNames = ['destroy', 'constructor'];
4053
4068
  function rewrite(method) {
@@ -4064,7 +4079,7 @@ function doRewrite(error) {
4064
4079
  if (list.length) {
4065
4080
  list.forEach(item => {
4066
4081
  if (error)
4067
- debug$6.error(item.name, '需在Class上装饰@rewriteAble()');
4082
+ debug$7.error(item.name, '需在Class上装饰@rewriteAble()');
4068
4083
  item.run();
4069
4084
  });
4070
4085
  list.length = 0;
@@ -4972,13 +4987,13 @@ const { on, on_, off, off_, once, emit: emit$1, emitEvent, hasEvent, destroy } =
4972
4987
  const LeafEventer = { on, on_, off, off_, once, emit: emit$1, emitEvent, hasEvent, destroyEventer: destroy };
4973
4988
 
4974
4989
  const { isFinite } = Number;
4975
- const debug$5 = Debug.get('setAttr');
4990
+ const debug$6 = Debug.get('setAttr');
4976
4991
  const LeafDataProxy = {
4977
4992
  __setAttr(name, newValue, checkFiniteNumber) {
4978
4993
  if (this.leaferIsCreated) {
4979
4994
  const oldValue = this.__.__getInput(name);
4980
4995
  if (checkFiniteNumber && !isFinite(newValue) && newValue !== undefined) {
4981
- debug$5.warn(this.innerName, name, newValue);
4996
+ debug$6.warn(this.innerName, name, newValue);
4982
4997
  newValue = undefined;
4983
4998
  }
4984
4999
  if (typeof newValue === 'object' || oldValue !== newValue) {
@@ -5434,8 +5449,8 @@ let Leaf = class Leaf {
5434
5449
  canvas.clearRect(r.x, r.y, r.width, r.height);
5435
5450
  canvas.restore();
5436
5451
  }
5437
- __updateMask(value) {
5438
- this.__hasMask = value ? true : this.children.some(item => item.__.mask);
5452
+ __updateMask(_value) {
5453
+ this.__hasMask = this.children.some(item => item.__.mask && item.__.visible && item.__.opacity);
5439
5454
  }
5440
5455
  __renderMask(_canvas, _options) { }
5441
5456
  __getNowWorld(options) {
@@ -5678,6 +5693,7 @@ Leaf = __decorate([
5678
5693
  const { setListWithFn } = BoundsHelper;
5679
5694
  const { sort } = BranchHelper;
5680
5695
  const { localBoxBounds, localStrokeBounds, localRenderBounds, maskLocalBoxBounds, maskLocalStrokeBounds, maskLocalRenderBounds } = LeafBoundsHelper;
5696
+ const debug$5 = new Debug('Branch');
5681
5697
  let Branch = class Branch extends Leaf {
5682
5698
  __updateStrokeSpread() {
5683
5699
  const { children } = this;
@@ -5718,8 +5734,8 @@ let Branch = class Branch extends Leaf {
5718
5734
  }
5719
5735
  }
5720
5736
  add(child, index) {
5721
- if (child === this)
5722
- return;
5737
+ if (child === this || child.destroyed)
5738
+ return debug$5.warn('add self or destroyed');
5723
5739
  const noIndex = index === undefined;
5724
5740
  if (!child.__) {
5725
5741
  if (child instanceof Array)
@@ -5733,8 +5749,9 @@ let Branch = class Branch extends Leaf {
5733
5749
  noIndex ? this.children.push(child) : this.children.splice(index, 0, child);
5734
5750
  if (child.isBranch)
5735
5751
  this.__.__childBranchNumber = (this.__.__childBranchNumber || 0) + 1;
5736
- child.__layout.boxChanged || child.__layout.boxChange();
5737
- child.__layout.matrixChanged || child.__layout.matrixChange();
5752
+ const childLayout = child.__layout;
5753
+ childLayout.boxChanged || childLayout.boxChange();
5754
+ childLayout.matrixChanged || childLayout.matrixChange();
5738
5755
  if (child.__bubbleMap)
5739
5756
  child.__emitLifeEvent(ChildEvent.ADD);
5740
5757
  if (this.leafer) {
@@ -5972,7 +5989,7 @@ class LeafLevelList {
5972
5989
  }
5973
5990
  }
5974
5991
 
5975
- const version = "1.1.0";
5992
+ const version = "1.1.1";
5976
5993
 
5977
5994
  class LeaferCanvas extends LeaferCanvasBase {
5978
5995
  get allowBackgroundColor() { return false; }
@@ -6557,25 +6574,25 @@ class Renderer {
6557
6574
  if (userConfig)
6558
6575
  this.config = DataHelper.default(userConfig, this.config);
6559
6576
  this.__listenEvents();
6560
- this.__requestRender();
6561
6577
  }
6562
6578
  start() {
6563
6579
  this.running = true;
6580
+ this.update(false);
6564
6581
  }
6565
6582
  stop() {
6566
6583
  this.running = false;
6567
6584
  }
6568
- update() {
6569
- this.changed = true;
6585
+ update(change = true) {
6586
+ if (!this.changed)
6587
+ this.changed = change;
6588
+ this.__requestRender();
6570
6589
  }
6571
6590
  requestLayout() {
6572
6591
  this.target.emit(LayoutEvent.REQUEST);
6573
6592
  }
6574
6593
  render(callback) {
6575
- if (!(this.running && this.canvas.view)) {
6576
- this.changed = true;
6577
- return;
6578
- }
6594
+ if (!(this.running && this.canvas.view))
6595
+ return this.update();
6579
6596
  const { target } = this;
6580
6597
  this.times = 0;
6581
6598
  this.totalBounds = new Bounds();
@@ -6709,16 +6726,17 @@ class Renderer {
6709
6726
  }
6710
6727
  }
6711
6728
  __requestRender() {
6712
- const startTime = Date.now();
6729
+ if (this.requestTime)
6730
+ return;
6731
+ const requestTime = this.requestTime = Date.now();
6713
6732
  Platform.requestRender(() => {
6714
- this.FPS = Math.min(60, Math.ceil(1000 / (Date.now() - startTime)));
6733
+ this.FPS = Math.min(60, Math.ceil(1000 / (Date.now() - requestTime)));
6734
+ this.requestTime = 0;
6715
6735
  if (this.running) {
6716
6736
  if (this.changed && this.canvas.view)
6717
6737
  this.render();
6718
6738
  this.target.emit(RenderEvent.NEXT);
6719
6739
  }
6720
- if (this.target)
6721
- this.__requestRender();
6722
6740
  });
6723
6741
  }
6724
6742
  __onResize(e) {
@@ -6734,7 +6752,7 @@ class Renderer {
6734
6752
  }
6735
6753
  }
6736
6754
  this.addBlock(new Bounds(0, 0, 1, 1));
6737
- this.changed = true;
6755
+ this.update();
6738
6756
  }
6739
6757
  __onLayoutEnd(event) {
6740
6758
  if (event.data)
@@ -6869,7 +6887,7 @@ class UIData extends LeafData {
6869
6887
  return true;
6870
6888
  return t.fill && this.__hasStroke;
6871
6889
  }
6872
- get __clipAfterFill() { return (this.cornerRadius || this.__pathInputed); }
6890
+ get __clipAfterFill() { const t = this; return (t.cornerRadius || t.innerShadow || t.__pathInputed); }
6873
6891
  get __autoWidth() { return !this._width; }
6874
6892
  get __autoHeight() { return !this._height; }
6875
6893
  get __autoSide() { return !this._width || !this._height; }
@@ -6983,7 +7001,7 @@ class GroupData extends UIData {
6983
7001
 
6984
7002
  class BoxData extends GroupData {
6985
7003
  get __boxStroke() { return !this.__pathInputed; }
6986
- get __drawAfterFill() { return this.overflow === 'hide' && this.__clipAfterFill && this.__leaf.children.length; }
7004
+ get __drawAfterFill() { const t = this; return (t.overflow === 'hide' && (t.__clipAfterFill || t.innerShadow) && t.__leaf.children.length); }
6987
7005
  get __clipAfterFill() { return this.__leaf.isOverflow || super.__clipAfterFill; }
6988
7006
  }
6989
7007
 
@@ -7643,20 +7661,10 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7643
7661
  constructor(userConfig, data) {
7644
7662
  super(data);
7645
7663
  this.config = {
7646
- type: 'design',
7647
7664
  start: true,
7648
7665
  hittable: true,
7649
7666
  smooth: true,
7650
- lazySpeard: 100,
7651
- zoom: {
7652
- min: 0.01,
7653
- max: 256
7654
- },
7655
- move: {
7656
- holdSpaceKey: true,
7657
- holdMiddleKey: true,
7658
- autoDistance: 2
7659
- }
7667
+ lazySpeard: 100
7660
7668
  };
7661
7669
  this.leafs = 0;
7662
7670
  this.__eventIds = [];
@@ -7673,23 +7681,27 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7673
7681
  init(userConfig, parentApp) {
7674
7682
  if (this.canvas)
7675
7683
  return;
7676
- this.__setLeafer(this);
7677
- if (userConfig)
7678
- DataHelper.assign(this.config, userConfig);
7679
7684
  let start;
7680
7685
  const { config } = this;
7681
- this.initType(config.type);
7686
+ this.__setLeafer(this);
7687
+ if (parentApp) {
7688
+ this.parentApp = parentApp;
7689
+ this.__bindApp(parentApp);
7690
+ start = parentApp.running;
7691
+ }
7692
+ if (userConfig) {
7693
+ this.parent = parentApp;
7694
+ this.initType(userConfig.type);
7695
+ this.parent = undefined;
7696
+ DataHelper.assign(config, userConfig);
7697
+ }
7682
7698
  const canvas = this.canvas = Creator.canvas(config);
7683
7699
  this.__controllers.push(this.renderer = Creator.renderer(this, canvas, config), this.watcher = Creator.watcher(this, config), this.layouter = Creator.layouter(this, config));
7684
7700
  if (this.isApp)
7685
7701
  this.__setApp();
7686
7702
  this.__checkAutoLayout(config, parentApp);
7687
7703
  this.view = canvas.view;
7688
- if (parentApp) {
7689
- this.__bindApp(parentApp);
7690
- start = parentApp.running;
7691
- }
7692
- else {
7704
+ if (!parentApp) {
7693
7705
  this.selector = Creator.selector(this);
7694
7706
  this.interaction = Creator.interaction(this, canvas, this.selector, config);
7695
7707
  if (this.interaction) {
@@ -7746,7 +7758,11 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7746
7758
  forceRender(bounds) {
7747
7759
  this.renderer.addBlock(bounds ? new Bounds(bounds) : this.canvas.bounds);
7748
7760
  if (this.viewReady)
7749
- this.renderer.update();
7761
+ this.renderer.render();
7762
+ }
7763
+ requestRender(change = false) {
7764
+ if (this.renderer)
7765
+ this.renderer.update(change);
7750
7766
  }
7751
7767
  updateCursor(cursor) {
7752
7768
  const i = this.interaction;
@@ -7854,8 +7870,10 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7854
7870
  const { imageReady } = this;
7855
7871
  if (imageReady && !this.viewCompleted)
7856
7872
  this.__checkViewCompleted();
7857
- if (!imageReady)
7873
+ if (!imageReady) {
7858
7874
  this.viewCompleted = false;
7875
+ this.requestRender();
7876
+ }
7859
7877
  }
7860
7878
  }
7861
7879
  __checkViewCompleted(emit = true) {
@@ -7913,6 +7931,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7913
7931
  }
7914
7932
  else
7915
7933
  list.push(item);
7934
+ this.requestRender();
7916
7935
  }
7917
7936
  zoom(_zoomType, _padding, _fixedScale) {
7918
7937
  return needPlugin('view');
@@ -7966,7 +7985,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7966
7985
  this.canvasManager.destroy();
7967
7986
  }
7968
7987
  this.canvas.destroy();
7969
- this.config.view = this.view = null;
7988
+ this.config.view = this.view = this.parentApp = null;
7970
7989
  if (this.userConfig)
7971
7990
  this.userConfig.view = null;
7972
7991
  super.destroy();