Socket
Socket
Sign inDemoInstall

decompose-dommatrix

Package Overview
Dependencies
0
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    decompose-dommatrix

A small library to decompose a DOMMatrix into transform values.


Version published
Weekly downloads
15
decreased by-55.88%
Maintainers
1
Install size
31.6 kB
Created
Weekly downloads
 

Readme

Source

Decompose DOMMatrix

Takes in a DOMMatrix and returns a set of transforms (translateX, rotateZ, etc). This code is mostly lifted from https://github.com/facebook/react-native/blob/master/Libraries/Utilities/MatrixMath.js and can be considered as a standalone decompose function. This is actually useful though since a standalone decompose/unmatrix function for javascript was impossible to find.

Important Note: the transforms are specified in a way that they need to be applied in a specific order to get the same result. Specifically, given a decomposed matrix, to "recompose" the matrix properly you must apply the transforms in the following order: translate, rotate, skew, scale. This is why if you apply some transforms, then get the decomposed matrix you may get different values. i.e. if you do

element.style.transform = 'scale(2) rotate(30deg) translateX(30px)';
const decomposed = decomposeDOMMatrix(new DOMMatrix(getComputedStyle(element).getPropertyValue('transform')));
console.log(JSON.stringify(decomposed));

you will get a different set of numbers. But if you apply those new set of numbers in the specified order (translate, rotate, skew, scale) your element will look the exact same as your original.

Usage

import decomposeDOMMatrix from 'decompose-dommatrix';

const decomposed = decomposeDOMMatrix(new DOMMatrix(getComputedStyle(element).getPropertyValue('transform')));
console.log(decomposed.translateX);

API

decomposeDOMMatrix(matrix: DOMMatrix): TransformValues

Takes in a DOMMatrix and returns a map of transforms to values. All values are either in pixels or degrees, depending on the transform.

TransformValues

translateX, translateY, translateZ: number

The translate values along the various axis. In pixels (px).

rotateX, rotateY, rotateZ: number

The rotation values along the various axis. In degrees (deg).

scaleX, scaleY, scaleZ: number

The scale values along the various axis. Unitless.

skewXY, skewXZ, skewYZ: number

The skew values along the various axis. In degrees (deg).

Keywords

FAQs

Last updated on 09 May 2019

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc