@dxos/shell 0.4.7-main.dca306f → 0.4.7-main.ea67fec
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/bundle/shell.mjs +62613 -20067
- package/dist/bundle/shell.mjs.map +1 -1
- package/dist/bundle/shell.umd.js +793 -78
- package/dist/bundle/shell.umd.js.map +1 -1
- package/dist/bundle/style.css +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react.mjs +766 -591
- package/dist/lib/browser/react.mjs.map +4 -4
- package/dist/types/src/components/EmojiPicker.d.ts +11 -0
- package/dist/types/src/components/EmojiPicker.d.ts.map +1 -0
- package/dist/types/src/components/EmojiPicker.js +79 -0
- package/dist/types/src/components/EmojiPicker.js.map +1 -0
- package/dist/types/src/components/HuePicker.d.ts +11 -0
- package/dist/types/src/components/HuePicker.d.ts.map +1 -0
- package/dist/types/src/components/HuePicker.js +56 -0
- package/dist/types/src/components/HuePicker.js.map +1 -0
- package/dist/types/src/components/IdentityList/IdentityListItem.d.ts.map +1 -1
- package/dist/types/src/components/IdentityList/IdentityListItem.js +5 -5
- package/dist/types/src/components/IdentityList/IdentityListItem.js.map +1 -1
- package/dist/types/src/components/InvitationList/InvitationListItem.d.ts.map +1 -1
- package/dist/types/src/components/InvitationList/InvitationListItem.js +2 -2
- package/dist/types/src/components/InvitationList/InvitationListItem.js.map +1 -1
- package/dist/types/src/components/SpaceListItem.d.ts.map +1 -1
- package/dist/types/src/components/SpaceListItem.js +2 -3
- package/dist/types/src/components/SpaceListItem.js.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/index.js +2 -0
- package/dist/types/src/components/index.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +6 -5
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js +12 -3
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js.map +1 -1
- package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.d.ts.map +1 -1
- package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js +8 -7
- package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js.map +1 -1
- package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.js +2 -2
- package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.js.map +1 -1
- package/dist/types/src/steps/InvitationManager.d.ts.map +1 -1
- package/dist/types/src/steps/InvitationManager.js +5 -4
- package/dist/types/src/steps/InvitationManager.js.map +1 -1
- package/dist/types/src/translations/locales/en-US.d.ts +21 -0
- package/dist/types/src/translations/locales/en-US.d.ts.map +1 -1
- package/dist/types/src/translations/locales/en-US.js +21 -0
- package/dist/types/src/translations/locales/en-US.js.map +1 -1
- package/dist/types/src/util/index.d.ts +0 -1
- package/dist/types/src/util/index.d.ts.map +1 -1
- package/dist/types/src/util/index.js +0 -1
- package/dist/types/src/util/index.js.map +1 -1
- package/package.json +22 -21
- package/src/components/EmojiPicker.tsx +82 -0
- package/src/components/HuePicker.tsx +87 -0
- package/src/components/IdentityList/IdentityListItem.tsx +9 -5
- package/src/components/InvitationList/InvitationListItem.tsx +2 -2
- package/src/components/SpaceListItem.tsx +4 -5
- package/src/components/index.ts +2 -0
- package/src/panels/IdentityPanel/IdentityPanel.tsx +5 -4
- package/src/panels/IdentityPanel/steps/ProfileForm.tsx +28 -7
- package/src/panels/JoinPanel/steps/IdentityAdded.tsx +7 -7
- package/src/panels/JoinPanel/steps/InvitationAuthenticator.tsx +2 -2
- package/src/steps/InvitationManager.tsx +4 -3
- package/src/translations/locales/en-US.ts +21 -0
- package/src/util/index.ts +0 -1
- package/dist/types/src/util/toEmoji.d.ts +0 -2
- package/dist/types/src/util/toEmoji.d.ts.map +0 -1
- package/dist/types/src/util/toEmoji.js +0 -26
- package/dist/types/src/util/toEmoji.js.map +0 -1
- package/src/util/toEmoji.ts +0 -22
|
@@ -139,47 +139,188 @@ var CompoundButton = ({ children, description, before, after, variant = "default
|
|
|
139
139
|
}, after));
|
|
140
140
|
};
|
|
141
141
|
|
|
142
|
-
// packages/sdk/shell/src/components/
|
|
142
|
+
// packages/sdk/shell/src/components/EmojiPicker.tsx
|
|
143
|
+
import emojiData from "@emoji-mart/data";
|
|
144
|
+
import EmojiMart from "@emoji-mart/react";
|
|
145
|
+
import { ArrowCounterClockwise, CaretDown } from "@phosphor-icons/react";
|
|
146
|
+
import { useControllableState } from "@radix-ui/react-use-controllable-state";
|
|
147
|
+
import React4, { useState as useState3 } from "react";
|
|
148
|
+
import { Button as Button2, Popover, useTranslation as useTranslation2, Tooltip as Tooltip2 } from "@dxos/react-ui";
|
|
149
|
+
import { getSize as getSize2 } from "@dxos/react-ui-theme";
|
|
150
|
+
var EmojiPicker = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear }) => {
|
|
151
|
+
const { t } = useTranslation2("os");
|
|
152
|
+
const [emojiValue, setEmojiValue] = useControllableState({
|
|
153
|
+
prop: emoji,
|
|
154
|
+
onChange: onChangeEmoji,
|
|
155
|
+
defaultProp: defaultEmoji
|
|
156
|
+
});
|
|
157
|
+
const [emojiPickerOpen, setEmojiPickerOpen] = useState3(false);
|
|
158
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(Popover.Root, {
|
|
159
|
+
open: emojiPickerOpen,
|
|
160
|
+
onOpenChange: setEmojiPickerOpen
|
|
161
|
+
}, /* @__PURE__ */ React4.createElement(Popover.Trigger, {
|
|
162
|
+
asChild: true
|
|
163
|
+
}, /* @__PURE__ */ React4.createElement(Button2, {
|
|
164
|
+
variant: "ghost",
|
|
165
|
+
classNames: "gap-2 text-2xl plb-1",
|
|
166
|
+
disabled
|
|
167
|
+
}, /* @__PURE__ */ React4.createElement("span", {
|
|
168
|
+
className: "sr-only"
|
|
169
|
+
}, t("select emoji label")), /* @__PURE__ */ React4.createElement("span", {
|
|
170
|
+
className: "grow pis-14"
|
|
171
|
+
}, emojiValue), /* @__PURE__ */ React4.createElement(CaretDown, {
|
|
172
|
+
className: getSize2(4)
|
|
173
|
+
}))), /* @__PURE__ */ React4.createElement(Popover.Content, {
|
|
174
|
+
side: "right",
|
|
175
|
+
onKeyDownCapture: (event) => {
|
|
176
|
+
if (event.key === "Escape") {
|
|
177
|
+
event.stopPropagation();
|
|
178
|
+
setEmojiPickerOpen(false);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}, /* @__PURE__ */ React4.createElement(EmojiMart, {
|
|
182
|
+
data: emojiData,
|
|
183
|
+
onEmojiSelect: ({ native }) => {
|
|
184
|
+
if (native) {
|
|
185
|
+
setEmojiValue(native);
|
|
186
|
+
setEmojiPickerOpen(false);
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
autoFocus: true,
|
|
190
|
+
maxFrequentRows: 0,
|
|
191
|
+
noCountryFlags: true
|
|
192
|
+
}), /* @__PURE__ */ React4.createElement(Popover.Arrow, null))), /* @__PURE__ */ React4.createElement(Tooltip2.Root, null, /* @__PURE__ */ React4.createElement(Tooltip2.Trigger, {
|
|
193
|
+
asChild: true
|
|
194
|
+
}, /* @__PURE__ */ React4.createElement(Button2, {
|
|
195
|
+
variant: "ghost",
|
|
196
|
+
onClick: onClickClear,
|
|
197
|
+
disabled
|
|
198
|
+
}, /* @__PURE__ */ React4.createElement("span", {
|
|
199
|
+
className: "sr-only"
|
|
200
|
+
}, t("clear label")), /* @__PURE__ */ React4.createElement(ArrowCounterClockwise, null))), /* @__PURE__ */ React4.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React4.createElement(Tooltip2.Content, {
|
|
201
|
+
style: {
|
|
202
|
+
zIndex: 70
|
|
203
|
+
},
|
|
204
|
+
side: "right"
|
|
205
|
+
}, t("clear label"), /* @__PURE__ */ React4.createElement(Tooltip2.Arrow, null)))));
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
// packages/sdk/shell/src/components/HuePicker.tsx
|
|
209
|
+
import { ArrowCounterClockwise as ArrowCounterClockwise2, CaretDown as CaretDown2, Check as Check2 } from "@phosphor-icons/react";
|
|
210
|
+
import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
|
|
143
211
|
import React5 from "react";
|
|
212
|
+
import { Button as Button3, useTranslation as useTranslation3, Tooltip as Tooltip3, DropdownMenu, useThemeContext as useThemeContext2 } from "@dxos/react-ui";
|
|
213
|
+
import { getSize as getSize3, hueTokenThemes } from "@dxos/react-ui-theme";
|
|
214
|
+
var HuePreview = ({ hue }) => {
|
|
215
|
+
const { tx } = useThemeContext2();
|
|
216
|
+
return /* @__PURE__ */ React5.createElement("svg", {
|
|
217
|
+
width: 12,
|
|
218
|
+
height: 12,
|
|
219
|
+
viewBox: "0 0 12 12"
|
|
220
|
+
}, /* @__PURE__ */ React5.createElement("rect", {
|
|
221
|
+
x: 0,
|
|
222
|
+
y: 0,
|
|
223
|
+
width: 12,
|
|
224
|
+
height: 12,
|
|
225
|
+
className: tx("hue.fill", "select--hue__preview", {
|
|
226
|
+
hue
|
|
227
|
+
})
|
|
228
|
+
}));
|
|
229
|
+
};
|
|
230
|
+
var HuePicker = ({ disabled, hue, onChangeHue, defaultHue, onClickClear }) => {
|
|
231
|
+
const { t } = useTranslation3("os");
|
|
232
|
+
const [hueValue, setHueValue] = useControllableState2({
|
|
233
|
+
prop: hue,
|
|
234
|
+
onChange: onChangeHue,
|
|
235
|
+
defaultProp: defaultHue
|
|
236
|
+
});
|
|
237
|
+
return /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Root, {
|
|
238
|
+
modal: false
|
|
239
|
+
}, /* @__PURE__ */ React5.createElement(DropdownMenu.Trigger, {
|
|
240
|
+
asChild: true
|
|
241
|
+
}, /* @__PURE__ */ React5.createElement(Button3, {
|
|
242
|
+
variant: "ghost",
|
|
243
|
+
classNames: "gap-2 plb-1",
|
|
244
|
+
disabled
|
|
245
|
+
}, /* @__PURE__ */ React5.createElement("span", {
|
|
246
|
+
className: "sr-only"
|
|
247
|
+
}, t("select hue label")), /* @__PURE__ */ React5.createElement("div", {
|
|
248
|
+
role: "none",
|
|
249
|
+
className: "pis-14 grow flex items-center justify-center gap-2"
|
|
250
|
+
}, /* @__PURE__ */ React5.createElement(HuePreview, {
|
|
251
|
+
hue: hueValue
|
|
252
|
+
}), /* @__PURE__ */ React5.createElement("span", null, t(`${hueValue} label`))), /* @__PURE__ */ React5.createElement(CaretDown2, {
|
|
253
|
+
className: getSize3(4)
|
|
254
|
+
}))), /* @__PURE__ */ React5.createElement(DropdownMenu.Content, {
|
|
255
|
+
side: "right"
|
|
256
|
+
}, /* @__PURE__ */ React5.createElement(DropdownMenu.Viewport, null, Object.keys(hueTokenThemes).map((hue2) => {
|
|
257
|
+
return /* @__PURE__ */ React5.createElement(DropdownMenu.CheckboxItem, {
|
|
258
|
+
key: hue2,
|
|
259
|
+
checked: hue2 === hueValue,
|
|
260
|
+
onCheckedChange: () => setHueValue(hue2)
|
|
261
|
+
}, /* @__PURE__ */ React5.createElement(HuePreview, {
|
|
262
|
+
hue: hue2
|
|
263
|
+
}), /* @__PURE__ */ React5.createElement("span", {
|
|
264
|
+
className: "grow"
|
|
265
|
+
}, t(`${hue2} label`)), /* @__PURE__ */ React5.createElement(DropdownMenu.ItemIndicator, null, /* @__PURE__ */ React5.createElement(Check2, null)));
|
|
266
|
+
})), /* @__PURE__ */ React5.createElement(DropdownMenu.Arrow, null))), /* @__PURE__ */ React5.createElement(Tooltip3.Root, null, /* @__PURE__ */ React5.createElement(Tooltip3.Trigger, {
|
|
267
|
+
asChild: true
|
|
268
|
+
}, /* @__PURE__ */ React5.createElement(Button3, {
|
|
269
|
+
variant: "ghost",
|
|
270
|
+
onClick: onClickClear,
|
|
271
|
+
disabled
|
|
272
|
+
}, /* @__PURE__ */ React5.createElement("span", {
|
|
273
|
+
className: "sr-only"
|
|
274
|
+
}, t("clear label")), /* @__PURE__ */ React5.createElement(ArrowCounterClockwise2, null))), /* @__PURE__ */ React5.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React5.createElement(Tooltip3.Content, {
|
|
275
|
+
style: {
|
|
276
|
+
zIndex: 70
|
|
277
|
+
},
|
|
278
|
+
side: "right"
|
|
279
|
+
}, t("clear label"), /* @__PURE__ */ React5.createElement(Tooltip3.Arrow, null)))));
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
// packages/sdk/shell/src/components/IdentityList/DeviceList.tsx
|
|
283
|
+
import React7 from "react";
|
|
144
284
|
import { generateName as generateName2 } from "@dxos/display-name";
|
|
145
285
|
import { DeviceType } from "@dxos/react-client/halo";
|
|
146
|
-
import { List, useTranslation as
|
|
286
|
+
import { List, useTranslation as useTranslation4 } from "@dxos/react-ui";
|
|
147
287
|
import { descriptionText as descriptionText2, mx as mx4 } from "@dxos/react-ui-theme";
|
|
148
288
|
|
|
149
289
|
// packages/sdk/shell/src/components/IdentityList/IdentityListItem.tsx
|
|
150
|
-
import
|
|
290
|
+
import React6, { forwardRef } from "react";
|
|
151
291
|
import { generateName } from "@dxos/display-name";
|
|
152
292
|
import { SpaceMember } from "@dxos/react-client/echo";
|
|
153
|
-
import { ListItem, Avatar,
|
|
293
|
+
import { ListItem, Avatar, useId as useId2 } from "@dxos/react-ui";
|
|
154
294
|
import { mx as mx3 } from "@dxos/react-ui-theme";
|
|
295
|
+
import { keyToFallback } from "@dxos/util";
|
|
155
296
|
var IdentityListItem = /* @__PURE__ */ forwardRef(({ identity, presence, onClick, classNames, ...props }, forwardedRef) => {
|
|
156
|
-
const fallbackValue = identity.identityKey
|
|
297
|
+
const fallbackValue = keyToFallback(identity.identityKey);
|
|
157
298
|
const labelId = useId2("identityListItem__label");
|
|
158
|
-
const jdenticon = useJdenticonHref(fallbackValue ?? "", 12);
|
|
159
299
|
const displayName = identity.profile?.displayName ?? generateName(identity.identityKey.toHex());
|
|
160
|
-
return /* @__PURE__ */
|
|
300
|
+
return /* @__PURE__ */ React6.createElement(ListItem.Root, {
|
|
161
301
|
...props,
|
|
162
302
|
classNames: mx3("flex gap-2 pis-3 pie-1 items-center", onClick && "cursor-pointer", classNames),
|
|
163
303
|
onClick: () => onClick?.(),
|
|
164
304
|
"data-testid": "identity-list-item",
|
|
165
305
|
labelId,
|
|
166
306
|
ref: forwardedRef
|
|
167
|
-
}, /* @__PURE__ */
|
|
307
|
+
}, /* @__PURE__ */ React6.createElement(Avatar.Root, {
|
|
168
308
|
status: presence === SpaceMember.PresenceState.ONLINE ? "active" : "inactive",
|
|
169
|
-
labelId
|
|
170
|
-
|
|
309
|
+
labelId,
|
|
310
|
+
hue: identity.profile?.hue || fallbackValue.hue
|
|
311
|
+
}, /* @__PURE__ */ React6.createElement(Avatar.Frame, {
|
|
171
312
|
classNames: "place-self-center"
|
|
172
|
-
}, /* @__PURE__ */
|
|
173
|
-
|
|
174
|
-
})), /* @__PURE__ */
|
|
313
|
+
}, /* @__PURE__ */ React6.createElement(Avatar.Fallback, {
|
|
314
|
+
text: identity.profile?.emoji || fallbackValue.emoji
|
|
315
|
+
})), /* @__PURE__ */ React6.createElement(Avatar.Label, {
|
|
175
316
|
classNames: "text-sm truncate pli-2"
|
|
176
317
|
}, displayName)));
|
|
177
318
|
});
|
|
178
319
|
|
|
179
320
|
// packages/sdk/shell/src/components/IdentityList/DeviceList.tsx
|
|
180
321
|
var DeviceList = ({ devices, onSelect }) => {
|
|
181
|
-
const { t } =
|
|
182
|
-
return devices.length > 0 ? /* @__PURE__ */
|
|
322
|
+
const { t } = useTranslation4("os");
|
|
323
|
+
return devices.length > 0 ? /* @__PURE__ */ React7.createElement(List, {
|
|
183
324
|
classNames: "flex flex-col gap-2"
|
|
184
325
|
}, devices.map((device) => {
|
|
185
326
|
const deviceType = device.profile?.type || DeviceType.UNKNOWN;
|
|
@@ -190,25 +331,25 @@ var DeviceList = ({ devices, onSelect }) => {
|
|
|
190
331
|
displayName
|
|
191
332
|
}
|
|
192
333
|
};
|
|
193
|
-
return /* @__PURE__ */
|
|
334
|
+
return /* @__PURE__ */ React7.createElement(IdentityListItem, {
|
|
194
335
|
key: device.deviceKey.toHex(),
|
|
195
336
|
identity,
|
|
196
337
|
presence: device.presence,
|
|
197
338
|
onClick: onSelect && (() => onSelect(device))
|
|
198
339
|
});
|
|
199
|
-
})) : /* @__PURE__ */
|
|
340
|
+
})) : /* @__PURE__ */ React7.createElement("div", {
|
|
200
341
|
role: "none",
|
|
201
342
|
className: "grow flex items-center p-2"
|
|
202
|
-
}, /* @__PURE__ */
|
|
343
|
+
}, /* @__PURE__ */ React7.createElement("p", {
|
|
203
344
|
className: mx4(descriptionText2, "text-center is-full")
|
|
204
345
|
}, t("empty device list message")));
|
|
205
346
|
};
|
|
206
347
|
|
|
207
348
|
// packages/sdk/shell/src/components/IdentityList/SpaceMemberList.tsx
|
|
208
|
-
import
|
|
349
|
+
import React8, { useMemo } from "react";
|
|
209
350
|
import { useClient } from "@dxos/react-client";
|
|
210
351
|
import { useMembers } from "@dxos/react-client/echo";
|
|
211
|
-
import { useTranslation as
|
|
352
|
+
import { useTranslation as useTranslation5, List as List2 } from "@dxos/react-ui";
|
|
212
353
|
import { descriptionText as descriptionText3, mx as mx5 } from "@dxos/react-ui-theme";
|
|
213
354
|
var SpaceMemberList = ({ spaceKey, includeSelf, onSelect }) => {
|
|
214
355
|
const client = useClient();
|
|
@@ -216,100 +357,42 @@ var SpaceMemberList = ({ spaceKey, includeSelf, onSelect }) => {
|
|
|
216
357
|
const members = useMemo(() => includeSelf ? allUnsortedMembers.sort((member) => member.identity.identityKey.equals(client.halo.identity.get().identityKey) ? -1 : 1) : allUnsortedMembers.filter((member) => !member.identity.identityKey.equals(client.halo.identity.get().identityKey)), [
|
|
217
358
|
allUnsortedMembers
|
|
218
359
|
]);
|
|
219
|
-
return /* @__PURE__ */
|
|
360
|
+
return /* @__PURE__ */ React8.createElement(SpaceMemberListImpl, {
|
|
220
361
|
members,
|
|
221
362
|
onSelect
|
|
222
363
|
});
|
|
223
364
|
};
|
|
224
365
|
var SpaceMemberListImpl = ({ members, onSelect }) => {
|
|
225
|
-
const { t } =
|
|
366
|
+
const { t } = useTranslation5("os");
|
|
226
367
|
const visibleMembers = members.filter((member) => member.identity);
|
|
227
|
-
return visibleMembers.length > 0 ? /* @__PURE__ */
|
|
368
|
+
return visibleMembers.length > 0 ? /* @__PURE__ */ React8.createElement(List2, {
|
|
228
369
|
classNames: "flex flex-col gap-2",
|
|
229
370
|
"data-testid": "space-members-list"
|
|
230
371
|
}, visibleMembers.map((member) => {
|
|
231
|
-
return /* @__PURE__ */
|
|
372
|
+
return /* @__PURE__ */ React8.createElement(IdentityListItem, {
|
|
232
373
|
key: member.identity.identityKey.toHex(),
|
|
233
374
|
identity: member.identity,
|
|
234
375
|
presence: member.presence,
|
|
235
376
|
onClick: onSelect && (() => onSelect(member))
|
|
236
377
|
});
|
|
237
|
-
})) : /* @__PURE__ */
|
|
378
|
+
})) : /* @__PURE__ */ React8.createElement("div", {
|
|
238
379
|
role: "none",
|
|
239
380
|
className: "grow flex items-center p-2"
|
|
240
|
-
}, /* @__PURE__ */
|
|
381
|
+
}, /* @__PURE__ */ React8.createElement("p", {
|
|
241
382
|
className: mx5(descriptionText3, "text-center is-full mlb-2")
|
|
242
383
|
}, t("empty space members message")));
|
|
243
384
|
};
|
|
244
385
|
|
|
245
386
|
// packages/sdk/shell/src/components/InvitationList/InvitationListItem.tsx
|
|
246
387
|
import { X } from "@phosphor-icons/react";
|
|
247
|
-
import
|
|
248
|
-
import { Invitation
|
|
249
|
-
import { Button as
|
|
250
|
-
import { focusRing, getSize as
|
|
251
|
-
|
|
252
|
-
// packages/sdk/shell/src/util/invitationStatusValue.ts
|
|
253
|
-
import { Invitation } from "@dxos/react-client/invitations";
|
|
254
|
-
var invitationStatusValue = /* @__PURE__ */ new Map([
|
|
255
|
-
[
|
|
256
|
-
Invitation.State.ERROR,
|
|
257
|
-
-3
|
|
258
|
-
],
|
|
259
|
-
[
|
|
260
|
-
Invitation.State.TIMEOUT,
|
|
261
|
-
-2
|
|
262
|
-
],
|
|
263
|
-
[
|
|
264
|
-
Invitation.State.CANCELLED,
|
|
265
|
-
-1
|
|
266
|
-
],
|
|
267
|
-
[
|
|
268
|
-
Invitation.State.INIT,
|
|
269
|
-
0
|
|
270
|
-
],
|
|
271
|
-
[
|
|
272
|
-
Invitation.State.CONNECTING,
|
|
273
|
-
1
|
|
274
|
-
],
|
|
275
|
-
[
|
|
276
|
-
Invitation.State.CONNECTED,
|
|
277
|
-
2
|
|
278
|
-
],
|
|
279
|
-
[
|
|
280
|
-
Invitation.State.READY_FOR_AUTHENTICATION,
|
|
281
|
-
3
|
|
282
|
-
],
|
|
283
|
-
[
|
|
284
|
-
Invitation.State.AUTHENTICATING,
|
|
285
|
-
4
|
|
286
|
-
],
|
|
287
|
-
[
|
|
288
|
-
Invitation.State.SUCCESS,
|
|
289
|
-
5
|
|
290
|
-
]
|
|
291
|
-
]);
|
|
292
|
-
|
|
293
|
-
// packages/sdk/shell/src/util/toEmoji.ts
|
|
294
|
-
import toArray from "lodash.toarray";
|
|
295
|
-
var emoji = toArray(
|
|
296
|
-
// When changing this set, please check the result in a console or e.g. RunKit (https://runkit.com/thure/642214441dd6ae000855a8de)
|
|
297
|
-
// Emoji sometimes use a combination of code points, and some code points aren't visible on their own, so by adding or deleting you may unintentionally create non-visible items.
|
|
298
|
-
// This set was chosen from the characters in Unicode Emoji v15.0 based on the following criteria:
|
|
299
|
-
// – not people or isolated anthropomorphic faces
|
|
300
|
-
// – not flags
|
|
301
|
-
// – more concrete than abstract
|
|
302
|
-
// – less culturally specific
|
|
303
|
-
// – less easily confused with another emoji in the set
|
|
304
|
-
// – requires less special knowledge to identify
|
|
305
|
-
// – less likely to evoke negative feelings (no meat, no drugs, no weapons, etc)
|
|
306
|
-
// – less common as a signifier in UX
|
|
307
|
-
"\u{1F479}\u{1F47B}\u{1F47D}\u{1F916}\u{1F383}\u{1F9BE}\u{1F9BF}\u{1F9B7}\u{1F463}\u{1F441}\uFE0F\u{1F9F6}\u{1F451}\u{1F412}\u{1F986}\u{1F989}\u{1F434}\u{1F984}\u{1F41D}\u{1F98B}\u{1F41E}\u{1FAB2}\u{1F422}\u{1F98E}\u{1F995}\u{1F991}\u{1F980}\u{1F420}\u{1F42C}\u{1F40B}\u{1F9AD}\u{1F405}\u{1F406}\u{1F993}\u{1F98D}\u{1F9A7}\u{1F418}\u{1F42B}\u{1F992}\u{1F998}\u{1F9AC}\u{1F416}\u{1F40F}\u{1F98C}\u{1F415}\u{1F408}\u{1F413}\u{1F99A}\u{1F99C}\u{1F9A2}\u{1F9A9}\u{1F9A6}\u{1F401}\u{1F43F}\uFE0F\u{1F335}\u{1F332}\u{1F333}\u{1FAB5}\u{1F331}\u{1F341}\u{1FABA}\u{1F344}\u{1F41A}\u{1FAB8}\u{1FAA8}\u{1F33E}\u{1F337}\u{1F33B}\u2600\uFE0F\u{1F319}\u{1FA90}\u2B50\uFE0F\u26A1\uFE0F\u2604\uFE0F\u{1F525}\u{1F308}\u2601\uFE0F\u{1F4A7}\u26F1\uFE0F\u{1F30A}\u{1F34E}\u{1F34B}\u{1F349}\u{1F347}\u{1FAD0}\u{1F348}\u{1F352}\u{1F351}\u{1F96D}\u{1F34D}\u{1F965}\u{1F95D}\u{1F951}\u{1F336}\uFE0F\u{1F33D}\u{1F955}\u{1F36C}\u{1F95C}\u{1FAD6}\u2615\uFE0F\u{1F375}\u{1F9CA}\u{1F9C2}\u{1F3D4}\uFE0F\u2693\uFE0F\u{1F6DF}\u{1F3DD}\uFE0F\u{1F6F6}\u{1F680}\u{1F6F0}\uFE0F\u26F2\uFE0F\u{1F3F0}\u{1F6B2}\u26FA\uFE0F\u{1F399}\uFE0F\u{1F9F2}\u2699\uFE0F\u{1F529}\u{1F52E}\u{1F52D}\u{1F52C}\u{1F9EC}\u{1F321}\uFE0F\u{1F9FA}\u{1F6CE}\uFE0F\u{1F511}\u{1FA91}\u{1F9F8}\u{1F388}\u{1F380}\u{1F38A}\u267B\uFE0F\u{1F3B5}"
|
|
308
|
-
);
|
|
309
|
-
var toEmoji = (keyAsHex) => emoji[parseInt(keyAsHex, 16) % emoji.length];
|
|
388
|
+
import React10, { useCallback as useCallback2 } from "react";
|
|
389
|
+
import { Invitation, useInvitationStatus } from "@dxos/react-client/invitations";
|
|
390
|
+
import { Button as Button4, ListItem as ListItem2, useTranslation as useTranslation6, Avatar as Avatar2, useThemeContext as useThemeContext3, Tooltip as Tooltip4 } from "@dxos/react-ui";
|
|
391
|
+
import { focusRing, getSize as getSize4, mx as mx7 } from "@dxos/react-ui-theme";
|
|
392
|
+
import { hexToEmoji } from "@dxos/util";
|
|
310
393
|
|
|
311
394
|
// packages/sdk/shell/src/components/AuthCode.tsx
|
|
312
|
-
import
|
|
395
|
+
import React9 from "react";
|
|
313
396
|
import { mx as mx6 } from "@dxos/react-ui-theme";
|
|
314
397
|
var AuthCode = (props) => {
|
|
315
398
|
const { code, large, classNames } = props;
|
|
@@ -319,17 +402,17 @@ var AuthCode = (props) => {
|
|
|
319
402
|
const handleCopy = () => {
|
|
320
403
|
void navigator.clipboard.writeText(code ?? "");
|
|
321
404
|
};
|
|
322
|
-
return /* @__PURE__ */
|
|
405
|
+
return /* @__PURE__ */ React9.createElement("span", {
|
|
323
406
|
className: mx6(large ? "text-6xl" : "text-2xl", "font-mono pli-2.5 flex gap-1.5 rounded cursor-pointer", classNames),
|
|
324
407
|
onClick: handleCopy
|
|
325
|
-
}, /* @__PURE__ */
|
|
408
|
+
}, /* @__PURE__ */ React9.createElement("span", null, left), /* @__PURE__ */ React9.createElement("span", null, right));
|
|
326
409
|
};
|
|
327
410
|
|
|
328
411
|
// packages/sdk/shell/src/components/InvitationList/InvitationListItem.tsx
|
|
329
412
|
var InvitationListItem = (props) => {
|
|
330
413
|
const { invitation } = props;
|
|
331
414
|
const invitationStatus = useInvitationStatus(invitation);
|
|
332
|
-
return /* @__PURE__ */
|
|
415
|
+
return /* @__PURE__ */ React10.createElement(InvitationListItemImpl, {
|
|
333
416
|
...props,
|
|
334
417
|
invitationStatus
|
|
335
418
|
});
|
|
@@ -339,11 +422,11 @@ var avatarProps = {
|
|
|
339
422
|
variant: "circle"
|
|
340
423
|
};
|
|
341
424
|
var AvatarStackEffect = ({ animation, status, reverseEffects }) => {
|
|
342
|
-
const { tx } =
|
|
343
|
-
return /* @__PURE__ */
|
|
425
|
+
const { tx } = useThemeContext3();
|
|
426
|
+
return /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement("span", {
|
|
344
427
|
role: "none",
|
|
345
|
-
className: mx7("absolute inline-end-auto opacity-20", reverseEffects ? "inline-start-3" : "inline-start-1",
|
|
346
|
-
}, /* @__PURE__ */
|
|
428
|
+
className: mx7("absolute inline-end-auto opacity-20", reverseEffects ? "inline-start-3" : "inline-start-1", getSize4(avatarProps.size))
|
|
429
|
+
}, /* @__PURE__ */ React10.createElement("span", {
|
|
347
430
|
role: "none",
|
|
348
431
|
className: tx("avatar.ring", "avatar__ring", {
|
|
349
432
|
...avatarProps,
|
|
@@ -353,10 +436,10 @@ var AvatarStackEffect = ({ animation, status, reverseEffects }) => {
|
|
|
353
436
|
style: {
|
|
354
437
|
animationDelay: "400ms"
|
|
355
438
|
}
|
|
356
|
-
})), /* @__PURE__ */
|
|
439
|
+
})), /* @__PURE__ */ React10.createElement("span", {
|
|
357
440
|
role: "none",
|
|
358
|
-
className: mx7("absolute inline-end-auto opacity-50", reverseEffects ? "inline-start-2" : "inline-start-2",
|
|
359
|
-
}, /* @__PURE__ */
|
|
441
|
+
className: mx7("absolute inline-end-auto opacity-50", reverseEffects ? "inline-start-2" : "inline-start-2", getSize4(avatarProps.size))
|
|
442
|
+
}, /* @__PURE__ */ React10.createElement("span", {
|
|
360
443
|
role: "none",
|
|
361
444
|
className: tx("avatar.ring", "avatar__ring", {
|
|
362
445
|
...avatarProps,
|
|
@@ -369,19 +452,19 @@ var AvatarStackEffect = ({ animation, status, reverseEffects }) => {
|
|
|
369
452
|
})));
|
|
370
453
|
};
|
|
371
454
|
var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationStatus, send, onClickRemove, createInvitationUrl, reverseEffects, ...props }) => {
|
|
372
|
-
const { t } =
|
|
455
|
+
const { t } = useTranslation6("os");
|
|
373
456
|
const { cancel, status: invitationStatus, invitationCode, authCode, type } = propsInvitationStatus;
|
|
374
457
|
const isCancellable = !([
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
458
|
+
Invitation.State.ERROR,
|
|
459
|
+
Invitation.State.TIMEOUT,
|
|
460
|
+
Invitation.State.CANCELLED
|
|
378
461
|
].indexOf(invitationStatus) >= 0);
|
|
379
|
-
const showShare = type ===
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
462
|
+
const showShare = type === Invitation.Type.MULTIUSE || [
|
|
463
|
+
Invitation.State.INIT,
|
|
464
|
+
Invitation.State.CONNECTING,
|
|
465
|
+
Invitation.State.CONNECTED
|
|
383
466
|
].indexOf(invitationStatus) >= 0;
|
|
384
|
-
const showAuthCode = invitationStatus ===
|
|
467
|
+
const showAuthCode = invitationStatus === Invitation.State.READY_FOR_AUTHENTICATION;
|
|
385
468
|
const handleClickRemove = useCallback2(() => onClickRemove?.(invitation), [
|
|
386
469
|
invitation,
|
|
387
470
|
onClickRemove
|
|
@@ -389,55 +472,55 @@ var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationSta
|
|
|
389
472
|
const invitationUrl = invitationCode && createInvitationUrl(invitationCode);
|
|
390
473
|
const invitationId = invitation?.get().invitationId;
|
|
391
474
|
const avatarAnimation = [
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
475
|
+
Invitation.State.INIT,
|
|
476
|
+
Invitation.State.CONNECTING,
|
|
477
|
+
Invitation.State.CONNECTED,
|
|
478
|
+
Invitation.State.READY_FOR_AUTHENTICATION,
|
|
479
|
+
Invitation.State.AUTHENTICATING
|
|
397
480
|
].includes(invitationStatus) ? "pulse" : "none";
|
|
398
481
|
const avatarError = [
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
482
|
+
Invitation.State.ERROR,
|
|
483
|
+
Invitation.State.TIMEOUT,
|
|
484
|
+
Invitation.State.CANCELLED
|
|
402
485
|
].includes(invitationStatus);
|
|
403
486
|
const avatarGreen = [
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
487
|
+
Invitation.State.CONNECTED,
|
|
488
|
+
Invitation.State.READY_FOR_AUTHENTICATION,
|
|
489
|
+
Invitation.State.AUTHENTICATING,
|
|
490
|
+
Invitation.State.SUCCESS
|
|
408
491
|
].includes(invitationStatus);
|
|
409
492
|
const avatarStatus = avatarError ? "error" : avatarGreen ? "active" : "inactive";
|
|
410
|
-
return /* @__PURE__ */
|
|
493
|
+
return /* @__PURE__ */ React10.createElement(ListItem2.Root, {
|
|
411
494
|
id: invitationCode,
|
|
412
495
|
...props,
|
|
413
496
|
classNames: [
|
|
414
497
|
"flex gap-2 pis-3 pie-1 items-center relative",
|
|
415
498
|
props.classNames
|
|
416
499
|
]
|
|
417
|
-
}, /* @__PURE__ */
|
|
500
|
+
}, /* @__PURE__ */ React10.createElement(ListItem2.Heading, {
|
|
418
501
|
classNames: "sr-only"
|
|
419
|
-
}, t(type ===
|
|
502
|
+
}, t(type === Invitation.Type.MULTIUSE ? "invite many list item label" : "invite one list item label")), type === Invitation.Type.MULTIUSE && /* @__PURE__ */ React10.createElement(AvatarStackEffect, {
|
|
420
503
|
status: avatarStatus,
|
|
421
504
|
animation: avatarAnimation,
|
|
422
505
|
reverseEffects
|
|
423
|
-
}), /* @__PURE__ */
|
|
506
|
+
}), /* @__PURE__ */ React10.createElement(Tooltip4.Root, null, /* @__PURE__ */ React10.createElement(Avatar2.Root, {
|
|
424
507
|
...avatarProps,
|
|
425
508
|
animation: avatarAnimation,
|
|
426
509
|
status: avatarStatus
|
|
427
|
-
}, /* @__PURE__ */
|
|
510
|
+
}, /* @__PURE__ */ React10.createElement(Tooltip4.Trigger, {
|
|
428
511
|
asChild: true
|
|
429
|
-
}, /* @__PURE__ */
|
|
512
|
+
}, /* @__PURE__ */ React10.createElement(Avatar2.Frame, {
|
|
430
513
|
tabIndex: 0,
|
|
431
514
|
classNames: [
|
|
432
515
|
focusRing,
|
|
433
516
|
"relative rounded-full place-self-center"
|
|
434
517
|
]
|
|
435
|
-
}, /* @__PURE__ */
|
|
436
|
-
text:
|
|
437
|
-
})))), /* @__PURE__ */
|
|
518
|
+
}, /* @__PURE__ */ React10.createElement(Avatar2.Fallback, {
|
|
519
|
+
text: hexToEmoji(invitationId)
|
|
520
|
+
})))), /* @__PURE__ */ React10.createElement(Tooltip4.Portal, null, /* @__PURE__ */ React10.createElement(Tooltip4.Content, {
|
|
438
521
|
side: "left",
|
|
439
522
|
classNames: "z-[70]"
|
|
440
|
-
}, t(type ===
|
|
523
|
+
}, t(type === Invitation.Type.MULTIUSE ? "invite many qr label" : "invite one qr label"), /* @__PURE__ */ React10.createElement(Tooltip4.Arrow, null)))), showShare && invitationUrl ? /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement(Button4, {
|
|
441
524
|
variant: "ghost",
|
|
442
525
|
classNames: "grow justify-start font-medium",
|
|
443
526
|
onClick: () => send({
|
|
@@ -445,60 +528,60 @@ var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationSta
|
|
|
445
528
|
invitation
|
|
446
529
|
}),
|
|
447
530
|
"data-testid": "show-qrcode"
|
|
448
|
-
}, /* @__PURE__ */
|
|
531
|
+
}, /* @__PURE__ */ React10.createElement("span", null, t("open share panel label"))), /* @__PURE__ */ React10.createElement(CopyButtonIconOnly, {
|
|
449
532
|
variant: "ghost",
|
|
450
533
|
value: invitationUrl
|
|
451
|
-
})) : showAuthCode ? /* @__PURE__ */
|
|
534
|
+
})) : showAuthCode ? /* @__PURE__ */ React10.createElement(AuthCode, {
|
|
452
535
|
code: authCode,
|
|
453
536
|
classNames: "grow"
|
|
454
|
-
}) : invitationStatus ===
|
|
537
|
+
}) : invitationStatus === Invitation.State.CONNECTING ? /* @__PURE__ */ React10.createElement("span", {
|
|
455
538
|
className: "pli-2 grow text-neutral-500"
|
|
456
|
-
}, "Connecting...") : invitationStatus ===
|
|
539
|
+
}, "Connecting...") : invitationStatus === Invitation.State.AUTHENTICATING ? /* @__PURE__ */ React10.createElement("span", {
|
|
457
540
|
className: "pli-2 grow text-neutral-500"
|
|
458
|
-
}, "Authenticating...") : invitationStatus ===
|
|
541
|
+
}, "Authenticating...") : invitationStatus === Invitation.State.ERROR || invitationStatus === Invitation.State.TIMEOUT ? /* @__PURE__ */ React10.createElement("span", {
|
|
459
542
|
className: "pli-2 grow text-neutral-500"
|
|
460
|
-
}, "Failed") : invitationStatus ===
|
|
543
|
+
}, "Failed") : invitationStatus === Invitation.State.CANCELLED ? /* @__PURE__ */ React10.createElement("span", {
|
|
461
544
|
className: "pli-2 grow text-neutral-500"
|
|
462
|
-
}, "Cancelled") : invitationStatus ===
|
|
545
|
+
}, "Cancelled") : invitationStatus === Invitation.State.SUCCESS ? /* @__PURE__ */ React10.createElement("span", {
|
|
463
546
|
className: "pli-2 grow truncate"
|
|
464
|
-
}, "User joined") : /* @__PURE__ */
|
|
547
|
+
}, "User joined") : /* @__PURE__ */ React10.createElement("span", {
|
|
465
548
|
className: "grow"
|
|
466
|
-
}, " "), isCancellable ? /* @__PURE__ */
|
|
549
|
+
}, " "), isCancellable ? /* @__PURE__ */ React10.createElement(Button4, {
|
|
467
550
|
variant: "ghost",
|
|
468
551
|
classNames: "flex gap-1 pli-0",
|
|
469
552
|
onClick: cancel,
|
|
470
553
|
"data-testid": "cancel-invitation"
|
|
471
|
-
}, /* @__PURE__ */
|
|
554
|
+
}, /* @__PURE__ */ React10.createElement("span", {
|
|
472
555
|
className: "sr-only"
|
|
473
|
-
}, t("cancel invitation label")), /* @__PURE__ */
|
|
474
|
-
className:
|
|
475
|
-
})) : /* @__PURE__ */
|
|
556
|
+
}, t("cancel invitation label")), /* @__PURE__ */ React10.createElement(X, {
|
|
557
|
+
className: getSize4(4)
|
|
558
|
+
})) : /* @__PURE__ */ React10.createElement(Button4, {
|
|
476
559
|
variant: "ghost",
|
|
477
560
|
classNames: "flex gap-1 pli-0",
|
|
478
561
|
onClick: handleClickRemove,
|
|
479
562
|
"data-testid": "remove-invitation"
|
|
480
|
-
}, /* @__PURE__ */
|
|
563
|
+
}, /* @__PURE__ */ React10.createElement("span", {
|
|
481
564
|
className: "sr-only"
|
|
482
|
-
}, t("remove invitation label")), /* @__PURE__ */
|
|
483
|
-
className:
|
|
565
|
+
}, t("remove invitation label")), /* @__PURE__ */ React10.createElement(X, {
|
|
566
|
+
className: getSize4(4)
|
|
484
567
|
})));
|
|
485
568
|
};
|
|
486
569
|
|
|
487
570
|
// packages/sdk/shell/src/components/InvitationList/InvitationListContainer.tsx
|
|
488
|
-
import
|
|
571
|
+
import React12, { useCallback as useCallback3 } from "react";
|
|
489
572
|
import { useSpace, useSpaceInvitations } from "@dxos/react-client/echo";
|
|
490
573
|
|
|
491
574
|
// packages/sdk/shell/src/components/InvitationList/InvitationList.tsx
|
|
492
|
-
import
|
|
575
|
+
import React11 from "react";
|
|
493
576
|
import { List as List3 } from "@dxos/react-ui";
|
|
494
577
|
import { mx as mx8 } from "@dxos/react-ui-theme";
|
|
495
578
|
var InvitationList = ({ invitations, send, ...invitationProps }) => {
|
|
496
579
|
const { className, InvitationListItem: Item = InvitationListItem } = invitationProps;
|
|
497
|
-
return /* @__PURE__ */
|
|
580
|
+
return /* @__PURE__ */ React11.createElement(List3, {
|
|
498
581
|
classNames: mx8("flex flex-col gap-2", className)
|
|
499
582
|
}, invitations.map((invitation) => {
|
|
500
583
|
const value = invitation.get().invitationId;
|
|
501
|
-
return /* @__PURE__ */
|
|
584
|
+
return /* @__PURE__ */ React11.createElement(Item, {
|
|
502
585
|
key: value,
|
|
503
586
|
send,
|
|
504
587
|
invitation,
|
|
@@ -516,7 +599,7 @@ var InvitationListContainer = ({ spaceKey, createInvitationUrl, send }) => {
|
|
|
516
599
|
}, [
|
|
517
600
|
space
|
|
518
601
|
]);
|
|
519
|
-
return /* @__PURE__ */
|
|
602
|
+
return /* @__PURE__ */ React12.createElement(InvitationList, {
|
|
520
603
|
invitations,
|
|
521
604
|
onClickRemove,
|
|
522
605
|
createInvitationUrl,
|
|
@@ -525,11 +608,11 @@ var InvitationListContainer = ({ spaceKey, createInvitationUrl, send }) => {
|
|
|
525
608
|
};
|
|
526
609
|
|
|
527
610
|
// packages/sdk/shell/src/components/Panel/Action.tsx
|
|
528
|
-
import { CaretDown, Check as
|
|
529
|
-
import { useControllableState } from "@radix-ui/react-use-controllable-state";
|
|
530
|
-
import
|
|
531
|
-
import { Button as
|
|
532
|
-
import { descriptionText as descriptionText4, getSize as
|
|
611
|
+
import { CaretDown as CaretDown3, Check as Check3, Placeholder } from "@phosphor-icons/react";
|
|
612
|
+
import { useControllableState as useControllableState3 } from "@radix-ui/react-use-controllable-state";
|
|
613
|
+
import React13, { forwardRef as forwardRef2 } from "react";
|
|
614
|
+
import { Button as Button5, DropdownMenu as DropdownMenu2, useTranslation as useTranslation7 } from "@dxos/react-ui";
|
|
615
|
+
import { descriptionText as descriptionText4, getSize as getSize5, mx as mx9 } from "@dxos/react-ui-theme";
|
|
533
616
|
var defaultActions = {
|
|
534
617
|
noopAction: {
|
|
535
618
|
label: "No-op",
|
|
@@ -541,17 +624,17 @@ var defaultActions = {
|
|
|
541
624
|
};
|
|
542
625
|
var BifurcatedAction = /* @__PURE__ */ forwardRef2((props, forwardedRef) => {
|
|
543
626
|
const { classNames, variant, isFull = true, actions = defaultActions, activeAction: propsActiveAction, onChangeActiveAction, defaultActiveAction, ...rest } = props;
|
|
544
|
-
const [activeActionKey2 = Object.keys(actions)[0], setActiveAction] =
|
|
627
|
+
const [activeActionKey2 = Object.keys(actions)[0], setActiveAction] = useControllableState3({
|
|
545
628
|
prop: propsActiveAction,
|
|
546
629
|
onChange: onChangeActiveAction,
|
|
547
630
|
defaultProp: defaultActiveAction
|
|
548
631
|
});
|
|
549
632
|
const activeAction = actions[activeActionKey2] ?? {};
|
|
550
|
-
const { t } =
|
|
551
|
-
return /* @__PURE__ */
|
|
633
|
+
const { t } = useTranslation7("os");
|
|
634
|
+
return /* @__PURE__ */ React13.createElement("div", {
|
|
552
635
|
role: "none",
|
|
553
636
|
className: mx9("mbs-2 flex gap-px items-center", isFull && "is-full")
|
|
554
|
-
}, /* @__PURE__ */
|
|
637
|
+
}, /* @__PURE__ */ React13.createElement(Button5, {
|
|
555
638
|
...rest,
|
|
556
639
|
classNames: [
|
|
557
640
|
"bs-11 flex-1 min-is-0 flex gap-2 rounded-ie-none",
|
|
@@ -560,48 +643,48 @@ var BifurcatedAction = /* @__PURE__ */ forwardRef2((props, forwardedRef) => {
|
|
|
560
643
|
ref: forwardedRef,
|
|
561
644
|
variant,
|
|
562
645
|
onClick: activeAction.onClick
|
|
563
|
-
}, activeAction.icon && /* @__PURE__ */
|
|
564
|
-
className:
|
|
565
|
-
}), /* @__PURE__ */
|
|
646
|
+
}, activeAction.icon && /* @__PURE__ */ React13.createElement(activeAction.icon, {
|
|
647
|
+
className: getSize5(5)
|
|
648
|
+
}), /* @__PURE__ */ React13.createElement("span", null, activeAction.label)), /* @__PURE__ */ React13.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React13.createElement(DropdownMenu2.Trigger, {
|
|
566
649
|
asChild: true
|
|
567
|
-
}, /* @__PURE__ */
|
|
650
|
+
}, /* @__PURE__ */ React13.createElement(Button5, {
|
|
568
651
|
classNames: [
|
|
569
652
|
"bs-11 flex-none rounded-is-none",
|
|
570
653
|
classNames
|
|
571
654
|
]
|
|
572
|
-
}, /* @__PURE__ */
|
|
655
|
+
}, /* @__PURE__ */ React13.createElement("span", {
|
|
573
656
|
className: "sr-only"
|
|
574
|
-
}, t("invite options label")), /* @__PURE__ */
|
|
575
|
-
className:
|
|
576
|
-
}))), /* @__PURE__ */
|
|
577
|
-
return /* @__PURE__ */
|
|
657
|
+
}, t("invite options label")), /* @__PURE__ */ React13.createElement(CaretDown3, {
|
|
658
|
+
className: getSize5(4)
|
|
659
|
+
}))), /* @__PURE__ */ React13.createElement(DropdownMenu2.Content, null, /* @__PURE__ */ React13.createElement(DropdownMenu2.Viewport, null, Object.entries(actions).map(([id, action]) => {
|
|
660
|
+
return /* @__PURE__ */ React13.createElement(DropdownMenu2.CheckboxItem, {
|
|
578
661
|
key: id,
|
|
579
662
|
"aria-labelledby": `${id}__label`,
|
|
580
663
|
"aria-describedby": `${id}__description`,
|
|
581
664
|
checked: activeActionKey2 === id,
|
|
582
665
|
onCheckedChange: (checked) => checked && setActiveAction(id),
|
|
583
666
|
classNames: "gap-2"
|
|
584
|
-
}, action.icon && /* @__PURE__ */
|
|
585
|
-
className:
|
|
586
|
-
}), /* @__PURE__ */
|
|
667
|
+
}, action.icon && /* @__PURE__ */ React13.createElement(action.icon, {
|
|
668
|
+
className: getSize5(5)
|
|
669
|
+
}), /* @__PURE__ */ React13.createElement("div", {
|
|
587
670
|
role: "none",
|
|
588
671
|
className: "flex-1 min-is-0 space-b-1"
|
|
589
|
-
}, /* @__PURE__ */
|
|
672
|
+
}, /* @__PURE__ */ React13.createElement("p", {
|
|
590
673
|
id: `${id}__label`
|
|
591
|
-
}, action.label), action.description && /* @__PURE__ */
|
|
674
|
+
}, action.label), action.description && /* @__PURE__ */ React13.createElement("p", {
|
|
592
675
|
id: `${id}__description`,
|
|
593
676
|
className: descriptionText4
|
|
594
|
-
}, action.description)), /* @__PURE__ */
|
|
677
|
+
}, action.description)), /* @__PURE__ */ React13.createElement(DropdownMenu2.ItemIndicator, {
|
|
595
678
|
asChild: true
|
|
596
|
-
}, /* @__PURE__ */
|
|
679
|
+
}, /* @__PURE__ */ React13.createElement(Check3, {
|
|
597
680
|
weight: "bold",
|
|
598
|
-
className:
|
|
681
|
+
className: getSize5(4)
|
|
599
682
|
})));
|
|
600
|
-
})), /* @__PURE__ */
|
|
683
|
+
})), /* @__PURE__ */ React13.createElement(DropdownMenu2.Arrow, null))));
|
|
601
684
|
});
|
|
602
685
|
var Action = /* @__PURE__ */ forwardRef2((props, forwardedRef) => {
|
|
603
686
|
const { children, classNames, variant, isFull = true, ...rest } = props;
|
|
604
|
-
return /* @__PURE__ */
|
|
687
|
+
return /* @__PURE__ */ React13.createElement(Button5, {
|
|
605
688
|
...rest,
|
|
606
689
|
classNames: [
|
|
607
690
|
isFull && "is-full",
|
|
@@ -614,10 +697,10 @@ var Action = /* @__PURE__ */ forwardRef2((props, forwardedRef) => {
|
|
|
614
697
|
});
|
|
615
698
|
|
|
616
699
|
// packages/sdk/shell/src/components/Panel/Actions.tsx
|
|
617
|
-
import
|
|
700
|
+
import React14, { forwardRef as forwardRef3 } from "react";
|
|
618
701
|
import { mx as mx10 } from "@dxos/react-ui-theme";
|
|
619
702
|
var Actions = /* @__PURE__ */ forwardRef3(({ classNames, children, ...props }, forwardedRef) => {
|
|
620
|
-
return /* @__PURE__ */
|
|
703
|
+
return /* @__PURE__ */ React14.createElement("div", {
|
|
621
704
|
...props,
|
|
622
705
|
className: mx10("flex flex-col gap-2 mbs-2", Array.isArray(children) && children.length > 1 ? "justify-between" : "justify-center", classNames),
|
|
623
706
|
ref: forwardedRef
|
|
@@ -626,37 +709,37 @@ var Actions = /* @__PURE__ */ forwardRef3(({ classNames, children, ...props }, f
|
|
|
626
709
|
|
|
627
710
|
// packages/sdk/shell/src/components/Panel/CloseButton.tsx
|
|
628
711
|
import { X as X2 } from "@phosphor-icons/react";
|
|
629
|
-
import
|
|
630
|
-
import { Button as
|
|
631
|
-
import { getSize as
|
|
712
|
+
import React15 from "react";
|
|
713
|
+
import { Button as Button6, useTranslation as useTranslation8 } from "@dxos/react-ui";
|
|
714
|
+
import { getSize as getSize6, mx as mx11 } from "@dxos/react-ui-theme";
|
|
632
715
|
var CloseButton = ({ onDone, ...props }) => {
|
|
633
|
-
const { t } =
|
|
634
|
-
return /* @__PURE__ */
|
|
716
|
+
const { t } = useTranslation8("os");
|
|
717
|
+
return /* @__PURE__ */ React15.createElement(Button6, {
|
|
635
718
|
variant: "ghost",
|
|
636
719
|
classNames: mx11("plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),
|
|
637
720
|
onClick: () => onDone?.(),
|
|
638
721
|
...props
|
|
639
|
-
}, /* @__PURE__ */
|
|
722
|
+
}, /* @__PURE__ */ React15.createElement(X2, {
|
|
640
723
|
weight: "bold",
|
|
641
|
-
className:
|
|
642
|
-
}), /* @__PURE__ */
|
|
724
|
+
className: getSize6(4)
|
|
725
|
+
}), /* @__PURE__ */ React15.createElement("span", {
|
|
643
726
|
className: "sr-only"
|
|
644
727
|
}, t("exit label")));
|
|
645
728
|
};
|
|
646
729
|
|
|
647
730
|
// packages/sdk/shell/src/components/Panel/Emoji.tsx
|
|
648
|
-
import
|
|
649
|
-
import { mx as mx12, getSize as
|
|
731
|
+
import React16 from "react";
|
|
732
|
+
import { mx as mx12, getSize as getSize7 } from "@dxos/react-ui-theme";
|
|
650
733
|
var Emoji = ({ text, className }) => {
|
|
651
734
|
const size = 14;
|
|
652
|
-
return /* @__PURE__ */
|
|
735
|
+
return /* @__PURE__ */ React16.createElement("div", {
|
|
653
736
|
role: "none",
|
|
654
|
-
className: mx12(
|
|
655
|
-
}, /* @__PURE__ */
|
|
737
|
+
className: mx12(getSize7(size), "rounded relative pointer-events-none", className)
|
|
738
|
+
}, /* @__PURE__ */ React16.createElement("svg", {
|
|
656
739
|
viewBox: `0 0 ${size * 4} ${size * 4}`,
|
|
657
740
|
width: size * 4,
|
|
658
741
|
height: size * 4
|
|
659
|
-
}, /* @__PURE__ */
|
|
742
|
+
}, /* @__PURE__ */ React16.createElement("text", {
|
|
660
743
|
x: "50%",
|
|
661
744
|
y: "50%",
|
|
662
745
|
textAnchor: "middle",
|
|
@@ -667,55 +750,55 @@ var Emoji = ({ text, className }) => {
|
|
|
667
750
|
};
|
|
668
751
|
var Centered = (props) => {
|
|
669
752
|
const { children } = props;
|
|
670
|
-
return /* @__PURE__ */
|
|
753
|
+
return /* @__PURE__ */ React16.createElement("div", {
|
|
671
754
|
role: "none",
|
|
672
755
|
className: "absolute inset-0 flex items-center justify-center"
|
|
673
756
|
}, children);
|
|
674
757
|
};
|
|
675
758
|
|
|
676
759
|
// packages/sdk/shell/src/components/Panel/Heading.tsx
|
|
677
|
-
import
|
|
760
|
+
import React17, { forwardRef as forwardRef4 } from "react";
|
|
678
761
|
import { descriptionText as descriptionText5, mx as mx13 } from "@dxos/react-ui-theme";
|
|
679
762
|
var Heading = /* @__PURE__ */ forwardRef4(({ titleId, title, titleSrOnly, children, corner }, forwardedRef) => {
|
|
680
|
-
return /* @__PURE__ */
|
|
763
|
+
return /* @__PURE__ */ React17.createElement("div", {
|
|
681
764
|
role: "none",
|
|
682
765
|
className: "pbe-2 relative",
|
|
683
766
|
ref: forwardedRef
|
|
684
|
-
}, corner, /* @__PURE__ */
|
|
767
|
+
}, corner, /* @__PURE__ */ React17.createElement("h1", {
|
|
685
768
|
...!titleSrOnly && {
|
|
686
769
|
id: titleId
|
|
687
770
|
},
|
|
688
771
|
className: mx13(descriptionText5, "text-center mlb-2", titleSrOnly && "invisible")
|
|
689
|
-
}, title), titleSrOnly && /* @__PURE__ */
|
|
772
|
+
}, title), titleSrOnly && /* @__PURE__ */ React17.createElement("span", {
|
|
690
773
|
id: titleId
|
|
691
774
|
}, title), children);
|
|
692
775
|
});
|
|
693
776
|
|
|
694
777
|
// packages/sdk/shell/src/components/Panel/Label.tsx
|
|
695
|
-
import
|
|
778
|
+
import React18 from "react";
|
|
696
779
|
import { descriptionText as descriptionText6, mx as mx14 } from "@dxos/react-ui-theme";
|
|
697
780
|
var Label = (props) => {
|
|
698
781
|
const { children } = props;
|
|
699
|
-
return /* @__PURE__ */
|
|
782
|
+
return /* @__PURE__ */ React18.createElement("span", {
|
|
700
783
|
className: mx14(descriptionText6, "text-center mli-6 whitespace-normal")
|
|
701
784
|
}, children);
|
|
702
785
|
};
|
|
703
786
|
|
|
704
787
|
// packages/sdk/shell/src/components/Panel/Input.tsx
|
|
705
|
-
import
|
|
788
|
+
import React19 from "react";
|
|
706
789
|
import { Input as UiInput } from "@dxos/react-ui";
|
|
707
790
|
var Input = ({ validationMessage, label, ...props }) => {
|
|
708
|
-
return /* @__PURE__ */
|
|
791
|
+
return /* @__PURE__ */ React19.createElement(UiInput.Root, null, /* @__PURE__ */ React19.createElement(UiInput.Label, null, label), /* @__PURE__ */ React19.createElement(UiInput.TextInput, {
|
|
709
792
|
...props,
|
|
710
793
|
classNames: "plb-3 mbs-2 text-center"
|
|
711
|
-
}), /* @__PURE__ */
|
|
794
|
+
}), /* @__PURE__ */ React19.createElement(UiInput.DescriptionAndValidation, null, validationMessage && /* @__PURE__ */ React19.createElement(UiInput.Validation, null, validationMessage)));
|
|
712
795
|
};
|
|
713
796
|
|
|
714
797
|
// packages/sdk/shell/src/components/Panel/StepHeading.tsx
|
|
715
|
-
import
|
|
798
|
+
import React20, { forwardRef as forwardRef5 } from "react";
|
|
716
799
|
import { mx as mx15 } from "@dxos/react-ui-theme";
|
|
717
800
|
var StepHeading = /* @__PURE__ */ forwardRef5(({ children, className, ...props }, forwardedRef) => {
|
|
718
|
-
return /* @__PURE__ */
|
|
801
|
+
return /* @__PURE__ */ React20.createElement("h2", {
|
|
719
802
|
...props,
|
|
720
803
|
className: mx15("font-normal text-sm mbe-4 mli-1 text-center", className),
|
|
721
804
|
ref: forwardedRef
|
|
@@ -725,8 +808,8 @@ var StepHeading = /* @__PURE__ */ forwardRef5(({ children, className, ...props }
|
|
|
725
808
|
// packages/sdk/shell/src/components/Viewport/Viewport.tsx
|
|
726
809
|
import { useFocusFinders } from "@fluentui/react-tabster";
|
|
727
810
|
import { createContextScope } from "@radix-ui/react-context";
|
|
728
|
-
import { useControllableState as
|
|
729
|
-
import
|
|
811
|
+
import { useControllableState as useControllableState4 } from "@radix-ui/react-use-controllable-state";
|
|
812
|
+
import React21, { forwardRef as forwardRef6, useEffect } from "react";
|
|
730
813
|
import { useForwardedRef } from "@dxos/react-ui";
|
|
731
814
|
import { mx as mx16 } from "@dxos/react-ui-theme";
|
|
732
815
|
var VIEWPORT_NAME = "Viewport";
|
|
@@ -735,17 +818,17 @@ var VIEW_NAME = "ViewportView";
|
|
|
735
818
|
var [createViewportContext, createViewportScope] = createContextScope(VIEWPORT_NAME, []);
|
|
736
819
|
var [ViewportProvider, useViewportContext] = createViewportContext(VIEWPORT_NAME);
|
|
737
820
|
var ViewportRoot = ({ __viewportScope, classNames, children, defaultActiveView, activeView: propsActiveView, focusManaged = false, onActiveViewChange, ...props }) => {
|
|
738
|
-
const [activeView = "never", setActiveView] =
|
|
821
|
+
const [activeView = "never", setActiveView] = useControllableState4({
|
|
739
822
|
prop: propsActiveView,
|
|
740
823
|
defaultProp: defaultActiveView,
|
|
741
824
|
onChange: onActiveViewChange
|
|
742
825
|
});
|
|
743
|
-
return /* @__PURE__ */
|
|
826
|
+
return /* @__PURE__ */ React21.createElement(ViewportProvider, {
|
|
744
827
|
focusManaged,
|
|
745
828
|
activeView,
|
|
746
829
|
setActiveView,
|
|
747
830
|
scope: __viewportScope
|
|
748
|
-
}, /* @__PURE__ */
|
|
831
|
+
}, /* @__PURE__ */ React21.createElement("div", {
|
|
749
832
|
role: "region",
|
|
750
833
|
"aria-live": "polite",
|
|
751
834
|
...props,
|
|
@@ -757,7 +840,7 @@ var ViewportViews = ({ classNames, children, ...props }) => {
|
|
|
757
840
|
const size = {
|
|
758
841
|
inlineSize: `${Math.ceil(children.length) * 100}%`
|
|
759
842
|
};
|
|
760
|
-
return /* @__PURE__ */
|
|
843
|
+
return /* @__PURE__ */ React21.createElement("div", {
|
|
761
844
|
role: "none",
|
|
762
845
|
style: size,
|
|
763
846
|
...props,
|
|
@@ -779,7 +862,7 @@ var ViewportView = /* @__PURE__ */ forwardRef6(({ __viewportScope, classNames, c
|
|
|
779
862
|
ref.current,
|
|
780
863
|
isActive
|
|
781
864
|
]);
|
|
782
|
-
return /* @__PURE__ */
|
|
865
|
+
return /* @__PURE__ */ React21.createElement("section", {
|
|
783
866
|
...props,
|
|
784
867
|
...!isActive && {
|
|
785
868
|
"aria-hidden": true
|
|
@@ -796,41 +879,41 @@ var Viewport = {
|
|
|
796
879
|
};
|
|
797
880
|
|
|
798
881
|
// packages/sdk/shell/src/components/SpaceListItem.tsx
|
|
799
|
-
import
|
|
800
|
-
import { Avatar as Avatar3, useId as useId3
|
|
882
|
+
import React22, { forwardRef as forwardRef7 } from "react";
|
|
883
|
+
import { Avatar as Avatar3, useId as useId3 } from "@dxos/react-ui";
|
|
801
884
|
import { mx as mx17 } from "@dxos/react-ui-theme";
|
|
802
|
-
import { humanize } from "@dxos/util";
|
|
885
|
+
import { humanize, keyToEmoji } from "@dxos/util";
|
|
803
886
|
var SpaceListItem = /* @__PURE__ */ forwardRef7(({ space, onClick }, ref) => {
|
|
804
|
-
const fallbackValue = space.key
|
|
887
|
+
const fallbackValue = keyToEmoji(space.key);
|
|
805
888
|
const labelId = useId3("identityListItem__label");
|
|
806
|
-
const jdenticon = useJdenticonHref2(fallbackValue ?? "", 12);
|
|
807
889
|
const displayName = space.properties.name ?? humanize(space.key.toHex());
|
|
808
|
-
return /* @__PURE__ */
|
|
890
|
+
return /* @__PURE__ */ React22.createElement("li", {
|
|
809
891
|
className: mx17("flex gap-2 items-center mbe-2", onClick && "cursor-pointer"),
|
|
810
892
|
onClick: () => onClick?.(),
|
|
811
893
|
ref,
|
|
812
894
|
"data-testid": "space-list-item"
|
|
813
|
-
}, /* @__PURE__ */
|
|
895
|
+
}, /* @__PURE__ */ React22.createElement(Avatar3.Root, {
|
|
814
896
|
labelId
|
|
815
|
-
}, /* @__PURE__ */
|
|
816
|
-
|
|
817
|
-
})), /* @__PURE__ */
|
|
897
|
+
}, /* @__PURE__ */ React22.createElement(Avatar3.Frame, null, /* @__PURE__ */ React22.createElement(Avatar3.Fallback, {
|
|
898
|
+
text: fallbackValue
|
|
899
|
+
})), /* @__PURE__ */ React22.createElement(Avatar3.Label, {
|
|
818
900
|
classNames: "text-sm truncate"
|
|
819
901
|
}, displayName)));
|
|
820
902
|
});
|
|
821
903
|
|
|
822
904
|
// packages/sdk/shell/src/composites/IdentityDialog/IdentityDialog.tsx
|
|
823
|
-
import
|
|
905
|
+
import React42 from "react";
|
|
824
906
|
import { Dialog, useId as useId9 } from "@dxos/react-ui";
|
|
825
907
|
|
|
826
908
|
// packages/sdk/shell/src/panels/IdentityPanel/IdentityPanel.tsx
|
|
827
|
-
import
|
|
909
|
+
import React29, { useEffect as useEffect3, useMemo as useMemo3 } from "react";
|
|
828
910
|
import { generateName as generateName3 } from "@dxos/display-name";
|
|
829
911
|
import { log as log3 } from "@dxos/log";
|
|
830
912
|
import { useClient as useClient3 } from "@dxos/react-client";
|
|
831
913
|
import { useIdentity, useDevices, useHaloInvitations as useHaloInvitations2 } from "@dxos/react-client/halo";
|
|
832
914
|
import { useInvitationStatus as useInvitationStatus2 } from "@dxos/react-client/invitations";
|
|
833
|
-
import { Avatar as Avatar4, DensityProvider as DensityProvider2, useId as useId5,
|
|
915
|
+
import { Avatar as Avatar4, DensityProvider as DensityProvider2, useId as useId5, useTranslation as useTranslation15 } from "@dxos/react-ui";
|
|
916
|
+
import { keyToFallback as keyToFallback2 } from "@dxos/util";
|
|
834
917
|
|
|
835
918
|
// packages/sdk/shell/src/panels/IdentityPanel/identityMachine.ts
|
|
836
919
|
import { useMachine } from "@xstate/react";
|
|
@@ -959,30 +1042,30 @@ var useIdentityMachine = (client, options) => {
|
|
|
959
1042
|
};
|
|
960
1043
|
|
|
961
1044
|
// packages/sdk/shell/src/panels/IdentityPanel/steps/AgentForm.tsx
|
|
962
|
-
import
|
|
963
|
-
import { useTranslation as
|
|
1045
|
+
import React23 from "react";
|
|
1046
|
+
import { useTranslation as useTranslation9 } from "@dxos/react-ui";
|
|
964
1047
|
var AgentForm = (props) => {
|
|
965
1048
|
const { active, onAgentCreate, onAgentDestroy, send, validationMessage, agentStatus, agentActive, agentProviderDisabled } = props;
|
|
966
1049
|
const disabled = !active;
|
|
967
|
-
const { t } =
|
|
968
|
-
return /* @__PURE__ */
|
|
1050
|
+
const { t } = useTranslation9("os");
|
|
1051
|
+
return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("div", {
|
|
969
1052
|
role: "none",
|
|
970
1053
|
className: "grow flex flex-col justify-center"
|
|
971
|
-
}, /* @__PURE__ */
|
|
1054
|
+
}, /* @__PURE__ */ React23.createElement(Input, {
|
|
972
1055
|
validationMessage,
|
|
973
|
-
label: /* @__PURE__ */
|
|
1056
|
+
label: /* @__PURE__ */ React23.createElement(StepHeading, null, "Agent Status"),
|
|
974
1057
|
disabled,
|
|
975
1058
|
"data-testid": "agent-status",
|
|
976
1059
|
value: agentStatus
|
|
977
|
-
})), /* @__PURE__ */
|
|
1060
|
+
})), /* @__PURE__ */ React23.createElement(Actions, null, /* @__PURE__ */ React23.createElement(Action, {
|
|
978
1061
|
disabled: agentActive || agentProviderDisabled,
|
|
979
1062
|
onClick: () => onAgentCreate?.(),
|
|
980
1063
|
"data-testid": "create-agent"
|
|
981
|
-
}, "Create Agent"), /* @__PURE__ */
|
|
1064
|
+
}, "Create Agent"), /* @__PURE__ */ React23.createElement(Action, {
|
|
982
1065
|
disabled: !agentActive || agentProviderDisabled,
|
|
983
1066
|
onClick: () => onAgentDestroy?.(),
|
|
984
1067
|
"data-testid": "destroy-agent"
|
|
985
|
-
}, "Destroy Agent"), /* @__PURE__ */
|
|
1068
|
+
}, "Destroy Agent"), /* @__PURE__ */ React23.createElement(Action, {
|
|
986
1069
|
disabled,
|
|
987
1070
|
onClick: () => send?.({
|
|
988
1071
|
type: "unchooseAction"
|
|
@@ -992,17 +1075,17 @@ var AgentForm = (props) => {
|
|
|
992
1075
|
};
|
|
993
1076
|
|
|
994
1077
|
// packages/sdk/shell/src/panels/IdentityPanel/steps/DeviceManager.tsx
|
|
995
|
-
import
|
|
996
|
-
import { useTranslation as
|
|
1078
|
+
import React24 from "react";
|
|
1079
|
+
import { useTranslation as useTranslation10 } from "@dxos/react-ui";
|
|
997
1080
|
var DeviceManager = ({ devices, active, send }) => {
|
|
998
|
-
const { t } =
|
|
1081
|
+
const { t } = useTranslation10("os");
|
|
999
1082
|
const disabled = !active;
|
|
1000
|
-
return /* @__PURE__ */
|
|
1083
|
+
return /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement("div", {
|
|
1001
1084
|
role: "none",
|
|
1002
1085
|
className: "grow"
|
|
1003
|
-
}, /* @__PURE__ */
|
|
1086
|
+
}, /* @__PURE__ */ React24.createElement(DeviceList, {
|
|
1004
1087
|
devices
|
|
1005
|
-
})), /* @__PURE__ */
|
|
1088
|
+
})), /* @__PURE__ */ React24.createElement(Actions, null, /* @__PURE__ */ React24.createElement(Action, {
|
|
1006
1089
|
variant: "ghost",
|
|
1007
1090
|
disabled,
|
|
1008
1091
|
onClick: () => send?.({
|
|
@@ -1014,12 +1097,12 @@ var DeviceManager = ({ devices, active, send }) => {
|
|
|
1014
1097
|
|
|
1015
1098
|
// packages/sdk/shell/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx
|
|
1016
1099
|
import { CaretRight, Devices, Plus, Power, UserGear, HardDrive } from "@phosphor-icons/react";
|
|
1017
|
-
import
|
|
1100
|
+
import React25, { useCallback as useCallback4 } from "react";
|
|
1018
1101
|
import { useAgentHostingProviderClient, useClient as useClient2 } from "@dxos/react-client";
|
|
1019
1102
|
import { useHaloInvitations } from "@dxos/react-client/halo";
|
|
1020
|
-
import { Invitation as
|
|
1021
|
-
import { DensityProvider, useTranslation as
|
|
1022
|
-
import { getSize as
|
|
1103
|
+
import { Invitation as Invitation2, InvitationEncoder } from "@dxos/react-client/invitations";
|
|
1104
|
+
import { DensityProvider, useTranslation as useTranslation11 } from "@dxos/react-ui";
|
|
1105
|
+
import { getSize as getSize8 } from "@dxos/react-ui-theme";
|
|
1023
1106
|
var IdentityActionChooser = (props) => {
|
|
1024
1107
|
const { send } = props;
|
|
1025
1108
|
const client = useClient2();
|
|
@@ -1027,7 +1110,7 @@ var IdentityActionChooser = (props) => {
|
|
|
1027
1110
|
const agentHostingProviderClient = useAgentHostingProviderClient(client.config);
|
|
1028
1111
|
const onInvitationEvent = useCallback4((invitation) => {
|
|
1029
1112
|
const invitationCode = InvitationEncoder.encode(invitation);
|
|
1030
|
-
if (invitation.state ===
|
|
1113
|
+
if (invitation.state === Invitation2.State.CONNECTING) {
|
|
1031
1114
|
console.log(JSON.stringify({
|
|
1032
1115
|
invitationCode,
|
|
1033
1116
|
authCode: invitation.authCode
|
|
@@ -1038,8 +1121,8 @@ var IdentityActionChooser = (props) => {
|
|
|
1038
1121
|
const testing = e.altKey && e.shiftKey;
|
|
1039
1122
|
invitations.forEach((invitation2) => invitation2.cancel());
|
|
1040
1123
|
const invitation = client.halo.share(testing ? {
|
|
1041
|
-
type:
|
|
1042
|
-
authMethod:
|
|
1124
|
+
type: Invitation2.Type.MULTIUSE,
|
|
1125
|
+
authMethod: Invitation2.AuthMethod.NONE
|
|
1043
1126
|
} : void 0);
|
|
1044
1127
|
if (true) {
|
|
1045
1128
|
invitation.subscribe(onInvitationEvent);
|
|
@@ -1049,138 +1132,157 @@ var IdentityActionChooser = (props) => {
|
|
|
1049
1132
|
invitation
|
|
1050
1133
|
});
|
|
1051
1134
|
};
|
|
1052
|
-
return /* @__PURE__ */
|
|
1135
|
+
return /* @__PURE__ */ React25.createElement(IdentityActionChooserImpl, {
|
|
1053
1136
|
...props,
|
|
1054
1137
|
onCreateInvitationClick: (e) => createInvitation(e),
|
|
1055
1138
|
agentHostingEnabled: !!agentHostingProviderClient
|
|
1056
1139
|
});
|
|
1057
1140
|
};
|
|
1058
1141
|
var IdentityActionChooserImpl = ({ onCreateInvitationClick, active, send, onDone, doneActionParent, agentHostingEnabled }) => {
|
|
1059
|
-
const { t } =
|
|
1060
|
-
return /* @__PURE__ */
|
|
1142
|
+
const { t } = useTranslation11("os");
|
|
1143
|
+
return /* @__PURE__ */ React25.createElement("div", {
|
|
1061
1144
|
role: "none",
|
|
1062
1145
|
className: "grow flex flex-col gap-1"
|
|
1063
|
-
}, /* @__PURE__ */
|
|
1146
|
+
}, /* @__PURE__ */ React25.createElement(DensityProvider, {
|
|
1064
1147
|
density: "coarse"
|
|
1065
|
-
}, /* @__PURE__ */
|
|
1148
|
+
}, /* @__PURE__ */ React25.createElement("div", {
|
|
1066
1149
|
className: "grow justify-center flex flex-col gap-1"
|
|
1067
|
-
}, agentHostingEnabled && /* @__PURE__ */
|
|
1150
|
+
}, agentHostingEnabled && /* @__PURE__ */ React25.createElement(Action, {
|
|
1068
1151
|
"data-testid": "manage-agent",
|
|
1069
1152
|
onClick: () => send?.({
|
|
1070
1153
|
type: "chooseAgent"
|
|
1071
1154
|
}),
|
|
1072
1155
|
classNames: "plb-4"
|
|
1073
|
-
}, /* @__PURE__ */
|
|
1074
|
-
className:
|
|
1075
|
-
}), /* @__PURE__ */
|
|
1156
|
+
}, /* @__PURE__ */ React25.createElement(HardDrive, {
|
|
1157
|
+
className: getSize8(6)
|
|
1158
|
+
}), /* @__PURE__ */ React25.createElement("span", {
|
|
1076
1159
|
className: "grow mli-3"
|
|
1077
|
-
}, "Manage Agent"), /* @__PURE__ */
|
|
1160
|
+
}, "Manage Agent"), /* @__PURE__ */ React25.createElement(CaretRight, {
|
|
1078
1161
|
weight: "bold",
|
|
1079
|
-
className:
|
|
1080
|
-
})), /* @__PURE__ */
|
|
1162
|
+
className: getSize8(4)
|
|
1163
|
+
})), /* @__PURE__ */ React25.createElement(Action, {
|
|
1081
1164
|
disabled: !active,
|
|
1082
1165
|
"data-testid": "devices-panel.create-invitation",
|
|
1083
1166
|
onClick: onCreateInvitationClick,
|
|
1084
1167
|
classNames: "plb-4"
|
|
1085
|
-
}, /* @__PURE__ */
|
|
1086
|
-
className:
|
|
1087
|
-
}), /* @__PURE__ */
|
|
1168
|
+
}, /* @__PURE__ */ React25.createElement(Plus, {
|
|
1169
|
+
className: getSize8(6)
|
|
1170
|
+
}), /* @__PURE__ */ React25.createElement("span", {
|
|
1088
1171
|
className: "grow mli-3"
|
|
1089
|
-
}, t("choose add device label")), /* @__PURE__ */
|
|
1172
|
+
}, t("choose add device label")), /* @__PURE__ */ React25.createElement(CaretRight, {
|
|
1090
1173
|
weight: "bold",
|
|
1091
|
-
className:
|
|
1092
|
-
})), /* @__PURE__ */
|
|
1174
|
+
className: getSize8(4)
|
|
1175
|
+
})), /* @__PURE__ */ React25.createElement(Action, {
|
|
1093
1176
|
"data-testid": "manage-devices",
|
|
1094
1177
|
onClick: () => send?.({
|
|
1095
1178
|
type: "chooseDevices"
|
|
1096
1179
|
}),
|
|
1097
1180
|
classNames: "plb-4"
|
|
1098
|
-
}, /* @__PURE__ */
|
|
1099
|
-
className:
|
|
1100
|
-
}), /* @__PURE__ */
|
|
1181
|
+
}, /* @__PURE__ */ React25.createElement(Devices, {
|
|
1182
|
+
className: getSize8(6)
|
|
1183
|
+
}), /* @__PURE__ */ React25.createElement("span", {
|
|
1101
1184
|
className: "grow mli-3"
|
|
1102
|
-
}, t("choose devices label")), /* @__PURE__ */
|
|
1185
|
+
}, t("choose devices label")), /* @__PURE__ */ React25.createElement(CaretRight, {
|
|
1103
1186
|
weight: "bold",
|
|
1104
|
-
className:
|
|
1105
|
-
})), /* @__PURE__ */
|
|
1187
|
+
className: getSize8(4)
|
|
1188
|
+
})), /* @__PURE__ */ React25.createElement(Action, {
|
|
1106
1189
|
"data-testid": "manage-profile",
|
|
1107
1190
|
onClick: () => send?.({
|
|
1108
1191
|
type: "chooseProfile"
|
|
1109
1192
|
}),
|
|
1110
1193
|
classNames: "plb-4"
|
|
1111
|
-
}, /* @__PURE__ */
|
|
1112
|
-
className:
|
|
1113
|
-
}), /* @__PURE__ */
|
|
1194
|
+
}, /* @__PURE__ */ React25.createElement(UserGear, {
|
|
1195
|
+
className: getSize8(6)
|
|
1196
|
+
}), /* @__PURE__ */ React25.createElement("span", {
|
|
1114
1197
|
className: "grow mli-3"
|
|
1115
|
-
}, t("choose profile label")), /* @__PURE__ */
|
|
1198
|
+
}, t("choose profile label")), /* @__PURE__ */ React25.createElement(CaretRight, {
|
|
1116
1199
|
weight: "bold",
|
|
1117
|
-
className:
|
|
1118
|
-
})), /* @__PURE__ */
|
|
1200
|
+
className: getSize8(4)
|
|
1201
|
+
})), /* @__PURE__ */ React25.createElement(Action, {
|
|
1119
1202
|
"data-testid": "devices-panel.sign-out",
|
|
1120
1203
|
onClick: () => send?.({
|
|
1121
1204
|
type: "chooseSignOut"
|
|
1122
1205
|
}),
|
|
1123
1206
|
classNames: "plb-4"
|
|
1124
|
-
}, /* @__PURE__ */
|
|
1125
|
-
className:
|
|
1126
|
-
}), /* @__PURE__ */
|
|
1207
|
+
}, /* @__PURE__ */ React25.createElement(Power, {
|
|
1208
|
+
className: getSize8(6)
|
|
1209
|
+
}), /* @__PURE__ */ React25.createElement("span", {
|
|
1127
1210
|
className: "grow mli-3"
|
|
1128
|
-
}, t("choose sign out label")), /* @__PURE__ */
|
|
1211
|
+
}, t("choose sign out label")), /* @__PURE__ */ React25.createElement(CaretRight, {
|
|
1129
1212
|
weight: "bold",
|
|
1130
|
-
className:
|
|
1213
|
+
className: getSize8(4)
|
|
1131
1214
|
})))));
|
|
1132
1215
|
};
|
|
1133
1216
|
|
|
1134
1217
|
// packages/sdk/shell/src/panels/IdentityPanel/steps/ProfileForm.tsx
|
|
1135
|
-
import
|
|
1218
|
+
import React26, { useState as useState4 } from "react";
|
|
1136
1219
|
import { log as log2 } from "@dxos/log";
|
|
1137
|
-
import { useTranslation as
|
|
1220
|
+
import { useTranslation as useTranslation12 } from "@dxos/react-ui";
|
|
1221
|
+
import { hexToEmoji as hexToEmoji2, hexToHue } from "@dxos/util";
|
|
1138
1222
|
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/IdentityPanel/steps/ProfileForm.tsx";
|
|
1139
1223
|
var ProfileForm = (props) => {
|
|
1140
1224
|
const { onUpdateProfile } = props;
|
|
1141
|
-
const { t } =
|
|
1142
|
-
const [validationMessage, setValidationMessage] =
|
|
1225
|
+
const { t } = useTranslation12("os");
|
|
1226
|
+
const [validationMessage, setValidationMessage] = useState4("");
|
|
1143
1227
|
const handleUpdateProfile = async (profile) => {
|
|
1144
1228
|
await onUpdateProfile?.(profile).catch((error) => {
|
|
1145
1229
|
log2.catch(error, void 0, {
|
|
1146
1230
|
F: __dxlog_file2,
|
|
1147
|
-
L:
|
|
1231
|
+
L: 33,
|
|
1148
1232
|
S: void 0,
|
|
1149
1233
|
C: (f, a) => f(...a)
|
|
1150
1234
|
});
|
|
1151
1235
|
setValidationMessage(t("failed to update profile message"));
|
|
1152
1236
|
});
|
|
1153
1237
|
};
|
|
1154
|
-
return /* @__PURE__ */
|
|
1238
|
+
return /* @__PURE__ */ React26.createElement(ProfileFormImpl, {
|
|
1155
1239
|
...props,
|
|
1156
1240
|
onUpdateProfile: handleUpdateProfile,
|
|
1157
1241
|
validationMessage
|
|
1158
1242
|
});
|
|
1159
1243
|
};
|
|
1244
|
+
var getHueValue = (identity) => identity?.profile?.hue || hexToHue(identity?.identityKey.toHex() ?? "0");
|
|
1245
|
+
var getEmojiValue = (identity) => identity?.profile?.emoji || hexToEmoji2(identity?.identityKey.toHex() ?? "0");
|
|
1160
1246
|
var ProfileFormImpl = (props) => {
|
|
1161
1247
|
const { active, identity, send, onUpdateProfile, validationMessage } = props;
|
|
1162
1248
|
const profile = identity?.profile;
|
|
1163
1249
|
const disabled = !active;
|
|
1164
|
-
const { t } =
|
|
1165
|
-
const [
|
|
1250
|
+
const { t } = useTranslation12("os");
|
|
1251
|
+
const [displayName, setDisplayName] = useState4(profile?.displayName ?? "");
|
|
1252
|
+
const [hue, setHue] = useState4(getHueValue(identity));
|
|
1253
|
+
const [emoji, setEmoji] = useState4(getEmojiValue(identity));
|
|
1166
1254
|
const { textValue, setTextValue } = useClipboardContext();
|
|
1167
1255
|
const identityHex = identity?.identityKey.toHex();
|
|
1168
1256
|
const copied = textValue === identityHex;
|
|
1169
|
-
return /* @__PURE__ */
|
|
1257
|
+
return /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement("div", {
|
|
1170
1258
|
role: "none",
|
|
1171
1259
|
className: "grow flex flex-col justify-center"
|
|
1172
|
-
}, /* @__PURE__ */
|
|
1260
|
+
}, /* @__PURE__ */ React26.createElement(Input, {
|
|
1173
1261
|
validationMessage,
|
|
1174
|
-
label: /* @__PURE__ */
|
|
1262
|
+
label: /* @__PURE__ */ React26.createElement(StepHeading, {
|
|
1263
|
+
className: "m-0"
|
|
1264
|
+
}, t("display name input label")),
|
|
1175
1265
|
disabled,
|
|
1176
1266
|
"data-testid": "display-name-input",
|
|
1177
1267
|
placeholder: t("display name input placeholder"),
|
|
1178
|
-
value:
|
|
1179
|
-
onChange: ({ target: { value } }) =>
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1268
|
+
value: displayName,
|
|
1269
|
+
onChange: ({ target: { value } }) => setDisplayName(value)
|
|
1270
|
+
}), /* @__PURE__ */ React26.createElement(StepHeading, {
|
|
1271
|
+
className: "mbe-2"
|
|
1272
|
+
}, t("emoji and color label")), /* @__PURE__ */ React26.createElement("div", {
|
|
1273
|
+
role: "none",
|
|
1274
|
+
className: "grid grid-cols-[1fr_min-content] gap-y-2"
|
|
1275
|
+
}, /* @__PURE__ */ React26.createElement(EmojiPicker, {
|
|
1276
|
+
emoji,
|
|
1277
|
+
onChangeEmoji: setEmoji,
|
|
1278
|
+
disabled,
|
|
1279
|
+
onClickClear: () => setEmoji(getEmojiValue(identity))
|
|
1280
|
+
}), /* @__PURE__ */ React26.createElement(HuePicker, {
|
|
1281
|
+
hue,
|
|
1282
|
+
onChangeHue: setHue,
|
|
1283
|
+
disabled,
|
|
1284
|
+
onClickClear: () => setHue(getHueValue(identity))
|
|
1285
|
+
}))), /* @__PURE__ */ React26.createElement(Actions, null, /* @__PURE__ */ React26.createElement(Action, {
|
|
1184
1286
|
variant: "ghost",
|
|
1185
1287
|
disabled,
|
|
1186
1288
|
onClick: () => {
|
|
@@ -1189,18 +1291,20 @@ var ProfileFormImpl = (props) => {
|
|
|
1189
1291
|
}
|
|
1190
1292
|
},
|
|
1191
1293
|
"data-testid": "update-profile-form-copy-key"
|
|
1192
|
-
}, t(copied ? "copy success label" : "copy self public key label")), /* @__PURE__ */
|
|
1294
|
+
}, t(copied ? "copy success label" : "copy self public key label")), /* @__PURE__ */ React26.createElement(Action, {
|
|
1193
1295
|
variant: "ghost",
|
|
1194
1296
|
disabled,
|
|
1195
1297
|
onClick: () => send?.({
|
|
1196
1298
|
type: "unchooseAction"
|
|
1197
1299
|
}),
|
|
1198
1300
|
"data-testid": "update-profile-form-back"
|
|
1199
|
-
}, t("back label")), /* @__PURE__ */
|
|
1301
|
+
}, t("back label")), /* @__PURE__ */ React26.createElement(Action, {
|
|
1200
1302
|
variant: "primary",
|
|
1201
1303
|
disabled,
|
|
1202
1304
|
onClick: () => onUpdateProfile?.({
|
|
1203
|
-
displayName
|
|
1305
|
+
displayName,
|
|
1306
|
+
emoji,
|
|
1307
|
+
hue
|
|
1204
1308
|
}),
|
|
1205
1309
|
"data-testid": "update-profile-form-continue"
|
|
1206
1310
|
}, t("done label"))));
|
|
@@ -1208,17 +1312,17 @@ var ProfileFormImpl = (props) => {
|
|
|
1208
1312
|
|
|
1209
1313
|
// packages/sdk/shell/src/panels/IdentityPanel/steps/SignOutChooser.tsx
|
|
1210
1314
|
import { Warning } from "@phosphor-icons/react";
|
|
1211
|
-
import
|
|
1212
|
-
import { Message, useTranslation as
|
|
1213
|
-
import { getSize as
|
|
1315
|
+
import React27 from "react";
|
|
1316
|
+
import { Message, useTranslation as useTranslation13 } from "@dxos/react-ui";
|
|
1317
|
+
import { getSize as getSize9, mx as mx18 } from "@dxos/react-ui-theme";
|
|
1214
1318
|
var SignOutChooser = (props) => {
|
|
1215
|
-
const { t } =
|
|
1319
|
+
const { t } = useTranslation13("os");
|
|
1216
1320
|
const onResetDevice = () => {
|
|
1217
1321
|
if (window.confirm(t("reset device confirm message"))) {
|
|
1218
1322
|
void props.onResetDevice?.();
|
|
1219
1323
|
}
|
|
1220
1324
|
};
|
|
1221
|
-
return /* @__PURE__ */
|
|
1325
|
+
return /* @__PURE__ */ React27.createElement(SignOutChooserImpl, {
|
|
1222
1326
|
disabled: !props.active,
|
|
1223
1327
|
onBack: () => props.send?.({
|
|
1224
1328
|
type: "unchooseAction"
|
|
@@ -1228,24 +1332,24 @@ var SignOutChooser = (props) => {
|
|
|
1228
1332
|
});
|
|
1229
1333
|
};
|
|
1230
1334
|
var SignOutChooserImpl = ({ disabled, onResetDevice, onJoinNewIdentity, onBack }) => {
|
|
1231
|
-
const { t } =
|
|
1232
|
-
return /* @__PURE__ */
|
|
1335
|
+
const { t } = useTranslation13("os");
|
|
1336
|
+
return /* @__PURE__ */ React27.createElement(React27.Fragment, null, /* @__PURE__ */ React27.createElement("div", {
|
|
1233
1337
|
role: "none",
|
|
1234
1338
|
className: "grow flex flex-col justify-center"
|
|
1235
|
-
}, /* @__PURE__ */
|
|
1339
|
+
}, /* @__PURE__ */ React27.createElement(Message.Root, {
|
|
1236
1340
|
valence: "error"
|
|
1237
|
-
}, /* @__PURE__ */
|
|
1238
|
-
className: mx18(
|
|
1239
|
-
}), t("sign out chooser title")), /* @__PURE__ */
|
|
1341
|
+
}, /* @__PURE__ */ React27.createElement(Message.Title, null, /* @__PURE__ */ React27.createElement(Warning, {
|
|
1342
|
+
className: mx18(getSize9(6), "inline mie-2")
|
|
1343
|
+
}), t("sign out chooser title")), /* @__PURE__ */ React27.createElement(Message.Body, null, t("sign out chooser message")))), /* @__PURE__ */ React27.createElement(Actions, null, /* @__PURE__ */ React27.createElement(Action, {
|
|
1240
1344
|
disabled,
|
|
1241
1345
|
onClick: onBack
|
|
1242
|
-
}, t("back label")), /* @__PURE__ */
|
|
1346
|
+
}, t("back label")), /* @__PURE__ */ React27.createElement(Action, {
|
|
1243
1347
|
variant: "primary",
|
|
1244
1348
|
"data-testid": "sign-out.join-new-identity",
|
|
1245
1349
|
classNames: "!bg-error-500 hover:!bg-error-550",
|
|
1246
1350
|
disabled,
|
|
1247
1351
|
onClick: onJoinNewIdentity
|
|
1248
|
-
}, t("join new identity label")), /* @__PURE__ */
|
|
1352
|
+
}, t("join new identity label")), /* @__PURE__ */ React27.createElement(Action, {
|
|
1249
1353
|
variant: "primary",
|
|
1250
1354
|
"data-testid": "sign-out.reset-device",
|
|
1251
1355
|
classNames: "!bg-error-500 hover:!bg-error-550",
|
|
@@ -1255,15 +1359,15 @@ var SignOutChooserImpl = ({ disabled, onResetDevice, onJoinNewIdentity, onBack }
|
|
|
1255
1359
|
};
|
|
1256
1360
|
|
|
1257
1361
|
// packages/sdk/shell/src/panels/IdentityPanel/useAgentHandlers.ts
|
|
1258
|
-
import { useCallback as useCallback5, useEffect as useEffect2, useState as
|
|
1362
|
+
import { useCallback as useCallback5, useEffect as useEffect2, useState as useState5 } from "react";
|
|
1259
1363
|
import { invariant } from "@dxos/invariant";
|
|
1260
1364
|
import { useAgentHostingProviderClient as useAgentHostingProviderClient2 } from "@dxos/react-client";
|
|
1261
|
-
import { Invitation as
|
|
1365
|
+
import { Invitation as Invitation3, InvitationEncoder as InvitationEncoder2 } from "@dxos/react-client/invitations";
|
|
1262
1366
|
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/IdentityPanel/useAgentHandlers.ts";
|
|
1263
1367
|
var useAgentHandlers = ({ client, invitations, identity }) => {
|
|
1264
|
-
const [validationMessage, setValidationMessage] =
|
|
1265
|
-
const [agentStatus, setAgentStatus] =
|
|
1266
|
-
const [agentActive, setAgentActive] =
|
|
1368
|
+
const [validationMessage, setValidationMessage] = useState5("");
|
|
1369
|
+
const [agentStatus, setAgentStatus] = useState5("");
|
|
1370
|
+
const [agentActive, setAgentActive] = useState5(false);
|
|
1267
1371
|
const agentHostingProviderClient = useAgentHostingProviderClient2(client.config);
|
|
1268
1372
|
useEffect2(() => {
|
|
1269
1373
|
const fetchAgentStatus = async () => {
|
|
@@ -1284,7 +1388,7 @@ var useAgentHandlers = ({ client, invitations, identity }) => {
|
|
|
1284
1388
|
}, []);
|
|
1285
1389
|
const handleAgentCreate = useCallback5(async (invitation) => {
|
|
1286
1390
|
const invitationCode = InvitationEncoder2.encode(invitation);
|
|
1287
|
-
if (invitation.state ===
|
|
1391
|
+
if (invitation.state === Invitation3.State.CONNECTING) {
|
|
1288
1392
|
console.log(JSON.stringify({
|
|
1289
1393
|
invitationCode,
|
|
1290
1394
|
authCode: invitation.authCode
|
|
@@ -1313,8 +1417,8 @@ var useAgentHandlers = ({ client, invitations, identity }) => {
|
|
|
1313
1417
|
const onAgentCreate = async () => {
|
|
1314
1418
|
invitations.forEach((invitation2) => invitation2.cancel());
|
|
1315
1419
|
const invitation = client.halo.share({
|
|
1316
|
-
type:
|
|
1317
|
-
authMethod:
|
|
1420
|
+
type: Invitation3.Type.MULTIUSE,
|
|
1421
|
+
authMethod: Invitation3.AuthMethod.NONE
|
|
1318
1422
|
});
|
|
1319
1423
|
invitation.subscribe(handleAgentCreate);
|
|
1320
1424
|
};
|
|
@@ -1348,24 +1452,68 @@ var useAgentHandlers = ({ client, invitations, identity }) => {
|
|
|
1348
1452
|
};
|
|
1349
1453
|
|
|
1350
1454
|
// packages/sdk/shell/src/steps/InvitationManager.tsx
|
|
1351
|
-
import { Check as
|
|
1352
|
-
import
|
|
1455
|
+
import { Check as Check4, X as X3 } from "@phosphor-icons/react";
|
|
1456
|
+
import React28, { useMemo as useMemo2 } from "react";
|
|
1353
1457
|
import { QR } from "react-qr-rounded";
|
|
1354
1458
|
import { Invitation as Invitation5 } from "@dxos/react-client/invitations";
|
|
1355
|
-
import { useId as useId4, useTranslation as
|
|
1356
|
-
import { descriptionText as descriptionText7, getSize as
|
|
1459
|
+
import { useId as useId4, useTranslation as useTranslation14 } from "@dxos/react-ui";
|
|
1460
|
+
import { descriptionText as descriptionText7, getSize as getSize10, mx as mx19 } from "@dxos/react-ui-theme";
|
|
1461
|
+
import { hexToEmoji as hexToEmoji3 } from "@dxos/util";
|
|
1462
|
+
|
|
1463
|
+
// packages/sdk/shell/src/util/invitationStatusValue.ts
|
|
1464
|
+
import { Invitation as Invitation4 } from "@dxos/react-client/invitations";
|
|
1465
|
+
var invitationStatusValue = /* @__PURE__ */ new Map([
|
|
1466
|
+
[
|
|
1467
|
+
Invitation4.State.ERROR,
|
|
1468
|
+
-3
|
|
1469
|
+
],
|
|
1470
|
+
[
|
|
1471
|
+
Invitation4.State.TIMEOUT,
|
|
1472
|
+
-2
|
|
1473
|
+
],
|
|
1474
|
+
[
|
|
1475
|
+
Invitation4.State.CANCELLED,
|
|
1476
|
+
-1
|
|
1477
|
+
],
|
|
1478
|
+
[
|
|
1479
|
+
Invitation4.State.INIT,
|
|
1480
|
+
0
|
|
1481
|
+
],
|
|
1482
|
+
[
|
|
1483
|
+
Invitation4.State.CONNECTING,
|
|
1484
|
+
1
|
|
1485
|
+
],
|
|
1486
|
+
[
|
|
1487
|
+
Invitation4.State.CONNECTED,
|
|
1488
|
+
2
|
|
1489
|
+
],
|
|
1490
|
+
[
|
|
1491
|
+
Invitation4.State.READY_FOR_AUTHENTICATION,
|
|
1492
|
+
3
|
|
1493
|
+
],
|
|
1494
|
+
[
|
|
1495
|
+
Invitation4.State.AUTHENTICATING,
|
|
1496
|
+
4
|
|
1497
|
+
],
|
|
1498
|
+
[
|
|
1499
|
+
Invitation4.State.SUCCESS,
|
|
1500
|
+
5
|
|
1501
|
+
]
|
|
1502
|
+
]);
|
|
1503
|
+
|
|
1504
|
+
// packages/sdk/shell/src/steps/InvitationManager.tsx
|
|
1357
1505
|
var InvitationManagerView = ({ children, ...props }) => {
|
|
1358
|
-
return /* @__PURE__ */
|
|
1506
|
+
return /* @__PURE__ */ React28.createElement(Viewport.View, {
|
|
1359
1507
|
...props,
|
|
1360
1508
|
classNames: "grow flex flex-col justify-around items-center"
|
|
1361
1509
|
}, children);
|
|
1362
1510
|
};
|
|
1363
|
-
var InvitationManager = ({ invitationUrl, active, send, status, type, authCode, id }) => {
|
|
1364
|
-
const { t } =
|
|
1511
|
+
var InvitationManager = ({ invitationUrl, active, send, status, type, authCode, id = "0" }) => {
|
|
1512
|
+
const { t } = useTranslation14("os");
|
|
1365
1513
|
const qrLabel = useId4("invitation-manager__qr-code");
|
|
1366
1514
|
const statusValue = type === Invitation5.Type.MULTIUSE ? 0 : invitationStatusValue.get(status) ?? 0;
|
|
1367
1515
|
const showAuthCode = statusValue === 3;
|
|
1368
|
-
const
|
|
1516
|
+
const emoji = hexToEmoji3(id);
|
|
1369
1517
|
const activeView = useMemo2(() => {
|
|
1370
1518
|
switch (true) {
|
|
1371
1519
|
case statusValue === 5:
|
|
@@ -1379,18 +1527,18 @@ var InvitationManager = ({ invitationUrl, active, send, status, type, authCode,
|
|
|
1379
1527
|
}, [
|
|
1380
1528
|
statusValue
|
|
1381
1529
|
]);
|
|
1382
|
-
return /* @__PURE__ */
|
|
1530
|
+
return /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(Viewport.Root, {
|
|
1383
1531
|
activeView,
|
|
1384
1532
|
classNames: "grow plb-1"
|
|
1385
|
-
}, /* @__PURE__ */
|
|
1533
|
+
}, /* @__PURE__ */ React28.createElement(Viewport.Views, null, /* @__PURE__ */ React28.createElement(InvitationManagerView, {
|
|
1386
1534
|
id: "showing qr",
|
|
1387
|
-
emoji
|
|
1388
|
-
}, /* @__PURE__ */
|
|
1535
|
+
emoji
|
|
1536
|
+
}, /* @__PURE__ */ React28.createElement("p", {
|
|
1389
1537
|
className: "text-sm mlb-1 font-normal text-center"
|
|
1390
|
-
}, t(type === Invitation5.Type.MULTIUSE ? "invite many qr label" : "invite one qr label")), /* @__PURE__ */
|
|
1538
|
+
}, t(type === Invitation5.Type.MULTIUSE ? "invite many qr label" : "invite one qr label")), /* @__PURE__ */ React28.createElement("div", {
|
|
1391
1539
|
role: "none",
|
|
1392
1540
|
className: mx19(descriptionText7, "is-full max-is-[14rem] relative")
|
|
1393
|
-
}, /* @__PURE__ */
|
|
1541
|
+
}, /* @__PURE__ */ React28.createElement(QR, {
|
|
1394
1542
|
rounding: 100,
|
|
1395
1543
|
backgroundColor: "transparent",
|
|
1396
1544
|
color: "currentColor",
|
|
@@ -1398,31 +1546,31 @@ var InvitationManager = ({ invitationUrl, active, send, status, type, authCode,
|
|
|
1398
1546
|
"aria-labelledby": qrLabel,
|
|
1399
1547
|
errorCorrectionLevel: "Q",
|
|
1400
1548
|
cutout: true
|
|
1401
|
-
}, invitationUrl ?? "never"), /* @__PURE__ */
|
|
1402
|
-
text:
|
|
1403
|
-
}))), /* @__PURE__ */
|
|
1549
|
+
}, invitationUrl ?? "never"), /* @__PURE__ */ React28.createElement(Centered, null, /* @__PURE__ */ React28.createElement(Emoji, {
|
|
1550
|
+
text: emoji
|
|
1551
|
+
}))), /* @__PURE__ */ React28.createElement("span", {
|
|
1404
1552
|
id: qrLabel,
|
|
1405
1553
|
className: "sr-only"
|
|
1406
|
-
}, t("qr label")), /* @__PURE__ */
|
|
1554
|
+
}, t("qr label")), /* @__PURE__ */ React28.createElement(CopyButton, {
|
|
1407
1555
|
variant: "ghost",
|
|
1408
1556
|
value: invitationUrl ?? "never"
|
|
1409
|
-
})), /* @__PURE__ */
|
|
1557
|
+
})), /* @__PURE__ */ React28.createElement(InvitationManagerView, {
|
|
1410
1558
|
id: "showing auth code"
|
|
1411
|
-
}, /* @__PURE__ */
|
|
1559
|
+
}, /* @__PURE__ */ React28.createElement(Label, null, t("auth code message")), /* @__PURE__ */ React28.createElement(AuthCode, {
|
|
1412
1560
|
code: authCode,
|
|
1413
1561
|
large: true,
|
|
1414
1562
|
classNames: "text-black dark:text-white"
|
|
1415
|
-
}), /* @__PURE__ */
|
|
1416
|
-
text:
|
|
1417
|
-
})), /* @__PURE__ */
|
|
1563
|
+
}), /* @__PURE__ */ React28.createElement(Label, null, "Be sure the other device is showing this symbol:"), emoji && /* @__PURE__ */ React28.createElement(Emoji, {
|
|
1564
|
+
text: emoji
|
|
1565
|
+
})), /* @__PURE__ */ React28.createElement(InvitationManagerView, {
|
|
1418
1566
|
id: "showing final"
|
|
1419
|
-
}, statusValue > 0 ? /* @__PURE__ */
|
|
1420
|
-
className: mx19("m-1.5",
|
|
1421
|
-
}) : /* @__PURE__ */
|
|
1422
|
-
className: mx19("m-1.5",
|
|
1423
|
-
})))), /* @__PURE__ */
|
|
1567
|
+
}, statusValue > 0 ? /* @__PURE__ */ React28.createElement(Check4, {
|
|
1568
|
+
className: mx19("m-1.5", getSize10(6))
|
|
1569
|
+
}) : /* @__PURE__ */ React28.createElement(X3, {
|
|
1570
|
+
className: mx19("m-1.5", getSize10(6))
|
|
1571
|
+
})))), /* @__PURE__ */ React28.createElement(Actions, {
|
|
1424
1572
|
classNames: "mbs-4"
|
|
1425
|
-
}, /* @__PURE__ */
|
|
1573
|
+
}, /* @__PURE__ */ React28.createElement(Action, {
|
|
1426
1574
|
disabled: !active,
|
|
1427
1575
|
onClick: () => send?.({
|
|
1428
1576
|
type: "deselectInvitation"
|
|
@@ -1434,29 +1582,30 @@ var InvitationManager = ({ invitationUrl, active, send, status, type, authCode,
|
|
|
1434
1582
|
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/IdentityPanel/IdentityPanel.tsx";
|
|
1435
1583
|
var viewStyles = "pbs-1 pbe-3 pli-3";
|
|
1436
1584
|
var IdentityHeading = ({ titleId, title, identity, onDone }) => {
|
|
1437
|
-
const
|
|
1438
|
-
return /* @__PURE__ */
|
|
1585
|
+
const fallbackValue = keyToFallback2(identity.identityKey);
|
|
1586
|
+
return /* @__PURE__ */ React29.createElement(Heading, {
|
|
1439
1587
|
titleId,
|
|
1440
1588
|
title,
|
|
1441
|
-
corner: /* @__PURE__ */
|
|
1589
|
+
corner: /* @__PURE__ */ React29.createElement(CloseButton, {
|
|
1442
1590
|
onDone
|
|
1443
1591
|
})
|
|
1444
|
-
}, /* @__PURE__ */
|
|
1592
|
+
}, /* @__PURE__ */ React29.createElement(Avatar4.Root, {
|
|
1445
1593
|
size: 12,
|
|
1446
1594
|
variant: "circle",
|
|
1447
|
-
status: "active"
|
|
1448
|
-
|
|
1595
|
+
status: "active",
|
|
1596
|
+
hue: identity.profile?.hue || fallbackValue.hue
|
|
1597
|
+
}, /* @__PURE__ */ React29.createElement(Avatar4.Frame, {
|
|
1449
1598
|
classNames: "block mbs-4 mbe-2 mli-auto chromatic-ignore"
|
|
1450
|
-
}, /* @__PURE__ */
|
|
1451
|
-
|
|
1452
|
-
})), /* @__PURE__ */
|
|
1599
|
+
}, /* @__PURE__ */ React29.createElement(Avatar4.Fallback, {
|
|
1600
|
+
text: identity.profile?.emoji || fallbackValue.emoji
|
|
1601
|
+
})), /* @__PURE__ */ React29.createElement(Avatar4.Label, {
|
|
1453
1602
|
classNames: "block text-center font-light text-xl",
|
|
1454
1603
|
"data-testid": "identityHeading.displayName"
|
|
1455
1604
|
}, identity.profile?.displayName ?? generateName3(identity.identityKey.toHex()))));
|
|
1456
1605
|
};
|
|
1457
1606
|
var IdentityPanelImpl = (props) => {
|
|
1458
1607
|
const { identity, titleId, activeView, onUpdateProfile, onResetDevice, onJoinNewIdentity, IdentityActionChooser: IdentityActionChooserComponent = IdentityActionChooser, InvitationManager: InvitationManagerComponent = InvitationManager, onDone, ...rest } = props;
|
|
1459
|
-
const { t } =
|
|
1608
|
+
const { t } = useTranslation15("os");
|
|
1460
1609
|
const title = useMemo3(() => {
|
|
1461
1610
|
switch (activeView) {
|
|
1462
1611
|
case "agent manager":
|
|
@@ -1470,54 +1619,54 @@ var IdentityPanelImpl = (props) => {
|
|
|
1470
1619
|
activeView,
|
|
1471
1620
|
t
|
|
1472
1621
|
]);
|
|
1473
|
-
return /* @__PURE__ */
|
|
1622
|
+
return /* @__PURE__ */ React29.createElement(DensityProvider2, {
|
|
1474
1623
|
density: "fine"
|
|
1475
|
-
}, /* @__PURE__ */
|
|
1624
|
+
}, /* @__PURE__ */ React29.createElement(IdentityHeading, {
|
|
1476
1625
|
identity,
|
|
1477
1626
|
titleId,
|
|
1478
1627
|
title,
|
|
1479
1628
|
onDone
|
|
1480
|
-
}), /* @__PURE__ */
|
|
1629
|
+
}), /* @__PURE__ */ React29.createElement(Viewport.Root, {
|
|
1481
1630
|
activeView
|
|
1482
|
-
}, /* @__PURE__ */
|
|
1631
|
+
}, /* @__PURE__ */ React29.createElement(Viewport.Views, null, /* @__PURE__ */ React29.createElement(Viewport.View, {
|
|
1483
1632
|
id: "identity action chooser",
|
|
1484
1633
|
classNames: viewStyles
|
|
1485
|
-
}, /* @__PURE__ */
|
|
1634
|
+
}, /* @__PURE__ */ React29.createElement(IdentityActionChooserComponent, {
|
|
1486
1635
|
active: activeView === "identity action chooser",
|
|
1487
1636
|
...rest
|
|
1488
|
-
})), /* @__PURE__ */
|
|
1637
|
+
})), /* @__PURE__ */ React29.createElement(Viewport.View, {
|
|
1489
1638
|
id: "device invitation manager",
|
|
1490
1639
|
classNames: viewStyles
|
|
1491
|
-
}, /* @__PURE__ */
|
|
1640
|
+
}, /* @__PURE__ */ React29.createElement(InvitationManagerComponent, {
|
|
1492
1641
|
active: activeView === "device invitation manager",
|
|
1493
1642
|
...rest,
|
|
1494
1643
|
invitationUrl: rest.createInvitationUrl(rest.invitationCode)
|
|
1495
|
-
})), /* @__PURE__ */
|
|
1644
|
+
})), /* @__PURE__ */ React29.createElement(Viewport.View, {
|
|
1496
1645
|
id: "device manager",
|
|
1497
1646
|
classNames: viewStyles
|
|
1498
|
-
}, /* @__PURE__ */
|
|
1647
|
+
}, /* @__PURE__ */ React29.createElement(DeviceManager, {
|
|
1499
1648
|
active: activeView === "device manager",
|
|
1500
1649
|
...rest
|
|
1501
|
-
})), /* @__PURE__ */
|
|
1650
|
+
})), /* @__PURE__ */ React29.createElement(Viewport.View, {
|
|
1502
1651
|
classNames: viewStyles,
|
|
1503
1652
|
id: "update profile form"
|
|
1504
|
-
}, /* @__PURE__ */
|
|
1653
|
+
}, /* @__PURE__ */ React29.createElement(ProfileForm, {
|
|
1505
1654
|
send: rest.send,
|
|
1506
1655
|
active: activeView === "update profile form",
|
|
1507
1656
|
identity,
|
|
1508
1657
|
onUpdateProfile
|
|
1509
|
-
})), /* @__PURE__ */
|
|
1658
|
+
})), /* @__PURE__ */ React29.createElement(Viewport.View, {
|
|
1510
1659
|
classNames: viewStyles,
|
|
1511
1660
|
id: "signing out"
|
|
1512
|
-
}, /* @__PURE__ */
|
|
1661
|
+
}, /* @__PURE__ */ React29.createElement(SignOutChooser, {
|
|
1513
1662
|
send: rest.send,
|
|
1514
1663
|
active: activeView === "signing out",
|
|
1515
1664
|
onResetDevice,
|
|
1516
1665
|
onJoinNewIdentity
|
|
1517
|
-
})), /* @__PURE__ */
|
|
1666
|
+
})), /* @__PURE__ */ React29.createElement(Viewport.View, {
|
|
1518
1667
|
classNames: viewStyles,
|
|
1519
1668
|
id: "agent manager"
|
|
1520
|
-
}, /* @__PURE__ */
|
|
1669
|
+
}, /* @__PURE__ */ React29.createElement(AgentForm, {
|
|
1521
1670
|
send: rest.send,
|
|
1522
1671
|
active: activeView === "agent manager",
|
|
1523
1672
|
...rest
|
|
@@ -1525,7 +1674,7 @@ var IdentityPanelImpl = (props) => {
|
|
|
1525
1674
|
};
|
|
1526
1675
|
var IdentityPanelWithInvitationImpl = ({ invitation, ...props }) => {
|
|
1527
1676
|
const invitationStatus = useInvitationStatus2(invitation);
|
|
1528
|
-
return /* @__PURE__ */
|
|
1677
|
+
return /* @__PURE__ */ React29.createElement(IdentityPanelImpl, {
|
|
1529
1678
|
...props,
|
|
1530
1679
|
...invitationStatus
|
|
1531
1680
|
});
|
|
@@ -1550,7 +1699,7 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
|
|
|
1550
1699
|
const subscription = identityService.subscribe((state) => {
|
|
1551
1700
|
log3("[state]", state, {
|
|
1552
1701
|
F: __dxlog_file4,
|
|
1553
|
-
L:
|
|
1702
|
+
L: 139,
|
|
1554
1703
|
S: void 0,
|
|
1555
1704
|
C: (f, a) => f(...a)
|
|
1556
1705
|
});
|
|
@@ -1610,40 +1759,40 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
|
|
|
1610
1759
|
onUpdateProfile,
|
|
1611
1760
|
...agentProps
|
|
1612
1761
|
};
|
|
1613
|
-
return identityState.context.invitation ? /* @__PURE__ */
|
|
1762
|
+
return identityState.context.invitation ? /* @__PURE__ */ React29.createElement(IdentityPanelWithInvitationImpl, {
|
|
1614
1763
|
...implProps,
|
|
1615
1764
|
invitation: identityState.context.invitation
|
|
1616
|
-
}) : /* @__PURE__ */
|
|
1765
|
+
}) : /* @__PURE__ */ React29.createElement(IdentityPanelImpl, implProps);
|
|
1617
1766
|
};
|
|
1618
1767
|
|
|
1619
1768
|
// packages/sdk/shell/src/panels/JoinPanel/JoinPanel.tsx
|
|
1620
|
-
import
|
|
1769
|
+
import React39, { useCallback as useCallback7, useEffect as useEffect5, useMemo as useMemo4 } from "react";
|
|
1621
1770
|
import { log as log8 } from "@dxos/log";
|
|
1622
1771
|
import { useClient as useClient6, useMulticastObservable } from "@dxos/react-client";
|
|
1623
1772
|
import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
|
|
1624
|
-
import { DensityProvider as DensityProvider3, useId as useId7, useThemeContext as
|
|
1773
|
+
import { DensityProvider as DensityProvider3, useId as useId7, useThemeContext as useThemeContext4 } from "@dxos/react-ui";
|
|
1625
1774
|
|
|
1626
1775
|
// packages/sdk/shell/src/panels/JoinPanel/JoinHeading.tsx
|
|
1627
1776
|
import { X as X4 } from "@phosphor-icons/react";
|
|
1628
|
-
import
|
|
1629
|
-
import { Button as
|
|
1630
|
-
import { descriptionText as descriptionText8, getSize as
|
|
1777
|
+
import React30, { cloneElement, forwardRef as forwardRef8 } from "react";
|
|
1778
|
+
import { Button as Button7, useTranslation as useTranslation16 } from "@dxos/react-ui";
|
|
1779
|
+
import { descriptionText as descriptionText8, getSize as getSize11, mx as mx20 } from "@dxos/react-ui-theme";
|
|
1631
1780
|
var JoinHeading = /* @__PURE__ */ forwardRef8(({ mode, titleId, onExit, exitActionParent }, forwardedRef) => {
|
|
1632
|
-
const { t } =
|
|
1633
|
-
const exitButton = /* @__PURE__ */
|
|
1781
|
+
const { t } = useTranslation16("os");
|
|
1782
|
+
const exitButton = /* @__PURE__ */ React30.createElement(Button7, {
|
|
1634
1783
|
variant: "ghost",
|
|
1635
1784
|
...onExit && {
|
|
1636
1785
|
onClick: onExit
|
|
1637
1786
|
},
|
|
1638
1787
|
classNames: mx20(descriptionText8, "plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),
|
|
1639
1788
|
"data-testid": "join-exit"
|
|
1640
|
-
}, /* @__PURE__ */
|
|
1789
|
+
}, /* @__PURE__ */ React30.createElement(X4, {
|
|
1641
1790
|
weight: "bold",
|
|
1642
|
-
className:
|
|
1643
|
-
}), /* @__PURE__ */
|
|
1791
|
+
className: getSize11(4)
|
|
1792
|
+
}), /* @__PURE__ */ React30.createElement("span", {
|
|
1644
1793
|
className: "sr-only"
|
|
1645
1794
|
}, t("exit label")));
|
|
1646
|
-
return /* @__PURE__ */
|
|
1795
|
+
return /* @__PURE__ */ React30.createElement(Heading, {
|
|
1647
1796
|
ref: forwardedRef,
|
|
1648
1797
|
titleId,
|
|
1649
1798
|
title: t(mode === "halo-only" ? "selecting identity heading" : "joining space heading"),
|
|
@@ -2246,17 +2395,17 @@ var useJoinMachine = (client, options) => {
|
|
|
2246
2395
|
|
|
2247
2396
|
// packages/sdk/shell/src/panels/JoinPanel/steps/AdditionMethodChooser.tsx
|
|
2248
2397
|
import { CaretRight as CaretRight2, Plus as Plus2, QrCode, Textbox } from "@phosphor-icons/react";
|
|
2249
|
-
import
|
|
2250
|
-
import { useTranslation as
|
|
2251
|
-
import { getSize as
|
|
2398
|
+
import React31 from "react";
|
|
2399
|
+
import { useTranslation as useTranslation17 } from "@dxos/react-ui";
|
|
2400
|
+
import { getSize as getSize12 } from "@dxos/react-ui-theme";
|
|
2252
2401
|
var AdditionMethodChooser = (viewStateProps) => {
|
|
2253
2402
|
const disabled = !viewStateProps.active;
|
|
2254
2403
|
const { send } = viewStateProps;
|
|
2255
|
-
const { t } =
|
|
2404
|
+
const { t } = useTranslation17("os");
|
|
2256
2405
|
const sharedButtonProps = {
|
|
2257
2406
|
disabled,
|
|
2258
|
-
after: /* @__PURE__ */
|
|
2259
|
-
className:
|
|
2407
|
+
after: /* @__PURE__ */ React31.createElement(CaretRight2, {
|
|
2408
|
+
className: getSize12(4),
|
|
2260
2409
|
weight: "bold"
|
|
2261
2410
|
}),
|
|
2262
2411
|
slots: {
|
|
@@ -2265,37 +2414,37 @@ var AdditionMethodChooser = (viewStateProps) => {
|
|
|
2265
2414
|
}
|
|
2266
2415
|
}
|
|
2267
2416
|
};
|
|
2268
|
-
return /* @__PURE__ */
|
|
2417
|
+
return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(StepHeading, null, t("addition method chooser title")), /* @__PURE__ */ React31.createElement("div", {
|
|
2269
2418
|
role: "none",
|
|
2270
2419
|
className: "flex flex-col gap-1 grow"
|
|
2271
|
-
}, /* @__PURE__ */
|
|
2420
|
+
}, /* @__PURE__ */ React31.createElement(CompoundButton, {
|
|
2272
2421
|
...sharedButtonProps,
|
|
2273
2422
|
description: t("create identity description"),
|
|
2274
|
-
before: /* @__PURE__ */
|
|
2275
|
-
className:
|
|
2423
|
+
before: /* @__PURE__ */ React31.createElement(Plus2, {
|
|
2424
|
+
className: getSize12(6)
|
|
2276
2425
|
}),
|
|
2277
2426
|
onClick: () => send({
|
|
2278
2427
|
type: "createIdentity"
|
|
2279
2428
|
}),
|
|
2280
2429
|
"data-autofocus": "choosingAuthMethod",
|
|
2281
2430
|
"data-testid": "identity-chooser.create-identity"
|
|
2282
|
-
}, t("create identity label")), /* @__PURE__ */
|
|
2431
|
+
}, t("create identity label")), /* @__PURE__ */ React31.createElement(CompoundButton, {
|
|
2283
2432
|
...sharedButtonProps,
|
|
2284
2433
|
description: t("join identity description"),
|
|
2285
|
-
before: /* @__PURE__ */
|
|
2286
|
-
className:
|
|
2434
|
+
before: /* @__PURE__ */ React31.createElement(QrCode, {
|
|
2435
|
+
className: getSize12(6)
|
|
2287
2436
|
}),
|
|
2288
2437
|
onClick: () => send({
|
|
2289
2438
|
type: "acceptHaloInvitation"
|
|
2290
2439
|
}),
|
|
2291
2440
|
"data-testid": "identity-chooser.join-identity"
|
|
2292
|
-
}, t("join identity label")), /* @__PURE__ */
|
|
2441
|
+
}, t("join identity label")), /* @__PURE__ */ React31.createElement(CompoundButton, {
|
|
2293
2442
|
...sharedButtonProps,
|
|
2294
2443
|
// TODO(mykola): Implement recover.
|
|
2295
2444
|
disabled: true,
|
|
2296
2445
|
description: t("recover identity description"),
|
|
2297
|
-
before: /* @__PURE__ */
|
|
2298
|
-
className:
|
|
2446
|
+
before: /* @__PURE__ */ React31.createElement(Textbox, {
|
|
2447
|
+
className: getSize12(6)
|
|
2299
2448
|
}),
|
|
2300
2449
|
onClick: () => send({
|
|
2301
2450
|
type: "recoverIdentity"
|
|
@@ -2305,37 +2454,39 @@ var AdditionMethodChooser = (viewStateProps) => {
|
|
|
2305
2454
|
};
|
|
2306
2455
|
|
|
2307
2456
|
// packages/sdk/shell/src/panels/JoinPanel/steps/IdentityAdded.tsx
|
|
2308
|
-
import
|
|
2457
|
+
import React32, { cloneElement as cloneElement2 } from "react";
|
|
2309
2458
|
import { generateName as generateName4 } from "@dxos/display-name";
|
|
2310
|
-
import { Avatar as Avatar5, useId as useId6,
|
|
2459
|
+
import { Avatar as Avatar5, useId as useId6, useTranslation as useTranslation18 } from "@dxos/react-ui";
|
|
2311
2460
|
import { mx as mx21 } from "@dxos/react-ui-theme";
|
|
2461
|
+
import { hexToFallback } from "@dxos/util";
|
|
2312
2462
|
var IdentityAdded = (props) => {
|
|
2313
2463
|
const { mode, addedIdentity, active, send, onDone, doneActionParent } = props;
|
|
2314
2464
|
const disabled = !active;
|
|
2315
|
-
const { t } =
|
|
2316
|
-
const
|
|
2465
|
+
const { t } = useTranslation18("os");
|
|
2466
|
+
const addedIdentityHex = addedIdentity?.identityKey.toHex() ?? "0";
|
|
2467
|
+
const fallbackValue = hexToFallback(addedIdentityHex);
|
|
2317
2468
|
const labelId = useId6("identityListItem__label");
|
|
2318
|
-
const
|
|
2319
|
-
const
|
|
2320
|
-
const doneAction = /* @__PURE__ */ React30.createElement(Action, {
|
|
2469
|
+
const displayName = addedIdentity?.profile?.displayName ?? (addedIdentity && generateName4(addedIdentityHex));
|
|
2470
|
+
const doneAction = /* @__PURE__ */ React32.createElement(Action, {
|
|
2321
2471
|
...onDone && {
|
|
2322
2472
|
onClick: () => onDone(null)
|
|
2323
2473
|
},
|
|
2324
2474
|
disabled,
|
|
2325
2475
|
"data-autofocus": "confirmingAddedIdentity",
|
|
2326
2476
|
"data-testid": "identity-added-done"
|
|
2327
|
-
}, /* @__PURE__ */
|
|
2328
|
-
return /* @__PURE__ */
|
|
2477
|
+
}, /* @__PURE__ */ React32.createElement("span", null, t("done label")));
|
|
2478
|
+
return /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(StepHeading, null, t("identity added label")), /* @__PURE__ */ React32.createElement("div", {
|
|
2329
2479
|
role: "none",
|
|
2330
2480
|
className: "grow flex flex-col items-center justify-center text-center gap-2"
|
|
2331
|
-
}, /* @__PURE__ */
|
|
2481
|
+
}, /* @__PURE__ */ React32.createElement(Avatar5.Root, {
|
|
2332
2482
|
status: "active",
|
|
2333
|
-
labelId
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2483
|
+
labelId,
|
|
2484
|
+
hue: addedIdentity?.profile?.hue || fallbackValue.hue
|
|
2485
|
+
}, /* @__PURE__ */ React32.createElement(Avatar5.Frame, null, /* @__PURE__ */ React32.createElement(Avatar5.Fallback, {
|
|
2486
|
+
text: addedIdentity?.profile?.emoji || fallbackValue.emoji
|
|
2487
|
+
})), /* @__PURE__ */ React32.createElement(Avatar5.Label, {
|
|
2337
2488
|
classNames: mx21("text-lg truncate", !addedIdentity?.profile?.displayName && "font-mono")
|
|
2338
|
-
}, displayName))), /* @__PURE__ */
|
|
2489
|
+
}, displayName))), /* @__PURE__ */ React32.createElement(Actions, null, mode === "halo-only" ? doneActionParent ? /* @__PURE__ */ cloneElement2(doneActionParent, {}, doneAction) : doneAction : /* @__PURE__ */ React32.createElement(Action, {
|
|
2339
2490
|
variant: "primary",
|
|
2340
2491
|
disabled: disabled || !addedIdentity,
|
|
2341
2492
|
onClick: () => addedIdentity && send({
|
|
@@ -2347,17 +2498,17 @@ var IdentityAdded = (props) => {
|
|
|
2347
2498
|
};
|
|
2348
2499
|
|
|
2349
2500
|
// packages/sdk/shell/src/panels/JoinPanel/steps/IdentityInput.tsx
|
|
2350
|
-
import
|
|
2501
|
+
import React33, { useState as useState6 } from "react";
|
|
2351
2502
|
import { log as log5 } from "@dxos/log";
|
|
2352
2503
|
import { useClient as useClient4 } from "@dxos/react-client";
|
|
2353
|
-
import { useTranslation as
|
|
2504
|
+
import { useTranslation as useTranslation19 } from "@dxos/react-ui";
|
|
2354
2505
|
var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/JoinPanel/steps/IdentityInput.tsx";
|
|
2355
2506
|
var IdentityInput = (props) => {
|
|
2356
2507
|
const { send, method } = props;
|
|
2357
2508
|
const isRecover = method === "recover identity";
|
|
2358
2509
|
const client = useClient4();
|
|
2359
|
-
const { t } =
|
|
2360
|
-
const [validationMessage, setValidationMessage] =
|
|
2510
|
+
const { t } = useTranslation19("os");
|
|
2511
|
+
const [validationMessage, setValidationMessage] = useState6("");
|
|
2361
2512
|
const createIdentity = (displayName) => {
|
|
2362
2513
|
void client.halo.createIdentity({
|
|
2363
2514
|
[isRecover ? "seedphrase" : "displayName"]: displayName
|
|
@@ -2376,7 +2527,7 @@ var IdentityInput = (props) => {
|
|
|
2376
2527
|
setValidationMessage(t(isRecover ? "failed to recover identity message" : "failed to create identity message"));
|
|
2377
2528
|
});
|
|
2378
2529
|
};
|
|
2379
|
-
return /* @__PURE__ */
|
|
2530
|
+
return /* @__PURE__ */ React33.createElement(IdentityInputImpl, {
|
|
2380
2531
|
...props,
|
|
2381
2532
|
onDisplayNameConfirm: createIdentity,
|
|
2382
2533
|
validationMessage
|
|
@@ -2385,27 +2536,27 @@ var IdentityInput = (props) => {
|
|
|
2385
2536
|
var IdentityInputImpl = (props) => {
|
|
2386
2537
|
const { method, send, active, onDisplayNameConfirm, validationMessage } = props;
|
|
2387
2538
|
const disabled = !active;
|
|
2388
|
-
const { t } =
|
|
2389
|
-
const [inputValue, setInputValue] =
|
|
2539
|
+
const { t } = useTranslation19("os");
|
|
2540
|
+
const [inputValue, setInputValue] = useState6("");
|
|
2390
2541
|
const isRecover = method === "recover identity";
|
|
2391
|
-
return /* @__PURE__ */
|
|
2542
|
+
return /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement("div", {
|
|
2392
2543
|
role: "none",
|
|
2393
2544
|
className: "grow flex flex-col justify-center"
|
|
2394
|
-
}, /* @__PURE__ */
|
|
2545
|
+
}, /* @__PURE__ */ React33.createElement(Input, {
|
|
2395
2546
|
validationMessage,
|
|
2396
|
-
label: /* @__PURE__ */
|
|
2547
|
+
label: /* @__PURE__ */ React33.createElement(StepHeading, null, t(isRecover ? "recover identity input label" : "new identity input label")),
|
|
2397
2548
|
disabled,
|
|
2398
2549
|
"data-testid": "identity-input",
|
|
2399
2550
|
placeholder: isRecover ? "Type your recovery phrase" : "Type a display name",
|
|
2400
2551
|
onChange: ({ target: { value } }) => setInputValue(value)
|
|
2401
|
-
})), /* @__PURE__ */
|
|
2552
|
+
})), /* @__PURE__ */ React33.createElement(Actions, null, /* @__PURE__ */ React33.createElement(Action, {
|
|
2402
2553
|
variant: "ghost",
|
|
2403
2554
|
disabled,
|
|
2404
2555
|
onClick: () => send?.({
|
|
2405
2556
|
type: "deselectAuthMethod"
|
|
2406
2557
|
}),
|
|
2407
2558
|
"data-testid": `${method === "recover identity" ? "recover" : "create"}-identity-input-back`
|
|
2408
|
-
}, t("back label")), /* @__PURE__ */
|
|
2559
|
+
}, t("back label")), /* @__PURE__ */ React33.createElement(Action, {
|
|
2409
2560
|
variant: "primary",
|
|
2410
2561
|
disabled,
|
|
2411
2562
|
onClick: () => onDisplayNameConfirm?.(inputValue),
|
|
@@ -2414,31 +2565,31 @@ var IdentityInputImpl = (props) => {
|
|
|
2414
2565
|
};
|
|
2415
2566
|
|
|
2416
2567
|
// packages/sdk/shell/src/panels/JoinPanel/steps/InvitationAccepted.tsx
|
|
2417
|
-
import
|
|
2418
|
-
import { useTranslation as
|
|
2568
|
+
import React34, { cloneElement as cloneElement3 } from "react";
|
|
2569
|
+
import { useTranslation as useTranslation20 } from "@dxos/react-ui";
|
|
2419
2570
|
var InvitationAccepted = (props) => {
|
|
2420
2571
|
const { active, Kind, doneActionParent, onDone } = props;
|
|
2421
2572
|
const disabled = !active;
|
|
2422
|
-
const { t } =
|
|
2423
|
-
const doneAction = /* @__PURE__ */
|
|
2573
|
+
const { t } = useTranslation20("os");
|
|
2574
|
+
const doneAction = /* @__PURE__ */ React34.createElement(Action, {
|
|
2424
2575
|
variant: "primary",
|
|
2425
2576
|
onClick: onDone,
|
|
2426
2577
|
disabled,
|
|
2427
2578
|
"data-autofocus": `success${Kind}Invitation finishingJoining${Kind}`,
|
|
2428
2579
|
"data-testid": `${Kind.toLowerCase()}-invitation-accepted-done`
|
|
2429
2580
|
}, t("done label"));
|
|
2430
|
-
return /* @__PURE__ */
|
|
2581
|
+
return /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement("div", {
|
|
2431
2582
|
role: "none",
|
|
2432
2583
|
className: "grow flex flex-col justify-center"
|
|
2433
|
-
}, /* @__PURE__ */
|
|
2584
|
+
}, /* @__PURE__ */ React34.createElement("p", {
|
|
2434
2585
|
className: "text-center text-sm font-normal"
|
|
2435
|
-
}, t("welcome message"))), /* @__PURE__ */
|
|
2586
|
+
}, t("welcome message"))), /* @__PURE__ */ React34.createElement(Actions, null, doneActionParent ? /* @__PURE__ */ cloneElement3(doneActionParent, {}, doneAction) : doneAction));
|
|
2436
2587
|
};
|
|
2437
2588
|
|
|
2438
2589
|
// packages/sdk/shell/src/panels/JoinPanel/steps/InvitationInput.tsx
|
|
2439
|
-
import
|
|
2590
|
+
import React35, { useState as useState7, useEffect as useEffect4, cloneElement as cloneElement4 } from "react";
|
|
2440
2591
|
import { log as log6 } from "@dxos/log";
|
|
2441
|
-
import { useTranslation as
|
|
2592
|
+
import { useTranslation as useTranslation21 } from "@dxos/react-ui";
|
|
2442
2593
|
var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/JoinPanel/steps/InvitationInput.tsx";
|
|
2443
2594
|
var invitationCodeFromUrl = (text) => {
|
|
2444
2595
|
try {
|
|
@@ -2458,8 +2609,8 @@ var invitationCodeFromUrl = (text) => {
|
|
|
2458
2609
|
var InvitationInput = (props) => {
|
|
2459
2610
|
const { Kind, active, send, unredeemedCode, onExit, exitActionParent, onDone, doneActionParent, succeededKeys } = props;
|
|
2460
2611
|
const disabled = !active;
|
|
2461
|
-
const { t } =
|
|
2462
|
-
const [inputValue, setInputValue] =
|
|
2612
|
+
const { t } = useTranslation21("os");
|
|
2613
|
+
const [inputValue, setInputValue] = useState7(unredeemedCode ?? "");
|
|
2463
2614
|
useEffect4(() => {
|
|
2464
2615
|
unredeemedCode && setInputValue(unredeemedCode ?? "");
|
|
2465
2616
|
}, [
|
|
@@ -2477,7 +2628,7 @@ var InvitationInput = (props) => {
|
|
|
2477
2628
|
}
|
|
2478
2629
|
});
|
|
2479
2630
|
};
|
|
2480
|
-
const exitAction = /* @__PURE__ */
|
|
2631
|
+
const exitAction = /* @__PURE__ */ React35.createElement(Action, {
|
|
2481
2632
|
variant: "ghost",
|
|
2482
2633
|
disabled,
|
|
2483
2634
|
...onExit ? {
|
|
@@ -2487,11 +2638,11 @@ var InvitationInput = (props) => {
|
|
|
2487
2638
|
},
|
|
2488
2639
|
"data-testid": "join-exit"
|
|
2489
2640
|
}, t("cancel label"));
|
|
2490
|
-
return /* @__PURE__ */
|
|
2641
|
+
return /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement("div", {
|
|
2491
2642
|
role: "none",
|
|
2492
2643
|
className: "grow flex flex-col justify-center"
|
|
2493
|
-
}, /* @__PURE__ */
|
|
2494
|
-
label: /* @__PURE__ */
|
|
2644
|
+
}, /* @__PURE__ */ React35.createElement(Input, {
|
|
2645
|
+
label: /* @__PURE__ */ React35.createElement(StepHeading, null, t("invitation input label")),
|
|
2495
2646
|
// TODO(burdon): Translation.
|
|
2496
2647
|
placeholder: "Type an invitation code",
|
|
2497
2648
|
disabled,
|
|
@@ -2500,14 +2651,14 @@ var InvitationInput = (props) => {
|
|
|
2500
2651
|
"data-autofocus": `inputting${Kind}InvitationCode`,
|
|
2501
2652
|
"data-testid": `${Kind.toLowerCase()}-invitation-input`,
|
|
2502
2653
|
onKeyUp: ({ key }) => key === "Enter" && handleNext()
|
|
2503
|
-
})), /* @__PURE__ */
|
|
2654
|
+
})), /* @__PURE__ */ React35.createElement(Actions, null, Kind === "Halo" ? /* @__PURE__ */ React35.createElement(Action, {
|
|
2504
2655
|
variant: "ghost",
|
|
2505
2656
|
disabled,
|
|
2506
2657
|
onClick: () => send({
|
|
2507
2658
|
type: "deselectAuthMethod"
|
|
2508
2659
|
}),
|
|
2509
2660
|
"data-testid": `${Kind.toLowerCase()}-invitation-input-back`
|
|
2510
|
-
}, t("back label")) : exitActionParent ? /* @__PURE__ */ cloneElement4(exitActionParent, {}, exitAction) : doneActionParent ? /* @__PURE__ */ cloneElement4(doneActionParent, {}, exitAction) : exitAction, /* @__PURE__ */
|
|
2661
|
+
}, t("back label")) : exitActionParent ? /* @__PURE__ */ cloneElement4(exitActionParent, {}, exitAction) : doneActionParent ? /* @__PURE__ */ cloneElement4(doneActionParent, {}, exitAction) : exitAction, /* @__PURE__ */ React35.createElement(Action, {
|
|
2511
2662
|
variant: "primary",
|
|
2512
2663
|
disabled,
|
|
2513
2664
|
onClick: handleNext,
|
|
@@ -2516,8 +2667,8 @@ var InvitationInput = (props) => {
|
|
|
2516
2667
|
};
|
|
2517
2668
|
|
|
2518
2669
|
// packages/sdk/shell/src/panels/JoinPanel/steps/InvitationRescuer.tsx
|
|
2519
|
-
import
|
|
2520
|
-
import { useTranslation as
|
|
2670
|
+
import React36 from "react";
|
|
2671
|
+
import { useTranslation as useTranslation22 } from "@dxos/react-ui";
|
|
2521
2672
|
import { descriptionText as descriptionText9 } from "@dxos/react-ui-theme";
|
|
2522
2673
|
var InvitationActions = ({
|
|
2523
2674
|
// `invitationState` does report correct state, but here we evaluate whether `failReason` is a better source of truth
|
|
@@ -2529,14 +2680,14 @@ var InvitationActions = ({
|
|
|
2529
2680
|
Kind,
|
|
2530
2681
|
failReason
|
|
2531
2682
|
}) => {
|
|
2532
|
-
const { t } =
|
|
2683
|
+
const { t } = useTranslation22("os");
|
|
2533
2684
|
if (failReason) {
|
|
2534
|
-
return /* @__PURE__ */
|
|
2685
|
+
return /* @__PURE__ */ React36.createElement(React36.Fragment, null, /* @__PURE__ */ React36.createElement(StepHeading, {
|
|
2535
2686
|
className: descriptionText9
|
|
2536
|
-
}, t(failReason === "timeout" ? "timeout status label" : failReason === "cancelled" ? "cancelled status label" : "error status label")), /* @__PURE__ */
|
|
2687
|
+
}, t(failReason === "timeout" ? "timeout status label" : failReason === "cancelled" ? "cancelled status label" : "error status label")), /* @__PURE__ */ React36.createElement("div", {
|
|
2537
2688
|
role: "none",
|
|
2538
2689
|
className: "grow"
|
|
2539
|
-
}), /* @__PURE__ */
|
|
2690
|
+
}), /* @__PURE__ */ React36.createElement(Actions, null, /* @__PURE__ */ React36.createElement(Action, {
|
|
2540
2691
|
disabled: !active,
|
|
2541
2692
|
onClick: () => send({
|
|
2542
2693
|
type: `reset${Kind}Invitation`
|
|
@@ -2544,16 +2695,16 @@ var InvitationActions = ({
|
|
|
2544
2695
|
"data-testid": "invitation-rescuer-reset"
|
|
2545
2696
|
}, t("reset label"))));
|
|
2546
2697
|
} else {
|
|
2547
|
-
return /* @__PURE__ */
|
|
2698
|
+
return /* @__PURE__ */ React36.createElement(React36.Fragment, null, /* @__PURE__ */ React36.createElement(StepHeading, {
|
|
2548
2699
|
className: descriptionText9
|
|
2549
|
-
}, t("connecting status label")), /* @__PURE__ */
|
|
2700
|
+
}, t("connecting status label")), /* @__PURE__ */ React36.createElement("div", {
|
|
2550
2701
|
role: "none",
|
|
2551
2702
|
className: "grow"
|
|
2552
|
-
}), /* @__PURE__ */
|
|
2703
|
+
}), /* @__PURE__ */ React36.createElement(Actions, null, /* @__PURE__ */ React36.createElement(Action, {
|
|
2553
2704
|
disabled: true,
|
|
2554
2705
|
classNames: "order-2",
|
|
2555
2706
|
"data-testid": "next"
|
|
2556
|
-
}, t("next label")), /* @__PURE__ */
|
|
2707
|
+
}, t("next label")), /* @__PURE__ */ React36.createElement(Action, {
|
|
2557
2708
|
disabled: !active,
|
|
2558
2709
|
onClick: onInvitationCancel,
|
|
2559
2710
|
"data-testid": "invitation-rescuer-cancel"
|
|
@@ -2562,46 +2713,47 @@ var InvitationActions = ({
|
|
|
2562
2713
|
};
|
|
2563
2714
|
var InvitationRescuer = (props) => {
|
|
2564
2715
|
const { Kind, invitationState, active, send } = props;
|
|
2565
|
-
const { t } =
|
|
2566
|
-
return /* @__PURE__ */
|
|
2716
|
+
const { t } = useTranslation22("os");
|
|
2717
|
+
return /* @__PURE__ */ React36.createElement(React36.Fragment, null, typeof invitationState === "undefined" ? /* @__PURE__ */ React36.createElement(React36.Fragment, null, /* @__PURE__ */ React36.createElement("div", {
|
|
2567
2718
|
role: "none",
|
|
2568
2719
|
className: "grow flex flex-col justify-center"
|
|
2569
|
-
}, /* @__PURE__ */
|
|
2720
|
+
}, /* @__PURE__ */ React36.createElement(StepHeading, {
|
|
2570
2721
|
className: descriptionText9
|
|
2571
|
-
}, "There was a problem joining the space")), /* @__PURE__ */
|
|
2722
|
+
}, "There was a problem joining the space")), /* @__PURE__ */ React36.createElement(Actions, null, /* @__PURE__ */ React36.createElement(Action, {
|
|
2572
2723
|
disabled: !active,
|
|
2573
2724
|
"data-testid": "invitation-rescuer-blank-reset",
|
|
2574
2725
|
onClick: () => send({
|
|
2575
2726
|
type: `reset${Kind}Invitation`
|
|
2576
2727
|
})
|
|
2577
|
-
}, t("reset label")))) : /* @__PURE__ */
|
|
2728
|
+
}, t("reset label")))) : /* @__PURE__ */ React36.createElement(InvitationActions, props));
|
|
2578
2729
|
};
|
|
2579
2730
|
|
|
2580
2731
|
// packages/sdk/shell/src/panels/JoinPanel/steps/InvitationAuthenticator.tsx
|
|
2581
|
-
import
|
|
2582
|
-
import { Input as Input2, useTranslation as
|
|
2732
|
+
import React37, { useState as useState8 } from "react";
|
|
2733
|
+
import { Input as Input2, useTranslation as useTranslation23 } from "@dxos/react-ui";
|
|
2734
|
+
import { hexToEmoji as hexToEmoji4 } from "@dxos/util";
|
|
2583
2735
|
var pinLength = 6;
|
|
2584
2736
|
var InvitationAuthenticator = ({ failed, Kind, active, pending, invitationId, onInvitationAuthenticate, onInvitationCancel }) => {
|
|
2585
2737
|
const disabled = !active || pending;
|
|
2586
|
-
const { t } =
|
|
2738
|
+
const { t } = useTranslation23("os");
|
|
2587
2739
|
const invitationType = Kind.toLowerCase();
|
|
2588
|
-
const [authCode, setAuthCode] =
|
|
2740
|
+
const [authCode, setAuthCode] = useState8("");
|
|
2589
2741
|
const onChange = ({ target: { value } }) => {
|
|
2590
2742
|
setAuthCode(value);
|
|
2591
2743
|
if (value.length === pinLength) {
|
|
2592
2744
|
document.querySelector(`[data-autofocus-pinlength="${invitationType}"]`)?.focus();
|
|
2593
2745
|
}
|
|
2594
2746
|
};
|
|
2595
|
-
return /* @__PURE__ */
|
|
2747
|
+
return /* @__PURE__ */ React37.createElement(React37.Fragment, null, /* @__PURE__ */ React37.createElement("div", {
|
|
2596
2748
|
role: "none",
|
|
2597
2749
|
className: "grow flex flex-col justify-center"
|
|
2598
|
-
}, invitationId && /* @__PURE__ */
|
|
2599
|
-
text:
|
|
2600
|
-
}), /* @__PURE__ */
|
|
2750
|
+
}, invitationId && /* @__PURE__ */ React37.createElement(Emoji, {
|
|
2751
|
+
text: hexToEmoji4(invitationId)
|
|
2752
|
+
}), /* @__PURE__ */ React37.createElement(Input2.Root, failed && {
|
|
2601
2753
|
validationValence: "error"
|
|
2602
|
-
}, /* @__PURE__ */
|
|
2754
|
+
}, /* @__PURE__ */ React37.createElement(Input2.Label, {
|
|
2603
2755
|
asChild: true
|
|
2604
|
-
}, /* @__PURE__ */
|
|
2756
|
+
}, /* @__PURE__ */ React37.createElement(StepHeading, null, t("auth code input label"))), /* @__PURE__ */ React37.createElement(Input2.PinInput, {
|
|
2605
2757
|
disabled,
|
|
2606
2758
|
length: pinLength,
|
|
2607
2759
|
onChange,
|
|
@@ -2612,14 +2764,14 @@ var InvitationAuthenticator = ({ failed, Kind, active, pending, invitationId, on
|
|
|
2612
2764
|
"data-prevent-ios-autofocus": true,
|
|
2613
2765
|
"data-testid": `${invitationType}-auth-code-input`,
|
|
2614
2766
|
"data-1p-ignore": true
|
|
2615
|
-
}), failed && /* @__PURE__ */
|
|
2767
|
+
}), failed && /* @__PURE__ */ React37.createElement(Input2.DescriptionAndValidation, {
|
|
2616
2768
|
classNames: "text-center"
|
|
2617
|
-
}, /* @__PURE__ */
|
|
2769
|
+
}, /* @__PURE__ */ React37.createElement(Input2.Validation, null, t("failed to authenticate message"))))), /* @__PURE__ */ React37.createElement(Actions, null, /* @__PURE__ */ React37.createElement(Action, {
|
|
2618
2770
|
variant: "ghost",
|
|
2619
2771
|
disabled,
|
|
2620
2772
|
onClick: () => onInvitationCancel?.(),
|
|
2621
2773
|
"data-testid": `${invitationType}-invitation-authenticator-cancel`
|
|
2622
|
-
}, t("cancel label")), /* @__PURE__ */
|
|
2774
|
+
}, t("cancel label")), /* @__PURE__ */ React37.createElement(Action, {
|
|
2623
2775
|
variant: "primary",
|
|
2624
2776
|
disabled,
|
|
2625
2777
|
onClick: () => onInvitationAuthenticate?.(authCode),
|
|
@@ -2629,16 +2781,16 @@ var InvitationAuthenticator = ({ failed, Kind, active, pending, invitationId, on
|
|
|
2629
2781
|
};
|
|
2630
2782
|
|
|
2631
2783
|
// packages/sdk/shell/src/panels/JoinPanel/steps/ResetIdentity.tsx
|
|
2632
|
-
import
|
|
2784
|
+
import React38, { useState as useState9 } from "react";
|
|
2633
2785
|
import { log as log7 } from "@dxos/log";
|
|
2634
2786
|
import { useClient as useClient5 } from "@dxos/react-client";
|
|
2635
|
-
import { useTranslation as
|
|
2787
|
+
import { useTranslation as useTranslation24 } from "@dxos/react-ui";
|
|
2636
2788
|
var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/JoinPanel/steps/ResetIdentity.tsx";
|
|
2637
2789
|
var ResetIdentity = ({ send, active }) => {
|
|
2638
2790
|
const client = useClient5();
|
|
2639
|
-
const { t } =
|
|
2640
|
-
const [validationMessage, setValidationMessage] =
|
|
2641
|
-
const [pending, setPending] =
|
|
2791
|
+
const { t } = useTranslation24("os");
|
|
2792
|
+
const [validationMessage, setValidationMessage] = useState9("");
|
|
2793
|
+
const [pending, setPending] = useState9(false);
|
|
2642
2794
|
const resetIdentity = () => {
|
|
2643
2795
|
setPending(true);
|
|
2644
2796
|
void client.reset().then(() => send?.({
|
|
@@ -2654,7 +2806,7 @@ var ResetIdentity = ({ send, active }) => {
|
|
|
2654
2806
|
setPending(false);
|
|
2655
2807
|
});
|
|
2656
2808
|
};
|
|
2657
|
-
return /* @__PURE__ */
|
|
2809
|
+
return /* @__PURE__ */ React38.createElement(ResetIdentityImpl, {
|
|
2658
2810
|
disabled: !active,
|
|
2659
2811
|
pending,
|
|
2660
2812
|
validationMessage,
|
|
@@ -2662,22 +2814,22 @@ var ResetIdentity = ({ send, active }) => {
|
|
|
2662
2814
|
});
|
|
2663
2815
|
};
|
|
2664
2816
|
var ResetIdentityImpl = ({ disabled, pending, validationMessage, onConfirm }) => {
|
|
2665
|
-
const { t } =
|
|
2817
|
+
const { t } = useTranslation24("os");
|
|
2666
2818
|
const confirmationValue = t("confirmation value");
|
|
2667
|
-
const [inputValue, setInputValue] =
|
|
2668
|
-
return /* @__PURE__ */
|
|
2819
|
+
const [inputValue, setInputValue] = useState9("");
|
|
2820
|
+
return /* @__PURE__ */ React38.createElement(React38.Fragment, null, /* @__PURE__ */ React38.createElement("div", {
|
|
2669
2821
|
role: "none",
|
|
2670
2822
|
className: "grow flex flex-col justify-center"
|
|
2671
|
-
}, /* @__PURE__ */
|
|
2823
|
+
}, /* @__PURE__ */ React38.createElement(Input, {
|
|
2672
2824
|
validationMessage,
|
|
2673
|
-
label: /* @__PURE__ */
|
|
2825
|
+
label: /* @__PURE__ */ React38.createElement(StepHeading, null, t("reset identity input label", {
|
|
2674
2826
|
confirmationValue
|
|
2675
2827
|
})),
|
|
2676
2828
|
disabled,
|
|
2677
2829
|
"data-testid": "reset-identity-input",
|
|
2678
2830
|
placeholder: confirmationValue,
|
|
2679
2831
|
onChange: ({ target: { value } }) => setInputValue(value)
|
|
2680
|
-
})), /* @__PURE__ */
|
|
2832
|
+
})), /* @__PURE__ */ React38.createElement(Actions, null, /* @__PURE__ */ React38.createElement(Action, {
|
|
2681
2833
|
// TODO(wittjosiah): Probably make this red?
|
|
2682
2834
|
variant: "primary",
|
|
2683
2835
|
disabled: disabled || pending || inputValue !== confirmationValue,
|
|
@@ -2714,47 +2866,47 @@ var resolvedTextColor = (status) => status === Invitation7.State.ERROR ? errorTe
|
|
|
2714
2866
|
var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/JoinPanel/JoinPanel.tsx";
|
|
2715
2867
|
var JoinPanelImpl = (props) => {
|
|
2716
2868
|
const { titleId, send, activeView, failed, mode, unredeemedCodes, invitationStates, succeededKeys, failReasons, onExit, onHaloDone, onSpaceDone, exitActionParent, doneActionParent, onHaloInvitationCancel, onSpaceInvitationCancel, onHaloInvitationAuthenticate, onSpaceInvitationAuthenticate, IdentityInput: IdentityInputComponent = IdentityInput, ResetIdentity: ResetIdentityComponent = ResetIdentity } = props;
|
|
2717
|
-
return /* @__PURE__ */
|
|
2869
|
+
return /* @__PURE__ */ React39.createElement(DensityProvider3, {
|
|
2718
2870
|
density: "fine"
|
|
2719
|
-
}, mode !== "halo-only" && /* @__PURE__ */
|
|
2871
|
+
}, mode !== "halo-only" && /* @__PURE__ */ React39.createElement(JoinHeading, {
|
|
2720
2872
|
titleId,
|
|
2721
2873
|
mode,
|
|
2722
2874
|
onExit,
|
|
2723
2875
|
exitActionParent
|
|
2724
|
-
}), /* @__PURE__ */
|
|
2876
|
+
}), /* @__PURE__ */ React39.createElement(Viewport.Root, {
|
|
2725
2877
|
focusManaged: true,
|
|
2726
2878
|
activeView
|
|
2727
|
-
}, /* @__PURE__ */
|
|
2879
|
+
}, /* @__PURE__ */ React39.createElement(Viewport.Views, null, /* @__PURE__ */ React39.createElement(Viewport.View, {
|
|
2728
2880
|
classNames: stepStyles,
|
|
2729
2881
|
id: "addition method chooser"
|
|
2730
|
-
}, /* @__PURE__ */
|
|
2882
|
+
}, /* @__PURE__ */ React39.createElement(AdditionMethodChooser, {
|
|
2731
2883
|
send,
|
|
2732
2884
|
active: activeView === "addition method chooser"
|
|
2733
|
-
})), /* @__PURE__ */
|
|
2885
|
+
})), /* @__PURE__ */ React39.createElement(Viewport.View, {
|
|
2734
2886
|
classNames: stepStyles,
|
|
2735
2887
|
id: "reset identity confirmation"
|
|
2736
|
-
}, /* @__PURE__ */
|
|
2888
|
+
}, /* @__PURE__ */ React39.createElement(ResetIdentityComponent, {
|
|
2737
2889
|
send,
|
|
2738
2890
|
method: "reset identity",
|
|
2739
2891
|
active: activeView === "reset identity confirmation"
|
|
2740
|
-
})), /* @__PURE__ */
|
|
2892
|
+
})), /* @__PURE__ */ React39.createElement(Viewport.View, {
|
|
2741
2893
|
classNames: stepStyles,
|
|
2742
2894
|
id: "create identity input"
|
|
2743
|
-
}, /* @__PURE__ */
|
|
2895
|
+
}, /* @__PURE__ */ React39.createElement(IdentityInputComponent, {
|
|
2744
2896
|
send,
|
|
2745
2897
|
method: "create identity",
|
|
2746
2898
|
active: activeView === "create identity input"
|
|
2747
|
-
})), /* @__PURE__ */
|
|
2899
|
+
})), /* @__PURE__ */ React39.createElement(Viewport.View, {
|
|
2748
2900
|
classNames: stepStyles,
|
|
2749
2901
|
id: "recover identity input"
|
|
2750
|
-
}, /* @__PURE__ */
|
|
2902
|
+
}, /* @__PURE__ */ React39.createElement(IdentityInputComponent, {
|
|
2751
2903
|
send,
|
|
2752
2904
|
method: "recover identity",
|
|
2753
2905
|
active: activeView === "recover identity input"
|
|
2754
|
-
})), /* @__PURE__ */
|
|
2906
|
+
})), /* @__PURE__ */ React39.createElement(Viewport.View, {
|
|
2755
2907
|
classNames: stepStyles,
|
|
2756
2908
|
id: "halo invitation input"
|
|
2757
|
-
}, /* @__PURE__ */
|
|
2909
|
+
}, /* @__PURE__ */ React39.createElement(InvitationInput, {
|
|
2758
2910
|
send,
|
|
2759
2911
|
Kind: "Halo",
|
|
2760
2912
|
active: activeView === "halo invitation input",
|
|
@@ -2764,20 +2916,20 @@ var JoinPanelImpl = (props) => {
|
|
|
2764
2916
|
...succeededKeys?.Halo && {
|
|
2765
2917
|
succeededKeys: succeededKeys.Halo
|
|
2766
2918
|
}
|
|
2767
|
-
})), /* @__PURE__ */
|
|
2919
|
+
})), /* @__PURE__ */ React39.createElement(Viewport.View, {
|
|
2768
2920
|
classNames: stepStyles,
|
|
2769
2921
|
id: "halo invitation rescuer"
|
|
2770
|
-
}, /* @__PURE__ */
|
|
2922
|
+
}, /* @__PURE__ */ React39.createElement(InvitationRescuer, {
|
|
2771
2923
|
send,
|
|
2772
2924
|
Kind: "Halo",
|
|
2773
2925
|
active: activeView === "halo invitation rescuer",
|
|
2774
2926
|
invitationState: invitationStates?.Halo,
|
|
2775
2927
|
onInvitationCancel: onHaloInvitationCancel,
|
|
2776
2928
|
failReason: failReasons?.Halo
|
|
2777
|
-
})), /* @__PURE__ */
|
|
2929
|
+
})), /* @__PURE__ */ React39.createElement(Viewport.View, {
|
|
2778
2930
|
classNames: stepStyles,
|
|
2779
2931
|
id: "halo invitation authenticator"
|
|
2780
|
-
}, /* @__PURE__ */
|
|
2932
|
+
}, /* @__PURE__ */ React39.createElement(InvitationAuthenticator, {
|
|
2781
2933
|
send,
|
|
2782
2934
|
Kind: "Halo",
|
|
2783
2935
|
active: activeView === "halo invitation authenticator",
|
|
@@ -2786,28 +2938,28 @@ var JoinPanelImpl = (props) => {
|
|
|
2786
2938
|
...failed.has("Halo") && {
|
|
2787
2939
|
failed: true
|
|
2788
2940
|
}
|
|
2789
|
-
})), /* @__PURE__ */
|
|
2941
|
+
})), /* @__PURE__ */ React39.createElement(Viewport.View, {
|
|
2790
2942
|
classNames: stepStyles,
|
|
2791
2943
|
id: "halo invitation accepted"
|
|
2792
|
-
}, /* @__PURE__ */
|
|
2944
|
+
}, /* @__PURE__ */ React39.createElement(InvitationAccepted, {
|
|
2793
2945
|
send,
|
|
2794
2946
|
Kind: "Halo",
|
|
2795
2947
|
active: activeView === "halo invitation accepted",
|
|
2796
2948
|
doneActionParent,
|
|
2797
2949
|
onDone: onHaloDone
|
|
2798
|
-
})), /* @__PURE__ */
|
|
2950
|
+
})), /* @__PURE__ */ React39.createElement(Viewport.View, {
|
|
2799
2951
|
classNames: stepStyles,
|
|
2800
2952
|
id: "identity added"
|
|
2801
|
-
}, /* @__PURE__ */
|
|
2953
|
+
}, /* @__PURE__ */ React39.createElement(IdentityAdded, {
|
|
2802
2954
|
send,
|
|
2803
2955
|
mode,
|
|
2804
2956
|
active: activeView === "identity added",
|
|
2805
2957
|
doneActionParent,
|
|
2806
2958
|
onDone: onHaloDone
|
|
2807
|
-
})), /* @__PURE__ */
|
|
2959
|
+
})), /* @__PURE__ */ React39.createElement(Viewport.View, {
|
|
2808
2960
|
classNames: stepStyles,
|
|
2809
2961
|
id: "space invitation input"
|
|
2810
|
-
}, /* @__PURE__ */
|
|
2962
|
+
}, /* @__PURE__ */ React39.createElement(InvitationInput, {
|
|
2811
2963
|
send,
|
|
2812
2964
|
Kind: "Space",
|
|
2813
2965
|
active: activeView === "space invitation input",
|
|
@@ -2819,20 +2971,20 @@ var JoinPanelImpl = (props) => {
|
|
|
2819
2971
|
},
|
|
2820
2972
|
onExit,
|
|
2821
2973
|
exitActionParent
|
|
2822
|
-
})), /* @__PURE__ */
|
|
2974
|
+
})), /* @__PURE__ */ React39.createElement(Viewport.View, {
|
|
2823
2975
|
classNames: stepStyles,
|
|
2824
2976
|
id: "space invitation rescuer"
|
|
2825
|
-
}, /* @__PURE__ */
|
|
2977
|
+
}, /* @__PURE__ */ React39.createElement(InvitationRescuer, {
|
|
2826
2978
|
send,
|
|
2827
2979
|
Kind: "Space",
|
|
2828
2980
|
active: activeView === "space invitation rescuer",
|
|
2829
2981
|
invitationState: invitationStates?.Space,
|
|
2830
2982
|
onInvitationCancel: onSpaceInvitationCancel,
|
|
2831
2983
|
failReason: failReasons?.Space
|
|
2832
|
-
})), /* @__PURE__ */
|
|
2984
|
+
})), /* @__PURE__ */ React39.createElement(Viewport.View, {
|
|
2833
2985
|
classNames: stepStyles,
|
|
2834
2986
|
id: "space invitation authenticator"
|
|
2835
|
-
}, /* @__PURE__ */
|
|
2987
|
+
}, /* @__PURE__ */ React39.createElement(InvitationAuthenticator, {
|
|
2836
2988
|
send,
|
|
2837
2989
|
Kind: "Space",
|
|
2838
2990
|
active: activeView === "space invitation authenticator",
|
|
@@ -2841,10 +2993,10 @@ var JoinPanelImpl = (props) => {
|
|
|
2841
2993
|
...failed.has("Space") && {
|
|
2842
2994
|
failed: true
|
|
2843
2995
|
}
|
|
2844
|
-
})), /* @__PURE__ */
|
|
2996
|
+
})), /* @__PURE__ */ React39.createElement(Viewport.View, {
|
|
2845
2997
|
classNames: stepStyles,
|
|
2846
2998
|
id: "space invitation accepted"
|
|
2847
|
-
}, /* @__PURE__ */
|
|
2999
|
+
}, /* @__PURE__ */ React39.createElement(InvitationAccepted, {
|
|
2848
3000
|
send,
|
|
2849
3001
|
Kind: "Space",
|
|
2850
3002
|
active: activeView === "space invitation accepted",
|
|
@@ -2855,7 +3007,7 @@ var JoinPanelImpl = (props) => {
|
|
|
2855
3007
|
var JoinPanel = ({ titleId: propsTitleId, mode = "default", initialInvitationCode, exitActionParent, onExit, doneActionParent, onDone: propsOnDone }) => {
|
|
2856
3008
|
const client = useClient6();
|
|
2857
3009
|
const identity = useIdentity2();
|
|
2858
|
-
const { hasIosKeyboard } =
|
|
3010
|
+
const { hasIosKeyboard } = useThemeContext4();
|
|
2859
3011
|
const titleId = useId7("joinPanel__heading", propsTitleId);
|
|
2860
3012
|
const [joinState, joinSend, joinService] = useJoinMachine(client, {
|
|
2861
3013
|
context: {
|
|
@@ -3084,7 +3236,7 @@ var JoinPanel = ({ titleId: propsTitleId, mode = "default", initialInvitationCod
|
|
|
3084
3236
|
joinState,
|
|
3085
3237
|
propsOnDone
|
|
3086
3238
|
]);
|
|
3087
|
-
return /* @__PURE__ */
|
|
3239
|
+
return /* @__PURE__ */ React39.createElement(JoinPanelImpl, {
|
|
3088
3240
|
titleId,
|
|
3089
3241
|
mode,
|
|
3090
3242
|
send: joinSend,
|
|
@@ -3123,10 +3275,10 @@ var JoinPanel = ({ titleId: propsTitleId, mode = "default", initialInvitationCod
|
|
|
3123
3275
|
|
|
3124
3276
|
// packages/sdk/shell/src/panels/SpacePanel/SpacePanel.tsx
|
|
3125
3277
|
import { Planet } from "@phosphor-icons/react";
|
|
3126
|
-
import
|
|
3278
|
+
import React41, { useEffect as useEffect6, useMemo as useMemo5 } from "react";
|
|
3127
3279
|
import { log as log10 } from "@dxos/log";
|
|
3128
3280
|
import { useInvitationStatus as useInvitationStatus3 } from "@dxos/react-client/invitations";
|
|
3129
|
-
import { DensityProvider as DensityProvider4, useId as useId8, useTranslation as
|
|
3281
|
+
import { DensityProvider as DensityProvider4, useId as useId8, useTranslation as useTranslation26 } from "@dxos/react-ui";
|
|
3130
3282
|
|
|
3131
3283
|
// packages/sdk/shell/src/panels/SpacePanel/spaceMachine.ts
|
|
3132
3284
|
import { useMachine as useMachine3 } from "@xstate/react";
|
|
@@ -3192,16 +3344,16 @@ var useSpaceMachine = (options) => {
|
|
|
3192
3344
|
|
|
3193
3345
|
// packages/sdk/shell/src/panels/SpacePanel/steps/SpaceManager.tsx
|
|
3194
3346
|
import { Placeholder as Placeholder2, UserPlus, UsersThree } from "@phosphor-icons/react";
|
|
3195
|
-
import
|
|
3347
|
+
import React40, { useCallback as useCallback8, useState as useState10 } from "react";
|
|
3196
3348
|
import { useConfig } from "@dxos/react-client";
|
|
3197
3349
|
import { useSpaceInvitations as useSpaceInvitations2 } from "@dxos/react-client/echo";
|
|
3198
3350
|
import { Invitation as Invitation8, InvitationEncoder as InvitationEncoder4 } from "@dxos/react-client/invitations";
|
|
3199
|
-
import { ScrollArea, useTranslation as
|
|
3351
|
+
import { ScrollArea, useTranslation as useTranslation25 } from "@dxos/react-ui";
|
|
3200
3352
|
import { descriptionText as descriptionText10, mx as mx22 } from "@dxos/react-ui-theme";
|
|
3201
3353
|
var activeActionKey = "dxos:react-shell/space-manager/active-action";
|
|
3202
3354
|
var SpaceManager = (props) => {
|
|
3203
3355
|
const { space, target } = props;
|
|
3204
|
-
const { t } =
|
|
3356
|
+
const { t } = useTranslation25("os");
|
|
3205
3357
|
const config = useConfig();
|
|
3206
3358
|
const invitations = useSpaceInvitations2(space?.key);
|
|
3207
3359
|
const onInvitationEvent = useCallback8((invitation) => {
|
|
@@ -3249,7 +3401,7 @@ var SpaceManager = (props) => {
|
|
|
3249
3401
|
])
|
|
3250
3402
|
}
|
|
3251
3403
|
};
|
|
3252
|
-
return /* @__PURE__ */
|
|
3404
|
+
return /* @__PURE__ */ React40.createElement(SpaceManagerImpl, {
|
|
3253
3405
|
...props,
|
|
3254
3406
|
invitations,
|
|
3255
3407
|
inviteActions
|
|
@@ -3258,7 +3410,7 @@ var SpaceManager = (props) => {
|
|
|
3258
3410
|
var headingFragment = "pis-3 pie-1 plb-1 mbe-1 font-medium";
|
|
3259
3411
|
var SpaceManagerImpl = (props) => {
|
|
3260
3412
|
const { active, space, createInvitationUrl, send, inviteActions: propsInviteActions, invitations, showInactiveInvitations, SpaceMemberList: SpaceMemberListComponent = SpaceMemberList, InvitationList: InvitationListComponent = InvitationList } = props;
|
|
3261
|
-
const { t } =
|
|
3413
|
+
const { t } = useTranslation25("os");
|
|
3262
3414
|
const inviteActions = propsInviteActions ?? {
|
|
3263
3415
|
noopInvite: {
|
|
3264
3416
|
label: t("create space invitation label"),
|
|
@@ -3268,7 +3420,7 @@ var SpaceManagerImpl = (props) => {
|
|
|
3268
3420
|
}
|
|
3269
3421
|
}
|
|
3270
3422
|
};
|
|
3271
|
-
const [activeAction, setInternalActiveAction] =
|
|
3423
|
+
const [activeAction, setInternalActiveAction] = useState10(localStorage.getItem(activeActionKey) ?? "inviteOne");
|
|
3272
3424
|
const setActiveAction = (nextAction) => {
|
|
3273
3425
|
setInternalActiveAction(nextAction);
|
|
3274
3426
|
localStorage.setItem(activeActionKey, nextAction);
|
|
@@ -3276,26 +3428,26 @@ var SpaceManagerImpl = (props) => {
|
|
|
3276
3428
|
const visibleInvitations = showInactiveInvitations ? invitations : invitations?.filter((invitation) => ![
|
|
3277
3429
|
Invitation8.State.CANCELLED
|
|
3278
3430
|
].includes(invitation.get().state));
|
|
3279
|
-
return /* @__PURE__ */
|
|
3431
|
+
return /* @__PURE__ */ React40.createElement(React40.Fragment, null, /* @__PURE__ */ React40.createElement(ScrollArea.Root, {
|
|
3280
3432
|
classNames: "grow shrink basis-28 -mli-2"
|
|
3281
|
-
}, /* @__PURE__ */
|
|
3433
|
+
}, /* @__PURE__ */ React40.createElement(ScrollArea.Viewport, {
|
|
3282
3434
|
classNames: "is-full pie-2"
|
|
3283
|
-
}, !!visibleInvitations?.length && /* @__PURE__ */
|
|
3435
|
+
}, !!visibleInvitations?.length && /* @__PURE__ */ React40.createElement(React40.Fragment, null, /* @__PURE__ */ React40.createElement("h3", {
|
|
3284
3436
|
className: mx22(headingFragment, descriptionText10)
|
|
3285
|
-
}, t("invitation list heading")), /* @__PURE__ */
|
|
3437
|
+
}, t("invitation list heading")), /* @__PURE__ */ React40.createElement(InvitationListComponent, {
|
|
3286
3438
|
className: "mb-2",
|
|
3287
3439
|
send,
|
|
3288
3440
|
invitations: visibleInvitations ?? [],
|
|
3289
3441
|
onClickRemove: (invitation) => invitation.cancel(),
|
|
3290
3442
|
createInvitationUrl
|
|
3291
|
-
}), /* @__PURE__ */
|
|
3443
|
+
}), /* @__PURE__ */ React40.createElement("h3", {
|
|
3292
3444
|
className: mx22(headingFragment, descriptionText10, "mbs-2")
|
|
3293
|
-
}, t("space member list heading"))), /* @__PURE__ */
|
|
3445
|
+
}, t("space member list heading"))), /* @__PURE__ */ React40.createElement(SpaceMemberListComponent, {
|
|
3294
3446
|
spaceKey: space.key,
|
|
3295
3447
|
includeSelf: true
|
|
3296
|
-
})), /* @__PURE__ */
|
|
3448
|
+
})), /* @__PURE__ */ React40.createElement(ScrollArea.Scrollbar, {
|
|
3297
3449
|
orientation: "vertical"
|
|
3298
|
-
}, /* @__PURE__ */
|
|
3450
|
+
}, /* @__PURE__ */ React40.createElement(ScrollArea.Thumb, null))), /* @__PURE__ */ React40.createElement(Actions, null, /* @__PURE__ */ React40.createElement(BifurcatedAction, {
|
|
3299
3451
|
disabled: !active,
|
|
3300
3452
|
actions: inviteActions,
|
|
3301
3453
|
activeAction,
|
|
@@ -3307,47 +3459,47 @@ var SpaceManagerImpl = (props) => {
|
|
|
3307
3459
|
// packages/sdk/shell/src/panels/SpacePanel/SpacePanel.tsx
|
|
3308
3460
|
var __dxlog_file11 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/SpacePanel/SpacePanel.tsx";
|
|
3309
3461
|
var SpacePanelHeading = ({ titleId, space, onDone }) => {
|
|
3310
|
-
const { t } =
|
|
3462
|
+
const { t } = useTranslation26("os");
|
|
3311
3463
|
const name = space.properties.name;
|
|
3312
|
-
return /* @__PURE__ */
|
|
3464
|
+
return /* @__PURE__ */ React41.createElement(Heading, {
|
|
3313
3465
|
titleId,
|
|
3314
3466
|
title: t("space panel heading"),
|
|
3315
|
-
corner: /* @__PURE__ */
|
|
3467
|
+
corner: /* @__PURE__ */ React41.createElement(CloseButton, {
|
|
3316
3468
|
"data-testid": "identity-panel-done",
|
|
3317
3469
|
onDone
|
|
3318
3470
|
})
|
|
3319
|
-
}, /* @__PURE__ */
|
|
3471
|
+
}, /* @__PURE__ */ React41.createElement("div", {
|
|
3320
3472
|
role: "none",
|
|
3321
3473
|
className: "flex gap-4 items-center justify-center mlb-4"
|
|
3322
|
-
}, /* @__PURE__ */
|
|
3474
|
+
}, /* @__PURE__ */ React41.createElement(Planet, {
|
|
3323
3475
|
size: 32,
|
|
3324
3476
|
weight: "light"
|
|
3325
|
-
}), /* @__PURE__ */
|
|
3477
|
+
}), /* @__PURE__ */ React41.createElement("div", {
|
|
3326
3478
|
className: "block text-start font-light text-xl"
|
|
3327
3479
|
}, name ?? space.key.truncate())));
|
|
3328
3480
|
};
|
|
3329
3481
|
var SpacePanelImpl = (props) => {
|
|
3330
3482
|
const { titleId, activeView, space, target, SpaceManager: SpaceManagerComponent = SpaceManager, InvitationManager: InvitationManagerComponent = InvitationManager, ...rest } = props;
|
|
3331
|
-
return /* @__PURE__ */
|
|
3483
|
+
return /* @__PURE__ */ React41.createElement(DensityProvider4, {
|
|
3332
3484
|
density: "fine"
|
|
3333
|
-
}, /* @__PURE__ */
|
|
3485
|
+
}, /* @__PURE__ */ React41.createElement(SpacePanelHeading, {
|
|
3334
3486
|
...rest,
|
|
3335
3487
|
titleId,
|
|
3336
3488
|
space
|
|
3337
|
-
}), /* @__PURE__ */
|
|
3489
|
+
}), /* @__PURE__ */ React41.createElement(Viewport.Root, {
|
|
3338
3490
|
activeView
|
|
3339
|
-
}, /* @__PURE__ */
|
|
3491
|
+
}, /* @__PURE__ */ React41.createElement(Viewport.Views, null, /* @__PURE__ */ React41.createElement(Viewport.View, {
|
|
3340
3492
|
id: "space manager",
|
|
3341
3493
|
classNames: stepStyles
|
|
3342
|
-
}, /* @__PURE__ */
|
|
3494
|
+
}, /* @__PURE__ */ React41.createElement(SpaceManagerComponent, {
|
|
3343
3495
|
active: activeView === "space manager",
|
|
3344
3496
|
space,
|
|
3345
3497
|
target,
|
|
3346
3498
|
...rest
|
|
3347
|
-
})), /* @__PURE__ */
|
|
3499
|
+
})), /* @__PURE__ */ React41.createElement(Viewport.View, {
|
|
3348
3500
|
id: "space invitation manager",
|
|
3349
3501
|
classNames: stepStyles
|
|
3350
|
-
}, /* @__PURE__ */
|
|
3502
|
+
}, /* @__PURE__ */ React41.createElement(InvitationManagerComponent, {
|
|
3351
3503
|
active: activeView === "space invitation manager",
|
|
3352
3504
|
...rest,
|
|
3353
3505
|
invitationUrl: props.invitationUrl
|
|
@@ -3355,7 +3507,7 @@ var SpacePanelImpl = (props) => {
|
|
|
3355
3507
|
};
|
|
3356
3508
|
var SpacePanelWithInvitationImpl = ({ invitation, ...props }) => {
|
|
3357
3509
|
const invitationStatus = useInvitationStatus3(invitation);
|
|
3358
|
-
return /* @__PURE__ */
|
|
3510
|
+
return /* @__PURE__ */ React41.createElement(SpacePanelImpl, {
|
|
3359
3511
|
...props,
|
|
3360
3512
|
...invitationStatus,
|
|
3361
3513
|
invitationUrl: props.createInvitationUrl(invitationStatus.invitationCode)
|
|
@@ -3402,91 +3554,91 @@ var SpacePanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => code,
|
|
|
3402
3554
|
};
|
|
3403
3555
|
return spaceState.context.invitation ? (
|
|
3404
3556
|
// TODO(wittjosiah): Unused? Remove?
|
|
3405
|
-
/* @__PURE__ */
|
|
3557
|
+
/* @__PURE__ */ React41.createElement(SpacePanelWithInvitationImpl, {
|
|
3406
3558
|
...implProps,
|
|
3407
3559
|
invitation: spaceState.context.invitation
|
|
3408
3560
|
})
|
|
3409
|
-
) : /* @__PURE__ */
|
|
3561
|
+
) : /* @__PURE__ */ React41.createElement(SpacePanelImpl, implProps);
|
|
3410
3562
|
};
|
|
3411
3563
|
|
|
3412
3564
|
// packages/sdk/shell/src/composites/IdentityDialog/IdentityDialog.tsx
|
|
3413
3565
|
var IdentityDialog = (props) => {
|
|
3414
3566
|
const titleId = useId9("spaceDialog__title");
|
|
3415
|
-
return /* @__PURE__ */
|
|
3567
|
+
return /* @__PURE__ */ React42.createElement(Dialog.Root, {
|
|
3416
3568
|
defaultOpen: true,
|
|
3417
3569
|
onOpenChange: (open) => open || props.onDone?.()
|
|
3418
|
-
}, /* @__PURE__ */
|
|
3570
|
+
}, /* @__PURE__ */ React42.createElement(Dialog.Portal, null, /* @__PURE__ */ React42.createElement(Dialog.Overlay, null, /* @__PURE__ */ React42.createElement(Dialog.Content, {
|
|
3419
3571
|
"aria-labelledby": titleId,
|
|
3420
3572
|
onOpenAutoFocus: (e) => e.preventDefault()
|
|
3421
|
-
}, /* @__PURE__ */
|
|
3573
|
+
}, /* @__PURE__ */ React42.createElement(ClipboardProvider, null, /* @__PURE__ */ React42.createElement(IdentityPanel, {
|
|
3422
3574
|
...props,
|
|
3423
3575
|
titleId,
|
|
3424
|
-
doneActionParent: /* @__PURE__ */
|
|
3576
|
+
doneActionParent: /* @__PURE__ */ React42.createElement(Dialog.Close, {
|
|
3425
3577
|
asChild: true
|
|
3426
3578
|
})
|
|
3427
3579
|
}))))));
|
|
3428
3580
|
};
|
|
3429
3581
|
|
|
3430
3582
|
// packages/sdk/shell/src/composites/JoinDialog/JoinDialog.tsx
|
|
3431
|
-
import
|
|
3583
|
+
import React43 from "react";
|
|
3432
3584
|
import { AlertDialog, useId as useId10, useVisualViewport } from "@dxos/react-ui";
|
|
3433
3585
|
var JoinDialog = (joinPanelProps) => {
|
|
3434
3586
|
const titleId = useId10("joinDialog__title");
|
|
3435
3587
|
const { height } = useVisualViewport();
|
|
3436
|
-
return /* @__PURE__ */
|
|
3588
|
+
return /* @__PURE__ */ React43.createElement(AlertDialog.Root, {
|
|
3437
3589
|
defaultOpen: true,
|
|
3438
3590
|
onOpenChange: (open) => open || (joinPanelProps.onExit ? joinPanelProps.onExit() : joinPanelProps.onDone?.(null))
|
|
3439
|
-
}, /* @__PURE__ */
|
|
3591
|
+
}, /* @__PURE__ */ React43.createElement(AlertDialog.Portal, null, /* @__PURE__ */ React43.createElement(AlertDialog.Overlay, {
|
|
3440
3592
|
classNames: "backdrop-blur",
|
|
3441
3593
|
...height && {
|
|
3442
3594
|
style: {
|
|
3443
3595
|
blockSize: `${height}px`
|
|
3444
3596
|
}
|
|
3445
3597
|
}
|
|
3446
|
-
}, /* @__PURE__ */
|
|
3598
|
+
}, /* @__PURE__ */ React43.createElement(AlertDialog.Content, {
|
|
3447
3599
|
"aria-labelledby": titleId
|
|
3448
|
-
}, /* @__PURE__ */
|
|
3600
|
+
}, /* @__PURE__ */ React43.createElement(JoinPanel, {
|
|
3449
3601
|
...joinPanelProps,
|
|
3450
3602
|
titleId,
|
|
3451
|
-
exitActionParent: /* @__PURE__ */
|
|
3603
|
+
exitActionParent: /* @__PURE__ */ React43.createElement(AlertDialog.Cancel, {
|
|
3452
3604
|
asChild: true
|
|
3453
3605
|
}),
|
|
3454
|
-
doneActionParent: /* @__PURE__ */
|
|
3606
|
+
doneActionParent: /* @__PURE__ */ React43.createElement(AlertDialog.Action, {
|
|
3455
3607
|
asChild: true
|
|
3456
3608
|
})
|
|
3457
3609
|
})))));
|
|
3458
3610
|
};
|
|
3459
3611
|
|
|
3460
3612
|
// packages/sdk/shell/src/composites/Shell/run-shell.tsx
|
|
3461
|
-
import
|
|
3613
|
+
import React46, { StrictMode } from "react";
|
|
3462
3614
|
import { createRoot } from "react-dom/client";
|
|
3463
3615
|
import { DEFAULT_CLIENT_CHANNEL, DEFAULT_SHELL_CHANNEL } from "@dxos/client-protocol";
|
|
3464
3616
|
import { ShellRuntimeImpl } from "@dxos/client-services";
|
|
3465
3617
|
import { Client, ClientContext, ClientServicesProxy, Config, SystemStatus } from "@dxos/react-client";
|
|
3466
|
-
import { ThemeProvider, Tooltip as
|
|
3618
|
+
import { ThemeProvider, Tooltip as Tooltip5 } from "@dxos/react-ui";
|
|
3467
3619
|
import { defaultTx } from "@dxos/react-ui-theme";
|
|
3468
3620
|
import { createIFramePort } from "@dxos/rpc-tunnel";
|
|
3469
3621
|
|
|
3470
3622
|
// packages/sdk/shell/src/composites/Shell/Shell.tsx
|
|
3471
|
-
import
|
|
3623
|
+
import React45, { useEffect as useEffect7, useState as useState11 } from "react";
|
|
3472
3624
|
import { log as log11 } from "@dxos/log";
|
|
3473
3625
|
import { ShellDisplay, ShellLayout, useClient as useClient7 } from "@dxos/react-client";
|
|
3474
3626
|
import { useSpace as useSpace2 } from "@dxos/react-client/echo";
|
|
3475
3627
|
|
|
3476
3628
|
// packages/sdk/shell/src/composites/SpaceDialog/SpaceDialog.tsx
|
|
3477
|
-
import
|
|
3629
|
+
import React44 from "react";
|
|
3478
3630
|
import { Dialog as Dialog2, useId as useId11 } from "@dxos/react-ui";
|
|
3479
3631
|
var SpaceDialog = (spacePanelProps) => {
|
|
3480
3632
|
const titleId = useId11("spaceDialog__title");
|
|
3481
|
-
return /* @__PURE__ */
|
|
3633
|
+
return /* @__PURE__ */ React44.createElement(Dialog2.Root, {
|
|
3482
3634
|
defaultOpen: true,
|
|
3483
3635
|
onOpenChange: (open) => open || spacePanelProps.onDone?.()
|
|
3484
|
-
}, /* @__PURE__ */
|
|
3636
|
+
}, /* @__PURE__ */ React44.createElement(Dialog2.Portal, null, /* @__PURE__ */ React44.createElement(Dialog2.Overlay, null, /* @__PURE__ */ React44.createElement(Dialog2.Content, {
|
|
3485
3637
|
"aria-labelledby": titleId
|
|
3486
|
-
}, /* @__PURE__ */
|
|
3638
|
+
}, /* @__PURE__ */ React44.createElement(ClipboardProvider, null, /* @__PURE__ */ React44.createElement(SpacePanel, {
|
|
3487
3639
|
...spacePanelProps,
|
|
3488
3640
|
titleId,
|
|
3489
|
-
doneActionParent: /* @__PURE__ */
|
|
3641
|
+
doneActionParent: /* @__PURE__ */ React44.createElement(Dialog2.Close, {
|
|
3490
3642
|
asChild: true
|
|
3491
3643
|
})
|
|
3492
3644
|
}))))));
|
|
@@ -3495,7 +3647,7 @@ var SpaceDialog = (spacePanelProps) => {
|
|
|
3495
3647
|
// packages/sdk/shell/src/composites/Shell/Shell.tsx
|
|
3496
3648
|
var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/composites/Shell/Shell.tsx";
|
|
3497
3649
|
var Shell = ({ runtime, origin }) => {
|
|
3498
|
-
const [{ layout, invitationCode, spaceKey, target }, setLayout] =
|
|
3650
|
+
const [{ layout, invitationCode, spaceKey, target }, setLayout] = useState11({
|
|
3499
3651
|
layout: runtime.layout,
|
|
3500
3652
|
invitationCode: runtime.invitationCode,
|
|
3501
3653
|
spaceKey: runtime.spaceKey,
|
|
@@ -3533,7 +3685,7 @@ var Shell = ({ runtime, origin }) => {
|
|
|
3533
3685
|
]);
|
|
3534
3686
|
switch (layout) {
|
|
3535
3687
|
case ShellLayout.INITIALIZE_IDENTITY:
|
|
3536
|
-
return /* @__PURE__ */
|
|
3688
|
+
return /* @__PURE__ */ React45.createElement(JoinDialog, {
|
|
3537
3689
|
mode: "halo-only",
|
|
3538
3690
|
initialInvitationCode: invitationCode,
|
|
3539
3691
|
onDone: () => {
|
|
@@ -3548,7 +3700,7 @@ var Shell = ({ runtime, origin }) => {
|
|
|
3548
3700
|
case ShellLayout.IDENTITY:
|
|
3549
3701
|
case ShellLayout.SHARE_IDENTITY:
|
|
3550
3702
|
case ShellLayout.EDIT_PROFILE:
|
|
3551
|
-
return /* @__PURE__ */
|
|
3703
|
+
return /* @__PURE__ */ React45.createElement(IdentityDialog, {
|
|
3552
3704
|
createInvitationUrl: (invitationCode2) => `${origin}?deviceInvitationCode=${invitationCode2}`,
|
|
3553
3705
|
onResetDevice: async () => {
|
|
3554
3706
|
await client.reset();
|
|
@@ -3570,7 +3722,7 @@ var Shell = ({ runtime, origin }) => {
|
|
|
3570
3722
|
}
|
|
3571
3723
|
});
|
|
3572
3724
|
case ShellLayout.SPACE:
|
|
3573
|
-
return space ? /* @__PURE__ */
|
|
3725
|
+
return space ? /* @__PURE__ */ React45.createElement(SpaceDialog, {
|
|
3574
3726
|
space,
|
|
3575
3727
|
target,
|
|
3576
3728
|
createInvitationUrl: (invitationCode2) => `${origin}?spaceInvitationCode=${invitationCode2}`,
|
|
@@ -3584,7 +3736,7 @@ var Shell = ({ runtime, origin }) => {
|
|
|
3584
3736
|
}
|
|
3585
3737
|
}) : null;
|
|
3586
3738
|
case ShellLayout.JOIN_SPACE:
|
|
3587
|
-
return /* @__PURE__ */
|
|
3739
|
+
return /* @__PURE__ */ React45.createElement(JoinDialog, {
|
|
3588
3740
|
initialInvitationCode: invitationCode,
|
|
3589
3741
|
onDone: async (result) => {
|
|
3590
3742
|
const target2 = result?.target ?? void 0;
|
|
@@ -3718,7 +3870,28 @@ var os = {
|
|
|
3718
3870
|
"sign out chooser message": "Proceeding with either action below will erase all data on this device.",
|
|
3719
3871
|
"join new identity label": "Join a new identity",
|
|
3720
3872
|
"reset device label": "Reset device",
|
|
3721
|
-
"reset device confirm message": "Are you sure you want to reset your device? All data will be lost."
|
|
3873
|
+
"reset device confirm message": "Are you sure you want to reset your device? All data will be lost.",
|
|
3874
|
+
"emoji and color label": "Emoji and color",
|
|
3875
|
+
"clear label": "Use default",
|
|
3876
|
+
"select emoji label": "Choose an emoji to use in your avatar",
|
|
3877
|
+
"select hue label": "Choose a hue to use in your avatar",
|
|
3878
|
+
"red label": "Red",
|
|
3879
|
+
"orange label": "Orange",
|
|
3880
|
+
"amber label": "Amber",
|
|
3881
|
+
"yellow label": "Yellow",
|
|
3882
|
+
"lime label": "Lime",
|
|
3883
|
+
"green label": "Green",
|
|
3884
|
+
"emerald label": "Emerald",
|
|
3885
|
+
"teal label": "Teal",
|
|
3886
|
+
"cyan label": "Cyan",
|
|
3887
|
+
"sky label": "Sky",
|
|
3888
|
+
"blue label": "Blue",
|
|
3889
|
+
"indigo label": "Indigo",
|
|
3890
|
+
"violet label": "Violet",
|
|
3891
|
+
"purple label": "Purple",
|
|
3892
|
+
"fuchsia label": "Fuchsia",
|
|
3893
|
+
"pink label": "Pink",
|
|
3894
|
+
"rose label": "Rose"
|
|
3722
3895
|
};
|
|
3723
3896
|
|
|
3724
3897
|
// packages/sdk/shell/src/translations/index.ts
|
|
@@ -3742,24 +3915,24 @@ var runShell = async (config = new Config()) => {
|
|
|
3742
3915
|
runtime.open(),
|
|
3743
3916
|
client.initialize()
|
|
3744
3917
|
]);
|
|
3745
|
-
createRoot(document.getElementById("root")).render(/* @__PURE__ */
|
|
3918
|
+
createRoot(document.getElementById("root")).render(/* @__PURE__ */ React46.createElement(StrictMode, null, /* @__PURE__ */ React46.createElement(ThemeProvider, {
|
|
3746
3919
|
tx: defaultTx,
|
|
3747
3920
|
resourceExtensions: [
|
|
3748
3921
|
osTranslations
|
|
3749
3922
|
]
|
|
3750
|
-
}, /* @__PURE__ */
|
|
3923
|
+
}, /* @__PURE__ */ React46.createElement(ClientContext.Provider, {
|
|
3751
3924
|
value: {
|
|
3752
3925
|
client,
|
|
3753
3926
|
status: SystemStatus.ACTIVE
|
|
3754
3927
|
}
|
|
3755
|
-
}, /* @__PURE__ */
|
|
3928
|
+
}, /* @__PURE__ */ React46.createElement(ClipboardProvider, null, /* @__PURE__ */ React46.createElement(Tooltip5.Provider, null, /* @__PURE__ */ React46.createElement(Shell, {
|
|
3756
3929
|
runtime,
|
|
3757
3930
|
origin: location.origin
|
|
3758
3931
|
})))))));
|
|
3759
3932
|
};
|
|
3760
3933
|
|
|
3761
3934
|
// packages/sdk/shell/src/composites/Shell/ShellContext.tsx
|
|
3762
|
-
import
|
|
3935
|
+
import React47, { createContext as createContext2, useCallback as useCallback9, useContext as useContext2, useEffect as useEffect8, useMemo as useMemo6, useState as useState12 } from "react";
|
|
3763
3936
|
import { ShellDisplay as ShellDisplay2, ShellLayout as ShellLayout3, useClient as useClient8 } from "@dxos/react-client";
|
|
3764
3937
|
import { useIdentity as useIdentity3 } from "@dxos/react-client/halo";
|
|
3765
3938
|
import { mx as mx23 } from "@dxos/react-ui-theme";
|
|
@@ -3821,7 +3994,7 @@ var useShell = () => {
|
|
|
3821
3994
|
var ShellProvider = ({ space, deviceInvitationCode, spaceInvitationCode, onJoinedSpace, children }) => {
|
|
3822
3995
|
const client = useClient8();
|
|
3823
3996
|
const identity = useIdentity3();
|
|
3824
|
-
const [display, setDisplay] =
|
|
3997
|
+
const [display, setDisplay] = useState12(!identity || spaceInvitationCode || deviceInvitationCode ? ShellDisplay2.FULLSCREEN : ShellDisplay2.NONE);
|
|
3825
3998
|
const shellRuntime = useMemo6(() => {
|
|
3826
3999
|
if (client.config.get("runtime.app.env.DX_VAULT") !== "false") {
|
|
3827
4000
|
return;
|
|
@@ -3891,12 +4064,12 @@ var ShellProvider = ({ space, deviceInvitationCode, spaceInvitationCode, onJoine
|
|
|
3891
4064
|
}, [
|
|
3892
4065
|
shellRuntime
|
|
3893
4066
|
]);
|
|
3894
|
-
return /* @__PURE__ */
|
|
4067
|
+
return /* @__PURE__ */ React47.createElement(React47.Fragment, null, shellRuntime && /* @__PURE__ */ React47.createElement("div", {
|
|
3895
4068
|
className: mx23(display === ShellDisplay2.NONE ? "hidden" : "")
|
|
3896
|
-
}, /* @__PURE__ */
|
|
4069
|
+
}, /* @__PURE__ */ React47.createElement(Shell, {
|
|
3897
4070
|
runtime: shellRuntime,
|
|
3898
4071
|
origin: window.location.origin
|
|
3899
|
-
})), /* @__PURE__ */
|
|
4072
|
+
})), /* @__PURE__ */ React47.createElement(ShellContext.Provider, {
|
|
3900
4073
|
value: {
|
|
3901
4074
|
runtime: shellRuntime,
|
|
3902
4075
|
setDisplay
|
|
@@ -3917,7 +4090,9 @@ export {
|
|
|
3917
4090
|
CopyButtonIconOnly,
|
|
3918
4091
|
DeviceList,
|
|
3919
4092
|
Emoji,
|
|
4093
|
+
EmojiPicker,
|
|
3920
4094
|
Heading,
|
|
4095
|
+
HuePicker,
|
|
3921
4096
|
IdentityDialog,
|
|
3922
4097
|
IdentityListItem,
|
|
3923
4098
|
IdentityPanel,
|