canvas-react-easy 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/components/Tools.js
CHANGED
|
@@ -8,14 +8,15 @@ import { TextTool } from "../tools/Text";
|
|
|
8
8
|
import { ImageTool } from "../tools/ImageTool";
|
|
9
9
|
const Tools = () => {
|
|
10
10
|
const selectTool = (ToolClass) => {
|
|
11
|
-
var _a;
|
|
12
|
-
|
|
13
|
-
if (!canvas)
|
|
11
|
+
var _a, _b;
|
|
12
|
+
if (!CanvasState.canvas)
|
|
14
13
|
return;
|
|
15
|
-
//
|
|
14
|
+
// очищаем старый инструмент
|
|
16
15
|
(_a = toolState.tool) === null || _a === void 0 ? void 0 : _a.clearEvents();
|
|
17
|
-
//
|
|
18
|
-
|
|
16
|
+
// создаём новый инструмент и подключаем слушатели
|
|
17
|
+
const tool = new ToolClass(CanvasState.canvas);
|
|
18
|
+
(_b = tool.listen) === null || _b === void 0 ? void 0 : _b.call(tool); // если инструмент имеет метод listen
|
|
19
|
+
toolState.setTool(tool);
|
|
19
20
|
};
|
|
20
21
|
return (_jsxs("div", { style: { marginBottom: "10px" }, children: [_jsx("button", { onClick: () => selectTool(Brush), children: "\u041A\u0438\u0441\u0442\u044C" }), _jsx("button", { onClick: () => selectTool(Rectangle), children: "\u041F\u0440\u044F\u043C\u043E\u0443\u0433\u043E\u043B\u044C\u043D\u0438\u043A" }), _jsx("button", { onClick: () => selectTool(Circle), children: "\u041A\u0440\u0443\u0433" }), _jsx("button", { onClick: () => selectTool(TextTool), children: "\u0422\u0435\u043A\u0441\u0442" }), _jsx("button", { onClick: () => selectTool(ImageTool), children: "\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435" })] }));
|
|
21
22
|
};
|
package/dist/tools/ImageTool.js
CHANGED
|
@@ -14,7 +14,22 @@ export class ImageTool extends Tool {
|
|
|
14
14
|
this.listen();
|
|
15
15
|
}
|
|
16
16
|
listen() {
|
|
17
|
-
|
|
17
|
+
const handler = (e) => {
|
|
18
|
+
const canvas = e.target;
|
|
19
|
+
const x = e.pageX - canvas.offsetLeft;
|
|
20
|
+
const y = e.pageY - canvas.offsetTop;
|
|
21
|
+
const url = prompt("Введите ссылку на изображение");
|
|
22
|
+
if (!url)
|
|
23
|
+
return;
|
|
24
|
+
const img = new Image();
|
|
25
|
+
img.src = url;
|
|
26
|
+
img.onload = () => {
|
|
27
|
+
this.ctx.drawImage(img, x, y);
|
|
28
|
+
};
|
|
29
|
+
// удаляем обработчик после первого использования
|
|
30
|
+
canvas.removeEventListener("mousedown", handler);
|
|
31
|
+
};
|
|
32
|
+
this.canvas.addEventListener("mousedown", handler);
|
|
18
33
|
}
|
|
19
34
|
onClickHandler(e) {
|
|
20
35
|
return __awaiter(this, void 0, void 0, function* () {
|
package/package.json
CHANGED
package/src/components/Tools.tsx
CHANGED
|
@@ -10,15 +10,17 @@ import { ImageTool } from "../tools/ImageTool";
|
|
|
10
10
|
const Tools = () => {
|
|
11
11
|
|
|
12
12
|
const selectTool = (ToolClass: any) => {
|
|
13
|
-
|
|
14
|
-
if (!canvas) return;
|
|
13
|
+
if (!CanvasState.canvas) return;
|
|
15
14
|
|
|
16
|
-
//
|
|
15
|
+
// очищаем старый инструмент
|
|
17
16
|
toolState.tool?.clearEvents();
|
|
18
17
|
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
// создаём новый инструмент и подключаем слушатели
|
|
19
|
+
const tool = new ToolClass(CanvasState.canvas);
|
|
20
|
+
tool.listen?.(); // если инструмент имеет метод listen
|
|
21
|
+
toolState.setTool(tool);
|
|
22
|
+
};
|
|
23
|
+
|
|
22
24
|
|
|
23
25
|
return (
|
|
24
26
|
<div style={{ marginBottom: "10px" }}>
|
package/src/tools/ImageTool.ts
CHANGED
|
@@ -7,8 +7,26 @@ export class ImageTool extends Tool {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
listen() {
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const handler = (e: MouseEvent) => {
|
|
11
|
+
const canvas = e.target as HTMLCanvasElement;
|
|
12
|
+
const x = e.pageX - canvas.offsetLeft;
|
|
13
|
+
const y = e.pageY - canvas.offsetTop;
|
|
14
|
+
|
|
15
|
+
const url = prompt("Введите ссылку на изображение");
|
|
16
|
+
if (!url) return;
|
|
17
|
+
|
|
18
|
+
const img = new Image();
|
|
19
|
+
img.src = url;
|
|
20
|
+
img.onload = () => {
|
|
21
|
+
this.ctx.drawImage(img, x, y);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// удаляем обработчик после первого использования
|
|
25
|
+
canvas.removeEventListener("mousedown", handler);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
this.canvas.addEventListener("mousedown", handler);
|
|
29
|
+
}
|
|
12
30
|
|
|
13
31
|
async onClickHandler(e: MouseEvent) {
|
|
14
32
|
const target = e.target as HTMLCanvasElement;
|