@dpuse/dpuse-tool-d3-visualiser 0.0.31 → 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.
Files changed (49) hide show
  1. package/README.md +104 -88
  2. package/dist/array-Cv4-2llb.js +16 -0
  3. package/dist/array-Cv4-2llb.js.map +1 -0
  4. package/dist/axis-DjmZ9QYe.js +75 -0
  5. package/dist/axis-DjmZ9QYe.js.map +1 -0
  6. package/dist/band-DbExrcif.js +57 -0
  7. package/dist/band-DbExrcif.js.map +1 -0
  8. package/dist/{billboardJs-DJFb72FS.js → billboardJs-jmaH9Gag.js} +17 -15
  9. package/dist/{billboardJs-DJFb72FS.js.map → billboardJs-jmaH9Gag.js.map} +1 -1
  10. package/dist/d3BarChart-DEzayAyh.js +49 -0
  11. package/dist/d3BarChart-DEzayAyh.js.map +1 -0
  12. package/dist/dpuse-tool-d3-visualiser.es.js +26 -5
  13. package/dist/dpuse-tool-d3-visualiser.es.js.map +1 -1
  14. package/dist/{drag-B46QGUMq.js → drag-DLokvdmv.js} +22 -22
  15. package/dist/{drag-B46QGUMq.js.map → drag-DLokvdmv.js.map} +1 -1
  16. package/dist/linear-D3BD7E1p.js +592 -0
  17. package/dist/linear-D3BD7E1p.js.map +1 -0
  18. package/dist/{link-RZgae8Z2.js → link-DKK0Q0lG.js} +19 -28
  19. package/dist/link-DKK0Q0lG.js.map +1 -0
  20. package/dist/math-Dc0ICuib.js +962 -0
  21. package/dist/math-Dc0ICuib.js.map +1 -0
  22. package/dist/{networkDiagram-QWVy8iRy.js → networkDiagram-HS-SgOZ0.js} +5 -5
  23. package/dist/{networkDiagram-QWVy8iRy.js.map → networkDiagram-HS-SgOZ0.js.map} +1 -1
  24. package/dist/{observablePlot-D7o8-dnK.js → observablePlot-B1CSEvcU.js} +1558 -1607
  25. package/dist/observablePlot-B1CSEvcU.js.map +1 -0
  26. package/dist/{sankeyDiagram-DlIuwzOl.js → sankeyDiagram-BXTYCHPV.js} +2 -2
  27. package/dist/{sankeyDiagram-DlIuwzOl.js.map → sankeyDiagram-BXTYCHPV.js.map} +1 -1
  28. package/dist/{src-B7SGbtRQ.js → src-Br_t1-IV.js} +7 -7
  29. package/dist/{src-B7SGbtRQ.js.map → src-Br_t1-IV.js.map} +1 -1
  30. package/dist/src-Du_hPZAX.js +804 -0
  31. package/dist/src-Du_hPZAX.js.map +1 -0
  32. package/dist/string-CnCj7THX.js +394 -0
  33. package/dist/string-CnCj7THX.js.map +1 -0
  34. package/dist/tanStackCharts-vvQteV9z.js +2343 -0
  35. package/dist/tanStackCharts-vvQteV9z.js.map +1 -0
  36. package/dist/{treeDiagram-Bi5VXDVy.js → treeDiagram-DemHfVnX.js} +2 -2
  37. package/dist/{treeDiagram-Bi5VXDVy.js.map → treeDiagram-DemHfVnX.js.map} +1 -1
  38. package/dist/types/src/d3BarChart.d.ts +7 -0
  39. package/dist/types/src/index.d.ts +5 -0
  40. package/dist/types/src/tanStackCharts.d.ts +8 -0
  41. package/dist/types/tests/d3BarChart.test.d.ts +1 -0
  42. package/dist/types/tests/tanStackCharts.test.d.ts +1 -0
  43. package/package.json +6 -1
  44. package/dist/axis-B7xlWKkC.js +0 -1621
  45. package/dist/axis-B7xlWKkC.js.map +0 -1
  46. package/dist/link-RZgae8Z2.js.map +0 -1
  47. package/dist/observablePlot-D7o8-dnK.js.map +0 -1
  48. package/dist/src-DnMaAyIP.js +0 -1194
  49. package/dist/src-DnMaAyIP.js.map +0 -1
