@godscene/playground-electron 1.7.11

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 (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +4 -0
  3. package/dist/es/DeviceInteractionLayer.mjs +383 -0
  4. package/dist/es/PlaygroundApp.css +207 -0
  5. package/dist/es/PlaygroundApp.mjs +776 -0
  6. package/dist/es/PlaygroundPreview.mjs +29 -0
  7. package/dist/es/PlaygroundThemeProvider.mjs +10 -0
  8. package/dist/es/PreviewRenderer.mjs +270 -0
  9. package/dist/es/ScrcpyPanel.mjs +390 -0
  10. package/dist/es/SessionSetupPanel.css +299 -0
  11. package/dist/es/SessionSetupPanel.mjs +169 -0
  12. package/dist/es/components/Header/index.css +19 -0
  13. package/dist/es/components/Header/index.mjs +37 -0
  14. package/dist/es/components/Nav/index.css +15 -0
  15. package/dist/es/components/Nav/index.mjs +93 -0
  16. package/dist/es/components/WinControlTool/index.css +5 -0
  17. package/dist/es/components/WinControlTool/index.mjs +76 -0
  18. package/dist/es/controller/ai-config.mjs +40 -0
  19. package/dist/es/controller/auto-create.mjs +19 -0
  20. package/dist/es/controller/selectors.mjs +78 -0
  21. package/dist/es/controller/single-flight.mjs +13 -0
  22. package/dist/es/controller/types.mjs +0 -0
  23. package/dist/es/controller/usePlaygroundController.mjs +400 -0
  24. package/dist/es/icons/dropdown-chevron.mjs +61 -0
  25. package/dist/es/icons/midscene-logo.mjs +247 -0
  26. package/dist/es/icons/server-offline-background.mjs +102 -0
  27. package/dist/es/icons/server-offline-foreground.mjs +200 -0
  28. package/dist/es/index.mjs +7 -0
  29. package/dist/es/manual-interaction.mjs +56 -0
  30. package/dist/es/panels/PlaygroundConversationPanel.css +20 -0
  31. package/dist/es/panels/PlaygroundConversationPanel.mjs +140 -0
  32. package/dist/es/runtime-info.mjs +128 -0
  33. package/dist/es/scrcpy-preview.mjs +30 -0
  34. package/dist/es/scrcpy-stream.mjs +53 -0
  35. package/dist/es/session-setup.mjs +13 -0
  36. package/dist/es/session-state.mjs +32 -0
  37. package/dist/es/useServerStatus.mjs +120 -0
  38. package/dist/lib/DeviceInteractionLayer.js +434 -0
  39. package/dist/lib/PlaygroundApp.css +207 -0
  40. package/dist/lib/PlaygroundApp.js +821 -0
  41. package/dist/lib/PlaygroundPreview.js +63 -0
  42. package/dist/lib/PlaygroundThemeProvider.js +44 -0
  43. package/dist/lib/PreviewRenderer.js +304 -0
  44. package/dist/lib/ScrcpyPanel.js +424 -0
  45. package/dist/lib/SessionSetupPanel.css +299 -0
  46. package/dist/lib/SessionSetupPanel.js +217 -0
  47. package/dist/lib/components/Header/index.css +19 -0
  48. package/dist/lib/components/Header/index.js +81 -0
  49. package/dist/lib/components/Nav/index.css +15 -0
  50. package/dist/lib/components/Nav/index.js +127 -0
  51. package/dist/lib/components/WinControlTool/index.css +5 -0
  52. package/dist/lib/components/WinControlTool/index.js +110 -0
  53. package/dist/lib/controller/ai-config.js +80 -0
  54. package/dist/lib/controller/auto-create.js +59 -0
  55. package/dist/lib/controller/selectors.js +115 -0
  56. package/dist/lib/controller/single-flight.js +47 -0
  57. package/dist/lib/controller/types.js +18 -0
  58. package/dist/lib/controller/usePlaygroundController.js +434 -0
  59. package/dist/lib/icons/dropdown-chevron.js +95 -0
  60. package/dist/lib/icons/midscene-logo.js +281 -0
  61. package/dist/lib/icons/server-offline-background.js +136 -0
  62. package/dist/lib/icons/server-offline-foreground.js +234 -0
  63. package/dist/lib/index.js +56 -0
  64. package/dist/lib/manual-interaction.js +90 -0
  65. package/dist/lib/panels/PlaygroundConversationPanel.css +20 -0
  66. package/dist/lib/panels/PlaygroundConversationPanel.js +174 -0
  67. package/dist/lib/runtime-info.js +174 -0
  68. package/dist/lib/scrcpy-preview.js +79 -0
  69. package/dist/lib/scrcpy-stream.js +87 -0
  70. package/dist/lib/session-setup.js +47 -0
  71. package/dist/lib/session-state.js +69 -0
  72. package/dist/lib/useServerStatus.js +154 -0
  73. package/dist/types/DeviceInteractionLayer.d.ts +50 -0
  74. package/dist/types/PlaygroundApp.d.ts +14 -0
  75. package/dist/types/PlaygroundPreview.d.ts +22 -0
  76. package/dist/types/PlaygroundThemeProvider.d.ts +2 -0
  77. package/dist/types/PreviewRenderer.d.ts +27 -0
  78. package/dist/types/ScrcpyPanel.d.ts +21 -0
  79. package/dist/types/SessionSetupPanel.d.ts +16 -0
  80. package/dist/types/components/Header/index.d.ts +3 -0
  81. package/dist/types/components/Nav/index.d.ts +3 -0
  82. package/dist/types/components/WinControlTool/index.d.ts +3 -0
  83. package/dist/types/controller/ai-config.d.ts +5 -0
  84. package/dist/types/controller/auto-create.d.ts +15 -0
  85. package/dist/types/controller/selectors.d.ts +5 -0
  86. package/dist/types/controller/single-flight.d.ts +3 -0
  87. package/dist/types/controller/types.d.ts +36 -0
  88. package/dist/types/controller/usePlaygroundController.d.ts +16 -0
  89. package/dist/types/index.d.ts +13 -0
  90. package/dist/types/manual-interaction.d.ts +21 -0
  91. package/dist/types/panels/PlaygroundConversationPanel.d.ts +25 -0
  92. package/dist/types/runtime-info.d.ts +22 -0
  93. package/dist/types/scrcpy-preview.d.ts +11 -0
  94. package/dist/types/scrcpy-stream.d.ts +16 -0
  95. package/dist/types/session-setup.d.ts +2 -0
  96. package/dist/types/session-state.d.ts +9 -0
  97. package/dist/types/useServerStatus.d.ts +12 -0
  98. package/package.json +69 -0
@@ -0,0 +1,400 @@
1
+ import { PlaygroundSDK } from "@godscene/playground";
2
+ import { useEnvConfig } from "@godscene/visualizer";
3
+ import { Form, message } from "antd";
4
+ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
5
+ import { resolveAutoCreateSessionInput } from "../session-setup.mjs";
6
+ import { buildSessionInitialValues, resolveSessionViewState } from "../session-state.mjs";
7
+ import { useServerStatus } from "../useServerStatus.mjs";
8
+ import { applyPlaygroundAiConfig, hasPlaygroundAiConfig, serializePlaygroundAiConfig } from "./ai-config.mjs";
9
+ import { resolveAutoCreateDecision, serializeAutoCreateInput, shouldResetAutoCreateBlock } from "./auto-create.mjs";
10
+ import { runSingleFlight } from "./single-flight.mjs";
11
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
12
+ try {
13
+ var info = gen[key](arg);
14
+ var value = info.value;
15
+ } catch (error) {
16
+ reject(error);
17
+ return;
18
+ }
19
+ if (info.done) resolve(value);
20
+ else Promise.resolve(value).then(_next, _throw);
21
+ }
22
+ function _async_to_generator(fn) {
23
+ return function() {
24
+ var self = this, args = arguments;
25
+ return new Promise(function(resolve, reject) {
26
+ var gen = fn.apply(self, args);
27
+ function _next(value) {
28
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
29
+ }
30
+ function _throw(err) {
31
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
32
+ }
33
+ _next(void 0);
34
+ });
35
+ };
36
+ }
37
+ function _define_property(obj, key, value) {
38
+ if (key in obj) Object.defineProperty(obj, key, {
39
+ value: value,
40
+ enumerable: true,
41
+ configurable: true,
42
+ writable: true
43
+ });
44
+ else obj[key] = value;
45
+ return obj;
46
+ }
47
+ function _object_spread(target) {
48
+ for(var i = 1; i < arguments.length; i++){
49
+ var source = null != arguments[i] ? arguments[i] : {};
50
+ var ownKeys = Object.keys(source);
51
+ if ("function" == typeof Object.getOwnPropertySymbols) ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
52
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
53
+ }));
54
+ ownKeys.forEach(function(key) {
55
+ _define_property(target, key, source[key]);
56
+ });
57
+ }
58
+ return target;
59
+ }
60
+ function usePlaygroundController_ownKeys(object, enumerableOnly) {
61
+ var keys = Object.keys(object);
62
+ if (Object.getOwnPropertySymbols) {
63
+ var symbols = Object.getOwnPropertySymbols(object);
64
+ if (enumerableOnly) symbols = symbols.filter(function(sym) {
65
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
66
+ });
67
+ keys.push.apply(keys, symbols);
68
+ }
69
+ return keys;
70
+ }
71
+ function _object_spread_props(target, source) {
72
+ source = null != source ? source : {};
73
+ if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
74
+ else usePlaygroundController_ownKeys(Object(source)).forEach(function(key) {
75
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
76
+ });
77
+ return target;
78
+ }
79
+ function getPlatformSelectorFieldKey(setup) {
80
+ var _setup_platformSelector;
81
+ return null == setup ? void 0 : null == (_setup_platformSelector = setup.platformSelector) ? void 0 : _setup_platformSelector.fieldKey;
82
+ }
83
+ function usePlaygroundController({ serverUrl, defaultDeviceType = 'web', pollIntervalMs = 5000, countdownSeconds = 3, initialFormValues }) {
84
+ var _Form_useWatch;
85
+ const [form] = Form.useForm();
86
+ const initialFormValuesRef = useRef(initialFormValues);
87
+ useLayoutEffect(()=>{
88
+ const seed = initialFormValuesRef.current;
89
+ if (!seed) return;
90
+ for (const [key, value] of Object.entries(seed))if (void 0 === form.getFieldValue(key)) form.setFieldsValue({
91
+ [key]: value
92
+ });
93
+ }, [
94
+ form
95
+ ]);
96
+ const formValues = null != (_Form_useWatch = Form.useWatch([], form)) ? _Form_useWatch : {};
97
+ const [countdown, setCountdown] = useState(null);
98
+ const [sessionSetup, setSessionSetup] = useState(null);
99
+ const [sessionSetupError, setSessionSetupError] = useState(null);
100
+ const [sessionLoading, setSessionLoading] = useState(false);
101
+ const [sessionMutating, setSessionMutating] = useState(false);
102
+ const aiConfig = useEnvConfig((state)=>state.config);
103
+ const aiConfigSignature = useMemo(()=>serializePlaygroundAiConfig(aiConfig), [
104
+ aiConfig
105
+ ]);
106
+ const platformSelectorFieldKey = getPlatformSelectorFieldKey(sessionSetup);
107
+ const selectedPlatformId = 'string' == typeof platformSelectorFieldKey ? formValues[platformSelectorFieldKey] : void 0;
108
+ const playgroundSDK = useMemo(()=>new PlaygroundSDK({
109
+ type: 'remote-execution',
110
+ serverUrl
111
+ }), [
112
+ serverUrl
113
+ ]);
114
+ const { serverOnline, isUserOperating, deviceType, runtimeInfo, executionUxHints, refreshServerState } = useServerStatus(playgroundSDK, defaultDeviceType, pollIntervalMs);
115
+ const sessionViewState = useMemo(()=>resolveSessionViewState(runtimeInfo), [
116
+ runtimeInfo
117
+ ]);
118
+ const countdownTimerRef = useRef(null);
119
+ const countdownResolveRef = useRef(null);
120
+ const mountedRef = useRef(true);
121
+ const lastSetupPlatformIdRef = useRef(void 0);
122
+ const autoCreateSignatureRef = useRef(null);
123
+ const autoCreateBlockedSignatureRef = useRef(null);
124
+ const sessionMutatingRef = useRef(false);
125
+ const appliedAiConfigSignatureRef = useRef(null);
126
+ const pendingCreateSessionRef = useRef(null);
127
+ const pendingAiConfigApplicationRef = useRef(null);
128
+ const applyAiConfig = useCallback(()=>_async_to_generator(function*() {
129
+ if (!hasPlaygroundAiConfig(aiConfig)) {
130
+ appliedAiConfigSignatureRef.current = null;
131
+ pendingAiConfigApplicationRef.current = null;
132
+ return true;
133
+ }
134
+ if (appliedAiConfigSignatureRef.current === aiConfigSignature) return true;
135
+ const pendingApplication = pendingAiConfigApplicationRef.current;
136
+ if ((null == pendingApplication ? void 0 : pendingApplication.signature) === aiConfigSignature) return pendingApplication.promise;
137
+ const pendingApplicationState = {
138
+ promise: Promise.resolve(true),
139
+ signature: aiConfigSignature
140
+ };
141
+ const applyPromise = (()=>_async_to_generator(function*() {
142
+ try {
143
+ yield applyPlaygroundAiConfig(playgroundSDK, aiConfig);
144
+ appliedAiConfigSignatureRef.current = aiConfigSignature;
145
+ return true;
146
+ } catch (error) {
147
+ const errorMessage = error instanceof Error ? error.message : 'Failed to apply AI configuration';
148
+ message.error(errorMessage);
149
+ return false;
150
+ } finally{
151
+ if (pendingAiConfigApplicationRef.current === pendingApplicationState) pendingAiConfigApplicationRef.current = null;
152
+ }
153
+ })())();
154
+ pendingApplicationState.promise = applyPromise;
155
+ pendingAiConfigApplicationRef.current = pendingApplicationState;
156
+ return applyPromise;
157
+ })(), [
158
+ aiConfig,
159
+ aiConfigSignature,
160
+ playgroundSDK
161
+ ]);
162
+ const finishCountdown = useCallback(()=>{
163
+ if (null !== countdownTimerRef.current) {
164
+ window.clearInterval(countdownTimerRef.current);
165
+ countdownTimerRef.current = null;
166
+ }
167
+ const resolve = countdownResolveRef.current;
168
+ countdownResolveRef.current = null;
169
+ if (mountedRef.current) setCountdown(null);
170
+ null == resolve || resolve();
171
+ }, []);
172
+ const showCountdownModal = useCallback(()=>_async_to_generator(function*() {
173
+ if (countdownSeconds <= 0) return;
174
+ finishCountdown();
175
+ return new Promise((resolve)=>{
176
+ countdownResolveRef.current = resolve;
177
+ let count = countdownSeconds;
178
+ if (mountedRef.current) setCountdown(count);
179
+ countdownTimerRef.current = window.setInterval(()=>{
180
+ count -= 1;
181
+ if (count > 0) {
182
+ if (mountedRef.current) setCountdown(count);
183
+ return;
184
+ }
185
+ if (0 === count) {
186
+ if (mountedRef.current) setCountdown('GO!');
187
+ return;
188
+ }
189
+ finishCountdown();
190
+ }, 1000);
191
+ });
192
+ })(), [
193
+ countdownSeconds,
194
+ finishCountdown
195
+ ]);
196
+ useEffect(()=>{
197
+ mountedRef.current = true;
198
+ return ()=>{
199
+ mountedRef.current = false;
200
+ finishCountdown();
201
+ };
202
+ }, [
203
+ finishCountdown
204
+ ]);
205
+ useEffect(()=>{
206
+ if (!executionUxHints.includes('countdown-before-run')) return void playgroundSDK.setBeforeActionHook(void 0);
207
+ playgroundSDK.setBeforeActionHook(()=>_async_to_generator(function*() {
208
+ yield showCountdownModal();
209
+ })());
210
+ return ()=>{
211
+ playgroundSDK.setBeforeActionHook(void 0);
212
+ };
213
+ }, [
214
+ executionUxHints,
215
+ playgroundSDK,
216
+ showCountdownModal
217
+ ]);
218
+ const refreshSessionSetup = useCallback((input)=>_async_to_generator(function*() {
219
+ const currentValues = _object_spread({}, form.getFieldsValue(true), input || {});
220
+ setSessionLoading(true);
221
+ try {
222
+ const setup = yield playgroundSDK.getSessionSetup(input);
223
+ setSessionSetup(setup);
224
+ setSessionSetupError(null);
225
+ const currentPlatformSelectorFieldKey = getPlatformSelectorFieldKey(setup);
226
+ lastSetupPlatformIdRef.current = currentPlatformSelectorFieldKey && 'string' == typeof currentValues[currentPlatformSelectorFieldKey] ? currentValues[currentPlatformSelectorFieldKey] : void 0;
227
+ form.setFieldsValue(buildSessionInitialValues(setup, currentValues));
228
+ } catch (error) {
229
+ console.error('Failed to load session setup:', error);
230
+ setSessionSetupError(error instanceof Error ? error.message : 'Failed to load session setup');
231
+ } finally{
232
+ setSessionLoading(false);
233
+ }
234
+ })(), [
235
+ form,
236
+ playgroundSDK
237
+ ]);
238
+ const createSession = useCallback((input, options)=>_async_to_generator(function*() {
239
+ return runSingleFlight(pendingCreateSessionRef, ()=>_async_to_generator(function*() {
240
+ try {
241
+ sessionMutatingRef.current = true;
242
+ setSessionMutating(true);
243
+ if (!(yield applyAiConfig())) return false;
244
+ const values = null != input ? input : yield form.validateFields();
245
+ yield playgroundSDK.createSession(values);
246
+ if (shouldResetAutoCreateBlock(options)) autoCreateBlockedSignatureRef.current = null;
247
+ if (!(null == options ? void 0 : options.silent)) message.success('Agent created');
248
+ yield refreshServerState();
249
+ return true;
250
+ } catch (error) {
251
+ if (error.errorFields) return false;
252
+ const errorMessage = error instanceof Error ? error.message : 'Failed to create Agent';
253
+ message.error(errorMessage);
254
+ return false;
255
+ } finally{
256
+ sessionMutatingRef.current = false;
257
+ setSessionMutating(false);
258
+ }
259
+ })());
260
+ })(), [
261
+ applyAiConfig,
262
+ form,
263
+ playgroundSDK,
264
+ refreshServerState
265
+ ]);
266
+ const destroySession = useCallback(()=>_async_to_generator(function*() {
267
+ try {
268
+ autoCreateBlockedSignatureRef.current = serializeAutoCreateInput(resolveAutoCreateSessionInput(sessionSetup, form.getFieldsValue(true)));
269
+ sessionMutatingRef.current = true;
270
+ setSessionMutating(true);
271
+ yield playgroundSDK.destroySession();
272
+ message.success('Session disconnected');
273
+ yield refreshServerState();
274
+ yield refreshSessionSetup();
275
+ } catch (error) {
276
+ const errorMessage = error instanceof Error ? error.message : 'Failed to disconnect session';
277
+ message.error(errorMessage);
278
+ } finally{
279
+ sessionMutatingRef.current = false;
280
+ setSessionMutating(false);
281
+ }
282
+ })(), [
283
+ form,
284
+ playgroundSDK,
285
+ refreshServerState,
286
+ refreshSessionSetup,
287
+ sessionSetup
288
+ ]);
289
+ useEffect(()=>{
290
+ if (!serverOnline) return;
291
+ applyAiConfig();
292
+ }, [
293
+ applyAiConfig,
294
+ serverOnline
295
+ ]);
296
+ useEffect(()=>{
297
+ if (!serverOnline || sessionViewState.connected) return;
298
+ let disposed = false;
299
+ let refreshing = false;
300
+ const refreshTargets = ()=>_async_to_generator(function*() {
301
+ if (disposed || refreshing) return;
302
+ refreshing = true;
303
+ try {
304
+ yield refreshSessionSetup(form.getFieldsValue(true));
305
+ } finally{
306
+ refreshing = false;
307
+ }
308
+ })();
309
+ refreshTargets();
310
+ const intervalId = window.setInterval(()=>{
311
+ refreshTargets();
312
+ }, pollIntervalMs);
313
+ return ()=>{
314
+ disposed = true;
315
+ window.clearInterval(intervalId);
316
+ };
317
+ }, [
318
+ form,
319
+ pollIntervalMs,
320
+ refreshSessionSetup,
321
+ serverOnline,
322
+ sessionViewState.connected
323
+ ]);
324
+ useEffect(()=>{
325
+ if (!serverOnline || sessionViewState.connected || !selectedPlatformId) return;
326
+ const currentPlatformSelectorFieldKey = getPlatformSelectorFieldKey(sessionSetup);
327
+ if (!currentPlatformSelectorFieldKey) return;
328
+ if (lastSetupPlatformIdRef.current === selectedPlatformId) return;
329
+ refreshSessionSetup(_object_spread_props(_object_spread({}, form.getFieldsValue(true)), {
330
+ [currentPlatformSelectorFieldKey]: selectedPlatformId
331
+ }));
332
+ }, [
333
+ form,
334
+ refreshSessionSetup,
335
+ selectedPlatformId,
336
+ serverOnline,
337
+ sessionSetup,
338
+ sessionViewState.connected
339
+ ]);
340
+ useEffect(()=>{
341
+ if (sessionViewState.connected) {
342
+ autoCreateSignatureRef.current = null;
343
+ return;
344
+ }
345
+ if (!serverOnline || sessionLoading || sessionMutating || sessionMutatingRef.current || sessionSetupError) return;
346
+ const autoCreateInput = resolveAutoCreateSessionInput(sessionSetup, form.getFieldsValue(true));
347
+ const { signature, shouldCreate } = resolveAutoCreateDecision({
348
+ autoCreateInput,
349
+ lastAttemptedSignature: autoCreateSignatureRef.current,
350
+ blockedSignature: autoCreateBlockedSignatureRef.current
351
+ });
352
+ if (!shouldCreate || !signature) {
353
+ if (!signature) autoCreateSignatureRef.current = null;
354
+ return;
355
+ }
356
+ autoCreateSignatureRef.current = signature;
357
+ (()=>_async_to_generator(function*() {
358
+ const created = yield createSession(null != autoCreateInput ? autoCreateInput : void 0, {
359
+ silent: true
360
+ });
361
+ if (!created) autoCreateSignatureRef.current = null;
362
+ })())();
363
+ }, [
364
+ createSession,
365
+ form,
366
+ serverOnline,
367
+ sessionLoading,
368
+ sessionMutating,
369
+ sessionSetup,
370
+ sessionSetupError,
371
+ sessionViewState.connected
372
+ ]);
373
+ return {
374
+ state: {
375
+ playgroundSDK,
376
+ form,
377
+ formValues,
378
+ serverOnline,
379
+ isUserOperating,
380
+ deviceType,
381
+ runtimeInfo,
382
+ executionUxHints,
383
+ sessionViewState,
384
+ sessionSetup,
385
+ sessionSetupError,
386
+ sessionLoading,
387
+ sessionMutating,
388
+ countdown,
389
+ countdownSeconds
390
+ },
391
+ actions: {
392
+ refreshServerState,
393
+ refreshSessionSetup,
394
+ createSession,
395
+ destroySession,
396
+ finishCountdown
397
+ }
398
+ };
399
+ }
400
+ export { usePlaygroundController };
@@ -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 dropdown_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 dropdown_chevron_ownKeys(Object(source)).forEach(function(key) {
41
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
42
+ });
43
+ return target;
44
+ }
45
+ const SvgDropdownChevron = (props)=>/*#__PURE__*/ jsx("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: /*#__PURE__*/ jsx("path", {
53
+ stroke: "#333",
54
+ strokeLinecap: "round",
55
+ strokeLinejoin: "round",
56
+ strokeWidth: 1.333,
57
+ d: "m12 6-4 4-4-4"
58
+ })
59
+ }));
60
+ const dropdown_chevron = SvgDropdownChevron;
61
+ export { dropdown_chevron as default };