another one

This commit is contained in:
2025-02-22 20:12:27 +03:00
parent 1e803b4beb
commit b6fa50a59e
201 changed files with 5165 additions and 8036 deletions

21
frontend/node_modules/react-wavify/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2024 Jaxson Van Doorn
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

138
frontend/node_modules/react-wavify/README.md generated vendored Normal file
View File

@@ -0,0 +1,138 @@
# React Wavify
[![img](https://github.com/woofers/react-wavify/workflows/build/badge.svg)](https://github.com/woofers/react-wavify/actions) [![img](https://badge.fury.io/js/react-wavify.svg)](https://www.npmjs.com/package/react-wavify) [![img](https://img.shields.io/npm/dt/react-wavify.svg)](https://www.npmjs.com/package/react-wavify) [![img](https://badgen.net/bundlephobia/minzip/react-wavify)](https://bundlephobia.com/result?p=react-wavify) [![img](https://img.shields.io/npm/l/react-wavify.svg)](https://github.com/woofers/react-wavify/blob/main/LICENSE)
A simple React component which creates an animated wave.
**[Live Demo](https://jaxs.onl/react-wavify/)**
This component is heavily adapted from [Mikołaj Stolarski](https://github.com/grimor)'s awesome [Codepen](https://codepen.io/grimor/pen/qbXLdN)
and is functionally similar to [Benjamin Grauwin](http://benjamin.grauwin.me/)'s [Wavify](https://github.com/peacepostman/wavify) plug-in.
![img](./screenshots/wave.gif "Wave")
# Installation
**Yarn**
```yarn
yarn add react-wavify
```
**npm**
```npm
npm install react-wavify
```
# Usage
```jsx
import React from 'react'
import Wave from 'react-wavify'
const App = () => (
<Wave fill='#f79902'
paused={false}
style={{ display: 'flex' }}
options={{
height: 20,
amplitude: 20,
speed: 0.15,
points: 3
}}
/>
)
```
Simply add the Wave component to the React application using JSX.
The wave's width will scale to fit the parent container.
## Props
### Fill
The `fill` property can be set to anything that a SVG path can accept (usually gradients or colors). **Default:** `#FFF`
### Paused
The `paused` property controls the play state of the animation. **Default:** `false`
If set to `true` the wave animation will pause.
### Options
The component supports a variety of options to affect how the wave is rendered.
Any omitted options will be set to the default value.
- `height` - Height of the wave relative to the SVG element. **Default:** `20`
- `amplitude` - Amplitude of the rendered wave. **Default:** `20`
- `speed` - Speed that the wave animation plays at. **Default:** `0.15`
- `points` - Amount of points used to form the wave.
Can not be less than `1`. **Default:** `3`
### Pass Through Props
Any other props such as `id`, `className` or `style` will be passed through to the root of the component.
Other props such as `opacity` or `stroke` will be passed to the SVG path element.
Any other elements can be passed inside the SVG component itself.
Inner `<defs>` elements can be used to add gradients, clipping paths, or masks.
##### Using a Gradient
```jsx
<Wave fill="url(#gradient)">
<defs>
<linearGradient id="gradient" gradientTransform="rotate(90)">
<stop offset="10%" stopColor="#d4af37" />
<stop offset="90%" stopColor="#f00" />
</linearGradient>
</defs>
</Wave>
```
![img](./screenshots/wave-grad.gif "Gradient Wave")
##### Using a Clipping Path
```jsx
<Wave fill="#e62315" mask="url(#mask)" options={{ points: 20, speed: 0.2, amplitude: 40 }}>
{/* Example adapted from https://developer.mozilla.org/en-US/docs/Web/SVG/Element/mask */}
<mask id="mask">
<path d="M10,35 A20,20,0,0,1,50,35 A20,20,0,0,1,90,35 Q90,65,50,95 Q10,65,10,35 Z" fill="white" />
</mask>
</Wave>
```
![img](./screenshots/wave-heart.gif "Clipping Path Wave")
##### Using a Mask
```jsx
<Wave mask="url(#mask)" fill="#1277b0" >
<defs>
<linearGradient id="gradient" gradientTransform="rotate(90)">
<stop offset="0" stopColor="white" />
<stop offset="0.5" stopColor="black" />
</linearGradient>
<mask id="mask">
<rect x="0" y="0" width="2000" height="200" fill="url(#gradient)" />
</mask>
</defs>
</Wave>
```
![img](./screenshots/wave-mask.gif "Mask Wave")

27
frontend/node_modules/react-wavify/lib/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,27 @@
import React from 'react'
type WaveOptions = {
height?: number
amplitude?: number
speed?: number
points?: number
}
type BaseProps = Omit<
React.SVGProps<SVGPathElement>,
'ref' | 'height' | 'width' | 'points'
>
type WaveProps = BaseProps &
WaveOptions & {
paused?: boolean
fill?: string
options?: WaveOptions
ref?: string
svgId?: string
svgPathId?: string
}
declare const Wave: React.FC<WaveProps>
export = Wave

8
frontend/node_modules/react-wavify/lib/index.js generated vendored Normal file
View File

@@ -0,0 +1,8 @@
'use client'
if (process.env.NODE_ENV !== 'production') {
module.exports = require('./react-wavify.dev.js')
}
else {
module.exports = require('./react-wavify.js')
}

View File

@@ -0,0 +1,6 @@
'use client'
import WaveDev from './react-wavify.module.dev.js'
import Wave from './react-wavify.module.js'
export default process.env.NODE_ENV === 'production' ? Wave : WaveDev

View File

@@ -0,0 +1 @@
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i(require("react")):"function"==typeof define&&define.amd?define(["react"],i):(t||self).reactWavify=i(t.react)}(this,function(t){function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var s=/*#__PURE__*/i(t),e=class extends t.Component{constructor(t){super(t),this.t=()=>this.i.current.offsetWidth,this.h=()=>this.i.current.offsetHeight,this.i=s.default.createRef(),this.state={path:""},this.o=0,this.l=0,this.u=0,this.p=this.p.bind(this)}m(){const t=[];for(let i=0;i<=Math.max(this.props.points,1);i++){const s=100,e=i/this.props.points*this.t(),h=(this.u+(i+i%this.props.points))*this.props.speed*s,n=Math.sin(h/s)*this.props.amplitude,o=Math.sin(h/s)*n+this.props.height;t.push({x:e,y:o})}return t}$(t){let i=`M ${t[0].x} ${t[0].y}`;const s={x:(t[1].x-t[0].x)/2,y:t[1].y-t[0].y+t[0].y+(t[1].y-t[0].y)},e=(t,i)=>` C ${t.x} ${t.y} ${t.x} ${t.y} ${i.x} ${i.y}`;i+=e(s,t[1]);let h=s;for(let s=1;s<t.length-1;s++)h={x:t[s].x-h.x+t[s].x,y:t[s].y-h.y+t[s].y},i+=e(h,t[s+1]);return i+=` L ${this.t()} ${this.h()}`,i+=` L 0 ${this.h()} Z`,i}v(){this.setState({path:this.$(this.m())})}M(){if(!this.props.paused){const t=new Date;this.l+=t-this.o,this.o=t}this.u=this.l*Math.PI/1e3,this.v()}p(){this.M(),this._&&this.j()}j(){this._=window.requestAnimationFrame(this.p),this.o=new Date}componentDidMount(){this._||this.j()}componentWillUnmount(){window.cancelAnimationFrame(this._),this._=0}render(){const{style:t,className:i,fill:e,paused:h,children:n,id:o,svgId:d,svgPathId:l,d:a,ref:r,height:u,amplitude:f,speed:c,points:p,...w}=this.props;/*#__PURE__*/return s.default.createElement("div",{style:{width:"100%",display:"inline-block",...t},className:i,id:o,ref:this.i},/*#__PURE__*/s.default.createElement("svg",{width:"100%",height:"100%",version:"1.1",xmlns:"http://www.w3.org/2000/svg",id:d},n,/*#__PURE__*/s.default.createElement("path",Object.assign({},{d:this.state.path,fill:e,id:l},w))))}};const h={fill:"#fff",paused:!1,height:20,amplitude:20,speed:.15,points:3},n=t=>{let{options:i,...n}=t;/*#__PURE__*/return s.default.createElement(e,Object.assign({},h,i,n))};return n.displayName="Wave",n});

View File

@@ -0,0 +1 @@
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i(require("react")):"function"==typeof define&&define.amd?define(["react"],i):(t||self).reactWavify=i(t.react)}(this,function(t){function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var s=/*#__PURE__*/i(t),e=class extends t.Component{constructor(t){super(t),this.t=()=>this.i.current.offsetWidth,this.h=()=>this.i.current.offsetHeight,this.i=s.default.createRef(),this.state={path:""},this.o=0,this.l=0,this.u=0,this.p=this.p.bind(this)}m(){const t=[];for(let i=0;i<=Math.max(this.props.points,1);i++){const s=100,e=i/this.props.points*this.t(),h=(this.u+(i+i%this.props.points))*this.props.speed*s,n=Math.sin(h/s)*this.props.amplitude,o=Math.sin(h/s)*n+this.props.height;t.push({x:e,y:o})}return t}$(t){let i=`M ${t[0].x} ${t[0].y}`;const s={x:(t[1].x-t[0].x)/2,y:t[1].y-t[0].y+t[0].y+(t[1].y-t[0].y)},e=(t,i)=>` C ${t.x} ${t.y} ${t.x} ${t.y} ${i.x} ${i.y}`;i+=e(s,t[1]);let h=s;for(let s=1;s<t.length-1;s++)h={x:t[s].x-h.x+t[s].x,y:t[s].y-h.y+t[s].y},i+=e(h,t[s+1]);return i+=` L ${this.t()} ${this.h()}`,i+=` L 0 ${this.h()} Z`,i}v(){this.setState({path:this.$(this.m())})}M(){if(!this.props.paused){const t=new Date;this.l+=t-this.o,this.o=t}this.u=this.l*Math.PI/1e3,this.v()}p(){this.M(),this._&&this.j()}j(){this._=window.requestAnimationFrame(this.p),this.o=new Date}componentDidMount(){this._||this.j()}componentWillUnmount(){window.cancelAnimationFrame(this._),this._=0}render(){const{style:t,className:i,fill:e,paused:h,children:n,id:o,svgId:d,svgPathId:l,d:a,ref:r,height:u,amplitude:f,speed:c,points:p,...w}=this.props;/*#__PURE__*/return s.default.createElement("div",{style:{width:"100%",display:"inline-block",...t},className:i,id:o,ref:this.i},/*#__PURE__*/s.default.createElement("svg",{width:"100%",height:"100%",version:"1.1",xmlns:"http://www.w3.org/2000/svg",id:d},n,/*#__PURE__*/s.default.createElement("path",Object.assign({},{d:this.state.path,fill:e,id:l},w))))}};const h={fill:"#fff",paused:!1,height:20,amplitude:20,speed:.15,points:3};return t=>{let{options:i,...n}=t;/*#__PURE__*/return s.default.createElement(e,Object.assign({},h,i,n))}});

View File

@@ -0,0 +1 @@
import t,{Component as s}from"react";var i=class extends s{constructor(s){super(s),this.t=()=>this.i.current.offsetWidth,this.h=()=>this.i.current.offsetHeight,this.i=t.createRef(),this.state={path:""},this.l=0,this.o=0,this.p=0,this.u=this.u.bind(this)}m(){const t=[];for(let s=0;s<=Math.max(this.props.points,1);s++){const i=100,h=s/this.props.points*this.t(),e=(this.p+(s+s%this.props.points))*this.props.speed*i,n=Math.sin(e/i)*this.props.amplitude,a=Math.sin(e/i)*n+this.props.height;t.push({x:h,y:a})}return t}$(t){let s=`M ${t[0].x} ${t[0].y}`;const i={x:(t[1].x-t[0].x)/2,y:t[1].y-t[0].y+t[0].y+(t[1].y-t[0].y)},h=(t,s)=>` C ${t.x} ${t.y} ${t.x} ${t.y} ${s.x} ${s.y}`;s+=h(i,t[1]);let e=i;for(let i=1;i<t.length-1;i++)e={x:t[i].x-e.x+t[i].x,y:t[i].y-e.y+t[i].y},s+=h(e,t[i+1]);return s+=` L ${this.t()} ${this.h()}`,s+=` L 0 ${this.h()} Z`,s}v(){this.setState({path:this.$(this.m())})}M(){if(!this.props.paused){const t=new Date;this.o+=t-this.l,this.l=t}this.p=this.o*Math.PI/1e3,this.v()}u(){this.M(),this._&&this.D()}D(){this._=window.requestAnimationFrame(this.u),this.l=new Date}componentDidMount(){this._||this.D()}componentWillUnmount(){window.cancelAnimationFrame(this._),this._=0}render(){const{style:s,className:i,fill:h,paused:e,children:n,id:a,svgId:d,svgPathId:l,d:o,ref:r,height:c,amplitude:p,speed:u,points:w,...f}=this.props;/*#__PURE__*/return t.createElement("div",{style:{width:"100%",display:"inline-block",...s},className:i,id:a,ref:this.i},/*#__PURE__*/t.createElement("svg",{width:"100%",height:"100%",version:"1.1",xmlns:"http://www.w3.org/2000/svg",id:d},n,/*#__PURE__*/t.createElement("path",Object.assign({},{d:this.state.path,fill:h,id:l},f))))}};const h={fill:"#fff",paused:!1,height:20,amplitude:20,speed:.15,points:3},e=s=>{let{options:e,...n}=s;/*#__PURE__*/return t.createElement(i,Object.assign({},h,e,n))};e.displayName="Wave";export{e as default};

View File

@@ -0,0 +1 @@
import t,{Component as s}from"react";var i=class extends s{constructor(s){super(s),this.t=()=>this.i.current.offsetWidth,this.h=()=>this.i.current.offsetHeight,this.i=t.createRef(),this.state={path:""},this.l=0,this.o=0,this.p=0,this.u=this.u.bind(this)}m(){const t=[];for(let s=0;s<=Math.max(this.props.points,1);s++){const i=100,h=s/this.props.points*this.t(),e=(this.p+(s+s%this.props.points))*this.props.speed*i,n=Math.sin(e/i)*this.props.amplitude,a=Math.sin(e/i)*n+this.props.height;t.push({x:h,y:a})}return t}$(t){let s=`M ${t[0].x} ${t[0].y}`;const i={x:(t[1].x-t[0].x)/2,y:t[1].y-t[0].y+t[0].y+(t[1].y-t[0].y)},h=(t,s)=>` C ${t.x} ${t.y} ${t.x} ${t.y} ${s.x} ${s.y}`;s+=h(i,t[1]);let e=i;for(let i=1;i<t.length-1;i++)e={x:t[i].x-e.x+t[i].x,y:t[i].y-e.y+t[i].y},s+=h(e,t[i+1]);return s+=` L ${this.t()} ${this.h()}`,s+=` L 0 ${this.h()} Z`,s}v(){this.setState({path:this.$(this.m())})}M(){if(!this.props.paused){const t=new Date;this.o+=t-this.l,this.l=t}this.p=this.o*Math.PI/1e3,this.v()}u(){this.M(),this._&&this.D()}D(){this._=window.requestAnimationFrame(this.u),this.l=new Date}componentDidMount(){this._||this.D()}componentWillUnmount(){window.cancelAnimationFrame(this._),this._=0}render(){const{style:s,className:i,fill:h,paused:e,children:n,id:a,svgId:d,svgPathId:l,d:o,ref:r,height:c,amplitude:p,speed:u,points:w,...f}=this.props;/*#__PURE__*/return t.createElement("div",{style:{width:"100%",display:"inline-block",...s},className:i,id:a,ref:this.i},/*#__PURE__*/t.createElement("svg",{width:"100%",height:"100%",version:"1.1",xmlns:"http://www.w3.org/2000/svg",id:d},n,/*#__PURE__*/t.createElement("path",Object.assign({},{d:this.state.path,fill:h,id:l},f))))}};const h={fill:"#fff",paused:!1,height:20,amplitude:20,speed:.15,points:3},e=s=>{let{options:e,...n}=s;/*#__PURE__*/return t.createElement(i,Object.assign({},h,e,n))};export{e as default};

59
frontend/node_modules/react-wavify/package.json generated vendored Normal file
View File

@@ -0,0 +1,59 @@
{
"name": "react-wavify",
"version": "1.11.1",
"description": "Animated wave component for React",
"main": "lib/index.js",
"module": "lib/index.module.js",
"sideEffects": false,
"src": "src/index.js",
"types": "lib/index.d.ts",
"files": [
"lib",
"License.txt",
"package.json",
"README.md"
],
"repository": {
"type": "git",
"url": "git+https://github.com/woofers/react-wavify.git"
},
"keywords": [
"react",
"reactjs",
"component",
"svg",
"animation",
"wave"
],
"browserslist": [
"defaults",
"not IE 11"
],
"author": "Jaxson Van Doorn <jaxson.vandoorn@gmail.com>",
"license": "MIT",
"bugs": {
"url": "https://github.com/woofers/react-wavify/issues"
},
"homepage": "https://github.com/woofers/react-wavify#readme",
"peerDependencies": {
"react": "^0.13.0 || ^0.14.0 || >=15"
},
"devDependencies": {
"microbundle": "^0.15.1",
"rimraf": "^5.0.7"
},
"dependencies": {},
"scripts": {
"start": "pnpm watch",
"build:module": "microbundle --no-pkg-main --no-sourcemap --no-generateTypes --jsx React.createElement --define __isDev__=false -i src/index.js -o lib/react-wavify.module.js -f es",
"build:umd": "microbundle --no-pkg-main --no-sourcemap --no-generateTypes --jsx React.createElement --define __isDev__=false -i src/index.js -o lib/react-wavify.js -f umd",
"build:dev:module": "microbundle --no-pkg-main --no-sourcemap --no-generateTypes --jsx React.createElement --define __isDev__=true -i src/index.js -o lib/react-wavify.module.dev.js -f es",
"build:dev:umd": "microbundle --no-pkg-main --no-sourcemap --no-generateTypes --jsx React.createElement --define __isDev__=true -i src/index.js -o lib/react-wavify.dev.js -f umd",
"build:types": "cp src/index.d.ts lib/index.d.ts",
"clean": "rimraf lib/react-wavify.dev.js lib/react-wavify.js lib/react-wavify.module.dev.js lib/react-wavify.module.js lib/index.d.ts",
"build": "pnpm build:dev:module && yarn build:dev:umd && yarn build:module && yarn build:umd && yarn build:types",
"watch": "rollup -c --watch",
"test": "echo \"No tests \" && exit 0",
"package": "pnpm publish --no-git-checks --access public"
}
}