@meta2d/core 1.0.35 → 1.0.37-alpha.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meta2d/core",
3
- "version": "1.0.35",
3
+ "version": "1.0.37-alpha.1",
4
4
  "description": "@meta2d/core: Powerful, Beautiful, Simple, Open - Web-Based 2D At Its Best .",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -82,7 +82,7 @@ var __values = (this && this.__values) || function(o) {
82
82
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
83
83
  };
84
84
  import { KeydownType } from '../options';
85
- import { addLineAnchor, calcIconRect, calcTextRect, calcWorldAnchors, calcWorldRects, LockState, nearestAnchor, PenType, pushPenAnchor, removePenAnchor, renderPen, scalePen, translateLine, deleteTempAnchor, connectLine, disconnectLine, getAnchor, calcAnchorDock, calcMoveDock, calcTextLines, setNodeAnimate, setLineAnimate, calcPenRect, setChildrenActive, getParent, setHover, randomId, getPensLock, getToAnchor, getFromAnchor, calcPadding, getPensDisableRotate, getPensDisableResize, needCalcTextRectProps, calcResizeDock, needPatchFlagsPenRectProps, needCalcIconRectProps, isDomShapes, renderPenRaw, needSetPenProps, getAllChildren, calcInView, isShowChild, getTextColor, getGlobalColor, clearLifeCycle, rotatePen, calcTextAutoWidth, getGradientAnimatePath, } from '../pen';
85
+ import { addLineAnchor, calcIconRect, calcTextRect, calcWorldAnchors, calcWorldRects, LockState, nearestAnchor, PenType, pushPenAnchor, removePenAnchor, renderPen, scalePen, translateLine, deleteTempAnchor, connectLine, disconnectLine, getAnchor, calcAnchorDock, calcMoveDock, calcTextLines, setNodeAnimate, setLineAnimate, calcPenRect, setChildrenActive, getParent, setHover, randomId, getPensLock, getToAnchor, getFromAnchor, calcPadding, getPensDisableRotate, getPensDisableResize, needCalcTextRectProps, calcResizeDock, needPatchFlagsPenRectProps, needCalcIconRectProps, isDomShapes, renderPenRaw, needSetPenProps, getAllChildren, calcInView, isShowChild, getTextColor, getGlobalColor, clearLifeCycle, rotatePen, calcTextAutoWidth, getGradientAnimatePath, CanvasLayer, ctxFlip, ctxRotate, setGlobalAlpha, drawImage, } from '../pen';
86
86
  import { calcRotate, distance, getDistance, hitPoint, PointType, PrevNextType, rotatePoint, samePoint, scalePoint, translatePoint, TwoWay, } from '../point';
87
87
  import { calcCenter, calcRightBottom, calcRelativePoint, getRect, getRectOfPoints, pointInRect, pointInSimpleRect, rectInRect, rectToPoints, resizeRect, translateRect, } from '../rect';
88
88
  import { EditType, globalStore, } from '../store';
