@dxos/plugin-space 0.6.14-main.8b352a0 → 0.6.14-staging.54a8bab

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 (58) hide show
  1. package/dist/lib/browser/{chunk-FOI7DAUV.mjs → chunk-WZAM3FNP.mjs} +1 -1
  2. package/dist/lib/browser/{chunk-FOI7DAUV.mjs.map → chunk-WZAM3FNP.mjs.map} +2 -2
  3. package/dist/lib/browser/index.mjs +432 -387
  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 +1 -1
  7. package/dist/lib/node/{chunk-OTDRTHT4.cjs → chunk-HTAM5LQD.cjs} +4 -4
  8. package/dist/lib/node/{chunk-OTDRTHT4.cjs.map → chunk-HTAM5LQD.cjs.map} +2 -2
  9. package/dist/lib/node/index.cjs +474 -433
  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 +11 -11
  13. package/dist/lib/node/types/index.cjs.map +1 -1
  14. package/dist/lib/node-esm/{chunk-FYDGMPSC.mjs → chunk-TRJKV4PK.mjs} +1 -1
  15. package/dist/lib/node-esm/{chunk-FYDGMPSC.mjs.map → chunk-TRJKV4PK.mjs.map} +2 -2
  16. package/dist/lib/node-esm/index.mjs +432 -387
  17. package/dist/lib/node-esm/index.mjs.map +4 -4
  18. package/dist/lib/node-esm/meta.json +1 -1
  19. package/dist/lib/node-esm/types/index.mjs +1 -1
  20. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  21. package/dist/types/src/components/SpaceSettingsPanel.d.ts.map +1 -1
  22. package/dist/types/src/components/SyncStatus/Space.d.ts +8 -0
  23. package/dist/types/src/components/SyncStatus/Space.d.ts.map +1 -0
  24. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +3 -2
  25. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  26. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +5 -20
  27. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  28. package/dist/types/src/components/SyncStatus/save-tracker.d.ts +3 -0
  29. package/dist/types/src/components/SyncStatus/save-tracker.d.ts.map +1 -0
  30. package/dist/types/src/components/SyncStatus/status.d.ts +9 -0
  31. package/dist/types/src/components/SyncStatus/status.d.ts.map +1 -0
  32. package/dist/types/src/components/SyncStatus/{types.d.ts → sync-state.d.ts} +1 -1
  33. package/dist/types/src/components/SyncStatus/sync-state.d.ts.map +1 -0
  34. package/dist/types/src/components/index.d.ts +0 -2
  35. package/dist/types/src/components/index.d.ts.map +1 -1
  36. package/dist/types/src/translations.d.ts +6 -0
  37. package/dist/types/src/translations.d.ts.map +1 -1
  38. package/dist/types/src/types/types.d.ts +2 -1
  39. package/dist/types/src/types/types.d.ts.map +1 -1
  40. package/package.json +34 -33
  41. package/src/SpacePlugin.tsx +55 -30
  42. package/src/components/SpaceSettings.tsx +5 -5
  43. package/src/components/SpaceSettingsPanel.tsx +18 -8
  44. package/src/components/SyncStatus/Space.tsx +109 -0
  45. package/src/components/SyncStatus/SyncStatus.stories.tsx +13 -4
  46. package/src/components/SyncStatus/SyncStatus.tsx +43 -129
  47. package/src/components/{SaveStatus.tsx → SyncStatus/save-tracker.ts} +1 -25
  48. package/src/components/SyncStatus/status.ts +44 -0
  49. package/src/components/index.ts +0 -2
  50. package/src/translations.ts +6 -0
  51. package/src/types/types.ts +3 -1
  52. package/dist/types/src/components/MissingObject.d.ts +0 -5
  53. package/dist/types/src/components/MissingObject.d.ts.map +0 -1
  54. package/dist/types/src/components/SaveStatus.d.ts +0 -3
  55. package/dist/types/src/components/SaveStatus.d.ts.map +0 -1
  56. package/dist/types/src/components/SyncStatus/types.d.ts.map +0 -1
  57. package/src/components/MissingObject.tsx +0 -54
  58. /package/src/components/SyncStatus/{types.ts → sync-state.ts} +0 -0
