@bian-womp/spark-workbench 0.3.89 → 0.3.91

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 (181) hide show
  1. package/lib/cjs/index.cjs +19 -6
  2. package/lib/cjs/index.cjs.map +1 -1
  3. package/lib/cjs/src/misc/layout.d.ts.map +1 -1
  4. package/lib/cjs/src/misc/mapping.d.ts.map +1 -1
  5. package/lib/cjs/src/misc/value.d.ts +2 -1
  6. package/lib/cjs/src/misc/value.d.ts.map +1 -1
  7. package/lib/esm/index.js +19 -6
  8. package/lib/esm/index.js.map +1 -1
  9. package/lib/esm/src/misc/layout.d.ts.map +1 -1
  10. package/lib/esm/src/misc/mapping.d.ts.map +1 -1
  11. package/lib/esm/src/misc/value.d.ts +2 -1
  12. package/lib/esm/src/misc/value.d.ts.map +1 -1
  13. package/package.json +4 -4
  14. package/lib/src/adapters/cli/index.d.ts +0 -22
  15. package/lib/src/adapters/cli/index.d.ts.map +0 -1
  16. package/lib/src/adapters/cli/index.js +0 -50
  17. package/lib/src/adapters/cli/index.js.map +0 -1
  18. package/lib/src/core/AbstractWorkbench.d.ts +0 -40
  19. package/lib/src/core/AbstractWorkbench.d.ts.map +0 -1
  20. package/lib/src/core/AbstractWorkbench.js +0 -15
  21. package/lib/src/core/AbstractWorkbench.js.map +0 -1
  22. package/lib/src/core/InMemoryWorkbench.d.ts +0 -304
  23. package/lib/src/core/InMemoryWorkbench.d.ts.map +0 -1
  24. package/lib/src/core/InMemoryWorkbench.js +0 -1016
  25. package/lib/src/core/InMemoryWorkbench.js.map +0 -1
  26. package/lib/src/core/contracts.d.ts +0 -172
  27. package/lib/src/core/contracts.d.ts.map +0 -1
  28. package/lib/src/core/contracts.js +0 -2
  29. package/lib/src/core/contracts.js.map +0 -1
  30. package/lib/src/core/ui-extensions.d.ts +0 -85
  31. package/lib/src/core/ui-extensions.d.ts.map +0 -1
  32. package/lib/src/core/ui-extensions.js +0 -111
  33. package/lib/src/core/ui-extensions.js.map +0 -1
  34. package/lib/src/examples/cli.d.ts +0 -2
  35. package/lib/src/examples/cli.d.ts.map +0 -1
  36. package/lib/src/examples/cli.js +0 -244
  37. package/lib/src/examples/cli.js.map +0 -1
  38. package/lib/src/examples/reactflow/App.d.ts +0 -2
  39. package/lib/src/examples/reactflow/App.d.ts.map +0 -1
  40. package/lib/src/examples/reactflow/App.js +0 -20
  41. package/lib/src/examples/reactflow/App.js.map +0 -1
  42. package/lib/src/index.d.ts +0 -30
  43. package/lib/src/index.d.ts.map +0 -1
  44. package/lib/src/index.js +0 -30
  45. package/lib/src/index.js.map +0 -1
  46. package/lib/src/misc/DebugEvents.d.ts +0 -7
  47. package/lib/src/misc/DebugEvents.d.ts.map +0 -1
  48. package/lib/src/misc/DebugEvents.js +0 -51
  49. package/lib/src/misc/DebugEvents.js.map +0 -1
  50. package/lib/src/misc/DefaultEdge.d.ts +0 -5
  51. package/lib/src/misc/DefaultEdge.d.ts.map +0 -1
  52. package/lib/src/misc/DefaultEdge.js +0 -15
  53. package/lib/src/misc/DefaultEdge.js.map +0 -1
  54. package/lib/src/misc/DefaultNode.d.ts +0 -5
  55. package/lib/src/misc/DefaultNode.d.ts.map +0 -1
  56. package/lib/src/misc/DefaultNode.js +0 -25
  57. package/lib/src/misc/DefaultNode.js.map +0 -1
  58. package/lib/src/misc/DefaultNodeContent.d.ts +0 -4
  59. package/lib/src/misc/DefaultNodeContent.d.ts.map +0 -1
  60. package/lib/src/misc/DefaultNodeContent.js +0 -58
  61. package/lib/src/misc/DefaultNodeContent.js.map +0 -1
  62. package/lib/src/misc/DefaultNodeHeader.d.ts +0 -13
  63. package/lib/src/misc/DefaultNodeHeader.d.ts.map +0 -1
  64. package/lib/src/misc/DefaultNodeHeader.js +0 -78
  65. package/lib/src/misc/DefaultNodeHeader.js.map +0 -1
  66. package/lib/src/misc/Inspector.d.ts +0 -12
  67. package/lib/src/misc/Inspector.d.ts.map +0 -1
  68. package/lib/src/misc/Inspector.js +0 -253
  69. package/lib/src/misc/Inspector.js.map +0 -1
  70. package/lib/src/misc/IssueBadge.d.ts +0 -7
  71. package/lib/src/misc/IssueBadge.d.ts.map +0 -1
  72. package/lib/src/misc/IssueBadge.js +0 -7
  73. package/lib/src/misc/IssueBadge.js.map +0 -1
  74. package/lib/src/misc/KeyboardShortcutToast.d.ts +0 -16
  75. package/lib/src/misc/KeyboardShortcutToast.d.ts.map +0 -1
  76. package/lib/src/misc/KeyboardShortcutToast.js +0 -40
  77. package/lib/src/misc/KeyboardShortcutToast.js.map +0 -1
  78. package/lib/src/misc/NodeHandles.d.ts +0 -18
  79. package/lib/src/misc/NodeHandles.d.ts.map +0 -1
  80. package/lib/src/misc/NodeHandles.js +0 -67
  81. package/lib/src/misc/NodeHandles.js.map +0 -1
  82. package/lib/src/misc/SelectionActiveSync.d.ts +0 -10
  83. package/lib/src/misc/SelectionActiveSync.d.ts.map +0 -1
  84. package/lib/src/misc/SelectionActiveSync.js +0 -21
  85. package/lib/src/misc/SelectionActiveSync.js.map +0 -1
  86. package/lib/src/misc/WorkbenchCanvas.d.ts +0 -23
  87. package/lib/src/misc/WorkbenchCanvas.d.ts.map +0 -1
  88. package/lib/src/misc/WorkbenchCanvas.js +0 -669
  89. package/lib/src/misc/WorkbenchCanvas.js.map +0 -1
  90. package/lib/src/misc/WorkbenchStudio.d.ts +0 -43
  91. package/lib/src/misc/WorkbenchStudio.d.ts.map +0 -1
  92. package/lib/src/misc/WorkbenchStudio.js +0 -463
  93. package/lib/src/misc/WorkbenchStudio.js.map +0 -1
  94. package/lib/src/misc/constants.d.ts +0 -4
  95. package/lib/src/misc/constants.d.ts.map +0 -1
  96. package/lib/src/misc/constants.js +0 -5
  97. package/lib/src/misc/constants.js.map +0 -1
  98. package/lib/src/misc/context/WorkbenchContext.d.ts +0 -133
  99. package/lib/src/misc/context/WorkbenchContext.d.ts.map +0 -1
  100. package/lib/src/misc/context/WorkbenchContext.js +0 -9
  101. package/lib/src/misc/context/WorkbenchContext.js.map +0 -1
  102. package/lib/src/misc/context/WorkbenchContext.provider.d.ts +0 -12
  103. package/lib/src/misc/context/WorkbenchContext.provider.d.ts.map +0 -1
  104. package/lib/src/misc/context/WorkbenchContext.provider.js +0 -995
  105. package/lib/src/misc/context/WorkbenchContext.provider.js.map +0 -1
  106. package/lib/src/misc/context-menu/ContextMenuButton.d.ts +0 -8
  107. package/lib/src/misc/context-menu/ContextMenuButton.d.ts.map +0 -1
  108. package/lib/src/misc/context-menu/ContextMenuButton.js +0 -10
  109. package/lib/src/misc/context-menu/ContextMenuButton.js.map +0 -1
  110. package/lib/src/misc/context-menu/ContextMenuHandlers.d.ts +0 -85
  111. package/lib/src/misc/context-menu/ContextMenuHandlers.d.ts.map +0 -1
  112. package/lib/src/misc/context-menu/ContextMenuHandlers.js +0 -2
  113. package/lib/src/misc/context-menu/ContextMenuHandlers.js.map +0 -1
  114. package/lib/src/misc/context-menu/ContextMenuHelpers.d.ts +0 -45
  115. package/lib/src/misc/context-menu/ContextMenuHelpers.d.ts.map +0 -1
  116. package/lib/src/misc/context-menu/ContextMenuHelpers.js +0 -182
  117. package/lib/src/misc/context-menu/ContextMenuHelpers.js.map +0 -1
  118. package/lib/src/misc/context-menu/DefaultContextMenu.d.ts +0 -3
  119. package/lib/src/misc/context-menu/DefaultContextMenu.d.ts.map +0 -1
  120. package/lib/src/misc/context-menu/DefaultContextMenu.js +0 -111
  121. package/lib/src/misc/context-menu/DefaultContextMenu.js.map +0 -1
  122. package/lib/src/misc/context-menu/NodeContextMenu.d.ts +0 -3
  123. package/lib/src/misc/context-menu/NodeContextMenu.d.ts.map +0 -1
  124. package/lib/src/misc/context-menu/NodeContextMenu.js +0 -51
  125. package/lib/src/misc/context-menu/NodeContextMenu.js.map +0 -1
  126. package/lib/src/misc/context-menu/SelectionContextMenu.d.ts +0 -3
  127. package/lib/src/misc/context-menu/SelectionContextMenu.d.ts.map +0 -1
  128. package/lib/src/misc/context-menu/SelectionContextMenu.js +0 -47
  129. package/lib/src/misc/context-menu/SelectionContextMenu.js.map +0 -1
  130. package/lib/src/misc/hooks.d.ts +0 -18
  131. package/lib/src/misc/hooks.d.ts.map +0 -1
  132. package/lib/src/misc/hooks.js +0 -275
  133. package/lib/src/misc/hooks.js.map +0 -1
  134. package/lib/src/misc/layout.d.ts +0 -117
  135. package/lib/src/misc/layout.d.ts.map +0 -1
  136. package/lib/src/misc/layout.js +0 -205
  137. package/lib/src/misc/layout.js.map +0 -1
  138. package/lib/src/misc/load.d.ts +0 -5
  139. package/lib/src/misc/load.d.ts.map +0 -1
  140. package/lib/src/misc/load.js +0 -106
  141. package/lib/src/misc/load.js.map +0 -1
  142. package/lib/src/misc/mapping.d.ts +0 -128
  143. package/lib/src/misc/mapping.d.ts.map +0 -1
  144. package/lib/src/misc/mapping.js +0 -270
  145. package/lib/src/misc/mapping.js.map +0 -1
  146. package/lib/src/misc/merge-utils.d.ts +0 -12
  147. package/lib/src/misc/merge-utils.d.ts.map +0 -1
  148. package/lib/src/misc/merge-utils.js +0 -51
  149. package/lib/src/misc/merge-utils.js.map +0 -1
  150. package/lib/src/misc/thumbnail-utils.d.ts +0 -53
  151. package/lib/src/misc/thumbnail-utils.d.ts.map +0 -1
  152. package/lib/src/misc/thumbnail-utils.js +0 -629
  153. package/lib/src/misc/thumbnail-utils.js.map +0 -1
  154. package/lib/src/misc/types.d.ts +0 -18
  155. package/lib/src/misc/types.d.ts.map +0 -1
  156. package/lib/src/misc/types.js +0 -2
  157. package/lib/src/misc/types.js.map +0 -1
  158. package/lib/src/misc/value.d.ts +0 -16
  159. package/lib/src/misc/value.d.ts.map +0 -1
  160. package/lib/src/misc/value.js +0 -114
  161. package/lib/src/misc/value.js.map +0 -1
  162. package/lib/src/misc/viewport-utils.d.ts +0 -6
  163. package/lib/src/misc/viewport-utils.d.ts.map +0 -1
  164. package/lib/src/misc/viewport-utils.js +0 -18
  165. package/lib/src/misc/viewport-utils.js.map +0 -1
  166. package/lib/src/runtime/AbstractGraphRunner.d.ts +0 -61
  167. package/lib/src/runtime/AbstractGraphRunner.d.ts.map +0 -1
  168. package/lib/src/runtime/AbstractGraphRunner.js +0 -63
  169. package/lib/src/runtime/AbstractGraphRunner.js.map +0 -1
  170. package/lib/src/runtime/IGraphRunner.d.ts +0 -100
  171. package/lib/src/runtime/IGraphRunner.d.ts.map +0 -1
  172. package/lib/src/runtime/IGraphRunner.js +0 -2
  173. package/lib/src/runtime/IGraphRunner.js.map +0 -1
  174. package/lib/src/runtime/LocalGraphRunner.d.ts +0 -60
  175. package/lib/src/runtime/LocalGraphRunner.d.ts.map +0 -1
  176. package/lib/src/runtime/LocalGraphRunner.js +0 -294
  177. package/lib/src/runtime/LocalGraphRunner.js.map +0 -1
  178. package/lib/src/runtime/RemoteGraphRunner.d.ts +0 -109
  179. package/lib/src/runtime/RemoteGraphRunner.d.ts.map +0 -1
  180. package/lib/src/runtime/RemoteGraphRunner.js +0 -696
  181. package/lib/src/runtime/RemoteGraphRunner.js.map +0 -1
