@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.
@@ -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
@@ -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
@@ -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
@@ -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,7 @@
1
+ export * from './box.js';
2
+ export * from './css.js';
3
+ export * from './DomEventProxy.js';
4
+ export * from './grid.js';
5
+ export * from './math.js';
6
+ export * from './point.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -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
@@ -0,0 +1,7 @@
1
+ export * from './box.js';
2
+ export * from './css.js';
3
+ export * from './DomEventProxy.js';
4
+ export * from './grid.js';
5
+ export * from './math.js';
6
+ export * from './point.js';
7
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export declare function clamp(value: number, min: number, max: number): number;
2
+ //# sourceMappingURL=math.d.ts.map
@@ -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
@@ -0,0 +1,4 @@
1
+ export function clamp(value, min, max) {
2
+ return Math.max(min, Math.min(max, value));
3
+ }
4
+ //# sourceMappingURL=math.js.map
@@ -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
@@ -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",
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
- ".": "./src/index.ts",
10
- "./src": "./src/index.ts"
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
  }
package/tsconfig.json DELETED
@@ -1,15 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "include": [
4
- "**/*.ts"
5
- ],
6
- "compilerOptions": {
7
- "rootDir": "src",
8
- "lib": [
9
- "ES2022",
10
- "DOM",
11
- "DOM.Iterable"
12
- ],
13
- "noEmit": true
14
- }
15
- }