ArenMg/src/main/webapp/assets/js/utils.min.js
2021-04-16 11:34:24 +03:00

13 lines
4.7 KiB
JavaScript

function decycle(a,b=[]){if(!a||"object"!==typeof a)return a;if(b.includes(a))return null;let c=b.concat([a]);return Array.isArray(a)?a.map(a=>decycle(a,c)):Object.assign(new a.constructor,Object.fromEntries(Object.entries(a).map(([a,b])=>[a,decycle(b,c)])))}function vueLoader(a){return httpVueLoader("assets/js/"+a+".vue")}Array.prototype.remove=function(a){a=this.indexOf(a);return-1!==a?(this.splice(a,1),!0):!1};
Array.prototype.compare=function(a){if(this===a)return 0;let b=Math.max(this.length,a.length);for(let c=0;c<b;c++){if(void 0===this[c]||void 0!==a[c]&&this[c]<a[c])return-1;if(void 0===a[c]||void 0!==this[c]&&this[c]>a[c])return 1}return 0};Array.prototype.includes||(Array.prototype.includes=function(a){return-1!==this.indexOf(a)});String.prototype.includes||(String.prototype.includes=function(a){return-1!==this.indexOf(a)});
Node.prototype.getChildPathTo=function(a){if(a===this)return"";let b=-1,c=a.parentNode.childNodes.length,d;for(;b<c&&d!==a;)b++,d=a.parentNode.childNodes[b];return a.parentNode===this?b:this.getChildPathTo(a.parentNode)+"/"+b};
Node.prototype.childPathSelector=function(a){a.constructor!==String&&(a+="");a=a.split("/");var b=this;let c=a.length;for(let d=0;d<c;d++)b.childNodes.length>a[d]?b=b.childNodes[a[d]]:console.warn("Warning : impossible to find child number "+a[d]+". The return child may be wrong.",this,b);return b};
Node.prototype.forEachNode=function(a,b=this,c=!1,d=[]){if(c&&this===b)return null;!c&&a&&a(this,[...d],b);c||null===this.firstChild?null!==this.nextSibling?(d[d.length-1]++,this.nextSibling.forEachNode(a,b,!1,d)):(d.pop(),this.parentNode.forEachNode(a,b,!0,d)):(d.push(0),this.firstChild.forEachNode(a,b,!1,d))};
function compareRange(a,b,c){switch(a){case Range.START_TO_START:a=(b.startContainer+"/"+b.startOffset).split("/").map(a=>1*a);c=(c.startContainer+"/"+c.startOffset).split("/").map(a=>1*a);break;case Range.START_TO_END:a=(b.startContainer+"/"+b.startOffset).split("/").map(a=>1*a);c=(c.endContainer+"/"+c.endOffset).split("/").map(a=>1*a);break;case Range.END_TO_START:a=(b.endContainer+"/"+b.endOffset).split("/").map(a=>1*a);c=(c.startContainer+"/"+c.startOffset).split("/").map(a=>1*a);break;case Range.END_TO_END:a=
(b.endContainer+"/"+b.endOffset).split("/").map(a=>1*a);c=(c.endContainer+"/"+c.endOffset).split("/").map(a=>1*a);break;default:throw"Invalid first parameter. Use Range.START_TO_START, Range.START_TO_END, Range.END_TO_START or Range.END_TO_END.";}return a.compare(c)}Range.prototype.setPathStart=function(a,b,c){this.setStart(b?a.childPathSelector(b):a.firstChild,c)};Range.prototype.setPathEnd=function(a,b,c){this.setEnd(b?a.childPathSelector(b):a.firstChild,c)};
Range.prototype.getHtml=function(){let a=document.createElement("div");a.appendChild(this.cloneContents());return a.innerHTML};
Range.prototype.affineToWord=function(){let a=/[A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff'.\n\t]/;for(;0<this.startOffset&&a.test(this.toString().charAt(0));)this.setStart(this.startContainer,this.startOffset-1);for(0!==this.startOffset&&this.setStart(this.startContainer,this.startOffset+1);this.endOffset<this.endContainer.length&&a.test(this.toString().slice(-1));)this.setEnd(this.endContainer,this.endOffset+1);a.test(this.toString().slice(-1))||0===this.endOffset||this.setEnd(this.endContainer,
this.endOffset-1)};function clearSelection(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty()}var scrollProcess=[];Math.easeOutExpo=function(a,b,c,d){return c*(-Math.pow(2,-10*a/d)+1)+b};function clearAllSmoothScroll(a){let b=scrollProcess.findIndex(b=>b.container===a);if(-1!==b){let a=scrollProcess[b].intervals.length;for(var c=0;c<a;c++)clearInterval(scrollProcess[b].intervals[c]);scrollProcess.splice(b,1)}}
function smoothScroll(a,b,c,d=.5){clearAllSmoothScroll(a);let e=a.scrollTop<b?1:-1,f=0,h=a.scrollTop,k=b-a.scrollTop;d*=200;let g=scrollProcess.findIndex(b=>b.container===a);-1===g&&(scrollProcess.push({container:a,intervals:[]}),g=scrollProcess.length-1);scrollProcess[g].intervals.push(setInterval(()=>{f===d||1===e&&(a.scrollTop===a.scrollTopMax||a.scrollTop>=b-1)||-1===e&&(0===a.scrollTop||a.scrollTop<=b+1)?(clearAllSmoothScroll(a),c&&c()):(a.scrollTop=Math.easeOutExpo(f,h,k,d),f++)},5))}
function scrollCenter(a,b,c,d=.5){b=b.getBoundingClientRect();let e=a.getBoundingClientRect();smoothScroll(a,b.top+(a.scrollTop-e.top)-e.height/4,c,d)}function inScrollView(a,b){b=b.getBoundingClientRect();let c=a.getBoundingClientRect(),d=b.top+(a.scrollTop-c.top-c.height)+b.height;return a.scrollTop<b.top+(a.scrollTop-c.top)&&a.scrollTop>d}
const HSL={fromString(a){a=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(a);return{h:a[1],s:a[2],l:a[3]/100}},toString(a){return"hsl("+a.h+", "+100*a.s+"%, "+100*a.l+"%)"}};