{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///timeline.js","webpack:///webpack/bootstrap 4ed1e0ac1cfe23274dde","webpack:///external \"d3\"","webpack:///./src/config.js","webpack:///./src/drawer/axes.js","webpack:///./src/drawer/context.js","webpack:///./src/drawer/drops.js","webpack:///./src/drawer/index.js","webpack:///./src/drawer/labels.js","webpack:///./src/drawer/marker.js","webpack:///./src/timeline.js","webpack:///./src/xAxis.js","webpack:///./src/zoom.js","webpack:///./~/configurable.js/configurable.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","_d","_d2","config","start","Date","end","contextStart","contextEnd","minScale","maxScale","Infinity","width","padding","top","left","bottom","right","lineHeight","labelWidth","sliderWidth","contextHeight","locale","axisFormat","tickFormat","d","getMilliseconds","getSeconds","getMinutes","getHours","getMonth","getDate","eventHover","eventZoom","eventClick","eventLineColor","i","eventColor","eventShape","hasOwnProperty","eventPopover","popover","events","length","details","charAt","toUpperCase","slice","date","marker","context","slider","eventGrouping","dateFormat","timeFormat","time","format","Object","defineProperty","value","_xAxis","_xAxis2","axesContainer","scales","configuration","dimensions","data","axis","scope","scale","selection","selectAll","enter","append","classed","attr","height","ctxHeight","exit","remove","x","ctx","countEvents","toRoundTo","counts","temp","j","rounded","Math","floor","k","tempDate","setTime","push","count","svg","contextContainer","roundTo","barWidth","ceil","domain","sort","a","b","cty","max","dropLines","idx","y","each","drop","drops","d3","select","shape","text","on","_axes","_axes2","_drops","_drops2","_labels","_labels2","_marker","_marker2","defs","pattern","gridContainer","labelsContainer","dropsContainer","stampContainer","axes","labels","container","undefined","name","moveMarker","pos","mouse","timeBox","timeStamp","invert","style","range","timeline","timelineGraph","ungroupedData","groupEvents","finalConfiguration","min","getDates","SCALEHEIGHT","outer_width","node","clientWidth","outer_height","xScale","yScale","linear","draw","_drawer2","bind","_context2","zoomInstance","updateZoom","arguments","_zoom2","ordinal","map","timeBounds","_configurable2","Zoom","toReturn","round","_extends","assign","target","source","key","prototype","_configurable","_config","_config2","_drawer","_context","_zoom","chart","tickFormatData","t","multi","numTicks","orient","ticks","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","props","descriptor","enumerable","configurable","writable","protoProps","staticProps","zoom","callback","_this","ONE_MINUTE","ONE_HOUR","ONE_DAY","ONE_WEEK","ONE_MONTH","grid","sliderScale","log","base","behavior","size","scaleExtent","brush","zoomIn","zoomClick","offsetWidth","zoomOut","zoomSlider","offsetHeight","extent","brushed","requestAnimationFrame","property","empty","zoomFilter","factor","target_zoom","duration","center","translate0","l","view","translate","event","interpolateZoom","_this2","transition","tween","iTranslate","interpolate","iScale","Extent","getTime","oldRange","newRange","fromTime","toTime","curZoom","cur_width","getRange","startDiff","getScale","targetFunction","configure","item"],"mappings":"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","file":"timeline.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"d3\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"d3\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"timeline\"] = factory(require(\"d3\"));\n\telse\n\t\troot[\"timeline\"] = factory(root[\"d3\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"d3\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"d3\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"timeline\"] = factory(require(\"d3\"));\n\telse\n\t\troot[\"timeline\"] = factory(root[\"d3\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(9);\n\tmodule.exports = __webpack_require__(13);\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _d = __webpack_require__(1);\n\t\n\tvar _d2 = _interopRequireDefault(_d);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar config = {\n\t start: new Date(0),\n\t end: new Date(),\n\t contextStart: null,\n\t contextEnd: null,\n\t minScale: 0,\n\t maxScale: Infinity,\n\t width: null,\n\t padding: {\n\t top: 30, //must be at least 24 for marker to display properly\n\t left: 40,\n\t bottom: 40,\n\t right: 40\n\t },\n\t lineHeight: 40,\n\t labelWidth: 140,\n\t sliderWidth: 30,\n\t contextHeight: 50,\n\t locale: null,\n\t axisFormat: null,\n\t tickFormat: [['.%L', function (d) {\n\t return d.getMilliseconds();\n\t }], [':%S', function (d) {\n\t return d.getSeconds();\n\t }], ['%I:%M', function (d) {\n\t return d.getMinutes();\n\t }], ['%I %p', function (d) {\n\t return d.getHours();\n\t }], ['%b %d', function (d) {\n\t return d.getMonth() && d.getDate();\n\t }], ['%b', function (d) {\n\t return d.getMonth();\n\t }], ['%Y', function () {\n\t return true;\n\t }]],\n\t eventHover: null,\n\t eventZoom: null,\n\t eventClick: null,\n\t eventLineColor: function eventLineColor(d, i) {\n\t switch (i % 5) {\n\t case 0:\n\t return \"#00659c\";\n\t case 1:\n\t return \"#0088ce\";\n\t case 2:\n\t return \"#3f9c35\";\n\t case 3:\n\t return \"#ec7a08\";\n\t case 4:\n\t return \"#cc0000\";\n\t }\n\t },\n\t eventColor: null,\n\t eventShape: function eventShape(d) {\n\t if (d.hasOwnProperty(\"events\")) {\n\t return '\\uF140';\n\t } else {\n\t return '\\uF111';\n\t }\n\t },\n\t eventPopover: function eventPopover(d) {\n\t var popover = '';\n\t if (d.hasOwnProperty(\"events\")) {\n\t popover = 'Group of ' + d.events.length + ' events';\n\t } else {\n\t for (var i in d.details) {\n\t popover = popover + i.charAt(0).toUpperCase() + i.slice(1) + ': ' + d.details[i] + '
';\n\t }\n\t popover = popover + 'Date: ' + d.date;\n\t }\n\t return popover;\n\t },\n\t marker: true,\n\t context: true,\n\t slider: true,\n\t eventGrouping: 60000 //one minute\n\t};\n\t\n\tconfig.dateFormat = config.locale ? config.locale.timeFormat('%a %x %I:%M %p') : _d2.default.time.format('%a %x %I:%M %p');\n\t\n\tmodule.exports = config;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _xAxis = __webpack_require__(10);\n\t\n\tvar _xAxis2 = _interopRequireDefault(_xAxis);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = function (axesContainer, scales, configuration, dimensions) {\n\t return function (data) {\n\t var axis = function axis(scope, scale) {\n\t var selection = axesContainer.selectAll('.timeline-pf-x-axis.' + scope).data([{}]);\n\t\n\t selection.enter().append('g').classed('timeline-pf-x-axis', true).classed(scope, true).call((0, _xAxis2.default)(scale, configuration)).attr('transform', 'translate(0,' + (scope === 'focus' ? dimensions.height : dimensions.height + dimensions.ctxHeight + 40) + ')');\n\t\n\t selection.call((0, _xAxis2.default)(scale, configuration, dimensions.width));\n\t\n\t selection.exit().remove();\n\t };\n\t\n\t axis('focus', scales.x);\n\t\n\t if (configuration.context) {\n\t axis('context', scales.ctx);\n\t }\n\t };\n\t};\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _d = __webpack_require__(1);\n\t\n\tvar _d2 = _interopRequireDefault(_d);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = function (svg, scales, dimensions, configuration, data) {\n\t\n\t var contextContainer = svg.append(\"g\").classed('timeline-pf-context', true).attr('width', dimensions.width).attr('height', dimensions.ctxHeight).attr('clip-path', 'url(#timeline-pf-context-brush-clipper)').attr(\"transform\", 'translate(' + (configuration.padding.left + configuration.labelWidth) + ',' + (configuration.padding.top + dimensions.height + 40) + ')');\n\t\n\t var counts = [];\n\t var roundTo = 3600000; //one hour\n\t var barWidth = Math.ceil(roundTo / (scales.ctx.domain()[1] - scales.ctx.domain()[0]) * dimensions.width);\n\t\n\t countEvents(data, roundTo, counts);\n\t counts.sort(function (a, b) {\n\t if (a.date < b.date) {\n\t return -1;\n\t }\n\t if (a.date > b.date) {\n\t return 1;\n\t }\n\t return 0;\n\t });\n\t scales.cty.domain([0, _d2.default.max(counts, function (d) {\n\t return d.count;\n\t })]);\n\t\n\t contextContainer.selectAll(\".timeline-pf-bar\").data(counts).enter().append(\"rect\").attr(\"class\", \"timeline-pf-bar\").attr(\"x\", function (d) {\n\t return scales.ctx(d.date);\n\t }).attr(\"y\", function (d) {\n\t return scales.cty(d.count);\n\t }).attr(\"width\", barWidth).attr(\"height\", function (d) {\n\t return dimensions.ctxHeight - scales.cty(d.count);\n\t });\n\t\n\t contextContainer.append(\"g\").attr(\"class\", \"timeline-pf-brush\");\n\t};\n\t\n\tfunction countEvents(data, toRoundTo, counts) {\n\t var temp = {};\n\t for (var i in data) {\n\t for (var j in data[i].data) {\n\t var rounded = Math.floor(data[i].data[j].date / toRoundTo) * toRoundTo;\n\t temp[rounded] = temp[rounded] + 1 || 1;\n\t }\n\t }\n\t for (var k in temp) {\n\t var tempDate = new Date();\n\t tempDate.setTime(+k);\n\t counts.push({ 'date': tempDate, 'count': temp[k] });\n\t }\n\t};\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\texports.default = function (svg, scales, configuration) {\n\t return function dropsSelector(data) {\n\t var dropLines = svg.selectAll('.timeline-pf-drop-line').data(data);\n\t\n\t dropLines.enter().append('g').classed('timeline-pf-drop-line', true).attr('transform', function (d, idx) {\n\t return 'translate(0, ' + (scales.y(idx) + configuration.lineHeight / 2) + ')';\n\t }).attr('fill', configuration.eventLineColor);\n\t\n\t dropLines.each(function dropLineDraw(drop) {\n\t\n\t var drops = d3.select(this).selectAll('.timeline-pf-drop').data(drop.data);\n\t\n\t drops.attr('transform', function (d) {\n\t return 'translate(' + scales.x(d.date) + ')';\n\t });\n\t\n\t var shape = drops.enter().append('text').classed('timeline-pf-drop', true).classed('timeline-pf-event-group', function (d) {\n\t return d.hasOwnProperty(\"events\") ? true : false;\n\t }).attr('transform', function (d) {\n\t return 'translate(' + scales.x(d.date) + ')';\n\t }).attr('fill', configuration.eventColor).attr('text-anchor', 'middle').attr('data-toggle', 'popover').attr('data-html', 'true').attr('data-content', configuration.eventPopover).attr('dominant-baseline', 'central').text(configuration.eventShape);\n\t\n\t if (configuration.eventClick) {\n\t shape.on('click', configuration.eventClick);\n\t }\n\t\n\t if (configuration.eventHover) {\n\t shape.on('mouseover', configuration.eventHover);\n\t }\n\t\n\t // unregister previous event handlers to prevent from memory leaks\n\t drops.exit().on('click', null).on('mouseover', null);\n\t\n\t drops.exit().remove();\n\t });\n\t\n\t dropLines.exit().remove();\n\t };\n\t};\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _d = __webpack_require__(1);\n\t\n\tvar _d2 = _interopRequireDefault(_d);\n\t\n\tvar _axes = __webpack_require__(3);\n\t\n\tvar _axes2 = _interopRequireDefault(_axes);\n\t\n\tvar _drops = __webpack_require__(5);\n\t\n\tvar _drops2 = _interopRequireDefault(_drops);\n\t\n\tvar _labels = __webpack_require__(7);\n\t\n\tvar _labels2 = _interopRequireDefault(_labels);\n\t\n\tvar _marker = __webpack_require__(8);\n\t\n\tvar _marker2 = _interopRequireDefault(_marker);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = function (svg, dimensions, scales, configuration) {\n\t var defs = svg.append('defs');\n\t defs.append('clipPath').attr('id', 'timeline-pf-drops-container-clipper').append('rect').attr('id', 'timeline-pf-drops-container-rect').attr('x', 0).attr('y', 0).attr('width', dimensions.width).attr('height', dimensions.height);\n\t\n\t if (configuration.context) {\n\t defs.append('clipPath').attr('id', 'timeline-pf-context-brush-clipper').append('polygon').attr('points', '0,0 ' + dimensions.width + ',0 ' + (dimensions.width + configuration.sliderWidth) + ',' + dimensions.ctxHeight / 2 + ' ' + dimensions.width + ',' + dimensions.ctxHeight + ' 0,' + dimensions.ctxHeight + ' ' + -configuration.sliderWidth + ',' + dimensions.ctxHeight / 2);\n\t }\n\t\n\t var pattern = defs.append('pattern').attr('class', 'timeline-pf-grid-stripes').attr('id', 'timeline-pf-grid-stripes').attr('width', dimensions.width).attr('height', configuration.lineHeight * 2).attr('patternUnits', 'userSpaceOnUse');\n\t pattern.append('rect').attr('width', dimensions.width).attr('height', configuration.lineHeight);\n\t pattern.append('line').attr('x1', 0).attr('x2', dimensions.width).attr('y1', configuration.lineHeight).attr('y2', configuration.lineHeight);\n\t pattern.append('line').attr('x1', 0).attr('x2', dimensions.width).attr('y1', '1px').attr('y2', '1px');\n\t\n\t var gridContainer = svg.append('g').classed('timeline-pf-grid', true).attr('fill', 'url(#timeline-pf-grid-stripes)').attr('transform', 'translate(' + (configuration.padding.left + configuration.labelWidth) + ', ' + configuration.padding.top + ')');\n\t\n\t var labelsContainer = svg.append('g').classed('timeline-pf-labels', true).attr('transform', 'translate(' + configuration.padding.left + ', ' + configuration.padding.top + ')');\n\t\n\t var axesContainer = svg.append('g').classed('timeline-pf-axes', true).attr('transform', 'translate(' + (configuration.padding.left + configuration.labelWidth) + ', ' + configuration.padding.top + ')');\n\t\n\t var dropsContainer = svg.append('g').classed('timeline-pf-drops-container', true).attr('clip-path', 'url(#timeline-pf-drops-container-clipper)').attr('transform', 'translate(' + (configuration.padding.left + configuration.labelWidth) + ', ' + configuration.padding.top + ')');\n\t\n\t if (configuration.marker) {\n\t var stampContainer = svg.append('g').classed('timeline-pf-timestamp', true).attr('height', 30).attr('transform', 'translate(' + (configuration.padding.left + configuration.labelWidth) + ', ' + configuration.padding.top + ')');\n\t\n\t (0, _marker2.default)(gridContainer, stampContainer, scales, dimensions, configuration.dateFormat);\n\t }\n\t\n\t var axes = (0, _axes2.default)(axesContainer, scales, configuration, dimensions);\n\t var labels = (0, _labels2.default)(labelsContainer, scales, configuration);\n\t var drops = (0, _drops2.default)(dropsContainer, scales, configuration);\n\t\n\t return function (data) {\n\t drops(data);\n\t labels(data);\n\t axes(data);\n\t };\n\t};\n\n/***/ },\n/* 7 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\texports.default = function (container, scales, config) {\n\t return function (data) {\n\t var labels = container.selectAll('.timeline-pf-label').data(data);\n\t\n\t var countEvents = function countEvents(data) {\n\t var count = 0;\n\t for (var i = 0; i < data.length; i++) {\n\t if (data[i].hasOwnProperty(\"events\")) {\n\t count += data[i].events.length;\n\t } else {\n\t count++;\n\t }\n\t }\n\t return count;\n\t };\n\t var text = function text(d) {\n\t var count = countEvents(d.data);\n\t if (d.name === undefined || d.name === '') {\n\t return count + ' Events';\n\t }\n\t return d.name + (count >= 0 ? ' (' + count + ')' : '');\n\t };\n\t\n\t labels.text(text);\n\t\n\t labels.enter().append('text').classed('timeline-pf-label', true).attr('transform', function (d, idx) {\n\t return 'translate(' + (config.labelWidth - 20) + ' ' + (scales.y(idx) + config.lineHeight / 2) + ')';\n\t }).attr('dominant-baseline', 'central').attr('text-anchor', 'end').text(text);\n\t\n\t labels.exit().remove();\n\t };\n\t};\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _d = __webpack_require__(1);\n\t\n\tvar _d2 = _interopRequireDefault(_d);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = function (gridContainer, stampContainer, scales, dimensions, dateFormat) {\n\t gridContainer.append('rect').attr('width', dimensions.width).attr('height', dimensions.height).on(\"mouseover\", function () {\n\t marker.style(\"display\", null);\n\t timeStamp.style(\"display\", null);\n\t timeBox.style(\"display\", null);\n\t }).on(\"mouseout\", function () {\n\t marker.style(\"display\", \"none\");\n\t timeStamp.style(\"display\", \"none\");\n\t timeBox.style(\"display\", \"none\");\n\t }).on('mousemove', moveMarker);\n\t\n\t var marker = gridContainer.append('line').classed('timeline-pf-marker', true).attr('y1', 0).attr('y2', dimensions.height);\n\t\n\t var domain = scales.x.domain();\n\t\n\t var timeBox = stampContainer.append('rect').attr('height', '24').attr('width', '150').style('display', 'none');\n\t\n\t var timeStamp = stampContainer.append('text').text(dateFormat(domain[1])).attr('transform', 'translate(' + scales.x.range()[1] + ')').attr('text-anchor', 'middle');\n\t\n\t function moveMarker() {\n\t var pos = _d2.default.mouse(gridContainer[0][0])[0];\n\t marker.attr('transform', 'translate(' + pos + ')');\n\t timeBox.attr('transform', 'translate(' + (pos - 75) + ', -25)');\n\t timeStamp.attr('transform', 'translate(' + pos + ', -9)').text(dateFormat(scales.x.invert(pos)));\n\t }\n\t};\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _d = __webpack_require__(1);\n\t\n\tvar _d2 = _interopRequireDefault(_d);\n\t\n\tvar _configurable = __webpack_require__(12);\n\t\n\tvar _configurable2 = _interopRequireDefault(_configurable);\n\t\n\tvar _config = __webpack_require__(2);\n\t\n\tvar _config2 = _interopRequireDefault(_config);\n\t\n\tvar _drawer = __webpack_require__(6);\n\t\n\tvar _drawer2 = _interopRequireDefault(_drawer);\n\t\n\tvar _context = __webpack_require__(4);\n\t\n\tvar _context2 = _interopRequireDefault(_context);\n\t\n\tvar _zoom = __webpack_require__(11);\n\t\n\tvar _zoom2 = _interopRequireDefault(_zoom);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction timeline() {\n\t var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\t\n\t var finalConfiguration = _extends({}, _config2.default, config);\n\t var zoomInstance = new _zoom2.default();\n\t\n\t var yScale = function yScale(data) {\n\t return _d2.default.scale.ordinal().domain(data.map(function (d) {\n\t return d.name;\n\t })).range(data.map(function (d, i) {\n\t return i * finalConfiguration.lineHeight;\n\t }));\n\t };\n\t\n\t var xScale = function xScale(width, timeBounds) {\n\t return _d2.default.time.scale().range([0, width]).domain(timeBounds);\n\t };\n\t\n\t function timelineGraph(selection) {\n\t selection.each(function selector(data) {\n\t\n\t var ungroupedData = data;\n\t data = groupEvents(data, finalConfiguration.eventGrouping);\n\t\n\t finalConfiguration.lineHeight = data.length <= 3 ? 80 : 40;\n\t finalConfiguration.contextStart = finalConfiguration.contextStart || _d2.default.min(getDates(data));\n\t finalConfiguration.contextEnd = finalConfiguration.contextEnd || finalConfiguration.end;\n\t\n\t _d2.default.select(this).select('.timeline-pf-chart').remove();\n\t _d2.default.select(this).selectAll('.timeline-pf-zoom').remove();\n\t\n\t var SCALEHEIGHT = 40;\n\t var outer_width = finalConfiguration.width || selection.node().clientWidth;\n\t var height = data.length * finalConfiguration.lineHeight;\n\t\n\t var dimensions = {\n\t width: outer_width - finalConfiguration.padding.right - finalConfiguration.padding.left - finalConfiguration.labelWidth - (finalConfiguration.slider ? finalConfiguration.sliderWidth : 0),\n\t height: height,\n\t ctxHeight: finalConfiguration.contextHeight,\n\t outer_height: height + finalConfiguration.padding.top + finalConfiguration.padding.bottom + (finalConfiguration.context ? finalConfiguration.contextHeight + SCALEHEIGHT : 0)\n\t };\n\t var scales = {\n\t x: xScale(dimensions.width, [finalConfiguration.start, finalConfiguration.end]),\n\t y: yScale(data),\n\t ctx: xScale(dimensions.width, [finalConfiguration.contextStart, finalConfiguration.contextEnd]),\n\t cty: _d2.default.scale.linear().range([dimensions.ctxHeight, 0])\n\t };\n\t\n\t var svg = _d2.default.select(this).append('svg').classed('timeline-pf-chart', true).attr({\n\t width: outer_width,\n\t height: dimensions.outer_height\n\t });\n\t var draw = (0, _drawer2.default)(svg, dimensions, scales, finalConfiguration).bind(selection);\n\t\n\t draw(data);\n\t\n\t if (finalConfiguration.context) {\n\t (0, _context2.default)(svg, scales, dimensions, finalConfiguration, ungroupedData);\n\t }\n\t\n\t zoomInstance.updateZoom(_d2.default.select(this), dimensions, scales, finalConfiguration, data, draw);\n\t });\n\t }\n\t\n\t (0, _configurable2.default)(timelineGraph, finalConfiguration);\n\t timelineGraph.Zoom = zoomInstance;\n\t return timelineGraph;\n\t}\n\t\n\t_d2.default.chart = _d2.default.chart || {};\n\t_d2.default.chart.timeline = timeline;\n\t\n\tmodule.exports = timeline;\n\t\n\tfunction getDates(data) {\n\t var toReturn = [];\n\t for (var i = 0; i < data.length; i++) {\n\t for (var j = 0; j < data[i].data.length; j++) {\n\t toReturn.push(data[i].data[j].date);\n\t }\n\t }\n\t return toReturn;\n\t}\n\t\n\tfunction groupEvents(data, toRoundTo) {\n\t var rounded = void 0,\n\t temp = {},\n\t toReturn = [];\n\t\n\t for (var i = 0; i < data.length; i++) {\n\t toReturn[i] = {};\n\t toReturn[i].name = data[i].name;\n\t toReturn[i].data = [];\n\t for (var j = 0; j < data[i].data.length; j++) {\n\t rounded = Math.round(data[i].data[j].date / toRoundTo) * toRoundTo;\n\t if (temp[rounded] === undefined) {\n\t temp[rounded] = [];\n\t }\n\t temp[rounded].push(data[i].data[j]);\n\t }\n\t for (var k in temp) {\n\t if (temp[k].length === 1) {\n\t toReturn[i].data.push(temp[k][0]);\n\t } else {\n\t var tempDate = new Date();\n\t tempDate.setTime(+k);\n\t toReturn[i].data.push({ 'date': tempDate, 'events': temp[k] });\n\t }\n\t }\n\t temp = {};\n\t }\n\t return toReturn;\n\t}\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\texports.default = function (xScale, configuration, width) {\n\t var tickFormatData = configuration.tickFormat.map(function (t) {\n\t return t.slice(0);\n\t });\n\t var tickFormat = configuration.locale ? configuration.locale.timeFormat.multi(tickFormatData) : _d2.default.time.format.multi(tickFormatData);\n\t var numTicks = Math.round(width / 70);\n\t var axis = _d2.default.svg.axis().scale(xScale).orient('bottom').ticks(numTicks).tickFormat(tickFormat);\n\t\n\t if (typeof configuration.axisFormat === 'function') {\n\t configuration.axisFormat(axis);\n\t }\n\t\n\t return axis;\n\t};\n\t\n\tvar _d = __webpack_require__(1);\n\t\n\tvar _d2 = _interopRequireDefault(_d);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _d = __webpack_require__(1);\n\t\n\tvar _d2 = _interopRequireDefault(_d);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar zoom = function () {\n\t function zoom() {\n\t _classCallCheck(this, zoom);\n\t }\n\t\n\t _createClass(zoom, [{\n\t key: 'updateZoom',\n\t value: function updateZoom(container, dimensions, scales, configuration, data, callback) {\n\t var _this = this;\n\t\n\t this.ONE_MINUTE = 60 * 1000;\n\t this.ONE_HOUR = this.ONE_MINUTE * 60;\n\t this.ONE_DAY = this.ONE_HOUR * 24;\n\t this.ONE_WEEK = this.ONE_DAY * 7;\n\t this.ONE_MONTH = this.ONE_DAY * 30;\n\t\n\t this.grid = _d2.default.select('.timeline-pf-grid');\n\t this.dimensions = dimensions;\n\t this.scales = scales;\n\t this.configuration = configuration;\n\t this.data = data;\n\t this.callback = callback;\n\t this.sliderScale = _d2.default.scale.log().domain([configuration.minScale, configuration.maxScale]).range([configuration.minScale, configuration.maxScale]).base(2);\n\t this.zoom = _d2.default.behavior.zoom().size([dimensions.width, dimensions.height]).scaleExtent([configuration.minScale, configuration.maxScale]).x(scales.x);\n\t this.brush = null;\n\t\n\t if (configuration.slider) {\n\t var zoomIn = container.append('button').attr('type', 'button').attr('class', 'btn btn-default timeline-pf-zoom timeline-pf-zoom-in').attr('id', 'timeline-pf-zoom-in').style('top', configuration.padding.top + 'px').on('click', function () {\n\t _this.zoomClick();\n\t });\n\t zoomIn.style('left', configuration.padding.left + configuration.labelWidth + dimensions.width + (configuration.sliderWidth - zoomIn.node().offsetWidth) + 'px').append('i').attr('class', 'fa fa-plus').attr('id', 'timeline-pf-zoom-in-icon');\n\t\n\t var zoomOut = container.append('button').attr('type', 'button').attr('class', 'btn btn-default timeline-pf-zoom').attr('id', 'timeline-pf-zoom-out').style('top', configuration.padding.top + dimensions.height - 26 + 'px').on('click', function () {\n\t _this.zoomClick();\n\t });\n\t zoomOut.style('left', configuration.padding.left + configuration.labelWidth + dimensions.width + (configuration.sliderWidth - zoomOut.node().offsetWidth) + 'px').append('i').attr('class', 'fa fa-minus').attr('id', 'timeline-pf-zoom-out-icon');\n\t\n\t var zoomSlider = container.append('input').attr('type', 'range').attr('class', 'timeline-pf-zoom timeline-pf-slider').attr('id', 'timeline-pf-slider').style('width', dimensions.height - zoomIn.node().offsetHeight * 2 + 'px').attr('value', this.sliderScale(this.zoom.scale())).attr('min', configuration.minScale).attr('max', configuration.maxScale).attr('step', 0.1).on('input', function () {\n\t _this.zoomClick();\n\t }).on('change', function () {\n\t _this.zoomClick();\n\t });\n\t zoomSlider.style('top', configuration.padding.top + (dimensions.height - zoomIn.node().offsetHeight * 2) / 2 + zoomIn.node().offsetHeight - zoomSlider.node().offsetHeight / 2 + 'px').style('left', configuration.padding.left + configuration.labelWidth + dimensions.width + configuration.sliderWidth - (zoomIn.node().offsetWidth - zoomSlider.node().offsetHeight) / 2 - zoomSlider.node().offsetWidth / 2 + 'px');\n\t }\n\t\n\t if (configuration.context) {\n\t this.brush = _d2.default.svg.brush().x(scales.ctx).extent(scales.x.domain()).on(\"brush\", function () {\n\t _this.brushed();\n\t });\n\t\n\t container.select('.timeline-pf-brush').call(this.brush).selectAll(\"rect\").attr(\"height\", dimensions.ctxHeight);\n\t }\n\t\n\t if (configuration.eventZoom) {\n\t this.zoom.on('zoomend', configuration.eventZoom);\n\t }\n\t\n\t this.zoom.on('zoom', function () {\n\t requestAnimationFrame(function () {\n\t return callback(data);\n\t });\n\t if (configuration.slider) {\n\t container.select('#timeline-pf-slider').property('value', _this.sliderScale(_this.zoom.scale()));\n\t }\n\t if (configuration.context) {\n\t _this.brush.extent(_this.scales.x.domain());\n\t container.select('.timeline-pf-brush').call(_this.brush);\n\t }\n\t });\n\t return this.grid.call(this.zoom).on(\"dblclick.zoom\", null);\n\t }\n\t }, {\n\t key: 'brushed',\n\t value: function brushed() {\n\t if (this.brush.empty() !== true) {\n\t var extent = this.brush.extent();\n\t this.zoomFilter(extent[0], extent[1], 0);\n\t }\n\t }\n\t }, {\n\t key: 'zoomClick',\n\t value: function zoomClick() {\n\t var factor = 0.5,\n\t target_zoom = 1,\n\t duration = 0,\n\t center = this.dimensions.width / 2,\n\t extent = this.zoom.scaleExtent(),\n\t translate0 = void 0,\n\t l = void 0,\n\t view = {\n\t x: this.zoom.translate()[0],\n\t k: this.zoom.scale()\n\t };\n\t switch (_d2.default.event.target.id) {\n\t case 'timeline-pf-zoom-in-icon':\n\t case 'timeline-pf-zoom-in':\n\t target_zoom = this.zoom.scale() * (1 + factor);\n\t duration = 100;\n\t break;\n\t case 'timeline-pf-zoom-out-icon':\n\t case 'timeline-pf-zoom-out':\n\t target_zoom = this.zoom.scale() * (1 + factor * -1);\n\t duration = 100;\n\t break;\n\t case 'timeline-pf-slider':\n\t target_zoom = this.sliderScale.invert(_d2.default.event.target.value);\n\t break;\n\t default:\n\t target_zoom = this.zoom.scale();\n\t }\n\t\n\t if (target_zoom < extent[0]) {\n\t target_zoom = extent[0];\n\t } else if (target_zoom > extent[1]) {\n\t target_zoom = extent[1];\n\t }\n\t\n\t translate0 = (center - view.x) / view.k;\n\t view.k = target_zoom;\n\t l = translate0 * view.k + view.x;\n\t\n\t view.x += center - l;\n\t this.interpolateZoom([view.x, 0], view.k, duration);\n\t }\n\t }, {\n\t key: 'interpolateZoom',\n\t value: function interpolateZoom(translate, scale, duration) {\n\t var _this2 = this;\n\t\n\t return _d2.default.transition().duration(duration).tween(\"zoom\", function () {\n\t if (_this2.zoom) {\n\t var iTranslate = _d2.default.interpolate(_this2.zoom.translate(), translate),\n\t iScale = _d2.default.interpolate(_this2.zoom.scale(), scale);\n\t return function (t) {\n\t _this2.zoom.scale(iScale(t)).translate(iTranslate(t));\n\t _this2.zoom.event(_this2.grid);\n\t };\n\t }\n\t });\n\t }\n\t }, {\n\t key: 'getRange',\n\t value: function getRange(Extent) {\n\t return Extent[1].getTime() - Extent[0].getTime();\n\t }\n\t }, {\n\t key: 'getScale',\n\t value: function getScale(oldRange, newRange) {\n\t return oldRange / newRange;\n\t }\n\t }, {\n\t key: 'zoomFilter',\n\t value: function zoomFilter(fromTime, toTime) {\n\t var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;\n\t\n\t var range = toTime - fromTime,\n\t width = this.dimensions.width,\n\t extent = this.zoom.scaleExtent(),\n\t translate = this.zoom.translate()[0],\n\t curZoom = this.zoom.scale(),\n\t target_zoom = this.zoom.scale(),\n\t cur_width = this.getRange(this.scales.x.domain()),\n\t startDiff = void 0;\n\t\n\t target_zoom = target_zoom * this.getScale(this.getRange(this.scales.x.domain()), range); // new scale is ratio between old and new date ranges\n\t\n\t if (target_zoom < extent[0]) {\n\t target_zoom = extent[0];\n\t } else if (target_zoom > extent[1]) {\n\t target_zoom = extent[1];\n\t }\n\t\n\t startDiff = (this.scales.x.domain()[0] - fromTime) * (width / cur_width); // difference between leftmost dates in px\n\t\n\t translate += startDiff;\n\t\n\t translate = translate * (target_zoom / curZoom); // scale translate value (in px) to new zoom scale\n\t\n\t this.interpolateZoom([translate, 0], target_zoom, duration);\n\t }\n\t }]);\n\t\n\t return zoom;\n\t}();\n\t\n\texports.default = zoom;\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tfunction configurable(targetFunction, config) {\n\t\n\t function configure(item) {\n\t return function(value) {\n\t if (!arguments.length) return config[item];\n\t config[item] = value;\n\t\n\t return targetFunction;\n\t };\n\t }\n\t\n\t for (var item in config) {\n\t targetFunction[item] = configure(item);\n\t }\n\t}\n\t\n\tif(true) {\n\t module.exports = configurable;\n\t} else if ('function' == typeof define && define.amd) {\n\t define([], configurable);\n\t} else {\n\t window.configurable = configurable;\n\t}\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** timeline.js\n **/"," \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\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 4ed1e0ac1cfe23274dde\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"d3\"\n ** module id = 1\n ** module chunks = 0\n **/","import d3 from 'd3';\n\nconst config = {\n start: new Date(0),\n end: new Date(),\n contextStart: null,\n contextEnd: null,\n minScale: 0,\n maxScale: Infinity,\n width: null,\n padding: {\n top: 30, //must be at least 24 for marker to display properly\n left: 40,\n bottom: 40,\n right: 40\n },\n lineHeight: 40,\n labelWidth: 140,\n sliderWidth: 30,\n contextHeight: 50,\n locale: null,\n axisFormat: null,\n tickFormat: [\n ['.%L', (d) => d.getMilliseconds()],\n [':%S', (d) => d.getSeconds()],\n ['%I:%M', (d) => d.getMinutes()],\n ['%I %p', (d) => d.getHours()],\n ['%b %d', (d) => d.getMonth() && d.getDate()],\n ['%b', (d) => d.getMonth()],\n ['%Y', () => true]\n ],\n eventHover: null,\n eventZoom: null,\n eventClick: null,\n eventLineColor: (d, i) => {\n switch (i % 5) {\n case 0:\n return \"#00659c\";\n case 1:\n return \"#0088ce\";\n case 2:\n return \"#3f9c35\";\n case 3:\n return \"#ec7a08\";\n case 4:\n return \"#cc0000\";\n }\n },\n eventColor: null,\n eventShape: (d) => {\n if(d.hasOwnProperty(\"events\")) {\n return '\\uf140';\n } else {\n return '\\uf111';\n }\n },\n eventPopover: (d) => {\n var popover = '';\n if(d.hasOwnProperty(\"events\")) {\n popover = `Group of ${d.events.length} events`\n } else {\n for (var i in d.details) {\n popover = popover + i.charAt(0).toUpperCase() + i.slice(1) + ': ' + d.details[i] + '
';\n }\n popover = popover + 'Date: ' + d.date;\n }\n return popover;\n },\n marker: true,\n context: true,\n slider: true,\n eventGrouping: 60000, //one minute\n};\n\nconfig.dateFormat = config.locale ? config.locale.timeFormat('%a %x %I:%M %p') : d3.time.format('%a %x %I:%M %p');\n\nmodule.exports = config;\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/config.js\n **/","import xAxis from '../xAxis';\n\nexport default (axesContainer, scales, configuration, dimensions) => data => {\n const axis = (scope, scale) => {\n const selection = axesContainer.selectAll(`.timeline-pf-x-axis.${scope}`).data([{}]);\n\n selection.enter()\n .append('g')\n .classed('timeline-pf-x-axis', true)\n .classed(scope, true)\n .call(xAxis(scale, configuration))\n .attr('transform', `translate(0,${scope === 'focus' ? dimensions.height : dimensions.height + dimensions.ctxHeight + 40})`);\n\n selection.call(xAxis(scale, configuration, dimensions.width));\n\n selection.exit().remove();\n };\n\n axis('focus', scales.x);\n\n if (configuration.context) {\n axis('context', scales.ctx);\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/drawer/axes.js\n **/","import d3 from 'd3';\n\nexport default (svg, scales, dimensions, configuration, data) => {\n\n const contextContainer = svg.append(\"g\")\n .classed('timeline-pf-context', true)\n .attr('width', dimensions.width)\n .attr('height', dimensions.ctxHeight)\n .attr('clip-path', 'url(#timeline-pf-context-brush-clipper)')\n .attr(\"transform\", `translate(${configuration.padding.left + configuration.labelWidth},${configuration.padding.top + dimensions.height + 40})`);\n\n let counts = [];\n let roundTo = 3600000;//one hour\n let barWidth = Math.ceil((roundTo / (scales.ctx.domain()[1] - scales.ctx.domain()[0])) * dimensions.width);\n\n countEvents(data, roundTo, counts);\n counts.sort((a,b) => {\n if(a.date < b.date) {\n return -1;\n }\n if(a.date > b.date) {\n return 1;\n }\n return 0;\n });\n scales.cty.domain([0, d3.max(counts, (d) => {return d.count;})]);\n\n contextContainer.selectAll(\".timeline-pf-bar\")\n .data(counts)\n .enter().append(\"rect\")\n .attr(\"class\", \"timeline-pf-bar\")\n .attr(\"x\", d => {return scales.ctx(d.date); })\n .attr(\"y\", d => {return scales.cty(d.count); })\n .attr(\"width\", barWidth)\n .attr(\"height\", d => { return dimensions.ctxHeight - scales.cty(d.count); });\n\n contextContainer.append(\"g\")\n .attr(\"class\", \"timeline-pf-brush\");\n\n};\n\nfunction countEvents(data, toRoundTo, counts) {\n let temp = {};\n for(let i in data) {\n for (let j in data[i].data) {\n let rounded = Math.floor(data[i].data[j].date / toRoundTo) * toRoundTo;\n temp[rounded] = temp[rounded] + 1 || 1;\n }\n }\n for(let k in temp) {\n let tempDate = new Date();\n tempDate.setTime(+k);\n counts.push({'date': tempDate, 'count': temp[k]});\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/drawer/context.js\n **/","export default (svg, scales, configuration) => function dropsSelector(data) {\n const dropLines = svg.selectAll('.timeline-pf-drop-line').data(data);\n\n dropLines.enter()\n .append('g')\n .classed('timeline-pf-drop-line', true)\n .attr('transform', (d, idx) => `translate(0, ${scales.y(idx) + (configuration.lineHeight/2)})`)\n .attr('fill', configuration.eventLineColor);\n\n dropLines.each(function dropLineDraw(drop) {\n\n const drops = d3.select(this).selectAll('.timeline-pf-drop').data(drop.data);\n\n drops.attr('transform', (d) => `translate(${scales.x(d.date)})`);\n\n const shape = drops.enter()\n .append('text')\n .classed('timeline-pf-drop', true)\n .classed('timeline-pf-event-group', (d) => {return d.hasOwnProperty(\"events\") ? true : false})\n .attr('transform', (d) => `translate(${scales.x(d.date)})`)\n .attr('fill', configuration.eventColor)\n .attr('text-anchor', 'middle')\n .attr('data-toggle', 'popover')\n .attr('data-html', 'true')\n .attr('data-content', configuration.eventPopover)\n .attr('dominant-baseline', 'central')\n .text(configuration.eventShape);\n\n if (configuration.eventClick) {\n shape.on('click', configuration.eventClick);\n }\n\n if (configuration.eventHover) {\n shape.on('mouseover', configuration.eventHover);\n }\n\n // unregister previous event handlers to prevent from memory leaks\n drops.exit()\n .on('click', null)\n .on('mouseover', null);\n\n drops.exit().remove();\n });\n\n dropLines.exit().remove();\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/drawer/drops.js\n **/","import d3 from 'd3';\nimport axesFactory from './axes';\nimport dropsFactory from './drops';\nimport labelsFactory from './labels';\nimport markerFactory from './marker';\n\nexport default (svg, dimensions, scales, configuration) => {\n const defs = svg.append('defs');\n defs.append('clipPath')\n .attr('id', 'timeline-pf-drops-container-clipper')\n .append('rect')\n .attr('id', 'timeline-pf-drops-container-rect')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', dimensions.width)\n .attr('height', dimensions.height);\n\n if(configuration.context) {\n defs.append('clipPath')\n .attr('id', 'timeline-pf-context-brush-clipper')\n .append('polygon')\n .attr('points', `0,0 ${dimensions.width},0 ${dimensions.width + configuration.sliderWidth},${dimensions.ctxHeight/2} ${dimensions.width},${dimensions.ctxHeight} 0,${dimensions.ctxHeight} ${-configuration.sliderWidth},${dimensions.ctxHeight/2}`);\n }\n\n const pattern = defs.append('pattern')\n .attr('class', 'timeline-pf-grid-stripes')\n .attr('id', 'timeline-pf-grid-stripes')\n .attr('width', dimensions.width)\n .attr('height', (configuration.lineHeight) * 2)\n .attr('patternUnits', 'userSpaceOnUse');\n pattern.append('rect')\n .attr('width', dimensions.width)\n .attr('height', configuration.lineHeight);\n pattern.append('line')\n .attr('x1', 0)\n .attr('x2', dimensions.width)\n .attr('y1', configuration.lineHeight)\n .attr('y2', configuration.lineHeight);\n pattern.append('line')\n .attr('x1', 0)\n .attr('x2', dimensions.width)\n .attr('y1', '1px')\n .attr('y2', '1px');\n\n const gridContainer = svg.append('g')\n .classed('timeline-pf-grid', true)\n .attr('fill', 'url(#timeline-pf-grid-stripes)')\n .attr('transform', `translate(${configuration.padding.left + configuration.labelWidth}, ${configuration.padding.top})`);\n\n const labelsContainer = svg.append('g')\n .classed('timeline-pf-labels', true)\n .attr('transform', `translate(${configuration.padding.left}, ${configuration.padding.top})`);\n\n const axesContainer = svg.append('g')\n .classed('timeline-pf-axes', true)\n .attr('transform', `translate(${configuration.padding.left + configuration.labelWidth}, ${configuration.padding.top})`);\n\n const dropsContainer = svg.append('g')\n .classed('timeline-pf-drops-container', true)\n .attr('clip-path', 'url(#timeline-pf-drops-container-clipper)')\n .attr('transform', `translate(${configuration.padding.left + configuration.labelWidth}, ${configuration.padding.top})`);\n\n if (configuration.marker) {\n const stampContainer = svg.append('g')\n .classed('timeline-pf-timestamp', true)\n .attr('height', 30)\n .attr('transform', `translate(${configuration.padding.left + configuration.labelWidth}, ${configuration.padding.top})`);\n\n markerFactory(gridContainer, stampContainer, scales, dimensions, configuration.dateFormat);\n }\n\n const axes = axesFactory(axesContainer, scales, configuration, dimensions);\n const labels = labelsFactory(labelsContainer, scales, configuration);\n const drops = dropsFactory(dropsContainer, scales, configuration);\n\n\n return data => {\n drops(data);\n labels(data);\n axes(data);\n };\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/drawer/index.js\n **/","export default (container, scales, config) => data => {\n const labels = container.selectAll('.timeline-pf-label').data(data);\n\n const countEvents = data => {\n let count = 0;\n for (let i = 0; i < data.length; i++) {\n if (data[i].hasOwnProperty(\"events\")) {\n count += data[i].events.length;\n } else {\n count++;\n }\n }\n return count\n }\n const text = d => {\n const count = countEvents(d.data);\n if (d.name === undefined || d.name ===''){\n return `${count} Events`;\n }\n return d.name + (count >= 0 ? ` (${count})` : '');\n };\n\n labels.text(text);\n\n labels.enter()\n .append('text')\n .classed('timeline-pf-label', true)\n .attr('transform', (d, idx) => `translate(${config.labelWidth - 20} ${scales.y(idx) + (config.lineHeight/2)})`)\n .attr('dominant-baseline', 'central')\n .attr('text-anchor', 'end')\n .text(text);\n\n labels.exit().remove();\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/drawer/labels.js\n **/","import d3 from 'd3';\n\nexport default (gridContainer, stampContainer, scales, dimensions, dateFormat) => {\n gridContainer.append('rect')\n .attr('width', dimensions.width)\n .attr('height', dimensions.height)\n .on(\"mouseover\", function() {\n marker.style(\"display\", null);\n timeStamp.style(\"display\", null);\n timeBox.style(\"display\", null);\n })\n .on(\"mouseout\", function() {\n marker.style(\"display\", \"none\");\n timeStamp.style(\"display\", \"none\");\n timeBox.style(\"display\", \"none\");\n })\n .on('mousemove', moveMarker);\n\n\n var marker = gridContainer.append('line')\n .classed('timeline-pf-marker', true)\n .attr('y1', 0)\n .attr('y2', dimensions.height);\n\n const domain = scales.x.domain();\n\n var timeBox = stampContainer.append('rect')\n .attr('height', '24')\n .attr('width', '150')\n .style('display', 'none');\n\n var timeStamp = stampContainer.append('text')\n .text(dateFormat(domain[1]))\n .attr('transform', `translate(${scales.x.range()[1]})`)\n .attr('text-anchor', 'middle');\n\n function moveMarker() {\n var pos = d3.mouse(gridContainer[0][0])[0]\n marker.attr('transform', `translate(${pos})`);\n timeBox.attr('transform', `translate(${pos - 75}, -25)`);\n timeStamp.attr('transform', `translate(${pos}, -9)`)\n .text(dateFormat(scales.x.invert(pos)));\n\n }\n\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/drawer/marker.js\n **/","import d3 from 'd3';\n\nimport configurable from 'configurable.js';\nimport defaultConfig from './config';\nimport drawer from './drawer';\nimport context from './drawer/context';\nimport Zoom from './zoom';\n\n\nfunction timeline(config = {}) {\n const finalConfiguration = {...defaultConfig, ...config};\n let zoomInstance = new Zoom();\n\n const yScale = (data) => {\n return d3.scale.ordinal()\n .domain(data.map((d) => d.name))\n .range(data.map((d, i) => i * finalConfiguration.lineHeight));\n };\n\n const xScale = (width, timeBounds) => {\n return d3.time.scale()\n .range([0, width])\n .domain(timeBounds);\n };\n\n function timelineGraph(selection) {\n selection.each(function selector(data) {\n\n let ungroupedData = data;\n data = groupEvents(data, finalConfiguration.eventGrouping);\n\n finalConfiguration.lineHeight = (data.length <= 3) ? 80 : 40;\n finalConfiguration.contextStart = finalConfiguration.contextStart || d3.min(getDates(data));\n finalConfiguration.contextEnd = finalConfiguration.contextEnd || finalConfiguration.end;\n\n d3.select(this).select('.timeline-pf-chart').remove();\n d3.select(this).selectAll('.timeline-pf-zoom').remove();\n\n const SCALEHEIGHT = 40;\n let outer_width = finalConfiguration.width || selection.node().clientWidth;\n const height = data.length * finalConfiguration.lineHeight;\n\n const dimensions = {\n width: outer_width - finalConfiguration.padding.right - finalConfiguration.padding.left - finalConfiguration.labelWidth - ((finalConfiguration.slider) ? finalConfiguration.sliderWidth : 0),\n height,\n ctxHeight: finalConfiguration.contextHeight,\n outer_height: height + finalConfiguration.padding.top + finalConfiguration.padding.bottom + ((finalConfiguration.context) ? finalConfiguration.contextHeight + SCALEHEIGHT: 0)\n };\n const scales = {\n x: xScale(dimensions.width, [finalConfiguration.start, finalConfiguration.end]),\n y: yScale(data),\n ctx: xScale(dimensions.width, [finalConfiguration.contextStart, finalConfiguration.contextEnd]),\n cty: d3.scale.linear().range([dimensions.ctxHeight, 0])\n };\n\n const svg = d3.select(this).append('svg')\n .classed('timeline-pf-chart', true)\n .attr({\n width: outer_width,\n height: dimensions.outer_height,\n });\n const draw = drawer(svg, dimensions, scales, finalConfiguration).bind(selection);\n\n draw(data);\n\n if (finalConfiguration.context) {\n context(svg, scales, dimensions, finalConfiguration, ungroupedData);\n }\n\n zoomInstance.updateZoom(d3.select(this), dimensions, scales, finalConfiguration, data, draw);\n\n });\n }\n\n configurable(timelineGraph, finalConfiguration);\n timelineGraph.Zoom = zoomInstance;\n return timelineGraph;\n}\n\nd3.chart = d3.chart || {};\nd3.chart.timeline = timeline;\n\nmodule.exports = timeline;\n\nfunction getDates(data) {\n let toReturn = [];\n for (let i = 0; i < data.length; i++){\n for (let j = 0; j < data[i].data.length; j++){\n toReturn.push(data[i].data[j].date);\n }\n }\n return toReturn;\n}\n\nfunction groupEvents(data, toRoundTo) {\n let rounded,\n temp = {},\n toReturn = [];\n\n for (let i = 0; i < data.length; i++) {\n toReturn[i] = {};\n toReturn[i].name = data[i].name;\n toReturn[i].data = [];\n for (let j = 0; j < data[i].data.length; j++) {\n rounded = Math.round(data[i].data[j].date / toRoundTo) * toRoundTo;\n if (temp[rounded] === undefined) {\n temp[rounded] = [];\n }\n temp[rounded].push(data[i].data[j]);\n }\n for (let k in temp) {\n if (temp[k].length === 1) {\n toReturn[i].data.push(temp[k][0]);\n } else {\n let tempDate = new Date();\n tempDate.setTime(+k);\n toReturn[i].data.push({'date': tempDate,'events': temp[k]});\n }\n }\n temp = {};\n }\n return toReturn;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/timeline.js\n **/","import d3 from 'd3';\n\nexport default function(xScale, configuration, width) {\n const tickFormatData = configuration.tickFormat.map(t => t.slice(0));\n const tickFormat = configuration.locale ? configuration.locale.timeFormat.multi(tickFormatData) : d3.time.format.multi(tickFormatData);\n let numTicks = Math.round(width / 70);\n const axis = d3.svg.axis()\n .scale(xScale)\n .orient('bottom')\n .ticks(numTicks)\n .tickFormat(tickFormat);\n\n if (typeof configuration.axisFormat === 'function') {\n configuration.axisFormat(axis);\n }\n\n return axis;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/xAxis.js\n **/","import d3 from 'd3';\n\nexport default class zoom {\n\n constructor() {\n }\n\n updateZoom(container, dimensions, scales, configuration, data, callback) {\n this.ONE_MINUTE = 60 * 1000;\n this.ONE_HOUR = this.ONE_MINUTE * 60;\n this.ONE_DAY = this.ONE_HOUR * 24;\n this.ONE_WEEK = this.ONE_DAY * 7;\n this.ONE_MONTH = this.ONE_DAY * 30;\n\n this.grid = d3.select('.timeline-pf-grid');\n this.dimensions = dimensions;\n this.scales = scales;\n this.configuration = configuration;\n this.data = data;\n this.callback = callback;\n this.sliderScale = d3.scale.log()\n .domain([configuration.minScale, configuration.maxScale])\n .range([configuration.minScale, configuration.maxScale])\n .base(2);\n this.zoom = d3.behavior.zoom()\n .size([dimensions.width, dimensions.height])\n .scaleExtent([configuration.minScale, configuration.maxScale])\n .x(scales.x);\n this.brush = null;\n\n if (configuration.slider) {\n const zoomIn = container.append('button')\n .attr('type', 'button')\n .attr('class', 'btn btn-default timeline-pf-zoom timeline-pf-zoom-in')\n .attr('id', 'timeline-pf-zoom-in')\n .style('top', `${configuration.padding.top}px`)\n .on('click', () => {this.zoomClick()});\n zoomIn\n .style('left', `${configuration.padding.left + configuration.labelWidth + dimensions.width + (configuration.sliderWidth - zoomIn.node().offsetWidth)}px`)\n .append('i')\n .attr('class', 'fa fa-plus')\n .attr('id', 'timeline-pf-zoom-in-icon');\n\n const zoomOut = container.append('button')\n .attr('type', 'button')\n .attr('class', 'btn btn-default timeline-pf-zoom')\n .attr('id', 'timeline-pf-zoom-out')\n .style('top', `${configuration.padding.top + dimensions.height - 26}px`)\n .on('click', () => {this.zoomClick()});\n zoomOut\n .style('left', `${configuration.padding.left + configuration.labelWidth + dimensions.width + (configuration.sliderWidth - zoomOut.node().offsetWidth)}px`)\n .append('i')\n .attr('class', 'fa fa-minus')\n .attr('id', 'timeline-pf-zoom-out-icon');\n\n const zoomSlider = container.append('input')\n .attr('type', 'range')\n .attr('class', 'timeline-pf-zoom timeline-pf-slider')\n .attr('id', 'timeline-pf-slider')\n .style('width', `${dimensions.height - (zoomIn.node().offsetHeight * 2)}px`)\n .attr('value', this.sliderScale(this.zoom.scale()))\n .attr('min', configuration.minScale)\n .attr('max', configuration.maxScale)\n .attr('step', 0.1)\n .on('input', () => {this.zoomClick()})\n .on('change', () => {this.zoomClick()});\n zoomSlider\n .style('top', `${configuration.padding.top + ((dimensions.height - (zoomIn.node().offsetHeight) * 2) / 2) + zoomIn.node().offsetHeight - (zoomSlider.node().offsetHeight / 2)}px`)\n .style('left', `${configuration.padding.left + configuration.labelWidth + dimensions.width +\n configuration.sliderWidth - ((zoomIn.node().offsetWidth - zoomSlider.node().offsetHeight) / 2) - (zoomSlider.node().offsetWidth / 2)}px`);\n }\n\n if(configuration.context) {\n this.brush = d3.svg.brush()\n .x(scales.ctx)\n .extent(scales.x.domain())\n .on(\"brush\", () => {this.brushed()});\n\n container.select('.timeline-pf-brush')\n .call(this.brush)\n .selectAll(\"rect\")\n .attr(\"height\", dimensions.ctxHeight);\n }\n\n\n if (configuration.eventZoom) {\n this.zoom.on('zoomend', configuration.eventZoom);\n }\n\n this.zoom.on('zoom', () => {\n requestAnimationFrame(() => callback(data));\n if(configuration.slider) {\n container.select('#timeline-pf-slider').property('value', this.sliderScale(this.zoom.scale()));\n }\n if(configuration.context) {\n this.brush.extent(this.scales.x.domain());\n container.select('.timeline-pf-brush').call(this.brush);\n }\n });\n return this.grid.call(this.zoom)\n .on(\"dblclick.zoom\", null);\n }\n\n brushed() {\n if(this.brush.empty() !== true) {\n let extent = this.brush.extent();\n this.zoomFilter(extent[0], extent[1], 0);\n }\n }\n\n zoomClick() {\n let factor = 0.5,\n target_zoom = 1,\n duration = 0,\n center = this.dimensions.width / 2,\n extent = this.zoom.scaleExtent(),\n translate0,\n l,\n view = {\n x: this.zoom.translate()[0],\n k: this.zoom.scale()\n };\n switch (d3.event.target.id) {\n case 'timeline-pf-zoom-in-icon':\n case 'timeline-pf-zoom-in':\n target_zoom = this.zoom.scale() * (1 + factor);\n duration = 100;\n break;\n case 'timeline-pf-zoom-out-icon':\n case 'timeline-pf-zoom-out':\n target_zoom = this.zoom.scale() * (1 + factor * -1);\n duration = 100;\n break;\n case 'timeline-pf-slider':\n target_zoom = this.sliderScale.invert(d3.event.target.value);\n break;\n default:\n target_zoom = this.zoom.scale();\n }\n\n if (target_zoom < extent[0]) {\n target_zoom = extent[0];\n } else if (target_zoom > extent[1]) {\n target_zoom = extent[1];\n }\n\n translate0 = (center - view.x) / view.k;\n view.k = target_zoom;\n l = translate0 * view.k + view.x;\n\n view.x += center - l;\n this.interpolateZoom([view.x, 0], view.k, duration);\n }\n\n interpolateZoom(translate, scale, duration) {\n return d3.transition().duration(duration).tween(\"zoom\", () => {\n if(this.zoom) {\n let iTranslate = d3.interpolate(this.zoom.translate(), translate),\n iScale = d3.interpolate(this.zoom.scale(), scale);\n return (t) => {\n this.zoom\n .scale(iScale(t))\n .translate(iTranslate(t));\n this.zoom.event(this.grid);\n };\n }\n });\n }\n\n getRange(Extent) {\n return Extent[1].getTime() - Extent[0].getTime();\n }\n\n getScale(oldRange, newRange) {\n return oldRange / newRange;\n }\n\n zoomFilter(fromTime, toTime, duration = 100) {\n let range = toTime - fromTime,\n width = this.dimensions.width,\n extent = this.zoom.scaleExtent(),\n translate = this.zoom.translate()[0],\n curZoom = this.zoom.scale(),\n target_zoom = this.zoom.scale(),\n cur_width = this.getRange(this.scales.x.domain()),\n startDiff;\n\n target_zoom = target_zoom * this.getScale(this.getRange(this.scales.x.domain()), range); // new scale is ratio between old and new date ranges\n\n if (target_zoom < extent[0]) {\n target_zoom = extent[0];\n } else if (target_zoom > extent[1]) {\n target_zoom = extent[1];\n }\n\n startDiff = (this.scales.x.domain()[0] - fromTime) * (width / cur_width); // difference between leftmost dates in px\n\n translate += startDiff;\n\n translate = translate * (target_zoom / curZoom); // scale translate value (in px) to new zoom scale\n\n this.interpolateZoom([translate, 0], target_zoom, duration)\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/zoom.js\n **/","'use strict';\n\nfunction configurable(targetFunction, config) {\n\n function configure(item) {\n return function(value) {\n if (!arguments.length) return config[item];\n config[item] = value;\n\n return targetFunction;\n };\n }\n\n for (var item in config) {\n targetFunction[item] = configure(item);\n }\n}\n\nif('object' == typeof exports && 'undefined' != typeof module) {\n module.exports = configurable;\n} else if ('function' == typeof define && define.amd) {\n define([], configurable);\n} else {\n window.configurable = configurable;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/configurable.js/configurable.js\n ** module id = 12\n ** module chunks = 0\n **/"],"sourceRoot":""}