1 |
efrain |
1 |
{"version":3,"file":"imageboardrenderer.min.js","sources":["../src/imageboardrenderer.js"],"sourcesContent":["/**\n * Unilabel type imageboard\n *\n * @author Andreas Schenkel\n * @copyright Andreas Schenkel {@link https://github.com/andreasschenkel}\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport * as Str from 'core/str';\n\n/**\n * @param {string} cmid\n * @param {string} canvaswidth\n * @param {string} canvasheight\n * @param {boolean} autoscale\n * @param {boolean} showgrid\n */\nexport const init = (cmid, canvaswidth, canvasheight, autoscale, showgrid) => {\n if (autoscale === true) {\n // To autoscale we can not just listen to the risize event from the window.\n // We have to check the size of the module container. It will change its size depending on the left and right drawers.\n // To accomplish this, we use the resizeObserver object.\n\n // The container we want be informed about its resize.\n const moduleContainer = document.querySelector(\"#module-\" + cmid + \" div.activity-item\");\n\n // Now we create the resizeObserver object.\n const resizeObserver = new ResizeObserver(function() {\n resize(moduleContainer, cmid, canvaswidth, canvasheight);\n });\n resizeObserver.observe(moduleContainer); // Connect the resizeObserver with the moduleContainer.\n\n resize(moduleContainer, cmid, canvaswidth, canvasheight);\n }\n\n const gridtoggler = document.getElementById(\"unilabeltype-imageboard-gridtoggler-\" + cmid);\n const togglerText = gridtoggler.querySelector('.unilabeltype-imageboard-toggle-text');\n const helpergrid = document.getElementById(\"unilabeltype-imageboard-helpergrid-\" + cmid);\n\n if (showgrid === true) {\n showGrid(togglerText, helpergrid);\n }\n\n gridtoggler.addEventListener(\"click\", function(event) {\n event.stopPropagation();\n event.preventDefault();\n if (helpergrid.classList.contains(\"hidden\")) {\n showGrid(togglerText, helpergrid);\n } else {\n hideGrid(togglerText, helpergrid);\n }\n });\n\n /**\n * Helper function to remove the grid from imageboard.\n *\n * @param {object} button\n * @param {object} helpergrid\n */\n function showGrid(button, helpergrid) {\n helpergrid.classList.remove(\"hidden\");\n button.value = 'gridvisible';\n Str.get_string('buttonlabelhelpergridhide', 'unilabeltype_imageboard').done(function(text) {\n button.innerText = text;\n });\n }\n\n /**\n * Helper function to remove the grid from imageboard.\n *\n * @param {object} button\n * @param {object} helpergrid\n */\n function hideGrid(button, helpergrid) {\n helpergrid.classList.add(\"hidden\");\n button.value = 'gridhidden';\n Str.get_string('buttonlabelhelpergridshow', 'unilabeltype_imageboard').done(function(text) {\n button.innerText = text;\n });\n }\n\n /**\n * Helper function to get the width of the usable browserarea.\n *\n * @param {Element} moduleContainer\n * @returns {*|number}\n */\n function getWidth(moduleContainer) {\n let style = window.getComputedStyle(moduleContainer);\n let xPadding = parseInt(style.paddingLeft) + parseInt(style.paddingRight);\n return moduleContainer.clientWidth - xPadding;\n }\n\n /**\n * Resizes the imageboard when autoscale is set true.\n * @param {Element} moduleContainer\n * @param {string} cmid\n * @param {string} canvaswidth\n * @param {string} canvasheight\n */\n function resize(moduleContainer, cmid, canvaswidth, canvasheight) {\n const imageboardContainer = document.getElementById(\"unilabeltype-imageboard-container-\" + cmid);\n\n let newcanvaswidth = 0;\n newcanvaswidth = getWidth(moduleContainer);\n // Do not make backgroundimage larger than the configured width\n if (newcanvaswidth > canvaswidth) {\n newcanvaswidth = canvaswidth;\n }\n\n let widthfactor = newcanvaswidth / canvaswidth;\n\n const mydiv = document.getElementById(\"unilabeltype-imageboard-\" + cmid);\n\n mydiv.style.transform = \"scale(\" + widthfactor + \")\";\n mydiv.style.transformOrigin = \"0 0\";\n\n // Make the imageboardContainer just 20px larger than the imageboard.\n imageboardContainer.style.width = mydiv.offsetWidth * widthfactor + \"px\";\n\n // The height of the white space that is generated by scaling the div can be calculated\n let heightOfSpace = canvasheight * (1 - widthfactor);\n mydiv.style.marginBottom = \"-\" + heightOfSpace + \"px\";\n }\n};\n\n"],"names":["cmid","canvaswidth","canvasheight","autoscale","showgrid","moduleContainer","document","querySelector","ResizeObserver","resize","observe","gridtoggler","getElementById","togglerText","helpergrid","showGrid","button","classList","remove","value","Str","get_string","done","text","innerText","imageboardContainer","newcanvaswidth","style","window","getComputedStyle","xPadding","parseInt","paddingLeft","paddingRight","clientWidth","getWidth","widthfactor","mydiv","transform","transformOrigin","width","offsetWidth","heightOfSpace","marginBottom","addEventListener","event","stopPropagation","preventDefault","contains","add","hideGrid"],"mappings":";;;;;;;yBAiBoB,CAACA,KAAMC,YAAaC,aAAcC,UAAWC,gBAC3C,IAAdD,UAAoB,OAMdE,gBAAkBC,SAASC,cAAc,WAAaP,KAAO,sBAG5C,IAAIQ,gBAAe,WACtCC,OAAOJ,gBAAiBL,KAAMC,YAAaC,iBAEhCQ,QAAQL,iBAEvBI,OAAOJ,gBAAiBL,KAAMC,YAAaC,oBAGzCS,YAAcL,SAASM,eAAe,uCAAyCZ,MAC/Ea,YAAcF,YAAYJ,cAAc,wCACxCO,WAAaR,SAASM,eAAe,sCAAwCZ,eAsB1Ee,SAASC,OAAQF,YACtBA,WAAWG,UAAUC,OAAO,UAC5BF,OAAOG,MAAQ,cACfC,IAAIC,WAAW,4BAA6B,2BAA2BC,MAAK,SAASC,MACjFP,OAAOQ,UAAYD,iBAqClBd,OAAOJ,gBAAiBL,KAAMC,YAAaC,oBAC1CuB,oBAAsBnB,SAASM,eAAe,qCAAuCZ,UAEvF0B,eAAiB,EACrBA,wBAjBcrB,qBACVsB,MAAQC,OAAOC,iBAAiBxB,iBAChCyB,SAAWC,SAASJ,MAAMK,aAAeD,SAASJ,MAAMM,qBACrD5B,gBAAgB6B,YAAcJ,SAcpBK,CAAS9B,iBAEtBqB,eAAiBzB,cACjByB,eAAiBzB,iBAGjBmC,YAAcV,eAAiBzB,kBAE7BoC,MAAQ/B,SAASM,eAAe,2BAA6BZ,MAEnEqC,MAAMV,MAAMW,UAAY,SAAWF,YAAc,IACjDC,MAAMV,MAAMY,gBAAkB,MAG9Bd,oBAAoBE,MAAMa,MAAQH,MAAMI,YAAcL,YAAc,SAGhEM,cAAgBxC,cAAgB,EAAIkC,aACxCC,MAAMV,MAAMgB,aAAe,IAAMD,cAAgB,MAnFpC,IAAbtC,UACAW,SAASF,YAAaC,YAG1BH,YAAYiC,iBAAiB,SAAS,SAASC,OAC3CA,MAAMC,kBACND,MAAME,iBACFjC,WAAWG,UAAU+B,SAAS,UAC9BjC,SAASF,YAAaC,qBA0BZE,OAAQF,YACtBA,WAAWG,UAAUgC,IAAI,UACzBjC,OAAOG,MAAQ,aACfC,IAAIC,WAAW,4BAA6B,2BAA2BC,MAAK,SAASC,MACjFP,OAAOQ,UAAYD,QA5BnB2B,CAASrC,YAAaC"}
|