@uipath/apollo-react 6.49.0 → 6.51.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 (84) hide show
  1. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts +3 -3
  2. package/dist/canvas/components/BaseNode/BaseNode.cjs +4 -3
  3. package/dist/canvas/components/BaseNode/BaseNode.d.ts.map +1 -1
  4. package/dist/canvas/components/BaseNode/BaseNode.js +4 -3
  5. package/dist/canvas/components/BaseNode/BaseNodeContainer.cjs +16 -3
  6. package/dist/canvas/components/BaseNode/BaseNodeContainer.d.ts +1 -1
  7. package/dist/canvas/components/BaseNode/BaseNodeContainer.d.ts.map +1 -1
  8. package/dist/canvas/components/BaseNode/BaseNodeContainer.js +17 -4
  9. package/dist/canvas/components/BaseNode/BaseNodeOutline.cjs +131 -0
  10. package/dist/canvas/components/BaseNode/BaseNodeOutline.d.ts +17 -0
  11. package/dist/canvas/components/BaseNode/BaseNodeOutline.d.ts.map +1 -0
  12. package/dist/canvas/components/BaseNode/BaseNodeOutline.js +91 -0
  13. package/dist/canvas/components/BaseNode/NodeLabel.cjs +8 -7
  14. package/dist/canvas/components/BaseNode/NodeLabel.d.ts +1 -1
  15. package/dist/canvas/components/BaseNode/NodeLabel.d.ts.map +1 -1
  16. package/dist/canvas/components/BaseNode/NodeLabel.js +8 -7
  17. package/dist/canvas/components/CaseFlow/case-flow.manifest.d.ts +3 -3
  18. package/dist/canvas/components/Guardrails/__fixtures__/dnd-geometry.d.ts +3 -0
  19. package/dist/canvas/components/Guardrails/__fixtures__/dnd-geometry.d.ts.map +1 -0
  20. package/dist/canvas/components/Guardrails/__fixtures__/guardrail-list.fixtures.d.ts +9 -0
  21. package/dist/canvas/components/Guardrails/__fixtures__/guardrail-list.fixtures.d.ts.map +1 -0
  22. package/dist/canvas/components/Guardrails/components/guardrail-list-row.cjs +218 -0
  23. package/dist/canvas/components/Guardrails/components/guardrail-list-row.d.ts +26 -0
  24. package/dist/canvas/components/Guardrails/components/guardrail-list-row.d.ts.map +1 -0
  25. package/dist/canvas/components/Guardrails/components/guardrail-list-row.js +184 -0
  26. package/dist/canvas/components/Guardrails/components/guardrail-status-banner.cjs +2 -0
  27. package/dist/canvas/components/Guardrails/components/guardrail-status-banner.d.ts.map +1 -1
  28. package/dist/canvas/components/Guardrails/components/guardrail-status-banner.js +2 -0
  29. package/dist/canvas/components/Guardrails/components/mixed-scopes-banner.cjs +1 -0
  30. package/dist/canvas/components/Guardrails/components/mixed-scopes-banner.d.ts.map +1 -1
  31. package/dist/canvas/components/Guardrails/components/mixed-scopes-banner.js +1 -0
  32. package/dist/canvas/components/Guardrails/guardrail-list-utils.cjs +103 -0
  33. package/dist/canvas/components/Guardrails/guardrail-list-utils.d.ts +10 -0
  34. package/dist/canvas/components/Guardrails/guardrail-list-utils.d.ts.map +1 -0
  35. package/dist/canvas/components/Guardrails/guardrail-list-utils.js +60 -0
  36. package/dist/canvas/components/Guardrails/guardrail-list.cjs +214 -0
  37. package/dist/canvas/components/Guardrails/guardrail-list.d.ts +33 -0
  38. package/dist/canvas/components/Guardrails/guardrail-list.d.ts.map +1 -0
  39. package/dist/canvas/components/Guardrails/guardrail-list.js +180 -0
  40. package/dist/canvas/components/Guardrails/i18n.cjs +124 -16
  41. package/dist/canvas/components/Guardrails/i18n.d.ts +25 -0
  42. package/dist/canvas/components/Guardrails/i18n.d.ts.map +1 -1
  43. package/dist/canvas/components/Guardrails/i18n.js +110 -14
  44. package/dist/canvas/components/Guardrails/index.cjs +40 -3
  45. package/dist/canvas/components/Guardrails/index.d.ts +10 -2
  46. package/dist/canvas/components/Guardrails/index.d.ts.map +1 -1
  47. package/dist/canvas/components/Guardrails/index.js +6 -2
  48. package/dist/canvas/components/Guardrails/list-types.cjs +18 -0
  49. package/dist/canvas/components/Guardrails/list-types.d.ts +51 -0
  50. package/dist/canvas/components/Guardrails/list-types.d.ts.map +1 -0
  51. package/dist/canvas/components/Guardrails/list-types.js +0 -0
  52. package/dist/canvas/locales/en.cjs +1 -1
  53. package/dist/canvas/locales/en.d.ts.map +1 -1
  54. package/dist/canvas/locales/en.js +1 -1
  55. package/dist/canvas/schema/node-definition/index.cjs +17 -5
  56. package/dist/canvas/schema/node-definition/index.d.ts +2 -2
  57. package/dist/canvas/schema/node-definition/index.d.ts.map +1 -1
  58. package/dist/canvas/schema/node-definition/index.js +2 -2
  59. package/dist/canvas/schema/node-definition/node-manifest.d.ts +12 -0
  60. package/dist/canvas/schema/node-definition/node-manifest.d.ts.map +1 -1
  61. package/dist/canvas/schema/node-definition/shape.cjs +29 -2
  62. package/dist/canvas/schema/node-definition/shape.d.ts +9 -0
  63. package/dist/canvas/schema/node-definition/shape.d.ts.map +1 -1
  64. package/dist/canvas/schema/node-definition/shape.js +17 -2
  65. package/dist/canvas/schema/node-instance/base.d.ts +3 -0
  66. package/dist/canvas/schema/node-instance/base.d.ts.map +1 -1
  67. package/dist/canvas/schema/node-instance/node.d.ts +3 -0
  68. package/dist/canvas/schema/node-instance/node.d.ts.map +1 -1
  69. package/dist/canvas/schema/toolbar.d.ts +15 -0
  70. package/dist/canvas/schema/toolbar.d.ts.map +1 -1
  71. package/dist/canvas/storybook-utils/manifests/index.d.ts +3 -3
  72. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  73. package/dist/canvas/styles/variables.css +8 -0
  74. package/dist/canvas/utils/node-size.cjs +2 -1
  75. package/dist/canvas/utils/node-size.d.ts +1 -1
  76. package/dist/canvas/utils/node-size.d.ts.map +1 -1
  77. package/dist/canvas/utils/node-size.js +2 -1
  78. package/package.json +4 -3
  79. package/dist/canvas/components/Guardrails/__fixtures__/catalog-coverage.cjs +0 -83
  80. package/dist/canvas/components/Guardrails/__fixtures__/catalog-coverage.js +0 -37
  81. package/dist/canvas/components/Guardrails/__fixtures__/definitions-wire.fixtures.cjs +0 -344
  82. package/dist/canvas/components/Guardrails/__fixtures__/definitions-wire.fixtures.js +0 -280
  83. package/dist/canvas/components/Guardrails/__fixtures__/host-copy-baselines.cjs +0 -221
  84. package/dist/canvas/components/Guardrails/__fixtures__/host-copy-baselines.js +0 -184
