react-native-snow-backgroud 0.1.4 → 0.1.6

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.
@@ -2,15 +2,16 @@
2
2
 
3
3
  export class SnowEngine {
4
4
  particles = [];
5
- constructor(count, width, height) {
5
+ constructor(count, width, height, speedMultiplier) {
6
6
  this.width = width;
7
7
  this.height = height;
8
+ this.speedMultiplier = speedMultiplier;
8
9
  this.particles = Array.from({
9
10
  length: count
10
11
  }).map(() => ({
11
12
  x: Math.random() * width,
12
13
  y: Math.random() * height,
13
- speed: Math.random() * 2 + 1,
14
+ speed: (Math.random() * 2 + 1) * this.speedMultiplier,
14
15
  size: Math.random() * 2 + 1
15
16
  }));
16
17
  }
@@ -1 +1 @@
1
- {"version":3,"names":["SnowEngine","particles","constructor","count","width","height","Array","from","length","map","x","Math","random","y","speed","size","update","p"],"sourceRoot":"../../../src","sources":["snow/SnowEngine.ts"],"mappings":";;AAME,OAAO,MAAMA,UAAU,CAAC;EACtBC,SAAS,GAAmB,EAAE;EAE9BC,WAAWA,CACTC,KAAa,EACLC,KAAa,EACbC,MAAc,EACtB;IAAA,KAFQD,KAAa,GAAbA,KAAa;IAAA,KACbC,MAAc,GAAdA,MAAc;IAEtB,IAAI,CAACJ,SAAS,GAAGK,KAAK,CAACC,IAAI,CAAC;MAAEC,MAAM,EAAEL;IAAM,CAAC,CAAC,CAACM,GAAG,CAAC,OAAO;MACxDC,CAAC,EAAEC,IAAI,CAACC,MAAM,CAAC,CAAC,GAAGR,KAAK;MACxBS,CAAC,EAAEF,IAAI,CAACC,MAAM,CAAC,CAAC,GAAGP,MAAM;MACzBS,KAAK,EAAEH,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;MAC5BG,IAAI,EAAEJ,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG;IAC5B,CAAC,CAAC,CAAC;EACL;EAEAI,MAAMA,CAAA,EAAG;IACP,KAAK,MAAMC,CAAC,IAAI,IAAI,CAAChB,SAAS,EAAE;MAC9BgB,CAAC,CAACJ,CAAC,IAAII,CAAC,CAACH,KAAK,GAAG,CAAC;MAElB,IAAIG,CAAC,CAACJ,CAAC,GAAG,IAAI,CAACR,MAAM,EAAE;QACrBY,CAAC,CAACJ,CAAC,GAAG,CAAC,EAAE;QACTI,CAAC,CAACP,CAAC,GAAGC,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,IAAI,CAACR,KAAK;MAClC;IACF;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"names":["SnowEngine","particles","constructor","count","width","height","speedMultiplier","Array","from","length","map","x","Math","random","y","speed","size","update","p"],"sourceRoot":"../../../src","sources":["snow/SnowEngine.ts"],"mappings":";;AAME,OAAO,MAAMA,UAAU,CAAC;EACtBC,SAAS,GAAmB,EAAE;EAE9BC,WAAWA,CACPC,KAAa,EACLC,KAAa,EACbC,MAAc,EACdC,eAAuB,EAC/B;IAAA,KAHQF,KAAa,GAAbA,KAAa;IAAA,KACbC,MAAc,GAAdA,MAAc;IAAA,KACdC,eAAuB,GAAvBA,eAAuB;IAGjC,IAAI,CAACL,SAAS,GAAGM,KAAK,CAACC,IAAI,CAAC;MAAEC,MAAM,EAAEN;IAAM,CAAC,CAAC,CAACO,GAAG,CAAC,OAAO;MACxDC,CAAC,EAAEC,IAAI,CAACC,MAAM,CAAC,CAAC,GAAGT,KAAK;MACxBU,CAAC,EAAEF,IAAI,CAACC,MAAM,CAAC,CAAC,GAAGR,MAAM;MACzBU,KAAK,EAAE,CAACH,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAACP,eAAe;MACrDU,IAAI,EAAEJ,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG;IAC5B,CAAC,CAAC,CAAC;EACL;EAEAI,MAAMA,CAAA,EAAG;IACP,KAAK,MAAMC,CAAC,IAAI,IAAI,CAACjB,SAAS,EAAE;MAC9BiB,CAAC,CAACJ,CAAC,IAAII,CAAC,CAACH,KAAK,GAAG,CAAC;MAElB,IAAIG,CAAC,CAACJ,CAAC,GAAG,IAAI,CAACT,MAAM,EAAE;QACrBa,CAAC,CAACJ,CAAC,GAAG,CAAC,EAAE;QACTI,CAAC,CAACP,CAAC,GAAGC,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,IAAI,CAACT,KAAK;MAClC;IACF;EACF;AACF","ignoreList":[]}
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
 
3
- import { useEffect, useRef } from "react";
3
+ import { useEffect, useRef, useState } from "react";
4
4
  import { Dimensions, View, StyleSheet } from "react-native";
5
5
  import { Canvas, Circle } from "@shopify/react-native-skia";
6
6
  import { SnowEngine } from "./SnowEngine.js";
7
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
8
  export function SnowView({
9
9
  count = 100,
10
+ color = "white",
11
+ speed = 1,
10
12
  children
11
13
  }) {
12
14
  const {
@@ -14,13 +16,15 @@ export function SnowView({
14
16
  height
15
17
  } = Dimensions.get("window");
16
18
  const engineRef = useRef(null);
19
+ const [, forceRender] = useState(0);
17
20
  if (!engineRef.current) {
18
- engineRef.current = new SnowEngine(count, width, height);
21
+ engineRef.current = new SnowEngine(count, width, height, speed);
19
22
  }
20
23
  useEffect(() => {
21
24
  let raf;
22
25
  const loop = () => {
23
26
  engineRef.current?.update();
27
+ forceRender(v => v + 1);
24
28
  raf = requestAnimationFrame(loop);
25
29
  };
26
30
  loop();
@@ -40,7 +44,7 @@ export function SnowView({
40
44
  cx: p.x,
41
45
  cy: p.y,
42
46
  r: p.size,
43
- color: "white"
47
+ color: color
44
48
  }, i))
45
49
  })]
46
50
  });
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","Dimensions","View","StyleSheet","Canvas","Circle","SnowEngine","jsx","_jsx","jsxs","_jsxs","SnowView","count","children","width","height","get","engineRef","current","raf","loop","update","requestAnimationFrame","cancelAnimationFrame","snow","style","flex","absoluteFill","zIndex","pointerEvents","particles","map","p","i","cx","x","cy","y","r","size","color"],"sourceRoot":"../../../src","sources":["snow/SnowView.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAMzC,SAASC,UAAU,EAAEC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC3D,SAASC,MAAM,EAAEC,MAAM,QAAQ,4BAA4B;AAC3D,SAASC,UAAU,QAAQ,iBAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAC1C,OAAO,SAASC,QAAQA,CAAC;EAAEC,KAAK,GAAG,GAAG;EAAEC;AAAwB,CAAC,EAAE;EAEjE,MAAM;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGd,UAAU,CAACe,GAAG,CAAC,QAAQ,CAAC;EAClD,MAAMC,SAAS,GAAGjB,MAAM,CAAoB,IAAI,CAAC;EAEjD,IAAI,CAACiB,SAAS,CAACC,OAAO,EAAE;IACtBD,SAAS,CAACC,OAAO,GAAG,IAAIZ,UAAU,CAACM,KAAK,EAAEE,KAAK,EAAEC,MAAM,CAAC;EAC1D;EAEAhB,SAAS,CAAC,MAAM;IACd,IAAIoB,GAAW;IACf,MAAMC,IAAI,GAAGA,CAAA,KAAM;MACjBH,SAAS,CAACC,OAAO,EAAEG,MAAM,CAAC,CAAC;MAC3BF,GAAG,GAAGG,qBAAqB,CAACF,IAAI,CAAC;IACnC,CAAC;IACDA,IAAI,CAAC,CAAC;IACN,OAAO,MAAMG,oBAAoB,CAACJ,GAAG,CAAC;EACxC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMK,IAAI,GAAGP,SAAS,CAACC,OAAO;EAE9B,oBACER,KAAA,CAACR,IAAI;IAACuB,KAAK,EAAE;MAAEC,IAAI,EAAE;IAAE,CAAE;IAAAb,QAAA,GACtBA,QAAQ,eACTL,IAAA,CAACJ,MAAM;MACLqB,KAAK,EAAE,CACLtB,UAAU,CAACwB,YAAY,EACvB;QAAEC,MAAM,EAAE,EAAE;QAAEC,aAAa,EAAE;MAAO,CAAC,CACrC;MAAAhB,QAAA,EAEDW,IAAI,EAAEM,SAAS,CAACC,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,kBACxBzB,IAAA,CAACH,MAAM;QAAS6B,EAAE,EAAEF,CAAC,CAACG,CAAE;QAACC,EAAE,EAAEJ,CAAC,CAACK,CAAE;QAACC,CAAC,EAAEN,CAAC,CAACO,IAAK;QAACC,KAAK,EAAC;MAAO,GAA7CP,CAA+C,CAC7D;IAAC,CACI,CAAC;EAAA,CACL,CAAC;AAEX","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","useState","Dimensions","View","StyleSheet","Canvas","Circle","SnowEngine","jsx","_jsx","jsxs","_jsxs","SnowView","count","color","speed","children","width","height","get","engineRef","forceRender","current","raf","loop","update","v","requestAnimationFrame","cancelAnimationFrame","snow","style","flex","absoluteFill","zIndex","pointerEvents","particles","map","p","i","cx","x","cy","y","r","size"],"sourceRoot":"../../../src","sources":["snow/SnowView.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAEnD,SAASC,UAAU,EAAEC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC3D,SAASC,MAAM,EAAEC,MAAM,QAAQ,4BAA4B;AAC3D,SAASC,UAAU,QAAQ,iBAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAS1C,OAAO,SAASC,QAAQA,CAAC;EACvBC,KAAK,GAAG,GAAG;EACXC,KAAK,GAAG,OAAO;EACfC,KAAK,GAAG,CAAC;EACTC;AACa,CAAC,EAAE;EAChB,MAAM;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGhB,UAAU,CAACiB,GAAG,CAAC,QAAQ,CAAC;EAClD,MAAMC,SAAS,GAAGpB,MAAM,CAAoB,IAAI,CAAC;EACjD,MAAM,GAAGqB,WAAW,CAAC,GAAGpB,QAAQ,CAAC,CAAC,CAAC;EAEnC,IAAI,CAACmB,SAAS,CAACE,OAAO,EAAE;IACtBF,SAAS,CAACE,OAAO,GAAG,IAAIf,UAAU,CAACM,KAAK,EAAEI,KAAK,EAAEC,MAAM,EAAEH,KAAK,CAAC;EACjE;EAEAhB,SAAS,CAAC,MAAM;IACd,IAAIwB,GAAW;IACf,MAAMC,IAAI,GAAGA,CAAA,KAAM;MACjBJ,SAAS,CAACE,OAAO,EAAEG,MAAM,CAAC,CAAC;MAC3BJ,WAAW,CAACK,CAAC,IAAIA,CAAC,GAAG,CAAC,CAAC;MACvBH,GAAG,GAAGI,qBAAqB,CAACH,IAAI,CAAC;IACnC,CAAC;IACDA,IAAI,CAAC,CAAC;IACN,OAAO,MAAMI,oBAAoB,CAACL,GAAG,CAAC;EACxC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMM,IAAI,GAAGT,SAAS,CAACE,OAAO;EAE9B,oBACEX,KAAA,CAACR,IAAI;IAAC2B,KAAK,EAAE;MAAEC,IAAI,EAAE;IAAE,CAAE;IAAAf,QAAA,GACtBA,QAAQ,eACTP,IAAA,CAACJ,MAAM;MACLyB,KAAK,EAAE,CACL1B,UAAU,CAAC4B,YAAY,EACvB;QAAEC,MAAM,EAAE,EAAE;QAAEC,aAAa,EAAE;MAAO,CAAC,CACrC;MAAAlB,QAAA,EAEDa,IAAI,EAAEM,SAAS,CAACC,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,kBACxB7B,IAAA,CAACH,MAAM;QAASiC,EAAE,EAAEF,CAAC,CAACG,CAAE;QAACC,EAAE,EAAEJ,CAAC,CAACK,CAAE;QAACC,CAAC,EAAEN,CAAC,CAACO,IAAK;QAAC9B,KAAK,EAAEA;MAAM,GAA7CwB,CAA+C,CAC7D;IAAC,CACI,CAAC;EAAA,CACL,CAAC;AAEX","ignoreList":[]}
@@ -7,8 +7,9 @@ export type SnowParticle = {
7
7
  export declare class SnowEngine {
8
8
  private width;
9
9
  private height;
10
+ private speedMultiplier;
10
11
  particles: SnowParticle[];
11
- constructor(count: number, width: number, height: number);
12
+ constructor(count: number, width: number, height: number, speedMultiplier: number);
12
13
  update(): void;
13
14
  }
14
15
  //# sourceMappingURL=SnowEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SnowEngine.d.ts","sourceRoot":"","sources":["../../../../src/snow/SnowEngine.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AACF,qBAAa,UAAU;IAKnB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IALhB,SAAS,EAAE,YAAY,EAAE,CAAM;gBAG7B,KAAK,EAAE,MAAM,EACL,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM;IAUxB,MAAM;CAUP"}
1
+ {"version":3,"file":"SnowEngine.d.ts","sourceRoot":"","sources":["../../../../src/snow/SnowEngine.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AACF,qBAAa,UAAU;IAKjB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,eAAe;IAN3B,SAAS,EAAE,YAAY,EAAE,CAAM;gBAG3B,KAAK,EAAE,MAAM,EACL,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM;IAWnC,MAAM;CAUP"}
@@ -1,8 +1,10 @@
1
1
  import type { ReactNode } from "react";
2
2
  type SnowViewProps = {
3
3
  count?: number;
4
+ color?: string;
5
+ speed?: number;
4
6
  children?: ReactNode;
5
7
  };
6
- export declare function SnowView({ count, children }: SnowViewProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare function SnowView({ count, color, speed, children, }: SnowViewProps): import("react/jsx-runtime").JSX.Element;
7
9
  export {};
8
10
  //# sourceMappingURL=SnowView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SnowView.d.ts","sourceRoot":"","sources":["../../../../src/snow/SnowView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,KAAK,aAAa,GAAG;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAIF,wBAAgB,QAAQ,CAAC,EAAE,KAAW,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAoChE"}
1
+ {"version":3,"file":"SnowView.d.ts","sourceRoot":"","sources":["../../../../src/snow/SnowView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,KAAK,aAAa,GAAG;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EACvB,KAAW,EACX,KAAe,EACf,KAAS,EACT,QAAQ,GACT,EAAE,aAAa,2CAqCf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-snow-backgroud",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "A simple snow background effect for React Native CLI using Skia.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -8,14 +8,16 @@ export type SnowParticle = {
8
8
  particles: SnowParticle[] = [];
9
9
 
10
10
  constructor(
11
- count: number,
12
- private width: number,
13
- private height: number,
14
- ) {
11
+ count: number,
12
+ private width: number,
13
+ private height: number,
14
+ private speedMultiplier: number,
15
+ ) {
16
+
15
17
  this.particles = Array.from({ length: count }).map(() => ({
16
18
  x: Math.random() * width,
17
19
  y: Math.random() * height,
18
- speed: Math.random() * 2 + 1,
20
+ speed: (Math.random() * 2 + 1) * this.speedMultiplier,
19
21
  size: Math.random() * 2 + 1,
20
22
  }));
21
23
  }
@@ -1,25 +1,35 @@
1
- import { useEffect, useRef } from "react";
1
+ import { useEffect, useRef, useState } from "react";
2
2
  import type { ReactNode } from "react";
3
+ import { Dimensions, View, StyleSheet } from "react-native";
4
+ import { Canvas, Circle } from "@shopify/react-native-skia";
5
+ import { SnowEngine } from "./SnowEngine";
6
+
3
7
  type SnowViewProps = {
4
8
  count?: number;
9
+ color?: string;
10
+ speed?: number;
5
11
  children?: ReactNode;
6
12
  };
7
- import { Dimensions, View, StyleSheet } from "react-native";
8
- import { Canvas, Circle } from "@shopify/react-native-skia";
9
- import { SnowEngine } from "./SnowEngine";
10
- export function SnowView({ count = 100, children }: SnowViewProps) {
11
13
 
14
+ export function SnowView({
15
+ count = 100,
16
+ color = "white",
17
+ speed = 1,
18
+ children,
19
+ }: SnowViewProps) {
12
20
  const { width, height } = Dimensions.get("window");
13
21
  const engineRef = useRef<SnowEngine | null>(null);
22
+ const [, forceRender] = useState(0);
14
23
 
15
24
  if (!engineRef.current) {
16
- engineRef.current = new SnowEngine(count, width, height);
25
+ engineRef.current = new SnowEngine(count, width, height, speed);
17
26
  }
18
27
 
19
28
  useEffect(() => {
20
29
  let raf: number;
21
30
  const loop = () => {
22
31
  engineRef.current?.update();
32
+ forceRender(v => v + 1);
23
33
  raf = requestAnimationFrame(loop);
24
34
  };
25
35
  loop();
@@ -38,9 +48,9 @@ export function SnowView({ count = 100, children }: SnowViewProps) {
38
48
  ]}
39
49
  >
40
50
  {snow?.particles.map((p, i) => (
41
- <Circle key={i} cx={p.x} cy={p.y} r={p.size} color="white" />
51
+ <Circle key={i} cx={p.x} cy={p.y} r={p.size} color={color} />
42
52
  ))}
43
53
  </Canvas>
44
54
  </View>
45
- );
55
+ );
46
56
  }