@@ -0,0 +1,49 @@
1
+ import { t as e } from "./select-BIuoFcZG.js";
2
+ import { p as t, t as n } from "./linear-D3BD7E1p.js";
3
+ import { t as r } from "./band-DbExrcif.js";
4
+ import { n as i, t as a } from "./axis-DjmZ9QYe.js";
5
+ //#region src/d3BarChart.ts
6
+ var o = 640, s = 400, c = {
7
+ bottom: 24,
8
+ left: 40,
9
+ right: 16,
10
+ top: 16
11
+ }, l = [
12
+ "#6c8ebf",
13
+ "#d79b00",
14
+ "#82b366",
15
+ "#9673a6",
16
+ "#b85450"
17
+ ];
18
+ function u(u, f) {
19
+ function p() {
20
+ e(f).selectAll("svg").remove();
21
+ let p = f.clientWidth || o, m = f.clientHeight || s, h = p - c.left - c.right, g = m - c.top - c.bottom, _ = r().domain(u.categories).range([0, h]).padding(.2), v = r().domain(u.series.map((e) => e.name)).range([0, _.bandwidth()]).padding(.1), y = Math.max(0, ...u.series.flatMap((e) => e.values)), b = n().domain([0, y]).nice().range([g, 0]), x = t().domain(u.series.map((e) => e.name)).range(l), S = e(f).append("svg").attr("viewBox", `0 0 ${String(p)} ${String(m)}`).attr("width", p).attr("height", m), C = S.append("g").attr("transform", `translate(${String(c.left)}, ${String(c.top)})`);
22
+ C.append("g").attr("transform", `translate(0, ${String(g)})`).call(a(_)), C.append("g").call(i(b)), C.append("g").selectAll("rect").data(d(u)).join("rect").attr("x", (e) => (_(e.category) ?? 0) + (v(e.seriesName) ?? 0)).attr("y", (e) => b(e.value)).attr("width", v.bandwidth()).attr("height", (e) => g - b(e.value)).attr("fill", (e) => x(e.seriesName));
23
+ let w = S.node();
24
+ if (w == null) throw Error("Failed to create D3 bar chart SVG element.");
25
+ return w;
26
+ }
27
+ let m = p();
28
+ return {
29
+ resize: () => {
30
+ m = p();
31
+ },
32
+ get svg() {
33
+ return m;
34
+ }
35
+ };
36
+ }
37
+ function d(e) {
38
+ let t = [];
39
+ for (let n of e.series) for (let [r, i] of e.categories.entries()) t.push({
40
+ category: i,
41
+ seriesName: n.name,
42
+ value: n.values[r] ?? 0
43
+ });
44
+ return t;
45
+ }
46
+ //#endregion
47
+ export { u as renderD3BarChart };
48
+
49
+ //# sourceMappingURL=d3BarChart-DEzayAyh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d3BarChart-DEzayAyh.js","names":[],"sources":["../src/d3BarChart.ts"],"sourcesContent":["// ── External Dependencies & Registrations\nimport { select } from 'd3-selection';\nimport { axisBottom, axisLeft } from 'd3-axis';\nimport { scaleBand, scaleLinear, scaleOrdinal } from 'd3-scale';\n\n// ── Local\nimport type { BarChartData } from '@/billboardJs';\n\nexport type { BarChartData, BarChartSeries } from '@/billboardJs';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport interface D3BarChartHandle {\n resize: () => void;\n svg: SVGSVGElement;\n}\n\ninterface D3BarChartRow {\n category: string;\n seriesName: string;\n value: number;\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst DEFAULT_WIDTH = 640;\nconst DEFAULT_HEIGHT = 400;\nconst MARGIN = { bottom: 24, left: 40, right: 16, top: 16 };\nconst SERIES_COLORS = ['#6c8ebf', '#d79b00', '#82b366', '#9673a6', '#b85450'];\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n// A grouped bar chart built from raw D3 primitives (d3-scale, d3-axis, d3-selection) - no chart wrapper library.\nexport function renderD3BarChart(data: BarChartData, renderTo: HTMLElement): D3BarChartHandle {\n function draw(): SVGSVGElement {\n select(renderTo).selectAll('svg').remove();\n\n const width = renderTo.clientWidth || DEFAULT_WIDTH;\n const height = renderTo.clientHeight || DEFAULT_HEIGHT;\n const innerWidth = width - MARGIN.left - MARGIN.right;\n const innerHeight = height - MARGIN.top - MARGIN.bottom;\n\n const categoryScale = scaleBand().domain(data.categories).range([0, innerWidth]).padding(0.2);\n const seriesScale = scaleBand()\n .domain(data.series.map((series) => series.name))\n .range([0, categoryScale.bandwidth()])\n .padding(0.1);\n const maxValue = Math.max(0, ...data.series.flatMap((series) => series.values));\n const valueScale = scaleLinear().domain([0, maxValue]).nice().range([innerHeight, 0]);\n const colorScale = scaleOrdinal<string, string>()\n .domain(data.series.map((series) => series.name))\n .range(SERIES_COLORS);\n\n const svgSelection = select(renderTo)\n .append('svg')\n .attr('viewBox', `0 0 ${String(width)} ${String(height)}`)\n .attr('width', width)\n .attr('height', height);\n\n const canvas = svgSelection.append('g').attr('transform', `translate(${String(MARGIN.left)}, ${String(MARGIN.top)})`);\n\n canvas\n .append('g')\n .attr('transform', `translate(0, ${String(innerHeight)})`)\n .call(axisBottom(categoryScale));\n canvas.append('g').call(axisLeft(valueScale));\n\n canvas\n .append('g')\n .selectAll('rect')\n .data(toBarRows(data))\n .join('rect')\n .attr('x', (row) => (categoryScale(row.category) ?? 0) + (seriesScale(row.seriesName) ?? 0))\n .attr('y', (row) => valueScale(row.value))\n .attr('width', seriesScale.bandwidth())\n .attr('height', (row) => innerHeight - valueScale(row.value))\n .attr('fill', (row) => colorScale(row.seriesName));\n\n const svgNode = svgSelection.node();\n if (svgNode == null) throw new Error('Failed to create D3 bar chart SVG element.');\n return svgNode;\n }\n\n let svg = draw();\n\n return {\n resize: () => {\n svg = draw();\n },\n get svg() {\n return svg;\n }\n };\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nfunction toBarRows(data: BarChartData): D3BarChartRow[] {\n const rows: D3BarChartRow[] = [];\n for (const series of data.series) {\n for (const [index, category] of data.categories.entries()) {\n rows.push({ category, seriesName: series.name, value: series.values[index] ?? 0 });\n }\n }\n return rows;\n}\n"],"mappings":";;;;;AAyBA,IAAM,IAAgB,KAChB,IAAiB,KACjB,IAAS;CAAE,QAAQ;CAAI,MAAM;CAAI,OAAO;CAAI,KAAK;AAAG,GACpD,IAAgB;CAAC;CAAW;CAAW;CAAW;CAAW;AAAS;AAK5E,SAAgB,EAAiB,GAAoB,GAAyC;CAC1F,SAAS,IAAsB;EAC3B,EAAO,CAAQ,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,OAAO;EAEzC,IAAM,IAAQ,EAAS,eAAe,GAChC,IAAS,EAAS,gBAAgB,GAClC,IAAa,IAAQ,EAAO,OAAO,EAAO,OAC1C,IAAc,IAAS,EAAO,MAAM,EAAO,QAE3C,IAAgB,EAAU,CAAC,CAAC,OAAO,EAAK,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,CAAU,CAAC,CAAC,CAAC,QAAQ,EAAG,GACtF,IAAc,EAAU,CAAC,CAC1B,OAAO,EAAK,OAAO,KAAK,MAAW,EAAO,IAAI,CAAC,CAAC,CAChD,MAAM,CAAC,GAAG,EAAc,UAAU,CAAC,CAAC,CAAC,CACrC,QAAQ,EAAG,GACV,IAAW,KAAK,IAAI,GAAG,GAAG,EAAK,OAAO,SAAS,MAAW,EAAO,MAAM,CAAC,GACxE,IAAa,EAAY,CAAC,CAAC,OAAO,CAAC,GAAG,CAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAa,CAAC,CAAC,GAC9E,IAAa,EAA6B,CAAC,CAC5C,OAAO,EAAK,OAAO,KAAK,MAAW,EAAO,IAAI,CAAC,CAAC,CAChD,MAAM,CAAa,GAElB,IAAe,EAAO,CAAQ,CAAC,CAChC,OAAO,KAAK,CAAC,CACb,KAAK,WAAW,OAAO,OAAO,CAAK,EAAE,GAAG,OAAO,CAAM,GAAG,CAAC,CACzD,KAAK,SAAS,CAAK,CAAC,CACpB,KAAK,UAAU,CAAM,GAEpB,IAAS,EAAa,OAAO,GAAG,CAAC,CAAC,KAAK,aAAa,aAAa,OAAO,EAAO,IAAI,EAAE,IAAI,OAAO,EAAO,GAAG,EAAE,EAAE;EAQpH,AANA,EACK,OAAO,GAAG,CAAC,CACX,KAAK,aAAa,gBAAgB,OAAO,CAAW,EAAE,EAAE,CAAC,CACzD,KAAK,EAAW,CAAa,CAAC,GACnC,EAAO,OAAO,GAAG,CAAC,CAAC,KAAK,EAAS,CAAU,CAAC,GAE5C,EACK,OAAO,GAAG,CAAC,CACX,UAAU,MAAM,CAAC,CACjB,KAAK,EAAU,CAAI,CAAC,CAAC,CACrB,KAAK,MAAM,CAAC,CACZ,KAAK,MAAM,OAAS,EAAc,EAAI,QAAQ,KAAK,MAAM,EAAY,EAAI,UAAU,KAAK,EAAE,CAAC,CAC3F,KAAK,MAAM,MAAQ,EAAW,EAAI,KAAK,CAAC,CAAC,CACzC,KAAK,SAAS,EAAY,UAAU,CAAC,CAAC,CACtC,KAAK,WAAW,MAAQ,IAAc,EAAW,EAAI,KAAK,CAAC,CAAC,CAC5D,KAAK,SAAS,MAAQ,EAAW,EAAI,UAAU,CAAC;EAErD,IAAM,IAAU,EAAa,KAAK;EAClC,IAAI,KAAW,MAAM,MAAU,MAAM,4CAA4C;EACjF,OAAO;CACX;CAEA,IAAI,IAAM,EAAK;CAEf,OAAO;EACH,cAAc;GACV,IAAM,EAAK;EACf;EACA,IAAI,MAAM;GACN,OAAO;EACX;CACJ;AACJ;AAIA,SAAS,EAAU,GAAqC;CACpD,IAAM,IAAwB,CAAC;CAC/B,KAAK,IAAM,KAAU,EAAK,QACtB,KAAK,IAAM,CAAC,GAAO,MAAa,EAAK,WAAW,QAAQ,GACpD,EAAK,KAAK;EAAE;EAAU,YAAY,EAAO;EAAM,OAAO,EAAO,OAAO,MAAU;CAAE,CAAC;CAGzF,OAAO;AACX"}
@@ -1,7 +1,7 @@
1
1
  //#region src/index.ts
