         map["symbolSize"] = symbolSize
     }
 }
+
+extension SECTimeline : SECEnumable {
+    public enum Enums {
+        case show(Bool), axisType(AxisType), current(UInt), autoPlay(Bool), rewind(Bool), loop(Bool), playInterval(Float), realtime(Bool), controlPosition(String), zlevel(Float), z(Float), left(SECPosition), top(SECPosition), right(SECPosition), bottom(SECPosition), padding(SECPadding), orient(SECOrient), inverse(Bool), symbol(SECSymbol), symbolSize(Float), symbolRotate(Float), symbolOffset([Float]), lineStyle(LineStyle), itemStyle(SECItemStyle), checkpointStyle(CheckpointStyle), controlStyle(ControlStyle), data([SECJsonable])
+    }
+    
+    public typealias ContentEnum = Enums
+    
+    public init(_ elements: [Enums]) {
+        for ele in elements {
+            switch ele {
+            case let .show(show):
+                self.show = show
+            case let .axisType(axisType):
+                self.axisType = axisType
+            case let .current(current):
+                self.current = current
+            case let .autoPlay(autoPlay):
+                self.autoPlay = autoPlay
+            case let .rewind(rewind):
+                self.rewind = rewind
+            case let .loop(loop):
+                self.loop = loop
+            case let .playInterval(playInterval):
+                self.playInterval = playInterval
+            case let .realtime(realtime):
+                self.realtime = realtime
+            case let .controlPosition(controlPosition):
+                self.controlPosition = controlPosition
+            case let .zlevel(zlevel):
+                self.zlevel = zlevel
+            case let .z(z):
+                self.z = z
+            case let .left(left):
+                self.left = left
+            case let .top(top):
+                self.top = top
+            case let .right(right):
+                self.right = right
+            case let .bottom(bottom):
+                self.bottom = bottom
+            case let .padding(padding):
+                self.padding = padding
+            case let .orient(orient):
+                self.orient = orient
+            case let .inverse(inverse):
+                self.inverse = inverse
+            case let .symbol(symbol):
+                self.symbol = symbol
+            case let .symbolSize(symbolSize):
+                self.symbolSize = symbolSize
+            case let .symbolRotate(symbolRotate):
+                self.symbolRotate = symbolRotate
+            case let .symbolOffset(symbolOffset):
+                self.symbolOffset = symbolOffset
+            case let .lineStyle(lineStyle):
+                self.lineStyle = lineStyle
+            case let .itemStyle(itemStyle):
+                self.itemStyle = itemStyle
+            case let .checkpointStyle(checkpointStyle):
+                self.checkpointStyle = checkpointStyle
+            case let .controlStyle(controlStyle):
+                self.controlStyle = controlStyle
+            case let .data(data):
+                self.data = data
+            }
+        }
+    }
+}
+
+extension SECTimeline : SECMappable {
+    public func mapping(map: SECMap) {
+        map["show"] = show
+        map["type"] = type
+        map["axisType"] = axisType
+        map["current"] = current
+        map["autoPlay"] = autoPlay
+        map["rewind"] = rewind
+        map["loop"] = loop
+        map["playInterval"] = playInterval
+        map["realtime"] = realtime
+        map["controlPosition"] = controlPosition
+        map["zlevel"] = zlevel
+        map["z"] = z
+        map["left"] = left
+        map["top"] = top
+        map["right"] = right
+        map["bottom"] = bottom
+        map["padding"] = padding
+        map["orient"] = orient
+        map["inverse"] = inverse
+        map["symbol"] = symbol
+        map["symbolSize"] = symbolSize
+        map["symbolRotate"] = symbolRotate
+        map["symbolOffset"] = symbolOffset
+        map["lineStyle"] = lineStyle
+        map["itemStyle"] = itemStyle
+        map["checkpointStyle"] = checkpointStyle
+        map["controlStyle"] = controlStyle
+        map["data"] = data
+        
+    }
+}

            switch ele {
            case let .show(show):
                self.show = show
             case let .color(color):
                self.color = color
            case let .width(width):
                self.width = width

//

/// timeline 组件，提供了在多个 ECharts option 间进行切换、播放等操作的功能。
/// 具体示例地址：
/// timeline 和其他组件有些不同，它需要操作『多个option』。 假设，我们把 ECharts 的传统的 option 称为原子option，那么使用 timeline 时，传入 ECharts 的 option 就成为了一个集合多个原子option的复合option。如下示例：
/// 如下，baseOption 是一个 『原子option』，options 数组中的每一项也是一个 『原子option』。
/// 每个『原子option』中就是本文档中描述的各种配置项。
