react-simple-scroll-container
Version:
A simple scroll container for React.
63 lines (47 loc) • 1.88 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ScrollSection = exports.ScrollTo = exports.ScrollContainer = undefined;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _scrollIntoView = require('scroll-into-view');
var _scrollIntoView2 = _interopRequireDefault(_scrollIntoView);
var _index = require('./components/ScrollSection/index');
var _index2 = _interopRequireDefault(_index);
var _index3 = require('./components/ScrollContainer/index');
var _index4 = _interopRequireDefault(_index3);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
if (typeof window !== 'undefined') {
window.findReactComponent = function (el) {
for (var key in el) {
if (key.startsWith('__reactInternalInstance$')) {
var fiberNode = el[key];
return fiberNode && fiberNode.return && fiberNode.return.stateNode;
}
}
return null;
};
}
var ScrollTo = function ScrollTo(sectionId) {
var containerId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
var speed = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 500;
var node = null;
if (containerId !== null) {
var container = document.getElementById(containerId);
var containerReact = findReactComponent(container);
node = containerReact.getNode(sectionId);
} else {
node = document.getElementById(sectionId);
}
(0, _scrollIntoView2.default)(node, {
time: speed,
align: {
top: offset
}
});
};
exports.ScrollContainer = _index4.default;
exports.ScrollTo = ScrollTo;
exports.ScrollSection = _index2.default;
;