micugl 0.0.10 → 0.0.12

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
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react/jsx-runtime"),c=require("react"),_=require("../../../core/managers/WebGLManager.js"),b={},h="",y={},I={},U=({programConfigs:E,renderCallback:T,renderOptions:i=b,className:p=h,style:F=y,uniformUpdaters:L=I,useFastPath:d=!1,useDevicePixelRatio:w=!0})=>{const f=c.useRef(null),o=c.useRef(null),g=c.useRef(null),u=c.useRef(null),R=c.useRef(0),l=c.useRef(n=>{const e=o.current,r=g.current;if(!e||!r)return;const a=n-R.current,t=e.context;if(d)e.fastRender(r,a,i.clear),t.drawArrays(t.TRIANGLE_STRIP,0,4);else{const s=e.resources.get(r);if(!s)return;e.prepareRender(r,i),A(a,s,t)}u.current=requestAnimationFrame(l.current)}),A=c.useCallback((n,e,r)=>{T(n,e,r)},[T]);c.useEffect(()=>{l.current=n=>{const e=o.current,r=g.current;if(!e||!r)return;const a=n-R.current,t=e.context;if(d)e.fastRender(r,a,i.clear),t.drawArrays(t.TRIANGLE_STRIP,0,4);else{const s=e.resources.get(r);if(!s)return;e.prepareRender(r,i),A(a,s,t)}u.current=requestAnimationFrame(l.current)}},[i,d,A]);const m=c.useCallback(()=>{if(!f.current||!o.current)return;const n=window.innerWidth,e=window.innerHeight;o.current.setSize(n,e,w)},[w]);return c.useEffect(()=>{if(f.current)try{const n=new _.WebGLManager(f.current);o.current=n,m();const e=Object.entries(E);if(e.length>0){const[r,a]=e[0];n.createProgram(r,a),n.createBuffer(r,"a_position",new Float32Array([-1,-1,1,-1,-1,1,1,1])),g.current=r,n.setAttributeOnce(r,"a_position",{name:"a_position",size:2,type:"FLOAT",normalized:!1,stride:0,offset:0});const t=L[r];t&&t.forEach(s=>{n.registerUniformUpdater(r,s.name,s.type,s.updateFn)})}return R.current=performance.now(),u.current=requestAnimationFrame(l.current),window.addEventListener("resize",m),()=>{window.removeEventListener("resize",m),u.current&&cancelAnimationFrame(u.current),o.current&&o.current.destroyAll()}}catch(n){return console.error("Failed to initialize WebGL:",n),()=>{}}},[E,L,m]),S.jsx("canvas",{ref:f,className:p,style:F})};exports.ShaderEngine=U;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("react/jsx-runtime"),t=require("react"),F=require("../../../core/managers/WebGLManager.js"),b={},y="",I={},h={},U=({programConfigs:E,renderCallback:T,renderOptions:o=b,className:L=y,style:S=I,uniformUpdaters:p=h,useFastPath:R=!1,useDevicePixelRatio:w=!0})=>{const f=t.useRef(null),a=t.useRef(null),l=t.useRef(null),u=t.useRef(null),g=t.useRef(0),m=t.useRef(r=>{const e=a.current,n=l.current;if(!e||!n)return;const c=r-g.current,s=e.context;if(R)e.fastRender(n,c,o.clear),s.drawArrays(s.TRIANGLE_STRIP,0,4);else{const i=e.resources.get(n);if(!i)return;e.prepareRender(n,o),A(c,i,s)}u.current=requestAnimationFrame(m.current)}),A=t.useCallback((r,e,n)=>{T(r,e,n)},[T]);t.useEffect(()=>{m.current=r=>{const e=a.current,n=l.current;if(!e||!n)return;const c=r-g.current,s=e.context;if(R)e.fastRender(n,c,o.clear),s.drawArrays(s.TRIANGLE_STRIP,0,4);else{const i=e.resources.get(n);if(!i)return;e.prepareRender(n,o),A(c,i,s)}u.current=requestAnimationFrame(m.current)}},[o,R,A]);const d=t.useCallback(()=>{if(!f.current||!a.current)return;const r=window.innerWidth,e=window.innerHeight;a.current.setSize(r,e,w)},[w]);return t.useEffect(()=>{if(!f.current)return;const r=new F.WebGLManager(f.current);a.current=r,d();const[[e,n]]=Object.entries(E);return r.createProgram(e,n),r.createBuffer(e,"a_position",new Float32Array([-1,-1,1,-1,-1,1,1,1])),r.setAttributeOnce(e,"a_position",{name:"a_position",size:2,type:"FLOAT",normalized:!1,stride:0,offset:0}),l.current=e,g.current=performance.now(),u.current=requestAnimationFrame(m.current),window.addEventListener("resize",d),()=>{window.removeEventListener("resize",d),u.current&&cancelAnimationFrame(u.current),r.destroyAll()}},[E,d]),t.useEffect(()=>{const r=a.current,e=l.current;if(!r||!e)return;const n=p[e];n&&n.forEach(c=>{r.registerUniformUpdater(e,c.name,c.type,c.updateFn)})},[p]),_.jsx("canvas",{ref:f,className:L,style:S})};exports.ShaderEngine=U;
@@ -1,106 +1,82 @@
1
- import { jsx as S } from "react/jsx-runtime";
2
- import { useRef as a, useCallback as L, useEffect as F } from "react";
3
- import { WebGLManager as h } from "../../../core/managers/WebGLManager.mjs";
4
- const U = {}, y = "", z = {}, b = {}, P = ({
1
+ import { jsx as I } from "react/jsx-runtime";
2
+ import { useRef as s, useCallback as _, useEffect as g } from "react";
3
+ import { WebGLManager as U } from "../../../core/managers/WebGLManager.mjs";
4
+ const h = {}, y = "", z = {}, N = {}, q = ({
5
5
  programConfigs: E,
6
- renderCallback: p,
7
- renderOptions: i = U,
8
- className: _ = y,
9
- style: I = z,
10
- uniformUpdaters: T = b,
11
- useFastPath: d = !1,
12
- useDevicePixelRatio: w = !0
6
+ renderCallback: T,
7
+ renderOptions: a = h,
8
+ className: F = y,
9
+ style: S = z,
10
+ uniformUpdaters: w = N,
11
+ useFastPath: A = !1,
12
+ useDevicePixelRatio: L = !0
13
13
  }) => {
14
- const f = a(null), o = a(null), g = a(null), u = a(null), A = a(0), m = a((n) => {
15
- const r = o.current, e = g.current;
16
- if (!r || !e) return;
17
- const s = n - A.current, t = r.context;
18
- if (d)
19
- r.fastRender(e, s, i.clear), t.drawArrays(t.TRIANGLE_STRIP, 0, 4);
14
+ const f = s(null), o = s(null), m = s(null), i = s(null), R = s(0), l = s((r) => {
15
+ const e = o.current, n = m.current;
16
+ if (!e || !n) return;
17
+ const t = r - R.current, c = e.context;
18
+ if (A)
19
+ e.fastRender(n, t, a.clear), c.drawArrays(c.TRIANGLE_STRIP, 0, 4);
20
20
  else {
21
- const c = r.resources.get(e);
22
- if (!c) return;
23
- r.prepareRender(e, i), R(s, c, t);
21
+ const u = e.resources.get(n);
22
+ if (!u) return;
23
+ e.prepareRender(n, a), p(t, u, c);
24
24
  }
25
- u.current = requestAnimationFrame(m.current);
26
- }), R = L((n, r, e) => {
27
- p(n, r, e);
28
- }, [p]);
29
- F(() => {
30
- m.current = (n) => {
31
- const r = o.current, e = g.current;
32
- if (!r || !e) return;
33
- const s = n - A.current, t = r.context;
34
- if (d)
35
- r.fastRender(e, s, i.clear), t.drawArrays(t.TRIANGLE_STRIP, 0, 4);
25
+ i.current = requestAnimationFrame(l.current);
26
+ }), p = _((r, e, n) => {
27
+ T(r, e, n);
28
+ }, [T]);
29
+ g(() => {
30
+ l.current = (r) => {
31
+ const e = o.current, n = m.current;
32
+ if (!e || !n) return;
33
+ const t = r - R.current, c = e.context;
34
+ if (A)
35
+ e.fastRender(n, t, a.clear), c.drawArrays(c.TRIANGLE_STRIP, 0, 4);
36
36
  else {
37
- const c = r.resources.get(e);
38
- if (!c) return;
39
- r.prepareRender(e, i), R(s, c, t);
37
+ const u = e.resources.get(n);
38
+ if (!u) return;
39
+ e.prepareRender(n, a), p(t, u, c);
40
40
  }
41
- u.current = requestAnimationFrame(m.current);
41
+ i.current = requestAnimationFrame(l.current);
42
42
  };
43
- }, [i, d, R]);
44
- const l = L(() => {
43
+ }, [a, A, p]);
44
+ const d = _(() => {
45
45
  if (!f.current || !o.current) return;
46
- const n = window.innerWidth, r = window.innerHeight;
47
- o.current.setSize(n, r, w);
48
- }, [w]);
49
- return F(() => {
50
- if (f.current)
51
- try {
52
- const n = new h(f.current);
53
- o.current = n, l();
54
- const r = Object.entries(E);
55
- if (r.length > 0) {
56
- const [e, s] = r[0];
57
- n.createProgram(e, s), n.createBuffer(
58
- e,
59
- "a_position",
60
- new Float32Array([
61
- -1,
62
- -1,
63
- 1,
64
- -1,
65
- -1,
66
- 1,
67
- 1,
68
- 1
69
- ])
70
- ), g.current = e, n.setAttributeOnce(e, "a_position", {
71
- name: "a_position",
72
- size: 2,
73
- type: "FLOAT",
74
- normalized: !1,
75
- stride: 0,
76
- offset: 0
77
- });
78
- const t = T[e];
79
- t && t.forEach((c) => {
80
- n.registerUniformUpdater(
81
- e,
82
- c.name,
83
- c.type,
84
- c.updateFn
85
- );
86
- });
87
- }
88
- return A.current = performance.now(), u.current = requestAnimationFrame(m.current), window.addEventListener("resize", l), () => {
89
- window.removeEventListener("resize", l), u.current && cancelAnimationFrame(u.current), o.current && o.current.destroyAll();
90
- };
91
- } catch (n) {
92
- return console.error("Failed to initialize WebGL:", n), () => {
93
- };
94
- }
95
- }, [E, T, l]), /* @__PURE__ */ S(
46
+ const r = window.innerWidth, e = window.innerHeight;
47
+ o.current.setSize(r, e, L);
48
+ }, [L]);
49
+ return g(() => {
50
+ if (!f.current) return;
51
+ const r = new U(f.current);
52
+ o.current = r, d();
53
+ const [[e, n]] = Object.entries(E);
54
+ return r.createProgram(e, n), r.createBuffer(e, "a_position", new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1])), r.setAttributeOnce(e, "a_position", {
55
+ name: "a_position",
56
+ size: 2,
57
+ type: "FLOAT",
58
+ normalized: !1,
59
+ stride: 0,
60
+ offset: 0
61
+ }), m.current = e, R.current = performance.now(), i.current = requestAnimationFrame(l.current), window.addEventListener("resize", d), () => {
62
+ window.removeEventListener("resize", d), i.current && cancelAnimationFrame(i.current), r.destroyAll();
63
+ };
64
+ }, [E, d]), g(() => {
65
+ const r = o.current, e = m.current;
66
+ if (!r || !e) return;
67
+ const n = w[e];
68
+ n && n.forEach((t) => {
69
+ r.registerUniformUpdater(e, t.name, t.type, t.updateFn);
70
+ });
71
+ }, [w]), /* @__PURE__ */ I(
96
72
  "canvas",
97
73
  {
98
74
  ref: f,
99
- className: _,
100
- style: I
75
+ className: F,
76
+ style: S
101
77
  }
102
78
  );
103
79
  };
104
80
  export {
105
- P as ShaderEngine
81
+ q as ShaderEngine
106
82
  };
@@ -1,4 +1,4 @@
1
- import { UniformParam, UniformType, UniformUpdaterDef } from '../../types';
1
+ import { UniformParam, UniformUpdaterDef } from '../../types';
2
2
  export declare const useUniformUpdaters: (programId: string, uniforms: Record<string, UniformParam>) => {
3
- [x: string]: UniformUpdaterDef<UniformType>[];
3
+ [x: string]: UniformUpdaterDef<import('../../types').UniformType>[];
4
4
  };
@@ -5,4 +5,4 @@ export declare function createUniformUpdaters<T extends UniformType>(configs: {
5
5
  type: T;
6
6
  value: UniformValue<T>;
7
7
  }[]): UniformUpdaterDef<T>[];
8
- export declare function createCommonUpdaters(): UniformUpdaterDef<UniformType>[];
8
+ export declare function createCommonUpdaters(): UniformUpdaterDef[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "micugl",
3
- "version": "0.0.10",
3
+ "version": "0.0.12",
4
4
  "description": "Micu gl - Small React shader library",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -41,6 +41,7 @@
41
41
  "@types/node": "^22.14.0",
42
42
  "@types/react": "^18.0.0 || ^19.0.0",
43
43
  "@types/react-dom": "^18.0.0 || ^19.0.0",
44
+ "ajv": "^8",
44
45
  "eslint": "^9.25.0",
45
46
  "eslint-plugin-react-dom": "^1.48.4",
46
47
  "eslint-plugin-react-hooks": "^5.2.0",