{"version":3,"file":"VSparkline.mjs","names":["Colorable","mixins","genPoints","genBars","genPath","extend","name","inheritAttrs","props","autoDraw","Boolean","autoDrawDuration","type","Number","default","autoDrawEasing","String","autoLineWidth","color","fill","gradient","Array","gradientDirection","validator","val","includes","height","labels","labelSize","lineWidth","padding","showLabels","smooth","value","width","data","lastLength","computed","parsedPadding","parsedWidth","parsedHeight","parseInt","parsedLabelSize","totalHeight","hasLabels","totalWidth","Math","max","length","_lineWidth","totalValues","totalPadding","parseFloat","boundary","minX","maxX","minY","maxY","$scopedSlots","label","parsedLabels","points","_values","len","i","item","push","x","normalizedValues","map","textY","y","_radius","watch","immediate","handler","$nextTick","$refs","path","getTotalLength","style","transition","strokeDasharray","strokeDashoffset","abs","toString","getBoundingClientRect","transformOrigin","transform","methods","genGradient","slice","stops","reverse","index","$createElement","attrs","offset","id","_uid","gradientUnits","x1","y1","x2","y2","genG","children","fontSize","textAnchor","dominantBaseline","d","stroke","ref","genLabels","offsetX","genLabel","undefined","bars","display","viewBox","genClipPath","rounding","rx","ry","attributeName","from","to","dur","genTrend","setTextColor","$attrs","render","h"],"sources":["../../../src/components/VSparkline/VSparkline.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { genPoints, genBars } 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 Bar {\n  x: number\n  y: number\n  height: number\n  value: 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  inheritAttrs: false,\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,\n      default: () => ([]),\n    } as PropValidator<string[]>,\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,\n      default: () => ([]),\n    } as PropValidator<SparklineItem[]>,\n    labelSize: {\n      type: [Number, String],\n      default: 7,\n    },\n    lineWidth: {\n      type: [String, Number],\n      default: 4,\n    },\n    padding: {\n      type: [String, Number],\n      default: 8,\n    },\n    showLabels: Boolean,\n    smooth: {\n      type: [Boolean, Number, String],\n      default: false,\n    },\n    type: {\n      type: String as Prop<'trend' | 'bar'>,\n      default: 'trend',\n      validator: (val: string) => ['trend', 'bar'].includes(val),\n    },\n    value: {\n      type: Array,\n      default: () => ([]),\n    } as PropValidator<SparklineItem[]>,\n    width: {\n      type: [Number, String],\n      default: 300,\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    parsedHeight (): number {\n      return parseInt(this.height, 10)\n    },\n    parsedLabelSize (): number {\n      return parseInt(this.labelSize, 10) || 7\n    },\n    totalHeight (): number {\n      let height = this.parsedHeight\n\n      if (this.hasLabels) height += parseInt(this.labelSize, 10) * 1.5\n\n      return height\n    },\n    totalWidth (): number {\n      let width = this.parsedWidth\n      if (this.type === 'bar') width = Math.max(this.value.length * this._lineWidth, width)\n\n      return width\n    },\n    totalValues (): number {\n      return this.value.length\n    },\n    _lineWidth (): number {\n      if (this.autoLineWidth && this.type !== 'trend') {\n        const totalPadding = this.parsedPadding * (this.totalValues + 1)\n        return (this.parsedWidth - totalPadding) / this.totalValues\n      } else {\n        return parseFloat(this.lineWidth) || 4\n      }\n    },\n    boundary (): Boundary {\n      if (this.type === 'bar') return { minX: 0, maxX: this.totalWidth, minY: 0, maxY: this.parsedHeight }\n\n      const padding = this.parsedPadding\n\n      return {\n        minX: padding,\n        maxX: this.totalWidth - padding,\n        minY: padding,\n        maxY: this.parsedHeight - padding,\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._values\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 = typeof item === 'object'\n            ? item.value\n            : item\n        }\n\n        labels.push({\n          x: item.x,\n          value: String(value),\n        })\n      }\n\n      return labels\n    },\n    normalizedValues (): number[] {\n      return this.value.map(item => (typeof item === 'number' ? item : item.value))\n    },\n    _values (): Point[] | Bar[] {\n      return this.type === 'trend' ? genPoints(this.normalizedValues, this.boundary) : genBars(this.normalizedValues, this.boundary)\n    },\n    textY (): number {\n      let y = this.parsedHeight\n      if (this.type === 'trend') y -= 4\n      return y\n    },\n    _radius (): number {\n      return this.smooth === true ? 8 : Number(this.smooth)\n    },\n  },\n\n  watch: {\n    value: {\n      immediate: true,\n      handler () {\n        this.$nextTick(() => {\n          if (\n            !this.autoDraw ||\n            this.type === 'bar' ||\n            !this.$refs.path\n          ) 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 || 'currentColor',\n          },\n        })\n      )\n\n      return this.$createElement('defs', [\n        this.$createElement('linearGradient', {\n          attrs: {\n            id: this._uid,\n            gradientUnits: 'userSpaceOnUse',\n            x1: gradientDirection === 'left' ? '100%' : '0',\n            y1: gradientDirection === 'top' ? '100%' : '0',\n            x2: gradientDirection === 'right' ? '100%' : '0',\n            y2: gradientDirection === 'bottom' ? '100%' : '0',\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: 'currentColor',\n        } as object, // TODO: TS 3.5 is too eager with the array type here\n      }, children)\n    },\n    genPath () {\n      const points = genPoints(this.normalizedValues, this.boundary)\n\n      return this.$createElement('path', {\n        attrs: {\n          d: genPath(points, this._radius, this.fill, this.parsedHeight),\n          fill: this.fill ? `url(#${this._uid})` : 'none',\n          stroke: this.fill ? 'none' : `url(#${this._uid})`,\n        },\n        ref: 'path',\n      })\n    },\n    genLabels (offsetX: number) {\n      const children = this.parsedLabels.map((item, i) => (\n        this.$createElement('text', {\n          attrs: {\n            x: item.x + offsetX + this._lineWidth / 2,\n            y: this.textY + (this.parsedLabelSize * 0.75),\n            'font-size': Number(this.labelSize) || 7,\n          },\n        }, [this.genLabel(item, i)])\n      ))\n\n      return this.genG(children)\n    },\n    genLabel (item: SparklineText, index: number) {\n      return this.$scopedSlots.label\n        ? this.$scopedSlots.label({ index, value: item.value })\n        : item.value\n    },\n    genBars () {\n      if (!this.value || this.totalValues < 2) return undefined as never\n\n      const bars = genBars(this.normalizedValues, this.boundary)\n      const offsetX = (Math.abs(bars[0].x - bars[1].x) - this._lineWidth) / 2\n\n      return this.$createElement('svg', {\n        attrs: {\n          display: 'block',\n          viewBox: `0 0 ${this.totalWidth} ${this.totalHeight}`,\n        },\n      }, [\n        this.genGradient(),\n        this.genClipPath(bars, offsetX, this._lineWidth, 'sparkline-bar-' + this._uid),\n        this.hasLabels ? this.genLabels(offsetX) : undefined as never,\n        this.$createElement('g', {\n          attrs: {\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: this.totalWidth,\n              height: this.height,\n            },\n          }),\n        ]),\n      ])\n    },\n    genClipPath (bars: Bar[], offsetX: number, lineWidth: number, id: string) {\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      }, bars.map(item => {\n        return this.$createElement('rect', {\n          attrs: {\n            x: item.x + offsetX,\n            y: item.y,\n            width: lineWidth,\n            height: item.height,\n            rx: rounding,\n            ry: rounding,\n          },\n        }, [\n          this.autoDraw ? this.$createElement('animate', {\n            attrs: {\n              attributeName: 'height',\n              from: 0,\n              to: item.height,\n              dur: `${this.autoDrawDuration}ms`,\n              fill: 'freeze',\n            },\n          }) : undefined as never,\n        ])\n      }))\n    },\n    genTrend () {\n      return this.$createElement('svg', this.setTextColor(this.color, {\n        attrs: {\n          ...this.$attrs,\n          display: 'block',\n          'stroke-width': this._lineWidth || 1,\n          viewBox: `0 0 ${this.width} ${this.totalHeight}`,\n        },\n      }), [\n        this.genGradient(),\n        this.hasLabels && this.genLabels(-(this._lineWidth / 2)),\n        this.genPath(),\n      ])\n    },\n  },\n\n  render (h): VNode {\n    if (this.totalValues < 2) return undefined as never\n\n    return this.type === 'trend' ? this.genTrend() : this.genBars()\n  },\n})\n"],"mappings":"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"}