@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 ADDED
@@ -0,0 +1,38 @@
1
+ # @ue-too/board-fabric-integration
2
+
3
+ Description of the board-fabric-integration package.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@ue-too/board-fabric-integration.svg)](https://www.npmjs.com/package/@ue-too/board-fabric-integration)
6
+ [![license](https://img.shields.io/npm/l/@ue-too/board-fabric-integration.svg)](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
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Board fabric integration package for uē-tôo.
4
+ */
5
+ export { FabricInputEventParser } from "./fabric-input-event-parser";
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": "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",
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
+ }