@@ -317,7 +317,8 @@ var Canvas = /** @class */ (function () {
317
317
  var _a, _b, _c;
318
318
  if (_this.store.data.locked >= LockState.DisableEdit &&
319
319
  e.target.tagName !== 'INPUT' &&
320
- e.target.tagName !== 'TEXTAREA') {
320
+ e.target.tagName !== 'TEXTAREA' &&
321
+ !e.target.dataset.meta2dIgnore) {
321
322
  _this.store.active.forEach(function (pen) {
322
323
  var _a;
323
324
  (_a = pen.onKeyDown) === null || _a === void 0 ? void 0 : _a.call(pen, pen, e.key);
@@ -325,7 +326,8 @@ var Canvas = /** @class */ (function () {
325
326
  }
326
327
  if (_this.store.data.locked >= LockState.DisableEdit ||
327
328
  e.target.tagName === 'INPUT' ||
328
- e.target.tagName === 'TEXTAREA') {
329
+ e.target.tagName === 'TEXTAREA' ||
330
+ e.target.dataset.meta2dIgnore) {
329
331
  return;
330
332
  }
331
333
  if (_this.store.options.unavailableKeys.includes(e.key)) {
@@ -719,8 +721,8 @@ var Canvas = /** @class */ (function () {
719
721
  }
720
722
  _a.label = 3;
721
723
  case 3:
722
- if (obj && obj.draggable !== false) {
723
- obj = Array.isArray(obj) ? obj : [obj];
724
+ obj = Array.isArray(obj) ? obj : [obj];
725
+ if (obj[0] && obj[0].draggable !== false) {
724
726
  pt = { x: event.offsetX, y: event.offsetY };
725
727
  this.calibrateMouse(pt);
726
728
  this.dropPens(obj, pt);
@@ -1239,7 +1241,7 @@ var Canvas = /** @class */ (function () {
1239
1241
  var pt = { x: e.x, y: e.y };
1240
1242
  // Move line anchor
1241
1243
  if (_this.hoverType === HoverType.LineAnchor) {
1242
- if (_this.dockInAnchor(e) &&
1244
+ if ((_this.store.active[0].lineName === 'line' || _this.dockInAnchor(e)) &&
1243
1245
  !_this.store.options.disableDock &&
1244
1246
  !_this.store.options.disableLineDock) {
1245
1247
  _this.clearDock();
@@ -2037,10 +2039,24 @@ var Canvas = /** @class */ (function () {
2037
2039
  if (!isFinite(pen.x)) {
2038
2040
  continue;
2039
2041
  }
2040
- if (pen.template) {
2042
+ // if (pen.template) {
2043
+ if (pen.canvasLayer === CanvasLayer.CanvasTemplate) {
2041
2044
  continue;
2042
2045
  }
2043
2046
  if (pen.calculative.inView) {
2047
+ if (pen.canvasLayer === CanvasLayer.CanvasMain &&
2048
+ pen.name !== 'gif' &&
2049
+ pen.image &&
2050
+ pen.calculative.img) {
2051
+ ctx.save();
2052
+ ctxFlip(ctx, pen);
2053
+ if (pen.calculative.rotate) {
2054
+ ctxRotate(ctx, pen);
2055
+ }
2056
+ setGlobalAlpha(ctx, pen);
2057
+ drawImage(ctx, pen);
2058
+ ctx.restore();
2059
+ }
2044
2060
  renderPen(ctx, pen);
2045
2061
  }
2046
2062
  }
@@ -3381,7 +3397,8 @@ var Canvas = /** @class */ (function () {
3381
3397
  Canvas.prototype.alignPenToGrid = function (pen) {
3382
3398
  var _a;
3383
3399
  var autoAlignGrid = this.store.options.autoAlignGrid && this.store.data.grid;
3384
- if (autoAlignGrid) {
3400
+ // 如果开启了自动网格,并且不是连线,则使pen对齐网格
3401
+ if (autoAlignGrid && !pen.type) {
3385
3402
  var gridSize = this.store.data.gridSize || this.store.options.gridSize;
3386
3403
  var _b = this.store.data, origin_2 = _b.origin, scale = _b.scale;
3387
3404
  var x = pen.x, y = pen.y;
@@ -3390,7 +3407,6 @@ var Canvas = /** @class */ (function () {
3390
3407
  // 算出偏移了多少个网格
3391
3408
  var m = parseInt((rect.x / gridSize).toFixed());
3392
3409
  var n = parseInt((rect.y / gridSize).toFixed());
3393
- console.log(m, n);
3394
3410
  var x1 = m * gridSize;
3395
3411
  var y1 = n * gridSize;
3396
3412
  // 算出最终的偏移坐标
@@ -3419,7 +3435,7 @@ var Canvas = /** @class */ (function () {
3419
3435
  var _b = _this.movingPens[i], x = _b.x, y = _b.y;
3420
3436
  var obj = { x: x, y: y };
3421
3437
  // 根据是否开启了自动网格对齐,来修正坐标
3422
- if (autoAlignGrid) {
3438
+ if (autoAlignGrid && !_this.movingPens[i].type) {
3423
3439
  var rect = _this.getPenRect(_this.movingPens[i]);
3424
3440
  // 算出偏移了多少个网格
3425
3441
  var m = parseInt((rect.x / gridSize).toFixed());
@@ -3549,14 +3565,34 @@ var Canvas = /** @class */ (function () {
3549
3565
  this.canvasImageBottom.init();
3550
3566
  };
3551
3567
  Canvas.prototype.initTemplateCanvas = function (pens) {
3552
- pens.some(function (pen) { return pen.template !== undefined; }) &&
3568
+ // pens.some((pen) => pen.template !== undefined) &&
3569
+ // this.canvasTemplate.init();
3570
+ pens.some(function (pen) { return pen.canvasLayer === CanvasLayer.CanvasTemplate; }) &&
3553
3571
  this.canvasTemplate.init();
3554
3572
  };
3555
3573
  Canvas.prototype.hasImage = function (pen, isBottom) {
3556
3574
  var _this = this;
3557
3575
  var _a;
3558
- if (pen.image && pen.name !== 'gif' && !pen.isBottom == !isBottom) {
3559
- return true;
3576
+ // if (pen.image && pen.name !== 'gif' && !pen.isBottom == !isBottom) {
3577
+ // return true;
3578
+ // }
3579
+ if (pen.image && pen.name !== 'gif') {
3580
+ if (isBottom) {
3581
+ if (pen.canvasLayer === CanvasLayer.CanvasImageBottom) {
3582
+ return true;
3583
+ }
3584
+ else {
3585
+ return false;
3586
+ }
3587
+ }
3588
+ else {
3589
+ if (pen.canvasLayer === CanvasLayer.CanvasImage) {
3590
+ return true;
3591
+ }
3592
+ else {
3593
+ return false;
3594
+ }
3595
+ }
3560
3596
  }
3561
3597
  return (_a = pen.children) === null || _a === void 0 ? void 0 : _a.some(function (childId) {
3562
3598
  var child = _this.store.pens[childId];
@@ -4015,9 +4051,11 @@ var Canvas = /** @class */ (function () {
4015
4051
  var i = _this.store.data.pens.findIndex(function (item) { return item.id === pen.id; });
4016
4052
  if (i > -1) {
4017
4053
  pen.calculative = _this.store.data.pens[i].calculative;
4018
- if (_this.store.data.pens[i].type && _this.store.data.pens[i].lastConnected) {
4054
+ if (_this.store.data.pens[i].type &&
4055
+ _this.store.data.pens[i].lastConnected) {
4019
4056
  for (var key in _this.store.data.pens[i].lastConnected) {
4020
- _this.store.pens[key].connectedLines = _this.store.data.pens[i].lastConnected[key];
4057
+ _this.store.pens[key].connectedLines =
4058
+ _this.store.data.pens[i].lastConnected[key];
4021
4059
  }
4022
4060
  }
4023
4061
  _this.store.data.pens[i] = pen;
@@ -4073,6 +4111,59 @@ var Canvas = /** @class */ (function () {
4073
4111
  });
4074
4112
  action.type = EditType.Add;
4075
4113
  break;
4114
+ case EditType.Replace: {
4115
+ // undo pens则为新的pen
4116
+ var pens_9 = undo ? action.initPens : action.pens;
4117
+ var unPens_2 = undo ? action.pens : action.initPens;
4118
+ // 删除旧的
4119
+ unPens_2.forEach(function (aPen) {
4120
+ var _a;
4121
+ var pen = deepClone(aPen, true);
4122
+ var i = _this.store.data.pens.findIndex(function (item) { return item.id === pen.id; });
4123
+ if (i > -1) {
4124
+ (_a = pen.onDestroy) === null || _a === void 0 ? void 0 : _a.call(pen, _this.store.data.pens.find(function (i) { return i.id === pen.id; }));
4125
+ var i_1 = _this.store.data.pens.findIndex(function (item) { return item.id === pen.id; });
4126
+ _this.store.data.pens.splice(i_1, 1);
4127
+ _this.store.pens[pen.id] = undefined;
4128
+ if (!pen.calculative) {
4129
+ pen.calculative = {};
4130
+ }
4131
+ pen.calculative.canvas = _this;
4132
+ _this.store.animates.delete(pen);
4133
+ _this.store.animateMap.delete(pen);
4134
+ }
4135
+ });
4136
+ // 放置新的
4137
+ pens_9.reverse().forEach(function (aPen) {
4138
+ var _a, _b;
4139
+ var pen = deepClone(aPen, true);
4140
+ if (!pen.calculative) {
4141
+ pen.calculative = {};
4142
+ }
4143
+ _this.store.data.pens.splice(((_a = pen.calculative) === null || _a === void 0 ? void 0 : _a.layer) !== -1
4144
+ ? (_b = pen.calculative) === null || _b === void 0 ? void 0 : _b.layer
4145
+ : _this.store.data.pens.length, 0, pen);
4146
+ // 先放进去,pens 可能是子节点在前,而父节点在后
4147
+ _this.store.pens[pen.id] = pen;
4148
+ if (pen.type && pen.lastConnected) {
4149
+ for (var key in pen.lastConnected) {
4150
+ _this.store.pens[key].connectedLines = pen.lastConnected[key];
4151
+ }
4152
+ }
4153
+ pen.calculative.canvas = _this;
4154
+ });
4155
+ pens_9.reverse().forEach(function (aPen) {
4156
+ var pen = _this.store.data.pens.find(function (i) { return i.id === aPen.id; });
4157
+ var rect = _this.getPenRect(pen, action.origin, action.scale);
4158
+ _this.setPenRect(pen, rect, false);
4159
+ pen.calculative.image = undefined;
4160
+ pen.calculative.backgroundImage = undefined;
4161
+ pen.calculative.strokeImage = undefined;
4162
+ _this.loadImage(pen);
4163
+ });
4164
+ action.type = EditType.Replace;
4165
+ break;
4166
+ }
4076
4167
  }
4077
4168
  if (action.type === EditType.Update) {
4078
4169
  var pens = __spreadArray(__spreadArray([], __read(action.pens), false), __read(action.initPens), false);
@@ -4096,7 +4187,8 @@ var Canvas = /** @class */ (function () {
4096
4187
  if (Math.abs(this.store.lastScale - this.store.data.scale) < 0.0001 &&
4097
4188
  this.store.sameTemplate &&
4098
4189
  this.store.templatePens[pen.id] &&
4099
- pen.template) {
4190
+ // pen.template
4191
+ pen.canvasLayer === CanvasLayer.CanvasTemplate) {
4100
4192
  pen = this.store.templatePens[pen.id];
4101
4193
  this.store.data.pens.push(pen);
4102
4194
  this.updatePenRect(pen);
@@ -4122,6 +4214,18 @@ var Canvas = /** @class */ (function () {
4122
4214
  if (!pen.lineHeight) {
4123
4215
  pen.lineHeight = lineHeight;
4124
4216
  }
4217
+ if (pen.image && pen.name !== 'gif' && pen.canvasLayer === undefined) {
4218
+ if (pen.isBottom) {
4219
+ pen.canvasLayer = CanvasLayer.CanvasImageBottom;
4220
+ }
4221
+ else {
4222
+ pen.canvasLayer = CanvasLayer.CanvasImage;
4223
+ }
4224
+ delete pen.isBottom;
4225
+ }
4226
+ if (pen.template) {
4227
+ pen.canvasLayer = CanvasLayer.CanvasTemplate;
4228
+ }
4125
4229
  pen.calculative = { canvas: this, singleton: (_a = pen.calculative) === null || _a === void 0 ? void 0 : _a.singleton };
4126
4230
  if (pen.video || pen.audio) {
4127
4231
  pen.calculative.onended = function (pen) {
@@ -4372,7 +4476,8 @@ var Canvas = /** @class */ (function () {
4372
4476
  pen.calculative.imgNaturalHeight = img.naturalHeight || pen.iconHeight;
4373
4477
  globalStore.htmlElements[pen.image] = img;
4374
4478
  _this.imageLoaded();
4375
- if (pen.template) {
4479
+ // if (pen.template) {
4480
+ if (pen.canvasLayer === CanvasLayer.CanvasTemplate) {
4376
4481
  _this.templateImageLoaded();
4377
4482
  }
4378
4483
  };
@@ -4392,7 +4497,8 @@ var Canvas = /** @class */ (function () {
4392
4497
  pen.calculative.imgNaturalHeight =
4393
4498
  img.naturalHeight || pen.iconHeight;
4394
4499
  this.imageLoaded(); // TODO: 重绘图片层 有延时器,可能卡顿
4395
- if (pen.template) {
4500
+ // if (pen.template) {
4501
+ if (pen.canvasLayer === CanvasLayer.CanvasTemplate) {
4396
4502
  this.templateImageLoaded();
4397
4503
  }
4398
4504
  }
@@ -4424,7 +4530,8 @@ var Canvas = /** @class */ (function () {
4424
4530
  img_1.naturalHeight || pen.iconHeight;
4425
4531
  globalStore.htmlElements[pen.image] = img_1;
4426
4532
  _this.imageLoaded();
4427
- if (pen.template) {
4533
+ // if (pen.template) {
4534
+ if (pen.canvasLayer === CanvasLayer.CanvasTemplate) {
4428
4535
  _this.templateImageLoaded();
4429
4536
  }
4430
4537
  };
@@ -4454,7 +4561,8 @@ var Canvas = /** @class */ (function () {
4454
4561
  pen.calculative.backgroundImg = img_2;
4455
4562
  globalStore.htmlElements[pen.backgroundImage] = img_2;
4456
4563
  _this.imageLoaded();
4457
- if (pen.template) {
4564
+ // if (pen.template) {
4565
+ if (pen.canvasLayer === CanvasLayer.CanvasTemplate) {
4458
4566
  _this.templateImageLoaded();
4459
4567
  }
4460
4568
  };
@@ -4483,7 +4591,10 @@ var Canvas = /** @class */ (function () {
4483
4591
  pen.calculative.strokeImg = img_3;
4484
4592
  globalStore.htmlElements[pen.strokeImage] = img_3;
4485
4593
  _this.imageLoaded();
4486
- if (pen.template && pen.name !== 'gif') {
4594
+ if (
4595
+ // pen.template
4596
+ pen.canvasLayer === CanvasLayer.CanvasTemplate &&
4597
+ pen.name !== 'gif') {
4487
4598
  _this.templateImageLoaded();
4488
4599
  }
4489
4600
  };
@@ -6140,15 +6251,15 @@ var Canvas = /** @class */ (function () {
6140
6251
  var e_21, _a;
6141
6252
  var retPens = [];
6142
6253
  try {
6143
- for (var pens_9 = __values(pens), pens_9_1 = pens_9.next(); !pens_9_1.done; pens_9_1 = pens_9.next()) {
6144
- var pen = pens_9_1.value;
6254
+ for (var pens_10 = __values(pens), pens_10_1 = pens_10.next(); !pens_10_1.done; pens_10_1 = pens_10.next()) {
6255
+ var pen = pens_10_1.value;
6145
6256
  retPens.push.apply(retPens, __spreadArray([], __read(deepClone(getAllChildren(pen, this.store), true)), false));
6146
6257
  }
6147
6258
  }
6148
6259
  catch (e_21_1) { e_21 = { error: e_21_1 }; }
6149
6260
  finally {
6150
6261
  try {
6151
- if (pens_9_1 && !pens_9_1.done && (_a = pens_9.return)) _a.call(pens_9);
6262
+ if (pens_10_1 && !pens_10_1.done && (_a = pens_10.return)) _a.call(pens_10);
6152
6263
  }
6153
6264
  finally { if (e_21) throw e_21.error; }
6154
6265
  }
@@ -6274,6 +6385,8 @@ var Canvas = /** @class */ (function () {
6274
6385
  this.render();
6275
6386
  // TODO: 连线的删除 ,连接的 node 的 connectLines 会变化(删除 node ,line 的 anchors 类似),未记历史记录
6276
6387
  if (history) {
6388
+ if (deletePens.length === 0)
6389
+ return [2 /*return*/];
6277
6390
  this.pushHistory({ type: EditType.Delete, pens: deletePens });
6278
6391
  }
6279
6392
  this.store.emitter.emit('delete', pens);
@@ -6648,7 +6761,7 @@ var Canvas = /** @class */ (function () {
6648
6761
  if (k === 'rotate') {
6649
6762
  oldRotate = pen.calculative.rotate || 0;
6650
6763
  }
6651
- else if (k === 'isBottom') {
6764
+ else if (k === 'canvasLayer' || k === 'isBottom') {
6652
6765
  containIsBottom = true;
6653
6766
  }
6654
6767
  else if (k === 'image') {
@@ -6752,17 +6865,30 @@ var Canvas = /** @class */ (function () {
6752
6865
  }
6753
6866
  else if (willRenderImage) {
6754
6867
  // 存在先有 image 后无 image 的情况
6755
- if (pen.isBottom) {
6868
+ // if (pen.isBottom) {
6869
+ // this.canvasImageBottom.init();
6870
+ // } else {
6871
+ // this.canvasImage.init();
6872
+ // }
6873
+ if (pen.canvasLayer === undefined) {
6874
+ pen.canvasLayer = CanvasLayer.CanvasImageBottom;
6875
+ pen.calculative.canvasLayer = CanvasLayer.CanvasImageBottom;
6876
+ }
6877
+ if (pen.canvasLayer === CanvasLayer.CanvasImageBottom) {
6756
6878
  this.canvasImageBottom.init();
6757
6879
  }
6758
- else {
6880
+ else if (pen.canvasLayer === CanvasLayer.CanvasImage) {
6759
6881
  this.canvasImage.init();
6760
6882
  }
6761
6883
  }
6762
6884
  else {
6763
6885
  this.initImageCanvas([pen]);
6764
6886
  }
6765
- if (data.template !== undefined || pen.template) {
6887
+ // if (data.template !== undefined || pen.template) {
6888
+ // this.initTemplateCanvas([pen]);
6889
+ // }
6890
+ if (data.canvasLayer !== undefined ||
6891
+ pen.canvasLayer === CanvasLayer.CanvasTemplate) {
6766
6892
  this.initTemplateCanvas([pen]);
6767
6893
  }
6768
6894
  };