canvas2d-wrapper 1.6.2 → 1.7.1
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/index.js +109 -110
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +109 -110
- package/dist/index.modern.js.map +1 -1
- package/package.json +12 -11
package/dist/index.js
CHANGED
@@ -3,6 +3,65 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
|
|
3
3
|
var React = require('react');
|
4
4
|
var React__default = _interopDefault(React);
|
5
5
|
|
6
|
+
function _arrayLikeToArray(r, a) {
|
7
|
+
(null == a || a > r.length) && (a = r.length);
|
8
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
9
|
+
return n;
|
10
|
+
}
|
11
|
+
function _defineProperties(e, r) {
|
12
|
+
for (var t = 0; t < r.length; t++) {
|
13
|
+
var o = r[t];
|
14
|
+
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
|
15
|
+
}
|
16
|
+
}
|
17
|
+
function _createClass(e, r, t) {
|
18
|
+
return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
|
19
|
+
writable: !1
|
20
|
+
}), e;
|
21
|
+
}
|
22
|
+
function _createForOfIteratorHelperLoose(r, e) {
|
23
|
+
var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
24
|
+
if (t) return (t = t.call(r)).next.bind(t);
|
25
|
+
if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
|
26
|
+
t && (r = t);
|
27
|
+
var o = 0;
|
28
|
+
return function () {
|
29
|
+
return o >= r.length ? {
|
30
|
+
done: !0
|
31
|
+
} : {
|
32
|
+
done: !1,
|
33
|
+
value: r[o++]
|
34
|
+
};
|
35
|
+
};
|
36
|
+
}
|
37
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
38
|
+
}
|
39
|
+
function _extends() {
|
40
|
+
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
41
|
+
for (var e = 1; e < arguments.length; e++) {
|
42
|
+
var t = arguments[e];
|
43
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
44
|
+
}
|
45
|
+
return n;
|
46
|
+
}, _extends.apply(null, arguments);
|
47
|
+
}
|
48
|
+
function _inheritsLoose(t, o) {
|
49
|
+
t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o);
|
50
|
+
}
|
51
|
+
function _objectWithoutPropertiesLoose(r, e) {
|
52
|
+
if (null == r) return {};
|
53
|
+
var t = {};
|
54
|
+
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
|
55
|
+
if (e.includes(n)) continue;
|
56
|
+
t[n] = r[n];
|
57
|
+
}
|
58
|
+
return t;
|
59
|
+
}
|
60
|
+
function _setPrototypeOf(t, e) {
|
61
|
+
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
|
62
|
+
return t.__proto__ = e, t;
|
63
|
+
}, _setPrototypeOf(t, e);
|
64
|
+
}
|
6
65
|
function _toPrimitive(t, r) {
|
7
66
|
if ("object" != typeof t || !t) return t;
|
8
67
|
var e = t[Symbol.toPrimitive];
|
@@ -15,93 +74,14 @@ function _toPrimitive(t, r) {
|
|
15
74
|
}
|
16
75
|
function _toPropertyKey(t) {
|
17
76
|
var i = _toPrimitive(t, "string");
|
18
|
-
return "symbol" == typeof i ? i :
|
19
|
-
}
|
20
|
-
function _defineProperties(target, props) {
|
21
|
-
for (var i = 0; i < props.length; i++) {
|
22
|
-
var descriptor = props[i];
|
23
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
24
|
-
descriptor.configurable = true;
|
25
|
-
if ("value" in descriptor) descriptor.writable = true;
|
26
|
-
Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
|
27
|
-
}
|
28
|
-
}
|
29
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
30
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
31
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
32
|
-
Object.defineProperty(Constructor, "prototype", {
|
33
|
-
writable: false
|
34
|
-
});
|
35
|
-
return Constructor;
|
36
|
-
}
|
37
|
-
function _extends() {
|
38
|
-
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
39
|
-
for (var i = 1; i < arguments.length; i++) {
|
40
|
-
var source = arguments[i];
|
41
|
-
for (var key in source) {
|
42
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
43
|
-
target[key] = source[key];
|
44
|
-
}
|
45
|
-
}
|
46
|
-
}
|
47
|
-
return target;
|
48
|
-
};
|
49
|
-
return _extends.apply(this, arguments);
|
50
|
-
}
|
51
|
-
function _inheritsLoose(subClass, superClass) {
|
52
|
-
subClass.prototype = Object.create(superClass.prototype);
|
53
|
-
subClass.prototype.constructor = subClass;
|
54
|
-
_setPrototypeOf(subClass, superClass);
|
77
|
+
return "symbol" == typeof i ? i : i + "";
|
55
78
|
}
|
56
|
-
function
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
return _setPrototypeOf(o, p);
|
62
|
-
}
|
63
|
-
function _objectWithoutPropertiesLoose(source, excluded) {
|
64
|
-
if (source == null) return {};
|
65
|
-
var target = {};
|
66
|
-
var sourceKeys = Object.keys(source);
|
67
|
-
var key, i;
|
68
|
-
for (i = 0; i < sourceKeys.length; i++) {
|
69
|
-
key = sourceKeys[i];
|
70
|
-
if (excluded.indexOf(key) >= 0) continue;
|
71
|
-
target[key] = source[key];
|
72
|
-
}
|
73
|
-
return target;
|
74
|
-
}
|
75
|
-
function _unsupportedIterableToArray(o, minLen) {
|
76
|
-
if (!o) return;
|
77
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
78
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
79
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
80
|
-
if (n === "Map" || n === "Set") return Array.from(o);
|
81
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
82
|
-
}
|
83
|
-
function _arrayLikeToArray(arr, len) {
|
84
|
-
if (len == null || len > arr.length) len = arr.length;
|
85
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
86
|
-
return arr2;
|
87
|
-
}
|
88
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) {
|
89
|
-
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
90
|
-
if (it) return (it = it.call(o)).next.bind(it);
|
91
|
-
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
92
|
-
if (it) o = it;
|
93
|
-
var i = 0;
|
94
|
-
return function () {
|
95
|
-
if (i >= o.length) return {
|
96
|
-
done: true
|
97
|
-
};
|
98
|
-
return {
|
99
|
-
done: false,
|
100
|
-
value: o[i++]
|
101
|
-
};
|
102
|
-
};
|
79
|
+
function _unsupportedIterableToArray(r, a) {
|
80
|
+
if (r) {
|
81
|
+
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
82
|
+
var t = {}.toString.call(r).slice(8, -1);
|
83
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
103
84
|
}
|
104
|
-
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
105
85
|
}
|
106
86
|
|
107
87
|
function calcTileSize(tileSize, zoom) {
|
@@ -145,6 +125,7 @@ function inRect(element, x, y, left, top, localTileSize) {
|
|
145
125
|
|
146
126
|
function collideElement(e, elements, left, top, tileSize, zoom) {
|
147
127
|
var localTileSize = calcTileSize(tileSize, zoom);
|
128
|
+
var validElements = [];
|
148
129
|
for (var _iterator = _createForOfIteratorHelperLoose(elements), _step; !(_step = _iterator()).done;) {
|
149
130
|
var element = _step.value;
|
150
131
|
var x = element.x * localTileSize;
|
@@ -153,34 +134,55 @@ function collideElement(e, elements, left, top, tileSize, zoom) {
|
|
153
134
|
case 'Rect':
|
154
135
|
case 'CanvasImage':
|
155
136
|
if (inRect(element, x, y, left, top, localTileSize)) {
|
156
|
-
|
137
|
+
validElements.push({
|
157
138
|
id: element.id,
|
158
139
|
element: element,
|
159
140
|
originalEvent: e
|
160
|
-
};
|
141
|
+
});
|
161
142
|
}
|
162
143
|
break;
|
163
144
|
case 'Circle':
|
164
145
|
if (inCircle(element, x, y, left, top, localTileSize)) {
|
165
|
-
|
146
|
+
validElements.push({
|
166
147
|
id: element.id,
|
167
148
|
element: element,
|
168
149
|
originalEvent: e
|
169
|
-
};
|
150
|
+
});
|
170
151
|
}
|
171
152
|
break;
|
172
153
|
case 'Polygon':
|
173
154
|
if (inPoly(element, x, y, left, top, localTileSize)) {
|
174
|
-
|
155
|
+
validElements.push({
|
175
156
|
id: element.id,
|
176
157
|
element: element,
|
177
158
|
originalEvent: e
|
178
|
-
};
|
159
|
+
});
|
179
160
|
}
|
180
161
|
break;
|
181
162
|
}
|
182
163
|
}
|
183
|
-
|
164
|
+
if (validElements.length === 0) {
|
165
|
+
return null;
|
166
|
+
}
|
167
|
+
if (validElements.length === 1) {
|
168
|
+
return validElements[0];
|
169
|
+
}
|
170
|
+
validElements.sort(function (a, b) {
|
171
|
+
if (a.zIndex > b.zIndex) {
|
172
|
+
return 1;
|
173
|
+
}
|
174
|
+
if (a.zIndex < b.zIndex) {
|
175
|
+
return -1;
|
176
|
+
}
|
177
|
+
if (a.id > b.id) {
|
178
|
+
return 1;
|
179
|
+
}
|
180
|
+
if (a.id < b.id) {
|
181
|
+
return -1;
|
182
|
+
}
|
183
|
+
return 0;
|
184
|
+
});
|
185
|
+
return validElements[0];
|
184
186
|
}
|
185
187
|
|
186
188
|
function elementClick(e, elements, tileSize, state) {
|
@@ -301,7 +303,10 @@ function sortElements(elements) {
|
|
301
303
|
if (a.fill < b.fill) {
|
302
304
|
return 1;
|
303
305
|
}
|
304
|
-
|
306
|
+
if (a.fill > b.fill) {
|
307
|
+
return -1;
|
308
|
+
}
|
309
|
+
return 0;
|
305
310
|
});
|
306
311
|
return elements;
|
307
312
|
}
|
@@ -314,7 +319,7 @@ var CanvasObject = /*#__PURE__*/function () {
|
|
314
319
|
this['z-index'] = zIndex;
|
315
320
|
this.draggable = draggable;
|
316
321
|
}
|
317
|
-
_createClass(CanvasObject, [{
|
322
|
+
return _createClass(CanvasObject, [{
|
318
323
|
key: "zIndex",
|
319
324
|
get: function get() {
|
320
325
|
return this['z-index'] || 0;
|
@@ -328,11 +333,9 @@ var CanvasObject = /*#__PURE__*/function () {
|
|
328
333
|
return 'CanvasObject';
|
329
334
|
}
|
330
335
|
}]);
|
331
|
-
return CanvasObject;
|
332
336
|
}();
|
333
337
|
|
334
338
|
var ColoredCanvasObject = /*#__PURE__*/function (_CanvasObject) {
|
335
|
-
_inheritsLoose(ColoredCanvasObject, _CanvasObject);
|
336
339
|
function ColoredCanvasObject(id, x, y, fill, stroke, zIndex, draggable) {
|
337
340
|
var _this;
|
338
341
|
_this = _CanvasObject.call(this, id, x, y, zIndex, draggable) || this;
|
@@ -340,17 +343,16 @@ var ColoredCanvasObject = /*#__PURE__*/function (_CanvasObject) {
|
|
340
343
|
_this.stroke = stroke;
|
341
344
|
return _this;
|
342
345
|
}
|
343
|
-
|
346
|
+
_inheritsLoose(ColoredCanvasObject, _CanvasObject);
|
347
|
+
return _createClass(ColoredCanvasObject, [{
|
344
348
|
key: "constructorName",
|
345
349
|
get: function get() {
|
346
350
|
return 'ColoredCanvasObject';
|
347
351
|
}
|
348
352
|
}]);
|
349
|
-
return ColoredCanvasObject;
|
350
353
|
}(CanvasObject);
|
351
354
|
|
352
355
|
var Circle = /*#__PURE__*/function (_ColoredCanvasObject) {
|
353
|
-
_inheritsLoose(Circle, _ColoredCanvasObject);
|
354
356
|
function Circle(_ref) {
|
355
357
|
var _this;
|
356
358
|
var id = _ref.id,
|
@@ -365,17 +367,16 @@ var Circle = /*#__PURE__*/function (_ColoredCanvasObject) {
|
|
365
367
|
_this.radius = radius;
|
366
368
|
return _this;
|
367
369
|
}
|
368
|
-
|
370
|
+
_inheritsLoose(Circle, _ColoredCanvasObject);
|
371
|
+
return _createClass(Circle, [{
|
369
372
|
key: "constructorName",
|
370
373
|
get: function get() {
|
371
374
|
return 'Circle';
|
372
375
|
}
|
373
376
|
}]);
|
374
|
-
return Circle;
|
375
377
|
}(ColoredCanvasObject);
|
376
378
|
|
377
379
|
var CanvasImage = /*#__PURE__*/function (_CanvasObject) {
|
378
|
-
_inheritsLoose(CanvasImage, _CanvasObject);
|
379
380
|
function CanvasImage(_ref) {
|
380
381
|
var _this;
|
381
382
|
var id = _ref.id,
|
@@ -392,6 +393,7 @@ var CanvasImage = /*#__PURE__*/function (_CanvasObject) {
|
|
392
393
|
_this.src = src;
|
393
394
|
return _this;
|
394
395
|
}
|
396
|
+
_inheritsLoose(CanvasImage, _CanvasObject);
|
395
397
|
var _proto = CanvasImage.prototype;
|
396
398
|
_proto.crop = function crop(x, y, width, height) {
|
397
399
|
this.sx = sx;
|
@@ -399,17 +401,15 @@ var CanvasImage = /*#__PURE__*/function (_CanvasObject) {
|
|
399
401
|
this.swidth = swidth;
|
400
402
|
this.sheight = sheight;
|
401
403
|
};
|
402
|
-
_createClass(CanvasImage, [{
|
404
|
+
return _createClass(CanvasImage, [{
|
403
405
|
key: "constructorName",
|
404
406
|
get: function get() {
|
405
407
|
return 'CanvasImage';
|
406
408
|
}
|
407
409
|
}]);
|
408
|
-
return CanvasImage;
|
409
410
|
}(CanvasObject);
|
410
411
|
|
411
412
|
var Rect = /*#__PURE__*/function (_ColoredCanvasObject) {
|
412
|
-
_inheritsLoose(Rect, _ColoredCanvasObject);
|
413
413
|
function Rect(_ref) {
|
414
414
|
var _this;
|
415
415
|
var id = _ref.id,
|
@@ -426,17 +426,16 @@ var Rect = /*#__PURE__*/function (_ColoredCanvasObject) {
|
|
426
426
|
_this.height = height;
|
427
427
|
return _this;
|
428
428
|
}
|
429
|
-
|
429
|
+
_inheritsLoose(Rect, _ColoredCanvasObject);
|
430
|
+
return _createClass(Rect, [{
|
430
431
|
key: "constructorName",
|
431
432
|
get: function get() {
|
432
433
|
return 'Rect';
|
433
434
|
}
|
434
435
|
}]);
|
435
|
-
return Rect;
|
436
436
|
}(ColoredCanvasObject);
|
437
437
|
|
438
438
|
var Polygon = /*#__PURE__*/function (_ColoredCanvasObject) {
|
439
|
-
_inheritsLoose(Polygon, _ColoredCanvasObject);
|
440
439
|
function Polygon(_ref) {
|
441
440
|
var _this;
|
442
441
|
var id = _ref.id,
|
@@ -449,13 +448,13 @@ var Polygon = /*#__PURE__*/function (_ColoredCanvasObject) {
|
|
449
448
|
_this.points = points;
|
450
449
|
return _this;
|
451
450
|
}
|
452
|
-
|
451
|
+
_inheritsLoose(Polygon, _ColoredCanvasObject);
|
452
|
+
return _createClass(Polygon, [{
|
453
453
|
key: "constructorName",
|
454
454
|
get: function get() {
|
455
455
|
return 'Polygon';
|
456
456
|
}
|
457
457
|
}]);
|
458
|
-
return Polygon;
|
459
458
|
}(ColoredCanvasObject);
|
460
459
|
|
461
460
|
function renderCircle(context, element, left, top, localTileSize) {
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/functions/calcTileSize.js","../src/collisions/inCircle.js","../src/collisions/inPoly.js","../src/collisions/inRect.js","../src/collisions/collideElement.js","../src/events/elementClick.js","../src/events/elementRightClick.js","../src/events/mouseMove.js","../src/events/mouseWheel.js","../src/functions/sortElements.js","../src/shapes/CanvasObject.js","../src/shapes/ColoredCanvasObject.js","../src/shapes/Circle.js","../src/shapes/CanvasImage.js","../src/shapes/Rect.js","../src/shapes/Polygon.js","../src/render/renderCircle.js","../src/render/renderImage.js","../src/render/renderRect.js","../src/render/renderPolygon.js","../src/render/renderCanvas.js","../src/Canvas2D.js","../src/functions/preloadImages.js","../src/hooks/useGamepad.js","../src/hooks/useKeyboard.js","../src/hooks/useMousePosition.js","../src/hooks/useWindowDimensions.js"],"sourcesContent":["export default function calcTileSize(tileSize, zoom) {\n\treturn tileSize * zoom;\n}\n","export default function inCircle(element, x, y, left, top, localTileSize) {\n\tconst distance = (\n\t\t(x - left) * (x - left) +\n\t\t(y - top) * (y - top)\n\t);\n\n\treturn (distance <= ((element.radius * localTileSize) * (element.radius * localTileSize)));\n}","export default function inPoly(element, x, y, mouseX, mouseY, localTileSize) {\n\tconst j = element.points.length - 1;\n\tlet counter = false;\n\n\tfor(let i = 0; i < element.points.length; i++) {\n\t\tconst iX = element.points[i].x * localTileSize;\n\t\tconst iY = element.points[i].y * localTileSize;\n\n\t\t// The mouse is exactly at a polygon point\n\t\tif(mouseX === iX && mouseY === iY) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst jX = element.points[j].x * localTileSize;\n\t\tconst jY = element.points[j].y * localTileSize;\n\n\t\tif((iY > y) !== (jY > y)) {\n\t\t\tconst slope = (mouseX - iX) * (jY - iY) - (jX - iX) * (mouseY - iY);\n\n\t\t\t// On the boundary\n\t\t\tif(slope === 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Alternate, odd count = inside, even count = outside\n\t\t\tif((slope < 0) !== (jY < iY)) {\n\t\t\t\tcounter = !counter;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn counter;\n}\n","export default function inRect(element, x, y, left, top, localTileSize) {\n\tconst width = element.width * localTileSize;\n\tconst height = element.height * localTileSize;\n\n\treturn (x <= left && left <= (x + width) && y <= top && top <= (y + height));\n}","import calcTileSize from '../functions/calcTileSize';\n\nimport inCircle from './inCircle';\nimport inPoly from './inPoly';\nimport inRect from './inRect';\n\nexport default function collideElement(e, elements, left, top, tileSize, zoom) {\n\tconst localTileSize = calcTileSize(tileSize, zoom);\n\n\tfor(const element of elements) {\n\t\tconst x = element.x * localTileSize;\n\t\tconst y = element.y * localTileSize;\n\n\t\tswitch(element.constructorName) {\n\t\t\tcase 'Rect':\n\t\t\tcase 'CanvasImage':\n\t\t\t\tif(inRect(element, x, y, left, top, localTileSize)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: element.id,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\toriginalEvent: e,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Circle':\n\t\t\t\tif(inCircle(element, x, y, left, top, localTileSize)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: element.id,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\toriginalEvent: e,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Polygon':\n\t\t\t\tif(inPoly(element, x, y, left, top, localTileSize)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: element.id,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\toriginalEvent: e,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn null;\n}","import collideElement from '../collisions/collideElement';\n\nexport default function elementClick(e, elements, tileSize, state) {\n\tconst left = -state.left - state.deltaLeft + e.pageX - e.target.offsetLeft;\n\tconst top = -state.top - state.deltaTop + e.pageY - e.target.offsetTop;\n\n\tconst clickedElement = collideElement(e, elements, left, top, tileSize, state.zoom);\n\tif(clickedElement !== null) {\n\t\treturn clickedElement;\n\t}\n\n\treturn {\n\t\tid: null,\n\t\telement: null,\n\t\toriginalEvent: e,\n\t};\n}\n","import collideElement from '../collisions/collideElement';\n\nexport default function elementRightClick(e, elements, tileSize, state) {\n\tconst left = -state.left - state.deltaLeft + e.pageX - e.target.offsetLeft;\n\tconst top = -state.top - state.deltaTop + e.pageY - e.target.offsetTop;\n\n\tconst clickedElement = collideElement(e, elements, left, top, tileSize, state.zoom);\n\tif(clickedElement !== null) {\n\t\treturn clickedElement;\n\t}\n\n\treturn {\n\t\tid: null,\n\t\telement: null,\n\t\toriginalEvent: e,\n\t};\n}\n","import collideElement from '../collisions/collideElement';\n\nconst LEFT_BUTTON = 1;\nlet selectedObject = null;\nlet unselectTimeoutId = 0;\nconst UNSELECT_TIMEOUT_MS = 300;\n\nexport default function mouseMove(event, elements, tileSize, props, setProps, lockXAxis, lockYAxis, dragObjects, onElementMoved, onHover) {\n\tconst newProps = {\n\t\t...props,\n\t};\n\n\tconst left = -props.left - props.deltaLeft + event.pageX - event.target.offsetLeft;\n\tconst top = -props.top - props.deltaTop + event.pageY - event.target.offsetTop;\n\n\tif(event.nativeEvent.buttons === LEFT_BUTTON && !!props.prevX) {\n\t\tlet moved = false;\n\t\tif(dragObjects) {\n\t\t\tif(selectedObject === null) {\n\t\t\t\tselectedObject = collideElement(event, elements, left, top, tileSize, props.zoom);\n\t\t\t}\n\n\t\t\tif(selectedObject !== null && selectedObject.element.draggable) {\n\t\t\t\tselectedObject.element.x = (-props.left - props.deltaLeft) + (event.clientX - props.boundingClientRect.left) - selectedObject.element.width / 2;\n\t\t\t\tselectedObject.element.y = (-props.top - props.deltaLeft) + (event.clientY - props.boundingClientRect.top) - selectedObject.element.height / 2;\n\n\t\t\t\tmoved = true;\n\n\t\t\t\tif(onElementMoved) {\n\t\t\t\t\tonElementMoved(\n\t\t\t\t\t\tselectedObject,\n\t\t\t\t\t\t(event.screenX - props.prevX),\n\t\t\t\t\t\t(event.screenY - props.prevY),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif(onHover) {\n\t\t\t\t\tonHover(null);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(!moved) {\n\t\t\t// Lock Axis\n\t\t\tif(!lockXAxis) {\n\t\t\t\tnewProps.left += (event.screenX - props.prevX);\n\t\t\t}\n\n\t\t\tif(!lockYAxis) {\n\t\t\t\tnewProps.top += (event.screenY - props.prevY);\n\t\t\t}\n\t\t}\n\n\t\tif(event.nativeEvent.pointerType !== 'mouse') {\n\t\t\tunselectTimeoutId = setTimeout(() => {\n\t\t\t\tselectedObject = null;\n\t\t\t\tsetProps({\n\t\t\t\t\t...newProps,\n\t\t\t\t\tprevX: null,\n\t\t\t\t\tprevY: null,\n\t\t\t\t});\n\t\t\t}, UNSELECT_TIMEOUT_MS);\n\t\t}\n\t} else {\n\t\tif(onHover) {\n\t\t\tonHover(collideElement(event, elements, left, top, tileSize, props.zoom), { x: left, y: top });\n\t\t}\n\n\t\tselectedObject = null;\n\t}\n\n\tsetProps({\n\t\t...newProps,\n\t\tprevX: event.screenX,\n\t\tprevY: event.screenY,\n\t});\n}\n","const WHEEL_DELTA = 0.05;\n\nexport default function mouseWheel(event, props, setProps, minZoom, maxZoom) {\n\tlet zoom = props.zoom;\n\tif(event.deltaY < 0) {\n\t\tzoom += WHEEL_DELTA;\n\t} else {\n\t\tzoom -= WHEEL_DELTA;\n\t}\n\n\tzoom = Math.max(zoom, minZoom);\n\tzoom = Math.min(zoom, maxZoom);\n\n\t/** TODO: zoom on mouse **/\n\n\tsetProps({\n\t\t...props,\n\t\tzoom,\n\t});\n}\n","export default function sortElements(elements) {\n\telements.sort((a, b) => {\n\t\tif(a.zIndex !== b.zIndex) {\n\t\t\treturn a.zIndex - b.zIndex;\n\t\t}\n\n\t\tif(a.fill === b.fill) {\n\t\t\tif(a.stroke === b.stroke) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tif(a.stroke < b.stroke) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\treturn -1;\n\t\t}\n\n\t\tif(a.fill < b.fill) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn -1;\n\t});\n\n\treturn elements;\n}\n","export default class CanvasObject {\n\tconstructor(id, x, y, zIndex, draggable) {\n\t\tthis.id = id;\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis['z-index'] = zIndex;\n\t\tthis.draggable = draggable;\n\t}\n\n\tset zIndex(zIndex) {\n\t\tthis['z-index'] = zIndex;\n\t}\n\n\tget zIndex() {\n\t\treturn this['z-index'] || 0;\n\t}\n\n\tget constructorName() {\n\t\treturn 'CanvasObject';\n\t}\n}\n","import CanvasObject from './CanvasObject';\n\nexport default class ColoredCanvasObject extends CanvasObject {\n\tconstructor(id, x, y, fill, stroke, zIndex, draggable) {\n\t\tsuper(id, x, y, zIndex, draggable);\n\n\t\tthis.fill = fill;\n\t\tthis.stroke = stroke;\n\t}\n\n\tget constructorName() {\n\t\treturn 'ColoredCanvasObject';\n\t}\n}","import ColoredCanvasObject from './ColoredCanvasObject';\n\nexport default class Circle extends ColoredCanvasObject {\n\t/**\n\t * Represents a Rectangle that will be created on the canvas.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tx Left coordinate of circle center in canvas\n\t * @param {number}\t\t\ty Top coordinate of circle center in canvas\n\t * @param {number} \t\tradius Circle radius in canvas\n\t * @param {string} \tfill \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.fillStyle\n\t * @param {string} \tstroke \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.strokeStyle\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, x, y, radius, fill, stroke, zIndex, draggable }) {\n\t\tsuper(id, x, y, fill, stroke, zIndex, draggable);\n\n\t\tthis.radius = radius;\n\t}\n\n\tget constructorName() {\n\t\treturn 'Circle';\n\t}\n}\n\n","import CanvasObject from './CanvasObject';\n\nexport default class CanvasImage extends CanvasObject {\n\t/**\n\t * Represents an Image that will be created on the canvas.\n\t * Note: a cache to prevent too much loading is implemented, you can create as much\n\t * images as you want of the same source without any performance issue.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tx Left coordinate of top-left corner of picture in canvas\n\t * @param {number}\t\t\ty Top coordinate of top-left corner of picture in canvas\n\t * @param {number} \t\twidth Picture width in canvas\n\t * @param {number} \t\theight Picture height in canvas\n\t * @param {string} \tsrc \tImage source link\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, x, y, width, height, src, zIndex, draggable }) {\n\t\tsuper(id, x, y, zIndex, draggable);\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.src = src;\n\t}\n\n\tcrop(x, y, width, height) {\n\t\tthis.sx = sx;\n\t\tthis.sy = sx;\n\t\tthis.swidth = swidth;\n\t\tthis.sheight = sheight;\n\t}\n\n\tget constructorName() {\n\t\treturn 'CanvasImage';\n\t}\n}\n","import ColoredCanvasObject from './ColoredCanvasObject';\n\nexport default class Rect extends ColoredCanvasObject {\n\t/**\n\t * Represents a Rectangle that will be created on the canvas.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tx Left coordinate of top-left corner of rectangle in canvas\n\t * @param {number}\t\t\ty Top coordinate of top-left corner of rectangle in canvas\n\t * @param {number} \t\twidth Rectangle width in canvas\n\t * @param {number} \t\theight Rectangle height in canvas\n\t * @param {string} \tfill \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.fillStyle\n\t * @param {string} \tstroke \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.strokeStyle\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, x, y, width, height, fill, stroke, zIndex, draggable }) {\n\t\tsuper(id, x, y, fill, stroke, zIndex, draggable);\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t}\n\n\tget constructorName() {\n\t\treturn 'Rect';\n\t}\n}\n","import ColoredCanvasObject from './ColoredCanvasObject';\n\nexport default class Polygon extends ColoredCanvasObject {\n\t/**\n\t * Represents a Rectangle that will be created on the canvas.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tpoints Array of coordinates {x, y} of the polygon points\n\t * @param {string} \tfill \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.fillStyle\n\t * @param {string} \tstroke \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.strokeStyle\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, points, fill, stroke, zIndex, draggable }) {\n\t\tsuper(id, points[0].x, points[0].y, fill, stroke, zIndex, draggable);\n\n\t\tthis.points = points;\n\t}\n\n\tget constructorName() {\n\t\treturn 'Polygon';\n\t}\n}\n","export default function renderCircle(context, element, left, top, localTileSize) {\n\tcontext.beginPath();\n\n\tcontext.arc(\n\t\tleft + element.x * localTileSize,\n\t\ttop + element.y * localTileSize,\n\t\telement.radius * localTileSize,\n\t\t0,\n\t\t2 * Math.PI\n\t);\n\n\tif(element.fill) {\n\t\tcontext.fill();\n\t}\n\tif(element.stroke) {\n\t\tcontext.stroke();\n\t}\n}\n","window.__canvas2dWrapper__ = {};\nwindow.__canvas2dWrapper__.imgCache = {};\n\nexport default function renderImage(context, element, left, top, localTileSize) {\n\tif(!__canvas2dWrapper__.imgCache[element.src]) {\n\t\t__canvas2dWrapper__.imgCache[element.src] = new Image();\n\t\t__canvas2dWrapper__.imgCache[element.src].src = element.src;\n\t}\n\n\tif(!element.sx) {\n\t\tcontext.drawImage(\n\t\t\t__canvas2dWrapper__.imgCache[element.src],\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize\n\t\t);\n\t} else {\n\t\tcontext.drawImage(\n\t\t\t__canvas2dWrapper__.imgCache[element.src],\n\t\t\telement.sx,\n\t\t\telement.sy,\n\t\t\telement.swidth,\n\t\t\telement.sheight,\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize\n\t\t);\n\t}\n}\n","export default function renderRect(context, element, left, top, localTileSize) {\n\tif(element.fill) {\n\t\tcontext.fillRect(\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize,\n\t\t);\n\t}\n\n\tif(element.stroke) {\n\t\tcontext.strokeRect(\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize,\n\t\t);\n\t}\n}\n","export default function renderRect(context, element, left, top, localTileSize) {\n\tcontext.beginPath();\n\n\tcontext.moveTo(\n\t\tleft + element.points[0].x * localTileSize,\n\t\ttop + element.points[0].y * localTileSize,\n\t);\n\n\tfor(let i = 0; i < element.points.length; i++) {\n\t\tcontext.lineTo(\n\t\t\tleft + element.points[i].x * localTileSize,\n\t\t\ttop + element.points[i].y * localTileSize,\n\t\t);\n\t}\n\n\tcontext.lineTo(\n\t\tleft + element.points[0].x * localTileSize,\n\t\ttop + element.points[0].y * localTileSize,\n\t);\n\n\tif(element.fill) {\n\t\tcontext.fill();\n\t}\n\tif(element.stroke) {\n\t\tcontext.stroke();\n\t}\n}\n","import Circle from '../shapes/Circle';\nimport CanvasImage from '../shapes/CanvasImage';\nimport Rect from '../shapes/Rect';\nimport Polygon from '../shapes/Polygon';\n\nimport calcTileSize from '../functions/calcTileSize';\n\nimport renderCircle from './renderCircle';\nimport renderImage from './renderImage';\nimport renderRect from './renderRect';\nimport renderPolygon from './renderPolygon';\n\nconst renderFn = {\n\t[(new Circle({})).constructorName]: renderCircle,\n\t[(new CanvasImage({})).constructorName]: renderImage,\n\t[(new Rect({})).constructorName]: renderRect,\n\t[(new Polygon({ points: [{}] })).constructorName]: renderPolygon,\n};\n\nexport default function renderCanvas(\n\tcontext,\n\twidth,\n\theight,\n\telements,\n\ttileSize,\n\tstate,\n) {\n\tconst left = state.left + state.deltaLeft;\n\tconst top = state.top + state.deltaTop;\n\n\tlet prevFillStyle = '';\n\tlet prevStrokeStyle = '';\n\n\tconst localTileSize = calcTileSize(tileSize, state.zoom);\n\n\tcontext.clearRect(0, 0, width, height);\n\n\tfor(const element of elements) {\n\t\tif(\n\t\t\telement.fill !== prevFillStyle &&\n\t\t\ttypeof element.fill !== 'undefined'\n\t\t) {\n\t\t\tcontext.fillStyle = element.fill;\n\t\t\tprevFillStyle = element.fill;\n\t\t}\n\n\t\tif(\n\t\t\telement.stroke !== prevStrokeStyle &&\n\t\t\ttypeof element.stroke !== 'undefined'\n\t\t) {\n\t\t\tcontext.strokeStyle = element.stroke;\n\t\t\tprevStrokeStyle = element.stroke;\n\t\t}\n\n\t\tconst type = element.constructorName;\n\t\tif(renderFn[type]) {\n\t\t\trenderFn[type](context, element, left, top, localTileSize);\n\t\t} else {\n\t\t\tthrow new Error('Unsupported shape type:' + type);\n\t\t}\n\t}\n}\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport './index.css';\n\nimport elementClick from './events/elementClick';\nimport elementRightClick from './events/elementRightClick';\nimport mouseMove from './events/mouseMove';\nimport mouseWheel from './events/mouseWheel';\n\nimport sortElements from './functions/sortElements';\n\nimport renderCanvas from './render/renderCanvas';\n\nconst elements = {};\n\nexport default function Canvas2D({\n\twidth,\n\theight,\n\ttrackMouseMove = true,\n\tminZoom = 1,\n\tmaxZoom = 1,\n\ttileSize = 1,\n\tonClick,\n\tonRightClick,\n\tonHover,\n\tonElementMoved,\n\tonWheel,\n\tonFrame,\n\tlockXAxis = false,\n\tlockYAxis = false,\n\tsmoothingQuality='medium',\n\tdragObjects=false,\n\tdeltaLeft=0,\n\tdeltaTop=0,\n\t...otherProps\n}) {\n\tif(!elements[otherProps.id]) {\n\t\telements[otherProps.id] = [];\n\t}\n\n\t// Hooks\n\tconst [state, setState] = useState({});\n\tconst canvasRef = useCallback((canvas) => {\n\t\tif(canvas !== null) {\n\t\t\tconst context = canvas.getContext('2d');\n\n\t\t\tif(smoothingQuality === false) {\n\t\t\t\tcontext.imageSmoothingEnabled = false;\n\t\t\t} else {\n\t\t\t\tcontext.imageSmoothingEnabled = true;\n\t\t\t\tcontext.imageSmoothingQuality = smoothingQuality;\n\t\t\t}\n\n\t\t\tsetState({\n\t\t\t\tboundingClientRect: canvas.getBoundingClientRect(),\n\t\t\t\tcanvas,\n\t\t\t\tcontext,\n\t\t\t\tleft: width/2,\n\t\t\t\ttop: height/2,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tzoom: 1,\n\t\t\t});\n\t\t}\n\t}, []);\n\n\tstate.deltaTop = deltaTop;\n\tstate.deltaLeft = deltaLeft;\n\n\t// Check inputs\n\tif(typeof width !== 'number' || typeof height !== 'number') {\n\t\tthrow new Error('width/height should be specified and be numbers.');\n\t}\n\n\tif(minZoom > maxZoom) {\n\t\tthrow new Error('minZoom should be lower than maxZoom.');\n\t}\n\n\tif(typeof onClick !== 'function' && typeof onClick !== 'undefined') {\n\t\tthrow new Error('onClick should be a function.');\n\t}\n\n\tif(typeof onFrame !== 'function') {\n\t\tthrow new Error('onFrame should be a function.');\n\t}\n\n\t// Render\n\tlet onMouseMove = null;\n\tif(trackMouseMove) {\n\t\tonMouseMove = (e) => mouseMove(e, elements[otherProps.id], tileSize, state, setState, lockXAxis, lockYAxis, dragObjects, onElementMoved, onHover);\n\t}\n\n\tconst onWheelFn = (e) => {\n\t\tif(onWheel) {\n\t\t\tonWheel(e);\n\t\t}\n\n\t\tif(minZoom !== maxZoom) {\n\t\t\tmouseWheel(e, state, setState, minZoom, maxZoom);\n\t\t}\n\t};\n\n\tlet onClickFn = null;\n\tif(onClick) {\n\t\tonClickFn = (e) => onClick(elementClick(e, elements[otherProps.id], tileSize, state));\n\t}\n\n\n\t// Right click Event\n\tuseEffect(() => {\n\t\tfunction onRightClickEvent(e) {\n\t\t\te.preventDefault();\n\t\t\tonRightClick(elementRightClick(e, elements[otherProps.id], tileSize, state));\n\t\t}\n\n\t\tif(onRightClick && state.canvas) {\n\t\t\tstate.canvas.addEventListener('contextmenu', onRightClickEvent);\n\t\t\treturn () => { state.canvas.removeEventListener('contextmenu', onRightClickEvent); };\n\t\t}\n\t}, [state.canvas, onRightClick]);\n\n\t// Canvas render loop\n\tuseEffect(() => {\n\t\tlet shouldRender = true;\n\t\tfunction render() {\n\t\t\tif(!shouldRender) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telements[otherProps.id] = onFrame();\n\t\t\tconst sortedElements = sortElements(elements[otherProps.id]);\n\n\t\t\tif(state.context) {\n\t\t\t\trenderCanvas(\n\t\t\t\t\tstate.context,\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t\tsortedElements,\n\t\t\t\t\ttileSize,\n\t\t\t\t\tstate,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\twindow.requestAnimationFrame(render);\n\t\t}\n\t\twindow.requestAnimationFrame(render);\n\n\t\treturn () => { shouldRender = false; };\n\t}, [state.context, onFrame]);\n\n\treturn (\n\t\t<canvas\n\t\t\tref={canvasRef}\n\t\t\twidth={width}\n\t\t\theight={height}\n\t\t\tonPointerMove={onMouseMove}\n\t\t\tonWheel={onWheelFn}\n\t\t\tonClick={onClickFn}\n\t\t\tclassName=\"canvas2d-wrapper\"\n\t\t\t{...otherProps}\n\t\t/>\n\t);\n}\n","export default function preloadImages(images) {\n\tfor(const image of images) {\n\t\t__canvas2dWrapper__.imgCache[image] = new Image();\n\t\t__canvas2dWrapper__.imgCache[image].src = image;\n\t}\n}","import { useEffect, useState } from 'react';\n\nlet intervalId = 0;\nconst FRAME_INTERVAL = 15; // TODO: requestAnimationFrame ?\nexport default function useGamepad() {\n\tconst [gamepad, setGamepad] = useState();\n\n\tuseEffect(() => {\n\t\tclearInterval(intervalId);\n\t\tintervalId = setInterval(() =>\n\t\t\tsetGamepad(navigator.getGamepads()[0])\n\t\t, FRAME_INTERVAL);\n\t}, []);\n\n\treturn gamepad;\n}","import { useEffect, useState } from 'react';\n\nexport default function useKeyboard() {\n\tconst [keyboard, setKeyboard] = useState({});\n\n\tuseEffect(() => {\n\t\tdocument.addEventListener('keydown', (e) => {\n\t\t\tkeyboard[e.key] = true;\n\t\t\tsetKeyboard(JSON.parse(JSON.stringify(keyboard)));\n\t\t});\n\t\tdocument.addEventListener('keyup', (e) => {\n\t\t\tkeyboard[e.key] = false;\n\t\t\tsetKeyboard(JSON.parse(JSON.stringify(keyboard)));\n\t\t});\n\t}, []);\n\n\treturn keyboard;\n}","import { useEffect, useState } from 'react';\n\nexport default function useMousePosition(includeTouch = true) {\n\tconst [\n\t\tmousePosition,\n\t\tsetMousePosition\n\t] = useState({ x: null, y: null });\n\n\tuseEffect(() => {\n\t\tconst updateMousePosition = ev => {\n\t\t\tlet x, y;\n\t\t\tif (ev.touches) {\n\t\t\t\tconst touch = ev.touches[0];\n\t\t\t\t[x, y] = [touch.clientX, touch.clientY];\n\t\t\t} else {\n\t\t\t\t[x, y] = [ev.clientX, ev.clientY];\n\t\t\t}\n\t\t\tsetMousePosition({ x, y });\n\t\t};\n\t\twindow.addEventListener('mousemove', updateMousePosition);\n\n\t\tif (includeTouch) {\n\t\t\twindow.addEventListener('touchmove', updateMousePosition);\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('mousemove', updateMousePosition);\n\n\t\t\tif (includeTouch) {\n\t\t\t\twindow.removeEventListener('touchmove', updateMousePosition);\n\t\t\t}\n\t\t};\n\t}, [includeTouch]);\n\n\treturn mousePosition;\n}","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n\tconst { clientWidth: width, clientHeight: height } = document.documentElement;\n\treturn {\n\t\twidth,\n\t\theight,\n\t};\n}\n\nexport default function useWindowDimensions() {\n\tconst [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n\tuseEffect(() => {\n\t\tfunction handleResize() {\n\t\t\tsetWindowDimensions(getWindowDimensions());\n\t\t}\n\n\t\twindow.addEventListener('resize', handleResize);\n\t\treturn () => window.removeEventListener('resize', handleResize);\n\t}, []);\n\n\treturn windowDimensions;\n}\n"],"names":["calcTileSize","tileSize","zoom","inCircle","element","x","y","left","top","localTileSize","distance","radius","inPoly","mouseX","mouseY","j","points","length","counter","i","iX","iY","jX","jY","slope","inRect","width","height","collideElement","e","elements","_iterator","_createForOfIteratorHelperLoose","_step","done","value","constructorName","id","originalEvent","elementClick","state","deltaLeft","pageX","target","offsetLeft","deltaTop","pageY","offsetTop","clickedElement","elementRightClick","LEFT_BUTTON","selectedObject","unselectTimeoutId","UNSELECT_TIMEOUT_MS","mouseMove","event","props","setProps","lockXAxis","lockYAxis","dragObjects","onElementMoved","onHover","newProps","_extends","nativeEvent","buttons","prevX","moved","draggable","clientX","boundingClientRect","clientY","screenX","screenY","prevY","pointerType","setTimeout","WHEEL_DELTA","mouseWheel","minZoom","maxZoom","deltaY","Math","max","min","sortElements","sort","a","b","zIndex","fill","stroke","CanvasObject","_createClass","key","get","set","ColoredCanvasObject","_CanvasObject","_inheritsLoose","_this","call","Circle","_ColoredCanvasObject","_ref","CanvasImage","src","_proto","prototype","crop","sx","sy","swidth","sheight","Rect","Polygon","renderCircle","context","beginPath","arc","PI","window","__canvas2dWrapper__","imgCache","renderImage","Image","drawImage","renderRect","fillRect","strokeRect","moveTo","lineTo","renderFn","_renderFn","renderPolygon","renderCanvas","prevFillStyle","prevStrokeStyle","clearRect","fillStyle","strokeStyle","type","Error","Canvas2D","_ref$trackMouseMove","trackMouseMove","_ref$minZoom","_ref$maxZoom","_ref$tileSize","onClick","onRightClick","onWheel","onFrame","_ref$lockXAxis","_ref$lockYAxis","_ref$smoothingQuality","smoothingQuality","_ref$dragObjects","_ref$deltaLeft","_ref$deltaTop","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","setState","canvasRef","useCallback","canvas","getContext","imageSmoothingEnabled","imageSmoothingQuality","getBoundingClientRect","onMouseMove","onWheelFn","onClickFn","useEffect","onRightClickEvent","preventDefault","addEventListener","removeEventListener","shouldRender","render","sortedElements","requestAnimationFrame","React","createElement","ref","onPointerMove","className","preloadImages","images","image","intervalId","FRAME_INTERVAL","useGamepad","gamepad","setGamepad","clearInterval","setInterval","navigator","getGamepads","useKeyboard","keyboard","setKeyboard","document","JSON","parse","stringify","useMousePosition","includeTouch","mousePosition","setMousePosition","updateMousePosition","ev","touches","touch","_ref2","getWindowDimensions","_document$documentEle","documentElement","clientWidth","clientHeight","useWindowDimensions","windowDimensions","setWindowDimensions","handleResize"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/functions/calcTileSize.js","../src/collisions/inCircle.js","../src/collisions/inPoly.js","../src/collisions/inRect.js","../src/collisions/collideElement.js","../src/events/elementClick.js","../src/events/elementRightClick.js","../src/events/mouseMove.js","../src/events/mouseWheel.js","../src/functions/sortElements.js","../src/shapes/CanvasObject.js","../src/shapes/ColoredCanvasObject.js","../src/shapes/Circle.js","../src/shapes/CanvasImage.js","../src/shapes/Rect.js","../src/shapes/Polygon.js","../src/render/renderCircle.js","../src/render/renderImage.js","../src/render/renderRect.js","../src/render/renderPolygon.js","../src/render/renderCanvas.js","../src/Canvas2D.js","../src/functions/preloadImages.js","../src/hooks/useGamepad.js","../src/hooks/useKeyboard.js","../src/hooks/useMousePosition.js","../src/hooks/useWindowDimensions.js"],"sourcesContent":["export default function calcTileSize(tileSize, zoom) {\n\treturn tileSize * zoom;\n}\n","export default function inCircle(element, x, y, left, top, localTileSize) {\n\tconst distance = (\n\t\t(x - left) * (x - left) +\n\t\t(y - top) * (y - top)\n\t);\n\n\treturn (distance <= ((element.radius * localTileSize) * (element.radius * localTileSize)));\n}","export default function inPoly(element, x, y, mouseX, mouseY, localTileSize) {\n\tconst j = element.points.length - 1;\n\tlet counter = false;\n\n\tfor(let i = 0; i < element.points.length; i++) {\n\t\tconst iX = element.points[i].x * localTileSize;\n\t\tconst iY = element.points[i].y * localTileSize;\n\n\t\t// The mouse is exactly at a polygon point\n\t\tif(mouseX === iX && mouseY === iY) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst jX = element.points[j].x * localTileSize;\n\t\tconst jY = element.points[j].y * localTileSize;\n\n\t\tif((iY > y) !== (jY > y)) {\n\t\t\tconst slope = (mouseX - iX) * (jY - iY) - (jX - iX) * (mouseY - iY);\n\n\t\t\t// On the boundary\n\t\t\tif(slope === 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Alternate, odd count = inside, even count = outside\n\t\t\tif((slope < 0) !== (jY < iY)) {\n\t\t\t\tcounter = !counter;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn counter;\n}\n","export default function inRect(element, x, y, left, top, localTileSize) {\n\tconst width = element.width * localTileSize;\n\tconst height = element.height * localTileSize;\n\n\treturn (x <= left && left <= (x + width) && y <= top && top <= (y + height));\n}","import calcTileSize from '../functions/calcTileSize';\n\nimport inCircle from './inCircle';\nimport inPoly from './inPoly';\nimport inRect from './inRect';\n\nexport default function collideElement(e, elements, left, top, tileSize, zoom) {\n\tconst localTileSize = calcTileSize(tileSize, zoom);\n\n\tconst validElements = [];\n\n\tfor(const element of elements) {\n\t\tconst x = element.x * localTileSize;\n\t\tconst y = element.y * localTileSize;\n\n\t\tswitch(element.constructorName) {\n\t\t\tcase 'Rect':\n\t\t\tcase 'CanvasImage':\n\t\t\t\tif(inRect(element, x, y, left, top, localTileSize)) {\n\t\t\t\t\tvalidElements.push({\n\t\t\t\t\t\tid: element.id,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\toriginalEvent: e,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Circle':\n\t\t\t\tif(inCircle(element, x, y, left, top, localTileSize)) {\n\t\t\t\t\tvalidElements.push({\n\t\t\t\t\t\tid: element.id,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\toriginalEvent: e,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Polygon':\n\t\t\t\tif(inPoly(element, x, y, left, top, localTileSize)) {\n\t\t\t\t\tvalidElements.push({\n\t\t\t\t\t\tid: element.id,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\toriginalEvent: e,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif(validElements.length === 0) {\n\t\treturn null;\n\t}\n\n\tif(validElements.length === 1) {\n\t\treturn validElements[0];\n\t}\n\n\tvalidElements.sort((a, b) => {\n\t\tif(a.zIndex > b.zIndex) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif(a.zIndex < b.zIndex) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif(a.id > b.id) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif(a.id < b.id) {\n\t\t\treturn -1;\n\t\t}\n\n\t\treturn 0;\n\t});\n\n\treturn validElements[0];\n}","import collideElement from '../collisions/collideElement';\n\nexport default function elementClick(e, elements, tileSize, state) {\n\tconst left = -state.left - state.deltaLeft + e.pageX - e.target.offsetLeft;\n\tconst top = -state.top - state.deltaTop + e.pageY - e.target.offsetTop;\n\n\tconst clickedElement = collideElement(e, elements, left, top, tileSize, state.zoom);\n\tif(clickedElement !== null) {\n\t\treturn clickedElement;\n\t}\n\n\treturn {\n\t\tid: null,\n\t\telement: null,\n\t\toriginalEvent: e,\n\t};\n}\n","import collideElement from '../collisions/collideElement';\n\nexport default function elementRightClick(e, elements, tileSize, state) {\n\tconst left = -state.left - state.deltaLeft + e.pageX - e.target.offsetLeft;\n\tconst top = -state.top - state.deltaTop + e.pageY - e.target.offsetTop;\n\n\tconst clickedElement = collideElement(e, elements, left, top, tileSize, state.zoom);\n\tif(clickedElement !== null) {\n\t\treturn clickedElement;\n\t}\n\n\treturn {\n\t\tid: null,\n\t\telement: null,\n\t\toriginalEvent: e,\n\t};\n}\n","import collideElement from '../collisions/collideElement';\n\nconst LEFT_BUTTON = 1;\nlet selectedObject = null;\nlet unselectTimeoutId = 0;\nconst UNSELECT_TIMEOUT_MS = 300;\n\nexport default function mouseMove(event, elements, tileSize, props, setProps, lockXAxis, lockYAxis, dragObjects, onElementMoved, onHover) {\n\tconst newProps = {\n\t\t...props,\n\t};\n\n\tconst left = -props.left - props.deltaLeft + event.pageX - event.target.offsetLeft;\n\tconst top = -props.top - props.deltaTop + event.pageY - event.target.offsetTop;\n\n\tif(event.nativeEvent.buttons === LEFT_BUTTON && !!props.prevX) {\n\t\tlet moved = false;\n\t\tif(dragObjects) {\n\t\t\tif(selectedObject === null) {\n\t\t\t\tselectedObject = collideElement(event, elements, left, top, tileSize, props.zoom);\n\t\t\t}\n\n\t\t\tif(selectedObject !== null && selectedObject.element.draggable) {\n\t\t\t\tselectedObject.element.x = (-props.left - props.deltaLeft) + (event.clientX - props.boundingClientRect.left) - selectedObject.element.width / 2;\n\t\t\t\tselectedObject.element.y = (-props.top - props.deltaLeft) + (event.clientY - props.boundingClientRect.top) - selectedObject.element.height / 2;\n\n\t\t\t\tmoved = true;\n\n\t\t\t\tif(onElementMoved) {\n\t\t\t\t\tonElementMoved(\n\t\t\t\t\t\tselectedObject,\n\t\t\t\t\t\t(event.screenX - props.prevX),\n\t\t\t\t\t\t(event.screenY - props.prevY),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif(onHover) {\n\t\t\t\t\tonHover(null);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(!moved) {\n\t\t\t// Lock Axis\n\t\t\tif(!lockXAxis) {\n\t\t\t\tnewProps.left += (event.screenX - props.prevX);\n\t\t\t}\n\n\t\t\tif(!lockYAxis) {\n\t\t\t\tnewProps.top += (event.screenY - props.prevY);\n\t\t\t}\n\t\t}\n\n\t\tif(event.nativeEvent.pointerType !== 'mouse') {\n\t\t\tunselectTimeoutId = setTimeout(() => {\n\t\t\t\tselectedObject = null;\n\t\t\t\tsetProps({\n\t\t\t\t\t...newProps,\n\t\t\t\t\tprevX: null,\n\t\t\t\t\tprevY: null,\n\t\t\t\t});\n\t\t\t}, UNSELECT_TIMEOUT_MS);\n\t\t}\n\t} else {\n\t\tif(onHover) {\n\t\t\tonHover(collideElement(event, elements, left, top, tileSize, props.zoom), { x: left, y: top });\n\t\t}\n\n\t\tselectedObject = null;\n\t}\n\n\tsetProps({\n\t\t...newProps,\n\t\tprevX: event.screenX,\n\t\tprevY: event.screenY,\n\t});\n}\n","const WHEEL_DELTA = 0.05;\n\nexport default function mouseWheel(event, props, setProps, minZoom, maxZoom) {\n\tlet zoom = props.zoom;\n\tif(event.deltaY < 0) {\n\t\tzoom += WHEEL_DELTA;\n\t} else {\n\t\tzoom -= WHEEL_DELTA;\n\t}\n\n\tzoom = Math.max(zoom, minZoom);\n\tzoom = Math.min(zoom, maxZoom);\n\n\t/** TODO: zoom on mouse **/\n\n\tsetProps({\n\t\t...props,\n\t\tzoom,\n\t});\n}\n","export default function sortElements(elements) {\n\telements.sort((a, b) => {\n\t\tif(a.zIndex !== b.zIndex) {\n\t\t\treturn a.zIndex - b.zIndex;\n\t\t}\n\n\t\tif(a.fill === b.fill) {\n\t\t\tif(a.stroke === b.stroke) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tif(a.stroke < b.stroke) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\treturn -1;\n\t\t}\n\n\t\tif(a.fill < b.fill) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif(a.fill > b.fill) {\n\t\t\treturn -1;\n\t\t}\n\n\t\treturn 0;\n\t});\n\n\treturn elements;\n}\n","export default class CanvasObject {\n\tconstructor(id, x, y, zIndex, draggable) {\n\t\tthis.id = id;\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis['z-index'] = zIndex;\n\t\tthis.draggable = draggable;\n\t}\n\n\tset zIndex(zIndex) {\n\t\tthis['z-index'] = zIndex;\n\t}\n\n\tget zIndex() {\n\t\treturn this['z-index'] || 0;\n\t}\n\n\tget constructorName() {\n\t\treturn 'CanvasObject';\n\t}\n}\n","import CanvasObject from './CanvasObject';\n\nexport default class ColoredCanvasObject extends CanvasObject {\n\tconstructor(id, x, y, fill, stroke, zIndex, draggable) {\n\t\tsuper(id, x, y, zIndex, draggable);\n\n\t\tthis.fill = fill;\n\t\tthis.stroke = stroke;\n\t}\n\n\tget constructorName() {\n\t\treturn 'ColoredCanvasObject';\n\t}\n}","import ColoredCanvasObject from './ColoredCanvasObject';\n\nexport default class Circle extends ColoredCanvasObject {\n\t/**\n\t * Represents a Rectangle that will be created on the canvas.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tx Left coordinate of circle center in canvas\n\t * @param {number}\t\t\ty Top coordinate of circle center in canvas\n\t * @param {number} \t\tradius Circle radius in canvas\n\t * @param {string} \tfill \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.fillStyle\n\t * @param {string} \tstroke \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.strokeStyle\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, x, y, radius, fill, stroke, zIndex, draggable }) {\n\t\tsuper(id, x, y, fill, stroke, zIndex, draggable);\n\n\t\tthis.radius = radius;\n\t}\n\n\tget constructorName() {\n\t\treturn 'Circle';\n\t}\n}\n\n","import CanvasObject from './CanvasObject';\n\nexport default class CanvasImage extends CanvasObject {\n\t/**\n\t * Represents an Image that will be created on the canvas.\n\t * Note: a cache to prevent too much loading is implemented, you can create as much\n\t * images as you want of the same source without any performance issue.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tx Left coordinate of top-left corner of picture in canvas\n\t * @param {number}\t\t\ty Top coordinate of top-left corner of picture in canvas\n\t * @param {number} \t\twidth Picture width in canvas\n\t * @param {number} \t\theight Picture height in canvas\n\t * @param {string} \tsrc \tImage source link\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, x, y, width, height, src, zIndex, draggable }) {\n\t\tsuper(id, x, y, zIndex, draggable);\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.src = src;\n\t}\n\n\tcrop(x, y, width, height) {\n\t\tthis.sx = sx;\n\t\tthis.sy = sx;\n\t\tthis.swidth = swidth;\n\t\tthis.sheight = sheight;\n\t}\n\n\tget constructorName() {\n\t\treturn 'CanvasImage';\n\t}\n}\n","import ColoredCanvasObject from './ColoredCanvasObject';\n\nexport default class Rect extends ColoredCanvasObject {\n\t/**\n\t * Represents a Rectangle that will be created on the canvas.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tx Left coordinate of top-left corner of rectangle in canvas\n\t * @param {number}\t\t\ty Top coordinate of top-left corner of rectangle in canvas\n\t * @param {number} \t\twidth Rectangle width in canvas\n\t * @param {number} \t\theight Rectangle height in canvas\n\t * @param {string} \tfill \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.fillStyle\n\t * @param {string} \tstroke \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.strokeStyle\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, x, y, width, height, fill, stroke, zIndex, draggable }) {\n\t\tsuper(id, x, y, fill, stroke, zIndex, draggable);\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t}\n\n\tget constructorName() {\n\t\treturn 'Rect';\n\t}\n}\n","import ColoredCanvasObject from './ColoredCanvasObject';\n\nexport default class Polygon extends ColoredCanvasObject {\n\t/**\n\t * Represents a Rectangle that will be created on the canvas.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tpoints Array of coordinates {x, y} of the polygon points\n\t * @param {string} \tfill \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.fillStyle\n\t * @param {string} \tstroke \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.strokeStyle\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, points, fill, stroke, zIndex, draggable }) {\n\t\tsuper(id, points[0].x, points[0].y, fill, stroke, zIndex, draggable);\n\n\t\tthis.points = points;\n\t}\n\n\tget constructorName() {\n\t\treturn 'Polygon';\n\t}\n}\n","export default function renderCircle(context, element, left, top, localTileSize) {\n\tcontext.beginPath();\n\n\tcontext.arc(\n\t\tleft + element.x * localTileSize,\n\t\ttop + element.y * localTileSize,\n\t\telement.radius * localTileSize,\n\t\t0,\n\t\t2 * Math.PI\n\t);\n\n\tif(element.fill) {\n\t\tcontext.fill();\n\t}\n\tif(element.stroke) {\n\t\tcontext.stroke();\n\t}\n}\n","window.__canvas2dWrapper__ = {};\nwindow.__canvas2dWrapper__.imgCache = {};\n\nexport default function renderImage(context, element, left, top, localTileSize) {\n\tif(!__canvas2dWrapper__.imgCache[element.src]) {\n\t\t__canvas2dWrapper__.imgCache[element.src] = new Image();\n\t\t__canvas2dWrapper__.imgCache[element.src].src = element.src;\n\t}\n\n\tif(!element.sx) {\n\t\tcontext.drawImage(\n\t\t\t__canvas2dWrapper__.imgCache[element.src],\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize\n\t\t);\n\t} else {\n\t\tcontext.drawImage(\n\t\t\t__canvas2dWrapper__.imgCache[element.src],\n\t\t\telement.sx,\n\t\t\telement.sy,\n\t\t\telement.swidth,\n\t\t\telement.sheight,\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize\n\t\t);\n\t}\n}\n","export default function renderRect(context, element, left, top, localTileSize) {\n\tif(element.fill) {\n\t\tcontext.fillRect(\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize,\n\t\t);\n\t}\n\n\tif(element.stroke) {\n\t\tcontext.strokeRect(\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize,\n\t\t);\n\t}\n}\n","export default function renderRect(context, element, left, top, localTileSize) {\n\tcontext.beginPath();\n\n\tcontext.moveTo(\n\t\tleft + element.points[0].x * localTileSize,\n\t\ttop + element.points[0].y * localTileSize,\n\t);\n\n\tfor(let i = 0; i < element.points.length; i++) {\n\t\tcontext.lineTo(\n\t\t\tleft + element.points[i].x * localTileSize,\n\t\t\ttop + element.points[i].y * localTileSize,\n\t\t);\n\t}\n\n\tcontext.lineTo(\n\t\tleft + element.points[0].x * localTileSize,\n\t\ttop + element.points[0].y * localTileSize,\n\t);\n\n\tif(element.fill) {\n\t\tcontext.fill();\n\t}\n\tif(element.stroke) {\n\t\tcontext.stroke();\n\t}\n}\n","import Circle from '../shapes/Circle';\nimport CanvasImage from '../shapes/CanvasImage';\nimport Rect from '../shapes/Rect';\nimport Polygon from '../shapes/Polygon';\n\nimport calcTileSize from '../functions/calcTileSize';\n\nimport renderCircle from './renderCircle';\nimport renderImage from './renderImage';\nimport renderRect from './renderRect';\nimport renderPolygon from './renderPolygon';\n\nconst renderFn = {\n\t[(new Circle({})).constructorName]: renderCircle,\n\t[(new CanvasImage({})).constructorName]: renderImage,\n\t[(new Rect({})).constructorName]: renderRect,\n\t[(new Polygon({ points: [{}] })).constructorName]: renderPolygon,\n};\n\nexport default function renderCanvas(\n\tcontext,\n\twidth,\n\theight,\n\telements,\n\ttileSize,\n\tstate,\n) {\n\tconst left = state.left + state.deltaLeft;\n\tconst top = state.top + state.deltaTop;\n\n\tlet prevFillStyle = '';\n\tlet prevStrokeStyle = '';\n\n\tconst localTileSize = calcTileSize(tileSize, state.zoom);\n\n\tcontext.clearRect(0, 0, width, height);\n\n\tfor(const element of elements) {\n\t\tif(\n\t\t\telement.fill !== prevFillStyle &&\n\t\t\ttypeof element.fill !== 'undefined'\n\t\t) {\n\t\t\tcontext.fillStyle = element.fill;\n\t\t\tprevFillStyle = element.fill;\n\t\t}\n\n\t\tif(\n\t\t\telement.stroke !== prevStrokeStyle &&\n\t\t\ttypeof element.stroke !== 'undefined'\n\t\t) {\n\t\t\tcontext.strokeStyle = element.stroke;\n\t\t\tprevStrokeStyle = element.stroke;\n\t\t}\n\n\t\tconst type = element.constructorName;\n\t\tif(renderFn[type]) {\n\t\t\trenderFn[type](context, element, left, top, localTileSize);\n\t\t} else {\n\t\t\tthrow new Error('Unsupported shape type:' + type);\n\t\t}\n\t}\n}\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport './index.css';\n\nimport elementClick from './events/elementClick';\nimport elementRightClick from './events/elementRightClick';\nimport mouseMove from './events/mouseMove';\nimport mouseWheel from './events/mouseWheel';\n\nimport sortElements from './functions/sortElements';\n\nimport renderCanvas from './render/renderCanvas';\n\nconst elements = {};\n\nexport default function Canvas2D({\n\twidth,\n\theight,\n\ttrackMouseMove = true,\n\tminZoom = 1,\n\tmaxZoom = 1,\n\ttileSize = 1,\n\tonClick,\n\tonRightClick,\n\tonHover,\n\tonElementMoved,\n\tonWheel,\n\tonFrame,\n\tlockXAxis = false,\n\tlockYAxis = false,\n\tsmoothingQuality='medium',\n\tdragObjects=false,\n\tdeltaLeft=0,\n\tdeltaTop=0,\n\t...otherProps\n}) {\n\tif(!elements[otherProps.id]) {\n\t\telements[otherProps.id] = [];\n\t}\n\n\t// Hooks\n\tconst [state, setState] = useState({});\n\tconst canvasRef = useCallback((canvas) => {\n\t\tif(canvas !== null) {\n\t\t\tconst context = canvas.getContext('2d');\n\n\t\t\tif(smoothingQuality === false) {\n\t\t\t\tcontext.imageSmoothingEnabled = false;\n\t\t\t} else {\n\t\t\t\tcontext.imageSmoothingEnabled = true;\n\t\t\t\tcontext.imageSmoothingQuality = smoothingQuality;\n\t\t\t}\n\n\t\t\tsetState({\n\t\t\t\tboundingClientRect: canvas.getBoundingClientRect(),\n\t\t\t\tcanvas,\n\t\t\t\tcontext,\n\t\t\t\tleft: width/2,\n\t\t\t\ttop: height/2,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tzoom: 1,\n\t\t\t});\n\t\t}\n\t}, []);\n\n\tstate.deltaTop = deltaTop;\n\tstate.deltaLeft = deltaLeft;\n\n\t// Check inputs\n\tif(typeof width !== 'number' || typeof height !== 'number') {\n\t\tthrow new Error('width/height should be specified and be numbers.');\n\t}\n\n\tif(minZoom > maxZoom) {\n\t\tthrow new Error('minZoom should be lower than maxZoom.');\n\t}\n\n\tif(typeof onClick !== 'function' && typeof onClick !== 'undefined') {\n\t\tthrow new Error('onClick should be a function.');\n\t}\n\n\tif(typeof onFrame !== 'function') {\n\t\tthrow new Error('onFrame should be a function.');\n\t}\n\n\t// Render\n\tlet onMouseMove = null;\n\tif(trackMouseMove) {\n\t\tonMouseMove = (e) => mouseMove(e, elements[otherProps.id], tileSize, state, setState, lockXAxis, lockYAxis, dragObjects, onElementMoved, onHover);\n\t}\n\n\tconst onWheelFn = (e) => {\n\t\tif(onWheel) {\n\t\t\tonWheel(e);\n\t\t}\n\n\t\tif(minZoom !== maxZoom) {\n\t\t\tmouseWheel(e, state, setState, minZoom, maxZoom);\n\t\t}\n\t};\n\n\tlet onClickFn = null;\n\tif(onClick) {\n\t\tonClickFn = (e) => onClick(elementClick(e, elements[otherProps.id], tileSize, state));\n\t}\n\n\n\t// Right click Event\n\tuseEffect(() => {\n\t\tfunction onRightClickEvent(e) {\n\t\t\te.preventDefault();\n\t\t\tonRightClick(elementRightClick(e, elements[otherProps.id], tileSize, state));\n\t\t}\n\n\t\tif(onRightClick && state.canvas) {\n\t\t\tstate.canvas.addEventListener('contextmenu', onRightClickEvent);\n\t\t\treturn () => { state.canvas.removeEventListener('contextmenu', onRightClickEvent); };\n\t\t}\n\t}, [state.canvas, onRightClick]);\n\n\t// Canvas render loop\n\tuseEffect(() => {\n\t\tlet shouldRender = true;\n\t\tfunction render() {\n\t\t\tif(!shouldRender) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telements[otherProps.id] = onFrame();\n\t\t\tconst sortedElements = sortElements(elements[otherProps.id]);\n\n\t\t\tif(state.context) {\n\t\t\t\trenderCanvas(\n\t\t\t\t\tstate.context,\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t\tsortedElements,\n\t\t\t\t\ttileSize,\n\t\t\t\t\tstate,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\twindow.requestAnimationFrame(render);\n\t\t}\n\t\twindow.requestAnimationFrame(render);\n\n\t\treturn () => { shouldRender = false; };\n\t}, [state.context, onFrame]);\n\n\treturn (\n\t\t<canvas\n\t\t\tref={canvasRef}\n\t\t\twidth={width}\n\t\t\theight={height}\n\t\t\tonPointerMove={onMouseMove}\n\t\t\tonWheel={onWheelFn}\n\t\t\tonClick={onClickFn}\n\t\t\tclassName=\"canvas2d-wrapper\"\n\t\t\t{...otherProps}\n\t\t/>\n\t);\n}\n","export default function preloadImages(images) {\n\tfor(const image of images) {\n\t\t__canvas2dWrapper__.imgCache[image] = new Image();\n\t\t__canvas2dWrapper__.imgCache[image].src = image;\n\t}\n}","import { useEffect, useState } from 'react';\n\nlet intervalId = 0;\nconst FRAME_INTERVAL = 15; // TODO: requestAnimationFrame ?\nexport default function useGamepad() {\n\tconst [gamepad, setGamepad] = useState();\n\n\tuseEffect(() => {\n\t\tclearInterval(intervalId);\n\t\tintervalId = setInterval(() =>\n\t\t\tsetGamepad(navigator.getGamepads()[0])\n\t\t, FRAME_INTERVAL);\n\t}, []);\n\n\treturn gamepad;\n}","import { useEffect, useState } from 'react';\n\nexport default function useKeyboard() {\n\tconst [keyboard, setKeyboard] = useState({});\n\n\tuseEffect(() => {\n\t\tdocument.addEventListener('keydown', (e) => {\n\t\t\tkeyboard[e.key] = true;\n\t\t\tsetKeyboard(JSON.parse(JSON.stringify(keyboard)));\n\t\t});\n\t\tdocument.addEventListener('keyup', (e) => {\n\t\t\tkeyboard[e.key] = false;\n\t\t\tsetKeyboard(JSON.parse(JSON.stringify(keyboard)));\n\t\t});\n\t}, []);\n\n\treturn keyboard;\n}","import { useEffect, useState } from 'react';\n\nexport default function useMousePosition(includeTouch = true) {\n\tconst [\n\t\tmousePosition,\n\t\tsetMousePosition\n\t] = useState({ x: null, y: null });\n\n\tuseEffect(() => {\n\t\tconst updateMousePosition = ev => {\n\t\t\tlet x, y;\n\t\t\tif (ev.touches) {\n\t\t\t\tconst touch = ev.touches[0];\n\t\t\t\t[x, y] = [touch.clientX, touch.clientY];\n\t\t\t} else {\n\t\t\t\t[x, y] = [ev.clientX, ev.clientY];\n\t\t\t}\n\t\t\tsetMousePosition({ x, y });\n\t\t};\n\t\twindow.addEventListener('mousemove', updateMousePosition);\n\n\t\tif (includeTouch) {\n\t\t\twindow.addEventListener('touchmove', updateMousePosition);\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('mousemove', updateMousePosition);\n\n\t\t\tif (includeTouch) {\n\t\t\t\twindow.removeEventListener('touchmove', updateMousePosition);\n\t\t\t}\n\t\t};\n\t}, [includeTouch]);\n\n\treturn mousePosition;\n}","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n\tconst { clientWidth: width, clientHeight: height } = document.documentElement;\n\treturn {\n\t\twidth,\n\t\theight,\n\t};\n}\n\nexport default function useWindowDimensions() {\n\tconst [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n\tuseEffect(() => {\n\t\tfunction handleResize() {\n\t\t\tsetWindowDimensions(getWindowDimensions());\n\t\t}\n\n\t\twindow.addEventListener('resize', handleResize);\n\t\treturn () => window.removeEventListener('resize', handleResize);\n\t}, []);\n\n\treturn windowDimensions;\n}\n"],"names":["calcTileSize","tileSize","zoom","inCircle","element","x","y","left","top","localTileSize","distance","radius","inPoly","mouseX","mouseY","j","points","length","counter","i","iX","iY","jX","jY","slope","inRect","width","height","collideElement","e","elements","validElements","_iterator","_createForOfIteratorHelperLoose","_step","done","value","constructorName","push","id","originalEvent","sort","a","b","zIndex","elementClick","state","deltaLeft","pageX","target","offsetLeft","deltaTop","pageY","offsetTop","clickedElement","elementRightClick","LEFT_BUTTON","selectedObject","unselectTimeoutId","UNSELECT_TIMEOUT_MS","mouseMove","event","props","setProps","lockXAxis","lockYAxis","dragObjects","onElementMoved","onHover","newProps","_extends","nativeEvent","buttons","prevX","moved","draggable","clientX","boundingClientRect","clientY","screenX","screenY","prevY","pointerType","setTimeout","WHEEL_DELTA","mouseWheel","minZoom","maxZoom","deltaY","Math","max","min","sortElements","fill","stroke","CanvasObject","_createClass","key","get","set","ColoredCanvasObject","_CanvasObject","_this","call","_inheritsLoose","Circle","_ColoredCanvasObject","_ref","CanvasImage","src","_proto","prototype","crop","sx","sy","swidth","sheight","Rect","Polygon","renderCircle","context","beginPath","arc","PI","window","__canvas2dWrapper__","imgCache","renderImage","Image","drawImage","renderRect","fillRect","strokeRect","moveTo","lineTo","renderFn","_renderFn","renderPolygon","renderCanvas","prevFillStyle","prevStrokeStyle","clearRect","fillStyle","strokeStyle","type","Error","Canvas2D","_ref$trackMouseMove","trackMouseMove","_ref$minZoom","_ref$maxZoom","_ref$tileSize","onClick","onRightClick","onWheel","onFrame","_ref$lockXAxis","_ref$lockYAxis","_ref$smoothingQuality","smoothingQuality","_ref$dragObjects","_ref$deltaLeft","_ref$deltaTop","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","setState","canvasRef","useCallback","canvas","getContext","imageSmoothingEnabled","imageSmoothingQuality","getBoundingClientRect","onMouseMove","onWheelFn","onClickFn","useEffect","onRightClickEvent","preventDefault","addEventListener","removeEventListener","shouldRender","render","sortedElements","requestAnimationFrame","React","createElement","ref","onPointerMove","className","preloadImages","images","image","intervalId","FRAME_INTERVAL","useGamepad","gamepad","setGamepad","clearInterval","setInterval","navigator","getGamepads","useKeyboard","keyboard","setKeyboard","document","JSON","parse","stringify","useMousePosition","includeTouch","mousePosition","setMousePosition","updateMousePosition","ev","touches","touch","_ref2","getWindowDimensions","_document$documentEle","documentElement","clientWidth","clientHeight","useWindowDimensions","windowDimensions","setWindowDimensions","handleResize"],"mappings":"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"}
|
package/dist/index.modern.js
CHANGED
@@ -1,5 +1,64 @@
|
|
1
1
|
import React, { useState, useCallback, useEffect } from 'react';
|
2
2
|
|
3
|
+
function _arrayLikeToArray(r, a) {
|
4
|
+
(null == a || a > r.length) && (a = r.length);
|
5
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
6
|
+
return n;
|
7
|
+
}
|
8
|
+
function _defineProperties(e, r) {
|
9
|
+
for (var t = 0; t < r.length; t++) {
|
10
|
+
var o = r[t];
|
11
|
+
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
|
12
|
+
}
|
13
|
+
}
|
14
|
+
function _createClass(e, r, t) {
|
15
|
+
return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
|
16
|
+
writable: !1
|
17
|
+
}), e;
|
18
|
+
}
|
19
|
+
function _createForOfIteratorHelperLoose(r, e) {
|
20
|
+
var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
21
|
+
if (t) return (t = t.call(r)).next.bind(t);
|
22
|
+
if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
|
23
|
+
t && (r = t);
|
24
|
+
var o = 0;
|
25
|
+
return function () {
|
26
|
+
return o >= r.length ? {
|
27
|
+
done: !0
|
28
|
+
} : {
|
29
|
+
done: !1,
|
30
|
+
value: r[o++]
|
31
|
+
};
|
32
|
+
};
|
33
|
+
}
|
34
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
35
|
+
}
|
36
|
+
function _extends() {
|
37
|
+
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
38
|
+
for (var e = 1; e < arguments.length; e++) {
|
39
|
+
var t = arguments[e];
|
40
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
41
|
+
}
|
42
|
+
return n;
|
43
|
+
}, _extends.apply(null, arguments);
|
44
|
+
}
|
45
|
+
function _inheritsLoose(t, o) {
|
46
|
+
t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o);
|
47
|
+
}
|
48
|
+
function _objectWithoutPropertiesLoose(r, e) {
|
49
|
+
if (null == r) return {};
|
50
|
+
var t = {};
|
51
|
+
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
|
52
|
+
if (e.includes(n)) continue;
|
53
|
+
t[n] = r[n];
|
54
|
+
}
|
55
|
+
return t;
|
56
|
+
}
|
57
|
+
function _setPrototypeOf(t, e) {
|
58
|
+
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
|
59
|
+
return t.__proto__ = e, t;
|
60
|
+
}, _setPrototypeOf(t, e);
|
61
|
+
}
|
3
62
|
function _toPrimitive(t, r) {
|
4
63
|
if ("object" != typeof t || !t) return t;
|
5
64
|
var e = t[Symbol.toPrimitive];
|
@@ -12,93 +71,14 @@ function _toPrimitive(t, r) {
|
|
12
71
|
}
|
13
72
|
function _toPropertyKey(t) {
|
14
73
|
var i = _toPrimitive(t, "string");
|
15
|
-
return "symbol" == typeof i ? i :
|
16
|
-
}
|
17
|
-
function _defineProperties(target, props) {
|
18
|
-
for (var i = 0; i < props.length; i++) {
|
19
|
-
var descriptor = props[i];
|
20
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
21
|
-
descriptor.configurable = true;
|
22
|
-
if ("value" in descriptor) descriptor.writable = true;
|
23
|
-
Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
|
24
|
-
}
|
25
|
-
}
|
26
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
27
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
28
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
29
|
-
Object.defineProperty(Constructor, "prototype", {
|
30
|
-
writable: false
|
31
|
-
});
|
32
|
-
return Constructor;
|
33
|
-
}
|
34
|
-
function _extends() {
|
35
|
-
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
36
|
-
for (var i = 1; i < arguments.length; i++) {
|
37
|
-
var source = arguments[i];
|
38
|
-
for (var key in source) {
|
39
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
40
|
-
target[key] = source[key];
|
41
|
-
}
|
42
|
-
}
|
43
|
-
}
|
44
|
-
return target;
|
45
|
-
};
|
46
|
-
return _extends.apply(this, arguments);
|
47
|
-
}
|
48
|
-
function _inheritsLoose(subClass, superClass) {
|
49
|
-
subClass.prototype = Object.create(superClass.prototype);
|
50
|
-
subClass.prototype.constructor = subClass;
|
51
|
-
_setPrototypeOf(subClass, superClass);
|
74
|
+
return "symbol" == typeof i ? i : i + "";
|
52
75
|
}
|
53
|
-
function
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
return _setPrototypeOf(o, p);
|
59
|
-
}
|
60
|
-
function _objectWithoutPropertiesLoose(source, excluded) {
|
61
|
-
if (source == null) return {};
|
62
|
-
var target = {};
|
63
|
-
var sourceKeys = Object.keys(source);
|
64
|
-
var key, i;
|
65
|
-
for (i = 0; i < sourceKeys.length; i++) {
|
66
|
-
key = sourceKeys[i];
|
67
|
-
if (excluded.indexOf(key) >= 0) continue;
|
68
|
-
target[key] = source[key];
|
69
|
-
}
|
70
|
-
return target;
|
71
|
-
}
|
72
|
-
function _unsupportedIterableToArray(o, minLen) {
|
73
|
-
if (!o) return;
|
74
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
75
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
76
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
77
|
-
if (n === "Map" || n === "Set") return Array.from(o);
|
78
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
79
|
-
}
|
80
|
-
function _arrayLikeToArray(arr, len) {
|
81
|
-
if (len == null || len > arr.length) len = arr.length;
|
82
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
83
|
-
return arr2;
|
84
|
-
}
|
85
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) {
|
86
|
-
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
87
|
-
if (it) return (it = it.call(o)).next.bind(it);
|
88
|
-
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
89
|
-
if (it) o = it;
|
90
|
-
var i = 0;
|
91
|
-
return function () {
|
92
|
-
if (i >= o.length) return {
|
93
|
-
done: true
|
94
|
-
};
|
95
|
-
return {
|
96
|
-
done: false,
|
97
|
-
value: o[i++]
|
98
|
-
};
|
99
|
-
};
|
76
|
+
function _unsupportedIterableToArray(r, a) {
|
77
|
+
if (r) {
|
78
|
+
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
79
|
+
var t = {}.toString.call(r).slice(8, -1);
|
80
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
100
81
|
}
|
101
|
-
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
102
82
|
}
|
103
83
|
|
104
84
|
function calcTileSize(tileSize, zoom) {
|
@@ -142,6 +122,7 @@ function inRect(element, x, y, left, top, localTileSize) {
|
|
142
122
|
|
143
123
|
function collideElement(e, elements, left, top, tileSize, zoom) {
|
144
124
|
var localTileSize = calcTileSize(tileSize, zoom);
|
125
|
+
var validElements = [];
|
145
126
|
for (var _iterator = _createForOfIteratorHelperLoose(elements), _step; !(_step = _iterator()).done;) {
|
146
127
|
var element = _step.value;
|
147
128
|
var x = element.x * localTileSize;
|
@@ -150,34 +131,55 @@ function collideElement(e, elements, left, top, tileSize, zoom) {
|
|
150
131
|
case 'Rect':
|
151
132
|
case 'CanvasImage':
|
152
133
|
if (inRect(element, x, y, left, top, localTileSize)) {
|
153
|
-
|
134
|
+
validElements.push({
|
154
135
|
id: element.id,
|
155
136
|
element: element,
|
156
137
|
originalEvent: e
|
157
|
-
};
|
138
|
+
});
|
158
139
|
}
|
159
140
|
break;
|
160
141
|
case 'Circle':
|
161
142
|
if (inCircle(element, x, y, left, top, localTileSize)) {
|
162
|
-
|
143
|
+
validElements.push({
|
163
144
|
id: element.id,
|
164
145
|
element: element,
|
165
146
|
originalEvent: e
|
166
|
-
};
|
147
|
+
});
|
167
148
|
}
|
168
149
|
break;
|
169
150
|
case 'Polygon':
|
170
151
|
if (inPoly(element, x, y, left, top, localTileSize)) {
|
171
|
-
|
152
|
+
validElements.push({
|
172
153
|
id: element.id,
|
173
154
|
element: element,
|
174
155
|
originalEvent: e
|
175
|
-
};
|
156
|
+
});
|
176
157
|
}
|
177
158
|
break;
|
178
159
|
}
|
179
160
|
}
|
180
|
-
|
161
|
+
if (validElements.length === 0) {
|
162
|
+
return null;
|
163
|
+
}
|
164
|
+
if (validElements.length === 1) {
|
165
|
+
return validElements[0];
|
166
|
+
}
|
167
|
+
validElements.sort(function (a, b) {
|
168
|
+
if (a.zIndex > b.zIndex) {
|
169
|
+
return 1;
|
170
|
+
}
|
171
|
+
if (a.zIndex < b.zIndex) {
|
172
|
+
return -1;
|
173
|
+
}
|
174
|
+
if (a.id > b.id) {
|
175
|
+
return 1;
|
176
|
+
}
|
177
|
+
if (a.id < b.id) {
|
178
|
+
return -1;
|
179
|
+
}
|
180
|
+
return 0;
|
181
|
+
});
|
182
|
+
return validElements[0];
|
181
183
|
}
|
182
184
|
|
183
185
|
function elementClick(e, elements, tileSize, state) {
|
@@ -298,7 +300,10 @@ function sortElements(elements) {
|
|
298
300
|
if (a.fill < b.fill) {
|
299
301
|
return 1;
|
300
302
|
}
|
301
|
-
|
303
|
+
if (a.fill > b.fill) {
|
304
|
+
return -1;
|
305
|
+
}
|
306
|
+
return 0;
|
302
307
|
});
|
303
308
|
return elements;
|
304
309
|
}
|
@@ -311,7 +316,7 @@ var CanvasObject = /*#__PURE__*/function () {
|
|
311
316
|
this['z-index'] = zIndex;
|
312
317
|
this.draggable = draggable;
|
313
318
|
}
|
314
|
-
_createClass(CanvasObject, [{
|
319
|
+
return _createClass(CanvasObject, [{
|
315
320
|
key: "zIndex",
|
316
321
|
get: function get() {
|
317
322
|
return this['z-index'] || 0;
|
@@ -325,11 +330,9 @@ var CanvasObject = /*#__PURE__*/function () {
|
|
325
330
|
return 'CanvasObject';
|
326
331
|
}
|
327
332
|
}]);
|
328
|
-
return CanvasObject;
|
329
333
|
}();
|
330
334
|
|
331
335
|
var ColoredCanvasObject = /*#__PURE__*/function (_CanvasObject) {
|
332
|
-
_inheritsLoose(ColoredCanvasObject, _CanvasObject);
|
333
336
|
function ColoredCanvasObject(id, x, y, fill, stroke, zIndex, draggable) {
|
334
337
|
var _this;
|
335
338
|
_this = _CanvasObject.call(this, id, x, y, zIndex, draggable) || this;
|
@@ -337,17 +340,16 @@ var ColoredCanvasObject = /*#__PURE__*/function (_CanvasObject) {
|
|
337
340
|
_this.stroke = stroke;
|
338
341
|
return _this;
|
339
342
|
}
|
340
|
-
|
343
|
+
_inheritsLoose(ColoredCanvasObject, _CanvasObject);
|
344
|
+
return _createClass(ColoredCanvasObject, [{
|
341
345
|
key: "constructorName",
|
342
346
|
get: function get() {
|
343
347
|
return 'ColoredCanvasObject';
|
344
348
|
}
|
345
349
|
}]);
|
346
|
-
return ColoredCanvasObject;
|
347
350
|
}(CanvasObject);
|
348
351
|
|
349
352
|
var Circle = /*#__PURE__*/function (_ColoredCanvasObject) {
|
350
|
-
_inheritsLoose(Circle, _ColoredCanvasObject);
|
351
353
|
function Circle(_ref) {
|
352
354
|
var _this;
|
353
355
|
var id = _ref.id,
|
@@ -362,17 +364,16 @@ var Circle = /*#__PURE__*/function (_ColoredCanvasObject) {
|
|
362
364
|
_this.radius = radius;
|
363
365
|
return _this;
|
364
366
|
}
|
365
|
-
|
367
|
+
_inheritsLoose(Circle, _ColoredCanvasObject);
|
368
|
+
return _createClass(Circle, [{
|
366
369
|
key: "constructorName",
|
367
370
|
get: function get() {
|
368
371
|
return 'Circle';
|
369
372
|
}
|
370
373
|
}]);
|
371
|
-
return Circle;
|
372
374
|
}(ColoredCanvasObject);
|
373
375
|
|
374
376
|
var CanvasImage = /*#__PURE__*/function (_CanvasObject) {
|
375
|
-
_inheritsLoose(CanvasImage, _CanvasObject);
|
376
377
|
function CanvasImage(_ref) {
|
377
378
|
var _this;
|
378
379
|
var id = _ref.id,
|
@@ -389,6 +390,7 @@ var CanvasImage = /*#__PURE__*/function (_CanvasObject) {
|
|
389
390
|
_this.src = src;
|
390
391
|
return _this;
|
391
392
|
}
|
393
|
+
_inheritsLoose(CanvasImage, _CanvasObject);
|
392
394
|
var _proto = CanvasImage.prototype;
|
393
395
|
_proto.crop = function crop(x, y, width, height) {
|
394
396
|
this.sx = sx;
|
@@ -396,17 +398,15 @@ var CanvasImage = /*#__PURE__*/function (_CanvasObject) {
|
|
396
398
|
this.swidth = swidth;
|
397
399
|
this.sheight = sheight;
|
398
400
|
};
|
399
|
-
_createClass(CanvasImage, [{
|
401
|
+
return _createClass(CanvasImage, [{
|
400
402
|
key: "constructorName",
|
401
403
|
get: function get() {
|
402
404
|
return 'CanvasImage';
|
403
405
|
}
|
404
406
|
}]);
|
405
|
-
return CanvasImage;
|
406
407
|
}(CanvasObject);
|
407
408
|
|
408
409
|
var Rect = /*#__PURE__*/function (_ColoredCanvasObject) {
|
409
|
-
_inheritsLoose(Rect, _ColoredCanvasObject);
|
410
410
|
function Rect(_ref) {
|
411
411
|
var _this;
|
412
412
|
var id = _ref.id,
|
@@ -423,17 +423,16 @@ var Rect = /*#__PURE__*/function (_ColoredCanvasObject) {
|
|
423
423
|
_this.height = height;
|
424
424
|
return _this;
|
425
425
|
}
|
426
|
-
|
426
|
+
_inheritsLoose(Rect, _ColoredCanvasObject);
|
427
|
+
return _createClass(Rect, [{
|
427
428
|
key: "constructorName",
|
428
429
|
get: function get() {
|
429
430
|
return 'Rect';
|
430
431
|
}
|
431
432
|
}]);
|
432
|
-
return Rect;
|
433
433
|
}(ColoredCanvasObject);
|
434
434
|
|
435
435
|
var Polygon = /*#__PURE__*/function (_ColoredCanvasObject) {
|
436
|
-
_inheritsLoose(Polygon, _ColoredCanvasObject);
|
437
436
|
function Polygon(_ref) {
|
438
437
|
var _this;
|
439
438
|
var id = _ref.id,
|
@@ -446,13 +445,13 @@ var Polygon = /*#__PURE__*/function (_ColoredCanvasObject) {
|
|
446
445
|
_this.points = points;
|
447
446
|
return _this;
|
448
447
|
}
|
449
|
-
|
448
|
+
_inheritsLoose(Polygon, _ColoredCanvasObject);
|
449
|
+
return _createClass(Polygon, [{
|
450
450
|
key: "constructorName",
|
451
451
|
get: function get() {
|
452
452
|
return 'Polygon';
|
453
453
|
}
|
454
454
|
}]);
|
455
|
-
return Polygon;
|
456
455
|
}(ColoredCanvasObject);
|
457
456
|
|
458
457
|
function renderCircle(context, element, left, top, localTileSize) {
|
package/dist/index.modern.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/functions/calcTileSize.js","../src/collisions/inCircle.js","../src/collisions/inPoly.js","../src/collisions/inRect.js","../src/collisions/collideElement.js","../src/events/elementClick.js","../src/events/elementRightClick.js","../src/events/mouseMove.js","../src/events/mouseWheel.js","../src/functions/sortElements.js","../src/shapes/CanvasObject.js","../src/shapes/ColoredCanvasObject.js","../src/shapes/Circle.js","../src/shapes/CanvasImage.js","../src/shapes/Rect.js","../src/shapes/Polygon.js","../src/render/renderCircle.js","../src/render/renderImage.js","../src/render/renderRect.js","../src/render/renderPolygon.js","../src/render/renderCanvas.js","../src/Canvas2D.js","../src/functions/preloadImages.js","../src/hooks/useGamepad.js","../src/hooks/useKeyboard.js","../src/hooks/useMousePosition.js","../src/hooks/useWindowDimensions.js"],"sourcesContent":["export default function calcTileSize(tileSize, zoom) {\n\treturn tileSize * zoom;\n}\n","export default function inCircle(element, x, y, left, top, localTileSize) {\n\tconst distance = (\n\t\t(x - left) * (x - left) +\n\t\t(y - top) * (y - top)\n\t);\n\n\treturn (distance <= ((element.radius * localTileSize) * (element.radius * localTileSize)));\n}","export default function inPoly(element, x, y, mouseX, mouseY, localTileSize) {\n\tconst j = element.points.length - 1;\n\tlet counter = false;\n\n\tfor(let i = 0; i < element.points.length; i++) {\n\t\tconst iX = element.points[i].x * localTileSize;\n\t\tconst iY = element.points[i].y * localTileSize;\n\n\t\t// The mouse is exactly at a polygon point\n\t\tif(mouseX === iX && mouseY === iY) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst jX = element.points[j].x * localTileSize;\n\t\tconst jY = element.points[j].y * localTileSize;\n\n\t\tif((iY > y) !== (jY > y)) {\n\t\t\tconst slope = (mouseX - iX) * (jY - iY) - (jX - iX) * (mouseY - iY);\n\n\t\t\t// On the boundary\n\t\t\tif(slope === 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Alternate, odd count = inside, even count = outside\n\t\t\tif((slope < 0) !== (jY < iY)) {\n\t\t\t\tcounter = !counter;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn counter;\n}\n","export default function inRect(element, x, y, left, top, localTileSize) {\n\tconst width = element.width * localTileSize;\n\tconst height = element.height * localTileSize;\n\n\treturn (x <= left && left <= (x + width) && y <= top && top <= (y + height));\n}","import calcTileSize from '../functions/calcTileSize';\n\nimport inCircle from './inCircle';\nimport inPoly from './inPoly';\nimport inRect from './inRect';\n\nexport default function collideElement(e, elements, left, top, tileSize, zoom) {\n\tconst localTileSize = calcTileSize(tileSize, zoom);\n\n\tfor(const element of elements) {\n\t\tconst x = element.x * localTileSize;\n\t\tconst y = element.y * localTileSize;\n\n\t\tswitch(element.constructorName) {\n\t\t\tcase 'Rect':\n\t\t\tcase 'CanvasImage':\n\t\t\t\tif(inRect(element, x, y, left, top, localTileSize)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: element.id,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\toriginalEvent: e,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Circle':\n\t\t\t\tif(inCircle(element, x, y, left, top, localTileSize)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: element.id,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\toriginalEvent: e,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Polygon':\n\t\t\t\tif(inPoly(element, x, y, left, top, localTileSize)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: element.id,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\toriginalEvent: e,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn null;\n}","import collideElement from '../collisions/collideElement';\n\nexport default function elementClick(e, elements, tileSize, state) {\n\tconst left = -state.left - state.deltaLeft + e.pageX - e.target.offsetLeft;\n\tconst top = -state.top - state.deltaTop + e.pageY - e.target.offsetTop;\n\n\tconst clickedElement = collideElement(e, elements, left, top, tileSize, state.zoom);\n\tif(clickedElement !== null) {\n\t\treturn clickedElement;\n\t}\n\n\treturn {\n\t\tid: null,\n\t\telement: null,\n\t\toriginalEvent: e,\n\t};\n}\n","import collideElement from '../collisions/collideElement';\n\nexport default function elementRightClick(e, elements, tileSize, state) {\n\tconst left = -state.left - state.deltaLeft + e.pageX - e.target.offsetLeft;\n\tconst top = -state.top - state.deltaTop + e.pageY - e.target.offsetTop;\n\n\tconst clickedElement = collideElement(e, elements, left, top, tileSize, state.zoom);\n\tif(clickedElement !== null) {\n\t\treturn clickedElement;\n\t}\n\n\treturn {\n\t\tid: null,\n\t\telement: null,\n\t\toriginalEvent: e,\n\t};\n}\n","import collideElement from '../collisions/collideElement';\n\nconst LEFT_BUTTON = 1;\nlet selectedObject = null;\nlet unselectTimeoutId = 0;\nconst UNSELECT_TIMEOUT_MS = 300;\n\nexport default function mouseMove(event, elements, tileSize, props, setProps, lockXAxis, lockYAxis, dragObjects, onElementMoved, onHover) {\n\tconst newProps = {\n\t\t...props,\n\t};\n\n\tconst left = -props.left - props.deltaLeft + event.pageX - event.target.offsetLeft;\n\tconst top = -props.top - props.deltaTop + event.pageY - event.target.offsetTop;\n\n\tif(event.nativeEvent.buttons === LEFT_BUTTON && !!props.prevX) {\n\t\tlet moved = false;\n\t\tif(dragObjects) {\n\t\t\tif(selectedObject === null) {\n\t\t\t\tselectedObject = collideElement(event, elements, left, top, tileSize, props.zoom);\n\t\t\t}\n\n\t\t\tif(selectedObject !== null && selectedObject.element.draggable) {\n\t\t\t\tselectedObject.element.x = (-props.left - props.deltaLeft) + (event.clientX - props.boundingClientRect.left) - selectedObject.element.width / 2;\n\t\t\t\tselectedObject.element.y = (-props.top - props.deltaLeft) + (event.clientY - props.boundingClientRect.top) - selectedObject.element.height / 2;\n\n\t\t\t\tmoved = true;\n\n\t\t\t\tif(onElementMoved) {\n\t\t\t\t\tonElementMoved(\n\t\t\t\t\t\tselectedObject,\n\t\t\t\t\t\t(event.screenX - props.prevX),\n\t\t\t\t\t\t(event.screenY - props.prevY),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif(onHover) {\n\t\t\t\t\tonHover(null);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(!moved) {\n\t\t\t// Lock Axis\n\t\t\tif(!lockXAxis) {\n\t\t\t\tnewProps.left += (event.screenX - props.prevX);\n\t\t\t}\n\n\t\t\tif(!lockYAxis) {\n\t\t\t\tnewProps.top += (event.screenY - props.prevY);\n\t\t\t}\n\t\t}\n\n\t\tif(event.nativeEvent.pointerType !== 'mouse') {\n\t\t\tunselectTimeoutId = setTimeout(() => {\n\t\t\t\tselectedObject = null;\n\t\t\t\tsetProps({\n\t\t\t\t\t...newProps,\n\t\t\t\t\tprevX: null,\n\t\t\t\t\tprevY: null,\n\t\t\t\t});\n\t\t\t}, UNSELECT_TIMEOUT_MS);\n\t\t}\n\t} else {\n\t\tif(onHover) {\n\t\t\tonHover(collideElement(event, elements, left, top, tileSize, props.zoom), { x: left, y: top });\n\t\t}\n\n\t\tselectedObject = null;\n\t}\n\n\tsetProps({\n\t\t...newProps,\n\t\tprevX: event.screenX,\n\t\tprevY: event.screenY,\n\t});\n}\n","const WHEEL_DELTA = 0.05;\n\nexport default function mouseWheel(event, props, setProps, minZoom, maxZoom) {\n\tlet zoom = props.zoom;\n\tif(event.deltaY < 0) {\n\t\tzoom += WHEEL_DELTA;\n\t} else {\n\t\tzoom -= WHEEL_DELTA;\n\t}\n\n\tzoom = Math.max(zoom, minZoom);\n\tzoom = Math.min(zoom, maxZoom);\n\n\t/** TODO: zoom on mouse **/\n\n\tsetProps({\n\t\t...props,\n\t\tzoom,\n\t});\n}\n","export default function sortElements(elements) {\n\telements.sort((a, b) => {\n\t\tif(a.zIndex !== b.zIndex) {\n\t\t\treturn a.zIndex - b.zIndex;\n\t\t}\n\n\t\tif(a.fill === b.fill) {\n\t\t\tif(a.stroke === b.stroke) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tif(a.stroke < b.stroke) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\treturn -1;\n\t\t}\n\n\t\tif(a.fill < b.fill) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn -1;\n\t});\n\n\treturn elements;\n}\n","export default class CanvasObject {\n\tconstructor(id, x, y, zIndex, draggable) {\n\t\tthis.id = id;\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis['z-index'] = zIndex;\n\t\tthis.draggable = draggable;\n\t}\n\n\tset zIndex(zIndex) {\n\t\tthis['z-index'] = zIndex;\n\t}\n\n\tget zIndex() {\n\t\treturn this['z-index'] || 0;\n\t}\n\n\tget constructorName() {\n\t\treturn 'CanvasObject';\n\t}\n}\n","import CanvasObject from './CanvasObject';\n\nexport default class ColoredCanvasObject extends CanvasObject {\n\tconstructor(id, x, y, fill, stroke, zIndex, draggable) {\n\t\tsuper(id, x, y, zIndex, draggable);\n\n\t\tthis.fill = fill;\n\t\tthis.stroke = stroke;\n\t}\n\n\tget constructorName() {\n\t\treturn 'ColoredCanvasObject';\n\t}\n}","import ColoredCanvasObject from './ColoredCanvasObject';\n\nexport default class Circle extends ColoredCanvasObject {\n\t/**\n\t * Represents a Rectangle that will be created on the canvas.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tx Left coordinate of circle center in canvas\n\t * @param {number}\t\t\ty Top coordinate of circle center in canvas\n\t * @param {number} \t\tradius Circle radius in canvas\n\t * @param {string} \tfill \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.fillStyle\n\t * @param {string} \tstroke \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.strokeStyle\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, x, y, radius, fill, stroke, zIndex, draggable }) {\n\t\tsuper(id, x, y, fill, stroke, zIndex, draggable);\n\n\t\tthis.radius = radius;\n\t}\n\n\tget constructorName() {\n\t\treturn 'Circle';\n\t}\n}\n\n","import CanvasObject from './CanvasObject';\n\nexport default class CanvasImage extends CanvasObject {\n\t/**\n\t * Represents an Image that will be created on the canvas.\n\t * Note: a cache to prevent too much loading is implemented, you can create as much\n\t * images as you want of the same source without any performance issue.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tx Left coordinate of top-left corner of picture in canvas\n\t * @param {number}\t\t\ty Top coordinate of top-left corner of picture in canvas\n\t * @param {number} \t\twidth Picture width in canvas\n\t * @param {number} \t\theight Picture height in canvas\n\t * @param {string} \tsrc \tImage source link\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, x, y, width, height, src, zIndex, draggable }) {\n\t\tsuper(id, x, y, zIndex, draggable);\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.src = src;\n\t}\n\n\tcrop(x, y, width, height) {\n\t\tthis.sx = sx;\n\t\tthis.sy = sx;\n\t\tthis.swidth = swidth;\n\t\tthis.sheight = sheight;\n\t}\n\n\tget constructorName() {\n\t\treturn 'CanvasImage';\n\t}\n}\n","import ColoredCanvasObject from './ColoredCanvasObject';\n\nexport default class Rect extends ColoredCanvasObject {\n\t/**\n\t * Represents a Rectangle that will be created on the canvas.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tx Left coordinate of top-left corner of rectangle in canvas\n\t * @param {number}\t\t\ty Top coordinate of top-left corner of rectangle in canvas\n\t * @param {number} \t\twidth Rectangle width in canvas\n\t * @param {number} \t\theight Rectangle height in canvas\n\t * @param {string} \tfill \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.fillStyle\n\t * @param {string} \tstroke \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.strokeStyle\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, x, y, width, height, fill, stroke, zIndex, draggable }) {\n\t\tsuper(id, x, y, fill, stroke, zIndex, draggable);\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t}\n\n\tget constructorName() {\n\t\treturn 'Rect';\n\t}\n}\n","import ColoredCanvasObject from './ColoredCanvasObject';\n\nexport default class Polygon extends ColoredCanvasObject {\n\t/**\n\t * Represents a Rectangle that will be created on the canvas.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tpoints Array of coordinates {x, y} of the polygon points\n\t * @param {string} \tfill \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.fillStyle\n\t * @param {string} \tstroke \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.strokeStyle\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, points, fill, stroke, zIndex, draggable }) {\n\t\tsuper(id, points[0].x, points[0].y, fill, stroke, zIndex, draggable);\n\n\t\tthis.points = points;\n\t}\n\n\tget constructorName() {\n\t\treturn 'Polygon';\n\t}\n}\n","export default function renderCircle(context, element, left, top, localTileSize) {\n\tcontext.beginPath();\n\n\tcontext.arc(\n\t\tleft + element.x * localTileSize,\n\t\ttop + element.y * localTileSize,\n\t\telement.radius * localTileSize,\n\t\t0,\n\t\t2 * Math.PI\n\t);\n\n\tif(element.fill) {\n\t\tcontext.fill();\n\t}\n\tif(element.stroke) {\n\t\tcontext.stroke();\n\t}\n}\n","window.__canvas2dWrapper__ = {};\nwindow.__canvas2dWrapper__.imgCache = {};\n\nexport default function renderImage(context, element, left, top, localTileSize) {\n\tif(!__canvas2dWrapper__.imgCache[element.src]) {\n\t\t__canvas2dWrapper__.imgCache[element.src] = new Image();\n\t\t__canvas2dWrapper__.imgCache[element.src].src = element.src;\n\t}\n\n\tif(!element.sx) {\n\t\tcontext.drawImage(\n\t\t\t__canvas2dWrapper__.imgCache[element.src],\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize\n\t\t);\n\t} else {\n\t\tcontext.drawImage(\n\t\t\t__canvas2dWrapper__.imgCache[element.src],\n\t\t\telement.sx,\n\t\t\telement.sy,\n\t\t\telement.swidth,\n\t\t\telement.sheight,\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize\n\t\t);\n\t}\n}\n","export default function renderRect(context, element, left, top, localTileSize) {\n\tif(element.fill) {\n\t\tcontext.fillRect(\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize,\n\t\t);\n\t}\n\n\tif(element.stroke) {\n\t\tcontext.strokeRect(\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize,\n\t\t);\n\t}\n}\n","export default function renderRect(context, element, left, top, localTileSize) {\n\tcontext.beginPath();\n\n\tcontext.moveTo(\n\t\tleft + element.points[0].x * localTileSize,\n\t\ttop + element.points[0].y * localTileSize,\n\t);\n\n\tfor(let i = 0; i < element.points.length; i++) {\n\t\tcontext.lineTo(\n\t\t\tleft + element.points[i].x * localTileSize,\n\t\t\ttop + element.points[i].y * localTileSize,\n\t\t);\n\t}\n\n\tcontext.lineTo(\n\t\tleft + element.points[0].x * localTileSize,\n\t\ttop + element.points[0].y * localTileSize,\n\t);\n\n\tif(element.fill) {\n\t\tcontext.fill();\n\t}\n\tif(element.stroke) {\n\t\tcontext.stroke();\n\t}\n}\n","import Circle from '../shapes/Circle';\nimport CanvasImage from '../shapes/CanvasImage';\nimport Rect from '../shapes/Rect';\nimport Polygon from '../shapes/Polygon';\n\nimport calcTileSize from '../functions/calcTileSize';\n\nimport renderCircle from './renderCircle';\nimport renderImage from './renderImage';\nimport renderRect from './renderRect';\nimport renderPolygon from './renderPolygon';\n\nconst renderFn = {\n\t[(new Circle({})).constructorName]: renderCircle,\n\t[(new CanvasImage({})).constructorName]: renderImage,\n\t[(new Rect({})).constructorName]: renderRect,\n\t[(new Polygon({ points: [{}] })).constructorName]: renderPolygon,\n};\n\nexport default function renderCanvas(\n\tcontext,\n\twidth,\n\theight,\n\telements,\n\ttileSize,\n\tstate,\n) {\n\tconst left = state.left + state.deltaLeft;\n\tconst top = state.top + state.deltaTop;\n\n\tlet prevFillStyle = '';\n\tlet prevStrokeStyle = '';\n\n\tconst localTileSize = calcTileSize(tileSize, state.zoom);\n\n\tcontext.clearRect(0, 0, width, height);\n\n\tfor(const element of elements) {\n\t\tif(\n\t\t\telement.fill !== prevFillStyle &&\n\t\t\ttypeof element.fill !== 'undefined'\n\t\t) {\n\t\t\tcontext.fillStyle = element.fill;\n\t\t\tprevFillStyle = element.fill;\n\t\t}\n\n\t\tif(\n\t\t\telement.stroke !== prevStrokeStyle &&\n\t\t\ttypeof element.stroke !== 'undefined'\n\t\t) {\n\t\t\tcontext.strokeStyle = element.stroke;\n\t\t\tprevStrokeStyle = element.stroke;\n\t\t}\n\n\t\tconst type = element.constructorName;\n\t\tif(renderFn[type]) {\n\t\t\trenderFn[type](context, element, left, top, localTileSize);\n\t\t} else {\n\t\t\tthrow new Error('Unsupported shape type:' + type);\n\t\t}\n\t}\n}\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport './index.css';\n\nimport elementClick from './events/elementClick';\nimport elementRightClick from './events/elementRightClick';\nimport mouseMove from './events/mouseMove';\nimport mouseWheel from './events/mouseWheel';\n\nimport sortElements from './functions/sortElements';\n\nimport renderCanvas from './render/renderCanvas';\n\nconst elements = {};\n\nexport default function Canvas2D({\n\twidth,\n\theight,\n\ttrackMouseMove = true,\n\tminZoom = 1,\n\tmaxZoom = 1,\n\ttileSize = 1,\n\tonClick,\n\tonRightClick,\n\tonHover,\n\tonElementMoved,\n\tonWheel,\n\tonFrame,\n\tlockXAxis = false,\n\tlockYAxis = false,\n\tsmoothingQuality='medium',\n\tdragObjects=false,\n\tdeltaLeft=0,\n\tdeltaTop=0,\n\t...otherProps\n}) {\n\tif(!elements[otherProps.id]) {\n\t\telements[otherProps.id] = [];\n\t}\n\n\t// Hooks\n\tconst [state, setState] = useState({});\n\tconst canvasRef = useCallback((canvas) => {\n\t\tif(canvas !== null) {\n\t\t\tconst context = canvas.getContext('2d');\n\n\t\t\tif(smoothingQuality === false) {\n\t\t\t\tcontext.imageSmoothingEnabled = false;\n\t\t\t} else {\n\t\t\t\tcontext.imageSmoothingEnabled = true;\n\t\t\t\tcontext.imageSmoothingQuality = smoothingQuality;\n\t\t\t}\n\n\t\t\tsetState({\n\t\t\t\tboundingClientRect: canvas.getBoundingClientRect(),\n\t\t\t\tcanvas,\n\t\t\t\tcontext,\n\t\t\t\tleft: width/2,\n\t\t\t\ttop: height/2,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tzoom: 1,\n\t\t\t});\n\t\t}\n\t}, []);\n\n\tstate.deltaTop = deltaTop;\n\tstate.deltaLeft = deltaLeft;\n\n\t// Check inputs\n\tif(typeof width !== 'number' || typeof height !== 'number') {\n\t\tthrow new Error('width/height should be specified and be numbers.');\n\t}\n\n\tif(minZoom > maxZoom) {\n\t\tthrow new Error('minZoom should be lower than maxZoom.');\n\t}\n\n\tif(typeof onClick !== 'function' && typeof onClick !== 'undefined') {\n\t\tthrow new Error('onClick should be a function.');\n\t}\n\n\tif(typeof onFrame !== 'function') {\n\t\tthrow new Error('onFrame should be a function.');\n\t}\n\n\t// Render\n\tlet onMouseMove = null;\n\tif(trackMouseMove) {\n\t\tonMouseMove = (e) => mouseMove(e, elements[otherProps.id], tileSize, state, setState, lockXAxis, lockYAxis, dragObjects, onElementMoved, onHover);\n\t}\n\n\tconst onWheelFn = (e) => {\n\t\tif(onWheel) {\n\t\t\tonWheel(e);\n\t\t}\n\n\t\tif(minZoom !== maxZoom) {\n\t\t\tmouseWheel(e, state, setState, minZoom, maxZoom);\n\t\t}\n\t};\n\n\tlet onClickFn = null;\n\tif(onClick) {\n\t\tonClickFn = (e) => onClick(elementClick(e, elements[otherProps.id], tileSize, state));\n\t}\n\n\n\t// Right click Event\n\tuseEffect(() => {\n\t\tfunction onRightClickEvent(e) {\n\t\t\te.preventDefault();\n\t\t\tonRightClick(elementRightClick(e, elements[otherProps.id], tileSize, state));\n\t\t}\n\n\t\tif(onRightClick && state.canvas) {\n\t\t\tstate.canvas.addEventListener('contextmenu', onRightClickEvent);\n\t\t\treturn () => { state.canvas.removeEventListener('contextmenu', onRightClickEvent); };\n\t\t}\n\t}, [state.canvas, onRightClick]);\n\n\t// Canvas render loop\n\tuseEffect(() => {\n\t\tlet shouldRender = true;\n\t\tfunction render() {\n\t\t\tif(!shouldRender) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telements[otherProps.id] = onFrame();\n\t\t\tconst sortedElements = sortElements(elements[otherProps.id]);\n\n\t\t\tif(state.context) {\n\t\t\t\trenderCanvas(\n\t\t\t\t\tstate.context,\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t\tsortedElements,\n\t\t\t\t\ttileSize,\n\t\t\t\t\tstate,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\twindow.requestAnimationFrame(render);\n\t\t}\n\t\twindow.requestAnimationFrame(render);\n\n\t\treturn () => { shouldRender = false; };\n\t}, [state.context, onFrame]);\n\n\treturn (\n\t\t<canvas\n\t\t\tref={canvasRef}\n\t\t\twidth={width}\n\t\t\theight={height}\n\t\t\tonPointerMove={onMouseMove}\n\t\t\tonWheel={onWheelFn}\n\t\t\tonClick={onClickFn}\n\t\t\tclassName=\"canvas2d-wrapper\"\n\t\t\t{...otherProps}\n\t\t/>\n\t);\n}\n","export default function preloadImages(images) {\n\tfor(const image of images) {\n\t\t__canvas2dWrapper__.imgCache[image] = new Image();\n\t\t__canvas2dWrapper__.imgCache[image].src = image;\n\t}\n}","import { useEffect, useState } from 'react';\n\nlet intervalId = 0;\nconst FRAME_INTERVAL = 15; // TODO: requestAnimationFrame ?\nexport default function useGamepad() {\n\tconst [gamepad, setGamepad] = useState();\n\n\tuseEffect(() => {\n\t\tclearInterval(intervalId);\n\t\tintervalId = setInterval(() =>\n\t\t\tsetGamepad(navigator.getGamepads()[0])\n\t\t, FRAME_INTERVAL);\n\t}, []);\n\n\treturn gamepad;\n}","import { useEffect, useState } from 'react';\n\nexport default function useKeyboard() {\n\tconst [keyboard, setKeyboard] = useState({});\n\n\tuseEffect(() => {\n\t\tdocument.addEventListener('keydown', (e) => {\n\t\t\tkeyboard[e.key] = true;\n\t\t\tsetKeyboard(JSON.parse(JSON.stringify(keyboard)));\n\t\t});\n\t\tdocument.addEventListener('keyup', (e) => {\n\t\t\tkeyboard[e.key] = false;\n\t\t\tsetKeyboard(JSON.parse(JSON.stringify(keyboard)));\n\t\t});\n\t}, []);\n\n\treturn keyboard;\n}","import { useEffect, useState } from 'react';\n\nexport default function useMousePosition(includeTouch = true) {\n\tconst [\n\t\tmousePosition,\n\t\tsetMousePosition\n\t] = useState({ x: null, y: null });\n\n\tuseEffect(() => {\n\t\tconst updateMousePosition = ev => {\n\t\t\tlet x, y;\n\t\t\tif (ev.touches) {\n\t\t\t\tconst touch = ev.touches[0];\n\t\t\t\t[x, y] = [touch.clientX, touch.clientY];\n\t\t\t} else {\n\t\t\t\t[x, y] = [ev.clientX, ev.clientY];\n\t\t\t}\n\t\t\tsetMousePosition({ x, y });\n\t\t};\n\t\twindow.addEventListener('mousemove', updateMousePosition);\n\n\t\tif (includeTouch) {\n\t\t\twindow.addEventListener('touchmove', updateMousePosition);\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('mousemove', updateMousePosition);\n\n\t\t\tif (includeTouch) {\n\t\t\t\twindow.removeEventListener('touchmove', updateMousePosition);\n\t\t\t}\n\t\t};\n\t}, [includeTouch]);\n\n\treturn mousePosition;\n}","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n\tconst { clientWidth: width, clientHeight: height } = document.documentElement;\n\treturn {\n\t\twidth,\n\t\theight,\n\t};\n}\n\nexport default function useWindowDimensions() {\n\tconst [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n\tuseEffect(() => {\n\t\tfunction handleResize() {\n\t\t\tsetWindowDimensions(getWindowDimensions());\n\t\t}\n\n\t\twindow.addEventListener('resize', handleResize);\n\t\treturn () => window.removeEventListener('resize', handleResize);\n\t}, []);\n\n\treturn windowDimensions;\n}\n"],"names":["calcTileSize","tileSize","zoom","inCircle","element","x","y","left","top","localTileSize","distance","radius","inPoly","mouseX","mouseY","j","points","length","counter","i","iX","iY","jX","jY","slope","inRect","width","height","collideElement","e","elements","_iterator","_createForOfIteratorHelperLoose","_step","done","value","constructorName","id","originalEvent","elementClick","state","deltaLeft","pageX","target","offsetLeft","deltaTop","pageY","offsetTop","clickedElement","elementRightClick","LEFT_BUTTON","selectedObject","unselectTimeoutId","UNSELECT_TIMEOUT_MS","mouseMove","event","props","setProps","lockXAxis","lockYAxis","dragObjects","onElementMoved","onHover","newProps","_extends","nativeEvent","buttons","prevX","moved","draggable","clientX","boundingClientRect","clientY","screenX","screenY","prevY","pointerType","setTimeout","WHEEL_DELTA","mouseWheel","minZoom","maxZoom","deltaY","Math","max","min","sortElements","sort","a","b","zIndex","fill","stroke","CanvasObject","_createClass","key","get","set","ColoredCanvasObject","_CanvasObject","_inheritsLoose","_this","call","Circle","_ColoredCanvasObject","_ref","CanvasImage","src","_proto","prototype","crop","sx","sy","swidth","sheight","Rect","Polygon","renderCircle","context","beginPath","arc","PI","window","__canvas2dWrapper__","imgCache","renderImage","Image","drawImage","renderRect","fillRect","strokeRect","moveTo","lineTo","renderFn","_renderFn","renderPolygon","renderCanvas","prevFillStyle","prevStrokeStyle","clearRect","fillStyle","strokeStyle","type","Error","Canvas2D","_ref$trackMouseMove","trackMouseMove","_ref$minZoom","_ref$maxZoom","_ref$tileSize","onClick","onRightClick","onWheel","onFrame","_ref$lockXAxis","_ref$lockYAxis","_ref$smoothingQuality","smoothingQuality","_ref$dragObjects","_ref$deltaLeft","_ref$deltaTop","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","setState","canvasRef","useCallback","canvas","getContext","imageSmoothingEnabled","imageSmoothingQuality","getBoundingClientRect","onMouseMove","onWheelFn","onClickFn","useEffect","onRightClickEvent","preventDefault","addEventListener","removeEventListener","shouldRender","render","sortedElements","requestAnimationFrame","React","createElement","ref","onPointerMove","className","preloadImages","images","image","intervalId","FRAME_INTERVAL","useGamepad","gamepad","setGamepad","clearInterval","setInterval","navigator","getGamepads","useKeyboard","keyboard","setKeyboard","document","JSON","parse","stringify","useMousePosition","includeTouch","mousePosition","setMousePosition","updateMousePosition","ev","touches","touch","_ref2","getWindowDimensions","_document$documentEle","documentElement","clientWidth","clientHeight","useWindowDimensions","windowDimensions","setWindowDimensions","handleResize"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.modern.js","sources":["../src/functions/calcTileSize.js","../src/collisions/inCircle.js","../src/collisions/inPoly.js","../src/collisions/inRect.js","../src/collisions/collideElement.js","../src/events/elementClick.js","../src/events/elementRightClick.js","../src/events/mouseMove.js","../src/events/mouseWheel.js","../src/functions/sortElements.js","../src/shapes/CanvasObject.js","../src/shapes/ColoredCanvasObject.js","../src/shapes/Circle.js","../src/shapes/CanvasImage.js","../src/shapes/Rect.js","../src/shapes/Polygon.js","../src/render/renderCircle.js","../src/render/renderImage.js","../src/render/renderRect.js","../src/render/renderPolygon.js","../src/render/renderCanvas.js","../src/Canvas2D.js","../src/functions/preloadImages.js","../src/hooks/useGamepad.js","../src/hooks/useKeyboard.js","../src/hooks/useMousePosition.js","../src/hooks/useWindowDimensions.js"],"sourcesContent":["export default function calcTileSize(tileSize, zoom) {\n\treturn tileSize * zoom;\n}\n","export default function inCircle(element, x, y, left, top, localTileSize) {\n\tconst distance = (\n\t\t(x - left) * (x - left) +\n\t\t(y - top) * (y - top)\n\t);\n\n\treturn (distance <= ((element.radius * localTileSize) * (element.radius * localTileSize)));\n}","export default function inPoly(element, x, y, mouseX, mouseY, localTileSize) {\n\tconst j = element.points.length - 1;\n\tlet counter = false;\n\n\tfor(let i = 0; i < element.points.length; i++) {\n\t\tconst iX = element.points[i].x * localTileSize;\n\t\tconst iY = element.points[i].y * localTileSize;\n\n\t\t// The mouse is exactly at a polygon point\n\t\tif(mouseX === iX && mouseY === iY) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst jX = element.points[j].x * localTileSize;\n\t\tconst jY = element.points[j].y * localTileSize;\n\n\t\tif((iY > y) !== (jY > y)) {\n\t\t\tconst slope = (mouseX - iX) * (jY - iY) - (jX - iX) * (mouseY - iY);\n\n\t\t\t// On the boundary\n\t\t\tif(slope === 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Alternate, odd count = inside, even count = outside\n\t\t\tif((slope < 0) !== (jY < iY)) {\n\t\t\t\tcounter = !counter;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn counter;\n}\n","export default function inRect(element, x, y, left, top, localTileSize) {\n\tconst width = element.width * localTileSize;\n\tconst height = element.height * localTileSize;\n\n\treturn (x <= left && left <= (x + width) && y <= top && top <= (y + height));\n}","import calcTileSize from '../functions/calcTileSize';\n\nimport inCircle from './inCircle';\nimport inPoly from './inPoly';\nimport inRect from './inRect';\n\nexport default function collideElement(e, elements, left, top, tileSize, zoom) {\n\tconst localTileSize = calcTileSize(tileSize, zoom);\n\n\tconst validElements = [];\n\n\tfor(const element of elements) {\n\t\tconst x = element.x * localTileSize;\n\t\tconst y = element.y * localTileSize;\n\n\t\tswitch(element.constructorName) {\n\t\t\tcase 'Rect':\n\t\t\tcase 'CanvasImage':\n\t\t\t\tif(inRect(element, x, y, left, top, localTileSize)) {\n\t\t\t\t\tvalidElements.push({\n\t\t\t\t\t\tid: element.id,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\toriginalEvent: e,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Circle':\n\t\t\t\tif(inCircle(element, x, y, left, top, localTileSize)) {\n\t\t\t\t\tvalidElements.push({\n\t\t\t\t\t\tid: element.id,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\toriginalEvent: e,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Polygon':\n\t\t\t\tif(inPoly(element, x, y, left, top, localTileSize)) {\n\t\t\t\t\tvalidElements.push({\n\t\t\t\t\t\tid: element.id,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\toriginalEvent: e,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif(validElements.length === 0) {\n\t\treturn null;\n\t}\n\n\tif(validElements.length === 1) {\n\t\treturn validElements[0];\n\t}\n\n\tvalidElements.sort((a, b) => {\n\t\tif(a.zIndex > b.zIndex) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif(a.zIndex < b.zIndex) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif(a.id > b.id) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif(a.id < b.id) {\n\t\t\treturn -1;\n\t\t}\n\n\t\treturn 0;\n\t});\n\n\treturn validElements[0];\n}","import collideElement from '../collisions/collideElement';\n\nexport default function elementClick(e, elements, tileSize, state) {\n\tconst left = -state.left - state.deltaLeft + e.pageX - e.target.offsetLeft;\n\tconst top = -state.top - state.deltaTop + e.pageY - e.target.offsetTop;\n\n\tconst clickedElement = collideElement(e, elements, left, top, tileSize, state.zoom);\n\tif(clickedElement !== null) {\n\t\treturn clickedElement;\n\t}\n\n\treturn {\n\t\tid: null,\n\t\telement: null,\n\t\toriginalEvent: e,\n\t};\n}\n","import collideElement from '../collisions/collideElement';\n\nexport default function elementRightClick(e, elements, tileSize, state) {\n\tconst left = -state.left - state.deltaLeft + e.pageX - e.target.offsetLeft;\n\tconst top = -state.top - state.deltaTop + e.pageY - e.target.offsetTop;\n\n\tconst clickedElement = collideElement(e, elements, left, top, tileSize, state.zoom);\n\tif(clickedElement !== null) {\n\t\treturn clickedElement;\n\t}\n\n\treturn {\n\t\tid: null,\n\t\telement: null,\n\t\toriginalEvent: e,\n\t};\n}\n","import collideElement from '../collisions/collideElement';\n\nconst LEFT_BUTTON = 1;\nlet selectedObject = null;\nlet unselectTimeoutId = 0;\nconst UNSELECT_TIMEOUT_MS = 300;\n\nexport default function mouseMove(event, elements, tileSize, props, setProps, lockXAxis, lockYAxis, dragObjects, onElementMoved, onHover) {\n\tconst newProps = {\n\t\t...props,\n\t};\n\n\tconst left = -props.left - props.deltaLeft + event.pageX - event.target.offsetLeft;\n\tconst top = -props.top - props.deltaTop + event.pageY - event.target.offsetTop;\n\n\tif(event.nativeEvent.buttons === LEFT_BUTTON && !!props.prevX) {\n\t\tlet moved = false;\n\t\tif(dragObjects) {\n\t\t\tif(selectedObject === null) {\n\t\t\t\tselectedObject = collideElement(event, elements, left, top, tileSize, props.zoom);\n\t\t\t}\n\n\t\t\tif(selectedObject !== null && selectedObject.element.draggable) {\n\t\t\t\tselectedObject.element.x = (-props.left - props.deltaLeft) + (event.clientX - props.boundingClientRect.left) - selectedObject.element.width / 2;\n\t\t\t\tselectedObject.element.y = (-props.top - props.deltaLeft) + (event.clientY - props.boundingClientRect.top) - selectedObject.element.height / 2;\n\n\t\t\t\tmoved = true;\n\n\t\t\t\tif(onElementMoved) {\n\t\t\t\t\tonElementMoved(\n\t\t\t\t\t\tselectedObject,\n\t\t\t\t\t\t(event.screenX - props.prevX),\n\t\t\t\t\t\t(event.screenY - props.prevY),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif(onHover) {\n\t\t\t\t\tonHover(null);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(!moved) {\n\t\t\t// Lock Axis\n\t\t\tif(!lockXAxis) {\n\t\t\t\tnewProps.left += (event.screenX - props.prevX);\n\t\t\t}\n\n\t\t\tif(!lockYAxis) {\n\t\t\t\tnewProps.top += (event.screenY - props.prevY);\n\t\t\t}\n\t\t}\n\n\t\tif(event.nativeEvent.pointerType !== 'mouse') {\n\t\t\tunselectTimeoutId = setTimeout(() => {\n\t\t\t\tselectedObject = null;\n\t\t\t\tsetProps({\n\t\t\t\t\t...newProps,\n\t\t\t\t\tprevX: null,\n\t\t\t\t\tprevY: null,\n\t\t\t\t});\n\t\t\t}, UNSELECT_TIMEOUT_MS);\n\t\t}\n\t} else {\n\t\tif(onHover) {\n\t\t\tonHover(collideElement(event, elements, left, top, tileSize, props.zoom), { x: left, y: top });\n\t\t}\n\n\t\tselectedObject = null;\n\t}\n\n\tsetProps({\n\t\t...newProps,\n\t\tprevX: event.screenX,\n\t\tprevY: event.screenY,\n\t});\n}\n","const WHEEL_DELTA = 0.05;\n\nexport default function mouseWheel(event, props, setProps, minZoom, maxZoom) {\n\tlet zoom = props.zoom;\n\tif(event.deltaY < 0) {\n\t\tzoom += WHEEL_DELTA;\n\t} else {\n\t\tzoom -= WHEEL_DELTA;\n\t}\n\n\tzoom = Math.max(zoom, minZoom);\n\tzoom = Math.min(zoom, maxZoom);\n\n\t/** TODO: zoom on mouse **/\n\n\tsetProps({\n\t\t...props,\n\t\tzoom,\n\t});\n}\n","export default function sortElements(elements) {\n\telements.sort((a, b) => {\n\t\tif(a.zIndex !== b.zIndex) {\n\t\t\treturn a.zIndex - b.zIndex;\n\t\t}\n\n\t\tif(a.fill === b.fill) {\n\t\t\tif(a.stroke === b.stroke) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tif(a.stroke < b.stroke) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\treturn -1;\n\t\t}\n\n\t\tif(a.fill < b.fill) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif(a.fill > b.fill) {\n\t\t\treturn -1;\n\t\t}\n\n\t\treturn 0;\n\t});\n\n\treturn elements;\n}\n","export default class CanvasObject {\n\tconstructor(id, x, y, zIndex, draggable) {\n\t\tthis.id = id;\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis['z-index'] = zIndex;\n\t\tthis.draggable = draggable;\n\t}\n\n\tset zIndex(zIndex) {\n\t\tthis['z-index'] = zIndex;\n\t}\n\n\tget zIndex() {\n\t\treturn this['z-index'] || 0;\n\t}\n\n\tget constructorName() {\n\t\treturn 'CanvasObject';\n\t}\n}\n","import CanvasObject from './CanvasObject';\n\nexport default class ColoredCanvasObject extends CanvasObject {\n\tconstructor(id, x, y, fill, stroke, zIndex, draggable) {\n\t\tsuper(id, x, y, zIndex, draggable);\n\n\t\tthis.fill = fill;\n\t\tthis.stroke = stroke;\n\t}\n\n\tget constructorName() {\n\t\treturn 'ColoredCanvasObject';\n\t}\n}","import ColoredCanvasObject from './ColoredCanvasObject';\n\nexport default class Circle extends ColoredCanvasObject {\n\t/**\n\t * Represents a Rectangle that will be created on the canvas.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tx Left coordinate of circle center in canvas\n\t * @param {number}\t\t\ty Top coordinate of circle center in canvas\n\t * @param {number} \t\tradius Circle radius in canvas\n\t * @param {string} \tfill \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.fillStyle\n\t * @param {string} \tstroke \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.strokeStyle\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, x, y, radius, fill, stroke, zIndex, draggable }) {\n\t\tsuper(id, x, y, fill, stroke, zIndex, draggable);\n\n\t\tthis.radius = radius;\n\t}\n\n\tget constructorName() {\n\t\treturn 'Circle';\n\t}\n}\n\n","import CanvasObject from './CanvasObject';\n\nexport default class CanvasImage extends CanvasObject {\n\t/**\n\t * Represents an Image that will be created on the canvas.\n\t * Note: a cache to prevent too much loading is implemented, you can create as much\n\t * images as you want of the same source without any performance issue.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tx Left coordinate of top-left corner of picture in canvas\n\t * @param {number}\t\t\ty Top coordinate of top-left corner of picture in canvas\n\t * @param {number} \t\twidth Picture width in canvas\n\t * @param {number} \t\theight Picture height in canvas\n\t * @param {string} \tsrc \tImage source link\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, x, y, width, height, src, zIndex, draggable }) {\n\t\tsuper(id, x, y, zIndex, draggable);\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.src = src;\n\t}\n\n\tcrop(x, y, width, height) {\n\t\tthis.sx = sx;\n\t\tthis.sy = sx;\n\t\tthis.swidth = swidth;\n\t\tthis.sheight = sheight;\n\t}\n\n\tget constructorName() {\n\t\treturn 'CanvasImage';\n\t}\n}\n","import ColoredCanvasObject from './ColoredCanvasObject';\n\nexport default class Rect extends ColoredCanvasObject {\n\t/**\n\t * Represents a Rectangle that will be created on the canvas.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tx Left coordinate of top-left corner of rectangle in canvas\n\t * @param {number}\t\t\ty Top coordinate of top-left corner of rectangle in canvas\n\t * @param {number} \t\twidth Rectangle width in canvas\n\t * @param {number} \t\theight Rectangle height in canvas\n\t * @param {string} \tfill \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.fillStyle\n\t * @param {string} \tstroke \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.strokeStyle\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, x, y, width, height, fill, stroke, zIndex, draggable }) {\n\t\tsuper(id, x, y, fill, stroke, zIndex, draggable);\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t}\n\n\tget constructorName() {\n\t\treturn 'Rect';\n\t}\n}\n","import ColoredCanvasObject from './ColoredCanvasObject';\n\nexport default class Polygon extends ColoredCanvasObject {\n\t/**\n\t * Represents a Rectangle that will be created on the canvas.\n\t *\n\t * @param {string|number} id \t\tIdentifier (used in click callback)\n\t * @param {number}\t\t\tpoints Array of coordinates {x, y} of the polygon points\n\t * @param {string} \tfill \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.fillStyle\n\t * @param {string} \tstroke \tDOMString, CanvasGradient or CanvsPattern representing what should be put in CanvasRenderingContext2D.strokeStyle\n\t * @param {number} \tzIndex \tStack order of the element\n\t */\n\tconstructor({ id, points, fill, stroke, zIndex, draggable }) {\n\t\tsuper(id, points[0].x, points[0].y, fill, stroke, zIndex, draggable);\n\n\t\tthis.points = points;\n\t}\n\n\tget constructorName() {\n\t\treturn 'Polygon';\n\t}\n}\n","export default function renderCircle(context, element, left, top, localTileSize) {\n\tcontext.beginPath();\n\n\tcontext.arc(\n\t\tleft + element.x * localTileSize,\n\t\ttop + element.y * localTileSize,\n\t\telement.radius * localTileSize,\n\t\t0,\n\t\t2 * Math.PI\n\t);\n\n\tif(element.fill) {\n\t\tcontext.fill();\n\t}\n\tif(element.stroke) {\n\t\tcontext.stroke();\n\t}\n}\n","window.__canvas2dWrapper__ = {};\nwindow.__canvas2dWrapper__.imgCache = {};\n\nexport default function renderImage(context, element, left, top, localTileSize) {\n\tif(!__canvas2dWrapper__.imgCache[element.src]) {\n\t\t__canvas2dWrapper__.imgCache[element.src] = new Image();\n\t\t__canvas2dWrapper__.imgCache[element.src].src = element.src;\n\t}\n\n\tif(!element.sx) {\n\t\tcontext.drawImage(\n\t\t\t__canvas2dWrapper__.imgCache[element.src],\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize\n\t\t);\n\t} else {\n\t\tcontext.drawImage(\n\t\t\t__canvas2dWrapper__.imgCache[element.src],\n\t\t\telement.sx,\n\t\t\telement.sy,\n\t\t\telement.swidth,\n\t\t\telement.sheight,\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize\n\t\t);\n\t}\n}\n","export default function renderRect(context, element, left, top, localTileSize) {\n\tif(element.fill) {\n\t\tcontext.fillRect(\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize,\n\t\t);\n\t}\n\n\tif(element.stroke) {\n\t\tcontext.strokeRect(\n\t\t\tleft + element.x * localTileSize,\n\t\t\ttop + element.y * localTileSize,\n\t\t\telement.width * localTileSize,\n\t\t\telement.height * localTileSize,\n\t\t);\n\t}\n}\n","export default function renderRect(context, element, left, top, localTileSize) {\n\tcontext.beginPath();\n\n\tcontext.moveTo(\n\t\tleft + element.points[0].x * localTileSize,\n\t\ttop + element.points[0].y * localTileSize,\n\t);\n\n\tfor(let i = 0; i < element.points.length; i++) {\n\t\tcontext.lineTo(\n\t\t\tleft + element.points[i].x * localTileSize,\n\t\t\ttop + element.points[i].y * localTileSize,\n\t\t);\n\t}\n\n\tcontext.lineTo(\n\t\tleft + element.points[0].x * localTileSize,\n\t\ttop + element.points[0].y * localTileSize,\n\t);\n\n\tif(element.fill) {\n\t\tcontext.fill();\n\t}\n\tif(element.stroke) {\n\t\tcontext.stroke();\n\t}\n}\n","import Circle from '../shapes/Circle';\nimport CanvasImage from '../shapes/CanvasImage';\nimport Rect from '../shapes/Rect';\nimport Polygon from '../shapes/Polygon';\n\nimport calcTileSize from '../functions/calcTileSize';\n\nimport renderCircle from './renderCircle';\nimport renderImage from './renderImage';\nimport renderRect from './renderRect';\nimport renderPolygon from './renderPolygon';\n\nconst renderFn = {\n\t[(new Circle({})).constructorName]: renderCircle,\n\t[(new CanvasImage({})).constructorName]: renderImage,\n\t[(new Rect({})).constructorName]: renderRect,\n\t[(new Polygon({ points: [{}] })).constructorName]: renderPolygon,\n};\n\nexport default function renderCanvas(\n\tcontext,\n\twidth,\n\theight,\n\telements,\n\ttileSize,\n\tstate,\n) {\n\tconst left = state.left + state.deltaLeft;\n\tconst top = state.top + state.deltaTop;\n\n\tlet prevFillStyle = '';\n\tlet prevStrokeStyle = '';\n\n\tconst localTileSize = calcTileSize(tileSize, state.zoom);\n\n\tcontext.clearRect(0, 0, width, height);\n\n\tfor(const element of elements) {\n\t\tif(\n\t\t\telement.fill !== prevFillStyle &&\n\t\t\ttypeof element.fill !== 'undefined'\n\t\t) {\n\t\t\tcontext.fillStyle = element.fill;\n\t\t\tprevFillStyle = element.fill;\n\t\t}\n\n\t\tif(\n\t\t\telement.stroke !== prevStrokeStyle &&\n\t\t\ttypeof element.stroke !== 'undefined'\n\t\t) {\n\t\t\tcontext.strokeStyle = element.stroke;\n\t\t\tprevStrokeStyle = element.stroke;\n\t\t}\n\n\t\tconst type = element.constructorName;\n\t\tif(renderFn[type]) {\n\t\t\trenderFn[type](context, element, left, top, localTileSize);\n\t\t} else {\n\t\t\tthrow new Error('Unsupported shape type:' + type);\n\t\t}\n\t}\n}\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport './index.css';\n\nimport elementClick from './events/elementClick';\nimport elementRightClick from './events/elementRightClick';\nimport mouseMove from './events/mouseMove';\nimport mouseWheel from './events/mouseWheel';\n\nimport sortElements from './functions/sortElements';\n\nimport renderCanvas from './render/renderCanvas';\n\nconst elements = {};\n\nexport default function Canvas2D({\n\twidth,\n\theight,\n\ttrackMouseMove = true,\n\tminZoom = 1,\n\tmaxZoom = 1,\n\ttileSize = 1,\n\tonClick,\n\tonRightClick,\n\tonHover,\n\tonElementMoved,\n\tonWheel,\n\tonFrame,\n\tlockXAxis = false,\n\tlockYAxis = false,\n\tsmoothingQuality='medium',\n\tdragObjects=false,\n\tdeltaLeft=0,\n\tdeltaTop=0,\n\t...otherProps\n}) {\n\tif(!elements[otherProps.id]) {\n\t\telements[otherProps.id] = [];\n\t}\n\n\t// Hooks\n\tconst [state, setState] = useState({});\n\tconst canvasRef = useCallback((canvas) => {\n\t\tif(canvas !== null) {\n\t\t\tconst context = canvas.getContext('2d');\n\n\t\t\tif(smoothingQuality === false) {\n\t\t\t\tcontext.imageSmoothingEnabled = false;\n\t\t\t} else {\n\t\t\t\tcontext.imageSmoothingEnabled = true;\n\t\t\t\tcontext.imageSmoothingQuality = smoothingQuality;\n\t\t\t}\n\n\t\t\tsetState({\n\t\t\t\tboundingClientRect: canvas.getBoundingClientRect(),\n\t\t\t\tcanvas,\n\t\t\t\tcontext,\n\t\t\t\tleft: width/2,\n\t\t\t\ttop: height/2,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tzoom: 1,\n\t\t\t});\n\t\t}\n\t}, []);\n\n\tstate.deltaTop = deltaTop;\n\tstate.deltaLeft = deltaLeft;\n\n\t// Check inputs\n\tif(typeof width !== 'number' || typeof height !== 'number') {\n\t\tthrow new Error('width/height should be specified and be numbers.');\n\t}\n\n\tif(minZoom > maxZoom) {\n\t\tthrow new Error('minZoom should be lower than maxZoom.');\n\t}\n\n\tif(typeof onClick !== 'function' && typeof onClick !== 'undefined') {\n\t\tthrow new Error('onClick should be a function.');\n\t}\n\n\tif(typeof onFrame !== 'function') {\n\t\tthrow new Error('onFrame should be a function.');\n\t}\n\n\t// Render\n\tlet onMouseMove = null;\n\tif(trackMouseMove) {\n\t\tonMouseMove = (e) => mouseMove(e, elements[otherProps.id], tileSize, state, setState, lockXAxis, lockYAxis, dragObjects, onElementMoved, onHover);\n\t}\n\n\tconst onWheelFn = (e) => {\n\t\tif(onWheel) {\n\t\t\tonWheel(e);\n\t\t}\n\n\t\tif(minZoom !== maxZoom) {\n\t\t\tmouseWheel(e, state, setState, minZoom, maxZoom);\n\t\t}\n\t};\n\n\tlet onClickFn = null;\n\tif(onClick) {\n\t\tonClickFn = (e) => onClick(elementClick(e, elements[otherProps.id], tileSize, state));\n\t}\n\n\n\t// Right click Event\n\tuseEffect(() => {\n\t\tfunction onRightClickEvent(e) {\n\t\t\te.preventDefault();\n\t\t\tonRightClick(elementRightClick(e, elements[otherProps.id], tileSize, state));\n\t\t}\n\n\t\tif(onRightClick && state.canvas) {\n\t\t\tstate.canvas.addEventListener('contextmenu', onRightClickEvent);\n\t\t\treturn () => { state.canvas.removeEventListener('contextmenu', onRightClickEvent); };\n\t\t}\n\t}, [state.canvas, onRightClick]);\n\n\t// Canvas render loop\n\tuseEffect(() => {\n\t\tlet shouldRender = true;\n\t\tfunction render() {\n\t\t\tif(!shouldRender) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telements[otherProps.id] = onFrame();\n\t\t\tconst sortedElements = sortElements(elements[otherProps.id]);\n\n\t\t\tif(state.context) {\n\t\t\t\trenderCanvas(\n\t\t\t\t\tstate.context,\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t\tsortedElements,\n\t\t\t\t\ttileSize,\n\t\t\t\t\tstate,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\twindow.requestAnimationFrame(render);\n\t\t}\n\t\twindow.requestAnimationFrame(render);\n\n\t\treturn () => { shouldRender = false; };\n\t}, [state.context, onFrame]);\n\n\treturn (\n\t\t<canvas\n\t\t\tref={canvasRef}\n\t\t\twidth={width}\n\t\t\theight={height}\n\t\t\tonPointerMove={onMouseMove}\n\t\t\tonWheel={onWheelFn}\n\t\t\tonClick={onClickFn}\n\t\t\tclassName=\"canvas2d-wrapper\"\n\t\t\t{...otherProps}\n\t\t/>\n\t);\n}\n","export default function preloadImages(images) {\n\tfor(const image of images) {\n\t\t__canvas2dWrapper__.imgCache[image] = new Image();\n\t\t__canvas2dWrapper__.imgCache[image].src = image;\n\t}\n}","import { useEffect, useState } from 'react';\n\nlet intervalId = 0;\nconst FRAME_INTERVAL = 15; // TODO: requestAnimationFrame ?\nexport default function useGamepad() {\n\tconst [gamepad, setGamepad] = useState();\n\n\tuseEffect(() => {\n\t\tclearInterval(intervalId);\n\t\tintervalId = setInterval(() =>\n\t\t\tsetGamepad(navigator.getGamepads()[0])\n\t\t, FRAME_INTERVAL);\n\t}, []);\n\n\treturn gamepad;\n}","import { useEffect, useState } from 'react';\n\nexport default function useKeyboard() {\n\tconst [keyboard, setKeyboard] = useState({});\n\n\tuseEffect(() => {\n\t\tdocument.addEventListener('keydown', (e) => {\n\t\t\tkeyboard[e.key] = true;\n\t\t\tsetKeyboard(JSON.parse(JSON.stringify(keyboard)));\n\t\t});\n\t\tdocument.addEventListener('keyup', (e) => {\n\t\t\tkeyboard[e.key] = false;\n\t\t\tsetKeyboard(JSON.parse(JSON.stringify(keyboard)));\n\t\t});\n\t}, []);\n\n\treturn keyboard;\n}","import { useEffect, useState } from 'react';\n\nexport default function useMousePosition(includeTouch = true) {\n\tconst [\n\t\tmousePosition,\n\t\tsetMousePosition\n\t] = useState({ x: null, y: null });\n\n\tuseEffect(() => {\n\t\tconst updateMousePosition = ev => {\n\t\t\tlet x, y;\n\t\t\tif (ev.touches) {\n\t\t\t\tconst touch = ev.touches[0];\n\t\t\t\t[x, y] = [touch.clientX, touch.clientY];\n\t\t\t} else {\n\t\t\t\t[x, y] = [ev.clientX, ev.clientY];\n\t\t\t}\n\t\t\tsetMousePosition({ x, y });\n\t\t};\n\t\twindow.addEventListener('mousemove', updateMousePosition);\n\n\t\tif (includeTouch) {\n\t\t\twindow.addEventListener('touchmove', updateMousePosition);\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('mousemove', updateMousePosition);\n\n\t\t\tif (includeTouch) {\n\t\t\t\twindow.removeEventListener('touchmove', updateMousePosition);\n\t\t\t}\n\t\t};\n\t}, [includeTouch]);\n\n\treturn mousePosition;\n}","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n\tconst { clientWidth: width, clientHeight: height } = document.documentElement;\n\treturn {\n\t\twidth,\n\t\theight,\n\t};\n}\n\nexport default function useWindowDimensions() {\n\tconst [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n\tuseEffect(() => {\n\t\tfunction handleResize() {\n\t\t\tsetWindowDimensions(getWindowDimensions());\n\t\t}\n\n\t\twindow.addEventListener('resize', handleResize);\n\t\treturn () => window.removeEventListener('resize', handleResize);\n\t}, []);\n\n\treturn windowDimensions;\n}\n"],"names":["calcTileSize","tileSize","zoom","inCircle","element","x","y","left","top","localTileSize","distance","radius","inPoly","mouseX","mouseY","j","points","length","counter","i","iX","iY","jX","jY","slope","inRect","width","height","collideElement","e","elements","validElements","_iterator","_createForOfIteratorHelperLoose","_step","done","value","constructorName","push","id","originalEvent","sort","a","b","zIndex","elementClick","state","deltaLeft","pageX","target","offsetLeft","deltaTop","pageY","offsetTop","clickedElement","elementRightClick","LEFT_BUTTON","selectedObject","unselectTimeoutId","UNSELECT_TIMEOUT_MS","mouseMove","event","props","setProps","lockXAxis","lockYAxis","dragObjects","onElementMoved","onHover","newProps","_extends","nativeEvent","buttons","prevX","moved","draggable","clientX","boundingClientRect","clientY","screenX","screenY","prevY","pointerType","setTimeout","WHEEL_DELTA","mouseWheel","minZoom","maxZoom","deltaY","Math","max","min","sortElements","fill","stroke","CanvasObject","_createClass","key","get","set","ColoredCanvasObject","_CanvasObject","_this","call","_inheritsLoose","Circle","_ColoredCanvasObject","_ref","CanvasImage","src","_proto","prototype","crop","sx","sy","swidth","sheight","Rect","Polygon","renderCircle","context","beginPath","arc","PI","window","__canvas2dWrapper__","imgCache","renderImage","Image","drawImage","renderRect","fillRect","strokeRect","moveTo","lineTo","renderFn","_renderFn","renderPolygon","renderCanvas","prevFillStyle","prevStrokeStyle","clearRect","fillStyle","strokeStyle","type","Error","Canvas2D","_ref$trackMouseMove","trackMouseMove","_ref$minZoom","_ref$maxZoom","_ref$tileSize","onClick","onRightClick","onWheel","onFrame","_ref$lockXAxis","_ref$lockYAxis","_ref$smoothingQuality","smoothingQuality","_ref$dragObjects","_ref$deltaLeft","_ref$deltaTop","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","setState","canvasRef","useCallback","canvas","getContext","imageSmoothingEnabled","imageSmoothingQuality","getBoundingClientRect","onMouseMove","onWheelFn","onClickFn","useEffect","onRightClickEvent","preventDefault","addEventListener","removeEventListener","shouldRender","render","sortedElements","requestAnimationFrame","React","createElement","ref","onPointerMove","className","preloadImages","images","image","intervalId","FRAME_INTERVAL","useGamepad","gamepad","setGamepad","clearInterval","setInterval","navigator","getGamepads","useKeyboard","keyboard","setKeyboard","document","JSON","parse","stringify","useMousePosition","includeTouch","mousePosition","setMousePosition","updateMousePosition","ev","touches","touch","_ref2","getWindowDimensions","_document$documentEle","documentElement","clientWidth","clientHeight","useWindowDimensions","windowDimensions","setWindowDimensions","handleResize"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "canvas2d-wrapper",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.7.1",
|
4
4
|
"description": "A React Wrapper to use HTML5 canvas with mouse move and zoom abilities.",
|
5
5
|
"author": "Elanis",
|
6
6
|
"license": "MIT",
|
@@ -27,28 +27,29 @@
|
|
27
27
|
"react": "^17.0.0 || ^18.0.0"
|
28
28
|
},
|
29
29
|
"devDependencies": {
|
30
|
-
"@testing-library/jest-dom": "^6.
|
31
|
-
"@testing-library/react": "^
|
30
|
+
"@testing-library/jest-dom": "^6.6.3",
|
31
|
+
"@testing-library/react": "^16.0.1",
|
32
32
|
"@testing-library/user-event": "^14.5.2",
|
33
33
|
"canvas": "^2.11.2",
|
34
34
|
"cross-env": "^7.0.3",
|
35
|
-
"eslint": "^8.57.
|
36
|
-
"gh-pages": "^6.
|
35
|
+
"eslint": "^8.57.1",
|
36
|
+
"gh-pages": "^6.2.0",
|
37
37
|
"microbundle-crl": "^0.13.11",
|
38
38
|
"npm-run-all": "^4.1.5",
|
39
39
|
"postcss-flexbugs-fixes": "^5.0.2",
|
40
|
-
"postcss-normalize": "^
|
41
|
-
"postcss-preset-env": "^
|
42
|
-
"react": "^18.
|
43
|
-
"react-dom": "^18.
|
40
|
+
"postcss-normalize": "^13.0.1",
|
41
|
+
"postcss-preset-env": "^10.0.9",
|
42
|
+
"react": "^18.3.1",
|
43
|
+
"react-dom": "^18.3.1",
|
44
44
|
"react-scripts": "^5.0.1"
|
45
45
|
},
|
46
46
|
"files": [
|
47
47
|
"dist"
|
48
48
|
],
|
49
49
|
"dependencies": {
|
50
|
-
"@babel/eslint-parser": "^7.
|
51
|
-
"@babel/
|
50
|
+
"@babel/eslint-parser": "^7.25.9",
|
51
|
+
"@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
|
52
|
+
"@babel/preset-react": "^7.25.9",
|
52
53
|
"eslint-config-standard-react": "^13.0.0"
|
53
54
|
}
|
54
55
|
}
|