canvas2d-wrapper 1.5.0 → 1.6.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/README.md +80 -57
- package/dist/index.js +122 -17
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +119 -18
- package/dist/index.modern.js.map +1 -1
- package/package.json +10 -10
package/README.md
CHANGED
@@ -18,80 +18,103 @@ npm install --save canvas2d-wrapper
|
|
18
18
|
## Usage
|
19
19
|
|
20
20
|
```jsx
|
21
|
-
import React from 'react'
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
object.fill = 'green';
|
53
|
-
}
|
54
|
-
|
55
|
-
elements.push(object);
|
21
|
+
import React from 'react';
|
22
|
+
|
23
|
+
/* eslint-disable no-console */
|
24
|
+
/* eslint-disable no-magic-numbers */
|
25
|
+
|
26
|
+
import { Canvas2D, CanvasImage, Circle, Polygon, Rect } from 'canvas2d-wrapper';
|
27
|
+
import 'canvas2d-wrapper/dist/index.css';
|
28
|
+
|
29
|
+
const elements = [];
|
30
|
+
for(let i = 0; i < 998; i++) {
|
31
|
+
let object = null;
|
32
|
+
if(Math.random() > 0.5) {
|
33
|
+
object = new Rect({
|
34
|
+
id: i,
|
35
|
+
x: 500 - Math.round(Math.random() * 1000),
|
36
|
+
y: 500 - Math.round(Math.random() * 1000),
|
37
|
+
width: 32,
|
38
|
+
height: 32,
|
39
|
+
fill: (Math.random() > 0.5) ? 'black' : undefined,
|
40
|
+
stroke: (Math.random() > 0.5) ? 'black' : undefined,
|
41
|
+
draggable: true
|
42
|
+
});
|
43
|
+
} else {
|
44
|
+
object = new Circle({
|
45
|
+
id: i,
|
46
|
+
x: 500 - Math.round(Math.random() * 1000),
|
47
|
+
y: 500 - Math.round(Math.random() * 1000),
|
48
|
+
radius: 16,
|
49
|
+
fill: (Math.random() > 0.5) ? 'black' : undefined,
|
50
|
+
stroke: (Math.random() > 0.5) ? 'black' : undefined
|
51
|
+
});
|
56
52
|
}
|
57
53
|
|
58
|
-
|
59
|
-
|
60
|
-
points.push({
|
61
|
-
x: 50 - Math.round(Math.random() * 100),
|
62
|
-
y: 50 - Math.round(Math.random() * 100),
|
63
|
-
});
|
54
|
+
if(!object.fill && !object.stroke) {
|
55
|
+
object.fill = 'green';
|
64
56
|
}
|
65
57
|
|
66
|
-
|
67
|
-
|
68
|
-
points,
|
69
|
-
stroke: 'red',
|
70
|
-
});
|
71
|
-
elements.push(polygon);
|
58
|
+
elements.push(object);
|
59
|
+
}
|
72
60
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
61
|
+
const points = [];
|
62
|
+
for(let i = 0; i < 5; i++) {
|
63
|
+
points.push({
|
64
|
+
x: 500 - Math.round(Math.random() * 1000),
|
65
|
+
y: 500 - Math.round(Math.random() * 1000),
|
78
66
|
});
|
79
|
-
|
67
|
+
}
|
68
|
+
|
69
|
+
const polygon = new Polygon({
|
70
|
+
id: 'poly',
|
71
|
+
points,
|
72
|
+
stroke: 'red',
|
73
|
+
});
|
74
|
+
elements.push(polygon);
|
80
75
|
|
76
|
+
const polygon2 = new Polygon({
|
77
|
+
id: 'poly',
|
78
|
+
points,
|
79
|
+
fill: 'orange',
|
80
|
+
zIndex: -1,
|
81
|
+
});
|
82
|
+
elements.push(polygon2);
|
83
|
+
|
84
|
+
|
85
|
+
const App = () => {
|
81
86
|
return (
|
82
|
-
<Canvas2D
|
83
|
-
|
87
|
+
<Canvas2D
|
88
|
+
id="MyCanvas"
|
84
89
|
width={1200}
|
85
90
|
height={700}
|
86
91
|
minZoom={0.25}
|
87
92
|
maxZoom={4}
|
88
|
-
tileSize={
|
93
|
+
tileSize={1}
|
94
|
+
deltaLeft={100}
|
95
|
+
deltaTop={100}
|
89
96
|
onClick={(e) => {
|
90
97
|
console.log('Click event:', e);
|
91
98
|
}}
|
99
|
+
onRightClick={(e) => {
|
100
|
+
console.log('Right click event:', e);
|
101
|
+
}}
|
102
|
+
onHover={(e) => {
|
103
|
+
console.log('Hover event:', e);
|
104
|
+
}}
|
105
|
+
onElementMoved={(elt, x, y) => {
|
106
|
+
console.log('Moved element:', elt, x, y);
|
107
|
+
}}
|
108
|
+
onWheel={(e) => {
|
109
|
+
console.log('Wheel event:', e);
|
110
|
+
}}
|
111
|
+
onFrame={(e) => {
|
112
|
+
return elements;
|
113
|
+
}}
|
114
|
+
dragObjects={true}
|
92
115
|
/>
|
93
116
|
);
|
94
|
-
}
|
117
|
+
};
|
95
118
|
|
96
119
|
export default App;
|
97
120
|
```
|
package/dist/index.js
CHANGED
@@ -256,7 +256,10 @@ function mouseMove(event, elements, tileSize, props, setProps, lockXAxis, lockYA
|
|
256
256
|
}
|
257
257
|
} else {
|
258
258
|
if (onHover) {
|
259
|
-
onHover(collideElement(event, elements, left, top, tileSize, props.zoom)
|
259
|
+
onHover(collideElement(event, elements, left, top, tileSize, props.zoom), {
|
260
|
+
x: left,
|
261
|
+
y: top
|
262
|
+
});
|
260
263
|
}
|
261
264
|
selectedObject = null;
|
262
265
|
}
|
@@ -534,14 +537,10 @@ function renderCanvas(context, width, height, elements, tileSize, state) {
|
|
534
537
|
}
|
535
538
|
}
|
536
539
|
|
537
|
-
var _excluded = ["
|
538
|
-
|
539
|
-
e.preventDefault();
|
540
|
-
onRightClick(elementRightClick(e, elements, tileSize, state));
|
541
|
-
}
|
540
|
+
var _excluded = ["width", "height", "trackMouseMove", "minZoom", "maxZoom", "tileSize", "onClick", "onRightClick", "onHover", "onElementMoved", "onWheel", "onFrame", "lockXAxis", "lockYAxis", "smoothingQuality", "dragObjects", "deltaLeft", "deltaTop"];
|
541
|
+
var elements = [];
|
542
542
|
function Canvas2D(_ref) {
|
543
|
-
var
|
544
|
-
width = _ref.width,
|
543
|
+
var width = _ref.width,
|
545
544
|
height = _ref.height,
|
546
545
|
_ref$trackMouseMove = _ref.trackMouseMove,
|
547
546
|
trackMouseMove = _ref$trackMouseMove === void 0 ? true : _ref$trackMouseMove,
|
@@ -596,9 +595,6 @@ function Canvas2D(_ref) {
|
|
596
595
|
}, []);
|
597
596
|
state.deltaTop = deltaTop;
|
598
597
|
state.deltaLeft = deltaLeft;
|
599
|
-
if (typeof elements !== 'object' || !Array.isArray(elements)) {
|
600
|
-
throw new Error('Invalid elements, should be an array !');
|
601
|
-
}
|
602
598
|
if (typeof width !== 'number' || typeof height !== 'number') {
|
603
599
|
throw new Error('width/height should be specified and be numbers.');
|
604
600
|
}
|
@@ -608,7 +604,9 @@ function Canvas2D(_ref) {
|
|
608
604
|
if (typeof onClick !== 'function' && typeof onClick !== 'undefined') {
|
609
605
|
throw new Error('onClick should be a function.');
|
610
606
|
}
|
611
|
-
|
607
|
+
if (typeof onFrame !== 'function') {
|
608
|
+
throw new Error('onFrame should be a function.');
|
609
|
+
}
|
612
610
|
var onMouseMove = null;
|
613
611
|
if (trackMouseMove) {
|
614
612
|
onMouseMove = function onMouseMove(e) {
|
@@ -630,6 +628,10 @@ function Canvas2D(_ref) {
|
|
630
628
|
};
|
631
629
|
}
|
632
630
|
React.useEffect(function () {
|
631
|
+
function onRightClickEvent(e) {
|
632
|
+
e.preventDefault();
|
633
|
+
onRightClick(elementRightClick(e, elements, tileSize, state));
|
634
|
+
}
|
633
635
|
if (onRightClick && state.canvas) {
|
634
636
|
state.canvas.addEventListener('contextmenu', onRightClickEvent);
|
635
637
|
return state.canvas.removeEventListener('contextmenu', onRightClickEvent);
|
@@ -638,15 +640,15 @@ function Canvas2D(_ref) {
|
|
638
640
|
React.useEffect(function () {
|
639
641
|
var shouldRender = true;
|
640
642
|
function render() {
|
641
|
-
if (
|
642
|
-
|
643
|
+
if (!shouldRender) {
|
644
|
+
return;
|
643
645
|
}
|
646
|
+
elements = onFrame();
|
647
|
+
var sortedElements = sortElements(elements);
|
644
648
|
if (state.context) {
|
645
649
|
renderCanvas(state.context, width, height, sortedElements, tileSize, state);
|
646
650
|
}
|
647
|
-
|
648
|
-
window.requestAnimationFrame(render);
|
649
|
-
}
|
651
|
+
window.requestAnimationFrame(render);
|
650
652
|
}
|
651
653
|
window.requestAnimationFrame(render);
|
652
654
|
return function () {
|
@@ -672,10 +674,113 @@ function preloadImages(images) {
|
|
672
674
|
}
|
673
675
|
}
|
674
676
|
|
677
|
+
var intervalId = 0;
|
678
|
+
var FRAME_INTERVAL = 15;
|
679
|
+
function useGamepad() {
|
680
|
+
var _useState = React.useState(),
|
681
|
+
gamepad = _useState[0],
|
682
|
+
setGamepad = _useState[1];
|
683
|
+
React.useEffect(function () {
|
684
|
+
clearInterval(intervalId);
|
685
|
+
intervalId = setInterval(function () {
|
686
|
+
return setGamepad(navigator.getGamepads()[0]);
|
687
|
+
}, FRAME_INTERVAL);
|
688
|
+
}, []);
|
689
|
+
return gamepad;
|
690
|
+
}
|
691
|
+
|
692
|
+
function useKeyboard() {
|
693
|
+
var _useState = React.useState({}),
|
694
|
+
keyboard = _useState[0],
|
695
|
+
setKeyboard = _useState[1];
|
696
|
+
React.useEffect(function () {
|
697
|
+
document.addEventListener('keydown', function (e) {
|
698
|
+
keyboard[e.key] = true;
|
699
|
+
setKeyboard(JSON.parse(JSON.stringify(keyboard)));
|
700
|
+
});
|
701
|
+
document.addEventListener('keyup', function (e) {
|
702
|
+
keyboard[e.key] = false;
|
703
|
+
setKeyboard(JSON.parse(JSON.stringify(keyboard)));
|
704
|
+
});
|
705
|
+
}, []);
|
706
|
+
return keyboard;
|
707
|
+
}
|
708
|
+
|
709
|
+
function useMousePosition(includeTouch) {
|
710
|
+
if (includeTouch === void 0) {
|
711
|
+
includeTouch = true;
|
712
|
+
}
|
713
|
+
var _useState = React.useState({
|
714
|
+
x: null,
|
715
|
+
y: null
|
716
|
+
}),
|
717
|
+
mousePosition = _useState[0],
|
718
|
+
setMousePosition = _useState[1];
|
719
|
+
React.useEffect(function () {
|
720
|
+
var updateMousePosition = function updateMousePosition(ev) {
|
721
|
+
var x, y;
|
722
|
+
if (ev.touches) {
|
723
|
+
var touch = ev.touches[0];
|
724
|
+
var _ref = [touch.clientX, touch.clientY];
|
725
|
+
x = _ref[0];
|
726
|
+
y = _ref[1];
|
727
|
+
} else {
|
728
|
+
var _ref2 = [ev.clientX, ev.clientY];
|
729
|
+
x = _ref2[0];
|
730
|
+
y = _ref2[1];
|
731
|
+
}
|
732
|
+
setMousePosition({
|
733
|
+
x: x,
|
734
|
+
y: y
|
735
|
+
});
|
736
|
+
};
|
737
|
+
window.addEventListener('mousemove', updateMousePosition);
|
738
|
+
if (includeTouch) {
|
739
|
+
window.addEventListener('touchmove', updateMousePosition);
|
740
|
+
}
|
741
|
+
return function () {
|
742
|
+
window.removeEventListener('mousemove', updateMousePosition);
|
743
|
+
if (includeTouch) {
|
744
|
+
window.removeEventListener('touchmove', updateMousePosition);
|
745
|
+
}
|
746
|
+
};
|
747
|
+
}, [includeTouch]);
|
748
|
+
return mousePosition;
|
749
|
+
}
|
750
|
+
|
751
|
+
function getWindowDimensions() {
|
752
|
+
var _document$documentEle = document.documentElement,
|
753
|
+
width = _document$documentEle.clientWidth,
|
754
|
+
height = _document$documentEle.clientHeight;
|
755
|
+
return {
|
756
|
+
width: width,
|
757
|
+
height: height
|
758
|
+
};
|
759
|
+
}
|
760
|
+
function useWindowDimensions() {
|
761
|
+
var _useState = React.useState(getWindowDimensions()),
|
762
|
+
windowDimensions = _useState[0],
|
763
|
+
setWindowDimensions = _useState[1];
|
764
|
+
React.useEffect(function () {
|
765
|
+
function handleResize() {
|
766
|
+
setWindowDimensions(getWindowDimensions());
|
767
|
+
}
|
768
|
+
window.addEventListener('resize', handleResize);
|
769
|
+
return function () {
|
770
|
+
return window.removeEventListener('resize', handleResize);
|
771
|
+
};
|
772
|
+
}, []);
|
773
|
+
return windowDimensions;
|
774
|
+
}
|
775
|
+
|
675
776
|
exports.Canvas2D = Canvas2D;
|
676
777
|
exports.CanvasImage = CanvasImage;
|
677
778
|
exports.Circle = Circle;
|
678
779
|
exports.Polygon = Polygon;
|
679
780
|
exports.Rect = Rect;
|
680
781
|
exports.preloadImages = preloadImages;
|
782
|
+
exports.useGamepad = useGamepad;
|
783
|
+
exports.useKeyboard = useKeyboard;
|
784
|
+
exports.useMousePosition = useMousePosition;
|
785
|
+
exports.useWindowDimensions = useWindowDimensions;
|
681
786
|
//# sourceMappingURL=index.js.map
|
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"],"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));\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\nfunction onRightClickEvent(e) {\n\te.preventDefault();\n\tonRightClick(elementRightClick(e, elements, tileSize, state));\n}\n\nexport default function Canvas2D({\n\telements,\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\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 elements !== 'object' || !Array.isArray(elements)) {\n\t\tthrow new Error('Invalid elements, should be an array !');\n\t}\n\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\t// Sort elements\n\tconst sortedElements = sortElements(elements);\n\n\t// Render\n\tlet onMouseMove = null;\n\tif(trackMouseMove) {\n\t\tonMouseMove = (e) => mouseMove(e, elements, 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, tileSize, state));\n\t}\n\n\t// Right click Event\n\tuseEffect(() => {\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(onFrame) {\n\t\t\t\tonFrame();\n\t\t\t}\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\tif(shouldRender) {\n\t\t\t\twindow.requestAnimationFrame(render);\n\t\t\t}\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}"],"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","onRightClickEvent","preventDefault","onRightClick","Canvas2D","_ref$trackMouseMove","trackMouseMove","_ref$minZoom","_ref$maxZoom","_ref$tileSize","onClick","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","Array","isArray","sortedElements","onMouseMove","onWheelFn","onClickFn","useEffect","addEventListener","removeEventListener","shouldRender","render","requestAnimationFrame","React","createElement","ref","onPointerMove","className","preloadImages","images","image"],"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\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\nlet 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\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, 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, 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, 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 = onFrame();\n\t\t\tconst sortedElements = sortElements(elements);\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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"}
|
package/dist/index.modern.js
CHANGED
@@ -253,7 +253,10 @@ function mouseMove(event, elements, tileSize, props, setProps, lockXAxis, lockYA
|
|
253
253
|
}
|
254
254
|
} else {
|
255
255
|
if (onHover) {
|
256
|
-
onHover(collideElement(event, elements, left, top, tileSize, props.zoom)
|
256
|
+
onHover(collideElement(event, elements, left, top, tileSize, props.zoom), {
|
257
|
+
x: left,
|
258
|
+
y: top
|
259
|
+
});
|
257
260
|
}
|
258
261
|
selectedObject = null;
|
259
262
|
}
|
@@ -531,14 +534,10 @@ function renderCanvas(context, width, height, elements, tileSize, state) {
|
|
531
534
|
}
|
532
535
|
}
|
533
536
|
|
534
|
-
var _excluded = ["
|
535
|
-
|
536
|
-
e.preventDefault();
|
537
|
-
onRightClick(elementRightClick(e, elements, tileSize, state));
|
538
|
-
}
|
537
|
+
var _excluded = ["width", "height", "trackMouseMove", "minZoom", "maxZoom", "tileSize", "onClick", "onRightClick", "onHover", "onElementMoved", "onWheel", "onFrame", "lockXAxis", "lockYAxis", "smoothingQuality", "dragObjects", "deltaLeft", "deltaTop"];
|
538
|
+
var elements = [];
|
539
539
|
function Canvas2D(_ref) {
|
540
|
-
var
|
541
|
-
width = _ref.width,
|
540
|
+
var width = _ref.width,
|
542
541
|
height = _ref.height,
|
543
542
|
_ref$trackMouseMove = _ref.trackMouseMove,
|
544
543
|
trackMouseMove = _ref$trackMouseMove === void 0 ? true : _ref$trackMouseMove,
|
@@ -593,9 +592,6 @@ function Canvas2D(_ref) {
|
|
593
592
|
}, []);
|
594
593
|
state.deltaTop = deltaTop;
|
595
594
|
state.deltaLeft = deltaLeft;
|
596
|
-
if (typeof elements !== 'object' || !Array.isArray(elements)) {
|
597
|
-
throw new Error('Invalid elements, should be an array !');
|
598
|
-
}
|
599
595
|
if (typeof width !== 'number' || typeof height !== 'number') {
|
600
596
|
throw new Error('width/height should be specified and be numbers.');
|
601
597
|
}
|
@@ -605,7 +601,9 @@ function Canvas2D(_ref) {
|
|
605
601
|
if (typeof onClick !== 'function' && typeof onClick !== 'undefined') {
|
606
602
|
throw new Error('onClick should be a function.');
|
607
603
|
}
|
608
|
-
|
604
|
+
if (typeof onFrame !== 'function') {
|
605
|
+
throw new Error('onFrame should be a function.');
|
606
|
+
}
|
609
607
|
var onMouseMove = null;
|
610
608
|
if (trackMouseMove) {
|
611
609
|
onMouseMove = function onMouseMove(e) {
|
@@ -627,6 +625,10 @@ function Canvas2D(_ref) {
|
|
627
625
|
};
|
628
626
|
}
|
629
627
|
useEffect(function () {
|
628
|
+
function onRightClickEvent(e) {
|
629
|
+
e.preventDefault();
|
630
|
+
onRightClick(elementRightClick(e, elements, tileSize, state));
|
631
|
+
}
|
630
632
|
if (onRightClick && state.canvas) {
|
631
633
|
state.canvas.addEventListener('contextmenu', onRightClickEvent);
|
632
634
|
return state.canvas.removeEventListener('contextmenu', onRightClickEvent);
|
@@ -635,15 +637,15 @@ function Canvas2D(_ref) {
|
|
635
637
|
useEffect(function () {
|
636
638
|
var shouldRender = true;
|
637
639
|
function render() {
|
638
|
-
if (
|
639
|
-
|
640
|
+
if (!shouldRender) {
|
641
|
+
return;
|
640
642
|
}
|
643
|
+
elements = onFrame();
|
644
|
+
var sortedElements = sortElements(elements);
|
641
645
|
if (state.context) {
|
642
646
|
renderCanvas(state.context, width, height, sortedElements, tileSize, state);
|
643
647
|
}
|
644
|
-
|
645
|
-
window.requestAnimationFrame(render);
|
646
|
-
}
|
648
|
+
window.requestAnimationFrame(render);
|
647
649
|
}
|
648
650
|
window.requestAnimationFrame(render);
|
649
651
|
return function () {
|
@@ -669,5 +671,104 @@ function preloadImages(images) {
|
|
669
671
|
}
|
670
672
|
}
|
671
673
|
|
672
|
-
|
674
|
+
var intervalId = 0;
|
675
|
+
var FRAME_INTERVAL = 15;
|
676
|
+
function useGamepad() {
|
677
|
+
var _useState = useState(),
|
678
|
+
gamepad = _useState[0],
|
679
|
+
setGamepad = _useState[1];
|
680
|
+
useEffect(function () {
|
681
|
+
clearInterval(intervalId);
|
682
|
+
intervalId = setInterval(function () {
|
683
|
+
return setGamepad(navigator.getGamepads()[0]);
|
684
|
+
}, FRAME_INTERVAL);
|
685
|
+
}, []);
|
686
|
+
return gamepad;
|
687
|
+
}
|
688
|
+
|
689
|
+
function useKeyboard() {
|
690
|
+
var _useState = useState({}),
|
691
|
+
keyboard = _useState[0],
|
692
|
+
setKeyboard = _useState[1];
|
693
|
+
useEffect(function () {
|
694
|
+
document.addEventListener('keydown', function (e) {
|
695
|
+
keyboard[e.key] = true;
|
696
|
+
setKeyboard(JSON.parse(JSON.stringify(keyboard)));
|
697
|
+
});
|
698
|
+
document.addEventListener('keyup', function (e) {
|
699
|
+
keyboard[e.key] = false;
|
700
|
+
setKeyboard(JSON.parse(JSON.stringify(keyboard)));
|
701
|
+
});
|
702
|
+
}, []);
|
703
|
+
return keyboard;
|
704
|
+
}
|
705
|
+
|
706
|
+
function useMousePosition(includeTouch) {
|
707
|
+
if (includeTouch === void 0) {
|
708
|
+
includeTouch = true;
|
709
|
+
}
|
710
|
+
var _useState = useState({
|
711
|
+
x: null,
|
712
|
+
y: null
|
713
|
+
}),
|
714
|
+
mousePosition = _useState[0],
|
715
|
+
setMousePosition = _useState[1];
|
716
|
+
useEffect(function () {
|
717
|
+
var updateMousePosition = function updateMousePosition(ev) {
|
718
|
+
var x, y;
|
719
|
+
if (ev.touches) {
|
720
|
+
var touch = ev.touches[0];
|
721
|
+
var _ref = [touch.clientX, touch.clientY];
|
722
|
+
x = _ref[0];
|
723
|
+
y = _ref[1];
|
724
|
+
} else {
|
725
|
+
var _ref2 = [ev.clientX, ev.clientY];
|
726
|
+
x = _ref2[0];
|
727
|
+
y = _ref2[1];
|
728
|
+
}
|
729
|
+
setMousePosition({
|
730
|
+
x: x,
|
731
|
+
y: y
|
732
|
+
});
|
733
|
+
};
|
734
|
+
window.addEventListener('mousemove', updateMousePosition);
|
735
|
+
if (includeTouch) {
|
736
|
+
window.addEventListener('touchmove', updateMousePosition);
|
737
|
+
}
|
738
|
+
return function () {
|
739
|
+
window.removeEventListener('mousemove', updateMousePosition);
|
740
|
+
if (includeTouch) {
|
741
|
+
window.removeEventListener('touchmove', updateMousePosition);
|
742
|
+
}
|
743
|
+
};
|
744
|
+
}, [includeTouch]);
|
745
|
+
return mousePosition;
|
746
|
+
}
|
747
|
+
|
748
|
+
function getWindowDimensions() {
|
749
|
+
var _document$documentEle = document.documentElement,
|
750
|
+
width = _document$documentEle.clientWidth,
|
751
|
+
height = _document$documentEle.clientHeight;
|
752
|
+
return {
|
753
|
+
width: width,
|
754
|
+
height: height
|
755
|
+
};
|
756
|
+
}
|
757
|
+
function useWindowDimensions() {
|
758
|
+
var _useState = useState(getWindowDimensions()),
|
759
|
+
windowDimensions = _useState[0],
|
760
|
+
setWindowDimensions = _useState[1];
|
761
|
+
useEffect(function () {
|
762
|
+
function handleResize() {
|
763
|
+
setWindowDimensions(getWindowDimensions());
|
764
|
+
}
|
765
|
+
window.addEventListener('resize', handleResize);
|
766
|
+
return function () {
|
767
|
+
return window.removeEventListener('resize', handleResize);
|
768
|
+
};
|
769
|
+
}, []);
|
770
|
+
return windowDimensions;
|
771
|
+
}
|
772
|
+
|
773
|
+
export { Canvas2D, CanvasImage, Circle, Polygon, Rect, preloadImages, useGamepad, useKeyboard, useMousePosition, useWindowDimensions };
|
673
774
|
//# sourceMappingURL=index.modern.js.map
|
package/dist/index.modern.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/functions/calcTileSize.js","../src/collisions/inCircle.js","../src/collisions/inPoly.js","../src/collisions/inRect.js","../src/collisions/collideElement.js","../src/events/elementClick.js","../src/events/elementRightClick.js","../src/events/mouseMove.js","../src/events/mouseWheel.js","../src/functions/sortElements.js","../src/shapes/CanvasObject.js","../src/shapes/ColoredCanvasObject.js","../src/shapes/Circle.js","../src/shapes/CanvasImage.js","../src/shapes/Rect.js","../src/shapes/Polygon.js","../src/render/renderCircle.js","../src/render/renderImage.js","../src/render/renderRect.js","../src/render/renderPolygon.js","../src/render/renderCanvas.js","../src/Canvas2D.js","../src/functions/preloadImages.js"],"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));\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\nfunction onRightClickEvent(e) {\n\te.preventDefault();\n\tonRightClick(elementRightClick(e, elements, tileSize, state));\n}\n\nexport default function Canvas2D({\n\telements,\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\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 elements !== 'object' || !Array.isArray(elements)) {\n\t\tthrow new Error('Invalid elements, should be an array !');\n\t}\n\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\t// Sort elements\n\tconst sortedElements = sortElements(elements);\n\n\t// Render\n\tlet onMouseMove = null;\n\tif(trackMouseMove) {\n\t\tonMouseMove = (e) => mouseMove(e, elements, 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, tileSize, state));\n\t}\n\n\t// Right click Event\n\tuseEffect(() => {\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(onFrame) {\n\t\t\t\tonFrame();\n\t\t\t}\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\tif(shouldRender) {\n\t\t\t\twindow.requestAnimationFrame(render);\n\t\t\t}\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}"],"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","onRightClickEvent","preventDefault","onRightClick","Canvas2D","_ref$trackMouseMove","trackMouseMove","_ref$minZoom","_ref$maxZoom","_ref$tileSize","onClick","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","Array","isArray","sortedElements","onMouseMove","onWheelFn","onClickFn","useEffect","addEventListener","removeEventListener","shouldRender","render","requestAnimationFrame","React","createElement","ref","onPointerMove","className","preloadImages","images","image"],"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\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\nlet 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\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, 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, 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, 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 = onFrame();\n\t\t\tconst sortedElements = sortElements(elements);\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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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "canvas2d-wrapper",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.6.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,21 +27,21 @@
|
|
27
27
|
"react": "^17.0.0 || ^18.0.0"
|
28
28
|
},
|
29
29
|
"devDependencies": {
|
30
|
-
"@testing-library/jest-dom": "^6.
|
30
|
+
"@testing-library/jest-dom": "^6.2.0",
|
31
31
|
"@testing-library/react": "^14.1.2",
|
32
|
-
"@testing-library/user-event": "^14.
|
33
|
-
"canvas": "^2.
|
34
|
-
"cross-env": "^7.0.
|
35
|
-
"eslint": "^8.
|
36
|
-
"gh-pages": "^6.1.
|
37
|
-
"microbundle-crl": "^0.13.
|
32
|
+
"@testing-library/user-event": "^14.5.2",
|
33
|
+
"canvas": "^2.11.2",
|
34
|
+
"cross-env": "^7.0.3",
|
35
|
+
"eslint": "^8.56.0",
|
36
|
+
"gh-pages": "^6.1.1",
|
37
|
+
"microbundle-crl": "^0.13.11",
|
38
38
|
"npm-run-all": "^4.1.5",
|
39
39
|
"postcss-flexbugs-fixes": "^5.0.2",
|
40
40
|
"postcss-normalize": "^10.0.1",
|
41
|
-
"postcss-preset-env": "^9.
|
41
|
+
"postcss-preset-env": "^9.3.0",
|
42
42
|
"react": "^18.2.0",
|
43
43
|
"react-dom": "^18.2.0",
|
44
|
-
"react-scripts": "^5.0.
|
44
|
+
"react-scripts": "^5.0.1"
|
45
45
|
},
|
46
46
|
"files": [
|
47
47
|
"dist"
|