@ixo/editor 5.7.0 → 5.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -38,12 +38,26 @@ import {
38
38
 
39
39
  // src/mantine/hooks/useCreateIxoEditor.ts
40
40
  import { useCreateBlockNote } from "@blocknote/react";
41
- import { BlockNoteSchema, defaultBlockSpecs, defaultInlineContentSpecs, defaultStyleSpecs } from "@blocknote/core";
41
+ import { BlockNoteSchema, defaultBlockSpecs, defaultInlineContentSpecs } from "@blocknote/core";
42
42
 
43
43
  // src/mantine/utils/markdownPasteHandler.ts
44
44
  var isMarkdownList = (text) => /^[ \t]*(?:[-*+]|\d+\.)[ \t]+\S/m.test(text);
45
45
  var tightenMarkdownList = (text) => text.replace(/\n[ \t]*\n(?=[ \t]*(?:[-*+]|\d+\.)[ \t])/g, "\n");
46
46
  var tightenHtmlList = (html) => html.replace(/<li([^>]*)>\s*<p[^>]*>([\s\S]*?)<\/p>\s*<\/li>/gi, "<li$1>$2</li>");
47
+ function insertPlainTextFallback(editor, plain) {
48
+ if (!plain) return void 0;
49
+ const view = editor?.prosemirrorView;
50
+ if (!view) return void 0;
51
+ const { from, to } = view.state.selection;
52
+ if (typeof editor?.transact === "function") {
53
+ editor.transact((tr) => {
54
+ tr.insertText(plain, from, to);
55
+ });
56
+ } else {
57
+ view.dispatch(view.state.tr.insertText(plain, from, to));
58
+ }
59
+ return true;
60
+ }
47
61
  var ixoPasteHandler = ({
48
62
  event,
49
63
  editor,
@@ -60,18 +74,41 @@ var ixoPasteHandler = ({
60
74
  return true;
61
75
  }
62
76
  try {
63
- return defaultPasteHandler();
77
+ return defaultPasteHandler({
78
+ prioritizeMarkdownOverHTML: true,
79
+ plainTextAsMarkdown: true
80
+ });
64
81
  } catch {
65
- if (plain) {
66
- const view = editor.prosemirrorView;
67
- if (view) {
68
- const { from, to } = view.state.selection;
69
- view.dispatch(view.state.tr.insertText(plain, from, to));
70
- return true;
71
- }
72
- }
73
- return void 0;
82
+ return insertPlainTextFallback(editor, plain);
83
+ }
84
+ };
85
+
86
+ // src/mantine/utils/blocknoteStyleSpecs.ts
87
+ import { createStyleSpecFromTipTapMark, defaultStyleSpecs } from "@blocknote/core";
88
+ import { InputRule, markInputRule } from "@tiptap/core";
89
+ import Code from "@tiptap/extension-code";
90
+ var CodeWithTrailingSpaceInputRule = Code.extend({
91
+ addInputRules() {
92
+ return [
93
+ markInputRule({
94
+ find: /(^|[^`])`([^`]+)`(?!`)$/,
95
+ type: this.type
96
+ }),
97
+ new InputRule({
98
+ find: /(^|[^`])`([^`]+)`(?!`) $/,
99
+ handler: ({ state, range, match }) => {
100
+ const { tr, schema } = state;
101
+ const leadingChar = match[1];
102
+ const content = match[2];
103
+ tr.replaceWith(range.from + leadingChar.length, range.to, [schema.text(content, [this.type.create()]), schema.text(" ")]);
104
+ }
105
+ })
106
+ ];
74
107
  }
108
+ });
109
+ var ixoStyleSpecs = {
110
+ ...defaultStyleSpecs,
111
+ code: createStyleSpecFromTipTapMark(CodeWithTrailingSpaceInputRule, "boolean")
75
112
  };
76
113
 
77
114
  // src/mantine/blocks/checkbox/CheckboxBlockSpec.tsx
@@ -1765,7 +1802,8 @@ function BaseContainer({ children, onClick, style, blockId }) {
1765
1802
  ...hasPresence ? { borderLeftColor: presenceBorderColor, borderLeftWidth: 3 } : {}
1766
1803
  },
1767
1804
  onClick,
1768
- onPointerDown: blockId ? onPointerDown : void 0
1805
+ onMouseDown: onClick ? void 0 : (e) => e.preventDefault(),
1806
+ onPointerDown: blockId && onClick ? onPointerDown : void 0
1769
1807
  },
1770
1808
  /* @__PURE__ */ React9.createElement(PresenceBadges, { users: presenceUsers }),
1771
1809
  children
@@ -15674,7 +15712,7 @@ var GeneralTab5 = ({
15674
15712
 
15675
15713
  // src/mantine/blocks/apiRequest/template/ResponseSchemaTab.tsx
15676
15714
  import React149 from "react";
15677
- import { Stack as Stack112, Text as Text88, Button as Button30, Group as Group51, ActionIcon as ActionIcon21, Paper as Paper10, Alert as Alert22, Code } from "@mantine/core";
15715
+ import { Stack as Stack112, Text as Text88, Button as Button30, Group as Group51, ActionIcon as ActionIcon21, Paper as Paper10, Alert as Alert22, Code as Code2 } from "@mantine/core";
15678
15716
  import { IconTrash as IconTrash3, IconPlus as IconPlus4, IconInfoCircle as IconInfoCircle2 } from "@tabler/icons-react";
15679
15717
  var ResponseSchemaTab = ({ schema, onSchemaChange, blockId }) => {
15680
15718
  const fields = schema?.fields || [];
@@ -15699,7 +15737,7 @@ var ResponseSchemaTab = ({ schema, onSchemaChange, blockId }) => {
15699
15737
  newFields[index] = { ...newFields[index], [key]: value };
15700
15738
  onSchemaChange({ fields: newFields });
15701
15739
  };
15702
- return /* @__PURE__ */ React149.createElement(Stack112, { gap: "lg" }, /* @__PURE__ */ React149.createElement(Alert22, { icon: /* @__PURE__ */ React149.createElement(IconInfoCircle2, { size: 16 }), title: "Response Schema", color: "blue" }, /* @__PURE__ */ React149.createElement(Text88, { size: "xs" }, "Define the expected structure of your API response. This allows other blocks to reference specific fields from the response data using the DataInput component.")), /* @__PURE__ */ React149.createElement(Stack112, { gap: "xs" }, /* @__PURE__ */ React149.createElement(Text88, { size: "sm", fw: 600 }, "How it works"), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "1. Define response fields using dot notation (e.g., ", /* @__PURE__ */ React149.createElement(Code, null, "customer.email"), ")"), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "2. Fields become available in DataInput selectors across other blocks"), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "3. Reference them like: ", /* @__PURE__ */ React149.createElement(Code, null, `{{${blockId}.response.customer.email}}`))), /* @__PURE__ */ React149.createElement(Stack112, { gap: "xs" }, /* @__PURE__ */ React149.createElement(Group51, { justify: "space-between" }, /* @__PURE__ */ React149.createElement(Text88, { size: "sm", fw: 600 }, "Response Fields"), /* @__PURE__ */ React149.createElement(Button30, { size: "xs", variant: "light", leftSection: /* @__PURE__ */ React149.createElement(IconPlus4, { size: 14 }), onClick: handleAddField }, "Add Field")), fields.length === 0 ? /* @__PURE__ */ React149.createElement(Code, { p: "md" }, 'No response fields defined yet. Click "Add Field" to start defining your response structure.') : /* @__PURE__ */ React149.createElement(Stack112, { gap: "md" }, fields.map((field, index) => /* @__PURE__ */ React149.createElement(Paper10, { key: index, p: "md", withBorder: true }, /* @__PURE__ */ React149.createElement(Stack112, { gap: "sm" }, /* @__PURE__ */ React149.createElement(Group51, { justify: "space-between", align: "flex-start" }, /* @__PURE__ */ React149.createElement(Text88, { size: "sm", fw: 500 }, "Field ", index + 1), /* @__PURE__ */ React149.createElement(ActionIcon21, { color: "red", variant: "subtle", onClick: () => handleRemoveField(index) }, /* @__PURE__ */ React149.createElement(IconTrash3, { size: 16 }))), /* @__PURE__ */ React149.createElement(
15740
+ return /* @__PURE__ */ React149.createElement(Stack112, { gap: "lg" }, /* @__PURE__ */ React149.createElement(Alert22, { icon: /* @__PURE__ */ React149.createElement(IconInfoCircle2, { size: 16 }), title: "Response Schema", color: "blue" }, /* @__PURE__ */ React149.createElement(Text88, { size: "xs" }, "Define the expected structure of your API response. This allows other blocks to reference specific fields from the response data using the DataInput component.")), /* @__PURE__ */ React149.createElement(Stack112, { gap: "xs" }, /* @__PURE__ */ React149.createElement(Text88, { size: "sm", fw: 600 }, "How it works"), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "1. Define response fields using dot notation (e.g., ", /* @__PURE__ */ React149.createElement(Code2, null, "customer.email"), ")"), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "2. Fields become available in DataInput selectors across other blocks"), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "3. Reference them like: ", /* @__PURE__ */ React149.createElement(Code2, null, `{{${blockId}.response.customer.email}}`))), /* @__PURE__ */ React149.createElement(Stack112, { gap: "xs" }, /* @__PURE__ */ React149.createElement(Group51, { justify: "space-between" }, /* @__PURE__ */ React149.createElement(Text88, { size: "sm", fw: 600 }, "Response Fields"), /* @__PURE__ */ React149.createElement(Button30, { size: "xs", variant: "light", leftSection: /* @__PURE__ */ React149.createElement(IconPlus4, { size: 14 }), onClick: handleAddField }, "Add Field")), fields.length === 0 ? /* @__PURE__ */ React149.createElement(Code2, { p: "md" }, 'No response fields defined yet. Click "Add Field" to start defining your response structure.') : /* @__PURE__ */ React149.createElement(Stack112, { gap: "md" }, fields.map((field, index) => /* @__PURE__ */ React149.createElement(Paper10, { key: index, p: "md", withBorder: true }, /* @__PURE__ */ React149.createElement(Stack112, { gap: "sm" }, /* @__PURE__ */ React149.createElement(Group51, { justify: "space-between", align: "flex-start" }, /* @__PURE__ */ React149.createElement(Text88, { size: "sm", fw: 500 }, "Field ", index + 1), /* @__PURE__ */ React149.createElement(ActionIcon21, { color: "red", variant: "subtle", onClick: () => handleRemoveField(index) }, /* @__PURE__ */ React149.createElement(IconTrash3, { size: 16 }))), /* @__PURE__ */ React149.createElement(
15703
15741
  BaseTextInput,
15704
15742
  {
15705
15743
  label: "Field Path",
@@ -15747,7 +15785,7 @@ var ResponseSchemaTab = ({ schema, onSchemaChange, blockId }) => {
15747
15785
  minRows: 2,
15748
15786
  size: "sm"
15749
15787
  }
15750
- ), field.path && field.displayName && /* @__PURE__ */ React149.createElement(Stack112, { gap: 4 }, /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "Reference format:"), /* @__PURE__ */ React149.createElement(Code, { block: true, style: { fontSize: "11px" } }, `{{${blockId}.response.${field.path}}}`))))))), fields.length === 0 && /* @__PURE__ */ React149.createElement(Stack112, { gap: "xs" }, /* @__PURE__ */ React149.createElement(Text88, { size: "sm", fw: 600 }, "Example Schema"), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "For a typical API response like:"), /* @__PURE__ */ React149.createElement(Code, { block: true, style: { fontSize: "11px" } }, `{
15788
+ ), field.path && field.displayName && /* @__PURE__ */ React149.createElement(Stack112, { gap: 4 }, /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "Reference format:"), /* @__PURE__ */ React149.createElement(Code2, { block: true, style: { fontSize: "11px" } }, `{{${blockId}.response.${field.path}}}`))))))), fields.length === 0 && /* @__PURE__ */ React149.createElement(Stack112, { gap: "xs" }, /* @__PURE__ */ React149.createElement(Text88, { size: "sm", fw: 600 }, "Example Schema"), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "For a typical API response like:"), /* @__PURE__ */ React149.createElement(Code2, { block: true, style: { fontSize: "11px" } }, `{
15751
15789
  "customer": {
15752
15790
  "email": "user@example.com",
15753
15791
  "name": "John Doe"
@@ -15756,7 +15794,7 @@ var ResponseSchemaTab = ({ schema, onSchemaChange, blockId }) => {
15756
15794
  "id": "l1v6r07b",
15757
15795
  "name": "Product-1"
15758
15796
  }
15759
- }`), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "You would define fields like:"), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "\u2022 Path: ", /* @__PURE__ */ React149.createElement(Code, null, "customer.email"), ', Display Name: "Customer Email", Type: string'), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "\u2022 Path: ", /* @__PURE__ */ React149.createElement(Code, null, "customer.name"), ', Display Name: "Customer Name", Type: string'), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "\u2022 Path: ", /* @__PURE__ */ React149.createElement(Code, null, "product.id"), ', Display Name: "Product ID", Type: string'), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "\u2022 Path: ", /* @__PURE__ */ React149.createElement(Code, null, "product.name"), ', Display Name: "Product Name", Type: string')));
15797
+ }`), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "You would define fields like:"), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "\u2022 Path: ", /* @__PURE__ */ React149.createElement(Code2, null, "customer.email"), ', Display Name: "Customer Email", Type: string'), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "\u2022 Path: ", /* @__PURE__ */ React149.createElement(Code2, null, "customer.name"), ', Display Name: "Customer Name", Type: string'), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "\u2022 Path: ", /* @__PURE__ */ React149.createElement(Code2, null, "product.id"), ', Display Name: "Product ID", Type: string'), /* @__PURE__ */ React149.createElement(Text88, { size: "xs", c: "dimmed" }, "\u2022 Path: ", /* @__PURE__ */ React149.createElement(Code2, null, "product.name"), ', Display Name: "Product Name", Type: string')));
15760
15798
  };
15761
15799
 
15762
15800
  // src/mantine/components/EvaluationTab.tsx
@@ -15983,7 +16021,7 @@ var ApiRequestTemplateView = ({ editor, block }) => {
15983
16021
 
15984
16022
  // src/mantine/blocks/apiRequest/flow/FlowView.tsx
15985
16023
  import React153, { useMemo as useMemo51, useState as useState62 } from "react";
15986
- import { Group as Group53, Stack as Stack115, Text as Text91, Button as Button31, Badge as Badge19, Code as Code2, Loader as Loader22, Alert as Alert23, Divider as Divider11 } from "@mantine/core";
16024
+ import { Group as Group53, Stack as Stack115, Text as Text91, Button as Button31, Badge as Badge19, Code as Code3, Loader as Loader22, Alert as Alert23, Divider as Divider11 } from "@mantine/core";
15987
16025
  import { IconSend as IconSend2, IconAlertTriangle as IconAlertTriangle2, IconUser as IconUser9, IconApi } from "@tabler/icons-react";
15988
16026
  var getMethodColor2 = (method) => {
15989
16027
  switch (method) {
@@ -16167,7 +16205,7 @@ function ApiRequestPanelContent({ editor, block, isDisabled, disabledMessage })
16167
16205
  disabled: isDisabled || isLoading || !endpoint
16168
16206
  },
16169
16207
  isLoading ? "Sending..." : "Execute"
16170
- ), isDisabled && disabledMessage && /* @__PURE__ */ React153.createElement(Text91, { size: "xs", c: "dimmed" }, disabledMessage), validationWarnings.length > 0 && /* @__PURE__ */ React153.createElement(Alert23, { icon: /* @__PURE__ */ React153.createElement(IconAlertTriangle2, { size: 16 }), title: "Schema Validation Warnings", color: "yellow" }, /* @__PURE__ */ React153.createElement(Stack115, { gap: "xs" }, /* @__PURE__ */ React153.createElement(Text91, { size: "xs" }, "The API response does not match the defined schema:"), validationWarnings.map((warning, index) => /* @__PURE__ */ React153.createElement(Text91, { key: index, size: "xs", c: "dimmed" }, "\u2022", " ", warning)))), runtime.error && /* @__PURE__ */ React153.createElement(Alert23, { icon: /* @__PURE__ */ React153.createElement(IconAlertTriangle2, { size: 16 }), title: "Request Error", color: "red" }, /* @__PURE__ */ React153.createElement(Text91, { size: "xs" }, runtime.error.message)), headers.length > 0 && /* @__PURE__ */ React153.createElement(React153.Fragment, null, /* @__PURE__ */ React153.createElement(Divider11, null), /* @__PURE__ */ React153.createElement(Stack115, { gap: "xs" }, /* @__PURE__ */ React153.createElement(Text91, { size: "xs", fw: 600, c: "dimmed" }, "Headers"), /* @__PURE__ */ React153.createElement(Code2, { block: true, style: { fontSize: "11px" } }, JSON.stringify(
16208
+ ), isDisabled && disabledMessage && /* @__PURE__ */ React153.createElement(Text91, { size: "xs", c: "dimmed" }, disabledMessage), validationWarnings.length > 0 && /* @__PURE__ */ React153.createElement(Alert23, { icon: /* @__PURE__ */ React153.createElement(IconAlertTriangle2, { size: 16 }), title: "Schema Validation Warnings", color: "yellow" }, /* @__PURE__ */ React153.createElement(Stack115, { gap: "xs" }, /* @__PURE__ */ React153.createElement(Text91, { size: "xs" }, "The API response does not match the defined schema:"), validationWarnings.map((warning, index) => /* @__PURE__ */ React153.createElement(Text91, { key: index, size: "xs", c: "dimmed" }, "\u2022", " ", warning)))), runtime.error && /* @__PURE__ */ React153.createElement(Alert23, { icon: /* @__PURE__ */ React153.createElement(IconAlertTriangle2, { size: 16 }), title: "Request Error", color: "red" }, /* @__PURE__ */ React153.createElement(Text91, { size: "xs" }, runtime.error.message)), headers.length > 0 && /* @__PURE__ */ React153.createElement(React153.Fragment, null, /* @__PURE__ */ React153.createElement(Divider11, null), /* @__PURE__ */ React153.createElement(Stack115, { gap: "xs" }, /* @__PURE__ */ React153.createElement(Text91, { size: "xs", fw: 600, c: "dimmed" }, "Headers"), /* @__PURE__ */ React153.createElement(Code3, { block: true, style: { fontSize: "11px" } }, JSON.stringify(
16171
16209
  headers.reduce(
16172
16210
  (acc, h) => {
16173
16211
  if (h.key && h.value) acc[h.key] = h.value;
@@ -16177,7 +16215,7 @@ function ApiRequestPanelContent({ editor, block, isDisabled, disabledMessage })
16177
16215
  ),
16178
16216
  null,
16179
16217
  2
16180
- )))), method !== "GET" && body.length > 0 && /* @__PURE__ */ React153.createElement(React153.Fragment, null, /* @__PURE__ */ React153.createElement(Divider11, null), /* @__PURE__ */ React153.createElement(Stack115, { gap: "xs" }, /* @__PURE__ */ React153.createElement(Text91, { size: "xs", fw: 600, c: "dimmed" }, "Body"), /* @__PURE__ */ React153.createElement(Code2, { block: true, style: { fontSize: "11px" } }, JSON.stringify(
16218
+ )))), method !== "GET" && body.length > 0 && /* @__PURE__ */ React153.createElement(React153.Fragment, null, /* @__PURE__ */ React153.createElement(Divider11, null), /* @__PURE__ */ React153.createElement(Stack115, { gap: "xs" }, /* @__PURE__ */ React153.createElement(Text91, { size: "xs", fw: 600, c: "dimmed" }, "Body"), /* @__PURE__ */ React153.createElement(Code3, { block: true, style: { fontSize: "11px" } }, JSON.stringify(
16181
16219
  body.reduce(
16182
16220
  (acc, b) => {
16183
16221
  if (b.key && b.value) acc[b.key] = b.value;
@@ -16187,7 +16225,7 @@ function ApiRequestPanelContent({ editor, block, isDisabled, disabledMessage })
16187
16225
  ),
16188
16226
  null,
16189
16227
  2
16190
- )))), response && /* @__PURE__ */ React153.createElement(React153.Fragment, null, /* @__PURE__ */ React153.createElement(Divider11, null), /* @__PURE__ */ React153.createElement(Stack115, { gap: "xs" }, /* @__PURE__ */ React153.createElement(Text91, { size: "xs", fw: 600, c: "dimmed" }, "Response"), status === "error" ? /* @__PURE__ */ React153.createElement(Alert23, { color: "red", title: "Error", styles: { message: { fontSize: "11px" } } }, /* @__PURE__ */ React153.createElement(Code2, { block: true, style: { fontSize: "11px" } }, response)) : /* @__PURE__ */ React153.createElement(Code2, { block: true, style: { fontSize: "11px", maxHeight: "300px", overflow: "auto" } }, response))));
16228
+ )))), response && /* @__PURE__ */ React153.createElement(React153.Fragment, null, /* @__PURE__ */ React153.createElement(Divider11, null), /* @__PURE__ */ React153.createElement(Stack115, { gap: "xs" }, /* @__PURE__ */ React153.createElement(Text91, { size: "xs", fw: 600, c: "dimmed" }, "Response"), status === "error" ? /* @__PURE__ */ React153.createElement(Alert23, { color: "red", title: "Error", styles: { message: { fontSize: "11px" } } }, /* @__PURE__ */ React153.createElement(Code3, { block: true, style: { fontSize: "11px" } }, response)) : /* @__PURE__ */ React153.createElement(Code3, { block: true, style: { fontSize: "11px", maxHeight: "300px", overflow: "auto" } }, response))));
16191
16229
  }
