@dxos/plugin-space 0.6.12-main.f9d0246 → 0.6.12-staging.0b4bb48

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.
Files changed (69) hide show
  1. package/dist/lib/browser/{chunk-WBMH5WIP.mjs → chunk-DTVUOG2C.mjs} +2 -14
  2. package/dist/lib/browser/chunk-DTVUOG2C.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +185 -497
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/types/index.mjs +3 -7
  7. package/dist/lib/node/{chunk-GF3SRAQM.cjs → chunk-CVZPI2P3.cjs} +6 -20
  8. package/dist/lib/node/chunk-CVZPI2P3.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +278 -586
  10. package/dist/lib/node/index.cjs.map +4 -4
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/types/index.cjs +10 -14
  13. package/dist/lib/node/types/index.cjs.map +2 -2
  14. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  15. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  16. package/dist/types/src/components/ShareSpaceButton.stories.d.ts +0 -2
  17. package/dist/types/src/components/ShareSpaceButton.stories.d.ts.map +1 -1
  18. package/dist/types/src/components/SpaceMain/SpaceMain.d.ts.map +1 -1
  19. package/dist/types/src/components/SpacePresence.stories.d.ts +0 -2
  20. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  21. package/dist/types/src/components/SpaceSettings.d.ts.map +1 -1
  22. package/dist/types/src/components/index.d.ts +0 -2
  23. package/dist/types/src/components/index.d.ts.map +1 -1
  24. package/dist/types/src/translations.d.ts +0 -2
  25. package/dist/types/src/translations.d.ts.map +1 -1
  26. package/dist/types/src/types/thread.d.ts +0 -13
  27. package/dist/types/src/types/thread.d.ts.map +1 -1
  28. package/dist/types/src/types/types.d.ts +1 -18
  29. package/dist/types/src/types/types.d.ts.map +1 -1
  30. package/dist/types/src/util.d.ts +4 -1
  31. package/dist/types/src/util.d.ts.map +1 -1
  32. package/package.json +34 -41
  33. package/src/SpacePlugin.tsx +23 -38
  34. package/src/components/MenuFooter.tsx +0 -1
  35. package/src/components/SpaceMain/SpaceMain.tsx +22 -1
  36. package/src/components/SpaceSettings.tsx +3 -32
  37. package/src/components/index.ts +0 -2
  38. package/src/translations.ts +0 -2
  39. package/src/types/thread.ts +0 -9
  40. package/src/types/types.ts +1 -25
  41. package/src/util.tsx +50 -15
  42. package/dist/lib/browser/chunk-WBMH5WIP.mjs.map +0 -7
  43. package/dist/lib/node/chunk-GF3SRAQM.cjs.map +0 -7
  44. package/dist/lib/node-esm/chunk-GM2YUC77.mjs +0 -37
  45. package/dist/lib/node-esm/chunk-GM2YUC77.mjs.map +0 -7
  46. package/dist/lib/node-esm/chunk-N5VC55UM.mjs +0 -109
  47. package/dist/lib/node-esm/chunk-N5VC55UM.mjs.map +0 -7
  48. package/dist/lib/node-esm/index.mjs +0 -2953
  49. package/dist/lib/node-esm/index.mjs.map +0 -7
  50. package/dist/lib/node-esm/meta.json +0 -1
  51. package/dist/lib/node-esm/meta.mjs +0 -14
  52. package/dist/lib/node-esm/meta.mjs.map +0 -7
  53. package/dist/lib/node-esm/types/index.mjs +0 -26
  54. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  55. package/dist/types/src/components/SaveStatus.d.ts +0 -3
  56. package/dist/types/src/components/SaveStatus.d.ts.map +0 -1
  57. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +0 -13
  58. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +0 -1
  59. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +0 -115
  60. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +0 -1
  61. package/dist/types/src/components/SyncStatus/index.d.ts +0 -2
  62. package/dist/types/src/components/SyncStatus/index.d.ts.map +0 -1
  63. package/dist/types/src/components/SyncStatus/types.d.ts +0 -14
  64. package/dist/types/src/components/SyncStatus/types.d.ts.map +0 -1
  65. package/src/components/SaveStatus.tsx +0 -95
  66. package/src/components/SyncStatus/SyncStatus.stories.tsx +0 -62
  67. package/src/components/SyncStatus/SyncStatus.tsx +0 -188
  68. package/src/components/SyncStatus/index.ts +0 -5
  69. package/src/components/SyncStatus/types.ts +0 -77
@@ -9,18 +9,17 @@ import {
9
9
  ChannelType,
10
10
  CollectionType,
11
11
  ContactType,
12
- MessageState,
13
12
  MessageType,
14
13
  SPACE_DIRECTORY_HANDLE,
15
14
  ThreadStatus,
16
- ThreadType,
17
- parseSpaceInitPlugin
18
- } from "./chunk-WBMH5WIP.mjs";
15
+ ThreadType
16
+ } from "./chunk-DTVUOG2C.mjs";
19
17
 
20
18
  // packages/plugins/plugin-space/src/SpacePlugin.tsx
19
+ import { Plus as Plus2, SignIn, CardsThree as CardsThree2, Warning as Warning2 } from "@phosphor-icons/react";
21
20
  import { effect, signal } from "@preact/signals-core";
22
- import React18 from "react";
23
- import { LayoutAction as LayoutAction2, NavigationAction as NavigationAction3, Surface as Surface2, firstIdInPart, openIds, parseGraphPlugin, parseIntentPlugin as parseIntentPlugin3, parseMetadataResolverPlugin, parseNavigationPlugin as parseNavigationPlugin2, resolvePlugin } from "@dxos/app-framework";
21
+ import React17 from "react";
22
+ import { LayoutAction as LayoutAction2, Surface as Surface2, NavigationAction as NavigationAction3, openIds, firstIdInPart, parseIntentPlugin as parseIntentPlugin3, parseNavigationPlugin as parseNavigationPlugin2, parseMetadataResolverPlugin, resolvePlugin, parseGraphPlugin } from "@dxos/app-framework";
24
23
  import { EventSubscriptions } from "@dxos/async";
25
24
  import { isReactiveObject as isReactiveObject2 } from "@dxos/echo-schema";
26
25
  import { LocalStorageStore } from "@dxos/local-storage";
@@ -31,9 +30,9 @@ import { parseClientPlugin } from "@dxos/plugin-client";
31
30
  import { createExtension, isGraphNode, memoize as memoize2, toSignal } from "@dxos/plugin-graph";
32
31
  import { ObservabilityAction } from "@dxos/plugin-observability/meta";
33
32
  import { PublicKey as PublicKey2 } from "@dxos/react-client";
34
- import { Expando, Filter, SpaceState as SpaceState3, create as create2, fullyQualifiedId as fullyQualifiedId4, getSpace as getSpace4, getTypename as getTypename2, isEchoObject as isEchoObject2, isSpace as isSpace2, loadObjectReferences } from "@dxos/react-client/echo";
33
+ import { create as create2, Expando, Filter, fullyQualifiedId as fullyQualifiedId4, getSpace as getSpace4, getTypename as getTypename2, isEchoObject as isEchoObject2, isSpace as isSpace2, loadObjectReferences, SpaceState as SpaceState3 } from "@dxos/react-client/echo";
35
34
  import { Dialog } from "@dxos/react-ui";
36
- import { ClipboardProvider as ClipboardProvider2, InvitationManager, osTranslations } from "@dxos/shell/react";
35
+ import { InvitationManager, osTranslations, ClipboardProvider as ClipboardProvider2 } from "@dxos/shell/react";
37
36
  import { ComplexMap as ComplexMap2, nonNullable, reduceGroupBy } from "@dxos/util";
38
37
 
39
38
  // packages/plugins/plugin-space/src/components/AwaitingObject.tsx
@@ -184,13 +183,15 @@ var EmptyTree = () => {
184
183
  };
185
184
 
186
185
  // packages/plugins/plugin-space/src/components/MenuFooter.tsx
187
- import { Planet } from "@phosphor-icons/react";
188
- import React6 from "react";
186
+ import { Planet as Planet2 } from "@phosphor-icons/react";
187
+ import React7 from "react";
189
188
  import { getSpace as getSpace2 } from "@dxos/client/echo";
190
189
  import { useClient as useClient2 } from "@dxos/react-client";
191
190
  import { DropdownMenu, toLocalizedString, useTranslation as useTranslation6 } from "@dxos/react-ui";
192
191
 
193
192
  // packages/plugins/plugin-space/src/util.tsx
193
+ import { CardsThree, Database, PencilSimpleLine, Planet, Plus, Trash, Users, X, ClockCounterClockwise, LockSimpleOpen, LockSimple, Placeholder, Link } from "@phosphor-icons/react";
194
+ import React6 from "react";
194
195
  import { NavigationAction as NavigationAction2 } from "@dxos/app-framework";
195
196
  import { create, isReactiveObject, getTypename, getSchema, getEchoObjectAnnotation, EXPANDO_TYPENAME } from "@dxos/echo-schema";
196
197
  import { invariant } from "@dxos/invariant";
@@ -283,7 +284,8 @@ var constructSpaceNode = ({ space, personal, namesCache, resolve }) => {
283
284
  namesCache
284
285
  }),
285
286
  description: space.state.get() === SpaceState.SPACE_READY && space.properties.description,
286
- icon: "ph--planet--regular",
287
+ icon: (props) => /* @__PURE__ */ React6.createElement(Planet, props),
288
+ iconSymbol: "ph--planet--regular",
287
289
  disabled: space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,
288
290
  testId: "spacePlugin.space"
289
291
  }
@@ -309,7 +311,8 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
309
311
  ns: SPACE_PLUGIN
310
312
  }
311
313
  ],
312
- icon: "ph--plus--regular",
314
+ icon: (props) => /* @__PURE__ */ React6.createElement(Plus, props),
315
+ iconSymbol: "ph--plus--regular",
313
316
  disposition: "toolbar",
314
317
  // TODO(wittjosiah): This is currently a navtree feature. Address this with cmd+k integration.
315
318
  // mainAreaDisposition: 'in-flow',
@@ -343,7 +346,8 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
343
346
  ns: SPACE_PLUGIN
344
347
  }
345
348
  ],
346
- icon: "ph--cards-three--regular",
349
+ icon: (props) => /* @__PURE__ */ React6.createElement(CardsThree, props),
350
+ iconSymbol: "ph--cards-three--regular",
347
351
  testId: "spacePlugin.createCollection"
