mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00
2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
define ("core/local/reactive/statemanager",["exports"],function(a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;function b(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){b=function(a){return typeof a}}else{b=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return b(a)}function c(a,b,e){if("undefined"!=typeof Reflect&&Reflect.get){c=Reflect.get}else{c=function(a,b,c){var e=d(a,b);if(!e)return;var f=Object.getOwnPropertyDescriptor(e,b);if(f.get){return f.get.call(c)}return f.value}}return c(a,b,e||a)}function d(a,b){while(!Object.prototype.hasOwnProperty.call(a,b)){a=n(a);if(null===a)break}return a}function e(a,b){if("function"!=typeof b&&null!==b){throw new TypeError("Super expression must either be null or a function")}a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}});if(b)m(a,b)}function f(a){return function(){var b=n(a),c;if(k()){var d=n(this).constructor;c=Reflect.construct(b,arguments,d)}else{c=b.apply(this,arguments)}return g(this,c)}}function g(a,c){if(c&&("object"===b(c)||"function"==typeof c)){return c}return h(a)}function h(a){if(void 0===a){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return a}function i(a){var b="function"==typeof Map?new Map:void 0;i=function(a){if(null===a||!l(a))return a;if("function"!=typeof a){throw new TypeError("Super expression must either be null or a function")}if("undefined"!=typeof b){if(b.has(a))return b.get(a);b.set(a,c)}function c(){return j(a,arguments,n(this).constructor)}c.prototype=Object.create(a.prototype,{constructor:{value:c,enumerable:!1,writable:!0,configurable:!0}});return m(c,a)};return i(a)}function j(){if(k()){j=Reflect.construct}else{j=function(b,c,d){var e=[null];e.push.apply(e,c);var a=Function.bind.apply(b,e),f=new a;if(d)m(f,d.prototype);return f}}return j.apply(null,arguments)}function k(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{Date.prototype.toString.call(Reflect.construct(Date,[],function(){}));return!0}catch(a){return!1}}function l(a){return-1!==Function.toString.call(a).indexOf("[native code]")}function m(a,b){m=Object.setPrototypeOf||function(a,b){a.__proto__=b;return a};return m(a,b)}function n(a){n=Object.setPrototypeOf?Object.getPrototypeOf:function(a){return a.__proto__||Object.getPrototypeOf(a)};return n(a)}function o(a,b){return t(a)||s(a,b)||q(a,b)||p()}function p(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function q(a,b){if(!a)return;if("string"==typeof a)return r(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor)c=a.constructor.name;if("Map"===c||"Set"===c)return Array.from(c);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return r(a,b)}function r(a,b){if(null==b||b>a.length)b=a.length;for(var c=0,d=Array(b);c<b;c++){d[c]=a[c]}return d}function s(a,b){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(a)))return;var c=[],d=!0,e=!1,f=void 0;try{for(var g=a[Symbol.iterator](),h;!(d=(h=g.next()).done);d=!0){c.push(h.value);if(b&&c.length===b)break}}catch(a){e=!0;f=a}finally{try{if(!d&&null!=g["return"])g["return"]()}finally{if(e)throw f}}return c}function t(a){if(Array.isArray(a))return a}function u(a,b){if(!(a instanceof b)){throw new TypeError("Cannot call a class as a function")}}function v(a,b){for(var c=0,d;c<b.length;c++){d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;if("value"in d)d.writable=!0;Object.defineProperty(a,d.key,d)}}function w(a,b,c){if(b)v(a.prototype,b);if(c)v(a,c);return a}var x=function(){function a(b,c){var d=this;u(this,a);this.dispatchEvent=b;this.target=null!==c&&void 0!==c?c:document;this.readonly=!1;this.eventsToPublish=[];this.updateTypes={create:this.defaultCreate.bind(this),update:this.defaultUpdate.bind(this),delete:this.defaultDelete.bind(this),put:this.defaultPut.bind(this),override:this.defaultOverride.bind(this),remove:this.defaultRemove.bind(this),prepareFields:this.defaultPrepareFields.bind(this)};this.initialPromise=new Promise(function(a){d.target.addEventListener("state:loaded",function initialStateDone(b){a(b.detail.state)})})}w(a,[{key:"setInitialState",value:function setInitialState(a){if(this.state!==void 0){throw Error("Initial state can only be initialized ones")}for(var b=new Proxy({},new y("state",this,!0)),c=0,d=Object.entries(a);c<d.length;c++){var e=o(d[c],2),f=e[0],g=e[1];b[f]=g}this.state=b;this.readonly=!0;this.dispatchEvent({action:"state:loaded",state:this.state},this.target)}},{key:"getInitialPromise",value:function getInitialPromise(){return this.initialPromise}},{key:"setReadOnly",value:function setReadOnly(a){this.readonly=a;var b="off";if(this.readonly){b="on";this._publishEvents()}this.dispatchEvent({action:"readmode:".concat(b),state:this.state,element:null},this.target)}},{key:"addUpdateTypes",value:function addUpdateTypes(a){for(var b=0,c=Object.entries(a);b<c.length;b++){var d=o(c[b],2),e=d[0],f=d[1];if("function"==typeof f){this.updateTypes[e]=f.bind(a)}}}},{key:"processUpdates",value:function processUpdates(a,b){var c=this;if(!Array.isArray(a)){throw Error("State updates must be an array")}this.setReadOnly(!1);a.forEach(function(a){if(a.name===void 0){throw Error("Missing state update name")}c.processUpdate(a.name,a.action,a.fields,b)});this.setReadOnly(!0)}},{key:"processUpdate",value:function processUpdate(a,b,c,d){var e,f,g;if(!c){throw Error("Missing state update fields")}if(d===void 0){d={}}b=null!==(e=b)&&void 0!==e?e:"update";var h=null!==(f=d[b])&&void 0!==f?f:this.updateTypes[b];if(h===void 0){throw Error("Unkown update action ".concat(b))}var i=null!==(g=d.prepareFields)&&void 0!==g?g:this.updateTypes.prepareFields;h(this,a,i(this,a,c))}},{key:"defaultPrepareFields",value:function defaultPrepareFields(a,b,c){return c}},{key:"defaultCreate",value:function defaultCreate(a,b,c){var d=a.state;if(d[b]instanceof z){d[b].add(c);return}d[b]=c}},{key:"defaultDelete",value:function defaultDelete(a,b,c){var d=a.get(b,c.id);if(!d){throw Error("Inexistent ".concat(b," ").concat(c.id))}var e=a.state;if(e[b]instanceof z){e[b].delete(c.id);return}delete e[b]}},{key:"defaultRemove",value:function defaultRemove(a,b,c){var d=a.get(b,c.id);if(!d){return}var e=a.state;if(e[b]instanceof z){e[b].delete(c.id);return}delete e[b]}},{key:"defaultUpdate",value:function defaultUpdate(a,b,c){var d=a.get(b,c.id);if(!d){throw Error("Inexistent ".concat(b," ").concat(c.id))}for(var e=0,f=Object.entries(c);e<f.length;e++){var g=o(f[e],2),h=g[0],i=g[1];d[h]=i}}},{key:"defaultPut",value:function defaultPut(a,b,c){var d=a.get(b,c.id);if(d){for(var e=0,f=Object.entries(c);e<f.length;e++){var g=o(f[e],2),h=g[0],i=g[1];d[h]=i}}else{var j=a.state;if(j[b]instanceof z){j[b].add(c);return}j[b]=c}}},{key:"defaultOverride",value:function defaultOverride(a,b,c){var d=a.get(b,c.id);if(d){for(var e=0,f=Object.entries(d);e<f.length;e++){var g=o(f[e],1),h=g[0];if(c[h]===void 0){delete d[h]}}for(var i=0,j=Object.entries(c);i<j.length;i++){var k=o(j[i],2),l=k[0],m=k[1];d[l]=m}}else{var n=a.state;if(n[b]instanceof z){n[b].add(c);return}n[b]=c}}},{key:"get",value:function get(a,b){var c=this.state,d=c[a];if(d instanceof z){if(b===void 0){throw Error("Missing id for ".concat(a," state update"))}d=c[a].get(b)}return d}},{key:"registerStateAction",value:function registerStateAction(a,b,c,d){var e="updated";if(null!==b){this.eventsToPublish.push({eventName:"".concat(a,".").concat(b,":").concat(c),eventData:d,action:c})}else{e=c}if(d.id!==void 0){if(null!==b){this.eventsToPublish.push({eventName:"".concat(a,"[").concat(d.id,"].").concat(b,":").concat(c),eventData:d,action:c})}this.eventsToPublish.push({eventName:"".concat(a,"[").concat(d.id,"]:").concat(e),eventData:d,action:e})}this.eventsToPublish.push({eventName:"".concat(a,":").concat(e),eventData:d,action:e});this.eventsToPublish.push({eventName:"state:updated",eventData:d,action:"updated"})}},{key:"_publishEvents",value:function _publishEvents(){var a=this,b=this.eventsToPublish;this.eventsToPublish=[];this.dispatchEvent({action:"transaction:start",state:this.state,element:null,changes:b},this.target);b.sort(function(c,a){var b,d,e={created:0,updated:1,deleted:2},f=null!==(b=e[c.action])&&void 0!==b?b:0,g=null!==(d=e[a.action])&&void 0!==d?d:0;if(f===g){return c.eventName.length-a.eventName.length}return f-g});var c=new Set;b.forEach(function(b){var d,e="".concat(b.eventName,".").concat(null!==(d=b.eventData.id)&&void 0!==d?d:0);if(!c.has(e)){a.dispatchEvent({action:b.eventName,state:a.state,element:b.eventData},a.target);c.add(e)}});this.dispatchEvent({action:"transaction:end",state:this.state,element:null},this.target)}}]);return a}();a.default=x;var y=function(){function a(b,c,d){u(this,a);this.name=b;this.stateManager=c;this.proxyValues=null!==d&&void 0!==d?d:!1}w(a,[{key:"set",value:function set(b,c,d,e){if(this.stateManager.readonly){throw new Error("State locked. Use mutations to change ".concat(c," value in ").concat(this.name,"."))}if(JSON.stringify(b[c])===JSON.stringify(d)){return!0}var f=b[c]!==void 0?"updated":"created";if(this.proxyValues){if(Array.isArray(d)){b[c]=new z(c,this.stateManager).loadValues(d)}else{b[c]=new Proxy(d,new a(c,this.stateManager))}}else{b[c]=d}if(this.stateManager.state===void 0){return!0}this.stateManager.registerStateAction(this.name,c,f,e);return!0}},{key:"deleteProperty",value:function deleteProperty(a,b){if(this.stateManager.readonly){throw new Error("State locked. Use mutations to delete ".concat(b," in ").concat(this.name,"."))}if(b in a){delete a[b];this.stateManager.registerStateAction(this.name,b,"deleted",a)}return!0}}]);return a}(),z=function(a){e(d,a);var g=f(d);function d(a,b,c){var e;u(this,d);e=g.call(this,c);e.name=a;e.stateManager=b;return e}w(d,[{key:"set",value:function set(a,b){if(this.stateManager.readonly){throw new Error("State locked. Use mutations to change ".concat(a," value in ").concat(this.name,"."))}a=this.normalizeKey(a);this.checkValue(b);if(a===void 0||null===a){throw Error("State lists keys cannot be null or undefined")}if(this.normalizeKey(b.id)!==a){throw new Error("State error: ".concat(this.name," list element ID (").concat(b.id,") and key (").concat(a,") mismatch"))}var e=c(n(d.prototype),"has",this).call(this,a)?"updated":"created",f=c(n(d.prototype),"set",this).call(this,a,new Proxy(b,new y(this.name,this.stateManager)));if(this.stateManager.state===void 0){return f}this.stateManager.registerStateAction(this.name,null,e,c(n(d.prototype),"get",this).call(this,a));return f}},{key:"checkValue",value:function checkValue(a){if("object"===!b(a)&&null!==a){throw Error("State lists can contain objects only")}if(a.id===void 0){throw Error("State lists elements must contain at least an id attribute")}}},{key:"normalizeKey",value:function normalizeKey(a){return(a+"").valueOf()}},{key:"add",value:function add(a){this.checkValue(a);return this.set(a.id,a)}},{key:"get",value:function get(a){return c(n(d.prototype),"get",this).call(this,this.normalizeKey(a))}},{key:"has",value:function has(a){return c(n(d.prototype),"has",this).call(this,this.normalizeKey(a))}},{key:"delete",value:function _delete(a){a=this.normalizeKey(a);if(this.stateManager.readonly){throw new Error("State locked. Use mutations to change ".concat(a," value in ").concat(this.name,"."))}var b=c(n(d.prototype),"get",this).call(this,a),e=c(n(d.prototype),"delete",this).call(this,a);if(!e){return e}this.stateManager.registerStateAction(this.name,null,"deleted",b);return e}},{key:"toJSON",value:function toJSON(){var a=[];this.forEach(function(b){a.push(b)});return a}},{key:"loadValues",value:function loadValues(a){var b=this;a.forEach(function(a){b.checkValue(a);var c=a.id,d=new Proxy(a,new y(b.name,b.stateManager));b.set(c,d)});return this}}]);return d}(i(Map));return a.default});
|
|
//# sourceMappingURL=statemanager.min.js.map
|