{"version":3,"sources":["../qtiCreator/tpl/relatedItemsPopup!tpl","../qtiCreator/tpl/relatedItemsClassPopup!tpl","../qtiCreator/tpl/forbiddenClassAction!tpl","../../taoMediaManagerCss/media!css","../controller/actions.js","../qtiCreator/helper/createDummyItemData.js","../qtiCreator/helper/sharedStimulusLoader.js","../qtiCreator/renderers/config.js","../qtiCreator/renderers/Renderer.js","../qtiCreator/helper/creatorRenderer.js","../qtiCreator/editor/propertiesPanel.js","../qtiXmlRenderer/renderers/config.js","../qtiXmlRenderer/renderers/Renderer.js","../qtiCreator/helper/xmlRenderer.js","../qtiCreator/editor/interactionsPanel.js","../qtiCreator/sharedStimulusCreator.js","../qtiCreator/component/tpl/sharedStimulusAuthoring!tpl","../qtiCreator/component/sharedStimulusAuthoring.js","../controller/authoring.js","../previewer/component/qtiSharedStimulusItem.js","../controller/editInstance.js","../controller/routes.js","../previewer/adapter/item/qtiSharedStimulusItem.js","../previewer/proxy/qtiSharedStimulusItem.js","../qtiCreator/widgets/helpers/content.js","../qtiCreator/widgets/states/Active.js","../qtiCreator/widgets/static/states/Active.js","../qtiCreator/helper/ckConfigurator.js","../qtiCreator/editor/ckEditor/htmlEditor.js","../qtiCreator/tpl/forms/static/text!tpl","../qtiCreator/widgets/static/text/states/Active.js","../qtiCreator/widgets/static/text/states/states.js","../qtiCreator/widgets/static/text/Widget.js","../qtiCreator/editor/blockAdder/blockAdder.js","../qtiCreator/editor/containerEditor.js","../qtiCreator/plugins/content/blockAdder.js","../qtiCreator/plugins/menu/preview.js","../qtiCreator/plugins/menu/save.js","../qtiCreator/plugins/navigation/back.js","../qtiCreator/widgets/static/img/states/Active.js","../qtiCreator/widgets/static/img/states/states.js","../qtiCreator/widgets/static/img/Widget.js","../qtiCreator/renderers/Img.js","../qtiCreator/tpl/forms/item!tpl","../qtiCreator/widgets/item/states/Active.js","../qtiCreator/widgets/item/states/states.js","../qtiCreator/widgets/item/Widget.js","../qtiCreator/renderers/tpl/wrap!tpl","../qtiCreator/renderers/Item.js","../qtiCreator/widgets/static/object/states/Active.js","../qtiCreator/widgets/static/object/states/states.js","../qtiCreator/widgets/static/object/Widget.js","../qtiCreator/renderers/Object.js","../qtiCreator/widgets/static/table/states/Active.js","../qtiCreator/widgets/static/table/states/states.js","../qtiCreator/widgets/static/table/Widget.js","../qtiCreator/renderers/Table.js","../qtiXmlRenderer/tpl/item!tpl","../qtiXmlRenderer/renderers/Item.js","onLayerEnd0.js","module-create.js","/github/workspace/tao/views/build/config-wrap-end-default.js"],"names":[],"mappings":"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","sourcesContent":["\ndefine('tpl!taoMediaManager/qtiCreator/tpl/relatedItemsPopup', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n  this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n  var buffer = \"\", stack1, helper, options, functionType=\"function\", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \"\", stack1;\n  buffer += \"<li>\"\n    + escapeExpression(((stack1 = (depth0 && depth0.label)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))\n    + \"</li>\";\n  return buffer;\n  }\n\n  buffer += escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"This\", options) : helperMissing.call(depth0, \"__\", \"This\", options)))\n    + \" <b>\";\n  if (helper = helpers.name) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.name); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1)\n    + \"</b> \"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"is currently used in\", options) : helperMissing.call(depth0, \"__\", \"is currently used in\", options)))\n    + \" \";\n  if (helper = helpers.number) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.number); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1)\n    + \" \"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"item(s)\", options) : helperMissing.call(depth0, \"__\", \"item(s)\", options)))\n    + \":\\n<ul>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 && depth0.items), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n</ul>\\n\"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Are you sure you want to delete this\", options) : helperMissing.call(depth0, \"__\", \"Are you sure you want to delete this\", options)))\n    + \" <b>\";\n  if (helper = helpers.name) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.name); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1)\n    + \"</b>?\";\n  return buffer;\n  });\n});\n\n","\ndefine('tpl!taoMediaManager/qtiCreator/tpl/relatedItemsClassPopup', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n  this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n  var buffer = \"\", stack1, helper, options, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\";\n\n\n  buffer += \"<b>\"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Warning\", options) : helperMissing.call(depth0, \"__\", \"Warning\", options)))\n    + \"</b><br><br>\\n\"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"You are about to delete the class\", options) : helperMissing.call(depth0, \"__\", \"You are about to delete the class\", options)))\n    + \" <b>\";\n  if (helper = helpers.name) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.name); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1)\n    + \"</b>, \"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"which contains assets that are in use elsewhere.\", options) : helperMissing.call(depth0, \"__\", \"which contains assets that are in use elsewhere.\", options)))\n    + \"\\n\"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Deleting this class will break the items and the tests that are currently using them.\", options) : helperMissing.call(depth0, \"__\", \"Deleting this class will break the items and the tests that are currently using them.\", options)))\n    + \"<br><br>\\n\"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Are you sure you want to delete this class and all of its content?\", options) : helperMissing.call(depth0, \"__\", \"Are you sure you want to delete this class and all of its content?\", options)));\n  return buffer;\n  });\n});\n\n","\ndefine('tpl!taoMediaManager/qtiCreator/tpl/forbiddenClassAction', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n  this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n  var buffer = \"\", stack1, helper, options, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\";\n\n\n  buffer += \"<b>\"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Forbidden action\", options) : helperMissing.call(depth0, \"__\", \"Forbidden action\", options)))\n    + \"</b><br><br>\\n\"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"The class\", options) : helperMissing.call(depth0, \"__\", \"The class\", options)))\n    + \" <b>\";\n  if (helper = helpers.name) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.name); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1)\n    + \"</b> \"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"you are trying to delete is too large and contains too many subclasses.\", options) : helperMissing.call(depth0, \"__\", \"you are trying to delete is too large and contains too many subclasses.\", options)))\n    + \"<br>\\n\"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Please delete the subclasses before.\", options) : helperMissing.call(depth0, \"__\", \"Please delete the subclasses before.\", options)));\n  return buffer;\n  });\n});\n\n","\ndefine('css!taoMediaManagerCss/media',[],function(){});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n */\n\n/**\n * @author Juan Luis Gutierrez Dos Santos <juanluis.gutierrezdossantos@taotesting.com>\n */\n\ndefine('taoMediaManager/controller/actions',[\n    'lodash',\n    'jquery',\n    'i18n',\n    'layout/actions/binder',\n    'uri',\n    'layout/section',\n    'core/request',\n    'core/router',\n    'core/logger',\n    'ui/feedback',\n    'ui/dialog/confirm',\n    'ui/dialog/alert',\n    'util/url',\n    'tpl!taoMediaManager/qtiCreator/tpl/relatedItemsPopup',\n    'tpl!taoMediaManager/qtiCreator/tpl/relatedItemsClassPopup',\n    'tpl!taoMediaManager/qtiCreator/tpl/forbiddenClassAction',\n    'css!taoMediaManagerCss/media.css'\n], function (\n    _,\n    $,\n    __,\n    binder,\n    uri,\n    section,\n    request,\n    router,\n    loggerFactory,\n    feedback,\n    confirmDialog,\n    alertDialog,\n    urlUtil,\n    relatedItemsPopupTpl,\n    relatedItemsClassPopupTpl,\n    forbiddenClassActionTpl\n) {\n    'use strict';\n\n    const logger = loggerFactory('taoMediaManager/manageMedia');\n\n    binder.register('newSharedStimulus', function instanciate(actionContext) {\n        const self = this;\n        const classUri = uri.decode(actionContext.classUri);\n\n        return request({\n            url: self.url,\n            data: JSON.stringify({ classUri: classUri }),\n            method: 'POST'\n        })\n            .then(function (response) {\n                //backward compat format for jstree\n                if (actionContext.tree) {\n                    $(actionContext.tree).trigger('addnode.taotree', [\n                        {\n                            uri: uri.decode(response.data.id),\n                            label: response.data.name,\n                            parent: uri.decode(actionContext.classUri),\n                            cssClass: 'node-instance'\n                        }\n                    ]);\n                }\n\n                //return format (resourceSelector)\n                return {\n                    uri: uri.decode(response.data.id),\n                    label: response.data.name,\n                    classUri: uri.decode(actionContext.classUri),\n                    type: 'instance'\n                };\n            })\n            .catch(err => {\n                if (!_.isUndefined(err.message)) {\n                    feedback().error(err.message);\n                }\n                logger.error(err);\n            });\n    });\n    binder.register('sharedStimulusAuthoring', function sharedStimulusAuthoring(actionContext) {\n        section\n            .updateContentBlock('')\n            .create({\n                id: 'authoring',\n                name: __('Authoring'),\n                url: this.url,\n                content: ' ',\n                visible: false\n            })\n            .show();\n        const $panel = $('#panel-authoring');\n        $panel.attr('data-id', actionContext.id);\n        $panel.attr('data-uri', actionContext.uri);\n        // duplicate behaviour of $doc.ajaxComplete in tao/views/js/controller/backoffice.js\n        // as in old way - request html from server\n        router.dispatch(`${this.url}?id=${actionContext.id}`);\n    });\n    binder.register('deleteSharedStimulus', function remove(actionContext) {\n        const self = this;\n        let data = {};\n        let mediaRelationsData = {type: 'media'};\n\n        if (actionContext.context[0] === 'instance') {\n            mediaRelationsData.sourceId = actionContext.id\n        } else {\n            mediaRelationsData.classId = actionContext.id\n        }\n        data.uri        = uri.decode(actionContext.uri);\n        data.classUri   = uri.decode(actionContext.classUri);\n        data.id         = actionContext.id;\n        data.signature  = actionContext.signature;\n        return new Promise(function (resolve, reject) {\n            request({\n                url: urlUtil.route('index', 'ResourceRelations', 'tao'),\n                data: mediaRelationsData,\n                method: 'GET',\n                noToken: true\n            }).then(function (responseRelated) {\n                let message;\n                const haveItemReferences = responseRelated.data.relations;\n                const name = $('a.clicked', actionContext.tree).text().trim();\n                if (actionContext.context[0] === 'instance') {\n                    if (haveItemReferences.length === 0) {\n                        message = `${__('Are you sure you want to delete this')} <b>${name}</b>?`;\n                    } else {\n                        message = relatedItemsPopupTpl({\n                            name,\n                            number: haveItemReferences.length,\n                            items: haveItemReferences\n                        });\n                    }\n                } else if (actionContext.context[0] !== 'instance') {\n                    if (haveItemReferences.length === 0) {\n                        message = `${__('Are you sure you want to delete this class and all of its content?')}`;\n                    } else if (haveItemReferences.length !== 0) {\n                        message = relatedItemsClassPopupTpl({\n                            name,\n                            number: haveItemReferences.length,\n                            items: haveItemReferences\n                        });\n                    }\n                }\n                callConfirmModal(actionContext, message, self.url, data, resolve, reject)\n            }).catch(errorObject => {\n                let message;\n                if (actionContext.context[0] === 'class' && errorObject.response.code === 999) {\n                    message = forbiddenClassActionTpl();\n                }\n                callAlertModal(actionContext, message, reject)\n            });\n        });\n    });\n\n    function callConfirmModal(actionContext, message, url, data, resolve, reject) {\n        confirmDialog(\n            message,\n            () => accept(actionContext, url, data, resolve, reject),\n            () => cancel(reject)\n        );\n    }\n\n    function callAlertModal(actionContext, message, reject) {\n        alertDialog(\n            message,\n            () => cancel(reject)\n        );\n    }\n\n    function accept(actionContext, url, data, resolve, reject) {\n        return request({\n            url: url,\n            method: 'POST',\n            data: data,\n            dataType: 'json'\n        }).then(function (response) {\n            if (response.success && response.deleted) {\n                feedback().success(response.message || __('Resource deleted'));\n\n                if (actionContext.tree) {\n                    $(actionContext.tree).trigger('removenode.taotree', [\n                        {\n                            id: actionContext.uri || actionContext.classUri\n                        }\n                    ]);\n                }\n                return resolve({\n                    uri: actionContext.uri || actionContext.classUri\n                });\n            } else {\n                reject(response.msg || __('Unable to delete the selected resource'));\n            }\n        });\n    }\n\n    function cancel(reject) {\n        reject({ cancel: true });\n    }\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n */\n\ndefine('taoMediaManager/qtiCreator/helper/createDummyItemData',[\n    'taoQtiItem/qtiCreator/model/Item'\n], function(Item) {\n    'use strict';\n\n    const _generateIdentifier = function _generateIdentifier(uri) {\n        const pos = uri.lastIndexOf('#');\n        return uri.substr(pos + 1);\n    };\n\n    const creatorDummyItemData = function(sharedStimulusData) {\n        const newItem = new Item().id(_generateIdentifier(sharedStimulusData.id)).attr('title', sharedStimulusData.name);\n        newItem.data('new', true);\n        newItem.data('dummy', true);\n\n        const itemData = Object.assign({}, newItem);\n        delete itemData.bdy;\n        delete itemData.rootElement;\n\n        itemData.body = sharedStimulusData.body.body;\n        itemData.qtiClass = 'assessmentItem';\n        itemData.responseProcessing = {\n            attributes: {},\n            qtiClass: \"responseProcessing\",\n            responseRules: [],\n            serial: `response_${sharedStimulusData.body.serial}`\n        };\n        itemData.response = {};\n        if (sharedStimulusData.body.attributes['xml:lang']) {\n            itemData.attributes['xml:lang'] = sharedStimulusData.body.attributes['xml:lang'];\n        }\n\n        return itemData;\n    };\n    return creatorDummyItemData;\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n */\n\ndefine('taoMediaManager/qtiCreator/helper/sharedStimulusLoader',[\n    'jquery',\n    'taoQtiItem/qtiItem/core/Loader',\n    'taoQtiItem/qtiCreator/model/qtiClasses',\n    'taoMediaManager/qtiCreator/helper/createDummyItemData',\n    'core/dataProvider/request',\n    'util/url'\n], function($, Loader, qtiClasses, creatorDummyItemData, request, urlUtil) {\n    'use strict';\n\n    const qtiNamespace = 'http://www.imsglobal.org/xsd/imsqti_v2p2';\n\n    const qtiSchemaLocation = {\n        'http://www.imsglobal.org/xsd/imsqti_v2p2' : 'http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd'\n    };\n\n    const languagesUrl = urlUtil.route('index', 'Languages', 'tao');\n\n    const creatorLoader = {\n        loadSharedStimulus(config, callback) {\n\n            if (config.id) {\n                const languagesList = request(languagesUrl);\n                const assetData = request(config.assetDataUrl, { id : config.id });\n                Promise.all([languagesList, assetData]).then((values) => {\n                    let loader, itemData;\n\n                    itemData = creatorDummyItemData(values[1]);\n\n                    loader = new Loader().setClassesLocation(qtiClasses);\n                    loader.loadItemData(itemData, function(loadedItem) {\n                        let namespaces;\n\n                        // convert item to current QTI version\n                        namespaces = loadedItem.getNamespaces();\n                        namespaces[''] = qtiNamespace;\n                        loadedItem.setNamespaces(namespaces);\n                        loadedItem.setSchemaLocations(qtiSchemaLocation);\n\n                        //add languages list to the item\n                        if (languagesList) {\n                            loadedItem.data('languagesList', values[0]);\n                        }\n\n                        callback(loadedItem, this.getLoadedClasses());\n                    });\n                });\n            }\n        }\n    };\n\n    return creatorLoader;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA;\n */\n\ndefine('taoMediaManager/qtiCreator/renderers/config',[\n    'lodash',\n    'taoQtiItem/qtiCommonRenderer/renderers/config',\n    'taoItems/assets/manager',\n    'taoItems/assets/strategies'\n], function (_, commonRenderConfig, assetManagerFactory, assetStrategies) {\n    'use strict';\n\n    //asset manager using base url\n    const assetManager = assetManagerFactory(\n        [assetStrategies.taomedia, assetStrategies.external, assetStrategies.base64, assetStrategies.baseUrl],\n        { baseUrl: '' }\n    );\n\n    const locations = _.defaults(\n        {\n            _container: 'taoQtiItem/qtiCreator/renderers/Container',\n            _tooltip: 'taoQtiItem/qtiCreator/renderers/Tooltip',\n            assessmentItem: 'taoMediaManager/qtiCreator/renderers/Item',\n            img: 'taoMediaManager/qtiCreator/renderers/Img',\n            math: 'taoQtiItem/qtiCreator/renderers/Math',\n            object: 'taoMediaManager/qtiCreator/renderers/Object',\n            table: 'taoMediaManager/qtiCreator/renderers/Table'\n        },\n        commonRenderConfig.locations\n    );\n\n    return {\n        name: 'creatorRenderer',\n        locations: locations,\n        options: {\n            assetManager: assetManager\n        }\n    };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA;\n */\n\n/**\n * Define the Qti Item Creator Renderer\n */\ndefine('taoMediaManager/qtiCreator/renderers/Renderer',[\n    'taoQtiItem/qtiRunner/core/Renderer',\n    'taoMediaManager/qtiCreator/renderers/config'\n], function(Renderer, config){\n    'use strict';\n\n    return Renderer.build(config.locations, config.name, config.options);\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n */\n\ndefine('taoMediaManager/qtiCreator/helper/creatorRenderer',[\n    'jquery',\n    'lodash',\n    'taoMediaManager/qtiCreator/renderers/Renderer',\n    'taoItems/assets/manager',\n    'taoItems/assets/strategies',\n    'util/dom'\n], function ($, _, Renderer, assetManagerFactory, assetStrategies, dom) {\n    'use strict';\n\n    //configure and instanciate once only:\n    let creatorRenderer = null;\n\n    /**\n     * Get a preconfigured renderer singleton\n     *\n     * @param {Boolean} reset\n     * @param {Object} config\n     * @param {Object} areaBroker - the QtiCreator area broker\n     * @returns {Object} - a configured instance of creatorRenderer\n     */\n    const get = function (reset, config, areaBroker) {\n        let $bodyEltForm;\n\n        config = config || {};\n        config.properties = config.properties || {};\n\n        if (!creatorRenderer || reset) {\n            $bodyEltForm = creatorRenderer ? creatorRenderer.getOption('bodyElementOptionForm') : null;\n            if (reset || !$bodyEltForm || !$bodyEltForm.length || !dom.contains($bodyEltForm)) {\n                // Renderer with binded locations from taoMediaManager/qtiCreator/renderers/config.js\n                creatorRenderer = new Renderer({\n                    lang: '',\n                    uri: '',\n                    shuffleChoices: false,\n                    itemOptionForm: $('#item-editor-item-property-bar .panel'),\n                    bodyElementOptionForm: areaBroker.getElementPropertyPanelArea(),\n                    textOptionForm: $('#item-editor-text-property-bar .panel'),\n                    mediaManager: {\n                        appendContainer: '#mediaManager',\n                        browseUrl: config.properties.getFilesUrl,\n                        uploadUrl: config.properties.fileUploadUrl,\n                        deleteUrl: config.properties.fileDeleteUrl,\n                        downloadUrl: config.properties.fileDownloadUrl,\n                        fileExistsUrl: config.properties.fileExistsUrl,\n                        path: config.properties.path,\n                        root: config.properties.root\n                    },\n                    qtiCreatorContext: config.qtiCreatorContext,\n                    locations: config.properties.locations\n                });\n\n                //update the resolver baseUrl\n                creatorRenderer.getAssetManager().setData({ baseUrl: config.properties.baseUrl || '' });\n\n                creatorRenderer.setAreaBroker(areaBroker);\n\n                // extend creator renderer to give access to the creator context\n                _.assign(creatorRenderer, {\n                    getCreatorContext: function getCreatorContext() {\n                        return this.getOption('qtiCreatorContext');\n                    }\n                });\n            }\n        }\n\n        return creatorRenderer;\n    };\n\n    return {\n        get: get,\n\n        setOption: function (name, value) {\n            return get().setOption(name, value);\n        },\n        setOptions: function (options) {\n            return get().setOptions(options);\n        },\n        load: function (qtiClasses, done) {\n            return get().load(function (...rest) {\n                if (_.isFunction(done)) {\n                    done.apply(this, rest);\n                }\n            }, qtiClasses);\n        }\n    };\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA;\n *\n */\n\ndefine('taoMediaManager/qtiCreator/editor/propertiesPanel',[\n    'taoQtiItem/qtiCreator/helper/panel'\n], function(panel) {\n    'use strict';\n\n    /**\n     * Set up the properties panel, including the style editor\n     * @param {jQueryElement} $container - the panel container\n     */\n    return function setUpInteractionPanel($container){\n        panel.initSidebarAccordion($container);\n        panel.initFormVisibilityListener();\n    };\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technlogies SA;\n *\n */\n\n/**\n * Config of the QTI XML renderer\n *\n * @author Hanna Dzmitryieva <hanna@taotesting.com>\n */\ndefine('taoMediaManager/qtiXmlRenderer/renderers/config',[\n    'taoItems/assets/manager'\n], function(assetManagerFactory){\n    'use strict';\n\n    //all assets are normalized (relative)\n    const assetManager = assetManagerFactory([{\n        name : 'nomalize',\n        handle: function normalizeStrategy(url){\n            if(url){\n                return url.toString().replace(/^\\.?\\//, '');\n            }\n        }\n    }]);\n\n    /**\n     * The XML Renderer config\n     */\n    return {\n        name : 'xmlRenderer',\n        locations : {\n            '_container' : 'taoQtiItem/qtiXmlRenderer/renderers/Container',\n            'assessmentItem' : 'taoMediaManager/qtiXmlRenderer/renderers/Item',\n            '_tooltip' : 'taoQtiItem/qtiXmlRenderer/renderers/Tooltip',\n            'math' : 'taoQtiItem/qtiXmlRenderer/renderers/Math',\n            'img' : 'taoQtiItem/qtiXmlRenderer/renderers/Img',\n            'object' : 'taoQtiItem/qtiXmlRenderer/renderers/Object',\n            'table' : 'taoQtiItem/qtiXmlRenderer/renderers/Table',\n        },\n        options : {\n            assetManager : assetManager\n        }\n    };\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA;\n *\n */\n\ndefine('taoMediaManager/qtiXmlRenderer/renderers/Renderer',['taoQtiItem/qtiRunner/core/Renderer', 'taoMediaManager/qtiXmlRenderer/renderers/config'], function(Renderer, config){\n    'use strict';\n\n    return Renderer.build(config.locations, config.name, config.options);\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n */\ndefine('taoMediaManager/qtiCreator/helper/xmlRenderer',[\n    'core/logger',\n    'taoMediaManager/qtiXmlRenderer/renderers/Renderer',\n    'taoQtiItem/qtiItem/core/Element'\n], function(loggerFactory, XmlRenderer, Element){\n    'use strict';\n\n    const logger = loggerFactory('taoMediaManager/qtiCreator/helper/xmlRenderer');\n\n    const _xmlRenderer = new XmlRenderer().load();\n\n    const _render = function(element){\n        let xml = '';\n        try{\n            if(element instanceof Element) {\n                xml = element.render(_xmlRenderer);\n            }\n        }catch(e){\n            logger.error(e);\n        }\n        return xml;\n    };\n\n    return {\n        render : _render,\n        get : function(){\n            return _xmlRenderer;\n        }\n    };\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2021 (original work) Open Assessment Technologies SA ;\n *\n */\n\n/**\n * This module let's you set up the interaction panel\n *\n * @author Hanna Dzmitryieva <hanna@taotesting.com>\n */\ndefine('taoMediaManager/qtiCreator/editor/interactionsPanel',[\n    'lodash',\n    'i18n',\n    'taoQtiItem/qtiCreator/editor/interactionsToolbar',\n    'taoQtiItem/qtiCreator/helper/panel'\n], function (_, __, interactionsToolbar, panel) {\n    'use strict';\n\n    /**\n     * Set up the interaction selection panel\n     * @param {jQueryElement} $container - the panel container\n     */\n    return function setUpInteractionPanel($container) {\n        const tagTitles = {\n            inlineInteractions: __('Inline Interactions')\n        };\n        const interactions = {\n            _container: {\n                label: __('Text Block'),\n                icon: 'icon-font',\n                description: __(\n                    'Block contains the content (stimulus) of the item such as text or image. It is also required for Inline Interactions.'\n                ),\n                short: __('Block'),\n                qtiClass: '_container',\n                tags: [tagTitles.inlineInteractions, 'text'],\n                group:  __('inline-interactions')\n            }\n        };\n\n        // create toolbar\n        interactionsToolbar.create($container, interactions);\n\n        // init accordions\n        panel.initSidebarAccordion($container);\n        // init special subgroup\n        panel.toggleInlineInteractionGroup();\n    };\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n *\n */\n\n/**\n * The item creator factory let's you create (guess what...)\n *\n * The item creator is \"unfinished\" because all parts aren't yet independants and the loading is anarhic,\n * however the item creator does a 1st job of wrapping the item creator's bootstrap.\n *\n *\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('taoMediaManager/qtiCreator/sharedStimulusCreator',[\n    'jquery',\n    'lodash',\n    'i18n',\n    'core/eventifier',\n    'taoQtiItem/qtiCreator/context/qtiCreatorContext',\n    'taoMediaManager/qtiCreator/helper/sharedStimulusLoader',\n    'taoMediaManager/qtiCreator/helper/creatorRenderer',\n    'taoQtiItem/qtiCreator/helper/commonRenderer', //for read-only element : preview + xinclude\n    'taoQtiItem/qtiCreator/helper/xincludeRenderer',\n    'taoMediaManager/qtiCreator/editor/propertiesPanel',\n    'taoQtiItem/qtiCreator/model/helper/event',\n    'taoMediaManager/qtiCreator/helper/xmlRenderer',\n    'taoQtiItem/qtiItem/helper/xmlNsHandler',\n    'core/request',\n    'util/url',\n    'taoMediaManager/qtiCreator/editor/interactionsPanel'\n], function (\n    $,\n    _,\n    __,\n    eventifier,\n    qtiCreatorContextFactory,\n    sharedStimulusLoader,\n    creatorRenderer,\n    commonRenderer,\n    xincludeRenderer,\n    propertiesPanel,\n    eventHelper,\n    xmlRenderer,\n    xmlNsHandler,\n    request,\n    urlUtil,\n    interactionPanel\n) {\n    'use strict';\n\n    /**\n     * Load an item\n     * @param {String} id - the item ID\n     * @param {String} uri - the item URI\n     * @param {String} assetDataUrl - the data url\n     *\n     * @returns {Promise} that resolve with the loaded item model\n     */\n    const loadSharedStimulus = function loadSharedStimulus(id, uri, assetDataUrl) {\n        return new Promise(function (resolve, reject) {\n            sharedStimulusLoader.loadSharedStimulus({ id, uri, assetDataUrl }, function (item) {\n                if (!item) {\n                    reject(new Error('Unable to load the Shared Stimulus'));\n                }\n\n                //set useful data :\n                item.data('uri', uri);\n                resolve(item);\n            });\n        });\n    };\n\n    /**\n     * Build a new Item Creator\n     * @param {Object} config - the creator's configuration\n     * @param {String} config.properties.uri - the URI of the item to load (properties structure is kept as legacy)\n     * @param {String} config.properties.label - the label of the item to load (properties structure is kept as legacy)\n     * @param {String} config.properties.baseUrl - the base URL used to resolve assets\n     * @param {String[]} [config.interactions] - the list of additional interactions to load (PCI)\n     * @param {String[]} [config.infoControls] - the list of info controls to load (PIC)\n     * @param {areaBroker} areaBroker - a mapped areaBroker\n     * @param {Function[]} pluginFactories - the plugin's factory, ready to be instantiated\n     * @returns {itemCreator} an event emitter object, with the usual lifecycle\n     * @throws {TypeError}\n     */\n    const sharedStimulusCreatorFactory = function sharedStimulusCreatorFactory(config, areaBroker, pluginFactories) {\n        let itemCreator;\n        const qtiCreatorContext = qtiCreatorContextFactory();\n        const plugins = {};\n\n        /**\n         * Run a method in all plugins\n         *\n         * @param {String} method - the method to run\n         * @returns {Promise} once that resolve when all plugins are done\n         */\n        const pluginRun = function pluginRun(method) {\n            const execStack = [];\n\n            _.forEach(plugins, function (plugin) {\n                if (_.isFunction(plugin[method])) {\n                    execStack.push(plugin[method]());\n                }\n            });\n\n            return Promise.all(execStack);\n        };\n\n        //validate parameters\n        if (!_.isPlainObject(config)) {\n            throw new TypeError('The item creator configuration is required');\n        }\n        if (!config.properties || _.isEmpty(config.properties.uri) || _.isEmpty(config.properties.baseUrl)) {\n            throw new TypeError(\n                'The creator configuration must contains the required properties triples: uri, label and baseUrl'\n            );\n        }\n        if (!areaBroker) {\n            throw new TypeError('Without an areaBroker there are no chance to see something you know');\n        }\n\n        //factor the new itemCreator\n        itemCreator = eventifier({\n            //lifecycle\n\n            /**\n             * Initialize the item creator:\n             *  - set up the registries for portable elements\n             *  - load the item\n             *  - instantiate and initialize the plugins\n             *\n             * @returns {itemCreator} chains\n             * @fires itemCreator#init - once initialized\n             * @fires itemCreator#error - if something went wrong\n             */\n            init() {\n                //instantiate the plugins first\n                _.forEach(pluginFactories, pluginFactory => {\n                    const plugin = pluginFactory(this, areaBroker);\n                    plugins[plugin.getName()] = plugin;\n                });\n\n                // quick-fix: clear all ghost events listeners\n                // prevent ghosting of item states and other properties\n                $(document).off('.qti-widget');\n\n                /**\n                 * Save the item on \"save\" event\n                 * @event itemCreator#save\n                 * @param {Boolean} [silent] - true to not trigger the success feedback\n                 * @fires itemCreator#saved once the save is done\n                 * @fires itemCreator#error\n                 */\n                this.on('save', silent => {\n                    const item = this.getItem();\n\n                    const xml = xmlNsHandler.restoreNs(xmlRenderer.render(item), item.getNamespaces());\n                    request({\n                        url: urlUtil.route('patch', 'SharedStimulus', 'taoMediaManager', { id: config.properties.id }),\n                        type: 'POST',\n                        contentType: 'application/json',\n                        dataType: 'json',\n                        data: JSON.stringify({ body: xml }),\n                        method: 'PATCH',\n                        noToken: true\n                    })\n                        .then(() => {\n                            if (!silent) {\n                                this.trigger('success');\n                            }\n\n                            this.trigger('saved');\n                        })\n                        .catch(err => {\n                            this.trigger('error', err);\n                        });\n                });\n\n                this.on('exit', function () {\n                    $('.item-editor-item', areaBroker.getItemPanelArea()).empty();\n                    this.destroy();\n                });\n\n                loadSharedStimulus(config.properties.id, config.properties.uri, config.properties.assetDataUrl)\n                    .then(item => {\n                        if (!_.isObject(item)) {\n                            this.trigger('error', new Error(`Unable to load the item ${config.properties.label}`));\n                            return;\n                        }\n\n                        this.item = item;\n                        return true;\n                    })\n                    .then(() => pluginRun('init'))\n                    .then(() => {\n                        /**\n                         * @event itemCreator#init the initialization is done\n                         * @param {Object} item - the loaded item\n                         */\n                        this.trigger('init', this.item);\n                    })\n                    .then(() => {\n                        // forward context error\n                        qtiCreatorContext.on('error', err => {\n                            this.trigger('error', err);\n                        });\n                        return qtiCreatorContext.init();\n                    })\n                    .catch(err => {\n                        this.trigger('error', err);\n                    });\n\n                return this;\n            },\n\n            /**\n             * Renders the creator\n             * Because of the actual structure, it also intialize some components (panels, toolbars, etc.).\n             *\n             * @returns {itemCreator} chains\n             * @fires itemCreator#render - once everything is in place\n             * @fires itemCreator#ready - once the creator's components' are ready (not yet reliable)\n             * @fires itemCreator#error - if something went wrong\n             */\n            render() {\n                const self = this;\n                const item = this.getItem();\n\n                if (!item || !_.isFunction(item.getUsedClasses)) {\n                    return this.trigger('error', new Error('We need an item to render.'));\n                }\n\n                //configure commonRenderer for the preview and initial qti element rendering\n                commonRenderer.setContext(areaBroker.getItemPanelArea());\n                commonRenderer.get(true, config).setOption('baseUrl', config.properties.baseUrl);\n\n                interactionPanel(areaBroker.getInteractionPanelArea());\n\n                //the renderers' widgets do not handle async yet, so we rely on this event\n                //TODO ready should be triggered once every renderer's widget is done (ie. promisify everything)\n                $(document).on('ready.qti-widget', (e, elt) => {\n                    if (elt.element.qtiClass === 'assessmentItem') {\n                        this.trigger('ready');\n                    }\n                });\n\n                // pass an context reference to the renderer\n                config.qtiCreatorContext = qtiCreatorContext;\n\n                creatorRenderer\n                    .get(true, config, areaBroker)\n                    .setOptions(config.properties)\n                    .load(function () {\n                        let widget;\n\n                        //set renderer\n                        item.setRenderer(this);\n\n                        //render item (body only) into the \"drop-area\"\n                        areaBroker.getItemPanelArea().append(item.render());\n\n                        //\"post-render it\" to initialize the widget\n                        Promise.all(item.postRender(_.clone(config.properties)))\n                            .then(function () {\n                                //set reference to item widget object\n                                areaBroker.getContainer().data('widget', item);\n\n                                widget = item.data('widget');\n                                _.each(item.getComposingElements(), function (element) {\n                                    if (element.qtiClass === 'include') {\n                                        xincludeRenderer.render(element.data('widget'), config.properties.baseUrl);\n                                    }\n                                });\n\n                                propertiesPanel(areaBroker.getPropertyPanelArea(), widget, config.properties);\n\n                                //init event listeners:\n                                eventHelper.initElementToWidgetListeners();\n\n                                return pluginRun('render').then(function () {\n                                    self.trigger('render');\n                                });\n                            })\n                            .catch(function (err) {\n                                self.trigger('error', err);\n                            });\n                    }, item.getUsedClasses());\n\n                return this;\n            },\n\n            /**\n             * Clean up everything and destroy the item creator\n             *\n             * @returns {itemCreator} chains\n             */\n            destroy() {\n                $(document).off('.qti-widget');\n\n                pluginRun('destroy')\n                    .then(() => qtiCreatorContext.destroy())\n                    .then(() => {\n                        this.trigger('destroy');\n                    })\n                    .catch(err => {\n                        this.trigger('error', err);\n                    });\n                return this;\n            },\n\n            //accessors\n\n            /**\n             * Give an access to the loaded item\n             * @returns {Object} the item\n             */\n            getItem() {\n                return this.item;\n            },\n\n            getSharedStimulusId() {\n                return config.properties.id;\n            },\n\n            /**\n             * Give an access to the config\n             * @returns {Object} the config\n             */\n            getConfig() {\n                return config;\n            }\n        });\n\n        return itemCreator;\n    };\n\n    return sharedStimulusCreatorFactory;\n});\n\n","\ndefine('tpl!taoMediaManager/qtiCreator/component/tpl/sharedStimulusAuthoring', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n  this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n  var buffer = \"\", helper, options, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  buffer += \"<div id=\\\"item-editor-scope\\\" data-content-target=\\\"wide\\\">\\n\\n    <nav class=\\\"action-bar plain content-action-bar horizontal-action-bar\\\">\\n        <ul class=\\\"menu-left action-group plain item-editor-menu\\\"></ul>\\n\\n        <ul class=\\\"menu action-group plain item-editor-menu\\\"></ul>\\n\\n        <ul class=\\\"menu-right action-group plain item-editor-menu\\\"></ul>\\n    </nav>\\n    <div class=\\\"wrapper clearfix content sidebar-popup-parent\\\" id=\\\"item-editor-wrapper\\\">\\n\\n        <!-- interaction panel -->\\n        <div class=\\\"item-editor-sidebar-wrapper left-bar\\\">\\n            <form class=\\\"item-editor-sidebar\\\" id=\\\"item-editor-interaction-bar\\\" autocomplete=\\\"off\\\"></form>\\n        </div>\\n\\n        <!-- item panel -->\\n        <main id=\\\"item-editor-panel\\\" class=\\\"clearfix\\\">\\n\\n            <div class=\\\"item-editor-bar\\\">\\n                <h1 class=\\\"truncate\\\"></h1>\\n                <div id=\\\"toolbar-top\\\"></div>\\n            </div>\\n\\n            <div id=\\\"item-editor-scoll-container\\\">\\n                <div id=\\\"item-editor-scroll-outer\\\">\\n                    <div id=\\\"item-editor-scroll-inner\\\">\\n                        <!-- item goes here -->\\n                    </div>\\n                </div>\\n            </div>\\n\\n        </main>\\n\\n        <!-- properties panel -->\\n        <div class=\\\"item-editor-sidebar-wrapper right-bar sidebar-popup-parent\\\">\\n            <div class=\\\"item-editor-sidebar\\\" id=\\\"item-editor-item-widget-bar\\\">\\n                <div class=\\\"item-editor-item-related sidebar-right-section-box\\\" id=\\\"item-editor-item-property-bar\\\">\\n                    <section class=\\\"tool-group clearfix\\\" id=\\\"sidebar-right-item-properties\\\">\\n                        <h2>\"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Passage Properties\", options) : helperMissing.call(depth0, \"__\", \"Passage Properties\", options)))\n    + \"</h2>\\n                        <div class=\\\"panel\\\"></div>\\n                    </section>\\n                </div>\\n                <div class=\\\"item-editor-item-related sidebar-right-section-box\\\" id=\\\"item-editor-text-property-bar\\\">\\n                    <section class=\\\"tool-group clearfix\\\" id=\\\"sidebar-right-text-block-properties\\\">\\n                        <h2>\"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Passage Properties\", options) : helperMissing.call(depth0, \"__\", \"Passage Properties\", options)))\n    + \"</h2>\\n                        <div class=\\\"panel\\\"></div>\\n                    </section>\\n                </div>\\n                <div class=\\\"item-editor-body-element-related sidebar-right-section-box\\\" id=\\\"item-editor-body-element-property-bar\\\">\\n                    <section class=\\\"tool-group clearfix\\\" id=\\\"sidebar-right-body-element-properties\\\">\\n                        <h2><?= __('Element Properties') ?></h2>\\n\\n                        <div class=\\\"panel\\\"></div>\\n                    </section>\\n                </div>\\n            </div>\\n        </div>\\n        <!-- /properties panel -->\\n\\n\\n    </div>\\n\\n    <div id=\\\"mediaManager\\\"></div>\\n    <div id=\\\"modal-container\\\"></div>\\n</div>\";\n  return buffer;\n  });\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan <jean-sebastien@taotesting.com>\n */\ndefine('taoMediaManager/qtiCreator/component/sharedStimulusAuthoring',[\n    'lodash',\n    'ui/component',\n    'core/pluginLoader',\n    'taoMediaManager/qtiCreator/sharedStimulusCreator',\n    'taoQtiItem/qtiCreator/editor/areaBroker',\n    'tpl!taoMediaManager/qtiCreator/component/tpl/sharedStimulusAuthoring',\n    'context',\n    'css!taoQtiItemCss/qti-runner.css',\n    'css!taoQtiItemCss/themes/default.css',\n    'css!taoQtiItemCss/item-creator.css'\n], function (\n    _,\n    componentFactory,\n    pluginLoaderFactory,\n    sharedStimulusCreatorFactory,\n    areaBrokerFactory,\n    componentTpl,\n    context\n) {\n    'use strict';\n\n    const defaultPlugins = [{\n        module: 'taoQtiItem/qtiCreator/plugins/content/title',\n        bundle: 'taoQtiItem/loader/taoQtiItem.min',\n        category: 'content'\n    }, {\n        module: 'taoMediaManager/qtiCreator/plugins/navigation/back',\n        bundle: 'taoMediaManager/loader/taoMediaManager.min',\n        category: 'menu'\n    }, {\n        module: 'taoMediaManager/qtiCreator/plugins/menu/save',\n        bundle: 'taoMediaManager/loader/taoMediaManager.min',\n        category: 'menu'\n    }, {\n        module: 'taoMediaManager/qtiCreator/plugins/menu/preview',\n        bundle: 'taoMediaManager/loader/taoMediaManager.min',\n        category: 'menu'\n    }, {\n        module: 'taoQtiItem/qtiCreator/plugins/content/changeTracker',\n        bundle: 'taoQtiItem/loader/taoQtiItem.min',\n        category: 'content'\n    }, {\n        module: 'taoMediaManager/qtiCreator/plugins/content/blockAdder',\n        bundle: 'taoMediaManager/loader/taoMediaManager.min',\n        category: 'content'\n    }];\n    /**\n     * Embeds the assets creator UI in a component\n     *\n     * @example\n     *  const container = $();\n     *  const config = {\n     *      plugins: [],\n     *      properties: {\n     *          uri: 'http://item#rdf-123',\n     *          baseUrl: 'http://foo/bar/',\n     *          // ...\n     *      }\n     *  };\n     *  const component = sharedStimulusAuthoringFactory(container, config)\n     *      .on('ready', function onComponentReady() {\n     *          // ...\n     *      });\n     *\n     * @param {HTMLElement|String} container\n     * @param {Object} config - The setup for the sharedStimulus creator\n     * @param {Object} config.properties - The list of properties expected by the sharedStimulus creator\n     * @param {Object} config.properties.uri - The URI of the sharedStimulus to author\n     * @param {Object} config.properties.id - The ID of the sharedStimulus to author\n     * @param {Object} config.properties.baseUrl - The base URL to retrieve the assets\n     * @param {String} config.properties.sharedStimulusDataUrl - URL for getting sharedStimulus data (passed through to sharedStimulusCreator)\n     * @param {Object[]} [config.plugins] - Additional plugins to load\n     * @returns {component}\n     * @fires ready - When the component is ready to work\n     */\n    function sharedStimulusAuthoringFactory(container, config = {}) {\n        let areaBroker;\n        let sharedStimulusCreator;\n\n        const plugins = Array.isArray(config.plugins) ? config.plugins : [];\n        config.plugins = [...defaultPlugins, ...plugins];\n\n        const pluginLoader = pluginLoaderFactory();\n\n        const api = {\n            /**\n             * Gets access to the area broker\n             * @returns {areaBroker}\n             */\n            getAreaBroker() {\n                return areaBroker;\n            }\n        };\n\n        const sharedStimulusAuthoring = componentFactory(api)\n            // set the component's layout\n            .setTemplate(componentTpl)\n\n            // auto render on init\n            .on('init', function () {\n                // load plugins dynamically\n                _.forEach(this.getConfig().plugins, plugin => {\n                    if (plugin && plugin.module) {\n                        if (plugin.exclude) {\n                            pluginLoader.remove(plugin.module);\n                        } else {\n                            pluginLoader.add(plugin);\n                        }\n                    }\n                });\n\n                // load the plugins, then render the sharedStimulus creator\n                pluginLoader.load(!!context.bundle)\n                    .then(() => this.render(container))\n                    .catch(err => this.trigger('error', err));\n            })\n\n            // renders the component\n            .on('render', function () {\n                const $container = this.getElement();\n                areaBroker = areaBrokerFactory($container, {\n                    'menu': $container.find('.menu'),\n                    'menuLeft': $container.find('.menu-left'),\n                    'menuRight': $container.find('.menu-right'),\n                    'contentCreatorPanel': $container.find('#item-editor-panel'),\n                    'editorBar': $container.find('#item-editor-panel .item-editor-bar'),\n                    'title': $container.find('#item-editor-panel .item-editor-bar h1'),\n                    'toolbar': $container.find('#item-editor-panel .item-editor-bar #toolbar-top'),\n                    'interactionPanel': $container.find('#item-editor-interaction-bar'),\n                    'propertyPanel': $container.find('#item-editor-item-widget-bar'),\n                    'itemPanel': $container.find('#item-editor-scroll-inner'),\n                    'itemPropertyPanel': $container.find('#sidebar-right-item-properties'),\n                    'itemStylePanel': $container.find('#item-style-editor-bar'),\n                    'modalContainer': $container.find('#modal-container'),\n                    'elementPropertyPanel': $container.find('#item-editor-body-element-property-bar .panel')\n                });\n\n                sharedStimulusCreator = sharedStimulusCreatorFactory(this.getConfig(), areaBroker, pluginLoader.getPlugins())\n                    .spread(this, 'error success ready')\n                    .on('init', function () {\n                        this.render();\n                    })\n                    .on('destroy', function () {\n                        sharedStimulusCreator = null;\n                        sharedStimulusAuthoring.destroy();\n                    })\n                    .init();\n            })\n\n            .on('destroy', function () {\n                if (sharedStimulusCreator) {\n                    sharedStimulusCreator.destroy();\n                }\n                sharedStimulusCreator = null;\n                areaBroker = null;\n            });\n\n        // initialize the component with the provided config\n        // defer the call to allow to listen to the init event\n        _.defer(() => sharedStimulusAuthoring.init(config));\n\n        return sharedStimulusAuthoring;\n    }\n\n    return sharedStimulusAuthoringFactory;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020-2021 (original work) Open Assessment Technologies SA ;\n */\n\n/**\n * @author Juan Luis Gutierrez Dos Santos <juanluis.gutierrezdossantos@taotesting.com>\n */\ndefine('taoMediaManager/controller/authoring',[\n    'i18n',\n    'lodash',\n    'jquery',\n    'uri',\n    'taoMediaManager/qtiCreator/component/sharedStimulusAuthoring',\n    'ui/feedback',\n    'util/url',\n    'core/dataProvider/request',\n    'core/logger'\n], function (__, _, $, uri, sharedStimulusAuthoringFactory, feedback, urlUtil, request, loggerFactory) {\n    'use strict';\n\n    const logger = loggerFactory('taoMediaManager/authoring');\n\n    const manageMediaController = {\n        /**\n         * Controller entry point\n         */\n        start() {\n            const $panel = $('#panel-authoring');\n            const assetDataUrl = urlUtil.route('get', 'SharedStimulus', 'taoMediaManager');\n            const assetId = uri.decode($panel.attr('data-id'));\n            let previewEnabled = false;\n\n            request(assetDataUrl, { id : assetId })\n                .then(response => {\n                    if (response.permissions == 'READ') {\n                        previewEnabled = true;\n                    }\n                }).then(response => {\n                    sharedStimulusAuthoringFactory($panel, {\n                        properties: {\n                            uri: $panel.attr('data-uri'),\n                            id: assetId,\n                            assetDataUrl,\n                            fileUploadUrl: urlUtil.route('upload', 'ItemContent', 'taoItems'),\n                            fileDeleteUrl: urlUtil.route('delete', 'ItemContent', 'taoItems'),\n                            fileDownloadUrl: urlUtil.route('download', 'ItemContent', 'taoItems'),\n                            fileExistsUrl: urlUtil.route('fileExists', 'ItemContent', 'taoItems'),\n                            getFilesUrl: urlUtil.route('files', 'ItemContent', 'taoItems'),\n                            baseUrl: urlUtil.route('getFile', 'MediaManager', 'taoMediaManager', { uri: '' }),\n                            path: 'taomedia://mediamanager/',\n                            root: 'mediamanager',\n                            lang: 'en-US',\n                            previewEnabled: previewEnabled\n                        }\n                    })\n                        .on('success', () => {\n                            feedback().success(__('Your passage is saved'));\n                        })\n                        .on('error', err => {\n                            if (!_.isUndefined(err.message)) {\n                                feedback().error(err.message);\n                            }\n                            logger.error(err);\n                        });\n                });\n        }\n    };\n\n    return manageMediaController;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan <jean-sebastien@taotesting.com>\n */\ndefine('taoMediaManager/previewer/component/qtiSharedStimulusItem',[\n    'context',\n    'taoQtiTestPreviewer/previewer/runner',\n    'css!taoQtiTestPreviewer/previewer/provider/item/css/item'\n], function (context, previewerFactory) {\n    'use strict';\n\n    /**\n     * Builds a test runner to preview test item\n     * @param {jQuery|HTMLElement|String} container - The container in which renders the component\n     * @param {Object} [config] - The testRunner options\n     * @param {String} [config.itemUri] - The ID of the SharedStimulus (for consisten with other providers)\n     * @param {Object[]} [config.plugins] - Additional plugins to load\n     * @param {String} [config.fullPage] - Force the previewer to occupy the full window.\n     * @param {String} [config.readOnly] - Do not allow to modify the previewed item.\n     * @param {Function} [template] - An optional template for the component\n     * @returns {previewer}\n     */\n    return function qtiItemPreviewerFactory(container, config = {}, template = null) {\n        const testRunnerConfig = {\n            testDefinition: 'test-container',\n            serviceCallId: 'previewer',\n            providers: {\n                runner: {\n                    id: 'qtiItemPreviewer',\n                    module: 'taoQtiTestPreviewer/previewer/provider/item/item',\n                    bundle: 'taoQtiTestPreviewer/loader/qtiPreviewer.min',\n                    category: 'runner'\n                },\n                proxy: {\n                    id: 'qtiSharedStimulusItemProxy',\n                    module: 'taoMediaManager/previewer/proxy/qtiSharedStimulusItem',\n                    bundle: 'taoMediaManager/loader/taoMediaManager.min',\n                    category: 'proxy'\n                },\n                communicator: {\n                    id: 'request',\n                    module: 'core/communicator/request',\n                    bundle: 'loader/vendor.min',\n                    category: 'communicator'\n                },\n                plugins: config.plugins || []\n            },\n            options: {\n                view: config.view,\n                readOnly: config.readOnly,\n                fullPage: config.fullPage,\n                plugins: config.pluginsOptions,\n                hideActionBars: config.hideActionBars\n            },\n            proxyProvider: 'qtiSharedStimulusItemProxy'\n        };\n\n        //extra context config\n        testRunnerConfig.loadFromBundle = !!context.bundle;\n\n        return previewerFactory(container, testRunnerConfig, template).on('ready', runner => {\n            if (config.itemState) {\n                runner.on('renderitem', () => runner.itemRunner.setState(config.itemState));\n            }\n            if (config.itemUri) {\n                return runner.loadItem(config.itemUri);\n            }\n        });\n    };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n */\n\n/**\n * @author Juan Luis Gutierrez Dos Santos <juanluis.gutierrezdossantos@taotesting.com>\n */\ndefine('taoMediaManager/controller/editInstance',[\n    'jquery',\n    'lodash',\n    'layout/actions/binder',\n    'ui/previewer',\n    'util/url',\n    'taoMediaManager/previewer/component/qtiSharedStimulusItem',\n    'core/logger',\n    'ui/feedback',\n], function($, _, binder, previewer, urlUtil, qtiItemPreviewerFactory, loggerFactory, feedback) {\n    'use strict';\n\n    const logger = loggerFactory('taoMediaManager/editInstance');\n\n    const manageMediaController =  {\n\n        /**\n         * Controller entry point\n         */\n        start() {\n\n            const $previewer = $('.previewer');\n            let file = {};\n            file.url = $previewer.data('url');\n            file.mime = $previewer.data('type');\n\n            const isPreviewEnabled = $previewer.data('enabled');\n            const isPassage = file.mime === 'application/qti+xml';\n\n            if (isPreviewEnabled) {\n                if (!isPassage) {\n                    // to hide the loading icon, inherited from the .previewer\n                    file.containerClass = 'no-background';\n                    $previewer.previewer(file);\n                } else {\n                    qtiItemPreviewerFactory($previewer, {itemUri:  $('#edit-media').data('uri')})\n                        .on('error', function (err) {\n                            if (!_.isUndefined(err.message)) {\n                                feedback().error(err.message);\n                            }\n                            logger.error(err);\n                        });\n                }\n            }\n\n            if (isPassage) {\n                $('#media-authoring').show();\n            } else {\n                $('#media-authoring').hide();\n            }\n\n            $('#edit-media').off()\n                .on('click', function() {\n                    const action = { binding : 'load' , url: urlUtil.route('editMedia', 'MediaImport', 'taoMediaManager') };\n                    binder.exec(action, { classUri : this.dataset.classuri , id : this.dataset.uri } || this._resourceContext);\n                });\n        }\n    };\n\n    return manageMediaController;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n *\n *\n */\n\n//@see http://forge.taotesting.com/projects/tao/wiki/Front_js\ndefine('taoMediaManager/controller/routes',[],function(){\n    'use strict';\n\n    return {\n        'MediaManager': {\n            'deps': 'controller/actions',\n            'actions': {\n                'editInstance' : 'controller/editInstance',\n                'authoring': 'controller/authoring'\n            }\n        }\n    };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan <jean-sebastien@taotesting.com>\n */\ndefine('taoMediaManager/previewer/adapter/item/qtiSharedStimulusItem',['lodash', 'core/logger', 'taoMediaManager/previewer/component/qtiSharedStimulusItem', 'ui/feedback'], function (\n    _,\n    loggerFactory,\n    qtiItemPreviewerFactory,\n    feedback\n) {\n    'use strict';\n\n    const logger = loggerFactory('taoMediaManager/previewer');\n\n    /**\n     * List of required plugins that should be loaded in order to make the previewer work properly\n     * @type {Object[]}\n     */\n    const defaultPlugins = [\n        {\n            module: 'taoQtiTestPreviewer/previewer/plugins/controls/close',\n            bundle: 'taoQtiTestPreviewer/loader/qtiPreviewer.min',\n            category: 'controls'\n        },\n        {\n            module: 'taoQtiTestPreviewer/previewer/plugins/tools/scale/scale',\n            bundle: 'taoQtiTestPreviewer/loader/qtiPreviewer.min',\n            category: 'tools'\n        },\n        {\n            module: 'taoQtiTest/runner/plugins/tools/itemThemeSwitcher/itemThemeSwitcher',\n            bundle: 'taoQtiTest/loader/testPlugins.min',\n            category: 'tools'\n        }\n    ];\n\n    /**\n     * Wraps the legacy item previewer in order to be loaded by the taoItems previewer factory\n     */\n    return {\n        name: 'qtiSharedStimulusItem',\n\n        /**\n         * Builds and shows the legacy item previewer\n         *\n         * @param {String} sharedStimulusId - The ID of the SharedStimulus to load\n         * @param {Object} state - The state of the item\n         * @param {Object} [config] - Some config entries\n         * @param {Object[]} [config.plugins] - Additional plugins to load\n         * @param {String} [config.fullPage] - Force the previewer to occupy the full window.\n         * @param {String} [config.readOnly] - Do not allow to modify the previewed item.\n         * @returns {Object}\n         */\n        init(sharedStimulusId, config = {}) {\n            config.itemUri = sharedStimulusId;\n            config.plugins = Array.isArray(config.plugins) ? [...defaultPlugins, ...config.plugins] : defaultPlugins;\n            return qtiItemPreviewerFactory(window.document.body, config).on('error', function (err) {\n                if (!_.isUndefined(err.message)) {\n                    feedback().error(err.message);\n                }\n                logger.error(err);\n            });\n        }\n    };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n */\n\n/**\n * Test runner proxy for the QTI item previewer\n *\n * @author Hanna Dzmitryieva <hanna@taotesting.com>\n */\ndefine('taoMediaManager/previewer/proxy/qtiSharedStimulusItem',[\n    'jquery',\n    'lodash',\n    'i18n',\n    'core/promiseQueue',\n    'core/dataProvider/request',\n    'util/url',\n    'taoMediaManager/qtiCreator/helper/createDummyItemData'\n], function ($, _, __, promiseQueue, request, urlUtil, creatorDummyItemData) {\n    'use strict';\n\n    const serviceController = 'SharedStimulus';\n    const serviceExtension = 'taoMediaManager';\n    /**\n     * QTI proxy definition\n     * Related to remote services calls\n     * @type {Object}\n     */\n    return {\n        name: 'qtiSharedStimulusItemProxy',\n\n        /**\n         * Installs the proxy\n         */\n        install: function install() {\n            /**\n             * A promise queue to ensure requests run sequentially\n             */\n            this.queue = promiseQueue();\n        },\n        /**\n         * Initializes the proxy\n         * @returns {Promise} - Returns a promise. The proxy will be fully initialized on resolve.\n         *                      Any error will be provided if rejected.\n         */\n        init: function init() {\n            // the method must return a promise with Object\n            return Promise.resolve({});\n        },\n\n        /**\n         * Uninstalls the proxy\n         * @returns {Promise} - Returns a promise. The proxy will be fully uninstalled on resolve.\n         *                      Any error will be provided if rejected.\n         */\n        destroy: function destroy() {\n            // no request, just a resources cleaning\n            this.queue = null;\n\n            // the method must return a promise\n            return Promise.resolve();\n        },\n\n        /**\n         * Gets an item definition by its identifier, also gets its current state\n         * @param {String} identifier - The identifier of the sharedStimulus to get\n         * @returns {Promise} - Returns a promise. The item data will be provided on resolve.\n         *                      Any error will be provided if rejected.\n         */\n        getItem: function getItem(identifier) {\n            return request(urlUtil.route('get', serviceController, serviceExtension), { id: identifier }, 'GET').then(\n                function (data) {\n                    const itemData = creatorDummyItemData(data);\n                    data.baseUrl = urlUtil.route('getFile', 'MediaManager', 'taoMediaManager', { uri: '' });\n                    data.content = {\n                        type: 'qti',\n                        data: itemData\n                    };\n                    return data;\n                }\n            );\n        }\n    };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n */\ndefine('taoMediaManager/qtiCreator/widgets/helpers/content',[\n    'jquery',\n    'lodash',\n    'taoMediaManager/qtiCreator/helper/creatorRenderer',\n    'taoQtiItem/qtiCreator/model/helper/container',\n    'taoQtiItem/qtiCreator/editor/gridEditor/content'\n], function($, _, creatorRenderer, containerHelper, gridContentHelper){\n    'use strict';\n    // all files that use qtiCreator/helper/creatorRenderer should be copied from taoQtiItem\n    // because they should use proper locations that are binded in Renderer\n    // qtiCreator/helper/creatorRenderer use qtiCreator/renderers/Renderer\n    // qtiCreator/renderers/Renderer return Renderer with binded locations from qtiCreator/renderers/config\n\n    const contentHelper = {};\n\n    /**\n     * Create elements from a widget box having the 'data-new=true' attribute\n     *  - render the elements at their placeholder in $container\n     *  - apply callback on each widget\n     * @param {DOMElement} container - element that will contain the new ones\n     * @param {JQuery} $container - DOM container where the new elements are created\n     * @param {String} data - corresponding HTML (?)\n     * @param {function} callback - will be triggered for each new created element\n     */\n    contentHelper.createElements = function createElements(container, $container, data, callback) {\n\n        const $dummy = $('<div>').html(data);\n\n        containerHelper.createElements(container, gridContentHelper.getContent($dummy), function(newElts){\n\n            creatorRenderer.get().load(function(){\n\n                _.each(newElts, function(serial) {\n                    let $placeholder,\n                        $widget,\n                        widget;\n\n                    $placeholder = $container.find(`.widget-box[data-new][data-qti-class=${serial.qtiClass}]`);\n\n                    serial.setRenderer(this);\n                    serial.render($placeholder);\n\n                    //render widget\n                    serial.postRender();\n\n                    widget = serial.data('widget');\n                    $widget = widget.$original;\n\n                    //inform height modification\n                    $widget.trigger('contentChange.gridEdit');\n\n                    if(_.isFunction(callback)){\n                        callback(widget);\n                    }\n                }.bind(this));\n\n            }, this.getUsedClasses());\n        });\n\n    };\n\n    contentHelper.changeInnerWidgetState = function _changeInnerWidgetState(outerWidget, state){\n\n        const selector = [];\n        _.forEach(['img', 'math', 'object', 'include'], function(qtiClass){\n            selector.push(`[data-html-editable] .widget-${qtiClass}`);\n        });\n\n        outerWidget.$container.find(selector.join(',')).each(function(){\n            const innerWidget = $(this).data('widget');\n            if(innerWidget){\n                innerWidget.changeState(state);\n            }\n        });\n    };\n\n    return contentHelper;\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2014-2017 (original work) Open Assessment Technologies SA ;\n *\n */\ndefine('taoMediaManager/qtiCreator/widgets/states/Active',[\n    'jquery',\n    'taoQtiItem/qtiCreator/widgets/states/factory',\n    'taoMediaManager/qtiCreator/widgets/helpers/content'\n], function($, stateFactory, contentHelper){\n    'use strict';\n\n    return stateFactory.create('active', function(){\n\n        const _widget     = this.widget,\n            container   = _widget.$container[0],\n            item        = _widget.element.getRootElement(),\n            areaBroker  = _widget.getAreaBroker(),\n            $modalFeedbacksArea = $('#modalFeedbacks'),\n            outerContainer = document.querySelector(\"#item-editor-scroll-outer\");\n\n        function checkIfWidgetShouldSleep(e) {\n            return container !== e.target\n                && !$.contains(container, e.target)\n                && $.contains(outerContainer, e.target) // in case click on scrollbar\n                && (!areaBroker || !areaBroker.getEditorBarArea || !$.contains(areaBroker.getEditorBarArea().get(0), e.target))\n                && (!$modalFeedbacksArea.length || !$.contains($modalFeedbacksArea[0], e.target)) //if click triggered inside the #modalFeedback then state must not be changed.\n                && ($(e.target).data('role') !== 'restore')\n                && !($(e.target).closest('.widget-popup').length);\n        }\n\n        //move to sleep state by clicking anywhere outside the interaction\n        areaBroker.getContentCreatorPanelArea().on(`mousedown.active.${_widget.serial}`, function(e){\n            if (checkIfWidgetShouldSleep(e)){\n                _widget.changeState('sleep');\n            }\n        }).on('beforesave.qti-creator.active', function(){\n            _widget.changeState('sleep');\n        }).on('styleedit.active', function(){\n            _widget.changeState('sleep');\n        });\n\n        $(document).on('open-preview.qti-item', function(){\n            _widget.changeState('sleep');\n        });\n\n        if(item && item.data('widget')){\n            //in item editing context:\n            item.data('widget').$container.on('resizestart.gridEdit.active beforedragoverstart.gridEdit.active', function(){\n                _widget.changeState('sleep');\n            });\n        }\n\n    }, function(){\n        const areaBroker = this.widget.getAreaBroker();\n\n        contentHelper.changeInnerWidgetState(this.widget, 'sleep');\n\n        this.widget.$container.off('.active');\n        areaBroker.getContentCreatorPanelArea().off(`.active.${this.widget.serial}`);\n\n        const item = this.widget.element.getRootElement();\n        if(item && item.data('widget')){\n            item.data('widget').$container.off('.active');\n        }\n\n    });\n});\n\n","define('taoMediaManager/qtiCreator/widgets/static/states/Active',[\n    'jquery',\n    'taoQtiItem/qtiCreator/widgets/states/factory',\n    'taoMediaManager/qtiCreator/widgets/states/Active'\n], function($, stateFactory, Active){\n    'use strict';\n\n    return stateFactory.extend(Active, function(){\n\n        var _widget = this.widget,\n            $container = _widget.$container;\n\n        _widget.beforeStateInit(function(e, element, state){\n            var serial = element.getSerial(),\n                composingElts;\n\n            if((state.name === 'active' && serial !== _widget.serial) || state.name === 'choice'){\n\n                if(_widget.element.qtiClass === 'rubricBlock'){\n                    //exclude\n                    composingElts = _widget.element.getComposingElements();\n                    if(!composingElts[element.serial]){\n                        _widget.changeState('sleep');\n                    }\n                }else{\n                    //call sleep whenever other widget is active\n                    _widget.changeState('sleep');\n                }\n\n            }\n\n        }, 'otherActive');\n\n        $container.on('mouseenter.active', function(e){\n            e.stopPropagation();\n            $container.parent().trigger('mouseleave.sleep');\n        }).on('mouseleave.active', function(e){\n            e.stopPropagation();\n            $container.parent().trigger('mouseenter.sleep');\n        }).on('click.active', function(e){\n            e.stopPropagation();\n        });\n\n    }, function(){\n        const _widget = this.widget,\n            areaBroker = _widget.getAreaBroker();\n\n        _widget.$container.off('.active');\n        areaBroker.getContentCreatorPanelArea().off(`.active.${_widget.serial}`);\n\n        _widget.offEvents('otherActive');\n    });\n\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Hanna Dzmitryieva <hanna@taotesting.com>\n */\ndefine('taoMediaManager/qtiCreator/helper/ckConfigurator',['lodash', 'ui/ckeditor/ckConfigurator', 'mathJax'], function(_, ckConfigurator, mathJax) {\n    'use strict';\n\n    const _defaults = {\n        qtiImage : true,\n        qtiMedia : true,\n        qtiInclude : false,\n        underline : true,\n        mathJax : !!mathJax,\n        removePlugins: 'taoqtiinclude'\n    };\n\n    /**\n     * Generate a configuration object for CKEDITOR\n     *\n     * @param {object} editor instance of ckeditor\n     * @param {String} toolbarType block | inline | flow | qtiBlock | qtiInline | qtiFlow | reset to get back to normal\n     * @param {Object} [options] - is based on the CKEDITOR config object with some additional sugar\n     *        Note that it's here you need to add parameters for the resource manager.\n     *        Some options are not covered in http://docs.ckeditor.com/#!/api/CKEDITOR.config\n     * @param {String} [options.dtdOverrides] - @see dtdOverrides which pre-defines them\n     * @param {Object} [options.positionedPlugins] - @see ckConfig.positionedPlugins\n     * @param {Boolean} [options.qtiImage] - enables the qtiImage plugin\n     * @param {Boolean} [options.qtiInclude] - enables the qtiInclude plugin\n     * @param {Boolean} [options.underline] - enables the underline plugin\n     * @param {Boolean} [options.mathJax] - enables the mathJax plugin\n     * @returns {Function} - a function for get the config\n     *\n     * @see http://docs.ckeditor.com/#!/api/CKEDITOR.config\n     */\n    const getConfig = function(editor, toolbarType = 'qtiInline', options) {\n        return ckConfigurator.getConfig(editor, toolbarType, _.defaults(options || {}, _defaults));\n    };\n\n    return {\n        getConfig : getConfig\n    };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n */\ndefine('taoMediaManager/qtiCreator/editor/ckEditor/htmlEditor',[\n    'lodash',\n    'i18n',\n    'jquery',\n    'ckeditor',\n    'core/promise',\n    'taoMediaManager/qtiCreator/helper/ckConfigurator',\n    'taoQtiItem/qtiItem/core/Element',\n    'taoMediaManager/qtiCreator/widgets/helpers/content',\n    'taoQtiItem/qtiCreator/widgets/helpers/deletingState'\n], function(\n    _,\n    __,\n    $,\n    CKEditor,\n    Promise,\n    ckConfigurator,\n    Element,\n    contentHelper,\n    deletingHelper\n){\n    'use strict';\n\n    const _defaults = {\n        placeholder : __('some text ...'),\n        shieldInnerContent : true,\n        passthroughInnerContent : false,\n        autofocus : true\n    };\n\n    const placeholderClass = 'cke-placeholder';\n\n    let editorFactory;\n\n    //prevent auto inline editor creation:\n    CKEditor.disableAutoInline = true;\n\n    /**\n     * @param {JQuery} $editable - the element to be transformed into an editor\n     * @param {JQuery} $editableContainer - the container of the editor\n     * @param {Object} [options]\n     * @param {String} [options.placeholder] - the place holder text\n     * @param {Boolean} [options.shieldInnerContent] - define if the inner widget content should be protected or not\n     * @param {Boolean} [options.passthroughInnerContent] - define if the inner widget content should be accessible directly or not\n     * @param {String} [options.removePlugins] - a coma-separated list of plugins that should not be loaded: 'plugin1,plugin2,plugin3'\n     * @param {Boolean} [options.autofocus] - automatically focus\n     * @returns {Object} CKEditor\n     */\n    function _buildEditor($editable, $editableContainer, options){\n\n        let ckConfig;\n        const widget = (options.data || {}).widget,\n            areaBroker = widget && widget.getAreaBroker && widget.getAreaBroker(),\n            $toolbarArea = areaBroker && areaBroker.getToolbarArea && areaBroker.getToolbarArea();\n\n        options = _.defaults(options, _defaults);\n\n        if( !($editable instanceof $) || !$editable.length){\n            throw new Error('invalid jquery element for $editable');\n        }\n        if( !($editableContainer instanceof $) || !$editableContainer.length){\n            throw new Error('invalid jquery element for $editableContainer');\n        }\n\n        if (options.placeholder && options.placeholder !== '') {\n            if ($editable.is('input')) {\n                $editable.attr('placeholder', options.placeholder);\n            } else {\n                $editable.attr('data-placeholder', options.placeholder);\n            }\n        }\n\n        ckConfig = {\n            dtdMode : 'qti',\n            autoParagraph : false,\n            removePlugins : options.removePlugins || '',\n            enterMode : options.enterMode || CKEditor.ENTER_P,\n            floatSpaceDockedOffsetY : 10,\n            sharedSpaces : {\n                top: ($toolbarArea && $toolbarArea.attr('id')) || 'toolbar-top'\n            },\n            taoQtiItem : {\n                /**\n                 * @param {DOM} tempWidget - this contains the DOM nodes created by a ckEditor plugin,\n                 *                           wrapped in a temporary widget container (= a widget container with a [data-new=\"true\"] attribute)\n                 */\n                insert : function(tempWidget){\n                    const $newContent = $(tempWidget).clone(); // we keep the original content for later use\n                    if(options.data && options.data.container && options.data.widget){\n                        contentHelper.createElements(options.data.container, $editable, _htmlEncode(this.getData()), function(createdWidget){\n                            const createdElement = createdWidget.element;\n\n                            if (_.isFunction(createdElement.initContainer)) {\n                                createdElement.body($newContent.html());\n                                createdWidget.rebuild();\n                                createdWidget = createdElement.data('widget');\n                            }\n                            _activateInnerWidget(options.data.widget, createdWidget);\n                        });\n                    }\n                }\n            },\n            on : {\n                instanceReady : function(e){\n                    let widgets = {};\n                    const editor = e.editor;\n\n                    //store it in editable elt data attr\n                    $editable.data('editor', editor);\n                    $editable.data('editor-options', options);\n\n                    //need to debounce the callback to prevent the changes made by undo to trigger the event change twice\n                    editor.on('change', _.debounce(function markupChanged(){\n                        _detectWidgetDeletion($editable, widgets, editor);\n                        if(_.isFunction(options.change)){\n                            options.change.call(editor, _htmlEncode(editor.getData()));\n                        }\n                    }, 100, {\n                        leading: true\n                    }));\n\n                    managePlaceholder($editable, editor);\n\n                    if(options.data && options.data.container){\n\n                        //store in data-qti-container attribute the editor instance as soon as it is ready\n                        $editable.data('qti-container', options.data.container);\n\n                        //init editable\n                        widgets = _rebuildWidgets(options.data.container, $editable, {\n                            restoreState : true\n                        });\n                        if(options.shieldInnerContent){\n                            _shieldInnerContent($editable, options.data.widget);\n                        }\n                    }\n\n                    if (options.autofocus) {\n                        _focus(editor);\n                    }\n\n                    $editable.trigger('editorready', [editor]);\n\n                    $('.qti-item').trigger('toolbarchange');\n                },\n                blur : function() {\n                    if ($toolbarArea) {\n                        $toolbarArea.hide();\n                    }\n                },\n                focus : function(){\n                    if ($toolbarArea) {\n                        $toolbarArea.show();\n                    }\n\n                    //callback:\n                    if(_.isFunction(options.focus)){\n                        options.focus.call(this, _htmlEncode(this.getData()));\n                    }\n\n                    $editable.trigger('editorfocus');\n\n                    $('.qti-item').trigger('toolbarchange');\n                },\n                configLoaded : function(e){\n                    //@todo : do we really have to wait here to initialize the config?\n                    let toolbarType = '';\n                    if(options.toolbar && _.isArray(options.toolbar)){\n                        ckConfig.toolbar = options.toolbar;\n                    }else{\n                        toolbarType = getTooltypeFromContainer($editableContainer);\n                    }\n\n                    if(typeof options.qtiMedia !== 'undefined'){\n                        ckConfig.qtiMedia = options.qtiMedia;\n                    }\n                    if(typeof options.qtiImage !== 'undefined'){\n                        ckConfig.qtiImage = options.qtiImage;\n                    }\n                    if(typeof options.qtiInclude !== 'undefined'){\n                        ckConfig.qtiInclude = options.qtiInclude;\n                    }\n                    if(typeof options.highlight !== 'undefined'){\n                        ckConfig.highlight = options.highlight;\n                    }\n\n                    e.editor.config = ckConfigurator.getConfig(e.editor, toolbarType, ckConfig);\n                },\n                afterPaste : function(){\n                    //@todo : we may add some processing on the editor after paste\n                }\n            }\n        };\n\n        return CKEditor.inline($editable[0], ckConfig);\n    }\n\n    /**\n     * Handle the placeholder for non-input elements.\n     * To avoid CK nasty side-effects of using the placeholder attribute on non-input elements,\n     * we handle the placeholder with css.\n     * @param {JQuery} $editable\n     * @param {Object} editor\n     */\n    function managePlaceholder($editable, editor) {\n        if (!$editable.is('input')) {\n            togglePlaceholder($editable);\n\n            editor.on('change', function() {\n                togglePlaceholder($editable);\n            });\n        }\n    }\n\n    /**\n     * Toggle the placeholder class on the editable depending on its content\n     * @param {JQuery} $editable\n     */\n    function togglePlaceholder($editable) {\n        const nonEmptyContent = ['img', 'table', 'math', 'object', 'printedVariable', '.tooltip-target'];\n\n        if ($editable.text().trim() === ''\n            && ! $editable.find(nonEmptyContent.join(',')).length\n        ) {\n            $editable.addClass(placeholderClass);\n        } else {\n            removePlaceholder($editable);\n        }\n    }\n\n    function removePlaceholder($editable) {\n        $editable.removeClass(placeholderClass);\n    }\n\n    /**\n     * Assess\n     * @param {type} $editableContainer\n     * @returns {String}\n     */\n    function getTooltypeFromContainer($editableContainer){\n\n        let toolbarType = 'qtiFlow';\n        // build parameter for toolbar\n        if($editableContainer.hasClass('widget-blockInteraction') || $editableContainer.hasClass('widget-textBlock') || $editableContainer.hasClass('widget-rubricBlock')){\n            toolbarType = 'qtiBlock';\n        }else if($editableContainer.hasClass('qti-prompt-container') || $editableContainer.hasClass('widget-hottext')){\n            toolbarType = 'qtiInline';\n        }\n        return toolbarType;\n    }\n\n    /**\n     * Find an inner element by its data attribute name\n     * @param {JQuery} $container\n     * @param {String} dataAttribute\n     * @returns {JQuery} collection\n     */\n    function _find($container, dataAttribute){\n        let $collection;\n\n        if($container.data(dataAttribute)){\n            $collection = $container;\n        }else{\n            $collection = $container.find(`[data-${dataAttribute}=true]`);\n        }\n        return $collection;\n    }\n\n    /**\n     * Rebuild all innerwidgets located inside a container\n     *\n     * @param {Object} container\n     * @param {JQuery} $container\n     * @param {Object} options\n     * @returns {Object} widgets\n     */\n    function _rebuildWidgets(container, $container, options){\n        const widgets = {};\n        options = options || {};\n\n        //re-init all widgets:\n        _.each(_.values(container.elements), function(elt){\n\n            const widget = elt.data('widget'),\n                currentState = widget.getCurrentState().name;\n\n            widgets[elt.serial] = widget.rebuild({\n                context : $container,\n                ready : function(elWidget){\n                    if(options.restoreState){\n                        //restore current state\n                        elWidget.changeState(currentState);\n                    }\n                }\n            });\n        });\n\n        $container.trigger('widgetCreated', [widgets, container]);\n\n        return widgets;\n    }\n\n    /**\n     * Find the widget container by its serial\n     *\n     * @param {JQuery} $container\n     * @param {String} serial\n     * @returns {JQuery} $widget\n     */\n    function _findWidgetContainer($container, serial){\n        return $container.find(`.widget-box[data-serial='${serial}']`);\n    }\n\n    /**\n     * Detect if an inner widget has been removed\n     *\n     * @param {JQuery} $container\n     * @param {Array} widgets\n     * @param {Object} editor\n     * @returns {undefined}\n     */\n    function _detectWidgetDeletion($container, widgets, editor){\n\n        const deleted = [];\n        const container = $container.data('qti-container');\n        let $widget;\n\n        _.each(widgets, function(w){\n\n            if(!w.element.data('removed')){\n                $widget = _findWidgetContainer($container, w.serial);\n                if(!$widget.length){\n                    deleted.push(w);\n                }\n            }\n\n        });\n\n        if(deleted.length){\n            const undoCmd = editor.getCommand( 'undo');\n            const $messageBox = deletingHelper.createInfoBox(deleted);\n\n            $messageBox.on('confirm.deleting', function(){\n\n                _.each(deleted, function(w){\n                    w.element.remove();\n                    w.destroy();\n                });\n\n                editor.resetUndo();\n\n            }).on('undo.deleting', function(){\n\n                editor.undoManager.undo();\n\n                //need to rebuild the inner widgets in case the undo restored some qti elements\n                _rebuildWidgets(container, $container, {\n                    restoreState : true\n                });\n\n                _shieldInnerContent($container, container.data('widget'));\n            });\n\n            if (undoCmd){\n                //catch ckeditor's undo event to trigger the same behaviour as the undo action dialog\n                undoCmd.on('afterUndo', function(){\n                    $messageBox.find('a.undo').click();\n                });\n            }\n\n        }\n    }\n\n    /**\n     * @param {JQuery} $widget - the widget to be protected\n     * @returns {JQuery} The added layer (shield)\n     */\n    function addShield($widget){\n        const $shield = $('<button>', {\n            'class' : 'html-editable-shield'\n        });\n\n        $widget.attr('contenteditable', false);\n        $widget.append($shield);\n        return $shield;\n    }\n\n    /**\n     * Protect the inner widgets of a container\n     *\n     * @param {JQuery} $container\n     * @param {Object} containerWidget\n     * @returns {undefined}\n     */\n    function _shieldInnerContent($container, containerWidget){\n\n        $container.find('.widget-box').each(function(){\n            const $widget = $(this);\n\n            addShield($widget).on('click', function(e){\n                let innerWidget;\n\n                //click on shield:\n                //1. this.widget.changeState('sleep');\n                //2. clicked widget.changeState('active');\n\n                e.stopPropagation();\n\n                innerWidget = $widget.data('widget');\n                _activateInnerWidget(containerWidget, innerWidget);\n            });\n        });\n\n    }\n\n    /**\n     * Activate the inner widget\n     *\n     * @param {Object} containerWidget\n     * @param {Object} innerWidget\n     * @returns {undefined}\n     */\n    function _activateInnerWidget(containerWidget, innerWidget){\n        let listenToWidgetCreation;\n        const event = `widgetCreated.${innerWidget.serial}`;\n\n        if(containerWidget && containerWidget.element && containerWidget.element.qtiClass){\n\n            listenToWidgetCreation = function(){\n                containerWidget.$container\n                    .on(event, function(e, widgets){\n                        const targetWidget = widgets[innerWidget.serial];\n                        if(targetWidget){\n                            containerWidget.$container.off(event);\n                            //FIXME potential race condition ? (debounce the enclosing event handler ?)\n                            _.delay(function(){\n                                if(Element.isA(targetWidget.element, 'interaction')){\n                                    targetWidget.changeState('question');\n                                } else{\n                                    targetWidget.changeState('active');\n                                }\n                            }, 100);\n                        }\n                    });\n\n            };\n\n            if(Element.isA(containerWidget.element, '_container') && !containerWidget.element.data('stateless')){\n\n                //only _container that are NOT stateless need to change its state to sleep before activating the new one.\n                listenToWidgetCreation();\n                containerWidget.changeState('sleep');\n\n            }else if(Element.isA(containerWidget.element, 'interaction')){\n\n                listenToWidgetCreation();\n                containerWidget.changeState('sleep');\n\n            }else if(Element.isA(containerWidget.element, 'choice')){\n\n                listenToWidgetCreation();\n                containerWidget.changeState('question');\n\n            }else if(Element.isA(containerWidget.element, 'table')){\n\n                listenToWidgetCreation();\n                containerWidget.changeState('sleep');\n\n            }else if(Element.isA(innerWidget.element, 'choice')){\n\n                innerWidget.changeState('choice');\n\n            }else{\n\n                innerWidget.changeState('active');\n            }\n\n        }else{\n\n            innerWidget.changeState('active');\n        }\n    }\n\n    /**\n     * Special encoding of ouput html generated from ie8 : moved to xmlRenderer\n     * @param {String} encodedStr\n     * @returns {String} encodedStr\n     */\n    function _htmlEncode(encodedStr){\n        return encodedStr;\n    }\n\n    /**\n     * Focus the editor and set the cursor to the end\n     *\n     * @param {Object} editor - the ckeditor instance\n     * @returns {undefined}\n     */\n    function _focus(editor){\n        if (editor.editable() && editor.editable().$.parentNode){\n            editor.focus();\n            const range = editor.createRange();\n            range.moveToElementEditablePosition(editor.editable(), true);\n            editor.getSelection().selectRanges([range]);\n        }\n    }\n\n    editorFactory = {\n        /**\n         * Check if all data-html-editable has an editor\n         *\n         * @param {type} $container\n         * @returns {undefined}\n         */\n        hasEditor : function($container){\n\n            let hasEditor = false;\n\n            _find($container, 'html-editable').each(function(){\n                hasEditor = !!$(this).data('editor');\n                return hasEditor; //continue if true, break if false\n            });\n\n            return hasEditor;\n        },\n        /**\n         * Instanciate the editor\n         *\n         * @param {JQuery} $container\n         * @param {Object} [editorOptions]\n         * @param {String} [editorOptions.placeholder] - the place holder text\n         * @param {Boolean} [editorOptions.shieldInnerContent] - define if the inner widget content should be protected or not\n         * @param {Boolean} [editorOptions.passthroughInnerContent] - define if the inner widget content should be accessible directly or not\n         * @param {Boolean} [editorOptions.enterMode] - what is the behavior of the \"Enter\" key (see ENTER_MODE_xxx in ckEditor configuration)\n         * @returns {undefined}\n         */\n        buildEditor : function($container, editorOptions){\n            const buildTasks = [];\n            _find($container, 'html-editable-container').each(function(){\n\n                const $editableContainer = $(this),\n                    $editable = $editableContainer.find('[data-html-editable]');\n\n                buildTasks.push(new Promise(function (resolve) {\n                    //need to make the element html editable to enable ck inline editing:\n                    $editable.attr('contenteditable', true);\n\n                    //build it\n                    _buildEditor($editable, $editableContainer, editorOptions);\n\n                    $editable.on('editorready', resolve);\n                }));\n            });\n            return Promise.all(buildTasks);\n        },\n        /**\n         * Destroy the editor\n         *\n         * @param {JQuery} $container\n         * @returns {undefined}\n         */\n        destroyEditor : function($container){\n            const destructTasks = [];\n            _find($container, 'html-editable-container').each(function(){\n\n                let editor,\n                    options;\n                const $editableContainer = $(this),\n                    $editable = $editableContainer.find('[data-html-editable]');\n\n                $editable.removeAttr('contenteditable');\n                if($editable.data('editor')){\n\n                    destructTasks.push(new Promise(function (resolve) {\n                        editor = $editable.data('editor');\n                        options = $editable.data('editor-options');\n\n                        //before destroying, ensure that data is stored\n                        if(_.isFunction(options.change)){\n                            options.change.call(editor, _htmlEncode(editor.getData()));\n                        }\n\n                        removePlaceholder($editable);\n\n                        editor.on('destroy', function () {\n                            $editable.removeData('editor').removeData('editor-options');\n                            if($editable.data('qti-container')){\n                                _rebuildWidgets($editable.data('qti-container'), $editable);\n                            }\n\n                            $editable.trigger('editordestroyed');\n                            resolve();\n                        });\n\n                        editor.focusManager.blur(true);\n                        editor.destroy();\n                    }));\n                }\n            });\n            return Promise.all(destructTasks);\n        },\n        /**\n         * Get the editor content\n         *\n         * @param {JQuery} $editable\n         * @returns {String}\n         */\n        getData : function($editable){\n            const editor = $editable.data('editor');\n            if(editor){\n                return _htmlEncode(editor.getData());\n            }else{\n                throw new Error('no editor attached to the DOM element');\n            }\n        },\n        /**\n         * Allow to set the editor content. Works only with plain text for now.\n         *\n         * @param {JQuery} $editable\n         * @param {String} data\n         */\n        setData : function($editable, data) {\n            const editor = $editable.data('editor');\n            if(editor){\n                if (_.isString(data)) {\n                    editor.setData(_.escape(data));\n                }\n            }else{\n                throw new Error('no editor attached to the DOM element');\n            }\n        },\n        /**\n         * Focus all the editors found in the given container\n         *\n         * @param {JQuery} $editable\n         * @returns {undefined}\n         */\n        focus : function($editable){\n            _find($editable, 'html-editable').each(function(){\n                const editor = $(this).data('editor');\n                if(editor){\n                    _focus(editor);\n                }\n            });\n        }\n    };\n\n    return editorFactory;\n});\n\n","\ndefine('tpl!taoMediaManager/qtiCreator/tpl/forms/static/text', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n  this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n  var buffer = \"\", stack1, helper, options, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\";\n\n\n  buffer += \"<div class=\\\"panel\\\">\\n    <label for=\\\"textBlockCssClass\\\">\"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Text Block CSS Class\", options) : helperMissing.call(depth0, \"__\", \"Text Block CSS Class\", options)))\n    + \"</label>\\n    <span class=\\\"icon-help tooltipstered\\\" data-tooltip=\\\"~ .tooltip-content:first\\\" data-tooltip-theme=\\\"info\\\"></span>\\n    <div class=\\\"tooltip-content\\\">\"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Set a CSS class name in order to customize the display style.\", options) : helperMissing.call(depth0, \"__\", \"Set a CSS class name in order to customize the display style.\", options)))\n    + \"</div>\\n    <input type=\\\"text\\\" name=\\\"textBlockCssClass\\\" value=\\\"\";\n  if (helper = helpers.textBlockCssClass) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.textBlockCssClass); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1)\n    + \"\\\" />\\n</div>\";\n  return buffer;\n  });\n});\n\n","define('taoMediaManager/qtiCreator/widgets/static/text/states/Active',[\n    'taoQtiItem/qtiCreator/widgets/states/factory',\n    'taoMediaManager/qtiCreator/widgets/static/states/Active',\n    'taoMediaManager/qtiCreator/editor/ckEditor/htmlEditor',\n    'taoQtiItem/qtiCreator/editor/gridEditor/content',\n    'taoQtiItem/qtiCreator/widgets/helpers/formElement',\n    'tpl!taoMediaManager/qtiCreator/tpl/forms/static/text'\n], function(stateFactory, Active, htmlEditor, content, formElement, formTpl){\n    'use strict';\n\n    var wrapperCls = 'custom-text-box';\n\n    var TextActive = stateFactory.extend(Active, function(){\n\n        this.buildEditor();\n        this.initForm();\n\n    }, function(){\n\n        this.destroyEditor();\n        this.widget.$form.empty();\n    });\n\n    TextActive.prototype.buildEditor = function(){\n\n        var widget = this.widget;\n        var $editableContainer = widget.$container;\n        var container = widget.element;\n        var changeCallback = content.getChangeCallback(container);\n\n        $editableContainer.attr('data-html-editable-container', true);\n\n        if(!htmlEditor.hasEditor($editableContainer)){\n\n            htmlEditor.buildEditor($editableContainer, {\n                change : function(data) {\n                    changeCallback.call(this, data);\n\n                    // remove the form value if there is no content to apply on\n                    if (!data) {\n                        widget.$form.find('[name=\"textBlockCssClass\"]').val('');\n                    }\n                },\n                blur : function(){\n                    widget.changeState('sleep');\n                },\n                data : {\n                    widget : widget,\n                    container : container\n                }\n            });\n        }\n    };\n\n    TextActive.prototype.destroyEditor = function(){\n        //search and destroy the editor\n        htmlEditor.destroyEditor(this.widget.$container);\n    };\n\n    TextActive.prototype.initForm = function(){\n        var widget = this.widget;\n        var $form = widget.$form;\n        var blockCls = widget.$container.find(`.${wrapperCls}`).attr('class');\n\n        $form.html(formTpl({\n            textBlockCssClass: (blockCls || '').replace(wrapperCls, '').trim()\n        }));\n\n        formElement.initWidget($form);\n\n        formElement.setChangeCallbacks($form, widget.element, {\n            textBlockCssClass: function(element, value) {\n                var $block = widget.$container.find(`.${wrapperCls}`);\n\n                // prevent to have the wrapper class twice\n                value = value.trim();\n                if (value === wrapperCls) {\n                    value = '';\n                }\n\n                if (!value) {\n                    // no need to have a wrapper if no block class is set\n                    $block.children().unwrap();\n                } else {\n                    if (!$block.length) {\n                        // no wrapper found, insert one\n                        $block = widget.$container\n                            .find('[data-html-editable=\"true\"]')\n                            .wrapInner('<div />')\n                            .children();\n                    }\n\n                    // replace the block class\n                    $block.attr('class', `${wrapperCls} ${value}`);\n                }\n            }\n        });\n    };\n\n    return TextActive;\n});\n\n","define('taoMediaManager/qtiCreator/widgets/static/text/states/states',[\n    'taoQtiItem/qtiCreator/widgets/states/factory',\n    'taoQtiItem/qtiCreator/widgets/static/states/states',\n    'taoQtiItem/qtiCreator/widgets/static/text/states/Sleep',\n    'taoMediaManager/qtiCreator/widgets/static/text/states/Active'\n], function(factory, states){\n    'use strict';\n\n    return factory.createBundle(states, arguments);\n});\n","define('taoMediaManager/qtiCreator/widgets/static/text/Widget',[\n    'jquery',\n    'taoQtiItem/qtiCreator/widgets/static/Widget',\n    'taoMediaManager/qtiCreator/widgets/static/text/states/states',\n    'tpl!taoQtiItem/qtiCreator/tpl/toolbars/textBlock'\n], function($, Widget, states, toolbarTpl){\n    'use strict';\n\n    const TextWidget = Widget.clone();\n\n    TextWidget.initCreator = function(){\n\n        Widget.initCreator.call(this);\n\n        this.registerStates(states);\n\n    };\n\n    TextWidget.buildContainer = function(){\n\n        const $wrap = $('<div>', {'data-serial' : this.element.serial, 'data-qti-class' : '_container', 'class' : 'widget-box widget-block widget-textBlock'})\n            .append($('<div>', {'data-html-editable' : true}));\n\n        this.$original.wrapInner($wrap);\n\n        this.$container = this.$original.children('.widget-box');\n    };\n\n    TextWidget.createToolbar = function(){\n\n        const $tlb = $(toolbarTpl({\n            serial : this.serial,\n            state : 'active'\n        }));\n\n        this.$container.append($tlb);\n\n        $tlb.find('[data-role=\"delete\"]').on('click.widget-box', e => {\n            e.stopPropagation();//to prevent direct deleting;\n            this.changeState('deleting');\n        });\n\n        return this;\n    };\n\n    return TextWidget;\n});\n","define('taoMediaManager/qtiCreator/editor/blockAdder/blockAdder',[\n    'jquery',\n    'lodash',\n    'tpl!taoQtiItem/qtiCreator/editor/blockAdder/tpl/addColumnRow',\n    'taoQtiItem/qtiItem/core/Element',\n    'taoMediaManager/qtiCreator/helper/creatorRenderer',\n    'taoQtiItem/qtiCreator/model/helper/container',\n    'taoQtiItem/qtiCreator/editor/gridEditor/content',\n    'taoMediaManager/qtiCreator/widgets/static/text/Widget'\n], function ($, _, adderTpl, Element, creatorRenderer, containerHelper, contentHelper, TextWidget) {\n    'use strict';\n\n    const _wrap = '<div class=\"colrow\"></div>';\n    const _placeholder = '<div class=\"placeholder\">';\n\n    /**\n     * Init the block adder on the item editor panel\n     *\n     * @param {Object} item - standard qti js object\n     * @param {JQuery} $editorPanel - the container the selector popup will be located in\n     */\n    function create(item, $editorPanel) {\n        /**\n         * Get the qti item body dom\n         *\n         * @returns {JQuery}\n         */\n        function _getItemBody() {\n            return $editorPanel.find('.qti-itemBody');\n        }\n\n        /**\n         * Init insertion relative to a widget container\n         *\n         * @param {JQuery} $widget\n         */\n        function _initInsertion($widget) {\n            const $wrap = $(_wrap);\n            let $colRow = $widget.parent('.colrow');\n\n            //trigger event to restore all currently active widget back to sleep state\n            $editorPanel.trigger('beforesave.qti-creator.active');\n\n            if (!$colRow.length) {\n                $widget.wrap(_wrap);\n                $colRow = $widget.parent('.colrow');\n            }\n            $colRow.after($wrap);\n\n            const $placeholder = $(_placeholder);\n            $wrap.addClass('tmp').prepend($placeholder);\n            _insertElement('_container', $placeholder);\n        }\n\n        /**\n         * End the current insertion state\n         *\n         * @returns {undefined}\n         */\n        function _endInsertion() {\n            //need to update item body\n            item.body(contentHelper.getContent(_getItemBody()));\n        }\n\n        /**\n         * Function to define behaviour when the insertion is completed\n         *\n         * @param {JQuery} $wrap\n         */\n        function _done($wrap) {\n            //remove tmp class\n            $wrap.removeClass('tmp');\n            _endInsertion();\n        }\n\n        /**\n         * Append the \"plus\" button into a widget\n         *\n         * @param {JQuery} $widget\n         * @returns {undefined}\n         */\n        function _appendButton($widget) {\n            //only append button to no-tmp widget and only add it once:\n            if (!$widget.children('.add-block-element').length && !$widget.parent('.colrow.tmp').length) {\n                const $adder = $(adderTpl());\n                $widget.append($adder);\n                $adder.on('click', function (e) {\n                    e.preventDefault();\n                    e.stopPropagation();\n\n                    const $widgetParent = $(this).parents('.widget-box');\n                    _initInsertion($widgetParent);\n                });\n            }\n        }\n\n        $editorPanel.find('.widget-textBlock').each(function () {\n            _appendButton($(this));\n        });\n\n        //bind add event\n        $editorPanel.on('ready.qti-widget', function (e, _widget) {\n            const qtiElement = _widget.element;\n\n            if (\n                qtiElement.is('_container')\n            ) {\n                let $colRow = _widget.$container.parent('.colrow');\n                if ($colRow.hasClass('tmp')) {\n                    _done($colRow);\n                }\n                if (!$colRow.length) {\n                    _widget.$container.wrap(_wrap);\n                }\n                _appendButton(_widget.$container);\n            }\n        });\n    }\n\n    /**\n     * Create a new qti element in place of the give $placehoder\n     *\n     * @param {String} qtiClass\n     * @param {JQuery} $placeholder\n     */\n    function _insertElement(qtiClass, $placeholder) {\n        //a new qti element has been added: update the model + render\n        $placeholder.removeAttr('id'); //prevent it from being deleted\n\n        $placeholder.addClass('widget-box'); //required for it to be considered as a widget during container serialization\n        $placeholder.attr({\n            'data-new': true,\n            'data-qti-class': qtiClass\n        }); //add data attribute to get the dom ready to be replaced by rendering\n\n        const $widget = $placeholder.parent().closest('.widget-box, .qti-item');\n        const $editable = $placeholder.closest('[data-html-editable], .qti-itemBody');\n        const widget = $widget.data('widget');\n        const element = widget.element;\n        const container = Element.isA(element, '_container') ? element : element.getBody();\n\n        if (!element || !$editable.length) {\n            throw new Error('cannot create new element');\n        }\n\n        containerHelper.createElements(container, contentHelper.getContent($editable), function (newElts) {\n            const creator = creatorRenderer.get();\n            creator.load(function () {\n                for (const serial in newElts) {\n                    const elt = newElts[serial];\n                    let $widgetElem;\n                    let widgetElem;\n                    let $colParent = $placeholder.parent();\n\n                    elt.setRenderer(this);\n\n                    //the text widget is \"inner-wrapped\" so need to build a temporary container:\n                    $placeholder.replaceWith('<div class=\"text-block\"></div>');\n                    const $textBlock = $colParent.find('.text-block');\n                    $textBlock.html(elt.render());\n\n                    //build the widget\n                    widgetElem = TextWidget.build(elt, $textBlock, creator.getOption('textOptionForm'), {\n                        ready: function () {\n                            //remove the temorary container\n                            if (this.$container.parent('.text-block').length) {\n                                this.$container.unwrap();\n                            }\n                            this.changeState('active');\n                        }\n                    });\n                    $widgetElem = widgetElem.$container;\n\n                    //inform height modification\n                    $widgetElem.trigger('contentChange.gridEdit');\n                    $widgetElem.trigger('resize.gridEdit');\n                }\n            }, this.getUsedClasses());\n        });\n    }\n\n    return {\n        create: create\n    };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2014-2020 (original work) Open Assessment Technologies SA;\n *\n */\ndefine('taoMediaManager/qtiCreator/editor/containerEditor',[\n    'lodash',\n    'jquery',\n    'core/promise',\n    'taoQtiItem/qtiItem/core/Loader',\n    'taoQtiItem/qtiCreator/model/Container',\n    'taoQtiItem/qtiCreator/model/Item',\n    'taoQtiItem/qtiCreator/model/helper/event',\n    'taoQtiItem/qtiCreator/model/qtiClasses',\n    'taoQtiItem/qtiCreator/helper/commonRenderer',\n    'taoQtiItem/qtiCreator/helper/xmlRenderer',\n    'taoQtiItem/qtiItem/helper/simpleParser',\n    'taoMediaManager/qtiCreator/helper/creatorRenderer',\n    'taoQtiItem/qtiCreator/helper/xincludeRenderer',\n    'taoQtiItem/qtiCreator/editor/gridEditor/content',\n    'taoQtiItem/qtiCreator/editor/ckEditor/htmlEditor'\n], function(_, $, Promise, Loader, Container, Item, event, allQtiClasses, commonRenderer, xmlRenderer, simpleParser, creatorRenderer, xincludeRenderer, content, htmlEditor) {\n    'use strict';\n    // all files that use qtiCreator/helper/creatorRenderer should be copied from taoQtiItem\n    // because they should use proper locations that are binded in Renderer\n    // qtiCreator/helper/creatorRenderer use qtiCreator/renderers/Renderer\n    // qtiCreator/renderers/Renderer return Renderer with binded locations from qtiCreator/renderers/config\n\n    const _ns = 'containereditor';\n\n    const _defaults = {\n        change : _.noop,\n        markup : '',\n        markupSelector : '',\n        qtiMedia : false\n    };\n\n    event.initElementToWidgetListeners();\n\n    function parser($container){\n\n        //detect math ns :\n        const mathNs = 'm';//for 'http://www.w3.org/1998/Math/MathML'\n\n        //parse qti xml content to build a data object\n        const data = simpleParser.parse($container.clone(), {\n            ns : {\n                math : mathNs\n            }\n        });\n\n        if (data.body) {\n            return data.body;\n        } else {\n            throw new Error('invalid content for qti container');\n        }\n    }\n\n    /**\n     * Transform the given dom element into a rich-text editor\n     *\n     * @param {JQuery} $container - the container of the DOM element that is going to editable\n     * @param {Object} [options]\n     * @param {String} [options.markup] - the markup to be use as the initial editor content\n     * @param {String} [options.markupSelector] - the element in $xontainer that holds the html to be used as the initial editor content\n     * @param {Object} [options.related] - define the qti element object this editor is attached too. Very important to edit a picture or math element inside it because prevents leaving the editing state of the related element.\n     * @param {Function} [options.change] - the callback called when the editor content has been modified\n     * @param {String} [options.placeholder] - the placeholder text of the container editor when\n     * @param {Array} [options.toolbar] - the ck toolbar\n     * @param {Boolean} [options.qtiMedia=false] - allow insert media object\n     * @param {Object} [options.areaBroker] - allow to set a custom areaBroker on the renderer\n     * @param {String} [options.removePlugins] - a coma-separated plugin list that should not be loaded\n     * @param {Object} [options.metadata] - some metadata to attach to the root element (ex: { myDataName: 'myDataValue' })\n     * @param {Boolean} [options.resetRenderer] - force resetting the renderer\n     * @param {Boolean} [options.autofocus] - automatically focus the editor\n     * @returns {undefined}\n     */\n    function create($container, options){\n\n        let html, htmls, data, loader;\n\n        options = _.defaults(options || {}, _defaults);\n\n        //assign proper markup\n        if (options.markup) {\n            html = options.markup;\n            if (options.markupSelector) {\n                htmls = extractHtmlFromMarkup(html, options.markupSelector);\n                html = htmls[0] || '';\n            }\n            $container.html(html);\n        }\n\n        data = parser($container);\n        loader = new Loader().setClassesLocation(allQtiClasses);\n        loader.loadRequiredClasses(data, function() {\n\n            let item,\n                containerEditors,\n                renderer,\n                qtiClasses = ['img', 'object', 'math', 'include', 'printedVariable', '_container', '_tooltip'];\n\n            //create a new container object\n            const container = new Container();\n\n            //tag the new container as statelss, which means that its state is not supposed to change\n            container.data('stateless', true);\n\n            $container.data('container', container);\n\n            //need to attach a container to the item to enable innserElement.remove()\n            //@todo fix this\n            item = new Item().setElement(container);\n            container.setRootElement(item);\n\n            if (options.metadata) {\n                _.each(options.metadata, function (value, name) {\n                    item.data(name, value);\n                });\n            }\n\n            //associate it to the interaction?\n            if (options.related) {\n                containerEditors = options.related.data('container-editors') || [];\n                containerEditors.push(container);\n                options.related.data('container-editors', containerEditors);\n            }\n\n            this.loadContainer(container, data);\n\n            //apply common renderer :\n            renderer = creatorRenderer.get(options.resetRenderer, {}, options.areaBroker);\n            renderer.load(function() {\n\n                const baseUrl = this.getOption('baseUrl');\n                container.setRenderer(this);\n                $container.html(container.render());\n                container.postRender();\n\n                //resolve xinclude\n                _.each(container.getComposingElements(), function(element){\n                    if(element.qtiClass === 'include'){\n                        xincludeRenderer.render(element.data('widget'), baseUrl);\n                    }\n                });\n\n                buildContainer($container);\n                buildEditor($container, container, {\n                    placeholder : options.placeholder || '',\n                    toolbar : options.toolbar || '',\n                    qtiMedia : options.qtiMedia,\n                    highlight : options.highlight,\n                    removePlugins : options.removePlugins || '',\n                    areaBroker : options.areaBroker,\n                    autofocus : options.autofocus || false\n                });\n\n                $container\n                    .off(`.${  _ns}`)\n                    .on(event.getList(_ns + event.getNs() + event.getNsModel()).join(' '), _.throttle(function(){\n                        var editorContent = container.render(xmlRenderer.get());\n                        $container.trigger(`containerchange.${  _ns}`, [editorContent]);\n\n                        if(_.isFunction(options.change)){\n                            options.change(editorContent);\n                        }\n                    }, 600));\n\n                $container.trigger('editorready.containereditor');\n\n            }, qtiClasses);\n\n        });\n\n    }\n\n    function buildContainer($container) {\n        $container.wrapInner($('<div>', {'class' : 'container-editor', 'data-html-editable' : true}));\n    }\n\n    function cleanup($container) {\n        const container = $container.data('container');\n        return new Promise(function (resolve) {\n            if(container) {\n                $(document).off(`.${  container.serial}`);\n                commonRenderer.load(['img', 'object', 'math', 'include', '_container', 'printedVariable', '_tooltip'], function(){\n                    $container.html(container.render(this));\n                    resolve();\n                });\n\n                $container.removeData('container');\n            } else {\n                resolve();\n            }\n        });\n    }\n\n    /**\n     * create a false widget that is required in html editor\n     *\n     * @param {JQuery} $editableContainer\n     * @param {Object} container\n     * @param {Object} options\n     * @param {Object} options.areaBroker\n     * @returns {Object} The fake widget object\n     */\n    function createFakeWidget($editableContainer, container, options) {\n\n        var widget = {\n            $container : $editableContainer,\n            element : container,\n            changeState : _.noop,\n            getAreaBroker : function getAreaBroker() {\n                return options.areaBroker;\n            }\n        };\n        //associate the widget to the container\n        container.data('widget', widget);\n\n        return widget;\n    }\n\n    function buildEditor($editableContainer, container, options) {\n\n        $editableContainer.attr('data-html-editable-container', true);\n\n        if (!htmlEditor.hasEditor($editableContainer)) {\n\n            htmlEditor.buildEditor($editableContainer, _.defaults(options || {}, {\n                shieldInnerContent : false,\n                passthroughInnerContent : false,\n                change : content.getChangeCallback(container),\n                data : {\n                    widget : createFakeWidget($editableContainer, container, options),\n                    container : container\n                }\n            }));\n        }\n    }\n\n    function destroy($editableContainer) {\n        return htmlEditor.destroyEditor($editableContainer)\n            .then(function() {\n                $editableContainer.removeAttr('data-html-editable-container');\n                return cleanup($editableContainer);\n            });\n    }\n\n    function extractHtmlFromMarkup(markupStr, selector) {\n        const $found = $('<div>').html(markupStr).find(selector);\n        let ret = [];\n        $found.each(function(){\n            ret.push($(this).html());\n        });\n        return ret;\n    }\n\n    return {\n        create : create,\n        destroy : destroy\n    };\n});\n","\n/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA ;\n */\n\n/**\n * This plugin add a \"plus\" button below each content block to add content more easily.\n *\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('taoMediaManager/qtiCreator/plugins/content/blockAdder',[\n    'i18n',\n    'core/plugin',\n    'taoMediaManager/qtiCreator/editor/blockAdder/blockAdder'\n], function(__, pluginFactory, blockAdder){\n    'use strict';\n\n    /**\n     * Returns the configured plugin\n     * @returns {Function} the plugin\n     */\n    return pluginFactory({\n\n        name : 'blockAdder',\n\n        /**\n         * Hook to the host's init\n         */\n        init : function init(){},\n\n        /**\n         * Hook to the host's render\n         */\n        render : function render(){\n\n            //set up the block adder\n            blockAdder.create(\n                this.getHost().getItem(),\n                this.getAreaBroker().getItemPanelArea()\n            );\n        }\n    });\n});\n\n","\n/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n */\n\n/**\n * This plugin displays add the preview button and launch it.\n * It also provides a mechanism that ask to save\n * the item before the preview (if the item has changed - should).\n *\n * @author Juan Luis Gutierrez Dos Santos <juanluis.gutierrezdossantos@taotesting.com>\n */\n\ndefine('taoMediaManager/qtiCreator/plugins/menu/preview',[\n    'jquery',\n    'i18n',\n    'core/plugin',\n    'ui/hider',\n    'taoMediaManager/previewer/adapter/item/qtiSharedStimulusItem',\n    'tpl!taoQtiItem/qtiCreator/plugins/button',\n], function($, __, pluginFactory, hider, previewerFactory, buttonTpl) {\n    'use strict';\n\n    /**\n     * Returns the configured plugin\n     * @returns {Function} the plugin\n     */\n    return pluginFactory({\n        name : 'preview',\n\n        /**\n         * Initialize the plugin (called during itemCreator's init)\n         * @fires {itemCreator#preview}\n         */\n        init() {\n            const SharedStimulusCreator = this.getHost();\n\n            /**\n             * Preview an item\n             * @event SharedStimulusCreator#preview\n             * @param {String} uri - the uri of this item to preview\n             */\n            SharedStimulusCreator.on('preview', (id) => {\n\n                // TO DO should be created empty item with shared stimulus inside\n                previewerFactory.init(id, {\n                    readOnly: false,\n                    fullPage: true\n                });\n            });\n\n            const sharedStimulusConfig = SharedStimulusCreator.getConfig();\n            if (sharedStimulusConfig.properties.previewEnabled) {\n                //creates the preview button\n                this.$element = $(buttonTpl({\n                    icon: 'preview',\n                    title: __('Preview the item'),\n                    text: __('Preview'),\n                    cssClass: 'preview-trigger',\n                    testId: 'preview-the-asset'\n                })).on('click', e => {\n                    $(document).trigger('open-preview.qti-item');\n                    e.preventDefault();\n                    this.disable();\n                    SharedStimulusCreator.trigger('preview', SharedStimulusCreator.getSharedStimulusId());\n                    this.enable();\n                });\n            }\n        },\n\n        /**\n         * Initialize the plugin (called during SharedStimulusCreator's render)\n         */\n        render() {\n            //attach the element to the menu area\n            const $container = this.getAreaBroker().getMenuArea();\n            $container.append(this.$element);\n        },\n\n        /**\n         * Called during the SharedStimulusCreator's destroy phase\n         */\n        destroy() {\n            this.$element.remove();\n        },\n\n        /**\n         * Enable the button\n         */\n        enable() {\n            this.$element\n                .removeProp('disabled')\n                .removeClass('disabled');\n        },\n\n        /**\n         * Disable the button\n         */\n        disable() {\n            this.$element\n                .prop('disabled', true)\n                .addClass('disabled');\n        },\n\n        /**\n         * Show the button\n         */\n        show() {\n            hider.show(this.$element);\n        },\n\n        /**\n         * Hide the button\n         */\n        hide() {\n            hider.hide(this.$element);\n        }\n    });\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n */\n\n/**\n * This plugin adds a save button to the menu.\n * Could be useful, or not (Save is so 90's, we want auto-saving with undo/redo capabilities)\n *\n * @author Juan Luis Gutierrez Dos Santos <juanluis.gutierrezdossantos@taotesting.com>\n */\n\ndefine('taoMediaManager/qtiCreator/plugins/menu/save',[\n    'jquery',\n    'i18n',\n    'core/plugin',\n    'ui/hider',\n    'tpl!taoQtiItem/qtiCreator/plugins/button'\n], function($, __, pluginFactory, hider, buttonTpl) {\n    'use strict';\n\n    /**\n     * Returns the configured plugin\n     * @returns {Function} the plugin\n     */\n    return pluginFactory({\n        name : 'save',\n\n        /**\n         * Initialize the plugin (called during itemCreator's init)\n         */\n        init() {\n            const self = this;\n            const sharedStimulusCreator = this.getHost();\n\n            this.$element = $(buttonTpl({\n                icon: 'save',\n                title: __('Save the asset'),\n                text : __('Save'),\n                cssClass: 'save-trigger',\n                testId: 'save-the-asset'\n            })).on('click', function saveHandler(e){\n                e.preventDefault();\n                self.disable();\n                sharedStimulusCreator.trigger('save');\n            });\n\n            this.hide();\n            this.disable();\n\n            sharedStimulusCreator.on('ready saved error', function(){\n                self.enable();\n            });\n        },\n\n        /**\n         * Called during the sharedStimulusCreator's render phase\n         */\n        render() {\n            //attach the element to the menu area\n            const $container = this.getAreaBroker().getMenuArea();\n            $container.append(this.$element);\n            this.show();\n        },\n\n        /**\n         * Called during the sharedStimulusCreator's destroy phase\n         */\n        destroy() {\n            this.$element.remove();\n        },\n\n        /**\n         * Enable the button\n         */\n        enable() {\n            this.$element\n                .removeProp('disabled')\n                .removeClass('disabled');\n        },\n\n        /**\n         * Disable the button\n         */\n        disable() {\n            this.$element\n                .prop('disabled', true)\n                .addClass('disabled');\n        },\n\n        /**\n         * Show the button\n         */\n        show() {\n            hider.show(this.$element);\n        },\n\n        /**\n         * Hide the button\n         */\n        hide() {\n            hider.hide(this.$element);\n        }\n    });\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA;\n */\n\n/**\n * This plugin adds a \"back\" button that does a History.go(-1)\n * (like your browser's back button).\n *\n * @author Juan Luis Gutierrez Dos Santos <juanluis.gutierrezdossantos@taotesting.com>\n */\n\ndefine('taoMediaManager/qtiCreator/plugins/navigation/back',[\n    'jquery',\n    'i18n',\n    'core/plugin',\n    'ui/hider',\n    'tpl!taoQtiItem/qtiCreator/plugins/button'\n], function($, __, pluginFactory, hider, buttonTpl) {\n    'use strict';\n\n    /**\n     * Returns the configured plugin\n     * @returns {Function} the plugin\n     */\n    return pluginFactory({\n        name : 'back',\n\n        /**\n         * Initialize the plugin\n         */\n        init() {\n            const sharedStimulusCreator = this.getHost();\n\n            sharedStimulusCreator.on('exit', function(){\n                window.history.back();\n            });\n\n            this.$element = $(buttonTpl({\n                icon: 'left',\n                title: __('Back to Manage Assets'),\n                text : __('Manage Assets'),\n                cssClass: 'back-action',\n                testId: 'manage-assets'\n            })).on('click', function backHandler(e){\n                e.preventDefault();\n                sharedStimulusCreator.trigger('exit');\n            });\n            this.hide();\n        },\n\n        /**\n         * Called during the sharedStimulusCreator's render phase\n         */\n        render() {\n            //attach the element to the menu area\n            const $container = this.getAreaBroker().getMenuLeftArea();\n            $container.append(this.$element);\n            this.show();\n        },\n\n        /**\n         * Called during the sharedStimulusCreator's destroy phase\n         */\n        destroy() {\n            this.$element.remove();\n        },\n\n        /**\n         * Enable the button\n         */\n        enable() {\n            this.$element\n                .removeProp('disabled')\n                .removeClass('disabled');\n        },\n\n        /**\n         * Disable the button\n         */\n        disable() {\n            this.$element\n                .prop('disabled', true)\n                .addClass('disabled');\n        },\n\n        /**\n         * Show the button\n         */\n        show() {\n            hider.show(this.$element);\n        },\n\n        /**\n         * Hide the button\n         */\n        hide(){\n            hider.hide(this.$element);\n        }\n    });\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2021 (original work) Open Assessment Technologies SA ;\n *\n */\ndefine('taoMediaManager/qtiCreator/widgets/static/img/states/Active',[\n    'taoQtiItem/qtiCreator/widgets/states/factory',\n    'taoQtiItem/qtiCreator/widgets/static/states/Active',\n    'tpl!taoQtiItem/qtiCreator/tpl/forms/static/img',\n    'taoQtiItem/qtiCreator/widgets/helpers/formElement',\n    'taoQtiItem/qtiCreator/widgets/static/helpers/inline',\n    'ui/image/ImgStateActive',\n], function (stateFactory, ActiveState, formTpl, formElement, inlineHelper, ImgStateActive) {\n    'use strict';\n    return ImgStateActive(stateFactory, ActiveState, formTpl, formElement, inlineHelper);\n});\n\n","define('taoMediaManager/qtiCreator/widgets/static/img/states/states',[\n    'taoQtiItem/qtiCreator/widgets/states/factory',\n    'taoQtiItem/qtiCreator/widgets/static/states/states',\n    'taoQtiItem/qtiCreator/widgets/static/img/states/Sleep',\n    'taoMediaManager/qtiCreator/widgets/static/img/states/Active'\n], function (factory, states) {\n    'use strict';\n\n    return factory.createBundle(states, arguments);\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n *\n */\ndefine('taoMediaManager/qtiCreator/widgets/static/img/Widget',[\n    'jquery',\n    'taoQtiItem/qtiCreator/widgets/static/Widget',\n    'taoMediaManager/qtiCreator/widgets/static/img/states/states',\n    'taoQtiItem/qtiCreator/widgets/static/helpers/widget',\n    'tpl!taoQtiItem/qtiCreator/tpl/toolbars/media',\n    'taoQtiItem/qtiCreator/widgets/static/helpers/inline',\n    'ui/mediaEditor/plugins/mediaAlignment/helper'\n], function ($, Widget, states, helper, toolbarTpl, inlineHelper, alignmentHelper) {\n    'use strict';\n\n    const ImgWidget = Widget.clone();\n\n    ImgWidget.initCreator = function initCreator(options) {\n        const img = this.element;\n\n        this.registerStates(states);\n\n        Widget.initCreator.call(this);\n\n        inlineHelper.togglePlaceholder(this);\n        // Resets classes for dom elements: img and wrapper on initial load and in sleep / inactive mode\n        alignmentHelper.initAlignment(this);\n\n        //check file exists:\n        inlineHelper.checkFileExists(this, 'src', options.baseUrl);\n        $('#item-editor-scope').on(`filedelete.resourcemgr.${this.element.serial}`, (e, src) => {\n            if (this.getAssetManager().resolve(img.attr('src')) === this.getAssetManager().resolve(src)) {\n                img.attr('src', '');\n                inlineHelper.togglePlaceholder(self);\n            }\n        });\n    };\n\n    ImgWidget.destroy = function destroy() {\n        $('#item-editor-scope').off(`.${this.element.serial}`);\n    };\n\n    ImgWidget.getRequiredOptions = function getRequiredOptions() {\n        return ['baseUrl', 'uri', 'lang', 'mediaManager', 'assetManager'];\n    };\n\n    ImgWidget.buildContainer = function buildContainer() {\n        helper.buildInlineContainer(this);\n\n        this.$container.css({\n            width: this.element.attr('width'),\n            height: this.element.attr('height')\n        });\n        if (this.$original[0]) {\n            this.$original[0].setAttribute('width', '100%');\n            this.$original[0].removeAttribute('height');\n        }\n\n        return this;\n    };\n\n    ImgWidget.createToolbar = function createToolbar() {\n        helper.createToolbar(this, toolbarTpl);\n\n        return this;\n    };\n\n    return ImgWidget;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n */\n\ndefine('taoMediaManager/qtiCreator/renderers/Img',[\n    'lodash',\n    'taoQtiItem/qtiCommonRenderer/renderers/Img',\n    'taoMediaManager/qtiCreator/widgets/static/img/Widget'\n], function (_, Renderer, Widget) {\n    'use strict';\n\n    const CreatorImg = _.clone(Renderer);\n\n    CreatorImg.render = function render(img, options) {\n        options = options || {};\n        options.baseUrl = this.getOption('baseUrl');\n        options.uri = this.getOption('uri');\n        options.lang = this.getOption('lang');\n        options.mediaManager = this.getOption('mediaManager');\n        options.assetManager = this.getAssetManager();\n\n        Widget.build(img, Renderer.getContainer(img), this.getOption('bodyElementOptionForm'), options);\n    };\n\n    return CreatorImg;\n});\n\n","\ndefine('tpl!taoMediaManager/qtiCreator/tpl/forms/item', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n  this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n  var stack1, functionType=\"function\", escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \"\", stack1, helper, options;\n  buffer += \"\\n    <div class=\\\"panel\\\">\\n        <label for=\\\"xml:lang\\\">\\n            \"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Language\", options) : helperMissing.call(depth0, \"__\", \"Language\", options)))\n    + \"\\n        </label>\\n        <span class=\\\"icon-help tooltipstered\\\" data-tooltip=\\\"~ .tooltip-content:first\\\" data-tooltip-theme=\\\"info\\\"></span>\\n        <span class=\\\"tooltip-content\\\">\\n            \"\n    + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Define item language.\", options) : helperMissing.call(depth0, \"__\", \"Define item language.\", options)))\n    + \"\\n        </span>\\n        <select name=\\\"xml:lang\\\" class=\\\"select2\\\" data-has-search=\\\"false\\\">\\n            \";\n  stack1 = helpers.each.call(depth0, (depth0 && depth0.languagesList), {hash:{},inverse:self.noop,fn:self.programWithDepth(2, program2, data, depth0),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n        </select>\\n    </div>\\n\";\n  return buffer;\n  }\nfunction program2(depth0,data,depth1) {\n  \n  var buffer = \"\", stack1, helper, options;\n  buffer += \"\\n                <option value=\\\"\"\n    + escapeExpression(((stack1 = (data == null || data === false ? data : data.key)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))\n    + \"\\\"\";\n  stack1 = (helper = helpers.equal || (depth1 && depth1.equal),options={hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data},helper ? helper.call(depth0, (data == null || data === false ? data : data.key), (depth1 && depth1['xml:lang']), options) : helperMissing.call(depth0, \"equal\", (data == null || data === false ? data : data.key), (depth1 && depth1['xml:lang']), options));\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \">\"\n    + escapeExpression((typeof depth0 === functionType ? depth0.apply(depth0) : depth0))\n    + \"</option>\\n            \";\n  return buffer;\n  }\nfunction program3(depth0,data) {\n  \n  \n  return \" selected=\\\"selected\\\"\";\n  }\n\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.languagesList), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n  if(stack1 || stack1 === 0) { return stack1; }\n  else { return ''; }\n  });\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2014-2020 (original work) Open Assessment Technologies SA ;\n *\n */\n\ndefine('taoMediaManager/qtiCreator/widgets/item/states/Active',[\n    'lodash',\n    'taoQtiItem/qtiCreator/widgets/states/factory',\n    'taoMediaManager/qtiCreator/widgets/states/Active',\n    'tpl!taoMediaManager/qtiCreator/tpl/forms/item',\n    'taoQtiItem/qtiCreator/widgets/helpers/formElement'\n], function(_, stateFactory, Active, formTpl, formElement){\n    'use strict';\n\n    const ItemStateActive = stateFactory.create(Active, function enterActiveState() {\n        const _widget = this.widget;\n        const item = _widget.element;\n        const $form = _widget.$form;\n\n        //build form:\n        $form.html(formTpl({\n            'xml:lang' : item.attr('xml:lang'),\n            languagesList : item.data('languagesList')\n        }));\n\n        //init widget\n        formElement.initWidget($form);\n\n        //init data validation and binding\n        formElement.setChangeCallbacks($form, item, {\n            'xml:lang' : formElement.getAttributeChangeCallback()\n        });\n\n    }, _.noop);\n\n    return ItemStateActive;\n});\n\n","define('taoMediaManager/qtiCreator/widgets/item/states/states',[\n    'taoQtiItem/qtiCreator/widgets/states/factory',\n    'taoMediaManager/qtiCreator/widgets/item/states/Active'\n], function(factory){\n    'use strict';\n\n    return factory.createBundle(arguments);\n});\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n *\n */\n\ndefine('taoMediaManager/qtiCreator/widgets/item/Widget',[\n    'lodash',\n    'i18n',\n    'jquery',\n    'core/promise',\n    'util/url',\n    'taoQtiItem/qtiCreator/widgets/Widget',\n    'taoMediaManager/qtiCreator/widgets/item/states/states',\n    'taoQtiItem/qtiItem/core/Element',\n    'taoMediaManager/qtiCreator/helper/creatorRenderer',\n    'taoQtiItem/qtiCreator/model/helper/container',\n    'taoQtiItem/qtiCreator/editor/gridEditor/content',\n    'taoQtiItem/qtiCreator/helper/xmlRenderer',\n    'taoQtiItem/qtiCreator/helper/devTools',\n    'taoMediaManager/qtiCreator/widgets/static/text/Widget',\n    'taoQtiItem/qtiItem/helper/xmlNsHandler',\n    'taoQtiItem/qtiCreator/editor/jquery.gridEditor'\n], function(\n    _,\n    __,\n    $,\n    Promise,\n    urlUtil,\n    Widget,\n    states,\n    Element,\n    creatorRenderer,\n    containerHelper,\n    contentHelper,\n    xmlRenderer,\n    devTools,\n    TextWidget,\n    xmlNsHandler\n){\n    'use strict';\n\n    const ItemWidget = Widget.clone();\n\n    ItemWidget.initCreator = function(config) {\n        const self = this;\n        this.registerStates(states);\n\n        Widget.initCreator.call(this);\n\n        if (!config || !config.uri) {\n            throw new Error('missing required config parameter uri in item widget initialization');\n        }\n\n        this.saveItemUrl = config.saveItemUrl;\n\n        this.renderer = config.renderer;\n\n        this.itemUri = config.uri;\n\n        //this.initUiComponents();\n\n        return new Promise(function(resolve) {\n            self.initTextWidgets(function() {\n\n                //when the text widgets are ready:\n                this.initGridEditor();\n\n                //active debugger\n                this.debug({\n                    state : false,\n                    xml : false\n                });\n\n                resolve();\n            });\n        });\n    };\n\n    ItemWidget.buildContainer = function() {\n        this.$container = this.$original;\n    };\n\n    ItemWidget.initUiComponents = function() {\n\n        const element = this.element,\n            $saveBtn = $('#save-trigger');\n\n        //listen to invalid states:\n        this.on('metaChange', function(data){\n            if (data.element.getSerial() === element.getSerial() && data.key === 'invalid') {\n                const invalid = element.data('invalid');\n                if (_.size(invalid)) {\n                    $saveBtn.addClass('disabled');\n                } else {\n                    $saveBtn.removeClass('disabled');\n                }\n            }\n        }, true);\n\n    };\n\n    ItemWidget.initGridEditor = function() {\n\n        const self = this,\n            item = this.element,\n            $itemBody = this.$container.find('.qti-itemBody'),\n            $itemEditorPanel = $('#item-editor-panel');\n\n        $itemBody.gridEditor();\n        $itemBody.gridEditor('resizable');\n        $itemBody.gridEditor('addInsertables', $('.tool-list > [data-qti-class]:not(.disabled)'), {\n            helper : function() {\n                return $(this).find('.icon').clone().addClass('dragging');\n            }\n        });\n\n        $itemBody.on('beforedragoverstart.gridEdit', function() {\n\n            $itemEditorPanel.addClass('dragging');\n            $itemBody.removeClass('hoverable').addClass('inserting');\n\n        }).on('dragoverstop.gridEdit', function() {\n\n            $itemEditorPanel.removeClass('dragging');\n            $itemBody.addClass('hoverable').removeClass('inserting');\n\n        }).on('dropped.gridEdit.insertable', function(e, qtiClass, $placeholder) {\n\n            //a new qti element has been added: update the model + render\n            $placeholder.removeAttr('id');//prevent it from being deleted\n\n            if (qtiClass === 'rubricBlock') {\n                //qti strange exception: a rubricBlock must be the first child of itemBody, nothing else...\n                //so in this specific case, consider the whole row as the rubricBlock\n                //by the way, in our grid system, rubricBlock can only have a width of col-12\n                $placeholder = $placeholder.parent('.col-12').parent('.grid-row');\n            }\n\n            $placeholder.addClass('widget-box');//required for it to be considered as a widget during container serialization\n            $placeholder.attr({\n                'data-new' : true,\n                'data-qti-class' : qtiClass\n            });//add data attribute to get the dom ready to be replaced by rendering\n\n            const $widget = $placeholder.parent().closest('.widget-box, .qti-item');\n            const $editable = $placeholder.closest('[data-html-editable], .qti-itemBody');\n            const widget = $widget.data('widget');\n            const element = widget.element;\n            const container = Element.isA(element, '_container') ? element : element.getBody();\n\n            if (!element || !$editable.length) {\n                throw new Error('cannot create new element');\n            }\n\n            containerHelper.createElements(container, contentHelper.getContent($editable), function(newElts) {\n\n                creatorRenderer.get().load(function() {\n\n                    _.forEach(newElts, (elt) => {\n                        let $eltWidget,\n                            eltwWdget,\n                            $colParent = $placeholder.parent();\n\n\n                        elt.setRenderer(this);\n\n                        if (Element.isA(elt, '_container')) {\n                            $colParent.empty();//clear the col content, and leave an empty text field\n                            $colParent.html(elt.render());\n                            eltwWdget = self.initTextWidget(elt, $colParent);\n                            $eltWidget = eltwWdget.$container;\n                        } else {\n                            elt.render($placeholder);\n\n                            //TODO resolve the promise it returns\n                            elt.postRender();\n                            eltwWdget = elt.data('widget');\n                            if (Element.isA(elt, 'blockInteraction')) {\n                                $eltWidget = eltwWdget.$container;\n                            } else {\n                                //leave the container in place\n                                $eltWidget = eltwWdget.$original;\n                            }\n                        }\n\n                        //inform height modification\n                        $eltWidget.trigger('contentChange.gridEdit');\n                        $eltWidget.trigger('resize.gridEdit');\n\n                        //active it right away:\n                        if (Element.isA(elt, 'interaction')) {\n                            eltwWdget.changeState('question');\n                        } else {\n                            eltwWdget.changeState('active');\n                        }\n\n                    });\n                }, this.getUsedClasses());\n            });\n\n        }).on('resizestop.gridEdit', function() {\n\n            item.body($itemBody.gridEditor('getContent'));\n\n        });\n\n    };\n\n    const _detachElements = function(container, elements) {\n\n        const containerElements = {};\n        _.each(elements, function(elementSerial){\n            containerElements[elementSerial] = container.elements[elementSerial];\n            delete container.elements[elementSerial];\n        });\n        return containerElements;\n    };\n\n    ItemWidget.initTextWidgets = function(callback) {\n\n        let self = this,\n            item = this.element,\n            $originalContainer = this.$container,\n            i = 1,\n            subContainers = [];\n\n        callback = callback || _.noop;\n\n        //temporarily tag col that need to be transformed into\n        $originalContainer.find('.qti-itemBody > .grid-row').each(function() {\n\n            const $row = $(this);\n\n            if (!$row.hasClass('widget-box')) {//not a rubricBlock\n                $row.children().each(function() {\n\n                    let $col = $(this),\n                        isTextBlock = false;\n\n                    $col.contents().each(function() {\n                        if(this.nodeType === 3 && this.nodeValue && this.nodeValue.trim()){\n                            isTextBlock = true;\n                            return false;\n                        }\n                    });\n\n                    const $widget = $col.children();\n                    if ($widget.length > 1 || !$widget.hasClass('widget-blockInteraction')) {//not an immediate qti element\n                        if ($widget.hasClass('colrow')) {\n                            $widget.each(function() {\n                                const $subElement = $(this);\n                                const $subWidget = $subElement.children();\n                                if ($subWidget.length > 1 || !$subWidget.hasClass('widget-blockInteraction')) {\n                                    $subElement.attr('data-text-block-id', `text-block-${i}`);\n                                    i++;\n                                }\n                            });\n                        } else {\n                            isTextBlock = true;\n                        }\n                    }\n\n                    if (isTextBlock) {\n                        $col.attr('data-text-block-id', `text-block-${i}`);\n                        i++;\n                    }\n                });\n            }\n        });\n\n        //clone the container to create the new container model:\n        const $clonedContainer = $originalContainer.clone();\n        $clonedContainer.find('.qti-itemBody > .grid-row [data-text-block-id]').each(function() {\n\n            const $originalTextBlock = $(this),\n                textBlockId = $originalTextBlock.data('text-block-id'),\n                $subContainer = $originalTextBlock.clone(),\n                subContainerElements = contentHelper.serializeElements($subContainer),\n                subContainerBody = $subContainer.html();//get serialized body\n\n            $originalTextBlock.removeAttr('data-text-block-id').html('{{_container:new}}');\n\n            subContainers.push({\n                body : subContainerBody,\n                elements : subContainerElements,\n                $original : $originalContainer.find(`[data-text-block-id=\"${textBlockId}\"]`).removeAttr('data-text-block-id')\n            });\n        });\n\n        //create new container model with the created sub containers\n        contentHelper.serializeElements($clonedContainer);\n\n        const serializedItemBody = $clonedContainer.find('.qti-itemBody').html(),\n            itemBody = item.getBody();\n\n        if (subContainers.length) {\n\n            containerHelper.createElements(itemBody, serializedItemBody, function(newElts) {\n\n                if (_.size(newElts) !== subContainers.length) {\n\n                    throw new Error(\"number of sub-containers mismatch\");\n\n                } else {\n\n                    _.each(newElts, function(container){\n\n                        const containerData = subContainers.shift();//get data in order\n                        const containerElements = _detachElements(itemBody, containerData.elements);\n\n                        container.setElements(containerElements, containerData.body);\n\n                        self.initTextWidget(container, containerData.$original);\n\n                    });\n\n                    _.defer(function(){\n                        callback.call(self);\n                    });\n                }\n            });\n\n        } else {\n\n            callback.call(self);\n        }\n\n    };\n\n    ItemWidget.initTextWidget = function(container, $col) {\n        return TextWidget.build(container, $col, this.renderer.getOption('textOptionForm'), {});\n    };\n\n    /**\n     * Enable debugging\n     *\n     * @param {Object} [options] - log state change in console\n     * @param {Boolean} [options.state = false] - log state change in console\n     * @param {Boolean} [options.xml = false] - real-time qti xml display under the creator\n     */\n    ItemWidget.debug = function(options) {\n\n        options = options || {};\n\n        if (options.state) {\n            devTools.listenStateChange();\n        }\n\n        if (options.xml) {\n            const $code = $('<code>', {'class' : 'language-markup'}),\n                $pre = $('<pre>', {'class' : 'line-numbers'}).append($code);\n\n            $('#item-editor-wrapper').append($pre);\n            devTools.liveXmlPreview(this.element, $code);\n        }\n\n    };\n\n    function hasUnsupportedInteraction(xml) {\n        const $qti = $(xml);\n        return ($qti.find('div.qti-interaction.qti-customInteraction[data-serial]').length > 0);\n    }\n\n    return ItemWidget;\n});\n\n","\ndefine('tpl!taoMediaManager/qtiCreator/renderers/tpl/wrap', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n  this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n  \n\n\n  return \"<div class=\\\"grid-row\\\"><div class=\\\"col-12\\\"></div></div>\";\n  });\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n */\n\ndefine('taoMediaManager/qtiCreator/renderers/Item',[\n    'jquery',\n    'lodash',\n    'taoQtiItem/qtiCommonRenderer/renderers/Item',\n    'taoMediaManager/qtiCreator/widgets/item/Widget',\n    'tpl!taoQtiItem/qtiCreator/tpl/item',\n    'tpl!taoMediaManager/qtiCreator/renderers/tpl/wrap'\n], function($, _, CommonRenderer, Widget, tpl, wrapTpl) {\n    'use strict';\n\n    const CreatorItem = _.clone(CommonRenderer);\n\n    const _normalizeItemBody = function _normalizeItemBody($itemBody) {\n\n        $itemBody.children().each(function(){\n            const $child = $(this);\n            //must be a grid-row for editing:\n            if (!$child.hasClass('grid-row') && !$child.hasClass('qti-infoControl')) {\n                $child.wrap(wrapTpl());\n            }\n        });\n\n        return $itemBody;\n    };\n\n    CreatorItem.template = tpl;\n\n    CreatorItem.render = function render(item, options) {\n\n        const $itemContainer = CommonRenderer.getContainer(item);\n\n        _normalizeItemBody($itemContainer.find('.qti-itemBody'));\n\n        options = options || {};\n        options.state = 'active';//the item widget never sleeps ! <- this sounds very scary!\n        options.renderer = this;\n\n        return Widget.build(\n            item,\n            $itemContainer,\n            this.getOption('itemOptionForm'),\n            options\n        );\n    };\n\n    return CreatorItem;\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n *\n */\ndefine('taoMediaManager/qtiCreator/widgets/static/object/states/Active',[\n    'lodash',\n    'jquery',\n    'i18n',\n    'taoQtiItem/qtiCreator/widgets/states/factory',\n    'taoQtiItem/qtiCreator/widgets/static/states/Active',\n    'tpl!taoQtiItem/qtiCreator/tpl/forms/static/object',\n    'taoQtiItem/qtiCreator/widgets/helpers/formElement',\n    'taoQtiItem/qtiCreator/widgets/static/helpers/inline',\n    'ui/mediaEditor/mediaEditorComponent',\n    'ui/previewer',\n    'ui/resourcemgr',\n    'ui/tooltip'\n], function (_, $, __, stateFactory, Active, formTpl, formElement, inlineHelper, mediaEditorComponent) {\n    'use strict';\n    /**\n     * media Editor instance if has been initialized\n     * @type {null}\n     */\n    let mediaEditor = null;\n    let $panelObjectSize = null;\n    let $panelMediaSize = null;\n\n    const _config = {\n        renderingThrottle: 1000,\n        fileFilters:\n            'image/jpeg,image/png,image/gif,image/svg+xml,video/mp4,video/avi,video/ogv,video/mpeg,video/ogg,video/quicktime,video/webm,video/x-ms-wmv,video/x-flv,audio/mp3,audio/vnd.wav,audio/ogg,audio/vorbis,audio/webm,audio/mpeg,application/ogg,audio/aac,application/pdf'\n    };\n\n    const ObjectStateActive = stateFactory.extend(\n        Active,\n        function () {\n            this.initForm();\n        },\n        function () {\n            if (mediaEditor) {\n                mediaEditor.destroy();\n            }\n            mediaEditor = null;\n            $panelObjectSize = null;\n            $panelMediaSize = null;\n            this.widget.$original.off('playerready');\n            this.widget.$form.empty();\n        }\n    );\n\n    const refreshRendering = _.throttle(function refreshRendering(widget) {\n        const obj = widget.element;\n        const $container = widget.$original;\n        const previewOptions = {\n            url: obj.renderer.resolveUrl(obj.attr('data')),\n            mime: obj.attr('type')\n        };\n        if (obj.attr('height')) {\n            previewOptions.height = obj.attr('height');\n        }\n        if (obj.attr('width')) {\n            previewOptions.width = obj.attr('width');\n        }\n        if (previewOptions.url && previewOptions.mime) {\n            $container.previewer(previewOptions);\n        }\n    }, _config.renderingThrottle);\n\n    const setMediaSizeEditor = widget => {\n        const qtiObject = widget.element;\n        const type = qtiObject.attr('type');\n        if (/video/.test(type)) {\n            const $container = widget.$original;\n            const mediaplayer = $container.data('player');\n            let width = qtiObject.attr('width');\n            let height = qtiObject.attr('height');\n            if (!/%/.test(width)) {\n                // if we don't have % width we need calculate default % width\n                const originalSize = mediaplayer.getMediaOriginalSize();\n                if (!originalSize.width) {\n                    // video is not loaded yet\n                    return;\n                }\n                const containerWidth = $container.closest('.widget-textBlock').width();\n                // the default % and by that the size of the video is based on the original video size compared to the container size\n                if (!width) {\n                    width = Math.round(100 / (containerWidth / originalSize.width));\n                    height = 0;\n                } else if (height) {\n                    // for old format (px and height is set) the default % is calculated on rendered width and height\n                    const scaleHeight =\n                        (Math.max(height || 0, 200) - $container.find('.mediaplayer .controls').height()) /\n                        originalSize.height;\n                    const scaleWidth = Math.max(width || 0, 200) / originalSize.width;\n                    const scale = Math.min(scaleHeight, scaleWidth);\n                    width = Math.round(100 / (containerWidth / (scale * originalSize.width)));\n                    qtiObject.removeAttr('height');\n                    height = 0;\n                }\n            }\n            const onChange = _.debounce(nMedia => {\n                if (qtiObject.attr('width') !== `${nMedia['width']}%`) {\n                    const newWidth = `${Math.round(nMedia['width'])}%`;\n                    qtiObject.attr('width', newWidth);\n                    mediaplayer.resize(newWidth, 'auto');\n                }\n            }, 200);\n            if (mediaEditor) {\n                mediaEditor.destroy();\n            }\n            mediaEditor = mediaEditorComponent(\n                $panelMediaSize,\n                {\n                    $node: $container.find('.mediaplayer .media'),\n                    $container: $container,\n                    type: qtiObject.attr('type'),\n                    width,\n                    height,\n                    responsive: true\n                },\n                {\n                    mediaDimension: {\n                        active: true,\n                        showResponsiveToggle: false\n                    }\n                }\n            ).on('change', onChange);\n        }\n    };\n    const hideShowPanels = type => {\n        if (/video/.test(type)) {\n            $panelObjectSize.hide();\n            $panelMediaSize.show();\n        } else {\n            if (mediaEditor) {\n                mediaEditor.destroy();\n            }\n            $panelObjectSize.show();\n            $panelMediaSize.hide();\n        }\n    };\n    const _initUpload = function (widget) {\n        const $form = widget.$form,\n            options = widget.options,\n            qtiObject = widget.element,\n            $uploadTrigger = $form.find('[data-role=\"upload-trigger\"]'),\n            $src = $form.find('input[name=src]');\n\n        const _openResourceMgr = function _openResourceMgr() {\n            $uploadTrigger.resourcemgr({\n                title: __(\n                    'Please select a media file from the resource manager. You can add files from your computer with the button \"Add file(s)\".'\n                ),\n                appendContainer: options.mediaManager.appendContainer,\n                mediaSourcesUrl: options.mediaManager.mediaSourcesUrl,\n                browseUrl: options.mediaManager.browseUrl,\n                uploadUrl: options.mediaManager.uploadUrl,\n                deleteUrl: options.mediaManager.deleteUrl,\n                downloadUrl: options.mediaManager.downloadUrl,\n                fileExistsUrl: options.mediaManager.fileExistsUrl,\n                params: {\n                    uri: options.uri,\n                    lang: options.lang,\n                    filters: _config.fileFilters\n                },\n                pathParam: 'path',\n                path: options.mediaManager.path,\n                root: options.mediaManager.root,\n                select: function (e, files) {\n                    let file, type;\n                    if (files && files.length) {\n                        file = files[0].file;\n                        type = files[0].mime;\n                        qtiObject.attr('type', type);\n                        $src.val(file).trigger('change');\n                    }\n                },\n                open: function () {\n                    //hide tooltip if displayed\n                    if ($src.data('$tooltip')) {\n                        $src.blur().data('$tooltip').hide();\n                    }\n                },\n                close: function () {\n                    //triggers validation :\n                    $src.blur();\n                }\n            });\n        };\n\n        $uploadTrigger.on('click', _openResourceMgr);\n\n        //if empty, open file manager immediately\n        if (!$src.val()) {\n            _openResourceMgr();\n        }\n    };\n\n    ObjectStateActive.prototype.initForm = function initForm() {\n        const _widget = this.widget,\n            $form = _widget.$form,\n            qtiObject = _widget.element,\n            baseUrl = _widget.options.baseUrl;\n        const $container = _widget.$original;\n\n        $form.html(\n            formTpl({\n                baseUrl: baseUrl || '',\n                src: qtiObject.attr('data'),\n                alt: qtiObject.attr('alt'),\n                height: qtiObject.attr('height'),\n                width: qtiObject.attr('width')\n            })\n        );\n\n        //init resource manager\n        _initUpload(_widget);\n\n        //init standard ui widget\n        formElement.initWidget($form);\n\n        $panelObjectSize = $('.size-panel', $form);\n        $panelMediaSize = $('.media-size-panel', $form);\n        hideShowPanels(qtiObject.attr('type'));\n\n        $container.off('playerready').on('playerready', function () {\n            setMediaSizeEditor(_widget);\n        });\n\n        //init data change callbacks\n        formElement.setChangeCallbacks($form, qtiObject, {\n            src: function (object, value) {\n                if (value !== qtiObject.attr('data')) {\n                    qtiObject.attr('data', value);\n                    qtiObject.removeAttr('width');\n                    qtiObject.removeAttr('height');\n                    $form.find('input[name=width]').val('');\n                    $form.find('input[name=height]').val('');\n                    $container.removeData('ui.previewer');\n                    hideShowPanels(qtiObject.attr('type'));\n                    inlineHelper.togglePlaceholder(_widget);\n                    refreshRendering(_widget);\n                }\n            },\n            width: function (object, value) {\n                const val = parseInt(value, 10);\n                if (_.isNaN(val)) {\n                    qtiObject.removeAttr('width');\n                } else {\n                    qtiObject.attr('width', val);\n                }\n                refreshRendering(_widget);\n            },\n            height: function (object, value) {\n                const val = parseInt(value, 10);\n                if (_.isNaN(val)) {\n                    qtiObject.removeAttr('height');\n                } else {\n                    qtiObject.attr('height', val);\n                }\n                refreshRendering(_widget);\n            },\n            alt: function (qtiObjectAlt, value) {\n                qtiObjectAlt.attr('alt', value);\n            },\n            align: function (qtiObjectAlign, value) {\n                inlineHelper.positionFloat(_widget, value);\n            }\n        });\n    };\n\n    return ObjectStateActive;\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n *\n */\ndefine('taoMediaManager/qtiCreator/widgets/static/object/states/states',[\n    'taoQtiItem/qtiCreator/widgets/states/factory',\n    'taoQtiItem/qtiCreator/widgets/static/states/states',\n    'taoQtiItem/qtiCreator/widgets/static/object/states/Sleep',\n    'taoMediaManager/qtiCreator/widgets/static/object/states/Active'\n], function (factory, states) {\n    'use strict';\n\n    return factory.createBundle(states, arguments);\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA ;\n *\n */\ndefine('taoMediaManager/qtiCreator/widgets/static/object/Widget',[\n    'taoQtiItem/qtiCreator/widgets/static/Widget',\n    'taoMediaManager/qtiCreator/widgets/static/object/states/states',\n    'taoQtiItem/qtiCreator/widgets/static/helpers/widget',\n    'tpl!taoQtiItem/qtiCreator/tpl/toolbars/media',\n    'taoQtiItem/qtiCreator/widgets/static/helpers/inline'\n], function (Widget, states, helper, toolbarTpl, inlineHelper) {\n    'use strict';\n\n    const ObjectWidget = Widget.clone();\n\n    ObjectWidget.initCreator = function initCreator() {\n        this.registerStates(states);\n\n        Widget.initCreator.call(this);\n\n        inlineHelper.togglePlaceholder(this);\n    };\n\n    ObjectWidget.getRequiredOptions = function getRequiredOptions() {\n        return ['baseUrl', 'uri', 'lang', 'mediaManager'];\n    };\n\n    ObjectWidget.buildContainer = function buildContainer() {\n        helper.buildBlockContainer(this);\n\n        return this;\n    };\n\n    ObjectWidget.createToolbar = function createToolbar() {\n        helper.createToolbar(this, toolbarTpl);\n\n        return this;\n    };\n\n    return ObjectWidget;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n */\n\ndefine('taoMediaManager/qtiCreator/renderers/Object',[\n    'lodash',\n    'taoQtiItem/qtiCommonRenderer/renderers/Object',\n    'taoMediaManager/qtiCreator/widgets/static/object/Widget'\n], function (_, Renderer, Widget) {\n    'use strict';\n\n    const CreatorObject = _.clone(Renderer);\n\n    CreatorObject.render = function render(object, options) {\n        //initial rendering:\n        Renderer.render(object);\n\n        options = options || {};\n        options.baseUrl = this.getOption('baseUrl');\n        options.uri = this.getOption('uri');\n        options.lang = this.getOption('lang');\n        options.mediaManager = this.getOption('mediaManager');\n        options.assetManager = this.getAssetManager();\n\n        Widget.build(object, Renderer.getContainer(object), this.getOption('bodyElementOptionForm'), options);\n    };\n\n    return CreatorObject;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA ;\n *\n */\n/**\n * @author Christophe Noël <christophe@taotesting.com>\n */\ndefine('taoMediaManager/qtiCreator/widgets/static/table/states/Active',[\n    'lodash',\n    'jquery',\n    'i18n',\n    'ckeditor',\n    'ui/tableModel',\n    'taoQtiItem/qtiCreator/widgets/states/factory',\n    'taoMediaManager/qtiCreator/widgets/static/states/Active',\n    'taoQtiItem/qtiCreator/widgets/static/table/components/tableActions',\n    'taoMediaManager/qtiCreator/editor/ckEditor/htmlEditor',\n    'taoQtiItem/qtiCreator/editor/gridEditor/content',\n    'taoQtiItem/qtiCreator/widgets/helpers/formElement',\n    'tpl!taoQtiItem/qtiCreator/tpl/forms/static/table'\n], function(_, $, __, ckEditor, tableModelFactory, stateFactory, Active, tableActionsFactory, htmlEditor, contentHelper, formElement, formTpl){\n    'use strict';\n\n    var tableModel,\n        colActions,\n        rowActions;\n\n    var css = {\n        deleteColRow:   'hoverDelete',\n        insertRowAfter: 'insertRowAfter',\n        insertColAfter: 'insertColAfter',\n\n        hAlignCenter:   'table-center',\n        hAlignRight:    'table-right'\n    };\n\n    var TableStateActive = stateFactory.extend(Active, function create(){\n        this.initForm();\n        this.buildEditor();\n\n    }, function exit(){\n        this.widget.$form.empty();\n        this.destroyEditor();\n    });\n\n    // the element body should only contain the <table> tag content, and not the <table> tag itself.\n    // as the ckeditor instance is bound to a wrapping <div>, we need to go through an extra step to remove the <table> tag.\n    function getChangeCallback(container){\n        return _.throttle(function(data){\n            var $tableTagContent = $(data).children(), // might a mix of tbody / thead / tfoot\n                $pseudoContainer = $('<div>').html($tableTagContent),\n                newBody = contentHelper.getContent($pseudoContainer);\n            container.body(newBody);\n        }, 400);\n    }\n\n    TableStateActive.prototype.initForm = function initForm(){\n        var _widget     = this.widget,\n            $form       = _widget.$form,\n            table       = _widget.element,\n            $container  = _widget.$container,\n            hAlignOptions;\n\n        hAlignOptions = [{\n            name: __('Left'),\n            value: 'left'\n        }, {\n            name: __('Center'),\n            value: 'center',\n            selected: table.hasClass(css.hAlignCenter)\n        }, {\n            name: __('Right'),\n            value: 'right',\n            selected: table.hasClass(css.hAlignRight)\n        }] ;\n\n\n        $form.html(formTpl({\n            hAlignOptions: hAlignOptions\n        }));\n\n        //... init standard ui widget\n        formElement.initWidget($form);\n\n        //init data change callbacks\n        formElement.setChangeCallbacks($form, table, {\n            hAlign : function(t, value){\n                hideTableActions();\n                t.removeClass(css.hAlignRight);\n                t.removeClass(css.hAlignCenter);\n                $container.removeClass(`${css.hAlignRight} ${css.hAlignCenter}`);\n                switch (value) {\n                    case 'center': {\n                        t.addClass(css.hAlignCenter);\n                        $container.addClass(css.hAlignCenter);\n                        break;\n                    }\n                    case 'right': {\n                        t.addClass(css.hAlignRight);\n                        $container.addClass(css.hAlignRight);\n                        break;\n                    }\n                }\n            }\n        });\n\n    };\n\n    TableStateActive.prototype.buildEditor = function buildEditor(){\n        var _widget   = this.widget,\n            container = _widget.element.getBody(),\n\n            $itemPanel          = _widget.getAreaBroker().getItemPanelArea(),\n            $editableContainer  = _widget.$container,\n            $editable           = $editableContainer.find('.qti-table-container'),\n            $tablePropTrigger   = $editableContainer.find('[data-role=\"cke-table-properties\"]');\n\n        $editableContainer.attr('data-html-editable-container', true);\n        $editable.attr('data-html-editable', true); // DO NOT move in template to avoid creation of nested ckInstances when container editor is created\n\n        if(!htmlEditor.hasEditor($editableContainer)){\n            htmlEditor.buildEditor($editableContainer, {\n                placeholder: '',\n                change : getChangeCallback(container),\n                removePlugins: 'magicline',\n                data : {\n                    container : container,\n                    widget : _widget\n                },\n                blur : function(){\n                    _widget.changeState('sleep');\n                }\n            });\n        }\n\n        $editable\n            .on('editorready.tableActive', function(event, editor) {\n                tableModel = tableModelFactory($editable.find('table'));\n\n                // listener for table properties\n                $tablePropTrigger.on('click.tableActive', function openTableProperties(e){\n                    e.stopPropagation();\n                    hideTableActions();\n                    editor.execCommand('taoqtitableProperties');\n                });\n\n                // listeners for columns actions\n                colActions = tableActionsFactory({\n                    insertCol: true,\n                    deleteTitle: 'Delete column'\n                })\n                    .on('delete', function() {\n                        editor.execCommand('columnDelete');\n                        updateTable(editor, $editableContainer);\n                        hideTableActions();\n                    })\n                    .on('deleteMouseEnter', function() {\n                        addClassOnCurrentCol(editor, css.deleteColRow);\n                    })\n                    .on('deleteMouseLeave', function() {\n                        clearCellClasses($editable, css.deleteColRow);\n                    })\n                    .on('insertCol', function() {\n                        editor.execCommand('columnInsertAfter');\n                        clearCellClasses($editable, css.insertColAfter);    // this is because ck clone the current cells to insert the new ones\n                        this.trigger('insertColMouseEnter');                // so we don't want him to clone the \"insert style\"\n                        updateTable(editor, $editableContainer);\n                    })\n                    .on('insertColMouseEnter', function() {\n                        addClassOnCurrentCol(editor, css.insertColAfter);\n                    })\n                    .on('insertColMouseLeave', function() {\n                        clearCellClasses($editable, css.insertColAfter);\n                    })\n                    .render($itemPanel)\n                    .hide();\n\n                // listeners for row actions\n                rowActions = tableActionsFactory({\n                    insertRow: true,\n                    deleteTitle: 'Delete row'\n                })\n                    .on('delete', function() {\n                        editor.execCommand('rowDelete');\n                        updateTable(editor, $editableContainer);\n                        hideTableActions();\n                    })\n                    .on('deleteMouseEnter', function() {\n                        addClassOnCurrentRow(editor, css.deleteColRow);\n                    })\n                    .on('deleteMouseLeave', function() {\n                        clearCellClasses($editable, css.deleteColRow);\n                    })\n                    .on('insertRow', function() {\n                        editor.execCommand('rowInsertAfter');\n                        clearCellClasses($editable, css.insertRowAfter);    // this is because ck clone the current cells to insert the new ones\n                        this.trigger('insertRowMouseEnter');                // so we don't want him to clone the \"insert style\"\n                        updateTable(editor, $editableContainer);\n                    })\n                    .on('insertRowMouseEnter', function() {\n                        addClassOnCurrentRow(editor, css.insertRowAfter);\n                    })\n                    .on('insertRowMouseLeave', function() {\n                        clearCellClasses($editable, css.insertRowAfter);\n                    })\n                    .render($itemPanel)\n                    .hide();\n\n                $editableContainer.on('keyup.tableActive mouseup.tableActive', function() {\n                    displayTableActions(editor, $editableContainer);\n                });\n            })\n            .on('editordestroyed.tableActive', function() {\n                if ($tablePropTrigger.length) {\n                    $tablePropTrigger.off('.tableActive');\n                }\n            });\n    };\n\n    TableStateActive.prototype.destroyEditor = function destroyEditor(){\n        var _widget = this.widget,\n            $editableContainer = _widget.$container,\n            $editable = $editableContainer.find('[data-html-editable=\"true\"]');\n\n        clearCellClasses($editable, css.insertColAfter);\n        clearCellClasses($editable, css.insertRowAfter);\n        clearCellClasses($editable, css.deleteColRow);\n\n        //search and destroy the editor\n        htmlEditor.destroyEditor($editableContainer);\n        $editableContainer.off('.tableActive');\n        $editable.off('.tableActive');\n\n        $editable.attr('data-html-editable', false);\n        $editableContainer.attr('data-html-editable-container', false);\n\n        tableModel = null;\n\n        // destroy the actions toolbars\n        if (colActions) {\n            colActions.destroy();\n            colActions = null;\n        }\n\n        if (rowActions) {\n            rowActions.destroy();\n            rowActions = null;\n        }\n    };\n\n    function addClassOnCurrentRow(editor, className) {\n        var currentCellPos = getCurrentCellPos(editor),\n            $currentCol;\n        if (currentCellPos) {\n            $currentCol = tableModel.getRowCells(currentCellPos.y);\n            $currentCol.addClass(className);\n        }\n    }\n\n    function addClassOnCurrentCol(editor, className) {\n        var currentCellPos = getCurrentCellPos(editor),\n            $currentCol;\n        if (currentCellPos) {\n            $currentCol = tableModel.getColCells(currentCellPos.x);\n            $currentCol.addClass(className);\n        }\n    }\n\n    function clearCellClasses($editable, className) {\n        $editable.find('th, td').removeClass(className);\n    }\n\n    /**\n     * Update the table model and the available actions on rows/columns\n     * @param {Object} editor\n     * @param {Jquery} $editableContainer\n     */\n    function updateTable(editor, $editableContainer) {\n        tableModel.update();\n        if (tableModel.getRowCount() === 1) {\n            rowActions.hideDelete();\n        } else {\n            rowActions.showDelete();\n        }\n        if (tableModel.getColCount() === 1) {\n            colActions.hideDelete();\n        } else {\n            colActions.showDelete();\n        }\n        // reposition toolbars as their dimensions might have change\n        displayTableActions(editor, $editableContainer);\n    }\n\n    /**\n     * hide components containing row and column actions\n     */\n    function hideTableActions() {\n        if (colActions) {\n            colActions.hide();\n        }\n        if (rowActions) {\n            rowActions.hide();\n        }\n    }\n\n    /**\n     * Display row and columns actions at the correct position, depending of where the user has the cursor\n     * @param {ckEditor} editor - editor instance to access the current selection\n     * @param {jQuery} $tableContainer - the table DOM element, so we can align the toolbars on it\n     */\n    function displayTableActions(editor, $tableContainer) {\n        var selectedCells = getSelection(editor),\n            $currentCell;\n\n        if (selectedCells && selectedCells.length !== 1) {\n            // when none or more than one cells are selected, then we do not display the toolbars as the expected behavior is not obvious.\n            // for example, it's difficult to define the expected behavior of deleting a column when cells from multiple columns are selected...\n            hideTableActions();\n\n        } else {\n            $currentCell = $(selectedCells[0].$);\n\n            colActions\n                .show()\n                .hAlignWith($currentCell, 'center')\n                .vAlignWith($tableContainer, 'top');\n\n            rowActions\n                .show()\n                .hAlignWith($tableContainer, 'left')\n                .vAlignWith($currentCell, 'center');\n        }\n    }\n\n    /**\n     * only works when a single cell is selected\n     * @param {Object} editor\n     * @returns {Object}\n     */\n    function getCurrentCellPos(editor) {\n        var selectedCells = getSelection(editor),\n            currentCell;\n\n        if (selectedCells && selectedCells.length === 1) {\n            currentCell = selectedCells[0].$;\n\n            return {\n                x: currentCell.cellIndex,\n                y: currentCell.parentNode.rowIndex\n            };\n        }\n    }\n\n    /**\n     * Get the current selected cells in the table\n     * @param {Object} editor - CkEditor instance\n     * @returns {ckEditor.dom.element[]}\n     */\n    function getSelection(editor) {\n        var selection = editor.getSelection(),\n            tabletools = window.CKEDITOR.plugins.tabletools;\n\n        if (selection && tabletools) {\n            return tabletools.getSelectedCells(selection);\n        }\n    }\n\n    return TableStateActive;\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA ;\n *\n */\ndefine('taoMediaManager/qtiCreator/widgets/static/table/states/states',[\n    'taoQtiItem/qtiCreator/widgets/states/factory',\n    'taoQtiItem/qtiCreator/widgets/static/states/states',\n    'taoQtiItem/qtiCreator/widgets/static/table/states/Sleep',\n    'taoMediaManager/qtiCreator/widgets/static/table/states/Active'\n], function(factory, states){\n    'use strict';\n\n    return factory.createBundle(states, arguments);\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA;\n */\n/**\n * @author Christophe Noël <christophe@taotesting.com>\n */\ndefine('taoMediaManager/qtiCreator/widgets/static/table/Widget',[\n    'jquery',\n    'taoQtiItem/qtiCreator/widgets/static/Widget',\n    'taoMediaManager/qtiCreator/widgets/static/table/states/states',\n    'taoQtiItem/qtiCreator/widgets/static/helpers/widget',\n    'tpl!taoQtiItem/qtiCreator/tpl/toolbars/table'\n], function($, Widget, states, helper, toolbarTpl) {\n    'use strict';\n\n    var TableWidget = Widget.clone();\n\n    TableWidget.initCreator = function() {\n\n        this.registerStates(states);\n\n        Widget.initCreator.call(this);\n    };\n\n    TableWidget.buildContainer = function(){\n        var table = this.element;\n\n        helper.buildBlockContainer(this);\n\n        if (table.attr('class')) {\n            this.$container.addClass(table.attr('class'));\n        }\n\n        return this;\n    };\n\n    TableWidget.createToolbar = function(){\n\n        const self = this,\n            $tlb = $(toolbarTpl({\n                serial : this.serial,\n                state : 'active'\n            }));\n\n        this.$container.append($tlb);\n\n        $tlb.find('[data-role=\"delete\"]').on('click.widget-box', function(e){\n            e.stopPropagation();//to prevent direct deleting;\n            self.changeState('deleting');\n        });\n\n        return this;\n    };\n\n    return TableWidget;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA;\n */\n/**\n * @author Christophe Noël <christophe@taotesting.com>\n */\ndefine('taoMediaManager/qtiCreator/renderers/Table',[\n    'lodash',\n    'taoQtiItem/qtiCommonRenderer/renderers/Table',\n    'taoMediaManager/qtiCreator/widgets/static/table/Widget',\n    'tpl!taoQtiItem/qtiCreator/tpl/table'\n], function(_, Renderer, Widget, tpl) {\n    'use strict';\n\n    const CreatorTable = _.clone(Renderer);\n\n    CreatorTable.template = tpl;\n\n    CreatorTable.render = function render(table, options){\n\n        Widget.build(\n            table,\n            Renderer.getContainer(table),\n            this.getOption('bodyElementOptionForm'),\n            options || {}\n        );\n    };\n\n    return CreatorTable;\n});\n\n","\ndefine('tpl!taoMediaManager/qtiXmlRenderer/tpl/item', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n  this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n  var buffer = \"\", stack1, functionType=\"function\", escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \"\", stack1, helper;\n  buffer += \" class=\\\"\";\n  if (helper = helpers['class']) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0['class']); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  buffer += escapeExpression(stack1)\n    + \"\\\"\";\n  return buffer;\n  }\n\nfunction program3(depth0,data) {\n  \n  var buffer = \"\", stack1;\n  stack1 = helpers['if'].call(depth0, (data == null || data === false ? data : data.key), {hash:{},inverse:self.program(6, program6, data),fn:self.program(4, program4, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \" \";\n  return buffer;\n  }\nfunction program4(depth0,data) {\n  \n  var buffer = \"\", stack1;\n  buffer += \"xmlns:\"\n    + escapeExpression(((stack1 = (data == null || data === false ? data : data.key)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))\n    + \"=\\\"\"\n    + escapeExpression((typeof depth0 === functionType ? depth0.apply(depth0) : depth0))\n    + \"\\\"\";\n  return buffer;\n  }\n\nfunction program6(depth0,data) {\n  \n  var buffer = \"\";\n  buffer += \"xmlns=\\\"\"\n    + escapeExpression((typeof depth0 === functionType ? depth0.apply(depth0) : depth0))\n    + \"\\\"\";\n  return buffer;\n  }\n\nfunction program8(depth0,data) {\n  \n  var stack1, helper, options;\n  stack1 = (helper = helpers.join || (depth0 && depth0.join),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.attributes), \"=\", \" \", \"\\\"\", options) : helperMissing.call(depth0, \"join\", (depth0 && depth0.attributes), \"=\", \" \", \"\\\"\", options));\n  if(stack1 || stack1 === 0) { return stack1; }\n  else { return ''; }\n  }\n\nfunction program10(depth0,data) {\n  \n  \n  return \"\\n        <div class=\\\"empty\\\"></div>\\n    \";\n  }\n\nfunction program12(depth0,data) {\n  \n  var buffer = \"\", stack1, helper;\n  buffer += \"\\n        \";\n  if (helper = helpers.body) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n  else { helper = (depth0 && depth0.body); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n    \";\n  return buffer;\n  }\n\n  buffer += \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<div\";\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0['class']), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n    \";\n  stack1 = helpers.each.call(depth0, (depth0 && depth0.namespaces), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n    \";\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.attributes), {hash:{},inverse:self.noop,fn:self.program(8, program8, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \">\\n    \";\n  stack1 = helpers['if'].call(depth0, (depth0 && depth0.empty), {hash:{},inverse:self.program(12, program12, data),fn:self.program(10, program10, data),data:data});\n  if(stack1 || stack1 === 0) { buffer += stack1; }\n  buffer += \"\\n</div>\";\n  return buffer;\n  });\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program 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 this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n * Copyright (c) 2020 (original work) Open Assessment Technologies SA;\n *\n */\n\ndefine('taoMediaManager/qtiXmlRenderer/renderers/Item',['lodash', 'tpl!taoMediaManager/qtiXmlRenderer/tpl/item'], function(_, tpl){\n    'use strict';\n\n    return {\n        qtiClass : 'assessmentItem',\n        template : tpl,\n        getData : function getData(item, data){\n            const defaultData = {\n                'class' : data.attributes.class || '',\n                namespaces : item.getNamespaces(),\n                schemaLocations : '',\n                xsi: 'xsi:',//the standard namespace prefix for xml schema\n                empty : item.isEmpty(),\n            };\n\n            _.forIn(item.getSchemaLocations(), (url, uri) => {\n                defaultData.schemaLocations += `${uri} ${url} `;\n            });\n            defaultData.schemaLocations = defaultData.schemaLocations.trim();\n\n            data = _.merge({}, data, defaultData);\n            delete data.attributes.class;\n            delete data.attributes.title;\n            delete data.attributes.adaptive;\n            delete data.attributes.timeDependent;\n            delete data.attributes.identifier;\n\n            data.attributes = _.mapValues(data.attributes, function (val) {\n                return _.isString(val) ? _.escape(val) : val;\n            });\n\n            return data;\n        }\n    };\n});\n\n","\n(function(c){var d=document,a='appendChild',i='styleSheet',s=d.createElement('style');s.type='text/css';d.getElementsByTagName('head')[0][a](s);s[i]?s[i].cssText=c:s[a](d.createTextNode(c));})\n('.previewer{position:relative}.previewer iframe{min-height:400px;width:100%}.previewer .previewer-component{background-color:white;text-align:initial}.previewer .previewer-component .item-previewer-scope{height:calc(100vh - 250px)}.previewer .previewer-component .item-previewer-scope .action-bar,.previewer .previewer-component .item-previewer-scope .test-sidebar{display:none}.previewer.no-background{background:none}#item-editor-scope .tool-group ._accordion{display:none}\\n\\n/*# sourceMappingURL=../../../taoMediaManager/views/css/media.css.map */');\n","\ndefine(\"taoMediaManager/loader/taoMediaManager.bundle\", function(){});\n","define(\"taoMediaManager/loader/taoMediaManager.min\", [\"taoItems/loader/taoItemsRunner.min\",\"taoTests/loader/taoTestsRunner.min\",\"taoQtiItem/loader/taoQtiItemRunner.min\",\"taoQtiItem/loader/taoQtiItem.min\",\"taoQtiTestPreviewer/loader/qtiPreviewer.min\"], function(){});\n"]}