@ixo/editor 3.0.0-beta.11 → 3.0.0-beta.13

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,5 +1,5 @@
1
- export { m as ActivationResult, l as AuthorizationContext, s as AuthorizationContextV2, A as AuthorizationResult, C as CapabilityGrant, D as DelegationStore, y as DerivedCapability, E as ExecuteNodeParams, p as ExecuteNodeParamsV2, k as ExecutionContext, q as ExecutionContextV2, j as ExecutionOutcome, F as FlowRuntimeStateManager, N as NodeActionResult, S as SimpleUCANManager, x as UCANManager, U as UcanService, u as UcanServiceConfig, w as UcanServiceHandlers, h as buildAuthzFromProps, g as buildFlowNodeFromBlock, n as clearRuntimeForTemplateClone, c as createDelegationStore, b as createMemoryDelegationStore, d as createRuntimeStateManager, t as createUcanService, e as executeNode, o as executeNodeWithInvocation, f as findValidCapability, i as isActorAuthorized, r as isActorAuthorizedV2, a as isNodeActive, v as validateCapabilityChain } from '../capabilityValidation-Bc1ff6fe.mjs';
2
- export { A as ActivationCondition, C as Capability, m as CapabilityURI, a as CapabilityValidationResult, o as ClaimCollectionURI, G as CreateDelegationParams, H as CreateInvocationParams, B as CreateRootDelegationParams, n as DID, y as DelegationChainValidationResult, D as DelegationGrant, E as EvaluationStatus, x as ExecutionWithInvocationResult, z as FindProofsResult, r as FlowNode, F as FlowNodeAuthzExtension, q as FlowNodeBase, p as FlowNodeRuntimeState, v as InvocationRequest, w as InvocationResult, l as InvocationStore, L as LinkedClaim, M as MigrationReport, N as NodeState, S as SignedCapability, t as StoredDelegation, u as StoredInvocation, s as UcanCapability, U as UcanDelegationStore, j as createInvocationStore, k as createMemoryInvocationStore, i as createMemoryUcanDelegationStore, h as createUcanDelegationStore } from '../index-DTx8PaDQ.mjs';
1
+ export { m as ActivationResult, l as AuthorizationContext, s as AuthorizationContextV2, A as AuthorizationResult, C as CapabilityGrant, D as DelegationStore, y as DerivedCapability, E as ExecuteNodeParams, p as ExecuteNodeParamsV2, k as ExecutionContext, q as ExecutionContextV2, j as ExecutionOutcome, F as FlowRuntimeStateManager, N as NodeActionResult, S as SimpleUCANManager, x as UCANManager, U as UcanService, u as UcanServiceConfig, w as UcanServiceHandlers, h as buildAuthzFromProps, g as buildFlowNodeFromBlock, n as clearRuntimeForTemplateClone, c as createDelegationStore, b as createMemoryDelegationStore, d as createRuntimeStateManager, t as createUcanService, e as executeNode, o as executeNodeWithInvocation, f as findValidCapability, i as isActorAuthorized, r as isActorAuthorizedV2, a as isNodeActive, v as validateCapabilityChain } from '../capabilityValidation-BrYCMvBB.mjs';
2
+ export { A as ActivationCondition, C as Capability, m as CapabilityURI, a as CapabilityValidationResult, o as ClaimCollectionURI, G as CreateDelegationParams, H as CreateInvocationParams, B as CreateRootDelegationParams, n as DID, y as DelegationChainValidationResult, D as DelegationGrant, E as EvaluationStatus, x as ExecutionWithInvocationResult, z as FindProofsResult, r as FlowNode, F as FlowNodeAuthzExtension, q as FlowNodeBase, p as FlowNodeRuntimeState, v as InvocationRequest, w as InvocationResult, l as InvocationStore, L as LinkedClaim, M as MigrationReport, N as NodeState, S as SignedCapability, t as StoredDelegation, u as StoredInvocation, s as UcanCapability, U as UcanDelegationStore, j as createInvocationStore, k as createMemoryInvocationStore, i as createMemoryUcanDelegationStore, h as createUcanDelegationStore } from '../index-BE746hd_.mjs';
3
3
  import '@ixo/ucan';
4
4
  import 'yjs';
5
5
  import '@blocknote/core';
@@ -1,5 +1,5 @@
1
1
  import * as _blocknote_core from '@blocknote/core';
2
- import { K as IxoBlockProps, J as IxoEditorType, I as IxoEditorOptions, e as IxoCollaborativeEditorOptions, D as DelegationGrant } from './index-DTx8PaDQ.mjs';
2
+ import { K as IxoBlockProps, J as IxoEditorType, I as IxoEditorOptions, e as IxoCollaborativeEditorOptions, D as DelegationGrant } from './index-BE746hd_.mjs';
3
3
  import { Text, Doc, Map, Array as Array$1 } from 'yjs';
4
4
  import React from 'react';
5
5
  import { MatrixClient } from 'matrix-js-sdk';
@@ -42,7 +42,7 @@ declare const CheckboxBlockSpec: {
42
42
  readonly default: "";
43
43
  };
44
44
  };
45
- readonly content: "inline";
45
+ readonly content: "none";
46
46
  };
47
47
  implementation: _blocknote_core.TiptapBlockImplementation<{
48
48
  readonly type: "checkbox";
@@ -81,7 +81,7 @@ declare const CheckboxBlockSpec: {
81
81
  readonly default: "";
82
82
  };
83
83
  };
84
- readonly content: "inline";
84
+ readonly content: "none";
85
85
  }, any, _blocknote_core.InlineContentSchema, _blocknote_core.StyleSchema>;
86
86
  };
87
87
 
@@ -1970,17 +1970,16 @@ interface BlocknoteHandlers {
1970
1970
  transactionHash: string;
1971
1971
  }>;
