fix(web): keep tableless diff files closed, label the lede, show the tag count past the dated limit
- commit
- bfab2949a14d87aa49d634cee40a167169628c52
- author
- brice · · 2026-10-11 12:56 UTC
- parent
- 08e6388
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email - refs
- tag: v0.5.0
41 files · +524 -243
M cmd/ermite/testdata/web/blob-binary.html +10 -2
| @@ -383,8 +383,16 @@ | |||
| 383 | 383 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 384 | 384 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 385 | 385 | }; | |
| 386 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 387 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 386 | + | k-split from:body -> { | |
| 387 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 388 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 389 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 390 | + | }; | |
| 391 | + | k-unified from:body -> { | |
| 392 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 393 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 394 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 395 | + | }; | |
| 388 | 396 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 389 | 397 | k-permalink from:body -> { | |
| 390 | 398 | let b = document.body.dataset; | |
| @@ -383,8 +383,16 @@ | |||||
| 383 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 383 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 384 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 384 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 385 | }; | 385 | }; | ||
| 386 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 386 | + | k-split from:body -> { |
| 387 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 387 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 388 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 389 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 390 | + | }; | |||
| 391 | + | k-unified from:body -> { | |||
| 392 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 393 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 394 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 395 | + | }; | |||
| 388 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 396 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 389 | k-permalink from:body -> { | 397 | k-permalink from:body -> { | ||
| 390 | let b = document.body.dataset; | 398 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/blob-code.html +10 -2
| @@ -453,8 +453,16 @@ | |||
| 453 | 453 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 454 | 454 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 455 | 455 | }; | |
| 456 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 457 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 456 | + | k-split from:body -> { | |
| 457 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 458 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 459 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 460 | + | }; | |
| 461 | + | k-unified from:body -> { | |
| 462 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 463 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 464 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 465 | + | }; | |
| 458 | 466 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 459 | 467 | k-permalink from:body -> { | |
| 460 | 468 | let b = document.body.dataset; | |
| @@ -453,8 +453,16 @@ | |||||
| 453 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 453 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 454 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 454 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 455 | }; | 455 | }; | ||
| 456 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 456 | + | k-split from:body -> { |
| 457 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 457 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 458 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 459 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 460 | + | }; | |||
| 461 | + | k-unified from:body -> { | |||
| 462 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 463 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 464 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 465 | + | }; | |||
| 458 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 466 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 459 | k-permalink from:body -> { | 467 | k-permalink from:body -> { | ||
| 460 | let b = document.body.dataset; | 468 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/blob-empty.html +10 -2
| @@ -383,8 +383,16 @@ | |||
| 383 | 383 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 384 | 384 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 385 | 385 | }; | |
| 386 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 387 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 386 | + | k-split from:body -> { | |
| 387 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 388 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 389 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 390 | + | }; | |
| 391 | + | k-unified from:body -> { | |
| 392 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 393 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 394 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 395 | + | }; | |
| 388 | 396 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 389 | 397 | k-permalink from:body -> { | |
| 390 | 398 | let b = document.body.dataset; | |
| @@ -383,8 +383,16 @@ | |||||
| 383 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 383 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 384 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 384 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 385 | }; | 385 | }; | ||
| 386 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 386 | + | k-split from:body -> { |
| 387 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 387 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 388 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 389 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 390 | + | }; | |||
| 391 | + | k-unified from:body -> { | |||
| 392 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 393 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 394 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 395 | + | }; | |||
| 388 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 396 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 389 | k-permalink from:body -> { | 397 | k-permalink from:body -> { | ||
| 390 | let b = document.body.dataset; | 398 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/blob-image.html +10 -2
| @@ -385,8 +385,16 @@ | |||
| 385 | 385 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 386 | 386 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 387 | 387 | }; | |
| 388 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 389 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 388 | + | k-split from:body -> { | |
| 389 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 390 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 391 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 392 | + | }; | |
| 393 | + | k-unified from:body -> { | |
| 394 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 395 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 396 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 397 | + | }; | |
| 390 | 398 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 391 | 399 | k-permalink from:body -> { | |
| 392 | 400 | let b = document.body.dataset; | |
| @@ -385,8 +385,16 @@ | |||||
| 385 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 385 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 386 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 386 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 387 | }; | 387 | }; | ||
| 388 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 388 | + | k-split from:body -> { |
| 389 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 389 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 390 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 391 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 392 | + | }; | |||
| 393 | + | k-unified from:body -> { | |||
| 394 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 395 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 396 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 397 | + | }; | |||
| 390 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 398 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 391 | k-permalink from:body -> { | 399 | k-permalink from:body -> { | ||
| 392 | let b = document.body.dataset; | 400 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/blob-markdown.html +10 -2
| @@ -450,8 +450,16 @@ | |||
| 450 | 450 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 451 | 451 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 452 | 452 | }; | |
| 453 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 454 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 453 | + | k-split from:body -> { | |
| 454 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 455 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 456 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 457 | + | }; | |
| 458 | + | k-unified from:body -> { | |
| 459 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 460 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 461 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 462 | + | }; | |
| 455 | 463 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 456 | 464 | k-permalink from:body -> { | |
| 457 | 465 | let b = document.body.dataset; | |
| @@ -450,8 +450,16 @@ | |||||
| 450 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 450 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 451 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 451 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 452 | }; | 452 | }; | ||
| 453 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 453 | + | k-split from:body -> { |
| 454 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 454 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 455 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 456 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 457 | + | }; | |||
| 458 | + | k-unified from:body -> { | |||
| 459 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 460 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 461 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 462 | + | }; | |||
| 455 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 463 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 456 | k-permalink from:body -> { | 464 | k-permalink from:body -> { | ||
| 457 | let b = document.body.dataset; | 465 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/blob-svg.html +10 -2
| @@ -408,8 +408,16 @@ | |||
| 408 | 408 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 409 | 409 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 410 | 410 | }; | |
| 411 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 412 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 411 | + | k-split from:body -> { | |
| 412 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 413 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 414 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 415 | + | }; | |
| 416 | + | k-unified from:body -> { | |
| 417 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 418 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 419 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 420 | + | }; | |
| 413 | 421 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 414 | 422 | k-permalink from:body -> { | |
| 415 | 423 | let b = document.body.dataset; | |
| @@ -408,8 +408,16 @@ | |||||
| 408 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 408 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 409 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 409 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 410 | }; | 410 | }; | ||
| 411 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 411 | + | k-split from:body -> { |
| 412 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 412 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 413 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 414 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 415 | + | }; | |||
| 416 | + | k-unified from:body -> { | |||
| 417 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 418 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 419 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 420 | + | }; | |||
| 413 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 421 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 414 | k-permalink from:body -> { | 422 | k-permalink from:body -> { | ||
| 415 | let b = document.body.dataset; | 423 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/blob-text.html +10 -2
| @@ -403,8 +403,16 @@ | |||
| 403 | 403 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 404 | 404 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 405 | 405 | }; | |
| 406 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 407 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 406 | + | k-split from:body -> { | |
| 407 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 408 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 409 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 410 | + | }; | |
| 411 | + | k-unified from:body -> { | |
| 412 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 413 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 414 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 415 | + | }; | |
| 408 | 416 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 409 | 417 | k-permalink from:body -> { | |
| 410 | 418 | let b = document.body.dataset; | |
| @@ -403,8 +403,16 @@ | |||||
| 403 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 403 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 404 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 404 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 405 | }; | 405 | }; | ||
| 406 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 406 | + | k-split from:body -> { |
| 407 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 407 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 408 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 409 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 410 | + | }; | |||
| 411 | + | k-unified from:body -> { | |||
| 412 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 413 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 414 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 415 | + | }; | |||
| 408 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 416 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 409 | k-permalink from:body -> { | 417 | k-permalink from:body -> { | ||
| 410 | let b = document.body.dataset; | 418 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/blob-too-large.html +10 -2
| @@ -383,8 +383,16 @@ | |||
| 383 | 383 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 384 | 384 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 385 | 385 | }; | |
| 386 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 387 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 386 | + | k-split from:body -> { | |
| 387 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 388 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 389 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 390 | + | }; | |
| 391 | + | k-unified from:body -> { | |
| 392 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 393 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 394 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 395 | + | }; | |
| 388 | 396 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 389 | 397 | k-permalink from:body -> { | |
| 390 | 398 | let b = document.body.dataset; | |
| @@ -383,8 +383,16 @@ | |||||
| 383 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 383 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 384 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 384 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 385 | }; | 385 | }; | ||
| 386 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 386 | + | k-split from:body -> { |
| 387 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 387 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 388 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 389 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 390 | + | }; | |||
| 391 | + | k-unified from:body -> { | |||
| 392 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 393 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 394 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 395 | + | }; | |||
| 388 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 396 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 389 | k-permalink from:body -> { | 397 | k-permalink from:body -> { | ||
| 390 | let b = document.body.dataset; | 398 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/blob-trojan.html +10 -2
| @@ -450,8 +450,16 @@ | |||
| 450 | 450 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 451 | 451 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 452 | 452 | }; | |
| 453 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 454 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 453 | + | k-split from:body -> { | |
| 454 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 455 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 456 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 457 | + | }; | |
| 458 | + | k-unified from:body -> { | |
| 459 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 460 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 461 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 462 | + | }; | |
| 455 | 463 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 456 | 464 | k-permalink from:body -> { | |
| 457 | 465 | let b = document.body.dataset; | |
| @@ -450,8 +450,16 @@ | |||||
| 450 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 450 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 451 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 451 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 452 | }; | 452 | }; | ||
| 453 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 453 | + | k-split from:body -> { |
| 454 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 454 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 455 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 456 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 457 | + | }; | |||
| 458 | + | k-unified from:body -> { | |||
| 459 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 460 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 461 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 462 | + | }; | |||
| 455 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 463 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 456 | k-permalink from:body -> { | 464 | k-permalink from:body -> { | ||
| 457 | let b = document.body.dataset; | 465 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/commit-big.html +10 -2
| @@ -420,8 +420,16 @@ | |||
| 420 | 420 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 421 | 421 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 422 | 422 | }; | |
| 423 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 424 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 423 | + | k-split from:body -> { | |
| 424 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 425 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 426 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 427 | + | }; | |
| 428 | + | k-unified from:body -> { | |
| 429 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 430 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 431 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 432 | + | }; | |
| 425 | 433 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 426 | 434 | k-permalink from:body -> { | |
| 427 | 435 | let b = document.body.dataset; | |
| @@ -420,8 +420,16 @@ | |||||
| 420 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 420 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 421 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 421 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 422 | }; | 422 | }; | ||
| 423 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 423 | + | k-split from:body -> { |
| 424 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 424 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 425 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 426 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 427 | + | }; | |||
| 428 | + | k-unified from:body -> { | |||
| 429 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 430 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 431 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 432 | + | }; | |||
| 425 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 433 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 426 | k-permalink from:body -> { | 434 | k-permalink from:body -> { | ||
| 427 | let b = document.body.dataset; | 435 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/commit-binary.html +10 -2
| @@ -415,8 +415,16 @@ | |||
| 415 | 415 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 416 | 416 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 417 | 417 | }; | |
| 418 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 419 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 418 | + | k-split from:body -> { | |
| 419 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 420 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 421 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 422 | + | }; | |
| 423 | + | k-unified from:body -> { | |
| 424 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 425 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 426 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 427 | + | }; | |
| 420 | 428 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 421 | 429 | k-permalink from:body -> { | |
| 422 | 430 | let b = document.body.dataset; | |
| @@ -415,8 +415,16 @@ | |||||
| 415 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 415 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 416 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 416 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 417 | }; | 417 | }; | ||
| 418 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 418 | + | k-split from:body -> { |
| 419 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 419 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 420 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 421 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 422 | + | }; | |||
| 423 | + | k-unified from:body -> { | |||
| 424 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 425 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 426 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 427 | + | }; | |||
| 420 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 428 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 421 | k-permalink from:body -> { | 429 | k-permalink from:body -> { | ||
| 422 | let b = document.body.dataset; | 430 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/commit-merge.html +10 -2
| @@ -454,8 +454,16 @@ | |||
| 454 | 454 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 455 | 455 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 456 | 456 | }; | |
| 457 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 458 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 457 | + | k-split from:body -> { | |
| 458 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 459 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 460 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 461 | + | }; | |
| 462 | + | k-unified from:body -> { | |
| 463 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 464 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 465 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 466 | + | }; | |
| 459 | 467 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 460 | 468 | k-permalink from:body -> { | |
| 461 | 469 | let b = document.body.dataset; | |
| @@ -454,8 +454,16 @@ | |||||
| 454 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 454 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 455 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 455 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 456 | }; | 456 | }; | ||
| 457 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 457 | + | k-split from:body -> { |
| 458 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 458 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 459 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 460 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 461 | + | }; | |||
| 462 | + | k-unified from:body -> { | |||
| 463 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 464 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 465 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 466 | + | }; | |||
| 459 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 467 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 460 | k-permalink from:body -> { | 468 | k-permalink from:body -> { | ||
| 461 | let b = document.body.dataset; | 469 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/commit-modify-split.html +10 -2
| @@ -575,8 +575,16 @@ And <b>html</b> & "quotes".</pre> | |||
| 575 | 575 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 576 | 576 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 577 | 577 | }; | |
| 578 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 579 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 578 | + | k-split from:body -> { | |
| 579 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 580 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 581 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 582 | + | }; | |
| 583 | + | k-unified from:body -> { | |
| 584 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 585 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 586 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 587 | + | }; | |
| 580 | 588 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 581 | 589 | k-permalink from:body -> { | |
| 582 | 590 | let b = document.body.dataset; | |
| @@ -575,8 +575,16 @@ And <b>html</b> & "quotes".</pre> | |||||
| 575 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 575 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 576 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 576 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 577 | }; | 577 | }; | ||
| 578 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 578 | + | k-split from:body -> { |
| 579 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 579 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 580 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 581 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 582 | + | }; | |||
| 583 | + | k-unified from:body -> { | |||
| 584 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 585 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 586 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 587 | + | }; | |||
| 580 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 588 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 581 | k-permalink from:body -> { | 589 | k-permalink from:body -> { | ||
| 582 | let b = document.body.dataset; | 590 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/commit-modify.html +10 -2
| @@ -575,8 +575,16 @@ And <b>html</b> & "quotes".</pre> | |||
| 575 | 575 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 576 | 576 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 577 | 577 | }; | |
| 578 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 579 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 578 | + | k-split from:body -> { | |
| 579 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 580 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 581 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 582 | + | }; | |
| 583 | + | k-unified from:body -> { | |
| 584 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 585 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 586 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 587 | + | }; | |
| 580 | 588 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 581 | 589 | k-permalink from:body -> { | |
| 582 | 590 | let b = document.body.dataset; | |
| @@ -575,8 +575,16 @@ And <b>html</b> & "quotes".</pre> | |||||
| 575 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 575 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 576 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 576 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 577 | }; | 577 | }; | ||
| 578 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 578 | + | k-split from:body -> { |
| 579 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 579 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 580 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 581 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 582 | + | }; | |||
| 583 | + | k-unified from:body -> { | |||
| 584 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 585 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 586 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 587 | + | }; | |||
| 580 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 588 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 581 | k-permalink from:body -> { | 589 | k-permalink from:body -> { | ||
| 582 | let b = document.body.dataset; | 590 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/commit-rename.html +10 -2
| @@ -480,8 +480,16 @@ | |||
| 480 | 480 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 481 | 481 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 482 | 482 | }; | |
| 483 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 484 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 483 | + | k-split from:body -> { | |
| 484 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 485 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 486 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 487 | + | }; | |
| 488 | + | k-unified from:body -> { | |
| 489 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 490 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 491 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 492 | + | }; | |
| 485 | 493 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 486 | 494 | k-permalink from:body -> { | |
| 487 | 495 | let b = document.body.dataset; | |
| @@ -480,8 +480,16 @@ | |||||
| 480 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 480 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 481 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 481 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 482 | }; | 482 | }; | ||
| 483 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 483 | + | k-split from:body -> { |
| 484 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 484 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 485 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 486 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 487 | + | }; | |||
| 488 | + | k-unified from:body -> { | |||
| 489 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 490 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 491 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 492 | + | }; | |||
| 485 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 493 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 486 | k-permalink from:body -> { | 494 | k-permalink from:body -> { | ||
| 487 | let b = document.body.dataset; | 495 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/commit-root.html +10 -2
| @@ -796,8 +796,16 @@ | |||
| 796 | 796 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 797 | 797 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 798 | 798 | }; | |
| 799 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 800 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 799 | + | k-split from:body -> { | |
| 800 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 801 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 802 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 803 | + | }; | |
| 804 | + | k-unified from:body -> { | |
| 805 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 806 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 807 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 808 | + | }; | |
| 801 | 809 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 802 | 810 | k-permalink from:body -> { | |
| 803 | 811 | let b = document.body.dataset; | |
| @@ -796,8 +796,16 @@ | |||||
| 796 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 796 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 797 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 797 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 798 | }; | 798 | }; | ||
| 799 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 799 | + | k-split from:body -> { |
| 800 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 800 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 801 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 802 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 803 | + | }; | |||
| 804 | + | k-unified from:body -> { | |||
| 805 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 806 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 807 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 808 | + | }; | |||
| 801 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 809 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 802 | k-permalink from:body -> { | 810 | k-permalink from:body -> { | ||
| 803 | let b = document.body.dataset; | 811 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/commit-trojan.html +10 -2
| @@ -589,8 +589,16 @@ | |||
| 589 | 589 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 590 | 590 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 591 | 591 | }; | |
| 592 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 593 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 592 | + | k-split from:body -> { | |
| 593 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 594 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 595 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 596 | + | }; | |
| 597 | + | k-unified from:body -> { | |
| 598 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 599 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 600 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 601 | + | }; | |
| 594 | 602 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 595 | 603 | k-permalink from:body -> { | |
| 596 | 604 | let b = document.body.dataset; | |
| @@ -589,8 +589,16 @@ | |||||
| 589 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 589 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 590 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 590 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 591 | }; | 591 | }; | ||
| 592 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 592 | + | k-split from:body -> { |
| 593 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 593 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 594 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 595 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 596 | + | }; | |||
| 597 | + | k-unified from:body -> { | |||
| 598 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 599 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 600 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 601 | + | }; | |||
| 594 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 602 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 595 | k-permalink from:body -> { | 603 | k-permalink from:body -> { | ||
| 596 | let b = document.body.dataset; | 604 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/commits-page2.html +10 -2
| @@ -398,8 +398,16 @@ | |||
| 398 | 398 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 399 | 399 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 400 | 400 | }; | |
| 401 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 402 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 401 | + | k-split from:body -> { | |
| 402 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 403 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 404 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 405 | + | }; | |
| 406 | + | k-unified from:body -> { | |
| 407 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 408 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 409 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 410 | + | }; | |
| 403 | 411 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 404 | 412 | k-permalink from:body -> { | |
| 405 | 413 | let b = document.body.dataset; | |
| @@ -398,8 +398,16 @@ | |||||
| 398 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 398 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 399 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 399 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 400 | }; | 400 | }; | ||
| 401 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 401 | + | k-split from:body -> { |
| 402 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 402 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 403 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 404 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 405 | + | }; | |||
| 406 | + | k-unified from:body -> { | |||
| 407 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 408 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 409 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 410 | + | }; | |||
| 403 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 411 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 404 | k-permalink from:body -> { | 412 | k-permalink from:body -> { | ||
| 405 | let b = document.body.dataset; | 413 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/commits-path.html +10 -2
| @@ -413,8 +413,16 @@ | |||
| 413 | 413 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 414 | 414 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 415 | 415 | }; | |
| 416 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 417 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 416 | + | k-split from:body -> { | |
| 417 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 418 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 419 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 420 | + | }; | |
| 421 | + | k-unified from:body -> { | |
| 422 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 423 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 424 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 425 | + | }; | |
| 418 | 426 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 419 | 427 | k-permalink from:body -> { | |
| 420 | 428 | let b = document.body.dataset; | |
| @@ -413,8 +413,16 @@ | |||||
| 413 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 413 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 414 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 414 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 415 | }; | 415 | }; | ||
| 416 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 416 | + | k-split from:body -> { |
| 417 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 417 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 418 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 419 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 420 | + | }; | |||
| 421 | + | k-unified from:body -> { | |||
| 422 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 423 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 424 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 425 | + | }; | |||
| 418 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 426 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 419 | k-permalink from:body -> { | 427 | k-permalink from:body -> { | ||
| 420 | let b = document.body.dataset; | 428 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/commits-root.html +10 -2
| @@ -1200,8 +1200,16 @@ | |||
| 1200 | 1200 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 1201 | 1201 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 1202 | 1202 | }; | |
| 1203 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 1204 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 1203 | + | k-split from:body -> { | |
| 1204 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 1205 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 1206 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 1207 | + | }; | |
| 1208 | + | k-unified from:body -> { | |
| 1209 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 1210 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 1211 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 1212 | + | }; | |
| 1205 | 1213 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 1206 | 1214 | k-permalink from:body -> { | |
| 1207 | 1215 | let b = document.body.dataset; | |
| @@ -1200,8 +1200,16 @@ | |||||
| 1200 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 1200 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 1201 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 1201 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 1202 | }; | 1202 | }; | ||
| 1203 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 1203 | + | k-split from:body -> { |
| 1204 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 1204 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 1205 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 1206 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 1207 | + | }; | |||
| 1208 | + | k-unified from:body -> { | |||
| 1209 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 1210 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 1211 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 1212 | + | }; | |||
| 1205 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 1213 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 1206 | k-permalink from:body -> { | 1214 | k-permalink from:body -> { | ||
| 1207 | let b = document.body.dataset; | 1215 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/commits-small.html +10 -2
| @@ -565,8 +565,16 @@ | |||
| 565 | 565 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 566 | 566 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 567 | 567 | }; | |
| 568 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 569 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 568 | + | k-split from:body -> { | |
| 569 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 570 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 571 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 572 | + | }; | |
| 573 | + | k-unified from:body -> { | |
| 574 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 575 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 576 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 577 | + | }; | |
| 570 | 578 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 571 | 579 | k-permalink from:body -> { | |
| 572 | 580 | let b = document.body.dataset; | |
| @@ -565,8 +565,16 @@ | |||||
| 565 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 565 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 566 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 566 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 567 | }; | 567 | }; | ||
| 568 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 568 | + | k-split from:body -> { |
| 569 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 569 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 570 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 571 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 572 | + | }; | |||
| 573 | + | k-unified from:body -> { | |||
| 574 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 575 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 576 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 577 | + | }; | |||
| 570 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 578 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 571 | k-permalink from:body -> { | 579 | k-permalink from:body -> { | ||
| 572 | let b = document.body.dataset; | 580 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/empty.html +10 -2
| @@ -259,8 +259,16 @@ | |||
| 259 | 259 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 260 | 260 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 261 | 261 | }; | |
| 262 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 263 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 262 | + | k-split from:body -> { | |
| 263 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 264 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 265 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 266 | + | }; | |
| 267 | + | k-unified from:body -> { | |
| 268 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 269 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 270 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 271 | + | }; | |
| 264 | 272 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 265 | 273 | k-permalink from:body -> { | |
| 266 | 274 | let b = document.body.dataset; | |
| @@ -259,8 +259,16 @@ | |||||
| 259 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 259 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 260 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 260 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 261 | }; | 261 | }; | ||
| 262 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 262 | + | k-split from:body -> { |
| 263 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 263 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 264 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 265 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 266 | + | }; | |||
| 267 | + | k-unified from:body -> { | |||
| 268 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 269 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 270 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 271 | + | }; | |||
| 264 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 272 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 265 | k-permalink from:body -> { | 273 | k-permalink from:body -> { | ||
| 266 | let b = document.body.dataset; | 274 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/home.html +10 -2
| @@ -295,8 +295,16 @@ | |||
| 295 | 295 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 296 | 296 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 297 | 297 | }; | |
| 298 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 299 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 298 | + | k-split from:body -> { | |
| 299 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 300 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 301 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 302 | + | }; | |
| 303 | + | k-unified from:body -> { | |
| 304 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 305 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 306 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 307 | + | }; | |
| 300 | 308 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 301 | 309 | k-permalink from:body -> { | |
| 302 | 310 | let b = document.body.dataset; | |
| @@ -295,8 +295,16 @@ | |||||
| 295 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 295 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 296 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 296 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 297 | }; | 297 | }; | ||
| 298 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 298 | + | k-split from:body -> { |
| 299 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 299 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 300 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 301 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 302 | + | }; | |||
| 303 | + | k-unified from:body -> { | |||
| 304 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 305 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 306 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 307 | + | }; | |||
| 300 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 308 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 301 | k-permalink from:body -> { | 309 | k-permalink from:body -> { | ||
| 302 | let b = document.body.dataset; | 310 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/not-found-page.html +10 -2
| @@ -242,8 +242,16 @@ | |||
| 242 | 242 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 243 | 243 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 244 | 244 | }; | |
| 245 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 246 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 245 | + | k-split from:body -> { | |
| 246 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 247 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 248 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 249 | + | }; | |
| 250 | + | k-unified from:body -> { | |
| 251 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 252 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 253 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 254 | + | }; | |
| 247 | 255 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 248 | 256 | k-permalink from:body -> { | |
| 249 | 257 | let b = document.body.dataset; | |
| @@ -242,8 +242,16 @@ | |||||
| 242 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 242 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 243 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 243 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 244 | }; | 244 | }; | ||
| 245 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 245 | + | k-split from:body -> { |
| 246 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 246 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 247 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 248 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 249 | + | }; | |||
| 250 | + | k-unified from:body -> { | |||
| 251 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 252 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 253 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 254 | + | }; | |||
| 247 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 255 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 248 | k-permalink from:body -> { | 256 | k-permalink from:body -> { | ||
| 249 | let b = document.body.dataset; | 257 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/not-found.html +10 -2
| @@ -242,8 +242,16 @@ | |||
| 242 | 242 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 243 | 243 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 244 | 244 | }; | |
| 245 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 246 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 245 | + | k-split from:body -> { | |
| 246 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 247 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 248 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 249 | + | }; | |
| 250 | + | k-unified from:body -> { | |
| 251 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 252 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 253 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 254 | + | }; | |
| 247 | 255 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 248 | 256 | k-permalink from:body -> { | |
| 249 | 257 | let b = document.body.dataset; | |
| @@ -242,8 +242,16 @@ | |||||
| 242 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 242 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 243 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 243 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 244 | }; | 244 | }; | ||
| 245 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 245 | + | k-split from:body -> { |
| 246 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 246 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 247 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 248 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 249 | + | }; | |||
| 250 | + | k-unified from:body -> { | |||
| 251 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 252 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 253 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 254 | + | }; | |||
| 247 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 255 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 248 | k-permalink from:body -> { | 256 | k-permalink from:body -> { | ||
| 249 | let b = document.body.dataset; | 257 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/refs.html +10 -2
| @@ -466,8 +466,16 @@ | |||
| 466 | 466 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 467 | 467 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 468 | 468 | }; | |
| 469 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 470 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 469 | + | k-split from:body -> { | |
| 470 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 471 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 472 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 473 | + | }; | |
| 474 | + | k-unified from:body -> { | |
| 475 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 476 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 477 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 478 | + | }; | |
| 471 | 479 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 472 | 480 | k-permalink from:body -> { | |
| 473 | 481 | let b = document.body.dataset; | |
| @@ -466,8 +466,16 @@ | |||||
| 466 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 466 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 467 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 467 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 468 | }; | 468 | }; | ||
| 469 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 469 | + | k-split from:body -> { |
| 470 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 470 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 471 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 472 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 473 | + | }; | |||
| 474 | + | k-unified from:body -> { | |||
| 475 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 476 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 477 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 478 | + | }; | |||
| 471 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 479 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 472 | k-permalink from:body -> { | 480 | k-permalink from:body -> { | ||
| 473 | let b = document.body.dataset; | 481 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/summary.html +13 -3
| @@ -75,7 +75,9 @@ | |||
| 75 | 75 | </nav> | |
| 76 | 76 | </header> | |
| 77 | 77 | <div class="work has-rail"> | |
| 78 | - | <p class="lede work-lede">A demo repository</p> | |
| 78 | + | <section class="work-lede" aria-label="Description"> | |
| 79 | + | <p class="lede">A demo repository</p> | |
| 80 | + | </section> | |
| 79 | 81 | <main id="main" tabindex="-1"> | |
| 80 | 82 | <section class="card readme" aria-labelledby="readme-h"> | |
| 81 | 83 | <h2 class="card-h" id="readme-h"> | |
| @@ -482,8 +484,16 @@ | |||
| 482 | 484 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 483 | 485 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 484 | 486 | }; | |
| 485 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 486 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 487 | + | k-split from:body -> { | |
| 488 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 489 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 490 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 491 | + | }; | |
| 492 | + | k-unified from:body -> { | |
| 493 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 494 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 495 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 496 | + | }; | |
| 487 | 497 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 488 | 498 | k-permalink from:body -> { | |
| 489 | 499 | let b = document.body.dataset; | |
| @@ -75,7 +75,9 @@ | |||||
| 75 | </nav> | 75 | </nav> | ||
| 76 | </header> | 76 | </header> | ||
| 77 | <div class="work has-rail"> | 77 | <div class="work has-rail"> | ||
| 78 | - | <p class="lede work-lede">A demo repository</p> | 78 | + | <section class="work-lede" aria-label="Description"> |
| 79 | + | <p class="lede">A demo repository</p> | |||
| 80 | + | </section> | |||
| 79 | <main id="main" tabindex="-1"> | 81 | <main id="main" tabindex="-1"> | ||
| 80 | <section class="card readme" aria-labelledby="readme-h"> | 82 | <section class="card readme" aria-labelledby="readme-h"> | ||
| 81 | <h2 class="card-h" id="readme-h"> | 83 | <h2 class="card-h" id="readme-h"> | ||
| @@ -482,8 +484,16 @@ | |||||
| 482 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 484 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 483 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 485 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 484 | }; | 486 | }; | ||
| 485 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 487 | + | k-split from:body -> { |
| 486 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 488 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 489 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 490 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 491 | + | }; | |||
| 492 | + | k-unified from:body -> { | |||
| 493 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 494 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 495 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 496 | + | }; | |||
| 487 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 497 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 488 | k-permalink from:body -> { | 498 | k-permalink from:body -> { | ||
| 489 | let b = document.body.dataset; | 499 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/tree-nested.html +10 -2
| @@ -401,8 +401,16 @@ | |||
| 401 | 401 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 402 | 402 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 403 | 403 | }; | |
| 404 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 405 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 404 | + | k-split from:body -> { | |
| 405 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 406 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 407 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 408 | + | }; | |
| 409 | + | k-unified from:body -> { | |
| 410 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 411 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 412 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 413 | + | }; | |
| 406 | 414 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 407 | 415 | k-permalink from:body -> { | |
| 408 | 416 | let b = document.body.dataset; | |
| @@ -401,8 +401,16 @@ | |||||
| 401 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 401 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 402 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 402 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 403 | }; | 403 | }; | ||
| 404 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 404 | + | k-split from:body -> { |
| 405 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 405 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 406 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 407 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 408 | + | }; | |||
| 409 | + | k-unified from:body -> { | |||
| 410 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 411 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 412 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 413 | + | }; | |||
| 406 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 414 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 407 | k-permalink from:body -> { | 415 | k-permalink from:body -> { | ||
| 408 | let b = document.body.dataset; | 416 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/tree-root.html +10 -2
| @@ -700,8 +700,16 @@ | |||
| 700 | 700 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 701 | 701 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 702 | 702 | }; | |
| 703 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 704 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 703 | + | k-split from:body -> { | |
| 704 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 705 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 706 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 707 | + | }; | |
| 708 | + | k-unified from:body -> { | |
| 709 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 710 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 711 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 712 | + | }; | |
| 705 | 713 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 706 | 714 | k-permalink from:body -> { | |
| 707 | 715 | let b = document.body.dataset; | |
| @@ -700,8 +700,16 @@ | |||||
| 700 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 700 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 701 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 701 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 702 | }; | 702 | }; | ||
| 703 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 703 | + | k-split from:body -> { |
| 704 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 704 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 705 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 706 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 707 | + | }; | |||
| 708 | + | k-unified from:body -> { | |||
| 709 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 710 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 711 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 712 | + | }; | |||
| 705 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 713 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 706 | k-permalink from:body -> { | 714 | k-permalink from:body -> { | ||
| 707 | let b = document.body.dataset; | 715 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/tree-slash-ref.html +10 -2
| @@ -398,8 +398,16 @@ | |||
| 398 | 398 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 399 | 399 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 400 | 400 | }; | |
| 401 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 402 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 401 | + | k-split from:body -> { | |
| 402 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 403 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 404 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 405 | + | }; | |
| 406 | + | k-unified from:body -> { | |
| 407 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 408 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 409 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 410 | + | }; | |
| 403 | 411 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 404 | 412 | k-permalink from:body -> { | |
| 405 | 413 | let b = document.body.dataset; | |
| @@ -398,8 +398,16 @@ | |||||
| 398 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 398 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 399 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 399 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 400 | }; | 400 | }; | ||
| 401 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 401 | + | k-split from:body -> { |
| 402 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 402 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 403 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 404 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 405 | + | }; | |||
| 406 | + | k-unified from:body -> { | |||
| 407 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 408 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 409 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 410 | + | }; | |||
| 403 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 411 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 404 | k-permalink from:body -> { | 412 | k-permalink from:body -> { | ||
| 405 | let b = document.body.dataset; | 413 | let b = document.body.dataset; | ||
M cmd/ermite/testdata/web/tree-subdir.html +10 -2
| @@ -429,8 +429,16 @@ | |||
| 429 | 429 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 430 | 430 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 431 | 431 | }; | |
| 432 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 433 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 432 | + | k-split from:body -> { | |
| 433 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 434 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 435 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 436 | + | }; | |
| 437 | + | k-unified from:body -> { | |
| 438 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 439 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 440 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 441 | + | }; | |
| 434 | 442 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 435 | 443 | k-permalink from:body -> { | |
| 436 | 444 | let b = document.body.dataset; | |
| @@ -429,8 +429,16 @@ | |||||
| 429 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 429 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 430 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 430 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 431 | }; | 431 | }; | ||
| 432 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 432 | + | k-split from:body -> { |
| 433 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 433 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 434 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 435 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 436 | + | }; | |||
| 437 | + | k-unified from:body -> { | |||
| 438 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 439 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 440 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 441 | + | }; | |||
| 434 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 442 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 435 | k-permalink from:body -> { | 443 | k-permalink from:body -> { | ||
| 436 | let b = document.body.dataset; | 444 | let b = document.body.dataset; | ||
M cmd/ermite/web_test.go +22 -0
| @@ -9,6 +9,7 @@ import ( | |||
| 9 | 9 | "os" | |
| 10 | 10 | "path/filepath" | |
| 11 | 11 | "regexp" | |
| 12 | + | "strconv" | |
| 12 | 13 | "strings" | |
| 13 | 14 | "testing" | |
| 14 | 15 | ||
| @@ -262,3 +263,24 @@ func TestWebContentSecurity(t *testing.T) { | |||
| 262 | 263 | assert.Equal(t, 404, st, p) | |
| 263 | 264 | } | |
| 264 | 265 | } | |
| 266 | + | ||
| 267 | + | // The summary rail names the newest tag; with more tags than it dates, it | |
| 268 | + | // gives their count instead of an empty block. | |
| 269 | + | func TestWebSummaryLatestTag(t *testing.T) { | |
| 270 | + | h := newHarness(t, harnessOpts{}) | |
| 271 | + | h.webRepo("demo") | |
| 272 | + | _, _, body := h.get("/demo") | |
| 273 | + | assert.Contains(t, body, `<a class="tag-name" href="/demo/tree/v0.2.0">`) | |
| 274 | + | assert.Contains(t, body, `<p class="tag-sub dim">add main.go</p>`) | |
| 275 | + | ||
| 276 | + | h.seed("many", domain.VisibilityPublic, "a.txt") | |
| 277 | + | wt := t.TempDir() | |
| 278 | + | h.mustGit(wt, "clone", "-q", h.urlAuth(adminToken, "/many.git"), ".") | |
| 279 | + | for i := range 21 { | |
| 280 | + | h.mustGit(wt, "tag", "t"+strconv.Itoa(i)) | |
| 281 | + | } | |
| 282 | + | h.mustGit(wt, "push", "-q", "--tags", "origin") | |
| 283 | + | _, _, body = h.get("/many") | |
| 284 | + | assert.NotContains(t, body, `class="latest-tag"`) | |
| 285 | + | assert.Contains(t, body, `<p class="dim">21 tags</p>`) | |
| 286 | + | } | |
| @@ -9,6 +9,7 @@ import ( | |||||
| 9 | "os" | 9 | "os" | ||
| 10 | "path/filepath" | 10 | "path/filepath" | ||
| 11 | "regexp" | 11 | "regexp" | ||
| 12 | + | "strconv" | |||
| 12 | "strings" | 13 | "strings" | ||
| 13 | "testing" | 14 | "testing" | ||
| 14 | 15 | ||||
| @@ -262,3 +263,24 @@ func TestWebContentSecurity(t *testing.T) { | |||||
| 262 | assert.Equal(t, 404, st, p) | 263 | assert.Equal(t, 404, st, p) | ||
| 263 | } | 264 | } | ||
| 264 | } | 265 | } | ||
| 266 | + | ||||
| 267 | + | // The summary rail names the newest tag; with more tags than it dates, it | |||
| 268 | + | // gives their count instead of an empty block. | |||
| 269 | + | func TestWebSummaryLatestTag(t *testing.T) { | |||
| 270 | + | h := newHarness(t, harnessOpts{}) | |||
| 271 | + | h.webRepo("demo") | |||
| 272 | + | _, _, body := h.get("/demo") | |||
| 273 | + | assert.Contains(t, body, `<a class="tag-name" href="/demo/tree/v0.2.0">`) | |||
| 274 | + | assert.Contains(t, body, `<p class="tag-sub dim">add main.go</p>`) | |||
| 275 | + | ||||
| 276 | + | h.seed("many", domain.VisibilityPublic, "a.txt") | |||
| 277 | + | wt := t.TempDir() | |||
| 278 | + | h.mustGit(wt, "clone", "-q", h.urlAuth(adminToken, "/many.git"), ".") | |||
| 279 | + | for i := range 21 { | |||
| 280 | + | h.mustGit(wt, "tag", "t"+strconv.Itoa(i)) | |||
| 281 | + | } | |||
| 282 | + | h.mustGit(wt, "push", "-q", "--tags", "origin") | |||
| 283 | + | _, _, body = h.get("/many") | |||
| 284 | + | assert.NotContains(t, body, `class="latest-tag"`) | |||
| 285 | + | assert.Contains(t, body, `<p class="dim">21 tags</p>`) | |||
| 286 | + | } | |||
M internal/adapters/web/assets.go +2 -1
| @@ -128,7 +128,8 @@ func loadAssets() (*assetSet, error) { | |||
| 128 | 128 | sc.set(&s.urls, put("js", sc.file, b, "text/javascript; charset=utf-8")) | |
| 129 | 129 | } | |
| 130 | 130 | ||
| 131 | - | icon, err := staticFS.ReadFile("static/icon.svg") | |
| 131 | + | // The favicon is the brand picture of the header. | |
| 132 | + | icon, err := staticFS.ReadFile("static/icons/brand.svg") | |
| 132 | 133 | if err != nil { | |
| 133 | 134 | return nil, err | |
| 134 | 135 | } | |
| @@ -128,7 +128,8 @@ func loadAssets() (*assetSet, error) { | |||||
| 128 | sc.set(&s.urls, put("js", sc.file, b, "text/javascript; charset=utf-8")) | 128 | sc.set(&s.urls, put("js", sc.file, b, "text/javascript; charset=utf-8")) | ||
| 129 | } | 129 | } | ||
| 130 | 130 | ||||
| 131 | - | icon, err := staticFS.ReadFile("static/icon.svg") | 131 | + | // The favicon is the brand picture of the header. |
| 132 | + | icon, err := staticFS.ReadFile("static/icons/brand.svg") | |||
| 132 | if err != nil { | 133 | if err != nil { | ||
| 133 | return nil, err | 134 | return nil, err | ||
| 134 | } | 135 | } | ||
M internal/adapters/web/keys.templ +10 -2
| @@ -52,8 +52,16 @@ templ Keys() { | |||
| 52 | 52 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | |
| 53 | 53 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | |
| 54 | 54 | }; | |
| 55 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 56 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | |
| 55 | + | k-split from:body -> { | |
| 56 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 57 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |
| 58 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 59 | + | }; | |
| 60 | + | k-unified from:body -> { | |
| 61 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |
| 62 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |
| 63 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |
| 64 | + | }; | |
| 57 | 65 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | |
| 58 | 66 | k-permalink from:body -> { | |
| 59 | 67 | let b = document.body.dataset; | |
| @@ -52,8 +52,16 @@ templ Keys() { | |||||
| 52 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | 52 | let i = ns.findIndex(n => n.getBoundingClientRect().top > innerHeight / 3); | ||
| 53 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | 53 | let n = ns[i < 0 ? 0 : i]; n.closest('details') && (n.closest('details').open = true); n.scrollIntoView({ block: 'center' }) | ||
| 54 | }; | 54 | }; | ||
| 55 | - | k-split from:body -> q('[data-diff]').attr['data-diff'] = 'split'; sessionStorage.setItem('diff', 'split'); q('[data-file]').arr().forEach(d => d.open = true); | 55 | + | k-split from:body -> { |
| 56 | - | k-unified from:body -> q('[data-diff]').attr['data-diff'] = 'unified'; sessionStorage.setItem('diff', 'unified'); q('[data-file]').arr().forEach(d => d.open = true); | 56 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; |
| 57 | + | el.dataset.diff = 'split'; sessionStorage.setItem('diff', 'split'); | |||
| 58 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 59 | + | }; | |||
| 60 | + | k-unified from:body -> { | |||
| 61 | + | let el = q('[data-diff]').arr()[0]; if (!el) return; | |||
| 62 | + | el.dataset.diff = 'unified'; sessionStorage.setItem('diff', 'unified'); | |||
| 63 | + | q('[data-file]').arr().filter(d => d.querySelector('.dt')).forEach(d => d.open = true) | |||
| 64 | + | }; | |||
| 57 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | 65 | k-collapse from:body -> { let fs = q('[data-file]').arr(), open = !fs.some(d => d.open); fs.forEach(d => d.open = open) }; | ||
| 58 | k-permalink from:body -> { | 66 | k-permalink from:body -> { | ||
| 59 | let b = document.body.dataset; | 67 | let b = document.body.dataset; | ||
M internal/adapters/web/keys_templ.go +1 -1 generated file: collapsed
M internal/adapters/web/pages.templ +2 -0
| @@ -71,6 +71,8 @@ templ summaryRail(p SummaryPage) { | |||
| 71 | 71 | <p class="tag-sub dim">{ p.Latest.Subject }</p> | |
| 72 | 72 | } | |
| 73 | 73 | </div> | |
| 74 | + | } else { | |
| 75 | + | <p class="dim">{ plural(p.Latest.Count, "tag", "tags") }</p> | |
| 74 | 76 | } | |
| 75 | 77 | </section> | |
| 76 | 78 | } | |
| @@ -71,6 +71,8 @@ templ summaryRail(p SummaryPage) { | |||||
| 71 | <p class="tag-sub dim">{ p.Latest.Subject }</p> | 71 | <p class="tag-sub dim">{ p.Latest.Subject }</p> | ||
| 72 | } | 72 | } | ||
| 73 | </div> | 73 | </div> | ||
| 74 | + | } else { | |||
| 75 | + | <p class="dim">{ plural(p.Latest.Count, "tag", "tags") }</p> | |||
| 74 | } | 76 | } | ||
| 75 | </section> | 77 | </section> | ||
| 76 | } | 78 | } | ||
M internal/adapters/web/pages_templ.go +170 -152 generated file: collapsed
M internal/adapters/web/shell.templ +1 -1
| @@ -26,7 +26,7 @@ templ Shell(l Layout, rail templ.Component) { | |||
| 26 | 26 | @Header(l) | |
| 27 | 27 | <div class={ "work", templ.KV("has-rail", l.HasRail && rail != nil) }> | |
| 28 | 28 | if l.Lede != "" { | |
| 29 | - | <p class="lede work-lede">{ l.Lede }</p> | |
| 29 | + | <section class="work-lede" aria-label="Description"><p class="lede">{ l.Lede }</p></section> | |
| 30 | 30 | } | |
| 31 | 31 | <main id="main" tabindex="-1"> | |
| 32 | 32 | { children... } | |
| @@ -26,7 +26,7 @@ templ Shell(l Layout, rail templ.Component) { | |||||
| 26 | @Header(l) | 26 | @Header(l) | ||
| 27 | <div class={ "work", templ.KV("has-rail", l.HasRail && rail != nil) }> | 27 | <div class={ "work", templ.KV("has-rail", l.HasRail && rail != nil) }> | ||
| 28 | if l.Lede != "" { | 28 | if l.Lede != "" { | ||
| 29 | - | <p class="lede work-lede">{ l.Lede }</p> | 29 | + | <section class="work-lede" aria-label="Description"><p class="lede">{ l.Lede }</p></section> |
| 30 | } | 30 | } | ||
| 31 | <main id="main" tabindex="-1"> | 31 | <main id="main" tabindex="-1"> | ||
| 32 | { children... } | 32 | { children... } | ||
M internal/adapters/web/shell_templ.go +3 -3 generated file: collapsed
M internal/adapters/web/static/css/20-shell.css +0 -1
| @@ -124,7 +124,6 @@ | |||
| 124 | 124 | .rail section > :not(h2) { margin: var(--s3) var(--s4); } | |
| 125 | 125 | .rail section > .list { margin: var(--s2) 0; } | |
| 126 | 126 | .rail section > p + p { margin-top: calc(-1 * var(--s2)); } | |
| 127 | - | .rail h2 .count + a { margin-left: auto; } | |
| 128 | 127 | ||
| 129 | 128 | /* newest tag in the summary rail */ | |
| 130 | 129 | .latest-tag { | |
| @@ -124,7 +124,6 @@ | |||||
| 124 | .rail section > :not(h2) { margin: var(--s3) var(--s4); } | 124 | .rail section > :not(h2) { margin: var(--s3) var(--s4); } | ||
| 125 | .rail section > .list { margin: var(--s2) 0; } | 125 | .rail section > .list { margin: var(--s2) 0; } | ||
| 126 | .rail section > p + p { margin-top: calc(-1 * var(--s2)); } | 126 | .rail section > p + p { margin-top: calc(-1 * var(--s2)); } | ||
| 127 | - | .rail h2 .count + a { margin-left: auto; } | |||
| 128 | 127 | ||||
| 129 | /* newest tag in the summary rail */ | 128 | /* newest tag in the summary rail */ | ||
| 130 | .latest-tag { | 129 | .latest-tag { | ||
D internal/adapters/web/static/icon.svg +0 -19
| @@ -1,19 +0,0 @@ | |||
| 1 | - | <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"> | |
| 2 | - | <rect x=".5" y=".5" width="31" height="31" rx="7" fill="#181818" stroke="#2c2c2c"/> | |
| 3 | - | <circle cx="22.5" cy="20" r="9" fill="#fff" opacity=".06"/> | |
| 4 | - | <circle cx="6" cy="6.5" r=".7" fill="#5a5a5a"/> | |
| 5 | - | <circle cx="15" cy="4.5" r=".55" fill="#4a4a4a"/> | |
| 6 | - | <rect x="3" y="25.6" width="26" height="1.2" rx=".6" fill="#333"/> | |
| 7 | - | <rect x="4" y="21.4" width="8" height="4.2" rx="1.6" fill="#555"/> | |
| 8 | - | <g fill="none" stroke="#cfcfcf" stroke-linecap="round" stroke-linejoin="round"> | |
| 9 | - | <path stroke-width="4.4" d="M10.6 13.2 Q8.2 16.4 8.6 20.4"/> | |
| 10 | - | <path stroke-width="3.4" d="M8.8 20.2 L14.4 19.2 L15 25"/> | |
| 11 | - | <path stroke-width="2.2" d="M10.8 14.6 Q14 17.6 17 17"/> | |
| 12 | - | </g> | |
| 13 | - | <circle cx="11.6" cy="9.8" r="2.6" fill="#cfcfcf"/> | |
| 14 | - | <path stroke="#6e6e6e" stroke-width="1.6" stroke-linecap="round" d="M18.8 25.4 L26.4 23.4 M18.8 23.4 L26.4 25.4"/> | |
| 15 | - | <path fill="#f2f2f2" d="M22.6 23.6 C19.6 22.6 19.7 19.2 21.5 16.4 C21.7 18.2 22.6 18.8 23.2 17.5 C23.4 15.8 22.9 14.6 22.4 13.8 C25.2 15.2 27.2 18.8 25.7 21.8 C25.2 22.8 24 23.6 22.6 23.6 Z"/> | |
| 16 | - | <path fill="#8a8a8a" d="M22.7 23.2 C21.4 22.7 21.4 21 22.5 19.6 C22.7 20.6 23.4 20.8 23.8 20.2 C24.7 21.5 24.2 23.1 22.7 23.2 Z"/> | |
| 17 | - | <circle cx="20.6" cy="12.6" r=".55" fill="#9a9a9a"/> | |
| 18 | - | <circle cx="25.2" cy="11.2" r=".45" fill="#777"/> | |
| 19 | - | </svg> | |
| @@ -1,19 +0,0 @@ | |||||
| 1 | - | <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"> | |||
| 2 | - | <rect x=".5" y=".5" width="31" height="31" rx="7" fill="#181818" stroke="#2c2c2c"/> | |||
| 3 | - | <circle cx="22.5" cy="20" r="9" fill="#fff" opacity=".06"/> | |||
| 4 | - | <circle cx="6" cy="6.5" r=".7" fill="#5a5a5a"/> | |||
| 5 | - | <circle cx="15" cy="4.5" r=".55" fill="#4a4a4a"/> | |||
| 6 | - | <rect x="3" y="25.6" width="26" height="1.2" rx=".6" fill="#333"/> | |||
| 7 | - | <rect x="4" y="21.4" width="8" height="4.2" rx="1.6" fill="#555"/> | |||
| 8 | - | <g fill="none" stroke="#cfcfcf" stroke-linecap="round" stroke-linejoin="round"> | |||
| 9 | - | <path stroke-width="4.4" d="M10.6 13.2 Q8.2 16.4 8.6 20.4"/> | |||
| 10 | - | <path stroke-width="3.4" d="M8.8 20.2 L14.4 19.2 L15 25"/> | |||
| 11 | - | <path stroke-width="2.2" d="M10.8 14.6 Q14 17.6 17 17"/> | |||
| 12 | - | </g> | |||
| 13 | - | <circle cx="11.6" cy="9.8" r="2.6" fill="#cfcfcf"/> | |||
| 14 | - | <path stroke="#6e6e6e" stroke-width="1.6" stroke-linecap="round" d="M18.8 25.4 L26.4 23.4 M18.8 23.4 L26.4 25.4"/> | |||
| 15 | - | <path fill="#f2f2f2" d="M22.6 23.6 C19.6 22.6 19.7 19.2 21.5 16.4 C21.7 18.2 22.6 18.8 23.2 17.5 C23.4 15.8 22.9 14.6 22.4 13.8 C25.2 15.2 27.2 18.8 25.7 21.8 C25.2 22.8 24 23.6 22.6 23.6 Z"/> | |||
| 16 | - | <path fill="#8a8a8a" d="M22.7 23.2 C21.4 22.7 21.4 21 22.5 19.6 C22.7 20.6 23.4 20.8 23.8 20.2 C24.7 21.5 24.2 23.1 22.7 23.2 Z"/> | |||
| 17 | - | <circle cx="20.6" cy="12.6" r=".55" fill="#9a9a9a"/> | |||
| 18 | - | <circle cx="25.2" cy="11.2" r=".45" fill="#777"/> | |||
| 19 | - | </svg> | |||