UNPKG

kinetic-slider

Version:

A WebGL-powered kinetic slider component using PIXI.js

61 lines (57 loc) 1.96 kB
'use strict'; var pixiFilters = require('pixi-filters'); var ShaderResourceManager = require('../managers/ShaderResourceManager.cjs'); function createPixelateFilter(config) { const shaderManager = ShaderResourceManager.ShaderResourceManager.getInstance(); let size = config.size || 10; if (config.sizeX !== void 0 || config.sizeY !== void 0) { const x = config.sizeX ?? 10; const y = config.sizeY ?? 10; size = [x, y]; } const shaderKey = "pixelate-filter"; const filter = new pixiFilters.PixelateFilter(size); try { shaderManager.registerFilter(filter, shaderKey); } catch (error) { console.warn("Error registering pixelate filter with shader manager:", error); } const updateIntensity = (intensity) => { const normalizedIntensity = Math.max(0, Math.min(10, intensity)); const pixelSize = 1 + normalizedIntensity * 2.9; if (config.primaryProperty === "sizeX") { filter.sizeX = pixelSize; } else if (config.primaryProperty === "sizeY") { filter.sizeY = pixelSize; } else { filter.size = pixelSize; } }; updateIntensity(config.intensity); const reset = () => { if (config.sizeX !== void 0 || config.sizeY !== void 0) { const x = config.sizeX !== void 0 ? config.sizeX : 10; const y = config.sizeY !== void 0 ? config.sizeY : 10; filter.sizeX = x; filter.sizeY = y; } else if (config.size !== void 0) { filter.size = config.size; } else { filter.size = 1; } if (config.intensity !== void 0) { updateIntensity(config.intensity); } }; const dispose = () => { try { shaderManager.releaseFilter(filter, shaderKey); } catch (error) { console.warn("Error releasing pixelate filter shader:", error); } filter.destroy(); }; return { filter, updateIntensity, reset, dispose }; } exports.createPixelateFilter = createPixelateFilter; //# sourceMappingURL=pixelateFilter.cjs.map