2
2
  var e = class {
3
3
  async renderBillboardJS(e, t, n) {
4
- let { renderBillboardJS: r } = await import("./billboardJs-DJFb72FS.js"), i = r(e, t);
4
+ let { renderBillboardJS: r } = await import("./billboardJs-jmaH9Gag.js"), i = r(e, t);
5
5
  return n?.(), {
6
6
  chart: i.chart,
7
7
  destroy: i.destroy,
@@ -10,7 +10,7 @@ var e = class {
10
10
  };
11
11
  }
12
12
  async renderObservablePlot(e, t, n, r) {
13
- let { renderObservablePlot: i } = await import("./observablePlot-D7o8-dnK.js"), a = i(e, t, n);
13
+ let { renderObservablePlot: i } = await import("./observablePlot-B1CSEvcU.js"), a = i(e, t, n);
14
14
  return r?.(), {
15
15
  resize: a.resize,
16
16
  get svg() {
@@ -19,6 +19,27 @@ var e = class {
19
19
  vendorId: "observable-plot"
20
20
  };
21
21
  }
22
+ async renderD3BarChart(e, t, n) {
23
+ let { renderD3BarChart: r } = await import("./d3BarChart-DEzayAyh.js"), i = r(e, t);
24
+ return n?.(), {
25
+ resize: i.resize,
26
+ get svg() {
27
+ return i.svg;
28
+ },
29
+ vendorId: "d3"
30
+ };
31
+ }
32
+ async renderTanStackCharts(e, t, n) {
33
+ let { renderTanStackCharts: r } = await import("./tanStackCharts-vvQteV9z.js"), i = r(e, t);
34
+ return n?.(), {
35
+ destroy: i.destroy,
36
+ resize: i.resize,
37
+ get svg() {
38
+ return i.svg;
39
+ },
40
+ vendorId: "tanstack-charts"
41
+ };
42
+ }
22
43
  async renderErdDiagram(e, t, n, r) {
23
44
  let { renderErdDiagram: i } = await import("./erdDiagram-Ds-nrw7Q.js"), a = i(e, t, n);
24
45
  return r?.(), {
@@ -30,7 +51,7 @@ var e = class {
30
51
  };
31
52
  }
32
53
  async renderNetworkDiagram(e, t, n, r) {
33
- let { renderNetworkDiagram: i } = await import("./networkDiagram-QWVy8iRy.js"), a = i(e, t, n);
54
+ let { renderNetworkDiagram: i } = await import("./networkDiagram-HS-SgOZ0.js"), a = i(e, t, n);
34
55
  return r?.(), {
35
56
  destroy: a.destroy,
36
57
  resize: a.resize,
@@ -42,7 +63,7 @@ var e = class {
42
63
  };
43
64
  }
44
65
  async renderSankeyDiagram(e, t, n, r) {
45
- let { renderSankeyDiagram: i } = await import("./sankeyDiagram-DlIuwzOl.js"), a = i(e, t, n);
66
+ let { renderSankeyDiagram: i } = await import("./sankeyDiagram-BXTYCHPV.js"), a = i(e, t, n);
46
67
  return r?.(), {
47
68
  resize: a.resize,
48
69
  get svg() {
@@ -52,7 +73,7 @@ var e = class {
52
73
  };
53
74
  }
54
75
  async renderTreeDiagram(e, t, n, r) {
55
- let { renderTreeDiagram: i } = await import("./treeDiagram-Bi5VXDVy.js"), a = i(e, t, n);
76
+ let { renderTreeDiagram: i } = await import("./treeDiagram-DemHfVnX.js"), a = i(e, t, n);
56
77
  return r?.(), {
57
78
  resize: a.resize,
58
79
  get svg() {
@@ -1 +1 @@
1
- {"version":3,"file":"dpuse-tool-d3-visualiser.es.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["// ── External Dependencies & Registrations\nimport type { Chart } from 'billboard.js';\n\n// ── DPUse Framework\nimport type { PresentationView } from '@dpuse/dpuse-shared/component/presentation';\n\n// ── Local Framework\nimport type { BarChartData } from '@/billboardJs';\nimport type { ObservablePlotChartTypeId } from '@/observablePlot';\nimport type { ErdDiagramData, ErdDiagramOptions } from '@/erdDiagram';\nimport type { NetworkDiagramData, NetworkDiagramOptions } from '@/networkDiagram';\nimport type { SankeyDiagramData, SankeyDiagramOptions } from '@/sankeyDiagram';\nimport type { TreeDiagramNode, TreeDiagramOptions } from '@/treeDiagram';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport type { BarChartData, BarChartSeries } from '@/billboardJs';\nexport type { ErdDiagramData, ErdDiagramEdge, ErdDiagramNode, ErdDiagramNodeTypeId, ErdDiagramOptions } from '@/erdDiagram';\nexport type { NetworkDiagramData, NetworkDiagramLink, NetworkDiagramNode, NetworkDiagramOptions } from '@/networkDiagram';\nexport type { ObservablePlotChartTypeId } from '@/observablePlot';\nexport type { SankeyDiagramData, SankeyDiagramLink, SankeyDiagramNode, SankeyDiagramOptions } from '@/sankeyDiagram';\nexport type { TreeDiagramNode, TreeDiagramNodeRoleId, TreeDiagramOptions } from '@/treeDiagram';\n\nexport interface D3View extends PresentationView {\n svg: SVGSVGElement;\n}\n\nexport interface D3NetworkView extends D3View {\n destroy: () => void;\n triggerAutoLayout: () => void;\n}\n\nexport interface D3BarChartView extends PresentationView {\n chart: Chart;\n destroy: () => void;\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst D3_ID = 'd3';\n\n// ── Tools ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport class D3Tool {\n // Actions - Render chart (Billboard.js, SVG only - see the `billboard.js/canvas` entry point for canvas rendering, unused here).\n async renderBillboardJS(data: BarChartData, renderTo: HTMLElement, callback?: () => void): Promise<D3BarChartView> {\n const { renderBillboardJS } = await import('@/billboardJs');\n const handle = renderBillboardJS(data, renderTo);\n callback?.();\n return {\n chart: handle.chart,\n destroy: handle.destroy,\n resize: handle.resize,\n vendorId: 'billboard.js'\n };\n }\n\n // Actions - Render Observable Plot visualisation.\n async renderObservablePlot(typeId: ObservablePlotChartTypeId, data: BarChartData, renderTo: HTMLElement, callback?: () => void): Promise<D3View> {\n const { renderObservablePlot } = await import('@/observablePlot');\n const handle = renderObservablePlot(typeId, data, renderTo);\n callback?.();\n return {\n resize: handle.resize,\n get svg() {\n return handle.svg;\n },\n vendorId: 'observable-plot'\n };\n }\n\n // Actions - Render ERD diagram.\n async renderErdDiagram(data: ErdDiagramData, renderTo: HTMLElement, options?: ErdDiagramOptions, callback?: () => void): Promise<D3View> {\n const { renderErdDiagram } = await import('@/erdDiagram');\n const handle = renderErdDiagram(data, renderTo, options);\n callback?.();\n return {\n resize: handle.resize,\n get svg() {\n return handle.svg;\n },\n vendorId: D3_ID\n };\n }\n\n // Actions - Render network diagram.\n async renderNetworkDiagram(data: NetworkDiagramData, renderTo: HTMLElement, options?: NetworkDiagramOptions, callback?: () => void): Promise<D3NetworkView> {\n const { renderNetworkDiagram } = await import('@/networkDiagram');\n const handle = renderNetworkDiagram(data, renderTo, options);\n callback?.();\n return {\n destroy: handle.destroy,\n resize: handle.resize,\n get svg() {\n return handle.svg;\n },\n triggerAutoLayout: handle.triggerAutoLayout,\n vendorId: D3_ID\n };\n }\n\n // Actions - Render Sankey diagram.\n async renderSankeyDiagram(data: SankeyDiagramData, renderTo: HTMLElement, options?: SankeyDiagramOptions, callback?: () => void): Promise<D3View> {\n const { renderSankeyDiagram } = await import('@/sankeyDiagram');\n const handle = renderSankeyDiagram(data, renderTo, options);\n callback?.();\n return {\n resize: handle.resize,\n get svg() {\n return handle.svg;\n },\n vendorId: D3_ID\n };\n }\n\n // Actions - Render tree diagram.\n async renderTreeDiagram(data: TreeDiagramNode, renderTo: HTMLElement, options?: TreeDiagramOptions, callback?: () => void): Promise<D3View> {\n const { renderTreeDiagram } = await import('@/treeDiagram');\n const handle = renderTreeDiagram(data, renderTo, options);\n callback?.();\n return {\n resize: handle.resize,\n get svg() {\n return handle.svg;\n },\n vendorId: D3_ID\n };\n }\n}\n"],"mappings":";AAuCA,IAIa,IAAb,MAAoB;CAEhB,MAAM,kBAAkB,GAAoB,GAAuB,GAAgD;EAC/G,IAAM,EAAE,yBAAsB,MAAM,OAAO,8BACrC,IAAS,EAAkB,GAAM,CAAQ;EAE/C,OADA,IAAW,GACJ;GACH,OAAO,EAAO;GACd,SAAS,EAAO;GAChB,QAAQ,EAAO;GACf,UAAU;EACd;CACJ;CAGA,MAAM,qBAAqB,GAAmC,GAAoB,GAAuB,GAAwC;EAC7I,IAAM,EAAE,4BAAyB,MAAM,OAAO,iCACxC,IAAS,EAAqB,GAAQ,GAAM,CAAQ;EAE1D,OADA,IAAW,GACJ;GACH,QAAQ,EAAO;GACf,IAAI,MAAM;IACN,OAAO,EAAO;GAClB;GACA,UAAU;EACd;CACJ;CAGA,MAAM,iBAAiB,GAAsB,GAAuB,GAA6B,GAAwC;EACrI,IAAM,EAAE,wBAAqB,MAAM,OAAO,6BACpC,IAAS,EAAiB,GAAM,GAAU,CAAO;EAEvD,OADA,IAAW,GACJ;GACH,QAAQ,EAAO;GACf,IAAI,MAAM;IACN,OAAO,EAAO;GAClB;GACA,UAAU;EACd;CACJ;CAGA,MAAM,qBAAqB,GAA0B,GAAuB,GAAiC,GAA+C;EACxJ,IAAM,EAAE,4BAAyB,MAAM,OAAO,iCACxC,IAAS,EAAqB,GAAM,GAAU,CAAO;EAE3D,OADA,IAAW,GACJ;GACH,SAAS,EAAO;GAChB,QAAQ,EAAO;GACf,IAAI,MAAM;IACN,OAAO,EAAO;GAClB;GACA,mBAAmB,EAAO;GAC1B,UAAU;EACd;CACJ;CAGA,MAAM,oBAAoB,GAAyB,GAAuB,GAAgC,GAAwC;EAC9I,IAAM,EAAE,2BAAwB,MAAM,OAAO,gCACvC,IAAS,EAAoB,GAAM,GAAU,CAAO;EAE1D,OADA,IAAW,GACJ;GACH,QAAQ,EAAO;GACf,IAAI,MAAM;IACN,OAAO,EAAO;GAClB;GACA,UAAU;EACd;CACJ;CAGA,MAAM,kBAAkB,GAAuB,GAAuB,GAA8B,GAAwC;EACxI,IAAM,EAAE,yBAAsB,MAAM,OAAO,8BACrC,IAAS,EAAkB,GAAM,GAAU,CAAO;EAExD,OADA,IAAW,GACJ;GACH,QAAQ,EAAO;GACf,IAAI,MAAM;IACN,OAAO,EAAO;GAClB;GACA,UAAU;EACd;CACJ;AACJ"}
1
+ {"version":3,"file":"dpuse-tool-d3-visualiser.es.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["// ── External Dependencies & Registrations\nimport type { Chart } from 'billboard.js';\n\n// ── DPUse Framework\nimport type { PresentationView } from '@dpuse/dpuse-shared/component/presentation';\n\n// ── Local Framework\nimport type { BarChartData } from '@/billboardJs';\nimport type { ObservablePlotChartTypeId } from '@/observablePlot';\nimport type { ErdDiagramData, ErdDiagramOptions } from '@/erdDiagram';\nimport type { NetworkDiagramData, NetworkDiagramOptions } from '@/networkDiagram';\nimport type { SankeyDiagramData, SankeyDiagramOptions } from '@/sankeyDiagram';\nimport type { TreeDiagramNode, TreeDiagramOptions } from '@/treeDiagram';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport type { BarChartData, BarChartSeries } from '@/billboardJs';\nexport type { ErdDiagramData, ErdDiagramEdge, ErdDiagramNode, ErdDiagramNodeTypeId, ErdDiagramOptions } from '@/erdDiagram';\nexport type { NetworkDiagramData, NetworkDiagramLink, NetworkDiagramNode, NetworkDiagramOptions } from '@/networkDiagram';\nexport type { ObservablePlotChartTypeId } from '@/observablePlot';\nexport type { SankeyDiagramData, SankeyDiagramLink, SankeyDiagramNode, SankeyDiagramOptions } from '@/sankeyDiagram';\nexport type { TreeDiagramNode, TreeDiagramNodeRoleId, TreeDiagramOptions } from '@/treeDiagram';\n\nexport interface D3View extends PresentationView {\n svg: SVGSVGElement;\n}\n\nexport interface D3NetworkView extends D3View {\n destroy: () => void;\n triggerAutoLayout: () => void;\n}\n\nexport interface D3BarChartView extends PresentationView {\n chart: Chart;\n destroy: () => void;\n}\n\nexport interface D3TanStackChartsView extends D3View {\n destroy: () => void;\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst D3_ID = 'd3';\n\n// ── Tools ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport class D3Tool {\n // Actions - Render chart (Billboard.js, SVG only - see the `billboard.js/canvas` entry point for canvas rendering, unused here).\n async renderBillboardJS(data: BarChartData, renderTo: HTMLElement, callback?: () => void): Promise<D3BarChartView> {\n const { renderBillboardJS } = await import('@/billboardJs');\n const handle = renderBillboardJS(data, renderTo);\n callback?.();\n return {\n chart: handle.chart,\n destroy: handle.destroy,\n resize: handle.resize,\n vendorId: 'billboard.js'\n };\n }\n\n // Actions - Render Observable Plot visualisation.\n async renderObservablePlot(typeId: ObservablePlotChartTypeId, data: BarChartData, renderTo: HTMLElement, callback?: () => void): Promise<D3View> {\n const { renderObservablePlot } = await import('@/observablePlot');\n const handle = renderObservablePlot(typeId, data, renderTo);\n callback?.();\n return {\n resize: handle.resize,\n get svg() {\n return handle.svg;\n },\n vendorId: 'observable-plot'\n };\n }\n\n // Actions - Render bar chart using raw D3 primitives (d3-scale, d3-axis - no chart wrapper library).\n async renderD3BarChart(data: BarChartData, renderTo: HTMLElement, callback?: () => void): Promise<D3View> {\n const { renderD3BarChart } = await import('@/d3BarChart');\n const handle = renderD3BarChart(data, renderTo);\n callback?.();\n return {\n resize: handle.resize,\n get svg() {\n return handle.svg;\n },\n vendorId: D3_ID\n };\n }\n\n // Actions - Render bar chart using TanStack Charts (pre-alpha as of 0.6.4 - its vanilla-DOM mountChart() API is undocumented and may change).\n async renderTanStackCharts(data: BarChartData, renderTo: HTMLElement, callback?: () => void): Promise<D3TanStackChartsView> {\n const { renderTanStackCharts } = await import('@/tanStackCharts');\n const handle = renderTanStackCharts(data, renderTo);\n callback?.();\n return {\n destroy: handle.destroy,\n resize: handle.resize,\n get svg() {\n return handle.svg;\n },\n vendorId: 'tanstack-charts'\n };\n }\n\n // Actions - Render ERD diagram.\n async renderErdDiagram(data: ErdDiagramData, renderTo: HTMLElement, options?: ErdDiagramOptions, callback?: () => void): Promise<D3View> {\n const { renderErdDiagram } = await import('@/erdDiagram');\n const handle = renderErdDiagram(data, renderTo, options);\n callback?.();\n return {\n resize: handle.resize,\n get svg() {\n return handle.svg;\n },\n vendorId: D3_ID\n };\n }\n\n // Actions - Render network diagram.\n async renderNetworkDiagram(data: NetworkDiagramData, renderTo: HTMLElement, options?: NetworkDiagramOptions, callback?: () => void): Promise<D3NetworkView> {\n const { renderNetworkDiagram } = await import('@/networkDiagram');\n const handle = renderNetworkDiagram(data, renderTo, options);\n callback?.();\n return {\n destroy: handle.destroy,\n resize: handle.resize,\n get svg() {\n return handle.svg;\n },\n triggerAutoLayout: handle.triggerAutoLayout,\n vendorId: D3_ID\n };\n }\n\n // Actions - Render Sankey diagram.\n async renderSankeyDiagram(data: SankeyDiagramData, renderTo: HTMLElement, options?: SankeyDiagramOptions, callback?: () => void): Promise<D3View> {\n const { renderSankeyDiagram } = await import('@/sankeyDiagram');\n const handle = renderSankeyDiagram(data, renderTo, options);\n callback?.();\n return {\n resize: handle.resize,\n get svg() {\n return handle.svg;\n },\n vendorId: D3_ID\n };\n }\n\n // Actions - Render tree diagram.\n async renderTreeDiagram(data: TreeDiagramNode, renderTo: HTMLElement, options?: TreeDiagramOptions, callback?: () => void): Promise<D3View> {\n const { renderTreeDiagram } = await import('@/treeDiagram');\n const handle = renderTreeDiagram(data, renderTo, options);\n callback?.();\n return {\n resize: handle.resize,\n get svg() {\n return handle.svg;\n },\n vendorId: D3_ID\n };\n }\n}\n"],"mappings":";AA2CA,IAIa,IAAb,MAAoB;CAEhB,MAAM,kBAAkB,GAAoB,GAAuB,GAAgD;EAC/G,IAAM,EAAE,yBAAsB,MAAM,OAAO,8BACrC,IAAS,EAAkB,GAAM,CAAQ;EAE/C,OADA,IAAW,GACJ;GACH,OAAO,EAAO;GACd,SAAS,EAAO;GAChB,QAAQ,EAAO;GACf,UAAU;EACd;CACJ;CAGA,MAAM,qBAAqB,GAAmC,GAAoB,GAAuB,GAAwC;EAC7I,IAAM,EAAE,4BAAyB,MAAM,OAAO,iCACxC,IAAS,EAAqB,GAAQ,GAAM,CAAQ;EAE1D,OADA,IAAW,GACJ;GACH,QAAQ,EAAO;GACf,IAAI,MAAM;IACN,OAAO,EAAO;GAClB;GACA,UAAU;EACd;CACJ;CAGA,MAAM,iBAAiB,GAAoB,GAAuB,GAAwC;EACtG,IAAM,EAAE,wBAAqB,MAAM,OAAO,6BACpC,IAAS,EAAiB,GAAM,CAAQ;EAE9C,OADA,IAAW,GACJ;GACH,QAAQ,EAAO;GACf,IAAI,MAAM;IACN,OAAO,EAAO;GAClB;GACA,UAAU;EACd;CACJ;CAGA,MAAM,qBAAqB,GAAoB,GAAuB,GAAsD;EACxH,IAAM,EAAE,4BAAyB,MAAM,OAAO,iCACxC,IAAS,EAAqB,GAAM,CAAQ;EAElD,OADA,IAAW,GACJ;GACH,SAAS,EAAO;GAChB,QAAQ,EAAO;GACf,IAAI,MAAM;IACN,OAAO,EAAO;GAClB;GACA,UAAU;EACd;CACJ;CAGA,MAAM,iBAAiB,GAAsB,GAAuB,GAA6B,GAAwC;EACrI,IAAM,EAAE,wBAAqB,MAAM,OAAO,6BACpC,IAAS,EAAiB,GAAM,GAAU,CAAO;EAEvD,OADA,IAAW,GACJ;GACH,QAAQ,EAAO;GACf,IAAI,MAAM;IACN,OAAO,EAAO;GAClB;GACA,UAAU;EACd;CACJ;CAGA,MAAM,qBAAqB,GAA0B,GAAuB,GAAiC,GAA+C;EACxJ,IAAM,EAAE,4BAAyB,MAAM,OAAO,iCACxC,IAAS,EAAqB,GAAM,GAAU,CAAO;EAE3D,OADA,IAAW,GACJ;GACH,SAAS,EAAO;GAChB,QAAQ,EAAO;GACf,IAAI,MAAM;IACN,OAAO,EAAO;GAClB;GACA,mBAAmB,EAAO;GAC1B,UAAU;EACd;CACJ;CAGA,MAAM,oBAAoB,GAAyB,GAAuB,GAAgC,GAAwC;EAC9I,IAAM,EAAE,2BAAwB,MAAM,OAAO,gCACvC,IAAS,EAAoB,GAAM,GAAU,CAAO;EAE1D,OADA,IAAW,GACJ;GACH,QAAQ,EAAO;GACf,IAAI,MAAM;IACN,OAAO,EAAO;GAClB;GACA,UAAU;EACd;CACJ;CAGA,MAAM,kBAAkB,GAAuB,GAAuB,GAA8B,GAAwC;EACxI,IAAM,EAAE,yBAAsB,MAAM,OAAO,8BACrC,IAAS,EAAkB,GAAM,GAAU,CAAO;EAExD,OADA,IAAW,GACJ;GACH,QAAQ,EAAO;GACf,IAAI,MAAM;IACN,OAAO,EAAO;GAClB;GACA,UAAU;EACd;CACJ;AACJ"}
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./select-BIuoFcZG.js";
2
- import { C as t, D as n, E as r, O as i, S as a, T as o, w as s, x as c } from "./src-DnMaAyIP.js";
2
+ import { a as t, c as n, d as r, i, l as a, o, s, u as c } from "./src-Du_hPZAX.js";
3
3
  //#region node_modules/d3-drag/src/constant.js
4
4
  var l = (e) => () => e;
5
5
  //#endregion
@@ -81,44 +81,44 @@ function m() {
81
81
  return navigator.maxTouchPoints || "ontouchstart" in this;
82
82
  }
83
83
  function h() {
84
- var h = d, g = f, _ = p, v = m, y = {}, b = n("start", "drag", "end"), x = 0, S, C, w, T, E = 0;
84
+ var h = d, g = f, _ = p, v = m, y = {}, b = c("start", "drag", "end"), x = 0, S, C, w, T, E = 0;
85
85
  function D(e) {
86
86
  e.on("mousedown.drag", O).filter(v).on("touchstart.drag", j).on("touchmove.drag", M, s).on("touchend.drag touchcancel.drag", N).style("touch-action", "none").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
87
87
  }
88
- function O(t, n) {
89
- if (!(T || !h.call(this, t, n))) {
90
- var i = P(this, g.call(this, t, n), t, n, "mouse");
91
- i && (e(t.view).on("mousemove.drag", k, o).on("mouseup.drag", A, o), c(t.view), r(t), w = !1, S = t.clientX, C = t.clientY, i("start", t));
88
+ function O(t, r) {
89
+ if (!(T || !h.call(this, t, r))) {
90
+ var o = P(this, g.call(this, t, r), t, r, "mouse");
91
+ o && (e(t.view).on("mousemove.drag", k, n).on("mouseup.drag", A, n), i(t.view), a(t), w = !1, S = t.clientX, C = t.clientY, o("start", t));
92
92
  }
93
93
  }
94
94
  function k(e) {
95
- if (t(e), !w) {
96
- var n = e.clientX - S, r = e.clientY - C;
97
- w = n * n + r * r > E;
95
+ if (o(e), !w) {
96
+ var t = e.clientX - S, n = e.clientY - C;
97
+ w = t * t + n * n > E;
98
98
  }
99
99
  y.mouse("drag", e);
100
100
  }
101
101
  function A(n) {
102
- e(n.view).on("mousemove.drag mouseup.drag", null), a(n.view, w), t(n), y.mouse("end", n);
102
+ e(n.view).on("mousemove.drag mouseup.drag", null), t(n.view, w), o(n), y.mouse("end", n);
103
103
  }
104
104
  function j(e, t) {
105
105
  if (h.call(this, e, t)) {
106
- var n = e.changedTouches, i = g.call(this, e, t), a = n.length, o, s;
107
- for (o = 0; o < a; ++o) (s = P(this, i, e, t, n[o].identifier, n[o])) && (r(e), s("start", e, n[o]));
106
+ var n = e.changedTouches, r = g.call(this, e, t), i = n.length, o, s;
107
+ for (o = 0; o < i; ++o) (s = P(this, r, e, t, n[o].identifier, n[o])) && (a(e), s("start", e, n[o]));
108
108
  }
109
109
  }
110
110
  function M(e) {
111
- var n = e.changedTouches, r = n.length, i, a;
112
- for (i = 0; i < r; ++i) (a = y[n[i].identifier]) && (t(e), a("drag", e, n[i]));
111
+ var t = e.changedTouches, n = t.length, r, i;
112
+ for (r = 0; r < n; ++r) (i = y[t[r].identifier]) && (o(e), i("drag", e, t[r]));
113
113
  }
114
114
  function N(e) {
115
- var t = e.changedTouches, n = t.length, i, a;
115
+ var t = e.changedTouches, n = t.length, r, i;
116
116
  for (T && clearTimeout(T), T = setTimeout(function() {
117
117
  T = null;
118
- }, 500), i = 0; i < n; ++i) (a = y[t[i].identifier]) && (r(e), a("end", e, t[i]));
118
+ }, 500), r = 0; r < n; ++r) (i = y[t[r].identifier]) && (a(e), i("end", e, t[r]));
119
119
  }
120
- function P(e, t, n, r, a, o) {
121
- var s = b.copy(), c = i(o || n, t), l, d, f;
120
+ function P(e, t, n, i, a, o) {
121
+ var s = b.copy(), c = r(o || n, t), l, d, f;
122
122
  if ((f = _.call(e, new u("beforestart", {
123
123
  sourceEvent: n,
124
124
  target: D,
@@ -129,14 +129,14 @@ function h() {
129
129
  dx: 0,
130
130
  dy: 0,
131
131
  dispatch: s
132
- }), r)) != null) return l = f.x - c[0] || 0, d = f.y - c[1] || 0, function n(o, p, m) {
132
+ }), i)) != null) return l = f.x - c[0] || 0, d = f.y - c[1] || 0, function n(o, p, m) {
133
133
  var h = c, g;
134
134
  switch (o) {
135
135
  case "start":
136
136
  y[a] = n, g = x++;
137
137
  break;
138
138
  case "end": delete y[a], --x;
139
- case "drag": c = i(m || p, t), g = x;
139
+ case "drag": c = r(m || p, t), g = x;
140
140
  }
141
141
  s.call(o, e, new u(o, {
142
142
  sourceEvent: p,
@@ -149,7 +149,7 @@ function h() {
149
149
  dx: c[0] - h[0],
150
150
  dy: c[1] - h[1],
151
151
  dispatch: s
152
- }), r);
152
+ }), i);
153
153
  };
154
154
  }
155
155
  return D.filter = function(e) {
@@ -170,4 +170,4 @@ function h() {
170
170
  //#endregion
171
171
  export { h as t };
172
172
 
173
- //# sourceMappingURL=drag-B46QGUMq.js.map
173
+ //# sourceMappingURL=drag-DLokvdmv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"drag-B46QGUMq.js","names":["pointer","constant"],"sources":["../node_modules/d3-drag/src/constant.js","../node_modules/d3-drag/src/event.js","../node_modules/d3-drag/src/drag.js"],"sourcesContent":["export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
1
+ {"version":3,"file":"drag-DLokvdmv.js","names":["pointer","constant"],"sources":["../node_modules/d3-drag/src/constant.js","../node_modules/d3-drag/src/event.js","../node_modules/d3-drag/src/drag.js"],"sourcesContent":["export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}