Simanalix343

Pretty good library so far!

Mar 10th, 2021
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3. var arrMap=function(obj){
  4.   this[0]=[];
  5.   this[1]=[];
  6.   if(typeof obj=="object"){
  7.     this.fromObj(obj);
  8.   }
  9. };
  10. function addProto(_proto,_class){
  11.   for(let i in _proto){_class.prototype[i]=_proto[i];}
  12. }
  13. addProto(
  14.   {
  15.     i:-1,
  16.     Get:function(_prop){
  17.       this.i=this[0].indexOf(_prop);
  18.       if(this.i>-1){
  19.         return this[1][this.i];
  20.       }
  21.       return null;
  22.     },
  23.     Set:function(_prop,_val){
  24.       this.i=this[0].indexOf(_prop);
  25.       if(this.i>-1){
  26.         this[1][this.i]=_val;
  27.         return _val;
  28.       }
  29.       else{
  30.         this.i=this[0].length;
  31.         this[0].push(_prop);
  32.         this[1].push(_val);
  33.         return _val;
  34.       }
  35.     },
  36.     forEach:function(callBack){
  37.       for(let i=0,ii=true;ii && i<this[0].length;i++){
  38.         ii=!callBack(this[1][i],this[0][i],this[1]);
  39.       }
  40.     },
  41.     setForEach:function(callBack){
  42.       for(let i=0;i<this[0].length;i++){
  43.         this[1][i]=callBack(this[1][i],this[0][i],this[1]);
  44.       }
  45.       return this;
  46.     },
  47.     getForEach:function(callback){
  48.       let arr=new arrMap();
  49.       arr[0]=this[0];
  50.       arr[1]=this[1];
  51.       for(let i=0;i<this[0].length;i++){
  52.         arr[1][i]=callBack(arr[1][i],arr[0][i],arr[1]);
  53.       }
  54.       return arr;
  55.     },
  56.     getObj:function(){
  57.       let obj={};
  58.       for(let i=0,s;i<this[0].length;i++){
  59.         s=this[0][i];
  60.         obj[s.replace(/\W/g,"")]=this[1][i];
  61.       }
  62.       return obj;
  63.     },
  64.     fromObj:function(obj){
  65.       for(let i in obj){this[0].push(i);this[1].push(obj[i]);}
  66.     },
  67.     clearDuplicates:function(){
  68.       for(let i=this[0].length-1;i>-1;i--){
  69.         if(this[0].indexOf(this[0][i])<i){
  70.           this[0].splice(i,1);
  71.           this[1].splice(i,1);
  72.         }
  73.       }
  74.     },
  75.     Remove:function(name){
  76.       this.i=this[0].indexOf(name);
  77.       if(this.i>-1){
  78.         this[0].splice(this.i,1);
  79.         this[1].splice(this.i,1);
  80.       }
  81.     },
  82.     class:"arrMap"
  83.  },
  84.   arrMap
  85. );
  86.  
  87. var o={el:document.body};
  88.  
  89. var sssc=function(tagName,id,className,parent){
  90.   let dddel;
  91.   if(typeof parent==="object" ? (!parent.el) :true){
  92.     parent=o;
  93.   }
  94.   dddel=document.createElement(tagName);
  95.   id=(id===undefined) ? ("") : (id+"");
  96.   dddel.id=id;
  97.   className=(className===undefined) ? ("") : (className+"");
  98.   dddel.className=className;
  99.   parent.el.appendChild(dddel);
  100.   if(!parent.els){parent.els={};}
  101.   parent.els[id]={el:dddel};
  102.   return parent.els[id];
  103. };
  104.  
  105. var sssTemplate=function(dddtemplate,obj){
  106.   dddtemplate=dddtemplate;
  107.   let ftext="function(){let text=\""+dddtemplate.replace(/\\/g,"\\\\").replace(/"/g,"\\\"").replace(/\n/g,"\\n")+"\";return text";
  108.   for(let ii in obj){
  109.     ftext+=".replace(/\\[="+ii+"=\\]/g,\""+obj[ii].replace(/\\/g,"\\\\").replace(/"/g,"\\\"").replace(/\n/g,"\\n")+"\")";
  110.   }
  111.   let dddf;
  112.   eval("dddf="+ftext+";};");
  113.   return dddf();
  114. };
  115.  
  116. var sssHide=function(obj){
  117.   obj.el.remove();
  118.   obj.hidden=true;
  119. };
  120. var sssShow=function(obj,parent){
  121.   parent.el.appendChild(obj.el);
  122.   obj.hidden=false;
  123. };
  124.  
  125. /*616-286-8687*/
  126.  
  127. var incorpHTML=function(obj,html){
  128.   obj.el=html;
  129.   obj.els=new arrMap();
  130.   let dddels=html.children;
  131.   if(dddels.length>0){
  132.     for(let i=0,ii;i<dddels.length;i++){
  133.       ii = dddels[i].id || i;
  134.       obj.els.Set(ii,{});
  135.       incorpHTML(obj.els.Get(ii),dddels[i]);
  136.     }
  137.   }
  138. }
  139.  
  140. incorpHTML(o,document.body);
  141.  
  142. / The functions are amazing! /;
  143.  
  144. /* limits on size of arrays and strings */
  145. var ArrLimit=10000,StringLimit=80000, SStringLimit=100;
  146.  
  147. /* nice functions { */
  148. const
  149.   setSeed=function(n){r1=n;r2=n*77+3028493;},
  150.   IF=function(n1,n2,n3){
  151.     if(n1){
  152.       if(typeof n2==="function"){
  153.         n2=n2();
  154.       }
  155.       v.ELSE=false;
  156.       return n2;
  157.     }
  158.     else{
  159.       if(typeof n3==="function"){
  160.         n3=n3();
  161.       }
  162.       v.ELSE=true;
  163.       return n3;
  164.     }
  165.   },
  166.   ELSEIF=function(n1,n2,n3){
  167.     if(v.ELSE){
  168.       if(n1){
  169.         if(typeof n2==="function"){
  170.         n2=n2();
  171.       }
  172.       v.ELSE=false;
  173.       return n2;
  174.       }
  175.       else{
  176.         if(typeof n2==="function"){
  177.           n2=n2();
  178.         }
  179.         v.ELSE=true;
  180.         return n2;
  181.       }
  182.     }
  183.     else{
  184.       if(typeof n2==="function"){
  185.         n3=n3();
  186.       }
  187.       return n3;
  188.     }
  189.   },
  190.   ELSE=function(n1,n2){
  191.     if(v.ELSE){
  192.       if(typeof n1==="function"){
  193.         n1=n1();
  194.       }
  195.       v.ELSE=false;
  196.       return n1;
  197.     }
  198.     else{
  199.       if(typeof n2==="function"){
  200.         n2=n2();
  201.       }
  202.       return n2;
  203.     }
  204.   },
  205.  
  206.   FOR=function(n1,n2,n3){
  207.     if(typeof n3==="function"){
  208.       for(
  209.         let i=n1,ii=1;
  210.         i<n2 && t2<500;
  211.         t2=((new Date()).getTime())-t1
  212.       ){
  213.         while(i<ii){n3();i++;}
  214.         ii*=2;
  215.       }
  216.     }
  217.     else{
  218.       return n3;
  219.     }
  220.   },
  221.   /*while and for loops are only allowed to run for (at most) 2 seconds*/
  222.   WHILE=function(n1,n2){
  223.     if(typeof n2==="function"){
  224.       if(typeof n1==="function"){
  225.         for(
  226.           let i=0,ii=1;
  227.           t2<500;
  228.           t2=((new Date()).getTime())-t1
  229.         ){
  230.           while(i<ii && n1()){n2();i++;}
  231.           ii*=2;
  232.         }
  233.       }
  234.       else{
  235.         for(
  236.           let i=0,ii=1;
  237.           i<n1 && t2<500;
  238.           t2=((new Date()).getTime())-t1
  239.         ){
  240.           while(i<ii){n2();i++;}
  241.           ii*=2;
  242.         }
  243.       }
  244.     }
  245.     else{
  246.       return n2;
  247.     }
  248.   },
  249.   ABS=function(n){return (n<0) ? -n : n ;},
  250.   FLOOR=function(n){return Math.floor(n);},
  251.   CEIL=function(n){return Math.ceil(n);},
  252.   ROUND=function(n){return Math.round(n);},
  253.   STRING=function(n){
  254.     n=""+n;
  255.     return n.slice(0,Math.min(n.length,StringLimit));
  256.   },
  257.   SSTRING=function(n){
  258.     n=""+n;
  259.     return n.slice(0,Math.min(n.length,SStringLimit));
  260.   },
  261.   NUMBER=function(n){
  262.     if(n===null || n===undefined || typeof n==="function"){return 0;}
  263.     else if(typeof n==="string"){return Number(n);}
  264.     else if(typeof n==="object"){
  265.       if(length in n){return n.length;}
  266.       return NaN;
  267.     }
  268.     else{return n+0;}
  269.   },
  270.   SVAR=function(n1,n2){
  271.     v[STRING(n1)]=n2;
  272.     return n2;
  273.   },
  274.   GVAR=function(n1){return v[STRING(n1)];},
  275.  
  276.   TYPEOF=function(n){return typeof n;},
  277.   NOT=function(n){return !n;},
  278.   ARRAY=function(){
  279.     let n=arguments,arr=[];
  280.     for(let i=0;i<n;i++){
  281.       arr[i]=n[i];
  282.     }
  283.     return arr;
  284.   },
  285.   CONCAT=function(){
  286.     let arr=[];
  287.     for(let i=0;i<arguments.length;i++){
  288.       if(Array.isArray(arguments[i])){
  289.         arr=arr.concat(arguments[i]);
  290.       }
  291.     }
  292.   },
  293.   CALL=function(n1){
  294.     if(typeof n1!="function"){return n1;}
  295.     let arr=[];
  296.     for(let i=1;i<ArrLimit && i<arguments.length;i++){
  297.       arr[i-1]=arguments[i];
  298.     }
  299.     n1(...arr);
  300.   },
  301.   ELABLE=function(n){
  302.     return ( typeof n === "object" && n !== null ) ? ( typeof n.el === "object" &&  n !== null && ( ( typeof n.els === "object" &&  n !== null ) ? ( n.els.class === "arrMap" ) : false ) ) : false;
  303.   },
  304.   PROPABLE=function(n){
  305.     return !( n===undefined || n===null || n===true || n===false );
  306.   },
  307.   GETEL=function( obj ){
  308.     let arg = arguments, i = 1;
  309.     if( Array.isArray( arg[1] ) ){
  310.       arg = arg[1];
  311.       i = 0;
  312.     }
  313.     let currentObj = obj, currentProp = obj;
  314.     if( ELABLE( currentObj ) ){
  315.       while( i<arg.length ){
  316.         currentProp = currentObj?.els?.Get( arg[i] );
  317.         if( ELABLE( currentProp ) ){
  318.           currentObj = currentProp;
  319.         }
  320.         else{
  321.           i=arg.length;
  322.         }
  323.         i++;
  324.       }
  325.       return currentProp;
  326.     }
  327.   },
  328.   SETEL=function( obj ){
  329.     let arg = arguments, i = 1;
  330.     if( Array.isArray( arg[1] ) ){
  331.       arg = arg[1];
  332.       i = 0;
  333.     }
  334.     let currentObj = obj, currentProp = obj;
  335.     if( ELABLE( currentObj ) && arg.length>1 ){
  336.       while( i<arg.length-2 ){
  337.         currentProp = currentObj?.els?.Get( arg[i] );
  338.         if( ELABLE( currentProp ) ){
  339.           currentObj = currentProp;
  340.         }
  341.         else{
  342.           i=arg.length;
  343.         }
  344.         i++;
  345.       }
  346.       currentObj?.els?.Set( arg[i] , arg[i+1] );
  347.       return arg[ i+1 ];
  348.     }
  349.   },
  350.   HASEL=function( obj ){
  351.     let arg = arguments, i = 1, hasProp = true;
  352.     if( Array.isArray( arg[1] ) ){
  353.       arg = arg[1];
  354.       i = 0;
  355.     }
  356.     let currentObj = obj, currentProp = obj;
  357.     if( ELABLE( currentObj ) ){
  358.       while( i<arg.length ){
  359.         currentProp = currentObj?.els?.Get( arg[i] );
  360.         if( ELABLE( currentProp ) ){
  361.           currentObj = currentProp;
  362.         }
  363.         else{
  364.           hasProp = false;
  365.           i = arg.length;
  366.         }
  367.         i++;
  368.       }
  369.       return hasProp;
  370.     }
  371.   },
  372.   GETELS=function( obj ){
  373.     let arg = arguments, i = 1;
  374.     if( Array.isArray( arg[1] ) ){
  375.       arg = arg[1];
  376.       i = 0;
  377.     }
  378.     let currentObj = obj, currentProp = obj;
  379.     if( ELABLE( currentObj ) ){
  380.       while( i<arg.length ){
  381.         currentProp = currentObj?.els?.Get( arg[i] );
  382.         if( ELABLE( currentProp ) ){
  383.           currentObj = currentProp;
  384.         }
  385.         else{
  386.           currentProp = currentObj;
  387.           i=arg.length;
  388.         }
  389.         i++;
  390.       }
  391.       return currentProp;
  392.     }
  393.   },
  394.   SETELS=function( obj ){
  395.     let arg = arguments, i = 1, setmode = false;
  396.     if( Array.isArray( arg[1] ) ){
  397.       arg = arg[1];
  398.       i = 0;
  399.     }
  400.     let currentObj = obj, currentProp = obj;
  401.     if( ELABLE( currentObj ) && arg.length>1 ){
  402.       while( i<arg.length-2 ){
  403.         if( setmode ){
  404.           currentProp = { el:document.createElement("div") , els:new arrMap() };
  405.           currentObj.els.Set( arg[i] , currentProp);
  406.           currentObj = currentProp;
  407.         }
  408.         else{
  409.           currentProp = currentObj?.els?.Get( arg[i] );
  410.           if( ELABLE( currentProp ) ){
  411.             currentObj = currentProp;
  412.           }
  413.           else{
  414.             setmode = true;
  415.             i--;
  416.           }
  417.         }
  418.         i++;
  419.       }
  420.       currentProp?.els?.Set( arg[i] , arg[ i+1 ] );
  421.       return arg[ i+1 ];
  422.     }
  423.   },
  424.   GETPROP=function( obj ){
  425.     let arg = arguments, i = 1;
  426.     if( Array.isArray( arg[1] ) ){
  427.       arg = arg[1];
  428.       i = 0;
  429.     }
  430.     let currentObj = obj, currentProp = obj;
  431.     if( PROPABLE( currentObj ) ){
  432.       while( i<arg.length ){
  433.         currentProp = currentObj[arg[i]];
  434.         if( PROPABLE( currentProp ) ){
  435.           currentObj = currentProp;
  436.         }
  437.         else{
  438.           i=arg.length;
  439.         }
  440.         i++;
  441.       }
  442.       return currentProp;
  443.     }
  444.   },
  445.   SETPROP=function( obj ){
  446.     let arg = arguments, i = 1;
  447.     if( Array.isArray( arg[1] ) ){
  448.       arg = arg[1];
  449.       i = 0;
  450.     }
  451.     let currentObj = obj, currentProp = obj;
  452.     if( PROPABLE( currentObj ) && arg.length>1 ){
  453.       while( i<arg.length-2 ){
  454.         currentProp = currentObj[arg[i]];
  455.         if( PROPABLE( currentProp ) ){
  456.           currentObj = currentProp;
  457.         }
  458.         else{
  459.           i=arg.length;
  460.         }
  461.         i++;
  462.       }
  463.       currentProp[ arg[i] ] = arg[ i+1 ];
  464.       return arg[ i+1 ];
  465.     }
  466.   },
  467.   HASPROP=function( obj ){
  468.     let arg = arguments, i = 1, hasProp = true;
  469.     if( Array.isArray( arg[1] ) ){
  470.       arg = arg[1];
  471.       i = 0;
  472.     }
  473.     let currentObj = obj, currentProp = obj;
  474.     if( PROPABLE( currentObj ) ){
  475.       while( i<arg.length ){
  476.         currentProp = currentObj[arg[i]];
  477.         if( PROPABLE( currentProp ) ){
  478.           currentObj = currentProp;
  479.         }
  480.         else{
  481.           if( i<arg.length-1 || currentProp === undefined ){
  482.             hasProp = false;
  483.           }
  484.           i = arg.length;
  485.         }
  486.         i++;
  487.       }
  488.       return hasProp;
  489.     }
  490.   },
  491.   GETPROPS=function( obj ){
  492.     let arg = arguments, i = 1;
  493.     if( Array.isArray( arg[1] ) ){
  494.       arg = arg[1];
  495.       i = 0;
  496.     }
  497.     let currentObj = obj, currentProp = obj;
  498.     if( PROPABLE( currentObj ) ){
  499.       while( i<arg.length ){
  500.         currentProp = currentObj[arg[i]];
  501.         if( PROPABLE( currentProp ) ){
  502.           currentObj = currentProp;
  503.         }
  504.         else{
  505.           currentProp = currentObj;
  506.           i=arg.length;
  507.         }
  508.         i++;
  509.       }
  510.       return currentProp;
  511.     }
  512.   },
  513.   SETPROPS=function( obj ){
  514.     let arg = arguments, i = 1, setmode = false;
  515.     if( Array.isArray( arg[1] ) ){
  516.       arg = arg[1];
  517.       i = 0;
  518.     }
  519.     let currentObj = obj, currentProp = obj;
  520.     if( PROPABLE( currentObj ) && arg.length>1 ){
  521.       while( i<arg.length-2 ){
  522.         if( setmode ){
  523.           currentProp = {};
  524.           currentObj[ arg[i] ] = currentProp;
  525.           currentObj = currentProp;
  526.         }
  527.         else{
  528.           currentProp = currentObj[arg[i]];
  529.           if( PROPABLE( currentProp ) ){
  530.             currentObj = currentProp;
  531.           }
  532.           else{
  533.             setmode = true;
  534.             i--;
  535.           }
  536.         }
  537.         i++;
  538.       }
  539.       currentProp[ arg[i] ] = arg[ i+1 ];
  540.       return arg[ i+1 ];
  541.     }
  542.   }
  543. ;
  544.  
  545. /* converts text into a valid HTML id */
  546. var text2id=function(text){
  547.   text=text.split("-").join("--");
  548.   for(let i=0;i<id2js.length;i++){
  549.     text=text.split(id2js[i][0]).join("-"+id2js[i][1]);
  550.   }
  551.   /*every other weird unicode character*/
  552.   let m=text.match(/[\u0000-\u001f\u007f-\uffff]/g);
  553.   for(let i=0;i<m.length;i++){
  554.     text=text.replace(m[i],"-"+padText(getCharCode(m[i]).toString(16).toUpperCase(),"0",4));
  555.   }
  556.   return text;
  557. };
  558. /* converts text into a valid JavaScript property value */
  559. var text2js=function(){
  560.   text=text.split("$").join("$$");
  561.   for(let i=0;i<id2js.length;i++){
  562.     text=text.split(id2js[i][0]).join("$"+id2js[i][1]);
  563.   }
  564.   /*every other weird unicode character*/
  565.   let m=text.match(/[\u0000-\u001f\u007f-\uffff]/g);
  566.   for(let i=0;i<m.length;i++){
  567.     text=text.replace(m[i],"$"+padText(getCharCode(m[i]).toString(16).toUpperCase(),"0",4));
  568.   }
  569.   return text;
  570. };
  571. /* converts speically formatted js prop name to text */
  572. var js2text=function(text){
  573.   for(let i=0;i<id2js.length;i++){
  574.     text=text.split("$"+id2js[i][1]).join(id2js[i][0]);
  575.   }
  576.   /*every other weird unicode character*/
  577.   let m = text.match(/\$[0-9A-F]{4}/g) || [];
  578.   for(let i=0;i<m.length;i++){
  579.     text=text.replace(m[i],String.fromCharCode(Number(m[i].slice(1))));
  580.   }
  581.   return text;
  582. };
  583. /* converts specially formatted HTML id to text */
  584. var id2text=function(text){
  585.   for(let i=0;i<id2js.length;i++){
  586.     text=text.split("-"+id2js[i][1]).join(id2js[i][0]);
  587.   }
  588.   /*every other weird unicode character*/
  589.   let m = text.match(/-[0-9A-F]{4}/g) || [];
  590.   for(let i=0;i<m.length;i++){console.log(fromHex(m[i].slice(1)));
  591.     text=text.replace(m[i],String.fromCharCode(fromHex(m[i].slice(1))));
  592.   }
  593.   return text;
  594. };
  595.  
  596. formatNumber=function(n,sDigits,format){
  597.   if(n===Infinity||n===0||n===-Infinity){return ""+n;}
  598.   const formats=[
  599.     [/comma/i,-1],
  600.     [/sho?a?rt/i,0],
  601.     [/l+o+n+g+/i,1],
  602.     2
  603.   ];
  604.   let pow10 = Math.floor(Math.log(n)/Math.LN10)+1;
  605.   format=IF(typeof format==="number",format,WHICH_TOKEN(format,formats));
  606.   if(format===-1){
  607.     let text="";let digits=0;
  608.     if(n<0){n=-n;text+="-";}
  609.     if(n<1){
  610.       text+="0.";
  611.       while(n>0){
  612.         n*=10;
  613.         text+=Math.floor(n%10);
  614.         n%=1;
  615.       }
  616.     }
  617.     else{
  618.       while(n>0){
  619.         digits++;
  620.         text=(n%10)+((digits%3===0 && n>10)?",":"")+text;
  621.         n=Math.floor(n/10);
  622.       }
  623.     }
  624.     return text;
  625.   }
  626.   const arrs=(format===0) ? [
  627.     ["",    "U" ,"Du","T" ,"Qa","Qi","Sx","Sp","Oc","N"      ],
  628.     ["",    "D" ,"Vg","Tg","Qg","Qq","Sx","Sp","Og","Ng","C" ],
  629.     ["","K","M" ,"B" ,"T" ,"Qa","Qi","Sx","Sp","Oc","N"      ]
  630.   ] : [
  631.     ["","Uno","Duo","Tre","Quatorro","Quinqua","Sexe","Septe","Octo","Nona"],
  632.     ["","Dec","Vigint","Trigint","Quadragint","Quinquagint","Sexagint","Septagint","Octogint","Nonagint","Cent"],
  633.     ["","Thousand","M","B","Tr","Quadr","Quint","Sext","Sept","Oct","Non"]
  634.   ];
  635.  
  636.  
  637.   let roundN = Math.round(n/Math.pow(10,(pow10-sDigits))) * Math.pow(10,(pow10-sDigits));
  638.  
  639.   n=(format<2) ? (
  640.     String(
  641.       roundN/(
  642.         Math.pow(1000,Math.floor(
  643.           (pow10-1)/3
  644.         ))
  645.       ) + " " +
  646.       (
  647.         pow10>33 ?
  648.         (
  649.           (
  650.             ((pow10-4)%30) < 3 ?
  651.             "" :
  652.             arrs[0][Math.floor(((pow10-4)%30)/3)]
  653.           ) +
  654.           arrs[1][Math.floor((pow10-4)/30)]
  655.         ) :
  656.         IF(
  657.           pow10>3,
  658.           arrs[2][Math.floor((pow10-1)/3)],
  659.           ""
  660.         )
  661.       )
  662.     ).replace(/(\d+)\.\D/g,"$1 ") +
  663.     (
  664.       format===1 && pow10>6 ?
  665.       "illion" :
  666.       ""
  667.     )
  668.   ) : (
  669.     roundN/Math.pow(10,pow10-1)+
  670.     (
  671.       pow10<2 && pow10>=1 ?
  672.       "" :
  673.       "E"+(pow10-1)
  674.     )
  675.   );
  676.   return n;
  677. };
  678.  
  679. const onMobile=(
  680.   /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(navigator.userAgent||navigator.vendor||window.opera)
  681. );
  682.  
Add Comment
Please, Sign In to add comment