@dxos/plugin-space 0.6.12-main.f9d0246 → 0.6.12-staging.0b4bb48
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-WBMH5WIP.mjs → chunk-DTVUOG2C.mjs} +2 -14
- package/dist/lib/browser/chunk-DTVUOG2C.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +185 -497
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/types/index.mjs +3 -7
- package/dist/lib/node/{chunk-GF3SRAQM.cjs → chunk-CVZPI2P3.cjs} +6 -20
- package/dist/lib/node/chunk-CVZPI2P3.cjs.map +7 -0
- package/dist/lib/node/index.cjs +278 -586
- package/dist/lib/node/index.cjs.map +4 -4
- 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/MenuFooter.d.ts.map +1 -1
- package/dist/types/src/components/ShareSpaceButton.stories.d.ts +0 -2
- 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 -2
- 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 +0 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +0 -2
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/thread.d.ts +0 -13
- 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 +4 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/package.json +34 -41
- package/src/SpacePlugin.tsx +23 -38
- package/src/components/MenuFooter.tsx +0 -1
- package/src/components/SpaceMain/SpaceMain.tsx +22 -1
- package/src/components/SpaceSettings.tsx +3 -32
- package/src/components/index.ts +0 -2
- package/src/translations.ts +0 -2
- package/src/types/thread.ts +0 -9
- package/src/types/types.ts +1 -25
- package/src/util.tsx +50 -15
- package/dist/lib/browser/chunk-WBMH5WIP.mjs.map +0 -7
- package/dist/lib/node/chunk-GF3SRAQM.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-GM2YUC77.mjs +0 -37
- package/dist/lib/node-esm/chunk-GM2YUC77.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-N5VC55UM.mjs +0 -109
- package/dist/lib/node-esm/chunk-N5VC55UM.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -2953
- 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/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 -115
- 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/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
|
@@ -9,18 +9,17 @@ import {
|
|
|
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-WBMH5WIP.mjs";
|
|
15
|
+
ThreadType
|
|
16
|
+
} from "./chunk-DTVUOG2C.mjs";
|
|
19
17
|
|
|
20
18
|
// packages/plugins/plugin-space/src/SpacePlugin.tsx
|
|
19
|
+
import { Plus as Plus2, SignIn, CardsThree as CardsThree2, Warning as Warning2 } from "@phosphor-icons/react";
|
|
21
20
|
import { effect, signal } from "@preact/signals-core";
|
|
22
|
-
import
|
|
23
|
-
import { LayoutAction as LayoutAction2,
|
|
21
|
+
import React17 from "react";
|
|
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
25
|
import { LocalStorageStore } from "@dxos/local-storage";
|
|
@@ -31,9 +30,9 @@ import { parseClientPlugin } from "@dxos/plugin-client";
|
|
|
31
30
|
import { createExtension, isGraphNode, memoize as memoize2, toSignal } from "@dxos/plugin-graph";
|
|
32
31
|
import { ObservabilityAction } from "@dxos/plugin-observability/meta";
|
|
33
32
|
import { PublicKey as PublicKey2 } from "@dxos/react-client";
|
|
34
|
-
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";
|
|
35
34
|
import { Dialog } from "@dxos/react-ui";
|
|
36
|
-
import { ClipboardProvider as ClipboardProvider2
|
|
35
|
+
import { InvitationManager, osTranslations, ClipboardProvider as ClipboardProvider2 } from "@dxos/shell/react";
|
|
37
36
|
import { ComplexMap as ComplexMap2, nonNullable, reduceGroupBy } from "@dxos/util";
|
|
38
37
|
|
|
39
38
|
// packages/plugins/plugin-space/src/components/AwaitingObject.tsx
|
|
@@ -184,13 +183,15 @@ var EmptyTree = () => {
|
|
|
184
183
|
};
|
|
185
184
|
|
|
186
185
|
// packages/plugins/plugin-space/src/components/MenuFooter.tsx
|
|
187
|
-
import { Planet } from "@phosphor-icons/react";
|
|
188
|
-
import
|
|
186
|
+
import { Planet as Planet2 } from "@phosphor-icons/react";
|
|
187
|
+
import React7 from "react";
|
|
189
188
|
import { getSpace as getSpace2 } from "@dxos/client/echo";
|
|
190
189
|
import { useClient as useClient2 } from "@dxos/react-client";
|
|
191
190
|
import { DropdownMenu, toLocalizedString, useTranslation as useTranslation6 } from "@dxos/react-ui";
|
|
192
191
|
|
|
193
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";
|
|
194
195
|
import { NavigationAction as NavigationAction2 } from "@dxos/app-framework";
|
|
195
196
|
import { create, isReactiveObject, getTypename, getSchema, getEchoObjectAnnotation, EXPANDO_TYPENAME } from "@dxos/echo-schema";
|
|
196
197
|
import { invariant } from "@dxos/invariant";
|
|
@@ -283,7 +284,8 @@ var constructSpaceNode = ({ space, personal, namesCache, resolve }) => {
|
|
|
283
284
|
namesCache
|
|
284
285
|
}),
|
|
285
286
|
description: space.state.get() === SpaceState.SPACE_READY && space.properties.description,
|
|
286
|
-
icon:
|
|
287
|
+
icon: (props) => /* @__PURE__ */ React6.createElement(Planet, props),
|
|
288
|
+
iconSymbol: "ph--planet--regular",
|
|
287
289
|
disabled: space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,
|
|
288
290
|
testId: "spacePlugin.space"
|
|
289
291
|
}
|
|
@@ -309,7 +311,8 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
|
|
|
309
311
|
ns: SPACE_PLUGIN
|
|
310
312
|
}
|
|
311
313
|
],
|
|
312
|
-
icon:
|
|
314
|
+
icon: (props) => /* @__PURE__ */ React6.createElement(Plus, props),
|
|
315
|
+
iconSymbol: "ph--plus--regular",
|
|
313
316
|
disposition: "toolbar",
|
|
314
317
|
// TODO(wittjosiah): This is currently a navtree feature. Address this with cmd+k integration.
|
|
315
318
|
// mainAreaDisposition: 'in-flow',
|
|
@@ -343,7 +346,8 @@ var constructSpaceActionGroups = ({ space, dispatch }) => {
|
|
|
343
346
|
ns: SPACE_PLUGIN
|
|
344
347
|
}
|
|
345
348
|
],
|
|
346
|
-
icon:
|
|
349
|
+
icon: (props) => /* @__PURE__ */ React6.createElement(CardsThree, props),
|
|
350
|
+
iconSymbol: "ph--cards-three--regular",
|
|
347
351
|
testId: "spacePlugin.createCollection"
|
|
348
352
|
}
|
|
349
353
|
}
|
|
@@ -377,7 +381,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
|
|
|
377
381
|
ns: SPACE_PLUGIN
|
|
378
382
|
}
|
|
379
383
|
],
|
|
380
|
-
icon:
|
|
384
|
+
icon: (props) => /* @__PURE__ */ React6.createElement(Database, props),
|
|
385
|
+
iconSymbol: "ph--database--regular",
|
|
381
386
|
disposition: "toolbar",
|
|
382
387
|
mainAreaDisposition: "in-flow",
|
|
383
388
|
disabled: migrating || Migrations.running(space)
|
|
@@ -408,7 +413,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
|
|
|
408
413
|
ns: SPACE_PLUGIN
|
|
409
414
|
}
|
|
410
415
|
],
|
|
411
|
-
icon:
|
|
416
|
+
icon: (props) => /* @__PURE__ */ React6.createElement(Users, props),
|
|
417
|
+
iconSymbol: "ph--users--regular",
|
|
412
418
|
disabled: locked,
|
|
413
419
|
keyBinding: {
|
|
414
420
|
macos: "meta+.",
|
|
@@ -435,7 +441,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
|
|
|
435
441
|
ns: SPACE_PLUGIN
|
|
436
442
|
}
|
|
437
443
|
],
|
|
438
|
-
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"
|
|
439
446
|
}
|
|
440
447
|
}, {
|
|
441
448
|
id: getId(SpaceAction.RENAME),
|
|
@@ -457,7 +464,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
|
|
|
457
464
|
ns: SPACE_PLUGIN
|
|
458
465
|
}
|
|
459
466
|
],
|
|
460
|
-
icon:
|
|
467
|
+
icon: (props) => /* @__PURE__ */ React6.createElement(PencilSimpleLine, props),
|
|
468
|
+
iconSymbol: "ph--pencil-simple-line--regular",
|
|
461
469
|
keyBinding: {
|
|
462
470
|
macos: "shift+F6",
|
|
463
471
|
windows: "shift+F6"
|
|
@@ -486,7 +494,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
|
|
|
486
494
|
ns: SPACE_PLUGIN
|
|
487
495
|
}
|
|
488
496
|
],
|
|
489
|
-
icon:
|
|
497
|
+
icon: (props) => /* @__PURE__ */ React6.createElement(X, props),
|
|
498
|
+
iconSymbol: "ph--x--regular",
|
|
490
499
|
mainAreaDisposition: "menu",
|
|
491
500
|
disabled: personal
|
|
492
501
|
}
|
|
@@ -512,7 +521,8 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
|
|
|
512
521
|
ns: SPACE_PLUGIN
|
|
513
522
|
}
|
|
514
523
|
],
|
|
515
|
-
icon:
|
|
524
|
+
icon: (props) => /* @__PURE__ */ React6.createElement(ClockCounterClockwise, props),
|
|
525
|
+
iconSymbol: "ph--clock-counter-clockwise--regular",
|
|
516
526
|
disposition: "toolbar",
|
|
517
527
|
mainAreaDisposition: "in-flow"
|
|
518
528
|
}
|
|
@@ -546,7 +556,8 @@ var createObjectNode = ({ object, space, resolve }) => {
|
|
|
546
556
|
ns: SPACE_PLUGIN
|
|
547
557
|
}
|
|
548
558
|
],
|
|
549
|
-
icon: metadata.icon ??
|
|
559
|
+
icon: metadata.icon ?? (() => /* @__PURE__ */ React6.createElement(Placeholder, null)),
|
|
560
|
+
iconSymbol: metadata.iconSymbol ?? "ph--placeholder--regular",
|
|
550
561
|
testId: "spacePlugin.object",
|
|
551
562
|
persistenceClass: "echo",
|
|
552
563
|
persistenceKey: space?.id
|
|
@@ -571,7 +582,8 @@ var constructObjectActionGroups = ({ object, dispatch }) => {
|
|
|
571
582
|
ns: SPACE_PLUGIN
|
|
572
583
|
}
|
|
573
584
|
],
|
|
574
|
-
icon:
|
|
585
|
+
icon: (props) => /* @__PURE__ */ React6.createElement(Plus, props),
|
|
586
|
+
iconSymbol: "ph--plus--regular",
|
|
575
587
|
disposition: "toolbar",
|
|
576
588
|
// TODO(wittjosiah): This is currently a navtree feature. Address this with cmd+k integration.
|
|
577
589
|
// mainAreaDisposition: 'in-flow',
|
|
@@ -605,7 +617,8 @@ var constructObjectActionGroups = ({ object, dispatch }) => {
|
|
|
605
617
|
ns: SPACE_PLUGIN
|
|
606
618
|
}
|
|
607
619
|
],
|
|
608
|
-
icon:
|
|
620
|
+
icon: (props) => /* @__PURE__ */ React6.createElement(CardsThree, props),
|
|
621
|
+
iconSymbol: "ph--cards-three--regular",
|
|
609
622
|
testId: "spacePlugin.createCollection"
|
|
610
623
|
}
|
|
611
624
|
}
|
|
@@ -637,7 +650,8 @@ var constructObjectActions = ({ node, dispatch }) => {
|
|
|
637
650
|
ns: SPACE_PLUGIN
|
|
638
651
|
}
|
|
639
652
|
],
|
|
640
|
-
icon:
|
|
653
|
+
icon: (props) => /* @__PURE__ */ React6.createElement(PencilSimpleLine, props),
|
|
654
|
+
iconSymbol: "ph--pencil-simple-line--regular",
|
|
641
655
|
// TODO(wittjosiah): Doesn't work.
|
|
642
656
|
// keyBinding: 'shift+F6',
|
|
643
657
|
testId: "spacePlugin.renameObject"
|
|
@@ -668,7 +682,8 @@ var constructObjectActions = ({ node, dispatch }) => {
|
|
|
668
682
|
ns: SPACE_PLUGIN
|
|
669
683
|
}
|
|
670
684
|
],
|
|
671
|
-
icon:
|
|
685
|
+
icon: (props) => /* @__PURE__ */ React6.createElement(Trash, props),
|
|
686
|
+
iconSymbol: "ph--trash--regular",
|
|
672
687
|
keyBinding: object instanceof CollectionType ? void 0 : "shift+meta+Backspace",
|
|
673
688
|
testId: "spacePlugin.deleteObject"
|
|
674
689
|
}
|
|
@@ -687,7 +702,8 @@ var constructObjectActions = ({ node, dispatch }) => {
|
|
|
687
702
|
ns: SPACE_PLUGIN
|
|
688
703
|
}
|
|
689
704
|
],
|
|
690
|
-
icon:
|
|
705
|
+
icon: (props) => /* @__PURE__ */ React6.createElement(Link, props),
|
|
706
|
+
iconSymbol: "ph--link--regular",
|
|
691
707
|
testId: "spacePlugin.copyLink"
|
|
692
708
|
}
|
|
693
709
|
}
|
|
@@ -728,7 +744,7 @@ var cloneObject = async (object, resolve) => {
|
|
|
728
744
|
const serializer = metadata.serializer;
|
|
729
745
|
invariant(serializer, `No serializer for type: ${typename}`, {
|
|
730
746
|
F: __dxlog_file,
|
|
731
|
-
L:
|
|
747
|
+
L: 639,
|
|
732
748
|
S: void 0,
|
|
733
749
|
A: [
|
|
734
750
|
"serializer",
|
|
@@ -752,19 +768,19 @@ var MenuFooter = ({ object }) => {
|
|
|
752
768
|
const spaceName = space ? getSpaceDisplayName(space, {
|
|
753
769
|
personal: client.spaces.default === space
|
|
754
770
|
}) : "";
|
|
755
|
-
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", {
|
|
756
772
|
className: "pis-2 mbe-2 text-xs grid grid-cols-[max-content_1fr] gap-2"
|
|
757
|
-
}, /* @__PURE__ */
|
|
773
|
+
}, /* @__PURE__ */ React7.createElement("dt", {
|
|
758
774
|
className: "uppercase text-[.75em] tracking-wide font-medium mbs-px self-start"
|
|
759
|
-
}, t("location label")), /* @__PURE__ */
|
|
775
|
+
}, t("location label")), /* @__PURE__ */ React7.createElement("dd", {
|
|
760
776
|
className: "line-clamp-3"
|
|
761
|
-
}, /* @__PURE__ */
|
|
777
|
+
}, /* @__PURE__ */ React7.createElement(Planet2, {
|
|
762
778
|
className: "inline-block mie-1"
|
|
763
779
|
}), toLocalizedString(spaceName, t)))) : null;
|
|
764
780
|
};
|
|
765
781
|
|
|
766
782
|
// packages/plugins/plugin-space/src/components/MissingObject.tsx
|
|
767
|
-
import
|
|
783
|
+
import React8, { useEffect as useEffect2, useState as useState2 } from "react";
|
|
768
784
|
import { parseIntentPlugin as parseIntentPlugin2, useResolvePlugin as useResolvePlugin2 } from "@dxos/app-framework";
|
|
769
785
|
import { Status, useTranslation as useTranslation7 } from "@dxos/react-ui";
|
|
770
786
|
import { baseSurface as baseSurface2, descriptionText as descriptionText4, mx as mx5 } from "@dxos/react-ui-theme";
|
|
@@ -792,13 +808,13 @@ var MissingObject = ({ id }) => {
|
|
|
792
808
|
intentPlugin,
|
|
793
809
|
id
|
|
794
810
|
]);
|
|
795
|
-
return /* @__PURE__ */
|
|
811
|
+
return /* @__PURE__ */ React8.createElement("div", {
|
|
796
812
|
role: "none",
|
|
797
813
|
className: mx5(baseSurface2, "min-bs-screen is-full flex items-center justify-center p-8")
|
|
798
|
-
}, waiting ? /* @__PURE__ */
|
|
814
|
+
}, waiting ? /* @__PURE__ */ React8.createElement("p", {
|
|
799
815
|
role: "alert",
|
|
800
816
|
className: mx5(descriptionText4, "border border-dashed border-neutral-400/50 rounded-lg flex items-center justify-center p-8 font-normal text-lg")
|
|
801
|
-
}, t("missing object message")) : /* @__PURE__ */
|
|
817
|
+
}, t("missing object message")) : /* @__PURE__ */ React8.createElement(Status, {
|
|
802
818
|
indeterminate: true,
|
|
803
819
|
"aria-label": "Initializing"
|
|
804
820
|
}));
|
|
@@ -806,7 +822,7 @@ var MissingObject = ({ id }) => {
|
|
|
806
822
|
|
|
807
823
|
// packages/plugins/plugin-space/src/components/PersistenceStatus.tsx
|
|
808
824
|
import { ArrowsCounterClockwise, CheckCircle as CheckCircle2, Warning } from "@phosphor-icons/react";
|
|
809
|
-
import
|
|
825
|
+
import React9, { useEffect as useEffect3, useState as useState3 } from "react";
|
|
810
826
|
import { debounce } from "@dxos/async";
|
|
811
827
|
import { Tooltip, useTranslation as useTranslation8 } from "@dxos/react-ui";
|
|
812
828
|
import { getSize as getSize2, mx as mx6, staticPlaceholderText, warningText } from "@dxos/react-ui-theme";
|
|
@@ -834,40 +850,40 @@ var PersistenceStatus = ({ db }) => {
|
|
|
834
850
|
]);
|
|
835
851
|
switch (status) {
|
|
836
852
|
case 2:
|
|
837
|
-
return /* @__PURE__ */
|
|
853
|
+
return /* @__PURE__ */ React9.createElement("div", {
|
|
838
854
|
className: "flex items-center"
|
|
839
|
-
}, /* @__PURE__ */
|
|
855
|
+
}, /* @__PURE__ */ React9.createElement(Warning, {
|
|
840
856
|
className: mx6(getSize2(4), "me-1")
|
|
841
|
-
}), /* @__PURE__ */
|
|
857
|
+
}), /* @__PURE__ */ React9.createElement("span", {
|
|
842
858
|
className: mx6("text-sm", warningText)
|
|
843
859
|
}, t("persistence error label")));
|
|
844
860
|
case 1:
|
|
845
|
-
return /* @__PURE__ */
|
|
861
|
+
return /* @__PURE__ */ React9.createElement("div", {
|
|
846
862
|
className: "flex items-center"
|
|
847
|
-
}, /* @__PURE__ */
|
|
863
|
+
}, /* @__PURE__ */ React9.createElement(ArrowsCounterClockwise, {
|
|
848
864
|
className: mx6(getSize2(4), "me-1")
|
|
849
|
-
}), /* @__PURE__ */
|
|
865
|
+
}), /* @__PURE__ */ React9.createElement("span", {
|
|
850
866
|
className: mx6("text-sm", staticPlaceholderText)
|
|
851
867
|
}, t("persistence pending label")));
|
|
852
868
|
case 0:
|
|
853
869
|
default:
|
|
854
|
-
return /* @__PURE__ */
|
|
870
|
+
return /* @__PURE__ */ React9.createElement(Tooltip.Root, {
|
|
855
871
|
delayDuration: 400
|
|
856
|
-
}, /* @__PURE__ */
|
|
872
|
+
}, /* @__PURE__ */ React9.createElement(Tooltip.Trigger, {
|
|
857
873
|
role: "status",
|
|
858
874
|
className: "flex items-center"
|
|
859
|
-
}, /* @__PURE__ */
|
|
875
|
+
}, /* @__PURE__ */ React9.createElement(CheckCircle2, {
|
|
860
876
|
className: mx6(getSize2(4), "me-1")
|
|
861
|
-
}), displayMessage && /* @__PURE__ */
|
|
877
|
+
}), displayMessage && /* @__PURE__ */ React9.createElement("span", {
|
|
862
878
|
className: mx6("text-sm", staticPlaceholderText)
|
|
863
|
-
}, t("persisted locally label"))), /* @__PURE__ */
|
|
879
|
+
}, t("persisted locally label"))), /* @__PURE__ */ React9.createElement(Tooltip.Portal, null, /* @__PURE__ */ React9.createElement(Tooltip.Content, {
|
|
864
880
|
classNames: "z-10"
|
|
865
|
-
}, t("persisted locally message"), /* @__PURE__ */
|
|
881
|
+
}, t("persisted locally message"), /* @__PURE__ */ React9.createElement(Tooltip.Arrow, null))));
|
|
866
882
|
}
|
|
867
883
|
};
|
|
868
884
|
|
|
869
885
|
// packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx
|
|
870
|
-
import
|
|
886
|
+
import React10, { useCallback, useRef, useState as useState4 } from "react";
|
|
871
887
|
import { log } from "@dxos/log";
|
|
872
888
|
import { Button as Button2, Input, Popover, useTranslation as useTranslation9 } from "@dxos/react-ui";
|
|
873
889
|
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
|
|
@@ -897,23 +913,23 @@ var PopoverRenameObject = ({ object: obj }) => {
|
|
|
897
913
|
object,
|
|
898
914
|
name
|
|
899
915
|
]);
|
|
900
|
-
return /* @__PURE__ */
|
|
916
|
+
return /* @__PURE__ */ React10.createElement("div", {
|
|
901
917
|
role: "none",
|
|
902
918
|
className: "p-1 flex gap-2"
|
|
903
|
-
}, /* @__PURE__ */
|
|
919
|
+
}, /* @__PURE__ */ React10.createElement("div", {
|
|
904
920
|
role: "none",
|
|
905
921
|
className: "flex-1"
|
|
906
|
-
}, /* @__PURE__ */
|
|
922
|
+
}, /* @__PURE__ */ React10.createElement(Input.Root, null, /* @__PURE__ */ React10.createElement(Input.Label, {
|
|
907
923
|
srOnly: true
|
|
908
|
-
}, t("object name label")), /* @__PURE__ */
|
|
924
|
+
}, t("object name label")), /* @__PURE__ */ React10.createElement(Input.TextInput, {
|
|
909
925
|
placeholder: t("object title placeholder"),
|
|
910
926
|
value: name,
|
|
911
927
|
"data-testid": "spacePlugin.renameObject.input",
|
|
912
928
|
onChange: ({ target: { value } }) => setName(value),
|
|
913
929
|
onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
|
|
914
|
-
}))), /* @__PURE__ */
|
|
930
|
+
}))), /* @__PURE__ */ React10.createElement(Popover.Close, {
|
|
915
931
|
asChild: true
|
|
916
|
-
}, /* @__PURE__ */
|
|
932
|
+
}, /* @__PURE__ */ React10.createElement(Button2, {
|
|
917
933
|
ref: doneButton,
|
|
918
934
|
classNames: "self-stretch",
|
|
919
935
|
onClick: handleDone
|
|
@@ -923,7 +939,7 @@ var PopoverRenameObject = ({ object: obj }) => {
|
|
|
923
939
|
};
|
|
924
940
|
|
|
925
941
|
// packages/plugins/plugin-space/src/components/PopoverRenameSpace.tsx
|
|
926
|
-
import
|
|
942
|
+
import React11, { useCallback as useCallback2, useRef as useRef2, useState as useState5 } from "react";
|
|
927
943
|
import { Button as Button3, Input as Input2, Popover as Popover2, useTranslation as useTranslation10 } from "@dxos/react-ui";
|
|
928
944
|
var PopoverRenameSpace = ({ space }) => {
|
|
929
945
|
const { t } = useTranslation10(SPACE_PLUGIN);
|
|
@@ -935,24 +951,24 @@ var PopoverRenameSpace = ({ space }) => {
|
|
|
935
951
|
space,
|
|
936
952
|
name
|
|
937
953
|
]);
|
|
938
|
-
return /* @__PURE__ */
|
|
954
|
+
return /* @__PURE__ */ React11.createElement("div", {
|
|
939
955
|
role: "none",
|
|
940
956
|
className: "p-1 flex gap-2"
|
|
941
|
-
}, /* @__PURE__ */
|
|
957
|
+
}, /* @__PURE__ */ React11.createElement("div", {
|
|
942
958
|
role: "none",
|
|
943
959
|
className: "flex-1"
|
|
944
|
-
}, /* @__PURE__ */
|
|
960
|
+
}, /* @__PURE__ */ React11.createElement(Input2.Root, null, /* @__PURE__ */ React11.createElement(Input2.Label, {
|
|
945
961
|
srOnly: true
|
|
946
|
-
}, t("space name label")), /* @__PURE__ */
|
|
962
|
+
}, t("space name label")), /* @__PURE__ */ React11.createElement(Input2.TextInput, {
|
|
947
963
|
defaultValue: space.properties.name ?? "",
|
|
948
964
|
placeholder: t("unnamed space label"),
|
|
949
965
|
onChange: ({ target: { value } }) => setName(value),
|
|
950
966
|
// TODO(wittjosiah): Ideally this should access the popover context to close the popover.
|
|
951
967
|
// Currently this is not possible because Radix does not expose the popover context.
|
|
952
968
|
onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
|
|
953
|
-
}))), /* @__PURE__ */
|
|
969
|
+
}))), /* @__PURE__ */ React11.createElement(Popover2.Close, {
|
|
954
970
|
asChild: true
|
|
955
|
-
}, /* @__PURE__ */
|
|
971
|
+
}, /* @__PURE__ */ React11.createElement(Button3, {
|
|
956
972
|
ref: doneButton,
|
|
957
973
|
classNames: "self-stretch",
|
|
958
974
|
onClick: handleDone
|
|
@@ -962,12 +978,12 @@ var PopoverRenameSpace = ({ space }) => {
|
|
|
962
978
|
};
|
|
963
979
|
|
|
964
980
|
// packages/plugins/plugin-space/src/components/ShareSpaceButton.tsx
|
|
965
|
-
import
|
|
981
|
+
import React12 from "react";
|
|
966
982
|
import { useIntentDispatcher } from "@dxos/app-framework";
|
|
967
983
|
import { Button as Button4, useTranslation as useTranslation11 } from "@dxos/react-ui";
|
|
968
984
|
var ShareSpaceButton = ({ spaceId }) => {
|
|
969
985
|
const dispatch = useIntentDispatcher();
|
|
970
|
-
return /* @__PURE__ */
|
|
986
|
+
return /* @__PURE__ */ React12.createElement(ShareSpaceButtonImpl, {
|
|
971
987
|
onClick: () => dispatch({
|
|
972
988
|
action: SpaceAction.SHARE,
|
|
973
989
|
data: {
|
|
@@ -978,7 +994,7 @@ var ShareSpaceButton = ({ spaceId }) => {
|
|
|
978
994
|
};
|
|
979
995
|
var ShareSpaceButtonImpl = ({ onClick }) => {
|
|
980
996
|
const { t } = useTranslation11(SPACE_PLUGIN);
|
|
981
|
-
return /* @__PURE__ */
|
|
997
|
+
return /* @__PURE__ */ React12.createElement(Button4, {
|
|
982
998
|
"data-testid": "spacePlugin.shareSpaceButton",
|
|
983
999
|
onClick,
|
|
984
1000
|
classNames: "mli-1"
|
|
@@ -987,16 +1003,16 @@ var ShareSpaceButtonImpl = ({ onClick }) => {
|
|
|
987
1003
|
|
|
988
1004
|
// packages/plugins/plugin-space/src/components/SpaceMain/SpaceMain.tsx
|
|
989
1005
|
import { Command } from "@phosphor-icons/react";
|
|
990
|
-
import
|
|
1006
|
+
import React14 from "react";
|
|
991
1007
|
import { Surface } from "@dxos/app-framework";
|
|
992
1008
|
import { SpaceState as SpaceState2 } from "@dxos/react-client/echo";
|
|
993
|
-
import { Main, useTranslation as useTranslation13 } from "@dxos/react-ui";
|
|
1009
|
+
import { Button as Button6, Main, useTranslation as useTranslation13, toLocalizedString as toLocalizedString2 } from "@dxos/react-ui";
|
|
994
1010
|
import { getSize as getSize4, mx as mx8, topbarBlockPaddingStart } from "@dxos/react-ui-theme";
|
|
995
1011
|
import { ClipboardProvider } from "@dxos/shell/react";
|
|
996
1012
|
|
|
997
1013
|
// packages/plugins/plugin-space/src/components/SpaceMain/SpaceMembersSection.tsx
|
|
998
1014
|
import { CaretDown, Check, UserPlus, UsersThree } from "@phosphor-icons/react";
|
|
999
|
-
import
|
|
1015
|
+
import React13, { useCallback as useCallback3, useState as useState6 } from "react";
|
|
1000
1016
|
import { LayoutAction, useIntent } from "@dxos/app-framework";
|
|
1001
1017
|
import { useMembers, SpaceMember, useSpaceInvitations } from "@dxos/react-client/echo";
|
|
1002
1018
|
import { InvitationEncoder } from "@dxos/react-client/invitations";
|
|
@@ -1008,9 +1024,9 @@ var activeActionKeyStorageKey = "dxos:react-shell/space-manager/active-action";
|
|
|
1008
1024
|
var Presence = SpaceMember.PresenceState;
|
|
1009
1025
|
var handleCreateInvitationUrl = (invitationCode) => `${origin}?spaceInvitationCode=${invitationCode}`;
|
|
1010
1026
|
var SpaceMemberList = ({ members }) => {
|
|
1011
|
-
return members.length > 0 ? /* @__PURE__ */
|
|
1027
|
+
return members.length > 0 ? /* @__PURE__ */ React13.createElement(List, {
|
|
1012
1028
|
classNames: "col-start-2 col-end-5 gap-y-1 grid grid-cols-subgrid items-center"
|
|
1013
|
-
}, members.map((member) => /* @__PURE__ */
|
|
1029
|
+
}, members.map((member) => /* @__PURE__ */ React13.createElement(IdentityListItem, {
|
|
1014
1030
|
classNames: "contents",
|
|
1015
1031
|
key: member.identity.identityKey.toHex(),
|
|
1016
1032
|
identity: member.identity,
|
|
@@ -1096,83 +1112,83 @@ var SpaceMembersSection = ({ space }) => {
|
|
|
1096
1112
|
[Presence.ONLINE]: [],
|
|
1097
1113
|
[Presence.OFFLINE]: []
|
|
1098
1114
|
});
|
|
1099
|
-
return /* @__PURE__ */
|
|
1115
|
+
return /* @__PURE__ */ React13.createElement("section", {
|
|
1100
1116
|
className: "mbe-4 col-span-3 grid gap-y-2 grid-cols-subgrid auto-rows-min"
|
|
1101
|
-
}, /* @__PURE__ */
|
|
1117
|
+
}, /* @__PURE__ */ React13.createElement("h2", {
|
|
1102
1118
|
className: "contents"
|
|
1103
|
-
}, /* @__PURE__ */
|
|
1119
|
+
}, /* @__PURE__ */ React13.createElement(UsersThree, {
|
|
1104
1120
|
weight: "duotone",
|
|
1105
1121
|
className: mx7(getSize3(5), "place-self-center")
|
|
1106
|
-
}), /* @__PURE__ */
|
|
1122
|
+
}), /* @__PURE__ */ React13.createElement("span", {
|
|
1107
1123
|
className: "text-lg col-span-2"
|
|
1108
|
-
}, t("space members label"))), /* @__PURE__ */
|
|
1124
|
+
}, t("space members label"))), /* @__PURE__ */ React13.createElement("h3", {
|
|
1109
1125
|
className: "col-start-2 col-span-3 text-sm italic text-description"
|
|
1110
|
-
}, t("invitations heading")), invitations.length > 0 && /* @__PURE__ */
|
|
1126
|
+
}, t("invitations heading")), invitations.length > 0 && /* @__PURE__ */ React13.createElement(List, {
|
|
1111
1127
|
classNames: "col-start-2 col-span-2 gap-y-2 grid grid-cols-[var(--rail-size)_1fr_var(--rail-action)_var(--rail-action)]"
|
|
1112
|
-
}, invitations.map((invitation) => /* @__PURE__ */
|
|
1128
|
+
}, invitations.map((invitation) => /* @__PURE__ */ React13.createElement(InvitationListItem, {
|
|
1113
1129
|
reverseEffects: true,
|
|
1114
1130
|
classNames: "pis-0 pie-0 gap-0 col-span-4 grid grid-cols-subgrid",
|
|
1115
1131
|
key: invitation.get().invitationId,
|
|
1116
1132
|
invitation,
|
|
1117
1133
|
send: handleInvitationSelect,
|
|
1118
1134
|
createInvitationUrl: handleCreateInvitationUrl
|
|
1119
|
-
}))), /* @__PURE__ */
|
|
1135
|
+
}))), /* @__PURE__ */ React13.createElement(ButtonGroup, {
|
|
1120
1136
|
classNames: "col-start-2 col-end-4 grid grid-cols-[1fr_var(--rail-action)] place-self-grow gap-px"
|
|
1121
|
-
}, /* @__PURE__ */
|
|
1137
|
+
}, /* @__PURE__ */ React13.createElement(Button5, {
|
|
1122
1138
|
classNames: "gap-2",
|
|
1123
1139
|
onClick: activeAction.onClick
|
|
1124
|
-
}, /* @__PURE__ */
|
|
1140
|
+
}, /* @__PURE__ */ React13.createElement(activeAction.icon, {
|
|
1125
1141
|
className: getSize3(5)
|
|
1126
|
-
}), /* @__PURE__ */
|
|
1142
|
+
}), /* @__PURE__ */ React13.createElement("span", null, t(activeAction.label, {
|
|
1127
1143
|
ns: "os"
|
|
1128
|
-
}))), /* @__PURE__ */
|
|
1144
|
+
}))), /* @__PURE__ */ React13.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React13.createElement(DropdownMenu2.Trigger, {
|
|
1129
1145
|
asChild: true
|
|
1130
|
-
}, /* @__PURE__ */
|
|
1146
|
+
}, /* @__PURE__ */ React13.createElement(Button5, {
|
|
1131
1147
|
classNames: "pli-0"
|
|
1132
|
-
}, /* @__PURE__ */
|
|
1148
|
+
}, /* @__PURE__ */ React13.createElement(CaretDown, {
|
|
1133
1149
|
className: getSize3(4)
|
|
1134
|
-
}))), /* @__PURE__ */
|
|
1135
|
-
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, {
|
|
1136
1152
|
key: id,
|
|
1137
1153
|
"aria-labelledby": `${id}__label`,
|
|
1138
1154
|
"aria-describedby": `${id}__description`,
|
|
1139
1155
|
checked: activeActionKey === id,
|
|
1140
1156
|
onCheckedChange: (checked) => checked && setActiveActionKey(id),
|
|
1141
1157
|
classNames: "gap-2"
|
|
1142
|
-
}, action.icon && /* @__PURE__ */
|
|
1158
|
+
}, action.icon && /* @__PURE__ */ React13.createElement(action.icon, {
|
|
1143
1159
|
className: getSize3(5)
|
|
1144
|
-
}), /* @__PURE__ */
|
|
1160
|
+
}), /* @__PURE__ */ React13.createElement("div", {
|
|
1145
1161
|
role: "none",
|
|
1146
1162
|
className: "flex-1 min-is-0 space-b-1"
|
|
1147
|
-
}, /* @__PURE__ */
|
|
1163
|
+
}, /* @__PURE__ */ React13.createElement("p", {
|
|
1148
1164
|
id: `${id}__label`
|
|
1149
1165
|
}, t(action.label, {
|
|
1150
1166
|
ns: "os"
|
|
1151
|
-
})), action.description && /* @__PURE__ */
|
|
1167
|
+
})), action.description && /* @__PURE__ */ React13.createElement("p", {
|
|
1152
1168
|
id: `${id}__description`,
|
|
1153
1169
|
className: descriptionText5
|
|
1154
1170
|
}, t(action.description, {
|
|
1155
1171
|
ns: "os"
|
|
1156
|
-
}))), /* @__PURE__ */
|
|
1172
|
+
}))), /* @__PURE__ */ React13.createElement(DropdownMenu2.ItemIndicator, {
|
|
1157
1173
|
asChild: true
|
|
1158
|
-
}, /* @__PURE__ */
|
|
1174
|
+
}, /* @__PURE__ */ React13.createElement(Check, {
|
|
1159
1175
|
className: getSize3(4)
|
|
1160
1176
|
})));
|
|
1161
|
-
})), /* @__PURE__ */
|
|
1177
|
+
})), /* @__PURE__ */ React13.createElement(DropdownMenu2.Arrow, null)))), members[Presence.ONLINE].length + members[Presence.OFFLINE].length < 1 ? /* @__PURE__ */ React13.createElement("p", {
|
|
1162
1178
|
className: mx7(descriptionText5, "text-center is-full mlb-2")
|
|
1163
1179
|
}, t("empty space members message", {
|
|
1164
1180
|
ns: "os"
|
|
1165
|
-
})) : /* @__PURE__ */
|
|
1181
|
+
})) : /* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement("h3", {
|
|
1166
1182
|
className: "col-start-2 col-end-5 text-sm italic text-description"
|
|
1167
1183
|
}, t("active space members heading", {
|
|
1168
1184
|
count: members[Presence.ONLINE].length
|
|
1169
|
-
})), /* @__PURE__ */
|
|
1185
|
+
})), /* @__PURE__ */ React13.createElement(SpaceMemberList, {
|
|
1170
1186
|
members: members[Presence.ONLINE]
|
|
1171
|
-
}), /* @__PURE__ */
|
|
1187
|
+
}), /* @__PURE__ */ React13.createElement("h3", {
|
|
1172
1188
|
className: "col-start-2 col-end-5 text-sm italic text-description"
|
|
1173
1189
|
}, t("inactive space members heading", {
|
|
1174
1190
|
count: members[Presence.OFFLINE].length
|
|
1175
|
-
})), /* @__PURE__ */
|
|
1191
|
+
})), /* @__PURE__ */ React13.createElement(SpaceMemberList, {
|
|
1176
1192
|
members: members[Presence.OFFLINE]
|
|
1177
1193
|
})));
|
|
1178
1194
|
};
|
|
@@ -1180,19 +1196,19 @@ var SpaceMembersSection = ({ space }) => {
|
|
|
1180
1196
|
// packages/plugins/plugin-space/src/components/SpaceMain/SpaceMain.tsx
|
|
1181
1197
|
var KeyShortcuts = () => {
|
|
1182
1198
|
const { t } = useTranslation13(SPACE_PLUGIN);
|
|
1183
|
-
return /* @__PURE__ */
|
|
1199
|
+
return /* @__PURE__ */ React14.createElement("section", {
|
|
1184
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"
|
|
1185
|
-
}, /* @__PURE__ */
|
|
1201
|
+
}, /* @__PURE__ */ React14.createElement("h2", {
|
|
1186
1202
|
className: "contents"
|
|
1187
|
-
}, /* @__PURE__ */
|
|
1203
|
+
}, /* @__PURE__ */ React14.createElement(Command, {
|
|
1188
1204
|
weight: "duotone",
|
|
1189
1205
|
className: mx8(getSize4(5), "place-self-center")
|
|
1190
|
-
}), /* @__PURE__ */
|
|
1206
|
+
}), /* @__PURE__ */ React14.createElement("span", {
|
|
1191
1207
|
className: "text-lg col-span-2 md:col-span-1"
|
|
1192
|
-
}, t("keyshortcuts label"))), /* @__PURE__ */
|
|
1208
|
+
}, t("keyshortcuts label"))), /* @__PURE__ */ React14.createElement("div", {
|
|
1193
1209
|
role: "none",
|
|
1194
1210
|
className: "col-start-2 col-end-4 md:col-end-5 pie-2"
|
|
1195
|
-
}, /* @__PURE__ */
|
|
1211
|
+
}, /* @__PURE__ */ React14.createElement(Surface, {
|
|
1196
1212
|
role: "keyshortcuts"
|
|
1197
1213
|
})));
|
|
1198
1214
|
};
|
|
@@ -1201,7 +1217,7 @@ var SpaceMain = ({ space, role }) => {
|
|
|
1201
1217
|
const state = space.state.get();
|
|
1202
1218
|
const ready = state === SpaceState2.SPACE_READY;
|
|
1203
1219
|
const Root = role === "main" ? Main.Content : "div";
|
|
1204
|
-
return /* @__PURE__ */
|
|
1220
|
+
return /* @__PURE__ */ React14.createElement(ClipboardProvider, null, /* @__PURE__ */ React14.createElement(Root, {
|
|
1205
1221
|
...role === "main" ? {
|
|
1206
1222
|
classNames: [
|
|
1207
1223
|
topbarBlockPaddingStart,
|
|
@@ -1214,13 +1230,13 @@ var SpaceMain = ({ space, role }) => {
|
|
|
1214
1230
|
},
|
|
1215
1231
|
"data-testid": `spacePlugin.${role}`,
|
|
1216
1232
|
"data-isready": ready ? "true" : "false"
|
|
1217
|
-
}, ready && /* @__PURE__ */
|
|
1233
|
+
}, ready && /* @__PURE__ */ React14.createElement(SpaceMembersSection, {
|
|
1218
1234
|
space
|
|
1219
|
-
}), /* @__PURE__ */
|
|
1235
|
+
}), /* @__PURE__ */ React14.createElement(KeyShortcuts, null)));
|
|
1220
1236
|
};
|
|
1221
1237
|
|
|
1222
1238
|
// packages/plugins/plugin-space/src/components/SpacePresence.tsx
|
|
1223
|
-
import
|
|
1239
|
+
import React15, { useCallback as useCallback4, useEffect as useEffect4, useState as useState7 } from "react";
|
|
1224
1240
|
import { usePlugin } from "@dxos/app-framework";
|
|
1225
1241
|
import { generateName } from "@dxos/display-name";
|
|
1226
1242
|
import { PublicKey, useClient as useClient3 } from "@dxos/react-client";
|
|
@@ -1264,9 +1280,9 @@ var SpacePresence = ({ object, spaceKey }) => {
|
|
|
1264
1280
|
lastSeen
|
|
1265
1281
|
};
|
|
1266
1282
|
}).toSorted((a, b) => a.lastSeen - b.lastSeen);
|
|
1267
|
-
return density === "fine" ? /* @__PURE__ */
|
|
1283
|
+
return density === "fine" ? /* @__PURE__ */ React15.createElement(SmallPresence, {
|
|
1268
1284
|
count: membersForObject.length
|
|
1269
|
-
}) : /* @__PURE__ */
|
|
1285
|
+
}) : /* @__PURE__ */ React15.createElement(FullPresence, {
|
|
1270
1286
|
members: membersForObject
|
|
1271
1287
|
});
|
|
1272
1288
|
};
|
|
@@ -1276,38 +1292,38 @@ var FullPresence = (props) => {
|
|
|
1276
1292
|
if (members.length === 0) {
|
|
1277
1293
|
return null;
|
|
1278
1294
|
}
|
|
1279
|
-
return /* @__PURE__ */
|
|
1295
|
+
return /* @__PURE__ */ React15.createElement(AvatarGroup.Root, {
|
|
1280
1296
|
size,
|
|
1281
1297
|
classNames: "mbs-2 mie-4",
|
|
1282
1298
|
"data-testid": "spacePlugin.presence"
|
|
1283
|
-
}, members.slice(0, 3).map((member, i) => /* @__PURE__ */
|
|
1299
|
+
}, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React15.createElement(Tooltip2.Root, {
|
|
1284
1300
|
key: member.identity.identityKey.toHex()
|
|
1285
|
-
}, /* @__PURE__ */
|
|
1301
|
+
}, /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React15.createElement(PrensenceAvatar, {
|
|
1286
1302
|
identity: member.identity,
|
|
1287
1303
|
group: true,
|
|
1288
1304
|
match: member.currentlyAttended,
|
|
1289
1305
|
index: members.length - i,
|
|
1290
1306
|
onClick: () => onMemberClick?.(member)
|
|
1291
|
-
})), /* @__PURE__ */
|
|
1307
|
+
})), /* @__PURE__ */ React15.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React15.createElement(Tooltip2.Content, {
|
|
1292
1308
|
side: "bottom"
|
|
1293
|
-
}, /* @__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, {
|
|
1294
1310
|
status: "inactive"
|
|
1295
|
-
}, /* @__PURE__ */
|
|
1311
|
+
}, /* @__PURE__ */ React15.createElement(Avatar.Frame, {
|
|
1296
1312
|
style: {
|
|
1297
1313
|
zIndex: members.length - 4
|
|
1298
1314
|
}
|
|
1299
|
-
}, /* @__PURE__ */
|
|
1315
|
+
}, /* @__PURE__ */ React15.createElement(Avatar.Fallback, {
|
|
1300
1316
|
text: `+${members.length - 3}`
|
|
1301
|
-
})))), /* @__PURE__ */
|
|
1317
|
+
})))), /* @__PURE__ */ React15.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React15.createElement(Tooltip2.Content, {
|
|
1302
1318
|
side: "bottom"
|
|
1303
|
-
}, /* @__PURE__ */
|
|
1319
|
+
}, /* @__PURE__ */ React15.createElement(Tooltip2.Arrow, null), /* @__PURE__ */ React15.createElement(List2, {
|
|
1304
1320
|
classNames: "max-h-56 overflow-y-auto"
|
|
1305
|
-
}, members.map((member) => /* @__PURE__ */
|
|
1321
|
+
}, members.map((member) => /* @__PURE__ */ React15.createElement(ListItem.Root, {
|
|
1306
1322
|
key: member.identity.identityKey.toHex(),
|
|
1307
1323
|
classNames: "flex gap-2 items-center cursor-pointer mbe-2",
|
|
1308
1324
|
onClick: () => onMemberClick?.(member),
|
|
1309
1325
|
"data-testid": "identity-list-item"
|
|
1310
|
-
}, /* @__PURE__ */
|
|
1326
|
+
}, /* @__PURE__ */ React15.createElement(PrensenceAvatar, {
|
|
1311
1327
|
identity: member.identity,
|
|
1312
1328
|
showName: true,
|
|
1313
1329
|
match: member.currentlyAttended
|
|
@@ -1317,10 +1333,10 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
|
|
|
1317
1333
|
const Root = group ? AvatarGroupItem.Root : Avatar.Root;
|
|
1318
1334
|
const status = match ? "current" : "active";
|
|
1319
1335
|
const fallbackValue = keyToFallback(identity.identityKey);
|
|
1320
|
-
return /* @__PURE__ */
|
|
1336
|
+
return /* @__PURE__ */ React15.createElement(Root, {
|
|
1321
1337
|
status,
|
|
1322
1338
|
hue: identity.profile?.data?.hue || fallbackValue.hue
|
|
1323
|
-
}, /* @__PURE__ */
|
|
1339
|
+
}, /* @__PURE__ */ React15.createElement(Avatar.Frame, {
|
|
1324
1340
|
"data-testid": "spacePlugin.presence.member",
|
|
1325
1341
|
"data-status": status,
|
|
1326
1342
|
...index ? {
|
|
@@ -1329,9 +1345,9 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
|
|
|
1329
1345
|
}
|
|
1330
1346
|
} : {},
|
|
1331
1347
|
onClick: () => onClick?.()
|
|
1332
|
-
}, /* @__PURE__ */
|
|
1348
|
+
}, /* @__PURE__ */ React15.createElement(Avatar.Fallback, {
|
|
1333
1349
|
text: identity.profile?.data?.emoji || fallbackValue.emoji
|
|
1334
|
-
})), showName && /* @__PURE__ */
|
|
1350
|
+
})), showName && /* @__PURE__ */ React15.createElement(Avatar.Label, {
|
|
1335
1351
|
classNames: "text-sm truncate pli-2"
|
|
1336
1352
|
}, getName(identity)));
|
|
1337
1353
|
};
|
|
@@ -1342,37 +1358,36 @@ var SmallPresenceLive = ({ viewers }) => {
|
|
|
1342
1358
|
return () => clearInterval(interval);
|
|
1343
1359
|
}, []);
|
|
1344
1360
|
const activeViewers = viewers ? Array.from(viewers.values()).filter(({ lastSeen }) => moment - lastSeen < ACTIVITY_DURATION) : [];
|
|
1345
|
-
return /* @__PURE__ */
|
|
1361
|
+
return /* @__PURE__ */ React15.createElement(SmallPresence, {
|
|
1346
1362
|
count: activeViewers.length
|
|
1347
1363
|
});
|
|
1348
1364
|
};
|
|
1349
1365
|
var SmallPresence = ({ count }) => {
|
|
1350
1366
|
const { t } = useTranslation14(SPACE_PLUGIN);
|
|
1351
|
-
return /* @__PURE__ */
|
|
1367
|
+
return /* @__PURE__ */ React15.createElement(Tooltip2.Root, null, /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, {
|
|
1352
1368
|
asChild: true
|
|
1353
|
-
}, /* @__PURE__ */
|
|
1369
|
+
}, /* @__PURE__ */ React15.createElement(AttentionGlyph, {
|
|
1354
1370
|
presence: count > 1 ? "many" : count === 1 ? "one" : "none",
|
|
1355
1371
|
classNames: "self-center mie-1"
|
|
1356
|
-
})), /* @__PURE__ */
|
|
1372
|
+
})), /* @__PURE__ */ React15.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React15.createElement(Tooltip2.Content, {
|
|
1357
1373
|
side: "bottom",
|
|
1358
1374
|
classNames: "z-[70]"
|
|
1359
|
-
}, /* @__PURE__ */
|
|
1375
|
+
}, /* @__PURE__ */ React15.createElement("span", null, t("presence label", {
|
|
1360
1376
|
count
|
|
1361
|
-
})), /* @__PURE__ */
|
|
1377
|
+
})), /* @__PURE__ */ React15.createElement(Tooltip2.Arrow, null))));
|
|
1362
1378
|
};
|
|
1363
1379
|
|
|
1364
1380
|
// packages/plugins/plugin-space/src/components/SpaceSettings.tsx
|
|
1365
|
-
import
|
|
1366
|
-
import { useIntentDispatcher as useIntentDispatcher2
|
|
1381
|
+
import React16 from "react";
|
|
1382
|
+
import { useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
|
|
1367
1383
|
import { SettingsValue } from "@dxos/plugin-settings";
|
|
1368
|
-
import { Input as Input3,
|
|
1384
|
+
import { Input as Input3, useTranslation as useTranslation15 } from "@dxos/react-ui";
|
|
1369
1385
|
var SpaceSettings = ({ settings }) => {
|
|
1370
1386
|
const { t } = useTranslation15(SPACE_PLUGIN);
|
|
1371
1387
|
const dispatch = useIntentDispatcher2();
|
|
1372
|
-
|
|
1373
|
-
return /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(SettingsValue, {
|
|
1388
|
+
return /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(SettingsValue, {
|
|
1374
1389
|
label: t("show hidden spaces label")
|
|
1375
|
-
}, /* @__PURE__ */
|
|
1390
|
+
}, /* @__PURE__ */ React16.createElement(Input3.Switch, {
|
|
1376
1391
|
checked: settings.showHidden,
|
|
1377
1392
|
onCheckedChange: (checked) => dispatch({
|
|
1378
1393
|
plugin: SPACE_PLUGIN,
|
|
@@ -1381,307 +1396,7 @@ var SpaceSettings = ({ settings }) => {
|
|
|
1381
1396
|
state: !!checked
|
|
1382
1397
|
}
|
|
1383
1398
|
})
|
|
1384
|
-
}))
|
|
1385
|
-
label: t("default on space create label")
|
|
1386
|
-
}, /* @__PURE__ */ React15.createElement(Select.Root, {
|
|
1387
|
-
value: settings.onSpaceCreate,
|
|
1388
|
-
onValueChange: (value) => {
|
|
1389
|
-
settings.onSpaceCreate = value;
|
|
1390
|
-
}
|
|
1391
|
-
}, /* @__PURE__ */ React15.createElement(Select.TriggerButton, null), /* @__PURE__ */ React15.createElement(Select.Portal, null, /* @__PURE__ */ React15.createElement(Select.Content, null, /* @__PURE__ */ React15.createElement(Select.Viewport, null, plugins.map(({ provides: { space: { onSpaceCreate } } }) => /* @__PURE__ */ React15.createElement(Select.Option, {
|
|
1392
|
-
key: onSpaceCreate.action,
|
|
1393
|
-
value: onSpaceCreate.action
|
|
1394
|
-
}, toLocalizedString2(onSpaceCreate.label, t)))))))));
|
|
1395
|
-
};
|
|
1396
|
-
|
|
1397
|
-
// packages/plugins/plugin-space/src/components/SaveStatus.tsx
|
|
1398
|
-
import React16, { useEffect as useEffect5, useState as useState8 } from "react";
|
|
1399
|
-
import { Context } from "@dxos/context";
|
|
1400
|
-
import { StatusBar } from "@dxos/plugin-status-bar";
|
|
1401
|
-
import { useClient as useClient4 } from "@dxos/react-client";
|
|
1402
|
-
import { Icon, useTranslation as useTranslation16 } from "@dxos/react-ui";
|
|
1403
|
-
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SaveStatus.tsx";
|
|
1404
|
-
var SaveStatus = () => {
|
|
1405
|
-
const { t } = useTranslation16(SPACE_PLUGIN);
|
|
1406
|
-
const client = useClient4();
|
|
1407
|
-
const [state, setState] = useState8("saved");
|
|
1408
|
-
useEffect5(() => {
|
|
1409
|
-
return createClientSaveTracker(client, (state2) => {
|
|
1410
|
-
setState(state2);
|
|
1411
|
-
});
|
|
1412
|
-
}, []);
|
|
1413
|
-
return /* @__PURE__ */ React16.createElement(StatusBar.Item, {
|
|
1414
|
-
title: state === "saving" ? t("saving label") : t("saved label")
|
|
1415
|
-
}, /* @__PURE__ */ React16.createElement(Icon, {
|
|
1416
|
-
icon: state === "saving" ? "ph--arrows-clockwise--regular" : "ph--check-circle--regular",
|
|
1417
|
-
size: 4
|
|
1418
|
-
}));
|
|
1419
|
-
};
|
|
1420
|
-
var createClientSaveTracker = (client, cb) => {
|
|
1421
|
-
const unsubscribeCallbacks = {};
|
|
1422
|
-
const state = {};
|
|
1423
|
-
const install = (spaces) => {
|
|
1424
|
-
for (const space of spaces) {
|
|
1425
|
-
if (state[space.id]) {
|
|
1426
|
-
continue;
|
|
1427
|
-
}
|
|
1428
|
-
state[space.id] = "saved";
|
|
1429
|
-
unsubscribeCallbacks[space.id] = createSpaceSaveTracker(space, (s) => {
|
|
1430
|
-
state[space.id] = s;
|
|
1431
|
-
cb(Object.values(state).some((s2) => s2 === "saving") ? "saving" : "saved");
|
|
1432
|
-
});
|
|
1433
|
-
}
|
|
1434
|
-
};
|
|
1435
|
-
client.spaces.subscribe((spaces) => {
|
|
1436
|
-
install(spaces);
|
|
1437
|
-
});
|
|
1438
|
-
install(client.spaces.get());
|
|
1439
|
-
return () => {
|
|
1440
|
-
for (const unsubscribe of Object.values(unsubscribeCallbacks)) {
|
|
1441
|
-
unsubscribe();
|
|
1442
|
-
}
|
|
1443
|
-
};
|
|
1444
|
-
};
|
|
1445
|
-
var createSpaceSaveTracker = (space, cb) => {
|
|
1446
|
-
const ctx = new Context(void 0, {
|
|
1447
|
-
F: __dxlog_file3,
|
|
1448
|
-
L: 64
|
|
1449
|
-
});
|
|
1450
|
-
void space.waitUntilReady().then(() => {
|
|
1451
|
-
if (ctx.disposed) {
|
|
1452
|
-
return;
|
|
1453
|
-
}
|
|
1454
|
-
let hasUnsavedChanges = false;
|
|
1455
|
-
let lastFlushPromise;
|
|
1456
|
-
space.crud.saveStateChanged.on(ctx, ({ unsavedDocuments }) => {
|
|
1457
|
-
hasUnsavedChanges = unsavedDocuments.length > 0;
|
|
1458
|
-
});
|
|
1459
|
-
space.crud.saveStateChanged.debounce(500).on(ctx, () => {
|
|
1460
|
-
if (hasUnsavedChanges) {
|
|
1461
|
-
lastFlushPromise = void 0;
|
|
1462
|
-
cb("saving");
|
|
1463
|
-
} else {
|
|
1464
|
-
const flushPromise = space.crud.flush();
|
|
1465
|
-
lastFlushPromise = flushPromise;
|
|
1466
|
-
void flushPromise.then(() => {
|
|
1467
|
-
if (lastFlushPromise === flushPromise) {
|
|
1468
|
-
cb("saved");
|
|
1469
|
-
}
|
|
1470
|
-
});
|
|
1471
|
-
}
|
|
1472
|
-
});
|
|
1473
|
-
});
|
|
1474
|
-
return () => {
|
|
1475
|
-
void ctx.dispose();
|
|
1476
|
-
};
|
|
1477
|
-
};
|
|
1478
|
-
|
|
1479
|
-
// packages/plugins/plugin-space/src/components/SyncStatus/SyncStatus.tsx
|
|
1480
|
-
import React17, { useEffect as useEffect7, useState as useState10 } from "react";
|
|
1481
|
-
import { StatusBar as StatusBar2 } from "@dxos/plugin-status-bar";
|
|
1482
|
-
import { Icon as Icon2, Popover as Popover3, useTranslation as useTranslation17 } from "@dxos/react-ui";
|
|
1483
|
-
import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
|
|
1484
|
-
import { mx as mx9 } from "@dxos/react-ui-theme";
|
|
1485
|
-
|
|
1486
|
-
// packages/plugins/plugin-space/src/components/SyncStatus/types.ts
|
|
1487
|
-
import { useEffect as useEffect6, useState as useState9 } from "react";
|
|
1488
|
-
import { Context as Context2 } from "@dxos/context";
|
|
1489
|
-
import { EdgeService } from "@dxos/protocols";
|
|
1490
|
-
import { useClient as useClient5 } from "@dxos/react-client";
|
|
1491
|
-
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/types.ts";
|
|
1492
|
-
var createEmptyEdgeSyncState = () => ({
|
|
1493
|
-
missingOnLocal: 0,
|
|
1494
|
-
missingOnRemote: 0,
|
|
1495
|
-
localDocumentCount: 0,
|
|
1496
|
-
remoteDocumentCount: 0,
|
|
1497
|
-
differentDocuments: 0
|
|
1498
|
-
});
|
|
1499
|
-
var getSyncSummary = (syncMap) => {
|
|
1500
|
-
return Object.entries(syncMap).reduce((summary, [_spaceId, peerState]) => {
|
|
1501
|
-
summary.missingOnLocal += peerState.missingOnLocal;
|
|
1502
|
-
summary.missingOnRemote += peerState.missingOnRemote;
|
|
1503
|
-
summary.localDocumentCount += peerState.localDocumentCount;
|
|
1504
|
-
summary.remoteDocumentCount += peerState.remoteDocumentCount;
|
|
1505
|
-
summary.differentDocuments += peerState.differentDocuments;
|
|
1506
|
-
return summary;
|
|
1507
|
-
}, createEmptyEdgeSyncState());
|
|
1508
|
-
};
|
|
1509
|
-
var isEdgePeerId = (peerId, spaceId) => peerId.startsWith(`${EdgeService.AUTOMERGE_REPLICATOR}:${spaceId}`);
|
|
1510
|
-
var useSyncState = () => {
|
|
1511
|
-
const client = useClient5();
|
|
1512
|
-
const [spaceState, setSpaceState] = useState9({});
|
|
1513
|
-
useEffect6(() => {
|
|
1514
|
-
const ctx = new Context2(void 0, {
|
|
1515
|
-
F: __dxlog_file4,
|
|
1516
|
-
L: 48
|
|
1517
|
-
});
|
|
1518
|
-
const createSubscriptions = (spaces) => {
|
|
1519
|
-
for (const space of spaces) {
|
|
1520
|
-
if (spaceState[space.id]) {
|
|
1521
|
-
continue;
|
|
1522
|
-
}
|
|
1523
|
-
ctx.onDispose(space.crud.subscribeToSyncState(ctx, ({ peers = [] }) => {
|
|
1524
|
-
const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));
|
|
1525
|
-
if (syncState) {
|
|
1526
|
-
setSpaceState((spaceState2) => ({
|
|
1527
|
-
...spaceState2,
|
|
1528
|
-
[space.id]: syncState
|
|
1529
|
-
}));
|
|
1530
|
-
}
|
|
1531
|
-
}));
|
|
1532
|
-
}
|
|
1533
|
-
};
|
|
1534
|
-
createSubscriptions(client.spaces.get());
|
|
1535
|
-
client.spaces.subscribe((spaces) => {
|
|
1536
|
-
createSubscriptions(spaces);
|
|
1537
|
-
});
|
|
1538
|
-
return () => {
|
|
1539
|
-
void ctx.dispose();
|
|
1540
|
-
};
|
|
1541
|
-
}, [
|
|
1542
|
-
client
|
|
1543
|
-
]);
|
|
1544
|
-
return spaceState;
|
|
1545
|
-
};
|
|
1546
|
-
|
|
1547
|
-
// packages/plugins/plugin-space/src/components/SyncStatus/SyncStatus.tsx
|
|
1548
|
-
var SYNC_STALLED_TIMEOUT = 5e3;
|
|
1549
|
-
var styles = {
|
|
1550
|
-
barBg: "bg-neutral-50 dark:bg-green-900 text-black",
|
|
1551
|
-
barFg: "bg-neutral-100 bg-green-500",
|
|
1552
|
-
barHover: "dark:hover:bg-green-500"
|
|
1553
|
-
};
|
|
1554
|
-
var SyncStatus = () => {
|
|
1555
|
-
const state = useSyncState();
|
|
1556
|
-
return /* @__PURE__ */ React17.createElement(SyncStatusIndicator, {
|
|
1557
|
-
state
|
|
1558
|
-
});
|
|
1559
|
-
};
|
|
1560
|
-
var SyncStatusIndicator = ({ state }) => {
|
|
1561
|
-
const summary = getSyncSummary(state);
|
|
1562
|
-
const offline = false;
|
|
1563
|
-
const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
|
|
1564
|
-
const needsToDownload = summary.differentDocuments > 0 || summary.missingOnLocal > 0;
|
|
1565
|
-
const [classNames, setClassNames] = useState10();
|
|
1566
|
-
useEffect7(() => {
|
|
1567
|
-
setClassNames(void 0);
|
|
1568
|
-
if (!needsToUpload && !needsToDownload) {
|
|
1569
|
-
return;
|
|
1570
|
-
}
|
|
1571
|
-
const t = setTimeout(() => {
|
|
1572
|
-
setClassNames("text-orange-500");
|
|
1573
|
-
}, SYNC_STALLED_TIMEOUT);
|
|
1574
|
-
return () => clearTimeout(t);
|
|
1575
|
-
}, [
|
|
1576
|
-
needsToUpload,
|
|
1577
|
-
needsToDownload
|
|
1578
|
-
]);
|
|
1579
|
-
return /* @__PURE__ */ React17.createElement(StatusBar2.Item, null, /* @__PURE__ */ React17.createElement(Popover3.Root, null, /* @__PURE__ */ React17.createElement(Popover3.Trigger, null, /* @__PURE__ */ React17.createElement(Icon2, {
|
|
1580
|
-
icon: offline ? "ph--cloud-x--regular" : needsToUpload ? "ph--cloud-arrow-up--regular" : needsToDownload ? "ph--cloud-arrow-down--regular" : "ph--cloud-check--regular",
|
|
1581
|
-
size: 4,
|
|
1582
|
-
classNames
|
|
1583
|
-
})), /* @__PURE__ */ React17.createElement(Popover3.Content, null, /* @__PURE__ */ React17.createElement(SyncStatusDetail, {
|
|
1584
|
-
state,
|
|
1585
|
-
summary,
|
|
1586
|
-
debug: false
|
|
1587
|
-
}))));
|
|
1588
|
-
};
|
|
1589
|
-
var SyncStatusDetail = ({ classNames, state, summary, debug }) => {
|
|
1590
|
-
const { t } = useTranslation17(SPACE_PLUGIN);
|
|
1591
|
-
const entries = Object.entries(state).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
|
|
1592
|
-
return /* @__PURE__ */ React17.createElement("div", {
|
|
1593
|
-
className: mx9("flex flex-col text-xs min-w-[16rem]", classNames)
|
|
1594
|
-
}, /* @__PURE__ */ React17.createElement("h1", {
|
|
1595
|
-
className: "p-2"
|
|
1596
|
-
}, t("sync status title")), /* @__PURE__ */ React17.createElement("div", {
|
|
1597
|
-
className: "flex flex-col gap-[2px] my-[2px]"
|
|
1598
|
-
}, entries.map(([spaceId, state2]) => /* @__PURE__ */ React17.createElement(SpaceRow, {
|
|
1599
|
-
key: spaceId,
|
|
1600
|
-
spaceId,
|
|
1601
|
-
state: state2
|
|
1602
|
-
}))), debug && /* @__PURE__ */ React17.createElement(SyntaxHighlighter, {
|
|
1603
|
-
language: "json"
|
|
1604
|
-
}, JSON.stringify(summary, null, 2)));
|
|
1605
|
-
};
|
|
1606
|
-
var useActive = (count) => {
|
|
1607
|
-
const [current, setCurrent] = useState10(count);
|
|
1608
|
-
const [active, setActive] = useState10(false);
|
|
1609
|
-
useEffect7(() => {
|
|
1610
|
-
let t;
|
|
1611
|
-
if (count !== current) {
|
|
1612
|
-
setActive(true);
|
|
1613
|
-
setCurrent(count);
|
|
1614
|
-
t && clearTimeout(t);
|
|
1615
|
-
t = setTimeout(() => {
|
|
1616
|
-
setActive(false);
|
|
1617
|
-
}, SYNC_STALLED_TIMEOUT);
|
|
1618
|
-
}
|
|
1619
|
-
return () => {
|
|
1620
|
-
setActive(false);
|
|
1621
|
-
clearTimeout(t);
|
|
1622
|
-
};
|
|
1623
|
-
}, [
|
|
1624
|
-
count,
|
|
1625
|
-
current
|
|
1626
|
-
]);
|
|
1627
|
-
return active;
|
|
1628
|
-
};
|
|
1629
|
-
var SpaceRow = ({ spaceId, state: { localDocumentCount, remoteDocumentCount, missingOnLocal, missingOnRemote } }) => {
|
|
1630
|
-
const downActive = useActive(localDocumentCount);
|
|
1631
|
-
const upActive = useActive(remoteDocumentCount);
|
|
1632
|
-
return /* @__PURE__ */ React17.createElement("div", {
|
|
1633
|
-
className: mx9("flex items-center mx-[2px] gap-[2px] cursor-pointer", styles.barHover),
|
|
1634
|
-
title: spaceId,
|
|
1635
|
-
onClick: () => {
|
|
1636
|
-
void navigator.clipboard.writeText(spaceId);
|
|
1637
|
-
}
|
|
1638
|
-
}, /* @__PURE__ */ React17.createElement(Icon2, {
|
|
1639
|
-
icon: "ph--arrow-fat-line-left--regular",
|
|
1640
|
-
size: 3,
|
|
1641
|
-
classNames: mx9(downActive && "animate-[pulse_1s_infinite]")
|
|
1642
|
-
}), /* @__PURE__ */ React17.createElement(Candle, {
|
|
1643
|
-
up: {
|
|
1644
|
-
count: remoteDocumentCount,
|
|
1645
|
-
total: remoteDocumentCount + missingOnRemote
|
|
1646
|
-
},
|
|
1647
|
-
down: {
|
|
1648
|
-
count: localDocumentCount,
|
|
1649
|
-
total: localDocumentCount + missingOnLocal
|
|
1650
|
-
},
|
|
1651
|
-
title: spaceId
|
|
1652
|
-
}), /* @__PURE__ */ React17.createElement(Icon2, {
|
|
1653
|
-
icon: "ph--arrow-fat-line-right--regular",
|
|
1654
|
-
size: 3,
|
|
1655
|
-
classNames: mx9(upActive && "animate-[pulse_1s_step-start_infinite]")
|
|
1656
|
-
}));
|
|
1657
|
-
};
|
|
1658
|
-
var Candle = ({ classNames, up, down }) => {
|
|
1659
|
-
return /* @__PURE__ */ React17.createElement("div", {
|
|
1660
|
-
className: mx9("grid grid-cols-[1fr_2rem_1fr] w-full h-3", classNames)
|
|
1661
|
-
}, /* @__PURE__ */ React17.createElement(Bar, {
|
|
1662
|
-
classNames: "justify-end",
|
|
1663
|
-
...up
|
|
1664
|
-
}), /* @__PURE__ */ React17.createElement("div", {
|
|
1665
|
-
className: "relative"
|
|
1666
|
-
}, /* @__PURE__ */ React17.createElement("div", {
|
|
1667
|
-
className: mx9("absolute inset-0 flex items-center justify-center text-xs", styles.barBg)
|
|
1668
|
-
}, up.total)), /* @__PURE__ */ React17.createElement(Bar, down));
|
|
1669
|
-
};
|
|
1670
|
-
var Bar = ({ classNames, count, total }) => {
|
|
1671
|
-
let p = count / total * 100;
|
|
1672
|
-
if (count < total) {
|
|
1673
|
-
p = Math.min(p, 95);
|
|
1674
|
-
}
|
|
1675
|
-
return /* @__PURE__ */ React17.createElement("div", {
|
|
1676
|
-
className: mx9("relative flex w-full", styles.barBg, classNames)
|
|
1677
|
-
}, /* @__PURE__ */ React17.createElement("div", {
|
|
1678
|
-
className: mx9("shrink-0", styles.barFg),
|
|
1679
|
-
style: {
|
|
1680
|
-
width: `${p}%`
|
|
1681
|
-
}
|
|
1682
|
-
}), count !== total && /* @__PURE__ */ React17.createElement("div", {
|
|
1683
|
-
className: "absolute top-0 bottom-0 flex items-center mx-0.5 text-black text-xs"
|
|
1684
|
-
}, count));
|
|
1399
|
+
})));
|
|
1685
1400
|
};
|
|
1686
1401
|
|
|
1687
1402
|
// packages/plugins/plugin-space/src/translations.ts
|
|
@@ -1763,25 +1478,21 @@ var translations_default = [
|
|
|
1763
1478
|
"space limit close label": "Close",
|
|
1764
1479
|
"remove deleted objects label": "Cleanup",
|
|
1765
1480
|
"remove deleted objects alt": "Permanently remove deleted objects to free up space.",
|
|
1766
|
-
"copy link label": "Copy link"
|
|
1767
|
-
"default on space create label": "On space create",
|
|
1768
|
-
"sync status title": "Sync status"
|
|
1481
|
+
"copy link label": "Copy link"
|
|
1769
1482
|
}
|
|
1770
1483
|
}
|
|
1771
1484
|
}
|
|
1772
1485
|
];
|
|
1773
1486
|
|
|
1774
1487
|
// packages/plugins/plugin-space/src/SpacePlugin.tsx
|
|
1775
|
-
var
|
|
1488
|
+
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/SpacePlugin.tsx";
|
|
1776
1489
|
var ACTIVE_NODE_BROADCAST_INTERVAL = 3e4;
|
|
1777
1490
|
var OBJECT_ID_LENGTH = 60;
|
|
1778
1491
|
var SPACE_MAX_OBJECTS = 500;
|
|
1779
1492
|
var DIRECTORY_TYPE = "text/directory";
|
|
1780
1493
|
var parseSpacePlugin = (plugin) => Array.isArray(plugin?.provides.space?.enabled) ? plugin : void 0;
|
|
1781
1494
|
var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
1782
|
-
const settings = new LocalStorageStore(SPACE_PLUGIN
|
|
1783
|
-
onSpaceCreate: "dxos.org/plugin/markdown/action/create"
|
|
1784
|
-
});
|
|
1495
|
+
const settings = new LocalStorageStore(SPACE_PLUGIN);
|
|
1785
1496
|
const state = new LocalStorageStore(SPACE_PLUGIN, {
|
|
1786
1497
|
awaiting: void 0,
|
|
1787
1498
|
spaceNames: {},
|
|
@@ -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
|
});
|
|
@@ -1971,7 +1682,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
1971
1682
|
...translations_default,
|
|
1972
1683
|
osTranslations
|
|
1973
1684
|
],
|
|
1974
|
-
root: () => state.values.awaiting ? /* @__PURE__ */
|
|
1685
|
+
root: () => state.values.awaiting ? /* @__PURE__ */ React17.createElement(AwaitingObject, {
|
|
1975
1686
|
id: state.values.awaiting
|
|
1976
1687
|
}) : null,
|
|
1977
1688
|
metadata: {
|
|
@@ -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,
|
|
@@ -2003,33 +1715,33 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2003
1715
|
switch (role) {
|
|
2004
1716
|
case "article":
|
|
2005
1717
|
case "main":
|
|
2006
|
-
return isSpace2(primary) && primary.state.get() === SpaceState3.SPACE_READY ? /* @__PURE__ */
|
|
1718
|
+
return isSpace2(primary) && primary.state.get() === SpaceState3.SPACE_READY ? /* @__PURE__ */ React17.createElement(Surface2, {
|
|
2007
1719
|
data: {
|
|
2008
1720
|
active: primary.properties[CollectionType.typename]
|
|
2009
1721
|
},
|
|
2010
1722
|
role,
|
|
2011
1723
|
...rest
|
|
2012
1724
|
}) : primary instanceof CollectionType ? {
|
|
2013
|
-
node: /* @__PURE__ */
|
|
1725
|
+
node: /* @__PURE__ */ React17.createElement(CollectionMain, {
|
|
2014
1726
|
collection: primary
|
|
2015
1727
|
}),
|
|
2016
1728
|
disposition: "fallback"
|
|
2017
|
-
} : typeof primary === "string" && primary.length === OBJECT_ID_LENGTH ? /* @__PURE__ */
|
|
1729
|
+
} : typeof primary === "string" && primary.length === OBJECT_ID_LENGTH ? /* @__PURE__ */ React17.createElement(MissingObject, {
|
|
2018
1730
|
id: primary
|
|
2019
1731
|
}) : null;
|
|
2020
1732
|
// TODO(burdon): Add role name syntax to minimal plugin docs.
|
|
2021
1733
|
case "tree--empty":
|
|
2022
1734
|
switch (true) {
|
|
2023
1735
|
case data.plugin === SPACE_PLUGIN:
|
|
2024
|
-
return /* @__PURE__ */
|
|
1736
|
+
return /* @__PURE__ */ React17.createElement(EmptyTree, null);
|
|
2025
1737
|
case (isGraphNode(data.activeNode) && isSpace2(data.activeNode.data)):
|
|
2026
|
-
return /* @__PURE__ */
|
|
1738
|
+
return /* @__PURE__ */ React17.createElement(EmptySpace, null);
|
|
2027
1739
|
default:
|
|
2028
1740
|
return null;
|
|
2029
1741
|
}
|
|
2030
1742
|
case "dialog":
|
|
2031
1743
|
if (data.component === "dxos.org/plugin/space/InvitationManagerDialog") {
|
|
2032
|
-
return /* @__PURE__ */
|
|
1744
|
+
return /* @__PURE__ */ React17.createElement(Dialog.Content, null, /* @__PURE__ */ React17.createElement(ClipboardProvider2, null, /* @__PURE__ */ React17.createElement(InvitationManager, {
|
|
2033
1745
|
active: true,
|
|
2034
1746
|
...data.subject
|
|
2035
1747
|
})));
|
|
@@ -2038,20 +1750,20 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2038
1750
|
}
|
|
2039
1751
|
case "popover":
|
|
2040
1752
|
if (data.component === "dxos.org/plugin/space/RenameSpacePopover" && isSpace2(data.subject)) {
|
|
2041
|
-
return /* @__PURE__ */
|
|
1753
|
+
return /* @__PURE__ */ React17.createElement(PopoverRenameSpace, {
|
|
2042
1754
|
space: data.subject
|
|
2043
1755
|
});
|
|
2044
1756
|
}
|
|
2045
1757
|
if (data.component === "dxos.org/plugin/space/RenameObjectPopover" && isReactiveObject2(data.subject)) {
|
|
2046
|
-
return /* @__PURE__ */
|
|
1758
|
+
return /* @__PURE__ */ React17.createElement(PopoverRenameObject, {
|
|
2047
1759
|
object: data.subject
|
|
2048
1760
|
});
|
|
2049
1761
|
}
|
|
2050
1762
|
return null;
|
|
2051
1763
|
case "presence--glyph": {
|
|
2052
|
-
return isReactiveObject2(data.object) ? /* @__PURE__ */
|
|
1764
|
+
return isReactiveObject2(data.object) ? /* @__PURE__ */ React17.createElement(SmallPresenceLive, {
|
|
2053
1765
|
viewers: state.values.viewersByObject[fullyQualifiedId4(data.object)]
|
|
2054
|
-
}) : /* @__PURE__ */
|
|
1766
|
+
}) : /* @__PURE__ */ React17.createElement(SmallPresence, {
|
|
2055
1767
|
count: 0
|
|
2056
1768
|
});
|
|
2057
1769
|
}
|
|
@@ -2065,33 +1777,30 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2065
1777
|
const space = isSpace2(data.object) ? data.object : getSpace4(data.object);
|
|
2066
1778
|
const object = isSpace2(data.object) ? data.object.state.get() === SpaceState3.SPACE_READY ? space?.properties[CollectionType.typename] : void 0 : data.object;
|
|
2067
1779
|
return space && object ? {
|
|
2068
|
-
node: /* @__PURE__ */
|
|
1780
|
+
node: /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(SpacePresence, {
|
|
2069
1781
|
object
|
|
2070
|
-
}), space.properties[COMPOSER_SPACE_LOCK] ? null : /* @__PURE__ */
|
|
1782
|
+
}), space.properties[COMPOSER_SPACE_LOCK] ? null : /* @__PURE__ */ React17.createElement(ShareSpaceButton, {
|
|
2071
1783
|
spaceId: space.id
|
|
2072
1784
|
})),
|
|
2073
1785
|
disposition: "hoist"
|
|
2074
1786
|
} : null;
|
|
2075
1787
|
}
|
|
2076
1788
|
case "section":
|
|
2077
|
-
return data.object instanceof CollectionType ? /* @__PURE__ */
|
|
1789
|
+
return data.object instanceof CollectionType ? /* @__PURE__ */ React17.createElement(CollectionSection, {
|
|
2078
1790
|
collection: data.object
|
|
2079
1791
|
}) : null;
|
|
2080
1792
|
case "settings":
|
|
2081
|
-
return data.plugin === meta_default.id ? /* @__PURE__ */
|
|
1793
|
+
return data.plugin === meta_default.id ? /* @__PURE__ */ React17.createElement(SpaceSettings, {
|
|
2082
1794
|
settings: settings.values
|
|
2083
1795
|
}) : null;
|
|
2084
1796
|
case "menu-footer":
|
|
2085
1797
|
if (!isEchoObject2(data.object)) {
|
|
2086
1798
|
return null;
|
|
2087
1799
|
} else {
|
|
2088
|
-
return /* @__PURE__ */
|
|
1800
|
+
return /* @__PURE__ */ React17.createElement(MenuFooter, {
|
|
2089
1801
|
object: data.object
|
|
2090
1802
|
});
|
|
2091
1803
|
}
|
|
2092
|
-
case "status": {
|
|
2093
|
-
return /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(SyncStatus, null), /* @__PURE__ */ React18.createElement(SaveStatus, null));
|
|
2094
|
-
}
|
|
2095
1804
|
default:
|
|
2096
1805
|
return null;
|
|
2097
1806
|
}
|
|
@@ -2151,8 +1860,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2151
1860
|
spacesOrder.order = nextOrder.map(({ id }) => id);
|
|
2152
1861
|
} else {
|
|
2153
1862
|
log2.warn("spaces order object not found", void 0, {
|
|
2154
|
-
F:
|
|
2155
|
-
L:
|
|
1863
|
+
F: __dxlog_file3,
|
|
1864
|
+
L: 514,
|
|
2156
1865
|
S: void 0,
|
|
2157
1866
|
C: (f, a) => f(...a)
|
|
2158
1867
|
});
|
|
@@ -2188,7 +1897,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2188
1897
|
ns: SPACE_PLUGIN
|
|
2189
1898
|
}
|
|
2190
1899
|
],
|
|
2191
|
-
icon:
|
|
1900
|
+
icon: (props) => /* @__PURE__ */ React17.createElement(Plus2, props),
|
|
1901
|
+
iconSymbol: "ph--plus--regular",
|
|
2192
1902
|
disposition: "toolbar",
|
|
2193
1903
|
testId: "spacePlugin.createSpace"
|
|
2194
1904
|
}
|
|
@@ -2213,7 +1923,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2213
1923
|
ns: SPACE_PLUGIN
|
|
2214
1924
|
}
|
|
2215
1925
|
],
|
|
2216
|
-
icon:
|
|
1926
|
+
icon: (props) => /* @__PURE__ */ React17.createElement(SignIn, props),
|
|
1927
|
+
iconSymbol: "ph--sign-in--regular",
|
|
2217
1928
|
testId: "spacePlugin.joinSpace"
|
|
2218
1929
|
}
|
|
2219
1930
|
}
|
|
@@ -2448,25 +2159,6 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2448
2159
|
}
|
|
2449
2160
|
},
|
|
2450
2161
|
intents: [
|
|
2451
|
-
...settings.values.onSpaceCreate ? [
|
|
2452
|
-
[
|
|
2453
|
-
{
|
|
2454
|
-
action: settings.values.onSpaceCreate,
|
|
2455
|
-
data: {
|
|
2456
|
-
space
|
|
2457
|
-
}
|
|
2458
|
-
},
|
|
2459
|
-
{
|
|
2460
|
-
action: SpaceAction.ADD_OBJECT,
|
|
2461
|
-
data: {
|
|
2462
|
-
target: space
|
|
2463
|
-
}
|
|
2464
|
-
},
|
|
2465
|
-
{
|
|
2466
|
-
action: NavigationAction3.EXPOSE
|
|
2467
|
-
}
|
|
2468
|
-
]
|
|
2469
|
-
] : [],
|
|
2470
2162
|
[
|
|
2471
2163
|
{
|
|
2472
2164
|
action: ObservabilityAction.SEND_EVENT,
|
|
@@ -2687,7 +2379,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2687
2379
|
title: translations_default[0]["en-US"][SPACE_PLUGIN]["space limit label"],
|
|
2688
2380
|
description: translations_default[0]["en-US"][SPACE_PLUGIN]["space limit description"],
|
|
2689
2381
|
duration: 5e3,
|
|
2690
|
-
icon:
|
|
2382
|
+
icon: (props) => /* @__PURE__ */ React17.createElement(Warning2, props),
|
|
2383
|
+
iconSymbol: "ph--warning--regular",
|
|
2691
2384
|
actionLabel: translations_default[0]["en-US"][SPACE_PLUGIN]["remove deleted objects label"],
|
|
2692
2385
|
actionAlt: translations_default[0]["en-US"][SPACE_PLUGIN]["remove deleted objects alt"],
|
|
2693
2386
|
// TODO(wittjosiah): Use OS namespace.
|
|
@@ -2729,7 +2422,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2729
2422
|
}
|
|
2730
2423
|
return {
|
|
2731
2424
|
data: {
|
|
2732
|
-
id:
|
|
2425
|
+
id: object.id,
|
|
2733
2426
|
object,
|
|
2734
2427
|
activeParts: {
|
|
2735
2428
|
main: [
|
|
@@ -2782,7 +2475,8 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2782
2475
|
data: {
|
|
2783
2476
|
activeParts: {
|
|
2784
2477
|
main: deletionData.wasActive,
|
|
2785
|
-
sidebar: deletionData.wasActive
|
|
2478
|
+
sidebar: deletionData.wasActive,
|
|
2479
|
+
complementary: deletionData.wasActive
|
|
2786
2480
|
}
|
|
2787
2481
|
}
|
|
2788
2482
|
});
|
|
@@ -2906,7 +2600,6 @@ export {
|
|
|
2906
2600
|
EmptyTree,
|
|
2907
2601
|
FullPresence,
|
|
2908
2602
|
MenuFooter,
|
|
2909
|
-
MessageState,
|
|
2910
2603
|
MessageType,
|
|
2911
2604
|
MissingObject,
|
|
2912
2605
|
PersistenceStatus,
|
|
@@ -2918,7 +2611,6 @@ export {
|
|
|
2918
2611
|
SPACE_PLUGIN,
|
|
2919
2612
|
SPACE_PLUGIN_SHORT_ID,
|
|
2920
2613
|
SPACE_TYPE,
|
|
2921
|
-
SaveStatus,
|
|
2922
2614
|
ShareSpaceButton,
|
|
2923
2615
|
ShareSpaceButtonImpl,
|
|
2924
2616
|
SmallPresence,
|
|
@@ -2928,9 +2620,6 @@ export {
|
|
|
2928
2620
|
SpacePlugin,
|
|
2929
2621
|
SpacePresence,
|
|
2930
2622
|
SpaceSettings,
|
|
2931
|
-
SyncStatus,
|
|
2932
|
-
SyncStatusDetail,
|
|
2933
|
-
SyncStatusIndicator,
|
|
2934
2623
|
ThreadStatus,
|
|
2935
2624
|
ThreadType,
|
|
2936
2625
|
cloneObject,
|
|
@@ -2945,7 +2634,6 @@ export {
|
|
|
2945
2634
|
getNestedObjects,
|
|
2946
2635
|
getSpaceDisplayName,
|
|
2947
2636
|
memoizeQuery,
|
|
2948
|
-
parseSpaceInitPlugin,
|
|
2949
2637
|
parseSpacePlugin,
|
|
2950
2638
|
translations_default as translations
|
|
2951
2639
|
};
|