348
352
  }
349
353
  }
@@ -377,7 +381,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
377
381
  ns: SPACE_PLUGIN
378
382
  }
379
383
  ],
380
- icon: "ph--database--regular",
384
+ icon: (props) => /* @__PURE__ */ React6.createElement(Database, props),
385
+ iconSymbol: "ph--database--regular",
381
386
  disposition: "toolbar",
382
387
  mainAreaDisposition: "in-flow",
383
388
  disabled: migrating || Migrations.running(space)
@@ -408,7 +413,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
408
413
  ns: SPACE_PLUGIN
409
414
  }
410
415
  ],
411
- icon: "ph--users--regular",
416
+ icon: (props) => /* @__PURE__ */ React6.createElement(Users, props),
417
+ iconSymbol: "ph--users--regular",
412
418
  disabled: locked,
413
419
  keyBinding: {
414
420
  macos: "meta+.",
@@ -435,7 +441,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
435
441
  ns: SPACE_PLUGIN
436
442
  }
437
443
  ],
438
- icon: locked ? "ph--lock-simple-open--regular" : "ph--lock-simple--regular"
444
+ icon: locked ? (props) => /* @__PURE__ */ React6.createElement(LockSimpleOpen, props) : (props) => /* @__PURE__ */ React6.createElement(LockSimple, props),
445
+ iconSymbol: locked ? "ph--lock-simple-open--regular" : "ph--lock-simple--regular"
439
446
  }
440
447
  }, {
441
448
  id: getId(SpaceAction.RENAME),
@@ -457,7 +464,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
457
464
  ns: SPACE_PLUGIN
458
465
  }
459
466
  ],
460
- icon: "ph--pencil-simple-line--regular",
467
+ icon: (props) => /* @__PURE__ */ React6.createElement(PencilSimpleLine, props),
468
+ iconSymbol: "ph--pencil-simple-line--regular",
461
469
  keyBinding: {
462
470
  macos: "shift+F6",
463
471
  windows: "shift+F6"
@@ -486,7 +494,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
486
494
  ns: SPACE_PLUGIN
487
495
  }
488
496
  ],
489
- icon: "ph--x--regular",
497
+ icon: (props) => /* @__PURE__ */ React6.createElement(X, props),
498
+ iconSymbol: "ph--x--regular",
490
499
  mainAreaDisposition: "menu",
491
500
  disabled: personal
492
501
  }
@@ -512,7 +521,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
512
521
  ns: SPACE_PLUGIN
513
522
  }
514
523
  ],
515
- icon: "ph--clock-counter-clockwise--regular",
524
+ icon: (props) => /* @__PURE__ */ React6.createElement(ClockCounterClockwise, props),
525
+ iconSymbol: "ph--clock-counter-clockwise--regular",
516
526
  disposition: "toolbar",
517
527
  mainAreaDisposition: "in-flow"
518
528
  }
@@ -546,7 +556,8 @@ var createObjectNode = ({ object, space, resolve }) => {
546
556
  ns: SPACE_PLUGIN
547
557
  }
548
558
  ],
549
- icon: metadata.icon ?? "ph--placeholder--regular",
559
+ icon: metadata.icon ?? (() => /* @__PURE__ */ React6.createElement(Placeholder, null)),
560
+ iconSymbol: metadata.iconSymbol ?? "ph--placeholder--regular",
550
561
  testId: "spacePlugin.object",
551
562
  persistenceClass: "echo",
552
563
  persistenceKey: space?.id
@@ -571,7 +582,8 @@ var constructObjectActionGroups = ({ object, dispatch }) => {
571
582
  ns: SPACE_PLUGIN
572
583
  }
573
584
  ],
574
- icon: "ph--plus--regular",
585
+ icon: (props) => /* @__PURE__ */ React6.createElement(Plus, props),
586
+ iconSymbol: "ph--plus--regular",
575
587
  disposition: "toolbar",
576
588
  // TODO(wittjosiah): This is currently a navtree feature. Address this with cmd+k integration.
577
589
  // mainAreaDisposition: 'in-flow',
@@ -605,7 +617,8 @@ var constructObjectActionGroups = ({ object, dispatch }) => {
605
617
  ns: SPACE_PLUGIN
606
618
  }
607
619
  ],
608
- icon: "ph--cards-three--regular",
620
+ icon: (props) => /* @__PURE__ */ React6.createElement(CardsThree, props),
621
+ iconSymbol: "ph--cards-three--regular",
609
622
  testId: "spacePlugin.createCollection"
610
623
  }
611
624
  }
@@ -637,7 +650,8 @@ var constructObjectActions = ({ node, dispatch }) => {
637
650
  ns: SPACE_PLUGIN
638
651
  }
639
652
  ],
640
- icon: "ph--pencil-simple-line--regular",
653
+ icon: (props) => /* @__PURE__ */ React6.createElement(PencilSimpleLine, props),
654
+ iconSymbol: "ph--pencil-simple-line--regular",
641
655
  // TODO(wittjosiah): Doesn't work.
642
656
  // keyBinding: 'shift+F6',
643
657
  testId: "spacePlugin.renameObject"
@@ -668,7 +682,8 @@ var constructObjectActions = ({ node, dispatch }) => {
668
682
  ns: SPACE_PLUGIN
669
683
  }
670
684
  ],
671
- icon: "ph--trash--regular",
685
+ icon: (props) => /* @__PURE__ */ React6.createElement(Trash, props),
686
+ iconSymbol: "ph--trash--regular",
672
687
  keyBinding: object instanceof CollectionType ? void 0 : "shift+meta+Backspace",
673
688
  testId: "spacePlugin.deleteObject"
674
689
  }
@@ -687,7 +702,8 @@ var constructObjectActions = ({ node, dispatch }) => {
687
702
  ns: SPACE_PLUGIN
688
703
  }
689
704
  ],
690
- icon: "ph--link--regular",
705
+ icon: (props) => /* @__PURE__ */ React6.createElement(Link, props),
706
+ iconSymbol: "ph--link--regular",
691
707
  testId: "spacePlugin.copyLink"
692
708
  }
693
709
  }
