@dxos/plugin-space 0.6.11 → 0.6.12-main.568932b

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 (71) hide show
  1. package/dist/lib/browser/{chunk-DTVUOG2C.mjs → chunk-NMD7OZMX.mjs} +22 -4
  2. package/dist/lib/browser/chunk-NMD7OZMX.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +500 -187
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/types/index.mjs +7 -3
  7. package/dist/lib/node/{chunk-CVZPI2P3.cjs → chunk-K7CSJ7HL.cjs} +28 -8
  8. package/dist/lib/node/chunk-K7CSJ7HL.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +588 -279
  10. package/dist/lib/node/index.cjs.map +4 -4
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/types/index.cjs +14 -10
  13. package/dist/lib/node/types/index.cjs.map +2 -2
  14. package/dist/lib/node-esm/chunk-GM2YUC77.mjs +37 -0
  15. package/dist/lib/node-esm/chunk-GM2YUC77.mjs.map +7 -0
  16. package/dist/lib/node-esm/chunk-P73EVC4A.mjs +115 -0
  17. package/dist/lib/node-esm/chunk-P73EVC4A.mjs.map +7 -0
  18. package/dist/lib/node-esm/index.mjs +2954 -0
  19. package/dist/lib/node-esm/index.mjs.map +7 -0
  20. package/dist/lib/node-esm/meta.json +1 -0
  21. package/dist/lib/node-esm/meta.mjs +14 -0
  22. package/dist/lib/node-esm/meta.mjs.map +7 -0
  23. package/dist/lib/node-esm/types/index.mjs +26 -0
  24. package/dist/lib/node-esm/types/index.mjs.map +7 -0
  25. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  26. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  27. package/dist/types/src/components/SaveStatus.d.ts +3 -0
  28. package/dist/types/src/components/SaveStatus.d.ts.map +1 -0
  29. package/dist/types/src/components/ShareSpaceButton.stories.d.ts +2 -0
  30. package/dist/types/src/components/ShareSpaceButton.stories.d.ts.map +1 -1
  31. package/dist/types/src/components/SpaceMain/SpaceMain.d.ts.map +1 -1
  32. package/dist/types/src/components/SpacePresence.stories.d.ts +2 -0
  33. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  34. package/dist/types/src/components/SpaceSettings.d.ts.map +1 -1
  35. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +13 -0
  36. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -0
  37. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +115 -0
  38. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -0
  39. package/dist/types/src/components/SyncStatus/index.d.ts +2 -0
  40. package/dist/types/src/components/SyncStatus/index.d.ts.map +1 -0
  41. package/dist/types/src/components/SyncStatus/types.d.ts +14 -0
  42. package/dist/types/src/components/SyncStatus/types.d.ts.map +1 -0
  43. package/dist/types/src/components/index.d.ts +2 -0
  44. package/dist/types/src/components/index.d.ts.map +1 -1
  45. package/dist/types/src/translations.d.ts +2 -0
  46. package/dist/types/src/translations.d.ts.map +1 -1
  47. package/dist/types/src/types/thread.d.ts +13 -0
  48. package/dist/types/src/types/thread.d.ts.map +1 -1
  49. package/dist/types/src/types/types.d.ts +18 -1
  50. package/dist/types/src/types/types.d.ts.map +1 -1
  51. package/dist/types/src/util.d.ts +1 -4
  52. package/dist/types/src/util.d.ts.map +1 -1
  53. package/package.json +43 -36
  54. package/src/SpacePlugin.tsx +43 -24
  55. package/src/components/MenuFooter.tsx +1 -0
  56. package/src/components/SaveStatus.tsx +95 -0
  57. package/src/components/SpaceMain/SpaceMain.tsx +1 -22
  58. package/src/components/SpacePresence.tsx +1 -1
  59. package/src/components/SpaceSettings.tsx +32 -3
  60. package/src/components/SyncStatus/SyncStatus.stories.tsx +62 -0
  61. package/src/components/SyncStatus/SyncStatus.tsx +188 -0
  62. package/src/components/SyncStatus/index.ts +5 -0
  63. package/src/components/SyncStatus/types.ts +77 -0
  64. package/src/components/index.ts +2 -0
  65. package/src/translations.ts +2 -0
  66. package/src/types/collection.ts +1 -1
  67. package/src/types/thread.ts +10 -1
  68. package/src/types/types.ts +25 -1
  69. package/src/util.tsx +15 -50
  70. package/dist/lib/browser/chunk-DTVUOG2C.mjs.map +0 -7
  71. package/dist/lib/node/chunk-CVZPI2P3.cjs.map +0 -7
@@ -28,29 +28,31 @@ 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_K7CSJ7HL.ActorSchema,
32
32
  AwaitingObject: () => AwaitingObject,
33
33
  COMPOSER_SPACE_LOCK: () => COMPOSER_SPACE_LOCK,
34
- ChannelType: () => import_chunk_CVZPI2P3.ChannelType,
34
+ ChannelType: () => import_chunk_K7CSJ7HL.ChannelType,
35
35
  CollectionMain: () => CollectionMain,
36
36
  CollectionSection: () => CollectionSection,
37
- CollectionType: () => import_chunk_CVZPI2P3.CollectionType,
38
- ContactType: () => import_chunk_CVZPI2P3.ContactType,
37
+ CollectionType: () => import_chunk_K7CSJ7HL.CollectionType,
38
+ ContactType: () => import_chunk_K7CSJ7HL.ContactType,
39
39
  EmptySpace: () => EmptySpace,
40
40
  EmptyTree: () => EmptyTree,
41
41
  FullPresence: () => FullPresence,
42
42
  MenuFooter: () => MenuFooter,
43
- MessageType: () => import_chunk_CVZPI2P3.MessageType,
43
+ MessageState: () => import_chunk_K7CSJ7HL.MessageState,
44
+ MessageType: () => import_chunk_K7CSJ7HL.MessageType,
44
45
  MissingObject: () => MissingObject,
45
46
  PersistenceStatus: () => PersistenceStatus,
46
47
  PopoverRenameObject: () => PopoverRenameObject,
47
48
  PopoverRenameSpace: () => PopoverRenameSpace,
48
49
  SHARED: () => SHARED,
49
50
  SPACES: () => SPACES,
50
- SPACE_DIRECTORY_HANDLE: () => import_chunk_CVZPI2P3.SPACE_DIRECTORY_HANDLE,
51
+ SPACE_DIRECTORY_HANDLE: () => import_chunk_K7CSJ7HL.SPACE_DIRECTORY_HANDLE,
51
52
  SPACE_PLUGIN: () => import_chunk_6CNYF6YU.SPACE_PLUGIN,
52
53
  SPACE_PLUGIN_SHORT_ID: () => import_chunk_6CNYF6YU.SPACE_PLUGIN_SHORT_ID,
53
54
  SPACE_TYPE: () => SPACE_TYPE,
55
+ SaveStatus: () => SaveStatus,
54
56
  ShareSpaceButton: () => ShareSpaceButton,
55
57
  ShareSpaceButtonImpl: () => ShareSpaceButtonImpl,
56
58
  SmallPresence: () => SmallPresence,
