@dxos/plugin-space 0.6.11 → 0.6.12-main.2d19bf1

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 (91) hide show
  1. package/dist/lib/browser/{chunk-LZEGRS7H.mjs → chunk-AVLRQF6L.mjs} +1 -1
  2. package/dist/lib/browser/chunk-AVLRQF6L.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-DTVUOG2C.mjs → chunk-QK5I2EPF.mjs} +23 -4
  4. package/dist/lib/browser/chunk-QK5I2EPF.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +581 -237
  6. package/dist/lib/browser/index.mjs.map +4 -4
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/meta.mjs +1 -1
  9. package/dist/lib/browser/types/index.mjs +7 -3
  10. package/dist/lib/node/{chunk-CVZPI2P3.cjs → chunk-HE2GHO6Z.cjs} +29 -8
  11. package/dist/lib/node/chunk-HE2GHO6Z.cjs.map +7 -0
  12. package/dist/lib/node/{chunk-6CNYF6YU.cjs → chunk-P4XUXM7Y.cjs} +4 -4
  13. package/dist/lib/node/chunk-P4XUXM7Y.cjs.map +7 -0
  14. package/dist/lib/node/index.cjs +802 -461
  15. package/dist/lib/node/index.cjs.map +4 -4
  16. package/dist/lib/node/meta.cjs +5 -5
  17. package/dist/lib/node/meta.cjs.map +1 -1
  18. package/dist/lib/node/meta.json +1 -1
  19. package/dist/lib/node/types/index.cjs +14 -10
  20. package/dist/lib/node/types/index.cjs.map +2 -2
  21. package/dist/lib/node-esm/chunk-2TR4WD6U.mjs +116 -0
  22. package/dist/lib/node-esm/chunk-2TR4WD6U.mjs.map +7 -0
  23. package/dist/lib/node-esm/chunk-YPQGKWHJ.mjs +37 -0
  24. package/dist/lib/node-esm/chunk-YPQGKWHJ.mjs.map +7 -0
  25. package/dist/lib/node-esm/index.mjs +2985 -0
  26. package/dist/lib/node-esm/index.mjs.map +7 -0
  27. package/dist/lib/node-esm/meta.json +1 -0
  28. package/dist/lib/node-esm/meta.mjs +14 -0
  29. package/dist/lib/node-esm/meta.mjs.map +7 -0
  30. package/dist/lib/node-esm/types/index.mjs +26 -0
  31. package/dist/lib/node-esm/types/index.mjs.map +7 -0
  32. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  33. package/dist/types/src/components/FallbackSettings.d.ts +8 -0
  34. package/dist/types/src/components/FallbackSettings.d.ts.map +1 -0
  35. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  36. package/dist/types/src/components/SaveStatus.d.ts +3 -0
  37. package/dist/types/src/components/SaveStatus.d.ts.map +1 -0
  38. package/dist/types/src/components/ShareSpaceButton.stories.d.ts +4 -0
  39. package/dist/types/src/components/ShareSpaceButton.stories.d.ts.map +1 -1
  40. package/dist/types/src/components/SpaceMain/SpaceMain.d.ts.map +1 -1
  41. package/dist/types/src/components/SpacePresence.stories.d.ts +4 -0
  42. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  43. package/dist/types/src/components/SpaceSettings.d.ts.map +1 -1
  44. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +13 -0
  45. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -0
  46. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +117 -0
  47. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -0
  48. package/dist/types/src/components/SyncStatus/index.d.ts +2 -0
  49. package/dist/types/src/components/SyncStatus/index.d.ts.map +1 -0
  50. package/dist/types/src/components/SyncStatus/types.d.ts +14 -0
  51. package/dist/types/src/components/SyncStatus/types.d.ts.map +1 -0
  52. package/dist/types/src/components/index.d.ts +3 -2
  53. package/dist/types/src/components/index.d.ts.map +1 -1
  54. package/dist/types/src/meta.d.ts.map +1 -1
  55. package/dist/types/src/translations.d.ts +4 -0
  56. package/dist/types/src/translations.d.ts.map +1 -1
  57. package/dist/types/src/types/thread.d.ts +14 -0
  58. package/dist/types/src/types/thread.d.ts.map +1 -1
  59. package/dist/types/src/types/types.d.ts +18 -1
  60. package/dist/types/src/types/types.d.ts.map +1 -1
  61. package/dist/types/src/util.d.ts +1 -4
  62. package/dist/types/src/util.d.ts.map +1 -1
  63. package/package.json +43 -36
  64. package/src/SpacePlugin.tsx +93 -36
  65. package/src/components/FallbackSettings.tsx +35 -0
  66. package/src/components/MenuFooter.tsx +1 -0
  67. package/src/components/SaveStatus.tsx +95 -0
  68. package/src/components/SpaceMain/SpaceMain.tsx +1 -22
  69. package/src/components/SpacePresence.tsx +1 -1
  70. package/src/components/SpaceSettings.tsx +32 -3
  71. package/src/components/SyncStatus/SyncStatus.stories.tsx +62 -0
  72. package/src/components/SyncStatus/SyncStatus.tsx +188 -0
  73. package/src/components/SyncStatus/index.ts +5 -0
  74. package/src/components/SyncStatus/types.ts +77 -0
  75. package/src/components/index.ts +3 -2
  76. package/src/meta.ts +3 -1
  77. package/src/translations.ts +4 -0
  78. package/src/types/collection.ts +1 -1
  79. package/src/types/thread.ts +11 -1
  80. package/src/types/types.ts +25 -1
  81. package/src/util.tsx +15 -50
  82. package/dist/lib/browser/chunk-DTVUOG2C.mjs.map +0 -7
  83. package/dist/lib/browser/chunk-LZEGRS7H.mjs.map +0 -7
  84. package/dist/lib/node/chunk-6CNYF6YU.cjs.map +0 -7
  85. package/dist/lib/node/chunk-CVZPI2P3.cjs.map +0 -7
  86. package/dist/types/src/components/EmptySpace.d.ts +0 -3
  87. package/dist/types/src/components/EmptySpace.d.ts.map +0 -1
  88. package/dist/types/src/components/EmptyTree.d.ts +0 -3
  89. package/dist/types/src/components/EmptyTree.d.ts.map +0 -1
  90. package/src/components/EmptySpace.tsx +0 -25
  91. package/src/components/EmptyTree.tsx +0 -25
@@ -28,40 +28,44 @@ 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_CVZPI2P3.ActorSchema,
31
+ ActorSchema: () => import_chunk_HE2GHO6Z.ActorSchema,
32
32
  AwaitingObject: () => AwaitingObject,
33
33
  COMPOSER_SPACE_LOCK: () => COMPOSER_SPACE_LOCK,
34
- ChannelType: () => import_chunk_CVZPI2P3.ChannelType,
34
+ ChannelType: () => import_chunk_HE2GHO6Z.ChannelType,
35
35
  CollectionMain: () => CollectionMain,
36
36
  CollectionSection: () => CollectionSection,
37
- CollectionType: () => import_chunk_CVZPI2P3.CollectionType,
38
- ContactType: () => import_chunk_CVZPI2P3.ContactType,
39
- EmptySpace: () => EmptySpace,
40
- EmptyTree: () => EmptyTree,
37
+ CollectionType: () => import_chunk_HE2GHO6Z.CollectionType,
38
+ ContactType: () => import_chunk_HE2GHO6Z.ContactType,
39
+ FallbackSettings: () => FallbackSettings,
41
40
  FullPresence: () => FullPresence,
42
41
  MenuFooter: () => MenuFooter,
43
- MessageType: () => import_chunk_CVZPI2P3.MessageType,
42
+ MessageState: () => import_chunk_HE2GHO6Z.MessageState,
43
+ MessageType: () => import_chunk_HE2GHO6Z.MessageType,
44
44
  MissingObject: () => MissingObject,
45
45
  PersistenceStatus: () => PersistenceStatus,
46
46
  PopoverRenameObject: () => PopoverRenameObject,
47
47
  PopoverRenameSpace: () => PopoverRenameSpace,
48
48
  SHARED: () => SHARED,
49
49
  SPACES: () => SPACES,
50
- SPACE_DIRECTORY_HANDLE: () => import_chunk_CVZPI2P3.SPACE_DIRECTORY_HANDLE,
51
- SPACE_PLUGIN: () => import_chunk_6CNYF6YU.SPACE_PLUGIN,
52
- SPACE_PLUGIN_SHORT_ID: () => import_chunk_6CNYF6YU.SPACE_PLUGIN_SHORT_ID,
50
+ SPACE_DIRECTORY_HANDLE: () => import_chunk_HE2GHO6Z.SPACE_DIRECTORY_HANDLE,
51
+ SPACE_PLUGIN: () => import_chunk_P4XUXM7Y.SPACE_PLUGIN,
52
+ SPACE_PLUGIN_SHORT_ID: () => import_chunk_P4XUXM7Y.SPACE_PLUGIN_SHORT_ID,
53
53
  SPACE_TYPE: () => SPACE_TYPE,
54
+ SaveStatus: () => SaveStatus,
54
55
  ShareSpaceButton: () => ShareSpaceButton,
55
56
  ShareSpaceButtonImpl: () => ShareSpaceButtonImpl,
56
57
  SmallPresence: () => SmallPresence,
57
58
  SmallPresenceLive: () => SmallPresenceLive,
58
- SpaceAction: () => import_chunk_6CNYF6YU.SpaceAction,
59
+ SpaceAction: () => import_chunk_P4XUXM7Y.SpaceAction,
59
60
  SpaceMain: () => SpaceMain,
60
61
  SpacePlugin: () => SpacePlugin,
61
62
  SpacePresence: () => SpacePresence,
62
63
  SpaceSettings: () => SpaceSettings,
63
- ThreadStatus: () => import_chunk_CVZPI2P3.ThreadStatus,
64
- ThreadType: () => import_chunk_CVZPI2P3.ThreadType,
64
+ SyncStatus: () => SyncStatus,
65
+ SyncStatusDetail: () => SyncStatusDetail,
66
+ SyncStatusIndicator: () => SyncStatusIndicator,
67
+ ThreadStatus: () => import_chunk_HE2GHO6Z.ThreadStatus,
68
+ ThreadType: () => import_chunk_HE2GHO6Z.ThreadType,
65
69
  cloneObject: () => cloneObject,
66
70
  constructObjectActionGroups: () => constructObjectActionGroups,
67
71
  constructObjectActions: () => constructObjectActions,
@@ -74,15 +78,15 @@ __export(node_exports, {
74
78
  getNestedObjects: () => getNestedObjects,
75
79
  getSpaceDisplayName: () => getSpaceDisplayName,
76
80
  memoizeQuery: () => memoizeQuery,
81
+ parseSpaceInitPlugin: () => import_chunk_HE2GHO6Z.parseSpaceInitPlugin,
77
82
  parseSpacePlugin: () => parseSpacePlugin,
78
83
  translations: () => translations_default
79
84
  });
80
85
  module.exports = __toCommonJS(node_exports);
81
- var import_chunk_6CNYF6YU = require("./chunk-6CNYF6YU.cjs");
82
- var import_chunk_CVZPI2P3 = require("./chunk-CVZPI2P3.cjs");
83
- var import_react = require("@phosphor-icons/react");
86
+ var import_chunk_P4XUXM7Y = require("./chunk-P4XUXM7Y.cjs");
87
+ var import_chunk_HE2GHO6Z = require("./chunk-HE2GHO6Z.cjs");
84
88
  var import_signals_core = require("@preact/signals-core");
85
- var import_react2 = __toESM(require("react"));
89
+ var import_react = __toESM(require("react"));
86
90
  var import_app_framework = require("@dxos/app-framework");
87
91
  var import_async = require("@dxos/async");
88
92
  var import_echo_schema = require("@dxos/echo-schema");
@@ -96,97 +100,105 @@ var import_meta = require("@dxos/plugin-observability/meta");
96
100
  var import_react_client = require("@dxos/react-client");
97
101
  var import_echo = require("@dxos/react-client/echo");
98
102
  var import_react_ui = require("@dxos/react-ui");
99
- var import_react3 = require("@dxos/shell/react");
103
+ var import_react2 = require("@dxos/shell/react");
100
104
  var import_util = require("@dxos/util");
101
- var import_react4 = require("@phosphor-icons/react");
102
- var import_react5 = __toESM(require("react"));
105
+ var import_react3 = require("@phosphor-icons/react");
106
+ var import_react4 = __toESM(require("react"));
103
107
  var import_app_framework2 = require("@dxos/app-framework");
104
108
  var import_react_client2 = require("@dxos/react-client");
105
109
  var import_echo2 = require("@dxos/react-client/echo");
106
110
  var import_react_ui2 = require("@dxos/react-ui");
107
111
  var import_react_ui_theme = require("@dxos/react-ui-theme");
108
- var import_react6 = __toESM(require("react"));
112
+ var import_react5 = __toESM(require("react"));
109
113
  var import_react_ui3 = require("@dxos/react-ui");
110
114
  var import_react_ui_theme2 = require("@dxos/react-ui-theme");
111
- var import_react7 = __toESM(require("react"));
115
+ var import_react6 = __toESM(require("react"));
112
116
  var import_react_ui4 = require("@dxos/react-ui");
113
- var import_react8 = __toESM(require("react"));
117
+ var import_react7 = __toESM(require("react"));
114
118
  var import_react_ui5 = require("@dxos/react-ui");
115
- var import_react_ui_theme3 = require("@dxos/react-ui-theme");
119
+ var import_react8 = require("@phosphor-icons/react");
116
120
  var import_react9 = __toESM(require("react"));
117
- var import_react_ui6 = require("@dxos/react-ui");
118
- var import_react_ui_theme4 = require("@dxos/react-ui-theme");
119
- var import_react10 = require("@phosphor-icons/react");
120
- var import_react11 = __toESM(require("react"));
121
121
  var import_echo3 = require("@dxos/client/echo");
122
122
  var import_react_client3 = require("@dxos/react-client");
123
- var import_react_ui7 = require("@dxos/react-ui");
124
- var import_react12 = require("@phosphor-icons/react");
125
- var import_react13 = __toESM(require("react"));
123
+ var import_react_ui6 = require("@dxos/react-ui");
126
124
  var import_app_framework3 = require("@dxos/app-framework");
127
125
  var import_echo_schema2 = require("@dxos/echo-schema");
128
126
  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_react14 = __toESM(require("react"));
130
+ var import_react10 = __toESM(require("react"));
133
131
  var import_app_framework4 = require("@dxos/app-framework");
134
- var import_react_ui8 = require("@dxos/react-ui");
135
- var import_react_ui_theme5 = require("@dxos/react-ui-theme");
136
- var import_react15 = require("@phosphor-icons/react");
137
- var import_react16 = __toESM(require("react"));
132
+ var import_react_ui7 = require("@dxos/react-ui");
133
+ var import_react_ui_theme3 = require("@dxos/react-ui-theme");
134
+ var import_react11 = require("@phosphor-icons/react");
135
+ var import_react12 = __toESM(require("react"));
138
136
  var import_async2 = require("@dxos/async");
139
- var import_react_ui9 = require("@dxos/react-ui");
140
- var import_react_ui_theme6 = require("@dxos/react-ui-theme");
141
- var import_react17 = __toESM(require("react"));
137
+ var import_react_ui8 = require("@dxos/react-ui");
138
+ var import_react_ui_theme4 = require("@dxos/react-ui-theme");
139
+ var import_react13 = __toESM(require("react"));
142
140
  var import_log2 = require("@dxos/log");
141
+ var import_react_ui9 = require("@dxos/react-ui");
142
+ var import_react14 = __toESM(require("react"));
143
143
  var import_react_ui10 = require("@dxos/react-ui");
144
- var import_react18 = __toESM(require("react"));
145
- var import_react_ui11 = require("@dxos/react-ui");
146
- var import_react19 = __toESM(require("react"));
144
+ var import_react15 = __toESM(require("react"));
147
145
  var import_app_framework5 = require("@dxos/app-framework");
148
- var import_react_ui12 = require("@dxos/react-ui");
149
- var import_react20 = require("@phosphor-icons/react");
150
- var import_react21 = __toESM(require("react"));
146
+ var import_react_ui11 = require("@dxos/react-ui");
147
+ var import_react16 = require("@phosphor-icons/react");
148
+ var import_react17 = __toESM(require("react"));
151
149
  var import_app_framework6 = require("@dxos/app-framework");
152
150
  var import_echo5 = require("@dxos/react-client/echo");
153
- var import_react_ui13 = require("@dxos/react-ui");
154
- var import_react_ui_theme7 = require("@dxos/react-ui-theme");
155
- var import_react22 = require("@dxos/shell/react");
156
- var import_react23 = require("@phosphor-icons/react");
157
- var import_react24 = __toESM(require("react"));
151
+ var import_react_ui12 = require("@dxos/react-ui");
152
+ var import_react_ui_theme5 = require("@dxos/react-ui-theme");
153
+ var import_react18 = require("@dxos/shell/react");
154
+ var import_react19 = require("@phosphor-icons/react");
155
+ var import_react20 = __toESM(require("react"));
158
156
  var import_app_framework7 = require("@dxos/app-framework");
159
157
  var import_echo6 = require("@dxos/react-client/echo");
160
158
  var import_invitations = require("@dxos/react-client/invitations");
161
159
  var import_invitations2 = require("@dxos/react-client/invitations");
162
- var import_react_ui14 = require("@dxos/react-ui");
163
- var import_react_ui_theme8 = require("@dxos/react-ui-theme");
164
- var import_react25 = require("@dxos/shell/react");
165
- var import_react26 = __toESM(require("react"));
160
+ var import_react_ui13 = require("@dxos/react-ui");
161
+ var import_react_ui_theme6 = require("@dxos/react-ui-theme");
162
+ var import_react21 = require("@dxos/shell/react");
163
+ var import_react22 = __toESM(require("react"));
166
164
  var import_app_framework8 = require("@dxos/app-framework");
167
165
  var import_display_name = require("@dxos/display-name");
168
166
  var import_react_client4 = require("@dxos/react-client");
169
167
  var import_echo7 = require("@dxos/react-client/echo");
170
168
  var import_halo = require("@dxos/react-client/halo");
171
- var import_react_ui15 = require("@dxos/react-ui");
169
+ var import_react_ui14 = require("@dxos/react-ui");
172
170
  var import_react_ui_attention = require("@dxos/react-ui-attention");
173
171
  var import_util2 = require("@dxos/util");
174
- var import_react27 = __toESM(require("react"));
172
+ var import_react23 = __toESM(require("react"));
175
173
  var import_app_framework9 = require("@dxos/app-framework");
176
174
  var import_plugin_settings = require("@dxos/plugin-settings");
