| 
				
					
						 | 
			||
|---|---|---|
| .. | ||
| dist | ||
| src | ||
| types | ||
| LICENSE | ||
| README.md | ||
| package.json | ||
		
			
				
				README.md
			
		
		
			
			
		
	
	DOMMatrix
An ES6+ sourced DOMMatrix shim for Node.js apps and legacy browsers. Since this source is modernized, legacy browsers might need some additional shims.
The constructor is close to the DOMMatrix Interface in many respects, but tries to keep a sense of simplicity. In that note, we haven't implemented DOMMatrixReadOnly methods like flipX() or inverse() or aliases for the main methods like translateSelf or the old rotate3d.
DOMMatrix shim is meant to be a light pocket tool for many things, for a complete polyfill you might want to also consider more geometry-interfaces and geometry-polyfill.
This library implements a full transform string parsing via the static method .fromString(), which produce results inline with the DOMMatrix Interface as well as a very elegant method to determine is2D. Before moving to the technical details of this script, have a look at the demo.
Demo
See DOMMatrix shim in action, click me and start transforming.
Installation
npm install dommatrix
Download the latest version and copy the dist/dommatrix.min.js file to your project assets folder, then load the file in your front-end:
<script src="./assets/js/dommatrix.min.js">
Alternativelly you can load from CDN:
<script src="https://cdn.jsdelivr.net/npm/dommatrix/dist/dommatrix.min.js">
Usage
In your regular day to day usage, you will find yourself writing something like this:
import CSSMatrix from 'dommatrix';
// init
let myMatrix = new CSSMatrix('matrix(1,0.25,-0.25,1,0,0)');
// apply methods
myMatrix.translate(15);
myMatrix.rotate(15);
// apply to styling to target
element.style.transform = myMatrix.toString();
For the complete JavaScript API, check the JavaScript API section in our wiki.
WIKI
For more indepth guides, head over to the wiki pages for developer guidelines.
More Info
In contrast with the original source there have been a series of changes to the prototype for consistency, performance as well as requirements to better accomodate the DOMMatrix interface:
- changed how the constructor determines if the matrix is 2D, based on a more accurate method which is actually checking the designated values of the 3D space; in contrast, the old CSSMatrix constructor sets 
afineproperty at initialization only and based on the number of arguments or the type of the input CSS transform syntax; - fixed the 
translate(),scale()androtate()instance methods to work with one axis transformation, also inline with DOMMatrix; - changed 
toString()instance method to utilize the new methodtoArray()described below; - changed 
setMatrixValue()instance method to do all the heavy duty work with parameters; - added 
is2D(getter and setter) property; - added 
isIdentity(getter and setter) property; - added 
skew()public method to work in line with native DOMMatrix; - added 
Skew()static method to work with the aboveskew()instance method; - added 
fromMatrixstatic method, not present in the constructor prototype; - added 
fromStringstatic method, not present in the constructor prototype; - added 
fromArray()static method, not present in the constructor prototype, should also process Float32Array / Float64Array viaArray.from(); - added 
toFloat64Array()andtoFloat32Array()instance methods, the updatedtoString()method makes use of them alongsidetoArray; - added 
toArray()instance method, normalizes values and is used by thetoString()instance method; - added 
toJSON()instance method will generate a standard Object which includes{a,b,c,d,e,f}and{m11,m12,m13,..m44}properties and excludesis2D&isIdentityproperties; - added 
transformPoint()instance method which works like the original. - removed 
afineproperty, it's a very old WebKitCSSMatrix defined property; - removed 
inverse()instance method, will be re-added later for other implementations (probably going to be accompanied bydeterminant(),transpose()and others); - removed 
transforminstance method, not present in the native DOMMatrix prototype; - removed 
setIdentity()instance method due to code rework for enabling better TypeScript definitions; - removed 
toFullString()instance method, probably something also from WebKitCSSMatrix; - removed 
feedFromArraystatic method, not present in the constructor prototype,fromArray()will cover that; - not supported 
fromFloat64Array()andfromFloat32Array()static methods are not supported, ourfromArray()should handle them just as well; - not supported 
flipX()orflipY()instance methods of the DOMMatrixReadOnly prototype are not supported, - not supported 
translateSelf()orrotateSelf()instance methods of the DOMMatrix prototype are not supported, instead we only implemented the most used DOMMatrixReadOnly instance methods. - not supported 
scaleNonUniformSelf()orrotate3d()with{x, y, z}transform origin parameters are not implemented. 
Thanks
- Joe Pea for his geometry-interfaces
 - Jarek Foksa for his geometry-polyfill
 - Arian Stolwijk for his CSSMatrix
 
License
DOMMatrix shim is MIT Licensed.