Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
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"}