@dxos/shell 0.4.10-main.fa5a270 → 0.4.10-main.fe71b4c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/dist/bundle/index-BjPIerZ_.mjs +110 -0
  2. package/dist/bundle/index-BjPIerZ_.mjs.map +1 -0
  3. package/dist/bundle/index-BnojJ-lm.mjs +96615 -0
  4. package/dist/bundle/index-BnojJ-lm.mjs.map +1 -0
  5. package/dist/bundle/shell.mjs +9 -80814
  6. package/dist/bundle/shell.mjs.map +1 -1
  7. package/dist/bundle/shell.umd.js +156 -85
  8. package/dist/bundle/shell.umd.js.map +1 -1
  9. package/dist/bundle/style.css +1 -1
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/react.mjs +1177 -1034
  12. package/dist/lib/browser/react.mjs.map +4 -4
  13. package/dist/lib/browser/testing/index.mjs +8 -8
  14. package/dist/lib/browser/testing/index.mjs.map +3 -3
  15. package/dist/types/src/components/AgentConfig.d.ts +3 -0
  16. package/dist/types/src/components/AgentConfig.d.ts.map +1 -0
  17. package/dist/types/src/components/AgentConfig.js +37 -0
  18. package/dist/types/src/components/AgentConfig.js.map +1 -0
  19. package/dist/types/src/components/DeviceList/DeviceList.d.ts +3 -0
  20. package/dist/types/src/components/DeviceList/DeviceList.d.ts.map +1 -0
  21. package/dist/types/src/components/DeviceList/DeviceList.js +29 -0
  22. package/dist/types/src/components/DeviceList/DeviceList.js.map +1 -0
  23. package/dist/types/src/components/DeviceList/DeviceListItem.d.ts +6 -0
  24. package/dist/types/src/components/DeviceList/DeviceListItem.d.ts.map +1 -0
  25. package/dist/types/src/components/DeviceList/DeviceListItem.js +72 -0
  26. package/dist/types/src/components/DeviceList/DeviceListItem.js.map +1 -0
  27. package/dist/types/src/components/DeviceList/DeviceListProps.d.ts +27 -0
  28. package/dist/types/src/components/DeviceList/DeviceListProps.d.ts.map +1 -0
  29. package/dist/types/src/components/DeviceList/DeviceListProps.js +6 -0
  30. package/dist/types/src/components/DeviceList/DeviceListProps.js.map +1 -0
  31. package/dist/types/src/components/DeviceList/index.d.ts +3 -0
  32. package/dist/types/src/components/DeviceList/index.d.ts.map +1 -0
  33. package/dist/types/src/components/DeviceList/index.js +22 -0
  34. package/dist/types/src/components/DeviceList/index.js.map +1 -0
  35. package/dist/types/src/components/EmojiPicker.d.ts +9 -2
  36. package/dist/types/src/components/EmojiPicker.d.ts.map +1 -1
  37. package/dist/types/src/components/EmojiPicker.js +59 -4
  38. package/dist/types/src/components/EmojiPicker.js.map +1 -1
  39. package/dist/types/src/components/HuePicker.d.ts +9 -2
  40. package/dist/types/src/components/HuePicker.d.ts.map +1 -1
  41. package/dist/types/src/components/HuePicker.js +75 -6
  42. package/dist/types/src/components/HuePicker.js.map +1 -1
  43. package/dist/types/src/components/IdentityList/index.d.ts +0 -1
  44. package/dist/types/src/components/IdentityList/index.d.ts.map +1 -1
  45. package/dist/types/src/components/IdentityList/index.js +0 -1
  46. package/dist/types/src/components/IdentityList/index.js.map +1 -1
  47. package/dist/types/src/components/InvitationList/InvitationListItem.js +5 -5
  48. package/dist/types/src/components/InvitationList/InvitationListItem.js.map +1 -1
  49. package/dist/types/src/components/Panel/Action.d.ts +2 -2
  50. package/dist/types/src/components/Viewport/Viewport.d.ts +1 -1
  51. package/dist/types/src/components/index.d.ts +2 -0
  52. package/dist/types/src/components/index.d.ts.map +1 -1
  53. package/dist/types/src/components/index.js +2 -0
  54. package/dist/types/src/components/index.js.map +1 -1
  55. package/dist/types/src/composites/IdentityDialog/IdentityDialog.js +1 -1
  56. package/dist/types/src/composites/IdentityDialog/IdentityDialog.js.map +1 -1
  57. package/dist/types/src/composites/Shell/Shell.d.ts.map +1 -1
  58. package/dist/types/src/composites/Shell/Shell.js +14 -6
  59. package/dist/types/src/composites/Shell/Shell.js.map +1 -1
  60. package/dist/types/src/composites/StatusDialog/StatusDialog.d.ts +2 -0
  61. package/dist/types/src/composites/StatusDialog/StatusDialog.d.ts.map +1 -0
  62. package/dist/types/src/composites/StatusDialog/StatusDialog.js +22 -0
  63. package/dist/types/src/composites/StatusDialog/StatusDialog.js.map +1 -0
  64. package/dist/types/src/composites/StatusDialog/index.d.ts +2 -0
  65. package/dist/types/src/composites/StatusDialog/index.d.ts.map +1 -0
  66. package/dist/types/src/composites/StatusDialog/index.js +21 -0
  67. package/dist/types/src/composites/StatusDialog/index.js.map +1 -0
  68. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts +1 -1
  69. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
  70. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +89 -42
  71. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
  72. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts +0 -3
  73. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts.map +1 -1
  74. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js +1 -43
  75. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js.map +1 -1
  76. package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts +11 -12
  77. package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts.map +1 -1
  78. package/dist/types/src/panels/IdentityPanel/identityMachine.d.ts +3 -1
  79. package/dist/types/src/panels/IdentityPanel/identityMachine.d.ts.map +1 -1
  80. package/dist/types/src/panels/IdentityPanel/identityMachine.js +13 -24
  81. package/dist/types/src/panels/IdentityPanel/identityMachine.js.map +1 -1
  82. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts +4 -4
  83. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts.map +1 -1
  84. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js +9 -39
  85. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js.map +1 -1
  86. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts +1 -1
  87. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts.map +1 -1
  88. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js +6 -3
  89. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js.map +1 -1
  90. package/dist/types/src/panels/IdentityPanel/steps/index.d.ts +0 -3
  91. package/dist/types/src/panels/IdentityPanel/steps/index.d.ts.map +1 -1
  92. package/dist/types/src/panels/IdentityPanel/steps/index.js +0 -3
  93. package/dist/types/src/panels/IdentityPanel/steps/index.js.map +1 -1
  94. package/dist/types/src/panels/IdentityPanel/useAgentHandlers.d.ts.map +1 -1
  95. package/dist/types/src/panels/IdentityPanel/useAgentHandlers.js +5 -1
  96. package/dist/types/src/panels/IdentityPanel/useAgentHandlers.js.map +1 -1
  97. package/dist/types/src/panels/JoinPanel/JoinPanel.d.ts +1 -1
  98. package/dist/types/src/panels/JoinPanel/JoinPanel.d.ts.map +1 -1
  99. package/dist/types/src/panels/JoinPanel/JoinPanel.js +12 -5
  100. package/dist/types/src/panels/JoinPanel/JoinPanel.js.map +1 -1
  101. package/dist/types/src/panels/JoinPanel/JoinPanel.stories.d.ts +1 -1
  102. package/dist/types/src/panels/JoinPanel/JoinPanel.stories.d.ts.map +1 -1
  103. package/dist/types/src/panels/JoinPanel/JoinPanel.stories.js +2 -1
  104. package/dist/types/src/panels/JoinPanel/JoinPanel.stories.js.map +1 -1
  105. package/dist/types/src/panels/JoinPanel/JoinPanelProps.d.ts +8 -3
  106. package/dist/types/src/panels/JoinPanel/JoinPanelProps.d.ts.map +1 -1
  107. package/dist/types/src/panels/JoinPanel/joinMachine.d.ts +3 -2
  108. package/dist/types/src/panels/JoinPanel/joinMachine.d.ts.map +1 -1
  109. package/dist/types/src/panels/JoinPanel/joinMachine.js +7 -0
  110. package/dist/types/src/panels/JoinPanel/joinMachine.js.map +1 -1
  111. package/dist/types/src/panels/JoinPanel/steps/index.d.ts +0 -1
  112. package/dist/types/src/panels/JoinPanel/steps/index.d.ts.map +1 -1
  113. package/dist/types/src/panels/JoinPanel/steps/index.js +0 -1
  114. package/dist/types/src/panels/JoinPanel/steps/index.js.map +1 -1
  115. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.d.ts.map +1 -1
  116. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js +3 -1
  117. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js.map +1 -1
  118. package/dist/types/src/panels/StatusPanel/StatusPanel.d.ts +4 -0
  119. package/dist/types/src/panels/StatusPanel/StatusPanel.d.ts.map +1 -0
  120. package/dist/types/src/panels/StatusPanel/StatusPanel.js +19 -0
  121. package/dist/types/src/panels/StatusPanel/StatusPanel.js.map +1 -0
  122. package/dist/types/src/panels/StatusPanel/index.d.ts +2 -0
  123. package/dist/types/src/panels/StatusPanel/index.d.ts.map +1 -0
  124. package/dist/types/src/panels/StatusPanel/index.js +21 -0
  125. package/dist/types/src/panels/StatusPanel/index.js.map +1 -0
  126. package/dist/types/src/panels/index.d.ts +1 -0
  127. package/dist/types/src/panels/index.d.ts.map +1 -1
  128. package/dist/types/src/panels/index.js +1 -0
  129. package/dist/types/src/panels/index.js.map +1 -1
  130. package/dist/types/src/steps/ConfirmReset.d.ts +16 -0
  131. package/dist/types/src/steps/ConfirmReset.d.ts.map +1 -0
  132. package/dist/types/src/steps/ConfirmReset.js +71 -0
  133. package/dist/types/src/steps/ConfirmReset.js.map +1 -0
  134. package/dist/types/src/steps/InvitationManager.d.ts +1 -1
  135. package/dist/types/src/steps/InvitationManager.d.ts.map +1 -1
  136. package/dist/types/src/steps/InvitationManager.js +3 -4
  137. package/dist/types/src/steps/InvitationManager.js.map +1 -1
  138. package/dist/types/src/steps/StepProps.d.ts +4 -1
  139. package/dist/types/src/steps/StepProps.d.ts.map +1 -1
  140. package/dist/types/src/steps/index.d.ts +1 -0
  141. package/dist/types/src/steps/index.d.ts.map +1 -1
  142. package/dist/types/src/steps/index.js +1 -0
  143. package/dist/types/src/steps/index.js.map +1 -1
  144. package/dist/types/src/stories/Invitations.e2e-stories.d.ts.map +1 -1
  145. package/dist/types/src/stories/Invitations.e2e-stories.js +2 -2
  146. package/dist/types/src/stories/Invitations.e2e-stories.js.map +1 -1
  147. package/dist/types/src/testing/shell-manager.d.ts.map +1 -1
  148. package/dist/types/src/testing/shell-manager.js +8 -8
  149. package/dist/types/src/testing/shell-manager.js.map +1 -1
  150. package/dist/types/src/translations/locales/en-US.d.ts +16 -3
  151. package/dist/types/src/translations/locales/en-US.d.ts.map +1 -1
  152. package/dist/types/src/translations/locales/en-US.js +20 -7
  153. package/dist/types/src/translations/locales/en-US.js.map +1 -1
  154. package/dist/types/src/types/index.js +1 -0
  155. package/dist/types/src/types/index.js.map +1 -1
  156. package/package.json +22 -21
  157. package/src/components/AgentConfig.tsx +66 -0
  158. package/src/components/DeviceList/DeviceList.tsx +54 -0
  159. package/src/components/DeviceList/DeviceListItem.tsx +120 -0
  160. package/src/components/DeviceList/DeviceListProps.ts +33 -0
  161. package/src/components/DeviceList/index.ts +6 -0
  162. package/src/components/EmojiPicker.tsx +103 -4
  163. package/src/components/HuePicker.tsx +99 -5
  164. package/src/components/IdentityList/index.ts +0 -1
  165. package/src/components/InvitationList/InvitationListItem.tsx +5 -5
  166. package/src/components/index.ts +2 -0
  167. package/src/composites/IdentityDialog/IdentityDialog.tsx +1 -1
  168. package/src/composites/Shell/Shell.tsx +17 -4
  169. package/src/composites/StatusDialog/StatusDialog.tsx +24 -0
  170. package/src/composites/StatusDialog/index.ts +5 -0
  171. package/src/panels/IdentityPanel/IdentityPanel.stories.tsx +0 -63
  172. package/src/panels/IdentityPanel/IdentityPanel.tsx +149 -43
  173. package/src/panels/IdentityPanel/IdentityPanelProps.ts +15 -15
  174. package/src/panels/IdentityPanel/identityMachine.ts +17 -25
  175. package/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx +23 -67
  176. package/src/panels/IdentityPanel/steps/ProfileForm.tsx +18 -5
  177. package/src/panels/IdentityPanel/steps/index.ts +0 -3
  178. package/src/panels/IdentityPanel/useAgentHandlers.ts +5 -1
  179. package/src/panels/JoinPanel/JoinPanel.stories.tsx +3 -2
  180. package/src/panels/JoinPanel/JoinPanel.tsx +21 -5
  181. package/src/panels/JoinPanel/JoinPanelProps.ts +9 -3
  182. package/src/panels/JoinPanel/joinMachine.ts +12 -2
  183. package/src/panels/JoinPanel/steps/index.ts +0 -1
  184. package/src/panels/SpacePanel/steps/SpaceManager.tsx +3 -1
  185. package/src/panels/StatusPanel/StatusPanel.tsx +19 -0
  186. package/src/panels/StatusPanel/index.ts +5 -0
  187. package/src/panels/index.ts +1 -0
  188. package/src/steps/ConfirmReset.tsx +112 -0
  189. package/src/steps/InvitationManager.tsx +4 -4
  190. package/src/steps/StepProps.ts +2 -1
  191. package/src/steps/index.ts +1 -0
  192. package/src/stories/Invitations.e2e-stories.tsx +3 -3
  193. package/src/testing/shell-manager.ts +8 -8
  194. package/src/translations/locales/en-US.ts +22 -7
  195. package/src/types/index.ts +2 -0
  196. package/dist/types/src/components/IdentityList/DeviceList.d.ts +0 -7
  197. package/dist/types/src/components/IdentityList/DeviceList.d.ts.map +0 -1
  198. package/dist/types/src/components/IdentityList/DeviceList.js +0 -34
  199. package/dist/types/src/components/IdentityList/DeviceList.js.map +0 -1
  200. package/dist/types/src/panels/IdentityPanel/steps/AgentForm.d.ts +0 -3
  201. package/dist/types/src/panels/IdentityPanel/steps/AgentForm.d.ts.map +0 -1
  202. package/dist/types/src/panels/IdentityPanel/steps/AgentForm.js +0 -26
  203. package/dist/types/src/panels/IdentityPanel/steps/AgentForm.js.map +0 -1
  204. package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.d.ts +0 -10
  205. package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.d.ts.map +0 -1
  206. package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.js +0 -23
  207. package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.js.map +0 -1
  208. package/dist/types/src/panels/IdentityPanel/steps/SignOutChooser.d.ts +0 -16
  209. package/dist/types/src/panels/IdentityPanel/steps/SignOutChooser.d.ts.map +0 -1
  210. package/dist/types/src/panels/IdentityPanel/steps/SignOutChooser.js +0 -40
  211. package/dist/types/src/panels/IdentityPanel/steps/SignOutChooser.js.map +0 -1
  212. package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.d.ts +0 -13
  213. package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.d.ts.map +0 -1
  214. package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.js +0 -66
  215. package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.js.map +0 -1
  216. package/src/components/IdentityList/DeviceList.tsx +0 -49
  217. package/src/panels/IdentityPanel/steps/AgentForm.tsx +0 -61
  218. package/src/panels/IdentityPanel/steps/DeviceManager.tsx +0 -41
  219. package/src/panels/IdentityPanel/steps/SignOutChooser.tsx +0 -84
  220. package/src/panels/JoinPanel/steps/ResetIdentity.tsx +0 -80
