{"version":3,"file":"Timeline.cjs","sources":["../../../src/core/Timeline.js"],"sourcesContent":["import { generateId } from '../utils/helpers.js';\r\n\r\n/**\r\n * 时间线管理类\r\n */\r\nexport class Timeline {\r\n  constructor(config = {}) {\r\n    this.id = generateId('timeline');\r\n    this.duration = config.duration || 10; // 秒\r\n    this.fps = config.fps || 30;\r\n    this.currentTime = 0;\r\n    this.isPlaying = false;\r\n    this.isPaused = false;\r\n    this.playbackRate = config.playbackRate || 1;\r\n    this.layers = [];\r\n    this.events = []; // 时间线事件\r\n  }\r\n\r\n  /**\r\n   * 设置持续时间\r\n   */\r\n  setDuration(duration) {\r\n    this.duration = duration;\r\n  }\r\n\r\n  /**\r\n   * 设置帧率\r\n   */\r\n  setFPS(fps) {\r\n    this.fps = fps;\r\n  }\r\n\r\n  /**\r\n   * 添加图层\r\n   */\r\n  addLayer(layer) {\r\n    if (!this.layers.includes(layer)) {\r\n      this.layers.push(layer);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * 移除图层\r\n   */\r\n  removeLayer(layer) {\r\n    const index = this.layers.indexOf(layer);\r\n    if (index > -1) {\r\n      this.layers.splice(index, 1);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * 获取所有图层（按 zIndex 排序）\r\n   */\r\n  getLayers() {\r\n    return [...this.layers].sort((a, b) => a.zIndex - b.zIndex);\r\n  }\r\n\r\n  /**\r\n   * 设置当前时间\r\n   */\r\n  setTime(time) {\r\n    this.currentTime = Math.max(0, Math.min(time, this.duration));\r\n  }\r\n\r\n  /**\r\n   * 获取当前时间\r\n   */\r\n  getTime() {\r\n    return this.currentTime;\r\n  }\r\n\r\n  /**\r\n   * 获取当前帧数\r\n   */\r\n  getCurrentFrame() {\r\n    return Math.floor(this.currentTime * this.fps);\r\n  }\r\n\r\n  /**\r\n   * 时间转帧数\r\n   */\r\n  timeToFrame(time) {\r\n    return Math.floor(time * this.fps);\r\n  }\r\n\r\n  /**\r\n   * 帧数转时间\r\n   */\r\n  frameToTime(frame) {\r\n    return frame / this.fps;\r\n  }\r\n\r\n  /**\r\n   * 播放\r\n   */\r\n  play() {\r\n    this.isPlaying = true;\r\n    this.isPaused = false;\r\n  }\r\n\r\n  /**\r\n   * 暂停\r\n   */\r\n  pause() {\r\n    this.isPaused = true;\r\n    this.isPlaying = false;\r\n  }\r\n\r\n  /**\r\n   * 停止\r\n   */\r\n  stop() {\r\n    this.isPlaying = false;\r\n    this.isPaused = false;\r\n    this.currentTime = 0;\r\n  }\r\n\r\n  /**\r\n   * 跳转到指定时间\r\n   */\r\n  seek(time) {\r\n    this.setTime(time);\r\n  }\r\n\r\n  /**\r\n   * 跳转到指定帧\r\n   */\r\n  seekToFrame(frame) {\r\n    this.setTime(this.frameToTime(frame));\r\n  }\r\n\r\n  /**\r\n   * 更新（用于播放时更新当前时间）\r\n   */\r\n  update(deltaTime) {\r\n    if (this.isPlaying && !this.isPaused) {\r\n      this.currentTime += deltaTime * this.playbackRate;\r\n      if (this.currentTime >= this.duration) {\r\n        this.currentTime = this.duration;\r\n        this.stop();\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * 获取指定时间激活的图层\r\n   */\r\n  getActiveLayersAtTime(time) {\r\n    return this.getLayers().filter(layer => layer.isActiveAtTime(time));\r\n  }\r\n\r\n  /**\r\n   * 添加时间线事件\r\n   */\r\n  addEvent(time, callback) {\r\n    this.events.push({ time, callback });\r\n    this.events.sort((a, b) => a.time - b.time);\r\n  }\r\n\r\n  /**\r\n   * 触发时间线事件\r\n   */\r\n  triggerEvents(time) {\r\n    for (const event of this.events) {\r\n      if (Math.abs(event.time - time) < 1 / this.fps) {\r\n        event.callback(time);\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * 重置时间线\r\n   */\r\n  reset() {\r\n    this.currentTime = 0;\r\n    this.isPlaying = false;\r\n    this.isPaused = false;\r\n  }\r\n}\r\n\r\n"],"names":["generateId"],"mappings":"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"}