2a5bac2bb3
* 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
35 lines
1,006 B
JavaScript
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;
|
|
}
|