UNPKG

iterate-node

Version:
4 lines (3 loc) 11 kB
/* iterateNode0.3.82 2018-09-07 */ !function(){function a(a){var b=document.createElement("select");b.classList.add("iterate-node__hide");for(var c in z){var d=document.createElement("option");d.value=c,b.options.add(new Option(z[c].label,c))}return b}function b(a){function b(b){if(!h&&b.target.classList.contains("iterate-node__drag")&&m(a,b.target)){h=!0;var c=b.target.parentElement,d=c.cloneNode(!0);d.querySelector("ul")&&d.removeChild(d.querySelector("ul")),i.push({original:c,clone:d});for(var e in i)j.appendChild(i[e].clone);j.style.transform="translate("+b.x+"px,"+b.y+"px)"}}function c(b){if(h&&m(a,b.target)){e=b.target;var c=e.nodeName.toLowerCase(),d=e.parentElement.nodeName.toLowerCase();if(f="li"==c?e:"li"==d?e.parentElement:!1){document.querySelector("ul.iterate-node__enlight-ul")&&document.querySelector("ul.iterate-node__enlight-ul").classList.remove("iterate-node__enlight-ul");var g=0;if("ul"==c){f.querySelector(".iterate-node__caret");g=f.offsetHeight,e.classList.add("iterate-node__enlight-ul")}j.style.transform="translate("+(b.x+1)+"px,"+(b.y+1)+"px)";var i=y(f);k.style.width=f.offsetWidth+i.left+"px",k.style.transform="translate(0,"+(i.top+g)+"px)"}}}function d(b){if(h){if(m(a,b.target)&&f)for(var c in i){var d=i[c].original;if(d!=f&&!m(d,f)){var g=d[A.dataKeyOnDOM].key,l=d[A.dataKeyOnDOM].value;t(d);var n="ul"==e.nodeName.toLowerCase()?!1:f,o="undefined"==typeof f[A.dataKeyOnDOM].key||"ul"==e.nodeName.toLowerCase()?f:f.parentElement.parentElement;p(o,n,l,g,d)}}document.querySelector("ul.iterate-node__enlight-ul")&&document.querySelector("ul.iterate-node__enlight-ul").classList.remove("iterate-node__enlight-ul"),h=!1,j.innerHTML="",i=[],f=null,j.style.transform="translate(-9999px,-9999px)",k.style.transform="translate(-9999px,-9999px)"}}var e,f,g=this,h=!1,i=[],j=document.querySelector(".iterate_node__dummy");j||(j=document.createElement("div"),j.classList.add("iterate_node__dummy"),document.body.appendChild(j));var k=document.querySelector(".iterate-node__drag-position");k||(k=document.createElement("div"),k.classList.add("iterate-node__drag-position"),document.body.appendChild(k));var l=function(){function e(a){var c={x:a.pageX,y:a.pageY,target:a.target};b(c),document.addEventListener("mouseup",f),document.addEventListener("mousemove",h)}function f(a){var b={x:a.pageX,y:a.pageY,target:a.target};d(b),document.removeEventListener("mouseup",f),document.removeEventListener("mousemove",h)}function h(a){var b={x:a.pageX,y:a.pageY,target:a.target};c(b)}a.addEventListener("mousedown",e),g.destroy=function(){a.removeEventListener("mousedown",e)}},n=function(){function e(a){var c={x:a.changedTouches[0].pageX,y:a.changedTouches[0].pageY,target:a.target};b(c),document.addEventListener("touchend",h,!1),document.addEventListener("touchmove",f,!1)}function f(a){var b={x:a.changedTouches[0].pageX,y:a.changedTouches[0].pageY,target:document.elementFromPoint(a.changedTouches[0].pageX,a.changedTouches[0].pageY)};c(b)}function h(a){var b={x:a.changedTouches[0].pageX,y:a.changedTouches[0].pageY,target:a.target};d(b),document.removeEventListener("touchend",h),document.removeEventListener("touchmove",f,{passive:!1})}a.addEventListener("touchstart",e,{passive:!0}),g.destroy=function(){a.removeEventListener("touchstart",e)}};/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)?n():l()}function c(a,b){function c(c){g[A.dataKeyOnDOM]={value:c,alias:a},A.alias&&e(g,A.alias(a)),A.contentEditable.add&&d(g),f.appendChild(g),b(f)}var f=document.createElement("ul"),g=document.createElement("li");A.map?A.map({value:a},c):c(a)}function d(a,b){var c=document.createElement("span");c.classList.add("iterate-node__add-item"),c.textContent="+",c.addEventListener("click",function(a){p(a.target.parentElement,null,null,void 0,null)}),a.appendChild(c)}function e(a,b){var c=document.createElement("span");c.classList.add("iterate-node__alias"),c.innerHTML=b,a.appendChild(c)}function f(a){var b=document.createElement("span");b.classList.add("iterate-node__caret"),b.addEventListener("click",v),a.appendChild(b)}function g(a){var b=document.createElement("span");b.className="iterate-node__delete-item",b.innerText="-",b.addEventListener("click",function(a){t(a.target.parentElement)}),a.appendChild(b)}function h(a){var b=document.createElement("span");b.classList.add("iterate-node__drag"),b.innerText="D",a.appendChild(b)}function i(a,b,c,d){var e=document.createElement("span");e.classList.add("iterate-node__key"),e.innerText=b,A.contentEditable.key&&!Array.isArray(c)&&(e.setAttribute("contenteditable","true"),e.addEventListener("blur",q.bind(null,!0))),a.appendChild(e)}function j(b,c,d){var e=document.createElement("span");if(e.classList.add("iterate-node__type-node"),e.innerText=c,b.appendChild(e),A.contentEditable.type){e.addEventListener("click",r);var f=a();b.appendChild(f),f.addEventListener("blur",s.bind(null))}}function k(a){var b=document.createElement("span");b.innerText=":",b.classList.add("iterate-node__separator"),a.appendChild(b)}function l(a,b){var c=document.createElement("span");c.classList.add("iterate-node__value"),c.textContent=""+b,A.contentEditable.value&&(c.setAttribute("contenteditable","true"),c.addEventListener("blur",q.bind(null,!1))),a.appendChild(c)}function m(a,b){for(var c=b.parentNode;null!=c;){if(c==a)return!0;c=c.parentNode}return!1}function n(a,d){var e=this;return A=e.defaults=d?o(d,A,!0):A,e.state=A.obj,e.methods=B,u({value:A.obj},function(d){c(A.obj,function(c){c.children[0].appendChild(d),a.className+=" iterateNode-obj",a.appendChild(c),A.contentEditable.drag&&b.call(e,a)})}),e}function o(a,b,c){var d=Array.isArray(b)?[]:{};for(var e in b){var f=Object.prototype.toString.call(b[g]);"[object Object]"!=f&&"[object Array]"!=f||!b[e]?d[e]=a[e]||b[e]:d[e]=a[e]?o(a[e],b[e],c):b[e]}if(c)for(var g in a)d[g]=d[g]||a[g];return d}function p(a,b,c,d,e,f){var g=a[A.dataKeyOnDOM].value,h=a.querySelector("ul"),i=a.querySelector(".iterate-node__caret");i&&(h||(i.click(),h=a.querySelector("ul")),i.classList.contains("open")||i.classList.add("open"));var j;if(Array.isArray(g))if("undefined"==typeof d&&(c="value",d=g.length),b){j=Array.prototype.indexOf.call(b.parentElement.children,b);for(var k=b.parentElement.children.length,l=j;k>l;l++){var m=b.parentElement.children[l];m[A.dataKeyOnDOM].key=l+1,m.querySelector(".iterate-node__key").innerText=l+1}g.splice(j,0,c),e&&(e.querySelector(".iterate-node__key").innerText=j,e[A.dataKeyOnDOM].key=j),d=j}else e&&(e.querySelector(".iterate-node__key").innerText=g.length,e[A.dataKeyOnDOM].key=g.length),g[g.length]=c;else{if("undefined"==typeof d){var n=0;for(var o in g)if(0===o.indexOf("newItem")){var p=Number(o.replace("newItem",""));n=!isNaN(p)&&p>n?p:n}c="value",d="newItem"+(n+1)}else{for(d="number"==typeof d?"0"+d:d;Object.keys(g).indexOf(d)>-1;)d+=Math.floor(9007199254740991*Math.random());e&&(e.querySelector(".iterate-node__key").innerText=d,e[A.dataKeyOnDOM].key=d)}if(b){w(g,d,c,b[A.dataKeyOnDOM].key);for(var q=h.children,r=0;r<q.length;r++){var s=q[r][A.dataKeyOnDOM];s.value=g[s.key],s.parentElement=g}}else g[d]=c}e&&(e[A.dataKeyOnDOM].parentElement=g);var t=e?e:x(d,c,g,f||null);b?b.parentElement.insertBefore(t,b):h.appendChild(t),A.addElementListener&&A.addElementListener(t[A.dataKeyOnDOM],a[A.dataKeyOnDOM],b?b[A.dataKeyOnDOM]:!1)}function q(a,b){var c=b.target,d=c.parentElement,e=d[A.dataKeyOnDOM].key,f=d[A.dataKeyOnDOM].value,g=Object.prototype.toString.call(f),h=d[A.dataKeyOnDOM].parentElement,i=c.innerText;if(a){if(i==e)return;for(;Object.keys(h).indexOf(i)>-1;)i+=Math.floor(9007199254740991*Math.random());var j=d.nextElementSibling;d[A.dataKeyOnDOM].key=i,c.innerText=i,j?(w(h,i,f,j[A.dataKeyOnDOM].key),delete h[e]):(delete h[e],h[i]=d[A.dataKeyOnDOM].value),A.changeKeyListener&&A.changeKeyListener(d[A.dataKeyOnDOM])}else{if(i==f)return;switch(g){case"[object Number]":i=isNaN(Number(i))?0:Number(i);break;case"[object Boolean]":i="true"==i.toLowerCase();break;case"[object Null]":return void(c.innerText="null")}h[e]=i,d[A.dataKeyOnDOM].value=i,c.innerText=i,A.changeValueListener&&A.changeValueListener(d[A.dataKeyOnDOM])}}function r(a){a.target.classList.add("iterate-node__hide"),a.target.nextElementSibling.classList.remove("iterate-node__hide")}function s(a){var b=a.target.parentElement,c=b[A.dataKeyOnDOM].key,d=b[A.dataKeyOnDOM].parentElement,e=z[a.target.value].converter(),f=x(c,e,d);b.parentElement.replaceChild(f,b),d[c]=e,A.changeTypeListener&&A.changeTypeListener(f[A.dataKeyOnDOM])}function t(a){var b=a.parentElement.parentElement[A.dataKeyOnDOM].value,c=a[A.dataKeyOnDOM].key;if(Array.isArray(b)){for(var d=a.parentElement,e=Array.prototype.indexOf.call(d.children,a),f=d.children.length,g=e+1;f>g;g++){var h=d.children[g];h[A.dataKeyOnDOM].key=g-1,h.querySelector(".iterate-node__key").innerText=g-1}b.splice(e,1)}else delete b[c];A.removeElementListener&&A.removeElementListener(a[A.dataKeyOnDOM]),a.parentElement.removeChild(a)}function u(a,b){var c=document.createElement("ul");if(A.map)A.map(a,function(a){for(var b in a)c.appendChild(x(a.key||b,a[b].value,a,a[b].alias))}),b(c);else{for(var d in a.value)c.appendChild(x(d,a.value[d],a.value));b(c)}}function v(a){var b=a.target,c=b.parentElement,d=c.querySelector("ul");if(!d){var e=c[A.dataKeyOnDOM];u(e,function(a){c.appendChild(a)})}b.classList.toggle("open")}function w(a,b,c,d){var e=JSON.parse(JSON.stringify(a));for(var f in a)delete a[f];for(var g in e)g==d?(a[b]=c,a[g]=e[g]):a[g]=e[g]}function x(a,b,c,m){var n=Object.prototype.toString.call(b),o=document.createElement("li");if(o[A.dataKeyOnDOM]={key:a,value:b,parentElement:c,alias:m},A.contentEditable.drag&&h(o),i(o,a,c,n),j(o,n,a),k(o),A.alias&&e(o,A.alias(m)),b&&"object"==typeof b?(f(o),A.contentEditable.add&&d(o)):A.alias||l(o,b,n),A.contentEditable["delete"]&&g(o),Object.keys(A.appendElements).length)for(var p in A.appendElements)A.appendElements[p](a,b);return o}function y(a){var b={top:0,left:0},c=document.documentElement,d=window,e="undefined";return typeof a.getBoundingClientRect!==e&&(b=a.getBoundingClientRect()),{top:b.top+(d.pageYOffset||c.scrollTop)-(c.clientTop||0),left:b.left+(d.pageXOffset||c.scrollLeft)-(c.clientLeft||0)}}var z={"[object Number]":{label:"number",converter:function(){return Number()}},"[object String]":{label:"string",converter:function(){return String()}},"[object Boolean]":{label:"boolean",converter:function(){return Boolean()}},"[object Array]":{label:"list of values",converter:function(a){return[]}},"[object Object]":{label:"list of elements",converter:function(a){return{}}},"[object Null]":{label:"null",converter:function(a){return null}}},A={separator:".",contentEditable:{add:!1,"delete":!1,key:!1,value:!1,selection:!1,drag:!1,type:!1},appendElements:{},map:!1,dataKeyOnDOM:"__iterate-node-data__"},B={addElement:p,changeKeyOrValue:q,changeType:s,deleteElement:t,openObject:v,iteration:u,template:x};window.iterateNode=n}(); //# sourceMappingURL=iterateNode.min.js.map