Add scroll hints.

This commit is contained in:
Sage Vaillancourt 2023-02-07 15:04:56 -05:00
parent be9719be8c
commit 62ade8de28
3 changed files with 60 additions and 4 deletions

View File

@ -4,11 +4,40 @@ const getFileElements = () => getClassNameElementsArray('file')
const getSelectedFile = () => getClassNameElementsArray('file-selected')[0] const getSelectedFile = () => getClassNameElementsArray('file-selected')[0]
const changeFile = e => { const addScrollHints = () => {
const up = e.wheelDelta ? e.wheelDelta > 0 : e.deltaY < 0 getClassNameElementsArray('sages-extra-breadcrumbs').forEach(e => e.parentNode.removeChild(e))
const buildHint = (fileElement, prefix, top) => {
const hint = document.createElement('div', {})
hint.classList.add('sages-extra-breadcrumbs')
if (fileElement.classList.contains('file-viewed')) {
hint.classList.add('sages-extra-breadcrumbs-viewed')
}
hint.innerText = `${prefix} ${decodeURIComponent(fileElement.firstElementChild.href.split('#')[1])}`
if (top) {
hint.style.top = top
}
return hint;
}
const selectedFile = getSelectedFile() const selectedFile = getSelectedFile()
const fileElements = getFileElements() const fileElements = getFileElements()
const index = fileElements.indexOf(selectedFile) const index = fileElements.indexOf(selectedFile)
const breadcrumbs = Array.from(getChangeHeader().getElementsByTagName('h4'))[0]
console.log({ breadcrumbs })
if (index > 0) {
breadcrumbs.prepend(buildHint(fileElements[index - 1], 'Prev:', '2.1em'))
}
if (index < fileElements.length - 1) {
breadcrumbs.appendChild(buildHint(fileElements[index + 1], 'Next:'))
}
}
const changeFile = e => {
const selectedFile = getSelectedFile()
const fileElements = getFileElements()
const up = e.wheelDelta ? e.wheelDelta > 0 : e.deltaY < 0
const index = fileElements.indexOf(selectedFile)
const nextElement = const nextElement =
(up && index > 0) ? fileElements[index - 1] : (up && index > 0) ? fileElements[index - 1] :
(!up && index < (fileElements.length - 1)) ? fileElements[index + 1] : (!up && index < (fileElements.length - 1)) ? fileElements[index + 1] :
@ -17,8 +46,29 @@ const changeFile = e => {
nextElement?.firstElementChild?.click() nextElement?.firstElementChild?.click()
} }
let styled = false
addFix(() => { addFix(() => {
const header = getChangeHeader() const header = getChangeHeader()
console.log({ header })
header.onwheel = changeFile header.onwheel = changeFile
styled || addStyle(`
.sages-extra-breadcrumbs {
color: rgba(0, 0, 0, 0) !important;
margin-top: -2em !important;
/*margin-bottom: -1em !important;*/
float: left !important;
position: absolute;
font-size: 11px;
margin-left: 35%;
}
.diff-meta:hover h4 .sages-extra-breadcrumbs {
color: rgba(0, 0, 0, 0.35) !important;
}
.diff-meta:hover h4 .sages-extra-breadcrumbs-viewed {
color: rgba(0, 0, 0, 0.2) !important;
}
`)
styled = true
}) })
window.addEventListener('load', () => setTimeout(addScrollHints, NEW_PAGE_DELAY))
addEventListener('hashchange', () => setTimeout(addScrollHints, 100))

View File

@ -1,7 +1,7 @@
{ {
"name": "Sage's BitBucket Addon", "name": "Sage's BitBucket Addon",
"description": "Ensure searches don't include forks (and other enhancements)", "description": "Ensure searches don't include forks (and other enhancements)",
"version": "1.0.5", "version": "1.0.6",
"manifest_version": 2, "manifest_version": 2,
"browser_specific_settings": { "browser_specific_settings": {
"gecko": { "gecko": {

View File

@ -15,3 +15,9 @@ const getFileName = () => getClassNameElementsArray('file-breadcrumbs-segment-hi
const getCurrentUser = () => { const getCurrentUser = () => {
return getClassNameElementsArray("user-dropdown-trigger")[0].title.replace(/(.*\()|\)/g, '') return getClassNameElementsArray("user-dropdown-trigger")[0].title.replace(/(.*\()|\)/g, '')
} }
const addStyle = css => {
const styleElement = document.createElement('style')
styleElement.innerText = css.replaceAll("\n", " ")
document.head.appendChild(styleElement)
}