{"version":3,"file":"ElementLayer.cjs","sources":["../../../src/layers/ElementLayer.js"],"sourcesContent":["import { BaseLayer } from './BaseLayer.js';\nimport { LayerType } from '../types/enums.js';\n\n/**\n * 元素图层\n */\nexport class ElementLayer extends BaseLayer {\n  constructor(config = {}) {\n    super(config);\n    this.type = LayerType.ELEMENT;\n  }\n\n  /**\n   * 渲染元素图层（使用 Paper.js）\n   * @param {paper.Layer} layer - Paper.js 图层\n   * @param {number} time - 当前时间（秒）\n   * @param {Object} paperInstance - Paper.js 实例 { project, paper }\n   */\n  async render(layer, time, paperInstance = null) {\n    if (!this.isActiveAtTime(time)) return;\n\n    // 重置已渲染元素列表\n    this.renderedElements = [];\n\n    // 按 zIndex 排序元素（zIndex 小的先渲染，大的后渲染，显示在上层）\n    const sortedElements = [...this.elements].sort((a, b) => {\n      const zIndexA = a.zIndex !== undefined ? a.zIndex : 0;\n      const zIndexB = b.zIndex !== undefined ? b.zIndex : 0;\n      return zIndexA - zIndexB;\n    });\n\n    // 渲染所有元素（按 zIndex 顺序）\n    for (let i = 0; i < sortedElements.length; i++) {\n      const element = sortedElements[i];\n      // 检查元素是否在指定时间激活（使用相对时间）\n      if (element.visible && element.isActiveAtTime && element.isActiveAtTime(time)) {\n        try {\n          // 在渲染之前先初始化元素（如果还未初始化）\n          if (typeof element.isInitialized === 'function' && !element.isInitialized()) {\n            if (typeof element.initialize === 'function') {\n              const initStartTime = Date.now();\n              const initResult = element.initialize();\n              if (initResult && typeof initResult.then === 'function') {\n                // 添加超时保护（30秒）\n                await Promise.race([\n                  initResult,\n                  new Promise((_, reject) => setTimeout(() => reject(new Error(`元素 ${element.type || 'unknown'} 初始化超时（30秒）`)), 30000))\n                ]);\n              }\n              const initDuration = Date.now() - initStartTime;\n              if (initDuration > 1000) {\n                console.warn(`  [ElementLayer] 元素 ${element.type || 'unknown'} 初始化耗时 ${initDuration}ms`);\n              }\n            }\n          }\n          \n          // 使用 Paper.js 渲染\n          if (typeof element.render === 'function') {\n            // 支持异步渲染，传递 paperInstance 给元素\n            const renderStartTime = Date.now();\n            const result = element.render(layer, time, paperInstance);\n            if (result && typeof result.then === 'function') {\n              // 添加超时保护（60秒）\n              await Promise.race([\n                result,\n                new Promise((_, reject) => setTimeout(() => reject(new Error(`元素 ${element.type || 'unknown'} 渲染超时（60秒）`)), 60000))\n              ]);\n            }\n            const renderDuration = Date.now() - renderStartTime;\n            if (renderDuration > 1000) {\n              console.warn(`  [ElementLayer] 元素 ${element.type || 'unknown'} 渲染耗时 ${renderDuration}ms`);\n            }\n            \n            // 记录已渲染的元素（用于 onFrame 回调）\n            this.renderedElements.push(element);\n          } else {\n            console.warn(`元素 ${element.type || 'unknown'} 没有 render 方法`);\n          }\n        } catch (error) {\n          console.error(`渲染元素失败 (${element.type || 'unknown'}, id: ${element.id}):`, error.message);\n          if (error.stack) {\n            console.error('错误堆栈:', error.stack.split('\\n').slice(0, 5).join('\\n'));\n          }\n          throw error;\n        }\n      }\n    }\n\n  }\n\n  /**\n   * 获取已渲染的元素列表\n   * @returns {Array} 已渲染的元素数组\n   */\n  getRenderedElements() {\n    return this.renderedElements || [];\n  }\n\n}\n\n"],"names":["BaseLayer","LayerType"],"mappings":";;;;;AAGA;AACA;AACA;AACO,MAAM,YAAY,SAASA,0BAAS,CAAC;AAC5C,EAAE,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE;AAC3B,IAAI,KAAK,CAAC,MAAM,CAAC;AACjB,IAAI,IAAI,CAAC,IAAI,GAAGC,qBAAS,CAAC,OAAO;AACjC,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,EAAE;AAClD,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;;AAEpC;AACA,IAAI,IAAI,CAAC,gBAAgB,GAAG,EAAE;;AAE9B;AACA,IAAI,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC7D,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;AAC3D,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;AAC3D,MAAM,OAAO,OAAO,GAAG,OAAO;AAC9B,IAAI,CAAC,CAAC;;AAEN;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC;AACvC;AACA,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AACrF,QAAQ,IAAI;AACZ;AACA,UAAU,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE;AACvF,YAAY,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE;AAC1D,cAAc,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE;AAC9C,cAAc,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE;AACrD,cAAc,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;AACvE;AACA,gBAAgB,MAAM,OAAO,CAAC,IAAI,CAAC;AACnC,kBAAkB,UAAU;AAC5B,kBAAkB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACrI,iBAAiB,CAAC;AAClB,cAAc;AACd,cAAc,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;AAC7D,cAAc,IAAI,YAAY,GAAG,IAAI,EAAE;AACvC,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;AACxG,cAAc;AACd,YAAY;AACZ,UAAU;AACV;AACA;AACA,UAAU,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;AACpD;AACA,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE;AAC9C,YAAY,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC;AACrE,YAAY,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;AAC7D;AACA,cAAc,MAAM,OAAO,CAAC,IAAI,CAAC;AACjC,gBAAgB,MAAM;AACtB,gBAAgB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AAClI,eAAe,CAAC;AAChB,YAAY;AACZ,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe;AAC/D,YAAY,IAAI,cAAc,GAAG,IAAI,EAAE;AACvC,cAAc,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;AACvG,YAAY;AACZ;AACA;AACA,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/C,UAAU,CAAC,MAAM;AACjB,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC;AACxE,UAAU;AACV,QAAQ,CAAC,CAAC,OAAO,KAAK,EAAE;AACxB,UAAU,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;AACnG,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,YAAY,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClF,UAAU;AACV,UAAU,MAAM,KAAK;AACrB,QAAQ;AACR,MAAM;AACN,IAAI;;AAEJ,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE,mBAAmB,GAAG;AACxB,IAAI,OAAO,IAAI,CAAC,gBAAgB,IAAI,EAAE;AACtC,EAAE;;AAEF;;;;"}