{"version":3,"file":"prod/js/6732.a09e210b.chunk.js","mappings":"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","sources":["../node_modules/react-particles/esm/Utils.js","../node_modules/react-particles/esm/Particles.js","../node_modules/react-particles/esm/index.js"],"sourcesContent":["const isObject = (val) => typeof val === \"object\" && val !== null;\nexport function deepCompare(obj1, obj2, excludeKeyFn = () => false) {\n if (!isObject(obj1) || !isObject(obj2)) {\n return obj1 === obj2;\n }\n const keys1 = Object.keys(obj1).filter(key => !excludeKeyFn(key)), keys2 = Object.keys(obj2).filter(key => !excludeKeyFn(key));\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n const value1 = obj1[key], value2 = obj2[key];\n if (isObject(value1) && isObject(value2)) {\n if (value1 === obj2 && value2 === obj1) {\n continue;\n }\n if (!deepCompare(value1, value2, excludeKeyFn)) {\n return false;\n }\n }\n else if (Array.isArray(value1) && Array.isArray(value2)) {\n if (!deepCompareArrays(value1, value2, excludeKeyFn)) {\n return false;\n }\n }\n else if (value1 !== value2) {\n return false;\n }\n }\n return true;\n}\nfunction deepCompareArrays(arr1, arr2, excludeKeyFn) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0; i < arr1.length; i++) {\n const val1 = arr1[i], val2 = arr2[i];\n if (Array.isArray(val1) && Array.isArray(val2)) {\n if (!deepCompareArrays(val1, val2, excludeKeyFn)) {\n return false;\n }\n }\n else if (isObject(val1) && isObject(val2)) {\n if (!deepCompare(val1, val2, excludeKeyFn)) {\n return false;\n }\n }\n else if (val1 !== val2) {\n return false;\n }\n }\n return true;\n}\n","import React, { Component } from \"react\";\nimport { tsParticles } from \"tsparticles-engine\";\nimport { deepCompare } from \"./Utils\";\nconst defaultId = \"tsparticles\";\nclass Particles extends Component {\n constructor(props) {\n super(props);\n this.state = {\n init: false,\n library: undefined,\n };\n }\n destroy() {\n if (!this.state.library) {\n return;\n }\n this.state.library.destroy();\n this.setState({\n library: undefined,\n });\n }\n shouldComponentUpdate(nextProps) {\n const nextOptions = nextProps.options ?? nextProps.params, currentOptions = this.props.options ?? this.props.params;\n return (nextProps.url !== this.props.url ||\n nextProps.id !== this.props.id ||\n nextProps.canvasClassName !== this.props.canvasClassName ||\n nextProps.className !== this.props.className ||\n nextProps.height !== this.props.height ||\n nextProps.width !== this.props.width ||\n !deepCompare(nextProps.style, this.props.style) ||\n nextProps.init !== this.props.init ||\n nextProps.loaded !== this.props.loaded ||\n !deepCompare(nextOptions, currentOptions, key => key.startsWith(\"_\")));\n }\n componentDidUpdate() {\n this.refresh();\n }\n forceUpdate() {\n this.refresh().then(() => {\n super.forceUpdate();\n });\n }\n componentDidMount() {\n (async () => {\n if (this.props.init) {\n await this.props.init(tsParticles);\n }\n this.setState({\n init: true,\n }, async () => {\n await this.loadParticles();\n });\n })();\n }\n componentWillUnmount() {\n this.destroy();\n }\n render() {\n const { width, height, className, canvasClassName, id } = this.props;\n return (React.createElement(\"div\", { className: className, id: id },\n React.createElement(\"canvas\", { className: canvasClassName, style: {\n ...this.props.style,\n width,\n height,\n } })));\n }\n async refresh() {\n this.destroy();\n await this.loadParticles();\n }\n async loadParticles() {\n if (!this.state.init) {\n return;\n }\n const id = this.props.id ?? Particles.defaultProps.id ?? defaultId, container = await tsParticles.load({\n url: this.props.url,\n id,\n options: this.props.options ?? this.props.params,\n });\n if (this.props.container) {\n this.props.container.current = container;\n }\n this.setState({\n library: container,\n });\n if (this.props.loaded) {\n await this.props.loaded(container);\n }\n }\n}\nParticles.defaultProps = {\n width: \"100%\",\n height: \"100%\",\n options: {},\n style: {},\n url: undefined,\n id: defaultId,\n};\nexport default Particles;\n","import Particles from \"./Particles\";\nexport default Particles;\nexport { Particles };\n"],"names":["isObject","val","deepCompare","obj1","obj2","excludeKeyFn","keys1","Object","keys","filter","key","keys2","length","value1","value2","Array","isArray","deepCompareArrays","arr1","arr2","i","val1","val2","defaultId","Particles","Component","constructor","props","super","this","state","init","library","undefined","destroy","setState","shouldComponentUpdate","nextProps","nextOptions","options","params","currentOptions","url","id","canvasClassName","className","height","width","style","loaded","startsWith","componentDidUpdate","refresh","forceUpdate","then","componentDidMount","async","loadParticles","componentWillUnmount","render","defaultProps","container","load","current"],"sourceRoot":""}