1972
1972
  /**
1973
- * Navigate to another flow document or workspace page
1974
- * @param docRoomId - Matrix room ID of the target flow document or workspace page
1975
- * @param isWorkspaceLink - Optional flag to indicate if this is a workspace link
1973
+ * Navigate to a flow link URL
1974
+ * @param url - HTTP URL of the target flow or page
1976
1975
  */
1977
- navigateToFlow?: (docRoomId: string, isWorkspaceLink?: boolean) => void;
1976
+ navigateToFlow?: (url: string) => void;
1978
1977
  /**
1979
1978
  * Get the status of a flow document
1980
- * @param docRoomId - Matrix room ID of the flow document
1979
+ * @param url - HTTP URL of the flow document
1981
1980
  * @returns Flow status with optional completion timestamp
1982
1981
  */
1983
- getFlowStatus?: (docRoomId: string) => Promise<{
1982
+ getFlowStatus?: (url: string) => Promise<{
1984
1983
  status: 'not_started' | 'in_progress' | 'completed';
1985
1984
  completedAt?: string;
1986
1985
  }>;
@@ -2235,6 +2234,11 @@ interface BlocknoteContextValue {
2235
2234
  getDynamicListData?: DynamicListDataProvider;
2236
2235
  dynamicListPanelRenderer?: DynamicListPanelRenderer;
2237
2236
  domainCardRenderer?: DomainCardRenderer;
2237
+ connectedUsers?: Array<{
2238
+ clientId: string;
2239
+ state: any;
2240
+ }>;
2241
+ awarenessInstance?: any;
2238
2242
  }
2239
2243
  declare const BlocknoteProvider: React.FC<{
2240
2244
  children: React.ReactNode;
@@ -2247,6 +2251,11 @@ declare const BlocknoteProvider: React.FC<{
2247
2251
  dynamicListPanelRenderer?: DynamicListPanelRenderer;
2248
2252
  domainCardRenderer?: DomainCardRenderer;
2249
2253
  mapConfig?: UnlMapConfig;
2254
+ connectedUsers?: Array<{
2255
+ clientId: string;
2256
+ state: any;
2257
+ }>;
2258
+ awarenessInstance?: any;
2250
2259
  }>;
2251
2260
  declare const useBlocknoteContext: () => BlocknoteContextValue;
2252
2261
  declare const useBlocknoteHandlers: () => BlocknoteHandlers;
@@ -2471,7 +2480,7 @@ declare const ApiRequestBlockSpec: {
2471
2480
  readonly default: "";
2472
2481
  };
2473
2482
  };
2474
- readonly content: "inline";
2483
+ readonly content: "none";
2475
2484
  };
2476
2485
  implementation: _blocknote_core.TiptapBlockImplementation<{
2477
2486
  readonly type: "apiRequest";
@@ -2528,7 +2537,7 @@ declare const ApiRequestBlockSpec: {
2528
2537
  readonly default: "";
2529
2538
  };
2530
2539
  };
2531
- readonly content: "inline";
2540
+ readonly content: "none";
2532
2541
  }, any, _blocknote_core.InlineContentSchema, _blocknote_core.StyleSchema>;
2533
2542
  };
2534
2543
 
@@ -2562,6 +2571,7 @@ declare function useCreateCollaborativeIxoEditor(options: IxoCollaborativeEditor
2562
2571
  clientId: string;
2563
2572
  state: any;
2564
2573
  }>;
2574
+ awarenessInstance: any;
2565
2575
  };
2566
2576
 
