canvas2d-wrapper 2.2.1 → 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.
Files changed (92) hide show
  1. package/dist/Canvas2D.js +122 -158
  2. package/dist/collisions/collideElement.js +64 -61
  3. package/dist/collisions/lineWithLine.js +9 -6
  4. package/dist/collisions/pointInCircle.js +5 -5
  5. package/dist/collisions/pointInPolygon.js +18 -20
  6. package/dist/collisions/pointInRectangle.js +10 -10
  7. package/dist/collisions/pointOnLinePath.js +23 -44
  8. package/dist/events/computeEventPositions.js +13 -6
  9. package/dist/events/elementClick.js +13 -17
  10. package/dist/events/elementRightClick.js +15 -12
  11. package/dist/events/mouseMove.js +23 -36
  12. package/dist/events/mouseWheel.js +10 -9
  13. package/dist/functions/calcRatioForMinimap.js +14 -14
  14. package/dist/functions/calcTileSize.js +5 -5
  15. package/dist/functions/preloadImages.js +5 -6
  16. package/dist/functions/sortElements.js +13 -17
  17. package/dist/generateTestData.js +46 -47
  18. package/dist/hooks/useGamepad.js +8 -12
  19. package/dist/hooks/useKeyboard.js +18 -18
  20. package/dist/hooks/useMousePosition.js +25 -24
  21. package/dist/hooks/useWindowDimensions.js +17 -17
  22. package/dist/{main.d.ts → lib/main.d.ts} +2 -1
  23. package/dist/lib/render/renderText.d.ts +2 -0
  24. package/dist/lib/shapes/Text.d.ts +38 -0
  25. package/dist/main.js +22 -42
  26. package/dist/maths/getLineLength.js +6 -6
  27. package/dist/maths/normalOnLine.js +9 -6
  28. package/dist/maths/segmentAngle.js +6 -6
  29. package/dist/render/renderCanvas.js +69 -33
  30. package/dist/render/renderCircle.js +5 -11
  31. package/dist/render/renderImage.js +7 -39
  32. package/dist/render/renderLinePath.js +24 -26
  33. package/dist/render/renderPolygon.js +7 -17
  34. package/dist/render/renderRect.js +6 -26
  35. package/dist/render/renderText.js +7 -0
  36. package/dist/shapes/CanvasImage.js +22 -37
  37. package/dist/shapes/CanvasObject.js +24 -26
  38. package/dist/shapes/Circle.js +12 -24
  39. package/dist/shapes/ColoredCanvasObject.js +13 -13
  40. package/dist/shapes/LinePath.js +15 -27
  41. package/dist/shapes/Polygon.js +12 -22
  42. package/dist/shapes/Rect.js +14 -28
  43. package/dist/shapes/Text.js +15 -0
  44. package/dist/types/Canvas2DProps.js +0 -1
  45. package/dist/types/Canvas2DState.js +0 -1
  46. package/dist/types/CollideElementResultItem.js +0 -1
  47. package/dist/types/Position2D.js +0 -1
  48. package/dist/types/Surface2D.js +0 -1
  49. package/package.json +20 -20
  50. /package/dist/{Canvas2D.d.ts → lib/Canvas2D.d.ts} +0 -0
  51. /package/dist/{Canvas2D.spec.d.ts → lib/Canvas2D.spec.d.ts} +0 -0
  52. /package/dist/{collisions → lib/collisions}/collideElement.d.ts +0 -0
  53. /package/dist/{collisions → lib/collisions}/lineWithLine.d.ts +0 -0
  54. /package/dist/{collisions → lib/collisions}/pointInCircle.d.ts +0 -0
  55. /package/dist/{collisions → lib/collisions}/pointInPolygon.d.ts +0 -0
  56. /package/dist/{collisions → lib/collisions}/pointInRectangle.d.ts +0 -0
  57. /package/dist/{collisions → lib/collisions}/pointOnLinePath.d.ts +0 -0
  58. /package/dist/{events → lib/events}/computeEventPositions.d.ts +0 -0
  59. /package/dist/{events → lib/events}/elementClick.d.ts +0 -0
  60. /package/dist/{events → lib/events}/elementRightClick.d.ts +0 -0
  61. /package/dist/{events → lib/events}/mouseMove.d.ts +0 -0
  62. /package/dist/{events → lib/events}/mouseWheel.d.ts +0 -0
  63. /package/dist/{functions → lib/functions}/calcRatioForMinimap.d.ts +0 -0
  64. /package/dist/{functions → lib/functions}/calcTileSize.d.ts +0 -0
  65. /package/dist/{functions → lib/functions}/preloadImages.d.ts +0 -0
  66. /package/dist/{functions → lib/functions}/sortElements.d.ts +0 -0
  67. /package/dist/{generateTestData.d.ts → lib/generateTestData.d.ts} +0 -0
  68. /package/dist/{hooks → lib/hooks}/useGamepad.d.ts +0 -0
  69. /package/dist/{hooks → lib/hooks}/useKeyboard.d.ts +0 -0
  70. /package/dist/{hooks → lib/hooks}/useMousePosition.d.ts +0 -0
  71. /package/dist/{hooks → lib/hooks}/useWindowDimensions.d.ts +0 -0
  72. /package/dist/{maths → lib/maths}/getLineLength.d.ts +0 -0
  73. /package/dist/{maths → lib/maths}/normalOnLine.d.ts +0 -0
  74. /package/dist/{maths → lib/maths}/segmentAngle.d.ts +0 -0
  75. /package/dist/{render → lib/render}/renderCanvas.d.ts +0 -0
  76. /package/dist/{render → lib/render}/renderCircle.d.ts +0 -0
  77. /package/dist/{render → lib/render}/renderImage.d.ts +0 -0
  78. /package/dist/{render → lib/render}/renderLinePath.d.ts +0 -0
  79. /package/dist/{render → lib/render}/renderPolygon.d.ts +0 -0
  80. /package/dist/{render → lib/render}/renderRect.d.ts +0 -0
  81. /package/dist/{shapes → lib/shapes}/CanvasImage.d.ts +0 -0
  82. /package/dist/{shapes → lib/shapes}/CanvasObject.d.ts +0 -0
  83. /package/dist/{shapes → lib/shapes}/Circle.d.ts +0 -0
  84. /package/dist/{shapes → lib/shapes}/ColoredCanvasObject.d.ts +0 -0
  85. /package/dist/{shapes → lib/shapes}/LinePath.d.ts +0 -0
  86. /package/dist/{shapes → lib/shapes}/Polygon.d.ts +0 -0
  87. /package/dist/{shapes → lib/shapes}/Rect.d.ts +0 -0
  88. /package/dist/{types → lib/types}/Canvas2DProps.d.ts +0 -0
  89. /package/dist/{types → lib/types}/Canvas2DState.d.ts +0 -0
  90. /package/dist/{types → lib/types}/CollideElementResultItem.d.ts +0 -0
  91. /package/dist/{types → lib/types}/Position2D.d.ts +0 -0
  92. /package/dist/{types → lib/types}/Surface2D.d.ts +0 -0
