From 12a53247ca91c7fbd4b87399ebe3b42ac92732a6 Mon Sep 17 00:00:00 2001 From: c3r38r170 Date: Sat, 14 Aug 2021 02:34:55 -0300 Subject: [PATCH] Changed parameters names on SqS, removed unnecesary files, minified lib. --- .gitignore | 3 ++- README.md | 3 --- c3tools-min.js | 1 + c3tools.js | 29 ++++++++++++++--------------- index.html | 26 -------------------------- 5 files changed, 17 insertions(+), 45 deletions(-) create mode 100644 c3tools-min.js delete mode 100644 index.html diff --git a/.gitignore b/.gitignore index 600d2d3..96a680c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.vscode \ No newline at end of file +.vscode +-*.html \ No newline at end of file diff --git a/README.md b/README.md index fc198b7..f6c5c93 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,7 @@ Collection of personal sets of functions to speed up web development. ## TO DO -- Debug new changes introduced. -- Change SqS's cantidad parameter. - Add version number. -- Minified version. - ~~Get a CDN.~~ Publish to NPM. - Translate SqS completely. - Try to get rid of `// TODO`s. diff --git a/c3tools-min.js b/c3tools-min.js new file mode 100644 index 0000000..71273bc --- /dev/null +++ b/c3tools-min.js @@ -0,0 +1 @@ +const W=window,D=document,ALL=!0,ONLY_ONE=!1;var B,Types={OTHER:-1,NUMBER:0,STRING:1,ARRAY:2,OBJECT:3,BOOLEAN:4,NULL:5};function is(e,t){if(null==e&&t==Types.NULL)return!0;let n={[Types.NUMBER]:["number",Number],[Types.STRING]:["string",String],[Types.BOOLEAN]:["boolean",Boolean]};switch(t){case 0:case 1:case 4:return n[t][0]==typeof e||e instanceof n[t][1];case 2:return Array.isArray(e);case 3:return"object"==typeof e&&!Array.isArray(e)}return t==Types.OTHER}function whatIs(e){switch(typeof e){case"number":return Types.NUMBER;case"string":return Types.STRING;case"object":switch(!0){case Array.isArray(e):return Types.ARRAY;case e instanceof String:return Types.STRING;case e instanceof Number:return Types.NUMBER;case null==e:return Types.NULL;default:return Types.OBJECT}default:return Types.OTHER}}addEventListener("DOMContentLoaded",(()=>{B=D.body}));const gEt=e=>D.getElementById(e);function SqS(e,{n:t=false,from:n=D}={}){if(e instanceof Node)return e;if(is(e,Types.STRING)){let r,s=e.slice(1);if(/[ :\[\.#,+~]/.test(s)){if(!t||1===t)return n.querySelector(e);if(!0===t)return n.querySelectorAll(e);r=n.querySelectorAll(e)}else switch(e[0]){case"#":let t=D.getElementById(s);return!!t.closest(e)&&t;case".":r=n.getElementsByClassName(s);break;case"[":let a=/^\[name="([^"]*)"\]$/.exec(e);a&&(r=D.getElementsByName(a[1]));break;case":":break;default:r=n.getElementsByTagName(e)}if(t&&1!==t){if(!0===t)return r||D.querySelectorAll(e);{if(r||(r=D.querySelectorAll(e)),t>=r.length)return r;let n=[];for(let e=0;e1?n:n[0]}function sendJSON(e,t,n=null){let r={credentials:"include",method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)};return fetch(e,n?Object.assign(r,n):r)}function*JSONAsURLEncodedStringIterator(e,t=null){let n=Array.isArray(e)?e.map((e=>["",e])):Object.entries(e);for(let[e,r]of n)e=t?t+"["+e+"]":e,null!=r&&"object"==typeof r?yield*JSONAsURLEncodedStringIterator(r,e):yield[e,r]}function JSONAsFormData(e){if(!is(e,Types.ARRAY)&&!is(e,Types.OBJECT))return;let t=new FormData;for(let n in e){let r=e[n];if(null==r||r instanceof File||"object"!=typeof r)t.append(n,r);else for(let e of JSONAsURLEncodedStringIterator(r,n))t.append(...e)}return t}function sendPOST(e,t,{returnType:n=null,otherOptions:r=null}={}){t instanceof FormData||(t=JSONAsFormData(t));let s={credentials:"include",method:"POST",body:t};r&&Object.assign(s,r);let a=fetch(e,s);return n?a.then((e=>e[n]())):a}function fetchConCredentials(e,t,...n){return fetch(e,Object.assign({credentials:"include"},t),...n)} \ No newline at end of file diff --git a/c3tools.js b/c3tools.js index aa63497..423a703 100644 --- a/c3tools.js +++ b/c3tools.js @@ -90,23 +90,22 @@ const gEt=id=>D.getElementById(id); * Wrapper for querySelector, querySelectorAll, and any other DOM query methods. * @param {string} selector - CSS selector to look for. * @param {object} [obj]={} - Wrapper - * @param {(number|boolean)} [obj.cantidad]=ONLY_ONE - Ammount of Nodes to return, defaults to false (ONLY_ONE). - * @param {HTMLElement} [obj.ancestroComun]=D - DOM element on which the query will be done. + * @param {(number|boolean)} [obj.n]=ONLY_ONE - Ammount of elements to return, defaults to false (ONLY_ONE). + * @param {HTMLElement} [obj.from]=D - DOM element on which the query will be done. * @returns {(HTMLElement|NodeList|boolean)} The element or false if cantidad was 1 or false, a NodeList if cantidad was more than 1 or true. */ // TODO translate -// TODO cambiar cantidad por n -function SqS(selector,{cantidad=ONLY_ONE,ancestroComun=D}={}){ +function SqS(selector,{n=ONLY_ONE,from=D}={}){ if(selector instanceof Node)//??? Node vs HTMLElement return selector; if(is(selector,Types.STRING)){ let resultados, restoDeSelector=selector.slice(1); if(/[ :\[\.#,+~]/.test(restoDeSelector)) - if(!cantidad||cantidad===1) - return ancestroComun.querySelector(selector) - else if(cantidad===true) - return ancestroComun.querySelectorAll(selector); - else resultados=ancestroComun.querySelectorAll(selector); + if(!n||n===1) + return from.querySelector(selector) + else if(n===true) + return from.querySelectorAll(selector); + else resultados=from.querySelectorAll(selector); else switch(selector[0]){ case '#': // TODO reconsider @@ -115,7 +114,7 @@ function SqS(selector,{cantidad=ONLY_ONE,ancestroComun=D}={}){ ?resultado :false; case '.': - resultados=ancestroComun.getElementsByClassName(restoDeSelector); + resultados=from.getElementsByClassName(restoDeSelector); break; case '[': let nameMatch=/^\[name="([^"]*)"\]$/.exec(selector); @@ -125,19 +124,19 @@ function SqS(selector,{cantidad=ONLY_ONE,ancestroComun=D}={}){ case ':': break; default: - resultados=ancestroComun.getElementsByTagName(selector); + resultados=from.getElementsByTagName(selector); } - if(!cantidad||cantidad===1) + if(!n||n===1) return resultados?resultados[0]:D.querySelector(selector); - else if(cantidad===true) + else if(n===true) return resultados?resultados:D.querySelectorAll(selector); else{ if(!resultados) resultados=D.querySelectorAll(selector); - if(cantidad>=resultados.length) + if(n>=resultados.length) return resultados; let respuesta=[]; - for(let i=0;i - - - - - - - Document - - - - - \ No newline at end of file