@dxos/plugin-space 0.6.12-main.89e9959 → 0.6.12-main.ac23639
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-LZEGRS7H.mjs → chunk-AVLRQF6L.mjs} +1 -1
- package/dist/lib/browser/chunk-AVLRQF6L.mjs.map +7 -0
- package/dist/lib/browser/{chunk-WBMH5WIP.mjs → chunk-QK5I2EPF.mjs} +10 -3
- package/dist/lib/browser/chunk-QK5I2EPF.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +266 -235
- 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 +1 -1
- package/dist/lib/node/{chunk-GF3SRAQM.cjs → chunk-HE2GHO6Z.cjs} +13 -6
- package/dist/lib/node/chunk-HE2GHO6Z.cjs.map +7 -0
- package/dist/lib/node/{chunk-6CNYF6YU.cjs → chunk-P4XUXM7Y.cjs} +4 -4
- package/dist/lib/node/chunk-P4XUXM7Y.cjs.map +7 -0
- package/dist/lib/node/index.cjs +457 -425
- 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 +11 -11
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/{chunk-N5VC55UM.mjs → chunk-2TR4WD6U.mjs} +10 -3
- package/dist/lib/node-esm/chunk-2TR4WD6U.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-GM2YUC77.mjs → chunk-YPQGKWHJ.mjs} +1 -1
- package/dist/lib/node-esm/chunk-YPQGKWHJ.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +266 -235
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/meta.mjs +1 -1
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/SpacePlugin.d.ts.map +1 -1
- package/dist/types/src/components/FallbackSettings.d.ts +8 -0
- package/dist/types/src/components/FallbackSettings.d.ts.map +1 -0
- package/dist/types/src/components/ShareSpaceButton.stories.d.ts +2 -0
- package/dist/types/src/components/ShareSpaceButton.stories.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.stories.d.ts +2 -0
- package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +2 -0
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -2
- 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 +2 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/thread.d.ts +1 -0
- package/dist/types/src/types/thread.d.ts.map +1 -1
- package/package.json +33 -33
- package/src/SpacePlugin.tsx +51 -13
- package/src/components/FallbackSettings.tsx +35 -0
- package/src/components/index.ts +1 -2
- package/src/meta.ts +3 -1
- package/src/translations.ts +2 -0
- package/src/types/collection.ts +1 -1
- package/src/types/thread.ts +2 -1
- package/dist/lib/browser/chunk-LZEGRS7H.mjs.map +0 -7
- package/dist/lib/browser/chunk-WBMH5WIP.mjs.map +0 -7
- package/dist/lib/node/chunk-6CNYF6YU.cjs.map +0 -7
- package/dist/lib/node/chunk-GF3SRAQM.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-GM2YUC77.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-N5VC55UM.mjs.map +0 -7
- package/dist/types/src/components/EmptySpace.d.ts +0 -3
- package/dist/types/src/components/EmptySpace.d.ts.map +0 -1
- package/dist/types/src/components/EmptyTree.d.ts +0 -3
- package/dist/types/src/components/EmptyTree.d.ts.map +0 -1
- package/src/components/EmptySpace.tsx +0 -25
- package/src/components/EmptyTree.tsx +0 -25
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
SPACE_PLUGIN_SHORT_ID,
|
|
4
4
|
SpaceAction,
|
|
5
5
|
meta_default
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-AVLRQF6L.mjs";
|
|
7
7
|
import {
|
|
8
8
|
ActorSchema,
|
|
9
9
|
ChannelType,
|
|
@@ -15,11 +15,11 @@ import {
|
|
|
15
15
|
ThreadStatus,
|
|
16
16
|
ThreadType,
|
|
17
17
|
parseSpaceInitPlugin
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-QK5I2EPF.mjs";
|
|
19
19
|
|
|
20
20
|
// packages/plugins/plugin-space/src/SpacePlugin.tsx
|
|
21
21
|
import { effect, signal } from "@preact/signals-core";
|
|
22
|
-
import
|
|
22
|
+
import React17 from "react";
|
|
23
23
|
import { LayoutAction as LayoutAction2, NavigationAction as NavigationAction3, Surface as Surface2, firstIdInPart, openIds, parseGraphPlugin, parseIntentPlugin as parseIntentPlugin3, parseMetadataResolverPlugin, parseNavigationPlugin as parseNavigationPlugin2, resolvePlugin } from "@dxos/app-framework";
|
|
24
24
|
import { EventSubscriptions } from "@dxos/async";
|
|
25
25
|
import { isReactiveObject as isReactiveObject2 } from "@dxos/echo-schema";
|
|
@@ -28,7 +28,7 @@ import { log as log2 } from "@dxos/log";
|
|
|
28
28
|
import { Migrations as Migrations2 } from "@dxos/migrations";
|
|
29
29
|
import { parseAttentionPlugin } from "@dxos/plugin-attention";
|
|
30
30
|
import { parseClientPlugin } from "@dxos/plugin-client";
|
|
31
|
-
import { createExtension,
|
|
31
|
+
import { createExtension, memoize as memoize2, toSignal } from "@dxos/plugin-graph";
|
|
32
32
|
import { ObservabilityAction } from "@dxos/plugin-observability/meta";
|
|
33
33
|
import { PublicKey as PublicKey2 } from "@dxos/react-client";
|
|
34
34
|
import { Expando, Filter, SpaceState as SpaceState3, create as create2, fullyQualifiedId as fullyQualifiedId4, getSpace as getSpace4, getTypename as getTypename2, isEchoObject as isEchoObject2, isSpace as isSpace2, loadObjectReferences } from "@dxos/react-client/echo";
|
|
@@ -159,36 +159,32 @@ var CollectionSection = ({ collection }) => {
|
|
|
159
159
|
}, collection.name ?? t("unnamed collection label")));
|
|
160
160
|
};
|
|
161
161
|
|
|
162
|
-
// packages/plugins/plugin-space/src/components/
|
|
162
|
+
// packages/plugins/plugin-space/src/components/FallbackSettings.tsx
|
|
163
163
|
import React4 from "react";
|
|
164
|
-
import { useTranslation as useTranslation4 } from "@dxos/react-ui";
|
|
165
|
-
|
|
166
|
-
var EmptySpace = () => {
|
|
164
|
+
import { Input, useTranslation as useTranslation4 } from "@dxos/react-ui";
|
|
165
|
+
var FallbackSettings = ({ object }) => {
|
|
167
166
|
const { t } = useTranslation4(SPACE_PLUGIN);
|
|
168
167
|
return /* @__PURE__ */ React4.createElement("div", {
|
|
168
|
+
role: "form",
|
|
169
|
+
className: "p-3 flex flex-col gap-2"
|
|
170
|
+
}, /* @__PURE__ */ React4.createElement("div", {
|
|
169
171
|
role: "none",
|
|
170
|
-
className:
|
|
171
|
-
}, t("
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
var EmptyTree = () => {
|
|
179
|
-
const { t } = useTranslation5(SPACE_PLUGIN);
|
|
180
|
-
return /* @__PURE__ */ React5.createElement("div", {
|
|
181
|
-
role: "none",
|
|
182
|
-
className: mx4("p-2 mli-2 mbe-2 text-center border border-dashed border-neutral-400/50 rounded-lg", descriptionText3)
|
|
183
|
-
}, t("empty tree message"));
|
|
172
|
+
className: "space-b-1"
|
|
173
|
+
}, /* @__PURE__ */ React4.createElement(Input.Root, null, /* @__PURE__ */ React4.createElement(Input.Label, null, t("name label")), /* @__PURE__ */ React4.createElement(Input.TextInput, {
|
|
174
|
+
placeholder: t("name placeholder"),
|
|
175
|
+
value: object.name,
|
|
176
|
+
onChange: (event) => {
|
|
177
|
+
object.name = event.target.value;
|
|
178
|
+
}
|
|
179
|
+
}))));
|
|
184
180
|
};
|
|
185
181
|
|
|
186
182
|
// packages/plugins/plugin-space/src/components/MenuFooter.tsx
|
|
187
183
|
import { Planet } from "@phosphor-icons/react";
|
|
188
|
-
import
|
|
184
|
+
import React5 from "react";
|
|
189
185
|
import { getSpace as getSpace2 } from "@dxos/client/echo";
|
|
190
186
|
import { useClient as useClient2 } from "@dxos/react-client";
|
|
191
|
-
import { DropdownMenu, toLocalizedString, useTranslation as
|
|
187
|
+
import { DropdownMenu, toLocalizedString, useTranslation as useTranslation5 } from "@dxos/react-ui";
|
|
192
188
|
|
|
193
189
|
// packages/plugins/plugin-space/src/util.tsx
|
|
194
190
|
import { NavigationAction as NavigationAction2 } from "@dxos/app-framework";
|
|
@@ -746,31 +742,31 @@ var cloneObject = async (object, resolve) => {
|
|
|
746
742
|
|
|
747
743
|
// packages/plugins/plugin-space/src/components/MenuFooter.tsx
|
|
748
744
|
var MenuFooter = ({ object }) => {
|
|
749
|
-
const { t } =
|
|
745
|
+
const { t } = useTranslation5(SPACE_PLUGIN);
|
|
750
746
|
const client = useClient2();
|
|
751
747
|
const space = getSpace2(object);
|
|
752
748
|
const spaceName = space ? getSpaceDisplayName(space, {
|
|
753
749
|
personal: client.spaces.default === space
|
|
754
750
|
}) : "";
|
|
755
|
-
return space ? /* @__PURE__ */
|
|
751
|
+
return space ? /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Separator, null), /* @__PURE__ */ React5.createElement(DropdownMenu.GroupLabel, null, t("menu footer label")), /* @__PURE__ */ React5.createElement("dl", {
|
|
756
752
|
className: "pis-2 mbe-2 text-xs grid grid-cols-[max-content_1fr] gap-2"
|
|
757
|
-
}, /* @__PURE__ */
|
|
753
|
+
}, /* @__PURE__ */ React5.createElement("dt", {
|
|
758
754
|
className: "uppercase text-[.75em] tracking-wide font-medium mbs-px self-start"
|
|
759
|
-
}, t("location label")), /* @__PURE__ */
|
|
755
|
+
}, t("location label")), /* @__PURE__ */ React5.createElement("dd", {
|
|
760
756
|
className: "line-clamp-3"
|
|
761
|
-
}, /* @__PURE__ */
|
|
757
|
+
}, /* @__PURE__ */ React5.createElement(Planet, {
|
|
762
758
|
className: "inline-block mie-1"
|
|
763
759
|
}), toLocalizedString(spaceName, t)))) : null;
|
|
764
760
|
};
|
|
765
761
|
|
|
766
762
|
// packages/plugins/plugin-space/src/components/MissingObject.tsx
|
|
767
|
-
import
|
|
763
|
+
import React6, { useEffect as useEffect2, useState as useState2 } from "react";
|
|
768
764
|
import { parseIntentPlugin as parseIntentPlugin2, useResolvePlugin as useResolvePlugin2 } from "@dxos/app-framework";
|
|
769
|
-
import { Status, useTranslation as
|
|
770
|
-
import { baseSurface as baseSurface2, descriptionText as
|
|
765
|
+
import { Status, useTranslation as useTranslation6 } from "@dxos/react-ui";
|
|
766
|
+
import { baseSurface as baseSurface2, descriptionText as descriptionText2, mx as mx3 } from "@dxos/react-ui-theme";
|
|
771
767
|
var WAIT_FOR_OBJECT_TIMEOUT2 = 1e3;
|
|
772
768
|
var MissingObject = ({ id }) => {
|
|
773
|
-
const { t } =
|
|
769
|
+
const { t } = useTranslation6(SPACE_PLUGIN);
|
|
774
770
|
const [waiting, setWaiting] = useState2(false);
|
|
775
771
|
const intentPlugin = useResolvePlugin2(parseIntentPlugin2);
|
|
776
772
|
useEffect2(() => {
|
|
@@ -792,13 +788,13 @@ var MissingObject = ({ id }) => {
|
|
|
792
788
|
intentPlugin,
|
|
793
789
|
id
|
|
794
790
|
]);
|
|
795
|
-
return /* @__PURE__ */
|
|
791
|
+
return /* @__PURE__ */ React6.createElement("div", {
|
|
796
792
|
role: "none",
|
|
797
|
-
className:
|
|
798
|
-
}, waiting ? /* @__PURE__ */
|
|
793
|
+
className: mx3(baseSurface2, "min-bs-screen is-full flex items-center justify-center p-8")
|
|
794
|
+
}, waiting ? /* @__PURE__ */ React6.createElement("p", {
|
|
799
795
|
role: "alert",
|
|
800
|
-
className:
|
|
801
|
-
}, t("missing object message")) : /* @__PURE__ */
|
|
796
|
+
className: mx3(descriptionText2, "border border-dashed border-neutral-400/50 rounded-lg flex items-center justify-center p-8 font-normal text-lg")
|
|
797
|
+
}, t("missing object message")) : /* @__PURE__ */ React6.createElement(Status, {
|
|
802
798
|
indeterminate: true,
|
|
803
799
|
"aria-label": "Initializing"
|
|
804
800
|
}));
|
|
@@ -806,10 +802,10 @@ var MissingObject = ({ id }) => {
|
|
|
806
802
|
|
|
807
803
|
// packages/plugins/plugin-space/src/components/PersistenceStatus.tsx
|
|
808
804
|
import { ArrowsCounterClockwise, CheckCircle as CheckCircle2, Warning } from "@phosphor-icons/react";
|
|
809
|
-
import
|
|
805
|
+
import React7, { useEffect as useEffect3, useState as useState3 } from "react";
|
|
810
806
|
import { debounce } from "@dxos/async";
|
|
811
|
-
import { Tooltip, useTranslation as
|
|
812
|
-
import { getSize as getSize2, mx as
|
|
807
|
+
import { Tooltip, useTranslation as useTranslation7 } from "@dxos/react-ui";
|
|
808
|
+
import { getSize as getSize2, mx as mx4, staticPlaceholderText, warningText } from "@dxos/react-ui-theme";
|
|
813
809
|
var Status2;
|
|
814
810
|
(function(Status3) {
|
|
815
811
|
Status3[Status3["PERSISTED_LOCALLY"] = 0] = "PERSISTED_LOCALLY";
|
|
@@ -817,7 +813,7 @@ var Status2;
|
|
|
817
813
|
Status3[Status3["ERROR"] = 2] = "ERROR";
|
|
818
814
|
})(Status2 || (Status2 = {}));
|
|
819
815
|
var PersistenceStatus = ({ db }) => {
|
|
820
|
-
const { t } =
|
|
816
|
+
const { t } = useTranslation7(SPACE_PLUGIN);
|
|
821
817
|
const [displayMessage, setDisplayMessage] = useState3(false);
|
|
822
818
|
const [status, naturalSetStatus] = useState3(0);
|
|
823
819
|
const [prevStatus, setPrevStatus] = useState3(0);
|
|
@@ -834,45 +830,45 @@ var PersistenceStatus = ({ db }) => {
|
|
|
834
830
|
]);
|
|
835
831
|
switch (status) {
|
|
836
832
|
case 2:
|
|
837
|
-
return /* @__PURE__ */
|
|
833
|
+
return /* @__PURE__ */ React7.createElement("div", {
|
|
838
834
|
className: "flex items-center"
|
|
839
|
-
}, /* @__PURE__ */
|
|
840
|
-
className:
|
|
841
|
-
}), /* @__PURE__ */
|
|
842
|
-
className:
|
|
835
|
+
}, /* @__PURE__ */ React7.createElement(Warning, {
|
|
836
|
+
className: mx4(getSize2(4), "me-1")
|
|
837
|
+
}), /* @__PURE__ */ React7.createElement("span", {
|
|
838
|
+
className: mx4("text-sm", warningText)
|
|
843
839
|
}, t("persistence error label")));
|
|
844
840
|
case 1:
|
|
845
|
-
return /* @__PURE__ */
|
|
841
|
+
return /* @__PURE__ */ React7.createElement("div", {
|
|
846
842
|
className: "flex items-center"
|
|
847
|
-
}, /* @__PURE__ */
|
|
848
|
-
className:
|
|
849
|
-
}), /* @__PURE__ */
|
|
850
|
-
className:
|
|
843
|
+
}, /* @__PURE__ */ React7.createElement(ArrowsCounterClockwise, {
|
|
844
|
+
className: mx4(getSize2(4), "me-1")
|
|
845
|
+
}), /* @__PURE__ */ React7.createElement("span", {
|
|
846
|
+
className: mx4("text-sm", staticPlaceholderText)
|
|
851
847
|
}, t("persistence pending label")));
|
|
852
848
|
case 0:
|
|
853
849
|
default:
|
|
854
|
-
return /* @__PURE__ */
|
|
850
|
+
return /* @__PURE__ */ React7.createElement(Tooltip.Root, {
|
|
855
851
|
delayDuration: 400
|
|
856
|
-
}, /* @__PURE__ */
|
|
852
|
+
}, /* @__PURE__ */ React7.createElement(Tooltip.Trigger, {
|
|
857
853
|
role: "status",
|
|
858
854
|
className: "flex items-center"
|
|
859
|
-
}, /* @__PURE__ */
|
|
860
|
-
className:
|
|
861
|
-
}), displayMessage && /* @__PURE__ */
|
|
862
|
-
className:
|
|
863
|
-
}, t("persisted locally label"))), /* @__PURE__ */
|
|
855
|
+
}, /* @__PURE__ */ React7.createElement(CheckCircle2, {
|
|
856
|
+
className: mx4(getSize2(4), "me-1")
|
|
857
|
+
}), displayMessage && /* @__PURE__ */ React7.createElement("span", {
|
|
858
|
+
className: mx4("text-sm", staticPlaceholderText)
|
|
859
|
+
}, t("persisted locally label"))), /* @__PURE__ */ React7.createElement(Tooltip.Portal, null, /* @__PURE__ */ React7.createElement(Tooltip.Content, {
|
|
864
860
|
classNames: "z-10"
|
|
865
|
-
}, t("persisted locally message"), /* @__PURE__ */
|
|
861
|
+
}, t("persisted locally message"), /* @__PURE__ */ React7.createElement(Tooltip.Arrow, null))));
|
|
866
862
|
}
|
|
867
863
|
};
|
|
868
864
|
|
|
869
865
|
// packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx
|
|
870
|
-
import
|
|
866
|
+
import React8, { useCallback, useRef, useState as useState4 } from "react";
|
|
871
867
|
import { log } from "@dxos/log";
|
|
872
|
-
import { Button as Button2, Input, Popover, useTranslation as
|
|
868
|
+
import { Button as Button2, Input as Input2, Popover, useTranslation as useTranslation8 } from "@dxos/react-ui";
|
|
873
869
|
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
|
|
874
870
|
var PopoverRenameObject = ({ object: obj }) => {
|
|
875
|
-
const { t } =
|
|
871
|
+
const { t } = useTranslation8(SPACE_PLUGIN);
|
|
876
872
|
const doneButton = useRef(null);
|
|
877
873
|
const object = obj;
|
|
878
874
|
const [name, setName] = useState4(object.name || object.title || "");
|
|
@@ -897,23 +893,23 @@ var PopoverRenameObject = ({ object: obj }) => {
|
|
|
897
893
|
object,
|
|
898
894
|
name
|
|
899
895
|
]);
|
|
900
|
-
return /* @__PURE__ */
|
|
896
|
+
return /* @__PURE__ */ React8.createElement("div", {
|
|
901
897
|
role: "none",
|
|
902
898
|
className: "p-1 flex gap-2"
|
|
903
|
-
}, /* @__PURE__ */
|
|
899
|
+
}, /* @__PURE__ */ React8.createElement("div", {
|
|
904
900
|
role: "none",
|
|
905
901
|
className: "flex-1"
|
|
906
|
-
}, /* @__PURE__ */
|
|
902
|
+
}, /* @__PURE__ */ React8.createElement(Input2.Root, null, /* @__PURE__ */ React8.createElement(Input2.Label, {
|
|
907
903
|
srOnly: true
|
|
908
|
-
}, t("object name label")), /* @__PURE__ */
|
|
904
|
+
}, t("object name label")), /* @__PURE__ */ React8.createElement(Input2.TextInput, {
|
|
909
905
|
placeholder: t("object title placeholder"),
|
|
910
906
|
value: name,
|
|
911
907
|
"data-testid": "spacePlugin.renameObject.input",
|
|
912
908
|
onChange: ({ target: { value } }) => setName(value),
|
|
913
909
|
onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
|
|
914
|
-
}))), /* @__PURE__ */
|
|
910
|
+
}))), /* @__PURE__ */ React8.createElement(Popover.Close, {
|
|
915
911
|
asChild: true
|
|
916
|
-
}, /* @__PURE__ */
|
|
912
|
+
}, /* @__PURE__ */ React8.createElement(Button2, {
|
|
917
913
|
ref: doneButton,
|
|
918
914
|
classNames: "self-stretch",
|
|
919
915
|
onClick: handleDone
|
|
@@ -923,10 +919,10 @@ var PopoverRenameObject = ({ object: obj }) => {
|
|
|
923
919
|
};
|
|
924
920
|
|
|
925
921
|
// packages/plugins/plugin-space/src/components/PopoverRenameSpace.tsx
|
|
926
|
-
import
|
|
927
|
-
import { Button as Button3, Input as
|
|
922
|
+
import React9, { useCallback as useCallback2, useRef as useRef2, useState as useState5 } from "react";
|
|
923
|
+
import { Button as Button3, Input as Input3, Popover as Popover2, useTranslation as useTranslation9 } from "@dxos/react-ui";
|
|
928
924
|
var PopoverRenameSpace = ({ space }) => {
|
|
929
|
-
const { t } =
|
|
925
|
+
const { t } = useTranslation9(SPACE_PLUGIN);
|
|
930
926
|
const doneButton = useRef2(null);
|
|
931
927
|
const [name, setName] = useState5(space.properties.name ?? "");
|
|
932
928
|
const handleDone = useCallback2(() => {
|
|
@@ -935,24 +931,24 @@ var PopoverRenameSpace = ({ space }) => {
|
|
|
935
931
|
space,
|
|
936
932
|
name
|
|
937
933
|
]);
|
|
938
|
-
return /* @__PURE__ */
|
|
934
|
+
return /* @__PURE__ */ React9.createElement("div", {
|
|
939
935
|
role: "none",
|
|
940
936
|
className: "p-1 flex gap-2"
|
|
941
|
-
}, /* @__PURE__ */
|
|
937
|
+
}, /* @__PURE__ */ React9.createElement("div", {
|
|
942
938
|
role: "none",
|
|
943
939
|
className: "flex-1"
|
|
944
|
-
}, /* @__PURE__ */
|
|
940
|
+
}, /* @__PURE__ */ React9.createElement(Input3.Root, null, /* @__PURE__ */ React9.createElement(Input3.Label, {
|
|
945
941
|
srOnly: true
|
|
946
|
-
}, t("space name label")), /* @__PURE__ */
|
|
942
|
+
}, t("space name label")), /* @__PURE__ */ React9.createElement(Input3.TextInput, {
|
|
947
943
|
defaultValue: space.properties.name ?? "",
|
|
948
944
|
placeholder: t("unnamed space label"),
|
|
949
945
|
onChange: ({ target: { value } }) => setName(value),
|
|
950
946
|
// TODO(wittjosiah): Ideally this should access the popover context to close the popover.
|
|
951
947
|
// Currently this is not possible because Radix does not expose the popover context.
|
|
952
948
|
onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
|
|
953
|
-
}))), /* @__PURE__ */
|
|
949
|
+
}))), /* @__PURE__ */ React9.createElement(Popover2.Close, {
|
|
954
950
|
asChild: true
|
|
955
|
-
}, /* @__PURE__ */
|
|
951
|
+
}, /* @__PURE__ */ React9.createElement(Button3, {
|
|
956
952
|
ref: doneButton,
|
|
957
953
|
classNames: "self-stretch",
|
|
958
954
|
onClick: handleDone
|
|
@@ -962,12 +958,12 @@ var PopoverRenameSpace = ({ space }) => {
|
|
|
962
958
|
};
|
|
963
959
|
|
|
964
960
|
// packages/plugins/plugin-space/src/components/ShareSpaceButton.tsx
|
|
965
|
-
import
|
|
961
|
+
import React10 from "react";
|
|
966
962
|
import { useIntentDispatcher } from "@dxos/app-framework";
|
|
967
|
-
import { Button as Button4, useTranslation as
|
|
963
|
+
import { Button as Button4, useTranslation as useTranslation10 } from "@dxos/react-ui";
|
|
968
964
|
var ShareSpaceButton = ({ spaceId }) => {
|
|
969
965
|
const dispatch = useIntentDispatcher();
|
|
970
|
-
return /* @__PURE__ */
|
|
966
|
+
return /* @__PURE__ */ React10.createElement(ShareSpaceButtonImpl, {
|
|
971
967
|
onClick: () => dispatch({
|
|
972
968
|
action: SpaceAction.SHARE,
|
|
973
969
|
data: {
|
|
@@ -977,8 +973,8 @@ var ShareSpaceButton = ({ spaceId }) => {
|
|
|
977
973
|
});
|
|
978
974
|
};
|
|
979
975
|
var ShareSpaceButtonImpl = ({ onClick }) => {
|
|
980
|
-
const { t } =
|
|
981
|
-
return /* @__PURE__ */
|
|
976
|
+
const { t } = useTranslation10(SPACE_PLUGIN);
|
|
977
|
+
return /* @__PURE__ */ React10.createElement(Button4, {
|
|
982
978
|
"data-testid": "spacePlugin.shareSpaceButton",
|
|
983
979
|
onClick,
|
|
984
980
|
classNames: "mli-1"
|
|
@@ -987,30 +983,30 @@ var ShareSpaceButtonImpl = ({ onClick }) => {
|
|
|
987
983
|
|
|
988
984
|
// packages/plugins/plugin-space/src/components/SpaceMain/SpaceMain.tsx
|
|
989
985
|
import { Command } from "@phosphor-icons/react";
|
|
990
|
-
import
|
|
986
|
+
import React12 from "react";
|
|
991
987
|
import { Surface } from "@dxos/app-framework";
|
|
992
988
|
import { SpaceState as SpaceState2 } from "@dxos/react-client/echo";
|
|
993
|
-
import { Main, useTranslation as
|
|
994
|
-
import { getSize as getSize4, mx as
|
|
989
|
+
import { Main, useTranslation as useTranslation12 } from "@dxos/react-ui";
|
|
990
|
+
import { getSize as getSize4, mx as mx6, topbarBlockPaddingStart } from "@dxos/react-ui-theme";
|
|
995
991
|
import { ClipboardProvider } from "@dxos/shell/react";
|
|
996
992
|
|
|
997
993
|
// packages/plugins/plugin-space/src/components/SpaceMain/SpaceMembersSection.tsx
|
|
998
994
|
import { CaretDown, Check, UserPlus, UsersThree } from "@phosphor-icons/react";
|
|
999
|
-
import
|
|
995
|
+
import React11, { useCallback as useCallback3, useState as useState6 } from "react";
|
|
1000
996
|
import { LayoutAction, useIntent } from "@dxos/app-framework";
|
|
1001
997
|
import { useMembers, SpaceMember, useSpaceInvitations } from "@dxos/react-client/echo";
|
|
1002
998
|
import { InvitationEncoder } from "@dxos/react-client/invitations";
|
|
1003
999
|
import { Invitation } from "@dxos/react-client/invitations";
|
|
1004
|
-
import { Button as Button5, ButtonGroup, DropdownMenu as DropdownMenu2, List, useTranslation as
|
|
1005
|
-
import { descriptionText as
|
|
1000
|
+
import { Button as Button5, ButtonGroup, DropdownMenu as DropdownMenu2, List, useTranslation as useTranslation11 } from "@dxos/react-ui";
|
|
1001
|
+
import { descriptionText as descriptionText3, getSize as getSize3, mx as mx5 } from "@dxos/react-ui-theme";
|
|
1006
1002
|
import { InvitationListItem, IdentityListItem } from "@dxos/shell/react";
|
|
1007
1003
|
var activeActionKeyStorageKey = "dxos:react-shell/space-manager/active-action";
|
|
1008
1004
|
var Presence = SpaceMember.PresenceState;
|
|
1009
1005
|
var handleCreateInvitationUrl = (invitationCode) => `${origin}?spaceInvitationCode=${invitationCode}`;
|
|
1010
1006
|
var SpaceMemberList = ({ members }) => {
|
|
1011
|
-
return members.length > 0 ? /* @__PURE__ */
|
|
1007
|
+
return members.length > 0 ? /* @__PURE__ */ React11.createElement(List, {
|
|
1012
1008
|
classNames: "col-start-2 col-end-5 gap-y-1 grid grid-cols-subgrid items-center"
|
|
1013
|
-
}, members.map((member) => /* @__PURE__ */
|
|
1009
|
+
}, members.map((member) => /* @__PURE__ */ React11.createElement(IdentityListItem, {
|
|
1014
1010
|
classNames: "contents",
|
|
1015
1011
|
key: member.identity.identityKey.toHex(),
|
|
1016
1012
|
identity: member.identity,
|
|
@@ -1018,7 +1014,7 @@ var SpaceMemberList = ({ members }) => {
|
|
|
1018
1014
|
}))) : null;
|
|
1019
1015
|
};
|
|
1020
1016
|
var SpaceMembersSection = ({ space }) => {
|
|
1021
|
-
const { t } =
|
|
1017
|
+
const { t } = useTranslation11(SPACE_PLUGIN);
|
|
1022
1018
|
const invitations = useSpaceInvitations(space.key);
|
|
1023
1019
|
const { dispatch } = useIntent();
|
|
1024
1020
|
const handleCloseDialog = () => dispatch({
|
|
@@ -1096,103 +1092,103 @@ var SpaceMembersSection = ({ space }) => {
|
|
|
1096
1092
|
[Presence.ONLINE]: [],
|
|
1097
1093
|
[Presence.OFFLINE]: []
|
|
1098
1094
|
});
|
|
1099
|
-
return /* @__PURE__ */
|
|
1095
|
+
return /* @__PURE__ */ React11.createElement("section", {
|
|
1100
1096
|
className: "mbe-4 col-span-3 grid gap-y-2 grid-cols-subgrid auto-rows-min"
|
|
1101
|
-
}, /* @__PURE__ */
|
|
1097
|
+
}, /* @__PURE__ */ React11.createElement("h2", {
|
|
1102
1098
|
className: "contents"
|
|
1103
|
-
}, /* @__PURE__ */
|
|
1099
|
+
}, /* @__PURE__ */ React11.createElement(UsersThree, {
|
|
1104
1100
|
weight: "duotone",
|
|
1105
|
-
className:
|
|
1106
|
-
}), /* @__PURE__ */
|
|
1101
|
+
className: mx5(getSize3(5), "place-self-center")
|
|
1102
|
+
}), /* @__PURE__ */ React11.createElement("span", {
|
|
1107
1103
|
className: "text-lg col-span-2"
|
|
1108
|
-
}, t("space members label"))), /* @__PURE__ */
|
|
1104
|
+
}, t("space members label"))), /* @__PURE__ */ React11.createElement("h3", {
|
|
1109
1105
|
className: "col-start-2 col-span-3 text-sm italic text-description"
|
|
1110
|
-
}, t("invitations heading")), invitations.length > 0 && /* @__PURE__ */
|
|
1106
|
+
}, t("invitations heading")), invitations.length > 0 && /* @__PURE__ */ React11.createElement(List, {
|
|
1111
1107
|
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__ */
|
|
1108
|
+
}, invitations.map((invitation) => /* @__PURE__ */ React11.createElement(InvitationListItem, {
|
|
1113
1109
|
reverseEffects: true,
|
|
1114
1110
|
classNames: "pis-0 pie-0 gap-0 col-span-4 grid grid-cols-subgrid",
|
|
1115
1111
|
key: invitation.get().invitationId,
|
|
1116
1112
|
invitation,
|
|
1117
1113
|
send: handleInvitationSelect,
|
|
1118
1114
|
createInvitationUrl: handleCreateInvitationUrl
|
|
1119
|
-
}))), /* @__PURE__ */
|
|
1115
|
+
}))), /* @__PURE__ */ React11.createElement(ButtonGroup, {
|
|
1120
1116
|
classNames: "col-start-2 col-end-4 grid grid-cols-[1fr_var(--rail-action)] place-self-grow gap-px"
|
|
1121
|
-
}, /* @__PURE__ */
|
|
1117
|
+
}, /* @__PURE__ */ React11.createElement(Button5, {
|
|
1122
1118
|
classNames: "gap-2",
|
|
1123
1119
|
onClick: activeAction.onClick
|
|
1124
|
-
}, /* @__PURE__ */
|
|
1120
|
+
}, /* @__PURE__ */ React11.createElement(activeAction.icon, {
|
|
1125
1121
|
className: getSize3(5)
|
|
1126
|
-
}), /* @__PURE__ */
|
|
1122
|
+
}), /* @__PURE__ */ React11.createElement("span", null, t(activeAction.label, {
|
|
1127
1123
|
ns: "os"
|
|
1128
|
-
}))), /* @__PURE__ */
|
|
1124
|
+
}))), /* @__PURE__ */ React11.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React11.createElement(DropdownMenu2.Trigger, {
|
|
1129
1125
|
asChild: true
|
|
1130
|
-
}, /* @__PURE__ */
|
|
1126
|
+
}, /* @__PURE__ */ React11.createElement(Button5, {
|
|
1131
1127
|
classNames: "pli-0"
|
|
1132
|
-
}, /* @__PURE__ */
|
|
1128
|
+
}, /* @__PURE__ */ React11.createElement(CaretDown, {
|
|
1133
1129
|
className: getSize3(4)
|
|
1134
|
-
}))), /* @__PURE__ */
|
|
1135
|
-
return /* @__PURE__ */
|
|
1130
|
+
}))), /* @__PURE__ */ React11.createElement(DropdownMenu2.Content, null, /* @__PURE__ */ React11.createElement(DropdownMenu2.Viewport, null, Object.entries(inviteActions).map(([id, action]) => {
|
|
1131
|
+
return /* @__PURE__ */ React11.createElement(DropdownMenu2.CheckboxItem, {
|
|
1136
1132
|
key: id,
|
|
1137
1133
|
"aria-labelledby": `${id}__label`,
|
|
1138
1134
|
"aria-describedby": `${id}__description`,
|
|
1139
1135
|
checked: activeActionKey === id,
|
|
1140
1136
|
onCheckedChange: (checked) => checked && setActiveActionKey(id),
|
|
1141
1137
|
classNames: "gap-2"
|
|
1142
|
-
}, action.icon && /* @__PURE__ */
|
|
1138
|
+
}, action.icon && /* @__PURE__ */ React11.createElement(action.icon, {
|
|
1143
1139
|
className: getSize3(5)
|
|
1144
|
-
}), /* @__PURE__ */
|
|
1140
|
+
}), /* @__PURE__ */ React11.createElement("div", {
|
|
1145
1141
|
role: "none",
|
|
1146
1142
|
className: "flex-1 min-is-0 space-b-1"
|
|
1147
|
-
}, /* @__PURE__ */
|
|
1143
|
+
}, /* @__PURE__ */ React11.createElement("p", {
|
|
1148
1144
|
id: `${id}__label`
|
|
1149
1145
|
}, t(action.label, {
|
|
1150
1146
|
ns: "os"
|
|
1151
|
-
})), action.description && /* @__PURE__ */
|
|
1147
|
+
})), action.description && /* @__PURE__ */ React11.createElement("p", {
|
|
1152
1148
|
id: `${id}__description`,
|
|
1153
|
-
className:
|
|
1149
|
+
className: descriptionText3
|
|
1154
1150
|
}, t(action.description, {
|
|
1155
1151
|
ns: "os"
|
|
1156
|
-
}))), /* @__PURE__ */
|
|
1152
|
+
}))), /* @__PURE__ */ React11.createElement(DropdownMenu2.ItemIndicator, {
|
|
1157
1153
|
asChild: true
|
|
1158
|
-
}, /* @__PURE__ */
|
|
1154
|
+
}, /* @__PURE__ */ React11.createElement(Check, {
|
|
1159
1155
|
className: getSize3(4)
|
|
1160
1156
|
})));
|
|
1161
|
-
})), /* @__PURE__ */
|
|
1162
|
-
className:
|
|
1157
|
+
})), /* @__PURE__ */ React11.createElement(DropdownMenu2.Arrow, null)))), members[Presence.ONLINE].length + members[Presence.OFFLINE].length < 1 ? /* @__PURE__ */ React11.createElement("p", {
|
|
1158
|
+
className: mx5(descriptionText3, "text-center is-full mlb-2")
|
|
1163
1159
|
}, t("empty space members message", {
|
|
1164
1160
|
ns: "os"
|
|
1165
|
-
})) : /* @__PURE__ */
|
|
1161
|
+
})) : /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement("h3", {
|
|
1166
1162
|
className: "col-start-2 col-end-5 text-sm italic text-description"
|
|
1167
1163
|
}, t("active space members heading", {
|
|
1168
1164
|
count: members[Presence.ONLINE].length
|
|
1169
|
-
})), /* @__PURE__ */
|
|
1165
|
+
})), /* @__PURE__ */ React11.createElement(SpaceMemberList, {
|
|
1170
1166
|
members: members[Presence.ONLINE]
|
|
1171
|
-
}), /* @__PURE__ */
|
|
1167
|
+
}), /* @__PURE__ */ React11.createElement("h3", {
|
|
1172
1168
|
className: "col-start-2 col-end-5 text-sm italic text-description"
|
|
1173
1169
|
}, t("inactive space members heading", {
|
|
1174
1170
|
count: members[Presence.OFFLINE].length
|
|
1175
|
-
})), /* @__PURE__ */
|
|
1171
|
+
})), /* @__PURE__ */ React11.createElement(SpaceMemberList, {
|
|
1176
1172
|
members: members[Presence.OFFLINE]
|
|
1177
1173
|
})));
|
|
1178
1174
|
};
|
|
1179
1175
|
|
|
1180
1176
|
// packages/plugins/plugin-space/src/components/SpaceMain/SpaceMain.tsx
|
|
1181
1177
|
var KeyShortcuts = () => {
|
|
1182
|
-
const { t } =
|
|
1183
|
-
return /* @__PURE__ */
|
|
1178
|
+
const { t } = useTranslation12(SPACE_PLUGIN);
|
|
1179
|
+
return /* @__PURE__ */ React12.createElement("section", {
|
|
1184
1180
|
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__ */
|
|
1181
|
+
}, /* @__PURE__ */ React12.createElement("h2", {
|
|
1186
1182
|
className: "contents"
|
|
1187
|
-
}, /* @__PURE__ */
|
|
1183
|
+
}, /* @__PURE__ */ React12.createElement(Command, {
|
|
1188
1184
|
weight: "duotone",
|
|
1189
|
-
className:
|
|
1190
|
-
}), /* @__PURE__ */
|
|
1185
|
+
className: mx6(getSize4(5), "place-self-center")
|
|
1186
|
+
}), /* @__PURE__ */ React12.createElement("span", {
|
|
1191
1187
|
className: "text-lg col-span-2 md:col-span-1"
|
|
1192
|
-
}, t("keyshortcuts label"))), /* @__PURE__ */
|
|
1188
|
+
}, t("keyshortcuts label"))), /* @__PURE__ */ React12.createElement("div", {
|
|
1193
1189
|
role: "none",
|
|
1194
1190
|
className: "col-start-2 col-end-4 md:col-end-5 pie-2"
|
|
1195
|
-
}, /* @__PURE__ */
|
|
1191
|
+
}, /* @__PURE__ */ React12.createElement(Surface, {
|
|
1196
1192
|
role: "keyshortcuts"
|
|
1197
1193
|
})));
|
|
1198
1194
|
};
|
|
@@ -1201,7 +1197,7 @@ var SpaceMain = ({ space, role }) => {
|
|
|
1201
1197
|
const state = space.state.get();
|
|
1202
1198
|
const ready = state === SpaceState2.SPACE_READY;
|
|
1203
1199
|
const Root = role === "main" ? Main.Content : "div";
|
|
1204
|
-
return /* @__PURE__ */
|
|
1200
|
+
return /* @__PURE__ */ React12.createElement(ClipboardProvider, null, /* @__PURE__ */ React12.createElement(Root, {
|
|
1205
1201
|
...role === "main" ? {
|
|
1206
1202
|
classNames: [
|
|
1207
1203
|
topbarBlockPaddingStart,
|
|
@@ -1210,23 +1206,23 @@ var SpaceMain = ({ space, role }) => {
|
|
|
1210
1206
|
]
|
|
1211
1207
|
} : {
|
|
1212
1208
|
role: "none",
|
|
1213
|
-
className:
|
|
1209
|
+
className: mx6(topbarBlockPaddingStart, "row-span-2", spaceMainLayout)
|
|
1214
1210
|
},
|
|
1215
1211
|
"data-testid": `spacePlugin.${role}`,
|
|
1216
1212
|
"data-isready": ready ? "true" : "false"
|
|
1217
|
-
}, ready && /* @__PURE__ */
|
|
1213
|
+
}, ready && /* @__PURE__ */ React12.createElement(SpaceMembersSection, {
|
|
1218
1214
|
space
|
|
1219
|
-
}), /* @__PURE__ */
|
|
1215
|
+
}), /* @__PURE__ */ React12.createElement(KeyShortcuts, null)));
|
|
1220
1216
|
};
|
|
1221
1217
|
|
|
1222
1218
|
// packages/plugins/plugin-space/src/components/SpacePresence.tsx
|
|
1223
|
-
import
|
|
1219
|
+
import React13, { useCallback as useCallback4, useEffect as useEffect4, useState as useState7 } from "react";
|
|
1224
1220
|
import { usePlugin } from "@dxos/app-framework";
|
|
1225
1221
|
import { generateName } from "@dxos/display-name";
|
|
1226
1222
|
import { PublicKey, useClient as useClient3 } from "@dxos/react-client";
|
|
1227
1223
|
import { getSpace as getSpace3, useMembers as useMembers2, fullyQualifiedId as fullyQualifiedId3 } from "@dxos/react-client/echo";
|
|
1228
1224
|
import { useIdentity } from "@dxos/react-client/halo";
|
|
1229
|
-
import { Avatar, AvatarGroup, AvatarGroupItem, Tooltip as Tooltip2, useDensityContext, useTranslation as
|
|
1225
|
+
import { Avatar, AvatarGroup, AvatarGroupItem, Tooltip as Tooltip2, useDensityContext, useTranslation as useTranslation13, List as List2, ListItem, useDefaultValue } from "@dxos/react-ui";
|
|
1230
1226
|
import { AttentionGlyph } from "@dxos/react-ui-attention";
|
|
1231
1227
|
import { ComplexMap, keyToFallback } from "@dxos/util";
|
|
1232
1228
|
var REFRESH_INTERVAL = 5e3;
|
|
@@ -1264,9 +1260,9 @@ var SpacePresence = ({ object, spaceKey }) => {
|
|
|
1264
1260
|
lastSeen
|
|
1265
1261
|
};
|
|
1266
1262
|
}).toSorted((a, b) => a.lastSeen - b.lastSeen);
|
|
1267
|
-
return density === "fine" ? /* @__PURE__ */
|
|
1263
|
+
return density === "fine" ? /* @__PURE__ */ React13.createElement(SmallPresence, {
|
|
1268
1264
|
count: membersForObject.length
|
|
1269
|
-
}) : /* @__PURE__ */
|
|
1265
|
+
}) : /* @__PURE__ */ React13.createElement(FullPresence, {
|
|
1270
1266
|
members: membersForObject
|
|
1271
1267
|
});
|
|
1272
1268
|
};
|
|
@@ -1276,38 +1272,38 @@ var FullPresence = (props) => {
|
|
|
1276
1272
|
if (members.length === 0) {
|
|
1277
1273
|
return null;
|
|
1278
1274
|
}
|
|
1279
|
-
return /* @__PURE__ */
|
|
1275
|
+
return /* @__PURE__ */ React13.createElement(AvatarGroup.Root, {
|
|
1280
1276
|
size,
|
|
1281
1277
|
classNames: "mbs-2 mie-4",
|
|
1282
1278
|
"data-testid": "spacePlugin.presence"
|
|
1283
|
-
}, members.slice(0, 3).map((member, i) => /* @__PURE__ */
|
|
1279
|
+
}, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React13.createElement(Tooltip2.Root, {
|
|
1284
1280
|
key: member.identity.identityKey.toHex()
|
|
1285
|
-
}, /* @__PURE__ */
|
|
1281
|
+
}, /* @__PURE__ */ React13.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React13.createElement(PrensenceAvatar, {
|
|
1286
1282
|
identity: member.identity,
|
|
1287
1283
|
group: true,
|
|
1288
1284
|
match: member.currentlyAttended,
|
|
1289
1285
|
index: members.length - i,
|
|
1290
1286
|
onClick: () => onMemberClick?.(member)
|
|
1291
|
-
})), /* @__PURE__ */
|
|
1287
|
+
})), /* @__PURE__ */ React13.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React13.createElement(Tooltip2.Content, {
|
|
1292
1288
|
side: "bottom"
|
|
1293
|
-
}, /* @__PURE__ */
|
|
1289
|
+
}, /* @__PURE__ */ React13.createElement("span", null, getName(member.identity)), /* @__PURE__ */ React13.createElement(Tooltip2.Arrow, null))))), members.length > 3 && /* @__PURE__ */ React13.createElement(Tooltip2.Root, null, /* @__PURE__ */ React13.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React13.createElement(AvatarGroupItem.Root, {
|
|
1294
1290
|
status: "inactive"
|
|
1295
|
-
}, /* @__PURE__ */
|
|
1291
|
+
}, /* @__PURE__ */ React13.createElement(Avatar.Frame, {
|
|
1296
1292
|
style: {
|
|
1297
1293
|
zIndex: members.length - 4
|
|
1298
1294
|
}
|
|
1299
|
-
}, /* @__PURE__ */
|
|
1295
|
+
}, /* @__PURE__ */ React13.createElement(Avatar.Fallback, {
|
|
1300
1296
|
text: `+${members.length - 3}`
|
|
1301
|
-
})))), /* @__PURE__ */
|
|
1297
|
+
})))), /* @__PURE__ */ React13.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React13.createElement(Tooltip2.Content, {
|
|
1302
1298
|
side: "bottom"
|
|
1303
|
-
}, /* @__PURE__ */
|
|
1299
|
+
}, /* @__PURE__ */ React13.createElement(Tooltip2.Arrow, null), /* @__PURE__ */ React13.createElement(List2, {
|
|
1304
1300
|
classNames: "max-h-56 overflow-y-auto"
|
|
1305
|
-
}, members.map((member) => /* @__PURE__ */
|
|
1301
|
+
}, members.map((member) => /* @__PURE__ */ React13.createElement(ListItem.Root, {
|
|
1306
1302
|
key: member.identity.identityKey.toHex(),
|
|
1307
1303
|
classNames: "flex gap-2 items-center cursor-pointer mbe-2",
|
|
1308
1304
|
onClick: () => onMemberClick?.(member),
|
|
1309
1305
|
"data-testid": "identity-list-item"
|
|
1310
|
-
}, /* @__PURE__ */
|
|
1306
|
+
}, /* @__PURE__ */ React13.createElement(PrensenceAvatar, {
|
|
1311
1307
|
identity: member.identity,
|
|
1312
1308
|
showName: true,
|
|
1313
1309
|
match: member.currentlyAttended
|
|
@@ -1317,10 +1313,10 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
|
|
|
1317
1313
|
const Root = group ? AvatarGroupItem.Root : Avatar.Root;
|
|
1318
1314
|
const status = match ? "current" : "active";
|
|
1319
1315
|
const fallbackValue = keyToFallback(identity.identityKey);
|
|
1320
|
-
return /* @__PURE__ */
|
|
1316
|
+
return /* @__PURE__ */ React13.createElement(Root, {
|
|
1321
1317
|
status,
|
|
1322
1318
|
hue: identity.profile?.data?.hue || fallbackValue.hue
|
|
1323
|
-
}, /* @__PURE__ */
|
|
1319
|
+
}, /* @__PURE__ */ React13.createElement(Avatar.Frame, {
|
|
1324
1320
|
"data-testid": "spacePlugin.presence.member",
|
|
1325
1321
|
"data-status": status,
|
|
1326
1322
|
...index ? {
|
|
@@ -1329,9 +1325,9 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
|
|
|
1329
1325
|
}
|
|
1330
1326
|
} : {},
|
|
1331
1327
|
onClick: () => onClick?.()
|
|
1332
|
-
}, /* @__PURE__ */
|
|
1328
|
+
}, /* @__PURE__ */ React13.createElement(Avatar.Fallback, {
|
|
1333
1329
|
text: identity.profile?.data?.emoji || fallbackValue.emoji
|
|
1334
|
-
})), showName && /* @__PURE__ */
|
|
1330
|
+
})), showName && /* @__PURE__ */ React13.createElement(Avatar.Label, {
|
|
1335
1331
|
classNames: "text-sm truncate pli-2"
|
|
1336
1332
|
}, getName(identity)));
|
|
1337
1333
|
};
|
|
@@ -1342,37 +1338,37 @@ var SmallPresenceLive = ({ viewers }) => {
|
|
|
1342
1338
|
return () => clearInterval(interval);
|
|
1343
1339
|
}, []);
|
|
1344
1340
|
const activeViewers = viewers ? Array.from(viewers.values()).filter(({ lastSeen }) => moment - lastSeen < ACTIVITY_DURATION) : [];
|
|
1345
|
-
return /* @__PURE__ */
|
|
1341
|
+
return /* @__PURE__ */ React13.createElement(SmallPresence, {
|
|
1346
1342
|
count: activeViewers.length
|
|
1347
1343
|
});
|
|
1348
1344
|
};
|
|
1349
1345
|
var SmallPresence = ({ count }) => {
|
|
1350
|
-
const { t } =
|
|
1351
|
-
return /* @__PURE__ */
|
|
1346
|
+
const { t } = useTranslation13(SPACE_PLUGIN);
|
|
1347
|
+
return /* @__PURE__ */ React13.createElement(Tooltip2.Root, null, /* @__PURE__ */ React13.createElement(Tooltip2.Trigger, {
|
|
1352
1348
|
asChild: true
|
|
1353
|
-
}, /* @__PURE__ */
|
|
1349
|
+
}, /* @__PURE__ */ React13.createElement(AttentionGlyph, {
|
|
1354
1350
|
presence: count > 1 ? "many" : count === 1 ? "one" : "none",
|
|
1355
1351
|
classNames: "self-center mie-1"
|
|
1356
|
-
})), /* @__PURE__ */
|
|
1352
|
+
})), /* @__PURE__ */ React13.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React13.createElement(Tooltip2.Content, {
|
|
1357
1353
|
side: "bottom",
|
|
1358
1354
|
classNames: "z-[70]"
|
|
1359
|
-
}, /* @__PURE__ */
|
|
1355
|
+
}, /* @__PURE__ */ React13.createElement("span", null, t("presence label", {
|
|
1360
1356
|
count
|
|
1361
|
-
})), /* @__PURE__ */
|
|
1357
|
+
})), /* @__PURE__ */ React13.createElement(Tooltip2.Arrow, null))));
|
|
1362
1358
|
};
|
|
1363
1359
|
|
|
1364
1360
|
// packages/plugins/plugin-space/src/components/SpaceSettings.tsx
|
|
1365
|
-
import
|
|
1361
|
+
import React14 from "react";
|
|
1366
1362
|
import { useIntentDispatcher as useIntentDispatcher2, useResolvePlugins } from "@dxos/app-framework";
|
|
1367
1363
|
import { SettingsValue } from "@dxos/plugin-settings";
|
|
1368
|
-
import { Input as
|
|
1364
|
+
import { Input as Input4, Select, toLocalizedString as toLocalizedString2, useTranslation as useTranslation14 } from "@dxos/react-ui";
|
|
1369
1365
|
var SpaceSettings = ({ settings }) => {
|
|
1370
|
-
const { t } =
|
|
1366
|
+
const { t } = useTranslation14(SPACE_PLUGIN);
|
|
1371
1367
|
const dispatch = useIntentDispatcher2();
|
|
1372
1368
|
const plugins = useResolvePlugins(parseSpaceInitPlugin);
|
|
1373
|
-
return /* @__PURE__ */
|
|
1369
|
+
return /* @__PURE__ */ React14.createElement(React14.Fragment, null, /* @__PURE__ */ React14.createElement(SettingsValue, {
|
|
1374
1370
|
label: t("show hidden spaces label")
|
|
1375
|
-
}, /* @__PURE__ */
|
|
1371
|
+
}, /* @__PURE__ */ React14.createElement(Input4.Switch, {
|
|
1376
1372
|
checked: settings.showHidden,
|
|
1377
1373
|
onCheckedChange: (checked) => dispatch({
|
|
1378
1374
|
plugin: SPACE_PLUGIN,
|
|
@@ -1381,28 +1377,28 @@ var SpaceSettings = ({ settings }) => {
|
|
|
1381
1377
|
state: !!checked
|
|
1382
1378
|
}
|
|
1383
1379
|
})
|
|
1384
|
-
})), /* @__PURE__ */
|
|
1380
|
+
})), /* @__PURE__ */ React14.createElement(SettingsValue, {
|
|
1385
1381
|
label: t("default on space create label")
|
|
1386
|
-
}, /* @__PURE__ */
|
|
1382
|
+
}, /* @__PURE__ */ React14.createElement(Select.Root, {
|
|
1387
1383
|
value: settings.onSpaceCreate,
|
|
1388
1384
|
onValueChange: (value) => {
|
|
1389
1385
|
settings.onSpaceCreate = value;
|
|
1390
1386
|
}
|
|
1391
|
-
}, /* @__PURE__ */
|
|
1387
|
+
}, /* @__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, {
|
|
1392
1388
|
key: onSpaceCreate.action,
|
|
1393
1389
|
value: onSpaceCreate.action
|
|
1394
1390
|
}, toLocalizedString2(onSpaceCreate.label, t)))))))));
|
|
1395
1391
|
};
|
|
1396
1392
|
|
|
1397
1393
|
// packages/plugins/plugin-space/src/components/SaveStatus.tsx
|
|
1398
|
-
import
|
|
1394
|
+
import React15, { useEffect as useEffect5, useState as useState8 } from "react";
|
|
1399
1395
|
import { Context } from "@dxos/context";
|
|
1400
1396
|
import { StatusBar } from "@dxos/plugin-status-bar";
|
|
1401
1397
|
import { useClient as useClient4 } from "@dxos/react-client";
|
|
1402
|
-
import { Icon, useTranslation as
|
|
1398
|
+
import { Icon, useTranslation as useTranslation15 } from "@dxos/react-ui";
|
|
1403
1399
|
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SaveStatus.tsx";
|
|
1404
1400
|
var SaveStatus = () => {
|
|
1405
|
-
const { t } =
|
|
1401
|
+
const { t } = useTranslation15(SPACE_PLUGIN);
|
|
1406
1402
|
const client = useClient4();
|
|
1407
1403
|
const [state, setState] = useState8("saved");
|
|
1408
1404
|
useEffect5(() => {
|
|
@@ -1410,9 +1406,9 @@ var SaveStatus = () => {
|
|
|
1410
1406
|
setState(state2);
|
|
1411
1407
|
});
|
|
1412
1408
|
}, []);
|
|
1413
|
-
return /* @__PURE__ */
|
|
1409
|
+
return /* @__PURE__ */ React15.createElement(StatusBar.Item, {
|
|
1414
1410
|
title: state === "saving" ? t("saving label") : t("saved label")
|
|
1415
|
-
}, /* @__PURE__ */
|
|
1411
|
+
}, /* @__PURE__ */ React15.createElement(Icon, {
|
|
1416
1412
|
icon: state === "saving" ? "ph--arrows-clockwise--regular" : "ph--check-circle--regular",
|
|
1417
1413
|
size: 4
|
|
1418
1414
|
}));
|
|
@@ -1477,11 +1473,11 @@ var createSpaceSaveTracker = (space, cb) => {
|
|
|
1477
1473
|
};
|
|
1478
1474
|
|
|
1479
1475
|
// packages/plugins/plugin-space/src/components/SyncStatus/SyncStatus.tsx
|
|
1480
|
-
import
|
|
1476
|
+
import React16, { useEffect as useEffect7, useState as useState10 } from "react";
|
|
1481
1477
|
import { StatusBar as StatusBar2 } from "@dxos/plugin-status-bar";
|
|
1482
|
-
import { Icon as Icon2, Popover as Popover3, useTranslation as
|
|
1478
|
+
import { Icon as Icon2, Popover as Popover3, useTranslation as useTranslation16 } from "@dxos/react-ui";
|
|
1483
1479
|
import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
|
|
1484
|
-
import { mx as
|
|
1480
|
+
import { mx as mx7 } from "@dxos/react-ui-theme";
|
|
1485
1481
|
|
|
1486
1482
|
// packages/plugins/plugin-space/src/components/SyncStatus/types.ts
|
|
1487
1483
|
import { useEffect as useEffect6, useState as useState9 } from "react";
|
|
@@ -1553,7 +1549,7 @@ var styles = {
|
|
|
1553
1549
|
};
|
|
1554
1550
|
var SyncStatus = () => {
|
|
1555
1551
|
const state = useSyncState();
|
|
1556
|
-
return /* @__PURE__ */
|
|
1552
|
+
return /* @__PURE__ */ React16.createElement(SyncStatusIndicator, {
|
|
1557
1553
|
state
|
|
1558
1554
|
});
|
|
1559
1555
|
};
|
|
@@ -1576,30 +1572,30 @@ var SyncStatusIndicator = ({ state }) => {
|
|
|
1576
1572
|
needsToUpload,
|
|
1577
1573
|
needsToDownload
|
|
1578
1574
|
]);
|
|
1579
|
-
return /* @__PURE__ */
|
|
1575
|
+
return /* @__PURE__ */ React16.createElement(StatusBar2.Item, null, /* @__PURE__ */ React16.createElement(Popover3.Root, null, /* @__PURE__ */ React16.createElement(Popover3.Trigger, null, /* @__PURE__ */ React16.createElement(Icon2, {
|
|
1580
1576
|
icon: offline ? "ph--cloud-x--regular" : needsToUpload ? "ph--cloud-arrow-up--regular" : needsToDownload ? "ph--cloud-arrow-down--regular" : "ph--cloud-check--regular",
|
|
1581
1577
|
size: 4,
|
|
1582
1578
|
classNames
|
|
1583
|
-
})), /* @__PURE__ */
|
|
1579
|
+
})), /* @__PURE__ */ React16.createElement(Popover3.Content, null, /* @__PURE__ */ React16.createElement(SyncStatusDetail, {
|
|
1584
1580
|
state,
|
|
1585
1581
|
summary,
|
|
1586
1582
|
debug: false
|
|
1587
1583
|
}))));
|
|
1588
1584
|
};
|
|
1589
1585
|
var SyncStatusDetail = ({ classNames, state, summary, debug }) => {
|
|
1590
|
-
const { t } =
|
|
1586
|
+
const { t } = useTranslation16(SPACE_PLUGIN);
|
|
1591
1587
|
const entries = Object.entries(state).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
|
|
1592
|
-
return /* @__PURE__ */
|
|
1593
|
-
className:
|
|
1594
|
-
}, /* @__PURE__ */
|
|
1588
|
+
return /* @__PURE__ */ React16.createElement("div", {
|
|
1589
|
+
className: mx7("flex flex-col text-xs min-w-[16rem]", classNames)
|
|
1590
|
+
}, /* @__PURE__ */ React16.createElement("h1", {
|
|
1595
1591
|
className: "p-2"
|
|
1596
|
-
}, t("sync status title")), /* @__PURE__ */
|
|
1592
|
+
}, t("sync status title")), /* @__PURE__ */ React16.createElement("div", {
|
|
1597
1593
|
className: "flex flex-col gap-[2px] my-[2px]"
|
|
1598
|
-
}, entries.map(([spaceId, state2]) => /* @__PURE__ */
|
|
1594
|
+
}, entries.map(([spaceId, state2]) => /* @__PURE__ */ React16.createElement(SpaceRow, {
|
|
1599
1595
|
key: spaceId,
|
|
1600
1596
|
spaceId,
|
|
1601
1597
|
state: state2
|
|
1602
|
-
}))), debug && /* @__PURE__ */
|
|
1598
|
+
}))), debug && /* @__PURE__ */ React16.createElement(SyntaxHighlighter, {
|
|
1603
1599
|
language: "json"
|
|
1604
1600
|
}, JSON.stringify(summary, null, 2)));
|
|
1605
1601
|
};
|
|
@@ -1629,17 +1625,17 @@ var useActive = (count) => {
|
|
|
1629
1625
|
var SpaceRow = ({ spaceId, state: { localDocumentCount, remoteDocumentCount, missingOnLocal, missingOnRemote } }) => {
|
|
1630
1626
|
const downActive = useActive(localDocumentCount);
|
|
1631
1627
|
const upActive = useActive(remoteDocumentCount);
|
|
1632
|
-
return /* @__PURE__ */
|
|
1633
|
-
className:
|
|
1628
|
+
return /* @__PURE__ */ React16.createElement("div", {
|
|
1629
|
+
className: mx7("flex items-center mx-[2px] gap-[2px] cursor-pointer", styles.barHover),
|
|
1634
1630
|
title: spaceId,
|
|
1635
1631
|
onClick: () => {
|
|
1636
1632
|
void navigator.clipboard.writeText(spaceId);
|
|
1637
1633
|
}
|
|
1638
|
-
}, /* @__PURE__ */
|
|
1634
|
+
}, /* @__PURE__ */ React16.createElement(Icon2, {
|
|
1639
1635
|
icon: "ph--arrow-fat-line-left--regular",
|
|
1640
1636
|
size: 3,
|
|
1641
|
-
classNames:
|
|
1642
|
-
}), /* @__PURE__ */
|
|
1637
|
+
classNames: mx7(downActive && "animate-[pulse_1s_infinite]")
|
|
1638
|
+
}), /* @__PURE__ */ React16.createElement(Candle, {
|
|
1643
1639
|
up: {
|
|
1644
1640
|
count: remoteDocumentCount,
|
|
1645
1641
|
total: remoteDocumentCount + missingOnRemote
|
|
@@ -1649,37 +1645,37 @@ var SpaceRow = ({ spaceId, state: { localDocumentCount, remoteDocumentCount, mis
|
|
|
1649
1645
|
total: localDocumentCount + missingOnLocal
|
|
1650
1646
|
},
|
|
1651
1647
|
title: spaceId
|
|
1652
|
-
}), /* @__PURE__ */
|
|
1648
|
+
}), /* @__PURE__ */ React16.createElement(Icon2, {
|
|
1653
1649
|
icon: "ph--arrow-fat-line-right--regular",
|
|
1654
1650
|
size: 3,
|
|
1655
|
-
classNames:
|
|
1651
|
+
classNames: mx7(upActive && "animate-[pulse_1s_step-start_infinite]")
|
|
1656
1652
|
}));
|
|
1657
1653
|
};
|
|
1658
1654
|
var Candle = ({ classNames, up, down }) => {
|
|
1659
|
-
return /* @__PURE__ */
|
|
1660
|
-
className:
|
|
1661
|
-
}, /* @__PURE__ */
|
|
1655
|
+
return /* @__PURE__ */ React16.createElement("div", {
|
|
1656
|
+
className: mx7("grid grid-cols-[1fr_2rem_1fr] w-full h-3", classNames)
|
|
1657
|
+
}, /* @__PURE__ */ React16.createElement(Bar, {
|
|
1662
1658
|
classNames: "justify-end",
|
|
1663
1659
|
...up
|
|
1664
|
-
}), /* @__PURE__ */
|
|
1660
|
+
}), /* @__PURE__ */ React16.createElement("div", {
|
|
1665
1661
|
className: "relative"
|
|
1666
|
-
}, /* @__PURE__ */
|
|
1667
|
-
className:
|
|
1668
|
-
}, up.total)), /* @__PURE__ */
|
|
1662
|
+
}, /* @__PURE__ */ React16.createElement("div", {
|
|
1663
|
+
className: mx7("absolute inset-0 flex items-center justify-center text-xs", styles.barBg)
|
|
1664
|
+
}, up.total)), /* @__PURE__ */ React16.createElement(Bar, down));
|
|
1669
1665
|
};
|
|
1670
1666
|
var Bar = ({ classNames, count, total }) => {
|
|
1671
1667
|
let p = count / total * 100;
|
|
1672
1668
|
if (count < total) {
|
|
1673
1669
|
p = Math.min(p, 95);
|
|
1674
1670
|
}
|
|
1675
|
-
return /* @__PURE__ */
|
|
1676
|
-
className:
|
|
1677
|
-
}, /* @__PURE__ */
|
|
1678
|
-
className:
|
|
1671
|
+
return /* @__PURE__ */ React16.createElement("div", {
|
|
1672
|
+
className: mx7("relative flex w-full", styles.barBg, classNames)
|
|
1673
|
+
}, /* @__PURE__ */ React16.createElement("div", {
|
|
1674
|
+
className: mx7("shrink-0", styles.barFg),
|
|
1679
1675
|
style: {
|
|
1680
1676
|
width: `${p}%`
|
|
1681
1677
|
}
|
|
1682
|
-
}), count !== total && /* @__PURE__ */
|
|
1678
|
+
}), count !== total && /* @__PURE__ */ React16.createElement("div", {
|
|
1683
1679
|
className: "absolute top-0 bottom-0 flex items-center mx-0.5 text-black text-xs"
|
|
1684
1680
|
}, count));
|
|
1685
1681
|
};
|
|
@@ -1765,7 +1761,9 @@ var translations_default = [
|
|
|
1765
1761
|
"remove deleted objects alt": "Permanently remove deleted objects to free up space.",
|
|
1766
1762
|
"copy link label": "Copy link",
|
|
1767
1763
|
"default on space create label": "On space create",
|
|
1768
|
-
"sync status title": "Sync status"
|
|
1764
|
+
"sync status title": "Sync status",
|
|
1765
|
+
"name label": "Name",
|
|
1766
|
+
"name placeholder": "Name"
|
|
1769
1767
|
}
|
|
1770
1768
|
}
|
|
1771
1769
|
}
|
|
@@ -1862,7 +1860,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
1862
1860
|
err: err.message
|
|
1863
1861
|
}, {
|
|
1864
1862
|
F: __dxlog_file5,
|
|
1865
|
-
L:
|
|
1863
|
+
L: 224,
|
|
1866
1864
|
S: void 0,
|
|
1867
1865
|
C: (f, a) => f(...a)
|
|
1868
1866
|
});
|
|
@@ -1971,7 +1969,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
1971
1969
|
...translations_default,
|
|
1972
1970
|
osTranslations
|
|
1973
1971
|
],
|
|
1974
|
-
root: () => state.values.awaiting ? /* @__PURE__ */
|
|
1972
|
+
root: () => state.values.awaiting ? /* @__PURE__ */ React17.createElement(AwaitingObject, {
|
|
1975
1973
|
id: state.values.awaiting
|
|
1976
1974
|
}) : null,
|
|
1977
1975
|
metadata: {
|
|
@@ -2003,7 +2001,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2003
2001
|
switch (role) {
|
|
2004
2002
|
case "article":
|
|
2005
2003
|
case "main":
|
|
2006
|
-
return isSpace2(primary) && primary.state.get() === SpaceState3.SPACE_READY ? /* @__PURE__ */
|
|
2004
|
+
return isSpace2(primary) && primary.state.get() === SpaceState3.SPACE_READY ? /* @__PURE__ */ React17.createElement(Surface2, {
|
|
2007
2005
|
data: {
|
|
2008
2006
|
active: primary.properties[CollectionType.typename],
|
|
2009
2007
|
id: primary.id
|
|
@@ -2011,26 +2009,20 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2011
2009
|
role,
|
|
2012
2010
|
...rest
|
|
2013
2011
|
}) : primary instanceof CollectionType ? {
|
|
2014
|
-
node: /* @__PURE__ */
|
|
2012
|
+
node: /* @__PURE__ */ React17.createElement(CollectionMain, {
|
|
2015
2013
|
collection: primary
|
|
2016
2014
|
}),
|
|
2017
2015
|
disposition: "fallback"
|
|
2018
|
-
} : typeof primary === "string" && primary.length === OBJECT_ID_LENGTH ? /* @__PURE__ */
|
|
2016
|
+
} : typeof primary === "string" && primary.length === OBJECT_ID_LENGTH ? /* @__PURE__ */ React17.createElement(MissingObject, {
|
|
2019
2017
|
id: primary
|
|
2020
2018
|
}) : null;
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
return /* @__PURE__ */ React18.createElement(EmptyTree, null);
|
|
2026
|
-
case (isGraphNode(data.activeNode) && isSpace2(data.activeNode.data)):
|
|
2027
|
-
return /* @__PURE__ */ React18.createElement(EmptySpace, null);
|
|
2028
|
-
default:
|
|
2029
|
-
return null;
|
|
2030
|
-
}
|
|
2019
|
+
case "complementary--settings":
|
|
2020
|
+
return isEchoObject2(data.subject) ? /* @__PURE__ */ React17.createElement(FallbackSettings, {
|
|
2021
|
+
object: data.subject
|
|
2022
|
+
}) : null;
|
|
2031
2023
|
case "dialog":
|
|
2032
2024
|
if (data.component === "dxos.org/plugin/space/InvitationManagerDialog") {
|
|
2033
|
-
return /* @__PURE__ */
|
|
2025
|
+
return /* @__PURE__ */ React17.createElement(Dialog.Content, null, /* @__PURE__ */ React17.createElement(ClipboardProvider2, null, /* @__PURE__ */ React17.createElement(InvitationManager, {
|
|
2034
2026
|
active: true,
|
|
2035
2027
|
...data.subject
|
|
2036
2028
|
})));
|
|
@@ -2039,20 +2031,21 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2039
2031
|
}
|
|
2040
2032
|
case "popover":
|
|
2041
2033
|
if (data.component === "dxos.org/plugin/space/RenameSpacePopover" && isSpace2(data.subject)) {
|
|
2042
|
-
return /* @__PURE__ */
|
|
2034
|
+
return /* @__PURE__ */ React17.createElement(PopoverRenameSpace, {
|
|
2043
2035
|
space: data.subject
|
|
2044
2036
|
});
|
|
2045
2037
|
}
|
|
2046
2038
|
if (data.component === "dxos.org/plugin/space/RenameObjectPopover" && isReactiveObject2(data.subject)) {
|
|
2047
|
-
return /* @__PURE__ */
|
|
2039
|
+
return /* @__PURE__ */ React17.createElement(PopoverRenameObject, {
|
|
2048
2040
|
object: data.subject
|
|
2049
2041
|
});
|
|
2050
2042
|
}
|
|
2051
2043
|
return null;
|
|
2044
|
+
// TODO(burdon): Add role name syntax to minimal plugin docs.
|
|
2052
2045
|
case "presence--glyph": {
|
|
2053
|
-
return isReactiveObject2(data.object) ? /* @__PURE__ */
|
|
2046
|
+
return isReactiveObject2(data.object) ? /* @__PURE__ */ React17.createElement(SmallPresenceLive, {
|
|
2054
2047
|
viewers: state.values.viewersByObject[fullyQualifiedId4(data.object)]
|
|
2055
|
-
}) : /* @__PURE__ */
|
|
2048
|
+
}) : /* @__PURE__ */ React17.createElement(SmallPresence, {
|
|
2056
2049
|
count: 0
|
|
2057
2050
|
});
|
|
2058
2051
|
}
|
|
@@ -2066,32 +2059,32 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2066
2059
|
const space = isSpace2(data.object) ? data.object : getSpace4(data.object);
|
|
2067
2060
|
const object = isSpace2(data.object) ? data.object.state.get() === SpaceState3.SPACE_READY ? space?.properties[CollectionType.typename] : void 0 : data.object;
|
|
2068
2061
|
return space && object ? {
|
|
2069
|
-
node: /* @__PURE__ */
|
|
2062
|
+
node: /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(SpacePresence, {
|
|
2070
2063
|
object
|
|
2071
|
-
}), space.properties[COMPOSER_SPACE_LOCK] ? null : /* @__PURE__ */
|
|
2064
|
+
}), space.properties[COMPOSER_SPACE_LOCK] ? null : /* @__PURE__ */ React17.createElement(ShareSpaceButton, {
|
|
2072
2065
|
spaceId: space.id
|
|
2073
2066
|
})),
|
|
2074
2067
|
disposition: "hoist"
|
|
2075
2068
|
} : null;
|
|
2076
2069
|
}
|
|
2077
2070
|
case "section":
|
|
2078
|
-
return data.object instanceof CollectionType ? /* @__PURE__ */
|
|
2071
|
+
return data.object instanceof CollectionType ? /* @__PURE__ */ React17.createElement(CollectionSection, {
|
|
2079
2072
|
collection: data.object
|
|
2080
2073
|
}) : null;
|
|
2081
2074
|
case "settings":
|
|
2082
|
-
return data.plugin === meta_default.id ? /* @__PURE__ */
|
|
2075
|
+
return data.plugin === meta_default.id ? /* @__PURE__ */ React17.createElement(SpaceSettings, {
|
|
2083
2076
|
settings: settings.values
|
|
2084
2077
|
}) : null;
|
|
2085
2078
|
case "menu-footer":
|
|
2086
2079
|
if (!isEchoObject2(data.object)) {
|
|
2087
2080
|
return null;
|
|
2088
2081
|
} else {
|
|
2089
|
-
return /* @__PURE__ */
|
|
2082
|
+
return /* @__PURE__ */ React17.createElement(MenuFooter, {
|
|
2090
2083
|
object: data.object
|
|
2091
2084
|
});
|
|
2092
2085
|
}
|
|
2093
2086
|
case "status": {
|
|
2094
|
-
return /* @__PURE__ */
|
|
2087
|
+
return /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(SyncStatus, null), /* @__PURE__ */ React17.createElement(SaveStatus, null));
|
|
2095
2088
|
}
|
|
2096
2089
|
default:
|
|
2097
2090
|
return null;
|
|
@@ -2153,7 +2146,7 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2153
2146
|
} else {
|
|
2154
2147
|
log2.warn("spaces order object not found", void 0, {
|
|
2155
2148
|
F: __dxlog_file5,
|
|
2156
|
-
L:
|
|
2149
|
+
L: 520,
|
|
2157
2150
|
S: void 0,
|
|
2158
2151
|
C: (f, a) => f(...a)
|
|
2159
2152
|
});
|
|
@@ -2342,6 +2335,45 @@ var SpacePlugin = ({ firstRun, onFirstRun } = {}) => {
|
|
|
2342
2335
|
resolve
|
|
2343
2336
|
})).filter(nonNullable);
|
|
2344
2337
|
}
|
|
2338
|
+
}),
|
|
2339
|
+
// Create nodes for object settings.
|
|
2340
|
+
createExtension({
|
|
2341
|
+
id: `${SPACE_PLUGIN}/settings-for-subject`,
|
|
2342
|
+
resolver: ({ id }) => {
|
|
2343
|
+
if (!id.endsWith("~settings")) {
|
|
2344
|
+
return;
|
|
2345
|
+
}
|
|
2346
|
+
const subjectId = id.split("~").at(0);
|
|
2347
|
+
const [spaceId, objectId] = subjectId?.split(":") ?? [];
|
|
2348
|
+
const space = client.spaces.get().find((space2) => space2.id === spaceId);
|
|
2349
|
+
const object = toSignal((onChange) => {
|
|
2350
|
+
const timeout = setTimeout(async () => {
|
|
2351
|
+
await space?.db.loadObjectById(objectId);
|
|
2352
|
+
onChange();
|
|
2353
|
+
});
|
|
2354
|
+
return () => clearTimeout(timeout);
|
|
2355
|
+
}, () => space?.db.getObjectById(objectId), subjectId);
|
|
2356
|
+
if (!object || !subjectId) {
|
|
2357
|
+
return;
|
|
2358
|
+
}
|
|
2359
|
+
const meta = resolve(getTypename2(object) ?? "");
|
|
2360
|
+
const label = meta.label?.(object) || object.name || meta.placeholder || [
|
|
2361
|
+
"unnamed object settings label",
|
|
2362
|
+
{
|
|
2363
|
+
ns: SPACE_PLUGIN
|
|
2364
|
+
}
|
|
2365
|
+
];
|
|
2366
|
+
return {
|
|
2367
|
+
id,
|
|
2368
|
+
type: "orphan-settings-for-subject",
|
|
2369
|
+
data: null,
|
|
2370
|
+
properties: {
|
|
2371
|
+
icon: "ph--gear--regular",
|
|
2372
|
+
label,
|
|
2373
|
+
object
|
|
2374
|
+
}
|
|
2375
|
+
};
|
|
2376
|
+
}
|
|
2345
2377
|
})
|
|
2346
2378
|
];
|
|
2347
2379
|
},
|
|
@@ -2903,8 +2935,7 @@ export {
|
|
|
2903
2935
|
CollectionSection,
|
|
2904
2936
|
CollectionType,
|
|
2905
2937
|
ContactType,
|
|
2906
|
-
|
|
2907
|
-
EmptyTree,
|
|
2938
|
+
FallbackSettings,
|
|
2908
2939
|
FullPresence,
|
|
2909
2940
|
MenuFooter,
|
|
2910
2941
|
MessageState,
|