@fjandin/react-shader 0.0.14 → 0.0.15

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,3 +1,3 @@
1
1
  import type { ReactShaderProps } from "./types";
2
- export declare function ReactShader({ className, fragment, vertex, uniforms, fullscreen, timeScale, onFrame, onClick, onMouseMove, onMouseDown, onMouseUp, }: ReactShaderProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function ReactShader({ className, fragment, vertex, uniforms, fullscreen, timeScale, onFrame, onClick, onMouseMove, onMouseDown, onMouseUp, onMouseWheel, }: ReactShaderProps): import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=ReactShader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReactShader.d.ts","sourceRoot":"","sources":["../src/ReactShader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAgC/C,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,QAAQ,EACR,MAAuB,EACvB,QAAQ,EACR,UAAkB,EAClB,SAAa,EACb,OAAO,EACP,OAAO,EACP,WAAW,EACX,WAAW,EACX,SAAS,GACV,EAAE,gBAAgB,2CAyDlB"}
1
+ {"version":3,"file":"ReactShader.d.ts","sourceRoot":"","sources":["../src/ReactShader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAgC/C,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,QAAQ,EACR,MAAuB,EACvB,QAAQ,EACR,UAAkB,EAClB,SAAa,EACb,OAAO,EACP,OAAO,EACP,WAAW,EACX,WAAW,EACX,SAAS,EACT,YAAY,GACb,EAAE,gBAAgB,2CA0DlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"frontend.d.ts","sourceRoot":"","sources":["../../src/example/frontend.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,aAAa,CAAA;AAiHpB,wBAAgB,GAAG,4CAgGlB"}
1
+ {"version":3,"file":"frontend.d.ts","sourceRoot":"","sources":["../../src/example/frontend.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,aAAa,CAAA;AAiHpB,wBAAgB,GAAG,4CAwGlB"}
@@ -9,6 +9,7 @@ interface UseWebGLOptions {
9
9
  onMouseDown?: (info: FrameInfo) => void;
10
10
  onMouseUp?: (info: FrameInfo) => void;
11
11
  onMouseMove?: (info: FrameInfo) => void;
12
+ onMouseWheel?: (info: FrameInfo, wheelDelta: number) => void;
12
13
  timeScale?: number;
13
14
  }
14
15
  export declare function useWebGL(options: UseWebGLOptions): {
@@ -1 +1 @@
1
- {"version":3,"file":"useWebGL.d.ts","sourceRoot":"","sources":["../../src/hooks/useWebGL.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAKvD,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACnC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACnC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACvC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACrC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAwED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe;;;EAyRhD"}
1
+ {"version":3,"file":"useWebGL.d.ts","sourceRoot":"","sources":["../../src/hooks/useWebGL.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAKvD,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACnC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACnC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACvC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACrC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAwED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe;;;EA0ShD"}
package/dist/index.cjs CHANGED
@@ -424,6 +424,7 @@ function useWebGL(options) {
424
424
  const onMouseDownRef = import_react.useRef(options.onMouseDown);
425
425
  const onMouseUpRef = import_react.useRef(options.onMouseUp);
426
426
  const onMouseMoveRef = import_react.useRef(options.onMouseMove);
427
+ const onMouseWheelRef = import_react.useRef(options.onMouseWheel);
427
428
  const timeScaleRef = import_react.useRef(options.timeScale ?? 1);
428
429
  const vertexRef = import_react.useRef(options.vertex);
429
430
  const fragmentRef = import_react.useRef(options.fragment);
@@ -442,6 +443,7 @@ function useWebGL(options) {
442
443
  onMouseDownRef.current = options.onMouseDown;
443
444
  onMouseUpRef.current = options.onMouseUp;
444
445
  onMouseMoveRef.current = options.onMouseMove;
446
+ onMouseWheelRef.current = options.onMouseWheel;
445
447
  timeScaleRef.current = options.timeScale ?? 1;
446
448
  vertexRef.current = options.vertex;
447
449
  fragmentRef.current = options.fragment;
@@ -616,10 +618,21 @@ function useWebGL(options) {
616
618
  mouseLeftDown: mouseLeftDownRef.current
617
619
  });
618
620
  };
621
+ const handleMouseWheel = (event) => {
622
+ onMouseWheelRef.current?.({
623
+ deltaTime: 0,
624
+ time: elapsedTimeRef.current,
625
+ resolution: [canvas.width, canvas.height],
626
+ mouse: mouseRef.current,
627
+ mouseNormalized: mouseNormalizedRef.current,
628
+ mouseLeftDown: mouseLeftDownRef.current
629
+ }, event.deltaY);
630
+ };
619
631
  window.addEventListener("mousemove", handleMouseMove);
620
632
  window.addEventListener("mousedown", handleMouseDown);
621
633
  window.addEventListener("mouseup", handleMouseUp);
622
634
  canvas.addEventListener("click", handleClick);
635
+ window.addEventListener("wheel", handleMouseWheel);
623
636
  return () => {
624
637
  resizeObserver.disconnect();
625
638
  window.removeEventListener("scroll", updateRect);
@@ -627,6 +640,7 @@ function useWebGL(options) {
627
640
  window.removeEventListener("mousedown", handleMouseDown);
628
641
  window.removeEventListener("mouseup", handleMouseUp);
629
642
  canvas.removeEventListener("click", handleClick);
643
+ window.removeEventListener("wheel", handleMouseWheel);
630
644
  };
631
645
  }, []);
632
646
  return { canvasRef, mouseRef };
@@ -670,7 +684,8 @@ function ReactShader({
670
684
  onClick,
671
685
  onMouseMove,
672
686
  onMouseDown,
673
- onMouseUp
687
+ onMouseUp,
688
+ onMouseWheel
674
689
  }) {
675
690
  const [error, setError] = import_react2.useState(null);
676
691
  const handleError = import_react2.useCallback((err) => {
@@ -690,6 +705,7 @@ function ReactShader({
690
705
  onMouseMove,
691
706
  onMouseDown,
692
707
  onMouseUp,
708
+ onMouseWheel,
693
709
  timeScale
694
710
  });
695
711
  const containerStyle = import_react2.useMemo(() => fullscreen ? FULLSCREEN_CONTAINER_STYLE : DEFAULT_CONTAINER_STYLE, [fullscreen]);
package/dist/index.js CHANGED
@@ -384,6 +384,7 @@ function useWebGL(options) {
384
384
  const onMouseDownRef = useRef(options.onMouseDown);
385
385
  const onMouseUpRef = useRef(options.onMouseUp);
386
386
  const onMouseMoveRef = useRef(options.onMouseMove);
387
+ const onMouseWheelRef = useRef(options.onMouseWheel);
387
388
  const timeScaleRef = useRef(options.timeScale ?? 1);
388
389
  const vertexRef = useRef(options.vertex);
389
390
  const fragmentRef = useRef(options.fragment);
@@ -402,6 +403,7 @@ function useWebGL(options) {
402
403
  onMouseDownRef.current = options.onMouseDown;
403
404
  onMouseUpRef.current = options.onMouseUp;
404
405
  onMouseMoveRef.current = options.onMouseMove;
406
+ onMouseWheelRef.current = options.onMouseWheel;
405
407
  timeScaleRef.current = options.timeScale ?? 1;
406
408
  vertexRef.current = options.vertex;
407
409
  fragmentRef.current = options.fragment;
@@ -576,10 +578,21 @@ function useWebGL(options) {
576
578
  mouseLeftDown: mouseLeftDownRef.current
577
579
  });
578
580
  };
581
+ const handleMouseWheel = (event) => {
582
+ onMouseWheelRef.current?.({
583
+ deltaTime: 0,
584
+ time: elapsedTimeRef.current,
585
+ resolution: [canvas.width, canvas.height],
586
+ mouse: mouseRef.current,
587
+ mouseNormalized: mouseNormalizedRef.current,
588
+ mouseLeftDown: mouseLeftDownRef.current
589
+ }, event.deltaY);
590
+ };
579
591
  window.addEventListener("mousemove", handleMouseMove);
580
592
  window.addEventListener("mousedown", handleMouseDown);
581
593
  window.addEventListener("mouseup", handleMouseUp);
582
594
  canvas.addEventListener("click", handleClick);
595
+ window.addEventListener("wheel", handleMouseWheel);
583
596
  return () => {
584
597
  resizeObserver.disconnect();
585
598
  window.removeEventListener("scroll", updateRect);
@@ -587,6 +600,7 @@ function useWebGL(options) {
587
600
  window.removeEventListener("mousedown", handleMouseDown);
588
601
  window.removeEventListener("mouseup", handleMouseUp);
589
602
  canvas.removeEventListener("click", handleClick);
603
+ window.removeEventListener("wheel", handleMouseWheel);
590
604
  };
591
605
  }, []);
592
606
  return { canvasRef, mouseRef };
@@ -630,7 +644,8 @@ function ReactShader({
630
644
  onClick,
631
645
  onMouseMove,
632
646
  onMouseDown,
633
- onMouseUp
647
+ onMouseUp,
648
+ onMouseWheel
634
649
  }) {
635
650
  const [error, setError] = useState(null);
636
651
  const handleError = useCallback2((err) => {
@@ -650,6 +665,7 @@ function ReactShader({
650
665
  onMouseMove,
651
666
  onMouseDown,
652
667
  onMouseUp,
668
+ onMouseWheel,
653
669
  timeScale
654
670
  });
655
671
  const containerStyle = useMemo(() => fullscreen ? FULLSCREEN_CONTAINER_STYLE : DEFAULT_CONTAINER_STYLE, [fullscreen]);
package/dist/types.d.ts CHANGED
@@ -38,6 +38,7 @@ export interface ReactShaderProps {
38
38
  onMouseMove?: (info: FrameInfo) => void;
39
39
  onMouseDown?: (info: FrameInfo) => void;
40
40
  onMouseUp?: (info: FrameInfo) => void;
41
+ onMouseWheel?: (info: FrameInfo, wheelDelta: number) => void;
41
42
  }
42
43
  export interface DefaultUniforms {
43
44
  iTime: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACnC,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAC3C,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAEnD,MAAM,MAAM,UAAU,GAAG,MAAM,EAAE,CAAA;AACjC,MAAM,MAAM,SAAS,GAAG,IAAI,EAAE,CAAA;AAC9B,MAAM,MAAM,SAAS,GAAG,IAAI,EAAE,CAAA;AAC9B,MAAM,MAAM,SAAS,GAAG,IAAI,EAAE,CAAA;AAE9B,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,WAAW,GACX,SAAS,GACT,eAAe,CAAA;AAEnB,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;AACvD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAC9D,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEnD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,aAAa,CAAA;IACrB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,UAAU,GACV,SAAS,GACT,SAAS,GACT,SAAS,GACT,aAAa,GACb,cAAc,CAAA;AAElB,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvB,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,aAAa,EAAE,OAAO,CAAA;CACvB;AACD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACnC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACnC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACvC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACvC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,IAAI,CAAA;IACZ,gBAAgB,EAAE,IAAI,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,IAAI,CAAA;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACnC,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAC3C,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAEnD,MAAM,MAAM,UAAU,GAAG,MAAM,EAAE,CAAA;AACjC,MAAM,MAAM,SAAS,GAAG,IAAI,EAAE,CAAA;AAC9B,MAAM,MAAM,SAAS,GAAG,IAAI,EAAE,CAAA;AAC9B,MAAM,MAAM,SAAS,GAAG,IAAI,EAAE,CAAA;AAE9B,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,WAAW,GACX,SAAS,GACT,eAAe,CAAA;AAEnB,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;AACvD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAC9D,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEnD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,aAAa,CAAA;IACrB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,UAAU,GACV,SAAS,GACT,SAAS,GACT,SAAS,GACT,aAAa,GACb,cAAc,CAAA;AAElB,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvB,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,aAAa,EAAE,OAAO,CAAA;CACvB;AACD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACnC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACnC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACvC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACvC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACrC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7D;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,IAAI,CAAA;IACZ,gBAAgB,EAAE,IAAI,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,IAAI,CAAA;CAClB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjandin/react-shader",
3
- "version": "0.0.14",
3
+ "version": "0.0.15",
4
4
  "description": "React component for rendering WebGL shaders",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",