@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.
- package/dist/canvas/components/JsonTree/DecorationChip.cjs +81 -0
- package/dist/canvas/components/JsonTree/DecorationChip.d.ts +5 -0
- package/dist/canvas/components/JsonTree/DecorationChip.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/DecorationChip.js +47 -0
- package/dist/canvas/components/JsonTree/EditorChrome.cjs +93 -0
- package/dist/canvas/components/JsonTree/EditorChrome.d.ts +18 -0
- package/dist/canvas/components/JsonTree/EditorChrome.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/EditorChrome.js +56 -0
- package/dist/canvas/components/JsonTree/JsonContainerEditor.cjs +104 -0
- package/dist/canvas/components/JsonTree/JsonContainerEditor.d.ts +10 -0
- package/dist/canvas/components/JsonTree/JsonContainerEditor.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/JsonContainerEditor.js +70 -0
- package/dist/canvas/components/JsonTree/JsonLeafValueEditor.cjs +98 -0
- package/dist/canvas/components/JsonTree/JsonLeafValueEditor.d.ts +9 -0
- package/dist/canvas/components/JsonTree/JsonLeafValueEditor.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/JsonLeafValueEditor.js +64 -0
- package/dist/canvas/components/JsonTree/JsonMultilineLeafEditor.cjs +86 -0
- package/dist/canvas/components/JsonTree/JsonMultilineLeafEditor.d.ts +9 -0
- package/dist/canvas/components/JsonTree/JsonMultilineLeafEditor.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/JsonMultilineLeafEditor.js +52 -0
- package/dist/canvas/components/JsonTree/JsonTree.cjs +165 -0
- package/dist/canvas/components/JsonTree/JsonTree.d.ts +23 -0
- package/dist/canvas/components/JsonTree/JsonTree.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/JsonTree.js +131 -0
- package/dist/canvas/components/JsonTree/JsonTree.types.cjs +18 -0
- package/dist/canvas/components/JsonTree/JsonTree.types.d.ts +110 -0
- package/dist/canvas/components/JsonTree/JsonTree.types.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/JsonTree.types.js +0 -0
- package/dist/canvas/components/JsonTree/JsonTreeRow.cjs +358 -0
- package/dist/canvas/components/JsonTree/JsonTreeRow.d.ts +35 -0
- package/dist/canvas/components/JsonTree/JsonTreeRow.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/JsonTreeRow.js +321 -0
- package/dist/canvas/components/JsonTree/JsonTreeToolbar.cjs +224 -0
- package/dist/canvas/components/JsonTree/JsonTreeToolbar.d.ts +17 -0
- package/dist/canvas/components/JsonTree/JsonTreeToolbar.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/JsonTreeToolbar.js +190 -0
- package/dist/canvas/components/JsonTree/JsonTypeBadge.cjs +70 -0
- package/dist/canvas/components/JsonTree/JsonTypeBadge.d.ts +10 -0
- package/dist/canvas/components/JsonTree/JsonTypeBadge.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/JsonTypeBadge.js +36 -0
- package/dist/canvas/components/JsonTree/NodeKey.cjs +86 -0
- package/dist/canvas/components/JsonTree/NodeKey.d.ts +10 -0
- package/dist/canvas/components/JsonTree/NodeKey.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/NodeKey.js +52 -0
- package/dist/canvas/components/JsonTree/RowActions.cjs +114 -0
- package/dist/canvas/components/JsonTree/RowActions.d.ts +8 -0
- package/dist/canvas/components/JsonTree/RowActions.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/RowActions.js +80 -0
- package/dist/canvas/components/JsonTree/ScalarValueCell.cjs +132 -0
- package/dist/canvas/components/JsonTree/ScalarValueCell.d.ts +12 -0
- package/dist/canvas/components/JsonTree/ScalarValueCell.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/ScalarValueCell.js +95 -0
- package/dist/canvas/components/JsonTree/buildJsonTree.cjs +321 -0
- package/dist/canvas/components/JsonTree/buildJsonTree.d.ts +37 -0
- package/dist/canvas/components/JsonTree/buildJsonTree.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/buildJsonTree.js +254 -0
- package/dist/canvas/components/JsonTree/clipboard.cjs +63 -0
- package/dist/canvas/components/JsonTree/clipboard.d.ts +2 -0
- package/dist/canvas/components/JsonTree/clipboard.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/clipboard.js +29 -0
- package/dist/canvas/components/JsonTree/index.cjs +114 -0
- package/dist/canvas/components/JsonTree/index.d.ts +10 -0
- package/dist/canvas/components/JsonTree/index.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/index.js +9 -0
- package/dist/canvas/components/JsonTree/leafEditTypes.cjs +74 -0
- package/dist/canvas/components/JsonTree/leafEditTypes.d.ts +6 -0
- package/dist/canvas/components/JsonTree/leafEditTypes.d.ts.map +1 -0
- package/dist/canvas/components/JsonTree/leafEditTypes.js +34 -0
- package/dist/canvas/components/NodeIOView/NodeIOView.cjs +254 -0
- package/dist/canvas/components/NodeIOView/NodeIOView.d.ts +3 -0
- package/dist/canvas/components/NodeIOView/NodeIOView.d.ts.map +1 -0
- package/dist/canvas/components/NodeIOView/NodeIOView.js +220 -0
- package/dist/canvas/components/NodeIOView/NodeIOView.types.cjs +18 -0
- package/dist/canvas/components/NodeIOView/NodeIOView.types.d.ts +38 -0
- package/dist/canvas/components/NodeIOView/NodeIOView.types.d.ts.map +1 -0
- package/dist/canvas/components/NodeIOView/NodeIOView.types.js +0 -0
- package/dist/canvas/components/NodeIOView/PanelTitleBar.cjs +78 -0
- package/dist/canvas/components/NodeIOView/PanelTitleBar.d.ts +10 -0
- package/dist/canvas/components/NodeIOView/PanelTitleBar.d.ts.map +1 -0
- package/dist/canvas/components/NodeIOView/PanelTitleBar.js +44 -0
- package/dist/canvas/components/NodeIOView/index.cjs +72 -0
- package/dist/canvas/components/NodeIOView/index.d.ts +4 -0
- package/dist/canvas/components/NodeIOView/index.d.ts.map +1 -0
- package/dist/canvas/components/NodeIOView/index.js +3 -0
- package/dist/canvas/components/index.cjs +62 -48
- package/dist/canvas/components/index.d.ts +4 -2
- package/dist/canvas/components/index.d.ts.map +1 -1
- package/dist/canvas/components/index.js +4 -2
- package/dist/canvas/controls/NodeOutputModeSelect/NodeOutputModeSelect.cjs +184 -0
- package/dist/canvas/controls/NodeOutputModeSelect/NodeOutputModeSelect.d.ts +18 -0
- package/dist/canvas/controls/NodeOutputModeSelect/NodeOutputModeSelect.d.ts.map +1 -0
- package/dist/canvas/controls/NodeOutputModeSelect/NodeOutputModeSelect.js +144 -0
- package/dist/canvas/controls/NodeOutputModeSelect/index.cjs +42 -0
- package/dist/canvas/controls/NodeOutputModeSelect/index.d.ts +2 -0
- package/dist/canvas/controls/NodeOutputModeSelect/index.d.ts.map +1 -0
- package/dist/canvas/controls/NodeOutputModeSelect/index.js +2 -0
- package/dist/canvas/controls/index.cjs +14 -4
- package/dist/canvas/controls/index.d.ts +1 -0
- package/dist/canvas/controls/index.d.ts.map +1 -1
- package/dist/canvas/controls/index.js +2 -1
- package/dist/canvas/locales/en.cjs +1 -1
- package/dist/canvas/locales/en.d.ts.map +1 -1
- package/dist/canvas/locales/en.js +1 -1
- package/dist/canvas/styles/tailwind.canvas.css +1 -1
- package/dist/i18n/useSafeLingui.cjs +21 -4
- package/dist/i18n/useSafeLingui.d.ts.map +1 -1
- package/dist/i18n/useSafeLingui.js +21 -4
- package/package.json +4 -3
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, Input, cn } from "@uipath/apollo-wind";
|
|
3
|
+
import { ChevronsDownUp, ChevronsUpDown, Filter, Search, X } from "lucide-react";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
import { useSafeLingui } from "../../../i18n/index.js";
|
|
6
|
+
import { CanvasTooltip } from "../CanvasTooltip.js";
|
|
7
|
+
const ALL_FILTER_VALUE = '__all__';
|
|
8
|
+
function JsonTreeToolbar({ query, onQueryChange, searchPlaceholder, filters, activeFilterId = null, onFilterChange, allCollapsed = false, onToggleAll, leading, controlsHidden = false, className }) {
|
|
9
|
+
const { _ } = useSafeLingui();
|
|
10
|
+
const [searchOpen, setSearchOpen] = useState(false);
|
|
11
|
+
const activeFilter = filters?.find((f)=>f.id === activeFilterId);
|
|
12
|
+
const resolvedSearchPlaceholder = searchPlaceholder ?? _({
|
|
13
|
+
id: 'canvas.json_value_panel.search_fields',
|
|
14
|
+
message: 'Search fields and values...'
|
|
15
|
+
});
|
|
16
|
+
const filterLabel = activeFilter ? _({
|
|
17
|
+
id: 'canvas.json_value_panel.filter_active',
|
|
18
|
+
message: 'Filter: {label}',
|
|
19
|
+
values: {
|
|
20
|
+
label: activeFilter.label
|
|
21
|
+
}
|
|
22
|
+
}) : _({
|
|
23
|
+
id: 'canvas.json_value_panel.filter',
|
|
24
|
+
message: 'Filter'
|
|
25
|
+
});
|
|
26
|
+
const searchActionLabel = _({
|
|
27
|
+
id: 'canvas.json_value_panel.search_fields_action',
|
|
28
|
+
message: 'Search fields and values'
|
|
29
|
+
});
|
|
30
|
+
const toggleAllLabel = allCollapsed ? _({
|
|
31
|
+
id: 'canvas.json_value_panel.expand_all',
|
|
32
|
+
message: 'Expand all'
|
|
33
|
+
}) : _({
|
|
34
|
+
id: 'canvas.json_value_panel.collapse_all',
|
|
35
|
+
message: 'Collapse all'
|
|
36
|
+
});
|
|
37
|
+
const closeSearch = ()=>{
|
|
38
|
+
onQueryChange('');
|
|
39
|
+
setSearchOpen(false);
|
|
40
|
+
};
|
|
41
|
+
return /*#__PURE__*/ jsxs("div", {
|
|
42
|
+
className: cn('flex items-center gap-1.5', className),
|
|
43
|
+
children: [
|
|
44
|
+
leading,
|
|
45
|
+
!controlsHidden && /*#__PURE__*/ jsxs(Fragment, {
|
|
46
|
+
children: [
|
|
47
|
+
searchOpen ? /*#__PURE__*/ jsxs("div", {
|
|
48
|
+
className: "relative flex min-w-0 flex-1 items-center overflow-hidden",
|
|
49
|
+
children: [
|
|
50
|
+
/*#__PURE__*/ jsx(Search, {
|
|
51
|
+
size: 13,
|
|
52
|
+
className: "pointer-events-none absolute left-2 text-foreground-subtle"
|
|
53
|
+
}),
|
|
54
|
+
/*#__PURE__*/ jsx(Input, {
|
|
55
|
+
autoFocus: true,
|
|
56
|
+
type: "text",
|
|
57
|
+
variant: "ghost",
|
|
58
|
+
size: "xs",
|
|
59
|
+
value: query,
|
|
60
|
+
onChange: (e)=>onQueryChange(e.target.value),
|
|
61
|
+
onKeyDown: (e)=>{
|
|
62
|
+
if ('Escape' === e.key) closeSearch();
|
|
63
|
+
},
|
|
64
|
+
"aria-label": resolvedSearchPlaceholder,
|
|
65
|
+
placeholder: resolvedSearchPlaceholder,
|
|
66
|
+
style: {
|
|
67
|
+
paddingLeft: '1.75rem',
|
|
68
|
+
paddingRight: '1.5rem'
|
|
69
|
+
},
|
|
70
|
+
className: "h-6 w-full text-foreground placeholder:text-foreground-subtle focus-visible:ring-0"
|
|
71
|
+
}),
|
|
72
|
+
/*#__PURE__*/ jsx("button", {
|
|
73
|
+
type: "button",
|
|
74
|
+
onClick: closeSearch,
|
|
75
|
+
"aria-label": _({
|
|
76
|
+
id: 'canvas.json_value_panel.clear_search',
|
|
77
|
+
message: 'Clear search'
|
|
78
|
+
}),
|
|
79
|
+
className: "absolute right-1.5 grid size-4 place-items-center text-foreground-subtle transition hover:text-foreground",
|
|
80
|
+
children: /*#__PURE__*/ jsx(X, {
|
|
81
|
+
size: 12
|
|
82
|
+
})
|
|
83
|
+
})
|
|
84
|
+
]
|
|
85
|
+
}) : /*#__PURE__*/ jsxs(Fragment, {
|
|
86
|
+
children: [
|
|
87
|
+
/*#__PURE__*/ jsx("div", {
|
|
88
|
+
className: "flex-1"
|
|
89
|
+
}),
|
|
90
|
+
/*#__PURE__*/ jsx(CanvasTooltip, {
|
|
91
|
+
content: searchActionLabel,
|
|
92
|
+
placement: "top",
|
|
93
|
+
delay: true,
|
|
94
|
+
children: /*#__PURE__*/ jsx(Button, {
|
|
95
|
+
variant: "ghost",
|
|
96
|
+
size: "3xs",
|
|
97
|
+
icon: true,
|
|
98
|
+
onClick: ()=>setSearchOpen(true),
|
|
99
|
+
"aria-label": searchActionLabel,
|
|
100
|
+
className: "rounded text-foreground-subtle hover:bg-surface-overlay hover:text-foreground",
|
|
101
|
+
children: /*#__PURE__*/ jsx(Search, {
|
|
102
|
+
size: 14
|
|
103
|
+
})
|
|
104
|
+
})
|
|
105
|
+
})
|
|
106
|
+
]
|
|
107
|
+
}),
|
|
108
|
+
!!filters?.length && onFilterChange && /*#__PURE__*/ jsxs(DropdownMenu, {
|
|
109
|
+
children: [
|
|
110
|
+
/*#__PURE__*/ jsx(CanvasTooltip, {
|
|
111
|
+
content: filterLabel,
|
|
112
|
+
placement: "top",
|
|
113
|
+
delay: true,
|
|
114
|
+
children: /*#__PURE__*/ jsx(DropdownMenuTrigger, {
|
|
115
|
+
asChild: true,
|
|
116
|
+
children: /*#__PURE__*/ jsxs(Button, {
|
|
117
|
+
variant: "ghost",
|
|
118
|
+
size: "3xs",
|
|
119
|
+
icon: true,
|
|
120
|
+
"aria-label": filterLabel,
|
|
121
|
+
className: "relative rounded text-foreground-subtle hover:bg-surface-overlay hover:text-foreground",
|
|
122
|
+
children: [
|
|
123
|
+
/*#__PURE__*/ jsx(Filter, {
|
|
124
|
+
size: 14
|
|
125
|
+
}),
|
|
126
|
+
activeFilter && /*#__PURE__*/ jsx("span", {
|
|
127
|
+
className: "absolute right-0.5 top-0.5 size-1.5 rounded-full bg-primary ring-1 ring-surface"
|
|
128
|
+
})
|
|
129
|
+
]
|
|
130
|
+
})
|
|
131
|
+
})
|
|
132
|
+
}),
|
|
133
|
+
/*#__PURE__*/ jsx(DropdownMenuContent, {
|
|
134
|
+
align: "end",
|
|
135
|
+
className: "w-52",
|
|
136
|
+
children: /*#__PURE__*/ jsxs(DropdownMenuRadioGroup, {
|
|
137
|
+
value: activeFilterId ?? ALL_FILTER_VALUE,
|
|
138
|
+
onValueChange: (value)=>onFilterChange(value === ALL_FILTER_VALUE ? null : value),
|
|
139
|
+
children: [
|
|
140
|
+
/*#__PURE__*/ jsx(DropdownMenuRadioItem, {
|
|
141
|
+
value: ALL_FILTER_VALUE,
|
|
142
|
+
className: "text-[11px] [&>span:first-child]:text-foreground-accent",
|
|
143
|
+
children: _({
|
|
144
|
+
id: 'canvas.json_value_panel.filter_all',
|
|
145
|
+
message: 'All'
|
|
146
|
+
})
|
|
147
|
+
}),
|
|
148
|
+
filters.map((filter)=>/*#__PURE__*/ jsxs(DropdownMenuRadioItem, {
|
|
149
|
+
value: filter.id,
|
|
150
|
+
className: "text-[11px] [&>span:first-child]:text-foreground-accent",
|
|
151
|
+
children: [
|
|
152
|
+
/*#__PURE__*/ jsx("span", {
|
|
153
|
+
className: "flex-1 truncate",
|
|
154
|
+
children: filter.label
|
|
155
|
+
}),
|
|
156
|
+
void 0 !== filter.count && /*#__PURE__*/ jsx("span", {
|
|
157
|
+
className: "ml-3 rounded bg-surface-overlay px-1.5 py-0.5 font-mono text-[10px] font-medium leading-none text-foreground-muted",
|
|
158
|
+
children: filter.count
|
|
159
|
+
})
|
|
160
|
+
]
|
|
161
|
+
}, filter.id))
|
|
162
|
+
]
|
|
163
|
+
})
|
|
164
|
+
})
|
|
165
|
+
]
|
|
166
|
+
}),
|
|
167
|
+
onToggleAll && /*#__PURE__*/ jsx(CanvasTooltip, {
|
|
168
|
+
content: toggleAllLabel,
|
|
169
|
+
placement: "top",
|
|
170
|
+
delay: true,
|
|
171
|
+
children: /*#__PURE__*/ jsx(Button, {
|
|
172
|
+
variant: "ghost",
|
|
173
|
+
size: "3xs",
|
|
174
|
+
icon: true,
|
|
175
|
+
onClick: onToggleAll,
|
|
176
|
+
"aria-label": toggleAllLabel,
|
|
177
|
+
className: "rounded text-foreground-subtle hover:bg-surface-overlay hover:text-foreground",
|
|
178
|
+
children: allCollapsed ? /*#__PURE__*/ jsx(ChevronsUpDown, {
|
|
179
|
+
size: 14
|
|
180
|
+
}) : /*#__PURE__*/ jsx(ChevronsDownUp, {
|
|
181
|
+
size: 14
|
|
182
|
+
})
|
|
183
|
+
})
|
|
184
|
+
})
|
|
185
|
+
]
|
|
186
|
+
})
|
|
187
|
+
]
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
export { JsonTreeToolbar };
|
|
@@ -0,0 +1,70 @@
|
|
|
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
|
+
JsonTypeBadge: ()=>JsonTypeBadge
|
|
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_CanvasTooltip_cjs_namespaceObject = require("../CanvasTooltip.cjs");
|
|
33
|
+
const TYPE_ICON = {
|
|
34
|
+
string: external_lucide_react_namespaceObject.Type,
|
|
35
|
+
number: external_lucide_react_namespaceObject.Hash,
|
|
36
|
+
boolean: external_lucide_react_namespaceObject.ToggleLeft,
|
|
37
|
+
object: external_lucide_react_namespaceObject.Braces,
|
|
38
|
+
array: external_lucide_react_namespaceObject.Brackets,
|
|
39
|
+
null: external_lucide_react_namespaceObject.CircleSlash2
|
|
40
|
+
};
|
|
41
|
+
const TYPE_LABEL = {
|
|
42
|
+
string: 'String',
|
|
43
|
+
number: 'Number',
|
|
44
|
+
boolean: 'Boolean',
|
|
45
|
+
object: 'Object',
|
|
46
|
+
array: 'Array',
|
|
47
|
+
null: 'Null'
|
|
48
|
+
};
|
|
49
|
+
function JsonTypeBadge({ type, icon, className, tooltip }) {
|
|
50
|
+
const DefaultIcon = TYPE_ICON[type];
|
|
51
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasTooltip_cjs_namespaceObject.CanvasTooltip, {
|
|
52
|
+
content: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
|
|
53
|
+
className: "break-all font-mono text-xs font-semibold leading-4",
|
|
54
|
+
children: tooltip ?? TYPE_LABEL[type]
|
|
55
|
+
}),
|
|
56
|
+
placement: "top",
|
|
57
|
+
delay: true,
|
|
58
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
|
|
59
|
+
className: (0, apollo_wind_namespaceObject.cn)('inline-flex h-4.5 min-w-4.5 shrink-0 items-center justify-center rounded border border-border bg-surface-overlay px-0.5 text-foreground-muted [&_svg]:size-2.75', className),
|
|
60
|
+
children: icon ?? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(DefaultIcon, {})
|
|
61
|
+
})
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
exports.JsonTypeBadge = __webpack_exports__.JsonTypeBadge;
|
|
65
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
66
|
+
"JsonTypeBadge"
|
|
67
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
68
|
+
Object.defineProperty(exports, '__esModule', {
|
|
69
|
+
value: true
|
|
70
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { JsonTreeNodeType } from './JsonTree.types';
|
|
3
|
+
export interface JsonTypeBadgeProps {
|
|
4
|
+
type: JsonTreeNodeType;
|
|
5
|
+
icon?: ReactNode;
|
|
6
|
+
className?: string;
|
|
7
|
+
tooltip?: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export declare function JsonTypeBadge({ type, icon, className, tooltip }: JsonTypeBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=JsonTypeBadge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonTypeBadge.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/JsonTree/JsonTypeBadge.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAsBzD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAC;IAEvB,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAOD,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,kBAAkB,2CAsBnF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "@uipath/apollo-wind";
|
|
3
|
+
import { Braces, Brackets, CircleSlash2, Hash, ToggleLeft, Type } from "lucide-react";
|
|
4
|
+
import { CanvasTooltip } from "../CanvasTooltip.js";
|
|
5
|
+
const TYPE_ICON = {
|
|
6
|
+
string: Type,
|
|
7
|
+
number: Hash,
|
|
8
|
+
boolean: ToggleLeft,
|
|
9
|
+
object: Braces,
|
|
10
|
+
array: Brackets,
|
|
11
|
+
null: CircleSlash2
|
|
12
|
+
};
|
|
13
|
+
const TYPE_LABEL = {
|
|
14
|
+
string: 'String',
|
|
15
|
+
number: 'Number',
|
|
16
|
+
boolean: 'Boolean',
|
|
17
|
+
object: 'Object',
|
|
18
|
+
array: 'Array',
|
|
19
|
+
null: 'Null'
|
|
20
|
+
};
|
|
21
|
+
function JsonTypeBadge({ type, icon, className, tooltip }) {
|
|
22
|
+
const DefaultIcon = TYPE_ICON[type];
|
|
23
|
+
return /*#__PURE__*/ jsx(CanvasTooltip, {
|
|
24
|
+
content: /*#__PURE__*/ jsx("span", {
|
|
25
|
+
className: "break-all font-mono text-xs font-semibold leading-4",
|
|
26
|
+
children: tooltip ?? TYPE_LABEL[type]
|
|
27
|
+
}),
|
|
28
|
+
placement: "top",
|
|
29
|
+
delay: true,
|
|
30
|
+
children: /*#__PURE__*/ jsx("span", {
|
|
31
|
+
className: cn('inline-flex h-4.5 min-w-4.5 shrink-0 items-center justify-center rounded border border-border bg-surface-overlay px-0.5 text-foreground-muted [&_svg]:size-2.75', className),
|
|
32
|
+
children: icon ?? /*#__PURE__*/ jsx(DefaultIcon, {})
|
|
33
|
+
})
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
export { JsonTypeBadge };
|
|
@@ -0,0 +1,86 @@
|
|
|
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
|
+
NodeKey: ()=>NodeKey
|
|
28
|
+
});
|
|
29
|
+
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
30
|
+
const apollo_wind_namespaceObject = require("@uipath/apollo-wind");
|
|
31
|
+
const index_cjs_namespaceObject = require("../../../i18n/index.cjs");
|
|
32
|
+
const external_CanvasTooltip_cjs_namespaceObject = require("../CanvasTooltip.cjs");
|
|
33
|
+
function NodeKey({ node, label, displayPath, onCopyPath, className }) {
|
|
34
|
+
const { _ } = (0, index_cjs_namespaceObject.useSafeLingui)();
|
|
35
|
+
const text = label ?? node.key;
|
|
36
|
+
const copyPathText = displayPath ?? node.path;
|
|
37
|
+
const keyClass = (0, apollo_wind_namespaceObject.cn)('max-w-[45%] shrink-0 truncate text-xs text-foreground', null != label ? 'font-medium' : 'font-mono', void 0 === node.value && 'text-foreground-muted', className);
|
|
38
|
+
if (!onCopyPath) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
|
|
39
|
+
className: keyClass,
|
|
40
|
+
children: text
|
|
41
|
+
});
|
|
42
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasTooltip_cjs_namespaceObject.CanvasTooltip, {
|
|
43
|
+
placement: "top",
|
|
44
|
+
delay: true,
|
|
45
|
+
content: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
|
|
46
|
+
className: "flex max-w-60 flex-col gap-1",
|
|
47
|
+
children: [
|
|
48
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
|
|
49
|
+
className: "break-all font-mono text-xs font-semibold leading-4",
|
|
50
|
+
children: copyPathText
|
|
51
|
+
}),
|
|
52
|
+
node.schema?.description && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
|
|
53
|
+
className: "text-xs leading-4",
|
|
54
|
+
children: node.schema.description
|
|
55
|
+
}),
|
|
56
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
|
|
57
|
+
className: "text-[11px] leading-4 opacity-70",
|
|
58
|
+
children: _({
|
|
59
|
+
id: 'canvas.json_value_panel.copy_path_hint',
|
|
60
|
+
message: 'Click to copy this path'
|
|
61
|
+
})
|
|
62
|
+
})
|
|
63
|
+
]
|
|
64
|
+
}),
|
|
65
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("button", {
|
|
66
|
+
type: "button",
|
|
67
|
+
onClick: ()=>onCopyPath(node),
|
|
68
|
+
"aria-label": _({
|
|
69
|
+
id: 'canvas.json_value_panel.copy_path_for',
|
|
70
|
+
message: 'Copy path for {path}',
|
|
71
|
+
values: {
|
|
72
|
+
path: copyPathText
|
|
73
|
+
}
|
|
74
|
+
}),
|
|
75
|
+
className: (0, apollo_wind_namespaceObject.cn)(keyClass, 'cursor-pointer decoration-foreground-subtle underline-offset-2 hover:underline'),
|
|
76
|
+
children: text
|
|
77
|
+
})
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
exports.NodeKey = __webpack_exports__.NodeKey;
|
|
81
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
82
|
+
"NodeKey"
|
|
83
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
84
|
+
Object.defineProperty(exports, '__esModule', {
|
|
85
|
+
value: true
|
|
86
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { JsonTreeNode } from './JsonTree.types';
|
|
2
|
+
export interface NodeKeyProps {
|
|
3
|
+
node: JsonTreeNode;
|
|
4
|
+
label?: string;
|
|
5
|
+
displayPath?: string;
|
|
6
|
+
onCopyPath?: (node: JsonTreeNode) => void;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function NodeKey({ node, label, displayPath, onCopyPath, className }: NodeKeyProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=NodeKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeKey.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/JsonTree/NodeKey.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAC;IAEnB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,YAAY,2CAuDxF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "@uipath/apollo-wind";
|
|
3
|
+
import { useSafeLingui } from "../../../i18n/index.js";
|
|
4
|
+
import { CanvasTooltip } from "../CanvasTooltip.js";
|
|
5
|
+
function NodeKey({ node, label, displayPath, onCopyPath, className }) {
|
|
6
|
+
const { _ } = useSafeLingui();
|
|
7
|
+
const text = label ?? node.key;
|
|
8
|
+
const copyPathText = displayPath ?? node.path;
|
|
9
|
+
const keyClass = cn('max-w-[45%] shrink-0 truncate text-xs text-foreground', null != label ? 'font-medium' : 'font-mono', void 0 === node.value && 'text-foreground-muted', className);
|
|
10
|
+
if (!onCopyPath) return /*#__PURE__*/ jsx("span", {
|
|
11
|
+
className: keyClass,
|
|
12
|
+
children: text
|
|
13
|
+
});
|
|
14
|
+
return /*#__PURE__*/ jsx(CanvasTooltip, {
|
|
15
|
+
placement: "top",
|
|
16
|
+
delay: true,
|
|
17
|
+
content: /*#__PURE__*/ jsxs("div", {
|
|
18
|
+
className: "flex max-w-60 flex-col gap-1",
|
|
19
|
+
children: [
|
|
20
|
+
/*#__PURE__*/ jsx("span", {
|
|
21
|
+
className: "break-all font-mono text-xs font-semibold leading-4",
|
|
22
|
+
children: copyPathText
|
|
23
|
+
}),
|
|
24
|
+
node.schema?.description && /*#__PURE__*/ jsx("span", {
|
|
25
|
+
className: "text-xs leading-4",
|
|
26
|
+
children: node.schema.description
|
|
27
|
+
}),
|
|
28
|
+
/*#__PURE__*/ jsx("span", {
|
|
29
|
+
className: "text-[11px] leading-4 opacity-70",
|
|
30
|
+
children: _({
|
|
31
|
+
id: 'canvas.json_value_panel.copy_path_hint',
|
|
32
|
+
message: 'Click to copy this path'
|
|
33
|
+
})
|
|
34
|
+
})
|
|
35
|
+
]
|
|
36
|
+
}),
|
|
37
|
+
children: /*#__PURE__*/ jsx("button", {
|
|
38
|
+
type: "button",
|
|
39
|
+
onClick: ()=>onCopyPath(node),
|
|
40
|
+
"aria-label": _({
|
|
41
|
+
id: 'canvas.json_value_panel.copy_path_for',
|
|
42
|
+
message: 'Copy path for {path}',
|
|
43
|
+
values: {
|
|
44
|
+
path: copyPathText
|
|
45
|
+
}
|
|
46
|
+
}),
|
|
47
|
+
className: cn(keyClass, 'cursor-pointer decoration-foreground-subtle underline-offset-2 hover:underline'),
|
|
48
|
+
children: text
|
|
49
|
+
})
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
export { NodeKey };
|
|
@@ -0,0 +1,114 @@
|
|
|
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
|
+
RowActions: ()=>RowActions
|
|
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 index_cjs_namespaceObject = require("../../../i18n/index.cjs");
|
|
33
|
+
const external_CanvasTooltip_cjs_namespaceObject = require("../CanvasTooltip.cjs");
|
|
34
|
+
const ACTION_BUTTON_CLASS = 'shrink-0 rounded text-foreground-subtle opacity-0 hover:text-foreground hover:bg-surface-raised group-hover:opacity-100 focus-visible:opacity-100';
|
|
35
|
+
const ACTION_TONE_CLASS = {
|
|
36
|
+
neutral: '',
|
|
37
|
+
info: 'text-info hover:text-info',
|
|
38
|
+
warning: 'text-warning hover:text-warning',
|
|
39
|
+
error: 'text-error hover:text-error'
|
|
40
|
+
};
|
|
41
|
+
function RowActions({ node, actions, maxInline }) {
|
|
42
|
+
const { _ } = (0, index_cjs_namespaceObject.useSafeLingui)();
|
|
43
|
+
if (0 === actions.length) return null;
|
|
44
|
+
const overflowing = actions.length > maxInline;
|
|
45
|
+
const inline = overflowing ? actions.slice(0, maxInline - 1) : actions;
|
|
46
|
+
const overflow = overflowing ? actions.slice(maxInline - 1) : [];
|
|
47
|
+
const moreLabel = _({
|
|
48
|
+
id: 'canvas.json_value_panel.more_actions',
|
|
49
|
+
message: 'More actions'
|
|
50
|
+
});
|
|
51
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("span", {
|
|
52
|
+
className: "ml-auto flex shrink-0 items-center gap-0.5",
|
|
53
|
+
children: [
|
|
54
|
+
inline.map((action)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasTooltip_cjs_namespaceObject.CanvasTooltip, {
|
|
55
|
+
content: action.tooltip ?? action.label,
|
|
56
|
+
placement: "top",
|
|
57
|
+
delay: true,
|
|
58
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.Button, {
|
|
59
|
+
variant: "ghost",
|
|
60
|
+
size: "4xs",
|
|
61
|
+
icon: true,
|
|
62
|
+
disabled: action.disabled,
|
|
63
|
+
onClick: ()=>action.onSelect(node),
|
|
64
|
+
"aria-label": action.label,
|
|
65
|
+
className: (0, apollo_wind_namespaceObject.cn)(ACTION_BUTTON_CLASS, '[&_svg]:size-2.75', action.tone && ACTION_TONE_CLASS[action.tone], action.active && 'text-brand opacity-100 hover:text-brand'),
|
|
66
|
+
children: action.icon
|
|
67
|
+
})
|
|
68
|
+
}, action.id)),
|
|
69
|
+
overflow.length > 0 && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.DropdownMenu, {
|
|
70
|
+
children: [
|
|
71
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasTooltip_cjs_namespaceObject.CanvasTooltip, {
|
|
72
|
+
content: moreLabel,
|
|
73
|
+
placement: "top",
|
|
74
|
+
delay: true,
|
|
75
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.DropdownMenuTrigger, {
|
|
76
|
+
asChild: true,
|
|
77
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.Button, {
|
|
78
|
+
variant: "ghost",
|
|
79
|
+
size: "4xs",
|
|
80
|
+
icon: true,
|
|
81
|
+
"aria-label": moreLabel,
|
|
82
|
+
className: (0, apollo_wind_namespaceObject.cn)(ACTION_BUTTON_CLASS, '[&_svg]:size-2.75'),
|
|
83
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.MoreHorizontal, {})
|
|
84
|
+
})
|
|
85
|
+
})
|
|
86
|
+
}),
|
|
87
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.DropdownMenuContent, {
|
|
88
|
+
align: "end",
|
|
89
|
+
className: "min-w-40",
|
|
90
|
+
children: overflow.map((action)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.DropdownMenuItem, {
|
|
91
|
+
disabled: action.disabled,
|
|
92
|
+
onClick: ()=>action.onSelect(node),
|
|
93
|
+
className: (0, apollo_wind_namespaceObject.cn)('gap-2 text-xs', 'error' === action.tone && 'text-error'),
|
|
94
|
+
children: [
|
|
95
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
|
|
96
|
+
className: "grid size-3.5 shrink-0 place-items-center [&_svg]:size-3.5",
|
|
97
|
+
children: action.icon
|
|
98
|
+
}),
|
|
99
|
+
action.label
|
|
100
|
+
]
|
|
101
|
+
}, action.id))
|
|
102
|
+
})
|
|
103
|
+
]
|
|
104
|
+
})
|
|
105
|
+
]
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
exports.RowActions = __webpack_exports__.RowActions;
|
|
109
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
110
|
+
"RowActions"
|
|
111
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
112
|
+
Object.defineProperty(exports, '__esModule', {
|
|
113
|
+
value: true
|
|
114
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { JsonTreeNode, NodeAction } from './JsonTree.types';
|
|
2
|
+
export interface RowActionsProps {
|
|
3
|
+
node: JsonTreeNode;
|
|
4
|
+
actions: NodeAction[];
|
|
5
|
+
maxInline: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function RowActions({ node, actions, maxInline }: RowActionsProps): import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
+
//# sourceMappingURL=RowActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RowActions.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/JsonTree/RowActions.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAsB,MAAM,kBAAkB,CAAC;AAYrF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IAEnB,OAAO,EAAE,UAAU,EAAE,CAAC;IAEtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,eAAe,kDA4EvE"}
|