@mantou/gem 1.7.1 → 1.7.2

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.
Files changed (85) hide show
  1. package/dist/gem.es.js +357 -362
  2. package/dist/gem.umd.js +24 -28
  3. package/elements/base/dialog.d.ts +7 -7
  4. package/elements/base/dialog.d.ts.map +1 -1
  5. package/elements/base/dialog.js +10 -3
  6. package/elements/base/dialog.js.map +1 -1
  7. package/elements/base/gesture.d.ts +4 -13
  8. package/elements/base/gesture.d.ts.map +1 -1
  9. package/elements/base/gesture.js +151 -134
  10. package/elements/base/gesture.js.map +1 -1
  11. package/elements/base/link.d.ts +10 -10
  12. package/elements/base/link.d.ts.map +1 -1
  13. package/elements/base/link.js +69 -63
  14. package/elements/base/link.js.map +1 -1
  15. package/elements/base/modal-factory.d.ts +106 -83
  16. package/elements/base/modal-factory.d.ts.map +1 -1
  17. package/elements/base/modal-factory.js +12 -8
  18. package/elements/base/modal-factory.js.map +1 -1
  19. package/elements/base/reflect.js.map +1 -1
  20. package/elements/base/route.d.ts +12 -5
  21. package/elements/base/route.d.ts.map +1 -1
  22. package/elements/base/route.js +16 -4
  23. package/elements/base/route.js.map +1 -1
  24. package/elements/base/title.d.ts +3 -1
  25. package/elements/base/title.d.ts.map +1 -1
  26. package/elements/base/title.js +14 -16
  27. package/elements/base/title.js.map +1 -1
  28. package/elements/base/unsafe.js.map +1 -1
  29. package/elements/base/use.d.ts +1 -1
  30. package/elements/base/use.d.ts.map +1 -1
  31. package/elements/base/use.js +27 -17
  32. package/elements/base/use.js.map +1 -1
  33. package/helper/i18n.d.ts +2 -2
  34. package/helper/i18n.d.ts.map +1 -1
  35. package/helper/i18n.js.map +1 -1
  36. package/helper/mediaquery.d.ts +16 -18
  37. package/helper/mediaquery.d.ts.map +1 -1
  38. package/helper/mediaquery.js +42 -41
  39. package/helper/mediaquery.js.map +1 -1
  40. package/helper/request.d.ts +1 -1
  41. package/helper/request.d.ts.map +1 -1
  42. package/helper/request.js.map +1 -1
  43. package/helper/ssr-shim.js.map +1 -1
  44. package/helper/theme.d.ts +2 -2
  45. package/helper/theme.d.ts.map +1 -1
  46. package/helper/theme.js +20 -24
  47. package/helper/theme.js.map +1 -1
  48. package/lib/decorators.d.ts +4 -4
  49. package/lib/decorators.d.ts.map +1 -1
  50. package/lib/decorators.js +1 -2
  51. package/lib/decorators.js.map +1 -1
  52. package/lib/element.d.ts +5 -7
  53. package/lib/element.d.ts.map +1 -1
  54. package/lib/element.js +41 -69
  55. package/lib/element.js.map +1 -1
  56. package/lib/history.d.ts +1 -1
  57. package/lib/history.d.ts.map +1 -1
  58. package/lib/history.js +2 -2
  59. package/lib/history.js.map +1 -1
  60. package/lib/store.d.ts +2 -2
  61. package/lib/store.d.ts.map +1 -1
  62. package/lib/store.js.map +1 -1
  63. package/lib/utils.d.ts +8 -32
  64. package/lib/utils.d.ts.map +1 -1
  65. package/lib/utils.js +6 -21
  66. package/lib/utils.js.map +1 -1
  67. package/lib/version.d.ts +1 -1
  68. package/lib/version.js +1 -1
  69. package/package.json +2 -2
  70. package/src/elements/base/dialog.ts +8 -3
  71. package/src/elements/base/gesture.ts +51 -45
  72. package/src/elements/base/link.ts +64 -62
  73. package/src/elements/base/modal-factory.ts +5 -0
  74. package/src/elements/base/route.ts +21 -4
  75. package/src/elements/base/title.ts +8 -11
  76. package/src/elements/base/use.ts +3 -3
  77. package/src/helper/mediaquery.ts +43 -42
  78. package/src/helper/theme.ts +22 -24
  79. package/src/lib/decorators.ts +1 -2
  80. package/src/lib/element.ts +29 -58
  81. package/src/lib/history.ts +2 -1
  82. package/src/lib/utils.ts +10 -42
  83. package/src/lib/version.ts +1 -1
  84. package/src/test/history.test.ts +3 -1
  85. package/src/test/utils.test.ts +8 -1
