@bestminr/drag-base
Advanced tools
Comparing version 0.0.2-alpha.0 to 0.0.3-alpha.0
@@ -6,3 +6,3 @@ 'use strict'; | ||
const isServer = typeof window === 'undefined'; | ||
function createDragFunction({ maxHeight, maxWidth, before, start, doing, end, minHeight, minWidth, scrollContainer, delay = 0, }) { | ||
function createDragFunction({ maxHeight, maxWidth, before, start, doing, end, canceled, minHeight, minWidth, scrollContainer, delay = 0, }) { | ||
if (isServer) | ||
@@ -18,8 +18,8 @@ return; | ||
}; | ||
let globalArgs; | ||
const onButtonDown = function (event, ...args) { | ||
let globalPayload; | ||
const onButtonDown = function (event, payload) { | ||
if (onButtonDown.timer) | ||
return; | ||
if (before) | ||
if (!before(event, args)) | ||
if (!before(event, payload)) | ||
return; | ||
@@ -29,3 +29,3 @@ event.preventDefault(); | ||
return; | ||
globalArgs = args; | ||
globalPayload = payload; | ||
window.addEventListener('mousemove', onDragging); | ||
@@ -76,3 +76,3 @@ window.addEventListener('mouseup', onDragEnd); | ||
} | ||
start(event, dargData, globalArgs); | ||
start(event, dargData, globalPayload); | ||
} | ||
@@ -92,5 +92,5 @@ function onDragging(event) { | ||
dargData.leftDiff = leftDiff; | ||
doing(event, { top, left, dargData }, globalArgs); | ||
doing(event, { top, left, dargData }, globalPayload); | ||
} | ||
function onDragEnd(event) { | ||
function onDragEnd(event, { isCancelling } = {}) { | ||
if (!onButtonDown.dragging && !onButtonDown.timer) | ||
@@ -106,4 +106,8 @@ return; | ||
dargData.leftDiff = 0; | ||
if (end) | ||
end(event, globalArgs); | ||
if (isCancelling) { | ||
if (canceled) | ||
canceled(event, globalPayload); | ||
} | ||
else if (end) | ||
end(event, globalPayload); | ||
}, 0); | ||
@@ -127,7 +131,11 @@ window.removeEventListener('mousemove', onDragging); | ||
const left = getLeft(leftDiff + leftScrollDiff); | ||
doing(event, { top, left, dargData }, globalArgs); | ||
doing(event, { top, left, dargData }, globalPayload); | ||
} | ||
} | ||
function cancel(event) { | ||
onDragEnd(event, { isCancelling: true }); | ||
} | ||
return { | ||
onButtonDown, | ||
cancel, | ||
}; | ||
@@ -134,0 +142,0 @@ } |
const isServer = typeof window === 'undefined'; | ||
function createDragFunction({ maxHeight, maxWidth, before, start, doing, end, minHeight, minWidth, scrollContainer, delay = 0, }) { | ||
function createDragFunction({ maxHeight, maxWidth, before, start, doing, end, canceled, minHeight, minWidth, scrollContainer, delay = 0, }) { | ||
if (isServer) | ||
@@ -13,8 +13,8 @@ return; | ||
}; | ||
let globalArgs; | ||
const onButtonDown = function (event, ...args) { | ||
let globalPayload; | ||
const onButtonDown = function (event, payload) { | ||
if (onButtonDown.timer) | ||
return; | ||
if (before) | ||
if (!before(event, args)) | ||
if (!before(event, payload)) | ||
return; | ||
@@ -24,3 +24,3 @@ event.preventDefault(); | ||
return; | ||
globalArgs = args; | ||
globalPayload = payload; | ||
window.addEventListener('mousemove', onDragging); | ||
@@ -71,3 +71,3 @@ window.addEventListener('mouseup', onDragEnd); | ||
} | ||
start(event, dargData, globalArgs); | ||
start(event, dargData, globalPayload); | ||
} | ||
@@ -87,5 +87,5 @@ function onDragging(event) { | ||
dargData.leftDiff = leftDiff; | ||
doing(event, { top, left, dargData }, globalArgs); | ||
doing(event, { top, left, dargData }, globalPayload); | ||
} | ||
function onDragEnd(event) { | ||
function onDragEnd(event, { isCancelling } = {}) { | ||
if (!onButtonDown.dragging && !onButtonDown.timer) | ||
@@ -101,4 +101,8 @@ return; | ||
dargData.leftDiff = 0; | ||
if (end) | ||
end(event, globalArgs); | ||
if (isCancelling) { | ||
if (canceled) | ||
canceled(event, globalPayload); | ||
} | ||
else if (end) | ||
end(event, globalPayload); | ||
}, 0); | ||
@@ -122,7 +126,11 @@ window.removeEventListener('mousemove', onDragging); | ||
const left = getLeft(leftDiff + leftScrollDiff); | ||
doing(event, { top, left, dargData }, globalArgs); | ||
doing(event, { top, left, dargData }, globalPayload); | ||
} | ||
} | ||
function cancel(event) { | ||
onDragEnd(event, { isCancelling: true }); | ||
} | ||
return { | ||
onButtonDown, | ||
cancel, | ||
}; | ||
@@ -129,0 +137,0 @@ } |
{ | ||
"name": "@bestminr/drag-base", | ||
"version": "0.0.2-alpha.0", | ||
"version": "0.0.3-alpha.0", | ||
"description": "", | ||
@@ -33,3 +33,3 @@ "keywords": [], | ||
}, | ||
"gitHead": "412f9de585e84444e957429d5d8f7fd617b69f24" | ||
"gitHead": "de81c03f067488cf00014ac67cf3f504b3e7f4ec" | ||
} |
@@ -9,3 +9,3 @@ export declare type DargData = { | ||
}; | ||
export declare type CreateDragFunction = { | ||
export declare type CreateDragFunction<T> = { | ||
maxHeight?: number; | ||
@@ -16,4 +16,4 @@ maxWidth?: number; | ||
delay?: number; | ||
before?: (event: MouseEvent, args?: any[]) => boolean; | ||
start: (event: MouseEvent, dargData: DargData, args?: any[]) => void; | ||
before?: (event: MouseEvent, payload?: T) => boolean; | ||
start: (event: MouseEvent, dargData: DargData, payload?: T) => void; | ||
doing: (event: MouseEvent, options: { | ||
@@ -23,13 +23,14 @@ top: number; | ||
dargData: DargData; | ||
}, args?: any[]) => void; | ||
end?: (event: MouseEvent, args?: any[]) => void; | ||
}, payload?: T) => void; | ||
end?: (event: MouseEvent, payload?: T) => void; | ||
canceled?: (event: MouseEvent, payload?: T) => void; | ||
scrollContainer?: HTMLElement; | ||
}; | ||
export declare function createDragFunction({ maxHeight, maxWidth, before, start, doing, end, minHeight, minWidth, scrollContainer, delay, }: CreateDragFunction): { | ||
export declare function createDragFunction<T = any>({ maxHeight, maxWidth, before, start, doing, end, canceled, minHeight, minWidth, scrollContainer, delay, }: CreateDragFunction<T>): { | ||
onButtonDown: { | ||
(event: MouseEvent, ...args: any[]): void; | ||
(event: MouseEvent, payload: T): void; | ||
dragging: boolean; | ||
timer: any; | ||
}; | ||
cancel: (event?: MouseEvent) => void; | ||
}; | ||
export declare type DragButtonDown = ReturnType<typeof createDragFunction>['onButtonDown']; |
11540
299