@@ -728,7 +744,7 @@ var cloneObject = async (object, resolve) => {
728
744
  const serializer = metadata.serializer;
729
745
  invariant(serializer, `No serializer for type: ${typename}`, {
730
746
  F: __dxlog_file,
731
- L: 604,
747
+ L: 639,
732
748
  S: void 0,
733
749
  A: [
734
750
  "serializer",
@@ -752,19 +768,19 @@ var MenuFooter = ({ object }) => {
752
768
  const spaceName = space ? getSpaceDisplayName(space, {
753
769
  personal: client.spaces.default === space
754
770
  }) : "";
755
- return space ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(DropdownMenu.Separator, null), /* @__PURE__ */ React6.createElement(DropdownMenu.GroupLabel, null, t("menu footer label")), /* @__PURE__ */ React6.createElement("dl", {
771
+ return space ? /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement(DropdownMenu.Separator, null), /* @__PURE__ */ React7.createElement(DropdownMenu.GroupLabel, null, t("menu footer label")), /* @__PURE__ */ React7.createElement("dl", {
756
772
  className: "pis-2 mbe-2 text-xs grid grid-cols-[max-content_1fr] gap-2"
757
- }, /* @__PURE__ */ React6.createElement("dt", {
773
+ }, /* @__PURE__ */ React7.createElement("dt", {
758
774
  className: "uppercase text-[.75em] tracking-wide font-medium mbs-px self-start"
759
- }, t("location label")), /* @__PURE__ */ React6.createElement("dd", {
775
+ }, t("location label")), /* @__PURE__ */ React7.createElement("dd", {
760
776
  className: "line-clamp-3"
761
- }, /* @__PURE__ */ React6.createElement(Planet, {
777
+ }, /* @__PURE__ */ React7.createElement(Planet2, {
762
778
  className: "inline-block mie-1"
763
779
  }), toLocalizedString(spaceName, t)))) : null;
764
780
  };
765
781
 
766
782
  // packages/plugins/plugin-space/src/components/MissingObject.tsx
767
- import React7, { useEffect as useEffect2, useState as useState2 } from "react";
783
+ import React8, { useEffect as useEffect2, useState as useState2 } from "react";
768
784
  import { parseIntentPlugin as parseIntentPlugin2, useResolvePlugin as useResolvePlugin2 } from "@dxos/app-framework";
769
785
  import { Status, useTranslation as useTranslation7 } from "@dxos/react-ui";
770
786
  import { baseSurface as baseSurface2, descriptionText as descriptionText4, mx as mx5 } from "@dxos/react-ui-theme";
@@ -792,13 +808,13 @@ var MissingObject = ({ id }) => {
792
808
  intentPlugin,
793
809
  id
794
810
  ]);
795
- return /* @__PURE__ */ React7.createElement("div", {
811
+ return /* @__PURE__ */ React8.createElement("div", {
796
812
  role: "none",
797
813
  className: mx5(baseSurface2, "min-bs-screen is-full flex items-center justify-center p-8")
798
- }, waiting ? /* @__PURE__ */ React7.createElement("p", {
814
+ }, waiting ? /* @__PURE__ */ React8.createElement("p", {
799
815
  role: "alert",
800
816
  className: mx5(descriptionText4, "border border-dashed border-neutral-400/50 rounded-lg flex items-center justify-center p-8 font-normal text-lg")
801
- }, t("missing object message")) : /* @__PURE__ */ React7.createElement(Status, {
817
+ }, t("missing object message")) : /* @__PURE__ */ React8.createElement(Status, {
802
818
  indeterminate: true,
803
819
  "aria-label": "Initializing"
804
820
  }));
@@ -806,7 +822,7 @@ var MissingObject = ({ id }) => {
806
822
 
807
823
  // packages/plugins/plugin-space/src/components/PersistenceStatus.tsx
808
824
  import { ArrowsCounterClockwise, CheckCircle as CheckCircle2, Warning } from "@phosphor-icons/react";
809
- import React8, { useEffect as useEffect3, useState as useState3 } from "react";
825
+ import React9, { useEffect as useEffect3, useState as useState3 } from "react";
810
826
  import { debounce } from "@dxos/async";
811
827
  import { Tooltip, useTranslation as useTranslation8 } from "@dxos/react-ui";
812
828
  import { getSize as getSize2, mx as mx6, staticPlaceholderText, warningText } from "@dxos/react-ui-theme";
@@ -834,40 +850,40 @@ var PersistenceStatus = ({ db }) => {
834
850
  ]);
835
851
  switch (status) {
836
852
  case 2:
837
- return /* @__PURE__ */ React8.createElement("div", {
853
+ return /* @__PURE__ */ React9.createElement("div", {
838
854
  className: "flex items-center"
839
- }, /* @__PURE__ */ React8.createElement(Warning, {
855
+ }, /* @__PURE__ */ React9.createElement(Warning, {
840
856
  className: mx6(getSize2(4), "me-1")
841
- }), /* @__PURE__ */ React8.createElement("span", {
857
+ }), /* @__PURE__ */ React9.createElement("span", {
842
858
  className: mx6("text-sm", warningText)
843
859
  }, t("persistence error label")));
844
860
  case 1:
845
- return /* @__PURE__ */ React8.createElement("div", {
861
+ return /* @__PURE__ */ React9.createElement("div", {
846
862
  className: "flex items-center"
847
- }, /* @__PURE__ */ React8.createElement(ArrowsCounterClockwise, {
863
+ }, /* @__PURE__ */ React9.createElement(ArrowsCounterClockwise, {
848
864
  className: mx6(getSize2(4), "me-1")
849
- }), /* @__PURE__ */ React8.createElement("span", {
865
+ }), /* @__PURE__ */ React9.createElement("span", {
850
866
  className: mx6("text-sm", staticPlaceholderText)
851
867
  }, t("persistence pending label")));
852
868
  case 0:
853
869
  default:
854
- return /* @__PURE__ */ React8.createElement(Tooltip.Root, {
870
+ return /* @__PURE__ */ React9.createElement(Tooltip.Root, {
855
871
  delayDuration: 400
856
- }, /* @__PURE__ */ React8.createElement(Tooltip.Trigger, {
872
+ }, /* @__PURE__ */ React9.createElement(Tooltip.Trigger, {
857
873
  role: "status",
858
874
  className: "flex items-center"
859
- }, /* @__PURE__ */ React8.createElement(CheckCircle2, {
875
+ }, /* @__PURE__ */ React9.createElement(CheckCircle2, {
860
876
  className: mx6(getSize2(4), "me-1")
861
- }), displayMessage && /* @__PURE__ */ React8.createElement("span", {
877
+ }), displayMessage && /* @__PURE__ */ React9.createElement("span", {
862
878
  className: mx6("text-sm", staticPlaceholderText)
863
- }, t("persisted locally label"))), /* @__PURE__ */ React8.createElement(Tooltip.Portal, null, /* @__PURE__ */ React8.createElement(Tooltip.Content, {
879
+ }, t("persisted locally label"))), /* @__PURE__ */ React9.createElement(Tooltip.Portal, null, /* @__PURE__ */ React9.createElement(Tooltip.Content, {
864
880
  classNames: "z-10"
865
- }, t("persisted locally message"), /* @__PURE__ */ React8.createElement(Tooltip.Arrow, null))));
881
+ }, t("persisted locally message"), /* @__PURE__ */ React9.createElement(Tooltip.Arrow, null))));
866
882
  }
867
883
  };
868
884
 
869
885
  // packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx
870
- import React9, { useCallback, useRef, useState as useState4 } from "react";
886
+ import React10, { useCallback, useRef, useState as useState4 } from "react";
871
887
  import { log } from "@dxos/log";
872
888
  import { Button as Button2, Input, Popover, useTranslation as useTranslation9 } from "@dxos/react-ui";
873
889
  var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
@@ -897,23 +913,23 @@ var PopoverRenameObject = ({ object: obj }) => {
897
913
  object,
898
914
  name
899
915
  ]);
900
- return /* @__PURE__ */ React9.createElement("div", {
916
+ return /* @__PURE__ */ React10.createElement("div", {
901
917
  role: "none",
902
918
  className: "p-1 flex gap-2"
903
- }, /* @__PURE__ */ React9.createElement("div", {
919
+ }, /* @__PURE__ */ React10.createElement("div", {
904
920
  role: "none",
905
921
  className: "flex-1"
906
- }, /* @__PURE__ */ React9.createElement(Input.Root, null, /* @__PURE__ */ React9.createElement(Input.Label, {
922
+ }, /* @__PURE__ */ React10.createElement(Input.Root, null, /* @__PURE__ */ React10.createElement(Input.Label, {
907
923
  srOnly: true
908
- }, t("object name label")), /* @__PURE__ */ React9.createElement(Input.TextInput, {
924
+ }, t("object name label")), /* @__PURE__ */ React10.createElement(Input.TextInput, {
909
925
  placeholder: t("object title placeholder"),
910
926
  value: name,
911
927
  "data-testid": "spacePlugin.renameObject.input",
912
928
  onChange: ({ target: { value } }) => setName(value),
913
929
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
914
- }))), /* @__PURE__ */ React9.createElement(Popover.Close, {
930
+ }))), /* @__PURE__ */ React10.createElement(Popover.Close, {
915
931
  asChild: true
916
- }, /* @__PURE__ */ React9.createElement(Button2, {
932
+ }, /* @__PURE__ */ React10.createElement(Button2, {
917
933
  ref: doneButton,
918
934
  classNames: "self-stretch",
919
935
  onClick: handleDone
@@ -923,7 +939,7 @@ var PopoverRenameObject = ({ object: obj }) => {
923
939
  };
924
940
 
925
941
  // packages/plugins/plugin-space/src/components/PopoverRenameSpace.tsx
926
- import React10, { useCallback as useCallback2, useRef as useRef2, useState as useState5 } from "react";
942
+ import React11, { useCallback as useCallback2, useRef as useRef2, useState as useState5 } from "react";
927
943
  import { Button as Button3, Input as Input2, Popover as Popover2, useTranslation as useTranslation10 } from "@dxos/react-ui";
928
944
  var PopoverRenameSpace = ({ space }) => {
929
945
  const { t } = useTranslation10(SPACE_PLUGIN);
@@ -935,24 +951,24 @@ var PopoverRenameSpace = ({ space }) => {
935
951
  space,
936
952
  name
937
953
  ]);
938
- return /* @__PURE__ */ React10.createElement("div", {
954
+ return /* @__PURE__ */ React11.createElement("div", {
939
955
  role: "none",
940
956
  className: "p-1 flex gap-2"
941
- }, /* @__PURE__ */ React10.createElement("div", {
957
+ }, /* @__PURE__ */ React11.createElement("div", {
942
958
  role: "none",
943
959
  className: "flex-1"
944
- }, /* @__PURE__ */ React10.createElement(Input2.Root, null, /* @__PURE__ */ React10.createElement(Input2.Label, {
960
+ }, /* @__PURE__ */ React11.createElement(Input2.Root, null, /* @__PURE__ */ React11.createElement(Input2.Label, {
945
961
  srOnly: true
946
- }, t("space name label")), /* @__PURE__ */ React10.createElement(Input2.TextInput, {
962
+ }, t("space name label")), /* @__PURE__ */ React11.createElement(Input2.TextInput, {
947
963
  defaultValue: space.properties.name ?? "",
948
964
  placeholder: t("unnamed space label"),
949
965
  onChange: ({ target: { value } }) => setName(value),
950
966
  // TODO(wittjosiah): Ideally this should access the popover context to close the popover.
951
967
  // Currently this is not possible because Radix does not expose the popover context.
952
968
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
953
- }))), /* @__PURE__ */ React10.createElement(Popover2.Close, {
969
+ }))), /* @__PURE__ */ React11.createElement(Popover2.Close, {
954
970
  asChild: true
955
- }, /* @__PURE__ */ React10.createElement(Button3, {
971
+ }, /* @__PURE__ */ React11.createElement(Button3, {
956
972
  ref: doneButton,
957
973
  classNames: "self-stretch",
958
974
  onClick: handleDone
@@ -962,12 +978,12 @@ var PopoverRenameSpace = ({ space }) => {
962
978
  };
963
979
 
964
980
  // packages/plugins/plugin-space/src/components/ShareSpaceButton.tsx
965
- import React11 from "react";
981
+ import React12 from "react";
966
982
  import { useIntentDispatcher } from "@dxos/app-framework";
967
983
  import { Button as Button4, useTranslation as useTranslation11 } from "@dxos/react-ui";
968
984
  var ShareSpaceButton = ({ spaceId }) => {
969
985
  const dispatch = useIntentDispatcher();
970
- return /* @__PURE__ */ React11.createElement(ShareSpaceButtonImpl, {
986
+ return /* @__PURE__ */ React12.createElement(ShareSpaceButtonImpl, {
971
987
  onClick: () => dispatch({
972
988
  action: SpaceAction.SHARE,
973
989
  data: {
@@ -978,7 +994,7 @@ var ShareSpaceButton = ({ spaceId }) => {
978
994
  };
979
995
  var ShareSpaceButtonImpl = ({ onClick }) => {
980
996
  const { t } = useTranslation11(SPACE_PLUGIN);
981
- return /* @__PURE__ */ React11.createElement(Button4, {
997
+ return /* @__PURE__ */ React12.createElement(Button4, {
982
998
  "data-testid": "spacePlugin.shareSpaceButton",
983
999
  onClick,
984
1000
  classNames: "mli-1"
@@ -987,16 +1003,16 @@ var ShareSpaceButtonImpl = ({ onClick }) => {
987
1003
 
988
1004
  // packages/plugins/plugin-space/src/components/SpaceMain/SpaceMain.tsx
989
1005
  import { Command } from "@phosphor-icons/react";
990
- import React13 from "react";
1006
+ import React14 from "react";
991
1007
  import { Surface } from "@dxos/app-framework";
992
1008
  import { SpaceState as SpaceState2 } from "@dxos/react-client/echo";
993
- import { Main, useTranslation as useTranslation13 } from "@dxos/react-ui";
1009
+ import { Button as Button6, Main, useTranslation as useTranslation13, toLocalizedString as toLocalizedString2 } from "@dxos/react-ui";
994
1010
  import { getSize as getSize4, mx as mx8, topbarBlockPaddingStart } from "@dxos/react-ui-theme";
995
1011
  import { ClipboardProvider } from "@dxos/shell/react";
996
1012
 
997
1013
  // packages/plugins/plugin-space/src/components/SpaceMain/SpaceMembersSection.tsx
998
1014
  import { CaretDown, Check, UserPlus, UsersThree } from "@phosphor-icons/react";
999
- import React12, { useCallback as useCallback3, useState as useState6 } from "react";
1015
+ import React13, { useCallback as useCallback3, useState as useState6 } from "react";
1000
1016
  import { LayoutAction, useIntent } from "@dxos/app-framework";
1001
1017
  import { useMembers, SpaceMember, useSpaceInvitations } from "@dxos/react-client/echo";
1002
1018
  import { InvitationEncoder } from "@dxos/react-client/invitations";
@@ -1008,9 +1024,9 @@ var activeActionKeyStorageKey = "dxos:react-shell/space-manager/active-action";
1008
1024
  var Presence = SpaceMember.PresenceState;
1009
1025
  var handleCreateInvitationUrl = (invitationCode) => `${origin}?spaceInvitationCode=${invitationCode}`;
1010
1026
  var SpaceMemberList = ({ members }) => {
1011
- return members.length > 0 ? /* @__PURE__ */ React12.createElement(List, {
1027
+ return members.length > 0 ? /* @__PURE__ */ React13.createElement(List, {
1012
1028
  classNames: "col-start-2 col-end-5 gap-y-1 grid grid-cols-subgrid items-center"
1013
- }, members.map((member) => /* @__PURE__ */ React12.createElement(IdentityListItem, {
1029
+ }, members.map((member) => /* @__PURE__ */ React13.createElement(IdentityListItem, {
1014
1030
  classNames: "contents",
1015
1031
  key: member.identity.identityKey.toHex(),
1016
1032
  identity: member.identity,
@@ -1096,83 +1112,83 @@ var SpaceMembersSection = ({ space }) => {
1096
1112
  [Presence.ONLINE]: [],
1097
1113
  [Presence.OFFLINE]: []
1098
1114
  });
1099
- return /* @__PURE__ */ React12.createElement("section", {
1115
+ return /* @__PURE__ */ React13.createElement("section", {
1100
1116
  className: "mbe-4 col-span-3 grid gap-y-2 grid-cols-subgrid auto-rows-min"
1101
- }, /* @__PURE__ */ React12.createElement("h2", {
1117
+ }, /* @__PURE__ */ React13.createElement("h2", {
1102
1118
  className: "contents"
1103
- }, /* @__PURE__ */ React12.createElement(UsersThree, {
1119
+ }, /* @__PURE__ */ React13.createElement(UsersThree, {
1104
1120
  weight: "duotone",
1105
1121
  className: mx7(getSize3(5), "place-self-center")
1106
- }), /* @__PURE__ */ React12.createElement("span", {
1122
+ }), /* @__PURE__ */ React13.createElement("span", {
1107
1123
  className: "text-lg col-span-2"
1108
- }, t("space members label"))), /* @__PURE__ */ React12.createElement("h3", {
1124
+ }, t("space members label"))), /* @__PURE__ */ React13.createElement("h3", {
1109
1125
  className: "col-start-2 col-span-3 text-sm italic text-description"
1110
- }, t("invitations heading")), invitations.length > 0 && /* @__PURE__ */ React12.createElement(List, {
1126
+ }, t("invitations heading")), invitations.length > 0 && /* @__PURE__ */ React13.createElement(List, {
1111
1127
  classNames: "col-start-2 col-span-2 gap-y-2 grid grid-cols-[var(--rail-size)_1fr_var(--rail-action)_var(--rail-action)]"
1112
- }, invitations.map((invitation) => /* @__PURE__ */ React12.createElement(InvitationListItem, {
1128
+ }, invitations.map((invitation) => /* @__PURE__ */ React13.createElement(InvitationListItem, {
1113
1129
  reverseEffects: true,
1114
1130
  classNames: "pis-0 pie-0 gap-0 col-span-4 grid grid-cols-subgrid",
1115
1131
  key: invitation.get().invitationId,
1116
1132
  invitation,
1117
1133
  send: handleInvitationSelect,
1118
1134
  createInvitationUrl: handleCreateInvitationUrl
1119
- }))), /* @__PURE__ */ React12.createElement(ButtonGroup, {
1135
+ }))), /* @__PURE__ */ React13.createElement(ButtonGroup, {
1120
1136
  classNames: "col-start-2 col-end-4 grid grid-cols-[1fr_var(--rail-action)] place-self-grow gap-px"
1121
- }, /* @__PURE__ */ React12.createElement(Button5, {
1137
+ }, /* @__PURE__ */ React13.createElement(Button5, {
1122
1138
  classNames: "gap-2",
1123
1139
  onClick: activeAction.onClick
1124
- }, /* @__PURE__ */ React12.createElement(activeAction.icon, {
1140
+ }, /* @__PURE__ */ React13.createElement(activeAction.icon, {
1125
1141
  className: getSize3(5)
1126
- }), /* @__PURE__ */ React12.createElement("span", null, t(activeAction.label, {
1142
+ }), /* @__PURE__ */ React13.createElement("span", null, t(activeAction.label, {
1127
1143
  ns: "os"
1128
- }))), /* @__PURE__ */ React12.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React12.createElement(DropdownMenu2.Trigger, {
1144
+ }))), /* @__PURE__ */ React13.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React13.createElement(DropdownMenu2.Trigger, {
1129
1145
  asChild: true
1130
- }, /* @__PURE__ */ React12.createElement(Button5, {
1146
+ }, /* @__PURE__ */ React13.createElement(Button5, {
1131
1147
  classNames: "pli-0"
1132
- }, /* @__PURE__ */ React12.createElement(CaretDown, {
1148
+ }, /* @__PURE__ */ React13.createElement(CaretDown, {
1133
1149
  className: getSize3(4)
1134
- }))), /* @__PURE__ */ React12.createElement(DropdownMenu2.Content, null, /* @__PURE__ */ React12.createElement(DropdownMenu2.Viewport, null, Object.entries(inviteActions).map(([id, action]) => {
1135
- return /* @__PURE__ */ React12.createElement(DropdownMenu2.CheckboxItem, {
1150
+ }))), /* @__PURE__ */ React13.createElement(DropdownMenu2.Content, null, /* @__PURE__ */ React13.createElement(DropdownMenu2.Viewport, null, Object.entries(inviteActions).map(([id, action]) => {
1151
+ return /* @__PURE__ */ React13.createElement(DropdownMenu2.CheckboxItem, {
1136
1152
  key: id,
1137
1153
  "aria-labelledby": `${id}__label`,
1138
1154
  "aria-describedby": `${id}__description`,
1139
1155
  checked: activeActionKey === id,
1140
1156
  onCheckedChange: (checked) => checked && setActiveActionKey(id),
1141
1157
  classNames: "gap-2"
1142
- }, action.icon && /* @__PURE__ */ React12.createElement(action.icon, {
1158
+ }, action.icon && /* @__PURE__ */ React13.createElement(action.icon, {
1143
1159
  className: getSize3(5)
1144
- }), /* @__PURE__ */ React12.createElement("div", {
1160
+ }), /* @__PURE__ */ React13.createElement("div", {
1145
1161
  role: "none",
1146
1162
  className: "flex-1 min-is-0 space-b-1"
1147
- }, /* @__PURE__ */ React12.createElement("p", {
1163
+ }, /* @__PURE__ */ React13.createElement("p", {
1148
1164
  id: `${id}__label`
1149
1165
  }, t(action.label, {
1150
1166
  ns: "os"
1151
- })), action.description && /* @__PURE__ */ React12.createElement("p", {
1167
+ })), action.description && /* @__PURE__ */ React13.createElement("p", {
1152
1168
  id: `${id}__description`,
1153
1169
  className: descriptionText5
1154
1170
  }, t(action.description, {
1155
1171
  ns: "os"
1156
- }))), /* @__PURE__ */ React12.createElement(DropdownMenu2.ItemIndicator, {
1172
+ }))), /* @__PURE__ */ React13.createElement(DropdownMenu2.ItemIndicator, {
1157
1173
  asChild: true
1158
- }, /* @__PURE__ */ React12.createElement(Check, {
1174
+ }, /* @__PURE__ */ React13.createElement(Check, {
1159
1175
  className: getSize3(4)
1160
1176
  })));
1161
- })), /* @__PURE__ */ React12.createElement(DropdownMenu2.Arrow, null)))), members[Presence.ONLINE].length + members[Presence.OFFLINE].length < 1 ? /* @__PURE__ */ React12.createElement("p", {
1177
+ })), /* @__PURE__ */ React13.createElement(DropdownMenu2.Arrow, null)))), members[Presence.ONLINE].length + members[Presence.OFFLINE].length < 1 ? /* @__PURE__ */ React13.createElement("p", {
1162
1178
  className: mx7(descriptionText5, "text-center is-full mlb-2")
1163
1179
  }, t("empty space members message", {
1164
1180
  ns: "os"
1165
- })) : /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement("h3", {
1181
+ })) : /* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement("h3", {
1166
1182
  className: "col-start-2 col-end-5 text-sm italic text-description"
1167
1183
  }, t("active space members heading", {
1168
1184
  count: members[Presence.ONLINE].length
1169
- })), /* @__PURE__ */ React12.createElement(SpaceMemberList, {
1185
+ })), /* @__PURE__ */ React13.createElement(SpaceMemberList, {
1170
1186
  members: members[Presence.ONLINE]
1171
- }), /* @__PURE__ */ React12.createElement("h3", {
1187
+ }), /* @__PURE__ */ React13.createElement("h3", {
1172
1188
  className: "col-start-2 col-end-5 text-sm italic text-description"
1173
1189
  }, t("inactive space members heading", {
1174
1190
  count: members[Presence.OFFLINE].length
1175
- })), /* @__PURE__ */ React12.createElement(SpaceMemberList, {
1191
+ })), /* @__PURE__ */ React13.createElement(SpaceMemberList, {
1176
1192
  members: members[Presence.OFFLINE]
1177
1193
  })));
1178
1194
  };
@@ -1180,19 +1196,19 @@ var SpaceMembersSection = ({ space }) => {
1180
1196
  // packages/plugins/plugin-space/src/components/SpaceMain/SpaceMain.tsx
1181
1197
  var KeyShortcuts = () => {
1182
1198
  const { t } = useTranslation13(SPACE_PLUGIN);
1183
- return /* @__PURE__ */ React13.createElement("section", {
1199
+ return /* @__PURE__ */ React14.createElement("section", {
1184
1200
  className: "mbe-4 col-span-4 md:col-start-5 md:col-end-7 grid grid-cols-subgrid gap-y-2 auto-rows-min"
1185
- }, /* @__PURE__ */ React13.createElement("h2", {
1201
+ }, /* @__PURE__ */ React14.createElement("h2", {
1186
1202
  className: "contents"
1187
- }, /* @__PURE__ */ React13.createElement(Command, {
1203
+ }, /* @__PURE__ */ React14.createElement(Command, {
1188
1204
  weight: "duotone",
1189
1205
  className: mx8(getSize4(5), "place-self-center")
1190
- }), /* @__PURE__ */ React13.createElement("span", {
1206
+ }), /* @__PURE__ */ React14.createElement("span", {
1191
1207
  className: "text-lg col-span-2 md:col-span-1"
1192
- }, t("keyshortcuts label"))), /* @__PURE__ */ React13.createElement("div", {
1208
+ }, t("keyshortcuts label"))), /* @__PURE__ */ React14.createElement("div", {
1193
1209
  role: "none",
1194
1210
  className: "col-start-2 col-end-4 md:col-end-5 pie-2"
1195
- }, /* @__PURE__ */ React13.createElement(Surface, {
1211
+ }, /* @__PURE__ */ React14.createElement(Surface, {
1196
1212
  role: "keyshortcuts"
1197
1213
  })));
1198
1214
  };
@@ -1201,7 +1217,7 @@ var SpaceMain = ({ space, role }) => {
1201
1217
  const state = space.state.get();
1202
1218
  const ready = state === SpaceState2.SPACE_READY;
1203
1219
  const Root = role === "main" ? Main.Content : "div";
1204
- return /* @__PURE__ */ React13.createElement(ClipboardProvider, null, /* @__PURE__ */ React13.createElement(Root, {
1220
+ return /* @__PURE__ */ React14.createElement(ClipboardProvider, null, /* @__PURE__ */ React14.createElement(Root, {
1205
1221
  ...role === "main" ? {
1206
1222
  classNames: [
1207
1223
  topbarBlockPaddingStart,
@@ -1214,13 +1230,13 @@ var SpaceMain = ({ space, role }) => {
1214
1230
  },
1215
1231
  "data-testid": `spacePlugin.${role}`,
1216
1232
  "data-isready": ready ? "true" : "false"
1217
- }, ready && /* @__PURE__ */ React13.createElement(SpaceMembersSection, {
1233
+ }, ready && /* @__PURE__ */ React14.createElement(SpaceMembersSection, {
1218
1234
  space
1219
- }), /* @__PURE__ */ React13.createElement(KeyShortcuts, null)));
1235
+ }), /* @__PURE__ */ React14.createElement(KeyShortcuts, null)));
1220
1236
  };
1221
1237
 
1222
1238
  // packages/plugins/plugin-space/src/components/SpacePresence.tsx
1223
- import React14, { useCallback as useCallback4, useEffect as useEffect4, useState as useState7 } from "react";
1239
+ import React15, { useCallback as useCallback4, useEffect as useEffect4, useState as useState7 } from "react";
1224
1240
  import { usePlugin } from "@dxos/app-framework";
1225
1241
  import { generateName } from "@dxos/display-name";
1226
1242
  import { PublicKey, useClient as useClient3 } from "@dxos/react-client";
@@ -1264,9 +1280,9 @@ var SpacePresence = ({ object, spaceKey }) => {
1264
1280
  lastSeen
1265
1281
  };
1266
1282
  }).toSorted((a, b) => a.lastSeen - b.lastSeen);
1267
- return density === "fine" ? /* @__PURE__ */ React14.createElement(SmallPresence, {
1283
+ return density === "fine" ? /* @__PURE__ */ React15.createElement(SmallPresence, {
1268
1284
  count: membersForObject.length
1269
- }) : /* @__PURE__ */ React14.createElement(FullPresence, {
1285
+ }) : /* @__PURE__ */ React15.createElement(FullPresence, {
1270
1286
  members: membersForObject
1271
1287
  });
1272
1288
  };
@@ -1276,38 +1292,38 @@ var FullPresence = (props) => {
1276
1292
  if (members.length === 0) {
1277
1293
  return null;
1278
1294
  }
1279
- return /* @__PURE__ */ React14.createElement(AvatarGroup.Root, {
1295
+ return /* @__PURE__ */ React15.createElement(AvatarGroup.Root, {
1280
1296
  size,
1281
1297
  classNames: "mbs-2 mie-4",
1282
1298
  "data-testid": "spacePlugin.presence"
1283
- }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React14.createElement(Tooltip2.Root, {
1299
+ }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React15.createElement(Tooltip2.Root, {
1284
1300
  key: member.identity.identityKey.toHex()
1285
- }, /* @__PURE__ */ React14.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React14.createElement(PrensenceAvatar, {
1301
+ }, /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React15.createElement(PrensenceAvatar, {
1286
1302
  identity: member.identity,
1287
1303
  group: true,
1288
1304
  match: member.currentlyAttended,
1289
1305
  index: members.length - i,
1290
1306
  onClick: () => onMemberClick?.(member)
1291
- })), /* @__PURE__ */ React14.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React14.createElement(Tooltip2.Content, {
1307
+ })), /* @__PURE__ */ React15.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React15.createElement(Tooltip2.Content, {
1292
1308
  side: "bottom"
1293
- }, /* @__PURE__ */ React14.createElement("span", null, getName(member.identity)), /* @__PURE__ */ React14.createElement(Tooltip2.Arrow, null))))), members.length > 3 && /* @__PURE__ */ React14.createElement(Tooltip2.Root, null, /* @__PURE__ */ React14.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React14.createElement(AvatarGroupItem.Root, {
1309
+ }, /* @__PURE__ */ React15.createElement("span", null, getName(member.identity)), /* @__PURE__ */ React15.createElement(Tooltip2.Arrow, null))))), members.length > 3 && /* @__PURE__ */ React15.createElement(Tooltip2.Root, null, /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React15.createElement(AvatarGroupItem.Root, {
1294
1310
  status: "inactive"
1295
- }, /* @__PURE__ */ React14.createElement(Avatar.Frame, {
1311
+ }, /* @__PURE__ */ React15.createElement(Avatar.Frame, {
1296
1312
  style: {
1297
1313
  zIndex: members.length - 4
1298
1314
  }
1299
- }, /* @__PURE__ */ React14.createElement(Avatar.Fallback, {
1315
+ }, /* @__PURE__ */ React15.createElement(Avatar.Fallback, {
1300
1316
  text: `+${members.length - 3}`
1301
- })))), /* @__PURE__ */ React14.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React14.createElement(Tooltip2.Content, {
1317
+ })))), /* @__PURE__ */ React15.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React15.createElement(Tooltip2.Content, {
1302
1318
  side: "bottom"
1303
- }, /* @__PURE__ */ React14.createElement(Tooltip2.Arrow, null), /* @__PURE__ */ React14.createElement(List2, {
1319
+ }, /* @__PURE__ */ React15.createElement(Tooltip2.Arrow, null), /* @__PURE__ */ React15.createElement(List2, {
1304
1320
  classNames: "max-h-56 overflow-y-auto"
1305
- }, members.map((member) => /* @__PURE__ */ React14.createElement(ListItem.Root, {
1321
+ }, members.map((member) => /* @__PURE__ */ React15.createElement(ListItem.Root, {
1306
1322
  key: member.identity.identityKey.toHex(),
1307
1323
  classNames: "flex gap-2 items-center cursor-pointer mbe-2",
1308
1324
  onClick: () => onMemberClick?.(member),
1309
1325
  "data-testid": "identity-list-item"
1310
- }, /* @__PURE__ */ React14.createElement(PrensenceAvatar, {
1326
+ }, /* @__PURE__ */ React15.createElement(PrensenceAvatar, {
1311
1327
  identity: member.identity,
1312
1328
  showName: true,
1313
1329
  match: member.currentlyAttended
@@ -1317,10 +1333,10 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
1317
1333
  const Root = group ? AvatarGroupItem.Root : Avatar.Root;
1318
1334
  const status = match ? "current" : "active";
1319
1335
  const fallbackValue = keyToFallback(identity.identityKey);
1320
- return /* @__PURE__ */ React14.createElement(Root, {
1336
+ return /* @__PURE__ */ React15.createElement(Root, {
1321
1337
  status,
1322
1338
  hue: identity.profile?.data?.hue || fallbackValue.hue
1323
- }, /* @__PURE__ */ React14.createElement(Avatar.Frame, {
1339
+ }, /* @__PURE__ */ React15.createElement(Avatar.Frame, {
1324
1340
  "data-testid": "spacePlugin.presence.member",
1325
1341
  "data-status": status,
1326
1342
  ...index ? {
@@ -1329,9 +1345,9 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
1329
1345
  }
1330
1346
  } : {},
1331
1347
  onClick: () => onClick?.()
1332
- }, /* @__PURE__ */ React14.createElement(Avatar.Fallback, {
1348
+ }, /* @__PURE__ */ React15.createElement(Avatar.Fallback, {
1333
1349
  text: identity.profile?.data?.emoji || fallbackValue.emoji
1334
- })), showName && /* @__PURE__ */ React14.createElement(Avatar.Label, {
1350
+ })), showName && /* @__PURE__ */ React15.createElement(Avatar.Label, {
1335
1351
  classNames: "text-sm truncate pli-2"
1336
1352
  }, getName(identity)));
1337
1353
  };
@@ -1342,37 +1358,36 @@ var SmallPresenceLive = ({ viewers }) => {
1342
1358
  return () => clearInterval(interval);
1343
1359
  }, []);
1344
1360
  const activeViewers = viewers ? Array.from(viewers.values()).filter(({ lastSeen }) => moment - lastSeen < ACTIVITY_DURATION) : [];
1345
- return /* @__PURE__ */ React14.createElement(SmallPresence, {
1361
+ return /* @__PURE__ */ React15.createElement(SmallPresence, {
1346
1362
  count: activeViewers.length
1347
1363
  });
1348
1364
  };
1349
1365
  var SmallPresence = ({ count }) => {
1350
1366
  const { t } = useTranslation14(SPACE_PLUGIN);
1351
- return /* @__PURE__ */ React14.createElement(Tooltip2.Root, null, /* @__PURE__ */ React14.createElement(Tooltip2.Trigger, {
1367
+ return /* @__PURE__ */ React15.createElement(Tooltip2.Root, null, /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, {
1352
1368
  asChild: true
1353
- }, /* @__PURE__ */ React14.createElement(AttentionGlyph, {
1369
+ }, /* @__PURE__ */ React15.createElement(AttentionGlyph, {
1354
1370
  presence: count > 1 ? "many" : count === 1 ? "one" : "none",
1355
1371
  classNames: "self-center mie-1"
1356
- })), /* @__PURE__ */ React14.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React14.createElement(Tooltip2.Content, {
1372
+ })), /* @__PURE__ */ React15.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React15.createElement(Tooltip2.Content, {
1357
1373
  side: "bottom",
1358
1374
  classNames: "z-[70]"
1359
- }, /* @__PURE__ */ React14.createElement("span", null, t("presence label", {
1375
+ }, /* @__PURE__ */ React15.createElement("span", null, t("presence label", {
1360
1376
  count
1361
- })), /* @__PURE__ */ React14.createElement(Tooltip2.Arrow, null))));
1377
+ })), /* @__PURE__ */ React15.createElement(Tooltip2.Arrow, null))));
1362
1378
  };
1363
1379
 
1364
1380
  // packages/plugins/plugin-space/src/components/SpaceSettings.tsx
1365
- import React15 from "react";
1366
- import { useIntentDispatcher as useIntentDispatcher2, useResolvePlugins } from "@dxos/app-framework";
1381
+ import React16 from "react";
1382
+ import { useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
1367
1383
  import { SettingsValue } from "@dxos/plugin-settings";
1368
- import { Input as Input3, Select, toLocalizedString as toLocalizedString2, useTranslation as useTranslation15 } from "@dxos/react-ui";
1384
+ import { Input as Input3, useTranslation as useTranslation15 } from "@dxos/react-ui";
1369
1385
  var SpaceSettings = ({ settings }) => {
1370
1386
  const { t } = useTranslation15(SPACE_PLUGIN);
1371
1387
  const dispatch = useIntentDispatcher2();
1372
- const plugins = useResolvePlugins(parseSpaceInitPlugin);
1373
- return /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(SettingsValue, {
1388
+ return /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(SettingsValue, {
1374
1389
  label: t("show hidden spaces label")
1375
- }, /* @__PURE__ */ React15.createElement(Input3.Switch, {
1390
+ }, /* @__PURE__ */ React16.createElement(Input3.Switch, {
1376
1391
  checked: settings.showHidden,
1377
1392
  onCheckedChange: (checked) => dispatch({
1378
1393
  plugin: SPACE_PLUGIN,
@@ -1381,307 +1396,7 @@ var SpaceSettings = ({ settings }) => {
1381
1396
  state: !!checked
1382
1397
  }
1383
1398
  })
1384
- })), /* @__PURE__ */ React15.createElement(SettingsValue, {
1385
- label: t("default on space create label")
1386
- }, /* @__PURE__ */ React15.createElement(Select.Root, {
1387
- value: settings.onSpaceCreate,
1388
- onValueChange: (value) => {
1389
- settings.onSpaceCreate = value;
1390
- }
1391
- }, /* @__PURE__ */ React15.createElement(Select.TriggerButton, null), /* @__PURE__ */ React15.createElement(Select.Portal, null, /* @__PURE__ */ React15.createElement(Select.Content, null, /* @__PURE__ */ React15.createElement(Select.Viewport, null, plugins.map(({ provides: { space: { onSpaceCreate } } }) => /* @__PURE__ */ React15.createElement(Select.Option, {
1392
- key: onSpaceCreate.action,
1393
- value: onSpaceCreate.action
1394
- }, toLocalizedString2(onSpaceCreate.label, t)))))))));
1395
- };
1396
-
1397
- // packages/plugins/plugin-space/src/components/SaveStatus.tsx
1398
- import React16, { useEffect as useEffect5, useState as useState8 } from "react";
1399
- import { Context } from "@dxos/context";
1400
- import { StatusBar } from "@dxos/plugin-status-bar";
1401
- import { useClient as useClient4 } from "@dxos/react-client";
1402
- import { Icon, useTranslation as useTranslation16 } from "@dxos/react-ui";
1403
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SaveStatus.tsx";
1404
- var SaveStatus = () => {
1405
- const { t } = useTranslation16(SPACE_PLUGIN);
1406
- const client = useClient4();
1407
- const [state, setState] = useState8("saved");
1408
- useEffect5(() => {
1409
- return createClientSaveTracker(client, (state2) => {
1410
- setState(state2);
1411
- });
1412
- }, []);
1413
- return /* @__PURE__ */ React16.createElement(StatusBar.Item, {
1414
- title: state === "saving" ? t("saving label") : t("saved label")
1415
- }, /* @__PURE__ */ React16.createElement(Icon, {
1416
- icon: state === "saving" ? "ph--arrows-clockwise--regular" : "ph--check-circle--regular",
1417
- size: 4
1418
- }));
1419
- };
1420
- var createClientSaveTracker = (client, cb) => {
1421
- const unsubscribeCallbacks = {};
1422
- const state = {};
1423
- const install = (spaces) => {
1424
- for (const space of spaces) {
1425
- if (state[space.id]) {
1426
- continue;
1427
- }
1428
- state[space.id] = "saved";
1429
- unsubscribeCallbacks[space.id] = createSpaceSaveTracker(space, (s) => {
1430
- state[space.id] = s;
1431
- cb(Object.values(state).some((s2) => s2 === "saving") ? "saving" : "saved");
1432
- });
1433
- }
1434
- };
1435
- client.spaces.subscribe((spaces) => {
1436
- install(spaces);
1437
- });
1438
- install(client.spaces.get());
1439
- return () => {
1440
- for (const unsubscribe of Object.values(unsubscribeCallbacks)) {
1441
- unsubscribe();
1442
- }
1443
- };
1444
- };
1445
- var createSpaceSaveTracker = (space, cb) => {
1446
- const ctx = new Context(void 0, {
1447
- F: __dxlog_file3,
1448
- L: 64
1449
- });
1450
- void space.waitUntilReady().then(() => {
1451
- if (ctx.disposed) {
1452
- return;
1453
- }
1454
- let hasUnsavedChanges = false;
1455
- let lastFlushPromise;
1456
- space.crud.saveStateChanged.on(ctx, ({ unsavedDocuments }) => {
1457
- hasUnsavedChanges = unsavedDocuments.length > 0;
1458
- });
1459
- space.crud.saveStateChanged.debounce(500).on(ctx, () => {
1460
- if (hasUnsavedChanges) {
1461
- lastFlushPromise = void 0;
1462
- cb("saving");
1463
- } else {
1464
- const flushPromise = space.crud.flush();
1465
- lastFlushPromise = flushPromise;
1466
- void flushPromise.then(() => {
1467
- if (lastFlushPromise === flushPromise) {
1468
- cb("saved");
1469
- }
1470
- });
1471
- }
1472
- });
1473
- });
1474
- return () => {
1475
- void ctx.dispose();
1476
- };
1477
- };
1478
-
1479
- // packages/plugins/plugin-space/src/components/SyncStatus/SyncStatus.tsx
1480
- import React17, { useEffect as useEffect7, useState as useState10 } from "react";
1481
- import { StatusBar as StatusBar2 } from "@dxos/plugin-status-bar";
1482
- import { Icon as Icon2, Popover as Popover3, useTranslation as useTranslation17 } from "@dxos/react-ui";
1483
- import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
1484
- import { mx as mx9 } from "@dxos/react-ui-theme";
1485
-
1486
- // packages/plugins/plugin-space/src/components/SyncStatus/types.ts
1487
- import { useEffect as useEffect6, useState as useState9 } from "react";
1488
- import { Context as Context2 } from "@dxos/context";
1489
- import { EdgeService } from "@dxos/protocols";
1490
- import { useClient as useClient5 } from "@dxos/react-client";
1491
- var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/types.ts";
1492
- var createEmptyEdgeSyncState = () => ({
1493
- missingOnLocal: 0,
1494
- missingOnRemote: 0,
1495
- localDocumentCount: 0,
1496
- remoteDocumentCount: 0,
1497
- differentDocuments: 0
1498
- });
1499
- var getSyncSummary = (syncMap) => {
1500
- return Object.entries(syncMap).reduce((summary, [_spaceId, peerState]) => {
1501
- summary.missingOnLocal += peerState.missingOnLocal;
1502
- summary.missingOnRemote += peerState.missingOnRemote;
1503
- summary.localDocumentCount += peerState.localDocumentCount;
1504
- summary.remoteDocumentCount += peerState.remoteDocumentCount;
1505
- summary.differentDocuments += peerState.differentDocuments;
1506
- return summary;
1507
- }, createEmptyEdgeSyncState());
1508
- };
1509
- var isEdgePeerId = (peerId, spaceId) => peerId.startsWith(`${EdgeService.AUTOMERGE_REPLICATOR}:${spaceId}`);
1510
- var useSyncState = () => {
1511
- const client = useClient5();
1512
- const [spaceState, setSpaceState] = useState9({});
1513
- useEffect6(() => {
1514
- const ctx = new Context2(void 0, {
1515
- F: __dxlog_file4,
1516
- L: 48
1517
- });
1518
- const createSubscriptions = (spaces) => {
1519
- for (const space of spaces) {
1520
- if (spaceState[space.id]) {
1521
- continue;
1522
- }
1523
- ctx.onDispose(space.crud.subscribeToSyncState(ctx, ({ peers = [] }) => {
1524
- const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));
1525
- if (syncState) {
1526
- setSpaceState((spaceState2) => ({
1527
- ...spaceState2,
1528
- [space.id]: syncState
1529
- }));
1530
- }
1531
- }));
1532
- }
1533
- };
1534
- createSubscriptions(client.spaces.get());
1535
- client.spaces.subscribe((spaces) => {
1536
- createSubscriptions(spaces);
1537
- });
1538
- return () => {
1539
- void ctx.dispose();
1540
- };
1541
- }, [
1542
- client
1543
- ]);
1544
- return spaceState;
1545
- };
1546
-
1547
- // packages/plugins/plugin-space/src/components/SyncStatus/SyncStatus.tsx
1548
- var SYNC_STALLED_TIMEOUT = 5e3;
1549
- var styles = {
1550
- barBg: "bg-neutral-50 dark:bg-green-900 text-black",
1551
- barFg: "bg-neutral-100 bg-green-500",
1552
- barHover: "dark:hover:bg-green-500"
1553
- };
1554
- var SyncStatus = () => {
1555
- const state = useSyncState();
1556
- return /* @__PURE__ */ React17.createElement(SyncStatusIndicator, {
1557
- state
1558
- });
1559
- };
1560
- var SyncStatusIndicator = ({ state }) => {
1561
- const summary = getSyncSummary(state);
1562
- const offline = false;
1563
- const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
1564
- const needsToDownload = summary.differentDocuments > 0 || summary.missingOnLocal > 0;
1565
- const [classNames, setClassNames] = useState10();
1566
- useEffect7(() => {
1567
- setClassNames(void 0);
1568
- if (!needsToUpload && !needsToDownload) {
1569
- return;
1570
- }
1571
- const t = setTimeout(() => {
1572
- setClassNames("text-orange-500");
1573
- }, SYNC_STALLED_TIMEOUT);
1574
- return () => clearTimeout(t);
1575
- }, [
1576
- needsToUpload,
1577
- needsToDownload
1578
- ]);
1579
- return /* @__PURE__ */ React17.createElement(StatusBar2.Item, null, /* @__PURE__ */ React17.createElement(Popover3.Root, null, /* @__PURE__ */ React17.createElement(Popover3.Trigger, null, /* @__PURE__ */ React17.createElement(Icon2, {
1580
- icon: offline ? "ph--cloud-x--regular" : needsToUpload ? "ph--cloud-arrow-up--regular" : needsToDownload ? "ph--cloud-arrow-down--regular" : "ph--cloud-check--regular",
1581
- size: 4,
1582
- classNames
1583
- })), /* @__PURE__ */ React17.createElement(Popover3.Content, null, /* @__PURE__ */ React17.createElement(SyncStatusDetail, {
1584
- state,
1585
- summary,
1586
- debug: false
1587
- }))));
1588
- };
1589
- var SyncStatusDetail = ({ classNames, state, summary, debug }) => {
1590
- const { t } = useTranslation17(SPACE_PLUGIN);
1591
- const entries = Object.entries(state).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
1592
- return /* @__PURE__ */ React17.createElement("div", {
1593
- className: mx9("flex flex-col text-xs min-w-[16rem]", classNames)
1594
- }, /* @__PURE__ */ React17.createElement("h1", {
1595
- className: "p-2"
1596
- }, t("sync status title")), /* @__PURE__ */ React17.createElement("div", {
1597
- className: "flex flex-col gap-[2px] my-[2px]"
1598
- }, entries.map(([spaceId, state2]) => /* @__PURE__ */ React17.createElement(SpaceRow, {
1599
- key: spaceId,
1600
- spaceId,
1601
- state: state2
1602
- }))), debug && /* @__PURE__ */ React17.createElement(SyntaxHighlighter, {
1603
- language: "json"
1604
- }, JSON.stringify(summary, null, 2)));
1605
- };
1606
- var useActive = (count) => {
1607
- const [current, setCurrent] = useState10(count);
1608
- const [active, setActive] = useState10(false);
1609
- useEffect7(() => {
1610
- let t;
1611
- if (count !== current) {
1612
- setActive(true);
1613
- setCurrent(count);
1614
- t && clearTimeout(t);
1615
- t = setTimeout(() => {
1616
- setActive(false);
1617
- }, SYNC_STALLED_TIMEOUT);
1618
- }
1619
- return () => {
1620
- setActive(false);
1621
- clearTimeout(t);
1622
- };
1623
- }, [
1624
- count,
1625
- current
1626
- ]);
1627
- return active;
1628
- };
1629
- var SpaceRow = ({ spaceId, state: { localDocumentCount, remoteDocumentCount, missingOnLocal, missingOnRemote } }) => {
1630
- const downActive = useActive(localDocumentCount);
1631
- const upActive = useActive(remoteDocumentCount);
1632
- return /* @__PURE__ */ React17.createElement("div", {
1633
- className: mx9("flex items-center mx-[2px] gap-[2px] cursor-pointer", styles.barHover),
1634
- title: spaceId,
1635
- onClick: () => {
1636
- void navigator.clipboard.writeText(spaceId);
1637
- }
1638
- }, /* @__PURE__ */ React17.createElement(Icon2, {
1639
- icon: "ph--arrow-fat-line-left--regular",
1640
- size: 3,
1641
- classNames: mx9(downActive && "animate-[pulse_1s_infinite]")
1642
- }), /* @__PURE__ */ React17.createElement(Candle, {
1643
- up: {
1644
- count: remoteDocumentCount,
1645
- total: remoteDocumentCount + missingOnRemote
1646
- },
1647
- down: {
1648
- count: localDocumentCount,
1649
- total: localDocumentCount + missingOnLocal
1650
- },
1651
- title: spaceId
1652
- }), /* @__PURE__ */ React17.createElement(Icon2, {
1653
- icon: "ph--arrow-fat-line-right--regular",
1654
- size: 3,
1655
- classNames: mx9(upActive && "animate-[pulse_1s_step-start_infinite]")
1656
- }));
1657
- };
1658
- var Candle = ({ classNames, up, down }) => {
1659
- return /* @__PURE__ */ React17.createElement("div", {
1660
- className: mx9("grid grid-cols-[1fr_2rem_1fr] w-full h-3", classNames)
1661
- }, /* @__PURE__ */ React17.createElement(Bar, {
1662
- classNames: "justify-end",
1663
- ...up
1664
- }), /* @__PURE__ */ React17.createElement("div", {
1665
- className: "relative"
1666
- }, /* @__PURE__ */ React17.createElement("div", {
1667
- className: mx9("absolute inset-0 flex items-center justify-center text-xs", styles.barBg)
1668
- }, up.total)), /* @__PURE__ */ React17.createElement(Bar, down));
1669
- };
1670
- var Bar = ({ classNames, count, total }) => {
1671
- let p = count / total * 100;
1672
- if (count < total) {
1673
- p = Math.min(p, 95);
1674
- }
1675
- return /* @__PURE__ */ React17.createElement("div", {
1676
- className: mx9("relative flex w-full", styles.barBg, classNames)
1677
- }, /* @__PURE__ */ React17.createElement("div", {
1678
- className: mx9("shrink-0", styles.barFg),
1679
- style: {
1680
- width: `${p}%`
1681
- }
1682
- }), count !== total && /* @__PURE__ */ React17.createElement("div", {
1683
- className: "absolute top-0 bottom-0 flex items-center mx-0.5 text-black text-xs"
1684
- }, count));
1399
+ })));
1685
1400
  };
1686
1401
 
1687
1402
  // packages/plugins/plugin-space/src/translations.ts
@@ -1763,25 +1478,21 @@ var translations_default = [
1763
1478
  "space limit close label": "Close",
1764
1479
  "remove deleted objects label": "Cleanup",
1765
1480
  "remove deleted objects alt": "Permanently remove deleted objects to free up space.",
1766
- "copy link label": "Copy link",
1767
- "default on space create label": "On space create",
1768
- "sync status title": "Sync status"
1481
+ "copy link label": "Copy link"
1769
1482
  }
1770
1483
  }
1771
1484
  }
1772
1485
  ];
1773
1486
 
1774
1487
  // packages/plugins/plugin-space/src/SpacePlugin.tsx
1775
- var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/SpacePlugin.tsx";
1488
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/SpacePlugin.tsx";
1776
1489
  var ACTIVE_NODE_BROADCAST_INTERVAL = 3e4;
1777
1490
  var OBJECT_ID_LENGTH = 60;
1778
1491
  var SPACE_MAX_OBJECTS = 500;
1779
1492
  var DIRECTORY_TYPE = "text/directory";
1780
1493
  var parseSpacePlugin = (plugin) => Array.isArray(plugin?.provides.space?.enabled) ? plugin : void 0;
1781
1494
  var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1782
- const settings = new LocalStorageStore(SPACE_PLUGIN, {
1783
- onSpaceCreate: "dxos.org/plugin/markdown/action/create"
1784
- });
1495
+ const settings = new LocalStorageStore(SPACE_PLUGIN);
1785
1496
  const state = new LocalStorageStore(SPACE_PLUGIN, {
1786
1497
  awaiting: void 0,
1787
1498
  spaceNames: {},
@@ -1861,8 +1572,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1861
1572
  log2.warn("Failed to broadcast active node for presence.", {
1862
1573
  err: err.message
1863
1574
  }, {
1864
- F: __dxlog_file5,
1865
- L: 225,
1575
+ F: __dxlog_file3,
1576
+ L: 222,
1866
1577
  S: void 0,
1867
1578
  C: (f, a) => f(...a)
1868
1579
  });
@@ -1971,7 +1682,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1971
1682
  ...translations_default,
1972
1683
  osTranslations
1973
1684
  ],
1974
- root: () => state.values.awaiting ? /* @__PURE__ */ React18.createElement(AwaitingObject, {
1685
+ root: () => state.values.awaiting ? /* @__PURE__ */ React17.createElement(AwaitingObject, {
1975
1686
  id: state.values.awaiting
1976
1687
  }) : null,
1977
1688
  metadata: {
@@ -1983,7 +1694,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1983
1694
  ns: SPACE_PLUGIN
1984
1695
  }
1985
1696
  ],
1986
- icon: "ph--cards-three--regular",
1697
+ icon: (props) => /* @__PURE__ */ React17.createElement(CardsThree2, props),
1698
+ iconSymbol: "ph--cards-three--regular",
1987
1699
  // TODO(wittjosiah): Move out of metadata.
1988
1700
  loadReferences: (collection) => loadObjectReferences(collection, (collection2) => [
1989
1701
  ...collection2.objects,
@@ -2003,33 +1715,33 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2003
1715
  switch (role) {
2004
1716
  case "article":
2005
1717
  case "main":
2006
- return isSpace2(primary) && primary.state.get() === SpaceState3.SPACE_READY ? /* @__PURE__ */ React18.createElement(Surface2, {
1718
+ return isSpace2(primary) && primary.state.get() === SpaceState3.SPACE_READY ? /* @__PURE__ */ React17.createElement(Surface2, {
2007
1719
  data: {
2008
1720
  active: primary.properties[CollectionType.typename]
2009
1721
  },
2010
1722
  role,
2011
1723
  ...rest
2012
1724
  }) : primary instanceof CollectionType ? {
2013
- node: /* @__PURE__ */ React18.createElement(CollectionMain, {
1725
+ node: /* @__PURE__ */ React17.createElement(CollectionMain, {
2014
1726
  collection: primary
2015
1727
  }),
2016
1728
  disposition: "fallback"
2017
- } : typeof primary === "string" && primary.length === OBJECT_ID_LENGTH ? /* @__PURE__ */ React18.createElement(MissingObject, {
1729
+ } : typeof primary === "string" && primary.length === OBJECT_ID_LENGTH ? /* @__PURE__ */ React17.createElement(MissingObject, {
2018
1730
  id: primary
2019
1731
  }) : null;
2020
1732
  // TODO(burdon): Add role name syntax to minimal plugin docs.
2021
1733
  case "tree--empty":
2022
1734
  switch (true) {
2023
1735
  case data.plugin === SPACE_PLUGIN:
2024
- return /* @__PURE__ */ React18.createElement(EmptyTree, null);
1736
+ return /* @__PURE__ */ React17.createElement(EmptyTree, null);
2025
1737
  case (isGraphNode(data.activeNode) && isSpace2(data.activeNode.data)):
2026
- return /* @__PURE__ */ React18.createElement(EmptySpace, null);
1738
+ return /* @__PURE__ */ React17.createElement(EmptySpace, null);
2027
1739
  default:
2028
1740
  return null;
2029
1741
  }
2030
1742
  case "dialog":
2031
1743
  if (data.component === "dxos.org/plugin/space/InvitationManagerDialog") {
2032
- return /* @__PURE__ */ React18.createElement(Dialog.Content, null, /* @__PURE__ */ React18.createElement(ClipboardProvider2, null, /* @__PURE__ */ React18.createElement(InvitationManager, {
1744
+ return /* @__PURE__ */ React17.createElement(Dialog.Content, null, /* @__PURE__ */ React17.createElement(ClipboardProvider2, null, /* @__PURE__ */ React17.createElement(InvitationManager, {
2033
1745
  active: true,
2034
1746
  ...data.subject
2035
1747
  })));
@@ -2038,20 +1750,20 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2038
1750
  }
2039
1751
  case "popover":
2040
1752
  if (data.component === "dxos.org/plugin/space/RenameSpacePopover" && isSpace2(data.subject)) {
2041
- return /* @__PURE__ */ React18.createElement(PopoverRenameSpace, {
1753
+ return /* @__PURE__ */ React17.createElement(PopoverRenameSpace, {
2042
1754
  space: data.subject
2043
1755
  });
2044
1756
  }
2045
1757
  if (data.component === "dxos.org/plugin/space/RenameObjectPopover" && isReactiveObject2(data.subject)) {
2046
- return /* @__PURE__ */ React18.createElement(PopoverRenameObject, {
1758
+ return /* @__PURE__ */ React17.createElement(PopoverRenameObject, {
2047
1759
  object: data.subject
2048
1760
  });
2049
1761
  }
2050
1762
  return null;
2051
1763
  case "presence--glyph": {
2052
- return isReactiveObject2(data.object) ? /* @__PURE__ */ React18.createElement(SmallPresenceLive, {
1764
+ return isReactiveObject2(data.object) ? /* @__PURE__ */ React17.createElement(SmallPresenceLive, {
2053
1765
  viewers: state.values.viewersByObject[fullyQualifiedId4(data.object)]
2054
- }) : /* @__PURE__ */ React18.createElement(SmallPresence, {
1766
+ }) : /* @__PURE__ */ React17.createElement(SmallPresence, {
2055
1767
  count: 0
2056
1768
  });
2057
1769
  }
@@ -2065,33 +1777,30 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2065
1777
  const space = isSpace2(data.object) ? data.object : getSpace4(data.object);
2066
1778
  const object = isSpace2(data.object) ? data.object.state.get() === SpaceState3.SPACE_READY ? space?.properties[CollectionType.typename] : void 0 : data.object;
2067
1779
  return space && object ? {
2068
- node: /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(SpacePresence, {
1780
+ node: /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(SpacePresence, {
2069
1781
  object
2070
- }), space.properties[COMPOSER_SPACE_LOCK] ? null : /* @__PURE__ */ React18.createElement(ShareSpaceButton, {
1782
+ }), space.properties[COMPOSER_SPACE_LOCK] ? null : /* @__PURE__ */ React17.createElement(ShareSpaceButton, {
2071
1783
  spaceId: space.id
2072
1784
  })),
2073
1785
  disposition: "hoist"
2074
1786
  } : null;
2075
1787
  }
2076
1788
  case "section":
2077
- return data.object instanceof CollectionType ? /* @__PURE__ */ React18.createElement(CollectionSection, {
1789
+ return data.object instanceof CollectionType ? /* @__PURE__ */ React17.createElement(CollectionSection, {
2078
1790
  collection: data.object
2079
1791
  }) : null;
2080
1792
  case "settings":
2081
- return data.plugin === meta_default.id ? /* @__PURE__ */ React18.createElement(SpaceSettings, {
1793
+ return data.plugin === meta_default.id ? /* @__PURE__ */ React17.createElement(SpaceSettings, {
2082
1794
  settings: settings.values
2083
1795
  }) : null;
2084
1796
  case "menu-footer":
2085
1797
  if (!isEchoObject2(data.object)) {
2086
1798
  return null;
2087
1799
  } else {
2088
- return /* @__PURE__ */ React18.createElement(MenuFooter, {
1800
+ return /* @__PURE__ */ React17.createElement(MenuFooter, {
2089
1801
  object: data.object
2090
1802
  });
2091
1803
  }
2092
- case "status": {
2093
- return /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(SyncStatus, null), /* @__PURE__ */ React18.createElement(SaveStatus, null));
2094
- }
2095
1804
  default:
2096
1805
  return null;
2097
1806
  }
@@ -2151,8 +1860,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2151
1860
  spacesOrder.order = nextOrder.map(({ id }) => id);
2152
1861
  } else {
2153
1862
  log2.warn("spaces order object not found", void 0, {
2154
- F: __dxlog_file5,
2155
- L: 524,
1863
+ F: __dxlog_file3,
1864
+ L: 514,
2156
1865
  S: void 0,
2157
1866
  C: (f, a) => f(...a)
2158
1867
  });
@@ -2188,7 +1897,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2188
1897
  ns: SPACE_PLUGIN
2189
1898
  }
2190
1899
  ],
2191
- icon: "ph--plus--regular",
1900
+ icon: (props) => /* @__PURE__ */ React17.createElement(Plus2, props),
1901
+ iconSymbol: "ph--plus--regular",
2192
1902
  disposition: "toolbar",
2193
1903
  testId: "spacePlugin.createSpace"
2194
1904
  }
@@ -2213,7 +1923,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2213
1923
  ns: SPACE_PLUGIN
2214
1924
  }
2215
1925
  ],
2216
- icon: "ph--sign-in--regular",
1926
+ icon: (props) => /* @__PURE__ */ React17.createElement(SignIn, props),
1927
+ iconSymbol: "ph--sign-in--regular",
2217
1928
  testId: "spacePlugin.joinSpace"
2218
1929
  }
2219
1930
  }
@@ -2448,25 +2159,6 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2448
2159
  }
2449
2160
  },
2450
2161
  intents: [
2451
- ...settings.values.onSpaceCreate ? [
2452
- [
2453
- {
2454
- action: settings.values.onSpaceCreate,
2455
- data: {
2456
- space
2457
- }
2458
- },
2459
- {
2460
- action: SpaceAction.ADD_OBJECT,
2461
- data: {
2462
- target: space
2463
- }
2464
- },
2465
- {
2466
- action: NavigationAction3.EXPOSE
2467
- }
2468
- ]
2469
- ] : [],
2470
2162
  [
2471
2163
  {
2472
2164
  action: ObservabilityAction.SEND_EVENT,
@@ -2687,7 +2379,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2687
2379
  title: translations_default[0]["en-US"][SPACE_PLUGIN]["space limit label"],
2688
2380
  description: translations_default[0]["en-US"][SPACE_PLUGIN]["space limit description"],
2689
2381
  duration: 5e3,
2690
- icon: "ph--warning--regular",
2382
+ icon: (props) => /* @__PURE__ */ React17.createElement(Warning2, props),
2383
+ iconSymbol: "ph--warning--regular",
2691
2384
  actionLabel: translations_default[0]["en-US"][SPACE_PLUGIN]["remove deleted objects label"],
2692
2385
  actionAlt: translations_default[0]["en-US"][SPACE_PLUGIN]["remove deleted objects alt"],
2693
2386
  // TODO(wittjosiah): Use OS namespace.
@@ -2729,7 +2422,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2729
2422
  }
2730
2423
  return {
2731
2424
  data: {
2732
- id: fullyQualifiedId4(object),
2425
+ id: object.id,
2733
2426
  object,
2734
2427
  activeParts: {
2735
2428
  main: [
@@ -2782,7 +2475,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2782
2475
  data: {
2783
2476
  activeParts: {
2784
2477
  main: deletionData.wasActive,
2785
- sidebar: deletionData.wasActive
2478
+ sidebar: deletionData.wasActive,
2479
+ complementary: deletionData.wasActive
2786
2480
  }
2787
2481
  }
2788
2482
  });
@@ -2906,7 +2600,6 @@ export {
2906
2600
  EmptyTree,
2907
2601
  FullPresence,
2908
2602
  MenuFooter,
2909
- MessageState,
2910
2603
  MessageType,
2911
2604
  MissingObject,
2912
2605
  PersistenceStatus,
@@ -2918,7 +2611,6 @@ export {
2918
2611
  SPACE_PLUGIN,
2919
2612
  SPACE_PLUGIN_SHORT_ID,
2920
2613
  SPACE_TYPE,
2921
- SaveStatus,
2922
2614
  ShareSpaceButton,
2923
2615
  ShareSpaceButtonImpl,
2924
2616
  SmallPresence,
@@ -2928,9 +2620,6 @@ export {
2928
2620
  SpacePlugin,
2929
2621
  SpacePresence,
2930
2622
  SpaceSettings,
2931
- SyncStatus,
2932
- SyncStatusDetail,
2933
- SyncStatusIndicator,
2934
2623
  ThreadStatus,
2935
2624
  ThreadType,
2936
2625
  cloneObject,
@@ -2945,7 +2634,6 @@ export {
2945
2634
  getNestedObjects,
2946
2635
  getSpaceDisplayName,
2947
2636
  memoizeQuery,
2948
- parseSpaceInitPlugin,
2949
2637
  parseSpacePlugin,
2950
2638
  translations_default as translations
2951
2639
  };