@linkdlab/funcnodes_react_flow 0.1.0 → 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 (194) 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/{src/frontend/index.tsx → dist/frontend/index.d.ts} +0 -1
  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/{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/{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/dist/states/edge.t.d.ts +16 -0
  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.d.ts +7 -0
  94. package/dist/states/index.js +6 -0
  95. package/dist/states/index.js.map +1 -0
  96. package/dist/states/lib.d.ts +3 -0
  97. package/dist/states/lib.js +14 -0
  98. package/dist/states/lib.js.map +1 -0
  99. package/dist/states/lib.t.d.ts +24 -0
  100. package/dist/states/lib.t.js +2 -0
  101. package/dist/states/lib.t.js.map +1 -0
  102. package/dist/states/node.d.ts +4 -0
  103. package/dist/states/node.js +43 -0
  104. package/dist/states/node.js.map +1 -0
  105. package/dist/states/node.t.d.ts +73 -0
  106. package/dist/states/node.t.js +2 -0
  107. package/dist/states/node.t.js.map +1 -0
  108. package/dist/states/nodeio.t.d.ts +67 -0
  109. package/dist/states/nodeio.t.js +2 -0
  110. package/dist/states/nodeio.t.js.map +1 -0
  111. package/dist/states/nodespace.d.ts +3 -0
  112. package/dist/states/nodespace.js +77 -0
  113. package/dist/states/nodespace.js.map +1 -0
  114. package/dist/states/nodespace.t.d.ts +16 -0
  115. package/dist/states/nodespace.t.js +2 -0
  116. package/dist/states/nodespace.t.js.map +1 -0
  117. package/dist/states/reactflow.d.ts +8 -0
  118. package/dist/states/reactflow.js +33 -0
  119. package/dist/states/reactflow.js.map +1 -0
  120. package/dist/states/reactflow.t.d.ts +11 -0
  121. package/dist/states/reactflow.t.js +2 -0
  122. package/dist/states/reactflow.t.js.map +1 -0
  123. package/dist/types/rendering.t.d.ts +10 -0
  124. package/dist/types/rendering.t.js +2 -0
  125. package/dist/types/rendering.t.js.map +1 -0
  126. package/dist/utils/index.d.ts +3 -0
  127. package/dist/utils/index.js +3 -0
  128. package/dist/utils/index.js.map +1 -0
  129. package/dist/utils/objects.d.ts +19 -0
  130. package/dist/utils/objects.js +118 -0
  131. package/dist/utils/objects.js.map +1 -0
  132. package/package.json +52 -21
  133. package/package copy.json +0 -63
  134. package/public/favicon.ico +0 -0
  135. package/public/index.html +0 -43
  136. package/public/logo192.png +0 -0
  137. package/public/logo512.png +0 -0
  138. package/public/manifest.json +0 -25
  139. package/public/robots.txt +0 -3
  140. package/public/worker_manager +0 -1
  141. package/src/App.css +0 -38
  142. package/src/App.test.tsx +0 -9
  143. package/src/App.tsx +0 -22
  144. package/src/frontend/datarenderer/images.tsx +0 -28
  145. package/src/frontend/datarenderer/index.tsx +0 -53
  146. package/src/frontend/datarenderer/plotly.tsx +0 -82
  147. package/src/frontend/dialog.scss +0 -88
  148. package/src/frontend/dialog.tsx +0 -70
  149. package/src/frontend/edge.scss +0 -15
  150. package/src/frontend/edge.tsx +0 -31
  151. package/src/frontend/funcnodesreactflow.scss +0 -63
  152. package/src/frontend/funcnodesreactflow.tsx +0 -283
  153. package/src/frontend/header/header.scss +0 -48
  154. package/src/frontend/header/index.tsx +0 -268
  155. package/src/frontend/layout/htmlelements.scss +0 -63
  156. package/src/frontend/lib.scss +0 -157
  157. package/src/frontend/lib.tsx +0 -198
  158. package/src/frontend/node/io/default_input_renderer.tsx +0 -327
  159. package/src/frontend/node/io/default_output_render.tsx +0 -26
  160. package/src/frontend/node/io/handle_renderer.tsx +0 -89
  161. package/src/frontend/node/io/io.scss +0 -91
  162. package/src/frontend/node/io/io.tsx +0 -114
  163. package/src/frontend/node/io/nodeinput.tsx +0 -125
  164. package/src/frontend/node/io/nodeoutput.tsx +0 -37
  165. package/src/frontend/node/node.scss +0 -265
  166. package/src/frontend/node/node.tsx +0 -208
  167. package/src/frontend/nodecontextmenu.scss +0 -18
  168. package/src/frontend/utils/colorpicker.scss +0 -37
  169. package/src/frontend/utils/colorpicker.tsx +0 -342
  170. package/src/frontend/utils/jsondata.tsx +0 -19
  171. package/src/frontend/utils/table.scss +0 -22
  172. package/src/frontend/utils/table.tsx +0 -159
  173. package/src/funcnodes/funcnodesworker.ts +0 -455
  174. package/src/funcnodes/websocketworker.ts +0 -153
  175. package/src/funcnodes/workermanager.ts +0 -229
  176. package/src/index.css +0 -13
  177. package/src/index.tsx +0 -19
  178. package/src/logo.svg +0 -1
  179. package/src/react-app-env.d.ts +0 -1
  180. package/src/reportWebVitals.ts +0 -15
  181. package/src/setupTests.ts +0 -5
  182. package/src/state/edge.ts +0 -35
  183. package/src/state/fnrfzst.ts +0 -440
  184. package/src/state/index.ts +0 -139
  185. package/src/state/lib.ts +0 -26
  186. package/src/state/node.ts +0 -118
  187. package/src/state/nodespace.ts +0 -151
  188. package/src/state/reactflow.ts +0 -65
  189. package/src/types/lib.d.ts +0 -16
  190. package/src/types/node.d.ts +0 -29
  191. package/src/types/nodeio.d.ts +0 -82
  192. package/src/types/worker.d.ts +0 -56
  193. package/tsconfig.json +0 -20
  194. /package/{src/funcnodes/index.ts → dist/funcnodes/index.d.ts} +0 -0
@@ -1,208 +0,0 @@
1
- import React, {
2
- RefObject,
3
- useContext,
4
- useEffect,
5
- useMemo,
6
- useRef,
7
- useState,
8
- } from "react";
9
-
10
- import { NodeStore } from "../../state/node";
11
- import ExpandLessIcon from "@mui/icons-material/ExpandLess";
12
- import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
13
- import ExpandIcon from "@mui/icons-material/Expand";
14
- import LanIcon from "@mui/icons-material/Lan";
15
- import PlayCircleFilledIcon from "@mui/icons-material/PlayCircleFilled";
16
- import "./node.scss";
17
- import { FuncNodesReactFlowZustandInterface } from "../../state/fnrfzst";
18
- import { FuncNodesContext } from "..";
19
- import get_rendertype from "../datarenderer";
20
- import CustomColorPicker, { HSLColorPicker } from "../utils/colorpicker";
21
- import { NodeInput, NodeOutput } from "./io";
22
- import { PreviewHandleDataRendererForIo } from "./io/handle_renderer";
23
- import CustomDialog from "../dialog";
24
- interface NodeHeaderProps {
25
- node_data: NodeType;
26
- }
27
-
28
- const NodeHeader = ({ node_data }: NodeHeaderProps) => {
29
- const fnrf_zst: FuncNodesReactFlowZustandInterface =
30
- useContext(FuncNodesContext);
31
-
32
- const clicktrigger = () => {
33
- fnrf_zst.on_node_action({
34
- type: "trigger",
35
- from_remote: false,
36
- id: node_data.id,
37
- });
38
- };
39
-
40
- return (
41
- <div className="nodeheader">
42
- <div className="nodeheader_element">
43
- <PlayCircleFilledIcon
44
- fontSize="inherit"
45
- className="triggerbutton"
46
- onClick={clicktrigger}
47
- />
48
- <LanIcon fontSize="inherit" />
49
- </div>
50
- <div className="nodeheader_element nodeheader_title">
51
- <div className="nodeheader_title_text">{node_data.node_name}</div>
52
- </div>
53
- <div className="nodeheader_element">
54
- <ExpandLessIcon fontSize="inherit" />
55
- </div>
56
- </div>
57
- );
58
- };
59
-
60
- interface NodeBodyProps {
61
- node_data: NodeType;
62
- }
63
-
64
- const NodeDataRenderer = ({ node_data }: { node_data: NodeType }) => {
65
- const src = node_data.render_options?.data?.src;
66
-
67
- const io: IOType | undefined = node_data.render_options?.data?.src
68
- ? node_data.io[node_data.render_options?.data?.src]
69
- : undefined;
70
-
71
- const pvhandle = io && PreviewHandleDataRendererForIo(io);
72
-
73
- return (
74
- <div className="nodrag">
75
- {pvhandle && (
76
- <CustomDialog
77
- trigger={<div>{pvhandle({ io })}</div>}
78
- onOpenChange={(open: boolean) => {
79
- if (open) {
80
- io?.try_get_full_value();
81
- }
82
- }}
83
- >
84
- {pvhandle({ io })}
85
- </CustomDialog>
86
- )}
87
- </div>
88
- );
89
- };
90
-
91
- const NodeBody = ({ node_data }: NodeBodyProps) => {
92
- const inputs = Object.values(node_data.io).filter((io) => io.is_input);
93
- const outputs = Object.values(node_data.io).filter((io) => !io.is_input);
94
-
95
- if (node_data.render_options?.data?.src) {
96
- }
97
-
98
- return (
99
- <div className="nodebody">
100
- {outputs.map((io) => (
101
- <NodeOutput key={io.id} io={io} />
102
- ))}
103
- <NodeDataRenderer node_data={node_data} />
104
- {inputs.map((io) => (
105
- <NodeInput key={io.id} io={io} />
106
- ))}
107
- </div>
108
- );
109
- };
110
-
111
- const NodeName = ({ node_data }: { node_data: NodeType }) => {
112
- const [name, setName] = useState(node_data.name);
113
-
114
- useEffect(() => {
115
- setName(node_data.name);
116
- }, [node_data]);
117
-
118
- const fnrf_zst: FuncNodesReactFlowZustandInterface =
119
- useContext(FuncNodesContext);
120
-
121
- const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
122
- setName(event.target.value);
123
- };
124
-
125
- const finalSetName = (e: React.ChangeEvent<HTMLInputElement>) => {
126
- const new_name = e.target.value;
127
- fnrf_zst.on_node_action({
128
- type: "update",
129
- from_remote: false,
130
- id: node_data.id,
131
- node: { name: new_name },
132
- });
133
- };
134
- return (
135
- <input
136
- className="nodename_input"
137
- value={name}
138
- onChange={handleChange}
139
- onBlur={finalSetName}
140
- />
141
- );
142
- };
143
-
144
- const NodeFooter = ({ node_data }: { node_data: NodeType }) => {
145
- return (
146
- <div className="nodefooter">
147
- {node_data.error && <div className="nodeerror">{node_data.error}</div>}
148
- </div>
149
- );
150
- };
151
- /**
152
- * A generic function to deeply merge two objects of type T.
153
- *
154
- * @param {T} target - The target object to be merged.
155
- * @param {DeepPartial<T>} source - The source object to merge into the target. All properties of this object are optional.
156
- *
157
- * @returns {Object} An object containing the merged object (new_obj) and a boolean indicating if there was a change (change).
158
- *
159
- * @throws {Type 'string' cannot be used to index type 'T'} This error is ignored using the @ts-ignore directive because we are dynamically accessing properties of a generic type T.
160
- */
161
- const DefaultNode = ({ data }: { data: { UseNodeStore: NodeStore } }) => {
162
- // Use the NodeStore to get the data for the node.
163
- const storedata = data.UseNodeStore();
164
-
165
- const collapsed = storedata.frontend.collapsed || true;
166
-
167
- const [visualTrigger, setVisualTrigger] = useState(false);
168
-
169
- useEffect(() => {
170
- let timeoutId: NodeJS.Timeout;
171
- // When in_trigger becomes true, set visualTrigger to true immediately
172
- if (storedata.in_trigger) {
173
- setVisualTrigger(true);
174
- } else if (visualTrigger) {
175
- // When in_trigger becomes false, wait for a minimum duration before setting visualTrigger to false
176
- timeoutId = setTimeout(() => setVisualTrigger(false), 200); // 50ms or any other duration you see fit
177
- }
178
-
179
- return () => clearTimeout(timeoutId); // Cleanup timeout on component unmount or state changes
180
- }, [storedata.in_trigger, visualTrigger]);
181
-
182
- return (
183
- <>
184
- {/* <NodeResizeControl
185
- minWidth={100}
186
- minHeight={100}
187
- className="noderesizecontrol"
188
- >
189
- <ExpandIcon fontSize="inherit" className="noderesizeicon" />
190
- </NodeResizeControl> */}
191
- <div
192
- className={
193
- "innernode" +
194
- (visualTrigger ? " intrigger" : "") +
195
- (storedata.error ? " error" : "")
196
- }
197
- >
198
- <NodeHeader node_data={storedata} />
199
- <NodeName node_data={storedata} />
200
- <NodeBody node_data={storedata} />
201
- <NodeFooter node_data={storedata} />
202
- </div>
203
- </>
204
- );
205
- };
206
-
207
- export default DefaultNode;
208
- export {};
@@ -1,18 +0,0 @@
1
- .context-menu {
2
- background: white;
3
- border-style: solid;
4
- box-shadow: 10px 19px 20px rgba(0, 0, 0, 10%);
5
- position: absolute;
6
- }
7
-
8
- .context-menu button {
9
- border: none;
10
- display: block;
11
- padding: 0.5em;
12
- text-align: left;
13
- width: 100%;
14
- }
15
-
16
- .context-menu button:hover {
17
- background: white;
18
- }
@@ -1,37 +0,0 @@
1
- .colorspace {
2
- margin: 0.2rem;
3
- &_title {
4
- font-size: 0.7em;
5
- font-weight: bold;
6
- }
7
-
8
- display: grid;
9
- grid-template-columns: auto minmax(0, 1fr);
10
-
11
- & label {
12
- font-size: 0.7rem;
13
- }
14
- & input {
15
- font-size: 0.7rem;
16
- max-height: 0.7rem;
17
- }
18
- & input[type="range"] {
19
- width: 100%;
20
- margin: 0;
21
- padding: 0;
22
- -webkit-appearance: none;
23
- background-color: #666;
24
- height: 0.7rem;
25
- border-radius: 5px;
26
-
27
- &::-webkit-slider-thumb,
28
- &::-webkit-range-thumb,
29
- &::-moz-range-thumb {
30
- width: 0.7rem;
31
- height: 0.7rem;
32
- background-color: #cc1c1c;
33
- border-radius: 50%;
34
- cursor: pointer;
35
- }
36
- }
37
- }
@@ -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
- }