@xnetjs/react 0.12.0 → 2.0.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
1
  import {
2
2
  useMutate,
3
3
  useQuery
4
- } from "./chunk-EJEGIEIC.js";
4
+ } from "./chunk-ZGP56IIJ.js";
5
5
  import {
6
6
  XNetContext,
7
7
  downloadBackup,
@@ -9,7 +9,7 @@ import {
9
9
  useNodeStore,
10
10
  useSecurityContext,
11
11
  useXNet
12
- } from "./chunk-RIN2MXZK.js";
12
+ } from "./chunk-H44ZSIH4.js";
13
13
 
14
14
  // src/hooks/useTaskProjectionSync.ts
15
15
  import { ExternalReferenceSchema, TaskSchema, isCompletedTaskStatus } from "@xnetjs/data";
@@ -2478,7 +2478,9 @@ function useCan(nodeId) {
2478
2478
  try {
2479
2479
  const [read, write, del, share] = await Promise.all([
2480
2480
  store.auth.can({ action: "read", nodeId }),
2481
- store.auth.can({ action: "write", nodeId }),
2481
+ // 'update' is the precise verb for mutating an existing node; it
2482
+ // falls back to the schema's write expression (0304).
2483
+ store.auth.can({ action: "update", nodeId }),
2482
2484
  store.auth.can({ action: "delete", nodeId }),
2483
2485
  store.auth.can({ action: "share", nodeId })
2484
2486
  ]);
@@ -2553,7 +2555,9 @@ function useCanEdit(nodeId) {
2553
2555
  try {
2554
2556
  const [read, write] = await Promise.all([
2555
2557
  store.auth.can({ action: "read", nodeId }),
2556
- store.auth.can({ action: "write", nodeId })
2558
+ // 'update' is the precise verb for mutating an existing node; it
2559
+ // falls back to the schema's write expression (0304).
2560
+ store.auth.can({ action: "update", nodeId })
2557
2561
  ]);
2558
2562
  if (requestRef.current !== requestId) return;
2559
2563
  const roleSet = /* @__PURE__ */ new Set([...read.roles, ...write.roles]);
@@ -80,7 +80,8 @@ function useTracingReporter() {
80
80
  }
81
81
 
82
82
  // src/hooks/usePlugins.ts
83
- import { createContext as createContext4, useContext as useContext4, useState as useState2, useEffect as useEffect2 } from "react";
83
+ import { warnOnEditorSchemaRisks } from "@xnetjs/plugins";
84
+ import { createContext as createContext4, useContext as useContext4, useState as useState2, useEffect as useEffect2, useMemo as useMemo2 } from "react";
84
85
  var PluginRegistryContext = createContext4(null);
85
86
  function usePluginRegistry() {
86
87
  const registry = useContext4(PluginRegistryContext);
@@ -180,6 +181,39 @@ function useEditorExtensionsSafe() {
180
181
  }, [registry]);
181
182
  return items;
182
183
  }
184
+ function mergeEditorContributions(contributions, bundledSpecNames = []) {
185
+ const risks = warnOnEditorSchemaRisks("plugin-host", contributions, bundledSpecNames);
186
+ const risky = new Set(risks.map((risk) => `${risk.kind}:${risk.name}`));
187
+ const sorted = [...contributions].sort((a, b) => (a.priority ?? 100) - (b.priority ?? 100));
188
+ const merged = {
189
+ blockSpecs: {},
190
+ inlineContentSpecs: {},
191
+ styleSpecs: {},
192
+ slashMenuItems: []
193
+ };
194
+ for (const contribution of sorted) {
195
+ for (const [name, spec] of Object.entries(contribution.blockSpecs ?? {})) {
196
+ if (!risky.has(`block:${name}`)) merged.blockSpecs[name] = spec;
197
+ }
198
+ for (const [name, spec] of Object.entries(contribution.inlineContentSpecs ?? {})) {
199
+ if (!risky.has(`inlineContent:${name}`)) merged.inlineContentSpecs[name] = spec;
200
+ }
201
+ for (const [name, spec] of Object.entries(contribution.styleSpecs ?? {})) {
202
+ if (!risky.has(`style:${name}`)) merged.styleSpecs[name] = spec;
203
+ }
204
+ if (contribution.slashMenuItems) {
205
+ merged.slashMenuItems.push(...contribution.slashMenuItems);
206
+ }
207
+ }
208
+ return merged;
209
+ }
210
+ function useMergedEditorContributions(bundledSpecNames = []) {
211
+ const contributions = useEditorExtensionsSafe();
212
+ return useMemo2(
213
+ () => mergeEditorContributions(contributions, bundledSpecNames),
214
+ [contributions, bundledSpecNames]
215
+ );
216
+ }
183
217
  function useView(type) {
184
218
  const views = useViews();
185
219
  return views.find((v) => v.type === type);
@@ -229,7 +263,7 @@ function createRuntimeStatus(runtime, overrides = {}) {
229
263
  // src/context.ts
230
264
  import { UndoManager } from "@xnetjs/history";
231
265
  import { PluginRegistry } from "@xnetjs/plugins";
232
- import React, { createContext as createContext5, useContext as useContext5, useEffect as useEffect6, useMemo as useMemo2, useState as useState5 } from "react";
266
+ import React, { createContext as createContext5, useContext as useContext5, useEffect as useEffect6, useMemo as useMemo3, useState as useState5 } from "react";
233
267
 
234
268
  // src/provider/debug.ts
235
269
  function log(...args) {
@@ -972,11 +1006,11 @@ function XNetProvider({ config, children }) {
972
1006
  const authorDID = config.authorDID ?? config.identity?.did;
973
1007
  const hubUrl = config.hubUrl ?? null;
974
1008
  const signalingServersKey = (config.signalingServers ?? []).join("\n");
975
- const signalingServers = useMemo2(
1009
+ const signalingServers = useMemo3(
976
1010
  () => signalingServersKey ? signalingServersKey.split("\n") : [],
977
1011
  [signalingServersKey]
978
1012
  );
979
- const signalingUrls = useMemo2(
1013
+ const signalingUrls = useMemo3(
980
1014
  () => resolveConfiguredSignalingUrls(hubUrl, signalingServers),
981
1015
  [hubUrl, signalingServers]
982
1016
  );
@@ -989,7 +1023,7 @@ function XNetProvider({ config, children }) {
989
1023
  const nodeSyncRoom = hubOptions?.nodeSyncRoom ?? authorDID ?? "default";
990
1024
  const encryptionKey = config.encryptionKey ?? null;
991
1025
  const runtimeWorkerUrlKey = config.runtime?.worker?.url ? String(config.runtime.worker.url) : "";
992
- const runtimeConfig = useMemo2(
1026
+ const runtimeConfig = useMemo3(
993
1027
  () => resolveRuntimeConfig(config.runtime, platform),
994
1028
  [
995
1029
  config.runtime?.mode,
@@ -1086,7 +1120,7 @@ function XNetProvider({ config, children }) {
1086
1120
  setUndoManager(null);
1087
1121
  };
1088
1122
  }, [nodeStore, nodeStoreReady, authorDID, config.telemetry]);
1089
- const value = useMemo2(
1123
+ const value = useMemo3(
1090
1124
  () => ({
1091
1125
  nodeStore,
1092
1126
  nodeStoreReady,
@@ -1121,7 +1155,7 @@ function XNetProvider({ config, children }) {
1121
1155
  undoManager
1122
1156
  ]
1123
1157
  );
1124
- const internalValue = useMemo2(
1158
+ const internalValue = useMemo3(
1125
1159
  () => ({
1126
1160
  authorDID: authorDID ?? null,
1127
1161
  signingKey: config.signingKey ?? null,
@@ -1198,6 +1232,8 @@ export {
1198
1232
  useImporters,
1199
1233
  useEditorExtensions,
1200
1234
  useEditorExtensionsSafe,
1235
+ mergeEditorContributions,
1236
+ useMergedEditorContributions,
1201
1237
  useView,
1202
1238
  useCommand,
1203
1239
  uploadBackup,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useNodeStore
3
- } from "./chunk-RIN2MXZK.js";
3
+ } from "./chunk-H44ZSIH4.js";
4
4
 
5
5
  // src/hooks/useDatabaseDoc.ts
6
6
  import {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useNodeStore
3
- } from "./chunk-RIN2MXZK.js";
3
+ } from "./chunk-H44ZSIH4.js";
4
4
 
5
5
  // src/hooks/useUndoScope.ts
6
6
  import { UndoManager } from "@xnetjs/history";
@@ -2,7 +2,7 @@ import {
2
2
  flattenNode,
3
3
  useQuery,
4
4
  useSyncManager
5
- } from "./chunk-EJEGIEIC.js";
5
+ } from "./chunk-ZGP56IIJ.js";
6
6
  import {
7
7
  useInstrumentation
8
8
  } from "./chunk-JCOFKBOB.js";
@@ -11,7 +11,7 @@ import {
11
11
  useNodeStore,
12
12
  useXNet,
13
13
  useXNetInternal
14
- } from "./chunk-RIN2MXZK.js";
14
+ } from "./chunk-H44ZSIH4.js";
15
15
 
16
16
  // src/hooks/useInfiniteQuery.ts
17
17
  import { createQueryDescriptor, serializeQueryDescriptor } from "@xnetjs/data-bridge";
@@ -7,7 +7,7 @@ import {
7
7
  useDataBridge,
8
8
  useTelemetryReporter,
9
9
  useTracingReporter
10
- } from "./chunk-RIN2MXZK.js";
10
+ } from "./chunk-H44ZSIH4.js";
11
11
 
12
12
  // src/utils/flattenNode.ts
13
13
  function flattenNode(node, options) {
package/dist/core.js CHANGED
@@ -5,16 +5,16 @@ import {
5
5
  useInfiniteQuery,
6
6
  useIsOffline,
7
7
  useNode
8
- } from "./chunk-Q3NDLI6Z.js";
8
+ } from "./chunk-VZMZQTR7.js";
9
9
  import {
10
10
  useMutate,
11
11
  useQuery
12
- } from "./chunk-EJEGIEIC.js";
12
+ } from "./chunk-ZGP56IIJ.js";
13
13
  import "./chunk-JCOFKBOB.js";
14
14
  import {
15
15
  XNetProvider,
16
16
  useXNet
17
- } from "./chunk-RIN2MXZK.js";
17
+ } from "./chunk-H44ZSIH4.js";
18
18
  export {
19
19
  ErrorBoundary,
20
20
  OfflineIndicator,
package/dist/database.js CHANGED
@@ -6,8 +6,8 @@ import {
6
6
  useDatabaseSchema,
7
7
  useRelatedRows,
8
8
  useReverseRelations
9
- } from "./chunk-WL7OCTSM.js";
10
- import "./chunk-RIN2MXZK.js";
9
+ } from "./chunk-HTFAHJQK.js";
10
+ import "./chunk-H44ZSIH4.js";
11
11
  export {
12
12
  useCell,
13
13
  useDatabase,
@@ -1572,6 +1572,44 @@ declare function useEditorExtensions(): EditorContribution[];
1572
1572
  * Safe version that doesn't throw if plugins aren't enabled.
1573
1573
  */
1574
1574
  declare function useEditorExtensionsSafe(): EditorContribution[];
1575
+ /**
1576
+ * Plugin-contributed BlockNote specs and slash menu items, merged across
1577
+ * all editor contributions in priority order.
1578
+ */
1579
+ interface MergedEditorContributions {
1580
+ /** BlockNote block specs, keyed by block type name */
1581
+ blockSpecs: Record<string, unknown>;
1582
+ /** BlockNote inline content specs, keyed by type name */
1583
+ inlineContentSpecs: Record<string, unknown>;
1584
+ /** BlockNote style specs, keyed by style name */
1585
+ styleSpecs: Record<string, unknown>;
1586
+ /** Behavior-only slash menu items (skew-safe) */
1587
+ slashMenuItems: SlashCommandContribution[];
1588
+ }
1589
+ /**
1590
+ * Merge editor contributions (priority order; lower = earlier, later wins
1591
+ * on spec-name collision) and run the schema-skew guard (0205/0312).
1592
+ *
1593
+ * `bundledSpecNames` is the host editor's statically bundled spec list
1594
+ * (`XNET_SCHEMA_SPEC_NAMES` from `@xnetjs/editor/react` — passed by the
1595
+ * caller because this package must not depend on the editor). Specs NOT in
1596
+ * that list change the persisted document schema for only some peers, so
1597
+ * they are warned about and excluded from the merge.
1598
+ */
1599
+ declare function mergeEditorContributions(contributions: readonly EditorContribution[], bundledSpecNames?: readonly string[]): MergedEditorContributions;
1600
+ /**
1601
+ * Collect and merge all plugin editor contributions (BlockNote specs +
1602
+ * slash menu items) from the registry, with reactive updates. Safe when
1603
+ * the plugin system isn't enabled (returns empty results).
1604
+ *
1605
+ * @example
1606
+ * ```tsx
1607
+ * import { XNET_SCHEMA_SPEC_NAMES } from '@xnetjs/editor/react'
1608
+ *
1609
+ * const { slashMenuItems } = useMergedEditorContributions(XNET_SCHEMA_SPEC_NAMES)
1610
+ * ```
1611
+ */
1612
+ declare function useMergedEditorContributions(bundledSpecNames?: readonly string[]): MergedEditorContributions;
1575
1613
  /**
1576
1614
  * Get a specific view by type
1577
1615
  */
@@ -1581,4 +1619,4 @@ declare function useView(type: string): ViewContribution | undefined;
1581
1619
  */
1582
1620
  declare function useCommand(id: string): CommandContribution | undefined;
1583
1621
 
1584
- export { summarizeReactionNode as $, type AddCommentOptions as A, selectPublicInteractionMode as B, type CommentThread as C, summarizeModerationLabel as D, summarizePublicInteractionPolicy as E, type CommentVisibility as F, type FirstContactMode as G, type ModeratedCommentThread as H, type InteractionPermission as I, type ModerationFilterOptions as J, type ModerationLabelSummary as K, type PublicInteractionMode as L, type ModeratedCommentNode as M, type PublicInteractionPolicySnapshot as N, type PublicInteractionSurface as O, type PageTaskInput as P, type PublicModerationMode as Q, type ReplyContext as R, type UseModeratedThreadOptions as S, type TaskProjectionInput as T, type UseTaskProjectionSyncResult as U, type UseVisibleCommentsOptions as V, type UseVisibleCommentsResult as W, usePolicyFilteredReactionCounters as X, createReactionCounterSnapshot as Y, dedupeReactions as Z, isReactionVisible as _, type TaskTreeItem as a, type RemoteSchemaDefinition as a$, type AddReactionOptions as a0, type ReactionCounterSnapshot as a1, type ReactionNode as a2, type ReactionType as a3, type UsePolicyFilteredReactionCountersOptions as a4, type UsePolicyFilteredReactionCountersResult as a5, useMessageRequests as a6, createConversationKey as a7, createMessageRequestProperties as a8, evaluateFirstContactDecision as a9, type UseBlameResult as aA, useVerification as aB, type UseVerificationResult as aC, useHubStatus as aD, useCan as aE, type UseCanResult as aF, useCanEdit as aG, type UseCanEditResult as aH, describeGrantConsent as aI, useGrants as aJ, type GrantConsentSummary as aK, type GrantInput as aL, type UseGrantsResult as aM, summarizeAuthTrace as aN, useAuthTrace as aO, type AuthTraceSummary as aP, type UseAuthTraceResult as aQ, useBackup as aR, type UseBackupReturn as aS, useFileUpload as aT, type FileRef as aU, type UseFileUploadReturn as aV, useHubSearch as aW, type HubSearchOptions as aX, type HubSearchResult as aY, type HubSearchState as aZ, useRemoteSchema as a_, findLatestMessageRequest as aa, hasAcceptedContact as ab, summarizeMessageRequest as ac, type CreateMessageRequestOptions as ad, type FirstContactAdmission as ae, type FirstContactDecision as af, type FirstContactDecisionInput as ag, type FirstContactVisibility as ah, type MessageRequestNode as ai, type MessageRequestProperties as aj, type MessageRequestStatus as ak, type UseMessageRequestsOptions as al, type UseMessageRequestsResult as am, useCommentCount as an, useCommentCounts as ao, useHistory as ap, type UseHistoryResult as aq, useUndo as ar, type UseUndoResult as as, type UseUndoOptions as at, useAudit as au, type UseAuditResult as av, type UseAuditOptions as aw, useDiff as ax, type UseDiffResult as ay, useBlame as az, type UseFindOptions as b, useViews as b$, type RemoteSchemaState as b0, usePeerDiscovery as b1, type DiscoveredPeer as b2, HubStatusIndicator as b3, Skeleton as b4, injectSkeletonStyles as b5, type SkeletonProps as b6, DemoBanner as b7, type DemoBannerProps as b8, DemoQuotaIndicator as b9, type OnboardingContextValue as bA, type OnboardingFlowProps as bB, type OnboardingState as bC, type OnboardingEvent as bD, type OnboardingMachineContext as bE, type OnboardingReducerState as bF, type QuickStartTemplate as bG, type SyncProgressOverlayProps as bH, PageTasksPanel as bI, type PageTasksPanelProps as bJ, TaskCollectionEmbed as bK, type TaskCollectionEmbedProps as bL, SecurityProvider as bM, useSecurityContext as bN, useSecurityContextOptional as bO, type SecurityContextState as bP, type SecurityContextActions as bQ, type SecurityContextValue as bR, type SecurityProviderProps as bS, useSecurity as bT, type UseSecurityOptions as bU, type UseSecurityResult as bV, PluginRegistryContext as bW, usePluginRegistry as bX, usePluginRegistryOptional as bY, usePlugins as bZ, useContributions as b_, type DemoQuotaIndicatorProps as ba, DemoDataExpiredScreen as bb, useDemoMode as bc, type DemoModeState as bd, type DemoLimits as be, type DemoUsage as bf, useSyncManager as bg, OnboardingProvider as bh, useOnboarding as bi, OnboardingFlow as bj, WelcomeScreen as bk, AuthenticatingScreen as bl, AuthErrorScreen as bm, UnsupportedBrowserScreen as bn, ImportIdentityScreen as bo, HubConnectScreen as bp, ReadyScreen as bq, SmartWelcome as br, SyncProgressOverlay as bs, onboardingReducer as bt, createInitialState as bu, QUICK_START_TEMPLATES as bv, getPlatformAuthName as bw, truncateDid as bx, copyToClipboard as by, type OnboardingProviderProps as bz, type UseFindResult as c, useCommands as c0, useSlashCommands as c1, useSidebarItems as c2, useImporters as c3, useEditorExtensions as c4, useEditorExtensionsSafe as c5, useView as c6, useCommand as c7, usePageTaskSync as d, type PageTaskReferenceInput as e, type UsePageTaskSyncOptions as f, type UsePageTaskSyncResult as g, useTaskProjectionSync as h, type TaskProjectionReferenceInput as i, type TaskProjectionHost as j, type UseTaskProjectionSyncOptions as k, useTasks as l, type UseTasksOptions as m, type UseTasksResult as n, useComments as o, type UseCommentsOptions as p, type UseCommentsResult as q, type CommentNode as r, useVisibleComments as s, useModeratedThread as t, useFind as u, createModerationLabelIndex as v, evaluateCommentModeration as w, evaluateInteractionPermission as x, moderateThread as y, selectActiveInteractionPolicy as z };
1622
+ export { summarizeReactionNode as $, type AddCommentOptions as A, selectPublicInteractionMode as B, type CommentThread as C, summarizeModerationLabel as D, summarizePublicInteractionPolicy as E, type CommentVisibility as F, type FirstContactMode as G, type ModeratedCommentThread as H, type InteractionPermission as I, type ModerationFilterOptions as J, type ModerationLabelSummary as K, type PublicInteractionMode as L, type ModeratedCommentNode as M, type PublicInteractionPolicySnapshot as N, type PublicInteractionSurface as O, type PageTaskInput as P, type PublicModerationMode as Q, type ReplyContext as R, type UseModeratedThreadOptions as S, type TaskProjectionInput as T, type UseTaskProjectionSyncResult as U, type UseVisibleCommentsOptions as V, type UseVisibleCommentsResult as W, usePolicyFilteredReactionCounters as X, createReactionCounterSnapshot as Y, dedupeReactions as Z, isReactionVisible as _, type TaskTreeItem as a, type RemoteSchemaDefinition as a$, type AddReactionOptions as a0, type ReactionCounterSnapshot as a1, type ReactionNode as a2, type ReactionType as a3, type UsePolicyFilteredReactionCountersOptions as a4, type UsePolicyFilteredReactionCountersResult as a5, useMessageRequests as a6, createConversationKey as a7, createMessageRequestProperties as a8, evaluateFirstContactDecision as a9, type UseBlameResult as aA, useVerification as aB, type UseVerificationResult as aC, useHubStatus as aD, useCan as aE, type UseCanResult as aF, useCanEdit as aG, type UseCanEditResult as aH, describeGrantConsent as aI, useGrants as aJ, type GrantConsentSummary as aK, type GrantInput as aL, type UseGrantsResult as aM, summarizeAuthTrace as aN, useAuthTrace as aO, type AuthTraceSummary as aP, type UseAuthTraceResult as aQ, useBackup as aR, type UseBackupReturn as aS, useFileUpload as aT, type FileRef as aU, type UseFileUploadReturn as aV, useHubSearch as aW, type HubSearchOptions as aX, type HubSearchResult as aY, type HubSearchState as aZ, useRemoteSchema as a_, findLatestMessageRequest as aa, hasAcceptedContact as ab, summarizeMessageRequest as ac, type CreateMessageRequestOptions as ad, type FirstContactAdmission as ae, type FirstContactDecision as af, type FirstContactDecisionInput as ag, type FirstContactVisibility as ah, type MessageRequestNode as ai, type MessageRequestProperties as aj, type MessageRequestStatus as ak, type UseMessageRequestsOptions as al, type UseMessageRequestsResult as am, useCommentCount as an, useCommentCounts as ao, useHistory as ap, type UseHistoryResult as aq, useUndo as ar, type UseUndoResult as as, type UseUndoOptions as at, useAudit as au, type UseAuditResult as av, type UseAuditOptions as aw, useDiff as ax, type UseDiffResult as ay, useBlame as az, type UseFindOptions as b, useViews as b$, type RemoteSchemaState as b0, usePeerDiscovery as b1, type DiscoveredPeer as b2, HubStatusIndicator as b3, Skeleton as b4, injectSkeletonStyles as b5, type SkeletonProps as b6, DemoBanner as b7, type DemoBannerProps as b8, DemoQuotaIndicator as b9, type OnboardingContextValue as bA, type OnboardingFlowProps as bB, type OnboardingState as bC, type OnboardingEvent as bD, type OnboardingMachineContext as bE, type OnboardingReducerState as bF, type QuickStartTemplate as bG, type SyncProgressOverlayProps as bH, PageTasksPanel as bI, type PageTasksPanelProps as bJ, TaskCollectionEmbed as bK, type TaskCollectionEmbedProps as bL, SecurityProvider as bM, useSecurityContext as bN, useSecurityContextOptional as bO, type SecurityContextState as bP, type SecurityContextActions as bQ, type SecurityContextValue as bR, type SecurityProviderProps as bS, useSecurity as bT, type UseSecurityOptions as bU, type UseSecurityResult as bV, PluginRegistryContext as bW, usePluginRegistry as bX, usePluginRegistryOptional as bY, usePlugins as bZ, useContributions as b_, type DemoQuotaIndicatorProps as ba, DemoDataExpiredScreen as bb, useDemoMode as bc, type DemoModeState as bd, type DemoLimits as be, type DemoUsage as bf, useSyncManager as bg, OnboardingProvider as bh, useOnboarding as bi, OnboardingFlow as bj, WelcomeScreen as bk, AuthenticatingScreen as bl, AuthErrorScreen as bm, UnsupportedBrowserScreen as bn, ImportIdentityScreen as bo, HubConnectScreen as bp, ReadyScreen as bq, SmartWelcome as br, SyncProgressOverlay as bs, onboardingReducer as bt, createInitialState as bu, QUICK_START_TEMPLATES as bv, getPlatformAuthName as bw, truncateDid as bx, copyToClipboard as by, type OnboardingProviderProps as bz, type UseFindResult as c, useCommands as c0, useSlashCommands as c1, useSidebarItems as c2, useImporters as c3, useEditorExtensions as c4, useEditorExtensionsSafe as c5, useMergedEditorContributions as c6, mergeEditorContributions as c7, type MergedEditorContributions as c8, useView as c9, useCommand as ca, usePageTaskSync as d, type PageTaskReferenceInput as e, type UsePageTaskSyncOptions as f, type UsePageTaskSyncResult as g, useTaskProjectionSync as h, type TaskProjectionReferenceInput as i, type TaskProjectionHost as j, type UseTaskProjectionSyncOptions as k, useTasks as l, type UseTasksOptions as m, type UseTasksResult as n, useComments as o, type UseCommentsOptions as p, type UseCommentsResult as q, type CommentNode as r, useVisibleComments as s, useModeratedThread as t, useFind as u, createModerationLabelIndex as v, evaluateCommentModeration as w, evaluateInteractionPermission as x, moderateThread as y, selectActiveInteractionPolicy as z };
@@ -1,4 +1,4 @@
1
- export { A as AddCommentOptions, a0 as AddReactionOptions, bm as AuthErrorScreen, aP as AuthTraceSummary, bl as AuthenticatingScreen, r as CommentNode, C as CommentThread, F as CommentVisibility, ad as CreateMessageRequestOptions, b7 as DemoBanner, b8 as DemoBannerProps, bb as DemoDataExpiredScreen, be as DemoLimits, bd as DemoModeState, b9 as DemoQuotaIndicator, ba as DemoQuotaIndicatorProps, bf as DemoUsage, b2 as DiscoveredPeer, aU as FileRef, ae as FirstContactAdmission, af as FirstContactDecision, ag as FirstContactDecisionInput, G as FirstContactMode, ah as FirstContactVisibility, aK as GrantConsentSummary, aL as GrantInput, bp as HubConnectScreen, aX as HubSearchOptions, aY as HubSearchResult, aZ as HubSearchState, b3 as HubStatusIndicator, bo as ImportIdentityScreen, I as InteractionPermission, ai as MessageRequestNode, aj as MessageRequestProperties, ak as MessageRequestStatus, M as ModeratedCommentNode, H as ModeratedCommentThread, J as ModerationFilterOptions, K as ModerationLabelSummary, bA as OnboardingContextValue, bD as OnboardingEvent, bj as OnboardingFlow, bB as OnboardingFlowProps, bE as OnboardingMachineContext, bh as OnboardingProvider, bz as OnboardingProviderProps, bF as OnboardingReducerState, bC as OnboardingState, P as PageTaskInput, e as PageTaskReferenceInput, bI as PageTasksPanel, bJ as PageTasksPanelProps, bW as PluginRegistryContext, L as PublicInteractionMode, N as PublicInteractionPolicySnapshot, O as PublicInteractionSurface, Q as PublicModerationMode, bv as QUICK_START_TEMPLATES, bG as QuickStartTemplate, a1 as ReactionCounterSnapshot, a2 as ReactionNode, a3 as ReactionType, bq as ReadyScreen, a$ as RemoteSchemaDefinition, b0 as RemoteSchemaState, R as ReplyContext, bQ as SecurityContextActions, bP as SecurityContextState, bR as SecurityContextValue, bM as SecurityProvider, bS as SecurityProviderProps, b4 as Skeleton, b6 as SkeletonProps, br as SmartWelcome, bs as SyncProgressOverlay, bH as SyncProgressOverlayProps, bK as TaskCollectionEmbed, bL as TaskCollectionEmbedProps, a as TaskTreeItem, bn as UnsupportedBrowserScreen, aw as UseAuditOptions, av as UseAuditResult, aQ as UseAuthTraceResult, aS as UseBackupReturn, aA as UseBlameResult, aH as UseCanEditResult, aF as UseCanResult, p as UseCommentsOptions, q as UseCommentsResult, ay as UseDiffResult, aV as UseFileUploadReturn, b as UseFindOptions, c as UseFindResult, aM as UseGrantsResult, aq as UseHistoryResult, al as UseMessageRequestsOptions, am as UseMessageRequestsResult, S as UseModeratedThreadOptions, f as UsePageTaskSyncOptions, g as UsePageTaskSyncResult, a4 as UsePolicyFilteredReactionCountersOptions, a5 as UsePolicyFilteredReactionCountersResult, bU as UseSecurityOptions, bV as UseSecurityResult, m as UseTasksOptions, n as UseTasksResult, at as UseUndoOptions, as as UseUndoResult, aC as UseVerificationResult, V as UseVisibleCommentsOptions, W as UseVisibleCommentsResult, bk as WelcomeScreen, by as copyToClipboard, a7 as createConversationKey, bu as createInitialState, a8 as createMessageRequestProperties, v as createModerationLabelIndex, Y as createReactionCounterSnapshot, Z as dedupeReactions, aI as describeGrantConsent, w as evaluateCommentModeration, a9 as evaluateFirstContactDecision, x as evaluateInteractionPermission, aa as findLatestMessageRequest, bw as getPlatformAuthName, ab as hasAcceptedContact, b5 as injectSkeletonStyles, _ as isReactionVisible, y as moderateThread, bt as onboardingReducer, z as selectActiveInteractionPolicy, B as selectPublicInteractionMode, aN as summarizeAuthTrace, ac as summarizeMessageRequest, D as summarizeModerationLabel, E as summarizePublicInteractionPolicy, $ as summarizeReactionNode, bx as truncateDid, au as useAudit, aO as useAuthTrace, aR as useBackup, az as useBlame, aE as useCan, aG as useCanEdit, c7 as useCommand, c0 as useCommands, an as useCommentCount, ao as useCommentCounts, o as useComments, b_ as useContributions, bc as useDemoMode, ax as useDiff, c4 as useEditorExtensions, c5 as useEditorExtensionsSafe, aT as useFileUpload, u as useFind, aJ as useGrants, ap as useHistory, aW as useHubSearch, aD as useHubStatus, a6 as useMessageRequests, t as useModeratedThread, bi as useOnboarding, d as usePageTaskSync, b1 as usePeerDiscovery, bX as usePluginRegistry, bY as usePluginRegistryOptional, bZ as usePlugins, X as usePolicyFilteredReactionCounters, a_ as useRemoteSchema, bT as useSecurity, bN as useSecurityContext, bO as useSecurityContextOptional, c2 as useSidebarItems, c1 as useSlashCommands, bg as useSyncManager, l as useTasks, ar as useUndo, aB as useVerification, c6 as useView, b$ as useViews, s as useVisibleComments } from './experimental-B2FrBnkV.js';
1
+ export { A as AddCommentOptions, a0 as AddReactionOptions, bm as AuthErrorScreen, aP as AuthTraceSummary, bl as AuthenticatingScreen, r as CommentNode, C as CommentThread, F as CommentVisibility, ad as CreateMessageRequestOptions, b7 as DemoBanner, b8 as DemoBannerProps, bb as DemoDataExpiredScreen, be as DemoLimits, bd as DemoModeState, b9 as DemoQuotaIndicator, ba as DemoQuotaIndicatorProps, bf as DemoUsage, b2 as DiscoveredPeer, aU as FileRef, ae as FirstContactAdmission, af as FirstContactDecision, ag as FirstContactDecisionInput, G as FirstContactMode, ah as FirstContactVisibility, aK as GrantConsentSummary, aL as GrantInput, bp as HubConnectScreen, aX as HubSearchOptions, aY as HubSearchResult, aZ as HubSearchState, b3 as HubStatusIndicator, bo as ImportIdentityScreen, I as InteractionPermission, c8 as MergedEditorContributions, ai as MessageRequestNode, aj as MessageRequestProperties, ak as MessageRequestStatus, M as ModeratedCommentNode, H as ModeratedCommentThread, J as ModerationFilterOptions, K as ModerationLabelSummary, bA as OnboardingContextValue, bD as OnboardingEvent, bj as OnboardingFlow, bB as OnboardingFlowProps, bE as OnboardingMachineContext, bh as OnboardingProvider, bz as OnboardingProviderProps, bF as OnboardingReducerState, bC as OnboardingState, P as PageTaskInput, e as PageTaskReferenceInput, bI as PageTasksPanel, bJ as PageTasksPanelProps, bW as PluginRegistryContext, L as PublicInteractionMode, N as PublicInteractionPolicySnapshot, O as PublicInteractionSurface, Q as PublicModerationMode, bv as QUICK_START_TEMPLATES, bG as QuickStartTemplate, a1 as ReactionCounterSnapshot, a2 as ReactionNode, a3 as ReactionType, bq as ReadyScreen, a$ as RemoteSchemaDefinition, b0 as RemoteSchemaState, R as ReplyContext, bQ as SecurityContextActions, bP as SecurityContextState, bR as SecurityContextValue, bM as SecurityProvider, bS as SecurityProviderProps, b4 as Skeleton, b6 as SkeletonProps, br as SmartWelcome, bs as SyncProgressOverlay, bH as SyncProgressOverlayProps, bK as TaskCollectionEmbed, bL as TaskCollectionEmbedProps, a as TaskTreeItem, bn as UnsupportedBrowserScreen, aw as UseAuditOptions, av as UseAuditResult, aQ as UseAuthTraceResult, aS as UseBackupReturn, aA as UseBlameResult, aH as UseCanEditResult, aF as UseCanResult, p as UseCommentsOptions, q as UseCommentsResult, ay as UseDiffResult, aV as UseFileUploadReturn, b as UseFindOptions, c as UseFindResult, aM as UseGrantsResult, aq as UseHistoryResult, al as UseMessageRequestsOptions, am as UseMessageRequestsResult, S as UseModeratedThreadOptions, f as UsePageTaskSyncOptions, g as UsePageTaskSyncResult, a4 as UsePolicyFilteredReactionCountersOptions, a5 as UsePolicyFilteredReactionCountersResult, bU as UseSecurityOptions, bV as UseSecurityResult, m as UseTasksOptions, n as UseTasksResult, at as UseUndoOptions, as as UseUndoResult, aC as UseVerificationResult, V as UseVisibleCommentsOptions, W as UseVisibleCommentsResult, bk as WelcomeScreen, by as copyToClipboard, a7 as createConversationKey, bu as createInitialState, a8 as createMessageRequestProperties, v as createModerationLabelIndex, Y as createReactionCounterSnapshot, Z as dedupeReactions, aI as describeGrantConsent, w as evaluateCommentModeration, a9 as evaluateFirstContactDecision, x as evaluateInteractionPermission, aa as findLatestMessageRequest, bw as getPlatformAuthName, ab as hasAcceptedContact, b5 as injectSkeletonStyles, _ as isReactionVisible, c7 as mergeEditorContributions, y as moderateThread, bt as onboardingReducer, z as selectActiveInteractionPolicy, B as selectPublicInteractionMode, aN as summarizeAuthTrace, ac as summarizeMessageRequest, D as summarizeModerationLabel, E as summarizePublicInteractionPolicy, $ as summarizeReactionNode, bx as truncateDid, au as useAudit, aO as useAuthTrace, aR as useBackup, az as useBlame, aE as useCan, aG as useCanEdit, ca as useCommand, c0 as useCommands, an as useCommentCount, ao as useCommentCounts, o as useComments, b_ as useContributions, bc as useDemoMode, ax as useDiff, c4 as useEditorExtensions, c5 as useEditorExtensionsSafe, aT as useFileUpload, u as useFind, aJ as useGrants, ap as useHistory, aW as useHubSearch, aD as useHubStatus, c6 as useMergedEditorContributions, a6 as useMessageRequests, t as useModeratedThread, bi as useOnboarding, d as usePageTaskSync, b1 as usePeerDiscovery, bX as usePluginRegistry, bY as usePluginRegistryOptional, bZ as usePlugins, X as usePolicyFilteredReactionCounters, a_ as useRemoteSchema, bT as useSecurity, bN as useSecurityContext, bO as useSecurityContextOptional, c2 as useSidebarItems, c1 as useSlashCommands, bg as useSyncManager, l as useTasks, ar as useUndo, aB as useVerification, c9 as useView, b$ as useViews, s as useVisibleComments } from './experimental-DyPoZcJT.js';
2
2
  export { i as FlattenNodeOptions, f as flattenNode, e as flattenNodes, h as flattenNodesWithSchemaCheck, g as flattenUnknownSchemaNode } from './useQuery-D7ajycrc.js';
3
3
  export { BlobStoreForSync, ConnectionManager, ConnectionManagerConfig, ConnectionStatus, InitialSyncManager, InitialSyncMessage, METABRIDGE_ORIGIN, METABRIDGE_SEED_ORIGIN, MetaBridge, NodePool, NodePoolConfig, NodeStoreSyncProvider, NodeSyncResponse, OfflineQueue, OfflineQueueConfig, PoolEntryState, ProgressListener, QueueEntry, Registry, RegistryConfig, RegistryStorage, SerializedNodeChange, SyncLifecyclePhase, SyncLifecycleState, SyncManager, SyncManagerConfig, SyncStatus as SyncManagerStatus, SyncPhase, SyncProgress, TrackedNode, WebSocketSyncProvider, WebSocketSyncProviderOptions, createConnectionManager, createInitialSyncManager, createMetaBridge, createNodePool, createOfflineQueue, createRegistry, createSyncManager } from '@xnetjs/runtime';
4
4
  export { I as InstrumentationContext, a as InstrumentationContextValue, Q as QueryTrackerLike, Y as YDocRegistryLike, u as useInstrumentation } from './instrumentation-CpIuG2y5.js';
@@ -73,14 +73,14 @@ import {
73
73
  useUndo,
74
74
  useVerification,
75
75
  useVisibleComments
76
- } from "./chunk-SEYIZDHG.js";
76
+ } from "./chunk-ANCTAEML.js";
77
77
  import {
78
78
  flattenNode,
79
79
  flattenNodes,
80
80
  flattenNodesWithSchemaCheck,
81
81
  flattenUnknownSchemaNode,
82
82
  useSyncManager
83
- } from "./chunk-EJEGIEIC.js";
83
+ } from "./chunk-ZGP56IIJ.js";
84
84
  import {
85
85
  InstrumentationContext,
86
86
  useInstrumentation
@@ -89,11 +89,13 @@ import {
89
89
  PluginRegistryContext,
90
90
  SecurityProvider,
91
91
  TelemetryContext,
92
+ mergeEditorContributions,
92
93
  useCommand,
93
94
  useCommands,
94
95
  useContributions,
95
96
  useEditorExtensions,
96
97
  useEditorExtensionsSafe,
98
+ useMergedEditorContributions,
97
99
  usePluginRegistry,
98
100
  usePluginRegistryOptional,
99
101
  usePlugins,
@@ -104,7 +106,7 @@ import {
104
106
  useTelemetryReporter,
105
107
  useView,
106
108
  useViews
107
- } from "./chunk-RIN2MXZK.js";
109
+ } from "./chunk-H44ZSIH4.js";
108
110
 
109
111
  // src/experimental.ts
110
112
  import { WebSocketSyncProvider } from "@xnetjs/runtime";
@@ -189,6 +191,7 @@ export {
189
191
  hasAcceptedContact,
190
192
  injectSkeletonStyles,
191
193
  isReactionVisible,
194
+ mergeEditorContributions,
192
195
  moderateThread,
193
196
  onboardingReducer,
194
197
  selectActiveInteractionPolicy,
@@ -222,6 +225,7 @@ export {
222
225
  useHubSearch,
223
226
  useHubStatus,
224
227
  useInstrumentation,
228
+ useMergedEditorContributions,
225
229
  useMessageRequests,
226
230
  useModeratedThread,
227
231
  useOnboarding,