2567
2577
  interface PageHeaderMenuItem {
@@ -2641,11 +2651,18 @@ interface IxoEditorProps {
2641
2651
  isPlacementMode?: boolean;
2642
2652
  /** Callback when placement mode should be canceled */
2643
2653
  onPlacementCancel?: () => void;
2654
+ /** Connected users from awareness (for block presence) */
2655
+ connectedUsers?: Array<{
2656
+ clientId: string;
2657
+ state: any;
2658
+ }>;
2659
+ /** Yjs awareness instance (for block presence) */
2660
+ awarenessInstance?: any;
2644
2661
  }
2645
2662
  /**
2646
2663
  * IxoEditor component - A customized BlockNote editor for IXO (Mantine UI)
2647
2664
  */
2648
- declare function IxoEditor({ editor, editable, className, onChange, onSelectionChange, children, mantineTheme, handlers, blockRequirements, isPanelVisible, coverImageUrl, logoUrl, selfNav, pageHeaderProps, visualizationRenderer, getDynamicListData, dynamicListPanelRenderer, domainCardRenderer, onExternalDrop, externalDropType, dropIndicator, isPlacementMode, onPlacementCancel, mapConfig, }: IxoEditorProps): React.ReactElement | null;
2665
+ declare function IxoEditor({ editor, editable, className, onChange, onSelectionChange, children, mantineTheme, handlers, blockRequirements, isPanelVisible, coverImageUrl, logoUrl, selfNav, pageHeaderProps, visualizationRenderer, getDynamicListData, dynamicListPanelRenderer, domainCardRenderer, onExternalDrop, externalDropType, dropIndicator, isPlacementMode, onPlacementCancel, mapConfig, connectedUsers, awarenessInstance, }: IxoEditorProps): React.ReactElement | null;
2649
2666
 
2650
2667
  interface CoverImageProps {
2651
2668
  coverImageUrl?: string;
@@ -2733,6 +2750,33 @@ interface GrantPermissionModalProps {
2733
2750
  }
2734
2751
  declare const GrantPermissionModal: React.FC<GrantPermissionModalProps>;
2735
2752
 
2753
+ interface BlockPresenceUser {
2754
+ clientId: string;
2755
+ name: string;
2756
+ color: string;
2757
+ avatar?: string;
2758
+ }
2759
+ /**
2760
+ * Hook that returns the list of users currently active on a specific block.
2761
+ * Subscribes directly to awareness changes for reliable updates.
2762
+ * @param blockId - The block ID to check presence for
2763
+ * @param options.includeSelf - If true, includes the local user in the results (default: false)
2764
+ */
2765
+ declare function useBlockPresence(blockId: string | undefined, options?: {
2766
+ includeSelf?: boolean;
2767
+ }): BlockPresenceUser[];
2768
+
2769
+ /**
2770
+ * Hook that tracks when a user interacts with a block and updates awareness state.
2771
+ * Returns event handlers (onPointerDown) to attach to block containers.
2772
+ *
2773
+ * For custom (non-editable) blocks: attach the returned onPointerDown to the container.
2774
+ * For text blocks: use editor-level onSelectionChange instead.
2775
+ */
2776
+ declare function useTrackBlockFocus(blockId: string | undefined, editor: IxoEditorType | undefined): {
2777
+ onPointerDown: () => void;
2778
+ };
2779
+
2736
2780
  /**
2737
2781
  * GraphQL queries and types for IXO network
2738
2782
  */
@@ -2790,4 +2834,4 @@ declare class GraphQLClient {
2790
2834
  }
2791
2835
  declare const ixoGraphQLClient: GraphQLClient;
2792
2836
 
2793
- export { type EntityVariables as $, AuthorizationTab as A, BlocknoteProvider as B, CoverImage as C, type Addr as D, EvaluationTab as E, FlowPermissionsPanel as F, GrantPermissionModal as G, type HttpMethod as H, IxoEditor as I, type Uint128 as J, type KeyValuePair as K, ListBlockSpec as L, type Expiration as M, type Status as N, OverviewBlock as O, ProposalBlockSpec as P, type Threshold as Q, type Votes as R, StakeType as S, type Timestamp as T, type User as U, ValidatorActionType as V, type CosmosMsgForEmpty as W, type ProposalAction as X, getEntity as Y, type Entity as Z, type EntityResponse as _, useCreateCollaborativeIxoEditor as a, GraphQLClient as a0, ixoGraphQLClient as a1, type GraphQLResponse as a2, type GraphQLRequest as a3, ExternalDropZone as a4, type DropPosition as a5, PageHeader as a6, type PageHeaderProps as a7, type PageHeaderMenuItem as a8, type VisualizationRenderer as a9, type DynamicListData as aa, type DynamicListDataProvider as ab, type DynamicListPanelRenderer as ac, type DomainCardRenderer as ad, type DomainCardData as ae, type IxoEditorProps as b, type CoverImageProps as c, type AuthorizationTabState as d, type EvaluationTabState as e, EntitySigningSetup as f, CheckboxBlockSpec as g, ApiRequestBlockSpec as h, type CheckboxBlockProps as i, type ListBlockSettings as j, type ListBlockProps as k, type OverviewBlockProps as l, type ProposalBlockProps as m, type ApiRequestBlockProps as n, useBlocknoteContext as o, useBlocknoteHandlers as p, AuthzExecActionTypes as q, type BlocknoteHandlers as r, type BlocknoteContextValue as s, type BlockRequirements as t, useCreateIxoEditor as u, type ProposalResponse as v, type SingleChoiceProposal as w, type VoteResponse as x, type VoteInfo as y, type Vote as z };
2837
+ export { getEntity as $, AuthorizationTab as A, type BlockPresenceUser as B, CoverImage as C, type VoteResponse as D, EvaluationTab as E, FlowPermissionsPanel as F, GrantPermissionModal as G, type HttpMethod as H, IxoEditor as I, type VoteInfo as J, type KeyValuePair as K, ListBlockSpec as L, type Vote as M, type Addr as N, OverviewBlock as O, ProposalBlockSpec as P, type Uint128 as Q, type Expiration as R, StakeType as S, type Timestamp as T, type User as U, ValidatorActionType as V, type Status as W, type Threshold as X, type Votes as Y, type CosmosMsgForEmpty as Z, type ProposalAction as _, useCreateCollaborativeIxoEditor as a, type Entity as a0, type EntityResponse as a1, type EntityVariables as a2, GraphQLClient as a3, ixoGraphQLClient as a4, type GraphQLResponse as a5, type GraphQLRequest as a6, ExternalDropZone as a7, type DropPosition as a8, PageHeader as a9, type PageHeaderProps as aa, type PageHeaderMenuItem as ab, type VisualizationRenderer as ac, type DynamicListData as ad, type DynamicListDataProvider as ae, type DynamicListPanelRenderer as af, type DomainCardRenderer as ag, type DomainCardData as ah, type IxoEditorProps as b, type CoverImageProps as c, type AuthorizationTabState as d, type EvaluationTabState as e, EntitySigningSetup as f, CheckboxBlockSpec as g, ApiRequestBlockSpec as h, type CheckboxBlockProps as i, type ListBlockSettings as j, type ListBlockProps as k, type OverviewBlockProps as l, type ProposalBlockProps as m, type ApiRequestBlockProps as n, useBlockPresence as o, useTrackBlockFocus as p, BlocknoteProvider as q, useBlocknoteContext as r, useBlocknoteHandlers as s, AuthzExecActionTypes as t, useCreateIxoEditor as u, type BlocknoteHandlers as v, type BlocknoteContextValue as w, type BlockRequirements as x, type ProposalResponse as y, type SingleChoiceProposal as z };
@@ -42,7 +42,7 @@ declare const blockSpecs: {
42
42
  readonly default: "";
43
43
  };
44
44
  };
45
- readonly content: "inline";
45
+ readonly content: "none";
46
46
  };
47
47
  implementation: _blocknote_core.TiptapBlockImplementation<{
48
48
  readonly type: "checkbox";
@@ -81,7 +81,7 @@ declare const blockSpecs: {
81
81
  readonly default: "";
82
82
  };
83
83
  };
84
- readonly content: "inline";
84
+ readonly content: "none";
85
85
  }, any, _blocknote_core.InlineContentSchema, _blocknote_core.StyleSchema>;
86
86
  };
