@d3plus/react 3.0.0-alpha.1 → 3.0.0-alpha.3

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 CHANGED
@@ -13,7 +13,7 @@ import modules from "@d3plus/react";
13
13
  In vanilla JavaScript, a `d3plus` global is exported from the pre-bundled version:
14
14
 
15
15
  ```html
16
- <script src="https://cdn.jsdelivr.net/npm/@d3plus/react@3.0.0-alpha.1"></script>
16
+ <script src="https://cdn.jsdelivr.net/npm/@d3plus/react@3.0.0-alpha.3"></script>
17
17
  <script>
18
18
  console.log(d3plus);
19
19
  </script>
@@ -27,7 +27,7 @@ Live examples can be found on [d3plus.org](https://d3plus.org/), which includes
27
27
 
28
28
  #####
29
29
  * [D3plusContext](#D3plusContext) - A React context instance used to provide global config options via a provider (D3plusContext.Provider).
30
- * [Viz](#Viz)
30
+ * [Renderer](#Renderer)
31
31
 
32
32
  ---
33
33
 
@@ -41,13 +41,11 @@ This is a global function
41
41
 
42
42
  ---
43
43
 
44
- <a name="Viz"></a>
45
- #### d3plus.**Viz**(config, [className], [callback]) [<>](https://github.com/d3plus/d3plus/blob/main/packages/react/src/Viz.jsx#L6)
44
+ <a name="Renderer"></a>
45
+ #### d3plus.**Renderer**(config, [className], [callback]) [<>](https://github.com/d3plus/d3plus/blob/main/packages/react/src/Renderer.jsx#L6)
46
46
 
47
47
 
48
48
  This is a global function
49
49
 
50
50
  ---
51
51
 
52
-
53
- ###### <sub>Documentation generated on Wed, 02 Apr 2025 20:15:52 GMT</sub>
package/es/index.jsx CHANGED
@@ -27,106 +27,264 @@ function _object_spread(target) {
27
27
  return target;
28
28
  }
29
29
  import React from "react";
30
- import { AreaPlot as AreaPlotClass, BarChart as BarChartClass, BoxWhisker as BoxWhiskerClass, BumpChart as BumpChartClass, Donut as DonutClass, Geomap as GeomapClass, LinePlot as LinePlotClass, Matrix as MatrixClass, Network as NetworkClass, Pack as PackClass, Pie as PieClass, Plot as PlotClass, Priestley as PriestleyClass, Radar as RadarClass, RadialMatrix as RadialMatrixClass, Rings as RingsClass, Sankey as SankeyClass, StackedArea as StackedAreaClass, Tree as TreeClass, Treemap as TreemapClass } from "@d3plus/core";
31
- import Viz from "./src/Viz.jsx";
30
+ import { AreaPlot as AreaPlotClass, BarChart as BarChartClass, BoxWhisker as BoxWhiskerClass, BumpChart as BumpChartClass, Donut as DonutClass, Geomap as GeomapClass, LinePlot as LinePlotClass, Matrix as MatrixClass, Network as NetworkClass, Pack as PackClass, Pie as PieClass, Plot as PlotClass, Priestley as PriestleyClass, Radar as RadarClass, RadialMatrix as RadialMatrixClass, Rings as RingsClass, Sankey as SankeyClass, StackedArea as StackedAreaClass, Tree as TreeClass, Treemap as TreemapClass, Viz as VizClass, Axis as AxisClass, AxisBottom as AxisBottomClass, AxisLeft as AxisLeftClass, AxisRight as AxisRightClass, AxisTop as AxisTopClass, ColorScale as ColorScaleClass, Legend as LegendClass, Message as MessageClass, TextBox as TextBoxClass, Timeline as TimelineClass, Tooltip as TooltipClass, Area as AreaClass, Bar as BarClass, Box as BoxClass, Circle as CircleClass, Image as ImageClass, Line as LineClass, Path as PathClass, Rect as RectClass, Shape as ShapeClass, Whisker as WhiskerClass, BaseClass as BaseClassClass } from "@d3plus/core";
31
+ import Renderer from "./src/Renderer.jsx";
32
32
  export var AreaPlot = function(props) {
33
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
34
- instance: new AreaPlotClass()
33
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
34
+ className: "chart",
35
+ constructor: AreaPlotClass
35
36
  }, props));
36
37
  };
37
38
  export var BarChart = function(props) {
38
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
39
- instance: new BarChartClass()
39
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
40
+ className: "chart",
41
+ constructor: BarChartClass
40
42
  }, props));
41
43
  };
42
44
  export var BoxWhisker = function(props) {
43
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
44
- instance: new BoxWhiskerClass()
45
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
46
+ className: "chart",
47
+ constructor: BoxWhiskerClass
45
48
  }, props));
46
49
  };
47
50
  export var BumpChart = function(props) {
48
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
49
- instance: new BumpChartClass()
51
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
52
+ className: "chart",
53
+ constructor: BumpChartClass
50
54
  }, props));
51
55
  };
52
56
  export var Donut = function(props) {
53
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
54
- instance: new DonutClass()
57
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
58
+ className: "chart",
59
+ constructor: DonutClass
55
60
  }, props));
56
61
  };
57
62
  export var Geomap = function(props) {
58
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
59
- instance: new GeomapClass()
63
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
64
+ className: "chart",
65
+ constructor: GeomapClass
60
66
  }, props));
61
67
  };
62
68
  export var LinePlot = function(props) {
63
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
64
- instance: new LinePlotClass()
69
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
70
+ className: "chart",
71
+ constructor: LinePlotClass
65
72
  }, props));
66
73
  };
67
74
  export var Matrix = function(props) {
68
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
69
- instance: new MatrixClass()
75
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
76
+ className: "chart",
77
+ constructor: MatrixClass
70
78
  }, props));
71
79
  };
72
80
  export var Network = function(props) {
73
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
74
- instance: new NetworkClass()
81
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
82
+ className: "chart",
83
+ constructor: NetworkClass
75
84
  }, props));
76
85
  };
77
86
  export var Pack = function(props) {
78
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
79
- instance: new PackClass()
87
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
88
+ className: "chart",
89
+ constructor: PackClass
80
90
  }, props));
81
91
  };
82
92
  export var Pie = function(props) {
83
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
84
- instance: new PieClass()
93
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
94
+ className: "chart",
95
+ constructor: PieClass
85
96
  }, props));
86
97
  };
87
98
  export var Plot = function(props) {
88
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
89
- instance: new PlotClass()
99
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
100
+ className: "chart",
101
+ constructor: PlotClass
90
102
  }, props));
91
103
  };
92
104
  export var Priestley = function(props) {
93
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
94
- instance: new PriestleyClass()
105
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
106
+ className: "chart",
107
+ constructor: PriestleyClass
95
108
  }, props));
96
109
  };
97
110
  export var Radar = function(props) {
98
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
99
- instance: new RadarClass()
111
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
112
+ className: "chart",
113
+ constructor: RadarClass
100
114
  }, props));
101
115
  };
102
116
  export var RadialMatrix = function(props) {
103
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
104
- instance: new RadialMatrixClass()
117
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
118
+ className: "chart",
119
+ constructor: RadialMatrixClass
105
120
  }, props));
106
121
  };
107
122
  export var Rings = function(props) {
108
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
109
- instance: new RingsClass()
123
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
124
+ className: "chart",
125
+ constructor: RingsClass
110
126
  }, props));
111
127
  };
112
128
  export var Sankey = function(props) {
113
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
114
- instance: new SankeyClass()
129
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
130
+ className: "chart",
131
+ constructor: SankeyClass
115
132
  }, props));
116
133
  };
117
134
  export var StackedArea = function(props) {
118
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
119
- instance: new StackedAreaClass()
135
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
136
+ className: "chart",
137
+ constructor: StackedAreaClass
120
138
  }, props));
121
139
  };
122
140
  export var Tree = function(props) {
123
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
124
- instance: new TreeClass()
141
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
142
+ className: "chart",
143
+ constructor: TreeClass
125
144
  }, props));
126
145
  };
127
146
  export var Treemap = function(props) {
128
- return /*#__PURE__*/ React.createElement(Viz, _object_spread({
129
- instance: new TreemapClass()
147
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
148
+ className: "chart",
149
+ constructor: TreemapClass
150
+ }, props));
151
+ };
152
+ export var Viz = function(props) {
153
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
154
+ className: "chart",
155
+ constructor: VizClass
156
+ }, props));
157
+ };
158
+ export var Axis = function(props) {
159
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
160
+ className: "component",
161
+ constructor: AxisClass
162
+ }, props));
163
+ };
164
+ export var AxisBottom = function(props) {
165
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
166
+ className: "component",
167
+ constructor: AxisBottomClass
168
+ }, props));
169
+ };
170
+ export var AxisLeft = function(props) {
171
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
172
+ className: "component",
173
+ constructor: AxisLeftClass
174
+ }, props));
175
+ };
176
+ export var AxisRight = function(props) {
177
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
178
+ className: "component",
179
+ constructor: AxisRightClass
180
+ }, props));
181
+ };
182
+ export var AxisTop = function(props) {
183
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
184
+ className: "component",
185
+ constructor: AxisTopClass
186
+ }, props));
187
+ };
188
+ export var ColorScale = function(props) {
189
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
190
+ className: "component",
191
+ constructor: ColorScaleClass
192
+ }, props));
193
+ };
194
+ export var Legend = function(props) {
195
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
196
+ className: "component",
197
+ constructor: LegendClass
198
+ }, props));
199
+ };
200
+ export var Message = function(props) {
201
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
202
+ className: "component",
203
+ constructor: MessageClass
204
+ }, props));
205
+ };
206
+ export var TextBox = function(props) {
207
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
208
+ className: "component",
209
+ constructor: TextBoxClass
210
+ }, props));
211
+ };
212
+ export var Timeline = function(props) {
213
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
214
+ className: "component",
215
+ constructor: TimelineClass
216
+ }, props));
217
+ };
218
+ export var Tooltip = function(props) {
219
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
220
+ className: "component",
221
+ constructor: TooltipClass
222
+ }, props));
223
+ };
224
+ export var Area = function(props) {
225
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
226
+ className: "shape",
227
+ constructor: AreaClass
228
+ }, props));
229
+ };
230
+ export var Bar = function(props) {
231
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
232
+ className: "shape",
233
+ constructor: BarClass
234
+ }, props));
235
+ };
236
+ export var Box = function(props) {
237
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
238
+ className: "shape",
239
+ constructor: BoxClass
240
+ }, props));
241
+ };
242
+ export var Circle = function(props) {
243
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
244
+ className: "shape",
245
+ constructor: CircleClass
246
+ }, props));
247
+ };
248
+ export var Image = function(props) {
249
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
250
+ className: "shape",
251
+ constructor: ImageClass
252
+ }, props));
253
+ };
254
+ export var Line = function(props) {
255
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
256
+ className: "shape",
257
+ constructor: LineClass
258
+ }, props));
259
+ };
260
+ export var Path = function(props) {
261
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
262
+ className: "shape",
263
+ constructor: PathClass
264
+ }, props));
265
+ };
266
+ export var Rect = function(props) {
267
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
268
+ className: "shape",
269
+ constructor: RectClass
270
+ }, props));
271
+ };
272
+ export var Shape = function(props) {
273
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
274
+ className: "shape",
275
+ constructor: ShapeClass
276
+ }, props));
277
+ };
278
+ export var Whisker = function(props) {
279
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
280
+ className: "shape",
281
+ constructor: WhiskerClass
282
+ }, props));
283
+ };
284
+ export var BaseClass = function(props) {
285
+ return /*#__PURE__*/ React.createElement(Renderer, _object_spread({
286
+ className: "util",
287
+ constructor: BaseClass
130
288
  }, props));
131
289
  };
132
290
  export { default as D3plusContext } from "./src/D3plusContext.jsx";
@@ -0,0 +1,93 @@
1
+ function _array_like_to_array(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _array_with_holes(arr) {
7
+ if (Array.isArray(arr)) return arr;
8
+ }
9
+ function _iterable_to_array_limit(arr, i) {
10
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
11
+ if (_i == null) return;
12
+ var _arr = [];
13
+ var _n = true;
14
+ var _d = false;
15
+ var _s, _e;
16
+ try {
17
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
18
+ _arr.push(_s.value);
19
+ if (i && _arr.length === i) break;
20
+ }
21
+ } catch (err) {
22
+ _d = true;
23
+ _e = err;
24
+ } finally{
25
+ try {
26
+ if (!_n && _i["return"] != null) _i["return"]();
27
+ } finally{
28
+ if (_d) throw _e;
29
+ }
30
+ }
31
+ return _arr;
32
+ }
33
+ function _non_iterable_rest() {
34
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
35
+ }
36
+ function _sliced_to_array(arr, i) {
37
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
38
+ }
39
+ function _unsupported_iterable_to_array(o, minLen) {
40
+ if (!o) return;
41
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
42
+ var n = Object.prototype.toString.call(o).slice(8, -1);
43
+ if (n === "Object" && o.constructor) n = o.constructor.name;
44
+ if (n === "Map" || n === "Set") return Array.from(n);
45
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
46
+ }
47
+ import React, { useContext, useEffect, useRef, useState } from "react";
48
+ import { assign } from "@d3plus/dom";
49
+ import D3plusContext from "./D3plusContext.jsx";
50
+ /**
51
+ @function Renderer
52
+ @param {Object} config An object containing method/value pairs to be passed to the visualization's .config( ) method.
53
+ @param {String} [className = "renderer"] The class attribute value used for the root/wrapper <div> element.
54
+ @param {Function} [callback] A function to be invoked at the end of each render cycle (passed directly to the render method).
55
+ */ export default function(param) {
56
+ var callback = param.callback, _param_className = param.className, className = _param_className === void 0 ? "renderer" : _param_className, config = param.config, constructor = param.constructor;
57
+ var forceUpdate = config.forceUpdate;
58
+ var globalConfig = useContext(D3plusContext);
59
+ var container = useRef(null);
60
+ var _useState = _sliced_to_array(useState(function() {
61
+ return new constructor();
62
+ }), 1), instance = _useState[0];
63
+ useEffect(function() {
64
+ if (container.current) {
65
+ var c = assign({
66
+ select: container.current
67
+ }, globalConfig, config);
68
+ instance.config(c);
69
+ [
70
+ "data",
71
+ "links",
72
+ "nodes",
73
+ "topojson"
74
+ ].forEach(function(method) {
75
+ if (c["".concat(method, "Format")] && c[method]) {
76
+ instance[method](c[method], c["".concat(method, "Format")]);
77
+ delete c["".concat(method, "Format")];
78
+ }
79
+ });
80
+ instance.render(callback);
81
+ }
82
+ }, forceUpdate ? undefined : [
83
+ JSON.stringify(globalConfig),
84
+ JSON.stringify(config)
85
+ ]);
86
+ return /*#__PURE__*/ React.createElement("div", {
87
+ className: className
88
+ }, /*#__PURE__*/ React.createElement("svg", {
89
+ ref: container,
90
+ width: "100%",
91
+ height: "100%"
92
+ }));
93
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@d3plus/react",
3
- "version": "3.0.0-alpha.1",
3
+ "version": "3.0.0-alpha.3",
4
4
  "description": "React components for d3plus visualizations.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -31,7 +31,7 @@
31
31
  "test": "eslint"
32
32
  },
33
33
  "dependencies": {
34
- "@d3plus/core": "3.0.0-alpha.1"
34
+ "@d3plus/core": "3.0.0-alpha.3"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@mantine/core": "^7.8.1",
package/es/src/Viz.jsx DELETED
@@ -1,41 +0,0 @@
1
- import React, { useContext, useEffect, useRef } from "react";
2
- import { assign } from "@d3plus/dom";
3
- import D3plusContext from "./D3plusContext.jsx";
4
- /**
5
- @function Viz
6
- @param {Object} config An object containing method/value pairs to be passed to the visualization's .config( ) method.
7
- @param {String} [className = "viz"] The class attribute value used for the root/wrapper <div> element.
8
- @param {Function} [callback] A function to be invoked at the end of each render cycle (passed directly to the render method).
9
- */ export default function(param) {
10
- var callback = param.callback, _param_className = param.className, className = _param_className === void 0 ? "viz" : _param_className, config = param.config, instance = param.instance;
11
- var forceUpdate = config.forceUpdate;
12
- var globalConfig = useContext(D3plusContext);
13
- var container = useRef(null);
14
- useEffect(function() {
15
- if (container.current) {
16
- var c = assign({
17
- select: container.current
18
- }, globalConfig, config);
19
- instance.config(c);
20
- [
21
- "data",
22
- "links",
23
- "nodes",
24
- "topojson"
25
- ].forEach(function(method) {
26
- if (c["".concat(method, "Format")] && c[method]) {
27
- instance[method](c[method], c["".concat(method, "Format")]);
28
- delete c["".concat(method, "Format")];
29
- }
30
- });
31
- instance.render(callback);
32
- }
33
- }, forceUpdate ? undefined : [
34
- JSON.stringify(globalConfig),
35
- JSON.stringify(config)
36
- ]);
37
- return /*#__PURE__*/ React.createElement("div", {
38
- className: className,
39
- ref: container
40
- });
41
- };