canvas-react-easy 1.0.7 → 1.0.9
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/tools/ImageTool.js +7 -9
- package/dist/tools/Text.js +7 -6
- package/dist/tools/Tool.js +13 -0
- package/dist/types/tools/Tool.d.ts +5 -0
- package/package.json +1 -1
- package/src/tools/ImageTool.ts +8 -10
- package/src/tools/Text.ts +12 -8
- package/src/tools/Tool.ts +15 -0
package/dist/tools/ImageTool.js
CHANGED
|
@@ -15,21 +15,19 @@ export class ImageTool extends Tool {
|
|
|
15
15
|
}
|
|
16
16
|
listen() {
|
|
17
17
|
const handler = (e) => {
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
18
|
+
const evt = e;
|
|
19
|
+
const canvas = evt.target;
|
|
20
|
+
const x = evt.pageX - canvas.offsetLeft;
|
|
21
|
+
const y = evt.pageY - canvas.offsetTop;
|
|
21
22
|
const url = prompt("Введите ссылку на изображение");
|
|
22
23
|
if (!url)
|
|
23
24
|
return;
|
|
24
25
|
const img = new Image();
|
|
25
26
|
img.src = url;
|
|
26
|
-
img.onload = () =>
|
|
27
|
-
|
|
28
|
-
};
|
|
29
|
-
// удаляем обработчик после первого использования
|
|
30
|
-
canvas.removeEventListener("mousedown", handler);
|
|
27
|
+
img.onload = () => this.ctx.drawImage(img, x, y);
|
|
28
|
+
this.clearEvents(); // удаляем обработчики после использования
|
|
31
29
|
};
|
|
32
|
-
this.
|
|
30
|
+
this.addListener("mousedown", handler);
|
|
33
31
|
}
|
|
34
32
|
onClickHandler(e) {
|
|
35
33
|
return __awaiter(this, void 0, void 0, function* () {
|
package/dist/tools/Text.js
CHANGED
|
@@ -6,17 +6,18 @@ export class TextTool extends Tool {
|
|
|
6
6
|
}
|
|
7
7
|
listen() {
|
|
8
8
|
const handler = (e) => {
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
9
|
+
const evt = e; // приводим Event к MouseEvent
|
|
10
|
+
const canvas = evt.target;
|
|
11
|
+
const x = evt.pageX - canvas.offsetLeft;
|
|
12
|
+
const y = evt.pageY - canvas.offsetTop;
|
|
12
13
|
const text = prompt("Введите текст");
|
|
13
14
|
if (text) {
|
|
14
15
|
this.ctx.fillText(text, x, y);
|
|
15
16
|
}
|
|
16
|
-
//
|
|
17
|
-
|
|
17
|
+
// удаляем обработчик после первого использования
|
|
18
|
+
this.clearEvents();
|
|
18
19
|
};
|
|
19
|
-
this.
|
|
20
|
+
this.addListener("mousedown", handler);
|
|
20
21
|
}
|
|
21
22
|
onClickHandler(e) {
|
|
22
23
|
const target = e.target;
|
package/dist/tools/Tool.js
CHANGED
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
export default class Tool {
|
|
2
2
|
constructor(canvas) {
|
|
3
3
|
this.canvas = canvas;
|
|
4
|
+
this.events = [];
|
|
4
5
|
this.ctx = canvas.getContext("2d");
|
|
6
|
+
this.events = [];
|
|
5
7
|
this.clearEvents();
|
|
6
8
|
}
|
|
9
|
+
// сохраняем слушатели, чтобы потом удалять
|
|
10
|
+
addListener(type, handler) {
|
|
11
|
+
this.canvas.addEventListener(type, handler);
|
|
12
|
+
this.events.push({ type, handler });
|
|
13
|
+
}
|
|
7
14
|
clearEvents() {
|
|
15
|
+
// удаляем все зарегистрированные слушатели
|
|
16
|
+
this.events.forEach(({ type, handler }) => {
|
|
17
|
+
this.canvas.removeEventListener(type, handler);
|
|
18
|
+
});
|
|
19
|
+
this.events = [];
|
|
20
|
+
// очищаем стандартные свойства
|
|
8
21
|
this.canvas.onmousedown = null;
|
|
9
22
|
this.canvas.onmouseup = null;
|
|
10
23
|
this.canvas.onmousemove = null;
|
|
@@ -2,5 +2,10 @@ export default class Tool {
|
|
|
2
2
|
canvas: HTMLCanvasElement;
|
|
3
3
|
constructor(canvas: HTMLCanvasElement);
|
|
4
4
|
ctx: CanvasRenderingContext2D;
|
|
5
|
+
events: Array<{
|
|
6
|
+
type: string;
|
|
7
|
+
handler: EventListener;
|
|
8
|
+
}>;
|
|
9
|
+
addListener(type: string, handler: EventListener): void;
|
|
5
10
|
clearEvents(): void;
|
|
6
11
|
}
|
package/package.json
CHANGED
package/src/tools/ImageTool.ts
CHANGED
|
@@ -7,25 +7,23 @@ export class ImageTool extends Tool {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
listen() {
|
|
10
|
-
const handler = (e:
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
10
|
+
const handler = (e: Event) => {
|
|
11
|
+
const evt = e as MouseEvent;
|
|
12
|
+
const canvas = evt.target as HTMLCanvasElement;
|
|
13
|
+
const x = evt.pageX - canvas.offsetLeft;
|
|
14
|
+
const y = evt.pageY - canvas.offsetTop;
|
|
14
15
|
|
|
15
16
|
const url = prompt("Введите ссылку на изображение");
|
|
16
17
|
if (!url) return;
|
|
17
18
|
|
|
18
19
|
const img = new Image();
|
|
19
20
|
img.src = url;
|
|
20
|
-
img.onload = () =>
|
|
21
|
-
this.ctx.drawImage(img, x, y);
|
|
22
|
-
};
|
|
21
|
+
img.onload = () => this.ctx.drawImage(img, x, y);
|
|
23
22
|
|
|
24
|
-
// удаляем
|
|
25
|
-
canvas.removeEventListener("mousedown", handler);
|
|
23
|
+
this.clearEvents(); // удаляем обработчики после использования
|
|
26
24
|
};
|
|
27
25
|
|
|
28
|
-
this.
|
|
26
|
+
this.addListener("mousedown", handler);
|
|
29
27
|
}
|
|
30
28
|
|
|
31
29
|
async onClickHandler(e: MouseEvent) {
|
package/src/tools/Text.ts
CHANGED
|
@@ -7,19 +7,23 @@ export class TextTool extends Tool {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
listen() {
|
|
10
|
-
const handler = (e:
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
10
|
+
const handler = (e: Event) => {
|
|
11
|
+
const evt = e as MouseEvent; // приводим Event к MouseEvent
|
|
12
|
+
const canvas = evt.target as HTMLCanvasElement;
|
|
13
|
+
const x = evt.pageX - canvas.offsetLeft;
|
|
14
|
+
const y = evt.pageY - canvas.offsetTop;
|
|
15
|
+
|
|
14
16
|
const text = prompt("Введите текст");
|
|
15
17
|
if (text) {
|
|
16
18
|
this.ctx.fillText(text, x, y);
|
|
17
19
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
|
|
21
|
+
// удаляем обработчик после первого использования
|
|
22
|
+
this.clearEvents();
|
|
20
23
|
};
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
|
|
25
|
+
this.addListener("mousedown", handler);
|
|
26
|
+
}
|
|
23
27
|
|
|
24
28
|
onClickHandler(e: MouseEvent) {
|
|
25
29
|
const target = e.target as HTMLCanvasElement;
|
package/src/tools/Tool.ts
CHANGED
|
@@ -1,12 +1,27 @@
|
|
|
1
1
|
export default class Tool {
|
|
2
2
|
constructor(public canvas: HTMLCanvasElement) {
|
|
3
3
|
this.ctx = canvas.getContext("2d")!;
|
|
4
|
+
this.events = [];
|
|
4
5
|
this.clearEvents();
|
|
5
6
|
}
|
|
6
7
|
|
|
7
8
|
ctx: CanvasRenderingContext2D;
|
|
9
|
+
events: Array<{ type: string; handler: EventListener }> = [];
|
|
10
|
+
|
|
11
|
+
// сохраняем слушатели, чтобы потом удалять
|
|
12
|
+
addListener(type: string, handler: EventListener) {
|
|
13
|
+
this.canvas.addEventListener(type, handler);
|
|
14
|
+
this.events.push({ type, handler });
|
|
15
|
+
}
|
|
8
16
|
|
|
9
17
|
clearEvents() {
|
|
18
|
+
// удаляем все зарегистрированные слушатели
|
|
19
|
+
this.events.forEach(({ type, handler }) => {
|
|
20
|
+
this.canvas.removeEventListener(type, handler);
|
|
21
|
+
});
|
|
22
|
+
this.events = [];
|
|
23
|
+
|
|
24
|
+
// очищаем стандартные свойства
|
|
10
25
|
this.canvas.onmousedown = null;
|
|
11
26
|
this.canvas.onmouseup = null;
|
|
12
27
|
this.canvas.onmousemove = null;
|