87
87
  list: {
@@ -384,7 +384,7 @@ declare const blockSpecs: {
384
384
  readonly default: "";
385
385
  };
386
386
  };
387
- readonly content: "inline";
387
+ readonly content: "none";
388
388
  };
389
389
  implementation: _blocknote_core.TiptapBlockImplementation<{
390
390
  readonly type: "apiRequest";
@@ -441,7 +441,7 @@ declare const blockSpecs: {
441
441
  readonly default: "";
442
442
  };
443
443
  };
444
- readonly content: "inline";
444
+ readonly content: "none";
445
445
  }, any, _blocknote_core.InlineContentSchema, _blocknote_core.StyleSchema>;
446
446
  };
447
447
  notify: {
@@ -509,7 +509,7 @@ declare const blockSpecs: {
509
509
  readonly default: "";
510
510
  };
511
511
  };
512
- readonly content: "inline";
512
+ readonly content: "none";
513
513
  };
514
514
  implementation: _blocknote_core.TiptapBlockImplementation<{
515
515
  readonly type: "notify";
@@ -575,7 +575,7 @@ declare const blockSpecs: {
575
575
  readonly default: "";
576
576
  };
577
577
  };
578
- readonly content: "inline";
578
+ readonly content: "none";
579
579
  }, any, _blocknote_core.InlineContentSchema, _blocknote_core.StyleSchema>;
580
580
  };
581
581
  claim: {
@@ -1731,7 +1731,7 @@ declare const blockSpecs: {
1731
1731
  readonly default: string;
1732
1732
  };
1733
1733
  };
1734
- readonly content: "inline";
1734
+ readonly content: "none";
1735
1735
  };
1736
1736
  implementation: _blocknote_core.TiptapBlockImplementation<{
1737
1737
  readonly type: "action";
@@ -1791,7 +1791,7 @@ declare const blockSpecs: {
1791
1791
  readonly default: string;
1792
1792
  };
1793
1793
  };
1794
- readonly content: "inline";
1794
+ readonly content: "none";
1795
1795
  }, any, _blocknote_core.InlineContentSchema, _blocknote_core.StyleSchema>;
1796
1796
  };
1797
1797
  location: {
@@ -2545,6 +2545,17 @@ interface IxoEditorType<BSchema extends IxoBlockSchema = IxoBlockSchema, ISchema
2545
2545
  * @deprecated Use getPageMetadata()?.icon instead
2546
2546
  */
2547
2547
  getLogo?: () => ImageData | undefined;
2548
+ /**
2549
+ * Set the active block for presence awareness
2550
+ * Updates local awareness state so other users can see which block this user is working on
2551
+ * @param blockId - The block ID to mark as active, or null to clear
2552
+ */
2553
+ setActiveBlock?: (blockId: string | null) => void;
2554
+ /**
2555
+ * Get the Yjs awareness instance for presence tracking
2556
+ * @returns Awareness instance or null if not available
2557
+ */
2558
+ getAwarenessInstance?: () => any;
2548
2559
  }
2549
2560
  /**
2550
2561
  * Re-map BlockNote renderer props to use IxoEditorType instead of BlockNoteEditor.
@@ -2627,6 +2638,8 @@ interface IxoCollaborativeUser {
2627
2638
  accessToken: string;
2628
2639
  address: string;
2629
2640
  id: string;
2641
+ /** Optional avatar image URL for presence indicators */
2642
+ avatar?: string;
2630
2643
  }
