@linkdlab/funcnodes_react_flow 0.1.1 → 0.1.2

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 (198) hide show
  1. package/dist/frontend/datarenderer/images.d.ts +11 -0
  2. package/dist/frontend/datarenderer/images.js +13 -0
  3. package/dist/frontend/datarenderer/images.js.map +1 -0
  4. package/dist/frontend/datarenderer/index.d.ts +16 -0
  5. package/dist/frontend/datarenderer/index.js +26 -0
  6. package/dist/frontend/datarenderer/index.js.map +1 -0
  7. package/dist/frontend/datarenderer/plotly.d.ts +14 -0
  8. package/dist/frontend/datarenderer/plotly.js +53 -0
  9. package/dist/frontend/datarenderer/plotly.js.map +1 -0
  10. package/dist/frontend/dialog.d.ts +17 -0
  11. package/dist/frontend/dialog.js +26 -0
  12. package/dist/frontend/dialog.js.map +1 -0
  13. package/dist/frontend/edge.d.ts +5 -0
  14. package/dist/frontend/edge.js +40 -0
  15. package/dist/frontend/edge.js.map +1 -0
  16. package/dist/frontend/funcnodesreactflow/index.d.ts +6 -0
  17. package/dist/frontend/funcnodesreactflow/index.js +94 -0
  18. package/dist/frontend/funcnodesreactflow/index.js.map +1 -0
  19. package/dist/frontend/funcnodesreactflow/react_flow_layer.d.ts +5 -0
  20. package/dist/frontend/funcnodesreactflow/react_flow_layer.js +149 -0
  21. package/dist/frontend/funcnodesreactflow/react_flow_layer.js.map +1 -0
  22. package/dist/frontend/header/index.d.ts +4 -0
  23. package/dist/frontend/header/index.js +227 -0
  24. package/dist/frontend/header/index.js.map +1 -0
  25. package/{module/src/frontend/index.tsx → dist/frontend/index.d.ts} +1 -2
  26. package/dist/frontend/index.js +4 -0
  27. package/dist/frontend/index.js.map +1 -0
  28. package/dist/frontend/lib.d.ts +10 -0
  29. package/dist/frontend/lib.js +107 -0
  30. package/dist/frontend/lib.js.map +1 -0
  31. package/{module/src/frontend/node/index.tsx → dist/frontend/node/index.d.ts} +0 -1
  32. package/dist/frontend/node/index.js +3 -0
  33. package/dist/frontend/node/index.js.map +1 -0
  34. package/dist/frontend/node/io/default_input_renderer.d.ts +11 -0
  35. package/dist/frontend/node/io/default_input_renderer.js +235 -0
  36. package/dist/frontend/node/io/default_input_renderer.js.map +1 -0
  37. package/dist/frontend/node/io/default_output_render.d.ts +6 -0
  38. package/dist/frontend/node/io/default_output_render.js +23 -0
  39. package/dist/frontend/node/io/default_output_render.js.map +1 -0
  40. package/dist/frontend/node/io/handle_renderer.d.ts +6 -0
  41. package/dist/frontend/node/io/handle_renderer.js +70 -0
  42. package/dist/frontend/node/io/handle_renderer.js.map +1 -0
  43. package/{module/src/frontend/node/io/index.tsx → dist/frontend/node/io/index.d.ts} +0 -1
  44. package/dist/frontend/node/io/index.js +4 -0
  45. package/dist/frontend/node/io/index.js.map +1 -0
  46. package/dist/frontend/node/io/io.d.ts +16 -0
  47. package/dist/frontend/node/io/io.js +98 -0
  48. package/dist/frontend/node/io/io.js.map +1 -0
  49. package/dist/frontend/node/io/nodeinput.d.ts +6 -0
  50. package/dist/frontend/node/io/nodeinput.js +74 -0
  51. package/dist/frontend/node/io/nodeinput.js.map +1 -0
  52. package/dist/frontend/node/io/nodeoutput.d.ts +6 -0
  53. package/dist/frontend/node/io/nodeoutput.js +19 -0
  54. package/dist/frontend/node/io/nodeoutput.js.map +1 -0
  55. package/dist/frontend/node/node.d.ts +20 -0
  56. package/dist/frontend/node/node.js +118 -0
  57. package/dist/frontend/node/node.js.map +1 -0
  58. package/dist/frontend/utils/colorpicker.d.ts +19 -0
  59. package/dist/frontend/utils/colorpicker.js +209 -0
  60. package/dist/frontend/utils/colorpicker.js.map +1 -0
  61. package/dist/frontend/utils/jsondata.d.ts +6 -0
  62. package/dist/frontend/utils/jsondata.js +8 -0
  63. package/dist/frontend/utils/jsondata.js.map +1 -0
  64. package/dist/frontend/utils/table.d.ts +11 -0
  65. package/dist/frontend/utils/table.js +108 -0
  66. package/dist/frontend/utils/table.js.map +1 -0
  67. package/dist/funcnodes/funcnodesworker.d.ts +72 -0
  68. package/dist/funcnodes/funcnodesworker.js +532 -0
  69. package/dist/funcnodes/funcnodesworker.js.map +1 -0
  70. package/dist/funcnodes/index.js +5 -0
  71. package/dist/funcnodes/index.js.map +1 -0
  72. package/dist/funcnodes/websocketworker.d.ts +27 -0
  73. package/dist/funcnodes/websocketworker.js +224 -0
  74. package/dist/funcnodes/websocketworker.js.map +1 -0
  75. package/dist/funcnodes/workermanager.d.ts +32 -0
  76. package/dist/funcnodes/workermanager.js +241 -0
  77. package/dist/funcnodes/workermanager.js.map +1 -0
  78. package/dist/index.d.ts +2 -0
  79. package/dist/index.js +3 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/states/edge.d.ts +7 -0
  82. package/dist/states/edge.js +6 -0
  83. package/dist/states/edge.js.map +1 -0
  84. package/{module/src/states/edge.t.ts → dist/states/edge.t.d.ts} +8 -12
  85. package/dist/states/edge.t.js +2 -0
  86. package/dist/states/edge.t.js.map +1 -0
  87. package/dist/states/fnrfzst.d.ts +10 -0
  88. package/dist/states/fnrfzst.js +378 -0
  89. package/dist/states/fnrfzst.js.map +1 -0
  90. package/dist/states/fnrfzst.t.d.ts +100 -0
  91. package/dist/states/fnrfzst.t.js +2 -0
  92. package/dist/states/fnrfzst.t.js.map +1 -0
  93. package/dist/states/index.js +6 -0
  94. package/dist/states/index.js.map +1 -0
  95. package/dist/states/lib.d.ts +3 -0
  96. package/dist/states/lib.js +14 -0
  97. package/dist/states/lib.js.map +1 -0
  98. package/dist/states/lib.t.d.ts +24 -0
  99. package/dist/states/lib.t.js +2 -0
  100. package/dist/states/lib.t.js.map +1 -0
  101. package/dist/states/node.d.ts +4 -0
  102. package/dist/states/node.js +43 -0
  103. package/dist/states/node.js.map +1 -0
  104. package/{module/src/states/node.t.ts → dist/states/node.t.d.ts} +33 -58
  105. package/dist/states/node.t.js +2 -0
  106. package/dist/states/node.t.js.map +1 -0
  107. package/dist/states/nodeio.t.d.ts +67 -0
  108. package/dist/states/nodeio.t.js +2 -0
  109. package/dist/states/nodeio.t.js.map +1 -0
  110. package/dist/states/nodespace.d.ts +3 -0
  111. package/{module/src/states/nodespace.ts → dist/states/nodespace.js} +17 -30
  112. package/dist/states/nodespace.js.map +1 -0
  113. package/dist/states/nodespace.t.d.ts +16 -0
  114. package/dist/states/nodespace.t.js +2 -0
  115. package/dist/states/nodespace.t.js.map +1 -0
  116. package/dist/states/reactflow.d.ts +8 -0
  117. package/dist/states/reactflow.js +33 -0
  118. package/dist/states/reactflow.js.map +1 -0
  119. package/dist/states/reactflow.t.d.ts +11 -0
  120. package/dist/states/reactflow.t.js +2 -0
  121. package/dist/states/reactflow.t.js.map +1 -0
  122. package/{module/src/types/rendering.t.ts → dist/types/rendering.t.d.ts} +4 -7
  123. package/dist/types/rendering.t.js +2 -0
  124. package/dist/types/rendering.t.js.map +1 -0
  125. package/{module/src/utils/index.ts → dist/utils/index.d.ts} +0 -1
  126. package/dist/utils/index.js +3 -0
  127. package/dist/utils/index.js.map +1 -0
  128. package/dist/utils/objects.d.ts +19 -0
  129. package/dist/utils/objects.js +118 -0
  130. package/dist/utils/objects.js.map +1 -0
  131. package/package.json +32 -23
  132. package/app/public/favicon.ico +0 -0
  133. package/app/public/index.html +0 -43
  134. package/app/public/logo192.png +0 -0
  135. package/app/public/logo512.png +0 -0
  136. package/app/public/manifest.json +0 -25
  137. package/app/public/robots.txt +0 -3
  138. package/app/public/worker_manager +0 -1
  139. package/app/src/App.css +0 -38
  140. package/app/src/App.test.tsx +0 -9
  141. package/app/src/App.tsx +0 -22
  142. package/app/src/index.css +0 -13
  143. package/app/src/index.tsx +0 -19
  144. package/app/src/react-app-env.d.ts +0 -1
  145. package/app/src/reportWebVitals.ts +0 -15
  146. package/app/src/setupTests.ts +0 -5
  147. package/app/tsconfig.app.json +0 -10
  148. package/app/webpack.config.js +0 -143
  149. package/module/src/frontend/datarenderer/images.tsx +0 -28
  150. package/module/src/frontend/datarenderer/index.tsx +0 -54
  151. package/module/src/frontend/datarenderer/plotly.tsx +0 -82
  152. package/module/src/frontend/dialog.scss +0 -88
  153. package/module/src/frontend/dialog.tsx +0 -71
  154. package/module/src/frontend/edge.scss +0 -15
  155. package/module/src/frontend/edge.tsx +0 -32
  156. package/module/src/frontend/funcnodesreactflow/funcnodesreactflow.scss +0 -63
  157. package/module/src/frontend/funcnodesreactflow/index.tsx +0 -68
  158. package/module/src/frontend/funcnodesreactflow/react_flow_layer.tsx +0 -212
  159. package/module/src/frontend/header/header.scss +0 -48
  160. package/module/src/frontend/header/index.tsx +0 -269
  161. package/module/src/frontend/layout/htmlelements.scss +0 -63
  162. package/module/src/frontend/lib.scss +0 -157
  163. package/module/src/frontend/lib.tsx +0 -199
  164. package/module/src/frontend/node/io/default_input_renderer.tsx +0 -329
  165. package/module/src/frontend/node/io/default_output_render.tsx +0 -25
  166. package/module/src/frontend/node/io/handle_renderer.tsx +0 -94
  167. package/module/src/frontend/node/io/io.scss +0 -91
  168. package/module/src/frontend/node/io/io.tsx +0 -115
  169. package/module/src/frontend/node/io/nodeinput.tsx +0 -127
  170. package/module/src/frontend/node/io/nodeoutput.tsx +0 -43
  171. package/module/src/frontend/node/node.scss +0 -265
  172. package/module/src/frontend/node/node.tsx +0 -209
  173. package/module/src/frontend/utils/colorpicker.scss +0 -37
  174. package/module/src/frontend/utils/colorpicker.tsx +0 -342
  175. package/module/src/frontend/utils/jsondata.tsx +0 -19
  176. package/module/src/frontend/utils/table.scss +0 -22
  177. package/module/src/frontend/utils/table.tsx +0 -160
  178. package/module/src/funcnodes/funcnodesworker.ts +0 -456
  179. package/module/src/funcnodes/websocketworker.ts +0 -152
  180. package/module/src/funcnodes/workermanager.ts +0 -233
  181. package/module/src/index.tsx +0 -4
  182. package/module/src/states/edge.ts +0 -15
  183. package/module/src/states/fnrfzst.t.ts +0 -117
  184. package/module/src/states/fnrfzst.ts +0 -415
  185. package/module/src/states/lib.t.ts +0 -30
  186. package/module/src/states/lib.ts +0 -16
  187. package/module/src/states/node.ts +0 -46
  188. package/module/src/states/nodeio.t.ts +0 -103
  189. package/module/src/states/nodespace.t.ts +0 -57
  190. package/module/src/states/reactflow.t.ts +0 -27
  191. package/module/src/states/reactflow.ts +0 -49
  192. package/module/src/types/funcnodesreactflow.d.ts +0 -1
  193. package/module/src/utils/objects.ts +0 -131
  194. package/module/tsconfig.module.json +0 -15
  195. package/module/webpack.config.js +0 -140
  196. package/tsconfig.json +0 -18
  197. /package/{module/src/funcnodes/index.ts → dist/funcnodes/index.d.ts} +0 -0
  198. /package/{module/src/states/index.ts → dist/states/index.d.ts} +0 -0
