@dxos/plugin-thread 0.8.2-main.5885341 → 0.8.2-main.600d381

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 (135) hide show
  1. package/dist/lib/browser/{ChatContainer-WC6KQDDU.mjs → ChatContainer-H4XTHM3A.mjs} +5 -5
  2. package/dist/lib/browser/ChatContainer-H4XTHM3A.mjs.map +7 -0
  3. package/dist/lib/browser/{app-graph-builder-6W4UKJDI.mjs → app-graph-builder-SQD3KQKB.mjs} +2 -2
  4. package/dist/lib/browser/app-graph-builder-SQD3KQKB.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-AYNXYEKP.mjs → chunk-32EIWOAL.mjs} +1 -1
  6. package/dist/lib/browser/{chunk-AYNXYEKP.mjs.map → chunk-32EIWOAL.mjs.map} +2 -2
  7. package/dist/lib/browser/chunk-AM4MYXGU.mjs +93 -0
  8. package/dist/lib/browser/chunk-AM4MYXGU.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-FY5OCUP6.mjs → chunk-I3JK6CBS.mjs} +9 -7
  10. package/dist/lib/browser/chunk-I3JK6CBS.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-UIHVZTER.mjs +17 -0
  12. package/dist/lib/browser/index.mjs +10 -10
  13. package/dist/lib/browser/index.mjs.map +3 -3
  14. package/dist/lib/browser/{intent-resolver-3UW6ROYT.mjs → intent-resolver-EDSAXXNW.mjs} +4 -4
  15. package/dist/lib/browser/intent-resolver-EDSAXXNW.mjs.map +7 -0
  16. package/dist/lib/browser/{markdown-7KXBXCUS.mjs → markdown-M4QAJXHG.mjs} +2 -2
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/{react-surface-F2AIYIUH.mjs → react-surface-JRPJOEQ7.mjs} +19 -20
  19. package/dist/lib/browser/react-surface-JRPJOEQ7.mjs.map +7 -0
  20. package/dist/lib/browser/{settings-2VZ7S4SK.mjs → settings-SSYDISA6.mjs} +2 -2
  21. package/dist/lib/browser/types.mjs +1 -1
  22. package/dist/lib/node/{ChatContainer-LVYQ67PJ.cjs → ChatContainer-TUISUIY7.cjs} +11 -11
  23. package/dist/lib/node/ChatContainer-TUISUIY7.cjs.map +7 -0
  24. package/dist/lib/node/{app-graph-builder-HZNWT4QU.cjs → app-graph-builder-G45JDZWQ.cjs} +5 -5
  25. package/dist/lib/node/app-graph-builder-G45JDZWQ.cjs.map +7 -0
  26. package/dist/lib/node/{chunk-RIYLEDQ7.cjs → chunk-ETDNE4Z6.cjs} +13 -11
  27. package/dist/lib/node/chunk-ETDNE4Z6.cjs.map +7 -0
  28. package/dist/lib/node/{chunk-46BSFPBV.cjs → chunk-HG7J3YR3.cjs} +44 -44
  29. package/dist/lib/node/chunk-HG7J3YR3.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-W25MBII2.cjs → chunk-NO6WQR36.cjs} +4 -4
  31. package/dist/lib/node/{chunk-W25MBII2.cjs.map → chunk-NO6WQR36.cjs.map} +2 -2
  32. package/dist/lib/node/{chunk-IX63EKGL.cjs → chunk-ZFPSGBXT.cjs} +9 -9
  33. package/dist/lib/node/index.cjs +17 -17
  34. package/dist/lib/node/index.cjs.map +3 -3
  35. package/dist/lib/node/{intent-resolver-DC6HDNTX.cjs → intent-resolver-ECFDZLCG.cjs} +15 -15
  36. package/dist/lib/node/intent-resolver-ECFDZLCG.cjs.map +7 -0
  37. package/dist/lib/node/{markdown-L2WMCQKM.cjs → markdown-G5NDD5EJ.cjs} +7 -7
  38. package/dist/lib/node/meta.json +1 -1
  39. package/dist/lib/node/{react-surface-GP5IH5LN.cjs → react-surface-PLJ3Z77A.cjs} +30 -31
  40. package/dist/lib/node/react-surface-PLJ3Z77A.cjs.map +7 -0
  41. package/dist/lib/node/{settings-7MGTJ46L.cjs → settings-PV6MGI52.cjs} +6 -6
  42. package/dist/lib/node/types.cjs +3 -3
  43. package/dist/lib/node/types.cjs.map +1 -1
  44. package/dist/lib/node-esm/{ChatContainer-WMOPMK5H.mjs → ChatContainer-G7VTTRDN.mjs} +5 -5
  45. package/dist/lib/node-esm/ChatContainer-G7VTTRDN.mjs.map +7 -0
  46. package/dist/lib/node-esm/{app-graph-builder-M3KK5QJH.mjs → app-graph-builder-25K4ELOR.mjs} +2 -2
  47. package/dist/lib/node-esm/app-graph-builder-25K4ELOR.mjs.map +7 -0
  48. package/dist/lib/node-esm/chunk-G7AKHJ3A.mjs +19 -0
  49. package/dist/lib/node-esm/{chunk-T6E5EY7Z.mjs → chunk-IZWN4KAY.mjs} +1 -1
  50. package/dist/lib/node-esm/{chunk-T6E5EY7Z.mjs.map → chunk-IZWN4KAY.mjs.map} +2 -2
  51. package/dist/lib/node-esm/{chunk-7DOPZH6Y.mjs → chunk-V7HLWNAO.mjs} +9 -7
  52. package/dist/lib/node-esm/chunk-V7HLWNAO.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-XTZJQJY4.mjs +94 -0
  54. package/dist/lib/node-esm/chunk-XTZJQJY4.mjs.map +7 -0
  55. package/dist/lib/node-esm/index.mjs +10 -10
  56. package/dist/lib/node-esm/index.mjs.map +3 -3
  57. package/dist/lib/node-esm/{intent-resolver-OAMDKGAA.mjs → intent-resolver-GHN5XIMY.mjs} +4 -4
  58. package/dist/lib/node-esm/intent-resolver-GHN5XIMY.mjs.map +7 -0
  59. package/dist/lib/node-esm/{markdown-ZKU23UVD.mjs → markdown-WMR5AZRI.mjs} +2 -2
  60. package/dist/lib/node-esm/meta.json +1 -1
  61. package/dist/lib/node-esm/{react-surface-45GRKLWG.mjs → react-surface-M5GMRQVC.mjs} +19 -20
  62. package/dist/lib/node-esm/react-surface-M5GMRQVC.mjs.map +7 -0
  63. package/dist/lib/node-esm/{settings-AJAZ3O47.mjs → settings-TJ53GIH3.mjs} +2 -2
  64. package/dist/lib/node-esm/types.mjs +1 -1
  65. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  66. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  68. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  69. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  70. package/dist/types/src/components/CommentContainer.d.ts.map +1 -1
  71. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  72. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  73. package/dist/types/src/components/MessageContainer.d.ts +5 -4
  74. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  75. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  76. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  77. package/dist/types/src/components/testing.d.ts +48 -51
  78. package/dist/types/src/components/testing.d.ts.map +1 -1
  79. package/dist/types/src/components/types.d.ts +2 -2
  80. package/dist/types/src/components/types.d.ts.map +1 -1
  81. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  82. package/dist/types/src/hooks/analytics.d.ts +2 -2
  83. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  84. package/dist/types/src/hooks/useStatus.d.ts.map +1 -1
  85. package/dist/types/src/translations.d.ts +2 -56
  86. package/dist/types/src/translations.d.ts.map +1 -1
  87. package/dist/types/src/types.d.ts +218 -57
  88. package/dist/types/src/types.d.ts.map +1 -1
  89. package/dist/types/src/util.d.ts.map +1 -1
  90. package/dist/types/tsconfig.tsbuildinfo +1 -1
  91. package/package.json +35 -33
  92. package/src/ThreadPlugin.tsx +7 -7
  93. package/src/capabilities/app-graph-builder.ts +3 -3
  94. package/src/capabilities/intent-resolver.ts +2 -2
  95. package/src/components/Chat.stories.tsx +3 -3
  96. package/src/components/ChatContainer.tsx +3 -3
  97. package/src/components/CommentContainer.tsx +25 -49
  98. package/src/components/Comments.stories.tsx +3 -7
  99. package/src/components/MessageContainer.tsx +31 -50
  100. package/src/components/testing.ts +2 -2
  101. package/src/components/types.ts +2 -2
  102. package/src/hooks/analytics.ts +6 -2
  103. package/src/translations.ts +2 -2
  104. package/src/types.ts +40 -40
  105. package/dist/lib/browser/ChatContainer-WC6KQDDU.mjs.map +0 -7
  106. package/dist/lib/browser/app-graph-builder-6W4UKJDI.mjs.map +0 -7
  107. package/dist/lib/browser/chunk-FY5OCUP6.mjs.map +0 -7
  108. package/dist/lib/browser/chunk-Q66FBBJD.mjs +0 -17
  109. package/dist/lib/browser/chunk-WOG72DWE.mjs +0 -93
  110. package/dist/lib/browser/chunk-WOG72DWE.mjs.map +0 -7
  111. package/dist/lib/browser/intent-resolver-3UW6ROYT.mjs.map +0 -7
  112. package/dist/lib/browser/react-surface-F2AIYIUH.mjs.map +0 -7
  113. package/dist/lib/node/ChatContainer-LVYQ67PJ.cjs.map +0 -7
  114. package/dist/lib/node/app-graph-builder-HZNWT4QU.cjs.map +0 -7
  115. package/dist/lib/node/chunk-46BSFPBV.cjs.map +0 -7
  116. package/dist/lib/node/chunk-RIYLEDQ7.cjs.map +0 -7
  117. package/dist/lib/node/intent-resolver-DC6HDNTX.cjs.map +0 -7
  118. package/dist/lib/node/react-surface-GP5IH5LN.cjs.map +0 -7
  119. package/dist/lib/node-esm/ChatContainer-WMOPMK5H.mjs.map +0 -7
  120. package/dist/lib/node-esm/app-graph-builder-M3KK5QJH.mjs.map +0 -7
  121. package/dist/lib/node-esm/chunk-7DOPZH6Y.mjs.map +0 -7
  122. package/dist/lib/node-esm/chunk-E446MGLP.mjs +0 -94
  123. package/dist/lib/node-esm/chunk-E446MGLP.mjs.map +0 -7
  124. package/dist/lib/node-esm/chunk-QUTIMZJ4.mjs +0 -19
  125. package/dist/lib/node-esm/intent-resolver-OAMDKGAA.mjs.map +0 -7
  126. package/dist/lib/node-esm/react-surface-45GRKLWG.mjs.map +0 -7
  127. /package/dist/lib/browser/{chunk-Q66FBBJD.mjs.map → chunk-UIHVZTER.mjs.map} +0 -0
  128. /package/dist/lib/browser/{markdown-7KXBXCUS.mjs.map → markdown-M4QAJXHG.mjs.map} +0 -0
  129. /package/dist/lib/browser/{settings-2VZ7S4SK.mjs.map → settings-SSYDISA6.mjs.map} +0 -0
  130. /package/dist/lib/node/{chunk-IX63EKGL.cjs.map → chunk-ZFPSGBXT.cjs.map} +0 -0
  131. /package/dist/lib/node/{markdown-L2WMCQKM.cjs.map → markdown-G5NDD5EJ.cjs.map} +0 -0
  132. /package/dist/lib/node/{settings-7MGTJ46L.cjs.map → settings-PV6MGI52.cjs.map} +0 -0
  133. /package/dist/lib/node-esm/{chunk-QUTIMZJ4.mjs.map → chunk-G7AKHJ3A.mjs.map} +0 -0
  134. /package/dist/lib/node-esm/{markdown-ZKU23UVD.mjs.map → markdown-WMR5AZRI.mjs.map} +0 -0
  135. /package/dist/lib/node-esm/{settings-AJAZ3O47.mjs.map → settings-TJ53GIH3.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":"5.7.3"}
1
+ {"version":"5.8.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-thread",
3
- "version": "0.8.2-main.5885341",
3
+ "version": "0.8.2-main.600d381",
4
4
  "description": "DXOS Threads Surface plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -38,33 +38,34 @@
38
38
  "@codemirror/view": "^6.34.1",
39
39
  "@preact/signals-core": "^1.6.0",
40
40
  "date-fns": "^3.3.1",
41
+ "effect": "3.14.21",
41
42
  "lodash.get": "^4.4.2",
42
- "@dxos/app-framework": "0.8.2-main.5885341",
43
- "@dxos/echo-schema": "0.8.2-main.5885341",
44
- "@dxos/invariant": "0.8.2-main.5885341",
45
- "@dxos/async": "0.8.2-main.5885341",
46
- "@dxos/display-name": "0.8.2-main.5885341",
47
- "@dxos/keys": "0.8.2-main.5885341",
48
- "@dxos/live-object": "0.8.2-main.5885341",
49
- "@dxos/local-storage": "0.8.2-main.5885341",
50
- "@dxos/log": "0.8.2-main.5885341",
51
- "@dxos/plugin-client": "0.8.2-main.5885341",
52
- "@dxos/plugin-graph": "0.8.2-main.5885341",
53
- "@dxos/plugin-attention": "0.8.2-main.5885341",
54
- "@dxos/plugin-deck": "0.8.2-main.5885341",
55
- "@dxos/plugin-markdown": "0.8.2-main.5885341",
56
- "@dxos/plugin-space": "0.8.2-main.5885341",
57
- "@dxos/plugin-observability": "0.8.2-main.5885341",
58
- "@dxos/react-client": "0.8.2-main.5885341",
59
- "@dxos/react-ui-attention": "0.8.2-main.5885341",
60
- "@dxos/react-ui-editor": "0.8.2-main.5885341",
61
- "@dxos/react-ui-menu": "0.8.2-main.5885341",
62
- "@dxos/react-ui-form": "0.8.2-main.5885341",
63
- "@dxos/react-ui-stack": "0.8.2-main.5885341",
64
- "@dxos/react-ui-thread": "0.8.2-main.5885341",
65
- "@dxos/react-ui-tabs": "0.8.2-main.5885341",
66
- "@dxos/schema": "0.8.2-main.5885341",
67
- "@dxos/util": "0.8.2-main.5885341"
43
+ "@dxos/app-framework": "0.8.2-main.600d381",
44
+ "@dxos/async": "0.8.2-main.600d381",
45
+ "@dxos/display-name": "0.8.2-main.600d381",
46
+ "@dxos/echo-schema": "0.8.2-main.600d381",
47
+ "@dxos/keys": "0.8.2-main.600d381",
48
+ "@dxos/invariant": "0.8.2-main.600d381",
49
+ "@dxos/live-object": "0.8.2-main.600d381",
50
+ "@dxos/local-storage": "0.8.2-main.600d381",
51
+ "@dxos/log": "0.8.2-main.600d381",
52
+ "@dxos/plugin-attention": "0.8.2-main.600d381",
53
+ "@dxos/plugin-graph": "0.8.2-main.600d381",
54
+ "@dxos/plugin-observability": "0.8.2-main.600d381",
55
+ "@dxos/plugin-deck": "0.8.2-main.600d381",
56
+ "@dxos/plugin-markdown": "0.8.2-main.600d381",
57
+ "@dxos/react-client": "0.8.2-main.600d381",
58
+ "@dxos/plugin-space": "0.8.2-main.600d381",
59
+ "@dxos/react-ui-attention": "0.8.2-main.600d381",
60
+ "@dxos/plugin-client": "0.8.2-main.600d381",
61
+ "@dxos/react-ui-editor": "0.8.2-main.600d381",
62
+ "@dxos/react-ui-menu": "0.8.2-main.600d381",
63
+ "@dxos/react-ui-stack": "0.8.2-main.600d381",
64
+ "@dxos/react-ui-form": "0.8.2-main.600d381",
65
+ "@dxos/react-ui-tabs": "0.8.2-main.600d381",
66
+ "@dxos/schema": "0.8.2-main.600d381",
67
+ "@dxos/react-ui-thread": "0.8.2-main.600d381",
68
+ "@dxos/util": "0.8.2-main.600d381"
68
69
  },
69
70
  "devDependencies": {
70
71
  "@phosphor-icons/react": "^2.1.5",
@@ -74,17 +75,18 @@
74
75
  "react": "~18.2.0",
75
76
  "react-dom": "~18.2.0",
76
77
  "vite": "5.4.7",
77
- "@dxos/random": "0.8.2-main.5885341",
78
- "@dxos/react-ui": "0.8.2-main.5885341",
79
- "@dxos/react-ui-theme": "0.8.2-main.5885341",
80
- "@dxos/storybook-utils": "0.8.2-main.5885341"
78
+ "@dxos/react-ui": "0.8.2-main.600d381",
79
+ "@dxos/random": "0.8.2-main.600d381",
80
+ "@dxos/react-ui-theme": "0.8.2-main.600d381",
81
+ "@dxos/storybook-utils": "0.8.2-main.600d381"
81
82
  },
82
83
  "peerDependencies": {
83
84
  "@phosphor-icons/react": "^2.1.5",
85
+ "effect": "^3.13.3",
84
86
  "react": "~18.2.0",
85
87
  "react-dom": "~18.2.0",
86
- "@dxos/react-ui": "0.8.2-main.5885341",
87
- "@dxos/react-ui-theme": "0.8.2-main.5885341"
88
+ "@dxos/react-ui": "0.8.2-main.600d381",
89
+ "@dxos/react-ui-theme": "0.8.2-main.600d381"
88
90
  },
89
91
  "publishConfig": {
90
92
  "access": "public"
@@ -7,9 +7,9 @@ import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
7
7
  import { MarkdownEvents } from '@dxos/plugin-markdown';
8
8
  import { SpaceCapabilities, ThreadEvents } from '@dxos/plugin-space';
9
9
  import { ChannelType, defineObjectForm, ThreadType } from '@dxos/plugin-space/types';
10
- import { type ReactiveEchoObject, RefArray } from '@dxos/react-client/echo';
10
+ import { type AnyLiveObject, RefArray } from '@dxos/react-client/echo';
11
11
  import { translations as threadTranslations } from '@dxos/react-ui-thread';
12
- import { MessageType, MessageTypeV1, MessageTypeV1ToV2 } from '@dxos/schema';
12
+ import { DataType } from '@dxos/schema';
13
13
 
14
14
  import { AppGraphBuilder, IntentResolver, Markdown, ReactSurface, ThreadState } from './capabilities';
15
15
  import { ThreadEvents as LocalThreadEvents } from './events';
@@ -58,16 +58,16 @@ export const ThreadPlugin = () =>
58
58
  },
59
59
  }),
