@stigmer/react 3.0.6 → 3.0.7-dev.20260611143057
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/agent-instance/AgentInstanceDetailPanel.d.ts.map +1 -1
- package/agent-instance/AgentInstanceDetailPanel.js +2 -9
- package/agent-instance/AgentInstanceDetailPanel.js.map +1 -1
- package/agent-instance/AgentInstanceList.d.ts.map +1 -1
- package/agent-instance/AgentInstanceList.js +2 -9
- package/agent-instance/AgentInstanceList.js.map +1 -1
- package/agent-instance/CreateAgentInstanceDialog.d.ts.map +1 -1
- package/agent-instance/CreateAgentInstanceDialog.js +1 -1
- package/agent-instance/CreateAgentInstanceDialog.js.map +1 -1
- package/composer/SessionComposer.d.ts +14 -0
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +15 -9
- package/composer/SessionComposer.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.d.ts.map +1 -1
- package/index.js.map +1 -1
- package/library/InstanceVisibilitySelector.d.ts +23 -9
- package/library/InstanceVisibilitySelector.d.ts.map +1 -1
- package/library/InstanceVisibilitySelector.js +14 -9
- package/library/InstanceVisibilitySelector.js.map +1 -1
- package/library/VisibilityOptionRow.d.ts +52 -0
- package/library/VisibilityOptionRow.d.ts.map +1 -0
- package/library/VisibilityOptionRow.js +92 -0
- package/library/VisibilityOptionRow.js.map +1 -0
- package/library/VisibilitySelector.d.ts +47 -24
- package/library/VisibilitySelector.d.ts.map +1 -1
- package/library/VisibilitySelector.js +137 -115
- package/library/VisibilitySelector.js.map +1 -1
- package/library/visibilityLevels.d.ts +25 -3
- package/library/visibilityLevels.d.ts.map +1 -1
- package/library/visibilityLevels.js +8 -2
- package/library/visibilityLevels.js.map +1 -1
- package/package.json +4 -4
- package/session/NewSessionViewer.d.ts +32 -1
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +20 -9
- package/session/NewSessionViewer.js.map +1 -1
- package/session/SessionViewer.d.ts +24 -1
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +18 -12
- package/session/SessionViewer.js.map +1 -1
- package/session/audience.d.ts +21 -0
- package/session/audience.d.ts.map +1 -0
- package/session/audience.js +2 -0
- package/session/audience.js.map +1 -0
- package/session/index.d.ts +2 -0
- package/session/index.d.ts.map +1 -1
- package/session/index.js.map +1 -1
- package/session/runtime-env.d.ts +47 -0
- package/session/runtime-env.d.ts.map +1 -0
- package/session/runtime-env.js +20 -0
- package/session/runtime-env.js.map +1 -0
- package/session/useNewSessionFlow.d.ts +25 -0
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +20 -8
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/useSessionPageFlow.d.ts +27 -2
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +34 -13
- package/session/useSessionPageFlow.js.map +1 -1
- package/src/agent-instance/AgentInstanceDetailPanel.tsx +7 -27
- package/src/agent-instance/AgentInstanceList.tsx +7 -27
- package/src/agent-instance/CreateAgentInstanceDialog.tsx +1 -0
- package/src/composer/SessionComposer.tsx +30 -8
- package/src/composer/__tests__/SessionComposer-lockAgent.test.tsx +150 -0
- package/src/index.ts +2 -0
- package/src/library/InstanceVisibilitySelector.tsx +27 -9
- package/src/library/VisibilityOptionRow.tsx +244 -0
- package/src/library/VisibilitySelector.tsx +303 -260
- package/src/library/__tests__/VisibilitySelector.test.tsx +256 -0
- package/src/library/visibilityLevels.ts +35 -5
- package/src/session/NewSessionViewer.tsx +61 -12
- package/src/session/SessionViewer.tsx +51 -15
- package/src/session/__tests__/audienceWiring.test.tsx +274 -0
- package/src/session/__tests__/useNewSessionFlow.test.tsx +122 -0
- package/src/session/__tests__/useSessionPageFlow.runtimeEnv.test.tsx +170 -0
- package/src/session/audience.ts +20 -0
- package/src/session/index.ts +3 -0
- package/src/session/runtime-env.ts +57 -0
- package/src/session/useNewSessionFlow.ts +44 -9
- package/src/session/useSessionPageFlow.ts +65 -17
- package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +1 -0
- package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +7 -27
- package/src/workflow/instance/WorkflowInstanceList.tsx +7 -27
- package/styles.css +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.d.ts.map +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.js +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.js.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js +2 -9
- package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
- package/workflow/instance/WorkflowInstanceList.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceList.js +2 -9
- package/workflow/instance/WorkflowInstanceList.js.map +1 -1
|
@@ -1,26 +1,41 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useCallback, useMemo, useRef, useState } from "react";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
+
import { Popover } from "@base-ui/react/popover";
|
|
4
5
|
import { cn } from "@stigmer/theme";
|
|
6
|
+
import { useStigmerPortalContainer } from "../portal-container";
|
|
7
|
+
import { ConfirmDialog } from "../resource-detail/ConfirmDialog";
|
|
8
|
+
import { useConfirmAction } from "../resource-detail/useConfirmAction";
|
|
9
|
+
import { PROMPT_STYLES, VISIBILITY_CHIP_CLASS, VisibilityIcon, VisibilityOptionRow, } from "./VisibilityOptionRow";
|
|
5
10
|
import { visibilityOption, } from "./visibilityLevels";
|
|
6
11
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
12
|
+
* The single control for resource visibility across blueprints AND
|
|
13
|
+
* instances. Offered levels are pure data ({@link VisibilityLevelOption});
|
|
14
|
+
* per-kind level sets live in `visibilityLevels.ts`, so this component
|
|
15
|
+
* carries no kind-specific logic.
|
|
11
16
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
17
|
+
* In `"manage"` mode it renders a current-state chip (icon + label + caret)
|
|
18
|
+
* that opens a popover listing each offered level with its own description —
|
|
19
|
+
* scaling cleanly to four levels without the layout shift of a segmented
|
|
20
|
+
* control, and explaining every choice at a glance (Recognition over
|
|
21
|
+
* Recall). Escalation is confirmed in proportion to how far access expands:
|
|
22
|
+
* de-escalation applies instantly, an Organization escalation shows a light
|
|
23
|
+
* inline prompt, and Platform/Public escalations open a blocking
|
|
24
|
+
* {@link ConfirmDialog} that names the exact audience. Confirmation is owned
|
|
25
|
+
* here so every consumer — blueprint detail, instance detail, and any
|
|
26
|
+
* standalone embed — behaves identically.
|
|
27
|
+
*
|
|
28
|
+
* In `"create"` mode it renders an inline radio list that applies
|
|
29
|
+
* immediately (initial value selection has no escalation semantics).
|
|
15
30
|
*
|
|
16
31
|
* If the current visibility is not among the offered options (e.g. a
|
|
17
32
|
* platform-shared blueprint whose org no longer operates an
|
|
18
33
|
* IdentityProvider), its canonical option is rendered in place so the
|
|
19
34
|
* state stays legible and the user can still move to an offered level.
|
|
20
35
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
36
|
+
* All visual properties flow through `--stgm-*` design tokens; portaled
|
|
37
|
+
* content targets the {@link useStigmerPortalContainer} so it inherits the
|
|
38
|
+
* active theme.
|
|
24
39
|
*
|
|
25
40
|
* @example
|
|
26
41
|
* ```tsx
|
|
@@ -32,12 +47,17 @@ import { visibilityOption, } from "./visibilityLevels";
|
|
|
32
47
|
* />
|
|
33
48
|
* ```
|
|
34
49
|
*/
|
|
35
|
-
export function VisibilitySelector({ visibility, options, onVisibilityChange, isPending = false, disabled = false, ariaLabel = "Resource visibility", className, }) {
|
|
36
|
-
const
|
|
50
|
+
export function VisibilitySelector({ visibility, options, onVisibilityChange, mode = "manage", isPending = false, disabled = false, ariaLabel = "Resource visibility", className, }) {
|
|
51
|
+
const portalContainer = useStigmerPortalContainer();
|
|
52
|
+
const { confirmState, confirm, handleConfirm, handleCancel } = useConfirmAction();
|
|
53
|
+
const [open, setOpen] = useState(false);
|
|
54
|
+
// The Organization-style escalation awaiting its light inline confirm.
|
|
55
|
+
const [pendingInline, setPendingInline] = useState(null);
|
|
56
|
+
const [highlightIdx, setHighlightIdx] = useState(-1);
|
|
37
57
|
const optionRefs = useRef([]);
|
|
38
58
|
const effectivelyDisabled = disabled || isPending;
|
|
39
59
|
// Keep the current state legible even when it is not offerable in the
|
|
40
|
-
// current context: render its canonical option as an extra
|
|
60
|
+
// current context: render its canonical option as an extra row.
|
|
41
61
|
const effectiveOptions = useMemo(() => {
|
|
42
62
|
if (options.some((o) => o.value === visibility))
|
|
43
63
|
return options;
|
|
@@ -47,113 +67,114 @@ export function VisibilitySelector({ visibility, options, onVisibilityChange, is
|
|
|
47
67
|
const values = effectiveOptions.map((o) => o.value);
|
|
48
68
|
return values.indexOf(target) > values.indexOf(visibility);
|
|
49
69
|
}, [effectiveOptions, visibility]);
|
|
50
|
-
const
|
|
51
|
-
|
|
70
|
+
const apply = useCallback((value) => {
|
|
71
|
+
setOpen(false);
|
|
72
|
+
setPendingInline(null);
|
|
73
|
+
onVisibilityChange(value);
|
|
74
|
+
}, [onVisibilityChange]);
|
|
75
|
+
const handleSelect = useCallback((option) => {
|
|
76
|
+
const value = option.value;
|
|
77
|
+
if (value === visibility) {
|
|
78
|
+
setPendingInline(null);
|
|
79
|
+
setOpen(false);
|
|
52
80
|
return;
|
|
53
|
-
|
|
54
|
-
|
|
81
|
+
}
|
|
82
|
+
// De-escalation (and create mode) never confirm — narrowing access is
|
|
83
|
+
// always safe, and an initial pick has no escalation semantics.
|
|
84
|
+
if (mode === "create" || !isEscalation(value)) {
|
|
85
|
+
apply(value);
|
|
55
86
|
return;
|
|
56
87
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
88
|
+
if (option.confirmDialog) {
|
|
89
|
+
setOpen(false);
|
|
90
|
+
setPendingInline(null);
|
|
91
|
+
void confirm({
|
|
92
|
+
title: option.confirmDialog.title,
|
|
93
|
+
description: option.confirmDialog.description,
|
|
94
|
+
confirmLabel: `Make ${option.label}`,
|
|
95
|
+
// Exposure is reversible, so this is a primary (not destructive)
|
|
96
|
+
// confirmation; the audience-naming copy carries the caution.
|
|
97
|
+
variant: "default",
|
|
98
|
+
}).then((ok) => {
|
|
99
|
+
if (ok)
|
|
100
|
+
onVisibilityChange(value);
|
|
101
|
+
});
|
|
62
102
|
return;
|
|
63
|
-
setConfirming(null);
|
|
64
|
-
onVisibilityChange(confirming);
|
|
65
|
-
}, [confirming, onVisibilityChange]);
|
|
66
|
-
const cancelConfirm = useCallback(() => {
|
|
67
|
-
setConfirming(null);
|
|
68
|
-
}, []);
|
|
69
|
-
const handleKeyDown = useCallback((e, index) => {
|
|
70
|
-
let nextIndex = null;
|
|
71
|
-
if (e.key === "ArrowRight" || e.key === "ArrowDown") {
|
|
72
|
-
e.preventDefault();
|
|
73
|
-
nextIndex = (index + 1) % effectiveOptions.length;
|
|
74
103
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
(index - 1 + effectiveOptions.length) % effectiveOptions.length;
|
|
104
|
+
if (option.confirmPrompt) {
|
|
105
|
+
setPendingInline(value);
|
|
106
|
+
return;
|
|
79
107
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
108
|
+
apply(value);
|
|
109
|
+
}, [visibility, mode, isEscalation, apply, confirm, onVisibilityChange]);
|
|
110
|
+
const moveFocus = useCallback((from, delta) => {
|
|
111
|
+
const count = effectiveOptions.length;
|
|
112
|
+
const next = (from + delta + count) % count;
|
|
113
|
+
setHighlightIdx(next);
|
|
114
|
+
optionRefs.current[next]?.focus();
|
|
115
|
+
}, [effectiveOptions.length]);
|
|
116
|
+
const handleRowKeyDown = useCallback((e, index) => {
|
|
117
|
+
switch (e.key) {
|
|
118
|
+
case "ArrowDown":
|
|
119
|
+
case "ArrowRight":
|
|
120
|
+
e.preventDefault();
|
|
121
|
+
moveFocus(index, 1);
|
|
122
|
+
break;
|
|
123
|
+
case "ArrowUp":
|
|
124
|
+
case "ArrowLeft":
|
|
125
|
+
e.preventDefault();
|
|
126
|
+
moveFocus(index, -1);
|
|
127
|
+
break;
|
|
128
|
+
case "Home":
|
|
129
|
+
e.preventDefault();
|
|
130
|
+
setHighlightIdx(0);
|
|
131
|
+
optionRefs.current[0]?.focus();
|
|
132
|
+
break;
|
|
133
|
+
case "End": {
|
|
134
|
+
e.preventDefault();
|
|
135
|
+
const last = effectiveOptions.length - 1;
|
|
136
|
+
setHighlightIdx(last);
|
|
137
|
+
optionRefs.current[last]?.focus();
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
83
140
|
}
|
|
84
|
-
}, [
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
org: {
|
|
112
|
-
container: "border-blue-200 bg-blue-50 dark:border-blue-800/50 dark:bg-blue-950/30",
|
|
113
|
-
text: "text-blue-800 dark:text-blue-200",
|
|
114
|
-
confirm: "bg-blue-600 hover:bg-blue-700 dark:bg-blue-600 dark:hover:bg-blue-500",
|
|
115
|
-
cancel: "text-blue-700 hover:text-blue-900 dark:text-blue-300 dark:hover:text-blue-100",
|
|
116
|
-
},
|
|
117
|
-
platform: {
|
|
118
|
-
container: "border-violet-200 bg-violet-50 dark:border-violet-800/50 dark:bg-violet-950/30",
|
|
119
|
-
text: "text-violet-800 dark:text-violet-200",
|
|
120
|
-
confirm: "bg-violet-600 hover:bg-violet-700 dark:bg-violet-600 dark:hover:bg-violet-500",
|
|
121
|
-
cancel: "text-violet-700 hover:text-violet-900 dark:text-violet-300 dark:hover:text-violet-100",
|
|
122
|
-
},
|
|
123
|
-
public: {
|
|
124
|
-
container: "border-amber-200 bg-amber-50 dark:border-amber-800/50 dark:bg-amber-950/30",
|
|
125
|
-
text: "text-amber-800 dark:text-amber-200",
|
|
126
|
-
confirm: "bg-amber-600 hover:bg-amber-700 dark:bg-amber-600 dark:hover:bg-amber-500",
|
|
127
|
-
cancel: "text-amber-700 hover:text-amber-900 dark:text-amber-300 dark:hover:text-amber-100",
|
|
128
|
-
},
|
|
129
|
-
};
|
|
130
|
-
// ---------------------------------------------------------------------------
|
|
131
|
-
// Icons — inline SVGs following the SDK pattern (no icon library dependency)
|
|
132
|
-
// ---------------------------------------------------------------------------
|
|
133
|
-
/** Icon for a visibility tone; shared with {@link VisibilityBadge}. */
|
|
134
|
-
export function VisibilityIcon({ tone, className, }) {
|
|
135
|
-
switch (tone) {
|
|
136
|
-
case "org":
|
|
137
|
-
return _jsx(UsersIcon, { className: className });
|
|
138
|
-
case "platform":
|
|
139
|
-
return _jsx(BuildingsIcon, { className: className });
|
|
140
|
-
case "public":
|
|
141
|
-
return _jsx(GlobeIcon, { className: className });
|
|
142
|
-
default:
|
|
143
|
-
return _jsx(LockIcon, { className: className });
|
|
141
|
+
}, [moveFocus, effectiveOptions.length]);
|
|
142
|
+
// On open, focus the current level so keyboard users land on a sensible row.
|
|
143
|
+
useEffect(() => {
|
|
144
|
+
if (!open) {
|
|
145
|
+
setPendingInline(null);
|
|
146
|
+
setHighlightIdx(-1);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const current = effectiveOptions.findIndex((o) => o.value === visibility);
|
|
150
|
+
const start = current >= 0 ? current : 0;
|
|
151
|
+
setHighlightIdx(start);
|
|
152
|
+
const raf = requestAnimationFrame(() => optionRefs.current[start]?.focus());
|
|
153
|
+
return () => cancelAnimationFrame(raf);
|
|
154
|
+
}, [open, effectiveOptions, visibility]);
|
|
155
|
+
const dialog = (_jsx(ConfirmDialog, { state: confirmState, onConfirm: handleConfirm, onCancel: handleCancel }));
|
|
156
|
+
const renderRows = (role) => effectiveOptions.map((option, index) => (_jsx(VisibilityOptionRow, { ref: (el) => {
|
|
157
|
+
optionRefs.current[index] = el;
|
|
158
|
+
}, option: option, role: role, isSelected: visibility === option.value, isHighlighted: role === "option" && highlightIdx === index, tabIndex: role === "radio"
|
|
159
|
+
? visibility === option.value
|
|
160
|
+
? 0
|
|
161
|
+
: -1
|
|
162
|
+
: highlightIdx === index
|
|
163
|
+
? 0
|
|
164
|
+
: -1, disabled: effectivelyDisabled, onSelect: () => handleSelect(option), onMouseEnter: role === "option" ? () => setHighlightIdx(index) : undefined, onKeyDown: (e) => handleRowKeyDown(e, index) }, option.value)));
|
|
165
|
+
// ---- Create mode: inline radio list, applies immediately ---------------
|
|
166
|
+
if (mode === "create") {
|
|
167
|
+
return (_jsx("div", { role: "radiogroup", "aria-label": ariaLabel, "aria-disabled": effectivelyDisabled || undefined, className: cn("flex flex-col gap-0.5 rounded-md border border-border p-1", effectivelyDisabled && "pointer-events-none opacity-50", className), children: renderRows("radio") }));
|
|
144
168
|
}
|
|
169
|
+
// ---- Manage mode: current-state chip + popover ladder ------------------
|
|
170
|
+
const current = visibilityOption(visibility);
|
|
171
|
+
const pendingOption = pendingInline !== null
|
|
172
|
+
? effectiveOptions.find((o) => o.value === pendingInline)
|
|
173
|
+
: undefined;
|
|
174
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Popover.Root, { open: open, onOpenChange: setOpen, children: [_jsxs(Popover.Trigger, { disabled: effectivelyDisabled, "aria-label": `${ariaLabel}: ${current.label}`, className: cn(VISIBILITY_CHIP_CLASS, "transition-colors hover:bg-accent-hover hover:text-foreground", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "disabled:pointer-events-none disabled:opacity-50", className), children: [isPending ? (_jsx("span", { className: "inline-block size-2.5 animate-spin rounded-full border-2 border-current border-t-transparent", "aria-hidden": "true" })) : (_jsx(VisibilityIcon, { tone: current.tone, className: "size-2.5" })), current.label, _jsx(CaretIcon, {})] }), _jsx(Popover.Portal, { container: portalContainer, children: _jsx(Popover.Positioner, { sideOffset: 4, align: "start", children: _jsxs(Popover.Popup, { role: "listbox", "aria-label": ariaLabel, className: cn("z-popover w-72 rounded-lg border border-border bg-popover p-1 shadow-md", "text-popover-foreground animate-in fade-in-0 zoom-in-95"), children: [renderRows("option"), pendingOption?.confirmPrompt && (_jsxs("div", { role: "alert", className: cn("mt-1 flex items-center gap-2 rounded-md border px-2.5 py-1.5", PROMPT_STYLES[pendingOption.tone].container), children: [_jsx("span", { className: cn("flex-1 text-[0.65rem] leading-snug", PROMPT_STYLES[pendingOption.tone].text), children: pendingOption.confirmPrompt }), _jsx("button", { type: "button", onClick: () => setPendingInline(null), className: cn("rounded px-2 py-0.5 text-[0.65rem] font-medium", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", PROMPT_STYLES[pendingOption.tone].cancel), children: "Cancel" }), _jsx("button", { type: "button", onClick: () => apply(pendingOption.value), className: cn("rounded px-2 py-0.5 text-[0.65rem] font-medium text-white", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", PROMPT_STYLES[pendingOption.tone].confirm), children: "Confirm" })] }))] }) }) })] }), dialog] }));
|
|
145
175
|
}
|
|
146
|
-
function
|
|
147
|
-
return (
|
|
148
|
-
}
|
|
149
|
-
function UsersIcon({ className }) {
|
|
150
|
-
return (_jsxs("svg", { className: className, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("circle", { cx: "6", cy: "5", r: "2.5" }), _jsx("path", { d: "M2 13c0-2.21 1.79-4 4-4s4 1.79 4 4" }), _jsx("circle", { cx: "11.5", cy: "5.5", r: "2" }), _jsx("path", { d: "M14 13c0-1.66-1.12-3-2.5-3-.5 0-1 .14-1.4.4" })] }));
|
|
151
|
-
}
|
|
152
|
-
function BuildingsIcon({ className }) {
|
|
153
|
-
return (_jsxs("svg", { className: className, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("path", { d: "M2 14V4.5L6.5 2v12" }), _jsx("path", { d: "M6.5 6.5 14 8.5V14" }), _jsx("path", { d: "M2 14h12" }), _jsx("path", { d: "M4.25 6h.01M4.25 8.5h.01M4.25 11h.01M10.5 10.5h.01M10.5 12.5h.01" })] }));
|
|
154
|
-
}
|
|
155
|
-
function GlobeIcon({ className }) {
|
|
156
|
-
return (_jsxs("svg", { className: className, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("circle", { cx: "8", cy: "8", r: "6" }), _jsx("path", { d: "M2 8h12" }), _jsx("path", { d: "M8 2c1.66 1.46 2.6 3.63 2.6 6s-.94 4.54-2.6 6c-1.66-1.46-2.6-3.63-2.6-6s.94-4.54 2.6-6Z" })] }));
|
|
176
|
+
function CaretIcon() {
|
|
177
|
+
return (_jsx("svg", { className: "size-2.5 shrink-0 text-muted-foreground", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "M3 4.5 6 7.5 9 4.5" }) }));
|
|
157
178
|
}
|
|
158
179
|
/**
|
|
159
180
|
* Read-only visibility indicator with a matching icon, covering all four
|
|
@@ -162,10 +183,11 @@ function GlobeIcon({ className }) {
|
|
|
162
183
|
* Rendered wherever the interactive {@link VisibilitySelector} is not
|
|
163
184
|
* available — for viewers who lack `can_edit`, and while a permission check
|
|
164
185
|
* is in flight — so a resource's visibility is always legible rather than
|
|
165
|
-
* silently blank.
|
|
186
|
+
* silently blank. Shares the chip styling with the selector trigger so the
|
|
187
|
+
* read-only and editable states are visually consistent.
|
|
166
188
|
*/
|
|
167
189
|
export function VisibilityBadge({ visibility, className, }) {
|
|
168
190
|
const option = visibilityOption(visibility);
|
|
169
|
-
return (_jsxs("span", { className: cn(
|
|
191
|
+
return (_jsxs("span", { className: cn(VISIBILITY_CHIP_CLASS, className), children: [_jsx(VisibilityIcon, { tone: option.tone, className: "size-2.5" }), option.label] }));
|
|
170
192
|
}
|
|
171
193
|
//# sourceMappingURL=VisibilitySelector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisibilitySelector.js","sourceRoot":"","sources":["../../src/library/VisibilitySelector.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"VisibilitySelector.js","sourceRoot":"","sources":["../../src/library/VisibilitySelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,11 +13,33 @@ export interface VisibilityLevelOption {
|
|
|
13
13
|
/** One-line explanation shown under the selector for the current level. */
|
|
14
14
|
readonly description: string;
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
17
|
-
* level. Omitted for the
|
|
18
|
-
* confirms — revoking access is
|
|
16
|
+
* Light inline confirmation question shown inside the selector when the
|
|
17
|
+
* user escalates TO this level (e.g. private → org). Omitted for the
|
|
18
|
+
* least-exposed level (de-escalation never confirms — revoking access is
|
|
19
|
+
* always safe).
|
|
20
|
+
*
|
|
21
|
+
* Levels that expand access far beyond the owning org carry a
|
|
22
|
+
* {@link confirmDialog} instead; see the severity ladder on
|
|
23
|
+
* {@link VisibilityLevelOption}.
|
|
19
24
|
*/
|
|
20
25
|
readonly confirmPrompt?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Heavy confirmation shown as a modal {@link ConfirmDialog} when the user
|
|
28
|
+
* escalates TO this level. Reserved for levels that expose the resource
|
|
29
|
+
* beyond the owning organization (platform, public), where a blocking,
|
|
30
|
+
* audience-naming confirmation is warranted.
|
|
31
|
+
*
|
|
32
|
+
* The selector derives escalation severity purely from this data:
|
|
33
|
+
* `confirmDialog` present → modal; else `confirmPrompt` present → inline;
|
|
34
|
+
* else apply immediately. There is no per-level branching in the
|
|
35
|
+
* component.
|
|
36
|
+
*/
|
|
37
|
+
readonly confirmDialog?: {
|
|
38
|
+
/** Modal title, phrased as a question (e.g. "Make this public?"). */
|
|
39
|
+
readonly title: string;
|
|
40
|
+
/** Body copy that names the exact audience and the consequence. */
|
|
41
|
+
readonly description: string;
|
|
42
|
+
};
|
|
21
43
|
/** Color treatment for the selected segment and the confirmation prompt. */
|
|
22
44
|
readonly tone: "private" | "org" | "platform" | "public";
|
|
23
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visibilityLevels.d.ts","sourceRoot":"","sources":["../../src/library/visibilityLevels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B
|
|
1
|
+
{"version":3,"file":"visibilityLevels.d.ts","sourceRoot":"","sources":["../../src/library/visibilityLevels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;OASG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE;QACvB,qEAAqE;QACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,mEAAmE;QACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC1D;AAyCD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC;IAC3C,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;CACvC;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,SAAS,qBAAqB,EAAE,CAOlC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,qBAAqB,EAUtE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,qBAAqB,GAChC,qBAAqB,CAWvB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM,CAEzE"}
|
|
@@ -16,14 +16,20 @@ const PLATFORM_OPTION = {
|
|
|
16
16
|
value: ApiResourceVisibility.visibility_platform,
|
|
17
17
|
label: "Platform",
|
|
18
18
|
description: "All organizations managed by your platform",
|
|
19
|
-
|
|
19
|
+
confirmDialog: {
|
|
20
|
+
title: "Share with your whole platform?",
|
|
21
|
+
description: "Every organization managed by your platform will be able to view and use this resource. You can return it to a narrower visibility at any time.",
|
|
22
|
+
},
|
|
20
23
|
tone: "platform",
|
|
21
24
|
};
|
|
22
25
|
const PUBLIC_OPTION = {
|
|
23
26
|
value: ApiResourceVisibility.visibility_public,
|
|
24
27
|
label: "Public",
|
|
25
28
|
description: "Anyone on Stigmer",
|
|
26
|
-
|
|
29
|
+
confirmDialog: {
|
|
30
|
+
title: "Make this public?",
|
|
31
|
+
description: "Anyone signed in to Stigmer will be able to view and use this resource. You can return it to a narrower visibility at any time.",
|
|
32
|
+
},
|
|
27
33
|
tone: "public",
|
|
28
34
|
};
|
|
29
35
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visibilityLevels.js","sourceRoot":"","sources":["../../src/library/visibilityLevels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;
|
|
1
|
+
{"version":3,"file":"visibilityLevels.js","sourceRoot":"","sources":["../../src/library/visibilityLevels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AA+C/F,MAAM,cAAc,GAA0B;IAC5C,KAAK,EAAE,qBAAqB,CAAC,kBAAkB;IAC/C,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,qBAAqB;IAClC,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,UAAU,GAA0B;IACxC,KAAK,EAAE,qBAAqB,CAAC,cAAc;IAC3C,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,kCAAkC;IAC/C,aAAa,EAAE,kCAAkC;IACjD,IAAI,EAAE,KAAK;CACZ,CAAC;AAEF,MAAM,eAAe,GAA0B;IAC7C,KAAK,EAAE,qBAAqB,CAAC,mBAAmB;IAChD,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,4CAA4C;IACzD,aAAa,EAAE;QACb,KAAK,EAAE,iCAAiC;QACxC,WAAW,EACT,iJAAiJ;KACpJ;IACD,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,MAAM,aAAa,GAA0B;IAC3C,KAAK,EAAE,qBAAqB,CAAC,iBAAiB;IAC9C,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE;QACb,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,iIAAiI;KACpI;IACD,IAAI,EAAE,QAAQ;CACf,CAAC;AAqBF;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAyC;IAEzC,IAAI,OAAO,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;QACvC,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,OAAO,CAAC,mBAAmB;QAChC,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,CAAC;QAC9D,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAqC;IAC1E,cAAc;IACd;QACE,GAAG,UAAU;QACb,WAAW,EAAE,qCAAqC;KACnD;IACD;QACE,GAAG,aAAa;QAChB,WAAW,EAAE,kCAAkC;KAChD;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAiC;IAEjC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,qBAAqB,CAAC,cAAc;YACvC,OAAO,UAAU,CAAC;QACpB,KAAK,qBAAqB,CAAC,mBAAmB;YAC5C,OAAO,eAAe,CAAC;QACzB,KAAK,qBAAqB,CAAC,iBAAiB;YAC1C,OAAO,aAAa,CAAC;QACvB;YACE,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAiC;IAC/D,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;AAC5C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stigmer/react",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.7-dev.20260611143057",
|
|
4
4
|
"description": "React provider and client hook for the Stigmer platform SDK",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@bufbuild/protovalidate": "^1.1.1",
|
|
39
39
|
"@dagrejs/dagre": "^1.1.4",
|
|
40
|
-
"@stigmer/theme": "3.0.
|
|
40
|
+
"@stigmer/theme": "3.0.7-dev.20260611143057",
|
|
41
41
|
"diff": "^8.0.3",
|
|
42
42
|
"fflate": "^0.8.2",
|
|
43
43
|
"react-markdown": "^10.1.0",
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"@base-ui/react": "^1.0.0",
|
|
51
51
|
"@bufbuild/protobuf": "^2.8.0",
|
|
52
|
-
"@stigmer/protos": "3.0.
|
|
53
|
-
"@stigmer/sdk": "3.0.
|
|
52
|
+
"@stigmer/protos": "3.0.7-dev.20260611143057",
|
|
53
|
+
"@stigmer/sdk": "3.0.7-dev.20260611143057",
|
|
54
54
|
"@tanstack/react-table": "^8.20.0",
|
|
55
55
|
"@xyflow/react": "^12.0.0",
|
|
56
56
|
"elkjs": "^0.9.0",
|
|
@@ -2,6 +2,9 @@ import { type ReactNode } from "react";
|
|
|
2
2
|
import type { ResourceRef } from "@stigmer/sdk";
|
|
3
3
|
import type { UseGitHubConnectionReturn } from "../github/useGitHubConnection";
|
|
4
4
|
import type { WorkspaceFileLister } from "../workspace/WorkspaceFileLister";
|
|
5
|
+
import type { HarnessOption } from "../models/harness";
|
|
6
|
+
import type { RuntimeEnvProvider } from "./runtime-env";
|
|
7
|
+
import type { SessionAudience } from "./audience";
|
|
5
8
|
/** Props for {@link NewSessionViewer}. */
|
|
6
9
|
export interface NewSessionViewerProps {
|
|
7
10
|
/** Organization slug. Required for session creation. */
|
|
@@ -31,6 +34,34 @@ export interface NewSessionViewerProps {
|
|
|
31
34
|
* expandable file tree. (DD-004 capability injection, DD-011 opt-in.)
|
|
32
35
|
*/
|
|
33
36
|
readonly workspaceFileLister?: WorkspaceFileLister;
|
|
37
|
+
/**
|
|
38
|
+
* Supplies host-app environment variables for the session's first
|
|
39
|
+
* execution (e.g. short-lived credentials for MCP tools, minted as
|
|
40
|
+
* the signed-in user). Evaluated at submit time, before the session
|
|
41
|
+
* is created; host values win over composer-collected env on key
|
|
42
|
+
* collisions. If the provider throws, the submission fails with an
|
|
43
|
+
* error surfaced via `onError` — see {@link RuntimeEnvProvider}.
|
|
44
|
+
*/
|
|
45
|
+
readonly getRuntimeEnv?: RuntimeEnvProvider;
|
|
46
|
+
/**
|
|
47
|
+
* Presentation audience for the launcher. `"endUser"` locks the
|
|
48
|
+
* pinned agent (when `initialAgentRef` is set) and hides the MCP
|
|
49
|
+
* server, skill, and session-variable pickers — for product-embedded
|
|
50
|
+
* chat where the agent is configured upstream by the platform. The
|
|
51
|
+
* model selector, interaction mode, harness selector, attachments,
|
|
52
|
+
* and workspace picker remain. See {@link SessionAudience}.
|
|
53
|
+
*
|
|
54
|
+
* @default "integrator"
|
|
55
|
+
*/
|
|
56
|
+
readonly audience?: SessionAudience;
|
|
57
|
+
/**
|
|
58
|
+
* Harness pre-selected for new sessions when the user has not made
|
|
59
|
+
* an explicit choice yet. The user can still switch before starting
|
|
60
|
+
* the session, and their explicit choice wins on subsequent visits.
|
|
61
|
+
*
|
|
62
|
+
* @default "native"
|
|
63
|
+
*/
|
|
64
|
+
readonly defaultHarness?: HarnessOption;
|
|
34
65
|
/** Agent to auto-select on mount (used for draft flows). */
|
|
35
66
|
readonly initialAgentRef?: ResourceRef;
|
|
36
67
|
/**
|
|
@@ -96,5 +127,5 @@ export interface NewSessionViewerProps {
|
|
|
96
127
|
* />
|
|
97
128
|
* ```
|
|
98
129
|
*/
|
|
99
|
-
export declare function NewSessionViewer({ org, onSessionCreated, onError, gitHubConnection, enableGitHub, enableLocal, onBrowseLocalFolder, workspaceFileLister, initialAgentRef, initialInstanceId, initialAttachments, heading, placeholder, initialRows, autoFocus, footerContent, className, }: NewSessionViewerProps): import("react/jsx-runtime").JSX.Element;
|
|
130
|
+
export declare function NewSessionViewer({ org, onSessionCreated, onError, gitHubConnection, enableGitHub, enableLocal, onBrowseLocalFolder, workspaceFileLister, getRuntimeEnv, audience, defaultHarness, initialAgentRef, initialInstanceId, initialAttachments, heading, placeholder, initialRows, autoFocus, footerContent, className, }: NewSessionViewerProps): import("react/jsx-runtime").JSX.Element;
|
|
100
131
|
//# sourceMappingURL=NewSessionViewer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NewSessionViewer.d.ts","sourceRoot":"","sources":["../../src/session/NewSessionViewer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"NewSessionViewer.d.ts","sourceRoot":"","sources":["../../src/session/NewSessionViewer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7C;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;IACtD,gEAAgE;IAChE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,gEAAgE;IAChE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE5D;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAEnD;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAE5C;;;;;;;;;OASG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAEpC;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC;IAExC,4DAA4D;IAC5D,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,2DAA2D;IAC3D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC;IAErC,kFAAkF;IAClF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;IAEnC,yDAAyD;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,gBAAgB,EAChB,OAAO,EACP,gBAAgB,EAChB,YAAmB,EACnB,WAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,QAAuB,EACvB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,OAA2C,EAC3C,WAAsD,EACtD,WAAe,EACf,SAAgB,EAChB,aAAa,EACb,SAAS,GACV,EAAE,qBAAqB,2CAgLvB"}
|