@ixo/editor 5.24.0 → 5.25.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.
@@ -65,7 +65,7 @@ import {
65
65
  transformSurveyToCredentialSubject,
66
66
  updateXeroWorkReviewPayloadForEditor,
67
67
  upsertXeroWorkItemForEditor
68
- } from "./chunk-UWRUVSMP.mjs";
68
+ } from "./chunk-UMS6GCME.mjs";
69
69
 
70
70
  // src/mantine/hooks/useCreateIxoEditor.ts
71
71
  import { useCreateBlockNote } from "@blocknote/react";
@@ -22241,7 +22241,7 @@ import { IconCheck as IconCheck15, IconClock as IconClock11, IconContract as Ico
22241
22241
 
22242
22242
  // src/mantine/blocks/action/template/GeneralTab.tsx
22243
22243
  import React233, { useEffect as useEffect72, useMemo as useMemo85, useState as useState89 } from "react";
22244
- import { Group as Group83, Stack as Stack152, Text as Text130, Button as Button39, ActionIcon as ActionIcon33, Paper as Paper16, Select as Select5, Box as Box43 } from "@mantine/core";
22244
+ import { Group as Group83, Stack as Stack152, Text as Text130, Button as Button39, ActionIcon as ActionIcon33, Paper as Paper16, Select as Select5, Box as Box43, Checkbox as Checkbox12 } from "@mantine/core";
22245
22245
  import { IconBolt as IconBolt7, IconTrash as IconTrash8, IconPlus as IconPlus7, IconSparkles as IconSparkles5, IconBell as IconBell2, IconCheckbox as IconCheckbox3 } from "@tabler/icons-react";
22246
22246
 
22247
22247
  // src/mantine/components/Base/BaseIconCombobox.tsx
@@ -22579,8 +22579,21 @@ function BarrierSourcesEditor({
22579
22579
  onChange: (e) => handleUpdate(index, { alias: e.currentTarget.value.replace(/[^a-zA-Z0-9_]/g, "") }),
22580
22580
  size: "xs"
22581
22581
  }
22582
- ), src.alias && /* @__PURE__ */ React233.createElement(Text130, { size: "xs", c: "dimmed" }, "Access payload via: trigger.payload.", src.alias, ".*")));
22583
- }), /* @__PURE__ */ React233.createElement(Button39, { size: "xs", variant: "light", leftSection: /* @__PURE__ */ React233.createElement(IconPlus7, { size: 14 }), onClick: handleAdd }, "Add Source"), sources.length > 0 && sources.every((s) => s.sourceBlockId && s.eventName && s.alias) && /* @__PURE__ */ React233.createElement(Box43, { pl: 4 }, /* @__PURE__ */ React233.createElement(Text130, { size: "xs", c: "dimmed" }, "All ", sources.length, " events must fire before this block is queued. Payloads are merged by alias.")));
22582
+ ), src.alias && /* @__PURE__ */ React233.createElement(Text130, { size: "xs", c: "dimmed" }, "Access payload via: trigger.payload.", src.alias, ".*"), /* @__PURE__ */ React233.createElement(
22583
+ Checkbox12,
22584
+ {
22585
+ label: "Optional source",
22586
+ description: "Don't wait for this event. Queue once the required sources fire; merge this payload only if it arrived.",
22587
+ checked: src.optional === true,
22588
+ onChange: (e) => handleUpdate(index, { optional: e.currentTarget.checked }),
22589
+ size: "xs"
22590
+ }
22591
+ )));
22592
+ }), /* @__PURE__ */ React233.createElement(Button39, { size: "xs", variant: "light", leftSection: /* @__PURE__ */ React233.createElement(IconPlus7, { size: 14 }), onClick: handleAdd }, "Add Source"), sources.length > 0 && sources.every((s) => s.sourceBlockId && s.eventName && s.alias) && /* @__PURE__ */ React233.createElement(Box43, { pl: 4 }, /* @__PURE__ */ React233.createElement(Text130, { size: "xs", c: "dimmed" }, (() => {
22593
+ const required = sources.filter((s) => s.optional !== true).length;
22594
+ const optional = sources.length - required;
22595
+ return optional > 0 ? `${required} required event${required === 1 ? "" : "s"} must fire before this block is queued${optional > 0 ? `; ${optional} optional event${optional === 1 ? "" : "s"} merged if present` : ""}. Payloads are merged by alias.` : `All ${sources.length} events must fire before this block is queued. Payloads are merged by alias.`;
22596
+ })())));
22584
22597
  }
