@dxos/plugin-space 0.6.13-main.ed424a1 → 0.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/lib/browser/{chunk-47SVNCZM.mjs → chunk-DTVUOG2C.mjs} +5 -24
  2. package/dist/lib/browser/chunk-DTVUOG2C.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-AVLRQF6L.mjs → chunk-LZEGRS7H.mjs} +1 -1
  4. package/dist/lib/browser/chunk-LZEGRS7H.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +249 -595
  6. package/dist/lib/browser/index.mjs.map +4 -4
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/meta.mjs +1 -1
  9. package/dist/lib/browser/types/index.mjs +3 -7
  10. package/dist/lib/node/{chunk-P4XUXM7Y.cjs → chunk-6CNYF6YU.cjs} +4 -4
  11. package/dist/lib/node/chunk-6CNYF6YU.cjs.map +7 -0
  12. package/dist/lib/node/{chunk-CTYDNFGG.cjs → chunk-CVZPI2P3.cjs} +9 -30
  13. package/dist/lib/node/chunk-CVZPI2P3.cjs.map +7 -0
  14. package/dist/lib/node/index.cjs +470 -813
  15. package/dist/lib/node/index.cjs.map +4 -4
  16. package/dist/lib/node/meta.cjs +5 -5
  17. package/dist/lib/node/meta.cjs.map +1 -1
  18. package/dist/lib/node/meta.json +1 -1
  19. package/dist/lib/node/types/index.cjs +10 -14
  20. package/dist/lib/node/types/index.cjs.map +2 -2
  21. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  22. package/dist/types/src/components/EmptySpace.d.ts +3 -0
  23. package/dist/types/src/components/EmptySpace.d.ts.map +1 -0
  24. package/dist/types/src/components/EmptyTree.d.ts +3 -0
  25. package/dist/types/src/components/EmptyTree.d.ts.map +1 -0
  26. package/dist/types/src/components/MenuFooter.d.ts +1 -1
  27. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  28. package/dist/types/src/components/ShareSpaceButton.stories.d.ts +0 -4
  29. package/dist/types/src/components/ShareSpaceButton.stories.d.ts.map +1 -1
  30. package/dist/types/src/components/SpaceMain/SpaceMain.d.ts.map +1 -1
  31. package/dist/types/src/components/SpacePresence.stories.d.ts +0 -4
  32. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  33. package/dist/types/src/components/SpaceSettings.d.ts.map +1 -1
  34. package/dist/types/src/components/index.d.ts +2 -3
  35. package/dist/types/src/components/index.d.ts.map +1 -1
  36. package/dist/types/src/meta.d.ts.map +1 -1
  37. package/dist/types/src/translations.d.ts +0 -4
  38. package/dist/types/src/translations.d.ts.map +1 -1
  39. package/dist/types/src/types/thread.d.ts +1 -15
  40. package/dist/types/src/types/thread.d.ts.map +1 -1
  41. package/dist/types/src/types/types.d.ts +1 -18
  42. package/dist/types/src/types/types.d.ts.map +1 -1
  43. package/dist/types/src/util.d.ts +6 -3
  44. package/dist/types/src/util.d.ts.map +1 -1
  45. package/package.json +36 -44
  46. package/src/SpacePlugin.tsx +86 -149
  47. package/src/components/EmptySpace.tsx +25 -0
  48. package/src/components/EmptyTree.tsx +25 -0
  49. package/src/components/MenuFooter.tsx +2 -2
  50. package/src/components/SpaceMain/SpaceMain.tsx +22 -1
  51. package/src/components/SpacePresence.tsx +1 -1
  52. package/src/components/SpaceSettings.tsx +3 -32
  53. package/src/components/index.ts +2 -3
  54. package/src/meta.ts +1 -3
  55. package/src/translations.ts +0 -4
  56. package/src/types/collection.ts +1 -1
  57. package/src/types/thread.ts +2 -12
  58. package/src/types/types.ts +1 -25
  59. package/src/util.tsx +55 -20
  60. package/dist/lib/browser/chunk-47SVNCZM.mjs.map +0 -7
  61. package/dist/lib/browser/chunk-AVLRQF6L.mjs.map +0 -7
  62. package/dist/lib/node/chunk-CTYDNFGG.cjs.map +0 -7
  63. package/dist/lib/node/chunk-P4XUXM7Y.cjs.map +0 -7
  64. package/dist/lib/node-esm/chunk-PLPMYTLC.mjs +0 -116
  65. package/dist/lib/node-esm/chunk-PLPMYTLC.mjs.map +0 -7
  66. package/dist/lib/node-esm/chunk-YPQGKWHJ.mjs +0 -37
  67. package/dist/lib/node-esm/chunk-YPQGKWHJ.mjs.map +0 -7
  68. package/dist/lib/node-esm/index.mjs +0 -2987
  69. package/dist/lib/node-esm/index.mjs.map +0 -7
  70. package/dist/lib/node-esm/meta.json +0 -1
  71. package/dist/lib/node-esm/meta.mjs +0 -14
  72. package/dist/lib/node-esm/meta.mjs.map +0 -7
  73. package/dist/lib/node-esm/types/index.mjs +0 -26
  74. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  75. package/dist/types/src/components/FallbackSettings.d.ts +0 -8
  76. package/dist/types/src/components/FallbackSettings.d.ts.map +0 -1
  77. package/dist/types/src/components/SaveStatus.d.ts +0 -3
  78. package/dist/types/src/components/SaveStatus.d.ts.map +0 -1
  79. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +0 -13
  80. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +0 -1
  81. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +0 -117
  82. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +0 -1
  83. package/dist/types/src/components/SyncStatus/index.d.ts +0 -2
  84. package/dist/types/src/components/SyncStatus/index.d.ts.map +0 -1
  85. package/dist/types/src/components/SyncStatus/types.d.ts +0 -14
  86. package/dist/types/src/components/SyncStatus/types.d.ts.map +0 -1
  87. package/src/components/FallbackSettings.tsx +0 -35
  88. package/src/components/SaveStatus.tsx +0 -95
  89. package/src/components/SyncStatus/SyncStatus.stories.tsx +0 -62
  90. package/src/components/SyncStatus/SyncStatus.tsx +0 -188
  91. package/src/components/SyncStatus/index.ts +0 -5
  92. package/src/components/SyncStatus/types.ts +0 -77
@@ -3,38 +3,36 @@ import {
3
3
  SPACE_PLUGIN_SHORT_ID,
4
4
  SpaceAction,
5
5
  meta_default
6
- } from "./chunk-AVLRQF6L.mjs";
6
+ } from "./chunk-LZEGRS7H.mjs";
7
7
  import {
8
8
  ActorSchema,
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-47SVNCZM.mjs";
15
+ ThreadType
16
+ } from "./chunk-DTVUOG2C.mjs";
19
17
 
20
18
  // packages/plugins/plugin-space/src/SpacePlugin.tsx
21
- import { signal } from "@preact/signals-core";
19
+ import { Plus as Plus2, SignIn, CardsThree as CardsThree2, Warning as Warning2 } from "@phosphor-icons/react";
20
+ import { effect, signal } from "@preact/signals-core";
22
21
  import React17 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";
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
- import { scheduledEffect } from "@dxos/echo-signals/core";
27
25
  import { LocalStorageStore } from "@dxos/local-storage";
28
26
  import { log as log2 } from "@dxos/log";
29
27
  import { Migrations as Migrations2 } from "@dxos/migrations";
30
28
  import { parseAttentionPlugin } from "@dxos/plugin-attention";
31
29
  import { parseClientPlugin } from "@dxos/plugin-client";
32
- import { createExtension, memoize as memoize2, toSignal } from "@dxos/plugin-graph";
30
+ import { createExtension, isGraphNode, memoize as memoize2, toSignal } from "@dxos/plugin-graph";
33
31
  import { ObservabilityAction } from "@dxos/plugin-observability/meta";
34
32
  import { PublicKey as PublicKey2 } from "@dxos/react-client";
35
- 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, parseFullyQualifiedId } 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";
36
34
  import { Dialog } from "@dxos/react-ui";
37
- import { ClipboardProvider as ClipboardProvider2, InvitationManager, osTranslations } from "@dxos/shell/react";
35
+ import { InvitationManager, osTranslations, ClipboardProvider as ClipboardProvider2 } from "@dxos/shell/react";
38
36
  import { ComplexMap as ComplexMap2, nonNullable, reduceGroupBy } from "@dxos/util";
39
37
 
40
38
  // packages/plugins/plugin-space/src/components/AwaitingObject.tsx
@@ -160,40 +158,46 @@ var CollectionSection = ({ collection }) => {
160
158
  }, collection.name ?? t("unnamed collection label")));
161
159
  };
162
160
 
163
- // packages/plugins/plugin-space/src/components/FallbackSettings.tsx
161
+ // packages/plugins/plugin-space/src/components/EmptySpace.tsx
164
162
  import React4 from "react";
165
- import { Input, useTranslation as useTranslation4 } from "@dxos/react-ui";
166
- var FallbackSettings = ({ object }) => {
163
+ import { useTranslation as useTranslation4 } from "@dxos/react-ui";
164
+ import { descriptionText as descriptionText2, mx as mx3 } from "@dxos/react-ui-theme";
165
+ var EmptySpace = () => {
167
166
  const { t } = useTranslation4(SPACE_PLUGIN);
168
167
  return /* @__PURE__ */ React4.createElement("div", {
169
- role: "form",
170
- className: "p-3 flex flex-col gap-2"
171
- }, /* @__PURE__ */ React4.createElement("div", {
172
168
  role: "none",
173
- className: "space-b-1"
174
- }, /* @__PURE__ */ React4.createElement(Input.Root, null, /* @__PURE__ */ React4.createElement(Input.Label, null, t("name label")), /* @__PURE__ */ React4.createElement(Input.TextInput, {
175
- placeholder: t("name placeholder"),
176
- value: object.name,
177
- onChange: (event) => {
178
- object.name = event.target.value;
179
- }
180
- }))));
169
+ className: mx3("p-2 mli-2 mbe-2 text-center border border-dashed border-neutral-400/50 rounded-lg", descriptionText2)
170
+ }, t("empty space message"));
181
171
  };
182
172
 
183
- // packages/plugins/plugin-space/src/components/MenuFooter.tsx
184
- import { Planet } from "@phosphor-icons/react";
173
+ // packages/plugins/plugin-space/src/components/EmptyTree.tsx
185
174
  import React5 from "react";
175
+ import { useTranslation as useTranslation5 } from "@dxos/react-ui";
176
+ import { descriptionText as descriptionText3, mx as mx4 } from "@dxos/react-ui-theme";
177
+ var EmptyTree = () => {
178
+ const { t } = useTranslation5(SPACE_PLUGIN);
179
+ return /* @__PURE__ */ React5.createElement("div", {
180
+ role: "none",
181
+ className: mx4("p-2 mli-2 mbe-2 text-center border border-dashed border-neutral-400/50 rounded-lg", descriptionText3)
182
+ }, t("empty tree message"));
183
+ };
184
+
185
+ // packages/plugins/plugin-space/src/components/MenuFooter.tsx
186
+ import { Planet as Planet2 } from "@phosphor-icons/react";
187
+ import React7 from "react";
186
188
  import { getSpace as getSpace2 } from "@dxos/client/echo";
187
189
  import { useClient as useClient2 } from "@dxos/react-client";