@@ -1,78 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React from "react";
3
- import { StopIcon, PlayIcon, FastForwardIcon } from "@phosphor-icons/react";
4
- import { NODE_HEADER_HEIGHT_PX } from "./constants";
5
- import { IssueBadge } from "./IssueBadge";
6
- import { useWorkbenchContext } from "./context/WorkbenchContext";
7
- export function DefaultNodeHeader({ id, typeId, validation, right, showId, }) {
8
- const ctx = useWorkbenchContext();
9
- const [isEditing, setIsEditing] = React.useState(false);
10
- const [editValue, setEditValue] = React.useState("");
11
- const inputRef = React.useRef(null);
12
- // Use getNodeDisplayName if typeId is provided, otherwise use title prop
13
- const displayName = typeId ? ctx.getNodeDisplayName(id) : id;
14
- const effectiveTypeId = typeId ?? id;
15
- // Get the default display name (without custom name) for comparison
16
- const getDefaultDisplayName = React.useCallback(() => {
17
- if (!typeId)
18
- return id;
19
- const node = ctx.wb.def.nodes.find((n) => n.nodeId === id);
20
- if (!node)
21
- return id;
22
- const desc = ctx.wb.registry.nodes.get(node.typeId);
23
- return desc?.displayName || node.typeId;
24
- }, [ctx, id, typeId]);
25
- const handleDoubleClick = React.useCallback((e) => {
26
- // Only allow editing if typeId is provided (enables renaming)
27
- if (!typeId)
28
- return;
29
- e.stopPropagation();
30
- setIsEditing(true);
31
- setEditValue(displayName);
32
- }, [typeId, displayName]);
33
- const handleSave = React.useCallback(() => {
34
- if (!typeId)
35
- return;
36
- const trimmed = editValue.trim();
37
- const defaultDisplayName = getDefaultDisplayName();
38
- // If the trimmed value matches the default display name or typeId, clear the custom name
39
- ctx.setNodeName(id, trimmed === defaultDisplayName || trimmed === effectiveTypeId ? undefined : trimmed);
40
- setIsEditing(false);
41
- }, [ctx, id, editValue, getDefaultDisplayName, effectiveTypeId, typeId]);
42
- const handleCancel = React.useCallback(() => {
43
- setIsEditing(false);
44
- setEditValue(displayName);
45
- }, [displayName]);
46
- const handleKeyDown = React.useCallback((e) => {
47
- if (e.key === "Enter") {
48
- e.preventDefault();
49
- e.stopPropagation();
50
- handleSave();
51
- }
52
- else if (e.key === "Escape") {
53
- e.preventDefault();
54
- e.stopPropagation();
55
- handleCancel();
56
- }
57
- }, [handleSave, handleCancel]);
58
- React.useEffect(() => {
59
- if (isEditing && inputRef.current) {
60
- inputRef.current.focus();
61
- inputRef.current.select();
62
- }
63
- }, [isEditing]);
64
- return (_jsxs("div", { className: "flex items-center justify-center px-2 border-b border-solid border-gray-500 dark:border-gray-400 text-gray-600 dark:text-gray-300", style: {
65
- maxHeight: NODE_HEADER_HEIGHT_PX,
66
- minHeight: NODE_HEADER_HEIGHT_PX,
67
- }, children: [isEditing ? (_jsx("input", { ref: inputRef, type: "text", value: editValue, onChange: (e) => setEditValue(e.target.value), onBlur: handleSave, onKeyDown: handleKeyDown, onClick: (e) => e.stopPropagation(), onMouseDown: (e) => e.stopPropagation(), className: "flex-1 h-full text-sm bg-transparent border border-blue-500 rounded px-1 outline-none wb-nodrag", style: { lineHeight: `${NODE_HEADER_HEIGHT_PX}px` } })) : (_jsx("strong", { className: `react-flow__node-title flex-1 h-full text-sm select-none truncate ${typeId ? "cursor-text" : ""}`, style: { lineHeight: `${NODE_HEADER_HEIGHT_PX}px` }, onDoubleClick: handleDoubleClick, title: typeId ? "Double-click to rename" : undefined, children: displayName })), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { onClick: (e) => {
68
- e.stopPropagation();
69
- void ctx.runNode(id);
70
- }, className: "w-4 h-4 flex items-center justify-center hover:bg-gray-200 dark:hover:bg-gray-700 rounded text-gray-600 dark:text-gray-400 hover:text-green-600 dark:hover:text-green-400 transition-colors", title: "Run node", children: _jsx(PlayIcon, { size: 10, weight: "fill" }) }), ctx.runMode === "manual" && (_jsxs(_Fragment, { children: [_jsx("button", { onClick: (e) => {
71
- e.stopPropagation();
72
- void ctx.runFromHere(id);
73
- }, className: "w-4 h-4 flex items-center justify-center hover:bg-gray-200 dark:hover:bg-gray-700 rounded text-gray-600 dark:text-gray-400 hover:text-blue-600 dark:hover:text-blue-400 transition-colors", title: "Run from here", children: _jsx(FastForwardIcon, { size: 10, weight: "fill" }) }), _jsx("button", { onClick: (e) => {
74
- e.stopPropagation();
75
- ctx.abortNode(id);
76
- }, className: "w-4 h-4 flex items-center justify-center hover:bg-gray-200 dark:hover:bg-gray-700 rounded text-gray-600 dark:text-gray-400 hover:text-red-600 dark:hover:text-red-400 transition-colors", title: "Abort node", children: _jsx(StopIcon, { size: 10, weight: "fill" }) })] })), right, validation.issues && validation.issues.length > 0 && (_jsx(IssueBadge, { level: validation.issues.some((i) => i.level === "error") ? "error" : "warning", size: 12, className: "w-3 h-3", title: validation.issues.map((v) => `${v.code}: ${v.message}`).join("; ") })), showId && _jsxs("span", { className: "text-[10px] opacity-70", children: ["(", id, ")"] })] })] }));
77
- }
78
- //# sourceMappingURL=DefaultNodeHeader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DefaultNodeHeader.js","sourceRoot":"","sources":["../../../src/misc/DefaultNodeHeader.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import React from "react";
2
- export declare function Inspector({ debug, autoScroll, hideWorkbench, onAutoScrollChange, onHideWorkbenchChange, toString, contextPanel, setInput, }: {
3
- debug?: boolean;
4
- autoScroll?: boolean;
5
- hideWorkbench?: boolean;
6
- onAutoScrollChange?: (v: boolean) => void;
7
- onHideWorkbenchChange?: (v: boolean) => void;
8
- toString: (typeId?: string, value?: unknown) => string;
9
- contextPanel?: React.ReactNode;
10
- setInput: (handle: string, value: string | number | undefined) => void;
11
- }): import("react/jsx-runtime").JSX.Element;
12
- //# sourceMappingURL=Inspector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Inspector.d.ts","sourceRoot":"","sources":["../../../src/misc/Inspector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAehE,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,QAAQ,EACR,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,qBAAqB,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IACvD,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CACxE,2CAwqBA"}
@@ -1,253 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { useCallback, useEffect, useState } from "react";
3
- import { isInputPrivate, getInputTypeId, getInputDeclaredTypes, isTyped, unwrapTypeId, unwrapValue, } from "@bian-womp/spark-graph";
4
- import { XIcon, CopyIcon, XCircleIcon } from "@phosphor-icons/react";
5
- import { resolveOutputDisplay, prettyHandle } from "./value";
6
- import { IssueBadge } from "./IssueBadge";
7
- import { useWorkbenchContext } from "./context/WorkbenchContext";
8
- import { DebugEvents } from "./DebugEvents";
9
- export function Inspector({ debug, autoScroll, hideWorkbench, onAutoScrollChange, onHideWorkbenchChange, toString, contextPanel, setInput, }) {
10
- const safeToString = (typeId, value) => {
11
- try {
12
- if (typeof toString === "function") {
13
- return toString(typeId, value);
14
- }
15
- return String(value ?? "");
16
- }
17
- catch {
18
- return String(value ?? "");
19
- }
20
- };
21
- const unwrapForDisplay = (declaredTypeId, value) => {
22
- if (isTyped(value)) {
23
- const t = unwrapTypeId(value) ?? declaredTypeId;
24
- return { typeId: t, value: unwrapValue(value) };
25
- }
26
- return { typeId: declaredTypeId, value };
27
- };
28
- const { wb, registryVersion, selectedNodeId, selectedEdgeId, inputsMap, inputDefaultsMap, outputsMap, outputTypesMap, nodeStatus, edgeStatus, validationByNode, validationByEdge, validationGlobal, valuesTick, updateEdgeType, systemErrors, registryErrors, inputValidationErrors, clearSystemErrors, clearRegistryErrors, clearInputValidationErrors, removeSystemError, removeRegistryError, removeInputValidationError, handlesMap, } = useWorkbenchContext();
29
- const nodeValidationIssues = validationByNode.issues;
30
- const edgeValidationIssues = validationByEdge.issues;
31
- const nodeValidationHandles = validationByNode;
32
- const globalValidationIssues = validationGlobal;
33
- const selectedNode = wb.def.nodes.find((n) => n.nodeId === selectedNodeId);
34
- const selectedEdge = wb.def.edges.find((e) => e.id === selectedEdgeId);
35
- // Use precomputed handles map from context
36
- const effectiveHandles = selectedNode
37
- ? (handlesMap[selectedNode.nodeId] ?? {
38
- inputs: {},
39
- outputs: {},
40
- inputDefaults: {},
41
- })
42
- : { inputs: {}, outputs: {}, inputDefaults: {} };
43
- const inputHandles = Object.entries(effectiveHandles.inputs)
44
- .filter(([k]) => !isInputPrivate(effectiveHandles.inputs, k))
45
- .map(([k]) => k);
46
- const outputHandles = Object.keys(effectiveHandles.outputs);
47
- const nodeInputsRaw = selectedNodeId ? (inputsMap[selectedNodeId] ?? {}) : {};
48
- const nodeInputsDefaults = selectedNodeId
49
- ? {
50
- ...effectiveHandles.inputDefaults,
51
- ...inputDefaultsMap[selectedNodeId],
52
- }
53
- : {};
54
- // Keep defaults separate for placeholder use (don't merge into nodeInputs)
55
- const nodeInputs = nodeInputsRaw;
56
- const nodeOutputs = selectedNodeId ? (outputsMap[selectedNodeId] ?? {}) : {};
57
- // Helper to truncate long values
58
- const truncateValue = (str, maxLen = 50) => {
59
- if (str.length <= maxLen)
60
- return str;
61
- const start = Math.floor(maxLen / 2) - 5;
62
- const end = str.length - Math.floor(maxLen / 2) + 5;
63
- return `${str.slice(0, start)}...${str.slice(end)}`;
64
- };
65
- // Helper to copy to clipboard
66
- const copyToClipboard = (text) => {
67
- navigator.clipboard.writeText(text).catch(() => {
68
- // Fallback for older browsers
69
- const textarea = document.createElement("textarea");
70
- textarea.value = text;
71
- document.body.appendChild(textarea);
72
- textarea.select();
73
- document.execCommand("copy");
74
- document.body.removeChild(textarea);
75
- });
76
- };
77
- const selectedNodeStatus = selectedNodeId ? nodeStatus?.[selectedNodeId] : undefined;
78
- const selectedNodeValidation = selectedNodeId ? (nodeValidationIssues?.[selectedNodeId] ?? []) : [];
79
- const selectedEdgeValidation = selectedEdge ? (edgeValidationIssues?.[selectedEdge.id] ?? []) : [];
80
- const selectedNodeHandleValidation = selectedNodeId
81
- ? {
82
- inputs: nodeValidationHandles?.inputs?.[selectedNodeId] ?? [],
83
- outputs: nodeValidationHandles?.outputs?.[selectedNodeId] ?? [],
84
- }
85
- : { inputs: [], outputs: [] };
86
- // Render edge status indicator
87
- const renderEdgeStatus = useCallback(() => {
88
- if (!selectedEdge)
89
- return null;
90
- const status = edgeStatus?.[selectedEdge.id];
91
- if (status?.activeRuns > 0) {
92
- return (_jsxs("div", { className: "mt-1 text-xs text-blue-700 bg-blue-50 border border-blue-200 rounded px-2 py-1", children: [_jsxs("div", { className: "font-semibold", children: ["Running (", status.activeRuns, ")"] }), _jsx("div", { className: "text-[10px] text-blue-600 mt-1", children: "Note: Edge runIds are not available in stats events" })] }));
93
- }
94
- return null;
95
- }, [selectedEdge, edgeStatus]);
96
- // Render linked input display value
97
- const renderLinkedInputDisplay = useCallback((typeId, current) => {
98
- const displayStr = safeToString(typeId, current);
99
- const isLong = displayStr.length > 50;
100
- const truncated = isLong ? truncateValue(displayStr) : displayStr;
101
- return (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("span", { className: "truncate", children: truncated }), isLong && (_jsx("button", { className: "flex-shrink-0 p-1 hover:bg-gray-100 rounded", onClick: () => copyToClipboard(displayStr), title: "Copy full value", children: _jsx(CopyIcon, { size: 14 }) }))] }));
102
- }, [safeToString, truncateValue, copyToClipboard]);
103
- // Render output validation issues badge
104
- const renderOutputValidationBadge = useCallback((handle) => {
105
- const outIssues = selectedNodeHandleValidation.outputs.filter((m) => m.handle === handle);
106
- if (outIssues.length === 0)
107
- return null;
108
- const outErr = outIssues.some((m) => m.level === "error");
109
- const outTitle = outIssues.map((v) => `${v.code}: ${v.message}`).join("; ");
110
- return _jsx(IssueBadge, { level: outErr ? "error" : "warning", size: 24, className: "ml-1 w-6 h-6", title: outTitle });
111
- }, [selectedNodeHandleValidation]);
112
- // Render output display value
113
- const renderOutputDisplay = useCallback((outputValue, effectiveHandle) => {
114
- const { typeId, value } = resolveOutputDisplay(outputValue, effectiveHandle);
115
- const displayStr = safeToString(typeId, value);
116
- const isLong = displayStr.length > 50;
117
- const truncated = isLong ? truncateValue(displayStr) : displayStr;
118
- return (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("span", { className: "truncate", children: truncated }), isLong && (_jsx("button", { className: "flex-shrink-0 p-1 hover:bg-gray-100 rounded", onClick: () => copyToClipboard(displayStr), title: "Copy full value", children: _jsx(CopyIcon, { size: 14 }) }))] }));
119
- }, [safeToString, truncateValue, copyToClipboard]);
120
- // Local drafts and originals for commit-on-blur/enter behavior
121
- const [drafts, setDrafts] = useState({});
122
- const [originals, setOriginals] = useState({});
123
- // Initialize drafts from current inputs whenever selection or valuesTick change,
124
- // but do not clobber fields currently being edited (dirty drafts)
125
- useEffect(() => {
126
- const shallowEqual = (a, b) => {
127
- const ak = Object.keys(a);
128
- const bk = Object.keys(b);
129
- if (ak.length !== bk.length)
130
- return false;
131
- for (const k of ak)
132
- if (a[k] !== b[k])
133
- return false;
134
- return true;
135
- };
136
- if (!selectedNodeId) {
137
- if (Object.keys(drafts).length || Object.keys(originals).length) {
138
- setDrafts({});
139
- setOriginals({});
140
- }
141
- return;
142
- }
143
- const handles = Object.keys(effectiveHandles.inputs);
144
- const nextDrafts = { ...drafts };
145
- const nextOriginals = { ...originals };
146
- for (const h of handles) {
147
- const typeId = getInputTypeId(effectiveHandles.inputs, h);
148
- const current = nodeInputs[h];
149
- const { typeId: displayTypeId, value: displayValue } = unwrapForDisplay(typeId, current);
150
- const display = safeToString(displayTypeId, displayValue);
151
- const wasOriginal = originals[h];
152
- const isDirty = drafts[h] !== undefined && wasOriginal !== undefined && drafts[h] !== wasOriginal;
153
- if (!isDirty) {
154
- nextDrafts[h] = display;
155
- nextOriginals[h] = display;
156
- }
157
- }
158
- if (!shallowEqual(drafts, nextDrafts))
159
- setDrafts(nextDrafts);
160
- if (!shallowEqual(originals, nextOriginals))
161
- setOriginals(nextOriginals);
162
- }, [selectedNodeId, selectedNode, wb.registry, registryVersion, valuesTick]);
163
- const widthClass = debug ? "w-[480px]" : "w-[320px]";
164
- const deleteEdgeById = (edgeId) => {
165
- if (!edgeId)
166
- return;
167
- try {
168
- wb.disconnect(edgeId);
169
- }
170
- catch { }
171
- };
172
- return (_jsxs("div", { className: `${widthClass} border-l border-gray-300 p-3 flex flex-col h-full min-h-0 overflow-auto select-none`, children: [_jsxs("div", { className: "flex-1 overflow-auto", children: [contextPanel && _jsx("div", { className: "mb-2", children: contextPanel }), inputValidationErrors.length > 0 && (_jsxs("div", { className: "mb-2 space-y-1", children: [inputValidationErrors.map((err, i) => (_jsxs("div", { className: "text-xs text-red-700 bg-red-50 border border-red-200 rounded px-2 py-1 flex items-start justify-between gap-2", children: [_jsxs("div", { className: "flex-1", children: [_jsx("div", { className: "font-semibold", children: "Input Validation Error" }), _jsx("div", { className: "break-words", children: err.message }), _jsxs("div", { className: "text-[10px] text-red-600 mt-1", children: [err.nodeId, ".", err.handle, " (type: ", err.typeId, ")"] })] }), _jsx("button", { className: "text-red-500 hover:text-red-700 text-[10px] px-1", onClick: () => removeInputValidationError(i), title: "Dismiss", children: _jsx(XIcon, { size: 10 }) })] }, i))), inputValidationErrors.length > 1 && (_jsx("button", { className: "text-xs text-red-600 hover:text-red-800 underline", onClick: clearInputValidationErrors, children: "Clear all" }))] })), systemErrors.length > 0 && (_jsxs("div", { className: "mb-2 space-y-1", children: [systemErrors.map((err, i) => (_jsxs("div", { className: "text-xs text-red-700 bg-red-50 border border-red-200 rounded px-2 py-1 flex items-start justify-between gap-2", children: [_jsxs("div", { className: "flex-1", children: [_jsx("div", { className: "font-semibold", children: err.code ? `Error ${err.code}` : "Error" }), _jsx("div", { className: "break-words", children: err.message })] }), _jsx("button", { className: "text-red-500 hover:text-red-700 text-[10px] px-1", onClick: () => removeSystemError(i), title: "Dismiss", children: _jsx(XIcon, { size: 10 }) })] }, i))), systemErrors.length > 1 && (_jsx("button", { className: "text-xs text-red-600 hover:text-red-800 underline", onClick: clearSystemErrors, children: "Clear all" }))] })), registryErrors.length > 0 && (_jsxs("div", { className: "mb-2 space-y-1", children: [registryErrors.map((err, i) => (_jsxs("div", { className: "text-xs text-amber-700 bg-amber-50 border border-amber-200 rounded px-2 py-1 flex items-start justify-between gap-2", children: [_jsxs("div", { className: "flex-1", children: [_jsx("div", { className: "font-semibold", children: "Registry Error" }), _jsx("div", { className: "break-words", children: err.message }), err.attempt && err.maxAttempts && (_jsxs("div", { className: "text-[10px] text-amber-600 mt-1", children: ["Attempt ", err.attempt, " of ", err.maxAttempts] }))] }), _jsx("button", { className: "text-amber-500 hover:text-amber-700 text-[10px] px-1", onClick: () => removeRegistryError(i), title: "Dismiss", children: _jsx(XIcon, { size: 10 }) })] }, i))), registryErrors.length > 1 && (_jsx("button", { className: "text-xs text-amber-600 hover:text-amber-800 underline", onClick: clearRegistryErrors, children: "Clear all" }))] })), _jsx("div", { className: "font-semibold mb-2", children: "Inspector" }), _jsxs("div", { className: "text-xs text-gray-500 mb-2", children: ["valuesTick: ", valuesTick] }), _jsx("div", { className: "flex-1", children: !selectedNode && !selectedEdge ? (_jsxs("div", { children: [_jsx("div", { className: "text-gray-500", children: "Select a node or edge." }), globalValidationIssues && globalValidationIssues.length > 0 && (_jsxs("div", { className: "mt-2 text-xs bg-red-50 border border-red-200 rounded px-2 py-1", children: [_jsx("div", { className: "font-semibold mb-1", children: "Validation" }), _jsx("ul", { className: "list-disc ml-4", children: globalValidationIssues.map((m, i) => (_jsxs("li", { className: "flex items-center gap-1", children: [_jsx(IssueBadge, { level: m.level, size: 24, className: "w-6 h-6" }), _jsx("span", { children: `${m.code}: ${m.message}` }), !!m.data?.edgeId && (_jsx("button", { className: "ml-2 text-[10px] px-1 py-[2px] border border-red-300 rounded text-red-700 hover:bg-red-50", onClick: (e) => {
173
- e.stopPropagation();
174
- deleteEdgeById(m.data?.edgeId);
175
- }, title: "Delete referenced edge", children: "Delete edge" }))] }, i))) })] }))] })) : selectedEdge ? (_jsxs("div", { children: [_jsxs("div", { className: "mb-2", children: [_jsxs("div", { children: ["Edge: ", selectedEdge.id] }), _jsxs("div", { children: [selectedEdge.source.nodeId, ".", selectedEdge.source.handle, " \u2192 ", selectedEdge.target.nodeId, ".", selectedEdge.target.handle] }), renderEdgeStatus(), _jsx("div", { className: "mt-1", children: _jsx("button", { className: "text-xs px-2 py-1 border border-red-300 rounded text-red-700 hover:bg-red-50", onClick: (e) => {
176
- e.stopPropagation();
177
- deleteEdgeById(selectedEdge.id);
178
- }, title: "Delete this edge", children: "Delete edge" }) }), _jsxs("div", { className: "flex items-center gap-2 mt-1", children: [_jsxs("label", { className: "w-20 flex flex-col", children: [_jsx("span", { children: "Type" }), _jsx("span", { className: "text-gray-500 text-[11px]", children: "DataTypeId" })] }), _jsxs("select", { className: "border border-gray-300 rounded px-2 py-1 focus:outline-none focus:ring-2 focus:ring-blue-500 w-full", value: selectedEdge.typeId ?? "", onChange: (e) => {
179
- const v = e.target.value;
180
- const next = v === "" ? undefined : v;
181
- updateEdgeType(selectedEdge.id, next);
182
- }, children: [_jsx("option", { value: "", children: "(infer from source)" }), Array.from(wb.registry.types.keys()).map((tid) => (_jsx("option", { value: tid, children: tid }, tid)))] })] })] }), selectedEdgeValidation.length > 0 && (_jsxs("div", { className: "mt-2 text-xs bg-red-50 border border-red-200 rounded px-2 py-1", children: [_jsx("div", { className: "font-semibold mb-1", children: "Validation" }), _jsx("ul", { className: "list-disc ml-4", children: selectedEdgeValidation.map((m, i) => (_jsxs("li", { className: "flex items-center gap-1", children: [_jsx(IssueBadge, { level: m.level, size: 24, className: "w-6 h-6" }), _jsx("span", { children: `${m.code}: ${m.message}` }), _jsx("button", { className: "ml-2 text-[10px] px-1 py-[2px] border border-red-300 rounded text-red-700 hover:bg-red-50", onClick: (e) => {
183
- e.stopPropagation();
184
- deleteEdgeById(selectedEdge.id);
185
- }, title: "Delete this edge", children: "Delete edge" })] }, i))) })] }))] })) : (_jsxs("div", { children: [selectedNode && (_jsxs("div", { className: "mb-2", children: [_jsxs("div", { children: ["Node: ", selectedNode.nodeId] }), _jsxs("div", { children: ["Type: ", selectedNode.typeId] }), !!selectedNodeStatus?.activeRuns && selectedNodeStatus.activeRuns > 0 && (_jsxs("div", { className: "mt-1 text-xs text-blue-700 bg-blue-50 border border-blue-200 rounded px-2 py-1", children: [_jsxs("div", { className: "font-semibold", children: ["Running (", selectedNodeStatus.activeRuns, ")"] }), selectedNodeStatus.activeRunIds && selectedNodeStatus.activeRunIds.length > 0 ? (_jsxs("div", { className: "mt-1", children: [_jsx("div", { className: "text-[10px] text-blue-600", children: "RunIds:" }), _jsx("div", { className: "flex flex-wrap gap-1 mt-1", children: selectedNodeStatus.activeRunIds.map((runId, idx) => (_jsx("span", { className: "text-[10px] px-1.5 py-0.5 bg-blue-100 border border-blue-300 rounded font-mono", children: runId }, idx))) })] })) : (_jsx("div", { className: "text-[10px] text-blue-600 mt-1", children: "RunIds not available (some runs may have started without runId)" }))] })), !!selectedNodeStatus?.lastError && (_jsx("div", { className: "mt-2 text-sm text-red-700 bg-red-50 border border-red-200 rounded px-2 py-1 break-words", children: String(selectedNodeStatus.lastError?.message ?? selectedNodeStatus.lastError) }))] })), _jsxs("div", { className: "mb-2", children: [_jsx("div", { className: "font-semibold mb-1", children: "Inputs" }), inputHandles.length === 0 ? (_jsx("div", { className: "text-gray-500", children: "No inputs" })) : (inputHandles.map((h) => {
186
- const typeId = getInputTypeId(effectiveHandles.inputs, h);
187
- const declaredTypes = getInputDeclaredTypes(effectiveHandles.inputs, h);
188
- const typeLabel = Array.isArray(declaredTypes) ? declaredTypes.join(" | ") : (typeId ?? "");
189
- const isLinked = wb.def.edges.some((e) => e.target.nodeId === selectedNodeId && e.target.handle === h);
190
- const inbound = new Set(wb.def.edges
191
- .filter((e) => e.target.nodeId === selectedNodeId && e.target.handle === h)
192
- .map((e) => e.target.handle));
193
- const { typeId: defaultTypeId, value: defaultValue } = unwrapForDisplay(typeId, nodeInputsDefaults[h]);
194
- const hasDefault = !inbound.has(h) && nodeInputsDefaults[h] !== undefined;
195
- const defaultStr = hasDefault ? safeToString(defaultTypeId, defaultValue) : undefined;
196
- const commonProps = {
197
- style: { flex: 1 },
198
- disabled: isLinked,
199
- };
200
- const current = nodeInputs[h];
201
- const { typeId: displayTypeId, value: displayValue } = unwrapForDisplay(typeId, current);
202
- const hasValue = displayValue !== undefined && displayValue !== null;
203
- const value = drafts[h] ?? safeToString(displayTypeId, displayValue);
204
- const placeholder = hasDefault ? defaultStr : undefined;
205
- const onChangeText = (text) => setDrafts((d) => ({ ...d, [h]: text }));
206
- const commit = () => {
207
- const draft = drafts[h];
208
- if (draft === undefined)
209
- return;
210
- // Only commit if draft differs from current value
211
- const currentDisplay = safeToString(typeId, current);
212
- if (draft === currentDisplay) {
213
- // No change, just sync originals without calling setInput
214
- setOriginals((o) => ({ ...o, [h]: draft }));
215
- return;
216
- }
217
- setInput(h, draft);
218
- setOriginals((o) => ({ ...o, [h]: draft }));
219
- };
220
- const revert = () => {
221
- const orig = originals[h] ?? safeToString(typeId, current);
222
- setDrafts((d) => ({ ...d, [h]: orig }));
223
- };
224
- const clearInput = () => {
225
- setInput(h, undefined);
226
- setDrafts((d) => ({ ...d, [h]: "" }));
227
- setOriginals((o) => ({ ...o, [h]: "" }));
228
- };
229
- const isEnum = displayTypeId?.startsWith("enum:");
230
- const inIssues = selectedNodeHandleValidation.inputs.filter((m) => m.handle === h);
231
- const hasValidation = inIssues.length > 0;
232
- const hasErr = inIssues.some((m) => m.level === "error");
233
- const title = inIssues.map((v) => `${v.code}: ${v.message}`).join("; ");
234
- return (_jsxs("div", { className: "flex items-center gap-2 mb-1", children: [_jsxs("label", { className: "w-32 flex flex-col", children: [_jsx("span", { children: prettyHandle(h) }), _jsx("span", { className: "text-gray-500 text-[11px]", children: typeLabel })] }), hasValidation && (_jsx(IssueBadge, { level: hasErr ? "error" : "warning", size: 24, className: "ml-1 w-6 h-6", title: title })), isEnum ? (_jsxs("div", { className: "flex items-center gap-1 flex-1", children: [_jsxs("select", { className: "border border-gray-300 rounded px-2 py-1 focus:outline-none focus:ring-2 focus:ring-blue-500 flex-1 select-text", value: current !== undefined && current !== null ? String(current) : "", onChange: (e) => {
235
- const val = e.target.value;
236
- const raw = val === "" ? undefined : Number(val);
237
- setInput(h, raw);
238
- // keep drafts/originals in sync with label for display elsewhere
239
- const display = safeToString(typeId, raw);
240
- setDrafts((d) => ({ ...d, [h]: display }));
241
- setOriginals((o) => ({ ...o, [h]: display }));
242
- }, ...commonProps, children: [_jsx("option", { value: "", children: placeholder ? `Default: ${placeholder}` : "(select)" }), wb.registry.enums.get(typeId)?.options.map((opt) => (_jsx("option", { value: String(opt.value), children: opt.label }, opt.value)))] }), hasValue && !isLinked && (_jsx("button", { className: "flex-shrink-0 p-1 hover:bg-gray-100 rounded text-gray-500 hover:text-gray-700", onClick: clearInput, title: "Clear input value", children: _jsx(XCircleIcon, { size: 16 }) }))] })) : isLinked ? (_jsx("div", { className: "flex items-center gap-1 flex-1", children: _jsx("div", { className: "flex-1 min-w-0", children: renderLinkedInputDisplay(displayTypeId, displayValue) }) })) : (_jsxs("div", { className: "flex items-center gap-1 flex-1", children: [_jsx("input", { className: "border border-gray-300 rounded px-2 py-1 focus:outline-none focus:ring-2 focus:ring-blue-500 flex-1 select-text", placeholder: placeholder ? `Default: ${placeholder}` : undefined, value: value, onChange: (e) => onChangeText(e.target.value), onBlur: commit, onKeyDown: (e) => {
243
- if (e.key === "Enter")
244
- commit();
245
- if (e.key === "Escape")
246
- revert();
247
- }, ...commonProps }), hasValue && !isLinked && (_jsx("button", { className: "flex-shrink-0 p-1 hover:bg-gray-100 rounded text-gray-500 hover:text-gray-700", onClick: clearInput, title: "Clear input value", children: _jsx(XCircleIcon, { size: 16 }) }))] }))] }, h));
248
- }))] }), _jsxs("div", { children: [_jsx("div", { className: "font-semibold mb-1", children: "Outputs" }), outputHandles.length === 0 ? (_jsx("div", { className: "text-gray-500", children: "No outputs" })) : (outputHandles.map((h) => (_jsxs("div", { className: "flex items-center gap-2 mb-1", children: [_jsxs("label", { className: "w-20 flex flex-col", children: [_jsx("span", { children: prettyHandle(h) }), _jsx("span", { className: "text-gray-500 text-[11px]", children: outputTypesMap[selectedNodeId]?.[h] ?? "" })] }), _jsx("div", { className: "flex-1 min-w-0", children: renderOutputDisplay(nodeOutputs[h], effectiveHandles.outputs[h]) }), renderOutputValidationBadge(h)] }, h))))] }), selectedNodeValidation.length > 0 && (_jsxs("div", { className: "mt-2 text-xs bg-red-50 border border-red-200 rounded px-2 py-1", children: [_jsx("div", { className: "font-semibold mb-1", children: "Validation" }), _jsx("ul", { className: "list-disc ml-4", children: selectedNodeValidation.map((m, i) => (_jsxs("li", { className: "flex items-center gap-1", children: [_jsx(IssueBadge, { level: m.level, size: 24, className: "w-6 h-6" }), _jsx("span", { children: `${m.code}: ${m.message}` }), !!m.data?.edgeId && (_jsx("button", { className: "ml-2 text-[10px] px-1 py-[2px] border border-red-300 rounded text-red-700 hover:bg-red-50", onClick: (e) => {
249
- e.stopPropagation();
250
- deleteEdgeById(m.data?.edgeId);
251
- }, title: "Delete referenced edge", children: "Delete edge" }))] }, i))) })] }))] })) })] }), debug && (_jsx("div", { className: "mt-3 flex-none min-h-0 h-[50%]", children: _jsx(DebugEvents, { autoScroll: !!autoScroll, hideWorkbench: !!hideWorkbench, onAutoScrollChange: onAutoScrollChange, onHideWorkbenchChange: onHideWorkbenchChange }) }))] }));
252
- }
253
- //# sourceMappingURL=Inspector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Inspector.js","sourceRoot":"","sources":["../../../src/misc/Inspector.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EACL,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,OAAO,EACP,YAAY,EACZ,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,QAAQ,EACR,YAAY,EACZ,QAAQ,GAUT;IACC,MAAM,YAAY,GAAG,CAAC,MAAe,EAAE,KAAe,EAAE,EAAE;QACxD,IAAI,CAAC;YACH,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACnC,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,cAAkC,EAAE,KAAc,EAAE,EAAE;QAC9E,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC;YAChD,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC,CAAC;IAEF,MAAM,EACJ,EAAE,EACF,eAAe,EACf,cAAc,EACd,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,EAC1B,UAAU,GACX,GAAG,mBAAmB,EAAE,CAAC;IAC1B,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,MAAM,CAAC;IACrD,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,MAAM,CAAC;IACrD,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;IAC/C,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;IAEhD,MAAM,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC;IAEvE,2CAA2C;IAC3C,MAAM,gBAAgB,GAAG,YAAY;QACnC,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI;YAClC,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,aAAa,EAAE,EAAE;SAClB,CAAC;QACJ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IACnD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC;SACzD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SAC5D,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACnB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,MAAM,kBAAkB,GAAG,cAAc;QACvC,CAAC,CAAC;YACE,GAAG,gBAAgB,CAAC,aAAa;YACjC,GAAG,gBAAgB,CAAC,cAAc,CAAC;SACpC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,2EAA2E;IAC3E,MAAM,UAAU,GAAG,aAAa,CAAC;IACjC,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7E,iCAAiC;IACjC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,SAAiB,EAAE,EAAU,EAAE;QACjE,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM;YAAE,OAAO,GAAG,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACpD,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IACtD,CAAC,CAAC;IAEF,8BAA8B;IAC9B,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE;QACvC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAC7C,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACpD,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACpC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,kBAAkB,GAAG,cAAc,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,MAAM,sBAAsB,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,MAAM,sBAAsB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnG,MAAM,4BAA4B,GAAG,cAAc;QACjD,CAAC,CAAC;YACE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE;YAC7D,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE;SAChE;QACH,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAEhC,+BAA+B;IAC/B,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CACL,eAAK,SAAS,EAAC,gFAAgF,aAC7F,eAAK,SAAS,EAAC,eAAe,0BAAW,MAAM,CAAC,UAAU,SAAQ,EAClE,cAAK,SAAS,EAAC,gCAAgC,oEAA0D,IACrG,CACP,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAE/B,oCAAoC;IACpC,MAAM,wBAAwB,GAAG,WAAW,CAC1C,CAAC,MAA0B,EAAE,OAAgB,EAAE,EAAE;QAC/C,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAClE,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAM,SAAS,EAAC,UAAU,YAAE,SAAS,GAAQ,EAC5C,MAAM,IAAI,CACT,iBACE,SAAS,EAAC,6CAA6C,EACvD,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAC1C,KAAK,EAAC,iBAAiB,YAEvB,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,GACf,CACV,IACG,CACP,CAAC;IACJ,CAAC,EACD,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAC/C,CAAC;IAEF,wCAAwC;IACxC,MAAM,2BAA2B,GAAG,WAAW,CAC7C,CAAC,MAAc,EAAE,EAAE;QACjB,MAAM,SAAS,GAAG,4BAA4B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAC1F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,cAAc,EAAC,KAAK,EAAE,QAAQ,GAAI,CAAC;IACjH,CAAC,EACD,CAAC,4BAA4B,CAAC,CAC/B,CAAC;IAEF,8BAA8B;IAC9B,MAAM,mBAAmB,GAAG,WAAW,CACrC,CAAC,WAAoB,EAAE,eAA8C,EAAE,EAAE;QACvE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAClE,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAM,SAAS,EAAC,UAAU,YAAE,SAAS,GAAQ,EAC5C,MAAM,IAAI,CACT,iBACE,SAAS,EAAC,6CAA6C,EACvD,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAC1C,KAAK,EAAC,iBAAiB,YAEvB,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,GACf,CACV,IACG,CACP,CAAC;IACJ,CAAC,EACD,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAC/C,CAAC;IAEF,+DAA+D;IAC/D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAyB,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAyB,EAAE,CAAC,CAAC;IAEvE,iFAAiF;IACjF,kEAAkE;IAClE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,CAAC,CAAyB,EAAE,CAAyB,EAAE,EAAE;YAC5E,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,EAAE;gBAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;gBAChE,SAAS,CAAC,EAAE,CAAC,CAAC;gBACd,YAAY,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,UAAU,GAA2B,EAAE,GAAG,MAAM,EAAE,CAAC;QACzD,MAAM,aAAa,GAA2B,EAAE,GAAG,SAAS,EAAE,CAAC;QAC/D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACzF,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YAC1D,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC;YAClG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;gBACxB,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;YAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,CAAC;YAAE,YAAY,CAAC,aAAa,CAAC,CAAC;IAC3E,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC;IAE7E,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;IACrD,MAAM,cAAc,GAAG,CAAC,MAAe,EAAE,EAAE;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC,CAAC;IAEF,OAAO,CACL,eACE,SAAS,EAAE,GAAG,UAAU,sFAAsF,aAE9G,eAAK,SAAS,EAAC,sBAAsB,aAClC,YAAY,IAAI,cAAK,SAAS,EAAC,MAAM,YAAE,YAAY,GAAO,EAG1D,qBAAqB,CAAC,MAAM,GAAG,CAAC,IAAI,CACnC,eAAK,SAAS,EAAC,gBAAgB,aAC5B,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACrC,eAEE,SAAS,EAAC,+GAA+G,aAEzH,eAAK,SAAS,EAAC,QAAQ,aACrB,cAAK,SAAS,EAAC,eAAe,uCAA6B,EAC3D,cAAK,SAAS,EAAC,aAAa,YAAE,GAAG,CAAC,OAAO,GAAO,EAChD,eAAK,SAAS,EAAC,+BAA+B,aAC3C,GAAG,CAAC,MAAM,OAAG,GAAG,CAAC,MAAM,cAAU,GAAG,CAAC,MAAM,SACxC,IACF,EACN,iBACE,SAAS,EAAC,kDAAkD,EAC5D,OAAO,EAAE,GAAG,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAC5C,KAAK,EAAC,SAAS,YAEf,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,GAAI,GACZ,KAhBJ,CAAC,CAiBF,CACP,CAAC,EACD,qBAAqB,CAAC,MAAM,GAAG,CAAC,IAAI,CACnC,iBACE,SAAS,EAAC,mDAAmD,EAC7D,OAAO,EAAE,0BAA0B,0BAG5B,CACV,IACG,CACP,EAGA,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1B,eAAK,SAAS,EAAC,gBAAgB,aAC5B,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,eAEE,SAAS,EAAC,+GAA+G,aAEzH,eAAK,SAAS,EAAC,QAAQ,aACrB,cAAK,SAAS,EAAC,eAAe,YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,GAAO,EAC/E,cAAK,SAAS,EAAC,aAAa,YAAE,GAAG,CAAC,OAAO,GAAO,IAC5C,EACN,iBACE,SAAS,EAAC,kDAAkD,EAC5D,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,EACnC,KAAK,EAAC,SAAS,YAEf,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,GAAI,GACZ,KAbJ,CAAC,CAcF,CACP,CAAC,EACD,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1B,iBAAQ,SAAS,EAAC,mDAAmD,EAAC,OAAO,EAAE,iBAAiB,0BAEvF,CACV,IACG,CACP,EAEA,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5B,eAAK,SAAS,EAAC,gBAAgB,aAC5B,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAC9B,eAEE,SAAS,EAAC,qHAAqH,aAE/H,eAAK,SAAS,EAAC,QAAQ,aACrB,cAAK,SAAS,EAAC,eAAe,+BAAqB,EACnD,cAAK,SAAS,EAAC,aAAa,YAAE,GAAG,CAAC,OAAO,GAAO,EAC/C,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,WAAW,IAAI,CACjC,eAAK,SAAS,EAAC,iCAAiC,yBACrC,GAAG,CAAC,OAAO,UAAM,GAAG,CAAC,WAAW,IACrC,CACP,IACG,EACN,iBACE,SAAS,EAAC,sDAAsD,EAChE,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,EACrC,KAAK,EAAC,SAAS,YAEf,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,GAAI,GACZ,KAlBJ,CAAC,CAmBF,CACP,CAAC,EACD,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5B,iBAAQ,SAAS,EAAC,uDAAuD,EAAC,OAAO,EAAE,mBAAmB,0BAE7F,CACV,IACG,CACP,EAED,cAAK,SAAS,EAAC,oBAAoB,0BAAgB,EACnD,eAAK,SAAS,EAAC,4BAA4B,6BAAc,UAAU,IAAO,EAC1E,cAAK,SAAS,EAAC,QAAQ,YACpB,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAChC,0BACE,cAAK,SAAS,EAAC,eAAe,uCAA6B,EAC1D,sBAAsB,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9D,eAAK,SAAS,EAAC,gEAAgE,aAC7E,cAAK,SAAS,EAAC,oBAAoB,2BAAiB,EACpD,aAAI,SAAS,EAAC,gBAAgB,YAC3B,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACpC,cAAY,SAAS,EAAC,yBAAyB,aAC7C,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,SAAS,GAAG,EAC5D,yBAAO,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,GAAQ,EACvC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,CACnB,iBACE,SAAS,EAAC,2FAA2F,EACrG,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;4DACb,CAAC,CAAC,eAAe,EAAE,CAAC;4DACpB,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;wDACjC,CAAC,EACD,KAAK,EAAC,wBAAwB,4BAGvB,CACV,KAdM,CAAC,CAeL,CACN,CAAC,GACC,IACD,CACP,IACG,CACP,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CACjB,0BACE,eAAK,SAAS,EAAC,MAAM,aACnB,oCAAY,YAAY,CAAC,EAAE,IAAO,EAClC,0BACG,YAAY,CAAC,MAAM,CAAC,MAAM,OAAG,YAAY,CAAC,MAAM,CAAC,MAAM,cAAK,YAAY,CAAC,MAAM,CAAC,MAAM,OACtF,YAAY,CAAC,MAAM,CAAC,MAAM,IACvB,EACL,gBAAgB,EAAE,EACnB,cAAK,SAAS,EAAC,MAAM,YACnB,iBACE,SAAS,EAAC,8EAA8E,EACxF,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oDACb,CAAC,CAAC,eAAe,EAAE,CAAC;oDACpB,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gDAClC,CAAC,EACD,KAAK,EAAC,kBAAkB,4BAGjB,GACL,EACN,eAAK,SAAS,EAAC,8BAA8B,aAC3C,iBAAO,SAAS,EAAC,oBAAoB,aACnC,kCAAiB,EACjB,eAAM,SAAS,EAAC,2BAA2B,2BAAkB,IACvD,EACR,kBACE,SAAS,EAAC,qGAAqG,EAC/G,KAAK,EAAE,YAAY,CAAC,MAAM,IAAI,EAAE,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;wDACd,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;wDACzB,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;wDACtC,cAAc,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oDACxC,CAAC,aAED,iBAAQ,KAAK,EAAC,EAAE,oCAA6B,EAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjD,iBAAkB,KAAK,EAAE,GAAG,YACzB,GAAG,IADO,GAAG,CAEP,CACV,CAAC,IACK,IACL,IACF,EACL,sBAAsB,CAAC,MAAM,GAAG,CAAC,IAAI,CACpC,eAAK,SAAS,EAAC,gEAAgE,aAC7E,cAAK,SAAS,EAAC,oBAAoB,2BAAiB,EACpD,aAAI,SAAS,EAAC,gBAAgB,YAC3B,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACpC,cAAY,SAAS,EAAC,yBAAyB,aAC7C,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,SAAS,GAAG,EAC5D,yBAAO,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,GAAQ,EACxC,iBACE,SAAS,EAAC,2FAA2F,EACrG,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;4DACb,CAAC,CAAC,eAAe,EAAE,CAAC;4DACpB,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;wDAClC,CAAC,EACD,KAAK,EAAC,kBAAkB,4BAGjB,KAZF,CAAC,CAaL,CACN,CAAC,GACC,IACD,CACP,IACG,CACP,CAAC,CAAC,CAAC,CACF,0BACG,YAAY,IAAI,CACf,eAAK,SAAS,EAAC,MAAM,aACnB,oCAAY,YAAY,CAAC,MAAM,IAAO,EACtC,oCAAY,YAAY,CAAC,MAAM,IAAO,EACrC,CAAC,CAAC,kBAAkB,EAAE,UAAU,IAAI,kBAAkB,CAAC,UAAU,GAAG,CAAC,IAAI,CACxE,eAAK,SAAS,EAAC,gFAAgF,aAC7F,eAAK,SAAS,EAAC,eAAe,0BAAW,kBAAkB,CAAC,UAAU,SAAQ,EAC7E,kBAAkB,CAAC,YAAY,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC/E,eAAK,SAAS,EAAC,MAAM,aACnB,cAAK,SAAS,EAAC,2BAA2B,wBAAc,EACxD,cAAK,SAAS,EAAC,2BAA2B,YACvC,kBAAkB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CACnD,eAEE,SAAS,EAAC,gFAAgF,YAEzF,KAAK,IAHD,GAAG,CAIH,CACR,CAAC,GACE,IACF,CACP,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,gCAAgC,gFAEzC,CACP,IACG,CACP,EACA,CAAC,CAAC,kBAAkB,EAAE,SAAS,IAAI,CAClC,cAAK,SAAS,EAAC,yFAAyF,YACrG,MAAM,CAAE,kBAAkB,CAAC,SAAiB,EAAE,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,GACnF,CACP,IACG,CACP,EACD,eAAK,SAAS,EAAC,MAAM,aACnB,cAAK,SAAS,EAAC,oBAAoB,uBAAa,EAC/C,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC3B,cAAK,SAAS,EAAC,eAAe,0BAAgB,CAC/C,CAAC,CAAC,CAAC,CACF,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;4CACrB,MAAM,MAAM,GAAG,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;4CAC1D,MAAM,aAAa,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;4CACxE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;4CAC5F,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,cAAc,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CACnE,CAAC;4CACF,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,EAAE,CAAC,GAAG,CAAC,KAAK;iDACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,cAAc,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;iDAC1E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAC/B,CAAC;4CACF,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,gBAAgB,CACrE,MAAM,EACN,kBAAkB,CAAC,CAAC,CAAC,CACtB,CAAC;4CACF,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;4CAC1E,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;4CACtF,MAAM,WAAW,GAAG;gDAClB,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;gDAClB,QAAQ,EAAE,QAAQ;6CACnB,CAAC;4CACF,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;4CAC9B,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;4CACzF,MAAM,QAAQ,GAAG,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,CAAC;4CACrE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;4CACrE,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;4CACxD,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;4CAC/E,MAAM,MAAM,GAAG,GAAG,EAAE;gDAClB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gDACxB,IAAI,KAAK,KAAK,SAAS;oDAAE,OAAO;gDAEhC,kDAAkD;gDAClD,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gDACrD,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;oDAC7B,0DAA0D;oDAC1D,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;oDAC5C,OAAO;gDACT,CAAC;gDAED,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gDACnB,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;4CAC9C,CAAC,CAAC;4CACF,MAAM,MAAM,GAAG,GAAG,EAAE;gDAClB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gDAC3D,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;4CAC1C,CAAC,CAAC;4CACF,MAAM,UAAU,GAAG,GAAG,EAAE;gDACtB,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gDACvB,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gDACtC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;4CAC3C,CAAC,CAAC;4CACF,MAAM,MAAM,GAAG,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;4CAClD,MAAM,QAAQ,GAAG,4BAA4B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;4CACnF,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;4CAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;4CACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4CACxE,OAAO,CACL,eAAa,SAAS,EAAC,8BAA8B,aACnD,iBAAO,SAAS,EAAC,oBAAoB,aACnC,yBAAO,YAAY,CAAC,CAAC,CAAC,GAAQ,EAC9B,eAAM,SAAS,EAAC,2BAA2B,YAAE,SAAS,GAAQ,IACxD,EACP,aAAa,IAAI,CAChB,KAAC,UAAU,IACT,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EACnC,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,cAAc,EACxB,KAAK,EAAE,KAAK,GACZ,CACH,EACA,MAAM,CAAC,CAAC,CAAC,CACR,eAAK,SAAS,EAAC,gCAAgC,aAC7C,kBACE,SAAS,EAAC,iHAAiH,EAC3H,KAAK,EAAE,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EACvE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oEACd,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oEAC3B,MAAM,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oEACjD,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oEACjB,iEAAiE;oEACjE,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oEAC1C,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;oEAC3C,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;gEAChD,CAAC,KACG,WAAW,aAEf,iBAAQ,KAAK,EAAC,EAAE,YAAE,WAAW,CAAC,CAAC,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,GAAU,EAC/E,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAO,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpD,iBAAwB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,YAC7C,GAAG,CAAC,KAAK,IADC,GAAG,CAAC,KAAK,CAEb,CACV,CAAC,IACK,EACR,QAAQ,IAAI,CAAC,QAAQ,IAAI,CACxB,iBACE,SAAS,EAAC,+EAA+E,EACzF,OAAO,EAAE,UAAU,EACnB,KAAK,EAAC,mBAAmB,YAEzB,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,GAAI,GAClB,CACV,IACG,CACP,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACb,cAAK,SAAS,EAAC,gCAAgC,YAC7C,cAAK,SAAS,EAAC,gBAAgB,YAC5B,wBAAwB,CAAC,aAAa,EAAE,YAAY,CAAC,GAClD,GACF,CACP,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,gCAAgC,aAC7C,gBACE,SAAS,EAAC,iHAAiH,EAC3H,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,EAChE,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;oEACf,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO;wEAAE,MAAM,EAAE,CAAC;oEAChC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;wEAAE,MAAM,EAAE,CAAC;gEACnC,CAAC,KACG,WAAW,GACf,EACD,QAAQ,IAAI,CAAC,QAAQ,IAAI,CACxB,iBACE,SAAS,EAAC,+EAA+E,EACzF,OAAO,EAAE,UAAU,EACnB,KAAK,EAAC,mBAAmB,YAEzB,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,GAAI,GAClB,CACV,IACG,CACP,KA5EO,CAAC,CA6EL,CACP,CAAC;wCACJ,CAAC,CAAC,CACH,IACG,EACN,0BACE,cAAK,SAAS,EAAC,oBAAoB,wBAAc,EAChD,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC5B,cAAK,SAAS,EAAC,eAAe,2BAAiB,CAChD,CAAC,CAAC,CAAC,CACF,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACvB,eAAa,SAAS,EAAC,8BAA8B,aACnD,iBAAO,SAAS,EAAC,oBAAoB,aACnC,yBAAO,YAAY,CAAC,CAAC,CAAC,GAAQ,EAC9B,eAAM,SAAS,EAAC,2BAA2B,YAAE,cAAc,CAAC,cAAe,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,GAAQ,IACzF,EACR,cAAK,SAAS,EAAC,gBAAgB,YAC5B,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAC7D,EACL,2BAA2B,CAAC,CAAC,CAAC,KARvB,CAAC,CASL,CACP,CAAC,CACH,IACG,EACL,sBAAsB,CAAC,MAAM,GAAG,CAAC,IAAI,CACpC,eAAK,SAAS,EAAC,gEAAgE,aAC7E,cAAK,SAAS,EAAC,oBAAoB,2BAAiB,EACpD,aAAI,SAAS,EAAC,gBAAgB,YAC3B,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACpC,cAAY,SAAS,EAAC,yBAAyB,aAC7C,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,SAAS,GAAG,EAC5D,yBAAO,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,GAAQ,EACvC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,CACnB,iBACE,SAAS,EAAC,2FAA2F,EACrG,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;4DACb,CAAC,CAAC,eAAe,EAAE,CAAC;4DACpB,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;wDACjC,CAAC,EACD,KAAK,EAAC,wBAAwB,4BAGvB,CACV,KAdM,CAAC,CAeL,CACN,CAAC,GACC,IACD,CACP,IACG,CACP,GACG,IACF,EACL,KAAK,IAAI,CACR,cAAK,SAAS,EAAC,gCAAgC,YAC7C,KAAC,WAAW,IACV,UAAU,EAAE,CAAC,CAAC,UAAU,EACxB,aAAa,EAAE,CAAC,CAAC,aAAa,EAC9B,kBAAkB,EAAE,kBAAkB,EACtC,qBAAqB,EAAE,qBAAqB,GAC5C,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- export declare function IssueBadge({ level, title, size, className, }: {
2
- level: "error" | "warning";
3
- title?: string;
4
- size?: number;
5
- className?: string;
6
- }): import("react/jsx-runtime").JSX.Element;
7
- //# sourceMappingURL=IssueBadge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IssueBadge.d.ts","sourceRoot":"","sources":["../../../src/misc/IssueBadge.tsx"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,IAAS,EACT,SAAS,GACV,EAAE;IACD,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAYA"}
@@ -1,7 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { WarningCircleIcon, XCircleIcon } from "@phosphor-icons/react";
3
- export function IssueBadge({ level, title, size = 12, className, }) {
4
- const colorClass = level === "error" ? "text-red-600" : "text-amber-600";
5
- return (_jsx("button", { type: "button", className: `inline-flex items-center justify-center shrink-0 ${colorClass} ${className ?? ""}`, title: title, style: { width: size, height: size }, children: level === "error" ? _jsx(XCircleIcon, { size: size, weight: "fill" }) : _jsx(WarningCircleIcon, { size: size, weight: "fill" }) }));
6
- }
7
- //# sourceMappingURL=IssueBadge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IssueBadge.js","sourceRoot":"","sources":["../../../src/misc/IssueBadge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEvE,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,IAAI,GAAG,EAAE,EACT,SAAS,GAMV;IACC,MAAM,UAAU,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACzE,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,oDAAoD,UAAU,IAAI,SAAS,IAAI,EAAE,EAAE,EAC9F,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAEnC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAC,iBAAiB,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,GAAG,GACzG,CACV,CAAC;AACJ,CAAC"}
@@ -1,16 +0,0 @@
1
- interface KeyboardShortcutToastProps {
2
- message: string;
3
- duration?: number;
4
- onClose: () => void;
5
- }
6
- export declare function KeyboardShortcutToast({ message, duration, onClose }: KeyboardShortcutToastProps): import("react/jsx-runtime").JSX.Element;
7
- export declare function useKeyboardShortcutToast(): {
8
- toast: {
9
- message: string;
10
- id: number;
11
- } | null;
12
- showToast: (message: string) => void;
13
- hideToast: () => void;
14
- };
15
- export {};
16
- //# sourceMappingURL=KeyboardShortcutToast.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KeyboardShortcutToast.d.ts","sourceRoot":"","sources":["../../../src/misc/KeyboardShortcutToast.tsx"],"names":[],"mappings":"AAEA,UAAU,0BAA0B;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,qBAAqB,CAAC,EAAE,OAAO,EAAE,QAAe,EAAE,OAAO,EAAE,EAAE,0BAA0B,2CAsCtG;AAGD,wBAAgB,wBAAwB;;iBACQ,MAAM;YAAM,MAAM;;yBAEpC,MAAM;;EAUnC"}
@@ -1,40 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useEffect, useState, useRef } from "react";
3
- export function KeyboardShortcutToast({ message, duration = 1000, onClose }) {
4
- const [isVisible, setIsVisible] = useState(true);
5
- const onCloseRef = useRef(onClose);
6
- const fadeOutTimerRef = useRef(null);
7
- // Keep onClose ref up to date
8
- useEffect(() => {
9
- onCloseRef.current = onClose;
10
- }, [onClose]);
11
- useEffect(() => {
12
- const timer = setTimeout(() => {
13
- setIsVisible(false);
14
- // Wait for fade-out animation before calling onClose
15
- fadeOutTimerRef.current = setTimeout(() => {
16
- onCloseRef.current();
17
- }, 300);
18
- }, duration);
19
- return () => {
20
- clearTimeout(timer);
21
- if (fadeOutTimerRef.current) {
22
- clearTimeout(fadeOutTimerRef.current);
23
- }
24
- };
25
- }, [duration]);
26
- return (_jsx("div", { className: `fixed top-4 left-1/2 -translate-x-1/2 z-[2000] pointer-events-none transition-opacity duration-300 ${isVisible ? "opacity-100" : "opacity-0"}`, children: _jsx("div", { className: "bg-white border border-gray-300 rounded-lg shadow-lg px-2 py-1 text-sm text-gray-700 font-medium whitespace-nowrap", children: message }) }));
27
- }
28
- // Hook to manage toast state
29
- export function useKeyboardShortcutToast() {
30
- const [toast, setToast] = useState(null);
31
- const showToast = (message) => {
32
- const id = Date.now();
33
- setToast({ message, id });
34
- };
35
- const hideToast = () => {
36
- setToast(null);
37
- };
38
- return { toast, showToast, hideToast };
39
- }
40
- //# sourceMappingURL=KeyboardShortcutToast.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KeyboardShortcutToast.js","sourceRoot":"","sources":["../../../src/misc/KeyboardShortcutToast.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAQ3D,MAAM,UAAU,qBAAqB,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,EAA8B;IACrG,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,eAAe,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAE5D,8BAA8B;IAC9B,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC/B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,qDAAqD;YACrD,eAAe,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACxC,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEb,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;gBAC5B,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,cACE,SAAS,EAAE,sGACT,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAC9B,EAAE,YAEF,cAAK,SAAS,EAAC,oHAAoH,YAChI,OAAO,GACJ,GACF,CACP,CAAC;AACJ,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,wBAAwB;IACtC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAyC,IAAI,CAAC,CAAC;IAEjF,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACzC,CAAC"}
@@ -1,18 +0,0 @@
1
- import React from "react";
2
- import type { RFNodeData } from "./mapping";
3
- export declare function NodeHandles({ data, isConnectable, getClassName, renderLabel, labelClassName, }: {
4
- data: RFNodeData;
5
- isConnectable: boolean;
6
- getClassName?: (args: {
7
- kind: "input" | "output";
8
- id: string;
9
- type: "source" | "target";
10
- }) => string | undefined;
11
- renderLabel?: (args: {
12
- kind: "input" | "output";
13
- id: string;
14
- }) => React.ReactNode;
15
- labelClassName?: string;
16
- }): import("react/jsx-runtime").JSX.Element;
17
- export default NodeHandles;
18
- //# sourceMappingURL=NodeHandles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeHandles.d.ts","sourceRoot":"","sources":["../../../src/misc/NodeHandles.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAqD5C,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAA4F,GAC7F,EAAE;IACD,IAAI,EAAE,UAAU,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IACjH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,2CAiIA;AAED,eAAe,WAAW,CAAC"}