@copilotkit/react-core 1.6.0-next.0 → 1.6.0-next.2

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 (42) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/{chunk-7LZQFHNW.mjs → chunk-5SGYPX4V.mjs} +2 -3
  3. package/dist/chunk-5SGYPX4V.mjs.map +1 -0
  4. package/dist/{chunk-ZAU4EMBM.mjs → chunk-F7O6L7C3.mjs} +4 -5
  5. package/dist/chunk-F7O6L7C3.mjs.map +1 -0
  6. package/dist/components/copilot-provider/copilotkit-props.d.ts +1 -2
  7. package/dist/components/copilot-provider/copilotkit.d.ts +1 -2
  8. package/dist/components/copilot-provider/index.d.ts +1 -2
  9. package/dist/components/index.d.ts +1 -2
  10. package/dist/context/copilot-context.d.ts +10 -148
  11. package/dist/context/index.d.ts +1 -2
  12. package/dist/copilot-context-9ae8990b.d.ts +183 -0
  13. package/dist/hooks/index.d.ts +1 -2
  14. package/dist/hooks/index.js +4 -6
  15. package/dist/hooks/index.js.map +1 -1
  16. package/dist/hooks/index.mjs +2 -2
  17. package/dist/hooks/use-chat.d.ts +1 -2
  18. package/dist/hooks/use-coagent.d.ts +1 -2
  19. package/dist/hooks/use-copilot-chat.d.ts +1 -2
  20. package/dist/hooks/use-langgraph-interrupt-render.js +3 -4
  21. package/dist/hooks/use-langgraph-interrupt-render.js.map +1 -1
  22. package/dist/hooks/use-langgraph-interrupt-render.mjs +1 -1
  23. package/dist/hooks/use-langgraph-interrupt.d.ts +10 -3
  24. package/dist/hooks/use-langgraph-interrupt.js +1 -2
  25. package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
  26. package/dist/hooks/use-langgraph-interrupt.mjs +1 -1
  27. package/dist/index.d.ts +1 -2
  28. package/dist/index.js +4 -6
  29. package/dist/index.js.map +1 -1
  30. package/dist/index.mjs +2 -2
  31. package/dist/lib/copilot-task.d.ts +1 -2
  32. package/dist/lib/index.d.ts +1 -2
  33. package/dist/types/interrupt-action.d.ts +10 -35
  34. package/dist/types/interrupt-action.js.map +1 -1
  35. package/dist/utils/extract.d.ts +1 -2
  36. package/dist/utils/index.d.ts +1 -2
  37. package/package.json +3 -3
  38. package/src/hooks/use-langgraph-interrupt-render.ts +7 -3
  39. package/src/hooks/use-langgraph-interrupt.ts +3 -4
  40. package/src/types/interrupt-action.ts +17 -13
  41. package/dist/chunk-7LZQFHNW.mjs.map +0 -1
  42. package/dist/chunk-ZAU4EMBM.mjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -7,10 +7,10 @@ import {
7
7
  import "./chunk-IGLITGLC.mjs";
8
8
  import {
9
9
  useLangGraphInterruptRender
10
- } from "./chunk-ZAU4EMBM.mjs";
10
+ } from "./chunk-F7O6L7C3.mjs";
11
11
  import {
12
12
  useLangGraphInterrupt
13
- } from "./chunk-7LZQFHNW.mjs";
13
+ } from "./chunk-5SGYPX4V.mjs";
14
14
  import {
15
15
  useMakeCopilotDocumentReadable
16
16
  } from "./chunk-XOHLZIZK.mjs";
@@ -1,6 +1,6 @@
1
1
  import { ForwardedParametersInput } from '@copilotkit/runtime-client-gql';
2
2
  import { FrontendAction } from '../types/frontend-action.js';
3
- import { CopilotContextParams } from '../context/copilot-context.js';
3
+ import { a as CopilotContextParams } from '../copilot-context-9ae8990b.js';
4
4
  import '@copilotkit/shared';
5
5
  import 'react';
6
6
  import '../hooks/use-tree.js';
@@ -8,7 +8,6 @@ import '../types/document-pointer.js';
8
8
  import '../types/chat-suggestion-configuration.js';
9
9
  import '../types/coagent-action.js';
10
10
  import '../types/coagent-state.js';
