Source: seriesMixin/index.js

import seriesName from './seriesName';
import {attrFunc, className} from '../../modules/util';

const curves = ['linear', 'stepped', 'curved'];
const _attrs = {
  curve: curves[0],
  point: false,
  pointRatio : 3,
  seriesName: className('mark series', true)
}

const seriesMixin = Base => {
  /**
   * @mixin SeriesMixin
   */
  let SeriesMixin = class extends Base {
    constructor() {
      super();
      this.setAttrs(_attrs);
    }
  }
  SeriesMixin.prototype.seriesName = seriesName;
  
  /**
   * sets a curve type. If is not specified, returns the current curve setting.
   * @memberOf SeriesMixin
   * @function
   * @example
   * series.curve('curved') //renders Catmull-Rom spline curve
   * series.curve();
   * @param {string} [curve=linear] (linear|stepped|curved)
   * @return {curve|SeriesMixin}
   */
  SeriesMixin.prototype.curve = attrFunc('curve');
  /**
   * If is true, renders a point mark on each data point. If is not specified, returns the current point setting.
   * @memberOf SeriesMixin
   * @function
   * @example
   * series.point(true)
   * @param {boolean} [point=false]
   * @return {point|SeriesMixin}
   */
  SeriesMixin.prototype.point = attrFunc('point');
  /**
   * sets point radius relative to the line width. If is not specified, returns the current pointRatio setting.
   * @memberOf SeriesMixin
   * @function
   * @example
   * series.pointRatio(5) // the point radius will be 5 times as large as the line width.
   * @param {number} [pointRatio=3]
   * @return {pointRatio|SeriesMixin}
   */
  SeriesMixin.prototype.pointRatio = attrFunc('pointRatio');
  return SeriesMixin;
}

export default seriesMixin;
export {curves};