@midscene/visualizer 1.7.9 → 1.7.10-beta-20260507123827.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/es/component/playground/index.css +61 -11
- package/dist/es/component/prompt-input/index.css +61 -11
- package/dist/es/component/prompt-input/index.mjs +144 -111
- package/dist/es/component/screenshot-viewer/index.css +6 -0
- package/dist/es/component/screenshot-viewer/index.mjs +7 -3
- package/dist/es/component/universal-playground/empty-state.mjs +5 -0
- package/dist/es/component/universal-playground/index.css +8 -0
- package/dist/es/component/universal-playground/index.mjs +53 -1
- package/dist/es/icons/action-chevron.mjs +61 -0
- package/dist/es/icons/prompt-history.mjs +70 -0
- package/dist/es/utils/empty-state-scroll.mjs +8 -0
- package/dist/es/utils/playground-utils.mjs +1 -18
- package/dist/es/utils/prompt-input-utils.mjs +9 -1
- package/dist/es/utils/prompt-placeholder.mjs +19 -0
- package/dist/lib/component/playground/index.css +61 -11
- package/dist/lib/component/prompt-input/index.css +61 -11
- package/dist/lib/component/prompt-input/index.js +145 -111
- package/dist/lib/component/screenshot-viewer/index.css +6 -0
- package/dist/lib/component/screenshot-viewer/index.js +7 -3
- package/dist/lib/component/universal-playground/empty-state.js +39 -0
- package/dist/lib/component/universal-playground/index.css +8 -0
- package/dist/lib/component/universal-playground/index.js +53 -1
- package/dist/lib/icons/action-chevron.js +95 -0
- package/dist/lib/icons/prompt-history.js +104 -0
- package/dist/lib/utils/empty-state-scroll.js +42 -0
- package/dist/lib/utils/playground-utils.js +2 -19
- package/dist/lib/utils/prompt-input-utils.js +12 -1
- package/dist/lib/utils/prompt-placeholder.js +53 -0
- package/dist/types/component/prompt-input/index.d.ts +1 -2
- package/dist/types/component/screenshot-viewer/index.d.ts +4 -0
- package/dist/types/component/universal-playground/empty-state.d.ts +3 -0
- package/dist/types/types.d.ts +6 -0
- package/dist/types/utils/empty-state-scroll.d.ts +11 -0
- package/dist/types/utils/playground-utils.d.ts +1 -1
- package/dist/types/utils/prompt-input-utils.d.ts +1 -0
- package/dist/types/utils/prompt-placeholder.d.ts +1 -0
- package/package.json +13 -6
|
@@ -11,9 +11,12 @@ import { PlaygroundResultView } from "../playground-result/index.mjs";
|
|
|
11
11
|
import "./index.css";
|
|
12
12
|
import avatar from "../../icons/avatar.mjs";
|
|
13
13
|
import { defaultMainButtons } from "../../utils/constants.mjs";
|
|
14
|
+
import { calculateEmptyStatePromptScrollTop } from "../../utils/empty-state-scroll.mjs";
|
|
14
15
|
import { resolveProgressActionIcon } from "../../utils/progress-action-icon.mjs";
|
|
16
|
+
import { shouldOffsetEmptyStateForPromptInput } from "../../utils/prompt-input-utils.mjs";
|
|
15
17
|
import { PromptInput } from "../prompt-input/index.mjs";
|
|
16
18
|
import shiny_text from "../shiny-text/index.mjs";
|
|
19
|
+
import { shouldRenderCustomEmptyState } from "./empty-state.mjs";
|
|
17
20
|
import { createStorageProvider, detectBestStorageType } from "./providers/storage-provider.mjs";
|
|
18
21
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
19
22
|
try {
|
|
@@ -195,6 +198,52 @@ function UniversalPlayground({ playgroundSDK, storage, contextProvider, config:
|
|
|
195
198
|
}, [
|
|
196
199
|
infoList
|
|
197
200
|
]);
|
|
201
|
+
const renderCustomEmptyState = shouldRenderCustomEmptyState(visibleInfoList, componentConfig.emptyState);
|
|
202
|
+
const shouldOffsetEmptyStateForPrompt = useMemo(()=>renderCustomEmptyState && shouldOffsetEmptyStateForPromptInput(actionSpace, selectedType), [
|
|
203
|
+
actionSpace,
|
|
204
|
+
renderCustomEmptyState,
|
|
205
|
+
selectedType
|
|
206
|
+
]);
|
|
207
|
+
useEffect(()=>{
|
|
208
|
+
if (!shouldOffsetEmptyStateForPrompt) return;
|
|
209
|
+
const adjustEmptyStateScroll = ()=>{
|
|
210
|
+
const container = infoListRef.current;
|
|
211
|
+
if (!container) return;
|
|
212
|
+
const wrapper = container.querySelector('.playground-empty-state-wrapper');
|
|
213
|
+
const contentStart = null == wrapper ? void 0 : wrapper.querySelector('[data-playground-empty-state-content-start]');
|
|
214
|
+
const contentEnd = null == wrapper ? void 0 : wrapper.querySelector('[data-playground-empty-state-content-end]');
|
|
215
|
+
if (!(contentStart instanceof HTMLElement) || !(contentEnd instanceof HTMLElement)) return;
|
|
216
|
+
const containerRect = container.getBoundingClientRect();
|
|
217
|
+
const startRect = contentStart.getBoundingClientRect();
|
|
218
|
+
const endRect = contentEnd.getBoundingClientRect();
|
|
219
|
+
const top = calculateEmptyStatePromptScrollTop({
|
|
220
|
+
currentScrollTop: container.scrollTop,
|
|
221
|
+
maxScrollTop: Math.max(0, container.scrollHeight - container.clientHeight),
|
|
222
|
+
containerTop: containerRect.top,
|
|
223
|
+
containerBottom: containerRect.bottom,
|
|
224
|
+
contentStartTop: startRect.top,
|
|
225
|
+
contentEndBottom: endRect.bottom
|
|
226
|
+
});
|
|
227
|
+
container.scrollTo({
|
|
228
|
+
top,
|
|
229
|
+
behavior: 'auto'
|
|
230
|
+
});
|
|
231
|
+
};
|
|
232
|
+
const animationFrameId = window.requestAnimationFrame(adjustEmptyStateScroll);
|
|
233
|
+
const timeoutId = window.setTimeout(adjustEmptyStateScroll, 160);
|
|
234
|
+
return ()=>{
|
|
235
|
+
window.cancelAnimationFrame(animationFrameId);
|
|
236
|
+
window.clearTimeout(timeoutId);
|
|
237
|
+
};
|
|
238
|
+
}, [
|
|
239
|
+
infoListRef,
|
|
240
|
+
selectedType,
|
|
241
|
+
shouldOffsetEmptyStateForPrompt
|
|
242
|
+
]);
|
|
243
|
+
const emptyStateWrapperClassName = [
|
|
244
|
+
'playground-empty-state-wrapper',
|
|
245
|
+
shouldOffsetEmptyStateForPrompt ? 'playground-empty-state-wrapper-offset-for-prompt' : ''
|
|
246
|
+
].filter(Boolean).join(' ');
|
|
198
247
|
return /*#__PURE__*/ jsx("div", {
|
|
199
248
|
className: `playground-container ${layout}-mode ${className}`.trim(),
|
|
200
249
|
children: /*#__PURE__*/ jsxs(Form, {
|
|
@@ -226,7 +275,10 @@ function UniversalPlayground({ playgroundSDK, storage, contextProvider, config:
|
|
|
226
275
|
/*#__PURE__*/ jsx("div", {
|
|
227
276
|
ref: infoListRef,
|
|
228
277
|
className: "info-list-container",
|
|
229
|
-
children: /*#__PURE__*/ jsx(
|
|
278
|
+
children: renderCustomEmptyState ? /*#__PURE__*/ jsx("div", {
|
|
279
|
+
className: emptyStateWrapperClassName,
|
|
280
|
+
children: componentConfig.emptyState
|
|
281
|
+
}) : /*#__PURE__*/ jsx(List, {
|
|
230
282
|
itemLayout: "vertical",
|
|
231
283
|
dataSource: visibleInfoList,
|
|
232
284
|
renderItem: (item)=>/*#__PURE__*/ jsxs(List.Item, {
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
function _define_property(obj, key, value) {
|
|
4
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
5
|
+
value: value,
|
|
6
|
+
enumerable: true,
|
|
7
|
+
configurable: true,
|
|
8
|
+
writable: true
|
|
9
|
+
});
|
|
10
|
+
else obj[key] = value;
|
|
11
|
+
return obj;
|
|
12
|
+
}
|
|
13
|
+
function _object_spread(target) {
|
|
14
|
+
for(var i = 1; i < arguments.length; i++){
|
|
15
|
+
var source = null != arguments[i] ? arguments[i] : {};
|
|
16
|
+
var ownKeys = Object.keys(source);
|
|
17
|
+
if ("function" == typeof Object.getOwnPropertySymbols) ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
18
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
19
|
+
}));
|
|
20
|
+
ownKeys.forEach(function(key) {
|
|
21
|
+
_define_property(target, key, source[key]);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return target;
|
|
25
|
+
}
|
|
26
|
+
function action_chevron_ownKeys(object, enumerableOnly) {
|
|
27
|
+
var keys = Object.keys(object);
|
|
28
|
+
if (Object.getOwnPropertySymbols) {
|
|
29
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
30
|
+
if (enumerableOnly) symbols = symbols.filter(function(sym) {
|
|
31
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
32
|
+
});
|
|
33
|
+
keys.push.apply(keys, symbols);
|
|
34
|
+
}
|
|
35
|
+
return keys;
|
|
36
|
+
}
|
|
37
|
+
function _object_spread_props(target, source) {
|
|
38
|
+
source = null != source ? source : {};
|
|
39
|
+
if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
40
|
+
else action_chevron_ownKeys(Object(source)).forEach(function(key) {
|
|
41
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
42
|
+
});
|
|
43
|
+
return target;
|
|
44
|
+
}
|
|
45
|
+
const SvgActionChevron = (props)=>/*#__PURE__*/ jsx("svg", _object_spread_props(_object_spread({
|
|
46
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
47
|
+
width: 6,
|
|
48
|
+
height: 10,
|
|
49
|
+
fill: "none",
|
|
50
|
+
viewBox: "0 0 6 10"
|
|
51
|
+
}, props), {
|
|
52
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
53
|
+
fill: "#000",
|
|
54
|
+
fillOpacity: 0.25,
|
|
55
|
+
fillRule: "evenodd",
|
|
56
|
+
d: "M.195 9.138a.667.667 0 0 1 0-.943l3.529-3.528L.195 1.138a.667.667 0 0 1 .943-.943l4 4c.26.26.26.683 0 .943l-4 4a.667.667 0 0 1-.943 0",
|
|
57
|
+
clipRule: "evenodd"
|
|
58
|
+
})
|
|
59
|
+
}));
|
|
60
|
+
const action_chevron = SvgActionChevron;
|
|
61
|
+
export { action_chevron as default };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
function _define_property(obj, key, value) {
|
|
4
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
5
|
+
value: value,
|
|
6
|
+
enumerable: true,
|
|
7
|
+
configurable: true,
|
|
8
|
+
writable: true
|
|
9
|
+
});
|
|
10
|
+
else obj[key] = value;
|
|
11
|
+
return obj;
|
|
12
|
+
}
|
|
13
|
+
function _object_spread(target) {
|
|
14
|
+
for(var i = 1; i < arguments.length; i++){
|
|
15
|
+
var source = null != arguments[i] ? arguments[i] : {};
|
|
16
|
+
var ownKeys = Object.keys(source);
|
|
17
|
+
if ("function" == typeof Object.getOwnPropertySymbols) ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
18
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
19
|
+
}));
|
|
20
|
+
ownKeys.forEach(function(key) {
|
|
21
|
+
_define_property(target, key, source[key]);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return target;
|
|
25
|
+
}
|
|
26
|
+
function prompt_history_ownKeys(object, enumerableOnly) {
|
|
27
|
+
var keys = Object.keys(object);
|
|
28
|
+
if (Object.getOwnPropertySymbols) {
|
|
29
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
30
|
+
if (enumerableOnly) symbols = symbols.filter(function(sym) {
|
|
31
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
32
|
+
});
|
|
33
|
+
keys.push.apply(keys, symbols);
|
|
34
|
+
}
|
|
35
|
+
return keys;
|
|
36
|
+
}
|
|
37
|
+
function _object_spread_props(target, source) {
|
|
38
|
+
source = null != source ? source : {};
|
|
39
|
+
if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
40
|
+
else prompt_history_ownKeys(Object(source)).forEach(function(key) {
|
|
41
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
42
|
+
});
|
|
43
|
+
return target;
|
|
44
|
+
}
|
|
45
|
+
const SvgPromptHistory = (props)=>/*#__PURE__*/ jsxs("svg", _object_spread_props(_object_spread({
|
|
46
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
47
|
+
width: 16,
|
|
48
|
+
height: 16,
|
|
49
|
+
fill: "none",
|
|
50
|
+
viewBox: "0 0 16 16"
|
|
51
|
+
}, props), {
|
|
52
|
+
children: [
|
|
53
|
+
/*#__PURE__*/ jsx("path", {
|
|
54
|
+
stroke: "#878787",
|
|
55
|
+
strokeLinecap: "round",
|
|
56
|
+
strokeLinejoin: "round",
|
|
57
|
+
strokeWidth: 1.33,
|
|
58
|
+
d: "M1.505 4.164c-2.862 6.126 2.197 10.501 6.063 10.501a7 7 0 1 0-6.063-10.5"
|
|
59
|
+
}),
|
|
60
|
+
/*#__PURE__*/ jsx("path", {
|
|
61
|
+
stroke: "#878787",
|
|
62
|
+
strokeLinecap: "round",
|
|
63
|
+
strokeLinejoin: "round",
|
|
64
|
+
strokeWidth: 1.33,
|
|
65
|
+
d: "M7.57 3.465v4.203l2.967 2.968"
|
|
66
|
+
})
|
|
67
|
+
]
|
|
68
|
+
}));
|
|
69
|
+
const prompt_history = SvgPromptHistory;
|
|
70
|
+
export { prompt_history as default };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const DEFAULT_SAFE_MARGIN = 24;
|
|
2
|
+
function calculateEmptyStatePromptScrollTop({ currentScrollTop, maxScrollTop, containerTop, containerBottom, contentStartTop, contentEndBottom, topSafeMargin = DEFAULT_SAFE_MARGIN, bottomSafeMargin = DEFAULT_SAFE_MARGIN }) {
|
|
3
|
+
const scrollForContentEnd = currentScrollTop + contentEndBottom - (containerBottom - bottomSafeMargin);
|
|
4
|
+
const maxScrollWithContentStartVisible = currentScrollTop + contentStartTop - (containerTop + topSafeMargin);
|
|
5
|
+
const targetScrollTop = Math.min(scrollForContentEnd, maxScrollWithContentStartVisible, maxScrollTop);
|
|
6
|
+
return Math.max(0, Math.round(targetScrollTop));
|
|
7
|
+
}
|
|
8
|
+
export { calculateEmptyStatePromptScrollTop };
|
|
@@ -1,28 +1,11 @@
|
|
|
1
1
|
import { StaticPage, StaticPageAgent } from "@midscene/web/static";
|
|
2
2
|
import { isZodObjectSchema, unwrapZodType } from "../types.mjs";
|
|
3
3
|
import { actionNameForType } from "./action-label.mjs";
|
|
4
|
+
import { getPlaceholderForType } from "./prompt-placeholder.mjs";
|
|
4
5
|
const staticAgentFromContext = (context)=>{
|
|
5
6
|
const page = new StaticPage(context);
|
|
6
7
|
return new StaticPageAgent(page);
|
|
7
8
|
};
|
|
8
|
-
const getPlaceholderForType = (type)=>{
|
|
9
|
-
if ('aiQuery' === type) return 'What do you want to query?';
|
|
10
|
-
if ('aiAssert' === type) return 'What do you want to assert?';
|
|
11
|
-
if ('aiTap' === type) return 'What element do you want to tap?';
|
|
12
|
-
if ('aiDoubleClick' === type) return 'What element do you want to double-click?';
|
|
13
|
-
if ('aiHover' === type) return 'What element do you want to hover over?';
|
|
14
|
-
if ('aiInput' === type) return 'Format: <value> | <element>\nExample: hello world | search box';
|
|
15
|
-
if ('aiRightClick' === type) return 'What element do you want to right-click?';
|
|
16
|
-
if ('aiKeyboardPress' === type) return 'Format: <key> | <element (optional)>\nExample: Enter | text field';
|
|
17
|
-
if ('aiScroll' === type) return 'Format: <direction> <amount> | <element (optional)>\nExample: down 500 | main content';
|
|
18
|
-
if ('aiLocate' === type) return 'What element do you want to locate?';
|
|
19
|
-
if ('aiBoolean' === type) return 'What do you want to check (returns true/false)?';
|
|
20
|
-
if ('aiNumber' === type) return 'What number do you want to extract?';
|
|
21
|
-
if ('aiString' === type) return 'What text do you want to extract?';
|
|
22
|
-
if ('aiAsk' === type) return 'What do you want to ask?';
|
|
23
|
-
if ('aiWaitFor' === type) return 'What condition do you want to wait for?';
|
|
24
|
-
return 'What do you want to do?';
|
|
25
|
-
};
|
|
26
9
|
const isRunButtonEnabled = (runButtonEnabled, needsStructuredParams, params, actionSpace, selectedType, promptValue)=>{
|
|
27
10
|
if (!runButtonEnabled) return false;
|
|
28
11
|
const needsAnyInput = (()=>{
|
|
@@ -42,4 +42,12 @@ const getInlineStructuredFieldConfig = (actionSpace, selectedType)=>{
|
|
|
42
42
|
placeholder
|
|
43
43
|
};
|
|
44
44
|
};
|
|
45
|
-
|
|
45
|
+
const shouldOffsetEmptyStateForPromptInput = (actionSpace, selectedType)=>{
|
|
46
|
+
if (!(null == actionSpace ? void 0 : actionSpace.length) || !selectedType) return false;
|
|
47
|
+
if (getInlineStructuredFieldConfig(actionSpace, selectedType)) return false;
|
|
48
|
+
const action = actionSpace.find((item)=>item.interfaceAlias === selectedType || item.name === selectedType);
|
|
49
|
+
if (!(null == action ? void 0 : action.paramSchema) || !isZodObjectSchema(action.paramSchema)) return false;
|
|
50
|
+
const schema = action.paramSchema;
|
|
51
|
+
return Object.keys(schema.shape || {}).length > 1;
|
|
52
|
+
};
|
|
53
|
+
export { getAvailablePromptActionTypes, getInlineStructuredFieldConfig, shouldOffsetEmptyStateForPromptInput };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const getPlaceholderForType = (type)=>{
|
|
2
|
+
if ('aiQuery' === type) return 'What do you want to query?';
|
|
3
|
+
if ('aiAssert' === type) return 'What do you want to assert?';
|
|
4
|
+
if ('aiTap' === type) return 'What element do you want to tap?';
|
|
5
|
+
if ('aiDoubleClick' === type) return 'What element do you want to double-click?';
|
|
6
|
+
if ('aiHover' === type) return 'What element do you want to hover over?';
|
|
7
|
+
if ('aiInput' === type) return 'Format: <value> | <element>\nExample: hello world | search box';
|
|
8
|
+
if ('aiRightClick' === type) return 'What element do you want to right-click?';
|
|
9
|
+
if ('aiKeyboardPress' === type) return 'Format: <key> | <element (optional)>\nExample: Enter | text field';
|
|
10
|
+
if ('aiScroll' === type) return 'Format: <direction> <amount> | <element (optional)>\nExample: down 500 | main content';
|
|
11
|
+
if ('aiLocate' === type) return 'What element do you want to locate?';
|
|
12
|
+
if ('aiBoolean' === type) return 'What do you want to check (returns true/false)?';
|
|
13
|
+
if ('aiNumber' === type) return 'What number do you want to extract?';
|
|
14
|
+
if ('aiString' === type) return 'What text do you want to extract?';
|
|
15
|
+
if ('aiAsk' === type) return 'What do you want to ask?';
|
|
16
|
+
if ('aiWaitFor' === type) return 'What condition do you want to wait for?';
|
|
17
|
+
return 'What do you want to do?';
|
|
18
|
+
};
|
|
19
|
+
export { getPlaceholderForType };
|
|
@@ -586,7 +586,7 @@
|
|
|
586
586
|
|
|
587
587
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-toolbar-left {
|
|
588
588
|
align-items: center;
|
|
589
|
-
gap:
|
|
589
|
+
gap: 2px;
|
|
590
590
|
min-width: 0;
|
|
591
591
|
display: flex;
|
|
592
592
|
}
|
|
@@ -606,11 +606,12 @@
|
|
|
606
606
|
border-radius: 32px;
|
|
607
607
|
gap: 4px;
|
|
608
608
|
height: 32px;
|
|
609
|
-
|
|
609
|
+
margin-right: 16px;
|
|
610
|
+
padding: 4px 0;
|
|
610
611
|
}
|
|
611
612
|
|
|
612
613
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-action-trigger:hover {
|
|
613
|
-
|
|
614
|
+
color: #5f6368;
|
|
614
615
|
}
|
|
615
616
|
|
|
616
617
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-action-trigger:disabled {
|
|
@@ -642,11 +643,11 @@
|
|
|
642
643
|
|
|
643
644
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-action-chevron {
|
|
644
645
|
object-fit: contain;
|
|
645
|
-
opacity:
|
|
646
|
-
width:
|
|
647
|
-
height:
|
|
648
|
-
margin-left:
|
|
649
|
-
|
|
646
|
+
opacity: 1;
|
|
647
|
+
width: 6px;
|
|
648
|
+
height: 10px;
|
|
649
|
+
margin-left: 0;
|
|
650
|
+
display: block;
|
|
650
651
|
}
|
|
651
652
|
|
|
652
653
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-action-chevron-fallback {
|
|
@@ -669,7 +670,7 @@
|
|
|
669
670
|
}
|
|
670
671
|
|
|
671
672
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-icon-trigger:hover {
|
|
672
|
-
background: rgba(0, 0, 0, .
|
|
673
|
+
background: rgba(0, 0, 0, .04);
|
|
673
674
|
}
|
|
674
675
|
|
|
675
676
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-toolbar-icon {
|
|
@@ -679,8 +680,8 @@
|
|
|
679
680
|
}
|
|
680
681
|
|
|
681
682
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-toolbar-icon-history {
|
|
682
|
-
width:
|
|
683
|
-
height:
|
|
683
|
+
width: 16px;
|
|
684
|
+
height: 16px;
|
|
684
685
|
}
|
|
685
686
|
|
|
686
687
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-toolbar-icon-fallback {
|
|
@@ -695,6 +696,55 @@
|
|
|
695
696
|
position: static;
|
|
696
697
|
}
|
|
697
698
|
|
|
699
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger {
|
|
700
|
+
width: 32px;
|
|
701
|
+
min-width: 32px;
|
|
702
|
+
height: 32px;
|
|
703
|
+
box-shadow: none;
|
|
704
|
+
color: #fff;
|
|
705
|
+
background: #1979ff;
|
|
706
|
+
border: none;
|
|
707
|
+
border-radius: 50%;
|
|
708
|
+
justify-content: center;
|
|
709
|
+
align-items: center;
|
|
710
|
+
padding: 0;
|
|
711
|
+
display: inline-flex;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger:hover {
|
|
715
|
+
color: #fff;
|
|
716
|
+
background: #0f6ff0;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger:focus-visible {
|
|
720
|
+
color: #fff;
|
|
721
|
+
background: #0f6ff0;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger:disabled {
|
|
725
|
+
color: #bfbfbf;
|
|
726
|
+
background: #f0f0f0;
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger .anticon {
|
|
730
|
+
font-size: 16px;
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger-stop {
|
|
734
|
+
color: #666;
|
|
735
|
+
background: #f0f0f0;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger-stop:hover {
|
|
739
|
+
color: #333;
|
|
740
|
+
background: #e6e6e6;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger-stop:focus-visible {
|
|
744
|
+
color: #333;
|
|
745
|
+
background: #e6e6e6;
|
|
746
|
+
}
|
|
747
|
+
|
|
698
748
|
.more-apis-dropdown .ant-dropdown-menu {
|
|
699
749
|
scrollbar-width: thin;
|
|
700
750
|
max-height: 400px;
|
|
@@ -494,7 +494,7 @@
|
|
|
494
494
|
|
|
495
495
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-toolbar-left {
|
|
496
496
|
align-items: center;
|
|
497
|
-
gap:
|
|
497
|
+
gap: 2px;
|
|
498
498
|
min-width: 0;
|
|
499
499
|
display: flex;
|
|
500
500
|
}
|
|
@@ -514,11 +514,12 @@
|
|
|
514
514
|
border-radius: 32px;
|
|
515
515
|
gap: 4px;
|
|
516
516
|
height: 32px;
|
|
517
|
-
|
|
517
|
+
margin-right: 16px;
|
|
518
|
+
padding: 4px 0;
|
|
518
519
|
}
|
|
519
520
|
|
|
520
521
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-action-trigger:hover {
|
|
521
|
-
|
|
522
|
+
color: #5f6368;
|
|
522
523
|
}
|
|
523
524
|
|
|
524
525
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-action-trigger:disabled {
|
|
@@ -550,11 +551,11 @@
|
|
|
550
551
|
|
|
551
552
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-action-chevron {
|
|
552
553
|
object-fit: contain;
|
|
553
|
-
opacity:
|
|
554
|
-
width:
|
|
555
|
-
height:
|
|
556
|
-
margin-left:
|
|
557
|
-
|
|
554
|
+
opacity: 1;
|
|
555
|
+
width: 6px;
|
|
556
|
+
height: 10px;
|
|
557
|
+
margin-left: 0;
|
|
558
|
+
display: block;
|
|
558
559
|
}
|
|
559
560
|
|
|
560
561
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-action-chevron-fallback {
|
|
@@ -577,7 +578,7 @@
|
|
|
577
578
|
}
|
|
578
579
|
|
|
579
580
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-icon-trigger:hover {
|
|
580
|
-
background: rgba(0, 0, 0, .
|
|
581
|
+
background: rgba(0, 0, 0, .04);
|
|
581
582
|
}
|
|
582
583
|
|
|
583
584
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-toolbar-icon {
|
|
@@ -587,8 +588,8 @@
|
|
|
587
588
|
}
|
|
588
589
|
|
|
589
590
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-toolbar-icon-history {
|
|
590
|
-
width:
|
|
591
|
-
height:
|
|
591
|
+
width: 16px;
|
|
592
|
+
height: 16px;
|
|
592
593
|
}
|
|
593
594
|
|
|
594
595
|
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-toolbar-icon-fallback {
|
|
@@ -603,6 +604,55 @@
|
|
|
603
604
|
position: static;
|
|
604
605
|
}
|
|
605
606
|
|
|
607
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger {
|
|
608
|
+
width: 32px;
|
|
609
|
+
min-width: 32px;
|
|
610
|
+
height: 32px;
|
|
611
|
+
box-shadow: none;
|
|
612
|
+
color: #fff;
|
|
613
|
+
background: #1979ff;
|
|
614
|
+
border: none;
|
|
615
|
+
border-radius: 50%;
|
|
616
|
+
justify-content: center;
|
|
617
|
+
align-items: center;
|
|
618
|
+
padding: 0;
|
|
619
|
+
display: inline-flex;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger:hover {
|
|
623
|
+
color: #fff;
|
|
624
|
+
background: #0f6ff0;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger:focus-visible {
|
|
628
|
+
color: #fff;
|
|
629
|
+
background: #0f6ff0;
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger:disabled {
|
|
633
|
+
color: #bfbfbf;
|
|
634
|
+
background: #f0f0f0;
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger .anticon {
|
|
638
|
+
font-size: 16px;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger-stop {
|
|
642
|
+
color: #666;
|
|
643
|
+
background: #f0f0f0;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger-stop:hover {
|
|
647
|
+
color: #333;
|
|
648
|
+
background: #e6e6e6;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
.prompt-input-wrapper-minimal .minimal-main-side-console-input .minimal-run-trigger-stop:focus-visible {
|
|
652
|
+
color: #333;
|
|
653
|
+
background: #e6e6e6;
|
|
654
|
+
}
|
|
655
|
+
|
|
606
656
|
.more-apis-dropdown .ant-dropdown-menu {
|
|
607
657
|
scrollbar-width: thin;
|
|
608
658
|
max-height: 400px;
|