@nightshadeui/util 2.12.3 → 2.12.6
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/out/DomEventProxy.d.ts +10 -0
- package/out/DomEventProxy.d.ts.map +1 -0
- package/out/DomEventProxy.js +17 -0
- package/out/DomEventProxy.js.map +1 -0
- package/out/box.d.ts +13 -0
- package/out/box.d.ts.map +1 -0
- package/out/box.js +58 -0
- package/out/box.js.map +1 -0
- package/out/css.d.ts +4 -0
- package/out/css.d.ts.map +1 -0
- package/out/css.js +25 -0
- package/out/css.js.map +1 -0
- package/out/grid.d.ts +3 -0
- package/out/grid.d.ts.map +1 -0
- package/out/grid.js +55 -0
- package/out/grid.js.map +1 -0
- package/out/index.d.ts +7 -0
- package/out/index.d.ts.map +1 -0
- package/out/index.js +7 -0
- package/out/index.js.map +1 -0
- package/out/math.d.ts +2 -0
- package/out/math.d.ts.map +1 -0
- package/out/math.js +4 -0
- package/out/math.js.map +1 -0
- package/out/point.d.ts +11 -0
- package/out/point.d.ts.map +1 -0
- package/out/point.js +35 -0
- package/out/point.js.map +1 -0
- package/package.json +19 -3
- package/tsconfig.json +0 -15
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type Listener = EventListenerOrEventListenerObject;
|
|
2
|
+
export declare class DomEventProxy {
|
|
3
|
+
private target;
|
|
4
|
+
private entries;
|
|
5
|
+
constructor(target: EventTarget);
|
|
6
|
+
add(type: string, listener: Listener, options?: AddEventListenerOptions | boolean): void;
|
|
7
|
+
removeAll(): void;
|
|
8
|
+
}
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=DomEventProxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DomEventProxy.d.ts","sourceRoot":"","sources":["../src/DomEventProxy.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,GAAG,kCAAkC,CAAC;AAQnD,qBAAa,aAAa;IAIV,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,OAAO,CAAe;gBAEV,MAAM,EAAE,WAAW;IAEvC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO;IAKjF,SAAS;CAOZ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export class DomEventProxy {
|
|
2
|
+
constructor(target) {
|
|
3
|
+
this.target = target;
|
|
4
|
+
this.entries = [];
|
|
5
|
+
}
|
|
6
|
+
add(type, listener, options) {
|
|
7
|
+
this.target.addEventListener(type, listener, options);
|
|
8
|
+
this.entries.push({ type, listener, options });
|
|
9
|
+
}
|
|
10
|
+
removeAll() {
|
|
11
|
+
for (const entry of this.entries) {
|
|
12
|
+
this.target.removeEventListener(entry.type, entry.listener, entry.options);
|
|
13
|
+
}
|
|
14
|
+
this.entries = [];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=DomEventProxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DomEventProxy.js","sourceRoot":"","sources":["../src/DomEventProxy.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,aAAa;IAItB,YAAoB,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;QAF/B,YAAO,GAAY,EAAE,CAAC;IAEY,CAAC;IAE3C,GAAG,CAAC,IAAY,EAAE,QAAkB,EAAE,OAA2C;QAC7E,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,SAAS;QACL,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;CAEJ"}
|
package/out/box.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Point } from './point.js';
|
|
2
|
+
export type Box = [Point, Point];
|
|
3
|
+
export declare function boxFromPoints(a: Point, b: Point): Box;
|
|
4
|
+
export declare function boxOverlap(a: Box, b: Box): boolean;
|
|
5
|
+
export declare function boxContains(box: Box, point: Point): boolean;
|
|
6
|
+
export declare function boxCovers(boundingBox: Box, box: Box): boolean;
|
|
7
|
+
export declare function boxEquals(a: Box, b: Box): boolean;
|
|
8
|
+
export declare function boxScale(box: Box, scale: number): Box;
|
|
9
|
+
export declare function boxCenter(box: Box): Point;
|
|
10
|
+
export declare function boundingBox(a: Box, b: Box): Box;
|
|
11
|
+
export declare function boxArea(box: Box): number;
|
|
12
|
+
export declare function clampPointToBox(point: Point, box: Box): Point;
|
|
13
|
+
//# sourceMappingURL=box.d.ts.map
|
package/out/box.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../src/box.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAA2B,MAAM,YAAY,CAAC;AAEjE,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEjC,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG,CAIrD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAKlD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAE3D;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAI7D;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,WAEvC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,OAE/C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,CAMzC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAW/C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,UAI/B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,KAAK,CAK7D"}
|
package/out/box.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { clamp } from './math.js';
|
|
2
|
+
import { pointsEqual, scalePoint } from './point.js';
|
|
3
|
+
export function boxFromPoints(a, b) {
|
|
4
|
+
const min = { x: Math.min(a.x, b.x), y: Math.min(a.y, b.y) };
|
|
5
|
+
const max = { x: Math.max(a.x, b.x), y: Math.max(a.y, b.y) };
|
|
6
|
+
return [min, max];
|
|
7
|
+
}
|
|
8
|
+
export function boxOverlap(a, b) {
|
|
9
|
+
// https://stackoverflow.com/questions/20925818/algorithm-to-check-if-two-boxes-overlap
|
|
10
|
+
const xOverlap = a[1].x >= b[0].x && b[1].x >= a[0].x;
|
|
11
|
+
const yOverlap = a[1].y >= b[0].y && b[1].y >= a[0].y;
|
|
12
|
+
return xOverlap && yOverlap;
|
|
13
|
+
}
|
|
14
|
+
export function boxContains(box, point) {
|
|
15
|
+
return boxOverlap(box, [point, point]);
|
|
16
|
+
}
|
|
17
|
+
export function boxCovers(boundingBox, box) {
|
|
18
|
+
const [a, b] = boundingBox;
|
|
19
|
+
const [c, d] = box;
|
|
20
|
+
return a.x <= c.x && a.y <= c.y && b.x >= d.x && b.y >= d.y;
|
|
21
|
+
}
|
|
22
|
+
export function boxEquals(a, b) {
|
|
23
|
+
return pointsEqual(a[0], b[0]) && pointsEqual(a[1], b[1]);
|
|
24
|
+
}
|
|
25
|
+
export function boxScale(box, scale) {
|
|
26
|
+
return boxFromPoints(scalePoint(box[0], scale), scalePoint(box[1], scale));
|
|
27
|
+
}
|
|
28
|
+
export function boxCenter(box) {
|
|
29
|
+
const [min, max] = box;
|
|
30
|
+
return {
|
|
31
|
+
x: (max.x - min.x) * .5 + min.x,
|
|
32
|
+
y: (max.y - min.y) * .5 + min.y,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function boundingBox(a, b) {
|
|
36
|
+
return [
|
|
37
|
+
{
|
|
38
|
+
x: Math.min(a[0].x, b[0].x),
|
|
39
|
+
y: Math.min(a[0].y, b[0].y),
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
x: Math.max(a[1].x, b[1].x),
|
|
43
|
+
y: Math.max(a[1].y, b[1].y),
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
export function boxArea(box) {
|
|
48
|
+
const a = Math.abs(box[0].x - box[1].x);
|
|
49
|
+
const b = Math.abs(box[0].y - box[1].y);
|
|
50
|
+
return a * b;
|
|
51
|
+
}
|
|
52
|
+
export function clampPointToBox(point, box) {
|
|
53
|
+
return {
|
|
54
|
+
x: clamp(point.x, box[0].x, box[1].x),
|
|
55
|
+
y: clamp(point.y, box[0].y, box[1].y),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=box.js.map
|
package/out/box.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"box.js","sourceRoot":"","sources":["../src/box.ts"],"names":[],"mappings":"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"}
|
package/out/css.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function getCssVar(el: HTMLElement | null | undefined, name: string, fallback: string): string;
|
|
2
|
+
export declare function getCssVarNumber(el: HTMLElement | null | undefined, name: string, fallback: number): number;
|
|
3
|
+
export declare function getCssColorVar(el: HTMLElement | null | undefined, name: string, fallback: string): string;
|
|
4
|
+
//# sourceMappingURL=css.d.ts.map
|
package/out/css.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../src/css.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAI3F;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAIjG;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAahG"}
|
package/out/css.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export function getCssVar(el, name, fallback) {
|
|
2
|
+
const root = el ?? document.documentElement;
|
|
3
|
+
const value = getComputedStyle(root).getPropertyValue(name).trim();
|
|
4
|
+
return value || fallback;
|
|
5
|
+
}
|
|
6
|
+
export function getCssVarNumber(el, name, fallback) {
|
|
7
|
+
const raw = getCssVar(el, name, String(fallback));
|
|
8
|
+
const parsed = Number(raw.replace(/px|em|%|vh|vw/g, ''));
|
|
9
|
+
return Number.isFinite(parsed) ? parsed : fallback;
|
|
10
|
+
}
|
|
11
|
+
export function getCssColorVar(el, name, fallback) {
|
|
12
|
+
const root = el ?? document.documentElement;
|
|
13
|
+
const value = getCssVar(el, name, fallback);
|
|
14
|
+
const probe = document.createElement('span');
|
|
15
|
+
probe.style.position = 'absolute';
|
|
16
|
+
probe.style.visibility = 'hidden';
|
|
17
|
+
probe.style.pointerEvents = 'none';
|
|
18
|
+
probe.style.color = fallback;
|
|
19
|
+
probe.style.color = value;
|
|
20
|
+
root.appendChild(probe);
|
|
21
|
+
const resolved = getComputedStyle(probe).color.trim();
|
|
22
|
+
probe.remove();
|
|
23
|
+
return resolved || fallback;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=css.js.map
|
package/out/css.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.js","sourceRoot":"","sources":["../src/css.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,EAAkC,EAAE,IAAY,EAAE,QAAgB;IACxF,MAAM,IAAI,GAAG,EAAE,IAAI,QAAQ,CAAC,eAAe,CAAC;IAC5C,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAkC,EAAE,IAAY,EAAE,QAAgB;IAC9F,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAkC,EAAE,IAAY,EAAE,QAAgB;IAC7F,MAAM,IAAI,GAAG,EAAE,IAAI,QAAQ,CAAC,eAAe,CAAC;IAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IAClC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;IAClC,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;IACnC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC;IAC7B,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACxB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACtD,KAAK,CAAC,MAAM,EAAE,CAAC;IACf,OAAO,QAAQ,IAAI,QAAQ,CAAC;AAChC,CAAC"}
|
package/out/grid.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function createGridLinesSvg(cellSize: number, subdivisions: number, majorColor: string, minorColor: string): string;
|
|
2
|
+
export declare function createGridDotsSvg(cellSize: number, subdivisions: number, majorColor: string, majorRadius: number | undefined, minorColor: string, minorRadius?: number): string;
|
|
3
|
+
//# sourceMappingURL=grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../src/grid.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAC9B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,UAwBrB;AAED,wBAAgB,iBAAiB,CAC7B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,oBAAI,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,SAAI,UA8BlB"}
|
package/out/grid.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export function createGridLinesSvg(cellSize, subdivisions, majorColor, minorColor) {
|
|
2
|
+
const subdivCoords = getSubdivCoords(cellSize, subdivisions)
|
|
3
|
+
.map(_ => _ + 1);
|
|
4
|
+
const lines = [
|
|
5
|
+
`<svg xmlns="http://www.w3.org/2000/svg"
|
|
6
|
+
width="${cellSize}"
|
|
7
|
+
height="${cellSize}"
|
|
8
|
+
viewBox="0 0 ${cellSize} ${cellSize}">`
|
|
9
|
+
];
|
|
10
|
+
// Minor lines
|
|
11
|
+
for (const c of subdivCoords) {
|
|
12
|
+
lines.push(`<path d="M0,${c} H ${cellSize}" stroke="${minorColor}" stroke-width="1"/>`);
|
|
13
|
+
lines.push(`<path d="M${c},0 V ${cellSize}" stroke="${minorColor}" stroke-width="1"/>`);
|
|
14
|
+
}
|
|
15
|
+
// Major lines
|
|
16
|
+
lines.push(`<path d="M0,1 H ${cellSize}" stroke="${majorColor}" stroke-width="1"/>`);
|
|
17
|
+
lines.push(`<path d="M1,0 V ${cellSize}" stroke="${majorColor}" stroke-width="1"/>`);
|
|
18
|
+
lines.push('</svg>');
|
|
19
|
+
return lines.join('');
|
|
20
|
+
}
|
|
21
|
+
export function createGridDotsSvg(cellSize, subdivisions, majorColor, majorRadius = 2, minorColor, minorRadius = 1) {
|
|
22
|
+
const minorCoords = [0, ...getSubdivCoords(cellSize, subdivisions), cellSize];
|
|
23
|
+
const majorCoords = [0, cellSize];
|
|
24
|
+
const lines = [
|
|
25
|
+
`<svg xmlns="http://www.w3.org/2000/svg"
|
|
26
|
+
width="${cellSize}"
|
|
27
|
+
height="${cellSize}"
|
|
28
|
+
viewBox="0 0 ${cellSize} ${cellSize}">`,
|
|
29
|
+
];
|
|
30
|
+
if (minorRadius) {
|
|
31
|
+
for (const x of minorCoords) {
|
|
32
|
+
for (const y of minorCoords) {
|
|
33
|
+
lines.push(`<circle cx="${x}" cy="${y}" r="${minorRadius}" fill="${minorColor}"/>`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (majorRadius) {
|
|
38
|
+
for (const x of majorCoords) {
|
|
39
|
+
for (const y of majorCoords) {
|
|
40
|
+
lines.push(`<circle cx="${x}" cy="${y}" r="${majorRadius}" fill="${majorColor}"/>`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
lines.push('</svg>');
|
|
45
|
+
return lines.join('');
|
|
46
|
+
}
|
|
47
|
+
function getSubdivCoords(cellSize, subdivisions) {
|
|
48
|
+
const subdivCoords = [];
|
|
49
|
+
const k = Math.round(cellSize / subdivisions);
|
|
50
|
+
for (let i = 1; i < subdivisions; i++) {
|
|
51
|
+
subdivCoords.push(k * i);
|
|
52
|
+
}
|
|
53
|
+
return subdivCoords;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=grid.js.map
|
package/out/grid.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid.js","sourceRoot":"","sources":["../src/grid.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAC9B,QAAgB,EAChB,YAAoB,EACpB,UAAkB,EAClB,UAAkB;IAElB,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC;SACvD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,MAAM,KAAK,GAAG;QACV;iBACS,QAAQ;kBACP,QAAQ;uBACH,QAAQ,IAAI,QAAQ,IAAI;KAC1C,CAAC;IACF,cAAc;IACd,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CACN,eAAe,CAAC,MAAM,QAAQ,aAAa,UAAU,sBAAsB,CAC9E,CAAC;QACF,KAAK,CAAC,IAAI,CACN,aAAa,CAAC,QAAQ,QAAQ,aAAa,UAAU,sBAAsB,CAC9E,CAAC;IACN,CAAC;IACD,cAAc;IACd,KAAK,CAAC,IAAI,CAAC,mBAAmB,QAAQ,aAAa,UAAU,sBAAsB,CAAC,CAAC;IACrF,KAAK,CAAC,IAAI,CAAC,mBAAmB,QAAQ,aAAa,UAAU,sBAAsB,CAAC,CAAC;IACrF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC7B,QAAgB,EAChB,YAAoB,EACpB,UAAkB,EAClB,WAAW,GAAG,CAAC,EACf,UAAkB,EAClB,WAAW,GAAG,CAAC;IAEf,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,GAAG,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG;QACV;iBACS,QAAQ;kBACP,QAAQ;uBACH,QAAQ,IAAI,QAAQ,IAAI;KAC1C,CAAC;IACF,IAAI,WAAW,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC1B,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CACN,eAAe,CAAC,SAAS,CAAC,QAAQ,WAAW,WAAW,UAAU,KAAK,CAC1E,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC1B,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CACN,eAAe,CAAC,SAAS,CAAC,QAAQ,WAAW,WAAW,UAAU,KAAK,CAC1E,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,YAAoB;IAC3D,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC"}
|
package/out/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
|
package/out/index.js
ADDED
package/out/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
|
package/out/math.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAE5D"}
|
package/out/math.js
ADDED
package/out/math.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACzD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC"}
|
package/out/point.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface Point {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
}
|
|
5
|
+
export declare function pointsEqual(a: Point, b: Point, threshold?: number): boolean;
|
|
6
|
+
export declare function clonePoint(point: Point): Point;
|
|
7
|
+
export declare function addPoints(a: Point, b: Point): Point;
|
|
8
|
+
export declare function subtractPoints(a: Point, b: Point): Point;
|
|
9
|
+
export declare function scalePoint(p: Point, fac: number): Point;
|
|
10
|
+
export declare function normalizePoint(p: Point): Point;
|
|
11
|
+
//# sourceMappingURL=point.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"point.d.ts","sourceRoot":"","sources":["../src/point.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,SAAI,WAE5D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE9C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAKnD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAKxD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAKvD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAS9C"}
|
package/out/point.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export function pointsEqual(a, b, threshold = 0) {
|
|
2
|
+
return Math.abs(a.x - b.x) <= threshold && Math.abs(a.y - b.y) <= threshold;
|
|
3
|
+
}
|
|
4
|
+
export function clonePoint(point) {
|
|
5
|
+
return { x: point.x, y: point.y };
|
|
6
|
+
}
|
|
7
|
+
export function addPoints(a, b) {
|
|
8
|
+
return {
|
|
9
|
+
x: a.x + b.x,
|
|
10
|
+
y: a.y + b.y,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function subtractPoints(a, b) {
|
|
14
|
+
return {
|
|
15
|
+
x: a.x - b.x,
|
|
16
|
+
y: a.y - b.y,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function scalePoint(p, fac) {
|
|
20
|
+
return {
|
|
21
|
+
x: p.x * fac,
|
|
22
|
+
y: p.y * fac,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function normalizePoint(p) {
|
|
26
|
+
const l = Math.hypot(p.x, p.y);
|
|
27
|
+
if (l === 0) {
|
|
28
|
+
return { x: 0, y: 0 };
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
x: p.x / l,
|
|
32
|
+
y: p.y / l,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=point.js.map
|
package/out/point.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"point.js","sourceRoot":"","sources":["../src/point.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,WAAW,CAAC,CAAQ,EAAE,CAAQ,EAAE,SAAS,GAAG,CAAC;IACzD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAY;IACnC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAQ,EAAE,CAAQ;IACxC,OAAO;QACH,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACZ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACf,CAAC;AACN,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAQ,EAAE,CAAQ;IAC7C,OAAO;QACH,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACZ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACf,CAAC;AACN,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAQ,EAAE,GAAW;IAC5C,OAAO;QACH,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;QACZ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;KACf,CAAC;AACN,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAQ;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACV,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO;QACH,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACV,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;KACb,CAAC;AACN,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nightshadeui/util",
|
|
3
|
-
"version": "2.12.
|
|
3
|
+
"version": "2.12.6",
|
|
4
4
|
"description": "Shared utility helpers for Nightshade packages",
|
|
5
5
|
"author": "Boris Okunskiy",
|
|
6
6
|
"license": "ISC",
|
|
7
|
+
"type": "module",
|
|
7
8
|
"sideEffects": false,
|
|
8
9
|
"exports": {
|
|
9
|
-
".":
|
|
10
|
-
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./out/index.d.ts",
|
|
12
|
+
"import": "./out/index.js",
|
|
13
|
+
"default": "./out/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./src": {
|
|
16
|
+
"types": "./src/index.ts",
|
|
17
|
+
"import": "./src/index.ts",
|
|
18
|
+
"default": "./src/index.ts"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"out",
|
|
23
|
+
"src"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "tsc -b"
|
|
11
27
|
}
|
|
12
28
|
}
|