{"version":3,"file":"spiral.cjs","sources":["../../../../../src/elements/oscilloscope/renderers/spiral.js"],"sourcesContent":["import paper from '@chnak/paper';\n\n/**\n * 螺旋样式默认配置\n */\nexport const defaultConfig = {\n  spiralTurns: 3, // 螺旋圈数\n  spiralRadius: 200, // 螺旋半径\n  particleColors: [ // 颜色数组（用于渐变）\n    '#ff0080', '#ff4080', '#ff8000', '#ffc000',\n    '#ffff00', '#80ff00', '#00ff80', '#00ffff',\n  ],\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 renderSpiral(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 - 20;\n  const pointCount = Math.min(data.length, 500);\n  \n  const path = new paper.Path();\n  path.strokeColor = element.waveColor;\n  path.strokeWidth = element.lineWidth;\n  \n  for (let i = 0; i < pointCount; i++) {\n    const progress = i / pointCount;\n    const angle = progress * Math.PI * 2 * cfg.spiralTurns;\n    const radius = maxRadius * progress * 0.8;\n    \n    const dataIndex = Math.floor(progress * data.length);\n    const amplitude = Math.abs(data[dataIndex]) * element.sensitivity;\n    const r = radius + amplitude * maxRadius * 0.2;\n    \n    const px = centerX + Math.cos(angle) * r;\n    const py = centerY + Math.sin(angle) * r;\n    \n    if (i === 0) {\n      path.moveTo(new paper.Point(px, py));\n    } else {\n      path.lineTo(new paper.Point(px, py));\n    }\n  }\n  \n  // 使用颜色数组的第一个颜色作为线条颜色\n  if (cfg.particleColors && cfg.particleColors.length > 0) {\n    path.strokeColor = cfg.particleColors[0];\n  }\n}\n\nrenderSpiral.style = 'spiral';\n\n"],"names":[],"mappings":";;;;;;AAEA;AACA;AACA;AACY,MAAC,aAAa,GAAG;AAC7B,EAAE,WAAW,EAAE,CAAC;AAChB,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,cAAc,EAAE;AAClB,IAAI,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;AAC9C,IAAI,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;AAC9C,GAAG;AACH;;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,GAAG,EAAE;AACpD,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;AAC/C;AACA,EAAE,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE;AAC/B,EAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS;AACtC,EAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS;AACtC;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;AACvC,IAAI,MAAM,QAAQ,GAAG,CAAC,GAAG,UAAU;AACnC,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW;AAC1D,IAAI,MAAM,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,GAAG;AAC7C;AACA,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;AACxD,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW;AACrE,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,GAAG;AAClD;AACA,IAAI,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5C,IAAI,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5C;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1C,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1C,IAAI;AACJ,EAAE;AACF;AACA;AACA,EAAE,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3D,IAAI,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5C,EAAE;AACF;;AAEA,YAAY,CAAC,KAAK,GAAG,QAAQ;;;;;"}