UNPKG

kinetic-slider

Version:

A WebGL-powered kinetic slider component using PIXI.js

73 lines (69 loc) 2.77 kB
'use strict'; var pixiFilters = require('pixi-filters'); var ShaderResourceManager = require('../managers/ShaderResourceManager.cjs'); function createBevelFilter(config) { const shaderManager = ShaderResourceManager.ShaderResourceManager.getInstance(); const lightColorKey = config.lightColor ? config.lightColor.toString(16) : "ffffff"; const shadowColorKey = config.shadowColor ? config.shadowColor.toString(16) : "000000"; const shaderKey = `bevel-filter-${config.rotation || 45}-${config.thickness || 2}-${lightColorKey}-${shadowColorKey}`; const options = { rotation: config.rotation ?? 45, thickness: config.thickness ?? 2, lightColor: config.lightColor ?? 16777215, lightAlpha: config.lightAlpha ?? 0.7, shadowColor: config.shadowColor ?? 0, shadowAlpha: config.shadowAlpha ?? 0.7 }; const filter = new pixiFilters.BevelFilter(options); try { shaderManager.registerFilter(filter, shaderKey); } catch (error) { console.warn("Error registering bevel filter with shader manager:", error); } const updateIntensity = (intensity) => { const normalizedIntensity = Math.max(0, Math.min(10, intensity)); if (config.primaryProperty) { switch (config.primaryProperty) { case "thickness": filter.thickness = normalizedIntensity * 2; break; case "lightAlpha": filter.lightAlpha = normalizedIntensity / 10; break; case "shadowAlpha": filter.shadowAlpha = normalizedIntensity / 10; break; case "rotation": filter.rotation = normalizedIntensity * 36; break; default: filter.thickness = normalizedIntensity * 2; } } else { filter.thickness = normalizedIntensity * 2; } }; updateIntensity(config.intensity); const reset = () => { filter.rotation = config.rotation !== void 0 ? config.rotation : 45; filter.thickness = config.thickness !== void 0 ? config.thickness : 2; filter.lightColor = config.lightColor !== void 0 ? config.lightColor : 16777215; filter.lightAlpha = config.lightAlpha !== void 0 ? config.lightAlpha : 0.7; filter.shadowColor = config.shadowColor !== void 0 ? config.shadowColor : 0; filter.shadowAlpha = config.shadowAlpha !== void 0 ? config.shadowAlpha : 0.7; if (config.intensity !== void 0) { updateIntensity(config.intensity); } }; const dispose = () => { try { shaderManager.releaseFilter(filter, shaderKey); } catch (error) { console.warn("Error releasing bevel filter shader:", error); } filter.destroy(); }; return { filter, updateIntensity, reset, dispose }; } exports.createBevelFilter = createBevelFilter; //# sourceMappingURL=bevelFilter.cjs.map