react-ui-basics 0.0.219 → 0.0.221

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 (87) hide show
  1. package/Animated.js +1 -0
  2. package/Animated.js.map +1 -1
  3. package/Button.d.ts +24 -0
  4. package/Button.js +45 -75
  5. package/Button.js.map +1 -1
  6. package/DNDContainer.js +10 -5
  7. package/DNDContainer.js.map +1 -1
  8. package/DNDDraggable.d.ts +29 -0
  9. package/DNDDraggable.js +27 -44
  10. package/DNDDraggable.js.map +1 -1
  11. package/DNDDroppable.d.ts +28 -0
  12. package/DNDDroppable.js +32 -46
  13. package/DNDDroppable.js.map +1 -1
  14. package/Dialog.d.ts +29 -0
  15. package/Dialog.js +84 -143
  16. package/Dialog.js.map +1 -1
  17. package/DroppableHorizontalList.js +28 -27
  18. package/DroppableHorizontalList.js.map +1 -1
  19. package/DroppableList.js +29 -34
  20. package/DroppableList.js.map +1 -1
  21. package/Dropzone.js.map +1 -1
  22. package/FilteredList.d.ts +62 -0
  23. package/FilteredList.js +128 -232
  24. package/FilteredList.js.map +1 -1
  25. package/FormUploadProgress.d.ts +19 -0
  26. package/FormUploadProgress.js +14 -39
  27. package/FormUploadProgress.js.map +1 -1
  28. package/Modal.d.ts +31 -0
  29. package/Modal.js +102 -134
  30. package/Modal.js.map +1 -1
  31. package/ReactConstants.d.ts +6 -2
  32. package/ReactConstants.js +1 -1
  33. package/ReactConstants.js.map +1 -1
  34. package/ReactCreateElement.d.ts +3 -0
  35. package/ReactCreateElement.js.map +1 -1
  36. package/ReadyListener.d.ts +34 -0
  37. package/ReadyListener.js +34 -56
  38. package/ReadyListener.js.map +1 -1
  39. package/Scrollable.css +0 -1
  40. package/Scrollable.d.ts +33 -0
  41. package/Scrollable.js +308 -325
  42. package/Scrollable.js.map +1 -1
  43. package/ScrollableTable.d.ts +4 -2
  44. package/ScrollableTable.js +5 -6
  45. package/ScrollableTable.js.map +1 -1
  46. package/Table.js +1 -1
  47. package/Table.js.map +1 -1
  48. package/TextField.d.ts +36 -0
  49. package/TextField.js +73 -134
  50. package/TextField.js.map +1 -1
  51. package/Tools.d.ts +1 -1
  52. package/Tools.js +1 -1
  53. package/Tools.js.map +1 -1
  54. package/_virtual/_rollupPluginBabelHelpers.js +0 -15
  55. package/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  56. package/bundle.css +903 -904
  57. package/package.json +1 -1
  58. package/router/Route.js +1 -0
  59. package/router/Route.js.map +1 -1
  60. package/src/Button.tsx +96 -0
  61. package/src/DNDContainer.tsx +19 -10
  62. package/src/{DNDDraggable.js → DNDDraggable.tsx} +35 -9
  63. package/src/{DNDDroppable.js → DNDDroppable.tsx} +35 -8
  64. package/src/{Dialog.js → Dialog.tsx} +63 -44
  65. package/src/DroppableHorizontalList.js +33 -32
  66. package/src/DroppableList.js +34 -41
  67. package/src/Dropzone.tsx +1 -1
  68. package/src/{FilteredList.js → FilteredList.tsx} +95 -45
  69. package/src/{FormUploadProgress.js → FormUploadProgress.tsx} +13 -22
  70. package/src/{Modal.js → Modal.tsx} +48 -33
  71. package/src/ReactConstants.ts +14 -6
  72. package/src/ReactCreateElement.tsx +3 -0
  73. package/src/ReadyListener.tsx +58 -0
  74. package/src/Scrollable.css +0 -1
  75. package/src/Scrollable.scss +0 -1
  76. package/src/{Scrollable.js → Scrollable.tsx} +72 -60
  77. package/src/ScrollableTable.tsx +7 -7
  78. package/src/Table.tsx +3 -3
  79. package/src/{TextField.js → TextField.tsx} +42 -44
  80. package/src/Tools.ts +2 -2
  81. package/src/store/Store.test.js +1 -1
  82. package/src/store/Store.ts +3 -1
  83. package/store/Store.js +1 -0
  84. package/store/Store.js.map +1 -1
  85. package/src/Button.js +0 -98
  86. package/src/ReactCreateElement.js +0 -3
  87. package/src/ReadyListener.js +0 -48
