canvas2d-wrapper 1.6.2 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/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 : String(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 _setPrototypeOf(o, p) {
57
- _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
58
- o.__proto__ = p;
59
- return o;
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
- return {
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
- return {
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
- return {
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
- return null;
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) {
@@ -314,7 +316,7 @@ var CanvasObject = /*#__PURE__*/function () {
314
316
  this['z-index'] = zIndex;
315
317
  this.draggable = draggable;
316
318
  }
317
- _createClass(CanvasObject, [{
319
+ return _createClass(CanvasObject, [{
318
320
  key: "zIndex",
319
321
  get: function get() {
320
322
  return this['z-index'] || 0;
@@ -328,11 +330,9 @@ var CanvasObject = /*#__PURE__*/function () {
328
330
  return 'CanvasObject';
329
331
  }
330
332
  }]);
331
- return CanvasObject;
332
333
  }();
333
334
 
334
335
  var ColoredCanvasObject = /*#__PURE__*/function (_CanvasObject) {
335
- _inheritsLoose(ColoredCanvasObject, _CanvasObject);
336
336
  function ColoredCanvasObject(id, x, y, fill, stroke, zIndex, draggable) {
337
337
  var _this;
338
338
  _this = _CanvasObject.call(this, id, x, y, zIndex, draggable) || this;
@@ -340,17 +340,16 @@ var ColoredCanvasObject = /*#__PURE__*/function (_CanvasObject) {
340
340
  _this.stroke = stroke;
341
341
  return _this;
342
342
  }
343
- _createClass(ColoredCanvasObject, [{
343
+ _inheritsLoose(ColoredCanvasObject, _CanvasObject);
344
+ return _createClass(ColoredCanvasObject, [{
344
345
  key: "constructorName",
345
346
  get: function get() {
346
347
  return 'ColoredCanvasObject';
347
348
  }
348
349
  }]);
349
- return ColoredCanvasObject;
350
350
  }(CanvasObject);
351
351
 
352
352
  var Circle = /*#__PURE__*/function (_ColoredCanvasObject) {
353
- _inheritsLoose(Circle, _ColoredCanvasObject);
354
353
  function Circle(_ref) {
355
354
  var _this;
356
355
  var id = _ref.id,
@@ -365,17 +364,16 @@ var Circle = /*#__PURE__*/function (_ColoredCanvasObject) {
365
364
  _this.radius = radius;
366
365
  return _this;
367
366
  }
368
- _createClass(Circle, [{
367
+ _inheritsLoose(Circle, _ColoredCanvasObject);
368
+ return _createClass(Circle, [{
369
369
  key: "constructorName",
370
370
  get: function get() {
371
371
  return 'Circle';
372
372
  }
373
373
  }]);
374
- return Circle;
375
374
  }(ColoredCanvasObject);
376
375
 
377
376
  var CanvasImage = /*#__PURE__*/function (_CanvasObject) {
378
- _inheritsLoose(CanvasImage, _CanvasObject);
379
377
  function CanvasImage(_ref) {
380
378
  var _this;
381
379
  var id = _ref.id,
@@ -392,6 +390,7 @@ var CanvasImage = /*#__PURE__*/function (_CanvasObject) {
392
390
  _this.src = src;
393
391
  return _this;
394
392
  }
393
+ _inheritsLoose(CanvasImage, _CanvasObject);
395
394
  var _proto = CanvasImage.prototype;
396
395
  _proto.crop = function crop(x, y, width, height) {
397
396
  this.sx = sx;
@@ -399,17 +398,15 @@ var CanvasImage = /*#__PURE__*/function (_CanvasObject) {
399
398
  this.swidth = swidth;
400
399
  this.sheight = sheight;
401
400
  };
402
- _createClass(CanvasImage, [{
401
+ return _createClass(CanvasImage, [{
403
402
  key: "constructorName",
404
403
  get: function get() {
405
404
  return 'CanvasImage';
406
405
  }
407
406
  }]);
408
- return CanvasImage;
409
407
  }(CanvasObject);
410
408
 
411
409
  var Rect = /*#__PURE__*/function (_ColoredCanvasObject) {
412
- _inheritsLoose(Rect, _ColoredCanvasObject);
413
410
  function Rect(_ref) {
414
411
  var _this;
415
412
  var id = _ref.id,
@@ -426,17 +423,16 @@ var Rect = /*#__PURE__*/function (_ColoredCanvasObject) {
426
423
  _this.height = height;
427
424
  return _this;
428
425
  }
429
- _createClass(Rect, [{
426
+ _inheritsLoose(Rect, _ColoredCanvasObject);
427
+ return _createClass(Rect, [{
430
428
  key: "constructorName",
431
429
  get: function get() {
432
430
  return 'Rect';
433
431
  }
434
432
  }]);
435
- return Rect;
436
433
  }(ColoredCanvasObject);
437
434
 
438
435
  var Polygon = /*#__PURE__*/function (_ColoredCanvasObject) {
439
- _inheritsLoose(Polygon, _ColoredCanvasObject);
440
436
  function Polygon(_ref) {
441
437
  var _this;
442
438
  var id = _ref.id,
@@ -449,13 +445,13 @@ var Polygon = /*#__PURE__*/function (_ColoredCanvasObject) {
449
445
  _this.points = points;
450
446
  return _this;
451
447
  }
452
- _createClass(Polygon, [{
448
+ _inheritsLoose(Polygon, _ColoredCanvasObject);
449
+ return _createClass(Polygon, [{
453
450
  key: "constructorName",
454
451
  get: function get() {
455
452
  return 'Polygon';
456
453
  }
457
454
  }]);
458
- return Polygon;
459
455
  }(ColoredCanvasObject);
460
456
 
461
457
  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\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","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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"}
@@ -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 : String(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 _setPrototypeOf(o, p) {
54
- _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
55
- o.__proto__ = p;
56
- return o;
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
- return {
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
- return {
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
- return {
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
- return null;
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) {
@@ -311,7 +313,7 @@ var CanvasObject = /*#__PURE__*/function () {
311
313
  this['z-index'] = zIndex;
312
314
  this.draggable = draggable;
313
315
  }
314
- _createClass(CanvasObject, [{
316
+ return _createClass(CanvasObject, [{
315
317
  key: "zIndex",
316
318
  get: function get() {
317
319
  return this['z-index'] || 0;
@@ -325,11 +327,9 @@ var CanvasObject = /*#__PURE__*/function () {
325
327
  return 'CanvasObject';
326
328
  }
327
329
  }]);
328
- return CanvasObject;
329
330
  }();
330
331
 
331
332
  var ColoredCanvasObject = /*#__PURE__*/function (_CanvasObject) {
332
- _inheritsLoose(ColoredCanvasObject, _CanvasObject);
333
333
  function ColoredCanvasObject(id, x, y, fill, stroke, zIndex, draggable) {
334
334
  var _this;
335
335
  _this = _CanvasObject.call(this, id, x, y, zIndex, draggable) || this;
@@ -337,17 +337,16 @@ var ColoredCanvasObject = /*#__PURE__*/function (_CanvasObject) {
337
337
  _this.stroke = stroke;
338
338
  return _this;
339
339
  }
340
- _createClass(ColoredCanvasObject, [{
340
+ _inheritsLoose(ColoredCanvasObject, _CanvasObject);
341
+ return _createClass(ColoredCanvasObject, [{
341
342
  key: "constructorName",
342
343
  get: function get() {
343
344
  return 'ColoredCanvasObject';
344
345
  }
345
346
  }]);
346
- return ColoredCanvasObject;
347
347
  }(CanvasObject);
348
348
 
349
349
  var Circle = /*#__PURE__*/function (_ColoredCanvasObject) {
350
- _inheritsLoose(Circle, _ColoredCanvasObject);
351
350
  function Circle(_ref) {
352
351
  var _this;
353
352
  var id = _ref.id,
@@ -362,17 +361,16 @@ var Circle = /*#__PURE__*/function (_ColoredCanvasObject) {
362
361
  _this.radius = radius;
363
362
  return _this;
364
363
  }
365
- _createClass(Circle, [{
364
+ _inheritsLoose(Circle, _ColoredCanvasObject);
365
+ return _createClass(Circle, [{
366
366
  key: "constructorName",
367
367
  get: function get() {
368
368
  return 'Circle';
369
369
  }
370
370
  }]);
371
- return Circle;
372
371
  }(ColoredCanvasObject);
373
372
 
374
373
  var CanvasImage = /*#__PURE__*/function (_CanvasObject) {
375
- _inheritsLoose(CanvasImage, _CanvasObject);
376
374
  function CanvasImage(_ref) {
377
375
  var _this;
378
376
  var id = _ref.id,
@@ -389,6 +387,7 @@ var CanvasImage = /*#__PURE__*/function (_CanvasObject) {
389
387
  _this.src = src;
390
388
  return _this;
391
389
  }
390
+ _inheritsLoose(CanvasImage, _CanvasObject);
392
391
  var _proto = CanvasImage.prototype;
393
392
  _proto.crop = function crop(x, y, width, height) {
394
393
  this.sx = sx;
@@ -396,17 +395,15 @@ var CanvasImage = /*#__PURE__*/function (_CanvasObject) {
396
395
  this.swidth = swidth;
397
396
  this.sheight = sheight;
398
397
  };
399
- _createClass(CanvasImage, [{
398
+ return _createClass(CanvasImage, [{
400
399
  key: "constructorName",
401
400
  get: function get() {
402
401
  return 'CanvasImage';
403
402
  }
404
403
  }]);
405
- return CanvasImage;
406
404
  }(CanvasObject);
407
405
 
408
406
  var Rect = /*#__PURE__*/function (_ColoredCanvasObject) {
409
- _inheritsLoose(Rect, _ColoredCanvasObject);
410
407
  function Rect(_ref) {
411
408
  var _this;
412
409
  var id = _ref.id,
@@ -423,17 +420,16 @@ var Rect = /*#__PURE__*/function (_ColoredCanvasObject) {
423
420
  _this.height = height;
424
421
  return _this;
425
422
  }
426
- _createClass(Rect, [{
423
+ _inheritsLoose(Rect, _ColoredCanvasObject);
424
+ return _createClass(Rect, [{
427
425
  key: "constructorName",
428
426
  get: function get() {
429
427
  return 'Rect';
430
428
  }
431
429
  }]);
432
- return Rect;
433
430
  }(ColoredCanvasObject);
434
431
 
435
432
  var Polygon = /*#__PURE__*/function (_ColoredCanvasObject) {
436
- _inheritsLoose(Polygon, _ColoredCanvasObject);
437
433
  function Polygon(_ref) {
438
434
  var _this;
439
435
  var id = _ref.id,
@@ -446,13 +442,13 @@ var Polygon = /*#__PURE__*/function (_ColoredCanvasObject) {
446
442
  _this.points = points;
447
443
  return _this;
448
444
  }
449
- _createClass(Polygon, [{
445
+ _inheritsLoose(Polygon, _ColoredCanvasObject);
446
+ return _createClass(Polygon, [{
450
447
  key: "constructorName",
451
448
  get: function get() {
452
449
  return 'Polygon';
453
450
  }
454
451
  }]);
455
- return Polygon;
456
452
  }(ColoredCanvasObject);
457
453
 
458
454
  function renderCircle(context, element, left, top, localTileSize) {
@@ -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\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","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.6.2",
3
+ "version": "1.7.0",
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.4.2",
31
- "@testing-library/react": "^14.2.1",
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.0",
36
- "gh-pages": "^6.1.1",
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": "^10.0.1",
41
- "postcss-preset-env": "^9.5.0",
42
- "react": "^18.2.0",
43
- "react-dom": "^18.2.0",
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.23.10",
51
- "@babel/preset-react": "^7.23.3",
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
  }