Your IP : 192.168.165.1


Current Path : C:/Users/Mahmood/Desktop/moodle/lib/amd/build/
Upload File :
Current File : C:/Users/Mahmood/Desktop/moodle/lib/amd/build/notification.min.js.map

{"version":3,"sources":["../src/notification.js"],"names":["currentContextId","M","cfg","contextid","notificationTypes","success","info","warning","error","notificationRegionId","Selectors","notificationRegion","fallbackRegionParents","setupTargetRegion","targetRegion","getNotificationRegion","newRegion","document","createElement","id","some","selector","querySelector","prepend","fetchNotifications","Ajax","call","methodname","args","then","addNotifications","notifications","length","Promise","resolve","pendingPromise","Pending","forEach","notification","renderNotification","template","variables","addNotification","closebutton","announce","type","message","Log","debug","Templates","renderForPromise","html","js","prependNodeContents","catch","exception","alert","title","cancelText","ModalFactory","create","types","ALERT","body","buttons","cancel","removeOnClose","modal","show","confirm","question","saveLabel","noLabel","saveCallback","cancelCallback","saveCancel","all","ModalEvents","SAVE_CANCEL","save","getRoot","on","ex","stack","debuginfo","backtrace","stacktrace","ln","match","fn","lineNumber","fileName","substr","name","errorcode","Y","use","core","init","contextId","notificationList","userLoggedIn"],"mappings":"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","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.\n\nimport Pending from 'core/pending';\nimport Log from 'core/log';\n\nlet currentContextId = M.cfg.contextid;\n\nconst notificationTypes = {\n    success:  'core/notification_success',\n    info:     'core/notification_info',\n    warning:  'core/notification_warning',\n    error:    'core/notification_error',\n};\n\nconst notificationRegionId = 'user-notifications';\n\nconst Selectors = {\n    notificationRegion: `#${notificationRegionId}`,\n    fallbackRegionParents: [\n        '#region-main',\n        '[role=\"main\"]',\n        'body',\n    ],\n};\n\nconst setupTargetRegion = () => {\n    let targetRegion = getNotificationRegion();\n    if (targetRegion) {\n        return false;\n    }\n\n    const newRegion = document.createElement('span');\n    newRegion.id = notificationRegionId;\n\n    return Selectors.fallbackRegionParents.some(selector => {\n        const targetRegion = document.querySelector(selector);\n\n        if (targetRegion) {\n            targetRegion.prepend(newRegion);\n            return true;\n        }\n\n        return false;\n    });\n};\n\n\n/**\n * Poll the server for any new notifications.\n *\n * @returns {Promise}\n */\nexport const fetchNotifications = async() => {\n    const Ajax = await import('core/ajax');\n\n    return Ajax.call([{\n        methodname: 'core_fetch_notifications',\n        args: {\n            contextid: currentContextId\n        }\n    }])[0]\n    .then(addNotifications);\n};\n\n/**\n * Add all of the supplied notifications.\n *\n * @param {Array} notifications The list of notificaitons\n * @returns {Promise}\n */\nconst addNotifications = notifications => {\n    if (!notifications.length) {\n        return Promise.resolve();\n    }\n\n    const pendingPromise = new Pending('core/notification:addNotifications');\n    notifications.forEach(notification => renderNotification(notification.template, notification.variables));\n\n    return pendingPromise.resolve();\n};\n\n/**\n * Add a notification to the page.\n *\n * Note: This does not cause the notification to be added to the session.\n *\n * @param {Object}  notification                The notification to add.\n * @param {string}  notification.message        The body of the notification\n * @param {string}  notification.type           The type of notification to add (error, warning, info, success).\n * @param {Boolean} notification.closebutton    Whether to show the close button.\n * @param {Boolean} notification.announce       Whether to announce to screen readers.\n * @returns {Promise}\n */\nexport const addNotification = notification => {\n    const pendingPromise = new Pending('core/notification:addNotifications');\n\n    let template = notificationTypes.error;\n\n    notification = {\n        closebutton:    true,\n        announce:       true,\n        type:           'error',\n        ...notification,\n    };\n\n    if (notification.template) {\n        template = notification.template;\n        delete notification.template;\n    } else if (notification.type) {\n        if (typeof notificationTypes[notification.type] !== 'undefined') {\n            template = notificationTypes[notification.type];\n        }\n        delete notification.type;\n    }\n\n    return renderNotification(template, notification)\n    .then(pendingPromise.resolve);\n};\n\nconst renderNotification = async(template, variables) => {\n    if (typeof variables.message === 'undefined' || !variables.message) {\n        Log.debug('Notification received without content. Skipping.');\n        return;\n    }\n\n    const pendingPromise = new Pending('core/notification:renderNotification');\n    const Templates = await import('core/templates');\n\n    Templates.renderForPromise(template, variables)\n    .then(({html, js = ''}) => {\n        Templates.prependNodeContents(getNotificationRegion(), html, js);\n\n        return;\n    })\n    .then(pendingPromise.resolve)\n    .catch(exception);\n};\n\nconst getNotificationRegion = () => document.querySelector(Selectors.notificationRegion);\n\n/**\n * Alert dialogue.\n *\n * @param {String|Promise} title\n * @param {String|Promise} message\n * @param {String|Promise} cancelText\n * @returns {Promise}\n */\nexport const alert = async(title, message, cancelText) => {\n    var pendingPromise = new Pending('core/notification:alert');\n\n    const ModalFactory = await import('core/modal_factory');\n\n    return ModalFactory.create({\n        type: ModalFactory.types.ALERT,\n        body: message,\n        title: title,\n        buttons: {\n            cancel: cancelText,\n        },\n        removeOnClose: true,\n    })\n    .then(function(modal) {\n        modal.show();\n\n        pendingPromise.resolve();\n        return modal;\n    });\n};\n\n/**\n * The confirm has now been replaced with a save and cancel dialogue.\n *\n * @param {String|Promise} title\n * @param {String|Promise} question\n * @param {String|Promise} saveLabel\n * @param {String|Promise} noLabel\n * @param {String|Promise} saveCallback\n * @param {String|Promise} cancelCallback\n * @returns {Promise}\n */\nexport const confirm = (title, question, saveLabel, noLabel, saveCallback, cancelCallback) =>\n        saveCancel(title, question, saveLabel, saveCallback, cancelCallback);\n\n/**\n * The Save and Cancel dialogue helper.\n *\n * @param {String|Promise} title\n * @param {String|Promise} question\n * @param {String|Promise} saveLabel\n * @param {String|Promise} saveCallback\n * @param {String|Promise} cancelCallback\n * @returns {Promise}\n */\nexport const saveCancel = async(title, question, saveLabel, saveCallback, cancelCallback) => {\n    const pendingPromise = new Pending('core/notification:confirm');\n\n    const [\n        ModalFactory,\n        ModalEvents,\n    ] = await Promise.all([\n        import('core/modal_factory'),\n        import('core/modal_events'),\n    ]);\n\n    return ModalFactory.create({\n        type: ModalFactory.types.SAVE_CANCEL,\n        title: title,\n        body: question,\n        buttons: {\n            // Note: The noLabel is no longer supported.\n            save: saveLabel,\n        },\n        removeOnClose: true,\n    })\n    .then(function(modal) {\n        modal.show();\n\n        modal.getRoot().on(ModalEvents.save, saveCallback);\n        modal.getRoot().on(ModalEvents.cancel, cancelCallback);\n        pendingPromise.resolve();\n\n        return modal;\n    });\n};\n\n/**\n * Wrap M.core.exception.\n *\n * @param {Error} ex\n */\nexport const exception = async ex => {\n    const pendingPromise = new Pending('core/notification:displayException');\n\n    // Fudge some parameters.\n    if (!ex.stack) {\n        ex.stack = '';\n    }\n\n    if (ex.debuginfo) {\n        ex.stack += ex.debuginfo + '\\n';\n    }\n\n    if (!ex.backtrace && ex.stacktrace) {\n        ex.backtrace = ex.stacktrace;\n    }\n\n    if (ex.backtrace) {\n        ex.stack += ex.backtrace;\n        const ln = ex.backtrace.match(/line ([^ ]*) of/);\n        const fn = ex.backtrace.match(/ of ([^:]*): /);\n        if (ln && ln[1]) {\n            ex.lineNumber = ln[1];\n        }\n        if (fn && fn[1]) {\n            ex.fileName = fn[1];\n            if (ex.fileName.length > 30) {\n                ex.fileName = '...' + ex.fileName.substr(ex.fileName.length - 27);\n            }\n        }\n    }\n\n    if (typeof ex.name === 'undefined' && ex.errorcode) {\n        ex.name = ex.errorcode;\n    }\n\n    const Y = await import('core/yui');\n    Y.use('moodle-core-notification-exception', function() {\n        var modal = new M.core.exception(ex);\n\n        modal.show();\n\n        pendingPromise.resolve();\n    });\n};\n\n/**\n * Initialise the page for the suppled context, and displaying the supplied notifications.\n *\n * @param {Number} contextId\n * @param {Array} notificationList\n * @param {Boolean} userLoggedIn\n */\nexport const init = (contextId, notificationList, userLoggedIn) => {\n    currentContextId = contextId;\n\n    // Setup the message target region if it isn't setup already\n    setupTargetRegion();\n\n    // Add provided notifications.\n    addNotifications(notificationList);\n\n    // If the user is not logged in then we can not fetch anything for them.\n    if (userLoggedIn) {\n        // Perform an initial poll for any new notifications.\n        fetchNotifications();\n    }\n};\n\n// To maintain backwards compatability we export default here.\nexport default {\n    init,\n    fetchNotifications,\n    addNotification,\n    alert,\n    confirm,\n    saveCancel,\n    exception,\n};\n"],"file":"notification.min.js"}