@gjsify/event-bridge 0.4.21 → 0.4.22
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/lib/esm/event-bridge.js +1 -1
- package/package.json +9 -9
package/lib/esm/event-bridge.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./_virtual/_rolldown/runtime.js";import{gdkKeyvalToCode as e,gdkKeyvalToKey as t,gdkKeyvalToLocation as n}from"./key-map.js";import r from"gi://Gtk?version=4.0";import i from"gi://Gdk?version=4.0";import{FocusEvent as a,KeyboardEvent as o,MouseEvent as s,PointerEvent as c,WheelEvent as l}from"@gjsify/dom-events";function extractModifiers(e){let t=e.get_current_event_state();return{shiftKey:!!(t&i.ModifierType.SHIFT_MASK),ctrlKey:!!(t&i.ModifierType.CONTROL_MASK),altKey:!!(t&i.ModifierType.ALT_MASK),metaKey:!!(t&i.ModifierType.SUPER_MASK)}}function gtkButtonToDom(e){return e===1?0:e===2?1:e===3?2:e-1}function buttonsFromModifiers(e){let t=e.get_current_event_state(),n=0;return t&i.ModifierType.BUTTON1_MASK&&(n|=1),t&i.ModifierType.BUTTON3_MASK&&(n|=2),t&i.ModifierType.BUTTON2_MASK&&(n|=4),n}function attachEventControllers(u,d,f){u.set_focusable(!0),u.set_can_focus(!0);let p={lastX:0,lastY:0,buttonsPressed:0,pressedKeys:new Set},m=new r.EventControllerMotion;m.connect(`motion`,(e,t,n)=>{let r=d();if(!r)return;let i=u.get_allocated_width(),a=u.get_allocated_height(),o=Math.max(0,Math.min(t,i)),l=Math.max(0,Math.min(n,a)),f=o-p.lastX,h=l-p.lastY,g=extractModifiers(m),_=buttonsFromModifiers(m),v={...g,clientX:o,clientY:l,offsetX:o,offsetY:l,screenX:o,screenY:l,movementX:f,movementY:h,buttons:_,button:0,bubbles:!0,cancelable:!0};r.dispatchEvent(new c(`pointermove`,{...v,pointerId:1,pointerType:`mouse`,isPrimary:!0})),r.dispatchEvent(new s(`mousemove`,v)),p.lastX=o,p.lastY=l}),m.connect(`enter`,(e,t,n)=>{let r=d();if(!r)return;p.lastX=t,p.lastY=n;let i={...extractModifiers(m),clientX:t,clientY:n,offsetX:t,offsetY:n,screenX:t,screenY:n,bubbles:!1,cancelable:!1};r.dispatchEvent(new c(`pointerenter`,{...i,pointerId:1,pointerType:`mouse`,isPrimary:!0})),r.dispatchEvent(new s(`mouseenter`,i)),r.dispatchEvent(new s(`mouseover`,{...i,bubbles:!0}))}),m.connect(`leave`,()=>{let e=d();if(!e)return;let t={...extractModifiers(m),clientX:p.lastX,clientY:p.lastY,bubbles:!1,cancelable:!1};e.dispatchEvent(new c(`pointerleave`,{...t,pointerId:1,pointerType:`mouse`,isPrimary:!0})),e.dispatchEvent(new s(`mouseleave`,t)),e.dispatchEvent(new s(`mouseout`,{...t,bubbles:!0}))}),u.add_controller(m);let h=new r.GestureClick;h.set_button(0),h.connect(`pressed`,(e,t,n,r)=>{let i=d();if(!i)return;let a=gtkButtonToDom(h.get_current_button()),o=extractModifiers(h);p.buttonsPressed|=1<<a;let l={...o,clientX:n,clientY:r,offsetX:n,offsetY:r,screenX:n,screenY:r,button:a,buttons:p.buttonsPressed,detail:t,bubbles:!0,cancelable:!0};i.dispatchEvent(new c(`pointerdown`,{...l,pointerId:1,pointerType:`mouse`,isPrimary:!0})),i.dispatchEvent(new s(`mousedown`,l)),u.grab_focus()}),h.connect(`released`,(e,t,n,r)=>{let i=d();if(!i)return;let a=gtkButtonToDom(h.get_current_button()),o=extractModifiers(h);p.buttonsPressed&=~(1<<a);let l={...o,clientX:n,clientY:r,offsetX:n,offsetY:r,screenX:n,screenY:r,button:a,buttons:p.buttonsPressed,detail:t,bubbles:!0,cancelable:!0};i.dispatchEvent(new c(`pointerup`,{...l,pointerId:1,pointerType:`mouse`,isPrimary:!0})),i.dispatchEvent(new s(`mouseup`,l)),a===0&&(i.dispatchEvent(new s(`click`,l)),t===2&&i.dispatchEvent(new s(`dblclick`,l))),a===2&&i.dispatchEvent(new s(`contextmenu`,{...l,cancelable:!0}))}),u.add_controller(h);let g=new r.EventControllerScroll({flags:r.EventControllerScrollFlags.BOTH_AXES});g.connect(`scroll`,(e,t,n)=>{let r=d();if(!r)return;let i={...extractModifiers(g),clientX:p.lastX,clientY:p.lastY,offsetX:p.lastX,offsetY:p.lastY,screenX:p.lastX,screenY:p.lastY,deltaX:t*100,deltaY:n*100,deltaZ:0,deltaMode:0,bubbles:!0,cancelable:!0};return r.dispatchEvent(new l(`wheel`,i)),!1}),u.add_controller(g);let _=new r.EventControllerKey;_.connect(`key-pressed`,(r,a,s,c)=>{let l=d();if(!l)return!1;let u=p.pressedKeys.has(a);p.pressedKeys.add(a);let m=t(a),h={key:m,code:e(a),location:n(a),repeat:u,altKey:!!(c&i.ModifierType.ALT_MASK),ctrlKey:!!(c&i.ModifierType.CONTROL_MASK),metaKey:!!(c&i.ModifierType.SUPER_MASK),shiftKey:!!(c&i.ModifierType.SHIFT_MASK),keyCode:m.length===1?m.toUpperCase().charCodeAt(0):0,which:m.length===1?m.toUpperCase().charCodeAt(0):0,bubbles:!0,cancelable:!0},g=new o(`keydown`,h);return l.dispatchEvent(g),
|
|
1
|
+
import"./_virtual/_rolldown/runtime.js";import{gdkKeyvalToCode as e,gdkKeyvalToKey as t,gdkKeyvalToLocation as n}from"./key-map.js";import r from"gi://Gtk?version=4.0";import i from"gi://Gdk?version=4.0";import{FocusEvent as a,KeyboardEvent as o,MouseEvent as s,PointerEvent as c,WheelEvent as l}from"@gjsify/dom-events";function getGlobalEventTarget(){return globalThis.__gjsify_globalEventTarget}function extractModifiers(e){let t=e.get_current_event_state();return{shiftKey:!!(t&i.ModifierType.SHIFT_MASK),ctrlKey:!!(t&i.ModifierType.CONTROL_MASK),altKey:!!(t&i.ModifierType.ALT_MASK),metaKey:!!(t&i.ModifierType.SUPER_MASK)}}function gtkButtonToDom(e){return e===1?0:e===2?1:e===3?2:e-1}function buttonsFromModifiers(e){let t=e.get_current_event_state(),n=0;return t&i.ModifierType.BUTTON1_MASK&&(n|=1),t&i.ModifierType.BUTTON3_MASK&&(n|=2),t&i.ModifierType.BUTTON2_MASK&&(n|=4),n}function attachEventControllers(u,d,f){u.set_focusable(!0),u.set_can_focus(!0);let p={lastX:0,lastY:0,buttonsPressed:0,pressedKeys:new Set},m=new r.EventControllerMotion;m.connect(`motion`,(e,t,n)=>{let r=d();if(!r)return;let i=u.get_allocated_width(),a=u.get_allocated_height(),o=Math.max(0,Math.min(t,i)),l=Math.max(0,Math.min(n,a)),f=o-p.lastX,h=l-p.lastY,g=extractModifiers(m),_=buttonsFromModifiers(m),v={...g,clientX:o,clientY:l,offsetX:o,offsetY:l,screenX:o,screenY:l,movementX:f,movementY:h,buttons:_,button:0,bubbles:!0,cancelable:!0};r.dispatchEvent(new c(`pointermove`,{...v,pointerId:1,pointerType:`mouse`,isPrimary:!0})),r.dispatchEvent(new s(`mousemove`,v)),p.lastX=o,p.lastY=l}),m.connect(`enter`,(e,t,n)=>{let r=d();if(!r)return;p.lastX=t,p.lastY=n;let i={...extractModifiers(m),clientX:t,clientY:n,offsetX:t,offsetY:n,screenX:t,screenY:n,bubbles:!1,cancelable:!1};r.dispatchEvent(new c(`pointerenter`,{...i,pointerId:1,pointerType:`mouse`,isPrimary:!0})),r.dispatchEvent(new s(`mouseenter`,i)),r.dispatchEvent(new s(`mouseover`,{...i,bubbles:!0}))}),m.connect(`leave`,()=>{let e=d();if(!e)return;let t={...extractModifiers(m),clientX:p.lastX,clientY:p.lastY,bubbles:!1,cancelable:!1};e.dispatchEvent(new c(`pointerleave`,{...t,pointerId:1,pointerType:`mouse`,isPrimary:!0})),e.dispatchEvent(new s(`mouseleave`,t)),e.dispatchEvent(new s(`mouseout`,{...t,bubbles:!0}))}),u.add_controller(m);let h=new r.GestureClick;h.set_button(0),h.connect(`pressed`,(e,t,n,r)=>{let i=d();if(!i)return;let a=gtkButtonToDom(h.get_current_button()),o=extractModifiers(h);p.buttonsPressed|=1<<a;let l={...o,clientX:n,clientY:r,offsetX:n,offsetY:r,screenX:n,screenY:r,button:a,buttons:p.buttonsPressed,detail:t,bubbles:!0,cancelable:!0};i.dispatchEvent(new c(`pointerdown`,{...l,pointerId:1,pointerType:`mouse`,isPrimary:!0})),i.dispatchEvent(new s(`mousedown`,l)),u.grab_focus()}),h.connect(`released`,(e,t,n,r)=>{let i=d();if(!i)return;let a=gtkButtonToDom(h.get_current_button()),o=extractModifiers(h);p.buttonsPressed&=~(1<<a);let l={...o,clientX:n,clientY:r,offsetX:n,offsetY:r,screenX:n,screenY:r,button:a,buttons:p.buttonsPressed,detail:t,bubbles:!0,cancelable:!0};i.dispatchEvent(new c(`pointerup`,{...l,pointerId:1,pointerType:`mouse`,isPrimary:!0})),i.dispatchEvent(new s(`mouseup`,l)),a===0&&(i.dispatchEvent(new s(`click`,l)),t===2&&i.dispatchEvent(new s(`dblclick`,l))),a===2&&i.dispatchEvent(new s(`contextmenu`,{...l,cancelable:!0}))}),u.add_controller(h);let g=new r.EventControllerScroll({flags:r.EventControllerScrollFlags.BOTH_AXES});g.connect(`scroll`,(e,t,n)=>{let r=d();if(!r)return;let i={...extractModifiers(g),clientX:p.lastX,clientY:p.lastY,offsetX:p.lastX,offsetY:p.lastY,screenX:p.lastX,screenY:p.lastY,deltaX:t*100,deltaY:n*100,deltaZ:0,deltaMode:0,bubbles:!0,cancelable:!0};return r.dispatchEvent(new l(`wheel`,i)),!1}),u.add_controller(g);let _=new r.EventControllerKey;_.connect(`key-pressed`,(r,a,s,c)=>{let l=d();if(!l)return!1;let u=p.pressedKeys.has(a);p.pressedKeys.add(a);let m=t(a),h={key:m,code:e(a),location:n(a),repeat:u,altKey:!!(c&i.ModifierType.ALT_MASK),ctrlKey:!!(c&i.ModifierType.CONTROL_MASK),metaKey:!!(c&i.ModifierType.SUPER_MASK),shiftKey:!!(c&i.ModifierType.SHIFT_MASK),keyCode:m.length===1?m.toUpperCase().charCodeAt(0):0,which:m.length===1?m.toUpperCase().charCodeAt(0):0,bubbles:!0,cancelable:!0},g=new o(`keydown`,h);return l.dispatchEvent(g),getGlobalEventTarget()?.dispatchEvent(new o(`keydown`,h)),f?.captureKeys===!0}),_.connect(`key-released`,(r,a,s,c)=>{let l=d();if(!l)return;p.pressedKeys.delete(a);let u=t(a),f={key:u,code:e(a),location:n(a),repeat:!1,altKey:!!(c&i.ModifierType.ALT_MASK),ctrlKey:!!(c&i.ModifierType.CONTROL_MASK),metaKey:!!(c&i.ModifierType.SUPER_MASK),shiftKey:!!(c&i.ModifierType.SHIFT_MASK),keyCode:u.length===1?u.toUpperCase().charCodeAt(0):0,which:u.length===1?u.toUpperCase().charCodeAt(0):0,bubbles:!0,cancelable:!0};l.dispatchEvent(new o(`keyup`,f)),getGlobalEventTarget()?.dispatchEvent(new o(`keyup`,f))}),u.add_controller(_);let v=new r.EventControllerFocus;v.connect(`enter`,()=>{let e=d();e&&(e.dispatchEvent(new a(`focus`,{bubbles:!1,cancelable:!1})),e.dispatchEvent(new a(`focusin`,{bubbles:!0,cancelable:!1})))}),v.connect(`leave`,()=>{let e=d();e&&(p.pressedKeys.clear(),e.dispatchEvent(new a(`blur`,{bubbles:!1,cancelable:!1})),e.dispatchEvent(new a(`focusout`,{bubbles:!0,cancelable:!1})),getGlobalEventTarget()?.dispatchEvent(new a(`blur`,{bubbles:!1,cancelable:!1})))}),u.add_controller(v)}export{attachEventControllers};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gjsify/event-bridge",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.22",
|
|
4
4
|
"description": "Bridge GTK event controllers to standard DOM events (MouseEvent, KeyboardEvent, etc.)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "lib/esm/index.js",
|
|
@@ -33,16 +33,16 @@
|
|
|
33
33
|
"bridge"
|
|
34
34
|
],
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@girs/gdk-4.0": "4.0.0-4.0.
|
|
37
|
-
"@girs/gjs": "4.0.
|
|
38
|
-
"@girs/glib-2.0": "2.88.0-4.0.
|
|
39
|
-
"@girs/gtk-4.0": "4.23.0-4.0.
|
|
40
|
-
"@gjsify/dom-events": "^0.4.
|
|
36
|
+
"@girs/gdk-4.0": "4.0.0-4.0.1",
|
|
37
|
+
"@girs/gjs": "4.0.1",
|
|
38
|
+
"@girs/glib-2.0": "2.88.0-4.0.1",
|
|
39
|
+
"@girs/gtk-4.0": "4.23.0-4.0.1",
|
|
40
|
+
"@gjsify/dom-events": "^0.4.22"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@gjsify/cli": "^0.4.
|
|
44
|
-
"@gjsify/unit": "^0.4.
|
|
45
|
-
"@types/node": "^25.
|
|
43
|
+
"@gjsify/cli": "^0.4.22",
|
|
44
|
+
"@gjsify/unit": "^0.4.22",
|
|
45
|
+
"@types/node": "^25.9.1",
|
|
46
46
|
"typescript": "^6.0.3"
|
|
47
47
|
}
|
|
48
48
|
}
|