11
- import '../types/interrupt-action.js';
12
11
 
13
12
  /**
14
13
  * This class is used to execute one-off tasks, for example on button press. It can use the context available via [useCopilotReadable](/reference/hooks/useCopilotReadable) and the actions provided by [useCopilotAction](/reference/hooks/useCopilotAction), or you can provide your own context and actions.
@@ -3,10 +3,9 @@ import '@copilotkit/runtime-client-gql';
3
3
  import '../types/frontend-action.js';
4
4
  import '@copilotkit/shared';
5
5
  import 'react';
6
- import '../context/copilot-context.js';
6
+ import '../copilot-context-9ae8990b.js';
7
7
  import '../hooks/use-tree.js';
8
8
  import '../types/document-pointer.js';
9
9
  import '../types/chat-suggestion-configuration.js';
10
10
  import '../types/coagent-action.js';
11
11
  import '../types/coagent-state.js';
12
- import '../types/interrupt-action.js';
@@ -1,35 +1,10 @@
1
- import { LangGraphInterruptEvent } from '@copilotkit/runtime-client-gql';
2
- import { Condition } from '@copilotkit/shared';
3
-
4
- interface LangGraphInterruptRender {
5
- id: string;
6
- /**
7
- * The handler function to handle the event.
8
- */
9
- handler?: (props: {
10
- event: LangGraphInterruptEvent;
11
- resolve: (resolution: string) => void;
12
- }) => unknown | Promise<unknown>;
13
- /**
14
- * The render function to handle the event.
15
- */
16
- render?: (props: {
17
- result: unknown;
18
- event: LangGraphInterruptEvent;
19
- resolve: (resolution: string) => void;
20
- }) => string | React.ReactElement;
21
- /**
22
- * Conditions to render based on.
23
- * Useful when using multiple interrupts
24
- */
25
- conditions?: Condition[];
26
- }
27
- type LangGraphInterruptAction = LangGraphInterruptRender & {
28
- event?: LangGraphInterruptEvent;
29
- };
30
- type LangGraphInterruptActionSetterArgs = (Partial<LangGraphInterruptRender> & {
31
- event?: Partial<LangGraphInterruptEvent>;
32
- }) | null;
33
- type LangGraphInterruptActionSetter = (action: LangGraphInterruptActionSetterArgs) => void;
34
-
35
- export { LangGraphInterruptAction, LangGraphInterruptActionSetter, LangGraphInterruptActionSetterArgs, LangGraphInterruptRender };
1
+ import '@copilotkit/runtime-client-gql';
2
+ export { L as LangGraphInterruptAction, d as LangGraphInterruptActionSetter, i as LangGraphInterruptActionSetterArgs, e as LangGraphInterruptRender, g as LangGraphInterruptRenderHandlerProps, h as LangGraphInterruptRenderProps } from '../copilot-context-9ae8990b.js';
3
+ import '@copilotkit/shared';
4
+ import './frontend-action.js';
5
+ import 'react';
6
+ import '../hooks/use-tree.js';
7
+ import './document-pointer.js';
8
+ import './chat-suggestion-configuration.js';
9
+ import './coagent-action.js';
10
+ import './coagent-state.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/interrupt-action.ts"],"sourcesContent":["import { LangGraphInterruptEvent } from \"@copilotkit/runtime-client-gql\";\nimport { Condition } from \"@copilotkit/shared\";\n\nexport interface LangGraphInterruptRender {\n id: string;\n /**\n * The handler function to handle the event.\n */\n handler?: (props: {\n event: LangGraphInterruptEvent;\n resolve: (resolution: string) => void;\n }) => unknown | Promise<unknown>;\n /**\n * The render function to handle the event.\n */\n render?: (props: {\n result: unknown;\n event: LangGraphInterruptEvent;\n resolve: (resolution: string) => void;\n }) => string | React.ReactElement;\n /**\n * Conditions to render based on.\n * Useful when using multiple interrupts\n */\n conditions?: Condition[];\n}\n\nexport type LangGraphInterruptAction = LangGraphInterruptRender & {\n event?: LangGraphInterruptEvent;\n};\n\nexport type LangGraphInterruptActionSetterArgs =\n | (Partial<LangGraphInterruptRender> & { event?: Partial<LangGraphInterruptEvent> })\n | null;\nexport type LangGraphInterruptActionSetter = (action: LangGraphInterruptActionSetterArgs) => void;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/types/interrupt-action.ts"],"sourcesContent":["import { LangGraphInterruptEvent } from \"@copilotkit/runtime-client-gql\";\nimport { AgentSession } from \"../context/copilot-context\";\n\nexport interface LangGraphInterruptRenderHandlerProps<TEventValue = any> {\n event: LangGraphInterruptEvent<TEventValue>;\n resolve: (resolution: string) => void;\n}\n\nexport interface LangGraphInterruptRenderProps<TEventValue = any> {\n result: unknown;\n event: LangGraphInterruptEvent<TEventValue>;\n resolve: (resolution: string) => void;\n}\n\nexport interface LangGraphInterruptRender<TEventValue = any> {\n id: string;\n /**\n * The handler function to handle the event.\n */\n handler?: (props: LangGraphInterruptRenderHandlerProps<TEventValue>) => any | Promise<any>;\n /**\n * The render function to handle the event.\n */\n render?: (props: LangGraphInterruptRenderProps<TEventValue>) => string | React.ReactElement;\n /**\n * Method that returns a boolean, indicating if the interrupt action should run\n * Useful when using multiple interrupts\n */\n enabled?: (args: { eventValue: TEventValue; agentMetadata: AgentSession }) => boolean;\n}\n\nexport type LangGraphInterruptAction = LangGraphInterruptRender & {\n event?: LangGraphInterruptEvent;\n};\n\nexport type LangGraphInterruptActionSetterArgs =\n | (Partial<LangGraphInterruptRender> & { event?: Partial<LangGraphInterruptEvent> })\n | null;\nexport type LangGraphInterruptActionSetter = (action: LangGraphInterruptActionSetterArgs) => void;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import { Parameter, MappedParameterTypes } from '@copilotkit/shared';
2
2
  import { CopilotRequestType, ForwardedParametersInput } from '@copilotkit/runtime-client-gql';
