48 lines
2.1 KiB
JavaScript
48 lines
2.1 KiB
JavaScript
import { parseValueFromTransform } from '../../../render/dom/parse-transform.mjs';
|
|
import { transformPropOrder } from '../../../render/utils/keys-transform.mjs';
|
|
import { number } from '../../../value/types/numbers/index.mjs';
|
|
import { px } from '../../../value/types/numbers/units.mjs';
|
|
|
|
const isNumOrPxType = (v) => v === number || v === px;
|
|
const transformKeys = new Set(["x", "y", "z"]);
|
|
const nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));
|
|
function removeNonTranslationalTransform(visualElement) {
|
|
const removedTransforms = [];
|
|
nonTranslationalTransformKeys.forEach((key) => {
|
|
const value = visualElement.getValue(key);
|
|
if (value !== undefined) {
|
|
removedTransforms.push([key, value.get()]);
|
|
value.set(key.startsWith("scale") ? 1 : 0);
|
|
}
|
|
});
|
|
return removedTransforms;
|
|
}
|
|
const positionalValues = {
|
|
// Dimensions
|
|
width: ({ x }, { paddingLeft = "0", paddingRight = "0", boxSizing }) => {
|
|
const width = x.max - x.min;
|
|
return boxSizing === "border-box"
|
|
? width
|
|
: width - parseFloat(paddingLeft) - parseFloat(paddingRight);
|
|
},
|
|
height: ({ y }, { paddingTop = "0", paddingBottom = "0", boxSizing }) => {
|
|
const height = y.max - y.min;
|
|
return boxSizing === "border-box"
|
|
? height
|
|
: height - parseFloat(paddingTop) - parseFloat(paddingBottom);
|
|
},
|
|
top: (_bbox, { top }) => parseFloat(top),
|
|
left: (_bbox, { left }) => parseFloat(left),
|
|
bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),
|
|
right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),
|
|
// Transform
|
|
x: (_bbox, { transform }) => parseValueFromTransform(transform, "x"),
|
|
y: (_bbox, { transform }) => parseValueFromTransform(transform, "y"),
|
|
};
|
|
// Alias translate longform names
|
|
positionalValues.translateX = positionalValues.x;
|
|
positionalValues.translateY = positionalValues.y;
|
|
|
|
export { isNumOrPxType, positionalValues, removeNonTranslationalTransform };
|
|
//# sourceMappingURL=unit-conversion.mjs.map
|