@gjsify/event-bridge 0.4.21 → 0.4.23

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.
@@ -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),globalThis.__gjsify_globalEventTarget?.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)),globalThis.__gjsify_globalEventTarget?.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})),globalThis.__gjsify_globalEventTarget?.dispatchEvent(new a(`blur`,{bubbles:!1,cancelable:!1})))}),u.add_controller(v)}export{attachEventControllers};
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.21",
3
+ "version": "0.4.23",
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.0-rc.15",
37
- "@girs/gjs": "4.0.0-rc.15",
38
- "@girs/glib-2.0": "2.88.0-4.0.0-rc.15",
39
- "@girs/gtk-4.0": "4.23.0-4.0.0-rc.15",
40
- "@gjsify/dom-events": "^0.4.21"
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.23"
41
41
  },
42
42
  "devDependencies": {
43
- "@gjsify/cli": "^0.4.21",
44
- "@gjsify/unit": "^0.4.21",
45
- "@types/node": "^25.6.2",
43
+ "@gjsify/cli": "^0.4.23",
44
+ "@gjsify/unit": "^0.4.23",
45
+ "@types/node": "^25.9.1",
46
46
  "typescript": "^6.0.3"
47
47
  }
48
48
  }