@@ -28,30 +28,28 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var node_exports = {};
30
30
  __export(node_exports, {
31
- ActorSchema: () => import_chunk_OTDRTHT4.ActorSchema,
31
+ ActorSchema: () => import_chunk_HTAM5LQD.ActorSchema,
32
32
  AwaitingObject: () => AwaitingObject,
33
33
  COMPOSER_SPACE_LOCK: () => COMPOSER_SPACE_LOCK,
34
- ChannelType: () => import_chunk_OTDRTHT4.ChannelType,
34
+ ChannelType: () => import_chunk_HTAM5LQD.ChannelType,
35
35
  CollectionMain: () => CollectionMain,
36
36
  CollectionSection: () => CollectionSection,
37
- CollectionType: () => import_chunk_OTDRTHT4.CollectionType,
38
- ContactType: () => import_chunk_OTDRTHT4.ContactType,
37
+ CollectionType: () => import_chunk_HTAM5LQD.CollectionType,
38
+ ContactType: () => import_chunk_HTAM5LQD.ContactType,
39
39
  DefaultObjectSettings: () => DefaultObjectSettings,
40
40
  FullPresence: () => FullPresence,
41
41
  MenuFooter: () => MenuFooter,
42
- MessageState: () => import_chunk_OTDRTHT4.MessageState,
43
- MessageType: () => import_chunk_OTDRTHT4.MessageType,
44
- MissingObject: () => MissingObject,
42
+ MessageState: () => import_chunk_HTAM5LQD.MessageState,
43
+ MessageType: () => import_chunk_HTAM5LQD.MessageType,
45
44
  PersistenceStatus: () => PersistenceStatus,
46
45
  PopoverRenameObject: () => PopoverRenameObject,
47
46
  PopoverRenameSpace: () => PopoverRenameSpace,
48
47
  SHARED: () => SHARED,
49
48
  SPACES: () => SPACES,
50
- SPACE_DIRECTORY_HANDLE: () => import_chunk_OTDRTHT4.SPACE_DIRECTORY_HANDLE,
49
+ SPACE_DIRECTORY_HANDLE: () => import_chunk_HTAM5LQD.SPACE_DIRECTORY_HANDLE,
51
50
  SPACE_PLUGIN: () => import_chunk_P4XUXM7Y.SPACE_PLUGIN,
52
51
  SPACE_PLUGIN_SHORT_ID: () => import_chunk_P4XUXM7Y.SPACE_PLUGIN_SHORT_ID,
53
52
  SPACE_TYPE: () => SPACE_TYPE,
54
- SaveStatus: () => SaveStatus,
55
53
  ShareSpaceButton: () => ShareSpaceButton,
56
54
  ShareSpaceButtonImpl: () => ShareSpaceButtonImpl,
57
55
  SmallPresence: () => SmallPresence,
@@ -65,8 +63,8 @@ __export(node_exports, {
65
63
  SyncStatus: () => SyncStatus,
66
64
  SyncStatusDetail: () => SyncStatusDetail,
67
65
  SyncStatusIndicator: () => SyncStatusIndicator,
68
- ThreadStatus: () => import_chunk_OTDRTHT4.ThreadStatus,
69
- ThreadType: () => import_chunk_OTDRTHT4.ThreadType,
66
+ ThreadStatus: () => import_chunk_HTAM5LQD.ThreadStatus,
67
+ ThreadType: () => import_chunk_HTAM5LQD.ThreadType,
70
68
  cloneObject: () => cloneObject,
71
69
  constructObjectActionGroups: () => constructObjectActionGroups,
72
70
  constructObjectActions: () => constructObjectActions,
@@ -79,13 +77,13 @@ __export(node_exports, {
79
77
  getNestedObjects: () => getNestedObjects,
80
78
  getSpaceDisplayName: () => getSpaceDisplayName,
81
79
  memoizeQuery: () => memoizeQuery,
82
- parseSpaceInitPlugin: () => import_chunk_OTDRTHT4.parseSpaceInitPlugin,
80
+ parseSpaceInitPlugin: () => import_chunk_HTAM5LQD.parseSpaceInitPlugin,
83
81
  parseSpacePlugin: () => parseSpacePlugin,
84
82
  translations: () => translations_default
85
83
  });
86
84
  module.exports = __toCommonJS(node_exports);
87
85
  var import_chunk_P4XUXM7Y = require("./chunk-P4XUXM7Y.cjs");
88
- var import_chunk_OTDRTHT4 = require("./chunk-OTDRTHT4.cjs");
86
+ var import_chunk_HTAM5LQD = require("./chunk-HTAM5LQD.cjs");
89
87
  var import_signals_core = require("@preact/signals-core");
90
88
  var import_react = __toESM(require("react"));
91
89
  var import_app_framework = require("@dxos/app-framework");
@@ -129,70 +127,68 @@ var import_invariant = require("@dxos/invariant");
129
127
  var import_migrations2 = require("@dxos/migrations");
130
128
  var import_plugin_graph2 = require("@dxos/plugin-graph");
131
129
  var import_echo4 = require("@dxos/react-client/echo");
132
- var import_react10 = __toESM(require("react"));
133
- var import_app_framework4 = require("@dxos/app-framework");
130
+ var import_react10 = require("@phosphor-icons/react");
131
+ var import_react11 = __toESM(require("react"));
132
+ var import_async2 = require("@dxos/async");
134
133
  var import_react_ui7 = require("@dxos/react-ui");
135
134
  var import_react_ui_theme3 = require("@dxos/react-ui-theme");
136
- var import_react11 = require("@phosphor-icons/react");
137
135
  var import_react12 = __toESM(require("react"));
138
- var import_async2 = require("@dxos/async");
136
+ var import_log2 = require("@dxos/log");
139
137
  var import_react_ui8 = require("@dxos/react-ui");
140
- var import_react_ui_theme4 = require("@dxos/react-ui-theme");
141
138
  var import_react13 = __toESM(require("react"));
142
- var import_log2 = require("@dxos/log");
143
139
  var import_react_ui9 = require("@dxos/react-ui");
144
140
  var import_react14 = __toESM(require("react"));
141
+ var import_app_framework4 = require("@dxos/app-framework");
145
142
  var import_react_ui10 = require("@dxos/react-ui");
146
- var import_react15 = __toESM(require("react"));
143
+ var import_react15 = require("@phosphor-icons/react");
144
+ var import_react16 = __toESM(require("react"));
147
145
  var import_app_framework5 = require("@dxos/app-framework");
146
+ var import_echo5 = require("@dxos/react-client/echo");
148
147
  var import_react_ui11 = require("@dxos/react-ui");
149
- var import_react16 = require("@phosphor-icons/react");
150
- var import_react17 = __toESM(require("react"));
148
+ var import_react_ui_theme4 = require("@dxos/react-ui-theme");
149
+ var import_react17 = require("@dxos/shell/react");
150
+ var import_react18 = require("@phosphor-icons/react");
151
+ var import_react19 = __toESM(require("react"));
151
152
  var import_app_framework6 = require("@dxos/app-framework");
152
- var import_echo5 = require("@dxos/react-client/echo");
153
- var import_react_ui12 = require("@dxos/react-ui");
154
- var import_react_ui_theme5 = require("@dxos/react-ui-theme");
155
- var import_react18 = require("@dxos/shell/react");
156
- var import_react19 = require("@phosphor-icons/react");
157
- var import_react20 = __toESM(require("react"));
158
- var import_app_framework7 = require("@dxos/app-framework");
159
153
  var import_echo6 = require("@dxos/react-client/echo");
160
154
  var import_invitations = require("@dxos/react-client/invitations");
161
155
  var import_invitations2 = require("@dxos/react-client/invitations");
162
- var import_react_ui13 = require("@dxos/react-ui");
163
- var import_react_ui_theme6 = require("@dxos/react-ui-theme");
164
- var import_react21 = require("@dxos/shell/react");
165
- var import_react22 = __toESM(require("react"));
166
- var import_app_framework8 = require("@dxos/app-framework");
156
+ var import_react_ui12 = require("@dxos/react-ui");
157
+ var import_react_ui_theme5 = require("@dxos/react-ui-theme");
158
+ var import_react20 = require("@dxos/shell/react");
159
+ var import_react21 = __toESM(require("react"));
160
+ var import_app_framework7 = require("@dxos/app-framework");
167
161
  var import_display_name = require("@dxos/display-name");
168
162
  var import_react_client4 = require("@dxos/react-client");
169
163
  var import_echo7 = require("@dxos/react-client/echo");
170
164
  var import_halo = require("@dxos/react-client/halo");
171
- var import_react_ui14 = require("@dxos/react-ui");
165
+ var import_react_ui13 = require("@dxos/react-ui");
172
166
  var import_react_ui_attention = require("@dxos/react-ui-attention");
173
167
  var import_util2 = require("@dxos/util");
174
- var import_react23 = __toESM(require("react"));
175
- var import_app_framework9 = require("@dxos/app-framework");
176
- var import_react_ui15 = require("@dxos/react-ui");
168
+ var import_react22 = __toESM(require("react"));
169
+ var import_app_framework8 = require("@dxos/app-framework");
170
+ var import_react_ui14 = require("@dxos/react-ui");
177
171
  var import_react_ui_data = require("@dxos/react-ui-data");
178
- var import_react24 = __toESM(require("react"));
172
+ var import_react23 = __toESM(require("react"));
179
173
  var import_log3 = require("@dxos/log");
180
174
  var import_metadata = require("@dxos/protocols/proto/dxos/echo/metadata");
175
+ var import_react_client5 = require("@dxos/react-client");
176
+ var import_halo2 = require("@dxos/react-client/halo");
177
+ var import_react_ui15 = require("@dxos/react-ui");
178
+ var import_react24 = __toESM(require("react"));
179
+ var import_plugin_status_bar = require("@dxos/plugin-status-bar");
180
+ var import_react_client6 = require("@dxos/react-client");
181
181
  var import_react_ui16 = require("@dxos/react-ui");
182
+ var import_react_ui_syntax_highlighter = require("@dxos/react-ui-syntax-highlighter");
183
+ var import_react_ui_theme6 = require("@dxos/react-ui-theme");
182
184
  var import_react25 = __toESM(require("react"));
183
- var import_context = require("@dxos/context");
184
- var import_plugin_status_bar = require("@dxos/plugin-status-bar");
185
- var import_react_client5 = require("@dxos/react-client");
186
185
  var import_react_ui17 = require("@dxos/react-ui");
187
- var import_react26 = __toESM(require("react"));
188
- var import_plugin_status_bar2 = require("@dxos/plugin-status-bar");
189
- var import_react_ui18 = require("@dxos/react-ui");
190
- var import_react_ui_syntax_highlighter = require("@dxos/react-ui-syntax-highlighter");
191
186
  var import_react_ui_theme7 = require("@dxos/react-ui-theme");
192
- var import_react27 = require("react");
187
+ var import_context = require("@dxos/context");
188
+ var import_react26 = require("react");
193
189
  var import_context2 = require("@dxos/context");
194
190
  var import_protocols = require("@dxos/protocols");
195
- var import_react_client6 = require("@dxos/react-client");
191
+ var import_react_client7 = require("@dxos/react-client");
196
192
  var WAIT_FOR_OBJECT_TIMEOUT = 18e4;
197
193
  var TOAST_TIMEOUT = 24e4;
198
194
  var AwaitingObject = ({ id }) => {
@@ -380,8 +376,8 @@ var checkPendingMigration = (space) => {
380
376
  };
381
377
  var constructSpaceNode = ({ space, personal, namesCache, resolve }) => {
382
378
  const hasPendingMigration = checkPendingMigration(space);
383
- const collection = space.state.get() === import_echo4.SpaceState.SPACE_READY && space.properties[import_chunk_OTDRTHT4.CollectionType.typename];
384
- const partials = space.state.get() === import_echo4.SpaceState.SPACE_READY && collection instanceof import_chunk_OTDRTHT4.CollectionType ? getCollectionGraphNodePartials({
379
+ const collection = space.state.get() === import_echo4.SpaceState.SPACE_READY && space.properties[import_chunk_HTAM5LQD.CollectionType.typename];
380
+ const partials = space.state.get() === import_echo4.SpaceState.SPACE_READY && collection instanceof import_chunk_HTAM5LQD.CollectionType ? getCollectionGraphNodePartials({
385
381
  collection,
386
382
  space,
387
383
  resolve
@@ -410,7 +406,7 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
410
406
  if (state !== import_echo4.SpaceState.SPACE_READY || hasPendingMigration) {
411
407
  return [];
412
408
  }
413
- const collection = space.properties[import_chunk_OTDRTHT4.CollectionType.typename];
409
+ const collection = space.properties[import_chunk_HTAM5LQD.CollectionType.typename];
414
410
  const actions = [
415
411
  {
416
412
  id: getId(import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT),
@@ -440,7 +436,7 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
440
436
  action: import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT,
441
437
  data: {
442
438
  target: collection,
443
- object: (0, import_echo_schema2.create)(import_chunk_OTDRTHT4.CollectionType, {
439
+ object: (0, import_echo_schema2.create)(import_chunk_HTAM5LQD.CollectionType, {
444
440
  objects: [],
445
441
  views: {}
446
442
  })
@@ -643,7 +639,7 @@ var createObjectNode = ({ object, space, resolve }) => {
643
639
  if (Object.keys(metadata).length === 0) {
644
640
  return void 0;
645
641
  }
646
- const partials = object instanceof import_chunk_OTDRTHT4.CollectionType ? getCollectionGraphNodePartials({
642
+ const partials = object instanceof import_chunk_HTAM5LQD.CollectionType ? getCollectionGraphNodePartials({
647
643
  collection: object,
648
644
  space,
649
645
  resolve
@@ -668,7 +664,7 @@ var createObjectNode = ({ object, space, resolve }) => {
668
664
  };
669
665
  };
670
666
  var constructObjectActionGroups = ({ object, dispatch }) => {
671
- if (!(object instanceof import_chunk_OTDRTHT4.CollectionType)) {
667
+ if (!(object instanceof import_chunk_HTAM5LQD.CollectionType)) {
672
668
  return [];
673
669
  }
674
670
  const collection = object;
@@ -702,7 +698,7 @@ var constructObjectActionGroups = ({ object, dispatch }) => {
702
698
  action: import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT,
703
699
  data: {
704
700
  target: collection,
705
- object: (0, import_echo_schema2.create)(import_chunk_OTDRTHT4.CollectionType, {
701
+ object: (0, import_echo_schema2.create)(import_chunk_HTAM5LQD.CollectionType, {
706
702
  objects: [],
707
703
  views: {}
708
704
  })
@@ -746,7 +742,7 @@ var constructObjectActions = ({ node, dispatch }) => {
746
742
  },
747
743
  properties: {
748
744
  label: [
749
- object instanceof import_chunk_OTDRTHT4.CollectionType ? "rename collection label" : "rename object label",
745
+ object instanceof import_chunk_HTAM5LQD.CollectionType ? "rename collection label" : "rename object label",
750
746
  {
751
747
  ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
752
748
  }
@@ -764,7 +760,7 @@ var constructObjectActions = ({ node, dispatch }) => {
764
760
  const graph = (0, import_plugin_graph2.getGraph)(node);
765
761
  const collection = graph.nodes(node, {
766
762
  relation: "inbound"
767
- }).find(({ data }) => data instanceof import_chunk_OTDRTHT4.CollectionType)?.data;
763
+ }).find(({ data }) => data instanceof import_chunk_HTAM5LQD.CollectionType)?.data;
768
764
  await dispatch([
769
765
  {
770
766
  action: import_chunk_P4XUXM7Y.SpaceAction.REMOVE_OBJECT,
@@ -777,13 +773,13 @@ var constructObjectActions = ({ node, dispatch }) => {
777
773
  },
778
774
  properties: {
779
775
  label: [
780
- object instanceof import_chunk_OTDRTHT4.CollectionType ? "delete collection label" : "delete object label",
776
+ object instanceof import_chunk_HTAM5LQD.CollectionType ? "delete collection label" : "delete object label",
781
777
  {
782
778
  ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
783
779
  }
784
780
  ],
785
781
  icon: "ph--trash--regular",
786
- keyBinding: object instanceof import_chunk_OTDRTHT4.CollectionType ? void 0 : "shift+meta+Backspace",
782
+ keyBinding: object instanceof import_chunk_HTAM5LQD.CollectionType ? void 0 : "shift+meta+Backspace",
787
783
  testId: "spacePlugin.deleteObject"
788
784
  }
789
785
  },
@@ -875,54 +871,19 @@ var MenuFooter = ({ object }) => {
875
871
  className: "inline-block mie-1"
876
872
  }), (0, import_react_ui6.toLocalizedString)(spaceName, t)))) : null;
877
873
  };
878
- var WAIT_FOR_OBJECT_TIMEOUT2 = 1e3;
879
- var MissingObject = ({ id }) => {
880
- const { t } = (0, import_react_ui7.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
881
- const [waiting, setWaiting] = (0, import_react10.useState)(false);
882
- const intentPlugin = (0, import_app_framework4.useResolvePlugin)(import_app_framework4.parseIntentPlugin);
883
- (0, import_react10.useEffect)(() => {
884
- if (!intentPlugin) {
885
- return;
886
- }
887
- const timeout = setTimeout(async () => {
888
- setWaiting(true);
889
- await intentPlugin.provides.intent.dispatch({
890
- plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
891
- action: import_chunk_P4XUXM7Y.SpaceAction.WAIT_FOR_OBJECT,
892
- data: {
893
- id
894
- }
895
- });
896
- }, WAIT_FOR_OBJECT_TIMEOUT2);
897
- return () => clearTimeout(timeout);
898
- }, [
899
- intentPlugin,
900
- id
901
- ]);
902
- return /* @__PURE__ */ import_react10.default.createElement("div", {
903
- role: "none",
904
- className: (0, import_react_ui_theme3.mx)(import_react_ui_theme3.baseSurface, "min-bs-screen is-full flex items-center justify-center p-8")
905
- }, waiting ? /* @__PURE__ */ import_react10.default.createElement("p", {
906
- role: "alert",
907
- className: (0, import_react_ui_theme3.mx)(import_react_ui_theme3.descriptionText, "border border-dashed border-neutral-400/50 rounded-lg flex items-center justify-center p-8 font-normal text-lg")
908
- }, t("missing object message")) : /* @__PURE__ */ import_react10.default.createElement(import_react_ui7.Status, {
909
- indeterminate: true,
910
- "aria-label": "Initializing"
911
- }));
912
- };
913
- var Status2;
914
- (function(Status3) {
915
- Status3[Status3["PERSISTED_LOCALLY"] = 0] = "PERSISTED_LOCALLY";
916
- Status3[Status3["PENDING"] = 1] = "PENDING";
917
- Status3[Status3["ERROR"] = 2] = "ERROR";
918
- })(Status2 || (Status2 = {}));
874
+ var Status;
875
+ (function(Status2) {
876
+ Status2[Status2["PERSISTED_LOCALLY"] = 0] = "PERSISTED_LOCALLY";
877
+ Status2[Status2["PENDING"] = 1] = "PENDING";
878
+ Status2[Status2["ERROR"] = 2] = "ERROR";
879
+ })(Status || (Status = {}));
919
880
  var PersistenceStatus = ({ db }) => {
920
- const { t } = (0, import_react_ui8.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
921
- const [displayMessage, setDisplayMessage] = (0, import_react12.useState)(false);
922
- const [status, naturalSetStatus] = (0, import_react12.useState)(0);
923
- const [prevStatus, setPrevStatus] = (0, import_react12.useState)(0);
881
+ const { t } = (0, import_react_ui7.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
882
+ const [displayMessage, setDisplayMessage] = (0, import_react11.useState)(false);
883
+ const [status, naturalSetStatus] = (0, import_react11.useState)(0);
884
+ const [prevStatus, setPrevStatus] = (0, import_react11.useState)(0);
924
885
  const _setStatus = (0, import_async2.debounce)(naturalSetStatus, 500);
925
- (0, import_react12.useEffect)(() => {
886
+ (0, import_react11.useEffect)(() => {
926
887
  setPrevStatus(status);
927
888
  if (prevStatus !== status && status === 0) {
928
889
  setDisplayMessage(true);
@@ -934,44 +895,44 @@ var PersistenceStatus = ({ db }) => {
934
895
  ]);
935
896
  switch (status) {
936
897
  case 2:
937
- return /* @__PURE__ */ import_react12.default.createElement("div", {
898
+ return /* @__PURE__ */ import_react11.default.createElement("div", {
938
899
  className: "flex items-center"
939
- }, /* @__PURE__ */ import_react12.default.createElement(import_react11.Warning, {
940
- className: (0, import_react_ui_theme4.mx)((0, import_react_ui_theme4.getSize)(4), "me-1")
941
- }), /* @__PURE__ */ import_react12.default.createElement("span", {
942
- className: (0, import_react_ui_theme4.mx)("text-sm", import_react_ui_theme4.warningText)
900
+ }, /* @__PURE__ */ import_react11.default.createElement(import_react10.Warning, {
901
+ className: (0, import_react_ui_theme3.mx)((0, import_react_ui_theme3.getSize)(4), "me-1")
902
+ }), /* @__PURE__ */ import_react11.default.createElement("span", {
903
+ className: (0, import_react_ui_theme3.mx)("text-sm", import_react_ui_theme3.warningText)
943
904
  }, t("persistence error label")));
944
905
  case 1:
945
- return /* @__PURE__ */ import_react12.default.createElement("div", {
906
+ return /* @__PURE__ */ import_react11.default.createElement("div", {
946
907
  className: "flex items-center"
947
- }, /* @__PURE__ */ import_react12.default.createElement(import_react11.ArrowsCounterClockwise, {
948
- className: (0, import_react_ui_theme4.mx)((0, import_react_ui_theme4.getSize)(4), "me-1")
949
- }), /* @__PURE__ */ import_react12.default.createElement("span", {
950
- className: (0, import_react_ui_theme4.mx)("text-sm", import_react_ui_theme4.staticPlaceholderText)
908
+ }, /* @__PURE__ */ import_react11.default.createElement(import_react10.ArrowsCounterClockwise, {
909
+ className: (0, import_react_ui_theme3.mx)((0, import_react_ui_theme3.getSize)(4), "me-1")
910
+ }), /* @__PURE__ */ import_react11.default.createElement("span", {
911
+ className: (0, import_react_ui_theme3.mx)("text-sm", import_react_ui_theme3.staticPlaceholderText)
951
912
  }, t("persistence pending label")));
952
913
  case 0:
953
914
  default:
954
- return /* @__PURE__ */ import_react12.default.createElement(import_react_ui8.Tooltip.Root, {
915
+ return /* @__PURE__ */ import_react11.default.createElement(import_react_ui7.Tooltip.Root, {
955
916
  delayDuration: 400
956
- }, /* @__PURE__ */ import_react12.default.createElement(import_react_ui8.Tooltip.Trigger, {
917
+ }, /* @__PURE__ */ import_react11.default.createElement(import_react_ui7.Tooltip.Trigger, {
957
918
  role: "status",
958
919
  className: "flex items-center"
959
- }, /* @__PURE__ */ import_react12.default.createElement(import_react11.CheckCircle, {
960
- className: (0, import_react_ui_theme4.mx)((0, import_react_ui_theme4.getSize)(4), "me-1")
961
- }), displayMessage && /* @__PURE__ */ import_react12.default.createElement("span", {
962
- className: (0, import_react_ui_theme4.mx)("text-sm", import_react_ui_theme4.staticPlaceholderText)
963
- }, t("persisted locally label"))), /* @__PURE__ */ import_react12.default.createElement(import_react_ui8.Tooltip.Portal, null, /* @__PURE__ */ import_react12.default.createElement(import_react_ui8.Tooltip.Content, {
920
+ }, /* @__PURE__ */ import_react11.default.createElement(import_react10.CheckCircle, {
921
+ className: (0, import_react_ui_theme3.mx)((0, import_react_ui_theme3.getSize)(4), "me-1")
922
+ }), displayMessage && /* @__PURE__ */ import_react11.default.createElement("span", {
923
+ className: (0, import_react_ui_theme3.mx)("text-sm", import_react_ui_theme3.staticPlaceholderText)
924
+ }, t("persisted locally label"))), /* @__PURE__ */ import_react11.default.createElement(import_react_ui7.Tooltip.Portal, null, /* @__PURE__ */ import_react11.default.createElement(import_react_ui7.Tooltip.Content, {
964
925
  classNames: "z-10"
965
- }, t("persisted locally message"), /* @__PURE__ */ import_react12.default.createElement(import_react_ui8.Tooltip.Arrow, null))));
926
+ }, t("persisted locally message"), /* @__PURE__ */ import_react11.default.createElement(import_react_ui7.Tooltip.Arrow, null))));
966
927
  }
967
928
  };
968
929
  var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
969
930
  var PopoverRenameObject = ({ object: obj }) => {
970
- const { t } = (0, import_react_ui9.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
971
- const doneButton = (0, import_react13.useRef)(null);
931
+ const { t } = (0, import_react_ui8.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
932
+ const doneButton = (0, import_react12.useRef)(null);
972
933
  const object = obj;
973
- const [name, setName] = (0, import_react13.useState)(object.name || object.title || "");
974
- const handleDone = (0, import_react13.useCallback)(() => {
934
+ const [name, setName] = (0, import_react12.useState)(object.name || object.title || "");
935
+ const handleDone = (0, import_react12.useCallback)(() => {
975
936
  try {
976
937
  object.name = name;
977
938
  } catch {
@@ -992,23 +953,23 @@ var PopoverRenameObject = ({ object: obj }) => {
992
953
  object,
993
954
  name
994
955
  ]);
995
- return /* @__PURE__ */ import_react13.default.createElement("div", {
956
+ return /* @__PURE__ */ import_react12.default.createElement("div", {
996
957
  role: "none",
997
958
  className: "p-1 flex gap-2"
998
- }, /* @__PURE__ */ import_react13.default.createElement("div", {
959
+ }, /* @__PURE__ */ import_react12.default.createElement("div", {
999
960
  role: "none",
1000
961
  className: "flex-1"
1001
- }, /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Input.Root, null, /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Input.Label, {
962
+ }, /* @__PURE__ */ import_react12.default.createElement(import_react_ui8.Input.Root, null, /* @__PURE__ */ import_react12.default.createElement(import_react_ui8.Input.Label, {
1002
963
  srOnly: true
1003
- }, t("object name label")), /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Input.TextInput, {
964
+ }, t("object name label")), /* @__PURE__ */ import_react12.default.createElement(import_react_ui8.Input.TextInput, {
1004
965
  placeholder: t("object title placeholder"),
1005
966
  value: name,
1006
967
  "data-testid": "spacePlugin.renameObject.input",
1007
968
  onChange: ({ target: { value } }) => setName(value),
1008
969
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1009
- }))), /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Popover.Close, {
970
+ }))), /* @__PURE__ */ import_react12.default.createElement(import_react_ui8.Popover.Close, {
1010
971
  asChild: true
1011
- }, /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Button, {
972
+ }, /* @__PURE__ */ import_react12.default.createElement(import_react_ui8.Button, {
1012
973
  ref: doneButton,
1013
974
  classNames: "self-stretch",
1014
975
  onClick: handleDone
@@ -1017,33 +978,33 @@ var PopoverRenameObject = ({ object: obj }) => {
1017
978
  }))));
1018
979
  };
1019
980
  var PopoverRenameSpace = ({ space }) => {
1020
- const { t } = (0, import_react_ui10.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1021
- const doneButton = (0, import_react14.useRef)(null);
1022
- const [name, setName] = (0, import_react14.useState)(space.properties.name ?? "");
1023
- const handleDone = (0, import_react14.useCallback)(() => {
981
+ const { t } = (0, import_react_ui9.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
982
+ const doneButton = (0, import_react13.useRef)(null);
983
+ const [name, setName] = (0, import_react13.useState)(space.properties.name ?? "");
984
+ const handleDone = (0, import_react13.useCallback)(() => {
1024
985
  space.properties.name = name;
1025
986
  }, [
1026
987
  space,
1027
988
  name
1028
989
  ]);
1029
- return /* @__PURE__ */ import_react14.default.createElement("div", {
990
+ return /* @__PURE__ */ import_react13.default.createElement("div", {
1030
991
  role: "none",
1031
992
  className: "p-1 flex gap-2"
1032
- }, /* @__PURE__ */ import_react14.default.createElement("div", {
993
+ }, /* @__PURE__ */ import_react13.default.createElement("div", {
1033
994
  role: "none",
1034
995
  className: "flex-1"
1035
- }, /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Input.Root, null, /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Input.Label, {
996
+ }, /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Input.Root, null, /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Input.Label, {
1036
997
  srOnly: true
1037
- }, t("space name label")), /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Input.TextInput, {
998
+ }, t("space name label")), /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Input.TextInput, {
1038
999
  defaultValue: space.properties.name ?? "",
1039
1000
  placeholder: t("unnamed space label"),
1040
1001
  onChange: ({ target: { value } }) => setName(value),
1041
1002
  // TODO(wittjosiah): Ideally this should access the popover context to close the popover.
1042
1003
  // Currently this is not possible because Radix does not expose the popover context.
1043
1004
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1044
- }))), /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Popover.Close, {
1005
+ }))), /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Popover.Close, {
1045
1006
  asChild: true
1046
- }, /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Button, {
1007
+ }, /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Button, {
1047
1008
  ref: doneButton,
1048
1009
  classNames: "self-stretch",
1049
1010
  onClick: handleDone
@@ -1052,8 +1013,8 @@ var PopoverRenameSpace = ({ space }) => {
1052
1013
  }))));
1053
1014
  };
1054
1015
  var ShareSpaceButton = ({ spaceId }) => {
1055
- const dispatch = (0, import_app_framework5.useIntentDispatcher)();
1056
- return /* @__PURE__ */ import_react15.default.createElement(ShareSpaceButtonImpl, {
1016
+ const dispatch = (0, import_app_framework4.useIntentDispatcher)();
1017
+ return /* @__PURE__ */ import_react14.default.createElement(ShareSpaceButtonImpl, {
1057
1018
  onClick: () => dispatch({
1058
1019
  action: import_chunk_P4XUXM7Y.SpaceAction.SHARE,
1059
1020
  data: {
@@ -1063,8 +1024,8 @@ var ShareSpaceButton = ({ spaceId }) => {
1063
1024
  });
1064
1025
  };
1065
1026
  var ShareSpaceButtonImpl = ({ onClick }) => {
1066
- const { t } = (0, import_react_ui11.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1067
- return /* @__PURE__ */ import_react15.default.createElement(import_react_ui11.Button, {
1027
+ const { t } = (0, import_react_ui10.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1028
+ return /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Button, {
1068
1029
  "data-testid": "spacePlugin.shareSpaceButton",
1069
1030
  onClick,
1070
1031
  classNames: "mli-1"
@@ -1074,9 +1035,9 @@ var activeActionKeyStorageKey = "dxos:react-shell/space-manager/active-action";
1074
1035
  var Presence = import_echo6.SpaceMember.PresenceState;
1075
1036
  var handleCreateInvitationUrl = (invitationCode) => `${origin}?spaceInvitationCode=${invitationCode}`;
1076
1037
  var SpaceMemberList = ({ members }) => {
1077
- return members.length > 0 ? /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.List, {
1038
+ return members.length > 0 ? /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.List, {
1078
1039
  classNames: "col-start-2 col-end-5 gap-y-1 grid grid-cols-subgrid items-center"
1079
- }, members.map((member) => /* @__PURE__ */ import_react20.default.createElement(import_react21.IdentityListItem, {
1040
+ }, members.map((member) => /* @__PURE__ */ import_react19.default.createElement(import_react20.IdentityListItem, {
1080
1041
  classNames: "contents",
1081
1042
  key: member.identity.identityKey.toHex(),
1082
1043
  identity: member.identity,
@@ -1084,11 +1045,11 @@ var SpaceMemberList = ({ members }) => {
1084
1045
  }))) : null;
1085
1046
  };
1086
1047
  var SpaceMembersSection = ({ space }) => {
1087
- const { t } = (0, import_react_ui13.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1048
+ const { t } = (0, import_react_ui12.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1088
1049
  const invitations = (0, import_echo6.useSpaceInvitations)(space.key);
1089
- const { dispatch } = (0, import_app_framework7.useIntent)();
1050
+ const { dispatch } = (0, import_app_framework6.useIntent)();
1090
1051
  const handleCloseDialog = () => dispatch({
1091
- action: import_app_framework7.LayoutAction.SET_LAYOUT,
1052
+ action: import_app_framework6.LayoutAction.SET_LAYOUT,
1092
1053
  data: {
1093
1054
  element: "dialog",
1094
1055
  state: false
@@ -1097,7 +1058,7 @@ var SpaceMembersSection = ({ space }) => {
1097
1058
  const handleInvitationSelect = ({ invitation: invitationObservable }) => {
1098
1059
  const invitation = invitationObservable.get();
1099
1060
  void dispatch({
1100
- action: import_app_framework7.LayoutAction.SET_LAYOUT,
1061
+ action: import_app_framework6.LayoutAction.SET_LAYOUT,
1101
1062
  data: {
1102
1063
  element: "dialog",
1103
1064
  component: "dxos.org/plugin/space/InvitationManagerDialog",
@@ -1120,8 +1081,8 @@ var SpaceMembersSection = ({ space }) => {
1120
1081
  description: t("invite one description", {
1121
1082
  ns: "os"
1122
1083
  }),
1123
- icon: import_react19.UserPlus,
1124
- onClick: (0, import_react20.useCallback)(() => {
1084
+ icon: import_react18.UserPlus,
1085
+ onClick: (0, import_react19.useCallback)(() => {
1125
1086
  space.share?.({
1126
1087
  type: import_invitations2.Invitation.Type.INTERACTIVE,
1127
1088
  authMethod: import_invitations2.Invitation.AuthMethod.SHARED_SECRET
@@ -1137,8 +1098,8 @@ var SpaceMembersSection = ({ space }) => {
1137
1098
  description: t("invite many description", {
1138
1099
  ns: "os"
1139
1100
  }),
1140
- icon: import_react19.UsersThree,
1141
- onClick: (0, import_react20.useCallback)(() => {
1101
+ icon: import_react18.UsersThree,
1102
+ onClick: (0, import_react19.useCallback)(() => {
1142
1103
  space.share?.({
1143
1104
  type: import_invitations2.Invitation.Type.INTERACTIVE,
1144
1105
  authMethod: import_invitations2.Invitation.AuthMethod.NONE,
@@ -1149,7 +1110,7 @@ var SpaceMembersSection = ({ space }) => {
1149
1110
  ])
1150
1111
  }
1151
1112
  };
1152
- const [activeActionKey, setInternalActiveActionKey] = (0, import_react20.useState)(localStorage.getItem(activeActionKeyStorageKey) ?? "inviteOne");
1113
+ const [activeActionKey, setInternalActiveActionKey] = (0, import_react19.useState)(localStorage.getItem(activeActionKeyStorageKey) ?? "inviteOne");
1153
1114
  const setActiveActionKey = (nextKey) => {
1154
1115
  setInternalActiveActionKey(nextKey);
1155
1116
  localStorage.setItem(activeActionKeyStorageKey, nextKey);
@@ -1162,101 +1123,101 @@ var SpaceMembersSection = ({ space }) => {
1162
1123
  [Presence.ONLINE]: [],
1163
1124
  [Presence.OFFLINE]: []
1164
1125
  });
1165
- return /* @__PURE__ */ import_react20.default.createElement("section", {
1126
+ return /* @__PURE__ */ import_react19.default.createElement("section", {
1166
1127
  className: "mbe-4 col-span-3 grid gap-y-2 grid-cols-subgrid auto-rows-min"
1167
- }, /* @__PURE__ */ import_react20.default.createElement("h2", {
1128
+ }, /* @__PURE__ */ import_react19.default.createElement("h2", {
1168
1129
  className: "contents"
1169
- }, /* @__PURE__ */ import_react20.default.createElement(import_react19.UsersThree, {
1130
+ }, /* @__PURE__ */ import_react19.default.createElement(import_react18.UsersThree, {
1170
1131
  weight: "duotone",
1171
- className: (0, import_react_ui_theme6.mx)((0, import_react_ui_theme6.getSize)(5), "place-self-center")
1172
- }), /* @__PURE__ */ import_react20.default.createElement("span", {
1132
+ className: (0, import_react_ui_theme5.mx)((0, import_react_ui_theme5.getSize)(5), "place-self-center")
1133
+ }), /* @__PURE__ */ import_react19.default.createElement("span", {
1173
1134
  className: "text-lg col-span-2"
1174
- }, t("space members label"))), /* @__PURE__ */ import_react20.default.createElement("h3", {
1135
+ }, t("space members label"))), /* @__PURE__ */ import_react19.default.createElement("h3", {
1175
1136
  className: "col-start-2 col-span-3 text-sm italic text-description"
1176
- }, t("invitations heading")), invitations.length > 0 && /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.List, {
1137
+ }, t("invitations heading")), invitations.length > 0 && /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.List, {
1177
1138
  classNames: "col-start-2 col-span-2 gap-y-2 grid grid-cols-[var(--rail-size)_1fr_var(--rail-action)_var(--rail-action)]"
1178
- }, invitations.map((invitation) => /* @__PURE__ */ import_react20.default.createElement(import_react21.InvitationListItem, {
1139
+ }, invitations.map((invitation) => /* @__PURE__ */ import_react19.default.createElement(import_react20.InvitationListItem, {
1179
1140
  reverseEffects: true,
1180
1141
  classNames: "pis-0 pie-0 gap-0 col-span-4 grid grid-cols-subgrid",
1181
1142
  key: invitation.get().invitationId,
1182
1143
  invitation,
1183
1144
  send: handleInvitationSelect,
1184
1145
  createInvitationUrl: handleCreateInvitationUrl
1185
- }))), /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.ButtonGroup, {
1146
+ }))), /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.ButtonGroup, {
1186
1147
  classNames: "col-start-2 col-end-4 grid grid-cols-[1fr_var(--rail-action)] place-self-grow gap-px"
1187
- }, /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.Button, {
1148
+ }, /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.Button, {
1188
1149
  classNames: "gap-2",
1189
1150
  onClick: activeAction.onClick
1190
- }, /* @__PURE__ */ import_react20.default.createElement(activeAction.icon, {
1191
- className: (0, import_react_ui_theme6.getSize)(5)
1192
- }), /* @__PURE__ */ import_react20.default.createElement("span", null, t(activeAction.label, {
1151
+ }, /* @__PURE__ */ import_react19.default.createElement(activeAction.icon, {
1152
+ className: (0, import_react_ui_theme5.getSize)(5)
1153
+ }), /* @__PURE__ */ import_react19.default.createElement("span", null, t(activeAction.label, {
1193
1154
  ns: "os"
1194
- }))), /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.DropdownMenu.Root, null, /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.DropdownMenu.Trigger, {
1155
+ }))), /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.DropdownMenu.Root, null, /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.DropdownMenu.Trigger, {
1195
1156
  asChild: true
1196
- }, /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.Button, {
1157
+ }, /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.Button, {
1197
1158
  classNames: "pli-0"
1198
- }, /* @__PURE__ */ import_react20.default.createElement(import_react19.CaretDown, {
1199
- className: (0, import_react_ui_theme6.getSize)(4)
1200
- }))), /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.DropdownMenu.Content, null, /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.DropdownMenu.Viewport, null, Object.entries(inviteActions).map(([id, action]) => {
1201
- return /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.DropdownMenu.CheckboxItem, {
1159
+ }, /* @__PURE__ */ import_react19.default.createElement(import_react18.CaretDown, {
1160
+ className: (0, import_react_ui_theme5.getSize)(4)
1161
+ }))), /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.DropdownMenu.Content, null, /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.DropdownMenu.Viewport, null, Object.entries(inviteActions).map(([id, action]) => {
1162
+ return /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.DropdownMenu.CheckboxItem, {
1202
1163
  key: id,
1203
1164
  "aria-labelledby": `${id}__label`,
1204
1165
  "aria-describedby": `${id}__description`,
1205
1166
  checked: activeActionKey === id,
1206
1167
  onCheckedChange: (checked) => checked && setActiveActionKey(id),
1207
1168
  classNames: "gap-2"
1208
- }, action.icon && /* @__PURE__ */ import_react20.default.createElement(action.icon, {
1209
- className: (0, import_react_ui_theme6.getSize)(5)
1210
- }), /* @__PURE__ */ import_react20.default.createElement("div", {
1169
+ }, action.icon && /* @__PURE__ */ import_react19.default.createElement(action.icon, {
1170
+ className: (0, import_react_ui_theme5.getSize)(5)
1171
+ }), /* @__PURE__ */ import_react19.default.createElement("div", {
1211
1172
  role: "none",
1212
1173
  className: "flex-1 min-is-0 space-b-1"
1213
- }, /* @__PURE__ */ import_react20.default.createElement("p", {
1174
+ }, /* @__PURE__ */ import_react19.default.createElement("p", {
1214
1175
  id: `${id}__label`
1215
1176
  }, t(action.label, {
1216
1177
  ns: "os"
1217
- })), action.description && /* @__PURE__ */ import_react20.default.createElement("p", {
1178
+ })), action.description && /* @__PURE__ */ import_react19.default.createElement("p", {
1218
1179
  id: `${id}__description`,
1219
- className: import_react_ui_theme6.descriptionText
1180
+ className: import_react_ui_theme5.descriptionText
1220
1181
  }, t(action.description, {
1221
1182
  ns: "os"
1222
- }))), /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.DropdownMenu.ItemIndicator, {
1183
+ }))), /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.DropdownMenu.ItemIndicator, {
1223
1184
  asChild: true
1224
- }, /* @__PURE__ */ import_react20.default.createElement(import_react19.Check, {
1225
- className: (0, import_react_ui_theme6.getSize)(4)
1185
+ }, /* @__PURE__ */ import_react19.default.createElement(import_react18.Check, {
1186
+ className: (0, import_react_ui_theme5.getSize)(4)
1226
1187
  })));
1227
- })), /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.DropdownMenu.Arrow, null)))), members[Presence.ONLINE].length + members[Presence.OFFLINE].length < 1 ? /* @__PURE__ */ import_react20.default.createElement("p", {
1228
- className: (0, import_react_ui_theme6.mx)(import_react_ui_theme6.descriptionText, "text-center is-full mlb-2")
1188
+ })), /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.DropdownMenu.Arrow, null)))), members[Presence.ONLINE].length + members[Presence.OFFLINE].length < 1 ? /* @__PURE__ */ import_react19.default.createElement("p", {
1189
+ className: (0, import_react_ui_theme5.mx)(import_react_ui_theme5.descriptionText, "text-center is-full mlb-2")
1229
1190
  }, t("empty space members message", {
1230
1191
  ns: "os"
1231
- })) : /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement("h3", {
1192
+ })) : /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement("h3", {
1232
1193
  className: "col-start-2 col-end-5 text-sm italic text-description"
1233
1194
  }, t("active space members heading", {
1234
1195
  count: members[Presence.ONLINE].length
1235
- })), /* @__PURE__ */ import_react20.default.createElement(SpaceMemberList, {
1196
+ })), /* @__PURE__ */ import_react19.default.createElement(SpaceMemberList, {
1236
1197
  members: members[Presence.ONLINE]
1237
- }), /* @__PURE__ */ import_react20.default.createElement("h3", {
1198
+ }), /* @__PURE__ */ import_react19.default.createElement("h3", {
1238
1199
  className: "col-start-2 col-end-5 text-sm italic text-description"
1239
1200
  }, t("inactive space members heading", {
1240
1201
  count: members[Presence.OFFLINE].length
1241
- })), /* @__PURE__ */ import_react20.default.createElement(SpaceMemberList, {
1202
+ })), /* @__PURE__ */ import_react19.default.createElement(SpaceMemberList, {
1242
1203
  members: members[Presence.OFFLINE]
1243
1204
  })));
1244
1205
  };
1245
1206
  var KeyShortcuts = () => {
1246
- const { t } = (0, import_react_ui12.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1247
- return /* @__PURE__ */ import_react17.default.createElement("section", {
1207
+ const { t } = (0, import_react_ui11.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1208
+ return /* @__PURE__ */ import_react16.default.createElement("section", {
1248
1209
  className: "mbe-4 col-span-4 md:col-start-5 md:col-end-7 grid grid-cols-subgrid gap-y-2 auto-rows-min"
1249
- }, /* @__PURE__ */ import_react17.default.createElement("h2", {
1210
+ }, /* @__PURE__ */ import_react16.default.createElement("h2", {
1250
1211
  className: "contents"
1251
- }, /* @__PURE__ */ import_react17.default.createElement(import_react16.Command, {
1212
+ }, /* @__PURE__ */ import_react16.default.createElement(import_react15.Command, {
1252
1213
  weight: "duotone",
1253
- className: (0, import_react_ui_theme5.mx)((0, import_react_ui_theme5.getSize)(5), "place-self-center")
1254
- }), /* @__PURE__ */ import_react17.default.createElement("span", {
1214
+ className: (0, import_react_ui_theme4.mx)((0, import_react_ui_theme4.getSize)(5), "place-self-center")
1215
+ }), /* @__PURE__ */ import_react16.default.createElement("span", {
1255
1216
  className: "text-lg col-span-2 md:col-span-1"
1256
- }, t("keyshortcuts label"))), /* @__PURE__ */ import_react17.default.createElement("div", {
1217
+ }, t("keyshortcuts label"))), /* @__PURE__ */ import_react16.default.createElement("div", {
1257
1218
  role: "none",
1258
1219
  className: "col-start-2 col-end-4 md:col-end-5 pie-2"
1259
- }, /* @__PURE__ */ import_react17.default.createElement(import_app_framework6.Surface, {
1220
+ }, /* @__PURE__ */ import_react16.default.createElement(import_app_framework5.Surface, {
1260
1221
  role: "keyshortcuts"
1261
1222
  })));
1262
1223
  };
@@ -1264,41 +1225,41 @@ var spaceMainLayout = "grid gap-y-2 auto-rows-min before:bs-2 before:col-span-5
1264
1225
  var SpaceMain = ({ space, role }) => {
1265
1226
  const state = space.state.get();
1266
1227
  const ready = state === import_echo5.SpaceState.SPACE_READY;
1267
- const Root = role === "main" ? import_react_ui12.Main.Content : "div";
1268
- return /* @__PURE__ */ import_react17.default.createElement(import_react18.ClipboardProvider, null, /* @__PURE__ */ import_react17.default.createElement(Root, {
1228
+ const Root = role === "main" ? import_react_ui11.Main.Content : "div";
1229
+ return /* @__PURE__ */ import_react16.default.createElement(import_react17.ClipboardProvider, null, /* @__PURE__ */ import_react16.default.createElement(Root, {
1269
1230
  ...role === "main" ? {
1270
1231
  classNames: [
1271
- import_react_ui_theme5.topbarBlockPaddingStart,
1232
+ import_react_ui_theme4.topbarBlockPaddingStart,
1272
1233
  "min-bs-dvh",
1273
1234
  spaceMainLayout
1274
1235
  ]
1275
1236
  } : {
1276
1237
  role: "none",
1277
- className: (0, import_react_ui_theme5.mx)(import_react_ui_theme5.topbarBlockPaddingStart, "row-span-2", spaceMainLayout)
1238
+ className: (0, import_react_ui_theme4.mx)(import_react_ui_theme4.topbarBlockPaddingStart, "row-span-2", spaceMainLayout)
1278
1239
  },
1279
1240
  "data-testid": `spacePlugin.${role}`,
1280
1241
  "data-isready": ready ? "true" : "false"
1281
- }, ready && /* @__PURE__ */ import_react17.default.createElement(SpaceMembersSection, {
1242
+ }, ready && /* @__PURE__ */ import_react16.default.createElement(SpaceMembersSection, {
1282
1243
  space
1283
- }), /* @__PURE__ */ import_react17.default.createElement(KeyShortcuts, null)));
1244
+ }), /* @__PURE__ */ import_react16.default.createElement(KeyShortcuts, null)));
1284
1245
  };
1285
1246
  var REFRESH_INTERVAL = 5e3;
1286
1247
  var ACTIVITY_DURATION = 3e4;
1287
1248
  var noViewers = new import_util2.ComplexMap(import_react_client4.PublicKey.hash);
1288
1249
  var getName = (identity) => identity.profile?.displayName ?? (0, import_display_name.generateName)(identity.identityKey.toHex());
1289
1250
  var SpacePresence = ({ object, spaceKey }) => {
1290
- const spacePlugin = (0, import_app_framework8.usePlugin)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1251
+ const spacePlugin = (0, import_app_framework7.usePlugin)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1291
1252
  const client = (0, import_react_client4.useClient)();
1292
1253
  const identity = (0, import_halo.useIdentity)();
1293
1254
  const space = spaceKey ? client.spaces.get(spaceKey) : (0, import_echo7.getSpace)(object);
1294
1255
  const spaceMembers = (0, import_echo7.useMembers)(space?.key);
1295
- const [_moment, setMoment] = (0, import_react22.useState)(Date.now());
1296
- (0, import_react22.useEffect)(() => {
1256
+ const [_moment, setMoment] = (0, import_react21.useState)(Date.now());
1257
+ (0, import_react21.useEffect)(() => {
1297
1258
  const interval = setInterval(() => setMoment(Date.now()), REFRESH_INTERVAL);
1298
1259
  return () => clearInterval(interval);
1299
1260
  }, []);
1300
- const memberOnline = (0, import_react22.useCallback)((member) => member.presence === 1, []);
1301
- const memberIsNotSelf = (0, import_react22.useCallback)((member) => !identity?.identityKey.equals(member.identity.identityKey), [
1261
+ const memberOnline = (0, import_react21.useCallback)((member) => member.presence === 1, []);
1262
+ const memberIsNotSelf = (0, import_react21.useCallback)((member) => !identity?.identityKey.equals(member.identity.identityKey), [
1302
1263
  identity?.identityKey
1303
1264
  ]);
1304
1265
  if (!identity || !spacePlugin || !space) {
@@ -1316,61 +1277,61 @@ var SpacePresence = ({ object, spaceKey }) => {
1316
1277
  lastSeen
1317
1278
  };
1318
1279
  }).toSorted((a, b) => a.lastSeen - b.lastSeen);
1319
- return /* @__PURE__ */ import_react22.default.createElement(FullPresence, {
1280
+ return /* @__PURE__ */ import_react21.default.createElement(FullPresence, {
1320
1281
  members: membersForObject
1321
1282
  });
1322
1283
  };
1323
1284
  var FullPresence = (props) => {
1324
1285
  const { size = 9, onMemberClick } = props;
1325
- const members = (0, import_react_ui14.useDefaultValue)(props.members, () => []);
1286
+ const members = (0, import_react_ui13.useDefaultValue)(props.members, () => []);
1326
1287
  if (members.length === 0) {
1327
1288
  return null;
1328
1289
  }
1329
- return /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.AvatarGroup.Root, {
1290
+ return /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.AvatarGroup.Root, {
1330
1291
  size,
1331
1292
  classNames: "mbs-2 mie-4",
1332
1293
  "data-testid": "spacePlugin.presence"
1333
- }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Root, {
1294
+ }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Root, {
1334
1295
  key: member.identity.identityKey.toHex()
1335
- }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Trigger, null, /* @__PURE__ */ import_react22.default.createElement(PrensenceAvatar, {
1296
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Trigger, null, /* @__PURE__ */ import_react21.default.createElement(PrensenceAvatar, {
1336
1297
  identity: member.identity,
1337
1298
  group: true,
1338
1299
  match: member.currentlyAttended,
1339
1300
  index: members.length - i,
1340
1301
  onClick: () => onMemberClick?.(member)
1341
- })), /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Portal, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Content, {
1302
+ })), /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Portal, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Content, {
1342
1303
  side: "bottom"
1343
- }, /* @__PURE__ */ import_react22.default.createElement("span", null, getName(member.identity)), /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Arrow, null))))), members.length > 3 && /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Root, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Trigger, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.AvatarGroupItem.Root, {
1304
+ }, /* @__PURE__ */ import_react21.default.createElement("span", null, getName(member.identity)), /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Arrow, null))))), members.length > 3 && /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Root, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Trigger, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.AvatarGroupItem.Root, {
1344
1305
  status: "inactive"
1345
- }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Avatar.Frame, {
1306
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Avatar.Frame, {
1346
1307
  style: {
1347
1308
  zIndex: members.length - 4
1348
1309
  }
1349
- }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Avatar.Fallback, {
1310
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Avatar.Fallback, {
1350
1311
  text: `+${members.length - 3}`
1351
- })))), /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Portal, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Content, {
1312
+ })))), /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Portal, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Content, {
1352
1313
  side: "bottom"
1353
- }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Arrow, null), /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.List, {
1314
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Arrow, null), /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.List, {
1354
1315
  classNames: "max-h-56 overflow-y-auto"
1355
- }, members.map((member) => /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.ListItem.Root, {
1316
+ }, members.map((member) => /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.ListItem.Root, {
1356
1317
  key: member.identity.identityKey.toHex(),
1357
1318
  classNames: "flex gap-2 items-center cursor-pointer mbe-2",
1358
1319
  onClick: () => onMemberClick?.(member),
1359
1320
  "data-testid": "identity-list-item"
1360
- }, /* @__PURE__ */ import_react22.default.createElement(PrensenceAvatar, {
1321
+ }, /* @__PURE__ */ import_react21.default.createElement(PrensenceAvatar, {
1361
1322
  identity: member.identity,
1362
1323
  showName: true,
1363
1324
  match: member.currentlyAttended
1364
1325
  }))))))));
1365
1326
  };
1366
1327
  var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) => {
1367
- const Root = group ? import_react_ui14.AvatarGroupItem.Root : import_react_ui14.Avatar.Root;
1328
+ const Root = group ? import_react_ui13.AvatarGroupItem.Root : import_react_ui13.Avatar.Root;
1368
1329
  const status = match ? "current" : "active";
1369
1330
  const fallbackValue = (0, import_util2.keyToFallback)(identity.identityKey);
1370
- return /* @__PURE__ */ import_react22.default.createElement(Root, {
1331
+ return /* @__PURE__ */ import_react21.default.createElement(Root, {
1371
1332
  status,
1372
1333
  hue: identity.profile?.data?.hue || fallbackValue.hue
1373
- }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Avatar.Frame, {
1334
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Avatar.Frame, {
1374
1335
  "data-testid": "spacePlugin.presence.member",
1375
1336
  "data-status": status,
1376
1337
  ...index ? {
@@ -1379,9 +1340,9 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
1379
1340
  }
1380
1341
  } : {},
1381
1342
  onClick: () => onClick?.()
1382
- }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Avatar.Fallback, {
1343
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Avatar.Fallback, {
1383
1344
  text: identity.profile?.data?.emoji || fallbackValue.emoji
1384
- })), showName && /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Avatar.Label, {
1345
+ })), showName && /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Avatar.Label, {
1385
1346
  classNames: "text-sm truncate pli-2"
1386
1347
  }, getName(identity)));
1387
1348
  };
@@ -1390,8 +1351,8 @@ var SmallPresenceLive = ({ id, viewers }) => {
1390
1351
  const moment = Date.now();
1391
1352
  return Array.from(viewers2.values()).filter(({ lastSeen }) => moment - lastSeen < ACTIVITY_DURATION);
1392
1353
  };
1393
- const [activeViewers, setActiveViewers] = (0, import_react22.useState)(viewers ? getActiveViewers(viewers) : []);
1394
- (0, import_react22.useEffect)(() => {
1354
+ const [activeViewers, setActiveViewers] = (0, import_react21.useState)(viewers ? getActiveViewers(viewers) : []);
1355
+ (0, import_react21.useEffect)(() => {
1395
1356
  if (viewers) {
1396
1357
  setActiveViewers(getActiveViewers(viewers));
1397
1358
  const interval = setInterval(() => {
@@ -1402,38 +1363,38 @@ var SmallPresenceLive = ({ id, viewers }) => {
1402
1363
  }, [
1403
1364
  viewers
1404
1365
  ]);
1405
- return /* @__PURE__ */ import_react22.default.createElement(SmallPresence, {
1366
+ return /* @__PURE__ */ import_react21.default.createElement(SmallPresence, {
1406
1367
  id,
1407
1368
  count: activeViewers.length
1408
1369
  });
1409
1370
  };
1410
1371
  var SmallPresence = ({ id, count }) => {
1411
- const { t } = (0, import_react_ui14.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1372
+ const { t } = (0, import_react_ui13.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1412
1373
  const { hasAttention, isAncestor, isRelated } = (0, import_react_ui_attention.useAttention)(id);
1413
1374
  const attention = hasAttention || isAncestor || isRelated;
1414
- return /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Root, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Trigger, {
1375
+ return /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Root, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Trigger, {
1415
1376
  asChild: true
1416
- }, /* @__PURE__ */ import_react22.default.createElement("div", {
1377
+ }, /* @__PURE__ */ import_react21.default.createElement("div", {
1417
1378
  role: "none",
1418
1379
  className: "flex",
1419
1380
  "data-attention": attention
1420
- }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui_attention.AttentionGlyph, {
1381
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui_attention.AttentionGlyph, {
1421
1382
  presence: count > 1 ? "many" : count === 1 ? "one" : "none",
1422
1383
  classNames: "self-center mie-1"
1423
- }))), /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Portal, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Content, {
1384
+ }))), /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Portal, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Content, {
1424
1385
  side: "bottom",
1425
1386
  classNames: "z-[70]"
1426
- }, /* @__PURE__ */ import_react22.default.createElement("span", null, t("presence label", {
1387
+ }, /* @__PURE__ */ import_react21.default.createElement("span", null, t("presence label", {
1427
1388
  count
1428
- })), /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Arrow, null))));
1389
+ })), /* @__PURE__ */ import_react21.default.createElement(import_react_ui13.Tooltip.Arrow, null))));
1429
1390
  };
1430
1391
  var SpaceSettings = ({ settings }) => {
1431
- const { t } = (0, import_react_ui15.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1432
- const dispatch = (0, import_app_framework9.useIntentDispatcher)();
1433
- const plugins = (0, import_app_framework9.useResolvePlugins)(import_chunk_OTDRTHT4.parseSpaceInitPlugin);
1434
- return /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, /* @__PURE__ */ import_react23.default.createElement(import_react_ui_data.FormInput, {
1392
+ const { t } = (0, import_react_ui14.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1393
+ const dispatch = (0, import_app_framework8.useIntentDispatcher)();
1394
+ const plugins = (0, import_app_framework8.useResolvePlugins)(import_chunk_HTAM5LQD.parseSpaceInitPlugin);
1395
+ return /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui_data.DeprecatedFormInput, {
1435
1396
  label: t("show hidden spaces label")
1436
- }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Input.Switch, {
1397
+ }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Input.Switch, {
1437
1398
  checked: settings.showHidden,
1438
1399
  onCheckedChange: (checked) => dispatch({
1439
1400
  plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
@@ -1442,28 +1403,33 @@ var SpaceSettings = ({ settings }) => {
1442
1403
  state: !!checked
1443
1404
  }
1444
1405
  })
1445
- })), /* @__PURE__ */ import_react23.default.createElement(import_react_ui_data.FormInput, {
1406
+ })), /* @__PURE__ */ import_react22.default.createElement(import_react_ui_data.DeprecatedFormInput, {
1446
1407
  label: t("default on space create label")
1447
- }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Select.Root, {
1408
+ }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Select.Root, {
1448
1409
  value: settings.onSpaceCreate,
1449
1410
  onValueChange: (value) => {
1450
1411
  settings.onSpaceCreate = value;
1451
1412
  }
1452
- }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Select.TriggerButton, null), /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Select.Portal, null, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Select.Content, null, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Select.Viewport, null, plugins.map(({ provides: { space: { onSpaceCreate } } }) => /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Select.Option, {
1413
+ }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Select.TriggerButton, null), /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Select.Portal, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Select.Content, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Select.Viewport, null, plugins.map(({ provides: { space: { onSpaceCreate } } }) => /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Select.Option, {
1453
1414
  key: onSpaceCreate.action,
1454
1415
  value: onSpaceCreate.action
1455
- }, (0, import_react_ui15.toLocalizedString)(onSpaceCreate.label, t)))))))));
1416
+ }, (0, import_react_ui14.toLocalizedString)(onSpaceCreate.label, t)))))))));
1456
1417
  };
1457
1418
  var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SpaceSettingsPanel.tsx";
1458
1419
  var SpaceSettingsPanel = ({ space }) => {
1459
- const { t } = (0, import_react_ui16.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1460
- const [edgeReplication, setEdgeReplication] = (0, import_react24.useState)(space.internal.data.edgeReplication === import_metadata.EdgeReplicationSetting.ENABLED);
1461
- const toggleEdgeReplication = (0, import_react24.useCallback)(async (next) => {
1420
+ const { t } = (0, import_react_ui15.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1421
+ const client = (0, import_react_client5.useClient)();
1422
+ const devices = (0, import_halo2.useDevices)();
1423
+ const managedDeviceAvailable = devices.find((device) => device.profile?.type === import_halo2.DeviceType.AGENT_MANAGED);
1424
+ const edgeAgents = Boolean(client.config.values.runtime?.client?.edgeFeatures?.agents);
1425
+ const edgeReplicationAvailable = edgeAgents && managedDeviceAvailable;
1426
+ const [edgeReplication, setEdgeReplication] = (0, import_react23.useState)(space.internal.data.edgeReplication === import_metadata.EdgeReplicationSetting.ENABLED);
1427
+ const toggleEdgeReplication = (0, import_react23.useCallback)(async (next) => {
1462
1428
  setEdgeReplication(next);
1463
1429
  await space?.internal.setEdgeReplicationPreference(next ? import_metadata.EdgeReplicationSetting.ENABLED : import_metadata.EdgeReplicationSetting.DISABLED).catch((err) => {
1464
1430
  import_log3.log.catch(err, void 0, {
1465
1431
  F: __dxlog_file3,
1466
- L: 30,
1432
+ L: 38,
1467
1433
  S: void 0,
1468
1434
  C: (f, a) => f(...a)
1469
1435
  });
@@ -1472,43 +1438,113 @@ var SpaceSettingsPanel = ({ space }) => {
1472
1438
  }, [
1473
1439
  space
1474
1440
  ]);
1475
- return /* @__PURE__ */ import_react24.default.createElement("div", {
1441
+ return /* @__PURE__ */ import_react23.default.createElement("div", {
1476
1442
  role: "form",
1477
1443
  className: "flex flex-col w-full p-2 gap-4"
1478
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Input.Root, null, /* @__PURE__ */ import_react24.default.createElement("div", {
1444
+ }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Input.Root, null, /* @__PURE__ */ import_react23.default.createElement("div", {
1479
1445
  role: "none",
1480
1446
  className: "flex flex-col gap-1"
1481
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Input.Label, null, t("name label")), /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Input.TextInput, {
1447
+ }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Input.Label, null, t("name label")), /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Input.TextInput, {
1482
1448
  placeholder: t("name placeholder"),
1483
- value: space.properties.name,
1449
+ value: space.properties.name ?? "",
1484
1450
  onChange: (event) => {
1485
1451
  space.properties.name = event.target.value;
1486
1452
  }
1487
- }))), /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Input.Root, null, /* @__PURE__ */ import_react24.default.createElement("div", {
1453
+ }))), edgeReplicationAvailable && /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Input.Root, null, /* @__PURE__ */ import_react23.default.createElement("div", {
1488
1454
  role: "none",
1489
1455
  className: "flex justify-between"
1490
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Input.Label, null, t("edge replication label")), /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Input.Switch, {
1456
+ }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Input.Label, null, t("edge replication label")), /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Input.Switch, {
1491
1457
  checked: edgeReplication,
1492
1458
  onCheckedChange: toggleEdgeReplication
1493
1459
  }))));
1494
1460
  };
1495
- var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SaveStatus.tsx";
1496
- var SaveStatus = () => {
1497
- const { t } = (0, import_react_ui17.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1498
- const client = (0, import_react_client5.useClient)();
1499
- const [state, setState] = (0, import_react25.useState)("saved");
1461
+ var SYNC_STALLED_TIMEOUT = 5e3;
1462
+ var styles = {
1463
+ barBg: "bg-neutral-50 dark:bg-green-900 text-black",
1464
+ barFg: "bg-neutral-100 bg-green-500",
1465
+ barHover: "dark:hover:bg-green-500"
1466
+ };
1467
+ var useActive = (count) => {
1468
+ const [current, setCurrent] = (0, import_react25.useState)(count);
1469
+ const [active, setActive] = (0, import_react25.useState)(false);
1500
1470
  (0, import_react25.useEffect)(() => {
1501
- return createClientSaveTracker(client, (state2) => {
1502
- setState(state2);
1503
- });
1504
- }, []);
1505
- return /* @__PURE__ */ import_react25.default.createElement(import_plugin_status_bar.StatusBar.Item, {
1506
- title: state === "saving" ? t("saving label") : t("saved label")
1471
+ let t;
1472
+ if (count !== current) {
1473
+ setActive(true);
1474
+ setCurrent(count);
1475
+ t && clearTimeout(t);
1476
+ t = setTimeout(() => {
1477
+ setActive(false);
1478
+ }, SYNC_STALLED_TIMEOUT);
1479
+ }
1480
+ return () => {
1481
+ setActive(false);
1482
+ clearTimeout(t);
1483
+ };
1484
+ }, [
1485
+ count,
1486
+ current
1487
+ ]);
1488
+ return active;
1489
+ };
1490
+ var SpaceRow = ({ spaceId, state: { localDocumentCount, remoteDocumentCount, missingOnLocal, missingOnRemote } }) => {
1491
+ const downActive = useActive(localDocumentCount);
1492
+ const upActive = useActive(remoteDocumentCount);
1493
+ return /* @__PURE__ */ import_react25.default.createElement("div", {
1494
+ className: (0, import_react_ui_theme7.mx)("flex items-center mx-[2px] gap-[2px] cursor-pointer", styles.barHover),
1495
+ title: spaceId,
1496
+ onClick: () => {
1497
+ void navigator.clipboard.writeText(spaceId);
1498
+ }
1507
1499
  }, /* @__PURE__ */ import_react25.default.createElement(import_react_ui17.Icon, {
1508
- icon: state === "saving" ? "ph--arrows-clockwise--regular" : "ph--check-circle--regular",
1509
- size: 4
1500
+ icon: "ph--arrow-fat-line-left--regular",
1501
+ size: 3,
1502
+ classNames: (0, import_react_ui_theme7.mx)(downActive && "animate-[pulse_1s_infinite]")
1503
+ }), /* @__PURE__ */ import_react25.default.createElement(Candle, {
1504
+ up: {
1505
+ count: remoteDocumentCount,
1506
+ total: remoteDocumentCount + missingOnRemote
1507
+ },
1508
+ down: {
1509
+ count: localDocumentCount,
1510
+ total: localDocumentCount + missingOnLocal
1511
+ },
1512
+ title: spaceId
1513
+ }), /* @__PURE__ */ import_react25.default.createElement(import_react_ui17.Icon, {
1514
+ icon: "ph--arrow-fat-line-right--regular",
1515
+ size: 3,
1516
+ classNames: (0, import_react_ui_theme7.mx)(upActive && "animate-[pulse_1s_step-start_infinite]")
1510
1517
  }));
1511
1518
  };
1519
+ var Candle = ({ classNames, up, down }) => {
1520
+ return /* @__PURE__ */ import_react25.default.createElement("div", {
1521
+ className: (0, import_react_ui_theme7.mx)("grid grid-cols-[1fr_2rem_1fr] w-full h-3", classNames)
1522
+ }, /* @__PURE__ */ import_react25.default.createElement(Bar, {
1523
+ classNames: "justify-end",
1524
+ ...up
1525
+ }), /* @__PURE__ */ import_react25.default.createElement("div", {
1526
+ className: "relative"
1527
+ }, /* @__PURE__ */ import_react25.default.createElement("div", {
1528
+ className: (0, import_react_ui_theme7.mx)("absolute inset-0 flex items-center justify-center text-xs", styles.barBg)
1529
+ }, up.total)), /* @__PURE__ */ import_react25.default.createElement(Bar, down));
1530
+ };
1531
+ var Bar = ({ classNames, count, total }) => {
1532
+ let p = count / total * 100;
1533
+ if (count < total) {
1534
+ p = Math.min(p, 95);
1535
+ }
1536
+ return /* @__PURE__ */ import_react25.default.createElement("div", {
1537
+ className: (0, import_react_ui_theme7.mx)("relative flex w-full", styles.barBg, classNames)
1538
+ }, /* @__PURE__ */ import_react25.default.createElement("div", {
1539
+ className: (0, import_react_ui_theme7.mx)("shrink-0", styles.barFg),
1540
+ style: {
1541
+ width: `${p}%`
1542
+ }
1543
+ }), count !== total && /* @__PURE__ */ import_react25.default.createElement("div", {
1544
+ className: "absolute top-0 bottom-0 flex items-center mx-0.5 text-black text-xs"
1545
+ }, count));
1546
+ };
1547
+ var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/save-tracker.ts";
1512
1548
  var createClientSaveTracker = (client, cb) => {
1513
1549
  const unsubscribeCallbacks = {};
1514
1550
  const state = {};
@@ -1537,7 +1573,7 @@ var createClientSaveTracker = (client, cb) => {
1537
1573
  var createSpaceSaveTracker = (space, cb) => {
1538
1574
  const ctx = new import_context.Context(void 0, {
1539
1575
  F: __dxlog_file4,
1540
- L: 64
1576
+ L: 40
1541
1577
  });
1542
1578
  void space.waitUntilReady().then(() => {
1543
1579
  if (ctx.disposed) {
@@ -1567,7 +1603,34 @@ var createSpaceSaveTracker = (space, cb) => {
1567
1603
  void ctx.dispose();
1568
1604
  };
1569
1605
  };
1570
- var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/types.ts";
1606
+ var getStatus = ({ offline, saved, needsToUpload, needsToDownload }) => {
1607
+ if (!saved) {
1608
+ return "saving locally";
1609
+ } else if (!offline && needsToDownload) {
1610
+ return "downloading";
1611
+ } else if (!offline && needsToUpload) {
1612
+ return "uploading";
1613
+ } else if (offline && !needsToUpload && !needsToDownload) {
1614
+ return "offline persisted";
1615
+ } else {
1616
+ return "remote synced";
1617
+ }
1618
+ };
1619
+ var getIcon = (status) => {
1620
+ switch (status) {
1621
+ case "saving locally":
1622
+ return "ph--download--regular";
1623
+ case "downloading":
1624
+ return "ph--cloud-arrow-down--regular";
1625
+ case "uploading":
1626
+ return "ph--cloud-arrow-up--regular";
1627
+ case "offline persisted":
1628
+ return "ph--check-circle--regular";
1629
+ case "remote synced":
1630
+ return "ph--cloud-check--regular";
1631
+ }
1632
+ };
1633
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/sync-state.ts";
1571
1634
  var createEmptyEdgeSyncState = () => ({
1572
1635
  missingOnLocal: 0,
1573
1636
  missingOnRemote: 0,
@@ -1587,9 +1650,9 @@ var getSyncSummary = (syncMap) => {
1587
1650
  };
1588
1651
  var isEdgePeerId = (peerId, spaceId) => peerId.startsWith(`${import_protocols.EdgeService.AUTOMERGE_REPLICATOR}:${spaceId}`);
1589
1652
  var useSyncState = () => {
1590
- const client = (0, import_react_client6.useClient)();
1591
- const [spaceState, setSpaceState] = (0, import_react27.useState)({});
1592
- (0, import_react27.useEffect)(() => {
1653
+ const client = (0, import_react_client7.useClient)();
1654
+ const [spaceState, setSpaceState] = (0, import_react26.useState)({});
1655
+ (0, import_react26.useEffect)(() => {
1593
1656
  const ctx = new import_context2.Context(void 0, {
1594
1657
  F: __dxlog_file5,
1595
1658
  L: 48
@@ -1622,146 +1685,86 @@ var useSyncState = () => {
1622
1685
  ]);
1623
1686
  return spaceState;
1624
1687
  };
1625
- var SYNC_STALLED_TIMEOUT = 5e3;
1626
- var styles = {
1627
- barBg: "bg-neutral-50 dark:bg-green-900 text-black",
1628
- barFg: "bg-neutral-100 bg-green-500",
1629
- barHover: "dark:hover:bg-green-500"
1630
- };
1631
1688
  var SyncStatus = () => {
1689
+ const client = (0, import_react_client6.useClient)();
1632
1690
  const state = useSyncState();
1633
- return /* @__PURE__ */ import_react26.default.createElement(SyncStatusIndicator, {
1634
- state
1691
+ const [saved, setSaved] = (0, import_react24.useState)(true);
1692
+ (0, import_react24.useEffect)(() => {
1693
+ return createClientSaveTracker(client, (state2) => {
1694
+ setSaved(state2 === "saved");
1695
+ });
1696
+ }, []);
1697
+ return /* @__PURE__ */ import_react24.default.createElement(SyncStatusIndicator, {
1698
+ state,
1699
+ saved
1635
1700
  });
1636
1701
  };
1637
- var SyncStatusIndicator = ({ state }) => {
1702
+ var SyncStatusIndicator = ({ state, saved }) => {
1703
+ const { t } = (0, import_react_ui16.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1638
1704
  const summary = getSyncSummary(state);
1639
- const offline = false;
1705
+ const offline = Object.values(state).length === 0;
1640
1706
  const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
1641
1707
  const needsToDownload = summary.differentDocuments > 0 || summary.missingOnLocal > 0;
1642
- const [classNames, setClassNames] = (0, import_react26.useState)();
1643
- (0, import_react26.useEffect)(() => {
1708
+ const status = getStatus({
1709
+ offline,
1710
+ saved,
1711
+ needsToUpload,
1712
+ needsToDownload
1713
+ });
1714
+ const [classNames, setClassNames] = (0, import_react24.useState)();
1715
+ (0, import_react24.useEffect)(() => {
1644
1716
  setClassNames(void 0);
1645
- if (!needsToUpload && !needsToDownload) {
1717
+ if (offline || !needsToUpload && !needsToDownload) {
1646
1718
  return;
1647
1719
  }
1648
- const t = setTimeout(() => {
1720
+ const t2 = setTimeout(() => {
1649
1721
  setClassNames("text-orange-500");
1650
1722
  }, SYNC_STALLED_TIMEOUT);
1651
- return () => clearTimeout(t);
1723
+ return () => clearTimeout(t2);
1652
1724
  }, [
1725
+ offline,
1653
1726
  needsToUpload,
1654
1727
  needsToDownload
1655
1728
  ]);
1656
- return /* @__PURE__ */ import_react26.default.createElement(import_plugin_status_bar2.StatusBar.Item, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui18.Popover.Root, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui18.Popover.Trigger, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui18.Icon, {
1657
- icon: offline ? "ph--cloud-x--regular" : needsToUpload ? "ph--cloud-arrow-up--regular" : needsToDownload ? "ph--cloud-arrow-down--regular" : "ph--cloud-check--regular",
1729
+ const title = t(`${status} label`);
1730
+ const icon = /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Icon, {
1731
+ icon: getIcon(status),
1658
1732
  size: 4,
1659
1733
  classNames
1660
- })), /* @__PURE__ */ import_react26.default.createElement(import_react_ui18.Popover.Content, {
1661
- sideOffset: 16
1662
- }, /* @__PURE__ */ import_react26.default.createElement(SyncStatusDetail, {
1663
- state,
1664
- summary,
1665
- debug: false
1666
- }))));
1734
+ });
1735
+ if (offline) {
1736
+ return /* @__PURE__ */ import_react24.default.createElement(import_plugin_status_bar.StatusBar.Item, {
1737
+ title
1738
+ }, icon);
1739
+ } else {
1740
+ return /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Popover.Root, null, /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Popover.Trigger, {
1741
+ asChild: true
1742
+ }, /* @__PURE__ */ import_react24.default.createElement(import_plugin_status_bar.StatusBar.Button, {
1743
+ title
1744
+ }, icon)), /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Popover.Portal, null, /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Popover.Content, {
1745
+ sideOffset: 16
1746
+ }, /* @__PURE__ */ import_react24.default.createElement(SyncStatusDetail, {
1747
+ state,
1748
+ summary,
1749
+ debug: false
1750
+ }))));
1751
+ }
1667
1752
  };
1668
1753
  var SyncStatusDetail = ({ classNames, state, summary, debug }) => {
1669
- const { t } = (0, import_react_ui18.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1754
+ const { t } = (0, import_react_ui16.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1670
1755
  const entries = Object.entries(state).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
1671
- return /* @__PURE__ */ import_react26.default.createElement("div", {
1672
- className: (0, import_react_ui_theme7.mx)("flex flex-col text-xs min-w-[16rem]", classNames)
1673
- }, /* @__PURE__ */ import_react26.default.createElement("h1", {
1674
- className: "p-2"
1675
- }, t("sync status title")), /* @__PURE__ */ import_react26.default.createElement("div", {
1676
- className: "flex flex-col gap-[2px] my-[2px]"
1677
- }, entries.map(([spaceId, state2]) => /* @__PURE__ */ import_react26.default.createElement(SpaceRow, {
1756
+ return /* @__PURE__ */ import_react24.default.createElement("div", {
1757
+ className: (0, import_react_ui_theme6.mx)("flex flex-col gap-3 p-2 text-xs min-w-[16rem]", classNames)
1758
+ }, /* @__PURE__ */ import_react24.default.createElement("h1", null, t("sync status title")), /* @__PURE__ */ import_react24.default.createElement("div", {
1759
+ className: "flex flex-col gap-2"
1760
+ }, entries.map(([spaceId, state2]) => /* @__PURE__ */ import_react24.default.createElement(SpaceRow, {
1678
1761
  key: spaceId,
1679
1762
  spaceId,
1680
1763
  state: state2
1681
- }))), debug && /* @__PURE__ */ import_react26.default.createElement(import_react_ui_syntax_highlighter.SyntaxHighlighter, {
1764
+ }))), debug && /* @__PURE__ */ import_react24.default.createElement(import_react_ui_syntax_highlighter.SyntaxHighlighter, {
1682
1765
  language: "json"
1683
1766
  }, JSON.stringify(summary, null, 2)));
1684
1767
  };
1685
- var useActive = (count) => {
1686
- const [current, setCurrent] = (0, import_react26.useState)(count);
1687
- const [active, setActive] = (0, import_react26.useState)(false);
1688
- (0, import_react26.useEffect)(() => {
1689
- let t;
1690
- if (count !== current) {
1691
- setActive(true);
1692
- setCurrent(count);
1693
- t && clearTimeout(t);
1694
- t = setTimeout(() => {
1695
- setActive(false);
1696
- }, SYNC_STALLED_TIMEOUT);
1697
- }
1698
- return () => {
1699
- setActive(false);
1700
- clearTimeout(t);
1701
- };
1702
- }, [
1703
- count,
1704
- current
1705
- ]);
1706
- return active;
1707
- };
1708
- var SpaceRow = ({ spaceId, state: { localDocumentCount, remoteDocumentCount, missingOnLocal, missingOnRemote } }) => {
1709
- const downActive = useActive(localDocumentCount);
1710
- const upActive = useActive(remoteDocumentCount);
1711
- return /* @__PURE__ */ import_react26.default.createElement("div", {
1712
- className: (0, import_react_ui_theme7.mx)("flex items-center mx-[2px] gap-[2px] cursor-pointer", styles.barHover),
1713
- title: spaceId,
1714
- onClick: () => {
1715
- void navigator.clipboard.writeText(spaceId);
1716
- }
1717
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui18.Icon, {
1718
- icon: "ph--arrow-fat-line-left--regular",
1719
- size: 3,
1720
- classNames: (0, import_react_ui_theme7.mx)(downActive && "animate-[pulse_1s_infinite]")
1721
- }), /* @__PURE__ */ import_react26.default.createElement(Candle, {
1722
- up: {
1723
- count: remoteDocumentCount,
1724
- total: remoteDocumentCount + missingOnRemote
1725
- },
1726
- down: {
1727
- count: localDocumentCount,
1728
- total: localDocumentCount + missingOnLocal
1729
- },
1730
- title: spaceId
1731
- }), /* @__PURE__ */ import_react26.default.createElement(import_react_ui18.Icon, {
1732
- icon: "ph--arrow-fat-line-right--regular",
1733
- size: 3,
1734
- classNames: (0, import_react_ui_theme7.mx)(upActive && "animate-[pulse_1s_step-start_infinite]")
1735
- }));
1736
- };
1737
- var Candle = ({ classNames, up, down }) => {
1738
- return /* @__PURE__ */ import_react26.default.createElement("div", {
1739
- className: (0, import_react_ui_theme7.mx)("grid grid-cols-[1fr_2rem_1fr] w-full h-3", classNames)
1740
- }, /* @__PURE__ */ import_react26.default.createElement(Bar, {
1741
- classNames: "justify-end",
1742
- ...up
1743
- }), /* @__PURE__ */ import_react26.default.createElement("div", {
1744
- className: "relative"
1745
- }, /* @__PURE__ */ import_react26.default.createElement("div", {
1746
- className: (0, import_react_ui_theme7.mx)("absolute inset-0 flex items-center justify-center text-xs", styles.barBg)
1747
- }, up.total)), /* @__PURE__ */ import_react26.default.createElement(Bar, down));
1748
- };
1749
- var Bar = ({ classNames, count, total }) => {
1750
- let p = count / total * 100;
1751
- if (count < total) {
1752
- p = Math.min(p, 95);
1753
- }
1754
- return /* @__PURE__ */ import_react26.default.createElement("div", {
1755
- className: (0, import_react_ui_theme7.mx)("relative flex w-full", styles.barBg, classNames)
1756
- }, /* @__PURE__ */ import_react26.default.createElement("div", {
1757
- className: (0, import_react_ui_theme7.mx)("shrink-0", styles.barFg),
1758
- style: {
1759
- width: `${p}%`
1760
- }
1761
- }), count !== total && /* @__PURE__ */ import_react26.default.createElement("div", {
1762
- className: "absolute top-0 bottom-0 flex items-center mx-0.5 text-black text-xs"
1763
- }, count));
1764
- };
1765
1768
  var translations_default = [
1766
1769
  {
1767
1770
  "en-US": {
@@ -1848,14 +1851,19 @@ var translations_default = [
1848
1851
  "name label": "Name",
1849
1852
  "name placeholder": "Name",
1850
1853
  "unnamed object settings label": "Settings",
1851
- "edge replication label": "Enable EDGE Replication"
1854
+ "edge replication label": "Enable EDGE Replication",
1855
+ "saving locally label": "Writing to disk",
1856
+ "downloading label": "Replicating from peers",
1857
+ "uploading label": "Replicating to peers",
1858
+ "offline persisted label": "Saved to disk (offline)",
1859
+ "remote synced label": "Synced with peers",
1860
+ "open settings panel label": "Show Settings"
1852
1861
  }
1853
1862
  }
1854
1863
  }
1855
1864
  ];
1856
1865
  var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/SpacePlugin.tsx";
1857
1866
  var ACTIVE_NODE_BROADCAST_INTERVAL = 3e4;
1858
- var OBJECT_ID_LENGTH = 60;
1859
1867
  var SPACE_MAX_OBJECTS = 500;
1860
1868
  var DIRECTORY_TYPE = "text/directory";
1861
1869
  var parseSpacePlugin = (plugin) => Array.isArray(plugin?.provides.space?.enabled) ? plugin : void 0;
@@ -1875,15 +1883,20 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1875
1883
  const spaceSubscriptions = new import_async.EventSubscriptions();
1876
1884
  const graphSubscriptions = /* @__PURE__ */ new Map();
1877
1885
  let clientPlugin;
1886
+ let graphPlugin;
1878
1887
  let intentPlugin;
1888
+ let layoutPlugin;
1879
1889
  let navigationPlugin;
1880
1890
  let attentionPlugin;
1881
1891
  const onSpaceReady = async () => {
1882
- if (!clientPlugin || !navigationPlugin || !attentionPlugin) {
1892
+ if (!clientPlugin || !intentPlugin || !graphPlugin || !navigationPlugin || !layoutPlugin || !attentionPlugin) {
1883
1893
  return;
1884
1894
  }
1885
1895
  const client = clientPlugin.provides.client;
1896
+ const dispatch = intentPlugin.provides.intent.dispatch;
1897
+ const graph = graphPlugin.provides.graph;
1886
1898
  const location = navigationPlugin.provides.location;
1899
+ const layout = layoutPlugin.provides.layout;
1887
1900
  const attention = attentionPlugin.provides.attention;
1888
1901
  const defaultSpace = client.spaces.default;
1889
1902
  if (typeof defaultSpace.properties[COMPOSER_SPACE_LOCK] !== "boolean") {
@@ -1898,6 +1911,24 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1898
1911
  order: []
1899
1912
  }));
1900
1913
  }
1914
+ subscriptions.add((0, import_core.scheduledEffect)(() => ({
1915
+ layoutMode: layout.layoutMode,
1916
+ soloPart: location.active.solo?.[0]
1917
+ }), ({ layoutMode, soloPart }) => {
1918
+ if (layoutMode !== "solo" || !soloPart) {
1919
+ return;
1920
+ }
1921
+ const node = graph.findNode(soloPart.id);
1922
+ if (!node && soloPart.id.length === import_echo.FQ_ID_LENGTH) {
1923
+ void dispatch({
1924
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
1925
+ action: import_chunk_P4XUXM7Y.SpaceAction.WAIT_FOR_OBJECT,
1926
+ data: {
1927
+ id: soloPart.id
1928
+ }
1929
+ });
1930
+ }
1931
+ }));
1901
1932
  subscriptions.add(client.spaces.subscribe(async (spaces) => {
1902
1933
  if (defaultSpace.state.get() === import_echo.SpaceState.SPACE_REQUIRES_MIGRATION) {
1903
1934
  await defaultSpace.internal.migrate();
@@ -1945,7 +1976,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1945
1976
  err: err.message
1946
1977
  }, {
1947
1978
  F: __dxlog_file6,
1948
- L: 231,
1979
+ L: 257,
1949
1980
  S: void 0,
1950
1981
  C: (f, a) => f(...a)
1951
1982
  });
@@ -2003,6 +2034,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2003
2034
  key: "spaceNames",
2004
2035
  type: import_local_storage.LocalStorageStore.json()
2005
2036
  });
2037
+ graphPlugin = (0, import_app_framework.resolvePlugin)(plugins, import_app_framework.parseGraphPlugin);
2038
+ layoutPlugin = (0, import_app_framework.resolvePlugin)(plugins, import_app_framework.parseLayoutPlugin);
2006
2039
  navigationPlugin = (0, import_app_framework.resolvePlugin)(plugins, import_app_framework.parseNavigationPlugin);
2007
2040
  attentionPlugin = (0, import_app_framework.resolvePlugin)(plugins, import_plugin_attention.parseAttentionPlugin);
2008
2041
  clientPlugin = (0, import_app_framework.resolvePlugin)(plugins, import_plugin_client.parseClientPlugin);
@@ -2014,7 +2047,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2014
2047
  const dispatch = intentPlugin.provides.intent.dispatch;
2015
2048
  const handleFirstRun = async () => {
2016
2049
  const defaultSpace = client.spaces.default;
2017
- defaultSpace.properties[import_chunk_OTDRTHT4.CollectionType.typename] = (0, import_echo.create)(import_chunk_OTDRTHT4.CollectionType, {
2050
+ defaultSpace.properties[import_chunk_HTAM5LQD.CollectionType.typename] = (0, import_echo.create)(import_chunk_HTAM5LQD.CollectionType, {
2018
2051
  objects: [],
2019
2052
  views: {}
2020
2053
  });
@@ -2026,7 +2059,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2026
2059
  dispatch
2027
2060
  });
2028
2061
  };
2029
- client.spaces.isReady.subscribe(async (ready) => {
2062
+ subscriptions.add(client.spaces.isReady.subscribe(async (ready) => {
2030
2063
  if (ready) {
2031
2064
  await clientPlugin?.provides.client.spaces.default.waitUntilReady();
2032
2065
  if (firstRun) {
@@ -2036,7 +2069,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2036
2069
  }
2037
2070
  await onSpaceReady();
2038
2071
  }
2039
- });
2072
+ }).unsubscribe);
2040
2073
  },
2041
2074
  unload: async () => {
2042
2075
  settings.close();
@@ -2052,12 +2085,26 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2052
2085
  ...translations_default,
2053
2086
  import_react2.osTranslations
2054
2087
  ],
2088
+ complementary: {
2089
+ panels: [
2090
+ {
2091
+ id: "settings",
2092
+ label: [
2093
+ "open settings panel label",
2094
+ {
2095
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
2096
+ }
2097
+ ],
2098
+ icon: "ph--gear--regular"
2099
+ }
2100
+ ]
2101
+ },
2055
2102
  root: () => state.values.awaiting ? /* @__PURE__ */ import_react.default.createElement(AwaitingObject, {
2056
2103
  id: state.values.awaiting
2057
2104
  }) : null,
2058
2105
  metadata: {
2059
2106
  records: {
2060
- [import_chunk_OTDRTHT4.CollectionType.typename]: {
2107
+ [import_chunk_HTAM5LQD.CollectionType.typename]: {
2061
2108
  placeholder: [
2062
2109
  "unnamed collection label",
2063
2110
  {
@@ -2075,30 +2122,26 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2075
2122
  },
2076
2123
  echo: {
2077
2124
  schema: [
2078
- import_chunk_OTDRTHT4.CollectionType
2125
+ import_chunk_HTAM5LQD.CollectionType
2079
2126
  ]
2080
2127
  },
2081
2128
  surface: {
2082
2129
  component: ({ data, role, ...rest }) => {
2083
- const primary = data.active ?? data.object;
2084
2130
  switch (role) {
2085
2131
  case "article":
2086
- case "main":
2087
- return (0, import_echo.isSpace)(primary) && primary.state.get() === import_echo.SpaceState.SPACE_READY ? /* @__PURE__ */ import_react.default.createElement(import_app_framework.Surface, {
2132
+ return (0, import_echo.isSpace)(data.object) && data.object.state.get() === import_echo.SpaceState.SPACE_READY ? /* @__PURE__ */ import_react.default.createElement(import_app_framework.Surface, {
2088
2133
  data: {
2089
- active: primary.properties[import_chunk_OTDRTHT4.CollectionType.typename],
2090
- id: primary.id
2134
+ object: data.object.properties[import_chunk_HTAM5LQD.CollectionType.typename],
2135
+ id: data.object.id
2091
2136
  },
2092
2137
  role,
2093
2138
  ...rest
2094
- }) : primary instanceof import_chunk_OTDRTHT4.CollectionType ? {
2139
+ }) : data.object instanceof import_chunk_HTAM5LQD.CollectionType ? {
2095
2140
  node: /* @__PURE__ */ import_react.default.createElement(CollectionMain, {
2096
- collection: primary
2141
+ collection: data.object
2097
2142
  }),
2098
2143
  disposition: "fallback"
2099
- } : typeof primary === "string" && primary.length === OBJECT_ID_LENGTH ? /* @__PURE__ */ import_react.default.createElement(MissingObject, {
2100
- id: primary
2101
- }) : null;
2144
+ } : null;
2102
2145
  case "complementary--settings":
2103
2146
  return (0, import_echo.isSpace)(data.subject) ? /* @__PURE__ */ import_react.default.createElement(SpaceSettingsPanel, {
2104
2147
  space: data.subject
@@ -2147,7 +2190,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2147
2190
  return null;
2148
2191
  }
2149
2192
  const space = (0, import_echo.isSpace)(data.object) ? data.object : (0, import_echo.getSpace)(data.object);
2150
- const object = (0, import_echo.isSpace)(data.object) ? data.object.state.get() === import_echo.SpaceState.SPACE_READY ? space?.properties[import_chunk_OTDRTHT4.CollectionType.typename] : void 0 : data.object;
2193
+ const object = (0, import_echo.isSpace)(data.object) ? data.object.state.get() === import_echo.SpaceState.SPACE_READY ? space?.properties[import_chunk_HTAM5LQD.CollectionType.typename] : void 0 : data.object;
2151
2194
  return space && object ? {
2152
2195
  node: /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(SpacePresence, {
2153
2196
  object
@@ -2158,7 +2201,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2158
2201
  } : null;
2159
2202
  }
2160
2203
  case "section":
2161
- return data.object instanceof import_chunk_OTDRTHT4.CollectionType ? /* @__PURE__ */ import_react.default.createElement(CollectionSection, {
2204
+ return data.object instanceof import_chunk_HTAM5LQD.CollectionType ? /* @__PURE__ */ import_react.default.createElement(CollectionSection, {
2162
2205
  collection: data.object
2163
2206
  }) : null;
2164
2207
  case "settings":
@@ -2174,7 +2217,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2174
2217
  return null;
2175
2218
  }
2176
2219
  case "status": {
2177
- return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(SyncStatus, null), /* @__PURE__ */ import_react.default.createElement(SaveStatus, null));
2220
+ return /* @__PURE__ */ import_react.default.createElement(SyncStatus, null);
2178
2221
  }
2179
2222
  default:
2180
2223
  return null;
@@ -2185,11 +2228,11 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2185
2228
  builder: (plugins) => {
2186
2229
  const clientPlugin2 = (0, import_app_framework.resolvePlugin)(plugins, import_plugin_client.parseClientPlugin);
2187
2230
  const metadataPlugin = (0, import_app_framework.resolvePlugin)(plugins, import_app_framework.parseMetadataResolverPlugin);
2188
- const graphPlugin = (0, import_app_framework.resolvePlugin)(plugins, import_app_framework.parseGraphPlugin);
2231
+ const graphPlugin2 = (0, import_app_framework.resolvePlugin)(plugins, import_app_framework.parseGraphPlugin);
2189
2232
  const client = clientPlugin2?.provides.client;
2190
2233
  const dispatch = intentPlugin?.provides.intent.dispatch;
2191
2234
  const resolve = metadataPlugin?.provides.metadata.resolver;
2192
- const graph = graphPlugin?.provides.graph;
2235
+ const graph = graphPlugin2?.provides.graph;
2193
2236
  if (!client || !dispatch || !resolve || !graph) {
2194
2237
  return [];
2195
2238
  }
@@ -2235,7 +2278,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2235
2278
  } else {
2236
2279
  import_log.log.warn("spaces order object not found", void 0, {
2237
2280
  F: __dxlog_file6,
2238
- L: 528,
2281
+ L: 553,
2239
2282
  S: void 0,
2240
2283
  C: (f, a) => f(...a)
2241
2284
  });
@@ -2387,7 +2430,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2387
2430
  if (state2 !== import_echo.SpaceState.SPACE_READY) {
2388
2431
  return;
2389
2432
  }
2390
- const collection = space.properties[import_chunk_OTDRTHT4.CollectionType.typename];
2433
+ const collection = space.properties[import_chunk_HTAM5LQD.CollectionType.typename];
2391
2434
  if (!collection) {
2392
2435
  return;
2393
2436
  }
@@ -2414,7 +2457,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2414
2457
  // Create nodes for objects in collections.
2415
2458
  (0, import_plugin_graph.createExtension)({
2416
2459
  id: `${import_chunk_P4XUXM7Y.SPACE_PLUGIN}/collection-objects`,
2417
- filter: (node) => node.data instanceof import_chunk_OTDRTHT4.CollectionType,
2460
+ filter: (node) => node.data instanceof import_chunk_HTAM5LQD.CollectionType,
2418
2461
  connector: ({ node }) => {
2419
2462
  const collection = node.data;
2420
2463
  const space = (0, import_echo.getSpace)(collection);
@@ -2533,7 +2576,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2533
2576
  }
2534
2577
  },
2535
2578
  {
2536
- inputType: import_chunk_OTDRTHT4.CollectionType.typename,
2579
+ inputType: import_chunk_HTAM5LQD.CollectionType.typename,
2537
2580
  outputType: DIRECTORY_TYPE,
2538
2581
  serialize: (node) => ({
2539
2582
  name: node.data.name ?? translations_default[0]["en-US"][import_chunk_P4XUXM7Y.SPACE_PLUGIN]["unnamed collection label"],
@@ -2542,7 +2585,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2542
2585
  }),
2543
2586
  deserialize: async (data, ancestors) => {
2544
2587
  const space = ancestors.find(import_echo.isSpace);
2545
- const collection = ancestors.findLast((ancestor) => ancestor instanceof import_chunk_OTDRTHT4.CollectionType) ?? space?.properties[import_chunk_OTDRTHT4.CollectionType.typename];
2588
+ const collection = ancestors.findLast((ancestor) => ancestor instanceof import_chunk_HTAM5LQD.CollectionType) ?? space?.properties[import_chunk_HTAM5LQD.CollectionType.typename];
2546
2589
  if (!space || !collection) {
2547
2590
  return;
2548
2591
  }
@@ -2551,7 +2594,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2551
2594
  action: import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT,
2552
2595
  data: {
2553
2596
  target: collection,
2554
- object: (0, import_echo.create)(import_chunk_OTDRTHT4.CollectionType, {
2597
+ object: (0, import_echo.create)(import_chunk_HTAM5LQD.CollectionType, {
2555
2598
  name: data.name,
2556
2599
  objects: [],
2557
2600
  views: {}
@@ -2581,11 +2624,11 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2581
2624
  }
2582
2625
  const space = await client.spaces.create(intent.data);
2583
2626
  await space.waitUntilReady();
2584
- const collection = (0, import_echo.create)(import_chunk_OTDRTHT4.CollectionType, {
2627
+ const collection = (0, import_echo.create)(import_chunk_HTAM5LQD.CollectionType, {
2585
2628
  objects: [],
2586
2629
  views: {}
2587
2630
  });
2588
- space.properties[import_chunk_OTDRTHT4.CollectionType.typename] = collection;
2631
+ space.properties[import_chunk_HTAM5LQD.CollectionType.typename] = collection;
2589
2632
  if (import_migrations.Migrations.versionProperty) {
2590
2633
  space.properties[import_migrations.Migrations.versionProperty] = import_migrations.Migrations.targetVersion;
2591
2634
  }
@@ -2877,20 +2920,20 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2877
2920
  ]
2878
2921
  };
2879
2922
  }
2880
- if (intent.data?.target instanceof import_chunk_OTDRTHT4.CollectionType) {
2923
+ if (intent.data?.target instanceof import_chunk_HTAM5LQD.CollectionType) {
2881
2924
  intent.data?.target.objects.push(object);
2882
2925
  } else if ((0, import_echo.isSpace)(intent.data?.target)) {
2883
- const collection = space.properties[import_chunk_OTDRTHT4.CollectionType.typename];
2884
- if (collection instanceof import_chunk_OTDRTHT4.CollectionType) {
2926
+ const collection = space.properties[import_chunk_HTAM5LQD.CollectionType.typename];
2927
+ if (collection instanceof import_chunk_HTAM5LQD.CollectionType) {
2885
2928
  collection.objects.push(object);
2886
2929
  } else {
2887
- const collection2 = (0, import_echo.create)(import_chunk_OTDRTHT4.CollectionType, {
2930
+ const collection2 = (0, import_echo.create)(import_chunk_HTAM5LQD.CollectionType, {
2888
2931
  objects: [
2889
2932
  object
2890
2933
  ],
2891
2934
  views: {}
2892
2935
  });
2893
- space.properties[import_chunk_OTDRTHT4.CollectionType.typename] = collection2;
2936
+ space.properties[import_chunk_HTAM5LQD.CollectionType.typename] = collection2;
2894
2937
  }
2895
2938
  }
2896
2939
  return {
@@ -2930,12 +2973,12 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2930
2973
  const activeParts = navigationPlugin?.provides.location.active;
2931
2974
  const openObjectIds = new Set((0, import_app_framework.openIds)(activeParts ?? {}));
2932
2975
  if (!intent.undo && resolve) {
2933
- const parentCollection = intent.data?.collection ?? space.properties[import_chunk_OTDRTHT4.CollectionType.typename];
2976
+ const parentCollection = intent.data?.collection ?? space.properties[import_chunk_HTAM5LQD.CollectionType.typename];
2934
2977
  const nestedObjects = await getNestedObjects(object, resolve);
2935
2978
  const deletionData = {
2936
2979
  object,
2937
2980
  parentCollection,
2938
- index: parentCollection instanceof import_chunk_OTDRTHT4.CollectionType ? parentCollection.objects.indexOf(object) : -1,
2981
+ index: parentCollection instanceof import_chunk_HTAM5LQD.CollectionType ? parentCollection.objects.indexOf(object) : -1,
2939
2982
  nestedObjects,
2940
2983
  wasActive: [
2941
2984
  object,
@@ -2953,7 +2996,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2953
2996
  }
2954
2997
  });
2955
2998
  }
2956
- if (parentCollection instanceof import_chunk_OTDRTHT4.CollectionType) {
2999
+ if (parentCollection instanceof import_chunk_HTAM5LQD.CollectionType) {
2957
3000
  const index = parentCollection.objects.indexOf(object);
2958
3001
  if (index !== -1) {
2959
3002
  parentCollection.objects.splice(index, 1);
@@ -2963,7 +3006,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2963
3006
  space.db.remove(obj);
2964
3007
  });
2965
3008
  space.db.remove(object);
2966
- const undoMessageKey = object instanceof import_chunk_OTDRTHT4.CollectionType ? "collection deleted label" : "object deleted label";
3009
+ const undoMessageKey = object instanceof import_chunk_HTAM5LQD.CollectionType ? "collection deleted label" : "object deleted label";
2967
3010
  return {
2968
3011
  data: true,
2969
3012
  undoable: {
@@ -2974,7 +3017,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2974
3017
  };
2975
3018
  } else {
2976
3019
  const undoData = intent.data;
2977
- if (undoData && (0, import_echo.isEchoObject)(undoData.object) && undoData.parentCollection instanceof import_chunk_OTDRTHT4.CollectionType) {
3020
+ if (undoData && (0, import_echo.isEchoObject)(undoData.object) && undoData.parentCollection instanceof import_chunk_HTAM5LQD.CollectionType) {
2978
3021
  const restoredObject = space.db.add(undoData.object);
2979
3022
  undoData.nestedObjects.forEach((obj) => {
2980
3023
  space.db.add(obj);
@@ -3073,7 +3116,6 @@ var src_default = SpacePlugin;
3073
3116
  MenuFooter,
3074
3117
  MessageState,
3075
3118
  MessageType,
3076
- MissingObject,
3077
3119
  PersistenceStatus,
3078
3120
  PopoverRenameObject,
3079
3121
  PopoverRenameSpace,
@@ -3083,7 +3125,6 @@ var src_default = SpacePlugin;
3083
3125
  SPACE_PLUGIN,
3084
3126
  SPACE_PLUGIN_SHORT_ID,
3085
3127
  SPACE_TYPE,
3086
- SaveStatus,
3087
3128
  ShareSpaceButton,
3088
3129
  ShareSpaceButtonImpl,
3089
3130
  SmallPresence,