@gjsify/webgl 0.4.19 → 0.4.21

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{HTMLCanvasElement as e}from"./html-canvas-element.js";import t from"gi://GObject";import n from"gi://GLib?version=2.0";import r from"gi://Gtk?version=4.0";import{attachEventControllers as i}from"@gjsify/event-bridge";import{Event as a}from"@gjsify/dom-events";const o=t.registerClass({GTypeName:`GjsifyWebGLBridge`},class WebGLBridge extends r.GLArea{constructor(t){super(t),this._canvas=null,this._readyCallbacks=[],this._resizeCallbacks=[],this._renderTag=null,this._tickCallbackId=null,this._frameCallback=null,this._timeOrigin=n.get_monotonic_time(),this.set_use_es(!0),this.set_required_version(3,2),this.set_has_depth_buffer(!0),this.set_has_stencil_buffer(!0),i(this,()=>this._canvas,{captureKeys:!0}),this._tickCallbackId=this.add_tick_callback((e,t)=>(this._frameCallback!==null&&this.queue_render(),n.SOURCE_CONTINUE));let r=this.connect(`render`,()=>{this.disconnect(r),this.make_current(),this._canvas=new e(this),globalThis.document?.body&&globalThis.document.body.appendChild(this._canvas),this._canvas.getContext(`webgl2`);let t=this._canvas.getContext(`webgl`);if(t){for(let e of this._readyCallbacks)e(this._canvas,t);this._readyCallbacks=[]}return this._renderTag=this.connect(`render`,e=>{if(this._frameCallback!==null){let e=(n.get_monotonic_time()-this._timeOrigin)/1e3;globalThis.__GJSIFY_DEBUG_RAF===!0&&console.log(`[rAF] frame callback fires t=${e.toFixed(1)}`);let t=this._frameCallback;this._frameCallback=null,t(e)}return!0}),!0});this.connect(`resize`,()=>{let e=this.get_allocated_width(),t=this.get_allocated_height();this._canvas&&this._canvas.dispatchEvent(new a(`resize`));for(let n of this._resizeCallbacks)n(e,t);this._frameCallback&&this.requestAnimationFrame(this._frameCallback)}),this.connect(`unrealize`,()=>{this._renderTag!==null&&(this.disconnect(this._renderTag),this._renderTag=null),this._tickCallbackId!==null&&(this.remove_tick_callback(this._tickCallbackId),this._tickCallbackId=null),this._canvas=null})}get canvas(){return this._canvas}onReady(e){if(this._canvas){let t=this._canvas.getContext(`webgl`);if(t){e(this._canvas,t);return}}this._readyCallbacks.push(e)}onWebGLReady(e){this.onReady(e)}onResize(e){this._resizeCallbacks.push(e)}requestAnimationFrame(e){return this._frameCallback=e,this.queue_render(),0}installGlobals(){globalThis.requestAnimationFrame=e=>this.requestAnimationFrame(e),globalThis.cancelAnimationFrame=e=>{this._frameCallback=null};let e=this._timeOrigin;globalThis.performance={now:()=>(n.get_monotonic_time()-e)/1e3,timeOrigin:Date.now()}}});export{o as WebGLBridge};
1
+ import"./_virtual/_rolldown/runtime.js";import{HTMLCanvasElement as e}from"./html-canvas-element.js";import{notifyElementResize as t}from"@gjsify/dom-elements";import n from"gi://GObject";import r from"gi://GLib?version=2.0";import i from"gi://Gtk?version=4.0";import{attachEventControllers as a}from"@gjsify/event-bridge";import{Event as o}from"@gjsify/dom-events";const s=n.registerClass({GTypeName:`GjsifyWebGLBridge`},class WebGLBridge extends i.GLArea{constructor(n){super(n),this._canvas=null,this._readyCallbacks=[],this._resizeCallbacks=[],this._renderTag=null,this._tickCallbackId=null,this._frameCallback=null,this._timeOrigin=r.get_monotonic_time(),this.set_use_es(!0),this.set_required_version(3,2),this.set_has_depth_buffer(!0),this.set_has_stencil_buffer(!0),a(this,()=>this._canvas,{captureKeys:!0}),this._tickCallbackId=this.add_tick_callback((e,t)=>(this._frameCallback!==null&&this.queue_render(),r.SOURCE_CONTINUE));let i=this.connect(`render`,()=>{this.disconnect(i),this.make_current(),this._canvas=new e(this),globalThis.document?.body&&globalThis.document.body.appendChild(this._canvas),this._canvas.getContext(`webgl2`);let t=this._canvas.getContext(`webgl`);if(t){for(let e of this._readyCallbacks)e(this._canvas,t);this._readyCallbacks=[]}return this._renderTag=this.connect(`render`,e=>{if(this._frameCallback!==null){let e=(r.get_monotonic_time()-this._timeOrigin)/1e3;globalThis.__GJSIFY_DEBUG_RAF===!0&&console.log(`[rAF] frame callback fires t=${e.toFixed(1)}`);let t=this._frameCallback;this._frameCallback=null,t(e)}return!0}),!0});this.connect(`resize`,()=>{let e=this.get_allocated_width(),n=this.get_allocated_height();this._canvas&&(this._canvas.dispatchEvent(new o(`resize`)),t(this._canvas,e,n));for(let t of this._resizeCallbacks)t(e,n);this._frameCallback&&this.requestAnimationFrame(this._frameCallback)}),this.connect(`unrealize`,()=>{this._renderTag!==null&&(this.disconnect(this._renderTag),this._renderTag=null),this._tickCallbackId!==null&&(this.remove_tick_callback(this._tickCallbackId),this._tickCallbackId=null),this._canvas=null})}get canvas(){return this._canvas}onReady(e){if(this._canvas){let t=this._canvas.getContext(`webgl`);if(t){e(this._canvas,t);return}}this._readyCallbacks.push(e)}onWebGLReady(e){this.onReady(e)}onResize(e){this._resizeCallbacks.push(e)}requestAnimationFrame(e){return this._frameCallback=e,this.queue_render(),0}installGlobals(){globalThis.requestAnimationFrame=e=>this.requestAnimationFrame(e),globalThis.cancelAnimationFrame=e=>{this._frameCallback=null};let e=this._timeOrigin;globalThis.performance={now:()=>(r.get_monotonic_time()-e)/1e3,timeOrigin:Date.now()}}});export{s as WebGLBridge};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/webgl",
3
- "version": "0.4.19",
3
+ "version": "0.4.21",
4
4
  "description": "WebGL module for Gjs",
