@signalwire/web-components 4.0.0-beta.10 → 4.0.0-beta.12

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 (352) hide show
  1. package/README.md +48 -55
  2. package/dist/_virtual/_commonjsHelpers.js +9 -0
  3. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  4. package/dist/_virtual/prism-python.js +28 -0
  5. package/dist/_virtual/prism-python.js.map +1 -0
  6. package/dist/_virtual/prism-python2.js +5 -0
  7. package/dist/_virtual/prism-python2.js.map +1 -0
  8. package/dist/_virtual/prism-typescript.js +28 -0
  9. package/dist/_virtual/prism-typescript.js.map +1 -0
  10. package/dist/_virtual/prism-typescript2.js +5 -0
  11. package/dist/_virtual/prism-typescript2.js.map +1 -0
  12. package/dist/_virtual/prism.js +28 -0
  13. package/dist/_virtual/prism.js.map +1 -0
  14. package/dist/_virtual/prism2.js +5 -0
  15. package/dist/_virtual/prism2.js.map +1 -0
  16. package/dist/assets/sw_background.webp.js +5 -0
  17. package/dist/assets/sw_background.webp.js.map +1 -0
  18. package/dist/components/UI/DEFAULT_BACKGROUND.d.ts +4 -0
  19. package/dist/components/UI/DEFAULT_BACKGROUND.d.ts.map +1 -0
  20. package/dist/components/UI/DEFAULT_BACKGROUND.js +5 -0
  21. package/dist/components/UI/DEFAULT_BACKGROUND.js.map +1 -0
  22. package/dist/components/UI/controls/sw-ui-control-bar.d.ts +114 -0
  23. package/dist/components/UI/controls/sw-ui-control-bar.d.ts.map +1 -0
  24. package/dist/components/UI/controls/sw-ui-control-bar.js +324 -0
  25. package/dist/components/UI/controls/sw-ui-control-bar.js.map +1 -0
  26. package/dist/components/UI/controls/sw-ui-dialpad.d.ts +67 -0
  27. package/dist/components/UI/controls/sw-ui-dialpad.d.ts.map +1 -0
  28. package/dist/components/UI/controls/sw-ui-dialpad.js +359 -0
  29. package/dist/components/UI/controls/sw-ui-dialpad.js.map +1 -0
  30. package/dist/components/UI/controls/sw-ui-dropup.d.ts +42 -0
  31. package/dist/components/UI/controls/sw-ui-dropup.d.ts.map +1 -0
  32. package/dist/components/UI/controls/sw-ui-dropup.js +137 -0
  33. package/dist/components/UI/controls/sw-ui-dropup.js.map +1 -0
  34. package/dist/components/UI/controls/sw-ui-split-button.d.ts +44 -0
  35. package/dist/components/UI/controls/sw-ui-split-button.d.ts.map +1 -0
  36. package/dist/components/UI/controls/sw-ui-split-button.js +177 -0
  37. package/dist/components/UI/controls/sw-ui-split-button.js.map +1 -0
  38. package/dist/components/UI/icons/backspace.svg.js +10 -0
  39. package/dist/components/UI/icons/backspace.svg.js.map +1 -0
  40. package/dist/components/UI/icons/camera-off.svg.js +8 -0
  41. package/dist/components/UI/icons/camera-off.svg.js.map +1 -0
  42. package/dist/components/UI/icons/camera-on.svg.js +8 -0
  43. package/dist/components/UI/icons/camera-on.svg.js.map +1 -0
  44. package/dist/components/UI/icons/check-circle.svg.js +6 -0
  45. package/dist/components/UI/icons/check-circle.svg.js.map +1 -0
  46. package/dist/components/UI/icons/chevron-up.svg.js +8 -0
  47. package/dist/components/UI/icons/chevron-up.svg.js.map +1 -0
  48. package/dist/components/UI/icons/close.svg.js +6 -0
  49. package/dist/components/UI/icons/close.svg.js.map +1 -0
  50. package/dist/components/UI/icons/copy.svg.js +6 -0
  51. package/dist/components/UI/icons/copy.svg.js.map +1 -0
  52. package/dist/components/UI/icons/download.svg.js +6 -0
  53. package/dist/components/UI/icons/download.svg.js.map +1 -0
  54. package/dist/components/UI/icons/fullscreen-exit.svg.js +8 -0
  55. package/dist/components/UI/icons/fullscreen-exit.svg.js.map +1 -0
  56. package/dist/components/UI/icons/fullscreen.svg.js +8 -0
  57. package/dist/components/UI/icons/fullscreen.svg.js.map +1 -0
  58. package/dist/components/UI/icons/hand-raise.svg.js +6 -0
  59. package/dist/components/UI/icons/hand-raise.svg.js.map +1 -0
  60. package/dist/components/UI/icons/icons.d.ts +31 -0
  61. package/dist/components/UI/icons/icons.d.ts.map +1 -0
  62. package/dist/components/UI/icons/icons.js +60 -0
  63. package/dist/components/UI/icons/icons.js.map +1 -0
  64. package/dist/components/UI/icons/index.d.ts +4 -0
  65. package/dist/components/UI/icons/index.d.ts.map +1 -0
  66. package/dist/components/UI/icons/info-circle.svg.js +6 -0
  67. package/dist/components/UI/icons/info-circle.svg.js.map +1 -0
  68. package/dist/components/UI/icons/mic-off.svg.js +8 -0
  69. package/dist/components/UI/icons/mic-off.svg.js.map +1 -0
  70. package/dist/components/UI/icons/mic-on.svg.js +8 -0
  71. package/dist/components/UI/icons/mic-on.svg.js.map +1 -0
  72. package/dist/components/UI/icons/person.svg.js +8 -0
  73. package/dist/components/UI/icons/person.svg.js.map +1 -0
  74. package/dist/components/UI/icons/phone-call.svg.js +8 -0
  75. package/dist/components/UI/icons/phone-call.svg.js.map +1 -0
  76. package/dist/components/UI/icons/phone-end.svg.js +8 -0
  77. package/dist/components/UI/icons/phone-end.svg.js.map +1 -0
  78. package/dist/components/UI/icons/room.svg.js +8 -0
  79. package/dist/components/UI/icons/room.svg.js.map +1 -0
  80. package/dist/components/UI/icons/screen-share-off.svg.js +9 -0
  81. package/dist/components/UI/icons/screen-share-off.svg.js.map +1 -0
  82. package/dist/components/UI/icons/screen-share.svg.js +9 -0
  83. package/dist/components/UI/icons/screen-share.svg.js.map +1 -0
  84. package/dist/components/UI/icons/sendIcon.svg.js +9 -0
  85. package/dist/components/UI/icons/sendIcon.svg.js.map +1 -0
  86. package/dist/components/UI/icons/settings.svg.js +8 -0
  87. package/dist/components/UI/icons/settings.svg.js.map +1 -0
  88. package/dist/components/UI/icons/speaker-off.svg.js +8 -0
  89. package/dist/components/UI/icons/speaker-off.svg.js.map +1 -0
  90. package/dist/components/UI/icons/speaker-on.svg.js +8 -0
  91. package/dist/components/UI/icons/speaker-on.svg.js.map +1 -0
  92. package/dist/components/UI/icons/spinner.svg.js +9 -0
  93. package/dist/components/UI/icons/spinner.svg.js.map +1 -0
  94. package/dist/components/UI/icons/sw-logo.svg.js +11 -0
  95. package/dist/components/UI/icons/sw-logo.svg.js.map +1 -0
  96. package/dist/components/UI/icons/sw-ui-icon.d.ts +28 -0
  97. package/dist/components/UI/icons/sw-ui-icon.d.ts.map +1 -0
  98. package/dist/components/UI/icons/sw-ui-icon.js +47 -0
  99. package/dist/components/UI/icons/sw-ui-icon.js.map +1 -0
  100. package/dist/components/UI/icons/transcript.svg.js +10 -0
  101. package/dist/components/UI/icons/transcript.svg.js.map +1 -0
  102. package/dist/components/UI/index.d.ts +18 -0
  103. package/dist/components/UI/index.d.ts.map +1 -0
  104. package/dist/components/UI/layout/sw-ui-background.d.ts +33 -0
  105. package/dist/components/UI/layout/sw-ui-background.d.ts.map +1 -0
  106. package/dist/components/UI/layout/sw-ui-background.js +106 -0
  107. package/dist/components/UI/layout/sw-ui-background.js.map +1 -0
  108. package/dist/components/UI/layout/sw-ui-call-layout.d.ts +69 -0
  109. package/dist/components/UI/layout/sw-ui-call-layout.d.ts.map +1 -0
  110. package/dist/components/UI/layout/sw-ui-call-layout.js +278 -0
  111. package/dist/components/UI/layout/sw-ui-call-layout.js.map +1 -0
  112. package/dist/components/UI/layout/sw-ui-content-drawer.d.ts +50 -0
  113. package/dist/components/UI/layout/sw-ui-content-drawer.d.ts.map +1 -0
  114. package/dist/components/UI/layout/sw-ui-content-drawer.js +413 -0
  115. package/dist/components/UI/layout/sw-ui-content-drawer.js.map +1 -0
  116. package/dist/components/UI/layout/sw-ui-modal.d.ts +31 -0
  117. package/dist/components/UI/layout/sw-ui-modal.d.ts.map +1 -0
  118. package/dist/components/UI/layout/sw-ui-modal.js +150 -0
  119. package/dist/components/UI/layout/sw-ui-modal.js.map +1 -0
  120. package/dist/components/UI/layout/sw-ui-responsive-container.d.ts +15 -0
  121. package/dist/components/UI/layout/sw-ui-responsive-container.d.ts.map +1 -0
  122. package/dist/components/UI/layout/sw-ui-responsive-container.js +78 -0
  123. package/dist/components/UI/layout/sw-ui-responsive-container.js.map +1 -0
  124. package/dist/components/UI/sw-ui-alert.d.ts +37 -0
  125. package/dist/components/UI/sw-ui-alert.d.ts.map +1 -0
  126. package/dist/components/UI/sw-ui-alert.js +126 -0
  127. package/dist/components/UI/sw-ui-alert.js.map +1 -0
  128. package/dist/components/UI/sw-ui-transcript-view.d.ts +56 -0
  129. package/dist/components/UI/sw-ui-transcript-view.d.ts.map +1 -0
  130. package/dist/components/UI/sw-ui-transcript-view.js +341 -0
  131. package/dist/components/UI/sw-ui-transcript-view.js.map +1 -0
  132. package/dist/components/{audio-level.d.ts → sw-audio-level.d.ts} +44 -4
  133. package/dist/components/sw-audio-level.d.ts.map +1 -0
  134. package/dist/components/sw-audio-level.js +252 -0
  135. package/dist/components/sw-audio-level.js.map +1 -0
  136. package/dist/components/sw-call-controls.d.ts +58 -0
  137. package/dist/components/sw-call-controls.d.ts.map +1 -0
  138. package/dist/components/sw-call-controls.js +186 -0
  139. package/dist/components/sw-call-controls.js.map +1 -0
  140. package/dist/components/sw-call-dialpad.d.ts +52 -0
  141. package/dist/components/sw-call-dialpad.d.ts.map +1 -0
  142. package/dist/components/sw-call-dialpad.js +70 -0
  143. package/dist/components/sw-call-dialpad.js.map +1 -0
  144. package/dist/components/sw-call-media.d.ts +68 -0
  145. package/dist/components/sw-call-media.d.ts.map +1 -0
  146. package/dist/components/sw-call-media.js +220 -0
  147. package/dist/components/sw-call-media.js.map +1 -0
  148. package/dist/components/sw-call-provider.d.ts +41 -0
  149. package/dist/components/sw-call-provider.d.ts.map +1 -0
  150. package/dist/components/sw-call-provider.js +37 -0
  151. package/dist/components/sw-call-provider.js.map +1 -0
  152. package/dist/components/sw-call-status.d.ts +50 -0
  153. package/dist/components/sw-call-status.d.ts.map +1 -0
  154. package/dist/components/sw-call-status.js +203 -0
  155. package/dist/components/sw-call-status.js.map +1 -0
  156. package/dist/components/sw-call-widget/client-factory.d.ts +6 -0
  157. package/dist/components/sw-call-widget/client-factory.d.ts.map +1 -0
  158. package/dist/components/sw-call-widget/client-factory.js +25 -0
  159. package/dist/components/sw-call-widget/client-factory.js.map +1 -0
  160. package/dist/components/sw-call-widget/sw-call-widget.d.ts +110 -0
  161. package/dist/components/sw-call-widget/sw-call-widget.d.ts.map +1 -0
  162. package/dist/components/sw-call-widget/sw-call-widget.js +250 -0
  163. package/dist/components/sw-call-widget/sw-call-widget.js.map +1 -0
  164. package/dist/components/sw-call-widget/sw-call-widget.templates.d.ts +17 -0
  165. package/dist/components/sw-call-widget/sw-call-widget.templates.d.ts.map +1 -0
  166. package/dist/components/sw-call-widget/sw-call-widget.templates.js +80 -0
  167. package/dist/components/sw-call-widget/sw-call-widget.templates.js.map +1 -0
  168. package/dist/components/sw-click-to-call.d.ts +39 -0
  169. package/dist/components/sw-click-to-call.d.ts.map +1 -0
  170. package/dist/components/sw-click-to-call.js +87 -0
  171. package/dist/components/sw-click-to-call.js.map +1 -0
  172. package/dist/components/sw-device-selector/index.d.ts +2 -0
  173. package/dist/components/sw-device-selector/index.d.ts.map +1 -0
  174. package/dist/components/sw-device-selector/sw-device-selector.d.ts +69 -0
  175. package/dist/components/sw-device-selector/sw-device-selector.d.ts.map +1 -0
  176. package/dist/components/sw-device-selector/sw-device-selector.js +277 -0
  177. package/dist/components/sw-device-selector/sw-device-selector.js.map +1 -0
  178. package/dist/components/sw-device-selector/sw-device-selector.styles.d.ts +2 -0
  179. package/dist/components/sw-device-selector/sw-device-selector.styles.d.ts.map +1 -0
  180. package/dist/components/sw-device-selector/sw-device-selector.styles.js +238 -0
  181. package/dist/components/sw-device-selector/sw-device-selector.styles.js.map +1 -0
  182. package/dist/components/{directory.d.ts → sw-directory.d.ts} +17 -3
  183. package/dist/components/sw-directory.d.ts.map +1 -0
  184. package/dist/components/sw-directory.js +434 -0
  185. package/dist/components/sw-directory.js.map +1 -0
  186. package/dist/components/sw-local-camera.d.ts +53 -0
  187. package/dist/components/sw-local-camera.d.ts.map +1 -0
  188. package/dist/components/sw-local-camera.js +147 -0
  189. package/dist/components/sw-local-camera.js.map +1 -0
  190. package/dist/components/sw-participant-controls.d.ts +58 -0
  191. package/dist/components/sw-participant-controls.d.ts.map +1 -0
  192. package/dist/components/sw-participant-controls.js +305 -0
  193. package/dist/components/sw-participant-controls.js.map +1 -0
  194. package/dist/components/sw-participants.d.ts +55 -0
  195. package/dist/components/sw-participants.d.ts.map +1 -0
  196. package/dist/components/sw-participants.js +319 -0
  197. package/dist/components/sw-participants.js.map +1 -0
  198. package/dist/components/sw-self-media.d.ts +46 -0
  199. package/dist/components/sw-self-media.d.ts.map +1 -0
  200. package/dist/components/sw-self-media.js +106 -0
  201. package/dist/components/sw-self-media.js.map +1 -0
  202. package/dist/context/CallStateContextController.d.ts +31 -0
  203. package/dist/context/CallStateContextController.d.ts.map +1 -0
  204. package/dist/context/CallStateContextController.js +125 -0
  205. package/dist/context/CallStateContextController.js.map +1 -0
  206. package/dist/context/DevicesContextController.d.ts +38 -0
  207. package/dist/context/DevicesContextController.d.ts.map +1 -0
  208. package/dist/context/DevicesContextController.js +124 -0
  209. package/dist/context/DevicesContextController.js.map +1 -0
  210. package/dist/context/TranscriptController.d.ts +32 -0
  211. package/dist/context/TranscriptController.d.ts.map +1 -0
  212. package/dist/context/TranscriptController.js +113 -0
  213. package/dist/context/TranscriptController.js.map +1 -0
  214. package/dist/context/UserEventController.d.ts +26 -0
  215. package/dist/context/UserEventController.d.ts.map +1 -0
  216. package/dist/context/UserEventController.js +55 -0
  217. package/dist/context/UserEventController.js.map +1 -0
  218. package/dist/context/call-state-context.d.ts +75 -0
  219. package/dist/context/call-state-context.d.ts.map +1 -0
  220. package/dist/context/call-state-context.js +39 -0
  221. package/dist/context/call-state-context.js.map +1 -0
  222. package/dist/context/chat-state.d.ts +41 -0
  223. package/dist/context/chat-state.d.ts.map +1 -0
  224. package/dist/context/chat-state.js +61 -0
  225. package/dist/context/chat-state.js.map +1 -0
  226. package/dist/context/devices-context.d.ts +28 -0
  227. package/dist/context/devices-context.d.ts.map +1 -0
  228. package/dist/context/devices-context.js +6 -0
  229. package/dist/context/devices-context.js.map +1 -0
  230. package/dist/context/index.d.ts +9 -1
  231. package/dist/context/index.d.ts.map +1 -1
  232. package/dist/context/transcript-context.d.ts +9 -0
  233. package/dist/context/transcript-context.d.ts.map +1 -0
  234. package/dist/context/transcript-context.js +6 -0
  235. package/dist/context/transcript-context.js.map +1 -0
  236. package/dist/context/types.d.ts +9 -0
  237. package/dist/context/types.d.ts.map +1 -0
  238. package/dist/embed/signalwire-web-components-embed.iife.js +3225 -0
  239. package/dist/embed/signalwire-web-components-embed.iife.js.map +1 -0
  240. package/dist/embed/signalwire-web-components-embed.umd.cjs +3225 -0
  241. package/dist/embed/signalwire-web-components-embed.umd.cjs.map +1 -0
  242. package/dist/embed.d.ts +20 -0
  243. package/dist/embed.d.ts.map +1 -0
  244. package/dist/index.d.ts +19 -13
  245. package/dist/index.d.ts.map +1 -1
  246. package/dist/index.js +83 -34
  247. package/dist/index.js.map +1 -1
  248. package/dist/node_modules/dompurify/dist/purify.es.js +597 -0
  249. package/dist/node_modules/dompurify/dist/purify.es.js.map +1 -0
  250. package/dist/node_modules/marked/lib/marked.esm.js +1475 -0
  251. package/dist/node_modules/marked/lib/marked.esm.js.map +1 -0
  252. package/dist/node_modules/prismjs/components/prism-bash.js +220 -0
  253. package/dist/node_modules/prismjs/components/prism-bash.js.map +1 -0
  254. package/dist/node_modules/prismjs/components/prism-css.js +56 -0
  255. package/dist/node_modules/prismjs/components/prism-css.js.map +1 -0
  256. package/dist/node_modules/prismjs/components/prism-javascript.js +138 -0
  257. package/dist/node_modules/prismjs/components/prism-javascript.js.map +1 -0
  258. package/dist/node_modules/prismjs/components/prism-json.js +26 -0
  259. package/dist/node_modules/prismjs/components/prism-json.js.map +1 -0
  260. package/dist/node_modules/prismjs/components/prism-markdown.js +301 -0
  261. package/dist/node_modules/prismjs/components/prism-markdown.js.map +1 -0
  262. package/dist/node_modules/prismjs/components/prism-python.js +69 -0
  263. package/dist/node_modules/prismjs/components/prism-python.js.map +1 -0
  264. package/dist/node_modules/prismjs/components/prism-sql.js +34 -0
  265. package/dist/node_modules/prismjs/components/prism-sql.js.map +1 -0
  266. package/dist/node_modules/prismjs/components/prism-typescript.js +53 -0
  267. package/dist/node_modules/prismjs/components/prism-typescript.js.map +1 -0
  268. package/dist/node_modules/prismjs/components/prism-yaml.js +67 -0
  269. package/dist/node_modules/prismjs/components/prism-yaml.js.map +1 -0
  270. package/dist/node_modules/prismjs/prism.js +1165 -0
  271. package/dist/node_modules/prismjs/prism.js.map +1 -0
  272. package/dist/react.d.ts +96 -46
  273. package/dist/theme.css +451 -0
  274. package/dist/theme.css.js +5 -0
  275. package/dist/theme.css.js.map +1 -0
  276. package/dist/types/index.d.ts +9 -33
  277. package/dist/types/index.d.ts.map +1 -1
  278. package/dist/utils/index.d.ts +2 -0
  279. package/dist/utils/index.d.ts.map +1 -1
  280. package/dist/utils/prism.d.ts +4 -0
  281. package/dist/utils/prism.d.ts.map +1 -0
  282. package/dist/utils/prism.js +34 -0
  283. package/dist/utils/prism.js.map +1 -0
  284. package/dist/utils/theme-loader.d.ts +11 -0
  285. package/dist/utils/theme-loader.d.ts.map +1 -0
  286. package/dist/utils/theme-loader.js +17 -0
  287. package/dist/utils/theme-loader.js.map +1 -0
  288. package/dist/utils/transcriptToMarkdown.d.ts +14 -0
  289. package/dist/utils/transcriptToMarkdown.d.ts.map +1 -0
  290. package/dist/utils/transcriptToMarkdown.js +59 -0
  291. package/dist/utils/transcriptToMarkdown.js.map +1 -0
  292. package/dist/utils/use-google-font.d.ts +18 -0
  293. package/dist/utils/use-google-font.d.ts.map +1 -0
  294. package/dist/utils/use-google-font.js +12 -0
  295. package/dist/utils/use-google-font.js.map +1 -0
  296. package/dist/utils/user-variables.d.ts +20 -0
  297. package/dist/utils/user-variables.d.ts.map +1 -0
  298. package/dist/utils/user-variables.js +37 -0
  299. package/dist/utils/user-variables.js.map +1 -0
  300. package/package.json +104 -41
  301. package/dist/components/audio-level.d.ts.map +0 -1
  302. package/dist/components/audio-level.js +0 -203
  303. package/dist/components/audio-level.js.map +0 -1
  304. package/dist/components/call-controls.d.ts +0 -163
  305. package/dist/components/call-controls.d.ts.map +0 -1
  306. package/dist/components/call-controls.js +0 -606
  307. package/dist/components/call-controls.js.map +0 -1
  308. package/dist/components/call-media.d.ts +0 -114
  309. package/dist/components/call-media.d.ts.map +0 -1
  310. package/dist/components/call-media.js +0 -219
  311. package/dist/components/call-media.js.map +0 -1
  312. package/dist/components/call-status.d.ts +0 -68
  313. package/dist/components/call-status.d.ts.map +0 -1
  314. package/dist/components/call-status.js +0 -254
  315. package/dist/components/call-status.js.map +0 -1
  316. package/dist/components/click-to-call.d.ts +0 -123
  317. package/dist/components/click-to-call.d.ts.map +0 -1
  318. package/dist/components/click-to-call.js +0 -428
  319. package/dist/components/click-to-call.js.map +0 -1
  320. package/dist/components/device-selector.d.ts +0 -224
  321. package/dist/components/device-selector.d.ts.map +0 -1
  322. package/dist/components/device-selector.js +0 -685
  323. package/dist/components/device-selector.js.map +0 -1
  324. package/dist/components/dialpad.d.ts +0 -60
  325. package/dist/components/dialpad.d.ts.map +0 -1
  326. package/dist/components/dialpad.js +0 -372
  327. package/dist/components/dialpad.js.map +0 -1
  328. package/dist/components/directory.d.ts.map +0 -1
  329. package/dist/components/directory.js +0 -503
  330. package/dist/components/directory.js.map +0 -1
  331. package/dist/components/example-button.d.ts +0 -20
  332. package/dist/components/example-button.d.ts.map +0 -1
  333. package/dist/components/example-button.js +0 -74
  334. package/dist/components/example-button.js.map +0 -1
  335. package/dist/components/participant-controls.d.ts +0 -94
  336. package/dist/components/participant-controls.d.ts.map +0 -1
  337. package/dist/components/participant-controls.js +0 -468
  338. package/dist/components/participant-controls.js.map +0 -1
  339. package/dist/components/participants.d.ts +0 -116
  340. package/dist/components/participants.d.ts.map +0 -1
  341. package/dist/components/participants.js +0 -394
  342. package/dist/components/participants.js.map +0 -1
  343. package/dist/components/self-media.d.ts +0 -78
  344. package/dist/components/self-media.d.ts.map +0 -1
  345. package/dist/components/self-media.js +0 -129
  346. package/dist/components/self-media.js.map +0 -1
  347. package/dist/context/call-context.d.ts +0 -13
  348. package/dist/context/call-context.d.ts.map +0 -1
  349. package/dist/context/call-context.js +0 -6
  350. package/dist/context/call-context.js.map +0 -1
  351. package/dist/types/index.js +0 -12
  352. package/dist/types/index.js.map +0 -1
