@signalwire/web-components 4.0.0-beta.9 → 4.0.0-dev-20260515133934

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 (362) 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 +360 -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 +138 -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 +178 -0
  37. package/dist/components/UI/controls/sw-ui-split-button.js.map +1 -0
  38. package/dist/components/UI/host-reset.d.ts +16 -0
  39. package/dist/components/UI/host-reset.d.ts.map +1 -0
  40. package/dist/components/UI/host-reset.js +20 -0
  41. package/dist/components/UI/host-reset.js.map +1 -0
  42. package/dist/components/UI/icons/backspace.svg.js +10 -0
  43. package/dist/components/UI/icons/backspace.svg.js.map +1 -0
  44. package/dist/components/UI/icons/camera-off.svg.js +8 -0
  45. package/dist/components/UI/icons/camera-off.svg.js.map +1 -0
  46. package/dist/components/UI/icons/camera-on.svg.js +8 -0
  47. package/dist/components/UI/icons/camera-on.svg.js.map +1 -0
  48. package/dist/components/UI/icons/check-circle.svg.js +6 -0
  49. package/dist/components/UI/icons/check-circle.svg.js.map +1 -0
  50. package/dist/components/UI/icons/chevron-up.svg.js +8 -0
  51. package/dist/components/UI/icons/chevron-up.svg.js.map +1 -0
  52. package/dist/components/UI/icons/close.svg.js +6 -0
  53. package/dist/components/UI/icons/close.svg.js.map +1 -0
  54. package/dist/components/UI/icons/copy.svg.js +6 -0
  55. package/dist/components/UI/icons/copy.svg.js.map +1 -0
  56. package/dist/components/UI/icons/download.svg.js +6 -0
  57. package/dist/components/UI/icons/download.svg.js.map +1 -0
  58. package/dist/components/UI/icons/fullscreen-exit.svg.js +8 -0
  59. package/dist/components/UI/icons/fullscreen-exit.svg.js.map +1 -0
  60. package/dist/components/UI/icons/fullscreen.svg.js +8 -0
  61. package/dist/components/UI/icons/fullscreen.svg.js.map +1 -0
  62. package/dist/components/UI/icons/hand-raise.svg.js +6 -0
  63. package/dist/components/UI/icons/hand-raise.svg.js.map +1 -0
  64. package/dist/components/UI/icons/icons.d.ts +31 -0
  65. package/dist/components/UI/icons/icons.d.ts.map +1 -0
  66. package/dist/components/UI/icons/icons.js +60 -0
  67. package/dist/components/UI/icons/icons.js.map +1 -0
  68. package/dist/components/UI/icons/index.d.ts +4 -0
  69. package/dist/components/UI/icons/index.d.ts.map +1 -0
  70. package/dist/components/UI/icons/info-circle.svg.js +6 -0
  71. package/dist/components/UI/icons/info-circle.svg.js.map +1 -0
  72. package/dist/components/UI/icons/mic-off.svg.js +8 -0
  73. package/dist/components/UI/icons/mic-off.svg.js.map +1 -0
  74. package/dist/components/UI/icons/mic-on.svg.js +8 -0
  75. package/dist/components/UI/icons/mic-on.svg.js.map +1 -0
  76. package/dist/components/UI/icons/person.svg.js +8 -0
  77. package/dist/components/UI/icons/person.svg.js.map +1 -0
  78. package/dist/components/UI/icons/phone-call.svg.js +8 -0
  79. package/dist/components/UI/icons/phone-call.svg.js.map +1 -0
  80. package/dist/components/UI/icons/phone-end.svg.js +8 -0
  81. package/dist/components/UI/icons/phone-end.svg.js.map +1 -0
  82. package/dist/components/UI/icons/room.svg.js +8 -0
  83. package/dist/components/UI/icons/room.svg.js.map +1 -0
  84. package/dist/components/UI/icons/screen-share-off.svg.js +9 -0
  85. package/dist/components/UI/icons/screen-share-off.svg.js.map +1 -0
  86. package/dist/components/UI/icons/screen-share.svg.js +9 -0
  87. package/dist/components/UI/icons/screen-share.svg.js.map +1 -0
  88. package/dist/components/UI/icons/sendIcon.svg.js +9 -0
  89. package/dist/components/UI/icons/sendIcon.svg.js.map +1 -0
  90. package/dist/components/UI/icons/settings.svg.js +8 -0
  91. package/dist/components/UI/icons/settings.svg.js.map +1 -0
  92. package/dist/components/UI/icons/speaker-off.svg.js +8 -0
  93. package/dist/components/UI/icons/speaker-off.svg.js.map +1 -0
  94. package/dist/components/UI/icons/speaker-on.svg.js +8 -0
  95. package/dist/components/UI/icons/speaker-on.svg.js.map +1 -0
  96. package/dist/components/UI/icons/spinner.svg.js +9 -0
  97. package/dist/components/UI/icons/spinner.svg.js.map +1 -0
  98. package/dist/components/UI/icons/sw-logo.svg.js +11 -0
  99. package/dist/components/UI/icons/sw-logo.svg.js.map +1 -0
  100. package/dist/components/UI/icons/sw-ui-icon.d.ts +28 -0
  101. package/dist/components/UI/icons/sw-ui-icon.d.ts.map +1 -0
  102. package/dist/components/UI/icons/sw-ui-icon.js +47 -0
  103. package/dist/components/UI/icons/sw-ui-icon.js.map +1 -0
  104. package/dist/components/UI/icons/transcript.svg.js +10 -0
  105. package/dist/components/UI/icons/transcript.svg.js.map +1 -0
  106. package/dist/components/UI/index.d.ts +18 -0
  107. package/dist/components/UI/index.d.ts.map +1 -0
  108. package/dist/components/UI/layout/sw-ui-background.d.ts +33 -0
  109. package/dist/components/UI/layout/sw-ui-background.d.ts.map +1 -0
  110. package/dist/components/UI/layout/sw-ui-background.js +106 -0
  111. package/dist/components/UI/layout/sw-ui-background.js.map +1 -0
  112. package/dist/components/UI/layout/sw-ui-call-layout.d.ts +69 -0
  113. package/dist/components/UI/layout/sw-ui-call-layout.d.ts.map +1 -0
  114. package/dist/components/UI/layout/sw-ui-call-layout.js +278 -0
  115. package/dist/components/UI/layout/sw-ui-call-layout.js.map +1 -0
  116. package/dist/components/UI/layout/sw-ui-content-drawer.d.ts +50 -0
  117. package/dist/components/UI/layout/sw-ui-content-drawer.d.ts.map +1 -0
  118. package/dist/components/UI/layout/sw-ui-content-drawer.js +413 -0
  119. package/dist/components/UI/layout/sw-ui-content-drawer.js.map +1 -0
  120. package/dist/components/UI/layout/sw-ui-modal.d.ts +31 -0
  121. package/dist/components/UI/layout/sw-ui-modal.d.ts.map +1 -0
  122. package/dist/components/UI/layout/sw-ui-modal.js +150 -0
  123. package/dist/components/UI/layout/sw-ui-modal.js.map +1 -0
  124. package/dist/components/UI/layout/sw-ui-responsive-container.d.ts +15 -0
  125. package/dist/components/UI/layout/sw-ui-responsive-container.d.ts.map +1 -0
  126. package/dist/components/UI/layout/sw-ui-responsive-container.js +78 -0
  127. package/dist/components/UI/layout/sw-ui-responsive-container.js.map +1 -0
  128. package/dist/components/UI/sw-ui-alert.d.ts +37 -0
  129. package/dist/components/UI/sw-ui-alert.d.ts.map +1 -0
  130. package/dist/components/UI/sw-ui-alert.js +127 -0
  131. package/dist/components/UI/sw-ui-alert.js.map +1 -0
  132. package/dist/components/UI/sw-ui-transcript-view.d.ts +56 -0
  133. package/dist/components/UI/sw-ui-transcript-view.d.ts.map +1 -0
  134. package/dist/components/UI/sw-ui-transcript-view.js +342 -0
  135. package/dist/components/UI/sw-ui-transcript-view.js.map +1 -0
  136. package/dist/components/{audio-level.d.ts → sw-audio-level.d.ts} +44 -4
  137. package/dist/components/sw-audio-level.d.ts.map +1 -0
  138. package/dist/components/sw-audio-level.js +252 -0
  139. package/dist/components/sw-audio-level.js.map +1 -0
  140. package/dist/components/sw-call-controls.d.ts +58 -0
  141. package/dist/components/sw-call-controls.d.ts.map +1 -0
  142. package/dist/components/sw-call-controls.js +186 -0
  143. package/dist/components/sw-call-controls.js.map +1 -0
  144. package/dist/components/sw-call-dialpad.d.ts +52 -0
  145. package/dist/components/sw-call-dialpad.d.ts.map +1 -0
  146. package/dist/components/sw-call-dialpad.js +70 -0
  147. package/dist/components/sw-call-dialpad.js.map +1 -0
  148. package/dist/components/sw-call-media.d.ts +59 -0
  149. package/dist/components/sw-call-media.d.ts.map +1 -0
  150. package/dist/components/sw-call-media.js +178 -0
  151. package/dist/components/sw-call-media.js.map +1 -0
  152. package/dist/components/sw-call-provider.d.ts +41 -0
  153. package/dist/components/sw-call-provider.d.ts.map +1 -0
  154. package/dist/components/sw-call-provider.js +37 -0
  155. package/dist/components/sw-call-provider.js.map +1 -0
  156. package/dist/components/sw-call-status.d.ts +50 -0
  157. package/dist/components/sw-call-status.d.ts.map +1 -0
  158. package/dist/components/sw-call-status.js +204 -0
  159. package/dist/components/sw-call-status.js.map +1 -0
  160. package/dist/components/sw-call-widget/client-factory.d.ts +6 -0
  161. package/dist/components/sw-call-widget/client-factory.d.ts.map +1 -0
  162. package/dist/components/sw-call-widget/client-factory.js +25 -0
  163. package/dist/components/sw-call-widget/client-factory.js.map +1 -0
  164. package/dist/components/sw-call-widget/sw-call-widget.d.ts +110 -0
  165. package/dist/components/sw-call-widget/sw-call-widget.d.ts.map +1 -0
  166. package/dist/components/sw-call-widget/sw-call-widget.js +251 -0
  167. package/dist/components/sw-call-widget/sw-call-widget.js.map +1 -0
  168. package/dist/components/sw-call-widget/sw-call-widget.templates.d.ts +17 -0
  169. package/dist/components/sw-call-widget/sw-call-widget.templates.d.ts.map +1 -0
  170. package/dist/components/sw-call-widget/sw-call-widget.templates.js +80 -0
  171. package/dist/components/sw-call-widget/sw-call-widget.templates.js.map +1 -0
  172. package/dist/components/sw-click-to-call.d.ts +39 -0
  173. package/dist/components/sw-click-to-call.d.ts.map +1 -0
  174. package/dist/components/sw-click-to-call.js +88 -0
  175. package/dist/components/sw-click-to-call.js.map +1 -0
  176. package/dist/components/sw-device-selector/index.d.ts +2 -0
  177. package/dist/components/sw-device-selector/index.d.ts.map +1 -0
  178. package/dist/components/sw-device-selector/sw-device-selector.d.ts +69 -0
  179. package/dist/components/sw-device-selector/sw-device-selector.d.ts.map +1 -0
  180. package/dist/components/sw-device-selector/sw-device-selector.js +278 -0
  181. package/dist/components/sw-device-selector/sw-device-selector.js.map +1 -0
  182. package/dist/components/sw-device-selector/sw-device-selector.styles.d.ts +2 -0
  183. package/dist/components/sw-device-selector/sw-device-selector.styles.d.ts.map +1 -0
  184. package/dist/components/sw-device-selector/sw-device-selector.styles.js +238 -0
  185. package/dist/components/sw-device-selector/sw-device-selector.styles.js.map +1 -0
  186. package/dist/components/{directory.d.ts → sw-directory.d.ts} +18 -4
  187. package/dist/components/sw-directory.d.ts.map +1 -0
  188. package/dist/components/sw-directory.js +435 -0
  189. package/dist/components/sw-directory.js.map +1 -0
  190. package/dist/components/sw-local-camera.d.ts +53 -0
  191. package/dist/components/sw-local-camera.d.ts.map +1 -0
  192. package/dist/components/sw-local-camera.js +147 -0
  193. package/dist/components/sw-local-camera.js.map +1 -0
  194. package/dist/components/sw-participant-controls.d.ts +58 -0
  195. package/dist/components/sw-participant-controls.d.ts.map +1 -0
  196. package/dist/components/sw-participant-controls.js +306 -0
  197. package/dist/components/sw-participant-controls.js.map +1 -0
  198. package/dist/components/sw-participants.d.ts +55 -0
  199. package/dist/components/sw-participants.d.ts.map +1 -0
  200. package/dist/components/sw-participants.js +320 -0
  201. package/dist/components/sw-participants.js.map +1 -0
  202. package/dist/components/sw-self-media.d.ts +46 -0
  203. package/dist/components/sw-self-media.d.ts.map +1 -0
  204. package/dist/components/sw-self-media.js +106 -0
  205. package/dist/components/sw-self-media.js.map +1 -0
  206. package/dist/context/CallStateContextController.d.ts +31 -0
  207. package/dist/context/CallStateContextController.d.ts.map +1 -0
  208. package/dist/context/CallStateContextController.js +125 -0
  209. package/dist/context/CallStateContextController.js.map +1 -0
  210. package/dist/context/DevicesContextController.d.ts +38 -0
  211. package/dist/context/DevicesContextController.d.ts.map +1 -0
  212. package/dist/context/DevicesContextController.js +124 -0
  213. package/dist/context/DevicesContextController.js.map +1 -0
  214. package/dist/context/TranscriptController.d.ts +32 -0
  215. package/dist/context/TranscriptController.d.ts.map +1 -0
  216. package/dist/context/TranscriptController.js +113 -0
  217. package/dist/context/TranscriptController.js.map +1 -0
  218. package/dist/context/UserEventController.d.ts +26 -0
  219. package/dist/context/UserEventController.d.ts.map +1 -0
  220. package/dist/context/UserEventController.js +55 -0
  221. package/dist/context/UserEventController.js.map +1 -0
  222. package/dist/context/call-state-context.d.ts +75 -0
  223. package/dist/context/call-state-context.d.ts.map +1 -0
  224. package/dist/context/call-state-context.js +39 -0
  225. package/dist/context/call-state-context.js.map +1 -0
  226. package/dist/context/chat-state.d.ts +41 -0
  227. package/dist/context/chat-state.d.ts.map +1 -0
  228. package/dist/context/chat-state.js +61 -0
  229. package/dist/context/chat-state.js.map +1 -0
  230. package/dist/context/devices-context.d.ts +28 -0
  231. package/dist/context/devices-context.d.ts.map +1 -0
  232. package/dist/context/devices-context.js +6 -0
  233. package/dist/context/devices-context.js.map +1 -0
  234. package/dist/context/index.d.ts +9 -1
  235. package/dist/context/index.d.ts.map +1 -1
  236. package/dist/context/transcript-context.d.ts +9 -0
  237. package/dist/context/transcript-context.d.ts.map +1 -0
  238. package/dist/context/transcript-context.js +6 -0
  239. package/dist/context/transcript-context.js.map +1 -0
  240. package/dist/context/types.d.ts +9 -0
  241. package/dist/context/types.d.ts.map +1 -0
  242. package/dist/embed/signalwire-web-components-embed.iife.js +3237 -0
  243. package/dist/embed/signalwire-web-components-embed.iife.js.map +1 -0
  244. package/dist/embed/signalwire-web-components-embed.umd.cjs +3237 -0
  245. package/dist/embed/signalwire-web-components-embed.umd.cjs.map +1 -0
  246. package/dist/embed.d.ts +20 -0
  247. package/dist/embed.d.ts.map +1 -0
  248. package/dist/index.d.ts +19 -13
  249. package/dist/index.d.ts.map +1 -1
  250. package/dist/index.js +84 -35
  251. package/dist/index.js.map +1 -1
  252. package/dist/node_modules/dompurify/dist/purify.es.js +597 -0
  253. package/dist/node_modules/dompurify/dist/purify.es.js.map +1 -0
  254. package/dist/node_modules/marked/lib/marked.esm.js +1475 -0
  255. package/dist/node_modules/marked/lib/marked.esm.js.map +1 -0
  256. package/dist/node_modules/prismjs/components/prism-bash.js +220 -0
  257. package/dist/node_modules/prismjs/components/prism-bash.js.map +1 -0
  258. package/dist/node_modules/prismjs/components/prism-css.js +56 -0
  259. package/dist/node_modules/prismjs/components/prism-css.js.map +1 -0
  260. package/dist/node_modules/prismjs/components/prism-javascript.js +138 -0
  261. package/dist/node_modules/prismjs/components/prism-javascript.js.map +1 -0
  262. package/dist/node_modules/prismjs/components/prism-json.js +26 -0
  263. package/dist/node_modules/prismjs/components/prism-json.js.map +1 -0
  264. package/dist/node_modules/prismjs/components/prism-markdown.js +301 -0
  265. package/dist/node_modules/prismjs/components/prism-markdown.js.map +1 -0
  266. package/dist/node_modules/prismjs/components/prism-python.js +69 -0
  267. package/dist/node_modules/prismjs/components/prism-python.js.map +1 -0
  268. package/dist/node_modules/prismjs/components/prism-sql.js +34 -0
  269. package/dist/node_modules/prismjs/components/prism-sql.js.map +1 -0
  270. package/dist/node_modules/prismjs/components/prism-typescript.js +53 -0
  271. package/dist/node_modules/prismjs/components/prism-typescript.js.map +1 -0
  272. package/dist/node_modules/prismjs/components/prism-yaml.js +67 -0
  273. package/dist/node_modules/prismjs/components/prism-yaml.js.map +1 -0
  274. package/dist/node_modules/prismjs/prism.js +1165 -0
  275. package/dist/node_modules/prismjs/prism.js.map +1 -0
  276. package/dist/react.d.ts +96 -46
  277. package/dist/theme.css +451 -0
  278. package/dist/theme.css.js +5 -0
  279. package/dist/theme.css.js.map +1 -0
  280. package/dist/types/index.d.ts +9 -33
  281. package/dist/types/index.d.ts.map +1 -1
  282. package/dist/utils/index.d.ts +2 -0
  283. package/dist/utils/index.d.ts.map +1 -1
  284. package/dist/utils/prism.d.ts +4 -0
  285. package/dist/utils/prism.d.ts.map +1 -0
  286. package/dist/utils/prism.js +34 -0
  287. package/dist/utils/prism.js.map +1 -0
  288. package/dist/utils/theme-loader.d.ts +11 -0
  289. package/dist/utils/theme-loader.d.ts.map +1 -0
  290. package/dist/utils/theme-loader.js +17 -0
  291. package/dist/utils/theme-loader.js.map +1 -0
  292. package/dist/utils/transcriptToMarkdown.d.ts +14 -0
  293. package/dist/utils/transcriptToMarkdown.d.ts.map +1 -0
  294. package/dist/utils/transcriptToMarkdown.js +59 -0
  295. package/dist/utils/transcriptToMarkdown.js.map +1 -0
  296. package/dist/utils/use-google-font.d.ts +18 -0
  297. package/dist/utils/use-google-font.d.ts.map +1 -0
  298. package/dist/utils/use-google-font.js +12 -0
  299. package/dist/utils/use-google-font.js.map +1 -0
  300. package/dist/utils/user-variables.d.ts +20 -0
  301. package/dist/utils/user-variables.d.ts.map +1 -0
  302. package/dist/utils/user-variables.js +37 -0
  303. package/dist/utils/user-variables.js.map +1 -0
  304. package/dist/utils/video.js +6 -21
  305. package/dist/utils/video.js.map +1 -1
  306. package/package.json +105 -42
  307. package/dist/components/audio-level.d.ts.map +0 -1
  308. package/dist/components/audio-level.js +0 -203
  309. package/dist/components/audio-level.js.map +0 -1
  310. package/dist/components/call-controls.d.ts +0 -163
  311. package/dist/components/call-controls.d.ts.map +0 -1
  312. package/dist/components/call-controls.js +0 -606
  313. package/dist/components/call-controls.js.map +0 -1
  314. package/dist/components/call-media.d.ts +0 -114
  315. package/dist/components/call-media.d.ts.map +0 -1
  316. package/dist/components/call-media.js +0 -219
  317. package/dist/components/call-media.js.map +0 -1
  318. package/dist/components/call-status.d.ts +0 -68
  319. package/dist/components/call-status.d.ts.map +0 -1
  320. package/dist/components/call-status.js +0 -254
  321. package/dist/components/call-status.js.map +0 -1
  322. package/dist/components/click-to-call.d.ts +0 -123
  323. package/dist/components/click-to-call.d.ts.map +0 -1
  324. package/dist/components/click-to-call.js +0 -428
  325. package/dist/components/click-to-call.js.map +0 -1
  326. package/dist/components/device-selector.d.ts +0 -224
  327. package/dist/components/device-selector.d.ts.map +0 -1
  328. package/dist/components/device-selector.js +0 -685
  329. package/dist/components/device-selector.js.map +0 -1
  330. package/dist/components/dialpad.d.ts +0 -60
  331. package/dist/components/dialpad.d.ts.map +0 -1
  332. package/dist/components/dialpad.js +0 -372
  333. package/dist/components/dialpad.js.map +0 -1
  334. package/dist/components/directory.d.ts.map +0 -1
  335. package/dist/components/directory.js +0 -503
  336. package/dist/components/directory.js.map +0 -1
  337. package/dist/components/example-button.d.ts +0 -20
  338. package/dist/components/example-button.d.ts.map +0 -1
  339. package/dist/components/example-button.js +0 -74
  340. package/dist/components/example-button.js.map +0 -1
  341. package/dist/components/participant-controls.d.ts +0 -94
  342. package/dist/components/participant-controls.d.ts.map +0 -1
  343. package/dist/components/participant-controls.js +0 -468
  344. package/dist/components/participant-controls.js.map +0 -1
  345. package/dist/components/participants.d.ts +0 -116
  346. package/dist/components/participants.d.ts.map +0 -1
  347. package/dist/components/participants.js +0 -394
  348. package/dist/components/participants.js.map +0 -1
  349. package/dist/components/self-media.d.ts +0 -78
  350. package/dist/components/self-media.d.ts.map +0 -1
  351. package/dist/components/self-media.js +0 -129
  352. package/dist/components/self-media.js.map +0 -1
  353. package/dist/constants.js +0 -5
  354. package/dist/constants.js.map +0 -1
  355. package/dist/context/call-context.d.ts +0 -13
  356. package/dist/context/call-context.d.ts.map +0 -1
  357. package/dist/context/call-context.js +0 -6
  358. package/dist/context/call-context.js.map +0 -1
  359. package/dist/types/index.js +0 -12
  360. package/dist/types/index.js.map +0 -1
  361. package/dist/utils/debounce.js +0 -13
  362. package/dist/utils/debounce.js.map +0 -1