2631
2644
  interface IxoCollaborativeEditorPermissions {
2632
2645
  /**
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export { D as Addr, n as ApiRequestBlockProps, h as ApiRequestBlockSpec, A as AuthorizationTab, d as AuthorizationTabState, q as AuthzExecActionTypes, t as BlockRequirements, s as BlocknoteContextValue, r as BlocknoteHandlers, B as BlocknoteProvider, i as CheckboxBlockProps, g as CheckboxBlockSpec, W as CosmosMsgForEmpty, C as CoverImage, c as CoverImageProps, Z as Entity, _ as EntityResponse, f as EntitySigningSetup, $ as EntityVariables, E as EvaluationTab, e as EvaluationTabState, M as Expiration, F as FlowPermissionsPanel, G as GrantPermissionModal, a0 as GraphQLClient, a3 as GraphQLRequest, a2 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, X as ProposalAction, m as ProposalBlockProps, P as ProposalBlockSpec, v as ProposalResponse, w as SingleChoiceProposal, S as StakeType, S as StakeTypeValue, N as Status, Q as Threshold, T as Timestamp, J as Uint128, U as User, V as ValidatorActionType, z as Vote, y as VoteInfo, x as VoteResponse, R as Votes, Y as getEntity, a1 as ixoGraphQLClient, o as useBlocknoteContext, p as useBlocknoteHandlers, a as useCreateCollaborativeIxoEditor, u as useCreateIxoEditor } from './graphql-client-sFlqkKTo.mjs';
2
- export { m as ActivationResult, l as AuthorizationContext, A as AuthorizationResult, D as DelegationStore, E as ExecuteNodeParams, k as ExecutionContext, j as ExecutionOutcome, F as FlowRuntimeStateManager, N as NodeActionResult, h as buildAuthzFromProps, g as buildFlowNodeFromBlock, c as createDelegationStore, b as createMemoryDelegationStore, d as createRuntimeStateManager, e as executeNode, f as findValidCapability, i as isActorAuthorized, a as isNodeActive, v as validateCapabilityChain } from './capabilityValidation-Bc1ff6fe.mjs';
3
- export { C as Capability, a as CapabilityValidationResult, D as DelegationGrant, e as IxoCollaborativeEditorOptions, d as IxoCollaborativeUser, c as IxoEditorConfig, I as IxoEditorOptions, b as IxoEditorTheme, S as SignedCapability, f as blockSpecs, g as getExtraSlashMenuItems } from './index-DTx8PaDQ.mjs';
1
+ export { N as Addr, n as ApiRequestBlockProps, h as ApiRequestBlockSpec, A as AuthorizationTab, d as AuthorizationTabState, t as AuthzExecActionTypes, B as BlockPresenceUser, x as BlockRequirements, w as BlocknoteContextValue, v as BlocknoteHandlers, q as BlocknoteProvider, i as CheckboxBlockProps, g as CheckboxBlockSpec, Z as CosmosMsgForEmpty, C as CoverImage, c as CoverImageProps, a0 as Entity, a1 as EntityResponse, f as EntitySigningSetup, a2 as EntityVariables, E as EvaluationTab, e as EvaluationTabState, R as Expiration, F as FlowPermissionsPanel, G as GrantPermissionModal, a3 as GraphQLClient, a6 as GraphQLRequest, a5 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, _ as ProposalAction, m as ProposalBlockProps, P as ProposalBlockSpec, y as ProposalResponse, z as SingleChoiceProposal, S as StakeType, S as StakeTypeValue, W as Status, X as Threshold, T as Timestamp, Q as Uint128, U as User, V as ValidatorActionType, M as Vote, J as VoteInfo, D as VoteResponse, Y as Votes, $ as getEntity, a4 as ixoGraphQLClient, o as useBlockPresence, r as useBlocknoteContext, s as useBlocknoteHandlers, a as useCreateCollaborativeIxoEditor, u as useCreateIxoEditor, p as useTrackBlockFocus } from './graphql-client-DSJ3fRVn.mjs';
2
+ export { m as ActivationResult, l as AuthorizationContext, A as AuthorizationResult, D as DelegationStore, E as ExecuteNodeParams, k as ExecutionContext, j as ExecutionOutcome, F as FlowRuntimeStateManager, N as NodeActionResult, h as buildAuthzFromProps, g as buildFlowNodeFromBlock, c as createDelegationStore, b as createMemoryDelegationStore, d as createRuntimeStateManager, e as executeNode, f as findValidCapability, i as isActorAuthorized, a as isNodeActive, v as validateCapabilityChain } from './capabilityValidation-BrYCMvBB.mjs';
3
+ export { C as Capability, a as CapabilityValidationResult, D as DelegationGrant, e as IxoCollaborativeEditorOptions, d as IxoCollaborativeUser, c as IxoEditorConfig, I as IxoEditorOptions, b as IxoEditorTheme, S as SignedCapability, f as blockSpecs, g as getExtraSlashMenuItems } from './index-BE746hd_.mjs';
4
4
  export { CloneDocumentResult, cloneDocument } from '@ixo/matrix-crdt';
5
5
  export { Block, BlockNoteEditor, BlockNoteSchema, DefaultBlockSchema, DefaultInlineContentSchema, DefaultStyleSchema, PartialBlock } from '@blocknote/core';
6
6
  import 'yjs';
package/dist/index.mjs CHANGED
@@ -20,11 +20,13 @@ import {
20
20
  getEntity,
21
21
  getExtraSlashMenuItems,
22
22
  ixoGraphQLClient,
23
+ useBlockPresence,
23
24
  useBlocknoteContext,
24
25
  useBlocknoteHandlers,
25
26
  useCreateCollaborativeIxoEditor,
26
- useCreateIxoEditor
27
- } from "./chunk-OCT2VOTW.mjs";
27
+ useCreateIxoEditor,
28
+ useTrackBlockFocus
29
+ } from "./chunk-255WVXBP.mjs";
28
30
  import {
29
31
  buildAuthzFromProps,
30
32
  buildFlowNodeFromBlock,
@@ -72,10 +74,12 @@ export {
72
74
  isActorAuthorized,
73
75
  isNodeActive,
74
76
  ixoGraphQLClient,
77
+ useBlockPresence,
75
78
  useBlocknoteContext,
76
79
  useBlocknoteHandlers,
77
80
  useCreateCollaborativeIxoEditor,
78
81
  useCreateIxoEditor,
82
+ useTrackBlockFocus,
79
83
  validateCapabilityChain
80
84
  };
81
85
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Main exports for ixo-editor package\n// This exports the mantine version by default\n// For explicit mantine imports, use:\n// - import { ... } from \"@ixo/editor/mantine\"\n\n// Export the main hook (mantine version by default)\nexport { useCreateIxoEditor } from './mantine/hooks/useCreateIxoEditor';\nexport { useCreateCollaborativeIxoEditor } from './mantine/hooks/useCollaborativeIxoEditor';\n\n// Export the main component (mantine version by default)\nexport { IxoEditor, type IxoEditorProps } from './mantine/IxoEditor';\n\n// Export CoverImage component\nexport { CoverImage, type CoverImageProps } from './mantine/components/CoverImage';\n\n// Export authorization components\nexport { AuthorizationTab, type AuthorizationTabState } from './mantine/components/AuthorizationTab';\nexport { EvaluationTab, type EvaluationTabState } from './mantine/components/EvaluationTab';\nexport { EntitySigningSetup } from './mantine/components/EntitySigningSetup';\nexport { FlowPermissionsPanel } from './mantine/components/FlowPermissionsPanel';\nexport { GrantPermissionModal } from './mantine/components/GrantPermissionModal';\n\n// Export flow engine\nexport {\n executeNode,\n isActorAuthorized,\n isNodeActive,\n validateCapabilityChain,\n findValidCapability,\n createDelegationStore,\n createMemoryDelegationStore,\n createRuntimeStateManager,\n buildFlowNodeFromBlock,\n buildAuthzFromProps,\n} from './core/lib/flowEngine';\nexport type {\n ExecuteNodeParams,\n ExecutionOutcome,\n NodeActionResult,\n ExecutionContext,\n AuthorizationResult,\n AuthorizationContext,\n ActivationResult,\n DelegationStore,\n FlowRuntimeStateManager,\n} from './core/lib/flowEngine';\n\n// Export capability types\nexport type {\n Capability,\n SignedCapability,\n CapabilityValidationResult,\n DelegationGrant,\n} from './core/types/capability';\n\n// Export types from core\nexport type { IxoEditorOptions, IxoEditorTheme, IxoEditorConfig, IxoCollaborativeUser, IxoCollaborativeEditorOptions } from './core/types';\n\n// Export custom blocks (mantine version by default)\nexport { CheckboxBlockSpec, ListBlockSpec, OverviewBlock, ProposalBlockSpec, ApiRequestBlockSpec, blockSpecs, getExtraSlashMenuItems } from './mantine/blocks';\nexport type { CheckboxBlockProps, ListBlockSettings, ListBlockProps } from './mantine/blocks';\nexport type { OverviewBlockProps } from './mantine/blocks';\nexport type { ProposalBlockProps } from './mantine/blocks';\nexport type { ApiRequestBlockProps, HttpMethod, KeyValuePair } from './mantine/blocks';\n\n// Export context and handlers\nexport { BlocknoteProvider, useBlocknoteContext, useBlocknoteHandlers, StakeType, AuthzExecActionTypes, ValidatorActionType } from './mantine/context';\nexport type {\n BlocknoteHandlers,\n BlocknoteContextValue,\n BlockRequirements,\n ProposalResponse,\n SingleChoiceProposal,\n VoteResponse,\n VoteInfo,\n Vote,\n User,\n Addr,\n Uint128,\n Timestamp,\n Expiration,\n Status,\n Threshold,\n Votes,\n CosmosMsgForEmpty,\n ProposalAction,\n StakeTypeValue,\n} from './mantine/context';\n\n// Export GraphQL client and queries from core\nexport { getEntity } from './core/lib/graphql-queries';\nexport type { Entity, EntityResponse, EntityVariables } from './core/lib/graphql-queries';\nexport { GraphQLClient, ixoGraphQLClient } from './core/lib/graphql-client';\nexport type { GraphQLResponse, GraphQLRequest } from './core/lib/graphql-client';\n\n// Re-export cloneDocument from matrix-crdt\nexport { cloneDocument } from '@ixo/matrix-crdt';\nexport type { CloneDocumentResult } from '@ixo/matrix-crdt';\n\n// Re-export useful BlockNote types that users might need\nexport type { BlockNoteEditor, BlockNoteSchema, DefaultBlockSchema, DefaultInlineContentSchema, DefaultStyleSchema, PartialBlock, Block } from '@blocknote/core';\n\n// Note: Additional BlockNote utilities can be imported directly from @blocknote/react if needed\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgGA,SAAS,qBAAqB;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Main exports for ixo-editor package\n// This exports the mantine version by default\n// For explicit mantine imports, use:\n// - import { ... } from \"@ixo/editor/mantine\"\n\n// Export the main hook (mantine version by default)\nexport { useCreateIxoEditor } from './mantine/hooks/useCreateIxoEditor';\nexport { useCreateCollaborativeIxoEditor } from './mantine/hooks/useCollaborativeIxoEditor';\n\n// Export the main component (mantine version by default)\nexport { IxoEditor, type IxoEditorProps } from './mantine/IxoEditor';\n\n// Export CoverImage component\nexport { CoverImage, type CoverImageProps } from './mantine/components/CoverImage';\n\n// Export authorization components\nexport { AuthorizationTab, type AuthorizationTabState } from './mantine/components/AuthorizationTab';\nexport { EvaluationTab, type EvaluationTabState } from './mantine/components/EvaluationTab';\nexport { EntitySigningSetup } from './mantine/components/EntitySigningSetup';\nexport { FlowPermissionsPanel } from './mantine/components/FlowPermissionsPanel';\nexport { GrantPermissionModal } from './mantine/components/GrantPermissionModal';\n\n// Export flow engine\nexport {\n executeNode,\n isActorAuthorized,\n isNodeActive,\n validateCapabilityChain,\n findValidCapability,\n createDelegationStore,\n createMemoryDelegationStore,\n createRuntimeStateManager,\n buildFlowNodeFromBlock,\n buildAuthzFromProps,\n} from './core/lib/flowEngine';\nexport type {\n ExecuteNodeParams,\n ExecutionOutcome,\n NodeActionResult,\n ExecutionContext,\n AuthorizationResult,\n AuthorizationContext,\n ActivationResult,\n DelegationStore,\n FlowRuntimeStateManager,\n} from './core/lib/flowEngine';\n\n// Export capability types\nexport type { Capability, SignedCapability, CapabilityValidationResult, DelegationGrant } from './core/types/capability';\n\n// Export types from core\nexport type { IxoEditorOptions, IxoEditorTheme, IxoEditorConfig, IxoCollaborativeUser, IxoCollaborativeEditorOptions } from './core/types';\n\n// Export custom blocks (mantine version by default)\nexport { CheckboxBlockSpec, ListBlockSpec, OverviewBlock, ProposalBlockSpec, ApiRequestBlockSpec, blockSpecs, getExtraSlashMenuItems } from './mantine/blocks';\nexport type { CheckboxBlockProps, ListBlockSettings, ListBlockProps } from './mantine/blocks';\nexport type { OverviewBlockProps } from './mantine/blocks';\nexport type { ProposalBlockProps } from './mantine/blocks';\nexport type { ApiRequestBlockProps, HttpMethod, KeyValuePair } from './mantine/blocks';\n\n// Export block presence hooks\nexport { useBlockPresence, type BlockPresenceUser } from './mantine/hooks/useBlockPresence';\nexport { useTrackBlockFocus } from './mantine/hooks/useTrackBlockFocus';\n\n// Export context and handlers\nexport { BlocknoteProvider, useBlocknoteContext, useBlocknoteHandlers, StakeType, AuthzExecActionTypes, ValidatorActionType } from './mantine/context';\nexport type {\n BlocknoteHandlers,\n BlocknoteContextValue,\n BlockRequirements,\n ProposalResponse,\n SingleChoiceProposal,\n VoteResponse,\n VoteInfo,\n Vote,\n User,\n Addr,\n Uint128,\n Timestamp,\n Expiration,\n Status,\n Threshold,\n Votes,\n CosmosMsgForEmpty,\n ProposalAction,\n StakeTypeValue,\n} from './mantine/context';\n\n// Export GraphQL client and queries from core\nexport { getEntity } from './core/lib/graphql-queries';\nexport type { Entity, EntityResponse, EntityVariables } from './core/lib/graphql-queries';\nexport { GraphQLClient, ixoGraphQLClient } from './core/lib/graphql-client';\nexport type { GraphQLResponse, GraphQLRequest } from './core/lib/graphql-client';\n\n// Re-export cloneDocument from matrix-crdt\nexport { cloneDocument } from '@ixo/matrix-crdt';\nexport type { CloneDocumentResult } from '@ixo/matrix-crdt';\n\n// Re-export useful BlockNote types that users might need\nexport type { BlockNoteEditor, BlockNoteSchema, DefaultBlockSchema, DefaultInlineContentSchema, DefaultStyleSchema, PartialBlock, Block } from '@blocknote/core';\n\n// Note: Additional BlockNote utilities can be imported directly from @blocknote/react if needed\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+FA,SAAS,qBAAqB;","names":[]}
@@ -1,8 +1,8 @@
1
- import { r as BlocknoteHandlers } from '../graphql-client-sFlqkKTo.mjs';
2
- export { D as Addr, n as ApiRequestBlockProps, h as ApiRequestBlockSpec, A as AuthorizationTab, d as AuthorizationTabState, q as AuthzExecActionTypes, t as BlockRequirements, s as BlocknoteContextValue, B as BlocknoteProvider, i as CheckboxBlockProps, g as CheckboxBlockSpec, W as CosmosMsgForEmpty, C as CoverImage, c as CoverImageProps, ae as DomainCardData, ad as DomainCardRenderer, a5 as DropPosition, aa as DynamicListData, ab as DynamicListDataProvider, ac as DynamicListPanelRenderer, Z as Entity, _ as EntityResponse, f as EntitySigningSetup, $ as EntityVariables, E as EvaluationTab, e as EvaluationTabState, M as Expiration, a4 as ExternalDropZone, F as FlowPermissionsPanel, G as GrantPermissionModal, a0 as GraphQLClient, a3 as GraphQLRequest, a2 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, a6 as PageHeader, a8 as PageHeaderMenuItem, a7 as PageHeaderProps, X as ProposalAction, m as ProposalBlockProps, P as ProposalBlockSpec, v as ProposalResponse, w as SingleChoiceProposal, S as StakeType, S as StakeTypeValue, N as Status, Q as Threshold, T as Timestamp, J as Uint128, U as User, V as ValidatorActionType, a9 as VisualizationRenderer, z as Vote, y as VoteInfo, x as VoteResponse, R as Votes, Y as getEntity, a1 as ixoGraphQLClient, o as useBlocknoteContext, p as useBlocknoteHandlers, a as useCreateCollaborativeIxoEditor, u as useCreateIxoEditor } from '../graphql-client-sFlqkKTo.mjs';
1
+ import { v as BlocknoteHandlers } from '../graphql-client-DSJ3fRVn.mjs';
2
+ export { N as Addr, n as ApiRequestBlockProps, h as ApiRequestBlockSpec, A as AuthorizationTab, d as AuthorizationTabState, t as AuthzExecActionTypes, B as BlockPresenceUser, x as BlockRequirements, w as BlocknoteContextValue, q as BlocknoteProvider, i as CheckboxBlockProps, g as CheckboxBlockSpec, Z as CosmosMsgForEmpty, C as CoverImage, c as CoverImageProps, ah as DomainCardData, ag as DomainCardRenderer, a8 as DropPosition, ad as DynamicListData, ae as DynamicListDataProvider, af as DynamicListPanelRenderer, a0 as Entity, a1 as EntityResponse, f as EntitySigningSetup, a2 as EntityVariables, E as EvaluationTab, e as EvaluationTabState, R as Expiration, a7 as ExternalDropZone, F as FlowPermissionsPanel, G as GrantPermissionModal, a3 as GraphQLClient, a6 as GraphQLRequest, a5 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, a9 as PageHeader, ab as PageHeaderMenuItem, aa as PageHeaderProps, _ as ProposalAction, m as ProposalBlockProps, P as ProposalBlockSpec, y as ProposalResponse, z as SingleChoiceProposal, S as StakeType, S as StakeTypeValue, W as Status, X as Threshold, T as Timestamp, Q as Uint128, U as User, V as ValidatorActionType, ac as VisualizationRenderer, M as Vote, J as VoteInfo, D as VoteResponse, Y as Votes, $ as getEntity, a4 as ixoGraphQLClient, o as useBlockPresence, r as useBlocknoteContext, s as useBlocknoteHandlers, a as useCreateCollaborativeIxoEditor, u as useCreateIxoEditor, p as useTrackBlockFocus } from '../graphql-client-DSJ3fRVn.mjs';
3
3
  import React$1, { PropsWithChildren } from 'react';
4
- import { K as IxoBlockProps, J as IxoEditorType, p as FlowNodeRuntimeState } from '../index-DTx8PaDQ.mjs';
5
- export { e as IxoCollaborativeEditorOptions, d as IxoCollaborativeUser, c as IxoEditorConfig, I as IxoEditorOptions, b as IxoEditorTheme, f as blockSpecs, g as getExtraSlashMenuItems } from '../index-DTx8PaDQ.mjs';
4
+ import { K as IxoBlockProps, J as IxoEditorType, p as FlowNodeRuntimeState } from '../index-BE746hd_.mjs';
5
+ export { e as IxoCollaborativeEditorOptions, d as IxoCollaborativeUser, c as IxoEditorConfig, I as IxoEditorOptions, b as IxoEditorTheme, f as blockSpecs, g as getExtraSlashMenuItems } from '../index-BE746hd_.mjs';
6
6
  import * as zustand from 'zustand';
7
7
  import * as _blocknote_core from '@blocknote/core';
8
8
  export { Block, BlockNoteEditor, BlockNoteSchema, DefaultBlockSchema, DefaultInlineContentSchema, DefaultStyleSchema, PartialBlock } from '@blocknote/core';
@@ -32,6 +32,7 @@ import {
32
32
  registerBlockActions,
33
33
  registerBuiltInActionTypes,
34
34
  registerHookedActionType,
35
+ useBlockPresence,
35
36
  useBlocknoteContext,
36
37
  useBlocknoteHandlers,
37
38
  useCreateCollaborativeIxoEditor,
@@ -41,8 +42,9 @@ import {
41
42
  useListBlocksUIStore,
42
43
  useNodeRuntime,
43
44
  usePanel,
44
- usePanelStore
45
- } from "../chunk-OCT2VOTW.mjs";
45
+ usePanelStore,
46
+ useTrackBlockFocus
47
+ } from "../chunk-255WVXBP.mjs";
46
48
  import "../chunk-MVIGR7ZU.mjs";
47
49
  export {
48
50
  ApiRequestBlockSpec,
@@ -78,6 +80,7 @@ export {
78
80
  registerBlockActions,
79
81
  registerBuiltInActionTypes,
80
82
  registerHookedActionType,
83
+ useBlockPresence,
81
84
  useBlocknoteContext,
82
85
  useBlocknoteHandlers,
83
86
  useCreateCollaborativeIxoEditor,
@@ -87,6 +90,7 @@ export {
87
90
  useListBlocksUIStore,
88
91
  useNodeRuntime,
89
92
  usePanel,
90
- usePanelStore
93
+ usePanelStore,
94
+ useTrackBlockFocus
91
95
  };
92
96
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ixo/editor",
3
- "version": "3.0.0-beta.11",
3
+ "version": "3.0.0-beta.13",
4
4
  "description": "A custom BlockNote editor wrapper for IXO team",
5
5
  "main": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",
package/style-core.css CHANGED
@@ -277,6 +277,36 @@
277
277
  }
278
278
  }
279
279
 
280
+ /* Block presence awareness */
281
+ .ixo-block-presence-border {
282
+ transition: border-left-color 200ms ease;
283
+ }
284
+
285
+ .ixo-block-presence-badges {
286
+ position: absolute;
287
+ top: -8px;
288
+ right: 12px;
289
+ display: flex;
290
+ gap: 4px;
291
+ z-index: 10;
292
+ pointer-events: none;
293
+ }
294
+
295
+ .ixo-block-presence-badge {
296
+ width: 20px;
297
+ height: 20px;
298
+ border-radius: 50%;
299
+ display: flex;
300
+ align-items: center;
301
+ justify-content: center;
302
+ font-size: 11px;
303
+ font-weight: 600;
304
+ color: #fff;
305
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
306
+ pointer-events: none;
307
+ overflow: hidden;
308
+ }
309
+
280
310
  /* Hide ProseMirror drop cursor ONLY when dragging external artifacts */
281
311
  body.external-artifact-drag-active .prosemirror-dropcursor-block,
282
312
  body.external-artifact-drag-active .prosemirror-dropcursor-inline {
package/style-mantine.css CHANGED
@@ -374,6 +374,36 @@
374
374
  }
375
375
  }
