{"version":3,"file":"events.min.js","sources":["https:\/\/lms.svhs.co\/filter\/amd\/src\/events.js"],"sourcesContent":["\/\/ This file is part of Moodle - http:\/\/moodle.org\/ \/\/\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 .\n\n\/**\n * Javascript events for the `core_filters` subsystem.\n *\n * @module core_filters\/events\n * @copyright 2021 Andrew Nicols \n * @license http:\/\/www.gnu.org\/copyleft\/gpl.html GNU GPL v3 or later\n * @since 4.0\n *\n * @example Example of listening to a filter event.<\/caption>\n * import {eventTypes as filterEventTypes} from 'core_filters\/events';\n *\n * document.addEventListener(filterEventTypes.filterContentUpdated, e => {\n * window.console.log(e.detail.nodes); \/\/ A list of the HTMLElements whose content was updated\n * });\n *\/\n\nimport {dispatchEvent} from 'core\/event_dispatcher';\nimport {getList as normalistNodeList} from 'core\/normalise';\n\n\/**\n * Events for the `core_filters` subsystem.\n *\n * @constant\n * @property {String} filterContentUpdated See {@link event:filterContentUpdated}\n * @property {String} filterContentRenderingComplete See {@link event:filterContentRenderingComplete}\n *\/\nexport const eventTypes = {\n \/**\n * An event triggered when page content is updated and must be processed by the filter system.\n *\n * An example of this is loading user text that could have equations in it. MathJax can typeset the equations but\n * only if it is notified that there are new nodes in the page that need processing.\n *\n * @event filterContentUpdated\n * @type {CustomEvent}\n * @property {object} detail\n * @property {NodeElement[]} detail.nodes The list of parent nodes which were updated\n *\/\n filterContentUpdated: 'core_filters\/contentUpdated',\n\n \/**\n * An event triggered when filter system have done rendering the content using the filter system.\n *\n * @event filterContentRenderingComplete\n * @type {CustomEvent}\n * @property {object} detail\n *\/\n filterContentRenderingComplete: 'core_filters\/contentRenderingComplete',\n};\n\n\/**\n * Trigger an event to indicate that the specified nodes were updated and should be processed by the filter system.\n *\n * @method notifyFilterContentUpdated\n * @param {jQuery|Array} nodes\n * @returns {CustomEvent}\n * @fires filterContentUpdated\n *\/\nexport const notifyFilterContentUpdated = nodes => {\n \/\/ Historically this could be a jQuery Object.\n \/\/ Normalise the list of nodes to a NodeList.\n nodes = normalistNodeList(nodes);\n\n return dispatchEvent(eventTypes.filterContentUpdated, {nodes});\n};\n\n\/**\n * Trigger an event to indicate that the filter has been processed.\n *\n * @method notifyFilterContentRenderingComplete\n * @param {NodeList|Node[]} nodes List of nodes that has been modified by filter\n * @returns {CustomEvent}\n * @fires filterContentRenderingComplete\n *\/\nexport const notifyFilterContentRenderingComplete = nodes => {\n return dispatchEvent(eventTypes.filterContentRenderingComplete, {nodes});\n};\n"],"names":["eventTypes","filterContentUpdated","filterContentRenderingComplete","nodes"],"mappings":";;;;;;;;;;;;;;;;MAwCaA,WAAa,CAYtBC,qBAAsB,8BAStBC,+BAAgC,4GAWMC,QAGtCA,OAAQ,sBAAkBA,QAEnB,mCAAcH,WAAWC,qBAAsB,CAACE,MAAAA,uDAWPA,QACzC,mCAAcH,WAAWE,+BAAgC,CAACC,MAAAA"}