@ixo/editor 5.28.1 → 5.30.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.
@@ -1,7 +1,7 @@
1
- import { a5 as ActionDefinition, a6 as ActionServices, Z as FlowAgentCommand, $ as FlowAgentContext, _ as FlowAgentCommandResult, a0 as FlowAgentExecutor, a2 as FlowAgentNodeSnapshot, a7 as FlowAgentBlockerCause, a3 as FlowAgentPublicNodeState } from '../store-IeJf2yNz.mjs';
2
- export { aj as AcquireFlowAgentLeaseParams, a9 as ActionContext, aa as ActionResult, ax as ActorConstraint, A as AuthorizationResult, B as BaseUcanFlow, X as BuildFlowAgentContextParams, aA as CompiledBlock, aB as CompiledEdge, v as CompiledFlow, aC as CompiledFlowNode, C as CompilerRegistry, aw as ConditionRef, ak as CreateAgentCommandParams, al as EvaluateFlowAgentPolicyParams, E as ExecuteNodeParams, f as ExecutionContext, d as ExecutionOutcome, Y as FlowAgentActor, ao as FlowAgentCommandBase, ap as FlowAgentCommandStatus, aq as FlowAgentCommandType, a1 as FlowAgentLease, ar as FlowAgentLedgerEvent, as as FlowAgentLedgerEventType, at as FlowAgentMaps, am as FlowAgentOrchestratorOptions, au as FlowAgentPolicyDecision, av as FlowAgentRunPhase, x as FlowAgentService, an as FlowAgentServiceOptions, a4 as FlowAgentTickResult, u as FlowCapability, F as FlowRuntimeStateManager, w as FlowStrategy, M as MergeResult, N as NodeActionResult, ab as OutputSchemaField, R as ReadFlowOptions, q as ReadFlowResult, az as RuntimeRef, S as SetupFlowOptions, p as SetupFlowResult, ay as TTLConstraint, aD as TriggerSpec, y as acquireFlowAgentLease, z as appendAgentLedgerEvent, a as buildAuthzFromProps, D as buildFlowAgentContext, b as buildFlowNodeFromBlock, ac as canMatches, G as cleanupExpiredFlowAgentLeases, a8 as clearRuntimeForTemplateClone, l as compileBaseUcanFlow, ad as computeAgentCommandId, H as createAgentCommand, c as createRuntimeStateManager, o as decompileToBaseUcanFlow, I as evaluateFlowAgentPolicy, e as executeNode, J as executeQueuedAgentCommands, k as getActiveEditor, K as getFlowAgentMaps, i as isAuthorized, ae as isCapabilityMatch, af as isExternalMutation, aE as isRuntimeRef, n as mergeCompiledFlows, L as planRalphLoopCommands, O as queueAgentCommand, P as readAgentLedgerEvents, m as readCompiledFlowFromYDoc, h as readFlow, r as readFlowAsBaseUcan, g as readFlowFromEditor, Q as readQueuedAgentCommands, T as releaseFlowAgentLease, ag as requiredCapabilityForCommand, ah as resourceMatches, j as setActiveEditor, s as setupFlowFromBaseUcan, U as tickFlowAgent, ai as updateAgentCommand, V as validateAgentCommand, W as validateFlowAgentLease } from '../store-IeJf2yNz.mjs';
3
- import { a4 as IxoEditorType, f as UcanService, U as UcanDelegationStore, S as StoredDelegation, I as InvocationStore, a5 as FlowNodeRuntimeState, a6 as FlowMetadata, a7 as FlowNode } from '../index-Bdh5jcT4.mjs';
4
- export { af as ActionReadBackMetadata, a9 as ClaimCollectionURI, am as CreateDelegationParams, an as CreateInvocationParams, al as CreateRootDelegationParams, a8 as DID, D as DelegationChainValidationResult, k as DelegationGrant, aa as EvaluationStatus, aj as ExecutionWithInvocationResult, ak as FindProofsResult, ac as FlowNodeAuthzExtension, ag as FlowNodeBase, ah as InvocationRequest, ai as InvocationResult, ab as LinkedClaim, ad as NodeState, ae as ReadBackTerminalState, j as StoredInvocation, i as UcanCapability, g as UcanServiceConfig, h as UcanServiceHandlers, b as createInvocationStore, d as createMemoryInvocationStore, a as createMemoryUcanDelegationStore, c as createUcanDelegationStore, e as createUcanService } from '../index-Bdh5jcT4.mjs';
1
+ import { a5 as ActionDefinition, a6 as ActionServices, Z as FlowAgentCommand, $ as FlowAgentContext, _ as FlowAgentCommandResult, a0 as FlowAgentExecutor, a2 as FlowAgentNodeSnapshot, a7 as FlowAgentBlockerCause, a3 as FlowAgentPublicNodeState } from '../store-Bf9cuTNN.mjs';
2
+ export { aj as AcquireFlowAgentLeaseParams, a9 as ActionContext, aa as ActionResult, ax as ActorConstraint, A as AuthorizationResult, B as BaseUcanFlow, X as BuildFlowAgentContextParams, aA as CompiledBlock, aB as CompiledEdge, v as CompiledFlow, aC as CompiledFlowNode, C as CompilerRegistry, aw as ConditionRef, ak as CreateAgentCommandParams, al as EvaluateFlowAgentPolicyParams, E as ExecuteNodeParams, f as ExecutionContext, d as ExecutionOutcome, Y as FlowAgentActor, ao as FlowAgentCommandBase, ap as FlowAgentCommandStatus, aq as FlowAgentCommandType, a1 as FlowAgentLease, ar as FlowAgentLedgerEvent, as as FlowAgentLedgerEventType, at as FlowAgentMaps, am as FlowAgentOrchestratorOptions, au as FlowAgentPolicyDecision, av as FlowAgentRunPhase, x as FlowAgentService, an as FlowAgentServiceOptions, a4 as FlowAgentTickResult, u as FlowCapability, F as FlowRuntimeStateManager, w as FlowStrategy, M as MergeResult, N as NodeActionResult, ab as OutputSchemaField, R as ReadFlowOptions, q as ReadFlowResult, az as RuntimeRef, S as SetupFlowOptions, p as SetupFlowResult, ay as TTLConstraint, aD as TriggerSpec, y as acquireFlowAgentLease, z as appendAgentLedgerEvent, a as buildAuthzFromProps, D as buildFlowAgentContext, b as buildFlowNodeFromBlock, ac as canMatches, G as cleanupExpiredFlowAgentLeases, a8 as clearRuntimeForTemplateClone, l as compileBaseUcanFlow, ad as computeAgentCommandId, H as createAgentCommand, c as createRuntimeStateManager, o as decompileToBaseUcanFlow, I as evaluateFlowAgentPolicy, e as executeNode, J as executeQueuedAgentCommands, k as getActiveEditor, K as getFlowAgentMaps, i as isAuthorized, ae as isCapabilityMatch, af as isExternalMutation, aE as isRuntimeRef, n as mergeCompiledFlows, L as planRalphLoopCommands, O as queueAgentCommand, P as readAgentLedgerEvents, m as readCompiledFlowFromYDoc, h as readFlow, r as readFlowAsBaseUcan, g as readFlowFromEditor, Q as readQueuedAgentCommands, T as releaseFlowAgentLease, ag as requiredCapabilityForCommand, ah as resourceMatches, j as setActiveEditor, s as setupFlowFromBaseUcan, U as tickFlowAgent, ai as updateAgentCommand, V as validateAgentCommand, W as validateFlowAgentLease } from '../store-Bf9cuTNN.mjs';
3
+ import { a4 as IxoEditorType, f as UcanService, U as UcanDelegationStore, S as StoredDelegation, I as InvocationStore, a5 as FlowNodeRuntimeState, a6 as FlowMetadata, a7 as FlowNode } from '../index-o5BPjp5P.mjs';
4
+ export { af as ActionReadBackMetadata, a9 as ClaimCollectionURI, am as CreateDelegationParams, an as CreateInvocationParams, al as CreateRootDelegationParams, a8 as DID, D as DelegationChainValidationResult, k as DelegationGrant, aa as EvaluationStatus, aj as ExecutionWithInvocationResult, ak as FindProofsResult, ac as FlowNodeAuthzExtension, ag as FlowNodeBase, ah as InvocationRequest, ai as InvocationResult, ab as LinkedClaim, ad as NodeState, ae as ReadBackTerminalState, j as StoredInvocation, i as UcanCapability, g as UcanServiceConfig, h as UcanServiceHandlers, b as createInvocationStore, d as createMemoryInvocationStore, a as createMemoryUcanDelegationStore, c as createUcanDelegationStore, e as createUcanService } from '../index-o5BPjp5P.mjs';
5
5
  import * as Y from 'yjs';
