UNPKG

kinetic-slider

Version:

A WebGL-powered kinetic slider component using PIXI.js

67 lines (63 loc) 2.39 kB
'use strict'; var pixiFilters = require('pixi-filters'); var ShaderResourceManager = require('../managers/ShaderResourceManager.cjs'); function createDotFilter(config) { const shaderManager = ShaderResourceManager.ShaderResourceManager.getInstance(); const options = {}; if (config.angle !== void 0) options.angle = config.angle; if (config.scale !== void 0) options.scale = config.scale; if (config.grayscale !== void 0) options.grayscale = config.grayscale; const grayscaleKey = config.grayscale !== void 0 ? config.grayscale.toString() : "true"; const shaderKey = `dot-filter-a${options.angle || 5}-s${options.scale || 1}-g${grayscaleKey}`; console.log("Creating DotFilter with options:", options); const filter = new pixiFilters.DotFilter(options); try { shaderManager.registerFilter(filter, shaderKey); } catch (error) { console.warn("Error registering dot filter with shader manager:", error); } if (config.grayscale !== void 0) { filter.grayscale = config.grayscale; console.log("DotFilter grayscale set to:", filter.grayscale); } const updateIntensity = (intensity) => { const normalizedIntensity = Math.max(0, Math.min(10, intensity)); if (config.primaryProperty) { switch (config.primaryProperty) { case "angle": filter.angle = 1 + normalizedIntensity; break; case "scale": filter.scale = 0.5 + normalizedIntensity / 2; break; default: filter.angle = 1 + normalizedIntensity; } } else { filter.angle = 1 + normalizedIntensity; } if (config.grayscale !== void 0) { filter.grayscale = config.grayscale; } }; updateIntensity(config.intensity); const reset = () => { filter.angle = config.angle !== void 0 ? config.angle : 5; filter.scale = config.scale !== void 0 ? config.scale : 1; filter.grayscale = config.grayscale !== void 0 ? config.grayscale : true; if (config.intensity !== void 0) { updateIntensity(config.intensity); } }; const dispose = () => { try { shaderManager.releaseFilter(filter, shaderKey); } catch (error) { console.warn("Error releasing dot filter shader:", error); } filter.destroy(); }; return { filter, updateIntensity, reset, dispose }; } exports.createDotFilter = createDotFilter; //# sourceMappingURL=dotFilter.cjs.map