Skip to content

Commit 7710826

Browse files
committed
move drag start position from element API into WeakMap
1 parent 1278683 commit 7710826

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

index.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ tmpl.innerHTML = `
1717
`
1818

1919
const startPositions = new WeakMap()
20+
const dragStartPositions = new WeakMap()
2021

2122
function moveCropArea(event: MouseEvent | KeyboardEvent) {
2223
const el = event.currentTarget
@@ -34,9 +35,11 @@ function moveCropArea(event: MouseEvent | KeyboardEvent) {
3435
} else if (event.key === 'ArrowRight') {
3536
deltaX = 1
3637
}
37-
} else if (el.dragStartX && el.dragStartY && event instanceof MouseEvent) {
38-
deltaX = event.pageX - el.dragStartX
39-
deltaY = event.pageY - el.dragStartY
38+
} else if (dragStartPositions.has(el) && event instanceof MouseEvent) {
39+
const pos = dragStartPositions.get(el)
40+
if (!pos) return
41+
deltaX = event.pageX - pos.dragStartX
42+
deltaY = event.pageY - pos.dragStartY
4043
}
4144

4245
if (deltaX !== 0 || deltaY !== 0) {
@@ -49,8 +52,10 @@ function moveCropArea(event: MouseEvent | KeyboardEvent) {
4952
}
5053

5154
if (event instanceof MouseEvent) {
52-
el.dragStartX = event.pageX
53-
el.dragStartY = event.pageY
55+
dragStartPositions.set(el, {
56+
dragStartX: event.pageX,
57+
dragStartY: event.pageY
58+
})
5459
}
5560
}
5661

@@ -154,7 +159,7 @@ function stopUpdate(event: MouseEvent) {
154159
const el = event.currentTarget
155160
if (!(el instanceof ImageCropElement)) return
156161

157-
el.dragStartX = el.dragStartY = null
162+
dragStartPositions.delete(el)
158163
el.classList.remove('nwse', 'nesw')
159164
el.removeEventListener('mousemove', updateCropArea)
160165
el.removeEventListener('mousemove', moveCropArea)
@@ -175,8 +180,6 @@ function fireChangeEvent(target: ImageCropElement, result: {x: number, y: number
175180
class ImageCropElement extends HTMLElement {
176181
image: HTMLImageElement
177182
box: HTMLElement
178-
dragStartX: ?number
179-
dragStartY: ?number
180183

181184
connectedCallback() {
182185
this.appendChild(document.importNode(tmpl.content, true))

index.js.flow

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ declare module '@github/image-crop-element' {
44
declare export default class ImageCropElement extends HTMLElement {
55
image: HTMLImageElement;
66
box: HTMLElement;
7-
dragStartX: ?number;
8-
dragStartY: ?number;
97

108
get src(): ?string;
119
set src(val: ?string): void;

0 commit comments

Comments
 (0)