16192
16230
 
16193
16231
  // src/mantine/blocks/apiRequest/ApiRequestBlock.tsx
@@ -16631,7 +16669,7 @@ var NotifyTemplateView = ({ editor, block }) => {
16631
16669
 
16632
16670
  // src/mantine/blocks/notify/flow/FlowView.tsx
16633
16671
  import React159, { useState as useState64 } from "react";
16634
- import { Group as Group56, Stack as Stack118, Text as Text94, ActionIcon as ActionIcon23, Tooltip as Tooltip11, Button as Button32, Badge as Badge21, Collapse as Collapse4, Alert as Alert24, Loader as Loader23, Code as Code3 } from "@mantine/core";
16672
+ import { Group as Group56, Stack as Stack118, Text as Text94, ActionIcon as ActionIcon23, Tooltip as Tooltip11, Button as Button32, Badge as Badge21, Collapse as Collapse4, Alert as Alert24, Loader as Loader23, Code as Code4 } from "@mantine/core";
16635
16673
  import { IconSend as IconSend3, IconChevronDown as IconChevronDown4, IconChevronUp as IconChevronUp2, IconCheck as IconCheck6, IconX as IconX10 } from "@tabler/icons-react";
16636
16674
  var NotifyFlowView = ({ editor, block, isDisabled }) => {
16637
16675
  const disabled = isDisabled?.isDisabled === "disable";
@@ -16759,7 +16797,7 @@ var NotifyFlowView = ({ editor, block, isDisabled }) => {
16759
16797
  },
16760
16798
  isLoading ? "Sending..." : status === "sent" ? "Sent" : "Send"
16761
16799
  );
16762
- return /* @__PURE__ */ React159.createElement(BaseContainer, { blockId: block.id }, /* @__PURE__ */ React159.createElement(Stack118, { gap: "md" }, /* @__PURE__ */ React159.createElement(Group56, { wrap: "nowrap", justify: "space-between", align: "flex-start" }, /* @__PURE__ */ React159.createElement(Group56, { wrap: "nowrap", align: "flex-start", style: { flex: 1 } }, getIcon("bell", block.props.icon), /* @__PURE__ */ React159.createElement(Stack118, { gap: "xs", style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React159.createElement(Group56, { gap: "xs", wrap: "nowrap" }, /* @__PURE__ */ React159.createElement(Badge21, { size: "sm", variant: "filled", color: getChannelColor(channel) }, channel.toUpperCase()), /* @__PURE__ */ React159.createElement(Text94, { fw: 500, size: "sm", contentEditable: false }, block.props.title || "Notification"), status !== "idle" && /* @__PURE__ */ React159.createElement(Badge21, { size: "xs", variant: "dot", color: getStatusColor5(status) }, status)), /* @__PURE__ */ React159.createElement(Text94, { size: "xs", c: "dimmed", contentEditable: false, lineClamp: 1 }, to.length > 0 ? `To: ${to.slice(0, 2).join(", ")}${to.length > 2 ? ` +${to.length - 2} more` : ""}` : "No recipients"), block.props.description && /* @__PURE__ */ React159.createElement(Text94, { size: "xs", c: "dimmed", contentEditable: false }, block.props.description))), /* @__PURE__ */ React159.createElement(Group56, { gap: "xs", style: { flexShrink: 0 } }, disabled && isDisabled?.message ? /* @__PURE__ */ React159.createElement(Tooltip11, { label: isDisabled.message, position: "left", withArrow: true }, sendButton) : sendButton, /* @__PURE__ */ React159.createElement(ActionIcon23, { variant: "subtle", onClick: () => setShowDetails(!showDetails) }, showDetails ? /* @__PURE__ */ React159.createElement(IconChevronUp2, { size: 16 }) : /* @__PURE__ */ React159.createElement(IconChevronDown4, { size: 16 })))), status === "failed" && runtime.error?.message && /* @__PURE__ */ React159.createElement(Alert24, { color: "red", icon: /* @__PURE__ */ React159.createElement(IconX10, { size: 16 }), title: "Failed to send", styles: { message: { fontSize: "12px" } } }, runtime.error.message), status === "sent" && runtime.output?.notify?.messageId && /* @__PURE__ */ React159.createElement(Alert24, { color: "green", icon: /* @__PURE__ */ React159.createElement(IconCheck6, { size: 16 }), title: "Sent successfully", styles: { message: { fontSize: "12px" } } }, "Message ID: ", runtime.output.notify.messageId, runtime.output.notify.sentAt && /* @__PURE__ */ React159.createElement(React159.Fragment, null, /* @__PURE__ */ React159.createElement("br", null), "Sent at: ", new Date(runtime.output.notify.sentAt).toLocaleString())), /* @__PURE__ */ React159.createElement(Collapse4, { in: showDetails }, /* @__PURE__ */ React159.createElement(Stack118, { gap: "md" }, channel === "email" && /* @__PURE__ */ React159.createElement(React159.Fragment, null, /* @__PURE__ */ React159.createElement(Stack118, { gap: "xs" }, /* @__PURE__ */ React159.createElement(Text94, { size: "xs", fw: 600, c: "dimmed" }, "Recipients:"), /* @__PURE__ */ React159.createElement(Code3, { block: true, style: { fontSize: "11px" } }, JSON.stringify(
16800
+ return /* @__PURE__ */ React159.createElement(BaseContainer, { blockId: block.id }, /* @__PURE__ */ React159.createElement(Stack118, { gap: "md" }, /* @__PURE__ */ React159.createElement(Group56, { wrap: "nowrap", justify: "space-between", align: "flex-start" }, /* @__PURE__ */ React159.createElement(Group56, { wrap: "nowrap", align: "flex-start", style: { flex: 1 } }, getIcon("bell", block.props.icon), /* @__PURE__ */ React159.createElement(Stack118, { gap: "xs", style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React159.createElement(Group56, { gap: "xs", wrap: "nowrap" }, /* @__PURE__ */ React159.createElement(Badge21, { size: "sm", variant: "filled", color: getChannelColor(channel) }, channel.toUpperCase()), /* @__PURE__ */ React159.createElement(Text94, { fw: 500, size: "sm", contentEditable: false }, block.props.title || "Notification"), status !== "idle" && /* @__PURE__ */ React159.createElement(Badge21, { size: "xs", variant: "dot", color: getStatusColor5(status) }, status)), /* @__PURE__ */ React159.createElement(Text94, { size: "xs", c: "dimmed", contentEditable: false, lineClamp: 1 }, to.length > 0 ? `To: ${to.slice(0, 2).join(", ")}${to.length > 2 ? ` +${to.length - 2} more` : ""}` : "No recipients"), block.props.description && /* @__PURE__ */ React159.createElement(Text94, { size: "xs", c: "dimmed", contentEditable: false }, block.props.description))), /* @__PURE__ */ React159.createElement(Group56, { gap: "xs", style: { flexShrink: 0 } }, disabled && isDisabled?.message ? /* @__PURE__ */ React159.createElement(Tooltip11, { label: isDisabled.message, position: "left", withArrow: true }, sendButton) : sendButton, /* @__PURE__ */ React159.createElement(ActionIcon23, { variant: "subtle", onClick: () => setShowDetails(!showDetails) }, showDetails ? /* @__PURE__ */ React159.createElement(IconChevronUp2, { size: 16 }) : /* @__PURE__ */ React159.createElement(IconChevronDown4, { size: 16 })))), status === "failed" && runtime.error?.message && /* @__PURE__ */ React159.createElement(Alert24, { color: "red", icon: /* @__PURE__ */ React159.createElement(IconX10, { size: 16 }), title: "Failed to send", styles: { message: { fontSize: "12px" } } }, runtime.error.message), status === "sent" && runtime.output?.notify?.messageId && /* @__PURE__ */ React159.createElement(Alert24, { color: "green", icon: /* @__PURE__ */ React159.createElement(IconCheck6, { size: 16 }), title: "Sent successfully", styles: { message: { fontSize: "12px" } } }, "Message ID: ", runtime.output.notify.messageId, runtime.output.notify.sentAt && /* @__PURE__ */ React159.createElement(React159.Fragment, null, /* @__PURE__ */ React159.createElement("br", null), "Sent at: ", new Date(runtime.output.notify.sentAt).toLocaleString())), /* @__PURE__ */ React159.createElement(Collapse4, { in: showDetails }, /* @__PURE__ */ React159.createElement(Stack118, { gap: "md" }, channel === "email" && /* @__PURE__ */ React159.createElement(React159.Fragment, null, /* @__PURE__ */ React159.createElement(Stack118, { gap: "xs" }, /* @__PURE__ */ React159.createElement(Text94, { size: "xs", fw: 600, c: "dimmed" }, "Recipients:"), /* @__PURE__ */ React159.createElement(Code4, { block: true, style: { fontSize: "11px" } }, JSON.stringify(
16763
16801
  {
16764
16802
  to: to.filter((e) => e.trim() !== ""),
16765
16803
  ...cc.length > 0 && { cc: cc.filter((e) => e.trim() !== "") },
@@ -16767,7 +16805,7 @@ var NotifyFlowView = ({ editor, block, isDisabled }) => {
16767
16805
  },
16768
16806
  null,
16769
16807
  2
16770
- ))), block.props.subject && /* @__PURE__ */ React159.createElement(Stack118, { gap: "xs" }, /* @__PURE__ */ React159.createElement(Text94, { size: "xs", fw: 600, c: "dimmed" }, "Subject:"), /* @__PURE__ */ React159.createElement(Text94, { size: "xs" }, block.props.subject)), block.props.body && /* @__PURE__ */ React159.createElement(Stack118, { gap: "xs" }, /* @__PURE__ */ React159.createElement(Text94, { size: "xs", fw: 600, c: "dimmed" }, "Body (", block.props.bodyType || "text", "):"), /* @__PURE__ */ React159.createElement(Code3, { block: true, style: { fontSize: "11px", maxHeight: "200px", overflow: "auto" } }, block.props.body)), (block.props.from || block.props.replyTo) && /* @__PURE__ */ React159.createElement(Stack118, { gap: "xs" }, /* @__PURE__ */ React159.createElement(Text94, { size: "xs", fw: 600, c: "dimmed" }, "Additional:"), /* @__PURE__ */ React159.createElement(Code3, { block: true, style: { fontSize: "11px" } }, JSON.stringify(
16808
+ ))), block.props.subject && /* @__PURE__ */ React159.createElement(Stack118, { gap: "xs" }, /* @__PURE__ */ React159.createElement(Text94, { size: "xs", fw: 600, c: "dimmed" }, "Subject:"), /* @__PURE__ */ React159.createElement(Text94, { size: "xs" }, block.props.subject)), block.props.body && /* @__PURE__ */ React159.createElement(Stack118, { gap: "xs" }, /* @__PURE__ */ React159.createElement(Text94, { size: "xs", fw: 600, c: "dimmed" }, "Body (", block.props.bodyType || "text", "):"), /* @__PURE__ */ React159.createElement(Code4, { block: true, style: { fontSize: "11px", maxHeight: "200px", overflow: "auto" } }, block.props.body)), (block.props.from || block.props.replyTo) && /* @__PURE__ */ React159.createElement(Stack118, { gap: "xs" }, /* @__PURE__ */ React159.createElement(Text94, { size: "xs", fw: 600, c: "dimmed" }, "Additional:"), /* @__PURE__ */ React159.createElement(Code4, { block: true, style: { fontSize: "11px" } }, JSON.stringify(
16771
16809
  {
16772
16810
  ...block.props.from && { from: block.props.from },
16773
16811
  ...block.props.replyTo && { replyTo: block.props.replyTo }
@@ -17284,7 +17322,7 @@ import { createReactBlockSpec as createReactBlockSpec11 } from "@blocknote/react
17284
17322
 
17285
17323
  // src/mantine/blocks/dynamicList/DynamicListBlock.tsx
17286
17324
  import React171, { useMemo as useMemo58, useState as useState68, useCallback as useCallback47, useEffect as useEffect54, useRef as useRef16 } from "react";
17287
- import { Box as Box36, Stack as Stack123, Text as Text99, Paper as Paper14, Group as Group60, Button as Button33, ActionIcon as ActionIcon24, Tooltip as Tooltip12, Code as Code5, Flex as Flex30, Collapse as Collapse6, Title as Title6, Badge as Badge22, TextInput as TextInput6, CloseButton as CloseButton3, Select as Select3, Menu as Menu2 } from "@mantine/core";
17325
+ import { Box as Box36, Stack as Stack123, Text as Text99, Paper as Paper14, Group as Group60, Button as Button33, ActionIcon as ActionIcon24, Tooltip as Tooltip12, Code as Code6, Flex as Flex30, Collapse as Collapse6, Title as Title6, Badge as Badge22, TextInput as TextInput6, CloseButton as CloseButton3, Select as Select3, Menu as Menu2 } from "@mantine/core";
17288
17326
  import { useDisclosure as useDisclosure6 } from "@mantine/hooks";
17289
17327
  import {
17290
17328
  IconCamera,
@@ -17305,7 +17343,7 @@ import {
17305
17343
 
17306
17344
  // src/mantine/blocks/dynamicList/DynamicListSelectionPanel.tsx
17307
17345
  import React170, { useMemo as useMemo57, useState as useState67 } from "react";
17308
- import { Paper as Paper13, CloseButton as CloseButton2, Stack as Stack122, Text as Text98, Box as Box35, Group as Group59, Divider as Divider13, Code as Code4, ScrollArea as ScrollArea6, Collapse as Collapse5 } from "@mantine/core";
17346
+ import { Paper as Paper13, CloseButton as CloseButton2, Stack as Stack122, Text as Text98, Box as Box35, Group as Group59, Divider as Divider13, Code as Code5, ScrollArea as ScrollArea6, Collapse as Collapse5 } from "@mantine/core";
17309
17347
  import { IconSparkles as IconSparkles2, IconChevronDown as IconChevronDown5, IconChevronRight as IconChevronRight4 } from "@tabler/icons-react";
17310
17348
  function formatKeyAsLabel(key) {
17311
17349
  return key.replace(/([A-Z])/g, " $1").replace(/[_-]/g, " ").replace(/^\s/, "").split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
@@ -17351,8 +17389,8 @@ function DefaultKeyValueView({
17351
17389
  const value = item[key];
17352
17390
  const formattedValue = formatValue(value, column?.type);
17353
17391
  const isObject = typeof value === "object" && value !== null;
17354
- return /* @__PURE__ */ React170.createElement(Box35, { key }, /* @__PURE__ */ React170.createElement(Text98, { size: "xs", c: "dimmed", fw: 500 }, label), isObject ? /* @__PURE__ */ React170.createElement(Code4, { block: true, style: { fontSize: "12px", whiteSpace: "pre-wrap", maxHeight: 150, overflow: "auto" } }, formattedValue) : /* @__PURE__ */ React170.createElement(Text98, { size: "sm", c: column?.color || void 0 }, formattedValue));
17355
- }))))), /* @__PURE__ */ React170.createElement(Box35, { style: { flex: 1 } }), dataSource && /* @__PURE__ */ React170.createElement(React170.Fragment, null, /* @__PURE__ */ React170.createElement(Divider13, null), /* @__PURE__ */ React170.createElement(Box35, null, /* @__PURE__ */ React170.createElement(Group59, { gap: "xs", mb: "xs" }, /* @__PURE__ */ React170.createElement(IconSparkles2, { size: 14, color: "var(--mantine-color-blue-4)" }), /* @__PURE__ */ React170.createElement(Text98, { size: "xs", fw: 500, c: "dimmed" }, "Data Source")), dataSource.oracleName && /* @__PURE__ */ React170.createElement(Text98, { size: "xs", c: "dimmed" }, "Oracle: ", dataSource.oracleName), dataSource.query && /* @__PURE__ */ React170.createElement(Box35, { mt: "xs" }, /* @__PURE__ */ React170.createElement(Text98, { size: "xs", c: "dimmed", mb: 4 }, "Query:"), /* @__PURE__ */ React170.createElement(Code4, { block: true, style: { fontSize: "11px", whiteSpace: "pre-wrap" } }, dataSource.query)))));
17392
+ return /* @__PURE__ */ React170.createElement(Box35, { key }, /* @__PURE__ */ React170.createElement(Text98, { size: "xs", c: "dimmed", fw: 500 }, label), isObject ? /* @__PURE__ */ React170.createElement(Code5, { block: true, style: { fontSize: "12px", whiteSpace: "pre-wrap", maxHeight: 150, overflow: "auto" } }, formattedValue) : /* @__PURE__ */ React170.createElement(Text98, { size: "sm", c: column?.color || void 0 }, formattedValue));
17393
+ }))))), /* @__PURE__ */ React170.createElement(Box35, { style: { flex: 1 } }), dataSource && /* @__PURE__ */ React170.createElement(React170.Fragment, null, /* @__PURE__ */ React170.createElement(Divider13, null), /* @__PURE__ */ React170.createElement(Box35, null, /* @__PURE__ */ React170.createElement(Group59, { gap: "xs", mb: "xs" }, /* @__PURE__ */ React170.createElement(IconSparkles2, { size: 14, color: "var(--mantine-color-blue-4)" }), /* @__PURE__ */ React170.createElement(Text98, { size: "xs", fw: 500, c: "dimmed" }, "Data Source")), dataSource.oracleName && /* @__PURE__ */ React170.createElement(Text98, { size: "xs", c: "dimmed" }, "Oracle: ", dataSource.oracleName), dataSource.query && /* @__PURE__ */ React170.createElement(Box35, { mt: "xs" }, /* @__PURE__ */ React170.createElement(Text98, { size: "xs", c: "dimmed", mb: 4 }, "Query:"), /* @__PURE__ */ React170.createElement(Code5, { block: true, style: { fontSize: "11px", whiteSpace: "pre-wrap" } }, dataSource.query)))));
17356
17394
  }
17357
17395
  var DynamicListSelectionPanel = ({
17358
17396
  selectedItem,
@@ -17749,7 +17787,7 @@ function DynamicListBlock({ block, editor }) {
17749
17787
  }
17750
17788
  },
17751
17789
  /* @__PURE__ */ React171.createElement(Flex30, { justify: "space-between", align: "flex-start", mb: "xs" }, /* @__PURE__ */ React171.createElement(Group60, { gap: "xs" }, /* @__PURE__ */ React171.createElement(IconInfoCircle3, { size: 14, color: "var(--mantine-color-blue-4)" }), /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", fw: 500, c: "dimmed" }, "Data Source")), /* @__PURE__ */ React171.createElement(ActionIcon24, { variant: "subtle", size: "xs", onClick: () => setShowInfo(false), "aria-label": "Close info" }, /* @__PURE__ */ React171.createElement(IconX11, { size: 14 }))),
17752
- /* @__PURE__ */ React171.createElement(Stack123, { gap: 6 }, parsedDataSource?.oracleName && /* @__PURE__ */ React171.createElement(Group60, { gap: "xs" }, /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", c: "dimmed", w: 70 }, "Oracle:"), /* @__PURE__ */ React171.createElement(Text99, { fz: "xs" }, parsedDataSource.oracleName)), parsedDataSource?.oracleDid && /* @__PURE__ */ React171.createElement(Group60, { gap: "xs" }, /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", c: "dimmed", w: 70 }, "DID:"), /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", style: { wordBreak: "break-all" } }, parsedDataSource.oracleDid)), parsedDataSource?.toolName && /* @__PURE__ */ React171.createElement(Group60, { gap: "xs" }, /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", c: "dimmed", w: 70 }, "Tool:"), /* @__PURE__ */ React171.createElement(Text99, { fz: "xs" }, parsedDataSource.toolName)), parsedDataSource?.query && /* @__PURE__ */ React171.createElement(Box36, null, /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", c: "dimmed", mb: 4 }, "Query:"), /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", style: { whiteSpace: "pre-wrap" } }, parsedDataSource.query)), parsedDataSource?.description && /* @__PURE__ */ React171.createElement(Box36, null, /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", c: "dimmed", mb: 4 }, "Description:"), /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", fs: "italic" }, parsedDataSource.description)), parsedDataSource?.params && Object.keys(parsedDataSource.params).length > 0 && /* @__PURE__ */ React171.createElement(Box36, null, /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", c: "dimmed", mb: 4 }, "Params:"), /* @__PURE__ */ React171.createElement(Code5, { block: true, style: { fontSize: "11px", whiteSpace: "pre-wrap" } }, JSON.stringify(parsedDataSource.params, null, 2))))
17790
+ /* @__PURE__ */ React171.createElement(Stack123, { gap: 6 }, parsedDataSource?.oracleName && /* @__PURE__ */ React171.createElement(Group60, { gap: "xs" }, /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", c: "dimmed", w: 70 }, "Oracle:"), /* @__PURE__ */ React171.createElement(Text99, { fz: "xs" }, parsedDataSource.oracleName)), parsedDataSource?.oracleDid && /* @__PURE__ */ React171.createElement(Group60, { gap: "xs" }, /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", c: "dimmed", w: 70 }, "DID:"), /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", style: { wordBreak: "break-all" } }, parsedDataSource.oracleDid)), parsedDataSource?.toolName && /* @__PURE__ */ React171.createElement(Group60, { gap: "xs" }, /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", c: "dimmed", w: 70 }, "Tool:"), /* @__PURE__ */ React171.createElement(Text99, { fz: "xs" }, parsedDataSource.toolName)), parsedDataSource?.query && /* @__PURE__ */ React171.createElement(Box36, null, /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", c: "dimmed", mb: 4 }, "Query:"), /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", style: { whiteSpace: "pre-wrap" } }, parsedDataSource.query)), parsedDataSource?.description && /* @__PURE__ */ React171.createElement(Box36, null, /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", c: "dimmed", mb: 4 }, "Description:"), /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", fs: "italic" }, parsedDataSource.description)), parsedDataSource?.params && Object.keys(parsedDataSource.params).length > 0 && /* @__PURE__ */ React171.createElement(Box36, null, /* @__PURE__ */ React171.createElement(Text99, { fz: "xs", c: "dimmed", mb: 4 }, "Params:"), /* @__PURE__ */ React171.createElement(Code6, { block: true, style: { fontSize: "11px", whiteSpace: "pre-wrap" } }, JSON.stringify(parsedDataSource.params, null, 2))))
17753
17791
  )), /* @__PURE__ */ React171.createElement(Collapse6, { pb: 5, px: 5, in: opened }, /* @__PURE__ */ React171.createElement(Stack123, { w: "100%" }, /* @__PURE__ */ React171.createElement(Collapse6, { in: showSearch }, /* @__PURE__ */ React171.createElement(Flex30, { gap: "xs", align: "center" }, /* @__PURE__ */ React171.createElement(
17754
17792
  TextInput6,
17755
17793
  {
@@ -17907,7 +17945,7 @@ function DynamicListBlock({ block, editor }) {
17907
17945
  const rowId = getRowId(row, index);
17908
17946
  const isChecked = isItemChecked(rowId);
17909
17947
  return /* @__PURE__ */ React171.createElement(ListItemContainer, { key: rowId, isChecked, onClick: () => onItemCheck(rowId, !isChecked) }, /* @__PURE__ */ React171.createElement(Flex30, { align: "center", gap: "sm" }, /* @__PURE__ */ React171.createElement(Stack123, { gap: 2 }, renderField(row, columnsByPosition.topLeft), columnsByPosition.bottomLeft && /* @__PURE__ */ React171.createElement(Text99, { size: "xs", c: columnsByPosition.bottomLeft.color || "dimmed", lineClamp: 1 }, formatValue2(row[columnsByPosition.bottomLeft.key], columnsByPosition.bottomLeft.type) || ""))), /* @__PURE__ */ React171.createElement(Flex30, { align: "center", gap: "md" }, /* @__PURE__ */ React171.createElement(Stack123, { gap: 2, align: "flex-end" }, columnsByPosition.topRight && /* @__PURE__ */ React171.createElement(Text99, { size: "sm", fw: 500, c: columnsByPosition.topRight.color || void 0 }, formatValue2(row[columnsByPosition.topRight.key], columnsByPosition.topRight.type) || ""), columnsByPosition.bottomRight && /* @__PURE__ */ React171.createElement(Text99, { size: "xs", c: columnsByPosition.bottomRight.color || "dimmed", tt: "capitalize" }, formatValue2(row[columnsByPosition.bottomRight.key], columnsByPosition.bottomRight.type) || "")), isMultiSelect && /* @__PURE__ */ React171.createElement(ListItemCheckbox, { ariaLabel: `Select ${rowId}`, checked: isChecked, onCheck: (checked) => onItemCheck(rowId, checked) })));
17910
- })), hasData && totalPages > 1 && /* @__PURE__ */ React171.createElement(ListPagination, { page, setPage, totalPages }), !hasData && !liveData.loading && searchQuery && rawData && rawData.length > 0 && /* @__PURE__ */ React171.createElement(Text99, { c: "dimmed", ta: "center", fz: "sm" }, "No matching items for \u201C", searchQuery, "\u201D"), !hasData && !liveData.loading && !searchQuery && parsedDataSource && /* @__PURE__ */ React171.createElement(Paper14, { p: "lg", bg: "var(--mantine-color-dark-6)", radius: "sm" }, /* @__PURE__ */ React171.createElement(Stack123, { gap: "sm" }, /* @__PURE__ */ React171.createElement(Group60, { gap: "xs" }, /* @__PURE__ */ React171.createElement(IconSparkles3, { size: 16, color: "var(--mantine-color-blue-4)" }), /* @__PURE__ */ React171.createElement(Text99, { fz: "sm", fw: 500 }, "Data Source")), parsedDataSource.oracleName && /* @__PURE__ */ React171.createElement(Group60, { gap: "xs" }, /* @__PURE__ */ React171.createElement(Text99, { size: "xs", c: "dimmed" }, "Oracle:"), /* @__PURE__ */ React171.createElement(Badge22, { size: "sm", variant: "light" }, parsedDataSource.oracleName)), parsedDataSource.query && /* @__PURE__ */ React171.createElement(Box36, null, /* @__PURE__ */ React171.createElement(Text99, { size: "xs", c: "dimmed", mb: 4 }, "Query:"), /* @__PURE__ */ React171.createElement(Code5, { block: true, style: { fontSize: "12px", whiteSpace: "pre-wrap" } }, parsedDataSource.query)), parsedDataSource.description && /* @__PURE__ */ React171.createElement(Text99, { size: "xs", c: "dimmed", fs: "italic" }, parsedDataSource.description), /* @__PURE__ */ React171.createElement(Text99, { size: "xs", c: "dimmed", ta: "center", mt: "xs" }, "Ask your oracle this query to populate the list."))), !hasData && !liveData.loading && !searchQuery && !parsedDataSource && /* @__PURE__ */ React171.createElement(Paper14, { p: "lg", bg: "var(--mantine-color-dark-6)", radius: "sm" }, /* @__PURE__ */ React171.createElement(Text99, { c: "dimmed", ta: "center", fz: "sm" }, "No data available. Add data from the AG-UI Canvas.")))));
17948
+ })), hasData && totalPages > 1 && /* @__PURE__ */ React171.createElement(ListPagination, { page, setPage, totalPages }), !hasData && !liveData.loading && searchQuery && rawData && rawData.length > 0 && /* @__PURE__ */ React171.createElement(Text99, { c: "dimmed", ta: "center", fz: "sm" }, "No matching items for \u201C", searchQuery, "\u201D"), !hasData && !liveData.loading && !searchQuery && parsedDataSource && /* @__PURE__ */ React171.createElement(Paper14, { p: "lg", bg: "var(--mantine-color-dark-6)", radius: "sm" }, /* @__PURE__ */ React171.createElement(Stack123, { gap: "sm" }, /* @__PURE__ */ React171.createElement(Group60, { gap: "xs" }, /* @__PURE__ */ React171.createElement(IconSparkles3, { size: 16, color: "var(--mantine-color-blue-4)" }), /* @__PURE__ */ React171.createElement(Text99, { fz: "sm", fw: 500 }, "Data Source")), parsedDataSource.oracleName && /* @__PURE__ */ React171.createElement(Group60, { gap: "xs" }, /* @__PURE__ */ React171.createElement(Text99, { size: "xs", c: "dimmed" }, "Oracle:"), /* @__PURE__ */ React171.createElement(Badge22, { size: "sm", variant: "light" }, parsedDataSource.oracleName)), parsedDataSource.query && /* @__PURE__ */ React171.createElement(Box36, null, /* @__PURE__ */ React171.createElement(Text99, { size: "xs", c: "dimmed", mb: 4 }, "Query:"), /* @__PURE__ */ React171.createElement(Code6, { block: true, style: { fontSize: "12px", whiteSpace: "pre-wrap" } }, parsedDataSource.query)), parsedDataSource.description && /* @__PURE__ */ React171.createElement(Text99, { size: "xs", c: "dimmed", fs: "italic" }, parsedDataSource.description), /* @__PURE__ */ React171.createElement(Text99, { size: "xs", c: "dimmed", ta: "center", mt: "xs" }, "Ask your oracle this query to populate the list."))), !hasData && !liveData.loading && !searchQuery && !parsedDataSource && /* @__PURE__ */ React171.createElement(Paper14, { p: "lg", bg: "var(--mantine-color-dark-6)", radius: "sm" }, /* @__PURE__ */ React171.createElement(Text99, { c: "dimmed", ta: "center", fz: "sm" }, "No data available. Add data from the AG-UI Canvas.")))));
17911
17949
  }
