44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
/**
|
|
* Copyright (c) 2015-present, Haltu Oy
|
|
* Released under the MIT license
|
|
* https://github.com/haltu/muuri/blob/master/LICENSE.md
|
|
*/
|
|
|
|
import getStyle from './getStyle';
|
|
import transformStyle from './transformStyle';
|
|
|
|
var translateValue = {};
|
|
var transformNone = 'none';
|
|
var rxMat3d = /^matrix3d/;
|
|
var rxMatTx = /([^,]*,){4}/;
|
|
var rxMat3dTx = /([^,]*,){12}/;
|
|
var rxNextItem = /[^,]*,/;
|
|
|
|
/**
|
|
* Returns the element's computed translateX and translateY values as a floats.
|
|
* The returned object is always the same object and updated every time this
|
|
* function is called.
|
|
*
|
|
* @param {HTMLElement} element
|
|
* @returns {Object}
|
|
*/
|
|
export default function getTranslate(element) {
|
|
translateValue.x = 0;
|
|
translateValue.y = 0;
|
|
|
|
var transform = getStyle(element, transformStyle);
|
|
if (!transform || transform === transformNone) {
|
|
return translateValue;
|
|
}
|
|
|
|
// Transform style can be in either matrix3d(...) or matrix(...).
|
|
var isMat3d = rxMat3d.test(transform);
|
|
var tX = transform.replace(isMat3d ? rxMat3dTx : rxMatTx, '');
|
|
var tY = tX.replace(rxNextItem, '');
|
|
|
|
translateValue.x = parseFloat(tX) || 0;
|
|
translateValue.y = parseFloat(tY) || 0;
|
|
|
|
return translateValue;
|
|
}
|