60
60
  contributes(Capabilities.Metadata, {
61
- id: MessageType.typename,
61
+ id: DataType.Message.typename,
62
62
  metadata: {
63
63
  // TODO(wittjosiah): Move out of metadata.
64
- loadReferences: (message: MessageType) => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),
64
+ loadReferences: (message: DataType.Message) => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),
65
65
  },
66
66
  }),
67
67
  contributes(Capabilities.Metadata, {
68
68
  id: THREAD_ITEM,
69
69
  metadata: {
70
- parse: (item: ReactiveEchoObject<any>, type: string) => {
70
+ parse: (item: AnyLiveObject<any>, type: string) => {
71
71
  switch (type) {
72
72
  case 'node':
73
73
  return { id: item.id, label: item.title, data: item };
@@ -96,12 +96,12 @@ export const ThreadPlugin = () =>
96
96
  defineModule({
97
97
  id: `${meta.id}/module/schema`,
98
98
  activatesOn: ClientEvents.SetupSchema,
99
- activate: () => contributes(ClientCapabilities.Schema, [ThreadType, MessageType, MessageTypeV1]),
99
+ activate: () => contributes(ClientCapabilities.Schema, [ThreadType, DataType.Message, DataType.MessageV1]),
100
100
  }),
101
101
  defineModule({
102
102
  id: `${meta.id}/module/migration`,
103
103
  activatesOn: ClientEvents.SetupMigration,
104
- activate: () => contributes(ClientCapabilities.Migration, [MessageTypeV1ToV2]),
104
+ activate: () => contributes(ClientCapabilities.Migration, [DataType.MessageV1ToV2]),
105
105
  }),
106
106
  defineModule({
107
107
  id: `${meta.id}/module/markdown`,
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';
6
- import { type ReactiveEchoObject } from '@dxos/client/echo';
6
+ import { type AnyLiveObject } from '@dxos/client/echo';
7
7
  import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';
8
8
  import { createExtension, type Node } from '@dxos/plugin-graph';
9
9
 
@@ -14,8 +14,8 @@ export default (context: PluginsContext) =>
14
14
  createExtension({
15
15
  id: `${meta.id}/comments`,
16
16
  // TODO(wittjosiah): Support comments on any object.
17
- // filter: (node): node is Node<ReactiveEchoObject<any>> => isEchoObject(node.data),
18
- filter: (node): node is Node<ReactiveEchoObject<any>> =>
17
+ // filter: (node): node is Node<AnyLiveObject<any>> => isEchoObject(node.data),
18
+ filter: (node): node is Node<AnyLiveObject<any>> =>
19
19
  !!node.data && typeof node.data === 'object' && 'threads' in node.data && Array.isArray(node.data.threads),
20
20
  connector: ({ node }) => [
21
21
  {
@@ -12,7 +12,7 @@ import { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';
12
12
  import { ObservabilityAction } from '@dxos/plugin-observability/types';
13
13
  import { ChannelType, ThreadType } from '@dxos/plugin-space/types';
14
14
  import { live, fullyQualifiedId, getSpace, makeRef } from '@dxos/react-client/echo';
15
- import { MessageType } from '@dxos/schema';
15
+ import { DataType } from '@dxos/schema';
16
16
 
17
17
  import { ThreadCapabilities } from './capabilities';
18
18
  import { THREAD_PLUGIN } from '../meta';
@@ -172,7 +172,7 @@ export default (context: PluginsContext) =>
172
172
  invariant(space, 'Space not found');
173
173
  const intents = [];
174
174
 
175
- const message = live(MessageType, {
175
+ const message = live(DataType.Message, {
176
176
  sender,
177
177
  created: new Date().toISOString(),
178
178
  blocks: [{ type: 'text', text }],
@@ -19,7 +19,7 @@ import { live, type Space } from '@dxos/react-client/echo';
19
19
  import { useIdentity } from '@dxos/react-client/halo';
20
20
  import { withClientProvider } from '@dxos/react-client/testing';
21
21
  import { Thread } from '@dxos/react-ui-thread';
22
- import { MessageType } from '@dxos/schema';
22
+ import { DataType } from '@dxos/schema';
23
23
  import { withLayout, withTheme } from '@dxos/storybook-utils';
24
24
 
25
25
  import { ChatContainer } from './ChatContainer';
@@ -80,8 +80,8 @@ const meta: Meta = {
80
80
  ],
81
81
  }),
82
82
  withTheme,
83
- withLayout({ fullscreen: true, tooltips: true }),
84
- withClientProvider({ createSpace: true, types: [ThreadType, MessageType] }),
83
+ withLayout({ fullscreen: true }),
84
+ withClientProvider({ createSpace: true, types: [ThreadType, DataType.Message] }),
85
85
  ],
86
86
  parameters: { translations },
87
87
  };
@@ -14,7 +14,7 @@ import { createBasicExtensions, createThemeExtensions, listener } from '@dxos/re
14
14
  import { StackItem } from '@dxos/react-ui-stack';
15
15
  import { mx } from '@dxos/react-ui-theme';
16
16
  import { MessageTextbox, type MessageTextboxProps, Thread, ThreadFooter, threadLayout } from '@dxos/react-ui-thread';
17
- import { MessageType } from '@dxos/schema';
17
+ import { DataType } from '@dxos/schema';
18
18
 
19
19
  import { MessageContainer } from './MessageContainer';
20
20
  import { command } from './command-extension';
@@ -44,7 +44,7 @@ export const ChatContainer = ({ space, dxn, context, current, autoFocusTextbox }
44
44
  const id = dxn.toString();
45
45
  const identity = useIdentity()!;
46
46
  const members = useMembers(space?.key);
47
- const queue = useQueue<MessageType>(dxn, { pollInterval: 1_000 });
47
+ const queue = useQueue<DataType.Message>(dxn, { pollInterval: 1_000 });
48
48
  const activity = useStatus(space, id);
49
49
  const { t } = useTranslation(THREAD_PLUGIN);
50
50
  // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.
@@ -84,7 +84,7 @@ export const ChatContainer = ({ space, dxn, context, current, autoFocusTextbox }
84
84
  }
85
85
 
86
86
  queue.append([
87
- create(MessageType, {
87
+ create(DataType.Message, {
88
88
  sender: { identityDid: identity.did },
89
89
  created: new Date().toISOString(),
90
90
  blocks: [{ type: 'text', text: messageRef.current }],
@@ -42,25 +42,17 @@ const ToggleResolvedButton = ({
42
42
  const { t } = useTranslation(THREAD_PLUGIN);
43
43
  const label = t(isResolved ? 'mark as unresolved label' : 'mark as resolved label');
44
44
  return (
45
- <Tooltip.Root>
46
- <Tooltip.Trigger asChild>
47
- <Button
48
- variant='ghost'
49
- data-testid='thread.toggle-resolved'
50
- onClick={onResolve}
51
- classNames={[commentControlClassNames, !isResolved && hoverableControlItem]}
52
- >
53
- <span className='sr-only'>{label}</span>
54
- {isResolved ? <CheckCircle className={sizeClass} weight='fill' /> : <CheckCircle className={sizeClass} />}
55
- </Button>
56
- </Tooltip.Trigger>
57
- <Tooltip.Portal>
58
- <Tooltip.Content>
59
- {label}
60
- <Tooltip.Arrow />
61
- </Tooltip.Content>
62
- </Tooltip.Portal>
63
- </Tooltip.Root>
45
+ <Tooltip.Trigger asChild content={label}>
46
+ <Button
47
+ variant='ghost'
48
+ data-testid='thread.toggle-resolved'
49
+ onClick={onResolve}
50
+ classNames={[commentControlClassNames, !isResolved && hoverableControlItem]}
51
+ >
52
+ <span className='sr-only'>{label}</span>
53
+ {isResolved ? <CheckCircle className={sizeClass} weight='fill' /> : <CheckCircle className={sizeClass} />}
54
+ </Button>
55
+ </Tooltip.Trigger>
64
56
  );
65
57
  };
66
58
 
@@ -68,25 +60,17 @@ const DeleteThreadButton = ({ onDelete }: { onDelete: () => void }) => {
68
60
  const { t } = useTranslation(THREAD_PLUGIN);
69
61
  const label = t('delete thread label');
70
62
  return (
71
- <Tooltip.Root>
72
- <Tooltip.Trigger asChild>
73
- <Button
74
- variant='ghost'
75
- data-testid='thread.delete'
76
- onClick={onDelete}
77
- classNames={[commentControlClassNames, hoverableControlItem]}
78
- >
79
- <span className='sr-only'>{label}</span>
80
- <X className={sizeClass} />
81
- </Button>
82
- </Tooltip.Trigger>
83
- <Tooltip.Portal>
84
- <Tooltip.Content classNames='z-30'>
85
- {label}
86
- <Tooltip.Arrow />
87
- </Tooltip.Content>
88
- </Tooltip.Portal>
89
- </Tooltip.Root>
63
+ <Tooltip.Trigger asChild content={label}>
64
+ <Button
65
+ variant='ghost'
66
+ data-testid='thread.delete'
67
+ onClick={onDelete}
68
+ classNames={[commentControlClassNames, hoverableControlItem]}
69
+ >
70
+ <span className='sr-only'>{label}</span>
71
+ <X className={sizeClass} />
72
+ </Button>
73
+ </Tooltip.Trigger>
90
74
  );
91
75
  };
92
76
 
@@ -156,17 +140,9 @@ export const CommentContainer = ({
156
140
  )}
157
141
  >
158
142
  {detached ? (
159
- <Tooltip.Root>
160
- <Tooltip.Trigger asChild>
161
- <ThreadHeading detached>{thread.name}</ThreadHeading>
162
- </Tooltip.Trigger>
163
- <Tooltip.Portal>
164
- <Tooltip.Content classNames='z-30' side='top'>
165
- {t('detached thread label')}
166
- <Tooltip.Arrow />
167
- </Tooltip.Content>
168
- </Tooltip.Portal>
169
- </Tooltip.Root>
143
+ <Tooltip.Trigger asChild content={t('detached thread label')} side='top'>
144
+ <ThreadHeading detached>{thread.name}</ThreadHeading>
145
+ </Tooltip.Trigger>
170
146
  ) : (
171
147
  <ThreadHeading>{thread.name}</ThreadHeading>
172
148
  )}
@@ -14,7 +14,7 @@ import { faker } from '@dxos/random';
14
14
  import { Filter, fullyQualifiedId, useQuery, useSpace } from '@dxos/react-client/echo';
15
15
  import { useIdentity } from '@dxos/react-client/halo';
16
16
  import { type ClientRepeatedComponentProps, ClientRepeater } from '@dxos/react-client/testing';
17
- import { MessageType } from '@dxos/schema';
17
+ import { DataType } from '@dxos/schema';
18
18
  import { withLayout, withTheme } from '@dxos/storybook-utils';
19
19
 
20
20
  import { CommentsContainer } from './CommentsContainer';
@@ -59,12 +59,8 @@ export const Default = {};
59
59
  const meta: Meta = {
60
60
  title: 'plugins/plugin-thread/Comments',
61
61
  // TODO(wittjosiah): Use decorator.
62
- render: () => <ClientRepeater component={Story} createIdentity createSpace types={[ThreadType, MessageType]} />,
63
- decorators: [
64
- withTheme,
65
- withLayout({ fullscreen: true, tooltips: true }),
66
- withPluginManager({ plugins: [IntentPlugin()] }),
67
- ],
62
+ render: () => <ClientRepeater component={Story} createIdentity createSpace types={[ThreadType, DataType.Message]} />,
63
+ decorators: [withTheme, withLayout({ fullscreen: true }), withPluginManager({ plugins: [IntentPlugin()] })],
68
64
  parameters: { translations },
69
65
  };
70
66
 
@@ -9,7 +9,7 @@ import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'rea
9
9
  import { Surface } from '@dxos/app-framework';
10
10
  import { RefArray } from '@dxos/live-object';
11
11
  import { PublicKey } from '@dxos/react-client';
12
- import { type ReactiveEchoObject, type Expando, type SpaceMember } from '@dxos/react-client/echo';
12
+ import { type AnyLiveObject, type Expando, type SpaceMember } from '@dxos/react-client/echo';
13
13
  import { useIdentity, type Identity } from '@dxos/react-client/halo';
14
14
  import { Button, ButtonGroup, Tooltip, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';
15
15
  import { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';
@@ -21,7 +21,7 @@ import {
21
21
  mx,
22
22
  } from '@dxos/react-ui-theme';
23
23
  import { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';
24
- import { type TextContentBlock, type MessageType } from '@dxos/schema';
24
+ import { type DataType } from '@dxos/schema';
25
25
 
26
26
  import { command } from './command-extension';
27
27
  import { useOnEditAnalytics } from '../hooks';
@@ -31,17 +31,14 @@ import { getMessageMetadata } from '../util';
31
31
  // TODO(thure): #8149
32
32
  const messageControlClassNames = ['!p-1 !min-bs-0 transition-opacity', hoverableControlItem];
33
33
 
34
- export const MessageContainer = ({
35
- message,
36
- members,
37
- editable = false,
38
- onDelete,
39
- }: {
40
- message: MessageType;
34
+ export type MessageContainerProps = {
35
+ message: DataType.Message;
41
36
  members: SpaceMember[];
42
37
  editable?: boolean;
43
38
  onDelete?: (id: string) => void;
44
- }) => {
39
+ };
40
+
41
+ export const MessageContainer = ({ message, members, editable = false, onDelete }: MessageContainerProps) => {
45
42
  const senderIdentity = members.find(
46
43
  (member) =>
47
44
  (message.sender.identityDid && member.identity.did === message.sender.identityDid) ||
@@ -64,46 +61,30 @@ export const MessageContainer = ({
64
61
  <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>
65
62
  <ButtonGroup classNames='mie-1'>
66
63
  {userIsAuthor && editable && (
67
- <Tooltip.Root>
68
- <Tooltip.Trigger asChild>
69
- <Button
70
- variant='ghost'
71
- data-testid={editing ? 'thread.message.save' : 'thread.message.edit'}
72
- classNames={messageControlClassNames}
73
- onClick={() => setEditing((editing) => !editing)}
74
- >
75
- <span className='sr-only'>{editLabel}</span>
76
- {editing ? <Check className={getSize(4)} /> : <PencilSimple className={getSize(4)} />}
77
- </Button>
78
- </Tooltip.Trigger>
79
- <Tooltip.Portal>
80
- <Tooltip.Content>
81
- {editLabel}
82
- <Tooltip.Arrow />
83
- </Tooltip.Content>
84
- </Tooltip.Portal>
85
- </Tooltip.Root>
64
+ <Tooltip.Trigger asChild content={editLabel}>
65
+ <Button
66
+ variant='ghost'
67
+ data-testid={editing ? 'thread.message.save' : 'thread.message.edit'}
68
+ classNames={messageControlClassNames}
69
+ onClick={() => setEditing((editing) => !editing)}
70
+ >
71
+ <span className='sr-only'>{editLabel}</span>
72
+ {editing ? <Check className={getSize(4)} /> : <PencilSimple className={getSize(4)} />}
73
+ </Button>
74
+ </Tooltip.Trigger>
86
75
  )}
87
76
  {onDelete && (
88
- <Tooltip.Root>
89
- <Tooltip.Trigger asChild>
90
- <Button
91
- variant='ghost'
92
- data-testid='thread.message.delete'
93
- classNames={messageControlClassNames}
94
- onClick={() => handleDelete()}
95
- >
96
- <span className='sr-only'>{deleteLabel}</span>
97
- <X className={getSize(4)} />
98
- </Button>
99
- </Tooltip.Trigger>
100
- <Tooltip.Portal>
101
- <Tooltip.Content>
102
- {deleteLabel}
103
- <Tooltip.Arrow />
104
- </Tooltip.Content>
105
- </Tooltip.Portal>
106
- </Tooltip.Root>
77
+ <Tooltip.Trigger asChild content={deleteLabel}>
78
+ <Button
79
+ variant='ghost'
80
+ data-testid='thread.message.delete'
81
+ classNames={messageControlClassNames}
82
+ onClick={() => handleDelete()}
83
+ >
84
+ <span className='sr-only'>{deleteLabel}</span>
85
+ <X className={getSize(4)} />
86
+ </Button>
87
+ </Tooltip.Trigger>
107
88
  )}
108
89
  </ButtonGroup>
109
90
  </MessageHeading>
@@ -124,7 +105,7 @@ const TextboxBlock = ({
124
105
  isAuthor,
125
106
  editing,
126
107
  }: {
127
- block: TextContentBlock;
108
+ block: DataType.MessageBlock.Text;
128
109
  editing?: boolean;
129
110
  isAuthor?: boolean;
130
111
  identity?: Identity;
@@ -166,7 +147,7 @@ const TextboxBlock = ({
166
147
  return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;
167
148
  };
168
149
 
169
- const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: ReactiveEchoObject<any> }>(
150
+ const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: AnyLiveObject<any> }>(
170
151
  ({ subject }, forwardedRef) => {
171
152
  let title = subject.name ?? subject.title ?? subject.type ?? 'Object';
172
153
  if (typeof title !== 'string') {
@@ -7,14 +7,14 @@ import { live, makeRef } from '@dxos/live-object';
7
7
  import { ThreadType } from '@dxos/plugin-space/types';
8
8
  import { faker } from '@dxos/random';
9
9
  import { type Identity } from '@dxos/react-client/halo';
10
- import { MessageType } from '@dxos/schema';
10
+ import { DataType } from '@dxos/schema';
11
11
 
12
12
  export const createCommentThread = (identity: Identity) => {
13
13
  return live(ThreadType, {
14
14
  messages: faker.helpers.multiple(
15
15
  () =>
16
16
  makeRef(
17
- live(MessageType, {
17
+ live(DataType.Message, {
18
18
  sender: {
19
19
  identityDid: faker.datatype.boolean() ? identity.did : IdentityDid.random(),
20
20
  },
@@ -2,7 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { type ReactiveEchoObject } from '@dxos/client/echo';
5
+ import { type AnyLiveObject } from '@dxos/client/echo';
6
6
  import { type ThreadType } from '@dxos/plugin-space/types';
7
7
  import { type ThreadProps } from '@dxos/react-ui-thread';
8
8
 
@@ -20,7 +20,7 @@ import { type ThreadProps } from '@dxos/react-ui-thread';
20
20
  */
21
21
  export type ThreadContainerProps = {
22
22
  thread: ThreadType;
23
- context?: ReactiveEchoObject<any>;
23
+ context?: AnyLiveObject<any>;
24
24
  autoFocusTextbox?: boolean;
25
25
  onTextboxFocus?: () => void;
26
26
  detached?: boolean;
@@ -9,9 +9,13 @@ import { type Live } from '@dxos/live-object';
9
9
  import { ObservabilityAction } from '@dxos/plugin-observability/types';
10
10
  import { getSpace } from '@dxos/react-client/echo';
11
11
  import { useOnTransition } from '@dxos/react-ui';
12
- import { type TextContentBlock } from '@dxos/schema';
12
+ import { type DataType } from '@dxos/schema';
13
13
 
14
- export const useOnEditAnalytics = (message: Live<any>, textBlock: TextContentBlock | undefined, editing: boolean) => {
14
+ export const useOnEditAnalytics = (
15
+ message: Live<any>,
16
+ textBlock: DataType.MessageBlock.Text | undefined,
17
+ editing: boolean,
18
+ ) => {
15
19
  const { dispatchPromise: dispatch } = useIntentDispatcher();
16
20
 
17
21
  const onEdit = useCallback(() => {
@@ -27,9 +27,9 @@ export default [
27
27
  'comments heading': 'Comments',
28
28
  'chat heading': 'Chat',
29
29
  'draft button': 'DRAFT',
30
- 'no comments title': 'No comments (yet)',
30
+ 'no comments title': 'Comments',
31
31
  'no comments message':
32
- 'To start a comment thread, select a range of text in a document and click the <commentIcon></commentIcon> Create comment button in the toolbar.',
32
+ 'Click on the <commentIcon></commentIcon> button in the document toolbar to create a comment thread on the selected text.',
33
33
  'toggle show resolved': 'Show resolved',
34
34
  'unnamed object threads label': 'Threads',
35
35
  'mark as resolved label': 'Mark as resolved',