@thednp/dommatrix 2.0.6 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,10 +4,10 @@
4
4
  [![NPM Downloads](https://img.shields.io/npm/dm/@thednp/dommatrix.svg?style=flat-square)](http://npm-stat.com/charts.html?@thednp/dommatrix)
5
5
  [![ci](https://github.com/thednp/dommatrix/actions/workflows/ci.yml/badge.svg)](https://github.com/thednp/dommatrix/actions/workflows/ci.yml)
6
6
  [![jsDeliver](https://data.jsdelivr.com/v1/package/npm/@thednp/dommatrix/badge)](https://www.jsdelivr.com/package/npm/@thednp/dommatrix)
7
- [![typescript version](https://img.shields.io/badge/typescript-5.1.6-brightgreen)](https://www.typescriptlang.org/)
8
- [![cypress version](https://img.shields.io/badge/cypress-12.16.0-brightgreen)](https://www.cypress.io/)
7
+ [![typescript version](https://img.shields.io/badge/typescript-5.5.4-brightgreen)](https://www.typescriptlang.org/)
8
+ [![cypress version](https://img.shields.io/badge/cypress-13.13.1-brightgreen)](https://www.cypress.io/)
9
9
  [![eslint version](https://img.shields.io/badge/eslint-8.44.0-brightgreen)](https://github.com/eslint)
10
- [![vite version](https://img.shields.io/badge/vite-4.3.9-brightgreen)](https://vitejs.dev/)
10
+ [![vite version](https://img.shields.io/badge/vite-5.3.5-brightgreen)](https://vitejs.dev/)
11
11
  [![prettier version](https://img.shields.io/badge/prettier-2.8.8-brightgreen)](https://prettier.io/)
12
12
 
13
13
  A TypeScript sourced [DOMMatrix](https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix) shim for **Node.js** apps and legacy browsers. Since this source is modernized, legacy browsers might need some additional shims.
@@ -4,6 +4,8 @@ import CSSMatrix from '../../src/index';
4
4
  import type { Matrix, Matrix3d } from '../../src/types';
5
5
  import testSamples from '../fixtures/testSamples';
6
6
 
7
+ const roundTo4 = (x: number) => Math.round(x * 10000) / 10000
8
+
7
9
  describe('DOMMatrix Class Test', () => {
8
10
 
9
11
  beforeEach(() => {
@@ -111,8 +113,14 @@ describe('DOMMatrix Class Test', () => {
111
113
  })
112
114
  expect(m1.isIdentity).to.equal(d1.isIdentity);
113
115
  expect(m1.is2D).to.equal(d1.is2D);
114
- expect(m1.toFloat32Array()).to.deep.equal(d1.toFloat32Array());
115
- expect(m1.toFloat64Array()).to.deep.equal(d1.toFloat64Array());
116
+
117
+ // for some reason DOMMatrix in
118
+ // expect(m1.toFloat32Array()).to.deep.equal(d1.toFloat32Array());
119
+ // expect(m1.toFloat64Array()).to.deep.equal(d1.toFloat64Array());
120
+ expect(Array.from(m1.toFloat32Array()).map(roundTo4))
121
+ .to.deep.equal(Array.from(d1.toFloat32Array()).map(roundTo4));
122
+ expect(Array.from(m1.toFloat64Array()).map(roundTo4))
123
+ .to.deep.equal(Array.from(d1.toFloat64Array()).map(roundTo4));
116
124
  });
117
125
 
118
126
  cy.log('CSSMatrix.rotate(x:25, y:15)').then(() => {
@@ -127,8 +135,14 @@ describe('DOMMatrix Class Test', () => {
127
135
 
128
136
  expect(m2.isIdentity).to.equal(d2.isIdentity);
129
137
  expect(m2.is2D).to.equal(d2.is2D);
130
- expect(m2.toFloat32Array()).to.deep.equal(d2.toFloat32Array());
131
- expect(m2.toFloat64Array()).to.deep.equal(d2.toFloat64Array());
138
+
139
+ // same here
140
+ // expect(m2.toFloat32Array()).to.deep.equal(d2.toFloat32Array());
141
+ // expect(m2.toFloat64Array()).to.deep.equal(d2.toFloat64Array());
142
+ expect(Array.from(m2.toFloat32Array()).map(roundTo4))
143
+ .to.deep.equal(Array.from(d2.toFloat32Array()).map(roundTo4));
144
+ expect(Array.from(m2.toFloat64Array()).map(roundTo4))
145
+ .to.deep.equal(Array.from(d2.toFloat64Array()).map(roundTo4));
132
146
  });
133
147
 
134
148
  cy.log('CSSMatrix.translate(x:150)').then(() => {
@@ -143,8 +157,12 @@ describe('DOMMatrix Class Test', () => {
143
157
  })
144
158
  expect(m3.isIdentity).to.equal(d3.isIdentity);
145
159
  expect(m3.is2D).to.equal(d3.is2D);
146
- expect(m3.toFloat32Array()).to.deep.equal(d3.toFloat32Array());
147
- expect(m3.toFloat64Array()).to.deep.equal(d3.toFloat64Array());
160
+ // expect(m3.toFloat32Array()).to.deep.equal(d3.toFloat32Array());
161
+ // expect(m3.toFloat64Array()).to.deep.equal(d3.toFloat64Array());
162
+ expect(Array.from(m3.toFloat32Array()).map(roundTo4))
163
+ .to.deep.equal(Array.from(d3.toFloat32Array()).map(roundTo4));
164
+ expect(Array.from(m3.toFloat64Array()).map(roundTo4))
165
+ .to.deep.equal(Array.from(d3.toFloat64Array()).map(roundTo4));
148
166
  });
149
167
 
150
168
  cy.log('CSSMatrix.skew(x:15, y:-20)').then(() => {
@@ -159,8 +177,12 @@ describe('DOMMatrix Class Test', () => {
159
177
  })
160
178
  expect(m4.isIdentity).to.equal(d4.isIdentity);
161
179
  expect(m4.is2D).to.equal(d4.is2D);
162
- expect(m4.toFloat32Array()).to.deep.equal(d4.toFloat32Array());
163
- expect(m4.toFloat64Array()).to.deep.equal(d4.toFloat64Array());
180
+ // expect(m4.toFloat32Array()).to.deep.equal(d4.toFloat32Array());
181
+ // expect(m4.toFloat64Array()).to.deep.equal(d4.toFloat64Array());
182
+ expect(Array.from(m4.toFloat32Array()).map(roundTo4))
183
+ .to.deep.equal(Array.from(d4.toFloat32Array()).map(roundTo4));
184
+ expect(Array.from(m4.toFloat64Array()).map(roundTo4))
185
+ .to.deep.equal(Array.from(d4.toFloat64Array()).map(roundTo4));
164
186
  });
165
187
 
166
188
  cy.log('CSSMatrix.scale(x:1.3)').then(() => {
@@ -174,8 +196,12 @@ describe('DOMMatrix Class Test', () => {
174
196
  })
175
197
  expect(m5.isIdentity).to.equal(d5.isIdentity);
176
198
  expect(m5.is2D).to.equal(d5.is2D);
177
- expect(m5.toFloat32Array()).to.deep.equal(d5.toFloat32Array());
178
- expect(m5.toFloat64Array()).to.deep.equal(d5.toFloat64Array());
199
+ // expect(m5.toFloat32Array()).to.deep.equal(d5.toFloat32Array());
200
+ // expect(m5.toFloat64Array()).to.deep.equal(d5.toFloat64Array());
201
+ expect(Array.from(m5.toFloat32Array()).map(roundTo4))
202
+ .to.deep.equal(Array.from(d5.toFloat32Array()).map(roundTo4));
203
+ expect(Array.from(m5.toFloat64Array()).map(roundTo4))
204
+ .to.deep.equal(Array.from(d5.toFloat64Array()).map(roundTo4));
179
205
  });
180
206
 
181
207
  cy.log('CSSMatrix.scale(x:1.3,y:1.8)').then(() => {
@@ -189,8 +215,12 @@ describe('DOMMatrix Class Test', () => {
189
215
  })
190
216
  expect(m6.isIdentity).to.equal(d6.isIdentity);
191
217
  expect(m6.is2D).to.equal(d6.is2D);
192
- expect(m6.toFloat32Array()).to.deep.equal(d6.toFloat32Array());
193
- expect(m6.toFloat64Array()).to.deep.equal(d6.toFloat64Array());
218
+ // expect(m6.toFloat32Array()).to.deep.equal(d6.toFloat32Array());
219
+ // expect(m6.toFloat64Array()).to.deep.equal(d6.toFloat64Array());
220
+ expect(Array.from(m6.toFloat32Array()).map(roundTo4))
221
+ .to.deep.equal(Array.from(d6.toFloat32Array()).map(roundTo4));
222
+ expect(Array.from(m6.toFloat64Array()).map(roundTo4))
223
+ .to.deep.equal(Array.from(d6.toFloat64Array()).map(roundTo4));
194
224
  });
195
225
 
196
226
  cy.log('CSSMatrix.transformPoint').then(() => {
@@ -283,10 +313,11 @@ describe('DOMMatrix Class Test', () => {
283
313
  cy.get('.bg-secondary').then(($el) => {
284
314
  $el[0].style.transform = dom.toString();
285
315
  });
316
+
286
317
  cy.log('Due to the nature of the native DOMMatrix RegExp, for consistency reasons we\'re rounding numbers to 6 decimals in this test.')
287
318
 
288
- expect(Array.from(css.toFloat32Array()).map(x=> Math.floor(x * 10**6) / 10**6))
289
- .to.deep.equal(Array.from(dom.toFloat32Array()).map(x=> Math.floor(x * 10**6) / 10**6));
319
+ expect(Array.from(css.toFloat32Array()).map(roundTo4))
320
+ .to.deep.equal(Array.from(dom.toFloat32Array()).map(roundTo4));
290
321
 
291
322
  cy.wrap(css).as('css')
292
323
  .log('The native `DOMMatrix` is a little weird when it comes to rotateAxisAngle, it falsely claims the identity matrix is NOT `is2D`')
@@ -294,6 +325,4 @@ describe('DOMMatrix Class Test', () => {
294
325
  .get('@css').its('is2D').should((test === 'rotate3d1' ? 'not.equal' : 'equal'), dom.is2D);
295
326
  });
296
327
  })
297
-
298
-
299
- });
328
+ });
@@ -1,2 +1,2 @@
1
- "use strict";var Z=Object.defineProperty;var z=(s,t,e)=>t in s?Z(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e;var p=(s,t,e)=>(z(s,typeof t!="symbol"?t+"":t,e),e);const $={a:1,b:0,c:0,d:1,e:0,f:0,m11:1,m12:0,m13:0,m14:0,m21:0,m22:1,m23:0,m24:0,m31:0,m32:0,m33:1,m34:0,m41:0,m42:0,m43:0,m44:1,is2D:!0,isIdentity:!0},E=s=>(s instanceof Float64Array||s instanceof Float32Array||Array.isArray(s)&&s.every(t=>typeof t=="number"))&&[6,16].some(t=>s.length===t),P=s=>s instanceof DOMMatrix||s instanceof y||typeof s=="object"&&Object.keys($).every(t=>s&&t in s),g=s=>{const t=new y,e=Array.from(s);if(!E(e))throw TypeError(`CSSMatrix: "${e.join(",")}" must be an array with 6/16 numbers.`);if(e.length===16){const[n,i,r,a,l,m,h,c,u,f,w,o,d,A,M,b]=e;t.m11=n,t.a=n,t.m21=l,t.c=l,t.m31=u,t.m41=d,t.e=d,t.m12=i,t.b=i,t.m22=m,t.d=m,t.m32=f,t.m42=A,t.f=A,t.m13=r,t.m23=h,t.m33=w,t.m43=M,t.m14=a,t.m24=c,t.m34=o,t.m44=b}else if(e.length===6){const[n,i,r,a,l,m]=e;t.m11=n,t.a=n,t.m12=i,t.b=i,t.m21=r,t.c=r,t.m22=a,t.d=a,t.m41=l,t.e=l,t.m42=m,t.f=m}return t},X=s=>{if(P(s))return g([s.m11,s.m12,s.m13,s.m14,s.m21,s.m22,s.m23,s.m24,s.m31,s.m32,s.m33,s.m34,s.m41,s.m42,s.m43,s.m44]);throw TypeError(`CSSMatrix: "${JSON.stringify(s)}" is not a DOMMatrix / CSSMatrix / JSON compatible object.`)},O=s=>{if(typeof s!="string")throw TypeError(`CSSMatrix: "${JSON.stringify(s)}" is not a string.`);const t=String(s).replace(/\s/g,"");let e=new y;const n=`CSSMatrix: invalid transform string "${s}"`;return t.split(")").filter(i=>i).forEach(i=>{const[r,a]=i.split("(");if(!a)throw TypeError(n);const l=a.split(",").map(o=>o.includes("rad")?parseFloat(o)*(180/Math.PI):parseFloat(o)),[m,h,c,u]=l,f=[m,h,c],w=[m,h,c,u];if(r==="perspective"&&m&&[h,c].every(o=>o===void 0))e.m34=-1/m;else if(r.includes("matrix")&&[6,16].includes(l.length)&&l.every(o=>!Number.isNaN(+o))){const o=l.map(d=>Math.abs(d)<1e-6?0:d);e=e.multiply(g(o))}else if(r==="translate3d"&&f.every(o=>!Number.isNaN(+o)))e=e.translate(m,h,c);else if(r==="translate"&&m&&c===void 0)e=e.translate(m,h||0,0);else if(r==="rotate3d"&&w.every(o=>!Number.isNaN(+o))&&u)e=e.rotateAxisAngle(m,h,c,u);else if(r==="rotate"&&m&&[h,c].every(o=>o===void 0))e=e.rotate(0,0,m);else if(r==="scale3d"&&f.every(o=>!Number.isNaN(+o))&&f.some(o=>o!==1))e=e.scale(m,h,c);else if(r==="scale"&&!Number.isNaN(m)&&m!==1&&c===void 0){const d=Number.isNaN(+h)?m:h;e=e.scale(m,d,1)}else if(r==="skew"&&(m||!Number.isNaN(m)&&h)&&c===void 0)e=e.skew(m,h||0);else if(["translate","rotate","scale","skew"].some(o=>r.includes(o))&&/[XYZ]/.test(r)&&m&&[h,c].every(o=>o===void 0))if(r==="skewX"||r==="skewY")e=e[r](m);else{const o=r.replace(/[XYZ]/,""),d=r.replace(o,""),A=["X","Y","Z"].indexOf(d),M=o==="scale"?1:0,b=[A===0?m:M,A===1?m:M,A===2?m:M];e=e[o](...b)}else throw TypeError(n)}),e},x=(s,t)=>t?[s.a,s.b,s.c,s.d,s.e,s.f]:[s.m11,s.m12,s.m13,s.m14,s.m21,s.m22,s.m23,s.m24,s.m31,s.m32,s.m33,s.m34,s.m41,s.m42,s.m43,s.m44],Y=(s,t,e)=>{const n=new y;return n.m41=s,n.e=s,n.m42=t,n.f=t,n.m43=e,n},F=(s,t,e)=>{const n=new y,i=Math.PI/180,r=s*i,a=t*i,l=e*i,m=Math.cos(r),h=-Math.sin(r),c=Math.cos(a),u=-Math.sin(a),f=Math.cos(l),w=-Math.sin(l),o=c*f,d=-c*w;n.m11=o,n.a=o,n.m12=d,n.b=d,n.m13=u;const A=h*u*f+m*w;n.m21=A,n.c=A;const M=m*f-h*u*w;return n.m22=M,n.d=M,n.m23=-h*c,n.m31=h*w-m*u*f,n.m32=h*f+m*u*w,n.m33=m*c,n},T=(s,t,e,n)=>{const i=new y,r=Math.sqrt(s*s+t*t+e*e);if(r===0)return i;const a=s/r,l=t/r,m=e/r,h=n*(Math.PI/360),c=Math.sin(h),u=Math.cos(h),f=c*c,w=a*a,o=l*l,d=m*m,A=1-2*(o+d)*f;i.m11=A,i.a=A;const M=2*(a*l*f+m*c*u);i.m12=M,i.b=M,i.m13=2*(a*m*f-l*c*u);const b=2*(l*a*f-m*c*u);i.m21=b,i.c=b;const k=1-2*(d+w)*f;return i.m22=k,i.d=k,i.m23=2*(l*m*f+a*c*u),i.m31=2*(m*a*f+l*c*u),i.m32=2*(m*l*f-a*c*u),i.m33=1-2*(w+o)*f,i},I=(s,t,e)=>{const n=new y;return n.m11=s,n.a=s,n.m22=t,n.d=t,n.m33=e,n},v=(s,t)=>{const e=new y;if(s){const n=s*Math.PI/180,i=Math.tan(n);e.m21=i,e.c=i}if(t){const n=t*Math.PI/180,i=Math.tan(n);e.m12=i,e.b=i}return e},R=s=>v(s,0),D=s=>v(0,s),N=(s,t)=>{const e=t.m11*s.m11+t.m12*s.m21+t.m13*s.m31+t.m14*s.m41,n=t.m11*s.m12+t.m12*s.m22+t.m13*s.m32+t.m14*s.m42,i=t.m11*s.m13+t.m12*s.m23+t.m13*s.m33+t.m14*s.m43,r=t.m11*s.m14+t.m12*s.m24+t.m13*s.m34+t.m14*s.m44,a=t.m21*s.m11+t.m22*s.m21+t.m23*s.m31+t.m24*s.m41,l=t.m21*s.m12+t.m22*s.m22+t.m23*s.m32+t.m24*s.m42,m=t.m21*s.m13+t.m22*s.m23+t.m23*s.m33+t.m24*s.m43,h=t.m21*s.m14+t.m22*s.m24+t.m23*s.m34+t.m24*s.m44,c=t.m31*s.m11+t.m32*s.m21+t.m33*s.m31+t.m34*s.m41,u=t.m31*s.m12+t.m32*s.m22+t.m33*s.m32+t.m34*s.m42,f=t.m31*s.m13+t.m32*s.m23+t.m33*s.m33+t.m34*s.m43,w=t.m31*s.m14+t.m32*s.m24+t.m33*s.m34+t.m34*s.m44,o=t.m41*s.m11+t.m42*s.m21+t.m43*s.m31+t.m44*s.m41,d=t.m41*s.m12+t.m42*s.m22+t.m43*s.m32+t.m44*s.m42,A=t.m41*s.m13+t.m42*s.m23+t.m43*s.m33+t.m44*s.m43,M=t.m41*s.m14+t.m42*s.m24+t.m43*s.m34+t.m44*s.m44;return g([e,n,i,r,a,l,m,h,c,u,f,w,o,d,A,M])};class y{constructor(t){return this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0,this.m11=1,this.m12=0,this.m13=0,this.m14=0,this.m21=0,this.m22=1,this.m23=0,this.m24=0,this.m31=0,this.m32=0,this.m33=1,this.m34=0,this.m41=0,this.m42=0,this.m43=0,this.m44=1,t?this.setMatrixValue(t):this}get isIdentity(){return this.m11===1&&this.m12===0&&this.m13===0&&this.m14===0&&this.m21===0&&this.m22===1&&this.m23===0&&this.m24===0&&this.m31===0&&this.m32===0&&this.m33===1&&this.m34===0&&this.m41===0&&this.m42===0&&this.m43===0&&this.m44===1}get is2D(){return this.m31===0&&this.m32===0&&this.m33===1&&this.m34===0&&this.m43===0&&this.m44===1}setMatrixValue(t){return typeof t=="string"&&t.length&&t!=="none"?O(t):Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?g(t):typeof t=="object"?X(t):this}toFloat32Array(t){return Float32Array.from(x(this,t))}toFloat64Array(t){return Float64Array.from(x(this,t))}toString(){const{is2D:t}=this,e=this.toFloat64Array(t).join(", ");return`${t?"matrix":"matrix3d"}(${e})`}toJSON(){const{is2D:t,isIdentity:e}=this;return{...this,is2D:t,isIdentity:e}}multiply(t){return N(this,t)}translate(t,e,n){const i=t;let r=e,a=n;return typeof r>"u"&&(r=0),typeof a>"u"&&(a=0),N(this,Y(i,r,a))}scale(t,e,n){const i=t;let r=e,a=n;return typeof r>"u"&&(r=t),typeof a>"u"&&(a=1),N(this,I(i,r,a))}rotate(t,e,n){let i=t,r=e||0,a=n||0;return typeof t=="number"&&typeof e>"u"&&typeof n>"u"&&(a=i,i=0,r=0),N(this,F(i,r,a))}rotateAxisAngle(t,e,n,i){if([t,e,n,i].some(r=>Number.isNaN(+r)))throw new TypeError("CSSMatrix: expecting 4 values");return N(this,T(t,e,n,i))}skewX(t){return N(this,R(t))}skewY(t){return N(this,D(t))}skew(t,e){return N(this,v(t,e))}transformPoint(t){const e=this.m11*t.x+this.m21*t.y+this.m31*t.z+this.m41*t.w,n=this.m12*t.x+this.m22*t.y+this.m32*t.z+this.m42*t.w,i=this.m13*t.x+this.m23*t.y+this.m33*t.z+this.m43*t.w,r=this.m14*t.x+this.m24*t.y+this.m34*t.z+this.m44*t.w;return t instanceof DOMPoint?new DOMPoint(e,n,i,r):{x:e,y:n,z:i,w:r}}}p(y,"Translate",Y),p(y,"Rotate",F),p(y,"RotateAxisAngle",T),p(y,"Scale",I),p(y,"SkewX",R),p(y,"SkewY",D),p(y,"Skew",v),p(y,"Multiply",N),p(y,"fromArray",g),p(y,"fromMatrix",X),p(y,"fromString",O),p(y,"toArray",x),p(y,"isCompatibleArray",E),p(y,"isCompatibleObject",P);module.exports=y;
1
+ "use strict";var Z=Object.defineProperty;var z=(s,t,e)=>t in s?Z(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e;var p=(s,t,e)=>z(s,typeof t!="symbol"?t+"":t,e);const $={a:1,b:0,c:0,d:1,e:0,f:0,m11:1,m12:0,m13:0,m14:0,m21:0,m22:1,m23:0,m24:0,m31:0,m32:0,m33:1,m34:0,m41:0,m42:0,m43:0,m44:1,is2D:!0,isIdentity:!0},E=s=>(s instanceof Float64Array||s instanceof Float32Array||Array.isArray(s)&&s.every(t=>typeof t=="number"))&&[6,16].some(t=>s.length===t),P=s=>s instanceof DOMMatrix||s instanceof y||typeof s=="object"&&Object.keys($).every(t=>s&&t in s),g=s=>{const t=new y,e=Array.from(s);if(!E(e))throw TypeError(`CSSMatrix: "${e.join(",")}" must be an array with 6/16 numbers.`);if(e.length===16){const[n,i,r,a,l,m,h,c,u,f,w,o,d,A,M,b]=e;t.m11=n,t.a=n,t.m21=l,t.c=l,t.m31=u,t.m41=d,t.e=d,t.m12=i,t.b=i,t.m22=m,t.d=m,t.m32=f,t.m42=A,t.f=A,t.m13=r,t.m23=h,t.m33=w,t.m43=M,t.m14=a,t.m24=c,t.m34=o,t.m44=b}else if(e.length===6){const[n,i,r,a,l,m]=e;t.m11=n,t.a=n,t.m12=i,t.b=i,t.m21=r,t.c=r,t.m22=a,t.d=a,t.m41=l,t.e=l,t.m42=m,t.f=m}return t},X=s=>{if(P(s))return g([s.m11,s.m12,s.m13,s.m14,s.m21,s.m22,s.m23,s.m24,s.m31,s.m32,s.m33,s.m34,s.m41,s.m42,s.m43,s.m44]);throw TypeError(`CSSMatrix: "${JSON.stringify(s)}" is not a DOMMatrix / CSSMatrix / JSON compatible object.`)},O=s=>{if(typeof s!="string")throw TypeError(`CSSMatrix: "${JSON.stringify(s)}" is not a string.`);const t=String(s).replace(/\s/g,"");let e=new y;const n=`CSSMatrix: invalid transform string "${s}"`;return t.split(")").filter(i=>i).forEach(i=>{const[r,a]=i.split("(");if(!a)throw TypeError(n);const l=a.split(",").map(o=>o.includes("rad")?parseFloat(o)*(180/Math.PI):parseFloat(o)),[m,h,c,u]=l,f=[m,h,c],w=[m,h,c,u];if(r==="perspective"&&m&&[h,c].every(o=>o===void 0))e.m34=-1/m;else if(r.includes("matrix")&&[6,16].includes(l.length)&&l.every(o=>!Number.isNaN(+o))){const o=l.map(d=>Math.abs(d)<1e-6?0:d);e=e.multiply(g(o))}else if(r==="translate3d"&&f.every(o=>!Number.isNaN(+o)))e=e.translate(m,h,c);else if(r==="translate"&&m&&c===void 0)e=e.translate(m,h||0,0);else if(r==="rotate3d"&&w.every(o=>!Number.isNaN(+o))&&u)e=e.rotateAxisAngle(m,h,c,u);else if(r==="rotate"&&m&&[h,c].every(o=>o===void 0))e=e.rotate(0,0,m);else if(r==="scale3d"&&f.every(o=>!Number.isNaN(+o))&&f.some(o=>o!==1))e=e.scale(m,h,c);else if(r==="scale"&&!Number.isNaN(m)&&m!==1&&c===void 0){const d=Number.isNaN(+h)?m:h;e=e.scale(m,d,1)}else if(r==="skew"&&(m||!Number.isNaN(m)&&h)&&c===void 0)e=e.skew(m,h||0);else if(["translate","rotate","scale","skew"].some(o=>r.includes(o))&&/[XYZ]/.test(r)&&m&&[h,c].every(o=>o===void 0))if(r==="skewX"||r==="skewY")e=e[r](m);else{const o=r.replace(/[XYZ]/,""),d=r.replace(o,""),A=["X","Y","Z"].indexOf(d),M=o==="scale"?1:0,b=[A===0?m:M,A===1?m:M,A===2?m:M];e=e[o](...b)}else throw TypeError(n)}),e},x=(s,t)=>t?[s.a,s.b,s.c,s.d,s.e,s.f]:[s.m11,s.m12,s.m13,s.m14,s.m21,s.m22,s.m23,s.m24,s.m31,s.m32,s.m33,s.m34,s.m41,s.m42,s.m43,s.m44],Y=(s,t,e)=>{const n=new y;return n.m41=s,n.e=s,n.m42=t,n.f=t,n.m43=e,n},F=(s,t,e)=>{const n=new y,i=Math.PI/180,r=s*i,a=t*i,l=e*i,m=Math.cos(r),h=-Math.sin(r),c=Math.cos(a),u=-Math.sin(a),f=Math.cos(l),w=-Math.sin(l),o=c*f,d=-c*w;n.m11=o,n.a=o,n.m12=d,n.b=d,n.m13=u;const A=h*u*f+m*w;n.m21=A,n.c=A;const M=m*f-h*u*w;return n.m22=M,n.d=M,n.m23=-h*c,n.m31=h*w-m*u*f,n.m32=h*f+m*u*w,n.m33=m*c,n},T=(s,t,e,n)=>{const i=new y,r=Math.sqrt(s*s+t*t+e*e);if(r===0)return i;const a=s/r,l=t/r,m=e/r,h=n*(Math.PI/360),c=Math.sin(h),u=Math.cos(h),f=c*c,w=a*a,o=l*l,d=m*m,A=1-2*(o+d)*f;i.m11=A,i.a=A;const M=2*(a*l*f+m*c*u);i.m12=M,i.b=M,i.m13=2*(a*m*f-l*c*u);const b=2*(l*a*f-m*c*u);i.m21=b,i.c=b;const k=1-2*(d+w)*f;return i.m22=k,i.d=k,i.m23=2*(l*m*f+a*c*u),i.m31=2*(m*a*f+l*c*u),i.m32=2*(m*l*f-a*c*u),i.m33=1-2*(w+o)*f,i},I=(s,t,e)=>{const n=new y;return n.m11=s,n.a=s,n.m22=t,n.d=t,n.m33=e,n},v=(s,t)=>{const e=new y;if(s){const n=s*Math.PI/180,i=Math.tan(n);e.m21=i,e.c=i}if(t){const n=t*Math.PI/180,i=Math.tan(n);e.m12=i,e.b=i}return e},R=s=>v(s,0),D=s=>v(0,s),N=(s,t)=>{const e=t.m11*s.m11+t.m12*s.m21+t.m13*s.m31+t.m14*s.m41,n=t.m11*s.m12+t.m12*s.m22+t.m13*s.m32+t.m14*s.m42,i=t.m11*s.m13+t.m12*s.m23+t.m13*s.m33+t.m14*s.m43,r=t.m11*s.m14+t.m12*s.m24+t.m13*s.m34+t.m14*s.m44,a=t.m21*s.m11+t.m22*s.m21+t.m23*s.m31+t.m24*s.m41,l=t.m21*s.m12+t.m22*s.m22+t.m23*s.m32+t.m24*s.m42,m=t.m21*s.m13+t.m22*s.m23+t.m23*s.m33+t.m24*s.m43,h=t.m21*s.m14+t.m22*s.m24+t.m23*s.m34+t.m24*s.m44,c=t.m31*s.m11+t.m32*s.m21+t.m33*s.m31+t.m34*s.m41,u=t.m31*s.m12+t.m32*s.m22+t.m33*s.m32+t.m34*s.m42,f=t.m31*s.m13+t.m32*s.m23+t.m33*s.m33+t.m34*s.m43,w=t.m31*s.m14+t.m32*s.m24+t.m33*s.m34+t.m34*s.m44,o=t.m41*s.m11+t.m42*s.m21+t.m43*s.m31+t.m44*s.m41,d=t.m41*s.m12+t.m42*s.m22+t.m43*s.m32+t.m44*s.m42,A=t.m41*s.m13+t.m42*s.m23+t.m43*s.m33+t.m44*s.m43,M=t.m41*s.m14+t.m42*s.m24+t.m43*s.m34+t.m44*s.m44;return g([e,n,i,r,a,l,m,h,c,u,f,w,o,d,A,M])};class y{constructor(t){return this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0,this.m11=1,this.m12=0,this.m13=0,this.m14=0,this.m21=0,this.m22=1,this.m23=0,this.m24=0,this.m31=0,this.m32=0,this.m33=1,this.m34=0,this.m41=0,this.m42=0,this.m43=0,this.m44=1,t?this.setMatrixValue(t):this}get isIdentity(){return this.m11===1&&this.m12===0&&this.m13===0&&this.m14===0&&this.m21===0&&this.m22===1&&this.m23===0&&this.m24===0&&this.m31===0&&this.m32===0&&this.m33===1&&this.m34===0&&this.m41===0&&this.m42===0&&this.m43===0&&this.m44===1}get is2D(){return this.m31===0&&this.m32===0&&this.m33===1&&this.m34===0&&this.m43===0&&this.m44===1}setMatrixValue(t){return typeof t=="string"&&t.length&&t!=="none"?O(t):Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?g(t):typeof t=="object"?X(t):this}toFloat32Array(t){return Float32Array.from(x(this,t))}toFloat64Array(t){return Float64Array.from(x(this,t))}toString(){const{is2D:t}=this,e=this.toFloat64Array(t).join(", ");return`${t?"matrix":"matrix3d"}(${e})`}toJSON(){const{is2D:t,isIdentity:e}=this;return{...this,is2D:t,isIdentity:e}}multiply(t){return N(this,t)}translate(t,e,n){const i=t;let r=e,a=n;return typeof r>"u"&&(r=0),typeof a>"u"&&(a=0),N(this,Y(i,r,a))}scale(t,e,n){const i=t;let r=e,a=n;return typeof r>"u"&&(r=t),typeof a>"u"&&(a=1),N(this,I(i,r,a))}rotate(t,e,n){let i=t,r=e||0,a=n||0;return typeof t=="number"&&typeof e>"u"&&typeof n>"u"&&(a=i,i=0,r=0),N(this,F(i,r,a))}rotateAxisAngle(t,e,n,i){if([t,e,n,i].some(r=>Number.isNaN(+r)))throw new TypeError("CSSMatrix: expecting 4 values");return N(this,T(t,e,n,i))}skewX(t){return N(this,R(t))}skewY(t){return N(this,D(t))}skew(t,e){return N(this,v(t,e))}transformPoint(t){const e=this.m11*t.x+this.m21*t.y+this.m31*t.z+this.m41*t.w,n=this.m12*t.x+this.m22*t.y+this.m32*t.z+this.m42*t.w,i=this.m13*t.x+this.m23*t.y+this.m33*t.z+this.m43*t.w,r=this.m14*t.x+this.m24*t.y+this.m34*t.z+this.m44*t.w;return t instanceof DOMPoint?new DOMPoint(e,n,i,r):{x:e,y:n,z:i,w:r}}}p(y,"Translate",Y),p(y,"Rotate",F),p(y,"RotateAxisAngle",T),p(y,"Scale",I),p(y,"SkewX",R),p(y,"SkewY",D),p(y,"Skew",v),p(y,"Multiply",N),p(y,"fromArray",g),p(y,"fromMatrix",X),p(y,"fromString",O),p(y,"toArray",x),p(y,"isCompatibleArray",E),p(y,"isCompatibleObject",P);module.exports=y;
2
2
  //# sourceMappingURL=dommatrix.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dommatrix.cjs","sources":["../src/index.ts"],"sourcesContent":["import type { Matrix, Matrix3d, JSONMatrix, CSSMatrixInput, PointTuple } from './types';\n\n/** A model for JSONMatrix */\nconst JSON_MATRIX: JSONMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0,\n m11: 1,\n m12: 0,\n m13: 0,\n m14: 0,\n m21: 0,\n m22: 1,\n m23: 0,\n m24: 0,\n m31: 0,\n m32: 0,\n m33: 1,\n m34: 0,\n m41: 0,\n m42: 0,\n m43: 0,\n m44: 1,\n is2D: true,\n isIdentity: true,\n};\n\n// CSSMatrix Static methods\n// * `fromArray` is a more simple implementation, should also accept Float[32/64]Array;\n// * `fromMatrix` load values from another CSSMatrix/DOMMatrix instance or JSON object;\n// * `fromString` parses and loads values from any valid CSS transform string (TransformList).\n// * `isCompatibleArray` Checks if an array is compatible with CSSMatrix.\n// * `isCompatibleObject` Checks if an object is compatible with CSSMatrix.\n\n/** Checks if an array is compatible with CSSMatrix */\nconst isCompatibleArray = (array?: unknown): array is Matrix | Matrix3d | Float32Array | Float64Array => {\n return (\n (array instanceof Float64Array ||\n array instanceof Float32Array ||\n (Array.isArray(array) && array.every(x => typeof x === 'number'))) &&\n [6, 16].some(x => array.length === x)\n );\n};\n\n/** Checks if an object is compatible with CSSMatrix */\nconst isCompatibleObject = (object?: unknown): object is CSSMatrix | DOMMatrix | JSONMatrix => {\n return (\n object instanceof DOMMatrix ||\n object instanceof CSSMatrix ||\n (typeof object === 'object' && Object.keys(JSON_MATRIX).every(k => object && k in object))\n );\n};\n\n/**\n * Creates a new mutable `CSSMatrix` instance given an array of 16/6 floating point values.\n * This static method invalidates arrays that contain non-number elements.\n *\n * If the array has six values, the result is a 2D matrix; if the array has 16 values,\n * the result is a 3D matrix. Otherwise, a TypeError exception is thrown.\n *\n * @param array an `Array` to feed values from.\n * @return the resulted matrix.\n */\nconst fromArray = (array: any[] | Float32Array | Float64Array): CSSMatrix => {\n const m = new CSSMatrix();\n const a = Array.from(array);\n\n if (!isCompatibleArray(a)) {\n throw TypeError(`CSSMatrix: \"${a.join(',')}\" must be an array with 6/16 numbers.`);\n }\n if (a.length === 16) {\n const [m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44] = a;\n\n m.m11 = m11;\n m.a = m11;\n\n m.m21 = m21;\n m.c = m21;\n\n m.m31 = m31;\n\n m.m41 = m41;\n m.e = m41;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m22 = m22;\n m.d = m22;\n\n m.m32 = m32;\n\n m.m42 = m42;\n m.f = m42;\n\n m.m13 = m13;\n m.m23 = m23;\n m.m33 = m33;\n m.m43 = m43;\n m.m14 = m14;\n m.m24 = m24;\n m.m34 = m34;\n m.m44 = m44;\n } else if (a.length === 6) {\n const [M11, M12, M21, M22, M41, M42] = a;\n\n m.m11 = M11;\n m.a = M11;\n\n m.m12 = M12;\n m.b = M12;\n\n m.m21 = M21;\n m.c = M21;\n\n m.m22 = M22;\n m.d = M22;\n\n m.m41 = M41;\n m.e = M41;\n\n m.m42 = M42;\n m.f = M42;\n }\n return m;\n};\n\n/**\n * Creates a new mutable `CSSMatrix` instance given an existing matrix or a\n * `DOMMatrix` instance which provides the values for its properties.\n *\n * @param m the source matrix to feed values from.\n * @return the resulted matrix.\n */\nconst fromMatrix = (m: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix => {\n if (isCompatibleObject(m)) {\n return fromArray([\n m.m11,\n m.m12,\n m.m13,\n m.m14,\n m.m21,\n m.m22,\n m.m23,\n m.m24,\n m.m31,\n m.m32,\n m.m33,\n m.m34,\n m.m41,\n m.m42,\n m.m43,\n m.m44,\n ]);\n }\n throw TypeError(`CSSMatrix: \"${JSON.stringify(m)}\" is not a DOMMatrix / CSSMatrix / JSON compatible object.`);\n};\n\n/**\n * Creates a new mutable `CSSMatrix` given any valid CSS transform string,\n * or what we call `TransformList`:\n *\n * * `matrix(a, b, c, d, e, f)` - valid matrix() transform function\n * * `matrix3d(m11, m12, m13, ...m44)` - valid matrix3d() transform function\n * * `translate(tx, ty) rotateX(alpha)` - any valid transform function(s)\n *\n * @copyright thednp © 2021\n *\n * @param source valid CSS transform string syntax.\n * @return the resulted matrix.\n */\nconst fromString = (source: string): CSSMatrix => {\n if (typeof source !== 'string') {\n throw TypeError(`CSSMatrix: \"${JSON.stringify(source)}\" is not a string.`);\n }\n const str = String(source).replace(/\\s/g, '');\n let m = new CSSMatrix();\n const invalidStringError = `CSSMatrix: invalid transform string \"${source}\"`;\n\n // const px = ['perspective'];\n // const length = ['translate', 'translate3d', 'translateX', 'translateY', 'translateZ'];\n // const deg = ['rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'skew', 'skewX', 'skewY'];\n // const abs = ['scale', 'scale3d', 'matrix', 'matrix3d'];\n // const transformFunctions = px.concat(length, deg, abs);\n\n str\n .split(')')\n .filter(f => f)\n .forEach(tf => {\n const [prop, value] = tf.split('(');\n\n // invalidate empty string\n if (!value) throw TypeError(invalidStringError);\n\n const components = value\n .split(',')\n .map(n => (n.includes('rad') ? parseFloat(n) * (180 / Math.PI) : parseFloat(n)));\n\n const [x, y, z, a] = components;\n const xyz = [x, y, z];\n const xyza = [x, y, z, a];\n\n // single number value expected\n if (prop === 'perspective' && x && [y, z].every(n => n === undefined)) {\n m.m34 = -1 / x;\n // 6/16 number values expected\n } else if (\n prop.includes('matrix') &&\n [6, 16].includes(components.length) &&\n components.every(n => !Number.isNaN(+n))\n ) {\n const values = components.map(n => (Math.abs(n) < 1e-6 ? 0 : n));\n m = m.multiply(fromArray(values as Matrix | Matrix3d));\n // 3 values expected\n } else if (prop === 'translate3d' && xyz.every(n => !Number.isNaN(+n))) {\n m = m.translate(x, y, z);\n // single/double number value(s) expected\n } else if (prop === 'translate' && x && z === undefined) {\n m = m.translate(x, y || 0, 0);\n // all 4 values expected\n } else if (prop === 'rotate3d' && xyza.every(n => !Number.isNaN(+n)) && a) {\n m = m.rotateAxisAngle(x, y, z, a);\n // single value expected\n } else if (prop === 'rotate' && x && [y, z].every(n => n === undefined)) {\n m = m.rotate(0, 0, x);\n // 3 values expected\n } else if (prop === 'scale3d' && xyz.every(n => !Number.isNaN(+n)) && xyz.some(n => n !== 1)) {\n m = m.scale(x, y, z);\n // single value expected\n } else if (prop === 'scale' && !Number.isNaN(x) && x !== 1 && z === undefined) {\n const nosy = Number.isNaN(+y);\n const sy = nosy ? x : y;\n m = m.scale(x, sy, 1);\n // single/double value expected\n } else if (prop === 'skew' && (x || (!Number.isNaN(x) && y)) && z === undefined) {\n m = m.skew(x, y || 0);\n } else if (\n ['translate', 'rotate', 'scale', 'skew'].some(p => prop.includes(p)) &&\n /[XYZ]/.test(prop) &&\n x &&\n [y, z].every(n => n === undefined) // a single value expected\n ) {\n if ('skewX' === prop || 'skewY' === prop) {\n m = m[prop](x);\n } else {\n const fn = prop.replace(/[XYZ]/, '') as 'scale' | 'translate' | 'rotate';\n const axis = prop.replace(fn, '');\n const idx = ['X', 'Y', 'Z'].indexOf(axis);\n const def = fn === 'scale' ? 1 : 0;\n const axeValues: [number, number, number] = [idx === 0 ? x : def, idx === 1 ? x : def, idx === 2 ? x : def];\n m = m[fn](...axeValues);\n }\n } else {\n throw TypeError(invalidStringError);\n }\n });\n\n return m;\n};\n\n/**\n * Returns an *Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param m the source matrix to feed values from.\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\nconst toArray = (m: CSSMatrix | DOMMatrix | JSONMatrix, is2D?: boolean): Matrix | Matrix3d => {\n if (is2D) {\n return [m.a, m.b, m.c, m.d, m.e, m.f];\n }\n return [\n m.m11,\n m.m12,\n m.m13,\n m.m14,\n m.m21,\n m.m22,\n m.m23,\n m.m24,\n m.m31,\n m.m32,\n m.m33,\n m.m34,\n m.m41,\n m.m42,\n m.m43,\n m.m44,\n ];\n};\n\n// Transform Functions\n// https://www.w3.org/TR/css-transforms-1/#transform-functions\n\n/**\n * Creates a new `CSSMatrix` for the translation matrix and returns it.\n * This method is equivalent to the CSS `translate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translate3d\n *\n * @param x the `x-axis` position.\n * @param y the `y-axis` position.\n * @param z the `z-axis` position.\n * @return the resulted matrix.\n */\nconst Translate = (x: number, y: number, z: number): CSSMatrix => {\n const m = new CSSMatrix();\n m.m41 = x;\n m.e = x;\n m.m42 = y;\n m.f = y;\n m.m43 = z;\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n *\n * http://en.wikipedia.org/wiki/Rotation_matrix\n *\n * @param rx the `x-axis` rotation.\n * @param ry the `y-axis` rotation.\n * @param rz the `z-axis` rotation.\n * @return the resulted matrix.\n */\nconst Rotate = (rx: number, ry: number, rz: number): CSSMatrix => {\n const m = new CSSMatrix();\n const degToRad = Math.PI / 180;\n const radX = rx * degToRad;\n const radY = ry * degToRad;\n const radZ = rz * degToRad;\n\n // minus sin() because of right-handed system\n const cosx = Math.cos(radX);\n const sinx = -Math.sin(radX);\n const cosy = Math.cos(radY);\n const siny = -Math.sin(radY);\n const cosz = Math.cos(radZ);\n const sinz = -Math.sin(radZ);\n\n const m11 = cosy * cosz;\n const m12 = -cosy * sinz;\n\n m.m11 = m11;\n m.a = m11;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = siny;\n\n const m21 = sinx * siny * cosz + cosx * sinz;\n m.m21 = m21;\n m.c = m21;\n\n const m22 = cosx * cosz - sinx * siny * sinz;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = -sinx * cosy;\n\n m.m31 = sinx * sinz - cosx * siny * cosz;\n m.m32 = sinx * cosz + cosx * siny * sinz;\n m.m33 = cosx * cosy;\n\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n * This method is equivalent to the CSS `rotate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate3d\n *\n * @param x the `x-axis` vector length.\n * @param y the `y-axis` vector length.\n * @param z the `z-axis` vector length.\n * @param alpha the value in degrees of the rotation.\n * @return the resulted matrix.\n */\nconst RotateAxisAngle = (x: number, y: number, z: number, alpha: number): CSSMatrix => {\n const m = new CSSMatrix();\n const length = Math.sqrt(x * x + y * y + z * z);\n\n if (length === 0) {\n // bad vector length, return identity\n return m;\n }\n\n const X = x / length;\n const Y = y / length;\n const Z = z / length;\n\n const angle = alpha * (Math.PI / 360);\n const sinA = Math.sin(angle);\n const cosA = Math.cos(angle);\n const sinA2 = sinA * sinA;\n const x2 = X * X;\n const y2 = Y * Y;\n const z2 = Z * Z;\n\n const m11 = 1 - 2 * (y2 + z2) * sinA2;\n m.m11 = m11;\n m.a = m11;\n\n const m12 = 2 * (X * Y * sinA2 + Z * sinA * cosA);\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = 2 * (X * Z * sinA2 - Y * sinA * cosA);\n\n const m21 = 2 * (Y * X * sinA2 - Z * sinA * cosA);\n m.m21 = m21;\n m.c = m21;\n\n const m22 = 1 - 2 * (z2 + x2) * sinA2;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = 2 * (Y * Z * sinA2 + X * sinA * cosA);\n m.m31 = 2 * (Z * X * sinA2 + Y * sinA * cosA);\n m.m32 = 2 * (Z * Y * sinA2 - X * sinA * cosA);\n m.m33 = 1 - 2 * (x2 + y2) * sinA2;\n\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the scale matrix and returns it.\n * This method is equivalent to the CSS `scale3d()` function, except it doesn't\n * accept {x, y, z} transform origin parameters.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale3d\n *\n * @param x the `x-axis` scale.\n * @param y the `y-axis` scale.\n * @param z the `z-axis` scale.\n * @return the resulted matrix.\n */\nconst Scale = (x: number, y: number, z: number): CSSMatrix => {\n const m = new CSSMatrix();\n m.m11 = x;\n m.a = x;\n\n m.m22 = y;\n m.d = y;\n\n m.m33 = z;\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of both the `x-axis` and`y-axis`\n * matrix and returns it. This method is equivalent to the CSS `skew()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew\n *\n * @param angleX the X-angle in degrees.\n * @param angleY the Y-angle in degrees.\n * @return the resulted matrix.\n */\nconst Skew = (angleX: number, angleY: number): CSSMatrix => {\n const m = new CSSMatrix();\n if (angleX) {\n const radX = (angleX * Math.PI) / 180;\n const tX = Math.tan(radX);\n m.m21 = tX;\n m.c = tX;\n }\n if (angleY) {\n const radY = (angleY * Math.PI) / 180;\n const tY = Math.tan(radY);\n m.m12 = tY;\n m.b = tY;\n }\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of the `x-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewX()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewX\n *\n * @param angle the angle in degrees.\n * @return the resulted matrix.\n */\nconst SkewX = (angle: number): CSSMatrix => {\n return Skew(angle, 0);\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of the `y-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewY()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewY\n *\n * @param angle the angle in degrees.\n * @return the resulted matrix.\n */\nconst SkewY = (angle: number): CSSMatrix => {\n return Skew(0, angle);\n};\n\n/**\n * Creates a new `CSSMatrix` resulted from the multiplication of two matrixes\n * and returns it. Both matrixes are not changed.\n *\n * @param m1 the first matrix.\n * @param m2 the second matrix.\n * @return the resulted matrix.\n */\nconst Multiply = (m1: CSSMatrix | DOMMatrix | JSONMatrix, m2: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix => {\n const m11 = m2.m11 * m1.m11 + m2.m12 * m1.m21 + m2.m13 * m1.m31 + m2.m14 * m1.m41;\n const m12 = m2.m11 * m1.m12 + m2.m12 * m1.m22 + m2.m13 * m1.m32 + m2.m14 * m1.m42;\n const m13 = m2.m11 * m1.m13 + m2.m12 * m1.m23 + m2.m13 * m1.m33 + m2.m14 * m1.m43;\n const m14 = m2.m11 * m1.m14 + m2.m12 * m1.m24 + m2.m13 * m1.m34 + m2.m14 * m1.m44;\n\n const m21 = m2.m21 * m1.m11 + m2.m22 * m1.m21 + m2.m23 * m1.m31 + m2.m24 * m1.m41;\n const m22 = m2.m21 * m1.m12 + m2.m22 * m1.m22 + m2.m23 * m1.m32 + m2.m24 * m1.m42;\n const m23 = m2.m21 * m1.m13 + m2.m22 * m1.m23 + m2.m23 * m1.m33 + m2.m24 * m1.m43;\n const m24 = m2.m21 * m1.m14 + m2.m22 * m1.m24 + m2.m23 * m1.m34 + m2.m24 * m1.m44;\n\n const m31 = m2.m31 * m1.m11 + m2.m32 * m1.m21 + m2.m33 * m1.m31 + m2.m34 * m1.m41;\n const m32 = m2.m31 * m1.m12 + m2.m32 * m1.m22 + m2.m33 * m1.m32 + m2.m34 * m1.m42;\n const m33 = m2.m31 * m1.m13 + m2.m32 * m1.m23 + m2.m33 * m1.m33 + m2.m34 * m1.m43;\n const m34 = m2.m31 * m1.m14 + m2.m32 * m1.m24 + m2.m33 * m1.m34 + m2.m34 * m1.m44;\n\n const m41 = m2.m41 * m1.m11 + m2.m42 * m1.m21 + m2.m43 * m1.m31 + m2.m44 * m1.m41;\n const m42 = m2.m41 * m1.m12 + m2.m42 * m1.m22 + m2.m43 * m1.m32 + m2.m44 * m1.m42;\n const m43 = m2.m41 * m1.m13 + m2.m42 * m1.m23 + m2.m43 * m1.m33 + m2.m44 * m1.m43;\n const m44 = m2.m41 * m1.m14 + m2.m42 * m1.m24 + m2.m43 * m1.m34 + m2.m44 * m1.m44;\n\n return fromArray([m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44]);\n};\n\n/**\n * Creates and returns a new `DOMMatrix` compatible instance\n * with equivalent instance.\n *\n * @class CSSMatrix\n *\n * @author thednp <https://github.com/thednp/DOMMatrix/>\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix\n */\nexport default class CSSMatrix {\n declare m11: number;\n declare m12: number;\n declare m13: number;\n declare m14: number;\n declare m21: number;\n declare m22: number;\n declare m23: number;\n declare m24: number;\n declare m31: number;\n declare m32: number;\n declare m33: number;\n declare m34: number;\n declare m41: number;\n declare m42: number;\n declare m43: number;\n declare m44: number;\n declare a: number;\n declare b: number;\n declare c: number;\n declare d: number;\n declare e: number;\n declare f: number;\n static Translate = Translate;\n static Rotate = Rotate;\n static RotateAxisAngle = RotateAxisAngle;\n static Scale = Scale;\n static SkewX = SkewX;\n static SkewY = SkewY;\n static Skew = Skew;\n static Multiply = Multiply;\n static fromArray = fromArray;\n static fromMatrix = fromMatrix;\n static fromString = fromString;\n static toArray = toArray;\n static isCompatibleArray = isCompatibleArray;\n static isCompatibleObject = isCompatibleObject;\n\n /**\n * @constructor\n * @param init accepts all parameter configurations:\n * * valid CSS transform string,\n * * CSSMatrix/DOMMatrix instance,\n * * a 6/16 elements *Array*.\n */\n constructor(init?: CSSMatrixInput) {\n // array 6\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.e = 0;\n this.f = 0;\n // array 16\n this.m11 = 1;\n this.m12 = 0;\n this.m13 = 0;\n this.m14 = 0;\n this.m21 = 0;\n this.m22 = 1;\n this.m23 = 0;\n this.m24 = 0;\n this.m31 = 0;\n this.m32 = 0;\n this.m33 = 1;\n this.m34 = 0;\n this.m41 = 0;\n this.m42 = 0;\n this.m43 = 0;\n this.m44 = 1;\n\n if (init) {\n return this.setMatrixValue(init);\n }\n return this;\n }\n\n /**\n * A `Boolean` whose value is `true` if the matrix is the identity matrix. The identity\n * matrix is one in which every value is 0 except those on the main diagonal from top-left\n * to bottom-right corner (in other words, where the offsets in each direction are equal).\n *\n * @return the current property value\n */\n get isIdentity(): boolean {\n return (\n this.m11 === 1 &&\n this.m12 === 0 &&\n this.m13 === 0 &&\n this.m14 === 0 &&\n this.m21 === 0 &&\n this.m22 === 1 &&\n this.m23 === 0 &&\n this.m24 === 0 &&\n this.m31 === 0 &&\n this.m32 === 0 &&\n this.m33 === 1 &&\n this.m34 === 0 &&\n this.m41 === 0 &&\n this.m42 === 0 &&\n this.m43 === 0 &&\n this.m44 === 1\n );\n }\n\n /**\n * A `Boolean` flag whose value is `true` if the matrix was initialized as a 2D matrix\n * and `false` if the matrix is 3D.\n *\n * @return the current property value\n */\n get is2D(): boolean {\n return this.m31 === 0 && this.m32 === 0 && this.m33 === 1 && this.m34 === 0 && this.m43 === 0 && this.m44 === 1;\n }\n\n /**\n * The `setMatrixValue` method replaces the existing matrix with one computed\n * in the browser. EG: `matrix(1,0.25,-0.25,1,0,0)`\n *\n * The method accepts any *Array* values, the result of\n * `DOMMatrix` instance method `toFloat64Array()` / `toFloat32Array()` calls\n * or `CSSMatrix` instance method `toArray()`.\n *\n * This method expects valid *matrix()* / *matrix3d()* string values, as well\n * as other transform functions like *translateX(10px)*.\n *\n * @param source\n * @return the matrix instance\n */\n setMatrixValue(source?: CSSMatrixInput): CSSMatrix {\n // CSS transform string source - TransformList first\n if (typeof source === 'string' && source.length && source !== 'none') {\n return fromString(source);\n }\n\n // [Array | Float[32/64]Array] come next\n if (Array.isArray(source) || source instanceof Float64Array || source instanceof Float32Array) {\n return fromArray(source);\n }\n\n // new CSSMatrix(CSSMatrix | DOMMatrix | JSONMatrix) last\n if (typeof source === 'object') {\n return fromMatrix(source);\n }\n\n return this;\n }\n\n /**\n * Returns a *Float32Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\n toFloat32Array(is2D?: boolean): Float32Array {\n return Float32Array.from(toArray(this, is2D));\n }\n\n /**\n * Returns a *Float64Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\n toFloat64Array(is2D?: boolean): Float64Array {\n return Float64Array.from(toArray(this, is2D));\n }\n\n /**\n * Creates and returns a string representation of the matrix in `CSS` matrix syntax,\n * using the appropriate `CSS` matrix notation.\n *\n * matrix3d *matrix3d(m11, m12, m13, m14, m21, ...)*\n * matrix *matrix(a, b, c, d, e, f)*\n *\n * @return a string representation of the matrix\n */\n toString(): string {\n const { is2D } = this;\n const values = this.toFloat64Array(is2D).join(', ');\n const type = is2D ? 'matrix' : 'matrix3d';\n return `${type}(${values})`;\n }\n\n /**\n * Returns a JSON representation of the `CSSMatrix` instance, a standard *Object*\n * that includes `{a,b,c,d,e,f}` and `{m11,m12,m13,..m44}` properties as well\n * as the `is2D` & `isIdentity` properties.\n *\n * The result can also be used as a second parameter for the `fromMatrix` static method\n * to load values into another matrix instance.\n *\n * @return an *Object* with all matrix values.\n */\n toJSON(): JSONMatrix {\n const { is2D, isIdentity } = this;\n return { ...this, is2D, isIdentity };\n }\n\n /**\n * The Multiply method returns a new CSSMatrix which is the result of this\n * matrix multiplied by the passed matrix, with the passed matrix to the right.\n * This matrix is not modified.\n *\n * @param m2 CSSMatrix\n * @return The resulted matrix.\n */\n multiply(m2: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix {\n return Multiply(this, m2);\n }\n\n /**\n * The translate method returns a new matrix which is this matrix post\n * multiplied by a translation matrix containing the passed values. If the z\n * component is undefined, a 0 value is used in its place. This matrix is not\n * modified.\n *\n * @param x X component of the translation value.\n * @param y Y component of the translation value.\n * @param z Z component of the translation value.\n * @return The resulted matrix\n */\n translate(x: number, y?: number, z?: number): CSSMatrix {\n const X = x;\n let Y = y;\n let Z = z;\n if (typeof Y === 'undefined') Y = 0;\n if (typeof Z === 'undefined') Z = 0;\n return Multiply(this, Translate(X, Y, Z));\n }\n\n /**\n * The scale method returns a new matrix which is this matrix post multiplied by\n * a scale matrix containing the passed values. If the z component is undefined,\n * a 1 value is used in its place. If the y component is undefined, the x\n * component value is used in its place. This matrix is not modified.\n *\n * @param x The X component of the scale value.\n * @param y The Y component of the scale value.\n * @param z The Z component of the scale value.\n * @return The resulted matrix\n */\n scale(x: number, y?: number, z?: number): CSSMatrix {\n const X = x;\n let Y = y;\n let Z = z;\n if (typeof Y === 'undefined') Y = x;\n if (typeof Z === 'undefined') Z = 1; // Z must be 1 if undefined\n\n return Multiply(this, Scale(X, Y, Z));\n }\n\n /**\n * The rotate method returns a new matrix which is this matrix post multiplied\n * by each of 3 rotation matrices about the major axes, first X, then Y, then Z.\n * If the y and z components are undefined, the x value is used to rotate the\n * object about the z axis, as though the vector (0,0,x) were passed. All\n * rotation values are in degrees. This matrix is not modified.\n *\n * @param rx The X component of the rotation, or Z if Y and Z are null.\n * @param ry The (optional) Y component of the rotation value.\n * @param rz The (optional) Z component of the rotation value.\n * @return The resulted matrix\n */\n rotate(rx: number, ry?: number, rz?: number): CSSMatrix {\n let RX = rx;\n let RY = ry || 0;\n let RZ = rz || 0;\n\n if (typeof rx === 'number' && typeof ry === 'undefined' && typeof rz === 'undefined') {\n RZ = RX;\n RX = 0;\n RY = 0;\n }\n\n return Multiply(this, Rotate(RX, RY, RZ));\n }\n\n /**\n * The rotateAxisAngle method returns a new matrix which is this matrix post\n * multiplied by a rotation matrix with the given axis and `angle`. The right-hand\n * rule is used to determine the direction of rotation. All rotation values are\n * in degrees. This matrix is not modified.\n *\n * @param x The X component of the axis vector.\n * @param y The Y component of the axis vector.\n * @param z The Z component of the axis vector.\n * @param angle The angle of rotation about the axis vector, in degrees.\n * @return The resulted matrix\n */\n rotateAxisAngle(x: number, y: number, z: number, angle: number): CSSMatrix {\n if ([x, y, z, angle].some(n => Number.isNaN(+n))) {\n throw new TypeError('CSSMatrix: expecting 4 values');\n }\n return Multiply(this, RotateAxisAngle(x, y, z, angle));\n }\n\n /**\n * Specifies a skew transformation along the `x-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param angle The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skewX(angle: number): CSSMatrix {\n return Multiply(this, SkewX(angle));\n }\n\n /**\n * Specifies a skew transformation along the `y-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param angle The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skewY(angle: number): CSSMatrix {\n return Multiply(this, SkewY(angle));\n }\n\n /**\n * Specifies a skew transformation along both the `x-axis` and `y-axis`.\n * This matrix is not modified.\n *\n * @param angleX The X-angle amount in degrees to skew.\n * @param angleY The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skew(angleX: number, angleY: number): CSSMatrix {\n return Multiply(this, Skew(angleX, angleY));\n }\n\n /**\n * Transforms a specified vector using the matrix, returning a new\n * {x,y,z,w} Tuple *Object* comprising the transformed vector.\n * Neither the matrix nor the original vector are altered.\n *\n * The method is equivalent with `transformPoint()` method\n * of the `DOMMatrix` constructor.\n *\n * @param t Tuple with `{x,y,z,w}` components\n * @return the resulting Tuple\n */\n transformPoint(t: PointTuple | DOMPoint): PointTuple | DOMPoint {\n const x = this.m11 * t.x + this.m21 * t.y + this.m31 * t.z + this.m41 * t.w;\n const y = this.m12 * t.x + this.m22 * t.y + this.m32 * t.z + this.m42 * t.w;\n const z = this.m13 * t.x + this.m23 * t.y + this.m33 * t.z + this.m43 * t.w;\n const w = this.m14 * t.x + this.m24 * t.y + this.m34 * t.z + this.m44 * t.w;\n\n return t instanceof DOMPoint\n ? new DOMPoint(x, y, z, w)\n : {\n x,\n y,\n z,\n w,\n };\n }\n}\n"],"names":["JSON_MATRIX","isCompatibleArray","array","x","isCompatibleObject","object","CSSMatrix","k","fromArray","m","a","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","M11","M12","M21","M22","M41","M42","fromMatrix","fromString","source","str","invalidStringError","f","tf","prop","value","components","n","y","z","xyz","xyza","values","sy","p","fn","axis","idx","def","axeValues","toArray","is2D","Translate","Rotate","rx","ry","rz","degToRad","radX","radY","radZ","cosx","sinx","cosy","siny","cosz","sinz","RotateAxisAngle","alpha","length","X","Y","Z","angle","sinA","cosA","sinA2","x2","y2","z2","Scale","Skew","angleX","angleY","tX","tY","SkewX","SkewY","Multiply","m1","m2","init","isIdentity","RX","RY","RZ","w","__publicField"],"mappings":"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"}
1
+ {"version":3,"file":"dommatrix.cjs","sources":["../src/index.ts"],"sourcesContent":["import type { Matrix, Matrix3d, JSONMatrix, CSSMatrixInput, PointTuple } from './types';\n\n/** A model for JSONMatrix */\nconst JSON_MATRIX: JSONMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0,\n m11: 1,\n m12: 0,\n m13: 0,\n m14: 0,\n m21: 0,\n m22: 1,\n m23: 0,\n m24: 0,\n m31: 0,\n m32: 0,\n m33: 1,\n m34: 0,\n m41: 0,\n m42: 0,\n m43: 0,\n m44: 1,\n is2D: true,\n isIdentity: true,\n};\n\n// CSSMatrix Static methods\n// * `fromArray` is a more simple implementation, should also accept Float[32/64]Array;\n// * `fromMatrix` load values from another CSSMatrix/DOMMatrix instance or JSON object;\n// * `fromString` parses and loads values from any valid CSS transform string (TransformList).\n// * `isCompatibleArray` Checks if an array is compatible with CSSMatrix.\n// * `isCompatibleObject` Checks if an object is compatible with CSSMatrix.\n\n/** Checks if an array is compatible with CSSMatrix */\nconst isCompatibleArray = (array?: unknown): array is Matrix | Matrix3d | Float32Array | Float64Array => {\n return (\n (array instanceof Float64Array ||\n array instanceof Float32Array ||\n (Array.isArray(array) && array.every(x => typeof x === 'number'))) &&\n [6, 16].some(x => array.length === x)\n );\n};\n\n/** Checks if an object is compatible with CSSMatrix */\nconst isCompatibleObject = (object?: unknown): object is CSSMatrix | DOMMatrix | JSONMatrix => {\n return (\n object instanceof DOMMatrix ||\n object instanceof CSSMatrix ||\n (typeof object === 'object' && Object.keys(JSON_MATRIX).every(k => object && k in object))\n );\n};\n\n/**\n * Creates a new mutable `CSSMatrix` instance given an array of 16/6 floating point values.\n * This static method invalidates arrays that contain non-number elements.\n *\n * If the array has six values, the result is a 2D matrix; if the array has 16 values,\n * the result is a 3D matrix. Otherwise, a TypeError exception is thrown.\n *\n * @param array an `Array` to feed values from.\n * @return the resulted matrix.\n */\nconst fromArray = (array: any[] | Float32Array | Float64Array): CSSMatrix => {\n const m = new CSSMatrix();\n const a = Array.from(array);\n\n if (!isCompatibleArray(a)) {\n throw TypeError(`CSSMatrix: \"${a.join(',')}\" must be an array with 6/16 numbers.`);\n }\n if (a.length === 16) {\n const [m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44] = a;\n\n m.m11 = m11;\n m.a = m11;\n\n m.m21 = m21;\n m.c = m21;\n\n m.m31 = m31;\n\n m.m41 = m41;\n m.e = m41;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m22 = m22;\n m.d = m22;\n\n m.m32 = m32;\n\n m.m42 = m42;\n m.f = m42;\n\n m.m13 = m13;\n m.m23 = m23;\n m.m33 = m33;\n m.m43 = m43;\n m.m14 = m14;\n m.m24 = m24;\n m.m34 = m34;\n m.m44 = m44;\n } else if (a.length === 6) {\n const [M11, M12, M21, M22, M41, M42] = a;\n\n m.m11 = M11;\n m.a = M11;\n\n m.m12 = M12;\n m.b = M12;\n\n m.m21 = M21;\n m.c = M21;\n\n m.m22 = M22;\n m.d = M22;\n\n m.m41 = M41;\n m.e = M41;\n\n m.m42 = M42;\n m.f = M42;\n }\n return m;\n};\n\n/**\n * Creates a new mutable `CSSMatrix` instance given an existing matrix or a\n * `DOMMatrix` instance which provides the values for its properties.\n *\n * @param m the source matrix to feed values from.\n * @return the resulted matrix.\n */\nconst fromMatrix = (m: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix => {\n if (isCompatibleObject(m)) {\n return fromArray([\n m.m11,\n m.m12,\n m.m13,\n m.m14,\n m.m21,\n m.m22,\n m.m23,\n m.m24,\n m.m31,\n m.m32,\n m.m33,\n m.m34,\n m.m41,\n m.m42,\n m.m43,\n m.m44,\n ]);\n }\n throw TypeError(`CSSMatrix: \"${JSON.stringify(m)}\" is not a DOMMatrix / CSSMatrix / JSON compatible object.`);\n};\n\n/**\n * Creates a new mutable `CSSMatrix` given any valid CSS transform string,\n * or what we call `TransformList`:\n *\n * * `matrix(a, b, c, d, e, f)` - valid matrix() transform function\n * * `matrix3d(m11, m12, m13, ...m44)` - valid matrix3d() transform function\n * * `translate(tx, ty) rotateX(alpha)` - any valid transform function(s)\n *\n * @copyright thednp © 2021\n *\n * @param source valid CSS transform string syntax.\n * @return the resulted matrix.\n */\nconst fromString = (source: string): CSSMatrix => {\n if (typeof source !== 'string') {\n throw TypeError(`CSSMatrix: \"${JSON.stringify(source)}\" is not a string.`);\n }\n const str = String(source).replace(/\\s/g, '');\n let m = new CSSMatrix();\n const invalidStringError = `CSSMatrix: invalid transform string \"${source}\"`;\n\n // const px = ['perspective'];\n // const length = ['translate', 'translate3d', 'translateX', 'translateY', 'translateZ'];\n // const deg = ['rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'skew', 'skewX', 'skewY'];\n // const abs = ['scale', 'scale3d', 'matrix', 'matrix3d'];\n // const transformFunctions = px.concat(length, deg, abs);\n\n str\n .split(')')\n .filter(f => f)\n .forEach(tf => {\n const [prop, value] = tf.split('(');\n\n // invalidate empty string\n if (!value) throw TypeError(invalidStringError);\n\n const components = value\n .split(',')\n .map(n => (n.includes('rad') ? parseFloat(n) * (180 / Math.PI) : parseFloat(n)));\n\n const [x, y, z, a] = components;\n const xyz = [x, y, z];\n const xyza = [x, y, z, a];\n\n // single number value expected\n if (prop === 'perspective' && x && [y, z].every(n => n === undefined)) {\n m.m34 = -1 / x;\n // 6/16 number values expected\n } else if (\n prop.includes('matrix') &&\n [6, 16].includes(components.length) &&\n components.every(n => !Number.isNaN(+n))\n ) {\n const values = components.map(n => (Math.abs(n) < 1e-6 ? 0 : n));\n m = m.multiply(fromArray(values as Matrix | Matrix3d));\n // 3 values expected\n } else if (prop === 'translate3d' && xyz.every(n => !Number.isNaN(+n))) {\n m = m.translate(x, y, z);\n // single/double number value(s) expected\n } else if (prop === 'translate' && x && z === undefined) {\n m = m.translate(x, y || 0, 0);\n // all 4 values expected\n } else if (prop === 'rotate3d' && xyza.every(n => !Number.isNaN(+n)) && a) {\n m = m.rotateAxisAngle(x, y, z, a);\n // single value expected\n } else if (prop === 'rotate' && x && [y, z].every(n => n === undefined)) {\n m = m.rotate(0, 0, x);\n // 3 values expected\n } else if (prop === 'scale3d' && xyz.every(n => !Number.isNaN(+n)) && xyz.some(n => n !== 1)) {\n m = m.scale(x, y, z);\n // single value expected\n } else if (prop === 'scale' && !Number.isNaN(x) && x !== 1 && z === undefined) {\n const nosy = Number.isNaN(+y);\n const sy = nosy ? x : y;\n m = m.scale(x, sy, 1);\n // single/double value expected\n } else if (prop === 'skew' && (x || (!Number.isNaN(x) && y)) && z === undefined) {\n m = m.skew(x, y || 0);\n } else if (\n ['translate', 'rotate', 'scale', 'skew'].some(p => prop.includes(p)) &&\n /[XYZ]/.test(prop) &&\n x &&\n [y, z].every(n => n === undefined) // a single value expected\n ) {\n if ('skewX' === prop || 'skewY' === prop) {\n m = m[prop](x);\n } else {\n const fn = prop.replace(/[XYZ]/, '') as 'scale' | 'translate' | 'rotate';\n const axis = prop.replace(fn, '');\n const idx = ['X', 'Y', 'Z'].indexOf(axis);\n const def = fn === 'scale' ? 1 : 0;\n const axeValues: [number, number, number] = [idx === 0 ? x : def, idx === 1 ? x : def, idx === 2 ? x : def];\n m = m[fn](...axeValues);\n }\n } else {\n throw TypeError(invalidStringError);\n }\n });\n\n return m;\n};\n\n/**\n * Returns an *Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param m the source matrix to feed values from.\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\nconst toArray = (m: CSSMatrix | DOMMatrix | JSONMatrix, is2D?: boolean): Matrix | Matrix3d => {\n if (is2D) {\n return [m.a, m.b, m.c, m.d, m.e, m.f];\n }\n return [\n m.m11,\n m.m12,\n m.m13,\n m.m14,\n m.m21,\n m.m22,\n m.m23,\n m.m24,\n m.m31,\n m.m32,\n m.m33,\n m.m34,\n m.m41,\n m.m42,\n m.m43,\n m.m44,\n ];\n};\n\n// Transform Functions\n// https://www.w3.org/TR/css-transforms-1/#transform-functions\n\n/**\n * Creates a new `CSSMatrix` for the translation matrix and returns it.\n * This method is equivalent to the CSS `translate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translate3d\n *\n * @param x the `x-axis` position.\n * @param y the `y-axis` position.\n * @param z the `z-axis` position.\n * @return the resulted matrix.\n */\nconst Translate = (x: number, y: number, z: number): CSSMatrix => {\n const m = new CSSMatrix();\n m.m41 = x;\n m.e = x;\n m.m42 = y;\n m.f = y;\n m.m43 = z;\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n *\n * http://en.wikipedia.org/wiki/Rotation_matrix\n *\n * @param rx the `x-axis` rotation.\n * @param ry the `y-axis` rotation.\n * @param rz the `z-axis` rotation.\n * @return the resulted matrix.\n */\nconst Rotate = (rx: number, ry: number, rz: number): CSSMatrix => {\n const m = new CSSMatrix();\n const degToRad = Math.PI / 180;\n const radX = rx * degToRad;\n const radY = ry * degToRad;\n const radZ = rz * degToRad;\n\n // minus sin() because of right-handed system\n const cosx = Math.cos(radX);\n const sinx = -Math.sin(radX);\n const cosy = Math.cos(radY);\n const siny = -Math.sin(radY);\n const cosz = Math.cos(radZ);\n const sinz = -Math.sin(radZ);\n\n const m11 = cosy * cosz;\n const m12 = -cosy * sinz;\n\n m.m11 = m11;\n m.a = m11;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = siny;\n\n const m21 = sinx * siny * cosz + cosx * sinz;\n m.m21 = m21;\n m.c = m21;\n\n const m22 = cosx * cosz - sinx * siny * sinz;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = -sinx * cosy;\n\n m.m31 = sinx * sinz - cosx * siny * cosz;\n m.m32 = sinx * cosz + cosx * siny * sinz;\n m.m33 = cosx * cosy;\n\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n * This method is equivalent to the CSS `rotate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate3d\n *\n * @param x the `x-axis` vector length.\n * @param y the `y-axis` vector length.\n * @param z the `z-axis` vector length.\n * @param alpha the value in degrees of the rotation.\n * @return the resulted matrix.\n */\nconst RotateAxisAngle = (x: number, y: number, z: number, alpha: number): CSSMatrix => {\n const m = new CSSMatrix();\n const length = Math.sqrt(x * x + y * y + z * z);\n\n if (length === 0) {\n // bad vector length, return identity\n return m;\n }\n\n const X = x / length;\n const Y = y / length;\n const Z = z / length;\n\n const angle = alpha * (Math.PI / 360);\n const sinA = Math.sin(angle);\n const cosA = Math.cos(angle);\n const sinA2 = sinA * sinA;\n const x2 = X * X;\n const y2 = Y * Y;\n const z2 = Z * Z;\n\n const m11 = 1 - 2 * (y2 + z2) * sinA2;\n m.m11 = m11;\n m.a = m11;\n\n const m12 = 2 * (X * Y * sinA2 + Z * sinA * cosA);\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = 2 * (X * Z * sinA2 - Y * sinA * cosA);\n\n const m21 = 2 * (Y * X * sinA2 - Z * sinA * cosA);\n m.m21 = m21;\n m.c = m21;\n\n const m22 = 1 - 2 * (z2 + x2) * sinA2;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = 2 * (Y * Z * sinA2 + X * sinA * cosA);\n m.m31 = 2 * (Z * X * sinA2 + Y * sinA * cosA);\n m.m32 = 2 * (Z * Y * sinA2 - X * sinA * cosA);\n m.m33 = 1 - 2 * (x2 + y2) * sinA2;\n\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the scale matrix and returns it.\n * This method is equivalent to the CSS `scale3d()` function, except it doesn't\n * accept {x, y, z} transform origin parameters.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale3d\n *\n * @param x the `x-axis` scale.\n * @param y the `y-axis` scale.\n * @param z the `z-axis` scale.\n * @return the resulted matrix.\n */\nconst Scale = (x: number, y: number, z: number): CSSMatrix => {\n const m = new CSSMatrix();\n m.m11 = x;\n m.a = x;\n\n m.m22 = y;\n m.d = y;\n\n m.m33 = z;\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of both the `x-axis` and`y-axis`\n * matrix and returns it. This method is equivalent to the CSS `skew()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew\n *\n * @param angleX the X-angle in degrees.\n * @param angleY the Y-angle in degrees.\n * @return the resulted matrix.\n */\nconst Skew = (angleX: number, angleY: number): CSSMatrix => {\n const m = new CSSMatrix();\n if (angleX) {\n const radX = (angleX * Math.PI) / 180;\n const tX = Math.tan(radX);\n m.m21 = tX;\n m.c = tX;\n }\n if (angleY) {\n const radY = (angleY * Math.PI) / 180;\n const tY = Math.tan(radY);\n m.m12 = tY;\n m.b = tY;\n }\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of the `x-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewX()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewX\n *\n * @param angle the angle in degrees.\n * @return the resulted matrix.\n */\nconst SkewX = (angle: number): CSSMatrix => {\n return Skew(angle, 0);\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of the `y-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewY()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewY\n *\n * @param angle the angle in degrees.\n * @return the resulted matrix.\n */\nconst SkewY = (angle: number): CSSMatrix => {\n return Skew(0, angle);\n};\n\n/**\n * Creates a new `CSSMatrix` resulted from the multiplication of two matrixes\n * and returns it. Both matrixes are not changed.\n *\n * @param m1 the first matrix.\n * @param m2 the second matrix.\n * @return the resulted matrix.\n */\nconst Multiply = (m1: CSSMatrix | DOMMatrix | JSONMatrix, m2: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix => {\n const m11 = m2.m11 * m1.m11 + m2.m12 * m1.m21 + m2.m13 * m1.m31 + m2.m14 * m1.m41;\n const m12 = m2.m11 * m1.m12 + m2.m12 * m1.m22 + m2.m13 * m1.m32 + m2.m14 * m1.m42;\n const m13 = m2.m11 * m1.m13 + m2.m12 * m1.m23 + m2.m13 * m1.m33 + m2.m14 * m1.m43;\n const m14 = m2.m11 * m1.m14 + m2.m12 * m1.m24 + m2.m13 * m1.m34 + m2.m14 * m1.m44;\n\n const m21 = m2.m21 * m1.m11 + m2.m22 * m1.m21 + m2.m23 * m1.m31 + m2.m24 * m1.m41;\n const m22 = m2.m21 * m1.m12 + m2.m22 * m1.m22 + m2.m23 * m1.m32 + m2.m24 * m1.m42;\n const m23 = m2.m21 * m1.m13 + m2.m22 * m1.m23 + m2.m23 * m1.m33 + m2.m24 * m1.m43;\n const m24 = m2.m21 * m1.m14 + m2.m22 * m1.m24 + m2.m23 * m1.m34 + m2.m24 * m1.m44;\n\n const m31 = m2.m31 * m1.m11 + m2.m32 * m1.m21 + m2.m33 * m1.m31 + m2.m34 * m1.m41;\n const m32 = m2.m31 * m1.m12 + m2.m32 * m1.m22 + m2.m33 * m1.m32 + m2.m34 * m1.m42;\n const m33 = m2.m31 * m1.m13 + m2.m32 * m1.m23 + m2.m33 * m1.m33 + m2.m34 * m1.m43;\n const m34 = m2.m31 * m1.m14 + m2.m32 * m1.m24 + m2.m33 * m1.m34 + m2.m34 * m1.m44;\n\n const m41 = m2.m41 * m1.m11 + m2.m42 * m1.m21 + m2.m43 * m1.m31 + m2.m44 * m1.m41;\n const m42 = m2.m41 * m1.m12 + m2.m42 * m1.m22 + m2.m43 * m1.m32 + m2.m44 * m1.m42;\n const m43 = m2.m41 * m1.m13 + m2.m42 * m1.m23 + m2.m43 * m1.m33 + m2.m44 * m1.m43;\n const m44 = m2.m41 * m1.m14 + m2.m42 * m1.m24 + m2.m43 * m1.m34 + m2.m44 * m1.m44;\n\n return fromArray([m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44]);\n};\n\n/**\n * Creates and returns a new `DOMMatrix` compatible instance\n * with equivalent instance.\n *\n * @class CSSMatrix\n *\n * @author thednp <https://github.com/thednp/DOMMatrix/>\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix\n */\nexport default class CSSMatrix {\n declare m11: number;\n declare m12: number;\n declare m13: number;\n declare m14: number;\n declare m21: number;\n declare m22: number;\n declare m23: number;\n declare m24: number;\n declare m31: number;\n declare m32: number;\n declare m33: number;\n declare m34: number;\n declare m41: number;\n declare m42: number;\n declare m43: number;\n declare m44: number;\n declare a: number;\n declare b: number;\n declare c: number;\n declare d: number;\n declare e: number;\n declare f: number;\n static Translate = Translate;\n static Rotate = Rotate;\n static RotateAxisAngle = RotateAxisAngle;\n static Scale = Scale;\n static SkewX = SkewX;\n static SkewY = SkewY;\n static Skew = Skew;\n static Multiply = Multiply;\n static fromArray = fromArray;\n static fromMatrix = fromMatrix;\n static fromString = fromString;\n static toArray = toArray;\n static isCompatibleArray = isCompatibleArray;\n static isCompatibleObject = isCompatibleObject;\n\n /**\n * @constructor\n * @param init accepts all parameter configurations:\n * * valid CSS transform string,\n * * CSSMatrix/DOMMatrix instance,\n * * a 6/16 elements *Array*.\n */\n constructor(init?: CSSMatrixInput) {\n // array 6\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.e = 0;\n this.f = 0;\n // array 16\n this.m11 = 1;\n this.m12 = 0;\n this.m13 = 0;\n this.m14 = 0;\n this.m21 = 0;\n this.m22 = 1;\n this.m23 = 0;\n this.m24 = 0;\n this.m31 = 0;\n this.m32 = 0;\n this.m33 = 1;\n this.m34 = 0;\n this.m41 = 0;\n this.m42 = 0;\n this.m43 = 0;\n this.m44 = 1;\n\n if (init) {\n return this.setMatrixValue(init);\n }\n return this;\n }\n\n /**\n * A `Boolean` whose value is `true` if the matrix is the identity matrix. The identity\n * matrix is one in which every value is 0 except those on the main diagonal from top-left\n * to bottom-right corner (in other words, where the offsets in each direction are equal).\n *\n * @return the current property value\n */\n get isIdentity(): boolean {\n return (\n this.m11 === 1 &&\n this.m12 === 0 &&\n this.m13 === 0 &&\n this.m14 === 0 &&\n this.m21 === 0 &&\n this.m22 === 1 &&\n this.m23 === 0 &&\n this.m24 === 0 &&\n this.m31 === 0 &&\n this.m32 === 0 &&\n this.m33 === 1 &&\n this.m34 === 0 &&\n this.m41 === 0 &&\n this.m42 === 0 &&\n this.m43 === 0 &&\n this.m44 === 1\n );\n }\n\n /**\n * A `Boolean` flag whose value is `true` if the matrix was initialized as a 2D matrix\n * and `false` if the matrix is 3D.\n *\n * @return the current property value\n */\n get is2D(): boolean {\n return this.m31 === 0 && this.m32 === 0 && this.m33 === 1 && this.m34 === 0 && this.m43 === 0 && this.m44 === 1;\n }\n\n /**\n * The `setMatrixValue` method replaces the existing matrix with one computed\n * in the browser. EG: `matrix(1,0.25,-0.25,1,0,0)`\n *\n * The method accepts any *Array* values, the result of\n * `DOMMatrix` instance method `toFloat64Array()` / `toFloat32Array()` calls\n * or `CSSMatrix` instance method `toArray()`.\n *\n * This method expects valid *matrix()* / *matrix3d()* string values, as well\n * as other transform functions like *translateX(10px)*.\n *\n * @param source\n * @return the matrix instance\n */\n setMatrixValue(source?: CSSMatrixInput): CSSMatrix {\n // CSS transform string source - TransformList first\n if (typeof source === 'string' && source.length && source !== 'none') {\n return fromString(source);\n }\n\n // [Array | Float[32/64]Array] come next\n if (Array.isArray(source) || source instanceof Float64Array || source instanceof Float32Array) {\n return fromArray(source);\n }\n\n // new CSSMatrix(CSSMatrix | DOMMatrix | JSONMatrix) last\n if (typeof source === 'object') {\n return fromMatrix(source);\n }\n\n return this;\n }\n\n /**\n * Returns a *Float32Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\n toFloat32Array(is2D?: boolean): Float32Array {\n return Float32Array.from(toArray(this, is2D));\n }\n\n /**\n * Returns a *Float64Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\n toFloat64Array(is2D?: boolean): Float64Array {\n return Float64Array.from(toArray(this, is2D));\n }\n\n /**\n * Creates and returns a string representation of the matrix in `CSS` matrix syntax,\n * using the appropriate `CSS` matrix notation.\n *\n * matrix3d *matrix3d(m11, m12, m13, m14, m21, ...)*\n * matrix *matrix(a, b, c, d, e, f)*\n *\n * @return a string representation of the matrix\n */\n toString(): string {\n const { is2D } = this;\n const values = this.toFloat64Array(is2D).join(', ');\n const type = is2D ? 'matrix' : 'matrix3d';\n return `${type}(${values})`;\n }\n\n /**\n * Returns a JSON representation of the `CSSMatrix` instance, a standard *Object*\n * that includes `{a,b,c,d,e,f}` and `{m11,m12,m13,..m44}` properties as well\n * as the `is2D` & `isIdentity` properties.\n *\n * The result can also be used as a second parameter for the `fromMatrix` static method\n * to load values into another matrix instance.\n *\n * @return an *Object* with all matrix values.\n */\n toJSON(): JSONMatrix {\n const { is2D, isIdentity } = this;\n return { ...this, is2D, isIdentity };\n }\n\n /**\n * The Multiply method returns a new CSSMatrix which is the result of this\n * matrix multiplied by the passed matrix, with the passed matrix to the right.\n * This matrix is not modified.\n *\n * @param m2 CSSMatrix\n * @return The resulted matrix.\n */\n multiply(m2: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix {\n return Multiply(this, m2);\n }\n\n /**\n * The translate method returns a new matrix which is this matrix post\n * multiplied by a translation matrix containing the passed values. If the z\n * component is undefined, a 0 value is used in its place. This matrix is not\n * modified.\n *\n * @param x X component of the translation value.\n * @param y Y component of the translation value.\n * @param z Z component of the translation value.\n * @return The resulted matrix\n */\n translate(x: number, y?: number, z?: number): CSSMatrix {\n const X = x;\n let Y = y;\n let Z = z;\n if (typeof Y === 'undefined') Y = 0;\n if (typeof Z === 'undefined') Z = 0;\n return Multiply(this, Translate(X, Y, Z));\n }\n\n /**\n * The scale method returns a new matrix which is this matrix post multiplied by\n * a scale matrix containing the passed values. If the z component is undefined,\n * a 1 value is used in its place. If the y component is undefined, the x\n * component value is used in its place. This matrix is not modified.\n *\n * @param x The X component of the scale value.\n * @param y The Y component of the scale value.\n * @param z The Z component of the scale value.\n * @return The resulted matrix\n */\n scale(x: number, y?: number, z?: number): CSSMatrix {\n const X = x;\n let Y = y;\n let Z = z;\n if (typeof Y === 'undefined') Y = x;\n if (typeof Z === 'undefined') Z = 1; // Z must be 1 if undefined\n\n return Multiply(this, Scale(X, Y, Z));\n }\n\n /**\n * The rotate method returns a new matrix which is this matrix post multiplied\n * by each of 3 rotation matrices about the major axes, first X, then Y, then Z.\n * If the y and z components are undefined, the x value is used to rotate the\n * object about the z axis, as though the vector (0,0,x) were passed. All\n * rotation values are in degrees. This matrix is not modified.\n *\n * @param rx The X component of the rotation, or Z if Y and Z are null.\n * @param ry The (optional) Y component of the rotation value.\n * @param rz The (optional) Z component of the rotation value.\n * @return The resulted matrix\n */\n rotate(rx: number, ry?: number, rz?: number): CSSMatrix {\n let RX = rx;\n let RY = ry || 0;\n let RZ = rz || 0;\n\n if (typeof rx === 'number' && typeof ry === 'undefined' && typeof rz === 'undefined') {\n RZ = RX;\n RX = 0;\n RY = 0;\n }\n\n return Multiply(this, Rotate(RX, RY, RZ));\n }\n\n /**\n * The rotateAxisAngle method returns a new matrix which is this matrix post\n * multiplied by a rotation matrix with the given axis and `angle`. The right-hand\n * rule is used to determine the direction of rotation. All rotation values are\n * in degrees. This matrix is not modified.\n *\n * @param x The X component of the axis vector.\n * @param y The Y component of the axis vector.\n * @param z The Z component of the axis vector.\n * @param angle The angle of rotation about the axis vector, in degrees.\n * @return The resulted matrix\n */\n rotateAxisAngle(x: number, y: number, z: number, angle: number): CSSMatrix {\n if ([x, y, z, angle].some(n => Number.isNaN(+n))) {\n throw new TypeError('CSSMatrix: expecting 4 values');\n }\n return Multiply(this, RotateAxisAngle(x, y, z, angle));\n }\n\n /**\n * Specifies a skew transformation along the `x-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param angle The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skewX(angle: number): CSSMatrix {\n return Multiply(this, SkewX(angle));\n }\n\n /**\n * Specifies a skew transformation along the `y-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param angle The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skewY(angle: number): CSSMatrix {\n return Multiply(this, SkewY(angle));\n }\n\n /**\n * Specifies a skew transformation along both the `x-axis` and `y-axis`.\n * This matrix is not modified.\n *\n * @param angleX The X-angle amount in degrees to skew.\n * @param angleY The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skew(angleX: number, angleY: number): CSSMatrix {\n return Multiply(this, Skew(angleX, angleY));\n }\n\n /**\n * Transforms a specified vector using the matrix, returning a new\n * {x,y,z,w} Tuple *Object* comprising the transformed vector.\n * Neither the matrix nor the original vector are altered.\n *\n * The method is equivalent with `transformPoint()` method\n * of the `DOMMatrix` constructor.\n *\n * @param t Tuple with `{x,y,z,w}` components\n * @return the resulting Tuple\n */\n transformPoint(t: PointTuple | DOMPoint): PointTuple | DOMPoint {\n const x = this.m11 * t.x + this.m21 * t.y + this.m31 * t.z + this.m41 * t.w;\n const y = this.m12 * t.x + this.m22 * t.y + this.m32 * t.z + this.m42 * t.w;\n const z = this.m13 * t.x + this.m23 * t.y + this.m33 * t.z + this.m43 * t.w;\n const w = this.m14 * t.x + this.m24 * t.y + this.m34 * t.z + this.m44 * t.w;\n\n return t instanceof DOMPoint\n ? new DOMPoint(x, y, z, w)\n : {\n x,\n y,\n z,\n w,\n };\n }\n}\n"],"names":["JSON_MATRIX","isCompatibleArray","array","x","isCompatibleObject","object","CSSMatrix","k","fromArray","m","a","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","M11","M12","M21","M22","M41","M42","fromMatrix","fromString","source","str","invalidStringError","f","tf","prop","value","components","n","y","z","xyz","xyza","values","sy","p","fn","axis","idx","def","axeValues","toArray","is2D","Translate","Rotate","rx","ry","rz","degToRad","radX","radY","radZ","cosx","sinx","cosy","siny","cosz","sinz","RotateAxisAngle","alpha","length","X","Y","Z","angle","sinA","cosA","sinA2","x2","y2","z2","Scale","Skew","angleX","angleY","tX","tY","SkewX","SkewY","Multiply","m1","m2","init","isIdentity","RX","RY","RZ","w","__publicField"],"mappings":"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"}
@@ -101,13 +101,13 @@ export default class CSSMatrix {
101
101
  static SkewX: (angle: number) => CSSMatrix;
102
102
  static SkewY: (angle: number) => CSSMatrix;
103
103
  static Skew: (angleX: number, angleY: number) => CSSMatrix;
104
- static Multiply: (m1: DOMMatrix | JSONMatrix | CSSMatrix, m2: DOMMatrix | JSONMatrix | CSSMatrix) => CSSMatrix;
104
+ static Multiply: (m1: CSSMatrix | DOMMatrix | JSONMatrix, m2: CSSMatrix | DOMMatrix | JSONMatrix) => CSSMatrix;
105
105
  static fromArray: (array: any[] | Float32Array | Float64Array) => CSSMatrix;
106
- static fromMatrix: (m: DOMMatrix | JSONMatrix | CSSMatrix) => CSSMatrix;
106
+ static fromMatrix: (m: CSSMatrix | DOMMatrix | JSONMatrix) => CSSMatrix;
107
107
  static fromString: (source: string) => CSSMatrix;
108
- static toArray: (m: DOMMatrix | JSONMatrix | CSSMatrix, is2D?: boolean | undefined) => Matrix | Matrix3d;
109
- static isCompatibleArray: (array?: unknown) => array is Float32Array | Float64Array | Matrix | Matrix3d;
110
- static isCompatibleObject: (object?: unknown) => object is DOMMatrix | JSONMatrix | CSSMatrix;
108
+ static toArray: (m: CSSMatrix | DOMMatrix | JSONMatrix, is2D?: boolean) => Matrix | Matrix3d;
109
+ static isCompatibleArray: (array?: unknown) => array is Matrix | Matrix3d | Float32Array | Float64Array;
110
+ static isCompatibleObject: (object?: unknown) => object is CSSMatrix | DOMMatrix | JSONMatrix;
111
111
  /**
112
112
  * @constructor
113
113
  * @param init accepts all parameter configurations:
package/dist/dommatrix.js CHANGED
@@ -1,2 +1,2 @@
1
- var CSSMatrix=function(){"use strict";var z=Object.defineProperty;var S=(v,N,g)=>N in v?z(v,N,{enumerable:!0,configurable:!0,writable:!0,value:g}):v[N]=g;var p=(v,N,g)=>(S(v,typeof N!="symbol"?N+"":N,g),g);const v={a:1,b:0,c:0,d:1,e:0,f:0,m11:1,m12:0,m13:0,m14:0,m21:0,m22:1,m23:0,m24:0,m31:0,m32:0,m33:1,m34:0,m41:0,m42:0,m43:0,m44:1,is2D:!0,isIdentity:!0},N=s=>(s instanceof Float64Array||s instanceof Float32Array||Array.isArray(s)&&s.every(t=>typeof t=="number"))&&[6,16].some(t=>s.length===t),g=s=>s instanceof DOMMatrix||s instanceof f||typeof s=="object"&&Object.keys(v).every(t=>s&&t in s),k=s=>{const t=new f,e=Array.from(s);if(!N(e))throw TypeError(`CSSMatrix: "${e.join(",")}" must be an array with 6/16 numbers.`);if(e.length===16){const[n,i,r,a,l,m,h,c,y,u,w,o,d,A,M,x]=e;t.m11=n,t.a=n,t.m21=l,t.c=l,t.m31=y,t.m41=d,t.e=d,t.m12=i,t.b=i,t.m22=m,t.d=m,t.m32=u,t.m42=A,t.f=A,t.m13=r,t.m23=h,t.m33=w,t.m43=M,t.m14=a,t.m24=c,t.m34=o,t.m44=x}else if(e.length===6){const[n,i,r,a,l,m]=e;t.m11=n,t.a=n,t.m12=i,t.b=i,t.m21=r,t.c=r,t.m22=a,t.d=a,t.m41=l,t.e=l,t.m42=m,t.f=m}return t},Y=s=>{if(g(s))return k([s.m11,s.m12,s.m13,s.m14,s.m21,s.m22,s.m23,s.m24,s.m31,s.m32,s.m33,s.m34,s.m41,s.m42,s.m43,s.m44]);throw TypeError(`CSSMatrix: "${JSON.stringify(s)}" is not a DOMMatrix / CSSMatrix / JSON compatible object.`)},F=s=>{if(typeof s!="string")throw TypeError(`CSSMatrix: "${JSON.stringify(s)}" is not a string.`);const t=String(s).replace(/\s/g,"");let e=new f;const n=`CSSMatrix: invalid transform string "${s}"`;return t.split(")").filter(i=>i).forEach(i=>{const[r,a]=i.split("(");if(!a)throw TypeError(n);const l=a.split(",").map(o=>o.includes("rad")?parseFloat(o)*(180/Math.PI):parseFloat(o)),[m,h,c,y]=l,u=[m,h,c],w=[m,h,c,y];if(r==="perspective"&&m&&[h,c].every(o=>o===void 0))e.m34=-1/m;else if(r.includes("matrix")&&[6,16].includes(l.length)&&l.every(o=>!Number.isNaN(+o))){const o=l.map(d=>Math.abs(d)<1e-6?0:d);e=e.multiply(k(o))}else if(r==="translate3d"&&u.every(o=>!Number.isNaN(+o)))e=e.translate(m,h,c);else if(r==="translate"&&m&&c===void 0)e=e.translate(m,h||0,0);else if(r==="rotate3d"&&w.every(o=>!Number.isNaN(+o))&&y)e=e.rotateAxisAngle(m,h,c,y);else if(r==="rotate"&&m&&[h,c].every(o=>o===void 0))e=e.rotate(0,0,m);else if(r==="scale3d"&&u.every(o=>!Number.isNaN(+o))&&u.some(o=>o!==1))e=e.scale(m,h,c);else if(r==="scale"&&!Number.isNaN(m)&&m!==1&&c===void 0){const d=Number.isNaN(+h)?m:h;e=e.scale(m,d,1)}else if(r==="skew"&&(m||!Number.isNaN(m)&&h)&&c===void 0)e=e.skew(m,h||0);else if(["translate","rotate","scale","skew"].some(o=>r.includes(o))&&/[XYZ]/.test(r)&&m&&[h,c].every(o=>o===void 0))if(r==="skewX"||r==="skewY")e=e[r](m);else{const o=r.replace(/[XYZ]/,""),d=r.replace(o,""),A=["X","Y","Z"].indexOf(d),M=o==="scale"?1:0,x=[A===0?m:M,A===1?m:M,A===2?m:M];e=e[o](...x)}else throw TypeError(n)}),e},O=(s,t)=>t?[s.a,s.b,s.c,s.d,s.e,s.f]:[s.m11,s.m12,s.m13,s.m14,s.m21,s.m22,s.m23,s.m24,s.m31,s.m32,s.m33,s.m34,s.m41,s.m42,s.m43,s.m44],T=(s,t,e)=>{const n=new f;return n.m41=s,n.e=s,n.m42=t,n.f=t,n.m43=e,n},I=(s,t,e)=>{const n=new f,i=Math.PI/180,r=s*i,a=t*i,l=e*i,m=Math.cos(r),h=-Math.sin(r),c=Math.cos(a),y=-Math.sin(a),u=Math.cos(l),w=-Math.sin(l),o=c*u,d=-c*w;n.m11=o,n.a=o,n.m12=d,n.b=d,n.m13=y;const A=h*y*u+m*w;n.m21=A,n.c=A;const M=m*u-h*y*w;return n.m22=M,n.d=M,n.m23=-h*c,n.m31=h*w-m*y*u,n.m32=h*u+m*y*w,n.m33=m*c,n},R=(s,t,e,n)=>{const i=new f,r=Math.sqrt(s*s+t*t+e*e);if(r===0)return i;const a=s/r,l=t/r,m=e/r,h=n*(Math.PI/360),c=Math.sin(h),y=Math.cos(h),u=c*c,w=a*a,o=l*l,d=m*m,A=1-2*(o+d)*u;i.m11=A,i.a=A;const M=2*(a*l*u+m*c*y);i.m12=M,i.b=M,i.m13=2*(a*m*u-l*c*y);const x=2*(l*a*u-m*c*y);i.m21=x,i.c=x;const Z=1-2*(d+w)*u;return i.m22=Z,i.d=Z,i.m23=2*(l*m*u+a*c*y),i.m31=2*(m*a*u+l*c*y),i.m32=2*(m*l*u-a*c*y),i.m33=1-2*(w+o)*u,i},D=(s,t,e)=>{const n=new f;return n.m11=s,n.a=s,n.m22=t,n.d=t,n.m33=e,n},X=(s,t)=>{const e=new f;if(s){const n=s*Math.PI/180,i=Math.tan(n);e.m21=i,e.c=i}if(t){const n=t*Math.PI/180,i=Math.tan(n);e.m12=i,e.b=i}return e},E=s=>X(s,0),P=s=>X(0,s),b=(s,t)=>{const e=t.m11*s.m11+t.m12*s.m21+t.m13*s.m31+t.m14*s.m41,n=t.m11*s.m12+t.m12*s.m22+t.m13*s.m32+t.m14*s.m42,i=t.m11*s.m13+t.m12*s.m23+t.m13*s.m33+t.m14*s.m43,r=t.m11*s.m14+t.m12*s.m24+t.m13*s.m34+t.m14*s.m44,a=t.m21*s.m11+t.m22*s.m21+t.m23*s.m31+t.m24*s.m41,l=t.m21*s.m12+t.m22*s.m22+t.m23*s.m32+t.m24*s.m42,m=t.m21*s.m13+t.m22*s.m23+t.m23*s.m33+t.m24*s.m43,h=t.m21*s.m14+t.m22*s.m24+t.m23*s.m34+t.m24*s.m44,c=t.m31*s.m11+t.m32*s.m21+t.m33*s.m31+t.m34*s.m41,y=t.m31*s.m12+t.m32*s.m22+t.m33*s.m32+t.m34*s.m42,u=t.m31*s.m13+t.m32*s.m23+t.m33*s.m33+t.m34*s.m43,w=t.m31*s.m14+t.m32*s.m24+t.m33*s.m34+t.m34*s.m44,o=t.m41*s.m11+t.m42*s.m21+t.m43*s.m31+t.m44*s.m41,d=t.m41*s.m12+t.m42*s.m22+t.m43*s.m32+t.m44*s.m42,A=t.m41*s.m13+t.m42*s.m23+t.m43*s.m33+t.m44*s.m43,M=t.m41*s.m14+t.m42*s.m24+t.m43*s.m34+t.m44*s.m44;return k([e,n,i,r,a,l,m,h,c,y,u,w,o,d,A,M])};class f{constructor(t){return this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0,this.m11=1,this.m12=0,this.m13=0,this.m14=0,this.m21=0,this.m22=1,this.m23=0,this.m24=0,this.m31=0,this.m32=0,this.m33=1,this.m34=0,this.m41=0,this.m42=0,this.m43=0,this.m44=1,t?this.setMatrixValue(t):this}get isIdentity(){return this.m11===1&&this.m12===0&&this.m13===0&&this.m14===0&&this.m21===0&&this.m22===1&&this.m23===0&&this.m24===0&&this.m31===0&&this.m32===0&&this.m33===1&&this.m34===0&&this.m41===0&&this.m42===0&&this.m43===0&&this.m44===1}get is2D(){return this.m31===0&&this.m32===0&&this.m33===1&&this.m34===0&&this.m43===0&&this.m44===1}setMatrixValue(t){return typeof t=="string"&&t.length&&t!=="none"?F(t):Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?k(t):typeof t=="object"?Y(t):this}toFloat32Array(t){return Float32Array.from(O(this,t))}toFloat64Array(t){return Float64Array.from(O(this,t))}toString(){const{is2D:t}=this,e=this.toFloat64Array(t).join(", ");return`${t?"matrix":"matrix3d"}(${e})`}toJSON(){const{is2D:t,isIdentity:e}=this;return{...this,is2D:t,isIdentity:e}}multiply(t){return b(this,t)}translate(t,e,n){const i=t;let r=e,a=n;return typeof r>"u"&&(r=0),typeof a>"u"&&(a=0),b(this,T(i,r,a))}scale(t,e,n){const i=t;let r=e,a=n;return typeof r>"u"&&(r=t),typeof a>"u"&&(a=1),b(this,D(i,r,a))}rotate(t,e,n){let i=t,r=e||0,a=n||0;return typeof t=="number"&&typeof e>"u"&&typeof n>"u"&&(a=i,i=0,r=0),b(this,I(i,r,a))}rotateAxisAngle(t,e,n,i){if([t,e,n,i].some(r=>Number.isNaN(+r)))throw new TypeError("CSSMatrix: expecting 4 values");return b(this,R(t,e,n,i))}skewX(t){return b(this,E(t))}skewY(t){return b(this,P(t))}skew(t,e){return b(this,X(t,e))}transformPoint(t){const e=this.m11*t.x+this.m21*t.y+this.m31*t.z+this.m41*t.w,n=this.m12*t.x+this.m22*t.y+this.m32*t.z+this.m42*t.w,i=this.m13*t.x+this.m23*t.y+this.m33*t.z+this.m43*t.w,r=this.m14*t.x+this.m24*t.y+this.m34*t.z+this.m44*t.w;return t instanceof DOMPoint?new DOMPoint(e,n,i,r):{x:e,y:n,z:i,w:r}}}return p(f,"Translate",T),p(f,"Rotate",I),p(f,"RotateAxisAngle",R),p(f,"Scale",D),p(f,"SkewX",E),p(f,"SkewY",P),p(f,"Skew",X),p(f,"Multiply",b),p(f,"fromArray",k),p(f,"fromMatrix",Y),p(f,"fromString",F),p(f,"toArray",O),p(f,"isCompatibleArray",N),p(f,"isCompatibleObject",g),f}();
1
+ var CSSMatrix=function(){"use strict";var z=Object.defineProperty;var S=(g,N,v)=>N in g?z(g,N,{enumerable:!0,configurable:!0,writable:!0,value:v}):g[N]=v;var p=(g,N,v)=>S(g,typeof N!="symbol"?N+"":N,v);const g={a:1,b:0,c:0,d:1,e:0,f:0,m11:1,m12:0,m13:0,m14:0,m21:0,m22:1,m23:0,m24:0,m31:0,m32:0,m33:1,m34:0,m41:0,m42:0,m43:0,m44:1,is2D:!0,isIdentity:!0},N=s=>(s instanceof Float64Array||s instanceof Float32Array||Array.isArray(s)&&s.every(t=>typeof t=="number"))&&[6,16].some(t=>s.length===t),v=s=>s instanceof DOMMatrix||s instanceof f||typeof s=="object"&&Object.keys(g).every(t=>s&&t in s),k=s=>{const t=new f,e=Array.from(s);if(!N(e))throw TypeError(`CSSMatrix: "${e.join(",")}" must be an array with 6/16 numbers.`);if(e.length===16){const[n,i,r,a,l,m,h,c,y,u,w,o,d,A,M,x]=e;t.m11=n,t.a=n,t.m21=l,t.c=l,t.m31=y,t.m41=d,t.e=d,t.m12=i,t.b=i,t.m22=m,t.d=m,t.m32=u,t.m42=A,t.f=A,t.m13=r,t.m23=h,t.m33=w,t.m43=M,t.m14=a,t.m24=c,t.m34=o,t.m44=x}else if(e.length===6){const[n,i,r,a,l,m]=e;t.m11=n,t.a=n,t.m12=i,t.b=i,t.m21=r,t.c=r,t.m22=a,t.d=a,t.m41=l,t.e=l,t.m42=m,t.f=m}return t},Y=s=>{if(v(s))return k([s.m11,s.m12,s.m13,s.m14,s.m21,s.m22,s.m23,s.m24,s.m31,s.m32,s.m33,s.m34,s.m41,s.m42,s.m43,s.m44]);throw TypeError(`CSSMatrix: "${JSON.stringify(s)}" is not a DOMMatrix / CSSMatrix / JSON compatible object.`)},F=s=>{if(typeof s!="string")throw TypeError(`CSSMatrix: "${JSON.stringify(s)}" is not a string.`);const t=String(s).replace(/\s/g,"");let e=new f;const n=`CSSMatrix: invalid transform string "${s}"`;return t.split(")").filter(i=>i).forEach(i=>{const[r,a]=i.split("(");if(!a)throw TypeError(n);const l=a.split(",").map(o=>o.includes("rad")?parseFloat(o)*(180/Math.PI):parseFloat(o)),[m,h,c,y]=l,u=[m,h,c],w=[m,h,c,y];if(r==="perspective"&&m&&[h,c].every(o=>o===void 0))e.m34=-1/m;else if(r.includes("matrix")&&[6,16].includes(l.length)&&l.every(o=>!Number.isNaN(+o))){const o=l.map(d=>Math.abs(d)<1e-6?0:d);e=e.multiply(k(o))}else if(r==="translate3d"&&u.every(o=>!Number.isNaN(+o)))e=e.translate(m,h,c);else if(r==="translate"&&m&&c===void 0)e=e.translate(m,h||0,0);else if(r==="rotate3d"&&w.every(o=>!Number.isNaN(+o))&&y)e=e.rotateAxisAngle(m,h,c,y);else if(r==="rotate"&&m&&[h,c].every(o=>o===void 0))e=e.rotate(0,0,m);else if(r==="scale3d"&&u.every(o=>!Number.isNaN(+o))&&u.some(o=>o!==1))e=e.scale(m,h,c);else if(r==="scale"&&!Number.isNaN(m)&&m!==1&&c===void 0){const d=Number.isNaN(+h)?m:h;e=e.scale(m,d,1)}else if(r==="skew"&&(m||!Number.isNaN(m)&&h)&&c===void 0)e=e.skew(m,h||0);else if(["translate","rotate","scale","skew"].some(o=>r.includes(o))&&/[XYZ]/.test(r)&&m&&[h,c].every(o=>o===void 0))if(r==="skewX"||r==="skewY")e=e[r](m);else{const o=r.replace(/[XYZ]/,""),d=r.replace(o,""),A=["X","Y","Z"].indexOf(d),M=o==="scale"?1:0,x=[A===0?m:M,A===1?m:M,A===2?m:M];e=e[o](...x)}else throw TypeError(n)}),e},O=(s,t)=>t?[s.a,s.b,s.c,s.d,s.e,s.f]:[s.m11,s.m12,s.m13,s.m14,s.m21,s.m22,s.m23,s.m24,s.m31,s.m32,s.m33,s.m34,s.m41,s.m42,s.m43,s.m44],T=(s,t,e)=>{const n=new f;return n.m41=s,n.e=s,n.m42=t,n.f=t,n.m43=e,n},I=(s,t,e)=>{const n=new f,i=Math.PI/180,r=s*i,a=t*i,l=e*i,m=Math.cos(r),h=-Math.sin(r),c=Math.cos(a),y=-Math.sin(a),u=Math.cos(l),w=-Math.sin(l),o=c*u,d=-c*w;n.m11=o,n.a=o,n.m12=d,n.b=d,n.m13=y;const A=h*y*u+m*w;n.m21=A,n.c=A;const M=m*u-h*y*w;return n.m22=M,n.d=M,n.m23=-h*c,n.m31=h*w-m*y*u,n.m32=h*u+m*y*w,n.m33=m*c,n},R=(s,t,e,n)=>{const i=new f,r=Math.sqrt(s*s+t*t+e*e);if(r===0)return i;const a=s/r,l=t/r,m=e/r,h=n*(Math.PI/360),c=Math.sin(h),y=Math.cos(h),u=c*c,w=a*a,o=l*l,d=m*m,A=1-2*(o+d)*u;i.m11=A,i.a=A;const M=2*(a*l*u+m*c*y);i.m12=M,i.b=M,i.m13=2*(a*m*u-l*c*y);const x=2*(l*a*u-m*c*y);i.m21=x,i.c=x;const Z=1-2*(d+w)*u;return i.m22=Z,i.d=Z,i.m23=2*(l*m*u+a*c*y),i.m31=2*(m*a*u+l*c*y),i.m32=2*(m*l*u-a*c*y),i.m33=1-2*(w+o)*u,i},D=(s,t,e)=>{const n=new f;return n.m11=s,n.a=s,n.m22=t,n.d=t,n.m33=e,n},X=(s,t)=>{const e=new f;if(s){const n=s*Math.PI/180,i=Math.tan(n);e.m21=i,e.c=i}if(t){const n=t*Math.PI/180,i=Math.tan(n);e.m12=i,e.b=i}return e},E=s=>X(s,0),P=s=>X(0,s),b=(s,t)=>{const e=t.m11*s.m11+t.m12*s.m21+t.m13*s.m31+t.m14*s.m41,n=t.m11*s.m12+t.m12*s.m22+t.m13*s.m32+t.m14*s.m42,i=t.m11*s.m13+t.m12*s.m23+t.m13*s.m33+t.m14*s.m43,r=t.m11*s.m14+t.m12*s.m24+t.m13*s.m34+t.m14*s.m44,a=t.m21*s.m11+t.m22*s.m21+t.m23*s.m31+t.m24*s.m41,l=t.m21*s.m12+t.m22*s.m22+t.m23*s.m32+t.m24*s.m42,m=t.m21*s.m13+t.m22*s.m23+t.m23*s.m33+t.m24*s.m43,h=t.m21*s.m14+t.m22*s.m24+t.m23*s.m34+t.m24*s.m44,c=t.m31*s.m11+t.m32*s.m21+t.m33*s.m31+t.m34*s.m41,y=t.m31*s.m12+t.m32*s.m22+t.m33*s.m32+t.m34*s.m42,u=t.m31*s.m13+t.m32*s.m23+t.m33*s.m33+t.m34*s.m43,w=t.m31*s.m14+t.m32*s.m24+t.m33*s.m34+t.m34*s.m44,o=t.m41*s.m11+t.m42*s.m21+t.m43*s.m31+t.m44*s.m41,d=t.m41*s.m12+t.m42*s.m22+t.m43*s.m32+t.m44*s.m42,A=t.m41*s.m13+t.m42*s.m23+t.m43*s.m33+t.m44*s.m43,M=t.m41*s.m14+t.m42*s.m24+t.m43*s.m34+t.m44*s.m44;return k([e,n,i,r,a,l,m,h,c,y,u,w,o,d,A,M])};class f{constructor(t){return this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0,this.m11=1,this.m12=0,this.m13=0,this.m14=0,this.m21=0,this.m22=1,this.m23=0,this.m24=0,this.m31=0,this.m32=0,this.m33=1,this.m34=0,this.m41=0,this.m42=0,this.m43=0,this.m44=1,t?this.setMatrixValue(t):this}get isIdentity(){return this.m11===1&&this.m12===0&&this.m13===0&&this.m14===0&&this.m21===0&&this.m22===1&&this.m23===0&&this.m24===0&&this.m31===0&&this.m32===0&&this.m33===1&&this.m34===0&&this.m41===0&&this.m42===0&&this.m43===0&&this.m44===1}get is2D(){return this.m31===0&&this.m32===0&&this.m33===1&&this.m34===0&&this.m43===0&&this.m44===1}setMatrixValue(t){return typeof t=="string"&&t.length&&t!=="none"?F(t):Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?k(t):typeof t=="object"?Y(t):this}toFloat32Array(t){return Float32Array.from(O(this,t))}toFloat64Array(t){return Float64Array.from(O(this,t))}toString(){const{is2D:t}=this,e=this.toFloat64Array(t).join(", ");return`${t?"matrix":"matrix3d"}(${e})`}toJSON(){const{is2D:t,isIdentity:e}=this;return{...this,is2D:t,isIdentity:e}}multiply(t){return b(this,t)}translate(t,e,n){const i=t;let r=e,a=n;return typeof r>"u"&&(r=0),typeof a>"u"&&(a=0),b(this,T(i,r,a))}scale(t,e,n){const i=t;let r=e,a=n;return typeof r>"u"&&(r=t),typeof a>"u"&&(a=1),b(this,D(i,r,a))}rotate(t,e,n){let i=t,r=e||0,a=n||0;return typeof t=="number"&&typeof e>"u"&&typeof n>"u"&&(a=i,i=0,r=0),b(this,I(i,r,a))}rotateAxisAngle(t,e,n,i){if([t,e,n,i].some(r=>Number.isNaN(+r)))throw new TypeError("CSSMatrix: expecting 4 values");return b(this,R(t,e,n,i))}skewX(t){return b(this,E(t))}skewY(t){return b(this,P(t))}skew(t,e){return b(this,X(t,e))}transformPoint(t){const e=this.m11*t.x+this.m21*t.y+this.m31*t.z+this.m41*t.w,n=this.m12*t.x+this.m22*t.y+this.m32*t.z+this.m42*t.w,i=this.m13*t.x+this.m23*t.y+this.m33*t.z+this.m43*t.w,r=this.m14*t.x+this.m24*t.y+this.m34*t.z+this.m44*t.w;return t instanceof DOMPoint?new DOMPoint(e,n,i,r):{x:e,y:n,z:i,w:r}}}return p(f,"Translate",T),p(f,"Rotate",I),p(f,"RotateAxisAngle",R),p(f,"Scale",D),p(f,"SkewX",E),p(f,"SkewY",P),p(f,"Skew",X),p(f,"Multiply",b),p(f,"fromArray",k),p(f,"fromMatrix",Y),p(f,"fromString",F),p(f,"toArray",O),p(f,"isCompatibleArray",N),p(f,"isCompatibleObject",v),f}();
2
2
  //# sourceMappingURL=dommatrix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dommatrix.js","sources":["../src/index.ts"],"sourcesContent":["import type { Matrix, Matrix3d, JSONMatrix, CSSMatrixInput, PointTuple } from './types';\n\n/** A model for JSONMatrix */\nconst JSON_MATRIX: JSONMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0,\n m11: 1,\n m12: 0,\n m13: 0,\n m14: 0,\n m21: 0,\n m22: 1,\n m23: 0,\n m24: 0,\n m31: 0,\n m32: 0,\n m33: 1,\n m34: 0,\n m41: 0,\n m42: 0,\n m43: 0,\n m44: 1,\n is2D: true,\n isIdentity: true,\n};\n\n// CSSMatrix Static methods\n// * `fromArray` is a more simple implementation, should also accept Float[32/64]Array;\n// * `fromMatrix` load values from another CSSMatrix/DOMMatrix instance or JSON object;\n// * `fromString` parses and loads values from any valid CSS transform string (TransformList).\n// * `isCompatibleArray` Checks if an array is compatible with CSSMatrix.\n// * `isCompatibleObject` Checks if an object is compatible with CSSMatrix.\n\n/** Checks if an array is compatible with CSSMatrix */\nconst isCompatibleArray = (array?: unknown): array is Matrix | Matrix3d | Float32Array | Float64Array => {\n return (\n (array instanceof Float64Array ||\n array instanceof Float32Array ||\n (Array.isArray(array) && array.every(x => typeof x === 'number'))) &&\n [6, 16].some(x => array.length === x)\n );\n};\n\n/** Checks if an object is compatible with CSSMatrix */\nconst isCompatibleObject = (object?: unknown): object is CSSMatrix | DOMMatrix | JSONMatrix => {\n return (\n object instanceof DOMMatrix ||\n object instanceof CSSMatrix ||\n (typeof object === 'object' && Object.keys(JSON_MATRIX).every(k => object && k in object))\n );\n};\n\n/**\n * Creates a new mutable `CSSMatrix` instance given an array of 16/6 floating point values.\n * This static method invalidates arrays that contain non-number elements.\n *\n * If the array has six values, the result is a 2D matrix; if the array has 16 values,\n * the result is a 3D matrix. Otherwise, a TypeError exception is thrown.\n *\n * @param array an `Array` to feed values from.\n * @return the resulted matrix.\n */\nconst fromArray = (array: any[] | Float32Array | Float64Array): CSSMatrix => {\n const m = new CSSMatrix();\n const a = Array.from(array);\n\n if (!isCompatibleArray(a)) {\n throw TypeError(`CSSMatrix: \"${a.join(',')}\" must be an array with 6/16 numbers.`);\n }\n if (a.length === 16) {\n const [m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44] = a;\n\n m.m11 = m11;\n m.a = m11;\n\n m.m21 = m21;\n m.c = m21;\n\n m.m31 = m31;\n\n m.m41 = m41;\n m.e = m41;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m22 = m22;\n m.d = m22;\n\n m.m32 = m32;\n\n m.m42 = m42;\n m.f = m42;\n\n m.m13 = m13;\n m.m23 = m23;\n m.m33 = m33;\n m.m43 = m43;\n m.m14 = m14;\n m.m24 = m24;\n m.m34 = m34;\n m.m44 = m44;\n } else if (a.length === 6) {\n const [M11, M12, M21, M22, M41, M42] = a;\n\n m.m11 = M11;\n m.a = M11;\n\n m.m12 = M12;\n m.b = M12;\n\n m.m21 = M21;\n m.c = M21;\n\n m.m22 = M22;\n m.d = M22;\n\n m.m41 = M41;\n m.e = M41;\n\n m.m42 = M42;\n m.f = M42;\n }\n return m;\n};\n\n/**\n * Creates a new mutable `CSSMatrix` instance given an existing matrix or a\n * `DOMMatrix` instance which provides the values for its properties.\n *\n * @param m the source matrix to feed values from.\n * @return the resulted matrix.\n */\nconst fromMatrix = (m: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix => {\n if (isCompatibleObject(m)) {\n return fromArray([\n m.m11,\n m.m12,\n m.m13,\n m.m14,\n m.m21,\n m.m22,\n m.m23,\n m.m24,\n m.m31,\n m.m32,\n m.m33,\n m.m34,\n m.m41,\n m.m42,\n m.m43,\n m.m44,\n ]);\n }\n throw TypeError(`CSSMatrix: \"${JSON.stringify(m)}\" is not a DOMMatrix / CSSMatrix / JSON compatible object.`);\n};\n\n/**\n * Creates a new mutable `CSSMatrix` given any valid CSS transform string,\n * or what we call `TransformList`:\n *\n * * `matrix(a, b, c, d, e, f)` - valid matrix() transform function\n * * `matrix3d(m11, m12, m13, ...m44)` - valid matrix3d() transform function\n * * `translate(tx, ty) rotateX(alpha)` - any valid transform function(s)\n *\n * @copyright thednp © 2021\n *\n * @param source valid CSS transform string syntax.\n * @return the resulted matrix.\n */\nconst fromString = (source: string): CSSMatrix => {\n if (typeof source !== 'string') {\n throw TypeError(`CSSMatrix: \"${JSON.stringify(source)}\" is not a string.`);\n }\n const str = String(source).replace(/\\s/g, '');\n let m = new CSSMatrix();\n const invalidStringError = `CSSMatrix: invalid transform string \"${source}\"`;\n\n // const px = ['perspective'];\n // const length = ['translate', 'translate3d', 'translateX', 'translateY', 'translateZ'];\n // const deg = ['rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'skew', 'skewX', 'skewY'];\n // const abs = ['scale', 'scale3d', 'matrix', 'matrix3d'];\n // const transformFunctions = px.concat(length, deg, abs);\n\n str\n .split(')')\n .filter(f => f)\n .forEach(tf => {\n const [prop, value] = tf.split('(');\n\n // invalidate empty string\n if (!value) throw TypeError(invalidStringError);\n\n const components = value\n .split(',')\n .map(n => (n.includes('rad') ? parseFloat(n) * (180 / Math.PI) : parseFloat(n)));\n\n const [x, y, z, a] = components;\n const xyz = [x, y, z];\n const xyza = [x, y, z, a];\n\n // single number value expected\n if (prop === 'perspective' && x && [y, z].every(n => n === undefined)) {\n m.m34 = -1 / x;\n // 6/16 number values expected\n } else if (\n prop.includes('matrix') &&\n [6, 16].includes(components.length) &&\n components.every(n => !Number.isNaN(+n))\n ) {\n const values = components.map(n => (Math.abs(n) < 1e-6 ? 0 : n));\n m = m.multiply(fromArray(values as Matrix | Matrix3d));\n // 3 values expected\n } else if (prop === 'translate3d' && xyz.every(n => !Number.isNaN(+n))) {\n m = m.translate(x, y, z);\n // single/double number value(s) expected\n } else if (prop === 'translate' && x && z === undefined) {\n m = m.translate(x, y || 0, 0);\n // all 4 values expected\n } else if (prop === 'rotate3d' && xyza.every(n => !Number.isNaN(+n)) && a) {\n m = m.rotateAxisAngle(x, y, z, a);\n // single value expected\n } else if (prop === 'rotate' && x && [y, z].every(n => n === undefined)) {\n m = m.rotate(0, 0, x);\n // 3 values expected\n } else if (prop === 'scale3d' && xyz.every(n => !Number.isNaN(+n)) && xyz.some(n => n !== 1)) {\n m = m.scale(x, y, z);\n // single value expected\n } else if (prop === 'scale' && !Number.isNaN(x) && x !== 1 && z === undefined) {\n const nosy = Number.isNaN(+y);\n const sy = nosy ? x : y;\n m = m.scale(x, sy, 1);\n // single/double value expected\n } else if (prop === 'skew' && (x || (!Number.isNaN(x) && y)) && z === undefined) {\n m = m.skew(x, y || 0);\n } else if (\n ['translate', 'rotate', 'scale', 'skew'].some(p => prop.includes(p)) &&\n /[XYZ]/.test(prop) &&\n x &&\n [y, z].every(n => n === undefined) // a single value expected\n ) {\n if ('skewX' === prop || 'skewY' === prop) {\n m = m[prop](x);\n } else {\n const fn = prop.replace(/[XYZ]/, '') as 'scale' | 'translate' | 'rotate';\n const axis = prop.replace(fn, '');\n const idx = ['X', 'Y', 'Z'].indexOf(axis);\n const def = fn === 'scale' ? 1 : 0;\n const axeValues: [number, number, number] = [idx === 0 ? x : def, idx === 1 ? x : def, idx === 2 ? x : def];\n m = m[fn](...axeValues);\n }\n } else {\n throw TypeError(invalidStringError);\n }\n });\n\n return m;\n};\n\n/**\n * Returns an *Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param m the source matrix to feed values from.\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\nconst toArray = (m: CSSMatrix | DOMMatrix | JSONMatrix, is2D?: boolean): Matrix | Matrix3d => {\n if (is2D) {\n return [m.a, m.b, m.c, m.d, m.e, m.f];\n }\n return [\n m.m11,\n m.m12,\n m.m13,\n m.m14,\n m.m21,\n m.m22,\n m.m23,\n m.m24,\n m.m31,\n m.m32,\n m.m33,\n m.m34,\n m.m41,\n m.m42,\n m.m43,\n m.m44,\n ];\n};\n\n// Transform Functions\n// https://www.w3.org/TR/css-transforms-1/#transform-functions\n\n/**\n * Creates a new `CSSMatrix` for the translation matrix and returns it.\n * This method is equivalent to the CSS `translate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translate3d\n *\n * @param x the `x-axis` position.\n * @param y the `y-axis` position.\n * @param z the `z-axis` position.\n * @return the resulted matrix.\n */\nconst Translate = (x: number, y: number, z: number): CSSMatrix => {\n const m = new CSSMatrix();\n m.m41 = x;\n m.e = x;\n m.m42 = y;\n m.f = y;\n m.m43 = z;\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n *\n * http://en.wikipedia.org/wiki/Rotation_matrix\n *\n * @param rx the `x-axis` rotation.\n * @param ry the `y-axis` rotation.\n * @param rz the `z-axis` rotation.\n * @return the resulted matrix.\n */\nconst Rotate = (rx: number, ry: number, rz: number): CSSMatrix => {\n const m = new CSSMatrix();\n const degToRad = Math.PI / 180;\n const radX = rx * degToRad;\n const radY = ry * degToRad;\n const radZ = rz * degToRad;\n\n // minus sin() because of right-handed system\n const cosx = Math.cos(radX);\n const sinx = -Math.sin(radX);\n const cosy = Math.cos(radY);\n const siny = -Math.sin(radY);\n const cosz = Math.cos(radZ);\n const sinz = -Math.sin(radZ);\n\n const m11 = cosy * cosz;\n const m12 = -cosy * sinz;\n\n m.m11 = m11;\n m.a = m11;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = siny;\n\n const m21 = sinx * siny * cosz + cosx * sinz;\n m.m21 = m21;\n m.c = m21;\n\n const m22 = cosx * cosz - sinx * siny * sinz;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = -sinx * cosy;\n\n m.m31 = sinx * sinz - cosx * siny * cosz;\n m.m32 = sinx * cosz + cosx * siny * sinz;\n m.m33 = cosx * cosy;\n\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n * This method is equivalent to the CSS `rotate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate3d\n *\n * @param x the `x-axis` vector length.\n * @param y the `y-axis` vector length.\n * @param z the `z-axis` vector length.\n * @param alpha the value in degrees of the rotation.\n * @return the resulted matrix.\n */\nconst RotateAxisAngle = (x: number, y: number, z: number, alpha: number): CSSMatrix => {\n const m = new CSSMatrix();\n const length = Math.sqrt(x * x + y * y + z * z);\n\n if (length === 0) {\n // bad vector length, return identity\n return m;\n }\n\n const X = x / length;\n const Y = y / length;\n const Z = z / length;\n\n const angle = alpha * (Math.PI / 360);\n const sinA = Math.sin(angle);\n const cosA = Math.cos(angle);\n const sinA2 = sinA * sinA;\n const x2 = X * X;\n const y2 = Y * Y;\n const z2 = Z * Z;\n\n const m11 = 1 - 2 * (y2 + z2) * sinA2;\n m.m11 = m11;\n m.a = m11;\n\n const m12 = 2 * (X * Y * sinA2 + Z * sinA * cosA);\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = 2 * (X * Z * sinA2 - Y * sinA * cosA);\n\n const m21 = 2 * (Y * X * sinA2 - Z * sinA * cosA);\n m.m21 = m21;\n m.c = m21;\n\n const m22 = 1 - 2 * (z2 + x2) * sinA2;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = 2 * (Y * Z * sinA2 + X * sinA * cosA);\n m.m31 = 2 * (Z * X * sinA2 + Y * sinA * cosA);\n m.m32 = 2 * (Z * Y * sinA2 - X * sinA * cosA);\n m.m33 = 1 - 2 * (x2 + y2) * sinA2;\n\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the scale matrix and returns it.\n * This method is equivalent to the CSS `scale3d()` function, except it doesn't\n * accept {x, y, z} transform origin parameters.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale3d\n *\n * @param x the `x-axis` scale.\n * @param y the `y-axis` scale.\n * @param z the `z-axis` scale.\n * @return the resulted matrix.\n */\nconst Scale = (x: number, y: number, z: number): CSSMatrix => {\n const m = new CSSMatrix();\n m.m11 = x;\n m.a = x;\n\n m.m22 = y;\n m.d = y;\n\n m.m33 = z;\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of both the `x-axis` and`y-axis`\n * matrix and returns it. This method is equivalent to the CSS `skew()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew\n *\n * @param angleX the X-angle in degrees.\n * @param angleY the Y-angle in degrees.\n * @return the resulted matrix.\n */\nconst Skew = (angleX: number, angleY: number): CSSMatrix => {\n const m = new CSSMatrix();\n if (angleX) {\n const radX = (angleX * Math.PI) / 180;\n const tX = Math.tan(radX);\n m.m21 = tX;\n m.c = tX;\n }\n if (angleY) {\n const radY = (angleY * Math.PI) / 180;\n const tY = Math.tan(radY);\n m.m12 = tY;\n m.b = tY;\n }\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of the `x-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewX()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewX\n *\n * @param angle the angle in degrees.\n * @return the resulted matrix.\n */\nconst SkewX = (angle: number): CSSMatrix => {\n return Skew(angle, 0);\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of the `y-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewY()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewY\n *\n * @param angle the angle in degrees.\n * @return the resulted matrix.\n */\nconst SkewY = (angle: number): CSSMatrix => {\n return Skew(0, angle);\n};\n\n/**\n * Creates a new `CSSMatrix` resulted from the multiplication of two matrixes\n * and returns it. Both matrixes are not changed.\n *\n * @param m1 the first matrix.\n * @param m2 the second matrix.\n * @return the resulted matrix.\n */\nconst Multiply = (m1: CSSMatrix | DOMMatrix | JSONMatrix, m2: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix => {\n const m11 = m2.m11 * m1.m11 + m2.m12 * m1.m21 + m2.m13 * m1.m31 + m2.m14 * m1.m41;\n const m12 = m2.m11 * m1.m12 + m2.m12 * m1.m22 + m2.m13 * m1.m32 + m2.m14 * m1.m42;\n const m13 = m2.m11 * m1.m13 + m2.m12 * m1.m23 + m2.m13 * m1.m33 + m2.m14 * m1.m43;\n const m14 = m2.m11 * m1.m14 + m2.m12 * m1.m24 + m2.m13 * m1.m34 + m2.m14 * m1.m44;\n\n const m21 = m2.m21 * m1.m11 + m2.m22 * m1.m21 + m2.m23 * m1.m31 + m2.m24 * m1.m41;\n const m22 = m2.m21 * m1.m12 + m2.m22 * m1.m22 + m2.m23 * m1.m32 + m2.m24 * m1.m42;\n const m23 = m2.m21 * m1.m13 + m2.m22 * m1.m23 + m2.m23 * m1.m33 + m2.m24 * m1.m43;\n const m24 = m2.m21 * m1.m14 + m2.m22 * m1.m24 + m2.m23 * m1.m34 + m2.m24 * m1.m44;\n\n const m31 = m2.m31 * m1.m11 + m2.m32 * m1.m21 + m2.m33 * m1.m31 + m2.m34 * m1.m41;\n const m32 = m2.m31 * m1.m12 + m2.m32 * m1.m22 + m2.m33 * m1.m32 + m2.m34 * m1.m42;\n const m33 = m2.m31 * m1.m13 + m2.m32 * m1.m23 + m2.m33 * m1.m33 + m2.m34 * m1.m43;\n const m34 = m2.m31 * m1.m14 + m2.m32 * m1.m24 + m2.m33 * m1.m34 + m2.m34 * m1.m44;\n\n const m41 = m2.m41 * m1.m11 + m2.m42 * m1.m21 + m2.m43 * m1.m31 + m2.m44 * m1.m41;\n const m42 = m2.m41 * m1.m12 + m2.m42 * m1.m22 + m2.m43 * m1.m32 + m2.m44 * m1.m42;\n const m43 = m2.m41 * m1.m13 + m2.m42 * m1.m23 + m2.m43 * m1.m33 + m2.m44 * m1.m43;\n const m44 = m2.m41 * m1.m14 + m2.m42 * m1.m24 + m2.m43 * m1.m34 + m2.m44 * m1.m44;\n\n return fromArray([m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44]);\n};\n\n/**\n * Creates and returns a new `DOMMatrix` compatible instance\n * with equivalent instance.\n *\n * @class CSSMatrix\n *\n * @author thednp <https://github.com/thednp/DOMMatrix/>\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix\n */\nexport default class CSSMatrix {\n declare m11: number;\n declare m12: number;\n declare m13: number;\n declare m14: number;\n declare m21: number;\n declare m22: number;\n declare m23: number;\n declare m24: number;\n declare m31: number;\n declare m32: number;\n declare m33: number;\n declare m34: number;\n declare m41: number;\n declare m42: number;\n declare m43: number;\n declare m44: number;\n declare a: number;\n declare b: number;\n declare c: number;\n declare d: number;\n declare e: number;\n declare f: number;\n static Translate = Translate;\n static Rotate = Rotate;\n static RotateAxisAngle = RotateAxisAngle;\n static Scale = Scale;\n static SkewX = SkewX;\n static SkewY = SkewY;\n static Skew = Skew;\n static Multiply = Multiply;\n static fromArray = fromArray;\n static fromMatrix = fromMatrix;\n static fromString = fromString;\n static toArray = toArray;\n static isCompatibleArray = isCompatibleArray;\n static isCompatibleObject = isCompatibleObject;\n\n /**\n * @constructor\n * @param init accepts all parameter configurations:\n * * valid CSS transform string,\n * * CSSMatrix/DOMMatrix instance,\n * * a 6/16 elements *Array*.\n */\n constructor(init?: CSSMatrixInput) {\n // array 6\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.e = 0;\n this.f = 0;\n // array 16\n this.m11 = 1;\n this.m12 = 0;\n this.m13 = 0;\n this.m14 = 0;\n this.m21 = 0;\n this.m22 = 1;\n this.m23 = 0;\n this.m24 = 0;\n this.m31 = 0;\n this.m32 = 0;\n this.m33 = 1;\n this.m34 = 0;\n this.m41 = 0;\n this.m42 = 0;\n this.m43 = 0;\n this.m44 = 1;\n\n if (init) {\n return this.setMatrixValue(init);\n }\n return this;\n }\n\n /**\n * A `Boolean` whose value is `true` if the matrix is the identity matrix. The identity\n * matrix is one in which every value is 0 except those on the main diagonal from top-left\n * to bottom-right corner (in other words, where the offsets in each direction are equal).\n *\n * @return the current property value\n */\n get isIdentity(): boolean {\n return (\n this.m11 === 1 &&\n this.m12 === 0 &&\n this.m13 === 0 &&\n this.m14 === 0 &&\n this.m21 === 0 &&\n this.m22 === 1 &&\n this.m23 === 0 &&\n this.m24 === 0 &&\n this.m31 === 0 &&\n this.m32 === 0 &&\n this.m33 === 1 &&\n this.m34 === 0 &&\n this.m41 === 0 &&\n this.m42 === 0 &&\n this.m43 === 0 &&\n this.m44 === 1\n );\n }\n\n /**\n * A `Boolean` flag whose value is `true` if the matrix was initialized as a 2D matrix\n * and `false` if the matrix is 3D.\n *\n * @return the current property value\n */\n get is2D(): boolean {\n return this.m31 === 0 && this.m32 === 0 && this.m33 === 1 && this.m34 === 0 && this.m43 === 0 && this.m44 === 1;\n }\n\n /**\n * The `setMatrixValue` method replaces the existing matrix with one computed\n * in the browser. EG: `matrix(1,0.25,-0.25,1,0,0)`\n *\n * The method accepts any *Array* values, the result of\n * `DOMMatrix` instance method `toFloat64Array()` / `toFloat32Array()` calls\n * or `CSSMatrix` instance method `toArray()`.\n *\n * This method expects valid *matrix()* / *matrix3d()* string values, as well\n * as other transform functions like *translateX(10px)*.\n *\n * @param source\n * @return the matrix instance\n */\n setMatrixValue(source?: CSSMatrixInput): CSSMatrix {\n // CSS transform string source - TransformList first\n if (typeof source === 'string' && source.length && source !== 'none') {\n return fromString(source);\n }\n\n // [Array | Float[32/64]Array] come next\n if (Array.isArray(source) || source instanceof Float64Array || source instanceof Float32Array) {\n return fromArray(source);\n }\n\n // new CSSMatrix(CSSMatrix | DOMMatrix | JSONMatrix) last\n if (typeof source === 'object') {\n return fromMatrix(source);\n }\n\n return this;\n }\n\n /**\n * Returns a *Float32Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\n toFloat32Array(is2D?: boolean): Float32Array {\n return Float32Array.from(toArray(this, is2D));\n }\n\n /**\n * Returns a *Float64Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\n toFloat64Array(is2D?: boolean): Float64Array {\n return Float64Array.from(toArray(this, is2D));\n }\n\n /**\n * Creates and returns a string representation of the matrix in `CSS` matrix syntax,\n * using the appropriate `CSS` matrix notation.\n *\n * matrix3d *matrix3d(m11, m12, m13, m14, m21, ...)*\n * matrix *matrix(a, b, c, d, e, f)*\n *\n * @return a string representation of the matrix\n */\n toString(): string {\n const { is2D } = this;\n const values = this.toFloat64Array(is2D).join(', ');\n const type = is2D ? 'matrix' : 'matrix3d';\n return `${type}(${values})`;\n }\n\n /**\n * Returns a JSON representation of the `CSSMatrix` instance, a standard *Object*\n * that includes `{a,b,c,d,e,f}` and `{m11,m12,m13,..m44}` properties as well\n * as the `is2D` & `isIdentity` properties.\n *\n * The result can also be used as a second parameter for the `fromMatrix` static method\n * to load values into another matrix instance.\n *\n * @return an *Object* with all matrix values.\n */\n toJSON(): JSONMatrix {\n const { is2D, isIdentity } = this;\n return { ...this, is2D, isIdentity };\n }\n\n /**\n * The Multiply method returns a new CSSMatrix which is the result of this\n * matrix multiplied by the passed matrix, with the passed matrix to the right.\n * This matrix is not modified.\n *\n * @param m2 CSSMatrix\n * @return The resulted matrix.\n */\n multiply(m2: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix {\n return Multiply(this, m2);\n }\n\n /**\n * The translate method returns a new matrix which is this matrix post\n * multiplied by a translation matrix containing the passed values. If the z\n * component is undefined, a 0 value is used in its place. This matrix is not\n * modified.\n *\n * @param x X component of the translation value.\n * @param y Y component of the translation value.\n * @param z Z component of the translation value.\n * @return The resulted matrix\n */\n translate(x: number, y?: number, z?: number): CSSMatrix {\n const X = x;\n let Y = y;\n let Z = z;\n if (typeof Y === 'undefined') Y = 0;\n if (typeof Z === 'undefined') Z = 0;\n return Multiply(this, Translate(X, Y, Z));\n }\n\n /**\n * The scale method returns a new matrix which is this matrix post multiplied by\n * a scale matrix containing the passed values. If the z component is undefined,\n * a 1 value is used in its place. If the y component is undefined, the x\n * component value is used in its place. This matrix is not modified.\n *\n * @param x The X component of the scale value.\n * @param y The Y component of the scale value.\n * @param z The Z component of the scale value.\n * @return The resulted matrix\n */\n scale(x: number, y?: number, z?: number): CSSMatrix {\n const X = x;\n let Y = y;\n let Z = z;\n if (typeof Y === 'undefined') Y = x;\n if (typeof Z === 'undefined') Z = 1; // Z must be 1 if undefined\n\n return Multiply(this, Scale(X, Y, Z));\n }\n\n /**\n * The rotate method returns a new matrix which is this matrix post multiplied\n * by each of 3 rotation matrices about the major axes, first X, then Y, then Z.\n * If the y and z components are undefined, the x value is used to rotate the\n * object about the z axis, as though the vector (0,0,x) were passed. All\n * rotation values are in degrees. This matrix is not modified.\n *\n * @param rx The X component of the rotation, or Z if Y and Z are null.\n * @param ry The (optional) Y component of the rotation value.\n * @param rz The (optional) Z component of the rotation value.\n * @return The resulted matrix\n */\n rotate(rx: number, ry?: number, rz?: number): CSSMatrix {\n let RX = rx;\n let RY = ry || 0;\n let RZ = rz || 0;\n\n if (typeof rx === 'number' && typeof ry === 'undefined' && typeof rz === 'undefined') {\n RZ = RX;\n RX = 0;\n RY = 0;\n }\n\n return Multiply(this, Rotate(RX, RY, RZ));\n }\n\n /**\n * The rotateAxisAngle method returns a new matrix which is this matrix post\n * multiplied by a rotation matrix with the given axis and `angle`. The right-hand\n * rule is used to determine the direction of rotation. All rotation values are\n * in degrees. This matrix is not modified.\n *\n * @param x The X component of the axis vector.\n * @param y The Y component of the axis vector.\n * @param z The Z component of the axis vector.\n * @param angle The angle of rotation about the axis vector, in degrees.\n * @return The resulted matrix\n */\n rotateAxisAngle(x: number, y: number, z: number, angle: number): CSSMatrix {\n if ([x, y, z, angle].some(n => Number.isNaN(+n))) {\n throw new TypeError('CSSMatrix: expecting 4 values');\n }\n return Multiply(this, RotateAxisAngle(x, y, z, angle));\n }\n\n /**\n * Specifies a skew transformation along the `x-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param angle The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skewX(angle: number): CSSMatrix {\n return Multiply(this, SkewX(angle));\n }\n\n /**\n * Specifies a skew transformation along the `y-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param angle The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skewY(angle: number): CSSMatrix {\n return Multiply(this, SkewY(angle));\n }\n\n /**\n * Specifies a skew transformation along both the `x-axis` and `y-axis`.\n * This matrix is not modified.\n *\n * @param angleX The X-angle amount in degrees to skew.\n * @param angleY The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skew(angleX: number, angleY: number): CSSMatrix {\n return Multiply(this, Skew(angleX, angleY));\n }\n\n /**\n * Transforms a specified vector using the matrix, returning a new\n * {x,y,z,w} Tuple *Object* comprising the transformed vector.\n * Neither the matrix nor the original vector are altered.\n *\n * The method is equivalent with `transformPoint()` method\n * of the `DOMMatrix` constructor.\n *\n * @param t Tuple with `{x,y,z,w}` components\n * @return the resulting Tuple\n */\n transformPoint(t: PointTuple | DOMPoint): PointTuple | DOMPoint {\n const x = this.m11 * t.x + this.m21 * t.y + this.m31 * t.z + this.m41 * t.w;\n const y = this.m12 * t.x + this.m22 * t.y + this.m32 * t.z + this.m42 * t.w;\n const z = this.m13 * t.x + this.m23 * t.y + this.m33 * t.z + this.m43 * t.w;\n const w = this.m14 * t.x + this.m24 * t.y + this.m34 * t.z + this.m44 * t.w;\n\n return t instanceof DOMPoint\n ? new DOMPoint(x, y, z, w)\n : {\n x,\n y,\n z,\n w,\n };\n }\n}\n"],"names":["JSON_MATRIX","isCompatibleArray","array","x","isCompatibleObject","object","CSSMatrix","k","fromArray","m","a","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","M11","M12","M21","M22","M41","M42","fromMatrix","fromString","source","str","invalidStringError","f","tf","prop","value","components","n","y","z","xyz","xyza","values","sy","p","fn","axis","idx","def","axeValues","toArray","is2D","Translate","Rotate","rx","ry","rz","degToRad","radX","radY","radZ","cosx","sinx","cosy","siny","cosz","sinz","RotateAxisAngle","alpha","length","X","Y","Z","angle","sinA","cosA","sinA2","x2","y2","z2","Scale","Skew","angleX","angleY","tX","tY","SkewX","SkewY","Multiply","m1","m2","init","isIdentity","RX","RY","RZ","w","__publicField"],"mappings":"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"}
1
+ {"version":3,"file":"dommatrix.js","sources":["../src/index.ts"],"sourcesContent":["import type { Matrix, Matrix3d, JSONMatrix, CSSMatrixInput, PointTuple } from './types';\n\n/** A model for JSONMatrix */\nconst JSON_MATRIX: JSONMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0,\n m11: 1,\n m12: 0,\n m13: 0,\n m14: 0,\n m21: 0,\n m22: 1,\n m23: 0,\n m24: 0,\n m31: 0,\n m32: 0,\n m33: 1,\n m34: 0,\n m41: 0,\n m42: 0,\n m43: 0,\n m44: 1,\n is2D: true,\n isIdentity: true,\n};\n\n// CSSMatrix Static methods\n// * `fromArray` is a more simple implementation, should also accept Float[32/64]Array;\n// * `fromMatrix` load values from another CSSMatrix/DOMMatrix instance or JSON object;\n// * `fromString` parses and loads values from any valid CSS transform string (TransformList).\n// * `isCompatibleArray` Checks if an array is compatible with CSSMatrix.\n// * `isCompatibleObject` Checks if an object is compatible with CSSMatrix.\n\n/** Checks if an array is compatible with CSSMatrix */\nconst isCompatibleArray = (array?: unknown): array is Matrix | Matrix3d | Float32Array | Float64Array => {\n return (\n (array instanceof Float64Array ||\n array instanceof Float32Array ||\n (Array.isArray(array) && array.every(x => typeof x === 'number'))) &&\n [6, 16].some(x => array.length === x)\n );\n};\n\n/** Checks if an object is compatible with CSSMatrix */\nconst isCompatibleObject = (object?: unknown): object is CSSMatrix | DOMMatrix | JSONMatrix => {\n return (\n object instanceof DOMMatrix ||\n object instanceof CSSMatrix ||\n (typeof object === 'object' && Object.keys(JSON_MATRIX).every(k => object && k in object))\n );\n};\n\n/**\n * Creates a new mutable `CSSMatrix` instance given an array of 16/6 floating point values.\n * This static method invalidates arrays that contain non-number elements.\n *\n * If the array has six values, the result is a 2D matrix; if the array has 16 values,\n * the result is a 3D matrix. Otherwise, a TypeError exception is thrown.\n *\n * @param array an `Array` to feed values from.\n * @return the resulted matrix.\n */\nconst fromArray = (array: any[] | Float32Array | Float64Array): CSSMatrix => {\n const m = new CSSMatrix();\n const a = Array.from(array);\n\n if (!isCompatibleArray(a)) {\n throw TypeError(`CSSMatrix: \"${a.join(',')}\" must be an array with 6/16 numbers.`);\n }\n if (a.length === 16) {\n const [m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44] = a;\n\n m.m11 = m11;\n m.a = m11;\n\n m.m21 = m21;\n m.c = m21;\n\n m.m31 = m31;\n\n m.m41 = m41;\n m.e = m41;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m22 = m22;\n m.d = m22;\n\n m.m32 = m32;\n\n m.m42 = m42;\n m.f = m42;\n\n m.m13 = m13;\n m.m23 = m23;\n m.m33 = m33;\n m.m43 = m43;\n m.m14 = m14;\n m.m24 = m24;\n m.m34 = m34;\n m.m44 = m44;\n } else if (a.length === 6) {\n const [M11, M12, M21, M22, M41, M42] = a;\n\n m.m11 = M11;\n m.a = M11;\n\n m.m12 = M12;\n m.b = M12;\n\n m.m21 = M21;\n m.c = M21;\n\n m.m22 = M22;\n m.d = M22;\n\n m.m41 = M41;\n m.e = M41;\n\n m.m42 = M42;\n m.f = M42;\n }\n return m;\n};\n\n/**\n * Creates a new mutable `CSSMatrix` instance given an existing matrix or a\n * `DOMMatrix` instance which provides the values for its properties.\n *\n * @param m the source matrix to feed values from.\n * @return the resulted matrix.\n */\nconst fromMatrix = (m: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix => {\n if (isCompatibleObject(m)) {\n return fromArray([\n m.m11,\n m.m12,\n m.m13,\n m.m14,\n m.m21,\n m.m22,\n m.m23,\n m.m24,\n m.m31,\n m.m32,\n m.m33,\n m.m34,\n m.m41,\n m.m42,\n m.m43,\n m.m44,\n ]);\n }\n throw TypeError(`CSSMatrix: \"${JSON.stringify(m)}\" is not a DOMMatrix / CSSMatrix / JSON compatible object.`);\n};\n\n/**\n * Creates a new mutable `CSSMatrix` given any valid CSS transform string,\n * or what we call `TransformList`:\n *\n * * `matrix(a, b, c, d, e, f)` - valid matrix() transform function\n * * `matrix3d(m11, m12, m13, ...m44)` - valid matrix3d() transform function\n * * `translate(tx, ty) rotateX(alpha)` - any valid transform function(s)\n *\n * @copyright thednp © 2021\n *\n * @param source valid CSS transform string syntax.\n * @return the resulted matrix.\n */\nconst fromString = (source: string): CSSMatrix => {\n if (typeof source !== 'string') {\n throw TypeError(`CSSMatrix: \"${JSON.stringify(source)}\" is not a string.`);\n }\n const str = String(source).replace(/\\s/g, '');\n let m = new CSSMatrix();\n const invalidStringError = `CSSMatrix: invalid transform string \"${source}\"`;\n\n // const px = ['perspective'];\n // const length = ['translate', 'translate3d', 'translateX', 'translateY', 'translateZ'];\n // const deg = ['rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'skew', 'skewX', 'skewY'];\n // const abs = ['scale', 'scale3d', 'matrix', 'matrix3d'];\n // const transformFunctions = px.concat(length, deg, abs);\n\n str\n .split(')')\n .filter(f => f)\n .forEach(tf => {\n const [prop, value] = tf.split('(');\n\n // invalidate empty string\n if (!value) throw TypeError(invalidStringError);\n\n const components = value\n .split(',')\n .map(n => (n.includes('rad') ? parseFloat(n) * (180 / Math.PI) : parseFloat(n)));\n\n const [x, y, z, a] = components;\n const xyz = [x, y, z];\n const xyza = [x, y, z, a];\n\n // single number value expected\n if (prop === 'perspective' && x && [y, z].every(n => n === undefined)) {\n m.m34 = -1 / x;\n // 6/16 number values expected\n } else if (\n prop.includes('matrix') &&\n [6, 16].includes(components.length) &&\n components.every(n => !Number.isNaN(+n))\n ) {\n const values = components.map(n => (Math.abs(n) < 1e-6 ? 0 : n));\n m = m.multiply(fromArray(values as Matrix | Matrix3d));\n // 3 values expected\n } else if (prop === 'translate3d' && xyz.every(n => !Number.isNaN(+n))) {\n m = m.translate(x, y, z);\n // single/double number value(s) expected\n } else if (prop === 'translate' && x && z === undefined) {\n m = m.translate(x, y || 0, 0);\n // all 4 values expected\n } else if (prop === 'rotate3d' && xyza.every(n => !Number.isNaN(+n)) && a) {\n m = m.rotateAxisAngle(x, y, z, a);\n // single value expected\n } else if (prop === 'rotate' && x && [y, z].every(n => n === undefined)) {\n m = m.rotate(0, 0, x);\n // 3 values expected\n } else if (prop === 'scale3d' && xyz.every(n => !Number.isNaN(+n)) && xyz.some(n => n !== 1)) {\n m = m.scale(x, y, z);\n // single value expected\n } else if (prop === 'scale' && !Number.isNaN(x) && x !== 1 && z === undefined) {\n const nosy = Number.isNaN(+y);\n const sy = nosy ? x : y;\n m = m.scale(x, sy, 1);\n // single/double value expected\n } else if (prop === 'skew' && (x || (!Number.isNaN(x) && y)) && z === undefined) {\n m = m.skew(x, y || 0);\n } else if (\n ['translate', 'rotate', 'scale', 'skew'].some(p => prop.includes(p)) &&\n /[XYZ]/.test(prop) &&\n x &&\n [y, z].every(n => n === undefined) // a single value expected\n ) {\n if ('skewX' === prop || 'skewY' === prop) {\n m = m[prop](x);\n } else {\n const fn = prop.replace(/[XYZ]/, '') as 'scale' | 'translate' | 'rotate';\n const axis = prop.replace(fn, '');\n const idx = ['X', 'Y', 'Z'].indexOf(axis);\n const def = fn === 'scale' ? 1 : 0;\n const axeValues: [number, number, number] = [idx === 0 ? x : def, idx === 1 ? x : def, idx === 2 ? x : def];\n m = m[fn](...axeValues);\n }\n } else {\n throw TypeError(invalidStringError);\n }\n });\n\n return m;\n};\n\n/**\n * Returns an *Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param m the source matrix to feed values from.\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\nconst toArray = (m: CSSMatrix | DOMMatrix | JSONMatrix, is2D?: boolean): Matrix | Matrix3d => {\n if (is2D) {\n return [m.a, m.b, m.c, m.d, m.e, m.f];\n }\n return [\n m.m11,\n m.m12,\n m.m13,\n m.m14,\n m.m21,\n m.m22,\n m.m23,\n m.m24,\n m.m31,\n m.m32,\n m.m33,\n m.m34,\n m.m41,\n m.m42,\n m.m43,\n m.m44,\n ];\n};\n\n// Transform Functions\n// https://www.w3.org/TR/css-transforms-1/#transform-functions\n\n/**\n * Creates a new `CSSMatrix` for the translation matrix and returns it.\n * This method is equivalent to the CSS `translate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translate3d\n *\n * @param x the `x-axis` position.\n * @param y the `y-axis` position.\n * @param z the `z-axis` position.\n * @return the resulted matrix.\n */\nconst Translate = (x: number, y: number, z: number): CSSMatrix => {\n const m = new CSSMatrix();\n m.m41 = x;\n m.e = x;\n m.m42 = y;\n m.f = y;\n m.m43 = z;\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n *\n * http://en.wikipedia.org/wiki/Rotation_matrix\n *\n * @param rx the `x-axis` rotation.\n * @param ry the `y-axis` rotation.\n * @param rz the `z-axis` rotation.\n * @return the resulted matrix.\n */\nconst Rotate = (rx: number, ry: number, rz: number): CSSMatrix => {\n const m = new CSSMatrix();\n const degToRad = Math.PI / 180;\n const radX = rx * degToRad;\n const radY = ry * degToRad;\n const radZ = rz * degToRad;\n\n // minus sin() because of right-handed system\n const cosx = Math.cos(radX);\n const sinx = -Math.sin(radX);\n const cosy = Math.cos(radY);\n const siny = -Math.sin(radY);\n const cosz = Math.cos(radZ);\n const sinz = -Math.sin(radZ);\n\n const m11 = cosy * cosz;\n const m12 = -cosy * sinz;\n\n m.m11 = m11;\n m.a = m11;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = siny;\n\n const m21 = sinx * siny * cosz + cosx * sinz;\n m.m21 = m21;\n m.c = m21;\n\n const m22 = cosx * cosz - sinx * siny * sinz;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = -sinx * cosy;\n\n m.m31 = sinx * sinz - cosx * siny * cosz;\n m.m32 = sinx * cosz + cosx * siny * sinz;\n m.m33 = cosx * cosy;\n\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n * This method is equivalent to the CSS `rotate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate3d\n *\n * @param x the `x-axis` vector length.\n * @param y the `y-axis` vector length.\n * @param z the `z-axis` vector length.\n * @param alpha the value in degrees of the rotation.\n * @return the resulted matrix.\n */\nconst RotateAxisAngle = (x: number, y: number, z: number, alpha: number): CSSMatrix => {\n const m = new CSSMatrix();\n const length = Math.sqrt(x * x + y * y + z * z);\n\n if (length === 0) {\n // bad vector length, return identity\n return m;\n }\n\n const X = x / length;\n const Y = y / length;\n const Z = z / length;\n\n const angle = alpha * (Math.PI / 360);\n const sinA = Math.sin(angle);\n const cosA = Math.cos(angle);\n const sinA2 = sinA * sinA;\n const x2 = X * X;\n const y2 = Y * Y;\n const z2 = Z * Z;\n\n const m11 = 1 - 2 * (y2 + z2) * sinA2;\n m.m11 = m11;\n m.a = m11;\n\n const m12 = 2 * (X * Y * sinA2 + Z * sinA * cosA);\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = 2 * (X * Z * sinA2 - Y * sinA * cosA);\n\n const m21 = 2 * (Y * X * sinA2 - Z * sinA * cosA);\n m.m21 = m21;\n m.c = m21;\n\n const m22 = 1 - 2 * (z2 + x2) * sinA2;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = 2 * (Y * Z * sinA2 + X * sinA * cosA);\n m.m31 = 2 * (Z * X * sinA2 + Y * sinA * cosA);\n m.m32 = 2 * (Z * Y * sinA2 - X * sinA * cosA);\n m.m33 = 1 - 2 * (x2 + y2) * sinA2;\n\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the scale matrix and returns it.\n * This method is equivalent to the CSS `scale3d()` function, except it doesn't\n * accept {x, y, z} transform origin parameters.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale3d\n *\n * @param x the `x-axis` scale.\n * @param y the `y-axis` scale.\n * @param z the `z-axis` scale.\n * @return the resulted matrix.\n */\nconst Scale = (x: number, y: number, z: number): CSSMatrix => {\n const m = new CSSMatrix();\n m.m11 = x;\n m.a = x;\n\n m.m22 = y;\n m.d = y;\n\n m.m33 = z;\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of both the `x-axis` and`y-axis`\n * matrix and returns it. This method is equivalent to the CSS `skew()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew\n *\n * @param angleX the X-angle in degrees.\n * @param angleY the Y-angle in degrees.\n * @return the resulted matrix.\n */\nconst Skew = (angleX: number, angleY: number): CSSMatrix => {\n const m = new CSSMatrix();\n if (angleX) {\n const radX = (angleX * Math.PI) / 180;\n const tX = Math.tan(radX);\n m.m21 = tX;\n m.c = tX;\n }\n if (angleY) {\n const radY = (angleY * Math.PI) / 180;\n const tY = Math.tan(radY);\n m.m12 = tY;\n m.b = tY;\n }\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of the `x-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewX()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewX\n *\n * @param angle the angle in degrees.\n * @return the resulted matrix.\n */\nconst SkewX = (angle: number): CSSMatrix => {\n return Skew(angle, 0);\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of the `y-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewY()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewY\n *\n * @param angle the angle in degrees.\n * @return the resulted matrix.\n */\nconst SkewY = (angle: number): CSSMatrix => {\n return Skew(0, angle);\n};\n\n/**\n * Creates a new `CSSMatrix` resulted from the multiplication of two matrixes\n * and returns it. Both matrixes are not changed.\n *\n * @param m1 the first matrix.\n * @param m2 the second matrix.\n * @return the resulted matrix.\n */\nconst Multiply = (m1: CSSMatrix | DOMMatrix | JSONMatrix, m2: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix => {\n const m11 = m2.m11 * m1.m11 + m2.m12 * m1.m21 + m2.m13 * m1.m31 + m2.m14 * m1.m41;\n const m12 = m2.m11 * m1.m12 + m2.m12 * m1.m22 + m2.m13 * m1.m32 + m2.m14 * m1.m42;\n const m13 = m2.m11 * m1.m13 + m2.m12 * m1.m23 + m2.m13 * m1.m33 + m2.m14 * m1.m43;\n const m14 = m2.m11 * m1.m14 + m2.m12 * m1.m24 + m2.m13 * m1.m34 + m2.m14 * m1.m44;\n\n const m21 = m2.m21 * m1.m11 + m2.m22 * m1.m21 + m2.m23 * m1.m31 + m2.m24 * m1.m41;\n const m22 = m2.m21 * m1.m12 + m2.m22 * m1.m22 + m2.m23 * m1.m32 + m2.m24 * m1.m42;\n const m23 = m2.m21 * m1.m13 + m2.m22 * m1.m23 + m2.m23 * m1.m33 + m2.m24 * m1.m43;\n const m24 = m2.m21 * m1.m14 + m2.m22 * m1.m24 + m2.m23 * m1.m34 + m2.m24 * m1.m44;\n\n const m31 = m2.m31 * m1.m11 + m2.m32 * m1.m21 + m2.m33 * m1.m31 + m2.m34 * m1.m41;\n const m32 = m2.m31 * m1.m12 + m2.m32 * m1.m22 + m2.m33 * m1.m32 + m2.m34 * m1.m42;\n const m33 = m2.m31 * m1.m13 + m2.m32 * m1.m23 + m2.m33 * m1.m33 + m2.m34 * m1.m43;\n const m34 = m2.m31 * m1.m14 + m2.m32 * m1.m24 + m2.m33 * m1.m34 + m2.m34 * m1.m44;\n\n const m41 = m2.m41 * m1.m11 + m2.m42 * m1.m21 + m2.m43 * m1.m31 + m2.m44 * m1.m41;\n const m42 = m2.m41 * m1.m12 + m2.m42 * m1.m22 + m2.m43 * m1.m32 + m2.m44 * m1.m42;\n const m43 = m2.m41 * m1.m13 + m2.m42 * m1.m23 + m2.m43 * m1.m33 + m2.m44 * m1.m43;\n const m44 = m2.m41 * m1.m14 + m2.m42 * m1.m24 + m2.m43 * m1.m34 + m2.m44 * m1.m44;\n\n return fromArray([m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44]);\n};\n\n/**\n * Creates and returns a new `DOMMatrix` compatible instance\n * with equivalent instance.\n *\n * @class CSSMatrix\n *\n * @author thednp <https://github.com/thednp/DOMMatrix/>\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix\n */\nexport default class CSSMatrix {\n declare m11: number;\n declare m12: number;\n declare m13: number;\n declare m14: number;\n declare m21: number;\n declare m22: number;\n declare m23: number;\n declare m24: number;\n declare m31: number;\n declare m32: number;\n declare m33: number;\n declare m34: number;\n declare m41: number;\n declare m42: number;\n declare m43: number;\n declare m44: number;\n declare a: number;\n declare b: number;\n declare c: number;\n declare d: number;\n declare e: number;\n declare f: number;\n static Translate = Translate;\n static Rotate = Rotate;\n static RotateAxisAngle = RotateAxisAngle;\n static Scale = Scale;\n static SkewX = SkewX;\n static SkewY = SkewY;\n static Skew = Skew;\n static Multiply = Multiply;\n static fromArray = fromArray;\n static fromMatrix = fromMatrix;\n static fromString = fromString;\n static toArray = toArray;\n static isCompatibleArray = isCompatibleArray;\n static isCompatibleObject = isCompatibleObject;\n\n /**\n * @constructor\n * @param init accepts all parameter configurations:\n * * valid CSS transform string,\n * * CSSMatrix/DOMMatrix instance,\n * * a 6/16 elements *Array*.\n */\n constructor(init?: CSSMatrixInput) {\n // array 6\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.e = 0;\n this.f = 0;\n // array 16\n this.m11 = 1;\n this.m12 = 0;\n this.m13 = 0;\n this.m14 = 0;\n this.m21 = 0;\n this.m22 = 1;\n this.m23 = 0;\n this.m24 = 0;\n this.m31 = 0;\n this.m32 = 0;\n this.m33 = 1;\n this.m34 = 0;\n this.m41 = 0;\n this.m42 = 0;\n this.m43 = 0;\n this.m44 = 1;\n\n if (init) {\n return this.setMatrixValue(init);\n }\n return this;\n }\n\n /**\n * A `Boolean` whose value is `true` if the matrix is the identity matrix. The identity\n * matrix is one in which every value is 0 except those on the main diagonal from top-left\n * to bottom-right corner (in other words, where the offsets in each direction are equal).\n *\n * @return the current property value\n */\n get isIdentity(): boolean {\n return (\n this.m11 === 1 &&\n this.m12 === 0 &&\n this.m13 === 0 &&\n this.m14 === 0 &&\n this.m21 === 0 &&\n this.m22 === 1 &&\n this.m23 === 0 &&\n this.m24 === 0 &&\n this.m31 === 0 &&\n this.m32 === 0 &&\n this.m33 === 1 &&\n this.m34 === 0 &&\n this.m41 === 0 &&\n this.m42 === 0 &&\n this.m43 === 0 &&\n this.m44 === 1\n );\n }\n\n /**\n * A `Boolean` flag whose value is `true` if the matrix was initialized as a 2D matrix\n * and `false` if the matrix is 3D.\n *\n * @return the current property value\n */\n get is2D(): boolean {\n return this.m31 === 0 && this.m32 === 0 && this.m33 === 1 && this.m34 === 0 && this.m43 === 0 && this.m44 === 1;\n }\n\n /**\n * The `setMatrixValue` method replaces the existing matrix with one computed\n * in the browser. EG: `matrix(1,0.25,-0.25,1,0,0)`\n *\n * The method accepts any *Array* values, the result of\n * `DOMMatrix` instance method `toFloat64Array()` / `toFloat32Array()` calls\n * or `CSSMatrix` instance method `toArray()`.\n *\n * This method expects valid *matrix()* / *matrix3d()* string values, as well\n * as other transform functions like *translateX(10px)*.\n *\n * @param source\n * @return the matrix instance\n */\n setMatrixValue(source?: CSSMatrixInput): CSSMatrix {\n // CSS transform string source - TransformList first\n if (typeof source === 'string' && source.length && source !== 'none') {\n return fromString(source);\n }\n\n // [Array | Float[32/64]Array] come next\n if (Array.isArray(source) || source instanceof Float64Array || source instanceof Float32Array) {\n return fromArray(source);\n }\n\n // new CSSMatrix(CSSMatrix | DOMMatrix | JSONMatrix) last\n if (typeof source === 'object') {\n return fromMatrix(source);\n }\n\n return this;\n }\n\n /**\n * Returns a *Float32Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\n toFloat32Array(is2D?: boolean): Float32Array {\n return Float32Array.from(toArray(this, is2D));\n }\n\n /**\n * Returns a *Float64Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\n toFloat64Array(is2D?: boolean): Float64Array {\n return Float64Array.from(toArray(this, is2D));\n }\n\n /**\n * Creates and returns a string representation of the matrix in `CSS` matrix syntax,\n * using the appropriate `CSS` matrix notation.\n *\n * matrix3d *matrix3d(m11, m12, m13, m14, m21, ...)*\n * matrix *matrix(a, b, c, d, e, f)*\n *\n * @return a string representation of the matrix\n */\n toString(): string {\n const { is2D } = this;\n const values = this.toFloat64Array(is2D).join(', ');\n const type = is2D ? 'matrix' : 'matrix3d';\n return `${type}(${values})`;\n }\n\n /**\n * Returns a JSON representation of the `CSSMatrix` instance, a standard *Object*\n * that includes `{a,b,c,d,e,f}` and `{m11,m12,m13,..m44}` properties as well\n * as the `is2D` & `isIdentity` properties.\n *\n * The result can also be used as a second parameter for the `fromMatrix` static method\n * to load values into another matrix instance.\n *\n * @return an *Object* with all matrix values.\n */\n toJSON(): JSONMatrix {\n const { is2D, isIdentity } = this;\n return { ...this, is2D, isIdentity };\n }\n\n /**\n * The Multiply method returns a new CSSMatrix which is the result of this\n * matrix multiplied by the passed matrix, with the passed matrix to the right.\n * This matrix is not modified.\n *\n * @param m2 CSSMatrix\n * @return The resulted matrix.\n */\n multiply(m2: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix {\n return Multiply(this, m2);\n }\n\n /**\n * The translate method returns a new matrix which is this matrix post\n * multiplied by a translation matrix containing the passed values. If the z\n * component is undefined, a 0 value is used in its place. This matrix is not\n * modified.\n *\n * @param x X component of the translation value.\n * @param y Y component of the translation value.\n * @param z Z component of the translation value.\n * @return The resulted matrix\n */\n translate(x: number, y?: number, z?: number): CSSMatrix {\n const X = x;\n let Y = y;\n let Z = z;\n if (typeof Y === 'undefined') Y = 0;\n if (typeof Z === 'undefined') Z = 0;\n return Multiply(this, Translate(X, Y, Z));\n }\n\n /**\n * The scale method returns a new matrix which is this matrix post multiplied by\n * a scale matrix containing the passed values. If the z component is undefined,\n * a 1 value is used in its place. If the y component is undefined, the x\n * component value is used in its place. This matrix is not modified.\n *\n * @param x The X component of the scale value.\n * @param y The Y component of the scale value.\n * @param z The Z component of the scale value.\n * @return The resulted matrix\n */\n scale(x: number, y?: number, z?: number): CSSMatrix {\n const X = x;\n let Y = y;\n let Z = z;\n if (typeof Y === 'undefined') Y = x;\n if (typeof Z === 'undefined') Z = 1; // Z must be 1 if undefined\n\n return Multiply(this, Scale(X, Y, Z));\n }\n\n /**\n * The rotate method returns a new matrix which is this matrix post multiplied\n * by each of 3 rotation matrices about the major axes, first X, then Y, then Z.\n * If the y and z components are undefined, the x value is used to rotate the\n * object about the z axis, as though the vector (0,0,x) were passed. All\n * rotation values are in degrees. This matrix is not modified.\n *\n * @param rx The X component of the rotation, or Z if Y and Z are null.\n * @param ry The (optional) Y component of the rotation value.\n * @param rz The (optional) Z component of the rotation value.\n * @return The resulted matrix\n */\n rotate(rx: number, ry?: number, rz?: number): CSSMatrix {\n let RX = rx;\n let RY = ry || 0;\n let RZ = rz || 0;\n\n if (typeof rx === 'number' && typeof ry === 'undefined' && typeof rz === 'undefined') {\n RZ = RX;\n RX = 0;\n RY = 0;\n }\n\n return Multiply(this, Rotate(RX, RY, RZ));\n }\n\n /**\n * The rotateAxisAngle method returns a new matrix which is this matrix post\n * multiplied by a rotation matrix with the given axis and `angle`. The right-hand\n * rule is used to determine the direction of rotation. All rotation values are\n * in degrees. This matrix is not modified.\n *\n * @param x The X component of the axis vector.\n * @param y The Y component of the axis vector.\n * @param z The Z component of the axis vector.\n * @param angle The angle of rotation about the axis vector, in degrees.\n * @return The resulted matrix\n */\n rotateAxisAngle(x: number, y: number, z: number, angle: number): CSSMatrix {\n if ([x, y, z, angle].some(n => Number.isNaN(+n))) {\n throw new TypeError('CSSMatrix: expecting 4 values');\n }\n return Multiply(this, RotateAxisAngle(x, y, z, angle));\n }\n\n /**\n * Specifies a skew transformation along the `x-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param angle The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skewX(angle: number): CSSMatrix {\n return Multiply(this, SkewX(angle));\n }\n\n /**\n * Specifies a skew transformation along the `y-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param angle The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skewY(angle: number): CSSMatrix {\n return Multiply(this, SkewY(angle));\n }\n\n /**\n * Specifies a skew transformation along both the `x-axis` and `y-axis`.\n * This matrix is not modified.\n *\n * @param angleX The X-angle amount in degrees to skew.\n * @param angleY The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skew(angleX: number, angleY: number): CSSMatrix {\n return Multiply(this, Skew(angleX, angleY));\n }\n\n /**\n * Transforms a specified vector using the matrix, returning a new\n * {x,y,z,w} Tuple *Object* comprising the transformed vector.\n * Neither the matrix nor the original vector are altered.\n *\n * The method is equivalent with `transformPoint()` method\n * of the `DOMMatrix` constructor.\n *\n * @param t Tuple with `{x,y,z,w}` components\n * @return the resulting Tuple\n */\n transformPoint(t: PointTuple | DOMPoint): PointTuple | DOMPoint {\n const x = this.m11 * t.x + this.m21 * t.y + this.m31 * t.z + this.m41 * t.w;\n const y = this.m12 * t.x + this.m22 * t.y + this.m32 * t.z + this.m42 * t.w;\n const z = this.m13 * t.x + this.m23 * t.y + this.m33 * t.z + this.m43 * t.w;\n const w = this.m14 * t.x + this.m24 * t.y + this.m34 * t.z + this.m44 * t.w;\n\n return t instanceof DOMPoint\n ? new DOMPoint(x, y, z, w)\n : {\n x,\n y,\n z,\n w,\n };\n }\n}\n"],"names":["JSON_MATRIX","isCompatibleArray","array","x","isCompatibleObject","object","CSSMatrix","k","fromArray","m","a","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","M11","M12","M21","M22","M41","M42","fromMatrix","fromString","source","str","invalidStringError","f","tf","prop","value","components","n","y","z","xyz","xyza","values","sy","p","fn","axis","idx","def","axeValues","toArray","is2D","Translate","Rotate","rx","ry","rz","degToRad","radX","radY","radZ","cosx","sinx","cosy","siny","cosz","sinz","RotateAxisAngle","alpha","length","X","Y","Z","angle","sinA","cosA","sinA2","x2","y2","z2","Scale","Skew","angleX","angleY","tX","tY","SkewX","SkewY","Multiply","m1","m2","init","isIdentity","RX","RY","RZ","w","__publicField"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  var Z = Object.defineProperty;
2
2
  var z = (s, t, e) => t in s ? Z(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;
3
- var p = (s, t, e) => (z(s, typeof t != "symbol" ? t + "" : t, e), e);
3
+ var p = (s, t, e) => z(s, typeof t != "symbol" ? t + "" : t, e);
4
4
  const $ = {
5
5
  a: 1,
6
6
  b: 0,
@@ -67,8 +67,7 @@ const $ = {
67
67
  const n = `CSSMatrix: invalid transform string "${s}"`;
68
68
  return t.split(")").filter((i) => i).forEach((i) => {
69
69
  const [r, a] = i.split("(");
70
- if (!a)
71
- throw TypeError(n);
70
+ if (!a) throw TypeError(n);
72
71
  const l = a.split(",").map((o) => o.includes("rad") ? parseFloat(o) * (180 / Math.PI) : parseFloat(o)), [m, h, c, u] = l, f = [m, h, c], w = [m, h, c, u];
73
72
  if (r === "perspective" && m && [h, c].every((o) => o === void 0))
74
73
  e.m34 = -1 / m;
@@ -1 +1 @@
1
- {"version":3,"file":"dommatrix.mjs","sources":["../src/index.ts"],"sourcesContent":["import type { Matrix, Matrix3d, JSONMatrix, CSSMatrixInput, PointTuple } from './types';\n\n/** A model for JSONMatrix */\nconst JSON_MATRIX: JSONMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0,\n m11: 1,\n m12: 0,\n m13: 0,\n m14: 0,\n m21: 0,\n m22: 1,\n m23: 0,\n m24: 0,\n m31: 0,\n m32: 0,\n m33: 1,\n m34: 0,\n m41: 0,\n m42: 0,\n m43: 0,\n m44: 1,\n is2D: true,\n isIdentity: true,\n};\n\n// CSSMatrix Static methods\n// * `fromArray` is a more simple implementation, should also accept Float[32/64]Array;\n// * `fromMatrix` load values from another CSSMatrix/DOMMatrix instance or JSON object;\n// * `fromString` parses and loads values from any valid CSS transform string (TransformList).\n// * `isCompatibleArray` Checks if an array is compatible with CSSMatrix.\n// * `isCompatibleObject` Checks if an object is compatible with CSSMatrix.\n\n/** Checks if an array is compatible with CSSMatrix */\nconst isCompatibleArray = (array?: unknown): array is Matrix | Matrix3d | Float32Array | Float64Array => {\n return (\n (array instanceof Float64Array ||\n array instanceof Float32Array ||\n (Array.isArray(array) && array.every(x => typeof x === 'number'))) &&\n [6, 16].some(x => array.length === x)\n );\n};\n\n/** Checks if an object is compatible with CSSMatrix */\nconst isCompatibleObject = (object?: unknown): object is CSSMatrix | DOMMatrix | JSONMatrix => {\n return (\n object instanceof DOMMatrix ||\n object instanceof CSSMatrix ||\n (typeof object === 'object' && Object.keys(JSON_MATRIX).every(k => object && k in object))\n );\n};\n\n/**\n * Creates a new mutable `CSSMatrix` instance given an array of 16/6 floating point values.\n * This static method invalidates arrays that contain non-number elements.\n *\n * If the array has six values, the result is a 2D matrix; if the array has 16 values,\n * the result is a 3D matrix. Otherwise, a TypeError exception is thrown.\n *\n * @param array an `Array` to feed values from.\n * @return the resulted matrix.\n */\nconst fromArray = (array: any[] | Float32Array | Float64Array): CSSMatrix => {\n const m = new CSSMatrix();\n const a = Array.from(array);\n\n if (!isCompatibleArray(a)) {\n throw TypeError(`CSSMatrix: \"${a.join(',')}\" must be an array with 6/16 numbers.`);\n }\n if (a.length === 16) {\n const [m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44] = a;\n\n m.m11 = m11;\n m.a = m11;\n\n m.m21 = m21;\n m.c = m21;\n\n m.m31 = m31;\n\n m.m41 = m41;\n m.e = m41;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m22 = m22;\n m.d = m22;\n\n m.m32 = m32;\n\n m.m42 = m42;\n m.f = m42;\n\n m.m13 = m13;\n m.m23 = m23;\n m.m33 = m33;\n m.m43 = m43;\n m.m14 = m14;\n m.m24 = m24;\n m.m34 = m34;\n m.m44 = m44;\n } else if (a.length === 6) {\n const [M11, M12, M21, M22, M41, M42] = a;\n\n m.m11 = M11;\n m.a = M11;\n\n m.m12 = M12;\n m.b = M12;\n\n m.m21 = M21;\n m.c = M21;\n\n m.m22 = M22;\n m.d = M22;\n\n m.m41 = M41;\n m.e = M41;\n\n m.m42 = M42;\n m.f = M42;\n }\n return m;\n};\n\n/**\n * Creates a new mutable `CSSMatrix` instance given an existing matrix or a\n * `DOMMatrix` instance which provides the values for its properties.\n *\n * @param m the source matrix to feed values from.\n * @return the resulted matrix.\n */\nconst fromMatrix = (m: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix => {\n if (isCompatibleObject(m)) {\n return fromArray([\n m.m11,\n m.m12,\n m.m13,\n m.m14,\n m.m21,\n m.m22,\n m.m23,\n m.m24,\n m.m31,\n m.m32,\n m.m33,\n m.m34,\n m.m41,\n m.m42,\n m.m43,\n m.m44,\n ]);\n }\n throw TypeError(`CSSMatrix: \"${JSON.stringify(m)}\" is not a DOMMatrix / CSSMatrix / JSON compatible object.`);\n};\n\n/**\n * Creates a new mutable `CSSMatrix` given any valid CSS transform string,\n * or what we call `TransformList`:\n *\n * * `matrix(a, b, c, d, e, f)` - valid matrix() transform function\n * * `matrix3d(m11, m12, m13, ...m44)` - valid matrix3d() transform function\n * * `translate(tx, ty) rotateX(alpha)` - any valid transform function(s)\n *\n * @copyright thednp © 2021\n *\n * @param source valid CSS transform string syntax.\n * @return the resulted matrix.\n */\nconst fromString = (source: string): CSSMatrix => {\n if (typeof source !== 'string') {\n throw TypeError(`CSSMatrix: \"${JSON.stringify(source)}\" is not a string.`);\n }\n const str = String(source).replace(/\\s/g, '');\n let m = new CSSMatrix();\n const invalidStringError = `CSSMatrix: invalid transform string \"${source}\"`;\n\n // const px = ['perspective'];\n // const length = ['translate', 'translate3d', 'translateX', 'translateY', 'translateZ'];\n // const deg = ['rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'skew', 'skewX', 'skewY'];\n // const abs = ['scale', 'scale3d', 'matrix', 'matrix3d'];\n // const transformFunctions = px.concat(length, deg, abs);\n\n str\n .split(')')\n .filter(f => f)\n .forEach(tf => {\n const [prop, value] = tf.split('(');\n\n // invalidate empty string\n if (!value) throw TypeError(invalidStringError);\n\n const components = value\n .split(',')\n .map(n => (n.includes('rad') ? parseFloat(n) * (180 / Math.PI) : parseFloat(n)));\n\n const [x, y, z, a] = components;\n const xyz = [x, y, z];\n const xyza = [x, y, z, a];\n\n // single number value expected\n if (prop === 'perspective' && x && [y, z].every(n => n === undefined)) {\n m.m34 = -1 / x;\n // 6/16 number values expected\n } else if (\n prop.includes('matrix') &&\n [6, 16].includes(components.length) &&\n components.every(n => !Number.isNaN(+n))\n ) {\n const values = components.map(n => (Math.abs(n) < 1e-6 ? 0 : n));\n m = m.multiply(fromArray(values as Matrix | Matrix3d));\n // 3 values expected\n } else if (prop === 'translate3d' && xyz.every(n => !Number.isNaN(+n))) {\n m = m.translate(x, y, z);\n // single/double number value(s) expected\n } else if (prop === 'translate' && x && z === undefined) {\n m = m.translate(x, y || 0, 0);\n // all 4 values expected\n } else if (prop === 'rotate3d' && xyza.every(n => !Number.isNaN(+n)) && a) {\n m = m.rotateAxisAngle(x, y, z, a);\n // single value expected\n } else if (prop === 'rotate' && x && [y, z].every(n => n === undefined)) {\n m = m.rotate(0, 0, x);\n // 3 values expected\n } else if (prop === 'scale3d' && xyz.every(n => !Number.isNaN(+n)) && xyz.some(n => n !== 1)) {\n m = m.scale(x, y, z);\n // single value expected\n } else if (prop === 'scale' && !Number.isNaN(x) && x !== 1 && z === undefined) {\n const nosy = Number.isNaN(+y);\n const sy = nosy ? x : y;\n m = m.scale(x, sy, 1);\n // single/double value expected\n } else if (prop === 'skew' && (x || (!Number.isNaN(x) && y)) && z === undefined) {\n m = m.skew(x, y || 0);\n } else if (\n ['translate', 'rotate', 'scale', 'skew'].some(p => prop.includes(p)) &&\n /[XYZ]/.test(prop) &&\n x &&\n [y, z].every(n => n === undefined) // a single value expected\n ) {\n if ('skewX' === prop || 'skewY' === prop) {\n m = m[prop](x);\n } else {\n const fn = prop.replace(/[XYZ]/, '') as 'scale' | 'translate' | 'rotate';\n const axis = prop.replace(fn, '');\n const idx = ['X', 'Y', 'Z'].indexOf(axis);\n const def = fn === 'scale' ? 1 : 0;\n const axeValues: [number, number, number] = [idx === 0 ? x : def, idx === 1 ? x : def, idx === 2 ? x : def];\n m = m[fn](...axeValues);\n }\n } else {\n throw TypeError(invalidStringError);\n }\n });\n\n return m;\n};\n\n/**\n * Returns an *Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param m the source matrix to feed values from.\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\nconst toArray = (m: CSSMatrix | DOMMatrix | JSONMatrix, is2D?: boolean): Matrix | Matrix3d => {\n if (is2D) {\n return [m.a, m.b, m.c, m.d, m.e, m.f];\n }\n return [\n m.m11,\n m.m12,\n m.m13,\n m.m14,\n m.m21,\n m.m22,\n m.m23,\n m.m24,\n m.m31,\n m.m32,\n m.m33,\n m.m34,\n m.m41,\n m.m42,\n m.m43,\n m.m44,\n ];\n};\n\n// Transform Functions\n// https://www.w3.org/TR/css-transforms-1/#transform-functions\n\n/**\n * Creates a new `CSSMatrix` for the translation matrix and returns it.\n * This method is equivalent to the CSS `translate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translate3d\n *\n * @param x the `x-axis` position.\n * @param y the `y-axis` position.\n * @param z the `z-axis` position.\n * @return the resulted matrix.\n */\nconst Translate = (x: number, y: number, z: number): CSSMatrix => {\n const m = new CSSMatrix();\n m.m41 = x;\n m.e = x;\n m.m42 = y;\n m.f = y;\n m.m43 = z;\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n *\n * http://en.wikipedia.org/wiki/Rotation_matrix\n *\n * @param rx the `x-axis` rotation.\n * @param ry the `y-axis` rotation.\n * @param rz the `z-axis` rotation.\n * @return the resulted matrix.\n */\nconst Rotate = (rx: number, ry: number, rz: number): CSSMatrix => {\n const m = new CSSMatrix();\n const degToRad = Math.PI / 180;\n const radX = rx * degToRad;\n const radY = ry * degToRad;\n const radZ = rz * degToRad;\n\n // minus sin() because of right-handed system\n const cosx = Math.cos(radX);\n const sinx = -Math.sin(radX);\n const cosy = Math.cos(radY);\n const siny = -Math.sin(radY);\n const cosz = Math.cos(radZ);\n const sinz = -Math.sin(radZ);\n\n const m11 = cosy * cosz;\n const m12 = -cosy * sinz;\n\n m.m11 = m11;\n m.a = m11;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = siny;\n\n const m21 = sinx * siny * cosz + cosx * sinz;\n m.m21 = m21;\n m.c = m21;\n\n const m22 = cosx * cosz - sinx * siny * sinz;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = -sinx * cosy;\n\n m.m31 = sinx * sinz - cosx * siny * cosz;\n m.m32 = sinx * cosz + cosx * siny * sinz;\n m.m33 = cosx * cosy;\n\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n * This method is equivalent to the CSS `rotate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate3d\n *\n * @param x the `x-axis` vector length.\n * @param y the `y-axis` vector length.\n * @param z the `z-axis` vector length.\n * @param alpha the value in degrees of the rotation.\n * @return the resulted matrix.\n */\nconst RotateAxisAngle = (x: number, y: number, z: number, alpha: number): CSSMatrix => {\n const m = new CSSMatrix();\n const length = Math.sqrt(x * x + y * y + z * z);\n\n if (length === 0) {\n // bad vector length, return identity\n return m;\n }\n\n const X = x / length;\n const Y = y / length;\n const Z = z / length;\n\n const angle = alpha * (Math.PI / 360);\n const sinA = Math.sin(angle);\n const cosA = Math.cos(angle);\n const sinA2 = sinA * sinA;\n const x2 = X * X;\n const y2 = Y * Y;\n const z2 = Z * Z;\n\n const m11 = 1 - 2 * (y2 + z2) * sinA2;\n m.m11 = m11;\n m.a = m11;\n\n const m12 = 2 * (X * Y * sinA2 + Z * sinA * cosA);\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = 2 * (X * Z * sinA2 - Y * sinA * cosA);\n\n const m21 = 2 * (Y * X * sinA2 - Z * sinA * cosA);\n m.m21 = m21;\n m.c = m21;\n\n const m22 = 1 - 2 * (z2 + x2) * sinA2;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = 2 * (Y * Z * sinA2 + X * sinA * cosA);\n m.m31 = 2 * (Z * X * sinA2 + Y * sinA * cosA);\n m.m32 = 2 * (Z * Y * sinA2 - X * sinA * cosA);\n m.m33 = 1 - 2 * (x2 + y2) * sinA2;\n\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the scale matrix and returns it.\n * This method is equivalent to the CSS `scale3d()` function, except it doesn't\n * accept {x, y, z} transform origin parameters.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale3d\n *\n * @param x the `x-axis` scale.\n * @param y the `y-axis` scale.\n * @param z the `z-axis` scale.\n * @return the resulted matrix.\n */\nconst Scale = (x: number, y: number, z: number): CSSMatrix => {\n const m = new CSSMatrix();\n m.m11 = x;\n m.a = x;\n\n m.m22 = y;\n m.d = y;\n\n m.m33 = z;\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of both the `x-axis` and`y-axis`\n * matrix and returns it. This method is equivalent to the CSS `skew()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew\n *\n * @param angleX the X-angle in degrees.\n * @param angleY the Y-angle in degrees.\n * @return the resulted matrix.\n */\nconst Skew = (angleX: number, angleY: number): CSSMatrix => {\n const m = new CSSMatrix();\n if (angleX) {\n const radX = (angleX * Math.PI) / 180;\n const tX = Math.tan(radX);\n m.m21 = tX;\n m.c = tX;\n }\n if (angleY) {\n const radY = (angleY * Math.PI) / 180;\n const tY = Math.tan(radY);\n m.m12 = tY;\n m.b = tY;\n }\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of the `x-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewX()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewX\n *\n * @param angle the angle in degrees.\n * @return the resulted matrix.\n */\nconst SkewX = (angle: number): CSSMatrix => {\n return Skew(angle, 0);\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of the `y-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewY()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewY\n *\n * @param angle the angle in degrees.\n * @return the resulted matrix.\n */\nconst SkewY = (angle: number): CSSMatrix => {\n return Skew(0, angle);\n};\n\n/**\n * Creates a new `CSSMatrix` resulted from the multiplication of two matrixes\n * and returns it. Both matrixes are not changed.\n *\n * @param m1 the first matrix.\n * @param m2 the second matrix.\n * @return the resulted matrix.\n */\nconst Multiply = (m1: CSSMatrix | DOMMatrix | JSONMatrix, m2: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix => {\n const m11 = m2.m11 * m1.m11 + m2.m12 * m1.m21 + m2.m13 * m1.m31 + m2.m14 * m1.m41;\n const m12 = m2.m11 * m1.m12 + m2.m12 * m1.m22 + m2.m13 * m1.m32 + m2.m14 * m1.m42;\n const m13 = m2.m11 * m1.m13 + m2.m12 * m1.m23 + m2.m13 * m1.m33 + m2.m14 * m1.m43;\n const m14 = m2.m11 * m1.m14 + m2.m12 * m1.m24 + m2.m13 * m1.m34 + m2.m14 * m1.m44;\n\n const m21 = m2.m21 * m1.m11 + m2.m22 * m1.m21 + m2.m23 * m1.m31 + m2.m24 * m1.m41;\n const m22 = m2.m21 * m1.m12 + m2.m22 * m1.m22 + m2.m23 * m1.m32 + m2.m24 * m1.m42;\n const m23 = m2.m21 * m1.m13 + m2.m22 * m1.m23 + m2.m23 * m1.m33 + m2.m24 * m1.m43;\n const m24 = m2.m21 * m1.m14 + m2.m22 * m1.m24 + m2.m23 * m1.m34 + m2.m24 * m1.m44;\n\n const m31 = m2.m31 * m1.m11 + m2.m32 * m1.m21 + m2.m33 * m1.m31 + m2.m34 * m1.m41;\n const m32 = m2.m31 * m1.m12 + m2.m32 * m1.m22 + m2.m33 * m1.m32 + m2.m34 * m1.m42;\n const m33 = m2.m31 * m1.m13 + m2.m32 * m1.m23 + m2.m33 * m1.m33 + m2.m34 * m1.m43;\n const m34 = m2.m31 * m1.m14 + m2.m32 * m1.m24 + m2.m33 * m1.m34 + m2.m34 * m1.m44;\n\n const m41 = m2.m41 * m1.m11 + m2.m42 * m1.m21 + m2.m43 * m1.m31 + m2.m44 * m1.m41;\n const m42 = m2.m41 * m1.m12 + m2.m42 * m1.m22 + m2.m43 * m1.m32 + m2.m44 * m1.m42;\n const m43 = m2.m41 * m1.m13 + m2.m42 * m1.m23 + m2.m43 * m1.m33 + m2.m44 * m1.m43;\n const m44 = m2.m41 * m1.m14 + m2.m42 * m1.m24 + m2.m43 * m1.m34 + m2.m44 * m1.m44;\n\n return fromArray([m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44]);\n};\n\n/**\n * Creates and returns a new `DOMMatrix` compatible instance\n * with equivalent instance.\n *\n * @class CSSMatrix\n *\n * @author thednp <https://github.com/thednp/DOMMatrix/>\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix\n */\nexport default class CSSMatrix {\n declare m11: number;\n declare m12: number;\n declare m13: number;\n declare m14: number;\n declare m21: number;\n declare m22: number;\n declare m23: number;\n declare m24: number;\n declare m31: number;\n declare m32: number;\n declare m33: number;\n declare m34: number;\n declare m41: number;\n declare m42: number;\n declare m43: number;\n declare m44: number;\n declare a: number;\n declare b: number;\n declare c: number;\n declare d: number;\n declare e: number;\n declare f: number;\n static Translate = Translate;\n static Rotate = Rotate;\n static RotateAxisAngle = RotateAxisAngle;\n static Scale = Scale;\n static SkewX = SkewX;\n static SkewY = SkewY;\n static Skew = Skew;\n static Multiply = Multiply;\n static fromArray = fromArray;\n static fromMatrix = fromMatrix;\n static fromString = fromString;\n static toArray = toArray;\n static isCompatibleArray = isCompatibleArray;\n static isCompatibleObject = isCompatibleObject;\n\n /**\n * @constructor\n * @param init accepts all parameter configurations:\n * * valid CSS transform string,\n * * CSSMatrix/DOMMatrix instance,\n * * a 6/16 elements *Array*.\n */\n constructor(init?: CSSMatrixInput) {\n // array 6\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.e = 0;\n this.f = 0;\n // array 16\n this.m11 = 1;\n this.m12 = 0;\n this.m13 = 0;\n this.m14 = 0;\n this.m21 = 0;\n this.m22 = 1;\n this.m23 = 0;\n this.m24 = 0;\n this.m31 = 0;\n this.m32 = 0;\n this.m33 = 1;\n this.m34 = 0;\n this.m41 = 0;\n this.m42 = 0;\n this.m43 = 0;\n this.m44 = 1;\n\n if (init) {\n return this.setMatrixValue(init);\n }\n return this;\n }\n\n /**\n * A `Boolean` whose value is `true` if the matrix is the identity matrix. The identity\n * matrix is one in which every value is 0 except those on the main diagonal from top-left\n * to bottom-right corner (in other words, where the offsets in each direction are equal).\n *\n * @return the current property value\n */\n get isIdentity(): boolean {\n return (\n this.m11 === 1 &&\n this.m12 === 0 &&\n this.m13 === 0 &&\n this.m14 === 0 &&\n this.m21 === 0 &&\n this.m22 === 1 &&\n this.m23 === 0 &&\n this.m24 === 0 &&\n this.m31 === 0 &&\n this.m32 === 0 &&\n this.m33 === 1 &&\n this.m34 === 0 &&\n this.m41 === 0 &&\n this.m42 === 0 &&\n this.m43 === 0 &&\n this.m44 === 1\n );\n }\n\n /**\n * A `Boolean` flag whose value is `true` if the matrix was initialized as a 2D matrix\n * and `false` if the matrix is 3D.\n *\n * @return the current property value\n */\n get is2D(): boolean {\n return this.m31 === 0 && this.m32 === 0 && this.m33 === 1 && this.m34 === 0 && this.m43 === 0 && this.m44 === 1;\n }\n\n /**\n * The `setMatrixValue` method replaces the existing matrix with one computed\n * in the browser. EG: `matrix(1,0.25,-0.25,1,0,0)`\n *\n * The method accepts any *Array* values, the result of\n * `DOMMatrix` instance method `toFloat64Array()` / `toFloat32Array()` calls\n * or `CSSMatrix` instance method `toArray()`.\n *\n * This method expects valid *matrix()* / *matrix3d()* string values, as well\n * as other transform functions like *translateX(10px)*.\n *\n * @param source\n * @return the matrix instance\n */\n setMatrixValue(source?: CSSMatrixInput): CSSMatrix {\n // CSS transform string source - TransformList first\n if (typeof source === 'string' && source.length && source !== 'none') {\n return fromString(source);\n }\n\n // [Array | Float[32/64]Array] come next\n if (Array.isArray(source) || source instanceof Float64Array || source instanceof Float32Array) {\n return fromArray(source);\n }\n\n // new CSSMatrix(CSSMatrix | DOMMatrix | JSONMatrix) last\n if (typeof source === 'object') {\n return fromMatrix(source);\n }\n\n return this;\n }\n\n /**\n * Returns a *Float32Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\n toFloat32Array(is2D?: boolean): Float32Array {\n return Float32Array.from(toArray(this, is2D));\n }\n\n /**\n * Returns a *Float64Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\n toFloat64Array(is2D?: boolean): Float64Array {\n return Float64Array.from(toArray(this, is2D));\n }\n\n /**\n * Creates and returns a string representation of the matrix in `CSS` matrix syntax,\n * using the appropriate `CSS` matrix notation.\n *\n * matrix3d *matrix3d(m11, m12, m13, m14, m21, ...)*\n * matrix *matrix(a, b, c, d, e, f)*\n *\n * @return a string representation of the matrix\n */\n toString(): string {\n const { is2D } = this;\n const values = this.toFloat64Array(is2D).join(', ');\n const type = is2D ? 'matrix' : 'matrix3d';\n return `${type}(${values})`;\n }\n\n /**\n * Returns a JSON representation of the `CSSMatrix` instance, a standard *Object*\n * that includes `{a,b,c,d,e,f}` and `{m11,m12,m13,..m44}` properties as well\n * as the `is2D` & `isIdentity` properties.\n *\n * The result can also be used as a second parameter for the `fromMatrix` static method\n * to load values into another matrix instance.\n *\n * @return an *Object* with all matrix values.\n */\n toJSON(): JSONMatrix {\n const { is2D, isIdentity } = this;\n return { ...this, is2D, isIdentity };\n }\n\n /**\n * The Multiply method returns a new CSSMatrix which is the result of this\n * matrix multiplied by the passed matrix, with the passed matrix to the right.\n * This matrix is not modified.\n *\n * @param m2 CSSMatrix\n * @return The resulted matrix.\n */\n multiply(m2: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix {\n return Multiply(this, m2);\n }\n\n /**\n * The translate method returns a new matrix which is this matrix post\n * multiplied by a translation matrix containing the passed values. If the z\n * component is undefined, a 0 value is used in its place. This matrix is not\n * modified.\n *\n * @param x X component of the translation value.\n * @param y Y component of the translation value.\n * @param z Z component of the translation value.\n * @return The resulted matrix\n */\n translate(x: number, y?: number, z?: number): CSSMatrix {\n const X = x;\n let Y = y;\n let Z = z;\n if (typeof Y === 'undefined') Y = 0;\n if (typeof Z === 'undefined') Z = 0;\n return Multiply(this, Translate(X, Y, Z));\n }\n\n /**\n * The scale method returns a new matrix which is this matrix post multiplied by\n * a scale matrix containing the passed values. If the z component is undefined,\n * a 1 value is used in its place. If the y component is undefined, the x\n * component value is used in its place. This matrix is not modified.\n *\n * @param x The X component of the scale value.\n * @param y The Y component of the scale value.\n * @param z The Z component of the scale value.\n * @return The resulted matrix\n */\n scale(x: number, y?: number, z?: number): CSSMatrix {\n const X = x;\n let Y = y;\n let Z = z;\n if (typeof Y === 'undefined') Y = x;\n if (typeof Z === 'undefined') Z = 1; // Z must be 1 if undefined\n\n return Multiply(this, Scale(X, Y, Z));\n }\n\n /**\n * The rotate method returns a new matrix which is this matrix post multiplied\n * by each of 3 rotation matrices about the major axes, first X, then Y, then Z.\n * If the y and z components are undefined, the x value is used to rotate the\n * object about the z axis, as though the vector (0,0,x) were passed. All\n * rotation values are in degrees. This matrix is not modified.\n *\n * @param rx The X component of the rotation, or Z if Y and Z are null.\n * @param ry The (optional) Y component of the rotation value.\n * @param rz The (optional) Z component of the rotation value.\n * @return The resulted matrix\n */\n rotate(rx: number, ry?: number, rz?: number): CSSMatrix {\n let RX = rx;\n let RY = ry || 0;\n let RZ = rz || 0;\n\n if (typeof rx === 'number' && typeof ry === 'undefined' && typeof rz === 'undefined') {\n RZ = RX;\n RX = 0;\n RY = 0;\n }\n\n return Multiply(this, Rotate(RX, RY, RZ));\n }\n\n /**\n * The rotateAxisAngle method returns a new matrix which is this matrix post\n * multiplied by a rotation matrix with the given axis and `angle`. The right-hand\n * rule is used to determine the direction of rotation. All rotation values are\n * in degrees. This matrix is not modified.\n *\n * @param x The X component of the axis vector.\n * @param y The Y component of the axis vector.\n * @param z The Z component of the axis vector.\n * @param angle The angle of rotation about the axis vector, in degrees.\n * @return The resulted matrix\n */\n rotateAxisAngle(x: number, y: number, z: number, angle: number): CSSMatrix {\n if ([x, y, z, angle].some(n => Number.isNaN(+n))) {\n throw new TypeError('CSSMatrix: expecting 4 values');\n }\n return Multiply(this, RotateAxisAngle(x, y, z, angle));\n }\n\n /**\n * Specifies a skew transformation along the `x-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param angle The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skewX(angle: number): CSSMatrix {\n return Multiply(this, SkewX(angle));\n }\n\n /**\n * Specifies a skew transformation along the `y-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param angle The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skewY(angle: number): CSSMatrix {\n return Multiply(this, SkewY(angle));\n }\n\n /**\n * Specifies a skew transformation along both the `x-axis` and `y-axis`.\n * This matrix is not modified.\n *\n * @param angleX The X-angle amount in degrees to skew.\n * @param angleY The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skew(angleX: number, angleY: number): CSSMatrix {\n return Multiply(this, Skew(angleX, angleY));\n }\n\n /**\n * Transforms a specified vector using the matrix, returning a new\n * {x,y,z,w} Tuple *Object* comprising the transformed vector.\n * Neither the matrix nor the original vector are altered.\n *\n * The method is equivalent with `transformPoint()` method\n * of the `DOMMatrix` constructor.\n *\n * @param t Tuple with `{x,y,z,w}` components\n * @return the resulting Tuple\n */\n transformPoint(t: PointTuple | DOMPoint): PointTuple | DOMPoint {\n const x = this.m11 * t.x + this.m21 * t.y + this.m31 * t.z + this.m41 * t.w;\n const y = this.m12 * t.x + this.m22 * t.y + this.m32 * t.z + this.m42 * t.w;\n const z = this.m13 * t.x + this.m23 * t.y + this.m33 * t.z + this.m43 * t.w;\n const w = this.m14 * t.x + this.m24 * t.y + this.m34 * t.z + this.m44 * t.w;\n\n return t instanceof DOMPoint\n ? new DOMPoint(x, y, z, w)\n : {\n x,\n y,\n z,\n w,\n };\n }\n}\n"],"names":["JSON_MATRIX","isCompatibleArray","array","x","isCompatibleObject","object","CSSMatrix","k","fromArray","m","a","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","M11","M12","M21","M22","M41","M42","fromMatrix","fromString","source","str","invalidStringError","f","tf","prop","value","components","n","y","z","xyz","xyza","values","sy","p","fn","axis","idx","def","axeValues","toArray","is2D","Translate","Rotate","rx","ry","rz","degToRad","radX","radY","radZ","cosx","sinx","cosy","siny","cosz","sinz","RotateAxisAngle","alpha","length","X","Y","Z","angle","sinA","cosA","sinA2","x2","y2","z2","Scale","Skew","angleX","angleY","tX","tY","SkewX","SkewY","Multiply","m1","m2","init","isIdentity","RX","RY","RZ","w","__publicField"],"mappings":"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"}
1
+ {"version":3,"file":"dommatrix.mjs","sources":["../src/index.ts"],"sourcesContent":["import type { Matrix, Matrix3d, JSONMatrix, CSSMatrixInput, PointTuple } from './types';\n\n/** A model for JSONMatrix */\nconst JSON_MATRIX: JSONMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0,\n m11: 1,\n m12: 0,\n m13: 0,\n m14: 0,\n m21: 0,\n m22: 1,\n m23: 0,\n m24: 0,\n m31: 0,\n m32: 0,\n m33: 1,\n m34: 0,\n m41: 0,\n m42: 0,\n m43: 0,\n m44: 1,\n is2D: true,\n isIdentity: true,\n};\n\n// CSSMatrix Static methods\n// * `fromArray` is a more simple implementation, should also accept Float[32/64]Array;\n// * `fromMatrix` load values from another CSSMatrix/DOMMatrix instance or JSON object;\n// * `fromString` parses and loads values from any valid CSS transform string (TransformList).\n// * `isCompatibleArray` Checks if an array is compatible with CSSMatrix.\n// * `isCompatibleObject` Checks if an object is compatible with CSSMatrix.\n\n/** Checks if an array is compatible with CSSMatrix */\nconst isCompatibleArray = (array?: unknown): array is Matrix | Matrix3d | Float32Array | Float64Array => {\n return (\n (array instanceof Float64Array ||\n array instanceof Float32Array ||\n (Array.isArray(array) && array.every(x => typeof x === 'number'))) &&\n [6, 16].some(x => array.length === x)\n );\n};\n\n/** Checks if an object is compatible with CSSMatrix */\nconst isCompatibleObject = (object?: unknown): object is CSSMatrix | DOMMatrix | JSONMatrix => {\n return (\n object instanceof DOMMatrix ||\n object instanceof CSSMatrix ||\n (typeof object === 'object' && Object.keys(JSON_MATRIX).every(k => object && k in object))\n );\n};\n\n/**\n * Creates a new mutable `CSSMatrix` instance given an array of 16/6 floating point values.\n * This static method invalidates arrays that contain non-number elements.\n *\n * If the array has six values, the result is a 2D matrix; if the array has 16 values,\n * the result is a 3D matrix. Otherwise, a TypeError exception is thrown.\n *\n * @param array an `Array` to feed values from.\n * @return the resulted matrix.\n */\nconst fromArray = (array: any[] | Float32Array | Float64Array): CSSMatrix => {\n const m = new CSSMatrix();\n const a = Array.from(array);\n\n if (!isCompatibleArray(a)) {\n throw TypeError(`CSSMatrix: \"${a.join(',')}\" must be an array with 6/16 numbers.`);\n }\n if (a.length === 16) {\n const [m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44] = a;\n\n m.m11 = m11;\n m.a = m11;\n\n m.m21 = m21;\n m.c = m21;\n\n m.m31 = m31;\n\n m.m41 = m41;\n m.e = m41;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m22 = m22;\n m.d = m22;\n\n m.m32 = m32;\n\n m.m42 = m42;\n m.f = m42;\n\n m.m13 = m13;\n m.m23 = m23;\n m.m33 = m33;\n m.m43 = m43;\n m.m14 = m14;\n m.m24 = m24;\n m.m34 = m34;\n m.m44 = m44;\n } else if (a.length === 6) {\n const [M11, M12, M21, M22, M41, M42] = a;\n\n m.m11 = M11;\n m.a = M11;\n\n m.m12 = M12;\n m.b = M12;\n\n m.m21 = M21;\n m.c = M21;\n\n m.m22 = M22;\n m.d = M22;\n\n m.m41 = M41;\n m.e = M41;\n\n m.m42 = M42;\n m.f = M42;\n }\n return m;\n};\n\n/**\n * Creates a new mutable `CSSMatrix` instance given an existing matrix or a\n * `DOMMatrix` instance which provides the values for its properties.\n *\n * @param m the source matrix to feed values from.\n * @return the resulted matrix.\n */\nconst fromMatrix = (m: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix => {\n if (isCompatibleObject(m)) {\n return fromArray([\n m.m11,\n m.m12,\n m.m13,\n m.m14,\n m.m21,\n m.m22,\n m.m23,\n m.m24,\n m.m31,\n m.m32,\n m.m33,\n m.m34,\n m.m41,\n m.m42,\n m.m43,\n m.m44,\n ]);\n }\n throw TypeError(`CSSMatrix: \"${JSON.stringify(m)}\" is not a DOMMatrix / CSSMatrix / JSON compatible object.`);\n};\n\n/**\n * Creates a new mutable `CSSMatrix` given any valid CSS transform string,\n * or what we call `TransformList`:\n *\n * * `matrix(a, b, c, d, e, f)` - valid matrix() transform function\n * * `matrix3d(m11, m12, m13, ...m44)` - valid matrix3d() transform function\n * * `translate(tx, ty) rotateX(alpha)` - any valid transform function(s)\n *\n * @copyright thednp © 2021\n *\n * @param source valid CSS transform string syntax.\n * @return the resulted matrix.\n */\nconst fromString = (source: string): CSSMatrix => {\n if (typeof source !== 'string') {\n throw TypeError(`CSSMatrix: \"${JSON.stringify(source)}\" is not a string.`);\n }\n const str = String(source).replace(/\\s/g, '');\n let m = new CSSMatrix();\n const invalidStringError = `CSSMatrix: invalid transform string \"${source}\"`;\n\n // const px = ['perspective'];\n // const length = ['translate', 'translate3d', 'translateX', 'translateY', 'translateZ'];\n // const deg = ['rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'skew', 'skewX', 'skewY'];\n // const abs = ['scale', 'scale3d', 'matrix', 'matrix3d'];\n // const transformFunctions = px.concat(length, deg, abs);\n\n str\n .split(')')\n .filter(f => f)\n .forEach(tf => {\n const [prop, value] = tf.split('(');\n\n // invalidate empty string\n if (!value) throw TypeError(invalidStringError);\n\n const components = value\n .split(',')\n .map(n => (n.includes('rad') ? parseFloat(n) * (180 / Math.PI) : parseFloat(n)));\n\n const [x, y, z, a] = components;\n const xyz = [x, y, z];\n const xyza = [x, y, z, a];\n\n // single number value expected\n if (prop === 'perspective' && x && [y, z].every(n => n === undefined)) {\n m.m34 = -1 / x;\n // 6/16 number values expected\n } else if (\n prop.includes('matrix') &&\n [6, 16].includes(components.length) &&\n components.every(n => !Number.isNaN(+n))\n ) {\n const values = components.map(n => (Math.abs(n) < 1e-6 ? 0 : n));\n m = m.multiply(fromArray(values as Matrix | Matrix3d));\n // 3 values expected\n } else if (prop === 'translate3d' && xyz.every(n => !Number.isNaN(+n))) {\n m = m.translate(x, y, z);\n // single/double number value(s) expected\n } else if (prop === 'translate' && x && z === undefined) {\n m = m.translate(x, y || 0, 0);\n // all 4 values expected\n } else if (prop === 'rotate3d' && xyza.every(n => !Number.isNaN(+n)) && a) {\n m = m.rotateAxisAngle(x, y, z, a);\n // single value expected\n } else if (prop === 'rotate' && x && [y, z].every(n => n === undefined)) {\n m = m.rotate(0, 0, x);\n // 3 values expected\n } else if (prop === 'scale3d' && xyz.every(n => !Number.isNaN(+n)) && xyz.some(n => n !== 1)) {\n m = m.scale(x, y, z);\n // single value expected\n } else if (prop === 'scale' && !Number.isNaN(x) && x !== 1 && z === undefined) {\n const nosy = Number.isNaN(+y);\n const sy = nosy ? x : y;\n m = m.scale(x, sy, 1);\n // single/double value expected\n } else if (prop === 'skew' && (x || (!Number.isNaN(x) && y)) && z === undefined) {\n m = m.skew(x, y || 0);\n } else if (\n ['translate', 'rotate', 'scale', 'skew'].some(p => prop.includes(p)) &&\n /[XYZ]/.test(prop) &&\n x &&\n [y, z].every(n => n === undefined) // a single value expected\n ) {\n if ('skewX' === prop || 'skewY' === prop) {\n m = m[prop](x);\n } else {\n const fn = prop.replace(/[XYZ]/, '') as 'scale' | 'translate' | 'rotate';\n const axis = prop.replace(fn, '');\n const idx = ['X', 'Y', 'Z'].indexOf(axis);\n const def = fn === 'scale' ? 1 : 0;\n const axeValues: [number, number, number] = [idx === 0 ? x : def, idx === 1 ? x : def, idx === 2 ? x : def];\n m = m[fn](...axeValues);\n }\n } else {\n throw TypeError(invalidStringError);\n }\n });\n\n return m;\n};\n\n/**\n * Returns an *Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param m the source matrix to feed values from.\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\nconst toArray = (m: CSSMatrix | DOMMatrix | JSONMatrix, is2D?: boolean): Matrix | Matrix3d => {\n if (is2D) {\n return [m.a, m.b, m.c, m.d, m.e, m.f];\n }\n return [\n m.m11,\n m.m12,\n m.m13,\n m.m14,\n m.m21,\n m.m22,\n m.m23,\n m.m24,\n m.m31,\n m.m32,\n m.m33,\n m.m34,\n m.m41,\n m.m42,\n m.m43,\n m.m44,\n ];\n};\n\n// Transform Functions\n// https://www.w3.org/TR/css-transforms-1/#transform-functions\n\n/**\n * Creates a new `CSSMatrix` for the translation matrix and returns it.\n * This method is equivalent to the CSS `translate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translate3d\n *\n * @param x the `x-axis` position.\n * @param y the `y-axis` position.\n * @param z the `z-axis` position.\n * @return the resulted matrix.\n */\nconst Translate = (x: number, y: number, z: number): CSSMatrix => {\n const m = new CSSMatrix();\n m.m41 = x;\n m.e = x;\n m.m42 = y;\n m.f = y;\n m.m43 = z;\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n *\n * http://en.wikipedia.org/wiki/Rotation_matrix\n *\n * @param rx the `x-axis` rotation.\n * @param ry the `y-axis` rotation.\n * @param rz the `z-axis` rotation.\n * @return the resulted matrix.\n */\nconst Rotate = (rx: number, ry: number, rz: number): CSSMatrix => {\n const m = new CSSMatrix();\n const degToRad = Math.PI / 180;\n const radX = rx * degToRad;\n const radY = ry * degToRad;\n const radZ = rz * degToRad;\n\n // minus sin() because of right-handed system\n const cosx = Math.cos(radX);\n const sinx = -Math.sin(radX);\n const cosy = Math.cos(radY);\n const siny = -Math.sin(radY);\n const cosz = Math.cos(radZ);\n const sinz = -Math.sin(radZ);\n\n const m11 = cosy * cosz;\n const m12 = -cosy * sinz;\n\n m.m11 = m11;\n m.a = m11;\n\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = siny;\n\n const m21 = sinx * siny * cosz + cosx * sinz;\n m.m21 = m21;\n m.c = m21;\n\n const m22 = cosx * cosz - sinx * siny * sinz;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = -sinx * cosy;\n\n m.m31 = sinx * sinz - cosx * siny * cosz;\n m.m32 = sinx * cosz + cosx * siny * sinz;\n m.m33 = cosx * cosy;\n\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the rotation matrix and returns it.\n * This method is equivalent to the CSS `rotate3d()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate3d\n *\n * @param x the `x-axis` vector length.\n * @param y the `y-axis` vector length.\n * @param z the `z-axis` vector length.\n * @param alpha the value in degrees of the rotation.\n * @return the resulted matrix.\n */\nconst RotateAxisAngle = (x: number, y: number, z: number, alpha: number): CSSMatrix => {\n const m = new CSSMatrix();\n const length = Math.sqrt(x * x + y * y + z * z);\n\n if (length === 0) {\n // bad vector length, return identity\n return m;\n }\n\n const X = x / length;\n const Y = y / length;\n const Z = z / length;\n\n const angle = alpha * (Math.PI / 360);\n const sinA = Math.sin(angle);\n const cosA = Math.cos(angle);\n const sinA2 = sinA * sinA;\n const x2 = X * X;\n const y2 = Y * Y;\n const z2 = Z * Z;\n\n const m11 = 1 - 2 * (y2 + z2) * sinA2;\n m.m11 = m11;\n m.a = m11;\n\n const m12 = 2 * (X * Y * sinA2 + Z * sinA * cosA);\n m.m12 = m12;\n m.b = m12;\n\n m.m13 = 2 * (X * Z * sinA2 - Y * sinA * cosA);\n\n const m21 = 2 * (Y * X * sinA2 - Z * sinA * cosA);\n m.m21 = m21;\n m.c = m21;\n\n const m22 = 1 - 2 * (z2 + x2) * sinA2;\n m.m22 = m22;\n m.d = m22;\n\n m.m23 = 2 * (Y * Z * sinA2 + X * sinA * cosA);\n m.m31 = 2 * (Z * X * sinA2 + Y * sinA * cosA);\n m.m32 = 2 * (Z * Y * sinA2 - X * sinA * cosA);\n m.m33 = 1 - 2 * (x2 + y2) * sinA2;\n\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the scale matrix and returns it.\n * This method is equivalent to the CSS `scale3d()` function, except it doesn't\n * accept {x, y, z} transform origin parameters.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale3d\n *\n * @param x the `x-axis` scale.\n * @param y the `y-axis` scale.\n * @param z the `z-axis` scale.\n * @return the resulted matrix.\n */\nconst Scale = (x: number, y: number, z: number): CSSMatrix => {\n const m = new CSSMatrix();\n m.m11 = x;\n m.a = x;\n\n m.m22 = y;\n m.d = y;\n\n m.m33 = z;\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of both the `x-axis` and`y-axis`\n * matrix and returns it. This method is equivalent to the CSS `skew()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew\n *\n * @param angleX the X-angle in degrees.\n * @param angleY the Y-angle in degrees.\n * @return the resulted matrix.\n */\nconst Skew = (angleX: number, angleY: number): CSSMatrix => {\n const m = new CSSMatrix();\n if (angleX) {\n const radX = (angleX * Math.PI) / 180;\n const tX = Math.tan(radX);\n m.m21 = tX;\n m.c = tX;\n }\n if (angleY) {\n const radY = (angleY * Math.PI) / 180;\n const tY = Math.tan(radY);\n m.m12 = tY;\n m.b = tY;\n }\n return m;\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of the `x-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewX()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewX\n *\n * @param angle the angle in degrees.\n * @return the resulted matrix.\n */\nconst SkewX = (angle: number): CSSMatrix => {\n return Skew(angle, 0);\n};\n\n/**\n * Creates a new `CSSMatrix` for the shear of the `y-axis` rotation matrix and\n * returns it. This method is equivalent to the CSS `skewY()` function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skewY\n *\n * @param angle the angle in degrees.\n * @return the resulted matrix.\n */\nconst SkewY = (angle: number): CSSMatrix => {\n return Skew(0, angle);\n};\n\n/**\n * Creates a new `CSSMatrix` resulted from the multiplication of two matrixes\n * and returns it. Both matrixes are not changed.\n *\n * @param m1 the first matrix.\n * @param m2 the second matrix.\n * @return the resulted matrix.\n */\nconst Multiply = (m1: CSSMatrix | DOMMatrix | JSONMatrix, m2: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix => {\n const m11 = m2.m11 * m1.m11 + m2.m12 * m1.m21 + m2.m13 * m1.m31 + m2.m14 * m1.m41;\n const m12 = m2.m11 * m1.m12 + m2.m12 * m1.m22 + m2.m13 * m1.m32 + m2.m14 * m1.m42;\n const m13 = m2.m11 * m1.m13 + m2.m12 * m1.m23 + m2.m13 * m1.m33 + m2.m14 * m1.m43;\n const m14 = m2.m11 * m1.m14 + m2.m12 * m1.m24 + m2.m13 * m1.m34 + m2.m14 * m1.m44;\n\n const m21 = m2.m21 * m1.m11 + m2.m22 * m1.m21 + m2.m23 * m1.m31 + m2.m24 * m1.m41;\n const m22 = m2.m21 * m1.m12 + m2.m22 * m1.m22 + m2.m23 * m1.m32 + m2.m24 * m1.m42;\n const m23 = m2.m21 * m1.m13 + m2.m22 * m1.m23 + m2.m23 * m1.m33 + m2.m24 * m1.m43;\n const m24 = m2.m21 * m1.m14 + m2.m22 * m1.m24 + m2.m23 * m1.m34 + m2.m24 * m1.m44;\n\n const m31 = m2.m31 * m1.m11 + m2.m32 * m1.m21 + m2.m33 * m1.m31 + m2.m34 * m1.m41;\n const m32 = m2.m31 * m1.m12 + m2.m32 * m1.m22 + m2.m33 * m1.m32 + m2.m34 * m1.m42;\n const m33 = m2.m31 * m1.m13 + m2.m32 * m1.m23 + m2.m33 * m1.m33 + m2.m34 * m1.m43;\n const m34 = m2.m31 * m1.m14 + m2.m32 * m1.m24 + m2.m33 * m1.m34 + m2.m34 * m1.m44;\n\n const m41 = m2.m41 * m1.m11 + m2.m42 * m1.m21 + m2.m43 * m1.m31 + m2.m44 * m1.m41;\n const m42 = m2.m41 * m1.m12 + m2.m42 * m1.m22 + m2.m43 * m1.m32 + m2.m44 * m1.m42;\n const m43 = m2.m41 * m1.m13 + m2.m42 * m1.m23 + m2.m43 * m1.m33 + m2.m44 * m1.m43;\n const m44 = m2.m41 * m1.m14 + m2.m42 * m1.m24 + m2.m43 * m1.m34 + m2.m44 * m1.m44;\n\n return fromArray([m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44]);\n};\n\n/**\n * Creates and returns a new `DOMMatrix` compatible instance\n * with equivalent instance.\n *\n * @class CSSMatrix\n *\n * @author thednp <https://github.com/thednp/DOMMatrix/>\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix\n */\nexport default class CSSMatrix {\n declare m11: number;\n declare m12: number;\n declare m13: number;\n declare m14: number;\n declare m21: number;\n declare m22: number;\n declare m23: number;\n declare m24: number;\n declare m31: number;\n declare m32: number;\n declare m33: number;\n declare m34: number;\n declare m41: number;\n declare m42: number;\n declare m43: number;\n declare m44: number;\n declare a: number;\n declare b: number;\n declare c: number;\n declare d: number;\n declare e: number;\n declare f: number;\n static Translate = Translate;\n static Rotate = Rotate;\n static RotateAxisAngle = RotateAxisAngle;\n static Scale = Scale;\n static SkewX = SkewX;\n static SkewY = SkewY;\n static Skew = Skew;\n static Multiply = Multiply;\n static fromArray = fromArray;\n static fromMatrix = fromMatrix;\n static fromString = fromString;\n static toArray = toArray;\n static isCompatibleArray = isCompatibleArray;\n static isCompatibleObject = isCompatibleObject;\n\n /**\n * @constructor\n * @param init accepts all parameter configurations:\n * * valid CSS transform string,\n * * CSSMatrix/DOMMatrix instance,\n * * a 6/16 elements *Array*.\n */\n constructor(init?: CSSMatrixInput) {\n // array 6\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.e = 0;\n this.f = 0;\n // array 16\n this.m11 = 1;\n this.m12 = 0;\n this.m13 = 0;\n this.m14 = 0;\n this.m21 = 0;\n this.m22 = 1;\n this.m23 = 0;\n this.m24 = 0;\n this.m31 = 0;\n this.m32 = 0;\n this.m33 = 1;\n this.m34 = 0;\n this.m41 = 0;\n this.m42 = 0;\n this.m43 = 0;\n this.m44 = 1;\n\n if (init) {\n return this.setMatrixValue(init);\n }\n return this;\n }\n\n /**\n * A `Boolean` whose value is `true` if the matrix is the identity matrix. The identity\n * matrix is one in which every value is 0 except those on the main diagonal from top-left\n * to bottom-right corner (in other words, where the offsets in each direction are equal).\n *\n * @return the current property value\n */\n get isIdentity(): boolean {\n return (\n this.m11 === 1 &&\n this.m12 === 0 &&\n this.m13 === 0 &&\n this.m14 === 0 &&\n this.m21 === 0 &&\n this.m22 === 1 &&\n this.m23 === 0 &&\n this.m24 === 0 &&\n this.m31 === 0 &&\n this.m32 === 0 &&\n this.m33 === 1 &&\n this.m34 === 0 &&\n this.m41 === 0 &&\n this.m42 === 0 &&\n this.m43 === 0 &&\n this.m44 === 1\n );\n }\n\n /**\n * A `Boolean` flag whose value is `true` if the matrix was initialized as a 2D matrix\n * and `false` if the matrix is 3D.\n *\n * @return the current property value\n */\n get is2D(): boolean {\n return this.m31 === 0 && this.m32 === 0 && this.m33 === 1 && this.m34 === 0 && this.m43 === 0 && this.m44 === 1;\n }\n\n /**\n * The `setMatrixValue` method replaces the existing matrix with one computed\n * in the browser. EG: `matrix(1,0.25,-0.25,1,0,0)`\n *\n * The method accepts any *Array* values, the result of\n * `DOMMatrix` instance method `toFloat64Array()` / `toFloat32Array()` calls\n * or `CSSMatrix` instance method `toArray()`.\n *\n * This method expects valid *matrix()* / *matrix3d()* string values, as well\n * as other transform functions like *translateX(10px)*.\n *\n * @param source\n * @return the matrix instance\n */\n setMatrixValue(source?: CSSMatrixInput): CSSMatrix {\n // CSS transform string source - TransformList first\n if (typeof source === 'string' && source.length && source !== 'none') {\n return fromString(source);\n }\n\n // [Array | Float[32/64]Array] come next\n if (Array.isArray(source) || source instanceof Float64Array || source instanceof Float32Array) {\n return fromArray(source);\n }\n\n // new CSSMatrix(CSSMatrix | DOMMatrix | JSONMatrix) last\n if (typeof source === 'object') {\n return fromMatrix(source);\n }\n\n return this;\n }\n\n /**\n * Returns a *Float32Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\n toFloat32Array(is2D?: boolean): Float32Array {\n return Float32Array.from(toArray(this, is2D));\n }\n\n /**\n * Returns a *Float64Array* containing elements which comprise the matrix.\n * The method can return either the 16 elements or the 6 elements\n * depending on the value of the `is2D` parameter.\n *\n * @param is2D *Array* representation of the matrix\n * @return an *Array* representation of the matrix\n */\n toFloat64Array(is2D?: boolean): Float64Array {\n return Float64Array.from(toArray(this, is2D));\n }\n\n /**\n * Creates and returns a string representation of the matrix in `CSS` matrix syntax,\n * using the appropriate `CSS` matrix notation.\n *\n * matrix3d *matrix3d(m11, m12, m13, m14, m21, ...)*\n * matrix *matrix(a, b, c, d, e, f)*\n *\n * @return a string representation of the matrix\n */\n toString(): string {\n const { is2D } = this;\n const values = this.toFloat64Array(is2D).join(', ');\n const type = is2D ? 'matrix' : 'matrix3d';\n return `${type}(${values})`;\n }\n\n /**\n * Returns a JSON representation of the `CSSMatrix` instance, a standard *Object*\n * that includes `{a,b,c,d,e,f}` and `{m11,m12,m13,..m44}` properties as well\n * as the `is2D` & `isIdentity` properties.\n *\n * The result can also be used as a second parameter for the `fromMatrix` static method\n * to load values into another matrix instance.\n *\n * @return an *Object* with all matrix values.\n */\n toJSON(): JSONMatrix {\n const { is2D, isIdentity } = this;\n return { ...this, is2D, isIdentity };\n }\n\n /**\n * The Multiply method returns a new CSSMatrix which is the result of this\n * matrix multiplied by the passed matrix, with the passed matrix to the right.\n * This matrix is not modified.\n *\n * @param m2 CSSMatrix\n * @return The resulted matrix.\n */\n multiply(m2: CSSMatrix | DOMMatrix | JSONMatrix): CSSMatrix {\n return Multiply(this, m2);\n }\n\n /**\n * The translate method returns a new matrix which is this matrix post\n * multiplied by a translation matrix containing the passed values. If the z\n * component is undefined, a 0 value is used in its place. This matrix is not\n * modified.\n *\n * @param x X component of the translation value.\n * @param y Y component of the translation value.\n * @param z Z component of the translation value.\n * @return The resulted matrix\n */\n translate(x: number, y?: number, z?: number): CSSMatrix {\n const X = x;\n let Y = y;\n let Z = z;\n if (typeof Y === 'undefined') Y = 0;\n if (typeof Z === 'undefined') Z = 0;\n return Multiply(this, Translate(X, Y, Z));\n }\n\n /**\n * The scale method returns a new matrix which is this matrix post multiplied by\n * a scale matrix containing the passed values. If the z component is undefined,\n * a 1 value is used in its place. If the y component is undefined, the x\n * component value is used in its place. This matrix is not modified.\n *\n * @param x The X component of the scale value.\n * @param y The Y component of the scale value.\n * @param z The Z component of the scale value.\n * @return The resulted matrix\n */\n scale(x: number, y?: number, z?: number): CSSMatrix {\n const X = x;\n let Y = y;\n let Z = z;\n if (typeof Y === 'undefined') Y = x;\n if (typeof Z === 'undefined') Z = 1; // Z must be 1 if undefined\n\n return Multiply(this, Scale(X, Y, Z));\n }\n\n /**\n * The rotate method returns a new matrix which is this matrix post multiplied\n * by each of 3 rotation matrices about the major axes, first X, then Y, then Z.\n * If the y and z components are undefined, the x value is used to rotate the\n * object about the z axis, as though the vector (0,0,x) were passed. All\n * rotation values are in degrees. This matrix is not modified.\n *\n * @param rx The X component of the rotation, or Z if Y and Z are null.\n * @param ry The (optional) Y component of the rotation value.\n * @param rz The (optional) Z component of the rotation value.\n * @return The resulted matrix\n */\n rotate(rx: number, ry?: number, rz?: number): CSSMatrix {\n let RX = rx;\n let RY = ry || 0;\n let RZ = rz || 0;\n\n if (typeof rx === 'number' && typeof ry === 'undefined' && typeof rz === 'undefined') {\n RZ = RX;\n RX = 0;\n RY = 0;\n }\n\n return Multiply(this, Rotate(RX, RY, RZ));\n }\n\n /**\n * The rotateAxisAngle method returns a new matrix which is this matrix post\n * multiplied by a rotation matrix with the given axis and `angle`. The right-hand\n * rule is used to determine the direction of rotation. All rotation values are\n * in degrees. This matrix is not modified.\n *\n * @param x The X component of the axis vector.\n * @param y The Y component of the axis vector.\n * @param z The Z component of the axis vector.\n * @param angle The angle of rotation about the axis vector, in degrees.\n * @return The resulted matrix\n */\n rotateAxisAngle(x: number, y: number, z: number, angle: number): CSSMatrix {\n if ([x, y, z, angle].some(n => Number.isNaN(+n))) {\n throw new TypeError('CSSMatrix: expecting 4 values');\n }\n return Multiply(this, RotateAxisAngle(x, y, z, angle));\n }\n\n /**\n * Specifies a skew transformation along the `x-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param angle The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skewX(angle: number): CSSMatrix {\n return Multiply(this, SkewX(angle));\n }\n\n /**\n * Specifies a skew transformation along the `y-axis` by the given angle.\n * This matrix is not modified.\n *\n * @param angle The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skewY(angle: number): CSSMatrix {\n return Multiply(this, SkewY(angle));\n }\n\n /**\n * Specifies a skew transformation along both the `x-axis` and `y-axis`.\n * This matrix is not modified.\n *\n * @param angleX The X-angle amount in degrees to skew.\n * @param angleY The angle amount in degrees to skew.\n * @return The resulted matrix\n */\n skew(angleX: number, angleY: number): CSSMatrix {\n return Multiply(this, Skew(angleX, angleY));\n }\n\n /**\n * Transforms a specified vector using the matrix, returning a new\n * {x,y,z,w} Tuple *Object* comprising the transformed vector.\n * Neither the matrix nor the original vector are altered.\n *\n * The method is equivalent with `transformPoint()` method\n * of the `DOMMatrix` constructor.\n *\n * @param t Tuple with `{x,y,z,w}` components\n * @return the resulting Tuple\n */\n transformPoint(t: PointTuple | DOMPoint): PointTuple | DOMPoint {\n const x = this.m11 * t.x + this.m21 * t.y + this.m31 * t.z + this.m41 * t.w;\n const y = this.m12 * t.x + this.m22 * t.y + this.m32 * t.z + this.m42 * t.w;\n const z = this.m13 * t.x + this.m23 * t.y + this.m33 * t.z + this.m43 * t.w;\n const w = this.m14 * t.x + this.m24 * t.y + this.m34 * t.z + this.m44 * t.w;\n\n return t instanceof DOMPoint\n ? new DOMPoint(x, y, z, w)\n : {\n x,\n y,\n z,\n w,\n };\n }\n}\n"],"names":["JSON_MATRIX","isCompatibleArray","array","x","isCompatibleObject","object","CSSMatrix","k","fromArray","m","a","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","M11","M12","M21","M22","M41","M42","fromMatrix","fromString","source","str","invalidStringError","f","tf","prop","value","components","n","y","z","xyz","xyza","values","sy","p","fn","axis","idx","def","axeValues","toArray","is2D","Translate","Rotate","rx","ry","rz","degToRad","radX","radY","radZ","cosx","sinx","cosy","siny","cosz","sinz","RotateAxisAngle","alpha","length","X","Y","Z","angle","sinA","cosA","sinA2","x2","y2","z2","Scale","Skew","angleX","angleY","tX","tY","SkewX","SkewY","Multiply","m1","m2","init","isIdentity","RX","RY","RZ","w","__publicField"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thednp/dommatrix",
3
- "version": "2.0.6",
3
+ "version": "2.0.7",
4
4
  "description": "TypeScript shim for DOMMatrix",
5
5
  "homepage": "https://thednp.github.io/dommatrix/",
6
6
  "author": "thednp",
@@ -21,12 +21,14 @@
21
21
  "cypress": "npm run pre-test && npx cypress open",
22
22
  "clean-coverage": "rimraf coverage .nyc_output",
23
23
  "coverage:report": "nyc report --reporter=lcov --reporter=json --reporter=text --reporter=json-summary",
24
+ "badges": "npx -p dependency-version-badge update-badge eslint typescript cypress eslint prettier vite",
24
25
  "format": "prettier --write \"src/**/*.ts\"",
25
26
  "lint:ts": "eslint -c .eslintrc.cjs --ext .ts src",
26
27
  "fix:ts": "eslint -c .eslintrc.cjs --ext .ts src --fix",
27
28
  "build": "npm run lint:ts && vite build && npm run dts && npm run docs",
28
29
  "dts": "dts-bundle-generator --config ./dts.config.ts",
29
- "docs": "ncp dist/dommatrix.js docs/dommatrix.js && ncp dist/dommatrix.js.map docs/dommatrix.js.map"
30
+ "docs": "ncp dist/dommatrix.js docs/dommatrix.js && ncp dist/dommatrix.js.map docs/dommatrix.js.map",
31
+ "prepublishOnly": "npm update && npm run format && npm run lint:ts && npm run build && npm run badges"
30
32
  },
31
33
  "repository": {
32
34
  "type": "git",
@@ -56,8 +58,8 @@
56
58
  "@types/istanbul-lib-instrument": "^1.7.4",
57
59
  "@typescript-eslint/eslint-plugin": "^5.61.0",
58
60
  "@typescript-eslint/parser": "^5.61.0",
59
- "cypress": "^12.16.0",
60
- "dts-bundle-generator": "^8.0.1",
61
+ "cypress": "^13.13.1",
62
+ "dts-bundle-generator": "^8.1.2",
61
63
  "eslint": "^8.44.0",
62
64
  "eslint-plugin-jsdoc": "^46.4.3",
63
65
  "eslint-plugin-prefer-arrow": "^1.2.3",
@@ -68,7 +70,7 @@
68
70
  "nyc": "^15.1.0",
69
71
  "prettier": "^2.8.8",
70
72
  "rimraf": "^5.0.1",
71
- "typescript": "^5.1.6",
72
- "vite": "^4.3.9"
73
+ "typescript": "^5.5.4",
74
+ "vite": "^5.3.5"
73
75
  }
74
76
  }
package/tsconfig.json CHANGED
@@ -2,12 +2,12 @@
2
2
  // https://janessagarrow.com/blog/typescript-and-esbuild/
3
3
  "compilerOptions": {
4
4
  "lib": ["DOM", "ESNext", "DOM.Iterable"],
5
- "types": ["vite", "vite/client", "cypress"],
5
+ // "types": ["vite", "vite/client", "cypress"],
6
6
  "rootDir": "./src",
7
7
  "baseUrl": "./",
8
8
  "module": "ESNext",
9
9
  "target": "ESNext",
10
- "moduleResolution": "Node",
10
+ "moduleResolution": "Bundler",
11
11
  "allowJs": true,
12
12
  "forceConsistentCasingInFileNames": true,
13
13
  "useDefineForClassFields": true,
@@ -25,5 +25,5 @@
25
25
  "checkJs": true
26
26
  },
27
27
  "include": ["src/*"],
28
- "exclude": ["node_modules", "experiments", "coverage"],
28
+ "exclude": ["node_modules", "experiments", "coverage"]
29
29
  }