package/dist/Canvas2D.js CHANGED
@@ -1,159 +1,123 @@
1
- import { jsxs as K, Fragment as O, jsx as B } from "react/jsx-runtime";
2
- import { useState as Q, useCallback as j, useEffect as p } from "react";
3
- import S from "./events/elementClick.js";
4
- import U from "./events/elementRightClick.js";
5
- import V from "./events/mouseMove.js";
6
- import $ from "./events/mouseWheel.js";
7
- import z from "./functions/calcRatioForMinimap.js";
8
- import W from "./functions/sortElements.js";
9
- import k from "./render/renderCanvas.js";
10
- import './assets/Canvas2D.css';const l = {};
11
- function fe({
12
- width: o,
13
- height: r,
14
- trackMouseMove: q = !0,
15
- minZoom: d = 1,
16
- maxZoom: v = 1,
17
- tileSize: a = 1,
18
- onClick: x,
19
- onRightClick: u,
20
- onHover: A,
21
- onElementMoved: D,
22
- onWheel: E,
23
- onFrame: C,
24
- lockXAxis: N = !1,
25
- lockYAxis: T = !1,
26
- smoothingQuality: R = "medium",
27
- dragObjects: _ = !1,
28
- deltaLeft: b = 0,
29
- deltaTop: g = 0,
30
- showMinimap: F = !1,
31
- minimapWidth: m = 240,
32
- minimapHeight: i = 120,
33
- minimapDisplayFilter: X = (t) => !0,
34
- minimapAutomaticZoomFilter: Y = (t) => !0,
35
- ...f
36
- }) {
37
- l[f.id] || (l[f.id] = []);
38
- const [t, c] = Q({
39
- left: 0,
40
- top: 0,
41
- width: 0,
42
- height: 0,
43
- zoom: 0,
44
- deltaTop: g,
45
- deltaLeft: b,
46
- prevX: null,
47
- prevY: null
48
- }), y = j((e) => {
49
- if (e !== null) {
50
- const n = e.getContext("2d");
51
- if (!n)
52
- return;
53
- R ? (n.imageSmoothingEnabled = !0, n.imageSmoothingQuality = R) : n.imageSmoothingEnabled = !1, c((s) => ({
54
- ...s,
55
- boundingClientRect: e.getBoundingClientRect(),
56
- canvas: e,
57
- context: n,
58
- left: o / 2,
59
- top: r / 2,
60
- width: o,
61
- height: r,
62
- zoom: 1
63
- }));
64
- }
65
- }, []), G = j((e) => {
66
- if (e !== null) {
67
- const n = e.getContext("2d");
68
- if (!n)
69
- return;
70
- c((s) => ({
71
- ...s,
72
- minimapBoundingClientRect: e.getBoundingClientRect(),
73
- minimapCanvas: e,
74
- minimapContext: n
75
- }));
76
- }
77
- }, []);
78
- if (t.deltaTop = g, t.deltaLeft = b, d > v)
79
- throw new Error("minZoom should be lower than maxZoom.");
80
- let L;
81
- q && (L = (e) => V(e, l[f.id], a, t, c, N, T, _, D, A));
82
- const I = (e) => {
83
- E && E(e.nativeEvent), d !== v && $(e, t, c, d, v);
84
- };
85
- let M;
86
- return x && (M = (e) => x(S(e, l[f.id], a, t))), p(() => {
87
- function e(n) {
88
- n.preventDefault(), u && u(U(n, l[f.id], a, t));
89
- }
90
- if (u && t.canvas)
91
- return t.canvas.addEventListener("contextmenu", e), () => {
92
- t.canvas?.removeEventListener("contextmenu", e);
93
- };
94
- }, [t.canvas, u]), p(() => {
95
- let e = !0;
96
- function n() {
97
- if (!e)
98
- return;
99
- l[f.id] = C();
100
- const s = W(l[f.id]);
101
- if (t.context && k(
102
- t.context,
103
- o,
104
- r,
105
- s,
106
- a,
107
- t
108
- ), F && t.minimapContext) {
109
- const w = s.filter(X), J = z(w.filter(Y), o, r, m, i, a);
110
- k(
111
- t.minimapContext,
112
- m,
113
- i,
114
- w,
115
- a / J,
116
- { left: m / 2, top: i / 2, deltaLeft: 0, deltaTop: 0, zoom: 1 }
117
- );
118
- }
119
- window.requestAnimationFrame(n);
120
- }
121
- return window.requestAnimationFrame(n), () => {
122
- e = !1;
123
- };
124
- }, [t.left, t.top, t.deltaLeft, t.deltaTop, t.zoom, t.context, C]), p(() => {
125
- c((e) => ({
126
- ...e,
127
- left: o / 2,
128
- top: r / 2,
129
- width: o,
130
- height: r
131
- }));
132
- }, [o, r]), /* @__PURE__ */ K(O, { children: [
133
- /* @__PURE__ */ B(
134
- "canvas",
135
- {
136
- ref: y,
137
- width: o,
138
- height: r,
139
- onPointerMove: L,
140
- onWheel: I,
141
- onClick: M,
142
- className: "canvas2d-wrapper",
143
- ...f
144
- }
145
- ),
146
- F && /* @__PURE__ */ B(
147
- "canvas",
148
- {
149
- ref: G,
150
- width: m,
151
- height: i,
152
- className: "canvas2d-wrapper-minimap"
153
- }
154
- )
155
- ] });
1
+ import e from "./events/elementClick.js";
2
+ import t from "./events/elementRightClick.js";
3
+ import n from "./events/mouseMove.js";
4
+ import r from "./events/mouseWheel.js";
5
+ import i from "./functions/calcRatioForMinimap.js";
6
+ import a from "./functions/sortElements.js";
7
+ import o from "./render/renderCanvas.js";
8
+ import { useCallback as s, useEffect as c, useState as l } from "react";
9
+ import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
10
+ import './assets/Canvas2D.css';//#region lib/Canvas2D.tsx
11
+ var p = {};
12
+ function m({ width: m, height: h, trackMouseMove: g = !0, minZoom: _ = 1, maxZoom: v = 1, tileSize: y = 1, onClick: b, onRightClick: x, onHover: S, onElementMoved: C, onWheel: w, onFrame: T, lockXAxis: E = !1, lockYAxis: D = !1, smoothingQuality: O = "medium", dragObjects: k = !1, deltaLeft: A = 0, deltaTop: j = 0, showMinimap: M = !1, minimapWidth: N = 240, minimapHeight: P = 120, minimapDisplayFilter: F = (e) => !0, minimapAutomaticZoomFilter: I = (e) => !0, ...L }) {
13
+ p[L.id] || (p[L.id] = []);
14
+ let [R, z] = l({
15
+ left: 0,
16
+ top: 0,
17
+ width: 0,
18
+ height: 0,
19
+ zoom: 0,
20
+ deltaTop: j,
21
+ deltaLeft: A,
22
+ prevX: null,
23
+ prevY: null
24
+ }), B = s((e) => {
25
+ if (e !== null) {
26
+ let t = e.getContext("2d");
27
+ if (!t) return;
28
+ O ? (t.imageSmoothingEnabled = !0, t.imageSmoothingQuality = O) : t.imageSmoothingEnabled = !1, z((n) => ({
29
+ ...n,
30
+ boundingClientRect: e.getBoundingClientRect(),
31
+ canvas: e,
32
+ context: t,
33
+ left: m / 2,
34
+ top: h / 2,
35
+ width: m,
36
+ height: h,
37
+ zoom: 1
38
+ }));
39
+ }
40
+ }, []), V = s((e) => {
41
+ if (e !== null) {
42
+ let t = e.getContext("2d");
43
+ if (!t) return;
44
+ z((n) => ({
45
+ ...n,
46
+ minimapBoundingClientRect: e.getBoundingClientRect(),
47
+ minimapCanvas: e,
48
+ minimapContext: t
49
+ }));
50
+ }
51
+ }, []);
52
+ if (R.deltaTop = j, R.deltaLeft = A, _ > v) throw Error("minZoom should be lower than maxZoom.");
53
+ let H;
54
+ g && (H = (e) => n(e, p[L.id], y, R, z, E, D, k, C, S));
55
+ let U = (e) => {
56
+ w && w(e.nativeEvent), _ !== v && r(e, R, z, _, v);
57
+ }, W;
58
+ return b && (W = (t) => b(e(t, p[L.id], y, R))), c(() => {
59
+ function e(e) {
60
+ e.preventDefault(), x && x(t(e, p[L.id], y, R));
61
+ }
62
+ if (x && R.canvas) return R.canvas.addEventListener("contextmenu", e), () => {
63
+ R.canvas?.removeEventListener("contextmenu", e);
64
+ };
65
+ }, [R.canvas, x]), c(() => {
66
+ let e = !0;
67
+ function t() {
68
+ if (!e) return;
69
+ p[L.id] = T();
70
+ let n = a(p[L.id]);
71
+ if (R.context && o(R.context, m, h, n, y, R), M && R.minimapContext) {
72
+ let e = n.filter(F), t = i(e.filter(I), m, h, N, P, y);
73
+ o(R.minimapContext, N, P, e, y / t, {
74
+ left: N / 2,
75
+ top: P / 2,
76
+ deltaLeft: 0,
77
+ deltaTop: 0,
78
+ zoom: 1,
79
+ width: N,
80
+ height: P,
81
+ prevX: null,
82
+ prevY: null
83
+ });
84
+ }
85
+ window.requestAnimationFrame(t);
86
+ }
87
+ return window.requestAnimationFrame(t), () => {
88
+ e = !1;
89
+ };
90
+ }, [
91
+ R.left,
92
+ R.top,
93
+ R.deltaLeft,
94
+ R.deltaTop,
95
+ R.zoom,
96
+ R.context,
97
+ T
98
+ ]), c(() => {
99
+ z((e) => ({
100
+ ...e,
101
+ left: m / 2,
102
+ top: h / 2,
103
+ width: m,
104
+ height: h
105
+ }));
106
+ }, [m, h]), /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("canvas", {
107
+ ref: B,
108
+ width: m,
109
+ height: h,
110
+ onPointerMove: H,
111
+ onWheel: U,
112
+ onClick: W,
113
+ className: "canvas2d-wrapper",
114
+ ...L
115
+ }), M && /* @__PURE__ */ d("canvas", {
116
+ ref: V,
117
+ width: N,
118
+ height: P,
119
+ className: "canvas2d-wrapper-minimap"
120
+ })] });
156
121
  }
