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