175
+ var import_react_ui15 = require("@dxos/react-ui");
176
+ var import_react24 = __toESM(require("react"));
177
+ var import_context = require("@dxos/context");
178
+ var import_plugin_status_bar = require("@dxos/plugin-status-bar");
179
+ var import_react_client5 = require("@dxos/react-client");
177
180
  var import_react_ui16 = require("@dxos/react-ui");
181
+ var import_react25 = __toESM(require("react"));
182
+ var import_plugin_status_bar2 = require("@dxos/plugin-status-bar");
183
+ var import_react_ui17 = require("@dxos/react-ui");
184
+ var import_react_ui_syntax_highlighter = require("@dxos/react-ui-syntax-highlighter");
185
+ var import_react_ui_theme7 = require("@dxos/react-ui-theme");
186
+ var import_react26 = require("react");
187
+ var import_context2 = require("@dxos/context");
188
+ var import_protocols = require("@dxos/protocols");
189
+ var import_react_client6 = require("@dxos/react-client");
178
190
  var WAIT_FOR_OBJECT_TIMEOUT = 18e4;
179
191
  var TOAST_TIMEOUT = 24e4;
180
192
  var AwaitingObject = ({ id }) => {
181
- const [open, setOpen] = (0, import_react5.useState)(true);
182
- const [waiting, setWaiting] = (0, import_react5.useState)(true);
183
- const [found, setFound] = (0, import_react5.useState)(false);
184
- const { t } = (0, import_react_ui2.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
193
+ const [open, setOpen] = (0, import_react4.useState)(true);
194
+ const [waiting, setWaiting] = (0, import_react4.useState)(true);
195
+ const [found, setFound] = (0, import_react4.useState)(false);
196
+ const { t } = (0, import_react_ui2.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
185
197
  const intentPlugin = (0, import_app_framework2.useResolvePlugin)(import_app_framework2.parseIntentPlugin);
186
198
  const navigationPlugin = (0, import_app_framework2.useResolvePlugin)(import_app_framework2.parseNavigationPlugin);
187
199
  const client = (0, import_react_client2.useClient)();
188
200
  const objects = (0, import_echo2.useQuery)(client.spaces);
189
- (0, import_react5.useEffect)(() => {
201
+ (0, import_react4.useEffect)(() => {
190
202
  if (!id) {
191
203
  return;
192
204
  }
@@ -197,7 +209,7 @@ var AwaitingObject = ({ id }) => {
197
209
  }, [
198
210
  id
199
211
  ]);
200
- (0, import_react5.useEffect)(() => {
212
+ (0, import_react4.useEffect)(() => {
201
213
  if (objects.findIndex((object) => (0, import_echo2.fullyQualifiedId)(object) === id) > -1) {
202
214
  setFound(true);
203
215
  if (navigationPlugin?.provides.location.active === id) {
@@ -210,8 +222,8 @@ var AwaitingObject = ({ id }) => {
210
222
  intentPlugin
211
223
  ]);
212
224
  const handleClose = async () => intentPlugin?.provides.intent.dispatch({
213
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
214
- action: import_chunk_6CNYF6YU.SpaceAction.WAIT_FOR_OBJECT,
225
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
226
+ action: import_chunk_P4XUXM7Y.SpaceAction.WAIT_FOR_OBJECT,
215
227
  data: {
216
228
  id: void 0
217
229
  }
@@ -229,73 +241,75 @@ var AwaitingObject = ({ id }) => {
229
241
  });
230
242
  void handleClose();
231
243
  };
232
- return /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Toast.Root, {
244
+ return /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Toast.Root, {
233
245
  open,
234
246
  duration: TOAST_TIMEOUT,
235
247
  onOpenChange: setOpen
236
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Toast.Body, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Toast.Title, {
248
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Toast.Body, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Toast.Title, {
237
249
  classNames: "flex items-center gap-2"
238
- }, found ? /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null, /* @__PURE__ */ import_react5.default.createElement(import_react4.CheckCircle, {
250
+ }, found ? /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(import_react3.CheckCircle, {
239
251
  className: (0, import_react_ui_theme.getSize)(5)
240
- }), /* @__PURE__ */ import_react5.default.createElement("span", null, t("found object label"))) : waiting ? /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null, /* @__PURE__ */ import_react5.default.createElement(import_react4.CircleNotch, {
252
+ }), /* @__PURE__ */ import_react4.default.createElement("span", null, t("found object label"))) : waiting ? /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(import_react3.CircleNotch, {
241
253
  className: (0, import_react_ui_theme.mx)((0, import_react_ui_theme.getSize)(5), "animate-spin")
242
- }), /* @__PURE__ */ import_react5.default.createElement("span", null, t("waiting for object label"))) : /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null, /* @__PURE__ */ import_react5.default.createElement(import_react4.CircleDashed, {
254
+ }), /* @__PURE__ */ import_react4.default.createElement("span", null, t("waiting for object label"))) : /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(import_react3.CircleDashed, {
243
255
  className: (0, import_react_ui_theme.getSize)(5)
244
- }), /* @__PURE__ */ import_react5.default.createElement("span", null, t("object not found label")))), /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Toast.Description, null, t(found ? "found object description" : waiting ? "waiting for object description" : "object not found description"))), /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Toast.Actions, null, found ? /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Toast.Action, {
256
+ }), /* @__PURE__ */ import_react4.default.createElement("span", null, t("object not found label")))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Toast.Description, null, t(found ? "found object description" : waiting ? "waiting for object description" : "object not found description"))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Toast.Actions, null, found ? /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Toast.Action, {
245
257
  altText: t("go to object alt"),
246
258
  asChild: true
247
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Button, {
259
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Button, {
248
260
  variant: "primary",
249
261
  onClick: handleNavigate
250
- }, t("go to object label"))), /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Toast.Close, {
262
+ }, t("go to object label"))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Toast.Close, {
251
263
  asChild: true
252
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Button, {
264
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Button, {
253
265
  onClick: handleClose
254
266
  }, t("close label", {
255
267
  ns: "appkit"
256
- })))) : /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Toast.Close, {
268
+ })))) : /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Toast.Close, {
257
269
  asChild: true
258
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Button, {
270
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Button, {
259
271
  onClick: handleClose
260
272
  }, t(waiting ? "close label" : "confirm label", {
261
273
  ns: "appkit"
262
274
  })))));
263
275
  };
