aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/dumbyUtils.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'src/dumbyUtils.mjs')
-rw-r--r--src/dumbyUtils.mjs22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/dumbyUtils.mjs b/src/dumbyUtils.mjs
index 24699b3..a350ee3 100644
--- a/src/dumbyUtils.mjs
+++ b/src/dumbyUtils.mjs
@@ -198,15 +198,26 @@ export const createGeoLink = (link) => {
198export const createDocLink = link => { 198export const createDocLink = link => {
199 link.classList.add('with-leader-line', 'doclink') 199 link.classList.add('with-leader-line', 'doclink')
200 link.lines = [] 200 link.lines = []
201 const label = decodeURIComponent(link.href.split('#')[1])
202 const selector = link.title.split('=>')[1] ?? '#' + label
201 203
202 link.onmouseover = () => { 204 link.onmouseover = () => {
203 const label = decodeURIComponent(link.href.split('#')[1])
204 const selector = link.title.split('=>')[1] ?? '#' + label
205 const targets = document.querySelectorAll(selector) 205 const targets = document.querySelectorAll(selector)
206 206
207 targets.forEach(target => { 207 targets.forEach(target => {
208 if (!target?.checkVisibility()) return 208 if (!target?.checkVisibility()) return
209 209
210 // highlight selected target
211 target.dataset.style = target.style.cssText
212 const rect = target.getBoundingClientRect()
213 const isTiny = rect.width < 100 || rect.height < 100
214 if (isTiny) {
215 target.style.background = 'lightPink'
216 } else {
217 target.style.outline = 'lightPink 6px dashed'
218 }
219
220 // point to selected target
210 const line = new LeaderLine({ 221 const line = new LeaderLine({
211 start: link, 222 start: link,
212 end: target, 223 end: target,
@@ -224,6 +235,13 @@ export const createDocLink = link => {
224 link.onmouseout = () => { 235 link.onmouseout = () => {
225 link.lines.forEach(line => line.remove()) 236 link.lines.forEach(line => line.remove())
226 link.lines.length = 0 237 link.lines.length = 0
238
239 // resume targets from highlight
240 const targets = document.querySelectorAll(selector)
241 targets.forEach(target => {
242 target.style.cssText = target.dataset.style
243 delete target.dataset.style
244 })
227 } 245 }
228} 246}
229 247