@dxos/plugin-thread 0.7.5-labs.c0e040f → 0.7.5-labs.d199c0f

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 (105) hide show
  1. package/dist/lib/browser/chunk-VOMIDDNO.mjs +15 -0
  2. package/dist/lib/browser/chunk-VOMIDDNO.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-NO5AZLUZ.mjs → chunk-YK3ICB7G.mjs} +2 -4
  4. package/dist/lib/browser/{chunk-NO5AZLUZ.mjs.map → chunk-YK3ICB7G.mjs.map} +3 -3
  5. package/dist/lib/browser/index.mjs +43 -45
  6. package/dist/lib/browser/index.mjs.map +3 -3
  7. package/dist/lib/browser/{intent-resolver-QFP6L3AF.mjs → intent-resolver-FAFQ54NP.mjs} +4 -4
  8. package/dist/lib/browser/{intent-resolver-QFP6L3AF.mjs.map → intent-resolver-FAFQ54NP.mjs.map} +1 -1
  9. package/dist/lib/browser/{markdown-2NBXKXCY.mjs → markdown-RPYOUBVR.mjs} +4 -4
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/{react-surface-YDKOPRQP.mjs → react-surface-Y4MUSICN.mjs} +36 -27
  12. package/dist/lib/browser/react-surface-Y4MUSICN.mjs.map +7 -0
  13. package/dist/lib/browser/{settings-TKOPRXSU.mjs → settings-WQTE5AEZ.mjs} +2 -2
  14. package/dist/lib/browser/types.mjs +1 -1
  15. package/dist/lib/node/{chunk-ZJTWNCFQ.cjs → chunk-BHFHFTHO.cjs} +8 -13
  16. package/dist/lib/node/chunk-BHFHFTHO.cjs.map +7 -0
  17. package/dist/lib/node/{chunk-AUVKOX5Q.cjs → chunk-CMEMMYDL.cjs} +5 -7
  18. package/dist/lib/node/{chunk-AUVKOX5Q.cjs.map → chunk-CMEMMYDL.cjs.map} +3 -3
  19. package/dist/lib/node/index.cjs +44 -44
  20. package/dist/lib/node/index.cjs.map +3 -3
  21. package/dist/lib/node/{intent-resolver-ZSOQILPJ.cjs → intent-resolver-DVBEXJ33.cjs} +13 -13
  22. package/dist/lib/node/{intent-resolver-ZSOQILPJ.cjs.map → intent-resolver-DVBEXJ33.cjs.map} +1 -1
  23. package/dist/lib/node/{markdown-FWRKMSKV.cjs → markdown-ELRGISXE.cjs} +7 -7
  24. package/dist/lib/node/meta.json +1 -1
  25. package/dist/lib/node/{react-surface-AX644GMQ.cjs → react-surface-7HLTN5XS.cjs} +40 -31
  26. package/dist/lib/node/react-surface-7HLTN5XS.cjs.map +7 -0
  27. package/dist/lib/node/{settings-TH4YSUVU.cjs → settings-7VQYARM5.cjs} +6 -6
  28. package/dist/lib/node/types.cjs +3 -3
  29. package/dist/lib/node/types.cjs.map +1 -1
  30. package/dist/lib/node-esm/{chunk-B3CF35MY.mjs → chunk-33NDMQQQ.mjs} +2 -4
  31. package/dist/lib/node-esm/{chunk-B3CF35MY.mjs.map → chunk-33NDMQQQ.mjs.map} +3 -3
  32. package/dist/lib/node-esm/chunk-PJPVEO7E.mjs +17 -0
  33. package/dist/lib/node-esm/chunk-PJPVEO7E.mjs.map +7 -0
  34. package/dist/lib/node-esm/index.mjs +43 -45
  35. package/dist/lib/node-esm/index.mjs.map +3 -3
  36. package/dist/lib/node-esm/{intent-resolver-MHP4C2NZ.mjs → intent-resolver-DHVLBNCC.mjs} +4 -4
  37. package/dist/lib/node-esm/{intent-resolver-MHP4C2NZ.mjs.map → intent-resolver-DHVLBNCC.mjs.map} +1 -1
  38. package/dist/lib/node-esm/{markdown-6AQFDAW3.mjs → markdown-23OB7EZG.mjs} +4 -4
  39. package/dist/lib/node-esm/meta.json +1 -1
  40. package/dist/lib/node-esm/{react-surface-74X2TKEZ.mjs → react-surface-AZHTTR6J.mjs} +36 -27
  41. package/dist/lib/node-esm/react-surface-AZHTTR6J.mjs.map +7 -0
  42. package/dist/lib/node-esm/{settings-KEDRR7RM.mjs → settings-SGMM7UDT.mjs} +2 -2
  43. package/dist/lib/node-esm/types.mjs +1 -1
  44. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  45. package/dist/types/src/capabilities/index.d.ts +2 -179
  46. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  47. package/dist/types/src/capabilities/markdown.d.ts +1 -1
  48. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  49. package/dist/types/src/capabilities/state.d.ts +1 -1
  50. package/dist/types/src/components/ChatContainer.d.ts +2 -3
  51. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  52. package/dist/types/src/components/CommentContainer.d.ts +1 -2
  53. package/dist/types/src/components/CommentContainer.d.ts.map +1 -1
  54. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  55. package/dist/types/src/components/CommentsContainer.d.ts +1 -2
  56. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  57. package/dist/types/src/components/MessageContainer.d.ts +1 -2
  58. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  59. package/dist/types/src/components/ThreadComplementary.d.ts +1 -2
  60. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  61. package/dist/types/src/components/ThreadContainer.d.ts +2 -2
  62. package/dist/types/src/components/ThreadContainer.d.ts.map +1 -1
  63. package/dist/types/src/components/ThreadSettings.d.ts +1 -2
  64. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  65. package/dist/types/src/components/index.d.ts +1 -1
  66. package/dist/types/src/components/index.d.ts.map +1 -1
  67. package/dist/types/src/components/testing.d.ts +12 -12
  68. package/dist/types/src/components/testing.d.ts.map +1 -1
  69. package/dist/types/src/translations.d.ts +6 -3
  70. package/dist/types/src/translations.d.ts.map +1 -1
  71. package/dist/types/src/types.d.ts +5 -7
  72. package/dist/types/src/types.d.ts.map +1 -1
  73. package/package.json +31 -29
  74. package/src/ThreadPlugin.tsx +44 -47
  75. package/src/capabilities/index.ts +0 -1
  76. package/src/capabilities/intent-resolver.ts +1 -1
  77. package/src/capabilities/react-surface.tsx +1 -2
  78. package/src/components/Comments.stories.tsx +8 -2
  79. package/src/components/ThreadComplementary.tsx +32 -2
  80. package/src/components/ThreadSettings.tsx +5 -11
  81. package/src/translations.ts +2 -1
  82. package/src/types.ts +1 -5
  83. package/dist/lib/browser/app-graph-builder-IANFWFYN.mjs +0 -121
  84. package/dist/lib/browser/app-graph-builder-IANFWFYN.mjs.map +0 -7
  85. package/dist/lib/browser/chunk-CQ3NH4RJ.mjs +0 -18
  86. package/dist/lib/browser/chunk-CQ3NH4RJ.mjs.map +0 -7
  87. package/dist/lib/browser/react-surface-YDKOPRQP.mjs.map +0 -7
  88. package/dist/lib/node/app-graph-builder-LFEDPJLK.cjs +0 -135
  89. package/dist/lib/node/app-graph-builder-LFEDPJLK.cjs.map +0 -7
  90. package/dist/lib/node/chunk-ZJTWNCFQ.cjs.map +0 -7
  91. package/dist/lib/node/react-surface-AX644GMQ.cjs.map +0 -7
  92. package/dist/lib/node-esm/app-graph-builder-IXHFRMCY.mjs +0 -122
  93. package/dist/lib/node-esm/app-graph-builder-IXHFRMCY.mjs.map +0 -7
  94. package/dist/lib/node-esm/chunk-4PZTMSVF.mjs +0 -20
  95. package/dist/lib/node-esm/chunk-4PZTMSVF.mjs.map +0 -7
  96. package/dist/lib/node-esm/react-surface-74X2TKEZ.mjs.map +0 -7
  97. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -180
  98. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  99. package/src/capabilities/app-graph-builder.ts +0 -119
  100. /package/dist/lib/browser/{markdown-2NBXKXCY.mjs.map → markdown-RPYOUBVR.mjs.map} +0 -0
  101. /package/dist/lib/browser/{settings-TKOPRXSU.mjs.map → settings-WQTE5AEZ.mjs.map} +0 -0
  102. /package/dist/lib/node/{markdown-FWRKMSKV.cjs.map → markdown-ELRGISXE.cjs.map} +0 -0
  103. /package/dist/lib/node/{settings-TH4YSUVU.cjs.map → settings-7VQYARM5.cjs.map} +0 -0
  104. /package/dist/lib/node-esm/{markdown-6AQFDAW3.mjs.map → markdown-23OB7EZG.mjs.map} +0 -0
  105. /package/dist/lib/node-esm/{settings-KEDRR7RM.mjs.map → settings-SGMM7UDT.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@dxos/plugin-thread",
3
- "version": "0.7.5-labs.c0e040f",
3
+ "version": "0.7.5-labs.d199c0f",
4
4
  "description": "DXOS Threads Surface plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
7
7
  "license": "MIT",
8
8
  "author": "DXOS.org",
9
9
  "sideEffects": true,
10
+ "type": "module",
10
11
  "exports": {
11
12
  ".": {
12
13
  "types": "./dist/types/src/index.d.ts",
@@ -38,28 +39,29 @@
38
39
  "@preact/signals-core": "^1.6.0",
39
40
  "date-fns": "^3.3.1",
40
41
  "lodash.get": "^4.4.2",
41
- "@dxos/app-framework": "0.7.5-labs.c0e040f",
42
- "@dxos/display-name": "0.7.5-labs.c0e040f",
43
- "@dxos/echo-schema": "0.7.5-labs.c0e040f",
44
- "@dxos/async": "0.7.5-labs.c0e040f",
45
- "@dxos/live-object": "0.7.5-labs.c0e040f",
46
- "@dxos/invariant": "0.7.5-labs.c0e040f",
47
- "@dxos/local-storage": "0.7.5-labs.c0e040f",
48
- "@dxos/log": "0.7.5-labs.c0e040f",
49
- "@dxos/plugin-attention": "0.7.5-labs.c0e040f",
50
- "@dxos/plugin-client": "0.7.5-labs.c0e040f",
51
- "@dxos/plugin-deck": "0.7.5-labs.c0e040f",
52
- "@dxos/plugin-graph": "0.7.5-labs.c0e040f",
53
- "@dxos/plugin-observability": "0.7.5-labs.c0e040f",
54
- "@dxos/plugin-markdown": "0.7.5-labs.c0e040f",
55
- "@dxos/plugin-space": "0.7.5-labs.c0e040f",
56
- "@dxos/react-client": "0.7.5-labs.c0e040f",
57
- "@dxos/react-ui-attention": "0.7.5-labs.c0e040f",
58
- "@dxos/react-ui-form": "0.7.5-labs.c0e040f",
59
- "@dxos/react-ui-stack": "0.7.5-labs.c0e040f",
60
- "@dxos/react-ui-thread": "0.7.5-labs.c0e040f",
61
- "@dxos/react-ui-editor": "0.7.5-labs.c0e040f",
62
- "@dxos/util": "0.7.5-labs.c0e040f"
42
+ "@dxos/app-framework": "0.7.5-labs.d199c0f",
43
+ "@dxos/display-name": "0.7.5-labs.d199c0f",
44
+ "@dxos/async": "0.7.5-labs.d199c0f",
45
+ "@dxos/echo-schema": "0.7.5-labs.d199c0f",
46
+ "@dxos/invariant": "0.7.5-labs.d199c0f",
47
+ "@dxos/live-object": "0.7.5-labs.d199c0f",
48
+ "@dxos/local-storage": "0.7.5-labs.d199c0f",
49
+ "@dxos/log": "0.7.5-labs.d199c0f",
50
+ "@dxos/plugin-attention": "0.7.5-labs.d199c0f",
51
+ "@dxos/plugin-client": "0.7.5-labs.d199c0f",
52
+ "@dxos/plugin-markdown": "0.7.5-labs.d199c0f",
53
+ "@dxos/plugin-observability": "0.7.5-labs.d199c0f",
54
+ "@dxos/plugin-deck": "0.7.5-labs.d199c0f",
55
+ "@dxos/plugin-space": "0.7.5-labs.d199c0f",
56
+ "@dxos/react-client": "0.7.5-labs.d199c0f",
57
+ "@dxos/plugin-graph": "0.7.5-labs.d199c0f",
58
+ "@dxos/react-ui-attention": "0.7.5-labs.d199c0f",
59
+ "@dxos/react-ui-editor": "0.7.5-labs.d199c0f",
60
+ "@dxos/react-ui-stack": "0.7.5-labs.d199c0f",
61
+ "@dxos/react-ui-form": "0.7.5-labs.d199c0f",
62
+ "@dxos/react-ui-thread": "0.7.5-labs.d199c0f",
63
+ "@dxos/util": "0.7.5-labs.d199c0f",
64
+ "@dxos/react-ui-tabs": "0.7.5-labs.d199c0f"
63
65
  },
64
66
  "devDependencies": {
65
67
  "@phosphor-icons/react": "^2.1.5",
@@ -69,17 +71,17 @@
69
71
  "react": "~18.2.0",
70
72
  "react-dom": "~18.2.0",
71
73
  "vite": "5.4.7",
72
- "@dxos/random": "0.7.5-labs.c0e040f",
73
- "@dxos/storybook-utils": "0.7.5-labs.c0e040f",
74
- "@dxos/react-ui-theme": "0.7.5-labs.c0e040f",
75
- "@dxos/react-ui": "0.7.5-labs.c0e040f"
74
+ "@dxos/random": "0.7.5-labs.d199c0f",
75
+ "@dxos/react-ui": "0.7.5-labs.d199c0f",
76
+ "@dxos/storybook-utils": "0.7.5-labs.d199c0f",
77
+ "@dxos/react-ui-theme": "0.7.5-labs.d199c0f"
76
78
  },
77
79
  "peerDependencies": {
78
80
  "@phosphor-icons/react": "^2.1.5",
79
81
  "react": "~18.2.0",
80
82
  "react-dom": "~18.2.0",
81
- "@dxos/react-ui": "0.7.5-labs.c0e040f",
82
- "@dxos/react-ui-theme": "0.7.5-labs.c0e040f"
83
+ "@dxos/react-ui-theme": "0.7.5-labs.d199c0f",
84
+ "@dxos/react-ui": "0.7.5-labs.d199c0f"
83
85
  },
84
86
  "publishConfig": {
85
87
  "access": "public"
@@ -2,39 +2,36 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import {
6
- allOf,
7
- Capabilities,
8
- contributes,
9
- createIntent,
10
- defineModule,
11
- definePlugin,
12
- Events,
13
- type PluginsContext,
14
- } from '@dxos/app-framework';
5
+ import { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';
15
6
  import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
16
- import { DeckCapabilities } from '@dxos/plugin-deck';
17
- import { ChannelType, MessageType, ThreadType } from '@dxos/plugin-space/types';
7
+ import { DeckCapabilities, DeckEvents } from '@dxos/plugin-deck';
8
+ import { MarkdownEvents } from '@dxos/plugin-markdown';
9
+ import { SpaceCapabilities, ThreadEvents } from '@dxos/plugin-space';
10
+ import { ChannelType, defineObjectForm, MessageType, ThreadType } from '@dxos/plugin-space/types';
18
11
  import { type ReactiveEchoObject, RefArray } from '@dxos/react-client/echo';
19
12
  import { translations as threadTranslations } from '@dxos/react-ui-thread';
20
13
 
21
- import { AppGraphBuilder, IntentResolver, Markdown, ReactSurface, ThreadSettings, ThreadState } from './capabilities';
14
+ import { IntentResolver, Markdown, ReactSurface, ThreadState } from './capabilities';
22
15
  import { meta, THREAD_ITEM, THREAD_PLUGIN } from './meta';
23
16
  import translations from './translations';
24
- import { ThreadAction, type ThreadSettingsProps } from './types';
17
+ import { ThreadAction } from './types';
25
18
 
26
19
  // TODO(Zan): Every instance of `cursor` should be replaced with `anchor`.
27
20
  // NOTE(burdon): Review/discuss CursorConverter semantics.
28
21
  export const ThreadPlugin = () =>
29
22
  definePlugin(meta, [
30
- defineModule({
31
- id: `${meta.id}/module/settings`,
32
- activatesOn: Events.SetupSettings,
33
- activate: ThreadSettings,
34
- }),
23
+ // TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.
24
+ // defineModule({
25
+ // id: `${meta.id}/module/settings`,
26
+ // activatesOn: Events.SetupSettings,
27
+ // activate: ThreadSettings,
28
+ // }),
35
29
  defineModule({
36
30
  id: `${meta.id}/module/state`,
37
- activatesOn: Events.Startup,
31
+ // TODO(wittjosiah): Does not integrate with settings store.
32
+ // Should this be a different event?
33
+ // Should settings store be renamed to be more generic?
34
+ activatesOn: Events.SetupSettings,
38
35
  activate: ThreadState,
39
36
  }),
40
37
  defineModule({
@@ -49,7 +46,6 @@ export const ThreadPlugin = () =>
49
46
  contributes(Capabilities.Metadata, {
50
47
  id: ChannelType.typename,
51
48
  metadata: {
52
- createObject: (props: { name?: string }) => createIntent(ThreadAction.Create, props),
53
49
  placeholder: ['channel name placeholder', { ns: THREAD_PLUGIN }],
54
50
  icon: 'ph--chat--regular',
55
51
  // TODO(wittjosiah): Move out of metadata.
@@ -88,55 +84,56 @@ export const ThreadPlugin = () =>
88
84
  ],
89
85
  }),
90
86
  defineModule({
91
- id: `${meta.id}/module/schema`,
87
+ id: `${meta.id}/module/object-form`,
92
88
  activatesOn: ClientEvents.SetupSchema,
93
- activate: () => contributes(ClientCapabilities.SystemSchema, [ThreadType, MessageType]),
89
+ activate: () =>
90
+ contributes(
91
+ SpaceCapabilities.ObjectForm,
92
+ defineObjectForm({
93
+ objectSchema: ChannelType,
94
+ getIntent: () => createIntent(ThreadAction.Create),
95
+ }),
96
+ ),
94
97
  }),
95
98
  defineModule({
96
- id: `${meta.id}/module/channel-schema`,
97
- activatesOn: allOf(Events.SettingsReady, ClientEvents.ClientReady),
98
- activate: (context: PluginsContext) => {
99
- const client = context.requestCapability(ClientCapabilities.Client);
100
- const settings = context
101
- .requestCapability(Capabilities.SettingsStore)
102
- .getStore<ThreadSettingsProps>(THREAD_PLUGIN)!.value;
103
- if (settings.standalone) {
104
- // TODO(wittjosiah): Requires reload to disable.
105
- client.addTypes([ChannelType]);
106
- return contributes(ClientCapabilities.Schema, [ChannelType]);
107
- }
108
-
109
- return [];
110
- },
99
+ id: `${meta.id}/module/schema`,
100
+ activatesOn: ClientEvents.SetupSchema,
101
+ activate: () => contributes(ClientCapabilities.Schema, [ThreadType, MessageType]),
111
102
  }),
112
103
  defineModule({
113
104
  id: `${meta.id}/module/complementary-panel`,
114
- activatesOn: Events.Startup,
105
+ activatesOn: DeckEvents.SetupComplementaryPanels,
115
106
  activate: () =>
116
107
  contributes(DeckCapabilities.ComplementaryPanel, {
117
108
  id: 'comments',
118
109
  label: ['comments panel label', { ns: THREAD_PLUGIN }],
119
110
  icon: 'ph--chat-text--regular',
111
+ position: 'hoist',
112
+ // TODO(wittjosiah): Support comments on any object.
113
+ // filter: (node) => isEchoObject(node.data) && !!getSpace(node.data),
114
+ filter: (node) =>
115
+ !!node.data &&
116
+ typeof node.data === 'object' &&
117
+ 'threads' in node.data &&
118
+ Array.isArray(node.data.threads) &&
119
+ !(node.data instanceof ChannelType),
120
120
  }),
121
121
  }),
122
122
  defineModule({
123
123
  id: `${meta.id}/module/markdown`,
124
- activatesOn: Events.Startup,
124
+ activatesOn: MarkdownEvents.SetupExtensions,
125
125
  activate: Markdown,
126
126
  }),
127
127
  defineModule({
128
128
  id: `${meta.id}/module/react-surface`,
129
- activatesOn: Events.SetupSurfaces,
129
+ activatesOn: Events.SetupReactSurface,
130
+ // TODO(wittjosiah): Should occur before the comments thread is loaded when surfaces activation is more granular.
131
+ activatesBefore: [ThreadEvents.SetupThread],
130
132
  activate: ReactSurface,
131
133
  }),
132
134
  defineModule({
133
135
  id: `${meta.id}/module/intent-resolver`,
134
- activatesOn: Events.SetupIntents,
136
+ activatesOn: Events.SetupIntentResolver,
135
137
  activate: IntentResolver,
136
138
  }),
137
- defineModule({
138
- id: `${meta.id}/module/app-graph-builder`,
139
- activatesOn: Events.SetupAppGraph,
140
- activate: AppGraphBuilder,
141
- }),
142
139
  ]);
@@ -4,7 +4,6 @@
4
4
 
5
5
  import { lazy } from '@dxos/app-framework';
6
6
 
7
- export const AppGraphBuilder = lazy(() => import('./app-graph-builder'));
8
7
  export const IntentResolver = lazy(() => import('./intent-resolver'));
9
8
  export const Markdown = lazy(() => import('./markdown'));
10
9
  export const ReactSurface = lazy(() => import('./react-surface'));
@@ -55,7 +55,7 @@ export default (context: PluginsContext) =>
55
55
  ],
56
56
  };
57
57
  } else {
58
- // NOTE: This is the standalone thread creation case.
58
+ // TODO(wittjosiah): Create separate intent for channel creation.
59
59
  return {
60
60
  data: { object: create(ChannelType, { threads: [makeRef(create(ThreadType, { messages: [] }))] }) },
61
61
  };
@@ -7,7 +7,6 @@ import React from 'react';
7
7
  import { Capabilities, contributes, createSurface, useLayout } from '@dxos/app-framework';
8
8
  import { type Ref } from '@dxos/echo-schema';
9
9
  import { SettingsStore } from '@dxos/local-storage';
10
- import { log } from '@dxos/log';
11
10
  import { ChannelType, type ThreadType } from '@dxos/plugin-space/types';
12
11
  import { getSpace } from '@dxos/react-client/echo';
13
12
 
@@ -30,7 +29,7 @@ export default () =>
30
29
  if (!thread) {
31
30
  return null;
32
31
  }
33
- log.info('thread', { thread });
32
+
34
33
  const currentPosition = layout.active.findIndex((id) => id === channel.id);
35
34
  if (currentPosition > 0) {
36
35
  const objectToTheLeft = layout.active[currentPosition - 1];
@@ -7,6 +7,8 @@ import '@dxos-theme';
7
7
  import { type Meta } from '@storybook/react';
8
8
  import React, { useEffect, useState } from 'react';
9
9
 
10
+ import { IntentPlugin } from '@dxos/app-framework';
11
+ import { withPluginManager } from '@dxos/app-framework/testing';
10
12
  import { MessageType, ThreadType } from '@dxos/plugin-space/types';
11
13
  import { faker } from '@dxos/random';
12
14
  import { Filter, fullyQualifiedId, useQuery, useSpace } from '@dxos/react-client/echo';
@@ -44,7 +46,7 @@ const Story = ({ spaceKey }: ClientRepeatedComponentProps) => {
44
46
 
45
47
  return (
46
48
  <div className='flex justify-center overflow-y-auto bg-white dark:bg-black'>
47
- <div className='flex flex-col w-[400px]'>
49
+ <div className='flex flex-col w-[30rem]'>
48
50
  <CommentsContainer threads={threads} detached={detached} onThreadDelete={console.log} />
49
51
  </div>
50
52
  </div>
@@ -57,7 +59,11 @@ const meta: Meta = {
57
59
  title: 'plugins/plugin-thread/Comments',
58
60
  // TODO(wittjosiah): Use decorator.
59
61
  render: () => <ClientRepeater component={Story} createIdentity createSpace types={[ThreadType, MessageType]} />,
60
- decorators: [withTheme, withLayout({ fullscreen: true, tooltips: true })],
62
+ decorators: [
63
+ withTheme,
64
+ withLayout({ fullscreen: true, tooltips: true }),
65
+ withPluginManager({ plugins: [IntentPlugin()] }),
66
+ ],
61
67
  parameters: { translations },
62
68
  };
63
69
 
@@ -9,19 +9,30 @@ import { ThreadCapabilities } from '@dxos/plugin-space';
9
9
  import { MessageType, type ThreadType } from '@dxos/plugin-space/types';
10
10
  import { create, fullyQualifiedId, makeRef, RefArray } from '@dxos/react-client/echo';
11
11
  import { useIdentity } from '@dxos/react-client/halo';
12
+ import { useTranslation } from '@dxos/react-ui';
12
13
  import { useAttended } from '@dxos/react-ui-attention';
14
+ import { Tabs } from '@dxos/react-ui-tabs';
13
15
  import { isNonNullable } from '@dxos/util';
14
16
 
15
17
  import { ThreadCapabilities as LocalThreadCapabilities } from '../capabilities';
16
18
  import { CommentsContainer } from '../components';
19
+ import { THREAD_PLUGIN } from '../meta';
17
20
  import { ThreadAction } from '../types';
18
21
 
19
22
  export const ThreadComplementary = ({ subject }: { subject: any }) => {
20
23
  const { dispatchPromise: dispatch } = useIntentDispatcher();
21
24
  const identity = useIdentity();
25
+ const { t } = useTranslation(THREAD_PLUGIN);
22
26
 
23
27
  const { state, getViewState } = useCapability(LocalThreadCapabilities.MutableState);
24
- const { showResolvedThreads } = getViewState(fullyQualifiedId(subject));
28
+ const viewState = getViewState(fullyQualifiedId(subject));
29
+ const { showResolvedThreads } = viewState;
30
+ const onChangeViewState = useCallback(
31
+ (nextValue: string) => {
32
+ viewState.showResolvedThreads = nextValue === 'all';
33
+ },
34
+ [viewState],
35
+ );
25
36
  const drafts = state.drafts[fullyQualifiedId(subject)];
26
37
 
27
38
  const threadsIntegrators = useCapabilities(ThreadCapabilities.Thread);
@@ -112,7 +123,7 @@ export const ThreadComplementary = ({ subject }: { subject: any }) => {
112
123
  [dispatch, subject],
113
124
  );
114
125
 
115
- return (
126
+ const comments = (
116
127
  <CommentsContainer
117
128
  threads={threads}
118
129
  detached={detachedIds}
@@ -125,4 +136,23 @@ export const ThreadComplementary = ({ subject }: { subject: any }) => {
125
136
  onThreadDelete={handleThreadDelete}
126
137
  />
127
138
  );
139
+
140
+ return (
141
+ <Tabs.Root
142
+ value={showResolvedThreads ? 'all' : 'unresolved'}
143
+ onValueChange={onChangeViewState}
144
+ orientation='horizontal'
145
+ >
146
+ <Tabs.Tablist classNames='p-1 gap-1 bs-[--rail-action] border-be border-separator'>
147
+ <Tabs.Tab value='unresolved' classNames='text-sm'>
148
+ {t('show unresolved label')}
149
+ </Tabs.Tab>
150
+ <Tabs.Tab value='all' classNames='text-sm'>
151
+ {t('show all label')}
152
+ </Tabs.Tab>
153
+ </Tabs.Tablist>
154
+ <Tabs.Tabpanel value='all'>{showResolvedThreads && comments}</Tabs.Tabpanel>
155
+ <Tabs.Tabpanel value='unresolved'>{!showResolvedThreads && comments}</Tabs.Tabpanel>
156
+ </Tabs.Root>
157
+ );
128
158
  };
@@ -4,20 +4,14 @@
4
4
 
5
5
  import React from 'react';
6
6
 
7
- import { Input, useTranslation } from '@dxos/react-ui';
8
- import { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';
7
+ // import { useTranslation } from '@dxos/react-ui';
8
+ import { DeprecatedFormContainer } from '@dxos/react-ui-form';
9
9
 
10
- import { THREAD_PLUGIN } from '../meta';
10
+ // import { THREAD_PLUGIN } from '../meta';
11
11
  import type { ThreadSettingsProps } from '../types';
12
12
 
13
13
  export const ThreadSettings = ({ settings }: { settings: ThreadSettingsProps }) => {
14
- const { t } = useTranslation(THREAD_PLUGIN);
14
+ // const { t } = useTranslation(THREAD_PLUGIN);
15
15
 
16
- return (
17
- <DeprecatedFormContainer>
18
- <DeprecatedFormInput label={t('settings standalone label')}>
19
- <Input.Switch checked={settings.standalone} onCheckedChange={(checked) => (settings.standalone = !!checked)} />
20
- </DeprecatedFormInput>
21
- </DeprecatedFormContainer>
22
- );
16
+ return <DeprecatedFormContainer></DeprecatedFormContainer>;
23
17
  };
@@ -19,7 +19,6 @@ export default [
19
19
  'delete channel label': 'Delete channel',
20
20
  'create channel label': 'Create channel',
21
21
  'message placeholder': 'Reply…',
22
- 'settings standalone label': 'Enable channel creation (experimental)',
23
22
  'activity message': 'Processing…',
24
23
  'anonymous label': 'Anonymous',
25
24
  'delete message block label': 'Delete message block',
@@ -42,6 +41,8 @@ export default [
42
41
  'delete message label': 'Delete message',
43
42
  'open comments panel label': 'Show Comments',
44
43
  'comments panel label': 'Comments',
44
+ 'show all label': 'All comments',
45
+ 'show unresolved label': 'Unresolved only',
45
46
  },
46
47
  },
47
48
  },
package/src/types.ts CHANGED
@@ -67,11 +67,7 @@ export namespace ThreadAction {
67
67
  }) {}
68
68
  }
69
69
 
70
- export const ThreadSettingsSchema = S.mutable(
71
- S.Struct({
72
- standalone: S.optional(S.Boolean),
73
- }),
74
- );
70
+ export const ThreadSettingsSchema = S.mutable(S.Struct({}));
75
71
 
76
72
  export type ThreadSettingsProps = S.Schema.Type<typeof ThreadSettingsSchema>;
77
73
 
@@ -1,121 +0,0 @@
1
- import {
2
- ThreadCapabilities
3
- } from "./chunk-NAO3LZMZ.mjs";
4
- import {
5
- THREAD_PLUGIN
6
- } from "./chunk-636QDHE3.mjs";
7
-
8
- // packages/plugins/plugin-thread/src/capabilities/app-graph-builder.ts
9
- import { Capabilities, contributes, createIntent } from "@dxos/app-framework";
10
- import { ClientCapabilities } from "@dxos/plugin-client";
11
- import { createExtension, toSignal } from "@dxos/plugin-graph";
12
- import { ObservabilityAction } from "@dxos/plugin-observability/types";
13
- import { memoizeQuery } from "@dxos/plugin-space";
14
- import { getTypename, parseId, SpaceState } from "@dxos/react-client/echo";
15
- var type = "orphan-comments-for-subject";
16
- var icon = "ph--chat-text--regular";
17
- var app_graph_builder_default = (context) => {
18
- const resolver = (typename) => context.requestCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
19
- return contributes(Capabilities.AppGraphBuilder, createExtension({
20
- id: `${THREAD_PLUGIN}/comments-for-subject`,
21
- resolver: ({ id }) => {
22
- if (!id.endsWith("~comments")) {
23
- return;
24
- }
25
- const client = context.requestCapability(ClientCapabilities.Client);
26
- const [subjectId] = id.split("~");
27
- const { spaceId, objectId } = parseId(subjectId);
28
- const spaces = toSignal((onChange) => client.spaces.subscribe(() => onChange()).unsubscribe, () => client.spaces.get());
29
- const space = spaces?.find((space2) => space2.id === spaceId && space2.state.get() === SpaceState.SPACE_READY);
30
- if (!objectId) {
31
- return {
32
- id,
33
- type,
34
- data: null,
35
- properties: {
36
- icon,
37
- label: [
38
- "unnamed object threads label",
39
- {
40
- ns: THREAD_PLUGIN
41
- }
42
- ],
43
- showResolvedThreads: false,
44
- object: null,
45
- space
46
- }
47
- };
48
- }
49
- const [object] = memoizeQuery(space, {
50
- id: objectId
51
- });
52
- if (!object || !subjectId) {
53
- return;
54
- }
55
- const meta = resolver(getTypename(object) ?? "");
56
- const label = meta.label?.(object) || object.name || meta.placeholder || [
57
- "unnamed object threads label",
58
- {
59
- ns: THREAD_PLUGIN
60
- }
61
- ];
62
- const { getViewState } = context.requestCapability(ThreadCapabilities.State);
63
- const viewState = getViewState(subjectId);
64
- return {
65
- id,
66
- type,
67
- data: null,
68
- properties: {
69
- icon,
70
- label,
71
- showResolvedThreads: viewState.showResolvedThreads,
72
- object
73
- }
74
- };
75
- },
76
- actions: ({ node }) => {
77
- const dataId = node.id.split("~").at(0);
78
- if (!node.id.endsWith("~comments") || !dataId) {
79
- return;
80
- }
81
- const [spaceId, objectId] = dataId.split(":");
82
- const { getViewState } = context.requestCapability(ThreadCapabilities.State);
83
- const viewState = getViewState(dataId);
84
- const toggle = async () => {
85
- const newToggleState = !viewState.showResolvedThreads;
86
- viewState.showResolvedThreads = newToggleState;
87
- const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
88
- await dispatch(createIntent(ObservabilityAction.SendEvent, {
89
- name: "threads.toggle-show-resolved",
90
- properties: {
91
- spaceId,
92
- threadId: objectId,
93
- showResolved: newToggleState
94
- }
95
- }));
96
- };
97
- return [
98
- {
99
- id: `${THREAD_PLUGIN}/toggle-show-resolved/${node.id}`,
100
- data: toggle,
101
- properties: {
102
- label: [
103
- "toggle show resolved",
104
- {
105
- ns: THREAD_PLUGIN
106
- }
107
- ],
108
- menuItemType: "toggle",
109
- isChecked: viewState.showResolvedThreads,
110
- testId: "threadPlugin.toggleShowResolved",
111
- icon: viewState.showResolvedThreads ? "ph--eye-slash--regular" : "ph--eye--regular"
112
- }
113
- }
114
- ];
115
- }
116
- }));
117
- };
118
- export {
119
- app_graph_builder_default as default
120
- };
121
- //# sourceMappingURL=app-graph-builder-IANFWFYN.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, type PluginsContext } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { createExtension, toSignal } from '@dxos/plugin-graph';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { memoizeQuery } from '@dxos/plugin-space';\nimport { getTypename, parseId, SpaceState } from '@dxos/react-client/echo';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { THREAD_PLUGIN } from '../meta';\n\nconst type = 'orphan-comments-for-subject';\nconst icon = 'ph--chat-text--regular';\n\nexport default (context: PluginsContext) => {\n const resolver = (typename: string) =>\n context.requestCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n return contributes(\n Capabilities.AppGraphBuilder,\n createExtension({\n id: `${THREAD_PLUGIN}/comments-for-subject`,\n resolver: ({ id }) => {\n if (!id.endsWith('~comments')) {\n return;\n }\n\n const client = context.requestCapability(ClientCapabilities.Client);\n const [subjectId] = id.split('~');\n const { spaceId, objectId } = parseId(subjectId);\n const spaces = toSignal(\n (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,\n () => client.spaces.get(),\n );\n const space = spaces?.find((space) => space.id === spaceId && space.state.get() === SpaceState.SPACE_READY);\n if (!objectId) {\n // TODO(wittjosiah): Support comments for arbitrary subjects.\n // This is to ensure that the comments panel is not stuck on an old object.\n return {\n id,\n type,\n data: null,\n properties: {\n icon,\n label: ['unnamed object threads label', { ns: THREAD_PLUGIN }],\n showResolvedThreads: false,\n object: null,\n space,\n },\n };\n }\n\n const [object] = memoizeQuery(space, { id: objectId });\n if (!object || !subjectId) {\n return;\n }\n\n const meta = resolver(getTypename(object) ?? '');\n const label = meta.label?.(object) ||\n object.name ||\n meta.placeholder || ['unnamed object threads label', { ns: THREAD_PLUGIN }];\n\n const { getViewState } = context.requestCapability(ThreadCapabilities.State);\n const viewState = getViewState(subjectId);\n\n return {\n id,\n type,\n data: null,\n properties: {\n icon,\n label,\n showResolvedThreads: viewState.showResolvedThreads,\n object,\n },\n };\n },\n actions: ({ node }) => {\n const dataId = node.id.split('~').at(0);\n if (!node.id.endsWith('~comments') || !dataId) {\n return;\n }\n\n const [spaceId, objectId] = dataId.split(':');\n\n const { getViewState } = context.requestCapability(ThreadCapabilities.State);\n const viewState = getViewState(dataId);\n const toggle = async () => {\n const newToggleState = !viewState.showResolvedThreads;\n viewState.showResolvedThreads = newToggleState;\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n await dispatch(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.toggle-show-resolved',\n properties: { spaceId, threadId: objectId, showResolved: newToggleState },\n }),\n );\n };\n\n return [\n {\n id: `${THREAD_PLUGIN}/toggle-show-resolved/${node.id}`,\n data: toggle,\n properties: {\n label: ['toggle show resolved', { ns: THREAD_PLUGIN }],\n menuItemType: 'toggle',\n isChecked: viewState.showResolvedThreads,\n testId: 'threadPlugin.toggleShowResolved',\n icon: viewState.showResolvedThreads ? 'ph--eye-slash--regular' : 'ph--eye--regular',\n },\n },\n ];\n },\n }),\n );\n};\n"],
5
- "mappings": ";;;;;;;;AAIA,SAASA,cAAcC,aAAaC,oBAAyC;AAC7E,SAASC,0BAA0B;AACnC,SAASC,iBAAiBC,gBAAgB;AAC1C,SAASC,2BAA2B;AACpC,SAASC,oBAAoB;AAC7B,SAASC,aAAaC,SAASC,kBAAkB;AAKjD,IAAMC,OAAO;AACb,IAAMC,OAAO;AAEb,IAAA,4BAAe,CAACC,YAAAA;AACd,QAAMC,WAAW,CAACC,aAChBF,QAAQG,oBAAoBC,aAAaC,QAAQ,EAAEC,KAAK,CAAC,EAAEC,GAAE,MAAOA,OAAOL,QAAAA,GAAWM,YAAY,CAAC;AAErG,SAAOC,YACLL,aAAaM,iBACbC,gBAAgB;IACdJ,IAAI,GAAGK,aAAAA;IACPX,UAAU,CAAC,EAAEM,GAAE,MAAE;AACf,UAAI,CAACA,GAAGM,SAAS,WAAA,GAAc;AAC7B;MACF;AAEA,YAAMC,SAASd,QAAQe,kBAAkBC,mBAAmBC,MAAM;AAClE,YAAM,CAACC,SAAAA,IAAaX,GAAGY,MAAM,GAAA;AAC7B,YAAM,EAAEC,SAASC,SAAQ,IAAKC,QAAQJ,SAAAA;AACtC,YAAMK,SAASC,SACb,CAACC,aAAaX,OAAOS,OAAOG,UAAU,MAAMD,SAAAA,CAAAA,EAAYE,aACxD,MAAMb,OAAOS,OAAOK,IAAG,CAAA;AAEzB,YAAMC,QAAQN,QAAQjB,KAAK,CAACuB,WAAUA,OAAMtB,OAAOa,WAAWS,OAAMC,MAAMF,IAAG,MAAOG,WAAWC,WAAW;AAC1G,UAAI,CAACX,UAAU;AAGb,eAAO;UACLd;UACAT;UACAmC,MAAM;UACNC,YAAY;YACVnC;YACAoC,OAAO;cAAC;cAAgC;gBAAEC,IAAIxB;cAAc;;YAC5DyB,qBAAqB;YACrBC,QAAQ;YACRT;UACF;QACF;MACF;AAEA,YAAM,CAACS,MAAAA,IAAUC,aAAaV,OAAO;QAAEtB,IAAIc;MAAS,CAAA;AACpD,UAAI,CAACiB,UAAU,CAACpB,WAAW;AACzB;MACF;AAEA,YAAMsB,OAAOvC,SAASwC,YAAYH,MAAAA,KAAW,EAAA;AAC7C,YAAMH,QAAQK,KAAKL,QAAQG,MAAAA,KACzBA,OAAOI,QACPF,KAAKG,eAAe;QAAC;QAAgC;UAAEP,IAAIxB;QAAc;;AAE3E,YAAM,EAAEgC,aAAY,IAAK5C,QAAQe,kBAAkB8B,mBAAmBC,KAAK;AAC3E,YAAMC,YAAYH,aAAa1B,SAAAA;AAE/B,aAAO;QACLX;QACAT;QACAmC,MAAM;QACNC,YAAY;UACVnC;UACAoC;UACAE,qBAAqBU,UAAUV;UAC/BC;QACF;MACF;IACF;IACAU,SAAS,CAAC,EAAEC,KAAI,MAAE;AAChB,YAAMC,SAASD,KAAK1C,GAAGY,MAAM,GAAA,EAAKgC,GAAG,CAAA;AACrC,UAAI,CAACF,KAAK1C,GAAGM,SAAS,WAAA,KAAgB,CAACqC,QAAQ;AAC7C;MACF;AAEA,YAAM,CAAC9B,SAASC,QAAAA,IAAY6B,OAAO/B,MAAM,GAAA;AAEzC,YAAM,EAAEyB,aAAY,IAAK5C,QAAQe,kBAAkB8B,mBAAmBC,KAAK;AAC3E,YAAMC,YAAYH,aAAaM,MAAAA;AAC/B,YAAME,SAAS,YAAA;AACb,cAAMC,iBAAiB,CAACN,UAAUV;AAClCU,kBAAUV,sBAAsBgB;AAChC,cAAM,EAAEC,iBAAiBC,SAAQ,IAAKvD,QAAQe,kBAAkBX,aAAaoD,gBAAgB;AAC7F,cAAMD,SACJE,aAAaC,oBAAoBC,WAAW;UAC1CjB,MAAM;UACNR,YAAY;YAAEd;YAASwC,UAAUvC;YAAUwC,cAAcR;UAAe;QAC1E,CAAA,CAAA;MAEJ;AAEA,aAAO;QACL;UACE9C,IAAI,GAAGK,aAAAA,yBAAsCqC,KAAK1C,EAAE;UACpD0B,MAAMmB;UACNlB,YAAY;YACVC,OAAO;cAAC;cAAwB;gBAAEC,IAAIxB;cAAc;;YACpDkD,cAAc;YACdC,WAAWhB,UAAUV;YACrB2B,QAAQ;YACRjE,MAAMgD,UAAUV,sBAAsB,2BAA2B;UACnE;QACF;;IAEJ;EACF,CAAA,CAAA;AAEJ;",
6
- "names": ["Capabilities", "contributes", "createIntent", "ClientCapabilities", "createExtension", "toSignal", "ObservabilityAction", "memoizeQuery", "getTypename", "parseId", "SpaceState", "type", "icon", "context", "resolver", "typename", "requestCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "contributes", "AppGraphBuilder", "createExtension", "THREAD_PLUGIN", "endsWith", "client", "requestCapability", "ClientCapabilities", "Client", "subjectId", "split", "spaceId", "objectId", "parseId", "spaces", "toSignal", "onChange", "subscribe", "unsubscribe", "get", "space", "state", "SpaceState", "SPACE_READY", "data", "properties", "label", "ns", "showResolvedThreads", "object", "memoizeQuery", "meta", "getTypename", "name", "placeholder", "getViewState", "ThreadCapabilities", "State", "viewState", "actions", "node", "dataId", "at", "toggle", "newToggleState", "dispatchPromise", "dispatch", "IntentDispatcher", "createIntent", "ObservabilityAction", "SendEvent", "threadId", "showResolved", "menuItemType", "isChecked", "testId"]
7
- }
@@ -1,18 +0,0 @@
1
- // packages/plugins/plugin-thread/src/capabilities/index.ts
2
- import { lazy } from "@dxos/app-framework";
3
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-IANFWFYN.mjs"));
4
- var IntentResolver = lazy(() => import("./intent-resolver-QFP6L3AF.mjs"));
5
- var Markdown = lazy(() => import("./markdown-2NBXKXCY.mjs"));
6
- var ReactSurface = lazy(() => import("./react-surface-YDKOPRQP.mjs"));
7
- var ThreadSettings = lazy(() => import("./settings-TKOPRXSU.mjs"));
8
- var ThreadState = lazy(() => import("./state-GNFUURIC.mjs"));
9
-
10
- export {
11
- AppGraphBuilder,
12
- IntentResolver,
13
- Markdown,
14
- ReactSurface,
15
- ThreadSettings,
16
- ThreadState
17
- };
18
- //# sourceMappingURL=chunk-CQ3NH4RJ.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const Markdown = lazy(() => import('./markdown'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const ThreadSettings = lazy(() => import('./settings'));\nexport const ThreadState = lazy(() => import('./state'));\n\nexport * from './capabilities';\n"],
5
- "mappings": ";AAIA,SAASA,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,iBAAiBD,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAME,WAAWF,KAAK,MAAM,OAAO,yBAAA,CAAA;AACnC,IAAMG,eAAeH,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMI,iBAAiBJ,KAAK,MAAM,OAAO,yBAAA,CAAA;AACzC,IAAMK,cAAcL,KAAK,MAAM,OAAO,sBAAA,CAAA;",
6
- "names": ["lazy", "AppGraphBuilder", "lazy", "IntentResolver", "Markdown", "ReactSurface", "ThreadSettings", "ThreadState"]
7
- }