17912
17950
 
17913
17951
  // src/mantine/blocks/dynamicList/DynamicListBlockSpec.tsx
@@ -20479,7 +20517,7 @@ import { IconChevronRight as IconChevronRight9, IconLoader, IconTestPipe, IconTr
20479
20517
 
20480
20518
  // src/mantine/blocks/domainCardViewer/flow/ViewerPanel.tsx
20481
20519
  import React214, { useMemo as useMemo76 } from "react";
20482
- import { Paper as Paper15, CloseButton as CloseButton4, Title as Title7, Stack as Stack142, Text as Text121, Loader as Loader30, Alert as Alert31, Button as Button37, Box as Box42, ScrollArea as ScrollArea7, Code as Code6 } from "@mantine/core";
20520
+ import { Paper as Paper15, CloseButton as CloseButton4, Title as Title7, Stack as Stack142, Text as Text121, Loader as Loader30, Alert as Alert31, Button as Button37, Box as Box42, ScrollArea as ScrollArea7, Code as Code7 } from "@mantine/core";
20483
20521
  import { IconAlertCircle as IconAlertCircle15, IconCheck as IconCheck12, IconSparkles as IconSparkles4 } from "@tabler/icons-react";
20484
20522
  function parsePreviewData(jsonString) {
20485
20523
  if (!jsonString || jsonString === "{}") return null;
@@ -20490,7 +20528,7 @@ function parsePreviewData(jsonString) {
20490
20528
  }
20491
20529
  }
20492
20530
  var JsonViewer = ({ data }) => {
20493
- return /* @__PURE__ */ React214.createElement(ScrollArea7, { h: "100%", offsetScrollbars: true }, /* @__PURE__ */ React214.createElement(Stack142, { gap: "md" }, data.name && /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Name"), /* @__PURE__ */ React214.createElement(Text121, { size: "lg", fw: 600 }, data.name)), data.summary && /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Summary"), /* @__PURE__ */ React214.createElement(Text121, { size: "sm" }, data.summary)), data.description && /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Description"), /* @__PURE__ */ React214.createElement(Text121, { size: "sm" }, data.description)), data.entity_type && data.entity_type.length > 0 && /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Type"), /* @__PURE__ */ React214.createElement(Text121, { size: "sm" }, data.entity_type.join(", "))), data.keywords && data.keywords.length > 0 && /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Keywords"), /* @__PURE__ */ React214.createElement(Text121, { size: "sm" }, data.keywords.join(", "))), data.faq && data.faq.length > 0 && /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600, mb: "xs" }, "FAQ"), /* @__PURE__ */ React214.createElement(Stack142, { gap: "sm" }, data.faq.map((item, index) => /* @__PURE__ */ React214.createElement(Box42, { key: index, p: "sm", style: { borderRadius: 8, backgroundColor: "var(--mantine-color-dark-6)" } }, /* @__PURE__ */ React214.createElement(Text121, { size: "sm", fw: 500, mb: 4 }, item.question), /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed" }, item.answer))))), /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600, mb: "xs" }, "Raw Data"), /* @__PURE__ */ React214.createElement(Code6, { block: true, style: { fontSize: 11, maxHeight: 200, overflow: "auto" } }, JSON.stringify(data, null, 2)))));
20531
+ return /* @__PURE__ */ React214.createElement(ScrollArea7, { h: "100%", offsetScrollbars: true }, /* @__PURE__ */ React214.createElement(Stack142, { gap: "md" }, data.name && /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Name"), /* @__PURE__ */ React214.createElement(Text121, { size: "lg", fw: 600 }, data.name)), data.summary && /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Summary"), /* @__PURE__ */ React214.createElement(Text121, { size: "sm" }, data.summary)), data.description && /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Description"), /* @__PURE__ */ React214.createElement(Text121, { size: "sm" }, data.description)), data.entity_type && data.entity_type.length > 0 && /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Type"), /* @__PURE__ */ React214.createElement(Text121, { size: "sm" }, data.entity_type.join(", "))), data.keywords && data.keywords.length > 0 && /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Keywords"), /* @__PURE__ */ React214.createElement(Text121, { size: "sm" }, data.keywords.join(", "))), data.faq && data.faq.length > 0 && /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600, mb: "xs" }, "FAQ"), /* @__PURE__ */ React214.createElement(Stack142, { gap: "sm" }, data.faq.map((item, index) => /* @__PURE__ */ React214.createElement(Box42, { key: index, p: "sm", style: { borderRadius: 8, backgroundColor: "var(--mantine-color-dark-6)" } }, /* @__PURE__ */ React214.createElement(Text121, { size: "sm", fw: 500, mb: 4 }, item.question), /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed" }, item.answer))))), /* @__PURE__ */ React214.createElement(Box42, null, /* @__PURE__ */ React214.createElement(Text121, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600, mb: "xs" }, "Raw Data"), /* @__PURE__ */ React214.createElement(Code7, { block: true, style: { fontSize: 11, maxHeight: 200, overflow: "auto" } }, JSON.stringify(data, null, 2)))));
20494
20532
  };