5
5
  "module": "lib/esm/index.js",
6
6
  "types": "lib/types/index.d.ts",
@@ -39,8 +39,8 @@
39
39
  "WebGL"
40
40
  ],
41
41
  "devDependencies": {
42
- "@gjsify/cli": "^0.4.19",
43
- "@gjsify/unit": "^0.4.19",
42
+ "@gjsify/cli": "^0.4.21",
43
+ "@gjsify/unit": "^0.4.21",
44
44
  "@types/bit-twiddle": "^1.0.3",
45
45
  "@types/node": "^25.6.2",
46
46
  "typescript": "^6.0.3"
@@ -49,10 +49,10 @@
49
49
  "@girs/gjs": "4.0.0-rc.15",
50
50
  "@girs/gtk-4.0": "4.23.0-4.0.0-rc.15",
51
51
  "@girs/gwebgl-0.1": "0.1.0-4.0.0-rc.5",
52
- "@gjsify/dom-elements": "^0.4.19",
53
- "@gjsify/dom-events": "^0.4.19",
54
- "@gjsify/event-bridge": "^0.4.19",
55
- "@gjsify/utils": "^0.4.19",
52
+ "@gjsify/dom-elements": "^0.4.21",
53
+ "@gjsify/dom-events": "^0.4.21",
54
+ "@gjsify/event-bridge": "^0.4.21",
55
+ "@gjsify/utils": "^0.4.21",
56
56
  "bit-twiddle": "^1.0.2",
57
57
  "glsl-tokenizer": "^2.1.5"
58
58
  }