UNPKG

lightswind

Version:

A collection of beautifully crafted React Components, Blocks & Templates for Modern Developers. Create stunning web applications effortlessly by using our 160+ professional and animated react components.

157 lines 5.86 kB
"use strict"; "use client"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.SparkleParticles = SparkleParticles; const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); const react_2 = __importStar(require("@tsparticles/react")); const slim_1 = require("@tsparticles/slim"); function SparkleParticles({ className, maxParticleSize = 1.2, minParticleSize = null, baseDensity = 800, maxSpeed = 1.5, minMoveSpeed = null, maxOpacity = 1, customDirection = "", opacityAnimationSpeed = 3, minParticleOpacity = null, particleColor, enableParallax = false, enableHoverGrab = false, backgroundColor = "transparent", userOptions = {}, zIndexLevel = 1, clickEffect = true, hoverMode = "grab", particleCount = 4, particleShape = "circle", enableCollisions = false, }) { const [isEngineReady, setIsEngineReady] = (0, react_1.useState)(false); const [activeColor, setActiveColor] = (0, react_1.useState)("#000000"); const instanceId = (0, react_1.useId)(); (0, react_1.useEffect)(() => { const resolveThemeColor = () => { if (particleColor) return particleColor; return document.documentElement.classList.contains("dark") ? "#ffffff" : "#000000"; }; setActiveColor(resolveThemeColor()); (0, react_2.initParticlesEngine)(async (engine) => { await (0, slim_1.loadSlim)(engine); }).then(() => { setIsEngineReady(true); }); const observer = new MutationObserver(() => { setActiveColor(resolveThemeColor()); }); observer.observe(document.documentElement, { attributes: true, attributeFilter: ["class"], }); return () => observer.disconnect(); }, [particleColor]); const mergedOptions = { background: { color: { value: backgroundColor, }, }, fullScreen: { enable: false, zIndex: zIndexLevel, }, fpsLimit: 300, interactivity: { events: { onClick: { enable: clickEffect, mode: "push", }, onHover: { enable: enableHoverGrab, mode: hoverMode, parallax: { enable: enableParallax, force: 60, smooth: 10, }, }, resize: { enable: true, }, }, modes: { push: { quantity: particleCount }, repulse: { distance: 200, duration: 0.4, }, }, }, particles: { color: { value: activeColor, }, shape: { type: particleShape, }, move: { enable: true, direction: customDirection === "" ? "none" : customDirection, // Type assertion for customDirection speed: { min: minMoveSpeed || maxSpeed / 130, max: maxSpeed, }, straight: true, }, collisions: { enable: enableCollisions, mode: "bounce", bounce: { horizontal: { value: 1 }, vertical: { value: 1 }, }, }, number: { value: baseDensity, }, opacity: { value: { min: minParticleOpacity || maxOpacity / 10, max: maxOpacity, }, animation: { enable: true, sync: false, speed: opacityAnimationSpeed, }, }, size: { value: { min: minParticleSize || maxParticleSize / 1.5, max: maxParticleSize, }, }, }, detectRetina: true, ...userOptions, }; return (isEngineReady && ((0, jsx_runtime_1.jsx)(react_2.default, { id: instanceId, options: mergedOptions, className: className }))); } //# sourceMappingURL=sparkle-particles.js.map