188
- import { DropdownMenu, toLocalizedString, useTranslation as useTranslation5 } from "@dxos/react-ui";
190
+ import { DropdownMenu, toLocalizedString, useTranslation as useTranslation6 } from "@dxos/react-ui";
189
191
 
190
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";
191
195
  import { NavigationAction as NavigationAction2 } from "@dxos/app-framework";
192
- import { create, isReactiveObject, getTypename, getSchema, getObjectAnnotation, EXPANDO_TYPENAME } from "@dxos/echo-schema";
196
+ import { create, isReactiveObject, getTypename, getSchema, getEchoObjectAnnotation, EXPANDO_TYPENAME } from "@dxos/echo-schema";
193
197
  import { invariant } from "@dxos/invariant";
194
198
  import { Migrations } from "@dxos/migrations";
195
199
  import { ACTION_TYPE, ACTION_GROUP_TYPE, actionGroupSymbol, getGraph, cleanup, memoize } from "@dxos/plugin-graph";
196
- import { fullyQualifiedId as fullyQualifiedId2, getSpace, isEchoObject, isSpace, SpaceState } from "@dxos/react-client/echo";
200
+ import { SpaceState, fullyQualifiedId as fullyQualifiedId2, getSpace, isEchoObject, isSpace } from "@dxos/react-client/echo";
197
201
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/util.tsx";
198
202
  var SPACES = `${SPACE_PLUGIN}-spaces`;
199
203
  var SPACE_TYPE = "dxos.org/type/Space";
@@ -280,7 +284,8 @@ var constructSpaceNode = ({ space, personal, namesCache, resolve }) => {
280
284
  namesCache
281
285
  }),
282
286
  description: space.state.get() === SpaceState.SPACE_READY && space.properties.description,
283
- icon: "ph--planet--regular",
287
+ icon: (props) => /* @__PURE__ */ React6.createElement(Planet, props),
288
+ iconSymbol: "ph--planet--regular",
284
289
  disabled: space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,
285
290
  testId: "spacePlugin.space"
286
291
  }
@@ -306,7 +311,8 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
306
311
  ns: SPACE_PLUGIN
307
312
  }
308
313
  ],
309
- icon: "ph--plus--regular",
314
+ icon: (props) => /* @__PURE__ */ React6.createElement(Plus, props),
315
+ iconSymbol: "ph--plus--regular",
310
316
  disposition: "toolbar",
311
317
  // TODO(wittjosiah): This is currently a navtree feature. Address this with cmd+k integration.
312
318
  // mainAreaDisposition: 'in-flow',
@@ -340,7 +346,8 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
340
346
  ns: SPACE_PLUGIN
341
347
  }
342
348
  ],
343
- icon: "ph--cards-three--regular",
349
+ icon: (props) => /* @__PURE__ */ React6.createElement(CardsThree, props),
350
+ iconSymbol: "ph--cards-three--regular",
344
351
  testId: "spacePlugin.createCollection"
345
352
  }
346
353
  }
@@ -374,7 +381,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
374
381
  ns: SPACE_PLUGIN
375
382
  }
376
383
  ],
377
- icon: "ph--database--regular",
384
+ icon: (props) => /* @__PURE__ */ React6.createElement(Database, props),
385
+ iconSymbol: "ph--database--regular",
378
386
  disposition: "toolbar",
379
387
  mainAreaDisposition: "in-flow",
380
388
  disabled: migrating || Migrations.running(space)
@@ -405,7 +413,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
405
413
  ns: SPACE_PLUGIN
406
414
  }
407
415
  ],
408
- icon: "ph--users--regular",
416
+ icon: (props) => /* @__PURE__ */ React6.createElement(Users, props),
417
+ iconSymbol: "ph--users--regular",
409
418
  disabled: locked,
410
419
  keyBinding: {
411
420
  macos: "meta+.",
@@ -432,7 +441,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
432
441
  ns: SPACE_PLUGIN
433
442
  }
434
443
  ],
435
- 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"
436
446
  }
437
447
  }, {
438
448
  id: getId(SpaceAction.RENAME),
@@ -454,7 +464,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
454
464
  ns: SPACE_PLUGIN
455
465
  }
456
466
  ],
457
- icon: "ph--pencil-simple-line--regular",
467
+ icon: (props) => /* @__PURE__ */ React6.createElement(PencilSimpleLine, props),
468
+ iconSymbol: "ph--pencil-simple-line--regular",
458
469
  keyBinding: {
459
470
  macos: "shift+F6",
460
471
  windows: "shift+F6"
@@ -483,7 +494,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
483
494
  ns: SPACE_PLUGIN
484
495
  }
485
496
  ],
486
- icon: "ph--x--regular",
497
+ icon: (props) => /* @__PURE__ */ React6.createElement(X, props),
498
+ iconSymbol: "ph--x--regular",
487
499
  mainAreaDisposition: "menu",
488
500
  disabled: personal
489
501
  }
@@ -509,7 +521,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
509
521
  ns: SPACE_PLUGIN
510
522
  }
511
523
  ],
512
- icon: "ph--clock-counter-clockwise--regular",
524
+ icon: (props) => /* @__PURE__ */ React6.createElement(ClockCounterClockwise, props),
525
+ iconSymbol: "ph--clock-counter-clockwise--regular",
513
526
  disposition: "toolbar",
514
527
  mainAreaDisposition: "in-flow"
515
528
  }
@@ -543,7 +556,8 @@ var createObjectNode = ({ object, space, resolve }) => {
543
556
  ns: SPACE_PLUGIN
544
557
  }
545
558
  ],
546
- icon: metadata.icon ?? "ph--placeholder--regular",
559
+ icon: metadata.icon ?? (() => /* @__PURE__ */ React6.createElement(Placeholder, null)),
560
+ iconSymbol: metadata.iconSymbol ?? "ph--placeholder--regular",
547
561
  testId: "spacePlugin.object",
548
562
  persistenceClass: "echo",
549
563
  persistenceKey: space?.id
@@ -568,7 +582,8 @@ var constructObjectActionGroups = ({ object, dispatch }) => {
568
582
  ns: SPACE_PLUGIN
569
583
  }
570
584
  ],
571
- icon: "ph--plus--regular",
585
+ icon: (props) => /* @__PURE__ */ React6.createElement(Plus, props),
586
+ iconSymbol: "ph--plus--regular",
572
587
  disposition: "toolbar",
573
588
  // TODO(wittjosiah): This is currently a navtree feature. Address this with cmd+k integration.
574
589
  // mainAreaDisposition: 'in-flow',
@@ -602,7 +617,8 @@ var constructObjectActionGroups = ({ object, dispatch }) => {
602
617
  ns: SPACE_PLUGIN
603
618
  }
604
619
  ],
605
- icon: "ph--cards-three--regular",
620
+ icon: (props) => /* @__PURE__ */ React6.createElement(CardsThree, props),
621
+ iconSymbol: "ph--cards-three--regular",
606
622
  testId: "spacePlugin.createCollection"
607
623
  }
608
624
  }
@@ -634,7 +650,8 @@ var constructObjectActions = ({ node, dispatch }) => {
634
650
  ns: SPACE_PLUGIN
635
651
  }
636
652
  ],
637
- icon: "ph--pencil-simple-line--regular",
653
+ icon: (props) => /* @__PURE__ */ React6.createElement(PencilSimpleLine, props),
654
+ iconSymbol: "ph--pencil-simple-line--regular",
638
655
  // TODO(wittjosiah): Doesn't work.
639
656
  // keyBinding: 'shift+F6',
640
657
  testId: "spacePlugin.renameObject"
@@ -665,7 +682,8 @@ var constructObjectActions = ({ node, dispatch }) => {
665
682
  ns: SPACE_PLUGIN
666
683
  }
667
684
  ],
668
- icon: "ph--trash--regular",
685
+ icon: (props) => /* @__PURE__ */ React6.createElement(Trash, props),
686
+ iconSymbol: "ph--trash--regular",
669
687
  keyBinding: object instanceof CollectionType ? void 0 : "shift+meta+Backspace",
670
688
  testId: "spacePlugin.deleteObject"
671
689
  }
@@ -684,7 +702,8 @@ var constructObjectActions = ({ node, dispatch }) => {
684
702
  ns: SPACE_PLUGIN
685
703
  }
686
704
  ],
687
- icon: "ph--link--regular",
705
+ icon: (props) => /* @__PURE__ */ React6.createElement(Link, props),
706
+ iconSymbol: "ph--link--regular",
688
707
  testId: "spacePlugin.copyLink"
689
708
  }
690
709
  }
@@ -720,12 +739,12 @@ var getNestedObjects = async (object, resolve) => {
720
739
  };