@@ -0,0 +1,41 @@
1
+ import { LitElement } from 'lit';
2
+ import type { Call, DeviceController } from '../types/index.js';
3
+ /**
4
+ * Context provider element that bridges an external `Call` and/or
5
+ * `DeviceController` into Lit context so any descendant web component
6
+ * (sw-call-media, sw-call-controls, sw-participants, etc.) receives live
7
+ * state without manual property wiring.
8
+ *
9
+ * Usage:
10
+ * ```html
11
+ * <sw-call-provider id="provider">
12
+ * <sw-call-media></sw-call-media>
13
+ * <sw-call-controls></sw-call-controls>
14
+ * </sw-call-provider>
15
+ * ```
16
+ * ```js
17
+ * provider.call = activeCall;
18
+ * provider.deviceController = signalWireClient;
19
+ * ```
20
+ *
21
+ * @prop {Call} call - Active call object
22
+ * @prop {DeviceController} deviceController - Device controller for input/output device management
23
+ *
24
+ * @slot - Default slot. Descendants consume the provided contexts.
25
+ */
26
+ export declare class SwCallProvider extends LitElement {
27
+ static styles: import("lit").CSSResult;
28
+ call: Call | undefined;
29
+ deviceController: DeviceController | undefined;
30
+ private _callState;
31
+ private _devices;
32
+ protected updated(changed: Map<string, unknown>): void;
33
+ disconnectedCallback(): void;
34
+ render(): import("lit-html").TemplateResult<1>;
35
+ }
36
+ declare global {
37
+ interface HTMLElementTagNameMap {
38
+ 'sw-call-provider': SwCallProvider;
39
+ }
40
+ }
41
+ //# sourceMappingURL=sw-call-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sw-call-provider.d.ts","sourceRoot":"","sources":["../../src/components/sw-call-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIhE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBACa,cAAe,SAAQ,UAAU;IAC5C,MAAM,CAAC,MAAM,0BAAqC;IAElB,IAAI,EAAE,IAAI,GAAG,SAAS,CAAa;IACnC,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,CAAa;IAE3F,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,QAAQ,CAAsC;IAEtD,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAkBtD,oBAAoB,IAAI,IAAI;IAM5B,MAAM;CAGP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
@@ -0,0 +1,37 @@
1
+ import { LitElement as d, html as p, css as v } from "lit";
2
+ import { property as a, customElement as h } from "lit/decorators.js";
3
+ import { CallStateContextController as C } from "../context/CallStateContextController.js";
4
+ import { DevicesContextController as _ } from "../context/DevicesContextController.js";
5
+ var f = Object.defineProperty, m = Object.getOwnPropertyDescriptor, n = (t, s, r, o) => {
6
+ for (var e = o > 1 ? void 0 : o ? m(s, r) : s, i = t.length - 1, c; i >= 0; i--)
7
+ (c = t[i]) && (e = (o ? c(s, r, e) : c(e)) || e);
8
+ return o && e && f(s, r, e), e;
9
+ };
10
+ let l = class extends d {
11
+ constructor() {
12
+ super(...arguments), this.call = void 0, this.deviceController = void 0, this._callState = new C(this), this._devices = new _(this);
13
+ }
14
+ updated(t) {
15
+ super.updated(t), t.has("call") && (this.call ? (this._callState.connect(this.call), this._devices.connectCall(this.call)) : (this._callState.disconnect(), this._devices.disconnectCall())), t.has("deviceController") && this.deviceController && this._devices.connectDevices(this.deviceController);
16
+ }
17
+ disconnectedCallback() {
18
+ super.disconnectedCallback(), this._callState.disconnect(), this._devices.disconnect();
19
+ }
20
+ render() {
21
+ return p`<slot></slot>`;
22
+ }
23
+ };
24
+ l.styles = v`:host { display: contents; }`;
25
+ n([
26
+ a({ attribute: !1 })
27
+ ], l.prototype, "call", 2);
28
+ n([
29
+ a({ attribute: !1 })
30
+ ], l.prototype, "deviceController", 2);
31
+ l = n([
32
+ h("sw-call-provider")
33
+ ], l);
34
+ export {
35
+ l as SwCallProvider
36
+ };
37
+ //# sourceMappingURL=sw-call-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sw-call-provider.js","sources":["../../src/components/sw-call-provider.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport type { Call, DeviceController } from '../types/index.js';\nimport { CallStateContextController } from '../context/CallStateContextController.js';\nimport { DevicesContextController } from '../context/DevicesContextController.js';\n\n/**\n * Context provider element that bridges an external `Call` and/or\n * `DeviceController` into Lit context so any descendant web component\n * (sw-call-media, sw-call-controls, sw-participants, etc.) receives live\n * state without manual property wiring.\n *\n * Usage:\n * ```html\n * <sw-call-provider id=\"provider\">\n * <sw-call-media></sw-call-media>\n * <sw-call-controls></sw-call-controls>\n * </sw-call-provider>\n * ```\n * ```js\n * provider.call = activeCall;\n * provider.deviceController = signalWireClient;\n * ```\n *\n * @prop {Call} call - Active call object\n * @prop {DeviceController} deviceController - Device controller for input/output device management\n *\n * @slot - Default slot. Descendants consume the provided contexts.\n */\n@customElement('sw-call-provider')\nexport class SwCallProvider extends LitElement {\n static styles = css`:host { display: contents; }`;\n\n @property({ attribute: false }) call: Call | undefined = undefined;\n @property({ attribute: false }) deviceController: DeviceController | undefined = undefined;\n\n private _callState = new CallStateContextController(this);\n private _devices = new DevicesContextController(this);\n\n protected updated(changed: Map<string, unknown>): void {\n super.updated(changed);\n\n if (changed.has('call')) {\n if (this.call) {\n this._callState.connect(this.call);\n this._devices.connectCall(this.call);\n } else {\n this._callState.disconnect();\n this._devices.disconnectCall();\n }\n }\n\n if (changed.has('deviceController') && this.deviceController) {\n this._devices.connectDevices(this.deviceController);\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this._callState.disconnect();\n this._devices.disconnect();\n }\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sw-call-provider': SwCallProvider;\n }\n}\n"],"names":["SwCallProvider","LitElement","CallStateContextController","DevicesContextController","changed","html","css","__decorateClass","property","customElement"],"mappings":";;;;;;;;;AA8BO,IAAMA,IAAN,cAA6BC,EAAW;AAAA,EAAxC,cAAA;AAAA,UAAA,GAAA,SAAA,GAG2B,KAAA,OAAyB,QACzB,KAAA,mBAAiD,QAEjF,KAAQ,aAAa,IAAIC,EAA2B,IAAI,GACxD,KAAQ,WAAW,IAAIC,EAAyB,IAAI;AAAA,EAAA;AAAA,EAE1C,QAAQC,GAAqC;AACrD,UAAM,QAAQA,CAAO,GAEjBA,EAAQ,IAAI,MAAM,MAChB,KAAK,QACP,KAAK,WAAW,QAAQ,KAAK,IAAI,GACjC,KAAK,SAAS,YAAY,KAAK,IAAI,MAEnC,KAAK,WAAW,WAAA,GAChB,KAAK,SAAS,eAAA,KAIdA,EAAQ,IAAI,kBAAkB,KAAK,KAAK,oBAC1C,KAAK,SAAS,eAAe,KAAK,gBAAgB;AAAA,EAEtD;AAAA,EAEA,uBAA6B;AAC3B,UAAM,qBAAA,GACN,KAAK,WAAW,WAAA,GAChB,KAAK,SAAS,WAAA;AAAA,EAChB;AAAA,EAEA,SAAS;AACP,WAAOC;AAAA,EACT;AACF;AApCaL,EACJ,SAASM;AAEgBC,EAAA;AAAA,EAA/BC,EAAS,EAAE,WAAW,GAAA,CAAO;AAAA,GAHnBR,EAGqB,WAAA,QAAA,CAAA;AACAO,EAAA;AAAA,EAA/BC,EAAS,EAAE,WAAW,GAAA,CAAO;AAAA,GAJnBR,EAIqB,WAAA,oBAAA,CAAA;AAJrBA,IAANO,EAAA;AAAA,EADNE,EAAc,kBAAkB;AAAA,GACpBT,CAAA;"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Call Status Component
3
+ *
4
+ * Displays current call state with status text and duration timer.
5
+ *
6
+ * Input precedence (most specific wins): `.call` > context.
7
+ *
8
+ * @example
9
+ * ```html
10
+ * <!-- Inside a context provider: -->
11
+ * <sw-call-status></sw-call-status>
12
+ *
13
+ * <!-- Standalone with an explicit Call: -->
14
+ * <sw-call-status .call=${call}></sw-call-status>
15
+ * ```
16
+ *
17
+ * @csspart container - Outer status container.
18
+ * @csspart status-text - Text label of the current status.
19
+ * @csspart duration - Elapsed-time label (only rendered when connected).
20
+ */
21
+ import { LitElement } from 'lit';
22
+ import type { Call } from '../types/index.js';
23
+ export declare class SwCallStatus extends LitElement {
24
+ static styles: import("lit").CSSResult[];
25
+ /** Explicit Call — when set, subscribes directly to its observables and bypasses context. */
26
+ call?: Call;
27
+ private _callState?;
28
+ /** Status from a directly-subscribed `.call` — `null` when context is the source. */
29
+ private _directStatus;
30
+ private _callStartTime;
31
+ private _duration;
32
+ private _durationInterval;
33
+ private _prevStatus;
34
+ private _directSubscriptions;
35
+ private get _effectiveStatus();
36
+ protected updated(changed: Map<string, unknown>): void;
37
+ disconnectedCallback(): void;
38
+ private _setupDirect;
39
+ private _teardownDirect;
40
+ private _startDurationTimer;
41
+ private _stopDurationTimer;
42
+ private getStatusText;
43
+ render(): import("lit-html").TemplateResult<1>;
44
+ }
45
+ declare global {
46
+ interface HTMLElementTagNameMap {
47
+ 'sw-call-status': SwCallStatus;
48
+ }
49
+ }
50
+ //# sourceMappingURL=sw-call-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sw-call-status.d.ts","sourceRoot":"","sources":["../../src/components/sw-call-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAK5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAI9C,qBACa,YAAa,SAAQ,UAAU;IAC1C,MAAM,CAAC,MAAM,4BA4FR;IAEL,6FAA6F;IACjE,IAAI,CAAC,EAAE,IAAI,CAAC;IAIxC,OAAO,CAAC,UAAU,CAAC,CAAY;IAE/B,qFAAqF;IAC5E,OAAO,CAAC,aAAa,CAA2B;IAEhD,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,SAAS,CAAU;IAEpC,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,oBAAoB,CAAsB;IAElD,OAAO,KAAK,gBAAgB,GAE3B;IAED,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAqBtD,oBAAoB;IAMpB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,aAAa;IA8BrB,MAAM;CAgBP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,YAAY,CAAC;KAChC;CACF"}
@@ -0,0 +1,204 @@
1
+ import { LitElement as d, html as l, css as p } from "lit";
2
+ import { property as h, state as c, customElement as v } from "lit/decorators.js";
3
+ import { consume as _ } from "@lit/context";
4
+ import { callStateContext as f } from "../context/call-state-context.js";
5
+ import { hostReset as g } from "./UI/host-reset.js";
6
+ var m = Object.defineProperty, S = Object.getOwnPropertyDescriptor, n = (t, e, r, i) => {
7
+ for (var a = i > 1 ? void 0 : i ? S(e, r) : e, o = t.length - 1, u; o >= 0; o--)
8
+ (u = t[o]) && (a = (i ? u(e, r, a) : u(a)) || a);
9
+ return i && a && m(e, r, a), a;
10
+ };
11
+ let s = class extends d {
12
+ constructor() {
13
+ super(...arguments), this._directStatus = null, this._callStartTime = null, this._duration = "0:00", this._durationInterval = null, this._prevStatus = "new", this._directSubscriptions = [];
14
+ }
15
+ get _effectiveStatus() {
16
+ var t;
17
+ return this.call ? this._directStatus ?? "new" : ((t = this._callState) == null ? void 0 : t.status) ?? "new";
18
+ }
19
+ updated(t) {
20
+ if (super.updated(t), t.has("call") && (this._teardownDirect(), this.call && this._setupDirect(this.call)), t.has("call") || t.has("_callState") || t.has("_directStatus")) {
21
+ const e = this._effectiveStatus;
22
+ e !== this._prevStatus && (e === "connected" && this._prevStatus !== "connected" ? this._startDurationTimer() : e !== "connected" && this._stopDurationTimer(), this._prevStatus = e);
23
+ }
24
+ }
25
+ disconnectedCallback() {
26
+ super.disconnectedCallback(), this._stopDurationTimer(), this._teardownDirect();
27
+ }
28
+ _setupDirect(t) {
29
+ this._directSubscriptions.push(
30
+ t.status$.subscribe((e) => {
31
+ this._directStatus = e;
32
+ })
33
+ );
34
+ }
35
+ _teardownDirect() {
36
+ this._directSubscriptions.forEach((t) => t.unsubscribe()), this._directSubscriptions = [], this._directStatus = null;
37
+ }
38
+ _startDurationTimer() {
39
+ this._callStartTime = Date.now(), this._duration = "0:00", this._durationInterval = window.setInterval(() => {
40
+ if (this._callStartTime) {
41
+ const t = Math.floor((Date.now() - this._callStartTime) / 1e3), e = Math.floor(t / 3600), r = Math.floor(t % 3600 / 60), i = t % 60;
42
+ this._duration = e > 0 ? `${e}:${r.toString().padStart(2, "0")}:${i.toString().padStart(2, "0")}` : `${r}:${i.toString().padStart(2, "0")}`;
43
+ }
44
+ }, 1e3);
45
+ }
46
+ _stopDurationTimer() {
47
+ this._durationInterval && (clearInterval(this._durationInterval), this._durationInterval = null), this._callStartTime = null, this._duration = "0:00";
48
+ }
49
+ getStatusText() {
50
+ const t = this._effectiveStatus;
51
+ switch (t) {
52
+ case "new":
53
+ return "Ready";
54
+ case "trying":
55
+ return "Trying...";
56
+ case "connecting":
57
+ return "Connecting...";
58
+ case "ringing":
59
+ return "Ringing...";
60
+ case "connected":
61
+ return "Connected";
62
+ case "recovering":
63
+ return "Reconnecting...";
64
+ case "disconnecting":
65
+ return "Disconnecting...";
66
+ case "disconnected":
67
+ return "Disconnected";
68
+ case "failed":
69
+ return "Failed";
70
+ case "destroyed":
71
+ return "Ended";
72
+ default:
73
+ return String(t);
74
+ }
75
+ }
76
+ render() {
77
+ const t = this._effectiveStatus, e = this.getStatusText();
78
+ return l`
79
+ <div class="container" part="container">
80
+ <span class="status-indicator ${t}" aria-hidden="true"></span>
81
+ <span class="status-text ${t}" part="status-text" role="status" aria-live="polite">
82
+ ${e}
83
+ </span>
84
+ ${t === "connected" ? l`<span class="duration" part="duration">${this._duration}</span>` : null}
85
+ </div>
86
+ `;
87
+ }
88
+ };
89
+ s.styles = [g, p`
90
+ :host {
91
+ display: inline-flex;
92
+ align-items: center;
93
+ gap: 8px;
94
+ font-family: var(--type-family-body);
95
+ font-size: var(--type-size-small);
96
+ }
97
+
98
+ .container {
99
+ display: inline-flex;
100
+ align-items: center;
101
+ gap: 8px;
102
+ padding: 8px 12px;
103
+ border-radius: var(--radius-md);
104
+ color: var(--fg-default);
105
+ }
106
+
107
+ .status-indicator {
108
+ width: 10px;
109
+ height: 10px;
110
+ border-radius: 50%;
111
+ flex-shrink: 0;
112
+ }
113
+
114
+ .status-indicator.new {
115
+ background-color: var(--bg-surface-raised);
116
+ }
117
+ .status-indicator.connecting,
118
+ .status-indicator.ringing,
119
+ .status-indicator.trying,
120
+ .status-indicator.recovering {
121
+ background-color: var(--interactive-status-warning);
122
+ animation: pulse 1.5s ease-in-out infinite;
123
+ }
124
+ .status-indicator.connected {
125
+ background-color: var(--interactive-status-success);
126
+ }
127
+ .status-indicator.disconnecting {
128
+ background-color: var(--interactive-button-destructive-bg);
129
+ animation: pulse 1s ease-in-out infinite;
130
+ }
131
+ .status-indicator.disconnected,
132
+ .status-indicator.failed {
133
+ background-color: var(--interactive-button-destructive-bg);
134
+ }
135
+ .status-indicator.destroyed {
136
+ background-color: var(--bg-surface-raised);
137
+ }
138
+
139
+ @keyframes pulse {
140
+ 0%,
141
+ 100% {
142
+ opacity: 1;
143
+ transform: scale(1);
144
+ }
145
+ 50% {
146
+ opacity: 0.5;
147
+ transform: scale(1.1);
148
+ }
149
+ }
150
+
151
+ .status-text {
152
+ font-weight: 500;
153
+ white-space: nowrap;
154
+ }
155
+ .status-text.trying,
156
+ .status-text.connecting,
157
+ .status-text.ringing,
158
+ .status-text.recovering {
159
+ color: var(--interactive-status-warning);
160
+ }
161
+ .status-text.disconnecting {
162
+ color: var(--interactive-button-destructive-bg);
163
+ }
164
+ .status-text.connected {
165
+ color: var(--interactive-status-success);
166
+ }
167
+ .status-text.disconnected,
168
+ .status-text.failed {
169
+ color: var(--interactive-button-destructive-bg);
170
+ }
171
+ .status-text.new,
172
+ .status-text.destroyed {
173
+ color: var(--bg-surface-raised);
174
+ }
175
+
176
+ .duration {
177
+ font-variant-numeric: tabular-nums;
178
+ opacity: 0.6;
179
+ font-size: 0.85em;
180
+ }
181
+ `];
182
+ n([
183
+ h({ type: Object })
184
+ ], s.prototype, "call", 2);
185
+ n([
186
+ _({ context: f, subscribe: !0 }),
187
+ c()
188
+ ], s.prototype, "_callState", 2);
189
+ n([
190
+ c()
191
+ ], s.prototype, "_directStatus", 2);
192
+ n([
193
+ c()
194
+ ], s.prototype, "_callStartTime", 2);
195
+ n([
196
+ c()
197
+ ], s.prototype, "_duration", 2);
198
+ s = n([
199
+ v("sw-call-status")
200
+ ], s);
201
+ export {
202
+ s as SwCallStatus
203
+ };
204
+ //# sourceMappingURL=sw-call-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sw-call-status.js","sources":["../../src/components/sw-call-status.ts"],"sourcesContent":["/**\n * Call Status Component\n *\n * Displays current call state with status text and duration timer.\n *\n * Input precedence (most specific wins): `.call` > context.\n *\n * @example\n * ```html\n * <!-- Inside a context provider: -->\n * <sw-call-status></sw-call-status>\n *\n * <!-- Standalone with an explicit Call: -->\n * <sw-call-status .call=${call}></sw-call-status>\n * ```\n *\n * @csspart container - Outer status container.\n * @csspart status-text - Text label of the current status.\n * @csspart duration - Elapsed-time label (only rendered when connected).\n */\n\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { consume } from '@lit/context';\nimport { Subscription } from 'rxjs';\nimport type { CallStatus } from '@signalwire/js';\nimport type { Call } from '../types/index.js';\nimport { callStateContext, type CallState } from '../context/call-state-context.js';\nimport { hostReset } from './UI/host-reset.js';\n\n@customElement('sw-call-status')\nexport class SwCallStatus extends LitElement {\n static styles = [hostReset, css`\n :host {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n font-family: var(--type-family-body);\n font-size: var(--type-size-small);\n }\n\n .container {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: var(--radius-md);\n color: var(--fg-default);\n }\n\n .status-indicator {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n }\n\n .status-indicator.new {\n background-color: var(--bg-surface-raised);\n }\n .status-indicator.connecting,\n .status-indicator.ringing,\n .status-indicator.trying,\n .status-indicator.recovering {\n background-color: var(--interactive-status-warning);\n animation: pulse 1.5s ease-in-out infinite;\n }\n .status-indicator.connected {\n background-color: var(--interactive-status-success);\n }\n .status-indicator.disconnecting {\n background-color: var(--interactive-button-destructive-bg);\n animation: pulse 1s ease-in-out infinite;\n }\n .status-indicator.disconnected,\n .status-indicator.failed {\n background-color: var(--interactive-button-destructive-bg);\n }\n .status-indicator.destroyed {\n background-color: var(--bg-surface-raised);\n }\n\n @keyframes pulse {\n 0%,\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0.5;\n transform: scale(1.1);\n }\n }\n\n .status-text {\n font-weight: 500;\n white-space: nowrap;\n }\n .status-text.trying,\n .status-text.connecting,\n .status-text.ringing,\n .status-text.recovering {\n color: var(--interactive-status-warning);\n }\n .status-text.disconnecting {\n color: var(--interactive-button-destructive-bg);\n }\n .status-text.connected {\n color: var(--interactive-status-success);\n }\n .status-text.disconnected,\n .status-text.failed {\n color: var(--interactive-button-destructive-bg);\n }\n .status-text.new,\n .status-text.destroyed {\n color: var(--bg-surface-raised);\n }\n\n .duration {\n font-variant-numeric: tabular-nums;\n opacity: 0.6;\n font-size: 0.85em;\n }\n `];\n\n /** Explicit Call — when set, subscribes directly to its observables and bypasses context. */\n @property({ type: Object }) call?: Call;\n\n @consume({ context: callStateContext, subscribe: true })\n @state()\n private _callState?: CallState;\n\n /** Status from a directly-subscribed `.call` — `null` when context is the source. */\n @state() private _directStatus: CallStatus | null = null;\n\n @state() private _callStartTime: number | null = null;\n @state() private _duration = '0:00';\n\n private _durationInterval: number | null = null;\n private _prevStatus: CallStatus = 'new';\n private _directSubscriptions: Subscription[] = [];\n\n private get _effectiveStatus(): CallStatus {\n return this.call ? this._directStatus ?? 'new' : this._callState?.status ?? 'new';\n }\n\n protected updated(changed: Map<string, unknown>): void {\n super.updated(changed);\n\n if (changed.has('call')) {\n this._teardownDirect();\n if (this.call) this._setupDirect(this.call);\n }\n\n if (changed.has('call') || changed.has('_callState') || changed.has('_directStatus')) {\n const status = this._effectiveStatus;\n if (status !== this._prevStatus) {\n if (status === 'connected' && this._prevStatus !== 'connected') {\n this._startDurationTimer();\n } else if (status !== 'connected') {\n this._stopDurationTimer();\n }\n this._prevStatus = status;\n }\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._stopDurationTimer();\n this._teardownDirect();\n }\n\n private _setupDirect(call: Call): void {\n this._directSubscriptions.push(\n call.status$.subscribe((s) => {\n this._directStatus = s;\n })\n );\n }\n\n private _teardownDirect(): void {\n this._directSubscriptions.forEach((s) => s.unsubscribe());\n this._directSubscriptions = [];\n this._directStatus = null;\n }\n\n private _startDurationTimer(): void {\n this._callStartTime = Date.now();\n this._duration = '0:00';\n this._durationInterval = window.setInterval(() => {\n if (this._callStartTime) {\n const elapsed = Math.floor((Date.now() - this._callStartTime) / 1000);\n const hours = Math.floor(elapsed / 3600);\n const minutes = Math.floor((elapsed % 3600) / 60);\n const secs = elapsed % 60;\n this._duration =\n hours > 0\n ? `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`\n : `${minutes}:${secs.toString().padStart(2, '0')}`;\n }\n }, 1000);\n }\n\n private _stopDurationTimer(): void {\n if (this._durationInterval) {\n clearInterval(this._durationInterval);\n this._durationInterval = null;\n }\n this._callStartTime = null;\n this._duration = '0:00';\n }\n\n private getStatusText(): string {\n const status = this._effectiveStatus;\n switch (status) {\n case 'new':\n return 'Ready';\n case 'trying':\n return 'Trying...';\n case 'connecting':\n return 'Connecting...';\n case 'ringing':\n return 'Ringing...';\n case 'connected':\n return 'Connected';\n case 'recovering':\n return 'Reconnecting...';\n case 'disconnecting':\n return 'Disconnecting...';\n case 'disconnected':\n return 'Disconnected';\n case 'failed':\n return 'Failed';\n case 'destroyed':\n return 'Ended';\n default: {\n const _exhaustive: never = status;\n return String(_exhaustive);\n }\n }\n }\n\n render() {\n const status = this._effectiveStatus;\n const statusText = this.getStatusText();\n\n return html`\n <div class=\"container\" part=\"container\">\n <span class=\"status-indicator ${status}\" aria-hidden=\"true\"></span>\n <span class=\"status-text ${status}\" part=\"status-text\" role=\"status\" aria-live=\"polite\">\n ${statusText}\n </span>\n ${status === 'connected'\n ? html`<span class=\"duration\" part=\"duration\">${this._duration}</span>`\n : null}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sw-call-status': SwCallStatus;\n }\n}\n"],"names":["SwCallStatus","LitElement","_a","changed","status","call","s","elapsed","hours","minutes","secs","statusText","html","hostReset","css","__decorateClass","property","consume","callStateContext","state","customElement"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { StaticCredentialProvider, EmbedTokenCredentialProvider } from '@signalwire/js';
2
+ export declare const DEFAULT_EMBED_HOST = "embeds.signalwire.com";
3
+ export declare function normalizeHost(h: string): string;
4
+ export declare function isEmbedToken(t: string): boolean;
5
+ export declare function buildCredentialProvider(token: string, host: string): EmbedTokenCredentialProvider | StaticCredentialProvider;
6
+ //# sourceMappingURL=client-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-factory.d.ts","sourceRoot":"","sources":["../../../src/components/sw-call-widget/client-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC7B,MAAM,gBAAgB,CAAC;AAGxB,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAE1D,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,2DAQlE"}
@@ -0,0 +1,25 @@
1
+ import { EmbedTokenCredentialProvider as t, StaticCredentialProvider as n } from "@signalwire/js";
2
+ const i = ["c2c_", "c2t_"], o = "embeds.signalwire.com";
3
+ function c(r) {
4
+ try {
5
+ return new URL(r.includes("://") ? r : `https://${r}`).hostname;
6
+ } catch {
7
+ return r;
8
+ }
9
+ }
10
+ function s(r) {
11
+ return i.some((e) => r.startsWith(e));
12
+ }
13
+ function d(r, e) {
14
+ return s(r) ? new t(
15
+ c(e || o),
16
+ r
17
+ ) : new n({ token: r });
18
+ }
19
+ export {
20
+ o as DEFAULT_EMBED_HOST,
21
+ d as buildCredentialProvider,
22
+ s as isEmbedToken,
23
+ c as normalizeHost
24
+ };
25
+ //# sourceMappingURL=client-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-factory.js","sources":["../../../src/components/sw-call-widget/client-factory.ts"],"sourcesContent":["import {\n StaticCredentialProvider,\n EmbedTokenCredentialProvider,\n} from '@signalwire/js';\n\nconst EMBED_TOKEN_PREFIXES = ['c2c_', 'c2t_'] as const;\nexport const DEFAULT_EMBED_HOST = 'embeds.signalwire.com';\n\nexport function normalizeHost(h: string): string {\n try {\n const url = new URL(h.includes('://') ? h : `https://${h}`);\n return url.hostname;\n } catch {\n return h;\n }\n}\n\nexport function isEmbedToken(t: string): boolean {\n return EMBED_TOKEN_PREFIXES.some((p) => t.startsWith(p));\n}\n\nexport function buildCredentialProvider(token: string, host: string) {\n if (isEmbedToken(token)) {\n return new EmbedTokenCredentialProvider(\n normalizeHost(host || DEFAULT_EMBED_HOST),\n token,\n );\n }\n return new StaticCredentialProvider({ token });\n}\n"],"names":["EMBED_TOKEN_PREFIXES","DEFAULT_EMBED_HOST","normalizeHost","h","isEmbedToken","t","p","buildCredentialProvider","token","host","EmbedTokenCredentialProvider","StaticCredentialProvider"],"mappings":";AAKA,MAAMA,IAAuB,CAAC,QAAQ,MAAM,GAC/BC,IAAqB;AAE3B,SAASC,EAAcC,GAAmB;AAC/C,MAAI;AAEF,WADY,IAAI,IAAIA,EAAE,SAAS,KAAK,IAAIA,IAAI,WAAWA,CAAC,EAAE,EAC/C;AAAA,EACb,QAAQ;AACN,WAAOA;AAAA,EACT;AACF;AAEO,SAASC,EAAaC,GAAoB;AAC/C,SAAOL,EAAqB,KAAK,CAACM,MAAMD,EAAE,WAAWC,CAAC,CAAC;AACzD;AAEO,SAASC,EAAwBC,GAAeC,GAAc;AACnE,SAAIL,EAAaI,CAAK,IACb,IAAIE;AAAA,IACTR,EAAcO,KAAQR,CAAkB;AAAA,IACxCO;AAAA,EAAA,IAGG,IAAIG,EAAyB,EAAE,OAAAH,GAAO;AAC/C;"}
@@ -0,0 +1,110 @@
1
+ import { LitElement } from 'lit';
2
+ import '../sw-call-media.js';
3
+ import '../sw-local-camera.js';
4
+ import '../sw-call-controls.js';
5
+ import '../UI/layout/sw-ui-call-layout.js';
6
+ import '../UI/layout/sw-ui-responsive-container.js';
7
+ import '../UI/layout/sw-ui-modal.js';
8
+ import '../UI/layout/sw-ui-background.js';
9
+ import '../UI/layout/sw-ui-content-drawer.js';
10
+ import '../UI/sw-ui-transcript-view.js';
11
+ /**
12
+ * All-in-one call widget. Handles client initialisation, dialling, media,
13
+ * controls and optional AI transcript — in either inline or modal modes.
14
+ *
15
+ * Composes `sw-ui-call-layout`, `sw-call-media`, `sw-local-camera`,
16
+ * `sw-call-controls`, and `sw-ui-transcript-view` under the hood.
17
+ * All child components are wired via Lit context — no manual plumbing needed.
18
+ *
19
+ * @prop {string} token - SignalWire SAT or embed token
20
+ * @prop {string} host - Optional server host
21
+ * @prop {string} destination - Call destination (address or resource)
22
+ * @prop {boolean} modal - Render in a `<sw-ui-modal>` overlay
23
+ * @prop {boolean} transcription - Show AI transcript panel
24
+ *
25
+ * @slot background - Background element (e.g. `<sw-ui-background default>`)
26
+ * @slot (default) - Trigger element (click to dial, shown when idle)
27
+ *
28
+ * @fires sw-dial - When `dial()` is invoked. Detail: `{ destination }`.
29
+ * @fires sw-call-ended - When the call reaches a terminal state (user hangup, remote disconnect, or failure). Detail: `{ status }`.
30
+ * @fires sw-display-content - From `display_content` user event. Detail: `DisplayContentPayload`.
31
+ * @fires signalwire-address:event - Forwarded SignalWire custom user events.
32
+ *
33
+ * All inner events bubble.
34
+ *
35
+ * @method dial() - Initiate call
36
+ * @method hangup() - End active call
37
+ */
38
+ export declare class SwCallWidget extends LitElement {
39
+ static styles: import("lit").CSSResult[];
40
+ token: string;
41
+ host: string;
42
+ destination: string;
43
+ modal: boolean;
44
+ transcription: boolean;
45
+ allowIncomingCalls: boolean;
46
+ audioOnly: boolean;
47
+ /**
48
+ * Custom variables sent with the Verto invite as a JSON object.
49
+ *
50
+ * The widget always advertises `capabilities.display_content` and
51
+ * `metadata.widget.opened_at` so the agent can detect that the caller
52
+ * supports the content drawer; user-supplied keys are merged in and win
53
+ * on shallow conflict.
54
+ *
55
+ * Invalid JSON is logged and ignored — the call still dials.
56
+ *
57
+ * @example
58
+ * <sw-call-widget user-variables='{"customer_id": "abc-123"}'></sw-call-widget>
59
+ */
60
+ userVariables: string;
61
+ /**
62
+ * Skip auto-injecting the SignalWire `theme.css` design-token stylesheet.
63
+ * Set this when the host page already loads `@signalwire/web-components/theme.css`
64
+ * or a custom theme written against the same DTCG token names.
65
+ */
66
+ disableAutoTheme: boolean;
67
+ /**
68
+ * Skip auto-loading the SignalWire brand fonts (Lexend, Instrument Sans,
69
+ * JetBrains Mono) from Google Fonts. Set this when fonts are self-hosted
70
+ * or loaded elsewhere.
71
+ */
72
+ disableAutoFonts: boolean;
73
+ private _call;
74
+ private _connecting;
75
+ private _hasLayoutLayers;
76
+ private _drawer;
77
+ private _callState;
78
+ private _devices;
79
+ private _transcript;
80
+ private _userEventCtrl;
81
+ private _incomingCalls;
82
+ private _client;
83
+ private _subs;
84
+ private _pendingIncoming;
85
+ connectedCallback(): void;
86
+ protected updated(changed: Map<string, unknown>): void;
87
+ disconnectedCallback(): void;
88
+ private _destroyClient;
89
+ private _refreshClient;
90
+ dial(): Promise<void>;
91
+ hangup(): Promise<void>;
92
+ private _connectIncomingCalls;
93
+ private _handleIncomingCall;
94
+ private _wireCall;
95
+ private _onDisplayContent;
96
+ private _onDrawerClose;
97
+ private _unwireCall;
98
+ private _onSlotChange;
99
+ private _onHangUp;
100
+ private _onModalClose;
101
+ private _onFullscreenToggle;
102
+ private _onTranscriptToggle;
103
+ render(): import("lit-html").TemplateResult;
104
+ }
105
+ declare global {
106
+ interface HTMLElementTagNameMap {
107
+ 'sw-call-widget': SwCallWidget;
108
+ }
109
+ }
110
+ //# sourceMappingURL=sw-call-widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sw-call-widget.d.ts","sourceRoot":"","sources":["../../../src/components/sw-call-widget/sw-call-widget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AAchD,OAAO,qBAAqB,CAAC;AAC7B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,wBAAwB,CAAC;AAChC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,4CAA4C,CAAC;AACpD,OAAO,6BAA6B,CAAC;AACrC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,gCAAgC,CAAC;AAkBxC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBACa,YAAa,SAAQ,UAAU;IAC1C,MAAM,CAAC,MAAM,4BAA6B;IAId,KAAK,SAAM;IACX,IAAI,SAAM;IACV,WAAW,SAAM;IACD,KAAK,UAAS;IACd,aAAa,UAAS;IACa,kBAAkB,UAAS;IACrC,SAAS,UAAS;IAEvF;;;;;;;;;;;;OAYG;IACsD,aAAa,SAAM;IAE5E;;;;OAIG;IAC0E,gBAAgB,UAAS;IAEtG;;;;OAIG;IAC0E,gBAAgB,UAAS;IAI7F,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,OAAO,CAAsC;IAI9D,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,WAAW,CAAwD;IAC3E,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,cAAc,CAAoC;IAI1D,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,gBAAgB,CAAS;IAIjC,iBAAiB,IAAI,IAAI;IAMzB,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAsBtD,oBAAoB,IAAI,IAAI;IAO5B,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,cAAc;IAoBhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoDrB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7B,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,mBAAmB,CAyBzB;IAIF,OAAO,CAAC,SAAS;IAoCjB,OAAO,CAAC,iBAAiB,CASvB;IAEF,OAAO,CAAC,cAAc,CAEpB;IAEF,OAAO,CAAC,WAAW;IA6BnB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa,CAYnB;IAEF,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,mBAAmB;IAM3B,MAAM;CAgCP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,YAAY,CAAC;KAChC;CACF"}