{"version":3,"sources":["../../../src/components/VSparkline/VSparkline.ts"],"names":[],"mappings":"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","sourcesContent":["// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { genPoints } from './helpers/core'\nimport { genPath } from './helpers/path'\n\n// Types\nimport Vue, { VNode } from 'vue'\nimport { Prop, PropValidator } from 'vue/types/options'\n\nexport type SparklineItem = number | { value: number }\n\nexport type SparklineText = {\n  x: number\n  value: string\n}\n\nexport interface Boundary {\n  minX: number\n  minY: number\n  maxX: number\n  maxY: number\n}\n\nexport interface Point {\n  x: number\n  y: number\n  value: number\n}\n\nexport interface BarText {\n  points: Point[]\n  boundary: Boundary\n  offsetX: number\n}\n\ninterface options extends Vue {\n  $refs: {\n    path: SVGPathElement\n  }\n}\n\nexport default mixins<options &\n/* eslint-disable indent */\n  ExtractVue<[\n    typeof Colorable\n  ]>\n/* eslint-enable indent */\n>(\n  Colorable\n).extend({\n  name: 'VSparkline',\n\n  props: {\n    autoDraw: Boolean,\n    autoDrawDuration: {\n      type: Number,\n      default: 2000\n    },\n    autoDrawEasing: {\n      type: String,\n      default: 'ease'\n    },\n    autoLineWidth: {\n      type: Boolean,\n      default: false\n    },\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    fill: {\n      type: Boolean,\n      default: false\n    },\n    gradient: {\n      type: Array as Prop<string[]>,\n      default: () => ([])\n    },\n    gradientDirection: {\n      type: String as Prop<'top' | 'bottom' | 'left' | 'right'>,\n      validator: (val: string) => ['top', 'bottom', 'left', 'right'].includes(val),\n      default: 'top'\n    },\n    height: {\n      type: [String, Number],\n      default: 75\n    },\n    labels: {\n      type: Array as Prop<SparklineItem[]>,\n      default: () => ([])\n    },\n    lineWidth: {\n      type: [String, Number],\n      default: 4\n    },\n    padding: {\n      type: [String, Number],\n      default: 8\n    },\n    smooth: {\n      type: [Boolean, Number, String],\n      default: false\n    },\n    showLabels: Boolean,\n    type: {\n      type: String,\n      default: 'trend',\n      validator: (val: string) => ['trend', 'bar'].includes(val)\n    } as PropValidator<'trend' | 'bar'>,\n    value: {\n      type: Array as Prop<SparklineItem[]>,\n      default: () => ([])\n    },\n    width: {\n      type: [Number, String],\n      default: 300\n    },\n    labelSize: {\n      type: [Number, String],\n      default: 7\n    }\n  },\n\n  data: () => ({\n    lastLength: 0\n  }),\n\n  computed: {\n    parsedPadding (): number {\n      return Number(this.padding)\n    },\n    parsedWidth (): number {\n      return Number(this.width)\n    },\n    totalBars (): number {\n      return this.value.length\n    },\n    _lineWidth (): number {\n      if (this.autoLineWidth && this.type !== 'trend') {\n        const totalPadding = this.parsedPadding * (this.totalBars + 1)\n        return (this.parsedWidth - totalPadding) / this.totalBars\n      } else {\n        return Number(this.lineWidth) || 4\n      }\n    },\n    boundary (): Boundary {\n      const height = Number(this.height)\n\n      return {\n        minX: this.parsedPadding,\n        minY: this.parsedPadding,\n        maxX: this.parsedWidth - this.parsedPadding,\n        maxY: height - this.parsedPadding\n      }\n    },\n    hasLabels (): boolean {\n      return Boolean(\n        this.showLabels ||\n        this.labels.length > 0 ||\n        this.$scopedSlots.label\n      )\n    },\n    parsedLabels (): SparklineText[] {\n      const labels = []\n      const points = this.points\n      const len = points.length\n\n      for (let i = 0; labels.length < len; i++) {\n        const item = points[i]\n        let value = this.labels[i]\n\n        if (!value) {\n          value = item === Object(item)\n            ? item.value\n            : item\n        }\n\n        labels.push({\n          ...item,\n          value: String(value)\n        })\n      }\n\n      return labels\n    },\n    points (): Point[] {\n      return genPoints(this.value.slice(), this.boundary, this.type)\n    },\n    textY (): number {\n      return this.boundary.maxY + 6\n    }\n  },\n\n  watch: {\n    value: {\n      immediate: true,\n      handler () {\n        this.$nextTick(() => {\n          if (!this.autoDraw || this.type === 'bar') return\n\n          const path = this.$refs.path\n          const length = path.getTotalLength()\n\n          if (!this.fill) {\n            path.style.transition = 'none'\n            path.style.strokeDasharray = length + ' ' + length\n            path.style.strokeDashoffset = Math.abs(length - (this.lastLength || 0)).toString()\n            path.getBoundingClientRect()\n            path.style.transition = `stroke-dashoffset ${this.autoDrawDuration}ms ${this.autoDrawEasing}`\n            path.style.strokeDashoffset = '0'\n          } else {\n            path.style.transformOrigin = 'bottom center'\n            path.style.transition = 'none'\n            path.style.transform = `scaleY(0)`\n            path.getBoundingClientRect()\n            path.style.transition = `transform ${this.autoDrawDuration}ms ${this.autoDrawEasing}`\n            path.style.transform = `scaleY(1)`\n          }\n          this.lastLength = length\n        })\n      }\n    }\n  },\n\n  methods: {\n    genGradient () {\n      const gradientDirection = this.gradientDirection\n      const gradient = this.gradient.slice()\n\n      // Pushes empty string to force\n      // a fallback to currentColor\n      if (!gradient.length) gradient.push('')\n\n      const len = Math.max(gradient.length - 1, 1)\n      const stops = gradient.reverse().map((color, index) =>\n        this.$createElement('stop', {\n          attrs: {\n            offset: index / len,\n            'stop-color': color || this.color || 'currentColor'\n          }\n        })\n      )\n\n      return this.$createElement('defs', [\n        this.$createElement('linearGradient', {\n          attrs: {\n            id: this._uid,\n            x1: +(gradientDirection === 'left'),\n            y1: +(gradientDirection === 'top'),\n            x2: +(gradientDirection === 'right'),\n            y2: +(gradientDirection === 'bottom')\n          }\n        }, stops)\n      ])\n    },\n    genG (children: VNode[]) {\n      return this.$createElement('g', {\n        style: {\n          fontSize: '8',\n          textAnchor: 'middle',\n          dominantBaseline: 'mathematical',\n          fill: this.color || 'currentColor'\n        }\n      }, children)\n    },\n    genLabels () {\n      if (!this.hasLabels) return undefined\n\n      return this.genG(this.parsedLabels.map(this.genText))\n    },\n    genPath () {\n      const radius = this.smooth === true ? 8 : Number(this.smooth)\n\n      return this.$createElement('path', {\n        attrs: {\n          id: this._uid,\n          d: genPath(this.points.slice(), radius, this.fill, Number(this.height)),\n          fill: this.fill ? `url(#${this._uid})` : 'none',\n          stroke: this.fill ? 'none' : `url(#${this._uid})`\n        },\n        ref: 'path'\n      })\n    },\n    genText (item: SparklineText, index: number) {\n      const children = this.$scopedSlots.label\n        ? this.$scopedSlots.label({ index, value: item.value })\n        : item.value\n\n      return this.$createElement('text', {\n        attrs: {\n          x: item.x,\n          y: this.textY\n        }\n      }, [children])\n    },\n    genBar () {\n      if (!this.value || this.totalBars < 2) return undefined as never\n      const { width, height, parsedPadding, _lineWidth } = this\n      const viewWidth = width || this.totalBars * parsedPadding * 2\n      const viewHeight = height || 75\n      const boundary: Boundary = {\n        minX: parsedPadding,\n        minY: parsedPadding,\n        maxX: Number(viewWidth) - parsedPadding,\n        maxY: Number(viewHeight) - parsedPadding\n      }\n      const props = {\n        ...this.$props\n      }\n\n      props.points = genPoints(this.value, boundary, this.type)\n\n      const totalWidth = boundary.maxX / (props.points.length - 1)\n\n      props.boundary = boundary\n      props.lineWidth = _lineWidth || (totalWidth - Number(parsedPadding || 5))\n      props.offsetX = 0\n      if (!this.autoLineWidth) {\n        props.offsetX = ((boundary.maxX / this.totalBars) / 2) - boundary.minX\n      }\n\n      return this.$createElement('svg', {\n        attrs: {\n          width: '100%',\n          height: '25%',\n          viewBox: `0 0 ${viewWidth} ${viewHeight}`\n        }\n      }, [\n        this.genGradient(),\n        this.genClipPath(props.offsetX, props.lineWidth, 'sparkline-bar-' + this._uid),\n        this.hasLabels ? this.genBarLabels(props as BarText) : undefined as never,\n        this.$createElement('g', {\n          attrs: {\n            transform: `scale(1,-1) translate(0,-${boundary.maxY})`,\n            'clip-path': `url(#sparkline-bar-${this._uid}-clip)`,\n            fill: `url(#${this._uid})`\n          }\n        }, [\n          this.$createElement('rect', {\n            attrs: {\n              x: 0,\n              y: 0,\n              width: viewWidth,\n              height: viewHeight\n            }\n          })\n        ])\n      ])\n    },\n    genClipPath (offsetX: number, lineWidth: number, id: string) {\n      const { maxY } = this.boundary\n      const rounding = typeof this.smooth === 'number'\n        ? this.smooth\n        : this.smooth ? 2 : 0\n\n      return this.$createElement('clipPath', {\n        attrs: {\n          id: `${id}-clip`\n        }\n      }, this.points.map(item => {\n        return this.$createElement('rect', {\n          attrs: {\n            x: item.x + offsetX,\n            y: 0,\n            width: lineWidth,\n            height: Math.max(maxY - item.y, 0),\n            rx: rounding,\n            ry: rounding\n          }\n        }, [\n          this.autoDraw ? this.$createElement('animate', {\n            attrs: {\n              attributeName: 'height',\n              from: 0,\n              to: maxY - item.y,\n              dur: `${this.autoDrawDuration}ms`,\n              fill: 'freeze'\n            }\n          }) : undefined as never\n        ])\n      }))\n    },\n    genBarLabels (props: BarText): VNode {\n      const offsetX = props.offsetX || 0\n\n      const children = props.points.map(item => (\n        this.$createElement('text', {\n          attrs: {\n            x: item.x + offsetX + this._lineWidth / 2,\n            y: props.boundary.maxY + (Number(this.labelSize) || 7),\n            'font-size': Number(this.labelSize) || 7\n          }\n        }, item.value.toString())\n      ))\n\n      return this.genG(children)\n    },\n    genTrend () {\n      return this.$createElement('svg', this.setTextColor(this.color, {\n        attrs: {\n          'stroke-width': this._lineWidth || 1,\n          width: '100%',\n          height: '25%',\n          viewBox: `0 0 ${this.width} ${this.height}`\n        }\n      }), [\n        this.genGradient(),\n        this.genLabels(),\n        this.genPath()\n      ])\n    }\n  },\n\n  render (h): VNode {\n    if (this.totalBars < 2) return undefined as never\n\n    return this.type === 'trend'\n      ? this.genTrend()\n      : this.genBar()\n  }\n})\n"],"sourceRoot":""}