@oomol-lab/open-flow 0.1.0-beta.76 → 0.1.0-beta.77
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/browser/{ContentIcon-Cm1hbVzW.js → ContentIcon-VZQO8VZU.js} +8 -5
- package/dist/browser/{FlowCanvas-NzKtla_c.js → FlowCanvas-BNGDMaWr.js} +15 -3
- package/dist/browser/{createResourceDialog-BgdedQqu.js → createResourceDialog-BmtakfVg.js} +63 -57
- package/dist/browser/{dialog-aSElFFw2.js → dialog-BcFBfRB1.js} +84 -15
- package/dist/browser/{exportSvg-Dcz4HTo_.js → exportSvg-CG8hEUNk.js} +2 -2
- package/dist/browser/{flowChanges-NZyS7HSp.js → flowChanges-BGo_4Ypo.js} +5849 -10882
- package/dist/browser/{flowWorkspace-Bl0SDehy.js → flowWorkspace-BFHGev7s.js} +1025 -2607
- package/dist/browser/preview.css +112 -5
- package/dist/browser/preview.js +1630 -9295
- package/dist/browser/theme.css +4 -2
- package/dist/browser/{tooltip-3XMK9jkr.js → tooltip-BAWSUexx.js} +1 -1
- package/dist/browser/{typeScriptSession-C9sBGOKZ.js → typeScriptSession-CRoezJPN.js} +1 -1
- package/dist/browser/ui.css +111 -4
- package/dist/browser/ui.js +3 -2
- package/dist/browser/workbench.css +9906 -9778
- package/dist/browser/workbench.d.ts +6 -2
- package/dist/browser/workbench.js +838 -499
- package/dist/browser/{workbenchSelect-DBGP7Y4Z.js → workbenchSelect-CjK-xdm3.js} +2 -2
- package/dist/command/index.js +48 -48
- package/dist/common/authoring.d.ts +4 -4
- package/dist/common/authoringExamples.d.ts +3 -2
- package/dist/common/authoringSchema.d.ts +23 -4
- package/dist/common/control-api-conformance.js +162 -15
- package/dist/common/control-api-errors.d.ts +12 -0
- package/dist/common/control-api.d.ts +35 -2
- package/dist/common/control-api.js +187 -37
- package/dist/common/control-requests.d.ts +22 -3
- package/dist/common/control-requests.js +152 -14
- package/dist/common/engine-contract.d.ts +3 -2
- package/dist/common/flow-authoring.js +55 -7
- package/dist/common/flow-change-schema.d.ts +1 -1
- package/dist/common/flow-change.d.ts +2 -2
- package/dist/common/flow-change.js +56 -8
- package/dist/common/flow-encoding.js +55 -7
- package/dist/common/flow-semantics.js +91 -7
- package/dist/common/flow-state.d.ts +123 -0
- package/dist/common/flow-state.js +5852 -0
- package/dist/common/mcp.d.ts +96 -3
- package/dist/common/mcp.js +165 -13
- package/dist/common/run-events.js +1 -0
- package/dist/common/runtime-contract.d.ts +14 -0
- package/dist/common/runtime-contract.js +118 -5
- package/dist/common/scheduler-node-execution.d.ts +1 -0
- package/dist/common/scheduler.d.ts +1 -1
- package/dist/common/scheduler.js +52 -3
- package/dist/common/state-conformance.d.ts +16 -0
- package/dist/common/tags.d.ts +4 -0
- package/dist/index.d.ts +11 -0
- package/package.json +5 -1
- package/src/control/common/api.ts +84 -11
- package/src/control/common/authoring.ts +6 -1
- package/src/control/common/authoringExamples.ts +8 -0
- package/src/control/common/authoringSchema.ts +18 -12
- package/src/control/common/errors.ts +6 -0
- package/src/control/common/flowDecoders.ts +1 -0
- package/src/control/common/mcp.ts +16 -0
- package/src/control/common/requests.ts +10 -2
- package/src/control/common/tags.ts +20 -0
- package/src/execution/common/events.ts +3 -0
- package/src/execution/common/node-execution.ts +3 -0
- package/src/execution/common/scheduler.ts +2 -0
- package/src/flow/common/change.ts +2 -1
- package/src/flow/common/changeSchema.ts +11 -1
- package/src/flow/common/errorHandling.ts +1 -1
- package/src/flow/common/semantics.ts +20 -0
- package/src/runtime/common/engineContract.ts +6 -3
- package/src/runtime/common/runtime.ts +116 -0
- package/src/state/common/conformance.ts +86 -0
- package/src/state/common/state.ts +169 -0
- package/src/types/index.ts +11 -0
package/README.md
CHANGED
|
@@ -78,6 +78,7 @@ Source paths are not public import APIs. Source maps and declaration maps are no
|
|
|
78
78
|
| `@oomol-lab/open-flow/control-requests` | [src/control/common/requests.ts](src/control/common/requests.ts) |
|
|
79
79
|
| `@oomol-lab/open-flow/decision` | [src/decision/common/decision.ts](src/decision/common/decision.ts) |
|
|
80
80
|
| `@oomol-lab/open-flow/openapi` | [src/openapi/common/openapi.ts](src/openapi/common/openapi.ts) |
|
|
81
|
+
| `@oomol-lab/open-flow/flow-state` | [src/state/common/state.ts](src/state/common/state.ts) |
|
|
81
82
|
| `@oomol-lab/open-flow/http-request` | [src/http/common/httpRequest.ts](src/http/common/httpRequest.ts) |
|
|
82
83
|
|
|
83
84
|
## License
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as derive, l as val, r as combine } from "./dist-bO8nvHFH.js";
|
|
2
|
-
import { $ as
|
|
2
|
+
import { $ as useToolbarRootContext, $n as itemPress, $t as fastComponentRef, Ar as useButton, At as useOpenStateTransitions, Bn as useOnMount, Bt as useFloatingParentNodeId, Cr as clsx, Ct as useFocus, Dr as NOOP, Dt as popupStoreSelectors, Er as EMPTY_OBJECT, Et as createInitialPopupStoreState, F as Separator, Fn as useOpenChangeComplete, Fr as useIsoLayoutEffect, Ft as useClick, Gt as DROPDOWN_COLLISION_AVOIDANCE, Hn as createChangeEventDetails, Hr as isHTMLElement$1, Ht as FloatingTreeStore, In as useAnimationsFinished, Ir as SafeReact, It as FloatingFocusManager, Jn as focusOut, Kn as closePress, Kt as POPUP_COLLISION_AVOIDANCE, L as useCompositeListItem, Lr as useStableCallback, Lt as FloatingNode, Mn as Check, Mr as useCompositeRootContext, Mt as useTriggerRegistration, Nn as createLucideIcon, Nr as formatErrorMessage, Or as warn, Ot as PopupTriggerMap, Pn as useTransitionStatus, Pr as mergeProps, Pt as useDismiss, Qt as fastComponent, Rn as transitionStatusMapping, Rr as useRefWithInit, Rt as FloatingTree, St as useHoverFloatingInteraction, Tn as contains, Tr as EMPTY_ARRAY, Ur as isLastTraversableNode, Ut as FloatingPortal, Vn as useValueChanged, Vt as useFloatingTree, W as COMPOSITE_KEYS, Wn as cancelOpen, Wt as CLICK_TRIGGER_IDENTIFIER, Yn as imperativeAction, Yt as ReactStore, _r as visuallyHiddenInput, _t as useTypeahead, an as Timeout, ar as triggerHover, at as useAnchorPositioning, bt as useInteractions, cn as getTabbableAfterElement, cr as useLabelableContext, ct as CompositeList, dr as useFieldRootContext, et as useAnchoredPopupScrollLock, fr as useBaseUiId, ft as popupStateMapping, gr as visuallyHidden, gt as safePolygon, hr as fieldValidityMapping, ht as useOpenInteractionType, in as useOnFirstRender, it as InternalBackdrop, jn as ownerDocument, jt as useTriggerDataForwarding, kn as isMac, kr as useMergedRefs, kt as useImplicitActiveTrigger, ln as getTabbableBeforeElement, lr as useFormContext, lt as inertValue, mt as triggerOpenStateMapping, nn as createSelector, nt as usePositioner, on as useTimeout, ot as adaptiveOrigin, pr as useId$1, pt as pressableTriggerOpenStateMapping, qt as FocusGuard, rr as siblingOpen, rt as getDisabledMountTransitionStyles, sn as getNextTabbable, st as useDirection, tr as none, un as isOutsideEvent, ur as useRegisterFieldControl, ut as getPseudoElementBounds, vr as useControlled, vt as useRole, wr as useRenderElement, wt as useSyncedFloatingRootContext, xr as cn, xt as useHoverReferenceInteraction, yr as Button, yt as useListNavigation, zr as getParentNode, zt as useFloatingNodeId } from "./tooltip-BAWSUexx.js";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import reactExports, { createContext, forwardRef, memo, useCallback, useContext, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
|
|
5
5
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -11740,6 +11740,8 @@ function useSpriteStatus(url) {
|
|
|
11740
11740
|
//#region src/ui/browser/icons/ContentIcon.tsx
|
|
11741
11741
|
/** Standalone image capture uses individual, cross-origin-readable images instead of sprites. */
|
|
11742
11742
|
var IconImageCrossOriginContext = createContext(void 0);
|
|
11743
|
+
/** A bundled, theme-aware placeholder that does not load a remote icon. */
|
|
11744
|
+
var placeholderIcon = "data:application/vnd.open-flow.placeholder-icon,";
|
|
11743
11745
|
var ContentIcon = ({ src, className, fallback = null, loading = "lazy", decoding = "async" }) => {
|
|
11744
11746
|
const crossOrigin = useContext(IconImageCrossOriginContext);
|
|
11745
11747
|
const sprite = useMemo(() => parseSpriteIcon(src), [src]);
|
|
@@ -11761,6 +11763,10 @@ var ContentIcon = ({ src, className, fallback = null, loading = "lazy", decoding
|
|
|
11761
11763
|
decoding,
|
|
11762
11764
|
sprite
|
|
11763
11765
|
});
|
|
11766
|
+
if (source === "data:application/vnd.open-flow.placeholder-icon,") return /* @__PURE__ */ jsx("i", {
|
|
11767
|
+
"aria-hidden": "true",
|
|
11768
|
+
className: clsx("i-lucide-light:plug", className)
|
|
11769
|
+
});
|
|
11764
11770
|
if (source?.startsWith(initialsIconPrefix)) {
|
|
11765
11771
|
if (crossOrigin && fallback != null) return /* @__PURE__ */ jsx(Fragment$1, { children: fallback });
|
|
11766
11772
|
return /* @__PURE__ */ jsx("span", {
|
|
@@ -11797,9 +11803,6 @@ var ContentIcon = ({ src, className, fallback = null, loading = "lazy", decoding
|
|
|
11797
11803
|
});
|
|
11798
11804
|
};
|
|
11799
11805
|
var initialsIconPrefix = "data:application/vnd.open-flow.initials,";
|
|
11800
|
-
function initialsIcon(initials) {
|
|
11801
|
-
return `${initialsIconPrefix}${initials}`;
|
|
11802
|
-
}
|
|
11803
11806
|
var imageIconPrefix = "data:application/vnd.open-flow.image-icon+json,";
|
|
11804
11807
|
function imageIcon(source, fallback) {
|
|
11805
11808
|
return `${imageIconPrefix}${encodeURIComponent(JSON.stringify({
|
|
@@ -11874,4 +11877,4 @@ function SpriteIcon({ sprite, ...props }) {
|
|
|
11874
11877
|
});
|
|
11875
11878
|
}
|
|
11876
11879
|
//#endregion
|
|
11877
|
-
export { ko_default$1 as $, DropdownMenuSub as A, MenuPopup as B, DropdownMenuContent as C, DropdownMenuRadioGroup as D, DropdownMenuLabel as E, findRootOwnerId as F, MenuRootContext as G, MenuGroup as H, useCompositeItem as I, waitBranchDescription as J, useMenuRootContext as K, MenuRoot as L, DropdownMenuSubTrigger as M, DropdownMenuTrigger as N, DropdownMenuRadioItem as O, isElementDisabled as P, ru_default$1 as Q, MenuPositioner as R, DropdownMenuCheckboxItem as S, DropdownMenuItem as T, ContextMenuRootContext as U, MenuItem as V, useContextMenuRootContext as W, zh_TW_default$1 as X, waitBranchLocales as Y, zh_CN_default$1 as Z, NativeScrollArea as _, spriteIcon as a, Checkbox as at, Z as b, useIconifyData as c, PopoverContent as d, ja_default$1 as et, PopoverDescription as f, PopoverTrigger as g, PopoverTitle as h,
|
|
11880
|
+
export { ko_default$1 as $, DropdownMenuSub as A, MenuPopup as B, DropdownMenuContent as C, DropdownMenuRadioGroup as D, DropdownMenuLabel as E, findRootOwnerId as F, MenuRootContext as G, MenuGroup as H, useCompositeItem as I, waitBranchDescription as J, useMenuRootContext as K, MenuRoot as L, DropdownMenuSubTrigger as M, DropdownMenuTrigger as N, DropdownMenuRadioItem as O, isElementDisabled as P, ru_default$1 as Q, MenuPositioner as R, DropdownMenuCheckboxItem as S, DropdownMenuItem as T, ContextMenuRootContext as U, MenuItem as V, useContextMenuRootContext as W, zh_TW_default$1 as X, waitBranchLocales as Y, zh_CN_default$1 as Z, NativeScrollArea as _, spriteIcon as a, Checkbox as at, Z as b, useIconifyData as c, PopoverContent as d, ja_default$1 as et, PopoverDescription as f, PopoverTrigger as g, PopoverTitle as h, placeholderIcon as i, providerIconAppearance as it, DropdownMenuSubContent as j, DropdownMenuSeparator as k, wrapLayout as l, PopoverPanelContent as m, IconImageCrossOriginContext as n, en_default$1 as nt, IconifyProvider as o, useAriaLabelledBy as ot, PopoverHeader as p, uiLocales as q, imageIcon as r, I18n as rt, useIconifyCollectionLoader as s, IconThemeContext as st, ContentIcon as t, fr_default$1 as tt, Popover as u, ScrollArea as v, DropdownMenuGroup as w, DropdownMenu as x, VirtualScrollArea as y, MenuPortal as z };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { o as __toESM, t as __commonJSMin } from "./rolldown-runtime-CEgmsyvS.js";
|
|
2
|
-
import { $ as ko_default, B as MenuPopup, C as DropdownMenuContent, D as DropdownMenuRadioGroup, E as DropdownMenuLabel, F as findRootOwnerId, G as MenuRootContext, H as MenuGroup, J as waitBranchDescription, K as useMenuRootContext, L as MenuRoot, N as DropdownMenuTrigger, O as DropdownMenuRadioItem, Q as ru_default, R as MenuPositioner, S as DropdownMenuCheckboxItem, T as DropdownMenuItem, U as ContextMenuRootContext, V as MenuItem, W as useContextMenuRootContext, X as zh_TW_default, Z as zh_CN_default, _ as NativeScrollArea, at as Checkbox, d as PopoverContent, et as ja_default, g as PopoverTrigger, h as PopoverTitle, k as DropdownMenuSeparator, l as wrapLayout, nt as en_default, q as uiLocales, rt as I18n, st as IconThemeContext, t as ContentIcon, tt as fr_default, u as Popover, v as ScrollArea, w as DropdownMenuGroup, x as DropdownMenu, z as MenuPortal } from "./ContentIcon-
|
|
2
|
+
import { $ as ko_default, B as MenuPopup, C as DropdownMenuContent, D as DropdownMenuRadioGroup, E as DropdownMenuLabel, F as findRootOwnerId, G as MenuRootContext, H as MenuGroup, J as waitBranchDescription, K as useMenuRootContext, L as MenuRoot, N as DropdownMenuTrigger, O as DropdownMenuRadioItem, Q as ru_default, R as MenuPositioner, S as DropdownMenuCheckboxItem, T as DropdownMenuItem, U as ContextMenuRootContext, V as MenuItem, W as useContextMenuRootContext, X as zh_TW_default, Z as zh_CN_default, _ as NativeScrollArea, at as Checkbox, d as PopoverContent, et as ja_default, g as PopoverTrigger, h as PopoverTitle, k as DropdownMenuSeparator, l as wrapLayout, nt as en_default, q as uiLocales, rt as I18n, st as IconThemeContext, t as ContentIcon, tt as fr_default, u as Popover, v as ScrollArea, w as DropdownMenuGroup, x as DropdownMenu, z as MenuPortal } from "./ContentIcon-VZQO8VZU.js";
|
|
3
3
|
import { a as derive, c as strictEqual, i as compute, l as val, n as attachSetter, r as combine, s as readonlyVal } from "./dist-bO8nvHFH.js";
|
|
4
4
|
import { c as useLang, i as isString, l as useTranslate, n as isBoolean, o as I18nProvider, r as isPlainObject, t as isArray$1, u as useVal } from "./dist-BFmpkX4P.js";
|
|
5
|
-
import {
|
|
5
|
+
import { A as strictObject, Cr as clsx, E as number, En as getTarget, Hn as createChangeEventDetails, Jt as addEventListener, Nn as createLucideIcon, Tn as contains, Wn as cancelOpen, b as discriminatedUnion, en as require_with_selector, i as TooltipTrigger, j as string, jn as ownerDocument, n as TooltipContent, on as useTimeout, or as triggerPress, p as timeZoneOffsetMinutes, pr as useId$1, pt as pressableTriggerOpenStateMapping, r as TooltipProvider, t as Tooltip, w as literal, wr as useRenderElement, xn as stopEvent$1, xr as cn$1, yr as Button } from "./tooltip-BAWSUexx.js";
|
|
6
6
|
import { r as resolveUiLanguage } from "./languages-gYzoQqCi.js";
|
|
7
7
|
import * as React from "react";
|
|
8
8
|
import reactExports, { Children, Suspense, createContext, forwardRef, isValidElement, lazy, memo, useCallback, useContext, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
@@ -20452,6 +20452,9 @@ function CommentTitle({ store }) {
|
|
|
20452
20452
|
});
|
|
20453
20453
|
}
|
|
20454
20454
|
//#endregion
|
|
20455
|
+
//#region src/canvas/browser/nodeActions.tsx
|
|
20456
|
+
var NodeHistoryContext = createContext(void 0);
|
|
20457
|
+
//#endregion
|
|
20455
20458
|
//#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/context-menu/root/ContextMenuRoot.js
|
|
20456
20459
|
/**
|
|
20457
20460
|
* A component that creates a context menu activated by right clicking or long pressing.
|
|
@@ -20713,7 +20716,16 @@ function NodeHeadContextMenu({ canvasStore, children }) {
|
|
|
20713
20716
|
function useNodeMenuItems({ t, nodeStore, onDelete, editable }) {
|
|
20714
20717
|
const skip = useVal(NodeStore.to(nodeStore)?.ignore);
|
|
20715
20718
|
const { duplicateNode } = nodeStore;
|
|
20719
|
+
const history = useContext(NodeHistoryContext)?.(nodeStore.nodeId);
|
|
20716
20720
|
return coalesce([
|
|
20721
|
+
history && {
|
|
20722
|
+
...history,
|
|
20723
|
+
key: "$history",
|
|
20724
|
+
icon: /* @__PURE__ */ jsx("i", {
|
|
20725
|
+
"aria-hidden": "true",
|
|
20726
|
+
className: "i-lucide-light:database"
|
|
20727
|
+
})
|
|
20728
|
+
},
|
|
20717
20729
|
editable && duplicateNode && {
|
|
20718
20730
|
label: t("nodeActions.duplicate"),
|
|
20719
20731
|
key: "$duplicate",
|
|
@@ -22703,4 +22715,4 @@ var FlowCanvas = ({ flowCanvasStore, annotationContext, onActivateSelection, onS
|
|
|
22703
22715
|
});
|
|
22704
22716
|
};
|
|
22705
22717
|
//#endregion
|
|
22706
|
-
export {
|
|
22718
|
+
export { isMac as C, toManifestNodeId as S, E as _, JSONViewer as a, toViewEdge as b, CanvasNodeIcon as c, IconStack as d, selectableTimeZones as f, cronDescription as g, timeZoneOffset as h, Textarea as i, defaultTriggerIcon as l, timeZoneLongLabel as m, setAddItemId as n, collapseAllNested as o, timeZoneLabel as p, NodeHistoryContext as r, formatDuration as s, FlowCanvas as t, useDebouncedValue as u, CanvasTooltip as v, isSameViewport as w, toManifestHandleName as x, CanvasStore as y };
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { l as useTranslate } from "./dist-BFmpkX4P.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { t as WorkbenchSelect } from "./workbenchSelect-
|
|
2
|
+
import { yr as Button } from "./tooltip-BAWSUexx.js";
|
|
3
|
+
import { a as DialogFooter, d as Field, f as FieldDescription, h as FieldLabel, i as DialogDescription, l as Icon, m as FieldGroup, n as DialogClose, nn as Input, o as DialogHeader, p as FieldError, r as DialogContent, s as DialogTitle, t as Dialog, u as Spinner } from "./dialog-BcFBfRB1.js";
|
|
4
|
+
import { t as WorkbenchSelect } from "./workbenchSelect-CjK-xdm3.js";
|
|
5
5
|
import { useEffect, useRef, useState } from "react";
|
|
6
6
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
//#region src/workbench/browser/runtime/shell/createResourceDialog.tsx
|
|
8
|
-
function CreateResourceDialog({ disabled, field, id, issue, label, name, onNameChange, onOpenChange, onSubmit, pending, submitLabel, sourceUrl, title }) {
|
|
8
|
+
function CreateResourceDialog({ disabled, tagField, field, id, issue, label, name, onNameChange, onOpenChange, onSubmit, pending, submitLabel, sourceUrl, title }) {
|
|
9
9
|
const t = useTranslate();
|
|
10
10
|
const input = useRef(null);
|
|
11
11
|
const portal = useRef(null);
|
|
12
|
+
const [root, setRoot] = useState(null);
|
|
12
13
|
const [open, setOpen] = useState(false);
|
|
13
14
|
const showIssue = name.length > 0 && issue != null;
|
|
14
15
|
const message = showIssue ? t(`resource.nameIssue.${issue}`, { max: 80 }) : t("resource.nameHint", { max: 80 });
|
|
@@ -27,6 +28,7 @@ function CreateResourceDialog({ disabled, field, id, issue, label, name, onNameC
|
|
|
27
28
|
},
|
|
28
29
|
open,
|
|
29
30
|
children: /* @__PURE__ */ jsx(DialogContent, {
|
|
31
|
+
ref: setRoot,
|
|
30
32
|
container: portal.current,
|
|
31
33
|
initialFocus: () => input.current,
|
|
32
34
|
showCloseButton: false,
|
|
@@ -56,63 +58,67 @@ function CreateResourceDialog({ disabled, field, id, issue, label, name, onNameC
|
|
|
56
58
|
})] }),
|
|
57
59
|
/* @__PURE__ */ jsxs(FieldGroup, {
|
|
58
60
|
className: "gap-4",
|
|
59
|
-
children: [
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
/* @__PURE__ */ jsx(FieldLabel, {
|
|
63
|
-
htmlFor: id,
|
|
64
|
-
children: label
|
|
65
|
-
}),
|
|
66
|
-
/* @__PURE__ */ jsx(Input, {
|
|
67
|
-
autoComplete: "off",
|
|
68
|
-
"aria-describedby": messageId,
|
|
69
|
-
"aria-invalid": showIssue,
|
|
70
|
-
id,
|
|
71
|
-
name: "resource-name",
|
|
72
|
-
onChange: (event) => onNameChange(event.target.value),
|
|
73
|
-
ref: input,
|
|
74
|
-
required: true,
|
|
75
|
-
value: name
|
|
76
|
-
}),
|
|
77
|
-
showIssue ? /* @__PURE__ */ jsx(FieldError, {
|
|
78
|
-
id: messageId,
|
|
79
|
-
children: message
|
|
80
|
-
}) : /* @__PURE__ */ jsx(FieldDescription, {
|
|
81
|
-
id: messageId,
|
|
82
|
-
children: message
|
|
83
|
-
})
|
|
84
|
-
]
|
|
85
|
-
}), field != null && /* @__PURE__ */ jsxs(Field, { children: [
|
|
86
|
-
/* @__PURE__ */ jsx(FieldLabel, {
|
|
87
|
-
htmlFor: field.state == "ready" ? fieldId : void 0,
|
|
88
|
-
children: field.label
|
|
89
|
-
}),
|
|
90
|
-
field.state == "ready" ? /* @__PURE__ */ jsx(WorkbenchSelect, {
|
|
91
|
-
ariaLabel: field.ariaLabel,
|
|
92
|
-
className: "w-full",
|
|
93
|
-
id: fieldId,
|
|
94
|
-
onValueChange: field.onValueChange,
|
|
95
|
-
options: field.options,
|
|
96
|
-
portalRoot: portal.current,
|
|
97
|
-
value: field.value
|
|
98
|
-
}) : /* @__PURE__ */ jsxs("div", {
|
|
99
|
-
className: "flex min-h-9 items-center gap-2 rounded-lg border bg-muted/30 px-3 py-2 text-sm text-muted-foreground",
|
|
100
|
-
role: field.state == "error" ? "alert" : "status",
|
|
61
|
+
children: [
|
|
62
|
+
/* @__PURE__ */ jsxs(Field, {
|
|
63
|
+
"data-invalid": showIssue,
|
|
101
64
|
children: [
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
65
|
+
/* @__PURE__ */ jsx(FieldLabel, {
|
|
66
|
+
htmlFor: id,
|
|
67
|
+
children: label
|
|
68
|
+
}),
|
|
69
|
+
/* @__PURE__ */ jsx(Input, {
|
|
70
|
+
autoComplete: "off",
|
|
71
|
+
"aria-describedby": messageId,
|
|
72
|
+
"aria-invalid": showIssue,
|
|
73
|
+
id,
|
|
74
|
+
name: "resource-name",
|
|
75
|
+
onChange: (event) => onNameChange(event.target.value),
|
|
76
|
+
ref: input,
|
|
77
|
+
required: true,
|
|
78
|
+
value: name
|
|
79
|
+
}),
|
|
80
|
+
showIssue ? /* @__PURE__ */ jsx(FieldError, {
|
|
81
|
+
id: messageId,
|
|
82
|
+
children: message
|
|
83
|
+
}) : /* @__PURE__ */ jsx(FieldDescription, {
|
|
84
|
+
id: messageId,
|
|
85
|
+
children: message
|
|
111
86
|
})
|
|
112
87
|
]
|
|
113
88
|
}),
|
|
114
|
-
|
|
115
|
-
|
|
89
|
+
tagField?.(root),
|
|
90
|
+
field != null && /* @__PURE__ */ jsxs(Field, { children: [
|
|
91
|
+
/* @__PURE__ */ jsx(FieldLabel, {
|
|
92
|
+
htmlFor: field.state == "ready" ? fieldId : void 0,
|
|
93
|
+
children: field.label
|
|
94
|
+
}),
|
|
95
|
+
field.state == "ready" ? /* @__PURE__ */ jsx(WorkbenchSelect, {
|
|
96
|
+
ariaLabel: field.ariaLabel,
|
|
97
|
+
className: "w-full",
|
|
98
|
+
id: fieldId,
|
|
99
|
+
onValueChange: field.onValueChange,
|
|
100
|
+
options: field.options,
|
|
101
|
+
portalRoot: root,
|
|
102
|
+
value: field.value
|
|
103
|
+
}) : /* @__PURE__ */ jsxs("div", {
|
|
104
|
+
className: "flex min-h-9 items-center gap-2 rounded-lg border bg-muted/30 px-3 py-2 text-sm text-muted-foreground",
|
|
105
|
+
role: field.state == "error" ? "alert" : "status",
|
|
106
|
+
children: [
|
|
107
|
+
field.state == "loading" && /* @__PURE__ */ jsx(Spinner, { "aria-hidden": "true" }),
|
|
108
|
+
/* @__PURE__ */ jsx("span", { children: field.status }),
|
|
109
|
+
field.state == "error" && /* @__PURE__ */ jsx(Button, {
|
|
110
|
+
className: "ml-auto bg-background",
|
|
111
|
+
onClick: field.onRetry,
|
|
112
|
+
size: "sm",
|
|
113
|
+
type: "button",
|
|
114
|
+
variant: "outline",
|
|
115
|
+
children: field.retry
|
|
116
|
+
})
|
|
117
|
+
]
|
|
118
|
+
}),
|
|
119
|
+
/* @__PURE__ */ jsx(FieldDescription, { children: field.description })
|
|
120
|
+
] })
|
|
121
|
+
]
|
|
116
122
|
}),
|
|
117
123
|
/* @__PURE__ */ jsxs(DialogFooter, {
|
|
118
124
|
className: "mx-0 mb-0 border-0 bg-transparent p-0 pt-1",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as toPlainObject, i as isString } from "./dist-BFmpkX4P.js";
|
|
2
|
-
import { $ as
|
|
2
|
+
import { $ as useToolbarRootContext, $n as itemPress, A as strictObject, An as isWebKit, Ar as useButton, At as useOpenStateTransitions, Br as getWindow, D as object, Dr as NOOP, Dt as popupStoreSelectors, E as number, En as getTarget, Er as EMPTY_OBJECT, Et as createInitialPopupStoreState, F as Separator, Fn as useOpenChangeComplete, Fr as useIsoLayoutEffect, Ft as useClick, Gt as DROPDOWN_COLLISION_AVOIDANCE, Hn as createChangeEventDetails, I as IndexGuessBehavior, It as FloatingFocusManager, Jt as addEventListener, Kn as closePress, L as useCompositeListItem, Lr as useStableCallback, M as union, Mn as Check, N as unknown, Nn as createLucideIcon, Nr as formatErrorMessage, Nt as platform, O as preprocess, Ot as PopupTriggerMap, P as _isoDateTime, Pn as useTransitionStatus, Pr as mergeProps, Pt as useDismiss, Rn as transitionStatusMapping, Rr as useRefWithInit, S as json$1, Sn as getFloatingFocusElement, Sr as cva, T as never, Tn as contains, Tr as EMPTY_ARRAY, Tt as useFloatingRootContext, Ut as FloatingPortal, Vn as useValueChanged, Vr as isElement, W as COMPOSITE_KEYS, Wn as cancelOpen, Wt as CLICK_TRIGGER_IDENTIFIER, Xt as Store, Yn as imperativeAction, Yt as ReactStore, Zt as useStore, _ as _null, _r as visuallyHiddenInput, _t as useTypeahead, at as useAnchorPositioning, b as discriminatedUnion, bn as rectToClientRect, br as buttonVariants, bt as useInteractions, cr as useLabelableContext, ct as CompositeList, dr as useFieldRootContext, dt as CommonPopupDataAttributes, et as useAnchoredPopupScrollLock, f as isTimeZone, fr as useBaseUiId, ft as popupStateMapping, g as _enum, gr as visuallyHidden, h as ZodType, hr as fieldValidityMapping, ht as useOpenInteractionType, i as TooltipTrigger, in as useOnFirstRender, it as InternalBackdrop, j as string, jn as ownerDocument, jt as useTriggerDataForwarding, k as record$1, kr as useMergedRefs, kt as useImplicitActiveTrigger, lr as useFormContext, lt as inertValue, m as ZodISODateTime, mt as triggerOpenStateMapping, n as TooltipContent, nn as createSelector, nt as usePositioner, on as useTimeout, pt as pressableTriggerOpenStateMapping, rn as useValueAsRef, rt as getDisabledMountTransitionStyles, sr as windowResize, st as useDirection, t as Tooltip, tr as none, tt as useScrollLock, ur as useRegisterFieldControl, ut as getPseudoElementBounds, v as array, vr as useControlled, vt as useRole, w as literal, wn as activeElement, wr as useRenderElement, wt as useSyncedFloatingRootContext, xr as cn, y as boolean, yr as Button, yt as useListNavigation, zn as useAnimationFrame } from "./tooltip-BAWSUexx.js";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { useMemo } from "react";
|
|
5
5
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -2310,6 +2310,11 @@ function SelectScrollDownButton({ className, ...props }) {
|
|
|
2310
2310
|
});
|
|
2311
2311
|
}
|
|
2312
2312
|
//#endregion
|
|
2313
|
+
//#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/classic/iso.js
|
|
2314
|
+
function datetime(params) {
|
|
2315
|
+
return _isoDateTime(ZodISODateTime, params);
|
|
2316
|
+
}
|
|
2317
|
+
//#endregion
|
|
2313
2318
|
//#region ../../node_modules/.bun/dequal@2.0.3/node_modules/dequal/lite/index.mjs
|
|
2314
2319
|
var has = Object.prototype.hasOwnProperty;
|
|
2315
2320
|
function dequal(foo, bar) {
|
|
@@ -2333,11 +2338,71 @@ function dequal(foo, bar) {
|
|
|
2333
2338
|
}
|
|
2334
2339
|
return foo !== foo && bar !== bar;
|
|
2335
2340
|
}
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2341
|
+
strictObject({
|
|
2342
|
+
scope: _enum(["draft", "live"]),
|
|
2343
|
+
values: boolean().optional()
|
|
2344
|
+
});
|
|
2345
|
+
strictObject({
|
|
2346
|
+
scope: _enum(["draft", "live"]),
|
|
2347
|
+
key: string().min(1).refine((key) => new TextEncoder().encode(key).length <= 256).optional()
|
|
2348
|
+
});
|
|
2349
|
+
strictObject({
|
|
2350
|
+
scope: _enum(["draft", "live"]),
|
|
2351
|
+
space: string().regex(/^(flow|node:.+)$/)
|
|
2352
|
+
});
|
|
2353
|
+
var dedupeConfigSchema = strictObject({
|
|
2354
|
+
field: string().default(""),
|
|
2355
|
+
mode: _enum(["new", "increasing"]).default("new"),
|
|
2356
|
+
space: _enum(["node", "flow"]).default("node")
|
|
2357
|
+
});
|
|
2358
|
+
var dedupeExecutorSchema = dedupeConfigSchema.extend({ kind: literal("dedupe") });
|
|
2359
|
+
function dedupeTask(config = dedupeConfigSchema.parse({}), name = "Remove Duplicates") {
|
|
2360
|
+
return {
|
|
2361
|
+
name,
|
|
2362
|
+
executor: {
|
|
2363
|
+
...config,
|
|
2364
|
+
kind: "dedupe"
|
|
2365
|
+
},
|
|
2366
|
+
inputs: [{
|
|
2367
|
+
handle: "items",
|
|
2368
|
+
jsonSchema: { type: "array" },
|
|
2369
|
+
nullable: false
|
|
2370
|
+
}],
|
|
2371
|
+
outputs: ["items", "duplicates"].map((handle) => ({
|
|
2372
|
+
handle,
|
|
2373
|
+
jsonSchema: { type: "array" },
|
|
2374
|
+
nullable: false
|
|
2375
|
+
}))
|
|
2376
|
+
};
|
|
2340
2377
|
}
|
|
2378
|
+
var flowStateViewSchema = object({
|
|
2379
|
+
version: literal(1),
|
|
2380
|
+
scope: _enum(["draft", "live"]),
|
|
2381
|
+
limits: object({
|
|
2382
|
+
maxValueBytes: number().positive(),
|
|
2383
|
+
maxValues: number().int().positive(),
|
|
2384
|
+
maxSpaces: number().int().positive(),
|
|
2385
|
+
maxIdentities: number().positive(),
|
|
2386
|
+
maxRunWrites: number().positive()
|
|
2387
|
+
}),
|
|
2388
|
+
values: array(object({
|
|
2389
|
+
key: string(),
|
|
2390
|
+
size: number().nonnegative(),
|
|
2391
|
+
updatedAt: number(),
|
|
2392
|
+
value: json$1().optional()
|
|
2393
|
+
})),
|
|
2394
|
+
spaces: array(object({
|
|
2395
|
+
space: string(),
|
|
2396
|
+
mode: _enum(["new", "increasing"]),
|
|
2397
|
+
count: number().nonnegative(),
|
|
2398
|
+
watermark: union([
|
|
2399
|
+
string(),
|
|
2400
|
+
number(),
|
|
2401
|
+
_null()
|
|
2402
|
+
]),
|
|
2403
|
+
updatedAt: number()
|
|
2404
|
+
}))
|
|
2405
|
+
});
|
|
2341
2406
|
//#endregion
|
|
2342
2407
|
//#region ../../node_modules/.bun/@cfworker+json-schema@4.1.1/node_modules/@cfworker/json-schema/dist/esm/deep-compare-strict.js
|
|
2343
2408
|
function deepCompareStrict(a, b) {
|
|
@@ -7060,7 +7125,8 @@ var managedFields = object({
|
|
|
7060
7125
|
flowId: text,
|
|
7061
7126
|
revisionId: text
|
|
7062
7127
|
}),
|
|
7063
|
-
httpRequestExecutorSchema
|
|
7128
|
+
httpRequestExecutorSchema,
|
|
7129
|
+
dedupeExecutorSchema
|
|
7064
7130
|
])
|
|
7065
7131
|
});
|
|
7066
7132
|
var managed = managedFields.transform(limitDecisionTask);
|
|
@@ -7330,7 +7396,8 @@ var revision = object({
|
|
|
7330
7396
|
literal(9),
|
|
7331
7397
|
literal(10),
|
|
7332
7398
|
literal(11),
|
|
7333
|
-
literal(12)
|
|
7399
|
+
literal(12),
|
|
7400
|
+
literal(13)
|
|
7334
7401
|
]),
|
|
7335
7402
|
document,
|
|
7336
7403
|
modules: record$1(text, module)
|
|
@@ -7532,6 +7599,7 @@ var variants = new Map(Object.entries(shapes).map(([kind, shape]) => [kind, shap
|
|
|
7532
7599
|
})]));
|
|
7533
7600
|
array(union([...variants.values()])).min(1);
|
|
7534
7601
|
function checkModelVersion(content) {
|
|
7602
|
+
if (content.modelVersion < 13 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind === "task" && "executor" in candidateNode.task && candidateNode.task.executor.kind === "dedupe")) throw new Error("Deduplication requires Flow model v13.");
|
|
7535
7603
|
if (content.modelVersion < 12 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && "moduleId" in candidateNode.task && candidateNode.task.capabilities?.some((item) => item.kind == "http"))) throw new TypeError("Code HTTP access requires Flow model version 12.");
|
|
7536
7604
|
if (content.modelVersion < 11 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && "executor" in candidateNode.task && candidateNode.task.executor.kind == "http-request")) throw new TypeError("HTTP Request requires Flow model version 11.");
|
|
7537
7605
|
if (content.modelVersion < 11 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && ("moduleId" in candidateNode.task ? candidateNode.task.capabilities?.some((item) => item.kind == "workflow") : candidateNode.task.executor.kind == "agent" && candidateNode.task.executor.tools.some((item) => item.kind == "workflow")))) throw new TypeError("Workflow tools require Flow model version 11.");
|
|
@@ -7771,7 +7839,7 @@ var nodeErrorSchema = {
|
|
|
7771
7839
|
}
|
|
7772
7840
|
};
|
|
7773
7841
|
function supportsNodeErrorHandling(node) {
|
|
7774
|
-
return supportsNodeRetry(node);
|
|
7842
|
+
return supportsNodeRetry(node) || node.kind === "task" && "executor" in node.task && node.task.executor.kind === "dedupe";
|
|
7775
7843
|
}
|
|
7776
7844
|
function nodeSystemOutputPorts(node) {
|
|
7777
7845
|
return supportsNodeErrorHandling(node) && node.onError == "error" ? { error: {
|
|
@@ -7941,10 +8009,10 @@ function upgradeRevisionContent(content) {
|
|
|
7941
8009
|
function upgradeDecodedRevisionContent(content) {
|
|
7942
8010
|
const graph = content.document.graph;
|
|
7943
8011
|
const hasManual = Object.values(graph.nodes).some((node) => node.kind == "manual");
|
|
7944
|
-
if (!hasManual && content.modelVersion ==
|
|
8012
|
+
if (!hasManual && content.modelVersion == 13) return content;
|
|
7945
8013
|
return {
|
|
7946
8014
|
...content,
|
|
7947
|
-
modelVersion:
|
|
8015
|
+
modelVersion: 13,
|
|
7948
8016
|
document: {
|
|
7949
8017
|
...content.document,
|
|
7950
8018
|
graph: hasManual ? {
|
|
@@ -7991,7 +8059,7 @@ function invalid(message) {
|
|
|
7991
8059
|
throw new FlowChangeError(message);
|
|
7992
8060
|
}
|
|
7993
8061
|
function applyFlowChanges(content, operations) {
|
|
7994
|
-
const source = content.modelVersion !=
|
|
8062
|
+
const source = content.modelVersion != 13 || Object.values(content.document.graph.nodes).some((node) => node.kind == "manual") ? decodeRevisionContent(content) : content;
|
|
7995
8063
|
const document = { ...source.document };
|
|
7996
8064
|
const modules = { ...source.modules };
|
|
7997
8065
|
for (const operation of operations) switch (operation.kind) {
|
|
@@ -8439,7 +8507,7 @@ function applyFlowChanges(content, operations) {
|
|
|
8439
8507
|
assertDocumentHttpAuthBindings(document);
|
|
8440
8508
|
return upgradeDecodedRevisionContent({
|
|
8441
8509
|
document,
|
|
8442
|
-
modelVersion:
|
|
8510
|
+
modelVersion: 13,
|
|
8443
8511
|
modules
|
|
8444
8512
|
});
|
|
8445
8513
|
}
|
|
@@ -9284,10 +9352,11 @@ function DialogOverlay({ className, ...props }) {
|
|
|
9284
9352
|
...props
|
|
9285
9353
|
});
|
|
9286
9354
|
}
|
|
9287
|
-
function DialogContent({ children, className, closeLabel = "Close", container, showCloseButton = true, ...props }) {
|
|
9355
|
+
var DialogContent = React.forwardRef(function DialogContent({ children, className, closeLabel = "Close", container, showCloseButton = true, ...props }, ref) {
|
|
9288
9356
|
return /* @__PURE__ */ jsxs(DialogPortal, {
|
|
9289
9357
|
container,
|
|
9290
9358
|
children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsxs(DialogPopup, {
|
|
9359
|
+
ref,
|
|
9291
9360
|
"data-slot": "dialog-content",
|
|
9292
9361
|
className: cn("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] grid-cols-[minmax(0,1fr)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg bg-popover [--ui-control-background:var(--ui-popover)] p-4 text-sm text-popover-foreground shadow-lg ring-1 ring-foreground/10 outline-none sm:max-w-sm transition-opacity duration-150 ease-out data-starting-style:opacity-0 data-ending-style:opacity-0 motion-reduce:transition-none", className),
|
|
9293
9362
|
...props,
|
|
@@ -9310,7 +9379,7 @@ function DialogContent({ children, className, closeLabel = "Close", container, s
|
|
|
9310
9379
|
})] })]
|
|
9311
9380
|
})]
|
|
9312
9381
|
});
|
|
9313
|
-
}
|
|
9382
|
+
});
|
|
9314
9383
|
function DialogHeader({ className, ...props }) {
|
|
9315
9384
|
return /* @__PURE__ */ jsx("div", {
|
|
9316
9385
|
"data-slot": "dialog-header",
|
|
@@ -9340,4 +9409,4 @@ function DialogDescription({ className, ...props }) {
|
|
|
9340
9409
|
});
|
|
9341
9410
|
}
|
|
9342
9411
|
//#endregion
|
|
9343
|
-
export { waitAutoContinueSchema as $,
|
|
9412
|
+
export { waitAutoContinueSchema as $, removeItem as $t, comparisonIssue as A, variableInputCompatible as At, authoringDefinitionSchemas as B, SelectGroup as Bt, upgradeManualTrigger as C, limitDecisionQuestions as Ct, nodeSystemOutputPorts as D, matchesSchema as Dt, nodeErrorSchema as E, comparePorts as Et, operatorsForType as F, flowStateViewSchema as Ft, workflowAgentToolSchema as G, resolveAriaLabelledBy as Gt, connectorCapabilitySchema as H, SelectSeparator as Ht, otherwiseOutput as I, dequal as It, webhookResponseAllowsBody as J, stringifyAsLabel as Jt, webhookHeaderValuePort as K, hasNullItemLabel as Kt, unaryOperator as L, Select as Lt, mapConditionSources as M, format as Mt, nodeInputMappings as N, dedupeConfigSchema as Nt, supportsNodeErrorHandling as O, portsAssignable as Ot, operandHandle as P, dedupeTask as Pt, workflowOutputsPort as Q, findItemIndex as Qt, valueType as R, SelectChevron as Rt, resourceNameIssue as S, defaultDecisionQuestion as St, workflowToolNameIssue as T, webhookSupportsBody as Tt, decodeRevisionContent as U, SelectTrigger as Ut, connectorAgentToolSchema as V, SelectItem as Vt, httpCapabilitySchema as W, SelectValue as Wt, webhookResponseTimeout as X, compareItemEquality as Xt, webhookResponseInputs as Y, stringifyAsValue as Yt, webhookStatusCodePort as Z, defaultItemEquality as Zt, applyFlowChanges as _, isHttpHost as _t, DialogFooter as a, httpHeaderSchema as at, nodeNameIssue as b, decisionQuestionIssues as bt, DialogTrigger as c, httpRequestInputs as ct, Field as d, withHttpParameterFields as dt, selectedValueIncludes as en, defaultNodeRetry as et, FieldDescription as f, withHttpParameterSource as ft, FlowChangeError as g, renamedPort as gt, FieldLabel as h, renameOutputMapping as ht, DialogDescription as i, ChevronDown as in, checkJsonDepth as it, conditionInputPorts as j, isSchemaKeyword as jt, clearConditionBindings as k, schemaObject as kt, Icon as l, httpRequestIssues as lt, FieldGroup as m, remapInputMappings as mt, DialogClose as n, Input as nn, retryConfigurationSchema as nt, DialogHeader as o, httpQuerySchema as ot, FieldError as p, httpHeaderNameIssue as pt, webhookHeadersPort as q, isGroupedItems as qt, DialogContent as r, useLabelableId as rn, supportsNodeRetry as rt, DialogTitle as s, httpRequestConfigSchema as st, Dialog as t, Label as tn, nodeRetryLimits as tt, Spinner as u, httpRequestTask as ut, isTriggerNode as v, decisionLimits as vt, upgradeRevisionContent as w, webhookMethods as wt, normalizeNodeName as x, decisionTask as xt, nextNodeName as y, decisionModel as yt, agentToolFields as z, SelectContent as zt };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as IconImageCrossOriginContext, o as IconifyProvider } from "./ContentIcon-
|
|
2
|
-
import { t as FlowCanvas,
|
|
1
|
+
import { n as IconImageCrossOriginContext, o as IconifyProvider } from "./ContentIcon-VZQO8VZU.js";
|
|
2
|
+
import { t as FlowCanvas, y as CanvasStore } from "./FlowCanvas-BNGDMaWr.js";
|
|
3
3
|
import { createElement } from "react";
|
|
4
4
|
import { createRoot } from "react-dom/client";
|
|
5
5
|
//#region ../../node_modules/.bun/html-to-image@1.11.11/node_modules/html-to-image/es/util.js
|