UNPKG

@daredrop/react-scroll

Version:
78 lines (67 loc) 2.07 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _passiveEventListeners = require('./passive-event-listeners'); var _utils = require('./utils'); var _utils2 = _interopRequireDefault(_utils); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var scrollHash = { mountFlag: false, initialized: false, scroller: null, containers: {}, mount: function mount(scroller) { this.scroller = scroller; this.handleHashChange = this.handleHashChange.bind(this); window.addEventListener('hashchange', this.handleHashChange); this.initStateFromHash(); this.mountFlag = true; }, mapContainer: function mapContainer(to, container) { this.containers[to] = container; }, isMounted: function isMounted() { return this.mountFlag; }, isInitialized: function isInitialized() { return this.initialized; }, initStateFromHash: function initStateFromHash() { var _this = this; var hash = this.getHash(); if (hash) { window.setTimeout(function () { _this.scrollTo(hash, true); _this.initialized = true; }, 10); } else { this.initialized = true; } }, scrollTo: function scrollTo(to, isInit) { var scroller = this.scroller; var element = scroller.get(to); if (element && (isInit || to !== scroller.getActiveLink())) { var container = this.containers[to] || document; scroller.scrollTo(to, { container: container }); } }, getHash: function getHash() { return _utils2.default.getHash(); }, changeHash: function changeHash(to, saveHashHistory) { if (this.isInitialized() && _utils2.default.getHash() !== to) { _utils2.default.updateHash(to, saveHashHistory); } }, handleHashChange: function handleHashChange() { this.scrollTo(this.getHash()); }, unmount: function unmount() { this.scroller = null; this.containers = null; window.removeEventListener('hashchange', this.handleHashChange); } }; exports.default = scrollHash;