package/Scrollable.js CHANGED
@@ -1,333 +1,316 @@
1
- import ReactConstants from "./ReactConstants"; import {clientHeight as __clientHeight, clientWidth as __clientWidth, createAccessor as __createAccessor, data as __data, height as __height, left as __left, length as __length, pageX as __pageX, pageY as __pageY, props as __props, scrollLeft as __scrollLeft, scrollTop as __scrollTop, state as __state, style as __style, target as __target, top as __top, value as __value, width as __width} from "./CommonFields"; import {toConsumableArray as __toConsumableArray} from "./_virtual/_rollupPluginBabelHelpers"; import {extends as __extends} from "./_virtual/_rollupPluginBabelHelpers"; import {inherits as __inherits} from "./_virtual/_rollupPluginBabelHelpers"; import './Scrollable.css'; import { inherits as _inherits, createSuper as _createSuper, createClass as _createClass, classCallCheck as _classCallCheck, assertThisInitialized as _assertThisInitialized } from './_virtual/_rollupPluginBabelHelpers.js';
2
- import 'react';
3
- import ReactCreateElement from './ReactCreateElement.js';
4
- import 'prop-types';
1
+ import ReactConstants from "./ReactConstants"; import {clientHeight as __clientHeight, clientWidth as __clientWidth, createAccessor as __createAccessor, data as __data, height as __height, left as __left, length as __length, pageX as __pageX, pageY as __pageY, props as __props, scrollLeft as __scrollLeft, scrollTop as __scrollTop, state as __state, style as __style, target as __target, top as __top, value as __value, width as __width} from "./CommonFields"; import {toConsumableArray as __toConsumableArray} from "./_virtual/_rollupPluginBabelHelpers"; import {extends as __extends} from "./_virtual/_rollupPluginBabelHelpers"; import {inherits as __inherits} from "./_virtual/_rollupPluginBabelHelpers"; import './Scrollable.css'; import { jsxs as jsxRuntime_1, jsx as jsxRuntime_2 } from 'react/jsx-runtime';
5
2
  import { classNames, ref, createRef, clearInterval, clearTimeout, orNoop, addEventListener, WINDOW, preventDefault, setTimeout, setInterval, removeEventListener } from './Tools.js';
6
3
  import { stateGS, componentDidMount, componentWillUnmount, componentDidUpdate, render, PureComponent, propsGetter } from './ReactConstants.js';
7
4
 
