@vxe-ui/core 3.4.35 → 3.4.37

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/es/src/core.js CHANGED
@@ -1,4 +1,4 @@
1
- export const coreVersion = "3.4.35";
1
+ export const coreVersion = "3.4.37";
2
2
  export const VxeCore = {
3
3
  coreVersion,
4
4
  uiVersion: '',
package/es/src/log.js CHANGED
@@ -6,7 +6,7 @@ function createLog(type, name) {
6
6
  return msg;
7
7
  };
8
8
  }
9
- const version = "3.4.35";
9
+ const version = "3.4.37";
10
10
  export const log = {
11
11
  create: createLog,
12
12
  warn: createLog('warn', `v${version}`),
package/es/src/mixins.js CHANGED
@@ -1,6 +1,21 @@
1
1
  import XEUtils from 'xe-utils';
2
2
  import Vue from 'vue';
3
3
  import { handleCheckInfo } from './permission';
4
+ import { scrollbarUtils } from './scrollbar-utils';
5
+ const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils;
6
+ function getVmInternalData($xeVm) {
7
+ // 新版本 $xeVm.internalData
8
+ // 老版本 $xeVm
9
+ return $xeVm.internalData || $xeVm;
10
+ }
11
+ function getVmReactData($xeVm) {
12
+ // 新版本 $xeVm.reactData
13
+ // 老版本 $xeVm
14
+ return $xeVm.reactData || $xeVm;
15
+ }
16
+ /**
17
+ * 组件尺寸上下文
18
+ */
4
19
  export const sizeMixin = Vue.extend({
5
20
  inject: {
6
21
  $xeSizeInfo: {
@@ -22,15 +37,28 @@ export const sizeMixin = Vue.extend({
22
37
  }
23
38
  }
24
39
  });
40
+ /**
41
+ * 权限码处理
42
+ */
43
+ export const permissionMixin = Vue.extend({
44
+ computed: {
45
+ computePermissionInfo() {
46
+ return handleCheckInfo(this.permissionCode, this.permissionMethod);
47
+ }
48
+ }
49
+ });
50
+ /**
51
+ * 虚拟滚动条是否启用
52
+ */
25
53
  export const vScrollbarMixin = Vue.extend({
26
54
  inject: {
27
- $xeScrollbarInfo: {
55
+ $xeVmInfo: {
28
56
  default: null
29
57
  }
30
58
  },
31
59
  provide() {
32
60
  return {
33
- $xeScrollbarInfo: {
61
+ $xeVmInfo: {
34
62
  getIsVScrollbar: () => this.computeIsVScrollbar
35
63
  }
36
64
  };
@@ -38,20 +66,187 @@ export const vScrollbarMixin = Vue.extend({
38
66
  computed: {
39
67
  computeIsVScrollbar() {
40
68
  const { useScrollbar } = this;
41
- const $xeScrollbarInfo = this.$xeScrollbarInfo;
42
- return XEUtils.isBoolean(useScrollbar) ? useScrollbar : ($xeScrollbarInfo ? $xeScrollbarInfo.getIsVScrollbar() : null);
69
+ const $xeVmInfo = this.$xeVmInfo;
70
+ return XEUtils.isBoolean(useScrollbar) ? useScrollbar : ($xeVmInfo ? $xeVmInfo.getIsVScrollbar() : null);
43
71
  }
44
72
  }
45
73
  });
46
- export const permissionMixin = Vue.extend({
47
- computed: {
48
- computePermissionInfo() {
49
- return handleCheckInfo(this.permissionCode, this.permissionMethod);
74
+ export const initVScrollbarMixin = Vue.extend(Object.assign(Object.assign({}, {}), { methods: {
75
+ updateThumbSize() {
76
+ const $xeVm = this;
77
+ const reactData = getVmReactData($xeVm);
78
+ const viewEl = $xeVm.getScrollViewElem();
79
+ if (!viewEl) {
80
+ return;
81
+ }
82
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
83
+ return;
84
+ }
85
+ const trackXEl = $xeVm.$refs.refTrackXElem;
86
+ const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
87
+ const thumbXElem = $xeVm.$refs.refThumbXElem;
88
+ if (thumbXElem) {
89
+ thumbXElem.style.width = xThumbWidth + 'px';
90
+ }
91
+ reactData.xThumbWidth = xThumbWidth;
92
+ const trackYEl = $xeVm.$refs.refTrackYElem;
93
+ const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
94
+ const thumbYElem = $xeVm.$refs.refThumbYElem;
95
+ if (thumbYElem) {
96
+ thumbYElem.style.height = yThumbHeight + 'px';
97
+ }
98
+ reactData.yThumbHeight = yThumbHeight;
99
+ },
100
+ updateThumbOffset() {
101
+ const $xeVm = this;
102
+ const reactData = getVmReactData($xeVm);
103
+ const internalData = getVmInternalData($xeVm);
104
+ const viewEl = $xeVm.getScrollViewElem();
105
+ if (!viewEl) {
106
+ return;
107
+ }
108
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
109
+ return;
110
+ }
111
+ const { xThumbWidth, yThumbHeight } = reactData;
112
+ const trackXEl = $xeVm.$refs.refTrackXElem;
113
+ const thumbXElem = $xeVm.$refs.refThumbXElem;
114
+ const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
115
+ internalData.xThumbLeft = xThumbLeft;
116
+ if (thumbXElem && xThumbWidth) {
117
+ thumbXElem.style.width = xThumbWidth + 'px';
118
+ thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
119
+ }
120
+ const trackYEl = $xeVm.$refs.refTrackYElem;
121
+ const thumbYElem = $xeVm.$refs.refThumbYElem;
122
+ const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
123
+ internalData.yThumbTop = yThumbTop;
124
+ if (thumbYElem && yThumbHeight) {
125
+ thumbYElem.style.height = yThumbHeight + 'px';
126
+ thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
127
+ }
128
+ },
129
+ clickTrackXEvent(evnt) {
130
+ const $xeVm = this;
131
+ const reactData = getVmReactData($xeVm);
132
+ const trackEl = evnt.currentTarget;
133
+ if (trackEl !== evnt.target) {
134
+ return;
135
+ }
136
+ const viewEl = $xeVm.getScrollViewElem();
137
+ if (!viewEl) {
138
+ return;
139
+ }
140
+ const { xThumbWidth } = reactData;
141
+ const trackRect = trackEl.getBoundingClientRect();
142
+ viewEl.scrollTo({
143
+ left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
144
+ behavior: 'auto'
145
+ });
146
+ },
147
+ clickTrackYEvent(evnt) {
148
+ const $xeVm = this;
149
+ const reactData = getVmReactData($xeVm);
150
+ const trackEl = evnt.currentTarget;
151
+ if (trackEl !== evnt.target) {
152
+ return;
153
+ }
154
+ const viewEl = $xeVm.getScrollViewElem();
155
+ if (!viewEl) {
156
+ return;
157
+ }
158
+ const { yThumbHeight } = reactData;
159
+ const trackRect = trackEl.getBoundingClientRect();
160
+ viewEl.scrollTo({
161
+ top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
162
+ behavior: 'auto'
163
+ });
164
+ },
165
+ pointerdownThumbXEvent(evnt) {
166
+ const $xeVm = this;
167
+ const reactData = getVmReactData($xeVm);
168
+ const internalData = getVmInternalData($xeVm);
169
+ const thumbEl = evnt.currentTarget;
170
+ internalData.isThumbDrag = true;
171
+ thumbEl.setPointerCapture(evnt.pointerId);
172
+ const viewEl = $xeVm.getScrollViewElem();
173
+ if (!viewEl) {
174
+ return;
175
+ }
176
+ const { xThumbWidth } = reactData;
177
+ const trackEl = thumbEl.parentElement;
178
+ const trackRect = trackEl.getBoundingClientRect();
179
+ const pointerPosition = evnt.clientX - trackRect.left;
180
+ // 记录 thumb 的偏移
181
+ const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
182
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
183
+ },
184
+ pointermoveThumbXEvent(evnt) {
185
+ const $xeVm = this;
186
+ const reactData = getVmReactData($xeVm);
187
+ const internalData = getVmInternalData($xeVm);
188
+ const { isThumbDrag, thumbDragOffset } = internalData;
189
+ if (isThumbDrag) {
190
+ const viewEl = $xeVm.getScrollViewElem();
191
+ if (!viewEl) {
192
+ return;
193
+ }
194
+ const { xThumbWidth } = reactData;
195
+ const thumbEl = evnt.currentTarget;
196
+ const trackEl = thumbEl.parentElement;
197
+ const trackRect = trackEl.getBoundingClientRect();
198
+ // 更新偏移
199
+ viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
200
+ }
201
+ },
202
+ cleatPointerThumbEvent(evnt) {
203
+ const $xeVm = this;
204
+ const internalData = getVmInternalData($xeVm);
205
+ const thumbEl = evnt.currentTarget;
206
+ thumbEl.releasePointerCapture(evnt.pointerId);
207
+ internalData.isThumbDrag = false;
208
+ },
209
+ pointerdownThumbYEvent(evnt) {
210
+ const $xeVm = this;
211
+ const reactData = getVmReactData($xeVm);
212
+ const internalData = getVmInternalData($xeVm);
213
+ const thumbEl = evnt.currentTarget;
214
+ internalData.isThumbDrag = true;
215
+ thumbEl.setPointerCapture(evnt.pointerId);
216
+ const viewEl = $xeVm.getScrollViewElem();
217
+ if (!viewEl) {
218
+ return;
219
+ }
220
+ const { yThumbHeight } = reactData;
221
+ const trackEl = thumbEl.parentElement;
222
+ const trackRect = trackEl.getBoundingClientRect();
223
+ const pointerPosition = evnt.clientY - trackRect.top;
224
+ // 记录 thumb 的偏移
225
+ const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
226
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
227
+ },
228
+ pointermoveThumbYEvent(evnt) {
229
+ const $xeVm = this;
230
+ const reactData = getVmReactData($xeVm);
231
+ const internalData = getVmInternalData($xeVm);
232
+ const { isThumbDrag, thumbDragOffset } = internalData;
233
+ if (isThumbDrag) {
234
+ const viewEl = $xeVm.getScrollViewElem();
235
+ if (!viewEl) {
236
+ return;
237
+ }
238
+ const { yThumbHeight } = reactData;
239
+ const thumbEl = evnt.currentTarget;
240
+ const trackEl = thumbEl.parentElement;
241
+ const trackRect = trackEl.getBoundingClientRect();
242
+ // 更新偏移
243
+ viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
244
+ }
50
245
  }
51
- }
52
- });
246
+ } }));
53
247
  export const globalMixins = {
54
248
  sizeMixin,
249
+ permissionMixin,
55
250
  vScrollbarMixin,
56
- permissionMixin
251
+ initVScrollbarMixin
57
252
  };
@@ -35,7 +35,7 @@ export const popperUtils = {
35
35
  const { defaultTop, defaultLeft, placement, defaultPlacement, appendTo, teleportTo, marginSize, isMinWidth } = Object.assign({
36
36
  appendTo: '',
37
37
  teleportTo: false,
38
- marginSize: 18,
38
+ marginSize: 12,
39
39
  isMinWidth: true
40
40
  }, options);
41
41
  let panelPlacement = 'bottom';
package/lib/index.umd.js CHANGED
@@ -2529,6 +2529,7 @@ __webpack_require__.d(__webpack_exports__, {
2529
2529
  handleCheckInfo: function() { return /* reexport */ handleCheckInfo; },
2530
2530
  hasComponent: function() { return /* reexport */ hasComponent; },
2531
2531
  hasLanguage: function() { return /* reexport */ hasLanguage; },
2532
+ initVScrollbarMixin: function() { return /* reexport */ initVScrollbarMixin; },
2532
2533
  interceptor: function() { return /* reexport */ interceptor; },
2533
2534
  log: function() { return /* reexport */ log; },
2534
2535
  menus: function() { return /* reexport */ menus; },
@@ -2572,7 +2573,7 @@ if (typeof window !== 'undefined') {
2572
2573
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.push.js
2573
2574
  var es_array_push = __webpack_require__(4114);
2574
2575
  ;// ./packages/src/core.ts
2575
- const coreVersion = "3.4.35";
2576
+ const coreVersion = "3.4.37";
2576
2577
  const VxeCore = {
2577
2578
  coreVersion,
2578
2579
  uiVersion: '',
@@ -3225,7 +3226,7 @@ function createLog(type, name) {
3225
3226
  return msg;
3226
3227
  };
3227
3228
  }
3228
- const version = "3.4.35";
3229
+ const version = "3.4.37";
3229
3230
  const log = {
3230
3231
  create: createLog,
3231
3232
  warn: createLog('warn', `v${version}`),
@@ -3877,7 +3878,7 @@ const popperUtils = {
3877
3878
  } = Object.assign({
3878
3879
  appendTo: '',
3879
3880
  teleportTo: false,
3880
- marginSize: 18,
3881
+ marginSize: 12,
3881
3882
  isMinWidth: true
3882
3883
  }, options);
3883
3884
  let panelPlacement = 'bottom';
@@ -4026,6 +4027,26 @@ const popperUtils = {
4026
4027
 
4027
4028
 
4028
4029
 
4030
+
4031
+ const {
4032
+ getThumbOffsetSize,
4033
+ getThumbSize,
4034
+ getScrollFromClick,
4035
+ getScrollFromDrag
4036
+ } = scrollbarUtils;
4037
+ function getVmInternalData($xeVm) {
4038
+ // 新版本 $xeVm.internalData
4039
+ // 老版本 $xeVm
4040
+ return $xeVm.internalData || $xeVm;
4041
+ }
4042
+ function getVmReactData($xeVm) {
4043
+ // 新版本 $xeVm.reactData
4044
+ // 老版本 $xeVm
4045
+ return $xeVm.reactData || $xeVm;
4046
+ }
4047
+ /**
4048
+ * 组件尺寸上下文
4049
+ */
4029
4050
  const sizeMixin = external_commonjs_vue_commonjs2_vue_root_Vue_default().extend({
4030
4051
  inject: {
4031
4052
  $xeSizeInfo: {
@@ -4049,15 +4070,28 @@ const sizeMixin = external_commonjs_vue_commonjs2_vue_root_Vue_default().extend(
4049
4070
  }
4050
4071
  }
4051
4072
  });
4073
+ /**
4074
+ * 权限码处理
4075
+ */
4076
+ const permissionMixin = external_commonjs_vue_commonjs2_vue_root_Vue_default().extend({
4077
+ computed: {
4078
+ computePermissionInfo() {
4079
+ return handleCheckInfo(this.permissionCode, this.permissionMethod);
4080
+ }
4081
+ }
4082
+ });
4083
+ /**
4084
+ * 虚拟滚动条是否启用
4085
+ */
4052
4086
  const vScrollbarMixin = external_commonjs_vue_commonjs2_vue_root_Vue_default().extend({
4053
4087
  inject: {
4054
- $xeScrollbarInfo: {
4088
+ $xeVmInfo: {
4055
4089
  default: null
4056
4090
  }
4057
4091
  },
4058
4092
  provide() {
4059
4093
  return {
4060
- $xeScrollbarInfo: {
4094
+ $xeVmInfo: {
4061
4095
  getIsVScrollbar: () => this.computeIsVScrollbar
4062
4096
  }
4063
4097
  };
@@ -4067,22 +4101,213 @@ const vScrollbarMixin = external_commonjs_vue_commonjs2_vue_root_Vue_default().e
4067
4101
  const {
4068
4102
  useScrollbar
4069
4103
  } = this;
4070
- const $xeScrollbarInfo = this.$xeScrollbarInfo;
4071
- return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(useScrollbar) ? useScrollbar : $xeScrollbarInfo ? $xeScrollbarInfo.getIsVScrollbar() : null;
4104
+ const $xeVmInfo = this.$xeVmInfo;
4105
+ return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(useScrollbar) ? useScrollbar : $xeVmInfo ? $xeVmInfo.getIsVScrollbar() : null;
4072
4106
  }
4073
4107
  }
4074
4108
  });
4075
- const permissionMixin = external_commonjs_vue_commonjs2_vue_root_Vue_default().extend({
4076
- computed: {
4077
- computePermissionInfo() {
4078
- return handleCheckInfo(this.permissionCode, this.permissionMethod);
4109
+ const initVScrollbarMixin = external_commonjs_vue_commonjs2_vue_root_Vue_default().extend({
4110
+ ...{},
4111
+ methods: {
4112
+ updateThumbSize() {
4113
+ const $xeVm = this;
4114
+ const reactData = getVmReactData($xeVm);
4115
+ const viewEl = $xeVm.getScrollViewElem();
4116
+ if (!viewEl) {
4117
+ return;
4118
+ }
4119
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
4120
+ return;
4121
+ }
4122
+ const trackXEl = $xeVm.$refs.refTrackXElem;
4123
+ const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
4124
+ const thumbXElem = $xeVm.$refs.refThumbXElem;
4125
+ if (thumbXElem) {
4126
+ thumbXElem.style.width = xThumbWidth + 'px';
4127
+ }
4128
+ reactData.xThumbWidth = xThumbWidth;
4129
+ const trackYEl = $xeVm.$refs.refTrackYElem;
4130
+ const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
4131
+ const thumbYElem = $xeVm.$refs.refThumbYElem;
4132
+ if (thumbYElem) {
4133
+ thumbYElem.style.height = yThumbHeight + 'px';
4134
+ }
4135
+ reactData.yThumbHeight = yThumbHeight;
4136
+ },
4137
+ updateThumbOffset() {
4138
+ const $xeVm = this;
4139
+ const reactData = getVmReactData($xeVm);
4140
+ const internalData = getVmInternalData($xeVm);
4141
+ const viewEl = $xeVm.getScrollViewElem();
4142
+ if (!viewEl) {
4143
+ return;
4144
+ }
4145
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
4146
+ return;
4147
+ }
4148
+ const {
4149
+ xThumbWidth,
4150
+ yThumbHeight
4151
+ } = reactData;
4152
+ const trackXEl = $xeVm.$refs.refTrackXElem;
4153
+ const thumbXElem = $xeVm.$refs.refThumbXElem;
4154
+ const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
4155
+ internalData.xThumbLeft = xThumbLeft;
4156
+ if (thumbXElem && xThumbWidth) {
4157
+ thumbXElem.style.width = xThumbWidth + 'px';
4158
+ thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
4159
+ }
4160
+ const trackYEl = $xeVm.$refs.refTrackYElem;
4161
+ const thumbYElem = $xeVm.$refs.refThumbYElem;
4162
+ const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
4163
+ internalData.yThumbTop = yThumbTop;
4164
+ if (thumbYElem && yThumbHeight) {
4165
+ thumbYElem.style.height = yThumbHeight + 'px';
4166
+ thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
4167
+ }
4168
+ },
4169
+ clickTrackXEvent(evnt) {
4170
+ const $xeVm = this;
4171
+ const reactData = getVmReactData($xeVm);
4172
+ const trackEl = evnt.currentTarget;
4173
+ if (trackEl !== evnt.target) {
4174
+ return;
4175
+ }
4176
+ const viewEl = $xeVm.getScrollViewElem();
4177
+ if (!viewEl) {
4178
+ return;
4179
+ }
4180
+ const {
4181
+ xThumbWidth
4182
+ } = reactData;
4183
+ const trackRect = trackEl.getBoundingClientRect();
4184
+ viewEl.scrollTo({
4185
+ left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
4186
+ behavior: 'auto'
4187
+ });
4188
+ },
4189
+ clickTrackYEvent(evnt) {
4190
+ const $xeVm = this;
4191
+ const reactData = getVmReactData($xeVm);
4192
+ const trackEl = evnt.currentTarget;
4193
+ if (trackEl !== evnt.target) {
4194
+ return;
4195
+ }
4196
+ const viewEl = $xeVm.getScrollViewElem();
4197
+ if (!viewEl) {
4198
+ return;
4199
+ }
4200
+ const {
4201
+ yThumbHeight
4202
+ } = reactData;
4203
+ const trackRect = trackEl.getBoundingClientRect();
4204
+ viewEl.scrollTo({
4205
+ top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
4206
+ behavior: 'auto'
4207
+ });
4208
+ },
4209
+ pointerdownThumbXEvent(evnt) {
4210
+ const $xeVm = this;
4211
+ const reactData = getVmReactData($xeVm);
4212
+ const internalData = getVmInternalData($xeVm);
4213
+ const thumbEl = evnt.currentTarget;
4214
+ internalData.isThumbDrag = true;
4215
+ thumbEl.setPointerCapture(evnt.pointerId);
4216
+ const viewEl = $xeVm.getScrollViewElem();
4217
+ if (!viewEl) {
4218
+ return;
4219
+ }
4220
+ const {
4221
+ xThumbWidth
4222
+ } = reactData;
4223
+ const trackEl = thumbEl.parentElement;
4224
+ const trackRect = trackEl.getBoundingClientRect();
4225
+ const pointerPosition = evnt.clientX - trackRect.left;
4226
+ // 记录 thumb 的偏移
4227
+ const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
4228
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
4229
+ },
4230
+ pointermoveThumbXEvent(evnt) {
4231
+ const $xeVm = this;
4232
+ const reactData = getVmReactData($xeVm);
4233
+ const internalData = getVmInternalData($xeVm);
4234
+ const {
4235
+ isThumbDrag,
4236
+ thumbDragOffset
4237
+ } = internalData;
4238
+ if (isThumbDrag) {
4239
+ const viewEl = $xeVm.getScrollViewElem();
4240
+ if (!viewEl) {
4241
+ return;
4242
+ }
4243
+ const {
4244
+ xThumbWidth
4245
+ } = reactData;
4246
+ const thumbEl = evnt.currentTarget;
4247
+ const trackEl = thumbEl.parentElement;
4248
+ const trackRect = trackEl.getBoundingClientRect();
4249
+ // 更新偏移
4250
+ viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
4251
+ }
4252
+ },
4253
+ cleatPointerThumbEvent(evnt) {
4254
+ const $xeVm = this;
4255
+ const internalData = getVmInternalData($xeVm);
4256
+ const thumbEl = evnt.currentTarget;
4257
+ thumbEl.releasePointerCapture(evnt.pointerId);
4258
+ internalData.isThumbDrag = false;
4259
+ },
4260
+ pointerdownThumbYEvent(evnt) {
4261
+ const $xeVm = this;
4262
+ const reactData = getVmReactData($xeVm);
4263
+ const internalData = getVmInternalData($xeVm);
4264
+ const thumbEl = evnt.currentTarget;
4265
+ internalData.isThumbDrag = true;
4266
+ thumbEl.setPointerCapture(evnt.pointerId);
4267
+ const viewEl = $xeVm.getScrollViewElem();
4268
+ if (!viewEl) {
4269
+ return;
4270
+ }
4271
+ const {
4272
+ yThumbHeight
4273
+ } = reactData;
4274
+ const trackEl = thumbEl.parentElement;
4275
+ const trackRect = trackEl.getBoundingClientRect();
4276
+ const pointerPosition = evnt.clientY - trackRect.top;
4277
+ // 记录 thumb 的偏移
4278
+ const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
4279
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
4280
+ },
4281
+ pointermoveThumbYEvent(evnt) {
4282
+ const $xeVm = this;
4283
+ const reactData = getVmReactData($xeVm);
4284
+ const internalData = getVmInternalData($xeVm);
4285
+ const {
4286
+ isThumbDrag,
4287
+ thumbDragOffset
4288
+ } = internalData;
4289
+ if (isThumbDrag) {
4290
+ const viewEl = $xeVm.getScrollViewElem();
4291
+ if (!viewEl) {
4292
+ return;
4293
+ }
4294
+ const {
4295
+ yThumbHeight
4296
+ } = reactData;
4297
+ const thumbEl = evnt.currentTarget;
4298
+ const trackEl = thumbEl.parentElement;
4299
+ const trackRect = trackEl.getBoundingClientRect();
4300
+ // 更新偏移
4301
+ viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
4302
+ }
4079
4303
  }
4080
4304
  }
4081
4305
  });
4082
4306
  const globalMixins = {
4083
4307
  sizeMixin,
4308
+ permissionMixin,
4084
4309
  vScrollbarMixin,
4085
- permissionMixin
4310
+ initVScrollbarMixin
4086
4311
  };
4087
4312
  ;// ./packages/index.ts
4088
4313