react-ui-basics 0.0.208 → 0.0.209
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Scrollable.js +13 -6
- package/Scrollable.js.map +1 -1
- package/bundle.css +752 -752
- package/package.json +1 -1
- package/src/Scrollable.js +16 -5
package/Scrollable.js
CHANGED
|
@@ -8,6 +8,7 @@ import { stateGS, componentDidMount, componentWillUnmount, componentDidUpdate, r
|
|
|
8
8
|
var SCROLLBAR_MODE_HIDDEN = 'hidden';
|
|
9
9
|
var SCROLLBAR_MODE_VISIBLE = 'visible';
|
|
10
10
|
var SCROLLBAR_MODE_AUTO = 'auto';
|
|
11
|
+
var SCROLLBAR_RESIZE_DISABLED = 'disabled';
|
|
11
12
|
var NATIVE_SCROLL_WIDTH = -1;
|
|
12
13
|
var NATIVE_SCROLL_HEIGHT = -1;
|
|
13
14
|
var WITHOUT_SCROLL = 'without-scroll';
|
|
@@ -260,11 +261,17 @@ var Scrollable = function (_PureComponent) {
|
|
|
260
261
|
var position = __scrollLeft(viewport) / (scrollWidth - offsetWidth);
|
|
261
262
|
styleOf(thumbH).left = position * (scrollbarWidth - offsetWidthOf(thumbH)) + 'px';
|
|
262
263
|
};
|
|
263
|
-
|
|
264
|
-
|
|
264
|
+
var update;
|
|
265
|
+
var sbm = scrollBarModeOf(props());
|
|
266
|
+
var hsbm = horizontalScrollBarModeOf(props());
|
|
267
|
+
if (sbm !== SCROLLBAR_RESIZE_DISABLED && !hsbm === SCROLLBAR_RESIZE_DISABLED) {
|
|
268
|
+
update = function update() {
|
|
265
269
|
updateVerticalScrollbar();
|
|
266
270
|
updateHorizontalScrollbar();
|
|
267
|
-
}
|
|
271
|
+
};
|
|
272
|
+
} else if (sbm !== SCROLLBAR_RESIZE_DISABLED) update = updateVerticalScrollbar;else update = updateVerticalScrollbar;
|
|
273
|
+
initTimeout = setTimeout(function () {
|
|
274
|
+
resizeInterval = setInterval(update, 50);
|
|
268
275
|
}, 200);
|
|
269
276
|
};
|
|
270
277
|
that[ReactConstants[0]] = init;
|
|
@@ -320,8 +327,8 @@ Scrollable.defaultProps = {
|
|
|
320
327
|
};
|
|
321
328
|
if (process.env.NODE_ENV !== 'production') {
|
|
322
329
|
Scrollable.propTypes = {
|
|
323
|
-
scrollBarMode: PropTypes.oneOf([SCROLLBAR_MODE_AUTO, SCROLLBAR_MODE_HIDDEN, SCROLLBAR_MODE_VISIBLE]),
|
|
324
|
-
horizontalScrollBarMode: PropTypes.oneOf([SCROLLBAR_MODE_AUTO, SCROLLBAR_MODE_HIDDEN, SCROLLBAR_MODE_VISIBLE]),
|
|
330
|
+
scrollBarMode: PropTypes.oneOf([SCROLLBAR_MODE_AUTO, SCROLLBAR_MODE_HIDDEN, SCROLLBAR_MODE_VISIBLE, SCROLLBAR_RESIZE_DISABLED]),
|
|
331
|
+
horizontalScrollBarMode: PropTypes.oneOf([SCROLLBAR_MODE_AUTO, SCROLLBAR_MODE_HIDDEN, SCROLLBAR_MODE_VISIBLE, SCROLLBAR_RESIZE_DISABLED]),
|
|
325
332
|
[ReactConstants[5]]: PropTypes.string,
|
|
326
333
|
style: PropTypes.object,
|
|
327
334
|
onScrolledToBottom: PropTypes.func,
|
|
@@ -330,5 +337,5 @@ if (process.env.NODE_ENV !== 'production') {
|
|
|
330
337
|
};
|
|
331
338
|
}
|
|
332
339
|
|
|
333
|
-
export { SCROLLBAR_MODE_AUTO, SCROLLBAR_MODE_HIDDEN, SCROLLBAR_MODE_VISIBLE, Scrollable$1 as default };
|
|
340
|
+
export { SCROLLBAR_MODE_AUTO, SCROLLBAR_MODE_HIDDEN, SCROLLBAR_MODE_VISIBLE, SCROLLBAR_RESIZE_DISABLED, Scrollable$1 as default };
|
|
334
341
|
//# sourceMappingURL=Scrollable.js.map
|
package/Scrollable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scrollable.js","sources":["./src/Scrollable.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from './ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './Scrollable.css'\nimport {\n classNames,\n preventDefault,\n WINDOW,\n addEventListener,\n removeEventListener,\n setTimeout,\n clearTimeout,\n setInterval,\n clearInterval,\n createRef,\n orNoop,\n NOOP,\n ref\n} from \"./Tools\";\nimport {propsGetter, stateGS, PureComponent, render, componentDidMount, componentDidUpdate, componentWillUnmount} from \"./ReactConstants\";\n\nexport const SCROLLBAR_MODE_HIDDEN = 'hidden';\nexport const SCROLLBAR_MODE_VISIBLE = 'visible';\nexport const SCROLLBAR_MODE_AUTO = 'auto';\n\nlet NATIVE_SCROLL_WIDTH = -1;\nlet NATIVE_SCROLL_HEIGHT = -1;\n\nconst WITHOUT_SCROLL = 'without-scroll';\nconst WITH_SCROLL = 'with-scroll';\n\nconst createFieldGetter = field => el => el[field];\nconst scrollHeightOf = createFieldGetter('scrollHeight');\nconst scrollWidthOf = createFieldGetter('scrollWidth');\nconst offsetHeightOf = createFieldGetter('offsetHeight');\nconst offsetWidthOf = createFieldGetter('offsetWidth');\nconst styleOf = createFieldGetter('style');\nconst scrollBarModeOf = createFieldGetter('scrollBarMode');\nconst onScroll = createFieldGetter('onScroll');\nconst horizontalScrollBarModeOf = createFieldGetter('horizontalScrollBarMode');\n\nclass Scrollable extends PureComponent {\n\n constructor(properties) {\n super(properties);\n const that = this;\n that.state = {};\n\n const props = propsGetter(that);\n const status = stateGS(that);\n const statusH = stateGS(that);\n\n const viewportRef = createRef();\n const scrollbarRef = createRef();\n const horizontalScrollbarRef = createRef();\n const thumbRef = createRef();\n const horizontalThumbRef = createRef();\n\n let resizeInterval;\n let initTimeout;\n\n const clear = () => {\n clearInterval(resizeInterval);\n clearTimeout(initTimeout);\n };\n\n const init = () => {\n clear();\n\n if (scrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN && horizontalScrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN) {\n status(WITHOUT_SCROLL);\n statusH(WITHOUT_SCROLL);\n return;\n }\n\n const viewport = viewportRef();\n const scrollbar = scrollbarRef();\n const scrollbarH = horizontalScrollbarRef();\n const container = that.el;\n const thumb = thumbRef();\n const thumbH = horizontalThumbRef();\n\n let scrolling = false;\n let scrolledToBottom = false;\n let scrolledToTop = false;\n let adjustedScrollWidth = false;\n let lastY = 0;\n let lastX = 0;\n let ratio = 0;\n let ratioH = 0;\n const onScrollListener = onScroll(props())\n\n viewport.onscroll = (e) => {\n const scrollHeight = scrollHeightOf(viewport);\n const offsetHeight = offsetHeightOf(viewport);\n const scrollWidth = scrollWidthOf(viewport);\n const offsetWidth = offsetWidthOf(viewport);\n const scrollbarHeight = offsetHeightOf(scrollbar);\n const scrollbarWidth = offsetWidthOf(scrollbarH);\n let position = viewport.scrollTop / (scrollHeight - offsetHeight);\n const positionH = viewport.scrollLeft / (scrollWidth - offsetWidth);\n\n if (position > 1) {\n viewport.scrollTop = scrollHeight - offsetHeight;\n position = 1\n }\n\n styleOf(thumb).top = (position * (scrollbarHeight - offsetHeightOf(thumb))) + 'px';\n styleOf(thumbH).left = (positionH * (scrollbarWidth - offsetWidthOf(thumbH))) + 'px';\n\n if (position >= 0.98) {\n !scrolledToBottom && orNoop(props().onScrolledToBottom)();\n scrolledToBottom = true;\n } else {\n scrolledToBottom = false;\n }\n\n if (position <= 0.02) {\n !scrolledToTop && orNoop(props().onScrolledToTop)();\n scrolledToTop = true;\n } else {\n scrolledToTop = false;\n }\n\n onScrollListener && onScrollListener(e)\n };\n const reset = () => {\n removeEventListener(WINDOW, 'mouseup', reset);\n removeEventListener(WINDOW, 'mousemove', moveListener);\n viewport.style.scrollBehavior = ''\n scrolling = false;\n };\n const moveListener = (e) => {\n if (!scrolling)\n return;\n\n if (scrolling === 'v') {\n viewport.scrollTop += (e.clientY - lastY) * ratio;\n lastY = e.clientY;\n } else if (scrolling === 'h') {\n viewport.scrollLeft += (e.clientX - lastX) * ratioH;\n lastX = e.clientX;\n }\n };\n thumb.onmousedown = (e) => {\n lastY = e.clientY;\n scrolling = 'v';\n ratio = scrollHeightOf(viewport) / offsetHeightOf(viewport);\n viewport.style.scrollBehavior = 'unset'\n\n addEventListener(WINDOW, 'mouseup', reset);\n addEventListener(WINDOW, 'mousemove', moveListener);\n };\n thumb.ondragstart = preventDefault;\n thumb.onmouseup = reset;\n\n thumbH.onmousedown = (e) => {\n lastX = e.clientX;\n scrolling = 'h';\n ratioH = scrollWidthOf(viewport) / offsetWidthOf(viewport);\n viewport.style.scrollBehavior = 'unset'\n\n addEventListener(WINDOW, 'mouseup', reset);\n addEventListener(WINDOW, 'mousemove', moveListener);\n };\n thumbH.ondragstart = preventDefault;\n thumbH.onmouseup = reset;\n\n scrollbar.onclick = (e) => {\n if (e.target === scrollbar) {\n let thumbPosition = parseInt(styleOf(thumb).top);\n viewport.scrollTop += offsetHeightOf(viewport) * 0.9 * (e.offsetY < thumbPosition ? -1 : 1);\n }\n };\n scrollbarH.onclick = (e) => {\n if (e.target === scrollbarH) {\n let thumbPosition = parseInt(styleOf(thumbH).left);\n viewport.scrollLeft += offsetWidthOf(viewport) * 0.9 * (e.offsetX < thumbPosition ? -1 : 1);\n }\n };\n\n const adjustScrollWidth = () => {\n if (NATIVE_SCROLL_WIDTH < 0) {\n NATIVE_SCROLL_WIDTH = viewport.offsetWidth - viewport.clientWidth;\n if (NATIVE_SCROLL_WIDTH === 0 && scrollHeightOf(viewport) !== offsetHeightOf(viewport)) {\n NATIVE_SCROLL_WIDTH = -1;\n }\n }\n if (NATIVE_SCROLL_HEIGHT < 0) {\n NATIVE_SCROLL_HEIGHT = viewport.offsetHeight - viewport.clientHeight;\n if (NATIVE_SCROLL_HEIGHT === 0 && scrollWidthOf(viewport) !== offsetWidthOf(viewport)) {\n NATIVE_SCROLL_HEIGHT = -1;\n }\n }\n\n if (!adjustedScrollWidth) {\n if (NATIVE_SCROLL_WIDTH >= 0 && status() !== WITHOUT_SCROLL) {\n styleOf(viewport).paddingRight = (NATIVE_SCROLL_WIDTH) + scrollbar.clientWidth + 'px';\n styleOf(viewport).marginRight = -(NATIVE_SCROLL_WIDTH) - scrollbar.clientWidth + 'px';\n }\n if (NATIVE_SCROLL_HEIGHT >= 0 && statusH() !== WITHOUT_SCROLL) {\n styleOf(viewport).paddingBottom = (NATIVE_SCROLL_HEIGHT) + scrollbarH.clientHeight + 'px';\n styleOf(viewport).marginBottom = -(NATIVE_SCROLL_HEIGHT) - scrollbarH.clientHeight + 'px';\n }\n adjustedScrollWidth = true;\n }\n };\n\n adjustScrollWidth();\n\n const showScrollbar = (scrollbar, viewport, adjustScrollWidth) => {\n styleOf(scrollbar).visibility = 'inherit';\n styleOf(scrollbar).bottom = '0'; //enable scrollbar\n styleOf(viewport).overflowY = '';\n adjustScrollWidth();\n status() !== WITH_SCROLL && status(WITH_SCROLL);\n };\n\n const hideScrollbar = (scrollbar, viewport) => {\n styleOf(scrollbar).visibility = 'hidden'; //disable scrollbar\n styleOf(viewport).overflowY = 'inherit';\n styleOf(viewport).paddingRight = '0';\n styleOf(viewport).marginRight = '0';\n status() !== WITHOUT_SCROLL && status(WITHOUT_SCROLL);\n };\n\n const showHorizontalScrollbar = (scrollbar, viewport, adjustScrollWidth) => {\n styleOf(scrollbar).visibility = 'inherit';\n styleOf(scrollbar).right = '0'; //enable scrollbar\n styleOf(viewport).overflowX = '';\n adjustScrollWidth();\n statusH() !== WITH_SCROLL && statusH(WITH_SCROLL);\n };\n\n const hideHorizontalScrollbar = (scrollbar, viewport) => {\n styleOf(scrollbar).visibility = 'hidden'; //disable scrollbar\n styleOf(viewport).overflowX = 'inherit';\n styleOf(viewport).paddingBottom = '0';\n styleOf(viewport).marginBottom = '0';\n statusH() !== WITHOUT_SCROLL && statusH(WITHOUT_SCROLL);\n };\n\n const updateVerticalScrollbar = () => {\n const scrollHeight = scrollHeightOf(viewport);\n const scrollbarHeight = offsetHeightOf(scrollbar);\n\n !adjustedScrollWidth && adjustScrollWidth();\n\n const newRatio = scrollHeight / scrollbarHeight;\n if ((ratio === newRatio && Number.isFinite(newRatio)) || Number.isNaN(newRatio)) return;\n\n const offsetHeight = offsetHeightOf(viewport);\n const horizontalScrollBarOffset = statusH() !== WITHOUT_SCROLL ? scrollbarH.clientHeight + Math.max(NATIVE_SCROLL_HEIGHT, 0) : 0;\n\n let containerOffsetHeight = offsetHeightOf(container) + horizontalScrollBarOffset;\n if (containerOffsetHeight === scrollHeight && status() === WITHOUT_SCROLL)\n return;\n\n if (props().autoScrollTop && scrollHeight - offsetHeight - viewport.scrollTop <= 20 && newRatio < ratio && Number.isFinite(newRatio) && Number.isFinite(ratio)) {\n viewport.scrollTop = 0; // scroll to top if scrollbar gets smaller\n }\n\n ratio = newRatio;\n styleOf(thumb).height = (scrollbarHeight / newRatio) + 'px';\n\n styleOf(container).height = scrollHeight - horizontalScrollBarOffset + 'px';\n containerOffsetHeight = offsetHeightOf(container) + horizontalScrollBarOffset;\n\n if (scrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN) {\n if (status() !== WITHOUT_SCROLL)\n hideScrollbar(scrollbar, viewport);\n\n return\n }\n\n if (containerOffsetHeight < scrollHeight) {\n adjustedScrollWidth = false;\n showScrollbar(scrollbar, viewport, adjustScrollWidth);\n } else {\n hideScrollbar(scrollbar, viewport);\n }\n\n scrolledToBottom = false;\n scrolledToTop = false;\n\n const position = viewport.scrollTop / (scrollHeight - offsetHeight);\n styleOf(thumb).top = (position * (scrollbarHeight - offsetHeightOf(thumb))) + 'px';\n };\n\n const updateHorizontalScrollbar = () => {\n\n const scrollWidth = scrollWidthOf(viewport);\n const scrollbarWidth = offsetWidthOf(scrollbarH);\n\n !adjustedScrollWidth && adjustScrollWidth();\n\n const newRatio = scrollWidth / scrollbarWidth;\n if ((ratioH === newRatio && Number.isFinite(newRatio)) || Number.isNaN(newRatio)) return;\n\n const offsetWidth = offsetWidthOf(viewport);\n\n const verticalScrollBarOffset = status() !== WITHOUT_SCROLL ? scrollbar.clientWidth + Math.max(NATIVE_SCROLL_WIDTH, 0) : 0;\n let containerOffsetWidth = offsetWidthOf(container) + verticalScrollBarOffset;\n\n if (containerOffsetWidth === scrollWidth && statusH() === WITHOUT_SCROLL)\n return;\n\n ratioH = newRatio;\n styleOf(thumbH).width = (scrollbarWidth / newRatio) + 'px';\n\n\n if (horizontalScrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN) {\n if (statusH() !== WITHOUT_SCROLL)\n hideHorizontalScrollbar(scrollbarH, viewport);\n\n return\n }\n\n styleOf(container).width = (scrollWidth - verticalScrollBarOffset) + 'px';\n containerOffsetWidth = offsetWidthOf(container) + verticalScrollBarOffset;\n\n if (containerOffsetWidth < scrollWidth) {\n adjustedScrollWidth = false;\n showHorizontalScrollbar(scrollbarH, viewport, adjustScrollWidth);\n } else {\n hideHorizontalScrollbar(scrollbarH, viewport);\n }\n\n const position = viewport.scrollLeft / (scrollWidth - offsetWidth);\n styleOf(thumbH).left = (position * (scrollbarWidth - offsetWidthOf(thumbH))) + 'px';\n };\n\n initTimeout = setTimeout(() => {\n resizeInterval = setInterval(() => {\n updateVerticalScrollbar();\n updateHorizontalScrollbar();\n }, 50);\n }, 200)\n };\n\n that[componentDidMount] = init;\n that[componentWillUnmount] = clear;\n\n that[componentDidUpdate] = (prevProps) => {\n if (scrollBarModeOf(props()) !== scrollBarModeOf(prevProps))\n init();\n else if (onScroll(props()) !== onScroll(prevProps))\n init();\n };\n\n that.setScroll = (y) => {\n viewportRef().scrollTop = y\n };\n that.getScroll = () => viewportRef().scrollTop;\n that.getScrollHeight = () => scrollHeightOf(viewportRef());\n that.getHeight = () => that.el.clientHeight;\n\n that[render] = () => {\n const _props = props();\n const {className, children} = _props;\n return (\n <div className={classNames('Scrollable', className, status() || WITH_SCROLL, statusH() + '-horizontal')} style={styleOf(_props)} ref={ref('el', this)}>\n <div className=\"viewport\" ref={viewportRef}>\n {children}\n </div>\n <div className={classNames('scrollbar', scrollBarModeOf(_props) || SCROLLBAR_MODE_AUTO)} ref={scrollbarRef}>\n <div className=\"thumb\" ref={thumbRef}/>\n </div>\n <div className={classNames('scrollbar horizontal', horizontalScrollBarModeOf(_props))} ref={horizontalScrollbarRef}>\n <div className=\"thumb\" ref={horizontalThumbRef}/>\n </div>\n </div>\n )\n };\n }\n}\n\nexport default Scrollable\n\nScrollable.defaultProps = {\n autoScrollTop: true,\n horizontalScrollBarMode: SCROLLBAR_MODE_HIDDEN\n};\n\nif (window.isNotProductionEnvironment) {\n Scrollable.propTypes = {\n scrollBarMode: PropTypes.oneOf([SCROLLBAR_MODE_AUTO, SCROLLBAR_MODE_HIDDEN, SCROLLBAR_MODE_VISIBLE]),\n horizontalScrollBarMode: PropTypes.oneOf([SCROLLBAR_MODE_AUTO, SCROLLBAR_MODE_HIDDEN, SCROLLBAR_MODE_VISIBLE]),\n className: PropTypes.string,\n style: PropTypes.object,\n onScrolledToBottom: PropTypes.func,\n onScrolledToTop: PropTypes.func,\n autoScrollTop: PropTypes.bool,\n }\n}"],"names":["SCROLLBAR_MODE_HIDDEN","SCROLLBAR_MODE_VISIBLE","SCROLLBAR_MODE_AUTO","NATIVE_SCROLL_WIDTH","NATIVE_SCROLL_HEIGHT","WITHOUT_SCROLL","WITH_SCROLL","createFieldGetter","field","el","scrollHeightOf","scrollWidthOf","offsetHeightOf","offsetWidthOf","styleOf","scrollBarModeOf","onScroll","horizontalScrollBarModeOf","Scrollable","properties","that","state","props","propsGetter","status","stateGS","statusH","viewportRef","createRef","scrollbarRef","horizontalScrollbarRef","thumbRef","horizontalThumbRef","resizeInterval","initTimeout","clear","clearInterval","clearTimeout","init","viewport","scrollbar","scrollbarH","container","thumb","thumbH","scrolling","scrolledToBottom","scrolledToTop","adjustedScrollWidth","lastY","lastX","ratio","ratioH","onScrollListener","onscroll","e","scrollHeight","offsetHeight","scrollWidth","offsetWidth","scrollbarHeight","scrollbarWidth","position","scrollTop","positionH","scrollLeft","top","left","orNoop","onScrolledToBottom","onScrolledToTop","reset","removeEventListener","WINDOW","moveListener","style","scrollBehavior","clientY","clientX","onmousedown","addEventListener","ondragstart","preventDefault","onmouseup","onclick","target","thumbPosition","parseInt","offsetY","offsetX","adjustScrollWidth","clientWidth","clientHeight","paddingRight","marginRight","paddingBottom","marginBottom","showScrollbar","visibility","bottom","overflowY","hideScrollbar","showHorizontalScrollbar","right","overflowX","hideHorizontalScrollbar","updateVerticalScrollbar","newRatio","Number","isFinite","isNaN","horizontalScrollBarOffset","Math","max","containerOffsetHeight","autoScrollTop","height","updateHorizontalScrollbar","verticalScrollBarOffset","containerOffsetWidth","width","setTimeout","setInterval","componentDidMount","componentWillUnmount","componentDidUpdate","prevProps","setScroll","y","getScroll","getScrollHeight","getHeight","render","_props","className","children","classNames","ref","PureComponent","defaultProps","horizontalScrollBarMode","window","isNotProductionEnvironment","propTypes","scrollBarMode","PropTypes","oneOf","string","object","func","bool"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Scrollable.js","sources":["./src/Scrollable.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from './ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './Scrollable.css'\nimport {\n classNames,\n preventDefault,\n WINDOW,\n addEventListener,\n removeEventListener,\n setTimeout,\n clearTimeout,\n setInterval,\n clearInterval,\n createRef,\n orNoop,\n NOOP,\n ref\n} from \"./Tools\";\nimport {propsGetter, stateGS, PureComponent, render, componentDidMount, componentDidUpdate, componentWillUnmount} from \"./ReactConstants\";\n\nexport const SCROLLBAR_MODE_HIDDEN = 'hidden';\nexport const SCROLLBAR_MODE_VISIBLE = 'visible';\nexport const SCROLLBAR_MODE_AUTO = 'auto';\nexport const SCROLLBAR_RESIZE_DISABLED = 'disabled';\n\nlet NATIVE_SCROLL_WIDTH = -1;\nlet NATIVE_SCROLL_HEIGHT = -1;\n\nconst WITHOUT_SCROLL = 'without-scroll';\nconst WITH_SCROLL = 'with-scroll';\n\nconst createFieldGetter = field => el => el[field];\nconst scrollHeightOf = createFieldGetter('scrollHeight');\nconst scrollWidthOf = createFieldGetter('scrollWidth');\nconst offsetHeightOf = createFieldGetter('offsetHeight');\nconst offsetWidthOf = createFieldGetter('offsetWidth');\nconst styleOf = createFieldGetter('style');\nconst scrollBarModeOf = createFieldGetter('scrollBarMode');\nconst onScroll = createFieldGetter('onScroll');\nconst horizontalScrollBarModeOf = createFieldGetter('horizontalScrollBarMode');\n\nclass Scrollable extends PureComponent {\n\n constructor(properties) {\n super(properties);\n const that = this;\n that.state = {};\n\n const props = propsGetter(that);\n const status = stateGS(that);\n const statusH = stateGS(that);\n\n const viewportRef = createRef();\n const scrollbarRef = createRef();\n const horizontalScrollbarRef = createRef();\n const thumbRef = createRef();\n const horizontalThumbRef = createRef();\n\n let resizeInterval;\n let initTimeout;\n\n const clear = () => {\n clearInterval(resizeInterval);\n clearTimeout(initTimeout);\n };\n\n const init = () => {\n clear();\n\n if (scrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN && horizontalScrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN) {\n status(WITHOUT_SCROLL);\n statusH(WITHOUT_SCROLL);\n return;\n }\n\n const viewport = viewportRef();\n const scrollbar = scrollbarRef();\n const scrollbarH = horizontalScrollbarRef();\n const container = that.el;\n const thumb = thumbRef();\n const thumbH = horizontalThumbRef();\n\n let scrolling = false;\n let scrolledToBottom = false;\n let scrolledToTop = false;\n let adjustedScrollWidth = false;\n let lastY = 0;\n let lastX = 0;\n let ratio = 0;\n let ratioH = 0;\n const onScrollListener = onScroll(props())\n\n viewport.onscroll = (e) => {\n const scrollHeight = scrollHeightOf(viewport);\n const offsetHeight = offsetHeightOf(viewport);\n const scrollWidth = scrollWidthOf(viewport);\n const offsetWidth = offsetWidthOf(viewport);\n const scrollbarHeight = offsetHeightOf(scrollbar);\n const scrollbarWidth = offsetWidthOf(scrollbarH);\n let position = viewport.scrollTop / (scrollHeight - offsetHeight);\n const positionH = viewport.scrollLeft / (scrollWidth - offsetWidth);\n\n if (position > 1) {\n viewport.scrollTop = scrollHeight - offsetHeight;\n position = 1\n }\n\n styleOf(thumb).top = (position * (scrollbarHeight - offsetHeightOf(thumb))) + 'px';\n styleOf(thumbH).left = (positionH * (scrollbarWidth - offsetWidthOf(thumbH))) + 'px';\n\n if (position >= 0.98) {\n !scrolledToBottom && orNoop(props().onScrolledToBottom)();\n scrolledToBottom = true;\n } else {\n scrolledToBottom = false;\n }\n\n if (position <= 0.02) {\n !scrolledToTop && orNoop(props().onScrolledToTop)();\n scrolledToTop = true;\n } else {\n scrolledToTop = false;\n }\n\n onScrollListener && onScrollListener(e)\n };\n const reset = () => {\n removeEventListener(WINDOW, 'mouseup', reset);\n removeEventListener(WINDOW, 'mousemove', moveListener);\n viewport.style.scrollBehavior = ''\n scrolling = false;\n };\n const moveListener = (e) => {\n if (!scrolling)\n return;\n\n if (scrolling === 'v') {\n viewport.scrollTop += (e.clientY - lastY) * ratio;\n lastY = e.clientY;\n } else if (scrolling === 'h') {\n viewport.scrollLeft += (e.clientX - lastX) * ratioH;\n lastX = e.clientX;\n }\n };\n thumb.onmousedown = (e) => {\n lastY = e.clientY;\n scrolling = 'v';\n ratio = scrollHeightOf(viewport) / offsetHeightOf(viewport);\n viewport.style.scrollBehavior = 'unset'\n\n addEventListener(WINDOW, 'mouseup', reset);\n addEventListener(WINDOW, 'mousemove', moveListener);\n };\n thumb.ondragstart = preventDefault;\n thumb.onmouseup = reset;\n\n thumbH.onmousedown = (e) => {\n lastX = e.clientX;\n scrolling = 'h';\n ratioH = scrollWidthOf(viewport) / offsetWidthOf(viewport);\n viewport.style.scrollBehavior = 'unset'\n\n addEventListener(WINDOW, 'mouseup', reset);\n addEventListener(WINDOW, 'mousemove', moveListener);\n };\n thumbH.ondragstart = preventDefault;\n thumbH.onmouseup = reset;\n\n scrollbar.onclick = (e) => {\n if (e.target === scrollbar) {\n let thumbPosition = parseInt(styleOf(thumb).top);\n viewport.scrollTop += offsetHeightOf(viewport) * 0.9 * (e.offsetY < thumbPosition ? -1 : 1);\n }\n };\n scrollbarH.onclick = (e) => {\n if (e.target === scrollbarH) {\n let thumbPosition = parseInt(styleOf(thumbH).left);\n viewport.scrollLeft += offsetWidthOf(viewport) * 0.9 * (e.offsetX < thumbPosition ? -1 : 1);\n }\n };\n\n const adjustScrollWidth = () => {\n if (NATIVE_SCROLL_WIDTH < 0) {\n NATIVE_SCROLL_WIDTH = viewport.offsetWidth - viewport.clientWidth;\n if (NATIVE_SCROLL_WIDTH === 0 && scrollHeightOf(viewport) !== offsetHeightOf(viewport)) {\n NATIVE_SCROLL_WIDTH = -1;\n }\n }\n if (NATIVE_SCROLL_HEIGHT < 0) {\n NATIVE_SCROLL_HEIGHT = viewport.offsetHeight - viewport.clientHeight;\n if (NATIVE_SCROLL_HEIGHT === 0 && scrollWidthOf(viewport) !== offsetWidthOf(viewport)) {\n NATIVE_SCROLL_HEIGHT = -1;\n }\n }\n\n if (!adjustedScrollWidth) {\n if (NATIVE_SCROLL_WIDTH >= 0 && status() !== WITHOUT_SCROLL) {\n styleOf(viewport).paddingRight = (NATIVE_SCROLL_WIDTH) + scrollbar.clientWidth + 'px';\n styleOf(viewport).marginRight = -(NATIVE_SCROLL_WIDTH) - scrollbar.clientWidth + 'px';\n }\n if (NATIVE_SCROLL_HEIGHT >= 0 && statusH() !== WITHOUT_SCROLL) {\n styleOf(viewport).paddingBottom = (NATIVE_SCROLL_HEIGHT) + scrollbarH.clientHeight + 'px';\n styleOf(viewport).marginBottom = -(NATIVE_SCROLL_HEIGHT) - scrollbarH.clientHeight + 'px';\n }\n adjustedScrollWidth = true;\n }\n };\n\n adjustScrollWidth();\n\n const showScrollbar = (scrollbar, viewport, adjustScrollWidth) => {\n styleOf(scrollbar).visibility = 'inherit';\n styleOf(scrollbar).bottom = '0'; //enable scrollbar\n styleOf(viewport).overflowY = '';\n adjustScrollWidth();\n status() !== WITH_SCROLL && status(WITH_SCROLL);\n };\n\n const hideScrollbar = (scrollbar, viewport) => {\n styleOf(scrollbar).visibility = 'hidden'; //disable scrollbar\n styleOf(viewport).overflowY = 'inherit';\n styleOf(viewport).paddingRight = '0';\n styleOf(viewport).marginRight = '0';\n status() !== WITHOUT_SCROLL && status(WITHOUT_SCROLL);\n };\n\n const showHorizontalScrollbar = (scrollbar, viewport, adjustScrollWidth) => {\n styleOf(scrollbar).visibility = 'inherit';\n styleOf(scrollbar).right = '0'; //enable scrollbar\n styleOf(viewport).overflowX = '';\n adjustScrollWidth();\n statusH() !== WITH_SCROLL && statusH(WITH_SCROLL);\n };\n\n const hideHorizontalScrollbar = (scrollbar, viewport) => {\n styleOf(scrollbar).visibility = 'hidden'; //disable scrollbar\n styleOf(viewport).overflowX = 'inherit';\n styleOf(viewport).paddingBottom = '0';\n styleOf(viewport).marginBottom = '0';\n statusH() !== WITHOUT_SCROLL && statusH(WITHOUT_SCROLL);\n };\n\n const updateVerticalScrollbar = () => {\n const scrollHeight = scrollHeightOf(viewport);\n const scrollbarHeight = offsetHeightOf(scrollbar);\n\n !adjustedScrollWidth && adjustScrollWidth();\n\n const newRatio = scrollHeight / scrollbarHeight;\n if ((ratio === newRatio && Number.isFinite(newRatio)) || Number.isNaN(newRatio)) return;\n\n const offsetHeight = offsetHeightOf(viewport);\n const horizontalScrollBarOffset = statusH() !== WITHOUT_SCROLL ? scrollbarH.clientHeight + Math.max(NATIVE_SCROLL_HEIGHT, 0) : 0;\n\n let containerOffsetHeight = offsetHeightOf(container) + horizontalScrollBarOffset;\n if (containerOffsetHeight === scrollHeight && status() === WITHOUT_SCROLL)\n return;\n\n if (props().autoScrollTop && scrollHeight - offsetHeight - viewport.scrollTop <= 20 && newRatio < ratio && Number.isFinite(newRatio) && Number.isFinite(ratio)) {\n viewport.scrollTop = 0; // scroll to top if scrollbar gets smaller\n }\n\n ratio = newRatio;\n styleOf(thumb).height = (scrollbarHeight / newRatio) + 'px';\n\n styleOf(container).height = scrollHeight - horizontalScrollBarOffset + 'px';\n containerOffsetHeight = offsetHeightOf(container) + horizontalScrollBarOffset;\n\n if (scrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN) {\n if (status() !== WITHOUT_SCROLL)\n hideScrollbar(scrollbar, viewport);\n\n return\n }\n\n if (containerOffsetHeight < scrollHeight) {\n adjustedScrollWidth = false;\n showScrollbar(scrollbar, viewport, adjustScrollWidth);\n } else {\n hideScrollbar(scrollbar, viewport);\n }\n\n scrolledToBottom = false;\n scrolledToTop = false;\n\n const position = viewport.scrollTop / (scrollHeight - offsetHeight);\n styleOf(thumb).top = (position * (scrollbarHeight - offsetHeightOf(thumb))) + 'px';\n };\n\n const updateHorizontalScrollbar = () => {\n\n const scrollWidth = scrollWidthOf(viewport);\n const scrollbarWidth = offsetWidthOf(scrollbarH);\n\n !adjustedScrollWidth && adjustScrollWidth();\n\n const newRatio = scrollWidth / scrollbarWidth;\n if ((ratioH === newRatio && Number.isFinite(newRatio)) || Number.isNaN(newRatio)) return;\n\n const offsetWidth = offsetWidthOf(viewport);\n\n const verticalScrollBarOffset = status() !== WITHOUT_SCROLL ? scrollbar.clientWidth + Math.max(NATIVE_SCROLL_WIDTH, 0) : 0;\n let containerOffsetWidth = offsetWidthOf(container) + verticalScrollBarOffset;\n\n if (containerOffsetWidth === scrollWidth && statusH() === WITHOUT_SCROLL)\n return;\n\n ratioH = newRatio;\n styleOf(thumbH).width = (scrollbarWidth / newRatio) + 'px';\n\n\n if (horizontalScrollBarModeOf(props()) === SCROLLBAR_MODE_HIDDEN) {\n if (statusH() !== WITHOUT_SCROLL)\n hideHorizontalScrollbar(scrollbarH, viewport);\n\n return\n }\n\n styleOf(container).width = (scrollWidth - verticalScrollBarOffset) + 'px';\n containerOffsetWidth = offsetWidthOf(container) + verticalScrollBarOffset;\n\n if (containerOffsetWidth < scrollWidth) {\n adjustedScrollWidth = false;\n showHorizontalScrollbar(scrollbarH, viewport, adjustScrollWidth);\n } else {\n hideHorizontalScrollbar(scrollbarH, viewport);\n }\n\n const position = viewport.scrollLeft / (scrollWidth - offsetWidth);\n styleOf(thumbH).left = (position * (scrollbarWidth - offsetWidthOf(thumbH))) + 'px';\n };\n\n let update;\n let sbm = scrollBarModeOf(props());\n let hsbm = horizontalScrollBarModeOf(props());\n if (sbm !== SCROLLBAR_RESIZE_DISABLED && !hsbm === SCROLLBAR_RESIZE_DISABLED) {\n update = () => {\n updateVerticalScrollbar();\n updateHorizontalScrollbar();\n };\n } else if (sbm !== SCROLLBAR_RESIZE_DISABLED)\n update = updateVerticalScrollbar\n else\n update = updateVerticalScrollbar\n\n initTimeout = setTimeout(() => {\n resizeInterval = setInterval(update, 50);\n }, 200)\n };\n\n that[componentDidMount] = init;\n that[componentWillUnmount] = clear;\n\n that[componentDidUpdate] = (prevProps) => {\n if (scrollBarModeOf(props()) !== scrollBarModeOf(prevProps))\n init();\n else if (onScroll(props()) !== onScroll(prevProps))\n init();\n };\n\n that.setScroll = (y) => {\n viewportRef().scrollTop = y\n };\n that.getScroll = () => viewportRef().scrollTop;\n that.getScrollHeight = () => scrollHeightOf(viewportRef());\n that.getHeight = () => that.el.clientHeight;\n\n that[render] = () => {\n const _props = props();\n const {className, children} = _props;\n return (\n <div className={classNames('Scrollable', className, status() || WITH_SCROLL, statusH() + '-horizontal')} style={styleOf(_props)} ref={ref('el', this)}>\n <div className=\"viewport\" ref={viewportRef}>\n {children}\n </div>\n <div className={classNames('scrollbar', scrollBarModeOf(_props) || SCROLLBAR_MODE_AUTO)} ref={scrollbarRef}>\n <div className=\"thumb\" ref={thumbRef}/>\n </div>\n <div className={classNames('scrollbar horizontal', horizontalScrollBarModeOf(_props))} ref={horizontalScrollbarRef}>\n <div className=\"thumb\" ref={horizontalThumbRef}/>\n </div>\n </div>\n )\n };\n }\n}\n\nexport default Scrollable\n\nScrollable.defaultProps = {\n autoScrollTop: true,\n horizontalScrollBarMode: SCROLLBAR_MODE_HIDDEN\n};\n\nif (window.isNotProductionEnvironment) {\n Scrollable.propTypes = {\n scrollBarMode: PropTypes.oneOf([SCROLLBAR_MODE_AUTO, SCROLLBAR_MODE_HIDDEN, SCROLLBAR_MODE_VISIBLE, SCROLLBAR_RESIZE_DISABLED]),\n horizontalScrollBarMode: PropTypes.oneOf([SCROLLBAR_MODE_AUTO, SCROLLBAR_MODE_HIDDEN, SCROLLBAR_MODE_VISIBLE, SCROLLBAR_RESIZE_DISABLED]),\n className: PropTypes.string,\n style: PropTypes.object,\n onScrolledToBottom: PropTypes.func,\n onScrolledToTop: PropTypes.func,\n autoScrollTop: PropTypes.bool,\n }\n}"],"names":["SCROLLBAR_MODE_HIDDEN","SCROLLBAR_MODE_VISIBLE","SCROLLBAR_MODE_AUTO","SCROLLBAR_RESIZE_DISABLED","NATIVE_SCROLL_WIDTH","NATIVE_SCROLL_HEIGHT","WITHOUT_SCROLL","WITH_SCROLL","createFieldGetter","field","el","scrollHeightOf","scrollWidthOf","offsetHeightOf","offsetWidthOf","styleOf","scrollBarModeOf","onScroll","horizontalScrollBarModeOf","Scrollable","properties","that","state","props","propsGetter","status","stateGS","statusH","viewportRef","createRef","scrollbarRef","horizontalScrollbarRef","thumbRef","horizontalThumbRef","resizeInterval","initTimeout","clear","clearInterval","clearTimeout","init","viewport","scrollbar","scrollbarH","container","thumb","thumbH","scrolling","scrolledToBottom","scrolledToTop","adjustedScrollWidth","lastY","lastX","ratio","ratioH","onScrollListener","onscroll","e","scrollHeight","offsetHeight","scrollWidth","offsetWidth","scrollbarHeight","scrollbarWidth","position","scrollTop","positionH","scrollLeft","top","left","orNoop","onScrolledToBottom","onScrolledToTop","reset","removeEventListener","WINDOW","moveListener","style","scrollBehavior","clientY","clientX","onmousedown","addEventListener","ondragstart","preventDefault","onmouseup","onclick","target","thumbPosition","parseInt","offsetY","offsetX","adjustScrollWidth","clientWidth","clientHeight","paddingRight","marginRight","paddingBottom","marginBottom","showScrollbar","visibility","bottom","overflowY","hideScrollbar","showHorizontalScrollbar","right","overflowX","hideHorizontalScrollbar","updateVerticalScrollbar","newRatio","Number","isFinite","isNaN","horizontalScrollBarOffset","Math","max","containerOffsetHeight","autoScrollTop","height","updateHorizontalScrollbar","verticalScrollBarOffset","containerOffsetWidth","width","update","sbm","hsbm","setTimeout","setInterval","componentDidMount","componentWillUnmount","componentDidUpdate","prevProps","setScroll","y","getScroll","getScrollHeight","getHeight","render","_props","className","children","classNames","ref","PureComponent","defaultProps","horizontalScrollBarMode","window","isNotProductionEnvironment","propTypes","scrollBarMode","PropTypes","oneOf","string","object","func","bool"],"mappings":"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"}
|