@@ -0,0 +1,112 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { Warning } from '@phosphor-icons/react';
6
+ import React, { useState } from 'react';
7
+
8
+ import { log } from '@dxos/log';
9
+ import { Message, useTranslation } from '@dxos/react-ui';
10
+ import { getSize, mx } from '@dxos/react-ui-theme';
11
+
12
+ import { type StepProps } from './StepProps';
13
+ import { Action, Actions, StepHeading, Input } from '../components';
14
+
15
+ type ConfirmResetOptions = Partial<{
16
+ onCancel: () => void;
17
+ onConfirm: () => Promise<void>;
18
+ mode: 'join new identity' | 'reset storage';
19
+ }>;
20
+
21
+ export type ConfirmResetProps = StepProps & ConfirmResetOptions;
22
+
23
+ export type ConfirmResetImplProps = ConfirmResetOptions & {
24
+ disabled?: boolean;
25
+ pending?: boolean;
26
+ validationMessage?: string;
27
+ };
28
+
29
+ export const ConfirmReset = ({ active, onCancel, onConfirm, mode }: ConfirmResetProps) => {
30
+ const { t } = useTranslation('os');
31
+ const [validationMessage, setValidationMessage] = useState('');
32
+ const [pending, setPending] = useState(false);
33
+ const processReset = async () => {
34
+ setPending(true);
35
+ return onConfirm?.().then(
36
+ () => setPending(false),
37
+ (error) => {
38
+ log.catch(error);
39
+ setValidationMessage(t('failed to reset identity message'));
40
+ setPending(false);
41
+ },
42
+ );
43
+ };
44
+ return (
45
+ <ConfirmResetImpl
46
+ disabled={!active}
47
+ pending={pending}
48
+ validationMessage={validationMessage}
49
+ onConfirm={processReset}
50
+ onCancel={onCancel}
51
+ mode={mode}
52
+ />
53
+ );
54
+ };
55
+
56
+ export const ConfirmResetImpl = ({
57
+ disabled,
58
+ pending,
59
+ validationMessage,
60
+ onConfirm,
61
+ onCancel,
62
+ mode,
63
+ }: ConfirmResetImplProps) => {
64
+ const { t } = useTranslation('os');
65
+ const confirmationValue = t('confirmation value');
66
+ const [inputValue, setInputValue] = useState('');
67
+ const testIdAffix = mode === 'join new identity' ? 'join-new-identity' : 'reset-storage';
68
+ return (
69
+ <>
70
+ <div role='none' className='grow flex flex-col gap-2 justify-center'>
71
+ <Message.Root valence='error'>
72
+ <Message.Title>
73
+ <Warning className={mx(getSize(6), 'inline mie-2')} />
74
+ {t('sign out chooser title')}
75
+ </Message.Title>
76
+ <Message.Body>{t('sign out chooser message')}</Message.Body>
77
+ </Message.Root>
78
+ <Input
79
+ {...{ validationMessage }}
80
+ label={
81
+ <StepHeading className='text-start mlb-2'>
82
+ {t(mode === 'join new identity' ? 'join new identity input label' : 'reset storage input label', {
83
+ confirmationValue,
84
+ })}
85
+ </StepHeading>
86
+ }
87
+ disabled={disabled}
88
+ data-testid={`${testIdAffix}.reset-identity-input`}
89
+ placeholder={confirmationValue}
90
+ onChange={({ target: { value } }) => setInputValue(value)}
91
+ />
92
+ </div>
93
+ <Actions>
94
+ {onCancel && (
95
+ <Action disabled={disabled} onClick={onCancel} data-testid={`${testIdAffix}.reset-identity-cancel`}>
96
+ {t('cancel label')}
97
+ </Action>
98
+ )}
99
+ {onConfirm && (
100
+ <Action
101
+ variant='destructive'
102
+ disabled={disabled || pending || inputValue !== confirmationValue}
103
+ onClick={onConfirm}
104
+ data-testid={`${testIdAffix}.reset-identity-confirm`}
105
+ >
106
+ {pending ? t('reset in progress label') : t('reset device label')}
107
+ </Action>
108
+ )}
109
+ </Actions>
110
+ </>
111
+ );
112
+ };
@@ -6,7 +6,7 @@ import { Check, X } from '@phosphor-icons/react';
6
6
  import React, { useMemo } from 'react';