157
- export {
158
- fe as default
159
- };
122
+ //#endregion
123
+ export { m as default };
@@ -1,62 +1,65 @@
1
- import u from "../functions/calcTileSize.js";
2
- import f from "./pointInCircle.js";
3
- import x from "./pointInPolygon.js";
4
- import h from "./pointInRectangle.js";
5
- import g from "./pointOnLinePath.js";
6
- function O(r, d, s, l, p, m) {
7
- const e = u(p, m), i = [];
8
- for (const n of d) {
9
- if (!n.hasCollisions)
10
- continue;
11
- const t = n.x * e, a = n.y * e;
12
- switch (n.constructorName) {
13
- case "Rect":
14
- case "CanvasImage":
15
- const o = n;
16
- h(
17
- t,
18
- a,
19
- o.width * e,
20
- o.height * e,
21
- s,
22
- l,
23
- o.rotation
24
- ) && i.push({
25
- id: o.id,
26
- element: n,
27
- originalEvent: r,
28
- posOnMap: { x: o.x, y: o.y }
29
- });
30
- break;
31
- case "Circle":
32
- f(t, a, n.radius * e, s, l) && i.push({
33
- id: n.id,
34
- element: n,
35
- originalEvent: r,
36
- posOnMap: { x: n.x, y: n.y }
37
- });
38
- break;
39
- case "Polygon":
40
- x(n.points, s, l, e) && i.push({
41
- id: n.id,
42
- element: n,
43
- originalEvent: r,
44
- posOnMap: { x: n.x, y: n.y }
45
- });
46
- break;
47
- case "LinePath":
48
- const c = n;
49
- g(c.points, c.lineWidth, s, l, e) && i.push({
50
- id: n.id,
51
- element: n,
52
- originalEvent: r,
53
- posOnMap: { x: n.x, y: n.y }
54
- });
55
- break;
56
- }
57
- }
58
- return i.length === 0 ? null : (i.length === 1 || i.sort((n, t) => n.element.zIndex > t.element.zIndex ? -1 : n.element.zIndex < t.element.zIndex || n.id > t.id ? 1 : n.id < t.id ? -1 : 0), i[0]);
1
+ import e from "../functions/calcTileSize.js";
2
+ import t from "./pointInCircle.js";
3
+ import n from "./pointInPolygon.js";
4
+ import r from "./pointInRectangle.js";
5
+ import i from "./pointOnLinePath.js";
6
+ //#region lib/collisions/collideElement.ts
7
+ function a(a, o, s, c, l, u) {
8
+ let d = e(l, u), f = [];
9
+ for (let e of o) {
10
+ if (!e.hasCollisions) continue;
11
+ let o = e.x * d, l = e.y * d;
12
+ switch (e.constructorName) {
13
+ case "Rect":
14
+ case "CanvasImage":
15
+ let u = e;
16
+ r(o, l, u.width * d, u.height * d, s, c, u.rotation) && f.push({
17
+ id: u.id,
18
+ element: e,
19
+ originalEvent: a,
20
+ posOnMap: {
21
+ x: u.x,
22
+ y: u.y
23
+ }
24
+ });
25
+ break;
26
+ case "Circle":
27
+ t(o, l, e.radius * d, s, c) && f.push({
28
+ id: e.id,
29
+ element: e,
30
+ originalEvent: a,
31
+ posOnMap: {
32
+ x: e.x,
33
+ y: e.y
34
+ }
35
+ });
36
+ break;
37
+ case "Polygon":
38
+ n(e.points, s, c, d) && f.push({
39
+ id: e.id,
40
+ element: e,
41
+ originalEvent: a,
42
+ posOnMap: {
43
+ x: e.x,
44
+ y: e.y
45
+ }
46
+ });
47
+ break;
48
+ case "LinePath":
49
+ let p = e;
50
+ i(p.points, p.lineWidth, s, c, d) && f.push({
51
+ id: e.id,
52
+ element: e,
53
+ originalEvent: a,
54
+ posOnMap: {
55
+ x: e.x,
56
+ y: e.y
57
+ }
58
+ });
59
+ break;
60
+ }
61
+ }
62
+ return f.length === 0 ? null : (f.length === 1 || f.sort((e, t) => e.element.zIndex > t.element.zIndex ? -1 : e.element.zIndex < t.element.zIndex || e.id > t.id ? 1 : e.id < t.id ? -1 : 0), f[0]);
59
63
  }
60
- export {
61
- O as default
62
- };
64
+ //#endregion
65
+ export { a as default };
@@ -1,7 +1,10 @@
1
- function e(x, l, y, u) {
2
- const t = l.x - x.x, c = l.y - x.y, s = u.x - y.x, d = u.y - y.y, _ = (-c * (x.x - y.x) + t * (x.y - y.y)) / (-s * c + t * d), o = (+s * (x.y - y.y) - d * (x.x - y.x)) / (-s * c + t * d);
3
- return _ >= 0 && _ <= 1 && o >= 0 && o <= 1 ? { x: x.x + o * t, y: x.y + o * c } : null;
1
+ //#region lib/collisions/lineWithLine.ts
2
+ function e(e, t, n, r) {
3
+ let i = t.x - e.x, a = t.y - e.y, o = r.x - n.x, s = r.y - n.y, c = (-a * (e.x - n.x) + i * (e.y - n.y)) / (-o * a + i * s), l = (+o * (e.y - n.y) - s * (e.x - n.x)) / (-o * a + i * s);
4
+ return c >= 0 && c <= 1 && l >= 0 && l <= 1 ? {
5
+ x: e.x + l * i,
6
+ y: e.y + l * a
7
+ } : null;
4
8
  }
5
- export {
6
- e as default
7
- };
9
+ //#endregion
10
+ export { e as default };
@@ -1,6 +1,6 @@
1
- function e(n, t, a, c, s) {
2
- return (n - c) * (n - c) + (t - s) * (t - s) <= a * a;
1
+ //#region lib/collisions/pointInCircle.ts
2
+ function e(e, t, n, r, i) {
3
+ return (e - r) * (e - r) + (t - i) * (t - i) <= n * n;
3
4
  }
4
- export {
5
- e as default
6
- };
5
+ //#endregion
6
+ export { e as default };
@@ -1,21 +1,19 @@
1
- function s(r, a, t, u = 1) {
2
- let n = !1;
3
- for (let e = 0; e < r.length; e++) {
4
- const l = r[e].x * u, f = r[e].y * u;
5
- if (a === l && t === f)
6
- return !0;
7
- let c = e + 1;
8
- c >= r.length && (c = 0);
9
- const j = r[c].x * u, o = r[c].y * u;
10
- if (f > t != o > t) {
11
- const g = (a - l) * (o - f) - (j - l) * (t - f);
12
- if (g === 0)
13
- return !0;
14
- g < 0 != o < f && (n = !n);
15
- }
16
- }
17
- return n;
1
+ //#region lib/collisions/pointInPolygon.ts
2
+ function e(e, t, n, r = 1) {
3
+ let i = !1;
4
+ for (let a = 0; a < e.length; a++) {
5
+ let o = e[a].x * r, s = e[a].y * r;
6
+ if (t === o && n === s) return !0;
7
+ let c = a + 1;
8
+ c >= e.length && (c = 0);
9
+ let l = e[c].x * r, u = e[c].y * r;
10
+ if (s > n != u > n) {
11
+ let e = (t - o) * (u - s) - (l - o) * (n - s);
12
+ if (e === 0) return !0;
13
+ e < 0 != u < s && (i = !i);
14
+ }
15
+ }
16
+ return i;
18
17
  }
19
- export {
20
- s as default
21
- };
18
+ //#endregion
19
+ export { e as default };
@@ -1,11 +1,11 @@
1
- function L(f, M, x, I, u, c, s) {
2
- let d = u, h = c;
3
- if (s) {
4
- const e = f + x / 2, t = M + I / 2;
5
- d = e + (u - e) * Math.cos(-s) - (c - t) * Math.sin(-s), h = t + (c - t) * Math.cos(-s) + (u - e) * Math.sin(-s);
6
- }
7
- return f <= d && d <= f + x && M <= h && h <= M + I;
1
+ //#region lib/collisions/pointInRectangle.ts
2
+ function e(e, t, n, r, i, a, o) {
3
+ let s = i, c = a;
4
+ if (o) {
5
+ let l = e + n / 2, u = t + r / 2;
6
+ s = l + (i - l) * Math.cos(-o) - (a - u) * Math.sin(-o), c = u + (a - u) * Math.cos(-o) + (i - l) * Math.sin(-o);
7
+ }
8
+ return e <= s && s <= e + n && t <= c && c <= t + r;
8
9
  }
9
- export {
10
- L as default
11
- };
10
+ //#endregion
11
+ export { e as default };
@@ -1,45 +1,24 @@
1
- import h from "./pointInCircle.js";
2
- function q(r, m, u, n, x = 1) {
3
- const a = m / 2;
4
- if (h(
5
- r[0].x * x,
6
- r[0].y * x,
7
- a * x,
8
- u,
9
- n
10
- ) || h(
11
- r[r.length - 1].x * x,
12
- r[r.length - 1].y * x,
13
- a * x,
14
- u,
15
- n
16
- ))
17
- return !0;
18
- for (let f = 1; f < r.length; f++) {
19
- const y = {
20
- x: r[f - 1].x * x,
21
- y: r[f - 1].y * x
22
- }, c = {
23
- x: r[f].x * x,
24
- y: r[f].y * x
25
- }, d = y.x - c.x, o = y.y - c.y, s = Math.sqrt(d * d + o * o), t = ((u - y.x) * (c.x - y.x) + (n - y.y) * (c.y - y.y)) / Math.pow(s, 2);
26
- if (t < 0 || t > 1)
27
- continue;
28
- const g = {
29
- x: y.x + t * (c.x - y.x),
30
- y: y.y + t * (c.y - y.y)
31
- };
32
- if (h(
33
- g.x,
34
- g.y,
35
- a * x,
36
- u,
37
- n
38
- ))
39
- return !0;
40
- }
41
- return !1;
1
+ import e from "./pointInCircle.js";
2
+ //#region lib/collisions/pointOnLinePath.ts
3
+ function t(t, n, r, i, a = 1) {
4
+ let o = n / 2;
5
+ if (e(t[0].x * a, t[0].y * a, o * a, r, i) || e(t[t.length - 1].x * a, t[t.length - 1].y * a, o * a, r, i)) return !0;
6
+ for (let n = 1; n < t.length; n++) {
7
+ let s = {
8
+ x: t[n - 1].x * a,
9
+ y: t[n - 1].y * a
10
+ }, c = {
11
+ x: t[n].x * a,
12
+ y: t[n].y * a
13
+ }, l = s.x - c.x, u = s.y - c.y, d = Math.sqrt(l * l + u * u), f = ((r - s.x) * (c.x - s.x) + (i - s.y) * (c.y - s.y)) / d ** 2;
14
+ if (f < 0 || f > 1) continue;
15
+ let p = {
16
+ x: s.x + f * (c.x - s.x),
17
+ y: s.y + f * (c.y - s.y)
18
+ };
19
+ if (e(p.x, p.y, o * a, r, i)) return !0;
20
+ }
21
+ return !1;
42
22
  }
43
- export {
44
- q as default
45
- };
23
+ //#endregion
24
+ export { t as default };
@@ -1,7 +1,14 @@
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 };
1
+ //#region lib/events/computeEventPositions.ts
2
+ function e(e, t, n) {
3
+ let r = -e.left - e.deltaLeft + t.pageX - t.target.offsetLeft, i = -e.top - e.deltaTop + t.pageY - t.target.offsetTop;
4
+ return {
5
+ left: r,
6
+ top: i,
7
+ posOnMap: {
8
+ x: Math.floor(r / n / e.zoom),
9
+ y: Math.floor(i / n / e.zoom)
10
+ }
11
+ };
4
12
  }
5
- export {
6
- n as default
7
- };
13
+ //#endregion
14
+ export { e as default };
@@ -1,18 +1,14 @@
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
- };
1
+ import e from "../collisions/collideElement.js";
2
+ import t from "./computeEventPositions.js";
3
+ //#region lib/events/elementClick.ts
4
+ function n(n, r, i, a) {
5
+ let { left: o, top: s, posOnMap: c } = t(a, n, i), l = e(n.nativeEvent, r, o, s, i, a.zoom);
6
+ return l === null ? {
7
+ id: null,
8
+ element: null,
9
+ originalEvent: n.nativeEvent,
10
+ posOnMap: c
11
+ } : l;
15
12
  }
16
- export {
17
- v as default
18
- };
13
+ //#endregion
14
+ export { n as default };