721
740
  var cloneObject = async (object, resolve) => {
722
741
  const schema = getSchema(object);
723
- const typename = schema ? getObjectAnnotation(schema)?.typename ?? EXPANDO_TYPENAME : EXPANDO_TYPENAME;
742
+ const typename = schema ? getEchoObjectAnnotation(schema)?.typename ?? EXPANDO_TYPENAME : EXPANDO_TYPENAME;
724
743
  const metadata = resolve(typename);
725
744
  const serializer = metadata.serializer;
726
745
  invariant(serializer, `No serializer for type: ${typename}`, {
727
746
  F: __dxlog_file,
728
- L: 604,
747
+ L: 639,
729
748
  S: void 0,
730
749
  A: [
731
750
  "serializer",
@@ -743,31 +762,31 @@ var cloneObject = async (object, resolve) => {
743
762
 
744
763
  // packages/plugins/plugin-space/src/components/MenuFooter.tsx
745
764
  var MenuFooter = ({ object }) => {
746
- const { t } = useTranslation5(SPACE_PLUGIN);
765
+ const { t } = useTranslation6(SPACE_PLUGIN);
747
766
  const client = useClient2();
748
767
  const space = getSpace2(object);
749
768
  const spaceName = space ? getSpaceDisplayName(space, {
750
769
  personal: client.spaces.default === space
751
770
  }) : "";
752
- return space ? /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Separator, null), /* @__PURE__ */ React5.createElement(DropdownMenu.GroupLabel, null, t("menu footer label")), /* @__PURE__ */ React5.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", {
753
772
  className: "pis-2 mbe-2 text-xs grid grid-cols-[max-content_1fr] gap-2"
754
- }, /* @__PURE__ */ React5.createElement("dt", {
773
+ }, /* @__PURE__ */ React7.createElement("dt", {
755
774
  className: "uppercase text-[.75em] tracking-wide font-medium mbs-px self-start"
756
- }, t("location label")), /* @__PURE__ */ React5.createElement("dd", {
775
+ }, t("location label")), /* @__PURE__ */ React7.createElement("dd", {
757
776
  className: "line-clamp-3"
758
- }, /* @__PURE__ */ React5.createElement(Planet, {
777
+ }, /* @__PURE__ */ React7.createElement(Planet2, {
759
778
  className: "inline-block mie-1"
760
779
  }), toLocalizedString(spaceName, t)))) : null;
761
780
  };
762
781
 
763
782
  // packages/plugins/plugin-space/src/components/MissingObject.tsx
764
- import React6, { useEffect as useEffect2, useState as useState2 } from "react";
783
+ import React8, { useEffect as useEffect2, useState as useState2 } from "react";
765
784
  import { parseIntentPlugin as parseIntentPlugin2, useResolvePlugin as useResolvePlugin2 } from "@dxos/app-framework";
766
- import { Status, useTranslation as useTranslation6 } from "@dxos/react-ui";
767
- import { baseSurface as baseSurface2, descriptionText as descriptionText2, mx as mx3 } from "@dxos/react-ui-theme";
785
+ import { Status, useTranslation as useTranslation7 } from "@dxos/react-ui";
786
+ import { baseSurface as baseSurface2, descriptionText as descriptionText4, mx as mx5 } from "@dxos/react-ui-theme";
768
787
  var WAIT_FOR_OBJECT_TIMEOUT2 = 1e3;
769
788
  var MissingObject = ({ id }) => {
770
- const { t } = useTranslation6(SPACE_PLUGIN);
789
+ const { t } = useTranslation7(SPACE_PLUGIN);
771
790
  const [waiting, setWaiting] = useState2(false);
772
791
  const intentPlugin = useResolvePlugin2(parseIntentPlugin2);
773
792
  useEffect2(() => {
@@ -789,13 +808,13 @@ var MissingObject = ({ id }) => {
789
808
  intentPlugin,
790
809
  id
791
810
  ]);
792
- return /* @__PURE__ */ React6.createElement("div", {
811
+ return /* @__PURE__ */ React8.createElement("div", {
793
812
  role: "none",
794
- className: mx3(baseSurface2, "min-bs-screen is-full flex items-center justify-center p-8")
795
- }, waiting ? /* @__PURE__ */ React6.createElement("p", {
813
+ className: mx5(baseSurface2, "min-bs-screen is-full flex items-center justify-center p-8")
814
+ }, waiting ? /* @__PURE__ */ React8.createElement("p", {
796
815
  role: "alert",
797
- className: mx3(descriptionText2, "border border-dashed border-neutral-400/50 rounded-lg flex items-center justify-center p-8 font-normal text-lg")
798
- }, t("missing object message")) : /* @__PURE__ */ React6.createElement(Status, {
816
+ className: mx5(descriptionText4, "border border-dashed border-neutral-400/50 rounded-lg flex items-center justify-center p-8 font-normal text-lg")
817
+ }, t("missing object message")) : /* @__PURE__ */ React8.createElement(Status, {
799
818
  indeterminate: true,
800
819
  "aria-label": "Initializing"
801
820
  }));
@@ -803,10 +822,10 @@ var MissingObject = ({ id }) => {
803
822
 
804
823
  // packages/plugins/plugin-space/src/components/PersistenceStatus.tsx
805
824
  import { ArrowsCounterClockwise, CheckCircle as CheckCircle2, Warning } from "@phosphor-icons/react";
806
- import React7, { useEffect as useEffect3, useState as useState3 } from "react";
825
+ import React9, { useEffect as useEffect3, useState as useState3 } from "react";
807
826
  import { debounce } from "@dxos/async";
808
- import { Tooltip, useTranslation as useTranslation7 } from "@dxos/react-ui";
809
- import { getSize as getSize2, mx as mx4, staticPlaceholderText, warningText } from "@dxos/react-ui-theme";
827
+ import { Tooltip, useTranslation as useTranslation8 } from "@dxos/react-ui";
828
+ import { getSize as getSize2, mx as mx6, staticPlaceholderText, warningText } from "@dxos/react-ui-theme";
810
829
  var Status2;
811
830
  (function(Status3) {
812
831
  Status3[Status3["PERSISTED_LOCALLY"] = 0] = "PERSISTED_LOCALLY";
@@ -814,7 +833,7 @@ var Status2;
814
833
  Status3[Status3["ERROR"] = 2] = "ERROR";
815
834
  })(Status2 || (Status2 = {}));
816
835
  var PersistenceStatus = ({ db }) => {
817
- const { t } = useTranslation7(SPACE_PLUGIN);
836
+ const { t } = useTranslation8(SPACE_PLUGIN);
818
837
  const [displayMessage, setDisplayMessage] = useState3(false);
819
838
  const [status, naturalSetStatus] = useState3(0);
820
839
  const [prevStatus, setPrevStatus] = useState3(0);
@@ -831,45 +850,45 @@ var PersistenceStatus = ({ db }) => {
831
850
  ]);
832
851
  switch (status) {
833
852
  case 2:
834
- return /* @__PURE__ */ React7.createElement("div", {
853
+ return /* @__PURE__ */ React9.createElement("div", {
835
854
  className: "flex items-center"
836
- }, /* @__PURE__ */ React7.createElement(Warning, {
837
- className: mx4(getSize2(4), "me-1")
838
- }), /* @__PURE__ */ React7.createElement("span", {
839
- className: mx4("text-sm", warningText)
855
+ }, /* @__PURE__ */ React9.createElement(Warning, {
856
+ className: mx6(getSize2(4), "me-1")
857
+ }), /* @__PURE__ */ React9.createElement("span", {
858
+ className: mx6("text-sm", warningText)
840
859
  }, t("persistence error label")));
841
860
  case 1:
842
- return /* @__PURE__ */ React7.createElement("div", {
861
+ return /* @__PURE__ */ React9.createElement("div", {
843
862
  className: "flex items-center"
844
- }, /* @__PURE__ */ React7.createElement(ArrowsCounterClockwise, {
845
- className: mx4(getSize2(4), "me-1")
846
- }), /* @__PURE__ */ React7.createElement("span", {
847
- className: mx4("text-sm", staticPlaceholderText)
863
+ }, /* @__PURE__ */ React9.createElement(ArrowsCounterClockwise, {
864
+ className: mx6(getSize2(4), "me-1")
865
+ }), /* @__PURE__ */ React9.createElement("span", {
866
+ className: mx6("text-sm", staticPlaceholderText)
848
867
  }, t("persistence pending label")));
849
868
  case 0:
850
869
  default:
851
- return /* @__PURE__ */ React7.createElement(Tooltip.Root, {
870
+ return /* @__PURE__ */ React9.createElement(Tooltip.Root, {
852
871
  delayDuration: 400
853
- }, /* @__PURE__ */ React7.createElement(Tooltip.Trigger, {
872
+ }, /* @__PURE__ */ React9.createElement(Tooltip.Trigger, {
854
873
  role: "status",
855
874
  className: "flex items-center"
856
- }, /* @__PURE__ */ React7.createElement(CheckCircle2, {
857
- className: mx4(getSize2(4), "me-1")
858
- }), displayMessage && /* @__PURE__ */ React7.createElement("span", {
859
- className: mx4("text-sm", staticPlaceholderText)
860
- }, t("persisted locally label"))), /* @__PURE__ */ React7.createElement(Tooltip.Portal, null, /* @__PURE__ */ React7.createElement(Tooltip.Content, {
875
+ }, /* @__PURE__ */ React9.createElement(CheckCircle2, {
876
+ className: mx6(getSize2(4), "me-1")
877
+ }), displayMessage && /* @__PURE__ */ React9.createElement("span", {
878
+ className: mx6("text-sm", staticPlaceholderText)
879
+ }, t("persisted locally label"))), /* @__PURE__ */ React9.createElement(Tooltip.Portal, null, /* @__PURE__ */ React9.createElement(Tooltip.Content, {
861
880
  classNames: "z-10"
862
- }, t("persisted locally message"), /* @__PURE__ */ React7.createElement(Tooltip.Arrow, null))));
881
+ }, t("persisted locally message"), /* @__PURE__ */ React9.createElement(Tooltip.Arrow, null))));
863
882
  }
864
883
  };
865
884
 
866
885
  // packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx
867
- import React8, { useCallback, useRef, useState as useState4 } from "react";
886
+ import React10, { useCallback, useRef, useState as useState4 } from "react";
868
887
  import { log } from "@dxos/log";
869
- import { Button as Button2, Input as Input2, Popover, useTranslation as useTranslation8 } from "@dxos/react-ui";
888
+ import { Button as Button2, Input, Popover, useTranslation as useTranslation9 } from "@dxos/react-ui";
870
889
  var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
871
890
  var PopoverRenameObject = ({ object: obj }) => {
872
- const { t } = useTranslation8(SPACE_PLUGIN);
891
+ const { t } = useTranslation9(SPACE_PLUGIN);
873
892
  const doneButton = useRef(null);
874
893
  const object = obj;
875
894
  const [name, setName] = useState4(object.name || object.title || "");
@@ -894,23 +913,23 @@ var PopoverRenameObject = ({ object: obj }) => {
894
913
  object,
895
914
  name
896
915
  ]);
897
- return /* @__PURE__ */ React8.createElement("div", {
916
+ return /* @__PURE__ */ React10.createElement("div", {
898
917
  role: "none",
899
918
  className: "p-1 flex gap-2"
900
- }, /* @__PURE__ */ React8.createElement("div", {
919
+ }, /* @__PURE__ */ React10.createElement("div", {
901
920
  role: "none",
902
921
  className: "flex-1"
903
- }, /* @__PURE__ */ React8.createElement(Input2.Root, null, /* @__PURE__ */ React8.createElement(Input2.Label, {
922
+ }, /* @__PURE__ */ React10.createElement(Input.Root, null, /* @__PURE__ */ React10.createElement(Input.Label, {
904
923
  srOnly: true
905
- }, t("object name label")), /* @__PURE__ */ React8.createElement(Input2.TextInput, {
924
+ }, t("object name label")), /* @__PURE__ */ React10.createElement(Input.TextInput, {
906
925
  placeholder: t("object title placeholder"),
907
926
  value: name,
908
927
  "data-testid": "spacePlugin.renameObject.input",
909
928
  onChange: ({ target: { value } }) => setName(value),
910
929
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
911
- }))), /* @__PURE__ */ React8.createElement(Popover.Close, {
930
+ }))), /* @__PURE__ */ React10.createElement(Popover.Close, {
912
931
  asChild: true
913
- }, /* @__PURE__ */ React8.createElement(Button2, {
932
+ }, /* @__PURE__ */ React10.createElement(Button2, {
914
933
  ref: doneButton,
915
934
  classNames: "self-stretch",
916
935
  onClick: handleDone
@@ -920,10 +939,10 @@ var PopoverRenameObject = ({ object: obj }) => {
920
939
  };
921
940
 
922
941
  // packages/plugins/plugin-space/src/components/PopoverRenameSpace.tsx
923
- import React9, { useCallback as useCallback2, useRef as useRef2, useState as useState5 } from "react";
924
- import { Button as Button3, Input as Input3, Popover as Popover2, useTranslation as useTranslation9 } from "@dxos/react-ui";
942
+ import React11, { useCallback as useCallback2, useRef as useRef2, useState as useState5 } from "react";
943
+ import { Button as Button3, Input as Input2, Popover as Popover2, useTranslation as useTranslation10 } from "@dxos/react-ui";
925
944
  var PopoverRenameSpace = ({ space }) => {
926
- const { t } = useTranslation9(SPACE_PLUGIN);
945
+ const { t } = useTranslation10(SPACE_PLUGIN);
927
946
  const doneButton = useRef2(null);
928
947
  const [name, setName] = useState5(space.properties.name ?? "");
929
948
  const handleDone = useCallback2(() => {
@@ -932,24 +951,24 @@ var PopoverRenameSpace = ({ space }) => {
932
951
  space,
933
952
  name
934
953
  ]);
935
- return /* @__PURE__ */ React9.createElement("div", {
954
+ return /* @__PURE__ */ React11.createElement("div", {
936
955
  role: "none",
937
956
  className: "p-1 flex gap-2"
938
- }, /* @__PURE__ */ React9.createElement("div", {
957
+ }, /* @__PURE__ */ React11.createElement("div", {
939
958
  role: "none",
940
959
  className: "flex-1"
941
- }, /* @__PURE__ */ React9.createElement(Input3.Root, null, /* @__PURE__ */ React9.createElement(Input3.Label, {
960
+ }, /* @__PURE__ */ React11.createElement(Input2.Root, null, /* @__PURE__ */ React11.createElement(Input2.Label, {
942
961
  srOnly: true
943
- }, t("space name label")), /* @__PURE__ */ React9.createElement(Input3.TextInput, {
962
+ }, t("space name label")), /* @__PURE__ */ React11.createElement(Input2.TextInput, {
944
963
  defaultValue: space.properties.name ?? "",
945
964
  placeholder: t("unnamed space label"),
946
965
  onChange: ({ target: { value } }) => setName(value),
947
966
  // TODO(wittjosiah): Ideally this should access the popover context to close the popover.
948
967
  // Currently this is not possible because Radix does not expose the popover context.
949
968
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
950
- }))), /* @__PURE__ */ React9.createElement(Popover2.Close, {
969
+ }))), /* @__PURE__ */ React11.createElement(Popover2.Close, {
951
970
  asChild: true
952
- }, /* @__PURE__ */ React9.createElement(Button3, {
971
+ }, /* @__PURE__ */ React11.createElement(Button3, {
953
972
  ref: doneButton,
954
973
  classNames: "self-stretch",
955
974
  onClick: handleDone
@@ -959,12 +978,12 @@ var PopoverRenameSpace = ({ space }) => {
959
978
  };
960
979
 
961
980
  // packages/plugins/plugin-space/src/components/ShareSpaceButton.tsx
962
- import React10 from "react";
981
+ import React12 from "react";
963
982
  import { useIntentDispatcher } from "@dxos/app-framework";
964
- import { Button as Button4, useTranslation as useTranslation10 } from "@dxos/react-ui";
983
+ import { Button as Button4, useTranslation as useTranslation11 } from "@dxos/react-ui";
965
984
  var ShareSpaceButton = ({ spaceId }) => {
966
985
  const dispatch = useIntentDispatcher();
967
- return /* @__PURE__ */ React10.createElement(ShareSpaceButtonImpl, {
986
+ return /* @__PURE__ */ React12.createElement(ShareSpaceButtonImpl, {
968
987
  onClick: () => dispatch({
969
988
  action: SpaceAction.SHARE,
970
989
  data: {
@@ -974,8 +993,8 @@ var ShareSpaceButton = ({ spaceId }) => {
974
993
  });
975
994
  };
976
995
  var ShareSpaceButtonImpl = ({ onClick }) => {
977
- const { t } = useTranslation10(SPACE_PLUGIN);
978
- return /* @__PURE__ */ React10.createElement(Button4, {
996
+ const { t } = useTranslation11(SPACE_PLUGIN);
997
+ return /* @__PURE__ */ React12.createElement(Button4, {
979
998
  "data-testid": "spacePlugin.shareSpaceButton",
980
999
  onClick,
981
1000
  classNames: "mli-1"
@@ -984,30 +1003,30 @@ var ShareSpaceButtonImpl = ({ onClick }) => {
984
1003
 
985
1004
  // packages/plugins/plugin-space/src/components/SpaceMain/SpaceMain.tsx
986
1005
  import { Command } from "@phosphor-icons/react";
987
- import React12 from "react";
1006
+ import React14 from "react";
988
1007
  import { Surface } from "@dxos/app-framework";
989
1008
  import { SpaceState as SpaceState2 } from "@dxos/react-client/echo";
990
- import { Main, useTranslation as useTranslation12 } from "@dxos/react-ui";
991
- import { getSize as getSize4, mx as mx6, topbarBlockPaddingStart } from "@dxos/react-ui-theme";
1009
+ import { Button as Button6, Main, useTranslation as useTranslation13, toLocalizedString as toLocalizedString2 } from "@dxos/react-ui";
1010
+ import { getSize as getSize4, mx as mx8, topbarBlockPaddingStart } from "@dxos/react-ui-theme";
992
1011
  import { ClipboardProvider } from "@dxos/shell/react";
993
1012
 
994
1013
  // packages/plugins/plugin-space/src/components/SpaceMain/SpaceMembersSection.tsx
995
1014
  import { CaretDown, Check, UserPlus, UsersThree } from "@phosphor-icons/react";
996
- import React11, { useCallback as useCallback3, useState as useState6 } from "react";
1015
+ import React13, { useCallback as useCallback3, useState as useState6 } from "react";
997
1016
  import { LayoutAction, useIntent } from "@dxos/app-framework";
998
1017
  import { useMembers, SpaceMember, useSpaceInvitations } from "@dxos/react-client/echo";
999
1018
  import { InvitationEncoder } from "@dxos/react-client/invitations";
1000
1019
  import { Invitation } from "@dxos/react-client/invitations";
1001
- import { Button as Button5, ButtonGroup, DropdownMenu as DropdownMenu2, List, useTranslation as useTranslation11 } from "@dxos/react-ui";
1002
- import { descriptionText as descriptionText3, getSize as getSize3, mx as mx5 } from "@dxos/react-ui-theme";
1020
+ import { Button as Button5, ButtonGroup, DropdownMenu as DropdownMenu2, List, useTranslation as useTranslation12 } from "@dxos/react-ui";
1021
+ import { descriptionText as descriptionText5, getSize as getSize3, mx as mx7 } from "@dxos/react-ui-theme";
1003
1022
  import { InvitationListItem, IdentityListItem } from "@dxos/shell/react";
1004
1023
  var activeActionKeyStorageKey = "dxos:react-shell/space-manager/active-action";
1005
1024
  var Presence = SpaceMember.PresenceState;
1006
1025
  var handleCreateInvitationUrl = (invitationCode) => `${origin}?spaceInvitationCode=${invitationCode}`;
1007
1026
  var SpaceMemberList = ({ members }) => {
1008
- return members.length > 0 ? /* @__PURE__ */ React11.createElement(List, {
1027
+ return members.length > 0 ? /* @__PURE__ */ React13.createElement(List, {
1009
1028
  classNames: "col-start-2 col-end-5 gap-y-1 grid grid-cols-subgrid items-center"
1010
- }, members.map((member) => /* @__PURE__ */ React11.createElement(IdentityListItem, {
1029
+ }, members.map((member) => /* @__PURE__ */ React13.createElement(IdentityListItem, {
1011
1030
  classNames: "contents",
1012
1031
  key: member.identity.identityKey.toHex(),
1013
1032
  identity: member.identity,
@@ -1015,7 +1034,7 @@ var SpaceMemberList = ({ members }) => {
1015
1034
  }))) : null;
1016
1035
  };
1017
1036
  var SpaceMembersSection = ({ space }) => {
1018
- const { t } = useTranslation11(SPACE_PLUGIN);
1037
+ const { t } = useTranslation12(SPACE_PLUGIN);
1019
1038
  const invitations = useSpaceInvitations(space.key);
1020
1039
  const { dispatch } = useIntent();
1021
1040
  const handleCloseDialog = () => dispatch({
@@ -1093,103 +1112,103 @@ var SpaceMembersSection = ({ space }) => {
1093
1112
  [Presence.ONLINE]: [],
1094
1113
  [Presence.OFFLINE]: []
1095
1114
  });
1096
- return /* @__PURE__ */ React11.createElement("section", {
1115
+ return /* @__PURE__ */ React13.createElement("section", {
1097
1116
  className: "mbe-4 col-span-3 grid gap-y-2 grid-cols-subgrid auto-rows-min"
1098
- }, /* @__PURE__ */ React11.createElement("h2", {
1117
+ }, /* @__PURE__ */ React13.createElement("h2", {
1099
1118
  className: "contents"
1100
- }, /* @__PURE__ */ React11.createElement(UsersThree, {
1119
+ }, /* @__PURE__ */ React13.createElement(UsersThree, {
1101
1120
  weight: "duotone",
1102
- className: mx5(getSize3(5), "place-self-center")
1103
- }), /* @__PURE__ */ React11.createElement("span", {
1121
+ className: mx7(getSize3(5), "place-self-center")
1122
+ }), /* @__PURE__ */ React13.createElement("span", {
1104
1123
  className: "text-lg col-span-2"
1105
- }, t("space members label"))), /* @__PURE__ */ React11.createElement("h3", {
1124
+ }, t("space members label"))), /* @__PURE__ */ React13.createElement("h3", {
1106
1125
  className: "col-start-2 col-span-3 text-sm italic text-description"
1107
- }, t("invitations heading")), invitations.length > 0 && /* @__PURE__ */ React11.createElement(List, {
1126
+ }, t("invitations heading")), invitations.length > 0 && /* @__PURE__ */ React13.createElement(List, {
1108
1127
  classNames: "col-start-2 col-span-2 gap-y-2 grid grid-cols-[var(--rail-size)_1fr_var(--rail-action)_var(--rail-action)]"
1109
- }, invitations.map((invitation) => /* @__PURE__ */ React11.createElement(InvitationListItem, {
1128
+ }, invitations.map((invitation) => /* @__PURE__ */ React13.createElement(InvitationListItem, {
1110
1129
  reverseEffects: true,
1111
1130
  classNames: "pis-0 pie-0 gap-0 col-span-4 grid grid-cols-subgrid",
1112
1131
  key: invitation.get().invitationId,
1113
1132
  invitation,
1114
1133
  send: handleInvitationSelect,
1115
1134
  createInvitationUrl: handleCreateInvitationUrl
1116
- }))), /* @__PURE__ */ React11.createElement(ButtonGroup, {
1135
+ }))), /* @__PURE__ */ React13.createElement(ButtonGroup, {
1117
1136
  classNames: "col-start-2 col-end-4 grid grid-cols-[1fr_var(--rail-action)] place-self-grow gap-px"
1118
- }, /* @__PURE__ */ React11.createElement(Button5, {
1137
+ }, /* @__PURE__ */ React13.createElement(Button5, {
1119
1138
  classNames: "gap-2",
1120
1139
  onClick: activeAction.onClick
1121
- }, /* @__PURE__ */ React11.createElement(activeAction.icon, {
1140
+ }, /* @__PURE__ */ React13.createElement(activeAction.icon, {
1122
1141
  className: getSize3(5)
1123
- }), /* @__PURE__ */ React11.createElement("span", null, t(activeAction.label, {
1142
+ }), /* @__PURE__ */ React13.createElement("span", null, t(activeAction.label, {
1124
1143
  ns: "os"
1125
- }))), /* @__PURE__ */ React11.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React11.createElement(DropdownMenu2.Trigger, {
1144
+ }))), /* @__PURE__ */ React13.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React13.createElement(DropdownMenu2.Trigger, {
1126
1145
  asChild: true
1127
- }, /* @__PURE__ */ React11.createElement(Button5, {
1146
+ }, /* @__PURE__ */ React13.createElement(Button5, {
1128
1147
  classNames: "pli-0"
1129
- }, /* @__PURE__ */ React11.createElement(CaretDown, {
1148
+ }, /* @__PURE__ */ React13.createElement(CaretDown, {
1130
1149
  className: getSize3(4)
1131
- }))), /* @__PURE__ */ React11.createElement(DropdownMenu2.Content, null, /* @__PURE__ */ React11.createElement(DropdownMenu2.Viewport, null, Object.entries(inviteActions).map(([id, action]) => {
1132
- return /* @__PURE__ */ React11.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, {
1133
1152
  key: id,
1134
1153
  "aria-labelledby": `${id}__label`,
1135
1154
  "aria-describedby": `${id}__description`,
1136
1155
  checked: activeActionKey === id,
1137
1156
  onCheckedChange: (checked) => checked && setActiveActionKey(id),
1138
1157
  classNames: "gap-2"
1139
- }, action.icon && /* @__PURE__ */ React11.createElement(action.icon, {
1158
+ }, action.icon && /* @__PURE__ */ React13.createElement(action.icon, {
1140
1159
  className: getSize3(5)
1141
- }), /* @__PURE__ */ React11.createElement("div", {
1160
+ }), /* @__PURE__ */ React13.createElement("div", {
1142
1161
  role: "none",
1143
1162
  className: "flex-1 min-is-0 space-b-1"
1144
- }, /* @__PURE__ */ React11.createElement("p", {
1163
+ }, /* @__PURE__ */ React13.createElement("p", {
1145
1164
  id: `${id}__label`
1146
1165
  }, t(action.label, {
1147
1166
  ns: "os"
1148
- })), action.description && /* @__PURE__ */ React11.createElement("p", {
1167
+ })), action.description && /* @__PURE__ */ React13.createElement("p", {
1149
1168
  id: `${id}__description`,
1150
- className: descriptionText3
1169
+ className: descriptionText5
1151
1170
  }, t(action.description, {
1152
1171
  ns: "os"
1153
- }))), /* @__PURE__ */ React11.createElement(DropdownMenu2.ItemIndicator, {
1172
+ }))), /* @__PURE__ */ React13.createElement(DropdownMenu2.ItemIndicator, {
1154
1173
  asChild: true
1155
- }, /* @__PURE__ */ React11.createElement(Check, {
1174
+ }, /* @__PURE__ */ React13.createElement(Check, {
1156
1175
  className: getSize3(4)
1157
1176
  })));
1158
- })), /* @__PURE__ */ React11.createElement(DropdownMenu2.Arrow, null)))), members[Presence.ONLINE].length + members[Presence.OFFLINE].length < 1 ? /* @__PURE__ */ React11.createElement("p", {
1159
- className: mx5(descriptionText3, "text-center is-full mlb-2")
1177
+ })), /* @__PURE__ */ React13.createElement(DropdownMenu2.Arrow, null)))), members[Presence.ONLINE].length + members[Presence.OFFLINE].length < 1 ? /* @__PURE__ */ React13.createElement("p", {
1178
+ className: mx7(descriptionText5, "text-center is-full mlb-2")
1160
1179
  }, t("empty space members message", {
1161
1180
  ns: "os"
1162
- })) : /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement("h3", {
1181
+ })) : /* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement("h3", {
1163
1182
  className: "col-start-2 col-end-5 text-sm italic text-description"
1164
1183
  }, t("active space members heading", {
1165
1184
  count: members[Presence.ONLINE].length
1166
- })), /* @__PURE__ */ React11.createElement(SpaceMemberList, {
1185
+ })), /* @__PURE__ */ React13.createElement(SpaceMemberList, {
1167
1186
  members: members[Presence.ONLINE]
1168
- }), /* @__PURE__ */ React11.createElement("h3", {
1187
+ }), /* @__PURE__ */ React13.createElement("h3", {
1169
1188
  className: "col-start-2 col-end-5 text-sm italic text-description"
1170
1189
  }, t("inactive space members heading", {
1171
1190
  count: members[Presence.OFFLINE].length
1172
- })), /* @__PURE__ */ React11.createElement(SpaceMemberList, {
1191
+ })), /* @__PURE__ */ React13.createElement(SpaceMemberList, {
1173
1192
  members: members[Presence.OFFLINE]
1174
1193
  })));
1175
1194
  };
1176
1195
 
1177
1196
  // packages/plugins/plugin-space/src/components/SpaceMain/SpaceMain.tsx
1178
1197
  var KeyShortcuts = () => {
1179
- const { t } = useTranslation12(SPACE_PLUGIN);
1180
- return /* @__PURE__ */ React12.createElement("section", {
1198
+ const { t } = useTranslation13(SPACE_PLUGIN);
1199
+ return /* @__PURE__ */ React14.createElement("section", {
1181
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"
1182
- }, /* @__PURE__ */ React12.createElement("h2", {
1201
+ }, /* @__PURE__ */ React14.createElement("h2", {
1183
1202
  className: "contents"
1184
- }, /* @__PURE__ */ React12.createElement(Command, {
1203
+ }, /* @__PURE__ */ React14.createElement(Command, {
1185
1204
  weight: "duotone",
1186
- className: mx6(getSize4(5), "place-self-center")
1187
- }), /* @__PURE__ */ React12.createElement("span", {
1205
+ className: mx8(getSize4(5), "place-self-center")
1206
+ }), /* @__PURE__ */ React14.createElement("span", {
1188
1207
  className: "text-lg col-span-2 md:col-span-1"
1189
- }, t("keyshortcuts label"))), /* @__PURE__ */ React12.createElement("div", {
1208
+ }, t("keyshortcuts label"))), /* @__PURE__ */ React14.createElement("div", {
1190
1209
  role: "none",
1191
1210
  className: "col-start-2 col-end-4 md:col-end-5 pie-2"
1192
- }, /* @__PURE__ */ React12.createElement(Surface, {
1211
+ }, /* @__PURE__ */ React14.createElement(Surface, {
1193
1212
  role: "keyshortcuts"
1194
1213
  })));
1195
1214
  };
@@ -1198,7 +1217,7 @@ var SpaceMain = ({ space, role }) => {
1198
1217
  const state = space.state.get();
1199
1218
  const ready = state === SpaceState2.SPACE_READY;
1200
1219
  const Root = role === "main" ? Main.Content : "div";
1201
- return /* @__PURE__ */ React12.createElement(ClipboardProvider, null, /* @__PURE__ */ React12.createElement(Root, {
1220
+ return /* @__PURE__ */ React14.createElement(ClipboardProvider, null, /* @__PURE__ */ React14.createElement(Root, {
1202
1221
  ...role === "main" ? {
1203
1222
  classNames: [
1204
1223
  topbarBlockPaddingStart,
@@ -1207,23 +1226,23 @@ var SpaceMain = ({ space, role }) => {
1207
1226
  ]
1208
1227
  } : {
1209
1228
  role: "none",
1210
- className: mx6(topbarBlockPaddingStart, "row-span-2", spaceMainLayout)
1229
+ className: mx8(topbarBlockPaddingStart, "row-span-2", spaceMainLayout)
1211
1230
  },
1212
1231
  "data-testid": `spacePlugin.${role}`,
1213
1232
  "data-isready": ready ? "true" : "false"
1214
- }, ready && /* @__PURE__ */ React12.createElement(SpaceMembersSection, {
1233
+ }, ready && /* @__PURE__ */ React14.createElement(SpaceMembersSection, {
1215
1234
  space
1216
- }), /* @__PURE__ */ React12.createElement(KeyShortcuts, null)));
1235
+ }), /* @__PURE__ */ React14.createElement(KeyShortcuts, null)));
1217
1236
  };
1218
1237
 
1219
1238
  // packages/plugins/plugin-space/src/components/SpacePresence.tsx
1220
- import React13, { 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";
1221
1240
  import { usePlugin } from "@dxos/app-framework";
1222
1241
  import { generateName } from "@dxos/display-name";
1223
1242
  import { PublicKey, useClient as useClient3 } from "@dxos/react-client";
1224
1243
  import { getSpace as getSpace3, useMembers as useMembers2, fullyQualifiedId as fullyQualifiedId3 } from "@dxos/react-client/echo";
1225
1244
  import { useIdentity } from "@dxos/react-client/halo";
1226
- import { Avatar, AvatarGroup, AvatarGroupItem, Tooltip as Tooltip2, useDensityContext, useTranslation as useTranslation13, List as List2, ListItem, useDefaultValue } from "@dxos/react-ui";
1245
+ import { Avatar, AvatarGroup, AvatarGroupItem, Tooltip as Tooltip2, useDensityContext, useTranslation as useTranslation14, List as List2, ListItem, useDefaultValue } from "@dxos/react-ui";
1227
1246
  import { AttentionGlyph } from "@dxos/react-ui-attention";
1228
1247
  import { ComplexMap, keyToFallback } from "@dxos/util";
1229
1248
  var REFRESH_INTERVAL = 5e3;
@@ -1261,50 +1280,50 @@ var SpacePresence = ({ object, spaceKey }) => {
1261
1280
  lastSeen
1262
1281
  };
1263
1282
  }).toSorted((a, b) => a.lastSeen - b.lastSeen);
1264
- return density === "fine" ? /* @__PURE__ */ React13.createElement(SmallPresence, {
1283
+ return density === "fine" ? /* @__PURE__ */ React15.createElement(SmallPresence, {
1265
1284
  count: membersForObject.length
1266
- }) : /* @__PURE__ */ React13.createElement(FullPresence, {
1285
+ }) : /* @__PURE__ */ React15.createElement(FullPresence, {
1267
1286
  members: membersForObject
1268
1287
  });
1269
1288
  };
1270
1289
  var FullPresence = (props) => {
1271
1290
  const { size = 9, onMemberClick } = props;
1272
- const members = useDefaultValue(props.members, () => []);
1291
+ const members = useDefaultValue(props.members, []);
1273
1292
  if (members.length === 0) {
1274
1293
  return null;
1275
1294
  }
1276
- return /* @__PURE__ */ React13.createElement(AvatarGroup.Root, {
1295
+ return /* @__PURE__ */ React15.createElement(AvatarGroup.Root, {
1277
1296
  size,
1278
1297
  classNames: "mbs-2 mie-4",
1279
1298
  "data-testid": "spacePlugin.presence"
1280
- }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React13.createElement(Tooltip2.Root, {
1299
+ }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React15.createElement(Tooltip2.Root, {
1281
1300
  key: member.identity.identityKey.toHex()
1282
- }, /* @__PURE__ */ React13.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React13.createElement(PrensenceAvatar, {
1301
+ }, /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React15.createElement(PrensenceAvatar, {
1283
1302
  identity: member.identity,
1284
1303
  group: true,
1285
1304
  match: member.currentlyAttended,
1286
1305
  index: members.length - i,
1287
1306
  onClick: () => onMemberClick?.(member)
1288
- })), /* @__PURE__ */ React13.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React13.createElement(Tooltip2.Content, {
1307
+ })), /* @__PURE__ */ React15.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React15.createElement(Tooltip2.Content, {
1289
1308
  side: "bottom"
1290
- }, /* @__PURE__ */ React13.createElement("span", null, getName(member.identity)), /* @__PURE__ */ React13.createElement(Tooltip2.Arrow, null))))), members.length > 3 && /* @__PURE__ */ React13.createElement(Tooltip2.Root, null, /* @__PURE__ */ React13.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React13.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, {
1291
1310
  status: "inactive"
1292
- }, /* @__PURE__ */ React13.createElement(Avatar.Frame, {
1311
+ }, /* @__PURE__ */ React15.createElement(Avatar.Frame, {
1293
1312
  style: {
1294
1313
  zIndex: members.length - 4
1295
1314
  }
1296
- }, /* @__PURE__ */ React13.createElement(Avatar.Fallback, {
1315
+ }, /* @__PURE__ */ React15.createElement(Avatar.Fallback, {
1297
1316
  text: `+${members.length - 3}`
1298
- })))), /* @__PURE__ */ React13.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React13.createElement(Tooltip2.Content, {
1317
+ })))), /* @__PURE__ */ React15.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React15.createElement(Tooltip2.Content, {
1299
1318
  side: "bottom"
1300
- }, /* @__PURE__ */ React13.createElement(Tooltip2.Arrow, null), /* @__PURE__ */ React13.createElement(List2, {
1319
+ }, /* @__PURE__ */ React15.createElement(Tooltip2.Arrow, null), /* @__PURE__ */ React15.createElement(List2, {
1301
1320
  classNames: "max-h-56 overflow-y-auto"
1302
- }, members.map((member) => /* @__PURE__ */ React13.createElement(ListItem.Root, {
1321
+ }, members.map((member) => /* @__PURE__ */ React15.createElement(ListItem.Root, {
1303
1322
  key: member.identity.identityKey.toHex(),
1304
1323
  classNames: "flex gap-2 items-center cursor-pointer mbe-2",
1305
1324
  onClick: () => onMemberClick?.(member),
1306
1325
  "data-testid": "identity-list-item"
1307
- }, /* @__PURE__ */ React13.createElement(PrensenceAvatar, {
1326
+ }, /* @__PURE__ */ React15.createElement(PrensenceAvatar, {
1308
1327
  identity: member.identity,
1309
1328
  showName: true,
1310
1329
  match: member.currentlyAttended
@@ -1314,10 +1333,10 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
1314
1333
  const Root = group ? AvatarGroupItem.Root : Avatar.Root;
1315
1334
  const status = match ? "current" : "active";
1316
1335
  const fallbackValue = keyToFallback(identity.identityKey);
1317
- return /* @__PURE__ */ React13.createElement(Root, {
1336
+ return /* @__PURE__ */ React15.createElement(Root, {
1318
1337
  status,
1319
1338
  hue: identity.profile?.data?.hue || fallbackValue.hue
1320
- }, /* @__PURE__ */ React13.createElement(Avatar.Frame, {
1339
+ }, /* @__PURE__ */ React15.createElement(Avatar.Frame, {
1321
1340
  "data-testid": "spacePlugin.presence.member",
1322
1341
  "data-status": status,
1323
1342
  ...index ? {
@@ -1326,9 +1345,9 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
1326
1345
  }
1327
1346
  } : {},
1328
1347
  onClick: () => onClick?.()
1329
- }, /* @__PURE__ */ React13.createElement(Avatar.Fallback, {
1348
+ }, /* @__PURE__ */ React15.createElement(Avatar.Fallback, {
1330
1349
  text: identity.profile?.data?.emoji || fallbackValue.emoji
1331
- })), showName && /* @__PURE__ */ React13.createElement(Avatar.Label, {
1350
+ })), showName && /* @__PURE__ */ React15.createElement(Avatar.Label, {
1332
1351
  classNames: "text-sm truncate pli-2"
1333
1352
  }, getName(identity)));
1334
1353
  };
@@ -1339,37 +1358,36 @@ var SmallPresenceLive = ({ viewers }) => {
1339
1358
  return () => clearInterval(interval);
1340
1359
  }, []);
1341
1360
  const activeViewers = viewers ? Array.from(viewers.values()).filter(({ lastSeen }) => moment - lastSeen < ACTIVITY_DURATION) : [];
1342
- return /* @__PURE__ */ React13.createElement(SmallPresence, {
1361
+ return /* @__PURE__ */ React15.createElement(SmallPresence, {
1343
1362
  count: activeViewers.length
1344
1363
  });
1345
1364
  };
1346
1365
  var SmallPresence = ({ count }) => {
1347
- const { t } = useTranslation13(SPACE_PLUGIN);
1348
- return /* @__PURE__ */ React13.createElement(Tooltip2.Root, null, /* @__PURE__ */ React13.createElement(Tooltip2.Trigger, {
1366
+ const { t } = useTranslation14(SPACE_PLUGIN);
1367
+ return /* @__PURE__ */ React15.createElement(Tooltip2.Root, null, /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, {
1349
1368
  asChild: true
1350
- }, /* @__PURE__ */ React13.createElement(AttentionGlyph, {
1369
+ }, /* @__PURE__ */ React15.createElement(AttentionGlyph, {
1351
1370
  presence: count > 1 ? "many" : count === 1 ? "one" : "none",
1352
1371
  classNames: "self-center mie-1"
1353
- })), /* @__PURE__ */ React13.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React13.createElement(Tooltip2.Content, {
1372
+ })), /* @__PURE__ */ React15.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React15.createElement(Tooltip2.Content, {
1354
1373
  side: "bottom",
1355
1374
  classNames: "z-[70]"
1356
- }, /* @__PURE__ */ React13.createElement("span", null, t("presence label", {
1375
+ }, /* @__PURE__ */ React15.createElement("span", null, t("presence label", {
1357
1376
  count
1358
- })), /* @__PURE__ */ React13.createElement(Tooltip2.Arrow, null))));
1377
+ })), /* @__PURE__ */ React15.createElement(Tooltip2.Arrow, null))));
1359
1378
  };
1360
1379
 
1361
1380
  // packages/plugins/plugin-space/src/components/SpaceSettings.tsx
1362
- import React14 from "react";
1363
- import { useIntentDispatcher as useIntentDispatcher2, useResolvePlugins } from "@dxos/app-framework";
1381
+ import React16 from "react";
1382
+ import { useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
1364
1383
  import { SettingsValue } from "@dxos/plugin-settings";
1365
- import { Input as Input4, Select, toLocalizedString as toLocalizedString2, useTranslation as useTranslation14 } from "@dxos/react-ui";
1384
+ import { Input as Input3, useTranslation as useTranslation15 } from "@dxos/react-ui";
1366
1385
  var SpaceSettings = ({ settings }) => {
1367
- const { t } = useTranslation14(SPACE_PLUGIN);
1386
+ const { t } = useTranslation15(SPACE_PLUGIN);
1368
1387
  const dispatch = useIntentDispatcher2();
1369
- const plugins = useResolvePlugins(parseSpaceInitPlugin);
1370
- return /* @__PURE__ */ React14.createElement(React14.Fragment, null, /* @__PURE__ */ React14.createElement(SettingsValue, {
1388
+ return /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(SettingsValue, {
1371
1389
  label: t("show hidden spaces label")
1372
- }, /* @__PURE__ */ React14.createElement(Input4.Switch, {
1390
+ }, /* @__PURE__ */ React16.createElement(Input3.Switch, {
1373
1391
  checked: settings.showHidden,
1374
1392
  onCheckedChange: (checked) => dispatch({
1375
1393
  plugin: SPACE_PLUGIN,
@@ -1378,307 +1396,7 @@ var SpaceSettings = ({ settings }) => {
1378
1396
  state: !!checked
1379
1397
  }
1380
1398
  })
1381
- })), /* @__PURE__ */ React14.createElement(SettingsValue, {
1382
- label: t("default on space create label")
1383
- }, /* @__PURE__ */ React14.createElement(Select.Root, {
1384
- value: settings.onSpaceCreate,
1385
- onValueChange: (value) => {
1386
- settings.onSpaceCreate = value;
1387
- }
1388
- }, /* @__PURE__ */ React14.createElement(Select.TriggerButton, null), /* @__PURE__ */ React14.createElement(Select.Portal, null, /* @__PURE__ */ React14.createElement(Select.Content, null, /* @__PURE__ */ React14.createElement(Select.Viewport, null, plugins.map(({ provides: { space: { onSpaceCreate } } }) => /* @__PURE__ */ React14.createElement(Select.Option, {
1389
- key: onSpaceCreate.action,
1390
- value: onSpaceCreate.action
1391
- }, toLocalizedString2(onSpaceCreate.label, t)))))))));
1392
- };
1393
-
1394
- // packages/plugins/plugin-space/src/components/SaveStatus.tsx
1395
- import React15, { useEffect as useEffect5, useState as useState8 } from "react";
1396
- import { Context } from "@dxos/context";
1397
- import { StatusBar } from "@dxos/plugin-status-bar";
1398
- import { useClient as useClient4 } from "@dxos/react-client";
1399
- import { Icon, useTranslation as useTranslation15 } from "@dxos/react-ui";
1400
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SaveStatus.tsx";
1401
- var SaveStatus = () => {
1402
- const { t } = useTranslation15(SPACE_PLUGIN);
1403
- const client = useClient4();
1404
- const [state, setState] = useState8("saved");
1405
- useEffect5(() => {
1406
- return createClientSaveTracker(client, (state2) => {
1407
- setState(state2);
1408
- });
1409
- }, []);
1410
- return /* @__PURE__ */ React15.createElement(StatusBar.Item, {
1411
- title: state === "saving" ? t("saving label") : t("saved label")
1412
- }, /* @__PURE__ */ React15.createElement(Icon, {
1413
- icon: state === "saving" ? "ph--arrows-clockwise--regular" : "ph--check-circle--regular",
1414
- size: 4
1415
- }));
1416
- };
1417
- var createClientSaveTracker = (client, cb) => {
1418
- const unsubscribeCallbacks = {};
1419
- const state = {};
1420
- const install = (spaces) => {
1421
- for (const space of spaces) {
1422
- if (state[space.id]) {
1423
- continue;
1424
- }
1425
- state[space.id] = "saved";
1426
- unsubscribeCallbacks[space.id] = createSpaceSaveTracker(space, (s) => {
1427
- state[space.id] = s;
1428
- cb(Object.values(state).some((s2) => s2 === "saving") ? "saving" : "saved");
1429
- });
1430
- }
1431
- };
1432
- client.spaces.subscribe((spaces) => {
1433
- install(spaces);
1434
- });
1435
- install(client.spaces.get());
1436
- return () => {
1437
- for (const unsubscribe of Object.values(unsubscribeCallbacks)) {
1438
- unsubscribe();
1439
- }
1440
- };
1441
- };
1442
- var createSpaceSaveTracker = (space, cb) => {
1443
- const ctx = new Context(void 0, {
1444
- F: __dxlog_file3,
1445
- L: 64
1446
- });
1447
- void space.waitUntilReady().then(() => {
1448
- if (ctx.disposed) {
1449
- return;
1450
- }
1451
- let hasUnsavedChanges = false;
1452
- let lastFlushPromise;
1453
- space.crud.saveStateChanged.on(ctx, ({ unsavedDocuments }) => {
1454
- hasUnsavedChanges = unsavedDocuments.length > 0;
1455
- });
1456
- space.crud.saveStateChanged.debounce(500).on(ctx, () => {
1457
- if (hasUnsavedChanges) {
1458
- lastFlushPromise = void 0;
1459
- cb("saving");
1460
- } else {
1461
- const flushPromise = space.crud.flush();
1462
- lastFlushPromise = flushPromise;
1463
- void flushPromise.then(() => {
1464
- if (lastFlushPromise === flushPromise) {
1465
- cb("saved");
1466
- }
1467
- });
1468
- }
1469
- });
1470
- });
1471
- return () => {
1472
- void ctx.dispose();
1473
- };
1474
- };
1475
-
1476
- // packages/plugins/plugin-space/src/components/SyncStatus/SyncStatus.tsx
1477
- import React16, { useEffect as useEffect7, useState as useState10 } from "react";
1478
- import { StatusBar as StatusBar2 } from "@dxos/plugin-status-bar";
1479
- import { Icon as Icon2, Popover as Popover3, useTranslation as useTranslation16 } from "@dxos/react-ui";
1480
- import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
1481
- import { mx as mx7 } from "@dxos/react-ui-theme";
1482
-
1483
- // packages/plugins/plugin-space/src/components/SyncStatus/types.ts
1484
- import { useEffect as useEffect6, useState as useState9 } from "react";
1485
- import { Context as Context2 } from "@dxos/context";
1486
- import { EdgeService } from "@dxos/protocols";
1487
- import { useClient as useClient5 } from "@dxos/react-client";
1488
- var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/types.ts";
1489
- var createEmptyEdgeSyncState = () => ({
1490
- missingOnLocal: 0,
1491
- missingOnRemote: 0,
1492
- localDocumentCount: 0,
1493
- remoteDocumentCount: 0,
1494
- differentDocuments: 0
1495
- });
1496
- var getSyncSummary = (syncMap) => {
1497
- return Object.entries(syncMap).reduce((summary, [_spaceId, peerState]) => {
1498
- summary.missingOnLocal += peerState.missingOnLocal;
1499
- summary.missingOnRemote += peerState.missingOnRemote;
1500
- summary.localDocumentCount += peerState.localDocumentCount;
1501
- summary.remoteDocumentCount += peerState.remoteDocumentCount;
1502
- summary.differentDocuments += peerState.differentDocuments;
1503
- return summary;
1504
- }, createEmptyEdgeSyncState());
1505
- };
1506
- var isEdgePeerId = (peerId, spaceId) => peerId.startsWith(`${EdgeService.AUTOMERGE_REPLICATOR}:${spaceId}`);
1507
- var useSyncState = () => {
1508
- const client = useClient5();
1509
- const [spaceState, setSpaceState] = useState9({});
1510
- useEffect6(() => {
1511
- const ctx = new Context2(void 0, {
1512
- F: __dxlog_file4,
1513
- L: 48
1514
- });
1515
- const createSubscriptions = (spaces) => {
1516
- for (const space of spaces) {
1517
- if (spaceState[space.id]) {
1518
- continue;
1519
- }
1520
- ctx.onDispose(space.crud.subscribeToSyncState(ctx, ({ peers = [] }) => {
1521
- const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));
1522
- if (syncState) {
1523
- setSpaceState((spaceState2) => ({
1524
- ...spaceState2,
1525
- [space.id]: syncState
1526
- }));
1527
- }
1528
- }));
1529
- }
1530
- };
1531
- createSubscriptions(client.spaces.get());
1532
- client.spaces.subscribe((spaces) => {
1533
- createSubscriptions(spaces);
1534
- });
1535
- return () => {
1536
- void ctx.dispose();
1537
- };
1538
- }, [
1539
- client
1540
- ]);
1541
- return spaceState;
1542
- };
1543
-
1544
- // packages/plugins/plugin-space/src/components/SyncStatus/SyncStatus.tsx
1545
- var SYNC_STALLED_TIMEOUT = 5e3;
1546
- var styles = {
1547
- barBg: "bg-neutral-50 dark:bg-green-900 text-black",
1548
- barFg: "bg-neutral-100 bg-green-500",
1549
- barHover: "dark:hover:bg-green-500"
1550
- };
1551
- var SyncStatus = () => {
1552
- const state = useSyncState();
1553
- return /* @__PURE__ */ React16.createElement(SyncStatusIndicator, {
1554
- state
1555
- });
1556
- };
1557
- var SyncStatusIndicator = ({ state }) => {
1558
- const summary = getSyncSummary(state);
1559
- const offline = false;
1560
- const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
1561
- const needsToDownload = summary.differentDocuments > 0 || summary.missingOnLocal > 0;
1562
- const [classNames, setClassNames] = useState10();
1563
- useEffect7(() => {
1564
- setClassNames(void 0);
1565
- if (!needsToUpload && !needsToDownload) {
1566
- return;
1567
- }
1568
- const t = setTimeout(() => {
1569
- setClassNames("text-orange-500");
1570
- }, SYNC_STALLED_TIMEOUT);
1571
- return () => clearTimeout(t);
1572
- }, [
1573
- needsToUpload,
1574
- needsToDownload
1575
- ]);
1576
- return /* @__PURE__ */ React16.createElement(StatusBar2.Item, null, /* @__PURE__ */ React16.createElement(Popover3.Root, null, /* @__PURE__ */ React16.createElement(Popover3.Trigger, null, /* @__PURE__ */ React16.createElement(Icon2, {
1577
- icon: offline ? "ph--cloud-x--regular" : needsToUpload ? "ph--cloud-arrow-up--regular" : needsToDownload ? "ph--cloud-arrow-down--regular" : "ph--cloud-check--regular",
1578
- size: 4,
1579
- classNames
1580
- })), /* @__PURE__ */ React16.createElement(Popover3.Content, null, /* @__PURE__ */ React16.createElement(SyncStatusDetail, {
1581
- state,
1582
- summary,
1583
- debug: false
1584
- }))));
1585
- };
1586
- var SyncStatusDetail = ({ classNames, state, summary, debug }) => {
1587
- const { t } = useTranslation16(SPACE_PLUGIN);
1588
- const entries = Object.entries(state).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
1589
- return /* @__PURE__ */ React16.createElement("div", {
1590
- className: mx7("flex flex-col text-xs min-w-[16rem]", classNames)
1591
- }, /* @__PURE__ */ React16.createElement("h1", {
1592
- className: "p-2"
1593
- }, t("sync status title")), /* @__PURE__ */ React16.createElement("div", {
1594
- className: "flex flex-col gap-[2px] my-[2px]"
1595
- }, entries.map(([spaceId, state2]) => /* @__PURE__ */ React16.createElement(SpaceRow, {
1596
- key: spaceId,
1597
- spaceId,
1598
- state: state2
1599
- }))), debug && /* @__PURE__ */ React16.createElement(SyntaxHighlighter, {
1600
- language: "json"
1601
- }, JSON.stringify(summary, null, 2)));
1602
- };
1603
- var useActive = (count) => {
1604
- const [current, setCurrent] = useState10(count);
1605
- const [active, setActive] = useState10(false);
1606
- useEffect7(() => {
1607
- let t;
1608
- if (count !== current) {
1609
- setActive(true);
1610
- setCurrent(count);
1611
- t && clearTimeout(t);
1612
- t = setTimeout(() => {
1613
- setActive(false);
1614
- }, SYNC_STALLED_TIMEOUT);
1615
- }
1616
- return () => {
1617
- setActive(false);
1618
- clearTimeout(t);
1619
- };
1620
- }, [
1621
- count,
1622
- current
1623
- ]);
1624
- return active;
1625
- };
1626
- var SpaceRow = ({ spaceId, state: { localDocumentCount, remoteDocumentCount, missingOnLocal, missingOnRemote } }) => {
1627
- const downActive = useActive(localDocumentCount);
1628
- const upActive = useActive(remoteDocumentCount);
1629
- return /* @__PURE__ */ React16.createElement("div", {
1630
- className: mx7("flex items-center mx-[2px] gap-[2px] cursor-pointer", styles.barHover),
1631
- title: spaceId,
1632
- onClick: () => {
1633
- void navigator.clipboard.writeText(spaceId);
1634
- }
1635
- }, /* @__PURE__ */ React16.createElement(Icon2, {
1636
- icon: "ph--arrow-fat-line-left--regular",
1637
- size: 3,
1638
- classNames: mx7(downActive && "animate-[pulse_1s_infinite]")
1639
- }), /* @__PURE__ */ React16.createElement(Candle, {
1640
- up: {
1641
- count: remoteDocumentCount,
1642
- total: remoteDocumentCount + missingOnRemote
1643
- },
1644
- down: {
1645
- count: localDocumentCount,
1646
- total: localDocumentCount + missingOnLocal
1647
- },
1648
- title: spaceId
1649
- }), /* @__PURE__ */ React16.createElement(Icon2, {
1650
- icon: "ph--arrow-fat-line-right--regular",
1651
- size: 3,
1652
- classNames: mx7(upActive && "animate-[pulse_1s_step-start_infinite]")
1653
- }));
1654
- };
1655
- var Candle = ({ classNames, up, down }) => {
1656
- return /* @__PURE__ */ React16.createElement("div", {
1657
- className: mx7("grid grid-cols-[1fr_2rem_1fr] w-full h-3", classNames)
1658
- }, /* @__PURE__ */ React16.createElement(Bar, {
1659
- classNames: "justify-end",
1660
- ...up
1661
- }), /* @__PURE__ */ React16.createElement("div", {
1662
- className: "relative"
1663
- }, /* @__PURE__ */ React16.createElement("div", {
1664
- className: mx7("absolute inset-0 flex items-center justify-center text-xs", styles.barBg)
1665
- }, up.total)), /* @__PURE__ */ React16.createElement(Bar, down));
1666
- };
1667
- var Bar = ({ classNames, count, total }) => {
1668
- let p = count / total * 100;
1669
- if (count < total) {
1670
- p = Math.min(p, 95);
1671
- }
1672
- return /* @__PURE__ */ React16.createElement("div", {
1673
- className: mx7("relative flex w-full", styles.barBg, classNames)
1674
- }, /* @__PURE__ */ React16.createElement("div", {
1675
- className: mx7("shrink-0", styles.barFg),
1676
- style: {
1677
- width: `${p}%`
1678
- }
1679
- }), count !== total && /* @__PURE__ */ React16.createElement("div", {
1680
- className: "absolute top-0 bottom-0 flex items-center mx-0.5 text-black text-xs"
1681
- }, count));
1399
+ })));
1682
1400
  };
1683
1401
 
1684
1402
  // packages/plugins/plugin-space/src/translations.ts
@@ -1760,27 +1478,21 @@ var translations_default = [
1760
1478
  "space limit close label": "Close",
1761
1479
  "remove deleted objects label": "Cleanup",
1762
1480
  "remove deleted objects alt": "Permanently remove deleted objects to free up space.",
1763
- "copy link label": "Copy link",
1764
- "default on space create label": "On space create",
1765
- "sync status title": "Sync status",
1766
- "name label": "Name",
1767
- "name placeholder": "Name"
1481
+ "copy link label": "Copy link"
1768
1482
  }
1769
1483
  }
1770
1484
  }
1771
1485
  ];
1772
1486
 
1773
1487
  // packages/plugins/plugin-space/src/SpacePlugin.tsx
1774
- 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";
1775
1489
  var ACTIVE_NODE_BROADCAST_INTERVAL = 3e4;
1776
1490
  var OBJECT_ID_LENGTH = 60;
1777
1491
  var SPACE_MAX_OBJECTS = 500;
1778
1492
  var DIRECTORY_TYPE = "text/directory";
1779
1493
  var parseSpacePlugin = (plugin) => Array.isArray(plugin?.provides.space?.enabled) ? plugin : void 0;
1780
1494
  var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1781
- const settings = new LocalStorageStore(SPACE_PLUGIN, {
1782
- onSpaceCreate: "dxos.org/plugin/markdown/action/create"
1783
- });
1495
+ const settings = new LocalStorageStore(SPACE_PLUGIN);
1784
1496
  const state = new LocalStorageStore(SPACE_PLUGIN, {
1785
1497
  awaiting: void 0,
1786
1498
  spaceNames: {},
@@ -1820,21 +1532,17 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1820
1532
  await defaultSpace.internal.migrate();
1821
1533
  }
1822
1534
  spaces.filter((space) => space.state.get() === SpaceState3.SPACE_READY).forEach((space) => {
1823
- subscriptions.add(scheduledEffect(() => ({
1824
- name: space.properties.name
1825
- }), ({ name }) => state.values.spaceNames[space.id] = name));
1535
+ subscriptions.add(effect(() => {
1536
+ state.values.spaceNames[space.id] = space.properties.name;
1537
+ }));
1826
1538
  });
1827
1539
  }).unsubscribe);
1828
- subscriptions.add(scheduledEffect(() => ({
1829
- ids: openIds(location.active),
1830
- removed: location.closed ? [
1831
- location.closed
1832
- ].flat() : []
1833
- }), ({ ids, removed }) => {
1540
+ subscriptions.add(effect(() => {
1834
1541
  const send = () => {
1835
1542
  const spaces = client.spaces.get();
1836
1543
  const identity = client.halo.identity.get();
1837
1544
  if (identity && location.active) {
1545
+ const ids = openIds(location.active);
1838
1546
  const idsBySpace = reduceGroupBy(ids, (id) => {
1839
1547
  const [spaceId] = id.split(":");
1840
1548
  return spaceId;
@@ -1849,6 +1557,9 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1849
1557
  if (!space) {
1850
1558
  continue;
1851
1559
  }
1560
+ const removed = location.closed ? [
1561
+ location.closed
1562
+ ].flat() : [];
1852
1563
  void space.postMessage("viewing", {
1853
1564
  identityKey: identity.identityKey.toHex(),
1854
1565
  attended: attention.attended ? [
@@ -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: 229,
1575
+ F: __dxlog_file3,
1576
+ L: 222,
1866
1577
  S: void 0,
1867
1578
  C: (f, a) => f(...a)
1868
1579
  });
@@ -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,
@@ -2005,8 +1717,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2005
1717
  case "main":
2006
1718
  return isSpace2(primary) && primary.state.get() === SpaceState3.SPACE_READY ? /* @__PURE__ */ React17.createElement(Surface2, {
2007
1719
  data: {
2008
- active: primary.properties[CollectionType.typename],
2009
- id: primary.id
1720
+ active: primary.properties[CollectionType.typename]
2010
1721
  },
2011
1722
  role,
2012
1723
  ...rest
@@ -2018,10 +1729,16 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2018
1729
  } : typeof primary === "string" && primary.length === OBJECT_ID_LENGTH ? /* @__PURE__ */ React17.createElement(MissingObject, {
2019
1730
  id: primary
2020
1731
  }) : null;
2021
- case "complementary--settings":
2022
- return isEchoObject2(data.subject) ? /* @__PURE__ */ React17.createElement(FallbackSettings, {
2023
- object: data.subject
2024
- }) : null;
1732
+ // TODO(burdon): Add role name syntax to minimal plugin docs.
1733
+ case "tree--empty":
1734
+ switch (true) {
1735
+ case data.plugin === SPACE_PLUGIN:
1736
+ return /* @__PURE__ */ React17.createElement(EmptyTree, null);
1737
+ case (isGraphNode(data.activeNode) && isSpace2(data.activeNode.data)):
1738
+ return /* @__PURE__ */ React17.createElement(EmptySpace, null);
1739
+ default:
1740
+ return null;
1741
+ }
2025
1742
  case "dialog":
2026
1743
  if (data.component === "dxos.org/plugin/space/InvitationManagerDialog") {
2027
1744
  return /* @__PURE__ */ React17.createElement(Dialog.Content, null, /* @__PURE__ */ React17.createElement(ClipboardProvider2, null, /* @__PURE__ */ React17.createElement(InvitationManager, {
@@ -2043,7 +1760,6 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2043
1760
  });
2044
1761
  }
2045
1762
  return null;
2046
- // TODO(burdon): Add role name syntax to minimal plugin docs.
2047
1763
  case "presence--glyph": {
2048
1764
  return isReactiveObject2(data.object) ? /* @__PURE__ */ React17.createElement(SmallPresenceLive, {
2049
1765
  viewers: state.values.viewersByObject[fullyQualifiedId4(data.object)]
@@ -2085,9 +1801,6 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2085
1801
  object: data.object
2086
1802
  });
2087
1803
  }
2088
- case "status": {
2089
- return /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(SyncStatus, null), /* @__PURE__ */ React17.createElement(SaveStatus, null));
2090
- }
2091
1804
  default:
2092
1805
  return null;
2093
1806
  }
@@ -2147,8 +1860,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2147
1860
  spacesOrder.order = nextOrder.map(({ id }) => id);
2148
1861
  } else {
2149
1862
  log2.warn("spaces order object not found", void 0, {
2150
- F: __dxlog_file5,
2151
- L: 526,
1863
+ F: __dxlog_file3,
1864
+ L: 514,
2152
1865
  S: void 0,
2153
1866
  C: (f, a) => f(...a)
2154
1867
  });
@@ -2184,7 +1897,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2184
1897
  ns: SPACE_PLUGIN
2185
1898
  }
2186
1899
  ],
2187
- icon: "ph--plus--regular",
1900
+ icon: (props) => /* @__PURE__ */ React17.createElement(Plus2, props),
1901
+ iconSymbol: "ph--plus--regular",
2188
1902
  disposition: "toolbar",
2189
1903
  testId: "spacePlugin.createSpace"
2190
1904
  }
@@ -2209,7 +1923,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2209
1923
  ns: SPACE_PLUGIN
2210
1924
  }
2211
1925
  ],
2212
- icon: "ph--sign-in--regular",
1926
+ icon: (props) => /* @__PURE__ */ React17.createElement(SignIn, props),
1927
+ iconSymbol: "ph--sign-in--regular",
2213
1928
  testId: "spacePlugin.joinSpace"
2214
1929
  }
2215
1930
  }
@@ -2337,45 +2052,6 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2337
2052
  resolve
2338
2053
  })).filter(nonNullable);
2339
2054
  }
2340
- }),
2341
- // Create nodes for object settings.
2342
- createExtension({
2343
- id: `${SPACE_PLUGIN}/settings-for-subject`,
2344
- resolver: ({ id }) => {
2345
- if (!id.endsWith("~settings")) {
2346
- return;
2347
- }
2348
- const [subjectId] = id.split("~");
2349
- const [spaceId, objectId] = parseFullyQualifiedId(subjectId);
2350
- const space = client.spaces.get().find((space2) => space2.id === spaceId);
2351
- const object = toSignal((onChange) => {
2352
- const timeout = setTimeout(async () => {
2353
- await space?.db.loadObjectById(objectId);
2354
- onChange();
2355
- });
2356
- return () => clearTimeout(timeout);
2357
- }, () => space?.db.getObjectById(objectId), subjectId);
2358
- if (!object || !subjectId) {
2359
- return;
2360
- }
2361
- const meta = resolve(getTypename2(object) ?? "");
2362
- const label = meta.label?.(object) || object.name || meta.placeholder || [
2363
- "unnamed object settings label",
2364
- {
2365
- ns: SPACE_PLUGIN
2366
- }
2367
- ];
2368
- return {
2369
- id,
2370
- type: "orphan-settings-for-subject",
2371
- data: null,
2372
- properties: {
2373
- icon: "ph--gear--regular",
2374
- label,
2375
- object
2376
- }
2377
- };
2378
- }
2379
2055
  })
2380
2056
  ];
2381
2057
  },
@@ -2483,25 +2159,6 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2483
2159
  }
2484
2160
  },
2485
2161
  intents: [
2486
- ...settings.values.onSpaceCreate ? [
2487
- [
2488
- {
2489
- action: settings.values.onSpaceCreate,
2490
- data: {
2491
- space
2492
- }
2493
- },
2494
- {
2495
- action: SpaceAction.ADD_OBJECT,
2496
- data: {
2497
- target: space
2498
- }
2499
- },
2500
- {
2501
- action: NavigationAction3.EXPOSE
2502
- }
2503
- ]
2504
- ] : [],
2505
2162
  [
2506
2163
  {
2507
2164
  action: ObservabilityAction.SEND_EVENT,
@@ -2722,7 +2379,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2722
2379
  title: translations_default[0]["en-US"][SPACE_PLUGIN]["space limit label"],
2723
2380
  description: translations_default[0]["en-US"][SPACE_PLUGIN]["space limit description"],
2724
2381
  duration: 5e3,
2725
- icon: "ph--warning--regular",
2382
+ icon: (props) => /* @__PURE__ */ React17.createElement(Warning2, props),
2383
+ iconSymbol: "ph--warning--regular",
2726
2384
  actionLabel: translations_default[0]["en-US"][SPACE_PLUGIN]["remove deleted objects label"],
2727
2385
  actionAlt: translations_default[0]["en-US"][SPACE_PLUGIN]["remove deleted objects alt"],
2728
2386
  // TODO(wittjosiah): Use OS namespace.
@@ -2764,7 +2422,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2764
2422
  }
2765
2423
  return {
2766
2424
  data: {
2767
- id: fullyQualifiedId4(object),
2425
+ id: object.id,
2768
2426
  object,
2769
2427
  activeParts: {
2770
2428
  main: [
@@ -2817,7 +2475,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2817
2475
  data: {
2818
2476
  activeParts: {
2819
2477
  main: deletionData.wasActive,
2820
- sidebar: deletionData.wasActive
2478
+ sidebar: deletionData.wasActive,
2479
+ complementary: deletionData.wasActive
2821
2480
  }
2822
2481
  }
2823
2482
  });
@@ -2937,10 +2596,10 @@ export {
2937
2596
  CollectionSection,
2938
2597
  CollectionType,
2939
2598
  ContactType,
2940
- FallbackSettings,
2599
+ EmptySpace,
2600
+ EmptyTree,
2941
2601
  FullPresence,
2942
2602
  MenuFooter,
2943
- MessageState,
2944
2603
  MessageType,
2945
2604
  MissingObject,
2946
2605
  PersistenceStatus,
@@ -2952,7 +2611,6 @@ export {
2952
2611
  SPACE_PLUGIN,
2953
2612
  SPACE_PLUGIN_SHORT_ID,
2954
2613
  SPACE_TYPE,
2955
- SaveStatus,
2956
2614
  ShareSpaceButton,
2957
2615
  ShareSpaceButtonImpl,
2958
2616
  SmallPresence,
@@ -2962,9 +2620,6 @@ export {
2962
2620
  SpacePlugin,
2963
2621
  SpacePresence,
2964
2622
  SpaceSettings,
2965
- SyncStatus,
2966
- SyncStatusDetail,
2967
- SyncStatusIndicator,
2968
2623
  ThreadStatus,
2969
2624
  ThreadType,
2970
2625
  cloneObject,
@@ -2979,7 +2634,6 @@ export {
2979
2634
  getNestedObjects,
2980
2635
  getSpaceDisplayName,
2981
2636
  memoizeQuery,
2982
- parseSpaceInitPlugin,
2983
2637
  parseSpacePlugin,
2984
2638
  translations_default as translations
2985
2639
  };