8
- var SCROLLBAR_MODE_HIDDEN = 'hidden';
9
- var SCROLLBAR_MODE_AUTO = 'auto';
10
- var SCROLLBAR_RESIZE_DISABLED = 'disabled';
11
- var NATIVE_SCROLL_WIDTH = -1;
12
- var NATIVE_SCROLL_HEIGHT = -1;
13
- var WITHOUT_SCROLL = 'without-scroll';
14
- var WITH_SCROLL = 'with-scroll';
15
- var createFieldGetter = function createFieldGetter(field) {
16
- return function (el) {
17
- return el[field];
18
- };
19
- };
20
- var scrollHeightOf = createFieldGetter('scrollHeight');
21
- var scrollWidthOf = createFieldGetter('scrollWidth');
22
- var offsetHeightOf = createFieldGetter('offsetHeight');
23
- var offsetWidthOf = createFieldGetter('offsetWidth');
24
- var styleOf = createFieldGetter('style');
25
- var scrollBarModeOf = createFieldGetter('scrollBarMode');
26
- var onScroll = createFieldGetter('onScroll');
27
- var horizontalScrollBarModeOf = createFieldGetter('horizontalScrollBarMode');
28
- var Scrollable = function (_PureComponent) {
29
- _inherits(Scrollable, _PureComponent);
30
- var _super = _createSuper(Scrollable);
31
- function Scrollable(properties) {
32
- var _this;
33
- _classCallCheck(this, Scrollable);
34
- _this = _super.call(this, properties);
35
- var that = _assertThisInitialized(_this);
36
- that.state = {};
37
- var props = propsGetter(that);
38
- var status = stateGS(that);
39
- var statusH = stateGS(that);
40
- var viewportRef = createRef();
41
- var scrollbarRef = createRef();
42
- var horizontalScrollbarRef = createRef();
43
- var thumbRef = createRef();
44
- var horizontalThumbRef = createRef();
45
- var resizeInterval;
46
- var initTimeout;
47
- var clear = function clear() {
48
- clearInterval(resizeInterval);
49
- clearTimeout(initTimeout);
50
- };
51
- var init = function init() {
52
- clear();
53
- if (scrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN && horizontalScrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN) {
54
- status(WITHOUT_SCROLL);
55
- statusH(WITHOUT_SCROLL);
56
- return;
57
- }
58
- var viewport = viewportRef();
59
- var scrollbar = scrollbarRef();
60
- var scrollbarH = horizontalScrollbarRef();
61
- var container = that.el;
62
- var thumb = thumbRef();
63
- var thumbH = horizontalThumbRef();
64
- var scrolling = false;
65
- var scrolledToBottom = false;
66
- var scrolledToTop = false;
67
- var adjustedScrollWidth = false;
68
- var lastY = 0;
69
- var lastX = 0;
70
- var ratio = 0;
71
- var ratioH = 0;
72
- var onScrollListener = onScroll(props());
73
- viewport.onscroll = function (e) {
74
- var scrollHeight = scrollHeightOf(viewport);
75
- var offsetHeight = offsetHeightOf(viewport);
76
- var scrollWidth = scrollWidthOf(viewport);
77
- var offsetWidth = offsetWidthOf(viewport);
78
- var scrollbarHeight = offsetHeightOf(scrollbar);
79
- var scrollbarWidth = offsetWidthOf(scrollbarH);
80
- var position = __scrollTop(viewport) / (scrollHeight - offsetHeight);
81
- var positionH = __scrollLeft(viewport) / (scrollWidth - offsetWidth);
82
- if (position > 1) {
83
- viewport.scrollTop = scrollHeight - offsetHeight;
84
- position = 1;
85
- }
86
- styleOf(thumb).top = position * (scrollbarHeight - offsetHeightOf(thumb)) + 'px';
87
- styleOf(thumbH).left = positionH * (scrollbarWidth - offsetWidthOf(thumbH)) + 'px';
88
- if (position >= 0.98) {
89
- !scrolledToBottom && orNoop(props().onScrolledToBottom)();
90
- scrolledToBottom = true;
91
- } else {
92
- scrolledToBottom = false;
93
- }
94
- if (position <= 0.02) {
95
- !scrolledToTop && orNoop(props().onScrolledToTop)();
96
- scrolledToTop = true;
97
- } else {
98
- scrolledToTop = false;
99
- }
100
- onScrollListener && onScrollListener(e);
101
- };
102
- var reset = function reset() {
103
- removeEventListener(WINDOW, 'mouseup', reset);
104
- removeEventListener(WINDOW, 'mousemove', moveListener);
105
- __style(viewport).scrollBehavior = '';
106
- scrolling = false;
107
- };
108
- var moveListener = function moveListener(e) {
109
- if (!scrolling) return;
110
- if (scrolling === 'v') {
111
- viewport.scrollTop += (e.clientY - lastY) * ratio;
112
- lastY = e.clientY;
113
- } else if (scrolling === 'h') {
114
- viewport.scrollLeft += (e.clientX - lastX) * ratioH;
115
- lastX = e.clientX;
116
- }
117
- };
118
- thumb.onmousedown = function (e) {
119
- lastY = e.clientY;
120
- scrolling = 'v';
121
- ratio = scrollHeightOf(viewport) / offsetHeightOf(viewport);
122
- __style(viewport).scrollBehavior = 'unset';
123
- addEventListener(WINDOW, 'mouseup', reset);
124
- addEventListener(WINDOW, 'mousemove', moveListener);
125
- };
126
- thumb.ondragstart = preventDefault;
127
- thumb.onmouseup = reset;
128
- thumbH.onmousedown = function (e) {
129
- lastX = e.clientX;
130
- scrolling = 'h';
131
- ratioH = scrollWidthOf(viewport) / offsetWidthOf(viewport);
132
- __style(viewport).scrollBehavior = 'unset';
133
- addEventListener(WINDOW, 'mouseup', reset);
134
- addEventListener(WINDOW, 'mousemove', moveListener);
135
- };
136
- thumbH.ondragstart = preventDefault;
137
- thumbH.onmouseup = reset;
138
- scrollbar.onclick = function (e) {
139
- if (__target(e) === scrollbar) {
140
- var thumbPosition = parseInt(__top(styleOf(thumb)));
141
- viewport.scrollTop += offsetHeightOf(viewport) * 0.9 * (e.offsetY < thumbPosition ? -1 : 1);
142
- }
143
- };
144
- scrollbarH.onclick = function (e) {
145
- if (__target(e) === scrollbarH) {
146
- var thumbPosition = parseInt(__left(styleOf(thumbH)));
147
- viewport.scrollLeft += offsetWidthOf(viewport) * 0.9 * (e.offsetX < thumbPosition ? -1 : 1);
148
- }
149
- };
150
- var adjustScrollWidth = function adjustScrollWidth() {
151
- if (NATIVE_SCROLL_WIDTH < 0) {
152
- NATIVE_SCROLL_WIDTH = viewport.offsetWidth - __clientWidth(viewport);
153
- if (NATIVE_SCROLL_WIDTH === 0 && scrollHeightOf(viewport) !== offsetHeightOf(viewport)) {
154
- NATIVE_SCROLL_WIDTH = -1;
155
- }
156
- }
157
- if (NATIVE_SCROLL_HEIGHT < 0) {
158
- NATIVE_SCROLL_HEIGHT = viewport.offsetHeight - __clientHeight(viewport);
159
- if (NATIVE_SCROLL_HEIGHT === 0 && scrollWidthOf(viewport) !== offsetWidthOf(viewport)) {
160
- NATIVE_SCROLL_HEIGHT = -1;
161
- }
162
- }
163
- if (!adjustedScrollWidth) {
164
- if (NATIVE_SCROLL_WIDTH >= 0 && status() !== WITHOUT_SCROLL) {
165
- styleOf(viewport).paddingRight = NATIVE_SCROLL_WIDTH + __clientWidth(scrollbar) + 'px';
166
- styleOf(viewport).marginRight = -NATIVE_SCROLL_WIDTH - __clientWidth(scrollbar) + 'px';
167
- }
168
- if (NATIVE_SCROLL_HEIGHT >= 0 && statusH() !== WITHOUT_SCROLL) {
169
- styleOf(viewport).paddingBottom = NATIVE_SCROLL_HEIGHT + __clientHeight(scrollbarH) + 'px';
170
- styleOf(viewport).marginBottom = -NATIVE_SCROLL_HEIGHT - __clientHeight(scrollbarH) + 'px';
171
- }
172
- adjustedScrollWidth = true;
173
- }
174
- };
175
- adjustScrollWidth();
176
- var showScrollbar = function showScrollbar(scrollbar, viewport, adjustScrollWidth) {
177
- styleOf(scrollbar).visibility = 'inherit';
178
- styleOf(scrollbar).bottom = '0';
179
- styleOf(viewport).overflowY = '';
180
- adjustScrollWidth();
181
- status() !== WITH_SCROLL && status(WITH_SCROLL);
182
- };
183
- var hideScrollbar = function hideScrollbar(scrollbar, viewport) {
184
- styleOf(scrollbar).visibility = 'hidden';
185
- styleOf(viewport).overflowY = 'inherit';
186
- styleOf(viewport).paddingRight = '0';
187
- styleOf(viewport).marginRight = '0';
188
- status() !== WITHOUT_SCROLL && status(WITHOUT_SCROLL);
189
- };
190
- var showHorizontalScrollbar = function showHorizontalScrollbar(scrollbar, viewport, adjustScrollWidth) {
191
- styleOf(scrollbar).visibility = 'inherit';
192
- styleOf(scrollbar).right = '0';
193
- styleOf(viewport).overflowX = '';
194
- adjustScrollWidth();
195
- statusH() !== WITH_SCROLL && statusH(WITH_SCROLL);
196
- };
197
- var hideHorizontalScrollbar = function hideHorizontalScrollbar(scrollbar, viewport) {
198
- styleOf(scrollbar).visibility = 'hidden';
199
- styleOf(viewport).overflowX = 'inherit';
200
- styleOf(viewport).paddingBottom = '0';
201
- styleOf(viewport).marginBottom = '0';
202
- statusH() !== WITHOUT_SCROLL && statusH(WITHOUT_SCROLL);
203
- };
204
- var updateVerticalScrollbar = function updateVerticalScrollbar() {
205
- var scrollHeight = scrollHeightOf(viewport);
206
- var scrollbarHeight = offsetHeightOf(scrollbar);
207
- var containerHeight = offsetHeightOf(container);
208
- !adjustedScrollWidth && adjustScrollWidth();
209
- var newRatio = scrollHeight / scrollbarHeight;
210
- if (!containerHeight || ratio === newRatio && Number.isFinite(newRatio) || Number.isNaN(newRatio)) return;
211
- var offsetHeight = offsetHeightOf(viewport);
212
- var horizontalScrollBarOffset = statusH() !== WITHOUT_SCROLL ? __clientHeight(scrollbarH) + Math.max(NATIVE_SCROLL_HEIGHT, 0) : 0;
213
- var containerOffsetHeight = containerHeight + horizontalScrollBarOffset;
214
- if (containerOffsetHeight > scrollHeight && status() === WITHOUT_SCROLL) return;
215
- if (props().autoScrollTop && scrollHeight - offsetHeight - __scrollTop(viewport) <= 20 && newRatio < ratio && Number.isFinite(newRatio) && Number.isFinite(ratio)) {
216
- viewport.scrollTop = 0;
217
- }
218
- ratio = newRatio;
219
- if (newRatio > 1.02) styleOf(thumb).height = scrollbarHeight / newRatio + 'px';
220
- styleOf(container).height = scrollHeight - horizontalScrollBarOffset + 'px';
221
- containerOffsetHeight = containerHeight + horizontalScrollBarOffset;
222
- if (scrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN) {
223
- if (status() !== WITHOUT_SCROLL) hideScrollbar(scrollbar, viewport);
224
- return;
225
- }
226
- if (containerOffsetHeight <= scrollHeight) {
227
- adjustedScrollWidth = false;
228
- showScrollbar(scrollbar, viewport, adjustScrollWidth);
229
- } else {
230
- hideScrollbar(scrollbar, viewport);
231
- }
232
- scrolledToBottom = false;
233
- scrolledToTop = false;
234
- var position = __scrollTop(viewport) / (scrollHeight - offsetHeight);
235
- styleOf(thumb).top = position * (scrollbarHeight - offsetHeightOf(thumb)) + 'px';
236
- };
237
- var updateHorizontalScrollbar = function updateHorizontalScrollbar() {
238
- var scrollWidth = scrollWidthOf(viewport);
239
- var scrollbarWidth = offsetWidthOf(scrollbarH);
240
- var containerWidth = offsetWidthOf(container);
241
- !adjustedScrollWidth && adjustScrollWidth();
242
- var newRatio = scrollWidth / scrollbarWidth;
243
- if (!containerWidth || ratioH === newRatio && Number.isFinite(newRatio) || Number.isNaN(newRatio)) return;
244
- var offsetWidth = offsetWidthOf(viewport);
245
- var verticalScrollBarOffset = status() !== WITHOUT_SCROLL ? __clientWidth(scrollbar) + Math.max(NATIVE_SCROLL_WIDTH, 0) : 0;
246
- var containerOffsetWidth = containerWidth + verticalScrollBarOffset;
247
- if (containerOffsetWidth > scrollWidth && statusH() === WITHOUT_SCROLL) return;
248
- ratioH = newRatio;
249
- if (newRatio > 1.02) styleOf(thumbH).width = scrollbarWidth / newRatio + 'px';
250
- if (horizontalScrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN) {
251
- if (statusH() !== WITHOUT_SCROLL) hideHorizontalScrollbar(scrollbarH, viewport);
252
- return;
253
- }
254
- styleOf(container).width = scrollWidth - verticalScrollBarOffset + 'px';
255
- containerOffsetWidth = containerWidth + verticalScrollBarOffset;
256
- if (containerOffsetWidth <= scrollWidth) {
257
- adjustedScrollWidth = false;
258
- showHorizontalScrollbar(scrollbarH, viewport, adjustScrollWidth);
259
- } else {
260
- hideHorizontalScrollbar(scrollbarH, viewport);
261
- }
262
- var position = __scrollLeft(viewport) / (scrollWidth - offsetWidth);
263
- styleOf(thumbH).left = position * (scrollbarWidth - offsetWidthOf(thumbH)) + 'px';
264
- };
265
- var update;
266
- var sbm = scrollBarModeOf(props());
267
- var hsbm = horizontalScrollBarModeOf(props());
268
- if (sbm !== SCROLLBAR_RESIZE_DISABLED && !hsbm === SCROLLBAR_RESIZE_DISABLED) {
269
- update = function update() {
270
- updateVerticalScrollbar();
271
- updateHorizontalScrollbar();
5
+ const SCROLLBAR_MODE_HIDDEN = 'hidden';
6
+ const SCROLLBAR_MODE_AUTO = 'auto';
7
+ const SCROLLBAR_RESIZE_DISABLED = 'disabled';
8
+ let NATIVE_SCROLL_WIDTH = -1;
9
+ let NATIVE_SCROLL_HEIGHT = -1;
10
+ const WITHOUT_SCROLL = 'without-scroll';
11
+ const WITH_SCROLL = 'with-scroll';
12
+ const createFieldGetter = field => el => el[field];
13
+ const scrollHeightOf = createFieldGetter('scrollHeight');
14
+ const scrollWidthOf = createFieldGetter('scrollWidth');
15
+ const offsetHeightOf = createFieldGetter('offsetHeight');
16
+ const offsetWidthOf = createFieldGetter('offsetWidth');
17
+ const styleOf = createFieldGetter('style');
18
+ const scrollBarModeOf = createFieldGetter('scrollBarMode');
19
+ const onScroll = createFieldGetter('onScroll');
20
+ const horizontalScrollBarModeOf = createFieldGetter('horizontalScrollBarMode');
21
+ class AbstractScrollable extends PureComponent {
22
+ }
23
+ class Scrollable extends AbstractScrollable {
24
+ constructor(properties) {
25
+ super(properties);
26
+ const that = this;
27
+ that.state = {};
28
+ const props = propsGetter(that);
29
+ const status = stateGS(that);
30
+ const statusH = stateGS(that);
31
+ const viewportRef = createRef();
32
+ const scrollbarRef = createRef();
33
+ const horizontalScrollbarRef = createRef();
34
+ const thumbRef = createRef();
35
+ const horizontalThumbRef = createRef();
36
+ let resizeInterval;
37
+ let initTimeout;
38
+ const clear = () => {
39
+ clearInterval(resizeInterval);
40
+ clearTimeout(initTimeout);
41
+ };
42
+ const init = () => {
43
+ clear();
44
+ if (scrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN && horizontalScrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN) {
45
+ status(WITHOUT_SCROLL);
46
+ statusH(WITHOUT_SCROLL);
47
+ return;
48
+ }
49
+ const viewport = viewportRef();
50
+ const scrollbar = scrollbarRef();
51
+ const scrollbarH = horizontalScrollbarRef();
52
+ const container = that.el;
53
+ const thumb = thumbRef();
54
+ const thumbH = horizontalThumbRef();
55
+ let scrolling = '';
56
+ let scrolledToBottom = false;
57
+ let scrolledToTop = false;
58
+ let adjustedScrollWidth = false;
59
+ let lastY = 0;
60
+ let lastX = 0;
61
+ let ratio = 0;
62
+ let ratioH = 0;
63
+ const onScrollListener = onScroll(props());
64
+ viewport.onscroll = (e) => {
65
+ const scrollHeight = scrollHeightOf(viewport);
66
+ const offsetHeight = offsetHeightOf(viewport);
67
+ const scrollWidth = scrollWidthOf(viewport);
68
+ const offsetWidth = offsetWidthOf(viewport);
69
+ const scrollbarHeight = offsetHeightOf(scrollbar);
70
+ const scrollbarWidth = offsetWidthOf(scrollbarH);
71
+ let position = __scrollTop(viewport) / (scrollHeight - offsetHeight);
72
+ const positionH = __scrollLeft(viewport) / (scrollWidth - offsetWidth);
73
+ if (position > 1) {
74
+ viewport.scrollTop = scrollHeight - offsetHeight;
75
+ position = 1;
76
+ }
77
+ styleOf(thumb).top = (position * (scrollbarHeight - offsetHeightOf(thumb))) + 'px';
78
+ styleOf(thumbH).left = (positionH * (scrollbarWidth - offsetWidthOf(thumbH))) + 'px';
79
+ if (position >= 0.98) {
80
+ !scrolledToBottom && orNoop(props().onScrolledToBottom)();
81
+ scrolledToBottom = true;
82
+ }
83
+ else {
84
+ scrolledToBottom = false;
85
+ }
86
+ if (position <= 0.02) {
87
+ !scrolledToTop && orNoop(props().onScrolledToTop)();
88
+ scrolledToTop = true;
89
+ }
90
+ else {
91
+ scrolledToTop = false;
92
+ }
93
+ onScrollListener && onScrollListener(e);
94
+ };
95
+ const reset = () => {
96
+ removeEventListener(WINDOW, 'mouseup', reset);
97
+ removeEventListener(WINDOW, 'mousemove', moveListener);
98
+ __style(viewport).scrollBehavior = '';
99
+ scrolling = '';
100
+ };
101
+ const moveListener = (e) => {
102
+ if (!scrolling)
103
+ return;
104
+ if (scrolling === 'v') {
105
+ viewport.scrollTop += (e.clientY - lastY) * ratio;
106
+ lastY = e.clientY;
107
+ }
108
+ else if (scrolling === 'h') {
109
+ viewport.scrollLeft += (e.clientX - lastX) * ratioH;
110
+ lastX = e.clientX;
111
+ }
112
+ };
113
+ thumb.onmousedown = (e) => {
114
+ lastY = e.clientY;
115
+ scrolling = 'v';
116
+ ratio = scrollHeightOf(viewport) / offsetHeightOf(viewport);
117
+ __style(viewport).scrollBehavior = 'unset';
118
+ addEventListener(WINDOW, 'mouseup', reset);
119
+ addEventListener(WINDOW, 'mousemove', moveListener);
120
+ };
121
+ thumb.ondragstart = preventDefault;
122
+ thumb.onmouseup = reset;
123
+ thumbH.onmousedown = (e) => {
124
+ lastX = e.clientX;
125
+ scrolling = 'h';
126
+ ratioH = scrollWidthOf(viewport) / offsetWidthOf(viewport);
127
+ __style(viewport).scrollBehavior = 'unset';
128
+ addEventListener(WINDOW, 'mouseup', reset);
129
+ addEventListener(WINDOW, 'mousemove', moveListener);
130
+ };
131
+ thumbH.ondragstart = preventDefault;
132
+ thumbH.onmouseup = reset;
133
+ scrollbar.onclick = (e) => {
134
+ if (__target(e) === scrollbar) {
135
+ let thumbPosition = parseInt(__top(styleOf(thumb)));
136
+ viewport.scrollTop += offsetHeightOf(viewport) * 0.9 * (e.offsetY < thumbPosition ? -1 : 1);
137
+ }
138
+ };
139
+ scrollbarH.onclick = (e) => {
140
+ if (__target(e) === scrollbarH) {
141
+ let thumbPosition = parseInt(__left(styleOf(thumbH)));
142
+ viewport.scrollLeft += offsetWidthOf(viewport) * 0.9 * (e.offsetX < thumbPosition ? -1 : 1);
143
+ }
144
+ };
145
+ const adjustScrollWidth = () => {
146
+ if (NATIVE_SCROLL_WIDTH < 0) {
147
+ NATIVE_SCROLL_WIDTH = viewport.offsetWidth - __clientWidth(viewport);
148
+ if (NATIVE_SCROLL_WIDTH === 0 && scrollHeightOf(viewport) !== offsetHeightOf(viewport)) {
149
+ NATIVE_SCROLL_WIDTH = -1;
150
+ }
151
+ }
152
+ if (NATIVE_SCROLL_HEIGHT < 0) {
153
+ NATIVE_SCROLL_HEIGHT = viewport.offsetHeight - __clientHeight(viewport);
154
+ if (NATIVE_SCROLL_HEIGHT === 0 && scrollWidthOf(viewport) !== offsetWidthOf(viewport)) {
155
+ NATIVE_SCROLL_HEIGHT = -1;
156
+ }
157
+ }
158
+ if (!adjustedScrollWidth) {
159
+ if (NATIVE_SCROLL_WIDTH >= 0 && status() !== WITHOUT_SCROLL) {
160
+ styleOf(viewport).paddingRight = (NATIVE_SCROLL_WIDTH) + __clientWidth(scrollbar) + 'px';
161
+ styleOf(viewport).marginRight = -(NATIVE_SCROLL_WIDTH) - __clientWidth(scrollbar) + 'px';
162
+ }
163
+ if (NATIVE_SCROLL_HEIGHT >= 0 && statusH() !== WITHOUT_SCROLL) {
164
+ styleOf(viewport).paddingBottom = (NATIVE_SCROLL_HEIGHT) + __clientHeight(scrollbarH) + 'px';
165
+ styleOf(viewport).marginBottom = -(NATIVE_SCROLL_HEIGHT) - __clientHeight(scrollbarH) + 'px';
166
+ }
167
+ adjustedScrollWidth = true;
168
+ }
169
+ };
170
+ adjustScrollWidth();
171
+ const showScrollbar = (scrollbar, viewport, adjustScrollWidth) => {
172
+ styleOf(scrollbar).visibility = 'inherit';
173
+ styleOf(scrollbar).bottom = '0'; //enable scrollbar
174
+ styleOf(viewport).overflowY = '';
175
+ adjustScrollWidth();
176
+ status() !== WITH_SCROLL && status(WITH_SCROLL);
177
+ };
178
+ const hideScrollbar = (scrollbar, viewport) => {
179
+ styleOf(scrollbar).visibility = 'hidden'; //disable scrollbar
180
+ styleOf(viewport).overflowY = 'inherit';
181
+ styleOf(viewport).paddingRight = '0';
182
+ styleOf(viewport).marginRight = '0';
183
+ status() !== WITHOUT_SCROLL && status(WITHOUT_SCROLL);
184
+ };
185
+ const showHorizontalScrollbar = (scrollbar, viewport, adjustScrollWidth) => {
186
+ styleOf(scrollbar).visibility = 'inherit';
187
+ styleOf(scrollbar).right = '0'; //enable scrollbar
188
+ styleOf(viewport).overflowX = '';
189
+ adjustScrollWidth();
190
+ statusH() !== WITH_SCROLL && statusH(WITH_SCROLL);
191
+ };
192
+ const hideHorizontalScrollbar = (scrollbar, viewport) => {
193
+ styleOf(scrollbar).visibility = 'hidden'; //disable scrollbar
194
+ styleOf(viewport).overflowX = 'inherit';
195
+ styleOf(viewport).paddingBottom = '0';
196
+ styleOf(viewport).marginBottom = '0';
197
+ statusH() !== WITHOUT_SCROLL && statusH(WITHOUT_SCROLL);
198
+ };
199
+ const updateVerticalScrollbar = () => {
200
+ const scrollHeight = scrollHeightOf(viewport);
201
+ const scrollbarHeight = offsetHeightOf(scrollbar);
202
+ const containerHeight = offsetHeightOf(container);
203
+ !adjustedScrollWidth && adjustScrollWidth();
204
+ const newRatio = scrollHeight / scrollbarHeight;
205
+ if (!containerHeight || (ratio === newRatio && Number.isFinite(newRatio)) || Number.isNaN(newRatio))
206
+ return;
207
+ const offsetHeight = offsetHeightOf(viewport);
208
+ const horizontalScrollBarOffset = statusH() !== WITHOUT_SCROLL ? __clientHeight(scrollbarH) + Math.max(NATIVE_SCROLL_HEIGHT, 0) : 0;
209
+ let containerOffsetHeight = containerHeight + horizontalScrollBarOffset;
210
+ if (containerOffsetHeight === scrollHeight && status() === WITHOUT_SCROLL)
211
+ return;
212
+ if (props().autoScrollTop && scrollHeight - offsetHeight - __scrollTop(viewport) <= 20 && newRatio < ratio && Number.isFinite(newRatio) && Number.isFinite(ratio)) {
213
+ viewport.scrollTop = 0; // scroll to top if scrollbar gets smaller
214
+ }
215
+ ratio = newRatio;
216
+ if (newRatio > 1.02)
217
+ styleOf(thumb).height = (scrollbarHeight / newRatio) + 'px';
218
+ styleOf(container).height = scrollHeight - horizontalScrollBarOffset + 'px';
219
+ containerOffsetHeight = containerHeight + horizontalScrollBarOffset;
220
+ if (scrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN) {
221
+ if (status() !== WITHOUT_SCROLL)
222
+ hideScrollbar(scrollbar, viewport);
223
+ return;
224
+ }
225
+ if (containerOffsetHeight < scrollHeight) {
226
+ adjustedScrollWidth = false;
227
+ showScrollbar(scrollbar, viewport, adjustScrollWidth);
228
+ }
229
+ else {
230
+ hideScrollbar(scrollbar, viewport);
231
+ }
232
+ scrolledToBottom = false;
233
+ scrolledToTop = false;
234
+ const position = __scrollTop(viewport) / (scrollHeight - offsetHeight);
235
+ styleOf(thumb).top = (position * (scrollbarHeight - offsetHeightOf(thumb))) + 'px';
236
+ };
237
+ const updateHorizontalScrollbar = () => {
238
+ const scrollWidth = scrollWidthOf(viewport);
239
+ const scrollbarWidth = offsetWidthOf(scrollbarH);
240
+ const containerWidth = offsetWidthOf(container);
241
+ !adjustedScrollWidth && adjustScrollWidth();
242
+ const newRatio = scrollWidth / scrollbarWidth;
243
+ if (!containerWidth || (ratioH === newRatio && Number.isFinite(newRatio)) || Number.isNaN(newRatio))
244
+ return;
245
+ const offsetWidth = offsetWidthOf(viewport);
246
+ const verticalScrollBarOffset = status() !== WITHOUT_SCROLL ? __clientWidth(scrollbar) + Math.max(NATIVE_SCROLL_WIDTH, 0) : 0;
247
+ let containerOffsetWidth = containerWidth + verticalScrollBarOffset;
248
+ if (containerOffsetWidth === scrollWidth && statusH() === WITHOUT_SCROLL)
249
+ return;
250
+ ratioH = newRatio;
251
+ if (newRatio > 1.02)
252
+ styleOf(thumbH).width = (scrollbarWidth / newRatio) + 'px';
253
+ if (horizontalScrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN) {
254
+ if (statusH() !== WITHOUT_SCROLL)
255
+ hideHorizontalScrollbar(scrollbarH, viewport);
256
+ return;
257
+ }
258
+ styleOf(container).width = (scrollWidth - verticalScrollBarOffset) + 'px';
259
+ containerOffsetWidth = containerWidth + verticalScrollBarOffset;
260
+ if (containerOffsetWidth < scrollWidth) {
261
+ adjustedScrollWidth = false;
262
+ showHorizontalScrollbar(scrollbarH, viewport, adjustScrollWidth);
263
+ }
264
+ else {
265
+ hideHorizontalScrollbar(scrollbarH, viewport);
266
+ }
267
+ const position = __scrollLeft(viewport) / (scrollWidth - offsetWidth);
268
+ styleOf(thumbH).left = (position * (scrollbarWidth - offsetWidthOf(thumbH))) + 'px';
269
+ };
270
+ let update;
271
+ let sbm = scrollBarModeOf(props());
272
+ let hsbm = horizontalScrollBarModeOf(props());
273
+ if (sbm !== SCROLLBAR_RESIZE_DISABLED && hsbm !== SCROLLBAR_RESIZE_DISABLED) {
274
+ update = () => {
275
+ updateVerticalScrollbar();
276
+ updateHorizontalScrollbar();
277
+ };
278
+ }
279
+ else if (sbm !== SCROLLBAR_RESIZE_DISABLED)
280
+ update = updateVerticalScrollbar;
281
+ else if (hsbm !== SCROLLBAR_RESIZE_DISABLED)
282
+ update = updateHorizontalScrollbar;
283
+ if (update) {
284
+ initTimeout = setTimeout(() => {
285
+ resizeInterval = setInterval(update, 50);
286
+ }, 200);
287
+ }
288
+ };
289
+ that[ReactConstants[0]] = init;
290
+ that[ReactConstants[1]] = clear;
291
+ that[ReactConstants[2]] = (prevProps) => {
292
+ if (scrollBarModeOf(props()) !== scrollBarModeOf(prevProps))
293
+ init();
294
+ else if (onScroll(props()) !== onScroll(prevProps))
295
+ init();
296
+ };
297
+ that.setScroll = (y) => {
298
+ viewportRef().scrollTop = y;
299
+ };
300
+ that.getScroll = () => __scrollTop(viewportRef());
301
+ that.getScrollHeight = () => scrollHeightOf(viewportRef());
302
+ that.getHeight = () => that.el.clientHeight;
303
+ that[ReactConstants[3]] = () => {
304
+ const _props = props();
305
+ const { className, children } = _props;
306
+ return (jsxRuntime_1("div", __extends({ [ReactConstants[5]]: classNames('Scrollable', className, status() || WITH_SCROLL, statusH() + '-horizontal'), style: styleOf(_props), ref: ref('el', this) }, { [ReactConstants[4]]: [jsxRuntime_2("div", __extends({ [ReactConstants[5]]: "viewport", ref: viewportRef }, { [ReactConstants[4]]: children })), jsxRuntime_2("div", __extends({ [ReactConstants[5]]: classNames('scrollbar', scrollBarModeOf(_props) || SCROLLBAR_MODE_AUTO), ref: scrollbarRef }, { [ReactConstants[4]]: jsxRuntime_2("div", { [ReactConstants[5]]: "thumb", ref: thumbRef }) })), jsxRuntime_2("div", __extends({ [ReactConstants[5]]: classNames('scrollbar horizontal', horizontalScrollBarModeOf(_props)), ref: horizontalScrollbarRef }, { [ReactConstants[4]]: jsxRuntime_2("div", { [ReactConstants[5]]: "thumb", ref: horizontalThumbRef }) }))] })));
272
307
  };
273
- } else if (sbm !== SCROLLBAR_RESIZE_DISABLED) update = updateVerticalScrollbar;else if (hsbm !== SCROLLBAR_RESIZE_DISABLED) update = updateHorizontalScrollbar;
274
- if (update) {
275
- initTimeout = setTimeout(function () {
276
- resizeInterval = setInterval(update, 50);
277
- }, 200);
278
- }
279
- };
280
- that[ReactConstants[0]] = init;
281
- that[ReactConstants[1]] = clear;
282
- that[ReactConstants[2]] = function (prevProps) {
283
- if (scrollBarModeOf(props()) !== scrollBarModeOf(prevProps)) init();else if (onScroll(props()) !== onScroll(prevProps)) init();
284
- };
285
- that.setScroll = function (y) {
286
- viewportRef().scrollTop = y;
287
- };
288
- that.getScroll = function () {
289
- return __scrollTop(viewportRef());
290
- };
291
- that.getScrollHeight = function () {
292
- return scrollHeightOf(viewportRef());
293
- };
294
- that.getHeight = function () {
295
- return that.el.clientHeight;
296
- };
297
- that[ReactConstants[3]] = function () {
298
- var _props = props();
299
- var className = _props[ReactConstants[5]],
300
- children = _props[ReactConstants[4]];
301
- return ReactCreateElement("div", {
302
- [ReactConstants[5]]: classNames('Scrollable', className, status() || WITH_SCROLL, statusH() + '-horizontal'),
303
- style: styleOf(_props),
304
- ref: ref('el', _assertThisInitialized(_this))
305
- }, ReactCreateElement("div", {
306
- [ReactConstants[5]]: "viewport",
307
- ref: viewportRef
308
- }, children), ReactCreateElement("div", {
309
- [ReactConstants[5]]: classNames('scrollbar', scrollBarModeOf(_props) || SCROLLBAR_MODE_AUTO),
310
- ref: scrollbarRef
311
- }, ReactCreateElement("div", {
312
- [ReactConstants[5]]: "thumb",
313
- ref: thumbRef
314
- })), ReactCreateElement("div", {
315
- [ReactConstants[5]]: classNames('scrollbar horizontal', horizontalScrollBarModeOf(_props)),
316
- ref: horizontalScrollbarRef
317
- }, ReactCreateElement("div", {
318
- [ReactConstants[5]]: "thumb",
319
- ref: horizontalThumbRef
320
- })));
321
- };
322
- return _this;
323
- }
324
- return _createClass(Scrollable);
325
- }(PureComponent);
326
- var Scrollable$1 = Scrollable;
308
+ }
309
+ }
327
310
  Scrollable.defaultProps = {
328
- autoScrollTop: true,
329
- horizontalScrollBarMode: SCROLLBAR_MODE_HIDDEN
311
+ autoScrollTop: true,
312
+ horizontalScrollBarMode: SCROLLBAR_MODE_HIDDEN
330
313
  };
331
314
 
332
- export { SCROLLBAR_MODE_AUTO, SCROLLBAR_MODE_HIDDEN, SCROLLBAR_RESIZE_DISABLED, Scrollable$1 as default };
315
+ export { SCROLLBAR_MODE_AUTO, SCROLLBAR_MODE_HIDDEN, SCROLLBAR_RESIZE_DISABLED, Scrollable as default };
333
316
  //# sourceMappingURL=Scrollable.js.map