@ue-too/board-fabric-integration 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -0
- package/fabric-input-event-parser.d.ts +28 -0
- package/index.d.ts +5 -0
- package/index.js +3 -0
- package/index.js.map +10 -0
- package/package.json +36 -0
package/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# @ue-too/board-fabric-integration
|
|
2
|
+
|
|
3
|
+
Description of the board-fabric-integration package.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@ue-too/board-fabric-integration)
|
|
6
|
+
[](https://github.com/ue-too/ue-too/blob/main/LICENSE.txt)
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
TODO: Add package overview
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
Using Bun:
|
|
15
|
+
```bash
|
|
16
|
+
bun add @ue-too/board-fabric-integration
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Using npm:
|
|
20
|
+
```bash
|
|
21
|
+
npm install @ue-too/board-fabric-integration
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Quick Start
|
|
25
|
+
|
|
26
|
+
TODO: Add quick start example
|
|
27
|
+
|
|
28
|
+
## API Reference
|
|
29
|
+
|
|
30
|
+
For complete API documentation with detailed type information, see the [TypeDoc-generated documentation](/board-fabric-integration/).
|
|
31
|
+
|
|
32
|
+
## License
|
|
33
|
+
|
|
34
|
+
MIT
|
|
35
|
+
|
|
36
|
+
## Repository
|
|
37
|
+
|
|
38
|
+
[https://github.com/ue-too/ue-too](https://github.com/ue-too/ue-too)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { InputOrchestrator, KmtInputStateMachine } from "@ue-too/board";
|
|
2
|
+
import { StaticCanvas, TPointerEventInfo } from "fabric";
|
|
3
|
+
export declare class FabricInputEventParser {
|
|
4
|
+
private _fabricCanvas;
|
|
5
|
+
private _kmtInputStateMachine;
|
|
6
|
+
private _inputOrchestrator;
|
|
7
|
+
private _keyfirstPressed;
|
|
8
|
+
private _abortController;
|
|
9
|
+
private _disabled;
|
|
10
|
+
constructor(fabricCanvas: StaticCanvas, kmtInputStateMachine: KmtInputStateMachine, inputOrchestrator: InputOrchestrator);
|
|
11
|
+
bindFunctions(): void;
|
|
12
|
+
setUp(): void;
|
|
13
|
+
tearDown(): void;
|
|
14
|
+
private processEvent;
|
|
15
|
+
pointerDownHandler(event: TPointerEventInfo & {
|
|
16
|
+
alreadySelected: boolean;
|
|
17
|
+
}): void;
|
|
18
|
+
disable(): void;
|
|
19
|
+
enable(): void;
|
|
20
|
+
get disabled(): boolean;
|
|
21
|
+
pointerUpHandler(event: TPointerEventInfo & {
|
|
22
|
+
isClick: boolean;
|
|
23
|
+
}): void;
|
|
24
|
+
pointerMoveHandler(event: TPointerEventInfo): void;
|
|
25
|
+
scrollHandler(event: TPointerEventInfo<WheelEvent>): void;
|
|
26
|
+
keydownHandler(event: KeyboardEvent): void;
|
|
27
|
+
keyupHandler(event: KeyboardEvent): void;
|
|
28
|
+
}
|
package/index.d.ts
ADDED
package/index.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
class P{_fabricCanvas;_kmtInputStateMachine;_inputOrchestrator;_keyfirstPressed;_abortController;_disabled=!1;constructor(x,p,g){this._fabricCanvas=x,this._kmtInputStateMachine=p,this._inputOrchestrator=g,this._keyfirstPressed=new Map,this.bindFunctions(),this._abortController=new AbortController}bindFunctions(){this.pointerDownHandler=this.pointerDownHandler.bind(this),this.pointerUpHandler=this.pointerUpHandler.bind(this),this.pointerMoveHandler=this.pointerMoveHandler.bind(this),this.scrollHandler=this.scrollHandler.bind(this),this.keydownHandler=this.keydownHandler.bind(this),this.keyupHandler=this.keyupHandler.bind(this)}setUp(){this._fabricCanvas.on("mouse:down",this.pointerDownHandler),this._fabricCanvas.on("mouse:up",this.pointerUpHandler),this._fabricCanvas.on("mouse:move",this.pointerMoveHandler),this._fabricCanvas.on("mouse:wheel",this.scrollHandler),window.addEventListener("keydown",this.keydownHandler,{signal:this._abortController.signal}),window.addEventListener("keyup",this.keyupHandler,{signal:this._abortController.signal})}tearDown(){this._fabricCanvas.off("mouse:down",this.pointerDownHandler),this._fabricCanvas.off("mouse:up",this.pointerUpHandler),this._fabricCanvas.off("mouse:move",this.pointerMoveHandler),this._fabricCanvas.off("mouse:wheel",this.scrollHandler),this._abortController.abort(),this._abortController=new AbortController}processEvent(...x){let p=this._kmtInputStateMachine.happens(...x);if(p.handled&&"output"in p)this._inputOrchestrator.processInputEventOutput(p.output)}pointerDownHandler(x){console.log("pointerDownHandler",x),x.e.preventDefault();let p=x.e;if(!(p instanceof MouseEvent))return;if(p.button===0){this.processEvent("leftPointerDown",{x:p.clientX,y:p.clientY});return}if(p.button===1){this.processEvent("middlePointerDown",{x:p.clientX,y:p.clientY});return}}disable(){this._disabled=!0}enable(){this._disabled=!1}get disabled(){return this._disabled}pointerUpHandler(x){if(this._disabled)return;let p=x.e;if(!(p instanceof MouseEvent))return;if(p.button===0){this.processEvent("leftPointerUp",{x:p.clientX,y:p.clientY});return}if(p.button===1){this.processEvent("middlePointerUp",{x:p.clientX,y:p.clientY});return}}pointerMoveHandler(x){if(this._disabled)return;let p=x.e;if(!(p instanceof MouseEvent))return;if(p.buttons===1){this.processEvent("leftPointerMove",{x:p.clientX,y:p.clientY});return}if(p.buttons===4){this.processEvent("middlePointerMove",{x:p.clientX,y:p.clientY});return}this.processEvent("pointerMove",{x:p.clientX,y:p.clientY})}scrollHandler(x){if(this._disabled)return;let p=x.e;if(p.ctrlKey)this.processEvent("scrollWithCtrl",{x:p.clientX,y:p.clientY,deltaX:p.deltaX,deltaY:p.deltaY});else this.processEvent("scroll",{x:p.clientX,y:p.clientY,deltaX:p.deltaX,deltaY:p.deltaY})}keydownHandler(x){if(this._disabled)return;if(this._keyfirstPressed.has(x.key))return;if(this._keyfirstPressed.set(x.key,!0),x.key===" ")this.processEvent("spacebarDown")}keyupHandler(x){if(this._disabled)return;if(this._keyfirstPressed.has(x.key))this._keyfirstPressed.delete(x.key);if(x.key===" ")this.processEvent("spacebarUp")}}export{P as FabricInputEventParser};
|
|
2
|
+
|
|
3
|
+
//# debugId=D373009ED0FA45DB64756E2164756E21
|
package/index.js.map
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/fabric-input-event-parser.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { InputOrchestrator, KmtInputEventMapping, KmtInputStateMachine } from \"@ue-too/board\";\nimport { StaticCanvas, TPointerEventInfo } from \"fabric\";\nimport { EventArgs } from \"@ue-too/being\";\n\nexport class FabricInputEventParser {\n\n private _fabricCanvas: StaticCanvas;\n private _kmtInputStateMachine: KmtInputStateMachine;\n private _inputOrchestrator: InputOrchestrator;\n private _keyfirstPressed: Map<string, boolean>;\n private _abortController: AbortController;\n private _disabled: boolean = false;\n\n constructor(fabricCanvas: StaticCanvas, kmtInputStateMachine: KmtInputStateMachine, inputOrchestrator: InputOrchestrator) {\n this._fabricCanvas = fabricCanvas;\n this._kmtInputStateMachine = kmtInputStateMachine;\n this._inputOrchestrator = inputOrchestrator;\n this._keyfirstPressed = new Map();\n this.bindFunctions();\n this._abortController = new AbortController();\n }\n\n bindFunctions(){\n this.pointerDownHandler = this.pointerDownHandler.bind(this);\n this.pointerUpHandler = this.pointerUpHandler.bind(this);\n this.pointerMoveHandler = this.pointerMoveHandler.bind(this);\n this.scrollHandler = this.scrollHandler.bind(this);\n this.keydownHandler = this.keydownHandler.bind(this);\n this.keyupHandler = this.keyupHandler.bind(this);\n }\n\n setUp(){\n this._fabricCanvas.on(\"mouse:down\", this.pointerDownHandler);\n this._fabricCanvas.on(\"mouse:up\", this.pointerUpHandler);\n this._fabricCanvas.on(\"mouse:move\", this.pointerMoveHandler);\n this._fabricCanvas.on(\"mouse:wheel\", this.scrollHandler);\n window.addEventListener(\"keydown\", this.keydownHandler, {signal: this._abortController.signal});\n window.addEventListener(\"keyup\", this.keyupHandler, {signal: this._abortController.signal});\n }\n\n tearDown(){\n this._fabricCanvas.off(\"mouse:down\", this.pointerDownHandler);\n this._fabricCanvas.off(\"mouse:up\", this.pointerUpHandler);\n this._fabricCanvas.off(\"mouse:move\", this.pointerMoveHandler);\n this._fabricCanvas.off(\"mouse:wheel\", this.scrollHandler);\n this._abortController.abort();\n this._abortController = new AbortController();\n }\n\n private processEvent<K extends keyof KmtInputEventMapping>(\n ...args: EventArgs<KmtInputEventMapping, K>\n ): void {\n const result = this._kmtInputStateMachine.happens(...args);\n if (result.handled && \"output\" in result) {\n this._inputOrchestrator.processInputEventOutput(result.output);\n }\n }\n\n pointerDownHandler(event: TPointerEventInfo & { alreadySelected: boolean }){\n console.log(\"pointerDownHandler\", event);\n event.e.preventDefault();\n const nativeEvent = event.e;\n // Only handle mouse events, not touch events\n if(!(nativeEvent instanceof MouseEvent)){\n return;\n }\n if(nativeEvent.button === 0){\n this.processEvent(\"leftPointerDown\", {x: nativeEvent.clientX, y: nativeEvent.clientY});\n return;\n }\n if(nativeEvent.button === 1){\n this.processEvent(\"middlePointerDown\", {x: nativeEvent.clientX, y: nativeEvent.clientY});\n return;\n }\n }\n\n disable(){\n this._disabled = true;\n }\n\n enable(){\n this._disabled = false;\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n\n pointerUpHandler(event: TPointerEventInfo & { isClick: boolean }){\n if(this._disabled){\n return;\n }\n const nativeEvent = event.e;\n // Only handle mouse events, not touch events\n if(!(nativeEvent instanceof MouseEvent)){\n return;\n }\n if(nativeEvent.button === 0){\n this.processEvent(\"leftPointerUp\", {x: nativeEvent.clientX, y: nativeEvent.clientY});\n return;\n }\n if(nativeEvent.button === 1){\n this.processEvent(\"middlePointerUp\", {x: nativeEvent.clientX, y: nativeEvent.clientY});\n return;\n }\n }\n\n pointerMoveHandler(event: TPointerEventInfo){\n if(this._disabled){\n return;\n }\n const nativeEvent = event.e;\n // Only handle mouse events, not touch events\n if(!(nativeEvent instanceof MouseEvent)){\n return;\n }\n if(nativeEvent.buttons === 1){\n this.processEvent(\"leftPointerMove\", {x: nativeEvent.clientX, y: nativeEvent.clientY});\n return;\n }\n if(nativeEvent.buttons === 4){\n this.processEvent(\"middlePointerMove\", {x: nativeEvent.clientX, y: nativeEvent.clientY});\n return;\n }\n this.processEvent(\"pointerMove\", {x: nativeEvent.clientX, y: nativeEvent.clientY});\n }\n\n scrollHandler(event: TPointerEventInfo<WheelEvent>){\n if(this._disabled){\n return;\n }\n const nativeEvent = event.e;\n if(nativeEvent.ctrlKey){\n this.processEvent(\"scrollWithCtrl\", {x: nativeEvent.clientX, y: nativeEvent.clientY, deltaX: nativeEvent.deltaX, deltaY: nativeEvent.deltaY});\n } else {\n this.processEvent(\"scroll\", {x: nativeEvent.clientX, y: nativeEvent.clientY, deltaX: nativeEvent.deltaX, deltaY: nativeEvent.deltaY});\n }\n }\n\n keydownHandler(event: KeyboardEvent){\n if(this._disabled){\n return;\n }\n if(this._keyfirstPressed.has(event.key)){\n return;\n }\n this._keyfirstPressed.set(event.key, true);\n if(event.key === \" \"){\n this.processEvent(\"spacebarDown\");\n }\n }\n\n keyupHandler(event: KeyboardEvent){\n if(this._disabled){\n return;\n }\n if(this._keyfirstPressed.has(event.key)){\n this._keyfirstPressed.delete(event.key);\n }\n if(event.key === \" \"){\n this.processEvent(\"spacebarUp\");\n }\n }\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "AAIO,MAAM,CAAuB,CAExB,cACA,sBACA,mBACA,iBACA,iBACA,UAAqB,GAE7B,WAAW,CAAC,EAA4B,EAA4C,EAAsC,CACtH,KAAK,cAAgB,EACrB,KAAK,sBAAwB,EAC7B,KAAK,mBAAqB,EAC1B,KAAK,iBAAmB,IAAI,IAC5B,KAAK,cAAc,EACnB,KAAK,iBAAmB,IAAI,gBAGhC,aAAa,EAAE,CACX,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAGnD,KAAK,EAAE,CACH,KAAK,cAAc,GAAG,aAAc,KAAK,kBAAkB,EAC3D,KAAK,cAAc,GAAG,WAAY,KAAK,gBAAgB,EACvD,KAAK,cAAc,GAAG,aAAc,KAAK,kBAAkB,EAC3D,KAAK,cAAc,GAAG,cAAe,KAAK,aAAa,EACvD,OAAO,iBAAiB,UAAW,KAAK,eAAgB,CAAC,OAAQ,KAAK,iBAAiB,MAAM,CAAC,EAC9F,OAAO,iBAAiB,QAAS,KAAK,aAAc,CAAC,OAAQ,KAAK,iBAAiB,MAAM,CAAC,EAG9F,QAAQ,EAAE,CACN,KAAK,cAAc,IAAI,aAAc,KAAK,kBAAkB,EAC5D,KAAK,cAAc,IAAI,WAAY,KAAK,gBAAgB,EACxD,KAAK,cAAc,IAAI,aAAc,KAAK,kBAAkB,EAC5D,KAAK,cAAc,IAAI,cAAe,KAAK,aAAa,EACxD,KAAK,iBAAiB,MAAM,EAC5B,KAAK,iBAAmB,IAAI,gBAGxB,YAAkD,IACnD,EACC,CACJ,IAAM,EAAS,KAAK,sBAAsB,QAAQ,GAAG,CAAI,EACzD,GAAI,EAAO,SAAW,WAAY,EAC9B,KAAK,mBAAmB,wBAAwB,EAAO,MAAM,EAIrE,kBAAkB,CAAC,EAAwD,CACvE,QAAQ,IAAI,qBAAsB,CAAK,EACvC,EAAM,EAAE,eAAe,EACvB,IAAM,EAAc,EAAM,EAE1B,GAAG,EAAE,aAAuB,YACxB,OAEJ,GAAG,EAAY,SAAW,EAAE,CACxB,KAAK,aAAa,kBAAmB,CAAC,EAAG,EAAY,QAAS,EAAG,EAAY,OAAO,CAAC,EACrF,OAEJ,GAAG,EAAY,SAAW,EAAE,CACxB,KAAK,aAAa,oBAAqB,CAAC,EAAG,EAAY,QAAS,EAAG,EAAY,OAAO,CAAC,EACvF,QAIR,OAAO,EAAE,CACL,KAAK,UAAY,GAGrB,MAAM,EAAE,CACJ,KAAK,UAAY,MAGjB,SAAQ,EAAY,CACpB,OAAO,KAAK,UAGhB,gBAAgB,CAAC,EAAgD,CAC7D,GAAG,KAAK,UACJ,OAEJ,IAAM,EAAc,EAAM,EAE1B,GAAG,EAAE,aAAuB,YACxB,OAEJ,GAAG,EAAY,SAAW,EAAE,CACxB,KAAK,aAAa,gBAAiB,CAAC,EAAG,EAAY,QAAS,EAAG,EAAY,OAAO,CAAC,EACnF,OAEJ,GAAG,EAAY,SAAW,EAAE,CACxB,KAAK,aAAa,kBAAmB,CAAC,EAAG,EAAY,QAAS,EAAG,EAAY,OAAO,CAAC,EACrF,QAIR,kBAAkB,CAAC,EAAyB,CACxC,GAAG,KAAK,UACJ,OAEJ,IAAM,EAAc,EAAM,EAE1B,GAAG,EAAE,aAAuB,YACxB,OAEJ,GAAG,EAAY,UAAY,EAAE,CACzB,KAAK,aAAa,kBAAmB,CAAC,EAAG,EAAY,QAAS,EAAG,EAAY,OAAO,CAAC,EACrF,OAEJ,GAAG,EAAY,UAAY,EAAE,CACzB,KAAK,aAAa,oBAAqB,CAAC,EAAG,EAAY,QAAS,EAAG,EAAY,OAAO,CAAC,EACvF,OAEJ,KAAK,aAAa,cAAe,CAAC,EAAG,EAAY,QAAS,EAAG,EAAY,OAAO,CAAC,EAGrF,aAAa,CAAC,EAAqC,CAC/C,GAAG,KAAK,UACJ,OAEJ,IAAM,EAAc,EAAM,EAC1B,GAAG,EAAY,QACX,KAAK,aAAa,iBAAkB,CAAC,EAAG,EAAY,QAAS,EAAG,EAAY,QAAS,OAAQ,EAAY,OAAQ,OAAQ,EAAY,MAAM,CAAC,EAE5I,UAAK,aAAa,SAAU,CAAC,EAAG,EAAY,QAAS,EAAG,EAAY,QAAS,OAAQ,EAAY,OAAQ,OAAQ,EAAY,MAAM,CAAC,EAI5I,cAAc,CAAC,EAAqB,CAChC,GAAG,KAAK,UACJ,OAEJ,GAAG,KAAK,iBAAiB,IAAI,EAAM,GAAG,EAClC,OAGJ,GADA,KAAK,iBAAiB,IAAI,EAAM,IAAK,EAAI,EACtC,EAAM,MAAQ,IACb,KAAK,aAAa,cAAc,EAIxC,YAAY,CAAC,EAAqB,CAC9B,GAAG,KAAK,UACJ,OAEJ,GAAG,KAAK,iBAAiB,IAAI,EAAM,GAAG,EAClC,KAAK,iBAAiB,OAAO,EAAM,GAAG,EAE1C,GAAG,EAAM,MAAQ,IACb,KAAK,aAAa,YAAY,EAG1C",
|
|
8
|
+
"debugId": "D373009ED0FA45DB64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ue-too/board-fabric-integration",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.12.0",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/ue-too/ue-too.git"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/ue-too/ue-too",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
13
|
+
},
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./index.d.ts",
|
|
17
|
+
"import": "./index.js",
|
|
18
|
+
"default": "./index.js"
|
|
19
|
+
},
|
|
20
|
+
"./package.json": "./package.json"
|
|
21
|
+
},
|
|
22
|
+
"main": "./index.js",
|
|
23
|
+
"types": "./index.d.ts",
|
|
24
|
+
"module": "./index.js",
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@ue-too/board": "^0.12.0",
|
|
27
|
+
"@ue-too/being": "^0.12.0",
|
|
28
|
+
"@ue-too/math": "^0.12.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"fabric": "7.1.0"
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"fabric": "7.1.0"
|
|
35
|
+
}
|
|
36
|
+
}
|