20495
20533
  var ViewerPanel = ({ block, onApprove }) => {
20496
20534
  const { closePanel } = usePanelStore();
@@ -23688,6 +23726,7 @@ var ActionTemplateView = ({ editor, block }) => {
23688
23726
  const panelId = `${ACTION_TEMPLATE_PANEL_ID}-${block.id}`;
23689
23727
  const assignmentPanelId = `${ACTION_ASSIGNMENT_PANEL_ID}-${block.id}`;
23690
23728
  const { closePanel, activePanel } = usePanelStore();
23729
+ const { editable } = useBlocknoteContext();
23691
23730
  const panelContent = useMemo87(() => /* @__PURE__ */ React238.createElement(TemplateConfig16, { editor, block }), [editor, block]);
23692
23731
  const assignmentPanelContent = useMemo87(
23693
23732
  () => /* @__PURE__ */ React238.createElement(
@@ -23710,6 +23749,7 @@ var ActionTemplateView = ({ editor, block }) => {
23710
23749
  const { open: openCommitment } = usePanel(commitmentPanelId, commitmentPanelContent);
23711
23750
  const isPanelOpenForBlock = activePanel === panelId || activePanel === assignmentPanelId || activePanel === commitmentPanelId;
23712
23751
  const isPanelBlocked = activePanel !== null && !isPanelOpenForBlock;
23752
+ const interactive = !!editable;
23713
23753
  const actionType = block.props.actionType || "";
23714
23754
  const dueDate = block.props.ttlAbsoluteDueDate;
23715
23755
  const dueDateDisplay = dueDate ? formatDate(dueDate) : "";
@@ -23718,7 +23758,7 @@ var ActionTemplateView = ({ editor, block }) => {
23718
23758
  BaseContainer,
23719
23759
  {
23720
23760
  blockId: block.id,
23721
- onClick: isPanelBlocked ? void 0 : open,
23761
+ onClick: !interactive || isPanelBlocked ? void 0 : open,
23722
23762
  style: {
23723
23763
  padding: 20,
23724
23764
  borderColor: isPanelOpenForBlock ? "var(--mantine-color-accent-5)" : void 0,
@@ -23727,15 +23767,15 @@ var ActionTemplateView = ({ editor, block }) => {
23727
23767
  opacity: isPanelBlocked ? 0.6 : 1
23728
23768
  }
23729
23769
  },
23730
- /* @__PURE__ */ React238.createElement(Group88, { wrap: "nowrap", gap: 24, align: "center", style: { width: "100%" } }, /* @__PURE__ */ React238.createElement(Group88, { wrap: "nowrap", gap: 16, align: "center", style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React238.createElement(Box44, { style: { flexShrink: 0, width: 32, height: 32, display: "flex", alignItems: "center", justifyContent: "center" } }, getActionMeta(actionType).icon), /* @__PURE__ */ React238.createElement(Stack158, { gap: 0, style: { flex: 1, minWidth: 0, overflow: "hidden" } }, /* @__PURE__ */ React238.createElement(Text135, { fw: 500, size: "md", truncate: true, contentEditable: false, style: { letterSpacing: "0.16px", lineHeight: 1.5 } }, block.props.title || "Title of the action"), /* @__PURE__ */ React238.createElement(Text135, { size: "sm", c: "dimmed", truncate: true, contentEditable: false, style: { letterSpacing: "0.14px" } }, subtitle))), /* @__PURE__ */ React238.createElement(Stack158, { gap: 2, align: "flex-end", style: { flexShrink: 0, minWidth: 100 } }, /* @__PURE__ */ React238.createElement(Text135, { fw: 500, size: "md", contentEditable: false, style: { letterSpacing: "0.16px", lineHeight: 1.5, textAlign: "right" } }, "Pending"), /* @__PURE__ */ React238.createElement(Group88, { gap: 4, justify: "flex-end" }, /* @__PURE__ */ React238.createElement(CommitmentDisplay, { block, onClick: isPanelBlocked ? () => {
23731
- } : openCommitment }), /* @__PURE__ */ React238.createElement(AssignmentDisplay, { onClick: isPanelBlocked ? () => {
23770
+ /* @__PURE__ */ React238.createElement(Group88, { wrap: "nowrap", gap: 24, align: "center", style: { width: "100%" } }, /* @__PURE__ */ React238.createElement(Group88, { wrap: "nowrap", gap: 16, align: "center", style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React238.createElement(Box44, { style: { flexShrink: 0, width: 32, height: 32, display: "flex", alignItems: "center", justifyContent: "center" } }, getActionMeta(actionType).icon), /* @__PURE__ */ React238.createElement(Stack158, { gap: 0, style: { flex: 1, minWidth: 0, overflow: "hidden" } }, /* @__PURE__ */ React238.createElement(Text135, { fw: 500, size: "md", truncate: true, contentEditable: false, style: { letterSpacing: "0.16px", lineHeight: 1.5 } }, block.props.title || "Title of the action"), /* @__PURE__ */ React238.createElement(Text135, { size: "sm", c: "dimmed", truncate: true, contentEditable: false, style: { letterSpacing: "0.14px" } }, subtitle))), /* @__PURE__ */ React238.createElement(Stack158, { gap: 2, align: "flex-end", style: { flexShrink: 0, minWidth: 100 } }, /* @__PURE__ */ React238.createElement(Text135, { fw: 500, size: "md", contentEditable: false, style: { letterSpacing: "0.16px", lineHeight: 1.5, textAlign: "right" } }, "Pending"), /* @__PURE__ */ React238.createElement(Group88, { gap: 4, justify: "flex-end" }, /* @__PURE__ */ React238.createElement(CommitmentDisplay, { block, onClick: !interactive || isPanelBlocked ? () => {
23771
+ } : openCommitment }), /* @__PURE__ */ React238.createElement(AssignmentDisplay, { onClick: !interactive || isPanelBlocked ? () => {
23732
23772
  } : openAssignment, block }))))
23733
23773
  );
23734
23774
  };
23735
23775
 
23736
23776
  // src/mantine/blocks/action/flow/FlowView.tsx
23737
23777
  import React242, { useCallback as useCallback74, useEffect as useEffect78, useMemo as useMemo90, useRef as useRef23, useState as useState95 } from "react";
23738
- import { Group as Group91, Stack as Stack161, Text as Text139, Code as Code7, Alert as Alert35, Box as Box47, Divider as Divider20, Button as Button43, Loader as Loader34 } from "@mantine/core";
23778
+ import { Group as Group91, Stack as Stack161, Text as Text139, Code as Code8, Alert as Alert35, Box as Box47, Divider as Divider20, Button as Button43, Loader as Loader34 } from "@mantine/core";
23739
23779
  import { IconAlertTriangle as IconAlertTriangle4, IconUser as IconUser13, IconBolt as IconBolt9, IconShieldCheck as IconShieldCheck14, IconPlayerPlay as IconPlayerPlay2 } from "@tabler/icons-react";
23740
23780
 
23741
23781
  // src/mantine/hooks/useAutoCommitOnExecute.ts
@@ -24444,7 +24484,7 @@ function GenericFlowPanel({
24444
24484
  disabled: isDisabled || isLoading || !actionType
24445
24485
  },
24446
24486
  isLoading ? "Running..." : "Execute"
24447
- ), isDisabled && disabledMessage && /* @__PURE__ */ React242.createElement(Text139, { size: "xs", c: "dimmed" }, disabledMessage), runtime.error && /* @__PURE__ */ React242.createElement(Alert35, { icon: /* @__PURE__ */ React242.createElement(IconAlertTriangle4, { size: 16 }), title: "Execution Error", color: "red", styles: actionAlertStyles }, /* @__PURE__ */ React242.createElement(Text139, { size: "xs" }, runtime.error.message)), Object.keys(parsedInputs).length > 0 && /* @__PURE__ */ React242.createElement(React242.Fragment, null, /* @__PURE__ */ React242.createElement(Divider20, null), /* @__PURE__ */ React242.createElement(Stack161, { gap: "xs" }, /* @__PURE__ */ React242.createElement(Text139, { size: "xs", fw: 600, c: "dimmed" }, "Inputs"), /* @__PURE__ */ React242.createElement(Code7, { block: true, style: { fontSize: "11px" } }, JSON.stringify(parsedInputs, null, 2)))), outputJson && /* @__PURE__ */ React242.createElement(React242.Fragment, null, /* @__PURE__ */ React242.createElement(Divider20, null), /* @__PURE__ */ React242.createElement(Stack161, { gap: "xs" }, /* @__PURE__ */ React242.createElement(Text139, { size: "xs", fw: 600, c: "dimmed" }, "Output"), /* @__PURE__ */ React242.createElement(Code7, { block: true, style: { fontSize: "11px", maxHeight: "300px", overflow: "auto" } }, outputJson))));
24487
+ ), isDisabled && disabledMessage && /* @__PURE__ */ React242.createElement(Text139, { size: "xs", c: "dimmed" }, disabledMessage), runtime.error && /* @__PURE__ */ React242.createElement(Alert35, { icon: /* @__PURE__ */ React242.createElement(IconAlertTriangle4, { size: 16 }), title: "Execution Error", color: "red", styles: actionAlertStyles }, /* @__PURE__ */ React242.createElement(Text139, { size: "xs" }, runtime.error.message)), Object.keys(parsedInputs).length > 0 && /* @__PURE__ */ React242.createElement(React242.Fragment, null, /* @__PURE__ */ React242.createElement(Divider20, null), /* @__PURE__ */ React242.createElement(Stack161, { gap: "xs" }, /* @__PURE__ */ React242.createElement(Text139, { size: "xs", fw: 600, c: "dimmed" }, "Inputs"), /* @__PURE__ */ React242.createElement(Code8, { block: true, style: { fontSize: "11px" } }, JSON.stringify(parsedInputs, null, 2)))), outputJson && /* @__PURE__ */ React242.createElement(React242.Fragment, null, /* @__PURE__ */ React242.createElement(Divider20, null), /* @__PURE__ */ React242.createElement(Stack161, { gap: "xs" }, /* @__PURE__ */ React242.createElement(Text139, { size: "xs", fw: 600, c: "dimmed" }, "Output"), /* @__PURE__ */ React242.createElement(Code8, { block: true, style: { fontSize: "11px", maxHeight: "300px", overflow: "auto" } }, outputJson))));
24448
24488
  }
24449
24489
 
24450
24490
  // src/mantine/blocks/action/actionTypes/pod/domainIndexerLookup/DomainIndexerLookupConfig.tsx
@@ -25617,7 +25657,7 @@ registerActionTypeUI("qi/pod.list-domain-flows", {
25617
25657
 
25618
25658
  // src/mantine/blocks/action/actionTypes/httpRequest/HttpRequestConfig.tsx
25619
25659
  import React255, { useEffect as useEffect88, useState as useState108, useCallback as useCallback87 } from "react";
25620
- import { Stack as Stack174, Text as Text152, Button as Button49, Group as Group97, ActionIcon as ActionIcon37, Paper as Paper19, Alert as Alert42, Code as Code8 } from "@mantine/core";
25660
+ import { Stack as Stack174, Text as Text152, Button as Button49, Group as Group97, ActionIcon as ActionIcon37, Paper as Paper19, Alert as Alert42, Code as Code9 } from "@mantine/core";
25621
25661
  import { IconTrash as IconTrash9, IconPlus as IconPlus8, IconInfoCircle as IconInfoCircle5 } from "@tabler/icons-react";
25622
25662
  var HttpRequestConfig = ({ inputs, onInputsChange, editor, blockId }) => {
25623
25663
  const [local, setLocal] = useState108(() => parseHttpRequestInputs(inputs));
@@ -25722,7 +25762,7 @@ var HttpRequestConfig = ({ inputs, onInputsChange, editor, blockId }) => {
25722
25762
  currentBlockId: blockId,
25723
25763
  size: "sm"
25724
25764
  }
25725
- ), /* @__PURE__ */ React255.createElement(ActionIcon37, { color: "red", variant: "subtle", onClick: () => handleRemoveBodyField(index) }, /* @__PURE__ */ React255.createElement(IconTrash9, { size: 16 }))))))), /* @__PURE__ */ React255.createElement(Alert42, { icon: /* @__PURE__ */ React255.createElement(IconInfoCircle5, { size: 16 }), title: "Response Schema", styles: actionAlertStyles }, /* @__PURE__ */ React255.createElement(Text152, { size: "xs" }, "Define the expected structure of your API response. This allows other blocks to reference specific fields from the response data using the DataInput component.")), /* @__PURE__ */ React255.createElement(Stack174, { gap: "xs" }, /* @__PURE__ */ React255.createElement(Text152, { size: "sm", c: "neutralColor.7" }, "How it works"), /* @__PURE__ */ React255.createElement(Text152, { size: "xs", c: "dimmed" }, "1. Define response fields using dot notation (e.g., ", /* @__PURE__ */ React255.createElement(Code8, null, "customer.email"), ")"), /* @__PURE__ */ React255.createElement(Text152, { size: "xs", c: "dimmed" }, "2. Fields become available in DataInput selectors across other blocks"), /* @__PURE__ */ React255.createElement(Text152, { size: "xs", c: "dimmed" }, "3. Reference them like: ", /* @__PURE__ */ React255.createElement(Code8, null, `{{${blockId}.response.customer.email}}`))), /* @__PURE__ */ React255.createElement(Stack174, { gap: "xs" }, /* @__PURE__ */ React255.createElement(Group97, { justify: "space-between" }, /* @__PURE__ */ React255.createElement(Text152, { size: "sm", c: "neutralColor.7" }, "Response Fields"), /* @__PURE__ */ React255.createElement(Button49, { size: "xs", variant: "light", leftSection: /* @__PURE__ */ React255.createElement(IconPlus8, { size: 14 }), onClick: handleAddSchemaField }, "Add Field")), schemaFields.length === 0 ? /* @__PURE__ */ React255.createElement(Code8, { p: "md" }, 'No response fields defined yet. Click "Add Field" to start defining your response structure.') : /* @__PURE__ */ React255.createElement(Stack174, { gap: "md" }, schemaFields.map((field, index) => /* @__PURE__ */ React255.createElement(Paper19, { key: index, p: "md", withBorder: true }, /* @__PURE__ */ React255.createElement(Stack174, { gap: "sm" }, /* @__PURE__ */ React255.createElement(Group97, { justify: "space-between", align: "flex-start" }, /* @__PURE__ */ React255.createElement(Text152, { size: "sm", fw: 500 }, "Field ", index + 1), /* @__PURE__ */ React255.createElement(ActionIcon37, { color: "red", variant: "subtle", onClick: () => handleRemoveSchemaField(index) }, /* @__PURE__ */ React255.createElement(IconTrash9, { size: 16 }))), /* @__PURE__ */ React255.createElement(
25765
+ ), /* @__PURE__ */ React255.createElement(ActionIcon37, { color: "red", variant: "subtle", onClick: () => handleRemoveBodyField(index) }, /* @__PURE__ */ React255.createElement(IconTrash9, { size: 16 }))))))), /* @__PURE__ */ React255.createElement(Alert42, { icon: /* @__PURE__ */ React255.createElement(IconInfoCircle5, { size: 16 }), title: "Response Schema", styles: actionAlertStyles }, /* @__PURE__ */ React255.createElement(Text152, { size: "xs" }, "Define the expected structure of your API response. This allows other blocks to reference specific fields from the response data using the DataInput component.")), /* @__PURE__ */ React255.createElement(Stack174, { gap: "xs" }, /* @__PURE__ */ React255.createElement(Text152, { size: "sm", c: "neutralColor.7" }, "How it works"), /* @__PURE__ */ React255.createElement(Text152, { size: "xs", c: "dimmed" }, "1. Define response fields using dot notation (e.g., ", /* @__PURE__ */ React255.createElement(Code9, null, "customer.email"), ")"), /* @__PURE__ */ React255.createElement(Text152, { size: "xs", c: "dimmed" }, "2. Fields become available in DataInput selectors across other blocks"), /* @__PURE__ */ React255.createElement(Text152, { size: "xs", c: "dimmed" }, "3. Reference them like: ", /* @__PURE__ */ React255.createElement(Code9, null, `{{${blockId}.response.customer.email}}`))), /* @__PURE__ */ React255.createElement(Stack174, { gap: "xs" }, /* @__PURE__ */ React255.createElement(Group97, { justify: "space-between" }, /* @__PURE__ */ React255.createElement(Text152, { size: "sm", c: "neutralColor.7" }, "Response Fields"), /* @__PURE__ */ React255.createElement(Button49, { size: "xs", variant: "light", leftSection: /* @__PURE__ */ React255.createElement(IconPlus8, { size: 14 }), onClick: handleAddSchemaField }, "Add Field")), schemaFields.length === 0 ? /* @__PURE__ */ React255.createElement(Code9, { p: "md" }, 'No response fields defined yet. Click "Add Field" to start defining your response structure.') : /* @__PURE__ */ React255.createElement(Stack174, { gap: "md" }, schemaFields.map((field, index) => /* @__PURE__ */ React255.createElement(Paper19, { key: index, p: "md", withBorder: true }, /* @__PURE__ */ React255.createElement(Stack174, { gap: "sm" }, /* @__PURE__ */ React255.createElement(Group97, { justify: "space-between", align: "flex-start" }, /* @__PURE__ */ React255.createElement(Text152, { size: "sm", fw: 500 }, "Field ", index + 1), /* @__PURE__ */ React255.createElement(ActionIcon37, { color: "red", variant: "subtle", onClick: () => handleRemoveSchemaField(index) }, /* @__PURE__ */ React255.createElement(IconTrash9, { size: 16 }))), /* @__PURE__ */ React255.createElement(
25726
25766
  BaseTextInput,
25727
25767
  {
25728
25768
  label: "Field Path",
@@ -25770,12 +25810,12 @@ var HttpRequestConfig = ({ inputs, onInputsChange, editor, blockId }) => {
25770
25810
  minRows: 2,
25771
25811
  size: "sm"
25772
25812
  }
25773
- ), field.path && field.displayName && /* @__PURE__ */ React255.createElement(Stack174, { gap: 4 }, /* @__PURE__ */ React255.createElement(Text152, { size: "xs", c: "dimmed" }, "Reference format:"), /* @__PURE__ */ React255.createElement(Code8, { block: true, style: { fontSize: "11px" } }, `{{${blockId}.response.${field.path}}}`))))))));
25813
+ ), field.path && field.displayName && /* @__PURE__ */ React255.createElement(Stack174, { gap: 4 }, /* @__PURE__ */ React255.createElement(Text152, { size: "xs", c: "dimmed" }, "Reference format:"), /* @__PURE__ */ React255.createElement(Code9, { block: true, style: { fontSize: "11px" } }, `{{${blockId}.response.${field.path}}}`))))))));
25774
25814
  };
