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.
Files changed (89) hide show
  1. package/dist/Canvas2D.d.ts +3 -0
  2. package/dist/Canvas2D.js +158 -0
  3. package/dist/Canvas2D.spec.d.ts +0 -0
  4. package/dist/Canvas2D.spec.js +38101 -0
  5. package/dist/assets/Canvas2D.css +1 -0
  6. package/dist/collisions/collideElement.d.ts +3 -0
  7. package/dist/collisions/collideElement.js +53 -0
  8. package/dist/collisions/inCircle.d.ts +3 -0
  9. package/dist/collisions/inCircle.js +6 -0
  10. package/dist/collisions/inPoly.d.ts +2 -0
  11. package/dist/collisions/inPoly.js +20 -0
  12. package/dist/collisions/inRect.d.ts +2 -0
  13. package/dist/collisions/inRect.js +12 -0
  14. package/dist/collisions/onLinePath.d.ts +2 -0
  15. package/dist/collisions/onLinePath.js +45 -0
  16. package/dist/events/computeEventPositions.d.ts +9 -0
  17. package/dist/events/computeEventPositions.js +7 -0
  18. package/dist/events/elementClick.d.ts +4 -0
  19. package/dist/events/elementClick.js +18 -0
  20. package/dist/events/elementRightClick.d.ts +4 -0
  21. package/dist/events/elementRightClick.js +13 -0
  22. package/dist/events/mouseMove.d.ts +5 -0
  23. package/dist/events/mouseMove.js +37 -0
  24. package/dist/events/mouseWheel.d.ts +2 -0
  25. package/dist/events/mouseWheel.js +10 -0
  26. package/dist/functions/calcRatioForMinimap.d.ts +2 -0
  27. package/dist/functions/calcRatioForMinimap.js +15 -0
  28. package/dist/functions/calcTileSize.d.ts +1 -0
  29. package/dist/functions/calcTileSize.js +6 -0
  30. package/dist/functions/preloadImages.d.ts +1 -0
  31. package/dist/functions/preloadImages.js +7 -0
  32. package/dist/functions/sortElements.d.ts +2 -0
  33. package/dist/functions/sortElements.js +18 -0
  34. package/dist/generateTestData.d.ts +2 -0
  35. package/dist/generateTestData.js +48 -0
  36. package/dist/hooks/useGamepad.d.ts +1 -0
  37. package/dist/hooks/useGamepad.js +13 -0
  38. package/dist/hooks/useKeyboard.d.ts +5 -0
  39. package/dist/hooks/useKeyboard.js +19 -0
  40. package/dist/hooks/useMousePosition.d.ts +6 -0
  41. package/dist/hooks/useMousePosition.js +25 -0
  42. package/dist/hooks/useWindowDimensions.d.ts +4 -0
  43. package/dist/hooks/useWindowDimensions.js +20 -0
  44. package/dist/img/logo.png +0 -0
  45. package/dist/main.d.ts +20 -0
  46. package/dist/main.js +26 -0
  47. package/dist/render/renderCanvas.d.ts +3 -0
  48. package/dist/render/renderCanvas.js +35 -0
  49. package/dist/render/renderCircle.d.ts +2 -0
  50. package/dist/render/renderCircle.js +12 -0
  51. package/dist/render/renderImage.d.ts +2 -0
  52. package/dist/render/renderImage.js +41 -0
  53. package/dist/render/renderLinePath.d.ts +2 -0
  54. package/dist/render/renderLinePath.js +27 -0
  55. package/dist/render/renderPolygon.d.ts +2 -0
  56. package/dist/render/renderPolygon.js +18 -0
  57. package/dist/render/renderRect.d.ts +2 -0
  58. package/dist/render/renderRect.js +27 -0
  59. package/dist/shapes/CanvasImage.d.ts +40 -0
  60. package/dist/shapes/CanvasImage.js +38 -0
  61. package/dist/shapes/CanvasObject.d.ts +14 -0
  62. package/dist/shapes/CanvasObject.js +27 -0
  63. package/dist/shapes/Circle.d.ts +28 -0
  64. package/dist/shapes/Circle.js +25 -0
  65. package/dist/shapes/ColoredCanvasObject.d.ts +7 -0
  66. package/dist/shapes/ColoredCanvasObject.js +14 -0
  67. package/dist/shapes/LinePath.d.ts +31 -0
  68. package/dist/shapes/LinePath.js +28 -0
  69. package/dist/shapes/Polygon.d.ts +25 -0
  70. package/dist/shapes/Polygon.js +23 -0
  71. package/dist/shapes/Rect.d.ts +34 -0
  72. package/dist/shapes/Rect.js +29 -0
  73. package/dist/types/Canvas2DProps.d.ts +30 -0
  74. package/dist/types/Canvas2DProps.js +1 -0
  75. package/dist/types/Canvas2DState.d.ts +18 -0
  76. package/dist/types/Canvas2DState.js +1 -0
  77. package/dist/types/CollideElementResultItem.d.ts +9 -0
  78. package/dist/types/CollideElementResultItem.js +1 -0
  79. package/dist/types/Position2D.d.ts +5 -0
  80. package/dist/types/Position2D.js +1 -0
  81. package/dist/types/Surface2D.d.ts +7 -0
  82. package/dist/types/Surface2D.js +1 -0
  83. package/package.json +48 -56
  84. package/canvas2d-wrapper.d.ts +0 -285
  85. package/dist/index.css +0 -3
  86. package/dist/index.js +0 -1088
  87. package/dist/index.js.map +0 -1
  88. package/dist/index.modern.js +0 -1074
  89. 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,3 @@
