Skip to content

Commit 362d63f

Browse files
committed
update
1 parent 957950b commit 362d63f

File tree

2 files changed

+57
-56
lines changed

2 files changed

+57
-56
lines changed

apps/bplan-client/src/ReloadPrompt.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ export const ReloadPrompt = (props: ReloadPromptProps) => {
2525

2626
const handleUpdateServiceWorker = async () => {
2727
console.info('handleUpdateServiceWorker')
28-
await updateServiceWorker()
2928
handleClose()
29+
await updateServiceWorker()
3030
}
3131

3232
return (

apps/bplan-client/src/components/real-button/use-global-touch.ts

Lines changed: 56 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,25 @@ const getPointedIds = (position: Position, takeFirst: boolean = false): InfoIds
125125
}
126126
}
127127

128+
export const getTouchedIds = (touches: TouchList, takeFirst: boolean = false) => {
129+
const ids: Set<string> = new Set()
130+
const touchesLength = touches.length
131+
132+
for (let index = 0; index < touchesLength; index += 1) {
133+
const touch = touches[index]
134+
const elements = getElementsFromPoint({x: touch.clientX, y: touch.clientY})
135+
const touchedElementIDs = takeFirst
136+
? findTouchFirstId(elements)
137+
: findTouchIds(elements)
138+
139+
for (const touchedElementID of touchedElementIDs) {
140+
ids.add(touchedElementID)
141+
}
142+
}
143+
144+
return ids
145+
}
146+
128147
export const getTouchedIdsMap = (touches: TouchList, takeFirst: boolean = false) => {
129148
const touchIDs: Map<number, InfoIds> = new Map()
130149
const touchesLength = touches.length
@@ -152,7 +171,8 @@ export const getTouchedIdsMap = (touches: TouchList, takeFirst: boolean = false)
152171
}
153172

154173
export const useGlobalTouchEmitter = (options: UseGlobalTouchEmitterOptions = {}) => {
155-
let savedDownIds: Map<number, Set<string>> = new Map()
174+
let savedDownIdsMap: Map<number, Set<string>> = new Map()
175+
const savedDownIds: Set<string> = new Set()
156176
let mouseDown: boolean = false
157177
const mouseId = -1
158178
const {topLevelElementOnly: takeFirst = false, preventTouchContext} = options
@@ -172,7 +192,7 @@ export const useGlobalTouchEmitter = (options: UseGlobalTouchEmitterOptions = {}
172192
mouseDown = true
173193
const {ids, point} = getPointedIds({x: event.pageX, y: event.pageY}, takeFirst)
174194

175-
savedDownIds = new Map<number, Set<string>>([[mouseId, ids]])
195+
savedDownIdsMap = new Map<number, Set<string>>([[mouseId, ids]])
176196
emitAllIds(ids, true)
177197
emitAllDragIds({ids, point, state: 'start'})
178198
})
@@ -185,8 +205,8 @@ export const useGlobalTouchEmitter = (options: UseGlobalTouchEmitterOptions = {}
185205

186206
mouseDown = false
187207
//
188-
emitAllMultiIDs(savedDownIds, false)
189-
savedDownIds = new Map()
208+
emitAllMultiIDs(savedDownIdsMap, false)
209+
savedDownIdsMap = new Map()
190210
})
191211

