@uipath/apollo-react 6.1.0 → 6.2.0

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 (108) hide show
  1. package/dist/canvas/components/JsonTree/DecorationChip.cjs +81 -0
  2. package/dist/canvas/components/JsonTree/DecorationChip.d.ts +5 -0
  3. package/dist/canvas/components/JsonTree/DecorationChip.d.ts.map +1 -0
  4. package/dist/canvas/components/JsonTree/DecorationChip.js +47 -0
  5. package/dist/canvas/components/JsonTree/EditorChrome.cjs +93 -0
  6. package/dist/canvas/components/JsonTree/EditorChrome.d.ts +18 -0
  7. package/dist/canvas/components/JsonTree/EditorChrome.d.ts.map +1 -0
  8. package/dist/canvas/components/JsonTree/EditorChrome.js +56 -0
  9. package/dist/canvas/components/JsonTree/JsonContainerEditor.cjs +104 -0
  10. package/dist/canvas/components/JsonTree/JsonContainerEditor.d.ts +10 -0
  11. package/dist/canvas/components/JsonTree/JsonContainerEditor.d.ts.map +1 -0
  12. package/dist/canvas/components/JsonTree/JsonContainerEditor.js +70 -0
  13. package/dist/canvas/components/JsonTree/JsonLeafValueEditor.cjs +98 -0
  14. package/dist/canvas/components/JsonTree/JsonLeafValueEditor.d.ts +9 -0
  15. package/dist/canvas/components/JsonTree/JsonLeafValueEditor.d.ts.map +1 -0
  16. package/dist/canvas/components/JsonTree/JsonLeafValueEditor.js +64 -0
  17. package/dist/canvas/components/JsonTree/JsonMultilineLeafEditor.cjs +86 -0
  18. package/dist/canvas/components/JsonTree/JsonMultilineLeafEditor.d.ts +9 -0
  19. package/dist/canvas/components/JsonTree/JsonMultilineLeafEditor.d.ts.map +1 -0
  20. package/dist/canvas/components/JsonTree/JsonMultilineLeafEditor.js +52 -0
  21. package/dist/canvas/components/JsonTree/JsonTree.cjs +165 -0
  22. package/dist/canvas/components/JsonTree/JsonTree.d.ts +23 -0
  23. package/dist/canvas/components/JsonTree/JsonTree.d.ts.map +1 -0
  24. package/dist/canvas/components/JsonTree/JsonTree.js +131 -0
  25. package/dist/canvas/components/JsonTree/JsonTree.types.cjs +18 -0
  26. package/dist/canvas/components/JsonTree/JsonTree.types.d.ts +110 -0
  27. package/dist/canvas/components/JsonTree/JsonTree.types.d.ts.map +1 -0
  28. package/dist/canvas/components/JsonTree/JsonTree.types.js +0 -0
  29. package/dist/canvas/components/JsonTree/JsonTreeRow.cjs +358 -0
  30. package/dist/canvas/components/JsonTree/JsonTreeRow.d.ts +35 -0
  31. package/dist/canvas/components/JsonTree/JsonTreeRow.d.ts.map +1 -0
  32. package/dist/canvas/components/JsonTree/JsonTreeRow.js +321 -0
  33. package/dist/canvas/components/JsonTree/JsonTreeToolbar.cjs +224 -0
  34. package/dist/canvas/components/JsonTree/JsonTreeToolbar.d.ts +17 -0
  35. package/dist/canvas/components/JsonTree/JsonTreeToolbar.d.ts.map +1 -0
  36. package/dist/canvas/components/JsonTree/JsonTreeToolbar.js +190 -0
  37. package/dist/canvas/components/JsonTree/JsonTypeBadge.cjs +70 -0
  38. package/dist/canvas/components/JsonTree/JsonTypeBadge.d.ts +10 -0
  39. package/dist/canvas/components/JsonTree/JsonTypeBadge.d.ts.map +1 -0
  40. package/dist/canvas/components/JsonTree/JsonTypeBadge.js +36 -0
  41. package/dist/canvas/components/JsonTree/NodeKey.cjs +86 -0
  42. package/dist/canvas/components/JsonTree/NodeKey.d.ts +10 -0
  43. package/dist/canvas/components/JsonTree/NodeKey.d.ts.map +1 -0
  44. package/dist/canvas/components/JsonTree/NodeKey.js +52 -0
  45. package/dist/canvas/components/JsonTree/RowActions.cjs +114 -0
  46. package/dist/canvas/components/JsonTree/RowActions.d.ts +8 -0
  47. package/dist/canvas/components/JsonTree/RowActions.d.ts.map +1 -0
  48. package/dist/canvas/components/JsonTree/RowActions.js +80 -0
  49. package/dist/canvas/components/JsonTree/ScalarValueCell.cjs +132 -0
  50. package/dist/canvas/components/JsonTree/ScalarValueCell.d.ts +12 -0
  51. package/dist/canvas/components/JsonTree/ScalarValueCell.d.ts.map +1 -0
  52. package/dist/canvas/components/JsonTree/ScalarValueCell.js +95 -0
  53. package/dist/canvas/components/JsonTree/buildJsonTree.cjs +321 -0
  54. package/dist/canvas/components/JsonTree/buildJsonTree.d.ts +37 -0
  55. package/dist/canvas/components/JsonTree/buildJsonTree.d.ts.map +1 -0
  56. package/dist/canvas/components/JsonTree/buildJsonTree.js +254 -0
  57. package/dist/canvas/components/JsonTree/clipboard.cjs +63 -0
  58. package/dist/canvas/components/JsonTree/clipboard.d.ts +2 -0
  59. package/dist/canvas/components/JsonTree/clipboard.d.ts.map +1 -0
  60. package/dist/canvas/components/JsonTree/clipboard.js +29 -0
  61. package/dist/canvas/components/JsonTree/index.cjs +114 -0
  62. package/dist/canvas/components/JsonTree/index.d.ts +10 -0
  63. package/dist/canvas/components/JsonTree/index.d.ts.map +1 -0
  64. package/dist/canvas/components/JsonTree/index.js +9 -0
  65. package/dist/canvas/components/JsonTree/leafEditTypes.cjs +74 -0
  66. package/dist/canvas/components/JsonTree/leafEditTypes.d.ts +6 -0
  67. package/dist/canvas/components/JsonTree/leafEditTypes.d.ts.map +1 -0
  68. package/dist/canvas/components/JsonTree/leafEditTypes.js +34 -0
  69. package/dist/canvas/components/NodeIOView/NodeIOView.cjs +254 -0
  70. package/dist/canvas/components/NodeIOView/NodeIOView.d.ts +3 -0
  71. package/dist/canvas/components/NodeIOView/NodeIOView.d.ts.map +1 -0
  72. package/dist/canvas/components/NodeIOView/NodeIOView.js +220 -0
  73. package/dist/canvas/components/NodeIOView/NodeIOView.types.cjs +18 -0
  74. package/dist/canvas/components/NodeIOView/NodeIOView.types.d.ts +38 -0
  75. package/dist/canvas/components/NodeIOView/NodeIOView.types.d.ts.map +1 -0
  76. package/dist/canvas/components/NodeIOView/NodeIOView.types.js +0 -0
  77. package/dist/canvas/components/NodeIOView/PanelTitleBar.cjs +78 -0
  78. package/dist/canvas/components/NodeIOView/PanelTitleBar.d.ts +10 -0
  79. package/dist/canvas/components/NodeIOView/PanelTitleBar.d.ts.map +1 -0
  80. package/dist/canvas/components/NodeIOView/PanelTitleBar.js +44 -0
  81. package/dist/canvas/components/NodeIOView/index.cjs +72 -0
  82. package/dist/canvas/components/NodeIOView/index.d.ts +4 -0
  83. package/dist/canvas/components/NodeIOView/index.d.ts.map +1 -0
  84. package/dist/canvas/components/NodeIOView/index.js +3 -0
  85. package/dist/canvas/components/index.cjs +62 -48
  86. package/dist/canvas/components/index.d.ts +4 -2
  87. package/dist/canvas/components/index.d.ts.map +1 -1
  88. package/dist/canvas/components/index.js +4 -2
  89. package/dist/canvas/controls/NodeOutputModeSelect/NodeOutputModeSelect.cjs +184 -0
  90. package/dist/canvas/controls/NodeOutputModeSelect/NodeOutputModeSelect.d.ts +18 -0
  91. package/dist/canvas/controls/NodeOutputModeSelect/NodeOutputModeSelect.d.ts.map +1 -0
  92. package/dist/canvas/controls/NodeOutputModeSelect/NodeOutputModeSelect.js +144 -0
  93. package/dist/canvas/controls/NodeOutputModeSelect/index.cjs +42 -0
  94. package/dist/canvas/controls/NodeOutputModeSelect/index.d.ts +2 -0
  95. package/dist/canvas/controls/NodeOutputModeSelect/index.d.ts.map +1 -0
  96. package/dist/canvas/controls/NodeOutputModeSelect/index.js +2 -0
  97. package/dist/canvas/controls/index.cjs +14 -4
  98. package/dist/canvas/controls/index.d.ts +1 -0
  99. package/dist/canvas/controls/index.d.ts.map +1 -1
  100. package/dist/canvas/controls/index.js +2 -1
  101. package/dist/canvas/locales/en.cjs +1 -1
  102. package/dist/canvas/locales/en.d.ts.map +1 -1
  103. package/dist/canvas/locales/en.js +1 -1
  104. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  105. package/dist/i18n/useSafeLingui.cjs +21 -4
  106. package/dist/i18n/useSafeLingui.d.ts.map +1 -1
  107. package/dist/i18n/useSafeLingui.js +21 -4
  108. package/package.json +4 -3
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ NodeIOView: ()=>NodeIOView
28
+ });
29
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
+ const apollo_wind_namespaceObject = require("@uipath/apollo-wind");
31
+ const external_lucide_react_namespaceObject = require("lucide-react");
32
+ const external_react_namespaceObject = require("react");
33
+ const index_cjs_namespaceObject = require("../../../i18n/index.cjs");
34
+ const external_JsonTree_index_cjs_namespaceObject = require("../JsonTree/index.cjs");
35
+ const external_PanelTitleBar_cjs_namespaceObject = require("./PanelTitleBar.cjs");
36
+ const TAB_LIST_CLASS = 'h-auto justify-start gap-0.5 rounded-lg bg-transparent p-0 text-muted-foreground';
37
+ const TAB_TRIGGER_CLASS = 'inline-flex h-6 shrink-0 items-center whitespace-nowrap rounded-md px-2.5 text-xs font-medium text-muted-foreground shadow-none transition-colors hover:text-foreground data-[state=active]:bg-surface-overlay data-[state=active]:text-foreground data-[state=active]:shadow-sm';
38
+ function NodeIOView({ schema, value, onValueChange, basePath, readOnly = false, title, titleIcon, titleBadge, titleTrailing, searchPlaceholder, emptyMessage, jsonView, extraTabs, defaultTab, onTabChange, beforeContent, rowWrapper, filters, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions, renderCodeEditor, pathForCopy, onCopy, defaultCollapsedDepth = 2, className }) {
39
+ const { _ } = (0, index_cjs_namespaceObject.useSafeLingui)();
40
+ const nodes = (0, external_react_namespaceObject.useMemo)(()=>(0, external_JsonTree_index_cjs_namespaceObject.buildJsonTree)({
41
+ schema,
42
+ value,
43
+ basePath
44
+ }), [
45
+ schema,
46
+ value,
47
+ basePath
48
+ ]);
49
+ const containerPaths = (0, external_react_namespaceObject.useMemo)(()=>(0, external_JsonTree_index_cjs_namespaceObject.collectContainerPaths)(nodes), [
50
+ nodes
51
+ ]);
52
+ const [query, setQuery] = (0, external_react_namespaceObject.useState)('');
53
+ const [activeFilterId, setActiveFilterId] = (0, external_react_namespaceObject.useState)(null);
54
+ const activeFilter = filters?.find((f)=>f.id === activeFilterId);
55
+ const [collapsed, setCollapsed] = (0, external_react_namespaceObject.useState)(()=>Object.fromEntries(containerPaths.filter((c)=>c.depth >= defaultCollapsedDepth).map((c)=>[
56
+ c.path,
57
+ true
58
+ ])));
59
+ const [selectedTab, setSelectedTab] = (0, external_react_namespaceObject.useState)(defaultTab ?? 'schema');
60
+ const activeTab = (0, external_react_namespaceObject.useMemo)(()=>{
61
+ const validIds = new Set([
62
+ 'schema',
63
+ 'json',
64
+ ...extraTabs?.map((tab)=>tab.id) ?? []
65
+ ]);
66
+ return validIds.has(selectedTab) ? selectedTab : 'schema';
67
+ }, [
68
+ selectedTab,
69
+ extraTabs
70
+ ]);
71
+ const handleTabChange = (tabId)=>{
72
+ setSelectedTab(tabId);
73
+ onTabChange?.(tabId);
74
+ };
75
+ const tabs = (0, external_react_namespaceObject.useMemo)(()=>[
76
+ {
77
+ id: 'schema',
78
+ label: _({
79
+ id: 'canvas.json_value_panel.schema_tab',
80
+ message: 'Schema'
81
+ })
82
+ },
83
+ {
84
+ id: 'json',
85
+ label: _({
86
+ id: 'canvas.json_value_panel.json_tab',
87
+ message: 'JSON'
88
+ })
89
+ },
90
+ ...extraTabs?.map((tab)=>({
91
+ id: tab.id,
92
+ label: tab.label
93
+ })) ?? []
94
+ ], [
95
+ extraTabs,
96
+ _
97
+ ]);
98
+ const useTabDropdown = (extraTabs?.length ?? 0) > 0;
99
+ const activeTabLabel = tabs.find((tab)=>tab.id === activeTab)?.label ?? tabs[0].label;
100
+ const tabSwitcher = useTabDropdown ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.DropdownMenu, {
101
+ children: [
102
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.DropdownMenuTrigger, {
103
+ asChild: true,
104
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.Button, {
105
+ variant: "ghost",
106
+ size: "3xs",
107
+ className: "gap-1 px-2 text-foreground",
108
+ "aria-label": _({
109
+ id: 'canvas.json_value_panel.view_switcher',
110
+ message: 'View: {label}',
111
+ values: {
112
+ label: activeTabLabel
113
+ }
114
+ }),
115
+ children: [
116
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
117
+ className: "text-xs font-medium",
118
+ children: activeTabLabel
119
+ }),
120
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.ChevronDown, {
121
+ size: 13,
122
+ className: "text-foreground-subtle"
123
+ })
124
+ ]
125
+ })
126
+ }),
127
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.DropdownMenuContent, {
128
+ align: "start",
129
+ className: "w-44",
130
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.DropdownMenuRadioGroup, {
131
+ value: activeTab,
132
+ onValueChange: handleTabChange,
133
+ children: tabs.map((tab)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.DropdownMenuRadioItem, {
134
+ value: tab.id,
135
+ className: "cursor-pointer text-[11px] [&>span:first-child]:text-foreground-accent",
136
+ children: tab.label
137
+ }, tab.id))
138
+ })
139
+ })
140
+ ]
141
+ }) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.TabsList, {
142
+ className: TAB_LIST_CLASS,
143
+ children: tabs.map((tab)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.TabsTrigger, {
144
+ value: tab.id,
145
+ className: TAB_TRIGGER_CLASS,
146
+ children: tab.label
147
+ }, tab.id))
148
+ });
149
+ const allCollapsed = containerPaths.length > 0 && containerPaths.every((c)=>collapsed[c.path]);
150
+ const toggleCollapsed = (path)=>setCollapsed((prev)=>({
151
+ ...prev,
152
+ [path]: !prev[path]
153
+ }));
154
+ const toggleAll = ()=>{
155
+ setCollapsed(allCollapsed ? {} : Object.fromEntries(containerPaths.map((c)=>[
156
+ c.path,
157
+ true
158
+ ])));
159
+ };
160
+ const handleEdit = (node, nodeValue)=>{
161
+ const next = void 0 === nodeValue ? (0, external_JsonTree_index_cjs_namespaceObject.removeValueAtPath)(value, node.segments) : (0, external_JsonTree_index_cjs_namespaceObject.setValueAtPath)(value, node.segments, nodeValue);
162
+ onValueChange?.(next ?? {}, {
163
+ path: node.path,
164
+ segments: node.segments,
165
+ value: nodeValue,
166
+ previous: node.value
167
+ });
168
+ };
169
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
170
+ className: (0, apollo_wind_namespaceObject.cn)('flex h-full min-h-0 flex-col gap-4', className),
171
+ children: [
172
+ title && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_PanelTitleBar_cjs_namespaceObject.PanelTitleBar, {
173
+ icon: titleIcon,
174
+ title: title,
175
+ badge: titleBadge,
176
+ trailing: titleTrailing,
177
+ className: "shrink-0"
178
+ }),
179
+ beforeContent && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
180
+ className: "shrink-0",
181
+ children: beforeContent
182
+ }),
183
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.Tabs, {
184
+ value: activeTab,
185
+ onValueChange: handleTabChange,
186
+ className: "flex min-h-0 flex-1 flex-col gap-2",
187
+ children: [
188
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTree_index_cjs_namespaceObject.JsonTreeToolbar, {
189
+ query: query,
190
+ onQueryChange: setQuery,
191
+ searchPlaceholder: searchPlaceholder,
192
+ filters: filters,
193
+ activeFilterId: activeFilterId,
194
+ onFilterChange: setActiveFilterId,
195
+ allCollapsed: allCollapsed,
196
+ onToggleAll: containerPaths.length > 0 ? toggleAll : void 0,
197
+ leading: tabSwitcher,
198
+ controlsHidden: 'schema' !== activeTab,
199
+ className: "shrink-0"
200
+ }),
201
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.TabsContent, {
202
+ value: "schema",
203
+ className: "mt-0 flex min-h-0 flex-1 flex-col",
204
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
205
+ className: "min-h-0 flex-1 overflow-hidden rounded-xl border border-surface-overlay bg-surface-overlay/40",
206
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTree_index_cjs_namespaceObject.JsonTree, {
207
+ nodes: nodes,
208
+ collapsed: collapsed,
209
+ onToggleCollapsed: toggleCollapsed,
210
+ query: query,
211
+ filterPredicate: activeFilter?.predicate,
212
+ readOnly: readOnly || !onValueChange,
213
+ onEdit: handleEdit,
214
+ rowWrapper: rowWrapper,
215
+ decorateNode: decorateNode,
216
+ deriveTypeIcon: deriveTypeIcon,
217
+ renderValue: renderValue,
218
+ nodeActions: nodeActions,
219
+ maxInlineActions: maxInlineActions,
220
+ renderCodeEditor: renderCodeEditor,
221
+ pathForCopy: pathForCopy,
222
+ onCopy: onCopy,
223
+ emptyMessage: emptyMessage
224
+ })
225
+ })
226
+ }),
227
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.TabsContent, {
228
+ value: "json",
229
+ className: "mt-0 flex min-h-0 flex-1 flex-col",
230
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
231
+ className: "min-h-0 flex-1 overflow-hidden rounded-xl border border-surface-overlay bg-surface-overlay/40",
232
+ children: jsonView ?? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("pre", {
233
+ className: "h-full overflow-auto p-3 font-mono text-xs leading-4.5 text-foreground",
234
+ children: JSON.stringify(value ?? null, null, 2)
235
+ })
236
+ })
237
+ }),
238
+ extraTabs?.map((tab)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.TabsContent, {
239
+ value: tab.id,
240
+ className: "mt-0 flex min-h-0 flex-1 flex-col",
241
+ children: tab.content
242
+ }, tab.id))
243
+ ]
244
+ })
245
+ ]
246
+ });
247
+ }
248
+ exports.NodeIOView = __webpack_exports__.NodeIOView;
249
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
250
+ "NodeIOView"
251
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
252
+ Object.defineProperty(exports, '__esModule', {
253
+ value: true
254
+ });
@@ -0,0 +1,3 @@
1
+ import type { NodeIOViewProps } from './NodeIOView.types';
2
+ export declare function NodeIOView({ schema, value, onValueChange, basePath, readOnly, title, titleIcon, titleBadge, titleTrailing, searchPlaceholder, emptyMessage, jsonView, extraTabs, defaultTab, onTabChange, beforeContent, rowWrapper, filters, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions, renderCodeEditor, pathForCopy, onCopy, defaultCollapsedDepth, className, }: NodeIOViewProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=NodeIOView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeIOView.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/NodeIOView/NodeIOView.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAyC1D,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,KAAK,EACL,aAAa,EACb,QAAQ,EACR,QAAgB,EAChB,KAAK,EACL,SAAS,EACT,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,MAAM,EACN,qBAAyB,EACzB,SAAS,GACV,EAAE,eAAe,2CAqMjB"}
@@ -0,0 +1,220 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, Tabs, TabsContent, TabsList, TabsTrigger, cn } from "@uipath/apollo-wind";
3
+ import { ChevronDown } from "lucide-react";
4
+ import { useMemo, useState } from "react";
5
+ import { useSafeLingui } from "../../../i18n/index.js";
6
+ import { JsonTree, JsonTreeToolbar, buildJsonTree, collectContainerPaths, removeValueAtPath, setValueAtPath } from "../JsonTree/index.js";
7
+ import { PanelTitleBar } from "./PanelTitleBar.js";
8
+ const TAB_LIST_CLASS = 'h-auto justify-start gap-0.5 rounded-lg bg-transparent p-0 text-muted-foreground';
9
+ const TAB_TRIGGER_CLASS = 'inline-flex h-6 shrink-0 items-center whitespace-nowrap rounded-md px-2.5 text-xs font-medium text-muted-foreground shadow-none transition-colors hover:text-foreground data-[state=active]:bg-surface-overlay data-[state=active]:text-foreground data-[state=active]:shadow-sm';
10
+ function NodeIOView({ schema, value, onValueChange, basePath, readOnly = false, title, titleIcon, titleBadge, titleTrailing, searchPlaceholder, emptyMessage, jsonView, extraTabs, defaultTab, onTabChange, beforeContent, rowWrapper, filters, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions, renderCodeEditor, pathForCopy, onCopy, defaultCollapsedDepth = 2, className }) {
11
+ const { _ } = useSafeLingui();
12
+ const nodes = useMemo(()=>buildJsonTree({
13
+ schema,
14
+ value,
15
+ basePath
16
+ }), [
17
+ schema,
18
+ value,
19
+ basePath
20
+ ]);
21
+ const containerPaths = useMemo(()=>collectContainerPaths(nodes), [
22
+ nodes
23
+ ]);
24
+ const [query, setQuery] = useState('');
25
+ const [activeFilterId, setActiveFilterId] = useState(null);
26
+ const activeFilter = filters?.find((f)=>f.id === activeFilterId);
27
+ const [collapsed, setCollapsed] = useState(()=>Object.fromEntries(containerPaths.filter((c)=>c.depth >= defaultCollapsedDepth).map((c)=>[
28
+ c.path,
29
+ true
30
+ ])));
31
+ const [selectedTab, setSelectedTab] = useState(defaultTab ?? 'schema');
32
+ const activeTab = useMemo(()=>{
33
+ const validIds = new Set([
34
+ 'schema',
35
+ 'json',
36
+ ...extraTabs?.map((tab)=>tab.id) ?? []
37
+ ]);
38
+ return validIds.has(selectedTab) ? selectedTab : 'schema';
39
+ }, [
40
+ selectedTab,
41
+ extraTabs
42
+ ]);
43
+ const handleTabChange = (tabId)=>{
44
+ setSelectedTab(tabId);
45
+ onTabChange?.(tabId);
46
+ };
47
+ const tabs = useMemo(()=>[
48
+ {
49
+ id: 'schema',
50
+ label: _({
51
+ id: 'canvas.json_value_panel.schema_tab',
52
+ message: 'Schema'
53
+ })
54
+ },
55
+ {
56
+ id: 'json',
57
+ label: _({
58
+ id: 'canvas.json_value_panel.json_tab',
59
+ message: 'JSON'
60
+ })
61
+ },
62
+ ...extraTabs?.map((tab)=>({
63
+ id: tab.id,
64
+ label: tab.label
65
+ })) ?? []
66
+ ], [
67
+ extraTabs,
68
+ _
69
+ ]);
70
+ const useTabDropdown = (extraTabs?.length ?? 0) > 0;
71
+ const activeTabLabel = tabs.find((tab)=>tab.id === activeTab)?.label ?? tabs[0].label;
72
+ const tabSwitcher = useTabDropdown ? /*#__PURE__*/ jsxs(DropdownMenu, {
73
+ children: [
74
+ /*#__PURE__*/ jsx(DropdownMenuTrigger, {
75
+ asChild: true,
76
+ children: /*#__PURE__*/ jsxs(Button, {
77
+ variant: "ghost",
78
+ size: "3xs",
79
+ className: "gap-1 px-2 text-foreground",
80
+ "aria-label": _({
81
+ id: 'canvas.json_value_panel.view_switcher',
82
+ message: 'View: {label}',
83
+ values: {
84
+ label: activeTabLabel
85
+ }
86
+ }),
87
+ children: [
88
+ /*#__PURE__*/ jsx("span", {
89
+ className: "text-xs font-medium",
90
+ children: activeTabLabel
91
+ }),
92
+ /*#__PURE__*/ jsx(ChevronDown, {
93
+ size: 13,
94
+ className: "text-foreground-subtle"
95
+ })
96
+ ]
97
+ })
98
+ }),
99
+ /*#__PURE__*/ jsx(DropdownMenuContent, {
100
+ align: "start",
101
+ className: "w-44",
102
+ children: /*#__PURE__*/ jsx(DropdownMenuRadioGroup, {
103
+ value: activeTab,
104
+ onValueChange: handleTabChange,
105
+ children: tabs.map((tab)=>/*#__PURE__*/ jsx(DropdownMenuRadioItem, {
106
+ value: tab.id,
107
+ className: "cursor-pointer text-[11px] [&>span:first-child]:text-foreground-accent",
108
+ children: tab.label
109
+ }, tab.id))
110
+ })
111
+ })
112
+ ]
113
+ }) : /*#__PURE__*/ jsx(TabsList, {
114
+ className: TAB_LIST_CLASS,
115
+ children: tabs.map((tab)=>/*#__PURE__*/ jsx(TabsTrigger, {
116
+ value: tab.id,
117
+ className: TAB_TRIGGER_CLASS,
118
+ children: tab.label
119
+ }, tab.id))
120
+ });
121
+ const allCollapsed = containerPaths.length > 0 && containerPaths.every((c)=>collapsed[c.path]);
122
+ const toggleCollapsed = (path)=>setCollapsed((prev)=>({
123
+ ...prev,
124
+ [path]: !prev[path]
125
+ }));
126
+ const toggleAll = ()=>{
127
+ setCollapsed(allCollapsed ? {} : Object.fromEntries(containerPaths.map((c)=>[
128
+ c.path,
129
+ true
130
+ ])));
131
+ };
132
+ const handleEdit = (node, nodeValue)=>{
133
+ const next = void 0 === nodeValue ? removeValueAtPath(value, node.segments) : setValueAtPath(value, node.segments, nodeValue);
134
+ onValueChange?.(next ?? {}, {
135
+ path: node.path,
136
+ segments: node.segments,
137
+ value: nodeValue,
138
+ previous: node.value
139
+ });
140
+ };
141
+ return /*#__PURE__*/ jsxs("div", {
142
+ className: cn('flex h-full min-h-0 flex-col gap-4', className),
143
+ children: [
144
+ title && /*#__PURE__*/ jsx(PanelTitleBar, {
145
+ icon: titleIcon,
146
+ title: title,
147
+ badge: titleBadge,
148
+ trailing: titleTrailing,
149
+ className: "shrink-0"
150
+ }),
151
+ beforeContent && /*#__PURE__*/ jsx("div", {
152
+ className: "shrink-0",
153
+ children: beforeContent
154
+ }),
155
+ /*#__PURE__*/ jsxs(Tabs, {
156
+ value: activeTab,
157
+ onValueChange: handleTabChange,
158
+ className: "flex min-h-0 flex-1 flex-col gap-2",
159
+ children: [
160
+ /*#__PURE__*/ jsx(JsonTreeToolbar, {
161
+ query: query,
162
+ onQueryChange: setQuery,
163
+ searchPlaceholder: searchPlaceholder,
164
+ filters: filters,
165
+ activeFilterId: activeFilterId,
166
+ onFilterChange: setActiveFilterId,
167
+ allCollapsed: allCollapsed,
168
+ onToggleAll: containerPaths.length > 0 ? toggleAll : void 0,
169
+ leading: tabSwitcher,
170
+ controlsHidden: 'schema' !== activeTab,
171
+ className: "shrink-0"
172
+ }),
173
+ /*#__PURE__*/ jsx(TabsContent, {
174
+ value: "schema",
175
+ className: "mt-0 flex min-h-0 flex-1 flex-col",
176
+ children: /*#__PURE__*/ jsx("div", {
177
+ className: "min-h-0 flex-1 overflow-hidden rounded-xl border border-surface-overlay bg-surface-overlay/40",
178
+ children: /*#__PURE__*/ jsx(JsonTree, {
179
+ nodes: nodes,
180
+ collapsed: collapsed,
181
+ onToggleCollapsed: toggleCollapsed,
182
+ query: query,
183
+ filterPredicate: activeFilter?.predicate,
184
+ readOnly: readOnly || !onValueChange,
185
+ onEdit: handleEdit,
186
+ rowWrapper: rowWrapper,
187
+ decorateNode: decorateNode,
188
+ deriveTypeIcon: deriveTypeIcon,
189
+ renderValue: renderValue,
190
+ nodeActions: nodeActions,
191
+ maxInlineActions: maxInlineActions,
192
+ renderCodeEditor: renderCodeEditor,
193
+ pathForCopy: pathForCopy,
194
+ onCopy: onCopy,
195
+ emptyMessage: emptyMessage
196
+ })
197
+ })
198
+ }),
199
+ /*#__PURE__*/ jsx(TabsContent, {
200
+ value: "json",
201
+ className: "mt-0 flex min-h-0 flex-1 flex-col",
202
+ children: /*#__PURE__*/ jsx("div", {
203
+ className: "min-h-0 flex-1 overflow-hidden rounded-xl border border-surface-overlay bg-surface-overlay/40",
204
+ children: jsonView ?? /*#__PURE__*/ jsx("pre", {
205
+ className: "h-full overflow-auto p-3 font-mono text-xs leading-4.5 text-foreground",
206
+ children: JSON.stringify(value ?? null, null, 2)
207
+ })
208
+ })
209
+ }),
210
+ extraTabs?.map((tab)=>/*#__PURE__*/ jsx(TabsContent, {
211
+ value: tab.id,
212
+ className: "mt-0 flex min-h-0 flex-1 flex-col",
213
+ children: tab.content
214
+ }, tab.id))
215
+ ]
216
+ })
217
+ ]
218
+ });
219
+ }
220
+ export { NodeIOView };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.r = (exports1)=>{
5
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
6
+ value: 'Module'
7
+ });
8
+ Object.defineProperty(exports1, '__esModule', {
9
+ value: true
10
+ });
11
+ };
12
+ })();
13
+ var __webpack_exports__ = {};
14
+ __webpack_require__.r(__webpack_exports__);
15
+ for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
16
+ Object.defineProperty(exports, '__esModule', {
17
+ value: true
18
+ });
@@ -0,0 +1,38 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { CopyEvent, DeriveTypeIcon, JsonContainer, JsonSchema, JsonTreeChange, JsonTreeFilterOption, JsonTreeNode, JsonTreeRowWrapper, NodeActionsResolver, NodeDecoration, RenderCodeEditor, RenderValueCell } from '../JsonTree/JsonTree.types';
3
+ export interface NodeIOViewTab {
4
+ id: string;
5
+ label: string;
6
+ content: ReactNode;
7
+ }
8
+ export interface NodeIOViewProps {
9
+ schema?: JsonSchema;
10
+ value?: JsonContainer;
11
+ onValueChange?: (next: JsonContainer, change: JsonTreeChange) => void;
12
+ basePath?: string;
13
+ readOnly?: boolean;
14
+ title?: string;
15
+ titleIcon?: ReactNode;
16
+ titleBadge?: string;
17
+ titleTrailing?: ReactNode;
18
+ searchPlaceholder?: string;
19
+ emptyMessage?: string;
20
+ jsonView?: ReactNode;
21
+ extraTabs?: NodeIOViewTab[];
22
+ defaultTab?: string;
23
+ onTabChange?: (tabId: string) => void;
24
+ beforeContent?: ReactNode;
25
+ rowWrapper?: JsonTreeRowWrapper;
26
+ filters?: JsonTreeFilterOption[];
27
+ decorateNode?: (node: JsonTreeNode) => NodeDecoration | undefined;
28
+ deriveTypeIcon?: DeriveTypeIcon;
29
+ renderValue?: RenderValueCell;
30
+ nodeActions?: NodeActionsResolver;
31
+ maxInlineActions?: number;
32
+ renderCodeEditor?: RenderCodeEditor;
33
+ pathForCopy?: (path: string) => string;
34
+ onCopy?: (event: CopyEvent) => void;
35
+ defaultCollapsedDepth?: number;
36
+ className?: string;
37
+ }
38
+ //# sourceMappingURL=NodeIOView.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeIOView.types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/NodeIOView/NodeIOView.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,aAAa;IAE5B,EAAE,EAAE,MAAM,CAAC;IAEX,KAAK,EAAE,MAAM,CAAC;IAEd,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAE9B,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAOtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IAKrB,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAE5B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAKtC,aAAa,CAAC,EAAE,SAAS,CAAC;IAM1B,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAEhC,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAEjC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,cAAc,GAAG,SAAS,CAAC;IAElE,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,WAAW,CAAC,EAAE,eAAe,CAAC;IAM9B,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAElC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAKpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAEvC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAEpC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ PanelTitleBar: ()=>PanelTitleBar
28
+ });
29
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
+ const apollo_wind_namespaceObject = require("@uipath/apollo-wind");
31
+ const external_CanvasTooltip_cjs_namespaceObject = require("../CanvasTooltip.cjs");
32
+ function PanelTitleBar({ icon, title, badge, trailing, className }) {
33
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
34
+ className: (0, apollo_wind_namespaceObject.cn)('flex items-center justify-between gap-2', className),
35
+ children: [
36
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
37
+ className: "flex min-w-0 items-center gap-2",
38
+ children: [
39
+ icon && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
40
+ className: "shrink-0 text-foreground-subtle [&>svg]:size-[13px]",
41
+ children: icon
42
+ }),
43
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasTooltip_cjs_namespaceObject.CanvasTooltip, {
44
+ smartTooltip: true,
45
+ delay: true,
46
+ placement: "bottom",
47
+ content: title,
48
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
49
+ className: "truncate text-xs font-medium text-foreground",
50
+ children: title
51
+ })
52
+ }),
53
+ badge && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasTooltip_cjs_namespaceObject.CanvasTooltip, {
54
+ smartTooltip: true,
55
+ delay: true,
56
+ placement: "bottom",
57
+ content: badge,
58
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
59
+ className: "min-w-0 truncate font-mono text-[10px] text-foreground-muted",
60
+ children: badge
61
+ })
62
+ })
63
+ ]
64
+ }),
65
+ trailing && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
66
+ className: "shrink-0",
67
+ children: trailing
68
+ })
69
+ ]
70
+ });
71
+ }
72
+ exports.PanelTitleBar = __webpack_exports__.PanelTitleBar;
73
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
74
+ "PanelTitleBar"
75
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
76
+ Object.defineProperty(exports, '__esModule', {
77
+ value: true
78
+ });
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface PanelTitleBarProps {
3
+ icon?: ReactNode;
4
+ title: string;
5
+ badge?: string;
6
+ trailing?: ReactNode;
7
+ className?: string;
8
+ }
9
+ export declare function PanelTitleBar({ icon, title, badge, trailing, className }: PanelTitleBarProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=PanelTitleBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelTitleBar.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/NodeIOView/PanelTitleBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,WAAW,kBAAkB;IAEjC,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,KAAK,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,kBAAkB,2CAqB5F"}