Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
draggable-helper
Advanced tools
A js library to simplify your drag and drop functions. Start with a element, it will expose hooks(drag, moving, drop). You can stop drag, moving and drop by conditions. You can set minTranslate. It uses Typescript.
npm install draggable-helper
import draggableHelper from 'draggable-helper'
// dragHandlerEl will be added mouse and touch event listener
const {destroy, options} = draggableHelper(HTMLElement dragHandlerEl, Object opt = {})
import { EventPosition, MouseOrTouchEvent } from "drag-event-service";
export default function (
listenerElement: HTMLElement,
opt?: Options
): {
destroy: () => void;
options: Options;
};
export declare const defaultOptions: {
ingoreTags: string[];
undraggableClassName: string;
minDisplacement: number;
draggingClassName: string;
clone: boolean;
updateMovedElementStyleManually: boolean;
preventTextSelection: boolean;
edgeScrollTriggerMargin: number;
edgeScrollSpeed: number;
edgeScrollTriggerMode: string;
};
export interface Options extends Partial<typeof defaultOptions> {
triggerClassName?: string | string[];
triggerBySelf?: boolean;
getTriggerElement?: (
directTriggerElement: HTMLElement,
store: Store
) => HTMLElement | undefined;
getMovedOrClonedElement?: (
directTriggerElement: HTMLElement,
store: Store,
opt: Options
) => HTMLElement;
beforeFirstMove?: (store: Store, opt: Options) => boolean | undefined;
afterFirstMove?: (store: Store, opt: Options) => void;
beforeMove?: (store: Store, opt: Options) => boolean | undefined;
afterMove?: (store: Store, opt: Options) => void;
beforeDrop?: (store: Store, opt: Options) => boolean | undefined;
afterDrop?: (store: Store, opt: Options) => void;
preventTextSelection?: boolean;
edgeScroll?: boolean;
edgeScrollTriggerMargin?: number;
edgeScrollSpeed?: number;
edgeScrollTriggerMode?: "top_left_corner" | "mouse";
edgeScrollSpecifiedContainerX?:
| HTMLElement
| ((store: Store, opt: Options) => HTMLElement);
edgeScrollSpecifiedContainerY?:
| HTMLElement
| ((store: Store, opt: Options) => HTMLElement);
onmousedown?: (e: MouseEvent) => void;
onmousemove?: (e: MouseEvent) => void;
onmouseup?: (e: MouseEvent) => void;
ontouchstart?: (e: TouchEvent) => void;
ontouchmove?: (e: TouchEvent) => void;
ontouchend?: (e: TouchEvent) => void;
onClone?: (store: Store, opt: Options) => boolean;
}
export declare const initialStore: {
movedCount: number;
};
declare type InitialStore = typeof initialStore;
export interface Store extends InitialStore {
listenerElement: HTMLElement;
directTriggerElement: HTMLElement;
triggerElement: HTMLElement;
startEvent: MouseOrTouchEvent;
moveEvent: MouseOrTouchEvent;
endEvent: MouseOrTouchEvent;
mouse: EventPosition;
initialMouse: EventPosition;
move: EventPosition2;
movedOrClonedElement: HTMLElement;
movedElement: HTMLElement;
initialPosition: EventPosition2;
initialPositionRelativeToViewport: EventPosition2;
updateMovedElementStyle: () => void;
_isMovingElementCloned: boolean;
}
declare type EventPosition2 = {
x: number;
y: number;
};
export {};
Advance usage: bind to parent element, make children element as trigger element or moved element.
import draggableHelper from 'draggable-helper'
const {destroy, options} = draggableHelper(document.body, {
drag(startEvent, moveEvent, store, opt) {
// check trigger el
if (startEvent.target not has class 'your trigger class') {
return false
}
},
// get the element which will be moved
getEl: (dragHandlerEl, store, opt) => get the el which will be moved by `store.startEvent.target`
})
In follow case, drag event will be prevented.
const IGNORE_TRIGGERS = ["INPUT", "TEXTAREA", "SELECT", "OPTGROUP", "OPTION"];
undraggable
or its ancestor till dragHandlerEl has.FAQs
To simplify drag and drop.
We found that draggable-helper demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.