264
276
  var CollectionMain = ({ collection }) => {
265
- const { t } = (0, import_react_ui3.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
266
- return /* @__PURE__ */ import_react6.default.createElement("div", {
277
+ const { t } = (0, import_react_ui3.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
278
+ return /* @__PURE__ */ import_react5.default.createElement("div", {
267
279
  role: "none",
268
280
  className: (0, import_react_ui_theme2.mx)(import_react_ui_theme2.baseSurface, "min-bs-screen is-full flex items-center justify-center p-8"),
269
281
  "data-testid": "composer.firstRunMessage"
270
- }, /* @__PURE__ */ import_react6.default.createElement("p", {
282
+ }, /* @__PURE__ */ import_react5.default.createElement("p", {
271
283
  role: "alert",
272
284
  className: (0, import_react_ui_theme2.mx)(import_react_ui_theme2.descriptionText, "border border-dashed border-neutral-400/50 rounded-lg p-8 font-normal text-lg max-is-[24rem] break-words")
273
285
  }, collection.name ?? t("unnamed collection label")));
274
286
  };
275
287
  var CollectionSection = ({ collection }) => {
276
- const { t } = (0, import_react_ui4.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
277
- return /* @__PURE__ */ import_react7.default.createElement("div", {
288
+ const { t } = (0, import_react_ui4.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
289
+ return /* @__PURE__ */ import_react6.default.createElement("div", {
278
290
  className: "min-bs-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center"
279
- }, /* @__PURE__ */ import_react7.default.createElement("span", {
291
+ }, /* @__PURE__ */ import_react6.default.createElement("span", {
280
292
  className: "truncate"
281
293
  }, collection.name ?? t("unnamed collection label")));
282
294
  };
283
- var EmptySpace = () => {
284
- const { t } = (0, import_react_ui5.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
285
- return /* @__PURE__ */ import_react8.default.createElement("div", {
286
- role: "none",
287
- className: (0, import_react_ui_theme3.mx)("p-2 mli-2 mbe-2 text-center border border-dashed border-neutral-400/50 rounded-lg", import_react_ui_theme3.descriptionText)
288
- }, t("empty space message"));
289
- };
290
- var EmptyTree = () => {
291
- const { t } = (0, import_react_ui6.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
292
- return /* @__PURE__ */ import_react9.default.createElement("div", {
295
+ var FallbackSettings = ({ object }) => {
296
+ const { t } = (0, import_react_ui5.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
297
+ return /* @__PURE__ */ import_react7.default.createElement("div", {
298
+ role: "form",
299
+ className: "p-3 flex flex-col gap-2"
300
+ }, /* @__PURE__ */ import_react7.default.createElement("div", {
293
301
  role: "none",
294
- className: (0, import_react_ui_theme4.mx)("p-2 mli-2 mbe-2 text-center border border-dashed border-neutral-400/50 rounded-lg", import_react_ui_theme4.descriptionText)
295
- }, t("empty tree message"));
302
+ className: "space-b-1"
303
+ }, /* @__PURE__ */ import_react7.default.createElement(import_react_ui5.Input.Root, null, /* @__PURE__ */ import_react7.default.createElement(import_react_ui5.Input.Label, null, t("name label")), /* @__PURE__ */ import_react7.default.createElement(import_react_ui5.Input.TextInput, {
304
+ placeholder: t("name placeholder"),
305
+ value: object.name,
306
+ onChange: (event) => {
307
+ object.name = event.target.value;
308
+ }
309
+ }))));
296
310
  };
297
311
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/util.tsx";
298
- var SPACES = `${import_chunk_6CNYF6YU.SPACE_PLUGIN}-spaces`;
312
+ var SPACES = `${import_chunk_P4XUXM7Y.SPACE_PLUGIN}-spaces`;
299
313
  var SPACE_TYPE = "dxos.org/type/Space";
300
314
  var COMPOSER_SPACE_LOCK = "dxos.org/plugin/space/lock";
301
315
  var SHARED = "shared-spaces";
@@ -311,12 +325,12 @@ var getSpaceDisplayName = (space, { personal, namesCache = {} } = {}) => {
311
325
  return space.state.get() === import_echo4.SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0 ? space.properties.name : namesCache[space.id] ? namesCache[space.id] : personal ? [
312
326
  "personal space label",
313
327
  {
314
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
328
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
315
329
  }
316
330
  ] : [
317
331
  "unnamed space label",
318
332
  {
319
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
333
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
320
334
  }
321
335
  ];
322
336
  };
@@ -363,8 +377,8 @@ var checkPendingMigration = (space) => {
363
377
  };
364
378
  var constructSpaceNode = ({ space, personal, namesCache, resolve }) => {
365
379
  const hasPendingMigration = checkPendingMigration(space);
366
- const collection = space.state.get() === import_echo4.SpaceState.SPACE_READY && space.properties[import_chunk_CVZPI2P3.CollectionType.typename];
367
- const partials = space.state.get() === import_echo4.SpaceState.SPACE_READY && collection instanceof import_chunk_CVZPI2P3.CollectionType ? getCollectionGraphNodePartials({
380
+ const collection = space.state.get() === import_echo4.SpaceState.SPACE_READY && space.properties[import_chunk_HE2GHO6Z.CollectionType.typename];
381
+ const partials = space.state.get() === import_echo4.SpaceState.SPACE_READY && collection instanceof import_chunk_HE2GHO6Z.CollectionType ? getCollectionGraphNodePartials({
368
382
  collection,
369
383
  space,
370
384
  resolve
@@ -380,8 +394,7 @@ var constructSpaceNode = ({ space, personal, namesCache, resolve }) => {
380
394
  namesCache
381
395
  }),
382
396
  description: space.state.get() === import_echo4.SpaceState.SPACE_READY && space.properties.description,
383
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.Planet, props),
384
- iconSymbol: "ph--planet--regular",
397
+ icon: "ph--planet--regular",
385
398
  disabled: space.state.get() !== import_echo4.SpaceState.SPACE_READY || hasPendingMigration,
386
399
  testId: "spacePlugin.space"
387
400
  }
@@ -394,21 +407,20 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
394
407
  if (state !== import_echo4.SpaceState.SPACE_READY || hasPendingMigration) {
395
408
  return [];
396
409
  }
397
- const collection = space.properties[import_chunk_CVZPI2P3.CollectionType.typename];
410
+ const collection = space.properties[import_chunk_HE2GHO6Z.CollectionType.typename];
398
411
  const actions = [
399
412
  {
400
- id: getId(import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT),
413
+ id: getId(import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT),
401
414
  type: import_plugin_graph2.ACTION_GROUP_TYPE,
402
415
  data: import_plugin_graph2.actionGroupSymbol,
403
416
  properties: {
404
417
  label: [
405
418
  "create object in space label",
406
419
  {
407
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
420
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
408
421
  }
409
422
  ],
410
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.Plus, props),
411
- iconSymbol: "ph--plus--regular",
423
+ icon: "ph--plus--regular",
412
424
  disposition: "toolbar",
413
425
  // TODO(wittjosiah): This is currently a navtree feature. Address this with cmd+k integration.
414
426
  // mainAreaDisposition: 'in-flow',
@@ -417,15 +429,15 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
417
429
  },
418
430
  nodes: [
419
431
  {
420
- id: getId(import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT.replace("object", "collection")),
432
+ id: getId(import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT.replace("object", "collection")),
421
433
  type: import_plugin_graph2.ACTION_TYPE,
422
434
  data: () => dispatch([
423
435
  {
424
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
425
- action: import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT,
436
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
437
+ action: import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT,
426
438
  data: {
427
439
  target: collection,
428
- object: (0, import_echo_schema2.create)(import_chunk_CVZPI2P3.CollectionType, {
440
+ object: (0, import_echo_schema2.create)(import_chunk_HE2GHO6Z.CollectionType, {
429
441
  objects: [],
430
442
  views: {}
431
443
  })
@@ -439,11 +451,10 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
439
451
  label: [
440
452
  "create collection label",
441
453
  {
442
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
454
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
443
455
  }
444
456
  ],
445
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.CardsThree, props),
446
- iconSymbol: "ph--cards-three--regular",
457
+ icon: "ph--cards-three--regular",
447
458
  testId: "spacePlugin.createCollection"
448
459
  }
449
460
  }
@@ -459,12 +470,12 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
459
470
  const actions = [];
460
471
  if (hasPendingMigration) {
461
472
  actions.push({
462
- id: getId(import_chunk_6CNYF6YU.SpaceAction.MIGRATE),
473
+ id: getId(import_chunk_P4XUXM7Y.SpaceAction.MIGRATE),
463
474
  type: import_plugin_graph2.ACTION_GROUP_TYPE,
464
475
  data: async () => {
465
476
  await dispatch({
466
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
467
- action: import_chunk_6CNYF6YU.SpaceAction.MIGRATE,
477
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
478
+ action: import_chunk_P4XUXM7Y.SpaceAction.MIGRATE,
468
479
  data: {
469
480
  space
470
481
  }
@@ -474,11 +485,10 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
474
485
  label: [
475
486
  "migrate space label",
476
487
  {
477
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
488
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
478
489
  }
479
490
  ],
480
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.Database, props),
481
- iconSymbol: "ph--database--regular",
491
+ icon: "ph--database--regular",
482
492
  disposition: "toolbar",
483
493
  mainAreaDisposition: "in-flow",
484
494
  disabled: migrating || import_migrations2.Migrations.running(space)
@@ -488,15 +498,15 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
488
498
  if (state === import_echo4.SpaceState.SPACE_READY && !hasPendingMigration) {
489
499
  const locked = space.properties[COMPOSER_SPACE_LOCK];
490
500
  actions.push({
491
- id: getId(import_chunk_6CNYF6YU.SpaceAction.SHARE),
501
+ id: getId(import_chunk_P4XUXM7Y.SpaceAction.SHARE),
492
502
  type: import_plugin_graph2.ACTION_TYPE,
493
503
  data: async () => {
494
504
  if (locked) {
495
505
  return;
496
506
  }
497
507
  await dispatch({
498
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
499
- action: import_chunk_6CNYF6YU.SpaceAction.SHARE,
508
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
509
+ action: import_chunk_P4XUXM7Y.SpaceAction.SHARE,
500
510
  data: {
501
511
  spaceId: space.id
502
512
  }
@@ -506,11 +516,10 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
506
516
  label: [
507
517
  "share space label",
508
518
  {
509
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
519
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
510
520
  }
511
521
  ],
512
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.Users, props),
513
- iconSymbol: "ph--users--regular",
522
+ icon: "ph--users--regular",
514
523
  disabled: locked,
515
524
  keyBinding: {
516
525
  macos: "meta+.",
@@ -519,12 +528,12 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
519
528
  mainAreaDisposition: "absent"
520
529
  }
521
530
  }, {
522
- id: locked ? getId(import_chunk_6CNYF6YU.SpaceAction.UNLOCK) : getId(import_chunk_6CNYF6YU.SpaceAction.LOCK),
531
+ id: locked ? getId(import_chunk_P4XUXM7Y.SpaceAction.UNLOCK) : getId(import_chunk_P4XUXM7Y.SpaceAction.LOCK),
523
532
  type: import_plugin_graph2.ACTION_TYPE,
524
533
  data: async () => {
525
534
  await dispatch({
526
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
527
- action: locked ? import_chunk_6CNYF6YU.SpaceAction.UNLOCK : import_chunk_6CNYF6YU.SpaceAction.LOCK,
535
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
536
+ action: locked ? import_chunk_P4XUXM7Y.SpaceAction.UNLOCK : import_chunk_P4XUXM7Y.SpaceAction.LOCK,
528
537
  data: {
529
538
  space
530
539
  }
@@ -534,19 +543,18 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
534
543
  label: [
535
544
  locked ? "unlock space label" : "lock space label",
536
545
  {
537
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
546
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
538
547
  }
539
548
  ],
540
- icon: locked ? (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.LockSimpleOpen, props) : (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.LockSimple, props),
541
- iconSymbol: locked ? "ph--lock-simple-open--regular" : "ph--lock-simple--regular"
549
+ icon: locked ? "ph--lock-simple-open--regular" : "ph--lock-simple--regular"
542
550
  }
543
551
  }, {
544
- id: getId(import_chunk_6CNYF6YU.SpaceAction.RENAME),
552
+ id: getId(import_chunk_P4XUXM7Y.SpaceAction.RENAME),
545
553
  type: import_plugin_graph2.ACTION_TYPE,
546
554
  data: async (params) => {
547
555
  await dispatch({
548
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
549
- action: import_chunk_6CNYF6YU.SpaceAction.RENAME,
556
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
557
+ action: import_chunk_P4XUXM7Y.SpaceAction.RENAME,
550
558
  data: {
551
559
  space,
552
560
  ...params
@@ -557,11 +565,10 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
557
565
  label: [
558
566
  "rename space label",
559
567
  {
560
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
568
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
561
569
  }
562
570
  ],
563
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.PencilSimpleLine, props),
564
- iconSymbol: "ph--pencil-simple-line--regular",
571
+ icon: "ph--pencil-simple-line--regular",
565
572
  keyBinding: {
566
573
  macos: "shift+F6",
567
574
  windows: "shift+F6"
@@ -572,12 +579,12 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
572
579
  }
573
580
  if (state !== import_echo4.SpaceState.SPACE_INACTIVE && !hasPendingMigration) {
574
581
  actions.push({
575
- id: getId(import_chunk_6CNYF6YU.SpaceAction.CLOSE),
582
+ id: getId(import_chunk_P4XUXM7Y.SpaceAction.CLOSE),
576
583
  type: import_plugin_graph2.ACTION_TYPE,
577
584
  data: async () => {
578
585
  await dispatch({
579
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
580
- action: import_chunk_6CNYF6YU.SpaceAction.CLOSE,
586
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
587
+ action: import_chunk_P4XUXM7Y.SpaceAction.CLOSE,
581
588
  data: {
582
589
  space
583
590
  }
@@ -587,11 +594,10 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
587
594
  label: [
588
595
  "close space label",
589
596
  {
590
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
597
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
591
598
  }
592
599
  ],
593
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.X, props),
594
- iconSymbol: "ph--x--regular",
600
+ icon: "ph--x--regular",
595
601
  mainAreaDisposition: "menu",
596
602
  disabled: personal
597
603
  }
@@ -599,12 +605,12 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
599
605
  }
600
606
  if (state === import_echo4.SpaceState.SPACE_INACTIVE) {
601
607
  actions.push({
602
- id: getId(import_chunk_6CNYF6YU.SpaceAction.OPEN),
608
+ id: getId(import_chunk_P4XUXM7Y.SpaceAction.OPEN),
603
609
  type: import_plugin_graph2.ACTION_TYPE,
604
610
  data: async () => {
605
611
  await dispatch({
606
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
607
- action: import_chunk_6CNYF6YU.SpaceAction.OPEN,
612
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
613
+ action: import_chunk_P4XUXM7Y.SpaceAction.OPEN,
608
614
  data: {
609
615
  space
610
616
  }
@@ -614,11 +620,10 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
614
620
  label: [
615
621
  "open space label",
616
622
  {
617
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
623
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
618
624
  }
619
625
  ],
620
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.ClockCounterClockwise, props),
621
- iconSymbol: "ph--clock-counter-clockwise--regular",
626
+ icon: "ph--clock-counter-clockwise--regular",
622
627
  disposition: "toolbar",
623
628
  mainAreaDisposition: "in-flow"
624
629
  }
@@ -635,7 +640,7 @@ var createObjectNode = ({ object, space, resolve }) => {
635
640
  if (Object.keys(metadata).length === 0) {
636
641
  return void 0;
637
642
  }
638
- const partials = object instanceof import_chunk_CVZPI2P3.CollectionType ? getCollectionGraphNodePartials({
643
+ const partials = object instanceof import_chunk_HE2GHO6Z.CollectionType ? getCollectionGraphNodePartials({
639
644
  collection: object,
640
645
  space,
641
646
  resolve
@@ -649,11 +654,10 @@ var createObjectNode = ({ object, space, resolve }) => {
649
654
  label: metadata.label?.(object) || object.name || metadata.placeholder || [
650
655
  "unnamed object label",
651
656
  {
652
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
657
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
653
658
  }
654
659
  ],
655
- icon: metadata.icon ?? (() => /* @__PURE__ */ import_react13.default.createElement(import_react12.Placeholder, null)),
656
- iconSymbol: metadata.iconSymbol ?? "ph--placeholder--regular",
660
+ icon: metadata.icon ?? "ph--placeholder--regular",
657
661
  testId: "spacePlugin.object",
658
662
  persistenceClass: "echo",
659
663
  persistenceKey: space?.id
@@ -661,25 +665,24 @@ var createObjectNode = ({ object, space, resolve }) => {
661
665
  };
662
666
  };
663
667
  var constructObjectActionGroups = ({ object, dispatch }) => {
664
- if (!(object instanceof import_chunk_CVZPI2P3.CollectionType)) {
668
+ if (!(object instanceof import_chunk_HE2GHO6Z.CollectionType)) {
665
669
  return [];
666
670
  }
667
671
  const collection = object;
668
672
  const getId = (id) => `${id}/${(0, import_echo4.fullyQualifiedId)(object)}`;
669
673
  const actions = [
670
674
  {
671
- id: getId(import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT),
675
+ id: getId(import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT),
672
676
  type: import_plugin_graph2.ACTION_GROUP_TYPE,
673
677
  data: import_plugin_graph2.actionGroupSymbol,
674
678
  properties: {
675
679
  label: [
676
680
  "create object in collection label",
677
681
  {
678
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
682
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
679
683
  }
680
684
  ],
681
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.Plus, props),
682
- iconSymbol: "ph--plus--regular",
685
+ icon: "ph--plus--regular",
683
686
  disposition: "toolbar",
684
687
  // TODO(wittjosiah): This is currently a navtree feature. Address this with cmd+k integration.
685
688
  // mainAreaDisposition: 'in-flow',
@@ -688,15 +691,15 @@ var constructObjectActionGroups = ({ object, dispatch }) => {
688
691
  },
689
692
  nodes: [
690
693
  {
691
- id: getId(import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT.replace("object", "collection")),
694
+ id: getId(import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT.replace("object", "collection")),
692
695
  type: import_plugin_graph2.ACTION_TYPE,
693
696
  data: () => dispatch([
694
697
  {
695
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
696
- action: import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT,
698
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
699
+ action: import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT,
697
700
  data: {
698
701
  target: collection,
699
- object: (0, import_echo_schema2.create)(import_chunk_CVZPI2P3.CollectionType, {
702
+ object: (0, import_echo_schema2.create)(import_chunk_HE2GHO6Z.CollectionType, {
700
703
  objects: [],
701
704
  views: {}
702
705
  })
@@ -710,11 +713,10 @@ var constructObjectActionGroups = ({ object, dispatch }) => {
710
713
  label: [
711
714
  "create collection label",
712
715
  {
713
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
716
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
714
717
  }
715
718
  ],
716
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.CardsThree, props),
717
- iconSymbol: "ph--cards-three--regular",
719
+ icon: "ph--cards-three--regular",
718
720
  testId: "spacePlugin.createCollection"
719
721
  }
720
722
  }
@@ -728,11 +730,11 @@ var constructObjectActions = ({ node, dispatch }) => {
728
730
  const getId = (id) => `${id}/${(0, import_echo4.fullyQualifiedId)(object)}`;
729
731
  const actions = [
730
732
  {
731
- id: getId(import_chunk_6CNYF6YU.SpaceAction.RENAME_OBJECT),
733
+ id: getId(import_chunk_P4XUXM7Y.SpaceAction.RENAME_OBJECT),
732
734
  type: import_plugin_graph2.ACTION_TYPE,
733
735
  data: async (params) => {
734
736
  await dispatch({
735
- action: import_chunk_6CNYF6YU.SpaceAction.RENAME_OBJECT,
737
+ action: import_chunk_P4XUXM7Y.SpaceAction.RENAME_OBJECT,
736
738
  data: {
737
739
  object,
738
740
  ...params
@@ -741,29 +743,28 @@ var constructObjectActions = ({ node, dispatch }) => {
741
743
  },
742
744
  properties: {
743
745
  label: [
744
- object instanceof import_chunk_CVZPI2P3.CollectionType ? "rename collection label" : "rename object label",
746
+ object instanceof import_chunk_HE2GHO6Z.CollectionType ? "rename collection label" : "rename object label",
745
747
  {
746
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
748
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
747
749
  }
748
750
  ],
749
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.PencilSimpleLine, props),
750
- iconSymbol: "ph--pencil-simple-line--regular",
751
+ icon: "ph--pencil-simple-line--regular",
751
752
  // TODO(wittjosiah): Doesn't work.
752
753
  // keyBinding: 'shift+F6',
753
754
  testId: "spacePlugin.renameObject"
754
755
  }
755
756
  },
756
757
  {
757
- id: getId(import_chunk_6CNYF6YU.SpaceAction.REMOVE_OBJECT),
758
+ id: getId(import_chunk_P4XUXM7Y.SpaceAction.REMOVE_OBJECT),
758
759
  type: import_plugin_graph2.ACTION_TYPE,
759
760
  data: async () => {
760
761
  const graph = (0, import_plugin_graph2.getGraph)(node);
761
762
  const collection = graph.nodes(node, {
762
763
  relation: "inbound"
763
- }).find(({ data }) => data instanceof import_chunk_CVZPI2P3.CollectionType)?.data;
764
+ }).find(({ data }) => data instanceof import_chunk_HE2GHO6Z.CollectionType)?.data;
764
765
  await dispatch([
765
766
  {
766
- action: import_chunk_6CNYF6YU.SpaceAction.REMOVE_OBJECT,
767
+ action: import_chunk_P4XUXM7Y.SpaceAction.REMOVE_OBJECT,
767
768
  data: {
768
769
  object,
769
770
  collection
@@ -773,14 +774,13 @@ var constructObjectActions = ({ node, dispatch }) => {
773
774
  },
774
775
  properties: {
775
776
  label: [
776
- object instanceof import_chunk_CVZPI2P3.CollectionType ? "delete collection label" : "delete object label",
777
+ object instanceof import_chunk_HE2GHO6Z.CollectionType ? "delete collection label" : "delete object label",
777
778
  {
778
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
779
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
779
780
  }
780
781
  ],
781
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.Trash, props),
782
- iconSymbol: "ph--trash--regular",
783
- keyBinding: object instanceof import_chunk_CVZPI2P3.CollectionType ? void 0 : "shift+meta+Backspace",
782
+ icon: "ph--trash--regular",
783
+ keyBinding: object instanceof import_chunk_HE2GHO6Z.CollectionType ? void 0 : "shift+meta+Backspace",
784
784
  testId: "spacePlugin.deleteObject"
785
785
  }
786
786
  },
@@ -795,11 +795,10 @@ var constructObjectActions = ({ node, dispatch }) => {
795
795
  label: [
796
796
  "copy link label",
797
797
  {
798
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
798
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
799
799
  }
800
800
  ],
801
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.Link, props),
802
- iconSymbol: "ph--link--regular",
801
+ icon: "ph--link--regular",
803
802
  testId: "spacePlugin.copyLink"
804
803
  }
805
804
  }
@@ -840,7 +839,7 @@ var cloneObject = async (object, resolve) => {
840
839
  const serializer = metadata.serializer;
841
840
  (0, import_invariant.invariant)(serializer, `No serializer for type: ${typename}`, {
842
841
  F: __dxlog_file,
843
- L: 639,
842
+ L: 604,
844
843
  S: void 0,
845
844
  A: [
846
845
  "serializer",
@@ -856,36 +855,36 @@ var cloneObject = async (object, resolve) => {
856
855
  });
857
856
  };
858
857
  var MenuFooter = ({ object }) => {
859
- const { t } = (0, import_react_ui7.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
858
+ const { t } = (0, import_react_ui6.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
860
859
  const client = (0, import_react_client3.useClient)();
861
860
  const space = (0, import_echo3.getSpace)(object);
862
861
  const spaceName = space ? getSpaceDisplayName(space, {
863
862
  personal: client.spaces.default === space
864
863
  }) : "";
865
- return space ? /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, /* @__PURE__ */ import_react11.default.createElement(import_react_ui7.DropdownMenu.Separator, null), /* @__PURE__ */ import_react11.default.createElement(import_react_ui7.DropdownMenu.GroupLabel, null, t("menu footer label")), /* @__PURE__ */ import_react11.default.createElement("dl", {
864
+ return space ? /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement(import_react_ui6.DropdownMenu.Separator, null), /* @__PURE__ */ import_react9.default.createElement(import_react_ui6.DropdownMenu.GroupLabel, null, t("menu footer label")), /* @__PURE__ */ import_react9.default.createElement("dl", {
866
865
  className: "pis-2 mbe-2 text-xs grid grid-cols-[max-content_1fr] gap-2"
867
- }, /* @__PURE__ */ import_react11.default.createElement("dt", {
866
+ }, /* @__PURE__ */ import_react9.default.createElement("dt", {
868
867
  className: "uppercase text-[.75em] tracking-wide font-medium mbs-px self-start"
869
- }, t("location label")), /* @__PURE__ */ import_react11.default.createElement("dd", {
868
+ }, t("location label")), /* @__PURE__ */ import_react9.default.createElement("dd", {
870
869
  className: "line-clamp-3"
871
- }, /* @__PURE__ */ import_react11.default.createElement(import_react10.Planet, {
870
+ }, /* @__PURE__ */ import_react9.default.createElement(import_react8.Planet, {
872
871
  className: "inline-block mie-1"
873
- }), (0, import_react_ui7.toLocalizedString)(spaceName, t)))) : null;
872
+ }), (0, import_react_ui6.toLocalizedString)(spaceName, t)))) : null;
874
873
  };
875
874
  var WAIT_FOR_OBJECT_TIMEOUT2 = 1e3;
876
875
  var MissingObject = ({ id }) => {
877
- const { t } = (0, import_react_ui8.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
878
- const [waiting, setWaiting] = (0, import_react14.useState)(false);
876
+ const { t } = (0, import_react_ui7.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
877
+ const [waiting, setWaiting] = (0, import_react10.useState)(false);
879
878
  const intentPlugin = (0, import_app_framework4.useResolvePlugin)(import_app_framework4.parseIntentPlugin);
880
- (0, import_react14.useEffect)(() => {
879
+ (0, import_react10.useEffect)(() => {
881
880
  if (!intentPlugin) {
882
881
  return;
883
882
  }
884
883
  const timeout = setTimeout(async () => {
885
884
  setWaiting(true);
886
885
  await intentPlugin.provides.intent.dispatch({
887
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
888
- action: import_chunk_6CNYF6YU.SpaceAction.WAIT_FOR_OBJECT,
886
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
887
+ action: import_chunk_P4XUXM7Y.SpaceAction.WAIT_FOR_OBJECT,
889
888
  data: {
890
889
  id
891
890
  }
@@ -896,13 +895,13 @@ var MissingObject = ({ id }) => {
896
895
  intentPlugin,
897
896
  id
898
897
  ]);
899
- return /* @__PURE__ */ import_react14.default.createElement("div", {
898
+ return /* @__PURE__ */ import_react10.default.createElement("div", {
900
899
  role: "none",
901
- className: (0, import_react_ui_theme5.mx)(import_react_ui_theme5.baseSurface, "min-bs-screen is-full flex items-center justify-center p-8")
902
- }, waiting ? /* @__PURE__ */ import_react14.default.createElement("p", {
900
+ className: (0, import_react_ui_theme3.mx)(import_react_ui_theme3.baseSurface, "min-bs-screen is-full flex items-center justify-center p-8")
901
+ }, waiting ? /* @__PURE__ */ import_react10.default.createElement("p", {
903
902
  role: "alert",
904
- className: (0, import_react_ui_theme5.mx)(import_react_ui_theme5.descriptionText, "border border-dashed border-neutral-400/50 rounded-lg flex items-center justify-center p-8 font-normal text-lg")
905
- }, t("missing object message")) : /* @__PURE__ */ import_react14.default.createElement(import_react_ui8.Status, {
903
+ 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")
904
+ }, t("missing object message")) : /* @__PURE__ */ import_react10.default.createElement(import_react_ui7.Status, {
906
905
  indeterminate: true,
907
906
  "aria-label": "Initializing"
908
907
  }));
@@ -914,12 +913,12 @@ var Status2;
914
913
  Status3[Status3["ERROR"] = 2] = "ERROR";
915
914
  })(Status2 || (Status2 = {}));
916
915
  var PersistenceStatus = ({ db }) => {
917
- const { t } = (0, import_react_ui9.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
918
- const [displayMessage, setDisplayMessage] = (0, import_react16.useState)(false);
919
- const [status, naturalSetStatus] = (0, import_react16.useState)(0);
920
- const [prevStatus, setPrevStatus] = (0, import_react16.useState)(0);
916
+ const { t } = (0, import_react_ui8.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
917
+ const [displayMessage, setDisplayMessage] = (0, import_react12.useState)(false);
918
+ const [status, naturalSetStatus] = (0, import_react12.useState)(0);
919
+ const [prevStatus, setPrevStatus] = (0, import_react12.useState)(0);
921
920
  const _setStatus = (0, import_async2.debounce)(naturalSetStatus, 500);
922
- (0, import_react16.useEffect)(() => {
921
+ (0, import_react12.useEffect)(() => {
923
922
  setPrevStatus(status);
924
923
  if (prevStatus !== status && status === 0) {
925
924
  setDisplayMessage(true);
@@ -931,44 +930,44 @@ var PersistenceStatus = ({ db }) => {
931
930
  ]);
932
931
  switch (status) {
933
932
  case 2:
934
- return /* @__PURE__ */ import_react16.default.createElement("div", {
933
+ return /* @__PURE__ */ import_react12.default.createElement("div", {
935
934
  className: "flex items-center"
936
- }, /* @__PURE__ */ import_react16.default.createElement(import_react15.Warning, {
937
- className: (0, import_react_ui_theme6.mx)((0, import_react_ui_theme6.getSize)(4), "me-1")
938
- }), /* @__PURE__ */ import_react16.default.createElement("span", {
939
- className: (0, import_react_ui_theme6.mx)("text-sm", import_react_ui_theme6.warningText)
935
+ }, /* @__PURE__ */ import_react12.default.createElement(import_react11.Warning, {
936
+ className: (0, import_react_ui_theme4.mx)((0, import_react_ui_theme4.getSize)(4), "me-1")
937
+ }), /* @__PURE__ */ import_react12.default.createElement("span", {
938
+ className: (0, import_react_ui_theme4.mx)("text-sm", import_react_ui_theme4.warningText)
940
939
  }, t("persistence error label")));
941
940
  case 1:
942
- return /* @__PURE__ */ import_react16.default.createElement("div", {
941
+ return /* @__PURE__ */ import_react12.default.createElement("div", {
943
942
  className: "flex items-center"
944
- }, /* @__PURE__ */ import_react16.default.createElement(import_react15.ArrowsCounterClockwise, {
945
- className: (0, import_react_ui_theme6.mx)((0, import_react_ui_theme6.getSize)(4), "me-1")
946
- }), /* @__PURE__ */ import_react16.default.createElement("span", {
947
- className: (0, import_react_ui_theme6.mx)("text-sm", import_react_ui_theme6.staticPlaceholderText)
943
+ }, /* @__PURE__ */ import_react12.default.createElement(import_react11.ArrowsCounterClockwise, {
944
+ className: (0, import_react_ui_theme4.mx)((0, import_react_ui_theme4.getSize)(4), "me-1")
945
+ }), /* @__PURE__ */ import_react12.default.createElement("span", {
946
+ className: (0, import_react_ui_theme4.mx)("text-sm", import_react_ui_theme4.staticPlaceholderText)
948
947
  }, t("persistence pending label")));
949
948
  case 0:
950
949
  default:
951
- return /* @__PURE__ */ import_react16.default.createElement(import_react_ui9.Tooltip.Root, {
950
+ return /* @__PURE__ */ import_react12.default.createElement(import_react_ui8.Tooltip.Root, {
952
951
  delayDuration: 400
953
- }, /* @__PURE__ */ import_react16.default.createElement(import_react_ui9.Tooltip.Trigger, {
952
+ }, /* @__PURE__ */ import_react12.default.createElement(import_react_ui8.Tooltip.Trigger, {
954
953
  role: "status",
955
954
  className: "flex items-center"
956
- }, /* @__PURE__ */ import_react16.default.createElement(import_react15.CheckCircle, {
957
- className: (0, import_react_ui_theme6.mx)((0, import_react_ui_theme6.getSize)(4), "me-1")
958
- }), displayMessage && /* @__PURE__ */ import_react16.default.createElement("span", {
959
- className: (0, import_react_ui_theme6.mx)("text-sm", import_react_ui_theme6.staticPlaceholderText)
960
- }, t("persisted locally label"))), /* @__PURE__ */ import_react16.default.createElement(import_react_ui9.Tooltip.Portal, null, /* @__PURE__ */ import_react16.default.createElement(import_react_ui9.Tooltip.Content, {
955
+ }, /* @__PURE__ */ import_react12.default.createElement(import_react11.CheckCircle, {
956
+ className: (0, import_react_ui_theme4.mx)((0, import_react_ui_theme4.getSize)(4), "me-1")
957
+ }), displayMessage && /* @__PURE__ */ import_react12.default.createElement("span", {
958
+ className: (0, import_react_ui_theme4.mx)("text-sm", import_react_ui_theme4.staticPlaceholderText)
959
+ }, 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, {
961
960
  classNames: "z-10"
962
- }, t("persisted locally message"), /* @__PURE__ */ import_react16.default.createElement(import_react_ui9.Tooltip.Arrow, null))));
961
+ }, t("persisted locally message"), /* @__PURE__ */ import_react12.default.createElement(import_react_ui8.Tooltip.Arrow, null))));
963
962
  }
964
963
  };
965
964
  var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
966
965
  var PopoverRenameObject = ({ object: obj }) => {
967
- const { t } = (0, import_react_ui10.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
968
- const doneButton = (0, import_react17.useRef)(null);
966
+ const { t } = (0, import_react_ui9.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
967
+ const doneButton = (0, import_react13.useRef)(null);
969
968
  const object = obj;
970
- const [name, setName] = (0, import_react17.useState)(object.name || object.title || "");
971
- const handleDone = (0, import_react17.useCallback)(() => {
969
+ const [name, setName] = (0, import_react13.useState)(object.name || object.title || "");
970
+ const handleDone = (0, import_react13.useCallback)(() => {
972
971
  try {
973
972
  object.name = name;
974
973
  } catch {
@@ -989,23 +988,23 @@ var PopoverRenameObject = ({ object: obj }) => {
989
988
  object,
990
989
  name
991
990
  ]);
992
- return /* @__PURE__ */ import_react17.default.createElement("div", {
991
+ return /* @__PURE__ */ import_react13.default.createElement("div", {
993
992
  role: "none",
994
993
  className: "p-1 flex gap-2"
995
- }, /* @__PURE__ */ import_react17.default.createElement("div", {
994
+ }, /* @__PURE__ */ import_react13.default.createElement("div", {
996
995
  role: "none",
997
996
  className: "flex-1"
998
- }, /* @__PURE__ */ import_react17.default.createElement(import_react_ui10.Input.Root, null, /* @__PURE__ */ import_react17.default.createElement(import_react_ui10.Input.Label, {
997
+ }, /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Input.Root, null, /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Input.Label, {
999
998
  srOnly: true
1000
- }, t("object name label")), /* @__PURE__ */ import_react17.default.createElement(import_react_ui10.Input.TextInput, {
999
+ }, t("object name label")), /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Input.TextInput, {
1001
1000
  placeholder: t("object title placeholder"),
1002
1001
  value: name,
1003
1002
  "data-testid": "spacePlugin.renameObject.input",
1004
1003
  onChange: ({ target: { value } }) => setName(value),
1005
1004
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1006
- }))), /* @__PURE__ */ import_react17.default.createElement(import_react_ui10.Popover.Close, {
1005
+ }))), /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Popover.Close, {
1007
1006
  asChild: true
1008
- }, /* @__PURE__ */ import_react17.default.createElement(import_react_ui10.Button, {
1007
+ }, /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Button, {
1009
1008
  ref: doneButton,
1010
1009
  classNames: "self-stretch",
1011
1010
  onClick: handleDone
@@ -1014,33 +1013,33 @@ var PopoverRenameObject = ({ object: obj }) => {
1014
1013
  }))));
1015
1014
  };
1016
1015
  var PopoverRenameSpace = ({ space }) => {
1017
- const { t } = (0, import_react_ui11.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1018
- const doneButton = (0, import_react18.useRef)(null);
1019
- const [name, setName] = (0, import_react18.useState)(space.properties.name ?? "");
1020
- const handleDone = (0, import_react18.useCallback)(() => {
1016
+ const { t } = (0, import_react_ui10.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1017
+ const doneButton = (0, import_react14.useRef)(null);
1018
+ const [name, setName] = (0, import_react14.useState)(space.properties.name ?? "");
1019
+ const handleDone = (0, import_react14.useCallback)(() => {
1021
1020
  space.properties.name = name;
1022
1021
  }, [
1023
1022
  space,
1024
1023
  name
1025
1024
  ]);
1026
- return /* @__PURE__ */ import_react18.default.createElement("div", {
1025
+ return /* @__PURE__ */ import_react14.default.createElement("div", {
1027
1026
  role: "none",
1028
1027
  className: "p-1 flex gap-2"
1029
- }, /* @__PURE__ */ import_react18.default.createElement("div", {
1028
+ }, /* @__PURE__ */ import_react14.default.createElement("div", {
1030
1029
  role: "none",
1031
1030
  className: "flex-1"
1032
- }, /* @__PURE__ */ import_react18.default.createElement(import_react_ui11.Input.Root, null, /* @__PURE__ */ import_react18.default.createElement(import_react_ui11.Input.Label, {
1031
+ }, /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Input.Root, null, /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Input.Label, {
1033
1032
  srOnly: true
1034
- }, t("space name label")), /* @__PURE__ */ import_react18.default.createElement(import_react_ui11.Input.TextInput, {
1033
+ }, t("space name label")), /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Input.TextInput, {
1035
1034
  defaultValue: space.properties.name ?? "",
1036
1035
  placeholder: t("unnamed space label"),
1037
1036
  onChange: ({ target: { value } }) => setName(value),
1038
1037
  // TODO(wittjosiah): Ideally this should access the popover context to close the popover.
1039
1038
  // Currently this is not possible because Radix does not expose the popover context.
1040
1039
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1041
- }))), /* @__PURE__ */ import_react18.default.createElement(import_react_ui11.Popover.Close, {
1040
+ }))), /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Popover.Close, {
1042
1041
  asChild: true
1043
- }, /* @__PURE__ */ import_react18.default.createElement(import_react_ui11.Button, {
1042
+ }, /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Button, {
1044
1043
  ref: doneButton,
1045
1044
  classNames: "self-stretch",
1046
1045
  onClick: handleDone
@@ -1050,9 +1049,9 @@ var PopoverRenameSpace = ({ space }) => {
1050
1049
  };
1051
1050
  var ShareSpaceButton = ({ spaceId }) => {
1052
1051
  const dispatch = (0, import_app_framework5.useIntentDispatcher)();
1053
- return /* @__PURE__ */ import_react19.default.createElement(ShareSpaceButtonImpl, {
1052
+ return /* @__PURE__ */ import_react15.default.createElement(ShareSpaceButtonImpl, {
1054
1053
  onClick: () => dispatch({
1055
- action: import_chunk_6CNYF6YU.SpaceAction.SHARE,
1054
+ action: import_chunk_P4XUXM7Y.SpaceAction.SHARE,
1056
1055
  data: {
1057
1056
  spaceId
1058
1057
  }
@@ -1060,8 +1059,8 @@ var ShareSpaceButton = ({ spaceId }) => {
1060
1059
  });
1061
1060
  };
1062
1061
  var ShareSpaceButtonImpl = ({ onClick }) => {
1063
- const { t } = (0, import_react_ui12.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1064
- return /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.Button, {
1062
+ const { t } = (0, import_react_ui11.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1063
+ return /* @__PURE__ */ import_react15.default.createElement(import_react_ui11.Button, {
1065
1064
  "data-testid": "spacePlugin.shareSpaceButton",
1066
1065
  onClick,
1067
1066
  classNames: "mli-1"
@@ -1071,9 +1070,9 @@ var activeActionKeyStorageKey = "dxos:react-shell/space-manager/active-action";
1071
1070
  var Presence = import_echo6.SpaceMember.PresenceState;
1072
1071
  var handleCreateInvitationUrl = (invitationCode) => `${origin}?spaceInvitationCode=${invitationCode}`;
1073
1072
  var SpaceMemberList = ({ members }) => {
1074
- return members.length > 0 ? /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.List, {
1073
+ return members.length > 0 ? /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.List, {
1075
1074
  classNames: "col-start-2 col-end-5 gap-y-1 grid grid-cols-subgrid items-center"
1076
- }, members.map((member) => /* @__PURE__ */ import_react24.default.createElement(import_react25.IdentityListItem, {
1075
+ }, members.map((member) => /* @__PURE__ */ import_react20.default.createElement(import_react21.IdentityListItem, {
1077
1076
  classNames: "contents",
1078
1077
  key: member.identity.identityKey.toHex(),
1079
1078
  identity: member.identity,
@@ -1081,7 +1080,7 @@ var SpaceMemberList = ({ members }) => {
1081
1080
  }))) : null;
1082
1081
  };
1083
1082
  var SpaceMembersSection = ({ space }) => {
1084
- const { t } = (0, import_react_ui14.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1083
+ const { t } = (0, import_react_ui13.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1085
1084
  const invitations = (0, import_echo6.useSpaceInvitations)(space.key);
1086
1085
  const { dispatch } = (0, import_app_framework7.useIntent)();
1087
1086
  const handleCloseDialog = () => dispatch({
@@ -1117,8 +1116,8 @@ var SpaceMembersSection = ({ space }) => {
1117
1116
  description: t("invite one description", {
1118
1117
  ns: "os"
1119
1118
  }),
1120
- icon: import_react23.UserPlus,
1121
- onClick: (0, import_react24.useCallback)(() => {
1119
+ icon: import_react19.UserPlus,
1120
+ onClick: (0, import_react20.useCallback)(() => {
1122
1121
  space.share?.({
1123
1122
  type: import_invitations2.Invitation.Type.INTERACTIVE,
1124
1123
  authMethod: import_invitations2.Invitation.AuthMethod.SHARED_SECRET
@@ -1134,8 +1133,8 @@ var SpaceMembersSection = ({ space }) => {
1134
1133
  description: t("invite many description", {
1135
1134
  ns: "os"
1136
1135
  }),
1137
- icon: import_react23.UsersThree,
1138
- onClick: (0, import_react24.useCallback)(() => {
1136
+ icon: import_react19.UsersThree,
1137
+ onClick: (0, import_react20.useCallback)(() => {
1139
1138
  space.share?.({
1140
1139
  type: import_invitations2.Invitation.Type.INTERACTIVE,
1141
1140
  authMethod: import_invitations2.Invitation.AuthMethod.NONE,
@@ -1146,7 +1145,7 @@ var SpaceMembersSection = ({ space }) => {
1146
1145
  ])
1147
1146
  }
1148
1147
  };
1149
- const [activeActionKey, setInternalActiveActionKey] = (0, import_react24.useState)(localStorage.getItem(activeActionKeyStorageKey) ?? "inviteOne");
1148
+ const [activeActionKey, setInternalActiveActionKey] = (0, import_react20.useState)(localStorage.getItem(activeActionKeyStorageKey) ?? "inviteOne");
1150
1149
  const setActiveActionKey = (nextKey) => {
1151
1150
  setInternalActiveActionKey(nextKey);
1152
1151
  localStorage.setItem(activeActionKeyStorageKey, nextKey);
@@ -1159,101 +1158,101 @@ var SpaceMembersSection = ({ space }) => {
1159
1158
  [Presence.ONLINE]: [],
1160
1159
  [Presence.OFFLINE]: []
1161
1160
  });
1162
- return /* @__PURE__ */ import_react24.default.createElement("section", {
1161
+ return /* @__PURE__ */ import_react20.default.createElement("section", {
1163
1162
  className: "mbe-4 col-span-3 grid gap-y-2 grid-cols-subgrid auto-rows-min"
1164
- }, /* @__PURE__ */ import_react24.default.createElement("h2", {
1163
+ }, /* @__PURE__ */ import_react20.default.createElement("h2", {
1165
1164
  className: "contents"
1166
- }, /* @__PURE__ */ import_react24.default.createElement(import_react23.UsersThree, {
1165
+ }, /* @__PURE__ */ import_react20.default.createElement(import_react19.UsersThree, {
1167
1166
  weight: "duotone",
1168
- className: (0, import_react_ui_theme8.mx)((0, import_react_ui_theme8.getSize)(5), "place-self-center")
1169
- }), /* @__PURE__ */ import_react24.default.createElement("span", {
1167
+ className: (0, import_react_ui_theme6.mx)((0, import_react_ui_theme6.getSize)(5), "place-self-center")
1168
+ }), /* @__PURE__ */ import_react20.default.createElement("span", {
1170
1169
  className: "text-lg col-span-2"
1171
- }, t("space members label"))), /* @__PURE__ */ import_react24.default.createElement("h3", {
1170
+ }, t("space members label"))), /* @__PURE__ */ import_react20.default.createElement("h3", {
1172
1171
  className: "col-start-2 col-span-3 text-sm italic text-description"
1173
- }, t("invitations heading")), invitations.length > 0 && /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.List, {
1172
+ }, t("invitations heading")), invitations.length > 0 && /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.List, {
1174
1173
  classNames: "col-start-2 col-span-2 gap-y-2 grid grid-cols-[var(--rail-size)_1fr_var(--rail-action)_var(--rail-action)]"
1175
- }, invitations.map((invitation) => /* @__PURE__ */ import_react24.default.createElement(import_react25.InvitationListItem, {
1174
+ }, invitations.map((invitation) => /* @__PURE__ */ import_react20.default.createElement(import_react21.InvitationListItem, {
1176
1175
  reverseEffects: true,
1177
1176
  classNames: "pis-0 pie-0 gap-0 col-span-4 grid grid-cols-subgrid",
1178
1177
  key: invitation.get().invitationId,
1179
1178
  invitation,
1180
1179
  send: handleInvitationSelect,
1181
1180
  createInvitationUrl: handleCreateInvitationUrl
1182
- }))), /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.ButtonGroup, {
1181
+ }))), /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.ButtonGroup, {
1183
1182
  classNames: "col-start-2 col-end-4 grid grid-cols-[1fr_var(--rail-action)] place-self-grow gap-px"
1184
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.Button, {
1183
+ }, /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.Button, {
1185
1184
  classNames: "gap-2",
1186
1185
  onClick: activeAction.onClick
1187
- }, /* @__PURE__ */ import_react24.default.createElement(activeAction.icon, {
1188
- className: (0, import_react_ui_theme8.getSize)(5)
1189
- }), /* @__PURE__ */ import_react24.default.createElement("span", null, t(activeAction.label, {
1186
+ }, /* @__PURE__ */ import_react20.default.createElement(activeAction.icon, {
1187
+ className: (0, import_react_ui_theme6.getSize)(5)
1188
+ }), /* @__PURE__ */ import_react20.default.createElement("span", null, t(activeAction.label, {
1190
1189
  ns: "os"
1191
- }))), /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.DropdownMenu.Root, null, /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.DropdownMenu.Trigger, {
1190
+ }))), /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.DropdownMenu.Root, null, /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.DropdownMenu.Trigger, {
1192
1191
  asChild: true
1193
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.Button, {
1192
+ }, /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.Button, {
1194
1193
  classNames: "pli-0"
1195
- }, /* @__PURE__ */ import_react24.default.createElement(import_react23.CaretDown, {
1196
- className: (0, import_react_ui_theme8.getSize)(4)
1197
- }))), /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.DropdownMenu.Content, null, /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.DropdownMenu.Viewport, null, Object.entries(inviteActions).map(([id, action]) => {
1198
- return /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.DropdownMenu.CheckboxItem, {
1194
+ }, /* @__PURE__ */ import_react20.default.createElement(import_react19.CaretDown, {
1195
+ className: (0, import_react_ui_theme6.getSize)(4)
1196
+ }))), /* @__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]) => {
1197
+ return /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.DropdownMenu.CheckboxItem, {
1199
1198
  key: id,
1200
1199
  "aria-labelledby": `${id}__label`,
1201
1200
  "aria-describedby": `${id}__description`,
1202
1201
  checked: activeActionKey === id,
1203
1202
  onCheckedChange: (checked) => checked && setActiveActionKey(id),
1204
1203
  classNames: "gap-2"
1205
- }, action.icon && /* @__PURE__ */ import_react24.default.createElement(action.icon, {
1206
- className: (0, import_react_ui_theme8.getSize)(5)
1207
- }), /* @__PURE__ */ import_react24.default.createElement("div", {
1204
+ }, action.icon && /* @__PURE__ */ import_react20.default.createElement(action.icon, {
1205
+ className: (0, import_react_ui_theme6.getSize)(5)
1206
+ }), /* @__PURE__ */ import_react20.default.createElement("div", {
1208
1207
  role: "none",
1209
1208
  className: "flex-1 min-is-0 space-b-1"
1210
- }, /* @__PURE__ */ import_react24.default.createElement("p", {
1209
+ }, /* @__PURE__ */ import_react20.default.createElement("p", {
1211
1210
  id: `${id}__label`
1212
1211
  }, t(action.label, {
1213
1212
  ns: "os"
1214
- })), action.description && /* @__PURE__ */ import_react24.default.createElement("p", {
1213
+ })), action.description && /* @__PURE__ */ import_react20.default.createElement("p", {
1215
1214
  id: `${id}__description`,
1216
- className: import_react_ui_theme8.descriptionText
1215
+ className: import_react_ui_theme6.descriptionText
1217
1216
  }, t(action.description, {
1218
1217
  ns: "os"
1219
- }))), /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.DropdownMenu.ItemIndicator, {
1218
+ }))), /* @__PURE__ */ import_react20.default.createElement(import_react_ui13.DropdownMenu.ItemIndicator, {
1220
1219
  asChild: true
1221
- }, /* @__PURE__ */ import_react24.default.createElement(import_react23.Check, {
1222
- className: (0, import_react_ui_theme8.getSize)(4)
1220
+ }, /* @__PURE__ */ import_react20.default.createElement(import_react19.Check, {
1221
+ className: (0, import_react_ui_theme6.getSize)(4)
1223
1222
  })));
1224
- })), /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.DropdownMenu.Arrow, null)))), members[Presence.ONLINE].length + members[Presence.OFFLINE].length < 1 ? /* @__PURE__ */ import_react24.default.createElement("p", {
1225
- className: (0, import_react_ui_theme8.mx)(import_react_ui_theme8.descriptionText, "text-center is-full mlb-2")
1223
+ })), /* @__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", {
1224
+ className: (0, import_react_ui_theme6.mx)(import_react_ui_theme6.descriptionText, "text-center is-full mlb-2")
1226
1225
  }, t("empty space members message", {
1227
1226
  ns: "os"
1228
- })) : /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, /* @__PURE__ */ import_react24.default.createElement("h3", {
1227
+ })) : /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement("h3", {
1229
1228
  className: "col-start-2 col-end-5 text-sm italic text-description"
1230
1229
  }, t("active space members heading", {
1231
1230
  count: members[Presence.ONLINE].length
1232
- })), /* @__PURE__ */ import_react24.default.createElement(SpaceMemberList, {
1231
+ })), /* @__PURE__ */ import_react20.default.createElement(SpaceMemberList, {
1233
1232
  members: members[Presence.ONLINE]
1234
- }), /* @__PURE__ */ import_react24.default.createElement("h3", {
1233
+ }), /* @__PURE__ */ import_react20.default.createElement("h3", {
1235
1234
  className: "col-start-2 col-end-5 text-sm italic text-description"
1236
1235
  }, t("inactive space members heading", {
1237
1236
  count: members[Presence.OFFLINE].length
1238
- })), /* @__PURE__ */ import_react24.default.createElement(SpaceMemberList, {
1237
+ })), /* @__PURE__ */ import_react20.default.createElement(SpaceMemberList, {
1239
1238
  members: members[Presence.OFFLINE]
1240
1239
  })));
1241
1240
  };
1242
1241
  var KeyShortcuts = () => {
1243
- const { t } = (0, import_react_ui13.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1244
- return /* @__PURE__ */ import_react21.default.createElement("section", {
1242
+ const { t } = (0, import_react_ui12.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1243
+ return /* @__PURE__ */ import_react17.default.createElement("section", {
1245
1244
  className: "mbe-4 col-span-4 md:col-start-5 md:col-end-7 grid grid-cols-subgrid gap-y-2 auto-rows-min"
1246
- }, /* @__PURE__ */ import_react21.default.createElement("h2", {
1245
+ }, /* @__PURE__ */ import_react17.default.createElement("h2", {
1247
1246
  className: "contents"
1248
- }, /* @__PURE__ */ import_react21.default.createElement(import_react20.Command, {
1247
+ }, /* @__PURE__ */ import_react17.default.createElement(import_react16.Command, {
1249
1248
  weight: "duotone",
1250
- className: (0, import_react_ui_theme7.mx)((0, import_react_ui_theme7.getSize)(5), "place-self-center")
1251
- }), /* @__PURE__ */ import_react21.default.createElement("span", {
1249
+ className: (0, import_react_ui_theme5.mx)((0, import_react_ui_theme5.getSize)(5), "place-self-center")
1250
+ }), /* @__PURE__ */ import_react17.default.createElement("span", {
1252
1251
  className: "text-lg col-span-2 md:col-span-1"
1253
- }, t("keyshortcuts label"))), /* @__PURE__ */ import_react21.default.createElement("div", {
1252
+ }, t("keyshortcuts label"))), /* @__PURE__ */ import_react17.default.createElement("div", {
1254
1253
  role: "none",
1255
1254
  className: "col-start-2 col-end-4 md:col-end-5 pie-2"
1256
- }, /* @__PURE__ */ import_react21.default.createElement(import_app_framework6.Surface, {
1255
+ }, /* @__PURE__ */ import_react17.default.createElement(import_app_framework6.Surface, {
1257
1256
  role: "keyshortcuts"
1258
1257
  })));
1259
1258
  };
@@ -1261,42 +1260,42 @@ var spaceMainLayout = "grid gap-y-2 auto-rows-min before:bs-2 before:col-span-5
1261
1260
  var SpaceMain = ({ space, role }) => {
1262
1261
  const state = space.state.get();
1263
1262
  const ready = state === import_echo5.SpaceState.SPACE_READY;
1264
- const Root = role === "main" ? import_react_ui13.Main.Content : "div";
1265
- return /* @__PURE__ */ import_react21.default.createElement(import_react22.ClipboardProvider, null, /* @__PURE__ */ import_react21.default.createElement(Root, {
1263
+ const Root = role === "main" ? import_react_ui12.Main.Content : "div";
1264
+ return /* @__PURE__ */ import_react17.default.createElement(import_react18.ClipboardProvider, null, /* @__PURE__ */ import_react17.default.createElement(Root, {
1266
1265
  ...role === "main" ? {
1267
1266
  classNames: [
1268
- import_react_ui_theme7.topbarBlockPaddingStart,
1267
+ import_react_ui_theme5.topbarBlockPaddingStart,
1269
1268
  "min-bs-dvh",
1270
1269
  spaceMainLayout
1271
1270
  ]
1272
1271
  } : {
1273
1272
  role: "none",
1274
- className: (0, import_react_ui_theme7.mx)(import_react_ui_theme7.topbarBlockPaddingStart, "row-span-2", spaceMainLayout)
1273
+ className: (0, import_react_ui_theme5.mx)(import_react_ui_theme5.topbarBlockPaddingStart, "row-span-2", spaceMainLayout)
1275
1274
  },
1276
1275
  "data-testid": `spacePlugin.${role}`,
1277
1276
  "data-isready": ready ? "true" : "false"
1278
- }, ready && /* @__PURE__ */ import_react21.default.createElement(SpaceMembersSection, {
1277
+ }, ready && /* @__PURE__ */ import_react17.default.createElement(SpaceMembersSection, {
1279
1278
  space
1280
- }), /* @__PURE__ */ import_react21.default.createElement(KeyShortcuts, null)));
1279
+ }), /* @__PURE__ */ import_react17.default.createElement(KeyShortcuts, null)));
1281
1280
  };
1282
1281
  var REFRESH_INTERVAL = 5e3;
1283
1282
  var ACTIVITY_DURATION = 3e4;
1284
1283
  var noViewers = new import_util2.ComplexMap(import_react_client4.PublicKey.hash);
1285
1284
  var getName = (identity) => identity.profile?.displayName ?? (0, import_display_name.generateName)(identity.identityKey.toHex());
1286
1285
  var SpacePresence = ({ object, spaceKey }) => {
1287
- const density = (0, import_react_ui15.useDensityContext)();
1288
- const spacePlugin = (0, import_app_framework8.usePlugin)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1286
+ const density = (0, import_react_ui14.useDensityContext)();
1287
+ const spacePlugin = (0, import_app_framework8.usePlugin)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1289
1288
  const client = (0, import_react_client4.useClient)();
1290
1289
  const identity = (0, import_halo.useIdentity)();
1291
1290
  const space = spaceKey ? client.spaces.get(spaceKey) : (0, import_echo7.getSpace)(object);
1292
1291
  const spaceMembers = (0, import_echo7.useMembers)(space?.key);
1293
- const [_moment, setMoment] = (0, import_react26.useState)(Date.now());
1294
- (0, import_react26.useEffect)(() => {
1292
+ const [_moment, setMoment] = (0, import_react22.useState)(Date.now());
1293
+ (0, import_react22.useEffect)(() => {
1295
1294
  const interval = setInterval(() => setMoment(Date.now()), REFRESH_INTERVAL);
1296
1295
  return () => clearInterval(interval);
1297
1296
  }, []);
1298
- const memberOnline = (0, import_react26.useCallback)((member) => member.presence === 1, []);
1299
- const memberIsNotSelf = (0, import_react26.useCallback)((member) => !identity?.identityKey.equals(member.identity.identityKey), [
1297
+ const memberOnline = (0, import_react22.useCallback)((member) => member.presence === 1, []);
1298
+ const memberIsNotSelf = (0, import_react22.useCallback)((member) => !identity?.identityKey.equals(member.identity.identityKey), [
1300
1299
  identity?.identityKey
1301
1300
  ]);
1302
1301
  if (!identity || !spacePlugin || !space) {
@@ -1314,63 +1313,63 @@ var SpacePresence = ({ object, spaceKey }) => {
1314
1313
  lastSeen
1315
1314
  };
1316
1315
  }).toSorted((a, b) => a.lastSeen - b.lastSeen);
1317
- return density === "fine" ? /* @__PURE__ */ import_react26.default.createElement(SmallPresence, {
1316
+ return density === "fine" ? /* @__PURE__ */ import_react22.default.createElement(SmallPresence, {
1318
1317
  count: membersForObject.length
1319
- }) : /* @__PURE__ */ import_react26.default.createElement(FullPresence, {
1318
+ }) : /* @__PURE__ */ import_react22.default.createElement(FullPresence, {
1320
1319
  members: membersForObject
1321
1320
  });
1322
1321
  };
1323
1322
  var FullPresence = (props) => {
1324
1323
  const { size = 9, onMemberClick } = props;
1325
- const members = (0, import_react_ui15.useDefaultValue)(props.members, []);
1324
+ const members = (0, import_react_ui14.useDefaultValue)(props.members, () => []);
1326
1325
  if (members.length === 0) {
1327
1326
  return null;
1328
1327
  }
1329
- return /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.AvatarGroup.Root, {
1328
+ return /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.AvatarGroup.Root, {
1330
1329
  size,
1331
1330
  classNames: "mbs-2 mie-4",
1332
1331
  "data-testid": "spacePlugin.presence"
1333
- }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Root, {
1332
+ }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Root, {
1334
1333
  key: member.identity.identityKey.toHex()
1335
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Trigger, null, /* @__PURE__ */ import_react26.default.createElement(PrensenceAvatar, {
1334
+ }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Trigger, null, /* @__PURE__ */ import_react22.default.createElement(PrensenceAvatar, {
1336
1335
  identity: member.identity,
1337
1336
  group: true,
1338
1337
  match: member.currentlyAttended,
1339
1338
  index: members.length - i,
1340
1339
  onClick: () => onMemberClick?.(member)
1341
- })), /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Portal, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Content, {
1340
+ })), /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Portal, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Content, {
1342
1341
  side: "bottom"
1343
- }, /* @__PURE__ */ import_react26.default.createElement("span", null, getName(member.identity)), /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Arrow, null))))), members.length > 3 && /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Root, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Trigger, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.AvatarGroupItem.Root, {
1342
+ }, /* @__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, {
1344
1343
  status: "inactive"
1345
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Avatar.Frame, {
1344
+ }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Avatar.Frame, {
1346
1345
  style: {
1347
1346
  zIndex: members.length - 4
1348
1347
  }
1349
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Avatar.Fallback, {
1348
+ }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Avatar.Fallback, {
1350
1349
  text: `+${members.length - 3}`
1351
- })))), /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Portal, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Content, {
1350
+ })))), /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Portal, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Content, {
1352
1351
  side: "bottom"
1353
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Arrow, null), /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.List, {
1352
+ }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Arrow, null), /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.List, {
1354
1353
  classNames: "max-h-56 overflow-y-auto"
1355
- }, members.map((member) => /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.ListItem.Root, {
1354
+ }, members.map((member) => /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.ListItem.Root, {
1356
1355
  key: member.identity.identityKey.toHex(),
1357
1356
  classNames: "flex gap-2 items-center cursor-pointer mbe-2",
1358
1357
  onClick: () => onMemberClick?.(member),
1359
1358
  "data-testid": "identity-list-item"
1360
- }, /* @__PURE__ */ import_react26.default.createElement(PrensenceAvatar, {
1359
+ }, /* @__PURE__ */ import_react22.default.createElement(PrensenceAvatar, {
1361
1360
  identity: member.identity,
1362
1361
  showName: true,
1363
1362
  match: member.currentlyAttended
1364
1363
  }))))))));
1365
1364
  };
1366
1365
  var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) => {
1367
- const Root = group ? import_react_ui15.AvatarGroupItem.Root : import_react_ui15.Avatar.Root;
1366
+ const Root = group ? import_react_ui14.AvatarGroupItem.Root : import_react_ui14.Avatar.Root;
1368
1367
  const status = match ? "current" : "active";
1369
1368
  const fallbackValue = (0, import_util2.keyToFallback)(identity.identityKey);
1370
- return /* @__PURE__ */ import_react26.default.createElement(Root, {
1369
+ return /* @__PURE__ */ import_react22.default.createElement(Root, {
1371
1370
  status,
1372
1371
  hue: identity.profile?.data?.hue || fallbackValue.hue
1373
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Avatar.Frame, {
1372
+ }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Avatar.Frame, {
1374
1373
  "data-testid": "spacePlugin.presence.member",
1375
1374
  "data-status": status,
1376
1375
  ...index ? {
@@ -1379,57 +1378,336 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
1379
1378
  }
1380
1379
  } : {},
1381
1380
  onClick: () => onClick?.()
1382
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Avatar.Fallback, {
1381
+ }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Avatar.Fallback, {
1383
1382
  text: identity.profile?.data?.emoji || fallbackValue.emoji
1384
- })), showName && /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Avatar.Label, {
1383
+ })), showName && /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Avatar.Label, {
1385
1384
  classNames: "text-sm truncate pli-2"
1386
1385
  }, getName(identity)));
1387
1386
  };
1388
1387
  var SmallPresenceLive = ({ viewers }) => {
1389
- const [moment, setMoment] = (0, import_react26.useState)(Date.now());
1390
- (0, import_react26.useEffect)(() => {
1388
+ const [moment, setMoment] = (0, import_react22.useState)(Date.now());
1389
+ (0, import_react22.useEffect)(() => {
1391
1390
  const interval = setInterval(() => setMoment(Date.now()), REFRESH_INTERVAL);
1392
1391
  return () => clearInterval(interval);
1393
1392
  }, []);
1394
1393
  const activeViewers = viewers ? Array.from(viewers.values()).filter(({ lastSeen }) => moment - lastSeen < ACTIVITY_DURATION) : [];
1395
- return /* @__PURE__ */ import_react26.default.createElement(SmallPresence, {
1394
+ return /* @__PURE__ */ import_react22.default.createElement(SmallPresence, {
1396
1395
  count: activeViewers.length
1397
1396
  });
1398
1397
  };
1399
1398
  var SmallPresence = ({ count }) => {
1400
- const { t } = (0, import_react_ui15.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1401
- return /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Root, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Trigger, {
1399
+ const { t } = (0, import_react_ui14.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1400
+ return /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Root, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Trigger, {
1402
1401
  asChild: true
1403
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui_attention.AttentionGlyph, {
1402
+ }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui_attention.AttentionGlyph, {
1404
1403
  presence: count > 1 ? "many" : count === 1 ? "one" : "none",
1405
1404
  classNames: "self-center mie-1"
1406
- })), /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Portal, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Content, {
1405
+ })), /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Portal, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Content, {
1407
1406
  side: "bottom",
1408
1407
  classNames: "z-[70]"
1409
- }, /* @__PURE__ */ import_react26.default.createElement("span", null, t("presence label", {
1408
+ }, /* @__PURE__ */ import_react22.default.createElement("span", null, t("presence label", {
1410
1409
  count
1411
- })), /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Arrow, null))));
1410
+ })), /* @__PURE__ */ import_react22.default.createElement(import_react_ui14.Tooltip.Arrow, null))));
1412
1411
  };
1413
1412
  var SpaceSettings = ({ settings }) => {
1414
- const { t } = (0, import_react_ui16.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1413
+ const { t } = (0, import_react_ui15.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1415
1414
  const dispatch = (0, import_app_framework9.useIntentDispatcher)();
1416
- return /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement(import_plugin_settings.SettingsValue, {
1415
+ const plugins = (0, import_app_framework9.useResolvePlugins)(import_chunk_HE2GHO6Z.parseSpaceInitPlugin);
1416
+ return /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, /* @__PURE__ */ import_react23.default.createElement(import_plugin_settings.SettingsValue, {
1417
1417
  label: t("show hidden spaces label")
1418
- }, /* @__PURE__ */ import_react27.default.createElement(import_react_ui16.Input.Switch, {
1418
+ }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Input.Switch, {
1419
1419
  checked: settings.showHidden,
1420
1420
  onCheckedChange: (checked) => dispatch({
1421
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
1422
- action: import_chunk_6CNYF6YU.SpaceAction.TOGGLE_HIDDEN,
1421
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
1422
+ action: import_chunk_P4XUXM7Y.SpaceAction.TOGGLE_HIDDEN,
1423
1423
  data: {
1424
1424
  state: !!checked
1425
1425
  }
1426
1426
  })
1427
- })));
1427
+ })), /* @__PURE__ */ import_react23.default.createElement(import_plugin_settings.SettingsValue, {
1428
+ label: t("default on space create label")
1429
+ }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Select.Root, {
1430
+ value: settings.onSpaceCreate,
1431
+ onValueChange: (value) => {
1432
+ settings.onSpaceCreate = value;
1433
+ }
1434
+ }, /* @__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, {
1435
+ key: onSpaceCreate.action,
1436
+ value: onSpaceCreate.action
1437
+ }, (0, import_react_ui15.toLocalizedString)(onSpaceCreate.label, t)))))))));
1438
+ };
1439
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SaveStatus.tsx";
1440
+ var SaveStatus = () => {
1441
+ const { t } = (0, import_react_ui16.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1442
+ const client = (0, import_react_client5.useClient)();
1443
+ const [state, setState] = (0, import_react24.useState)("saved");
1444
+ (0, import_react24.useEffect)(() => {
1445
+ return createClientSaveTracker(client, (state2) => {
1446
+ setState(state2);
1447
+ });
1448
+ }, []);
1449
+ return /* @__PURE__ */ import_react24.default.createElement(import_plugin_status_bar.StatusBar.Item, {
1450
+ title: state === "saving" ? t("saving label") : t("saved label")
1451
+ }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Icon, {
1452
+ icon: state === "saving" ? "ph--arrows-clockwise--regular" : "ph--check-circle--regular",
1453
+ size: 4
1454
+ }));
1455
+ };
1456
+ var createClientSaveTracker = (client, cb) => {
1457
+ const unsubscribeCallbacks = {};
1458
+ const state = {};
1459
+ const install = (spaces) => {
1460
+ for (const space of spaces) {
1461
+ if (state[space.id]) {
1462
+ continue;
1463
+ }
1464
+ state[space.id] = "saved";
1465
+ unsubscribeCallbacks[space.id] = createSpaceSaveTracker(space, (s) => {
1466
+ state[space.id] = s;
1467
+ cb(Object.values(state).some((s2) => s2 === "saving") ? "saving" : "saved");
1468
+ });
1469
+ }
1470
+ };
1471
+ client.spaces.subscribe((spaces) => {
1472
+ install(spaces);
1473
+ });
1474
+ install(client.spaces.get());
1475
+ return () => {
1476
+ for (const unsubscribe of Object.values(unsubscribeCallbacks)) {
1477
+ unsubscribe();
1478
+ }
1479
+ };
1480
+ };
1481
+ var createSpaceSaveTracker = (space, cb) => {
1482
+ const ctx = new import_context.Context(void 0, {
1483
+ F: __dxlog_file3,
1484
+ L: 64
1485
+ });
1486
+ void space.waitUntilReady().then(() => {
1487
+ if (ctx.disposed) {
1488
+ return;
1489
+ }
1490
+ let hasUnsavedChanges = false;
1491
+ let lastFlushPromise;
1492
+ space.crud.saveStateChanged.on(ctx, ({ unsavedDocuments }) => {
1493
+ hasUnsavedChanges = unsavedDocuments.length > 0;
1494
+ });
1495
+ space.crud.saveStateChanged.debounce(500).on(ctx, () => {
1496
+ if (hasUnsavedChanges) {
1497
+ lastFlushPromise = void 0;
1498
+ cb("saving");
1499
+ } else {
1500
+ const flushPromise = space.crud.flush();
1501
+ lastFlushPromise = flushPromise;
1502
+ void flushPromise.then(() => {
1503
+ if (lastFlushPromise === flushPromise) {
1504
+ cb("saved");
1505
+ }
1506
+ });
1507
+ }
1508
+ });
1509
+ });
1510
+ return () => {
1511
+ void ctx.dispose();
1512
+ };
1513
+ };
1514
+ var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/types.ts";
1515
+ var createEmptyEdgeSyncState = () => ({
1516
+ missingOnLocal: 0,
1517
+ missingOnRemote: 0,
1518
+ localDocumentCount: 0,
1519
+ remoteDocumentCount: 0,
1520
+ differentDocuments: 0
1521
+ });
1522
+ var getSyncSummary = (syncMap) => {
1523
+ return Object.entries(syncMap).reduce((summary, [_spaceId, peerState]) => {
1524
+ summary.missingOnLocal += peerState.missingOnLocal;
1525
+ summary.missingOnRemote += peerState.missingOnRemote;
1526
+ summary.localDocumentCount += peerState.localDocumentCount;
1527
+ summary.remoteDocumentCount += peerState.remoteDocumentCount;
1528
+ summary.differentDocuments += peerState.differentDocuments;
1529
+ return summary;
1530
+ }, createEmptyEdgeSyncState());
1531
+ };
1532
+ var isEdgePeerId = (peerId, spaceId) => peerId.startsWith(`${import_protocols.EdgeService.AUTOMERGE_REPLICATOR}:${spaceId}`);
1533
+ var useSyncState = () => {
1534
+ const client = (0, import_react_client6.useClient)();
1535
+ const [spaceState, setSpaceState] = (0, import_react26.useState)({});
1536
+ (0, import_react26.useEffect)(() => {
1537
+ const ctx = new import_context2.Context(void 0, {
1538
+ F: __dxlog_file4,
1539
+ L: 48
1540
+ });
1541
+ const createSubscriptions = (spaces) => {
1542
+ for (const space of spaces) {
1543
+ if (spaceState[space.id]) {
1544
+ continue;
1545
+ }
1546
+ ctx.onDispose(space.crud.subscribeToSyncState(ctx, ({ peers = [] }) => {
1547
+ const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));
1548
+ if (syncState) {
1549
+ setSpaceState((spaceState2) => ({
1550
+ ...spaceState2,
1551
+ [space.id]: syncState
1552
+ }));
1553
+ }
1554
+ }));
1555
+ }
1556
+ };
1557
+ createSubscriptions(client.spaces.get());
1558
+ client.spaces.subscribe((spaces) => {
1559
+ createSubscriptions(spaces);
1560
+ });
1561
+ return () => {
1562
+ void ctx.dispose();
1563
+ };
1564
+ }, [
1565
+ client
1566
+ ]);
1567
+ return spaceState;
1568
+ };
1569
+ var SYNC_STALLED_TIMEOUT = 5e3;
1570
+ var styles = {
1571
+ barBg: "bg-neutral-50 dark:bg-green-900 text-black",
1572
+ barFg: "bg-neutral-100 bg-green-500",
1573
+ barHover: "dark:hover:bg-green-500"
1574
+ };
1575
+ var SyncStatus = () => {
1576
+ const state = useSyncState();
1577
+ return /* @__PURE__ */ import_react25.default.createElement(SyncStatusIndicator, {
1578
+ state
1579
+ });
1580
+ };
1581
+ var SyncStatusIndicator = ({ state }) => {
1582
+ const summary = getSyncSummary(state);
1583
+ const offline = false;
1584
+ const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
1585
+ const needsToDownload = summary.differentDocuments > 0 || summary.missingOnLocal > 0;
1586
+ const [classNames, setClassNames] = (0, import_react25.useState)();
1587
+ (0, import_react25.useEffect)(() => {
1588
+ setClassNames(void 0);
1589
+ if (!needsToUpload && !needsToDownload) {
1590
+ return;
1591
+ }
1592
+ const t = setTimeout(() => {
1593
+ setClassNames("text-orange-500");
1594
+ }, SYNC_STALLED_TIMEOUT);
1595
+ return () => clearTimeout(t);
1596
+ }, [
1597
+ needsToUpload,
1598
+ needsToDownload
1599
+ ]);
1600
+ return /* @__PURE__ */ import_react25.default.createElement(import_plugin_status_bar2.StatusBar.Item, null, /* @__PURE__ */ import_react25.default.createElement(import_react_ui17.Popover.Root, null, /* @__PURE__ */ import_react25.default.createElement(import_react_ui17.Popover.Trigger, null, /* @__PURE__ */ import_react25.default.createElement(import_react_ui17.Icon, {
1601
+ icon: offline ? "ph--cloud-x--regular" : needsToUpload ? "ph--cloud-arrow-up--regular" : needsToDownload ? "ph--cloud-arrow-down--regular" : "ph--cloud-check--regular",
1602
+ size: 4,
1603
+ classNames
1604
+ })), /* @__PURE__ */ import_react25.default.createElement(import_react_ui17.Popover.Content, null, /* @__PURE__ */ import_react25.default.createElement(SyncStatusDetail, {
1605
+ state,
1606
+ summary,
1607
+ debug: false
1608
+ }))));
1609
+ };
1610
+ var SyncStatusDetail = ({ classNames, state, summary, debug }) => {
1611
+ const { t } = (0, import_react_ui17.useTranslation)(import_chunk_P4XUXM7Y.SPACE_PLUGIN);
1612
+ const entries = Object.entries(state).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
1613
+ return /* @__PURE__ */ import_react25.default.createElement("div", {
1614
+ className: (0, import_react_ui_theme7.mx)("flex flex-col text-xs min-w-[16rem]", classNames)
1615
+ }, /* @__PURE__ */ import_react25.default.createElement("h1", {
1616
+ className: "p-2"
1617
+ }, t("sync status title")), /* @__PURE__ */ import_react25.default.createElement("div", {
1618
+ className: "flex flex-col gap-[2px] my-[2px]"
1619
+ }, entries.map(([spaceId, state2]) => /* @__PURE__ */ import_react25.default.createElement(SpaceRow, {
1620
+ key: spaceId,
1621
+ spaceId,
1622
+ state: state2
1623
+ }))), debug && /* @__PURE__ */ import_react25.default.createElement(import_react_ui_syntax_highlighter.SyntaxHighlighter, {
1624
+ language: "json"
1625
+ }, JSON.stringify(summary, null, 2)));
1626
+ };
1627
+ var useActive = (count) => {
1628
+ const [current, setCurrent] = (0, import_react25.useState)(count);
1629
+ const [active, setActive] = (0, import_react25.useState)(false);
1630
+ (0, import_react25.useEffect)(() => {
1631
+ let t;
1632
+ if (count !== current) {
1633
+ setActive(true);
1634
+ setCurrent(count);
1635
+ t && clearTimeout(t);
1636
+ t = setTimeout(() => {
1637
+ setActive(false);
1638
+ }, SYNC_STALLED_TIMEOUT);
1639
+ }
1640
+ return () => {
1641
+ setActive(false);
1642
+ clearTimeout(t);
1643
+ };
1644
+ }, [
1645
+ count,
1646
+ current
1647
+ ]);
1648
+ return active;
1649
+ };
1650
+ var SpaceRow = ({ spaceId, state: { localDocumentCount, remoteDocumentCount, missingOnLocal, missingOnRemote } }) => {
1651
+ const downActive = useActive(localDocumentCount);
1652
+ const upActive = useActive(remoteDocumentCount);
1653
+ return /* @__PURE__ */ import_react25.default.createElement("div", {
1654
+ className: (0, import_react_ui_theme7.mx)("flex items-center mx-[2px] gap-[2px] cursor-pointer", styles.barHover),
1655
+ title: spaceId,
1656
+ onClick: () => {
1657
+ void navigator.clipboard.writeText(spaceId);
1658
+ }
1659
+ }, /* @__PURE__ */ import_react25.default.createElement(import_react_ui17.Icon, {
1660
+ icon: "ph--arrow-fat-line-left--regular",
1661
+ size: 3,
1662
+ classNames: (0, import_react_ui_theme7.mx)(downActive && "animate-[pulse_1s_infinite]")
1663
+ }), /* @__PURE__ */ import_react25.default.createElement(Candle, {
1664
+ up: {
1665
+ count: remoteDocumentCount,
1666
+ total: remoteDocumentCount + missingOnRemote
1667
+ },
1668
+ down: {
1669
+ count: localDocumentCount,
1670
+ total: localDocumentCount + missingOnLocal
1671
+ },
1672
+ title: spaceId
1673
+ }), /* @__PURE__ */ import_react25.default.createElement(import_react_ui17.Icon, {
1674
+ icon: "ph--arrow-fat-line-right--regular",
1675
+ size: 3,
1676
+ classNames: (0, import_react_ui_theme7.mx)(upActive && "animate-[pulse_1s_step-start_infinite]")
1677
+ }));
1678
+ };
1679
+ var Candle = ({ classNames, up, down }) => {
1680
+ return /* @__PURE__ */ import_react25.default.createElement("div", {
1681
+ className: (0, import_react_ui_theme7.mx)("grid grid-cols-[1fr_2rem_1fr] w-full h-3", classNames)
1682
+ }, /* @__PURE__ */ import_react25.default.createElement(Bar, {
1683
+ classNames: "justify-end",
1684
+ ...up
1685
+ }), /* @__PURE__ */ import_react25.default.createElement("div", {
1686
+ className: "relative"
1687
+ }, /* @__PURE__ */ import_react25.default.createElement("div", {
1688
+ className: (0, import_react_ui_theme7.mx)("absolute inset-0 flex items-center justify-center text-xs", styles.barBg)
1689
+ }, up.total)), /* @__PURE__ */ import_react25.default.createElement(Bar, down));
1690
+ };
1691
+ var Bar = ({ classNames, count, total }) => {
1692
+ let p = count / total * 100;
1693
+ if (count < total) {
1694
+ p = Math.min(p, 95);
1695
+ }
1696
+ return /* @__PURE__ */ import_react25.default.createElement("div", {
1697
+ className: (0, import_react_ui_theme7.mx)("relative flex w-full", styles.barBg, classNames)
1698
+ }, /* @__PURE__ */ import_react25.default.createElement("div", {
1699
+ className: (0, import_react_ui_theme7.mx)("shrink-0", styles.barFg),
1700
+ style: {
1701
+ width: `${p}%`
1702
+ }
1703
+ }), count !== total && /* @__PURE__ */ import_react25.default.createElement("div", {
1704
+ className: "absolute top-0 bottom-0 flex items-center mx-0.5 text-black text-xs"
1705
+ }, count));
1428
1706
  };
1429
1707
  var translations_default = [
1430
1708
  {
1431
1709
  "en-US": {
1432
- [import_chunk_6CNYF6YU.SPACE_PLUGIN]: {
1710
+ [import_chunk_P4XUXM7Y.SPACE_PLUGIN]: {
1433
1711
  "plugin name": "Spaces",
1434
1712
  "first run message": "Nothing selected.",
1435
1713
  "create space label": "Create a new space",
@@ -1504,20 +1782,26 @@ var translations_default = [
1504
1782
  "space limit close label": "Close",
1505
1783
  "remove deleted objects label": "Cleanup",
1506
1784
  "remove deleted objects alt": "Permanently remove deleted objects to free up space.",
1507
- "copy link label": "Copy link"
1785
+ "copy link label": "Copy link",
1786
+ "default on space create label": "On space create",
1787
+ "sync status title": "Sync status",
1788
+ "name label": "Name",
1789
+ "name placeholder": "Name"
1508
1790
  }
1509
1791
  }
1510
1792
  }
1511
1793
  ];
1512
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/SpacePlugin.tsx";
1794
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/SpacePlugin.tsx";
1513
1795
  var ACTIVE_NODE_BROADCAST_INTERVAL = 3e4;
1514
1796
  var OBJECT_ID_LENGTH = 60;
1515
1797
  var SPACE_MAX_OBJECTS = 500;
1516
1798
  var DIRECTORY_TYPE = "text/directory";
1517
1799
  var parseSpacePlugin = (plugin) => Array.isArray(plugin?.provides.space?.enabled) ? plugin : void 0;
1518
1800
  var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1519
- const settings = new import_local_storage.LocalStorageStore(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1520
- const state = new import_local_storage.LocalStorageStore(import_chunk_6CNYF6YU.SPACE_PLUGIN, {
1801
+ const settings = new import_local_storage.LocalStorageStore(import_chunk_P4XUXM7Y.SPACE_PLUGIN, {
1802
+ onSpaceCreate: "dxos.org/plugin/markdown/action/create"
1803
+ });
1804
+ const state = new import_local_storage.LocalStorageStore(import_chunk_P4XUXM7Y.SPACE_PLUGIN, {
1521
1805
  awaiting: void 0,
1522
1806
  spaceNames: {},
1523
1807
  viewersByObject: {},
@@ -1596,8 +1880,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1596
1880
  import_log.log.warn("Failed to broadcast active node for presence.", {
1597
1881
  err: err.message
1598
1882
  }, {
1599
- F: __dxlog_file3,
1600
- L: 222,
1883
+ F: __dxlog_file5,
1884
+ L: 224,
1601
1885
  S: void 0,
1602
1886
  C: (f, a) => f(...a)
1603
1887
  });
@@ -1643,7 +1927,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1643
1927
  }).unsubscribe);
1644
1928
  };
1645
1929
  return {
1646
- meta: import_chunk_6CNYF6YU.meta_default,
1930
+ meta: import_chunk_P4XUXM7Y.meta_default,
1647
1931
  ready: async (plugins) => {
1648
1932
  settings.prop({
1649
1933
  key: "showHidden",
@@ -1668,7 +1952,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1668
1952
  const dispatch = intentPlugin.provides.intent.dispatch;
1669
1953
  const handleFirstRun = async () => {
1670
1954
  const defaultSpace = client.spaces.default;
1671
- defaultSpace.properties[import_chunk_CVZPI2P3.CollectionType.typename] = (0, import_echo.create)(import_chunk_CVZPI2P3.CollectionType, {
1955
+ defaultSpace.properties[import_chunk_HE2GHO6Z.CollectionType.typename] = (0, import_echo.create)(import_chunk_HE2GHO6Z.CollectionType, {
1672
1956
  objects: [],
1673
1957
  views: {}
1674
1958
  });
@@ -1704,22 +1988,21 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1704
1988
  settings: settings.values,
1705
1989
  translations: [
1706
1990
  ...translations_default,
1707
- import_react3.osTranslations
1991
+ import_react2.osTranslations
1708
1992
  ],
1709
- root: () => state.values.awaiting ? /* @__PURE__ */ import_react2.default.createElement(AwaitingObject, {
1993
+ root: () => state.values.awaiting ? /* @__PURE__ */ import_react.default.createElement(AwaitingObject, {
1710
1994
  id: state.values.awaiting
1711
1995
  }) : null,
1712
1996
  metadata: {
1713
1997
  records: {
1714
- [import_chunk_CVZPI2P3.CollectionType.typename]: {
1998
+ [import_chunk_HE2GHO6Z.CollectionType.typename]: {
1715
1999
  placeholder: [
1716
2000
  "unnamed collection label",
1717
2001
  {
1718
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
2002
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
1719
2003
  }
1720
2004
  ],
1721
- icon: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react.CardsThree, props),
1722
- iconSymbol: "ph--cards-three--regular",
2005
+ icon: "ph--cards-three--regular",
1723
2006
  // TODO(wittjosiah): Move out of metadata.
1724
2007
  loadReferences: (collection) => (0, import_echo.loadObjectReferences)(collection, (collection2) => [
1725
2008
  ...collection2.objects,
@@ -1730,7 +2013,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1730
2013
  },
1731
2014
  echo: {
1732
2015
  schema: [
1733
- import_chunk_CVZPI2P3.CollectionType
2016
+ import_chunk_HE2GHO6Z.CollectionType
1734
2017
  ]
1735
2018
  },
1736
2019
  surface: {
@@ -1739,33 +2022,28 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1739
2022
  switch (role) {
1740
2023
  case "article":
1741
2024
  case "main":
1742
- return (0, import_echo.isSpace)(primary) && primary.state.get() === import_echo.SpaceState.SPACE_READY ? /* @__PURE__ */ import_react2.default.createElement(import_app_framework.Surface, {
2025
+ return (0, import_echo.isSpace)(primary) && primary.state.get() === import_echo.SpaceState.SPACE_READY ? /* @__PURE__ */ import_react.default.createElement(import_app_framework.Surface, {
1743
2026
  data: {
1744
- active: primary.properties[import_chunk_CVZPI2P3.CollectionType.typename]
2027
+ active: primary.properties[import_chunk_HE2GHO6Z.CollectionType.typename],
2028
+ id: primary.id
1745
2029
  },
1746
2030
  role,
1747
2031
  ...rest
1748
- }) : primary instanceof import_chunk_CVZPI2P3.CollectionType ? {
1749
- node: /* @__PURE__ */ import_react2.default.createElement(CollectionMain, {
2032
+ }) : primary instanceof import_chunk_HE2GHO6Z.CollectionType ? {
2033
+ node: /* @__PURE__ */ import_react.default.createElement(CollectionMain, {
1750
2034
  collection: primary
1751
2035
  }),
1752
2036
  disposition: "fallback"
1753
- } : typeof primary === "string" && primary.length === OBJECT_ID_LENGTH ? /* @__PURE__ */ import_react2.default.createElement(MissingObject, {
2037
+ } : typeof primary === "string" && primary.length === OBJECT_ID_LENGTH ? /* @__PURE__ */ import_react.default.createElement(MissingObject, {
1754
2038
  id: primary
1755
2039
  }) : null;
1756
- // TODO(burdon): Add role name syntax to minimal plugin docs.
1757
- case "tree--empty":
1758
- switch (true) {
1759
- case data.plugin === import_chunk_6CNYF6YU.SPACE_PLUGIN:
1760
- return /* @__PURE__ */ import_react2.default.createElement(EmptyTree, null);
1761
- case ((0, import_plugin_graph.isGraphNode)(data.activeNode) && (0, import_echo.isSpace)(data.activeNode.data)):
1762
- return /* @__PURE__ */ import_react2.default.createElement(EmptySpace, null);
1763
- default:
1764
- return null;
1765
- }
2040
+ case "complementary--settings":
2041
+ return (0, import_echo.isEchoObject)(data.subject) ? /* @__PURE__ */ import_react.default.createElement(FallbackSettings, {
2042
+ object: data.subject
2043
+ }) : null;
1766
2044
  case "dialog":
1767
2045
  if (data.component === "dxos.org/plugin/space/InvitationManagerDialog") {
1768
- return /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Dialog.Content, null, /* @__PURE__ */ import_react2.default.createElement(import_react3.ClipboardProvider, null, /* @__PURE__ */ import_react2.default.createElement(import_react3.InvitationManager, {
2046
+ return /* @__PURE__ */ import_react.default.createElement(import_react_ui.Dialog.Content, null, /* @__PURE__ */ import_react.default.createElement(import_react2.ClipboardProvider, null, /* @__PURE__ */ import_react.default.createElement(import_react2.InvitationManager, {
1769
2047
  active: true,
1770
2048
  ...data.subject
1771
2049
  })));
@@ -1774,20 +2052,21 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1774
2052
  }
1775
2053
  case "popover":
1776
2054
  if (data.component === "dxos.org/plugin/space/RenameSpacePopover" && (0, import_echo.isSpace)(data.subject)) {
1777
- return /* @__PURE__ */ import_react2.default.createElement(PopoverRenameSpace, {
2055
+ return /* @__PURE__ */ import_react.default.createElement(PopoverRenameSpace, {
1778
2056
  space: data.subject
1779
2057
  });
1780
2058
  }
1781
2059
  if (data.component === "dxos.org/plugin/space/RenameObjectPopover" && (0, import_echo_schema.isReactiveObject)(data.subject)) {
1782
- return /* @__PURE__ */ import_react2.default.createElement(PopoverRenameObject, {
2060
+ return /* @__PURE__ */ import_react.default.createElement(PopoverRenameObject, {
1783
2061
  object: data.subject
1784
2062
  });
1785
2063
  }
1786
2064
  return null;
2065
+ // TODO(burdon): Add role name syntax to minimal plugin docs.
1787
2066
  case "presence--glyph": {
1788
- return (0, import_echo_schema.isReactiveObject)(data.object) ? /* @__PURE__ */ import_react2.default.createElement(SmallPresenceLive, {
2067
+ return (0, import_echo_schema.isReactiveObject)(data.object) ? /* @__PURE__ */ import_react.default.createElement(SmallPresenceLive, {
1789
2068
  viewers: state.values.viewersByObject[(0, import_echo.fullyQualifiedId)(data.object)]
1790
- }) : /* @__PURE__ */ import_react2.default.createElement(SmallPresence, {
2069
+ }) : /* @__PURE__ */ import_react.default.createElement(SmallPresence, {
1791
2070
  count: 0
1792
2071
  });
1793
2072
  }
@@ -1799,32 +2078,35 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1799
2078
  return null;
1800
2079
  }
1801
2080
  const space = (0, import_echo.isSpace)(data.object) ? data.object : (0, import_echo.getSpace)(data.object);
1802
- const object = (0, import_echo.isSpace)(data.object) ? data.object.state.get() === import_echo.SpaceState.SPACE_READY ? space?.properties[import_chunk_CVZPI2P3.CollectionType.typename] : void 0 : data.object;
2081
+ const object = (0, import_echo.isSpace)(data.object) ? data.object.state.get() === import_echo.SpaceState.SPACE_READY ? space?.properties[import_chunk_HE2GHO6Z.CollectionType.typename] : void 0 : data.object;
1803
2082
  return space && object ? {
1804
- node: /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null, /* @__PURE__ */ import_react2.default.createElement(SpacePresence, {
2083
+ node: /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(SpacePresence, {
1805
2084
  object
1806
- }), space.properties[COMPOSER_SPACE_LOCK] ? null : /* @__PURE__ */ import_react2.default.createElement(ShareSpaceButton, {
2085
+ }), space.properties[COMPOSER_SPACE_LOCK] ? null : /* @__PURE__ */ import_react.default.createElement(ShareSpaceButton, {
1807
2086
  spaceId: space.id
1808
2087
  })),
1809
2088
  disposition: "hoist"
1810
2089
  } : null;
1811
2090
  }
1812
2091
  case "section":
1813
- return data.object instanceof import_chunk_CVZPI2P3.CollectionType ? /* @__PURE__ */ import_react2.default.createElement(CollectionSection, {
2092
+ return data.object instanceof import_chunk_HE2GHO6Z.CollectionType ? /* @__PURE__ */ import_react.default.createElement(CollectionSection, {
1814
2093
  collection: data.object
1815
2094
  }) : null;
1816
2095
  case "settings":
1817
- return data.plugin === import_chunk_6CNYF6YU.meta_default.id ? /* @__PURE__ */ import_react2.default.createElement(SpaceSettings, {
2096
+ return data.plugin === import_chunk_P4XUXM7Y.meta_default.id ? /* @__PURE__ */ import_react.default.createElement(SpaceSettings, {
1818
2097
  settings: settings.values
1819
2098
  }) : null;
1820
2099
  case "menu-footer":
1821
2100
  if (!(0, import_echo.isEchoObject)(data.object)) {
1822
2101
  return null;
1823
2102
  } else {
1824
- return /* @__PURE__ */ import_react2.default.createElement(MenuFooter, {
2103
+ return /* @__PURE__ */ import_react.default.createElement(MenuFooter, {
1825
2104
  object: data.object
1826
2105
  });
1827
2106
  }
2107
+ case "status": {
2108
+ 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));
2109
+ }
1828
2110
  default:
1829
2111
  return null;
1830
2112
  }
@@ -1845,7 +2127,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1845
2127
  return [
1846
2128
  // Create spaces group node.
1847
2129
  (0, import_plugin_graph.createExtension)({
1848
- id: `${import_chunk_6CNYF6YU.SPACE_PLUGIN}/root`,
2130
+ id: `${import_chunk_P4XUXM7Y.SPACE_PLUGIN}/root`,
1849
2131
  filter: (node) => node.id === "root",
1850
2132
  connector: () => {
1851
2133
  const isReady = (0, import_plugin_graph.toSignal)((onChange) => {
@@ -1868,7 +2150,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1868
2150
  label: [
1869
2151
  "spaces label",
1870
2152
  {
1871
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
2153
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
1872
2154
  }
1873
2155
  ],
1874
2156
  palette: "teal",
@@ -1884,8 +2166,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1884
2166
  spacesOrder.order = nextOrder.map(({ id }) => id);
1885
2167
  } else {
1886
2168
  import_log.log.warn("spaces order object not found", void 0, {
1887
- F: __dxlog_file3,
1888
- L: 514,
2169
+ F: __dxlog_file5,
2170
+ L: 520,
1889
2171
  S: void 0,
1890
2172
  C: (f, a) => f(...a)
1891
2173
  });
@@ -1902,12 +2184,12 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1902
2184
  filter: (node) => node.id === SPACES,
1903
2185
  actions: () => [
1904
2186
  {
1905
- id: import_chunk_6CNYF6YU.SpaceAction.CREATE,
2187
+ id: import_chunk_P4XUXM7Y.SpaceAction.CREATE,
1906
2188
  data: async () => {
1907
2189
  await dispatch([
1908
2190
  {
1909
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
1910
- action: import_chunk_6CNYF6YU.SpaceAction.CREATE
2191
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
2192
+ action: import_chunk_P4XUXM7Y.SpaceAction.CREATE
1911
2193
  },
1912
2194
  {
1913
2195
  action: import_app_framework.NavigationAction.OPEN
@@ -1918,22 +2200,21 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1918
2200
  label: [
1919
2201
  "create space label",
1920
2202
  {
1921
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
2203
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
1922
2204
  }
1923
2205
  ],
1924
- icon: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react.Plus, props),
1925
- iconSymbol: "ph--plus--regular",
2206
+ icon: "ph--plus--regular",
1926
2207
  disposition: "toolbar",
1927
2208
  testId: "spacePlugin.createSpace"
1928
2209
  }
1929
2210
  },
1930
2211
  {
1931
- id: import_chunk_6CNYF6YU.SpaceAction.JOIN,
2212
+ id: import_chunk_P4XUXM7Y.SpaceAction.JOIN,
1932
2213
  data: async () => {
1933
2214
  await dispatch([
1934
2215
  {
1935
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
1936
- action: import_chunk_6CNYF6YU.SpaceAction.JOIN
2216
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
2217
+ action: import_chunk_P4XUXM7Y.SpaceAction.JOIN
1937
2218
  },
1938
2219
  {
1939
2220
  action: import_app_framework.NavigationAction.OPEN
@@ -1944,11 +2225,10 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1944
2225
  label: [
1945
2226
  "join space label",
1946
2227
  {
1947
- ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
2228
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
1948
2229
  }
1949
2230
  ],
1950
- icon: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react.SignIn, props),
1951
- iconSymbol: "ph--sign-in--regular",
2231
+ icon: "ph--sign-in--regular",
1952
2232
  testId: "spacePlugin.joinSpace"
1953
2233
  }
1954
2234
  }
@@ -1980,7 +2260,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1980
2260
  }),
1981
2261
  // Find an object by its fully qualified id.
1982
2262
  (0, import_plugin_graph.createExtension)({
1983
- id: `${import_chunk_6CNYF6YU.SPACE_PLUGIN}/objects`,
2263
+ id: `${import_chunk_P4XUXM7Y.SPACE_PLUGIN}/objects`,
1984
2264
  resolver: ({ id }) => {
1985
2265
  const [spaceId, objectId] = id.split(":");
1986
2266
  const space = client.spaces.get().find((space2) => space2.id === spaceId);
@@ -2010,7 +2290,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2010
2290
  }),
2011
2291
  // Create space actions and action groups.
2012
2292
  (0, import_plugin_graph.createExtension)({
2013
- id: `${import_chunk_6CNYF6YU.SPACE_PLUGIN}/actions`,
2293
+ id: `${import_chunk_P4XUXM7Y.SPACE_PLUGIN}/actions`,
2014
2294
  filter: (node) => (0, import_echo.isSpace)(node.data),
2015
2295
  actionGroups: ({ node }) => constructSpaceActionGroups({
2016
2296
  space: node.data,
@@ -2028,7 +2308,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2028
2308
  }),
2029
2309
  // Create nodes for objects in the root collection of a space.
2030
2310
  (0, import_plugin_graph.createExtension)({
2031
- id: `${import_chunk_6CNYF6YU.SPACE_PLUGIN}/root-collection`,
2311
+ id: `${import_chunk_P4XUXM7Y.SPACE_PLUGIN}/root-collection`,
2032
2312
  filter: (node) => (0, import_echo.isSpace)(node.data),
2033
2313
  connector: ({ node }) => {
2034
2314
  const space = node.data;
@@ -2036,7 +2316,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2036
2316
  if (state2 !== import_echo.SpaceState.SPACE_READY) {
2037
2317
  return;
2038
2318
  }
2039
- const collection = space.properties[import_chunk_CVZPI2P3.CollectionType.typename];
2319
+ const collection = space.properties[import_chunk_HE2GHO6Z.CollectionType.typename];
2040
2320
  if (!collection) {
2041
2321
  return;
2042
2322
  }
@@ -2049,7 +2329,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2049
2329
  }),
2050
2330
  // Create collection actions and action groups.
2051
2331
  (0, import_plugin_graph.createExtension)({
2052
- id: `${import_chunk_6CNYF6YU.SPACE_PLUGIN}/object-actions`,
2332
+ id: `${import_chunk_P4XUXM7Y.SPACE_PLUGIN}/object-actions`,
2053
2333
  filter: (node) => (0, import_echo.isEchoObject)(node.data),
2054
2334
  actionGroups: ({ node }) => constructObjectActionGroups({
2055
2335
  object: node.data,
@@ -2062,8 +2342,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2062
2342
  }),
2063
2343
  // Create nodes for objects in collections.
2064
2344
  (0, import_plugin_graph.createExtension)({
2065
- id: `${import_chunk_6CNYF6YU.SPACE_PLUGIN}/collection-objects`,
2066
- filter: (node) => node.data instanceof import_chunk_CVZPI2P3.CollectionType,
2345
+ id: `${import_chunk_P4XUXM7Y.SPACE_PLUGIN}/collection-objects`,
2346
+ filter: (node) => node.data instanceof import_chunk_HE2GHO6Z.CollectionType,
2067
2347
  connector: ({ node }) => {
2068
2348
  const collection = node.data;
2069
2349
  const space = (0, import_echo.getSpace)(collection);
@@ -2076,6 +2356,45 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2076
2356
  resolve
2077
2357
  })).filter(import_util.nonNullable);
2078
2358
  }
2359
+ }),
2360
+ // Create nodes for object settings.
2361
+ (0, import_plugin_graph.createExtension)({
2362
+ id: `${import_chunk_P4XUXM7Y.SPACE_PLUGIN}/settings-for-subject`,
2363
+ resolver: ({ id }) => {
2364
+ if (!id.endsWith("~settings")) {
2365
+ return;
2366
+ }
2367
+ const subjectId = id.split("~").at(0);
2368
+ const [spaceId, objectId] = subjectId?.split(":") ?? [];
2369
+ const space = client.spaces.get().find((space2) => space2.id === spaceId);
2370
+ const object = (0, import_plugin_graph.toSignal)((onChange) => {
2371
+ const timeout = setTimeout(async () => {
2372
+ await space?.db.loadObjectById(objectId);
2373
+ onChange();
2374
+ });
2375
+ return () => clearTimeout(timeout);
2376
+ }, () => space?.db.getObjectById(objectId), subjectId);
2377
+ if (!object || !subjectId) {
2378
+ return;
2379
+ }
2380
+ const meta = resolve((0, import_echo.getTypename)(object) ?? "");
2381
+ const label = meta.label?.(object) || object.name || meta.placeholder || [
2382
+ "unnamed object settings label",
2383
+ {
2384
+ ns: import_chunk_P4XUXM7Y.SPACE_PLUGIN
2385
+ }
2386
+ ];
2387
+ return {
2388
+ id,
2389
+ type: "orphan-settings-for-subject",
2390
+ data: null,
2391
+ properties: {
2392
+ icon: "ph--gear--regular",
2393
+ label,
2394
+ object
2395
+ }
2396
+ };
2397
+ }
2079
2398
  })
2080
2399
  ];
2081
2400
  },
@@ -2089,8 +2408,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2089
2408
  inputType: SPACES,
2090
2409
  outputType: DIRECTORY_TYPE,
2091
2410
  serialize: (node) => ({
2092
- name: translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["spaces label"],
2093
- data: translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["spaces label"],
2411
+ name: translations_default[0]["en-US"][import_chunk_P4XUXM7Y.SPACE_PLUGIN]["spaces label"],
2412
+ data: translations_default[0]["en-US"][import_chunk_P4XUXM7Y.SPACE_PLUGIN]["spaces label"],
2094
2413
  type: DIRECTORY_TYPE
2095
2414
  }),
2096
2415
  deserialize: () => {
@@ -2100,14 +2419,14 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2100
2419
  inputType: SPACE_TYPE,
2101
2420
  outputType: DIRECTORY_TYPE,
2102
2421
  serialize: (node) => ({
2103
- name: node.data.properties.name ?? translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["unnamed space label"],
2104
- data: node.data.properties.name ?? translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["unnamed space label"],
2422
+ name: node.data.properties.name ?? translations_default[0]["en-US"][import_chunk_P4XUXM7Y.SPACE_PLUGIN]["unnamed space label"],
2423
+ data: node.data.properties.name ?? translations_default[0]["en-US"][import_chunk_P4XUXM7Y.SPACE_PLUGIN]["unnamed space label"],
2105
2424
  type: DIRECTORY_TYPE
2106
2425
  }),
2107
2426
  deserialize: async (data) => {
2108
2427
  const result = await dispatch({
2109
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
2110
- action: import_chunk_6CNYF6YU.SpaceAction.CREATE,
2428
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
2429
+ action: import_chunk_P4XUXM7Y.SpaceAction.CREATE,
2111
2430
  data: {
2112
2431
  name: data.name
2113
2432
  }
@@ -2116,25 +2435,25 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2116
2435
  }
2117
2436
  },
2118
2437
  {
2119
- inputType: import_chunk_CVZPI2P3.CollectionType.typename,
2438
+ inputType: import_chunk_HE2GHO6Z.CollectionType.typename,
2120
2439
  outputType: DIRECTORY_TYPE,
2121
2440
  serialize: (node) => ({
2122
- name: node.data.name ?? translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["unnamed collection label"],
2123
- data: node.data.name ?? translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["unnamed collection label"],
2441
+ name: node.data.name ?? translations_default[0]["en-US"][import_chunk_P4XUXM7Y.SPACE_PLUGIN]["unnamed collection label"],
2442
+ data: node.data.name ?? translations_default[0]["en-US"][import_chunk_P4XUXM7Y.SPACE_PLUGIN]["unnamed collection label"],
2124
2443
  type: DIRECTORY_TYPE
2125
2444
  }),
2126
2445
  deserialize: async (data, ancestors) => {
2127
2446
  const space = ancestors.find(import_echo.isSpace);
2128
- const collection = ancestors.findLast((ancestor) => ancestor instanceof import_chunk_CVZPI2P3.CollectionType) ?? space?.properties[import_chunk_CVZPI2P3.CollectionType.typename];
2447
+ const collection = ancestors.findLast((ancestor) => ancestor instanceof import_chunk_HE2GHO6Z.CollectionType) ?? space?.properties[import_chunk_HE2GHO6Z.CollectionType.typename];
2129
2448
  if (!space || !collection) {
2130
2449
  return;
2131
2450
  }
2132
2451
  const result = await dispatch({
2133
- plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
2134
- action: import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT,
2452
+ plugin: import_chunk_P4XUXM7Y.SPACE_PLUGIN,
2453
+ action: import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT,
2135
2454
  data: {
2136
2455
  target: collection,
2137
- object: (0, import_echo.create)(import_chunk_CVZPI2P3.CollectionType, {
2456
+ object: (0, import_echo.create)(import_chunk_HE2GHO6Z.CollectionType, {
2138
2457
  name: data.name,
2139
2458
  objects: [],
2140
2459
  views: {}
@@ -2152,23 +2471,23 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2152
2471
  const clientPlugin2 = (0, import_app_framework.resolvePlugin)(plugins, import_plugin_client.parseClientPlugin);
2153
2472
  const client = clientPlugin2?.provides.client;
2154
2473
  switch (intent.action) {
2155
- case import_chunk_6CNYF6YU.SpaceAction.WAIT_FOR_OBJECT: {
2474
+ case import_chunk_P4XUXM7Y.SpaceAction.WAIT_FOR_OBJECT: {
2156
2475
  state.values.awaiting = intent.data?.id;
2157
2476
  return {
2158
2477
  data: true
2159
2478
  };
2160
2479
  }
2161
- case import_chunk_6CNYF6YU.SpaceAction.CREATE: {
2480
+ case import_chunk_P4XUXM7Y.SpaceAction.CREATE: {
2162
2481
  if (!client) {
2163
2482
  return;
2164
2483
  }
2165
2484
  const space = await client.spaces.create(intent.data);
2166
2485
  await space.waitUntilReady();
2167
- const collection = (0, import_echo.create)(import_chunk_CVZPI2P3.CollectionType, {
2486
+ const collection = (0, import_echo.create)(import_chunk_HE2GHO6Z.CollectionType, {
2168
2487
  objects: [],
2169
2488
  views: {}
2170
2489
  });
2171
- space.properties[import_chunk_CVZPI2P3.CollectionType.typename] = collection;
2490
+ space.properties[import_chunk_HE2GHO6Z.CollectionType.typename] = collection;
2172
2491
  if (import_migrations.Migrations.versionProperty) {
2173
2492
  space.properties[import_migrations.Migrations.versionProperty] = import_migrations.Migrations.targetVersion;
2174
2493
  }
@@ -2183,6 +2502,25 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2183
2502
  }
2184
2503
  },
2185
2504
  intents: [
2505
+ ...settings.values.onSpaceCreate ? [
2506
+ [
2507
+ {
2508
+ action: settings.values.onSpaceCreate,
2509
+ data: {
2510
+ space
2511
+ }
2512
+ },
2513
+ {
2514
+ action: import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT,
2515
+ data: {
2516
+ target: space
2517
+ }
2518
+ },
2519
+ {
2520
+ action: import_app_framework.NavigationAction.EXPOSE
2521
+ }
2522
+ ]
2523
+ ] : [],
2186
2524
  [
2187
2525
  {
2188
2526
  action: import_meta.ObservabilityAction.SEND_EVENT,
@@ -2197,7 +2535,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2197
2535
  ]
2198
2536
  };
2199
2537
  }
2200
- case import_chunk_6CNYF6YU.SpaceAction.JOIN: {
2538
+ case import_chunk_P4XUXM7Y.SpaceAction.JOIN: {
2201
2539
  if (client) {
2202
2540
  const { space } = await client.shell.joinSpace({
2203
2541
  invitationCode: intent.data?.invitationCode
@@ -2231,7 +2569,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2231
2569
  }
2232
2570
  break;
2233
2571
  }
2234
- case import_chunk_6CNYF6YU.SpaceAction.SHARE: {
2572
+ case import_chunk_P4XUXM7Y.SpaceAction.SHARE: {
2235
2573
  const spaceId = intent.data?.spaceId;
2236
2574
  if (clientPlugin2 && typeof spaceId === "string") {
2237
2575
  if (!navigationPlugin?.provides.location.active) {
@@ -2264,7 +2602,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2264
2602
  }
2265
2603
  break;
2266
2604
  }
2267
- case import_chunk_6CNYF6YU.SpaceAction.LOCK: {
2605
+ case import_chunk_P4XUXM7Y.SpaceAction.LOCK: {
2268
2606
  const space = intent.data?.space;
2269
2607
  if ((0, import_echo.isSpace)(space)) {
2270
2608
  space.properties[COMPOSER_SPACE_LOCK] = true;
@@ -2287,7 +2625,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2287
2625
  }
2288
2626
  break;
2289
2627
  }
2290
- case import_chunk_6CNYF6YU.SpaceAction.UNLOCK: {
2628
+ case import_chunk_P4XUXM7Y.SpaceAction.UNLOCK: {
2291
2629
  const space = intent.data?.space;
2292
2630
  if ((0, import_echo.isSpace)(space)) {
2293
2631
  space.properties[COMPOSER_SPACE_LOCK] = false;
@@ -2310,7 +2648,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2310
2648
  }
2311
2649
  break;
2312
2650
  }
2313
- case import_chunk_6CNYF6YU.SpaceAction.RENAME: {
2651
+ case import_chunk_P4XUXM7Y.SpaceAction.RENAME: {
2314
2652
  const { caller, space } = intent.data ?? {};
2315
2653
  if (typeof caller === "string" && (0, import_echo.isSpace)(space)) {
2316
2654
  return {
@@ -2331,7 +2669,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2331
2669
  }
2332
2670
  break;
2333
2671
  }
2334
- case import_chunk_6CNYF6YU.SpaceAction.OPEN: {
2672
+ case import_chunk_P4XUXM7Y.SpaceAction.OPEN: {
2335
2673
  const space = intent.data?.space;
2336
2674
  if ((0, import_echo.isSpace)(space)) {
2337
2675
  await space.open();
@@ -2341,7 +2679,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2341
2679
  }
2342
2680
  break;
2343
2681
  }
2344
- case import_chunk_6CNYF6YU.SpaceAction.CLOSE: {
2682
+ case import_chunk_P4XUXM7Y.SpaceAction.CLOSE: {
2345
2683
  const space = intent.data?.space;
2346
2684
  if ((0, import_echo.isSpace)(space)) {
2347
2685
  await space.close();
@@ -2351,7 +2689,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2351
2689
  }
2352
2690
  break;
2353
2691
  }
2354
- case import_chunk_6CNYF6YU.SpaceAction.MIGRATE: {
2692
+ case import_chunk_P4XUXM7Y.SpaceAction.MIGRATE: {
2355
2693
  const space = intent.data?.space;
2356
2694
  if ((0, import_echo.isSpace)(space)) {
2357
2695
  if (space.state.get() === import_echo.SpaceState.SPACE_REQUIRES_MIGRATION) {
@@ -2380,7 +2718,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2380
2718
  }
2381
2719
  break;
2382
2720
  }
2383
- case import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT: {
2721
+ case import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT: {
2384
2722
  const object = intent.data?.object ?? intent.data?.result;
2385
2723
  if (!(0, import_echo_schema.isReactiveObject)(object)) {
2386
2724
  return;
@@ -2399,16 +2737,15 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2399
2737
  data: {
2400
2738
  element: "toast",
2401
2739
  subject: {
2402
- id: `${import_chunk_6CNYF6YU.SPACE_PLUGIN}/space-limit`,
2403
- title: translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["space limit label"],
2404
- description: translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["space limit description"],
2740
+ id: `${import_chunk_P4XUXM7Y.SPACE_PLUGIN}/space-limit`,
2741
+ title: translations_default[0]["en-US"][import_chunk_P4XUXM7Y.SPACE_PLUGIN]["space limit label"],
2742
+ description: translations_default[0]["en-US"][import_chunk_P4XUXM7Y.SPACE_PLUGIN]["space limit description"],
2405
2743
  duration: 5e3,
2406
- icon: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react.Warning, props),
2407
- iconSymbol: "ph--warning--regular",
2408
- actionLabel: translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["remove deleted objects label"],
2409
- actionAlt: translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["remove deleted objects alt"],
2744
+ icon: "ph--warning--regular",
2745
+ actionLabel: translations_default[0]["en-US"][import_chunk_P4XUXM7Y.SPACE_PLUGIN]["remove deleted objects label"],
2746
+ actionAlt: translations_default[0]["en-US"][import_chunk_P4XUXM7Y.SPACE_PLUGIN]["remove deleted objects alt"],
2410
2747
  // TODO(wittjosiah): Use OS namespace.
2411
- closeLabel: translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["space limit close label"],
2748
+ closeLabel: translations_default[0]["en-US"][import_chunk_P4XUXM7Y.SPACE_PLUGIN]["space limit close label"],
2412
2749
  onAction: () => space.db.coreDatabase.unlinkDeletedObjects()
2413
2750
  }
2414
2751
  }
@@ -2428,25 +2765,25 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2428
2765
  ]
2429
2766
  };
2430
2767
  }
2431
- if (intent.data?.target instanceof import_chunk_CVZPI2P3.CollectionType) {
2768
+ if (intent.data?.target instanceof import_chunk_HE2GHO6Z.CollectionType) {
2432
2769
  intent.data?.target.objects.push(object);
2433
2770
  } else if ((0, import_echo.isSpace)(intent.data?.target)) {
2434
- const collection = space.properties[import_chunk_CVZPI2P3.CollectionType.typename];
2435
- if (collection instanceof import_chunk_CVZPI2P3.CollectionType) {
2771
+ const collection = space.properties[import_chunk_HE2GHO6Z.CollectionType.typename];
2772
+ if (collection instanceof import_chunk_HE2GHO6Z.CollectionType) {
2436
2773
  collection.objects.push(object);
2437
2774
  } else {
2438
- const collection2 = (0, import_echo.create)(import_chunk_CVZPI2P3.CollectionType, {
2775
+ const collection2 = (0, import_echo.create)(import_chunk_HE2GHO6Z.CollectionType, {
2439
2776
  objects: [
2440
2777
  object
2441
2778
  ],
2442
2779
  views: {}
2443
2780
  });
2444
- space.properties[import_chunk_CVZPI2P3.CollectionType.typename] = collection2;
2781
+ space.properties[import_chunk_HE2GHO6Z.CollectionType.typename] = collection2;
2445
2782
  }
2446
2783
  }
2447
2784
  return {
2448
2785
  data: {
2449
- id: object.id,
2786
+ id: (0, import_echo.fullyQualifiedId)(object),
2450
2787
  object,
2451
2788
  activeParts: {
2452
2789
  main: [
@@ -2471,7 +2808,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2471
2808
  ]
2472
2809
  };
2473
2810
  }
2474
- case import_chunk_6CNYF6YU.SpaceAction.REMOVE_OBJECT: {
2811
+ case import_chunk_P4XUXM7Y.SpaceAction.REMOVE_OBJECT: {
2475
2812
  const object = intent.data?.object ?? intent.data?.result;
2476
2813
  const space = (0, import_echo.getSpace)(object);
2477
2814
  if (!((0, import_echo.isEchoObject)(object) && space)) {
@@ -2481,12 +2818,12 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2481
2818
  const activeParts = navigationPlugin?.provides.location.active;
2482
2819
  const openObjectIds = new Set((0, import_app_framework.openIds)(activeParts ?? {}));
2483
2820
  if (!intent.undo && resolve) {
2484
- const parentCollection = intent.data?.collection ?? space.properties[import_chunk_CVZPI2P3.CollectionType.typename];
2821
+ const parentCollection = intent.data?.collection ?? space.properties[import_chunk_HE2GHO6Z.CollectionType.typename];
2485
2822
  const nestedObjects = await getNestedObjects(object, resolve);
2486
2823
  const deletionData = {
2487
2824
  object,
2488
2825
  parentCollection,
2489
- index: parentCollection instanceof import_chunk_CVZPI2P3.CollectionType ? parentCollection.objects.indexOf(object) : -1,
2826
+ index: parentCollection instanceof import_chunk_HE2GHO6Z.CollectionType ? parentCollection.objects.indexOf(object) : -1,
2490
2827
  nestedObjects,
2491
2828
  wasActive: [
2492
2829
  object,
@@ -2499,13 +2836,12 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2499
2836
  data: {
2500
2837
  activeParts: {
2501
2838
  main: deletionData.wasActive,
2502
- sidebar: deletionData.wasActive,
2503
- complementary: deletionData.wasActive
2839
+ sidebar: deletionData.wasActive
2504
2840
  }
2505
2841
  }
2506
2842
  });
2507
2843
  }
2508
- if (parentCollection instanceof import_chunk_CVZPI2P3.CollectionType) {
2844
+ if (parentCollection instanceof import_chunk_HE2GHO6Z.CollectionType) {
2509
2845
  const index = parentCollection.objects.indexOf(object);
2510
2846
  if (index !== -1) {
2511
2847
  parentCollection.objects.splice(index, 1);
@@ -2515,18 +2851,18 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2515
2851
  space.db.remove(obj);
2516
2852
  });
2517
2853
  space.db.remove(object);
2518
- const undoMessageKey = object instanceof import_chunk_CVZPI2P3.CollectionType ? "collection deleted label" : "object deleted label";
2854
+ const undoMessageKey = object instanceof import_chunk_HE2GHO6Z.CollectionType ? "collection deleted label" : "object deleted label";
2519
2855
  return {
2520
2856
  data: true,
2521
2857
  undoable: {
2522
2858
  // Consider using a translation key here.
2523
- message: translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN][undoMessageKey],
2859
+ message: translations_default[0]["en-US"][import_chunk_P4XUXM7Y.SPACE_PLUGIN][undoMessageKey],
2524
2860
  data: deletionData
2525
2861
  }
2526
2862
  };
2527
2863
  } else {
2528
2864
  const undoData = intent.data;
2529
- if (undoData && (0, import_echo.isEchoObject)(undoData.object) && undoData.parentCollection instanceof import_chunk_CVZPI2P3.CollectionType) {
2865
+ if (undoData && (0, import_echo.isEchoObject)(undoData.object) && undoData.parentCollection instanceof import_chunk_HE2GHO6Z.CollectionType) {
2530
2866
  const restoredObject = space.db.add(undoData.object);
2531
2867
  undoData.nestedObjects.forEach((obj) => {
2532
2868
  space.db.add(obj);
@@ -2553,7 +2889,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2553
2889
  };
2554
2890
  }
2555
2891
  }
2556
- case import_chunk_6CNYF6YU.SpaceAction.RENAME_OBJECT: {
2892
+ case import_chunk_P4XUXM7Y.SpaceAction.RENAME_OBJECT: {
2557
2893
  const object = intent.data?.object ?? intent.data?.result;
2558
2894
  const caller = intent.data?.caller;
2559
2895
  if ((0, import_echo_schema.isReactiveObject)(object) && caller) {
@@ -2575,7 +2911,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2575
2911
  }
2576
2912
  break;
2577
2913
  }
2578
- case import_chunk_6CNYF6YU.SpaceAction.DUPLICATE_OBJECT: {
2914
+ case import_chunk_P4XUXM7Y.SpaceAction.DUPLICATE_OBJECT: {
2579
2915
  const originalObject = intent.data?.object ?? intent.data?.result;
2580
2916
  const resolve = (0, import_app_framework.resolvePlugin)(plugins, import_app_framework.parseMetadataResolverPlugin)?.provides.metadata.resolver;
2581
2917
  if (!(0, import_echo.isEchoObject)(originalObject) || !resolve) {
@@ -2586,7 +2922,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2586
2922
  intents: [
2587
2923
  [
2588
2924
  {
2589
- action: import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT,
2925
+ action: import_chunk_P4XUXM7Y.SpaceAction.ADD_OBJECT,
2590
2926
  data: {
2591
2927
  object: newObject,
2592
2928
  target: intent.data?.target
@@ -2596,7 +2932,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2596
2932
  ]
2597
2933
  };
2598
2934
  }
2599
- case import_chunk_6CNYF6YU.SpaceAction.TOGGLE_HIDDEN: {
2935
+ case import_chunk_P4XUXM7Y.SpaceAction.TOGGLE_HIDDEN: {
2600
2936
  settings.values.showHidden = intent.data?.state ?? !settings.values.showHidden;
2601
2937
  return {
2602
2938
  data: true
@@ -2619,10 +2955,10 @@ var src_default = SpacePlugin;
2619
2955
  CollectionSection,
2620
2956
  CollectionType,
2621
2957
  ContactType,
2622
- EmptySpace,
2623
- EmptyTree,
2958
+ FallbackSettings,
2624
2959
  FullPresence,
2625
2960
  MenuFooter,
2961
+ MessageState,
2626
2962
  MessageType,
2627
2963
  MissingObject,
2628
2964
  PersistenceStatus,
@@ -2634,6 +2970,7 @@ var src_default = SpacePlugin;
2634
2970
  SPACE_PLUGIN,
2635
2971
  SPACE_PLUGIN_SHORT_ID,
2636
2972
  SPACE_TYPE,
2973
+ SaveStatus,
2637
2974
  ShareSpaceButton,
2638
2975
  ShareSpaceButtonImpl,
2639
2976
  SmallPresence,
@@ -2643,6 +2980,9 @@ var src_default = SpacePlugin;
2643
2980
  SpacePlugin,
2644
2981
  SpacePresence,
2645
2982
  SpaceSettings,
2983
+ SyncStatus,
2984
+ SyncStatusDetail,
2985
+ SyncStatusIndicator,
2646
2986
  ThreadStatus,
2647
2987
  ThreadType,
2648
2988
  cloneObject,
@@ -2656,6 +2996,7 @@ var src_default = SpacePlugin;
2656
2996
  getNestedObjects,
2657
2997
  getSpaceDisplayName,
2658
2998
  memoizeQuery,
2999
+ parseSpaceInitPlugin,
2659
3000
  parseSpacePlugin,
2660
3001
  translations
2661
3002
  });