6
6
  import 'matrix-js-sdk';
7
7
  import '@blocknote/core';
@@ -76,7 +76,7 @@ import {
76
76
  validateAgentCommand,
77
77
  validateFlowAgentLease,
78
78
  writeRunRecordAndReconcile
79
- } from "../chunk-47XOPWSV.mjs";
79
+ } from "../chunk-FOYB7GE7.mjs";
80
80
  import {
81
81
  computeCID,
82
82
  computeJsonCID
@@ -1,5 +1,5 @@
1
1
  import * as _blocknote_core from '@blocknote/core';
2
- import { ao as IxoBlockProps, l as IxoEditorOptions, a4 as IxoEditorType, p as IxoCollaborativeEditorOptions, w as BlocknoteHandlers, y as BlockRequirements, av as UnlMapConfig, ar as DynamicListDataProvider, as as DynamicListPanelRenderer, at as DomainCardRenderer, a3 as Translate, k as DelegationGrant } from './index-Bdh5jcT4.mjs';
2
+ import { ao as IxoBlockProps, l as IxoEditorOptions, a4 as IxoEditorType, p as IxoCollaborativeEditorOptions, w as BlocknoteHandlers, y as BlockRequirements, av as UnlMapConfig, ar as DynamicListDataProvider, as as DynamicListPanelRenderer, at as DomainCardRenderer, a3 as Translate, k as DelegationGrant } from './index-o5BPjp5P.mjs';
3
3
  import { Text, Doc, Map, Array as Array$1 } from 'yjs';
4
4
  import React__default from 'react';
5
5
 
@@ -1662,6 +1662,18 @@ interface BlocknoteHandlers {
1662
1662
  fetchClaimMedia?: (url: string, options?: {
1663
1663
  entityDid?: string;
1664
1664
  }) => Promise<Blob>;
1665
+ /**
1666
+ * Upload a single claim survey file to the claim collection's media store and
1667
+ * return a compact reference (never base64). Wired into SurveyJS
1668
+ * `onUploadFiles` so claims persist only a link to the file, not its inlined
1669
+ * content. The returned `content` is resolved back to a fetchable URL by the
1670
+ * evaluation/display side (see `resolveClaimFileRef`).
1671
+ */
1672
+ uploadClaimFile?: (file: File, collectionId: string, options?: {
1673
+ entityDid?: string;
1674
+ }) => Promise<{
1675
+ content: string;
1676
+ }>;
1665
1677
  evaluateClaim: (granteeAddress: string, did: string, payload: {
1666
1678
  claimId: string;
1667
1679
  collectionId: string;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export { n as ApiRequestBlockProps, h as ApiRequestBlockSpec, A as AuthorizationTab, d as AuthorizationTabState, B as BlockPresenceUser, i as CheckboxBlockProps, g as CheckboxBlockSpec, C as CoverImage, c as CoverImageProps, D as DevUcanGrantButton, r as Entity, s as EntityResponse, f as EntitySigningSetup, t as EntityVariables, E as EvaluationTab, e as EvaluationTabState, F as FlowPermissionsPanel, G as GrantPermissionModal, v as GraphQLClient, y as GraphQLRequest, x as GraphQLResponse, H as HttpMethod, I as IxoEditor, b as IxoEditorProps, K as KeyValuePair, k as ListBlockProps, j as ListBlockSettings, L as ListBlockSpec, O as OverviewBlock, l as OverviewBlockProps, m as ProposalBlockProps, P as ProposalBlockSpec, q as getEntity, w as ixoGraphQLClient, o as useBlockPresence, a as useCreateCollaborativeIxoEditor, u as useCreateIxoEditor, p as useTrackBlockFocus } from './graphql-client-C2YnVMPy.mjs';
2
- export { A as AuthorizationResult, B as BaseUcanFlow, X as BuildFlowAgentContextParams, v as CompiledFlow, C as CompilerRegistry, E as ExecuteNodeParams, f as ExecutionContext, d as ExecutionOutcome, Y as FlowAgentActor, Z as FlowAgentCommand, _ as FlowAgentCommandResult, $ as FlowAgentContext, a0 as FlowAgentExecutor, a1 as FlowAgentLease, a2 as FlowAgentNodeSnapshot, a3 as FlowAgentPublicNodeState, x as FlowAgentService, a4 as FlowAgentTickResult, u as FlowCapability, F as FlowRuntimeStateManager, w as FlowStrategy, M as MergeResult, N as NodeActionResult, R as ReadFlowOptions, q as ReadFlowResult, t as ReadableEditor, S as SetupFlowOptions, p as SetupFlowResult, y as acquireFlowAgentLease, z as appendAgentLedgerEvent, a as buildAuthzFromProps, D as buildFlowAgentContext, b as buildFlowNodeFromBlock, G as cleanupExpiredFlowAgentLeases, l as compileBaseUcanFlow, H as createAgentCommand, c as createRuntimeStateManager, o as decompileToBaseUcanFlow, I as evaluateFlowAgentPolicy, e as executeNode, J as executeQueuedAgentCommands, k as getActiveEditor, K as getFlowAgentMaps, i as isAuthorized, n as mergeCompiledFlows, L as planRalphLoopCommands, O as queueAgentCommand, P as readAgentLedgerEvents, m as readCompiledFlowFromYDoc, h as readFlow, r as readFlowAsBaseUcan, g as readFlowFromEditor, Q as readQueuedAgentCommands, T as releaseFlowAgentLease, j as setActiveEditor, s as setupFlowFromBaseUcan, U as tickFlowAgent, V as validateAgentCommand, W as validateFlowAgentLease } from './store-IeJf2yNz.mjs';
3
- export { H as Addr, A as AuthzExecActionTypes, y as BlockRequirements, x as BlocknoteContextValue, w as BlocknoteHandlers, B as BlocknoteProvider, O as CosmosMsgForEmpty, D as DelegationChainValidationResult, k as DelegationGrant, K as Expiration, Z as ImportProtocolTemplateResult, Y as ImportProtocolTemplatesToSpaceParams, I as InvocationStore, p as IxoCollaborativeEditorOptions, o as IxoCollaborativeUser, n as IxoEditorConfig, l as IxoEditorOptions, m as IxoEditorTheme, R as ListProtocolDeedsWithTemplatesParams, _ as MatrixPrivacySettings, $ as MatrixRoom, a0 as MatrixSpace, a2 as MatrixSpaceStructure, a1 as MatrixSubspace, Q as ProposalAction, P as ProposalResponse, W as ProtocolDeedWithTemplates, X as ProtocolTemplateSummary, z as SingleChoiceProposal, v as StakeType, v as StakeTypeValue, L as Status, S as StoredDelegation, j as StoredInvocation, M as Threshold, T as Timestamp, a3 as Translate, i as UcanCapability, U as UcanDelegationStore, f as UcanService, g as UcanServiceConfig, h as UcanServiceHandlers, J as Uint128, G as User, V as ValidatorActionType, F as Vote, E as VoteInfo, C as VoteResponse, N as Votes, q as blockSpecs, b as createInvocationStore, d as createMemoryInvocationStore, a as createMemoryUcanDelegationStore, c as createUcanDelegationStore, e as createUcanService, r as getExtraSlashMenuItems, u as useBlocknoteContext, s as useBlocknoteHandlers, t as useTranslate } from './index-Bdh5jcT4.mjs';
1
+ export { n as ApiRequestBlockProps, h as ApiRequestBlockSpec, A as AuthorizationTab, d as AuthorizationTabState, B as BlockPresenceUser, i as CheckboxBlockProps, g as CheckboxBlockSpec, C as CoverImage, c as CoverImageProps, D as DevUcanGrantButton, r as Entity, s as EntityResponse, f as EntitySigningSetup, t as EntityVariables, E as EvaluationTab, e as EvaluationTabState, F as FlowPermissionsPanel, G as GrantPermissionModal, v as GraphQLClient, y as GraphQLRequest, x as GraphQLResponse, H as HttpMethod, I as IxoEditor, b as IxoEditorProps, K as KeyValuePair, k as ListBlockProps, j as ListBlockSettings, L as ListBlockSpec, O as OverviewBlock, l as OverviewBlockProps, m as ProposalBlockProps, P as ProposalBlockSpec, q as getEntity, w as ixoGraphQLClient, o as useBlockPresence, a as useCreateCollaborativeIxoEditor, u as useCreateIxoEditor, p as useTrackBlockFocus } from './graphql-client-D9Y6Sbgf.mjs';
2
+ export { A as AuthorizationResult, B as BaseUcanFlow, X as BuildFlowAgentContextParams, v as CompiledFlow, C as CompilerRegistry, E as ExecuteNodeParams, f as ExecutionContext, d as ExecutionOutcome, Y as FlowAgentActor, Z as FlowAgentCommand, _ as FlowAgentCommandResult, $ as FlowAgentContext, a0 as FlowAgentExecutor, a1 as FlowAgentLease, a2 as FlowAgentNodeSnapshot, a3 as FlowAgentPublicNodeState, x as FlowAgentService, a4 as FlowAgentTickResult, u as FlowCapability, F as FlowRuntimeStateManager, w as FlowStrategy, M as MergeResult, N as NodeActionResult, R as ReadFlowOptions, q as ReadFlowResult, t as ReadableEditor, S as SetupFlowOptions, p as SetupFlowResult, y as acquireFlowAgentLease, z as appendAgentLedgerEvent, a as buildAuthzFromProps, D as buildFlowAgentContext, b as buildFlowNodeFromBlock, G as cleanupExpiredFlowAgentLeases, l as compileBaseUcanFlow, H as createAgentCommand, c as createRuntimeStateManager, o as decompileToBaseUcanFlow, I as evaluateFlowAgentPolicy, e as executeNode, J as executeQueuedAgentCommands, k as getActiveEditor, K as getFlowAgentMaps, i as isAuthorized, n as mergeCompiledFlows, L as planRalphLoopCommands, O as queueAgentCommand, P as readAgentLedgerEvents, m as readCompiledFlowFromYDoc, h as readFlow, r as readFlowAsBaseUcan, g as readFlowFromEditor, Q as readQueuedAgentCommands, T as releaseFlowAgentLease, j as setActiveEditor, s as setupFlowFromBaseUcan, U as tickFlowAgent, V as validateAgentCommand, W as validateFlowAgentLease } from './store-Bf9cuTNN.mjs';
3
+ export { H as Addr, A as AuthzExecActionTypes, y as BlockRequirements, x as BlocknoteContextValue, w as BlocknoteHandlers, B as BlocknoteProvider, O as CosmosMsgForEmpty, D as DelegationChainValidationResult, k as DelegationGrant, K as Expiration, Z as ImportProtocolTemplateResult, Y as ImportProtocolTemplatesToSpaceParams, I as InvocationStore, p as IxoCollaborativeEditorOptions, o as IxoCollaborativeUser, n as IxoEditorConfig, l as IxoEditorOptions, m as IxoEditorTheme, R as ListProtocolDeedsWithTemplatesParams, _ as MatrixPrivacySettings, $ as MatrixRoom, a0 as MatrixSpace, a2 as MatrixSpaceStructure, a1 as MatrixSubspace, Q as ProposalAction, P as ProposalResponse, W as ProtocolDeedWithTemplates, X as ProtocolTemplateSummary, z as SingleChoiceProposal, v as StakeType, v as StakeTypeValue, L as Status, S as StoredDelegation, j as StoredInvocation, M as Threshold, T as Timestamp, a3 as Translate, i as UcanCapability, U as UcanDelegationStore, f as UcanService, g as UcanServiceConfig, h as UcanServiceHandlers, J as Uint128, G as User, V as ValidatorActionType, F as Vote, E as VoteInfo, C as VoteResponse, N as Votes, q as blockSpecs, b as createInvocationStore, d as createMemoryInvocationStore, a as createMemoryUcanDelegationStore, c as createUcanDelegationStore, e as createUcanService, r as getExtraSlashMenuItems, u as useBlocknoteContext, s as useBlocknoteHandlers, t as useTranslate } from './index-o5BPjp5P.mjs';
4
4
  export { Block, BlockNoteEditor, BlockNoteSchema, DefaultBlockSchema, DefaultInlineContentSchema, DefaultStyleSchema, PartialBlock } from '@blocknote/core';
5
5
  export { CloneDocumentResult, cloneDocument } from '@ixo/matrix-crdt';
6
6
  import 'yjs';
package/dist/index.mjs CHANGED
@@ -28,7 +28,7 @@ import {
28
28
  useCreateIxoEditor,
29
29
  useTrackBlockFocus,
30
30
  useTranslate
31
- } from "./chunk-I2OZHN6S.mjs";
31
+ } from "./chunk-OPJWGL45.mjs";
32
32
  import "./chunk-OK2W66I7.mjs";
33
33
  import {
34
34
  FlowAgentService,
@@ -68,7 +68,7 @@ import {
68
68
  tickFlowAgent,
69
69
  validateAgentCommand,
70
70
  validateFlowAgentLease
71
- } from "./chunk-47XOPWSV.mjs";
71
+ } from "./chunk-FOYB7GE7.mjs";
72
72
 
73
73
  // src/index.ts
74
74
  import { cloneDocument } from "@ixo/matrix-crdt";
@@ -1,7 +1,7 @@
1
- export { n as ApiRequestBlockProps, h as ApiRequestBlockSpec, A as AuthorizationTab, d as AuthorizationTabState, B as BlockPresenceUser, i as CheckboxBlockProps, g as CheckboxBlockSpec, C as CoverImage, c as CoverImageProps, D as DevUcanGrantButton, J as DropPosition, r as Entity, s as EntityResponse, f as EntitySigningSetup, t as EntityVariables, E as EvaluationTab, e as EvaluationTabState, z as ExternalDropZone, F as FlowPermissionsPanel, G as GrantPermissionModal, v as GraphQLClient, y as GraphQLRequest, x as GraphQLResponse, H as HttpMethod, I as IxoEditor, b as IxoEditorProps, K as KeyValuePair, k as ListBlockProps, j as ListBlockSettings, L as ListBlockSpec, O as OverviewBlock, l as OverviewBlockProps, m as ProposalBlockProps, P as ProposalBlockSpec, q as getEntity, w as ixoGraphQLClient, o as useBlockPresence, a as useCreateCollaborativeIxoEditor, u as useCreateIxoEditor, p as useTrackBlockFocus } from '../graphql-client-C2YnVMPy.mjs';
1
+ export { n as ApiRequestBlockProps, h as ApiRequestBlockSpec, A as AuthorizationTab, d as AuthorizationTabState, B as BlockPresenceUser, i as CheckboxBlockProps, g as CheckboxBlockSpec, C as CoverImage, c as CoverImageProps, D as DevUcanGrantButton, J as DropPosition, r as Entity, s as EntityResponse, f as EntitySigningSetup, t as EntityVariables, E as EvaluationTab, e as EvaluationTabState, z as ExternalDropZone, F as FlowPermissionsPanel, G as GrantPermissionModal, v as GraphQLClient, y as GraphQLRequest, x as GraphQLResponse, H as HttpMethod, I as IxoEditor, b as IxoEditorProps, K as KeyValuePair, k as ListBlockProps, j as ListBlockSettings, L as ListBlockSpec, O as OverviewBlock, l as OverviewBlockProps, m as ProposalBlockProps, P as ProposalBlockSpec, q as getEntity, w as ixoGraphQLClient, o as useBlockPresence, a as useCreateCollaborativeIxoEditor, u as useCreateIxoEditor, p as useTrackBlockFocus } from '../graphql-client-D9Y6Sbgf.mjs';
2
2
  import React__default, { PropsWithChildren } from 'react';
3
- import { ao as IxoBlockProps, a4 as IxoEditorType, w as BlocknoteHandlers, a5 as FlowNodeRuntimeState } from '../index-Bdh5jcT4.mjs';
4
- export { H as Addr, A as AuthzExecActionTypes, y as BlockRequirements, x as BlocknoteContextValue, B as BlocknoteProvider, O as CosmosMsgForEmpty, au as DomainCardData, at as DomainCardRenderer, aq as DynamicListData, ar as DynamicListDataProvider, as as DynamicListPanelRenderer, K as Expiration, Z as ImportProtocolTemplateResult, Y as ImportProtocolTemplatesToSpaceParams, p as IxoCollaborativeEditorOptions, o as IxoCollaborativeUser, n as IxoEditorConfig, l as IxoEditorOptions, m as IxoEditorTheme, R as ListProtocolDeedsWithTemplatesParams, _ as MatrixPrivacySettings, $ as MatrixRoom, a0 as MatrixSpace, a2 as MatrixSpaceStructure, a1 as MatrixSubspace, Q as ProposalAction, P as ProposalResponse, W as ProtocolDeedWithTemplates, X as ProtocolTemplateSummary, z as SingleChoiceProposal, v as StakeType, v as StakeTypeValue, L as Status, M as Threshold, T as Timestamp, J as Uint128, G as User, V as ValidatorActionType, ap as VisualizationRenderer, F as Vote, E as VoteInfo, C as VoteResponse, N as Votes, q as blockSpecs, r as getExtraSlashMenuItems, u as useBlocknoteContext, s as useBlocknoteHandlers } from '../index-Bdh5jcT4.mjs';
3
+ import { ao as IxoBlockProps, a4 as IxoEditorType, w as BlocknoteHandlers, a5 as FlowNodeRuntimeState } from '../index-o5BPjp5P.mjs';
4
+ export { H as Addr, A as AuthzExecActionTypes, y as BlockRequirements, x as BlocknoteContextValue, B as BlocknoteProvider, O as CosmosMsgForEmpty, au as DomainCardData, at as DomainCardRenderer, aq as DynamicListData, ar as DynamicListDataProvider, as as DynamicListPanelRenderer, K as Expiration, Z as ImportProtocolTemplateResult, Y as ImportProtocolTemplatesToSpaceParams, p as IxoCollaborativeEditorOptions, o as IxoCollaborativeUser, n as IxoEditorConfig, l as IxoEditorOptions, m as IxoEditorTheme, R as ListProtocolDeedsWithTemplatesParams, _ as MatrixPrivacySettings, $ as MatrixRoom, a0 as MatrixSpace, a2 as MatrixSpaceStructure, a1 as MatrixSubspace, Q as ProposalAction, P as ProposalResponse, W as ProtocolDeedWithTemplates, X as ProtocolTemplateSummary, z as SingleChoiceProposal, v as StakeType, v as StakeTypeValue, L as Status, M as Threshold, T as Timestamp, J as Uint128, G as User, V as ValidatorActionType, ap as VisualizationRenderer, F as Vote, E as VoteInfo, C as VoteResponse, N as Votes, q as blockSpecs, r as getExtraSlashMenuItems, u as useBlocknoteContext, s as useBlocknoteHandlers } from '../index-o5BPjp5P.mjs';
5
5
  import * as zustand from 'zustand';
6
6
  import { SurveyModel } from '@ixo/surveys';
7
7
  import * as _blocknote_core from '@blocknote/core';
@@ -6,7 +6,6 @@ import {
6
6
  BlocknoteProvider,
7
7
  CheckboxBlockSpec,
8
8
  CoverImage,
9
- DebugButton,
10
9
  DevUcanGrantButton,
11
10
  DynamicListBlockSpec,
12
11
  EntitySigningSetup,
@@ -19,7 +18,6 @@ import {
19
18
  IxoEditor,
20
19
  ListBlockSpec,
21
20
  OverviewBlock,
22
- PageHeader,
23
21
  PageTitle,
24
22
  ProposalBlockSpec,
25
23
  StakeType,
@@ -54,13 +52,311 @@ import {
54
52
  usePanelStore,
55
53
  useRegisterOpenSurvey,
56
54
  useTrackBlockFocus
57
- } from "../chunk-I2OZHN6S.mjs";
55
+ } from "../chunk-OPJWGL45.mjs";
58
56
  import {
59
57
  didToMatrixUserId,
60
58
  findOrCreateDMRoom,
61
59
  getHomeserver,
62
60
  sendDirectMessage
63
- } from "../chunk-47XOPWSV.mjs";
61
+ } from "../chunk-FOYB7GE7.mjs";
62
+
63
+ // src/mantine/components/DebugButton.tsx
64
+ import React from "react";
65
+ function DebugButton({ editor, handlers }) {
66
+ const yMapToObject = (map) => {
67
+ if (!map) return null;
68
+ const obj = {};
69
+ map.forEach((value, key) => {
70
+ if (value && typeof value.forEach === "function" && typeof value.get === "function" && !Array.isArray(value)) {
71
+ obj[key] = yMapToObject(value);
72
+ } else if (value && typeof value.toArray === "function") {
73
+ obj[key] = value.toArray();
74
+ } else {
75
+ obj[key] = value;
76
+ }
77
+ });
78
+ return Object.keys(obj).length === 0 ? "(empty)" : obj;
79
+ };
80
+ const parseJsonProp = (raw) => {
81
+ if (typeof raw !== "string" || !raw) return raw;
82
+ try {
83
+ return JSON.parse(raw);
84
+ } catch {
85
+ return raw;
86
+ }
87
+ };
88
+ const handleClick = () => {
89
+ window.__editor = editor;
90
+ const yDoc = editor._yDoc || editor._yRuntime?.doc;
91
+ console.log("Editor exposed as window.__editor. _yDoc?", !!yDoc);
92
+ const dump = {};
93
+ dump.blocks = editor.document.map((block) => ({
94
+ id: block.id,
95
+ type: block.type,
96
+ actionType: block?.props?.actionType,
97
+ triggerRaw: block?.props?.trigger,
98
+ trigger: parseJsonProp(block?.props?.trigger),
99
+ inputs: parseJsonProp(block?.props?.inputs),
100
+ assignment: parseJsonProp(block?.props?.assignment),
101
+ triggerMode: block?.props?.triggerMode,
102
+ props: block.props,
103
+ content: block.content,
104
+ children: block.children
105
+ }));
106
+ dump.runtime = yMapToObject(editor._yRuntime);
107
+ dump.xeroConnection = yMapToObject(editor._yXeroConnection);
108
+ dump.xeroWorkItems = yMapToObject(editor._yXeroWorkItems);
109
+ dump.delegations = yMapToObject(editor._yDelegations);
110
+ dump.invocations = yMapToObject(editor._yInvocations);
111
+ dump.flowMetadata = editor.getFlowMetadata?.() || null;
112
+ dump.flowArray = editor.getFlow?.() || null;
113
+ dump.entities = yMapToObject(yDoc?.getMap("entities"));
114
+ dump.auditTrail = yMapToObject(yDoc?.getMap("auditTrail"));
115
+ dump.pendingInvocations = yMapToObject(yDoc?.getMap("pendingInvocations"));
116
+ dump.barrierState = yMapToObject(yDoc?.getMap("barrierState"));
117
+ dump.runtimeFailures = yMapToObject(yDoc?.getMap("runtimeFailures"));
118
+ dump.dmNotifications = yMapToObject(yDoc?.getMap("dmNotifications"));
119
+ const json = JSON.stringify(dump, null, 2);
120
+ console.log("Editor Debug Dump:\n" + json);
121
+ };
122
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DevUcanGrantButton, { editor, handlers }), /* @__PURE__ */ React.createElement(
123
+ "button",
124
+ {
125
+ onClick: handleClick,
126
+ style: {
127
+ position: "fixed",
128
+ bottom: 16,
129
+ right: 16,
130
+ zIndex: 9999,
131
+ padding: "8px 12px",
132
+ background: "#1a1a2e",
133
+ color: "#00ff88",
134
+ border: "1px solid #00ff88",
135
+ borderRadius: 6,
136
+ fontSize: 12,
137
+ fontFamily: "monospace",
138
+ cursor: "pointer",
139
+ opacity: 0.7
140
+ },
141
+ title: "Debug: Log all blocks + runtime state to console"
142
+ },
143
+ "Debug Y.Doc"
144
+ ));
145
+ }
146
+
147
+ // src/mantine/components/PageHeader.tsx
148
+ import React2, { useState, useRef, useEffect } from "react";
149
+ function PageHeader({
150
+ title = "New page",
151
+ icon,
152
+ isPrivate = true,
153
+ onPrivacyChange,
154
+ lastEdited,
155
+ onShare,
156
+ onFavorite,
157
+ isFavorited = false,
158
+ menuItems = []
159
+ }) {
160
+ const [isMenuOpen, setIsMenuOpen] = useState(false);
161
+ const [isPrivacyOpen, setIsPrivacyOpen] = useState(false);
162
+ const menuRef = useRef(null);
163
+ const privacyRef = useRef(null);
164
+ useEffect(() => {
165
+ function handleClickOutside(event) {
166
+ if (menuRef.current && !menuRef.current.contains(event.target)) {
167
+ setIsMenuOpen(false);
168
+ }
169
+ if (privacyRef.current && !privacyRef.current.contains(event.target)) {
170
+ setIsPrivacyOpen(false);
171
+ }
172
+ }
173
+ if (isMenuOpen || isPrivacyOpen) {
174
+ document.addEventListener("mousedown", handleClickOutside);
175
+ }
176
+ return () => {
177
+ document.removeEventListener("mousedown", handleClickOutside);
178
+ };
179
+ }, [isMenuOpen, isPrivacyOpen]);
180
+ const handleMenuItemClick = (item) => {
181
+ if (!item.disabled) {
182
+ item.onClick();
183
+ setIsMenuOpen(false);
184
+ }
185
+ };
186
+ return /* @__PURE__ */ React2.createElement("div", { style: styles.container }, /* @__PURE__ */ React2.createElement("div", { style: styles.leftSection }, /* @__PURE__ */ React2.createElement("span", { style: styles.icon }, icon || "\u{1F4C4}"), /* @__PURE__ */ React2.createElement("span", { style: styles.title }, title), /* @__PURE__ */ React2.createElement("div", { style: styles.privacyContainer, ref: privacyRef }, /* @__PURE__ */ React2.createElement("button", { style: styles.privacyBadge, onClick: () => onPrivacyChange && setIsPrivacyOpen(!isPrivacyOpen) }, /* @__PURE__ */ React2.createElement("span", { style: styles.lockIcon }, isPrivate ? "\u{1F512}" : "\u{1F310}"), /* @__PURE__ */ React2.createElement("span", null, isPrivate ? "Private" : "Public"), onPrivacyChange && /* @__PURE__ */ React2.createElement("span", { style: styles.chevron }, "\u25BE")), isPrivacyOpen && onPrivacyChange && /* @__PURE__ */ React2.createElement("div", { style: styles.dropdown }, /* @__PURE__ */ React2.createElement(
187
+ "button",
188
+ {
189
+ style: {
190
+ ...styles.menuItem,
191
+ ...isPrivate ? styles.menuItemActive : {}
192
+ },
193
+ onClick: () => {
194
+ onPrivacyChange(true);
195
+ setIsPrivacyOpen(false);
196
+ }
197
+ },
198
+ /* @__PURE__ */ React2.createElement("span", { style: styles.menuItemIcon }, "\u{1F512}"),
199
+ /* @__PURE__ */ React2.createElement("span", null, "Private")
200
+ ), /* @__PURE__ */ React2.createElement(
201
+ "button",
202
+ {
203
+ style: {
204
+ ...styles.menuItem,
205
+ ...!isPrivate ? styles.menuItemActive : {}
206
+ },
207
+ onClick: () => {
208
+ onPrivacyChange(false);
209
+ setIsPrivacyOpen(false);
210
+ }
211
+ },
212
+ /* @__PURE__ */ React2.createElement("span", { style: styles.menuItemIcon }, "\u{1F310}"),
213
+ /* @__PURE__ */ React2.createElement("span", null, "Public")
214
+ )))), /* @__PURE__ */ React2.createElement("div", { style: styles.rightSection }, lastEdited && /* @__PURE__ */ React2.createElement("span", { style: styles.editedText }, lastEdited), onShare && /* @__PURE__ */ React2.createElement("button", { style: styles.shareButton, onClick: onShare }, "Share"), onFavorite && /* @__PURE__ */ React2.createElement("button", { style: styles.iconButton, onClick: onFavorite }, isFavorited ? "\u2605" : "\u2606"), menuItems.length > 0 && /* @__PURE__ */ React2.createElement("div", { style: styles.menuContainer, ref: menuRef }, /* @__PURE__ */ React2.createElement("button", { style: styles.menuButton, onClick: () => setIsMenuOpen(!isMenuOpen), "aria-label": "Menu" }, /* @__PURE__ */ React2.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "currentColor" }, /* @__PURE__ */ React2.createElement("circle", { cx: "3", cy: "8", r: "1.5" }), /* @__PURE__ */ React2.createElement("circle", { cx: "8", cy: "8", r: "1.5" }), /* @__PURE__ */ React2.createElement("circle", { cx: "13", cy: "8", r: "1.5" }))), isMenuOpen && /* @__PURE__ */ React2.createElement("div", { style: styles.dropdown }, menuItems.map((item, index) => /* @__PURE__ */ React2.createElement(React2.Fragment, { key: index }, item.divider && index > 0 && /* @__PURE__ */ React2.createElement("div", { style: styles.divider }), /* @__PURE__ */ React2.createElement(
215
+ "button",
216
+ {
217
+ style: {
218
+ ...styles.menuItem,
219
+ ...item.disabled ? styles.menuItemDisabled : {}
220
+ },
221
+ onClick: () => handleMenuItemClick(item),
222
+ disabled: item.disabled
223
+ },
224
+ item.icon && /* @__PURE__ */ React2.createElement("span", { style: styles.menuItemIcon }, item.icon),
225
+ /* @__PURE__ */ React2.createElement("span", null, item.label)
226
+ )))))));
227
+ }
228
+ var styles = {
229
+ container: {
230
+ display: "flex",
231
+ alignItems: "center",
232
+ justifyContent: "space-between",
233
+ padding: "8px 12px",
234
+ borderBottom: "1px solid rgba(255, 255, 255, 0.1)",
235
+ backgroundColor: "transparent",
236
+ fontSize: "14px",
237
+ minHeight: "44px",
238
+ color: "rgba(255, 255, 255, 0.9)"
239
+ },
240
+ leftSection: {
241
+ display: "flex",
242
+ alignItems: "center",
243
+ gap: "8px"
244
+ },
245
+ icon: {
246
+ fontSize: "16px"
247
+ },
248
+ title: {
249
+ fontWeight: 500,
250
+ color: "rgba(255, 255, 255, 0.9)"
251
+ },
252
+ privacyContainer: {
253
+ position: "relative"
254
+ },
255
+ privacyBadge: {
256
+ display: "flex",
257
+ alignItems: "center",
258
+ gap: "4px",
259
+ padding: "2px 6px",
260
+ border: "none",
261
+ backgroundColor: "transparent",
262
+ color: "rgba(255, 255, 255, 0.5)",
263
+ fontSize: "12px",
264
+ cursor: "pointer",
265
+ borderRadius: "3px"
266
+ },
267
+ lockIcon: {
268
+ fontSize: "12px"
269
+ },
270
+ chevron: {
271
+ fontSize: "10px",
272
+ marginLeft: "2px"
273
+ },
274
+ rightSection: {
275
+ display: "flex",
276
+ alignItems: "center",
277
+ gap: "8px"
278
+ },
279
+ editedText: {
280
+ color: "rgba(255, 255, 255, 0.4)",
281
+ fontSize: "12px"
282
+ },
283
+ shareButton: {
284
+ padding: "4px 10px",
285
+ border: "none",
286
+ backgroundColor: "transparent",
287
+ color: "rgba(255, 255, 255, 0.9)",
288
+ fontSize: "14px",
289
+ cursor: "pointer",
290
+ borderRadius: "3px",
291
+ fontWeight: 500
292
+ },
293
+ iconButton: {
294
+ padding: "4px 8px",
295
+ border: "none",
296
+ backgroundColor: "transparent",
297
+ color: "rgba(255, 255, 255, 0.5)",
298
+ fontSize: "16px",
299
+ cursor: "pointer",
300
+ borderRadius: "3px"
301
+ },
302
+ menuContainer: {
303
+ position: "relative"
304
+ },
305
+ menuButton: {
306
+ display: "flex",
307
+ alignItems: "center",
308
+ justifyContent: "center",
309
+ padding: "4px 8px",
310
+ border: "none",
311
+ backgroundColor: "transparent",
312
+ color: "rgba(255, 255, 255, 0.5)",
313
+ cursor: "pointer",
314
+ borderRadius: "3px"
315
+ },
316
+ dropdown: {
317
+ position: "absolute",
318
+ top: "100%",
319
+ right: 0,
320
+ marginTop: "4px",
321
+ minWidth: "180px",
322
+ backgroundColor: "rgb(37, 37, 37)",
323
+ borderRadius: "6px",
324
+ boxShadow: "0 4px 12px rgba(0, 0, 0, 0.4)",
325
+ border: "1px solid rgba(255, 255, 255, 0.1)",
326
+ padding: "4px 0",
327
+ zIndex: 1e3
328
+ },
329
+ menuItem: {
330
+ display: "flex",
331
+ alignItems: "center",
332
+ gap: "8px",
333
+ width: "100%",
334
+ padding: "8px 12px",
335
+ border: "none",
336
+ backgroundColor: "transparent",
337
+ color: "rgba(255, 255, 255, 0.9)",
338
+ fontSize: "14px",
339
+ cursor: "pointer",
340
+ textAlign: "left"
341
+ },
342
+ menuItemDisabled: {
343
+ color: "rgba(255, 255, 255, 0.3)",
344
+ cursor: "not-allowed"
345
+ },
346
+ menuItemActive: {
347
+ backgroundColor: "rgba(255, 255, 255, 0.08)"
348
+ },
349
+ menuItemIcon: {
350
+ display: "flex",
351
+ alignItems: "center",
352
+ fontSize: "16px"
353
+ },
354
+ divider: {
355
+ height: "1px",
356
+ backgroundColor: "rgba(255, 255, 255, 0.1)",
357
+ margin: "4px 0"
358
+ }
359
+ };
64
360
  export {
65
361
  ApiRequestBlockSpec,
66
362
  AuthorizationTab,
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../../src/mantine/components/DebugButton.tsx","../../src/mantine/components/PageHeader.tsx"],"sourcesContent":["import React from 'react';\nimport type { IxoEditorType } from '../../core/types';\nimport type { BlocknoteHandlers } from '../context/BlocknoteContext';\nimport { DevUcanGrantButton } from './DevUcanGrantButton';\n\nexport function DebugButton({ editor, handlers }: { editor: IxoEditorType; handlers?: BlocknoteHandlers }) {\n const yMapToObject = (map: any) => {\n if (!map) return null;\n const obj: Record<string, any> = {};\n map.forEach((value: any, key: string) => {\n // Recursively unwrap nested Y.Maps so their contents are visible in JSON\n if (value && typeof value.forEach === 'function' && typeof value.get === 'function' && !Array.isArray(value)) {\n obj[key] = yMapToObject(value);\n } else if (value && typeof value.toArray === 'function') {\n obj[key] = value.toArray();\n } else {\n obj[key] = value;\n }\n });\n return Object.keys(obj).length === 0 ? '(empty)' : obj;\n };\n\n const parseJsonProp = (raw: unknown) => {\n if (typeof raw !== 'string' || !raw) return raw;\n try {\n return JSON.parse(raw);\n } catch {\n return raw;\n }\n };\n\n const handleClick = () => {\n (window as any).__editor = editor;\n const yDoc = (editor as any)._yDoc || (editor as any)._yRuntime?.doc;\n console.log('Editor exposed as window.__editor. _yDoc?', !!yDoc);\n const dump: Record<string, any> = {};\n\n // 1. BlockNote blocks — with parsed trigger / inputs / assignment so we can\n // see exactly what the listener is subscribing to.\n dump.blocks = editor.document.map((block: any) => ({\n id: block.id,\n type: block.type,\n actionType: block?.props?.actionType,\n triggerRaw: block?.props?.trigger,\n trigger: parseJsonProp(block?.props?.trigger),\n inputs: parseJsonProp(block?.props?.inputs),\n assignment: parseJsonProp(block?.props?.assignment),\n triggerMode: block?.props?.triggerMode,\n props: block.props,\n content: block.content,\n children: block.children,\n }));\n\n // 2. Runtime state\n dump.runtime = yMapToObject(editor._yRuntime);\n dump.xeroConnection = yMapToObject((editor as any)._yXeroConnection);\n dump.xeroWorkItems = yMapToObject((editor as any)._yXeroWorkItems);\n\n // 3. Delegations\n dump.delegations = yMapToObject(editor._yDelegations);\n\n // 4. Invocations\n dump.invocations = yMapToObject(editor._yInvocations);\n\n // 5. Flow metadata\n dump.flowMetadata = editor.getFlowMetadata?.() || null;\n\n // 6. Flow array\n dump.flowArray = editor.getFlow?.() || null;\n\n // 7. Entities Y.Map (companion oracle results)\n dump.entities = yMapToObject(yDoc?.getMap('entities'));\n\n // 8. Trigger/event state — the full chain for debugging block.event.all\n // a) auditTrail: where run records (source emissions) are written\n // b) pendingInvocations: what the Invoke button reads from\n // c) barrierState: partial barrier completion for block.event.all listeners\n // d) runtimeFailures / pendingDMState: failure + notification dedup\n dump.auditTrail = yMapToObject(yDoc?.getMap('auditTrail'));\n dump.pendingInvocations = yMapToObject(yDoc?.getMap('pendingInvocations'));\n dump.barrierState = yMapToObject(yDoc?.getMap('barrierState'));\n dump.runtimeFailures = yMapToObject(yDoc?.getMap('runtimeFailures'));\n dump.dmNotifications = yMapToObject(yDoc?.getMap('dmNotifications'));\n\n const json = JSON.stringify(dump, null, 2);\n console.log('Editor Debug Dump:\\n' + json);\n };\n\n return (\n <>\n <DevUcanGrantButton editor={editor} handlers={handlers} />\n <button\n onClick={handleClick}\n style={{\n position: 'fixed',\n bottom: 16,\n right: 16,\n zIndex: 9999,\n padding: '8px 12px',\n background: '#1a1a2e',\n color: '#00ff88',\n border: '1px solid #00ff88',\n borderRadius: 6,\n fontSize: 12,\n fontFamily: 'monospace',\n cursor: 'pointer',\n opacity: 0.7,\n }}\n title=\"Debug: Log all blocks + runtime state to console\"\n >\n Debug Y.Doc\n </button>\n </>\n );\n}\n","import React, { useState, useRef, useEffect } from 'react';\n\nexport interface PageHeaderMenuItem {\n label: string;\n onClick: () => void;\n icon?: React.ReactNode;\n disabled?: boolean;\n divider?: boolean;\n}\n\nexport interface PageHeaderProps {\n title?: string;\n icon?: React.ReactNode;\n isPrivate?: boolean;\n onPrivacyChange?: (isPrivate: boolean) => void;\n lastEdited?: string;\n onShare?: () => void;\n onFavorite?: () => void;\n isFavorited?: boolean;\n menuItems?: PageHeaderMenuItem[];\n}\n\n/**\n * PageHeader component - A Notion-style page header with title, privacy badge, and actions\n */\nexport function PageHeader({\n title = 'New page',\n icon,\n isPrivate = true,\n onPrivacyChange,\n lastEdited,\n onShare,\n onFavorite,\n isFavorited = false,\n menuItems = [],\n}: PageHeaderProps): React.ReactElement {\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n const [isPrivacyOpen, setIsPrivacyOpen] = useState(false);\n const menuRef = useRef<HTMLDivElement>(null);\n const privacyRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (menuRef.current && !menuRef.current.contains(event.target as Node)) {\n setIsMenuOpen(false);\n }\n if (privacyRef.current && !privacyRef.current.contains(event.target as Node)) {\n setIsPrivacyOpen(false);\n }\n }\n\n if (isMenuOpen || isPrivacyOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isMenuOpen, isPrivacyOpen]);\n\n const handleMenuItemClick = (item: PageHeaderMenuItem) => {\n if (!item.disabled) {\n item.onClick();\n setIsMenuOpen(false);\n }\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.leftSection}>\n <span style={styles.icon}>{icon || '📄'}</span>\n <span style={styles.title}>{title}</span>\n <div style={styles.privacyContainer} ref={privacyRef}>\n <button style={styles.privacyBadge} onClick={() => onPrivacyChange && setIsPrivacyOpen(!isPrivacyOpen)}>\n <span style={styles.lockIcon}>{isPrivate ? '🔒' : '🌐'}</span>\n <span>{isPrivate ? 'Private' : 'Public'}</span>\n {onPrivacyChange && <span style={styles.chevron}>▾</span>}\n </button>\n {isPrivacyOpen && onPrivacyChange && (\n <div style={styles.dropdown}>\n <button\n style={{\n ...styles.menuItem,\n ...(isPrivate ? styles.menuItemActive : {}),\n }}\n onClick={() => {\n onPrivacyChange(true);\n setIsPrivacyOpen(false);\n }}\n >\n <span style={styles.menuItemIcon}>🔒</span>\n <span>Private</span>\n </button>\n <button\n style={{\n ...styles.menuItem,\n ...(!isPrivate ? styles.menuItemActive : {}),\n }}\n onClick={() => {\n onPrivacyChange(false);\n setIsPrivacyOpen(false);\n }}\n >\n <span style={styles.menuItemIcon}>🌐</span>\n <span>Public</span>\n </button>\n </div>\n )}\n </div>\n </div>\n <div style={styles.rightSection}>\n {lastEdited && <span style={styles.editedText}>{lastEdited}</span>}\n {onShare && (\n <button style={styles.shareButton} onClick={onShare}>\n Share\n </button>\n )}\n {onFavorite && (\n <button style={styles.iconButton} onClick={onFavorite}>\n {isFavorited ? '★' : '☆'}\n </button>\n )}\n {menuItems.length > 0 && (\n <div style={styles.menuContainer} ref={menuRef}>\n <button style={styles.menuButton} onClick={() => setIsMenuOpen(!isMenuOpen)} aria-label=\"Menu\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <circle cx=\"3\" cy=\"8\" r=\"1.5\" />\n <circle cx=\"8\" cy=\"8\" r=\"1.5\" />\n <circle cx=\"13\" cy=\"8\" r=\"1.5\" />\n </svg>\n </button>\n {isMenuOpen && (\n <div style={styles.dropdown}>\n {menuItems.map((item, index) => (\n <React.Fragment key={index}>\n {item.divider && index > 0 && <div style={styles.divider} />}\n <button\n style={{\n ...styles.menuItem,\n ...(item.disabled ? styles.menuItemDisabled : {}),\n }}\n onClick={() => handleMenuItemClick(item)}\n disabled={item.disabled}\n >\n {item.icon && <span style={styles.menuItemIcon}>{item.icon}</span>}\n <span>{item.label}</span>\n </button>\n </React.Fragment>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '8px 12px',\n borderBottom: '1px solid rgba(255, 255, 255, 0.1)',\n backgroundColor: 'transparent',\n fontSize: '14px',\n minHeight: '44px',\n color: 'rgba(255, 255, 255, 0.9)',\n },\n leftSection: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n icon: {\n fontSize: '16px',\n },\n title: {\n fontWeight: 500,\n color: 'rgba(255, 255, 255, 0.9)',\n },\n privacyContainer: {\n position: 'relative' as const,\n },\n privacyBadge: {\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n padding: '2px 6px',\n border: 'none',\n backgroundColor: 'transparent',\n color: 'rgba(255, 255, 255, 0.5)',\n fontSize: '12px',\n cursor: 'pointer',\n borderRadius: '3px',\n },\n lockIcon: {\n fontSize: '12px',\n },\n chevron: {\n fontSize: '10px',\n marginLeft: '2px',\n },\n rightSection: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n editedText: {\n color: 'rgba(255, 255, 255, 0.4)',\n fontSize: '12px',\n },\n shareButton: {\n padding: '4px 10px',\n border: 'none',\n backgroundColor: 'transparent',\n color: 'rgba(255, 255, 255, 0.9)',\n fontSize: '14px',\n cursor: 'pointer',\n borderRadius: '3px',\n fontWeight: 500,\n },\n iconButton: {\n padding: '4px 8px',\n border: 'none',\n backgroundColor: 'transparent',\n color: 'rgba(255, 255, 255, 0.5)',\n fontSize: '16px',\n cursor: 'pointer',\n borderRadius: '3px',\n },\n menuContainer: {\n position: 'relative',\n },\n menuButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '4px 8px',\n border: 'none',\n backgroundColor: 'transparent',\n color: 'rgba(255, 255, 255, 0.5)',\n cursor: 'pointer',\n borderRadius: '3px',\n },\n dropdown: {\n position: 'absolute',\n top: '100%',\n right: 0,\n marginTop: '4px',\n minWidth: '180px',\n backgroundColor: 'rgb(37, 37, 37)',\n borderRadius: '6px',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.4)',\n border: '1px solid rgba(255, 255, 255, 0.1)',\n padding: '4px 0',\n zIndex: 1000,\n },\n menuItem: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n width: '100%',\n padding: '8px 12px',\n border: 'none',\n backgroundColor: 'transparent',\n color: 'rgba(255, 255, 255, 0.9)',\n fontSize: '14px',\n cursor: 'pointer',\n textAlign: 'left',\n },\n menuItemDisabled: {\n color: 'rgba(255, 255, 255, 0.3)',\n cursor: 'not-allowed',\n },\n menuItemActive: {\n backgroundColor: 'rgba(255, 255, 255, 0.08)',\n },\n menuItemIcon: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '16px',\n },\n divider: {\n height: '1px',\n backgroundColor: 'rgba(255, 255, 255, 0.1)',\n margin: '4px 0',\n },\n};\n"],"mappings":"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","names":["React"]}
@@ -1,4 +1,4 @@
1
- import { a7 as FlowNode, ac as FlowNodeAuthzExtension, a5 as FlowNodeRuntimeState, a4 as IxoEditorType, f as UcanService, I as InvocationStore, aa as EvaluationStatus, i as UcanCapability, U as UcanDelegationStore, S as StoredDelegation } from './index-Bdh5jcT4.mjs';
1
+ import { a7 as FlowNode, ac as FlowNodeAuthzExtension, a5 as FlowNodeRuntimeState, a4 as IxoEditorType, f as UcanService, I as InvocationStore, aa as EvaluationStatus, i as UcanCapability, U as UcanDelegationStore, S as StoredDelegation } from './index-o5BPjp5P.mjs';
2
2
  import * as Y from 'yjs';
3
3
  import { Doc, Map } from 'yjs';
4
4
  import { MatrixClient } from 'matrix-js-sdk';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ixo/editor",
3
- "version": "5.28.1",
3
+ "version": "5.30.0",
4
4
  "description": "A custom BlockNote editor wrapper for IXO team",
5
5
  "main": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",
@@ -38,6 +38,8 @@
38
38
  "dev": "nodemon --watch src --ext ts,tsx --exec \"tsup\"",
39
39
  "clean": "rimraf dist style.css",
40
40
  "prepare": "husky install && pnpm run clean && pnpm run build",
41
+ "example:action-gallery": "pnpm --dir examples/action-type-gallery dev",
42
+ "example:action-gallery:build": "pnpm --dir examples/action-type-gallery build",
41
43
  "type-check": "tsc --noEmit",
42
44
  "test": "vitest run --passWithNoTests",
43
45
  "test:watch": "vitest",