vxe-pc-ui 4.18.21 → 4.18.23

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 (84) hide show
  1. package/dist/all.esm.js +1638 -1048
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/components.js +3 -0
  5. package/es/icon/style.css +1 -1
  6. package/es/result/src/result.js +1 -1
  7. package/es/scrollbar/index.js +12 -0
  8. package/es/scrollbar/src/scrollbar.js +520 -0
  9. package/es/scrollbar/src/util.js +54 -0
  10. package/es/scrollbar/style.css +101 -0
  11. package/es/scrollbar/style.min.css +1 -0
  12. package/es/style.css +1 -1
  13. package/es/style.min.css +1 -1
  14. package/es/ui/index.js +10 -1
  15. package/es/ui/src/log.js +1 -1
  16. package/es/upload/style.css +5 -3
  17. package/es/upload/style.min.css +1 -1
  18. package/es/vxe-scrollbar/index.js +3 -0
  19. package/es/vxe-scrollbar/style.css +101 -0
  20. package/es/vxe-scrollbar/style.min.css +1 -0
  21. package/es/vxe-upload/style.css +5 -3
  22. package/es/vxe-upload/style.min.css +1 -1
  23. package/lib/components.js +13 -1
  24. package/lib/components.min.js +1 -1
  25. package/lib/icon/style/style.css +1 -1
  26. package/lib/icon/style/style.min.css +1 -1
  27. package/lib/index.umd.js +697 -6
  28. package/lib/index.umd.min.js +1 -1
  29. package/lib/result/src/result.js +1 -1
  30. package/lib/result/src/result.min.js +1 -1
  31. package/lib/scrollbar/index.js +19 -0
  32. package/lib/scrollbar/index.min.js +1 -0
  33. package/lib/scrollbar/src/scrollbar.js +560 -0
  34. package/lib/scrollbar/src/scrollbar.min.js +1 -0
  35. package/lib/scrollbar/src/util.js +63 -0
  36. package/lib/scrollbar/src/util.min.js +1 -0
  37. package/lib/scrollbar/style/index.js +1 -0
  38. package/lib/scrollbar/style/style.css +101 -0
  39. package/lib/scrollbar/style/style.min.css +1 -0
  40. package/lib/style.css +1 -1
  41. package/lib/style.min.css +1 -1
  42. package/lib/ui/index.js +10 -1
  43. package/lib/ui/index.min.js +1 -1
  44. package/lib/ui/src/log.js +1 -1
  45. package/lib/ui/src/log.min.js +1 -1
  46. package/lib/upload/style/style.css +5 -3
  47. package/lib/upload/style/style.min.css +1 -1
  48. package/lib/vxe-scrollbar/index.js +21 -0
  49. package/lib/vxe-scrollbar/index.min.js +1 -0
  50. package/lib/vxe-scrollbar/style/index.js +1 -0
  51. package/lib/vxe-scrollbar/style/style.css +101 -0
  52. package/lib/vxe-scrollbar/style/style.min.css +1 -0
  53. package/lib/vxe-upload/style/style.css +5 -3
  54. package/lib/vxe-upload/style/style.min.css +1 -1
  55. package/package.json +2 -2
  56. package/packages/components.ts +3 -0
  57. package/packages/result/src/result.ts +1 -1
  58. package/packages/scrollbar/index.ts +16 -0
  59. package/packages/scrollbar/src/scrollbar.ts +564 -0
  60. package/packages/scrollbar/src/util.ts +57 -0
  61. package/packages/ui/index.ts +9 -0
  62. package/styles/all.scss +1 -0
  63. package/styles/components/scrollbar.scss +114 -0
  64. package/styles/components/upload.scss +5 -3
  65. package/styles/theme/base.scss +5 -0
  66. package/styles/theme/dark.scss +5 -0
  67. package/styles/theme/light.scss +5 -0
  68. package/styles/variable.scss +5 -0
  69. package/types/all.d.ts +3 -0
  70. package/types/components/gantt.d.ts +3 -3
  71. package/types/components/scrollbar.d.ts +216 -0
  72. package/types/ui/global-config.d.ts +2 -0
  73. /package/es/icon/{iconfont.1790757619500.ttf → iconfont.1791517860186.ttf} +0 -0
  74. /package/es/icon/{iconfont.1790757619500.woff → iconfont.1791517860186.woff} +0 -0
  75. /package/es/icon/{iconfont.1790757619500.woff2 → iconfont.1791517860186.woff2} +0 -0
  76. /package/es/{iconfont.1790757619500.ttf → iconfont.1791517860186.ttf} +0 -0
  77. /package/es/{iconfont.1790757619500.woff → iconfont.1791517860186.woff} +0 -0
  78. /package/es/{iconfont.1790757619500.woff2 → iconfont.1791517860186.woff2} +0 -0
  79. /package/lib/icon/style/{iconfont.1790757619500.ttf → iconfont.1791517860186.ttf} +0 -0
  80. /package/lib/icon/style/{iconfont.1790757619500.woff → iconfont.1791517860186.woff} +0 -0
  81. /package/lib/icon/style/{iconfont.1790757619500.woff2 → iconfont.1791517860186.woff2} +0 -0
  82. /package/lib/{iconfont.1790757619500.ttf → iconfont.1791517860186.ttf} +0 -0
  83. /package/lib/{iconfont.1790757619500.woff → iconfont.1791517860186.woff} +0 -0
  84. /package/lib/{iconfont.1790757619500.woff2 → iconfont.1791517860186.woff2} +0 -0
@@ -63,7 +63,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
63
63
  const status = props.status || type;
64
64
  const slotExtra = slots.extra;