@@ -0,0 +1,75 @@
1
+ import type { Observable } from 'rxjs';
2
+ import type { ReactiveControllerHost } from 'lit';
3
+ import type { Call, LayoutLayer } from '../types/index.js';
4
+ import type { CallStatus, CallParticipant, CallSelfParticipant, CallAddress, MediaDirections, VideoPosition } from '@signalwire/js';
5
+ export interface CallState {
6
+ id: string;
7
+ direction: 'inbound' | 'outbound';
8
+ to: string | undefined;
9
+ status: CallStatus;
10
+ recording: boolean;
11
+ streaming: boolean;
12
+ locked: boolean;
13
+ raiseHandPriority: boolean;
14
+ meta: Record<string, unknown>;
15
+ participants: CallParticipant[];
16
+ /** The local/self participant. Null until the call is joined. */
17
+ self: CallSelfParticipant | null;
18
+ remoteStream: MediaStream | null;
19
+ localStream: MediaStream | null;
20
+ mediaDirections: MediaDirections;
21
+ layout: string | undefined;
22
+ layouts: string[];
23
+ layoutLayers: LayoutLayer[];
24
+ address: CallAddress | undefined;
25
+ capabilities: string[];
26
+ hangup: () => Promise<void>;
27
+ toggleLock: () => Promise<void>;
28
+ toggleHold: () => Promise<void>;
29
+ setLayout: (layout: string, positions?: Record<string, VideoPosition>) => Promise<void>;
30
+ startRecording: () => Promise<void>;
31
+ startStreaming: () => Promise<void>;
32
+ sendDigits: (digits: string) => Promise<void>;
33
+ answer: () => void;
34
+ reject: () => void;
35
+ }
36
+ export declare const callStateContext: {
37
+ __context__: CallState;
38
+ };
39
+ export interface IncomingCallInfo {
40
+ call: Call;
41
+ callerName: string | undefined;
42
+ callerNumber: string | undefined;
43
+ }
44
+ type IncomingCallCallback = (info: IncomingCallInfo) => void;
45
+ /**
46
+ * Listens to an incoming-calls observable and fires a callback for each
47
+ * new inbound call. Deduplicates by call ID so a call is never announced
48
+ * twice.
49
+ *
50
+ * Usage in a provider component:
51
+ *
52
+ * private _incoming = new IncomingCallController(this);
53
+ *
54
+ * // Set the handler:
55
+ * this._incoming.onIncomingCall = (info) => { ... };
56
+ *
57
+ * // Start listening (pass the observable from client.session):
58
+ * this._incoming.connect(client.session.incomingCalls$);
59
+ *
60
+ * // Stop listening:
61
+ * this._incoming.disconnect();
62
+ */
63
+ export declare class IncomingCallController {
64
+ private _subscription;
65
+ private _seenCallIds;
66
+ private _callback;
67
+ constructor(host: ReactiveControllerHost & EventTarget);
68
+ hostConnected(): void;
69
+ hostDisconnected(): void;
70
+ set onIncomingCall(cb: IncomingCallCallback);
71
+ connect(incomingCalls$: Observable<Call[]>): void;
72
+ disconnect(): void;
73
+ }
74
+ export {};
75
+ //# sourceMappingURL=call-state-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-state-context.d.ts","sourceRoot":"","sources":["../../src/context/call-state-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,MAAM,CAAC;AACrD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,aAAa,EACd,MAAM,gBAAgB,CAAC;AAIxB,MAAM,WAAW,SAAS;IAExB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;IAClC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IAGvB,MAAM,EAAE,UAAU,CAAC;IAGnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAG9B,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,iEAAiE;IACjE,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAGjC,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,eAAe,EAAE,eAAe,CAAC;IAGjC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,WAAW,EAAE,CAAC;IAG5B,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;IAGvB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB;;CAA4C,CAAC;AAI1E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAID,KAAK,oBAAoB,GAAG,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAE7D;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,SAAS,CAAqC;gBAE1C,IAAI,EAAE,sBAAsB,GAAG,WAAW;IAQtD,aAAa;IACb,gBAAgB;IAIhB,IAAI,cAAc,CAAC,EAAE,EAAE,oBAAoB,EAE1C;IAED,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAiBjD,UAAU,IAAI,IAAI;CAKnB"}
@@ -0,0 +1,39 @@
1
+ import { createContext as c } from "@lit/context";
2
+ const o = c("sw-call-state");
3
+ class a {
4
+ constructor(s) {
5
+ this._subscription = null, this._seenCallIds = /* @__PURE__ */ new Set(), this._callback = null, s.addController(this);
6
+ }
7
+ // Intentionally not a stateful ReactiveController. We only register with
8
+ // `host.addController(this)` so `hostDisconnected()` can clean up the
9
+ // RxJS subscription on removal — there's no provider, no host requestUpdate(),
10
+ // and `hostConnected()` is a deliberate no-op.
11
+ hostConnected() {
12
+ }
13
+ hostDisconnected() {
14
+ this.disconnect();
15
+ }
16
+ set onIncomingCall(s) {
17
+ this._callback = s;
18
+ }
19
+ connect(s) {
20
+ this.disconnect(), this._subscription = s.subscribe((n) => {
21
+ var l;
22
+ for (const t of n)
23
+ this._seenCallIds.has(t.id) || (this._seenCallIds.add(t.id), (l = this._callback) == null || l.call(this, {
24
+ call: t,
25
+ callerName: t.fromName,
26
+ callerNumber: t.from
27
+ }));
28
+ });
29
+ }
30
+ disconnect() {
31
+ var s;
32
+ (s = this._subscription) == null || s.unsubscribe(), this._subscription = null, this._seenCallIds.clear();
33
+ }
34
+ }
35
+ export {
36
+ a as IncomingCallController,
37
+ o as callStateContext
38
+ };
39
+ //# sourceMappingURL=call-state-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-state-context.js","sources":["../../src/context/call-state-context.ts"],"sourcesContent":["import { createContext } from '@lit/context';\nimport type { Observable, Subscription } from 'rxjs';\nimport type { ReactiveControllerHost } from 'lit';\nimport type { Call, LayoutLayer } from '../types/index.js';\nimport type {\n CallStatus,\n CallParticipant,\n CallSelfParticipant,\n CallAddress,\n MediaDirections,\n VideoPosition,\n} from '@signalwire/js';\n\n// ── Context value shape ───────────────────────────────────────────────────────\n\nexport interface CallState {\n // ── Identity (static, set once on connect) ──────────────────────────────\n id: string;\n direction: 'inbound' | 'outbound';\n to: string | undefined;\n\n // ── Lifecycle ────────────────────────────────────────────────────────────\n status: CallStatus;\n\n // ── Room state ───────────────────────────────────────────────────────────\n recording: boolean;\n streaming: boolean;\n locked: boolean;\n raiseHandPriority: boolean;\n meta: Record<string, unknown>;\n\n // ── Participants ─────────────────────────────────────────────────────────\n participants: CallParticipant[];\n /** The local/self participant. Null until the call is joined. */\n self: CallSelfParticipant | null;\n\n // ── Media streams ────────────────────────────────────────────────────────\n remoteStream: MediaStream | null;\n localStream: MediaStream | null;\n mediaDirections: MediaDirections;\n\n // ── Layout ───────────────────────────────────────────────────────────────\n layout: string | undefined;\n layouts: string[];\n layoutLayers: LayoutLayer[];\n\n // ── Address / capabilities ───────────────────────────────────────────────\n address: CallAddress | undefined;\n capabilities: string[];\n\n // ── Actions ──────────────────────────────────────────────────────────────\n hangup: () => Promise<void>;\n toggleLock: () => Promise<void>;\n toggleHold: () => Promise<void>;\n setLayout: (layout: string, positions?: Record<string, VideoPosition>) => Promise<void>;\n startRecording: () => Promise<void>;\n startStreaming: () => Promise<void>;\n sendDigits: (digits: string) => Promise<void>;\n answer: () => void;\n reject: () => void;\n}\n\nexport const callStateContext = createContext<CallState>('sw-call-state');\n\n// ── Incoming call info ───────────────────────────────────────────────────────\n\nexport interface IncomingCallInfo {\n call: Call;\n callerName: string | undefined;\n callerNumber: string | undefined;\n}\n\n// ── Incoming call controller ─────────────────────────────────────────────────\n\ntype IncomingCallCallback = (info: IncomingCallInfo) => void;\n\n/**\n * Listens to an incoming-calls observable and fires a callback for each\n * new inbound call. Deduplicates by call ID so a call is never announced\n * twice.\n *\n * Usage in a provider component:\n *\n * private _incoming = new IncomingCallController(this);\n *\n * // Set the handler:\n * this._incoming.onIncomingCall = (info) => { ... };\n *\n * // Start listening (pass the observable from client.session):\n * this._incoming.connect(client.session.incomingCalls$);\n *\n * // Stop listening:\n * this._incoming.disconnect();\n */\nexport class IncomingCallController {\n private _subscription: Subscription | null = null;\n private _seenCallIds = new Set<string>();\n private _callback: IncomingCallCallback | null = null;\n\n constructor(host: ReactiveControllerHost & EventTarget) {\n host.addController(this);\n }\n\n // Intentionally not a stateful ReactiveController. We only register with\n // `host.addController(this)` so `hostDisconnected()` can clean up the\n // RxJS subscription on removal — there's no provider, no host requestUpdate(),\n // and `hostConnected()` is a deliberate no-op.\n hostConnected() {}\n hostDisconnected() {\n this.disconnect();\n }\n\n set onIncomingCall(cb: IncomingCallCallback) {\n this._callback = cb;\n }\n\n connect(incomingCalls$: Observable<Call[]>): void {\n this.disconnect();\n\n this._subscription = incomingCalls$.subscribe((calls) => {\n for (const call of calls) {\n if (this._seenCallIds.has(call.id)) continue;\n this._seenCallIds.add(call.id);\n\n this._callback?.({\n call,\n callerName: call.fromName,\n callerNumber: call.from,\n });\n }\n });\n }\n\n disconnect(): void {\n this._subscription?.unsubscribe();\n this._subscription = null;\n this._seenCallIds.clear();\n }\n}\n"],"names":["callStateContext","createContext","IncomingCallController","host","cb","incomingCalls$","calls","call","_a"],"mappings":";AA8DO,MAAMA,IAAmBC,EAAyB,eAAe;AAgCjE,MAAMC,EAAuB;AAAA,EAKlC,YAAYC,GAA4C;AAJxD,SAAQ,gBAAqC,MAC7C,KAAQ,mCAAmB,IAAA,GAC3B,KAAQ,YAAyC,MAG/CA,EAAK,cAAc,IAAI;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAgB;AAAA,EAAC;AAAA,EACjB,mBAAmB;AACjB,SAAK,WAAA;AAAA,EACP;AAAA,EAEA,IAAI,eAAeC,GAA0B;AAC3C,SAAK,YAAYA;AAAA,EACnB;AAAA,EAEA,QAAQC,GAA0C;AAChD,SAAK,WAAA,GAEL,KAAK,gBAAgBA,EAAe,UAAU,CAACC,MAAU;;AACvD,iBAAWC,KAAQD;AACjB,QAAI,KAAK,aAAa,IAAIC,EAAK,EAAE,MACjC,KAAK,aAAa,IAAIA,EAAK,EAAE,IAE7BC,IAAA,KAAK,cAAL,QAAAA,EAAA,WAAiB;AAAA,UACf,MAAAD;AAAA,UACA,YAAYA,EAAK;AAAA,UACjB,cAAcA,EAAK;AAAA,QAAA;AAAA,IAGzB,CAAC;AAAA,EACH;AAAA,EAEA,aAAmB;;AACjB,KAAAC,IAAA,KAAK,kBAAL,QAAAA,EAAoB,eACpB,KAAK,gBAAgB,MACrB,KAAK,aAAa,MAAA;AAAA,EACpB;AACF;"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ChatState — AI transcript FSM.
3
+ *
4
+ * Accumulates signaling events into a renderable chat history. The key
5
+ * property is that an AI partial and a user partial can coexist (e.g. when
6
+ * the user barges mid-response), and both are rendered — ordered by which
7
+ * party spoke most recently.
8
+ *
9
+ * Event semantics:
10
+ * - `ai.response_utterance` → AI chunk; buffer into `_aiPartial`.
11
+ * - `ai.completion` → AI finished. Promote partial to complete.
12
+ * If `barged`, `lastSpoken` flips to user.
13
+ * - `ai.partial_result` → User partial; replace `_userPartial`.
14
+ * - `ai.speech_detect` → User finished. Promote partial (or insert
15
+ * directly) with the server's final text.
16
+ */
17
+ export type Speaker = 'ai' | 'user';
18
+ export type EntryState = 'partial' | 'complete';
19
+ export interface ChatEntry {
20
+ speaker: Speaker;
21
+ text: string;
22
+ state: EntryState;
23
+ }
24
+ export declare class ChatState {
25
+ private _entries;
26
+ private _aiPartial;
27
+ private _userPartial;
28
+ private _lastSpoken;
29
+ /** Invoked after any state change. Overridable by consumers. */
30
+ onUpdate: () => void;
31
+ /** Completed entries plus any live partials, in render order. */
32
+ getHistory(): ChatEntry[];
33
+ get hasAny(): boolean;
34
+ get lastSpoken(): Speaker | null;
35
+ reset(): void;
36
+ onUserPartial(text: string): void;
37
+ onUserComplete(text: string): void;
38
+ onAiChunk(text: string): void;
39
+ onAiComplete(text: string, barged: boolean): void;
40
+ }
41
+ //# sourceMappingURL=chat-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-state.d.ts","sourceRoot":"","sources":["../../src/context/chat-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC;AACpC,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AAEhD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,WAAW,CAAwB;IAE3C,gEAAgE;IACzD,QAAQ,EAAE,MAAM,IAAI,CAAY;IAEvC,iEAAiE;IAC1D,UAAU,IAAI,SAAS,EAAE;IAgBhC,IAAW,MAAM,IAAI,OAAO,CAM3B;IAED,IAAW,UAAU,IAAI,OAAO,GAAG,IAAI,CAEtC;IAEM,KAAK,IAAI,IAAI;IAQb,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOjC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBlC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAc7B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;CAiBzD"}
@@ -0,0 +1,61 @@
1
+ class e {
2
+ constructor() {
3
+ this._entries = [], this._aiPartial = null, this._userPartial = null, this._lastSpoken = null, this.onUpdate = () => {
4
+ };
5
+ }
6
+ /** Completed entries plus any live partials, in render order. */
7
+ getHistory() {
8
+ const t = [...this._entries];
9
+ return this._aiPartial && this._userPartial ? this._lastSpoken === "user" ? t.push(this._aiPartial, this._userPartial) : t.push(this._userPartial, this._aiPartial) : this._aiPartial ? t.push(this._aiPartial) : this._userPartial && t.push(this._userPartial), t;
10
+ }
11
+ get hasAny() {
12
+ return this._entries.length > 0 || this._aiPartial !== null || this._userPartial !== null;
13
+ }
14
+ get lastSpoken() {
15
+ return this._lastSpoken;
16
+ }
17
+ reset() {
18
+ this._entries = [], this._aiPartial = null, this._userPartial = null, this._lastSpoken = null, this.onUpdate();
19
+ }
20
+ onUserPartial(t) {
21
+ t && (this._userPartial = { speaker: "user", text: t, state: "partial" }, this._lastSpoken = "user", this.onUpdate());
22
+ }
23
+ onUserComplete(t) {
24
+ if (!t) {
25
+ this._userPartial = null, this.onUpdate();
26
+ return;
27
+ }
28
+ this._entries = [
29
+ ...this._entries,
30
+ { speaker: "user", text: t, state: "complete" }
31
+ ], this._userPartial = null, this._lastSpoken = "user", this.onUpdate();
32
+ }
33
+ onAiChunk(t) {
34
+ if (t) {
35
+ if (!this._aiPartial)
36
+ this._aiPartial = { speaker: "ai", text: t, state: "partial" };
37
+ else {
38
+ const i = `${this._aiPartial.text} ${t}`.replace(/\s+/g, " ").trim();
39
+ this._aiPartial = { ...this._aiPartial, text: i };
40
+ }
41
+ this._lastSpoken = "ai", this.onUpdate();
42
+ }
43
+ }
44
+ onAiComplete(t, i) {
45
+ if (this._aiPartial) {
46
+ const s = t.length > 0 ? t : this._aiPartial.text;
47
+ this._entries = [
48
+ ...this._entries,
49
+ { speaker: "ai", text: s, state: "complete" }
50
+ ], this._aiPartial = null;
51
+ } else t.length > 0 && (this._entries = [
52
+ ...this._entries,
53
+ { speaker: "ai", text: t, state: "complete" }
54
+ ]);
55
+ this._lastSpoken = i ? "user" : "ai", this.onUpdate();
56
+ }
57
+ }
58
+ export {
59
+ e as ChatState
60
+ };
61
+ //# sourceMappingURL=chat-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-state.js","sources":["../../src/context/chat-state.ts"],"sourcesContent":["/**\n * ChatState — AI transcript FSM.\n *\n * Accumulates signaling events into a renderable chat history. The key\n * property is that an AI partial and a user partial can coexist (e.g. when\n * the user barges mid-response), and both are rendered — ordered by which\n * party spoke most recently.\n *\n * Event semantics:\n * - `ai.response_utterance` → AI chunk; buffer into `_aiPartial`.\n * - `ai.completion` → AI finished. Promote partial to complete.\n * If `barged`, `lastSpoken` flips to user.\n * - `ai.partial_result` → User partial; replace `_userPartial`.\n * - `ai.speech_detect` → User finished. Promote partial (or insert\n * directly) with the server's final text.\n */\nexport type Speaker = 'ai' | 'user';\nexport type EntryState = 'partial' | 'complete';\n\nexport interface ChatEntry {\n speaker: Speaker;\n text: string;\n state: EntryState;\n}\n\nexport class ChatState {\n private _entries: ChatEntry[] = [];\n private _aiPartial: ChatEntry | null = null;\n private _userPartial: ChatEntry | null = null;\n private _lastSpoken: Speaker | null = null;\n\n /** Invoked after any state change. Overridable by consumers. */\n public onUpdate: () => void = () => {};\n\n /** Completed entries plus any live partials, in render order. */\n public getHistory(): ChatEntry[] {\n const out = [...this._entries];\n if (this._aiPartial && this._userPartial) {\n if (this._lastSpoken === 'user') {\n out.push(this._aiPartial, this._userPartial);\n } else {\n out.push(this._userPartial, this._aiPartial);\n }\n } else if (this._aiPartial) {\n out.push(this._aiPartial);\n } else if (this._userPartial) {\n out.push(this._userPartial);\n }\n return out;\n }\n\n public get hasAny(): boolean {\n return (\n this._entries.length > 0 ||\n this._aiPartial !== null ||\n this._userPartial !== null\n );\n }\n\n public get lastSpoken(): Speaker | null {\n return this._lastSpoken;\n }\n\n public reset(): void {\n this._entries = [];\n this._aiPartial = null;\n this._userPartial = null;\n this._lastSpoken = null;\n this.onUpdate();\n }\n\n public onUserPartial(text: string): void {\n if (!text) return;\n this._userPartial = { speaker: 'user', text, state: 'partial' };\n this._lastSpoken = 'user';\n this.onUpdate();\n }\n\n public onUserComplete(text: string): void {\n if (!text) {\n // No final text — drop any lingering partial silently.\n this._userPartial = null;\n this.onUpdate();\n return;\n }\n this._entries = [\n ...this._entries,\n { speaker: 'user', text, state: 'complete' },\n ];\n this._userPartial = null;\n this._lastSpoken = 'user';\n this.onUpdate();\n }\n\n public onAiChunk(text: string): void {\n if (!text) return;\n if (!this._aiPartial) {\n this._aiPartial = { speaker: 'ai', text, state: 'partial' };\n } else {\n const merged = `${this._aiPartial.text} ${text}`\n .replace(/\\s+/g, ' ')\n .trim();\n this._aiPartial = { ...this._aiPartial, text: merged };\n }\n this._lastSpoken = 'ai';\n this.onUpdate();\n }\n\n public onAiComplete(text: string, barged: boolean): void {\n if (this._aiPartial) {\n const finalText = text.length > 0 ? text : this._aiPartial.text;\n this._entries = [\n ...this._entries,\n { speaker: 'ai', text: finalText, state: 'complete' },\n ];\n this._aiPartial = null;\n } else if (text.length > 0) {\n this._entries = [\n ...this._entries,\n { speaker: 'ai', text, state: 'complete' },\n ];\n }\n this._lastSpoken = barged ? 'user' : 'ai';\n this.onUpdate();\n }\n}\n"],"names":["ChatState","out","text","merged","barged","finalText"],"mappings":"AAyBO,MAAMA,EAAU;AAAA,EAAhB,cAAA;AACL,SAAQ,WAAwB,CAAA,GAChC,KAAQ,aAA+B,MACvC,KAAQ,eAAiC,MACzC,KAAQ,cAA8B,MAGtC,KAAO,WAAuB,MAAM;AAAA,IAAC;AAAA,EAAA;AAAA;AAAA,EAG9B,aAA0B;AAC/B,UAAMC,IAAM,CAAC,GAAG,KAAK,QAAQ;AAC7B,WAAI,KAAK,cAAc,KAAK,eACtB,KAAK,gBAAgB,SACvBA,EAAI,KAAK,KAAK,YAAY,KAAK,YAAY,IAE3CA,EAAI,KAAK,KAAK,cAAc,KAAK,UAAU,IAEpC,KAAK,aACdA,EAAI,KAAK,KAAK,UAAU,IACf,KAAK,gBACdA,EAAI,KAAK,KAAK,YAAY,GAErBA;AAAA,EACT;AAAA,EAEA,IAAW,SAAkB;AAC3B,WACE,KAAK,SAAS,SAAS,KACvB,KAAK,eAAe,QACpB,KAAK,iBAAiB;AAAA,EAE1B;AAAA,EAEA,IAAW,aAA6B;AACtC,WAAO,KAAK;AAAA,EACd;AAAA,EAEO,QAAc;AACnB,SAAK,WAAW,CAAA,GAChB,KAAK,aAAa,MAClB,KAAK,eAAe,MACpB,KAAK,cAAc,MACnB,KAAK,SAAA;AAAA,EACP;AAAA,EAEO,cAAcC,GAAoB;AACvC,IAAKA,MACL,KAAK,eAAe,EAAE,SAAS,QAAQ,MAAAA,GAAM,OAAO,UAAA,GACpD,KAAK,cAAc,QACnB,KAAK,SAAA;AAAA,EACP;AAAA,EAEO,eAAeA,GAAoB;AACxC,QAAI,CAACA,GAAM;AAET,WAAK,eAAe,MACpB,KAAK,SAAA;AACL;AAAA,IACF;AACA,SAAK,WAAW;AAAA,MACd,GAAG,KAAK;AAAA,MACR,EAAE,SAAS,QAAQ,MAAAA,GAAM,OAAO,WAAA;AAAA,IAAW,GAE7C,KAAK,eAAe,MACpB,KAAK,cAAc,QACnB,KAAK,SAAA;AAAA,EACP;AAAA,EAEO,UAAUA,GAAoB;AACnC,QAAKA,GACL;AAAA,UAAI,CAAC,KAAK;AACR,aAAK,aAAa,EAAE,SAAS,MAAM,MAAAA,GAAM,OAAO,UAAA;AAAA,WAC3C;AACL,cAAMC,IAAS,GAAG,KAAK,WAAW,IAAI,IAAID,CAAI,GAC3C,QAAQ,QAAQ,GAAG,EACnB,KAAA;AACH,aAAK,aAAa,EAAE,GAAG,KAAK,YAAY,MAAMC,EAAA;AAAA,MAChD;AACA,WAAK,cAAc,MACnB,KAAK,SAAA;AAAA;AAAA,EACP;AAAA,EAEO,aAAaD,GAAcE,GAAuB;AACvD,QAAI,KAAK,YAAY;AACnB,YAAMC,IAAYH,EAAK,SAAS,IAAIA,IAAO,KAAK,WAAW;AAC3D,WAAK,WAAW;AAAA,QACd,GAAG,KAAK;AAAA,QACR,EAAE,SAAS,MAAM,MAAMG,GAAW,OAAO,WAAA;AAAA,MAAW,GAEtD,KAAK,aAAa;AAAA,IACpB,MAAA,CAAWH,EAAK,SAAS,MACvB,KAAK,WAAW;AAAA,MACd,GAAG,KAAK;AAAA,MACR,EAAE,SAAS,MAAM,MAAAA,GAAM,OAAO,WAAA;AAAA,IAAW;AAG7C,SAAK,cAAcE,IAAS,SAAS,MACrC,KAAK,SAAA;AAAA,EACP;AACF;"}
@@ -0,0 +1,28 @@
1
+ export interface DevicesState {
2
+ audioInputDevices: MediaDeviceInfo[];
3
+ audioOutputDevices: MediaDeviceInfo[];
4
+ videoInputDevices: MediaDeviceInfo[];
5
+ selectedAudioInput: MediaDeviceInfo | null;
6
+ selectedAudioOutput: MediaDeviceInfo | null;
7
+ selectedVideoInput: MediaDeviceInfo | null;
8
+ audioMuted: boolean;
9
+ videoMuted: boolean;
10
+ /** deaf = can't hear = "speaker muted" from the server's perspective */
11
+ speakerMuted: boolean;
12
+ selectAudioInput: (device: MediaDeviceInfo | null) => void;
13
+ selectAudioOutput: (device: MediaDeviceInfo | null) => void;
14
+ selectVideoInput: (device: MediaDeviceInfo | null) => void;
15
+ toggleAudioMute: () => Promise<void>;
16
+ toggleVideoMute: () => Promise<void>;
17
+ toggleSpeakerMute: () => Promise<void>;
18
+ echoCancellation: boolean;
19
+ autoGain: boolean;
20
+ noiseSuppression: boolean;
21
+ toggleEchoCancellation: () => Promise<void>;
22
+ toggleAutoGain: () => Promise<void>;
23
+ toggleNoiseSuppression: () => Promise<void>;
24
+ }
25
+ export declare const devicesContext: {
26
+ __context__: DevicesState;
27
+ };
28
+ //# sourceMappingURL=devices-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices-context.d.ts","sourceRoot":"","sources":["../../src/context/devices-context.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAE3B,iBAAiB,EAAE,eAAe,EAAE,CAAC;IACrC,kBAAkB,EAAE,eAAe,EAAE,CAAC;IACtC,iBAAiB,EAAE,eAAe,EAAE,CAAC;IAGrC,kBAAkB,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3C,mBAAmB,EAAE,eAAe,GAAG,IAAI,CAAC;IAC5C,kBAAkB,EAAE,eAAe,GAAG,IAAI,CAAC;IAI3C,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,YAAY,EAAE,OAAO,CAAC;IAGtB,gBAAgB,EAAE,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3D,iBAAiB,EAAE,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5D,gBAAgB,EAAE,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;IAG3D,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAGvC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAG1B,sBAAsB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,sBAAsB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED,eAAO,MAAM,cAAc;;CAA4C,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { createContext as e } from "@lit/context";
2
+ const o = e("sw-devices");
3
+ export {
4
+ o as devicesContext
5
+ };
6
+ //# sourceMappingURL=devices-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices-context.js","sources":["../../src/context/devices-context.ts"],"sourcesContent":["import { createContext } from '@lit/context';\n\n// ── Context value shape ───────────────────────────────────────────────────────\n\nexport interface DevicesState {\n // ── Device lists ────────────────────────────────────────────────────────\n audioInputDevices: MediaDeviceInfo[];\n audioOutputDevices: MediaDeviceInfo[];\n videoInputDevices: MediaDeviceInfo[];\n\n // ── Selected devices ────────────────────────────────────────────────────\n selectedAudioInput: MediaDeviceInfo | null;\n selectedAudioOutput: MediaDeviceInfo | null;\n selectedVideoInput: MediaDeviceInfo | null;\n\n // ── Mute state (source of truth: server via call.self$) ─────────────────\n // These reflect what the server says — admin mute will flip these too.\n audioMuted: boolean;\n videoMuted: boolean;\n /** deaf = can't hear = \"speaker muted\" from the server's perspective */\n speakerMuted: boolean;\n\n // ── Device actions ───────────────────────────────────────────────────────\n selectAudioInput: (device: MediaDeviceInfo | null) => void;\n selectAudioOutput: (device: MediaDeviceInfo | null) => void;\n selectVideoInput: (device: MediaDeviceInfo | null) => void;\n\n // ── Mute actions (call through to self participant) ──────────────────────\n toggleAudioMute: () => Promise<void>;\n toggleVideoMute: () => Promise<void>;\n toggleSpeakerMute: () => Promise<void>;\n\n // ── Audio processing state (source of truth: server via call.self$) ────\n echoCancellation: boolean;\n autoGain: boolean;\n noiseSuppression: boolean;\n\n // ── Audio processing actions ───────────────────────────────────────────\n toggleEchoCancellation: () => Promise<void>;\n toggleAutoGain: () => Promise<void>;\n toggleNoiseSuppression: () => Promise<void>;\n}\n\nexport const devicesContext = createContext<DevicesState>('sw-devices');\n"],"names":["devicesContext","createContext"],"mappings":";AA2CO,MAAMA,IAAiBC,EAA4B,YAAY;"}
@@ -1,2 +1,10 @@
1
- export * from './call-context.js';
1
+ export * from './call-state-context.js';
2
+ export * from './devices-context.js';
3
+ export * from './transcript-context.js';
4
+ export { CallStateContextController } from './CallStateContextController.js';
5
+ export { DevicesContextController } from './DevicesContextController.js';
6
+ export { TranscriptController } from './TranscriptController.js';
7
+ export { UserEventController } from './UserEventController.js';
8
+ export * from './chat-state.js';
9
+ export * from './types.js';
2
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AAGxC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,cAAc,iBAAiB,CAAC;AAGhC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { TranscriptEntry } from '../components/UI/sw-ui-transcript-view.js';
2
+ export type { TranscriptEntry };
3
+ export interface TranscriptState {
4
+ entries: TranscriptEntry[];
5
+ }
6
+ export declare const transcriptContext: {
7
+ __context__: TranscriptState;
8
+ };
9
+ //# sourceMappingURL=transcript-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-context.d.ts","sourceRoot":"","sources":["../../src/context/transcript-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAEjF,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,eAAO,MAAM,iBAAiB;;CAA+C,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { createContext as t } from "@lit/context";
2
+ const o = t("transcript");
3
+ export {
4
+ o as transcriptContext
5
+ };
6
+ //# sourceMappingURL=transcript-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-context.js","sources":["../../src/context/transcript-context.ts"],"sourcesContent":["import { createContext } from '@lit/context';\nimport type { TranscriptEntry } from '../components/UI/sw-ui-transcript-view.js';\n\nexport type { TranscriptEntry };\n\nexport interface TranscriptState {\n entries: TranscriptEntry[];\n}\n\nexport const transcriptContext = createContext<TranscriptState>('transcript');\n"],"names":["transcriptContext","createContext"],"mappings":";AASO,MAAMA,IAAoBC,EAA+B,YAAY;"}
@@ -0,0 +1,9 @@
1
+ import type { ReactiveControllerHost } from 'lit';
2
+ /**
3
+ * Host type accepted by `@lit/context`'s `ContextProvider`. The library types
4
+ * its host as `Partial<ReactiveControllerHost> & HTMLElement`, so any
5
+ * controller that wraps a `ContextProvider` should require the same to avoid
6
+ * `as any` casts at the call site.
7
+ */
8
+ export type ContextHost = ReactiveControllerHost & HTMLElement;
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/context/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAElD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,sBAAsB,GAAG,WAAW,CAAC"}