Security News
GitHub Removes Malicious Pull Requests Targeting Open Source Repositories
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
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.
See DOMMatrix shim in action, click me and start transforming.
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">
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.
For more indepth guides, head over to the wiki pages for developer guidelines.
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:
afine
property at initialization only and based on the number of arguments or the type of the input CSS transform syntax;translate()
, scale()
and rotate()
instance methods to work with one axis transformation, also inline with DOMMatrix;toString()
instance method to utilize the new method toArray()
described below;setMatrixValue()
instance method to do all the heavy duty work with parameters;is2D
(getter and setter) property;isIdentity
(getter and setter) property;skew()
public method to work in line with native DOMMatrix;Skew()
static method to work with the above skew()
instance method;fromMatrix
static method, not present in the constructor prototype;fromString
static method, not present in the constructor prototype;fromArray()
static method, not present in the constructor prototype, should also process Float32Array / Float64Array via Array.from()
;toFloat64Array()
and toFloat32Array()
instance methods, the updated toString()
method makes use of them alongside toArray
;toArray()
instance method, normalizes values and is used by the toString()
instance method;toJSON()
instance method will generate a standard Object which includes {a,b,c,d,e,f}
and {m11,m12,m13,..m44}
properties and excludes is2D
& isIdentity
properties;transformPoint()
instance method which works like the original.afine
property, it's a very old WebKitCSSMatrix defined property;inverse()
instance method, will be re-added later for other implementations (probably going to be accompanied by determinant()
, transpose()
and others);transform
instance method, not present in the native DOMMatrix prototype;setIdentity()
instance method due to code rework for enabling better TypeScript definitions;toFullString()
instance method, probably something also from WebKitCSSMatrix;feedFromArray
static method, not present in the constructor prototype, fromArray()
will cover that;fromFloat64Array()
and fromFloat32Array()
static methods are not supported, our fromArray()
should handle them just as well;flipX()
or flipY()
instance methods of the DOMMatrixReadOnly prototype are not supported,translateSelf()
or rotateSelf()
instance methods of the DOMMatrix prototype are not supported, instead we only implemented the most used DOMMatrixReadOnly instance methods.scaleNonUniformSelf()
or rotate3d()
with {x, y, z}
transform origin parameters are not implemented.DOMMatrix shim is MIT Licensed.
FAQs
ES6+ shim for DOMMatrix
The npm package dommatrix receives a total of 386,598 weekly downloads. As such, dommatrix popularity was classified as popular.
We found that dommatrix demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.