65
65
  return (0, _vue.h)('div', {
66
- ref: 'refElem',
66
+ ref: refElem,
67
67
  class: ['vxe-result', {
68
68
  [`theme--${status}`]: status
69
69
  }]
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeResult",props:{imageUrl:String,imageStyle:Object,icon:String,type:[String,Number],status:[String,Number],title:[String,Number],content:[String,Number]},emits:[],setup(n,e){let{emit:u,slots:v}=e;var t=_xeUtils.default.uniqueId(),r=(0,_vue.ref)(),i=(0,_vue.reactive)({});let s={refElem:r},a={},p={xID:t,props:n,context:e,reactData:i,getRefMaps:()=>s,getComputeMaps:()=>a};Object.assign(p,{dispatchEvent:(e,t,r)=>{u(e,(0,_ui.createEvent)(r,{$result:p},t))}},{});return p.renderVN=()=>{var{imageUrl:e,imageStyle:t,icon:r,title:u,type:i,content:s}=n,a=n.status||i,l=v.extra;return(0,_vue.h)("div",{ref:"refElem",class:["vxe-result",{["theme--"+a]:a}]},[(0,_vue.h)("div",{class:"vxe-result--inner"},[e?(0,_vue.h)("div",{class:"vxe-result--img-wrapper"},[(0,_vue.h)("img",{src:e,style:t})]):(0,_vue.h)("div",{class:"vxe-result--icon-wrapper"},[(0,_vue.h)("i",{class:[r,i?(0,_ui.getIcon)()[("RESULT_"+i).toLocaleUpperCase()]:""]})]),(0,_vue.h)("div",{class:"vxe-result--title-wrapper"},""+(u||"")),(0,_vue.h)("div",{class:"vxe-result--content-wrapper"},""+(s||"")),l?(0,_vue.h)("div",{class:"vxe-result--extra-wrapper"},l({})):(0,_ui.renderEmptyElement)(p)])])},p},render(){return this.renderVN()}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeResult",props:{imageUrl:String,imageStyle:Object,icon:String,type:[String,Number],status:[String,Number],title:[String,Number],content:[String,Number]},emits:[],setup(n,e){let{emit:u,slots:v}=e;var t=_xeUtils.default.uniqueId();let p=(0,_vue.ref)();var r=(0,_vue.reactive)({});let i={refElem:p},s={},c={xID:t,props:n,context:e,reactData:r,getRefMaps:()=>i,getComputeMaps:()=>s};Object.assign(c,{dispatchEvent:(e,t,r)=>{u(e,(0,_ui.createEvent)(r,{$result:c},t))}},{});return c.renderVN=()=>{var{imageUrl:e,imageStyle:t,icon:r,title:u,type:i,content:s}=n,a=n.status||i,l=v.extra;return(0,_vue.h)("div",{ref:p,class:["vxe-result",{["theme--"+a]:a}]},[(0,_vue.h)("div",{class:"vxe-result--inner"},[e?(0,_vue.h)("div",{class:"vxe-result--img-wrapper"},[(0,_vue.h)("img",{src:e,style:t})]):(0,_vue.h)("div",{class:"vxe-result--icon-wrapper"},[(0,_vue.h)("i",{class:[r,i?(0,_ui.getIcon)()[("RESULT_"+i).toLocaleUpperCase()]:""]})]),(0,_vue.h)("div",{class:"vxe-result--title-wrapper"},""+(u||"")),(0,_vue.h)("div",{class:"vxe-result--content-wrapper"},""+(s||"")),l?(0,_vue.h)("div",{class:"vxe-result--extra-wrapper"},l({})):(0,_ui.renderEmptyElement)(c)])])},c},render(){return this.renderVN()}});
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.VxeScrollbar = exports.Scrollbar = void 0;
7
+ var _core = require("@vxe-ui/core");
8
+ var _scrollbar = _interopRequireDefault(require("./src/scrollbar"));
9
+ var _dynamics = require("../dynamics");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ const VxeScrollbar = exports.VxeScrollbar = Object.assign({}, _scrollbar.default, {
12
+ install(app) {
13
+ app.component(_scrollbar.default.name, _scrollbar.default);
14
+ }
15
+ });
16
+ _dynamics.dynamicApp.use(VxeScrollbar);
17
+ _core.VxeUI.component(_scrollbar.default);
18
+ const Scrollbar = exports.Scrollbar = VxeScrollbar;
19
+ var _default = exports.default = VxeScrollbar;
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.VxeScrollbar=exports.Scrollbar=void 0;var _core=require("@vxe-ui/core"),_scrollbar=_interopRequireDefault(require("./src/scrollbar")),_dynamics=require("../dynamics");function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}let VxeScrollbar=exports.VxeScrollbar=Object.assign({},_scrollbar.default,{install(r){r.component(_scrollbar.default.name,_scrollbar.default)}}),Scrollbar=(_dynamics.dynamicApp.use(VxeScrollbar),_core.VxeUI.component(_scrollbar.default),exports.Scrollbar=VxeScrollbar);var _default=exports.default=VxeScrollbar;
@@ -0,0 +1,560 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _vue = require("vue");
8
+ var _comp = require("../../ui/src/comp");
9
+ var _xeUtils = _interopRequireDefault(require("xe-utils"));
10
+ var _ui = require("../../ui");
11
+ var _dom = require("../../ui/src/dom");
12
+ var _util = require("./util");
13
+ var _loading = _interopRequireDefault(require("../../loading"));
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ const {
16
+ getConfig,
17
+ createEvent,
18
+ domUtils,
19
+ globalResize,
20
+ renderEmptyElement
21
+ } = _ui.VxeUI;
22
+ function createReactData() {
23
+ return {
24
+ yThumbHeight: 0,
25
+ xThumbWidth: 0
26
+ };
27
+ }
28
+ function createInternalData() {
29
+ return {
30
+ // resizeObserver: undefined,
31
+ // isThumbDrag: false,
32
+ thumbDragOffset: 0,
33
+ yThumbTop: 0,
34
+ xThumbLeft: 0,
35
+ lastScrollTop: 0,
36
+ lastScrollLeft: 0
37
+ };
38
+ }
39
+ var _default = exports.default = (0, _comp.defineVxeComponent)({
40
+ name: 'VxeScrollbar',
41
+ props: {
42
+ width: [String, Number],
43
+ height: [String, Number],
44
+ minWidth: [String, Number],
45
+ minHeight: [String, Number],
46
+ maxWidth: [String, Number],
47
+ maxHeight: [String, Number],
48
+ loading: Boolean,
49
+ native: {
50
+ type: Boolean,
51
+ default: () => getConfig().scrollbar.native
52
+ },
53
+ xConfig: Object,
54
+ yConfig: Object,
55
+ className: String,
56
+ viewClassName: String,
57
+ autoResize: {
58
+ type: Boolean,
59
+ default: () => getConfig().scrollbar.autoResize
60
+ },
61
+ syncResize: [Boolean, String, Number]
62
+ },
63
+ emits: ['scroll', 'scroll-boundary'],
64
+ setup(props, context) {
65
+ const {
66
+ emit,
67
+ slots
68
+ } = context;
69
+ const xID = _xeUtils.default.uniqueId();
70
+ const refElem = (0, _vue.ref)();
71
+ const refViewElem = (0, _vue.ref)();
72
+ const refViewInnerElem = (0, _vue.ref)();
73
+ const refTrackXElem = (0, _vue.ref)();
74
+ const refTrackYElem = (0, _vue.ref)();
75
+ const refThumbXElem = (0, _vue.ref)();
76
+ const refThumbYElem = (0, _vue.ref)();
77
+ const reactData = (0, _vue.reactive)(createReactData());
78
+ const internalData = createInternalData();
79
+ const computeWrapperStyle = (0, _vue.computed)(() => {
80
+ const {
81
+ width,
82
+ height,
83
+ minWidth,
84
+ minHeight,
85
+ maxWidth,
86
+ maxHeight
87
+ } = props;
88
+ const xOpts = computeXOpts.value;
89
+ const yOpts = computeYOpts.value;
90
+ const stys = {};
91
+ if (width) {
92
+ stys.width = (0, _dom.toCssUnit)(width);
93
+ }
94
+ if (height) {
95
+ stys.height = (0, _dom.toCssUnit)(height);
96
+ }
97
+ if (minWidth) {
98
+ stys.minWidth = (0, _dom.toCssUnit)(minWidth);
99
+ }
100
+ if (minHeight) {
101
+ stys.minHeight = (0, _dom.toCssUnit)(minHeight);
102
+ }
103
+ if (maxWidth) {
104
+ stys.maxWidth = (0, _dom.toCssUnit)(maxWidth);
105
+ }
106
+ if (maxHeight) {
107
+ stys.maxHeight = (0, _dom.toCssUnit)(maxHeight);
108
+ }
109
+ if (yOpts.width) {
110
+ stys['--vxe-ui-scrollbar-y-width'] = (0, _dom.toCssUnit)(yOpts.width);
111
+ }
112
+ if (xOpts.height) {
113
+ stys['--vxe-ui-scrollbar-x-height'] = (0, _dom.toCssUnit)(xOpts.height);
114
+ }
115
+ return stys;
116
+ });
117
+ const computeWrapperClss = (0, _vue.computed)(() => {
118
+ const {
119
+ native,
120
+ className
121
+ } = props;
122
+ const xOpts = computeXOpts.value;
123
+ const yOpts = computeYOpts.value;
124
+ return domUtils.buildClass(['vxe-scrollbar', `ov-x--${xOpts.visible || 'visible'}`, `ov-y--${yOpts.visible || 'visible'}`, native ? 'is--native' : 'is--virtual', className], {
125
+ 'ov-x--auto-hide': xOpts.autoHide,
126
+ 'ov-y--auto-hide': yOpts.autoHide
127
+ });
128
+ });
129
+ const computeViewClss = (0, _vue.computed)(() => {
130
+ const {
131
+ viewClassName
132
+ } = props;
133
+ return domUtils.buildClass(['vxe-scrollbar--view', viewClassName]);
134
+ });
135
+ const computeXOpts = (0, _vue.computed)(() => {
136
+ return Object.assign({}, getConfig().scrollbar.xConfig, props.xConfig);
137
+ });
138
+ const computeYOpts = (0, _vue.computed)(() => {
139
+ return Object.assign({}, getConfig().scrollbar.yConfig, props.yConfig);
140
+ });
141
+ const refMaps = {
142
+ refElem
143
+ };
144
+ const computeMaps = {};
145
+ const $xeScrollbar = {
146
+ xID,
147
+ props,
148
+ context,
149
+ reactData,
150
+ internalData,
151
+ getRefMaps: () => refMaps,
152
+ getComputeMaps: () => computeMaps
153
+ };
154
+ const dispatchEvent = (type, params, evnt) => {
155
+ emit(type, createEvent(evnt, {
156
+ $scrollbar: $xeScrollbar
157
+ }, params));
158
+ };
159
+ const scrollbarMethods = {
160
+ dispatchEvent,
161
+ scrollTo(left, top) {
162
+ const viewEl = refViewElem.value;
163
+ if (viewEl) {
164
+ if (_xeUtils.default.isNumber(left)) {
165
+ viewEl.scrollTo(left, top || 0);
166
+ } else {
167
+ viewEl.scrollTo(left);
168
+ }
169
+ }
170
+ },
171
+ scrollIntoView() {
172
+ const viewEl = refViewElem.value;
173
+ if (viewEl) {
174
+ viewEl.scrollIntoView();
175
+ }
176
+ },
177
+ recalculate() {
178
+ updateThumbSize();
179
+ updateThumbOffset();
180
+ return (0, _vue.nextTick)();
181
+ }
182
+ };
183
+ const updateThumbSize = () => {
184
+ const viewEl = refViewElem.value;
185
+ if (!viewEl) {
186
+ return;
187
+ }
188
+ const trackXEl = refTrackXElem.value;
189
+ const xThumbWidth = trackXEl ? (0, _util.getThumbSize)(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
190
+ const thumbXElem = refThumbXElem.value;
191
+ if (thumbXElem) {
192
+ thumbXElem.style.width = xThumbWidth + 'px';
193
+ }
194
+ reactData.xThumbWidth = xThumbWidth;
195
+ const trackYEl = refTrackYElem.value;
196
+ const yThumbHeight = trackYEl ? (0, _util.getThumbSize)(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
197
+ const thumbYElem = refThumbYElem.value;
198
+ if (thumbYElem) {
199
+ thumbYElem.style.height = yThumbHeight + 'px';
200
+ }
201
+ reactData.yThumbHeight = yThumbHeight;
202
+ };
203
+ const updateThumbOffset = () => {
204
+ const viewEl = refViewElem.value;
205
+ if (!viewEl) {
206
+ return;
207
+ }
208
+ const {
209
+ xThumbWidth,
210
+ yThumbHeight
211
+ } = reactData;
212
+ const trackXEl = refTrackXElem.value;
213
+ const thumbXElem = refThumbXElem.value;
214
+ const xThumbLeft = trackXEl && xThumbWidth ? (0, _util.getThumbOffsetSize)(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
215
+ internalData.xThumbLeft = xThumbLeft;
216
+ if (thumbXElem && xThumbWidth) {
217
+ thumbXElem.style.width = xThumbWidth + 'px';
218
+ thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
219
+ }
220
+ const trackYEl = refTrackYElem.value;
221
+ const thumbYElem = refThumbYElem.value;
222
+ const yThumbTop = trackYEl && yThumbHeight ? (0, _util.getThumbOffsetSize)(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
223
+ internalData.yThumbTop = yThumbTop;
224
+ if (thumbYElem && yThumbHeight) {
225
+ thumbYElem.style.height = yThumbHeight + 'px';
226
+ thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
227
+ }
228
+ };
229
+ const scrollEvent = evnt => {
230
+ const {
231
+ xThumbWidth,
232
+ yThumbHeight
233
+ } = reactData;
234
+ const {
235
+ lastScrollTop,
236
+ lastScrollLeft
237
+ } = internalData;
238
+ const xOpts = computeXOpts.value;
239
+ const yOpts = computeYOpts.value;
240
+ const viewEl = evnt.currentTarget;
241
+ const {
242
+ scrollTop,
243
+ scrollLeft,
244
+ clientWidth,
245
+ clientHeight,
246
+ scrollHeight,
247
+ scrollWidth
248
+ } = viewEl;
249
+ let direction = '';
250
+ let isTopBoundary = false;
251
+ let isBottomBoundary = false;
252
+ let isLeftBoundary = false;
253
+ let isRightBoundary = false;
254
+ if (lastScrollTop !== scrollTop) {
255
+ const yThreshold = _xeUtils.default.toNumber(yOpts.threshold) || 1;
256
+ if (lastScrollTop < scrollTop) {
257
+ direction = 'bottom';
258
+ if (yThumbHeight > 0 && scrollTop + clientHeight >= scrollHeight - yThreshold) {
259
+ isBottomBoundary = true;
260
+ }
261
+ } else {
262
+ direction = 'top';
263
+ if (yThumbHeight > 0 && scrollTop <= yThreshold) {
264
+ isTopBoundary = true;
265
+ }
266
+ }
267
+ }
268
+ if (lastScrollLeft !== scrollLeft) {
269
+ const xThreshold = _xeUtils.default.toNumber(xOpts.threshold) || 1;
270
+ if (lastScrollLeft < scrollLeft) {
271
+ direction = 'right';
272
+ if (xThumbWidth > 0 && scrollLeft + clientWidth >= scrollWidth - xThreshold) {
273
+ isRightBoundary = true;
274
+ }
275
+ } else {
276
+ direction = 'left';
277
+ if (xThumbWidth > 0 && scrollLeft <= xThreshold) {
278
+ isLeftBoundary = true;
279
+ }
280
+ }
281
+ }
282
+ updateThumbOffset();
283
+ internalData.lastScrollTop = scrollTop;
284
+ internalData.lastScrollLeft = scrollLeft;
285
+ if (isBottomBoundary || isTopBoundary || isRightBoundary || isLeftBoundary) {
286
+ dispatchEvent('scroll-boundary', {
287
+ direction: direction,
288
+ isTop: isTopBoundary,
289
+ isBottom: isBottomBoundary,
290
+ isLeft: isLeftBoundary,
291
+ isRight: isRightBoundary,
292
+ scrollTop: scrollTop,
293
+ scrollLeft: scrollLeft,
294
+ clientWidth: clientWidth,
295
+ clientHeight: clientHeight,
296
+ scrollHeight: scrollHeight,
297
+ scrollWidth: scrollWidth
298
+ }, evnt);
299
+ }
300
+ dispatchEvent('scroll', {
301
+ direction: direction,
302
+ isTop: yThumbHeight > 0 && scrollTop <= 0,
303
+ isBottom: yThumbHeight > 0 && scrollTop + clientHeight >= scrollHeight,
304
+ isLeft: xThumbWidth > 0 && scrollLeft <= 0,
305
+ isRight: xThumbWidth > 0 && scrollLeft + clientWidth >= scrollWidth,
306
+ scrollTop: scrollTop,
307
+ scrollLeft: scrollLeft,
308
+ clientWidth: clientWidth,
309
+ clientHeight: clientHeight,
310
+ scrollHeight: scrollHeight,
311
+ scrollWidth: scrollWidth
312
+ }, evnt);
313
+ };
314
+ const clickTrackXEvent = evnt => {
315
+ const trackEl = evnt.currentTarget;
316
+ if (trackEl !== evnt.target) {
317
+ return;
318
+ }
319
+ const viewEl = refViewElem.value;
320
+ if (!viewEl) {
321
+ return;
322
+ }
323
+ const {
324
+ xThumbWidth
325
+ } = reactData;
326
+ const trackRect = trackEl.getBoundingClientRect();
327
+ viewEl.scrollTo({
328
+ left: (0, _util.getScrollFromClick)(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
329
+ behavior: 'auto'
330
+ });
331
+ };
332
+ const clickTrackYEvent = evnt => {
333
+ const trackEl = evnt.currentTarget;
334
+ if (trackEl !== evnt.target) {
335
+ return;
336
+ }
337
+ const viewEl = refViewElem.value;
338
+ if (!viewEl) {
339
+ return;
340
+ }
341
+ const {
342
+ yThumbHeight
343
+ } = reactData;
344
+ const trackRect = trackEl.getBoundingClientRect();
345
+ viewEl.scrollTo({
346
+ top: (0, _util.getScrollFromClick)(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
347
+ behavior: 'auto'
348
+ });
349
+ };
350
+ const pointerdownThumbXEvent = evnt => {
351
+ const thumbEl = evnt.currentTarget;
352
+ internalData.isThumbDrag = true;
353
+ thumbEl.setPointerCapture(evnt.pointerId);
354
+ const viewEl = refViewElem.value;
355
+ if (!viewEl) {
356
+ return;
357
+ }
358
+ const {
359
+ xThumbWidth
360
+ } = reactData;
361
+ const trackEl = thumbEl.parentElement;
362
+ const trackRect = trackEl.getBoundingClientRect();
363
+ const pointerPosition = evnt.clientX - trackRect.left;
364
+ // 记录 thumb 的偏移
365
+ const thumbOffset = (0, _util.getThumbOffsetSize)(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
366
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
367
+ };
368
+ const pointermoveThumbXEvent = evnt => {
369
+ const thumbEl = evnt.currentTarget;
370
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
371
+ return;
372
+ }
373
+ const {
374
+ isThumbDrag,
375
+ thumbDragOffset
376
+ } = internalData;
377
+ if (isThumbDrag) {
378
+ const viewEl = refViewElem.value;
379
+ if (!viewEl) {
380
+ return;
381
+ }
382
+ const {
383
+ xThumbWidth
384
+ } = reactData;
385
+ const thumbEl = evnt.currentTarget;
386
+ const trackEl = thumbEl.parentElement;
387
+ const trackRect = trackEl.getBoundingClientRect();
388
+ // 更新偏移
389
+ viewEl.scrollLeft = (0, _util.getScrollFromDrag)(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
390
+ }
391
+ };
392
+ const cleatPointerThumbEvent = evnt => {
393
+ const thumbEl = evnt.currentTarget;
394
+ thumbEl.releasePointerCapture(evnt.pointerId);
395
+ internalData.isThumbDrag = false;
396
+ };
397
+ const pointerdownThumbYEvent = evnt => {
398
+ const thumbEl = evnt.currentTarget;
399
+ internalData.isThumbDrag = true;
400
+ thumbEl.setPointerCapture(evnt.pointerId);
401
+ const viewEl = refViewElem.value;
402
+ if (!viewEl) {
403
+ return;
404
+ }
405
+ const {
406
+ yThumbHeight
407
+ } = reactData;
408
+ const trackEl = thumbEl.parentElement;
409
+ const trackRect = trackEl.getBoundingClientRect();
410
+ const pointerPosition = evnt.clientY - trackRect.top;
411
+ // 记录 thumb 的偏移
412
+ const thumbOffset = (0, _util.getThumbOffsetSize)(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
413
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
414
+ };
415
+ const pointermoveThumbYEvent = evnt => {
416
+ const thumbEl = evnt.currentTarget;
417
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
418
+ return;
419
+ }
420
+ const {
421
+ isThumbDrag,
422
+ thumbDragOffset
423
+ } = internalData;
424
+ if (isThumbDrag) {
425
+ const viewEl = refViewElem.value;
426
+ if (!viewEl) {
427
+ return;
428
+ }
429
+ const {
430
+ yThumbHeight
431
+ } = reactData;
432
+ const thumbEl = evnt.currentTarget;
433
+ const trackEl = thumbEl.parentElement;
434
+ const trackRect = trackEl.getBoundingClientRect();
435
+ // 更新偏移
436
+ viewEl.scrollTop = (0, _util.getScrollFromDrag)(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
437
+ }
438
+ };
439
+ const scrollbarPrivateMethods = {};
440
+ Object.assign($xeScrollbar, scrollbarMethods, scrollbarPrivateMethods);
441
+ const renderVN = () => {
442
+ const {
443
+ native,
444
+ loading,
445
+ autoResize
446
+ } = props;
447
+ const wrapperStyle = computeWrapperStyle.value;
448
+ const wrapperClss = computeWrapperClss.value;
449
+ const viewClss = computeViewClss.value;
450
+ const xOpts = computeXOpts.value;
451
+ const yOpts = computeYOpts.value;
452
+ const defaultSlot = slots.default;
453
+ return (0, _vue.h)('div', {
454
+ ref: refElem,
455
+ class: wrapperClss,
456
+ style: wrapperStyle
457
+ }, [(0, _vue.h)('div', {
458
+ ref: refViewElem,
459
+ class: viewClss,
460
+ onScroll: scrollEvent
461
+ }, autoResize ? [(0, _vue.h)('div', {
462
+ key: 'vi',
463
+ ref: refViewInnerElem,
464
+ class: 'vxe-scrollbar--view-inner'
465
+ }, defaultSlot ? defaultSlot({}) : [])] : defaultSlot ? defaultSlot({}) : []), native || xOpts.visible === 'hidden' ? renderEmptyElement($xeScrollbar) : (0, _vue.h)('div', {
466
+ ref: refTrackXElem,
467
+ class: 'vxe-scrollbar--track-x',
468
+ onClick: clickTrackXEvent
469
+ }, [(0, _vue.h)('div', {
470
+ ref: refThumbXElem,
471
+ class: 'vxe-scrollbar--thumb-x',
472
+ onPointerdown: pointerdownThumbXEvent,
473
+ onPointermove: pointermoveThumbXEvent,
474
+ onPointerup: cleatPointerThumbEvent,
475
+ onPointercancel: cleatPointerThumbEvent,
476
+ onLostpointercapture: cleatPointerThumbEvent
477
+ })]), native || yOpts.visible === 'hidden' ? renderEmptyElement($xeScrollbar) : (0, _vue.h)('div', {
478
+ ref: refTrackYElem,
479
+ class: 'vxe-scrollbar--track-y',
480
+ onClick: clickTrackYEvent
481
+ }, [(0, _vue.h)('div', {
482
+ ref: refThumbYElem,
483
+ class: 'vxe-scrollbar--thumb-y',
484
+ onPointerdown: pointerdownThumbYEvent,
485
+ onPointermove: pointermoveThumbYEvent,
486
+ onPointerup: cleatPointerThumbEvent,
487
+ onPointercancel: cleatPointerThumbEvent,
488
+ onLostpointercapture: cleatPointerThumbEvent
489
+ })]), (0, _vue.h)(_loading.default, {
490
+ class: 'vxe-scrollbar--loading',
491
+ modelValue: loading
492
+ })]);
493
+ };
494
+ const reFlag = (0, _vue.ref)(0);
495
+ (0, _vue.watch)(() => props.height, () => {
496
+ reFlag.value++;
497
+ });
498
+ (0, _vue.watch)(() => props.width, () => {
499
+ reFlag.value++;
500
+ });
501
+ (0, _vue.watch)(() => props.minHeight, () => {
502
+ reFlag.value++;
503
+ });
504
+ (0, _vue.watch)(() => props.minWidth, () => {
505
+ reFlag.value++;
506
+ });
507
+ (0, _vue.watch)(() => props.maxHeight, () => {
508
+ reFlag.value++;
509
+ });
510
+ (0, _vue.watch)(() => props.maxWidth, () => {
511
+ reFlag.value++;
512
+ });
513
+ (0, _vue.watch)(() => props.native, () => {
514
+ reFlag.value++;
515
+ });
516
+ (0, _vue.watch)(() => props.syncResize, () => {
517
+ reFlag.value++;
518
+ });
519
+ (0, _vue.watch)(reFlag, () => {
520
+ $xeScrollbar.recalculate().then(() => {
521
+ $xeScrollbar.recalculate();
522
+ });
523
+ });
524
+ (0, _vue.onMounted)(() => {
525
+ const {
526
+ autoResize
527
+ } = props;
528
+ const viewEl = refViewElem.value;
529
+ const viewInnerEl = refViewInnerElem.value;
530
+ if (autoResize) {
531
+ const resizeObserver = globalResize.create(() => {
532
+ if (props.autoResize) {
533
+ reFlag.value++;
534
+ }
535
+ });
536
+ if (viewEl) {
537
+ resizeObserver.observe(viewEl);
538
+ }
539
+ if (viewInnerEl) {
540
+ resizeObserver.observe(viewInnerEl);
541
+ }
542
+ internalData.resizeObserver = resizeObserver;
543
+ }
544
+ reFlag.value++;
545
+ });
546
+ (0, _vue.onBeforeUnmount)(() => {
547
+ const {
548
+ resizeObserver
549
+ } = internalData;
550
+ if (resizeObserver) {
551
+ resizeObserver.disconnect();
552
+ }
553
+ });
554
+ $xeScrollbar.renderVN = renderVN;
555
+ return $xeScrollbar;
556
+ },
557
+ render() {
558
+ return this.renderVN();
559
+ }
560
+ });
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_util=require("./util"),_loading=_interopRequireDefault(require("../../loading"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getConfig,createEvent,domUtils,globalResize,renderEmptyElement}=_ui.VxeUI;function createReactData(){return{yThumbHeight:0,xThumbWidth:0}}function createInternalData(){return{thumbDragOffset:0,yThumbTop:0,xThumbLeft:0,lastScrollTop:0,lastScrollLeft:0}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeScrollbar",props:{width:[String,Number],height:[String,Number],minWidth:[String,Number],minHeight:[String,Number],maxWidth:[String,Number],maxHeight:[String,Number],loading:Boolean,native:{type:Boolean,default:()=>getConfig().scrollbar.native},xConfig:Object,yConfig:Object,className:String,viewClassName:String,autoResize:{type:Boolean,default:()=>getConfig().scrollbar.autoResize},syncResize:[Boolean,String,Number]},emits:["scroll","scroll-boundary"],setup(s,e){let{emit:l,slots:c}=e;var t=_xeUtils.default.uniqueId();let h=(0,_vue.ref)(),v=(0,_vue.ref)(),d=(0,_vue.ref)(),g=(0,_vue.ref)(),m=(0,_vue.ref)(),f=(0,_vue.ref)(),b=(0,_vue.ref)(),p=(0,_vue.reactive)(createReactData()),_=createInternalData(),T=(0,_vue.computed)(()=>{var{width:e,height:t,minWidth:i,minHeight:l,maxWidth:r,maxHeight:a}=s,o=H.value,u=W.value,n={};return e&&(n.width=(0,_dom.toCssUnit)(e)),t&&(n.height=(0,_dom.toCssUnit)(t)),i&&(n.minWidth=(0,_dom.toCssUnit)(i)),l&&(n.minHeight=(0,_dom.toCssUnit)(l)),r&&(n.maxWidth=(0,_dom.toCssUnit)(r)),a&&(n.maxHeight=(0,_dom.toCssUnit)(a)),u.width&&(n["--vxe-ui-scrollbar-y-width"]=(0,_dom.toCssUnit)(u.width)),o.height&&(n["--vxe-ui-scrollbar-x-height"]=(0,_dom.toCssUnit)(o.height)),n}),x=(0,_vue.computed)(()=>{var{native:e,className:t}=s,i=H.value,l=W.value;return domUtils.buildClass(["vxe-scrollbar","ov-x--"+(i.visible||"visible"),"ov-y--"+(l.visible||"visible"),e?"is--native":"is--virtual",t],{"ov-x--auto-hide":i.autoHide,"ov-y--auto-hide":l.autoHide})}),C=(0,_vue.computed)(()=>{var e=s.viewClassName;return domUtils.buildClass(["vxe-scrollbar--view",e])}),H=(0,_vue.computed)(()=>Object.assign({},getConfig().scrollbar.xConfig,s.xConfig)),W=(0,_vue.computed)(()=>Object.assign({},getConfig().scrollbar.yConfig,s.yConfig)),i={refElem:h},r={},y={xID:t,props:s,context:e,reactData:p,internalData:_,getRefMaps:()=>i,getComputeMaps:()=>r},S=(e,t,i)=>{l(e,createEvent(i,{$scrollbar:y},t))};t={dispatchEvent:S,scrollTo(e,t){var i=v.value;i&&(_xeUtils.default.isNumber(e)?i.scrollTo(e,t||0):i.scrollTo(e))},scrollIntoView(){var e=v.value;e&&e.scrollIntoView()},recalculate(){return a(),w(),(0,_vue.nextTick)()}};let a=()=>{var e,t,i=v.value;i&&(t=(t=g.value)?(0,_util.getThumbSize)(i.clientWidth,i.scrollWidth,t.clientWidth):0,(e=f.value)&&(e.style.width=t+"px"),p.xThumbWidth=t,t=(e=m.value)?(0,_util.getThumbSize)(i.clientHeight,i.scrollHeight,e.clientHeight):0,(i=b.value)&&(i.style.height=t+"px"),p.yThumbHeight=t)},w=()=>{var e,t,i,l,r=v.value;r&&({xThumbWidth:t,yThumbHeight:e}=p,l=g.value,i=f.value,l=l&&t?(0,_util.getThumbOffsetSize)(r.scrollLeft,r.clientWidth,r.scrollWidth,l.clientWidth,t):0,_.xThumbLeft=l,i&&t&&(i.style.width=t+"px",i.style.transform=`translateX(${l}px)`),t=m.value,i=b.value,l=t&&e?(0,_util.getThumbOffsetSize)(r.scrollTop,r.clientHeight,r.scrollHeight,t.clientHeight,e):0,_.yThumbTop=l,i)&&e&&(i.style.height=e+"px",i.style.transform=`translateY(${l}px)`)},R=e=>{var{xThumbWidth:t,yThumbHeight:i}=p,{lastScrollTop:l,lastScrollLeft:r}=_,a=H.value,o=W.value,{scrollTop:u,scrollLeft:n,clientWidth:s,clientHeight:c,scrollHeight:h,scrollWidth:v}=e.currentTarget;let d="",g=!1,m=!1,f=!1,b=!1;l!==u&&(o=_xeUtils.default.toNumber(o.threshold)||1,l<u?(d="bottom",0<i&&h-o<=u+c&&(m=!0)):(d="top",0<i&&u<=o&&(g=!0))),r!==n&&(l=_xeUtils.default.toNumber(a.threshold)||1,r<n?(d="right",0<t&&v-l<=n+s&&(b=!0)):(d="left",0<t&&n<=l&&(f=!0))),w(),_.lastScrollTop=u,_.lastScrollLeft=n,(m||g||b||f)&&S("scroll-boundary",{direction:d,isTop:g,isBottom:m,isLeft:f,isRight:b,scrollTop:u,scrollLeft:n,clientWidth:s,clientHeight:c,scrollHeight:h,scrollWidth:v},e),S("scroll",{direction:d,isTop:0<i&&u<=0,isBottom:0<i&&h<=u+c,isLeft:0<t&&n<=0,isRight:0<t&&v<=n+s,scrollTop:u,scrollLeft:n,clientWidth:s,clientHeight:c,scrollHeight:h,scrollWidth:v},e)},D=e=>{var t,i,l,r=e.currentTarget;r===e.target&&(t=v.value)&&(i=p.xThumbWidth,l=r.getBoundingClientRect(),t.scrollTo({left:(0,_util.getScrollFromClick)(e.clientX-l.left,t.clientWidth,t.scrollWidth,r.clientWidth,i),behavior:"auto"}))},U=e=>{var t,i,l,r=e.currentTarget;r===e.target&&(t=v.value)&&(i=p.yThumbHeight,l=r.getBoundingClientRect(),t.scrollTo({top:(0,_util.getScrollFromClick)(e.clientY-l.top,t.clientHeight,t.scrollHeight,r.clientHeight,i),behavior:"auto"}))},z=e=>{var t,i,l=e.currentTarget,r=(_.isThumbDrag=!0,l.setPointerCapture(e.pointerId),v.value);r&&(t=p.xThumbWidth,i=(l=l.parentElement).getBoundingClientRect(),e=e.clientX-i.left,i=(0,_util.getThumbOffsetSize)(r.scrollLeft,r.clientWidth,r.scrollWidth,l.clientWidth,t),_.thumbDragOffset=e-i)},O=t=>{let e=t.currentTarget;if(e.hasPointerCapture(t.pointerId)){var{isThumbDrag:i,thumbDragOffset:l}=_;if(i){i=v.value;if(i){var r=p.xThumbWidth;let e=t.currentTarget;var a=e.parentElement,o=a.getBoundingClientRect();i.scrollLeft=(0,_util.getScrollFromDrag)(t.clientX-o.left,l,i.clientWidth,i.scrollWidth,a.clientWidth,r)}}}},N=e=>{e.currentTarget.releasePointerCapture(e.pointerId),_.isThumbDrag=!1},L=e=>{var t,i,l=e.currentTarget,r=(_.isThumbDrag=!0,l.setPointerCapture(e.pointerId),v.value);r&&(t=p.yThumbHeight,i=(l=l.parentElement).getBoundingClientRect(),e=e.clientY-i.top,i=(0,_util.getThumbOffsetSize)(r.scrollTop,r.clientHeight,r.scrollHeight,l.clientHeight,t),_.thumbDragOffset=e-i)},E=t=>{let e=t.currentTarget;if(e.hasPointerCapture(t.pointerId)){var{isThumbDrag:i,thumbDragOffset:l}=_;if(i){i=v.value;if(i){var r=p.yThumbHeight;let e=t.currentTarget;var a=e.parentElement,o=a.getBoundingClientRect();i.scrollTop=(0,_util.getScrollFromDrag)(t.clientY-o.top,l,i.clientHeight,i.scrollHeight,a.clientHeight,r)}}}};Object.assign(y,t,{});let o=(0,_vue.ref)(0);return(0,_vue.watch)(()=>s.height,()=>{o.value++}),(0,_vue.watch)(()=>s.width,()=>{o.value++}),(0,_vue.watch)(()=>s.minHeight,()=>{o.value++}),(0,_vue.watch)(()=>s.minWidth,()=>{o.value++}),(0,_vue.watch)(()=>s.maxHeight,()=>{o.value++}),(0,_vue.watch)(()=>s.maxWidth,()=>{o.value++}),(0,_vue.watch)(()=>s.native,()=>{o.value++}),(0,_vue.watch)(()=>s.syncResize,()=>{o.value++}),(0,_vue.watch)(o,()=>{y.recalculate().then(()=>{y.recalculate()})}),(0,_vue.onMounted)(()=>{var e=s.autoResize,t=v.value,i=d.value;e&&(e=globalResize.create(()=>{s.autoResize&&o.value++}),t&&e.observe(t),i&&e.observe(i),_.resizeObserver=e),o.value++}),(0,_vue.onBeforeUnmount)(()=>{var e=_.resizeObserver;e&&e.disconnect()}),y.renderVN=()=>{var{native:e,loading:t,autoResize:i}=s,l=T.value,r=x.value,a=C.value,o=H.value,u=W.value,n=c.default;return(0,_vue.h)("div",{ref:h,class:r,style:l},[(0,_vue.h)("div",{ref:v,class:a,onScroll:R},i?[(0,_vue.h)("div",{key:"vi",ref:d,class:"vxe-scrollbar--view-inner"},n?n({}):[])]:n?n({}):[]),e||"hidden"===o.visible?renderEmptyElement(y):(0,_vue.h)("div",{ref:g,class:"vxe-scrollbar--track-x",onClick:D},[(0,_vue.h)("div",{ref:f,class:"vxe-scrollbar--thumb-x",onPointerdown:z,onPointermove:O,onPointerup:N,onPointercancel:N,onLostpointercapture:N})]),e||"hidden"===u.visible?renderEmptyElement(y):(0,_vue.h)("div",{ref:m,class:"vxe-scrollbar--track-y",onClick:U},[(0,_vue.h)("div",{ref:b,class:"vxe-scrollbar--thumb-y",onPointerdown:L,onPointermove:E,onPointerup:N,onPointercancel:N,onLostpointercapture:N})]),(0,_vue.h)(_loading.default,{class:"vxe-scrollbar--loading",modelValue:t})])},y},render(){return this.renderVN()}});
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getScrollFromClick = getScrollFromClick;
7
+ exports.getScrollFromDrag = getScrollFromDrag;
8
+ exports.getThumbOffsetSize = getThumbOffsetSize;
9
+ exports.getThumbSize = getThumbSize;
10
+ /**
11
+ * 计算滚动条滑块的长度
12
+ */
13
+ function getThumbSize(viewportSize, contentSize, trackSize) {
14
+ if (contentSize <= viewportSize) {
15
+ return 0;
16
+ }
17
+ const ratio = viewportSize / contentSize;
18
+ const ideal = trackSize * ratio;
19
+ return Math.max(20, Math.min(ideal, trackSize));
20
+ }
21
+ /**
22
+ * 计算滚动条滑块的偏移位置
23
+ */
24
+ function getThumbOffsetSize(offsetSize, viewportSize, contentSize, trackSize, thumbSize) {
25
+ const maxScroll = contentSize - viewportSize;
26
+ if (maxScroll <= 0) {
27
+ return 0;
28
+ }
29
+ const maxThumbOffset = trackSize - thumbSize;
30
+ if (maxThumbOffset <= 0) {
31
+ return 0;
32
+ }
33
+ const clamped = Math.min(Math.max(offsetSize, 0), maxScroll);
34
+ const ratio = clamped / maxScroll;
35
+ return ratio * maxThumbOffset;
36
+ }
37
+ /**
38
+ * 根据点击轨道的位置,计算滑块的偏移位置
39
+ */
40
+ function getScrollFromClick(clickPosition, viewportSize, contentSize, trackSize, thumbSize) {
41
+ const maxThumbOffset = trackSize - thumbSize;
42
+ const maxScroll = contentSize - viewportSize;
43
+ if (maxScroll <= 0 || maxThumbOffset <= 0) {
44
+ return 0;
45
+ }
46
+ let thumbOffset = clickPosition - thumbSize / 2;
47
+ thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
48
+ const scrollOffset = thumbOffset / maxThumbOffset * maxScroll;
49
+ return scrollOffset;
50
+ }
51
+ /**
52
+ * 拖拽 thumb 时,根据鼠标位置计算滑块的偏移位置
53
+ */
54
+ function getScrollFromDrag(pointerPosition, dragOffset, viewportSize, contentSize, trackSize, thumbSize) {
55
+ const maxScroll = contentSize - viewportSize;
56
+ const maxThumbOffset = trackSize - thumbSize;
57
+ if (maxScroll <= 0 || maxThumbOffset <= 0) {
58
+ return 0;
59
+ }
60
+ let thumbOffset = pointerPosition - dragOffset;
61
+ thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
62
+ return thumbOffset / maxThumbOffset * maxScroll;
63
+ }
@@ -0,0 +1 @@
1
+ function getThumbSize(t,e,r){return e<=t?0:Math.max(20,Math.min(r*(t/e),r))}function getThumbOffsetSize(t,e,r,o,m){r-=e;return r<=0||(e=o-m)<=0?0:Math.min(Math.max(t,0),r)/r*e}function getScrollFromClick(t,e,r,o,m){o-=m,r-=e;return r<=0||o<=0?0:(e=t-m/2,(e=Math.min(Math.max(e,0),o))/o*r)}function getScrollFromDrag(t,e,r,o,m,i){o-=r,r=m-i;return o<=0||r<=0?0:(m=t-e,(m=Math.min(Math.max(m,0),r))/r*o)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getScrollFromClick=getScrollFromClick,exports.getScrollFromDrag=getScrollFromDrag,exports.getThumbOffsetSize=getThumbOffsetSize,exports.getThumbSize=getThumbSize;
@@ -0,0 +1 @@
1
+ require('./style.css')