@drauu/core
Advanced tools
Comparing version 0.1.0-beta.3 to 0.1.0-beta.5
@@ -55,3 +55,2 @@ import { StrokeOptions } from 'perfect-freehand'; | ||
} | ||
declare type InputEvents = MouseEvent | TouchEvent | PointerEvent; | ||
interface Options { | ||
@@ -61,2 +60,8 @@ el?: string | SVGSVGElement; | ||
/** | ||
* Filter out events based on input type | ||
* | ||
* @default ['mouse', 'touch', 'pen'] | ||
*/ | ||
acceptsInputTypes?: ('mouse' | 'touch' | 'pen')[]; | ||
/** | ||
* When you apply a scale transform to the svg container, | ||
@@ -80,3 +85,3 @@ * set this property to let drauu aware of the currect coordinates. | ||
private drauu; | ||
event: MouseEvent | TouchEvent; | ||
event: PointerEvent; | ||
point: Point; | ||
@@ -92,3 +97,3 @@ start: Point; | ||
get altPressed(): boolean; | ||
getMousePosition(event: InputEvents): Point; | ||
getMousePosition(event: PointerEvent): Point; | ||
protected createElement<K extends keyof SVGElementTagNameMap>(name: K, overrides?: Partial<Brush>): SVGElementTagNameMap[K]; | ||
@@ -100,11 +105,11 @@ protected attr(name: string, value: string | number): void; | ||
*/ | ||
_eventDown(event: MouseEvent | TouchEvent): SVGElement | undefined; | ||
_eventDown(event: PointerEvent): SVGElement | undefined; | ||
/** | ||
* @internal | ||
*/ | ||
_eventMove(event: MouseEvent | TouchEvent): boolean; | ||
_eventMove(event: PointerEvent): boolean; | ||
/** | ||
* @internal | ||
*/ | ||
_eventUp(event: MouseEvent | TouchEvent): boolean | SVGElement | undefined; | ||
_eventUp(event: PointerEvent): boolean | SVGElement | undefined; | ||
} | ||
@@ -139,2 +144,3 @@ | ||
private eventEnd; | ||
private acceptsInput; | ||
private eventKeyboard; | ||
@@ -149,2 +155,2 @@ private commit; | ||
export { Brush, Drauu, DrawingMode, EventsMap, InputEvents, Options, Point, createDrauu }; | ||
export { Brush, Drauu, DrawingMode, EventsMap, Options, Point, createDrauu }; |
@@ -40,3 +40,3 @@ (() => { | ||
// ../../node_modules/.pnpm/nanoevents@6.0.0/node_modules/nanoevents/index.js | ||
// ../../node_modules/.pnpm/nanoevents@6.0.1/node_modules/nanoevents/index.js | ||
var createNanoEvents = () => ({ | ||
@@ -105,20 +105,10 @@ events: {}, | ||
getMousePosition(event) { | ||
var _a, _b, _c, _d; | ||
var _a; | ||
const rect = this.drauu.el.getBoundingClientRect(); | ||
const scale = (_a = this.drauu.options.coordinateScale) != null ? _a : 1; | ||
if (event instanceof PointerEvent || event instanceof MouseEvent) { | ||
return { | ||
x: (event.pageX - rect.left) * scale, | ||
y: (event.pageY - rect.top) * scale, | ||
pressure: event.pressure | ||
}; | ||
} | ||
if (event instanceof TouchEvent) { | ||
return { | ||
x: ((((_b = event.targetTouches[0]) == null ? void 0 : _b.pageX) || 0) - rect.left) * scale, | ||
y: ((((_c = event.targetTouches[0]) == null ? void 0 : _c.pageY) || 0) - rect.top) * scale, | ||
pressure: (_d = event.targetTouches[0]) == null ? void 0 : _d.force | ||
}; | ||
} | ||
throw new Error("unsupported event type"); | ||
return { | ||
x: (event.pageX - rect.left) * scale, | ||
y: (event.pageY - rect.top) * scale, | ||
pressure: event.pressure | ||
}; | ||
} | ||
@@ -174,3 +164,3 @@ createElement(name, overrides) { | ||
if (!this.el) | ||
return false; | ||
this.onStart(point); | ||
if (this.points[this.points.length - 1] !== point) | ||
@@ -477,3 +467,3 @@ this.points.push(point); | ||
if (!this.el) | ||
return false; | ||
this.onStart(point); | ||
if (this.points[this.points.length - 1] !== point) { | ||
@@ -590,17 +580,13 @@ this.points.push(point); | ||
const keyboard = this.eventKeyboard.bind(this); | ||
el.addEventListener("pointerdown", start, false); | ||
el.addEventListener("touchstart", start, false); | ||
el.addEventListener("pointermove", move, false); | ||
el.addEventListener("touchmove", move, false); | ||
el.addEventListener("pointerup", end, false); | ||
el.addEventListener("touchend", end, false); | ||
el.addEventListener("pointerdown", start, { passive: false }); | ||
el.addEventListener("pointermove", move, { passive: false }); | ||
el.addEventListener("pointerup", end, { passive: false }); | ||
el.addEventListener("pointercancel", end, { passive: false }); | ||
window.addEventListener("keydown", keyboard, false); | ||
window.addEventListener("keyup", keyboard, false); | ||
this._disposables.push(() => { | ||
el.removeEventListener("mousedown", start, false); | ||
el.removeEventListener("touchstart", start, false); | ||
el.removeEventListener("mousemove", move, false); | ||
el.removeEventListener("touchmove", move, false); | ||
el.removeEventListener("mouseup", end, false); | ||
el.removeEventListener("touchend", end, false); | ||
el.removeEventListener("pointerdown", start); | ||
el.removeEventListener("pointermove", move); | ||
el.removeEventListener("pointerup", end); | ||
el.removeEventListener("pointercancel", end); | ||
window.removeEventListener("keydown", keyboard, false); | ||
@@ -644,2 +630,4 @@ window.removeEventListener("keyup", keyboard, false); | ||
eventMove(event) { | ||
if (!this.acceptsInput(event)) | ||
return; | ||
if (this.model._eventMove(event)) { | ||
@@ -652,2 +640,4 @@ event.stopPropagation(); | ||
eventStart(event) { | ||
if (!this.acceptsInput(event)) | ||
return; | ||
event.stopPropagation(); | ||
@@ -664,2 +654,4 @@ event.preventDefault(); | ||
eventEnd(event) { | ||
if (!this.acceptsInput(event)) | ||
return; | ||
const result = this.model._eventUp(event); | ||
@@ -676,2 +668,5 @@ if (!result) { | ||
} | ||
acceptsInput(event) { | ||
return !this.options.acceptsInputTypes || this.options.acceptsInputTypes.includes(event.pointerType); | ||
} | ||
eventKeyboard(event) { | ||
@@ -678,0 +673,0 @@ this.shiftPressed = event.shiftKey; |
@@ -45,3 +45,3 @@ var __create = Object.create; | ||
// ../../node_modules/.pnpm/nanoevents@6.0.0/node_modules/nanoevents/index.js | ||
// ../../node_modules/.pnpm/nanoevents@6.0.1/node_modules/nanoevents/index.js | ||
var createNanoEvents = () => ({ | ||
@@ -110,20 +110,10 @@ events: {}, | ||
getMousePosition(event) { | ||
var _a, _b, _c, _d; | ||
var _a; | ||
const rect = this.drauu.el.getBoundingClientRect(); | ||
const scale = (_a = this.drauu.options.coordinateScale) != null ? _a : 1; | ||
if (event instanceof PointerEvent || event instanceof MouseEvent) { | ||
return { | ||
x: (event.pageX - rect.left) * scale, | ||
y: (event.pageY - rect.top) * scale, | ||
pressure: event.pressure | ||
}; | ||
} | ||
if (event instanceof TouchEvent) { | ||
return { | ||
x: ((((_b = event.targetTouches[0]) == null ? void 0 : _b.pageX) || 0) - rect.left) * scale, | ||
y: ((((_c = event.targetTouches[0]) == null ? void 0 : _c.pageY) || 0) - rect.top) * scale, | ||
pressure: (_d = event.targetTouches[0]) == null ? void 0 : _d.force | ||
}; | ||
} | ||
throw new Error("unsupported event type"); | ||
return { | ||
x: (event.pageX - rect.left) * scale, | ||
y: (event.pageY - rect.top) * scale, | ||
pressure: event.pressure | ||
}; | ||
} | ||
@@ -179,3 +169,3 @@ createElement(name, overrides) { | ||
if (!this.el) | ||
return false; | ||
this.onStart(point); | ||
if (this.points[this.points.length - 1] !== point) | ||
@@ -482,3 +472,3 @@ this.points.push(point); | ||
if (!this.el) | ||
return false; | ||
this.onStart(point); | ||
if (this.points[this.points.length - 1] !== point) { | ||
@@ -595,17 +585,13 @@ this.points.push(point); | ||
const keyboard = this.eventKeyboard.bind(this); | ||
el.addEventListener("pointerdown", start, false); | ||
el.addEventListener("touchstart", start, false); | ||
el.addEventListener("pointermove", move, false); | ||
el.addEventListener("touchmove", move, false); | ||
el.addEventListener("pointerup", end, false); | ||
el.addEventListener("touchend", end, false); | ||
el.addEventListener("pointerdown", start, { passive: false }); | ||
el.addEventListener("pointermove", move, { passive: false }); | ||
el.addEventListener("pointerup", end, { passive: false }); | ||
el.addEventListener("pointercancel", end, { passive: false }); | ||
window.addEventListener("keydown", keyboard, false); | ||
window.addEventListener("keyup", keyboard, false); | ||
this._disposables.push(() => { | ||
el.removeEventListener("mousedown", start, false); | ||
el.removeEventListener("touchstart", start, false); | ||
el.removeEventListener("mousemove", move, false); | ||
el.removeEventListener("touchmove", move, false); | ||
el.removeEventListener("mouseup", end, false); | ||
el.removeEventListener("touchend", end, false); | ||
el.removeEventListener("pointerdown", start); | ||
el.removeEventListener("pointermove", move); | ||
el.removeEventListener("pointerup", end); | ||
el.removeEventListener("pointercancel", end); | ||
window.removeEventListener("keydown", keyboard, false); | ||
@@ -649,2 +635,4 @@ window.removeEventListener("keyup", keyboard, false); | ||
eventMove(event) { | ||
if (!this.acceptsInput(event)) | ||
return; | ||
if (this.model._eventMove(event)) { | ||
@@ -657,2 +645,4 @@ event.stopPropagation(); | ||
eventStart(event) { | ||
if (!this.acceptsInput(event)) | ||
return; | ||
event.stopPropagation(); | ||
@@ -669,2 +659,4 @@ event.preventDefault(); | ||
eventEnd(event) { | ||
if (!this.acceptsInput(event)) | ||
return; | ||
const result = this.model._eventUp(event); | ||
@@ -681,2 +673,5 @@ if (!result) { | ||
} | ||
acceptsInput(event) { | ||
return !this.options.acceptsInputTypes || this.options.acceptsInputTypes.includes(event.pointerType); | ||
} | ||
eventKeyboard(event) { | ||
@@ -683,0 +678,0 @@ this.shiftPressed = event.shiftKey; |
{ | ||
"name": "@drauu/core", | ||
"version": "0.1.0-beta.3", | ||
"version": "0.1.0-beta.5", | ||
"main": "dist/index.js", | ||
@@ -25,3 +25,3 @@ "module": "dist/index.mjs", | ||
"dependencies": { | ||
"perfect-freehand": "^0.4.10" | ||
"perfect-freehand": "^0.5.3" | ||
}, | ||
@@ -28,0 +28,0 @@ "scripts": { |
Sorry, the diff of this file is not supported yet
66313
2191
+ Added@tldraw/core@0.0.53(transitive)
+ Addeddeepmerge@4.3.1(transitive)
+ Addedidb-keyval@5.1.5(transitive)
+ Addedismobilejs@1.1.1(transitive)
+ Addedjs-tokens@4.0.0(transitive)
+ Addedloose-envify@1.4.0(transitive)
+ Addedobject-assign@4.1.1(transitive)
+ Addedperfect-freehand@0.5.4(transitive)
+ Addedreact@17.0.2(transitive)
+ Addedreact-dom@17.0.2(transitive)
+ Addedreact-use-gesture@9.1.3(transitive)
+ Addedrko@0.5.25(transitive)
+ Addedsafari-14-idb-fix@1.0.6(transitive)
+ Addedscheduler@0.20.2(transitive)
+ Addedzustand@3.7.2(transitive)
- Removedperfect-freehand@0.4.91(transitive)
Updatedperfect-freehand@^0.5.3