-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathisValidFxScaleSVGTransformList.index.js
40 lines (38 loc) · 1.4 KB
/
isValidFxScaleSVGTransformList.index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { go, mapL, rangeL } from "fxjs/es";
import { $$isScaleSVGTransform } from "../isScaleSVGTransform/isScaleSVGTransform.index.js";
import { $$isTranslateSVGTransform } from "../isTranslateSVGTransform/isTranslateSVGTransform.index.js";
export const $$isValidFxScaleSVGTransformList = ({ index = 0 } = {}) => (
transform_list
) => {
if (index <= 0 || index >= transform_list.numberOfItems - 1) {
return false;
}
const [
positive_translate_transform,
scale_transform,
negative_translate_transform,
] = go(
rangeL(3),
mapL((i) => index - 1 + i),
mapL((i) => transform_list.getItem(i))
);
return (
$$isTranslateSVGTransform(positive_translate_transform) &&
$$isScaleSVGTransform(scale_transform) &&
$$isTranslateSVGTransform(negative_translate_transform) &&
positive_translate_transform.matrix.a === 1 &&
positive_translate_transform.matrix.b === 0 &&
positive_translate_transform.matrix.c === 0 &&
positive_translate_transform.matrix.d === 1 &&
negative_translate_transform.matrix.a === 1 &&
negative_translate_transform.matrix.b === 0 &&
negative_translate_transform.matrix.c === 0 &&
negative_translate_transform.matrix.d === 1 &&
positive_translate_transform.matrix.e +
negative_translate_transform.matrix.e ===
0 &&
positive_translate_transform.matrix.f +
negative_translate_transform.matrix.f ===
0
);
};