@dxos/plugin-thread 0.8.2 → 0.8.3-main.7f5a14c

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 (132) hide show
  1. package/dist/lib/browser/{ChannelContainer-LGYSQMC7.mjs → ChannelContainer-KWXUKR5Q.mjs} +4 -4
  2. package/dist/lib/browser/{ChatContainer-JWRI73OG.mjs → ChatContainer-RSOKYAMK.mjs} +2 -2
  3. package/dist/lib/browser/{app-graph-builder-K3CFBN7V.mjs → app-graph-builder-CBWNZCXB.mjs} +10 -10
  4. package/dist/lib/browser/app-graph-builder-CBWNZCXB.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-KMVGJG23.mjs → chunk-3EYX6CV7.mjs} +10 -9
  6. package/dist/lib/browser/chunk-3EYX6CV7.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-5PGLGDIP.mjs → chunk-5IRYNA5K.mjs} +6 -6
  8. package/dist/lib/browser/chunk-5IRYNA5K.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-FWBJHKRW.mjs +21 -0
  10. package/dist/lib/browser/{chunk-G3TS64FP.mjs → chunk-TAFSCSUR.mjs} +4 -4
  11. package/dist/lib/browser/chunk-TAFSCSUR.mjs.map +7 -0
  12. package/dist/lib/browser/index.mjs +4 -4
  13. package/dist/lib/browser/index.mjs.map +3 -3
  14. package/dist/lib/browser/{intent-resolver-YUYZCTLF.mjs → intent-resolver-I37YU7K3.mjs} +13 -12
  15. package/dist/lib/browser/intent-resolver-I37YU7K3.mjs.map +7 -0
  16. package/dist/lib/browser/{markdown-4EC3OCF2.mjs → markdown-LS3XO2KB.mjs} +5 -4
  17. package/dist/lib/browser/markdown-LS3XO2KB.mjs.map +7 -0
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/{react-root-EECCWHCW.mjs → react-root-KNCKPHGS.mjs} +5 -5
  20. package/dist/lib/browser/{react-surface-5QLZAFDL.mjs → react-surface-ASWIBD7H.mjs} +11 -11
  21. package/dist/lib/browser/react-surface-ASWIBD7H.mjs.map +7 -0
  22. package/dist/lib/browser/{settings-KVBQQSO5.mjs → settings-ZUY7OX24.mjs} +3 -3
  23. package/dist/lib/browser/settings-ZUY7OX24.mjs.map +7 -0
  24. package/dist/lib/node/{ChannelContainer-5EKNEH56.cjs → ChannelContainer-MA5CFESJ.cjs} +9 -9
  25. package/dist/lib/node/{ChannelContainer-5EKNEH56.cjs.map → ChannelContainer-MA5CFESJ.cjs.map} +2 -2
  26. package/dist/lib/node/{ChatContainer-EE3FPSYO.cjs → ChatContainer-GCOM3M56.cjs} +8 -8
  27. package/dist/lib/node/{ChatContainer-EE3FPSYO.cjs.map → ChatContainer-GCOM3M56.cjs.map} +2 -2
  28. package/dist/lib/node/{app-graph-builder-IRE3GYKE.cjs → app-graph-builder-K5OAVYI6.cjs} +19 -19
  29. package/dist/lib/node/app-graph-builder-K5OAVYI6.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-U7NOIXN6.cjs → chunk-3YYSLZE4.cjs} +10 -10
  31. package/dist/lib/node/{chunk-4B3PPXA6.cjs → chunk-E3WBZTTI.cjs} +12 -12
  32. package/dist/lib/node/chunk-E3WBZTTI.cjs.map +7 -0
  33. package/dist/lib/node/{chunk-6B3M6XRE.cjs → chunk-U4SZUERU.cjs} +8 -8
  34. package/dist/lib/node/chunk-U4SZUERU.cjs.map +7 -0
  35. package/dist/lib/node/{chunk-JLHENFGK.cjs → chunk-WCQKISL5.cjs} +32 -31
  36. package/dist/lib/node/chunk-WCQKISL5.cjs.map +7 -0
  37. package/dist/lib/node/index.cjs +11 -11
  38. package/dist/lib/node/index.cjs.map +3 -3
  39. package/dist/lib/node/{intent-resolver-MZ3HADNY.cjs → intent-resolver-2TX6HSOL.cjs} +29 -28
  40. package/dist/lib/node/intent-resolver-2TX6HSOL.cjs.map +7 -0
  41. package/dist/lib/node/{markdown-NJDPXIKD.cjs → markdown-GNFW2XDO.cjs} +21 -20
  42. package/dist/lib/node/markdown-GNFW2XDO.cjs.map +7 -0
  43. package/dist/lib/node/meta.json +1 -1
  44. package/dist/lib/node/{react-root-IAYQ2DBO.cjs → react-root-BKOXG5AC.cjs} +9 -9
  45. package/dist/lib/node/{react-surface-AVC5VVIS.cjs → react-surface-Q5DWX3UO.cjs} +23 -23
  46. package/dist/lib/node/react-surface-Q5DWX3UO.cjs.map +7 -0
  47. package/dist/lib/node/{settings-H45P5YO2.cjs → settings-5O5V2NOE.cjs} +5 -5
  48. package/dist/lib/node/settings-5O5V2NOE.cjs.map +7 -0
  49. package/dist/lib/node-esm/{ChannelContainer-KFS2RWWW.mjs → ChannelContainer-VGVEAUAQ.mjs} +4 -4
  50. package/dist/lib/node-esm/{ChatContainer-UJYPQMLV.mjs → ChatContainer-F6CSADV7.mjs} +2 -2
  51. package/dist/lib/node-esm/{app-graph-builder-I5VMPLE4.mjs → app-graph-builder-UWJQE534.mjs} +10 -10
  52. package/dist/lib/node-esm/app-graph-builder-UWJQE534.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-MNJ3V4XM.mjs → chunk-6EGLDARC.mjs} +10 -9
  54. package/dist/lib/node-esm/chunk-6EGLDARC.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-ODUB4GAB.mjs → chunk-EHDXOE5R.mjs} +7 -7
  56. package/dist/lib/node-esm/{chunk-X6AUQDTE.mjs → chunk-KP2JBSWF.mjs} +6 -6
  57. package/dist/lib/node-esm/chunk-KP2JBSWF.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-POKXRTII.mjs → chunk-P6RLFCNT.mjs} +4 -4
  59. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs.map +7 -0
  60. package/dist/lib/node-esm/index.mjs +4 -4
  61. package/dist/lib/node-esm/index.mjs.map +3 -3
  62. package/dist/lib/node-esm/{intent-resolver-CU22OPAH.mjs → intent-resolver-FHRK77IS.mjs} +13 -12
  63. package/dist/lib/node-esm/intent-resolver-FHRK77IS.mjs.map +7 -0
  64. package/dist/lib/node-esm/{markdown-HRGGO7IA.mjs → markdown-HBGB3UPJ.mjs} +5 -4
  65. package/dist/lib/node-esm/markdown-HBGB3UPJ.mjs.map +7 -0
  66. package/dist/lib/node-esm/meta.json +1 -1
  67. package/dist/lib/node-esm/{react-root-NQMUEI6Z.mjs → react-root-UPDDCRBV.mjs} +5 -5
  68. package/dist/lib/node-esm/{react-surface-Z4X5VLMY.mjs → react-surface-LU3CZDC4.mjs} +11 -11
  69. package/dist/lib/node-esm/react-surface-LU3CZDC4.mjs.map +7 -0
  70. package/dist/lib/node-esm/{settings-IJGUOU3F.mjs → settings-KFEFSAYG.mjs} +3 -3
  71. package/dist/lib/node-esm/settings-KFEFSAYG.mjs.map +7 -0
  72. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  74. package/dist/types/src/components/ChatContainer.d.ts +3 -2
  75. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  76. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  77. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  78. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  79. package/dist/types/src/components/testing.d.ts +2 -103
  80. package/dist/types/src/components/testing.d.ts.map +1 -1
  81. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  82. package/package.json +42 -42
  83. package/src/ThreadPlugin.tsx +4 -4
  84. package/src/capabilities/app-graph-builder.ts +9 -9
  85. package/src/capabilities/intent-resolver.ts +9 -8
  86. package/src/capabilities/react-surface.tsx +7 -7
  87. package/src/capabilities/settings.ts +7 -2
  88. package/src/components/Call/Toolbar.tsx +2 -2
  89. package/src/components/Chat.stories.tsx +4 -4
  90. package/src/components/ChatContainer.tsx +6 -6
  91. package/src/components/Comments.stories.tsx +6 -5
  92. package/src/components/MessageContainer.tsx +20 -20
  93. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +2 -2
  94. package/src/components/ThreadComplementary.tsx +9 -4
  95. package/src/components/testing.ts +5 -5
  96. package/src/extensions/threads.ts +4 -3
  97. package/src/testing/stories.ts +3 -3
  98. package/dist/lib/browser/app-graph-builder-K3CFBN7V.mjs.map +0 -7
  99. package/dist/lib/browser/chunk-5PGLGDIP.mjs.map +0 -7
  100. package/dist/lib/browser/chunk-CF2MXRCH.mjs +0 -21
  101. package/dist/lib/browser/chunk-G3TS64FP.mjs.map +0 -7
  102. package/dist/lib/browser/chunk-KMVGJG23.mjs.map +0 -7
  103. package/dist/lib/browser/intent-resolver-YUYZCTLF.mjs.map +0 -7
  104. package/dist/lib/browser/markdown-4EC3OCF2.mjs.map +0 -7
  105. package/dist/lib/browser/react-surface-5QLZAFDL.mjs.map +0 -7
  106. package/dist/lib/browser/settings-KVBQQSO5.mjs.map +0 -7
  107. package/dist/lib/node/app-graph-builder-IRE3GYKE.cjs.map +0 -7
  108. package/dist/lib/node/chunk-4B3PPXA6.cjs.map +0 -7
  109. package/dist/lib/node/chunk-6B3M6XRE.cjs.map +0 -7
  110. package/dist/lib/node/chunk-JLHENFGK.cjs.map +0 -7
  111. package/dist/lib/node/intent-resolver-MZ3HADNY.cjs.map +0 -7
  112. package/dist/lib/node/markdown-NJDPXIKD.cjs.map +0 -7
  113. package/dist/lib/node/react-surface-AVC5VVIS.cjs.map +0 -7
  114. package/dist/lib/node/settings-H45P5YO2.cjs.map +0 -7
  115. package/dist/lib/node-esm/app-graph-builder-I5VMPLE4.mjs.map +0 -7
  116. package/dist/lib/node-esm/chunk-MNJ3V4XM.mjs.map +0 -7
  117. package/dist/lib/node-esm/chunk-POKXRTII.mjs.map +0 -7
  118. package/dist/lib/node-esm/chunk-X6AUQDTE.mjs.map +0 -7
  119. package/dist/lib/node-esm/intent-resolver-CU22OPAH.mjs.map +0 -7
  120. package/dist/lib/node-esm/markdown-HRGGO7IA.mjs.map +0 -7
  121. package/dist/lib/node-esm/react-surface-Z4X5VLMY.mjs.map +0 -7
  122. package/dist/lib/node-esm/settings-IJGUOU3F.mjs.map +0 -7
  123. /package/dist/lib/browser/{ChannelContainer-LGYSQMC7.mjs.map → ChannelContainer-KWXUKR5Q.mjs.map} +0 -0
  124. /package/dist/lib/browser/{ChatContainer-JWRI73OG.mjs.map → ChatContainer-RSOKYAMK.mjs.map} +0 -0
  125. /package/dist/lib/browser/{chunk-CF2MXRCH.mjs.map → chunk-FWBJHKRW.mjs.map} +0 -0
  126. /package/dist/lib/browser/{react-root-EECCWHCW.mjs.map → react-root-KNCKPHGS.mjs.map} +0 -0
  127. /package/dist/lib/node/{chunk-U7NOIXN6.cjs.map → chunk-3YYSLZE4.cjs.map} +0 -0
  128. /package/dist/lib/node/{react-root-IAYQ2DBO.cjs.map → react-root-BKOXG5AC.cjs.map} +0 -0
  129. /package/dist/lib/node-esm/{ChannelContainer-KFS2RWWW.mjs.map → ChannelContainer-VGVEAUAQ.mjs.map} +0 -0
  130. /package/dist/lib/node-esm/{ChatContainer-UJYPQMLV.mjs.map → ChatContainer-F6CSADV7.mjs.map} +0 -0
  131. /package/dist/lib/node-esm/{chunk-ODUB4GAB.mjs.map → chunk-EHDXOE5R.mjs.map} +0 -0
  132. /package/dist/lib/node-esm/{react-root-NQMUEI6Z.mjs.map → react-root-UPDDCRBV.mjs.map} +0 -0
