@rsuite/document-nav
Advanced tools
Comparing version 1.0.17 to 1.0.18
@@ -161,7 +161,5 @@ 'use strict'; | ||
var basePath = _this2.props.basePath; | ||
var index = 0; | ||
var activeAnchor = _this2.state.activeAnchor; | ||
elList.find(function (el, i) { | ||
var index = elList.findIndex(function (el, i) { | ||
if (!el) { | ||
@@ -171,9 +169,10 @@ return false; | ||
var position = el.getBoundingClientRect(); | ||
index = i; | ||
// 在 windows 电脑中点击锚点跳转后定位的元素,它的 position.top 不是 0,而是一个大于 0 小于 1 的数,所有需要减去 1,来兼容这种情况 | ||
// 而在 mac 电脑中这个值为 0,0 本来就不大于 0,所以即使减去 1 也对原有的逻辑没有影响,实际情况中也不会存在锚点行高为 1 的元素 | ||
// 而在 mac 电脑中这个值为 0,0 本来就不大于 0,所以即使减去 1 也对原有的逻辑没有影响,原有逻辑不减 1 | ||
// 实际情况中也不会存在锚点高度为 1且与下个锚点没有间隙的锚点 | ||
return position.top - 1 > 0; | ||
}); | ||
// 第一个 position.top 大于 0 的元素,它的上一个元素便是需要被激活的导航 | ||
var nextAnchor = anchors[index - 1] || anchors[0]; | ||
// 第一个 position.top 大于 0 的元素且它的索引大于 0,它的上一个元素便是需要被激活的导航, | ||
// 当找到节点的索引为 0 时,直接取该索引,当找不到时,说明所有锚点都在窗口上方,直接取最后一个锚点 | ||
var nextAnchor = index > 0 ? anchors[index - 1] : index === 0 ? anchors[0] : anchors[anchors.length - 1]; | ||
if (nextAnchor !== activeAnchor && _this2.pageNav) { | ||
@@ -272,12 +271,14 @@ _this2.setState({ | ||
if (window.MutationObserver) { | ||
this.observe = new MutationObserver(function () { | ||
if (!_this3.props.once) { | ||
_this3.reload(); | ||
} | ||
}); | ||
var config = { | ||
childList: true, | ||
subtree: true | ||
}; | ||
this.observe.observe(content, config); | ||
if (!this.observe) { | ||
this.observe = new MutationObserver(function () { | ||
if (!_this3.props.once) { | ||
_this3.reload(); | ||
} | ||
}); | ||
var config = { | ||
childList: true, | ||
subtree: true | ||
}; | ||
this.observe.observe(content, config); | ||
} | ||
} else { | ||
@@ -284,0 +285,0 @@ this.prevInnerHTML = content.innerHTML; |
{ | ||
"name": "@rsuite/document-nav", | ||
"version": "1.0.17", | ||
"version": "1.0.18", | ||
"description": "Document navigation is automatically generated based on the HTML title (h1-h6) tag", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -147,5 +147,4 @@ // @flow | ||
const { basePath } = this.props; | ||
let index = 0; | ||
const { activeAnchor } = this.state; | ||
elList.find((el, i) => { | ||
const index = elList.findIndex((el, i) => { | ||
if (!el) { | ||
@@ -155,9 +154,11 @@ return false; | ||
const position = el.getBoundingClientRect(); | ||
index = i; | ||
// 在 windows 电脑中点击锚点跳转后定位的元素,它的 position.top 不是 0,而是一个大于 0 小于 1 的数,所有需要减去 1,来兼容这种情况 | ||
// 而在 mac 电脑中这个值为 0,0 本来就不大于 0,所以即使减去 1 也对原有的逻辑没有影响,实际情况中也不会存在锚点行高为 1 的元素 | ||
// 而在 mac 电脑中这个值为 0,0 本来就不大于 0,所以即使减去 1 也对原有的逻辑没有影响,原有逻辑不减 1 | ||
// 实际情况中也不会存在锚点高度为 1且与下个锚点没有间隙的锚点 | ||
return position.top - 1 > 0; | ||
}); | ||
// 第一个 position.top 大于 0 的元素,它的上一个元素便是需要被激活的导航 | ||
const nextAnchor = anchors[index - 1] || anchors[0]; | ||
// 第一个 position.top 大于 0 的元素且它的索引大于 0,它的上一个元素便是需要被激活的导航, | ||
// 当找到节点的索引为 0 时,直接取该索引,当找不到时,说明所有锚点都在窗口上方,直接取最后一个锚点 | ||
const nextAnchor = | ||
index > 0 ? anchors[index - 1] : index === 0 ? anchors[0] : anchors[anchors.length - 1]; | ||
if (nextAnchor !== activeAnchor && this.pageNav) { | ||
@@ -241,12 +242,14 @@ this.setState({ | ||
if (window.MutationObserver) { | ||
this.observe = new MutationObserver(() => { | ||
if (!this.props.once) { | ||
this.reload(); | ||
} | ||
}); | ||
const config = { | ||
childList: true, | ||
subtree: true | ||
}; | ||
this.observe.observe(content, config); | ||
if (!this.observe) { | ||
this.observe = new MutationObserver(() => { | ||
if (!this.props.once) { | ||
this.reload(); | ||
} | ||
}); | ||
const config = { | ||
childList: true, | ||
subtree: true | ||
}; | ||
this.observe.observe(content, config); | ||
} | ||
} else { | ||
@@ -253,0 +256,0 @@ this.prevInnerHTML = content.innerHTML; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
55041
1235