@@ -60,8 +62,11 @@ __export(node_exports, {
60
62
  SpacePlugin: () => SpacePlugin,
61
63
  SpacePresence: () => SpacePresence,
62
64
  SpaceSettings: () => SpaceSettings,
63
- ThreadStatus: () => import_chunk_CVZPI2P3.ThreadStatus,
64
- ThreadType: () => import_chunk_CVZPI2P3.ThreadType,
65
+ SyncStatus: () => SyncStatus,
66
+ SyncStatusDetail: () => SyncStatusDetail,
67
+ SyncStatusIndicator: () => SyncStatusIndicator,
68
+ ThreadStatus: () => import_chunk_K7CSJ7HL.ThreadStatus,
69
+ ThreadType: () => import_chunk_K7CSJ7HL.ThreadType,
65
70
  cloneObject: () => cloneObject,
66
71
  constructObjectActionGroups: () => constructObjectActionGroups,
67
72
  constructObjectActions: () => constructObjectActions,
@@ -74,15 +79,15 @@ __export(node_exports, {
74
79
  getNestedObjects: () => getNestedObjects,
75
80
  getSpaceDisplayName: () => getSpaceDisplayName,
76
81
  memoizeQuery: () => memoizeQuery,
82
+ parseSpaceInitPlugin: () => import_chunk_K7CSJ7HL.parseSpaceInitPlugin,
77
83
  parseSpacePlugin: () => parseSpacePlugin,
78
84
  translations: () => translations_default
79
85
  });
80
86
  module.exports = __toCommonJS(node_exports);
81
87
  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");
88
+ var import_chunk_K7CSJ7HL = require("./chunk-K7CSJ7HL.cjs");
84
89
  var import_signals_core = require("@preact/signals-core");
85
- var import_react2 = __toESM(require("react"));
90
+ var import_react = __toESM(require("react"));
86
91
  var import_app_framework = require("@dxos/app-framework");
87
92
  var import_async = require("@dxos/async");
88
93
  var import_echo_schema = require("@dxos/echo-schema");
@@ -96,73 +101,71 @@ var import_meta = require("@dxos/plugin-observability/meta");
96
101
  var import_react_client = require("@dxos/react-client");
97
102
  var import_echo = require("@dxos/react-client/echo");
98
103
  var import_react_ui = require("@dxos/react-ui");
99
- var import_react3 = require("@dxos/shell/react");
104
+ var import_react2 = require("@dxos/shell/react");
100
105
  var import_util = require("@dxos/util");
101
- var import_react4 = require("@phosphor-icons/react");
102
- var import_react5 = __toESM(require("react"));
106
+ var import_react3 = require("@phosphor-icons/react");
107
+ var import_react4 = __toESM(require("react"));
103
108
  var import_app_framework2 = require("@dxos/app-framework");
104
109
  var import_react_client2 = require("@dxos/react-client");
105
110
  var import_echo2 = require("@dxos/react-client/echo");
106
111
  var import_react_ui2 = require("@dxos/react-ui");
107
112
  var import_react_ui_theme = require("@dxos/react-ui-theme");
108
- var import_react6 = __toESM(require("react"));
113
+ var import_react5 = __toESM(require("react"));
109
114
  var import_react_ui3 = require("@dxos/react-ui");
110
115
  var import_react_ui_theme2 = require("@dxos/react-ui-theme");
111
- var import_react7 = __toESM(require("react"));
116
+ var import_react6 = __toESM(require("react"));
112
117
  var import_react_ui4 = require("@dxos/react-ui");
113
- var import_react8 = __toESM(require("react"));
118
+ var import_react7 = __toESM(require("react"));
114
119
  var import_react_ui5 = require("@dxos/react-ui");
115
120
  var import_react_ui_theme3 = require("@dxos/react-ui-theme");
116
- var import_react9 = __toESM(require("react"));
121
+ var import_react8 = __toESM(require("react"));
117
122
  var import_react_ui6 = require("@dxos/react-ui");
118
123
  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"));
124
+ var import_react9 = require("@phosphor-icons/react");
125
+ var import_react10 = __toESM(require("react"));
121
126
  var import_echo3 = require("@dxos/client/echo");
122
127
  var import_react_client3 = require("@dxos/react-client");
123
128
  var import_react_ui7 = require("@dxos/react-ui");
124
- var import_react12 = require("@phosphor-icons/react");
125
- var import_react13 = __toESM(require("react"));
126
129
  var import_app_framework3 = require("@dxos/app-framework");
127
130
  var import_echo_schema2 = require("@dxos/echo-schema");
128
131
  var import_invariant = require("@dxos/invariant");
129
132
  var import_migrations2 = require("@dxos/migrations");
130
133
  var import_plugin_graph2 = require("@dxos/plugin-graph");
131
134
  var import_echo4 = require("@dxos/react-client/echo");
132
- var import_react14 = __toESM(require("react"));
135
+ var import_react11 = __toESM(require("react"));
133
136
  var import_app_framework4 = require("@dxos/app-framework");
134
137
  var import_react_ui8 = require("@dxos/react-ui");
135
138
  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"));
139
+ var import_react12 = require("@phosphor-icons/react");
140
+ var import_react13 = __toESM(require("react"));
138
141
  var import_async2 = require("@dxos/async");
139
142
  var import_react_ui9 = require("@dxos/react-ui");
140
143
  var import_react_ui_theme6 = require("@dxos/react-ui-theme");
141
- var import_react17 = __toESM(require("react"));
144
+ var import_react14 = __toESM(require("react"));
142
145
  var import_log2 = require("@dxos/log");
143
146
  var import_react_ui10 = require("@dxos/react-ui");
144
- var import_react18 = __toESM(require("react"));
147
+ var import_react15 = __toESM(require("react"));
145
148
  var import_react_ui11 = require("@dxos/react-ui");
146
- var import_react19 = __toESM(require("react"));
149
+ var import_react16 = __toESM(require("react"));
147
150
  var import_app_framework5 = require("@dxos/app-framework");
148
151
  var import_react_ui12 = require("@dxos/react-ui");
149
- var import_react20 = require("@phosphor-icons/react");
150
- var import_react21 = __toESM(require("react"));
152
+ var import_react17 = require("@phosphor-icons/react");
153
+ var import_react18 = __toESM(require("react"));
151
154
  var import_app_framework6 = require("@dxos/app-framework");
152
155
  var import_echo5 = require("@dxos/react-client/echo");
153
156
  var import_react_ui13 = require("@dxos/react-ui");
154
157
  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"));
158
+ var import_react19 = require("@dxos/shell/react");
159
+ var import_react20 = require("@phosphor-icons/react");
160
+ var import_react21 = __toESM(require("react"));
158
161
  var import_app_framework7 = require("@dxos/app-framework");
159
162
  var import_echo6 = require("@dxos/react-client/echo");
160
163
  var import_invitations = require("@dxos/react-client/invitations");
161
164
  var import_invitations2 = require("@dxos/react-client/invitations");
162
165
  var import_react_ui14 = require("@dxos/react-ui");
163
166
  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"));
167
+ var import_react22 = require("@dxos/shell/react");
168
+ var import_react23 = __toESM(require("react"));
166
169
  var import_app_framework8 = require("@dxos/app-framework");
167
170
  var import_display_name = require("@dxos/display-name");
168
171
  var import_react_client4 = require("@dxos/react-client");
@@ -171,22 +174,36 @@ var import_halo = require("@dxos/react-client/halo");
171
174
  var import_react_ui15 = require("@dxos/react-ui");
172
175
  var import_react_ui_attention = require("@dxos/react-ui-attention");
173
176
  var import_util2 = require("@dxos/util");
174
- var import_react27 = __toESM(require("react"));
177
+ var import_react24 = __toESM(require("react"));
175
178
  var import_app_framework9 = require("@dxos/app-framework");
176
179
  var import_plugin_settings = require("@dxos/plugin-settings");
177
180
  var import_react_ui16 = require("@dxos/react-ui");
181
+ var import_react25 = __toESM(require("react"));
182
+ var import_context = require("@dxos/context");
183
+ var import_plugin_status_bar = require("@dxos/plugin-status-bar");
184
+ var import_react_client5 = require("@dxos/react-client");
185
+ var import_react_ui17 = require("@dxos/react-ui");
186
+ var import_react26 = __toESM(require("react"));
187
+ var import_plugin_status_bar2 = require("@dxos/plugin-status-bar");
188
+ var import_react_ui18 = require("@dxos/react-ui");
189
+ var import_react_ui_syntax_highlighter = require("@dxos/react-ui-syntax-highlighter");
190
+ var import_react_ui_theme9 = require("@dxos/react-ui-theme");
191
+ var import_react27 = require("react");
192
+ var import_context2 = require("@dxos/context");
193
+ var import_protocols = require("@dxos/protocols");
194
+ var import_react_client6 = require("@dxos/react-client");
178
195
  var WAIT_FOR_OBJECT_TIMEOUT = 18e4;
179
196
  var TOAST_TIMEOUT = 24e4;
180
197
  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);
198
+ const [open, setOpen] = (0, import_react4.useState)(true);
199
+ const [waiting, setWaiting] = (0, import_react4.useState)(true);
200
+ const [found, setFound] = (0, import_react4.useState)(false);
184
201
  const { t } = (0, import_react_ui2.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
185
202
  const intentPlugin = (0, import_app_framework2.useResolvePlugin)(import_app_framework2.parseIntentPlugin);
186
203
  const navigationPlugin = (0, import_app_framework2.useResolvePlugin)(import_app_framework2.parseNavigationPlugin);
187
204
  const client = (0, import_react_client2.useClient)();
188
205
  const objects = (0, import_echo2.useQuery)(client.spaces);
189
- (0, import_react5.useEffect)(() => {
206
+ (0, import_react4.useEffect)(() => {
190
207
  if (!id) {
191
208
  return;
192
209
  }
@@ -197,7 +214,7 @@ var AwaitingObject = ({ id }) => {
197
214
  }, [
198
215
  id
199
216
  ]);
200
- (0, import_react5.useEffect)(() => {
217
+ (0, import_react4.useEffect)(() => {
201
218
  if (objects.findIndex((object) => (0, import_echo2.fullyQualifiedId)(object) === id) > -1) {
202
219
  setFound(true);
203
220
  if (navigationPlugin?.provides.location.active === id) {
@@ -229,33 +246,33 @@ var AwaitingObject = ({ id }) => {
229
246
  });
230
247
  void handleClose();
231
248
  };
232
- return /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Toast.Root, {
249
+ return /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Toast.Root, {
233
250
  open,
234
251
  duration: TOAST_TIMEOUT,
235
252
  onOpenChange: setOpen
236
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Toast.Body, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Toast.Title, {
253
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Toast.Body, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Toast.Title, {
237
254
  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, {
255
+ }, found ? /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(import_react3.CheckCircle, {
239
256
  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, {
257
+ }), /* @__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
258
  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, {
259
+ }), /* @__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
260
  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, {
261
+ }), /* @__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
262
  altText: t("go to object alt"),
246
263
  asChild: true
247
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Button, {
264
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Button, {
248
265
  variant: "primary",
249
266
  onClick: handleNavigate
250
- }, t("go to object label"))), /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Toast.Close, {
267
+ }, t("go to object label"))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Toast.Close, {
251
268
  asChild: true
252
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Button, {
269
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Button, {
253
270
  onClick: handleClose
254
271
  }, t("close label", {
255
272
  ns: "appkit"
256
- })))) : /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Toast.Close, {
273
+ })))) : /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Toast.Close, {
257
274
  asChild: true
258
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Button, {
275
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Button, {
259
276
  onClick: handleClose
260
277
  }, t(waiting ? "close label" : "confirm label", {
261
278
  ns: "appkit"
@@ -263,33 +280,33 @@ var AwaitingObject = ({ id }) => {
263
280
  };
264
281
  var CollectionMain = ({ collection }) => {
265
282
  const { t } = (0, import_react_ui3.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
266
- return /* @__PURE__ */ import_react6.default.createElement("div", {
283
+ return /* @__PURE__ */ import_react5.default.createElement("div", {
267
284
  role: "none",
268
285
  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
286
  "data-testid": "composer.firstRunMessage"
270
- }, /* @__PURE__ */ import_react6.default.createElement("p", {
287
+ }, /* @__PURE__ */ import_react5.default.createElement("p", {
271
288
  role: "alert",
272
289
  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
290
  }, collection.name ?? t("unnamed collection label")));
274
291
  };
275
292
  var CollectionSection = ({ collection }) => {
276
293
  const { t } = (0, import_react_ui4.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
277
- return /* @__PURE__ */ import_react7.default.createElement("div", {
294
+ return /* @__PURE__ */ import_react6.default.createElement("div", {
278
295
  className: "min-bs-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center"
279
- }, /* @__PURE__ */ import_react7.default.createElement("span", {
296
+ }, /* @__PURE__ */ import_react6.default.createElement("span", {
280
297
  className: "truncate"
281
298
  }, collection.name ?? t("unnamed collection label")));
282
299
  };
283
300
  var EmptySpace = () => {
284
301
  const { t } = (0, import_react_ui5.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
285
- return /* @__PURE__ */ import_react8.default.createElement("div", {
302
+ return /* @__PURE__ */ import_react7.default.createElement("div", {
286
303
  role: "none",
287
304
  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
305
  }, t("empty space message"));
289
306
  };
290
307
  var EmptyTree = () => {
291
308
  const { t } = (0, import_react_ui6.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
292
- return /* @__PURE__ */ import_react9.default.createElement("div", {
309
+ return /* @__PURE__ */ import_react8.default.createElement("div", {
293
310
  role: "none",
294
311
  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
312
  }, t("empty tree message"));
@@ -363,8 +380,8 @@ var checkPendingMigration = (space) => {
363
380
  };
364
381
  var constructSpaceNode = ({ space, personal, namesCache, resolve }) => {
365
382
  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({
383
+ const collection = space.state.get() === import_echo4.SpaceState.SPACE_READY && space.properties[import_chunk_K7CSJ7HL.CollectionType.typename];
384
+ const partials = space.state.get() === import_echo4.SpaceState.SPACE_READY && collection instanceof import_chunk_K7CSJ7HL.CollectionType ? getCollectionGraphNodePartials({
368
385
  collection,
369
386
  space,
370
387
  resolve
@@ -380,8 +397,7 @@ var constructSpaceNode = ({ space, personal, namesCache, resolve }) => {
380
397
  namesCache
381
398
  }),
382
399
  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",
400
+ icon: "ph--planet--regular",
385
401
  disabled: space.state.get() !== import_echo4.SpaceState.SPACE_READY || hasPendingMigration,
386
402
  testId: "spacePlugin.space"
387
403
  }
@@ -394,7 +410,7 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
394
410
  if (state !== import_echo4.SpaceState.SPACE_READY || hasPendingMigration) {
395
411
  return [];
396
412
  }
397
- const collection = space.properties[import_chunk_CVZPI2P3.CollectionType.typename];
413
+ const collection = space.properties[import_chunk_K7CSJ7HL.CollectionType.typename];
398
414
  const actions = [
399
415
  {
400
416
  id: getId(import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT),
@@ -407,8 +423,7 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
407
423
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
408
424
  }
409
425
  ],
410
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.Plus, props),
411
- iconSymbol: "ph--plus--regular",
426
+ icon: "ph--plus--regular",
412
427
  disposition: "toolbar",
413
428
  // TODO(wittjosiah): This is currently a navtree feature. Address this with cmd+k integration.
414
429
  // mainAreaDisposition: 'in-flow',
@@ -425,7 +440,7 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
425
440
  action: import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT,
426
441
  data: {
427
442
  target: collection,
428
- object: (0, import_echo_schema2.create)(import_chunk_CVZPI2P3.CollectionType, {
443
+ object: (0, import_echo_schema2.create)(import_chunk_K7CSJ7HL.CollectionType, {
429
444
  objects: [],
430
445
  views: {}
431
446
  })
@@ -442,8 +457,7 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
442
457
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
443
458
  }
444
459
  ],
445
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.CardsThree, props),
446
- iconSymbol: "ph--cards-three--regular",
460
+ icon: "ph--cards-three--regular",
447
461
  testId: "spacePlugin.createCollection"
448
462
  }
449
463
  }
@@ -477,8 +491,7 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
477
491
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
478
492
  }
479
493
  ],
480
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.Database, props),
481
- iconSymbol: "ph--database--regular",
494
+ icon: "ph--database--regular",
482
495
  disposition: "toolbar",
483
496
  mainAreaDisposition: "in-flow",
484
497
  disabled: migrating || import_migrations2.Migrations.running(space)
@@ -509,8 +522,7 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
509
522
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
510
523
  }
511
524
  ],
512
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.Users, props),
513
- iconSymbol: "ph--users--regular",
525
+ icon: "ph--users--regular",
514
526
  disabled: locked,
515
527
  keyBinding: {
516
528
  macos: "meta+.",
@@ -537,8 +549,7 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
537
549
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
538
550
  }
539
551
  ],
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"
552
+ icon: locked ? "ph--lock-simple-open--regular" : "ph--lock-simple--regular"
542
553
  }
543
554
  }, {
544
555
  id: getId(import_chunk_6CNYF6YU.SpaceAction.RENAME),
@@ -560,8 +571,7 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
560
571
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
561
572
  }
562
573
  ],
563
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.PencilSimpleLine, props),
564
- iconSymbol: "ph--pencil-simple-line--regular",
574
+ icon: "ph--pencil-simple-line--regular",
565
575
  keyBinding: {
566
576
  macos: "shift+F6",
567
577
  windows: "shift+F6"
@@ -590,8 +600,7 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
590
600
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
591
601
  }
592
602
  ],
593
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.X, props),
594
- iconSymbol: "ph--x--regular",
603
+ icon: "ph--x--regular",
595
604
  mainAreaDisposition: "menu",
596
605
  disabled: personal
597
606
  }
@@ -617,8 +626,7 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
617
626
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
618
627
  }
619
628
  ],
620
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.ClockCounterClockwise, props),
621
- iconSymbol: "ph--clock-counter-clockwise--regular",
629
+ icon: "ph--clock-counter-clockwise--regular",
622
630
  disposition: "toolbar",
623
631
  mainAreaDisposition: "in-flow"
624
632
  }
@@ -635,7 +643,7 @@ var createObjectNode = ({ object, space, resolve }) => {
635
643
  if (Object.keys(metadata).length === 0) {
636
644
  return void 0;
637
645
  }
638
- const partials = object instanceof import_chunk_CVZPI2P3.CollectionType ? getCollectionGraphNodePartials({
646
+ const partials = object instanceof import_chunk_K7CSJ7HL.CollectionType ? getCollectionGraphNodePartials({
639
647
  collection: object,
640
648
  space,
641
649
  resolve
@@ -652,8 +660,7 @@ var createObjectNode = ({ object, space, resolve }) => {
652
660
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
653
661
  }
654
662
  ],
655
- icon: metadata.icon ?? (() => /* @__PURE__ */ import_react13.default.createElement(import_react12.Placeholder, null)),
656
- iconSymbol: metadata.iconSymbol ?? "ph--placeholder--regular",
663
+ icon: metadata.icon ?? "ph--placeholder--regular",
657
664
  testId: "spacePlugin.object",
658
665
  persistenceClass: "echo",
659
666
  persistenceKey: space?.id
@@ -661,7 +668,7 @@ var createObjectNode = ({ object, space, resolve }) => {
661
668
  };
662
669
  };
663
670
  var constructObjectActionGroups = ({ object, dispatch }) => {
664
- if (!(object instanceof import_chunk_CVZPI2P3.CollectionType)) {
671
+ if (!(object instanceof import_chunk_K7CSJ7HL.CollectionType)) {
665
672
  return [];
666
673
  }
667
674
  const collection = object;
@@ -678,8 +685,7 @@ var constructObjectActionGroups = ({ object, dispatch }) => {
678
685
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
679
686
  }
680
687
  ],
681
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.Plus, props),
682
- iconSymbol: "ph--plus--regular",
688
+ icon: "ph--plus--regular",
683
689
  disposition: "toolbar",
684
690
  // TODO(wittjosiah): This is currently a navtree feature. Address this with cmd+k integration.
685
691
  // mainAreaDisposition: 'in-flow',
@@ -696,7 +702,7 @@ var constructObjectActionGroups = ({ object, dispatch }) => {
696
702
  action: import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT,
697
703
  data: {
698
704
  target: collection,
699
- object: (0, import_echo_schema2.create)(import_chunk_CVZPI2P3.CollectionType, {
705
+ object: (0, import_echo_schema2.create)(import_chunk_K7CSJ7HL.CollectionType, {
700
706
  objects: [],
701
707
  views: {}
702
708
  })
@@ -713,8 +719,7 @@ var constructObjectActionGroups = ({ object, dispatch }) => {
713
719
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
714
720
  }
715
721
  ],
716
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.CardsThree, props),
717
- iconSymbol: "ph--cards-three--regular",
722
+ icon: "ph--cards-three--regular",
718
723
  testId: "spacePlugin.createCollection"
719
724
  }
720
725
  }
@@ -741,13 +746,12 @@ var constructObjectActions = ({ node, dispatch }) => {
741
746
  },
742
747
  properties: {
743
748
  label: [
744
- object instanceof import_chunk_CVZPI2P3.CollectionType ? "rename collection label" : "rename object label",
749
+ object instanceof import_chunk_K7CSJ7HL.CollectionType ? "rename collection label" : "rename object label",
745
750
  {
746
751
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
747
752
  }
748
753
  ],
749
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.PencilSimpleLine, props),
750
- iconSymbol: "ph--pencil-simple-line--regular",
754
+ icon: "ph--pencil-simple-line--regular",
751
755
  // TODO(wittjosiah): Doesn't work.
752
756
  // keyBinding: 'shift+F6',
753
757
  testId: "spacePlugin.renameObject"
@@ -760,7 +764,7 @@ var constructObjectActions = ({ node, dispatch }) => {
760
764
  const graph = (0, import_plugin_graph2.getGraph)(node);
761
765
  const collection = graph.nodes(node, {
762
766
  relation: "inbound"
763
- }).find(({ data }) => data instanceof import_chunk_CVZPI2P3.CollectionType)?.data;
767
+ }).find(({ data }) => data instanceof import_chunk_K7CSJ7HL.CollectionType)?.data;
764
768
  await dispatch([
765
769
  {
766
770
  action: import_chunk_6CNYF6YU.SpaceAction.REMOVE_OBJECT,
@@ -773,14 +777,13 @@ var constructObjectActions = ({ node, dispatch }) => {
773
777
  },
774
778
  properties: {
775
779
  label: [
776
- object instanceof import_chunk_CVZPI2P3.CollectionType ? "delete collection label" : "delete object label",
780
+ object instanceof import_chunk_K7CSJ7HL.CollectionType ? "delete collection label" : "delete object label",
777
781
  {
778
782
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
779
783
  }
780
784
  ],
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",
785
+ icon: "ph--trash--regular",
786
+ keyBinding: object instanceof import_chunk_K7CSJ7HL.CollectionType ? void 0 : "shift+meta+Backspace",
784
787
  testId: "spacePlugin.deleteObject"
785
788
  }
786
789
  },
@@ -798,8 +801,7 @@ var constructObjectActions = ({ node, dispatch }) => {
798
801
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
799
802
  }
800
803
  ],
801
- icon: (props) => /* @__PURE__ */ import_react13.default.createElement(import_react12.Link, props),
802
- iconSymbol: "ph--link--regular",
804
+ icon: "ph--link--regular",
803
805
  testId: "spacePlugin.copyLink"
804
806
  }
805
807
  }
@@ -840,7 +842,7 @@ var cloneObject = async (object, resolve) => {
840
842
  const serializer = metadata.serializer;
841
843
  (0, import_invariant.invariant)(serializer, `No serializer for type: ${typename}`, {
842
844
  F: __dxlog_file,
843
- L: 639,
845
+ L: 604,
844
846
  S: void 0,
845
847
  A: [
846
848
  "serializer",
@@ -862,22 +864,22 @@ var MenuFooter = ({ object }) => {
862
864
  const spaceName = space ? getSpaceDisplayName(space, {
863
865
  personal: client.spaces.default === space
864
866
  }) : "";
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", {
867
+ return space ? /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement(import_react_ui7.DropdownMenu.Separator, null), /* @__PURE__ */ import_react10.default.createElement(import_react_ui7.DropdownMenu.GroupLabel, null, t("menu footer label")), /* @__PURE__ */ import_react10.default.createElement("dl", {
866
868
  className: "pis-2 mbe-2 text-xs grid grid-cols-[max-content_1fr] gap-2"
867
- }, /* @__PURE__ */ import_react11.default.createElement("dt", {
869
+ }, /* @__PURE__ */ import_react10.default.createElement("dt", {
868
870
  className: "uppercase text-[.75em] tracking-wide font-medium mbs-px self-start"
869
- }, t("location label")), /* @__PURE__ */ import_react11.default.createElement("dd", {
871
+ }, t("location label")), /* @__PURE__ */ import_react10.default.createElement("dd", {
870
872
  className: "line-clamp-3"
871
- }, /* @__PURE__ */ import_react11.default.createElement(import_react10.Planet, {
873
+ }, /* @__PURE__ */ import_react10.default.createElement(import_react9.Planet, {
872
874
  className: "inline-block mie-1"
873
875
  }), (0, import_react_ui7.toLocalizedString)(spaceName, t)))) : null;
874
876
  };
875
877
  var WAIT_FOR_OBJECT_TIMEOUT2 = 1e3;
876
878
  var MissingObject = ({ id }) => {
877
879
  const { t } = (0, import_react_ui8.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
878
- const [waiting, setWaiting] = (0, import_react14.useState)(false);
880
+ const [waiting, setWaiting] = (0, import_react11.useState)(false);
879
881
  const intentPlugin = (0, import_app_framework4.useResolvePlugin)(import_app_framework4.parseIntentPlugin);
880
- (0, import_react14.useEffect)(() => {
882
+ (0, import_react11.useEffect)(() => {
881
883
  if (!intentPlugin) {
882
884
  return;
883
885
  }
@@ -896,13 +898,13 @@ var MissingObject = ({ id }) => {
896
898
  intentPlugin,
897
899
  id
898
900
  ]);
899
- return /* @__PURE__ */ import_react14.default.createElement("div", {
901
+ return /* @__PURE__ */ import_react11.default.createElement("div", {
900
902
  role: "none",
901
903
  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", {
904
+ }, waiting ? /* @__PURE__ */ import_react11.default.createElement("p", {
903
905
  role: "alert",
904
906
  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, {
907
+ }, t("missing object message")) : /* @__PURE__ */ import_react11.default.createElement(import_react_ui8.Status, {
906
908
  indeterminate: true,
907
909
  "aria-label": "Initializing"
908
910
  }));
@@ -915,11 +917,11 @@ var Status2;
915
917
  })(Status2 || (Status2 = {}));
916
918
  var PersistenceStatus = ({ db }) => {
917
919
  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);
920
+ const [displayMessage, setDisplayMessage] = (0, import_react13.useState)(false);
921
+ const [status, naturalSetStatus] = (0, import_react13.useState)(0);
922
+ const [prevStatus, setPrevStatus] = (0, import_react13.useState)(0);
921
923
  const _setStatus = (0, import_async2.debounce)(naturalSetStatus, 500);
922
- (0, import_react16.useEffect)(() => {
924
+ (0, import_react13.useEffect)(() => {
923
925
  setPrevStatus(status);
924
926
  if (prevStatus !== status && status === 0) {
925
927
  setDisplayMessage(true);
@@ -931,44 +933,44 @@ var PersistenceStatus = ({ db }) => {
931
933
  ]);
932
934
  switch (status) {
933
935
  case 2:
934
- return /* @__PURE__ */ import_react16.default.createElement("div", {
936
+ return /* @__PURE__ */ import_react13.default.createElement("div", {
935
937
  className: "flex items-center"
936
- }, /* @__PURE__ */ import_react16.default.createElement(import_react15.Warning, {
938
+ }, /* @__PURE__ */ import_react13.default.createElement(import_react12.Warning, {
937
939
  className: (0, import_react_ui_theme6.mx)((0, import_react_ui_theme6.getSize)(4), "me-1")
938
- }), /* @__PURE__ */ import_react16.default.createElement("span", {
940
+ }), /* @__PURE__ */ import_react13.default.createElement("span", {
939
941
  className: (0, import_react_ui_theme6.mx)("text-sm", import_react_ui_theme6.warningText)
940
942
  }, t("persistence error label")));
941
943
  case 1:
942
- return /* @__PURE__ */ import_react16.default.createElement("div", {
944
+ return /* @__PURE__ */ import_react13.default.createElement("div", {
943
945
  className: "flex items-center"
944
- }, /* @__PURE__ */ import_react16.default.createElement(import_react15.ArrowsCounterClockwise, {
946
+ }, /* @__PURE__ */ import_react13.default.createElement(import_react12.ArrowsCounterClockwise, {
945
947
  className: (0, import_react_ui_theme6.mx)((0, import_react_ui_theme6.getSize)(4), "me-1")
946
- }), /* @__PURE__ */ import_react16.default.createElement("span", {
948
+ }), /* @__PURE__ */ import_react13.default.createElement("span", {
947
949
  className: (0, import_react_ui_theme6.mx)("text-sm", import_react_ui_theme6.staticPlaceholderText)
948
950
  }, t("persistence pending label")));
949
951
  case 0:
950
952
  default:
951
- return /* @__PURE__ */ import_react16.default.createElement(import_react_ui9.Tooltip.Root, {
953
+ return /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Tooltip.Root, {
952
954
  delayDuration: 400
953
- }, /* @__PURE__ */ import_react16.default.createElement(import_react_ui9.Tooltip.Trigger, {
955
+ }, /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Tooltip.Trigger, {
954
956
  role: "status",
955
957
  className: "flex items-center"
956
- }, /* @__PURE__ */ import_react16.default.createElement(import_react15.CheckCircle, {
958
+ }, /* @__PURE__ */ import_react13.default.createElement(import_react12.CheckCircle, {
957
959
  className: (0, import_react_ui_theme6.mx)((0, import_react_ui_theme6.getSize)(4), "me-1")
958
- }), displayMessage && /* @__PURE__ */ import_react16.default.createElement("span", {
960
+ }), displayMessage && /* @__PURE__ */ import_react13.default.createElement("span", {
959
961
  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, {
962
+ }, t("persisted locally label"))), /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Tooltip.Portal, null, /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Tooltip.Content, {
961
963
  classNames: "z-10"
962
- }, t("persisted locally message"), /* @__PURE__ */ import_react16.default.createElement(import_react_ui9.Tooltip.Arrow, null))));
964
+ }, t("persisted locally message"), /* @__PURE__ */ import_react13.default.createElement(import_react_ui9.Tooltip.Arrow, null))));
963
965
  }
964
966
  };
965
967
  var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
966
968
  var PopoverRenameObject = ({ object: obj }) => {
967
969
  const { t } = (0, import_react_ui10.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
968
- const doneButton = (0, import_react17.useRef)(null);
970
+ const doneButton = (0, import_react14.useRef)(null);
969
971
  const object = obj;
970
- const [name, setName] = (0, import_react17.useState)(object.name || object.title || "");
971
- const handleDone = (0, import_react17.useCallback)(() => {
972
+ const [name, setName] = (0, import_react14.useState)(object.name || object.title || "");
973
+ const handleDone = (0, import_react14.useCallback)(() => {
972
974
  try {
973
975
  object.name = name;
974
976
  } catch {
@@ -989,23 +991,23 @@ var PopoverRenameObject = ({ object: obj }) => {
989
991
  object,
990
992
  name
991
993
  ]);
992
- return /* @__PURE__ */ import_react17.default.createElement("div", {
994
+ return /* @__PURE__ */ import_react14.default.createElement("div", {
993
995
  role: "none",
994
996
  className: "p-1 flex gap-2"
995
- }, /* @__PURE__ */ import_react17.default.createElement("div", {
997
+ }, /* @__PURE__ */ import_react14.default.createElement("div", {
996
998
  role: "none",
997
999
  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, {
1000
+ }, /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Input.Root, null, /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Input.Label, {
999
1001
  srOnly: true
1000
- }, t("object name label")), /* @__PURE__ */ import_react17.default.createElement(import_react_ui10.Input.TextInput, {
1002
+ }, t("object name label")), /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Input.TextInput, {
1001
1003
  placeholder: t("object title placeholder"),
1002
1004
  value: name,
1003
1005
  "data-testid": "spacePlugin.renameObject.input",
1004
1006
  onChange: ({ target: { value } }) => setName(value),
1005
1007
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1006
- }))), /* @__PURE__ */ import_react17.default.createElement(import_react_ui10.Popover.Close, {
1008
+ }))), /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Popover.Close, {
1007
1009
  asChild: true
1008
- }, /* @__PURE__ */ import_react17.default.createElement(import_react_ui10.Button, {
1010
+ }, /* @__PURE__ */ import_react14.default.createElement(import_react_ui10.Button, {
1009
1011
  ref: doneButton,
1010
1012
  classNames: "self-stretch",
1011
1013
  onClick: handleDone
@@ -1015,32 +1017,32 @@ var PopoverRenameObject = ({ object: obj }) => {
1015
1017
  };
1016
1018
  var PopoverRenameSpace = ({ space }) => {
1017
1019
  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)(() => {
1020
+ const doneButton = (0, import_react15.useRef)(null);
1021
+ const [name, setName] = (0, import_react15.useState)(space.properties.name ?? "");
1022
+ const handleDone = (0, import_react15.useCallback)(() => {
1021
1023
  space.properties.name = name;
1022
1024
  }, [
1023
1025
  space,
1024
1026
  name
1025
1027
  ]);
1026
- return /* @__PURE__ */ import_react18.default.createElement("div", {
1028
+ return /* @__PURE__ */ import_react15.default.createElement("div", {
1027
1029
  role: "none",
1028
1030
  className: "p-1 flex gap-2"
1029
- }, /* @__PURE__ */ import_react18.default.createElement("div", {
1031
+ }, /* @__PURE__ */ import_react15.default.createElement("div", {
1030
1032
  role: "none",
1031
1033
  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, {
1034
+ }, /* @__PURE__ */ import_react15.default.createElement(import_react_ui11.Input.Root, null, /* @__PURE__ */ import_react15.default.createElement(import_react_ui11.Input.Label, {
1033
1035
  srOnly: true
1034
- }, t("space name label")), /* @__PURE__ */ import_react18.default.createElement(import_react_ui11.Input.TextInput, {
1036
+ }, t("space name label")), /* @__PURE__ */ import_react15.default.createElement(import_react_ui11.Input.TextInput, {
1035
1037
  defaultValue: space.properties.name ?? "",
1036
1038
  placeholder: t("unnamed space label"),
1037
1039
  onChange: ({ target: { value } }) => setName(value),
1038
1040
  // TODO(wittjosiah): Ideally this should access the popover context to close the popover.
1039
1041
  // Currently this is not possible because Radix does not expose the popover context.
1040
1042
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1041
- }))), /* @__PURE__ */ import_react18.default.createElement(import_react_ui11.Popover.Close, {
1043
+ }))), /* @__PURE__ */ import_react15.default.createElement(import_react_ui11.Popover.Close, {
1042
1044
  asChild: true
1043
- }, /* @__PURE__ */ import_react18.default.createElement(import_react_ui11.Button, {
1045
+ }, /* @__PURE__ */ import_react15.default.createElement(import_react_ui11.Button, {
1044
1046
  ref: doneButton,
1045
1047
  classNames: "self-stretch",
1046
1048
  onClick: handleDone
@@ -1050,7 +1052,7 @@ var PopoverRenameSpace = ({ space }) => {
1050
1052
  };
1051
1053
  var ShareSpaceButton = ({ spaceId }) => {
1052
1054
  const dispatch = (0, import_app_framework5.useIntentDispatcher)();
1053
- return /* @__PURE__ */ import_react19.default.createElement(ShareSpaceButtonImpl, {
1055
+ return /* @__PURE__ */ import_react16.default.createElement(ShareSpaceButtonImpl, {
1054
1056
  onClick: () => dispatch({
1055
1057
  action: import_chunk_6CNYF6YU.SpaceAction.SHARE,
1056
1058
  data: {
@@ -1061,7 +1063,7 @@ var ShareSpaceButton = ({ spaceId }) => {
1061
1063
  };
1062
1064
  var ShareSpaceButtonImpl = ({ onClick }) => {
1063
1065
  const { t } = (0, import_react_ui12.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1064
- return /* @__PURE__ */ import_react19.default.createElement(import_react_ui12.Button, {
1066
+ return /* @__PURE__ */ import_react16.default.createElement(import_react_ui12.Button, {
1065
1067
  "data-testid": "spacePlugin.shareSpaceButton",
1066
1068
  onClick,
1067
1069
  classNames: "mli-1"
@@ -1071,9 +1073,9 @@ var activeActionKeyStorageKey = "dxos:react-shell/space-manager/active-action";
1071
1073
  var Presence = import_echo6.SpaceMember.PresenceState;
1072
1074
  var handleCreateInvitationUrl = (invitationCode) => `${origin}?spaceInvitationCode=${invitationCode}`;
1073
1075
  var SpaceMemberList = ({ members }) => {
1074
- return members.length > 0 ? /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.List, {
1076
+ return members.length > 0 ? /* @__PURE__ */ import_react21.default.createElement(import_react_ui14.List, {
1075
1077
  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, {
1078
+ }, members.map((member) => /* @__PURE__ */ import_react21.default.createElement(import_react22.IdentityListItem, {
1077
1079
  classNames: "contents",
1078
1080
  key: member.identity.identityKey.toHex(),
1079
1081
  identity: member.identity,
@@ -1117,8 +1119,8 @@ var SpaceMembersSection = ({ space }) => {
1117
1119
  description: t("invite one description", {
1118
1120
  ns: "os"
1119
1121
  }),
1120
- icon: import_react23.UserPlus,
1121
- onClick: (0, import_react24.useCallback)(() => {
1122
+ icon: import_react20.UserPlus,
1123
+ onClick: (0, import_react21.useCallback)(() => {
1122
1124
  space.share?.({
1123
1125
  type: import_invitations2.Invitation.Type.INTERACTIVE,
1124
1126
  authMethod: import_invitations2.Invitation.AuthMethod.SHARED_SECRET
@@ -1134,8 +1136,8 @@ var SpaceMembersSection = ({ space }) => {
1134
1136
  description: t("invite many description", {
1135
1137
  ns: "os"
1136
1138
  }),
1137
- icon: import_react23.UsersThree,
1138
- onClick: (0, import_react24.useCallback)(() => {
1139
+ icon: import_react20.UsersThree,
1140
+ onClick: (0, import_react21.useCallback)(() => {
1139
1141
  space.share?.({
1140
1142
  type: import_invitations2.Invitation.Type.INTERACTIVE,
1141
1143
  authMethod: import_invitations2.Invitation.AuthMethod.NONE,
@@ -1146,7 +1148,7 @@ var SpaceMembersSection = ({ space }) => {
1146
1148
  ])
1147
1149
  }
1148
1150
  };
1149
- const [activeActionKey, setInternalActiveActionKey] = (0, import_react24.useState)(localStorage.getItem(activeActionKeyStorageKey) ?? "inviteOne");
1151
+ const [activeActionKey, setInternalActiveActionKey] = (0, import_react21.useState)(localStorage.getItem(activeActionKeyStorageKey) ?? "inviteOne");
1150
1152
  const setActiveActionKey = (nextKey) => {
1151
1153
  setInternalActiveActionKey(nextKey);
1152
1154
  localStorage.setItem(activeActionKeyStorageKey, nextKey);
@@ -1159,101 +1161,101 @@ var SpaceMembersSection = ({ space }) => {
1159
1161
  [Presence.ONLINE]: [],
1160
1162
  [Presence.OFFLINE]: []
1161
1163
  });
1162
- return /* @__PURE__ */ import_react24.default.createElement("section", {
1164
+ return /* @__PURE__ */ import_react21.default.createElement("section", {
1163
1165
  className: "mbe-4 col-span-3 grid gap-y-2 grid-cols-subgrid auto-rows-min"
1164
- }, /* @__PURE__ */ import_react24.default.createElement("h2", {
1166
+ }, /* @__PURE__ */ import_react21.default.createElement("h2", {
1165
1167
  className: "contents"
1166
- }, /* @__PURE__ */ import_react24.default.createElement(import_react23.UsersThree, {
1168
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react20.UsersThree, {
1167
1169
  weight: "duotone",
1168
1170
  className: (0, import_react_ui_theme8.mx)((0, import_react_ui_theme8.getSize)(5), "place-self-center")
1169
- }), /* @__PURE__ */ import_react24.default.createElement("span", {
1171
+ }), /* @__PURE__ */ import_react21.default.createElement("span", {
1170
1172
  className: "text-lg col-span-2"
1171
- }, t("space members label"))), /* @__PURE__ */ import_react24.default.createElement("h3", {
1173
+ }, t("space members label"))), /* @__PURE__ */ import_react21.default.createElement("h3", {
1172
1174
  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, {
1175
+ }, t("invitations heading")), invitations.length > 0 && /* @__PURE__ */ import_react21.default.createElement(import_react_ui14.List, {
1174
1176
  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, {
1177
+ }, invitations.map((invitation) => /* @__PURE__ */ import_react21.default.createElement(import_react22.InvitationListItem, {
1176
1178
  reverseEffects: true,
1177
1179
  classNames: "pis-0 pie-0 gap-0 col-span-4 grid grid-cols-subgrid",
1178
1180
  key: invitation.get().invitationId,
1179
1181
  invitation,
1180
1182
  send: handleInvitationSelect,
1181
1183
  createInvitationUrl: handleCreateInvitationUrl
1182
- }))), /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.ButtonGroup, {
1184
+ }))), /* @__PURE__ */ import_react21.default.createElement(import_react_ui14.ButtonGroup, {
1183
1185
  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, {
1186
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui14.Button, {
1185
1187
  classNames: "gap-2",
1186
1188
  onClick: activeAction.onClick
1187
- }, /* @__PURE__ */ import_react24.default.createElement(activeAction.icon, {
1189
+ }, /* @__PURE__ */ import_react21.default.createElement(activeAction.icon, {
1188
1190
  className: (0, import_react_ui_theme8.getSize)(5)
1189
- }), /* @__PURE__ */ import_react24.default.createElement("span", null, t(activeAction.label, {
1191
+ }), /* @__PURE__ */ import_react21.default.createElement("span", null, t(activeAction.label, {
1190
1192
  ns: "os"
1191
- }))), /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.DropdownMenu.Root, null, /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.DropdownMenu.Trigger, {
1193
+ }))), /* @__PURE__ */ import_react21.default.createElement(import_react_ui14.DropdownMenu.Root, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui14.DropdownMenu.Trigger, {
1192
1194
  asChild: true
1193
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.Button, {
1195
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui14.Button, {
1194
1196
  classNames: "pli-0"
1195
- }, /* @__PURE__ */ import_react24.default.createElement(import_react23.CaretDown, {
1197
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react20.CaretDown, {
1196
1198
  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, {
1199
+ }))), /* @__PURE__ */ import_react21.default.createElement(import_react_ui14.DropdownMenu.Content, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui14.DropdownMenu.Viewport, null, Object.entries(inviteActions).map(([id, action]) => {
1200
+ return /* @__PURE__ */ import_react21.default.createElement(import_react_ui14.DropdownMenu.CheckboxItem, {
1199
1201
  key: id,
1200
1202
  "aria-labelledby": `${id}__label`,
1201
1203
  "aria-describedby": `${id}__description`,
1202
1204
  checked: activeActionKey === id,
1203
1205
  onCheckedChange: (checked) => checked && setActiveActionKey(id),
1204
1206
  classNames: "gap-2"
1205
- }, action.icon && /* @__PURE__ */ import_react24.default.createElement(action.icon, {
1207
+ }, action.icon && /* @__PURE__ */ import_react21.default.createElement(action.icon, {
1206
1208
  className: (0, import_react_ui_theme8.getSize)(5)
1207
- }), /* @__PURE__ */ import_react24.default.createElement("div", {
1209
+ }), /* @__PURE__ */ import_react21.default.createElement("div", {
1208
1210
  role: "none",
1209
1211
  className: "flex-1 min-is-0 space-b-1"
1210
- }, /* @__PURE__ */ import_react24.default.createElement("p", {
1212
+ }, /* @__PURE__ */ import_react21.default.createElement("p", {
1211
1213
  id: `${id}__label`
1212
1214
  }, t(action.label, {
1213
1215
  ns: "os"
1214
- })), action.description && /* @__PURE__ */ import_react24.default.createElement("p", {
1216
+ })), action.description && /* @__PURE__ */ import_react21.default.createElement("p", {
1215
1217
  id: `${id}__description`,
1216
1218
  className: import_react_ui_theme8.descriptionText
1217
1219
  }, t(action.description, {
1218
1220
  ns: "os"
1219
- }))), /* @__PURE__ */ import_react24.default.createElement(import_react_ui14.DropdownMenu.ItemIndicator, {
1221
+ }))), /* @__PURE__ */ import_react21.default.createElement(import_react_ui14.DropdownMenu.ItemIndicator, {
1220
1222
  asChild: true
1221
- }, /* @__PURE__ */ import_react24.default.createElement(import_react23.Check, {
1223
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react20.Check, {
1222
1224
  className: (0, import_react_ui_theme8.getSize)(4)
1223
1225
  })));
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", {
1226
+ })), /* @__PURE__ */ import_react21.default.createElement(import_react_ui14.DropdownMenu.Arrow, null)))), members[Presence.ONLINE].length + members[Presence.OFFLINE].length < 1 ? /* @__PURE__ */ import_react21.default.createElement("p", {
1225
1227
  className: (0, import_react_ui_theme8.mx)(import_react_ui_theme8.descriptionText, "text-center is-full mlb-2")
1226
1228
  }, t("empty space members message", {
1227
1229
  ns: "os"
1228
- })) : /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, /* @__PURE__ */ import_react24.default.createElement("h3", {
1230
+ })) : /* @__PURE__ */ import_react21.default.createElement(import_react21.default.Fragment, null, /* @__PURE__ */ import_react21.default.createElement("h3", {
1229
1231
  className: "col-start-2 col-end-5 text-sm italic text-description"
1230
1232
  }, t("active space members heading", {
1231
1233
  count: members[Presence.ONLINE].length
1232
- })), /* @__PURE__ */ import_react24.default.createElement(SpaceMemberList, {
1234
+ })), /* @__PURE__ */ import_react21.default.createElement(SpaceMemberList, {
1233
1235
  members: members[Presence.ONLINE]
1234
- }), /* @__PURE__ */ import_react24.default.createElement("h3", {
1236
+ }), /* @__PURE__ */ import_react21.default.createElement("h3", {
1235
1237
  className: "col-start-2 col-end-5 text-sm italic text-description"
1236
1238
  }, t("inactive space members heading", {
1237
1239
  count: members[Presence.OFFLINE].length
1238
- })), /* @__PURE__ */ import_react24.default.createElement(SpaceMemberList, {
1240
+ })), /* @__PURE__ */ import_react21.default.createElement(SpaceMemberList, {
1239
1241
  members: members[Presence.OFFLINE]
1240
1242
  })));
1241
1243
  };
1242
1244
  var KeyShortcuts = () => {
1243
1245
  const { t } = (0, import_react_ui13.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1244
- return /* @__PURE__ */ import_react21.default.createElement("section", {
1246
+ return /* @__PURE__ */ import_react18.default.createElement("section", {
1245
1247
  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", {
1248
+ }, /* @__PURE__ */ import_react18.default.createElement("h2", {
1247
1249
  className: "contents"
1248
- }, /* @__PURE__ */ import_react21.default.createElement(import_react20.Command, {
1250
+ }, /* @__PURE__ */ import_react18.default.createElement(import_react17.Command, {
1249
1251
  weight: "duotone",
1250
1252
  className: (0, import_react_ui_theme7.mx)((0, import_react_ui_theme7.getSize)(5), "place-self-center")
1251
- }), /* @__PURE__ */ import_react21.default.createElement("span", {
1253
+ }), /* @__PURE__ */ import_react18.default.createElement("span", {
1252
1254
  className: "text-lg col-span-2 md:col-span-1"
1253
- }, t("keyshortcuts label"))), /* @__PURE__ */ import_react21.default.createElement("div", {
1255
+ }, t("keyshortcuts label"))), /* @__PURE__ */ import_react18.default.createElement("div", {
1254
1256
  role: "none",
1255
1257
  className: "col-start-2 col-end-4 md:col-end-5 pie-2"
1256
- }, /* @__PURE__ */ import_react21.default.createElement(import_app_framework6.Surface, {
1258
+ }, /* @__PURE__ */ import_react18.default.createElement(import_app_framework6.Surface, {
1257
1259
  role: "keyshortcuts"
1258
1260
  })));
1259
1261
  };
@@ -1262,7 +1264,7 @@ var SpaceMain = ({ space, role }) => {
1262
1264
  const state = space.state.get();
1263
1265
  const ready = state === import_echo5.SpaceState.SPACE_READY;
1264
1266
  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, {
1267
+ return /* @__PURE__ */ import_react18.default.createElement(import_react19.ClipboardProvider, null, /* @__PURE__ */ import_react18.default.createElement(Root, {
1266
1268
  ...role === "main" ? {
1267
1269
  classNames: [
1268
1270
  import_react_ui_theme7.topbarBlockPaddingStart,
@@ -1275,9 +1277,9 @@ var SpaceMain = ({ space, role }) => {
1275
1277
  },
1276
1278
  "data-testid": `spacePlugin.${role}`,
1277
1279
  "data-isready": ready ? "true" : "false"
1278
- }, ready && /* @__PURE__ */ import_react21.default.createElement(SpaceMembersSection, {
1280
+ }, ready && /* @__PURE__ */ import_react18.default.createElement(SpaceMembersSection, {
1279
1281
  space
1280
- }), /* @__PURE__ */ import_react21.default.createElement(KeyShortcuts, null)));
1282
+ }), /* @__PURE__ */ import_react18.default.createElement(KeyShortcuts, null)));
1281
1283
  };
1282
1284
  var REFRESH_INTERVAL = 5e3;
1283
1285
  var ACTIVITY_DURATION = 3e4;
@@ -1290,13 +1292,13 @@ var SpacePresence = ({ object, spaceKey }) => {
1290
1292
  const identity = (0, import_halo.useIdentity)();
1291
1293
  const space = spaceKey ? client.spaces.get(spaceKey) : (0, import_echo7.getSpace)(object);
1292
1294
  const spaceMembers = (0, import_echo7.useMembers)(space?.key);
1293
- const [_moment, setMoment] = (0, import_react26.useState)(Date.now());
1294
- (0, import_react26.useEffect)(() => {
1295
+ const [_moment, setMoment] = (0, import_react23.useState)(Date.now());
1296
+ (0, import_react23.useEffect)(() => {
1295
1297
  const interval = setInterval(() => setMoment(Date.now()), REFRESH_INTERVAL);
1296
1298
  return () => clearInterval(interval);
1297
1299
  }, []);
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), [
1300
+ const memberOnline = (0, import_react23.useCallback)((member) => member.presence === 1, []);
1301
+ const memberIsNotSelf = (0, import_react23.useCallback)((member) => !identity?.identityKey.equals(member.identity.identityKey), [
1300
1302
  identity?.identityKey
1301
1303
  ]);
1302
1304
  if (!identity || !spacePlugin || !space) {
@@ -1314,50 +1316,50 @@ var SpacePresence = ({ object, spaceKey }) => {
1314
1316
  lastSeen
1315
1317
  };
1316
1318
  }).toSorted((a, b) => a.lastSeen - b.lastSeen);
1317
- return density === "fine" ? /* @__PURE__ */ import_react26.default.createElement(SmallPresence, {
1319
+ return density === "fine" ? /* @__PURE__ */ import_react23.default.createElement(SmallPresence, {
1318
1320
  count: membersForObject.length
1319
- }) : /* @__PURE__ */ import_react26.default.createElement(FullPresence, {
1321
+ }) : /* @__PURE__ */ import_react23.default.createElement(FullPresence, {
1320
1322
  members: membersForObject
1321
1323
  });
1322
1324
  };
1323
1325
  var FullPresence = (props) => {
1324
1326
  const { size = 9, onMemberClick } = props;
1325
- const members = (0, import_react_ui15.useDefaultValue)(props.members, []);
1327
+ const members = (0, import_react_ui15.useDefaultValue)(props.members, () => []);
1326
1328
  if (members.length === 0) {
1327
1329
  return null;
1328
1330
  }
1329
- return /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.AvatarGroup.Root, {
1331
+ return /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.AvatarGroup.Root, {
1330
1332
  size,
1331
1333
  classNames: "mbs-2 mie-4",
1332
1334
  "data-testid": "spacePlugin.presence"
1333
- }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Root, {
1335
+ }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Root, {
1334
1336
  key: member.identity.identityKey.toHex()
1335
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Trigger, null, /* @__PURE__ */ import_react26.default.createElement(PrensenceAvatar, {
1337
+ }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Trigger, null, /* @__PURE__ */ import_react23.default.createElement(PrensenceAvatar, {
1336
1338
  identity: member.identity,
1337
1339
  group: true,
1338
1340
  match: member.currentlyAttended,
1339
1341
  index: members.length - i,
1340
1342
  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, {
1343
+ })), /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Portal, null, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Content, {
1342
1344
  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, {
1345
+ }, /* @__PURE__ */ import_react23.default.createElement("span", null, getName(member.identity)), /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Arrow, null))))), members.length > 3 && /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Root, null, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Trigger, null, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.AvatarGroupItem.Root, {
1344
1346
  status: "inactive"
1345
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Avatar.Frame, {
1347
+ }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Avatar.Frame, {
1346
1348
  style: {
1347
1349
  zIndex: members.length - 4
1348
1350
  }
1349
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Avatar.Fallback, {
1351
+ }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Avatar.Fallback, {
1350
1352
  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, {
1353
+ })))), /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Portal, null, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Content, {
1352
1354
  side: "bottom"
1353
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Arrow, null), /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.List, {
1355
+ }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Arrow, null), /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.List, {
1354
1356
  classNames: "max-h-56 overflow-y-auto"
1355
- }, members.map((member) => /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.ListItem.Root, {
1357
+ }, members.map((member) => /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.ListItem.Root, {
1356
1358
  key: member.identity.identityKey.toHex(),
1357
1359
  classNames: "flex gap-2 items-center cursor-pointer mbe-2",
1358
1360
  onClick: () => onMemberClick?.(member),
1359
1361
  "data-testid": "identity-list-item"
1360
- }, /* @__PURE__ */ import_react26.default.createElement(PrensenceAvatar, {
1362
+ }, /* @__PURE__ */ import_react23.default.createElement(PrensenceAvatar, {
1361
1363
  identity: member.identity,
1362
1364
  showName: true,
1363
1365
  match: member.currentlyAttended
@@ -1367,10 +1369,10 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
1367
1369
  const Root = group ? import_react_ui15.AvatarGroupItem.Root : import_react_ui15.Avatar.Root;
1368
1370
  const status = match ? "current" : "active";
1369
1371
  const fallbackValue = (0, import_util2.keyToFallback)(identity.identityKey);
1370
- return /* @__PURE__ */ import_react26.default.createElement(Root, {
1372
+ return /* @__PURE__ */ import_react23.default.createElement(Root, {
1371
1373
  status,
1372
1374
  hue: identity.profile?.data?.hue || fallbackValue.hue
1373
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Avatar.Frame, {
1375
+ }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Avatar.Frame, {
1374
1376
  "data-testid": "spacePlugin.presence.member",
1375
1377
  "data-status": status,
1376
1378
  ...index ? {
@@ -1379,43 +1381,44 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
1379
1381
  }
1380
1382
  } : {},
1381
1383
  onClick: () => onClick?.()
1382
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Avatar.Fallback, {
1384
+ }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Avatar.Fallback, {
1383
1385
  text: identity.profile?.data?.emoji || fallbackValue.emoji
1384
- })), showName && /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Avatar.Label, {
1386
+ })), showName && /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Avatar.Label, {
1385
1387
  classNames: "text-sm truncate pli-2"
1386
1388
  }, getName(identity)));
1387
1389
  };
1388
1390
  var SmallPresenceLive = ({ viewers }) => {
1389
- const [moment, setMoment] = (0, import_react26.useState)(Date.now());
1390
- (0, import_react26.useEffect)(() => {
1391
+ const [moment, setMoment] = (0, import_react23.useState)(Date.now());
1392
+ (0, import_react23.useEffect)(() => {
1391
1393
  const interval = setInterval(() => setMoment(Date.now()), REFRESH_INTERVAL);
1392
1394
  return () => clearInterval(interval);
1393
1395
  }, []);
1394
1396
  const activeViewers = viewers ? Array.from(viewers.values()).filter(({ lastSeen }) => moment - lastSeen < ACTIVITY_DURATION) : [];
1395
- return /* @__PURE__ */ import_react26.default.createElement(SmallPresence, {
1397
+ return /* @__PURE__ */ import_react23.default.createElement(SmallPresence, {
1396
1398
  count: activeViewers.length
1397
1399
  });
1398
1400
  };
1399
1401
  var SmallPresence = ({ count }) => {
1400
1402
  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, {
1403
+ return /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Root, null, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Trigger, {
1402
1404
  asChild: true
1403
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui_attention.AttentionGlyph, {
1405
+ }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui_attention.AttentionGlyph, {
1404
1406
  presence: count > 1 ? "many" : count === 1 ? "one" : "none",
1405
1407
  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, {
1408
+ })), /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Portal, null, /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Content, {
1407
1409
  side: "bottom",
1408
1410
  classNames: "z-[70]"
1409
- }, /* @__PURE__ */ import_react26.default.createElement("span", null, t("presence label", {
1411
+ }, /* @__PURE__ */ import_react23.default.createElement("span", null, t("presence label", {
1410
1412
  count
1411
- })), /* @__PURE__ */ import_react26.default.createElement(import_react_ui15.Tooltip.Arrow, null))));
1413
+ })), /* @__PURE__ */ import_react23.default.createElement(import_react_ui15.Tooltip.Arrow, null))));
1412
1414
  };
1413
1415
  var SpaceSettings = ({ settings }) => {
1414
1416
  const { t } = (0, import_react_ui16.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1415
1417
  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, {
1418
+ const plugins = (0, import_app_framework9.useResolvePlugins)(import_chunk_K7CSJ7HL.parseSpaceInitPlugin);
1419
+ return /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, /* @__PURE__ */ import_react24.default.createElement(import_plugin_settings.SettingsValue, {
1417
1420
  label: t("show hidden spaces label")
1418
- }, /* @__PURE__ */ import_react27.default.createElement(import_react_ui16.Input.Switch, {
1421
+ }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Input.Switch, {
1419
1422
  checked: settings.showHidden,
1420
1423
  onCheckedChange: (checked) => dispatch({
1421
1424
  plugin: import_chunk_6CNYF6YU.SPACE_PLUGIN,
@@ -1424,7 +1427,285 @@ var SpaceSettings = ({ settings }) => {
1424
1427
  state: !!checked
1425
1428
  }
1426
1429
  })
1427
- })));
1430
+ })), /* @__PURE__ */ import_react24.default.createElement(import_plugin_settings.SettingsValue, {
1431
+ label: t("default on space create label")
1432
+ }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Select.Root, {
1433
+ value: settings.onSpaceCreate,
1434
+ onValueChange: (value) => {
1435
+ settings.onSpaceCreate = value;
1436
+ }
1437
+ }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Select.TriggerButton, null), /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Select.Portal, null, /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Select.Content, null, /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Select.Viewport, null, plugins.map(({ provides: { space: { onSpaceCreate } } }) => /* @__PURE__ */ import_react24.default.createElement(import_react_ui16.Select.Option, {
1438
+ key: onSpaceCreate.action,
1439
+ value: onSpaceCreate.action
1440
+ }, (0, import_react_ui16.toLocalizedString)(onSpaceCreate.label, t)))))))));
1441
+ };
1442
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SaveStatus.tsx";
1443
+ var SaveStatus = () => {
1444
+ const { t } = (0, import_react_ui17.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1445
+ const client = (0, import_react_client5.useClient)();
1446
+ const [state, setState] = (0, import_react25.useState)("saved");
1447
+ (0, import_react25.useEffect)(() => {
1448
+ return createClientSaveTracker(client, (state2) => {
1449
+ setState(state2);
1450
+ });
1451
+ }, []);
1452
+ return /* @__PURE__ */ import_react25.default.createElement(import_plugin_status_bar.StatusBar.Item, {
1453
+ title: state === "saving" ? t("saving label") : t("saved label")
1454
+ }, /* @__PURE__ */ import_react25.default.createElement(import_react_ui17.Icon, {
1455
+ icon: state === "saving" ? "ph--arrows-clockwise--regular" : "ph--check-circle--regular",
1456
+ size: 4
1457
+ }));
1458
+ };
1459
+ var createClientSaveTracker = (client, cb) => {
1460
+ const unsubscribeCallbacks = {};
1461
+ const state = {};
1462
+ const install = (spaces) => {
1463
+ for (const space of spaces) {
1464
+ if (state[space.id]) {
1465
+ continue;
1466
+ }
1467
+ state[space.id] = "saved";
1468
+ unsubscribeCallbacks[space.id] = createSpaceSaveTracker(space, (s) => {
1469
+ state[space.id] = s;
1470
+ cb(Object.values(state).some((s2) => s2 === "saving") ? "saving" : "saved");
1471
+ });
1472
+ }
1473
+ };
1474
+ client.spaces.subscribe((spaces) => {
1475
+ install(spaces);
1476
+ });
1477
+ install(client.spaces.get());
1478
+ return () => {
1479
+ for (const unsubscribe of Object.values(unsubscribeCallbacks)) {
1480
+ unsubscribe();
1481
+ }
1482
+ };
1483
+ };
1484
+ var createSpaceSaveTracker = (space, cb) => {
1485
+ const ctx = new import_context.Context(void 0, {
1486
+ F: __dxlog_file3,
1487
+ L: 64
1488
+ });
1489
+ void space.waitUntilReady().then(() => {
1490
+ if (ctx.disposed) {
1491
+ return;
1492
+ }
1493
+ let hasUnsavedChanges = false;
1494
+ let lastFlushPromise;
1495
+ space.crud.saveStateChanged.on(ctx, ({ unsavedDocuments }) => {
1496
+ hasUnsavedChanges = unsavedDocuments.length > 0;
1497
+ });
1498
+ space.crud.saveStateChanged.debounce(500).on(ctx, () => {
1499
+ if (hasUnsavedChanges) {
1500
+ lastFlushPromise = void 0;
1501
+ cb("saving");
1502
+ } else {
1503
+ const flushPromise = space.crud.flush();
1504
+ lastFlushPromise = flushPromise;
1505
+ void flushPromise.then(() => {
1506
+ if (lastFlushPromise === flushPromise) {
1507
+ cb("saved");
1508
+ }
1509
+ });
1510
+ }
1511
+ });
1512
+ });
1513
+ return () => {
1514
+ void ctx.dispose();
1515
+ };
1516
+ };
1517
+ var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/types.ts";
1518
+ var createEmptyEdgeSyncState = () => ({
1519
+ missingOnLocal: 0,
1520
+ missingOnRemote: 0,
1521
+ localDocumentCount: 0,
1522
+ remoteDocumentCount: 0,
1523
+ differentDocuments: 0
1524
+ });
1525
+ var getSyncSummary = (syncMap) => {
1526
+ return Object.entries(syncMap).reduce((summary, [_spaceId, peerState]) => {
1527
+ summary.missingOnLocal += peerState.missingOnLocal;
1528
+ summary.missingOnRemote += peerState.missingOnRemote;
1529
+ summary.localDocumentCount += peerState.localDocumentCount;
1530
+ summary.remoteDocumentCount += peerState.remoteDocumentCount;
1531
+ summary.differentDocuments += peerState.differentDocuments;
1532
+ return summary;
1533
+ }, createEmptyEdgeSyncState());
1534
+ };
1535
+ var isEdgePeerId = (peerId, spaceId) => peerId.startsWith(`${import_protocols.EdgeService.AUTOMERGE_REPLICATOR}:${spaceId}`);
1536
+ var useSyncState = () => {
1537
+ const client = (0, import_react_client6.useClient)();
1538
+ const [spaceState, setSpaceState] = (0, import_react27.useState)({});
1539
+ (0, import_react27.useEffect)(() => {
1540
+ const ctx = new import_context2.Context(void 0, {
1541
+ F: __dxlog_file4,
1542
+ L: 48
1543
+ });
1544
+ const createSubscriptions = (spaces) => {
1545
+ for (const space of spaces) {
1546
+ if (spaceState[space.id]) {
1547
+ continue;
1548
+ }
1549
+ ctx.onDispose(space.crud.subscribeToSyncState(ctx, ({ peers = [] }) => {
1550
+ const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));
1551
+ if (syncState) {
1552
+ setSpaceState((spaceState2) => ({
1553
+ ...spaceState2,
1554
+ [space.id]: syncState
1555
+ }));
1556
+ }
1557
+ }));
1558
+ }
1559
+ };
1560
+ createSubscriptions(client.spaces.get());
1561
+ client.spaces.subscribe((spaces) => {
1562
+ createSubscriptions(spaces);
1563
+ });
1564
+ return () => {
1565
+ void ctx.dispose();
1566
+ };
1567
+ }, [
1568
+ client
1569
+ ]);
1570
+ return spaceState;
1571
+ };
1572
+ var SYNC_STALLED_TIMEOUT = 5e3;
1573
+ var styles = {
1574
+ barBg: "bg-neutral-50 dark:bg-green-900 text-black",
1575
+ barFg: "bg-neutral-100 bg-green-500",
1576
+ barHover: "dark:hover:bg-green-500"
1577
+ };
1578
+ var SyncStatus = () => {
1579
+ const state = useSyncState();
1580
+ return /* @__PURE__ */ import_react26.default.createElement(SyncStatusIndicator, {
1581
+ state
1582
+ });
1583
+ };
1584
+ var SyncStatusIndicator = ({ state }) => {
1585
+ const summary = getSyncSummary(state);
1586
+ const offline = false;
1587
+ const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
1588
+ const needsToDownload = summary.differentDocuments > 0 || summary.missingOnLocal > 0;
1589
+ const [classNames, setClassNames] = (0, import_react26.useState)();
1590
+ (0, import_react26.useEffect)(() => {
1591
+ setClassNames(void 0);
1592
+ if (!needsToUpload && !needsToDownload) {
1593
+ return;
1594
+ }
1595
+ const t = setTimeout(() => {
1596
+ setClassNames("text-orange-500");
1597
+ }, SYNC_STALLED_TIMEOUT);
1598
+ return () => clearTimeout(t);
1599
+ }, [
1600
+ needsToUpload,
1601
+ needsToDownload
1602
+ ]);
1603
+ return /* @__PURE__ */ import_react26.default.createElement(import_plugin_status_bar2.StatusBar.Item, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui18.Popover.Root, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui18.Popover.Trigger, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui18.Icon, {
1604
+ icon: offline ? "ph--cloud-x--regular" : needsToUpload ? "ph--cloud-arrow-up--regular" : needsToDownload ? "ph--cloud-arrow-down--regular" : "ph--cloud-check--regular",
1605
+ size: 4,
1606
+ classNames
1607
+ })), /* @__PURE__ */ import_react26.default.createElement(import_react_ui18.Popover.Content, null, /* @__PURE__ */ import_react26.default.createElement(SyncStatusDetail, {
1608
+ state,
1609
+ summary,
1610
+ debug: false
1611
+ }))));
1612
+ };
1613
+ var SyncStatusDetail = ({ classNames, state, summary, debug }) => {
1614
+ const { t } = (0, import_react_ui18.useTranslation)(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1615
+ const entries = Object.entries(state).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
1616
+ return /* @__PURE__ */ import_react26.default.createElement("div", {
1617
+ className: (0, import_react_ui_theme9.mx)("flex flex-col text-xs min-w-[16rem]", classNames)
1618
+ }, /* @__PURE__ */ import_react26.default.createElement("h1", {
1619
+ className: "p-2"
1620
+ }, t("sync status title")), /* @__PURE__ */ import_react26.default.createElement("div", {
1621
+ className: "flex flex-col gap-[2px] my-[2px]"
1622
+ }, entries.map(([spaceId, state2]) => /* @__PURE__ */ import_react26.default.createElement(SpaceRow, {
1623
+ key: spaceId,
1624
+ spaceId,
1625
+ state: state2
1626
+ }))), debug && /* @__PURE__ */ import_react26.default.createElement(import_react_ui_syntax_highlighter.SyntaxHighlighter, {
1627
+ language: "json"
1628
+ }, JSON.stringify(summary, null, 2)));
1629
+ };
1630
+ var useActive = (count) => {
1631
+ const [current, setCurrent] = (0, import_react26.useState)(count);
1632
+ const [active, setActive] = (0, import_react26.useState)(false);
1633
+ (0, import_react26.useEffect)(() => {
1634
+ let t;
1635
+ if (count !== current) {
1636
+ setActive(true);
1637
+ setCurrent(count);
1638
+ t && clearTimeout(t);
1639
+ t = setTimeout(() => {
1640
+ setActive(false);
1641
+ }, SYNC_STALLED_TIMEOUT);
1642
+ }
1643
+ return () => {
1644
+ setActive(false);
1645
+ clearTimeout(t);
1646
+ };
1647
+ }, [
1648
+ count,
1649
+ current
1650
+ ]);
1651
+ return active;
1652
+ };
1653
+ var SpaceRow = ({ spaceId, state: { localDocumentCount, remoteDocumentCount, missingOnLocal, missingOnRemote } }) => {
1654
+ const downActive = useActive(localDocumentCount);
1655
+ const upActive = useActive(remoteDocumentCount);
1656
+ return /* @__PURE__ */ import_react26.default.createElement("div", {
1657
+ className: (0, import_react_ui_theme9.mx)("flex items-center mx-[2px] gap-[2px] cursor-pointer", styles.barHover),
1658
+ title: spaceId,
1659
+ onClick: () => {
1660
+ void navigator.clipboard.writeText(spaceId);
1661
+ }
1662
+ }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui18.Icon, {
1663
+ icon: "ph--arrow-fat-line-left--regular",
1664
+ size: 3,
1665
+ classNames: (0, import_react_ui_theme9.mx)(downActive && "animate-[pulse_1s_infinite]")
1666
+ }), /* @__PURE__ */ import_react26.default.createElement(Candle, {
1667
+ up: {
1668
+ count: remoteDocumentCount,
1669
+ total: remoteDocumentCount + missingOnRemote
1670
+ },
1671
+ down: {
1672
+ count: localDocumentCount,
1673
+ total: localDocumentCount + missingOnLocal
1674
+ },
1675
+ title: spaceId
1676
+ }), /* @__PURE__ */ import_react26.default.createElement(import_react_ui18.Icon, {
1677
+ icon: "ph--arrow-fat-line-right--regular",
1678
+ size: 3,
1679
+ classNames: (0, import_react_ui_theme9.mx)(upActive && "animate-[pulse_1s_step-start_infinite]")
1680
+ }));
1681
+ };
1682
+ var Candle = ({ classNames, up, down }) => {
1683
+ return /* @__PURE__ */ import_react26.default.createElement("div", {
1684
+ className: (0, import_react_ui_theme9.mx)("grid grid-cols-[1fr_2rem_1fr] w-full h-3", classNames)
1685
+ }, /* @__PURE__ */ import_react26.default.createElement(Bar, {
1686
+ classNames: "justify-end",
1687
+ ...up
1688
+ }), /* @__PURE__ */ import_react26.default.createElement("div", {
1689
+ className: "relative"
1690
+ }, /* @__PURE__ */ import_react26.default.createElement("div", {
1691
+ className: (0, import_react_ui_theme9.mx)("absolute inset-0 flex items-center justify-center text-xs", styles.barBg)
1692
+ }, up.total)), /* @__PURE__ */ import_react26.default.createElement(Bar, down));
1693
+ };
1694
+ var Bar = ({ classNames, count, total }) => {
1695
+ let p = count / total * 100;
1696
+ if (count < total) {
1697
+ p = Math.min(p, 95);
1698
+ }
1699
+ return /* @__PURE__ */ import_react26.default.createElement("div", {
1700
+ className: (0, import_react_ui_theme9.mx)("relative flex w-full", styles.barBg, classNames)
1701
+ }, /* @__PURE__ */ import_react26.default.createElement("div", {
1702
+ className: (0, import_react_ui_theme9.mx)("shrink-0", styles.barFg),
1703
+ style: {
1704
+ width: `${p}%`
1705
+ }
1706
+ }), count !== total && /* @__PURE__ */ import_react26.default.createElement("div", {
1707
+ className: "absolute top-0 bottom-0 flex items-center mx-0.5 text-black text-xs"
1708
+ }, count));
1428
1709
  };
1429
1710
  var translations_default = [
1430
1711
  {
@@ -1504,19 +1785,23 @@ var translations_default = [
1504
1785
  "space limit close label": "Close",
1505
1786
  "remove deleted objects label": "Cleanup",
1506
1787
  "remove deleted objects alt": "Permanently remove deleted objects to free up space.",
1507
- "copy link label": "Copy link"
1788
+ "copy link label": "Copy link",
1789
+ "default on space create label": "On space create",
1790
+ "sync status title": "Sync status"
1508
1791
  }
1509
1792
  }
1510
1793
  }
1511
1794
  ];
1512
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/SpacePlugin.tsx";
1795
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/SpacePlugin.tsx";
1513
1796
  var ACTIVE_NODE_BROADCAST_INTERVAL = 3e4;
1514
1797
  var OBJECT_ID_LENGTH = 60;
1515
1798
  var SPACE_MAX_OBJECTS = 500;
1516
1799
  var DIRECTORY_TYPE = "text/directory";
1517
1800
  var parseSpacePlugin = (plugin) => Array.isArray(plugin?.provides.space?.enabled) ? plugin : void 0;
1518
1801
  var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1519
- const settings = new import_local_storage.LocalStorageStore(import_chunk_6CNYF6YU.SPACE_PLUGIN);
1802
+ const settings = new import_local_storage.LocalStorageStore(import_chunk_6CNYF6YU.SPACE_PLUGIN, {
1803
+ onSpaceCreate: "dxos.org/plugin/markdown/action/create"
1804
+ });
1520
1805
  const state = new import_local_storage.LocalStorageStore(import_chunk_6CNYF6YU.SPACE_PLUGIN, {
1521
1806
  awaiting: void 0,
1522
1807
  spaceNames: {},
@@ -1596,8 +1881,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1596
1881
  import_log.log.warn("Failed to broadcast active node for presence.", {
1597
1882
  err: err.message
1598
1883
  }, {
1599
- F: __dxlog_file3,
1600
- L: 222,
1884
+ F: __dxlog_file5,
1885
+ L: 225,
1601
1886
  S: void 0,
1602
1887
  C: (f, a) => f(...a)
1603
1888
  });
@@ -1668,7 +1953,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1668
1953
  const dispatch = intentPlugin.provides.intent.dispatch;
1669
1954
  const handleFirstRun = async () => {
1670
1955
  const defaultSpace = client.spaces.default;
1671
- defaultSpace.properties[import_chunk_CVZPI2P3.CollectionType.typename] = (0, import_echo.create)(import_chunk_CVZPI2P3.CollectionType, {
1956
+ defaultSpace.properties[import_chunk_K7CSJ7HL.CollectionType.typename] = (0, import_echo.create)(import_chunk_K7CSJ7HL.CollectionType, {
1672
1957
  objects: [],
1673
1958
  views: {}
1674
1959
  });
@@ -1704,22 +1989,21 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1704
1989
  settings: settings.values,
1705
1990
  translations: [
1706
1991
  ...translations_default,
1707
- import_react3.osTranslations
1992
+ import_react2.osTranslations
1708
1993
  ],
1709
- root: () => state.values.awaiting ? /* @__PURE__ */ import_react2.default.createElement(AwaitingObject, {
1994
+ root: () => state.values.awaiting ? /* @__PURE__ */ import_react.default.createElement(AwaitingObject, {
1710
1995
  id: state.values.awaiting
1711
1996
  }) : null,
1712
1997
  metadata: {
1713
1998
  records: {
1714
- [import_chunk_CVZPI2P3.CollectionType.typename]: {
1999
+ [import_chunk_K7CSJ7HL.CollectionType.typename]: {
1715
2000
  placeholder: [
1716
2001
  "unnamed collection label",
1717
2002
  {
1718
2003
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
1719
2004
  }
1720
2005
  ],
1721
- icon: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react.CardsThree, props),
1722
- iconSymbol: "ph--cards-three--regular",
2006
+ icon: "ph--cards-three--regular",
1723
2007
  // TODO(wittjosiah): Move out of metadata.
1724
2008
  loadReferences: (collection) => (0, import_echo.loadObjectReferences)(collection, (collection2) => [
1725
2009
  ...collection2.objects,
@@ -1730,7 +2014,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1730
2014
  },
1731
2015
  echo: {
1732
2016
  schema: [
1733
- import_chunk_CVZPI2P3.CollectionType
2017
+ import_chunk_K7CSJ7HL.CollectionType
1734
2018
  ]
1735
2019
  },
1736
2020
  surface: {
@@ -1739,33 +2023,34 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1739
2023
  switch (role) {
1740
2024
  case "article":
1741
2025
  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, {
2026
+ return (0, import_echo.isSpace)(primary) && primary.state.get() === import_echo.SpaceState.SPACE_READY ? /* @__PURE__ */ import_react.default.createElement(import_app_framework.Surface, {
1743
2027
  data: {
1744
- active: primary.properties[import_chunk_CVZPI2P3.CollectionType.typename]
2028
+ active: primary.properties[import_chunk_K7CSJ7HL.CollectionType.typename],
2029
+ id: primary.id
1745
2030
  },
1746
2031
  role,
1747
2032
  ...rest
1748
- }) : primary instanceof import_chunk_CVZPI2P3.CollectionType ? {
1749
- node: /* @__PURE__ */ import_react2.default.createElement(CollectionMain, {
2033
+ }) : primary instanceof import_chunk_K7CSJ7HL.CollectionType ? {
2034
+ node: /* @__PURE__ */ import_react.default.createElement(CollectionMain, {
1750
2035
  collection: primary
1751
2036
  }),
1752
2037
  disposition: "fallback"
1753
- } : typeof primary === "string" && primary.length === OBJECT_ID_LENGTH ? /* @__PURE__ */ import_react2.default.createElement(MissingObject, {
2038
+ } : typeof primary === "string" && primary.length === OBJECT_ID_LENGTH ? /* @__PURE__ */ import_react.default.createElement(MissingObject, {
1754
2039
  id: primary
1755
2040
  }) : null;
1756
2041
  // TODO(burdon): Add role name syntax to minimal plugin docs.
1757
2042
  case "tree--empty":
1758
2043
  switch (true) {
1759
2044
  case data.plugin === import_chunk_6CNYF6YU.SPACE_PLUGIN:
1760
- return /* @__PURE__ */ import_react2.default.createElement(EmptyTree, null);
2045
+ return /* @__PURE__ */ import_react.default.createElement(EmptyTree, null);
1761
2046
  case ((0, import_plugin_graph.isGraphNode)(data.activeNode) && (0, import_echo.isSpace)(data.activeNode.data)):
1762
- return /* @__PURE__ */ import_react2.default.createElement(EmptySpace, null);
2047
+ return /* @__PURE__ */ import_react.default.createElement(EmptySpace, null);
1763
2048
  default:
1764
2049
  return null;
1765
2050
  }
1766
2051
  case "dialog":
1767
2052
  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, {
2053
+ 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
2054
  active: true,
1770
2055
  ...data.subject
1771
2056
  })));
@@ -1774,20 +2059,20 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1774
2059
  }
1775
2060
  case "popover":
1776
2061
  if (data.component === "dxos.org/plugin/space/RenameSpacePopover" && (0, import_echo.isSpace)(data.subject)) {
1777
- return /* @__PURE__ */ import_react2.default.createElement(PopoverRenameSpace, {
2062
+ return /* @__PURE__ */ import_react.default.createElement(PopoverRenameSpace, {
1778
2063
  space: data.subject
1779
2064
  });
1780
2065
  }
1781
2066
  if (data.component === "dxos.org/plugin/space/RenameObjectPopover" && (0, import_echo_schema.isReactiveObject)(data.subject)) {
1782
- return /* @__PURE__ */ import_react2.default.createElement(PopoverRenameObject, {
2067
+ return /* @__PURE__ */ import_react.default.createElement(PopoverRenameObject, {
1783
2068
  object: data.subject
1784
2069
  });
1785
2070
  }
1786
2071
  return null;
1787
2072
  case "presence--glyph": {
1788
- return (0, import_echo_schema.isReactiveObject)(data.object) ? /* @__PURE__ */ import_react2.default.createElement(SmallPresenceLive, {
2073
+ return (0, import_echo_schema.isReactiveObject)(data.object) ? /* @__PURE__ */ import_react.default.createElement(SmallPresenceLive, {
1789
2074
  viewers: state.values.viewersByObject[(0, import_echo.fullyQualifiedId)(data.object)]
1790
- }) : /* @__PURE__ */ import_react2.default.createElement(SmallPresence, {
2075
+ }) : /* @__PURE__ */ import_react.default.createElement(SmallPresence, {
1791
2076
  count: 0
1792
2077
  });
1793
2078
  }
@@ -1799,32 +2084,35 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1799
2084
  return null;
1800
2085
  }
1801
2086
  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;
2087
+ const object = (0, import_echo.isSpace)(data.object) ? data.object.state.get() === import_echo.SpaceState.SPACE_READY ? space?.properties[import_chunk_K7CSJ7HL.CollectionType.typename] : void 0 : data.object;
1803
2088
  return space && object ? {
1804
- node: /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null, /* @__PURE__ */ import_react2.default.createElement(SpacePresence, {
2089
+ node: /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(SpacePresence, {
1805
2090
  object
1806
- }), space.properties[COMPOSER_SPACE_LOCK] ? null : /* @__PURE__ */ import_react2.default.createElement(ShareSpaceButton, {
2091
+ }), space.properties[COMPOSER_SPACE_LOCK] ? null : /* @__PURE__ */ import_react.default.createElement(ShareSpaceButton, {
1807
2092
  spaceId: space.id
1808
2093
  })),
1809
2094
  disposition: "hoist"
1810
2095
  } : null;
1811
2096
  }
1812
2097
  case "section":
1813
- return data.object instanceof import_chunk_CVZPI2P3.CollectionType ? /* @__PURE__ */ import_react2.default.createElement(CollectionSection, {
2098
+ return data.object instanceof import_chunk_K7CSJ7HL.CollectionType ? /* @__PURE__ */ import_react.default.createElement(CollectionSection, {
1814
2099
  collection: data.object
1815
2100
  }) : null;
1816
2101
  case "settings":
1817
- return data.plugin === import_chunk_6CNYF6YU.meta_default.id ? /* @__PURE__ */ import_react2.default.createElement(SpaceSettings, {
2102
+ return data.plugin === import_chunk_6CNYF6YU.meta_default.id ? /* @__PURE__ */ import_react.default.createElement(SpaceSettings, {
1818
2103
  settings: settings.values
1819
2104
  }) : null;
1820
2105
  case "menu-footer":
1821
2106
  if (!(0, import_echo.isEchoObject)(data.object)) {
1822
2107
  return null;
1823
2108
  } else {
1824
- return /* @__PURE__ */ import_react2.default.createElement(MenuFooter, {
2109
+ return /* @__PURE__ */ import_react.default.createElement(MenuFooter, {
1825
2110
  object: data.object
1826
2111
  });
1827
2112
  }
2113
+ case "status": {
2114
+ 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));
2115
+ }
1828
2116
  default:
1829
2117
  return null;
1830
2118
  }
@@ -1884,8 +2172,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1884
2172
  spacesOrder.order = nextOrder.map(({ id }) => id);
1885
2173
  } else {
1886
2174
  import_log.log.warn("spaces order object not found", void 0, {
1887
- F: __dxlog_file3,
1888
- L: 514,
2175
+ F: __dxlog_file5,
2176
+ L: 528,
1889
2177
  S: void 0,
1890
2178
  C: (f, a) => f(...a)
1891
2179
  });
@@ -1921,8 +2209,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1921
2209
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
1922
2210
  }
1923
2211
  ],
1924
- icon: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react.Plus, props),
1925
- iconSymbol: "ph--plus--regular",
2212
+ icon: "ph--plus--regular",
1926
2213
  disposition: "toolbar",
1927
2214
  testId: "spacePlugin.createSpace"
1928
2215
  }
@@ -1947,8 +2234,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
1947
2234
  ns: import_chunk_6CNYF6YU.SPACE_PLUGIN
1948
2235
  }
1949
2236
  ],
1950
- icon: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react.SignIn, props),
1951
- iconSymbol: "ph--sign-in--regular",
2237
+ icon: "ph--sign-in--regular",
1952
2238
  testId: "spacePlugin.joinSpace"
1953
2239
  }
1954
2240
  }
@@ -2036,7 +2322,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2036
2322
  if (state2 !== import_echo.SpaceState.SPACE_READY) {
2037
2323
  return;
2038
2324
  }
2039
- const collection = space.properties[import_chunk_CVZPI2P3.CollectionType.typename];
2325
+ const collection = space.properties[import_chunk_K7CSJ7HL.CollectionType.typename];
2040
2326
  if (!collection) {
2041
2327
  return;
2042
2328
  }
@@ -2063,7 +2349,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2063
2349
  // Create nodes for objects in collections.
2064
2350
  (0, import_plugin_graph.createExtension)({
2065
2351
  id: `${import_chunk_6CNYF6YU.SPACE_PLUGIN}/collection-objects`,
2066
- filter: (node) => node.data instanceof import_chunk_CVZPI2P3.CollectionType,
2352
+ filter: (node) => node.data instanceof import_chunk_K7CSJ7HL.CollectionType,
2067
2353
  connector: ({ node }) => {
2068
2354
  const collection = node.data;
2069
2355
  const space = (0, import_echo.getSpace)(collection);
@@ -2116,7 +2402,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2116
2402
  }
2117
2403
  },
2118
2404
  {
2119
- inputType: import_chunk_CVZPI2P3.CollectionType.typename,
2405
+ inputType: import_chunk_K7CSJ7HL.CollectionType.typename,
2120
2406
  outputType: DIRECTORY_TYPE,
2121
2407
  serialize: (node) => ({
2122
2408
  name: node.data.name ?? translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["unnamed collection label"],
@@ -2125,7 +2411,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2125
2411
  }),
2126
2412
  deserialize: async (data, ancestors) => {
2127
2413
  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];
2414
+ const collection = ancestors.findLast((ancestor) => ancestor instanceof import_chunk_K7CSJ7HL.CollectionType) ?? space?.properties[import_chunk_K7CSJ7HL.CollectionType.typename];
2129
2415
  if (!space || !collection) {
2130
2416
  return;
2131
2417
  }
@@ -2134,7 +2420,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2134
2420
  action: import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT,
2135
2421
  data: {
2136
2422
  target: collection,
2137
- object: (0, import_echo.create)(import_chunk_CVZPI2P3.CollectionType, {
2423
+ object: (0, import_echo.create)(import_chunk_K7CSJ7HL.CollectionType, {
2138
2424
  name: data.name,
2139
2425
  objects: [],
2140
2426
  views: {}
@@ -2164,11 +2450,11 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2164
2450
  }
2165
2451
  const space = await client.spaces.create(intent.data);
2166
2452
  await space.waitUntilReady();
2167
- const collection = (0, import_echo.create)(import_chunk_CVZPI2P3.CollectionType, {
2453
+ const collection = (0, import_echo.create)(import_chunk_K7CSJ7HL.CollectionType, {
2168
2454
  objects: [],
2169
2455
  views: {}
2170
2456
  });
2171
- space.properties[import_chunk_CVZPI2P3.CollectionType.typename] = collection;
2457
+ space.properties[import_chunk_K7CSJ7HL.CollectionType.typename] = collection;
2172
2458
  if (import_migrations.Migrations.versionProperty) {
2173
2459
  space.properties[import_migrations.Migrations.versionProperty] = import_migrations.Migrations.targetVersion;
2174
2460
  }
@@ -2183,6 +2469,25 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2183
2469
  }
2184
2470
  },
2185
2471
  intents: [
2472
+ ...settings.values.onSpaceCreate ? [
2473
+ [
2474
+ {
2475
+ action: settings.values.onSpaceCreate,
2476
+ data: {
2477
+ space
2478
+ }
2479
+ },
2480
+ {
2481
+ action: import_chunk_6CNYF6YU.SpaceAction.ADD_OBJECT,
2482
+ data: {
2483
+ target: space
2484
+ }
2485
+ },
2486
+ {
2487
+ action: import_app_framework.NavigationAction.EXPOSE
2488
+ }
2489
+ ]
2490
+ ] : [],
2186
2491
  [
2187
2492
  {
2188
2493
  action: import_meta.ObservabilityAction.SEND_EVENT,
@@ -2403,8 +2708,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2403
2708
  title: translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["space limit label"],
2404
2709
  description: translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["space limit description"],
2405
2710
  duration: 5e3,
2406
- icon: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react.Warning, props),
2407
- iconSymbol: "ph--warning--regular",
2711
+ icon: "ph--warning--regular",
2408
2712
  actionLabel: translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["remove deleted objects label"],
2409
2713
  actionAlt: translations_default[0]["en-US"][import_chunk_6CNYF6YU.SPACE_PLUGIN]["remove deleted objects alt"],
2410
2714
  // TODO(wittjosiah): Use OS namespace.
@@ -2428,25 +2732,25 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2428
2732
  ]
2429
2733
  };
2430
2734
  }
2431
- if (intent.data?.target instanceof import_chunk_CVZPI2P3.CollectionType) {
2735
+ if (intent.data?.target instanceof import_chunk_K7CSJ7HL.CollectionType) {
2432
2736
  intent.data?.target.objects.push(object);
2433
2737
  } 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) {
2738
+ const collection = space.properties[import_chunk_K7CSJ7HL.CollectionType.typename];
2739
+ if (collection instanceof import_chunk_K7CSJ7HL.CollectionType) {
2436
2740
  collection.objects.push(object);
2437
2741
  } else {
2438
- const collection2 = (0, import_echo.create)(import_chunk_CVZPI2P3.CollectionType, {
2742
+ const collection2 = (0, import_echo.create)(import_chunk_K7CSJ7HL.CollectionType, {
2439
2743
  objects: [
2440
2744
  object
2441
2745
  ],
2442
2746
  views: {}
2443
2747
  });
2444
- space.properties[import_chunk_CVZPI2P3.CollectionType.typename] = collection2;
2748
+ space.properties[import_chunk_K7CSJ7HL.CollectionType.typename] = collection2;
2445
2749
  }
2446
2750
  }
2447
2751
  return {
2448
2752
  data: {
2449
- id: object.id,
2753
+ id: (0, import_echo.fullyQualifiedId)(object),
2450
2754
  object,
2451
2755
  activeParts: {
2452
2756
  main: [
@@ -2481,12 +2785,12 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2481
2785
  const activeParts = navigationPlugin?.provides.location.active;
2482
2786
  const openObjectIds = new Set((0, import_app_framework.openIds)(activeParts ?? {}));
2483
2787
  if (!intent.undo && resolve) {
2484
- const parentCollection = intent.data?.collection ?? space.properties[import_chunk_CVZPI2P3.CollectionType.typename];
2788
+ const parentCollection = intent.data?.collection ?? space.properties[import_chunk_K7CSJ7HL.CollectionType.typename];
2485
2789
  const nestedObjects = await getNestedObjects(object, resolve);
2486
2790
  const deletionData = {
2487
2791
  object,
2488
2792
  parentCollection,
2489
- index: parentCollection instanceof import_chunk_CVZPI2P3.CollectionType ? parentCollection.objects.indexOf(object) : -1,
2793
+ index: parentCollection instanceof import_chunk_K7CSJ7HL.CollectionType ? parentCollection.objects.indexOf(object) : -1,
2490
2794
  nestedObjects,
2491
2795
  wasActive: [
2492
2796
  object,
@@ -2499,13 +2803,12 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2499
2803
  data: {
2500
2804
  activeParts: {
2501
2805
  main: deletionData.wasActive,
2502
- sidebar: deletionData.wasActive,
2503
- complementary: deletionData.wasActive
2806
+ sidebar: deletionData.wasActive
2504
2807
  }
2505
2808
  }
2506
2809
  });
2507
2810
  }
2508
- if (parentCollection instanceof import_chunk_CVZPI2P3.CollectionType) {
2811
+ if (parentCollection instanceof import_chunk_K7CSJ7HL.CollectionType) {
2509
2812
  const index = parentCollection.objects.indexOf(object);
2510
2813
  if (index !== -1) {
2511
2814
  parentCollection.objects.splice(index, 1);
@@ -2515,7 +2818,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2515
2818
  space.db.remove(obj);
2516
2819
  });
2517
2820
  space.db.remove(object);
2518
- const undoMessageKey = object instanceof import_chunk_CVZPI2P3.CollectionType ? "collection deleted label" : "object deleted label";
2821
+ const undoMessageKey = object instanceof import_chunk_K7CSJ7HL.CollectionType ? "collection deleted label" : "object deleted label";
2519
2822
  return {
2520
2823
  data: true,
2521
2824
  undoable: {
@@ -2526,7 +2829,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
2526
2829
  };
2527
2830
  } else {
2528
2831
  const undoData = intent.data;
2529
- if (undoData && (0, import_echo.isEchoObject)(undoData.object) && undoData.parentCollection instanceof import_chunk_CVZPI2P3.CollectionType) {
2832
+ if (undoData && (0, import_echo.isEchoObject)(undoData.object) && undoData.parentCollection instanceof import_chunk_K7CSJ7HL.CollectionType) {
2530
2833
  const restoredObject = space.db.add(undoData.object);
2531
2834
  undoData.nestedObjects.forEach((obj) => {
2532
2835
  space.db.add(obj);
@@ -2623,6 +2926,7 @@ var src_default = SpacePlugin;
2623
2926
  EmptyTree,
2624
2927
  FullPresence,
2625
2928
  MenuFooter,
2929
+ MessageState,
2626
2930
  MessageType,
2627
2931
  MissingObject,
2628
2932
  PersistenceStatus,
@@ -2634,6 +2938,7 @@ var src_default = SpacePlugin;
2634
2938
  SPACE_PLUGIN,
2635
2939
  SPACE_PLUGIN_SHORT_ID,
2636
2940
  SPACE_TYPE,
2941
+ SaveStatus,
2637
2942
  ShareSpaceButton,
2638
2943
  ShareSpaceButtonImpl,
2639
2944
  SmallPresence,
@@ -2643,6 +2948,9 @@ var src_default = SpacePlugin;
2643
2948
  SpacePlugin,
2644
2949
  SpacePresence,
2645
2950
  SpaceSettings,
2951
+ SyncStatus,
2952
+ SyncStatusDetail,
2953
+ SyncStatusIndicator,
2646
2954
  ThreadStatus,
2647
2955
  ThreadType,
2648
2956
  cloneObject,
@@ -2656,6 +2964,7 @@ var src_default = SpacePlugin;
2656
2964
  getNestedObjects,
2657
2965
  getSpaceDisplayName,
2658
2966
  memoizeQuery,
2967
+ parseSpaceInitPlugin,
2659
2968
  parseSpacePlugin,
2660
2969
  translations
2661
2970
  });