@meta2d/core 1.0.98 → 1.1.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meta2d/core",
3
- "version": "1.0.98",
3
+ "version": "1.1.0",
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",
@@ -49,6 +49,7 @@ export declare class Canvas {
49
49
  touchScaling?: boolean;
50
50
  touchMoving?: boolean;
51
51
  startTouches?: TouchList;
52
+ lastTouchY?: number;
52
53
  lastOffsetX: number;
53
54
  lastOffsetY: number;
54
55
  drawingLineName?: string;
@@ -73,6 +74,7 @@ export declare class Canvas {
73
74
  touchStart: number;
74
75
  touchStartTimer: any;
75
76
  timer: any;
77
+ lastTapTime: number;
76
78
  private lastAnimateRender;
77
79
  animateRendering: boolean;
78
80
  renderTimer: number;
@@ -90,6 +92,7 @@ export declare class Canvas {
90
92
  metaKey?: boolean;
91
93
  F?: boolean;
92
94
  };
95
+ isMobile?: boolean;
93
96
  /**
94
97
  * @deprecated 改用 beforeAddPens
95
98
  */
@@ -51,6 +51,7 @@ export class Canvas {
51
51
  touchScaling;
52
52
  touchMoving;
53
53
  startTouches;
54
+ lastTouchY;
54
55
  lastOffsetX = 0;
55
56
  lastOffsetY = 0;
56
57
  drawingLineName;
@@ -73,6 +74,7 @@ export class Canvas {
73
74
  touchStart = 0;
74
75
  touchStartTimer;
75
76
  timer;
77
+ lastTapTime = 0;
76
78
  lastAnimateRender = 0;
77
79
  animateRendering = false;
78
80
  renderTimer;
@@ -84,6 +86,7 @@ export class Canvas {
84
86
  canMoveLine = false; //moveConnectedLine=false
85
87
  randomIdObj; //记录拖拽前后id变化
86
88
  keyOptions;
89
+ isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
87
90
  /**
88
91
  * @deprecated 改用 beforeAddPens
89
92
  */
@@ -138,6 +141,7 @@ export class Canvas {
138
141
  this.externalElements.style.background = 'transparent';
139
142
  this.externalElements.style.zIndex = '5';
140
143
  parentElement.style.position = 'relative';
144
+ parentElement.style['-webkit-tap-highlight-color'] = 'transparent';
141
145
  parentElement.appendChild(this.externalElements);
142
146
  this.createInput();
143
147
  this.tooltip = new Tooltip(parentElement, store);
@@ -181,6 +185,9 @@ export class Canvas {
181
185
  this.externalElements.ontouchmove = this.ontouchmove;
182
186
  this.externalElements.ontouchend = this.ontouchend;
183
187
  this.externalElements.onmousedown = (e) => {
188
+ if (this.isMobile) {
189
+ return;
190
+ }
184
191
  this.onMouseDown({
185
192
  x: e.offsetX,
186
193
  y: e.offsetY,
@@ -195,6 +202,9 @@ export class Canvas {
195
202
  });
196
203
  };
197
204
  this.externalElements.onmousemove = (e) => {
205
+ if (this.isMobile) {
206
+ return;
207
+ }
198
208
  if (e.target !== this.externalElements) {
199
209
  return;
200
210
  }
@@ -212,6 +222,9 @@ export class Canvas {
212
222
  });
213
223
  };
214
224
  this.externalElements.onmouseup = (e) => {
225
+ if (this.isMobile) {
226
+ return;
227
+ }
215
228
  this.onMouseUp({
216
229
  x: e.offsetX,
217
230
  y: e.offsetY,
@@ -245,7 +258,12 @@ export class Canvas {
245
258
  this.store.lastHover = undefined;
246
259
  }
247
260
  };
248
- this.externalElements.ondblclick = this.ondblclick;
261
+ this.externalElements.ondblclick = (e) => {
262
+ if (this.isMobile) {
263
+ return;
264
+ }
265
+ this.ondblclick(e);
266
+ };
249
267
  this.externalElements.tabIndex = 0;
250
268
  this.externalElements.onblur = () => {
251
269
  this.mouseDown = undefined;
@@ -1319,9 +1337,17 @@ export class Canvas {
1319
1337
  return list;
1320
1338
  }
1321
1339
  ontouchstart = (e) => {
1340
+ this.lastTouchY = e.touches[0].clientY;
1322
1341
  if (this.store.data.locked === LockState.Disable) {
1323
1342
  return;
1324
1343
  }
1344
+ const currentTime = new Date().getTime();
1345
+ const tapTime = currentTime - this.lastTapTime;
1346
+ if (tapTime < 300 && tapTime > 0) {
1347
+ //双击
1348
+ this.ondblclick(e);
1349
+ }
1350
+ this.lastTapTime = currentTime;
1325
1351
  if (this.touchStartTimer) {
1326
1352
  clearTimeout(this.touchStartTimer);
1327
1353
  }
@@ -1392,6 +1418,12 @@ export class Canvas {
1392
1418
  const x = event.touches[0].pageX - this.clientRect.x;
1393
1419
  const y = event.touches[0].pageY - this.clientRect.y;
1394
1420
  if (len === 1) {
1421
+ if (this.store.options.scroll && this.scroll && !this.store.options.scrollButScale) {
1422
+ let diff = this.lastTouchY - event.touches[0].clientY;
1423
+ this.scroll.wheel(diff < 0);
1424
+ this.lastTouchY = event.touches[0].clientY;
1425
+ return;
1426
+ }
1395
1427
  this.onMouseMove({
1396
1428
  x,
1397
1429
  y,
@@ -1454,21 +1486,21 @@ export class Canvas {
1454
1486
  this.lastOffsetY = 0;
1455
1487
  const x = event.changedTouches[0].pageX - this.clientRect.x;
1456
1488
  const y = event.changedTouches[0].pageY - this.clientRect.y;
1457
- this.onMouseUp({
1458
- x,
1459
- y,
1460
- clientX: event.changedTouches[0].clientX,
1461
- clientY: event.changedTouches[0].clientY,
1462
- pageX: event.changedTouches[0].pageX,
1463
- pageY: event.changedTouches[0].pageY,
1464
- ctrlKey: event.ctrlKey || event.metaKey,
1465
- shiftKey: event.shiftKey,
1466
- altKey: event.altKey,
1467
- buttons: 1,
1468
- });
1469
1489
  setTimeout(() => {
1490
+ this.onMouseUp({
1491
+ x,
1492
+ y,
1493
+ clientX: event.changedTouches[0].clientX,
1494
+ clientY: event.changedTouches[0].clientY,
1495
+ pageX: event.changedTouches[0].pageX,
1496
+ pageY: event.changedTouches[0].pageY,
1497
+ ctrlKey: event.ctrlKey || event.metaKey,
1498
+ shiftKey: event.shiftKey,
1499
+ altKey: event.altKey,
1500
+ buttons: 1,
1501
+ });
1470
1502
  this.render();
1471
- }, 20);
1503
+ }, 60);
1472
1504
  };
1473
1505
  onGesturestart = (e) => {
1474
1506
  e.preventDefault();
@@ -2992,7 +3024,7 @@ export class Canvas {
2992
3024
  }
2993
3025
  }
2994
3026
  else {
2995
- this.externalElements.style.cursor = this.store.options.hoverCursor;
3027
+ this.externalElements.style.cursor = pen.hoverCursor || this.store.options.hoverCursor;
2996
3028
  }
2997
3029
  if (pen.calculative.disabled) {
2998
3030
  this.externalElements.style.cursor = 'not-allowed';
@@ -3039,7 +3071,7 @@ export class Canvas {
3039
3071
  }
3040
3072
  }
3041
3073
  else {
3042
- this.externalElements.style.cursor = this.store.options.hoverCursor;
3074
+ this.externalElements.style.cursor = pen.hoverCursor || this.store.options.hoverCursor;
3043
3075
  }
3044
3076
  if (pen.calculative.disabled) {
3045
3077
  this.externalElements.style.cursor = 'not-allowed';
@@ -4229,9 +4261,7 @@ export class Canvas {
4229
4261
  continue;
4230
4262
  }
4231
4263
  // if (pen.template) {
4232
- if (pen.canvasLayer === CanvasLayer.CanvasTemplate
4233
- || pen.canvasLayer === CanvasLayer.CanvasImageBottom
4234
- || pen.canvasLayer === CanvasLayer.CanvasImage) {
4264
+ if (pen.canvasLayer === CanvasLayer.CanvasTemplate) {
4235
4265
  continue;
4236
4266
  }
4237
4267
  // if (pen.name === 'combine' && !pen.draw){
@@ -6591,8 +6621,8 @@ export class Canvas {
6591
6621
  }
6592
6622
  if (pen.fontSize) {
6593
6623
  if (pen.fontSize * scale < 12) {
6594
- style += `font-size:${pen.fontSize}px;`;
6595
- style += `zoom:${(pen.fontSize / 12) * scale};`;
6624
+ style += `font-size:${pen.calculative.fontSize}px;`;
6625
+ // style += `zoom:${(pen.fontSize / 12) * scale};`;
6596
6626
  }
6597
6627
  else {
6598
6628
  style += `font-size:${pen.fontSize * scale}px;`;
@@ -6607,18 +6637,20 @@ export class Canvas {
6607
6637
  }
6608
6638
  if (pen.textLeft) {
6609
6639
  style += `margin-left:${scale > 1
6610
- ? pen.textLeft * font_scale
6611
- : (pen.textLeft * font_scale) / scale}px;`;
6640
+ ? pen.textLeft * scale
6641
+ : (pen.textLeft * scale) // scale
6642
+ }px;`;
6612
6643
  }
6613
6644
  if (pen.textTop) {
6614
6645
  style += `margin-top:${scale > 1
6615
6646
  ? pen.textTop * font_scale
6616
- : (pen.textTop * font_scale) / scale}px;`;
6647
+ : (pen.textTop * font_scale) // scale
6648
+ }px;`;
6617
6649
  }
6618
6650
  if (pen.lineHeight) {
6619
6651
  style += `line-height:${scale > 1
6620
6652
  ? pen.fontSize * pen.lineHeight * scale
6621
- : pen.fontSize * pen.lineHeight * font_scale}px;`;
6653
+ : pen.calculative.fontSize * pen.lineHeight}px;`;
6622
6654
  }
6623
6655
  if (pen.textHeight) {
6624
6656
  style += `height:${scale > 1
@@ -6630,7 +6662,7 @@ export class Canvas {
6630
6662
  if (tem < 0) {
6631
6663
  tem = 0;
6632
6664
  }
6633
- let height = pen.fontSize * scale < 12 ? tem * font_scale : tem * scale * font_scale;
6665
+ let height = pen.fontSize * scale < 12 ? tem * scale * font_scale : tem * scale * font_scale;
6634
6666
  if (height < pen.fontSize * pen.lineHeight * scale) {
6635
6667
  height = pen.fontSize * pen.lineHeight * scale;
6636
6668
  style += `top:-${height / 2}px;`;
@@ -6642,17 +6674,18 @@ export class Canvas {
6642
6674
  }
6643
6675
  let _textWidth = null;
6644
6676
  if (pen.textWidth) {
6645
- _textWidth =
6646
- pen.textWidth < 1 && pen.textWidth > -1
6647
- ? pen.textWidth * pen.calculative.worldRect.width
6648
- : pen.textWidth;
6677
+ // _textWidth =
6678
+ // pen.textWidth < 1 && pen.textWidth > -1
6679
+ // ? pen.textWidth * pen.calculative.worldRect.width
6680
+ // : pen.textWidth;
6681
+ _textWidth = pen.calculative.textWidth;
6649
6682
  if (pen.whiteSpace !== 'pre-line') {
6650
6683
  if (_textWidth < pen.fontSize) {
6651
6684
  style += `width:${pen.fontSize * 1.2 * font_scale}px;`;
6652
6685
  }
6653
6686
  else {
6654
6687
  style += `width:${scale > 1
6655
- ? _textWidth * font_scale * scale
6688
+ ? _textWidth * font_scale
6656
6689
  : _textWidth * font_scale}px;`;
6657
6690
  }
6658
6691
  }
@@ -6663,7 +6696,7 @@ export class Canvas {
6663
6696
  if (tem < 0) {
6664
6697
  tem = 0;
6665
6698
  }
6666
- style += `width:${pen.fontSize * scale < 12 ? tem * font_scale : tem * scale}px;`;
6699
+ style += `width:${pen.fontSize * scale < 12 ? tem * scale : tem * scale}px;`;
6667
6700
  }
6668
6701
  // if (pen.whiteSpace === 'pre-line') {
6669
6702
  // //回车换行