{"version":3,"file":"blurFilter.cjs","sources":["../../../src/filters/blurFilter.ts"],"sourcesContent":["import { BlurFilter } from 'pixi.js';\nimport { type BlurFilterConfig, type FilterResult } from './types';\nimport { ShaderResourceManager } from '../managers/ShaderResourceManager';\n\n// Get the shader manager singleton\nconst shaderManager = ShaderResourceManager.getInstance();\n\n/**\n * Creates a Blur filter that applies a Gaussian blur to an object\n *\n * The strength of the blur can be set for the x-axis and y-axis separately.\n * This implementation uses shader pooling for better performance.\n *\n * @param config - Configuration for the Blur filter\n * @returns FilterResult with the filter instance and control functions\n */\nexport function createBlurFilter(config: BlurFilterConfig): FilterResult {\n    // Create the filter with options\n    const filter = new BlurFilter({\n        strength: config.intensity ? config.intensity * 10 : 8,\n        strengthX: config.strengthX ? config.strengthX * 10 : undefined,\n        strengthY: config.strengthY ? config.strengthY * 10 : undefined,\n        quality: config.quality ?? 4,\n        kernelSize: config.kernelSize ?? 5,\n        resolution: config.resolution ?? 1\n    });\n\n    // Set any additional properties if provided\n    if (config.strengthX !== undefined) {\n        filter.strengthX = config.strengthX;\n    }\n\n    if (config.strengthY !== undefined) {\n        filter.strengthY = config.strengthY;\n    }\n\n    if (config.repeatEdgePixels !== undefined) {\n        filter.repeatEdgePixels = config.repeatEdgePixels;\n    }\n\n    // Generate a unique key for this filter configuration\n    const shaderKey = `blur-${config.quality || 4}-${config.kernelSize || 5}-${config.resolution || 1}`;\n\n    // Register with shader manager for tracking\n    try {\n        shaderManager.getShaderProgram(shaderKey, filter);\n    } catch (error) {\n        console.warn('Failed to register blur filter with shader manager:', error);\n    }\n\n    /**\n     * Update the filter's blur intensity\n     *\n     * @param intensity - New intensity value (maps to blur strength)\n     */\n    const updateIntensity = (intensity: number): void => {\n        // Map intensity to strength (0-10 scale to appropriate blur strength)\n        // Blur strength can range from 0-100, so we multiply intensity by 10.\n        filter.strength = intensity * 10;\n        filter.strengthX = config.strengthX ? config.strengthX * 10 : filter.strength;\n        filter.strengthY = config.strengthY ? config.strengthY * 10 : filter.strength;\n    };\n\n    // Set initial intensity\n    updateIntensity(config.intensity);\n\n    /**\n     * Reset the filter to default state\n     */\n    const reset = (): void => {\n        filter.strength = 0;\n        filter.strengthX = 0;\n        filter.strengthY = 0;\n    };\n\n    /**\n     * Cleanup function to release shader when filter is no longer used\n     */\n    const dispose = (): void => {\n        try {\n            shaderManager.releaseShader(shaderKey);\n        } catch (error) {\n            console.warn('Failed to release blur filter shader:', error);\n        }\n\n        if (filter.destroy) {\n            filter.destroy();\n        }\n    };\n\n    // Create a properly typed FilterResult object\n    const result: FilterResult = {\n        filter,\n        updateIntensity,\n        reset,\n        dispose\n    };\n    return result;\n}"],"names":["ShaderResourceManager","BlurFilter"],"mappings":";;;;;AAKA,MAAM,aAAA,GAAgBA,4CAAsB,WAAY,EAAA;AAWjD,SAAS,iBAAiB,MAAwC,EAAA;AAErE,EAAM,MAAA,MAAA,GAAS,IAAIC,kBAAW,CAAA;AAAA,IAC1B,QAAU,EAAA,MAAA,CAAO,SAAY,GAAA,MAAA,CAAO,YAAY,EAAK,GAAA,CAAA;AAAA,IACrD,SAAW,EAAA,MAAA,CAAO,SAAY,GAAA,MAAA,CAAO,YAAY,EAAK,GAAA,MAAA;AAAA,IACtD,SAAW,EAAA,MAAA,CAAO,SAAY,GAAA,MAAA,CAAO,YAAY,EAAK,GAAA,MAAA;AAAA,IACtD,OAAA,EAAS,OAAO,OAAW,IAAA,CAAA;AAAA,IAC3B,UAAA,EAAY,OAAO,UAAc,IAAA,CAAA;AAAA,IACjC,UAAA,EAAY,OAAO,UAAc,IAAA;AAAA,GACpC,CAAA;AAGD,EAAI,IAAA,MAAA,CAAO,cAAc,MAAW,EAAA;AAChC,IAAA,MAAA,CAAO,YAAY,MAAO,CAAA,SAAA;AAAA;AAG9B,EAAI,IAAA,MAAA,CAAO,cAAc,MAAW,EAAA;AAChC,IAAA,MAAA,CAAO,YAAY,MAAO,CAAA,SAAA;AAAA;AAG9B,EAAI,IAAA,MAAA,CAAO,qBAAqB,MAAW,EAAA;AACvC,IAAA,MAAA,CAAO,mBAAmB,MAAO,CAAA,gBAAA;AAAA;AAIrC,EAAA,MAAM,SAAY,GAAA,CAAA,KAAA,EAAQ,MAAO,CAAA,OAAA,IAAW,CAAC,CAAA,CAAA,EAAI,MAAO,CAAA,UAAA,IAAc,CAAC,CAAA,CAAA,EAAI,MAAO,CAAA,UAAA,IAAc,CAAC,CAAA,CAAA;AAGjG,EAAI,IAAA;AACA,IAAc,aAAA,CAAA,gBAAA,CAAiB,WAAW,MAAM,CAAA;AAAA,WAC3C,KAAO,EAAA;AACZ,IAAQ,OAAA,CAAA,IAAA,CAAK,uDAAuD,KAAK,CAAA;AAAA;AAQ7E,EAAM,MAAA,eAAA,GAAkB,CAAC,SAA4B,KAAA;AAGjD,IAAA,MAAA,CAAO,WAAW,SAAY,GAAA,EAAA;AAC9B,IAAA,MAAA,CAAO,YAAY,MAAO,CAAA,SAAA,GAAY,MAAO,CAAA,SAAA,GAAY,KAAK,MAAO,CAAA,QAAA;AACrE,IAAA,MAAA,CAAO,YAAY,MAAO,CAAA,SAAA,GAAY,MAAO,CAAA,SAAA,GAAY,KAAK,MAAO,CAAA,QAAA;AAAA,GACzE;AAGA,EAAA,eAAA,CAAgB,OAAO,SAAS,CAAA;AAKhC,EAAA,MAAM,QAAQ,MAAY;AACtB,IAAA,MAAA,CAAO,QAAW,GAAA,CAAA;AAClB,IAAA,MAAA,CAAO,SAAY,GAAA,CAAA;AACnB,IAAA,MAAA,CAAO,SAAY,GAAA,CAAA;AAAA,GACvB;AAKA,EAAA,MAAM,UAAU,MAAY;AACxB,IAAI,IAAA;AACA,MAAA,aAAA,CAAc,cAAc,SAAS,CAAA;AAAA,aAChC,KAAO,EAAA;AACZ,MAAQ,OAAA,CAAA,IAAA,CAAK,yCAAyC,KAAK,CAAA;AAAA;AAG/D,IAAA,IAAI,OAAO,OAAS,EAAA;AAChB,MAAA,MAAA,CAAO,OAAQ,EAAA;AAAA;AACnB,GACJ;AAGA,EAAA,MAAM,MAAuB,GAAA;AAAA,IACzB,MAAA;AAAA,IACA,eAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACJ;AACA,EAAO,OAAA,MAAA;AACX;;;;"}