Skip to content

Commit 32df58e

Browse files
authored
Merge pull request #6 from 657KB/new-curve-gradient-bg
feat: add CurveGradientBg
2 parents eaeaeb7 + 9c6ee58 commit 32df58e

File tree

6 files changed

+74
-36
lines changed

6 files changed

+74
-36
lines changed

package.json

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
{
22
"name": "react-color4bg",
33
"description": "React component wrapper of color4bg.js written in TypeScript.",
4-
"version": "0.1.5",
4+
"version": "0.2.0",
55
"type": "module",
66
"repository": "https://github.com/657KB/react-color4bg",
77
"main": "./dist/index.js",
88
"module": "./dist/index.js",
99
"types": "./dist/index.d.ts",
10-
"engines": {
11-
"pnpm": "10.0.0"
12-
},
13-
"files": ["dist"],
10+
"files": [
11+
"dist"
12+
],
1413
"keywords": [
1514
"react",
1615
"color4bg.js",
@@ -44,4 +43,4 @@
4443
"react": "^18 || ^19 || ^19.0.0-rc",
4544
"react-dom": "^18 || ^19 || ^19.0.0-rc"
4645
}
47-
}
46+
}

pnpm-lock.yaml

Lines changed: 16 additions & 29 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
onlyBuiltDependencies:
2+
- esbuild
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { forwardRef, useCallback, useId } from 'react'
2+
import { CurveGradientBg as Background } from 'color4bg/src/color4bg/AbstractBackground/CurveGradientBg'
3+
import type { BaseBackgroundProps } from '@/models/background'
4+
import { useBackground } from '@/hooks/use-background'
5+
6+
type CurveGradientBgProps = {
7+
noise?: number
8+
speed?: number
9+
density?: number
10+
scale?: number
11+
} & BaseBackgroundProps & React.HTMLAttributes<HTMLDivElement>
12+
13+
const CurveGradientBg = forwardRef<HTMLDivElement, CurveGradientBgProps>(({
14+
colors, seed, loop, noise, speed, density, scale,
15+
...rest
16+
}, ref) => {
17+
const id = useId()
18+
19+
const onCreate = useCallback(() => {
20+
const background = new Background({ dom: id, colors, seed, loop })
21+
if (typeof noise === 'number') {
22+
background.update('noise', noise)
23+
}
24+
if (typeof speed === 'number') {
25+
background.update('speed', speed)
26+
}
27+
if (typeof density === 'number') {
28+
background.update('density', density)
29+
}
30+
if (typeof scale === 'number') {
31+
background.update('scale', scale)
32+
}
33+
return background
34+
}, [id, colors, seed, loop, noise, speed, density, scale])
35+
36+
useBackground(onCreate)
37+
38+
return <div {...rest} id={id} ref={ref} />
39+
})
40+
41+
export default CurveGradientBg

src/types/color4bg.d.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ type TrianglesMosaicBgConstructorArgs = ColorBackgroundConstructorArgs
3535

3636
type WavyWavesBgConstructorArgs = ColorBackgroundConstructorArgs
3737

38+
type CurveGradientBgConstructorArgs = ColorBackgroundConstructorArgs
39+
3840
declare class ColorBg {
3941
constructor({ colors, seed, dom, loop }: ColorBackgroundConstructorArgs)
4042
/**
@@ -176,3 +178,10 @@ declare module 'color4bg/src/color4bg/SimpleBackground/AngleGradient' {
176178
constructor(args: AngleGradientConstructorArgs)
177179
}
178180
}
181+
182+
declare module 'color4bg/src/color4bg/AbstractBackground/CurveGradientBg' {
183+
export class CurveGradientBg extends ColorBg {
184+
constructor(args: CurveGradientBgConstructorArgs)
185+
update(option: 'noise' | 'speed' | 'density' | 'scale', val: number): void
186+
}
187+
}

0 commit comments

Comments
 (0)