{"version":3,"sources":["jsdelivr-header.js","/npm/react-scrollspy@3.4.3/lib/scrollspy.js"],"names":[],"mappings":"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","file":"/npm/react-scrollspy@3.4.3/lib/scrollspy.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/react-scrollspy@3.4.3/lib/scrollspy.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _throttle = _interopRequireDefault(require(\"./throttle\"));\n\nfunction isEqualArray(a, b) {\n  return a.length === b.length && a.every(function (item, index) {\n    return item === b[index];\n  });\n}\n\nvar Scrollspy =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(Scrollspy, _React$Component);\n  (0, _createClass2.default)(Scrollspy, null, [{\n    key: \"propTypes\",\n    get: function get() {\n      return {\n        items: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,\n        currentClassName: _propTypes.default.string.isRequired,\n        scrolledPastClassName: _propTypes.default.string,\n        style: _propTypes.default.object,\n        componentTag: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.elementType]),\n        offset: _propTypes.default.number,\n        rootEl: _propTypes.default.string,\n        onUpdate: _propTypes.default.func\n      };\n    }\n  }, {\n    key: \"defaultProps\",\n    get: function get() {\n      return {\n        items: [],\n        currentClassName: '',\n        style: {},\n        componentTag: 'ul',\n        offset: 0,\n        onUpdate: function onUpdate() {}\n      };\n    }\n  }]);\n\n  function Scrollspy(props) {\n    var _this;\n\n    (0, _classCallCheck2.default)(this, Scrollspy);\n    _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Scrollspy).call(this, props));\n    _this.state = {\n      targetItems: [],\n      inViewState: [],\n      isScrolledPast: [] // manually bind as ES6 does not apply this\n      // auto binding as React.createClass does\n\n    };\n    _this._handleSpy = _this._handleSpy.bind((0, _assertThisInitialized2.default)(_this));\n    return _this;\n  }\n\n  (0, _createClass2.default)(Scrollspy, [{\n    key: \"_initSpyTarget\",\n    value: function _initSpyTarget(items) {\n      var targetItems = items.map(function (item) {\n        return document.getElementById(item);\n      });\n      return targetItems;\n    } // https://github.com/makotot/react-scrollspy/pull/45\n\n  }, {\n    key: \"_fillArray\",\n    value: function _fillArray(array, val) {\n      var newArray = [];\n\n      for (var i = 0, max = array.length; i < max; i++) {\n        newArray[i] = val;\n      }\n\n      return newArray;\n    }\n  }, {\n    key: \"_isScrolled\",\n    value: function _isScrolled() {\n      return this._getScrollDimension().scrollTop > 0;\n    }\n  }, {\n    key: \"_getScrollDimension\",\n    value: function _getScrollDimension() {\n      var doc = document;\n      var rootEl = this.props.rootEl;\n      var scrollTop = rootEl ? doc.querySelector(rootEl).scrollTop : doc.documentElement.scrollTop || doc.body.parentNode.scrollTop || doc.body.scrollTop;\n      var scrollHeight = rootEl ? doc.querySelector(rootEl).scrollHeight : doc.documentElement.scrollHeight || doc.body.parentNode.scrollHeight || doc.body.scrollHeight;\n      return {\n        scrollTop: scrollTop,\n        scrollHeight: scrollHeight\n      };\n    }\n  }, {\n    key: \"_getElemsViewState\",\n    value: function _getElemsViewState(targets) {\n      var elemsInView = [];\n      var elemsOutView = [];\n      var viewStatusList = [];\n      var targetItems = targets ? targets : this.state.targetItems;\n      var hasInViewAlready = false;\n\n      for (var i = 0, max = targetItems.length; i < max; i++) {\n        var currentContent = targetItems[i];\n        var isInView = hasInViewAlready ? false : this._isInView(currentContent);\n\n        if (isInView) {\n          hasInViewAlready = true;\n          elemsInView.push(currentContent);\n        } else {\n          elemsOutView.push(currentContent);\n        }\n\n        var isLastItem = i === max - 1;\n\n        var isScrolled = this._isScrolled(); // https://github.com/makotot/react-scrollspy/pull/26#issue-167413769\n\n\n        var isLastShortItemAtBottom = this._isAtBottom() && this._isInView(currentContent) && !isInView && isLastItem && isScrolled;\n\n        if (isLastShortItemAtBottom) {\n          elemsOutView.pop();\n          elemsOutView.push.apply(elemsOutView, (0, _toConsumableArray2.default)(elemsInView));\n          elemsInView = [currentContent];\n          viewStatusList = this._fillArray(viewStatusList, false);\n          isInView = true;\n        }\n\n        viewStatusList.push(isInView);\n      }\n\n      return {\n        inView: elemsInView,\n        outView: elemsOutView,\n        viewStatusList: viewStatusList,\n        scrolledPast: this.props.scrolledPastClassName && this._getScrolledPast(viewStatusList)\n      };\n    }\n  }, {\n    key: \"_isInView\",\n    value: function _isInView(el) {\n      if (!el) {\n        return false;\n      }\n\n      var _this$props = this.props,\n          rootEl = _this$props.rootEl,\n          offset = _this$props.offset;\n      var rootRect;\n\n      if (rootEl) {\n        rootRect = document.querySelector(rootEl).getBoundingClientRect();\n      }\n\n      var rect = el.getBoundingClientRect();\n      var winH = rootEl ? rootRect.height : window.innerHeight;\n\n      var _this$_getScrollDimen = this._getScrollDimension(),\n          scrollTop = _this$_getScrollDimen.scrollTop;\n\n      var scrollBottom = scrollTop + winH;\n      var elTop = rootEl ? rect.top + scrollTop - rootRect.top + offset : rect.top + scrollTop + offset;\n      var elBottom = elTop + el.offsetHeight;\n      return elTop < scrollBottom && elBottom > scrollTop;\n    }\n  }, {\n    key: \"_isAtBottom\",\n    value: function _isAtBottom() {\n      var rootEl = this.props.rootEl;\n\n      var _this$_getScrollDimen2 = this._getScrollDimension(),\n          scrollTop = _this$_getScrollDimen2.scrollTop,\n          scrollHeight = _this$_getScrollDimen2.scrollHeight;\n\n      var winH = rootEl ? document.querySelector(rootEl).getBoundingClientRect().height : window.innerHeight;\n      var scrolledToBottom = scrollTop + winH >= scrollHeight;\n      return scrolledToBottom;\n    }\n  }, {\n    key: \"_getScrolledPast\",\n    value: function _getScrolledPast(viewStatusList) {\n      if (!viewStatusList.some(function (item) {\n        return item;\n      })) {\n        return viewStatusList;\n      }\n\n      var hasFoundInView = false;\n      var scrolledPastItems = viewStatusList.map(function (item) {\n        if (item && !hasFoundInView) {\n          hasFoundInView = true;\n          return false;\n        }\n\n        return !hasFoundInView;\n      });\n      return scrolledPastItems;\n    }\n  }, {\n    key: \"_spy\",\n    value: function _spy(targets) {\n      var _this2 = this;\n\n      var elemensViewState = this._getElemsViewState(targets);\n\n      var currentStatuses = this.state.inViewState;\n      this.setState({\n        inViewState: elemensViewState.viewStatusList,\n        isScrolledPast: elemensViewState.scrolledPast\n      }, function () {\n        _this2._update(currentStatuses);\n      });\n    }\n  }, {\n    key: \"_update\",\n    value: function _update(prevStatuses) {\n      if (isEqualArray(this.state.inViewState, prevStatuses)) {\n        return;\n      }\n\n      this.props.onUpdate(this.state.targetItems[this.state.inViewState.indexOf(true)]);\n    }\n  }, {\n    key: \"_handleSpy\",\n    value: function _handleSpy() {\n      (0, _throttle.default)(this._spy(), 100);\n    }\n  }, {\n    key: \"_initFromProps\",\n    value: function _initFromProps() {\n      var targetItems = this._initSpyTarget(this.props.items);\n\n      this.setState({\n        targetItems: targetItems\n      });\n\n      this._spy(targetItems);\n    }\n  }, {\n    key: \"offEvent\",\n    value: function offEvent() {\n      var el = this.props.rootEl ? document.querySelector(this.props.rootEl) : window;\n      el.removeEventListener('scroll', this._handleSpy);\n    }\n  }, {\n    key: \"onEvent\",\n    value: function onEvent() {\n      var el = this.props.rootEl ? document.querySelector(this.props.rootEl) : window;\n      el.addEventListener('scroll', this._handleSpy);\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this._initFromProps();\n\n      this.onEvent();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.offEvent();\n    }\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps() {\n      this._initFromProps();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n\n      var Tag = this.props.componentTag;\n      var _this$props2 = this.props,\n          children = _this$props2.children,\n          className = _this$props2.className,\n          scrolledPastClassName = _this$props2.scrolledPastClassName,\n          style = _this$props2.style;\n      var counter = 0;\n\n      var items = _react.default.Children.map(children, function (child, idx) {\n        var _classNames;\n\n        if (!child) {\n          return null;\n        }\n\n        var ChildTag = child.type;\n        var isScrolledPast = scrolledPastClassName && _this3.state.isScrolledPast[idx];\n        var childClass = (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, \"\".concat(child.props.className), child.props.className), (0, _defineProperty2.default)(_classNames, \"\".concat(_this3.props.currentClassName), _this3.state.inViewState[idx]), (0, _defineProperty2.default)(_classNames, \"\".concat(_this3.props.scrolledPastClassName), isScrolledPast), _classNames));\n        return _react.default.createElement(ChildTag, (0, _extends2.default)({}, child.props, {\n          className: childClass,\n          key: counter++\n        }), child.props.children);\n      });\n\n      var itemClass = (0, _classnames.default)((0, _defineProperty2.default)({}, \"\".concat(className), className));\n      return _react.default.createElement(Tag, {\n        className: itemClass,\n        style: style\n      }, items);\n    }\n  }]);\n  return Scrollspy;\n}(_react.default.Component);\n\nexports.default = Scrollspy;"]}