25775
25815
 
25776
25816
  // src/mantine/blocks/action/actionTypes/httpRequest/HttpRequestFlowDetail.tsx
25777
25817
  import React256, { useMemo as useMemo93, useState as useState109 } from "react";
25778
- import { Group as Group98, Stack as Stack175, Text as Text153, ActionIcon as ActionIcon38, Badge as Badge47, Collapse as Collapse8, Code as Code9, Loader as Loader40, Alert as Alert43 } from "@mantine/core";
25818
+ import { Group as Group98, Stack as Stack175, Text as Text153, ActionIcon as ActionIcon38, Badge as Badge47, Collapse as Collapse8, Code as Code10, Loader as Loader40, Alert as Alert43 } from "@mantine/core";
25779
25819
  import { IconSend as IconSend5, IconChevronDown as IconChevronDown8, IconChevronUp as IconChevronUp4, IconAlertTriangle as IconAlertTriangle5 } from "@tabler/icons-react";
25780
25820
  var HttpRequestFlowDetail = ({ inputs, editor, runtime, updateRuntime, isDisabled }) => {
25781
25821
  const [isLoading, setIsLoading] = useState109(false);
@@ -25879,7 +25919,7 @@ var HttpRequestFlowDetail = ({ inputs, editor, runtime, updateRuntime, isDisable
25879
25919
  }
25880
25920
  };
25881
25921
  const hasDetails = headers.length > 0 || body.length > 0 || !!response;
25882
- return /* @__PURE__ */ React256.createElement(Stack175, { gap: "md" }, /* @__PURE__ */ React256.createElement(Group98, { gap: "xs", wrap: "nowrap" }, /* @__PURE__ */ React256.createElement(Badge47, { size: "sm", variant: "filled", color: getMethodColor(method) }, method), /* @__PURE__ */ React256.createElement(Text153, { size: "xs", c: "dimmed", contentEditable: false, style: { wordBreak: "break-all", overflow: "hidden", textOverflow: "ellipsis" } }, endpoint || "No endpoint configured"), status !== "idle" && /* @__PURE__ */ React256.createElement(Badge47, { size: "xs", variant: "dot", color: getStatusColor5(status) }, status)), /* @__PURE__ */ React256.createElement(Group98, { gap: "xs" }, /* @__PURE__ */ React256.createElement(BasePrimaryButton, { leftSection: isLoading ? /* @__PURE__ */ React256.createElement(Loader40, { size: 14 }) : /* @__PURE__ */ React256.createElement(IconSend5, { size: 14 }), onClick: handleExecuteRequest, disabled: isDisabled || isLoading || !endpoint }, isLoading ? "Sending..." : "Execute"), /* @__PURE__ */ React256.createElement(ActionIcon38, { variant: "subtle", onClick: () => setShowDetails(!showDetails), disabled: !hasDetails }, showDetails ? /* @__PURE__ */ React256.createElement(IconChevronUp4, { size: 16 }) : /* @__PURE__ */ React256.createElement(IconChevronDown8, { size: 16 }))), /* @__PURE__ */ React256.createElement(Collapse8, { in: showDetails }, /* @__PURE__ */ React256.createElement(Stack175, { gap: "md" }, validationWarnings.length > 0 && /* @__PURE__ */ React256.createElement(Alert43, { icon: /* @__PURE__ */ React256.createElement(IconAlertTriangle5, { size: 16 }), title: "Schema Validation Warnings", color: "yellow", styles: actionAlertStyles }, /* @__PURE__ */ React256.createElement(Stack175, { gap: "xs" }, /* @__PURE__ */ React256.createElement(Text153, { size: "xs" }, "The API response does not match the defined schema:"), validationWarnings.map((warning, index) => /* @__PURE__ */ React256.createElement(Text153, { key: index, size: "xs", c: "dimmed" }, "\u2022 ", warning)))), headers.length > 0 && /* @__PURE__ */ React256.createElement(Stack175, { gap: "xs" }, /* @__PURE__ */ React256.createElement(Text153, { size: "xs", fw: 600, c: "dimmed" }, "Headers:"), /* @__PURE__ */ React256.createElement(Code9, { block: true, style: { fontSize: "11px" } }, JSON.stringify(
25922
+ return /* @__PURE__ */ React256.createElement(Stack175, { gap: "md" }, /* @__PURE__ */ React256.createElement(Group98, { gap: "xs", wrap: "nowrap" }, /* @__PURE__ */ React256.createElement(Badge47, { size: "sm", variant: "filled", color: getMethodColor(method) }, method), /* @__PURE__ */ React256.createElement(Text153, { size: "xs", c: "dimmed", contentEditable: false, style: { wordBreak: "break-all", overflow: "hidden", textOverflow: "ellipsis" } }, endpoint || "No endpoint configured"), status !== "idle" && /* @__PURE__ */ React256.createElement(Badge47, { size: "xs", variant: "dot", color: getStatusColor5(status) }, status)), /* @__PURE__ */ React256.createElement(Group98, { gap: "xs" }, /* @__PURE__ */ React256.createElement(BasePrimaryButton, { leftSection: isLoading ? /* @__PURE__ */ React256.createElement(Loader40, { size: 14 }) : /* @__PURE__ */ React256.createElement(IconSend5, { size: 14 }), onClick: handleExecuteRequest, disabled: isDisabled || isLoading || !endpoint }, isLoading ? "Sending..." : "Execute"), /* @__PURE__ */ React256.createElement(ActionIcon38, { variant: "subtle", onClick: () => setShowDetails(!showDetails), disabled: !hasDetails }, showDetails ? /* @__PURE__ */ React256.createElement(IconChevronUp4, { size: 16 }) : /* @__PURE__ */ React256.createElement(IconChevronDown8, { size: 16 }))), /* @__PURE__ */ React256.createElement(Collapse8, { in: showDetails }, /* @__PURE__ */ React256.createElement(Stack175, { gap: "md" }, validationWarnings.length > 0 && /* @__PURE__ */ React256.createElement(Alert43, { icon: /* @__PURE__ */ React256.createElement(IconAlertTriangle5, { size: 16 }), title: "Schema Validation Warnings", color: "yellow", styles: actionAlertStyles }, /* @__PURE__ */ React256.createElement(Stack175, { gap: "xs" }, /* @__PURE__ */ React256.createElement(Text153, { size: "xs" }, "The API response does not match the defined schema:"), validationWarnings.map((warning, index) => /* @__PURE__ */ React256.createElement(Text153, { key: index, size: "xs", c: "dimmed" }, "\u2022 ", warning)))), headers.length > 0 && /* @__PURE__ */ React256.createElement(Stack175, { gap: "xs" }, /* @__PURE__ */ React256.createElement(Text153, { size: "xs", fw: 600, c: "dimmed" }, "Headers:"), /* @__PURE__ */ React256.createElement(Code10, { block: true, style: { fontSize: "11px" } }, JSON.stringify(
25883
25923
  headers.reduce(
25884
25924
  (acc, h) => {
25885
25925
  if (h.key && h.value) acc[h.key] = h.value;
@@ -25889,7 +25929,7 @@ var HttpRequestFlowDetail = ({ inputs, editor, runtime, updateRuntime, isDisable
25889
25929
  ),
25890
25930
  null,
25891
25931
  2
25892
- ))), method !== "GET" && body.length > 0 && /* @__PURE__ */ React256.createElement(Stack175, { gap: "xs" }, /* @__PURE__ */ React256.createElement(Text153, { size: "xs", fw: 600, c: "dimmed" }, "Body:"), /* @__PURE__ */ React256.createElement(Code9, { block: true, style: { fontSize: "11px" } }, JSON.stringify(
25932
+ ))), method !== "GET" && body.length > 0 && /* @__PURE__ */ React256.createElement(Stack175, { gap: "xs" }, /* @__PURE__ */ React256.createElement(Text153, { size: "xs", fw: 600, c: "dimmed" }, "Body:"), /* @__PURE__ */ React256.createElement(Code10, { block: true, style: { fontSize: "11px" } }, JSON.stringify(
25893
25933
  body.reduce(
25894
25934
  (acc, b) => {
25895
25935
  if (b.key && b.value) acc[b.key] = b.value;
@@ -25899,7 +25939,7 @@ var HttpRequestFlowDetail = ({ inputs, editor, runtime, updateRuntime, isDisable
25899
25939
  ),
25900
25940
  null,
25901
25941
  2
25902
- ))), response && /* @__PURE__ */ React256.createElement(Stack175, { gap: "xs" }, /* @__PURE__ */ React256.createElement(Text153, { size: "xs", fw: 600, c: "dimmed" }, "Response:"), status === "error" ? /* @__PURE__ */ React256.createElement(Alert43, { color: "red", title: "Error", styles: { ...actionAlertStyles, message: { ...actionAlertStyles.message, fontSize: "11px" } } }, /* @__PURE__ */ React256.createElement(Code9, { block: true, style: { fontSize: "11px" } }, response)) : /* @__PURE__ */ React256.createElement(Code9, { block: true, style: { fontSize: "11px", maxHeight: "300px", overflow: "auto" } }, response)))));
25942
+ ))), response && /* @__PURE__ */ React256.createElement(Stack175, { gap: "xs" }, /* @__PURE__ */ React256.createElement(Text153, { size: "xs", fw: 600, c: "dimmed" }, "Response:"), status === "error" ? /* @__PURE__ */ React256.createElement(Alert43, { color: "red", title: "Error", styles: { ...actionAlertStyles, message: { ...actionAlertStyles.message, fontSize: "11px" } } }, /* @__PURE__ */ React256.createElement(Code10, { block: true, style: { fontSize: "11px" } }, response)) : /* @__PURE__ */ React256.createElement(Code10, { block: true, style: { fontSize: "11px", maxHeight: "300px", overflow: "auto" } }, response)))));
25903
25943
  };
25904
25944
 
25905
25945
  // src/mantine/blocks/action/actionTypes/httpRequest/index.ts
@@ -28778,7 +28818,7 @@ var EvaluateClaimFlowDetail = ({
28778
28818
  if (handlers2.getEvaluationTemplate) {
28779
28819
  setOutcomeTemplateLoading(true);
28780
28820
  try {
28781
- const evalTemplateResult = await handlers2.getEvaluationTemplate(deedDid);
28821
+ const evalTemplateResult = await handlers2.getEvaluationTemplate(deedDid, collectionId);
28782
28822
  setOutcomeTemplateJson(evalTemplateResult?.surveyTemplate || null);
28783
28823
  } catch {
28784
28824
  setOutcomeTemplateJson(null);
@@ -30920,9 +30960,9 @@ var DomainCardPreviewConfig = ({ inputs, onInputsChange }) => {
30920
30960
 
30921
30961
  // src/mantine/blocks/action/actionTypes/domainCardPreview/DomainCardPreviewFlowDetail.tsx
30922
30962
  import React279, { useCallback as useCallback106, useMemo as useMemo109 } from "react";
30923
- import { Alert as Alert56, Badge as Badge52, Box as Box61, Button as Button59, Code as Code10, Group as Group110, Loader as Loader56, ScrollArea as ScrollArea9, Stack as Stack196, Text as Text174 } from "@mantine/core";
30963
+ import { Alert as Alert56, Badge as Badge52, Box as Box61, Button as Button59, Code as Code11, Group as Group110, Loader as Loader56, ScrollArea as ScrollArea9, Stack as Stack196, Text as Text174 } from "@mantine/core";
30924
30964
  import { IconAlertCircle as IconAlertCircle22, IconCheck as IconCheck24, IconSparkles as IconSparkles6 } from "@tabler/icons-react";
30925
- var JsonViewer2 = ({ data }) => /* @__PURE__ */ React279.createElement(ScrollArea9.Autosize, { mah: 360, offsetScrollbars: true }, /* @__PURE__ */ React279.createElement(Stack196, { gap: "md" }, data.name && /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Name"), /* @__PURE__ */ React279.createElement(Text174, { size: "lg", fw: 600 }, data.name)), data.summary && /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Summary"), /* @__PURE__ */ React279.createElement(Text174, { size: "sm" }, data.summary)), data.description && /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Description"), /* @__PURE__ */ React279.createElement(Text174, { size: "sm" }, data.description)), data.entity_type && data.entity_type.length > 0 && /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Type"), /* @__PURE__ */ React279.createElement(Text174, { size: "sm" }, data.entity_type.join(", "))), data.keywords && data.keywords.length > 0 && /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Keywords"), /* @__PURE__ */ React279.createElement(Text174, { size: "sm" }, data.keywords.join(", "))), data.faq && data.faq.length > 0 && /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600, mb: "xs" }, "FAQ"), /* @__PURE__ */ React279.createElement(Stack196, { gap: "sm" }, data.faq.map((item, index) => /* @__PURE__ */ React279.createElement(Box61, { key: index, p: "sm", style: { borderRadius: 8, backgroundColor: "var(--mantine-color-dark-6)" } }, /* @__PURE__ */ React279.createElement(Text174, { size: "sm", fw: 500, mb: 4 }, item.question), /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed" }, item.answer))))), /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600, mb: "xs" }, "Raw Data"), /* @__PURE__ */ React279.createElement(Code10, { block: true, style: { fontSize: 11, maxHeight: 200, overflow: "auto" } }, JSON.stringify(data, null, 2)))));
30965
+ var JsonViewer2 = ({ data }) => /* @__PURE__ */ React279.createElement(ScrollArea9.Autosize, { mah: 360, offsetScrollbars: true }, /* @__PURE__ */ React279.createElement(Stack196, { gap: "md" }, data.name && /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Name"), /* @__PURE__ */ React279.createElement(Text174, { size: "lg", fw: 600 }, data.name)), data.summary && /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Summary"), /* @__PURE__ */ React279.createElement(Text174, { size: "sm" }, data.summary)), data.description && /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Description"), /* @__PURE__ */ React279.createElement(Text174, { size: "sm" }, data.description)), data.entity_type && data.entity_type.length > 0 && /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Type"), /* @__PURE__ */ React279.createElement(Text174, { size: "sm" }, data.entity_type.join(", "))), data.keywords && data.keywords.length > 0 && /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600 }, "Keywords"), /* @__PURE__ */ React279.createElement(Text174, { size: "sm" }, data.keywords.join(", "))), data.faq && data.faq.length > 0 && /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600, mb: "xs" }, "FAQ"), /* @__PURE__ */ React279.createElement(Stack196, { gap: "sm" }, data.faq.map((item, index) => /* @__PURE__ */ React279.createElement(Box61, { key: index, p: "sm", style: { borderRadius: 8, backgroundColor: "var(--mantine-color-dark-6)" } }, /* @__PURE__ */ React279.createElement(Text174, { size: "sm", fw: 500, mb: 4 }, item.question), /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed" }, item.answer))))), /* @__PURE__ */ React279.createElement(Box61, null, /* @__PURE__ */ React279.createElement(Text174, { size: "xs", c: "dimmed", tt: "uppercase", fw: 600, mb: "xs" }, "Raw Data"), /* @__PURE__ */ React279.createElement(Code11, { block: true, style: { fontSize: 11, maxHeight: 200, overflow: "auto" } }, JSON.stringify(data, null, 2)))));
30926
30966
  var STATUS_BADGE = {
30927
30967
  approved: { color: "green", text: "Approved" },
30928
30968
  error: { color: "red", text: "Error" },
@@ -31582,7 +31622,7 @@ var CredentialStoreConfig = ({ inputs, onInputsChange, editor, blockId }) => {
31582
31622
 
31583
31623
  // src/mantine/blocks/action/actionTypes/credentialStore/CredentialStoreFlowDetail.tsx
31584
31624
  import React287, { useCallback as useCallback114, useMemo as useMemo113, useState as useState137 } from "react";
31585
- import { Alert as Alert60, Button as Button61, Code as Code11, Loader as Loader59, Stack as Stack204, Text as Text179 } from "@mantine/core";
31625
+ import { Alert as Alert60, Button as Button61, Code as Code12, Loader as Loader59, Stack as Stack204, Text as Text179 } from "@mantine/core";
31586
31626
  import { IconShieldCheck as IconShieldCheck15 } from "@tabler/icons-react";
31587
31627
  function safeParse(value) {
31588
31628
  let result = value;
@@ -31606,7 +31646,7 @@ function CredentialPreview({ value }) {
31606
31646
  return value;
31607
31647
  }, [value]);
31608
31648
  if (!display) return null;
31609
- return /* @__PURE__ */ React287.createElement(React287.Fragment, null, /* @__PURE__ */ React287.createElement(Text179, { size: "xs", fw: 600, c: "dimmed" }, "Credential"), /* @__PURE__ */ React287.createElement(Code11, { block: true, style: { fontSize: "11px", maxHeight: "200px", overflow: "auto" } }, display));
31649
+ return /* @__PURE__ */ React287.createElement(React287.Fragment, null, /* @__PURE__ */ React287.createElement(Text179, { size: "xs", fw: 600, c: "dimmed" }, "Credential"), /* @__PURE__ */ React287.createElement(Code12, { block: true, style: { fontSize: "11px", maxHeight: "200px", overflow: "auto" } }, display));
31610
31650
  }
31611
31651
  var CredentialStoreFlowDetail = ({ inputs, editor, block, runtime, updateRuntime, isDisabled }) => {
31612
31652
  const handlers = useBlocknoteHandlers();
@@ -31814,7 +31854,7 @@ var PaymentConfig = ({ inputs, onInputsChange }) => {
31814
31854
 
31815
31855
  // src/mantine/blocks/action/actionTypes/payment/PaymentFlowDetail.tsx
31816
31856
  import React289, { useCallback as useCallback116, useMemo as useMemo114, useState as useState139 } from "react";
31817
- import { Alert as Alert61, Button as Button62, Code as Code12, Divider as Divider25, Group as Group111, Loader as Loader60, Stack as Stack206, Text as Text181 } from "@mantine/core";
31857
+ import { Alert as Alert61, Button as Button62, Code as Code13, Divider as Divider25, Group as Group111, Loader as Loader60, Stack as Stack206, Text as Text181 } from "@mantine/core";
31818
31858
  import { IconAlertTriangle as IconAlertTriangle6, IconCash as IconCash2, IconSearch as IconSearch8, IconSend as IconSend7 } from "@tabler/icons-react";
31819
31859
  function parsePrimarySkill3(rawSkill) {
31820
31860
  const coerce2 = (candidate) => {
@@ -32090,7 +32130,7 @@ var PaymentFlowDetail = ({ inputs, editor, block, runtime, updateRuntime, isDisa
32090
32130
  setSubmitting(false);
32091
32131
  }
32092
32132
  }, [isDisabled, submitting, block, handlers, transactionId]);
32093
- return /* @__PURE__ */ React289.createElement(Stack206, { gap: "md" }, paymentConfig && !isProposed && !isTerminal && /* @__PURE__ */ React289.createElement(React289.Fragment, null, /* @__PURE__ */ React289.createElement(Text181, { size: "xs", fw: 600, c: "dimmed" }, "Payment Configuration"), /* @__PURE__ */ React289.createElement(Code12, { block: true, style: { fontSize: "11px", maxHeight: "200px", overflow: "auto" } }, JSON.stringify(paymentConfig, null, 2))), summary && /* @__PURE__ */ React289.createElement(React289.Fragment, null, /* @__PURE__ */ React289.createElement(Divider25, null), /* @__PURE__ */ React289.createElement(Text181, { size: "xs", fw: 600, c: "dimmed" }, "Payout Proposal"), /* @__PURE__ */ React289.createElement(Stack206, { gap: 4, style: { background: "var(--mantine-color-neutralColor-4)", borderRadius: 8, padding: 12 } }, Object.entries(summary).map(([key, value]) => /* @__PURE__ */ React289.createElement(Group111, { key, justify: "space-between", wrap: "nowrap" }, /* @__PURE__ */ React289.createElement(Text181, { size: "xs", c: "dimmed", style: { textTransform: "capitalize" } }, key.replace(/_/g, " ")), /* @__PURE__ */ React289.createElement(Text181, { size: "xs", fw: 500, c: "var(--mantine-color-text)", style: { textAlign: "right", wordBreak: "break-all" } }, typeof value === "object" ? JSON.stringify(value) : String(value)))))), paymentStatus && /* @__PURE__ */ React289.createElement(React289.Fragment, null, /* @__PURE__ */ React289.createElement(Divider25, null), /* @__PURE__ */ React289.createElement(Group111, { justify: "space-between" }, /* @__PURE__ */ React289.createElement(Text181, { size: "xs", fw: 600, c: "dimmed" }, "Status"), /* @__PURE__ */ React289.createElement(Text181, { size: "sm", fw: 600, c: getPaymentStatusColor(paymentStatus), style: { textTransform: "capitalize" } }, paymentStatus))), transactionId && /* @__PURE__ */ React289.createElement(Group111, { justify: "space-between" }, /* @__PURE__ */ React289.createElement(Text181, { size: "xs", fw: 600, c: "dimmed" }, "Transaction ID"), /* @__PURE__ */ React289.createElement(Text181, { size: "xs", c: "var(--mantine-color-text)", style: { fontFamily: "monospace" } }, transactionId)), !isTerminal && /* @__PURE__ */ React289.createElement(React289.Fragment, null, /* @__PURE__ */ React289.createElement(Divider25, null), isSubmitted ? /* @__PURE__ */ React289.createElement(
32133
+ return /* @__PURE__ */ React289.createElement(Stack206, { gap: "md" }, paymentConfig && !isProposed && !isTerminal && /* @__PURE__ */ React289.createElement(React289.Fragment, null, /* @__PURE__ */ React289.createElement(Text181, { size: "xs", fw: 600, c: "dimmed" }, "Payment Configuration"), /* @__PURE__ */ React289.createElement(Code13, { block: true, style: { fontSize: "11px", maxHeight: "200px", overflow: "auto" } }, JSON.stringify(paymentConfig, null, 2))), summary && /* @__PURE__ */ React289.createElement(React289.Fragment, null, /* @__PURE__ */ React289.createElement(Divider25, null), /* @__PURE__ */ React289.createElement(Text181, { size: "xs", fw: 600, c: "dimmed" }, "Payout Proposal"), /* @__PURE__ */ React289.createElement(Stack206, { gap: 4, style: { background: "var(--mantine-color-neutralColor-4)", borderRadius: 8, padding: 12 } }, Object.entries(summary).map(([key, value]) => /* @__PURE__ */ React289.createElement(Group111, { key, justify: "space-between", wrap: "nowrap" }, /* @__PURE__ */ React289.createElement(Text181, { size: "xs", c: "dimmed", style: { textTransform: "capitalize" } }, key.replace(/_/g, " ")), /* @__PURE__ */ React289.createElement(Text181, { size: "xs", fw: 500, c: "var(--mantine-color-text)", style: { textAlign: "right", wordBreak: "break-all" } }, typeof value === "object" ? JSON.stringify(value) : String(value)))))), paymentStatus && /* @__PURE__ */ React289.createElement(React289.Fragment, null, /* @__PURE__ */ React289.createElement(Divider25, null), /* @__PURE__ */ React289.createElement(Group111, { justify: "space-between" }, /* @__PURE__ */ React289.createElement(Text181, { size: "xs", fw: 600, c: "dimmed" }, "Status"), /* @__PURE__ */ React289.createElement(Text181, { size: "sm", fw: 600, c: getPaymentStatusColor(paymentStatus), style: { textTransform: "capitalize" } }, paymentStatus))), transactionId && /* @__PURE__ */ React289.createElement(Group111, { justify: "space-between" }, /* @__PURE__ */ React289.createElement(Text181, { size: "xs", fw: 600, c: "dimmed" }, "Transaction ID"), /* @__PURE__ */ React289.createElement(Text181, { size: "xs", c: "var(--mantine-color-text)", style: { fontFamily: "monospace" } }, transactionId)), !isTerminal && /* @__PURE__ */ React289.createElement(React289.Fragment, null, /* @__PURE__ */ React289.createElement(Divider25, null), isSubmitted ? /* @__PURE__ */ React289.createElement(
32094
32134
  Button62,
32095
32135
  {
32096
32136
  fullWidth: true,
@@ -32123,7 +32163,7 @@ var PaymentFlowDetail = ({ inputs, editor, block, runtime, updateRuntime, isDisa
32123
32163
  disabled: isDisabled || submitting
32124
32164
  },
32125
32165
  submitting ? "Executing..." : "Execute Payout"
32126
- )), paymentError && /* @__PURE__ */ React289.createElement(Alert61, { icon: /* @__PURE__ */ React289.createElement(IconAlertTriangle6, { size: 16 }), title: "Payment Error", color: "red", styles: actionAlertStyles }, /* @__PURE__ */ React289.createElement(Text181, { size: "xs" }, paymentError)), error && /* @__PURE__ */ React289.createElement(Alert61, { icon: /* @__PURE__ */ React289.createElement(IconAlertTriangle6, { size: 16 }), color: "red", styles: actionAlertStyles }, /* @__PURE__ */ React289.createElement(Text181, { size: "xs" }, error)), runtime.error?.message && /* @__PURE__ */ React289.createElement(Alert61, { icon: /* @__PURE__ */ React289.createElement(IconAlertTriangle6, { size: 16 }), color: "red", styles: actionAlertStyles }, /* @__PURE__ */ React289.createElement(Text181, { size: "xs" }, runtime.error.message)), proposal && /* @__PURE__ */ React289.createElement(React289.Fragment, null, /* @__PURE__ */ React289.createElement(Divider25, null), /* @__PURE__ */ React289.createElement(Text181, { size: "xs", fw: 600, c: "dimmed" }, "Proposal Detail"), /* @__PURE__ */ React289.createElement(Code12, { block: true, style: { fontSize: "11px", maxHeight: "200px", overflow: "auto" } }, JSON.stringify(proposal, null, 2))));
32166
+ )), paymentError && /* @__PURE__ */ React289.createElement(Alert61, { icon: /* @__PURE__ */ React289.createElement(IconAlertTriangle6, { size: 16 }), title: "Payment Error", color: "red", styles: actionAlertStyles }, /* @__PURE__ */ React289.createElement(Text181, { size: "xs" }, paymentError)), error && /* @__PURE__ */ React289.createElement(Alert61, { icon: /* @__PURE__ */ React289.createElement(IconAlertTriangle6, { size: 16 }), color: "red", styles: actionAlertStyles }, /* @__PURE__ */ React289.createElement(Text181, { size: "xs" }, error)), runtime.error?.message && /* @__PURE__ */ React289.createElement(Alert61, { icon: /* @__PURE__ */ React289.createElement(IconAlertTriangle6, { size: 16 }), color: "red", styles: actionAlertStyles }, /* @__PURE__ */ React289.createElement(Text181, { size: "xs" }, runtime.error.message)), proposal && /* @__PURE__ */ React289.createElement(React289.Fragment, null, /* @__PURE__ */ React289.createElement(Divider25, null), /* @__PURE__ */ React289.createElement(Text181, { size: "xs", fw: 600, c: "dimmed" }, "Proposal Detail"), /* @__PURE__ */ React289.createElement(Code13, { block: true, style: { fontSize: "11px", maxHeight: "200px", overflow: "auto" } }, JSON.stringify(proposal, null, 2))));
32127
32167
  };
32128
32168
 
32129
32169
  // src/mantine/blocks/action/actionTypes/payment/index.ts
@@ -41284,9 +41324,7 @@ function useCreateIxoEditor(options) {
41284
41324
  inlineContentSpecs: {
41285
41325
  ...defaultInlineContentSpecs
41286
41326
  },
41287
- styleSpecs: {
41288
- ...defaultStyleSpecs
41289
- }
41327
+ styleSpecs: ixoStyleSpecs
41290
41328
  });
41291
41329
  const editor = useCreateBlockNote({
41292
41330
  schema,
@@ -41317,7 +41355,7 @@ function useCreateIxoEditor(options) {
41317
41355
 
41318
41356
  // src/mantine/hooks/useCollaborativeIxoEditor.ts
41319
41357
  import { useCreateBlockNote as useCreateBlockNote2 } from "@blocknote/react";
41320
- import { BlockNoteSchema as BlockNoteSchema2, defaultBlockSpecs as defaultBlockSpecs2, defaultInlineContentSpecs as defaultInlineContentSpecs2, defaultStyleSpecs as defaultStyleSpecs2 } from "@blocknote/core";
41358
+ import { BlockNoteSchema as BlockNoteSchema2, defaultBlockSpecs as defaultBlockSpecs2, defaultInlineContentSpecs as defaultInlineContentSpecs2 } from "@blocknote/core";
41321
41359
 
41322
41360
  // src/core/hooks/useMatrixProvider.ts
41323
41361
  import { useEffect as useEffect146, useState as useState177, useRef as useRef39, useCallback as useCallback167, useMemo as useMemo149 } from "react";
@@ -42094,9 +42132,7 @@ function useCreateCollaborativeIxoEditor(options) {
42094
42132
  inlineContentSpecs: {
42095
42133
  ...defaultInlineContentSpecs2
42096
42134
  },
42097
- styleSpecs: {
42098
- ...defaultStyleSpecs2
42099
- }
42135
+ styleSpecs: ixoStyleSpecs
42100
42136
  }),
42101
42137
  []
42102
42138
  );
@@ -42462,7 +42498,7 @@ function useCreateCollaborativeIxoEditor(options) {
42462
42498
 
42463
42499
  // src/mantine/IxoEditor.tsx
42464
42500
  import React373, { useMemo as useMemo156 } from "react";
42465
- import { SuggestionMenuController, getDefaultReactSlashMenuItems } from "@blocknote/react";
42501
+ import { GridSuggestionMenuController, SuggestionMenuController, getDefaultReactSlashMenuItems } from "@blocknote/react";
42466
42502
  import { BlockNoteView } from "@blocknote/mantine";
42467
42503
  import { filterSuggestionItems } from "@blocknote/core";
42468
42504
  import { MantineThemeContext, useMantineTheme } from "@mantine/core";
@@ -43547,6 +43583,34 @@ function cleanEmptyEditable(el) {
43547
43583
  el.innerHTML = "";
43548
43584
  }
43549
43585
  }
43586
+ function isSelectionInsideRoot(selection, root) {
43587
+ const anchor = selection.anchorNode;
43588
+ const focus = selection.focusNode;
43589
+ return !!anchor && !!focus && root.contains(anchor) && root.contains(focus);
43590
+ }
43591
+ function placeCaretAfter(node) {
43592
+ const selection = window.getSelection();
43593
+ if (!selection) return;
43594
+ const range = document.createRange();
43595
+ range.setStartAfter(node);
43596
+ range.collapse(true);
43597
+ selection.removeAllRanges();
43598
+ selection.addRange(range);
43599
+ }
43600
+ function insertPlainTextAtSelection(root, text) {
43601
+ const selection = window.getSelection();
43602
+ if (!selection || selection.rangeCount === 0 || !isSelectionInsideRoot(selection, root)) {
43603
+ const textNode2 = document.createTextNode(text);
43604
+ root.appendChild(textNode2);
43605
+ placeCaretAfter(textNode2);
43606
+ return;
43607
+ }
43608
+ const range = selection.getRangeAt(0);
43609
+ range.deleteContents();
43610
+ const textNode = document.createTextNode(text);
43611
+ range.insertNode(textNode);
43612
+ placeCaretAfter(textNode);
43613
+ }
43550
43614
  function PageTitle({ editor, editable }) {
43551
43615
  const [title, setTitle] = useState184("");
43552
43616
  const [hasIcon, setHasIcon] = useState184(false);
@@ -43642,8 +43706,12 @@ function PageTitle({ editor, editable }) {
43642
43706
  }, [editor]);
43643
43707
  const handlePaste = useCallback171((e) => {
43644
43708
  e.preventDefault();
43645
- const text = e.clipboardData.getData("text/plain").replace(/\n/g, " ");
43646
- document.execCommand("insertText", false, text);
43709
+ const text = e.clipboardData.getData("text/plain").replace(/\r?\n/g, " ");
43710
+ if (titleRef.current) {
43711
+ insertPlainTextAtSelection(titleRef.current, text);
43712
+ cleanEmptyEditable(titleRef.current);
43713
+ setTitle(titleRef.current.textContent || "");
43714
+ }
43647
43715
  }, []);
43648
43716
  return /* @__PURE__ */ React371.createElement(Box73, { maw: 900, mx: "auto", w: "100%" }, /* @__PURE__ */ React371.createElement(
43649
43717
  Box73,
@@ -44086,7 +44154,7 @@ function IxoEditorContent({
44086
44154
  onChange,
44087
44155
  onSelectionChange
44088
44156
  },
44089
- config.slashMenu && /* @__PURE__ */ React373.createElement(
44157
+ config.slashMenu && /* @__PURE__ */ React373.createElement(React373.Fragment, null, /* @__PURE__ */ React373.createElement(
44090
44158
  SuggestionMenuController,
44091
44159
  {
44092
44160
  triggerCharacter: "/",
@@ -44108,16 +44176,17 @@ function IxoEditorContent({
44108
44176
  return filterSuggestionItems(allItems, query);
44109
44177
  }
44110
44178
  }
44111
- ),
44179
+ ), /* @__PURE__ */ React373.createElement(GridSuggestionMenuController, { triggerCharacter: ":", columns: 10, minQueryLength: 2 })),
44112
44180
  children
44113
44181
  );
44114
44182
  return /* @__PURE__ */ React373.createElement("div", { style: { display: "flex", height: "100%", width: "100%", gap: 0 } }, /* @__PURE__ */ React373.createElement(
44115
44183
  "div",
44116
44184
  {
44117
- className: `ixo-editor ixo-editor--theme-${config.theme} ${className}`,
44185
+ className: `ixo-editor ixo-editor--theme-${config.theme}${isEditable ? "" : " ixo-editor--readonly"} ${className}`,
44118
44186
  style: {
44119
44187
  width: isPanelVisible && isPanelOpen ? "50%" : "100%",
44120
- transition: "width 0.2s ease"
44188
+ transition: "width 0.2s ease",
44189
+ ...isEditable ? {} : { caretColor: "transparent" }
44121
44190
  }
44122
44191
  },
44123
44192
  /* @__PURE__ */ React373.createElement(CoverImage, { coverImageUrl, logoUrl }),
@@ -44948,4 +45017,4 @@ export {
44948
45017
  getExtraSlashMenuItems,
44949
45018
  useCreateIxoEditor
44950
45019
  };
44951
- //# sourceMappingURL=chunk-4QAMDIPO.mjs.map
45020
+ //# sourceMappingURL=chunk-MOPZZGGR.mjs.map