192212
useEvent(getWindow, 'pointermove', (event: PointerEvent) => {
@@ -195,15 +215,15 @@ export const useGlobalTouchEmitter = (options: UseGlobalTouchEmitterOptions = {}
195215
return
196216
}
197217

198-
const downedIds = savedDownIds.get(mouseId)
218+
const downedIds = savedDownIdsMap.get(mouseId)
199219
const upTouchIds: Set<string> = new Set(downedIds)
200220
const {ids: newDownIds, point} = getPointedIds(
201221
{x: event.pageX, y: event.pageY},
202222
takeFirst,
203223
)
204224
const downTouchIds = new Set(newDownIds)
205225

206-
savedDownIds = new Map<number, Set<string>>([[mouseId, new Set(newDownIds)]])
226+
savedDownIdsMap = new Map<number, Set<string>>([[mouseId, new Set(newDownIds)]])
207227

208228
for (const id of newDownIds) {
209229
if (upTouchIds.has(id)) {
@@ -218,65 +238,46 @@ export const useGlobalTouchEmitter = (options: UseGlobalTouchEmitterOptions = {}
218238
})
219239

220240
useEvent(getWindow, 'touchstart', (event) => {
221-
const touches = event.changedTouches
222-
const touchIds = getTouchedIdsMap(touches, takeFirst)
223-
224-
for (const [identifier, {ids, point}] of touchIds.entries()) {
225-
savedDownIds.set(identifier, ids)
226-
emitAllIds(ids, true)
227-
emitAllDragIds({ids, point, state: 'start'})
228-
}
229-
})
241+
const {touches} = event
242+
const touchIds = getTouchedIds(touches, takeFirst)
243+
const downIds = new Set<string>(touchIds)
230244

231-
useEvent(getWindow, 'touchmove', (event) => {
232-
const touches = event.changedTouches
233-
const touchIdsMap = getTouchedIdsMap(touches, takeFirst)
234-
235-
for (const [identifier, downedIds] of savedDownIds) {
236-
const {ids: newDownIds = new Set<string>(), point} =
237-
touchIdsMap.get(identifier) ?? {}
238-
const upTouchIds = new Set<string>(downedIds)
239-
const downTouchIds = new Set(newDownIds)
240-
const touchMoveIds = new Set<string>()
241-
242-
for (const id of newDownIds) {
243-
if (downedIds.has(id)) {
244-
upTouchIds.delete(id)
245-
downTouchIds.delete(id)
246-
touchMoveIds.add(id)
247-
}
245+
for (const id of touchIds) {
246+
if (savedDownIds.has(id)) {
247+
downIds.delete(id)
248248
}
249249

250-
savedDownIds.set(identifier, newDownIds)
251-
emitAllIds(downTouchIds, true)
252-
emitAllIds(upTouchIds, false)
253-
// emitAllDragIds({ids: upTouchIds, point, state: 'end'})
254-
emitAllDragIds({ids: touchMoveIds, point, state: 'move'})
255-
emitAllDragIds({ids: downTouchIds, point, state: 'start'})
250+
savedDownIds.add(id)
256251
}
257-
})
258-
259-
useEvent(getWindow, 'touchend', (event) => {
260-
event.preventDefault()
261252

262-
const touches = event.changedTouches
263-
const touchIdsMap = getTouchedIdsMap(touches, takeFirst)
253+
emitAllIds(downIds, true)
254+
})
264255

265-
for (const [identifier, {ids}] of touchIdsMap.entries()) {
266-
const downedIds = savedDownIds.get(identifier)
267-
const downTouchIds: Set<string> = new Set(downedIds)
268-
const upTouchIds: Set<string> = new Set(ids)
256+
const updateDownIds = (event: TouchEvent) => {
257+
const {touches} = event
258+
const touchIds = getTouchedIds(touches, takeFirst)
259+
const downIds = new Set<string>(touchIds)
260+
const upIds = new Set<string>(savedDownIds)
269261

270-
for (const id of upTouchIds) {
271-
// down 된 목록에서 up 할 id 제거
272-
downTouchIds.delete(id)
262+
for (const id of touchIds) {
263+
if (savedDownIds.has(id)) {
264+
downIds.delete(id)
273265
}
274266

275-
savedDownIds.set(identifier, downTouchIds)
276-
emitAllIds(upTouchIds, false)
277-
// emitAllDragIds({ids, point, state: 'end'})
267+
upIds.delete(id)
268+
savedDownIds.add(id)
278269
}
279-
})
270+
271+
for (const id of upIds) {
272+
savedDownIds.delete(id)
273+
}
274+
275+
emitAllIds(downIds, true)
276+
emitAllIds(upIds, false)
277+
}
278+
279+
useEvent(getWindow, 'touchmove', updateDownIds)
280+
useEvent(getWindow, 'touchend', updateDownIds)
280281
}
281282

282283
export const useGlobalDown = (id: string): Accessor<DownEventPayload> => {

0 commit comments

Comments
 (0)