{"version":3,"file":"ripple.cjs","sources":["../../../../../src/elements/oscilloscope/renderers/ripple.js"],"sourcesContent":["import paper from '@chnak/paper';\n\n/**\n * 涟漪样式默认配置\n */\nexport const defaultConfig = {\n  rippleCount: 5, // 涟漪数量\n  rippleSpeed: 1.0, // 涟漪速度\n};\n\n/**\n * 涟漪波形渲染器（水波纹效果）\n * @param {Object} element - 元素实例\n * @param {Array} data - 波形数据\n * @param {number} x - X坐标\n * @param {number} y - Y坐标\n * @param {number} width - 宽度\n * @param {number} height - 高度\n * @param {number} time - 当前时间\n * @param {Object} config - 配置对象（合并了默认配置和用户配置）\n */\nexport default function renderRipple(element, data, x, y, width, height, time, config = {}) {\n  // 合并默认配置\n  const cfg = { ...defaultConfig, ...config };\n  \n  const centerX = x + width / 2;\n  const centerY = y + height / 2;\n  const maxRadius = Math.min(width, height) / 2;\n  \n  // 计算平均振幅\n  let avgAmplitude = 0;\n  for (let i = 0; i < data.length; i++) {\n    avgAmplitude += Math.abs(data[i]);\n  }\n  avgAmplitude = (avgAmplitude / data.length) * element.sensitivity;\n  \n  // 绘制多个涟漪圈\n  for (let i = 0; i < cfg.rippleCount; i++) {\n    const rippleProgress = (time * cfg.rippleSpeed + i / cfg.rippleCount) % 1;\n    const radius = maxRadius * rippleProgress;\n    const alpha = 1 - rippleProgress;\n    \n    if (alpha > 0) {\n      const circle = new paper.Path.Circle({\n        center: new paper.Point(centerX, centerY),\n        radius: radius + avgAmplitude * maxRadius * 0.3,\n      });\n      \n      circle.strokeColor = element.waveColor;\n      circle.strokeWidth = 3;\n      circle.strokeColor.alpha = alpha * 0.8;\n      circle.fillColor = 'transparent';\n    }\n  }\n  \n  // 中心点\n  const centerCircle = new paper.Path.Circle({\n    center: new paper.Point(centerX, centerY),\n    radius: 5 + avgAmplitude * 20,\n  });\n  centerCircle.fillColor = element.waveColor;\n  centerCircle.fillColor.alpha = 0.8;\n}\n\nrenderRipple.style = 'ripple';\n\n"],"names":[],"mappings":";;;;;;AAEA;AACA;AACA;AACY,MAAC,aAAa,GAAG;AAC7B,EAAE,WAAW,EAAE,CAAC;AAChB,EAAE,WAAW,EAAE,GAAG;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE;AAC5F;AACA,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE;AAC7C;AACA,EAAE,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;AAC/B,EAAE,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC;AAChC,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;AAC/C;AACA;AACA,EAAE,IAAI,YAAY,GAAG,CAAC;AACtB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,IAAI,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrC,EAAE;AACF,EAAE,YAAY,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,WAAW;AACnE;AACA;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE;AAC5C,IAAI,MAAM,cAAc,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,IAAI,CAAC;AAC7E,IAAI,MAAM,MAAM,GAAG,SAAS,GAAG,cAAc;AAC7C,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,cAAc;AACpC;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AACnB,MAAM,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3C,QAAQ,MAAM,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;AACjD,QAAQ,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,GAAG;AACvD,OAAO,CAAC;AACR;AACA,MAAM,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS;AAC5C,MAAM,MAAM,CAAC,WAAW,GAAG,CAAC;AAC5B,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG;AAC5C,MAAM,MAAM,CAAC,SAAS,GAAG,aAAa;AACtC,IAAI;AACJ,EAAE;AACF;AACA;AACA,EAAE,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,IAAI,MAAM,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7C,IAAI,MAAM,EAAE,CAAC,GAAG,YAAY,GAAG,EAAE;AACjC,GAAG,CAAC;AACJ,EAAE,YAAY,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;AAC5C,EAAE,YAAY,CAAC,SAAS,CAAC,KAAK,GAAG,GAAG;AACpC;;AAEA,YAAY,CAAC,KAAK,GAAG,QAAQ;;;;;"}