MDL-67789 h5p: Save current state using xAPI State
[moodle.git] / h5p / amd / build / repository.min.js.map
blob868ebc6fa6cc27aa43d4cfa7dfc23f5312b6e1a5
1 {"version":3,"file":"repository.min.js","sources":["../src/repository.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 * Module to handle AJAX interactions.\n *\n * @module     core_h5p/repository\n * @copyright  2023 Andrew Nicols <andrew@nicols.co.uk>\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nimport {call as fetchMany} from 'core/ajax';\nimport * as config from 'core/config';\n\n/**\n * Send a xAPI statement to LMS.\n *\n * @param {string} component\n * @param {Object} statements\n * @returns {Promise}\n */\nexport const postStatement = (component, statements) => fetchMany([{\n    methodname: 'core_xapi_statement_post',\n    args: {\n        component,\n        requestjson: JSON.stringify(statements),\n    }\n}])[0];\n\n/**\n * Send a xAPI state to LMS.\n *\n * @param {string} component\n * @param {string} activityId\n * @param {Object} agent\n * @param {string} stateId\n * @param {string} stateData\n */\nexport const postState = (\n    component,\n    activityId,\n    agent,\n    stateId,\n    stateData,\n) => {\n    // Please note that we must use a Beacon send here.\n    // The XHR is not guaranteed because it will be aborted on page transition.\n    // https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API\n    // Note: Moodle does not currently have a sendBeacon API endpoint.\n    const requestUrl = new URL(`${config.wwwroot}/lib/ajax/service.php`);\n    requestUrl.searchParams.set('sesskey', config.sesskey);\n\n    navigator.sendBeacon(requestUrl, JSON.stringify([{\n        index: 0,\n        methodname: 'core_xapi_post_state',\n        args: {\n            component,\n            activityId,\n            agent: JSON.stringify(agent),\n            stateId,\n            stateData,\n        }\n    }]));\n};\n\n/**\n * Delete a xAPI state from LMS.\n *\n * @param {string} component\n * @param {string} activityId\n * @param {Object} agent\n * @param {string} stateId\n * @returns {Promise}\n */\nexport const deleteState = (\n    component,\n    activityId,\n    agent,\n    stateId,\n) => fetchMany([{\n    methodname: 'core_xapi_delete_state',\n    args: {\n        component,\n        activityId,\n        agent: JSON.stringify(agent),\n        stateId,\n    },\n}])[0];\n"],"names":["component","statements","methodname","args","requestjson","JSON","stringify","activityId","agent","stateId","stateData","requestUrl","URL","config","wwwroot","searchParams","set","sesskey","navigator","sendBeacon","index"],"mappings":";;;;;;;qCAgC6B,CAACA,UAAWC,cAAe,cAAU,CAAC,CAC/DC,WAAY,2BACZC,KAAM,CACFH,UAAAA,UACAI,YAAaC,KAAKC,UAAUL,gBAEhC,sBAWqB,CACrBD,UACAO,WACAC,MACAC,QACAC,mBAMMC,WAAa,IAAIC,cAAOC,OAAOC,kCACrCH,WAAWI,aAAaC,IAAI,UAAWH,OAAOI,SAE9CC,UAAUC,WAAWR,WAAYN,KAAKC,UAAU,CAAC,CAC7Cc,MAAO,EACPlB,WAAY,uBACZC,KAAM,CACFH,UAAAA,UACAO,WAAAA,WACAC,MAAOH,KAAKC,UAAUE,OACtBC,QAAAA,QACAC,UAAAA,qCAce,CACvBV,UACAO,WACAC,MACAC,WACC,cAAU,CAAC,CACZP,WAAY,yBACZC,KAAM,CACFH,UAAAA,UACAO,WAAAA,WACAC,MAAOH,KAAKC,UAAUE,OACtBC,QAAAA,YAEJ"}