@@ -0,0 +1,10 @@
1
+ import type { GuardrailListLabels } from './i18n';
2
+ import type { GuardrailListAdministration, GuardrailListChip, GuardrailListDefinition, GuardrailListItem, GuardrailListItemState } from './list-types';
3
+ export declare function getGuardrailListItemId(item: GuardrailListItem): string;
4
+ export declare function matchesGuardrailListDefinition(definition: GuardrailListDefinition, item: GuardrailListItem): boolean;
5
+ export declare function resolveGuardrailListItemState(item: GuardrailListItem, definitions?: readonly GuardrailListDefinition[]): GuardrailListItemState;
6
+ export declare function getGuardrailListChips(input: {
7
+ status?: GuardrailListItemState['status'];
8
+ administration?: GuardrailListAdministration;
9
+ }, labels: GuardrailListLabels): GuardrailListChip[];
10
+ //# sourceMappingURL=guardrail-list-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guardrail-list-utils.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Guardrails/guardrail-list-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,KAAK,EACV,2BAA2B,EAC3B,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,cAAc,CAAC;AAMtB,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAEtE;AAMD,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,uBAAuB,EACnC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAIT;AAOD,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,iBAAiB,EACvB,WAAW,GAAE,SAAS,uBAAuB,EAAO,GACnD,sBAAsB,CAiBxB;AAMD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE;IACL,MAAM,CAAC,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,2BAA2B,CAAC;CAC9C,EACD,MAAM,EAAE,mBAAmB,GAC1B,iBAAiB,EAAE,CAwBrB"}
@@ -0,0 +1,60 @@
1
+ function getGuardrailListItemId(item) {
2
+ return item.id ?? item.name;
3
+ }
4
+ function matchesGuardrailListDefinition(definition, item) {
5
+ return void 0 === item.byoValidatorName ? void 0 === definition.byoValidatorName && definition.validator === item.validatorType : definition.byoValidatorName === item.byoValidatorName;
6
+ }
7
+ function resolveGuardrailListItemState(item, definitions = []) {
8
+ const isByo = void 0 !== item.byoValidatorName;
9
+ const definition = definitions.find((candidate)=>matchesGuardrailListDefinition(candidate, item));
10
+ const byoUnavailable = isByo && definitions.length > 0 && void 0 === definition;
11
+ const byoDisabled = isByo && definition?.status === 'Disabled';
12
+ return {
13
+ definition,
14
+ status: byoUnavailable ? 'Unavailable' : definition?.status,
15
+ isByo,
16
+ provider: definition?.byoConnectorName,
17
+ byoDisabled,
18
+ byoUnavailable
19
+ };
20
+ }
21
+ function getGuardrailListChips(input, labels) {
22
+ const chips = [];
23
+ const statusChip = (()=>{
24
+ switch(input.status){
25
+ case 'FeatureDisabled':
26
+ return {
27
+ tone: 'warning',
28
+ label: labels.statusFeatureDisabled
29
+ };
30
+ case 'Unauthorised':
31
+ return {
32
+ tone: 'warning',
33
+ label: labels.statusUnauthorized
34
+ };
35
+ case 'Disabled':
36
+ return {
37
+ tone: 'error',
38
+ label: labels.statusDisabled
39
+ };
40
+ case 'Unavailable':
41
+ return {
42
+ tone: 'error',
43
+ label: labels.statusUnavailable
44
+ };
45
+ default:
46
+ return;
47
+ }
48
+ })();
49
+ if (statusChip) chips.push({
50
+ id: 'status',
51
+ ...statusChip
52
+ });
53
+ if ('governance' === input.administration) chips.push({
54
+ id: 'administration',
55
+ tone: 'neutral',
56
+ label: labels.administrationGovernance
57
+ });
58
+ return chips;
59
+ }
60
+ export { getGuardrailListChips, getGuardrailListItemId, matchesGuardrailListDefinition, resolveGuardrailListItemState };
@@ -0,0 +1,214 @@
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
+ GuardrailList: ()=>GuardrailList
28
+ });
29
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
+ const core_namespaceObject = require("@dnd-kit/core");
31
+ const modifiers_namespaceObject = require("@dnd-kit/modifiers");
32
+ const sortable_namespaceObject = require("@dnd-kit/sortable");
33
+ const utilities_namespaceObject = require("@dnd-kit/utilities");
34
+ const apollo_wind_namespaceObject = require("@uipath/apollo-wind");
35
+ const external_lucide_react_namespaceObject = require("lucide-react");
36
+ const external_react_namespaceObject = require("react");
37
+ const guardrail_list_row_cjs_namespaceObject = require("./components/guardrail-list-row.cjs");
38
+ const external_guardrail_list_utils_cjs_namespaceObject = require("./guardrail-list-utils.cjs");
39
+ const external_i18n_cjs_namespaceObject = require("./i18n.cjs");
40
+ const DND_MODIFIERS = [
41
+ modifiers_namespaceObject.restrictToVerticalAxis,
42
+ modifiers_namespaceObject.restrictToParentElement
43
+ ];
44
+ const POINTER_SENSOR_OPTIONS = {
45
+ activationConstraint: {
46
+ distance: 8
47
+ }
48
+ };
49
+ function SortableRows({ ids, onDragEnd, children }) {
50
+ const sensors = (0, core_namespaceObject.useSensors)((0, core_namespaceObject.useSensor)(core_namespaceObject.PointerSensor, POINTER_SENSOR_OPTIONS), (0, core_namespaceObject.useSensor)(core_namespaceObject.KeyboardSensor, {
51
+ coordinateGetter: sortable_namespaceObject.sortableKeyboardCoordinates
52
+ }));
53
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(core_namespaceObject.DndContext, {
54
+ sensors: sensors,
55
+ collisionDetection: core_namespaceObject.closestCenter,
56
+ modifiers: DND_MODIFIERS,
57
+ autoScroll: false,
58
+ onDragEnd: onDragEnd,
59
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(sortable_namespaceObject.SortableContext, {
60
+ items: ids,
61
+ strategy: sortable_namespaceObject.verticalListSortingStrategy,
62
+ children: children
63
+ })
64
+ });
65
+ }
66
+ function SortableGuardrailRow({ id, item, labels, ...rowProps }) {
67
+ const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition, isDragging } = (0, sortable_namespaceObject.useSortable)({
68
+ id
69
+ });
70
+ const handle = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.Button, {
71
+ ref: setActivatorNodeRef,
72
+ type: "button",
73
+ variant: "ghost",
74
+ size: "3xs",
75
+ icon: true,
76
+ className: "cursor-grab touch-none",
77
+ "aria-label": (0, external_i18n_cjs_namespaceObject.formatGuardrailFormMessage)(labels.reorderItem, {
78
+ name: item.name
79
+ }),
80
+ ...attributes,
81
+ ...listeners,
82
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.GripVertical, {})
83
+ });
84
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(guardrail_list_row_cjs_namespaceObject.GuardrailListRow, {
85
+ ref: setNodeRef,
86
+ id: id,
87
+ item: item,
88
+ labels: labels,
89
+ handle: handle,
90
+ style: {
91
+ transform: utilities_namespaceObject.CSS.Translate.toString(transform),
92
+ transition,
93
+ opacity: isDragging ? 0.5 : void 0
94
+ },
95
+ ...rowProps
96
+ });
97
+ }
98
+ function GuardrailList({ guardrails, definitions, disabled = false, reorderDisabled, onEdit, onRemove, onAdd, onReorder, getItemId = external_guardrail_list_utils_cjs_namespaceObject.getGuardrailListItemId, getItemAdministration, statusChips = false, previewChip = false, byoChip = false, unstyled = false, hideHeader = false, rowActivatesEdit = false, emptyState, footer, addSlot, statusBanner, renderRowTooltip, renderItemActions, formatScopes, formatAction, labels: labelOverrides, className }) {
99
+ const labels = (0, external_i18n_cjs_namespaceObject.useGuardrailListLabels)(labelOverrides);
100
+ const rows = (0, external_react_namespaceObject.useMemo)(()=>guardrails.map((item)=>({
101
+ item,
102
+ id: getItemId(item)
103
+ })), [
104
+ guardrails,
105
+ getItemId
106
+ ]);
107
+ const ids = (0, external_react_namespaceObject.useMemo)(()=>rows.map((row)=>row.id), [
108
+ rows
109
+ ]);
110
+ const isReorderable = !(reorderDisabled ?? disabled) && void 0 !== onReorder && guardrails.length > 1;
111
+ const handleDragEnd = (0, external_react_namespaceObject.useCallback)(({ active, over })=>{
112
+ if (!onReorder || !over || active.id === over.id) return;
113
+ const from = ids.indexOf(String(active.id));
114
+ const to = ids.indexOf(String(over.id));
115
+ if (-1 === from || -1 === to) return;
116
+ onReorder((0, sortable_namespaceObject.arrayMove)(guardrails, from, to), {
117
+ from,
118
+ to,
119
+ id: String(active.id)
120
+ });
121
+ }, [
122
+ guardrails,
123
+ ids,
124
+ onReorder
125
+ ]);
126
+ const renderedRows = rows.map(({ item, id }, index)=>{
127
+ const rowProps = {
128
+ item,
129
+ id,
130
+ index,
131
+ state: (0, external_guardrail_list_utils_cjs_namespaceObject.resolveGuardrailListItemState)(item, definitions),
132
+ labels,
133
+ disabled,
134
+ administration: getItemAdministration?.(item),
135
+ statusChips,
136
+ previewChip,
137
+ byoChip,
138
+ rowActivatesEdit,
139
+ onEdit,
140
+ onRemove,
141
+ renderRowTooltip,
142
+ renderItemActions,
143
+ formatScopes,
144
+ formatAction
145
+ };
146
+ return isReorderable ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(SortableGuardrailRow, {
147
+ ...rowProps
148
+ }, id) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(guardrail_list_row_cjs_namespaceObject.GuardrailListRow, {
149
+ ...rowProps
150
+ }, id);
151
+ });
152
+ const content = guardrails.length > 0 ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
153
+ className: "space-y-2",
154
+ children: renderedRows
155
+ }) : void 0 === emptyState ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("p", {
156
+ className: "text-sm text-muted-foreground",
157
+ children: labels.empty
158
+ }) : emptyState;
159
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
160
+ "data-slot": "guardrail-list",
161
+ className: (0, apollo_wind_namespaceObject.cn)(!unstyled && 'rounded-md border', className),
162
+ children: [
163
+ !hideHeader && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
164
+ className: (0, apollo_wind_namespaceObject.cn)('flex items-center justify-between', !unstyled && 'px-3 py-2'),
165
+ children: [
166
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
167
+ className: "flex items-center gap-2",
168
+ children: [
169
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.Shield, {
170
+ className: "size-4 text-muted-foreground",
171
+ "aria-hidden": "true"
172
+ }),
173
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
174
+ className: "text-sm font-medium",
175
+ children: labels.title
176
+ })
177
+ ]
178
+ }),
179
+ void 0 !== addSlot ? addSlot : onAdd && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.Button, {
180
+ type: "button",
181
+ variant: "text",
182
+ size: "2xs",
183
+ className: "w-fit p-0",
184
+ disabled: disabled,
185
+ onClick: onAdd,
186
+ children: [
187
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.Plus, {}),
188
+ labels.add
189
+ ]
190
+ })
191
+ ]
192
+ }),
193
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
194
+ className: (0, apollo_wind_namespaceObject.cn)('space-y-2', !unstyled && 'p-3'),
195
+ children: [
196
+ statusBanner,
197
+ isReorderable ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(SortableRows, {
198
+ ids: ids,
199
+ onDragEnd: handleDragEnd,
200
+ children: content
201
+ }) : content,
202
+ footer
203
+ ]
204
+ })
205
+ ]
206
+ });
207
+ }
208
+ exports.GuardrailList = __webpack_exports__.GuardrailList;
209
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
210
+ "GuardrailList"
211
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
212
+ Object.defineProperty(exports, '__esModule', {
213
+ value: true
214
+ });
@@ -0,0 +1,33 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type GuardrailListLabels } from './i18n';
3
+ import type { GuardrailListAdministration, GuardrailListDefinition, GuardrailListItem, GuardrailListItemActionsContext, GuardrailReorderMove, GuardrailRowTooltipRenderer } from './list-types';
4
+ export interface GuardrailListProps {
5
+ guardrails: GuardrailListItem[];
6
+ definitions?: GuardrailListDefinition[];
7
+ disabled?: boolean;
8
+ reorderDisabled?: boolean;
9
+ onEdit?: (item: GuardrailListItem) => void;
10
+ onRemove?: (item: GuardrailListItem) => void;
11
+ onAdd?: () => void;
12
+ onReorder?: (guardrails: GuardrailListItem[], move: GuardrailReorderMove) => void;
13
+ getItemId?: (item: GuardrailListItem) => string;
14
+ getItemAdministration?: (item: GuardrailListItem) => GuardrailListAdministration | undefined;
15
+ statusChips?: boolean;
16
+ previewChip?: boolean;
17
+ byoChip?: boolean;
18
+ unstyled?: boolean;
19
+ hideHeader?: boolean;
20
+ rowActivatesEdit?: boolean;
21
+ emptyState?: ReactNode;
22
+ footer?: ReactNode;
23
+ addSlot?: ReactNode;
24
+ statusBanner?: ReactNode;
25
+ renderRowTooltip?: GuardrailRowTooltipRenderer;
26
+ renderItemActions?: (ctx: GuardrailListItemActionsContext) => ReactNode;
27
+ formatScopes?: (item: GuardrailListItem) => ReactNode;
28
+ formatAction?: (item: GuardrailListItem) => ReactNode;
29
+ labels?: Partial<GuardrailListLabels>;
30
+ className?: string;
31
+ }
32
+ export declare function GuardrailList({ guardrails, definitions, disabled, reorderDisabled, onEdit, onRemove, onAdd, onReorder, getItemId, getItemAdministration, statusChips, previewChip, byoChip, unstyled, hideHeader, rowActivatesEdit, emptyState, footer, addSlot, statusBanner, renderRowTooltip, renderItemActions, formatScopes, formatAction, labels: labelOverrides, className, }: GuardrailListProps): import("react/jsx-runtime").JSX.Element;
33
+ //# sourceMappingURL=guardrail-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guardrail-list.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Guardrails/guardrail-list.tsx"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,SAAS,EAAwB,MAAM,OAAO,CAAC;AAG7D,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,iBAAiB,EACjB,+BAA+B,EAC/B,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AAOtB,MAAM,WAAW,kBAAkB;IAKjC,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAMhC,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAExC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAKnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAG1B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAK3C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAE7C,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAKnB,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAGlF,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,MAAM,CAAC;IAEhD,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,2BAA2B,GAAG,SAAS,CAAC;IAG7F,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB,YAAY,CAAC,EAAE,SAAS,CAAC;IAGzB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;IAE/C,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,+BAA+B,KAAK,SAAS,CAAC;IAExE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,SAAS,CAAC;IAEtD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,SAAS,CAAC;IAEtD,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoGD,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,WAAW,EACX,QAAgB,EAChB,eAAe,EACf,MAAM,EACN,QAAQ,EACR,KAAK,EACL,SAAS,EACT,SAAkC,EAClC,qBAAqB,EACrB,WAAmB,EACnB,WAAmB,EACnB,OAAe,EACf,QAAgB,EAChB,UAAkB,EAClB,gBAAwB,EACxB,UAAU,EACV,MAAM,EACN,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,MAAM,EAAE,cAAc,EACtB,SAAS,GACV,EAAE,kBAAkB,2CAkGpB"}
@@ -0,0 +1,180 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { DndContext, KeyboardSensor, PointerSensor, closestCenter, useSensor, useSensors } from "@dnd-kit/core";
3
+ import { restrictToParentElement, restrictToVerticalAxis } from "@dnd-kit/modifiers";
4
+ import { SortableContext, arrayMove, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy } from "@dnd-kit/sortable";
5
+ import { CSS } from "@dnd-kit/utilities";
6
+ import { Button, cn } from "@uipath/apollo-wind";
7
+ import { GripVertical, Plus, Shield } from "lucide-react";
8
+ import { useCallback, useMemo } from "react";
9
+ import { GuardrailListRow } from "./components/guardrail-list-row.js";
10
+ import { getGuardrailListItemId, resolveGuardrailListItemState } from "./guardrail-list-utils.js";
11
+ import { formatGuardrailFormMessage, useGuardrailListLabels } from "./i18n.js";
12
+ const DND_MODIFIERS = [
13
+ restrictToVerticalAxis,
14
+ restrictToParentElement
15
+ ];
16
+ const POINTER_SENSOR_OPTIONS = {
17
+ activationConstraint: {
18
+ distance: 8
19
+ }
20
+ };
21
+ function SortableRows({ ids, onDragEnd, children }) {
22
+ const sensors = useSensors(useSensor(PointerSensor, POINTER_SENSOR_OPTIONS), useSensor(KeyboardSensor, {
23
+ coordinateGetter: sortableKeyboardCoordinates
24
+ }));
25
+ return /*#__PURE__*/ jsx(DndContext, {
26
+ sensors: sensors,
27
+ collisionDetection: closestCenter,
28
+ modifiers: DND_MODIFIERS,
29
+ autoScroll: false,
30
+ onDragEnd: onDragEnd,
31
+ children: /*#__PURE__*/ jsx(SortableContext, {
32
+ items: ids,
33
+ strategy: verticalListSortingStrategy,
34
+ children: children
35
+ })
36
+ });
37
+ }
38
+ function SortableGuardrailRow({ id, item, labels, ...rowProps }) {
39
+ const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition, isDragging } = useSortable({
40
+ id
41
+ });
42
+ const handle = /*#__PURE__*/ jsx(Button, {
43
+ ref: setActivatorNodeRef,
44
+ type: "button",
45
+ variant: "ghost",
46
+ size: "3xs",
47
+ icon: true,
48
+ className: "cursor-grab touch-none",
49
+ "aria-label": formatGuardrailFormMessage(labels.reorderItem, {
50
+ name: item.name
51
+ }),
52
+ ...attributes,
53
+ ...listeners,
54
+ children: /*#__PURE__*/ jsx(GripVertical, {})
55
+ });
56
+ return /*#__PURE__*/ jsx(GuardrailListRow, {
57
+ ref: setNodeRef,
58
+ id: id,
59
+ item: item,
60
+ labels: labels,
61
+ handle: handle,
62
+ style: {
63
+ transform: CSS.Translate.toString(transform),
64
+ transition,
65
+ opacity: isDragging ? 0.5 : void 0
66
+ },
67
+ ...rowProps
68
+ });
69
+ }
70
+ function GuardrailList({ guardrails, definitions, disabled = false, reorderDisabled, onEdit, onRemove, onAdd, onReorder, getItemId = getGuardrailListItemId, getItemAdministration, statusChips = false, previewChip = false, byoChip = false, unstyled = false, hideHeader = false, rowActivatesEdit = false, emptyState, footer, addSlot, statusBanner, renderRowTooltip, renderItemActions, formatScopes, formatAction, labels: labelOverrides, className }) {
71
+ const labels = useGuardrailListLabels(labelOverrides);
72
+ const rows = useMemo(()=>guardrails.map((item)=>({
73
+ item,
74
+ id: getItemId(item)
75
+ })), [
76
+ guardrails,
77
+ getItemId
78
+ ]);
79
+ const ids = useMemo(()=>rows.map((row)=>row.id), [
80
+ rows
81
+ ]);
82
+ const isReorderable = !(reorderDisabled ?? disabled) && void 0 !== onReorder && guardrails.length > 1;
83
+ const handleDragEnd = useCallback(({ active, over })=>{
84
+ if (!onReorder || !over || active.id === over.id) return;
85
+ const from = ids.indexOf(String(active.id));
86
+ const to = ids.indexOf(String(over.id));
87
+ if (-1 === from || -1 === to) return;
88
+ onReorder(arrayMove(guardrails, from, to), {
89
+ from,
90
+ to,
91
+ id: String(active.id)
92
+ });
93
+ }, [
94
+ guardrails,
95
+ ids,
96
+ onReorder
97
+ ]);
98
+ const renderedRows = rows.map(({ item, id }, index)=>{
99
+ const rowProps = {
100
+ item,
101
+ id,
102
+ index,
103
+ state: resolveGuardrailListItemState(item, definitions),
104
+ labels,
105
+ disabled,
106
+ administration: getItemAdministration?.(item),
107
+ statusChips,
108
+ previewChip,
109
+ byoChip,
110
+ rowActivatesEdit,
111
+ onEdit,
112
+ onRemove,
113
+ renderRowTooltip,
114
+ renderItemActions,
115
+ formatScopes,
116
+ formatAction
117
+ };
118
+ return isReorderable ? /*#__PURE__*/ jsx(SortableGuardrailRow, {
119
+ ...rowProps
120
+ }, id) : /*#__PURE__*/ jsx(GuardrailListRow, {
121
+ ...rowProps
122
+ }, id);
123
+ });
124
+ const content = guardrails.length > 0 ? /*#__PURE__*/ jsx("div", {
125
+ className: "space-y-2",
126
+ children: renderedRows
127
+ }) : void 0 === emptyState ? /*#__PURE__*/ jsx("p", {
128
+ className: "text-sm text-muted-foreground",
129
+ children: labels.empty
130
+ }) : emptyState;
131
+ return /*#__PURE__*/ jsxs("div", {
132
+ "data-slot": "guardrail-list",
133
+ className: cn(!unstyled && 'rounded-md border', className),
134
+ children: [
135
+ !hideHeader && /*#__PURE__*/ jsxs("div", {
136
+ className: cn('flex items-center justify-between', !unstyled && 'px-3 py-2'),
137
+ children: [
138
+ /*#__PURE__*/ jsxs("div", {
139
+ className: "flex items-center gap-2",
140
+ children: [
141
+ /*#__PURE__*/ jsx(Shield, {
142
+ className: "size-4 text-muted-foreground",
143
+ "aria-hidden": "true"
144
+ }),
145
+ /*#__PURE__*/ jsx("span", {
146
+ className: "text-sm font-medium",
147
+ children: labels.title
148
+ })
149
+ ]
150
+ }),
151
+ void 0 !== addSlot ? addSlot : onAdd && /*#__PURE__*/ jsxs(Button, {
152
+ type: "button",
153
+ variant: "text",
154
+ size: "2xs",
155
+ className: "w-fit p-0",
156
+ disabled: disabled,
157
+ onClick: onAdd,
158
+ children: [
159
+ /*#__PURE__*/ jsx(Plus, {}),
160
+ labels.add
161
+ ]
162
+ })
163
+ ]
164
+ }),
165
+ /*#__PURE__*/ jsxs("div", {
166
+ className: cn('space-y-2', !unstyled && 'p-3'),
167
+ children: [
168
+ statusBanner,
169
+ isReorderable ? /*#__PURE__*/ jsx(SortableRows, {
170
+ ids: ids,
171
+ onDragEnd: handleDragEnd,
172
+ children: content
173
+ }) : content,
174
+ footer
175
+ ]
176
+ })
177
+ ]
178
+ });
179
+ }
180
+ export { GuardrailList };