canvas2d-wrapper 2.2.2 → 2.3.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/Canvas2D.js +122 -158
- package/dist/collisions/collideElement.js +64 -61
- package/dist/collisions/lineWithLine.js +9 -6
- package/dist/collisions/pointInCircle.js +5 -5
- package/dist/collisions/pointInPolygon.js +18 -20
- package/dist/collisions/pointInRectangle.js +10 -10
- package/dist/collisions/pointOnLinePath.js +23 -44
- package/dist/events/computeEventPositions.js +13 -6
- package/dist/events/elementClick.js +13 -17
- package/dist/events/elementRightClick.js +15 -12
- package/dist/events/mouseMove.js +23 -36
- package/dist/events/mouseWheel.js +10 -9
- package/dist/functions/calcRatioForMinimap.js +14 -14
- package/dist/functions/calcTileSize.js +5 -5
- package/dist/functions/preloadImages.js +5 -6
- package/dist/functions/sortElements.js +13 -17
- package/dist/generateTestData.js +46 -47
- package/dist/hooks/useGamepad.js +8 -12
- package/dist/hooks/useKeyboard.js +18 -18
- package/dist/hooks/useMousePosition.js +25 -24
- package/dist/hooks/useWindowDimensions.js +17 -17
- package/dist/{main.d.ts → lib/main.d.ts} +2 -1
- package/dist/lib/render/renderText.d.ts +2 -0
- package/dist/lib/shapes/Text.d.ts +38 -0
- package/dist/main.js +22 -42
- package/dist/maths/getLineLength.js +6 -6
- package/dist/maths/normalOnLine.js +9 -6
- package/dist/maths/segmentAngle.js +6 -6
- package/dist/render/renderCanvas.js +69 -33
- package/dist/render/renderCircle.js +5 -11
- package/dist/render/renderImage.js +7 -39
- package/dist/render/renderLinePath.js +24 -26
- package/dist/render/renderPolygon.js +7 -17
- package/dist/render/renderRect.js +6 -26
- package/dist/render/renderText.js +7 -0
- package/dist/shapes/CanvasImage.js +22 -37
- package/dist/shapes/CanvasObject.js +24 -26
- package/dist/shapes/Circle.js +12 -24
- package/dist/shapes/ColoredCanvasObject.js +13 -13
- package/dist/shapes/LinePath.js +15 -27
- package/dist/shapes/Polygon.js +12 -22
- package/dist/shapes/Rect.js +14 -28
- package/dist/shapes/Text.js +15 -0
- package/dist/types/Canvas2DProps.js +0 -1
- package/dist/types/Canvas2DState.js +0 -1
- package/dist/types/CollideElementResultItem.js +0 -1
- package/dist/types/Position2D.js +0 -1
- package/dist/types/Surface2D.js +0 -1
- package/package.json +20 -20
- /package/dist/{Canvas2D.d.ts → lib/Canvas2D.d.ts} +0 -0
- /package/dist/{Canvas2D.spec.d.ts → lib/Canvas2D.spec.d.ts} +0 -0
- /package/dist/{collisions → lib/collisions}/collideElement.d.ts +0 -0
- /package/dist/{collisions → lib/collisions}/lineWithLine.d.ts +0 -0
- /package/dist/{collisions → lib/collisions}/pointInCircle.d.ts +0 -0
- /package/dist/{collisions → lib/collisions}/pointInPolygon.d.ts +0 -0
- /package/dist/{collisions → lib/collisions}/pointInRectangle.d.ts +0 -0
- /package/dist/{collisions → lib/collisions}/pointOnLinePath.d.ts +0 -0
- /package/dist/{events → lib/events}/computeEventPositions.d.ts +0 -0
- /package/dist/{events → lib/events}/elementClick.d.ts +0 -0
- /package/dist/{events → lib/events}/elementRightClick.d.ts +0 -0
- /package/dist/{events → lib/events}/mouseMove.d.ts +0 -0
- /package/dist/{events → lib/events}/mouseWheel.d.ts +0 -0
- /package/dist/{functions → lib/functions}/calcRatioForMinimap.d.ts +0 -0
- /package/dist/{functions → lib/functions}/calcTileSize.d.ts +0 -0
- /package/dist/{functions → lib/functions}/preloadImages.d.ts +0 -0
- /package/dist/{functions → lib/functions}/sortElements.d.ts +0 -0
- /package/dist/{generateTestData.d.ts → lib/generateTestData.d.ts} +0 -0
- /package/dist/{hooks → lib/hooks}/useGamepad.d.ts +0 -0
- /package/dist/{hooks → lib/hooks}/useKeyboard.d.ts +0 -0
- /package/dist/{hooks → lib/hooks}/useMousePosition.d.ts +0 -0
- /package/dist/{hooks → lib/hooks}/useWindowDimensions.d.ts +0 -0
- /package/dist/{maths → lib/maths}/getLineLength.d.ts +0 -0
- /package/dist/{maths → lib/maths}/normalOnLine.d.ts +0 -0
- /package/dist/{maths → lib/maths}/segmentAngle.d.ts +0 -0
- /package/dist/{render → lib/render}/renderCanvas.d.ts +0 -0
- /package/dist/{render → lib/render}/renderCircle.d.ts +0 -0
- /package/dist/{render → lib/render}/renderImage.d.ts +0 -0
- /package/dist/{render → lib/render}/renderLinePath.d.ts +0 -0
- /package/dist/{render → lib/render}/renderPolygon.d.ts +0 -0
- /package/dist/{render → lib/render}/renderRect.d.ts +0 -0
- /package/dist/{shapes → lib/shapes}/CanvasImage.d.ts +0 -0
- /package/dist/{shapes → lib/shapes}/CanvasObject.d.ts +0 -0
- /package/dist/{shapes → lib/shapes}/Circle.d.ts +0 -0
- /package/dist/{shapes → lib/shapes}/ColoredCanvasObject.d.ts +0 -0
- /package/dist/{shapes → lib/shapes}/LinePath.d.ts +0 -0
- /package/dist/{shapes → lib/shapes}/Polygon.d.ts +0 -0
- /package/dist/{shapes → lib/shapes}/Rect.d.ts +0 -0
- /package/dist/{types → lib/types}/Canvas2DProps.d.ts +0 -0
- /package/dist/{types → lib/types}/Canvas2DState.d.ts +0 -0
- /package/dist/{types → lib/types}/CollideElementResultItem.d.ts +0 -0
- /package/dist/{types → lib/types}/Position2D.d.ts +0 -0
- /package/dist/{types → lib/types}/Surface2D.d.ts +0 -0
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import e from "../collisions/collideElement.js";
|
|
2
|
+
//#region lib/events/elementRightClick.ts
|
|
3
|
+
function t(t, n, r, i) {
|
|
4
|
+
let a = -i.left - i.deltaLeft + t.pageX - t.target.offsetLeft, o = -i.top - i.deltaTop + t.pageY - t.target.offsetTop, s = e(t, n, a, o, r, i.zoom);
|
|
5
|
+
return s === null ? {
|
|
6
|
+
id: null,
|
|
7
|
+
element: null,
|
|
8
|
+
originalEvent: t,
|
|
9
|
+
posOnMap: {
|
|
10
|
+
x: Math.floor(a / r / i.zoom),
|
|
11
|
+
y: Math.floor(o / r / i.zoom)
|
|
12
|
+
}
|
|
13
|
+
} : s;
|
|
10
14
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { t as default };
|
package/dist/events/mouseMove.js
CHANGED
|
@@ -1,37 +1,24 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
...i,
|
|
23
|
-
prevX: null,
|
|
24
|
-
prevY: null
|
|
25
|
-
});
|
|
26
|
-
}, s);
|
|
27
|
-
} else
|
|
28
|
-
n && n(X(t.nativeEvent, c, a, o, f, e.zoom), d), l = null;
|
|
29
|
-
u({
|
|
30
|
-
...i,
|
|
31
|
-
prevX: t.screenX,
|
|
32
|
-
prevY: t.screenY
|
|
33
|
-
});
|
|
1
|
+
import e from "../collisions/collideElement.js";
|
|
2
|
+
import t from "./computeEventPositions.js";
|
|
3
|
+
//#region lib/events/mouseMove.ts
|
|
4
|
+
var n = 1, r = null, i = 300;
|
|
5
|
+
function a(a, o, s, c, l, u, d, f, p, m) {
|
|
6
|
+
let h = { ...c }, { left: g, top: _, posOnMap: v } = t(c, a, s);
|
|
7
|
+
if (a.nativeEvent.buttons === n && c.prevX) {
|
|
8
|
+
let t = !1;
|
|
9
|
+
f && (r === null && (r = e(a.nativeEvent, o, g, _, s, c.zoom)), r !== null && r.element.draggable && (r.element.x = -c.left - c.deltaLeft + (a.clientX - c.boundingClientRect.left) - (r.element.width ?? 0) / 2, r.element.y = -c.top - c.deltaLeft + (a.clientY - c.boundingClientRect.top) - (r.element.height ?? 0) / 2, t = !0, p && p(r, a.screenX - c.prevX, a.screenY - c.prevY), m && m(null, v))), t || (u || (h.left += a.screenX - c.prevX), d || (h.top += a.screenY - c.prevY)), a.nativeEvent.pointerType !== "mouse" && setTimeout(() => {
|
|
10
|
+
r = null, l({
|
|
11
|
+
...h,
|
|
12
|
+
prevX: null,
|
|
13
|
+
prevY: null
|
|
14
|
+
});
|
|
15
|
+
}, i);
|
|
16
|
+
} else m && m(e(a.nativeEvent, o, g, _, s, c.zoom), v), r = null;
|
|
17
|
+
l({
|
|
18
|
+
...h,
|
|
19
|
+
prevX: a.screenX,
|
|
20
|
+
prevY: a.screenY
|
|
21
|
+
});
|
|
34
22
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
};
|
|
23
|
+
//#endregion
|
|
24
|
+
export { a as default };
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
//#region lib/events/mouseWheel.ts
|
|
2
|
+
var e = .05;
|
|
3
|
+
function t(t, n, r, i, a) {
|
|
4
|
+
let o = n.zoom;
|
|
5
|
+
t.deltaY < 0 ? o += e : o -= e, o = Math.max(o, i), o = Math.min(o, a), r({
|
|
6
|
+
...n,
|
|
7
|
+
zoom: o
|
|
8
|
+
});
|
|
7
9
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
};
|
|
10
|
+
//#endregion
|
|
11
|
+
export { t as default };
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
//#region lib/functions/calcRatioForMinimap.ts
|
|
2
|
+
function e(e, t, n, r, i, a) {
|
|
3
|
+
let o = e.map((e) => {
|
|
4
|
+
let t = e;
|
|
5
|
+
return Array.isArray(t.points) ? t.points.map((e) => e.x * a) : [e.x * a];
|
|
6
|
+
}).flat(), s = Math.min(...o), c = Math.max(...o);
|
|
7
|
+
t = Math.max(2 * c, -2 * s, t);
|
|
8
|
+
let l = e.map((e) => {
|
|
9
|
+
let t = e;
|
|
10
|
+
return Array.isArray(t.points) ? t.points.map((e) => e.y * a) : [e.y * a];
|
|
11
|
+
}).flat(), u = Math.min(...l), d = Math.max(...l);
|
|
12
|
+
return n = Math.max(2 * d, -2 * u, n), Math.max(t / r, n / i);
|
|
12
13
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
};
|
|
14
|
+
//#endregion
|
|
15
|
+
export { e as default };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
//#region lib/functions/preloadImages.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
for (let t of e) __canvas2dWrapper__.imgCache[t] = new Image(), __canvas2dWrapper__.imgCache[t].src = t;
|
|
4
4
|
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
5
|
+
//#endregion
|
|
6
|
+
export { e as default };
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
return 0;
|
|
14
|
-
}), t;
|
|
1
|
+
//#region lib/functions/sortElements.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
return e.sort((e, t) => {
|
|
4
|
+
if (e.zIndex !== t.zIndex) return e.zIndex - t.zIndex;
|
|
5
|
+
if (e.fill === t.fill && e.stroke && t.stroke) return e.stroke === t.stroke ? 0 : e.stroke < t.stroke ? 1 : -1;
|
|
6
|
+
if (e.fill && t.fill) {
|
|
7
|
+
if (e.fill < t.fill) return 1;
|
|
8
|
+
if (e.fill > t.fill) return -1;
|
|
9
|
+
}
|
|
10
|
+
return 0;
|
|
11
|
+
}), e;
|
|
15
12
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { e as default };
|
package/dist/generateTestData.js
CHANGED
|
@@ -1,48 +1,47 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
1
|
+
import e from "./shapes/Circle.js";
|
|
2
|
+
import t from "./shapes/Polygon.js";
|
|
3
|
+
import n from "./shapes/Rect.js";
|
|
4
|
+
//#region lib/generateTestData.ts
|
|
5
|
+
function r() {
|
|
6
|
+
let r = [];
|
|
7
|
+
for (let t = 0; t < 998; t++) {
|
|
8
|
+
let i = null;
|
|
9
|
+
i = Math.random() > .5 ? new n({
|
|
10
|
+
id: t.toString(),
|
|
11
|
+
x: 500 - Math.round(Math.random() * 1e3),
|
|
12
|
+
y: 500 - Math.round(Math.random() * 1e3),
|
|
13
|
+
width: 32,
|
|
14
|
+
height: 32,
|
|
15
|
+
fill: Math.random() > .5 ? "black" : void 0,
|
|
16
|
+
stroke: Math.random() > .5 ? "black" : void 0,
|
|
17
|
+
draggable: !0
|
|
18
|
+
}) : new e({
|
|
19
|
+
id: t.toString(),
|
|
20
|
+
x: 500 - Math.round(Math.random() * 1e3),
|
|
21
|
+
y: 500 - Math.round(Math.random() * 1e3),
|
|
22
|
+
radius: 16,
|
|
23
|
+
fill: Math.random() > .5 ? "black" : void 0,
|
|
24
|
+
stroke: Math.random() > .5 ? "black" : void 0
|
|
25
|
+
}), !i.fill && !i.stroke && (i.fill = "green"), r.push(i);
|
|
26
|
+
}
|
|
27
|
+
let i = [];
|
|
28
|
+
for (let e = 0; e < 5; e++) i.push({
|
|
29
|
+
x: 500 - Math.round(Math.random() * 1e3),
|
|
30
|
+
y: 500 - Math.round(Math.random() * 1e3)
|
|
31
|
+
});
|
|
32
|
+
let a = new t({
|
|
33
|
+
id: "poly",
|
|
34
|
+
points: i,
|
|
35
|
+
stroke: "red"
|
|
36
|
+
});
|
|
37
|
+
r.push(a);
|
|
38
|
+
let o = new t({
|
|
39
|
+
id: "poly",
|
|
40
|
+
points: i,
|
|
41
|
+
fill: "orange",
|
|
42
|
+
zIndex: -1
|
|
43
|
+
});
|
|
44
|
+
return r.push(o), r;
|
|
45
45
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
};
|
|
46
|
+
//#endregion
|
|
47
|
+
export { r as default };
|
package/dist/hooks/useGamepad.js
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
function
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
() => a(navigator.getGamepads()[0]),
|
|
8
|
-
l
|
|
9
|
-
), () => clearInterval(e)), []), t;
|
|
1
|
+
import { useEffect as e, useState as t } from "react";
|
|
2
|
+
//#region lib/hooks/useGamepad.ts
|
|
3
|
+
var n, r = 15;
|
|
4
|
+
function i() {
|
|
5
|
+
let [i, a] = t(null);
|
|
6
|
+
return e(() => (clearInterval(n), n = setInterval(() => a(navigator.getGamepads()[0]), r), () => clearInterval(n)), []), i;
|
|
10
7
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { i as default };
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { useEffect as e, useState as t } from "react";
|
|
2
|
+
//#region lib/hooks/useKeyboard.ts
|
|
3
|
+
function n() {
|
|
4
|
+
let [n, r] = t({});
|
|
5
|
+
return e(() => {
|
|
6
|
+
let e = (e) => {
|
|
7
|
+
n[e.key] = !0, r(JSON.parse(JSON.stringify(n)));
|
|
8
|
+
};
|
|
9
|
+
document.addEventListener("keydown", e);
|
|
10
|
+
let t = (e) => {
|
|
11
|
+
n[e.key] = !1, r(JSON.parse(JSON.stringify(n)));
|
|
12
|
+
};
|
|
13
|
+
return document.addEventListener("keyup", t), () => {
|
|
14
|
+
document.removeEventListener("keydown", e), document.removeEventListener("keyup", t);
|
|
15
|
+
};
|
|
16
|
+
}, []), n;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { n as default };
|
|
@@ -1,25 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
import { useEffect as e, useState as t } from "react";
|
|
2
|
+
//#region lib/hooks/useMousePosition.ts
|
|
3
|
+
function n(n = !0) {
|
|
4
|
+
let [r, i] = t({
|
|
5
|
+
x: null,
|
|
6
|
+
y: null
|
|
7
|
+
});
|
|
8
|
+
return e(() => {
|
|
9
|
+
let e = (e) => {
|
|
10
|
+
let t = e, n, r;
|
|
11
|
+
if (t.touches) {
|
|
12
|
+
let e = t.touches[0];
|
|
13
|
+
[n, r] = [e.clientX, e.clientY];
|
|
14
|
+
} else [n, r] = [t.clientX, t.clientY];
|
|
15
|
+
i({
|
|
16
|
+
x: n,
|
|
17
|
+
y: r
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
return window.addEventListener("mousemove", e), n && window.addEventListener("touchmove", e), () => {
|
|
21
|
+
window.removeEventListener("mousemove", e), n && window.removeEventListener("touchmove", e);
|
|
22
|
+
};
|
|
23
|
+
}, [n]), r;
|
|
22
24
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
};
|
|
25
|
+
//#endregion
|
|
26
|
+
export { n as default };
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { useEffect as e, useState as t } from "react";
|
|
2
|
+
//#region lib/hooks/useWindowDimensions.ts
|
|
3
|
+
function n() {
|
|
4
|
+
let { clientWidth: e, clientHeight: t } = document.documentElement;
|
|
5
|
+
return {
|
|
6
|
+
width: e,
|
|
7
|
+
height: t
|
|
8
|
+
};
|
|
8
9
|
}
|
|
9
10
|
function r() {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
let [r, i] = t(n());
|
|
12
|
+
return e(() => {
|
|
13
|
+
function e() {
|
|
14
|
+
i(n());
|
|
15
|
+
}
|
|
16
|
+
return window.addEventListener("resize", e), () => window.removeEventListener("resize", e);
|
|
17
|
+
}, []), r;
|
|
17
18
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
};
|
|
19
|
+
//#endregion
|
|
20
|
+
export { r as default };
|
|
@@ -18,6 +18,7 @@ import { default as Circle } from './shapes/Circle';
|
|
|
18
18
|
import { default as LinePath } from './shapes/LinePath';
|
|
19
19
|
import { default as Polygon } from './shapes/Polygon';
|
|
20
20
|
import { default as Rect } from './shapes/Rect';
|
|
21
|
+
import { default as Text } from './shapes/Text';
|
|
21
22
|
import { default as Canvas2DProps } from './types/Canvas2DProps';
|
|
22
23
|
import { default as CollideElementResultItem } from './types/CollideElementResultItem';
|
|
23
24
|
import { default as Position2D } from './types/Position2D';
|
|
@@ -30,7 +31,7 @@ declare global {
|
|
|
30
31
|
};
|
|
31
32
|
}
|
|
32
33
|
export { Canvas2D };
|
|
33
|
-
export { CanvasImage, CanvasObject, Circle, LinePath, Polygon, Rect };
|
|
34
|
+
export { CanvasImage, CanvasObject, Circle, LinePath, Polygon, Rect, Text };
|
|
34
35
|
export { lineWithLine, pointInCircle, pointInPolygon, pointInRectangle, pointOnLinePath };
|
|
35
36
|
export { preloadImages };
|
|
36
37
|
export { useGamepad, useKeyboard, useMousePosition, useWindowDimensions };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { default as ColoredCanvasObject } from './ColoredCanvasObject';
|
|
2
|
+
export default class Text extends ColoredCanvasObject {
|
|
3
|
+
text: string;
|
|
4
|
+
maxWidth?: number;
|
|
5
|
+
font?: string;
|
|
6
|
+
/**
|
|
7
|
+
* Represents an Image that will be created on the canvas.
|
|
8
|
+
* Note: a cache to prevent too much loading is implemented, you can create as much
|
|
9
|
+
* images as you want of the same source without any performance issue.
|
|
10
|
+
*
|
|
11
|
+
* @param {string|number} id Identifier (used in click callback)
|
|
12
|
+
* @param {number} x Left coordinate of top-left corner of picture in canvas
|
|
13
|
+
* @param {number} y Top coordinate of top-left corner of picture in canvas
|
|
14
|
+
* @param {number} text Text to show
|
|
15
|
+
* @param {number} maxWidth Maximum width of this text
|
|
16
|
+
* @param {number} font Text font
|
|
17
|
+
* @param {string} fill DOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.fillStyle
|
|
18
|
+
* @param {string} stroke DOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.strokeStyle
|
|
19
|
+
* @param {number} zIndex Stack order of the element
|
|
20
|
+
* @param {boolean} hasCollisions Does the object have collisions ?
|
|
21
|
+
* @param {number} rotation The rotation in radians
|
|
22
|
+
*/
|
|
23
|
+
constructor({ id, x, y, text, maxWidth, font, fill, stroke, zIndex, draggable, hasCollisions }: {
|
|
24
|
+
id: string;
|
|
25
|
+
x: number;
|
|
26
|
+
y: number;
|
|
27
|
+
text: string;
|
|
28
|
+
maxWidth?: number;
|
|
29
|
+
font?: string;
|
|
30
|
+
fill?: string;
|
|
31
|
+
stroke?: string;
|
|
32
|
+
zIndex?: number;
|
|
33
|
+
draggable?: boolean;
|
|
34
|
+
hasCollisions?: boolean;
|
|
35
|
+
rotation?: number;
|
|
36
|
+
});
|
|
37
|
+
get constructorName(): string;
|
|
38
|
+
}
|
package/dist/main.js
CHANGED
|
@@ -1,42 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
w as CanvasImage,
|
|
24
|
-
G as CanvasObject,
|
|
25
|
-
M as Circle,
|
|
26
|
-
q as LinePath,
|
|
27
|
-
B as Polygon,
|
|
28
|
-
F as Rect,
|
|
29
|
-
O as getLineLength,
|
|
30
|
-
r as lineWithLine,
|
|
31
|
-
D as normalOnLine,
|
|
32
|
-
s as pointInCircle,
|
|
33
|
-
n as pointInPolygon,
|
|
34
|
-
p as pointInRectangle,
|
|
35
|
-
d as pointOnLinePath,
|
|
36
|
-
i as preloadImages,
|
|
37
|
-
W as segmentAngle,
|
|
38
|
-
L as useGamepad,
|
|
39
|
-
C as useKeyboard,
|
|
40
|
-
P as useMousePosition,
|
|
41
|
-
v as useWindowDimensions
|
|
42
|
-
};
|
|
1
|
+
import e from "./collisions/pointInCircle.js";
|
|
2
|
+
import t from "./collisions/pointInPolygon.js";
|
|
3
|
+
import n from "./collisions/pointInRectangle.js";
|
|
4
|
+
import r from "./collisions/pointOnLinePath.js";
|
|
5
|
+
import i from "./shapes/CanvasObject.js";
|
|
6
|
+
import a from "./shapes/CanvasImage.js";
|
|
7
|
+
import o from "./shapes/Circle.js";
|
|
8
|
+
import s from "./shapes/LinePath.js";
|
|
9
|
+
import c from "./shapes/Polygon.js";
|
|
10
|
+
import l from "./shapes/Rect.js";
|
|
11
|
+
import u from "./shapes/Text.js";
|
|
12
|
+
import d from "./Canvas2D.js";
|
|
13
|
+
import f from "./collisions/lineWithLine.js";
|
|
14
|
+
import p from "./functions/preloadImages.js";
|
|
15
|
+
import m from "./hooks/useGamepad.js";
|
|
16
|
+
import h from "./hooks/useKeyboard.js";
|
|
17
|
+
import g from "./hooks/useMousePosition.js";
|
|
18
|
+
import _ from "./hooks/useWindowDimensions.js";
|
|
19
|
+
import v from "./maths/getLineLength.js";
|
|
20
|
+
import y from "./maths/normalOnLine.js";
|
|
21
|
+
import b from "./maths/segmentAngle.js";
|
|
22
|
+
export { d as Canvas2D, a as CanvasImage, i as CanvasObject, o as Circle, s as LinePath, c as Polygon, l as Rect, u as Text, v as getLineLength, f as lineWithLine, y as normalOnLine, e as pointInCircle, t as pointInPolygon, n as pointInRectangle, r as pointOnLinePath, p as preloadImages, b as segmentAngle, m as useGamepad, h as useKeyboard, g as useMousePosition, _ as useWindowDimensions };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
//#region lib/maths/getLineLength.ts
|
|
2
|
+
function e(e, t) {
|
|
3
|
+
let n = t.x - e.x, r = t.y - e.y;
|
|
4
|
+
return Math.sqrt(n * n + r * r);
|
|
4
5
|
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
6
|
+
//#endregion
|
|
7
|
+
export { e as default };
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
//#region lib/maths/normalOnLine.ts
|
|
2
|
+
function e(e, t, n = !1) {
|
|
3
|
+
let r = t.x - e.x, i = t.y - e.y, a = Math.hypot(r, i), o = r / a, s = i / a;
|
|
4
|
+
return {
|
|
5
|
+
x: n ? s : -s,
|
|
6
|
+
y: n ? -o : o
|
|
7
|
+
};
|
|
4
8
|
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
9
|
+
//#endregion
|
|
10
|
+
export { e as default };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
//#region lib/maths/segmentAngle.ts
|
|
2
|
+
function e(e, t) {
|
|
3
|
+
let n = t.x - e.x, r = t.y - e.y;
|
|
4
|
+
return n === 0 && r === 0 ? 0 : Math.atan2(r, n) + Math.PI / 2;
|
|
4
5
|
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
6
|
+
//#endregion
|
|
7
|
+
export { e as default };
|