{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"dc\"","webpack:///external \"d3\"","webpack:///./src/Legend.js","webpack:///./src/CanvasBarChart.js","webpack:///./src/CanvasMixin.js","webpack:///./src/Easing.js","webpack:///./src/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","dc","d3","Legend","_listeners","this","_g","event","func","on","CanvasBarChart","parent","chartGroup","legend","g","style","_calculateBarWidth","data","forEach","index","_renderBars","renderLabel","_renderLabels","drawCanvas","legendData","updateShapes","type","alpha","color","hex","stack","length","y","effectiveHeight","height","isOrdinal","x","bar","width","context","_barXPos","_barYPos","_barWidth","_barHeight","_barColorFunction","globalAlpha","hover","fillStyle","fillRect","text","Math","round","offset","measureText","font","fillText","layerIndex","values","keyAccessor","updateShape","hasFilter","getColor","brushOn","parentBrushOn","filter","isFiltered","margins","left","y0","safeNumber","top","label","Base","_context","_timer","_easing","easeInQuart","_originalData","_currentData","_nextData","_lastHoverKey","_animating","_clientX","NaN","_clientY","_initialized","easing","arguments","duration","stop","_drawShapes","transitionDuration","elapsed","min","listenForMouseEvents","canvas","dispatchEvent","Event","clearCanvas","_createInterpolatedData","drawShapeOnCanvas","render","hasContext","resetCanvas","svg","originalData","assign","initializeData","keys","prop","undefined","callback","select","remove","root","devicePixelRatio","window","_getMargins","parseFloat","attr","right","bottom","insert","node","getContext","scale","rect","clip","imageSmoothingQuality","addEventListener","_canvasMouseMove","_canvasMouseLeave","_canvasMouseClick","e","clientX","clientY","_getCoordinate","onMouseOverCanvas","onClick","target","getBoundingClientRect","clearRect","Error","ret","_resize","CanvasMixin","Easing","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","BarChart","barChart"],"mappings":"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","file":"dc.canvas.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","module.exports = dc;","module.exports = d3;","import * as dc from 'dc';\nimport * as d3 from 'd3';\n\nexport default class Legend extends dc.Legend {\n\n constructor() {\n super();\n this._listeners = d3.dispatch('rendered');\n }\n\n render() {\n super.render();\n this._listeners.call('rendered', null, this._g);\n }\n\n on(event, func) {\n this._listeners.on(event, func);\n }\n\n}\n","import * as dc from 'dc';\nimport * as d3 from 'd3';\nimport CanvasMixin from \"./CanvasMixin\";\nconst DEFAULT_GAP_BETWEEN_BARS = 2;\nconst DESELECTED_COLOR = \"#cccccc\"; // TODO: Get dynamically\n\nexport default class CanvasBarChart extends CanvasMixin(dc.BarChart) {\n\n constructor(parent, chartGroup) {\n super(parent, chartGroup);\n }\n\n legend(legend) {\n if (!legend) return super.legend();\n legend.on('rendered', g => g.style('pointer-events', 'all'));\n return super.legend(legend);\n }\n\n plotData () {\n this._calculateBarWidth();\n this.data().forEach((data, index) => this._renderBars(index, data));\n if (this.renderLabel()) {\n this._renderLabels(this.data());\n }\n this.drawCanvas();\n }\n\n legendHighlight(legendData) {\n this.updateShapes(data => {\n return data.type === 0\n ? { alpha: d3.color(data.color).hex() === d3.color(legendData.color).hex() ? 1 : 0.2 }\n : data;\n });\n this.drawCanvas(0);\n super.legendHighlight(legendData);\n }\n\n legendReset(\n legendData\n ) {\n this.updateShapes(d => {\n return d.type === 0 ? { alpha: 1 } : d;\n });\n this.drawCanvas(0);\n super.legendHighlight(legendData);\n }\n\n onClick(d) {\n if (this.stack().length > 1) return;\n super.onClick(d);\n }\n\n initializeData(data) {\n switch (data.type) {\n case 0:\n return { y: this.effectiveHeight(), height: 0 };\n case 1:\n return { y: this.effectiveHeight() };\n }\n }\n\n listenForMouseEvents() {\n return this.isOrdinal();\n }\n\n onMouseOverCanvas(x, y, bar) {\n return bar.x <= x && x <= bar.x + bar.width && bar.y <= y && y <= bar.y + bar.height;\n }\n\n drawShapeOnCanvas(context, data) {\n switch (data.type) {\n case 0: {\n const x = this._barXPos(data.value);\n const y = this._barYPos(data.value);\n const width = this._barWidth;\n const height = this._barHeight(data.value);\n const color = this._barColorFunction()(data.key, data.value);\n context.globalAlpha = !data.hover ? data.alpha : 0.5;\n context.fillStyle = color;\n context.fillRect(x, y, width, height);\n context.globalAlpha = 1.0;\n break;\n }\n case 1: {\n const text = typeof data.text === 'number' ? Math.round(data.text) : data.text;\n const offset = (data.width - context.measureText(text).width) / 2;\n context.font = \"14px Helvetica Neue\";\n context.fillStyle = \"#000\";\n context.fillText(text, data.x + offset, data.y);\n break;\n }\n default:\n break;\n }\n }\n\n _renderBars (layerIndex, data) {\n for (const value of data.values) {\n const key = this.keyAccessor()(value.data);\n /*this.updateShape(`${layerIndex}-${key}`, {\n type: 0,\n x: this._barXPos(value),\n y: this._barYPos(value),\n width: this._barWidth,\n height: this._barHeight(value),\n color: colorFunc(key, value),\n alpha: 1\n }, value);*/\n this.updateShape(`${layerIndex}-${key}`, {\n type: 0,\n key: key,\n value: value,\n alpha: 1\n }, value);\n }\n }\n\n _barColorFunction() {\n if (this.isOrdinal()) {\n return this.hasFilter()\n ? (key, d) => this.hasFilter(d.x) ? this.getColor(d) : DESELECTED_COLOR\n : (key, d) => this.getColor(d);\n } else if (this.brushOn() || this.parentBrushOn()) {\n return !this.filter()\n ? (key, d) => this.getColor(d)\n : (key, d) => this.filter().isFiltered(key) ? this.getColor(d) : DESELECTED_COLOR;\n }\n }\n\n _barXPos(value) {\n return super._barXPos(value) + this.margins().left;\n }\n\n _barYPos(value) {\n let y = this.y()(value.y + value.y0);\n if (value.y < 0) {\n y -= this._barHeight(value);\n }\n return dc.utils.safeNumber(y) + this.margins().top;\n }\n\n _renderLabels(data) {\n for (const value of data[data.length - 1].values) {\n const key = this.keyAccessor()(value.data);\n const label = this.label()(value);\n this.updateShape(`text-${key}`, {\n type: 1,\n x: this._barXPos(value),\n y: this._barYPos(value) - DEFAULT_GAP_BETWEEN_BARS,\n width: this._barWidth,\n text: label\n });\n }\n }\n\n}\n","import * as dc from 'dc';\nimport * as d3 from 'd3';\n\nconst CanvasMixin = (Base) => {\n return class extends Base {\n\n constructor(parent, chartGroup) {\n super(parent, chartGroup);\n this._context = null;\n this._timer = null;\n this._easing = dc.Canvas.easeInQuart;\n this._originalData = {};\n this._currentData = {};\n this._nextData = {};\n this._lastHoverKey = null;\n this._animating = false;\n this._clientX = NaN;\n this._clientY = NaN;\n this._initialized = false;\n }\n\n easing(easing) {\n if (!arguments.length) {\n return this._easing;\n }\n this._easing = easing;\n return this;\n }\n\n drawCanvas(\n duration\n ) {\n if (!!this._timer) {\n this._timer.stop();\n }\n if (duration === 0) {\n this._drawShapes(1);\n } else {\n duration = duration || this.transitionDuration() || 500;\n this._animating = true;\n this._timer = d3.timer((elapsed) => {\n const t = Math.min(elapsed/duration, 1);\n // console.log('draw timer', t, duration);\n this._drawShapes(t);\n if (t === 1) {\n this._timer.stop();\n this._animating = false;\n if (this.listenForMouseEvents()) {\n this.canvas().dispatchEvent(new Event('mousemove'));\n }\n }\n }, 5);\n }\n }\n\n _drawShapes(t) {\n this.clearCanvas();\n for (const key in this._nextData) {\n this._currentData[key] = this._createInterpolatedData(key, t);\n this.drawShapeOnCanvas(this._context, this._currentData[key]);\n }\n }\n\n _drawChart(render) {\n if (!this.hasContext()) {\n this.resetCanvas();\n }\n super._drawChart(render);\n this.svg()\n .style('position', 'relative')\n .style('pointer-events', 'none');\n }\n\n updateShape(key, data, originalData) {\n if (!this._currentData[key]) {\n this._currentData[key] = Object.assign(this.initializeData(data), data);\n }\n this._nextData[key] = {};\n Object\n .keys(data)\n .forEach(prop => {\n this._nextData[key][prop] = d3.interpolate(this._currentData[key][prop], data[prop]);\n });\n if (originalData !== undefined) {\n this._originalData[key] = originalData;\n }\n }\n\n updateShapes(callback) {\n for (const key in this._currentData) {\n const data = callback(this._currentData[key]);\n this.updateShape(key, data);\n }\n }\n\n _createInterpolatedData(key, t) {\n t = this._easing(t);\n const data = Object.assign({}, this._currentData[key]);\n for (const prop in this._nextData[key]) {\n data[prop] = this._nextData[key][prop](t);\n }\n return data;\n }\n\n resetCanvas() {\n this.select('canvas').remove();\n\n this.root().style('position', 'relative');\n this.svg()\n .style('position', 'relative')\n .style('pointer-events', 'none');\n\n const devicePixelRatio = window.devicePixelRatio || 1;\n\n const margins = this._getMargins();\n const width = parseFloat(this.svg().attr(\"width\")) - margins.right;\n const height = parseFloat(this.svg().attr(\"height\")) - margins.bottom;\n\n const canvas = this.root()\n .insert('canvas', ':first-child')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', (width) * devicePixelRatio)\n .attr('height', (height) * devicePixelRatio)\n .style('width', `${width}px`)\n .style('height', `${height}px`)\n .style('position', 'absolute')\n .style('pointer-events', 'auto');\n\n const context = canvas.node().getContext('2d');\n context.scale(devicePixelRatio, devicePixelRatio);\n context.rect(0, 0, width, height);\n context.clip();\n context.imageSmoothingQuality = 'high';\n this._context = context;\n\n if (this.listenForMouseEvents()) {\n this.canvas().addEventListener('mousemove', this._canvasMouseMove.bind(this));\n this.canvas().addEventListener('mouseenter', this._canvasMouseMove.bind(this));\n this.canvas().addEventListener('mouseleave', this._canvasMouseLeave.bind(this));\n this.canvas().addEventListener('click', this._canvasMouseClick.bind(this));\n }\n\n this._initialized = true;\n }\n\n _resize() {\n const margins = this._getMargins();\n const width = parseFloat(this.svg().attr(\"width\")) - margins.right;\n const height = parseFloat(this.svg().attr(\"height\")) - margins.bottom;\n this.root()\n .select('canvas')\n .attr('width', width)\n .attr('height', height)\n .style('width', `${width}px`)\n .style('height', `${height}px`);\n }\n\n _getMargins() {\n return !this.margins\n ? { top: 0, right: 0, bottom: 0, left: 0 }\n : this.margins();\n }\n\n _canvasMouseMove(e) {\n this._clientX = e.clientX || this._clientX;\n this._clientY = e.clientY || this._clientY;\n if (this._animating) return;\n const [x, y] = this._getCoordinate(e);\n Object.keys(this._currentData)\n .filter(key => this.onMouseOverCanvas(x, y, this._currentData[key]))\n .forEach(key => {\n if (!!this._lastHoverKey) {\n this.updateShape(this._lastHoverKey, { hover: false });\n }\n this.updateShape(key, { hover: true });\n this.drawCanvas(0);\n this._lastHoverKey = [key];\n });\n }\n\n _canvasMouseLeave() {\n this._clientX = NaN;\n this._clientY = NaN;\n if (!!this._lastHoverKey) {\n this.updateShape(this._lastHoverKey, { hover: false });\n }\n this.drawCanvas(0);\n }\n\n _canvasMouseClick(e) {\n const [x, y] = this._getCoordinate(e);\n Object.keys(this._currentData)\n .filter(key => this.onMouseOverCanvas(x, y, this._currentData[key]))\n .forEach(key => this.onClick(this._originalData[key]));\n }\n\n _getCoordinate(e) {\n const rect = e.target.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n return [x, y];\n }\n\n clearCanvas() {\n this.context().clearRect(0, 0, (this.canvas().width + 2), (this.canvas().height + 2));\n }\n\n context() {\n return this._context;\n }\n\n canvas() {\n return this._context.canvas;\n }\n\n hasContext() {\n return !!this._context;\n }\n\n initializeData() {\n throw new Error(\"Not implemented\");\n }\n\n drawShapeOnCanvas() {\n throw new Error(\"Not implemented\");\n }\n\n onMouseOverCanvas() {\n return null;\n }\n\n listenForMouseEvents() {\n return false;\n }\n\n render() {\n const ret = super.render();\n this._resize();\n return ret;\n }\n\n };\n};\n\nexport default CanvasMixin;\n","import CanvasBarChart from \"./CanvasBarChart\";\n\nconst Easing = {\n linear: t => t,\n // accelerating from zero velocity\n easeInQuad: t => t*t,\n // decelerating to zero velocity\n easeOutQuad: t => t*(2-t),\n // acceleration until halfway, then deceleration\n easeInOutQuad: t => t<.5 ? 2*t*t : -1+(4-2*t)*t,\n // accelerating from zero velocity\n easeInCubic: t => t*t*t,\n // decelerating to zero velocity\n easeOutCubic: t => (--t)*t*t+1,\n // acceleration until halfway, then deceleration\n easeInOutCubic: t => t<.5 ? 4*t*t*t : (t-1)*(2*t-2)*(2*t-2)+1,\n // accelerating from zero velocity\n easeInQuart: t => t*t*t*t,\n // decelerating to zero velocity\n easeOutQuart: t => 1-(--t)*t*t*t,\n // acceleration until halfway, then deceleration\n easeInOutQuart: t => t<.5 ? 8*t*t*t*t : 1-8*(--t)*t*t*t,\n // accelerating from zero velocity\n easeInQuint: t => t*t*t*t*t,\n // decelerating to zero velocity\n easeOutQuint: t => 1+(--t)*t*t*t*t,\n // acceleration until halfway, then deceleration\n easeInOutQuint: t => t<.5 ? 16*t*t*t*t*t : 1+16*(--t)*t*t*t*t,\n BarChart: CanvasBarChart\n};\n\nexport default Easing;\n","import * as dc from 'dc';\nimport Legend from \"./Legend\";\nimport CanvasBarChart from \"./CanvasBarChart\";\nimport Easing from \"./Easing\";\n\ndc[\"Canvas\"] = Object.assign({\n BarChart: CanvasBarChart,\n barChart: (parent, chartGroup) => new dc[\"Canvas\"].BarChart(parent, chartGroup),\n}, Easing);\ndc[\"legend\"] = () => new Legend();\n"],"sourceRoot":""}