HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/inzigd.komma.pro/wwwroot/js/kms/attributes.js
function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function _iterableToArray(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}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 a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}var ComponentAreaManager=function(){function e(t,n){_classCallCheck(this,e),this._componentAreaWrapperElement=t,this._componentManagerApiController=n,void 0!==this._componentAreaWrapperElement&&"DIV"===this._componentAreaWrapperElement.tagName?void 0!==this._componentManagerApiController?(this._componentAreaAttributeKey=this._componentAreaWrapperElement.id,this._masterInput=this._componentAreaWrapperElement.querySelector('input[name="'+this._componentAreaAttributeKey+'"]'),this._masterInput?(this._componentAreaContainer=this._componentAreaWrapperElement.querySelector(".js-components"),this._componentAreaContainer?!1 in this._componentAreaWrapperElement.dataset?console.error("The wrapper element must, but did not have a componentAttributeFieldsRegex dataset value"):(this._componentAttributeFieldsRegex=this._componentAreaWrapperElement.dataset.componentAttributeFieldsRegex,this._saveVersion="0.9.1",this._addComponentButtonElements=[],this.eventMap={},this._setAddComponentButtonElements(),this._loadComponentsUsingSaveStateData()):console.error("ComponentAreaManager:constructor the wrapper did not contain a div with class components.")):console.error('ComponentAreaManager:constructor Did not find an hidden input with name "'+this._componentAreaAttributeKey+'" inside of the wrapper.')):console.error("ComponentAreaManager:constructor Did not get the expected _componentManagerApiController."):console.error("ComponentAreaManager:constructor Did not get the expected div element that represents the components wrapper.")}return _createClass(e,[{key:"_setAddComponentButtonElements",value:function(){this._addComponentButtonElements=this._componentAreaWrapperElement.querySelectorAll(".js-add-component");for(var e=this._addComponentButtonElements.length,t=0;t<e;t++){this._addComponentButtonElements[t].addEventListener("click",this._addComponentButtonClicked.bind(this))}}},{key:"_addComponentButtonClicked",value:function(e){var t=this;e.preventDefault();var n=e.target;if(!1 in n.dataset)console.error("ComponentAreaManager: One of the add component buttons was missing the component dataset attribute. Please set it to the name of a valid component");else{var a=new ComponentSaveState;a.id=-1*parseInt(t._componentAreaWrapperElement.dataset.timesAddedComponent),a.componentTypeId=parseInt(n.dataset.componentType),a.sortOrder=0,this._componentManagerApiController.getComponentHtmlElement(a,this._componentAreaWrapperElement.id).then(function(e){t._componentAreaWrapperElement.dataset.timesAddedComponent=(parseInt(t._componentAreaWrapperElement.dataset.timesAddedComponent)+1).toString();var n=e.element;t._addComponent(n),t._updateMasterInput()})}}},{key:"_addComponent",value:function(e){for(var t=this,n=this._findAttributeDataInputs(e),a=n.inputElements.length,i=0;i<a;i++){var r=n.inputElements[i],o=t._debounce(t._attributeInputChanged.bind(t),500);r.addEventListener("change",t._attributeInputChanged.bind(t)),r.addEventListener("blur",t._attributeInputChanged.bind(t)),r.addEventListener("keydown",o.bind(t))}for(var s=this._findComponentableInputs(e),l=n.inputElements.length,u=0;u<l;u++){var d=s.inputElements[u];if(d){var c=t._debounce(t._attributeInputChanged.bind(t),500);d.addEventListener("change",t._attributeInputChanged.bind(t)),d.addEventListener("blur",t._attributeInputChanged.bind(t)),d.addEventListener("keydown",c.bind(t))}}e.querySelector(".js-component-delete").addEventListener("click",function(n){n.preventDefault(),e.parentElement.removeChild(e),t._updateMasterInput()}),e.querySelector(".js-component-move-up").addEventListener("click",function(n){n.preventDefault(),e.previousSibling&&e.parentElement.insertBefore(e,e.previousSibling),t._updateMasterInput()}),e.querySelector(".js-component-move-down").addEventListener("click",function(n){n.preventDefault(),e.nextSibling&&e.nextSibling.nextSibling?e.parentElement.insertBefore(e,e.nextSibling.nextSibling):e.parentElement.appendChild(e),t._updateMasterInput()}),this._putComponentAttributesInTabs(e),this._componentAreaContainer.appendChild(e)}},{key:"_attributeInputChanged",value:function(e){this._updateMasterInput()}},{key:"_updateMasterInput",value:function(){var e=this._getDataToSave();this._masterInput.value=JSON.stringify(e)}},{key:"_putComponentAttributesInTabs",value:function(e){var t=e.querySelector(".attributes");if(t){for(var n=t.children,a=n.length,i={},r=0;r<a;r++){var o=n[r];"tab"in o.dataset&&(i.hasOwnProperty(o.dataset.tab)||(i[o.dataset.tab]=[]),i[o.dataset.tab].push(o))}var s=Object.keys(i).length;if(s>0){var l=new DOMParser,u=l.parseFromString('<div class="component-tab">    <ul class="component-tab__list">    </ul>    <div class="component-tab__container">    </div></div>',"text/html"),d=u.body.firstChild;t.appendChild(d);var c=0,h=function(e){if(!i.hasOwnProperty(e))return"continue";var t=(u=l.parseFromString('<li class="component-tab__list-item">    <a class="component-tab__button">'+e+"</a></li>","text/html")).body.firstChild,n=d.getElementsByClassName("component-tab__list")[0];n.appendChild(t);var a=(u=l.parseFromString('<div class="component-tab__content"></div>',"text/html")).body.firstChild,r=d.getElementsByClassName("component-tab__container")[0];r.appendChild(a);for(var o=i[e].length,h=0;h<o;h++)a.appendChild(i[e][h]);0===c&&(t.classList.add("active"),a.classList.add("active")),t.addEventListener("click",function(e){e.preventDefault();for(var a=0,i=0;i<s;i++){var o=n.children[i];o.classList.remove("active"),o===t&&(o.classList.add("active"),a=i)}for(var l=0;l<s;l++){var u=r.children[l];u.classList.remove("active"),l===a&&u.classList.add("active")}}),c++};for(var p in i)h(p)}}else console.error('Expected to get a "componentElement" but did not. It did not contain a div with class "attributes" in it.')}},{key:"_findAttributeDataInputs",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,n=[],a=e.getElementsByClassName("attributes")[0].querySelectorAll("input, textarea, select"),i=a.length,r=0;r<i;r++){var o=a[r];void 0!==o.name&&o.name.match(new RegExp(this._componentAttributeFieldsRegex))&&n.push(o)}var s=new FoundComponentInputsModel;return s.inputElements=n,s.componentElement=e,s.componentSaveState=t,s}},{key:"_findComponentableInputs",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,n=[],a=e.querySelector(".componentableSelectors");if(!a)return new FoundComponentInputsModel;for(var i=a.querySelectorAll("input, textarea, select"),r=i.length,o=0;o<r;o++){var s=i[o];void 0!==s.name&&s.name.match(new RegExp(this._componentAttributeFieldsRegex))&&n.push(s)}var l=new FoundComponentInputsModel;return l.inputElements=n,l.componentElement=e,l.componentSaveState=t,l}},{key:"getComponentElements",value:function(){return this._componentAreaContainer.querySelectorAll(".c-component")}},{key:"_getDataToSave",value:function(){for(var e=new ComponentAreaSaveState,t=this.getComponentElements(),n=t.length,a=0;a<n;a++){for(var i=t[a],r=this._findAttributeDataInputs(i),o=this._findComponentableInputs(i),s={},l=r.inputElements.length,u=0;u<l;u++){var d=r.inputElements[u];"INPUT"===d.tagName&&"file"===d.type||(s[d.name]=d.value)}for(var c={},h=o.inputElements.length,p=0;p<h;p++){var m=o.inputElements[p];"INPUT"===m.tagName&&"file"===m.type||(c[m.name]=m.value)}var v=new ComponentSaveState;v.id=Number(r.componentElement.dataset.id),v.componentTypeId=Number(r.componentElement.dataset.componentTypeId),v.data=s,v.version=this._saveVersion,v.sortOrder=Number(a),v.componentableData=c,e.addComponentSaveState(v)}return e}},{key:"_loadComponentsUsingSaveStateData",value:function(){var e=this,t=this._masterInput.value;if(!t)return!1;var n=ComponentAreaSaveState.fromJsonString(t);if(!n)return!1;for(var a=[],i=n.componentsCount,r=0;r<i;r++){var o=n.getComponentSavestateAt(r);a.push(this._componentManagerApiController.getComponentHtmlElement(o,this._componentAreaWrapperElement.id))}Promise.all(a).then(function(t){for(var n=t.length,a=0;a<n;a++){var i=t[a].element;e._addComponent(i)}for(var r=0;r<n;r++){var o=t[r].componentSavestate,s=o.data;for(var l in s)if(s.hasOwnProperty(l)&&o.data.hasOwnProperty(l)){var u=e._componentAreaWrapperElement.querySelectorAll('[name="'+l+'"]'),d=u.length;if(d>0)for(var c=0;c<d;c++)u[c].value=s[l];else console.error("Could not load data for field: "+l+" since it could not be found. Skipping it")}var h=o.componentableData;for(var p in h)if(h.hasOwnProperty(p)&&o.componentableData.hasOwnProperty(p)){var m=e._componentAreaWrapperElement.querySelectorAll('[name="'+p+'"]'),v=m.length;if(v>0)for(var f=0;f<v;f++)m[f].value=h[p];else console.error("Could not load data for field: "+p+" since it could not be found. Skipping it")}}isset(sessionStorage.getItem("componentScrollPosition"))&&(e._componentAreaWrapperElement.parentElement.parentElement.parentElement.scrollTop=sessionStorage.getItem("componentScrollPosition"))})}},{key:"_debounce",value:function(e,t,n){var a;return function(){var i=this,r=arguments,o=n&&!a;clearTimeout(a),a=setTimeout(function(){a=null,n||e.apply(i,r)},t),o&&e.apply(i,r)}}}]),e}(),ComponentManagerApiController=function(){function e(){_classCallCheck(this,e),this.domParser=new DOMParser}return _createClass(e,[{key:"getComponentHtmlElement",value:function(e,t){var n=this;return new Promise(function(a,i){var r={componentAreaAttributeKey:t,componentSaveState:JSON.stringify(e)};axios.post("/api/dynamic/component/resolve",r).then(function(t){var i={element:n._stringToHtmlElement(t.data),componentSavestate:e};a(i)}).catch(function(e){console.error("ComponentManagerApiController:getComponentHtmlElement Could not get HTML of a component because of the following error:",e),i(e)})})}},{key:"getComponentAreaRegexForComponent",value:function(e){if(void 0!==e)return new Promise(function(t,n){axios.post("/api/dynamic/component/attribute_regex",{componentKey:e}).then(function(e){t(e.data)}).catch(function(e){console.error("ComponentManagerApiController:getComponentAreaRegexForComponent Could not get the regex to find inputs for a component because of the following error:",e),n(e)})});console.error("ComponentManagerApiController:getComponentAreaRegexForComponent Could not get the regex for an undefined componentKey. Please specify it.")}},{key:"getAllComponentTypeNames",value:function(){return new Promise(function(e,t){axios.get("/api/dynamic/component").then(function(e){return e.data}).catch(function(e){console.error("ComponentManagerApiController:getAllComponentTypeNames Could not the names of all available componentTypes because of an error:",e),t(e)})})}},{key:"_stringToHtmlElement",value:function(e){return this.domParser.parseFromString(e,"text/html").body.firstElementChild}}]),e}(),FoundComponentInputsModel=function(){function e(){_classCallCheck(this,e),this._inputElements=[],this._componentElement=null,this._componentSaveState=null}return _createClass(e,[{key:"inputElements",get:function(){return this._inputElements},set:function(e){"object"===_typeof(e)?this._inputElements=e:console.error("ComponentSaveState: Did not set inputElements since the parameter was not an array. Actual: ",e)}},{key:"componentElement",get:function(){return this._componentElement},set:function(e){!e instanceof HTMLDivElement?console.error("ComponentSaveState: Did not set componentElement since the parameter was not an HTMLDivElement."):this._componentElement=e}},{key:"componentSaveState",get:function(){return this._componentSaveState},set:function(e){!e instanceof ComponentSaveState?console.error("ComponentSaveState: Did not set componentSaveState since the parameter was not ComponentSaveState."):this._componentSaveState=e}}]),e}(),ComponentSaveState=function(){function e(){_classCallCheck(this,e),this._version="0.9.1",this._id=null,this._componentTypeId=null,this._data={},this._componentableData={},this._sortOrder=null,this.toJSON=this._toJson.bind(this)}return _createClass(e,[{key:"_toJson",value:function(){return{id:this._id,version:this._version,componentTypeId:this._componentTypeId,data:this._data,componentableData:this._componentableData,sortOrder:this._sortOrder}}},{key:"version",get:function(){return this._version},set:function(e){"string"==typeof e?this._version=e:console.error("ComponentSaveState: Did not set version since the parameter was not a string. Actual: ",e)}},{key:"id",get:function(){return this._id},set:function(e){""!==e&&"number"==typeof e?this._id=e:console.error("ComponentSaveState: Did not set the id since the parameter was not a number. Actual: ",_typeof(e),1)}},{key:"componentTypeId",get:function(){return this._componentTypeId},set:function(e){""!==e&&"number"==typeof e?this._componentTypeId=e:console.error("ComponentSaveState: Did not set componentTypeId since the parameter was not a number. Actual: ",_typeof(e),1)}},{key:"data",get:function(){return this._data},set:function(e){"object"===_typeof(e)?this._data=e:console.error("ComponentSaveState: Did not set data since the parameter was not an object. Actual: ",e)}},{key:"sortOrder",get:function(){return this._sortOrder},set:function(e){""!==e&&"number"==typeof e||console.error("ComponentSaveState: Did not set sortOrder since the parameter was not a number. Actual: ",e),this._sortOrder=e}},{key:"componentableData",get:function(){return this._componentableData},set:function(e){"object"===_typeof(e)?this._componentableData=e:console.error("ComponentSaveState: Did not set componentableData since the parameter was not an object. Actual: ",e)}}],[{key:"fromObject",value:function(e){if(e.hasOwnProperty("id")&&"number"==typeof e.id&&e.hasOwnProperty("componentTypeId")&&"number"==typeof e.componentTypeId&&e.hasOwnProperty("version")&&"string"==typeof e.version&&e.hasOwnProperty("sortOrder")&&"number"==typeof e.sortOrder&&e.hasOwnProperty("data")&&"object"===_typeof(e.data)&&e.hasOwnProperty("componentableData")&&"object"===_typeof(e.data)){var t=new this;return t.id=e.id,t.componentTypeId=e.componentTypeId,t.version=e.version,t.sortOrder=e.sortOrder,t.data=e.data,t.componentableData=e.componentableData,t}console.error("Could not create a ComponentSaveState instance from an object since that object did not contain all of the following properties of the correct types: id (number), componentTypeId (number), version (string), sortOrder (number), data (array object). Actual: ",e)}}]),e}(),ComponentAreaSaveState=function(){function e(){_classCallCheck(this,e),this.toJSON=this._toJson.bind(this),this._componentSaveStates=[]}return _createClass(e,[{key:"addComponentSaveState",value:function(e){!e instanceof ComponentSaveState?console.error('ComponentAreaSaveState: The passed "componentSaveState" was not an instance of ComponentSaveState. Actual: ',e):this._componentSaveStates.push(e)}},{key:"getComponentSavestateAt",value:function(e){return this._componentSaveStates[e]}},{key:"_toJson",value:function(){return this._componentSaveStates}},{key:"componentsCount",get:function(){return this._componentSaveStates.length}}],[{key:"fromJsonString",value:function(e){var t=null;try{t=JSON.parse(e)}catch(e){return void console.error("ComponentAreaSaveState: The given jsonString does not represent ComponentAreaSaveState since the json string was not a valid json")}for(var n=new this,a=t.length,i=0;i<a;i++){var r=t[i],o=ComponentSaveState.fromObject(r);n.addComponentSaveState(o)}return n}}]),e}(),CopyText=function(){function e(t){_classCallCheck(this,e),this.element=t,!1 in this.element.dataset&&console.error("CopyText: The given element must have a data-to-copy attribute with the value that you want to copy. But did not have that attribute.",t),this.addEventListeners()}return _createClass(e,[{key:"addEventListeners",value:function(){this.element.addEventListener("click",this.clickHandler.bind(this))}},{key:"clickHandler",value:function(e){e.preventDefault();var t=this.element.dataset.toCopy,n=document.createElement("input");document.body.appendChild(n),n.value=t,n.select(),document.execCommand("copy"),document.body.removeChild(n),n=null}}]),e}(),DocumentManager=function(){function e(t,n){if(_classCallCheck(this,e),this.constructedSuccessFully=!1,this.wrapper=t,this.HTML5Uploader=n,this.accept="documentsAccept"in t.dataset?t.dataset.documentsAccept:void 0,"documentsKey"in t.dataset){this.key=t.dataset.documentsKey,this.isSortable="documentsIsSortable"in t.dataset&&"1"===t.dataset.documentsIsSortable,this.extensionThumbsFolder="documentsExtensionThumbsFolder"in t.dataset?t.dataset.documentsExtensionThumbsFolder:"/img/kms/extension_thumbs/",this.availableExtensionThumbs="documentsAvailableExtensionThumbs"in t.dataset?t.dataset.documentsAvailableExtensionThumbs:["svg","pdf","zip","rar","csv","xlsx","mp3","mp4","docx","doc","png","jpg","jpeg","gif"],this.enablePreviewsIfPossible="documentsEnablePreviewsIfPossible"in t.dataset&&"1"===t.dataset.documentsEnablePreviewsIfPossible,this.maxDocuments="documentsMaxDocuments"in t.dataset?t.dataset.documentsMaxDocuments:void 0,this.imageProperties="imageProperties"in t.dataset?t.dataset.imageProperties:null,this.subFolder="subFolder"in t.dataset?t.dataset.subFolder:"documents",this.eventMap={};var a=document.getElementById("entity-form");if(a){var i=a.dataset.maxUploadSize;i&&(this.maxUploadSizeInBytes=i)}if(this.uploadSizeExceededMessage="You cannot upload more files right now. Please save these first before continuing. The limit is:",null!=t){var r=t.getElementsByClassName("files")[0],o=t.querySelector('input[name="'+this.key+'-data"]');if(r)if(this.documentList=r,o){this.dataInput=o,!1 in t.dataset&&console.error("The wrapper must have a uploadedDocuments dataset attribute containing a json string representing the uploaded documents as an array of documents. Stopping DocumentManager construction");var s=JSON.parse(this.dataInput.value);this.constructedSuccessFully=!0,this.initialize(s)}else console.error('The document uploader needs an input element with name "'+this.key+'-data" in the given wrapper. It is used to keep track of the states of all documents. Stopping DocumentManager construction');else console.error('The document uploader needs an ul element with class "files" in the given wrapper')}else console.error("The wrapper was not a valid html element. Stopping DocumentManager construction")}else console.error("Make sure that the wrapper contains the attributes key")}return _createClass(e,[{key:"initialize",value:function(e){if(this.constructedSuccessFully){if(e){for(var t=e.length,n=0;n<t;n++){var a=e[n],i=DocumentModel.fromJson(a);i?this.addDocumentElement(i):(console.error("DocumentManager stumbled upon a document that is not valid upon initializing: "),console.error(a))}this.sortDocuments()}this.updateDataInput(),this.setupHtml5Uploader()}}},{key:"setupHtml5Uploader",value:function(){this.HTML5Uploader.on("uploadStart",this.HTML5UploadStarted.bind(this)),this.HTML5Uploader.on("updateProgress",this.HTML5UploadProgress.bind(this)),this.HTML5Uploader.on("uploadComplete",this.HTML5UploadedFile.bind(this)),this.HTML5Uploader.on("uploadFailed",this.HTML5UploadFailedOrCanceled.bind(this)),this.HTML5Uploader.on("uploadCanceled",this.HTML5UploadFailedOrCanceled.bind(this))}},{key:"HTML5UploadFailedOrCanceled",value:function(e,t,n){var a=e.documentElement;a&&(this.documentList.removeChild(a),this.updateDataInput())}},{key:"HTML5UploadedFile",value:function(e,t){var n=e.documentElement;if(n){var a=JSON.parse(t),i=DocumentModel.fromJson(a);this.attachDocumentModelToDocumentElement(n,i),this.updateDocumentElementWithDocumentData(n,i),this.updateSortOrder(),n.querySelector(".drag-icon").classList.remove("is-hidden"),n.querySelector(".thumb").classList.remove("is-uploading"),n.querySelector(".percentage").remove()}}},{key:"HTML5UploadProgress",value:function(e,t){var n=e.documentElement;n&&(t&&100===t?t=99:t||(t=1),n.querySelector(".percentage").setAttribute("aria-valuenow",t))}},{key:"HTML5UploadStarted",value:function(e){var t=this.createDocumentElement();this.attachDocumentModelToDocumentElement(t);var n=DocumentModel.fromJson(JSON.parse(t.dataset.json));n.state=DOCUMENT_STATE_NEW,n.name=e.name,n.path=e.name,t=this.updateDocumentElementWithDocumentData(t,n),this.attachDocumentModelToDocumentElement(t,n);t.querySelector(".thumb").insertAdjacentHTML("afterbegin",'<span class="percentage" role="progressbar" aria-valuemin="0" aria-valuemax="100"></span>'),this.documentList.appendChild(t),t.querySelector(".drag-icon").classList.add("is-hidden"),t.querySelector(".thumb").classList.add("is-uploading"),e.documentElement=t}},{key:"deleteDocumentButtonClicked",value:function(e){var t=e.target.parentElement,n=JSON.parse(t.dataset.json);n.state!==DOCUMENT_STATE_DELETED&&(n.state!==DOCUMENT_STATE_NEW?(n.state=DOCUMENT_STATE_DELETED,t.classList.add(DOCUMENT_STATE_DELETED),t.dataset.json=JSON.stringify(n)):this.documentList.removeChild(t),this.updateDataInput(),this.updateSortOrder())}},{key:"modifiedDocument",value:function(e){var t=e.target.parentElement.parentElement,n=JSON.parse(t.dataset.json);if(n.state!==DOCUMENT_STATE_DELETED){n.state!==DOCUMENT_STATE_NEW&&(n.state=DOCUMENT_STATE_MODIFIED);var a=t.getElementsByClassName("name")[0];n.name=a.value,t.dataset.json=JSON.stringify(n),t.classList.add(DOCUMENT_STATE_MODIFIED),this.updateDataInput()}}},{key:"addDocumentElement",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,t=this.createDocumentElement();void 0!==e&&this.updateDocumentElementWithDocumentData(t,e),this.attachDocumentModelToDocumentElement(t,e),e&&(this.makeElementRespondToDragging(t,this.isSortable),this.makeElementRespondToDragOverAndLeave(t,this.isSortable),this.makeElementRespondToDrop(t,this.isSortable)),this.documentList.appendChild(t)}},{key:"attachDocumentModelToDocumentElement",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;return void 0!==t?e.dataset.json=JSON.stringify(t):((t=new DocumentModel).sort_order=this.getCurrentDocumentsCount()+1,e.dataset.json=JSON.stringify(t)),e}},{key:"updateDocumentElementWithDocumentData",value:function(e,t){var n=e.querySelector(".name"),a=e.querySelector(".path"),i=e.querySelector(".thumb");if(a&&(a.innerText=t.path),n&&n.setAttribute("value",t.name),i&&t.path){var r=this.getThumbUrlUsingDocumentModel(t),o=this.getExtensionFromFileName(t.path);i.setAttribute("data-filetype",o);var s=i.querySelector(".thumb__image");i&&(r&&"new"!==t.state?(s.style.backgroundImage="url('"+r+"')",i.classList.add("has-image")):-1!==this.availableExtensionThumbs.indexOf(o)&&(s.style.backgroundImage="url('"+this.extensionThumbsFolder+o+".svg')",i.classList.add("has-icon")))}return e}},{key:"createDocumentElement",value:function(){var e=document.createElement("li");e.className="document";var t=document.createElement("input");t.setAttribute("class","name"),t.setAttribute("type","text"),t.addEventListener("change",this.modifiedDocument.bind(this));var n=document.createElement("p");n.setAttribute("class","path");var a=document.createElement("div");a.setAttribute("class","content-wrapper"),a.appendChild(t),a.appendChild(n);var i=document.createElement("span");i.className="delete",i.addEventListener("click",this.deleteDocumentButtonClicked.bind(this));var r=document.createElement("span");r.className="drag-icon";var o=document.createElement("div");o.className="thumb",o.setAttribute("draggable","false");var s=document.createElement("div");s.className="thumb__image",o.appendChild(s);var l=document.createElement("input");return l.setAttribute("type","file"),l.setAttribute("name",this.key+"-"+(this.getCurrentDocumentsCount()+1)),this.accept&&l.setAttribute("accept",this.accept),e.appendChild(l),l.style.display="none",e.appendChild(r),e.appendChild(o),e.appendChild(a),e.appendChild(i),e}},{key:"receiveFile",value:function(e){if(e){if(this.getCurrentDocumentsCount()<this.maxDocuments){var t=this.createDocumentElement();if(this.attachDocumentModelToDocumentElement(t),!1===this.HTML5Uploader.isSupported())t=this.giveDocumentElementAFile(t,e),this.documentList.appendChild(t),this.formSizeExceeded()&&t.parentElement.removeChild(t),this.updateSortOrder();else{var n={imageProperties:this.imageProperties,subFolder:this.subFolder};this.HTML5Uploader.upload(e,JSON.stringify(n))}}}else console.warn("DocumentManager:receiveFile: Expected to get a file but did not get one")}},{key:"getCurrentDocumentsCount",value:function(){return this.documentList.getElementsByClassName("document").length}},{key:"giveDocumentElementAFile",value:function(e,t){var n=t.name,a=this.getExtensionFromFileName(n),i=(this.previewThumbUrlIsImage(n),e.querySelector(".name")),r=e.querySelector(".thumb"),o=(e.querySelector(".content-wrapper"),e.querySelector(".delete"),e.querySelector(".drag-icon")),s=e.querySelector('input[type="file"]');if(o.style.display="none",s&&!s.files[0]&&(s.files=new FileList(t)),r.setAttribute("data-filetype",a),-1!==this.availableExtensionThumbs.indexOf(a)){var l=r.querySelector("thumb__image");l.style.backgroundImage="url('"+this.extensionThumbsFolder+a+".svg')",l.classList.add("has-icon")}return i.value=n,e}},{key:"getThumbUrlUsingDocumentModel",value:function(e){if(e){var t=e.path;if(""!==e.thumb_image_url&&(t=e.thumb_image_url),this.previewThumbUrlIsImage(t))return t}return!1}},{key:"previewThumbUrlIsImage",value:function(e){if(!this.enablePreviewsIfPossible)return!1;switch(this.getExtensionFromFileName(e)){case"png":case"jpg":case"jpeg":case"gif":return e;case"pdf":default:return!1}}},{key:"getExtensionFromFileName",value:function(e){var t=e.split(/[.]+/).pop();return t===e?"":t.toLowerCase()}},{key:"formSizeExceeded",value:function(){if(this.maxUploadSizeInBytes){var e=!1,t=0;if(this.documentList.querySelectorAll('input[type="file"]').forEach(function(e){if(1===e.files.length){var n=e.files[0];t+=n.size}}),console.log("max upload size in bytes: "+this.maxUploadSizeInBytes+" current upload size in bytes: "+t),t>this.maxUploadSizeInBytes){var n=this.maxUploadSizeInBytes/1048576;e=!0,alert(this.uploadSizeExceededMessage+" "+n+" MegaBytes")}return e}return!1}},{key:"updateDataInput",value:function(){for(var e=[],t=this.documentList.children,n=t.length,a=0;a<n;a++){var i=t[a];"json"in i.dataset&&e.push(JSON.parse(i.dataset.json))}n>=this.maxDocuments?this.wrapper.querySelector(".drag-and-drop-area").classList.add("is-hidden"):this.wrapper.querySelector(".drag-and-drop-area").classList.remove("is-hidden"),this.dataInput.value=JSON.stringify(e);var r=createNewEvent("change");dispatchEventForElement(this.dataInput,r)}},{key:"updateSortOrder",value:function(){for(var e=this.documentList.children,t=e.length,n=1,a=0;a<t;a++){var i=e[a];if("json"in i.dataset!=!1){var r=JSON.parse(i.dataset.json);r.state!==DOCUMENT_STATE_DELETED&&(r.sort_order=n,console.log("Document",r),r.state!==DOCUMENT_STATE_NEW&&(r.state=DOCUMENT_STATE_MODIFIED),i.dataset.json=JSON.stringify(r),i.classList.add(DOCUMENT_STATE_MODIFIED),n++)}}this.updateDataInput()}},{key:"sortDocuments",value:function(){var e=this.documentList.children;(e=Array.prototype.slice.call(e)).sort(function(e,t){var n=JSON.parse(e.dataset.json),a=JSON.parse(t.dataset.json);return n.sort_order<a.sort_order?-1:1});for(var t=e.length,n=1;n<t;n++)this.documentList.removeChild(e[n]),this.documentList.length>1?this.documentList.insertBefore(e[n],this.documentList.firstChild):this.documentList.appendChild(e[n])}},{key:"makeElementRespondToDragging",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e.setAttribute("draggable",t?"true":"false"),e.id=this.key+"_"+this.getCurrentDocumentsCount(),t?(e.removeEventListener("dragstart",this.drag.bind(this)),e.addEventListener("dragstart",this.drag.bind(this))):e.removeEventListener("dragstart",this.drag.bind(this)),this}},{key:"makeElementRespondToDrop",value:function(e){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?(e.removeEventListener("drop",this.drop.bind(this)),e.addEventListener("drop",this.drop.bind(this))):e.removeEventListener("drop",this.drop.bind(this)),this}},{key:"makeElementRespondToDragOverAndLeave",value:function(e){!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?(e.removeEventListener("dragover",this.dragOver.bind(this)),e.removeEventListener("dragleave",this.dragLeave.bind(this)),e.addEventListener("dragover",this.dragOver.bind(this)),e.addEventListener("dragleave",this.dragLeave.bind(this))):(e.removeEventListener("dragover",this.dragOver.bind(this)),e.removeEventListener("dragleave",this.dragLeave.bind(this)))}},{key:"drag",value:function(e){if(e.target.id){e.stopPropagation(),e.dataTransfer.setData("text",e.target.id);var t=document.getElementById(e.target.id);this.triggerEvent("drag",t)}}},{key:"dragOver",value:function(e){if(e.preventDefault(),e.stopPropagation(),e.target.id){var t=e.dataTransfer.getData("text"),n=document.getElementById(t);this.enableOrDisablePointerEventsOnChildrenOfElement(e.target,!1),e.target.classList.add("isDropTarget"),this.triggerEvent("dragLeave",[n,e.target])}}},{key:"dragLeave",value:function(e){if(e.target.id){e.stopPropagation();var t=e.dataTransfer.getData("text"),n=document.getElementById(t);this.enableOrDisablePointerEventsOnChildrenOfElement(e.target,!0),e.target.classList.remove("isDropTarget"),this.triggerEvent("dragLeave",[n,e.target])}}},{key:"drop",value:function(e){if(e.preventDefault(),e.target.id){var t=e.dataTransfer.getData("text"),n=document.getElementById(t),a=e.target;a.classList.remove("isDropTarget");var i=document.createElement("div");n.parentElement.insertBefore(i,n),n.parentElement.insertBefore(n,a),n.parentElement.insertBefore(a,i),i.parentElement.removeChild(i),this.triggerEvent("drop",[n,a]),this.enableOrDisablePointerEventsOnChildrenOfElement(a,!0),this.updateSortOrder()}}},{key:"enableOrDisablePointerEventsOnChildrenOfElement",value:function(e,t){for(var n=e.children.length,a=1;a<n;a++){e.children[a].style.pointerEvents=!1===t?"none":null;for(var i=e.children.children,r=1;r<i;r++)this.enableOrDisablePointerEventsOnChildrenOfElement(e.children.children[a],t)}}},{key:"on",value:function(e,t){return this.eventMap.hasOwnProperty(e)||(this.eventMap[e]=[]),this.eventMap[e].push(t)}},{key:"triggerEvent",value:function(e,t){if(this.eventMap.hasOwnProperty(e))for(var n=this.eventMap[e].length,a=0;a<n;a++){var i=this.eventMap[e][a];t&&t.length>0?i.apply(this,t):i.call(this)}}}]),e}(),DocumentModel=function(){function e(){_classCallCheck(this,e),this.id=-1,this.path="",this.state=DOCUMENT_STATE_NEW,this.name="",this.sort_order=1,this.thumb_image_url="",this.small_image_url="",this.medium_image_url="",this.large_image_url="",this.documentable_id=-1,this.documentable_type="",this.upload_tracker_id=-1,this.created_at="",this.updated_at=""}return _createClass(e,null,[{key:"isValidDocumentJson",value:function(e){return e.hasOwnProperty("id")&&e.hasOwnProperty("path")&&e.hasOwnProperty("state")&&e.hasOwnProperty("name")&&e.hasOwnProperty("sort_order")&&e.hasOwnProperty("thumb_image_url")&&e.hasOwnProperty("small_image_url")&&e.hasOwnProperty("medium_image_url")&&e.hasOwnProperty("large_image_url")&&e.hasOwnProperty("documentable_id")&&e.hasOwnProperty("documentable_type")&&e.hasOwnProperty("created_at")&&e.hasOwnProperty("updated_at")}},{key:"fromJson",value:function(t){if(!e.isValidDocumentJson(t))return!1;var n=new e;return n.id=t.id,n.path=t.path,n.state=t.state,n.name=t.name,n.sort_order=t.sort_order,n.thumb_image_url=t.thumb_image_url,n.small_image_url=t.small_image_url,n.medium_image_url=t.medium_image_url,n.large_image_url=t.large_image_url,n.documentable_id=t.id,n.documentable_type=t.documentable_type,n.upload_tracker_id=t.upload_tracker_id,n.created_at=t.created_at,n.updated_at=t.updated_at,n}}]),e}(),DOCUMENT_STATE_NEW="new",DOCUMENT_STATE_PRISTINE="pristine",DOCUMENT_STATE_MODIFIED="modified",DOCUMENT_STATE_DELETED="deleted",FileList=function e(){for(var t,n=arguments.length,a=new Array(n),i=0;i<n;i++)a[i]=arguments[i];if(_classCallCheck(this,e),(a=(t=[]).concat.apply(t,_toConsumableArray(a))).length&&!a.every(function(e){return e instanceof File}))throw new TypeError("expected argument to FileList is File or array of File objects");var r=new ClipboardEvent("").clipboardData||new DataTransfer,o=!0,s=!1,l=void 0;try{for(var u,d=a[Symbol.iterator]();!(o=(u=d.next()).done);o=!0){var c=u.value;r.items.add(c)}}catch(e){s=!0,l=e}finally{try{o||null==d.return||d.return()}finally{if(s)throw l}}return r.files},FileDragAndDropHandler=function(){function e(t){_classCallCheck(this,e),this.hooks=[],this.selectButton=t.querySelector("button.select"),this.selectButton?(this.fileCatcherInput=t.querySelector('input[type="file"]'),this.fileCatcherInput?(this.makeElementRespondToDragOverAndLeave(t),this.makeElementRespondToDrop(t),this.makeElementRespondToClick(t),this.makeFileInputPassFilesToHooks()):console.log("FileDragAndDropHandler:constructor The document area must have file input. But did not have one. Not responding to drag and drop")):console.log("FileDragAndDropHandler:constructor The document area must have a button in it with class select. But did not have one. Not responding to drag and drop")}return _createClass(e,[{key:"makeFileInputPassFilesToHooks",value:function(){var e=this;this.fileCatcherInput.addEventListener("change",function(t){for(var n=t.target.files.length,a=0;a<n;a++){var i=t.target.files[a];e.createFileListForFileAndPassToHooks(i)}t.target.value=""})}},{key:"makeElementRespondToClick",value:function(e){var t=this;e.addEventListener("click",function(e){t.fileCatcherInput.click()})}},{key:"hookTo",value:function(e){"function"==typeof e.receiveFile?this.hooks.push(e):console.error('The given hookable does not have a required receiveFile method / function. Not hooking the given "hookable".')}},{key:"makeElementRespondToDrop",value:function(e){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?(e.removeEventListener("drop",this.drop.bind(this)),e.addEventListener("drop",this.drop.bind(this))):e.removeEventListener("drop",this.drop.bind(this)),this}},{key:"makeElementRespondToDragOverAndLeave",value:function(e){!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?(e.removeEventListener("dragover",this.dragOver.bind(this)),e.removeEventListener("dragleave",this.dragLeave.bind(this)),e.addEventListener("dragover",this.dragOver.bind(this)),e.addEventListener("dragleave",this.dragLeave.bind(this))):(e.removeEventListener("dragover",this.dragOver.bind(this)),e.removeEventListener("dragleave",this.dragLeave.bind(this)))}},{key:"dragOver",value:function(e){e.preventDefault(),e.stopPropagation(),e.target.id&&(this.enableOrDisablePointerEventsOnChildrenOfElement(e.target,!1),e.target.classList.add("isDropTarget"))}},{key:"dragLeave",value:function(e){e.target.id&&(e.stopPropagation(),this.enableOrDisablePointerEventsOnChildrenOfElement(e.target,!0),e.target.classList.remove("isDropTarget"))}},{key:"drop",value:function(e){e.preventDefault();var t=e.target;if(t.classList.remove("isDropTarget"),this.enableOrDisablePointerEventsOnChildrenOfElement(t,!0),e.preventDefault(),e.dataTransfer.items){for(var n=0;n<e.dataTransfer.items.length;n++)if("file"===e.dataTransfer.items[n].kind){var a=e.dataTransfer.items[n].getAsFile();this.createFileListForFileAndPassToHooks(a)}}else for(var i=0;i<e.dataTransfer.files.length;i++){var r=e.dataTransfer.files[i];this.createFileListForFileAndPassToHooks(r)}}},{key:"createFileListForFileAndPassToHooks",value:function(e){for(var t=this.hooks.length,n=0;n<t;n++)this.hooks[n].receiveFile(e)}},{key:"enableOrDisablePointerEventsOnChildrenOfElement",value:function(e,t){for(var n=e.children.length,a=1;a<n;a++){e.children[a].style.pointerEvents=!1===t?"none":null;for(var i=e.children.children,r=1;r<i;r++)this.enableOrDisablePointerEventsOnChildrenOfElement(e.children.children[a],t)}}}]),e}(),HTML5Uploader=function(){function e(t,n,a,i){_classCallCheck(this,e),this.constructedSuccessfully=!1,t?(this.uploadUrl=t,n?(this.maxPostSize=n,a?(this.maxUploadSize=a,i?(this.translations=JSON.parse(i),this.eventMap={},this.isSupported()?this.constructedSuccessfully=!0:console.warn("HTML 5 file upload is not supported. Not initializing Html5Uploader")):console.error("Did not get the translations. Not initializing Html5Uploader")):console.error("Did not get the maximum upload size. Not initializing Html5Uploader")):console.error("Did not get the maximum post size. Not initializing Html5Uploader")):console.error("Did not get a valid upload url. Not initializing Html5Uploader")}return _createClass(e,[{key:"isSupported",value:function(){return void 0!==window.FormData}},{key:"receiveFile",value:function(e){this.isSupported()||console.error("HTML 5 file upload is not supported. Not uploading file.")}},{key:"upload",value:function(e,t){if(this.verifyFileSizeOrShowError(e)&&!1!==this.constructedSuccessfully){var n=this,a=new FormData;a.append(e.name,e),a.append("extraData",t);var i=new XMLHttpRequest;i.upload.addEventListener("progress",function(e,t){return function(a){n.updateProgress(e,a,t)}}(e,t)),i.addEventListener("loadstart",function(e,t){return function(a){n.uploadStart(e,t)}}(e,t)),i.addEventListener("error",function(e,t){return function(a){n.uploadFailed(e,"general error",t)}}(e,t)),i.addEventListener("abort",function(e,t){return function(a){n.uploadCanceled(e,t)}}(e,t)),i.onreadystatechange=function(e,t){return function(){4===i.readyState&&(200===i.status?n.uploadComplete(e,i.responseText,t):n.uploadFailed(e,i.responseText,t))}}(e,t),i.open("POST",this.uploadUrl),i.setRequestHeader("X-Requested-With","XMLHttpRequest");var r=document.querySelector('meta[name="csrf-token"]');r?(i.setRequestHeader("X-CSRF-TOKEN",r.getAttribute("content")),i.send(a)):console.error('Not uploading file since not csrf-token could be found in a meta tag with name "csrf-token". Please add it')}}},{key:"verifyFileSizeOrShowError",value:function(e){if(e.size>this.maxPostSize||e.size>this.maxUploadSize){var t=e.size/1048576,n=(this.maxUploadSize>this.maxPostSize?this.maxPostSize:this.maxUploadSize)/1048576;t=Math.round(100*t)/100,n=Math.round(100*n)/100;var a=this.translations.file_to_big,i=this.translations.max_file_size_upload,r=this.translations.file_size_upload;return alert(a+"\n\n"+i+n+" MB\n"+r+t+" MB\n"),!1}return!0}},{key:"updateProgress",value:function(e,t,n){if(t.lengthComputable){var a=Math.ceil(t.loaded/t.total*100);this.triggerEvent("updateProgress",[e,a,n])}else this.triggerEvent("updateProgress",[e,null,n])}},{key:"uploadStart",value:function(e,t){this.triggerEvent("uploadStart",[e,t])}},{key:"uploadComplete",value:function(e,t,n){this.triggerEvent("uploadComplete",[e,t,n])}},{key:"uploadFailed",value:function(e,t){this.triggerEvent("uploadFailed",[e,t])}},{key:"uploadCanceled",value:function(e,t){this.triggerEvent("uploadCanceled",[e,t])}},{key:"on",value:function(e,t){if(!1!==this.constructedSuccessfully)return this.eventMap.hasOwnProperty(e)||(this.eventMap[e]=[]),this.eventMap[e].push(t)}},{key:"triggerEvent",value:function(e,t){if(this.eventMap.hasOwnProperty(e))for(var n=this.eventMap[e].length,a=0;a<n;a++){var i=this.eventMap[e][a];t&&t.length>0?i.apply(this,t):i.call(this)}}}]),e}(),ImageController=function(){function e(t,n,a){_classCallCheck(this,e),this.key=t,this.currentImageListId="#image-list-"+t,this.fileCounter=0,this.maxImages=a,this.images=n,this.initialize(),this.checkNewButtonState()}return _createClass(e,[{key:"initialize",value:function(){var e=this;$(e.currentImageListId+" .image-thumb-li").click(function(){$(this).remove(),e.removeFromImages($("img",this).attr("data-image-id"))}),$(document).on("click",e.currentImageListId+" .new-image input",function(t){""!=e.maxImages&&e.countActiveImages()>=e.maxImages&&t.preventDefault()}),$(document).on("change",e.currentImageListId+" .new-image input",function(){if(!(""!=e.maxImages&&e.countActiveImages()>=e.maxImages)){var t=$("#"+e.key+"-"+e.fileCounter);$(e.currentImageListId+" .uploads").append(t),e.images.push({id:null,name:t.attr("id"),delete:!1}),e.updateImages(),t.unbind("change");for(var n=t.prop("files"),a=0;a<n.length;a++)e.insertImage(n[a],e.fileCounter,a);e.fileCounter++,$(e.currentImageListId+" .new-image").append('<input type="file" id="'+e.key+"-"+e.fileCounter+'" name="'+e.key+"-"+e.fileCounter+'" accept="image/*" />')}}),this.checkNewButtonState()}},{key:"insertImage",value:function(e,t,n){var a=this,i=new FileReader;i.onload=function(e){var i=e.target.result;$(a.currentImageListId+" .thumbs").append('<li id="image-thumb-'+this.key+"-"+t+"-"+n+'"><img src="'+i+'" /><div class="deleteImage">тип</div></li>');var r=$("#image-thumb-"+a.key+"-"+t+"-"+n);r.click(function(){a.removeFromImages(a.key+"-"+t),r.remove();var e=$("#"+a.key+"-"+t);e.val(""),e.remove()})},this.checkNewButtonState(),i.readAsDataURL(e)}},{key:"checkNewButtonState",value:function(){var e=$(self.currentImageListId+" .new-image");void 0!==this.maxImages&&this.countActiveImages()>=this.maxImages?e.hide():e.show()}},{key:"updateImages",value:function(){var e=JSON.stringify(this.images,null,2);$("#"+this.key).val(e),this.checkNewButtonState()}},{key:"countActiveImages",value:function(){for(var e=0,t=0;t<this.images.length;t++)this.images[t].delete||e++;return e}},{key:"removeFromImages",value:function(e){for(var t=0;t<this.images.length;t++){if(this.images[t].name==e)return this.images.splice(t,1),void this.updateImages();if(this.images[t].id==e)return this.images[t].delete=!0,void this.updateImages()}}}]),e}(),MultiSelect=function(){function e(t){if(_classCallCheck(this,e),this.attributeKey=t.dataset.key,this.value=t.querySelector('[name="'+this.attributeKey+'"]').value,this.input=document.getElementById(this.attributeKey),this.openbutton=document.getElementById(this.attributeKey+"-open"),this.autoCompleteSelectField=document.getElementById(this.attributeKey+"-fake"),this.itemsWrapper=document.getElementById(this.attributeKey+"_items"),this.autoSaveUrl=t.dataset.autosaveUrl,this.maxItemsToSelect=t.dataset.maxItemsToSelect,this.selectOptions=e._buildSelectOptionsFromObject(JSON.parse(t.dataset.items)),this.dataSet=e._buildDataSetFromSelectOptions(this.selectOptions),this.sortable=t.dataset.sortable,this.sortable){var n=this;this.dragElement=null,this.itemsWrapper.addEventListener("dragstart",function(e){n.dragElement=e.target,e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("Text",n.dragElement.textContent),n.itemsWrapper.addEventListener("dragover",n._onDragOver.bind(n),!1),n.itemsWrapper.addEventListener("dragend",n._onDragEnd.bind(n),!1),setTimeout(function(){n.dragElement.classList.add("ghost")},0)},!1)}this._makeMultiSelect(),this._addItems(),this._updateRealInput(),this._enableListeners(!0),this._enableOpenButton()}return _createClass(e,[{key:"_enableListeners",value:function(e){this.listenersEnabled=e;for(var t=this.itemsWrapper.children.length,n=0;n<t;n++){var a=this.itemsWrapper.children[n];a.dataset.id;a.classList.remove("readonly"),this.autoCompleteSelectField.classList.remove("hidden"),e||(a.classList.add("readonly"),this.autoCompleteSelectField.classList.add("hidden"),this.openbutton.classList.add("hidden"))}}},{key:"_addItems",value:function(){for(var e=this.value.split(","),t=this.dataSet.length,n=0;n<e.length;n++)for(var a=parseInt(e[n]),i=0;i<t;i++){var r=this.dataSet[i];if(r.id===a){this._addItem(r.id,r.value);break}}}},{key:"_makeMultiSelect",value:function(){var e=this,t=document.getElementById(this.attributeKey+"-fake");$(t).autocomplete({source:this.dataSet,minLength:0,focus:function(e,t){return!1},select:function(t,n){return $(this.autoCompleteSelectField).val(""),e._addItem(n.item.id,n.item.value),e._updateRealInput(),e._autosaveIfNeeded(),e._enableListeners(!0),!1}})}},{key:"_addItem",value:function(e,t){var n=this;if(!(this._itemsCount()>n.maxItemsToSelect)){var a=document.createElement("p");a.classList.add("item"),this.sortable&&(a.draggable=!0,t='<span class="drag-icon"></span><span class="text">'+t+"</span>"),a.innerHTML=t;var i,r=document.createElement("span");r.classList.add("remove"),a.dataset.id=e,a.dataset.sort_order=this._itemsCount(),r.addEventListener("click",(i=e,function(){n.listenersEnabled&&n._removeItem(i)})),this.itemsWrapper.appendChild(a),a.appendChild(r)}}},{key:"_enableOpenButton",value:function(){var e=this;this.openbutton.addEventListener("click",function(t){$(e.autoCompleteSelectField).autocomplete("search","")})}},{key:"_itemsCount",value:function(){return this.itemsWrapper.childNodes.length}},{key:"_removeItem",value:function(e){for(var t=this.itemsWrapper.children,n=0;n<t.length;n++){var a=t[n];if(parseInt(a.dataset.id)===e){this.itemsWrapper.removeChild(a);break}}this._updateRealInput(),this._autosaveIfNeeded()}},{key:"_updateRealInput",value:function(){for(var e=[],t=this.itemsWrapper.children,n=this.itemsWrapper.children.length,a=0;a<n;a++){var i=t[a];e[e.length]=i.dataset.id}var r=e.join(",");this.input.setAttribute("value",r);var o=document.createEvent("Event");o.initEvent("change",!1,!0),this.input.dispatchEvent(o)}},{key:"_autosaveIfNeeded",value:function(){if(this.autoSaveUrl){var e=this.input.getAttribute("value"),t=this;$.ajax({type:"POST",url:this.autoSaveUrl,data:{itemIds:e},success:function(e,n,a){200===a.status?console.log("autosave successfull to url: "+t.autoSaveUrl):(console.error("autosave failure to url (no code 200): "+t.autoSaveUrl),console.error(e))},error:function(e){console.error("autosave failure to url: "+t.autoSaveUrl),console.error(e)},headers:{"X-CSRF-TOKEN":$('meta[name="csrf-token"]').attr("content")},dataType:"json"})}}},{key:"_onDragOver",value:function(e){e.preventDefault(),e.dataTransfer.dropEffect="move";var t=e.target;t&&t!==this.dragElement&&"P"===t.nodeName&&this.itemsWrapper.insertBefore(this.dragElement,t.nextSibling||t)}},{key:"_onDragEnd",value:function(e){e.preventDefault(),this.dragElement.classList.remove("ghost"),this.itemsWrapper.removeEventListener("dragover",this.onDragOver,!1),this.itemsWrapper.removeEventListener("dragend",this.onDragEnd,!1),console.log("dragEnd"),this._updateRealInput()}}],[{key:"_buildSelectOptionsFromObject",value:function(e){for(var t=[],n=e.length,a=0;a<n;a++){var i=SelectOption.fromObject(e[a]);i&&t.push(i)}return t}},{key:"_buildDataSetFromSelectOptions",value:function(e){for(var t=[],n=e.length,a=0;a<n;a++)t.push({id:e[a].value,value:e[a].htmlContent.replace(/&nbsp;/gi,".")});return t}}]),e}(),SelectOption=function(){function e(){_classCallCheck(this,e),this._value="",this._content="",this._htmlContent="",this.toJSON=this._toJson.bind(this)}return _createClass(e,[{key:"_toJson",value:function(){return{value:this._value,content:this._content,htmlContent:this._htmlContent}}},{key:"value",get:function(){return this._value},set:function(e){"string"==typeof e?this._value=e:console.error("SelectOption::Value must be a string")}},{key:"content",get:function(){return this._content},set:function(e){"string"==typeof e?this._content=e:console.error("SelectOption::Content must be a string")}},{key:"htmlContent",get:function(){return this._htmlContent},set:function(e){"string"==typeof e?this._htmlContent=e:console.error("SelectOption::htmlContent must be a string")}}],[{key:"fromObject",value:function(e){if(this._objectRepresentsSelectOption(e)){var t=new this;return t._value=e.value,t._content=e.content,t._htmlContent=e.htmlContent,t}}},{key:"_objectRepresentsSelectOption",value:function(e){return!!("object"===_typeof(e)&&e.hasOwnProperty("value")&&e.hasOwnProperty("content")&&e.hasOwnProperty("htmlContent"))||(console.error("SelectOption::_objectRepresentsSelectOption: This does not represent an select option. It must be an object containing properties: value, content and htmlContent",e),!1)}}]),e}(),OnOff=function(){function e(t){if(_classCallCheck(this,e),void 0!==t&&"DIV"===t.tagName)if(this._onOffElementWrapper=t,"key"in t.dataset){var n=t.querySelector('input[type="checkbox"]');if(n){this._realCheckbox=n;var a=t.querySelector(".on-off-switch");a?(this._visibleCheckbox=a,this._visibleCheckbox.addEventListener("click",this.toggleOnOffSwitch.bind(this)),this.initialize()):console.error("OnOff:constructor Did not find a required div with class on-off-switch in the OnOff attribute wrapper.")}else console.error("OnOff:constructor Did not find a required input of type checkbox in the OnOff attribute wrapper.")}else console.error("OnOff:constructor Missing the key dataset property on the onOffElementWrapper");else console.error("OnOff:constructor Missing the expected div element that represents the OnOff attribute wrapper.")}return _createClass(e,[{key:"initialize",value:function(){this.updateOnOffState()}},{key:"updateOnOffState",value:function(){"1"===this._realCheckbox.value?(this._realCheckbox.value="1",this._visibleCheckbox.classList.add("on"),this._realCheckbox.setAttribute("checked","")):(this._realCheckbox.value="0",this._visibleCheckbox.classList.remove("on"),this._realCheckbox.removeAttribute("checked"))}},{key:"toggleOnOffSwitch",value:function(){this._realCheckbox.value="0"===this._realCheckbox.value?"1":"0",this.updateOnOffState();var e=document.createEvent("Event");e.initEvent("change",!1,!0),this._realCheckbox.dispatchEvent(e)}}]),e}(),PasswordController=function(){function e(t,n,a,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:6,o=arguments.length>5&&void 0!==arguments[5]&&arguments[5];_classCallCheck(this,e),this.wrapperHasTitleAttributeAndErrorClass=o,this.wrapper=document.querySelector(n),this.saveButton=document.querySelector("#"+i),this.firstPasswordInput=this.wrapper.querySelector("input[name="+t+"-1]"),this.secondPasswordInput=this.wrapper.querySelector("input[name="+t+"-2]"),this.realPasswordInput=this.wrapper.querySelector("input[name="+t+"]"),this.validationMessageWrapperSelector=".validationHelper",this.validationMessageWrapper=this.wrapper.querySelector(this.validationMessageWrapperSelector),this.minPasswordLength=r,this.letter=this.validationMessageWrapper.querySelector(".letter"),this.capital=this.validationMessageWrapper.querySelector(".capital"),this.number=this.validationMessageWrapper.querySelector(".number"),this.length=this.validationMessageWrapper.querySelector(".length"),this.match=this.validationMessageWrapper.querySelector(".match"),this.activateListeners(!0)}return _createClass(e,[{key:"activateListeners",value:function(e){var t=this,n=this.validationMessageWrapper;e?(this.firstPasswordInput.addEventListener("keyup",t.debounce(function(){t.passwordChanged()},100)),this.secondPasswordInput.addEventListener("keyup",t.debounce(function(){t.passwordChanged()},100)),this.firstPasswordInput.addEventListener("focus",function(){n.classList.contains("active")||n.classList.add("active")}),this.secondPasswordInput.addEventListener("focus",function(){n.classList.contains("active")||n.classList.add("active")}),this.firstPasswordInput.addEventListener("blur",function(){n.classList.contains("active")&&n.classList.remove("active")}),this.secondPasswordInput.addEventListener("blur",function(){n.classList.contains("active")&&n.classList.remove("active")})):(this.firstPasswordInput.removeEventListener("keyup",t.debounce),this.secondPasswordInput.removeEventListener("keyup",t.debounce),this.firstPasswordInput.removeEventListener("focus"),this.secondPasswordInput.removeEventListener("focus"),this.firstPasswordInput.removeEventListener("blur"),this.secondPasswordInput.removeEventListener("blur"))}},{key:"passwordChanged",value:function(){console.log("password changed");var e=this.firstPasswordInput.value,t=this.secondPasswordInput.value,n=this.validate(e,t);console.log(n),this.realPasswordInput.value=n?t:"",this.enableValidMessage(n),this.enableSaveButton(n),this.removeWrapperError()}},{key:"enableValidMessage",value:function(e){var t=this.validationMessageWrapper;e?t.classList.contains("valid")||t.classList.add("valid"):t.classList.contains("valid")&&t.classList.remove("valid")}},{key:"enableSaveButton",value:function(e){console.log(e),e?this.saveButton.classList.contains("disabled")&&this.saveButton.classList.remove("disabled"):this.saveButton.classList.contains("disabled")||this.saveButton.classList.add("disabled")}},{key:"removeWrapperError",value:function(){this.wrapperHasTitleAttributeAndErrorClass&&(this.wrapper.hasAttribute("title")&&this.wrapper.setAttribute("title",""),this.wrapper.classList.contains("error")&&this.wrapper.classList.remove("error"))}},{key:"validate",value:function(e,t){var n=!0;e.match(/[a-z]/g)?(this.letter.classList.remove("invalid"),this.letter.classList.add("valid")):(this.letter.classList.remove("valid"),this.letter.classList.add("invalid"),n=!1);e.match(/[A-Z]/g)?(this.capital.classList.remove("invalid"),this.capital.classList.add("valid")):(this.capital.classList.remove("valid"),this.capital.classList.add("invalid"),n=!1);return e.match(/[0-9]/g)?(this.number.classList.remove("invalid"),this.number.classList.add("valid")):(this.number.classList.remove("valid"),this.number.classList.add("invalid"),n=!1),e.length>=this.minPasswordLength?(this.length.classList.remove("invalid"),this.length.classList.add("valid")):(this.length.classList.remove("valid"),this.length.classList.add("invalid"),n=!1),e!==t||""===e&&""===t?(this.match.classList.remove("valid"),this.match.classList.add("invalid"),n=!1):(this.match.classList.remove("invalid"),this.match.classList.add("valid")),n}},{key:"debounce",value:function(e,t,n){var a;return function(){var i=this,r=arguments,o=n&&!a;clearTimeout(a),a=setTimeout(function(){a=null,n||e.apply(i,r)},t),o&&e.apply(i,r)}}}]),e}(),Select=function(){function e(t){if(_classCallCheck(this,e),void 0!==t&&"DIV"===t.tagName)if(this._selectElementWrapper=t,"key"in t.dataset){var n=t.dataset.key,a=t.querySelector('select[name="'+n+'"]');a?(this._realInput=a,this.initialize(n)):console.error('SelectElement:constructor Did not find a required hidden select with name "'+n+'" in the VideoElementWrapper.')}else console.error("SelectElement:constructor Missing the key dataset property on the selectElementWrapper");else console.error("SelectElement:constructor Missing the expected div element that represents the selectElementWrapper.")}return _createClass(e,[{key:"initialize",value:function(e){var t=this,n=this._selectElementWrapper.querySelector(".select-menu"),a={width:"100%",create:function(e,t){var n=this.id+"-button";this.id;document.getElementById(n).setAttribute("dusk",this.id)},open:function(e,t){var n=document.getElementById(this.id+"-button"),a=document.getElementById(this.id+"-menu");a.style.width=n.offsetWidth+"px",a.parentNode.style.width=n.offsetWidth+"px",n.classList.add("dropdown-open")},change:function(e,n){var a=document.getElementById(this.id+"-button"),i=a.querySelector(".ui-selectmenu-text").innerHTML;a.querySelector(".ui-selectmenu-text").innerHTML=i.replace(/&nbsp;/gi,"");var r=document.createEvent("Event");r.initEvent("change",!1,!0),t._realInput.dispatchEvent(r)},close:function(e,t){document.getElementById(this.id+"-button").classList.remove("dropdown-open")}};$(n).selectmenu(a).data("ui-selectmenu")._renderItem=function(e,t){var a=$("<li>"),i=$("<div>",{title:t.element.attr("title")});return t.disabled&&this._addClass(a,null,"ui-state-disabled"),this._setText(i,t.label),$(a).attr("dusk",n.id+"-"+t.value),a.append(i).appendTo(e)}}}]),e}(),styleClassController=function(){function e(t){_classCallCheck(this,e),this.constructedSuccessFully=!1,!t instanceof HTMLElement?console.error("styleClassController: The given htmlElement must be, but was not a HTMLElement"):(this.htmlElement=t,this.classCounts={},this.constructedSuccessFully=!0)}return _createClass(e,[{key:"requestAddClass",value:function(e){return this.htmlElement.classList.contains(e)||this.htmlElement.classList.add(e),this.classCounts.hasOwnProperty(e)||(this.classCounts[e]=0),this.classCounts[e]++,!0}},{key:"requestRemoveClass",value:function(e){if(!this.htmlElement.classList.contains(e)||!this.classCounts.hasOwnProperty(e))return!1;this.classCounts[e]--,0===this.classCounts[e]&&(delete this.classCounts[e],this.htmlElement.classList.remove(e))}}]),e}(),Video=function(){function e(t){if(_classCallCheck(this,e),void 0!==t&&"DIV"===t.tagName)if(this._videoElementWrapper=t,"key"in t.dataset){var n=t.dataset.key,a=t.querySelector('input[name="'+n+'"]');if(a){this._realInput=a;var i=t.querySelector('input[name="'+n+'_autoplay"]');if(i){this._realCheckbox=i;var r=t.querySelector('input[name="'+n+'_video_id"]');r?(this._videoIdInput=r,this._videoWatchPath="https://www.youtube.com/watch?v={videoInputValue}",this._videoImgPath="https://img.youtube.com/vi/{videoInputValue}/0.jpg",this.initialize(),this.enableEventListeners()):console.error('VideoElement:constructor Did not find a required input of type text with name "'+n+'_video_id" in the VideoElementWrapper.')}else console.error('VideoElement:constructor Did not find a required checkbox input of type checkbox with name "'+n+'_autoplay" in the VideoElementWrapper.')}else console.error('VideoElement:constructor Did not find a required hidden input with name "'+n+'" in the VideoElementWrapper.')}else console.error("VideoElement:constructor Missing the key dataset property on the videoElementWrapper");else console.error("VideoElement:constructor Missing the expected div element that represents the VideoElementWrapper.")}return _createClass(e,[{key:"enableEventListeners",value:function(){this._videoIdInput.addEventListener("keyup",this.updateRealInput.bind(this)),this._realCheckbox.addEventListener("change",this.updateRealInput.bind(this))}},{key:"updateRealInput",value:function(e){var t=!0===this._realCheckbox.checked?"1":"0",n=this._videoIdInput.value;this._realInput.value=t+","+n,this.updateThumbnail(n)}},{key:"updateThumbnail",value:function(e){var t=this._videoElementWrapper.querySelector(".js-video-link"),n=this._videoElementWrapper.querySelector(".js-video-thumb");if(!isset(e)||""===e)return n.removeAttribute("src"),void t.removeAttribute("href");var a=this._getYoutubePath(e);n.setAttribute("src",a),t.setAttribute("href",this._getYoutubePath(e,"watch"))}},{key:"_getYoutubePath",value:function(e){switch(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"thumbnail"){case"thumbnail":return this._videoImgPath.replace("{videoInputValue}",e);case"watch":return this._videoWatchPath.replace("{videoInputValue}",e);default:return console.alert("VideoElement:_getPath Type rule not defined"),""}}},{key:"initialize",value:function(){if(""!==this._realInput.value){var e=this._realInput.value.split(",");e.length<2&&console.error("VideoElement:initialize Could not initialize a video element because it received an invalid value: ",this._realInput.value);var t=e[0],n=e[1];this._videoIdInput.value=n,this.updateThumbnail(n),this._realCheckbox.checked="1"===t}}}]),e}();