@zag-js/rect-utils 0.38.1 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +147 -79
- package/dist/index.d.ts +147 -79
- package/dist/index.js +391 -72
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +381 -72
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/affine-transform.ts +177 -0
- package/src/align.ts +11 -44
- package/src/clamp.ts +26 -0
- package/src/closest.ts +5 -14
- package/src/compass.ts +25 -0
- package/src/constrain.ts +18 -0
- package/src/contains.ts +2 -2
- package/src/distance.ts +4 -3
- package/src/equality.ts +13 -0
- package/src/from-element.ts +3 -1
- package/src/from-points.ts +2 -2
- package/src/from-range.ts +2 -1
- package/src/from-rotation.ts +2 -2
- package/src/from-window.ts +2 -1
- package/src/index.ts +5 -1
- package/src/intersection.ts +2 -2
- package/src/operations.ts +2 -2
- package/src/polygon.ts +15 -1
- package/src/rect.ts +28 -18
- package/src/resize.ts +106 -0
- package/src/types.ts +50 -3
- package/src/union.ts +5 -17
- package/src/get-polygon.ts +0 -15
package/dist/index.d.mts
CHANGED
|
@@ -1,13 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
x: number;
|
|
3
|
-
y: number;
|
|
4
|
-
};
|
|
5
|
-
type RectValue = {
|
|
1
|
+
interface Point {
|
|
6
2
|
x: number;
|
|
7
3
|
y: number;
|
|
4
|
+
}
|
|
5
|
+
interface Size {
|
|
8
6
|
width: number;
|
|
9
7
|
height: number;
|
|
10
|
-
}
|
|
8
|
+
}
|
|
9
|
+
interface Bounds {
|
|
10
|
+
minX: number;
|
|
11
|
+
midX: number;
|
|
12
|
+
maxX: number;
|
|
13
|
+
minY: number;
|
|
14
|
+
midY: number;
|
|
15
|
+
maxY: number;
|
|
16
|
+
}
|
|
17
|
+
interface CenterPoint {
|
|
18
|
+
center: Point;
|
|
19
|
+
}
|
|
20
|
+
interface RectInit extends Point, Size {
|
|
21
|
+
}
|
|
22
|
+
interface Rect extends Point, Size, Bounds, CenterPoint {
|
|
23
|
+
}
|
|
11
24
|
type RectSide = "top" | "right" | "bottom" | "left";
|
|
12
25
|
type RectPoint = "top-left" | "top-center" | "top-right" | "right-center" | "left-center" | "bottom-left" | "bottom-right" | "bottom-center" | "center";
|
|
13
26
|
type RectEdge = [Point, Point];
|
|
@@ -24,96 +37,90 @@ type RectCenters = Record<RectCenter, Point> & {
|
|
|
24
37
|
value: RectPoints;
|
|
25
38
|
};
|
|
26
39
|
type RectInset = Partial<Record<RectSide, number>>;
|
|
27
|
-
|
|
40
|
+
interface SymmetricRectInset {
|
|
28
41
|
dx?: number;
|
|
29
42
|
dy?: number;
|
|
30
|
-
}
|
|
43
|
+
}
|
|
44
|
+
interface ScalingOptions {
|
|
45
|
+
scalingOriginMode: "center" | "extent";
|
|
46
|
+
lockAspectRatio: boolean;
|
|
47
|
+
}
|
|
48
|
+
interface AlignOptions {
|
|
49
|
+
h: HAlign;
|
|
50
|
+
v: VAlign;
|
|
51
|
+
}
|
|
52
|
+
type HAlign = "left-inside" | "left-outside" | "center" | "right-inside" | "right-outside";
|
|
53
|
+
type VAlign = "top-inside" | "top-outside" | "center" | "bottom-inside" | "bottom-outside";
|
|
54
|
+
|
|
55
|
+
declare class AffineTransform {
|
|
56
|
+
m00: number;
|
|
57
|
+
m01: number;
|
|
58
|
+
m02: number;
|
|
59
|
+
m10: number;
|
|
60
|
+
m11: number;
|
|
61
|
+
m12: number;
|
|
62
|
+
constructor([m00, m01, m02, m10, m11, m12]?: Iterable<number>);
|
|
63
|
+
applyTo(point: Point): Point;
|
|
64
|
+
prepend(other: AffineTransform): AffineTransform;
|
|
65
|
+
append(other: AffineTransform): AffineTransform;
|
|
66
|
+
get determinant(): number;
|
|
67
|
+
get isInvertible(): boolean;
|
|
68
|
+
invert(): AffineTransform;
|
|
69
|
+
get array(): number[];
|
|
70
|
+
get float32Array(): Float32Array;
|
|
71
|
+
static get identity(): AffineTransform;
|
|
72
|
+
static rotate(theta: number, origin?: Point): AffineTransform;
|
|
73
|
+
rotate: (typeof AffineTransform)["rotate"];
|
|
74
|
+
static scale(sx: number, sy?: number, origin?: Point): AffineTransform;
|
|
75
|
+
scale: (typeof AffineTransform)["scale"];
|
|
76
|
+
static translate(tx: number, ty: number): AffineTransform;
|
|
77
|
+
translate: (typeof AffineTransform)["translate"];
|
|
78
|
+
static multiply(...[first, ...rest]: AffineTransform[]): AffineTransform;
|
|
79
|
+
get a(): number;
|
|
80
|
+
get b(): number;
|
|
81
|
+
get c(): number;
|
|
82
|
+
get d(): number;
|
|
83
|
+
get tx(): number;
|
|
84
|
+
get ty(): number;
|
|
85
|
+
get scaleComponents(): Point;
|
|
86
|
+
get translationComponents(): Point;
|
|
87
|
+
get skewComponents(): Point;
|
|
88
|
+
toString(): string;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
declare function alignRect(a: Rect, ref: Rect, options: AlignOptions): Rect;
|
|
31
92
|
|
|
32
|
-
declare
|
|
93
|
+
declare const clampPoint: (position: Point, size: Size, boundaryRect: RectInit) => {
|
|
33
94
|
x: number;
|
|
34
95
|
y: number;
|
|
96
|
+
};
|
|
97
|
+
declare const clampSize: (size: Size, minSize?: Size, maxSize?: Size) => {
|
|
35
98
|
width: number;
|
|
36
99
|
height: number;
|
|
37
|
-
minX: number;
|
|
38
|
-
minY: number;
|
|
39
|
-
maxX: number;
|
|
40
|
-
maxY: number;
|
|
41
|
-
midX: number;
|
|
42
|
-
midY: number;
|
|
43
|
-
center: {
|
|
44
|
-
x: number;
|
|
45
|
-
y: number;
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
type Rect = ReturnType<typeof createRect>;
|
|
49
|
-
declare function isRect(v: any): v is Rect;
|
|
50
|
-
declare function getRectCenters(v: Rect): {
|
|
51
|
-
top: {
|
|
52
|
-
x: number;
|
|
53
|
-
y: number;
|
|
54
|
-
};
|
|
55
|
-
right: {
|
|
56
|
-
x: number;
|
|
57
|
-
y: number;
|
|
58
|
-
};
|
|
59
|
-
bottom: {
|
|
60
|
-
x: number;
|
|
61
|
-
y: number;
|
|
62
|
-
};
|
|
63
|
-
left: {
|
|
64
|
-
x: number;
|
|
65
|
-
y: number;
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
declare function getRectCorners(v: Rect): {
|
|
69
|
-
top: {
|
|
70
|
-
x: number;
|
|
71
|
-
y: number;
|
|
72
|
-
};
|
|
73
|
-
right: {
|
|
74
|
-
x: number;
|
|
75
|
-
y: number;
|
|
76
|
-
};
|
|
77
|
-
bottom: {
|
|
78
|
-
x: number;
|
|
79
|
-
y: number;
|
|
80
|
-
};
|
|
81
|
-
left: {
|
|
82
|
-
x: number;
|
|
83
|
-
y: number;
|
|
84
|
-
};
|
|
85
|
-
};
|
|
86
|
-
declare function getRectEdges(v: Rect): {
|
|
87
|
-
top: RectEdge;
|
|
88
|
-
right: RectEdge;
|
|
89
|
-
bottom: RectEdge;
|
|
90
|
-
left: RectEdge;
|
|
91
100
|
};
|
|
92
101
|
|
|
93
|
-
declare function alignRect(a: Rect, ref: Rect, options: AlignOptions): Rect;
|
|
94
|
-
type AlignOptions = {
|
|
95
|
-
h: HAlign;
|
|
96
|
-
v: VAlign;
|
|
97
|
-
};
|
|
98
|
-
type HAlign = "left-inside" | "left-outside" | "center" | "right-inside" | "right-outside";
|
|
99
|
-
type VAlign = "top-inside" | "top-outside" | "center" | "bottom-inside" | "bottom-outside";
|
|
100
|
-
|
|
101
102
|
declare function closest(...pts: Point[]): (a: Point) => Point;
|
|
102
103
|
declare function closestSideToRect(ref: Rect, r: Rect): RectSide;
|
|
103
104
|
declare function closestSideToPoint(ref: Rect, p: Point): RectSide;
|
|
104
105
|
|
|
106
|
+
declare const constrainRect: (rect: RectInit, boundary: RectInit) => RectInit;
|
|
107
|
+
|
|
105
108
|
declare function containsPoint(r: Rect, p: Point): boolean;
|
|
106
109
|
declare function containsRect(a: Rect, b: Rect): boolean;
|
|
107
110
|
declare function contains(r: Rect, v: Rect | Point): boolean;
|
|
108
111
|
|
|
109
|
-
|
|
112
|
+
interface DistanceValue extends Point {
|
|
110
113
|
value: number;
|
|
111
|
-
}
|
|
114
|
+
}
|
|
112
115
|
declare function distance(a: Point, b?: Point): number;
|
|
113
116
|
declare function distanceFromPoint(r: Rect, p: Point): DistanceValue;
|
|
114
117
|
declare function distanceFromRect(a: Rect, b: Rect): DistanceValue;
|
|
115
118
|
declare function distanceBtwEdges(a: Rect, b: Rect): Record<RectSide, number>;
|
|
116
119
|
|
|
120
|
+
declare const isSizeEqual: (a: Size, b: Size) => boolean;
|
|
121
|
+
declare const isPointEqual: (a: Point, b: Point) => boolean;
|
|
122
|
+
declare const isRectEqual: (a: RectInit, b: RectInit) => boolean;
|
|
123
|
+
|
|
117
124
|
declare function getElementRect(el: HTMLElement, opts?: ElementRectOptions): Rect;
|
|
118
125
|
type ElementRectOptions = {
|
|
119
126
|
/**
|
|
@@ -154,11 +161,6 @@ declare function getViewportRect(win: Window, opts: WindowRectOptions): {
|
|
|
154
161
|
height: number;
|
|
155
162
|
};
|
|
156
163
|
|
|
157
|
-
declare function getElementPolygon(rectValue: RectValue, placement: string): {
|
|
158
|
-
x: number;
|
|
159
|
-
y: number;
|
|
160
|
-
}[] | undefined;
|
|
161
|
-
|
|
162
164
|
/**
|
|
163
165
|
* Checks if a Rect intersects another Rect
|
|
164
166
|
*/
|
|
@@ -178,9 +180,75 @@ declare function expand(r: Rect, v: number | SymmetricRectInset): Rect;
|
|
|
178
180
|
declare function shrink(r: Rect, v: number | SymmetricRectInset): Rect;
|
|
179
181
|
declare function shift(r: Rect, o: Partial<Point>): Rect;
|
|
180
182
|
|
|
183
|
+
declare function getElementPolygon(rectValue: RectInit, placement: string): {
|
|
184
|
+
x: number;
|
|
185
|
+
y: number;
|
|
186
|
+
}[] | undefined;
|
|
181
187
|
declare function isPointInPolygon(polygon: Point[], point: Point): boolean;
|
|
182
188
|
declare function debugPolygon(polygon: Point[]): () => void;
|
|
183
189
|
|
|
190
|
+
declare const createPoint: (x: number, y: number) => {
|
|
191
|
+
x: number;
|
|
192
|
+
y: number;
|
|
193
|
+
};
|
|
194
|
+
declare const subtractPoints: (a: Point, b: Point) => {
|
|
195
|
+
x: number;
|
|
196
|
+
y: number;
|
|
197
|
+
};
|
|
198
|
+
declare const addPoints: (a: Point, b: Point) => {
|
|
199
|
+
x: number;
|
|
200
|
+
y: number;
|
|
201
|
+
};
|
|
202
|
+
declare function isPoint(v: any): v is Point;
|
|
203
|
+
declare function createRect(r: RectInit): Rect;
|
|
204
|
+
declare function isRect(v: any): v is Rect;
|
|
205
|
+
declare function getRectCenters(v: Rect): {
|
|
206
|
+
top: {
|
|
207
|
+
x: number;
|
|
208
|
+
y: number;
|
|
209
|
+
};
|
|
210
|
+
right: {
|
|
211
|
+
x: number;
|
|
212
|
+
y: number;
|
|
213
|
+
};
|
|
214
|
+
bottom: {
|
|
215
|
+
x: number;
|
|
216
|
+
y: number;
|
|
217
|
+
};
|
|
218
|
+
left: {
|
|
219
|
+
x: number;
|
|
220
|
+
y: number;
|
|
221
|
+
};
|
|
222
|
+
};
|
|
223
|
+
declare function getRectCorners(v: Rect): {
|
|
224
|
+
top: {
|
|
225
|
+
x: number;
|
|
226
|
+
y: number;
|
|
227
|
+
};
|
|
228
|
+
right: {
|
|
229
|
+
x: number;
|
|
230
|
+
y: number;
|
|
231
|
+
};
|
|
232
|
+
bottom: {
|
|
233
|
+
x: number;
|
|
234
|
+
y: number;
|
|
235
|
+
};
|
|
236
|
+
left: {
|
|
237
|
+
x: number;
|
|
238
|
+
y: number;
|
|
239
|
+
};
|
|
240
|
+
};
|
|
241
|
+
declare function getRectEdges(v: Rect): {
|
|
242
|
+
top: RectEdge;
|
|
243
|
+
right: RectEdge;
|
|
244
|
+
bottom: RectEdge;
|
|
245
|
+
left: RectEdge;
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
type CompassDirection = "n" | "ne" | "e" | "se" | "s" | "sw" | "w" | "nw";
|
|
249
|
+
|
|
250
|
+
declare function resizeRect(rect: Rect, offset: Point, direction: CompassDirection, opts: ScalingOptions): RectInit;
|
|
251
|
+
|
|
184
252
|
declare function union(...rs: Rect[]): Rect;
|
|
185
253
|
|
|
186
|
-
export { type AlignOptions, type DistanceValue, type ElementRectOptions, type HAlign, type Point, type Rect, type RectCenter, type RectCenters, type RectCorner, type RectCorners, type RectEdge, type RectEdges, type RectInset, type RectPoint, type RectPoints, type RectSide, type
|
|
254
|
+
export { AffineTransform, type AlignOptions, type Bounds, type CenterPoint, type DistanceValue, type ElementRectOptions, type HAlign, type Point, type Rect, type RectCenter, type RectCenters, type RectCorner, type RectCorners, type RectEdge, type RectEdges, type RectInit, type RectInset, type RectPoint, type RectPoints, type RectSide, type ScalingOptions, type Size, type SymmetricRectInset, type VAlign, type WindowRectOptions, addPoints, alignRect, clampPoint, clampSize, closest, closestSideToPoint, closestSideToRect, collisions, constrainRect, contains, containsPoint, containsRect, createPoint, createRect, debugPolygon, distance, distanceBtwEdges, distanceFromPoint, distanceFromRect, expand, fromRange, getElementPolygon, getElementRect, getRectCenters, getRectCorners, getRectEdges, getRectFromPoints, getRotationRect, getViewportRect, getWindowRect, inset, intersection, intersects, isPoint, isPointEqual, isPointInPolygon, isRect, isRectEqual, isSizeEqual, isSymmetric, resizeRect, rotate, shift, shrink, subtractPoints, toRad, union };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
x: number;
|
|
3
|
-
y: number;
|
|
4
|
-
};
|
|
5
|
-
type RectValue = {
|
|
1
|
+
interface Point {
|
|
6
2
|
x: number;
|
|
7
3
|
y: number;
|
|
4
|
+
}
|
|
5
|
+
interface Size {
|
|
8
6
|
width: number;
|
|
9
7
|
height: number;
|
|
10
|
-
}
|
|
8
|
+
}
|
|
9
|
+
interface Bounds {
|
|
10
|
+
minX: number;
|
|
11
|
+
midX: number;
|
|
12
|
+
maxX: number;
|
|
13
|
+
minY: number;
|
|
14
|
+
midY: number;
|
|
15
|
+
maxY: number;
|
|
16
|
+
}
|
|
17
|
+
interface CenterPoint {
|
|
18
|
+
center: Point;
|
|
19
|
+
}
|
|
20
|
+
interface RectInit extends Point, Size {
|
|
21
|
+
}
|
|
22
|
+
interface Rect extends Point, Size, Bounds, CenterPoint {
|
|
23
|
+
}
|
|
11
24
|
type RectSide = "top" | "right" | "bottom" | "left";
|
|
12
25
|
type RectPoint = "top-left" | "top-center" | "top-right" | "right-center" | "left-center" | "bottom-left" | "bottom-right" | "bottom-center" | "center";
|
|
13
26
|
type RectEdge = [Point, Point];
|
|
@@ -24,96 +37,90 @@ type RectCenters = Record<RectCenter, Point> & {
|
|
|
24
37
|
value: RectPoints;
|
|
25
38
|
};
|
|
26
39
|
type RectInset = Partial<Record<RectSide, number>>;
|
|
27
|
-
|
|
40
|
+
interface SymmetricRectInset {
|
|
28
41
|
dx?: number;
|
|
29
42
|
dy?: number;
|
|
30
|
-
}
|
|
43
|
+
}
|
|
44
|
+
interface ScalingOptions {
|
|
45
|
+
scalingOriginMode: "center" | "extent";
|
|
46
|
+
lockAspectRatio: boolean;
|
|
47
|
+
}
|
|
48
|
+
interface AlignOptions {
|
|
49
|
+
h: HAlign;
|
|
50
|
+
v: VAlign;
|
|
51
|
+
}
|
|
52
|
+
type HAlign = "left-inside" | "left-outside" | "center" | "right-inside" | "right-outside";
|
|
53
|
+
type VAlign = "top-inside" | "top-outside" | "center" | "bottom-inside" | "bottom-outside";
|
|
54
|
+
|
|
55
|
+
declare class AffineTransform {
|
|
56
|
+
m00: number;
|
|
57
|
+
m01: number;
|
|
58
|
+
m02: number;
|
|
59
|
+
m10: number;
|
|
60
|
+
m11: number;
|
|
61
|
+
m12: number;
|
|
62
|
+
constructor([m00, m01, m02, m10, m11, m12]?: Iterable<number>);
|
|
63
|
+
applyTo(point: Point): Point;
|
|
64
|
+
prepend(other: AffineTransform): AffineTransform;
|
|
65
|
+
append(other: AffineTransform): AffineTransform;
|
|
66
|
+
get determinant(): number;
|
|
67
|
+
get isInvertible(): boolean;
|
|
68
|
+
invert(): AffineTransform;
|
|
69
|
+
get array(): number[];
|
|
70
|
+
get float32Array(): Float32Array;
|
|
71
|
+
static get identity(): AffineTransform;
|
|
72
|
+
static rotate(theta: number, origin?: Point): AffineTransform;
|
|
73
|
+
rotate: (typeof AffineTransform)["rotate"];
|
|
74
|
+
static scale(sx: number, sy?: number, origin?: Point): AffineTransform;
|
|
75
|
+
scale: (typeof AffineTransform)["scale"];
|
|
76
|
+
static translate(tx: number, ty: number): AffineTransform;
|
|
77
|
+
translate: (typeof AffineTransform)["translate"];
|
|
78
|
+
static multiply(...[first, ...rest]: AffineTransform[]): AffineTransform;
|
|
79
|
+
get a(): number;
|
|
80
|
+
get b(): number;
|
|
81
|
+
get c(): number;
|
|
82
|
+
get d(): number;
|
|
83
|
+
get tx(): number;
|
|
84
|
+
get ty(): number;
|
|
85
|
+
get scaleComponents(): Point;
|
|
86
|
+
get translationComponents(): Point;
|
|
87
|
+
get skewComponents(): Point;
|
|
88
|
+
toString(): string;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
declare function alignRect(a: Rect, ref: Rect, options: AlignOptions): Rect;
|
|
31
92
|
|
|
32
|
-
declare
|
|
93
|
+
declare const clampPoint: (position: Point, size: Size, boundaryRect: RectInit) => {
|
|
33
94
|
x: number;
|
|
34
95
|
y: number;
|
|
96
|
+
};
|
|
97
|
+
declare const clampSize: (size: Size, minSize?: Size, maxSize?: Size) => {
|
|
35
98
|
width: number;
|
|
36
99
|
height: number;
|
|
37
|
-
minX: number;
|
|
38
|
-
minY: number;
|
|
39
|
-
maxX: number;
|
|
40
|
-
maxY: number;
|
|
41
|
-
midX: number;
|
|
42
|
-
midY: number;
|
|
43
|
-
center: {
|
|
44
|
-
x: number;
|
|
45
|
-
y: number;
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
type Rect = ReturnType<typeof createRect>;
|
|
49
|
-
declare function isRect(v: any): v is Rect;
|
|
50
|
-
declare function getRectCenters(v: Rect): {
|
|
51
|
-
top: {
|
|
52
|
-
x: number;
|
|
53
|
-
y: number;
|
|
54
|
-
};
|
|
55
|
-
right: {
|
|
56
|
-
x: number;
|
|
57
|
-
y: number;
|
|
58
|
-
};
|
|
59
|
-
bottom: {
|
|
60
|
-
x: number;
|
|
61
|
-
y: number;
|
|
62
|
-
};
|
|
63
|
-
left: {
|
|
64
|
-
x: number;
|
|
65
|
-
y: number;
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
declare function getRectCorners(v: Rect): {
|
|
69
|
-
top: {
|
|
70
|
-
x: number;
|
|
71
|
-
y: number;
|
|
72
|
-
};
|
|
73
|
-
right: {
|
|
74
|
-
x: number;
|
|
75
|
-
y: number;
|
|
76
|
-
};
|
|
77
|
-
bottom: {
|
|
78
|
-
x: number;
|
|
79
|
-
y: number;
|
|
80
|
-
};
|
|
81
|
-
left: {
|
|
82
|
-
x: number;
|
|
83
|
-
y: number;
|
|
84
|
-
};
|
|
85
|
-
};
|
|
86
|
-
declare function getRectEdges(v: Rect): {
|
|
87
|
-
top: RectEdge;
|
|
88
|
-
right: RectEdge;
|
|
89
|
-
bottom: RectEdge;
|
|
90
|
-
left: RectEdge;
|
|
91
100
|
};
|
|
92
101
|
|
|
93
|
-
declare function alignRect(a: Rect, ref: Rect, options: AlignOptions): Rect;
|
|
94
|
-
type AlignOptions = {
|
|
95
|
-
h: HAlign;
|
|
96
|
-
v: VAlign;
|
|
97
|
-
};
|
|
98
|
-
type HAlign = "left-inside" | "left-outside" | "center" | "right-inside" | "right-outside";
|
|
99
|
-
type VAlign = "top-inside" | "top-outside" | "center" | "bottom-inside" | "bottom-outside";
|
|
100
|
-
|
|
101
102
|
declare function closest(...pts: Point[]): (a: Point) => Point;
|
|
102
103
|
declare function closestSideToRect(ref: Rect, r: Rect): RectSide;
|
|
103
104
|
declare function closestSideToPoint(ref: Rect, p: Point): RectSide;
|
|
104
105
|
|
|
106
|
+
declare const constrainRect: (rect: RectInit, boundary: RectInit) => RectInit;
|
|
107
|
+
|
|
105
108
|
declare function containsPoint(r: Rect, p: Point): boolean;
|
|
106
109
|
declare function containsRect(a: Rect, b: Rect): boolean;
|
|
107
110
|
declare function contains(r: Rect, v: Rect | Point): boolean;
|
|
108
111
|
|
|
109
|
-
|
|
112
|
+
interface DistanceValue extends Point {
|
|
110
113
|
value: number;
|
|
111
|
-
}
|
|
114
|
+
}
|
|
112
115
|
declare function distance(a: Point, b?: Point): number;
|
|
113
116
|
declare function distanceFromPoint(r: Rect, p: Point): DistanceValue;
|
|
114
117
|
declare function distanceFromRect(a: Rect, b: Rect): DistanceValue;
|
|
115
118
|
declare function distanceBtwEdges(a: Rect, b: Rect): Record<RectSide, number>;
|
|
116
119
|
|
|
120
|
+
declare const isSizeEqual: (a: Size, b: Size) => boolean;
|
|
121
|
+
declare const isPointEqual: (a: Point, b: Point) => boolean;
|
|
122
|
+
declare const isRectEqual: (a: RectInit, b: RectInit) => boolean;
|
|
123
|
+
|
|
117
124
|
declare function getElementRect(el: HTMLElement, opts?: ElementRectOptions): Rect;
|
|
118
125
|
type ElementRectOptions = {
|
|
119
126
|
/**
|
|
@@ -154,11 +161,6 @@ declare function getViewportRect(win: Window, opts: WindowRectOptions): {
|
|
|
154
161
|
height: number;
|
|
155
162
|
};
|
|
156
163
|
|
|
157
|
-
declare function getElementPolygon(rectValue: RectValue, placement: string): {
|
|
158
|
-
x: number;
|
|
159
|
-
y: number;
|
|
160
|
-
}[] | undefined;
|
|
161
|
-
|
|
162
164
|
/**
|
|
163
165
|
* Checks if a Rect intersects another Rect
|
|
164
166
|
*/
|
|
@@ -178,9 +180,75 @@ declare function expand(r: Rect, v: number | SymmetricRectInset): Rect;
|
|
|
178
180
|
declare function shrink(r: Rect, v: number | SymmetricRectInset): Rect;
|
|
179
181
|
declare function shift(r: Rect, o: Partial<Point>): Rect;
|
|
180
182
|
|
|
183
|
+
declare function getElementPolygon(rectValue: RectInit, placement: string): {
|
|
184
|
+
x: number;
|
|
185
|
+
y: number;
|
|
186
|
+
}[] | undefined;
|
|
181
187
|
declare function isPointInPolygon(polygon: Point[], point: Point): boolean;
|
|
182
188
|
declare function debugPolygon(polygon: Point[]): () => void;
|
|
183
189
|
|
|
190
|
+
declare const createPoint: (x: number, y: number) => {
|
|
191
|
+
x: number;
|
|
192
|
+
y: number;
|
|
193
|
+
};
|
|
194
|
+
declare const subtractPoints: (a: Point, b: Point) => {
|
|
195
|
+
x: number;
|
|
196
|
+
y: number;
|
|
197
|
+
};
|
|
198
|
+
declare const addPoints: (a: Point, b: Point) => {
|
|
199
|
+
x: number;
|
|
200
|
+
y: number;
|
|
201
|
+
};
|
|
202
|
+
declare function isPoint(v: any): v is Point;
|
|
203
|
+
declare function createRect(r: RectInit): Rect;
|
|
204
|
+
declare function isRect(v: any): v is Rect;
|
|
205
|
+
declare function getRectCenters(v: Rect): {
|
|
206
|
+
top: {
|
|
207
|
+
x: number;
|
|
208
|
+
y: number;
|
|
209
|
+
};
|
|
210
|
+
right: {
|
|
211
|
+
x: number;
|
|
212
|
+
y: number;
|
|
213
|
+
};
|
|
214
|
+
bottom: {
|
|
215
|
+
x: number;
|
|
216
|
+
y: number;
|
|
217
|
+
};
|
|
218
|
+
left: {
|
|
219
|
+
x: number;
|
|
220
|
+
y: number;
|
|
221
|
+
};
|
|
222
|
+
};
|
|
223
|
+
declare function getRectCorners(v: Rect): {
|
|
224
|
+
top: {
|
|
225
|
+
x: number;
|
|
226
|
+
y: number;
|
|
227
|
+
};
|
|
228
|
+
right: {
|
|
229
|
+
x: number;
|
|
230
|
+
y: number;
|
|
231
|
+
};
|
|
232
|
+
bottom: {
|
|
233
|
+
x: number;
|
|
234
|
+
y: number;
|
|
235
|
+
};
|
|
236
|
+
left: {
|
|
237
|
+
x: number;
|
|
238
|
+
y: number;
|
|
239
|
+
};
|
|
240
|
+
};
|
|
241
|
+
declare function getRectEdges(v: Rect): {
|
|
242
|
+
top: RectEdge;
|
|
243
|
+
right: RectEdge;
|
|
244
|
+
bottom: RectEdge;
|
|
245
|
+
left: RectEdge;
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
type CompassDirection = "n" | "ne" | "e" | "se" | "s" | "sw" | "w" | "nw";
|
|
249
|
+
|
|
250
|
+
declare function resizeRect(rect: Rect, offset: Point, direction: CompassDirection, opts: ScalingOptions): RectInit;
|
|
251
|
+
|
|
184
252
|
declare function union(...rs: Rect[]): Rect;
|
|
185
253
|
|
|
186
|
-
export { type AlignOptions, type DistanceValue, type ElementRectOptions, type HAlign, type Point, type Rect, type RectCenter, type RectCenters, type RectCorner, type RectCorners, type RectEdge, type RectEdges, type RectInset, type RectPoint, type RectPoints, type RectSide, type
|
|
254
|
+
export { AffineTransform, type AlignOptions, type Bounds, type CenterPoint, type DistanceValue, type ElementRectOptions, type HAlign, type Point, type Rect, type RectCenter, type RectCenters, type RectCorner, type RectCorners, type RectEdge, type RectEdges, type RectInit, type RectInset, type RectPoint, type RectPoints, type RectSide, type ScalingOptions, type Size, type SymmetricRectInset, type VAlign, type WindowRectOptions, addPoints, alignRect, clampPoint, clampSize, closest, closestSideToPoint, closestSideToRect, collisions, constrainRect, contains, containsPoint, containsRect, createPoint, createRect, debugPolygon, distance, distanceBtwEdges, distanceFromPoint, distanceFromRect, expand, fromRange, getElementPolygon, getElementRect, getRectCenters, getRectCorners, getRectEdges, getRectFromPoints, getRotationRect, getViewportRect, getWindowRect, inset, intersection, intersects, isPoint, isPointEqual, isPointInPolygon, isRect, isRectEqual, isSizeEqual, isSymmetric, resizeRect, rotate, shift, shrink, subtractPoints, toRad, union };
|