HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/8.0.30
System: Linux multiplicar 3.10.0-1160.102.1.el7.x86_64 #1 SMP Tue Oct 17 15:42:21 UTC 2023 x86_64
User: root (0)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /var/www/html/ceade.tocsa.com.py/payment/amd/build/gateways_modal.min.js.map
{"version":3,"file":"gateways_modal.min.js","sources":["../src/gateways_modal.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the logic for the gateways modal.\n *\n * @module     core_payment/gateways_modal\n * @copyright  2019 Shamim Rezaie <shamim@moodle.com>\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport ModalFactory from 'core/modal_factory';\nimport Templates from 'core/templates';\nimport {get_string as getString} from 'core/str';\nimport {getAvailableGateways} from './repository';\nimport Selectors from './selectors';\nimport ModalEvents from 'core/modal_events';\nimport PaymentEvents from 'core_payment/events';\nimport {add as addToast, addToastRegion} from 'core/toast';\nimport Notification from 'core/notification';\nimport ModalGateways from './modal_gateways';\n\n/**\n * Register event listeners for the module.\n */\nconst registerEventListeners = () => {\n    document.addEventListener('click', e => {\n        const gatewayTrigger = e.target.closest('[data-action=\"core_payment/triggerPayment\"]');\n        if (gatewayTrigger) {\n            e.preventDefault();\n\n            show(gatewayTrigger, {focusOnClose: e.target});\n        }\n    });\n};\n\n/**\n * Shows the gateway selector modal.\n *\n * @param {HTMLElement} rootNode\n * @param {Object} options - Additional options\n * @param {HTMLElement} options.focusOnClose The element to focus on when the modal is closed.\n */\nconst show = async(rootNode, {\n    focusOnClose = null,\n} = {}) => {\n    const modal = await ModalFactory.create({\n        type: ModalGateways.TYPE,\n        title: await getString('selectpaymenttype', 'core_payment'),\n        body: await Templates.render('core_payment/gateways_modal', {}),\n    });\n\n    const rootElement = modal.getRoot()[0];\n    addToastRegion(rootElement);\n\n    modal.show();\n\n    modal.getRoot().on(ModalEvents.hidden, () => {\n        // Destroy when hidden.\n        modal.destroy();\n        try {\n            focusOnClose.focus();\n        } catch (e) {\n            // eslint-disable-line\n        }\n    });\n\n    modal.getRoot().on(PaymentEvents.proceed, (e) => {\n        const gateway = (rootElement.querySelector(Selectors.values.gateway) || {value: ''}).value;\n\n        if (gateway) {\n            processPayment(\n                gateway,\n                rootNode.dataset.component,\n                rootNode.dataset.paymentarea,\n                rootNode.dataset.itemid,\n                rootNode.dataset.description\n            )\n            .then(message => {\n                modal.hide();\n                Notification.addNotification({\n                    message: message,\n                    type: 'success',\n                });\n                location.href = rootNode.dataset.successurl;\n\n                // The following return statement is never reached. It is put here just to make eslint happy.\n                return message;\n            })\n            .catch(message => Notification.alert('', message));\n        } else {\n            // We cannot use await in the following line.\n            // The reason is that we are preventing the default action of the save event being triggered,\n            // therefore we cannot define the event handler function asynchronous.\n            getString('nogatewayselected', 'core_payment').then(message => addToast(message)).catch();\n        }\n\n        e.preventDefault();\n    });\n\n    // Re-calculate the cost when gateway is changed.\n    rootElement.addEventListener('change', e => {\n        if (e.target.matches(Selectors.elements.gateways)) {\n            updateCostRegion(rootElement, rootNode.dataset.cost);\n        }\n    });\n\n    const gateways = await getAvailableGateways(rootNode.dataset.component, rootNode.dataset.paymentarea, rootNode.dataset.itemid);\n    const context = {\n        gateways\n    };\n\n    const {html, js} = await Templates.renderForPromise('core_payment/gateways', context);\n    Templates.replaceNodeContents(rootElement.querySelector(Selectors.regions.gatewaysContainer), html, js);\n    selectSingleGateway(rootElement);\n    await updateCostRegion(rootElement, rootNode.dataset.cost);\n};\n\n/**\n * Auto-select the gateway if there is only one gateway.\n *\n * @param {HTMLElement} root An HTMLElement that contains the cost region\n */\nconst selectSingleGateway = root => {\n    const gateways = root.querySelectorAll(Selectors.elements.gateways);\n\n    if (gateways.length == 1) {\n        gateways[0].checked = true;\n    }\n};\n\n/**\n * Shows the cost of the item the user is purchasing in the cost region.\n *\n * @param {HTMLElement} root An HTMLElement that contains the cost region\n * @param {string} defaultCost The default cost that is going to be displayed if no gateway is selected\n * @returns {Promise<void>}\n */\nconst updateCostRegion = async(root, defaultCost = '') => {\n    const gatewayElement = root.querySelector(Selectors.values.gateway);\n    const surcharge = parseInt((gatewayElement || {dataset: {surcharge: 0}}).dataset.surcharge);\n    const cost = (gatewayElement || {dataset: {cost: defaultCost}}).dataset.cost;\n\n    const {html, js} = await Templates.renderForPromise('core_payment/fee_breakdown', {fee: cost, surcharge});\n    Templates.replaceNodeContents(root.querySelector(Selectors.regions.costContainer), html, js);\n};\n\n/**\n * Process payment using the selected gateway.\n *\n * @param {string} gateway The gateway to be used for payment\n * @param {string} component Name of the component that the itemId belongs to\n * @param {string} paymentArea Name of the area in the component that the itemId belongs to\n * @param {number} itemId An internal identifier that is used by the component\n * @param {string} description Description of the payment\n * @returns {Promise<string>}\n */\nconst processPayment = async(gateway, component, paymentArea, itemId, description) => {\n    const paymentMethod = await import(`paygw_${gateway}/gateways_modal`);\n    return paymentMethod.process(component, paymentArea, itemId, description);\n};\n\n/**\n * Set up the payment actions.\n */\nexport const init = () => {\n    if (!init.initialised) {\n        // Event listeners should only be registered once.\n        init.initialised = true;\n        registerEventListeners();\n    }\n};\n\n/**\n * Whether the init function was called before.\n *\n * @static\n * @type {boolean}\n */\ninit.initialised = false;\n"],"names":["show","rootNode","focusOnClose","ModalFactory","ModalGateways","TYPE","Templates","render","type","title","body","create","modal","rootElement","getRoot","on","ModalEvents","hidden","destroy","focus","e","PaymentEvents","proceed","gateway","querySelector","Selectors","values","value","processPayment","dataset","component","paymentarea","itemid","description","then","message","hide","addNotification","location","href","successurl","catch","Notification","alert","preventDefault","addEventListener","target","matches","elements","gateways","updateCostRegion","cost","context","renderForPromise","html","js","replaceNodeContents","regions","gatewaysContainer","selectSingleGateway","root","querySelectorAll","length","checked","defaultCost","gatewayElement","surcharge","parseInt","fee","costContainer","paymentArea","itemId","paymentMethod","process","init","initialised","document","gatewayTrigger","closest"],"mappings":"kjDAuDMA,sDAAO,iBAAMC,kSAEf,4BADAC,aAAAA,yCAAe,oCAEKC,mCACVC,wBAAcC,sBACP,mBAAU,oBAAqB,wEAChCC,mBAAUC,OAAO,8BAA+B,yDAF5DC,iBACAC,kBACAC,+CAH6BC,oDAA3BC,oBAMAC,YAAcD,MAAME,UAAU,6BACrBD,aAEfD,MAAMZ,OAENY,MAAME,UAAUC,GAAGC,sBAAYC,QAAQ,WAEnCL,MAAMM,cAEFhB,aAAaiB,QACf,MAAOC,QAKbR,MAAME,UAAUC,GAAGM,gBAAcC,SAAS,SAACF,OACjCG,SAAWV,YAAYW,cAAcC,mBAAUC,OAAOH,UAAY,CAACI,MAAO,KAAKA,MAEjFJ,QACAK,eACIL,QACAtB,SAAS4B,QAAQC,UACjB7B,SAAS4B,QAAQE,YACjB9B,SAAS4B,QAAQG,OACjB/B,SAAS4B,QAAQI,aAEpBC,MAAK,SAAAC,gBACFvB,MAAMwB,6BACOC,gBAAgB,CACzBF,QAASA,QACT3B,KAAM,YAEV8B,SAASC,KAAOtC,SAAS4B,QAAQW,WAG1BL,WAEVM,OAAM,SAAAN,gBAAWO,sBAAaC,MAAM,GAAIR,gCAK/B,oBAAqB,gBAAgBD,MAAK,SAAAC,gBAAW,cAASA,YAAUM,QAGtFrB,EAAEwB,oBAIN/B,YAAYgC,iBAAiB,UAAU,SAAAzB,GAC/BA,EAAE0B,OAAOC,QAAQtB,mBAAUuB,SAASC,WACpCC,iBAAiBrC,YAAaZ,SAAS4B,QAAQsB,2BAIhC,oCAAqBlD,SAAS4B,QAAQC,UAAW7B,SAAS4B,QAAQE,YAAa9B,SAAS4B,QAAQG,uBAAjHiB,uBACAG,QAAU,CACZH,SAAAA,2BAGqB3C,mBAAU+C,iBAAiB,wBAAyBD,4DAAtEE,2BAAAA,KAAMC,yBAAAA,sBACHC,oBAAoB3C,YAAYW,cAAcC,mBAAUgC,QAAQC,mBAAoBJ,KAAMC,IACpGI,oBAAoB9C,8BACdqC,iBAAiBrC,YAAaZ,SAAS4B,QAAQsB,gHAQnDQ,oBAAsB,SAAAC,UAClBX,SAAWW,KAAKC,iBAAiBpC,mBAAUuB,SAASC,UAEnC,GAAnBA,SAASa,SACTb,SAAS,GAAGc,SAAU,IAWxBb,mEAAmB,kBAAMU,mNAAMI,0DAAc,GACzCC,eAAiBL,KAAKpC,cAAcC,mBAAUC,OAAOH,SACrD2C,UAAYC,UAAUF,gBAAkB,CAACpC,QAAS,CAACqC,UAAW,KAAKrC,QAAQqC,WAC3Ef,MAAQc,gBAAkB,CAACpC,QAAS,CAACsB,KAAMa,eAAenC,QAAQsB,sBAE/C7C,mBAAU+C,iBAAiB,6BAA8B,CAACe,IAAKjB,KAAMe,UAAAA,yDAAvFZ,4BAAAA,KAAMC,0BAAAA,sBACHC,oBAAoBI,KAAKpC,cAAcC,mBAAUgC,QAAQY,eAAgBf,KAAMC,kHAavF3B,iEAAiB,kBAAML,QAASO,UAAWwC,YAAaC,OAAQtC,+XACtBV,sUAAAA,sGAAAA,2CAAtCiD,uDACCA,cAAcC,QAAQ3C,UAAWwC,YAAaC,OAAQtC,2IAMpDyC,KAAO,SAAPA,OACJA,KAAKC,cAEND,KAAKC,aAAc,EA9IvBC,SAAS/B,iBAAiB,SAAS,SAAAzB,OACzByD,eAAiBzD,EAAE0B,OAAOgC,QAAQ,+CACpCD,iBACAzD,EAAEwB,iBAEF5C,KAAK6E,eAAgB,CAAC3E,aAAckB,EAAE0B,kCAoJlD4B,KAAKC,aAAc"}