3
- import { CopilotContextParams } from '../context/copilot-context.js';
3
+ import { a as CopilotContextParams } from '../copilot-context-9ae8990b.js';
4
4
  import { CopilotMessagesContextParams } from '../context/copilot-messages-context.js';
5
5
  import '../types/frontend-action.js';
6
6
  import 'react';
@@ -9,7 +9,6 @@ import '../types/document-pointer.js';
9
9
  import '../types/chat-suggestion-configuration.js';
10
10
  import '../types/coagent-action.js';
11
11
  import '../types/coagent-state.js';
12
- import '../types/interrupt-action.js';
13
12
 
14
13
  interface InitialState<T extends Parameter[] | [] = []> {
15
14
  status: "initial";
@@ -2,7 +2,7 @@ export { extract } from './extract.js';
2
2
  export { shouldShowDevConsole } from './dev-console.js';
3
3
  import '@copilotkit/shared';
4
4
  import '@copilotkit/runtime-client-gql';
5
- import '../context/copilot-context.js';
5
+ import '../copilot-context-9ae8990b.js';
6
6
  import '../types/frontend-action.js';
7
7
  import 'react';
8
8
  import '../hooks/use-tree.js';
@@ -10,5 +10,4 @@ import '../types/document-pointer.js';
10
10
  import '../types/chat-suggestion-configuration.js';
11
11
  import '../types/coagent-action.js';
12
12
  import '../types/coagent-state.js';
13
- import '../types/interrupt-action.js';
14
13
  import '../context/copilot-messages-context.js';
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "publishConfig": {
10
10
  "access": "public"
11
11
  },
12
- "version": "1.6.0-next.0",
12
+ "version": "1.6.0-next.2",
13
13
  "sideEffects": false,
14
14
  "main": "./dist/index.js",
15
15
  "module": "./dist/index.mjs",
@@ -43,8 +43,8 @@
43
43
  "@scarf/scarf": "^1.3.0",
44
44
  "react-markdown": "^8.0.7",
45
45
  "untruncate-json": "^0.0.1",
46
- "@copilotkit/runtime-client-gql": "1.6.0-next.0",
47
- "@copilotkit/shared": "1.6.0-next.0"
46
+ "@copilotkit/runtime-client-gql": "1.6.0-next.2",
47
+ "@copilotkit/shared": "1.6.0-next.2"
48
48
  },
