Merge branch 'MDL-72310-master' of git://github.com/aanabit/moodle
[moodle.git] / course / format / amd / build / local / courseeditor / exporter.min.js.map
1 {"version":3,"sources":["../../../src/local/courseeditor/exporter.js"],"names":["reactive","state","data","sections","editmode","isEditing","sectionlist","course","forEach","sectionid","sectioninfo","section","get","push","hassections","length","cms","isactive","cmlist","cmid","cminfo","cm","hascms","nextcmid","currentindex","indexOf","id","type","name","number"],"mappings":"4rCA+BI,WAAYA,CAAZ,CAAsB,WAClB,KAAKA,QAAL,CAAgBA,CACnB,C,yCAQMC,C,CAAO,cAEJC,CAAI,CAAG,CACTC,QAAQ,CAAE,EADD,CAETC,QAAQ,CAAE,KAAKJ,QAAL,CAAcK,SAFf,CAFH,CAMJC,CAAW,WAAGL,CAAK,CAACM,MAAN,CAAaD,WAAhB,gBAA+B,EANtC,CAOVA,CAAW,CAACE,OAAZ,CAAoB,SAAAC,CAAS,CAAI,OACvBC,CAAW,WAAGT,CAAK,CAACU,OAAN,CAAcC,GAAd,CAAkBH,CAAlB,CAAH,gBAAmC,EADvB,CAEvBE,CAAO,CAAG,CAAI,CAACA,OAAL,CAAaV,CAAb,CAAoBS,CAApB,CAFa,CAG7BR,CAAI,CAACC,QAAL,CAAcU,IAAd,CAAmBF,CAAnB,CACH,CAJD,EAKAT,CAAI,CAACY,WAAL,CAA4C,CAAxB,EAAAZ,CAAI,CAACC,QAAL,CAAcY,MAAlC,CAEA,MAAOb,CAAAA,CACV,C,gCASOD,C,CAAOS,C,CAAa,cAClBC,CAAO,MACND,CADM,EAETM,GAAG,CAAE,EAFI,CAGTC,QAAQ,GAHC,EADW,CAMlBC,CAAM,WAAGR,CAAW,CAACQ,MAAf,gBAAyB,EANb,CAOxBA,CAAM,CAACV,OAAP,CAAe,SAAAW,CAAI,CAAI,IACbC,CAAAA,CAAM,CAAGnB,CAAK,CAACoB,EAAN,CAAST,GAAT,CAAaO,CAAb,CADI,CAEbE,CAAE,CAAG,CAAI,CAACA,EAAL,CAAQpB,CAAR,CAAemB,CAAf,CAFQ,CAGnBT,CAAO,CAACK,GAAR,CAAYH,IAAZ,CAAiBQ,CAAjB,CACH,CAJD,EAKAV,CAAO,CAACW,MAAR,CAAwC,CAAtB,EAAAX,CAAO,CAACK,GAAR,CAAYD,MAA9B,CAEA,MAAOJ,CAAAA,CACV,C,2BASEV,C,CAAOmB,C,CAAQ,CACd,GAAMC,CAAAA,CAAE,MACDD,CADC,EAEJH,QAAQ,GAFJ,EAAR,CAIA,MAAOI,CAAAA,CACV,C,wDAYepB,C,CAAOkB,C,CAAM,CACzB,GAAMC,CAAAA,CAAM,CAAGnB,CAAK,CAACoB,EAAN,CAAST,GAAT,CAAaO,CAAb,CAAf,CACA,GAAI,CAACC,CAAL,CAAa,CACT,MAAO,KACV,CAJwB,GAOrBG,CAAAA,CAPqB,CAQnBZ,CAAO,CAAGV,CAAK,CAACU,OAAN,CAAcC,GAAd,CAAkBQ,CAAM,CAACX,SAAzB,CARS,CASnBe,CAAY,QAAGb,CAAH,WAAGA,CAAH,QAAGA,CAAO,CAAEO,MAAT,CAAgBO,OAAhB,CAAwBL,CAAM,CAACM,EAA/B,CATI,CAUzB,GAAIF,CAAY,SAAhB,CAAgC,CAC5BD,CAAQ,QAAGZ,CAAH,WAAGA,CAAH,QAAGA,CAAO,CAAEO,MAAT,CAAgBM,CAAY,CAAG,CAA/B,CACd,CAED,MAAO,CACHG,IAAI,CAAE,IADH,CAEHD,EAAE,CAAEN,CAAM,CAACM,EAFR,CAGHE,IAAI,CAAER,CAAM,CAACQ,IAHV,CAIHL,QAAQ,CAARA,CAJG,CAMV,C,kEAYoBtB,C,CAAOQ,C,CAAW,CACnC,GAAMC,CAAAA,CAAW,CAAGT,CAAK,CAACU,OAAN,CAAcC,GAAd,CAAkBH,CAAlB,CAApB,CACA,GAAI,CAACC,CAAL,CAAkB,CACd,MAAO,KACV,CACD,MAAO,CACHiB,IAAI,CAAE,SADH,CAEHD,EAAE,CAAEhB,CAAW,CAACgB,EAFb,CAGHE,IAAI,CAAElB,CAAW,CAACkB,IAHf,CAIHC,MAAM,CAAEnB,CAAW,CAACmB,MAJjB,CAMV,C","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 export parts of the state and transform them to be used in templates\n * and as draggable data.\n *\n * @module     core_courseformat/local/courseeditor/exporter\n * @class      core_courseformat/local/courseeditor/exporter\n * @copyright  2021 Ferran Recio <ferran@moodle.com>\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nexport default class {\n\n    /**\n     * Class constructor.\n     *\n     * @param {CourseEditor} reactive the course editor object\n     */\n    constructor(reactive) {\n        this.reactive = reactive;\n    }\n\n    /**\n     * Generate the course export data from the state.\n     *\n     * @param {Object} state the current state.\n     * @returns {Object}\n     */\n    course(state) {\n        // Collect section information from the state.\n        const data = {\n            sections: [],\n            editmode: this.reactive.isEditing,\n        };\n        const sectionlist = state.course.sectionlist ?? [];\n        sectionlist.forEach(sectionid => {\n            const sectioninfo = state.section.get(sectionid) ?? {};\n            const section = this.section(state, sectioninfo);\n            data.sections.push(section);\n        });\n        data.hassections = (data.sections.length != 0);\n\n        return data;\n    }\n\n    /**\n     * Generate a section export data from the state.\n     *\n     * @param {Object} state the current state.\n     * @param {Object} sectioninfo the section state data.\n     * @returns {Object}\n     */\n    section(state, sectioninfo) {\n        const section = {\n            ...sectioninfo,\n            cms: [],\n            isactive: true,\n        };\n        const cmlist = sectioninfo.cmlist ?? [];\n        cmlist.forEach(cmid => {\n            const cminfo = state.cm.get(cmid);\n            const cm = this.cm(state, cminfo);\n            section.cms.push(cm);\n        });\n        section.hascms = (section.cms.length != 0);\n\n        return section;\n    }\n\n    /**\n     * Generate a cm export data from the state.\n     *\n     * @param {Object} state the current state.\n     * @param {Object} cminfo the course module state data.\n     * @returns {Object}\n     */\n    cm(state, cminfo) {\n        const cm = {\n            ...cminfo,\n            isactive: false,\n        };\n        return cm;\n    }\n\n    /**\n     * Generate a dragable cm data structure.\n     *\n     * This method is used by any draggable course module element to generate drop data\n     * for its reactive/dragdrop instance.\n     *\n     * @param {*} state the state object\n     * @param {*} cmid the cours emodule id\n     * @returns {Object|null}\n     */\n    cmDraggableData(state, cmid) {\n        const cminfo = state.cm.get(cmid);\n        if (!cminfo) {\n            return null;\n        }\n\n        // Drop an activity over the next activity is the same as doing anything.\n        let nextcmid;\n        const section = state.section.get(cminfo.sectionid);\n        const currentindex = section?.cmlist.indexOf(cminfo.id);\n        if (currentindex !== undefined) {\n            nextcmid = section?.cmlist[currentindex + 1];\n        }\n\n        return {\n            type: 'cm',\n            id: cminfo.id,\n            name: cminfo.name,\n            nextcmid,\n        };\n    }\n\n    /**\n     * Generate a dragable cm data structure.\n     *\n     * This method is used by any draggable section element to generate drop data\n     * for its reactive/dragdrop instance.\n     *\n     * @param {*} state the state object\n     * @param {*} sectionid the cours section id\n     * @returns {Object|null}\n     */\n    sectionDraggableData(state, sectionid) {\n        const sectioninfo = state.section.get(sectionid);\n        if (!sectioninfo) {\n            return null;\n        }\n        return {\n            type: 'section',\n            id: sectioninfo.id,\n            name: sectioninfo.name,\n            number: sectioninfo.number,\n        };\n    }\n}\n"],"file":"exporter.min.js"}