canvas2d-wrapper 1.14.0 → 2.0.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.d.ts +3 -0
- package/dist/Canvas2D.js +158 -0
- package/dist/Canvas2D.spec.d.ts +0 -0
- package/dist/Canvas2D.spec.js +38101 -0
- package/dist/assets/Canvas2D.css +1 -0
- package/dist/collisions/collideElement.d.ts +3 -0
- package/dist/collisions/collideElement.js +53 -0
- package/dist/collisions/inCircle.d.ts +3 -0
- package/dist/collisions/inCircle.js +6 -0
- package/dist/collisions/inPoly.d.ts +2 -0
- package/dist/collisions/inPoly.js +20 -0
- package/dist/collisions/inRect.d.ts +2 -0
- package/dist/collisions/inRect.js +12 -0
- package/dist/collisions/onLinePath.d.ts +2 -0
- package/dist/collisions/onLinePath.js +45 -0
- package/dist/events/computeEventPositions.d.ts +9 -0
- package/dist/events/computeEventPositions.js +7 -0
- package/dist/events/elementClick.d.ts +4 -0
- package/dist/events/elementClick.js +18 -0
- package/dist/events/elementRightClick.d.ts +4 -0
- package/dist/events/elementRightClick.js +13 -0
- package/dist/events/mouseMove.d.ts +5 -0
- package/dist/events/mouseMove.js +37 -0
- package/dist/events/mouseWheel.d.ts +2 -0
- package/dist/events/mouseWheel.js +10 -0
- package/dist/functions/calcRatioForMinimap.d.ts +2 -0
- package/dist/functions/calcRatioForMinimap.js +15 -0
- package/dist/functions/calcTileSize.d.ts +1 -0
- package/dist/functions/calcTileSize.js +6 -0
- package/dist/functions/preloadImages.d.ts +1 -0
- package/dist/functions/preloadImages.js +7 -0
- package/dist/functions/sortElements.d.ts +2 -0
- package/dist/functions/sortElements.js +18 -0
- package/dist/generateTestData.d.ts +2 -0
- package/dist/generateTestData.js +48 -0
- package/dist/hooks/useGamepad.d.ts +1 -0
- package/dist/hooks/useGamepad.js +13 -0
- package/dist/hooks/useKeyboard.d.ts +5 -0
- package/dist/hooks/useKeyboard.js +19 -0
- package/dist/hooks/useMousePosition.d.ts +6 -0
- package/dist/hooks/useMousePosition.js +25 -0
- package/dist/hooks/useWindowDimensions.d.ts +4 -0
- package/dist/hooks/useWindowDimensions.js +20 -0
- package/dist/img/logo.png +0 -0
- package/dist/main.d.ts +20 -0
- package/dist/main.js +26 -0
- package/dist/render/renderCanvas.d.ts +3 -0
- package/dist/render/renderCanvas.js +35 -0
- package/dist/render/renderCircle.d.ts +2 -0
- package/dist/render/renderCircle.js +12 -0
- package/dist/render/renderImage.d.ts +2 -0
- package/dist/render/renderImage.js +41 -0
- package/dist/render/renderLinePath.d.ts +2 -0
- package/dist/render/renderLinePath.js +27 -0
- package/dist/render/renderPolygon.d.ts +2 -0
- package/dist/render/renderPolygon.js +18 -0
- package/dist/render/renderRect.d.ts +2 -0
- package/dist/render/renderRect.js +27 -0
- package/dist/shapes/CanvasImage.d.ts +40 -0
- package/dist/shapes/CanvasImage.js +38 -0
- package/dist/shapes/CanvasObject.d.ts +14 -0
- package/dist/shapes/CanvasObject.js +27 -0
- package/dist/shapes/Circle.d.ts +28 -0
- package/dist/shapes/Circle.js +25 -0
- package/dist/shapes/ColoredCanvasObject.d.ts +7 -0
- package/dist/shapes/ColoredCanvasObject.js +14 -0
- package/dist/shapes/LinePath.d.ts +31 -0
- package/dist/shapes/LinePath.js +28 -0
- package/dist/shapes/Polygon.d.ts +25 -0
- package/dist/shapes/Polygon.js +23 -0
- package/dist/shapes/Rect.d.ts +34 -0
- package/dist/shapes/Rect.js +29 -0
- package/dist/types/Canvas2DProps.d.ts +30 -0
- package/dist/types/Canvas2DProps.js +1 -0
- package/dist/types/Canvas2DState.d.ts +18 -0
- package/dist/types/Canvas2DState.js +1 -0
- package/dist/types/CollideElementResultItem.d.ts +9 -0
- package/dist/types/CollideElementResultItem.js +1 -0
- package/dist/types/Position2D.d.ts +5 -0
- package/dist/types/Position2D.js +1 -0
- package/dist/types/Surface2D.d.ts +7 -0
- package/dist/types/Surface2D.js +1 -0
- package/package.json +48 -56
- package/canvas2d-wrapper.d.ts +0 -285
- package/dist/index.css +0 -3
- package/dist/index.js +0 -1088
- package/dist/index.js.map +0 -1
- package/dist/index.modern.js +0 -1074
- package/dist/index.modern.js.map +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
.canvas2d-wrapper:active{cursor:move}
|
@@ -0,0 +1,3 @@
|
|
1
|
+
import { default as CanvasObject } from '../shapes/CanvasObject';
|
2
|
+
import { default as CollideElementResultItem } from '../types/CollideElementResultItem';
|
3
|
+
export default function collideElement(e: Event, elements: CanvasObject[], left: number, top: number, tileSize: number, zoom: number): CollideElementResultItem | null;
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import f from "../functions/calcTileSize.js";
|
2
|
+
import u from "./inCircle.js";
|
3
|
+
import p from "./inPoly.js";
|
4
|
+
import x from "./inRect.js";
|
5
|
+
import y from "./onLinePath.js";
|
6
|
+
function I(o, c, a, s, m, d) {
|
7
|
+
const r = f(m, d), i = [];
|
8
|
+
for (const e of c) {
|
9
|
+
if (!e.hasCollisions)
|
10
|
+
continue;
|
11
|
+
const n = e.x * r, l = e.y * r;
|
12
|
+
switch (e.constructorName) {
|
13
|
+
case "Rect":
|
14
|
+
case "CanvasImage":
|
15
|
+
const t = e;
|
16
|
+
x(t, n, l, a, s, r, t.rotation) && i.push({
|
17
|
+
id: t.id,
|
18
|
+
element: e,
|
19
|
+
originalEvent: o,
|
20
|
+
posOnMap: { x: t.x, y: t.y }
|
21
|
+
});
|
22
|
+
break;
|
23
|
+
case "Circle":
|
24
|
+
u(e, n, l, a, s, r) && i.push({
|
25
|
+
id: e.id,
|
26
|
+
element: e,
|
27
|
+
originalEvent: o,
|
28
|
+
posOnMap: { x: e.x, y: e.y }
|
29
|
+
});
|
30
|
+
break;
|
31
|
+
case "Polygon":
|
32
|
+
p(e, n, l, a, s, r) && i.push({
|
33
|
+
id: e.id,
|
34
|
+
element: e,
|
35
|
+
originalEvent: o,
|
36
|
+
posOnMap: { x: e.x, y: e.y }
|
37
|
+
});
|
38
|
+
break;
|
39
|
+
case "LinePath":
|
40
|
+
y(e, a, s, r) && i.push({
|
41
|
+
id: e.id,
|
42
|
+
element: e,
|
43
|
+
originalEvent: o,
|
44
|
+
posOnMap: { x: e.x, y: e.y }
|
45
|
+
});
|
46
|
+
break;
|
47
|
+
}
|
48
|
+
}
|
49
|
+
return i.length === 0 ? null : (i.length === 1 || i.sort((e, n) => e.element.zIndex > n.element.zIndex ? -1 : e.element.zIndex < n.element.zIndex || e.id > n.id ? 1 : e.id < n.id ? -1 : 0), i[0]);
|
50
|
+
}
|
51
|
+
export {
|
52
|
+
I as default
|
53
|
+
};
|
@@ -0,0 +1,20 @@
|
|
1
|
+
function y(t, h, p, u, c, o) {
|
2
|
+
const x = t.points.length - 1;
|
3
|
+
let r = !1;
|
4
|
+
for (let s = 0; s < t.points.length; s++) {
|
5
|
+
const i = t.points[s].x * o, n = t.points[s].y * o;
|
6
|
+
if (u === i && c === n)
|
7
|
+
return !0;
|
8
|
+
const g = t.points[x].x * o, f = t.points[x].y * o;
|
9
|
+
if (n > p != f > p) {
|
10
|
+
const j = (u - i) * (f - n) - (g - i) * (c - n);
|
11
|
+
if (j === 0)
|
12
|
+
return !0;
|
13
|
+
j < 0 != f < n && (r = !r);
|
14
|
+
}
|
15
|
+
}
|
16
|
+
return r;
|
17
|
+
}
|
18
|
+
export {
|
19
|
+
y as default
|
20
|
+
};
|
@@ -0,0 +1,12 @@
|
|
1
|
+
function g(i, h, c, s, e, r, t) {
|
2
|
+
const u = i.width * r, f = i.height * r;
|
3
|
+
let n = s, d = e;
|
4
|
+
if (t) {
|
5
|
+
const M = h + u / 2, a = c + f / 2;
|
6
|
+
n = M + (s - M) * Math.cos(-t) - (e - a) * Math.sin(-t), d = a + (e - a) * Math.cos(-t) + (s - M) * Math.sin(-t);
|
7
|
+
}
|
8
|
+
return h <= n && n <= h + u && c <= d && d <= c + f;
|
9
|
+
}
|
10
|
+
export {
|
11
|
+
g as default
|
12
|
+
};
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import f from "./inCircle.js";
|
2
|
+
function q(t, x, y, n) {
|
3
|
+
const p = t.lineWidth;
|
4
|
+
if (f(
|
5
|
+
{ radius: p },
|
6
|
+
t.points[0].x * n,
|
7
|
+
t.points[0].y * n,
|
8
|
+
x,
|
9
|
+
y,
|
10
|
+
n
|
11
|
+
) || f(
|
12
|
+
{ radius: p },
|
13
|
+
t.points[t.points.length - 1].x * n,
|
14
|
+
t.points[t.points.length - 1].y * n,
|
15
|
+
x,
|
16
|
+
y,
|
17
|
+
n
|
18
|
+
))
|
19
|
+
return !0;
|
20
|
+
for (let r = 1; r < t.points.length; r++) {
|
21
|
+
const s = {
|
22
|
+
x: t.points[r - 1].x * n,
|
23
|
+
y: t.points[r - 1].y * n
|
24
|
+
}, o = {
|
25
|
+
x: t.points[r].x * n,
|
26
|
+
y: t.points[r].y * n
|
27
|
+
}, u = s.x - o.x, h = s.y - o.y, g = Math.sqrt(u * u + h * h), d = ((x - s.x) * (o.x - s.x) + (y - s.y) * (o.y - s.y)) / Math.pow(g, 2), i = {
|
28
|
+
x: s.x + d * (o.x - s.x),
|
29
|
+
y: s.y + d * (o.y - s.y)
|
30
|
+
};
|
31
|
+
if (f(
|
32
|
+
{ radius: p },
|
33
|
+
i.x,
|
34
|
+
i.y,
|
35
|
+
x,
|
36
|
+
y,
|
37
|
+
n
|
38
|
+
))
|
39
|
+
return !0;
|
40
|
+
}
|
41
|
+
return !1;
|
42
|
+
}
|
43
|
+
export {
|
44
|
+
q as default
|
45
|
+
};
|
@@ -0,0 +1,7 @@
|
|
1
|
+
function n(t, o, f) {
|
2
|
+
const a = -t.left - t.deltaLeft + o.pageX - o.target.offsetLeft, e = -t.top - t.deltaTop + o.pageY - o.target.offsetTop, l = { x: Math.floor(a / f / t.zoom), y: Math.floor(e / f / t.zoom) };
|
3
|
+
return { left: a, top: e, posOnMap: l };
|
4
|
+
}
|
5
|
+
export {
|
6
|
+
n as default
|
7
|
+
};
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import { default as CanvasObject } from '../shapes/CanvasObject';
|
2
|
+
import { default as Canvas2DState } from '../types/Canvas2DState';
|
3
|
+
import { default as CollideElementResultItem } from '../types/CollideElementResultItem';
|
4
|
+
export default function elementClick(e: React.MouseEvent, elements: CanvasObject[], tileSize: number, state: Canvas2DState): CollideElementResultItem;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import c from "../collisions/collideElement.js";
|
2
|
+
import u from "./computeEventPositions.js";
|
3
|
+
function v(n, l, t, e) {
|
4
|
+
const {
|
5
|
+
left: i,
|
6
|
+
top: m,
|
7
|
+
posOnMap: r
|
8
|
+
} = u(e, n, t), o = c(n.nativeEvent, l, i, m, t, e.zoom);
|
9
|
+
return o !== null ? o : {
|
10
|
+
id: null,
|
11
|
+
element: null,
|
12
|
+
originalEvent: n.nativeEvent,
|
13
|
+
posOnMap: r
|
14
|
+
};
|
15
|
+
}
|
16
|
+
export {
|
17
|
+
v as default
|
18
|
+
};
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import { default as CanvasObject } from '../shapes/CanvasObject';
|
2
|
+
import { default as Canvas2DState } from '../types/Canvas2DState';
|
3
|
+
import { default as CollideElementResultItem } from '../types/CollideElementResultItem';
|
4
|
+
export default function elementRightClick(e: MouseEvent, elements: CanvasObject[], tileSize: number, state: Canvas2DState): CollideElementResultItem;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import p from "../collisions/collideElement.js";
|
2
|
+
function c(l, r, n, o) {
|
3
|
+
const t = -o.left - o.deltaLeft + l.pageX - l.target.offsetLeft, e = -o.top - o.deltaTop + l.pageY - l.target.offsetTop, f = p(l, r, t, e, n, o.zoom);
|
4
|
+
return f !== null ? f : {
|
5
|
+
id: null,
|
6
|
+
element: null,
|
7
|
+
originalEvent: l,
|
8
|
+
posOnMap: { x: Math.floor(t / n / o.zoom), y: Math.floor(e / n / o.zoom) }
|
9
|
+
};
|
10
|
+
}
|
11
|
+
export {
|
12
|
+
c as default
|
13
|
+
};
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import { default as CanvasObject } from '../shapes/CanvasObject';
|
2
|
+
import { default as Canvas2DState } from '../types/Canvas2DState';
|
3
|
+
import { default as CollideElementResultItem } from '../types/CollideElementResultItem';
|
4
|
+
import { default as Position2D } from '../types/Position2D';
|
5
|
+
export default function mouseMove(event: React.PointerEvent, elements: CanvasObject[], tileSize: number, props: Canvas2DState, setProps: React.Dispatch<React.SetStateAction<Canvas2DState>>, lockXAxis: boolean, lockYAxis: boolean, dragObjects: boolean, onElementMoved?: (obj: CollideElementResultItem, x: number, y: number) => void, onHover?: (obj: CollideElementResultItem | null, pos: Position2D) => void): void;
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import X from "../collisions/collideElement.js";
|
2
|
+
import b from "./computeEventPositions.js";
|
3
|
+
const g = 1;
|
4
|
+
let l = null;
|
5
|
+
const s = 300;
|
6
|
+
function O(t, c, f, e, u, T, Y, r, m, n) {
|
7
|
+
const i = {
|
8
|
+
...e
|
9
|
+
}, {
|
10
|
+
left: a,
|
11
|
+
top: o,
|
12
|
+
posOnMap: d
|
13
|
+
} = b(e, t, f);
|
14
|
+
if (t.nativeEvent.buttons === g && e.prevX) {
|
15
|
+
let E = !1;
|
16
|
+
r && (l === null && (l = X(t.nativeEvent, c, a, o, f, e.zoom)), l !== null && l.element.draggable && (l.element.x = -e.left - e.deltaLeft + (t.clientX - e.boundingClientRect.left) - (l.element.width ?? 0) / 2, l.element.y = -e.top - e.deltaLeft + (t.clientY - e.boundingClientRect.top) - (l.element.height ?? 0) / 2, E = !0, m && m(
|
17
|
+
l,
|
18
|
+
t.screenX - e.prevX,
|
19
|
+
t.screenY - e.prevY
|
20
|
+
), n && n(null, d))), E || (T || (i.left += t.screenX - e.prevX), Y || (i.top += t.screenY - e.prevY)), t.nativeEvent.pointerType !== "mouse" && setTimeout(() => {
|
21
|
+
l = null, u({
|
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
|
+
});
|
34
|
+
}
|
35
|
+
export {
|
36
|
+
O as default
|
37
|
+
};
|
@@ -0,0 +1,15 @@
|
|
1
|
+
function h(m, r, o, p, x, n) {
|
2
|
+
const c = m.map((a) => {
|
3
|
+
const t = a;
|
4
|
+
return Array.isArray(t.points) ? t.points.map((s) => s.x * n) : [a.x * n];
|
5
|
+
}).flat(), M = Math.min(...c), u = Math.max(...c);
|
6
|
+
r = Math.max(2 * u, -2 * M, r);
|
7
|
+
const i = m.map((a) => {
|
8
|
+
const t = a;
|
9
|
+
return Array.isArray(t.points) ? t.points.map((s) => s.y * n) : [a.y * n];
|
10
|
+
}).flat(), f = Math.min(...i), y = Math.max(...i);
|
11
|
+
return o = Math.max(2 * y, -2 * f, o), Math.max(r / p, o / x);
|
12
|
+
}
|
13
|
+
export {
|
14
|
+
h as default
|
15
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export default function calcTileSize(tileSize: number, zoom: number): number;
|
@@ -0,0 +1 @@
|
|
1
|
+
export default function preloadImages(images: string[]): void;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
function f(t) {
|
2
|
+
return t.sort((r, e) => {
|
3
|
+
if (r.zIndex !== e.zIndex)
|
4
|
+
return r.zIndex - e.zIndex;
|
5
|
+
if (r.fill === e.fill && r.stroke && e.stroke)
|
6
|
+
return r.stroke === e.stroke ? 0 : r.stroke < e.stroke ? 1 : -1;
|
7
|
+
if (r.fill && e.fill) {
|
8
|
+
if (r.fill < e.fill)
|
9
|
+
return 1;
|
10
|
+
if (r.fill > e.fill)
|
11
|
+
return -1;
|
12
|
+
}
|
13
|
+
return 0;
|
14
|
+
}), t;
|
15
|
+
}
|
16
|
+
export {
|
17
|
+
f as default
|
18
|
+
};
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import l from "./shapes/Circle.js";
|
2
|
+
import e from "./shapes/Polygon.js";
|
3
|
+
import i from "./shapes/Rect.js";
|
4
|
+
function M() {
|
5
|
+
const r = [];
|
6
|
+
for (let o = 0; o < 998; o++) {
|
7
|
+
let t = null;
|
8
|
+
Math.random() > 0.5 ? t = new i({
|
9
|
+
id: o.toString(),
|
10
|
+
x: 500 - Math.round(Math.random() * 1e3),
|
11
|
+
y: 500 - Math.round(Math.random() * 1e3),
|
12
|
+
width: 32,
|
13
|
+
height: 32,
|
14
|
+
fill: Math.random() > 0.5 ? "black" : void 0,
|
15
|
+
stroke: Math.random() > 0.5 ? "black" : void 0,
|
16
|
+
draggable: !0
|
17
|
+
}) : t = new l({
|
18
|
+
id: o.toString(),
|
19
|
+
x: 500 - Math.round(Math.random() * 1e3),
|
20
|
+
y: 500 - Math.round(Math.random() * 1e3),
|
21
|
+
radius: 16,
|
22
|
+
fill: Math.random() > 0.5 ? "black" : void 0,
|
23
|
+
stroke: Math.random() > 0.5 ? "black" : void 0
|
24
|
+
}), !t.fill && !t.stroke && (t.fill = "green"), r.push(t);
|
25
|
+
}
|
26
|
+
const a = [];
|
27
|
+
for (let o = 0; o < 5; o++)
|
28
|
+
a.push({
|
29
|
+
x: 500 - Math.round(Math.random() * 1e3),
|
30
|
+
y: 500 - Math.round(Math.random() * 1e3)
|
31
|
+
});
|
32
|
+
const n = new e({
|
33
|
+
id: "poly",
|
34
|
+
points: a,
|
35
|
+
stroke: "red"
|
36
|
+
});
|
37
|
+
r.push(n);
|
38
|
+
const d = new e({
|
39
|
+
id: "poly",
|
40
|
+
points: a,
|
41
|
+
fill: "orange",
|
42
|
+
zIndex: -1
|
43
|
+
});
|
44
|
+
return r.push(d), r;
|
45
|
+
}
|
46
|
+
export {
|
47
|
+
M as default
|
48
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export default function useGamepad(): Gamepad | null;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { useState as r, useEffect as n } from "react";
|
2
|
+
let e;
|
3
|
+
const l = 15;
|
4
|
+
function u() {
|
5
|
+
const [t, a] = r(null);
|
6
|
+
return n(() => (clearInterval(e), e = setInterval(
|
7
|
+
() => a(navigator.getGamepads()[0]),
|
8
|
+
l
|
9
|
+
), () => clearInterval(e)), []), t;
|
10
|
+
}
|
11
|
+
export {
|
12
|
+
u as default
|
13
|
+
};
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { useState as s, useEffect as d } from "react";
|
2
|
+
function y() {
|
3
|
+
const [e, n] = s({});
|
4
|
+
return d(() => {
|
5
|
+
const r = (t) => {
|
6
|
+
e[t.key] = !0, n(JSON.parse(JSON.stringify(e)));
|
7
|
+
};
|
8
|
+
document.addEventListener("keydown", r);
|
9
|
+
const o = (t) => {
|
10
|
+
e[t.key] = !1, n(JSON.parse(JSON.stringify(e)));
|
11
|
+
};
|
12
|
+
return document.addEventListener("keyup", o), () => {
|
13
|
+
document.removeEventListener("keydown", r), document.removeEventListener("keyup", o);
|
14
|
+
};
|
15
|
+
}, []), e;
|
16
|
+
}
|
17
|
+
export {
|
18
|
+
y as default
|
19
|
+
};
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import { useState as m, useEffect as v } from "react";
|
2
|
+
function d(o = !0) {
|
3
|
+
const [
|
4
|
+
u,
|
5
|
+
r
|
6
|
+
] = m({ x: null, y: null });
|
7
|
+
return v(() => {
|
8
|
+
const e = (c) => {
|
9
|
+
const t = c;
|
10
|
+
let n, s;
|
11
|
+
if (t.touches) {
|
12
|
+
const i = t.touches[0];
|
13
|
+
[n, s] = [i.clientX, i.clientY];
|
14
|
+
} else
|
15
|
+
[n, s] = [t.clientX, t.clientY];
|
16
|
+
r({ x: n, y: s });
|
17
|
+
};
|
18
|
+
return window.addEventListener("mousemove", e), o && window.addEventListener("touchmove", e), () => {
|
19
|
+
window.removeEventListener("mousemove", e), o && window.removeEventListener("touchmove", e);
|
20
|
+
};
|
21
|
+
}, [o]), u;
|
22
|
+
}
|
23
|
+
export {
|
24
|
+
d as default
|
25
|
+
};
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { useState as o, useEffect as s } from "react";
|
2
|
+
function t() {
|
3
|
+
const { clientWidth: e, clientHeight: n } = document.documentElement;
|
4
|
+
return {
|
5
|
+
width: e,
|
6
|
+
height: n
|
7
|
+
};
|
8
|
+
}
|
9
|
+
function r() {
|
10
|
+
const [e, n] = o(t());
|
11
|
+
return s(() => {
|
12
|
+
function i() {
|
13
|
+
n(t());
|
14
|
+
}
|
15
|
+
return window.addEventListener("resize", i), () => window.removeEventListener("resize", i);
|
16
|
+
}, []), e;
|
17
|
+
}
|
18
|
+
export {
|
19
|
+
r as default
|
20
|
+
};
|
Binary file
|
package/dist/main.d.ts
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
import { default as Canvas2D } from './Canvas2D';
|
2
|
+
import { default as preloadImages } from './functions/preloadImages';
|
3
|
+
import { default as useGamepad } from './hooks/useGamepad';
|
4
|
+
import { default as useKeyboard } from './hooks/useKeyboard';
|
5
|
+
import { default as useMousePosition } from './hooks/useMousePosition';
|
6
|
+
import { default as useWindowDimensions } from './hooks/useWindowDimensions';
|
7
|
+
import { default as CanvasImage } from './shapes/CanvasImage';
|
8
|
+
import { default as CanvasObject } from './shapes/CanvasObject';
|
9
|
+
import { default as Circle } from './shapes/Circle';
|
10
|
+
import { default as LinePath } from './shapes/LinePath';
|
11
|
+
import { default as Polygon } from './shapes/Polygon';
|
12
|
+
import { default as Rect } from './shapes/Rect';
|
13
|
+
declare global {
|
14
|
+
var __canvas2dWrapper__: {
|
15
|
+
imgCache: {
|
16
|
+
[key: string]: HTMLImageElement;
|
17
|
+
};
|
18
|
+
};
|
19
|
+
}
|
20
|
+
export { Canvas2D, CanvasImage, CanvasObject, Circle, LinePath, Polygon, preloadImages, Rect, useGamepad, useKeyboard, useMousePosition, useWindowDimensions };
|
package/dist/main.js
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
import { default as o } from "./Canvas2D.js";
|
2
|
+
import { default as r } from "./functions/preloadImages.js";
|
3
|
+
import { default as s } from "./hooks/useGamepad.js";
|
4
|
+
import { default as d } from "./hooks/useKeyboard.js";
|
5
|
+
import { default as l } from "./hooks/useMousePosition.js";
|
6
|
+
import { default as x } from "./hooks/useWindowDimensions.js";
|
7
|
+
import { default as i } from "./shapes/CanvasImage.js";
|
8
|
+
import { default as c } from "./shapes/CanvasObject.js";
|
9
|
+
import { default as v } from "./shapes/Circle.js";
|
10
|
+
import { default as b } from "./shapes/LinePath.js";
|
11
|
+
import { default as D } from "./shapes/Polygon.js";
|
12
|
+
import { default as h } from "./shapes/Rect.js";
|
13
|
+
export {
|
14
|
+
o as Canvas2D,
|
15
|
+
i as CanvasImage,
|
16
|
+
c as CanvasObject,
|
17
|
+
v as Circle,
|
18
|
+
b as LinePath,
|
19
|
+
D as Polygon,
|
20
|
+
h as Rect,
|
21
|
+
r as preloadImages,
|
22
|
+
s as useGamepad,
|
23
|
+
d as useKeyboard,
|
24
|
+
l as useMousePosition,
|
25
|
+
x as useWindowDimensions
|
26
|
+
};
|
@@ -0,0 +1,3 @@
|
|
1
|
+
import { default as CanvasObject } from '../shapes/CanvasObject';
|
2
|
+
import { default as Canvas2DState } from '../types/Canvas2DState';
|
3
|
+
export default function renderCanvas(context: CanvasRenderingContext2D, width: number, height: number, elements: CanvasObject[], tileSize: number, state: Canvas2DState): void;
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import y from "../functions/calcTileSize.js";
|
2
|
+
import u from "../shapes/CanvasImage.js";
|
3
|
+
import h from "../shapes/Circle.js";
|
4
|
+
import w from "../shapes/LinePath.js";
|
5
|
+
import k from "../shapes/Polygon.js";
|
6
|
+
import S from "../shapes/Rect.js";
|
7
|
+
import g from "./renderCircle.js";
|
8
|
+
import N from "./renderImage.js";
|
9
|
+
import v from "./renderLinePath.js";
|
10
|
+
import C from "./renderPolygon.js";
|
11
|
+
import P from "./renderRect.js";
|
12
|
+
const l = {
|
13
|
+
[new h({ id: "a", x: 0, y: 0, radius: 0 }).constructorName]: g,
|
14
|
+
[new u({ id: "a", x: 0, y: 0, src: "", width: 0, height: 0 }).constructorName]: N,
|
15
|
+
[new w({ id: "a", points: [{ x: 0, y: 0 }], lineWidth: 0, stroke: "" }).constructorName]: v,
|
16
|
+
[new k({ id: "a", points: [{ x: 0, y: 0 }] }).constructorName]: C,
|
17
|
+
[new S({ id: "a", x: 0, y: 0, width: 0, height: 0 }).constructorName]: P
|
18
|
+
};
|
19
|
+
function j(o, m, f, c, p, r) {
|
20
|
+
const a = r.left + r.deltaLeft, d = r.top + r.deltaTop;
|
21
|
+
let i = "", n = "";
|
22
|
+
const s = y(p, r.zoom);
|
23
|
+
o.clearRect(0, 0, m, f);
|
24
|
+
for (const e of c) {
|
25
|
+
e.fill !== i && typeof e.fill < "u" && (o.fillStyle = e.fill, i = e.fill), e.stroke !== n && typeof e.stroke < "u" && (o.strokeStyle = e.stroke, n = e.stroke);
|
26
|
+
const t = e.constructorName;
|
27
|
+
if (l[t])
|
28
|
+
l[t](o, e, a, d, s);
|
29
|
+
else
|
30
|
+
throw new Error("Unsupported shape type:" + t);
|
31
|
+
}
|
32
|
+
}
|
33
|
+
export {
|
34
|
+
j as default
|
35
|
+
};
|