@@ -1,342 +0,0 @@
1
- import React, { useEffect, useMemo, useRef, useState } from "react";
2
- import * as Popover from "@radix-ui/react-popover";
3
- import convert from "color-convert";
4
- import "./colorpicker.scss";
5
-
6
- const parse_colorstring = (colorstring: string): [string, any[]] => {
7
- // This is a simplified parser and may need adjustments to handle all CSS color formats robustly
8
- if (colorstring.startsWith("#")) {
9
- return ["hex", [colorstring]];
10
- }
11
-
12
- let matches = colorstring.match(/^(\w+)\(([^)]+)\)$/);
13
- if (!matches) return ["keyword", [colorstring]];
14
-
15
- const colortype = matches[1];
16
- const colordata = matches[2].split(",").map((n) => parseInt(n.trim()));
17
-
18
- return [colortype, colordata];
19
- };
20
-
21
- const create_color_converter = (
22
- type: string,
23
- data: any[]
24
- ): { [key: string]: () => number[] | string } => {
25
- if (!Array.isArray(data)) data = [data];
26
- if (data[0] === undefined || data[0] === null)
27
- return create_color_converter("rgb", [0, 0, 0]);
28
- // @ts-ignore
29
- const source = convert[type];
30
- if (!source) throw new Error("Unsupported color type: " + type);
31
-
32
- source[type] = () => data;
33
-
34
- const checkrgb = source.rgb(data);
35
- if (!Array.isArray(checkrgb)) return create_color_converter("rgb", [0, 0, 0]);
36
- if (checkrgb[0] === undefined || checkrgb[0] === null)
37
- return create_color_converter("rgb", [0, 0, 0]);
38
-
39
- const checkhsl = source.hsl(data);
40
- if (!Array.isArray(checkhsl)) return create_color_converter("rgb", [0, 0, 0]);
41
- if (checkhsl[0] === undefined || checkhsl[0] === null)
42
- return create_color_converter("rgb", [0, 0, 0]);
43
-
44
- const converter: { [key: string]: () => number[] | string } = {};
45
-
46
- Object.keys(source).forEach((key) => {
47
- const entry = source[key];
48
- //check if entry is a function
49
- if (typeof entry === "function") {
50
- converter[key] = () => entry.apply(null, data);
51
- }
52
- });
53
-
54
- return converter;
55
- };
56
- const create_color_converter_from_string = (
57
- colorstring: string
58
- ): { [key: string]: () => number[] | string } => {
59
- const [colortype, colordata] = parse_colorstring(colorstring);
60
- // @ts-ignore
61
- if (!colortype || !convert[colortype]) {
62
- console.error("Unsupported color type or invalid color string");
63
- return {};
64
- }
65
-
66
- return create_color_converter(colortype, colordata);
67
- };
68
-
69
- const HSLColorPicker = ({
70
- onChange,
71
- colorconverter,
72
- }: {
73
- onChange: (colorconverter: {
74
- [key: string]: () => number[] | string;
75
- }) => void;
76
- colorconverter: { [key: string]: () => number[] | string };
77
- }) => {
78
- const [converter, setConverter] = useState(colorconverter);
79
- const hsl = converter.hsl() as number[];
80
- const rgb = converter.rgb() as number[];
81
- const hsv = converter.hsv() as number[];
82
- const hex = converter.hex() as string;
83
-
84
- const colorStyle = {
85
- backgroundColor: `hsl(${hsl[0]}, ${hsl[1]}%, ${hsl[2]}%)`,
86
- padding: "10px",
87
- margin: "10px 0",
88
- };
89
-
90
- let g = "linear-gradient(to right";
91
- for (let i = 0; i <= 360; i += 10) {
92
- g += `, hsl(${i}, 100%, 50%)`;
93
- }
94
- g += ")";
95
- const hueStyle = {
96
- backgroundImage: "unset",
97
- WebkitAppearance: "none" as any,
98
- background: g,
99
- height: 10,
100
- borderRadius: 5,
101
- };
102
-
103
- return (
104
- <div style={{ backgroundColor: "white" }}>
105
- <div style={colorStyle}>Color Preview</div>
106
- <div className="colorspace">
107
- <div className="colorspace_title">RGB</div>
108
- <div></div>
109
-
110
- <label>Red</label>
111
- <input
112
- type="range"
113
- min="0"
114
- max="255"
115
- value={rgb[0]}
116
- onChange={(e) => {
117
- const newrgb = [parseInt(e.target.value), rgb[1], rgb[2]];
118
- const newconverter = create_color_converter("rgb", newrgb);
119
- setConverter(newconverter);
120
- onChange(newconverter);
121
- }}
122
- style={{ background: `linear-gradient(to right, #000, #f00)` }}
123
- />
124
-
125
- <label>Green</label>
126
- <input
127
- type="range"
128
- min="0"
129
- max="255"
130
- value={rgb[1]}
131
- onChange={(e) => {
132
- const newrgb = [rgb[0], parseInt(e.target.value), rgb[2]];
133
- const newconverter = create_color_converter("rgb", newrgb);
134
- setConverter(newconverter);
135
- onChange(newconverter);
136
- }}
137
- style={{ background: `linear-gradient(to right, #000, #0f0)` }}
138
- />
139
-
140
- <label>Blue</label>
141
- <input
142
- type="range"
143
- min="0"
144
- max="255"
145
- value={rgb[2]}
146
- onChange={(e) => {
147
- const newrgb = [rgb[0], rgb[1], parseInt(e.target.value)];
148
- const newconverter = create_color_converter("rgb", newrgb);
149
- setConverter(newconverter);
150
- onChange(newconverter);
151
- }}
152
- style={{ background: `linear-gradient(to right, #000, #00f)` }}
153
- />
154
- </div>
155
- <div className="colorspace">
156
- <div className="colorspace_title">HSL</div>
157
- <div></div>
158
-
159
- <label>Hue</label>
160
- <input
161
- type="range"
162
- min="0"
163
- max="360"
164
- value={hsl[0]}
165
- onChange={(e) => {
166
- const newhsl = [parseInt(e.target.value), hsl[1], hsl[2]];
167
- const newconverter = create_color_converter("hsl", newhsl);
168
- setConverter(newconverter);
169
- onChange(newconverter);
170
- }}
171
- style={{
172
- background: `linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00)`,
173
- }}
174
- />
175
-
176
- <label>Saturation</label>
177
- <input
178
- type="range"
179
- min="0"
180
- max="100"
181
- value={hsl[1]}
182
- onChange={(e) => {
183
- const newhsl = [hsl[0], parseInt(e.target.value), hsl[2]];
184
- const newconverter = create_color_converter("hsl", newhsl);
185
- setConverter(newconverter);
186
- onChange(newconverter);
187
- }}
188
- style={{
189
- background: `linear-gradient(to right, #fff, hsl(${hsl[0]}, 100%, 50%))`,
190
- }}
191
- />
192
-
193
- <label>Lightness</label>
194
-
195
- <input
196
- type="range"
197
- min="0"
198
- max="100"
199
- value={hsl[2]}
200
- onChange={(e) => {
201
- const newhsl = [hsl[0], hsl[1], parseInt(e.target.value)];
202
- const newconverter = create_color_converter("hsl", newhsl);
203
- setConverter(newconverter);
204
- onChange(newconverter);
205
- }}
206
- style={{
207
- background: `linear-gradient(to right, #000, hsl(${hsl[0]}, 100%, 50%), #fff)`,
208
- }}
209
- />
210
- </div>
211
-
212
- <div className="colorspace">
213
- <div className="colorspace_title">HSV</div>
214
- <div></div>
215
-
216
- <label>Hue</label>
217
- <input
218
- type="range"
219
- min="0"
220
- max="360"
221
- value={hsv[0]}
222
- onChange={(e) => {
223
- const newhsv = [parseInt(e.target.value), hsv[1], hsv[2]];
224
- const newconverter = create_color_converter("hsv", newhsv);
225
- setConverter(newconverter);
226
- onChange(newconverter);
227
- }}
228
- style={{
229
- background: `linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00)`,
230
- }}
231
- />
232
-
233
- <label>Saturation</label>
234
- <input
235
- type="range"
236
- min="0"
237
- max="100"
238
- value={hsv[1]}
239
- onChange={(e) => {
240
- const newhsv = [hsv[0], parseInt(e.target.value), hsv[2]];
241
- const newconverter = create_color_converter("hsv", newhsv);
242
- setConverter(newconverter);
243
- onChange(newconverter);
244
- }}
245
- style={{
246
- background: `linear-gradient(to right, #fff, hsl(${hsl[0]}, 100%, 50%))`,
247
- }}
248
- />
249
-
250
- <label>Value</label>
251
- <input
252
- type="range"
253
- min="0"
254
- max="100"
255
- value={hsv[2]}
256
- onChange={(e) => {
257
- const newhsv = [hsv[0], hsv[1], parseInt(e.target.value)];
258
- const newconverter = create_color_converter("hsv", newhsv);
259
- setConverter(newconverter);
260
- onChange(newconverter);
261
- }}
262
- style={{
263
- background: `linear-gradient(to right, #000, hsl(${hsl[0]}, 100%, 50%))`,
264
- }}
265
- />
266
- </div>
267
-
268
- <div className="colorspace">
269
- <div className="colorspace_title">HEX</div>
270
- <div></div>
271
-
272
- <input
273
- type="text"
274
- value={hex}
275
- onChange={(e) => {
276
- const newconverter = create_color_converter("hex", [
277
- e.target.value,
278
- ]);
279
- setConverter(newconverter);
280
- onChange(newconverter);
281
- }}
282
- />
283
- </div>
284
- </div>
285
- );
286
- };
287
-
288
- const CustomColorPicker = ({
289
- inicolordata,
290
- inicolorspace = "hex",
291
- onChange,
292
- }: {
293
- inicolordata?: number[] | string | string[];
294
- inicolorspace?: string;
295
- onChange?: (colorconverter: {
296
- [key: string]: () => number[] | string;
297
- }) => void;
298
- }) => {
299
- if (inicolordata === undefined) {
300
- inicolordata = [0, 0, 0];
301
- inicolorspace = "rgb";
302
- }
303
- if (!Array.isArray(inicolordata)) inicolordata = [inicolordata];
304
-
305
- let iniconverter = create_color_converter(inicolorspace, inicolordata);
306
-
307
- if (iniconverter.rgb() === undefined)
308
- iniconverter = create_color_converter("rgb", [0, 0, 0]);
309
- const [color, setColor] = useState(iniconverter);
310
-
311
- const innerSetColor = (colorconverter: {
312
- [key: string]: () => number[] | string;
313
- }) => {
314
- setColor(colorconverter);
315
- if (onChange) onChange(colorconverter);
316
- };
317
-
318
- const style = {
319
- background: "#" + color.hex(),
320
- borderRadius: "0.3rem",
321
- width: "2rem",
322
- height: "1rem",
323
- };
324
- return (
325
- <Popover.Root>
326
- <Popover.Trigger asChild>
327
- <button style={style}></button>
328
- </Popover.Trigger>
329
- <Popover.Portal>
330
- <Popover.Content side="left">
331
- <HSLColorPicker
332
- onChange={innerSetColor}
333
- colorconverter={color}
334
- ></HSLColorPicker>
335
- </Popover.Content>
336
- </Popover.Portal>
337
- </Popover.Root>
338
- );
339
- };
340
-
341
- export default CustomColorPicker;
342
- export { HSLColorPicker };
@@ -1,19 +0,0 @@
1
- import {
2
- JsonView,
3
- allExpanded,
4
- darkStyles,
5
- defaultStyles,
6
- collapseAllNested,
7
- } from "react-json-view-lite";
8
- import "react-json-view-lite/dist/index.css";
9
- const JSONDataDisplay = ({ data }: { data: any }) => {
10
- return (
11
- <JsonView
12
- data={data}
13
- style={darkStyles}
14
- shouldExpandNode={collapseAllNested}
15
- />
16
- );
17
- };
18
-
19
- export default JSONDataDisplay;
@@ -1,22 +0,0 @@
1
- .tablecontainer {
2
- overflow: auto;
3
- background-color: white;
4
- }
5
- .tableHead {
6
- color: var(--funheadercolor) !important;
7
- background-color: var(--funcnodesbackground1);
8
- font-weight: bold !important;
9
- }
10
-
11
- .tableheadercolor {
12
- color: inherit !important;
13
- font-family: inherit !important;
14
- font-weight: inherit !important;
15
- }
16
-
17
- .indexcol {
18
- background-color: var(--funcnodesbackground2);
19
- color: var(--funheadercolor) !important;
20
- font-family: inherit !important;
21
- font-weight: inherit !important;
22
- }
@@ -1,160 +0,0 @@
1
- import Table from "@mui/material/Table";
2
- import TableBody from "@mui/material/TableBody";
3
- import TableCell, { SortDirection } from "@mui/material/TableCell";
4
- import TableContainer from "@mui/material/TableContainer";
5
- import TableHead from "@mui/material/TableHead";
6
- import TableRow from "@mui/material/TableRow";
7
- import TableSortLabel from "@mui/material/TableSortLabel";
8
-
9
- import { useMemo, useState } from "react";
10
-
11
- import "./table.scss";
12
- import React from "react";
13
-
14
- interface TableData {
15
- columns: string[];
16
- index: string[];
17
- data: any[][];
18
- }
19
-
20
- type comparertype = (a: any, b: any) => 1 | -1 | 0;
21
- type _SD = "asc" | "desc";
22
-
23
- interface TransFormedTableData {
24
- header: string[];
25
- rows: any[][];
26
- }
27
-
28
- const transform_table_data = (data: TableData): TransFormedTableData => {
29
- const rows = [];
30
- if (data === undefined) {
31
- // return empty table if data is undefined
32
- return {
33
- header: [],
34
- rows: [],
35
- };
36
- }
37
- if (data.data === undefined) {
38
- // if data.data is undefined, make it empty
39
- data.data = [];
40
- }
41
-
42
- if (data.columns === undefined) {
43
- // if np columns are defined, create columns based on the first row
44
-
45
- // if data is empty, there are no columns
46
- if (data.data.length === 0) {
47
- data.columns = [];
48
- } else {
49
- // create columns based on the first row
50
- data.columns = data.data[0].map((_, i) => `col${i}`);
51
- }
52
- }
53
- if (data.index === undefined) {
54
- // if no index is defined, create index based on the number of rows
55
- data.index = data.data.map((_, i) => `row${i}`);
56
- }
57
-
58
- for (let i = 0; i < data.index.length; i++) {
59
- const row = [data.index[i]];
60
- for (let j = 0; j < data.columns.length; j++) {
61
- row.push(data.data[i][j]);
62
- }
63
- rows.push(row);
64
- }
65
- return {
66
- header: ["index", ...data.columns],
67
- rows: rows,
68
- };
69
- };
70
-
71
- const SortableTable = ({ tabledata }: { tabledata: TableData }) => {
72
- // State to manage the sorted column and direction
73
- const transformed_table_data: TransFormedTableData = useMemo(
74
- () => transform_table_data(tabledata),
75
- [tabledata]
76
- );
77
- const [orderDirection, setOrderDirection] = useState<_SD>("asc");
78
- const [orderBy, setOrderBy] = useState("index");
79
-
80
- let order_by_index = transformed_table_data.header.indexOf(orderBy);
81
- if (order_by_index === -1) {
82
- order_by_index = 0;
83
- }
84
-
85
- // Function to handle sorting
86
- const handleSort = (column: string) => {
87
- const isAsc = orderBy === column && orderDirection === "asc";
88
- setOrderDirection(isAsc ? "desc" : "asc");
89
- setOrderBy(column);
90
- };
91
- // Function to sort data
92
- const sortData = (data: any[][], comparator: comparertype) => {
93
- const stabilizedThis: [any[], number][] = data.map((el, index) => [
94
- el,
95
- index,
96
- ]);
97
- stabilizedThis.sort((a, b) => {
98
- const order = comparator(a[0], b[0]);
99
- return order;
100
- });
101
- return stabilizedThis.map((el) => el[0]);
102
- };
103
-
104
- // Comparator function for sorting
105
- const getComparator = (order: _SD, orderBy: string): comparertype => {
106
- return order === "desc"
107
- ? (a, b) => (b[order_by_index] < a[order_by_index] ? -1 : 1)
108
- : (a, b) => (a[order_by_index] < b[order_by_index] ? -1 : 1);
109
- };
110
-
111
- // Sort the rows
112
- const sortedRows = sortData(
113
- transformed_table_data.rows,
114
- getComparator(orderDirection, orderBy)
115
- );
116
- return (
117
- <TableContainer className="tablecontainer">
118
- <Table size="small">
119
- <TableHead className="tableHead">
120
- <TableRow className="tableheadercolor">
121
- {transformed_table_data.header.map((column) => (
122
- <TableCell
123
- key={column}
124
- sortDirection={orderBy === column ? orderDirection : false}
125
- className="tableheadercolor"
126
- >
127
- <TableSortLabel
128
- active={orderBy === column}
129
- direction={orderBy === column ? orderDirection : "asc"}
130
- onClick={() => handleSort(column)}
131
- className="tableheadercolor"
132
- sx={{
133
- "& .MuiTableSortLabel-icon": {
134
- color: "inherit !important",
135
- },
136
- }}
137
- >
138
- {column}
139
- </TableSortLabel>
140
- </TableCell>
141
- ))}
142
- </TableRow>
143
- </TableHead>
144
- <TableBody>
145
- {sortedRows.map((row, index) => (
146
- <TableRow key={tabledata.index[index]}>
147
- {row.map((cell, i) => (
148
- <TableCell key={i} className={i == 0 ? "indexcol" : "datacol"}>
149
- {cell}
150
- </TableCell>
151
- ))}
152
- </TableRow>
153
- ))}
154
- </TableBody>
155
- </Table>
156
- </TableContainer>
157
- );
158
- };
159
-
160
- export { SortableTable };