diff options
author | r <r@freesoftwareextremist.com> | 2021-05-30 09:13:47 +0000 |
---|---|---|
committer | r <r@freesoftwareextremist.com> | 2021-05-30 09:13:47 +0000 |
commit | 4ab53547a81aa954b694fbde292c14bd2d04b76c (patch) | |
tree | 4ed7280db468abc4b9a05bf05d5d32776772342a /static/fluoride.js | |
parent | 9f34b607498c09b4a21bdcc82b3295f6c94bd058 (diff) | |
parent | 44d4b0d379ddfe004bff710c5c3cb44692500ad4 (diff) | |
download | bloat-4ab53547a81aa954b694fbde292c14bd2d04b76c.tar.gz bloat-4ab53547a81aa954b694fbde292c14bd2d04b76c.zip |
Merge branch 'master' into absolute_fluoride
Diffstat (limited to 'static/fluoride.js')
-rw-r--r-- | static/fluoride.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/static/fluoride.js b/static/fluoride.js index 8244d80..c7f3109 100644 --- a/static/fluoride.js +++ b/static/fluoride.js @@ -270,6 +270,64 @@ function handleStatusLink(a) { a.target = "_blank"; } +function setPos(el, cx, cy, mw, mh) { + var h = el.clientHeight; + var w = el.clientWidth; + var left, top; + if (cx < mw/2) { + if (w + cx + 20 < mw) { + left = cx + 20; + } else { + left = (mw - w); + } + } else { + if (cx - w - 20 > 0) { + left = cx - w - 20; + } else { + left = 0; + } + } + top = (cy - (h/2)); + if (top < 0) { + top = 0; + } else if (top + h > mh) { + top = (mh - h); + } + el.style.left = left + "px"; + el.style.top = top + "px"; +} + +var imgPrev = null; +function handleImgPreview(a) { + a.onmouseenter = function(e) { + var mw = document.documentElement.clientWidth; + var mh = document.documentElement.clientHeight - 24; + var img = document.createElement("img"); + img.id = "img-preview"; + img.src = e.target.getAttribute("href"); + img.style["max-width"] = mw + "px"; + img.style["max-height"] = mh + "px"; + img.onload = function(e2) { + setPos(e2.target, e.clientX, e.clientY, mw, mh); + } + document.body.appendChild(img); + imgPrev = img; + } + a.onmouseleave = function(e) { + var img = document.getElementById("img-preview"); + if (img) + document.body.removeChild(img); + imgPrev = null; + } + a.onmousemove = function(e) { + if (!imgPrev) + return; + var mw = document.documentElement.clientWidth; + var mh = document.documentElement.clientHeight - 24; + setPos(imgPrev, e.clientX, e.clientY, mw, mh); + } +} + document.addEventListener("DOMContentLoaded", function() { checkCSRFToken(); checkAntiDopamineMode(); @@ -303,6 +361,11 @@ document.addEventListener("DOMContentLoaded", function() { for (var j = 0; j < links.length; j++) { links[j].target = "_blank"; } + + var links = document.querySelectorAll(".status-media-container .img-link"); + for (var j = 0; j < links.length; j++) { + handleImgPreview(links[j]); + } }); // @license-end |