@@ -1,11 +1,11 @@
1
- import "./chunk-KMVGJG23.mjs";
1
+ import "./chunk-3EYX6CV7.mjs";
2
2
  import "./chunk-WDOQXTI2.mjs";
3
3
  import {
4
4
  Call
5
- } from "./chunk-5PGLGDIP.mjs";
6
- import "./chunk-CF2MXRCH.mjs";
5
+ } from "./chunk-5IRYNA5K.mjs";
6
+ import "./chunk-FWBJHKRW.mjs";
7
7
  import "./chunk-R5MDLUPC.mjs";
8
- import "./chunk-G3TS64FP.mjs";
8
+ import "./chunk-TAFSCSUR.mjs";
9
9
  import "./chunk-5P5BH5GE.mjs";
10
10
  import "./chunk-JKQUJOTX.mjs";
11
11
  import {
@@ -24,4 +24,4 @@ var react_root_default = () => {
24
24
  export {
25
25
  react_root_default as default
26
26
  };
27
- //# sourceMappingURL=react-root-EECCWHCW.mjs.map
27
+ //# sourceMappingURL=react-root-KNCKPHGS.mjs.map
@@ -5,17 +5,17 @@ import {
5
5
  ChatContainer,
6
6
  ThreadComplementary,
7
7
  ThreadSettings
8
- } from "./chunk-KMVGJG23.mjs";
8
+ } from "./chunk-3EYX6CV7.mjs";
9
9
  import {
10
10
  ChannelType,
11
11
  ThreadType
12
12
  } from "./chunk-WDOQXTI2.mjs";
13
- import "./chunk-5PGLGDIP.mjs";
14
- import "./chunk-CF2MXRCH.mjs";
13
+ import "./chunk-5IRYNA5K.mjs";
14
+ import "./chunk-FWBJHKRW.mjs";
15
15
  import {
16
16
  ThreadCapabilities
17
17
  } from "./chunk-R5MDLUPC.mjs";
18
- import "./chunk-G3TS64FP.mjs";
18
+ import "./chunk-TAFSCSUR.mjs";
19
19
  import "./chunk-5P5BH5GE.mjs";
20
20
  import "./chunk-JKQUJOTX.mjs";
21
21
  import {
@@ -25,14 +25,14 @@ import {
25
25
  // packages/plugins/plugin-thread/src/capabilities/react-surface.tsx
26
26
  import React from "react";
27
27
  import { Capabilities, contributes, createSurface, useCapability } from "@dxos/app-framework";
28
- import { isInstanceOf } from "@dxos/echo-schema";
28
+ import { Obj } from "@dxos/echo";
29
29
  import { SettingsStore } from "@dxos/local-storage";
30
- import { getSpace, isEchoObject } from "@dxos/react-client/echo";
30
+ import { getSpace } from "@dxos/react-client/echo";
31
31
  var react_surface_default = () => contributes(Capabilities.ReactSurface, [
32
32
  createSurface({
33
33
  id: `${THREAD_PLUGIN}/channel`,
34
34
  role: "article",
35
- filter: (data) => isInstanceOf(ChannelType, data.subject),
35
+ filter: (data) => Obj.instanceOf(ChannelType, data.subject),
36
36
  component: ({ data: { subject: channel }, role }) => /* @__PURE__ */ React.createElement(ChannelContainer, {
37
37
  channel,
38
38
  role
@@ -41,7 +41,7 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
41
41
  createSurface({
42
42
  id: `${THREAD_PLUGIN}/chat-companion`,
43
43
  role: "article",
44
- filter: (data) => isInstanceOf(ChannelType, data.companionTo) && data.subject === "chat",
44
+ filter: (data) => Obj.instanceOf(ChannelType, data.companionTo) && data.subject === "chat",
45
45
  component: ({ data: { companionTo: channel } }) => {
46
46
  const space = getSpace(channel);
47
47
  const thread = channel.defaultThread.target;
@@ -57,7 +57,7 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
57
57
  createSurface({
58
58
  id: `${THREAD_PLUGIN}/thread`,
59
59
  role: "article",
60
- filter: (data) => isInstanceOf(ThreadType, data.subject),
60
+ filter: (data) => Obj.instanceOf(ThreadType, data.subject),
61
61
  component: ({ data: { subject: thread } }) => {
62
62
  const space = getSpace(thread);
63
63
  if (!space || !thread) {
@@ -72,7 +72,7 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
72
72
  createSurface({
73
73
  id: `${THREAD_PLUGIN}/comments`,
74
74
  role: "article",
75
- filter: (data) => data.subject === "comments" && isEchoObject(data.companionTo),
75
+ filter: (data) => data.subject === "comments" && Obj.isObject(data.companionTo),
76
76
  // TODO(wittjosiah): This isn't scrolling properly in a plank.
77
77
  component: ({ data }) => /* @__PURE__ */ React.createElement(ThreadComplementary, {
78
78
  subject: data.companionTo
@@ -105,4 +105,4 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
105
105
  export {
106
106
  react_surface_default as default
107
107
  };
108
- //# sourceMappingURL=react-surface-5QLZAFDL.mjs.map
108
+ //# sourceMappingURL=react-surface-ASWIBD7H.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';\nimport { Obj, type Ref } from '@dxos/echo';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { getSpace } from '@dxos/react-client/echo';\n\nimport { ThreadCapabilities } from './capabilities';\nimport {\n CallSidebar,\n CallDebugPanel,\n ChannelContainer,\n ThreadComplementary,\n ThreadSettings,\n ChatContainer,\n} from '../components';\nimport { THREAD_PLUGIN } from '../meta';\nimport { ChannelType, ThreadType, type ThreadSettingsProps } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${THREAD_PLUGIN}/channel`,\n role: 'article',\n filter: (data): data is { subject: ChannelType } => Obj.instanceOf(ChannelType, data.subject),\n component: ({ data: { subject: channel }, role }) => <ChannelContainer channel={channel} role={role} />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/chat-companion`,\n role: 'article',\n filter: (data): data is { companionTo: ChannelType; subject: 'chat' } =>\n Obj.instanceOf(ChannelType, data.companionTo) && data.subject === 'chat',\n component: ({ data: { companionTo: channel } }) => {\n const space = getSpace(channel);\n const thread = channel.defaultThread.target;\n if (!space || !thread) {\n return null;\n }\n\n return <ChatContainer thread={thread} space={space} />;\n },\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/thread`,\n role: 'article',\n filter: (data): data is { subject: ThreadType } => Obj.instanceOf(ThreadType, data.subject),\n component: ({ data: { subject: thread } }) => {\n const space = getSpace(thread);\n if (!space || !thread) {\n return null;\n }\n\n return <ChatContainer thread={thread} space={space} />;\n },\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/comments`,\n role: 'article',\n filter: (data): data is { companionTo: { threads: Ref.Ref<ThreadType>[] } } =>\n data.subject === 'comments' && Obj.isObject(data.companionTo),\n // TODO(wittjosiah): This isn't scrolling properly in a plank.\n component: ({ data }) => <ThreadComplementary subject={data.companionTo} />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/plugin-settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<ThreadSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === THREAD_PLUGIN,\n component: ({ data: { subject } }) => <ThreadSettings settings={subject.value} />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/assistant`,\n role: 'deck-companion--active-call',\n component: () => <CallSidebar />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/devtools-overview`,\n role: 'devtools-overview',\n component: () => {\n const call = useCapability(ThreadCapabilities.CallManager);\n return <CallDebugPanel state={call.state} />;\n },\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,cAAcC,aAAaC,eAAeC,qBAAqB;AACxE,SAASC,WAAqB;AAC9B,SAASC,qBAAqB;AAC9B,SAASC,gBAAgB;AAczB,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAA2CC,IAAIC,WAAWC,aAAaH,KAAKI,OAAO;IAC5FC,WAAW,CAAC,EAAEL,MAAM,EAAEI,SAASE,QAAO,GAAIR,KAAI,MAAO,sBAAA,cAACS,kBAAAA;MAAiBD;MAAkBR;;EAC3F,CAAA;EACAH,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPC,IAAIC,WAAWC,aAAaH,KAAKQ,WAAW,KAAKR,KAAKI,YAAY;IACpEC,WAAW,CAAC,EAAEL,MAAM,EAAEQ,aAAaF,QAAO,EAAE,MAAE;AAC5C,YAAMG,QAAQC,SAASJ,OAAAA;AACvB,YAAMK,SAASL,QAAQM,cAAcC;AACrC,UAAI,CAACJ,SAAS,CAACE,QAAQ;AACrB,eAAO;MACT;AAEA,aAAO,sBAAA,cAACG,eAAAA;QAAcH;QAAgBF;;IACxC;EACF,CAAA;EACAd,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAA0CC,IAAIC,WAAWa,YAAYf,KAAKI,OAAO;IAC1FC,WAAW,CAAC,EAAEL,MAAM,EAAEI,SAASO,OAAM,EAAE,MAAE;AACvC,YAAMF,QAAQC,SAASC,MAAAA;AACvB,UAAI,CAACF,SAAS,CAACE,QAAQ;AACrB,eAAO;MACT;AAEA,aAAO,sBAAA,cAACG,eAAAA;QAAcH;QAAgBF;;IACxC;EACF,CAAA;EACAd,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPA,KAAKI,YAAY,cAAcH,IAAIe,SAAShB,KAAKQ,WAAW;;IAE9DH,WAAW,CAAC,EAAEL,KAAI,MAAO,sBAAA,cAACiB,qBAAAA;MAAoBb,SAASJ,KAAKQ;;EAC9D,CAAA;EACAb,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPA,KAAKI,mBAAmBc,iBAAiBlB,KAAKI,QAAQe,WAAWtB;IACnEQ,WAAW,CAAC,EAAEL,MAAM,EAAEI,QAAO,EAAE,MAAO,sBAAA,cAACgB,gBAAAA;MAAeC,UAAUjB,QAAQkB;;EAC1E,CAAA;EACA3B,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNO,WAAW,MAAM,sBAAA,cAACkB,aAAAA,IAAAA;EACpB,CAAA;EACA5B,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNO,WAAW,MAAA;AACT,YAAMmB,OAAOC,cAAcC,mBAAmBC,WAAW;AACzD,aAAO,sBAAA,cAACC,gBAAAA;QAAeC,OAAOL,KAAKK;;IACrC;EACF,CAAA;CACD;",
6
+ "names": ["React", "Capabilities", "contributes", "createSurface", "useCapability", "Obj", "SettingsStore", "getSpace", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "THREAD_PLUGIN", "role", "filter", "data", "Obj", "instanceOf", "ChannelType", "subject", "component", "channel", "ChannelContainer", "companionTo", "space", "getSpace", "thread", "defaultThread", "target", "ChatContainer", "ThreadType", "isObject", "ThreadComplementary", "SettingsStore", "prefix", "ThreadSettings", "settings", "value", "CallSidebar", "call", "useCapability", "ThreadCapabilities", "CallManager", "CallDebugPanel", "state"]
7
+ }
@@ -2,7 +2,7 @@ import {
2
2
  ThreadSettingsSchema
3
3
  } from "./chunk-WDOQXTI2.mjs";
4
4
  import {
5
- THREAD_PLUGIN
5
+ meta
6
6
  } from "./chunk-IIUTBDVB.mjs";
7
7
 
8
8
  // packages/plugins/plugin-thread/src/capabilities/settings.ts
@@ -11,12 +11,12 @@ import { live } from "@dxos/live-object";
11
11
  var settings_default = () => {
12
12
  const settings = live({});
13
13
  return contributes(Capabilities.Settings, {
14
+ prefix: meta.id,
14
15
  schema: ThreadSettingsSchema,
15
- prefix: THREAD_PLUGIN,
16
16
  value: settings
17
17
  });
18
18
  };
19
19
  export {
20
20
  settings_default as default
21
21
  };
22
- //# sourceMappingURL=settings-KVBQQSO5.mjs.map
22
+ //# sourceMappingURL=settings-ZUY7OX24.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/settings.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { live } from '@dxos/live-object';\n\nimport { meta } from '../meta';\nimport { type ThreadSettingsProps, ThreadSettingsSchema } from '../types';\n\nexport default () => {\n const settings = live<ThreadSettingsProps>({});\n\n return contributes(Capabilities.Settings, {\n prefix: meta.id,\n schema: ThreadSettingsSchema,\n value: settings,\n });\n};\n"],
5
+ "mappings": ";;;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,YAAY;AAKrB,IAAA,mBAAe,MAAA;AACb,QAAMC,WAAWC,KAA0B,CAAC,CAAA;AAE5C,SAAOC,YAAYC,aAAaC,UAAU;IACxCC,QAAQC,KAAKC;IACbC,QAAQC;IACRC,OAAOV;EACT,CAAA;AACF;",
6
+ "names": ["Capabilities", "contributes", "live", "settings", "live", "contributes", "Capabilities", "Settings", "prefix", "meta", "id", "schema", "ThreadSettingsSchema", "value"]
7
+ }
@@ -16,16 +16,16 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var ChannelContainer_5EKNEH56_exports = {};
20
- __export(ChannelContainer_5EKNEH56_exports, {
21
- ChannelContainer: () => import_chunk_6B3M6XRE.ChannelContainer,
22
- default: () => import_chunk_6B3M6XRE.ChannelContainer_default
19
+ var ChannelContainer_MA5CFESJ_exports = {};
20
+ __export(ChannelContainer_MA5CFESJ_exports, {
21
+ ChannelContainer: () => import_chunk_U4SZUERU.ChannelContainer,
22
+ default: () => import_chunk_U4SZUERU.ChannelContainer_default
23
23
  });
24
- module.exports = __toCommonJS(ChannelContainer_5EKNEH56_exports);
25
- var import_chunk_6B3M6XRE = require("./chunk-6B3M6XRE.cjs");
26
- var import_chunk_U7NOIXN6 = require("./chunk-U7NOIXN6.cjs");
24
+ module.exports = __toCommonJS(ChannelContainer_MA5CFESJ_exports);
25
+ var import_chunk_U4SZUERU = require("./chunk-U4SZUERU.cjs");
26
+ var import_chunk_3YYSLZE4 = require("./chunk-3YYSLZE4.cjs");
27
27
  var import_chunk_4YSNVPWU = require("./chunk-4YSNVPWU.cjs");
28
- var import_chunk_4B3PPXA6 = require("./chunk-4B3PPXA6.cjs");
28
+ var import_chunk_E3WBZTTI = require("./chunk-E3WBZTTI.cjs");
29
29
  var import_chunk_FUXJAVFZ = require("./chunk-FUXJAVFZ.cjs");
30
30
  var import_chunk_LR5NENBE = require("./chunk-LR5NENBE.cjs");
31
31
  var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
@@ -33,4 +33,4 @@ var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
33
33
  0 && (module.exports = {
34
34
  ChannelContainer
35
35
  });
36
- //# sourceMappingURL=ChannelContainer-5EKNEH56.cjs.map
36
+ //# sourceMappingURL=ChannelContainer-MA5CFESJ.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["ChannelContainer-5EKNEH56.cjs"],
4
- "sourcesContent": ["import {\n ChannelContainer,\n ChannelContainer_default\n} from \"./chunk-6B3M6XRE.cjs\";\nimport \"./chunk-U7NOIXN6.cjs\";\nimport \"./chunk-4YSNVPWU.cjs\";\nimport \"./chunk-4B3PPXA6.cjs\";\nimport \"./chunk-FUXJAVFZ.cjs\";\nimport \"./chunk-LR5NENBE.cjs\";\nimport \"./chunk-HLMCEE5K.cjs\";\nexport {\n ChannelContainer,\n ChannelContainer_default as default\n};\n//# sourceMappingURL=ChannelContainer-5EKNEH56.cjs.map\n"],
3
+ "sources": ["ChannelContainer-MA5CFESJ.cjs"],
4
+ "sourcesContent": ["import {\n ChannelContainer,\n ChannelContainer_default\n} from \"./chunk-U4SZUERU.cjs\";\nimport \"./chunk-3YYSLZE4.cjs\";\nimport \"./chunk-4YSNVPWU.cjs\";\nimport \"./chunk-E3WBZTTI.cjs\";\nimport \"./chunk-FUXJAVFZ.cjs\";\nimport \"./chunk-LR5NENBE.cjs\";\nimport \"./chunk-HLMCEE5K.cjs\";\nexport {\n ChannelContainer,\n ChannelContainer_default as default\n};\n//# sourceMappingURL=ChannelContainer-MA5CFESJ.cjs.map\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAGO;AACP,4BAAO;AACP,4BAAO;AACP,4BAAO;AACP,4BAAO;AACP,4BAAO;AACP,4BAAO;",
6
6
  "names": []
7
7
  }
@@ -16,14 +16,14 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var ChatContainer_EE3FPSYO_exports = {};
20
- __export(ChatContainer_EE3FPSYO_exports, {
21
- ChatContainer: () => import_chunk_4B3PPXA6.ChatContainer,
22
- ChatHeading: () => import_chunk_4B3PPXA6.ChatHeading,
23
- default: () => import_chunk_4B3PPXA6.ChatContainer_default
19
+ var ChatContainer_GCOM3M56_exports = {};
20
+ __export(ChatContainer_GCOM3M56_exports, {
21
+ ChatContainer: () => import_chunk_E3WBZTTI.ChatContainer,
22
+ ChatHeading: () => import_chunk_E3WBZTTI.ChatHeading,
23
+ default: () => import_chunk_E3WBZTTI.ChatContainer_default
24
24
  });
25
- module.exports = __toCommonJS(ChatContainer_EE3FPSYO_exports);
26
- var import_chunk_4B3PPXA6 = require("./chunk-4B3PPXA6.cjs");
25
+ module.exports = __toCommonJS(ChatContainer_GCOM3M56_exports);
26
+ var import_chunk_E3WBZTTI = require("./chunk-E3WBZTTI.cjs");
27
27
  var import_chunk_FUXJAVFZ = require("./chunk-FUXJAVFZ.cjs");
28
28
  var import_chunk_LR5NENBE = require("./chunk-LR5NENBE.cjs");
29
29
  var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
@@ -32,4 +32,4 @@ var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
32
32
  ChatContainer,
33
33
  ChatHeading
34
34
  });
35
- //# sourceMappingURL=ChatContainer-EE3FPSYO.cjs.map
35
+ //# sourceMappingURL=ChatContainer-GCOM3M56.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["ChatContainer-EE3FPSYO.cjs"],
4
- "sourcesContent": ["import {\n ChatContainer,\n ChatContainer_default,\n ChatHeading\n} from \"./chunk-4B3PPXA6.cjs\";\nimport \"./chunk-FUXJAVFZ.cjs\";\nimport \"./chunk-LR5NENBE.cjs\";\nimport \"./chunk-HLMCEE5K.cjs\";\nexport {\n ChatContainer,\n ChatHeading,\n ChatContainer_default as default\n};\n//# sourceMappingURL=ChatContainer-EE3FPSYO.cjs.map\n"],
3
+ "sources": ["ChatContainer-GCOM3M56.cjs"],
4
+ "sourcesContent": ["import {\n ChatContainer,\n ChatContainer_default,\n ChatHeading\n} from \"./chunk-E3WBZTTI.cjs\";\nimport \"./chunk-FUXJAVFZ.cjs\";\nimport \"./chunk-LR5NENBE.cjs\";\nimport \"./chunk-HLMCEE5K.cjs\";\nexport {\n ChatContainer,\n ChatHeading,\n ChatContainer_default as default\n};\n//# sourceMappingURL=ChatContainer-GCOM3M56.cjs.map\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAIO;AACP,4BAAO;AACP,4BAAO;AACP,4BAAO;",
6
6
  "names": []
7
7
  }
@@ -16,11 +16,11 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var app_graph_builder_IRE3GYKE_exports = {};
20
- __export(app_graph_builder_IRE3GYKE_exports, {
19
+ var app_graph_builder_K5OAVYI6_exports = {};
20
+ __export(app_graph_builder_K5OAVYI6_exports, {
21
21
  default: () => app_graph_builder_default
22
22
  });
23
- module.exports = __toCommonJS(app_graph_builder_IRE3GYKE_exports);
23
+ module.exports = __toCommonJS(app_graph_builder_K5OAVYI6_exports);
24
24
  var import_chunk_TKHJVC2C = require("./chunk-TKHJVC2C.cjs");
25
25
  var import_chunk_4YSNVPWU = require("./chunk-4YSNVPWU.cjs");
26
26
  var import_chunk_LR5NENBE = require("./chunk-LR5NENBE.cjs");
@@ -28,11 +28,11 @@ var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
28
28
  var import_rx_react = require("@effect-rx/rx-react");
29
29
  var import_effect = require("effect");
30
30
  var import_app_framework = require("@dxos/app-framework");
31
- var import_echo_schema = require("@dxos/echo-schema");
31
+ var import_echo = require("@dxos/echo");
32
32
  var import_plugin_attention = require("@dxos/plugin-attention");
33
33
  var import_types = require("@dxos/plugin-deck/types");
34
34
  var import_plugin_graph = require("@dxos/plugin-graph");
35
- var import_echo = require("@dxos/react-client/echo");
35
+ var import_echo2 = require("@dxos/react-client/echo");
36
36
  var app_graph_builder_default = (context) => {
37
37
  const resolve = (typename) => context.getCapabilities(import_app_framework.Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
38
38
  return (0, import_app_framework.contributes)(import_app_framework.Capabilities.AppGraphBuilder, [
@@ -66,15 +66,15 @@ var app_graph_builder_default = (context) => {
66
66
  id: `${import_chunk_HLMCEE5K.THREAD_PLUGIN}/channel-chat-companion`,
67
67
  connector: (node) => {
68
68
  return import_rx_react.Rx.make((get) => {
69
- return (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => (0, import_echo_schema.isInstanceOf)(import_chunk_TKHJVC2C.ChannelType, node2.data) ? import_effect.Option.some(node2.data) : import_effect.Option.none()), import_effect.Option.map((channel) => {
69
+ return (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => import_echo.Obj.instanceOf(import_chunk_TKHJVC2C.ChannelType, node2.data) ? import_effect.Option.some(node2.data) : import_effect.Option.none()), import_effect.Option.map((channel) => {
70
70
  const callManager = context.getCapability(import_chunk_4YSNVPWU.ThreadCapabilities.CallManager);
71
- const joined = get((0, import_plugin_graph.rxFromSignal)(() => callManager.joined && callManager.roomId === (0, import_echo.fullyQualifiedId)(channel)));
71
+ const joined = get((0, import_plugin_graph.rxFromSignal)(() => callManager.joined && callManager.roomId === (0, import_echo2.fullyQualifiedId)(channel)));
72
72
  if (!joined) {
73
73
  return [];
74
74
  }
75
75
  return [
76
76
  {
77
- id: `${(0, import_echo.fullyQualifiedId)(channel)}${import_types.ATTENDABLE_PATH_SEPARATOR}chat`,
77
+ id: `${(0, import_echo2.fullyQualifiedId)(channel)}${import_types.ATTENDABLE_PATH_SEPARATOR}chat`,
78
78
  type: import_types.PLANK_COMPANION_TYPE,
79
79
  data: "chat",
80
80
  properties: {
@@ -97,10 +97,10 @@ var app_graph_builder_default = (context) => {
97
97
  (0, import_plugin_graph.createExtension)({
98
98
  id: `${import_chunk_HLMCEE5K.meta.id}/comments-companion`,
99
99
  connector: (node) => import_rx_react.Rx.make((get) => (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => {
100
- if (!(0, import_echo.isEchoObject)(node2.data) || (0, import_echo_schema.isInstanceOf)(import_chunk_TKHJVC2C.ChannelType, node2.data)) {
100
+ if (!import_echo.Obj.isObject(node2.data) || import_echo.Obj.instanceOf(import_chunk_TKHJVC2C.ChannelType, node2.data)) {
101
101
  return import_effect.Option.none();
102
102
  }
103
- const metadata = resolve((0, import_echo_schema.getTypename)(node2.data));
103
+ const metadata = resolve(import_echo.Obj.getTypename(node2.data));
104
104
  return typeof metadata.comments === "string" ? import_effect.Option.some(node2) : import_effect.Option.none();
105
105
  }), import_effect.Option.map((node2) => [
106
106
  {
@@ -127,29 +127,29 @@ var app_graph_builder_default = (context) => {
127
127
  (0, import_plugin_graph.createExtension)({
128
128
  id: `${import_chunk_HLMCEE5K.meta.id}/comment-toolbar`,
129
129
  actions: (node) => import_rx_react.Rx.make((get) => (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => {
130
- if (!(0, import_echo.isEchoObject)(node2.data) || (0, import_echo_schema.isInstanceOf)(import_chunk_TKHJVC2C.ChannelType, node2.data)) {
130
+ if (!import_echo.Obj.isObject(node2.data) || import_echo.Obj.instanceOf(import_chunk_TKHJVC2C.ChannelType, node2.data)) {
131
131
  return import_effect.Option.none();
132
132
  }
133
- const metadata = resolve((0, import_echo_schema.getTypename)(node2.data));
133
+ const metadata = resolve(import_echo.Obj.getTypename(node2.data));
134
134
  return typeof metadata.comments === "string" ? import_effect.Option.some(node2.data) : import_effect.Option.none();
135
135
  }), import_effect.Option.map((object) => {
136
136
  const selectionManager = context.getCapability(import_plugin_attention.AttentionCapabilities.Selection);
137
137
  const toolbar = get(context.capabilities(import_chunk_4YSNVPWU.ThreadCapabilities.State))[0]?.state.toolbar ?? {};
138
138
  const disabled = get((0, import_plugin_graph.rxFromSignal)(() => {
139
- const metadata = resolve((0, import_echo_schema.getTypename)(object));
140
- const selection = selectionManager.getSelection((0, import_echo.fullyQualifiedId)(object), metadata.selectionMode);
139
+ const metadata = resolve(import_echo.Obj.getTypename(object));
140
+ const selection = selectionManager.getSelection((0, import_echo2.fullyQualifiedId)(object), metadata.selectionMode);
141
141
  const anchor = (0, import_chunk_LR5NENBE.getAnchor)(selection);
142
142
  const invalidSelection = !anchor;
143
- const overlappingComment = toolbar[(0, import_echo.fullyQualifiedId)(object)];
143
+ const overlappingComment = toolbar[(0, import_echo2.fullyQualifiedId)(object)];
144
144
  return metadata.comments === "anchored" && invalidSelection || overlappingComment;
145
145
  }));
146
146
  return [
147
147
  {
148
- id: `${(0, import_echo.fullyQualifiedId)(object)}/comment`,
148
+ id: `${(0, import_echo2.fullyQualifiedId)(object)}/comment`,
149
149
  data: () => {
150
150
  const { dispatchPromise: dispatch } = context.getCapability(import_app_framework.Capabilities.IntentDispatcher);
151
- const metadata = resolve((0, import_echo_schema.getTypename)(object));
152
- const selection = selectionManager.getSelection((0, import_echo.fullyQualifiedId)(object));
151
+ const metadata = resolve(import_echo.Obj.getTypename(object));
152
+ const selection = selectionManager.getSelection((0, import_echo2.fullyQualifiedId)(object));
153
153
  const anchor = metadata.comments === "anchored" ? (0, import_chunk_LR5NENBE.getAnchor)(selection) : Date.now().toString();
154
154
  const name = metadata.getAnchorLabel?.(object, anchor);
155
155
  void dispatch((0, import_app_framework.createIntent)(import_chunk_TKHJVC2C.ThreadAction.Create, {
@@ -176,4 +176,4 @@ var app_graph_builder_default = (context) => {
176
176
  })
177
177
  ]);
178
178
  };
179
- //# sourceMappingURL=app-graph-builder-IRE3GYKE.cjs.map
179
+ //# sourceMappingURL=app-graph-builder-K5OAVYI6.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { createExtension, ROOT_ID, rxFromSignal } from '@dxos/plugin-graph';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { meta, THREAD_PLUGIN } from '../meta';\nimport { ChannelType, ThreadAction } from '../types';\nimport { getAnchor } from '../util';\n\nexport default (context: PluginContext) => {\n const resolve = (typename: string) =>\n context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n return contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${THREAD_PLUGIN}/active-call`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map((node) => {\n const [call] = get(context.capabilities(ThreadCapabilities.CallManager));\n return get(\n rxFromSignal(() =>\n call?.joined\n ? [\n {\n id: `${node.id}${ATTENDABLE_PATH_SEPARATOR}active-call`,\n type: DECK_COMPANION_TYPE,\n data: null,\n properties: {\n label: ['call panel label', { ns: THREAD_PLUGIN }],\n icon: 'ph--video-conference--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ]\n : [],\n ),\n );\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n // TODO(wittjosiah): The channel shouldn't become the companion during a call.\n // Alternative: the call/meeting/thread should be a child node of the channel and that should be opened.\n createExtension({\n id: `${THREAD_PLUGIN}/channel-chat-companion`,\n connector: (node) => {\n return Rx.make((get) => {\n return pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(ChannelType, node.data) ? Option.some(node.data) : Option.none())),\n Option.map((channel) => {\n const callManager = context.getCapability(ThreadCapabilities.CallManager);\n const joined = get(\n rxFromSignal(() => callManager.joined && callManager.roomId === fullyQualifiedId(channel)),\n );\n if (!joined) {\n return [];\n }\n\n return [\n {\n id: `${fullyQualifiedId(channel)}${ATTENDABLE_PATH_SEPARATOR}chat`,\n type: PLANK_COMPANION_TYPE,\n data: 'chat',\n properties: {\n label: ['channel companion label', { ns: THREAD_PLUGIN }],\n icon: 'ph--hash--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n );\n });\n },\n }),\n createExtension({\n id: `${meta.id}/comments-companion`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => {\n if (!Obj.isObject(node.data) || Obj.instanceOf(ChannelType, node.data)) {\n return Option.none();\n }\n const metadata = resolve(Obj.getTypename(node.data)!);\n return typeof metadata.comments === 'string' ? Option.some(node) : Option.none();\n }),\n Option.map((node) => [\n {\n id: [node.id, 'comments'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'comments',\n properties: {\n label: ['comments label', { ns: meta.id }],\n icon: 'ph--chat-text--regular',\n disposition: 'hidden',\n position: 'hoist',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/comment-toolbar`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => {\n if (!Obj.isObject(node.data) || Obj.instanceOf(ChannelType, node.data)) {\n return Option.none();\n }\n const metadata = resolve(Obj.getTypename(node.data)!);\n return typeof metadata.comments === 'string' ? Option.some(node.data) : Option.none();\n }),\n Option.map((object) => {\n const selectionManager = context.getCapability(AttentionCapabilities.Selection);\n const toolbar = get(context.capabilities(ThreadCapabilities.State))[0]?.state.toolbar ?? {};\n const disabled = get(\n rxFromSignal(() => {\n const metadata = resolve(Obj.getTypename(object)!);\n const selection = selectionManager.getSelection(fullyQualifiedId(object), metadata.selectionMode);\n const anchor = getAnchor(selection);\n const invalidSelection = !anchor;\n const overlappingComment = toolbar[fullyQualifiedId(object)];\n return (metadata.comments === 'anchored' && invalidSelection) || overlappingComment;\n }),\n );\n\n return [\n {\n id: `${fullyQualifiedId(object)}/comment`,\n data: () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const metadata = resolve(Obj.getTypename(object)!);\n const selection = selectionManager.getSelection(fullyQualifiedId(object));\n // TODO(wittjosiah): Use presence of selection to determine if the comment should be anchored.\n // Requires all components which support selection (e.g. table/kanban) to support anchored comments.\n const anchor = metadata.comments === 'anchored' ? getAnchor(selection) : Date.now().toString();\n const name = metadata.getAnchorLabel?.(object, anchor);\n void dispatch(createIntent(ThreadAction.Create, { anchor, name, subject: object }));\n },\n properties: {\n label: ['add comment label', { ns: meta.id }],\n icon: 'ph--chat-text--regular',\n disposition: 'toolbar',\n disabled,\n testId: 'thread.comment.add',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_echo", "context", "resolve", "typename", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "contributes", "AppGraphBuilder", "createExtension", "THREAD_PLUGIN", "connector", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "map", "call", "capabilities", "ThreadCapabilities", "CallManager", "rxFromSignal", "joined", "ATTENDABLE_PATH_SEPARATOR", "type", "DECK_COMPANION_TYPE", "data", "properties", "label", "ns", "icon", "position", "disposition", "getOrElse", "Obj", "instanceOf", "ChannelType", "channel", "callManager", "getCapability", "roomId", "fullyQualifiedId", "PLANK_COMPANION_TYPE", "meta", "isObject", "getTypename", "comments", "join", "actions", "object", "selectionManager", "AttentionCapabilities", "Selection", "toolbar", "State", "state", "disabled", "selection", "getSelection", "selectionMode", "anchor", "getAnchor", "invalidSelection", "overlappingComment", "dispatchPromise", "dispatch", "IntentDispatcher", "Date", "now", "toString", "name", "getAnchorLabel", "createIntent", "ThreadAction", "Create", "subject", "testId"]
7
+ }
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_U7NOIXN6_exports = {};
30
- __export(chunk_U7NOIXN6_exports, {
29
+ var chunk_3YYSLZE4_exports = {};
30
+ __export(chunk_3YYSLZE4_exports, {
31
31
  AppGraphBuilder: () => AppGraphBuilder,
32
32
  CallManager: () => CallManager,
33
33
  IntentResolver: () => IntentResolver,
@@ -36,15 +36,15 @@ __export(chunk_U7NOIXN6_exports, {
36
36
  ReactSurface: () => ReactSurface,
37
37
  ThreadState: () => ThreadState
38
38
  });
39
- module.exports = __toCommonJS(chunk_U7NOIXN6_exports);
39
+ module.exports = __toCommonJS(chunk_3YYSLZE4_exports);
40
40
  var import_app_framework = require("@dxos/app-framework");
41
- var AppGraphBuilder = (0, import_app_framework.lazy)(() => import("./app-graph-builder-IRE3GYKE.cjs"));
41
+ var AppGraphBuilder = (0, import_app_framework.lazy)(() => import("./app-graph-builder-K5OAVYI6.cjs"));
42
42
  var CallManager = (0, import_app_framework.lazy)(() => import("./call-manager-HV2XJW5O.cjs"));
43
- var IntentResolver = (0, import_app_framework.lazy)(() => import("./intent-resolver-MZ3HADNY.cjs"));
44
- var Markdown = (0, import_app_framework.lazy)(() => import("./markdown-NJDPXIKD.cjs"));
45
- var ReactRoot = (0, import_app_framework.lazy)(() => import("./react-root-IAYQ2DBO.cjs"));
46
- var ReactSurface = (0, import_app_framework.lazy)(() => import("./react-surface-AVC5VVIS.cjs"));
47
- var ThreadSettings = (0, import_app_framework.lazy)(() => import("./settings-H45P5YO2.cjs"));
43
+ var IntentResolver = (0, import_app_framework.lazy)(() => import("./intent-resolver-2TX6HSOL.cjs"));
44
+ var Markdown = (0, import_app_framework.lazy)(() => import("./markdown-GNFW2XDO.cjs"));
45
+ var ReactRoot = (0, import_app_framework.lazy)(() => import("./react-root-BKOXG5AC.cjs"));
46
+ var ReactSurface = (0, import_app_framework.lazy)(() => import("./react-surface-Q5DWX3UO.cjs"));
47
+ var ThreadSettings = (0, import_app_framework.lazy)(() => import("./settings-5O5V2NOE.cjs"));
48
48
  var ThreadState = (0, import_app_framework.lazy)(() => import("./state-IY5XX3H2.cjs"));
49
49
  // Annotate the CommonJS export names for ESM import in node:
50
50
  0 && (module.exports = {
@@ -56,4 +56,4 @@ var ThreadState = (0, import_app_framework.lazy)(() => import("./state-IY5XX3H2.
56
56
  ReactSurface,
57
57
  ThreadState
58
58
  });
59
- //# sourceMappingURL=chunk-U7NOIXN6.cjs.map
59
+ //# sourceMappingURL=chunk-3YYSLZE4.cjs.map
@@ -26,22 +26,22 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_4B3PPXA6_exports = {};
30
- __export(chunk_4B3PPXA6_exports, {
29
+ var chunk_E3WBZTTI_exports = {};
30
+ __export(chunk_E3WBZTTI_exports, {
31
31
  ChatContainer: () => ChatContainer,
32
32
  ChatContainer_default: () => ChatContainer_default,
33
33
  ChatHeading: () => ChatHeading,
34
34
  MessageContainer: () => MessageContainer,
35
35
  command: () => command
36
36
  });
37
- module.exports = __toCommonJS(chunk_4B3PPXA6_exports);
37
+ module.exports = __toCommonJS(chunk_E3WBZTTI_exports);
38
38
  var import_chunk_FUXJAVFZ = require("./chunk-FUXJAVFZ.cjs");
39
39
  var import_chunk_LR5NENBE = require("./chunk-LR5NENBE.cjs");
40
40
  var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
41
41
  var import_tracking = require("@preact-signals/safe-react/tracking");
42
42
  var import_react = __toESM(require("react"));
43
- var import_live_object = require("@dxos/live-object");
44
- var import_echo = require("@dxos/react-client/echo");
43
+ var import_echo = require("@dxos/echo");
44
+ var import_echo2 = require("@dxos/react-client/echo");
45
45
  var import_halo = require("@dxos/react-client/halo");
46
46
  var import_react_ui = require("@dxos/react-ui");
47
47
  var import_react_ui_editor = require("@dxos/react-ui-editor");
@@ -55,7 +55,7 @@ var import_view = require("@codemirror/view");
55
55
  var import_react2 = require("@phosphor-icons/react");
56
56
  var import_react3 = __toESM(require("react"));
57
57
  var import_app_framework = require("@dxos/app-framework");
58
- var import_live_object2 = require("@dxos/live-object");
58
+ var import_live_object = require("@dxos/live-object");
59
59
  var import_react_client = require("@dxos/react-client");
60
60
  var import_halo2 = require("@dxos/react-client/halo");
61
61
  var import_react_ui2 = require("@dxos/react-ui");
@@ -153,7 +153,7 @@ var MessageContainer = ({ message, members, editable = false, onDelete }) => {
153
153
  block: textBlock,
154
154
  isAuthor: userIsAuthor,
155
155
  editing
156
- }), import_live_object2.RefArray.targets(references).map((reference, index) => /* @__PURE__ */ import_react3.default.createElement(MessagePart, {
156
+ }), import_live_object.RefArray.targets(references).map((reference, index) => /* @__PURE__ */ import_react3.default.createElement(MessagePart, {
157
157
  key: index,
158
158
  part: reference
159
159
  })));
@@ -269,9 +269,9 @@ var ChatHeading = ({ attendableId }) => {
269
269
  var ChatContainer = ({ space, thread, context, current, autoFocusTextbox }) => {
270
270
  var _effect = (0, import_tracking.useSignals)();
271
271
  try {
272
- const id = (0, import_echo.fullyQualifiedId)(thread);
272
+ const id = (0, import_echo2.fullyQualifiedId)(thread);
273
273
  const identity = (0, import_halo.useIdentity)();
274
- const members = (0, import_echo.useMembers)(space?.key);
274
+ const members = (0, import_echo2.useMembers)(space?.key);
275
275
  const activity = (0, import_chunk_FUXJAVFZ.useStatus)(space, id);
276
276
  const { t } = (0, import_react_ui.useTranslation)(import_chunk_HLMCEE5K.THREAD_PLUGIN);
277
277
  const [_count, _setCount] = (0, import_react.useState)(0);
@@ -307,7 +307,7 @@ var ChatContainer = ({ space, thread, context, current, autoFocusTextbox }) => {
307
307
  if (!messageRef.current?.length) {
308
308
  return false;
309
309
  }
310
- thread.messages.push((0, import_live_object.makeRef)((0, import_live_object.live)(import_schema.DataType.Message, {
310
+ thread.messages.push(import_echo.Ref.make(import_echo.Obj.make(import_schema.DataType.Message, {
311
311
  sender: {
312
312
  identityDid: identity.did
313
313
  },
@@ -319,7 +319,7 @@ var ChatContainer = ({ space, thread, context, current, autoFocusTextbox }) => {
319
319
  }
320
320
  ],
321
321
  properties: context ? {
322
- context: (0, import_live_object.makeRef)(context)
322
+ context: import_echo.Ref.make(context)
323
323
  } : void 0
324
324
  })));
325
325
  messageRef.current = "";
@@ -368,4 +368,4 @@ var ChatContainer_default = ChatContainer;
368
368
  MessageContainer,
369
369
  command
370
370
  });
371
- //# sourceMappingURL=chunk-4B3PPXA6.cjs.map
371
+ //# sourceMappingURL=chunk-E3WBZTTI.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ChatContainer.tsx", "../../../src/components/MessageContainer.tsx", "../../../src/components/command-extension.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { Obj, Ref } from '@dxos/echo';\nimport { fullyQualifiedId, type Space, useMembers } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Icon, ScrollArea, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport {\n MessageTextbox,\n type MessageTextboxProps,\n Thread,\n ThreadFooter,\n threadLayout,\n type ThreadProps,\n} from '@dxos/react-ui-thread';\nimport { DataType } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { MessageContainer } from './MessageContainer';\nimport { command } from './command-extension';\nimport { useStatus } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ThreadType } from '../types';\nimport { getMessageMetadata } from '../util';\n\nexport const ChatHeading = ({ attendableId }: { attendableId?: string }) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n return (\n <div role='none' className='flex items-center'>\n <StackItem.SigilButton attendableId={attendableId}>\n <Icon icon='ph--chat--regular' size={5} />\n </StackItem.SigilButton>\n <StackItem.HeadingLabel attendableId={attendableId}>{t('chat heading')}</StackItem.HeadingLabel>\n </div>\n );\n};\n\nexport type ChatContainerProps = {\n space: Space;\n thread: ThreadType;\n context?: Obj.Any;\n autoFocusTextbox?: boolean;\n} & Pick<ThreadProps, 'current'>;\n\nexport const ChatContainer = ({ space, thread, context, current, autoFocusTextbox }: ChatContainerProps) => {\n const id = fullyQualifiedId(thread);\n const identity = useIdentity()!;\n const members = useMembers(space?.key);\n const activity = useStatus(space, id);\n const { t } = useTranslation(THREAD_PLUGIN);\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [_count, _setCount] = useState(0);\n const rerenderEditor = () => _setCount((count) => count + 1);\n const [autoFocus, setAutoFocus] = useState(autoFocusTextbox);\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n const { themeMode } = useThemeContext();\n\n const textboxMetadata = getMessageMetadata(id, identity);\n const messageRef = useRef('');\n const extensions = useMemo(\n () => [\n createBasicExtensions({ placeholder: t('message placeholder') }),\n createThemeExtensions({ themeMode }),\n listener({ onChange: (text) => (messageRef.current = text) }),\n command,\n ],\n [themeMode, _count],\n );\n\n // TODO(thure): Factor out.\n // TODO(thure): `flex-col-reverse` does not work to start the container scrolled to the end while also using\n // `ScrollArea`. This is the least-bad way I found to scroll to the end on mount. Note that 0ms was insufficient\n // for the desired effect; this is likely hardware-dependent and should be reevaluated.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n useLayoutEffect(() => {\n scrollToEnd('instant');\n }, []);\n\n // TODO(burdon): Change to model.\n const handleCreate: MessageTextboxProps['onSend'] = () => {\n if (!messageRef.current?.length) {\n return false;\n }\n\n thread.messages.push(\n Ref.make(\n Obj.make(DataType.Message, {\n sender: { identityDid: identity.did },\n created: new Date().toISOString(),\n blocks: [{ type: 'text', text: messageRef.current }],\n properties: context ? { context: Ref.make(context) } : undefined,\n }),\n ),\n );\n\n messageRef.current = '';\n setAutoFocus(true);\n scrollToEnd('smooth');\n rerenderEditor();\n return true;\n };\n\n return (\n <Thread\n current={current}\n id={id}\n classNames='bs-full grid-rows-[1fr_min-content_min-content] overflow-hidden transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0'\n >\n <ScrollArea.Root classNames='col-span-2'>\n <ScrollArea.Viewport classNames='overflow-anchored after:overflow-anchor after:block after:bs-px after:-mbs-px [&>div]:min-bs-full [&>div]:!grid [&>div]:grid-rows-[1fr_0]'>\n <div role='none' className={mx(threadLayout, 'place-self-end')}>\n {thread.messages\n .map((message) => message.target)\n .filter(isNonNullable)\n .map((message) => (\n <MessageContainer key={message.id} message={message} members={members} />\n ))}\n </div>\n {/* NOTE(thure): This can’t also be the `overflow-anchor` because `ScrollArea` injects an interceding node that contains this necessary ref’d element. */}\n <div role='none' className='bs-px -mbs-px' ref={threadScrollRef} />\n <ScrollArea.Scrollbar>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n <MessageTextbox extensions={extensions} autoFocus={autoFocus} onSend={handleCreate} {...textboxMetadata} />\n <ThreadFooter activity={activity}>{t('activity message')}</ThreadFooter>\n </Thread>\n );\n};\n\nexport default ChatContainer;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\nimport { Check, PencilSimple, X } from '@phosphor-icons/react';\nimport React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { type Obj, type Type } from '@dxos/echo';\nimport { RefArray } from '@dxos/live-object';\nimport { PublicKey } from '@dxos/react-client';\nimport { type SpaceMember } from '@dxos/react-client/echo';\nimport { useIdentity, type Identity } from '@dxos/react-client/halo';\nimport { Button, ButtonGroup, Tooltip, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';\nimport {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';\nimport { type DataType } from '@dxos/schema';\n\nimport { command } from './command-extension';\nimport { useOnEditAnalytics } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\n// TODO(thure): #8149\nconst messageControlClassNames = ['!p-1 !min-bs-0 transition-opacity', hoverableControlItem];\n\nexport type MessageContainerProps = {\n message: DataType.Message;\n members: SpaceMember[];\n editable?: boolean;\n onDelete?: (id: string) => void;\n};\n\nexport const MessageContainer = ({ message, members, editable = false, onDelete }: MessageContainerProps) => {\n const senderIdentity = members.find(\n (member) =>\n (message.sender.identityDid && member.identity.did === message.sender.identityDid) ||\n (message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey)),\n )?.identity;\n const messageMetadata = getMessageMetadata(message.id, senderIdentity);\n const userIsAuthor = useIdentity()?.did === messageMetadata.authorId;\n const [editing, setEditing] = useState(false);\n const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);\n const { t } = useTranslation(THREAD_PLUGIN);\n const editLabel = t(editing ? 'save message label' : 'edit message label');\n const deleteLabel = t('delete message label');\n const textBlock = message.blocks.find((block) => block.type === 'text');\n const references = message.blocks.filter((block) => block.type === 'reference').map((block) => block.reference);\n\n useOnEditAnalytics(message, textBlock, !!editing);\n\n return (\n <MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>\n <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>\n <ButtonGroup classNames='mie-1'>\n {userIsAuthor && editable && (\n <Tooltip.Trigger asChild content={editLabel}>\n <Button\n variant='ghost'\n data-testid={editing ? 'thread.message.save' : 'thread.message.edit'}\n classNames={messageControlClassNames}\n onClick={() => setEditing((editing) => !editing)}\n >\n <span className='sr-only'>{editLabel}</span>\n {editing ? <Check className={getSize(4)} /> : <PencilSimple className={getSize(4)} />}\n </Button>\n </Tooltip.Trigger>\n )}\n {onDelete && (\n <Tooltip.Trigger asChild content={deleteLabel}>\n <Button\n variant='ghost'\n data-testid='thread.message.delete'\n classNames={messageControlClassNames}\n onClick={() => handleDelete()}\n >\n <span className='sr-only'>{deleteLabel}</span>\n <X className={getSize(4)} />\n </Button>\n </Tooltip.Trigger>\n )}\n </ButtonGroup>\n </MessageHeading>\n {textBlock && <TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} />}\n {RefArray.targets(references).map((reference, index) => (\n <MessagePart key={index} part={reference} />\n ))}\n </MessageRoot>\n );\n};\n\nconst MessagePart = ({ part }: { part: Type.Expando }) => {\n return <MessageBlockObjectTile subject={part} />;\n};\n\nconst TextboxBlock = ({\n block,\n isAuthor,\n editing,\n}: {\n block: DataType.MessageBlock.Text;\n editing?: boolean;\n isAuthor?: boolean;\n identity?: Identity;\n}) => {\n const { themeMode } = useThemeContext();\n const inMemoryContentRef = useRef(block.text);\n\n const handleDocumentChange = useCallback((newState: string) => {\n inMemoryContentRef.current = newState;\n }, []);\n\n const saveDocumentChange = useCallback(() => {\n block.text = inMemoryContentRef.current;\n }, [block]);\n\n useOnTransition(editing, true, false, saveDocumentChange);\n\n const { parentRef, focusAttributes, view } = useTextEditor(\n () => ({\n initialValue: block.text,\n extensions: [\n createBasicExtensions({ readOnly: !isAuthor || !editing }),\n createThemeExtensions({ themeMode }),\n command,\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n handleDocumentChange(update.state.doc.toString());\n }\n }),\n ],\n }),\n [block.text, editing, isAuthor, themeMode, handleDocumentChange],\n );\n\n useEffect(() => {\n editing && view?.focus();\n }, [editing, view]);\n\n return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;\n};\n\nconst MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.Any }>(({ subject }, forwardedRef) => {\n // TODO(burdon): Use annotation to get title.\n let title = (subject as any).name ?? (subject as any).title ?? (subject as any).type ?? 'Object';\n if (typeof title !== 'string') {\n title = title?.content ?? '';\n }\n\n return (\n <div\n role='group'\n className={mx('grid col-span-3 py-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}\n ref={forwardedRef}\n >\n <Surface role='card' limit={1} data={{ subject }} fallback={title} />\n </div>\n );\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { StreamLanguage, HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\n/**\n * https://github.com/codemirror/stream-parser/blob/main/test/test-stream-parser.ts\n */\nconst parser = StreamLanguage.define<{ count: number }>({\n startState: () => ({ count: 0 }),\n token: (stream, state) => {\n state.count++;\n if (stream.eatSpace()) {\n return null;\n }\n if (state.count === 1 && stream.match(/^(\\/\\w+)/)) {\n return 'tagName';\n }\n stream.next();\n return null;\n },\n});\n\nconst styles = HighlightStyle.define([\n { tag: tags.tagName, class: mx('dx-tag dx-tag--indigo text-baseText font-medium') },\n]);\n\nexport const command: Extension = [parser, syntaxHighlighting(styles)];\n"],
5
+ "mappings": "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",
6
+ "names": ["import_echo", "import_react", "import_halo", "import_react_ui", "import_react_ui_editor", "import_react_ui_theme", "import_react_ui_thread", "parser", "StreamLanguage", "define", "startState", "count", "token", "stream", "state", "eatSpace", "match", "next", "styles", "HighlightStyle", "tag", "tags", "tagName", "class", "mx", "command", "syntaxHighlighting", "messageControlClassNames", "hoverableControlItem", "MessageContainer", "message", "members", "editable", "onDelete", "senderIdentity", "find", "member", "sender", "identityDid", "identity", "did", "identityKey", "PublicKey", "equals", "messageMetadata", "getMessageMetadata", "id", "userIsAuthor", "useIdentity", "authorId", "editing", "setEditing", "useState", "handleDelete", "useCallback", "t", "useTranslation", "THREAD_PLUGIN", "editLabel", "deleteLabel", "textBlock", "blocks", "block", "type", "references", "filter", "map", "reference", "useOnEditAnalytics", "React", "MessageRoot", "classNames", "hoverableControls", "hoverableFocusedWithinControls", "MessageHeading", "authorName", "timestamp", "ButtonGroup", "Tooltip", "Trigger", "asChild", "content", "Button", "variant", "data-testid", "onClick", "span", "className", "Check", "getSize", "PencilSimple", "X", "TextboxBlock", "isAuthor", "RefArray", "targets", "index", "MessagePart", "key", "part", "MessageBlockObjectTile", "subject", "themeMode", "useThemeContext", "inMemoryContentRef", "useRef", "text", "handleDocumentChange", "newState", "current", "saveDocumentChange", "useOnTransition", "parentRef", "focusAttributes", "view", "useTextEditor", "initialValue", "extensions", "createBasicExtensions", "readOnly", "createThemeExtensions", "EditorView", "updateListener", "of", "update", "docChanged", "doc", "toString", "useEffect", "focus", "div", "role", "ref", "forwardRef", "forwardedRef", "title", "name", "Surface", "limit", "data", "fallback", "ChatHeading", "attendableId", "StackItem", "SigilButton", "Icon", "icon", "size", "HeadingLabel", "ChatContainer", "space", "thread", "context", "autoFocusTextbox", "fullyQualifiedId", "useMembers", "activity", "useStatus", "_count", "_setCount", "rerenderEditor", "autoFocus", "setAutoFocus", "threadScrollRef", "textboxMetadata", "messageRef", "useMemo", "placeholder", "listener", "onChange", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "useLayoutEffect", "handleCreate", "length", "messages", "push", "Ref", "make", "Obj", "DataType", "Message", "created", "Date", "toISOString", "properties", "undefined", "Thread", "ScrollArea", "Root", "Viewport", "threadLayout", "target", "isNonNullable", "Scrollbar", "Thumb", "MessageTextbox", "onSend", "ThreadFooter"]
7
+ }
@@ -26,15 +26,15 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_6B3M6XRE_exports = {};
30
- __export(chunk_6B3M6XRE_exports, {
29
+ var chunk_U4SZUERU_exports = {};
30
+ __export(chunk_U4SZUERU_exports, {
31
31
  Call: () => Call,
32
32
  ChannelContainer: () => ChannelContainer,
33
33
  ChannelContainer_default: () => ChannelContainer_default
34
34
  });
35
- module.exports = __toCommonJS(chunk_6B3M6XRE_exports);
35
+ module.exports = __toCommonJS(chunk_U4SZUERU_exports);
36
36
  var import_chunk_4YSNVPWU = require("./chunk-4YSNVPWU.cjs");
37
- var import_chunk_4B3PPXA6 = require("./chunk-4B3PPXA6.cjs");
37
+ var import_chunk_E3WBZTTI = require("./chunk-E3WBZTTI.cjs");
38
38
  var import_chunk_FUXJAVFZ = require("./chunk-FUXJAVFZ.cjs");
39
39
  var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
40
40
  var import_tracking = require("@preact-signals/safe-react/tracking");
@@ -95,7 +95,7 @@ var Toolbar = ({ classNames, channel, participants, autoHideControls = true, onJ
95
95
  const isScreensharing = call.media.screenshareTrack !== void 0;
96
96
  const canSharescreen = typeof navigator.mediaDevices !== "undefined" && navigator.mediaDevices.getDisplayMedia !== void 0;
97
97
  return /* @__PURE__ */ import_react3.default.createElement("div", {
98
- className: (0, import_react_ui_theme.mx)("z-20 flex justify-center m-8", autoHideControls && import_react_ui_theme.hoverableHidden)
98
+ className: (0, import_react_ui_theme.mx)("z-20 flex justify-center m-8", autoHideControls && import_react_ui_theme.groupHoverControlItemWithTransition)
99
99
  }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Toolbar.Root, {
100
100
  classNames: [
101
101
  "p-2 bg-modalSurface rounded-lg shadow-lg",
@@ -581,7 +581,7 @@ var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinne
581
581
  }, children, onClick && /* @__PURE__ */ import_react9.default.createElement("div", {
582
582
  className: "z-10 absolute top-1 right-1 flex"
583
583
  }, /* @__PURE__ */ import_react9.default.createElement(import_react_ui3.IconButton, {
584
- classNames: (0, import_react_ui_theme5.mx)("p-1 min-bs-1 rounded", import_react_ui_theme5.hoverableHidden),
584
+ classNames: (0, import_react_ui_theme5.mx)("p-1 min-bs-1 rounded", import_react_ui_theme5.groupHoverControlItemWithTransition),
585
585
  iconOnly: true,
586
586
  icon: pinned ? "ph--x--regular" : "ph--arrows-out--regular",
587
587
  size: pinned ? 5 : 4,
@@ -886,7 +886,7 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
886
886
  attendableId: (0, import_echo.fullyQualifiedId)(channel),
887
887
  role,
888
888
  onJoinCall: handleJoin
889
- }), /* @__PURE__ */ import_react.default.createElement(import_chunk_4B3PPXA6.ChatContainer_default, {
889
+ }), /* @__PURE__ */ import_react.default.createElement(import_chunk_E3WBZTTI.ChatContainer_default, {
890
890
  space,
891
891
  thread: channel.defaultThread.target
892
892
  })));
@@ -981,4 +981,4 @@ var ChannelToolbar = ({ attendableId, role, onJoinCall }) => {
981
981
  ChannelContainer,
982
982
  ChannelContainer_default
983
983
  });
984
- //# sourceMappingURL=chunk-6B3M6XRE.cjs.map
984
+ //# sourceMappingURL=chunk-U4SZUERU.cjs.map