22585
22598
  function GenericInputsEditor({ inputs, onInputsChange, editor, blockId }) {
22586
22599
  const [localInputs, setLocalInputs] = useState89(() => parseInputPairs(inputs));
@@ -24643,7 +24656,7 @@ var ListDomainFlowsConfig = ({ inputs, onInputsChange }) => {
24643
24656
 
24644
24657
  // src/mantine/blocks/action/actionTypes/pod/listDomainFlows/ListDomainFlowsFlowDetail.tsx
24645
24658
  import React251, { useCallback as useCallback85, useEffect as useEffect84, useMemo as useMemo94, useRef as useRef23, useState as useState106 } from "react";
24646
- import { ActionIcon as ActionIcon37, Alert as Alert39, Badge as Badge44, Box as Box51, Button as Button46, Checkbox as Checkbox12, Group as Group92, Loader as Loader37, Stack as Stack169, Text as Text147, Tooltip as Tooltip25 } from "@mantine/core";
24659
+ import { ActionIcon as ActionIcon37, Alert as Alert39, Badge as Badge44, Box as Box51, Button as Button46, Checkbox as Checkbox13, Group as Group92, Loader as Loader37, Stack as Stack169, Text as Text147, Tooltip as Tooltip25 } from "@mantine/core";
24647
24660
  import { IconAlertCircle as IconAlertCircle21, IconArrowLeft as IconArrowLeft7, IconCheck as IconCheck18, IconFolders, IconRefresh as IconRefresh7, IconTemplate } from "@tabler/icons-react";
24648
24661
  function templateSelectionKey(protocolDid, template) {
24649
24662
  return `${protocolDid}::${template.sourceRoomId}`;
@@ -24834,7 +24847,7 @@ var ListDomainFlowsFlowDetail = ({ inputs, block, runtime, updateRuntime, isDisa
24834
24847
  backgroundColor: checked ? "var(--mantine-color-dark-6)" : "var(--mantine-color-dark-7)"
24835
24848
  }
24836
24849
  },
24837
- /* @__PURE__ */ React251.createElement(Group92, { wrap: "nowrap", gap: "sm", align: "center" }, /* @__PURE__ */ React251.createElement(Checkbox12, { checked, disabled, onChange: (event) => toggleTemplate(protocol.protocolDid, template, event.currentTarget.checked) }), /* @__PURE__ */ React251.createElement(Stack169, { gap: 2, style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React251.createElement(Group92, { gap: "xs", wrap: "nowrap" }, /* @__PURE__ */ React251.createElement(Text147, { fw: 500, size: "sm", lineClamp: 1 }, template.label), template.alreadyImported && /* @__PURE__ */ React251.createElement(Badge44, { size: "xs", color: "gray", variant: "light" }, "imported")), /* @__PURE__ */ React251.createElement(Text147, { size: "xs", c: "dimmed", lineClamp: 1, ff: "monospace" }, template.path || template.sourceRoomId)))
24850
+ /* @__PURE__ */ React251.createElement(Group92, { wrap: "nowrap", gap: "sm", align: "center" }, /* @__PURE__ */ React251.createElement(Checkbox13, { checked, disabled, onChange: (event) => toggleTemplate(protocol.protocolDid, template, event.currentTarget.checked) }), /* @__PURE__ */ React251.createElement(Stack169, { gap: 2, style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React251.createElement(Group92, { gap: "xs", wrap: "nowrap" }, /* @__PURE__ */ React251.createElement(Text147, { fw: 500, size: "sm", lineClamp: 1 }, template.label), template.alreadyImported && /* @__PURE__ */ React251.createElement(Badge44, { size: "xs", color: "gray", variant: "light" }, "imported")), /* @__PURE__ */ React251.createElement(Text147, { size: "xs", c: "dimmed", lineClamp: 1, ff: "monospace" }, template.path || template.sourceRoomId)))
24838
24851
  );
24839
24852
  };
24840
24853
  return /* @__PURE__ */ React251.createElement(Stack169, { gap: "md" }, /* @__PURE__ */ React251.createElement(Stack169, { gap: 2 }, /* @__PURE__ */ React251.createElement(Text147, { fw: 600 }, block?.props?.title || "Linked Flows"), /* @__PURE__ */ React251.createElement(Text147, { size: "sm", c: "dimmed" }, block?.props?.description || "Choose flow templates from protocol deeds. You can select templates across multiple deeds.")), loading && /* @__PURE__ */ React251.createElement(Group92, { justify: "center", py: "sm" }, /* @__PURE__ */ React251.createElement(Loader37, { size: "sm" }), /* @__PURE__ */ React251.createElement(Text147, { size: "sm", c: "dimmed" }, "Loading protocol templates...")), error && /* @__PURE__ */ React251.createElement(Alert39, { icon: /* @__PURE__ */ React251.createElement(IconAlertCircle21, { size: 16 }), color: "red", styles: actionAlertStyles }, /* @__PURE__ */ React251.createElement(Text147, { size: "sm" }, error)), !loading && !error && protocols.length === 0 && /* @__PURE__ */ React251.createElement(Text147, { size: "sm", c: "dimmed", ta: "center", py: "sm" }, "No protocol deeds with templates were found."), !loading && !error && protocols.length > 0 && view === "deeds" && /* @__PURE__ */ React251.createElement(Stack169, { gap: "xs" }, /* @__PURE__ */ React251.createElement(Group92, { justify: "space-between", gap: "sm" }, /* @__PURE__ */ React251.createElement(Text147, { size: "xs", fw: 600, c: "dimmed" }, "PROTOCOL DEEDS"), /* @__PURE__ */ React251.createElement(Tooltip25, { label: "Refresh protocol deeds", withArrow: true }, /* @__PURE__ */ React251.createElement(ActionIcon37, { variant: "subtle", size: "sm", onClick: () => loadProtocols("refresh"), loading: refreshing, disabled: isDisabled }, /* @__PURE__ */ React251.createElement(IconRefresh7, { size: 16 })))), protocols.map((protocol) => {
@@ -27256,7 +27269,7 @@ function buildBlockOptions(editorDocument, actionType, excludeBlockId) {
27256
27269
 
27257
27270
  // src/mantine/blocks/action/actionTypes/evaluateClaim/EvaluateClaimFlowDetail.tsx
27258
27271
  import React266, { useCallback as useCallback96, useEffect as useEffect95, useMemo as useMemo105, useRef as useRef31, useState as useState119 } from "react";
27259
- import { ActionIcon as ActionIcon42, Alert as Alert50, Box as Box57, Button as Button53, Checkbox as Checkbox13, Divider as Divider22, Group as Group101, Loader as Loader48, ScrollArea as ScrollArea8, Stack as Stack182, Text as Text160, UnstyledButton as UnstyledButton5 } from "@mantine/core";
27272
+ import { ActionIcon as ActionIcon42, Alert as Alert50, Box as Box57, Button as Button53, Checkbox as Checkbox14, Divider as Divider22, Group as Group101, Loader as Loader48, ScrollArea as ScrollArea8, Stack as Stack182, Text as Text160, UnstyledButton as UnstyledButton5 } from "@mantine/core";
27260
27273
  import { IconArrowLeft as IconArrowLeft10, IconCheck as IconCheck22, IconFilter as IconFilter2 } from "@tabler/icons-react";
27261
27274
  import { SurveyModel as SurveyModel11 } from "@ixo/surveys";
27262
27275
 
@@ -27695,7 +27708,7 @@ var EvaluateClaimFlowDetail = ({
27695
27708
  const [authChecking] = useState119(false);
27696
27709
  const [authError] = useState119(null);
27697
27710
  const [, setAuthRetryKey] = useState119(0);
27698
- const [profilesByDid] = useState119({});
27711
+ const [profilesByDid, setProfilesByDid] = useState119({});
27699
27712
  const [disputeDetails] = useState119(null);
27700
27713
  const [loadingDispute] = useState119(false);
27701
27714
  const [evaluationOutcomePatch] = useState119(null);
@@ -27887,6 +27900,42 @@ var EvaluateClaimFlowDetail = ({
27887
27900
  if (!deedDid || !collectionId) return;
27888
27901
  void refreshClaims();
27889
27902
  }, [deedDid, collectionId, refreshClaims]);
27903
+ useEffect95(() => {
27904
+ let mounted = true;
27905
+ const dids = Array.from(new Set(claims.map((claim) => claim.agentDid).filter(Boolean)));
27906
+ const missing = dids.filter((did) => !profilesByDid[did]);
27907
+ if (missing.length === 0)
27908
+ return () => {
27909
+ mounted = false;
27910
+ };
27911
+ const loadProfiles = async () => {
27912
+ const handlers2 = handlersRef.current;
27913
+ const results = await Promise.all(
27914
+ missing.map(async (did) => {
27915
+ try {
27916
+ const profile = await handlers2.getMatrixInfoPerDid(did);
27917
+ return [did, profile];
27918
+ } catch {
27919
+ return [did, null];
27920
+ }
27921
+ })
27922
+ );
27923
+ if (!mounted) return;
27924
+ setProfilesByDid((prev) => {
27925
+ const next = { ...prev };
27926
+ results.forEach(([did, profile]) => {
27927
+ if (profile) {
27928
+ next[did] = profile;
27929
+ }
27930
+ });
27931
+ return next;
27932
+ });
27933
+ };
27934
+ void loadProfiles();
27935
+ return () => {
27936
+ mounted = false;
27937
+ };
27938
+ }, [claims, profilesByDid]);
27890
27939
  const loadClaimDetail = useCallback96(
27891
27940
  async (claim) => {
27892
27941
  const handlers2 = handlersRef.current;
@@ -28197,7 +28246,7 @@ var EvaluateClaimFlowDetail = ({
28197
28246
  disabled: isDisabled || submitting
28198
28247
  }
28199
28248
  ))), /* @__PURE__ */ React266.createElement(Button53, { variant: "light", size: "xs", onClick: addPaymentRow, disabled: isDisabled || submitting }, t("actionTypes.evaluateClaim.flow.payment.addPayment", { defaultValue: "Add Payment" }))), /* @__PURE__ */ React266.createElement(
28200
- Checkbox13,
28249
+ Checkbox14,
28201
28250
  {
28202
28251
  label: t("actionTypes.evaluateClaim.flow.generateUdid", { defaultValue: "Generate UDID proof before signing" }),
28203
28252
  checked: createUdid,
@@ -34096,7 +34145,7 @@ import React303, { useCallback as useCallback133, useEffect as useEffect126, use
34096
34145
  import { Divider as Divider34, Group as Group117, Stack as Stack219, Text as Text192 } from "@mantine/core";
34097
34146
 
34098
34147
  // src/mantine/blocks/action/actionTypes/xero/_shared/XeroBankAccountPicker.tsx
34099
- import React302, { useCallback as useCallback132, useEffect as useEffect125, useState as useState156 } from "react";
34148
+ import React302, { useCallback as useCallback132, useEffect as useEffect125, useRef as useRef33, useState as useState156 } from "react";
34100
34149
  import { ActionIcon as ActionIcon45, Group as Group116, Loader as Loader62, Stack as Stack218, Text as Text191 } from "@mantine/core";
34101
34150
  import { IconRefresh as IconRefresh12 } from "@tabler/icons-react";
34102
34151
  var XERO_LIST_ACCOUNTS_SLUG = "XERO_LIST_ACCOUNTS";
@@ -34148,9 +34197,16 @@ var XeroBankAccountPicker = ({
34148
34197
  setLoading(false);
34149
34198
  }
34150
34199
  }, [connectedAccountId, handlers]);
34200
+ const autoFetchedForRef = useRef33(null);
34151
34201
  useEffect125(() => {
34202
+ if (!connectedAccountId) {
34203
+ autoFetchedForRef.current = null;
34204
+ return;
34205
+ }
34206
+ if (autoFetchedForRef.current === connectedAccountId) return;
34207
+ autoFetchedForRef.current = connectedAccountId;
34152
34208
  void fetchBankAccounts();
34153
- }, [fetchBankAccounts]);
34209
+ }, [connectedAccountId]);
34154
34210
  const valueHasRef = value.includes("{{");
34155
34211
  const showPicker = !valueHasRef && bankAccounts.length > 0 && !!connectedAccountId;
34156
34212
  const options = bankAccounts.map((a) => ({
@@ -36039,7 +36095,7 @@ var OracleStoreSecretsConfig = ({ inputs, onInputsChange }) => {
36039
36095
  };
36040
36096
 
36041
36097
  // src/mantine/blocks/action/actionTypes/oracleStoreSecrets/OracleStoreSecretsFlowDetail.tsx
36042
- import React324, { useCallback as useCallback152, useEffect as useEffect137, useMemo as useMemo135, useRef as useRef33, useState as useState167 } from "react";
36098
+ import React324, { useCallback as useCallback152, useEffect as useEffect137, useMemo as useMemo135, useRef as useRef34, useState as useState167 } from "react";
36043
36099
  import { Alert as Alert79, Button as Button75, Collapse as Collapse12, Divider as Divider37, Group as Group128, Loader as Loader72, Stack as Stack240, Text as Text213 } from "@mantine/core";
36044
36100
  import { IconAlertCircle as IconAlertCircle34, IconCheck as IconCheck35, IconChevronDown as IconChevronDown12, IconChevronUp as IconChevronUp6, IconLock } from "@tabler/icons-react";
36045
36101
  var EXPECTED_SECRETS = ["SECP_MNEMONIC", "MATRIX_ORACLE_ADMIN_PASSWORD", "MATRIX_ORACLE_ADMIN_ACCESS_TOKEN", "MATRIX_RECOVERY_PHRASE", "MATRIX_VALUE_PIN", "OPEN_ROUTER_API_KEY"];
@@ -36098,7 +36154,7 @@ var OracleStoreSecretsFlowDetail = ({ inputs, editor, block, runtime, updateRunt
36098
36154
  const [showAdditional, setShowAdditional] = useState167(false);
36099
36155
  const [networkConstants, setNetworkConstants] = useState167(null);
36100
36156
  const [isLoadingConstants, setIsLoadingConstants] = useState167(false);
36101
- const constantsFetchRef = useRef33(false);
36157
+ const constantsFetchRef = useRef34(false);
36102
36158
  const handleSaveOpenRouter = useCallback152(async () => {
36103
36159
  if (!openRouterDraft) return;
36104
36160
  if (!resolvedInputs.publicKeyMultibase) {
@@ -36166,7 +36222,7 @@ var OracleStoreSecretsFlowDetail = ({ inputs, editor, block, runtime, updateRunt
36166
36222
  console.error("[oracle.storeSecrets] failed", { message, err });
36167
36223
  }
36168
36224
  }, [executeAction, isDisabled, isRunning, hasProof, inputsReady, hasOpenRouter, openRouterJwe, resolvedInputs, runtime.state, services, updateRuntime, missingFields]);
36169
- const idempotencyCheckRef = useRef33(false);
36225
+ const idempotencyCheckRef = useRef34(false);
36170
36226
  useEffect137(() => {
36171
36227
  if (idempotencyCheckRef.current) return;
36172
36228
  if (!inputsReady) return;
@@ -36791,7 +36847,7 @@ var OracleStoreSecretsAndConfigConfig = ({ inputs, onInputsChange }) => {
36791
36847
  };
36792
36848
 
36793
36849
  // src/mantine/blocks/action/actionTypes/oracleStoreSecretsAndConfig/OracleStoreSecretsAndConfigFlowDetail.tsx
36794
- import React328, { useCallback as useCallback156, useEffect as useEffect140, useMemo as useMemo137, useRef as useRef34, useState as useState170 } from "react";
36850
+ import React328, { useCallback as useCallback156, useEffect as useEffect140, useMemo as useMemo137, useRef as useRef35, useState as useState170 } from "react";
36795
36851
  import { Alert as Alert81, Button as Button77, Collapse as Collapse13, Divider as Divider40, Group as Group130, Loader as Loader74, Stack as Stack244, Text as Text217 } from "@mantine/core";
36796
36852
  import { IconAlertCircle as IconAlertCircle36, IconCheck as IconCheck37, IconChevronDown as IconChevronDown13, IconChevronUp as IconChevronUp7, IconLock as IconLock2 } from "@tabler/icons-react";
36797
36853
  var EXPECTED_SECRETS2 = ["SECP_MNEMONIC", "MATRIX_ORACLE_ADMIN_PASSWORD", "MATRIX_ORACLE_ADMIN_ACCESS_TOKEN", "MATRIX_RECOVERY_PHRASE", "MATRIX_VALUE_PIN", "OPEN_ROUTER_API_KEY"];
@@ -36869,7 +36925,7 @@ var OracleStoreSecretsAndConfigFlowDetail = ({ inputs, editor, block, runtime, u
36869
36925
  const [showAdditional, setShowAdditional] = useState170(false);
36870
36926
  const [networkConstants, setNetworkConstants] = useState170(null);
36871
36927
  const [isLoadingConstants, setIsLoadingConstants] = useState170(false);
36872
- const constantsFetchRef = useRef34(false);
36928
+ const constantsFetchRef = useRef35(false);
36873
36929
  const handleSaveOpenRouter = useCallback156(async () => {
36874
36930
  if (!openRouterDraft) return;
36875
36931
  if (!resolvedInputs.publicKeyMultibase) return;
@@ -36930,7 +36986,7 @@ var OracleStoreSecretsAndConfigFlowDetail = ({ inputs, editor, block, runtime, u
36930
36986
  console.error("[oracle.storeSecretsAndConfig] failed", { message, err });
36931
36987
  }
36932
36988
  }, [executeAction, isDisabled, isRunning, hasProof, inputsReady, hasOpenRouter, openRouterJwe, resolvedInputs, runtime.state, services, updateRuntime, missingFields]);
36933
- const idempotencyCheckRef = useRef34(false);
36989
+ const idempotencyCheckRef = useRef35(false);
36934
36990
  useEffect140(() => {
36935
36991
  if (idempotencyCheckRef.current) return;
36936
36992
  if (!inputsReady) return;
@@ -37276,7 +37332,7 @@ var OracleConfigureOracleConfig = ({ inputs, onInputsChange }) => {
37276
37332
  };
37277
37333
 
37278
37334
  // src/mantine/blocks/action/actionTypes/oracleConfigureOracle/OracleConfigureOracleFlowDetail.tsx
37279
- import React330, { useCallback as useCallback158, useEffect as useEffect142, useMemo as useMemo138, useRef as useRef35, useState as useState172 } from "react";
37335
+ import React330, { useCallback as useCallback158, useEffect as useEffect142, useMemo as useMemo138, useRef as useRef36, useState as useState172 } from "react";
37280
37336
  import { Alert as Alert82, Button as Button78, Collapse as Collapse14, Divider as Divider42, Group as Group131, Loader as Loader75, Stack as Stack246, Text as Text219 } from "@mantine/core";
37281
37337
  import { IconAlertCircle as IconAlertCircle37, IconCheck as IconCheck38, IconChevronDown as IconChevronDown14, IconChevronUp as IconChevronUp8, IconLock as IconLock4 } from "@tabler/icons-react";
37282
37338
  var EXPECTED_SECRETS3 = ["SECP_MNEMONIC", "MATRIX_ORACLE_ADMIN_PASSWORD", "MATRIX_ORACLE_ADMIN_ACCESS_TOKEN", "MATRIX_RECOVERY_PHRASE", "MATRIX_VALUE_PIN", "OPEN_ROUTER_API_KEY"];
@@ -37374,7 +37430,7 @@ var OracleConfigureOracleFlowDetail = ({ inputs, editor, block, runtime, updateR
37374
37430
  const [showAdditional, setShowAdditional] = useState172(false);
37375
37431
  const [networkConstants, setNetworkConstants] = useState172(null);
37376
37432
  const [isLoadingConstants, setIsLoadingConstants] = useState172(false);
37377
- const constantsFetchRef = useRef35(false);
37433
+ const constantsFetchRef = useRef36(false);
37378
37434
  const handleSaveOpenRouter = useCallback158(async () => {
37379
37435
  if (!openRouterDraft) return;
37380
37436
  if (!resolvedInputs.publicKeyMultibase) return;
@@ -37450,7 +37506,7 @@ var OracleConfigureOracleFlowDetail = ({ inputs, editor, block, runtime, updateR
37450
37506
  updateRuntime,
37451
37507
  missingFields
37452
37508
  ]);
37453
- const idempotencyCheckRef = useRef35(false);
37509
+ const idempotencyCheckRef = useRef36(false);
37454
37510
  useEffect142(() => {
37455
37511
  if (idempotencyCheckRef.current) return;
37456
37512
  if (!inputsReady) return;
@@ -38125,7 +38181,7 @@ import React341, { useCallback as useCallback163 } from "react";
38125
38181
  import { IconSettings as IconSettings20 } from "@tabler/icons-react";
38126
38182
 
38127
38183
  // src/mantine/blocks/location/template/GeneralTab.tsx
38128
- import React340, { useEffect as useEffect144, useRef as useRef36, useState as useState175 } from "react";
38184
+ import React340, { useEffect as useEffect144, useRef as useRef37, useState as useState175 } from "react";
38129
38185
  import { Box as Box66, Divider as Divider43, Stack as Stack253, Text as Text226 } from "@mantine/core";
38130
38186
 
38131
38187
  // src/core/hooks/useUnlMap.ts
@@ -38302,10 +38358,10 @@ var GeneralTab17 = ({ title, description, latitude, longitude, onTitleChange, on
38302
38358
  const [mapError, setMapError] = useState175(null);
38303
38359
  const { status, UnlSdk } = useUnlMap();
38304
38360
  const { mapConfig } = useBlocknoteContext();
38305
- const markerRef = useRef36(null);
38306
- const mapRef = useRef36(null);
38307
- const wrapperRef = useRef36(null);
38308
- const containerRef = useRef36(null);
38361
+ const markerRef = useRef37(null);
38362
+ const mapRef = useRef37(null);
38363
+ const wrapperRef = useRef37(null);
38364
+ const containerRef = useRef37(null);
38309
38365
  useEffect144(() => {
38310
38366
  setLocalTitle(title);
38311
38367
  }, [title]);
@@ -38438,15 +38494,15 @@ var TemplateConfig17 = ({ editor, block }) => {
38438
38494
  };
38439
38495
 
38440
38496
  // src/mantine/blocks/location/components/LocationMap.tsx
38441
- import React342, { useEffect as useEffect145, useRef as useRef37, useState as useState176 } from "react";
38497
+ import React342, { useEffect as useEffect145, useRef as useRef38, useState as useState176 } from "react";
38442
38498
  import { Box as Box67, Flex as Flex36, Loader as Loader79, Text as Text227 } from "@mantine/core";
38443
38499
  var UnlMap = ({ w = "100%", h = 200, latitude, longitude, zoom = 5, showMarker = true, showTilesControl = false }) => {
38444
38500
  const [mapError, setMapError] = useState176(null);
38445
38501
  const { mapConfig } = useBlocknoteContext();
38446
- const wrapperRef = useRef37(null);
38447
- const containerRef = useRef37(null);
38448
- const mapRef = useRef37(null);
38449
- const markerRef = useRef37(null);
38502
+ const wrapperRef = useRef38(null);
38503
+ const containerRef = useRef38(null);
38504
+ const mapRef = useRef38(null);
38505
+ const markerRef = useRef38(null);
38450
38506
  const { status, UnlSdk } = useUnlMap();
38451
38507
  useEffect145(() => {
38452
38508
  if (status !== "ready" || !UnlSdk || mapRef.current || !containerRef.current || !wrapperRef.current) return;
@@ -39059,7 +39115,7 @@ var SkillsTemplateView = ({ editor: _editor, block }) => {
39059
39115
  // src/mantine/blocks/skills/flow/SkillsFlowView.tsx
39060
39116
  import { ActionIcon as ActionIcon49, Badge as Badge55, Button as Button83, Collapse as Collapse16, Group as Group142, Loader as Loader80, Paper as Paper21, Stack as Stack261, Text as Text235, Tooltip as Tooltip32 } from "@mantine/core";
39061
39117
  import { IconBrain as IconBrain3, IconCheck as IconCheck43, IconPencil, IconPlus as IconPlus12, IconTrash as IconTrash12, IconX as IconX17 } from "@tabler/icons-react";
39062
- import React360, { useCallback as useCallback167, useEffect as useEffect147, useMemo as useMemo148, useRef as useRef38, useState as useState179 } from "react";
39118
+ import React360, { useCallback as useCallback167, useEffect as useEffect147, useMemo as useMemo148, useRef as useRef39, useState as useState179 } from "react";
39063
39119
  function parseSkills2(raw) {
39064
39120
  try {
39065
39121
  const parsed = JSON.parse(raw || "[]");
@@ -39091,7 +39147,7 @@ var SkillsFlowView = ({ editor, block }) => {
39091
39147
  const [validatingUrls, setValidatingUrls] = useState179({});
39092
39148
  const [capsules, setCapsules] = useState179([]);
39093
39149
  const [loadingCapsules, setLoadingCapsules] = useState179(false);
39094
- const capsulesFetchedRef = useRef38(false);
39150
+ const capsulesFetchedRef = useRef39(false);
39095
39151
  useEffect147(() => {
39096
39152
  if (capsulesFetchedRef.current || !handlers.getSkills) return;
39097
39153
  capsulesFetchedRef.current = true;
@@ -39099,7 +39155,7 @@ var SkillsFlowView = ({ editor, block }) => {
39099
39155
  handlers.getSkills().then((r) => setCapsules(r.capsules || [])).catch((err) => console.error("[skills] Failed to fetch capsules:", err)).finally(() => setLoadingCapsules(false));
39100
39156
  }, [handlers.getSkills]);
39101
39157
  const [network, setNetwork] = useState179("");
39102
- const networkFetchedRef = useRef38(false);
39158
+ const networkFetchedRef = useRef39(false);
39103
39159
  useEffect147(() => {
39104
39160
  if (networkFetchedRef.current || !handlers.getNetwork) return;
39105
39161
  networkFetchedRef.current = true;
@@ -40207,14 +40263,14 @@ import { useCreateBlockNote as useCreateBlockNote2 } from "@blocknote/react";
40207
40263
  import { BlockNoteSchema as BlockNoteSchema2, defaultBlockSpecs as defaultBlockSpecs2, defaultInlineContentSpecs as defaultInlineContentSpecs2 } from "@blocknote/core";
40208
40264
 
40209
40265
  // src/core/hooks/useMatrixProvider.ts
40210
- import { useEffect as useEffect149, useState as useState181, useRef as useRef39, useCallback as useCallback169, useMemo as useMemo151 } from "react";
40266
+ import { useEffect as useEffect149, useState as useState181, useRef as useRef40, useCallback as useCallback169, useMemo as useMemo151 } from "react";
40211
40267
  import { MatrixProvider } from "@ixo/matrix-crdt";
40212
40268
  function useMatrixProvider({ matrixClient, roomId, yDoc }) {
40213
40269
  const [matrixProvider, setProvider] = useState181(null);
40214
40270
  const [status, setStatus] = useState181("disconnected");
40215
- const isMountedRef = useRef39(true);
40216
- const providerRef = useRef39(null);
40217
- const retryTimeoutRef = useRef39(null);
40271
+ const isMountedRef = useRef40(true);
40272
+ const providerRef = useRef40(null);
40273
+ const retryTimeoutRef = useRef40(null);
40218
40274
  const providerOptions = useMemo151(
40219
40275
  () => ({
40220
40276
  translator: {
@@ -40312,7 +40368,7 @@ function useCollaborativeYDoc(_options) {
40312
40368
  }
40313
40369
 
40314
40370
  // src/mantine/hooks/useCollaborativeIxoEditor.ts
40315
- import { useMemo as useMemo153, useEffect as useEffect151, useState as useState182, useRef as useRef41 } from "react";
40371
+ import { useMemo as useMemo153, useEffect as useEffect151, useState as useState182, useRef as useRef42 } from "react";
40316
40372
 
40317
40373
  // src/core/lib/matrixMetadata.ts
40318
40374
  var COVER_IMAGE_EVENT_TYPE = "ixo.page.cover_image";
@@ -40581,7 +40637,7 @@ function logInvocation(matrixClient, roomId, invocation) {
40581
40637
  }
40582
40638
 
40583
40639
  // src/mantine/hooks/useFlowLifecycle.ts
40584
- import { useEffect as useEffect150, useCallback as useCallback170, useRef as useRef40 } from "react";
40640
+ import { useEffect as useEffect150, useCallback as useCallback170, useRef as useRef41 } from "react";
40585
40641
 
40586
40642
  // src/mantine/hooks/useFlowTTLCleanup.ts
40587
40643
  function performTTLCleanup(editor) {
@@ -40818,8 +40874,8 @@ function isBlockEnabledInFlow(block, editorDocument) {
40818
40874
  // src/mantine/hooks/useFlowLifecycle.ts
40819
40875
  var DEFAULT_INTERVAL_MS = 3e4;
40820
40876
  function useFlowLifecycle({ editor, connectionStatus, enabled = true }) {
40821
- const hasRunInitialRef = useRef40(false);
40822
- const runningRef = useRef40(false);
40877
+ const hasRunInitialRef = useRef41(false);
40878
+ const runningRef = useRef41(false);
40823
40879
  const runPipeline = useCallback170(async () => {
40824
40880
  if (!editor || runningRef.current) return;
40825
40881
  runningRef.current = true;
@@ -41286,7 +41342,7 @@ function useCreateCollaborativeIxoEditor(options) {
41286
41342
  }
41287
41343
  }, [connectionStatus, root, titleText, permissions.write, options.docId, options.title, memoizedUser.id]);
41288
41344
  const [connectedUsers, setConnectedUsers] = useState182([]);
41289
- const activeBlockIdRef = useRef41(null);
41345
+ const activeBlockIdRef = useRef42(null);
41290
41346
  const awarenessInstance = matrixProvider?.awarenessInstance ?? null;
41291
41347
  useEffect151(() => {
41292
41348
  if (!awarenessInstance || connectionStatus !== "connected") {
@@ -41402,7 +41458,7 @@ function sanitizeThemeForMantine7(theme) {
41402
41458
  }
41403
41459
 
41404
41460
  // src/mantine/components/CommandPalette.tsx
41405
- import React363, { useEffect as useEffect152, useRef as useRef42, useState as useState183, useMemo as useMemo154, useCallback as useCallback171 } from "react";
41461
+ import React363, { useEffect as useEffect152, useRef as useRef43, useState as useState183, useMemo as useMemo154, useCallback as useCallback171 } from "react";
41406
41462
  import { Box as Box70, Text as Text236, Stack as Stack262 } from "@mantine/core";
41407
41463
  var GROUP_ORDER = {
41408
41464
  Headings: 0,
@@ -41432,7 +41488,7 @@ function translateGroupLabel(groupKey, t) {
41432
41488
  return entry ? t(entry.key, { defaultValue: entry.defaultValue }) : groupKey;
41433
41489
  }
41434
41490
  function PaletteItem({ item, isSelected, onClick, id }) {
41435
- const ref = useRef42(null);
41491
+ const ref = useRef43(null);
41436
41492
  const [hovered, setHovered] = useState183(false);
41437
41493
  useEffect152(() => {
41438
41494
  if (isSelected && ref.current) {
@@ -41661,7 +41717,7 @@ function PanelContent({ theme: _theme }) {
41661
41717
  }
41662
41718
 
41663
41719
  // src/mantine/components/CoverImage.tsx
41664
- import React369, { useState as useState187, useRef as useRef43, useEffect as useEffect155, useMemo as useMemo157 } from "react";
41720
+ import React369, { useState as useState187, useRef as useRef44, useEffect as useEffect155, useMemo as useMemo157 } from "react";
41665
41721
  import { Box as Box75, Group as Group146 } from "@mantine/core";
41666
41722
  import { IconMoodSmile, IconPhoto as IconPhoto6, IconSettings as IconSettings23, IconArrowsMove, IconTrash as IconTrash14, IconRefresh as IconRefresh13 } from "@tabler/icons-react";
41667
41723
 
@@ -42149,8 +42205,8 @@ function CoverImage({ coverImageUrl, logoUrl }) {
42149
42205
  const [isHovering, setIsHovering] = useState187(false);
42150
42206
  const [isRepositioning, setIsRepositioning] = useState187(false);
42151
42207
  const [coverPosition, setCoverPosition] = useState187(() => editor?.getPageMetadata?.()?.coverPosition ?? 50);
42152
- const coverFileInputRef = useRef43(null);
42153
- const logoFileInputRef = useRef43(null);
42208
+ const coverFileInputRef = useRef44(null);
42209
+ const logoFileInputRef = useRef44(null);
42154
42210
  const [opened, { open, close }] = useDisclosure7(false);
42155
42211
  const [metadata, setMetadata] = useState187(() => editor?.getPageMetadata?.() || null);
42156
42212
  const settingsPanelContent = useMemo157(() => editor ? /* @__PURE__ */ React369.createElement(FlowSettingsPanel, { editor }) : null, [editor]);
@@ -42445,7 +42501,7 @@ function CoverImage({ coverImageUrl, logoUrl }) {
42445
42501
  }
42446
42502
 
42447
42503
  // src/mantine/components/PageTitle.tsx
42448
- import React370, { useState as useState188, useEffect as useEffect156, useRef as useRef44, useCallback as useCallback173 } from "react";
42504
+ import React370, { useState as useState188, useEffect as useEffect156, useRef as useRef45, useCallback as useCallback173 } from "react";
42449
42505
  import { Box as Box76 } from "@mantine/core";
42450
42506
  var DEFAULT_TITLE = "New page";
42451
42507
  function isUserTitle(name) {
@@ -42492,8 +42548,8 @@ function PageTitle({ editor, editable }) {
42492
42548
  const t = useTranslate();
42493
42549
  const [title, setTitle] = useState188("");
42494
42550
  const [hasIcon, setHasIcon] = useState188(false);
42495
- const titleRef = useRef44(null);
42496
- const isComposing = useRef44(false);
42551
+ const titleRef = useRef45(null);
42552
+ const isComposing = useRef45(false);
42497
42553
  useEffect156(() => {
42498
42554
  if (!editor?._metadataManager) return;
42499
42555
  const metadata = editor._metadataManager.getMetadata();
@@ -42648,7 +42704,7 @@ if (typeof document !== "undefined") {
42648
42704
  }
42649
42705
 
42650
42706
  // src/mantine/components/ExternalDropZone.tsx
42651
- import React371, { useCallback as useCallback174, useEffect as useEffect157, useRef as useRef45, useState as useState189 } from "react";
42707
+ import React371, { useCallback as useCallback174, useEffect as useEffect157, useRef as useRef46, useState as useState189 } from "react";
42652
42708
  import { Box as Box77 } from "@mantine/core";
42653
42709
  var SCROLL_ZONE_SIZE = 80;
42654
42710
  var SCROLL_SPEED = 12;
@@ -42661,14 +42717,14 @@ var ExternalDropZone = ({
42661
42717
  onPlacementCancel,
42662
42718
  children
42663
42719
  }) => {
42664
- const containerRef = useRef45(null);
42720
+ const containerRef = useRef46(null);
42665
42721
  const [isValidDrag, setIsValidDrag] = useState189(false);
42666
42722
  const [isHoveringInPlacementMode, setIsHoveringInPlacementMode] = useState189(false);
42667
42723
  const [indicatorStyle, setIndicatorStyle] = useState189({});
42668
- const dropPositionRef = useRef45(null);
42669
- const scrollAnimationRef = useRef45(null);
42670
- const scrollDirectionRef = useRef45(null);
42671
- const scrollContainerRef = useRef45(null);
42724
+ const dropPositionRef = useRef46(null);
42725
+ const scrollAnimationRef = useRef46(null);
42726
+ const scrollDirectionRef = useRef46(null);
42727
+ const scrollContainerRef = useRef46(null);
42672
42728
  const getBlockElements = useCallback174(() => {
42673
42729
  if (!containerRef.current) return [];
42674
42730
  const blocks = containerRef.current.querySelectorAll('[data-node-type="blockContainer"]');
@@ -43195,7 +43251,7 @@ import React374 from "react";
43195
43251
 
43196
43252
  // src/mantine/components/DevUcanGrantButton.tsx
43197
43253
  import React373, { useEffect as useEffect158, useMemo as useMemo159, useState as useState190 } from "react";
43198
- import { Alert as Alert86, Badge as Badge56, Button as Button85, Checkbox as Checkbox14, Divider as Divider44, Group as Group147, Loader as Loader81, Modal as Modal4, Paper as Paper22, Select as Select9, Stack as Stack265, Text as Text240 } from "@mantine/core";
43254
+ import { Alert as Alert86, Badge as Badge56, Button as Button85, Checkbox as Checkbox15, Divider as Divider44, Group as Group147, Loader as Loader81, Modal as Modal4, Paper as Paper22, Select as Select9, Stack as Stack265, Text as Text240 } from "@mantine/core";
43199
43255
  import { IconKey as IconKey5, IconShieldPlus as IconShieldPlus5 } from "@tabler/icons-react";
43200
43256
  var FLOW_AGENT_COMMAND_TYPES = [
43201
43257
  "diagnose_blocker",
@@ -43463,7 +43519,7 @@ function DevUcanGrantButton({ editor, handlers: propHandlers }) {
43463
43519
  rightSection: loadingMembers ? /* @__PURE__ */ React373.createElement(Loader81, { size: 14 }) : null
43464
43520
  }
43465
43521
  ), /* @__PURE__ */ React373.createElement(Divider44, null), /* @__PURE__ */ React373.createElement(Stack265, { gap: "xs" }, /* @__PURE__ */ React373.createElement(Group147, { justify: "space-between" }, /* @__PURE__ */ React373.createElement(Text240, { size: "sm", fw: 600 }, "UCAN capabilities"), /* @__PURE__ */ React373.createElement(Group147, { gap: "xs" }, /* @__PURE__ */ React373.createElement(Button85, { size: "compact-xs", variant: "subtle", onClick: () => setSelectedCapabilities(capabilityOptions.map((option) => option.id)) }, "All"), /* @__PURE__ */ React373.createElement(Button85, { size: "compact-xs", variant: "subtle", onClick: () => setSelectedCapabilities([]) }, "None"))), /* @__PURE__ */ React373.createElement(Paper22, { withBorder: true, p: "sm", style: { maxHeight: 360, overflow: "auto" } }, /* @__PURE__ */ React373.createElement(Stack265, { gap: "xs" }, capabilityOptions.map((option) => /* @__PURE__ */ React373.createElement(
43466
- Checkbox14,
43522
+ Checkbox15,
43467
43523
  {
43468
43524
  key: option.id,
43469
43525
  checked: selectedCapabilities.includes(option.id),
@@ -43560,7 +43616,7 @@ function DebugButton({ editor, handlers }) {
43560
43616
  }
43561
43617
 
43562
43618
  // src/mantine/components/PageHeader.tsx
43563
- import React375, { useState as useState191, useRef as useRef46, useEffect as useEffect159 } from "react";
43619
+ import React375, { useState as useState191, useRef as useRef47, useEffect as useEffect159 } from "react";
43564
43620
  function PageHeader({
43565
43621
  title = "New page",
43566
43622
  icon: icon2,
@@ -43574,8 +43630,8 @@ function PageHeader({
43574
43630
  }) {
43575
43631
  const [isMenuOpen, setIsMenuOpen] = useState191(false);
43576
43632
  const [isPrivacyOpen, setIsPrivacyOpen] = useState191(false);
43577
- const menuRef = useRef46(null);
43578
- const privacyRef = useRef46(null);
43633
+ const menuRef = useRef47(null);
43634
+ const privacyRef = useRef47(null);
43579
43635
  useEffect159(() => {
43580
43636
  function handleClickOutside(event) {
43581
43637
  if (menuRef.current && !menuRef.current.contains(event.target)) {
@@ -43934,7 +43990,7 @@ var FlowPermissionsPanel = ({ editor, entityDid, entityName, onGrantPermission,
43934
43990
 
43935
43991
  // src/mantine/components/GrantPermissionModal.tsx
43936
43992
  import React378, { useState as useState194, useCallback as useCallback175 } from "react";
43937
- import { Modal as Modal6, Stack as Stack268, Text as Text243, TextInput as TextInput13, Button as Button88, Group as Group150, Radio as Radio5, Checkbox as Checkbox15, Alert as Alert89, Paper as Paper24, Loader as Loader83, Badge as Badge58, ActionIcon as ActionIcon52, Divider as Divider46, NumberInput as NumberInput7 } from "@mantine/core";
43993
+ import { Modal as Modal6, Stack as Stack268, Text as Text243, TextInput as TextInput13, Button as Button88, Group as Group150, Radio as Radio5, Checkbox as Checkbox16, Alert as Alert89, Paper as Paper24, Loader as Loader83, Badge as Badge58, ActionIcon as ActionIcon52, Divider as Divider46, NumberInput as NumberInput7 } from "@mantine/core";
43938
43994
  import { IconSearch as IconSearch11, IconUser as IconUser15, IconRobot as IconRobot6, IconX as IconX19, IconShieldPlus as IconShieldPlus6 } from "@tabler/icons-react";
43939
43995
  var GrantPermissionModal = ({ opened, onClose, flowUri, blocks, targetBlockId, searchUsers, getOracles, onGrant }) => {
43940
43996
  const singleBlockMode = !!targetBlockId || blocks.length === 1;
@@ -44076,7 +44132,7 @@ var GrantPermissionModal = ({ opened, onClose, flowUri, blocks, targetBlockId, s
44076
44132
  ) : (
44077
44133
  // Multi-block mode: show scope selection
44078
44134
  /* @__PURE__ */ React378.createElement(React378.Fragment, null, /* @__PURE__ */ React378.createElement(Radio5.Group, { value: scopeType, onChange: (v) => setScopeType(v) }, /* @__PURE__ */ React378.createElement(Stack268, { gap: "xs" }, /* @__PURE__ */ React378.createElement(Radio5, { value: "full", label: "Full flow access (can execute any block)" }), /* @__PURE__ */ React378.createElement(Radio5, { value: "blocks", label: "Specific blocks only" }))), scopeType === "blocks" && /* @__PURE__ */ React378.createElement(Paper24, { p: "sm", withBorder: true, style: { maxHeight: 150, overflow: "auto" } }, /* @__PURE__ */ React378.createElement(Stack268, { gap: "xs" }, blocks.map((block) => /* @__PURE__ */ React378.createElement(
44079
- Checkbox15,
44135
+ Checkbox16,
44080
44136
  {
44081
44137
  key: block.id,
44082
44138
  label: block.name || `${block.type} (${block.id.slice(-8)})`,
@@ -44090,8 +44146,8 @@ var GrantPermissionModal = ({ opened, onClose, flowUri, blocks, targetBlockId, s
44090
44146
  }
44091
44147
  }
44092
44148
  )))))
44093
- )), /* @__PURE__ */ React378.createElement(Divider46, null), /* @__PURE__ */ React378.createElement(Stack268, { gap: "xs" }, /* @__PURE__ */ React378.createElement(Checkbox15, { label: "Set expiration", checked: expirationEnabled, onChange: (e) => setExpirationEnabled(e.currentTarget.checked) }), expirationEnabled && /* @__PURE__ */ React378.createElement(NumberInput7, { label: "Expires in (days)", placeholder: "30", value: expirationDays, onChange: setExpirationDays, min: 1, max: 365 })), /* @__PURE__ */ React378.createElement(
44094
- Checkbox15,
44149
+ )), /* @__PURE__ */ React378.createElement(Divider46, null), /* @__PURE__ */ React378.createElement(Stack268, { gap: "xs" }, /* @__PURE__ */ React378.createElement(Checkbox16, { label: "Set expiration", checked: expirationEnabled, onChange: (e) => setExpirationEnabled(e.currentTarget.checked) }), expirationEnabled && /* @__PURE__ */ React378.createElement(NumberInput7, { label: "Expires in (days)", placeholder: "30", value: expirationDays, onChange: setExpirationDays, min: 1, max: 365 })), /* @__PURE__ */ React378.createElement(
44150
+ Checkbox16,
44095
44151
  {
44096
44152
  label: "Recipient can grant permissions to others",
44097
44153
  description: "Allow this recipient to delegate their permissions",
@@ -44218,4 +44274,4 @@ export {
44218
44274
  getExtraSlashMenuItems,
44219
44275
  useCreateIxoEditor
44220
44276
  };
44221
- //# sourceMappingURL=chunk-JJSP3KCK.mjs.map
44277
+ //# sourceMappingURL=chunk-VECEVZ6B.mjs.map