-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
executable file
·1 lines (1 loc) · 20.5 KB
/
index.js
1
"use strict";var stimulus=require("stimulus"),rxjs=require("rxjs");function ownKeys(t,e){var n,r=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)),r}function _objectSpread2(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(n),!0).forEach(function(e){_defineProperty(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _possibleConstructorReturn(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?_assertThisInitialized(e):t}function _createSuper(n){var r=_isNativeReflectConstruct();return function(){var e,t=_getPrototypeOf(n);return _possibleConstructorReturn(this,r?(e=_getPrototypeOf(this).constructor,Reflect.construct(t,arguments,e)):t.apply(this,arguments))}}var StateChangeListener=function(t,n,e){var r=e;Object.defineProperty(t.state,n,{get:function(){return r},set:function(e){r=e,t.stateChanged(n,e)}})},DirectiveParser=function(e,t){var n=e;if(1<t.splitter.length)for(var r=0;r<t.splitter.length;r++)n=e[t.splitter[r]];return n},CncIf=function(e,t){var n,r,i,a=e.dataset,s=a.cncIf.split("#")[1];"false"===s?e.remove():"true"!==s&&(1<(r=(n=s).split(".")).length&&(n=r[0]),(i=t.$cnc.ifs)[n]=i[n]||[],r.shift(),i[n].push({parent:e.parentElement,nextSibling:e.nextElementSibling,element:e,removed:!1,check:s,mainValue:n,splitter:r,options:a.cncOptions?JSON.parse(a.cncOptions):{}}),"function"==typeof(a=t.state[n])||t.$cnc.changes[n]||(t.$cnc.changes[n]=!0,StateChangeListener(t,n,a)))},checkCncIfs=function(t){var e=t.$cnc.ifs;Object.keys(e).forEach(function(e){"function"!=typeof t.state[e]&&UpdateSingularIfStates(t,t.state[e],e)})},UpdateSingularIfStates=function(n,r,e){e=n.$cnc.ifs[e];e&&e.forEach(function(e){var t="re_update"===r?n.state[e.mainValue](n,e.options):DirectiveParser(r,e);t?e.removed&&(e.options.display||""===e.options.display?e.element.style.display=e.options.display||""===e.options.display?e.options.display:"block":e.nextSibling&&e.nextSibling.parent?e.parent.insertBefore(e.element,e.nextSibling):e.parent.appendChild(e.element),e.removed=!1):e.removed||removeElement(e)})},removeElement=function(e){e.removed=!0,e.options.display||""===e.options.display?e.element.style.display="none":e.element.remove()},UpdateSingularDisablesStates=function(e,n,t){t=e.$cnc.disables[t];t&&t.forEach(function(e){var t=DirectiveParser(n,e);e.element.disabled=!!t})},CncDisabled=function(e,t){var n,r,i,a=e.dataset.cncDisabled.split("#")[1];"true"===a?e.disabled=!0:"false"!==a&&(1<(r=(n=a).split(".")).length&&(n=r[0]),i=t.$cnc.disables,r.shift(),i[n]=i[n]||[],i[n].push({element:e,splitter:r,check:a,mainValue:n}),"function"==typeof(a=t.state[n])||t.$cnc.changes[n]||(t.$cnc.changes[n]=!0,StateChangeListener(t,n,a)))},checkCncDisables=function(t){var e=t.$cnc.disables;Object.keys(e).forEach(function(e){"function"!=typeof t.state[e]&&UpdateSingularDisablesStates(t,t.state[e],e)})},CncClass=function(e,t){var n,r,i,a=e.dataset.cncClass.split("#")[1],s=t.classList[a];s&&(n=t.$cnc.classes,1<(i=(r=s.state).split(".")).length&&(r=i[0]),i.shift(),n[r]=n[r]||[],n[r].push({element:e,classData:s,check:a,mainValue:r,splitter:i,removed:!0}),"function"==typeof(i=t.state[r])||t.$cnc.changes[r]||(t.$cnc.classes[r]=!0,StateChangeListener(t,r,i)))},checkCncClasses=function(t){var e=t.$cnc.classes;Object.keys(e).forEach(function(e){"function"!=typeof t.state[e]&&UpdateSingularClassStates(t,t.state[e],e)})},UpdateSingularClassStates=function(e,r,t){t=e.$cnc.classes[t];t&&t.forEach(function(e){var t=r;if(1<e.splitter.length)for(var n=0;n<e.splitter.length;n++)t=r[e.splitter[n]];t?(e.element.classList.add(e.classData.className),e.removed=!1):e.removed||(e.element.classList.remove(e.classData.className),e.removed=!0)})},CheckListeners=function(t){Object.keys(t.listeners).forEach(function(e){UpdateSingularListener(t,e)})},UpdateSingularListener=function(t,e){t.listeners[e]&&t.listeners[e].forEach(function(e){t.$cnc.ifs[e]&&UpdateSingularIfStates(t,t.state[e](t,t.$cnc.ifs[e].options),e),t.$cnc.disables[e]&&UpdateSingularDisablesStates(t,t.state[e](t,t.$cnc.disables[e].element),e),t.$cnc.classes[e]&&UpdateSingularClassStates(t,t.state[e](t,t.$cnc.classes[e].element),e)})},CncFor=function(e,t){var n=e.dataset,r=n.cncFor.split("#")[1],i=r,a=t.$cnc.fors;a[i]=a[i]||[],a[i].push({parent:e.parentElement,childElement:e.children[0],element:e,check:r,mainValue:i,dataset:n});n=t.state[i].value;"function"==typeof n||t.$cnc.changes[i]||(t.$cnc.changes[i]=!0,StateChangeListener(t,i,n)),e.children[0].remove()},checkCncFors=function(t){var e=t.$cnc.fors;Object.keys(e).forEach(function(e){UpdateSingularForStates(t,t.state[e],e)})},UpdateSingularForStates=function(e,t,a){e=e.$cnc.fors[a];e&&e.forEach(function(i){var e=t;i.element.innerHTML="",(e=e.value?e.value:e).forEach(function(e,t){i.element.children[t]&&i.element.children[t].remove();var n=i.childElement.cloneNode(!0),r=a+"-"+t+"-for"+n.dataset.parentName;n.id=r,n.dataset.IndexCount=t,n.querySelectorAll("[data-form]").forEach(function(e){var t=JSON.parse(e.dataset.form);t.controller===a&&(t.name=r,e.dataset.form=JSON.stringify(t))}),n.querySelectorAll("[data-index-count]").forEach(function(e){e.dataset.indexCount=t}),n.querySelectorAll("[data-parent-name]").forEach(function(e){e.dataset.parentName=r}),i.element.appendChild(n)})})},CncController=function(){_inherits(a,stimulus.Controller);var i=_createSuper(a);function a(){var e;_classCallCheck(this,a);for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return _defineProperty(_assertThisInitialized(e=i.call.apply(i,[this].concat(n))),"clones",{}),_defineProperty(_assertThisInitialized(e),"state",{}),_defineProperty(_assertThisInitialized(e),"listeners",{}),_defineProperty(_assertThisInitialized(e),"classList",{}),e}return _createClass(a,[{key:"connect",value:function(){this.beforeConnecting(),this.connecting(),this.afterConnecting(),this.connected(),this.element.removeAttribute("hidden")}},{key:"beforeConnecting",value:function(){}},{key:"afterConnecting",value:function(){}},{key:"connecting",value:function(){this.state=Object.assign(this.state,this.stateInitializer),this.setUpCnc(),this.configureIfs(this),this.configureFors(this),this.configureDisables(this),this.configureClasses(this),this.configureListeners(this),this.updateStates()}},{key:"connected",value:function(){}},{key:"updateStates",value:function(){checkCncIfs(this),checkCncDisables(this),checkCncClasses(this),CheckListeners(this),checkCncFors(this)}},{key:"setUpCnc",value:function(){this.$cnc={ifs:{},changes:{},classes:{},disables:{},fors:{}}}},{key:"stateChanged",value:function(e,t){UpdateSingularIfStates(this,t,e),UpdateSingularForStates(this,t,e),UpdateSingularDisablesStates(this,t,e),UpdateSingularListener(this,e)}},{key:"configureDisables",value:function(t){var n=this;this.elements(t,"data-cnc-disabled").forEach(function(e){e.dataset.cncDisabled.split("#")[0]==t.element.dataset.controller&&CncDisabled(e,n)})}},{key:"configureIfs",value:function(t){var n=this;this.elements(t,"data-cnc-if").forEach(function(e){e.dataset.cncIf.split("#")[0]==t.element.dataset.controller&&CncIf(e,n)})}},{key:"configureFors",value:function(t){var n=this;this.elements(t,"data-cnc-for").forEach(function(e){e.dataset.cncFor.split("#")[0]==t.element.dataset.controller&&CncFor(e,n)})}},{key:"configureClasses",value:function(t){var n=this;this.elements(t,"data-cnc-class").forEach(function(e){e.dataset.cncClass.split("#")[0]==t.element.dataset.controller&&CncClass(e,n)})}},{key:"configureListeners",value:function(e){var t=this;Object.keys(this.listeners).forEach(function(e){t.$cnc.changes[e]||StateChangeListener(t,e,t.state[e])})}},{key:"elements",value:function(e,t){return e.element.querySelectorAll("["+t+"]")}},{key:"stateInitializer",get:function(){return{}}}]),a}(),validateForm=function(e,t){t.errors={};var n=!0;return e.forEach(function(e){e=e(t);e&&(t.errors=_objectSpread2(_objectSpread2({},t.errors),e),n=!1)}),n},AbstractResource=function(){function e(){var t=this;_classCallCheck(this,e),_defineProperty(this,"_value",void 0),_defineProperty(this,"_errors",void 0),_defineProperty(this,"_childrenValidity",{}),_defineProperty(this,"reference",null),_defineProperty(this,"stateManager",void 0),_defineProperty(this,"controller",void 0),_defineProperty(this,"name",void 0),_defineProperty(this,"_valid",!1),_defineProperty(this,"_touched",!1),_defineProperty(this,"validators",[]),_defineProperty(this,"valueChanges",new rxjs.Subject),_defineProperty(this,"statusChanges",new rxjs.Subject),_defineProperty(this,"stateChanged",new rxjs.Subject),_defineProperty(this,"options",{change:function(e){t.onChange(e)},keyup:function(){t.onChange(event)},blur:function(e){t.onTouch(e)}})}return _createClass(e,[{key:"onChange",value:function(e){e&&e.currentTarget&&(this.setValue(e.currentTarget.value),this.changeStatus())}},{key:"setValue",value:function(e){this.value=e,this.updateValidators(),this.reference.value=e,this.valueChanges.next(e)}},{key:"changeStatus",value:function(){this.statusChanges.next(!0),this._parent&&this._parent.onTouch({})}},{key:"touchChildren",value:function(){Object.values(this.controls).forEach(function(e){e.onTouch()})}},{key:"addValidator",value:function(e){e instanceof Array?this.validators=this.validators.concat(e):this.validators.push(e)}},{key:"removeValidators",value:function(){this.validators=[],this.updateValidators()}},{key:"updateValidators",value:function(){var e=!(0<arguments.length&&void 0!==arguments[0])||arguments[0],t=this.valid;this.valid=!this.checkChildValidity()&&e&&validateForm(this.validators,this),this._parent&&(this._parent._childrenValidity[this.name]=this.valid,this._parent.updateValidators()),this.valid!==t&&this.stateChanged.next(this.valid)}},{key:"checkChildValidity",value:function(){return!this._childrenValidity||Object.values(this._childrenValidity).some(function(e){return!e})}},{key:"checkParentsValidations",value:function(){return Object.values(this._parent._childrenValidity).some(function(e){return!e})}},{key:"onTouch",value:function(e){this.touched=!(1<arguments.length&&void 0!==arguments[1])||arguments[1],this.changeStatus(),this.valid||this.stateChanged.next(this.valid)}},{key:"setOnlyValues",value:function(e){this.value=e,this.updateParent()}},{key:"patchValue",value:function(e,t){this._value[t]=e,this.updateParent(),this.valueChanges.next(this.value),this.statusChanges.next(!1)}},{key:"updateParent",value:function(){this._parent?this._parent.patchValue(this.value,this.name):this.statusChanges.next(!0)}},{key:"setReference",value:function(e){this.reference=e,this.value?e.value=this.value:this.setOnlyValues(e.value)}},{key:"get",value:function(e){return this.controls[e]}},{key:"updateState",value:function(e){this.stateManager&&this.stateManager(e,this[e])}},{key:"errors",get:function(){return this._errors},set:function(e){this._errors=e,this.updateState("errors")}},{key:"parent",set:function(e){this._parent=e}},{key:"value",get:function(){return this._value},set:function(e){this._value=e,this.updateState("value")}},{key:"valid",get:function(){return this._valid},set:function(e){this._valid=e,this.updateState("valid")}},{key:"touched",get:function(){return this._touched},set:function(e){this._touched=e,this.updateState("touched")}}]),e}(),ControlResource=function(){_inherits(a,AbstractResource);var i=_createSuper(a);function a(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,r=2<arguments.length?arguments[2]:void 0;return _classCallCheck(this,a),_defineProperty(_assertThisInitialized(e=i.call(this)),"_parent",void 0),e._parent=n,e.name=r,e.setOnlyValues(t),e}return _createClass(a,[{key:"setValue",value:function(e){this._touched=!0,this.setOnlyValues(e),this.updateValidators(),this.reference.value=e,this.valueChanges.next(e)}}]),a}(),GroupResource=function(){_inherits(a,AbstractResource);var i=_createSuper(a);function a(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,r=2<arguments.length?arguments[2]:void 0;return _classCallCheck(this,a),_defineProperty(_assertThisInitialized(e=i.call(this)),"_parent",void 0),_defineProperty(_assertThisInitialized(e),"controls",{}),e._parent=n,e.name=r,e.setOnlyValues(t),e}return _createClass(a,[{key:"setControl",value:function(e,t,n){return this.controls[e]=new t(n,this,e),this.controls[e]}},{key:"setConstructedControl",value:function(e,t){t._parent=this,t.name=e,t.setOnlyValues(t.value),this.controls[e]=t}}]),a}(),ArrayResource=function(){_inherits(a,AbstractResource);var i=_createSuper(a);function a(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],n=1<arguments.length?arguments[1]:void 0,r=2<arguments.length?arguments[2]:void 0;return _classCallCheck(this,a),_defineProperty(_assertThisInitialized(e=i.call(this)),"_parent",void 0),_defineProperty(_assertThisInitialized(e),"length",0),_defineProperty(_assertThisInitialized(e),"controls",{}),e._parent=n,e.name=r,e.setOnlyValues(t),e}return _createClass(a,[{key:"setControl",value:function(e,t){return this.updateLength(new t(e,this,this.length.toString())),this.controls[(this.length-1).toString()]}},{key:"array_controls",get:function(){return Object.values(this.controls)}},{key:"updateLength",value:function(e){this.controls[this.length.toString()]=e,this.length++}},{key:"push",value:function(e){this.updatePushedData(e),e.updateParent(),this.updateNewControlValidation(e)}},{key:"concat",value:function(e){var t=this;e.forEach(function(e){t.updatePushedData(e),e.updateParent()})}},{key:"updateNewControlValidation",value:function(e){this._childrenValidity[e.name]=e.valid,this.updateValidators()}},{key:"updatePushedData",value:function(e){e.name=this.length.toString(),(e.parent=this).updateLength(e)}},{key:"updateNewIndexes",value:function(e){if(this.length&&e!==this.length)for(var t=e;t<this.length;t++)this.controls[t]=this.controls[t+1],this.controls[t].name=t,delete this.controls[t+1]}},{key:"removeAt",value:function(e){delete this.controls[e],this.length--,this.value.splice(e,1),this.updateNewIndexes(e),this.updateParent(),delete this._childrenValidity[e],this.updateValidators()}}]),a}(),requiredValidator=function(e){return e.value&&""!==e.value||!1===e.value?null:{required:!0}},patternValidator=function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"pattern";return function(e){return t.test(e.value)?null:_defineProperty({},n,!0)}},QuantumValidators={required:requiredValidator,pattern:patternValidator},FormBuilder=function(){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"root";return _classCallCheck(this,n),_defineProperty(this,"group",new GroupResource({})),_defineProperty(this,"current_object",{}),this.build_object(e,this.group,t),this.updateAllValidators(this.group.controls),this.group}return _createClass(n,[{key:"updateAllValidators",value:function(t){var n=this;Object.keys(t).forEach(function(e){t[e]instanceof GroupResource?n.updateAllValidators(t[e].controls):t[e].updateValidators()})}},{key:"build_object",value:function(n,r){var i=this;this.current_object=n,Object.keys(n).forEach(function(e){var t;"validators_reference"!==e&&(n[e]instanceof Array?(t=r.setControl(e,ArrayResource),i.build_array(n[e],t),t.updateValidators(),i.current_object=n):n[e]instanceof Object?(t=r.setControl(e,GroupResource),i.addValidators(t,e),i.build_object(n[e],t),t.updateValidators(),i.current_object=n):i.build_control(e,r,n[e]))})}},{key:"build_array",value:function(n,r){var i=this;n.forEach(function(e){var t;n[e]instanceof Array?(t=r.setControl(void 0,ArrayResource),i.build_array(e,t),t.updateValidators()):e instanceof Object?(t=r.setControl(void 0,GroupResource),i.build_object(e,t),i.addValidators(t,e),t.updateValidators()):i.build_control(e,r,e)})}},{key:"build_control",value:function(e,t,n){n=t.setControl(e,ControlResource,n);this.addValidators(n,e),n.updateValidators()}},{key:"addValidators",value:function(e,t){if(this.current_object.validators_reference){var n=this.current_object.validators_reference;return n.neglect&&("all"===n.neglect||n.neglect[t])||e.addValidator(QuantumValidators.required),n[t]&&e.addValidator(n[t]),!0}}}]),n}(),FormsController=function(){_inherits(a,CncController);var i=_createSuper(a);function a(){var e;_classCallCheck(this,a);for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return _defineProperty(_assertThisInitialized(e=i.call.apply(i,[this].concat(n))),"form",void 0),_defineProperty(_assertThisInitialized(e),"children",void 0),_defineProperty(_assertThisInitialized(e),"state",{}),_defineProperty(_assertThisInitialized(e),"listeners",{}),e}return _createClass(a,[{key:"afterConnecting",value:function(){this.buildForm(),this.formStates()}},{key:"formStates",value:function(){this.state.valid=this.form.valid,this.form.stateManager=this.stateUpdater,this.form.controller=this}},{key:"stateUpdater",value:function(e,t){"valid"===e&&(this.controller.state.valid=t,this.controller.stateChanged(e,t))}},{key:"buildForm",value:function(){this.form=new FormBuilder(this.buildReference,"root")}},{key:"buildReference",get:function(){return{}}}]),a}(),ControlsController=function(){_inherits(a,CncController);var i=_createSuper(a);function a(){var e;_classCallCheck(this,a);for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return _defineProperty(_assertThisInitialized(e=i.call.apply(i,[this].concat(n))),"control",void 0),_defineProperty(_assertThisInitialized(e),"state",{}),_defineProperty(_assertThisInitialized(e),"listeners",{}),_defineProperty(_assertThisInitialized(e),"classList",{}),e}return _createClass(a,[{key:"beforeConnecting",value:function(){this.getForm()}},{key:"getForm",value:function(){var e=this.application.getControllerForElementAndIdentifier(this.parentElement,this.formData.controller),t=this.element;this.element.dataset.formControl||(t=this.element.querySelector("[data-form-control]")),this.setControl(e,t),this.control.setReference(t),this.control.stateManager=this.stateUpdater,this.control.controller=this}},{key:"setControl",value:function(e,t){var n,r=t.dataset;this.formData.hierarchy?(t=r.formControl.split("."),n=e.form,t.forEach(function(e){n=n.get(e)}),this.control=n):this.control=e.form.get(r.formControl)}},{key:"stateUpdater",value:function(e,t){this.controller.state[e]=t,this.controller.stateChanged(e,t)}},{key:"update",value:function(e){this.control.options[e.type](e)}},{key:"formData",get:function(){return JSON.parse(this.element.dataset.form)}},{key:"parentElement",get:function(){return document.getElementById(this.formData.name)}},{key:"stateInitializer",get:function(){return{value:this.control.value,errors:this.control.errors||{},valid:this.control.valid,touched:this.control.touched}}}]),a}(),Forms={FormBuilder:FormBuilder,ArrayResource:ArrayResource,ControlResource:ControlResource,GroupResource:GroupResource,AbstractResource:AbstractResource,QuantumValidators:QuantumValidators,FormsController:FormsController,ControlsController:ControlsController},index={CncController:CncController,Forms:Forms};module.exports=index;