376
376
 
377
+ /* Block presence awareness */
378
+ .ixo-block-presence-border {
379
+ transition: border-left-color 200ms ease;
380
+ }
381
+
382
+ .ixo-block-presence-badges {
383
+ position: absolute;
384
+ top: -8px;
385
+ right: 12px;
386
+ display: flex;
387
+ gap: 4px;
388
+ z-index: 10;
389
+ pointer-events: none;
390
+ }
391
+
392
+ .ixo-block-presence-badge {
393
+ width: 20px;
394
+ height: 20px;
395
+ border-radius: 50%;
396
+ display: flex;
397
+ align-items: center;
398
+ justify-content: center;
399
+ font-size: 11px;
400
+ font-weight: 600;
401
+ color: #fff;
402
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
403
+ pointer-events: none;
404
+ overflow: hidden;
405
+ }
406
+
377
407
  /* Hide ProseMirror drop cursor ONLY when dragging external artifacts */
378
408
  body.external-artifact-drag-active .prosemirror-dropcursor-block,
379
409
  body.external-artifact-drag-active .prosemirror-dropcursor-inline {
package/style.css CHANGED
@@ -374,6 +374,36 @@
374
374
  }
375
375
  }
376
376
 
377
+ /* Block presence awareness */
378
+ .ixo-block-presence-border {
379
+ transition: border-left-color 200ms ease;
380
+ }
381
+
382
+ .ixo-block-presence-badges {
383
+ position: absolute;
384
+ top: -8px;
385
+ right: 12px;
386
+ display: flex;
387
+ gap: 4px;
388
+ z-index: 10;
389
+ pointer-events: none;
390
+ }
391
+
392
+ .ixo-block-presence-badge {
393
+ width: 20px;
394
+ height: 20px;
395
+ border-radius: 50%;
396
+ display: flex;
397
+ align-items: center;
398
+ justify-content: center;
399
+ font-size: 11px;
400
+ font-weight: 600;
401
+ color: #fff;
402
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
403
+ pointer-events: none;
404
+ overflow: hidden;
405
+ }
406
+
377
407
  /* Hide ProseMirror drop cursor ONLY when dragging external artifacts */
378
408
  body.external-artifact-drag-active .prosemirror-dropcursor-block,
379
409
  body.external-artifact-drag-active .prosemirror-dropcursor-inline {