// ==UserScript==
// @name Scale Sankaku Beta
// @version 0.1.3
// @description Resizes pics on Sankaku beta to full window size when you touch the left side of the window with your cursor. Uses the Magic Kernel Sharp algorithm for scaling.
// @author Octopus Hugger
// @icon https://s2.googleusercontent.com/s2/favicons?domain=https://beta.sankakucomplex.com/
// @grant GM_xmlhttpRequest
// @connect *
// @match *://beta.sankakucomplex.com/*
// @license WTFPL
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.2.0/js/bootstrap.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/lie/3.1.1/lie.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/pica/9.0.1/pica.min.js
// @namespace https://greasyfork.org/users/879890
// ==/UserScript==
// Changelog
// 0.1.3
// Improved text readout.
// 0.1.2
// Updated description and changelog and decreased rate of checking for Imagus.
// 0.1.1
// Fixed issue where the feature to always load original after it's been loaded at least once sometimes didn't work.
(function() {
'use strict';
if (window.top != window.self){ //-- Don't run on frames or iframes
return;
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function base64img(i){
let canvas = document.createElement('canvas');
canvas.width = i.width;
canvas.height = i.height;
let context = canvas.getContext("2d");
context.drawImage(i, 0, 0);
let blob = canvas.toDataURL("image/png");
return blob;
}
function ImgToCanvas(i){
let canvas = document.createElement('canvas');
canvas.width = i.width;
canvas.height = i.height;
let context = canvas.getContext("2d");
context.drawImage(i, 0, 0);
return canvas;
}
let resizer;
let resizer_mode = {
js: true,
wasm: true,
cib: false,
ww: true
};
function create_resizer() {
let opts = [];
Object.keys(resizer_mode).forEach(function (k) {
if (resizer_mode[k]) opts.push(k);
});
resizer = window.pica({ features: opts });
}
create_resizer();
let cancelactiveresizes;
let cancelresize = new Promise((_, reject) => cancelactiveresizes = reject);
let currentpic = "null?"
let maindiv = null
let savedwidth = null
let imagestore = {}
let mainimg = null
let towindowsize = false
let mydiv = null
let imgfirstload = true
let purgewaittime = 15000
function purgeimage(linkvar){
if (currentpic !== linkvar&&linkvar!=inprogress){
delete imagestore[linkvar]
}
else{
imagestore[linkvar+"myexpire"] = setTimeout(purgeimage,purgewaittime,linkvar)
}
}
function getSankImageType(linkvar){
if(linkvar==null||linkvar==undefined) return null
if(linkvar.search("preview")!==-1){
return "Thumbnail"
}
else if(linkvar.search("sample")!==-1){
return "Sample"
}
else {
return "Original"
}
}
let imagereadoutcount = 0
let readoutlinkvar=null
function imagereadout(inputtext,w,linkvar,editnumber){
if(linkvar!==null&&linkvar!==undefined&&linkvar!=="null?"){
if(readoutlinkvar!==null&&linkvar!==readoutlinkvar){
return
}
if(inputtext=="Waiting for server"&&getSankImageType(linkvar)=="Original") return
}
if(imagereadoutcount>=50&&inputtext!=="Scaling Complete"){
clearimagereadout()
if(linkvar.search("sankakucomplex.com")!==-1){
imagereadout(getSankImageType(linkvar),w,linkvar)
}
}
let currentreadout
if(editnumber!==undefined&&editnumber!==null){
currentreadout = imagereadoutcount
}
else{
imagereadoutcount+=1
currentreadout = imagereadoutcount
}
let readouttext = document.createElement("readouttext"+currentreadout)
readouttext.id = "readouttext"+currentreadout
readouttext.style.pointerEvents="none"
readouttext.style.backgroundColor="black"
readouttext.style["border-color"]="black"
if(inputtext=="Original") {
readouttext.style.backgroundColor="#F70DFF"
readouttext.style["border-color"]="#F70DFF"
}
else if(inputtext=="Sample") {
readouttext.style.backgroundColor="#1C37FF"
readouttext.style["border-color"]="#1C37FF"
}
else if(inputtext=="Thumbnail") {
readouttext.style.backgroundColor="#FF0000"
readouttext.style["border-color"]="#FF0000"
}
readouttext.style.color="white"
readouttext.style["border-style"]="solid"
readouttext.innerText=inputtext
if(document.getElementById('readouttext'+currentreadout) !== null){
document.getElementById('mydiv').replaceChild(readouttext,document.getElementById('readouttext'+currentreadout))
}
else{
document.getElementById('mydiv').appendChild(readouttext)
}
if(w==window.innerWidth||imagereadoutcount>1&&document.getElementById('readouttext'+(imagereadoutcount-1)).offsetLeft>=0){
if(imagereadoutcount>1&&document.getElementById('readouttext'+(imagereadoutcount-1)).offsetLeft<0){
for(let i=1;i<imagereadoutcount;i++){
document.getElementById('readouttext'+i).style.position="relative"
document.getElementById('readouttext'+i).style.top="-20px"
document.getElementById('readouttext'+i).style.left=(3*(i-1)+"px")
}
}
readouttext.style.position="relative"
readouttext.style.top="-20px"
readouttext.style.left=(3*(imagereadoutcount-1)+"px")
}
else{
if(imagereadoutcount>1&&document.getElementById('readouttext'+(imagereadoutcount-1)).offsetLeft>=0){
for(let i=1;i<imagereadoutcount;i++){
document.getElementById('readouttext'+i).style.position="absolute"
let down = 0
for(let u=1;u<i;u++) down+=Math.floor(document.getElementById('readouttext'+u).getBoundingClientRect().height)
document.getElementById('readouttext'+i).style.left="-"+Math.floor(document.getElementById('readouttext'+i).getBoundingClientRect().width)+"px"
document.getElementById('readouttext'+i).style.top=((i-1)*2)+down+"px"
}
}
readouttext.style.position="absolute"
let down = 0
for(let i=1;i<imagereadoutcount;i++) down+=Math.floor(document.getElementById('readouttext'+i).getBoundingClientRect().height)
readouttext.style.left="-"+(Math.floor(readouttext.getBoundingClientRect().width))+"px"
readouttext.style.top=((imagereadoutcount-1)*(2))+down+"px"
}
}
function clearimagereadout(){
if (imagereadoutcount>0){
for (let i=1;i<=imagereadoutcount;i++){
document.getElementById('readouttext'+i).setAttribute("style","display:none")
}
imagereadoutcount=0
readoutlinkvar=null
}
}
function resizenow(linkvar,width,height){
cancelactiveresizes();
let cancelresize = new Promise((_, reject) => cancelactiveresizes = reject);
if(towindowsize){
if (window.innerWidth/imagestore[linkvar].width<window.innerHeight/imagestore[linkvar].height){
height=Math.round(imagestore[linkvar].height*window.innerWidth/imagestore[linkvar].width)
width=window.innerWidth
}
else{
width=Math.round(imagestore[linkvar].width*window.innerHeight/imagestore[linkvar].height)
height=window.innerHeight
}
}
let imgbtmp = null
let imgCanvas = document.createElement("canvas"),
imgContext = imgCanvas.getContext("2d");
imgCanvas.width=Math.round(width);
imgCanvas.height=Math.round(height);
imgContext.drawImage(imagestore[linkvar], 0, 0, imgCanvas.width, imgCanvas.height);
let options = {cancelToken: cancelresize}
let starttime = Date.now()
resizer.resize(imagestore[linkvar], imgCanvas, options)
.then(function () {
imgCanvas.style.zIndex = 2147483648
imgCanvas.style.visibility = "visible";
imgCanvas.style.position="absolute";
imgCanvas.style.pointerEvents="none";
imgCanvas.style["box-shadow"]="0 0 100px black";
if(towindowsize){
if(mydiv==null){
mydiv=document.createElement('div')
mydiv.width="100%"
mydiv.height="100%"
}
mydiv.style.top=Math.round(getScrollTop()+window.innerHeight/2-height/2)+"px";
if(bigscreensankaku&&width>=window.innerWidth-280){
mydiv.style.left=Math.round((window.innerWidth-280)/2-width/2+280-(width-(window.innerWidth-280))/2)+"px";
}
else if(bigscreensankaku){
mydiv.style.left=Math.round((window.innerWidth-280)/2-width/2+280)+"px";
}
else{
mydiv.style.left=Math.round(window.innerWidth/2-width/2)+"px";
}
mydiv.id="mydiv"
mydiv.style.boxSizing="content-box"
mydiv.style.zIndex = 2147483648
mydiv.style.visibility = "visible";
mydiv.style.position="absolute";
mydiv.style.pointerEvents="none";
mydiv.style.display = "block"
let scaletime = Date.now()-starttime
if (scaletime < 1000){
imagereadout("Scaling Complete "+(scaletime)+"ms",width,null,2)
}
else if (scaletime <10000){
imagereadout("Scaling Complete "+(Math.round(scaletime/100)/10)+"s",width,null,2)
}
else{
imagereadout("Scaling Complete "+(Math.round(scaletime/1000))+"s",width,null,2)
}
if(document.getElementById('upscaledimgcanvas2') !== null){
mydiv.replaceChild(imgCanvas,document.getElementById('upscaledimgcanvas2'));
}
else{
document.body.parentNode.insertBefore(mydiv,null);
mydiv.insertBefore(imgCanvas,null);
}
imgCanvas.id="upscaledimgcanvas2";
setlast=2
}
else{
if(document.getElementById('upscaledimgcanvas') !== null){
maindiv.replaceChild(imgCanvas,document.getElementById('upscaledimgcanvas'));
}
else{
maindiv.insertBefore(imgCanvas,maindiv.firstChild);
}
imgCanvas.id="upscaledimgcanvas";
setlast=1
}
inprogress="null?"
currentpic = linkvar
clearTimeout(imagestore[linkvar+"myexpire"])
imagestore[linkvar+"myexpire"]=setTimeout(purgeimage,purgewaittime,linkvar)
})
.catch(function (err) {
inprogress="null?"
throw err;
});
}
function checkfordiv(){
if (maindiv==null){
let divs = document.getElementsByTagName("div")
for (let div of divs) {
if (div.style.zIndex == 2147483647) {
clearInterval(divchecking)
maindiv = div
resize_ob.observe(maindiv);
}
}
}
}
function loop(){
if (maindiv.style.display !== "none") {
}
}
let downloadstarttime = null
let bigscreensankaku = false
let thingie = null
let inprogressh = null
let inprogressw = null
let originalbutton = null
let requestcount = 0
let lastinprogress
function isCanvas(i) {
return i instanceof HTMLCanvasElement;
}
function grabimg_and_resize(linkvar,w,h){
if(linkvar!==null &&linkvar!== undefined&&linkvar!== ""&&bigscreensankaku){
if (imagestore[linkvar+"myoriginal"]){
linkvar = imagestore[linkvar+"myoriginal"]
}
let linkvarsplit=null
if(linkvar.search("sample")!==-1){
linkvarsplit=linkvar.split("-")[1].split(".")[0]
}
else if(linkvar.search("preview")!==-1){
linkvarsplit=linkvar.split("/")[7].split(".")[0]
}
else{
linkvarsplit=linkvar.split("/")[6].split(".")[0]
}
let originalfound=false
for(let key in imagestore){
if(key.search("myexpire")==-1&&key.search("myoriginal")==-1&&key.search("preview")==-1){
let keysplit=null
if(key.search("sample")!==-1){
keysplit=key.split("-")[1].split(".")[0]
}
else{
keysplit=key.split("/")[6].split(".")[0]
}
if(key.search("sample")==-1){
if(linkvarsplit==keysplit){
linkvar = key
console.log("found previously saved original key | "+key)
originalfound=true
break
}
}
}
}
if(linkvar.search("sample")==-1&&linkvar.search("preview")==-1){
originalfound=true
}
if(!originalfound){
for(let key in imagestore){
if(key.search("myexpire")==-1&&key.search("myoriginal")==-1&&key.search("preview")==-1){
let keysplit=null
if(key.search("sample")!==-1){
keysplit=key.split("-")[1].split(".")[0]
}
else{
keysplit=key.split("/")[6].split(".")[0]
}
if(linkvarsplit==keysplit){
linkvar=key
break
}
}
}
}
}
towindowsize=false
if (bigscreensankaku||w<window.innerWidth && h<window.innerHeight && w==mainimg.naturalWidth || w<window.innerWidth && h<window.innerHeight && w>window.innerWidth-30 || w<window.innerWidth && h<window.innerHeight && h>window.innerHeight-30||bigscreensankaku){
if (window.innerWidth/w<window.innerHeight/h){
h=Math.round(h*window.innerWidth/w)
w=window.innerWidth
}
else{
w=Math.round(w*window.innerHeight/h)
h=window.innerHeight
}
towindowsize = true
}
if(linkvar!==null &&linkvar!== undefined&&linkvar!== ""&&linkvar.split("?")[0]==inprogress.split("?")[0]&&inprogressh==h&&inprogressw==w){
}
else if (linkvar==currentpic&&inprogressh==h&&inprogressw==w){
if(document.getElementById('mydiv')==null){
mydiv=document.createElement('div')
mydiv.width="100%"
mydiv.height="100%"
}
else{
mydiv = document.getElementById('mydiv')
if(document.getElementById('upscaledimgcanvas2')){
w=document.getElementById('upscaledimgcanvas2').width
h=document.getElementById('upscaledimgcanvas2').height
}
}
mydiv.style.top=Math.round(getScrollTop()+window.innerHeight/2-h/2)+"px";
if(bigscreensankaku&&w>=window.innerWidth-280){
mydiv.style.left=Math.round((window.innerWidth-280)/2-w/2+280-(w-(window.innerWidth-280))/2)+"px";
}
else if(bigscreensankaku){
mydiv.style.left=Math.round((window.innerWidth-280)/2-w/2+280)+"px";
}
else{
mydiv.style.left=Math.round(window.innerWidth/2-w/2)+"px";
}
mydiv.id="mydiv"
if(document.getElementById('mydiv') !== null){
if(setlast==2){
document.getElementById('mydiv').setAttribute("style","display: block;visibility: visible;z-index: 2147483647;box-sizing: content-box;position: absolute;pointer-events: none;top:"+document.getElementById('mydiv').style.top+";left:"+document.getElementById('mydiv').style.left+";")
document.getElementById('mydiv').style.top=Math.floor(getScrollTop()+window.innerHeight/2-h/2)+"px";
}
}
if(document.getElementById('upscaledimgcanvas') !== null){
if(setlast==1){
document.getElementById('upscaledimgcanvas').setAttribute("style","z-index: 2147483647;display:block;position:absolute;visibility:visible;")
}
}
}
else{
if(linkvar!==null &&linkvar!== undefined&&linkvar!== ""){
if(linkvar.search(".mp4")==-1&&linkvar.search(".webm")==-1&&linkvar.search(".flv")==-1){
if(inprogress.split("?")[0]!== linkvar.split("?")[0]){
cancelactiveresizes();
if(linkvar.search("sankakucomplex.com")!==-1){
let linkvarsplit
if(linkvar.search("sample")!==-1){
linkvarsplit=linkvar.split("-")[1].split(".")[0]
}
else if(linkvar.search("preview")!==-1){
linkvarsplit=linkvar.split("/")[7].split(".")[0]
}
else{
linkvarsplit=linkvar.split("/")[6].split(".")[0]
}
let lastinprogresssplit
if(lastinprogress&&lastinprogress!=="null?"){
if(lastinprogress.search("sample")!==-1){
lastinprogresssplit=lastinprogress.split("-")[1].split(".")[0]
}
else if(lastinprogress.search("preview")!==-1){
lastinprogresssplit=lastinprogress.split("/")[7].split(".")[0]
}
else{
lastinprogresssplit=lastinprogress.split("/")[6].split(".")[0]
}
}
}
if(towindowsize){
let tempimage = document.createElement('img');
tempimage.setAttribute("src", linkvar);
tempimage.width = Math.round(w)
tempimage.height = Math.round(h)
tempimage.style.zIndex = 2147483648
tempimage.style.visibility = "visible";
tempimage.style.position="absolute";
tempimage.style.pointerEvents="none";
tempimage.style["box-shadow"]="0 0 100px black";
if(document.getElementById('mydiv')==null){
mydiv=document.createElement('div')
mydiv.width="100%"
mydiv.height="100%"
}
else{
mydiv = document.getElementById('mydiv')
}
mydiv.style.top=Math.round(getScrollTop()+window.innerHeight/2-h/2)+"px";
if(bigscreensankaku&&w>=window.innerWidth-280){
mydiv.style.left=Math.round((window.innerWidth-280)/2-w/2+280-(w-(window.innerWidth-280))/2)+"px";
}
else if(bigscreensankaku){
mydiv.style.left=Math.round((window.innerWidth-280)/2-w/2+280)+"px";
}
else{
mydiv.style.left=Math.round(window.innerWidth/2-w/2)+"px";
}
mydiv.id="mydiv"
mydiv.style.boxSizing="content-box"
mydiv.style.zIndex = 2147483648
mydiv.style.visibility = "visible";
mydiv.style.position="absolute";
mydiv.style.pointerEvents="none";
mydiv.style.display = "block"
if(document.getElementById('mydiv')==null){
document.body.parentNode.insertBefore(mydiv,null);
}
if(document.getElementById('upscaledimgcanvas2') !== null){
mydiv.replaceChild(tempimage,document.getElementById('upscaledimgcanvas2'));
}
else{
mydiv.insertBefore(tempimage,null)
}
tempimage.id="upscaledimgcanvas2";
clearimagereadout()
if(linkvar.search("sankakucomplex.com")!==-1){
imagereadout(getSankImageType(linkvar),w,linkvar)
}
}
lastinprogress=linkvar
inprogress = linkvar
inprogressh=h
inprogressw=w
let spin =0
function spinselect(input){
if(input==1) return "-"
if(input==2) return "\\"
if(input==3) return "|"
if(input==4) return "/"
}
function loadFailed(){
imagereadout("Failed to load image",w)
}
if(linkvar.search(".gif")==-1){
if (imagestore[linkvar]==null||imagestore[linkvar]==undefined){
requestcount+=1
let startsource = linkvar
let starttime = Date.now()
downloadstarttime = Date.now()
setTimeout(function() {
imgfirstload = true
GM_xmlhttpRequest({
method: 'GET',
url: startsource,
responseType: 'blob',
onload: function(resp) {
let requesttime = Date.now()-downloadstarttime
if (requesttime < 1000){
imagereadout("Image Request "+(requesttime)+"ms",w,linkvar,2)
}
else if (requesttime <10000){
imagereadout("Image Request "+(Math.round(requesttime/100)/10)+"s",w,linkvar,2)
}
else{
imagereadout("Image Request "+(Math.round(requesttime/1000))+"s",w,linkvar,2)
}
imagereadout("Scaling... ",w)
starttime = Date.now()
if (resp.response.type !== "image/gif"){
const img = new Image()
img.onload = (event) => {
URL.revokeObjectURL(event.target.src)
imagestore[startsource] = document.createElement("canvas")
imagestore[startsource].width = img.width
imagestore[startsource].height = img.height
let ctx = imagestore[startsource].getContext("2d")
ctx.drawImage(event.target, 0, 0)
imagestore[startsource+"myexpire"]=setTimeout(purgeimage,purgewaittime,startsource)
if(mainimg!==null&&mainimg!==undefined){
if(startsource == mainimg.src && w!==imagestore[startsource].width) {
resizenow(linkvar,w,h);
}
else inprogress="null?"
}
if(thingie!==null){
if(startsource==thingie.src&&bigscreensankaku) {
resizenow(linkvar,w,h);
}
else inprogress="null?"
}
}
img.src = URL.createObjectURL(resp.response)
}
},
onerror: loadFailed,
onabort: loadFailed,
onprogress: function(){
spin+=1
imagereadout("Requesting Image "+spinselect(spin)+" ",w,linkvar,2)
if (spin>=4) spin=0
},
onloadstart: function(){
starttime = Date.now()
imagereadout("Requesting Image / ",w,linkvar)
}
});
}, 0);
}
else {
imagereadout("Scaling... ",w)
resizenow(linkvar,w,h);
}
}
else {
imagereadout("HQ Gif Scaling Not Supported")
inprogress="null?"
}
}
}
else{
cancelactiveresizes();
if(document.getElementById('mydiv') !== null){
if(document.getElementById('mydiv').style.display !== "none"){
document.getElementById('mydiv').setAttribute("style","display:none;top:"+document.getElementById('mydiv').style.top+";left:"+document.getElementById('mydiv').style.left+";")
}
}
if(document.getElementById('upscaledimgcanvas') !== null){
if(document.getElementById('upscaledimgcanvas').style.display !== "none" && document.getElementById('upscaledimgcanvas').style.display !== null){
document.getElementById('upscaledimgcanvas').setAttribute("style","display:none;top:"+document.getElementById('upscaledimgcanvas').style.top+";left:"+document.getElementById('upscaledimgcanvas').style.left+";")
}
}
}
}
else{
cancelactiveresizes();
if(document.getElementById('mydiv') !== null){
if(document.getElementById('mydiv').style.display !== "none"){
document.getElementById('mydiv').setAttribute("style","display:none;top:"+document.getElementById('mydiv').style.top+";left:"+document.getElementById('mydiv').style.left+";")
}
}
if(document.getElementById('upscaledimgcanvas') !== null){
if(document.getElementById('upscaledimgcanvas').style.display !== "none" && document.getElementById('upscaledimgcanvas').style.display !== null){
document.getElementById('upscaledimgcanvas').setAttribute("style","display:none;top:"+document.getElementById('upscaledimgcanvas').style.top+";left:"+document.getElementById('upscaledimgcanvas').style.left+";")
}
}
}
}
}
const resize_ob = new ResizeObserver(function(entries) {
if(bigscreensankaku==false){
cancelactiveresizes();
let rect = entries[0].contentRect;
let w = rect.width;
let h = rect.height;
if(document.getElementById('upscaledimgcanvas') !== null){
document.getElementById('upscaledimgcanvas').setAttribute("style","display:none;top:"+document.getElementById('upscaledimgcanvas').style.top+";left:"+document.getElementById('upscaledimgcanvas').style.left+";")
}
if(document.getElementById('upscaledimgcanvas2') !== null){
document.getElementById('mydiv').setAttribute("style","display:none;top:"+document.getElementById('mydiv').style.top+";left:"+document.getElementById('mydiv').style.left+";")
}
if (h !== 0){
if(mainimg == null){
function checkforimg(input){
for (let elem of input){
if (elem.nodeName.toLowerCase() == "img") {
return elem;
}
}
return "wtf didn't find img"
}
mainimg = checkforimg(Array.from(maindiv.children))
mainimg.style.position="relative";
mainimg.style.zIndex=2147483646
}
grabimg_and_resize(mainimg.src,w,h)
}
}
});
let divchecking = setInterval(checkfordiv,300)
function getScrollTop() {
if (typeof window.pageYOffset !== "undefined" ) {
return window.pageYOffset;
}
let d = document.documentElement;
if (typeof d.clientHeight !== "undefined") {
return d.scrollTop;
}
return document.body.scrollTop;
}
let lastthingietop = null
let setlast = 0
let thingietop = null
let inprogress = "null?"
const sankobservob = new MutationObserver(function(mutationsList, observer){
if (bigscreensankaku){
for (let elem of document.getElementsByClassName("swiper-slide swiper-slide-active")){
if (elem.className.endsWith("active")){
thingietop = elem
thingie = elem.firstChild.firstChild.firstChild.firstChild
if(thingie!==null&&thingie!==undefined){
sankobservob.disconnect()
sankobservob.observe(thingietop, {attributes: true});
psankobservob.disconnect()
psankobservob.observe(thingie, {attributes: true, attributeOldValue: true});
grabimg_and_resize(thingie.src,thingie.naturalWidth,thingie.naturalHeight)
break
}
}
}
lastthingietop = thingietop
}
})
const psankobservob = new MutationObserver(function(mutationsList, observer){
for(const mutation of mutationsList) {
if (mutation.type=='attributes'&&mutation.attributeName=="src"&&bigscreensankaku&&thingietop.firstChild.firstChild.firstChild.firstChild==thingie){
if(mutation.oldValue!==null&&mutation.oldValue!==undefined){
if (mutation.oldValue.search("sample")!==-1||mutation.oldValue.search("preview")!==-1){
if(thingie.src.search("sample")==-1&&thingie.src.search("preview")==-1){
imagestore[mutation.oldValue+"myoriginal"] = thingie.src
}
}
}
grabimg_and_resize(thingie.src,thingie.naturalWidth,thingie.naturalHeight)
}
}
})
const buttonob = new MutationObserver(function(){
originalbutton.click();
})
document.addEventListener('keydown', function (zEvent) {
if (zEvent.key == "m"){
if(document.getElementById('mydiv') !== null){
if(document.getElementById('mydiv').style.display !== "none"){
document.getElementById('mydiv').setAttribute("style","display:none;top:"+document.getElementById('mydiv').style.top+";left:"+document.getElementById('mydiv').style.left+";")
setlast = 2
}
else if(setlast==2){
document.getElementById('mydiv').setAttribute("style","display: block;visibility: visible;z-index: 2147483647;box-sizing: content-box;position: absolute;pointer-events: none;top:"+document.getElementById('mydiv').style.top+";left:"+document.getElementById('mydiv').style.left+";")
}
}
if(document.getElementById('upscaledimgcanvas') !== null){
if(document.getElementById('upscaledimgcanvas').style.display !== "none" && document.getElementById('upscaledimgcanvas').style.display !== null){
document.getElementById('upscaledimgcanvas').setAttribute("style","display:none;top:"+document.getElementById('upscaledimgcanvas').style.top+";left:"+document.getElementById('upscaledimgcanvas').style.left+";")
setlast = 1
}
else if(setlast==1){
document.getElementById('upscaledimgcanvas').setAttribute("style","z-index: 2147483647;display:block;position:absolute;visibility:visible;")
}
}
}
else if (zEvent.key == "n"){
bigscreensankaku = !bigscreensankaku
if (bigscreensankaku){
for (let elem of document.getElementsByClassName("swiper-slide swiper-slide-active")){
if (elem.className.endsWith("active")){
thingietop = elem
thingie = elem.firstChild.firstChild.firstChild.firstChild
if(thingie!==null&&thingie!==undefined){
sankobservob.disconnect()
sankobservob.observe(thingietop, {attributes: true});
psankobservob.disconnect()
psankobservob.observe(thingie, {attributes: true, attributeOldValue: true});
grabimg_and_resize(thingie.src)
break
}
}
}
}
else{
psankobservob.disconnect()
sankobservob.disconnect()
}
if(document.getElementById('mydiv') !== null){
if(document.getElementById('mydiv').style.display !== "none"){
document.getElementById('mydiv').setAttribute("style","display:none;top:"+document.getElementById('mydiv').style.top+";left:"+document.getElementById('mydiv').style.left+";")
}
}
}
else if(zEvent.key == "0"){
imagereadout("Waiting for server",null,inprogress!=="null?"?inprogress:currentpic)
let originalsearch = document.getElementsByName("post_mode")
if(originalsearch){
for (let i = 0; i < originalsearch.length; i++) {
if(originalsearch[i].getAttribute("value") == "original"){
if(window.getComputedStyle(originalsearch[i]).getPropertyValue('color') !== "rgb(255, 140, 0)") {
originalsearch[i].click();
originalbutton = originalsearch[i]
let textsearch =document.getElementsByClassName('MuiTypography-root')
}
}
}
}
}
});
let leftareasize = 20
document.addEventListener('click', function (e) {
if (e.button==0&&e.mozInputSource==1&&e.pageX <=leftareasize&&window.location.href.includes("/post/")){
let listofel = document.getElementsByClassName("MuiButtonBase-root MuiFab-root")
if(listofel){
for (let i = 0; i < listofel.length; i++) {
if(listofel[i].getAttribute("aria-label") == "Prev"){
listofel[i].click();
break
}
}
}
}
});
document.addEventListener('mousemove', e => {
if(window.location.href.includes("https://beta.sankakucomplex.com")){
if (e.pageX <=leftareasize&&!bigscreensankaku&&window.location.href.includes("/post/")){
bigscreensankaku = !bigscreensankaku
if (bigscreensankaku){
for (let elem of document.getElementsByClassName("swiper-slide swiper-slide-active")){
if (elem.className.endsWith("active")){
thingietop = elem
thingie = elem.firstChild.firstChild.firstChild.firstChild
if(thingie!==null&&thingie!==undefined){
sankobservob.disconnect()
sankobservob.observe(thingietop, {attributes: true});
psankobservob.disconnect()
psankobservob.observe(thingie, {attributes: true, attributeOldValue: true});
grabimg_and_resize(thingie.src,thingie.naturalWidth,thingie.naturalHeight)
}
}
}
}
}
else if(e.pageX >leftareasize&&bigscreensankaku){
bigscreensankaku = !bigscreensankaku
cancelactiveresizes();
psankobservob.disconnect()
sankobservob.disconnect()
if(document.getElementById('mydiv') !== null){
if(document.getElementById('mydiv').style.display !== "none"){
document.getElementById('mydiv').setAttribute("style","display:none;top:"+document.getElementById('mydiv').style.top+";left:"+document.getElementById('mydiv').style.left+";")
}
}
}
}
});
})();