{"version":3,"file":"ganttDiagram-2c592def.js","sources":["../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/ascending.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/descending.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/bisector.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/number.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/bisect.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/ticks.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/max.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/min.js","../../../node_modules/.pnpm/d3-axis@3.0.0/node_modules/d3-axis/src/identity.js","../../../node_modules/.pnpm/d3-axis@3.0.0/node_modules/d3-axis/src/axis.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/math.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/lab.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/numberArray.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/array.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/date.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/object.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/value.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/round.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/hcl.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatDecimal.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/exponent.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatGroup.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatNumerals.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatSpecifier.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatTrim.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatPrefixAuto.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatRounded.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatTypes.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/identity.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/locale.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/defaultLocale.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/precisionFixed.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/precisionPrefix.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/precisionRound.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/constant.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/number.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/continuous.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/tickFormat.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/linear.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/nice.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/interval.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/millisecond.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/duration.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/second.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/minute.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/hour.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/day.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/week.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/month.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/year.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/utcMinute.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/utcHour.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/utcDay.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/utcWeek.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/utcMonth.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/utcYear.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/ticks.js","../../../node_modules/.pnpm/d3-time-format@4.1.0/node_modules/d3-time-format/src/locale.js","../../../node_modules/.pnpm/d3-time-format@4.1.0/node_modules/d3-time-format/src/defaultLocale.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/time.js","../src/diagrams/gantt/parser/gantt.jison","../../../node_modules/.pnpm/dayjs@1.11.7/node_modules/dayjs/plugin/isoWeek.js","../../../node_modules/.pnpm/dayjs@1.11.7/node_modules/dayjs/plugin/customParseFormat.js","../../../node_modules/.pnpm/dayjs@1.11.7/node_modules/dayjs/plugin/advancedFormat.js","../src/diagrams/gantt/ganttDb.js","../src/diagrams/gantt/ganttRenderer.js","../src/diagrams/gantt/styles.js","../src/diagrams/gantt/ganttDiagram.ts"],"sourcesContent":["export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function ticks(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","/** mermaid\n * https://mermaidjs.github.io/\n * (c) 2015 Knut Sveidqvist\n * MIT license.\n */\n%lex\n\n%options case-insensitive\n\n%x click\n%x href\n%x callbackname\n%x callbackargs\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n%%\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\n\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n[\\}] { this.popState(); }\n[^\\}]* return \"acc_descr_multiline_value\";\n\n\\%\\%(?!\\{)*[^\\n]* /* skip comments */\n[^\\}]\\%\\%*[^\\n]* /* skip comments */\n\\%\\%*[^\\n]*[\\n]* /* do nothing */\n\n[\\n]+ return 'NL';\n\\s+ /* skip whitespace */\n\\#[^\\n]* /* skip comments */\n\\%%[^\\n]* /* skip comments */\n\n/*\n---interactivity command---\n'href' adds a link to the specified task. 'href' can only be specified when the\nline was introduced with 'click'.\n'href \"\"' attaches the specified link to the task that was specified by 'click'.\n*/\n\"href\"[\\s]+[\"] this.begin(\"href\");\n[\"] this.popState();\n[^\"]* return 'href';\n\n/*\n---interactivity command---\n'call' adds a callback to the specified task. 'call' can only be specified when\nthe line was introdcued with 'click'.\n'call ()' attaches the function 'callbackname' with the specified\narguments to the task that was specified by 'click'.\nFunction arguments are optional: 'call ()' simply executes 'callbackname' without any arguments.\n*/\n\"call\"[\\s]+ this.begin(\"callbackname\");\n\\([\\s]*\\) this.popState();\n\\( this.popState(); this.begin(\"callbackargs\");\n[^(]* return 'callbackname';\n\\) this.popState();\n[^)]* return 'callbackargs';\n\n/*\n'click' is the keyword to introduce a line that contains interactivity commands.\n'click' must be followed by an existing task-id. All commands are attached to\nthat id.\n'click ' can be followed by href or call commands in any desired order\n*/\n\"click\"[\\s]+ this.begin(\"click\");\n[\\s\\n] this.popState();\n[^\\s\\n]* return 'click';\n\n\"gantt\" return 'gantt';\n\"dateFormat\"\\s[^#\\n;]+ return 'dateFormat';\n\"inclusiveEndDates\" return 'inclusiveEndDates';\n\"topAxis\" return 'topAxis';\n\"axisFormat\"\\s[^#\\n;]+ return 'axisFormat';\n\"tickInterval\"\\s[^#\\n;]+ return 'tickInterval';\n\"includes\"\\s[^#\\n;]+ return 'includes';\n\"excludes\"\\s[^#\\n;]+ return 'excludes';\n\"todayMarker\"\\s[^\\n;]+ return 'todayMarker';\n\\d\\d\\d\\d\"-\"\\d\\d\"-\"\\d\\d return 'date';\n\"title\"\\s[^#\\n;]+ return 'title';\n\"accDescription\"\\s[^#\\n;]+ return 'accDescription'\n\"section\"\\s[^#:\\n;]+ return 'section';\n[^#:\\n;]+ return 'taskTxt';\n\":\"[^#\\n;]+ return 'taskData';\n\":\" return ':';\n<> return 'EOF';\n. return 'INVALID';\n\n/lex\n\n%left '^'\n\n%start start\n\n%% /* language grammar */\n\nstart\n\t: directive start\n\t| gantt document 'EOF' { return $2; }\n\t;\n\ndocument\n\t: /* empty */ { $$ = [] }\n\t| document line {$1.push($2);$$ = $1}\n\t;\n\nline\n\t: SPACE statement { $$ = $2 }\n\t| statement { $$ = $1 }\n\t| NL { $$=[];}\n\t| EOF { $$=[];}\n\t;\n\nstatement\n : dateFormat {yy.setDateFormat($1.substr(11));$$=$1.substr(11);}\n | inclusiveEndDates {yy.enableInclusiveEndDates();$$=$1.substr(18);}\n | topAxis {yy.TopAxis();$$=$1.substr(8);}\n | axisFormat {yy.setAxisFormat($1.substr(11));$$=$1.substr(11);}\n | tickInterval {yy.setTickInterval($1.substr(13));$$=$1.substr(13);}\n | excludes {yy.setExcludes($1.substr(9));$$=$1.substr(9);}\n | includes {yy.setIncludes($1.substr(9));$$=$1.substr(9);}\n | todayMarker {yy.setTodayMarker($1.substr(12));$$=$1.substr(12);}\n | title {yy.setDiagramTitle($1.substr(6));$$=$1.substr(6);}\n | acc_title acc_title_value { $$=$2.trim();yy.setAccTitle($$); }\n | acc_descr acc_descr_value { $$=$2.trim();yy.setAccDescription($$); }\n | acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); } | section {yy.addSection($1.substr(8));$$=$1.substr(8);}\n | clickStatement\n | taskTxt taskData {yy.addTask($1,$2);$$='task';}\n | directive\n ;\n\ndirective\n : openDirective typeDirective closeDirective 'NL'\n | openDirective typeDirective ':' argDirective closeDirective 'NL'\n ;\n\n/*\nclick allows any combination of href and call.\n*/\nclickStatement\n : click callbackname {$$ = $1;yy.setClickEvent($1, $2, null);}\n | click callbackname callbackargs {$$ = $1;yy.setClickEvent($1, $2, $3);}\n\n | click callbackname href {$$ = $1;yy.setClickEvent($1, $2, null);yy.setLink($1,$3);}\n | click callbackname callbackargs href {$$ = $1;yy.setClickEvent($1, $2, $3);yy.setLink($1,$4);}\n\n | click href callbackname {$$ = $1;yy.setClickEvent($1, $3, null);yy.setLink($1,$2);}\n | click href callbackname callbackargs {$$ = $1;yy.setClickEvent($1, $3, $4);yy.setLink($1,$2);}\n\n | click href {$$ = $1;yy.setLink($1, $2);}\n ;\n\nclickStatementDebug\n : click callbackname {$$=$1 + ' ' + $2;}\n | click callbackname href {$$=$1 + ' ' + $2 + ' ' + $3;}\n\n | click callbackname callbackargs {$$=$1 + ' ' + $2 + ' ' + $3;}\n | click callbackname callbackargs href {$$=$1 + ' ' + $2 + ' ' + $3 + ' ' + $4;}\n\n | click href callbackname {$$=$1 + ' ' + $2 + ' ' + $3;}\n | click href callbackname callbackargs {$$=$1 + ' ' + $2 + ' ' + $3 + ' ' + $4;}\n\n | click href {$$=$1 + ' ' + $2;}\n ;\n\nopenDirective\n : open_directive { yy.parseDirective('%%{', 'open_directive'); }\n ;\n\ntypeDirective\n : type_directive { yy.parseDirective($1, 'type_directive'); }\n ;\n\nargDirective\n : arg_directive { $1 = $1.trim().replace(/'/g, '\"'); yy.parseDirective($1, 'arg_directive'); }\n ;\n\ncloseDirective\n : close_directive { yy.parseDirective('}%%', 'close_directive', 'gantt'); }\n ;\n\n%%\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeek=t()}(this,(function(){\"use strict\";var e=\"day\";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf(\"year\"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,\"week\")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return\"isoweek\"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf(\"day\"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf(\"day\"):n.bind(this)(e,t)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d\\d/,r=/\\d\\d?/,i=/\\d*[^-_:/,()\\s\\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_advancedFormat=t()}(this,(function(){\"use strict\";return function(e,t){var r=t.prototype,n=r.format;r.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return n.bind(this)(e);var s=this.$utils(),a=(e||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case\"Q\":return Math.ceil((t.$M+1)/3);case\"Do\":return r.ordinal(t.$D);case\"gggg\":return t.weekYear();case\"GGGG\":return t.isoWeekYear();case\"wo\":return r.ordinal(t.week(),\"W\");case\"w\":case\"ww\":return s.s(t.week(),\"w\"===e?1:2,\"0\");case\"W\":case\"WW\":return s.s(t.isoWeek(),\"W\"===e?1:2,\"0\");case\"k\":case\"kk\":return s.s(String(0===t.$H?24:t.$H),\"k\"===e?1:2,\"0\");case\"X\":return Math.floor(t.$d.getTime()/1e3);case\"x\":return t.$d.getTime();case\"z\":return\"[\"+t.offsetName()+\"]\";case\"zzz\":return\"[\"+t.offsetName(\"long\")+\"]\";default:return e}}));return n.bind(this)(a)}}}));","import { sanitizeUrl } from '@braintree/sanitize-url';\nimport dayjs from 'dayjs';\nimport dayjsIsoWeek from 'dayjs/plugin/isoWeek.js';\nimport dayjsCustomParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport dayjsAdvancedFormat from 'dayjs/plugin/advancedFormat.js';\nimport { log } from '../../logger';\nimport * as configApi from '../../config';\nimport utils from '../../utils';\nimport mermaidAPI from '../../mermaidAPI';\n\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../../commonDb';\n\ndayjs.extend(dayjsIsoWeek);\ndayjs.extend(dayjsCustomParseFormat);\ndayjs.extend(dayjsAdvancedFormat);\n\nlet dateFormat = '';\nlet axisFormat = '';\nlet tickInterval = undefined;\nlet todayMarker = '';\nlet includes = [];\nlet excludes = [];\nlet links = {};\nlet sections = [];\nlet tasks = [];\nlet currentSection = '';\nconst tags = ['active', 'done', 'crit', 'milestone'];\nlet funs = [];\nlet inclusiveEndDates = false;\nlet topAxis = false;\n\n// The serial order of the task in the script\nlet lastOrder = 0;\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nexport const clear = function () {\n sections = [];\n tasks = [];\n currentSection = '';\n funs = [];\n taskCnt = 0;\n lastTask = undefined;\n lastTaskID = undefined;\n rawTasks = [];\n dateFormat = '';\n axisFormat = '';\n tickInterval = undefined;\n todayMarker = '';\n includes = [];\n excludes = [];\n inclusiveEndDates = false;\n topAxis = false;\n lastOrder = 0;\n links = {};\n commonClear();\n};\n\nexport const setAxisFormat = function (txt) {\n axisFormat = txt;\n};\n\nexport const getAxisFormat = function () {\n return axisFormat;\n};\n\nexport const setTickInterval = function (txt) {\n tickInterval = txt;\n};\n\nexport const getTickInterval = function () {\n return tickInterval;\n};\n\nexport const setTodayMarker = function (txt) {\n todayMarker = txt;\n};\n\nexport const getTodayMarker = function () {\n return todayMarker;\n};\n\nexport const setDateFormat = function (txt) {\n dateFormat = txt;\n};\n\nexport const enableInclusiveEndDates = function () {\n inclusiveEndDates = true;\n};\n\nexport const endDatesAreInclusive = function () {\n return inclusiveEndDates;\n};\n\nexport const enableTopAxis = function () {\n topAxis = true;\n};\n\nexport const topAxisEnabled = function () {\n return topAxis;\n};\n\nexport const getDateFormat = function () {\n return dateFormat;\n};\n\nexport const setIncludes = function (txt) {\n includes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getIncludes = function () {\n return includes;\n};\nexport const setExcludes = function (txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getExcludes = function () {\n return excludes;\n};\n\nexport const getLinks = function () {\n return links;\n};\n\nexport const addSection = function (txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function () {\n return sections;\n};\n\nexport const getTasks = function () {\n let allItemsPricessed = compileTasks();\n const maxDepth = 10;\n let iterationCount = 0;\n while (!allItemsPricessed && iterationCount < maxDepth) {\n allItemsPricessed = compileTasks();\n iterationCount++;\n }\n\n tasks = rawTasks;\n\n return tasks;\n};\n\nexport const isInvalidDate = function (date, dateFormat, excludes, includes) {\n if (includes.includes(date.format(dateFormat.trim()))) {\n return false;\n }\n if (date.isoWeekday() >= 6 && excludes.includes('weekends')) {\n return true;\n }\n if (excludes.includes(date.format('dddd').toLowerCase())) {\n return true;\n }\n return excludes.includes(date.format(dateFormat.trim()));\n};\n\n/**\n * TODO: fully document what this function does and what types it accepts\n *\n * @param {object} task - The task to check.\n * @param {string | Date} task.startTime - Might be a `Date` or a `string`.\n * TODO: is this always a Date?\n * @param {string | Date} task.endTime - Might be a `Date` or a `string`.\n * TODO: is this always a Date?\n * @param {string} dateFormat - Dayjs date format string.\n * @param {*} excludes\n * @param {*} includes\n */\nconst checkTaskDates = function (task, dateFormat, excludes, includes) {\n if (!excludes.length || task.manualEndTime) {\n return;\n }\n let startTime;\n if (task.startTime instanceof Date) {\n startTime = dayjs(task.startTime);\n } else {\n startTime = dayjs(task.startTime, dateFormat, true);\n }\n startTime = startTime.add(1, 'd');\n\n let originalEndTime;\n if (task.endTime instanceof Date) {\n originalEndTime = dayjs(task.endTime);\n } else {\n originalEndTime = dayjs(task.endTime, dateFormat, true);\n }\n const [fixedEndTime, renderEndTime] = fixTaskDates(\n startTime,\n originalEndTime,\n dateFormat,\n excludes,\n includes\n );\n task.endTime = fixedEndTime.toDate();\n task.renderEndTime = renderEndTime;\n};\n\n/**\n * TODO: what does this function do?\n *\n * @param {dayjs.Dayjs} startTime - The start time.\n * @param {dayjs.Dayjs} endTime - The original end time (will return a different end time if it's invalid).\n * @param {string} dateFormat - Dayjs date format string.\n * @param {*} excludes\n * @param {*} includes\n * @returns {[endTime: dayjs.Dayjs, renderEndTime: Date | null]} The new `endTime`, and the end time to render.\n * `renderEndTime` may be `null` if `startTime` is newer than `endTime`.\n */\nconst fixTaskDates = function (startTime, endTime, dateFormat, excludes, includes) {\n let invalid = false;\n let renderEndTime = null;\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n invalid = isInvalidDate(startTime, dateFormat, excludes, includes);\n if (invalid) {\n endTime = endTime.add(1, 'd');\n }\n startTime = startTime.add(1, 'd');\n }\n return [endTime, renderEndTime];\n};\n\nconst getStartDate = function (prevTime, dateFormat, str) {\n str = str.trim();\n\n // Test for after\n const re = /^after\\s+([\\d\\w- ]+)/;\n const afterStatement = re.exec(str.trim());\n\n if (afterStatement !== null) {\n // check all after ids and take the latest\n let latestEndingTask = null;\n afterStatement[1].split(' ').forEach(function (id) {\n let task = findTaskById(id);\n if (task !== undefined) {\n if (!latestEndingTask) {\n latestEndingTask = task;\n } else {\n if (task.endTime > latestEndingTask.endTime) {\n latestEndingTask = task;\n }\n }\n }\n });\n\n if (!latestEndingTask) {\n const dt = new Date();\n dt.setHours(0, 0, 0, 0);\n return dt;\n } else {\n return latestEndingTask.endTime;\n }\n }\n\n // Check for actual date set\n let mDate = dayjs(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n log.debug('Invalid date:' + str);\n log.debug('With date format:' + dateFormat.trim());\n const d = new Date(str);\n if (d === undefined || isNaN(d.getTime())) {\n throw new Error('Invalid date:' + str);\n }\n return d;\n }\n};\n\n/**\n * Parse a string into the args for `dayjs.add()`.\n *\n * The string have to be compound by a value and a shorthand duration unit. For example `5d`\n * represents 5 days.\n *\n * Please be aware that 1 day may be 23 or 25 hours, if the user lives in an area\n * that has daylight savings time (or even 23.5/24.5 hours in Lord Howe Island!)\n *\n * Shorthand unit supported are:\n *\n * - `y` for years\n * - `M` for months\n * - `w` for weeks\n * - `d` for days\n * - `h` for hours\n * - `s` for seconds\n * - `ms` for milliseconds\n *\n * @param {string} str - A string representing the duration.\n * @returns {[value: number, unit: dayjs.ManipulateType]} Arguments to pass to `dayjs.add()`\n */\nconst parseDuration = function (str) {\n const statement = /^(\\d+(?:\\.\\d+)?)([Mdhmswy]|ms)$/.exec(str.trim());\n if (statement !== null) {\n return [Number.parseFloat(statement[1]), statement[2]];\n }\n // NaN means an invalid duration\n return [NaN, 'ms'];\n};\n\nconst getEndDate = function (prevTime, dateFormat, str, inclusive = false) {\n str = str.trim();\n\n // Check for actual date\n let mDate = dayjs(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n if (inclusive) {\n mDate = mDate.add(1, 'd');\n }\n return mDate.toDate();\n }\n\n let endTime = dayjs(prevTime);\n const [durationValue, durationUnit] = parseDuration(str);\n if (!Number.isNaN(durationValue)) {\n const newEndTime = endTime.add(durationValue, durationUnit);\n if (newEndTime.isValid()) {\n endTime = newEndTime;\n }\n }\n return endTime.toDate();\n};\n\nlet taskCnt = 0;\nconst parseId = function (idStr) {\n if (idStr === undefined) {\n taskCnt = taskCnt + 1;\n return 'task' + taskCnt;\n }\n return idStr;\n};\n// id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\nconst compileData = function (prevTask, dataStr) {\n let ds;\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n let endTimeData = '';\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = prevTask.endTime;\n endTimeData = data[0];\n break;\n case 2:\n task.id = parseId();\n task.startTime = getStartDate(undefined, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(undefined, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n default:\n }\n\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = dayjs(endTimeData, 'YYYY-MM-DD', true).isValid();\n checkTaskDates(task, dateFormat, excludes, includes);\n }\n\n return task;\n};\n\nconst parseData = function (prevTaskId, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = {\n type: 'prevTaskEnd',\n id: prevTaskId,\n };\n task.endTime = {\n data: data[0],\n };\n break;\n case 2:\n task.id = parseId();\n task.startTime = {\n type: 'getStartDate',\n startData: data[0],\n };\n task.endTime = {\n data: data[1],\n };\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = {\n type: 'getStartDate',\n startData: data[1],\n };\n task.endTime = {\n data: data[2],\n };\n break;\n default:\n }\n\n return task;\n};\n\nlet lastTask;\nlet lastTaskID;\nlet rawTasks = [];\nconst taskDb = {};\nexport const addTask = function (descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: { data: data },\n task: descr,\n classes: [],\n };\n const taskInfo = parseData(lastTaskID, data);\n rawTask.raw.startTime = taskInfo.startTime;\n rawTask.raw.endTime = taskInfo.endTime;\n rawTask.id = taskInfo.id;\n rawTask.prevTaskId = lastTaskID;\n rawTask.active = taskInfo.active;\n rawTask.done = taskInfo.done;\n rawTask.crit = taskInfo.crit;\n rawTask.milestone = taskInfo.milestone;\n rawTask.order = lastOrder;\n\n lastOrder++;\n\n const pos = rawTasks.push(rawTask);\n\n lastTaskID = rawTask.id;\n // Store cross ref\n taskDb[rawTask.id] = pos - 1;\n};\n\nexport const findTaskById = function (id) {\n const pos = taskDb[id];\n return rawTasks[pos];\n};\n\nexport const addTaskOrg = function (descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: [],\n };\n const taskInfo = compileData(lastTask, data);\n newTask.startTime = taskInfo.startTime;\n newTask.endTime = taskInfo.endTime;\n newTask.id = taskInfo.id;\n newTask.active = taskInfo.active;\n newTask.done = taskInfo.done;\n newTask.crit = taskInfo.crit;\n newTask.milestone = taskInfo.milestone;\n lastTask = newTask;\n tasks.push(newTask);\n};\n\nconst compileTasks = function () {\n const compileTask = function (pos) {\n const task = rawTasks[pos];\n let startTime = '';\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd': {\n const prevTask = findTaskById(task.prevTaskId);\n task.startTime = prevTask.endTime;\n break;\n }\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData);\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n break;\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(\n rawTasks[pos].startTime,\n dateFormat,\n rawTasks[pos].raw.endTime.data,\n inclusiveEndDates\n );\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true;\n rawTasks[pos].manualEndTime = dayjs(\n rawTasks[pos].raw.endTime.data,\n 'YYYY-MM-DD',\n true\n ).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes, includes);\n }\n }\n\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids Comma separated list of ids\n * @param _linkStr URL to create a link for\n */\nexport const setLink = function (ids, _linkStr) {\n let linkStr = _linkStr;\n if (configApi.getConfig().securityLevel !== 'loose') {\n linkStr = sanitizeUrl(_linkStr);\n }\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n pushFun(id, () => {\n window.open(linkStr, '_self');\n });\n links[id] = linkStr;\n }\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n *\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function (ids, className) {\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n rawTask.classes.push(className);\n }\n });\n};\n\nconst setClickFun = function (id, functionName, functionArgs) {\n if (configApi.getConfig().securityLevel !== 'loose') {\n return;\n }\n if (functionName === undefined) {\n return;\n }\n\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n pushFun(id, () => {\n utils.runFunc(functionName, ...argList);\n });\n }\n};\n\n/**\n * The callbackFunction is executed in a click event bound to the task with the specified id or the\n * task's assigned text\n *\n * @param id The task's id\n * @param callbackFunction A function to be executed when clicked on the task or the task's text\n */\nconst pushFun = function (id, callbackFunction) {\n funs.push(\n function () {\n // const elem = d3.select(element).select(`[id=\"${id}\"]`)\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n },\n function () {\n // const elem = d3.select(element).select(`[id=\"${id}-text\"]`)\n const elem = document.querySelector(`[id=\"${id}-text\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n }\n );\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function (ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Binds all functions previously added to fun (specified through click) to the element\n *\n * @param element\n */\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element);\n });\n};\n\nexport default {\n parseDirective,\n getConfig: () => configApi.getConfig().gantt,\n clear,\n setDateFormat,\n getDateFormat,\n enableInclusiveEndDates,\n endDatesAreInclusive,\n enableTopAxis,\n topAxisEnabled,\n setAxisFormat,\n getAxisFormat,\n setTickInterval,\n getTickInterval,\n setTodayMarker,\n getTodayMarker,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setIncludes,\n getIncludes,\n setExcludes,\n getExcludes,\n setClickEvent,\n setLink,\n getLinks,\n bindFunctions,\n parseDuration,\n isInvalidDate,\n};\n\n/**\n * @param data\n * @param task\n * @param tags\n */\nfunction getTaskTags(data, task, tags) {\n let matchFound = true;\n while (matchFound) {\n matchFound = false;\n tags.forEach(function (t) {\n const pattern = '^\\\\s*' + t + '\\\\s*$';\n const regex = new RegExp(pattern);\n if (data[0].match(regex)) {\n task[t] = true;\n data.shift(1);\n matchFound = true;\n }\n });\n }\n}\n","import dayjs from 'dayjs';\nimport { log } from '../../logger';\nimport {\n select,\n scaleTime,\n min,\n max,\n scaleLinear,\n interpolateHcl,\n axisBottom,\n axisTop,\n timeFormat,\n timeMinute,\n timeHour,\n timeDay,\n timeWeek,\n timeMonth,\n} from 'd3';\nimport common from '../common/common';\nimport { getConfig } from '../../config';\nimport { configureSvgSize } from '../../setupGraphViewbox';\n\nexport const setConf = function () {\n log.debug('Something is calling, setConf, remove the call');\n};\n\nlet w;\nexport const draw = function (text, id, version, diagObj) {\n const conf = getConfig().gantt;\n // diagObj.db.clear();\n // parser.parse(text);\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n const elem = doc.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (w === undefined) {\n w = 1200;\n }\n\n if (conf.useWidth !== undefined) {\n w = conf.useWidth;\n }\n\n const taskArray = diagObj.db.getTasks();\n\n // Set height based on number of tasks\n const h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding;\n\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n const svg = root.select(`[id=\"${id}\"]`);\n\n // Set timescale\n const timeScale = scaleTime()\n .domain([\n min(taskArray, function (d) {\n return d.startTime;\n }),\n max(taskArray, function (d) {\n return d.endTime;\n }),\n ])\n .rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\n\n let categories = [];\n\n for (const element of taskArray) {\n categories.push(element.type);\n }\n\n const catsUnfiltered = categories; // for vert labels\n\n categories = checkUnique(categories);\n\n /**\n * @param a\n * @param b\n */\n function taskCompare(a, b) {\n const taskA = a.startTime;\n const taskB = b.startTime;\n let result = 0;\n if (taskA > taskB) {\n result = 1;\n } else if (taskA < taskB) {\n result = -1;\n }\n return result;\n }\n\n // Sort the task array using the above taskCompare() so that\n // tasks are created based on their order of startTime\n taskArray.sort(taskCompare);\n\n makeGant(taskArray, w, h);\n\n configureSvgSize(svg, h, w, conf.useMaxWidth);\n\n svg\n .append('text')\n .text(diagObj.db.getDiagramTitle())\n .attr('x', w / 2)\n .attr('y', conf.titleTopMargin)\n .attr('class', 'titleText');\n\n /**\n * @param tasks\n * @param pageWidth\n * @param pageHeight\n */\n function makeGant(tasks, pageWidth, pageHeight) {\n const barHeight = conf.barHeight;\n const gap = barHeight + conf.barGap;\n const topPadding = conf.topPadding;\n const leftPadding = conf.leftPadding;\n\n const colorScale = scaleLinear()\n .domain([0, categories.length])\n .range(['#00B9FA', '#F95002'])\n .interpolate(interpolateHcl);\n\n drawExcludeDays(\n gap,\n topPadding,\n leftPadding,\n pageWidth,\n pageHeight,\n tasks,\n diagObj.db.getExcludes(),\n diagObj.db.getIncludes()\n );\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight);\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n\n /**\n * @param theArray\n * @param theGap\n * @param theTopPad\n * @param theSidePad\n * @param theBarHeight\n * @param theColorScale\n * @param w\n */\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w) {\n // Draw background rects covering the entire width of the graph, these form the section rows.\n svg\n .append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad - 2;\n })\n .attr('width', function () {\n return w - conf.rightPadding / 2;\n })\n .attr('height', theGap)\n .attr('class', function (d) {\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n return 'section section' + (i % conf.numberSectionStyles);\n }\n }\n return 'section section0';\n });\n\n // Draw the rects representing the tasks\n const rectangles = svg.append('g').selectAll('rect').data(theArray).enter();\n\n const links = diagObj.db.getLinks();\n\n // Render the tasks with links\n // Render the other tasks\n rectangles\n .append('rect')\n .attr('id', function (d) {\n return d.id;\n })\n .attr('rx', 3)\n .attr('ry', 3)\n .attr('x', function (d) {\n if (d.milestone) {\n return (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) -\n 0.5 * theBarHeight\n );\n }\n return timeScale(d.startTime) + theSidePad;\n })\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad;\n })\n .attr('width', function (d) {\n if (d.milestone) {\n return theBarHeight;\n }\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n })\n .attr('height', theBarHeight)\n .attr('transform-origin', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n\n return (\n (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))\n ).toString() +\n 'px ' +\n (i * theGap + theTopPad + 0.5 * theBarHeight).toString() +\n 'px'\n );\n })\n .attr('class', function (d) {\n const res = 'task';\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskClass = '';\n if (d.active) {\n if (d.crit) {\n taskClass += ' activeCrit';\n } else {\n taskClass = ' active';\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = ' doneCrit';\n } else {\n taskClass = ' done';\n }\n } else {\n if (d.crit) {\n taskClass += ' crit';\n }\n }\n\n if (taskClass.length === 0) {\n taskClass = ' task';\n }\n\n if (d.milestone) {\n taskClass = ' milestone ' + taskClass;\n }\n\n taskClass += secNum;\n\n taskClass += ' ' + classStr;\n\n return res + taskClass;\n });\n\n // Append task labels\n rectangles\n .append('text')\n .attr('id', function (d) {\n return d.id + '-text';\n })\n .text(function (d) {\n return d.task;\n })\n .attr('font-size', conf.fontSize)\n .attr('x', function (d) {\n let startX = timeScale(d.startTime);\n let endX = timeScale(d.renderEndTime || d.endTime);\n if (d.milestone) {\n startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n })\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n })\n .attr('text-height', theBarHeight)\n .attr('class', function (d) {\n const startX = timeScale(d.startTime);\n let endX = timeScale(d.endTime);\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskType = '';\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum;\n } else {\n taskType = 'activeText' + secNum;\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum;\n } else {\n taskType = taskType + ' doneText' + secNum;\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum;\n }\n }\n\n if (d.milestone) {\n taskType += ' milestoneText';\n }\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return classStr + ' taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType;\n } else {\n return (\n classStr +\n ' taskTextOutsideRight taskTextOutside' +\n secNum +\n ' ' +\n taskType +\n ' width-' +\n textWidth\n );\n }\n } else {\n return classStr + ' taskText taskText' + secNum + ' ' + taskType + ' width-' + textWidth;\n }\n });\n\n const securityLevel = getConfig().securityLevel;\n\n // Wrap the tasks in an a tag for working links without javascript\n if (securityLevel === 'sandbox') {\n let sandboxElement;\n sandboxElement = select('#i' + id);\n const doc = sandboxElement.nodes()[0].contentDocument;\n\n rectangles\n .filter(function (d) {\n return links[d.id] !== undefined;\n })\n .each(function (o) {\n var taskRect = doc.querySelector('#' + o.id);\n var taskText = doc.querySelector('#' + o.id + '-text');\n const oldParent = taskRect.parentNode;\n var Link = doc.createElement('a');\n Link.setAttribute('xlink:href', links[o.id]);\n Link.setAttribute('target', '_top');\n oldParent.appendChild(Link);\n Link.appendChild(taskRect);\n Link.appendChild(taskText);\n });\n }\n }\n /**\n * @param theGap\n * @param theTopPad\n * @param theSidePad\n * @param w\n * @param h\n * @param tasks\n * @param excludes\n * @param includes\n */\n function drawExcludeDays(theGap, theTopPad, theSidePad, w, h, tasks, excludes, includes) {\n const minTime = tasks.reduce(\n (min, { startTime }) => (min ? Math.min(min, startTime) : startTime),\n 0\n );\n const maxTime = tasks.reduce((max, { endTime }) => (max ? Math.max(max, endTime) : endTime), 0);\n const dateFormat = diagObj.db.getDateFormat();\n if (!minTime || !maxTime) {\n return;\n }\n\n const excludeRanges = [];\n let range = null;\n let d = dayjs(minTime);\n while (d.valueOf() <= maxTime) {\n if (diagObj.db.isInvalidDate(d, dateFormat, excludes, includes)) {\n if (!range) {\n range = {\n start: d,\n end: d,\n };\n } else {\n range.end = d;\n }\n } else {\n if (range) {\n excludeRanges.push(range);\n range = null;\n }\n }\n d = d.add(1, 'd');\n }\n\n const rectangles = svg.append('g').selectAll('rect').data(excludeRanges).enter();\n\n rectangles\n .append('rect')\n .attr('id', function (d) {\n return 'exclude-' + d.start.format('YYYY-MM-DD');\n })\n .attr('x', function (d) {\n return timeScale(d.start) + theSidePad;\n })\n .attr('y', conf.gridLineStartPadding)\n .attr('width', function (d) {\n const renderEnd = d.end.add(1, 'day');\n return timeScale(renderEnd) - timeScale(d.start);\n })\n .attr('height', h - theTopPad - conf.gridLineStartPadding)\n .attr('transform-origin', function (d, i) {\n return (\n (\n timeScale(d.start) +\n theSidePad +\n 0.5 * (timeScale(d.end) - timeScale(d.start))\n ).toString() +\n 'px ' +\n (i * theGap + 0.5 * h).toString() +\n 'px'\n );\n })\n .attr('class', 'exclude-range');\n }\n\n /**\n * @param theSidePad\n * @param theTopPad\n * @param w\n * @param h\n */\n function makeGrid(theSidePad, theTopPad, w, h) {\n let bottomXAxis = axisBottom(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n\n const reTickInterval = /^([1-9]\\d*)(minute|hour|day|week|month)$/;\n const resultTickInterval = reTickInterval.exec(\n diagObj.db.getTickInterval() || conf.tickInterval\n );\n\n if (resultTickInterval !== null) {\n const every = resultTickInterval[1];\n const interval = resultTickInterval[2];\n switch (interval) {\n case 'minute':\n bottomXAxis.ticks(timeMinute.every(every));\n break;\n case 'hour':\n bottomXAxis.ticks(timeHour.every(every));\n break;\n case 'day':\n bottomXAxis.ticks(timeDay.every(every));\n break;\n case 'week':\n bottomXAxis.ticks(timeWeek.every(every));\n break;\n case 'month':\n bottomXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')')\n .call(bottomXAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10)\n .attr('dy', '1em');\n\n if (diagObj.db.topAxisEnabled() || conf.topAxis) {\n let topXAxis = axisTop(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n\n if (resultTickInterval !== null) {\n const every = resultTickInterval[1];\n const interval = resultTickInterval[2];\n switch (interval) {\n case 'minute':\n topXAxis.ticks(timeMinute.every(every));\n break;\n case 'hour':\n topXAxis.ticks(timeHour.every(every));\n break;\n case 'day':\n topXAxis.ticks(timeDay.every(every));\n break;\n case 'week':\n topXAxis.ticks(timeWeek.every(every));\n break;\n case 'month':\n topXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + theTopPad + ')')\n .call(topXAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10);\n // .attr('dy', '1em');\n }\n }\n\n /**\n * @param theGap\n * @param theTopPad\n */\n function vertLabels(theGap, theTopPad) {\n const numOccurances = [];\n let prevGap = 0;\n\n for (const [i, category] of categories.entries()) {\n numOccurances[i] = [category, getCount(category, catsUnfiltered)];\n }\n\n svg\n .append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text')\n .data(numOccurances)\n .enter()\n .append(function (d) {\n const rows = d[0].split(common.lineBreakRegex);\n const dy = -(rows.length - 1) / 2;\n\n const svgLabel = doc.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('dy', dy + 'em');\n\n for (const [j, row] of rows.entries()) {\n const tspan = doc.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttribute('alignment-baseline', 'central');\n tspan.setAttribute('x', '10');\n if (j > 0) {\n tspan.setAttribute('dy', '1em');\n }\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n })\n .attr('x', 10)\n .attr('y', function (d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1];\n return (d[1] * theGap) / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return (d[1] * theGap) / 2 + theTopPad;\n }\n })\n .attr('font-size', conf.sectionFontSize)\n .attr('font-size', conf.sectionFontSize)\n .attr('class', function (d) {\n for (const [i, category] of categories.entries()) {\n if (d[0] === category) {\n return 'sectionTitle sectionTitle' + (i % conf.numberSectionStyles);\n }\n }\n return 'sectionTitle';\n });\n }\n\n /**\n * @param theSidePad\n * @param theTopPad\n * @param w\n * @param h\n */\n function drawToday(theSidePad, theTopPad, w, h) {\n const todayMarker = diagObj.db.getTodayMarker();\n if (todayMarker === 'off') {\n return;\n }\n\n const todayG = svg.append('g').attr('class', 'today');\n const today = new Date();\n const todayLine = todayG.append('line');\n\n todayLine\n .attr('x1', timeScale(today) + theSidePad)\n .attr('x2', timeScale(today) + theSidePad)\n .attr('y1', conf.titleTopMargin)\n .attr('y2', h - conf.titleTopMargin)\n .attr('class', 'today');\n\n if (todayMarker !== '') {\n todayLine.attr('style', todayMarker.replace(/,/g, ';'));\n }\n }\n\n /**\n * From this stack exchange question:\n * http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n *\n * @param arr\n */\n function checkUnique(arr) {\n const hash = {};\n const result = [];\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!Object.prototype.hasOwnProperty.call(hash, arr[i])) {\n // it works with objects! in FF, at least\n hash[arr[i]] = true;\n result.push(arr[i]);\n }\n }\n return result;\n }\n\n /**\n * From this stack exchange question:\n * http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array\n *\n * @param arr\n */\n function getCounts(arr) {\n let i = arr.length; // const to loop over\n const obj = {}; // obj to store results\n while (i) {\n obj[arr[--i]] = (obj[arr[i]] || 0) + 1; // count occurrences\n }\n return obj;\n }\n\n /**\n * Get specific from everything\n *\n * @param word\n * @param arr\n */\n function getCount(word, arr) {\n return getCounts(arr)[word] || 0;\n }\n};\n\nexport default {\n setConf,\n draw,\n};\n","const getStyles = (options) =>\n `\n .mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n .exclude-range {\n fill: ${options.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${options.sectionBkgColor};\n }\n\n .section2 {\n fill: ${options.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${options.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n // font-size: ${options.ganttFontSize};\n // text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${options.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${options.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n // .taskText:not([font-size]) {\n // font-size: ${options.ganttFontSize};\n // }\n\n .taskTextOutsideRight {\n fill: ${options.taskTextDarkColor};\n text-anchor: start;\n // font-size: ${options.ganttFontSize};\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${options.taskTextDarkColor};\n text-anchor: end;\n // font-size: ${options.ganttFontSize};\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${options.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${options.taskBkgColor};\n stroke: ${options.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${options.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${options.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${options.activeTaskBkgColor};\n stroke: ${options.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${options.doneTaskBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor} ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n`;\n\nexport default getStyles;\n","// @ts-ignore: TODO Fix ts errors\nimport ganttParser from './parser/gantt';\nimport ganttDb from './ganttDb';\nimport ganttRenderer from './ganttRenderer';\nimport ganttStyles from './styles';\nimport { DiagramDefinition } from '../../diagram-api/types';\n\nexport const diagram: DiagramDefinition = {\n parser: ganttParser,\n db: ganttDb,\n renderer: ganttRenderer,\n styles: ganttStyles,\n};\n"],"names":["ascending","a","b","descending","bisector","f","compare1","compare2","delta","d","x","zero","left","lo","hi","mid","right","center","i","number","ascendingBisect","bisectRight","bisect","e10","e5","e2","ticks","start","stop","count","reverse","n","step","tickIncrement","r0","r1","power","error","tickStep","step0","step1","max","values","valueof","value","index","min","identity$2","top","bottom","epsilon","translateX","translateY","y","scale","offset","entering","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","k","transform","context","format","identity","spacing","range","range0","range1","position","selection","path","tick","tickExit","tickEnter","line","text","p","_","axisTop","axisBottom","radians","degrees","K","Xn","Yn","Zn","t0","t1","t2","t3","labConvert","o","Lab","Hcl","hcl2lab","Rgb","rgbConvert","r","rgb2lrgb","g","xyz2lab","z","lab","l","opacity","define","extend","Color","lab2xyz","lrgb2rgb","hclConvert","h","hcl","c","numberArray","t","isNumberArray","genericArray","nb","na","date$1","object","interpolate","constant","color","rgb","string","date","interpolateRound","hue","end","colorHcl","interpolateHcl","formatDecimal","formatDecimalParts","coefficient","exponent","formatGroup","grouping","thousands","width","j","length","formatNumerals","numerals","re","formatSpecifier","specifier","match","FormatSpecifier","formatTrim","s","out","i0","i1","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","identity$1","map","prefixes","formatLocale$1","locale","group","currencyPrefix","currencySuffix","decimal","percent","minus","nan","newFormat","fill","align","sign","symbol","comma","precision","trim","type","prefix","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","padding","formatPrefix","e","defaultLocale","definition","formatLocale","precisionFixed","precisionPrefix","precisionRound","constants","unit","normalize","clamper","bimap","domain","d0","d1","polymap","copy","source","target","transformer","interpolateValue","untransform","unknown","clamp","piecewise","output","input","rescale","interpolateNumber","u","continuous","linearish","prestep","maxIter","linear","initRange","nice","interval","x0","x1","newInterval","floori","offseti","field","previous","test","millisecond","millisecond$1","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","second","utcSecond","minute","timeMinute","hour","timeHour","day","timeDay","weekday","sunday","monday","tuesday","wednesday","thursday","friday","saturday","month","timeMonth","year","timeYear","utcMinute","utcMinute$1","utcHour","utcHour$1","utcDay","utcDay$1","utcWeekday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","utcMonth$1","utcYear","utcYear$1","ticker","week","tickIntervals","tickInterval","utcWeek","timeTicks","timeTickInterval","localDate","utcDate","newDate","m","locale_dateTime","locale_date","locale_time","locale_periods","locale_weekdays","locale_shortWeekdays","locale_months","locale_shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseZone","parseLiteralPercent","pad","pads","newParse","Z","parseSpecifier","timeMonday","parse","numberRe","percentRe","requoteRe","requote","names","name","timeSunday","dISO","timeThursday","dow","UTCdISO","timeFormat","calendar","invert","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","time","timeWeek","timeSecond","parser","v","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","str","hash","self","stack","tstack","vstack","lstack","table","TERROR","EOF","args","lexer","sharedState","yyloc","ranges","lex","token","state","action","yyval","len","newState","expected","errStr","ch","lines","oldLines","past","next","pre","indexed_rule","backup","tempMatch","rules","condition","yy_","$avoiding_name_collisions","YY_START","Parser","module","this","M","Y","D","dayjs","dayjsIsoWeek","dayjsCustomParseFormat","dayjsAdvancedFormat","dateFormat","axisFormat","todayMarker","includes","excludes","links","sections","tasks","currentSection","tags","funs","inclusiveEndDates","topAxis","lastOrder","parseDirective","statement","mermaidAPI","clear","taskCnt","lastTask","lastTaskID","rawTasks","commonClear","setAxisFormat","txt","getAxisFormat","setTickInterval","getTickInterval","setTodayMarker","getTodayMarker","setDateFormat","enableInclusiveEndDates","endDatesAreInclusive","enableTopAxis","topAxisEnabled","getDateFormat","setIncludes","getIncludes","setExcludes","getExcludes","getLinks","addSection","getSections","getTasks","allItemsPricessed","compileTasks","maxDepth","iterationCount","isInvalidDate","checkTaskDates","task","startTime","originalEndTime","fixedEndTime","renderEndTime","fixTaskDates","endTime","invalid","getStartDate","prevTime","afterStatement","latestEndingTask","id","findTaskById","dt","mDate","log","parseDuration","getEndDate","inclusive","durationValue","durationUnit","newEndTime","parseId","idStr","compileData","prevTask","dataStr","ds","data","getTaskTags","endTimeData","parseData","prevTaskId","taskDb","addTask","descr","rawTask","taskInfo","pos","addTaskOrg","newTask","compileTask","allProcessed","setLink","ids","_linkStr","linkStr","configApi.getConfig","sanitizeUrl","pushFun","setClass","className","setClickFun","functionName","functionArgs","argList","item","utils","callbackFunction","elem","setClickEvent","bindFunctions","element","fun","ganttDb","setAccTitle","getAccTitle","setDiagramTitle","getDiagramTitle","setAccDescription","getAccDescription","matchFound","pattern","regex","setConf","w","draw","version","diagObj","conf","getConfig","securityLevel","sandboxElement","select","root","doc","taskArray","svg","timeScale","scaleTime","categories","catsUnfiltered","checkUnique","taskCompare","taskA","taskB","result","makeGant","configureSvgSize","pageWidth","pageHeight","barHeight","gap","topPadding","leftPadding","colorScale","scaleLinear","drawExcludeDays","makeGrid","drawRects","vertLabels","drawToday","theArray","theGap","theTopPad","theSidePad","theBarHeight","theColorScale","category","rectangles","res","classStr","secNum","taskClass","startX","endX","textWidth","taskType","taskRect","taskText","oldParent","Link","minTime","maxTime","excludeRanges","renderEnd","bottomXAxis","resultTickInterval","every","topXAxis","numOccurances","prevGap","getCount","rows","common","dy","svgLabel","row","tspan","todayG","today","todayLine","arr","getCounts","obj","word","ganttRenderer","getStyles","options","ganttStyles","diagram","ganttParser"],"mappings":"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"}