49
49
  "keywords": [
50
50
  "copilotkit",
@@ -18,7 +18,8 @@ const InterruptRenderer: React.FC<InterruptProps> = ({ event, result, render, re
18
18
  };
19
19
 
20
20
  export function useLangGraphInterruptRender(): string | React.ReactElement | null {
21
- const { langGraphInterruptAction, setLangGraphInterruptAction } = useCopilotContext();
21
+ const { langGraphInterruptAction, setLangGraphInterruptAction, agentSession } =
22
+ useCopilotContext();
22
23
 
23
24
  const responseRef = React.useRef<string>();
24
25
  const resolveInterrupt = useCallback(
@@ -39,9 +40,12 @@ export function useLangGraphInterruptRender(): string | React.ReactElement | nul
39
40
  )
40
41
  return null;
41
42
 
42
- const { render, handler, event, conditions } = langGraphInterruptAction;
43
+ const { render, handler, event, enabled } = langGraphInterruptAction;
43
44
 
44
- const conditionsMet = executeConditions({ conditions, value: event.value });
45
+ const conditionsMet =
46
+ !agentSession || !enabled
47
+ ? true
48
+ : enabled({ eventValue: event.value, agentMetadata: agentSession });
45
49
  if (!conditionsMet) {
46
50
  return null;
47
51
  }
@@ -5,8 +5,8 @@ import { useCopilotChat } from "./use-copilot-chat";
5
5
  import { useToast } from "../components/toast/toast-provider";
6
6
  import { dataToUUID } from "@copilotkit/shared";
7
7
 
8
- export function useLangGraphInterrupt(
9
- action: Omit<LangGraphInterruptRender, "id">,
8
+ export function useLangGraphInterrupt<TEventValue = any>(
9
+ action: Omit<LangGraphInterruptRender<TEventValue>, "id">,
10
10
  dependencies?: any[],
11
11
  ) {
12
12
  const { setLangGraphInterruptAction, removeLangGraphInterruptAction, langGraphInterruptAction } =
@@ -35,10 +35,9 @@ export function useLangGraphInterrupt(
35
35
 
36
36
  useEffect(() => {
37
37
  if (!action) return;
38
- // console.log(2, { hasAction, isCurrentAction, conditions: action.conditions })
39
38
  // An action was already set, with no conditions and it's not the action we're using right now.
40
39
  // Show a warning, as this action will not be executed
41
- if (hasAction && !isCurrentAction && !action.conditions?.length) {
40
+ if (hasAction && !isCurrentAction && !action.enabled) {
42
41
  addToast({
43
42
  type: "warning",
44
43
  message: "An action is already registered for the interrupt event",
@@ -1,28 +1,32 @@
1
1
  import { LangGraphInterruptEvent } from "@copilotkit/runtime-client-gql";
2
- import { Condition } from "@copilotkit/shared";
2
+ import { AgentSession } from "../context/copilot-context";
3
3
 
4
- export interface LangGraphInterruptRender {
4
+ export interface LangGraphInterruptRenderHandlerProps<TEventValue = any> {
5
+ event: LangGraphInterruptEvent<TEventValue>;
6
+ resolve: (resolution: string) => void;
7
+ }
8
+
9
+ export interface LangGraphInterruptRenderProps<TEventValue = any> {
10
+ result: unknown;
11
+ event: LangGraphInterruptEvent<TEventValue>;
12
+ resolve: (resolution: string) => void;
13
+ }
14
+
15
+ export interface LangGraphInterruptRender<TEventValue = any> {
5
16
  id: string;
6
17
  /**
7
18
  * The handler function to handle the event.
8
19
  */
9
- handler?: (props: {
10
- event: LangGraphInterruptEvent;
11
- resolve: (resolution: string) => void;
12
- }) => unknown | Promise<unknown>;
20
+ handler?: (props: LangGraphInterruptRenderHandlerProps<TEventValue>) => any | Promise<any>;
13
21
  /**
14
22
  * The render function to handle the event.
15
23
  */
16
- render?: (props: {
17
- result: unknown;
18
- event: LangGraphInterruptEvent;
19
- resolve: (resolution: string) => void;
20
- }) => string | React.ReactElement;
24
+ render?: (props: LangGraphInterruptRenderProps<TEventValue>) => string | React.ReactElement;
21
25
  /**
22
- * Conditions to render based on.
26
+ * Method that returns a boolean, indicating if the interrupt action should run
23
27
  * Useful when using multiple interrupts
24
28
  */
25
- conditions?: Condition[];
29
+ enabled?: (args: { eventValue: TEventValue; agentMetadata: AgentSession }) => boolean;
26
30
  }
27
31
 
28
32
  export type LangGraphInterruptAction = LangGraphInterruptRender & {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hooks/use-langgraph-interrupt.ts"],"sourcesContent":["import { useContext, useEffect, useMemo } from \"react\";\nimport { CopilotContext } from \"../context/copilot-context\";\nimport { LangGraphInterruptRender } from \"../types/interrupt-action\";\nimport { useCopilotChat } from \"./use-copilot-chat\";\nimport { useToast } from \"../components/toast/toast-provider\";\nimport { dataToUUID } from \"@copilotkit/shared\";\n\nexport function useLangGraphInterrupt(\n action: Omit<LangGraphInterruptRender, \"id\">,\n dependencies?: any[],\n) {\n const { setLangGraphInterruptAction, removeLangGraphInterruptAction, langGraphInterruptAction } =\n useContext(CopilotContext);\n const { runChatCompletion } = useCopilotChat();\n const { addToast } = useToast();\n\n const actionId = dataToUUID(JSON.stringify(action), \"lgAction\");\n // We only consider action to be defined once the ID is there\n const hasAction = useMemo(\n () => Boolean(langGraphInterruptAction?.id),\n [langGraphInterruptAction],\n );\n\n const isCurrentAction = useMemo(\n () => langGraphInterruptAction?.id && langGraphInterruptAction?.id === actionId,\n [langGraphInterruptAction],\n );\n\n // Run chat completion to submit a response event. Only if it's the current action\n useEffect(() => {\n if (hasAction && isCurrentAction && langGraphInterruptAction?.event?.response) {\n runChatCompletion();\n }\n }, [langGraphInterruptAction?.event?.response, runChatCompletion, hasAction, isCurrentAction]);\n\n useEffect(() => {\n if (!action) return;\n // console.log(2, { hasAction, isCurrentAction, conditions: action.conditions })\n // An action was already set, with no conditions and it's not the action we're using right now.\n // Show a warning, as this action will not be executed\n if (hasAction && !isCurrentAction && !action.conditions?.length) {\n addToast({\n type: \"warning\",\n message: \"An action is already registered for the interrupt event\",\n });\n return;\n }\n\n if (hasAction && isCurrentAction) {\n return;\n }\n\n setLangGraphInterruptAction({ ...action, id: actionId });\n }, [\n action,\n hasAction,\n isCurrentAction,\n setLangGraphInterruptAction,\n removeLangGraphInterruptAction,\n ...(dependencies || []),\n ]);\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA,SAAS,YAAY,WAAW,eAAe;AAK/C,SAAS,kBAAkB;AAEpB,SAAS,sBACd,QACA,cACA;AAVF;AAWE,QAAM,EAAE,6BAA6B,gCAAgC,yBAAyB,IAC5F,WAAW,cAAc;AAC3B,QAAM,EAAE,kBAAkB,IAAI,eAAe;AAC7C,QAAM,EAAE,SAAS,IAAI,SAAS;AAE9B,QAAM,WAAW,WAAW,KAAK,UAAU,MAAM,GAAG,UAAU;AAE9D,QAAM,YAAY;AAAA,IAChB,MAAM,QAAQ,qEAA0B,EAAE;AAAA,IAC1C,CAAC,wBAAwB;AAAA,EAC3B;AAEA,QAAM,kBAAkB;AAAA,IACtB,OAAM,qEAA0B,QAAM,qEAA0B,QAAO;AAAA,IACvE,CAAC,wBAAwB;AAAA,EAC3B;AAGA,YAAU,MAAM;AA7BlB,QAAAA;AA8BI,QAAI,aAAa,qBAAmBA,MAAA,qEAA0B,UAA1B,gBAAAA,IAAiC,WAAU;AAC7E,wBAAkB;AAAA,IACpB;AAAA,EACF,GAAG,EAAC,0EAA0B,UAA1B,mBAAiC,UAAU,mBAAmB,WAAW,eAAe,CAAC;AAE7F,YAAU,MAAM;AAnClB,QAAAA;AAoCI,QAAI,CAAC;AAAQ;AAIb,QAAI,aAAa,CAAC,mBAAmB,GAACA,MAAA,OAAO,eAAP,gBAAAA,IAAmB,SAAQ;AAC/D,eAAS;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AACD;AAAA,IACF;AAEA,QAAI,aAAa,iBAAiB;AAChC;AAAA,IACF;AAEA,gCAA4B,iCAAK,SAAL,EAAa,IAAI,SAAS,EAAC;AAAA,EACzD,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,gBAAgB,CAAC;AAAA,EACvB,CAAC;AACH;","names":["_a"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hooks/use-langgraph-interrupt-render.ts"],"sourcesContent":["import { useCopilotContext } from \"../context\";\nimport React, { useCallback } from \"react\";\nimport { executeConditions } from \"@copilotkit/shared\";\n\ntype InterruptProps = {\n event: any;\n result: any;\n render: (props: {\n event: any;\n result: any;\n resolve: (response: string) => void;\n }) => string | React.ReactElement;\n resolve: (response: string) => void;\n};\n\nconst InterruptRenderer: React.FC<InterruptProps> = ({ event, result, render, resolve }) => {\n return render({ event, result, resolve });\n};\n\nexport function useLangGraphInterruptRender(): string | React.ReactElement | null {\n const { langGraphInterruptAction, setLangGraphInterruptAction } = useCopilotContext();\n\n const responseRef = React.useRef<string>();\n const resolveInterrupt = useCallback(\n (response: string) => {\n responseRef.current = response;\n // Use setTimeout to defer the state update to next tick\n setTimeout(() => {\n setLangGraphInterruptAction({ event: { response } });\n }, 0);\n },\n [setLangGraphInterruptAction],\n );\n\n if (\n !langGraphInterruptAction ||\n !langGraphInterruptAction.event ||\n !langGraphInterruptAction.render\n )\n return null;\n\n const { render, handler, event, conditions } = langGraphInterruptAction;\n\n const conditionsMet = executeConditions({ conditions, value: event.value });\n if (!conditionsMet) {\n return null;\n }\n\n let result = null;\n if (handler) {\n result = handler({\n event,\n resolve: resolveInterrupt,\n });\n }\n\n return React.createElement(InterruptRenderer, {\n event,\n result,\n render,\n resolve: resolveInterrupt,\n });\n}\n"],"mappings":";;;;;AACA,OAAO,SAAS,mBAAmB;AACnC,SAAS,yBAAyB;AAalC,IAAM,oBAA8C,CAAC,EAAE,OAAO,QAAQ,QAAQ,QAAQ,MAAM;AAC1F,SAAO,OAAO,EAAE,OAAO,QAAQ,QAAQ,CAAC;AAC1C;AAEO,SAAS,8BAAkE;AAChF,QAAM,EAAE,0BAA0B,4BAA4B,IAAI,kBAAkB;AAEpF,QAAM,cAAc,MAAM,OAAe;AACzC,QAAM,mBAAmB;AAAA,IACvB,CAAC,aAAqB;AACpB,kBAAY,UAAU;AAEtB,iBAAW,MAAM;AACf,oCAA4B,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAAA,MACrD,GAAG,CAAC;AAAA,IACN;AAAA,IACA,CAAC,2BAA2B;AAAA,EAC9B;AAEA,MACE,CAAC,4BACD,CAAC,yBAAyB,SAC1B,CAAC,yBAAyB;AAE1B,WAAO;AAET,QAAM,EAAE,QAAQ,SAAS,OAAO,WAAW,IAAI;AAE/C,QAAM,gBAAgB,kBAAkB,EAAE,YAAY,OAAO,MAAM,MAAM,CAAC;AAC1E,MAAI,CAAC,eAAe;AAClB,WAAO;AAAA,EACT;AAEA,MAAI,SAAS;AACb,MAAI,SAAS;AACX,aAAS,QAAQ;AAAA,MACf;AAAA,MACA,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,SAAO,MAAM,cAAc,mBAAmB;AAAA,IAC5C;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AACH;","names":[]}