kute.js/src/process/getInlineStyle.js
thednp 2a5bac2bb3 Changes V2.2.0:
* major JSDoc write up
* removed ESLint `no-bitwise` exception, it only applies to specific functions and not the entire code
* the `SVGCubicMorph` component will remove un-necessary `Z` path commands when is the case for better out of the box animation
* fixed a minor disambiguation with `filterEffects` and `drop-shadow` property and its `dropshadow` interpolation function
* TypeScript strong: all files are modules, easy to implement in any third party app
* updated `CubicBezier` and SVGPathCommander
* code cleanup
2021-12-08 23:43:31 +02:00

35 lines
1,006 B
JavaScript

/**
* getInlineStyle
* Returns the transform style for element from
* cssText. Used by for the `.to()` static method.
*
* @param {Element} el target element
* @returns {object}
*/
export default function getInlineStyle(el) {
// if the scroll applies to `window` it returns as it has no styling
if (!el.style) return false;
// the cssText | the resulting transform object
const css = el.style.cssText.replace(/\s/g, '').split(';');
const transformObject = {};
const arrayFn = ['translate3d', 'translate', 'scale3d', 'skew'];
css.forEach((cs) => {
if (/transform/i.test(cs)) {
// all transform properties
const tps = cs.split(':')[1].split(')');
tps.forEach((tpi) => {
const tpv = tpi.split('(');
const tp = tpv[0];
// each transform property
const tv = tpv[1];
if (!/matrix/.test(tp)) {
transformObject[tp] = arrayFn.includes(tp) ? tv.split(',') : tv;
}
});
}
});
return transformObject;
}