@@ -1 +1 @@
1
- {"version":3,"file":"gesture.d.ts","sourceRoot":"","sources":["../../src/elements/base/gesture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAsB,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEnE,oBAAY,cAAc,GAAG;IAE3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,gBAAgB;IAE/B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,iBAAiB;IAEhC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;CAChB;AAiBD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IACtC,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjC,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnC,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,WAAW,EAAE,MAAM,CAAC;IAE/B,OAAO,UAAS;IAChB,UAAU,SAAK;IAEf,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAa;IACrD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAa;;IAWpD,QAAQ,CAAC,SAAS,EAAE,MAAM;IAI1B,aAAa,CAAC,SAAS,EAAE,MAAM;IAI/B,gBAAgB,CAAC,SAAS,EAAE,MAAM;IASlC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAgBjC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAgBjC,OAAO,CAAC,GAAG,EAAE,YAAY;IAczB,MAAM,CAAC,GAAG,EAAE,YAAY;IAkDxB,KAAK,CAAC,GAAG,EAAE,YAAY;IA2CvB,MAAM;CAYP"}
1
+ {"version":3,"file":"gesture.d.ts","sourceRoot":"","sources":["../../src/elements/base/gesture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAsB,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEnE,MAAM,MAAM,cAAc,GAAG;IAE3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,gBAAgB;IAE/B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,iBAAiB;IAEhC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;CAChB;AAiBD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;;IACtC,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjC,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnC,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,WAAW,EAAE,MAAM,CAAC;;IAgB/B,eAAe;IACf,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAa;IAkKpD,MAAM;CAYP"}
@@ -4,6 +4,18 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
13
+ if (kind === "m") throw new TypeError("Private method is not writable");
14
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
15
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
16
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
17
+ };
18
+ var _GemGestureElement_pressed, _GemGestureElement_pressTimer, _GemGestureElement_startEventMap, _GemGestureElement_getMoves, _GemGestureElement_getStartEvent, _GemGestureElement_getOtherLastMove, _GemGestureElement_getMovementX, _GemGestureElement_getMovementY, _GemGestureElement_onStart, _GemGestureElement_onMove, _GemGestureElement_onMoveSet, _GemGestureElement_onEnd;
7
19
  import { GemElement, html } from '../../lib/element';
8
20
  import { attribute, emitter } from '../../lib/decorators';
9
21
  function angleAB(a, b, c, { clientX: x1, clientY: y1 }, { clientX: x2, clientY: y2 }, { clientX: x3, clientY: y3 }) {
@@ -31,151 +43,155 @@ function angleAB(a, b, c, { clientX: x1, clientY: y1 }, { clientX: x2, clientY:
31
43
  export class GemGestureElement extends GemElement {
32
44
  constructor() {
33
45
  super();
34
- this.pressed = false; // 触发 press 之后不触发其他事件
35
- this.pressTimer = 0;
36
- this.startEventMap = new Map();
46
+ _GemGestureElement_pressed.set(this, false); // 触发 press 之后不触发其他事件
47
+ _GemGestureElement_pressTimer.set(this, 0);
48
+ _GemGestureElement_startEventMap.set(this, new Map());
49
+ /** 指针移动事件记录 */
37
50
  this.movesMap = new Map();
38
- this.addEventListener('pointerdown', this.onStart);
39
- this.addEventListener('pointermove', this.onMove);
40
- this.addEventListener('pointerup', this.onEnd);
41
- this.addEventListener('pointercancel', this.onEnd);
42
- this.addEventListener('dragstart', (evt) => evt.preventDefault());
43
- }
44
- getMoves(pointerId) {
45
- return this.movesMap.get(pointerId) || [];
46
- }
47
- getStartEvent(pointerId) {
48
- return this.startEventMap.get(pointerId);
49
- }
50
- getOtherLastmove(pointerId) {
51
- for (const id of this.movesMap.keys()) {
52
- if (id !== pointerId) {
53
- const moves = this.getMoves(id);
54
- return moves[moves.length - 1] || this.getStartEvent(id);
51
+ _GemGestureElement_getMoves.set(this, (pointerId) => {
52
+ return this.movesMap.get(pointerId) || [];
53
+ });
54
+ _GemGestureElement_getStartEvent.set(this, (pointerId) => {
55
+ return __classPrivateFieldGet(this, _GemGestureElement_startEventMap, "f").get(pointerId);
56
+ });
57
+ _GemGestureElement_getOtherLastMove.set(this, (pointerId) => {
58
+ for (const id of this.movesMap.keys()) {
59
+ if (id !== pointerId) {
60
+ const moves = __classPrivateFieldGet(this, _GemGestureElement_getMoves, "f").call(this, id);
61
+ return moves[moves.length - 1] || __classPrivateFieldGet(this, _GemGestureElement_getStartEvent, "f").call(this, id);
62
+ }
55
63
  }
56
- }
57
- }
58
- getMovementX(x, y) {
59
- const touchAction = this.touchAction;
60
- if ((touchAction.includes('pan-right') && x > 0) ||
61
- (touchAction.includes('pan-left') && x < 0) ||
62
- touchAction.includes('pan-x') ||
63
- (((touchAction.includes('pan-down') && y > 0) ||
64
- (touchAction.includes('pan-up') && y < 0) ||
65
- touchAction.includes('pan-y')) &&
66
- Math.abs(y) > Math.abs(x)) // horizontally scrolling
67
- ) {
68
- return 0;
69
- }
70
- return x;
71
- }
72
- getMovementY(x, y) {
73
- const touchAction = this.touchAction;
74
- if ((touchAction.includes('pan-down') && y > 0) ||
75
- (touchAction.includes('pan-up') && y < 0) ||
76
- touchAction.includes('pan-y') ||
77
- (((touchAction.includes('pan-right') && x > 0) ||
64
+ });
65
+ _GemGestureElement_getMovementX.set(this, (x, y) => {
66
+ const touchAction = this.touchAction;
67
+ if ((touchAction.includes('pan-right') && x > 0) ||
78
68
  (touchAction.includes('pan-left') && x < 0) ||
79
- touchAction.includes('pan-x')) &&
80
- Math.abs(x) > Math.abs(y)) // vertical scrolling
81
- ) {
82
- return 0;
83
- }
84
- return y;
85
- }
86
- onStart(evt) {
87
- evt.stopPropagation();
88
- this.setPointerCapture(evt.pointerId);
89
- this.movesMap.set(evt.pointerId, []);
90
- this.startEventMap.set(evt.pointerId, evt);
91
- if (evt.isPrimary) {
92
- this.pressed = false;
93
- this.pressTimer = window.setTimeout(() => {
94
- this.press(null);
95
- this.pressed = true;
96
- }, 251);
97
- }
98
- }
99
- onMove(evt) {
100
- evt.stopPropagation();
101
- const { pointerId, clientX, clientY, isPrimary, pointerType, timeStamp } = evt;
102
- if (!this.pressed && this.hasPointerCapture(pointerId)) {
103
- const moves = this.getMoves(pointerId);
104
- const startEvent = this.getStartEvent(pointerId);
105
- const lastMove = moves[moves.length - 1] || startEvent;
106
- // https://bugs.webkit.org/show_bug.cgi?id=220194
107
- // https://bugs.chromium.org/p/chromium/issues/detail?id=1092358
108
- const movementX = clientX - lastMove.clientX;
109
- const movementY = clientY - lastMove.clientY;
110
- const move = {
111
- x: this.getMovementX(movementX, movementY),
112
- y: this.getMovementY(movementX, movementY),
113
- clientX,
114
- clientY,
115
- timeStamp,
116
- isPrimary,
117
- pointerId,
118
- };
119
- moves.push(move);
120
- this.pan(move);
121
- if (this.movesMap.size !== 1) {
122
- const secondaryPoint = this.getOtherLastmove(pointerId);
123
- const moveLen = Math.sqrt(movementX ** 2 + movementY ** 2);
124
- const distanceLen = Math.sqrt((lastMove.clientX - secondaryPoint.clientX) ** 2 + (lastMove.clientY - secondaryPoint.clientY) ** 2);
125
- const newDistanceLen = Math.sqrt((clientX - secondaryPoint.clientX) ** 2 + (clientY - secondaryPoint.clientY) ** 2);
126
- const x = (lastMove.clientX + secondaryPoint.clientX) / 2;
127
- const y = (lastMove.clientY + secondaryPoint.clientY) / 2;
128
- this.pinch({ x, y, scale: newDistanceLen / distanceLen });
129
- this.rotate({ x, y, rotate: angleAB(newDistanceLen, distanceLen, moveLen, secondaryPoint, lastMove, move) });
69
+ touchAction.includes('pan-x') ||
70
+ (((touchAction.includes('pan-down') && y > 0) ||
71
+ (touchAction.includes('pan-up') && y < 0) ||
72
+ touchAction.includes('pan-y')) &&
73
+ Math.abs(y) > Math.abs(x)) // horizontally scrolling
74
+ ) {
75
+ return 0;
130
76
  }
131
- const accuracy = pointerType === 'touch' ? 5 : 0;
132
- if (Math.abs(movementX) > accuracy ||
133
- Math.abs(movementY) > accuracy ||
134
- Math.abs(move.clientX - startEvent.clientX) > accuracy ||
135
- Math.abs(move.clientY - startEvent.clientY) > accuracy) {
136
- window.clearTimeout(this.pressTimer);
77
+ return x;
78
+ });
79
+ _GemGestureElement_getMovementY.set(this, (x, y) => {
80
+ const touchAction = this.touchAction;
81
+ if ((touchAction.includes('pan-down') && y > 0) ||
82
+ (touchAction.includes('pan-up') && y < 0) ||
83
+ touchAction.includes('pan-y') ||
84
+ (((touchAction.includes('pan-right') && x > 0) ||
85
+ (touchAction.includes('pan-left') && x < 0) ||
86
+ touchAction.includes('pan-x')) &&
87
+ Math.abs(x) > Math.abs(y)) // vertical scrolling
88
+ ) {
89
+ return 0;
137
90
  }
138
- }
139
- }
140
- onEnd(evt) {
141
- evt.stopPropagation();
142
- const { pointerId } = evt;
143
- window.clearTimeout(this.pressTimer);
144
- if (this.movesMap.size === 1) {
145
- this.end(null);
146
- }
147
- // auto release: https://javascript.info/pointer-events#pointer-capturing
148
- if (!this.pressed && this.hasPointerCapture(pointerId)) {
149
- const moves = this.getMoves(pointerId);
150
- if (moves.length > 2) {
151
- const { x, y, timeStamp, clientX, clientY } = moves[moves.length - 1];
152
- const move2 = moves[moves.length - 3];
153
- if (Math.abs(x) > 2) {
154
- if (Math.abs(x) > Math.abs(y)) {
155
- const speed = Math.abs(move2.clientX - clientX) / (timeStamp - move2.timeStamp);
156
- if (x > 0) {
157
- this.swipe({ direction: 'right', speed });
158
- }
159
- else {
160
- this.swipe({ direction: 'left', speed });
161
- }
162
- }
91
+ return y;
92
+ });
93
+ _GemGestureElement_onStart.set(this, (evt) => {
94
+ evt.stopPropagation();
95
+ this.setPointerCapture(evt.pointerId);
96
+ this.movesMap.set(evt.pointerId, []);
97
+ __classPrivateFieldGet(this, _GemGestureElement_startEventMap, "f").set(evt.pointerId, evt);
98
+ if (evt.isPrimary) {
99
+ __classPrivateFieldSet(this, _GemGestureElement_pressed, false, "f");
100
+ __classPrivateFieldSet(this, _GemGestureElement_pressTimer, window.setTimeout(() => {
101
+ this.press(null);
102
+ __classPrivateFieldSet(this, _GemGestureElement_pressed, true, "f");
103
+ }, 251), "f");
104
+ }
105
+ });
106
+ _GemGestureElement_onMove.set(this, (evt) => {
107
+ const { pointerId, clientX, clientY, isPrimary, pointerType, timeStamp } = evt;
108
+ if (!__classPrivateFieldGet(this, _GemGestureElement_pressed, "f") && this.hasPointerCapture(pointerId)) {
109
+ const moves = __classPrivateFieldGet(this, _GemGestureElement_getMoves, "f").call(this, pointerId);
110
+ const startEvent = __classPrivateFieldGet(this, _GemGestureElement_getStartEvent, "f").call(this, pointerId);
111
+ const lastMove = moves[moves.length - 1] || startEvent;
112
+ // https://bugs.webkit.org/show_bug.cgi?id=220194
113
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1092358
114
+ const movementX = clientX - lastMove.clientX;
115
+ const movementY = clientY - lastMove.clientY;
116
+ const move = {
117
+ x: __classPrivateFieldGet(this, _GemGestureElement_getMovementX, "f").call(this, movementX, movementY),
118
+ y: __classPrivateFieldGet(this, _GemGestureElement_getMovementY, "f").call(this, movementX, movementY),
119
+ clientX,
120
+ clientY,
121
+ timeStamp,
122
+ isPrimary,
123
+ pointerId,
124
+ };
125
+ moves.push(move);
126
+ this.pan(move);
127
+ if (this.movesMap.size !== 1) {
128
+ const secondaryPoint = __classPrivateFieldGet(this, _GemGestureElement_getOtherLastMove, "f").call(this, pointerId);
129
+ const moveLen = Math.sqrt(movementX ** 2 + movementY ** 2);
130
+ const distanceLen = Math.sqrt((lastMove.clientX - secondaryPoint.clientX) ** 2 + (lastMove.clientY - secondaryPoint.clientY) ** 2);
131
+ const newDistanceLen = Math.sqrt((clientX - secondaryPoint.clientX) ** 2 + (clientY - secondaryPoint.clientY) ** 2);
132
+ const x = (lastMove.clientX + secondaryPoint.clientX) / 2;
133
+ const y = (lastMove.clientY + secondaryPoint.clientY) / 2;
134
+ this.pinch({ x, y, scale: newDistanceLen / distanceLen });
135
+ this.rotate({ x, y, rotate: angleAB(newDistanceLen, distanceLen, moveLen, secondaryPoint, lastMove, move) });
136
+ }
137
+ const accuracy = pointerType === 'touch' ? 5 : 0;
138
+ if (Math.abs(movementX) > accuracy ||
139
+ Math.abs(movementY) > accuracy ||
140
+ Math.abs(move.clientX - startEvent.clientX) > accuracy ||
141
+ Math.abs(move.clientY - startEvent.clientY) > accuracy) {
142
+ window.clearTimeout(__classPrivateFieldGet(this, _GemGestureElement_pressTimer, "f"));
163
143
  }
164
- if (Math.abs(y) > 2) {
165
- const speed = Math.abs(move2.clientY - clientY) / (timeStamp - move2.timeStamp);
166
- if (Math.abs(y) > Math.abs(x)) {
167
- if (y > 0) {
168
- this.swipe({ direction: 'bottom', speed });
144
+ }
145
+ });
146
+ _GemGestureElement_onMoveSet.set(this, (evt) => {
147
+ evt.stopPropagation();
148
+ evt.getCoalescedEvents().forEach((evt) => __classPrivateFieldGet(this, _GemGestureElement_onMove, "f").call(this, evt));
149
+ });
150
+ _GemGestureElement_onEnd.set(this, (evt) => {
151
+ evt.stopPropagation();
152
+ const { pointerId } = evt;
153
+ window.clearTimeout(__classPrivateFieldGet(this, _GemGestureElement_pressTimer, "f"));
154
+ if (this.movesMap.size === 1) {
155
+ this.end(null);
156
+ }
157
+ // auto release: https://javascript.info/pointer-events#pointer-capturing
158
+ if (!__classPrivateFieldGet(this, _GemGestureElement_pressed, "f") && this.hasPointerCapture(pointerId)) {
159
+ const moves = __classPrivateFieldGet(this, _GemGestureElement_getMoves, "f").call(this, pointerId);
160
+ if (moves.length > 2) {
161
+ const { x, y, timeStamp, clientX, clientY } = moves[moves.length - 1];
162
+ const move2 = moves[moves.length - 3];
163
+ if (Math.abs(x) > 2) {
164
+ if (Math.abs(x) > Math.abs(y)) {
165
+ const speed = Math.abs(move2.clientX - clientX) / (timeStamp - move2.timeStamp);
166
+ if (x > 0) {
167
+ this.swipe({ direction: 'right', speed });
168
+ }
169
+ else {
170
+ this.swipe({ direction: 'left', speed });
171
+ }
169
172
  }
170
- else {
171
- this.swipe({ direction: 'top', speed });
173
+ }
174
+ if (Math.abs(y) > 2) {
175
+ const speed = Math.abs(move2.clientY - clientY) / (timeStamp - move2.timeStamp);
176
+ if (Math.abs(y) > Math.abs(x)) {
177
+ if (y > 0) {
178
+ this.swipe({ direction: 'bottom', speed });
179
+ }
180
+ else {
181
+ this.swipe({ direction: 'top', speed });
182
+ }
172
183
  }
173
184
  }
174
185
  }
175
186
  }
176
- }
177
- this.movesMap.delete(pointerId);
178
- this.startEventMap.delete(pointerId);
187
+ this.movesMap.delete(pointerId);
188
+ __classPrivateFieldGet(this, _GemGestureElement_startEventMap, "f").delete(pointerId);
189
+ });
190
+ this.addEventListener('pointerdown', __classPrivateFieldGet(this, _GemGestureElement_onStart, "f"));
191
+ this.addEventListener('pointermove', __classPrivateFieldGet(this, _GemGestureElement_onMoveSet, "f"));
192
+ this.addEventListener('pointerup', __classPrivateFieldGet(this, _GemGestureElement_onEnd, "f"));
193
+ this.addEventListener('pointercancel', __classPrivateFieldGet(this, _GemGestureElement_onEnd, "f"));
194
+ this.addEventListener('dragstart', (evt) => evt.preventDefault());
179
195
  }
180
196
  render() {
181
197
  return html `
@@ -190,6 +206,7 @@ export class GemGestureElement extends GemElement {
190
206
  `;
191
207
  }
192
208
  }
209
+ _GemGestureElement_pressed = new WeakMap(), _GemGestureElement_pressTimer = new WeakMap(), _GemGestureElement_startEventMap = new WeakMap(), _GemGestureElement_getMoves = new WeakMap(), _GemGestureElement_getStartEvent = new WeakMap(), _GemGestureElement_getOtherLastMove = new WeakMap(), _GemGestureElement_getMovementX = new WeakMap(), _GemGestureElement_getMovementY = new WeakMap(), _GemGestureElement_onStart = new WeakMap(), _GemGestureElement_onMove = new WeakMap(), _GemGestureElement_onMoveSet = new WeakMap(), _GemGestureElement_onEnd = new WeakMap();
193
210
  __decorate([
194
211
  emitter
195
212
  ], GemGestureElement.prototype, "pan", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"gesture.js","sourceRoot":"","sources":["../../src/elements/base/gesture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gesture.js","sourceRoot":"","sources":["../../src/elements/base/gesture.ts"],"names":[],"mappings":"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"}
@@ -22,18 +22,18 @@ export declare class GemLinkElement extends GemElement {
22
22
  hash: string;
23
23
  docTitle: string;
24
24
  hint: 'on' | 'off';
25
- route: RouteItem | undefined;
25
+ route?: RouteItem;
26
26
  /**@deprecated */
27
- options: RouteOptions | undefined;
28
- routeOptions: RouteOptions | undefined;
29
- prepare: (() => void | Promise<void>) | undefined;
27
+ options?: RouteOptions;
28
+ routeOptions?: RouteOptions;
29
+ prepare?: () => void | Promise<void>;
30
30
  link: string;
31
31
  constructor();
32
- getPathInfo(): string;
33
- isExternal(pathInfo: string): boolean;
34
- clickHandle: (e: MouseEvent) => Promise<void>;
35
- preventDefault: (e: MouseEvent) => void;
36
- render(pathInfo?: string): import("lit-html/lib/template-result").TemplateResult;
32
+ render(): import("lit-html/lib/template-result").TemplateResult;
33
+ /**
34
+ * 如果该元素是外部链接返回 URL,否则返回路径(不包含 basePath)
35
+ */
36
+ getLocationString(): string;
37
37
  }
38
38
  /**
39
39
  * @attr pattern
@@ -42,6 +42,6 @@ export declare class GemLinkElement extends GemElement {
42
42
  export declare class GemActiveLinkElement extends GemLinkElement {
43
43
  pattern: string;
44
44
  active: boolean;
45
- render(): import("lit-html/lib/template-result").TemplateResult;
45
+ constructor();
46
46
  }
47
47
  //# sourceMappingURL=link.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/elements/base/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,mBAAmB,CAAC;AAKhE,OAAO,EAAa,SAAS,EAAE,YAAY,EAAmC,MAAM,SAAS,CAAC;AAE9F;;;;;;;;;;;;GAYG;AACH,qBACa,cAAe,SAAQ,UAAU;;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC;IAGpB,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IACvC,iBAAiB;IACP,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC;IAClC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,OAAO,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAEtD,IAAI,EAAE,MAAM,CAAC;;IAanB,WAAW;IAoBX,UAAU,CAAC,QAAQ,EAAE,MAAM;IAI3B,WAAW,MAAa,UAAU,mBAiDhC;IAEF,cAAc,MAAO,UAAU,UAE7B;IAEF,MAAM,CAAC,QAAQ,SAAqB;CAgCrC;AAED;;;GAGG;AACH,qBACa,oBAAqB,SAAQ,cAAc;IAC3C,OAAO,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAEvB,MAAM;CAWP"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/elements/base/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,mBAAmB,CAAC;AAKhE,OAAO,EAAa,SAAS,EAAE,YAAY,EAAmC,MAAM,SAAS,CAAC;AAM9F;;;;;;;;;;;;GAYG;AACH,qBACa,cAAe,SAAQ,UAAU;;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC;IAGpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAC5B,iBAAiB;IACP,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC,IAAI,EAAE,MAAM,CAAC;;IA4EnB,MAAM;IA2BN;;OAEG;IACH,iBAAiB;CAmBlB;AAED;;;GAGG;AACH,qBACa,oBAAqB,SAAQ,cAAc;IAC3C,OAAO,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;;CAUxB"}
@@ -9,12 +9,15 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _GemLinkElement_instances, _GemLinkElement_routeOptions_get;
12
+ var _GemLinkElement_instances, _GemLinkElement_routeOptions_get, _GemLinkElement_hint_get, _GemLinkElement_onClick, _GemLinkElement_preventDefault, _GemLinkElement_getHint;
13
13
  import { GemElement, html, ifDefined } from '../../lib/element';
14
14
  import { attribute, property, state, part, connectStore } from '../../lib/decorators';
15
15
  import { history, basePathStore } from '../../lib/history';
16
16
  import { absoluteLocation } from '../../lib/utils';
17
17
  import { matchPath, createHistoryParams, createPath } from './route';
18
+ function isExternal(path) {
19
+ return !path.startsWith('/');
20
+ }
18
21
  /**
19
22
  * @attr href
20
23
  * @attr target
@@ -32,34 +35,33 @@ let GemLinkElement = class GemLinkElement extends GemElement {
32
35
  constructor() {
33
36
  super();
34
37
  _GemLinkElement_instances.add(this);
35
- this.clickHandle = async (e) => {
38
+ _GemLinkElement_onClick.set(this, async () => {
36
39
  var _a;
37
- const pathInfo = this.getPathInfo();
38
- if (!pathInfo)
40
+ const locationString = this.getLocationString();
41
+ if (!locationString)
39
42
  return;
40
43
  // 外部链接使用 `window.open`
41
- if (this.isExternal(pathInfo)) {
44
+ if (isExternal(locationString)) {
42
45
  switch (this.target) {
43
46
  case '_self':
44
- window.location.href = pathInfo;
47
+ window.location.href = locationString;
45
48
  return;
46
49
  case '_parent':
47
- window.parent.location.href = pathInfo;
50
+ window.parent.location.href = locationString;
48
51
  return;
49
52
  case '_top':
50
- window.top.location.href = pathInfo;
53
+ window.top.location.href = locationString;
51
54
  return;
52
55
  default:
53
- window.open(pathInfo);
56
+ window.open(locationString);
54
57
  return;
55
58
  }
56
59
  }
57
60
  const { path, query, hash } = history.getParams();
58
- if (path + query + hash === pathInfo) {
61
+ if (path + query + hash === locationString) {
59
62
  // 点击当前路由链接时,什么也没做
60
63
  return;
61
64
  }
62
- e.stopPropagation();
63
65
  await ((_a = this.prepare) === null || _a === void 0 ? void 0 : _a.call(this));
64
66
  if (this.route) {
65
67
  history.pushIgnoreCloseHandle({
@@ -68,7 +70,7 @@ let GemLinkElement = class GemLinkElement extends GemElement {
68
70
  });
69
71
  }
70
72
  else if (this.href) {
71
- const { pathname, search, hash } = new URL(pathInfo, location.origin);
73
+ const { pathname, search, hash } = new URL(locationString, location.origin);
72
74
  history.pushIgnoreCloseHandle({
73
75
  path: pathname,
74
76
  query: search,
@@ -79,42 +81,20 @@ let GemLinkElement = class GemLinkElement extends GemElement {
79
81
  else {
80
82
  history.pushIgnoreCloseHandle({ path: this.path, query: this.query, hash: this.hash, title: this.docTitle });
81
83
  }
82
- };
83
- this.preventDefault = (e) => {
84
+ });
85
+ _GemLinkElement_preventDefault.set(this, (e) => {
84
86
  e.preventDefault();
85
- };
87
+ });
88
+ _GemLinkElement_getHint.set(this, () => {
89
+ const locationString = this.getLocationString();
90
+ return isExternal(locationString)
91
+ ? locationString
92
+ : new URL(history.basePath + locationString, location.origin).toString();
93
+ });
86
94
  this.tabIndex = 0;
87
- this.addEventListener('click', this.clickHandle);
95
+ this.addEventListener('click', __classPrivateFieldGet(this, _GemLinkElement_onClick, "f"));
88
96
  }
89
- // 不包含 basePath
90
- getPathInfo() {
91
- var _a, _b;
92
- if (this.route) {
93
- const queryProp = ((_a = __classPrivateFieldGet(this, _GemLinkElement_instances, "a", _GemLinkElement_routeOptions_get)) === null || _a === void 0 ? void 0 : _a.query) || '';
94
- const hashProp = ((_b = __classPrivateFieldGet(this, _GemLinkElement_instances, "a", _GemLinkElement_routeOptions_get)) === null || _b === void 0 ? void 0 : _b.hash) || '';
95
- return createPath(this.route, __classPrivateFieldGet(this, _GemLinkElement_instances, "a", _GemLinkElement_routeOptions_get)) + queryProp + hashProp;
96
- }
97
- else {
98
- const url = this.href || this.path + this.query + this.hash;
99
- const { path, query } = history.getParams();
100
- if (url.startsWith('#')) {
101
- return `${path}${query}${url}`;
102
- }
103
- else if (url.startsWith('?')) {
104
- return `${path}${url}`;
105
- }
106
- else if (url.startsWith('.')) {
107
- return absoluteLocation(path, url);
108
- }
109
- else {
110
- return url;
111
- }
112
- }
113
- }
114
- isExternal(pathInfo) {
115
- return !pathInfo.startsWith('/');
116
- }
117
- render(pathInfo = this.getPathInfo()) {
97
+ render() {
118
98
  return html `
119
99
  <style>
120
100
  :host {
@@ -133,21 +113,51 @@ let GemLinkElement = class GemLinkElement extends GemElement {
133
113
  </style>
134
114
  <a
135
115
  part=${this.link}
136
- @click=${this.preventDefault}
137
- href=${ifDefined(this.hint === 'off'
138
- ? undefined
139
- : this.isExternal(pathInfo)
140
- ? pathInfo
141
- : new URL(history.basePath + pathInfo, location.origin).toString())}
116
+ @click=${__classPrivateFieldGet(this, _GemLinkElement_preventDefault, "f")}
117
+ href=${ifDefined(__classPrivateFieldGet(this, _GemLinkElement_instances, "a", _GemLinkElement_hint_get) === 'off' ? undefined : __classPrivateFieldGet(this, _GemLinkElement_getHint, "f").call(this))}
142
118
  >
143
119
  <slot></slot>
144
120
  </a>
145
121
  `;
146
122
  }
123
+ /**
124
+ * 如果该元素是外部链接返回 URL,否则返回路径(不包含 basePath)
125
+ */
126
+ getLocationString() {
127
+ var _a, _b;
128
+ if (this.route) {
129
+ const queryProp = ((_a = __classPrivateFieldGet(this, _GemLinkElement_instances, "a", _GemLinkElement_routeOptions_get)) === null || _a === void 0 ? void 0 : _a.query) || '';
130
+ const hashProp = ((_b = __classPrivateFieldGet(this, _GemLinkElement_instances, "a", _GemLinkElement_routeOptions_get)) === null || _b === void 0 ? void 0 : _b.hash) || '';
131
+ return createPath(this.route, __classPrivateFieldGet(this, _GemLinkElement_instances, "a", _GemLinkElement_routeOptions_get)) + queryProp + hashProp;
132
+ }
133
+ else {
134
+ const url = this.href || this.path + this.query + this.hash;
135
+ const { path, query } = history.getParams();
136
+ if (url.startsWith('#')) {
137
+ return `${path}${query}${url}`;
138
+ }
139
+ else if (url.startsWith('?')) {
140
+ return `${path}${url}`;
141
+ }
142
+ else if (url.startsWith('.')) {
143
+ return absoluteLocation(path, url);
144
+ }
145
+ else {
146
+ return url;
147
+ }
148
+ }
149
+ }
147
150
  };
148
- _GemLinkElement_instances = new WeakSet(), _GemLinkElement_routeOptions_get = function _GemLinkElement_routeOptions_get() {
151
+ _GemLinkElement_onClick = new WeakMap();
152
+ _GemLinkElement_preventDefault = new WeakMap();
153
+ _GemLinkElement_getHint = new WeakMap();
154
+ _GemLinkElement_instances = new WeakSet();
155
+ _GemLinkElement_routeOptions_get = function _GemLinkElement_routeOptions_get() {
149
156
  return this.routeOptions || this.options;
150
157
  };
158
+ _GemLinkElement_hint_get = function _GemLinkElement_hint_get() {
159
+ return this.hint || 'on';
160
+ };
151
161
  __decorate([
152
162
  attribute
153
163
  ], GemLinkElement.prototype, "href", void 0);
@@ -193,17 +203,13 @@ export { GemLinkElement };
193
203
  * @state active
194
204
  */
195
205
  let GemActiveLinkElement = class GemActiveLinkElement extends GemLinkElement {
196
- render() {
197
- const { path, query, hash } = history.getParams();
198
- const isMatchPattern = this.pattern && matchPath(this.pattern, path);
199
- const pathInfo = this.getPathInfo();
200
- if (isMatchPattern || path + query + hash === pathInfo) {
201
- this.active = true;
202
- }
203
- else {
204
- this.active = false;
205
- }
206
- return super.render(pathInfo);
206
+ constructor() {
207
+ super();
208
+ this.effect(() => {
209
+ const { path, query, hash } = history.getParams();
210
+ const isMatchPattern = this.pattern && matchPath(this.pattern, path);
211
+ this.active = !!isMatchPattern || path + query + hash === this.getLocationString();
212
+ });
207
213
  }
208
214
  };
209
215
  __decorate([