tntd 2.8.42 → 2.8.44

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 (60) hide show
  1. package/es/exception/exception.less +1 -0
  2. package/es/handle-icon/index.js +128 -115
  3. package/es/handle-icon/index.js.map +1 -1
  4. package/es/index.js +7 -0
  5. package/es/index.js.map +1 -1
  6. package/es/index.less +1 -0
  7. package/es/scroll-bar/Bar.js +91 -0
  8. package/es/scroll-bar/Bar.js.map +1 -0
  9. package/es/scroll-bar/Context.js +13 -0
  10. package/es/scroll-bar/Context.js.map +1 -0
  11. package/es/scroll-bar/ScrollBar.js +94 -0
  12. package/es/scroll-bar/ScrollBar.js.map +1 -0
  13. package/es/scroll-bar/Thumb.js +125 -0
  14. package/es/scroll-bar/Thumb.js.map +1 -0
  15. package/es/scroll-bar/index.js +10 -0
  16. package/es/scroll-bar/index.js.map +1 -0
  17. package/es/scroll-bar/scrollBar.less +59 -0
  18. package/es/scroll-bar/util.js +39 -0
  19. package/es/scroll-bar/util.js.map +1 -0
  20. package/es/style/core/base.less +2 -0
  21. package/es/style/mixins/index.less +1 -0
  22. package/es/style/mixins/scrollbar.less +54 -0
  23. package/lib/exception/exception.less +1 -0
  24. package/lib/handle-icon/index.d.ts.map +1 -1
  25. package/lib/handle-icon/index.js +159 -115
  26. package/lib/handle-icon/index.js.map +1 -1
  27. package/lib/index.d.ts +1 -0
  28. package/lib/index.d.ts.map +1 -1
  29. package/lib/index.js +7 -0
  30. package/lib/index.js.map +1 -1
  31. package/lib/index.less +1 -0
  32. package/lib/scroll-bar/Bar.d.ts +4 -0
  33. package/lib/scroll-bar/Bar.d.ts.map +1 -0
  34. package/lib/scroll-bar/Bar.js +169 -0
  35. package/lib/scroll-bar/Bar.js.map +1 -0
  36. package/lib/scroll-bar/Context.d.ts +7 -0
  37. package/lib/scroll-bar/Context.d.ts.map +1 -0
  38. package/lib/scroll-bar/Context.js +17 -0
  39. package/lib/scroll-bar/Context.js.map +1 -0
  40. package/lib/scroll-bar/ScrollBar.d.ts +4 -0
  41. package/lib/scroll-bar/ScrollBar.d.ts.map +1 -0
  42. package/lib/scroll-bar/ScrollBar.js +129 -0
  43. package/lib/scroll-bar/ScrollBar.js.map +1 -0
  44. package/lib/scroll-bar/Thumb.d.ts +3 -0
  45. package/lib/scroll-bar/Thumb.d.ts.map +1 -0
  46. package/lib/scroll-bar/Thumb.js +203 -0
  47. package/lib/scroll-bar/Thumb.js.map +1 -0
  48. package/lib/scroll-bar/index.d.ts +3 -0
  49. package/lib/scroll-bar/index.d.ts.map +1 -0
  50. package/lib/scroll-bar/index.js +14 -0
  51. package/lib/scroll-bar/index.js.map +1 -0
  52. package/lib/scroll-bar/scrollBar.less +59 -0
  53. package/lib/scroll-bar/util.d.ts +40 -0
  54. package/lib/scroll-bar/util.d.ts.map +1 -0
  55. package/lib/scroll-bar/util.js +72 -0
  56. package/lib/scroll-bar/util.js.map +1 -0
  57. package/lib/style/core/base.less +2 -0
  58. package/lib/style/mixins/index.less +1 -0
  59. package/lib/style/mixins/scrollbar.less +54 -0
  60. package/package.json +1 -1
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) {
4
+ "@babel/helpers - typeof";
5
+
6
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
7
+ return typeof o;
8
+ } : function (o) {
9
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
10
+ }, _typeof(o);
11
+ }
12
+ Object.defineProperty(exports, "__esModule", {
13
+ value: true
14
+ });
15
+ exports["default"] = void 0;
16
+ var _react = _interopRequireWildcard(require("react"));
17
+ var _Context = _interopRequireDefault(require("./Context"));
18
+ var _Thumb = _interopRequireDefault(require("./Thumb"));
19
+ var _util = require("./util");
20
+ function _interopRequireDefault(obj) {
21
+ return obj && obj.__esModule ? obj : {
22
+ "default": obj
23
+ };
24
+ }
25
+ function _getRequireWildcardCache(e) {
26
+ if ("function" != typeof WeakMap) return null;
27
+ var r = new WeakMap(),
28
+ t = new WeakMap();
29
+ return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
30
+ return e ? t : r;
31
+ })(e);
32
+ }
33
+ function _interopRequireWildcard(e, r) {
34
+ if (!r && e && e.__esModule) return e;
35
+ if (null === e || "object" != _typeof(e) && "function" != typeof e) return {
36
+ "default": e
37
+ };
38
+ var t = _getRequireWildcardCache(r);
39
+ if (t && t.has(e)) return t.get(e);
40
+ var n = {
41
+ __proto__: null
42
+ },
43
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
44
+ for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
45
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
46
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
47
+ }
48
+ return n["default"] = e, t && t.set(e, n), n;
49
+ }
50
+ function _slicedToArray(arr, i) {
51
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
52
+ }
53
+ function _nonIterableRest() {
54
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
55
+ }
56
+ function _unsupportedIterableToArray(o, minLen) {
57
+ if (!o) return;
58
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
59
+ var n = Object.prototype.toString.call(o).slice(8, -1);
60
+ if (n === "Object" && o.constructor) n = o.constructor.name;
61
+ if (n === "Map" || n === "Set") return Array.from(o);
62
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
63
+ }
64
+ function _arrayLikeToArray(arr, len) {
65
+ if (len == null || len > arr.length) len = arr.length;
66
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
67
+ return arr2;
68
+ }
69
+ function _iterableToArrayLimit(r, l) {
70
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
71
+ if (null != t) {
72
+ var e,
73
+ n,
74
+ i,
75
+ u,
76
+ a = [],
77
+ f = !0,
78
+ o = !1;
79
+ try {
80
+ if (i = (t = t.call(r)).next, 0 === l) {
81
+ if (Object(t) !== t) return;
82
+ f = !1;
83
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
84
+ } catch (r) {
85
+ o = !0, n = r;
86
+ } finally {
87
+ try {
88
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
89
+ } finally {
90
+ if (o) throw n;
91
+ }
92
+ }
93
+ return a;
94
+ }
95
+ }
96
+ function _arrayWithHoles(arr) {
97
+ if (Array.isArray(arr)) return arr;
98
+ }
99
+ var _default = exports["default"] = (0, _react.forwardRef)(function (props, ref) {
100
+ var _useContext = (0, _react.useContext)(_Context["default"]),
101
+ wrapElement = _useContext.wrapElement;
102
+ var _useState = (0, _react.useState)(0),
103
+ _useState2 = _slicedToArray(_useState, 2),
104
+ moveX = _useState2[0],
105
+ setMoveX = _useState2[1];
106
+ var _useState3 = (0, _react.useState)(0),
107
+ _useState4 = _slicedToArray(_useState3, 2),
108
+ moveY = _useState4[0],
109
+ setMoveY = _useState4[1];
110
+ var _useState5 = (0, _react.useState)(0),
111
+ _useState6 = _slicedToArray(_useState5, 2),
112
+ sizeWidth = _useState6[0],
113
+ setSizeWidth = _useState6[1];
114
+ var _useState7 = (0, _react.useState)(0),
115
+ _useState8 = _slicedToArray(_useState7, 2),
116
+ sizeHeight = _useState8[0],
117
+ setSizeHeight = _useState8[1];
118
+ var _useState9 = (0, _react.useState)(1),
119
+ _useState10 = _slicedToArray(_useState9, 2),
120
+ ratioX = _useState10[0],
121
+ setRatioX = _useState10[1];
122
+ var _useState11 = (0, _react.useState)(1),
123
+ _useState12 = _slicedToArray(_useState11, 2),
124
+ ratioY = _useState12[0],
125
+ setRatioY = _useState12[1];
126
+ (0, _react.useImperativeHandle)(ref, function () {
127
+ return {
128
+ update: update,
129
+ handleScroll: handleScroll
130
+ };
131
+ });
132
+ function handleScroll() {
133
+ var wrap = wrapElement.current;
134
+ if (!wrap) return;
135
+ var offsetHeight = wrap.offsetHeight - _util.GAP;
136
+ var offsetWidth = wrap.offsetWidth - _util.GAP;
137
+ setMoveY(wrap.scrollTop * 100 / offsetHeight * ratioY);
138
+ setMoveX(wrap.scrollLeft * 100 / offsetWidth * ratioX);
139
+ }
140
+ function update() {
141
+ var wrap = wrapElement.current;
142
+ if (!wrap) return;
143
+ // 滚动窗口的高度
144
+ var offsetHeight = wrap.offsetHeight - _util.GAP;
145
+ var offsetWidth = wrap.offsetWidth - _util.GAP;
146
+ // 滚动条的逻辑高度
147
+ var originalHeight = Math.pow(offsetHeight, 2) / wrap.scrollHeight;
148
+ var originalWidth = Math.pow(offsetWidth, 2) / wrap.scrollWidth;
149
+ // 滚动条的实际高度,因为如果内容太长会导致滚动条非常短,可能难以点击拖拽,所以设置了最小高度
150
+ var height = Math.max(originalHeight, props.minSize);
151
+ var width = Math.max(originalWidth, props.minSize);
152
+ setRatioY(originalHeight / (offsetHeight - originalHeight) / (height / (offsetHeight - height)));
153
+ setRatioX(originalWidth / (offsetWidth - originalWidth) / (width / (offsetWidth - width)));
154
+ setSizeHeight(height + _util.GAP < offsetHeight ? height : 0);
155
+ setSizeWidth(width + _util.GAP < offsetWidth ? width : 0);
156
+ }
157
+ return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_Thumb["default"], {
158
+ always: props.always,
159
+ move: moveX,
160
+ size: sizeWidth,
161
+ ratio: ratioX
162
+ }), _react["default"].createElement(_Thumb["default"], {
163
+ always: props.always,
164
+ move: moveY,
165
+ size: sizeHeight,
166
+ ratio: ratioY,
167
+ vertical: true
168
+ }));
169
+ });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bar.js","sourceRoot":"","sources":["../../src/scroll-bar/Bar.js"],"names":[],"mappings":"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","sourcesContent":["import React, { forwardRef, useContext, useImperativeHandle, useState } from 'react'\nimport Context from './Context'\nimport Thumb from './Thumb'\nimport { GAP } from './util'\n\nexport default forwardRef((props, ref) => {\n const { wrapElement } = useContext(Context)\n\n const [moveX, setMoveX] = useState(0)\n const [moveY, setMoveY] = useState(0)\n const [sizeWidth, setSizeWidth] = useState(0)\n const [sizeHeight, setSizeHeight] = useState(0)\n const [ratioX, setRatioX] = useState(1)\n const [ratioY, setRatioY] = useState(1)\n\n useImperativeHandle(ref, () => ({\n update,\n handleScroll,\n }))\n\n function handleScroll() {\n const wrap = wrapElement.current\n if (!wrap) return\n const offsetHeight = wrap.offsetHeight - GAP\n const offsetWidth = wrap.offsetWidth - GAP\n setMoveY(((wrap.scrollTop * 100) / offsetHeight) * ratioY)\n setMoveX(((wrap.scrollLeft * 100) / offsetWidth) * ratioX)\n }\n\n function update() {\n const wrap = wrapElement.current\n if (!wrap) return\n // 滚动窗口的高度\n const offsetHeight = wrap.offsetHeight - GAP\n const offsetWidth = wrap.offsetWidth - GAP\n // 滚动条的逻辑高度\n const originalHeight = offsetHeight ** 2 / wrap.scrollHeight\n const originalWidth = offsetWidth ** 2 / wrap.scrollWidth\n // 滚动条的实际高度,因为如果内容太长会导致滚动条非常短,可能难以点击拖拽,所以设置了最小高度\n const height = Math.max(originalHeight, props.minSize)\n const width = Math.max(originalWidth, props.minSize)\n\n setRatioY(originalHeight / (offsetHeight - originalHeight) / (height / (offsetHeight - height)))\n setRatioX(originalWidth / (offsetWidth - originalWidth) / (width / (offsetWidth - width)))\n setSizeHeight(height + GAP < offsetHeight ? height : 0)\n setSizeWidth(width + GAP < offsetWidth ? width : 0)\n }\n\n return (\n <>\n <Thumb always={props.always} move={moveX} size={sizeWidth} ratio={ratioX} />\n <Thumb always={props.always} move={moveY} size={sizeHeight} ratio={ratioY} vertical />\n </>\n )\n})\n"]}
@@ -0,0 +1,7 @@
1
+ export default Context;
2
+ declare const Context: React.Context<{
3
+ scrollbarElement: null;
4
+ wrapElement: null;
5
+ }>;
6
+ import React from "react";
7
+ //# sourceMappingURL=Context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../src/scroll-bar/Context.js"],"names":[],"mappings":";AAEA;;;GAGE"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ function _interopRequireDefault(obj) {
9
+ return obj && obj.__esModule ? obj : {
10
+ "default": obj
11
+ };
12
+ }
13
+ var Context = _react["default"].createContext({
14
+ scrollbarElement: null,
15
+ wrapElement: null
16
+ });
17
+ var _default = exports["default"] = Context;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../src/scroll-bar/Context.js"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AAEzB,MAAM,OAAO,GAAG,eAAK,CAAC,aAAa,CAAC;IAClC,gBAAgB,EAAE,IAAI;IACtB,WAAW,EAAE,IAAI;CAClB,CAAC,CAAA;AAEF,kBAAe,OAAO,CAAA","sourcesContent":["import React from 'react'\n\nconst Context = React.createContext({\n scrollbarElement: null,\n wrapElement: null,\n})\n\nexport default Context\n"]}
@@ -0,0 +1,4 @@
1
+ declare var _default: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
2
+ export default _default;
3
+ import React from "react";
4
+ //# sourceMappingURL=ScrollBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollBar.d.ts","sourceRoot":"","sources":["../../src/scroll-bar/ScrollBar.js"],"names":[],"mappings":""}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) {
4
+ "@babel/helpers - typeof";
5
+
6
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
7
+ return typeof o;
8
+ } : function (o) {
9
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
10
+ }, _typeof(o);
11
+ }
12
+ Object.defineProperty(exports, "__esModule", {
13
+ value: true
14
+ });
15
+ exports["default"] = void 0;
16
+ var _classnames = _interopRequireDefault(require("classnames"));
17
+ var _react = _interopRequireWildcard(require("react"));
18
+ var _Bar = _interopRequireDefault(require("./Bar"));
19
+ var _Context = _interopRequireDefault(require("./Context"));
20
+ function _getRequireWildcardCache(e) {
21
+ if ("function" != typeof WeakMap) return null;
22
+ var r = new WeakMap(),
23
+ t = new WeakMap();
24
+ return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
25
+ return e ? t : r;
26
+ })(e);
27
+ }
28
+ function _interopRequireWildcard(e, r) {
29
+ if (!r && e && e.__esModule) return e;
30
+ if (null === e || "object" != _typeof(e) && "function" != typeof e) return {
31
+ "default": e
32
+ };
33
+ var t = _getRequireWildcardCache(r);
34
+ if (t && t.has(e)) return t.get(e);
35
+ var n = {
36
+ __proto__: null
37
+ },
38
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
39
+ for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
40
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
41
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
42
+ }
43
+ return n["default"] = e, t && t.set(e, n), n;
44
+ }
45
+ function _interopRequireDefault(obj) {
46
+ return obj && obj.__esModule ? obj : {
47
+ "default": obj
48
+ };
49
+ }
50
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
51
+ var t = {};
52
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
53
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
54
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
55
+ }
56
+ return t;
57
+ };
58
+ var _default = exports["default"] = (0, _react.forwardRef)(function (_a, ref) {
59
+ var children = _a.children,
60
+ _a$minSize = _a.minSize,
61
+ minSize = _a$minSize === void 0 ? 20 : _a$minSize,
62
+ props = __rest(_a, ["children", "minSize"]);
63
+ var scrollbarElement = (0, _react.useRef)();
64
+ var wrapElement = (0, _react.useRef)();
65
+ wrapElement = ref || wrapElement;
66
+ var resizeRef = (0, _react.useRef)();
67
+ var barRef = (0, _react.useRef)();
68
+ (0, _react.useEffect)(function () {
69
+ var wrapDom = wrapElement.current;
70
+ var resizeDom = resizeRef.current;
71
+ // 监听容器尺寸变化,因为尺寸可以设置类似height:100vh之类样式,高度并不是固定的
72
+ var observer = new ResizeObserver(function () {
73
+ var _a;
74
+ update();
75
+ (_a = barRef.current) === null || _a === void 0 ? void 0 : _a.handleScroll();
76
+ });
77
+ observer.observe(wrapDom);
78
+ observer.observe(resizeDom);
79
+ return function () {
80
+ observer.unobserve(wrapDom);
81
+ observer.unobserve(resizeDom);
82
+ };
83
+ }, []);
84
+ (0, _react.useEffect)(function () {
85
+ var _a;
86
+ if (!props["native"]) {
87
+ update();
88
+ (_a = barRef.current) === null || _a === void 0 ? void 0 : _a.handleScroll();
89
+ }
90
+ }, [props["native"]]);
91
+ function update() {
92
+ var _a;
93
+ (_a = barRef.current) === null || _a === void 0 ? void 0 : _a.update();
94
+ }
95
+ function handleScroll(e) {
96
+ var _a, _b;
97
+ (_a = barRef.current) === null || _a === void 0 ? void 0 : _a.handleScroll();
98
+ (_b = props.onScroll) === null || _b === void 0 ? void 0 : _b.call(props, e);
99
+ }
100
+ var wrapStyle = {
101
+ height: props.height,
102
+ maxHeight: props.maxHeight
103
+ };
104
+ var wrapClassName = (0, _classnames["default"])('tntd-scroll-bar-wrap', {
105
+ 'tntd-scroll-bar-wrap-hidden-default': !props["native"]
106
+ });
107
+ return _react["default"].createElement(_Context["default"].Provider, {
108
+ value: {
109
+ scrollbarElement: scrollbarElement,
110
+ wrapElement: wrapElement
111
+ }
112
+ }, _react["default"].createElement("div", {
113
+ style: props.style,
114
+ className: (0, _classnames["default"])('tntd-scroll-bar', props.className),
115
+ ref: scrollbarElement
116
+ }, _react["default"].createElement("div", {
117
+ style: wrapStyle,
118
+ className: wrapClassName,
119
+ ref: wrapElement,
120
+ onScroll: handleScroll
121
+ }, _react["default"].createElement("div", {
122
+ className: "tntd-scroll-bar-view",
123
+ ref: resizeRef
124
+ }, children)), !props["native"] && _react["default"].createElement(_Bar["default"], {
125
+ ref: barRef,
126
+ always: props.always,
127
+ minSize: minSize
128
+ })));
129
+ });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollBar.js","sourceRoot":"","sources":["../../src/scroll-bar/ScrollBar.js"],"names":[],"mappings":"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","sourcesContent":["import clsx from 'classnames'\nimport React, { forwardRef, useEffect, useRef } from 'react'\nimport Bar from './Bar'\nimport Context from './Context'\n\nexport default forwardRef(({ children, minSize = 20, ...props }, ref) => {\n const scrollbarElement = useRef()\n let wrapElement = useRef()\n wrapElement = ref || wrapElement\n const resizeRef = useRef()\n const barRef = useRef()\n\n useEffect(() => {\n const wrapDom = wrapElement.current\n const resizeDom = resizeRef.current\n // 监听容器尺寸变化,因为尺寸可以设置类似height:100vh之类样式,高度并不是固定的\n const observer = new ResizeObserver(() => {\n update()\n barRef.current?.handleScroll()\n })\n observer.observe(wrapDom)\n observer.observe(resizeDom)\n return () => {\n observer.unobserve(wrapDom)\n observer.unobserve(resizeDom)\n }\n }, [])\n useEffect(() => {\n if (!props.native) {\n update()\n barRef.current?.handleScroll()\n }\n }, [props.native])\n\n function update() {\n barRef.current?.update()\n }\n\n function handleScroll(e) {\n barRef.current?.handleScroll()\n props.onScroll?.(e)\n }\n\n const wrapStyle = { height: props.height, maxHeight: props.maxHeight }\n const wrapClassName = clsx('tntd-scroll-bar-wrap', {\n 'tntd-scroll-bar-wrap-hidden-default': !props.native,\n })\n\n return (\n <Context.Provider value={{ scrollbarElement, wrapElement }}>\n <div\n style={props.style}\n className={clsx('tntd-scroll-bar', props.className)}\n ref={scrollbarElement}\n >\n <div style={wrapStyle} className={wrapClassName} ref={wrapElement} onScroll={handleScroll}>\n <div className=\"tntd-scroll-bar-view\" ref={resizeRef}>\n {children}\n </div>\n </div>\n {!props.native && <Bar ref={barRef} always={props.always} minSize={minSize} />}\n </div>\n </Context.Provider>\n )\n})\n"]}
@@ -0,0 +1,3 @@
1
+ export default function Thumb(props: any): React.JSX.Element;
2
+ import React from "react";
3
+ //# sourceMappingURL=Thumb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Thumb.d.ts","sourceRoot":"","sources":["../../src/scroll-bar/Thumb.js"],"names":[],"mappings":"AAKA,6DA6HC"}
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) {
4
+ "@babel/helpers - typeof";
5
+
6
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
7
+ return typeof o;
8
+ } : function (o) {
9
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
10
+ }, _typeof(o);
11
+ }
12
+ Object.defineProperty(exports, "__esModule", {
13
+ value: true
14
+ });
15
+ exports["default"] = Thumb;
16
+ var _classnames = _interopRequireDefault(require("classnames"));
17
+ var _react = _interopRequireWildcard(require("react"));
18
+ var _Context = _interopRequireDefault(require("./Context"));
19
+ var _util = require("./util");
20
+ function _getRequireWildcardCache(e) {
21
+ if ("function" != typeof WeakMap) return null;
22
+ var r = new WeakMap(),
23
+ t = new WeakMap();
24
+ return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
25
+ return e ? t : r;
26
+ })(e);
27
+ }
28
+ function _interopRequireWildcard(e, r) {
29
+ if (!r && e && e.__esModule) return e;
30
+ if (null === e || "object" != _typeof(e) && "function" != typeof e) return {
31
+ "default": e
32
+ };
33
+ var t = _getRequireWildcardCache(r);
34
+ if (t && t.has(e)) return t.get(e);
35
+ var n = {
36
+ __proto__: null
37
+ },
38
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
39
+ for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
40
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
41
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
42
+ }
43
+ return n["default"] = e, t && t.set(e, n), n;
44
+ }
45
+ function _interopRequireDefault(obj) {
46
+ return obj && obj.__esModule ? obj : {
47
+ "default": obj
48
+ };
49
+ }
50
+ function _slicedToArray(arr, i) {
51
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
52
+ }
53
+ function _nonIterableRest() {
54
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
55
+ }
56
+ function _unsupportedIterableToArray(o, minLen) {
57
+ if (!o) return;
58
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
59
+ var n = Object.prototype.toString.call(o).slice(8, -1);
60
+ if (n === "Object" && o.constructor) n = o.constructor.name;
61
+ if (n === "Map" || n === "Set") return Array.from(o);
62
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
63
+ }
64
+ function _arrayLikeToArray(arr, len) {
65
+ if (len == null || len > arr.length) len = arr.length;
66
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
67
+ return arr2;
68
+ }
69
+ function _iterableToArrayLimit(r, l) {
70
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
71
+ if (null != t) {
72
+ var e,
73
+ n,
74
+ i,
75
+ u,
76
+ a = [],
77
+ f = !0,
78
+ o = !1;
79
+ try {
80
+ if (i = (t = t.call(r)).next, 0 === l) {
81
+ if (Object(t) !== t) return;
82
+ f = !1;
83
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
84
+ } catch (r) {
85
+ o = !0, n = r;
86
+ } finally {
87
+ try {
88
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
89
+ } finally {
90
+ if (o) throw n;
91
+ }
92
+ }
93
+ return a;
94
+ }
95
+ }
96
+ function _arrayWithHoles(arr) {
97
+ if (Array.isArray(arr)) return arr;
98
+ }
99
+ function Thumb(props) {
100
+ var _useContext = (0, _react.useContext)(_Context["default"]),
101
+ scrollbarElement = _useContext.scrollbarElement,
102
+ wrapElement = _useContext.wrapElement;
103
+ var instance = (0, _react.useRef)();
104
+ var thumb = (0, _react.useRef)();
105
+ var _useState = (0, _react.useState)(false),
106
+ _useState2 = _slicedToArray(_useState, 2),
107
+ visible = _useState2[0],
108
+ setVisible = _useState2[1];
109
+ // 当作非响应式变量使用
110
+ var thumbState = (0, _react.useRef)({});
111
+ var cursorDown = (0, _react.useRef)(false);
112
+ var cursorLeave = (0, _react.useRef)(false);
113
+ var originalOnSelectStart = (0, _react.useRef)(document.onselectstart);
114
+ var bar = _util.BAR_MAP[props.vertical ? 'vertical' : 'horizontal'];
115
+ (0, _react.useEffect)(function () {
116
+ var element = scrollbarElement.current;
117
+ element.addEventListener('mousemove', mouseMoveScrollbarHandler);
118
+ element.addEventListener('mouseleave', mouseLeaveScrollbarHandler);
119
+ return function () {
120
+ restoreOnselectstart();
121
+ document.removeEventListener('mouseup', mouseUpDocumentHandler);
122
+ element.removeEventListener('mousemove', mouseMoveScrollbarHandler);
123
+ element.removeEventListener('mouseleave', mouseLeaveScrollbarHandler);
124
+ };
125
+ }, []);
126
+ function mouseMoveScrollbarHandler() {
127
+ cursorLeave.current = false;
128
+ setVisible(true);
129
+ }
130
+ function mouseLeaveScrollbarHandler() {
131
+ cursorLeave.current = true;
132
+ setVisible(cursorDown.current);
133
+ }
134
+ function getOffsetRatio() {
135
+ return Math.pow(instance.current[bar.offset], 2) / wrapElement.current[bar.scrollSize] / props.ratio / thumb.current[bar.offset];
136
+ }
137
+ function clickTrackHandler(e) {
138
+ if (!thumb.current || !instance.current || !wrapElement.current) return;
139
+ // 鼠标点击的坐标距离顶端的距离
140
+ var offset = Math.abs(e.target.getBoundingClientRect()[bar.direction] - e[bar.client]);
141
+ var thumbHalf = thumb.current[bar.offset] / 2;
142
+ var thumbPositionPercentage = (offset - thumbHalf) * 100 * getOffsetRatio() / instance.current[bar.offset];
143
+ // 直接给scrollTop赋值,就会调用bar组件的handleScroll函数
144
+ wrapElement.current[bar.scroll] = thumbPositionPercentage * wrapElement.current[bar.scrollSize] / 100;
145
+ }
146
+ function clickThumbHandler(e) {
147
+ var _a;
148
+ e.stopPropagation();
149
+ if (e.ctrlKey || [1, 2].includes(e.button)) return;
150
+ (_a = window.getSelection()) === null || _a === void 0 ? void 0 : _a.removeAllRanges();
151
+ startDrag(e);
152
+ var el = e.currentTarget;
153
+ if (!el) return;
154
+ thumbState.current[bar.axis] = el[bar.offset] - (e[bar.client] - el.getBoundingClientRect()[bar.direction]);
155
+ }
156
+ function startDrag(e) {
157
+ e.persist();
158
+ cursorDown.current = true;
159
+ document.addEventListener('mousemove', mouseMoveDocumentHandler);
160
+ document.addEventListener('mouseup', mouseUpDocumentHandler);
161
+ originalOnSelectStart.current = document.onselectstart;
162
+ document.onselectstart = function () {
163
+ return false;
164
+ };
165
+ }
166
+ function mouseMoveDocumentHandler(e) {
167
+ if (!instance.current || !thumb.current) return;
168
+ if (cursorDown.current === false) return;
169
+ var prevPage = thumbState.current[bar.axis];
170
+ if (!prevPage) return;
171
+ var offset = (instance.current.getBoundingClientRect()[bar.direction] - e[bar.client]) * -1;
172
+ var thumbClickPosition = thumb.current[bar.offset] - prevPage;
173
+ var thumbPositionPercentage = (offset - thumbClickPosition) * 100 * getOffsetRatio() / instance.current[bar.offset];
174
+ wrapElement.current[bar.scroll] = thumbPositionPercentage * wrapElement.current[bar.scrollSize] / 100;
175
+ }
176
+ function mouseUpDocumentHandler() {
177
+ cursorDown.current = false;
178
+ thumbState.current[bar.axis] = 0;
179
+ document.removeEventListener('mousemove', mouseMoveDocumentHandler);
180
+ document.removeEventListener('mouseup', mouseUpDocumentHandler);
181
+ restoreOnselectstart();
182
+ if (cursorLeave.current) setVisible(false);
183
+ }
184
+ function restoreOnselectstart() {
185
+ if (document.onselectstart !== originalOnSelectStart.current) document.onselectstart = originalOnSelectStart.current;
186
+ }
187
+ var thumbStyle = (0, _util.renderThumbStyle)({
188
+ size: props.size,
189
+ move: props.move,
190
+ bar: bar
191
+ });
192
+ return _react["default"].createElement("div", {
193
+ hidden: !(props.always || visible),
194
+ className: (0, _classnames["default"])('tntd-scroll-bar-bar', bar.key),
195
+ ref: instance,
196
+ onMouseDown: clickTrackHandler
197
+ }, _react["default"].createElement("div", {
198
+ className: "tntd-scroll-bar-thumb",
199
+ style: thumbStyle,
200
+ ref: thumb,
201
+ onMouseDown: clickThumbHandler
202
+ }));
203
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Thumb.js","sourceRoot":"","sources":["../../src/scroll-bar/Thumb.js"],"names":[],"mappings":"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","sourcesContent":["import clsx from 'classnames'\nimport React, { useContext, useEffect, useRef, useState } from 'react'\nimport Context from './Context'\nimport { BAR_MAP, renderThumbStyle } from './util'\n\nexport default function Thumb(props) {\n const { scrollbarElement, wrapElement } = useContext(Context)\n const instance = useRef()\n const thumb = useRef()\n const [visible, setVisible] = useState(false)\n // 当作非响应式变量使用\n const thumbState = useRef({})\n const cursorDown = useRef(false)\n const cursorLeave = useRef(false)\n const originalOnSelectStart = useRef(document.onselectstart)\n const bar = BAR_MAP[props.vertical ? 'vertical' : 'horizontal']\n\n useEffect(() => {\n const element = scrollbarElement.current\n element.addEventListener('mousemove', mouseMoveScrollbarHandler)\n element.addEventListener('mouseleave', mouseLeaveScrollbarHandler)\n return () => {\n restoreOnselectstart()\n document.removeEventListener('mouseup', mouseUpDocumentHandler)\n element.removeEventListener('mousemove', mouseMoveScrollbarHandler)\n element.removeEventListener('mouseleave', mouseLeaveScrollbarHandler)\n }\n }, [])\n\n function mouseMoveScrollbarHandler() {\n cursorLeave.current = false\n setVisible(true)\n }\n\n function mouseLeaveScrollbarHandler() {\n cursorLeave.current = true\n setVisible(cursorDown.current)\n }\n\n function getOffsetRatio() {\n return (\n instance.current[bar.offset] ** 2 /\n wrapElement.current[bar.scrollSize] /\n props.ratio /\n thumb.current[bar.offset]\n )\n }\n\n function clickTrackHandler(e) {\n if (!thumb.current || !instance.current || !wrapElement.current) return\n // 鼠标点击的坐标距离顶端的距离\n const offset = Math.abs(e.target.getBoundingClientRect()[bar.direction] - e[bar.client])\n const thumbHalf = thumb.current[bar.offset] / 2\n const thumbPositionPercentage =\n ((offset - thumbHalf) * 100 * getOffsetRatio()) / instance.current[bar.offset]\n // 直接给scrollTop赋值,就会调用bar组件的handleScroll函数\n wrapElement.current[bar.scroll] =\n (thumbPositionPercentage * wrapElement.current[bar.scrollSize]) / 100\n }\n\n function clickThumbHandler(e) {\n e.stopPropagation()\n if (e.ctrlKey || [1, 2].includes(e.button)) return\n window.getSelection()?.removeAllRanges()\n startDrag(e)\n\n const el = e.currentTarget\n if (!el) return\n thumbState.current[bar.axis] =\n el[bar.offset] - (e[bar.client] - el.getBoundingClientRect()[bar.direction])\n }\n\n function startDrag(e) {\n e.persist()\n cursorDown.current = true\n document.addEventListener('mousemove', mouseMoveDocumentHandler)\n document.addEventListener('mouseup', mouseUpDocumentHandler)\n originalOnSelectStart.current = document.onselectstart\n document.onselectstart = () => false\n }\n\n function mouseMoveDocumentHandler(e) {\n if (!instance.current || !thumb.current) return\n if (cursorDown.current === false) return\n const prevPage = thumbState.current[bar.axis]\n if (!prevPage) return\n\n const offset = (instance.current.getBoundingClientRect()[bar.direction] - e[bar.client]) * -1\n const thumbClickPosition = thumb.current[bar.offset] - prevPage\n const thumbPositionPercentage =\n ((offset - thumbClickPosition) * 100 * getOffsetRatio()) / instance.current[bar.offset]\n wrapElement.current[bar.scroll] =\n (thumbPositionPercentage * wrapElement.current[bar.scrollSize]) / 100\n }\n\n function mouseUpDocumentHandler() {\n cursorDown.current = false\n thumbState.current[bar.axis] = 0\n document.removeEventListener('mousemove', mouseMoveDocumentHandler)\n document.removeEventListener('mouseup', mouseUpDocumentHandler)\n restoreOnselectstart()\n if (cursorLeave.current) setVisible(false)\n }\n\n function restoreOnselectstart() {\n if (document.onselectstart !== originalOnSelectStart.current)\n document.onselectstart = originalOnSelectStart.current\n }\n\n const thumbStyle = renderThumbStyle({\n size: props.size,\n move: props.move,\n bar: bar,\n })\n\n return (\n <div\n hidden={!(props.always || visible)}\n className={clsx('tntd-scroll-bar-bar', bar.key)}\n ref={instance}\n onMouseDown={clickTrackHandler}\n >\n <div\n className=\"tntd-scroll-bar-thumb\"\n style={thumbStyle}\n ref={thumb}\n onMouseDown={clickThumbHandler}\n />\n </div>\n )\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export default ScrollBar;
2
+ import ScrollBar from "./ScrollBar";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scroll-bar/index.js"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _ScrollBar = _interopRequireDefault(require("./ScrollBar"));
8
+ require("./scrollBar.less");
9
+ function _interopRequireDefault(obj) {
10
+ return obj && obj.__esModule ? obj : {
11
+ "default": obj
12
+ };
13
+ }
14
+ var _default = exports["default"] = _ScrollBar["default"];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scroll-bar/index.js"],"names":[],"mappings":";;;;;AAAA,4DAAmC;AACnC,4BAAyB;AAEzB,kBAAe,mBAAS,CAAA","sourcesContent":["import ScrollBar from './ScrollBar'\nimport './scrollBar.less'\n\nexport default ScrollBar\n"]}