@dxos/plugin-space 0.6.12 → 0.6.13-main.548ca8d

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