{"version":3,"file":"kawaseBlurFilter.cjs","sources":["../../../src/filters/kawaseBlurFilter.ts"],"sourcesContent":["import { KawaseBlurFilter } from 'pixi-filters';\nimport { type KawaseBlurFilterConfig, type FilterResult } from './types';\nimport { ShaderResourceManager } from '../managers/ShaderResourceManager';\n\n/**\n * Creates a KawaseBlur filter that applies a faster blur algorithm\n *\n * The KawaseBlurFilter is a much faster alternative to Gaussian blur,\n * but with slightly different visual characteristics.\n * Uses shader pooling for better performance.\n *\n * @param config - Configuration for the KawaseBlur filter\n * @returns FilterResult with the filter instance and control functions\n */\nexport function createKawaseBlurFilter(config: KawaseBlurFilterConfig): FilterResult {\n    // Get shader manager instance\n    const shaderManager = ShaderResourceManager.getInstance();\n\n    // Create options object for the filter\n    const options: any = {};\n\n    // Apply configuration values if provided, otherwise use defaults\n    if (config.clamp !== undefined) options.clamp = config.clamp;\n    if (config.kernels !== undefined) options.kernels = config.kernels;\n    if (config.pixelSize !== undefined) options.pixelSize = config.pixelSize;\n    if (config.pixelSizeX !== undefined) options.pixelSizeX = config.pixelSizeX;\n    if (config.pixelSizeY !== undefined) options.pixelSizeY = config.pixelSizeY;\n    if (config.quality !== undefined) options.quality = config.quality;\n    if (config.strength !== undefined) options.strength = config.strength;\n\n    // Create a unique key for this filter configuration\n    const qualityStr = (options.quality || 3).toString();\n    const clampStr = options.clamp ? 'clamp' : 'noclamp';\n    const shaderKey = `kawase-blur-filter-${qualityStr}-${clampStr}`;\n\n    // Create the filter with options\n    const filter = new KawaseBlurFilter(options);\n\n    // Register filter with shader manager\n    try {\n        shaderManager.registerFilter(filter, shaderKey);\n    } catch (error) {\n        console.warn('Error registering kawase blur filter with shader manager:', error);\n    }\n\n    /**\n     * Update the filter's intensity based on the configuration\n     *\n     * @param intensity - New intensity value (0-10 scale)\n     */\n    const updateIntensity = (intensity: number): void => {\n        // Normalize intensity to a 0-10 scale\n        const normalizedIntensity = Math.max(0, Math.min(10, intensity));\n\n        // Determine which property to adjust based on config\n        if (config.primaryProperty) {\n            switch (config.primaryProperty) {\n                case 'strength':\n                    // Map 0-10 to 0-20 for strength (0 = no blur, 20 = very blurry)\n                    filter.strength = normalizedIntensity * 2;\n                    break;\n                case 'quality':\n                    // Map 0-10 to 1-10 for quality (higher = better quality but slower)\n                    filter.quality = Math.max(1, Math.round(normalizedIntensity));\n                    break;\n                case 'pixelSize':\n                    // Map 0-10 to 1-5 for pixelSize (impacts appearance of the blur)\n                    const pixelSize = 1 + (normalizedIntensity / 2.5);\n                    filter.pixelSize = { x: pixelSize, y: pixelSize };\n                    break;\n                default:\n                    // Default to adjusting strength\n                    filter.strength = normalizedIntensity * 2;\n            }\n        } else {\n            // Default behavior - adjust strength (most intuitive parameter)\n            filter.strength = normalizedIntensity * 2;\n        }\n    };\n\n    // Set initial intensity\n    updateIntensity(config.intensity);\n\n    /**\n     * Reset the filter to initial configuration values or defaults\n     */\n    const reset = (): void => {\n        // Reset kernels to config value or default\n        filter.kernels = config.kernels !== undefined ? config.kernels : [0];\n\n        // Reset pixelSize to config values or default\n        if (config.pixelSize !== undefined) {\n            filter.pixelSize = config.pixelSize;\n        } else if (config.pixelSizeX !== undefined || config.pixelSizeY !== undefined) {\n            // If individual components were provided\n            const x = config.pixelSizeX !== undefined ? config.pixelSizeX : 1;\n            const y = config.pixelSizeY !== undefined ? config.pixelSizeY : 1;\n            filter.pixelSize = { x, y };\n        } else {\n            // Default value\n            filter.pixelSize = { x: 1, y: 1 };\n        }\n\n        // Reset quality to config value or default\n        filter.quality = config.quality !== undefined ? config.quality : 3;\n\n        // Reset strength to config value or default\n        filter.strength = config.strength !== undefined ? config.strength : 4;\n\n        // If intensity was provided, use updateIntensity to reset properly\n        if (config.intensity !== undefined) {\n            updateIntensity(config.intensity);\n        }\n    };\n\n    /**\n     * Release any WebGL resources used by this filter\n     */\n    const dispose = (): void => {\n        try {\n            shaderManager.releaseFilter(filter, shaderKey);\n        } catch (error) {\n            console.warn('Error releasing kawase blur filter shader:', error);\n        }\n        filter.destroy();\n    };\n\n    return { filter, updateIntensity, reset, dispose };\n}"],"names":["ShaderResourceManager","KawaseBlurFilter"],"mappings":"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"}