From 3be5285488090ab70254b3080e33e64e6c702d2c Mon Sep 17 00:00:00 2001 From: Christoph Cullmann Date: Mon, 15 Jul 2024 22:27:55 +0200 Subject: sync theme --- .../assets/lib/mermaid/ganttDiagram-c5c3511a.js | 3955 -------------------- 1 file changed, 3955 deletions(-) delete mode 100644 themes/blowfish/assets/lib/mermaid/ganttDiagram-c5c3511a.js (limited to 'themes/blowfish/assets/lib/mermaid/ganttDiagram-c5c3511a.js') diff --git a/themes/blowfish/assets/lib/mermaid/ganttDiagram-c5c3511a.js b/themes/blowfish/assets/lib/mermaid/ganttDiagram-c5c3511a.js deleted file mode 100644 index b38dd0d..0000000 --- a/themes/blowfish/assets/lib/mermaid/ganttDiagram-c5c3511a.js +++ /dev/null @@ -1,3955 +0,0 @@ -import { s as sanitizeUrl_1, u as utils } from "./utils-872dfc50.js"; -import { w as define, x as extend, R as Rgb, C as Color, y as rgbConvert, z as constant, A as interpolateNumber, B as color, D as interpolateRgb, E as interpolateString, F as nogamma, G as hue, H as commonjsGlobal, g as getConfig, I as dayjs, l as log, f as select, e as common } from "./config-b4fa35bb.js"; -import { m as mermaidAPI } from "./mermaidAPI-a31c2c80.js"; -import { s as setAccTitle, g as getAccTitle, d as setDiagramTitle, e as getDiagramTitle, b as setAccDescription, a as getAccDescription, f as clear$1 } from "./commonDb-7f40ab5a.js"; -import { c as configureSvgSize } from "./setupGraphViewbox-16a0ba81.js"; -import { i as initRange } from "./init-cc95ec8e.js"; -import "./errorRenderer-ebf63d74.js"; -function ascending(a, b) { - return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -} -function descending(a, b) { - return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; -} -function bisector(f) { - let compare1, compare2, delta; - if (f.length !== 2) { - compare1 = ascending; - compare2 = (d, x) => ascending(f(d), x); - delta = (d, x) => f(d) - x; - } else { - compare1 = f === ascending || f === descending ? f : zero; - compare2 = f; - delta = f; - } - function left2(a, x, lo = 0, hi = a.length) { - if (lo < hi) { - if (compare1(x, x) !== 0) - return hi; - do { - const mid = lo + hi >>> 1; - if (compare2(a[mid], x) < 0) - lo = mid + 1; - else - hi = mid; - } while (lo < hi); - } - return lo; - } - function right2(a, x, lo = 0, hi = a.length) { - if (lo < hi) { - if (compare1(x, x) !== 0) - return hi; - do { - const mid = lo + hi >>> 1; - if (compare2(a[mid], x) <= 0) - lo = mid + 1; - else - hi = mid; - } while (lo < hi); - } - return lo; - } - function center2(a, x, lo = 0, hi = a.length) { - const i = left2(a, x, lo, hi - 1); - return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i; - } - return { left: left2, center: center2, right: right2 }; -} -function zero() { - return 0; -} -function number$3(x) { - return x === null ? NaN : +x; -} -const ascendingBisect = bisector(ascending); -const bisectRight = ascendingBisect.right; -bisector(number$3).center; -const bisect = bisectRight; -var e10 = Math.sqrt(50), e5 = Math.sqrt(10), e2 = Math.sqrt(2); -function ticks(start, stop, count) { - var reverse, i = -1, n, ticks2, step; - stop = +stop, start = +start, count = +count; - if (start === stop && count > 0) - return [start]; - if (reverse = stop < start) - n = start, start = stop, stop = n; - if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) - return []; - if (step > 0) { - let r0 = Math.round(start / step), r1 = Math.round(stop / step); - if (r0 * step < start) - ++r0; - if (r1 * step > stop) - --r1; - ticks2 = new Array(n = r1 - r0 + 1); - while (++i < n) - ticks2[i] = (r0 + i) * step; - } else { - step = -step; - let r0 = Math.round(start * step), r1 = Math.round(stop * step); - if (r0 / step < start) - ++r0; - if (r1 / step > stop) - --r1; - ticks2 = new Array(n = r1 - r0 + 1); - while (++i < n) - ticks2[i] = (r0 + i) / step; - } - if (reverse) - ticks2.reverse(); - return ticks2; -} -function tickIncrement(start, stop, count) { - var step = (stop - start) / Math.max(0, count), power = Math.floor(Math.log(step) / Math.LN10), error = step / Math.pow(10, power); - return power >= 0 ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); -} -function tickStep(start, stop, count) { - var step0 = Math.abs(stop - start) / Math.max(0, count), step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), error = step0 / step1; - if (error >= e10) - step1 *= 10; - else if (error >= e5) - step1 *= 5; - else if (error >= e2) - step1 *= 2; - return stop < start ? -step1 : step1; -} -function max(values, valueof) { - let max2; - if (valueof === void 0) { - for (const value of values) { - if (value != null && (max2 < value || max2 === void 0 && value >= value)) { - max2 = value; - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null && (max2 < value || max2 === void 0 && value >= value)) { - max2 = value; - } - } - } - return max2; -} -function min(values, valueof) { - let min2; - if (valueof === void 0) { - for (const value of values) { - if (value != null && (min2 > value || min2 === void 0 && value >= value)) { - min2 = value; - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null && (min2 > value || min2 === void 0 && value >= value)) { - min2 = value; - } - } - } - return min2; -} -function identity$2(x) { - return x; -} -var top = 1, right = 2, bottom = 3, left = 4, epsilon = 1e-6; -function translateX(x) { - return "translate(" + x + ",0)"; -} -function translateY(y) { - return "translate(0," + y + ")"; -} -function number$2(scale) { - return (d) => +scale(d); -} -function center(scale, offset) { - offset = Math.max(0, scale.bandwidth() - offset * 2) / 2; - if (scale.round()) - offset = Math.round(offset); - return (d) => +scale(d) + offset; -} -function entering() { - return !this.__axis; -} -function axis(orient, scale) { - var tickArguments = [], tickValues = null, tickFormat2 = null, tickSizeInner = 6, tickSizeOuter = 6, tickPadding = 3, offset = typeof window !== "undefined" && window.devicePixelRatio > 1 ? 0 : 0.5, k = orient === top || orient === left ? -1 : 1, x = orient === left || orient === right ? "x" : "y", transform = orient === top || orient === bottom ? translateX : translateY; - function axis2(context) { - var values = tickValues == null ? scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain() : tickValues, format2 = tickFormat2 == null ? scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity$2 : tickFormat2, spacing = Math.max(tickSizeInner, 0) + tickPadding, range = scale.range(), range0 = +range[0] + offset, range1 = +range[range.length - 1] + offset, position = (scale.bandwidth ? center : number$2)(scale.copy(), offset), selection = context.selection ? context.selection() : context, path = selection.selectAll(".domain").data([null]), tick = selection.selectAll(".tick").data(values, scale).order(), tickExit = tick.exit(), tickEnter = tick.enter().append("g").attr("class", "tick"), line = tick.select("line"), text = tick.select("text"); - path = path.merge(path.enter().insert("path", ".tick").attr("class", "domain").attr("stroke", "currentColor")); - tick = tick.merge(tickEnter); - line = line.merge(tickEnter.append("line").attr("stroke", "currentColor").attr(x + "2", k * tickSizeInner)); - text = text.merge(tickEnter.append("text").attr("fill", "currentColor").attr(x, k * spacing).attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em")); - if (context !== selection) { - path = path.transition(context); - tick = tick.transition(context); - line = line.transition(context); - text = text.transition(context); - tickExit = tickExit.transition(context).attr("opacity", epsilon).attr("transform", function(d) { - return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute("transform"); - }); - tickEnter.attr("opacity", epsilon).attr("transform", function(d) { - var p = this.parentNode.__axis; - return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); - }); - } - tickExit.remove(); - path.attr("d", orient === left || orient === right ? tickSizeOuter ? "M" + k * tickSizeOuter + "," + range0 + "H" + offset + "V" + range1 + "H" + k * tickSizeOuter : "M" + offset + "," + range0 + "V" + range1 : tickSizeOuter ? "M" + range0 + "," + k * tickSizeOuter + "V" + offset + "H" + range1 + "V" + k * tickSizeOuter : "M" + range0 + "," + offset + "H" + range1); - tick.attr("opacity", 1).attr("transform", function(d) { - return transform(position(d) + offset); - }); - line.attr(x + "2", k * tickSizeInner); - text.attr(x, k * spacing).text(format2); - selection.filter(entering).attr("fill", "none").attr("font-size", 10).attr("font-family", "sans-serif").attr("text-anchor", orient === right ? "start" : orient === left ? "end" : "middle"); - selection.each(function() { - this.__axis = position; - }); - } - axis2.scale = function(_) { - return arguments.length ? (scale = _, axis2) : scale; - }; - axis2.ticks = function() { - return tickArguments = Array.from(arguments), axis2; - }; - axis2.tickArguments = function(_) { - return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis2) : tickArguments.slice(); - }; - axis2.tickValues = function(_) { - return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis2) : tickValues && tickValues.slice(); - }; - axis2.tickFormat = function(_) { - return arguments.length ? (tickFormat2 = _, axis2) : tickFormat2; - }; - axis2.tickSize = function(_) { - return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis2) : tickSizeInner; - }; - axis2.tickSizeInner = function(_) { - return arguments.length ? (tickSizeInner = +_, axis2) : tickSizeInner; - }; - axis2.tickSizeOuter = function(_) { - return arguments.length ? (tickSizeOuter = +_, axis2) : tickSizeOuter; - }; - axis2.tickPadding = function(_) { - return arguments.length ? (tickPadding = +_, axis2) : tickPadding; - }; - axis2.offset = function(_) { - return arguments.length ? (offset = +_, axis2) : offset; - }; - return axis2; -} -function axisTop(scale) { - return axis(top, scale); -} -function axisBottom(scale) { - return axis(bottom, scale); -} -const radians = Math.PI / 180; -const degrees = 180 / Math.PI; -const K = 18, Xn = 0.96422, Yn = 1, Zn = 0.82521, t0$1 = 4 / 29, t1$1 = 6 / 29, t2 = 3 * t1$1 * t1$1, t3 = t1$1 * t1$1 * t1$1; -function labConvert(o) { - if (o instanceof Lab) - return new Lab(o.l, o.a, o.b, o.opacity); - if (o instanceof Hcl) - return hcl2lab(o); - if (!(o instanceof Rgb)) - o = rgbConvert(o); - var r = rgb2lrgb(o.r), g = rgb2lrgb(o.g), b = rgb2lrgb(o.b), y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z; - if (r === g && g === b) - x = z = y; - else { - x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn); - z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn); - } - return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity); -} -function lab(l, a, b, opacity) { - return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity); -} -function Lab(l, a, b, opacity) { - this.l = +l; - this.a = +a; - this.b = +b; - this.opacity = +opacity; -} -define(Lab, lab, extend(Color, { - brighter(k) { - return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity); - }, - darker(k) { - return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity); - }, - rgb() { - var y = (this.l + 16) / 116, x = isNaN(this.a) ? y : y + this.a / 500, z = isNaN(this.b) ? y : y - this.b / 200; - x = Xn * lab2xyz(x); - y = Yn * lab2xyz(y); - z = Zn * lab2xyz(z); - return new Rgb( - lrgb2rgb(3.1338561 * x - 1.6168667 * y - 0.4906146 * z), - lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.033454 * z), - lrgb2rgb(0.0719453 * x - 0.2289914 * y + 1.4052427 * z), - this.opacity - ); - } -})); -function xyz2lab(t) { - return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0$1; -} -function lab2xyz(t) { - return t > t1$1 ? t * t * t : t2 * (t - t0$1); -} -function lrgb2rgb(x) { - return 255 * (x <= 31308e-7 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055); -} -function rgb2lrgb(x) { - return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4); -} -function hclConvert(o) { - if (o instanceof Hcl) - return new Hcl(o.h, o.c, o.l, o.opacity); - if (!(o instanceof Lab)) - o = labConvert(o); - if (o.a === 0 && o.b === 0) - return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity); - var h = Math.atan2(o.b, o.a) * degrees; - return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity); -} -function hcl$1(h, c, l, opacity) { - return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity); -} -function Hcl(h, c, l, opacity) { - this.h = +h; - this.c = +c; - this.l = +l; - this.opacity = +opacity; -} -function hcl2lab(o) { - if (isNaN(o.h)) - return new Lab(o.l, 0, 0, o.opacity); - var h = o.h * radians; - return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); -} -define(Hcl, hcl$1, extend(Color, { - brighter(k) { - return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity); - }, - darker(k) { - return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity); - }, - rgb() { - return hcl2lab(this).rgb(); - } -})); -function numberArray(a, b) { - if (!b) - b = []; - var n = a ? Math.min(b.length, a.length) : 0, c = b.slice(), i; - return function(t) { - for (i = 0; i < n; ++i) - c[i] = a[i] * (1 - t) + b[i] * t; - return c; - }; -} -function isNumberArray(x) { - return ArrayBuffer.isView(x) && !(x instanceof DataView); -} -function genericArray(a, b) { - var nb = b ? b.length : 0, na = a ? Math.min(nb, a.length) : 0, x = new Array(na), c = new Array(nb), i; - for (i = 0; i < na; ++i) - x[i] = interpolate(a[i], b[i]); - for (; i < nb; ++i) - c[i] = b[i]; - return function(t) { - for (i = 0; i < na; ++i) - c[i] = x[i](t); - return c; - }; -} -function date$1(a, b) { - var d = new Date(); - return a = +a, b = +b, function(t) { - return d.setTime(a * (1 - t) + b * t), d; - }; -} -function object(a, b) { - var i = {}, c = {}, k; - if (a === null || typeof a !== "object") - a = {}; - if (b === null || typeof b !== "object") - b = {}; - for (k in b) { - if (k in a) { - i[k] = interpolate(a[k], b[k]); - } else { - c[k] = b[k]; - } - } - return function(t) { - for (k in i) - c[k] = i[k](t); - return c; - }; -} -function interpolate(a, b) { - var t = typeof b, c; - return b == null || t === "boolean" ? constant(b) : (t === "number" ? interpolateNumber : t === "string" ? (c = color(b)) ? (b = c, interpolateRgb) : interpolateString : b instanceof color ? interpolateRgb : b instanceof Date ? date$1 : isNumberArray(b) ? numberArray : Array.isArray(b) ? genericArray : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object : interpolateNumber)(a, b); -} -function interpolateRound(a, b) { - return a = +a, b = +b, function(t) { - return Math.round(a * (1 - t) + b * t); - }; -} -function hcl(hue2) { - return function(start, end) { - var h = hue2((start = hcl$1(start)).h, (end = hcl$1(end)).h), c = nogamma(start.c, end.c), l = nogamma(start.l, end.l), opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.c = c(t); - start.l = l(t); - start.opacity = opacity(t); - return start + ""; - }; - }; -} -const interpolateHcl = hcl(hue); -function formatDecimal(x) { - return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString("en").replace(/,/g, "") : x.toString(10); -} -function formatDecimalParts(x, p) { - if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) - return null; - var i, coefficient = x.slice(0, i); - return [ - coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, - +x.slice(i + 1) - ]; -} -function exponent(x) { - return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN; -} -function formatGroup(grouping, thousands) { - return function(value, width) { - var i = value.length, t = [], j = 0, g = grouping[0], length = 0; - while (i > 0 && g > 0) { - if (length + g + 1 > width) - g = Math.max(1, width - length); - t.push(value.substring(i -= g, i + g)); - if ((length += g + 1) > width) - break; - g = grouping[j = (j + 1) % grouping.length]; - } - return t.reverse().join(thousands); - }; -} -function formatNumerals(numerals) { - return function(value) { - return value.replace(/[0-9]/g, function(i) { - return numerals[+i]; - }); - }; -} -var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; -function formatSpecifier(specifier) { - if (!(match = re.exec(specifier))) - throw new Error("invalid format: " + specifier); - var match; - return new FormatSpecifier({ - fill: match[1], - align: match[2], - sign: match[3], - symbol: match[4], - zero: match[5], - width: match[6], - comma: match[7], - precision: match[8] && match[8].slice(1), - trim: match[9], - type: match[10] - }); -} -formatSpecifier.prototype = FormatSpecifier.prototype; -function FormatSpecifier(specifier) { - this.fill = specifier.fill === void 0 ? " " : specifier.fill + ""; - this.align = specifier.align === void 0 ? ">" : specifier.align + ""; - this.sign = specifier.sign === void 0 ? "-" : specifier.sign + ""; - this.symbol = specifier.symbol === void 0 ? "" : specifier.symbol + ""; - this.zero = !!specifier.zero; - this.width = specifier.width === void 0 ? void 0 : +specifier.width; - this.comma = !!specifier.comma; - this.precision = specifier.precision === void 0 ? void 0 : +specifier.precision; - this.trim = !!specifier.trim; - this.type = specifier.type === void 0 ? "" : specifier.type + ""; -} -FormatSpecifier.prototype.toString = function() { - return this.fill + this.align + this.sign + this.symbol + (this.zero ? "0" : "") + (this.width === void 0 ? "" : Math.max(1, this.width | 0)) + (this.comma ? "," : "") + (this.precision === void 0 ? "" : "." + Math.max(0, this.precision | 0)) + (this.trim ? "~" : "") + this.type; -}; -function formatTrim(s) { - out: - for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) { - switch (s[i]) { - case ".": - i0 = i1 = i; - break; - case "0": - if (i0 === 0) - i0 = i; - i1 = i; - break; - default: - if (!+s[i]) - break out; - if (i0 > 0) - i0 = 0; - break; - } - } - return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s; -} -var prefixExponent; -function formatPrefixAuto(x, p) { - var d = formatDecimalParts(x, p); - if (!d) - return x + ""; - var coefficient = d[0], exponent2 = d[1], i = exponent2 - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent2 / 3))) * 3) + 1, n = coefficient.length; - return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join("0") : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) : "0." + new Array(1 - i).join("0") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; -} -function formatRounded(x, p) { - var d = formatDecimalParts(x, p); - if (!d) - return x + ""; - var coefficient = d[0], exponent2 = d[1]; - return exponent2 < 0 ? "0." + new Array(-exponent2).join("0") + coefficient : coefficient.length > exponent2 + 1 ? coefficient.slice(0, exponent2 + 1) + "." + coefficient.slice(exponent2 + 1) : coefficient + new Array(exponent2 - coefficient.length + 2).join("0"); -} -const formatTypes = { - "%": (x, p) => (x * 100).toFixed(p), - "b": (x) => Math.round(x).toString(2), - "c": (x) => x + "", - "d": formatDecimal, - "e": (x, p) => x.toExponential(p), - "f": (x, p) => x.toFixed(p), - "g": (x, p) => x.toPrecision(p), - "o": (x) => Math.round(x).toString(8), - "p": (x, p) => formatRounded(x * 100, p), - "r": formatRounded, - "s": formatPrefixAuto, - "X": (x) => Math.round(x).toString(16).toUpperCase(), - "x": (x) => Math.round(x).toString(16) -}; -function identity$1(x) { - return x; -} -var map = Array.prototype.map, prefixes = ["y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"]; -function formatLocale$1(locale2) { - var group = locale2.grouping === void 0 || locale2.thousands === void 0 ? identity$1 : formatGroup(map.call(locale2.grouping, Number), locale2.thousands + ""), currencyPrefix = locale2.currency === void 0 ? "" : locale2.currency[0] + "", currencySuffix = locale2.currency === void 0 ? "" : locale2.currency[1] + "", decimal = locale2.decimal === void 0 ? "." : locale2.decimal + "", numerals = locale2.numerals === void 0 ? identity$1 : formatNumerals(map.call(locale2.numerals, String)), percent = locale2.percent === void 0 ? "%" : locale2.percent + "", minus = locale2.minus === void 0 ? "−" : locale2.minus + "", nan = locale2.nan === void 0 ? "NaN" : locale2.nan + ""; - function newFormat(specifier) { - specifier = formatSpecifier(specifier); - var fill = specifier.fill, align = specifier.align, sign = specifier.sign, symbol = specifier.symbol, zero2 = specifier.zero, width = specifier.width, comma = specifier.comma, precision = specifier.precision, trim = specifier.trim, type = specifier.type; - if (type === "n") - comma = true, type = "g"; - else if (!formatTypes[type]) - precision === void 0 && (precision = 12), trim = true, type = "g"; - if (zero2 || fill === "0" && align === "=") - zero2 = true, fill = "0", align = "="; - var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type) ? percent : ""; - var formatType = formatTypes[type], maybeSuffix = /[defgprs%]/.test(type); - precision = precision === void 0 ? 6 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision)); - function format2(value) { - var valuePrefix = prefix, valueSuffix = suffix, i, n, c; - if (type === "c") { - valueSuffix = formatType(value) + valueSuffix; - value = ""; - } else { - value = +value; - var valueNegative = value < 0 || 1 / value < 0; - value = isNaN(value) ? nan : formatType(Math.abs(value), precision); - if (trim) - value = formatTrim(value); - if (valueNegative && +value === 0 && sign !== "+") - valueNegative = false; - valuePrefix = (valueNegative ? sign === "(" ? sign : minus : sign === "-" || sign === "(" ? "" : sign) + valuePrefix; - valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : ""); - if (maybeSuffix) { - i = -1, n = value.length; - while (++i < n) { - if (c = value.charCodeAt(i), 48 > c || c > 57) { - valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; - value = value.slice(0, i); - break; - } - } - } - } - if (comma && !zero2) - value = group(value, Infinity); - var length = valuePrefix.length + value.length + valueSuffix.length, padding = length < width ? new Array(width - length + 1).join(fill) : ""; - if (comma && zero2) - value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = ""; - switch (align) { - case "<": - value = valuePrefix + value + valueSuffix + padding; - break; - case "=": - value = valuePrefix + padding + value + valueSuffix; - break; - case "^": - value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); - break; - default: - value = padding + valuePrefix + value + valueSuffix; - break; - } - return numerals(value); - } - format2.toString = function() { - return specifier + ""; - }; - return format2; - } - function formatPrefix2(specifier, value) { - var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3, k = Math.pow(10, -e), prefix = prefixes[8 + e / 3]; - return function(value2) { - return f(k * value2) + prefix; - }; - } - return { - format: newFormat, - formatPrefix: formatPrefix2 - }; -} -var locale$1; -var format; -var formatPrefix; -defaultLocale$1({ - thousands: ",", - grouping: [3], - currency: ["$", ""] -}); -function defaultLocale$1(definition) { - locale$1 = formatLocale$1(definition); - format = locale$1.format; - formatPrefix = locale$1.formatPrefix; - return locale$1; -} -function precisionFixed(step) { - return Math.max(0, -exponent(Math.abs(step))); -} -function precisionPrefix(step, value) { - return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step))); -} -function precisionRound(step, max2) { - step = Math.abs(step), max2 = Math.abs(max2) - step; - return Math.max(0, exponent(max2) - exponent(step)) + 1; -} -function constants(x) { - return function() { - return x; - }; -} -function number$1(x) { - return +x; -} -var unit = [0, 1]; -function identity(x) { - return x; -} -function normalize(a, b) { - return (b -= a = +a) ? function(x) { - return (x - a) / b; - } : constants(isNaN(b) ? NaN : 0.5); -} -function clamper(a, b) { - var t; - if (a > b) - t = a, a = b, b = t; - return function(x) { - return Math.max(a, Math.min(b, x)); - }; -} -function bimap(domain, range, interpolate2) { - var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1]; - if (d1 < d0) - d0 = normalize(d1, d0), r0 = interpolate2(r1, r0); - else - d0 = normalize(d0, d1), r0 = interpolate2(r0, r1); - return function(x) { - return r0(d0(x)); - }; -} -function polymap(domain, range, interpolate2) { - var j = Math.min(domain.length, range.length) - 1, d = new Array(j), r = new Array(j), i = -1; - if (domain[j] < domain[0]) { - domain = domain.slice().reverse(); - range = range.slice().reverse(); - } - while (++i < j) { - d[i] = normalize(domain[i], domain[i + 1]); - r[i] = interpolate2(range[i], range[i + 1]); - } - return function(x) { - var i2 = bisect(domain, x, 1, j) - 1; - return r[i2](d[i2](x)); - }; -} -function copy(source, target) { - return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp()).unknown(source.unknown()); -} -function transformer() { - var domain = unit, range = unit, interpolate$1 = interpolate, transform, untransform, unknown, clamp = identity, piecewise, output, input; - function rescale() { - var n = Math.min(domain.length, range.length); - if (clamp !== identity) - clamp = clamper(domain[0], domain[n - 1]); - piecewise = n > 2 ? polymap : bimap; - output = input = null; - return scale; - } - function scale(x) { - return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate$1)))(transform(clamp(x))); - } - scale.invert = function(y) { - return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y))); - }; - scale.domain = function(_) { - return arguments.length ? (domain = Array.from(_, number$1), rescale()) : domain.slice(); - }; - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), rescale()) : range.slice(); - }; - scale.rangeRound = function(_) { - return range = Array.from(_), interpolate$1 = interpolateRound, rescale(); - }; - scale.clamp = function(_) { - return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity; - }; - scale.interpolate = function(_) { - return arguments.length ? (interpolate$1 = _, rescale()) : interpolate$1; - }; - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - return function(t, u) { - transform = t, untransform = u; - return rescale(); - }; -} -function continuous() { - return transformer()(identity, identity); -} -function tickFormat(start, stop, count, specifier) { - var step = tickStep(start, stop, count), precision; - specifier = formatSpecifier(specifier == null ? ",f" : specifier); - switch (specifier.type) { - case "s": { - var value = Math.max(Math.abs(start), Math.abs(stop)); - if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) - specifier.precision = precision; - return formatPrefix(specifier, value); - } - case "": - case "e": - case "g": - case "p": - case "r": { - if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) - specifier.precision = precision - (specifier.type === "e"); - break; - } - case "f": - case "%": { - if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) - specifier.precision = precision - (specifier.type === "%") * 2; - break; - } - } - return format(specifier); -} -function linearish(scale) { - var domain = scale.domain; - scale.ticks = function(count) { - var d = domain(); - return ticks(d[0], d[d.length - 1], count == null ? 10 : count); - }; - scale.tickFormat = function(count, specifier) { - var d = domain(); - return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier); - }; - scale.nice = function(count) { - if (count == null) - count = 10; - var d = domain(); - var i0 = 0; - var i1 = d.length - 1; - var start = d[i0]; - var stop = d[i1]; - var prestep; - var step; - var maxIter = 10; - if (stop < start) { - step = start, start = stop, stop = step; - step = i0, i0 = i1, i1 = step; - } - while (maxIter-- > 0) { - step = tickIncrement(start, stop, count); - if (step === prestep) { - d[i0] = start; - d[i1] = stop; - return domain(d); - } else if (step > 0) { - start = Math.floor(start / step) * step; - stop = Math.ceil(stop / step) * step; - } else if (step < 0) { - start = Math.ceil(start * step) / step; - stop = Math.floor(stop * step) / step; - } else { - break; - } - prestep = step; - } - return scale; - }; - return scale; -} -function linear() { - var scale = continuous(); - scale.copy = function() { - return copy(scale, linear()); - }; - initRange.apply(scale, arguments); - return linearish(scale); -} -function nice(domain, interval) { - domain = domain.slice(); - var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], t; - if (x1 < x0) { - t = i0, i0 = i1, i1 = t; - t = x0, x0 = x1, x1 = t; - } - domain[i0] = interval.floor(x0); - domain[i1] = interval.ceil(x1); - return domain; -} -var t0 = new Date(), t1 = new Date(); -function newInterval(floori, offseti, count, field) { - function interval(date2) { - return floori(date2 = arguments.length === 0 ? new Date() : new Date(+date2)), date2; - } - interval.floor = function(date2) { - return floori(date2 = new Date(+date2)), date2; - }; - interval.ceil = function(date2) { - return floori(date2 = new Date(date2 - 1)), offseti(date2, 1), floori(date2), date2; - }; - interval.round = function(date2) { - var d0 = interval(date2), d1 = interval.ceil(date2); - return date2 - d0 < d1 - date2 ? d0 : d1; - }; - interval.offset = function(date2, step) { - return offseti(date2 = new Date(+date2), step == null ? 1 : Math.floor(step)), date2; - }; - interval.range = function(start, stop, step) { - var range = [], previous; - start = interval.ceil(start); - step = step == null ? 1 : Math.floor(step); - if (!(start < stop) || !(step > 0)) - return range; - do - range.push(previous = new Date(+start)), offseti(start, step), floori(start); - while (previous < start && start < stop); - return range; - }; - interval.filter = function(test) { - return newInterval(function(date2) { - if (date2 >= date2) - while (floori(date2), !test(date2)) - date2.setTime(date2 - 1); - }, function(date2, step) { - if (date2 >= date2) { - if (step < 0) - while (++step <= 0) { - while (offseti(date2, -1), !test(date2)) { - } - } - else - while (--step >= 0) { - while (offseti(date2, 1), !test(date2)) { - } - } - } - }); - }; - if (count) { - interval.count = function(start, end) { - t0.setTime(+start), t1.setTime(+end); - floori(t0), floori(t1); - return Math.floor(count(t0, t1)); - }; - interval.every = function(step) { - step = Math.floor(step); - return !isFinite(step) || !(step > 0) ? null : !(step > 1) ? interval : interval.filter(field ? function(d) { - return field(d) % step === 0; - } : function(d) { - return interval.count(0, d) % step === 0; - }); - }; - } - return interval; -} -var millisecond = newInterval(function() { -}, function(date2, step) { - date2.setTime(+date2 + step); -}, function(start, end) { - return end - start; -}); -millisecond.every = function(k) { - k = Math.floor(k); - if (!isFinite(k) || !(k > 0)) - return null; - if (!(k > 1)) - return millisecond; - return newInterval(function(date2) { - date2.setTime(Math.floor(date2 / k) * k); - }, function(date2, step) { - date2.setTime(+date2 + step * k); - }, function(start, end) { - return (end - start) / k; - }); -}; -const millisecond$1 = millisecond; -millisecond.range; -const durationSecond = 1e3; -const durationMinute = durationSecond * 60; -const durationHour = durationMinute * 60; -const durationDay = durationHour * 24; -const durationWeek = durationDay * 7; -const durationMonth = durationDay * 30; -const durationYear = durationDay * 365; -var second = newInterval(function(date2) { - date2.setTime(date2 - date2.getMilliseconds()); -}, function(date2, step) { - date2.setTime(+date2 + step * durationSecond); -}, function(start, end) { - return (end - start) / durationSecond; -}, function(date2) { - return date2.getUTCSeconds(); -}); -const utcSecond = second; -second.range; -var minute = newInterval(function(date2) { - date2.setTime(date2 - date2.getMilliseconds() - date2.getSeconds() * durationSecond); -}, function(date2, step) { - date2.setTime(+date2 + step * durationMinute); -}, function(start, end) { - return (end - start) / durationMinute; -}, function(date2) { - return date2.getMinutes(); -}); -const timeMinute = minute; -minute.range; -var hour = newInterval(function(date2) { - date2.setTime(date2 - date2.getMilliseconds() - date2.getSeconds() * durationSecond - date2.getMinutes() * durationMinute); -}, function(date2, step) { - date2.setTime(+date2 + step * durationHour); -}, function(start, end) { - return (end - start) / durationHour; -}, function(date2) { - return date2.getHours(); -}); -const timeHour = hour; -hour.range; -var day = newInterval( - (date2) => date2.setHours(0, 0, 0, 0), - (date2, step) => date2.setDate(date2.getDate() + step), - (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay, - (date2) => date2.getDate() - 1 -); -const timeDay = day; -day.range; -function weekday(i) { - return newInterval(function(date2) { - date2.setDate(date2.getDate() - (date2.getDay() + 7 - i) % 7); - date2.setHours(0, 0, 0, 0); - }, function(date2, step) { - date2.setDate(date2.getDate() + step * 7); - }, function(start, end) { - return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; - }); -} -var sunday = weekday(0); -var monday = weekday(1); -var tuesday = weekday(2); -var wednesday = weekday(3); -var thursday = weekday(4); -var friday = weekday(5); -var saturday = weekday(6); -sunday.range; -monday.range; -tuesday.range; -wednesday.range; -thursday.range; -friday.range; -saturday.range; -var month = newInterval(function(date2) { - date2.setDate(1); - date2.setHours(0, 0, 0, 0); -}, function(date2, step) { - date2.setMonth(date2.getMonth() + step); -}, function(start, end) { - return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; -}, function(date2) { - return date2.getMonth(); -}); -const timeMonth = month; -month.range; -var year = newInterval(function(date2) { - date2.setMonth(0, 1); - date2.setHours(0, 0, 0, 0); -}, function(date2, step) { - date2.setFullYear(date2.getFullYear() + step); -}, function(start, end) { - return end.getFullYear() - start.getFullYear(); -}, function(date2) { - return date2.getFullYear(); -}); -year.every = function(k) { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date2) { - date2.setFullYear(Math.floor(date2.getFullYear() / k) * k); - date2.setMonth(0, 1); - date2.setHours(0, 0, 0, 0); - }, function(date2, step) { - date2.setFullYear(date2.getFullYear() + step * k); - }); -}; -const timeYear = year; -year.range; -var utcMinute = newInterval(function(date2) { - date2.setUTCSeconds(0, 0); -}, function(date2, step) { - date2.setTime(+date2 + step * durationMinute); -}, function(start, end) { - return (end - start) / durationMinute; -}, function(date2) { - return date2.getUTCMinutes(); -}); -const utcMinute$1 = utcMinute; -utcMinute.range; -var utcHour = newInterval(function(date2) { - date2.setUTCMinutes(0, 0, 0); -}, function(date2, step) { - date2.setTime(+date2 + step * durationHour); -}, function(start, end) { - return (end - start) / durationHour; -}, function(date2) { - return date2.getUTCHours(); -}); -const utcHour$1 = utcHour; -utcHour.range; -var utcDay = newInterval(function(date2) { - date2.setUTCHours(0, 0, 0, 0); -}, function(date2, step) { - date2.setUTCDate(date2.getUTCDate() + step); -}, function(start, end) { - return (end - start) / durationDay; -}, function(date2) { - return date2.getUTCDate() - 1; -}); -const utcDay$1 = utcDay; -utcDay.range; -function utcWeekday(i) { - return newInterval(function(date2) { - date2.setUTCDate(date2.getUTCDate() - (date2.getUTCDay() + 7 - i) % 7); - date2.setUTCHours(0, 0, 0, 0); - }, function(date2, step) { - date2.setUTCDate(date2.getUTCDate() + step * 7); - }, function(start, end) { - return (end - start) / durationWeek; - }); -} -var utcSunday = utcWeekday(0); -var utcMonday = utcWeekday(1); -var utcTuesday = utcWeekday(2); -var utcWednesday = utcWeekday(3); -var utcThursday = utcWeekday(4); -var utcFriday = utcWeekday(5); -var utcSaturday = utcWeekday(6); -utcSunday.range; -utcMonday.range; -utcTuesday.range; -utcWednesday.range; -utcThursday.range; -utcFriday.range; -utcSaturday.range; -var utcMonth = newInterval(function(date2) { - date2.setUTCDate(1); - date2.setUTCHours(0, 0, 0, 0); -}, function(date2, step) { - date2.setUTCMonth(date2.getUTCMonth() + step); -}, function(start, end) { - return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; -}, function(date2) { - return date2.getUTCMonth(); -}); -const utcMonth$1 = utcMonth; -utcMonth.range; -var utcYear = newInterval(function(date2) { - date2.setUTCMonth(0, 1); - date2.setUTCHours(0, 0, 0, 0); -}, function(date2, step) { - date2.setUTCFullYear(date2.getUTCFullYear() + step); -}, function(start, end) { - return end.getUTCFullYear() - start.getUTCFullYear(); -}, function(date2) { - return date2.getUTCFullYear(); -}); -utcYear.every = function(k) { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date2) { - date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / k) * k); - date2.setUTCMonth(0, 1); - date2.setUTCHours(0, 0, 0, 0); - }, function(date2, step) { - date2.setUTCFullYear(date2.getUTCFullYear() + step * k); - }); -}; -const utcYear$1 = utcYear; -utcYear.range; -function ticker(year2, month2, week, day2, hour2, minute2) { - const tickIntervals = [ - [utcSecond, 1, durationSecond], - [utcSecond, 5, 5 * durationSecond], - [utcSecond, 15, 15 * durationSecond], - [utcSecond, 30, 30 * durationSecond], - [minute2, 1, durationMinute], - [minute2, 5, 5 * durationMinute], - [minute2, 15, 15 * durationMinute], - [minute2, 30, 30 * durationMinute], - [hour2, 1, durationHour], - [hour2, 3, 3 * durationHour], - [hour2, 6, 6 * durationHour], - [hour2, 12, 12 * durationHour], - [day2, 1, durationDay], - [day2, 2, 2 * durationDay], - [week, 1, durationWeek], - [month2, 1, durationMonth], - [month2, 3, 3 * durationMonth], - [year2, 1, durationYear] - ]; - function ticks2(start, stop, count) { - const reverse = stop < start; - if (reverse) - [start, stop] = [stop, start]; - const interval = count && typeof count.range === "function" ? count : tickInterval2(start, stop, count); - const ticks3 = interval ? interval.range(start, +stop + 1) : []; - return reverse ? ticks3.reverse() : ticks3; - } - function tickInterval2(start, stop, count) { - const target = Math.abs(stop - start) / count; - const i = bisector(([, , step2]) => step2).right(tickIntervals, target); - if (i === tickIntervals.length) - return year2.every(tickStep(start / durationYear, stop / durationYear, count)); - if (i === 0) - return millisecond$1.every(Math.max(tickStep(start, stop, count), 1)); - const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i]; - return t.every(step); - } - return [ticks2, tickInterval2]; -} -ticker(utcYear$1, utcMonth$1, utcSunday, utcDay$1, utcHour$1, utcMinute$1); -const [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, sunday, timeDay, timeHour, timeMinute); -function localDate(d) { - if (0 <= d.y && d.y < 100) { - var date2 = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); - date2.setFullYear(d.y); - return date2; - } - return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); -} -function utcDate(d) { - if (0 <= d.y && d.y < 100) { - var date2 = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); - date2.setUTCFullYear(d.y); - return date2; - } - return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); -} -function newDate(y, m, d) { - return { y, m, d, H: 0, M: 0, S: 0, L: 0 }; -} -function formatLocale(locale2) { - var locale_dateTime = locale2.dateTime, locale_date = locale2.date, locale_time = locale2.time, locale_periods = locale2.periods, locale_weekdays = locale2.days, locale_shortWeekdays = locale2.shortDays, locale_months = locale2.months, locale_shortMonths = locale2.shortMonths; - var periodRe = formatRe(locale_periods), periodLookup = formatLookup(locale_periods), weekdayRe = formatRe(locale_weekdays), weekdayLookup = formatLookup(locale_weekdays), shortWeekdayRe = formatRe(locale_shortWeekdays), shortWeekdayLookup = formatLookup(locale_shortWeekdays), monthRe = formatRe(locale_months), monthLookup = formatLookup(locale_months), shortMonthRe = formatRe(locale_shortMonths), shortMonthLookup = formatLookup(locale_shortMonths); - var formats = { - "a": formatShortWeekday, - "A": formatWeekday, - "b": formatShortMonth, - "B": formatMonth, - "c": null, - "d": formatDayOfMonth, - "e": formatDayOfMonth, - "f": formatMicroseconds, - "g": formatYearISO, - "G": formatFullYearISO, - "H": formatHour24, - "I": formatHour12, - "j": formatDayOfYear, - "L": formatMilliseconds, - "m": formatMonthNumber, - "M": formatMinutes, - "p": formatPeriod, - "q": formatQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatSeconds, - "u": formatWeekdayNumberMonday, - "U": formatWeekNumberSunday, - "V": formatWeekNumberISO, - "w": formatWeekdayNumberSunday, - "W": formatWeekNumberMonday, - "x": null, - "X": null, - "y": formatYear, - "Y": formatFullYear, - "Z": formatZone, - "%": formatLiteralPercent - }; - var utcFormats = { - "a": formatUTCShortWeekday, - "A": formatUTCWeekday, - "b": formatUTCShortMonth, - "B": formatUTCMonth, - "c": null, - "d": formatUTCDayOfMonth, - "e": formatUTCDayOfMonth, - "f": formatUTCMicroseconds, - "g": formatUTCYearISO, - "G": formatUTCFullYearISO, - "H": formatUTCHour24, - "I": formatUTCHour12, - "j": formatUTCDayOfYear, - "L": formatUTCMilliseconds, - "m": formatUTCMonthNumber, - "M": formatUTCMinutes, - "p": formatUTCPeriod, - "q": formatUTCQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatUTCSeconds, - "u": formatUTCWeekdayNumberMonday, - "U": formatUTCWeekNumberSunday, - "V": formatUTCWeekNumberISO, - "w": formatUTCWeekdayNumberSunday, - "W": formatUTCWeekNumberMonday, - "x": null, - "X": null, - "y": formatUTCYear, - "Y": formatUTCFullYear, - "Z": formatUTCZone, - "%": formatLiteralPercent - }; - var parses = { - "a": parseShortWeekday, - "A": parseWeekday, - "b": parseShortMonth, - "B": parseMonth, - "c": parseLocaleDateTime, - "d": parseDayOfMonth, - "e": parseDayOfMonth, - "f": parseMicroseconds, - "g": parseYear, - "G": parseFullYear, - "H": parseHour24, - "I": parseHour24, - "j": parseDayOfYear, - "L": parseMilliseconds, - "m": parseMonthNumber, - "M": parseMinutes, - "p": parsePeriod, - "q": parseQuarter, - "Q": parseUnixTimestamp, - "s": parseUnixTimestampSeconds, - "S": parseSeconds, - "u": parseWeekdayNumberMonday, - "U": parseWeekNumberSunday, - "V": parseWeekNumberISO, - "w": parseWeekdayNumberSunday, - "W": parseWeekNumberMonday, - "x": parseLocaleDate, - "X": parseLocaleTime, - "y": parseYear, - "Y": parseFullYear, - "Z": parseZone, - "%": parseLiteralPercent - }; - formats.x = newFormat(locale_date, formats); - formats.X = newFormat(locale_time, formats); - formats.c = newFormat(locale_dateTime, formats); - utcFormats.x = newFormat(locale_date, utcFormats); - utcFormats.X = newFormat(locale_time, utcFormats); - utcFormats.c = newFormat(locale_dateTime, utcFormats); - function newFormat(specifier, formats2) { - return function(date2) { - var string = [], i = -1, j = 0, n = specifier.length, c, pad2, format2; - if (!(date2 instanceof Date)) - date2 = new Date(+date2); - while (++i < n) { - if (specifier.charCodeAt(i) === 37) { - string.push(specifier.slice(j, i)); - if ((pad2 = pads[c = specifier.charAt(++i)]) != null) - c = specifier.charAt(++i); - else - pad2 = c === "e" ? " " : "0"; - if (format2 = formats2[c]) - c = format2(date2, pad2); - string.push(c); - j = i + 1; - } - } - string.push(specifier.slice(j, i)); - return string.join(""); - }; - } - function newParse(specifier, Z) { - return function(string) { - var d = newDate(1900, void 0, 1), i = parseSpecifier(d, specifier, string += "", 0), week, day2; - if (i != string.length) - return null; - if ("Q" in d) - return new Date(d.Q); - if ("s" in d) - return new Date(d.s * 1e3 + ("L" in d ? d.L : 0)); - if (Z && !("Z" in d)) - d.Z = 0; - if ("p" in d) - d.H = d.H % 12 + d.p * 12; - if (d.m === void 0) - d.m = "q" in d ? d.q : 0; - if ("V" in d) { - if (d.V < 1 || d.V > 53) - return null; - if (!("w" in d)) - d.w = 1; - if ("Z" in d) { - week = utcDate(newDate(d.y, 0, 1)), day2 = week.getUTCDay(); - week = day2 > 4 || day2 === 0 ? utcMonday.ceil(week) : utcMonday(week); - week = utcDay$1.offset(week, (d.V - 1) * 7); - d.y = week.getUTCFullYear(); - d.m = week.getUTCMonth(); - d.d = week.getUTCDate() + (d.w + 6) % 7; - } else { - week = localDate(newDate(d.y, 0, 1)), day2 = week.getDay(); - week = day2 > 4 || day2 === 0 ? monday.ceil(week) : monday(week); - week = timeDay.offset(week, (d.V - 1) * 7); - d.y = week.getFullYear(); - d.m = week.getMonth(); - d.d = week.getDate() + (d.w + 6) % 7; - } - } else if ("W" in d || "U" in d) { - if (!("w" in d)) - d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; - day2 = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); - d.m = 0; - d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day2 + 5) % 7 : d.w + d.U * 7 - (day2 + 6) % 7; - } - if ("Z" in d) { - d.H += d.Z / 100 | 0; - d.M += d.Z % 100; - return utcDate(d); - } - return localDate(d); - }; - } - function parseSpecifier(d, specifier, string, j) { - var i = 0, n = specifier.length, m = string.length, c, parse; - while (i < n) { - if (j >= m) - return -1; - c = specifier.charCodeAt(i++); - if (c === 37) { - c = specifier.charAt(i++); - parse = parses[c in pads ? specifier.charAt(i++) : c]; - if (!parse || (j = parse(d, string, j)) < 0) - return -1; - } else if (c != string.charCodeAt(j++)) { - return -1; - } - } - return j; - } - function parsePeriod(d, string, i) { - var n = periodRe.exec(string.slice(i)); - return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - function parseShortWeekday(d, string, i) { - var n = shortWeekdayRe.exec(string.slice(i)); - return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - function parseWeekday(d, string, i) { - var n = weekdayRe.exec(string.slice(i)); - return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - function parseShortMonth(d, string, i) { - var n = shortMonthRe.exec(string.slice(i)); - return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - function parseMonth(d, string, i) { - var n = monthRe.exec(string.slice(i)); - return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - function parseLocaleDateTime(d, string, i) { - return parseSpecifier(d, locale_dateTime, string, i); - } - function parseLocaleDate(d, string, i) { - return parseSpecifier(d, locale_date, string, i); - } - function parseLocaleTime(d, string, i) { - return parseSpecifier(d, locale_time, string, i); - } - function formatShortWeekday(d) { - return locale_shortWeekdays[d.getDay()]; - } - function formatWeekday(d) { - return locale_weekdays[d.getDay()]; - } - function formatShortMonth(d) { - return locale_shortMonths[d.getMonth()]; - } - function formatMonth(d) { - return locale_months[d.getMonth()]; - } - function formatPeriod(d) { - return locale_periods[+(d.getHours() >= 12)]; - } - function formatQuarter(d) { - return 1 + ~~(d.getMonth() / 3); - } - function formatUTCShortWeekday(d) { - return locale_shortWeekdays[d.getUTCDay()]; - } - function formatUTCWeekday(d) { - return locale_weekdays[d.getUTCDay()]; - } - function formatUTCShortMonth(d) { - return locale_shortMonths[d.getUTCMonth()]; - } - function formatUTCMonth(d) { - return locale_months[d.getUTCMonth()]; - } - function formatUTCPeriod(d) { - return locale_periods[+(d.getUTCHours() >= 12)]; - } - function formatUTCQuarter(d) { - return 1 + ~~(d.getUTCMonth() / 3); - } - return { - format: function(specifier) { - var f = newFormat(specifier += "", formats); - f.toString = function() { - return specifier; - }; - return f; - }, - parse: function(specifier) { - var p = newParse(specifier += "", false); - p.toString = function() { - return specifier; - }; - return p; - }, - utcFormat: function(specifier) { - var f = newFormat(specifier += "", utcFormats); - f.toString = function() { - return specifier; - }; - return f; - }, - utcParse: function(specifier) { - var p = newParse(specifier += "", true); - p.toString = function() { - return specifier; - }; - return p; - } - }; -} -var pads = { "-": "", "_": " ", "0": "0" }, numberRe = /^\s*\d+/, percentRe = /^%/, requoteRe = /[\\^$*+?|[\]().{}]/g; -function pad(value, fill, width) { - var sign = value < 0 ? "-" : "", string = (sign ? -value : value) + "", length = string.length; - return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); -} -function requote(s) { - return s.replace(requoteRe, "\\$&"); -} -function formatRe(names) { - return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); -} -function formatLookup(names) { - return new Map(names.map((name, i) => [name.toLowerCase(), i])); -} -function parseWeekdayNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.w = +n[0], i + n[0].length) : -1; -} -function parseWeekdayNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.u = +n[0], i + n[0].length) : -1; -} -function parseWeekNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.U = +n[0], i + n[0].length) : -1; -} -function parseWeekNumberISO(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.V = +n[0], i + n[0].length) : -1; -} -function parseWeekNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.W = +n[0], i + n[0].length) : -1; -} -function parseFullYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 4)); - return n ? (d.y = +n[0], i + n[0].length) : -1; -} -function parseYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2e3), i + n[0].length) : -1; -} -function parseZone(d, string, i) { - var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); - return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; -} -function parseQuarter(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; -} -function parseMonthNumber(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.m = n[0] - 1, i + n[0].length) : -1; -} -function parseDayOfMonth(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.d = +n[0], i + n[0].length) : -1; -} -function parseDayOfYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; -} -function parseHour24(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.H = +n[0], i + n[0].length) : -1; -} -function parseMinutes(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.M = +n[0], i + n[0].length) : -1; -} -function parseSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.S = +n[0], i + n[0].length) : -1; -} -function parseMilliseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.L = +n[0], i + n[0].length) : -1; -} -function parseMicroseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 6)); - return n ? (d.L = Math.floor(n[0] / 1e3), i + n[0].length) : -1; -} -function parseLiteralPercent(d, string, i) { - var n = percentRe.exec(string.slice(i, i + 1)); - return n ? i + n[0].length : -1; -} -function parseUnixTimestamp(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.Q = +n[0], i + n[0].length) : -1; -} -function parseUnixTimestampSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.s = +n[0], i + n[0].length) : -1; -} -function formatDayOfMonth(d, p) { - return pad(d.getDate(), p, 2); -} -function formatHour24(d, p) { - return pad(d.getHours(), p, 2); -} -function formatHour12(d, p) { - return pad(d.getHours() % 12 || 12, p, 2); -} -function formatDayOfYear(d, p) { - return pad(1 + timeDay.count(timeYear(d), d), p, 3); -} -function formatMilliseconds(d, p) { - return pad(d.getMilliseconds(), p, 3); -} -function formatMicroseconds(d, p) { - return formatMilliseconds(d, p) + "000"; -} -function formatMonthNumber(d, p) { - return pad(d.getMonth() + 1, p, 2); -} -function formatMinutes(d, p) { - return pad(d.getMinutes(), p, 2); -} -function formatSeconds(d, p) { - return pad(d.getSeconds(), p, 2); -} -function formatWeekdayNumberMonday(d) { - var day2 = d.getDay(); - return day2 === 0 ? 7 : day2; -} -function formatWeekNumberSunday(d, p) { - return pad(sunday.count(timeYear(d) - 1, d), p, 2); -} -function dISO(d) { - var day2 = d.getDay(); - return day2 >= 4 || day2 === 0 ? thursday(d) : thursday.ceil(d); -} -function formatWeekNumberISO(d, p) { - d = dISO(d); - return pad(thursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2); -} -function formatWeekdayNumberSunday(d) { - return d.getDay(); -} -function formatWeekNumberMonday(d, p) { - return pad(monday.count(timeYear(d) - 1, d), p, 2); -} -function formatYear(d, p) { - return pad(d.getFullYear() % 100, p, 2); -} -function formatYearISO(d, p) { - d = dISO(d); - return pad(d.getFullYear() % 100, p, 2); -} -function formatFullYear(d, p) { - return pad(d.getFullYear() % 1e4, p, 4); -} -function formatFullYearISO(d, p) { - var day2 = d.getDay(); - d = day2 >= 4 || day2 === 0 ? thursday(d) : thursday.ceil(d); - return pad(d.getFullYear() % 1e4, p, 4); -} -function formatZone(d) { - var z = d.getTimezoneOffset(); - return (z > 0 ? "-" : (z *= -1, "+")) + pad(z / 60 | 0, "0", 2) + pad(z % 60, "0", 2); -} -function formatUTCDayOfMonth(d, p) { - return pad(d.getUTCDate(), p, 2); -} -function formatUTCHour24(d, p) { - return pad(d.getUTCHours(), p, 2); -} -function formatUTCHour12(d, p) { - return pad(d.getUTCHours() % 12 || 12, p, 2); -} -function formatUTCDayOfYear(d, p) { - return pad(1 + utcDay$1.count(utcYear$1(d), d), p, 3); -} -function formatUTCMilliseconds(d, p) { - return pad(d.getUTCMilliseconds(), p, 3); -} -function formatUTCMicroseconds(d, p) { - return formatUTCMilliseconds(d, p) + "000"; -} -function formatUTCMonthNumber(d, p) { - return pad(d.getUTCMonth() + 1, p, 2); -} -function formatUTCMinutes(d, p) { - return pad(d.getUTCMinutes(), p, 2); -} -function formatUTCSeconds(d, p) { - return pad(d.getUTCSeconds(), p, 2); -} -function formatUTCWeekdayNumberMonday(d) { - var dow = d.getUTCDay(); - return dow === 0 ? 7 : dow; -} -function formatUTCWeekNumberSunday(d, p) { - return pad(utcSunday.count(utcYear$1(d) - 1, d), p, 2); -} -function UTCdISO(d) { - var day2 = d.getUTCDay(); - return day2 >= 4 || day2 === 0 ? utcThursday(d) : utcThursday.ceil(d); -} -function formatUTCWeekNumberISO(d, p) { - d = UTCdISO(d); - return pad(utcThursday.count(utcYear$1(d), d) + (utcYear$1(d).getUTCDay() === 4), p, 2); -} -function formatUTCWeekdayNumberSunday(d) { - return d.getUTCDay(); -} -function formatUTCWeekNumberMonday(d, p) { - return pad(utcMonday.count(utcYear$1(d) - 1, d), p, 2); -} -function formatUTCYear(d, p) { - return pad(d.getUTCFullYear() % 100, p, 2); -} -function formatUTCYearISO(d, p) { - d = UTCdISO(d); - return pad(d.getUTCFullYear() % 100, p, 2); -} -function formatUTCFullYear(d, p) { - return pad(d.getUTCFullYear() % 1e4, p, 4); -} -function formatUTCFullYearISO(d, p) { - var day2 = d.getUTCDay(); - d = day2 >= 4 || day2 === 0 ? utcThursday(d) : utcThursday.ceil(d); - return pad(d.getUTCFullYear() % 1e4, p, 4); -} -function formatUTCZone() { - return "+0000"; -} -function formatLiteralPercent() { - return "%"; -} -function formatUnixTimestamp(d) { - return +d; -} -function formatUnixTimestampSeconds(d) { - return Math.floor(+d / 1e3); -} -var locale; -var timeFormat; -defaultLocale({ - dateTime: "%x, %X", - date: "%-m/%-d/%Y", - time: "%-I:%M:%S %p", - periods: ["AM", "PM"], - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] -}); -function defaultLocale(definition) { - locale = formatLocale(definition); - timeFormat = locale.format; - locale.parse; - locale.utcFormat; - locale.utcParse; - return locale; -} -function date(t) { - return new Date(t); -} -function number(t) { - return t instanceof Date ? +t : +new Date(+t); -} -function calendar(ticks2, tickInterval2, year2, month2, week, day2, hour2, minute2, second2, format2) { - var scale = continuous(), invert = scale.invert, domain = scale.domain; - var formatMillisecond = format2(".%L"), formatSecond = format2(":%S"), formatMinute = format2("%I:%M"), formatHour = format2("%I %p"), formatDay = format2("%a %d"), formatWeek = format2("%b %d"), formatMonth = format2("%B"), formatYear2 = format2("%Y"); - function tickFormat2(date2) { - return (second2(date2) < date2 ? formatMillisecond : minute2(date2) < date2 ? formatSecond : hour2(date2) < date2 ? formatMinute : day2(date2) < date2 ? formatHour : month2(date2) < date2 ? week(date2) < date2 ? formatDay : formatWeek : year2(date2) < date2 ? formatMonth : formatYear2)(date2); - } - scale.invert = function(y) { - return new Date(invert(y)); - }; - scale.domain = function(_) { - return arguments.length ? domain(Array.from(_, number)) : domain().map(date); - }; - scale.ticks = function(interval) { - var d = domain(); - return ticks2(d[0], d[d.length - 1], interval == null ? 10 : interval); - }; - scale.tickFormat = function(count, specifier) { - return specifier == null ? tickFormat2 : format2(specifier); - }; - scale.nice = function(interval) { - var d = domain(); - if (!interval || typeof interval.range !== "function") - interval = tickInterval2(d[0], d[d.length - 1], interval == null ? 10 : interval); - return interval ? domain(nice(d, interval)) : scale; - }; - scale.copy = function() { - return copy(scale, calendar(ticks2, tickInterval2, year2, month2, week, day2, hour2, minute2, second2, format2)); - }; - return scale; -} -function time() { - return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, sunday, timeDay, timeHour, timeMinute, utcSecond, timeFormat).domain([new Date(2e3, 0, 1), new Date(2e3, 0, 2)]), arguments); -} -var parser = function() { - var o = function(k, v, o2, l) { - for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) - ; - return o2; - }, $V0 = [1, 3], $V1 = [1, 5], $V2 = [7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 28, 35, 40], $V3 = [1, 15], $V4 = [1, 16], $V5 = [1, 17], $V6 = [1, 18], $V7 = [1, 19], $V8 = [1, 20], $V9 = [1, 21], $Va = [1, 22], $Vb = [1, 23], $Vc = [1, 24], $Vd = [1, 25], $Ve = [1, 26], $Vf = [1, 27], $Vg = [1, 29], $Vh = [1, 31], $Vi = [1, 34], $Vj = [5, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 28, 35, 40]; - var parser2 = { - trace: function trace() { - }, - yy: {}, - symbols_: { "error": 2, "start": 3, "directive": 4, "gantt": 5, "document": 6, "EOF": 7, "line": 8, "SPACE": 9, "statement": 10, "NL": 11, "dateFormat": 12, "inclusiveEndDates": 13, "topAxis": 14, "axisFormat": 15, "tickInterval": 16, "excludes": 17, "includes": 18, "todayMarker": 19, "title": 20, "acc_title": 21, "acc_title_value": 22, "acc_descr": 23, "acc_descr_value": 24, "acc_descr_multiline_value": 25, "section": 26, "clickStatement": 27, "taskTxt": 28, "taskData": 29, "openDirective": 30, "typeDirective": 31, "closeDirective": 32, ":": 33, "argDirective": 34, "click": 35, "callbackname": 36, "callbackargs": 37, "href": 38, "clickStatementDebug": 39, "open_directive": 40, "type_directive": 41, "arg_directive": 42, "close_directive": 43, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 5: "gantt", 7: "EOF", 9: "SPACE", 11: "NL", 12: "dateFormat", 13: "inclusiveEndDates", 14: "topAxis", 15: "axisFormat", 16: "tickInterval", 17: "excludes", 18: "includes", 19: "todayMarker", 20: "title", 21: "acc_title", 22: "acc_title_value", 23: "acc_descr", 24: "acc_descr_value", 25: "acc_descr_multiline_value", 26: "section", 28: "taskTxt", 29: "taskData", 33: ":", 35: "click", 36: "callbackname", 37: "callbackargs", 38: "href", 40: "open_directive", 41: "type_directive", 42: "arg_directive", 43: "close_directive" }, - productions_: [0, [3, 2], [3, 3], [6, 0], [6, 2], [8, 2], [8, 1], [8, 1], [8, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [10, 1], [10, 1], [10, 1], [10, 2], [10, 1], [4, 4], [4, 6], [27, 2], [27, 3], [27, 3], [27, 4], [27, 3], [27, 4], [27, 2], [39, 2], [39, 3], [39, 3], [39, 4], [39, 3], [39, 4], [39, 2], [30, 1], [31, 1], [34, 1], [32, 1]], - performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 2: - return $$[$0 - 1]; - case 3: - this.$ = []; - break; - case 4: - $$[$0 - 1].push($$[$0]); - this.$ = $$[$0 - 1]; - break; - case 5: - case 6: - this.$ = $$[$0]; - break; - case 7: - case 8: - this.$ = []; - break; - case 9: - yy.setDateFormat($$[$0].substr(11)); - this.$ = $$[$0].substr(11); - break; - case 10: - yy.enableInclusiveEndDates(); - this.$ = $$[$0].substr(18); - break; - case 11: - yy.TopAxis(); - this.$ = $$[$0].substr(8); - break; - case 12: - yy.setAxisFormat($$[$0].substr(11)); - this.$ = $$[$0].substr(11); - break; - case 13: - yy.setTickInterval($$[$0].substr(13)); - this.$ = $$[$0].substr(13); - break; - case 14: - yy.setExcludes($$[$0].substr(9)); - this.$ = $$[$0].substr(9); - break; - case 15: - yy.setIncludes($$[$0].substr(9)); - this.$ = $$[$0].substr(9); - break; - case 16: - yy.setTodayMarker($$[$0].substr(12)); - this.$ = $$[$0].substr(12); - break; - case 17: - yy.setDiagramTitle($$[$0].substr(6)); - this.$ = $$[$0].substr(6); - break; - case 18: - this.$ = $$[$0].trim(); - yy.setAccTitle(this.$); - break; - case 19: - case 20: - this.$ = $$[$0].trim(); - yy.setAccDescription(this.$); - break; - case 21: - yy.addSection($$[$0].substr(8)); - this.$ = $$[$0].substr(8); - break; - case 23: - yy.addTask($$[$0 - 1], $$[$0]); - this.$ = "task"; - break; - case 27: - this.$ = $$[$0 - 1]; - yy.setClickEvent($$[$0 - 1], $$[$0], null); - break; - case 28: - this.$ = $$[$0 - 2]; - yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]); - break; - case 29: - this.$ = $$[$0 - 2]; - yy.setClickEvent($$[$0 - 2], $$[$0 - 1], null); - yy.setLink($$[$0 - 2], $$[$0]); - break; - case 30: - this.$ = $$[$0 - 3]; - yy.setClickEvent($$[$0 - 3], $$[$0 - 2], $$[$0 - 1]); - yy.setLink($$[$0 - 3], $$[$0]); - break; - case 31: - this.$ = $$[$0 - 2]; - yy.setClickEvent($$[$0 - 2], $$[$0], null); - yy.setLink($$[$0 - 2], $$[$0 - 1]); - break; - case 32: - this.$ = $$[$0 - 3]; - yy.setClickEvent($$[$0 - 3], $$[$0 - 1], $$[$0]); - yy.setLink($$[$0 - 3], $$[$0 - 2]); - break; - case 33: - this.$ = $$[$0 - 1]; - yy.setLink($$[$0 - 1], $$[$0]); - break; - case 34: - case 40: - this.$ = $$[$0 - 1] + " " + $$[$0]; - break; - case 35: - case 36: - case 38: - this.$ = $$[$0 - 2] + " " + $$[$0 - 1] + " " + $$[$0]; - break; - case 37: - case 39: - this.$ = $$[$0 - 3] + " " + $$[$0 - 2] + " " + $$[$0 - 1] + " " + $$[$0]; - break; - case 41: - yy.parseDirective("%%{", "open_directive"); - break; - case 42: - yy.parseDirective($$[$0], "type_directive"); - break; - case 43: - $$[$0] = $$[$0].trim().replace(/'/g, '"'); - yy.parseDirective($$[$0], "arg_directive"); - break; - case 44: - yy.parseDirective("}%%", "close_directive", "gantt"); - break; - } - }, - table: [{ 3: 1, 4: 2, 5: $V0, 30: 4, 40: $V1 }, { 1: [3] }, { 3: 6, 4: 2, 5: $V0, 30: 4, 40: $V1 }, o($V2, [2, 3], { 6: 7 }), { 31: 8, 41: [1, 9] }, { 41: [2, 41] }, { 1: [2, 1] }, { 4: 30, 7: [1, 10], 8: 11, 9: [1, 12], 10: 13, 11: [1, 14], 12: $V3, 13: $V4, 14: $V5, 15: $V6, 16: $V7, 17: $V8, 18: $V9, 19: $Va, 20: $Vb, 21: $Vc, 23: $Vd, 25: $Ve, 26: $Vf, 27: 28, 28: $Vg, 30: 4, 35: $Vh, 40: $V1 }, { 32: 32, 33: [1, 33], 43: $Vi }, o([33, 43], [2, 42]), o($V2, [2, 8], { 1: [2, 2] }), o($V2, [2, 4]), { 4: 30, 10: 35, 12: $V3, 13: $V4, 14: $V5, 15: $V6, 16: $V7, 17: $V8, 18: $V9, 19: $Va, 20: $Vb, 21: $Vc, 23: $Vd, 25: $Ve, 26: $Vf, 27: 28, 28: $Vg, 30: 4, 35: $Vh, 40: $V1 }, o($V2, [2, 6]), o($V2, [2, 7]), o($V2, [2, 9]), o($V2, [2, 10]), o($V2, [2, 11]), o($V2, [2, 12]), o($V2, [2, 13]), o($V2, [2, 14]), o($V2, [2, 15]), o($V2, [2, 16]), o($V2, [2, 17]), { 22: [1, 36] }, { 24: [1, 37] }, o($V2, [2, 20]), o($V2, [2, 21]), o($V2, [2, 22]), { 29: [1, 38] }, o($V2, [2, 24]), { 36: [1, 39], 38: [1, 40] }, { 11: [1, 41] }, { 34: 42, 42: [1, 43] }, { 11: [2, 44] }, o($V2, [2, 5]), o($V2, [2, 18]), o($V2, [2, 19]), o($V2, [2, 23]), o($V2, [2, 27], { 37: [1, 44], 38: [1, 45] }), o($V2, [2, 33], { 36: [1, 46] }), o($Vj, [2, 25]), { 32: 47, 43: $Vi }, { 43: [2, 43] }, o($V2, [2, 28], { 38: [1, 48] }), o($V2, [2, 29]), o($V2, [2, 31], { 37: [1, 49] }), { 11: [1, 50] }, o($V2, [2, 30]), o($V2, [2, 32]), o($Vj, [2, 26])], - defaultActions: { 5: [2, 41], 6: [2, 1], 34: [2, 44], 43: [2, 43] }, - parseError: function parseError(str, hash) { - if (hash.recoverable) { - this.trace(str); - } else { - var error = new Error(str); - error.hash = hash; - throw error; - } - }, - parse: function parse(input) { - var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1; - var args = lstack.slice.call(arguments, 1); - var lexer2 = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k)) { - sharedState.yy[k] = this.yy[k]; - } - } - lexer2.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer2; - sharedState.yy.parser = this; - if (typeof lexer2.yylloc == "undefined") { - lexer2.yylloc = {}; - } - var yyloc = lexer2.yylloc; - lstack.push(yyloc); - var ranges = lexer2.options && lexer2.options.ranges; - if (typeof sharedState.yy.parseError === "function") { - this.parseError = sharedState.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; - } - function lex() { - var token; - token = tstack.pop() || lexer2.lex() || EOF; - if (typeof token !== "number") { - if (token instanceof Array) { - tstack = token; - token = tstack.pop(); - } - token = self.symbols_[token] || token; - } - return token; - } - var symbol, state, action, r, yyval = {}, p, len, newState, expected; - while (true) { - state = stack[stack.length - 1]; - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); - } - action = table[state] && table[state][symbol]; - } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - expected = []; - for (p in table[state]) { - if (this.terminals_[p] && p > TERROR) { - expected.push("'" + this.terminals_[p] + "'"); - } - } - if (lexer2.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; - } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); - } - this.parseError(errStr, { - text: lexer2.match, - token: this.terminals_[symbol] || symbol, - line: lexer2.yylineno, - loc: yyloc, - expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer2.yytext); - lstack.push(lexer2.yylloc); - stack.push(action[1]); - symbol = null; - { - yyleng = lexer2.yyleng; - yytext = lexer2.yytext; - yylineno = lexer2.yylineno; - yyloc = lexer2.yylloc; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r !== "undefined") { - return r; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState); - break; - case 3: - return true; - } - } - return true; - } - }; - var lexer = function() { - var lexer2 = { - EOF: 1, - parseError: function parseError(str, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str, hash); - } else { - throw new Error(str); - } - }, - // resets the lexer, sets new input - setInput: function(input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 - }; - if (this.options.ranges) { - this.yylloc.range = [0, 0]; - } - this.offset = 0; - return this; - }, - // consumes and returns one char from the input - input: function() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; - } - this._input = this._input.slice(1); - return ch; - }, - // unshifts one char (or a string) into the input - unput: function(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) { - this.yylineno -= lines.length - 1; - } - var r = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len - }; - if (this.options.ranges) { - this.yylloc.range = [r[0], r[0] + this.yyleng - len]; - } - this.yyleng = this.yytext.length; - return this; - }, - // When called from action, caches matched text and appends it on next action - more: function() { - this._more = true; - return this; - }, - // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. - reject: function() { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - return this; - }, - // retain first n characters of the match - less: function(n) { - this.unput(this.match.slice(n)); - }, - // displays already matched input, i.e. for error messages - pastInput: function() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, - // displays upcoming input, i.e. for error messages - upcomingInput: function() { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20 - next.length); - } - return (next.substr(0, 20) + (next.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, - // displays the character position where the lexing error occurred, i.e. for error messages - showPosition: function() { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c + "^"; - }, - // test the lexed token: return FALSE when not a match, otherwise return token - test_match: function(match, indexed_rule) { - var token, lines, backup; - if (this.options.backtrack_lexer) { - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); - } - } - lines = match[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; - } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length - }; - this.yytext += match[0]; - this.match += match[0]; - this.matches = match; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; - } - if (token) { - return token; - } else if (this._backtrack) { - for (var k in backup) { - this[k] = backup[k]; - } - return false; - } - return false; - }, - // return next match in input - next: function() { - if (this.done) { - return this.EOF; - } - if (!this._input) { - this.done = true; - } - var token, match, tempMatch, index; - if (!this._more) { - this.yytext = ""; - this.match = ""; - } - var rules = this._currentRules(); - for (var i = 0; i < rules.length; i++) { - tempMatch = this._input.match(this.rules[rules[i]]); - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { - match = tempMatch; - index = i; - if (this.options.backtrack_lexer) { - token = this.test_match(tempMatch, rules[i]); - if (token !== false) { - return token; - } else if (this._backtrack) { - match = false; - continue; - } else { - return false; - } - } else if (!this.options.flex) { - break; - } - } - } - if (match) { - token = this.test_match(match, rules[index]); - if (token !== false) { - return token; - } - return false; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - }, - // return next match that has a token - lex: function lex() { - var r = this.next(); - if (r) { - return r; - } else { - return this.lex(); - } - }, - // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) - begin: function begin(condition) { - this.conditionStack.push(condition); - }, - // pop the previously active lexer condition state off the condition stack - popState: function popState() { - var n = this.conditionStack.length - 1; - if (n > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; - } - }, - // produce the lexer rule set which is active for the currently active lexer condition state - _currentRules: function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; - } - }, - // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available - topState: function topState(n) { - n = this.conditionStack.length - 1 - Math.abs(n || 0); - if (n >= 0) { - return this.conditionStack[n]; - } else { - return "INITIAL"; - } - }, - // alias for begin(condition) - pushState: function pushState(condition) { - this.begin(condition); - }, - // return the number of states currently on the stack - stateStackSize: function stateStackSize() { - return this.conditionStack.length; - }, - options: { "case-insensitive": true }, - performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - switch ($avoiding_name_collisions) { - case 0: - this.begin("open_directive"); - return 40; - case 1: - this.begin("type_directive"); - return 41; - case 2: - this.popState(); - this.begin("arg_directive"); - return 33; - case 3: - this.popState(); - this.popState(); - return 43; - case 4: - return 42; - case 5: - this.begin("acc_title"); - return 21; - case 6: - this.popState(); - return "acc_title_value"; - case 7: - this.begin("acc_descr"); - return 23; - case 8: - this.popState(); - return "acc_descr_value"; - case 9: - this.begin("acc_descr_multiline"); - break; - case 10: - this.popState(); - break; - case 11: - return "acc_descr_multiline_value"; - case 12: - break; - case 13: - break; - case 14: - break; - case 15: - return 11; - case 16: - break; - case 17: - break; - case 18: - break; - case 19: - this.begin("href"); - break; - case 20: - this.popState(); - break; - case 21: - return 38; - case 22: - this.begin("callbackname"); - break; - case 23: - this.popState(); - break; - case 24: - this.popState(); - this.begin("callbackargs"); - break; - case 25: - return 36; - case 26: - this.popState(); - break; - case 27: - return 37; - case 28: - this.begin("click"); - break; - case 29: - this.popState(); - break; - case 30: - return 35; - case 31: - return 5; - case 32: - return 12; - case 33: - return 13; - case 34: - return 14; - case 35: - return 15; - case 36: - return 16; - case 37: - return 18; - case 38: - return 17; - case 39: - return 19; - case 40: - return "date"; - case 41: - return 20; - case 42: - return "accDescription"; - case 43: - return 26; - case 44: - return 28; - case 45: - return 29; - case 46: - return 33; - case 47: - return 7; - case 48: - return "INVALID"; - } - }, - rules: [/^(?:%%\{)/i, /^(?:((?:(?!\}%%)[^:.])*))/i, /^(?::)/i, /^(?:\}%%)/i, /^(?:((?:(?!\}%%).|\n)*))/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:%%(?!\{)*[^\n]*)/i, /^(?:[^\}]%%*[^\n]*)/i, /^(?:%%*[^\n]*[\n]*)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:href[\s]+["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:call[\s]+)/i, /^(?:\([\s]*\))/i, /^(?:\()/i, /^(?:[^(]*)/i, /^(?:\))/i, /^(?:[^)]*)/i, /^(?:click[\s]+)/i, /^(?:[\s\n])/i, /^(?:[^\s\n]*)/i, /^(?:gantt\b)/i, /^(?:dateFormat\s[^#\n;]+)/i, /^(?:inclusiveEndDates\b)/i, /^(?:topAxis\b)/i, /^(?:axisFormat\s[^#\n;]+)/i, /^(?:tickInterval\s[^#\n;]+)/i, /^(?:includes\s[^#\n;]+)/i, /^(?:excludes\s[^#\n;]+)/i, /^(?:todayMarker\s[^\n;]+)/i, /^(?:\d\d\d\d-\d\d-\d\d\b)/i, /^(?:title\s[^#\n;]+)/i, /^(?:accDescription\s[^#\n;]+)/i, /^(?:section\s[^#:\n;]+)/i, /^(?:[^#:\n;]+)/i, /^(?::[^#\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i], - conditions: { "acc_descr_multiline": { "rules": [10, 11], "inclusive": false }, "acc_descr": { "rules": [8], "inclusive": false }, "acc_title": { "rules": [6], "inclusive": false }, "close_directive": { "rules": [], "inclusive": false }, "arg_directive": { "rules": [3, 4], "inclusive": false }, "type_directive": { "rules": [2, 3], "inclusive": false }, "open_directive": { "rules": [1], "inclusive": false }, "callbackargs": { "rules": [26, 27], "inclusive": false }, "callbackname": { "rules": [23, 24, 25], "inclusive": false }, "href": { "rules": [20, 21], "inclusive": false }, "click": { "rules": [29, 30], "inclusive": false }, "INITIAL": { "rules": [0, 5, 7, 9, 12, 13, 14, 15, 16, 17, 18, 19, 22, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48], "inclusive": true } } - }; - return lexer2; - }(); - parser2.lexer = lexer; - function Parser() { - this.yy = {}; - } - Parser.prototype = parser2; - parser2.Parser = Parser; - return new Parser(); -}(); -parser.parser = parser; -const ganttParser = parser; -var isoWeekExports = {}; -var isoWeek = { - get exports() { - return isoWeekExports; - }, - set exports(v) { - isoWeekExports = v; - } -}; -(function(module, exports) { - !function(e, t) { - module.exports = t(); - }(commonjsGlobal, function() { - var e = "day"; - return function(t, i, s) { - var a = function(t4) { - return t4.add(4 - t4.isoWeekday(), e); - }, d = i.prototype; - d.isoWeekYear = function() { - return a(this).year(); - }, d.isoWeek = function(t4) { - if (!this.$utils().u(t4)) - return this.add(7 * (t4 - this.isoWeek()), e); - var i2, d2, n2, o, r = a(this), u = (i2 = this.isoWeekYear(), d2 = this.$u, n2 = (d2 ? s.utc : s)().year(i2).startOf("year"), o = 4 - n2.isoWeekday(), n2.isoWeekday() > 4 && (o += 7), n2.add(o, e)); - return r.diff(u, "week") + 1; - }, d.isoWeekday = function(e3) { - return this.$utils().u(e3) ? this.day() || 7 : this.day(this.day() % 7 ? e3 : e3 - 7); - }; - var n = d.startOf; - d.startOf = function(e3, t4) { - var i2 = this.$utils(), s2 = !!i2.u(t4) || t4; - return "isoweek" === i2.p(e3) ? s2 ? this.date(this.date() - (this.isoWeekday() - 1)).startOf("day") : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf("day") : n.bind(this)(e3, t4); - }; - }; - }); -})(isoWeek); -const dayjsIsoWeek = isoWeekExports; -var customParseFormatExports = {}; -var customParseFormat = { - get exports() { - return customParseFormatExports; - }, - set exports(v) { - customParseFormatExports = v; - } -}; -(function(module, exports) { - !function(e, t) { - module.exports = t(); - }(commonjsGlobal, function() { - 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(e3) { - return (e3 = +e3) + (e3 > 68 ? 1900 : 2e3); - }; - var a = function(e3) { - return function(t4) { - this[e3] = +t4; - }; - }, f = [/[+-]\d\d:?(\d\d)?|Z/, function(e3) { - (this.zone || (this.zone = {})).offset = function(e4) { - if (!e4) - return 0; - if ("Z" === e4) - return 0; - var t4 = e4.match(/([+-]|\d\d)/g), n2 = 60 * t4[1] + (+t4[2] || 0); - return 0 === n2 ? 0 : "+" === t4[0] ? -n2 : n2; - }(e3); - }], h = function(e3) { - var t4 = o[e3]; - return t4 && (t4.indexOf ? t4 : t4.s.concat(t4.f)); - }, u = function(e3, t4) { - var n2, r2 = o.meridiem; - if (r2) { - for (var i2 = 1; i2 <= 24; i2 += 1) - if (e3.indexOf(r2(i2, 0, t4)) > -1) { - n2 = i2 > 12; - break; - } - } else - n2 = e3 === (t4 ? "pm" : "PM"); - return n2; - }, d = { A: [i, function(e3) { - this.afternoon = u(e3, false); - }], a: [i, function(e3) { - this.afternoon = u(e3, true); - }], S: [/\d/, function(e3) { - this.milliseconds = 100 * +e3; - }], SS: [n, function(e3) { - this.milliseconds = 10 * +e3; - }], SSS: [/\d{3}/, function(e3) { - this.milliseconds = +e3; - }], 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(e3) { - var t4 = o.ordinal, n2 = e3.match(/\d+/); - if (this.day = n2[0], t4) - for (var r2 = 1; r2 <= 31; r2 += 1) - t4(r2).replace(/\[|\]/g, "") === e3 && (this.day = r2); - }], M: [r, a("month")], MM: [n, a("month")], MMM: [i, function(e3) { - var t4 = h("months"), n2 = (h("monthsShort") || t4.map(function(e4) { - return e4.slice(0, 3); - })).indexOf(e3) + 1; - if (n2 < 1) - throw new Error(); - this.month = n2 % 12 || n2; - }], MMMM: [i, function(e3) { - var t4 = h("months").indexOf(e3) + 1; - if (t4 < 1) - throw new Error(); - this.month = t4 % 12 || t4; - }], Y: [/[+-]?\d+/, a("year")], YY: [n, function(e3) { - this.year = s(e3); - }], YYYY: [/\d{4}/, a("year")], Z: f, ZZ: f }; - function c(n2) { - var r2, i2; - r2 = n2, i2 = o && o.formats; - for (var s2 = (n2 = r2.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, function(t4, n3, r3) { - var o2 = r3 && r3.toUpperCase(); - return n3 || i2[r3] || e[r3] || i2[o2].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function(e3, t5, n4) { - return t5 || n4.slice(1); - }); - })).match(t), a2 = s2.length, f2 = 0; f2 < a2; f2 += 1) { - var h2 = s2[f2], u2 = d[h2], c2 = u2 && u2[0], l = u2 && u2[1]; - s2[f2] = l ? { regex: c2, parser: l } : h2.replace(/^\[|\]$/g, ""); - } - return function(e3) { - for (var t4 = {}, n3 = 0, r3 = 0; n3 < a2; n3 += 1) { - var i3 = s2[n3]; - if ("string" == typeof i3) - r3 += i3.length; - else { - var o2 = i3.regex, f3 = i3.parser, h3 = e3.slice(r3), u3 = o2.exec(h3)[0]; - f3.call(t4, u3), e3 = e3.replace(u3, ""); - } - } - return function(e4) { - var t5 = e4.afternoon; - if (void 0 !== t5) { - var n4 = e4.hours; - t5 ? n4 < 12 && (e4.hours += 12) : 12 === n4 && (e4.hours = 0), delete e4.afternoon; - } - }(t4), t4; - }; - } - return function(e3, t4, n2) { - n2.p.customParseFormat = true, e3 && e3.parseTwoDigitYear && (s = e3.parseTwoDigitYear); - var r2 = t4.prototype, i2 = r2.parse; - r2.parse = function(e4) { - var t5 = e4.date, r3 = e4.utc, s2 = e4.args; - this.$u = r3; - var a2 = s2[1]; - if ("string" == typeof a2) { - var f2 = true === s2[2], h2 = true === s2[3], u2 = f2 || h2, d2 = s2[2]; - h2 && (d2 = s2[2]), o = this.$locale(), !f2 && d2 && (o = n2.Ls[d2]), this.$d = function(e6, t6, n3) { - try { - if (["x", "X"].indexOf(t6) > -1) - return new Date(("X" === t6 ? 1e3 : 1) * e6); - var r4 = c(t6)(e6), i3 = r4.year, o2 = r4.month, s3 = r4.day, a3 = r4.hours, f3 = r4.minutes, h3 = r4.seconds, u3 = r4.milliseconds, d3 = r4.zone, l2 = new Date(), m2 = s3 || (i3 || o2 ? 1 : l2.getDate()), M2 = i3 || l2.getFullYear(), Y = 0; - i3 && !o2 || (Y = o2 > 0 ? o2 - 1 : l2.getMonth()); - var p = a3 || 0, v = f3 || 0, D = h3 || 0, g = u3 || 0; - return d3 ? new Date(Date.UTC(M2, Y, m2, p, v, D, g + 60 * d3.offset * 1e3)) : n3 ? new Date(Date.UTC(M2, Y, m2, p, v, D, g)) : new Date(M2, Y, m2, p, v, D, g); - } catch (e7) { - return new Date(""); - } - }(t5, a2, r3), this.init(), d2 && true !== d2 && (this.$L = this.locale(d2).$L), u2 && t5 != this.format(a2) && (this.$d = new Date("")), o = {}; - } else if (a2 instanceof Array) - for (var l = a2.length, m = 1; m <= l; m += 1) { - s2[1] = a2[m - 1]; - var M = n2.apply(this, s2); - if (M.isValid()) { - this.$d = M.$d, this.$L = M.$L, this.init(); - break; - } - m === l && (this.$d = new Date("")); - } - else - i2.call(this, e4); - }; - }; - }); -})(customParseFormat); -const dayjsCustomParseFormat = customParseFormatExports; -var advancedFormatExports = {}; -var advancedFormat = { - get exports() { - return advancedFormatExports; - }, - set exports(v) { - advancedFormatExports = v; - } -}; -(function(module, exports) { - !function(e, t) { - module.exports = t(); - }(commonjsGlobal, function() { - return function(e, t) { - var r = t.prototype, n = r.format; - r.format = function(e3) { - var t4 = this, r2 = this.$locale(); - if (!this.isValid()) - return n.bind(this)(e3); - var s = this.$utils(), a = (e3 || "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(e4) { - switch (e4) { - case "Q": - return Math.ceil((t4.$M + 1) / 3); - case "Do": - return r2.ordinal(t4.$D); - case "gggg": - return t4.weekYear(); - case "GGGG": - return t4.isoWeekYear(); - case "wo": - return r2.ordinal(t4.week(), "W"); - case "w": - case "ww": - return s.s(t4.week(), "w" === e4 ? 1 : 2, "0"); - case "W": - case "WW": - return s.s(t4.isoWeek(), "W" === e4 ? 1 : 2, "0"); - case "k": - case "kk": - return s.s(String(0 === t4.$H ? 24 : t4.$H), "k" === e4 ? 1 : 2, "0"); - case "X": - return Math.floor(t4.$d.getTime() / 1e3); - case "x": - return t4.$d.getTime(); - case "z": - return "[" + t4.offsetName() + "]"; - case "zzz": - return "[" + t4.offsetName("long") + "]"; - default: - return e4; - } - }); - return n.bind(this)(a); - }; - }; - }); -})(advancedFormat); -const dayjsAdvancedFormat = advancedFormatExports; -dayjs.extend(dayjsIsoWeek); -dayjs.extend(dayjsCustomParseFormat); -dayjs.extend(dayjsAdvancedFormat); -let dateFormat = ""; -let axisFormat = ""; -let tickInterval = void 0; -let todayMarker = ""; -let includes = []; -let excludes = []; -let links = {}; -let sections = []; -let tasks = []; -let currentSection = ""; -const tags = ["active", "done", "crit", "milestone"]; -let funs = []; -let inclusiveEndDates = false; -let topAxis = false; -let lastOrder = 0; -const parseDirective = function(statement, context, type) { - mermaidAPI.parseDirective(this, statement, context, type); -}; -const clear = function() { - sections = []; - tasks = []; - currentSection = ""; - funs = []; - taskCnt = 0; - lastTask = void 0; - lastTaskID = void 0; - rawTasks = []; - dateFormat = ""; - axisFormat = ""; - tickInterval = void 0; - todayMarker = ""; - includes = []; - excludes = []; - inclusiveEndDates = false; - topAxis = false; - lastOrder = 0; - links = {}; - clear$1(); -}; -const setAxisFormat = function(txt) { - axisFormat = txt; -}; -const getAxisFormat = function() { - return axisFormat; -}; -const setTickInterval = function(txt) { - tickInterval = txt; -}; -const getTickInterval = function() { - return tickInterval; -}; -const setTodayMarker = function(txt) { - todayMarker = txt; -}; -const getTodayMarker = function() { - return todayMarker; -}; -const setDateFormat = function(txt) { - dateFormat = txt; -}; -const enableInclusiveEndDates = function() { - inclusiveEndDates = true; -}; -const endDatesAreInclusive = function() { - return inclusiveEndDates; -}; -const enableTopAxis = function() { - topAxis = true; -}; -const topAxisEnabled = function() { - return topAxis; -}; -const getDateFormat = function() { - return dateFormat; -}; -const setIncludes = function(txt) { - includes = txt.toLowerCase().split(/[\s,]+/); -}; -const getIncludes = function() { - return includes; -}; -const setExcludes = function(txt) { - excludes = txt.toLowerCase().split(/[\s,]+/); -}; -const getExcludes = function() { - return excludes; -}; -const getLinks = function() { - return links; -}; -const addSection = function(txt) { - currentSection = txt; - sections.push(txt); -}; -const getSections = function() { - return sections; -}; -const getTasks = function() { - let allItemsPricessed = compileTasks(); - const maxDepth = 10; - let iterationCount = 0; - while (!allItemsPricessed && iterationCount < maxDepth) { - allItemsPricessed = compileTasks(); - iterationCount++; - } - tasks = rawTasks; - return tasks; -}; -const isInvalidDate = function(date2, dateFormat2, excludes2, includes2) { - if (includes2.includes(date2.format(dateFormat2.trim()))) { - return false; - } - if (date2.isoWeekday() >= 6 && excludes2.includes("weekends")) { - return true; - } - if (excludes2.includes(date2.format("dddd").toLowerCase())) { - return true; - } - return excludes2.includes(date2.format(dateFormat2.trim())); -}; -const checkTaskDates = function(task, dateFormat2, excludes2, includes2) { - if (!excludes2.length || task.manualEndTime) { - return; - } - let startTime; - if (task.startTime instanceof Date) { - startTime = dayjs(task.startTime); - } else { - startTime = dayjs(task.startTime, dateFormat2, true); - } - startTime = startTime.add(1, "d"); - let originalEndTime; - if (task.endTime instanceof Date) { - originalEndTime = dayjs(task.endTime); - } else { - originalEndTime = dayjs(task.endTime, dateFormat2, true); - } - const [fixedEndTime, renderEndTime] = fixTaskDates( - startTime, - originalEndTime, - dateFormat2, - excludes2, - includes2 - ); - task.endTime = fixedEndTime.toDate(); - task.renderEndTime = renderEndTime; -}; -const fixTaskDates = function(startTime, endTime, dateFormat2, excludes2, includes2) { - let invalid = false; - let renderEndTime = null; - while (startTime <= endTime) { - if (!invalid) { - renderEndTime = endTime.toDate(); - } - invalid = isInvalidDate(startTime, dateFormat2, excludes2, includes2); - if (invalid) { - endTime = endTime.add(1, "d"); - } - startTime = startTime.add(1, "d"); - } - return [endTime, renderEndTime]; -}; -const getStartDate = function(prevTime, dateFormat2, str) { - str = str.trim(); - const re2 = /^after\s+([\d\w- ]+)/; - const afterStatement = re2.exec(str.trim()); - if (afterStatement !== null) { - let latestEndingTask = null; - afterStatement[1].split(" ").forEach(function(id) { - let task = findTaskById(id); - if (task !== void 0) { - if (!latestEndingTask) { - latestEndingTask = task; - } else { - if (task.endTime > latestEndingTask.endTime) { - latestEndingTask = task; - } - } - } - }); - if (!latestEndingTask) { - const dt = new Date(); - dt.setHours(0, 0, 0, 0); - return dt; - } else { - return latestEndingTask.endTime; - } - } - let mDate = dayjs(str, dateFormat2.trim(), true); - if (mDate.isValid()) { - return mDate.toDate(); - } else { - log.debug("Invalid date:" + str); - log.debug("With date format:" + dateFormat2.trim()); - const d = new Date(str); - if (d === void 0 || isNaN(d.getTime())) { - throw new Error("Invalid date:" + str); - } - return d; - } -}; -const parseDuration = function(str) { - const statement = /^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(str.trim()); - if (statement !== null) { - return [Number.parseFloat(statement[1]), statement[2]]; - } - return [NaN, "ms"]; -}; -const getEndDate = function(prevTime, dateFormat2, str, inclusive = false) { - str = str.trim(); - let mDate = dayjs(str, dateFormat2.trim(), true); - if (mDate.isValid()) { - if (inclusive) { - mDate = mDate.add(1, "d"); - } - return mDate.toDate(); - } - let endTime = dayjs(prevTime); - const [durationValue, durationUnit] = parseDuration(str); - if (!Number.isNaN(durationValue)) { - const newEndTime = endTime.add(durationValue, durationUnit); - if (newEndTime.isValid()) { - endTime = newEndTime; - } - } - return endTime.toDate(); -}; -let taskCnt = 0; -const parseId = function(idStr) { - if (idStr === void 0) { - taskCnt = taskCnt + 1; - return "task" + taskCnt; - } - return idStr; -}; -const compileData = function(prevTask, dataStr) { - let ds; - if (dataStr.substr(0, 1) === ":") { - ds = dataStr.substr(1, dataStr.length); - } else { - ds = dataStr; - } - const data = ds.split(","); - const task = {}; - getTaskTags(data, task, tags); - for (let i = 0; i < data.length; i++) { - data[i] = data[i].trim(); - } - let endTimeData = ""; - switch (data.length) { - case 1: - task.id = parseId(); - task.startTime = prevTask.endTime; - endTimeData = data[0]; - break; - case 2: - task.id = parseId(); - task.startTime = getStartDate(void 0, dateFormat, data[0]); - endTimeData = data[1]; - break; - case 3: - task.id = parseId(data[0]); - task.startTime = getStartDate(void 0, dateFormat, data[1]); - endTimeData = data[2]; - break; - } - if (endTimeData) { - task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates); - task.manualEndTime = dayjs(endTimeData, "YYYY-MM-DD", true).isValid(); - checkTaskDates(task, dateFormat, excludes, includes); - } - return task; -}; -const parseData = function(prevTaskId, dataStr) { - let ds; - if (dataStr.substr(0, 1) === ":") { - ds = dataStr.substr(1, dataStr.length); - } else { - ds = dataStr; - } - const data = ds.split(","); - const task = {}; - getTaskTags(data, task, tags); - for (let i = 0; i < data.length; i++) { - data[i] = data[i].trim(); - } - switch (data.length) { - case 1: - task.id = parseId(); - task.startTime = { - type: "prevTaskEnd", - id: prevTaskId - }; - task.endTime = { - data: data[0] - }; - break; - case 2: - task.id = parseId(); - task.startTime = { - type: "getStartDate", - startData: data[0] - }; - task.endTime = { - data: data[1] - }; - break; - case 3: - task.id = parseId(data[0]); - task.startTime = { - type: "getStartDate", - startData: data[1] - }; - task.endTime = { - data: data[2] - }; - break; - } - return task; -}; -let lastTask; -let lastTaskID; -let rawTasks = []; -const taskDb = {}; -const addTask = function(descr, data) { - const rawTask = { - section: currentSection, - type: currentSection, - processed: false, - manualEndTime: false, - renderEndTime: null, - raw: { data }, - task: descr, - classes: [] - }; - const taskInfo = parseData(lastTaskID, data); - rawTask.raw.startTime = taskInfo.startTime; - rawTask.raw.endTime = taskInfo.endTime; - rawTask.id = taskInfo.id; - rawTask.prevTaskId = lastTaskID; - rawTask.active = taskInfo.active; - rawTask.done = taskInfo.done; - rawTask.crit = taskInfo.crit; - rawTask.milestone = taskInfo.milestone; - rawTask.order = lastOrder; - lastOrder++; - const pos = rawTasks.push(rawTask); - lastTaskID = rawTask.id; - taskDb[rawTask.id] = pos - 1; -}; -const findTaskById = function(id) { - const pos = taskDb[id]; - return rawTasks[pos]; -}; -const addTaskOrg = function(descr, data) { - const newTask = { - section: currentSection, - type: currentSection, - description: descr, - task: descr, - classes: [] - }; - const taskInfo = compileData(lastTask, data); - newTask.startTime = taskInfo.startTime; - newTask.endTime = taskInfo.endTime; - newTask.id = taskInfo.id; - newTask.active = taskInfo.active; - newTask.done = taskInfo.done; - newTask.crit = taskInfo.crit; - newTask.milestone = taskInfo.milestone; - lastTask = newTask; - tasks.push(newTask); -}; -const compileTasks = function() { - const compileTask = function(pos) { - const task = rawTasks[pos]; - let startTime = ""; - switch (rawTasks[pos].raw.startTime.type) { - case "prevTaskEnd": { - const prevTask = findTaskById(task.prevTaskId); - task.startTime = prevTask.endTime; - break; - } - case "getStartDate": - startTime = getStartDate(void 0, dateFormat, rawTasks[pos].raw.startTime.startData); - if (startTime) { - rawTasks[pos].startTime = startTime; - } - break; - } - if (rawTasks[pos].startTime) { - rawTasks[pos].endTime = getEndDate( - rawTasks[pos].startTime, - dateFormat, - rawTasks[pos].raw.endTime.data, - inclusiveEndDates - ); - if (rawTasks[pos].endTime) { - rawTasks[pos].processed = true; - rawTasks[pos].manualEndTime = dayjs( - rawTasks[pos].raw.endTime.data, - "YYYY-MM-DD", - true - ).isValid(); - checkTaskDates(rawTasks[pos], dateFormat, excludes, includes); - } - } - return rawTasks[pos].processed; - }; - let allProcessed = true; - for (const [i, rawTask] of rawTasks.entries()) { - compileTask(i); - allProcessed = allProcessed && rawTask.processed; - } - return allProcessed; -}; -const setLink = function(ids, _linkStr) { - let linkStr = _linkStr; - if (getConfig().securityLevel !== "loose") { - linkStr = sanitizeUrl_1(_linkStr); - } - ids.split(",").forEach(function(id) { - let rawTask = findTaskById(id); - if (rawTask !== void 0) { - pushFun(id, () => { - window.open(linkStr, "_self"); - }); - links[id] = linkStr; - } - }); - setClass(ids, "clickable"); -}; -const setClass = function(ids, className) { - ids.split(",").forEach(function(id) { - let rawTask = findTaskById(id); - if (rawTask !== void 0) { - rawTask.classes.push(className); - } - }); -}; -const setClickFun = function(id, functionName, functionArgs) { - if (getConfig().securityLevel !== "loose") { - return; - } - if (functionName === void 0) { - return; - } - let argList = []; - if (typeof functionArgs === "string") { - argList = functionArgs.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/); - for (let i = 0; i < argList.length; i++) { - let item = argList[i].trim(); - if (item.charAt(0) === '"' && item.charAt(item.length - 1) === '"') { - item = item.substr(1, item.length - 2); - } - argList[i] = item; - } - } - if (argList.length === 0) { - argList.push(id); - } - let rawTask = findTaskById(id); - if (rawTask !== void 0) { - pushFun(id, () => { - utils.runFunc(functionName, ...argList); - }); - } -}; -const pushFun = function(id, callbackFunction) { - funs.push( - function() { - const elem = document.querySelector(`[id="${id}"]`); - if (elem !== null) { - elem.addEventListener("click", function() { - callbackFunction(); - }); - } - }, - function() { - const elem = document.querySelector(`[id="${id}-text"]`); - if (elem !== null) { - elem.addEventListener("click", function() { - callbackFunction(); - }); - } - } - ); -}; -const setClickEvent = function(ids, functionName, functionArgs) { - ids.split(",").forEach(function(id) { - setClickFun(id, functionName, functionArgs); - }); - setClass(ids, "clickable"); -}; -const bindFunctions = function(element) { - funs.forEach(function(fun) { - fun(element); - }); -}; -const ganttDb = { - parseDirective, - getConfig: () => getConfig().gantt, - clear, - setDateFormat, - getDateFormat, - enableInclusiveEndDates, - endDatesAreInclusive, - enableTopAxis, - topAxisEnabled, - setAxisFormat, - getAxisFormat, - setTickInterval, - getTickInterval, - setTodayMarker, - getTodayMarker, - setAccTitle, - getAccTitle, - setDiagramTitle, - getDiagramTitle, - setAccDescription, - getAccDescription, - addSection, - getSections, - getTasks, - addTask, - findTaskById, - addTaskOrg, - setIncludes, - getIncludes, - setExcludes, - getExcludes, - setClickEvent, - setLink, - getLinks, - bindFunctions, - parseDuration, - isInvalidDate -}; -function getTaskTags(data, task, tags2) { - let matchFound = true; - while (matchFound) { - matchFound = false; - tags2.forEach(function(t) { - const pattern = "^\\s*" + t + "\\s*$"; - const regex = new RegExp(pattern); - if (data[0].match(regex)) { - task[t] = true; - data.shift(1); - matchFound = true; - } - }); - } -} -const setConf = function() { - log.debug("Something is calling, setConf, remove the call"); -}; -let w; -const draw = function(text, id, version, diagObj) { - const conf = getConfig().gantt; - const securityLevel = getConfig().securityLevel; - let sandboxElement; - if (securityLevel === "sandbox") { - sandboxElement = select("#i" + id); - } - const root = securityLevel === "sandbox" ? select(sandboxElement.nodes()[0].contentDocument.body) : select("body"); - const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document; - const elem = doc.getElementById(id); - w = elem.parentElement.offsetWidth; - if (w === void 0) { - w = 1200; - } - if (conf.useWidth !== void 0) { - w = conf.useWidth; - } - const taskArray = diagObj.db.getTasks(); - const h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding; - elem.setAttribute("viewBox", "0 0 " + w + " " + h); - const svg = root.select(`[id="${id}"]`); - const timeScale = time().domain([ - min(taskArray, function(d) { - return d.startTime; - }), - max(taskArray, function(d) { - return d.endTime; - }) - ]).rangeRound([0, w - conf.leftPadding - conf.rightPadding]); - let categories = []; - for (const element of taskArray) { - categories.push(element.type); - } - const catsUnfiltered = categories; - categories = checkUnique(categories); - function taskCompare(a, b) { - const taskA = a.startTime; - const taskB = b.startTime; - let result = 0; - if (taskA > taskB) { - result = 1; - } else if (taskA < taskB) { - result = -1; - } - return result; - } - taskArray.sort(taskCompare); - makeGant(taskArray, w, h); - configureSvgSize(svg, h, w, conf.useMaxWidth); - svg.append("text").text(diagObj.db.getDiagramTitle()).attr("x", w / 2).attr("y", conf.titleTopMargin).attr("class", "titleText"); - function makeGant(tasks2, pageWidth, pageHeight) { - const barHeight = conf.barHeight; - const gap = barHeight + conf.barGap; - const topPadding = conf.topPadding; - const leftPadding = conf.leftPadding; - const colorScale = linear().domain([0, categories.length]).range(["#00B9FA", "#F95002"]).interpolate(interpolateHcl); - drawExcludeDays( - gap, - topPadding, - leftPadding, - pageWidth, - pageHeight, - tasks2, - diagObj.db.getExcludes(), - diagObj.db.getIncludes() - ); - makeGrid(leftPadding, topPadding, pageWidth, pageHeight); - drawRects(tasks2, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth); - vertLabels(gap, topPadding); - drawToday(leftPadding, topPadding, pageWidth, pageHeight); - } - function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w2) { - svg.append("g").selectAll("rect").data(theArray).enter().append("rect").attr("x", 0).attr("y", function(d, i) { - i = d.order; - return i * theGap + theTopPad - 2; - }).attr("width", function() { - return w2 - conf.rightPadding / 2; - }).attr("height", theGap).attr("class", function(d) { - for (const [i, category] of categories.entries()) { - if (d.type === category) { - return "section section" + i % conf.numberSectionStyles; - } - } - return "section section0"; - }); - const rectangles = svg.append("g").selectAll("rect").data(theArray).enter(); - const links2 = diagObj.db.getLinks(); - rectangles.append("rect").attr("id", function(d) { - return d.id; - }).attr("rx", 3).attr("ry", 3).attr("x", function(d) { - if (d.milestone) { - return timeScale(d.startTime) + theSidePad + 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight; - } - return timeScale(d.startTime) + theSidePad; - }).attr("y", function(d, i) { - i = d.order; - return i * theGap + theTopPad; - }).attr("width", function(d) { - if (d.milestone) { - return theBarHeight; - } - return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime); - }).attr("height", theBarHeight).attr("transform-origin", function(d, i) { - i = d.order; - return (timeScale(d.startTime) + theSidePad + 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))).toString() + "px " + (i * theGap + theTopPad + 0.5 * theBarHeight).toString() + "px"; - }).attr("class", function(d) { - const res = "task"; - let classStr = ""; - if (d.classes.length > 0) { - classStr = d.classes.join(" "); - } - let secNum = 0; - for (const [i, category] of categories.entries()) { - if (d.type === category) { - secNum = i % conf.numberSectionStyles; - } - } - let taskClass = ""; - if (d.active) { - if (d.crit) { - taskClass += " activeCrit"; - } else { - taskClass = " active"; - } - } else if (d.done) { - if (d.crit) { - taskClass = " doneCrit"; - } else { - taskClass = " done"; - } - } else { - if (d.crit) { - taskClass += " crit"; - } - } - if (taskClass.length === 0) { - taskClass = " task"; - } - if (d.milestone) { - taskClass = " milestone " + taskClass; - } - taskClass += secNum; - taskClass += " " + classStr; - return res + taskClass; - }); - rectangles.append("text").attr("id", function(d) { - return d.id + "-text"; - }).text(function(d) { - return d.task; - }).attr("font-size", conf.fontSize).attr("x", function(d) { - let startX = timeScale(d.startTime); - let endX = timeScale(d.renderEndTime || d.endTime); - if (d.milestone) { - startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight; - } - if (d.milestone) { - endX = startX + theBarHeight; - } - const textWidth = this.getBBox().width; - if (textWidth > endX - startX) { - if (endX + textWidth + 1.5 * conf.leftPadding > w2) { - return startX + theSidePad - 5; - } else { - return endX + theSidePad + 5; - } - } else { - return (endX - startX) / 2 + startX + theSidePad; - } - }).attr("y", function(d, i) { - i = d.order; - return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad; - }).attr("text-height", theBarHeight).attr("class", function(d) { - const startX = timeScale(d.startTime); - let endX = timeScale(d.endTime); - if (d.milestone) { - endX = startX + theBarHeight; - } - const textWidth = this.getBBox().width; - let classStr = ""; - if (d.classes.length > 0) { - classStr = d.classes.join(" "); - } - let secNum = 0; - for (const [i, category] of categories.entries()) { - if (d.type === category) { - secNum = i % conf.numberSectionStyles; - } - } - let taskType = ""; - if (d.active) { - if (d.crit) { - taskType = "activeCritText" + secNum; - } else { - taskType = "activeText" + secNum; - } - } - if (d.done) { - if (d.crit) { - taskType = taskType + " doneCritText" + secNum; - } else { - taskType = taskType + " doneText" + secNum; - } - } else { - if (d.crit) { - taskType = taskType + " critText" + secNum; - } - } - if (d.milestone) { - taskType += " milestoneText"; - } - if (textWidth > endX - startX) { - if (endX + textWidth + 1.5 * conf.leftPadding > w2) { - return classStr + " taskTextOutsideLeft taskTextOutside" + secNum + " " + taskType; - } else { - return classStr + " taskTextOutsideRight taskTextOutside" + secNum + " " + taskType + " width-" + textWidth; - } - } else { - return classStr + " taskText taskText" + secNum + " " + taskType + " width-" + textWidth; - } - }); - const securityLevel2 = getConfig().securityLevel; - if (securityLevel2 === "sandbox") { - let sandboxElement2; - sandboxElement2 = select("#i" + id); - const doc2 = sandboxElement2.nodes()[0].contentDocument; - rectangles.filter(function(d) { - return links2[d.id] !== void 0; - }).each(function(o) { - var taskRect = doc2.querySelector("#" + o.id); - var taskText = doc2.querySelector("#" + o.id + "-text"); - const oldParent = taskRect.parentNode; - var Link = doc2.createElement("a"); - Link.setAttribute("xlink:href", links2[o.id]); - Link.setAttribute("target", "_top"); - oldParent.appendChild(Link); - Link.appendChild(taskRect); - Link.appendChild(taskText); - }); - } - } - function drawExcludeDays(theGap, theTopPad, theSidePad, w2, h2, tasks2, excludes2, includes2) { - const minTime = tasks2.reduce( - (min2, { startTime }) => min2 ? Math.min(min2, startTime) : startTime, - 0 - ); - const maxTime = tasks2.reduce((max2, { endTime }) => max2 ? Math.max(max2, endTime) : endTime, 0); - const dateFormat2 = diagObj.db.getDateFormat(); - if (!minTime || !maxTime) { - return; - } - const excludeRanges = []; - let range = null; - let d = dayjs(minTime); - while (d.valueOf() <= maxTime) { - if (diagObj.db.isInvalidDate(d, dateFormat2, excludes2, includes2)) { - if (!range) { - range = { - start: d, - end: d - }; - } else { - range.end = d; - } - } else { - if (range) { - excludeRanges.push(range); - range = null; - } - } - d = d.add(1, "d"); - } - const rectangles = svg.append("g").selectAll("rect").data(excludeRanges).enter(); - rectangles.append("rect").attr("id", function(d2) { - return "exclude-" + d2.start.format("YYYY-MM-DD"); - }).attr("x", function(d2) { - return timeScale(d2.start) + theSidePad; - }).attr("y", conf.gridLineStartPadding).attr("width", function(d2) { - const renderEnd = d2.end.add(1, "day"); - return timeScale(renderEnd) - timeScale(d2.start); - }).attr("height", h2 - theTopPad - conf.gridLineStartPadding).attr("transform-origin", function(d2, i) { - return (timeScale(d2.start) + theSidePad + 0.5 * (timeScale(d2.end) - timeScale(d2.start))).toString() + "px " + (i * theGap + 0.5 * h2).toString() + "px"; - }).attr("class", "exclude-range"); - } - function makeGrid(theSidePad, theTopPad, w2, h2) { - let bottomXAxis = axisBottom(timeScale).tickSize(-h2 + theTopPad + conf.gridLineStartPadding).tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || "%Y-%m-%d")); - const reTickInterval = /^([1-9]\d*)(minute|hour|day|week|month)$/; - const resultTickInterval = reTickInterval.exec( - diagObj.db.getTickInterval() || conf.tickInterval - ); - if (resultTickInterval !== null) { - const every = resultTickInterval[1]; - const interval = resultTickInterval[2]; - switch (interval) { - case "minute": - bottomXAxis.ticks(timeMinute.every(every)); - break; - case "hour": - bottomXAxis.ticks(timeHour.every(every)); - break; - case "day": - bottomXAxis.ticks(timeDay.every(every)); - break; - case "week": - bottomXAxis.ticks(sunday.every(every)); - break; - case "month": - bottomXAxis.ticks(timeMonth.every(every)); - break; - } - } - svg.append("g").attr("class", "grid").attr("transform", "translate(" + theSidePad + ", " + (h2 - 50) + ")").call(bottomXAxis).selectAll("text").style("text-anchor", "middle").attr("fill", "#000").attr("stroke", "none").attr("font-size", 10).attr("dy", "1em"); - if (diagObj.db.topAxisEnabled() || conf.topAxis) { - let topXAxis = axisTop(timeScale).tickSize(-h2 + theTopPad + conf.gridLineStartPadding).tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || "%Y-%m-%d")); - if (resultTickInterval !== null) { - const every = resultTickInterval[1]; - const interval = resultTickInterval[2]; - switch (interval) { - case "minute": - topXAxis.ticks(timeMinute.every(every)); - break; - case "hour": - topXAxis.ticks(timeHour.every(every)); - break; - case "day": - topXAxis.ticks(timeDay.every(every)); - break; - case "week": - topXAxis.ticks(sunday.every(every)); - break; - case "month": - topXAxis.ticks(timeMonth.every(every)); - break; - } - } - svg.append("g").attr("class", "grid").attr("transform", "translate(" + theSidePad + ", " + theTopPad + ")").call(topXAxis).selectAll("text").style("text-anchor", "middle").attr("fill", "#000").attr("stroke", "none").attr("font-size", 10); - } - } - function vertLabels(theGap, theTopPad) { - const numOccurances = []; - let prevGap = 0; - for (const [i, category] of categories.entries()) { - numOccurances[i] = [category, getCount(category, catsUnfiltered)]; - } - svg.append("g").selectAll("text").data(numOccurances).enter().append(function(d) { - const rows = d[0].split(common.lineBreakRegex); - const dy = -(rows.length - 1) / 2; - const svgLabel = doc.createElementNS("http://www.w3.org/2000/svg", "text"); - svgLabel.setAttribute("dy", dy + "em"); - for (const [j, row] of rows.entries()) { - const tspan = doc.createElementNS("http://www.w3.org/2000/svg", "tspan"); - tspan.setAttribute("alignment-baseline", "central"); - tspan.setAttribute("x", "10"); - if (j > 0) { - tspan.setAttribute("dy", "1em"); - } - tspan.textContent = row; - svgLabel.appendChild(tspan); - } - return svgLabel; - }).attr("x", 10).attr("y", function(d, i) { - if (i > 0) { - for (let j = 0; j < i; j++) { - prevGap += numOccurances[i - 1][1]; - return d[1] * theGap / 2 + prevGap * theGap + theTopPad; - } - } else { - return d[1] * theGap / 2 + theTopPad; - } - }).attr("font-size", conf.sectionFontSize).attr("font-size", conf.sectionFontSize).attr("class", function(d) { - for (const [i, category] of categories.entries()) { - if (d[0] === category) { - return "sectionTitle sectionTitle" + i % conf.numberSectionStyles; - } - } - return "sectionTitle"; - }); - } - function drawToday(theSidePad, theTopPad, w2, h2) { - const todayMarker2 = diagObj.db.getTodayMarker(); - if (todayMarker2 === "off") { - return; - } - const todayG = svg.append("g").attr("class", "today"); - const today = new Date(); - const todayLine = todayG.append("line"); - todayLine.attr("x1", timeScale(today) + theSidePad).attr("x2", timeScale(today) + theSidePad).attr("y1", conf.titleTopMargin).attr("y2", h2 - conf.titleTopMargin).attr("class", "today"); - if (todayMarker2 !== "") { - todayLine.attr("style", todayMarker2.replace(/,/g, ";")); - } - } - function checkUnique(arr) { - const hash = {}; - const result = []; - for (let i = 0, l = arr.length; i < l; ++i) { - if (!Object.prototype.hasOwnProperty.call(hash, arr[i])) { - hash[arr[i]] = true; - result.push(arr[i]); - } - } - return result; - } - function getCounts(arr) { - let i = arr.length; - const obj = {}; - while (i) { - obj[arr[--i]] = (obj[arr[i]] || 0) + 1; - } - return obj; - } - function getCount(word, arr) { - return getCounts(arr)[word] || 0; - } -}; -const ganttRenderer = { - setConf, - draw -}; -const getStyles = (options) => ` - .mermaid-main-font { - font-family: "trebuchet ms", verdana, arial, sans-serif; - font-family: var(--mermaid-font-family); - } - .exclude-range { - fill: ${options.excludeBkgColor}; - } - - .section { - stroke: none; - opacity: 0.2; - } - - .section0 { - fill: ${options.sectionBkgColor}; - } - - .section2 { - fill: ${options.sectionBkgColor2}; - } - - .section1, - .section3 { - fill: ${options.altSectionBkgColor}; - opacity: 0.2; - } - - .sectionTitle0 { - fill: ${options.titleColor}; - } - - .sectionTitle1 { - fill: ${options.titleColor}; - } - - .sectionTitle2 { - fill: ${options.titleColor}; - } - - .sectionTitle3 { - fill: ${options.titleColor}; - } - - .sectionTitle { - text-anchor: start; - // font-size: ${options.ganttFontSize}; - // text-height: 14px; - font-family: 'trebuchet ms', verdana, arial, sans-serif; - font-family: var(--mermaid-font-family); - - } - - - /* Grid and axis */ - - .grid .tick { - stroke: ${options.gridColor}; - opacity: 0.8; - shape-rendering: crispEdges; - text { - font-family: ${options.fontFamily}; - fill: ${options.textColor}; - } - } - - .grid path { - stroke-width: 0; - } - - - /* Today line */ - - .today { - fill: none; - stroke: ${options.todayLineColor}; - stroke-width: 2px; - } - - - /* Task styling */ - - /* Default task */ - - .task { - stroke-width: 2; - } - - .taskText { - text-anchor: middle; - font-family: 'trebuchet ms', verdana, arial, sans-serif; - font-family: var(--mermaid-font-family); - } - - // .taskText:not([font-size]) { - // font-size: ${options.ganttFontSize}; - // } - - .taskTextOutsideRight { - fill: ${options.taskTextDarkColor}; - text-anchor: start; - // font-size: ${options.ganttFontSize}; - font-family: 'trebuchet ms', verdana, arial, sans-serif; - font-family: var(--mermaid-font-family); - - } - - .taskTextOutsideLeft { - fill: ${options.taskTextDarkColor}; - text-anchor: end; - // font-size: ${options.ganttFontSize}; - } - - /* Special case clickable */ - .task.clickable { - cursor: pointer; - } - .taskText.clickable { - cursor: pointer; - fill: ${options.taskTextClickableColor} !important; - font-weight: bold; - } - - .taskTextOutsideLeft.clickable { - cursor: pointer; - fill: ${options.taskTextClickableColor} !important; - font-weight: bold; - } - - .taskTextOutsideRight.clickable { - cursor: pointer; - fill: ${options.taskTextClickableColor} !important; - font-weight: bold; - } - - /* Specific task settings for the sections*/ - - .taskText0, - .taskText1, - .taskText2, - .taskText3 { - fill: ${options.taskTextColor}; - } - - .task0, - .task1, - .task2, - .task3 { - fill: ${options.taskBkgColor}; - stroke: ${options.taskBorderColor}; - } - - .taskTextOutside0, - .taskTextOutside2 - { - fill: ${options.taskTextOutsideColor}; - } - - .taskTextOutside1, - .taskTextOutside3 { - fill: ${options.taskTextOutsideColor}; - } - - - /* Active task */ - - .active0, - .active1, - .active2, - .active3 { - fill: ${options.activeTaskBkgColor}; - stroke: ${options.activeTaskBorderColor}; - } - - .activeText0, - .activeText1, - .activeText2, - .activeText3 { - fill: ${options.taskTextDarkColor} !important; - } - - - /* Completed task */ - - .done0, - .done1, - .done2, - .done3 { - stroke: ${options.doneTaskBorderColor}; - fill: ${options.doneTaskBkgColor}; - stroke-width: 2; - } - - .doneText0, - .doneText1, - .doneText2, - .doneText3 { - fill: ${options.taskTextDarkColor} !important; - } - - - /* Tasks on the critical line */ - - .crit0, - .crit1, - .crit2, - .crit3 { - stroke: ${options.critBorderColor}; - fill: ${options.critBkgColor}; - stroke-width: 2; - } - - .activeCrit0, - .activeCrit1, - .activeCrit2, - .activeCrit3 { - stroke: ${options.critBorderColor}; - fill: ${options.activeTaskBkgColor}; - stroke-width: 2; - } - - .doneCrit0, - .doneCrit1, - .doneCrit2, - .doneCrit3 { - stroke: ${options.critBorderColor}; - fill: ${options.doneTaskBkgColor}; - stroke-width: 2; - cursor: pointer; - shape-rendering: crispEdges; - } - - .milestone { - transform: rotate(45deg) scale(0.8,0.8); - } - - .milestoneText { - font-style: italic; - } - .doneCritText0, - .doneCritText1, - .doneCritText2, - .doneCritText3 { - fill: ${options.taskTextDarkColor} !important; - } - - .activeCritText0, - .activeCritText1, - .activeCritText2, - .activeCritText3 { - fill: ${options.taskTextDarkColor} !important; - } - - .titleText { - text-anchor: middle; - font-size: 18px; - fill: ${options.textColor} ; - font-family: 'trebuchet ms', verdana, arial, sans-serif; - font-family: var(--mermaid-font-family); - } -`; -const ganttStyles = getStyles; -const diagram = { - parser: ganttParser, - db: ganttDb, - renderer: ganttRenderer, - styles: ganttStyles -}; -export { - diagram -}; -//# sourceMappingURL=ganttDiagram-c5c3511a.js.map -- cgit v1.2.3