@dpuse/dpuse-tool-d3-visualiser 0.0.30 → 0.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -88
- package/dist/array-Cv4-2llb.js +16 -0
- package/dist/array-Cv4-2llb.js.map +1 -0
- package/dist/axis-DjmZ9QYe.js +75 -0
- package/dist/axis-DjmZ9QYe.js.map +1 -0
- package/dist/band-DbExrcif.js +57 -0
- package/dist/band-DbExrcif.js.map +1 -0
- package/dist/{billboardJs-DJFb72FS.js → billboardJs-jmaH9Gag.js} +17 -15
- package/dist/{billboardJs-DJFb72FS.js.map → billboardJs-jmaH9Gag.js.map} +1 -1
- package/dist/d3BarChart-DEzayAyh.js +49 -0
- package/dist/d3BarChart-DEzayAyh.js.map +1 -0
- package/dist/dpuse-tool-d3-visualiser.es.js +27 -6
- package/dist/dpuse-tool-d3-visualiser.es.js.map +1 -1
- package/dist/{drag-B46QGUMq.js → drag-DLokvdmv.js} +22 -22
- package/dist/{drag-B46QGUMq.js.map → drag-DLokvdmv.js.map} +1 -1
- package/dist/{erdDiagram-CxejXoNh.js → erdDiagram-Ds-nrw7Q.js} +3 -3
- package/dist/{erdDiagram-CxejXoNh.js.map → erdDiagram-Ds-nrw7Q.js.map} +1 -1
- package/dist/linear-D3BD7E1p.js +592 -0
- package/dist/linear-D3BD7E1p.js.map +1 -0
- package/dist/{link-RZgae8Z2.js → link-DKK0Q0lG.js} +19 -28
- package/dist/link-DKK0Q0lG.js.map +1 -0
- package/dist/math-Dc0ICuib.js +962 -0
- package/dist/math-Dc0ICuib.js.map +1 -0
- package/dist/{networkDiagram-QWVy8iRy.js → networkDiagram-HS-SgOZ0.js} +5 -5
- package/dist/{networkDiagram-QWVy8iRy.js.map → networkDiagram-HS-SgOZ0.js.map} +1 -1
- package/dist/{observablePlot-D7o8-dnK.js → observablePlot-B1CSEvcU.js} +1558 -1607
- package/dist/observablePlot-B1CSEvcU.js.map +1 -0
- package/dist/{sankeyDiagram-DlIuwzOl.js → sankeyDiagram-BXTYCHPV.js} +2 -2
- package/dist/{sankeyDiagram-DlIuwzOl.js.map → sankeyDiagram-BXTYCHPV.js.map} +1 -1
- package/dist/{src-B7SGbtRQ.js → src-Br_t1-IV.js} +7 -7
- package/dist/{src-B7SGbtRQ.js.map → src-Br_t1-IV.js.map} +1 -1
- package/dist/src-Du_hPZAX.js +804 -0
- package/dist/src-Du_hPZAX.js.map +1 -0
- package/dist/string-CnCj7THX.js +394 -0
- package/dist/string-CnCj7THX.js.map +1 -0
- package/dist/tanStackCharts-vvQteV9z.js +2343 -0
- package/dist/tanStackCharts-vvQteV9z.js.map +1 -0
- package/dist/{treeDiagram-Bi5VXDVy.js → treeDiagram-DemHfVnX.js} +2 -2
- package/dist/{treeDiagram-Bi5VXDVy.js.map → treeDiagram-DemHfVnX.js.map} +1 -1
- package/dist/types/src/d3BarChart.d.ts +7 -0
- package/dist/types/src/index.d.ts +5 -0
- package/dist/types/src/tanStackCharts.d.ts +8 -0
- package/dist/types/tests/d3BarChart.test.d.ts +1 -0
- package/dist/types/tests/tanStackCharts.test.d.ts +1 -0
- package/package.json +6 -1
- package/dist/axis-B7xlWKkC.js +0 -1621
- package/dist/axis-B7xlWKkC.js.map +0 -1
- package/dist/link-RZgae8Z2.js.map +0 -1
- package/dist/observablePlot-D7o8-dnK.js.map +0 -1
- package/dist/src-DnMaAyIP.js +0 -1194
- package/dist/src-DnMaAyIP.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math-Dc0ICuib.js","names":["timeWeek","timeSecond","utcWeek","utcSecond"],"sources":["../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/ticks.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-scale/src/log.js","../node_modules/d3-scale/src/symlog.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-scale/src/utcTime.js","../node_modules/d3-brush/src/brush.js","../node_modules/d3-shape/src/math.js"],"sourcesContent":["const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as e } from "./select-BIuoFcZG.js";
|
|
2
|
-
import {
|
|
3
|
-
import { t as r } from "./drag-
|
|
4
|
-
import { t as i } from "./src-
|
|
2
|
+
import { r as t, u as n } from "./src-Du_hPZAX.js";
|
|
3
|
+
import { t as r } from "./drag-DLokvdmv.js";
|
|
4
|
+
import { t as i } from "./src-Br_t1-IV.js";
|
|
5
5
|
//#region node_modules/d3-force/src/center.js
|
|
6
6
|
function a(e, t) {
|
|
7
7
|
var n, r = 1;
|
|
@@ -306,7 +306,7 @@ function R(e) {
|
|
|
306
306
|
}
|
|
307
307
|
var z = 10, B = Math.PI * (3 - Math.sqrt(5));
|
|
308
308
|
function V(e) {
|
|
309
|
-
var r, i = 1, a = .001, o = 1 - a ** (1 / 300), s = 0, c = .6, l = /* @__PURE__ */ new Map(), u =
|
|
309
|
+
var r, i = 1, a = .001, o = 1 - a ** (1 / 300), s = 0, c = .6, l = /* @__PURE__ */ new Map(), u = t(p), d = n("tick", "end"), f = I();
|
|
310
310
|
e ??= [];
|
|
311
311
|
function p() {
|
|
312
312
|
m(), d.call("tick", r), i < a && (u.stop(), d.call("end", r));
|
|
@@ -490,4 +490,4 @@ function Z(t, n, o = {}) {
|
|
|
490
490
|
//#endregion
|
|
491
491
|
export { Z as renderNetworkDiagram };
|
|
492
492
|
|
|
493
|
-
//# sourceMappingURL=networkDiagram-
|
|
493
|
+
//# sourceMappingURL=networkDiagram-HS-SgOZ0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkDiagram-QWVy8iRy.js","names":["Quad","Quad","Quad","tree_add","tree_addAll","tree_cover","tree_data","tree_extent","tree_find","tree_remove","tree_removeAll","tree_root","tree_size","tree_visit","tree_visitAfter","tree_x","tree_y","constant","jiggle","lcg","constant","jiggle"],"sources":["../node_modules/d3-force/src/center.js","../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-force/src/constant.js","../node_modules/d3-force/src/jiggle.js","../node_modules/d3-force/src/link.js","../node_modules/d3-force/src/lcg.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-force/src/manyBody.js","../src/networkDiagram.ts"],"sourcesContent":["export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","// ── External Dependencies & Registrations\nimport { select } from 'd3-selection';\nimport { type D3DragEvent, drag } from 'd3-drag';\nimport { type D3ZoomEvent, zoom } from 'd3-zoom';\nimport { forceCenter, forceLink, forceManyBody, forceSimulation, type Simulation, type SimulationLinkDatum, type SimulationNodeDatum } from 'd3-force';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport interface NetworkDiagramNode {\n id: string;\n}\n\nexport interface NetworkDiagramLink {\n source: string;\n target: string;\n}\n\nexport interface NetworkDiagramData {\n links: NetworkDiagramLink[];\n nodes: NetworkDiagramNode[];\n}\n\nexport interface NetworkDiagramOptions {\n chargeStrength?: number;\n linkDistance?: number;\n}\n\nexport interface NetworkDiagramHandle {\n destroy: () => void;\n resize: () => void;\n svg: SVGSVGElement;\n triggerAutoLayout: () => void;\n}\n\ntype LaidOutNode = NetworkDiagramNode & SimulationNodeDatum;\ntype LaidOutLink = SimulationLinkDatum<LaidOutNode>;\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst DEFAULT_CHARGE_STRENGTH = -300;\nconst DEFAULT_LINK_DISTANCE = 100;\nconst DEFAULT_WIDTH = 640;\nconst DEFAULT_HEIGHT = 480;\nconst AUTO_LAYOUT_TICKS = 180;\nconst NODE_RADIUS = 20;\nconst NODE_RADIUS_ACTIVE = 22;\n\nconst COLOR = {\n linkStroke: '#9ca3af',\n nodeFill: '#2563eb',\n nodeFillHovered: '#3b82f6',\n nodeFillSelected: '#f59e0b',\n nodeStroke: '#1e40af',\n nodeStrokeHovered: '#1d4ed8',\n nodeStrokeSelected: '#b45309',\n nodeText: '#ffffff'\n};\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport function renderNetworkDiagram(data: NetworkDiagramData, renderTo: HTMLElement, options: NetworkDiagramOptions = {}): NetworkDiagramHandle {\n const width = renderTo.clientWidth || DEFAULT_WIDTH;\n const height = renderTo.clientHeight || DEFAULT_HEIGHT;\n\n const nodes: LaidOutNode[] = data.nodes.map((node) => ({ ...node }));\n const links: LaidOutLink[] = data.links.map((link) => ({ ...link }));\n\n // Set deterministic initial positions so the graph is readable before force layout runs.\n const startRadius = Math.min(width, height) * 0.22;\n for (const [index, node] of nodes.entries()) {\n const angle = (index / nodes.length) * Math.PI * 2;\n node.x = width / 2 + Math.cos(angle) * startRadius;\n node.y = height / 2 + Math.sin(angle) * startRadius;\n }\n\n const simulation: Simulation<LaidOutNode, LaidOutLink> = forceSimulation(nodes)\n .force(\n 'link',\n forceLink<LaidOutNode, LaidOutLink>(links)\n .id((node) => node.id)\n .distance(options.linkDistance ?? DEFAULT_LINK_DISTANCE)\n )\n .force('charge', forceManyBody().strength(options.chargeStrength ?? DEFAULT_CHARGE_STRENGTH))\n .force('center', forceCenter(width / 2, height / 2));\n\n const svgSelection = select(renderTo)\n .append('svg')\n .attr('width', width)\n .attr('height', height)\n .attr('viewBox', `0 0 ${String(width)} ${String(height)}`)\n .style('touch-action', 'none');\n const viewport = svgSelection.append('g');\n\n const link = viewport.selectAll<SVGLineElement, LaidOutLink>('line').data(links).join('line').attr('stroke', COLOR.linkStroke).attr('stroke-width', 2);\n\n const node = viewport.selectAll<SVGGElement, LaidOutNode>('g').data(nodes).join('g').style('cursor', 'pointer');\n node.append('circle').attr('r', NODE_RADIUS).attr('fill', COLOR.nodeFill).attr('stroke', COLOR.nodeStroke).attr('stroke-width', 2);\n node.append('text')\n .text((laidOutNode) => laidOutNode.id)\n .attr('text-anchor', 'middle')\n .attr('dy', 4)\n .attr('fill', COLOR.nodeText); // explicit - iOS Safari can default to transparent\n\n let selectedNodeId: string | null = null;\n let hoveredNodeId: string | null = null;\n\n const updateNodeStyles = (): void => {\n node.selectAll<SVGCircleElement, LaidOutNode>('circle')\n .attr('fill', (laidOutNode) => {\n if (laidOutNode.id === selectedNodeId) return COLOR.nodeFillSelected;\n if (laidOutNode.id === hoveredNodeId) return COLOR.nodeFillHovered;\n return COLOR.nodeFill;\n })\n .attr('stroke', (laidOutNode) => {\n if (laidOutNode.id === selectedNodeId) return COLOR.nodeStrokeSelected;\n if (laidOutNode.id === hoveredNodeId) return COLOR.nodeStrokeHovered;\n return COLOR.nodeStroke;\n })\n .attr('stroke-width', (laidOutNode) => (laidOutNode.id === selectedNodeId ? 3 : 2))\n .attr('r', (laidOutNode) => (laidOutNode.id === selectedNodeId || laidOutNode.id === hoveredNodeId ? NODE_RADIUS_ACTIVE : NODE_RADIUS));\n };\n\n node.on('mouseenter', (_event, laidOutNode) => {\n hoveredNodeId = laidOutNode.id;\n updateNodeStyles();\n })\n .on('mouseleave', (_event, laidOutNode) => {\n if (hoveredNodeId === laidOutNode.id) hoveredNodeId = null;\n updateNodeStyles();\n })\n .on('click', (event: MouseEvent, laidOutNode) => {\n event.stopPropagation();\n selectedNodeId = selectedNodeId === laidOutNode.id ? null : laidOutNode.id;\n updateNodeStyles();\n });\n\n svgSelection.on('click', () => {\n selectedNodeId = null;\n updateNodeStyles();\n });\n\n const zoomBehavior = zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.5, 4])\n .on('zoom', (event: D3ZoomEvent<SVGSVGElement, unknown>) => {\n viewport.attr('transform', event.transform.toString());\n });\n\n svgSelection.call(zoomBehavior).on('dblclick.zoom', null);\n\n const getNodePosition = (value: LaidOutNode | string | number, axis: 'x' | 'y'): number => {\n if (typeof value === 'object') return value[axis] ?? 0;\n return 0;\n };\n\n const renderGraph = (): void => {\n link.attr('x1', (laidOutLink) => getNodePosition(laidOutLink.source, 'x'))\n .attr('y1', (laidOutLink) => getNodePosition(laidOutLink.source, 'y'))\n .attr('x2', (laidOutLink) => getNodePosition(laidOutLink.target, 'x'))\n .attr('y2', (laidOutLink) => getNodePosition(laidOutLink.target, 'y'));\n node.attr('transform', (laidOutNode) => `translate(${String(laidOutNode.x ?? 0)},${String(laidOutNode.y ?? 0)})`);\n };\n\n // Keep force simulation idle by default; run it only on explicit request.\n simulation.stop();\n\n type DragEvent = D3DragEvent<SVGGElement, LaidOutNode, LaidOutNode>;\n\n node.call(\n drag<SVGGElement, LaidOutNode>()\n .on('start', (event: DragEvent, laidOutNode) => {\n (event.sourceEvent as MouseEvent | TouchEvent | undefined)?.stopPropagation();\n laidOutNode.fx = laidOutNode.x;\n laidOutNode.fy = laidOutNode.y;\n })\n .on('drag', (event: DragEvent, laidOutNode) => {\n laidOutNode.x = event.x;\n laidOutNode.y = event.y;\n laidOutNode.fx = event.x;\n laidOutNode.fy = event.y;\n renderGraph();\n })\n .on('end', (_event: DragEvent, laidOutNode) => {\n laidOutNode.fx = null;\n laidOutNode.fy = null;\n })\n );\n\n renderGraph();\n\n const svgNode = svgSelection.node();\n if (svgNode == null) throw new Error('Failed to create network diagram SVG element.');\n\n return {\n destroy: () => {\n simulation.stop();\n svgSelection.remove();\n },\n resize: () => {\n const newWidth = renderTo.clientWidth || DEFAULT_WIDTH;\n const newHeight = renderTo.clientHeight || DEFAULT_HEIGHT;\n svgSelection.attr('width', newWidth).attr('height', newHeight).attr('viewBox', `0 0 ${String(newWidth)} ${String(newHeight)}`);\n simulation.force('center', forceCenter(newWidth / 2, newHeight / 2));\n },\n svg: svgNode,\n triggerAutoLayout: () => {\n simulation.alpha(1);\n for (let step = 0; step < AUTO_LAYOUT_TICKS; step += 1) simulation.tick();\n simulation.stop();\n renderGraph();\n }\n };\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"networkDiagram-HS-SgOZ0.js","names":["Quad","Quad","Quad","tree_add","tree_addAll","tree_cover","tree_data","tree_extent","tree_find","tree_remove","tree_removeAll","tree_root","tree_size","tree_visit","tree_visitAfter","tree_x","tree_y","constant","jiggle","lcg","constant","jiggle"],"sources":["../node_modules/d3-force/src/center.js","../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-force/src/constant.js","../node_modules/d3-force/src/jiggle.js","../node_modules/d3-force/src/link.js","../node_modules/d3-force/src/lcg.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-force/src/manyBody.js","../src/networkDiagram.ts"],"sourcesContent":["export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","// ── External Dependencies & Registrations\nimport { select } from 'd3-selection';\nimport { type D3DragEvent, drag } from 'd3-drag';\nimport { type D3ZoomEvent, zoom } from 'd3-zoom';\nimport { forceCenter, forceLink, forceManyBody, forceSimulation, type Simulation, type SimulationLinkDatum, type SimulationNodeDatum } from 'd3-force';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport interface NetworkDiagramNode {\n id: string;\n}\n\nexport interface NetworkDiagramLink {\n source: string;\n target: string;\n}\n\nexport interface NetworkDiagramData {\n links: NetworkDiagramLink[];\n nodes: NetworkDiagramNode[];\n}\n\nexport interface NetworkDiagramOptions {\n chargeStrength?: number;\n linkDistance?: number;\n}\n\nexport interface NetworkDiagramHandle {\n destroy: () => void;\n resize: () => void;\n svg: SVGSVGElement;\n triggerAutoLayout: () => void;\n}\n\ntype LaidOutNode = NetworkDiagramNode & SimulationNodeDatum;\ntype LaidOutLink = SimulationLinkDatum<LaidOutNode>;\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst DEFAULT_CHARGE_STRENGTH = -300;\nconst DEFAULT_LINK_DISTANCE = 100;\nconst DEFAULT_WIDTH = 640;\nconst DEFAULT_HEIGHT = 480;\nconst AUTO_LAYOUT_TICKS = 180;\nconst NODE_RADIUS = 20;\nconst NODE_RADIUS_ACTIVE = 22;\n\nconst COLOR = {\n linkStroke: '#9ca3af',\n nodeFill: '#2563eb',\n nodeFillHovered: '#3b82f6',\n nodeFillSelected: '#f59e0b',\n nodeStroke: '#1e40af',\n nodeStrokeHovered: '#1d4ed8',\n nodeStrokeSelected: '#b45309',\n nodeText: '#ffffff'\n};\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport function renderNetworkDiagram(data: NetworkDiagramData, renderTo: HTMLElement, options: NetworkDiagramOptions = {}): NetworkDiagramHandle {\n const width = renderTo.clientWidth || DEFAULT_WIDTH;\n const height = renderTo.clientHeight || DEFAULT_HEIGHT;\n\n const nodes: LaidOutNode[] = data.nodes.map((node) => ({ ...node }));\n const links: LaidOutLink[] = data.links.map((link) => ({ ...link }));\n\n // Set deterministic initial positions so the graph is readable before force layout runs.\n const startRadius = Math.min(width, height) * 0.22;\n for (const [index, node] of nodes.entries()) {\n const angle = (index / nodes.length) * Math.PI * 2;\n node.x = width / 2 + Math.cos(angle) * startRadius;\n node.y = height / 2 + Math.sin(angle) * startRadius;\n }\n\n const simulation: Simulation<LaidOutNode, LaidOutLink> = forceSimulation(nodes)\n .force(\n 'link',\n forceLink<LaidOutNode, LaidOutLink>(links)\n .id((node) => node.id)\n .distance(options.linkDistance ?? DEFAULT_LINK_DISTANCE)\n )\n .force('charge', forceManyBody().strength(options.chargeStrength ?? DEFAULT_CHARGE_STRENGTH))\n .force('center', forceCenter(width / 2, height / 2));\n\n const svgSelection = select(renderTo)\n .append('svg')\n .attr('width', width)\n .attr('height', height)\n .attr('viewBox', `0 0 ${String(width)} ${String(height)}`)\n .style('touch-action', 'none');\n const viewport = svgSelection.append('g');\n\n const link = viewport.selectAll<SVGLineElement, LaidOutLink>('line').data(links).join('line').attr('stroke', COLOR.linkStroke).attr('stroke-width', 2);\n\n const node = viewport.selectAll<SVGGElement, LaidOutNode>('g').data(nodes).join('g').style('cursor', 'pointer');\n node.append('circle').attr('r', NODE_RADIUS).attr('fill', COLOR.nodeFill).attr('stroke', COLOR.nodeStroke).attr('stroke-width', 2);\n node.append('text')\n .text((laidOutNode) => laidOutNode.id)\n .attr('text-anchor', 'middle')\n .attr('dy', 4)\n .attr('fill', COLOR.nodeText); // explicit - iOS Safari can default to transparent\n\n let selectedNodeId: string | null = null;\n let hoveredNodeId: string | null = null;\n\n const updateNodeStyles = (): void => {\n node.selectAll<SVGCircleElement, LaidOutNode>('circle')\n .attr('fill', (laidOutNode) => {\n if (laidOutNode.id === selectedNodeId) return COLOR.nodeFillSelected;\n if (laidOutNode.id === hoveredNodeId) return COLOR.nodeFillHovered;\n return COLOR.nodeFill;\n })\n .attr('stroke', (laidOutNode) => {\n if (laidOutNode.id === selectedNodeId) return COLOR.nodeStrokeSelected;\n if (laidOutNode.id === hoveredNodeId) return COLOR.nodeStrokeHovered;\n return COLOR.nodeStroke;\n })\n .attr('stroke-width', (laidOutNode) => (laidOutNode.id === selectedNodeId ? 3 : 2))\n .attr('r', (laidOutNode) => (laidOutNode.id === selectedNodeId || laidOutNode.id === hoveredNodeId ? NODE_RADIUS_ACTIVE : NODE_RADIUS));\n };\n\n node.on('mouseenter', (_event, laidOutNode) => {\n hoveredNodeId = laidOutNode.id;\n updateNodeStyles();\n })\n .on('mouseleave', (_event, laidOutNode) => {\n if (hoveredNodeId === laidOutNode.id) hoveredNodeId = null;\n updateNodeStyles();\n })\n .on('click', (event: MouseEvent, laidOutNode) => {\n event.stopPropagation();\n selectedNodeId = selectedNodeId === laidOutNode.id ? null : laidOutNode.id;\n updateNodeStyles();\n });\n\n svgSelection.on('click', () => {\n selectedNodeId = null;\n updateNodeStyles();\n });\n\n const zoomBehavior = zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.5, 4])\n .on('zoom', (event: D3ZoomEvent<SVGSVGElement, unknown>) => {\n viewport.attr('transform', event.transform.toString());\n });\n\n svgSelection.call(zoomBehavior).on('dblclick.zoom', null);\n\n const getNodePosition = (value: LaidOutNode | string | number, axis: 'x' | 'y'): number => {\n if (typeof value === 'object') return value[axis] ?? 0;\n return 0;\n };\n\n const renderGraph = (): void => {\n link.attr('x1', (laidOutLink) => getNodePosition(laidOutLink.source, 'x'))\n .attr('y1', (laidOutLink) => getNodePosition(laidOutLink.source, 'y'))\n .attr('x2', (laidOutLink) => getNodePosition(laidOutLink.target, 'x'))\n .attr('y2', (laidOutLink) => getNodePosition(laidOutLink.target, 'y'));\n node.attr('transform', (laidOutNode) => `translate(${String(laidOutNode.x ?? 0)},${String(laidOutNode.y ?? 0)})`);\n };\n\n // Keep force simulation idle by default; run it only on explicit request.\n simulation.stop();\n\n type DragEvent = D3DragEvent<SVGGElement, LaidOutNode, LaidOutNode>;\n\n node.call(\n drag<SVGGElement, LaidOutNode>()\n .on('start', (event: DragEvent, laidOutNode) => {\n (event.sourceEvent as MouseEvent | TouchEvent | undefined)?.stopPropagation();\n laidOutNode.fx = laidOutNode.x;\n laidOutNode.fy = laidOutNode.y;\n })\n .on('drag', (event: DragEvent, laidOutNode) => {\n laidOutNode.x = event.x;\n laidOutNode.y = event.y;\n laidOutNode.fx = event.x;\n laidOutNode.fy = event.y;\n renderGraph();\n })\n .on('end', (_event: DragEvent, laidOutNode) => {\n laidOutNode.fx = null;\n laidOutNode.fy = null;\n })\n );\n\n renderGraph();\n\n const svgNode = svgSelection.node();\n if (svgNode == null) throw new Error('Failed to create network diagram SVG element.');\n\n return {\n destroy: () => {\n simulation.stop();\n svgSelection.remove();\n },\n resize: () => {\n const newWidth = renderTo.clientWidth || DEFAULT_WIDTH;\n const newHeight = renderTo.clientHeight || DEFAULT_HEIGHT;\n svgSelection.attr('width', newWidth).attr('height', newHeight).attr('viewBox', `0 0 ${String(newWidth)} ${String(newHeight)}`);\n simulation.force('center', forceCenter(newWidth / 2, newHeight / 2));\n },\n svg: svgNode,\n triggerAutoLayout: () => {\n simulation.alpha(1);\n for (let step = 0; step < AUTO_LAYOUT_TICKS; step += 1) simulation.tick();\n simulation.stop();\n renderGraph();\n }\n };\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"mappings":";;;;;AAAA,SAAA,EAAwB,GAAG,GAAG;CAC5B,IAAI,GAAO,IAAW;CAGtB,AADA,AAAe,MAAI,GACnB,AAAe,MAAI;CAEnB,SAAS,IAAQ;EACf,IAAI,GACA,IAAI,EAAM,QACV,GACA,IAAK,GACL,IAAK;EAET,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GACnB,IAAO,EAAM,IAAI,KAAM,EAAK,GAAG,KAAM,EAAK;EAG5C,KAAK,KAAM,IAAK,IAAI,KAAK,GAAU,KAAM,IAAK,IAAI,KAAK,GAAU,IAAI,GAAG,IAAI,GAAG,EAAE,GAC/E,IAAO,EAAM,IAAI,EAAK,KAAK,GAAI,EAAK,KAAK;CAE7C;CAkBA,OAhBA,EAAM,aAAa,SAAS,GAAG;EAC7B,IAAQ;CACV,GAEA,EAAM,IAAI,SAAS,GAAG;EACpB,OAAO,UAAU,UAAU,IAAI,CAAC,GAAG,KAAS;CAC9C,GAEA,EAAM,IAAI,SAAS,GAAG;EACpB,OAAO,UAAU,UAAU,IAAI,CAAC,GAAG,KAAS;CAC9C,GAEA,EAAM,WAAW,SAAS,GAAG;EAC3B,OAAO,UAAU,UAAU,IAAW,CAAC,GAAG,KAAS;CACrD,GAEO;AACT;;;ACvCA,SAAA,EAAwB,GAAG;CACzB,IAAM,IAAI,CAAC,KAAK,GAAG,KAAK,MAAM,CAAC,GAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,MAAM,CAAC;CAC7B,OAAO,EAAI,KAAK,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AACtC;AAEA,SAAS,EAAI,GAAM,GAAG,GAAG,GAAG;CAC1B,IAAI,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG,OAAO;CAEjC,IAAI,GACA,IAAO,EAAK,OACZ,IAAO,EAAC,MAAM,EAAC,GACf,IAAK,EAAK,KACV,IAAK,EAAK,KACV,IAAK,EAAK,KACV,IAAK,EAAK,KACV,GACA,GACA,GACA,GACA,GACA,GACA,GACA;CAGJ,IAAI,CAAC,GAAM,OAAO,EAAK,QAAQ,GAAM;CAGrC,OAAO,EAAK,SAGV,KAFI,IAAQ,MAAM,KAAM,IAAK,KAAM,MAAI,IAAK,IAAS,IAAK,IACtD,IAAS,MAAM,KAAM,IAAK,KAAM,MAAI,IAAK,IAAS,IAAK,GACvD,IAAS,GAAM,EAAE,IAAO,EAAK,IAAI,KAAU,IAAI,KAAS,OAAO,EAAO,KAAK,GAAM;CAMvF,IAFA,IAAK,CAAC,EAAK,GAAG,KAAK,MAAM,EAAK,IAAI,GAClC,IAAK,CAAC,EAAK,GAAG,KAAK,MAAM,EAAK,IAAI,GAC9B,MAAM,KAAM,MAAM,GAAI,OAAO,EAAK,OAAO,GAAM,IAAS,EAAO,KAAK,IAAO,EAAK,QAAQ,GAAM;CAGlG;EAGE,AAFA,IAAS,IAAS,EAAO,KAAK;;;;;EAAW,IAAI,EAAK,QAAQ;;;;;EAAW,IACjE,IAAQ,MAAM,KAAM,IAAK,KAAM,MAAI,IAAK,IAAS,IAAK,IACtD,IAAS,MAAM,KAAM,IAAK,KAAM,MAAI,IAAK,IAAS,IAAK;SACnD,IAAI,KAAU,IAAI,OAAY,KAAK,KAAM,MAAO,IAAK,KAAM;CACrE,OAAO,EAAO,KAAK,GAAM,EAAO,KAAK,GAAM;AAC7C;AAEA,SAAgB,EAAO,GAAM;CAC3B,IAAI,GAAG,GAAG,IAAI,EAAK,QACf,GACA,GACA,IAAS,MAAM,CAAC,GAChB,IAAS,MAAM,CAAC,GAChB,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK;CAGT,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GACf,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,MAAM,IAAI,EAAK,EAAE,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,MAAM,CAAC,CAAC,MACnF,EAAG,KAAK,GACR,EAAG,KAAK,GACJ,IAAI,MAAI,IAAK,IACb,IAAI,MAAI,IAAK,IACb,IAAI,MAAI,IAAK,IACb,IAAI,MAAI,IAAK;CAInB,IAAI,IAAK,KAAM,IAAK,GAAI,OAAO;CAM/B,KAHA,KAAK,MAAM,GAAI,CAAE,CAAC,CAAC,MAAM,GAAI,CAAE,GAG1B,IAAI,GAAG,IAAI,GAAG,EAAE,GACnB,EAAI,MAAM,EAAG,IAAI,EAAG,IAAI,EAAK,EAAE;CAGjC,OAAO;AACT;;;ACnFA,SAAA,EAAwB,GAAG,GAAG;CAC5B,IAAI,MAAM,IAAI,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG,OAAO;CAE3C,IAAI,IAAK,KAAK,KACV,IAAK,KAAK,KACV,IAAK,KAAK,KACV,IAAK,KAAK;CAKd,IAAI,MAAM,CAAE,GAEV,AADA,KAAM,IAAK,KAAK,MAAM,CAAC,KAAK,GAC5B,KAAM,IAAK,KAAK,MAAM,CAAC,KAAK;MAIzB;EAMH,KALA,IAAI,IAAI,IAAK,KAAM,GACf,IAAO,KAAK,OACZ,GACA,GAEG,IAAK,KAAK,KAAK,KAAM,IAAK,KAAK,KAAK,IAGzC,QAFA,KAAK,IAAI,MAAO,IAAK,IAAI,GACzB,IAAS;;;;;EAAW,GAAG,EAAO,KAAK,GAAM,IAAO,GAAQ,KAAK,GACrD,GAAR;GACE,KAAK;IAAG,IAAK,IAAK,GAAG,IAAK,IAAK;IAAG;GAClC,KAAK;IAAG,IAAK,IAAK,GAAG,IAAK,IAAK;IAAG;GAClC,KAAK;IAAG,IAAK,IAAK,GAAG,IAAK,IAAK;IAAG;GAClC,KAAK,GAAG,IAAK,IAAK,GAAG,IAAK,IAAK;EACjC;EAGF,AAAI,KAAK,SAAS,KAAK,MAAM,WAAQ,KAAK,QAAQ;CACpD;CAMA,OAJA,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM,GACJ;AACT;;;AC1CA,SAAA,IAA0B;CACxB,IAAI,IAAO,CAAC;CAIZ,OAHA,KAAK,MAAM,SAAS,GAAM;EACxB,IAAI,CAAC,EAAK,QAAQ;GAAG,EAAK,KAAK,EAAK,IAAI;SAAU,IAAO,EAAK;CAChE,CAAC,GACM;AACT;;;ACNA,SAAA,EAAwB,GAAG;CACzB,OAAO,UAAU,SACX,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,IACvD,MAAM,KAAK,GAAG,IAAI,KAAA,IAAY,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC;AACjF;;;ACJA,SAAA,EAAwB,GAAM,GAAI,GAAI,GAAI,GAAI;CAK5C,AAJA,KAAK,OAAO,GACZ,KAAK,KAAK,GACV,KAAK,KAAK,GACV,KAAK,KAAK,GACV,KAAK,KAAK;AACZ;;;ACJA,SAAA,EAAwB,GAAG,GAAG,GAAQ;CACpC,IAAI,GACA,IAAK,KAAK,KACV,IAAK,KAAK,KACV,GACA,GACA,GACA,GACA,IAAK,KAAK,KACV,IAAK,KAAK,KACV,IAAQ,CAAC,GACT,IAAO,KAAK,OACZ,GACA;CAUJ,KARI,KAAM,EAAM,KAAK,IAAIA,EAAK,GAAM,GAAI,GAAI,GAAI,CAAE,CAAC,GAC/C,KAAU,OAAM,IAAS,YAE3B,IAAK,IAAI,GAAQ,IAAK,IAAI,GAC1B,IAAK,IAAI,GAAQ,IAAK,IAAI,GAC1B,KAAU,IAGL,IAAI,EAAM,IAAI,IAGf,QAAE,IAAO,EAAE,UACP,IAAK,EAAE,MAAM,MACb,IAAK,EAAE,MAAM,MACb,IAAK,EAAE,MAAM,MACb,IAAK,EAAE,MAAM,IAGrB,IAAI,EAAK,QAAQ;EACf,IAAI,KAAM,IAAK,KAAM,GACjB,KAAM,IAAK,KAAM;EAUrB,AARA,EAAM,KACJ,IAAIA,EAAK,EAAK,IAAI,GAAI,GAAI,GAAI,CAAE,GAChC,IAAIA,EAAK,EAAK,IAAI,GAAI,GAAI,GAAI,CAAE,GAChC,IAAIA,EAAK,EAAK,IAAI,GAAI,GAAI,GAAI,CAAE,GAChC,IAAIA,EAAK,EAAK,IAAI,GAAI,GAAI,GAAI,CAAE,CAClC,IAGI,KAAK,KAAK,MAAO,IAAK,KAAK,OAC7B,IAAI,EAAM,EAAM,SAAS,IACzB,EAAM,EAAM,SAAS,KAAK,EAAM,EAAM,SAAS,IAAI,IACnD,EAAM,EAAM,SAAS,IAAI,KAAK;CAElC,OAGK;EACH,IAAI,IAAK,IAAI,CAAC,KAAK,GAAG,KAAK,MAAM,EAAK,IAAI,GACtC,IAAK,IAAI,CAAC,KAAK,GAAG,KAAK,MAAM,EAAK,IAAI,GACtC,IAAK,IAAK,IAAK,IAAK;EACxB,IAAI,IAAK,GAAQ;GACf,IAAI,IAAI,KAAK,KAAK,IAAS,CAAE;GAG7B,AAFA,IAAK,IAAI,GAAG,IAAK,IAAI,GACrB,IAAK,IAAI,GAAG,IAAK,IAAI,GACrB,IAAO,EAAK;EACd;CACF;CAGF,OAAO;AACT;;;ACrEA,SAAA,EAAwB,GAAG;CACzB,IAAI,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,MAAM,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,MAAM,CAAC,CAAC,GAAG,OAAO;CAEnF,IAAI,GACA,IAAO,KAAK,OACZ,GACA,GACA,GACA,IAAK,KAAK,KACV,IAAK,KAAK,KACV,IAAK,KAAK,KACV,IAAK,KAAK,KACV,GACA,GACA,GACA,GACA,GACA,GACA,GACA;CAGJ,IAAI,CAAC,GAAM,OAAO;CAIlB,IAAI,EAAK,QAAQ,SAAa;EAG5B,KAFI,IAAQ,MAAM,KAAM,IAAK,KAAM,MAAI,IAAK,IAAS,IAAK,IACtD,IAAS,MAAM,KAAM,IAAK,KAAM,MAAI,IAAK,IAAS,IAAK,GACrD,IAAS,GAAM,MAAO,EAAK,IAAI,KAAU,IAAI,KAAS,OAAO;EACnE,IAAI,CAAC,EAAK,QAAQ;EAClB,CAAI,EAAQ,IAAI,IAAK,MAAM,EAAQ,IAAI,IAAK,MAAM,EAAQ,IAAI,IAAK,QAAI,IAAW,GAAQ,IAAI;CAChG;CAGA,OAAO,EAAK,SAAS,IAAG,IAAM,IAAW,GAAM,MAAO,EAAK,OAAO,OAAO;CAoBzE,QAnBI,IAAO,EAAK,SAAM,OAAO,EAAK,MAG9B,KAAkB,IAAO,EAAS,OAAO,IAAO,OAAO,EAAS,MAAO,QAGtE,KAGL,IAAO,EAAO,KAAK,IAAO,OAAO,EAAO,KAGnC,IAAO,EAAO,MAAM,EAAO,MAAM,EAAO,MAAM,EAAO,OACnD,OAAU,EAAO,MAAM,EAAO,MAAM,EAAO,MAAM,EAAO,OACxD,CAAC,EAAK,WACP,IAAU,EAAS,KAAK,IACvB,KAAK,QAAQ,IAGb,SAba,KAAK,QAAQ,GAAM;AAczC;AAEA,SAAgB,EAAU,GAAM;CAC9B,KAAK,IAAI,IAAI,GAAG,IAAI,EAAK,QAAQ,IAAI,GAAG,EAAE,GAAG,KAAK,OAAO,EAAK,EAAE;CAChE,OAAO;AACT;;;AC7DA,SAAA,IAA0B;CACxB,OAAO,KAAK;AACd;;;ACFA,SAAA,IAA0B;CACxB,IAAI,IAAO;CAIX,OAHA,KAAK,MAAM,SAAS,GAAM;EACxB,IAAI,CAAC,EAAK,QAAQ;GAAG,EAAE;SAAa,IAAO,EAAK;CAClD,CAAC,GACM;AACT;;;ACJA,SAAA,EAAwB,GAAU;CAChC,IAAI,IAAQ,CAAC,GAAG,GAAG,IAAO,KAAK,OAAO,GAAO,GAAI,GAAI,GAAI;CAEzD,KADI,KAAM,EAAM,KAAK,IAAIC,EAAK,GAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC,GACpE,IAAI,EAAM,IAAI,IACnB,IAAI,CAAC,EAAS,IAAO,EAAE,MAAM,IAAK,EAAE,IAAI,IAAK,EAAE,IAAI,IAAK,EAAE,IAAI,IAAK,EAAE,EAAE,KAAK,EAAK,QAAQ;EACvF,IAAI,KAAM,IAAK,KAAM,GAAG,KAAM,IAAK,KAAM;EAIzC,CAHI,IAAQ,EAAK,OAAI,EAAM,KAAK,IAAIA,EAAK,GAAO,GAAI,GAAI,GAAI,CAAE,CAAC,IAC3D,IAAQ,EAAK,OAAI,EAAM,KAAK,IAAIA,EAAK,GAAO,GAAI,GAAI,GAAI,CAAE,CAAC,IAC3D,IAAQ,EAAK,OAAI,EAAM,KAAK,IAAIA,EAAK,GAAO,GAAI,GAAI,GAAI,CAAE,CAAC,IAC3D,IAAQ,EAAK,OAAI,EAAM,KAAK,IAAIA,EAAK,GAAO,GAAI,GAAI,GAAI,CAAE,CAAC;CACjE;CAEF,OAAO;AACT;;;ACbA,SAAA,EAAwB,GAAU;CAChC,IAAI,IAAQ,CAAC,GAAG,IAAO,CAAC,GAAG;CAE3B,KADI,KAAK,SAAO,EAAM,KAAK,IAAIC,EAAK,KAAK,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC,GAChF,IAAI,EAAM,IAAI,IAAG;EACtB,IAAI,IAAO,EAAE;EACb,IAAI,EAAK,QAAQ;GACf,IAAI,GAAO,IAAK,EAAE,IAAI,IAAK,EAAE,IAAI,IAAK,EAAE,IAAI,IAAK,EAAE,IAAI,KAAM,IAAK,KAAM,GAAG,KAAM,IAAK,KAAM;GAI5F,CAHI,IAAQ,EAAK,OAAI,EAAM,KAAK,IAAIA,EAAK,GAAO,GAAI,GAAI,GAAI,CAAE,CAAC,IAC3D,IAAQ,EAAK,OAAI,EAAM,KAAK,IAAIA,EAAK,GAAO,GAAI,GAAI,GAAI,CAAE,CAAC,IAC3D,IAAQ,EAAK,OAAI,EAAM,KAAK,IAAIA,EAAK,GAAO,GAAI,GAAI,GAAI,CAAE,CAAC,IAC3D,IAAQ,EAAK,OAAI,EAAM,KAAK,IAAIA,EAAK,GAAO,GAAI,GAAI,GAAI,CAAE,CAAC;EACjE;EACA,EAAK,KAAK,CAAC;CACb;CACA,OAAO,IAAI,EAAK,IAAI,IAClB,EAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;CAEzC,OAAO;AACT;;;ACpBA,SAAgB,EAAS,GAAG;CAC1B,OAAO,EAAE;AACX;AAEA,SAAA,EAAwB,GAAG;CACzB,OAAO,UAAU,UAAU,KAAK,KAAK,GAAG,QAAQ,KAAK;AACvD;;;ACNA,SAAgB,EAAS,GAAG;CAC1B,OAAO,EAAE;AACX;AAEA,SAAA,EAAwB,GAAG;CACzB,OAAO,UAAU,UAAU,KAAK,KAAK,GAAG,QAAQ,KAAK;AACvD;;;ACOA,SAAwB,EAAS,GAAO,GAAG,GAAG;CAC5C,IAAI,IAAO,IAAI,EAAS,KAAY,GAAc,KAAY,GAAc,KAAK,KAAK,KAAK,GAAG;CAC9F,OAAO,KAAS,OAAO,IAAO,EAAK,OAAO,CAAK;AACjD;AAEA,SAAS,EAAS,GAAG,GAAG,GAAI,GAAI,GAAI,GAAI;CAOtC,AANA,KAAK,KAAK,GACV,KAAK,KAAK,GACV,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,QAAQ,KAAA;AACf;AAEA,SAAS,EAAU,GAAM;CAEvB,KADA,IAAI,IAAO,EAAC,MAAM,EAAK,KAAI,GAAG,IAAO,GAC9B,IAAO,EAAK,OAAM,IAAO,EAAK,OAAO,EAAC,MAAM,EAAK,KAAI;CAC5D,OAAO;AACT;AAEA,IAAI,IAAY,EAAS,YAAY,EAAS;AAE9C,EAAU,OAAO,WAAW;CAC1B,IAAI,IAAO,IAAI,EAAS,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAC5E,IAAO,KAAK,OACZ,GACA;CAEJ,IAAI,CAAC,GAAM,OAAO;CAElB,IAAI,CAAC,EAAK,QAAQ,OAAO,EAAK,QAAQ,EAAU,CAAI,GAAG;CAGvD,KADA,IAAQ,CAAC;EAAC,QAAQ;EAAM,QAAQ,EAAK,QAAQ;;;;;EAAW;CAAC,CAAC,GACnD,IAAO,EAAM,IAAI,IACtB,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,GACvB,CAAI,IAAQ,EAAK,OAAO,QAClB,EAAM,SAAQ,EAAM,KAAK;EAAC,QAAQ;EAAO,QAAQ,EAAK,OAAO,KAAK;;;;;EAAW;CAAC,CAAC,IAC9E,EAAK,OAAO,KAAK,EAAU,CAAK;CAK3C,OAAO;AACT,GAEA,EAAU,MAAMC,GAChB,EAAU,SAASC,GACnB,EAAU,QAAQC,GAClB,EAAU,OAAOC,GACjB,EAAU,SAASC,GACnB,EAAU,OAAOC,GACjB,EAAU,SAASC,GACnB,EAAU,YAAYC,GACtB,EAAU,OAAOC,GACjB,EAAU,OAAOC,GACjB,EAAU,QAAQC,GAClB,EAAU,aAAaC,GACvB,EAAU,IAAIC,GACd,EAAU,IAAIC;;;ACxEd,SAAA,EAAwB,GAAG;CACzB,OAAO,WAAW;EAChB,OAAO;CACT;AACF;;;ACJA,SAAA,EAAwB,GAAQ;CAC9B,QAAQ,EAAO,IAAI,MAAO;AAC5B;;;ACCA,SAAS,EAAM,GAAG;CAChB,OAAO,EAAE;AACX;AAEA,SAAS,EAAK,GAAU,GAAQ;CAC9B,IAAI,IAAO,EAAS,IAAI,CAAM;CAC9B,IAAI,CAAC,GAAM,MAAU,MAAM,qBAAqB,CAAM;CACtD,OAAO;AACT;AAEA,SAAA,EAAwB,GAAO;CAC7B,IAAI,IAAK,GACL,IAAW,GACX,GACA,IAAWC,EAAS,EAAE,GACtB,GACA,GACA,GACA,GACA,GACA,IAAa;CAEjB,AAAmB,MAAQ,CAAC;CAE5B,SAAS,EAAgB,GAAM;EAC7B,OAAO,IAAI,KAAK,IAAI,EAAM,EAAK,OAAO,QAAQ,EAAM,EAAK,OAAO,MAAM;CACxE;CAEA,SAAS,EAAM,GAAO;EACpB,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,IAAI,GAAY,EAAE,GAClD,KAAK,IAAI,IAAI,GAAG,GAAM,GAAQ,GAAQ,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,GAUzD,AATA,IAAO,EAAM,IAAI,IAAS,EAAK,QAAQ,IAAS,EAAK,QACrD,IAAI,EAAO,IAAI,EAAO,KAAK,EAAO,IAAI,EAAO,MAAMC,EAAO,CAAM,GAChE,IAAI,EAAO,IAAI,EAAO,KAAK,EAAO,IAAI,EAAO,MAAMA,EAAO,CAAM,GAChE,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,GAC3B,KAAK,IAAI,EAAU,MAAM,IAAI,IAAQ,EAAU,IAC/C,KAAK,GAAG,KAAK,GACb,EAAO,MAAM,KAAK,IAAI,EAAK,KAC3B,EAAO,MAAM,IAAI,GACjB,EAAO,MAAM,KAAK,IAAI,IAAI,IAC1B,EAAO,MAAM,IAAI;CAGvB;CAEA,SAAS,IAAa;EACf,OAEL;OAAI,GACA,IAAI,EAAM,QACV,IAAI,EAAM,QACV,IAAW,IAAI,IAAI,EAAM,KAAK,GAAG,MAAM,CAAC,EAAG,GAAG,GAAG,CAAK,GAAG,CAAC,CAAC,CAAC,GAC5D;GAEJ,KAAK,IAAI,GAAG,IAAY,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,GAKzC,AAJA,IAAO,EAAM,IAAI,EAAK,QAAQ,GAC1B,OAAO,EAAK,UAAW,aAAU,EAAK,SAAS,EAAK,GAAU,EAAK,MAAM,IACzE,OAAO,EAAK,UAAW,aAAU,EAAK,SAAS,EAAK,GAAU,EAAK,MAAM,IAC7E,EAAM,EAAK,OAAO,UAAU,EAAM,EAAK,OAAO,UAAU,KAAK,GAC7D,EAAM,EAAK,OAAO,UAAU,EAAM,EAAK,OAAO,UAAU,KAAK;GAG/D,KAAK,IAAI,GAAG,IAAW,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,GACxC,IAAO,EAAM,IAAI,EAAK,KAAK,EAAM,EAAK,OAAO,UAAU,EAAM,EAAK,OAAO,SAAS,EAAM,EAAK,OAAO;GAItG,AADA,IAAgB,MAAM,CAAC,GAAG,EAAmB,GAC7C,IAAgB,MAAM,CAAC,GAAG,EAAmB;EAfzC;CAgBN;CAEA,SAAS,IAAqB;EACvB,OAEL,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,IAAI,GAAG,EAAE,GACzC,EAAU,KAAK,CAAC,EAAS,EAAM,IAAI,GAAG,CAAK;CAE/C;CAEA,SAAS,IAAqB;EACvB,OAEL,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,IAAI,GAAG,EAAE,GACzC,EAAU,KAAK,CAAC,EAAS,EAAM,IAAI,GAAG,CAAK;CAE/C;CA4BA,OA1BA,EAAM,aAAa,SAAS,GAAQ,GAAS;EAG3C,AAFA,IAAQ,GACR,IAAS,GACT,EAAW;CACb,GAEA,EAAM,QAAQ,SAAS,GAAG;EACxB,OAAO,UAAU,UAAU,IAAQ,GAAG,EAAW,GAAG,KAAS;CAC/D,GAEA,EAAM,KAAK,SAAS,GAAG;EACrB,OAAO,UAAU,UAAU,IAAK,GAAG,KAAS;CAC9C,GAEA,EAAM,aAAa,SAAS,GAAG;EAC7B,OAAO,UAAU,UAAU,IAAa,CAAC,GAAG,KAAS;CACvD,GAEA,EAAM,WAAW,SAAS,GAAG;EAC3B,OAAO,UAAU,UAAU,IAAW,OAAO,KAAM,aAAa,IAAID,EAAS,CAAC,CAAC,GAAG,EAAmB,GAAG,KAAS;CACnH,GAEA,EAAM,WAAW,SAAS,GAAG;EAC3B,OAAO,UAAU,UAAU,IAAW,OAAO,KAAM,aAAa,IAAIA,EAAS,CAAC,CAAC,GAAG,EAAmB,GAAG,KAAS;CACnH,GAEO;AACT;;;ACnHA,IAAM,IAAI,SACJ,IAAI,YACJ,IAAI;AAEV,SAAA,IAA0B;CACxB,IAAI,IAAI;CACR,cAAc,KAAK,IAAI,IAAI,KAAK,KAAK;AACvC;;;ACJA,SAAgB,EAAE,GAAG;CACnB,OAAO,EAAE;AACX;AAEA,SAAgB,EAAE,GAAG;CACnB,OAAO,EAAE;AACX;AAEA,IAAI,IAAgB,IAChB,IAAe,KAAK,MAAM,IAAI,KAAK,KAAK,CAAC;AAE7C,SAAA,EAAwB,GAAO;CAC7B,IAAI,GACA,IAAQ,GACR,IAAW,MACX,IAAa,IAAa,MAAU,IAAI,MACxC,IAAc,GACd,IAAgB,IAChB,oBAAS,IAAI,IAAI,GACjB,IAAU,EAAM,CAAI,GACpB,IAAQ,EAAS,QAAQ,KAAK,GAC9B,IAASE,EAAI;CAEjB,AAAmB,MAAQ,CAAC;CAE5B,SAAS,IAAO;EAGd,AAFA,EAAK,GACL,EAAM,KAAK,QAAQ,CAAU,GACzB,IAAQ,MACV,EAAQ,KAAK,GACb,EAAM,KAAK,OAAO,CAAU;CAEhC;CAEA,SAAS,EAAK,GAAY;EACxB,IAAI,GAAG,IAAI,EAAM,QAAQ;EAEzB,AAAI,MAAe,KAAA,MAAW,IAAa;EAE3C,KAAK,IAAI,IAAI,GAAG,IAAI,GAAY,EAAE,GAOhC,KANA,MAAU,IAAc,KAAS,GAEjC,EAAO,QAAQ,SAAS,GAAO;GAC7B,EAAM,CAAK;EACb,CAAC,GAEI,IAAI,GAAG,IAAI,GAAG,EAAE,GAInB,AAHA,IAAO,EAAM,IACT,EAAK,MAAM,OAAM,EAAK,KAAK,EAAK,MAAM,KACrC,EAAK,IAAI,EAAK,IAAI,EAAK,KAAK,IAC7B,EAAK,MAAM,OAAM,EAAK,KAAK,EAAK,MAAM,KACrC,EAAK,IAAI,EAAK,IAAI,EAAK,KAAK;EAIrC,OAAO;CACT;CAEA,SAAS,IAAkB;EACzB,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,GAAM,IAAI,GAAG,EAAE,GAAG;GAIlD,IAHA,IAAO,EAAM,IAAI,EAAK,QAAQ,GAC1B,EAAK,MAAM,SAAM,EAAK,IAAI,EAAK,KAC/B,EAAK,MAAM,SAAM,EAAK,IAAI,EAAK,KAC/B,MAAM,EAAK,CAAC,KAAK,MAAM,EAAK,CAAC,GAAG;IAClC,IAAI,IAAS,IAAgB,KAAK,KAAK,KAAM,CAAC,GAAG,IAAQ,IAAI;IAE7D,AADA,EAAK,IAAI,IAAS,KAAK,IAAI,CAAK,GAChC,EAAK,IAAI,IAAS,KAAK,IAAI,CAAK;GAClC;GACA,CAAI,MAAM,EAAK,EAAE,KAAK,MAAM,EAAK,EAAE,OACjC,EAAK,KAAK,EAAK,KAAK;EAExB;CACF;CAEA,SAAS,EAAgB,GAAO;EAE9B,OADI,EAAM,cAAY,EAAM,WAAW,GAAO,CAAM,GAC7C;CACT;CAIA,OAFA,EAAgB,GAET,IAAa;EACZ;EAEN,SAAS,WAAW;GAClB,OAAO,EAAQ,QAAQ,CAAI,GAAG;EAChC;EAEA,MAAM,WAAW;GACf,OAAO,EAAQ,KAAK,GAAG;EACzB;EAEA,OAAO,SAAS,GAAG;GACjB,OAAO,UAAU,UAAU,IAAQ,GAAG,EAAgB,GAAG,EAAO,QAAQ,CAAe,GAAG,KAAc;EAC1G;EAEA,OAAO,SAAS,GAAG;GACjB,OAAO,UAAU,UAAU,IAAQ,CAAC,GAAG,KAAc;EACvD;EAEA,UAAU,SAAS,GAAG;GACpB,OAAO,UAAU,UAAU,IAAW,CAAC,GAAG,KAAc;EAC1D;EAEA,YAAY,SAAS,GAAG;GACtB,OAAO,UAAU,UAAU,IAAa,CAAC,GAAG,KAAc,CAAC;EAC7D;EAEA,aAAa,SAAS,GAAG;GACvB,OAAO,UAAU,UAAU,IAAc,CAAC,GAAG,KAAc;EAC7D;EAEA,eAAe,SAAS,GAAG;GACzB,OAAO,UAAU,UAAU,IAAgB,IAAI,GAAG,KAAc,IAAI;EACtE;EAEA,cAAc,SAAS,GAAG;GACxB,OAAO,UAAU,UAAU,IAAS,GAAG,EAAO,QAAQ,CAAe,GAAG,KAAc;EACxF;EAEA,OAAO,SAAS,GAAM,GAAG;GACvB,OAAO,UAAU,SAAS,KAAM,KAAK,OAAO,EAAO,OAAO,CAAI,IAAI,EAAO,IAAI,GAAM,EAAgB,CAAC,CAAC,GAAI,KAAc,EAAO,IAAI,CAAI;EACxI;EAEA,MAAM,SAAS,GAAG,GAAG,GAAQ;GAC3B,IAAI,IAAI,GACJ,IAAI,EAAM,QACV,GACA,GACA,GACA,GACA;GAKJ,KAHI,KAAU,OAAM,IAAS,WACxB,KAAU,GAEV,IAAI,GAAG,IAAI,GAAG,EAAE,GAKnB,AAJA,IAAO,EAAM,IACb,IAAK,IAAI,EAAK,GACd,IAAK,IAAI,EAAK,GACd,IAAK,IAAK,IAAK,IAAK,GAChB,IAAK,MAAQ,IAAU,GAAM,IAAS;GAG5C,OAAO;EACT;EAEA,IAAI,SAAS,GAAM,GAAG;GACpB,OAAO,UAAU,SAAS,KAAK,EAAM,GAAG,GAAM,CAAC,GAAG,KAAc,EAAM,GAAG,CAAI;EAC/E;CACF;AACF;;;ACtJA,SAAA,IAA0B;CACxB,IAAI,GACA,GACA,GACA,GACA,IAAWC,EAAS,GAAG,GACvB,GACA,IAAe,GACf,IAAe,UACf,IAAS;CAEb,SAAS,EAAM,GAAG;EAChB,IAAI,GAAG,IAAI,EAAM,QAAQ,IAAO,EAAS,GAAO,GAAG,CAAC,CAAC,CAAC,WAAW,CAAU;EAC3E,KAAK,IAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAO,EAAM,IAAI,EAAK,MAAM,CAAK;CACtE;CAEA,SAAS,IAAa;EACf,OACL;OAAI,GAAG,IAAI,EAAM,QAAQ;GAEzB,KADA,IAAgB,MAAM,CAAC,GAClB,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAO,EAAM,IAAI,EAAU,EAAK,SAAS,CAAC,EAAS,GAAM,GAAG,CAAK;EAFhE;CAG3B;CAEA,SAAS,EAAW,GAAM;EACxB,IAAI,IAAW,GAAG,GAAG,GAAG,IAAS,GAAG,GAAG,GAAG;EAG1C,IAAI,EAAK,QAAQ;GACf,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,GAC3B,CAAK,IAAI,EAAK,QAAQ,IAAI,KAAK,IAAI,EAAE,KAAK,OACxC,KAAY,EAAE,OAAO,KAAU,GAAG,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE;GAI/D,AADA,EAAK,IAAI,IAAI,GACb,EAAK,IAAI,IAAI;EACf,OAGK;GAGH,AAFA,IAAI,GACJ,EAAE,IAAI,EAAE,KAAK,GACb,EAAE,IAAI,EAAE,KAAK;GACb;IAAG,KAAY,EAAU,EAAE,KAAK;UACzB,IAAI,EAAE;EACf;EAEA,EAAK,QAAQ;CACf;CAEA,SAAS,EAAM,GAAM,GAAI,GAAG,GAAI;EAC9B,IAAI,CAAC,EAAK,OAAO,OAAO;EAExB,IAAI,IAAI,EAAK,IAAI,EAAK,GAClB,IAAI,EAAK,IAAI,EAAK,GAClB,IAAI,IAAK,GACT,IAAI,IAAI,IAAI,IAAI;EAIpB,IAAI,IAAI,IAAI,IAAS,GAQnB,OAPI,IAAI,MACF,MAAM,MAAG,IAAIC,EAAO,CAAM,GAAG,KAAK,IAAI,IACtC,MAAM,MAAG,IAAIA,EAAO,CAAM,GAAG,KAAK,IAAI,IACtC,IAAI,MAAc,IAAI,KAAK,KAAK,IAAe,CAAC,IACpD,EAAK,MAAM,IAAI,EAAK,QAAQ,IAAQ,GACpC,EAAK,MAAM,IAAI,EAAK,QAAQ,IAAQ,IAE/B;EAIA,QAAK,UAAU,KAAK,IAG7B;IAAI,EAAK,SAAS,KAAQ,EAAK,UACzB,MAAM,MAAG,IAAIA,EAAO,CAAM,GAAG,KAAK,IAAI,IACtC,MAAM,MAAG,IAAIA,EAAO,CAAM,GAAG,KAAK,IAAI,IACtC,IAAI,MAAc,IAAI,KAAK,KAAK,IAAe,CAAC;GAGtD;IAAG,AAAI,EAAK,SAAS,MACnB,IAAI,EAAU,EAAK,KAAK,SAAS,IAAQ,GACzC,EAAK,MAAM,IAAI,GACf,EAAK,MAAM,IAAI;UACR,IAAO,EAAK;EANrB;CAOF;CAwBA,OAtBA,EAAM,aAAa,SAAS,GAAQ,GAAS;EAG3C,AAFA,IAAQ,GACR,IAAS,GACT,EAAW;CACb,GAEA,EAAM,WAAW,SAAS,GAAG;EAC3B,OAAO,UAAU,UAAU,IAAW,OAAO,KAAM,aAAa,IAAID,EAAS,CAAC,CAAC,GAAG,EAAW,GAAG,KAAS;CAC3G,GAEA,EAAM,cAAc,SAAS,GAAG;EAC9B,OAAO,UAAU,UAAU,IAAe,IAAI,GAAG,KAAS,KAAK,KAAK,CAAY;CAClF,GAEA,EAAM,cAAc,SAAS,GAAG;EAC9B,OAAO,UAAU,UAAU,IAAe,IAAI,GAAG,KAAS,KAAK,KAAK,CAAY;CAClF,GAEA,EAAM,QAAQ,SAAS,GAAG;EACxB,OAAO,UAAU,UAAU,IAAS,IAAI,GAAG,KAAS,KAAK,KAAK,CAAM;CACtE,GAEO;AACT;;;AC5EA,IAAM,IAA0B,MAC1B,IAAwB,KACxB,IAAgB,KAChB,IAAiB,KACjB,IAAoB,KACpB,IAAc,IACd,IAAqB,IAErB,IAAQ;CACV,YAAY;CACZ,UAAU;CACV,iBAAiB;CACjB,kBAAkB;CAClB,YAAY;CACZ,mBAAmB;CACnB,oBAAoB;CACpB,UAAU;AACd;AAIA,SAAgB,EAAqB,GAA0B,GAAuB,IAAiC,CAAC,GAAyB;CAC7I,IAAM,IAAQ,EAAS,eAAe,GAChC,IAAS,EAAS,gBAAgB,GAElC,IAAuB,EAAK,MAAM,KAAK,OAAU,EAAE,GAAG,EAAK,EAAE,GAC7D,IAAuB,EAAK,MAAM,KAAK,OAAU,EAAE,GAAG,EAAK,EAAE,GAG7D,IAAc,KAAK,IAAI,GAAO,CAAM,IAAI;CAC9C,KAAK,IAAM,CAAC,GAAO,MAAS,EAAM,QAAQ,GAAG;EACzC,IAAM,IAAS,IAAQ,EAAM,SAAU,KAAK,KAAK;EAEjD,AADA,EAAK,IAAI,IAAQ,IAAI,KAAK,IAAI,CAAK,IAAI,GACvC,EAAK,IAAI,IAAS,IAAI,KAAK,IAAI,CAAK,IAAI;CAC5C;CAEA,IAAM,IAAmD,EAAgB,CAAK,CAAC,CAC1E,MACG,QACA,EAAoC,CAAK,CAAC,CACrC,IAAI,MAAS,EAAK,EAAE,CAAC,CACrB,SAAS,EAAQ,gBAAgB,CAAqB,CAC/D,CAAC,CACA,MAAM,UAAU,EAAc,CAAC,CAAC,SAAS,EAAQ,kBAAkB,CAAuB,CAAC,CAAC,CAC5F,MAAM,UAAU,EAAY,IAAQ,GAAG,IAAS,CAAC,CAAC,GAEjD,IAAe,EAAO,CAAQ,CAAC,CAChC,OAAO,KAAK,CAAC,CACb,KAAK,SAAS,CAAK,CAAC,CACpB,KAAK,UAAU,CAAM,CAAC,CACtB,KAAK,WAAW,OAAO,OAAO,CAAK,EAAE,GAAG,OAAO,CAAM,GAAG,CAAC,CACzD,MAAM,gBAAgB,MAAM,GAC3B,IAAW,EAAa,OAAO,GAAG,GAElC,IAAO,EAAS,UAAuC,MAAM,CAAC,CAAC,KAAK,CAAK,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,KAAK,UAAU,EAAM,UAAU,CAAC,CAAC,KAAK,gBAAgB,CAAC,GAE/I,IAAO,EAAS,UAAoC,GAAG,CAAC,CAAC,KAAK,CAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,UAAU,SAAS;CAE9G,AADA,EAAK,OAAO,QAAQ,CAAC,CAAC,KAAK,KAAK,CAAW,CAAC,CAAC,KAAK,QAAQ,EAAM,QAAQ,CAAC,CAAC,KAAK,UAAU,EAAM,UAAU,CAAC,CAAC,KAAK,gBAAgB,CAAC,GACjI,EAAK,OAAO,MAAM,CAAC,CACd,MAAM,MAAgB,EAAY,EAAE,CAAC,CACrC,KAAK,eAAe,QAAQ,CAAC,CAC7B,KAAK,MAAM,CAAC,CAAC,CACb,KAAK,QAAQ,EAAM,QAAQ;CAEhC,IAAI,IAAgC,MAChC,IAA+B,MAE7B,UAA+B;EACjC,EAAK,UAAyC,QAAQ,CAAC,CAClD,KAAK,SAAS,MACP,EAAY,OAAO,IAAuB,EAAM,mBAChD,EAAY,OAAO,IAAsB,EAAM,kBAC5C,EAAM,QAChB,CAAC,CACD,KAAK,WAAW,MACT,EAAY,OAAO,IAAuB,EAAM,qBAChD,EAAY,OAAO,IAAsB,EAAM,oBAC5C,EAAM,UAChB,CAAC,CACD,KAAK,iBAAiB,MAAiB,EAAY,OAAO,IAAiB,IAAI,CAAE,CAAC,CAClF,KAAK,MAAM,MAAiB,EAAY,OAAO,KAAkB,EAAY,OAAO,IAAgB,IAAqB,CAAY;CAC9I;CAgBA,AAdA,EAAK,GAAG,eAAe,GAAQ,MAAgB;EAE3C,AADA,IAAgB,EAAY,IAC5B,EAAiB;CACrB,CAAC,CAAC,CACG,GAAG,eAAe,GAAQ,MAAgB;EAEvC,AADI,MAAkB,EAAY,OAAI,IAAgB,OACtD,EAAiB;CACrB,CAAC,CAAC,CACD,GAAG,UAAU,GAAmB,MAAgB;EAG7C,AAFA,EAAM,gBAAgB,GACtB,IAAiB,MAAmB,EAAY,KAAK,OAAO,EAAY,IACxE,EAAiB;CACrB,CAAC,GAEL,EAAa,GAAG,eAAe;EAE3B,AADA,IAAiB,MACjB,EAAiB;CACrB,CAAC;CAED,IAAM,IAAe,EAA6B,CAAC,CAC9C,YAAY,CAAC,IAAK,CAAC,CAAC,CAAC,CACrB,GAAG,SAAS,MAA+C;EACxD,EAAS,KAAK,aAAa,EAAM,UAAU,SAAS,CAAC;CACzD,CAAC;CAEL,EAAa,KAAK,CAAY,CAAC,CAAC,GAAG,iBAAiB,IAAI;CAExD,IAAM,KAAmB,GAAsC,MACvD,OAAO,KAAU,WAAiB,EAAM,MAAS,IAC9C,GAGL,UAA0B;EAK5B,AAJA,EAAK,KAAK,OAAO,MAAgB,EAAgB,EAAY,QAAQ,GAAG,CAAC,CAAC,CACrE,KAAK,OAAO,MAAgB,EAAgB,EAAY,QAAQ,GAAG,CAAC,CAAC,CACrE,KAAK,OAAO,MAAgB,EAAgB,EAAY,QAAQ,GAAG,CAAC,CAAC,CACrE,KAAK,OAAO,MAAgB,EAAgB,EAAY,QAAQ,GAAG,CAAC,GACzE,EAAK,KAAK,cAAc,MAAgB,aAAa,OAAO,EAAY,KAAK,CAAC,EAAE,GAAG,OAAO,EAAY,KAAK,CAAC,EAAE,EAAE;CACpH;CA2BA,AAxBA,EAAW,KAAK,GAIhB,EAAK,KACD,EAA+B,CAAC,CAC3B,GAAG,UAAU,GAAkB,MAAgB;EAG5C,AAFA,EAAO,aAAqD,gBAAgB,GAC5E,EAAY,KAAK,EAAY,GAC7B,EAAY,KAAK,EAAY;CACjC,CAAC,CAAC,CACD,GAAG,SAAS,GAAkB,MAAgB;EAK3C,AAJA,EAAY,IAAI,EAAM,GACtB,EAAY,IAAI,EAAM,GACtB,EAAY,KAAK,EAAM,GACvB,EAAY,KAAK,EAAM,GACvB,EAAY;CAChB,CAAC,CAAC,CACD,GAAG,QAAQ,GAAmB,MAAgB;EAE3C,AADA,EAAY,KAAK,MACjB,EAAY,KAAK;CACrB,CAAC,CACT,GAEA,EAAY;CAEZ,IAAM,IAAU,EAAa,KAAK;CAClC,IAAI,KAAW,MAAM,MAAU,MAAM,+CAA+C;CAEpF,OAAO;EACH,eAAe;GAEX,AADA,EAAW,KAAK,GAChB,EAAa,OAAO;EACxB;EACA,cAAc;GACV,IAAM,IAAW,EAAS,eAAe,GACnC,IAAY,EAAS,gBAAgB;GAE3C,AADA,EAAa,KAAK,SAAS,CAAQ,CAAC,CAAC,KAAK,UAAU,CAAS,CAAC,CAAC,KAAK,WAAW,OAAO,OAAO,CAAQ,EAAE,GAAG,OAAO,CAAS,GAAG,GAC7H,EAAW,MAAM,UAAU,EAAY,IAAW,GAAG,IAAY,CAAC,CAAC;EACvE;EACA,KAAK;EACL,yBAAyB;GACrB,EAAW,MAAM,CAAC;GAClB,KAAK,IAAI,IAAO,GAAG,IAAO,GAAmB,KAAQ,GAAG,EAAW,KAAK;GAExE,AADA,EAAW,KAAK,GAChB,EAAY;EAChB;CACJ;AACJ"}
|