1
+ export default function inCircle(element: {
2
+ radius: number;
3
+ }, x: number, y: number, left: number, top: number, localTileSize: number): boolean;
@@ -0,0 +1,6 @@
1
+ function c(n, r, s, a, d, i) {
2
+ return (r - a) * (r - a) + (s - d) * (s - d) <= n.radius * i * (n.radius * i);
3
+ }
4
+ export {
5
+ c as default
6
+ };
@@ -0,0 +1,2 @@
1
+ import { default as Polygon } from '../shapes/Polygon';
2
+ export default function inPoly(element: Polygon, _x: number, y: number, mouseX: number, mouseY: number, localTileSize: number): boolean;
@@ -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,2 @@
1
+ import { default as Rect } from '../shapes/Rect';
2
+ export default function inRect(element: Rect, x: number, y: number, left: number, top: number, localTileSize: number, rotation?: number): boolean;
@@ -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,2 @@
1
+ import { default as LinePath } from '../shapes/LinePath';
2
+ export default function onLinePath(element: LinePath, left: number, top: number, localTileSize: number): boolean;
@@ -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,9 @@
1
+ import { default as Canvas2DState } from '../types/Canvas2DState';
2
+ export default function computeEventPositions(props: Canvas2DState, event: React.MouseEvent, tileSize: number): {
3
+ left: number;
4
+ top: number;
5
+ posOnMap: {
6
+ x: number;
7
+ y: number;
8
+ };
9
+ };
@@ -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,2 @@
1
+ import { default as Canvas2DState } from '../types/Canvas2DState';
2
+ export default function mouseWheel(event: React.WheelEvent, props: Canvas2DState, setProps: React.Dispatch<React.SetStateAction<Canvas2DState>>, minZoom: number, maxZoom: number): void;
@@ -0,0 +1,10 @@
1
+ function l(t, E, o, a, L) {
2
+ let e = E.zoom;
3
+ t.deltaY < 0 ? e += 0.05 : e -= 0.05, e = Math.max(e, a), e = Math.min(e, L), o({
4
+ ...E,
5
+ zoom: e
6
+ });
7
+ }
8
+ export {
9
+ l as default
10
+ };
@@ -0,0 +1,2 @@
1
+ import { default as CanvasObject } from '../shapes/CanvasObject';
2
+ export default function calcRatioForMinimap(elements: CanvasObject[], width: number, height: number, minimapWidth: number, minimapHeight: number, tileSize: number): number;
@@ -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,6 @@
1
+ function a(e, t) {
2
+ return e * t;
3
+ }
4
+ export {
5
+ a as default
6
+ };
@@ -0,0 +1 @@
1
+ export default function preloadImages(images: string[]): void;
@@ -0,0 +1,7 @@
1
+ function r(e) {
2
+ for (const a of e)
3
+ __canvas2dWrapper__.imgCache[a] = new Image(), __canvas2dWrapper__.imgCache[a].src = a;
4
+ }
5
+ export {
6
+ r as default
7
+ };
@@ -0,0 +1,2 @@
1
+ import { default as CanvasObject } from '../shapes/CanvasObject';
2
+ export default function sortElements(elements: CanvasObject[]): CanvasObject[];
@@ -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,2 @@
1
+ import { default as CanvasObject } from './shapes/CanvasObject';
2
+ export default function generateTestData(): CanvasObject[];
@@ -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,5 @@
1
+ type KeyboardEntries = {
2
+ [id: string]: boolean;
3
+ };
4
+ export default function useKeyboard(): KeyboardEntries;
5
+ export {};
@@ -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,6 @@
1
+ type MousePos = {
2
+ x: number | null;
3
+ y: number | null;
4
+ };
5
+ export default function useMousePosition(includeTouch?: boolean): MousePos;
6
+ export {};
@@ -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,4 @@
1
+ export default function useWindowDimensions(): {
2
+ width: number;
3
+ height: number;
4
+ };
@@ -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
+ };
@@ -0,0 +1,2 @@
1
+ import { default as Circle } from '../shapes/Circle';
2
+ export default function renderCircle(context: CanvasRenderingContext2D, element: Circle, left: number, top: number, localTileSize: number): void;
@@ -0,0 +1,12 @@
1
+ function d(f, r, i, s, a) {
2
+ f.beginPath(), f.arc(
3
+ i + r.x * a,
4
+ s + r.y * a,
5
+ r.radius * a,
6
+ 0,
7
+ 2 * Math.PI
8
+ ), r.fill && f.fill(), r.stroke && f.stroke();
9
+ }
10
+ export {
11
+ d as default
12
+ };
@@ -0,0 +1,2 @@
1
+ import { default as CanvasImage } from '../shapes/CanvasImage';
2
+ export default function renderImage(context: CanvasRenderingContext2D, element: CanvasImage, left: number, top: number, localTileSize: number): void;