UNPKG

css-to-mat

Version:
11 lines (10 loc) 7.69 kB
/* Copyright (c) 2019 Daybrush name: css-to-mat license: MIT author: Daybrush repository: git+https://github.com/daybrush/css-to-mat.git version: 1.1.0 */ !function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(n="undefined"!=typeof globalThis?globalThis:n||self).CssToMatrix=r()}(this,(function(){"use strict";var n=function(){return n=Object.assign||function(n){for(var r,e=1,t=arguments.length;e<t;e++)for(var i in r=arguments[e])Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i]);return n},n.apply(this,arguments)},r="function",e="object",t="string",i=[{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:'\\"',close:'\\"'},{open:"\\'",close:"\\'"}],o=1e-7,a={cm:function(n){return 96*n/2.54},mm:function(n){return 96*n/254},in:function(n){return 96*n},pt:function(n){return 96*n/72},pc:function(n){return 96*n/6},"%":function(n,r){return n*r/100},vw:function(n,r){return void 0===r&&(r=window.innerWidth),n/100*r},vh:function(n,r){return void 0===r&&(r=window.innerHeight),n/100*r},vmax:function(n,r){return void 0===r&&(r=Math.max(window.innerWidth,window.innerHeight)),n/100*r},vmin:function(n,r){return void 0===r&&(r=Math.min(window.innerWidth,window.innerHeight)),n/100*r}};function u(n){return n&&typeof n===e}function f(n,r,e,t,i){return c(n,r,e)?e:function(n,r,e,t,i){for(var o,a=function(e){var a=r[e].trim();if(a===n.close&&!c(n,r,e))return{value:e};var u=e,s=p(i,(function(n){return n.open===a}));if(s&&(u=f(s,r,e,t,i)),-1===u)return o=e,"break";o=e=u},u=e;u<t;++u){var s=a(u);if(u=o,"object"==typeof s)return s.value;if("break"===s)break}return-1}(n,r,e+1,t,i)}function c(n,r,e){if(!n.ignore)return null;var t=r.slice(Math.max(e-3,0),e+3).join("");return new RegExp(n.ignore).exec(t)}function s(n,r){var e=typeof r===t?{separator:r}:r,o=e.separator,a=void 0===o?",":o,u=e.isSeparateFirst,l=e.isSeparateOnlyOpenClose,v=e.isSeparateOpenClose,d=void 0===v?l:v,h=e.openCloseCharacters,m=void 0===h?i:h,g=m.map((function(n){var r=n.open,e=n.close;return r===e?r:r+"|"+e})).join("|"),x=new RegExp("(\\s*"+a+"\\s*|"+g+"|\\s+)","g"),M=n.split(x).filter((function(n){return n&&"undefined"!==n})),y=M.length,b=[],w=[];function j(){return!!w.length&&(b.push(w.join("")),w=[],!0)}for(var F,C=function(r){var e=M[r].trim(),t=r,i=p(m,(function(n){return n.open===e})),o=p(m,(function(n){return n.close===e}));if(i){if(-1!==(t=f(i,M,r,y,m))&&d)return j()&&u?(F=r,"break"):(b.push(M.slice(r,t+1).join("")),r=t,u?(F=r,"break"):(F=r,"continue"))}else{if(o&&!c(o,M,r)){var v=function(){for(var n=0,r=0,e=arguments.length;r<e;r++)n+=arguments[r].length;var t=Array(n),i=0;for(r=0;r<e;r++)for(var o=arguments[r],a=0,u=o.length;a<u;a++,i++)t[i]=o[a];return t}(m);return v.splice(m.indexOf(o),1),{value:s(n,{separator:a,isSeparateFirst:u,isSeparateOnlyOpenClose:l,isSeparateOpenClose:d,openCloseCharacters:v})}}if(function(n,r){return(""===r||" "==r)&&(""===n||" "==n)||n===r}(e,a)&&!l)return j(),u?(F=r,"break"):(F=r,"continue")}-1===t&&(t=y-1),w.push(M.slice(r,t+1).join("")),F=r=t},S=0;S<y;++S){var k=C(S);if(S=F,"object"==typeof k)return k.value;if("break"===k)break}return w.length&&b.push(w.join("")),b}function l(n){return s(n,",")}function v(n){var r=/^([^\d|e|\-|\+]*)((?:\d|\.|-|e-|e\+)+)(\S*)$/g.exec(n);if(!r)return{prefix:"",unit:"",value:NaN};var e=r[1],t=r[2];return{prefix:e,unit:r[3],value:parseFloat(t)}}function p(n,r,e){var t=function(n,r,e){void 0===e&&(e=-1);for(var t=n.length,i=0;i<t;++i)if(r(n[i],i,n))return i;return e}(n,r);return t>-1?n[t]:e}function d(n,e){var t=v(n),i=t.value,o=t.unit;if(u(e)){var f=e[o];if(f){if(function(n){return typeof n===r}(f))return f(i);if(a[o])return a[o](i,f)}}else if("%"===o)return i*e/100;return a[o]?a[o](i):i}function h(n,r){if(!r)return n;var e=1/r;return Math.round(n/r)/e}function m(n,r,e,t,i,o){for(var a=0;a<i;++a){var u=e+a*i,f=t+a*i;n[u]+=n[f]*o,r[u]+=r[f]*o}}function g(n,r,e,t,i){for(var o=0;o<i;++o){var a=e+o*i,u=t+o*i,f=n[a],c=r[a];n[a]=n[u],n[u]=f,r[a]=r[u],r[u]=c}}function x(n,r,e,t,i){for(var o=0;o<t;++o){var a=e+o*t;n[a]/=i,r[a]/=i}}function M(n,r,e){void 0===e&&(e=Math.sqrt(n.length));var t=[],i=n.length/e,o=r.length/i;if(!i)return r;if(!o)return n;for(var a=0;a<e;++a)for(var u=0;u<o;++u){t[u*e+a]=0;for(var f=0;f<i;++f)t[u*e+a]+=n[f*e+a]*r[u*i+f]}return t}function y(n,r){return M(n,[1,0,0,0,0,Math.cos(r),Math.sin(r),0,0,-Math.sin(r),Math.cos(r),0,0,0,0,1],4)}function b(n,r){return M(n,[Math.cos(r),0,-Math.sin(r),0,0,1,0,0,Math.sin(r),0,Math.cos(r),0,0,0,0,1],4)}function w(n,r){return M(n,function(n,r){var e=Math.cos(n),t=Math.sin(n),i=S(r);return i[0]=e,i[1]=t,i[r]=-t,i[r+1]=e,i}(r,4))}function j(n,r){var e=r[0],t=void 0===e?1:e,i=r[1],o=void 0===i?1:i,a=r[2];return M(n,[t,0,0,0,0,o,0,0,0,0,void 0===a?1:a,0,0,0,0,1],4)}function F(n,r){var e=r[0],t=void 0===e?0:e,i=r[1],o=void 0===i?0:i,a=r[2];return M(n,[1,0,0,0,0,1,0,0,0,0,1,0,t,o,void 0===a?0:a,1],4)}function C(n,r){return M(n,r,4)}function S(n){for(var r=n*n,e=[],t=0;t<r;++t)e[t]=t%(n+1)?0:1;return e}function k(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function O(n,r){return void 0===r&&(r=0),E(Z(n,r))}function E(n){var r=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];return n.forEach((function(n){var e=n.matrixFunction,t=n.functionValue;e&&(r=e(r,t))})),r}function Z(r,e){var t;return void 0===e&&(e=0),(t=r,Array.isArray(t)?r:s(r,"")).map((function(r){var t=function(n){var r=/([^(]*)\(([\s\S]*)\)([\s\S]*)/g.exec(n);return!r||r.length<4?{}:{prefix:r[1],value:r[2],suffix:r[3]}}(r),i=t.prefix,o=t.value,a=null,f=i,c="";if("translate"===i||"translateX"===i||"translate3d"===i){var s=u(e)?n(n({},e),{"o%":e["%"]}):{"%":e,"o%":e},p=l(o).map((function(n,r){return s["%"]=0===r&&"x%"in s?e["x%"]:1===r&&"y%"in s?e["y%"]:e["o%"],d(n,s)})),h=p[0],m=p[1],g=void 0===m?0:m,x=p[2];a=F,c=[h,g,void 0===x?0:x]}else if("translateY"===i){a=F,c=[0,g=d(o,u(e)?n({"%":e["y%"]},e):{"%":e}),0]}else if("translateZ"===i){a=F,c=[0,0,parseFloat(o)]}else if("scale"===i||"scale3d"===i){var M=l(o).map((function(n){return parseFloat(n)})),S=M[0],k=M[1],O=void 0===k?S:k,E=M[2];a=j,c=[S,O,void 0===E?1:E]}else if("scaleX"===i){a=j,c=[S=parseFloat(o),1,1]}else if("scaleY"===i){a=j,c=[1,O=parseFloat(o),1]}else if("scaleZ"===i){a=j,c=[1,1,parseFloat(o)]}else if("rotate"===i||"rotateZ"===i||"rotateX"===i||"rotateY"===i){var Z=v(o),X=Z.unit,Y=Z.value;"rotate"===i||"rotateZ"===i?(f="rotateZ",a=w):"rotateX"===i?a=y:"rotateY"===i&&(a=b),c="rad"===X?Y:Y*Math.PI/180}else if("matrix3d"===i)a=C,c=l(o).map((function(n){return parseFloat(n)}));else if("matrix"===i){var _=l(o).map((function(n){return parseFloat(n)}));a=C,c=[_[0],_[1],0,0,_[2],_[3],0,0,0,0,1,0,_[4],_[5],0,1]}else f="";return{name:i,functionName:f,value:o,matrixFunction:a,functionValue:c}}))}return{__proto__:null,calculateMatrixDist:function(n,r){var e=function(n,r,e){void 0===e&&(e=r.length);var t=M(n,r,e),i=t[e-1];return t.map((function(n){return n/i}))}(n,[r[0],r[1]||0,r[2]||0,1],4),t=e[3]||1;return[e[0]/t,e[1]/t,e[2]/t]},createMatrix:k,getDistElementMatrix:function(n,r){void 0===r&&(r=document.body);for(var e=n,t=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];e;){if(t=C(O(getComputedStyle(e).transform),t),e===r)break;e=e.parentElement}return(t=function(n,r){void 0===r&&(r=Math.sqrt(n.length));for(var e=n.slice(),t=S(r),i=0;i<r;++i){var a=r*i+i;if(!h(e[a],o))for(var u=i+1;u<r;++u)if(e[r*i+u]){g(e,t,i,u,r);break}if(!h(e[a],o))return[];for(x(e,t,i,r,e[a]),u=0;u<r;++u){var f=u,c=e[u+i*r];h(c,o)&&i!==u&&m(e,t,f,i,r,-c)}}return t}(t,4))[12]=0,t[13]=0,t[14]=0,t},getElementMatrix:function(n){return O(getComputedStyle(n).transform)},parse:Z,parseMat:O,toMat:E}})); //# sourceMappingURL=css-to-mat.min.js.map