7
7
  import { QR } from 'react-qr-rounded';
8
8
 
9
- import { type InvitationStatus, Invitation } from '@dxos/react-client/invitations';
9
+ import { type InvitationStatus } from '@dxos/react-client/invitations';
10
10
  import { useId, useTranslation } from '@dxos/react-ui';
11
11
  import { descriptionText, getSize, mx } from '@dxos/react-ui-theme';
12
12
  import { hexToEmoji } from '@dxos/util';
@@ -43,13 +43,13 @@ export const InvitationManager = ({
43
43
  active,
44
44
  send,
45
45
  status,
46
- type,
46
+ multiUse,
47
47
  authCode,
48
48
  id = '0',
49
49
  }: InvitationManagerProps) => {
50
50
  const { t } = useTranslation('os');
51
51
  const qrLabel = useId('invitation-manager__qr-code');
52
- const statusValue = type === Invitation.Type.MULTIUSE ? 0 : invitationStatusValue.get(status!) ?? 0;
52
+ const statusValue = multiUse ? 0 : invitationStatusValue.get(status!) ?? 0;
53
53
  const showAuthCode = statusValue === 3;
54
54
  const emoji = hexToEmoji(id);
55
55
  const activeView = useMemo(() => {
@@ -69,7 +69,7 @@ export const InvitationManager = ({
69
69
  <Viewport.Views>
70
70
  <InvitationManagerView id='showing qr' emoji={emoji}>
71
71
  <p className='text-sm mlb-1 font-normal text-center'>
72
- {t(type === Invitation.Type.MULTIUSE ? 'invite many qr label' : 'invite one qr label')}
72
+ {t(multiUse ? 'invite many qr label' : 'invite one qr label')}
73
73
  </p>
74
74
  <div role='none' className={mx(descriptionText, 'is-full max-is-[14rem] relative')}>
75
75
  <QR
@@ -6,8 +6,9 @@ import { type cloneElement } from 'react';
6
6
  import { type Event, type SingleOrArray } from 'xstate';
7
7
 
8
8
  type StepDeselectInvitationEvent = { type: 'deselectInvitation' };
9
+ type StepResetIdentityEvent = { type: 'resetIdentity' };
9
10
 
10
- export type StepEvent = StepDeselectInvitationEvent;
11
+ export type StepEvent = StepDeselectInvitationEvent | StepResetIdentityEvent;
11
12
 
12
13
  export type StepProps = {
13
14
  active?: boolean;
@@ -4,3 +4,4 @@
4
4
 
5
5
  export * from './InvitationManager';
6
6
  export * from './StepProps';
7
+ export * from './ConfirmReset';
@@ -10,7 +10,7 @@ import React, { useMemo, useState } from 'react';
10
10
  import { log } from '@dxos/log';
11
11
  import { faker } from '@dxos/random';
12
12
  import { useClient } from '@dxos/react-client';
13
- import { type Space, type SpaceMember, SpaceProxy, useSpaces } from '@dxos/react-client/echo';
13
+ import { type Space, type SpaceMember, useSpaces } from '@dxos/react-client/echo';
14
14
  import { useIdentity } from '@dxos/react-client/halo';
15
15
  import { Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
16
16
  import { ConnectionState, useNetworkStatus } from '@dxos/react-client/mesh';
@@ -36,7 +36,7 @@ const Panel = ({ id, panel, setPanel }: { id: number; panel?: PanelType; setPane
36
36
  const spaces = useSpaces();
37
37
 
38
38
  useMemo(() => {
39
- if (panel instanceof SpaceProxy) {
39
+ if (panel && typeof panel !== 'string') {
40
40
  (window as any)[`peer${id}CreateSpaceInvitation`] = (options?: Partial<Invitation>) => {
41
41
  const invitation = panel.share(options);
42
42
 
@@ -50,7 +50,7 @@ const Panel = ({ id, panel, setPanel }: { id: number; panel?: PanelType; setPane
50
50
  }
51
51
  }, [panel]);
52
52
 
53
- if (panel instanceof SpaceProxy) {
53
+ if (panel && typeof panel !== 'string') {
54
54
  return <SpacePanel space={panel} createInvitationUrl={createInvitationUrl} />;
55
55
  }
56
56
 
@@ -65,17 +65,17 @@ export class ShellManager extends ScopedShellManager {
65
65
  };
66
66
 
67
67
  this.page.on('dialog', handleDialog);
68
- await this.shell.getByTestId('devices-panel.sign-out').click();
69
- await this.shell.getByTestId('sign-out.reset-device').click();
70
- this.page.off('dialog', handleDialog);
68
+ await this.shell.getByTestId('device-list-item-current.options').click();
69
+ await this.shell.getByTestId('device-list-item-current.reset').click();
70
+ await this.shell.getByTestId('reset-storage.reset-identity-input').fill('CONFIRM');
71
+ await this.shell.getByTestId('reset-storage.reset-identity-confirm').click();
71
72
  }
72
73
 
73
74
  async joinNewIdentity(invitationCode: string) {
74
- await this.shell.getByTestId('devices-panel.sign-out').click();
75
- await this.shell.getByTestId('sign-out.join-new-identity').click();
76
- await this.shell.getByTestId('reset-identity-input').fill('CONFIRM');
77
- await this.shell.getByTestId('reset-identity-input-confirm').click();
78
- await this.shell.getByTestId('identity-chooser.join-identity').click();
75
+ await this.shell.getByTestId('device-list-item-current.options').click();
76
+ await this.shell.getByTestId('device-list-item-current.join-existing').click();
77
+ await this.shell.getByTestId('join-new-identity.reset-identity-input').fill('CONFIRM');
78
+ await this.shell.getByTestId('join-new-identity.reset-identity-input-confirm').click();
79
79
  await this.inputInvitation('device', invitationCode, this.shell);
80
80
  }
81
81
 
@@ -45,8 +45,6 @@ export const os = {
45
45
  'connected status label': 'Enter confirmation PIN',
46
46
  'authenticating status label': 'Enter confirmation PIN',
47
47
  'success status label': 'Success',
48
- 'connect label': 'Connect',
49
- 'reconnect label': 'Reconnect',
50
48
  'cancel label': 'Cancel',
51
49
  'done label': 'Done',
52
50
  'reset label': 'Start over',
@@ -73,7 +71,8 @@ export const os = {
73
71
  'choose add device label': 'Add device',
74
72
  'choose devices label': 'Manage devices',
75
73
  'choose profile label': 'Edit profile',
76
- 'choose sign out label': 'Sign out',
74
+ 'choose sign out label': 'Reset storage',
75
+ 'choose join new identity label': 'Join existing device',
77
76
  'empty space members message': 'There is nobody in this space yet.',
78
77
  'back to all invitations label': 'Back to all invitations',
79
78
  'invitation heading': 'Invitation',
@@ -97,19 +96,22 @@ export const os = {
97
96
  'invite options label': 'Change the active invite option.',
98
97
  'reset in progress label': 'Resetting...',
99
98
  'confirm label': 'Confirm',
100
- 'reset identity input label':
99
+ 'reset storage input label':
101
100
  'This will clear this device and all associated data. Type {{confirmationValue}} and confirm to continue.',
101
+ 'join new identity input label':
102
+ 'In order to join an existing device, storage on this device must be cleared first. Type {{confirmationValue}} to continue.',
102
103
  'failed to reset identity message': 'Failed to reset identity.',
103
104
  'confirmation value': 'CONFIRM',
104
- 'sign out chooser title': 'DANGER ZONE',
105
- 'sign out chooser message': 'Proceeding with either action below will erase all data on this device.',
105
+ 'sign out chooser title': 'Danger zone',
106
+ 'sign out chooser message': 'Proceeding with the action below will erase all data on this device.',
106
107
  'join new identity label': 'Join a new identity',
107
- 'reset device label': 'Reset device',
108
+ 'reset device label': 'Reset storage',
108
109
  'reset device confirm message': 'Are you sure you want to reset your device? All data will be lost.',
109
110
  'emoji and color label': 'Emoji and color',
110
111
  'clear label': 'Use default',
111
112
  'select emoji label': 'Choose an emoji to use in your avatar',
112
113
  'select hue label': 'Choose a hue to use in your avatar',
114
+ 'resetting message': 'One moment while things are reset…',
113
115
  'red label': 'Red',
114
116
  'orange label': 'Orange',
115
117
  'amber label': 'Amber',
@@ -127,4 +129,17 @@ export const os = {
127
129
  'fuchsia label': 'Fuchsia',
128
130
  'pink label': 'Pink',
129
131
  'rose label': 'Rose',
132
+ 'current device tag label': 'This device',
133
+ 'device name placeholder': '{{platform}} on {{os}}',
134
+ 'more options label': 'More options',
135
+ 'disconnect label': 'Currently online. Click to go offline.',
136
+ 'connect label': 'Currently offline. Click to go online.',
137
+ 'edit device label': 'Edit device name & avatar',
138
+ 'agent heading': 'Agent',
139
+ 'agent message title': 'About creating an agent',
140
+ 'agent message body':
141
+ 'Creating an agent helps keep your devices and peers in-sync. An agent is like any other device, but since it’s always online your changes will sync even when all your physical devices are asleep.',
142
+ 'create agent label': 'Start an agent',
143
+ 'destroy agent label': 'Shut down agent',
144
+ 'agent device label': 'Your agent',
130
145
  };
@@ -4,3 +4,5 @@
4
4
 
5
5
  export * from './FailReason';
6
6
  export * from './IInvitation';
7
+
8
+ // This comment is here to bust NX cache. Remove it after the code changes.
@@ -1,7 +0,0 @@
1
- import { type Device } from '@dxos/react-client/halo';
2
- export interface DeviceListProps {
3
- devices: Device[];
4
- onSelect?: (device: Device) => void;
5
- }
6
- export declare const DeviceList: ({ devices, onSelect }: DeviceListProps) => JSX.Element;
7
- //# sourceMappingURL=DeviceList.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeviceList.d.ts","sourceRoot":"","sources":["../../../../../src/components/IdentityList/DeviceList.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,yBAAyB,CAAC;AAMlE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,UAAU,0BAA2B,eAAe,gBA8BhE,CAAC"}
@@ -1,34 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2023 DXOS.org
4
- //
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.DeviceList = void 0;
10
- const react_1 = __importDefault(require("react"));
11
- const display_name_1 = require("@dxos/display-name");
12
- const halo_1 = require("@dxos/react-client/halo");
13
- const react_ui_1 = require("@dxos/react-ui");
14
- const react_ui_theme_1 = require("@dxos/react-ui-theme");
15
- const IdentityListItem_1 = require("./IdentityListItem");
16
- const DeviceList = ({ devices, onSelect }) => {
17
- const { t } = (0, react_ui_1.useTranslation)('os');
18
- return devices.length > 0 ? (react_1.default.createElement(react_ui_1.List, { classNames: 'flex flex-col gap-2' }, devices.map((device) => {
19
- var _a, _b;
20
- // TODO(wittjosiah): Render this better. Consider communicating these as apps rather than devices.
21
- const deviceType = ((_a = device.profile) === null || _a === void 0 ? void 0 : _a.type) || halo_1.DeviceType.UNKNOWN;
22
- const displayName = ((_b = device.profile) === null || _b === void 0 ? void 0 : _b.label)
23
- ? `${device.profile.label} (${halo_1.DeviceType[deviceType]})`
24
- : (0, display_name_1.generateName)(device.deviceKey.toHex());
25
- const identity = {
26
- identityKey: device.deviceKey,
27
- profile: { displayName },
28
- };
29
- return (react_1.default.createElement(IdentityListItem_1.IdentityListItem, { key: device.deviceKey.toHex(), identity: identity, presence: device.presence, onClick: onSelect && (() => onSelect(device)) }));
30
- }))) : (react_1.default.createElement("div", { role: 'none', className: 'grow flex items-center p-2' },
31
- react_1.default.createElement("p", { className: (0, react_ui_theme_1.mx)(react_ui_theme_1.descriptionText, 'text-center is-full') }, t('empty device list message'))));
32
- };
33
- exports.DeviceList = DeviceList;
34
- //# sourceMappingURL=DeviceList.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeviceList.js","sourceRoot":"","sources":["../../../../../src/components/IdentityList/DeviceList.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,kDAA0B;AAE1B,qDAAkD;AAClD,kDAAkE;AAClE,6CAAsD;AACtD,yDAA2D;AAE3D,yDAAsD;AAO/C,MAAM,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAmB,EAAE,EAAE;IACnE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC1B,8BAAC,eAAI,IAAC,UAAU,EAAC,qBAAqB,IACnC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;;QACtB,kGAAkG;QAClG,MAAM,UAAU,GAAG,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,IAAI,KAAI,iBAAU,CAAC,OAAO,CAAC;QAC9D,MAAM,WAAW,GAAG,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,KAAK;YACvC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,iBAAU,CAAC,UAAU,CAAC,GAAG;YACvD,CAAC,CAAC,IAAA,2BAAY,EAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;QAE3C,MAAM,QAAQ,GAAG;YACf,WAAW,EAAE,MAAM,CAAC,SAAS;YAC7B,OAAO,EAAE,EAAE,WAAW,EAAE;SACzB,CAAC;QACF,OAAO,CACL,8BAAC,mCAAgB,IACf,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAC7B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,OAAO,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAC7C,CACH,CAAC;IACJ,CAAC,CAAC,CACG,CACR,CAAC,CAAC,CAAC,CACF,uCAAK,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,4BAA4B;QACrD,qCAAG,SAAS,EAAE,IAAA,mBAAE,EAAC,gCAAe,EAAE,qBAAqB,CAAC,IAAG,CAAC,CAAC,2BAA2B,CAAC,CAAK,CAC1F,CACP,CAAC;AACJ,CAAC,CAAC;AA9BW,QAAA,UAAU,cA8BrB"}
@@ -1,3 +0,0 @@
1
- import { type AgentFormProps, type IdentityPanelStepProps } from '../IdentityPanelProps';
2
- export declare const AgentForm: (props: IdentityPanelStepProps & AgentFormProps) => JSX.Element;
3
- //# sourceMappingURL=AgentForm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentForm.d.ts","sourceRoot":"","sources":["../../../../../../src/panels/IdentityPanel/steps/AgentForm.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEzF,eAAO,MAAM,SAAS,UAAW,sBAAsB,GAAG,cAAc,gBAiDvE,CAAC"}
@@ -1,26 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2023 DXOS.org
4
- //
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.AgentForm = void 0;
10
- const react_1 = __importDefault(require("react"));
11
- const react_ui_1 = require("@dxos/react-ui");
12
- const components_1 = require("../../../components");
13
- const AgentForm = (props) => {
14
- const { active, onAgentCreate, onAgentDestroy, send, validationMessage, agentStatus, agentActive, agentProviderDisabled, } = props;
15
- const disabled = !active;
16
- const { t } = (0, react_ui_1.useTranslation)('os');
17
- return (react_1.default.createElement(react_1.default.Fragment, null,
18
- react_1.default.createElement("div", { role: 'none', className: 'grow flex flex-col justify-center' },
19
- react_1.default.createElement(components_1.Input, { validationMessage, label: react_1.default.createElement(components_1.StepHeading, null, "Agent Status"), disabled: disabled, "data-testid": 'agent-status', value: agentStatus })),
20
- react_1.default.createElement(components_1.Actions, null,
21
- react_1.default.createElement(components_1.Action, { disabled: agentActive || agentProviderDisabled, onClick: () => onAgentCreate === null || onAgentCreate === void 0 ? void 0 : onAgentCreate(), "data-testid": 'create-agent' }, "Create Agent"),
22
- react_1.default.createElement(components_1.Action, { disabled: !agentActive || agentProviderDisabled, onClick: () => onAgentDestroy === null || onAgentDestroy === void 0 ? void 0 : onAgentDestroy(), "data-testid": 'destroy-agent' }, "Destroy Agent"),
23
- react_1.default.createElement(components_1.Action, { disabled: disabled, onClick: () => send === null || send === void 0 ? void 0 : send({ type: 'unchooseAction' }), "data-testid": 'update-profile-form-back' }, t('back label')))));
24
- };
25
- exports.AgentForm = AgentForm;
26
- //# sourceMappingURL=AgentForm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentForm.js","sourceRoot":"","sources":["../../../../../../src/panels/IdentityPanel/steps/AgentForm.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,kDAA0B;AAE1B,6CAAgD;AAEhD,oDAA0E;AAGnE,MAAM,SAAS,GAAG,CAAC,KAA8C,EAAE,EAAE;IAC1E,MAAM,EACJ,MAAM,EACN,aAAa,EACb,cAAc,EACd,IAAI,EACJ,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,qBAAqB,GACtB,GAAG,KAAK,CAAC;IACV,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IACnC,OAAO,CACL;QACE,uCAAK,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,mCAAmC;YAC5D,8BAAC,kBAAK,IACE,iBAAiB,EACvB,KAAK,EAAE,8BAAC,wBAAW,uBAA2B,EAC9C,QAAQ,EAAE,QAAQ,iBACN,cAAc,EAC1B,KAAK,EAAE,WAAW,GAClB,CACE;QACN,8BAAC,oBAAO;YACN,8BAAC,mBAAM,IACL,QAAQ,EAAE,WAAW,IAAI,qBAAqB,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,EAAI,iBACnB,cAAc,mBAGpB;YACT,8BAAC,mBAAM,IACL,QAAQ,EAAE,CAAC,WAAW,IAAI,qBAAqB,EAC/C,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,EAAI,iBACpB,eAAe,oBAGrB;YACT,8BAAC,mBAAM,IACL,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,iBACpC,0BAA0B,IAEtC,CAAC,CAAC,YAAY,CAAC,CACT,CACD,CACT,CACJ,CAAC;AACJ,CAAC,CAAC;AAjDW,QAAA,SAAS,aAiDpB"}
@@ -1,10 +0,0 @@
1
- import { type Event, type SingleOrArray } from 'xstate';
2
- import { type Device } from '@dxos/react-client/halo';
3
- import type { IdentityPanelStepProps } from '../IdentityPanelProps';
4
- import type { IdentityEvent } from '../identityMachine';
5
- export interface DeviceManagerProps extends Omit<IdentityPanelStepProps, 'send'> {
6
- send?: (event: SingleOrArray<Event<IdentityEvent>>) => void;
7
- devices: Device[];
8
- }
9
- export declare const DeviceManager: ({ devices, active, send }: DeviceManagerProps) => JSX.Element;
10
- //# sourceMappingURL=DeviceManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeviceManager.d.ts","sourceRoot":"","sources":["../../../../../../src/panels/IdentityPanel/steps/DeviceManager.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAExD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAItD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC;IAC9E,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,CAAC;IAC5D,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,8BAA+B,kBAAkB,gBAqB1E,CAAC"}
@@ -1,23 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2023 DXOS.org
4
- //
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.DeviceManager = void 0;
10
- const react_1 = __importDefault(require("react"));
11
- const react_ui_1 = require("@dxos/react-ui");
12
- const components_1 = require("../../../components");
13
- const DeviceManager = ({ devices, active, send }) => {
14
- const { t } = (0, react_ui_1.useTranslation)('os');
15
- const disabled = !active;
16
- return (react_1.default.createElement(react_1.default.Fragment, null,
17
- react_1.default.createElement("div", { role: 'none', className: 'grow' },
18
- react_1.default.createElement(components_1.DeviceList, { devices: devices })),
19
- react_1.default.createElement(components_1.Actions, null,
20
- react_1.default.createElement(components_1.Action, { variant: 'ghost', disabled: disabled, onClick: () => send === null || send === void 0 ? void 0 : send({ type: 'unchooseAction' }), "data-testid": 'manage-devices-back' }, t('back label')))));
21
- };
22
- exports.DeviceManager = DeviceManager;
23
- //# sourceMappingURL=DeviceManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeviceManager.js","sourceRoot":"","sources":["../../../../../../src/panels/IdentityPanel/steps/DeviceManager.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,kDAA0B;AAI1B,6CAAgD;AAEhD,oDAAkE;AAS3D,MAAM,aAAa,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAsB,EAAE,EAAE;IAC7E,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC;IAEzB,OAAO,CACL;QACE,uCAAK,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM;YAC/B,8BAAC,uBAAU,IAAC,OAAO,EAAE,OAAO,GAAI,CAC5B;QACN,8BAAC,oBAAO;YACN,8BAAC,mBAAM,IACL,OAAO,EAAC,OAAO,EACf,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,iBACpC,qBAAqB,IAEjC,CAAC,CAAC,YAAY,CAAC,CACT,CACD,CACT,CACJ,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,aAAa,iBAqBxB"}
@@ -1,16 +0,0 @@
1
- import { type Event, type SingleOrArray } from 'xstate';
2
- import { type IdentityPanelStepProps } from '../IdentityPanelProps';
3
- import { type IdentityEvent } from '../identityMachine';
4
- export interface SignOutChooserProps extends Omit<IdentityPanelStepProps, 'send'> {
5
- send?: (event: SingleOrArray<Event<IdentityEvent>>) => void;
6
- onResetDevice?: () => Promise<void>;
7
- onJoinNewIdentity?: () => void;
8
- }
9
- export declare const SignOutChooser: (props: SignOutChooserProps) => JSX.Element;
10
- export type SignOutChooserImplProps = {
11
- disabled?: boolean;
12
- onResetDevice?: () => void;
13
- onJoinNewIdentity?: () => void;
14
- onBack?: () => void;
15
- };
16
- //# sourceMappingURL=SignOutChooser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SignOutChooser.d.ts","sourceRoot":"","sources":["../../../../../../src/panels/IdentityPanel/steps/SignOutChooser.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAMxD,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC;IAC/E,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,cAAc,UAAW,mBAAmB,gBAexD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC"}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2023 DXOS.org
4
- //
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.SignOutChooser = void 0;
10
- const react_1 = require("@phosphor-icons/react");
11
- const react_2 = __importDefault(require("react"));
12
- const react_ui_1 = require("@dxos/react-ui");
13
- const react_ui_theme_1 = require("@dxos/react-ui-theme");
14
- const components_1 = require("../../../components");
15
- const SignOutChooser = (props) => {
16
- const { t } = (0, react_ui_1.useTranslation)('os');
17
- const onResetDevice = () => {
18
- var _a;
19
- if (window.confirm(t('reset device confirm message'))) {
20
- void ((_a = props.onResetDevice) === null || _a === void 0 ? void 0 : _a.call(props));
21
- }
22
- };
23
- return (react_2.default.createElement(SignOutChooserImpl, { disabled: !props.active, onBack: () => { var _a; return (_a = props.send) === null || _a === void 0 ? void 0 : _a.call(props, { type: 'unchooseAction' }); }, onResetDevice: onResetDevice, onJoinNewIdentity: props.onJoinNewIdentity }));
24
- };
25
- exports.SignOutChooser = SignOutChooser;
26
- const SignOutChooserImpl = ({ disabled, onResetDevice, onJoinNewIdentity, onBack }) => {
27
- const { t } = (0, react_ui_1.useTranslation)('os');
28
- return (react_2.default.createElement(react_2.default.Fragment, null,
29
- react_2.default.createElement("div", { role: 'none', className: 'grow flex flex-col justify-center' },
30
- react_2.default.createElement(react_ui_1.Message.Root, { valence: 'error' },
31
- react_2.default.createElement(react_ui_1.Message.Title, null,
32
- react_2.default.createElement(react_1.Warning, { className: (0, react_ui_theme_1.mx)((0, react_ui_theme_1.getSize)(6), 'inline mie-2') }),
33
- t('sign out chooser title')),
34
- react_2.default.createElement(react_ui_1.Message.Body, null, t('sign out chooser message')))),
35
- react_2.default.createElement(components_1.Actions, null,
36
- react_2.default.createElement(components_1.Action, { disabled: disabled, onClick: onBack }, t('back label')),
37
- react_2.default.createElement(components_1.Action, { variant: 'primary', "data-testid": 'sign-out.join-new-identity', classNames: '!bg-error-500 hover:!bg-error-550', disabled: disabled, onClick: onJoinNewIdentity }, t('join new identity label')),
38
- react_2.default.createElement(components_1.Action, { variant: 'primary', "data-testid": 'sign-out.reset-device', classNames: '!bg-error-500 hover:!bg-error-550', disabled: disabled, onClick: onResetDevice }, t('reset device label')))));
39
- };
40
- //# sourceMappingURL=SignOutChooser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SignOutChooser.js","sourceRoot":"","sources":["../../../../../../src/panels/IdentityPanel/steps/SignOutChooser.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,iDAAgD;AAChD,kDAA0B;AAG1B,6CAAyD;AACzD,yDAAmD;AAEnD,oDAAsD;AAU/C,MAAM,cAAc,GAAG,CAAC,KAA0B,EAAE,EAAE;IAC3D,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,GAAG,EAAE;;QACzB,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,EAAE;YACrD,KAAK,CAAA,MAAA,KAAK,CAAC,aAAa,qDAAI,CAAA,CAAC;SAC9B;IACH,CAAC,CAAC;IACF,OAAO,CACL,8BAAC,kBAAkB,IACjB,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,EACvB,MAAM,EAAE,GAAG,EAAE,WAAC,OAAA,MAAA,KAAK,CAAC,IAAI,sDAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAA,EAAA,EACtD,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,GAC1C,CACH,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,cAAc,kBAezB;AASF,MAAM,kBAAkB,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,EAA2B,EAAE,EAAE;IAC7G,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IACnC,OAAO,CACL;QACE,uCAAK,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,mCAAmC;YAC5D,8BAAC,kBAAO,CAAC,IAAI,IAAC,OAAO,EAAC,OAAO;gBAC3B,8BAAC,kBAAO,CAAC,KAAK;oBACZ,8BAAC,eAAO,IAAC,SAAS,EAAE,IAAA,mBAAE,EAAC,IAAA,wBAAO,EAAC,CAAC,CAAC,EAAE,cAAc,CAAC,GAAI;oBACrD,CAAC,CAAC,wBAAwB,CAAC,CACd;gBAChB,8BAAC,kBAAO,CAAC,IAAI,QAAE,CAAC,CAAC,0BAA0B,CAAC,CAAgB,CAC/C,CACX;QACN,8BAAC,oBAAO;YACN,8BAAC,mBAAM,IAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IACxC,CAAC,CAAC,YAAY,CAAC,CACT;YACT,8BAAC,mBAAM,IACL,OAAO,EAAC,SAAS,iBACL,4BAA4B,EACxC,UAAU,EAAC,mCAAmC,EAC9C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,iBAAiB,IAEzB,CAAC,CAAC,yBAAyB,CAAC,CACtB;YACT,8BAAC,mBAAM,IACL,OAAO,EAAC,SAAS,iBACL,uBAAuB,EACnC,UAAU,EAAC,mCAAmC,EAC9C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,aAAa,IAErB,CAAC,CAAC,oBAAoB,CAAC,CACjB,CACD,CACT,CACJ,CAAC;AACJ,CAAC,CAAC"}
@@ -1,13 +0,0 @@
1
- import { type JoinStepProps } from '../JoinPanelProps';
2
- export type ResetIdentityProps = JoinStepProps & {
3
- method: 'reset identity';
4
- };
5
- export type ResetIdentityImplProps = {
6
- disabled?: boolean;
7
- pending?: boolean;
8
- validationMessage?: string;
9
- onConfirm?: () => void;
10
- };
11
- export declare const ResetIdentity: ({ send, active }: ResetIdentityProps) => JSX.Element;
12
- export declare const ResetIdentityImpl: ({ disabled, pending, validationMessage, onConfirm }: ResetIdentityImplProps) => JSX.Element;
13
- //# sourceMappingURL=ResetIdentity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResetIdentity.d.ts","sourceRoot":"","sources":["../../../../../../src/panels/JoinPanel/steps/ResetIdentity.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,MAAM,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,aAAa,qBAAsB,kBAAkB,gBAwBjE,CAAC;AAEF,eAAO,MAAM,iBAAiB,wDAAyD,sBAAsB,gBA6B5G,CAAC"}
@@ -1,66 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2023 DXOS.org
4
- //
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod;
23
- var result = {};
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
- __setModuleDefault(result, mod);
26
- return result;
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.ResetIdentityImpl = exports.ResetIdentity = void 0;
30
- const react_1 = __importStar(require("react"));
31
- const log_1 = require("@dxos/log");
32
- const react_client_1 = require("@dxos/react-client");
33
- const react_ui_1 = require("@dxos/react-ui");
34
- const components_1 = require("../../../components");
35
- const ResetIdentity = ({ send, active }) => {
36
- const client = (0, react_client_1.useClient)();
37
- const { t } = (0, react_ui_1.useTranslation)('os');
38
- const [validationMessage, setValidationMessage] = (0, react_1.useState)('');
39
- const [pending, setPending] = (0, react_1.useState)(false);
40
- const resetIdentity = () => {
41
- setPending(true);
42
- void client.reset().then(() => send === null || send === void 0 ? void 0 : send({ type: 'resetIdentity' }), (error) => {
43
- log_1.log.catch(error);
44
- setValidationMessage(t('failed to reset identity message'));
45
- setPending(false);
46
- });
47
- };
48
- return (react_1.default.createElement(exports.ResetIdentityImpl, { disabled: !active, pending: pending, validationMessage: validationMessage, onConfirm: () => resetIdentity() }));
49
- };
50
- exports.ResetIdentity = ResetIdentity;
51
- const ResetIdentityImpl = ({ disabled, pending, validationMessage, onConfirm }) => {
52
- const { t } = (0, react_ui_1.useTranslation)('os');
53
- const confirmationValue = t('confirmation value');
54
- const [inputValue, setInputValue] = (0, react_1.useState)('');
55
- return (react_1.default.createElement(react_1.default.Fragment, null,
56
- react_1.default.createElement("div", { role: 'none', className: 'grow flex flex-col justify-center' },
57
- react_1.default.createElement(components_1.Input, { validationMessage, label: react_1.default.createElement(components_1.StepHeading, null, t('reset identity input label', { confirmationValue })), disabled: disabled, "data-testid": 'reset-identity-input', placeholder: confirmationValue, onChange: ({ target: { value } }) => setInputValue(value) })),
58
- react_1.default.createElement(components_1.Actions, null,
59
- react_1.default.createElement(components_1.Action
60
- // TODO(wittjosiah): Probably make this red?
61
- , {
62
- // TODO(wittjosiah): Probably make this red?
63
- variant: 'primary', disabled: disabled || pending || inputValue !== confirmationValue, onClick: () => onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(), "data-testid": 'reset-identity-input-confirm' }, pending ? t('reset in progress label') : t('confirm label')))));
64
- };
65
- exports.ResetIdentityImpl = ResetIdentityImpl;
66
- //# sourceMappingURL=ResetIdentity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResetIdentity.js","sourceRoot":"","sources":["../../../../../../src/panels/JoinPanel/steps/ResetIdentity.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,+CAAwC;AAExC,mCAAgC;AAChC,qDAA+C;AAC/C,6CAAgD;AAEhD,oDAA0E;AAcnE,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAsB,EAAE,EAAE;IACpE,MAAM,MAAM,GAAG,IAAA,wBAAS,GAAE,CAAC;IAC3B,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CACtB,GAAG,EAAE,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EACvC,CAAC,KAAK,EAAE,EAAE;YACR,SAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjB,oBAAoB,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC;YAC5D,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,CACL,8BAAC,yBAAiB,IAChB,QAAQ,EAAE,CAAC,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,GAChC,CACH,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,aAAa,iBAwBxB;AAEK,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAA0B,EAAE,EAAE;IAC/G,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,iBAAiB,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAClD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IACjD,OAAO,CACL;QACE,uCAAK,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,mCAAmC;YAC5D,8BAAC,kBAAK,IACE,iBAAiB,EACvB,KAAK,EAAE,8BAAC,wBAAW,QAAE,CAAC,CAAC,4BAA4B,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAe,EAC1F,QAAQ,EAAE,QAAQ,iBACN,sBAAsB,EAClC,WAAW,EAAE,iBAAiB,EAC9B,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GACzD,CACE;QACN,8BAAC,oBAAO;YACN,8BAAC,mBAAM;YACL,4CAA4C;;gBAA5C,4CAA4C;gBAC5C,OAAO,EAAC,SAAS,EACjB,QAAQ,EAAE,QAAQ,IAAI,OAAO,IAAI,UAAU,KAAK,iBAAiB,EACjE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,EAAI,iBAChB,8BAA8B,IAEzC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CACrD,CACD,CACT,CACJ,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,iBAAiB,qBA6B5B"}